diff --git a/.gitignore b/.gitignore index db8e29d903a..4f9ec0649b3 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,8 @@ tests/cases/perf/* !tests/cases/webharness/compilerToString.js test-args.txt ~*.docx +\#*\# +.\#* tests/baselines/local/* tests/services/baselines/local/* tests/baselines/prototyping/local/* @@ -26,6 +28,8 @@ rwc-report.html *.swp build.json *.actual +tests/webTestServer.js +tests/webTestServer.js.map tests/webhost/*.d.ts tests/webhost/webtsc.js tests/cases/**/*.js @@ -42,5 +46,6 @@ coverage/ internal/ **/.DS_Store .settings -.vscode/* -!.vscode/tasks.json +**/.vs +**/.vscode +!**/.vscode/tasks.json diff --git a/Jakefile.js b/Jakefile.js index 84248ca34d1..3e0512de452 100644 --- a/Jakefile.js +++ b/Jakefile.js @@ -150,7 +150,10 @@ var harnessSources = harnessCoreSources.concat([ "reuseProgramStructure.ts", "cachingInServerLSHost.ts", "moduleResolution.ts", - "tsconfigParsing.ts" + "tsconfigParsing.ts", + "commandLineParsing.ts", + "convertCompilerOptionsFromJson.ts", + "convertTypingOptionsFromJson.ts" ].map(function (f) { return path.join(unittestsDirectory, f); })).concat([ @@ -162,18 +165,47 @@ var harnessSources = harnessCoreSources.concat([ return path.join(serverDirectory, f); })); -var librarySourceMap = [ - { target: "lib.core.d.ts", sources: ["header.d.ts", "core.d.ts"] }, - { target: "lib.dom.d.ts", sources: ["importcore.d.ts", "intl.d.ts", "dom.generated.d.ts"], }, - { target: "lib.webworker.d.ts", sources: ["importcore.d.ts", "intl.d.ts", "webworker.generated.d.ts"], }, - { target: "lib.scriptHost.d.ts", sources: ["importcore.d.ts", "scriptHost.d.ts"], }, - { target: "lib.d.ts", sources: ["header.d.ts", "core.d.ts", "intl.d.ts", "dom.generated.d.ts", "webworker.importscripts.d.ts", "scriptHost.d.ts"], }, - { target: "lib.core.es6.d.ts", sources: ["header.d.ts", "core.d.ts", "es6.d.ts"]}, - { target: "lib.es6.d.ts", sources: ["header.d.ts", "es6.d.ts", "core.d.ts", "intl.d.ts", "dom.generated.d.ts", "dom.es6.d.ts", "webworker.importscripts.d.ts", "scriptHost.d.ts"] }, - { target: "lib.core.es7.d.ts", sources: ["header.d.ts", "core.d.ts", "es6.d.ts", "es7.d.ts"]}, - { target: "lib.es7.d.ts", sources: ["header.d.ts", "es6.d.ts", "es7.d.ts", "core.d.ts", "intl.d.ts", "dom.generated.d.ts", "dom.es6.d.ts", "webworker.importscripts.d.ts", "scriptHost.d.ts"] } +var es2015LibrarySources = [ + "es2015.core.d.ts", + "es2015.collection.d.ts", + "es2015.generator.d.ts", + "es2015.iterable.d.ts", + "es2015.promise.d.ts", + "es2015.proxy.d.ts", + "es2015.reflect.d.ts", + "es2015.symbol.d.ts", + "es2015.symbol.wellknown.d.ts", ]; +var es2015LibrarySourceMap = es2015LibrarySources.map(function(source) { + return { target: "lib." + source, sources: ["header.d.ts", source] }; +}); + +var es2016LibrarySource = [ "es2016.array.include.d.ts" ]; + +var es2016LibrarySourceMap = es2016LibrarySource.map(function(source) { + return { target: "lib." + source, sources: ["header.d.ts", source] }; +}) + +var hostsLibrarySources = ["dom.generated.d.ts", "webworker.importscripts.d.ts", "scripthost.d.ts"] + +var librarySourceMap = [ + // Host library + { target: "lib.dom.d.ts", sources: ["header.d.ts", "dom.generated.d.ts"], }, + { target: "lib.dom.iterable.d.ts", sources: ["header.d.ts", "dom.iterable.d.ts"], }, + { target: "lib.webworker.d.ts", sources: ["header.d.ts", "webworker.generated.d.ts"], }, + { target: "lib.scripthost.d.ts", sources: ["header.d.ts", "scripthost.d.ts"], }, + + // JavaScript library + { target: "lib.es5.d.ts", sources: ["header.d.ts", "es5.d.ts"] }, + { target: "lib.es2015.d.ts", sources: ["header.d.ts", "es2015.d.ts"] }, + { target: "lib.es2016.d.ts", sources: ["header.d.ts", "es2016.d.ts"] }, + + // JavaScript + all host library + { target: "lib.d.ts", sources: ["header.d.ts", "es5.d.ts"].concat(hostsLibrarySources), }, + { target: "lib.es6.d.ts", sources: ["header.d.ts", "es5.d.ts"].concat(es2015LibrarySources, hostsLibrarySources, "dom.iterable.d.ts"), }, +].concat(es2015LibrarySourceMap, es2016LibrarySourceMap); + var libraryTargets = librarySourceMap.map(function (f) { return path.join(builtLocalDirectory, f.target); }); @@ -212,7 +244,7 @@ function concatenateFiles(destinationFile, sourceFiles) { } var useDebugMode = true; -var host = (process.env.host || process.env.TYPESCRIPT_HOST || "node"); +var host = (process.env.TYPESCRIPT_HOST || process.env.host || "node"); var compilerFilename = "tsc.js"; var LKGCompiler = path.join(LKGDirectory, compilerFilename); var builtLocalCompiler = path.join(builtLocalDirectory, compilerFilename); @@ -652,7 +684,7 @@ function deleteTemporaryProjectOutput() { } } -function runConsoleTests(defaultReporter, defaultSubsets, postLint) { +function runConsoleTests(defaultReporter, defaultSubsets) { cleanTestDirs(); var debug = process.env.debug || process.env.d; tests = process.env.test || process.env.tests || process.env.t; @@ -685,13 +717,13 @@ function runConsoleTests(defaultReporter, defaultSubsets, postLint) { subsetRegexes = subsets.map(function (sub) { return "^" + sub + ".*$"; }); subsetRegexes.push("^(?!" + subsets.join("|") + ").*$"); } - subsetRegexes.forEach(function (subsetRegex) { + subsetRegexes.forEach(function (subsetRegex, i) { tests = subsetRegex ? ' -g "' + subsetRegex + '"' : ''; var cmd = "mocha" + (debug ? " --debug-brk" : "") + " -R " + reporter + tests + colors + ' -t ' + testTimeout + ' ' + run; console.log(cmd); exec(cmd, function () { deleteTemporaryProjectOutput(); - if (postLint) { + if (i === 0) { var lint = jake.Task['lint']; lint.addListener('complete', function () { complete(); @@ -713,7 +745,7 @@ task("runtests-parallel", ["build-rules", "tests", builtLocalDirectory], functio desc("Runs the tests using the built run.js file. Optional arguments are: t[ests]=regex r[eporter]=[list|spec|json|] d[ebug]=true color[s]=false."); task("runtests", ["build-rules", "tests", builtLocalDirectory], function() { - runConsoleTests('mocha-fivemat-progress-reporter', [], /*postLint*/ true); + runConsoleTests('mocha-fivemat-progress-reporter', []); }, {async: true}); desc("Generates code coverage data via instanbul"); @@ -871,7 +903,6 @@ task("update-sublime", ["local", serverFile], function() { var tslintRuleDir = "scripts/tslint"; var tslintRules = ([ "nextLineRule", - "noNullRule", "preferConstRule", "booleanTriviaRule", "typeOperatorSpacingRule", @@ -927,6 +958,7 @@ var servicesLintTargets = [ "patternMatcher.ts", "services.ts", "shims.ts", + "jsTyping.ts" ].map(function (s) { return path.join(servicesDirectory, s); }); diff --git a/lib/lib.core.es6.d.ts b/lib/lib.core.es6.d.ts deleted file mode 100644 index 4ccdd73c614..00000000000 --- a/lib/lib.core.es6.d.ts +++ /dev/null @@ -1,5255 +0,0 @@ -/*! ***************************************************************************** -Copyright (c) Microsoft Corporation. All rights reserved. -Licensed under the Apache License, Version 2.0 (the "License"); you may not use -this file except in compliance with the License. You may obtain a copy of the -License at http://www.apache.org/licenses/LICENSE-2.0 - -THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED -WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, -MERCHANTABLITY OR NON-INFRINGEMENT. - -See the Apache Version 2.0 License for specific language governing permissions -and limitations under the License. -***************************************************************************** */ - -/// -///////////////////////////// -/// ECMAScript APIs -///////////////////////////// - -declare const NaN: number; -declare const Infinity: number; - -/** - * Evaluates JavaScript code and executes it. - * @param x A String value that contains valid JavaScript code. - */ -declare function eval(x: string): any; - -/** - * Converts A string to an integer. - * @param s A string to convert into a number. - * @param radix A value between 2 and 36 that specifies the base of the number in numString. - * If this argument is not supplied, strings with a prefix of '0x' are considered hexadecimal. - * All other strings are considered decimal. - */ -declare function parseInt(s: string, radix?: number): number; - -/** - * Converts a string to a floating-point number. - * @param string A string that contains a floating-point number. - */ -declare function parseFloat(string: string): number; - -/** - * Returns a Boolean value that indicates whether a value is the reserved value NaN (not a number). - * @param number A numeric value. - */ -declare function isNaN(number: number): boolean; - -/** - * Determines whether a supplied number is finite. - * @param number Any numeric value. - */ -declare function isFinite(number: number): boolean; - -/** - * Gets the unencoded version of an encoded Uniform Resource Identifier (URI). - * @param encodedURI A value representing an encoded URI. - */ -declare function decodeURI(encodedURI: string): string; - -/** - * Gets the unencoded version of an encoded component of a Uniform Resource Identifier (URI). - * @param encodedURIComponent A value representing an encoded URI component. - */ -declare function decodeURIComponent(encodedURIComponent: string): string; - -/** - * Encodes a text string as a valid Uniform Resource Identifier (URI) - * @param uri A value representing an encoded URI. - */ -declare function encodeURI(uri: string): string; - -/** - * Encodes a text string as a valid component of a Uniform Resource Identifier (URI). - * @param uriComponent A value representing an encoded URI component. - */ -declare function encodeURIComponent(uriComponent: string): string; - -interface PropertyDescriptor { - configurable?: boolean; - enumerable?: boolean; - value?: any; - writable?: boolean; - get? (): any; - set? (v: any): void; -} - -interface PropertyDescriptorMap { - [s: string]: PropertyDescriptor; -} - -interface Object { - /** The initial value of Object.prototype.constructor is the standard built-in Object constructor. */ - constructor: Function; - - /** Returns a string representation of an object. */ - toString(): string; - - /** Returns a date converted to a string using the current locale. */ - toLocaleString(): string; - - /** Returns the primitive value of the specified object. */ - valueOf(): Object; - - /** - * Determines whether an object has a property with the specified name. - * @param v A property name. - */ - hasOwnProperty(v: string): boolean; - - /** - * Determines whether an object exists in another object's prototype chain. - * @param v Another object whose prototype chain is to be checked. - */ - isPrototypeOf(v: Object): boolean; - - /** - * Determines whether a specified property is enumerable. - * @param v A property name. - */ - propertyIsEnumerable(v: string): boolean; -} - -interface ObjectConstructor { - new (value?: any): Object; - (): any; - (value: any): any; - - /** A reference to the prototype for a class of objects. */ - readonly prototype: Object; - - /** - * Returns the prototype of an object. - * @param o The object that references the prototype. - */ - getPrototypeOf(o: any): any; - - /** - * Gets the own property descriptor of the specified object. - * An own property descriptor is one that is defined directly on the object and is not inherited from the object's prototype. - * @param o Object that contains the property. - * @param p Name of the property. - */ - getOwnPropertyDescriptor(o: any, p: string): PropertyDescriptor; - - /** - * Returns the names of the own properties of an object. The own properties of an object are those that are defined directly - * on that object, and are not inherited from the object's prototype. The properties of an object include both fields (objects) and functions. - * @param o Object that contains the own properties. - */ - getOwnPropertyNames(o: any): string[]; - - /** - * Creates an object that has the specified prototype, and that optionally contains specified properties. - * @param o Object to use as a prototype. May be null - * @param properties JavaScript object that contains one or more property descriptors. - */ - create(o: any, properties?: PropertyDescriptorMap): any; - - /** - * Adds a property to an object, or modifies attributes of an existing property. - * @param o Object on which to add or modify the property. This can be a native JavaScript object (that is, a user-defined object or a built in object) or a DOM object. - * @param p The property name. - * @param attributes Descriptor for the property. It can be for a data property or an accessor property. - */ - defineProperty(o: any, p: string, attributes: PropertyDescriptor): any; - - /** - * Adds one or more properties to an object, and/or modifies attributes of existing properties. - * @param o Object on which to add or modify the properties. This can be a native JavaScript object or a DOM object. - * @param properties JavaScript object that contains one or more descriptor objects. Each descriptor object describes a data property or an accessor property. - */ - defineProperties(o: any, properties: PropertyDescriptorMap): any; - - /** - * Prevents the modification of attributes of existing properties, and prevents the addition of new properties. - * @param o Object on which to lock the attributes. - */ - seal(o: T): T; - - /** - * Prevents the modification of existing property attributes and values, and prevents the addition of new properties. - * @param o Object on which to lock the attributes. - */ - freeze(o: T): T; - - /** - * Prevents the addition of new properties to an object. - * @param o Object to make non-extensible. - */ - preventExtensions(o: T): T; - - /** - * Returns true if existing property attributes cannot be modified in an object and new properties cannot be added to the object. - * @param o Object to test. - */ - isSealed(o: any): boolean; - - /** - * Returns true if existing property attributes and values cannot be modified in an object, and new properties cannot be added to the object. - * @param o Object to test. - */ - isFrozen(o: any): boolean; - - /** - * Returns a value that indicates whether new properties can be added to an object. - * @param o Object to test. - */ - isExtensible(o: any): boolean; - - /** - * Returns the names of the enumerable properties and methods of an object. - * @param o Object that contains the properties and methods. This can be an object that you created or an existing Document Object Model (DOM) object. - */ - keys(o: any): string[]; -} - -/** - * Provides functionality common to all JavaScript objects. - */ -declare const Object: ObjectConstructor; - -/** - * Creates a new function. - */ -interface Function { - /** - * Calls the function, substituting the specified object for the this value of the function, and the specified array for the arguments of the function. - * @param thisArg The object to be used as the this object. - * @param argArray A set of arguments to be passed to the function. - */ - apply(thisArg: any, argArray?: any): any; - - /** - * Calls a method of an object, substituting another object for the current object. - * @param thisArg The object to be used as the current object. - * @param argArray A list of arguments to be passed to the method. - */ - call(thisArg: any, ...argArray: any[]): any; - - /** - * For a given function, creates a bound function that has the same body as the original function. - * The this object of the bound function is associated with the specified object, and has the specified initial parameters. - * @param thisArg An object to which the this keyword can refer inside the new function. - * @param argArray A list of arguments to be passed to the new function. - */ - bind(thisArg: any, ...argArray: any[]): any; - - prototype: any; - readonly length: number; - - // Non-standard extensions - arguments: any; - caller: Function; -} - -interface FunctionConstructor { - /** - * Creates a new function. - * @param args A list of arguments the function accepts. - */ - new (...args: string[]): Function; - (...args: string[]): Function; - readonly prototype: Function; -} - -declare const Function: FunctionConstructor; - -interface IArguments { - [index: number]: any; - length: number; - callee: Function; -} - -interface String { - /** Returns a string representation of a string. */ - toString(): string; - - /** - * Returns the character at the specified index. - * @param pos The zero-based index of the desired character. - */ - charAt(pos: number): string; - - /** - * Returns the Unicode value of the character at the specified location. - * @param index The zero-based index of the desired character. If there is no character at the specified index, NaN is returned. - */ - charCodeAt(index: number): number; - - /** - * Returns a string that contains the concatenation of two or more strings. - * @param strings The strings to append to the end of the string. - */ - concat(...strings: string[]): string; - - /** - * Returns the position of the first occurrence of a substring. - * @param searchString The substring to search for in the string - * @param position The index at which to begin searching the String object. If omitted, search starts at the beginning of the string. - */ - indexOf(searchString: string, position?: number): number; - - /** - * Returns the last occurrence of a substring in the string. - * @param searchString The substring to search for. - * @param position The index at which to begin searching. If omitted, the search begins at the end of the string. - */ - lastIndexOf(searchString: string, position?: number): number; - - /** - * Determines whether two strings are equivalent in the current locale. - * @param that String to compare to target string - */ - localeCompare(that: string): number; - - /** - * Matches a string with a regular expression, and returns an array containing the results of that search. - * @param regexp A variable name or string literal containing the regular expression pattern and flags. - */ - match(regexp: string): RegExpMatchArray; - - /** - * Matches a string with a regular expression, and returns an array containing the results of that search. - * @param regexp A regular expression object that contains the regular expression pattern and applicable flags. - */ - match(regexp: RegExp): RegExpMatchArray; - - /** - * Replaces text in a string, using a regular expression or search string. - * @param searchValue A string that represents the regular expression. - * @param replaceValue A string containing the text to replace for every successful match of searchValue in this string. - */ - replace(searchValue: string, replaceValue: string): string; - - /** - * Replaces text in a string, using a regular expression or search string. - * @param searchValue A string that represents the regular expression. - * @param replacer A function that returns the replacement text. - */ - replace(searchValue: string, replacer: (substring: string, ...args: any[]) => string): string; - - /** - * Replaces text in a string, using a regular expression or search string. - * @param searchValue A Regular Expression object containing the regular expression pattern and applicable flags. - * @param replaceValue A string containing the text to replace for every successful match of searchValue in this string. - */ - replace(searchValue: RegExp, replaceValue: string): string; - - /** - * Replaces text in a string, using a regular expression or search string. - * @param searchValue A Regular Expression object containing the regular expression pattern and applicable flags - * @param replacer A function that returns the replacement text. - */ - replace(searchValue: RegExp, replacer: (substring: string, ...args: any[]) => string): string; - - /** - * Finds the first substring match in a regular expression search. - * @param regexp The regular expression pattern and applicable flags. - */ - search(regexp: string): number; - - /** - * Finds the first substring match in a regular expression search. - * @param regexp The regular expression pattern and applicable flags. - */ - search(regexp: RegExp): number; - - /** - * Returns a section of a string. - * @param start The index to the beginning of the specified portion of stringObj. - * @param end The index to the end of the specified portion of stringObj. The substring includes the characters up to, but not including, the character indicated by end. - * If this value is not specified, the substring continues to the end of stringObj. - */ - slice(start?: number, end?: number): string; - - /** - * Split a string into substrings using the specified separator and return them as an array. - * @param separator A string that identifies character or characters to use in separating the string. If omitted, a single-element array containing the entire string is returned. - * @param limit A value used to limit the number of elements returned in the array. - */ - split(separator: string, limit?: number): string[]; - - /** - * Split a string into substrings using the specified separator and return them as an array. - * @param separator A Regular Express that identifies character or characters to use in separating the string. If omitted, a single-element array containing the entire string is returned. - * @param limit A value used to limit the number of elements returned in the array. - */ - split(separator: RegExp, limit?: number): string[]; - - /** - * Returns the substring at the specified location within a String object. - * @param start The zero-based index number indicating the beginning of the substring. - * @param end Zero-based index number indicating the end of the substring. The substring includes the characters up to, but not including, the character indicated by end. - * If end is omitted, the characters from start through the end of the original string are returned. - */ - substring(start: number, end?: number): string; - - /** Converts all the alphabetic characters in a string to lowercase. */ - toLowerCase(): string; - - /** Converts all alphabetic characters to lowercase, taking into account the host environment's current locale. */ - toLocaleLowerCase(): string; - - /** Converts all the alphabetic characters in a string to uppercase. */ - toUpperCase(): string; - - /** Returns a string where all alphabetic characters have been converted to uppercase, taking into account the host environment's current locale. */ - toLocaleUpperCase(): string; - - /** Removes the leading and trailing white space and line terminator characters from a string. */ - trim(): string; - - /** Returns the length of a String object. */ - readonly length: number; - - // IE extensions - /** - * Gets a substring beginning at the specified location and having the specified length. - * @param from The starting position of the desired substring. The index of the first character in the string is zero. - * @param length The number of characters to include in the returned substring. - */ - substr(from: number, length?: number): string; - - /** Returns the primitive value of the specified object. */ - valueOf(): string; - - readonly [index: number]: string; -} - -interface StringConstructor { - new (value?: any): String; - (value?: any): string; - readonly prototype: String; - fromCharCode(...codes: number[]): string; -} - -/** - * Allows manipulation and formatting of text strings and determination and location of substrings within strings. - */ -declare const String: StringConstructor; - -interface Boolean { - /** Returns the primitive value of the specified object. */ - valueOf(): boolean; -} - -interface BooleanConstructor { - new (value?: any): Boolean; - (value?: any): boolean; - readonly prototype: Boolean; -} - -declare const Boolean: BooleanConstructor; - -interface Number { - /** - * Returns a string representation of an object. - * @param radix Specifies a radix for converting numeric values to strings. This value is only used for numbers. - */ - toString(radix?: number): string; - - /** - * Returns a string representing a number in fixed-point notation. - * @param fractionDigits Number of digits after the decimal point. Must be in the range 0 - 20, inclusive. - */ - toFixed(fractionDigits?: number): string; - - /** - * Returns a string containing a number represented in exponential notation. - * @param fractionDigits Number of digits after the decimal point. Must be in the range 0 - 20, inclusive. - */ - toExponential(fractionDigits?: number): string; - - /** - * Returns a string containing a number represented either in exponential or fixed-point notation with a specified number of digits. - * @param precision Number of significant digits. Must be in the range 1 - 21, inclusive. - */ - toPrecision(precision?: number): string; - - /** Returns the primitive value of the specified object. */ - valueOf(): number; -} - -interface NumberConstructor { - new (value?: any): Number; - (value?: any): number; - readonly prototype: Number; - - /** The largest number that can be represented in JavaScript. Equal to approximately 1.79E+308. */ - readonly MAX_VALUE: number; - - /** The closest number to zero that can be represented in JavaScript. Equal to approximately 5.00E-324. */ - readonly MIN_VALUE: number; - - /** - * A value that is not a number. - * In equality comparisons, NaN does not equal any value, including itself. To test whether a value is equivalent to NaN, use the isNaN function. - */ - readonly NaN: number; - - /** - * A value that is less than the largest negative number that can be represented in JavaScript. - * JavaScript displays NEGATIVE_INFINITY values as -infinity. - */ - readonly NEGATIVE_INFINITY: number; - - /** - * A value greater than the largest number that can be represented in JavaScript. - * JavaScript displays POSITIVE_INFINITY values as infinity. - */ - readonly POSITIVE_INFINITY: number; -} - -/** An object that represents a number of any kind. All JavaScript numbers are 64-bit floating-point numbers. */ -declare const Number: NumberConstructor; - -interface TemplateStringsArray extends Array { - readonly raw: string[]; -} - -interface Math { - /** The mathematical constant e. This is Euler's number, the base of natural logarithms. */ - readonly E: number; - /** The natural logarithm of 10. */ - readonly LN10: number; - /** The natural logarithm of 2. */ - readonly LN2: number; - /** The base-2 logarithm of e. */ - readonly LOG2E: number; - /** The base-10 logarithm of e. */ - readonly LOG10E: number; - /** Pi. This is the ratio of the circumference of a circle to its diameter. */ - readonly PI: number; - /** The square root of 0.5, or, equivalently, one divided by the square root of 2. */ - readonly SQRT1_2: number; - /** The square root of 2. */ - readonly SQRT2: number; - /** - * Returns the absolute value of a number (the value without regard to whether it is positive or negative). - * For example, the absolute value of -5 is the same as the absolute value of 5. - * @param x A numeric expression for which the absolute value is needed. - */ - abs(x: number): number; - /** - * Returns the arc cosine (or inverse cosine) of a number. - * @param x A numeric expression. - */ - acos(x: number): number; - /** - * Returns the arcsine of a number. - * @param x A numeric expression. - */ - asin(x: number): number; - /** - * Returns the arctangent of a number. - * @param x A numeric expression for which the arctangent is needed. - */ - atan(x: number): number; - /** - * Returns the angle (in radians) from the X axis to a point. - * @param y A numeric expression representing the cartesian y-coordinate. - * @param x A numeric expression representing the cartesian x-coordinate. - */ - atan2(y: number, x: number): number; - /** - * Returns the smallest number greater than or equal to its numeric argument. - * @param x A numeric expression. - */ - ceil(x: number): number; - /** - * Returns the cosine of a number. - * @param x A numeric expression that contains an angle measured in radians. - */ - cos(x: number): number; - /** - * Returns e (the base of natural logarithms) raised to a power. - * @param x A numeric expression representing the power of e. - */ - exp(x: number): number; - /** - * Returns the greatest number less than or equal to its numeric argument. - * @param x A numeric expression. - */ - floor(x: number): number; - /** - * Returns the natural logarithm (base e) of a number. - * @param x A numeric expression. - */ - log(x: number): number; - /** - * Returns the larger of a set of supplied numeric expressions. - * @param values Numeric expressions to be evaluated. - */ - max(...values: number[]): number; - /** - * Returns the smaller of a set of supplied numeric expressions. - * @param values Numeric expressions to be evaluated. - */ - min(...values: number[]): number; - /** - * Returns the value of a base expression taken to a specified power. - * @param x The base value of the expression. - * @param y The exponent value of the expression. - */ - pow(x: number, y: number): number; - /** Returns a pseudorandom number between 0 and 1. */ - random(): number; - /** - * Returns a supplied numeric expression rounded to the nearest number. - * @param x The value to be rounded to the nearest number. - */ - round(x: number): number; - /** - * Returns the sine of a number. - * @param x A numeric expression that contains an angle measured in radians. - */ - sin(x: number): number; - /** - * Returns the square root of a number. - * @param x A numeric expression. - */ - sqrt(x: number): number; - /** - * Returns the tangent of a number. - * @param x A numeric expression that contains an angle measured in radians. - */ - tan(x: number): number; -} -/** An intrinsic object that provides basic mathematics functionality and constants. */ -declare const Math: Math; - -/** Enables basic storage and retrieval of dates and times. */ -interface Date { - /** Returns a string representation of a date. The format of the string depends on the locale. */ - toString(): string; - /** Returns a date as a string value. */ - toDateString(): string; - /** Returns a time as a string value. */ - toTimeString(): string; - /** Returns a value as a string value appropriate to the host environment's current locale. */ - toLocaleString(): string; - /** Returns a date as a string value appropriate to the host environment's current locale. */ - toLocaleDateString(): string; - /** Returns a time as a string value appropriate to the host environment's current locale. */ - toLocaleTimeString(): string; - /** Returns the stored time value in milliseconds since midnight, January 1, 1970 UTC. */ - valueOf(): number; - /** Gets the time value in milliseconds. */ - getTime(): number; - /** Gets the year, using local time. */ - getFullYear(): number; - /** Gets the year using Universal Coordinated Time (UTC). */ - getUTCFullYear(): number; - /** Gets the month, using local time. */ - getMonth(): number; - /** Gets the month of a Date object using Universal Coordinated Time (UTC). */ - getUTCMonth(): number; - /** Gets the day-of-the-month, using local time. */ - getDate(): number; - /** Gets the day-of-the-month, using Universal Coordinated Time (UTC). */ - getUTCDate(): number; - /** Gets the day of the week, using local time. */ - getDay(): number; - /** Gets the day of the week using Universal Coordinated Time (UTC). */ - getUTCDay(): number; - /** Gets the hours in a date, using local time. */ - getHours(): number; - /** Gets the hours value in a Date object using Universal Coordinated Time (UTC). */ - getUTCHours(): number; - /** Gets the minutes of a Date object, using local time. */ - getMinutes(): number; - /** Gets the minutes of a Date object using Universal Coordinated Time (UTC). */ - getUTCMinutes(): number; - /** Gets the seconds of a Date object, using local time. */ - getSeconds(): number; - /** Gets the seconds of a Date object using Universal Coordinated Time (UTC). */ - getUTCSeconds(): number; - /** Gets the milliseconds of a Date, using local time. */ - getMilliseconds(): number; - /** Gets the milliseconds of a Date object using Universal Coordinated Time (UTC). */ - getUTCMilliseconds(): number; - /** Gets the difference in minutes between the time on the local computer and Universal Coordinated Time (UTC). */ - getTimezoneOffset(): number; - /** - * Sets the date and time value in the Date object. - * @param time A numeric value representing the number of elapsed milliseconds since midnight, January 1, 1970 GMT. - */ - setTime(time: number): number; - /** - * Sets the milliseconds value in the Date object using local time. - * @param ms A numeric value equal to the millisecond value. - */ - setMilliseconds(ms: number): number; - /** - * Sets the milliseconds value in the Date object using Universal Coordinated Time (UTC). - * @param ms A numeric value equal to the millisecond value. - */ - setUTCMilliseconds(ms: number): number; - - /** - * Sets the seconds value in the Date object using local time. - * @param sec A numeric value equal to the seconds value. - * @param ms A numeric value equal to the milliseconds value. - */ - setSeconds(sec: number, ms?: number): number; - /** - * Sets the seconds value in the Date object using Universal Coordinated Time (UTC). - * @param sec A numeric value equal to the seconds value. - * @param ms A numeric value equal to the milliseconds value. - */ - setUTCSeconds(sec: number, ms?: number): number; - /** - * Sets the minutes value in the Date object using local time. - * @param min A numeric value equal to the minutes value. - * @param sec A numeric value equal to the seconds value. - * @param ms A numeric value equal to the milliseconds value. - */ - setMinutes(min: number, sec?: number, ms?: number): number; - /** - * Sets the minutes value in the Date object using Universal Coordinated Time (UTC). - * @param min A numeric value equal to the minutes value. - * @param sec A numeric value equal to the seconds value. - * @param ms A numeric value equal to the milliseconds value. - */ - setUTCMinutes(min: number, sec?: number, ms?: number): number; - /** - * Sets the hour value in the Date object using local time. - * @param hours A numeric value equal to the hours value. - * @param min A numeric value equal to the minutes value. - * @param sec A numeric value equal to the seconds value. - * @param ms A numeric value equal to the milliseconds value. - */ - setHours(hours: number, min?: number, sec?: number, ms?: number): number; - /** - * Sets the hours value in the Date object using Universal Coordinated Time (UTC). - * @param hours A numeric value equal to the hours value. - * @param min A numeric value equal to the minutes value. - * @param sec A numeric value equal to the seconds value. - * @param ms A numeric value equal to the milliseconds value. - */ - setUTCHours(hours: number, min?: number, sec?: number, ms?: number): number; - /** - * Sets the numeric day-of-the-month value of the Date object using local time. - * @param date A numeric value equal to the day of the month. - */ - setDate(date: number): number; - /** - * Sets the numeric day of the month in the Date object using Universal Coordinated Time (UTC). - * @param date A numeric value equal to the day of the month. - */ - setUTCDate(date: number): number; - /** - * Sets the month value in the Date object using local time. - * @param month A numeric value equal to the month. The value for January is 0, and other month values follow consecutively. - * @param date A numeric value representing the day of the month. If this value is not supplied, the value from a call to the getDate method is used. - */ - setMonth(month: number, date?: number): number; - /** - * Sets the month value in the Date object using Universal Coordinated Time (UTC). - * @param month A numeric value equal to the month. The value for January is 0, and other month values follow consecutively. - * @param date A numeric value representing the day of the month. If it is not supplied, the value from a call to the getUTCDate method is used. - */ - setUTCMonth(month: number, date?: number): number; - /** - * Sets the year of the Date object using local time. - * @param year A numeric value for the year. - * @param month A zero-based numeric value for the month (0 for January, 11 for December). Must be specified if numDate is specified. - * @param date A numeric value equal for the day of the month. - */ - setFullYear(year: number, month?: number, date?: number): number; - /** - * Sets the year value in the Date object using Universal Coordinated Time (UTC). - * @param year A numeric value equal to the year. - * @param month A numeric value equal to the month. The value for January is 0, and other month values follow consecutively. Must be supplied if numDate is supplied. - * @param date A numeric value equal to the day of the month. - */ - setUTCFullYear(year: number, month?: number, date?: number): number; - /** Returns a date converted to a string using Universal Coordinated Time (UTC). */ - toUTCString(): string; - /** Returns a date as a string value in ISO format. */ - toISOString(): string; - /** Used by the JSON.stringify method to enable the transformation of an object's data for JavaScript Object Notation (JSON) serialization. */ - toJSON(key?: any): string; -} - -interface DateConstructor { - new (): Date; - new (value: number): Date; - new (value: string): Date; - new (year: number, month: number, date?: number, hours?: number, minutes?: number, seconds?: number, ms?: number): Date; - (): string; - readonly prototype: Date; - /** - * Parses a string containing a date, and returns the number of milliseconds between that date and midnight, January 1, 1970. - * @param s A date string - */ - parse(s: string): number; - /** - * Returns the number of milliseconds between midnight, January 1, 1970 Universal Coordinated Time (UTC) (or GMT) and the specified date. - * @param year The full year designation is required for cross-century date accuracy. If year is between 0 and 99 is used, then year is assumed to be 1900 + year. - * @param month The month as an number between 0 and 11 (January to December). - * @param date The date as an number between 1 and 31. - * @param hours Must be supplied if minutes is supplied. An number from 0 to 23 (midnight to 11pm) that specifies the hour. - * @param minutes Must be supplied if seconds is supplied. An number from 0 to 59 that specifies the minutes. - * @param seconds Must be supplied if milliseconds is supplied. An number from 0 to 59 that specifies the seconds. - * @param ms An number from 0 to 999 that specifies the milliseconds. - */ - UTC(year: number, month: number, date?: number, hours?: number, minutes?: number, seconds?: number, ms?: number): number; - now(): number; -} - -declare const Date: DateConstructor; - -interface RegExpMatchArray extends Array { - index?: number; - input?: string; -} - -interface RegExpExecArray extends Array { - index: number; - input: string; -} - -interface RegExp { - /** - * Executes a search on a string using a regular expression pattern, and returns an array containing the results of that search. - * @param string The String object or string literal on which to perform the search. - */ - exec(string: string): RegExpExecArray; - - /** - * Returns a Boolean value that indicates whether or not a pattern exists in a searched string. - * @param string String on which to perform the search. - */ - test(string: string): boolean; - - /** Returns a copy of the text of the regular expression pattern. Read-only. The regExp argument is a Regular expression object. It can be a variable name or a literal. */ - readonly source: string; - - /** Returns a Boolean value indicating the state of the global flag (g) used with a regular expression. Default is false. Read-only. */ - readonly global: boolean; - - /** Returns a Boolean value indicating the state of the ignoreCase flag (i) used with a regular expression. Default is false. Read-only. */ - readonly ignoreCase: boolean; - - /** Returns a Boolean value indicating the state of the multiline flag (m) used with a regular expression. Default is false. Read-only. */ - readonly multiline: boolean; - - lastIndex: number; - - // Non-standard extensions - compile(): RegExp; -} - -interface RegExpConstructor { - new (pattern: string, flags?: string): RegExp; - (pattern: string, flags?: string): RegExp; - readonly prototype: RegExp; - - // Non-standard extensions - $1: string; - $2: string; - $3: string; - $4: string; - $5: string; - $6: string; - $7: string; - $8: string; - $9: string; - lastMatch: string; -} - -declare const RegExp: RegExpConstructor; - -interface Error { - name: string; - message: string; -} - -interface ErrorConstructor { - new (message?: string): Error; - (message?: string): Error; - readonly prototype: Error; -} - -declare const Error: ErrorConstructor; - -interface EvalError extends Error { -} - -interface EvalErrorConstructor { - new (message?: string): EvalError; - (message?: string): EvalError; - readonly prototype: EvalError; -} - -declare const EvalError: EvalErrorConstructor; - -interface RangeError extends Error { -} - -interface RangeErrorConstructor { - new (message?: string): RangeError; - (message?: string): RangeError; - readonly prototype: RangeError; -} - -declare const RangeError: RangeErrorConstructor; - -interface ReferenceError extends Error { -} - -interface ReferenceErrorConstructor { - new (message?: string): ReferenceError; - (message?: string): ReferenceError; - readonly prototype: ReferenceError; -} - -declare const ReferenceError: ReferenceErrorConstructor; - -interface SyntaxError extends Error { -} - -interface SyntaxErrorConstructor { - new (message?: string): SyntaxError; - (message?: string): SyntaxError; - readonly prototype: SyntaxError; -} - -declare const SyntaxError: SyntaxErrorConstructor; - -interface TypeError extends Error { -} - -interface TypeErrorConstructor { - new (message?: string): TypeError; - (message?: string): TypeError; - readonly prototype: TypeError; -} - -declare const TypeError: TypeErrorConstructor; - -interface URIError extends Error { -} - -interface URIErrorConstructor { - new (message?: string): URIError; - (message?: string): URIError; - readonly prototype: URIError; -} - -declare const URIError: URIErrorConstructor; - -interface JSON { - /** - * Converts a JavaScript Object Notation (JSON) string into an object. - * @param text A valid JSON string. - * @param reviver A function that transforms the results. This function is called for each member of the object. - * If a member contains nested objects, the nested objects are transformed before the parent object is. - */ - parse(text: string, reviver?: (key: any, value: any) => any): any; - /** - * Converts a JavaScript value to a JavaScript Object Notation (JSON) string. - * @param value A JavaScript value, usually an object or array, to be converted. - */ - stringify(value: any): string; - /** - * 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 A function that transforms the results. - */ - stringify(value: any, replacer: (key: string, value: any) => any): string; - /** - * 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 Array that transforms the results. - */ - stringify(value: any, replacer: any[]): string; - /** - * 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 A function that transforms the results. - * @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: (key: string, value: any) => any, space: string | number): string; - /** - * 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 Array that transforms the results. - * @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: any[], space: string | number): string; -} -/** - * An intrinsic object that provides functions to convert JavaScript values to and from the JavaScript Object Notation (JSON) format. - */ -declare const JSON: JSON; - - -///////////////////////////// -/// ECMAScript Array API (specially handled by compiler) -///////////////////////////// - -interface ReadonlyArray { - /** - * Gets the length of the array. This is a number one higher than the highest element defined in an array. - */ - readonly length: number; - /** - * Returns a string representation of an array. - */ - toString(): string; - toLocaleString(): string; - /** - * Combines two or more arrays. - * @param items Additional items to add to the end of array1. - */ - concat>(...items: U[]): T[]; - /** - * Combines two or more arrays. - * @param items Additional items to add to the end of array1. - */ - concat(...items: T[]): T[]; - /** - * Adds all the elements of an array separated by the specified separator string. - * @param separator A string used to separate one element of an array from the next in the resulting String. If omitted, the array elements are separated with a comma. - */ - join(separator?: string): string; - /** - * Returns a section of an array. - * @param start The beginning of the specified portion of the array. - * @param end The end of the specified portion of the array. - */ - slice(start?: number, end?: number): T[]; - /** - * Returns the index of the first occurrence of a value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the search starts at index 0. - */ - indexOf(searchElement: T, fromIndex?: number): number; - - /** - * Returns the index of the last occurrence of a specified value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the search starts at the last index in the array. - */ - lastIndexOf(searchElement: T, fromIndex?: number): number; - /** - * Determines whether all the members of an array satisfy the specified test. - * @param callbackfn A function that accepts up to three arguments. The every method calls the callbackfn function for each element in array1 until the callbackfn returns false, or until the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value. - */ - every(callbackfn: (value: T, index: number, array: ReadonlyArray) => boolean, thisArg?: any): boolean; - /** - * Determines whether the specified callback function returns true for any element of an array. - * @param callbackfn A function that accepts up to three arguments. The some method calls the callbackfn function for each element in array1 until the callbackfn returns true, or until the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value. - */ - some(callbackfn: (value: T, index: number, array: ReadonlyArray) => boolean, thisArg?: any): boolean; - /** - * Performs the specified action for each element in an array. - * @param callbackfn A function that accepts up to three arguments. forEach calls the callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value. - */ - forEach(callbackfn: (value: T, index: number, array: ReadonlyArray) => void, thisArg?: any): void; - /** - * Calls a defined callback function on each element of an array, and returns an array that contains the results. - * @param callbackfn A function that accepts up to three arguments. The map method calls the callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value. - */ - map(callbackfn: (value: T, index: number, array: ReadonlyArray) => U, thisArg?: any): U[]; - /** - * Returns the elements of an array that meet the condition specified in a callback function. - * @param callbackfn A function that accepts up to three arguments. The filter method calls the callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value. - */ - filter(callbackfn: (value: T, index: number, array: ReadonlyArray) => boolean, thisArg?: any): T[]; - /** - * Calls the specified callback function for all the elements in an array. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value. - */ - reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: ReadonlyArray) => T, initialValue?: T): T; - /** - * Calls the specified callback function for all the elements in an array. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value. - */ - reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: ReadonlyArray) => U, initialValue: U): U; - /** - * Calls the specified callback function for all the elements in an array, in descending order. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value. - */ - reduceRight(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: ReadonlyArray) => T, initialValue?: T): T; - /** - * Calls the specified callback function for all the elements in an array, in descending order. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value. - */ - reduceRight(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: ReadonlyArray) => U, initialValue: U): U; - - readonly [n: number]: T; -} - -interface Array { - /** - * Gets or sets the length of the array. This is a number one higher than the highest element defined in an array. - */ - length: number; - /** - * Returns a string representation of an array. - */ - toString(): string; - toLocaleString(): string; - /** - * Appends new elements to an array, and returns the new length of the array. - * @param items New elements of the Array. - */ - push(...items: T[]): number; - /** - * Removes the last element from an array and returns it. - */ - pop(): T; - /** - * Combines two or more arrays. - * @param items Additional items to add to the end of array1. - */ - concat(...items: (T | T[])[]): T[]; - /** - * Adds all the elements of an array separated by the specified separator string. - * @param separator A string used to separate one element of an array from the next in the resulting String. If omitted, the array elements are separated with a comma. - */ - join(separator?: string): string; - /** - * Reverses the elements in an Array. - */ - reverse(): T[]; - /** - * Removes the first element from an array and returns it. - */ - shift(): T; - /** - * Returns a section of an array. - * @param start The beginning of the specified portion of the array. - * @param end The end of the specified portion of the array. - */ - slice(start?: number, end?: number): T[]; - /** - * Sorts an array. - * @param compareFn The name of the function used to determine the order of the elements. If omitted, the elements are sorted in ascending, ASCII character order. - */ - sort(compareFn?: (a: T, b: T) => number): T[]; - /** - * Removes elements from an array and, if necessary, inserts new elements in their place, returning the deleted elements. - * @param start The zero-based location in the array from which to start removing elements. - */ - splice(start: number): T[]; - /** - * Removes elements from an array and, if necessary, inserts new elements in their place, returning the deleted elements. - * @param start The zero-based location in the array from which to start removing elements. - * @param deleteCount The number of elements to remove. - * @param items Elements to insert into the array in place of the deleted elements. - */ - splice(start: number, deleteCount: number, ...items: T[]): T[]; - /** - * Inserts new elements at the start of an array. - * @param items Elements to insert at the start of the Array. - */ - unshift(...items: T[]): number; - /** - * Returns the index of the first occurrence of a value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the search starts at index 0. - */ - indexOf(searchElement: T, fromIndex?: number): number; - /** - * Returns the index of the last occurrence of a specified value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the search starts at the last index in the array. - */ - lastIndexOf(searchElement: T, fromIndex?: number): number; - /** - * Determines whether all the members of an array satisfy the specified test. - * @param callbackfn A function that accepts up to three arguments. The every method calls the callbackfn function for each element in array1 until the callbackfn returns false, or until the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value. - */ - every(callbackfn: (value: T, index: number, array: T[]) => boolean, thisArg?: any): boolean; - /** - * Determines whether the specified callback function returns true for any element of an array. - * @param callbackfn A function that accepts up to three arguments. The some method calls the callbackfn function for each element in array1 until the callbackfn returns true, or until the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value. - */ - some(callbackfn: (value: T, index: number, array: T[]) => boolean, thisArg?: any): boolean; - /** - * Performs the specified action for each element in an array. - * @param callbackfn A function that accepts up to three arguments. forEach calls the callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value. - */ - forEach(callbackfn: (value: T, index: number, array: T[]) => void, thisArg?: any): void; - /** - * Calls a defined callback function on each element of an array, and returns an array that contains the results. - * @param callbackfn A function that accepts up to three arguments. The map method calls the callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value. - */ - map(callbackfn: (value: T, index: number, array: T[]) => U, thisArg?: any): U[]; - /** - * Returns the elements of an array that meet the condition specified in a callback function. - * @param callbackfn A function that accepts up to three arguments. The filter method calls the callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value. - */ - filter(callbackfn: (value: T, index: number, array: T[]) => boolean, thisArg?: any): T[]; - /** - * Calls the specified callback function for all the elements in an array. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value. - */ - reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue?: T): T; - /** - * Calls the specified callback function for all the elements in an array. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value. - */ - reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; - /** - * Calls the specified callback function for all the elements in an array, in descending order. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value. - */ - reduceRight(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue?: T): T; - /** - * Calls the specified callback function for all the elements in an array, in descending order. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value. - */ - reduceRight(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; - - [n: number]: T; -} - -interface ArrayConstructor { - new (arrayLength?: number): any[]; - new (arrayLength: number): T[]; - new (...items: T[]): T[]; - (arrayLength?: number): any[]; - (arrayLength: number): T[]; - (...items: T[]): T[]; - isArray(arg: any): arg is Array; - readonly prototype: Array; -} - -declare const Array: ArrayConstructor; - -interface TypedPropertyDescriptor { - enumerable?: boolean; - configurable?: boolean; - writable?: boolean; - value?: T; - get?: () => T; - set?: (value: T) => void; -} - -declare type ClassDecorator = (target: TFunction) => TFunction | void; -declare type PropertyDecorator = (target: Object, propertyKey: string | symbol) => void; -declare type MethodDecorator = (target: Object, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor | void; -declare type ParameterDecorator = (target: Object, propertyKey: string | symbol, parameterIndex: number) => void; - -declare type PromiseConstructorLike = new (executor: (resolve: (value?: T | PromiseLike) => void, reject: (reason?: any) => void) => void) => PromiseLike; - -interface PromiseLike { - /** - * 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(onfulfilled?: (value: T) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): PromiseLike; - then(onfulfilled?: (value: T) => TResult | PromiseLike, onrejected?: (reason: any) => void): PromiseLike; -} - -interface ArrayLike { - readonly length: number; - readonly [n: number]: T; -} - -/** - * Represents a raw buffer of binary data, which is used to store data for the - * different typed arrays. ArrayBuffers cannot be read from or written to directly, - * but can be passed to a typed array or DataView Object to interpret the raw - * buffer as needed. - */ -interface ArrayBuffer { - /** - * Read-only. The length of the ArrayBuffer (in bytes). - */ - readonly byteLength: number; - - /** - * Returns a section of an ArrayBuffer. - */ - slice(begin:number, end?:number): ArrayBuffer; -} - -interface ArrayBufferConstructor { - readonly prototype: ArrayBuffer; - new (byteLength: number): ArrayBuffer; - isView(arg: any): arg is ArrayBufferView; -} -declare const ArrayBuffer: ArrayBufferConstructor; - -interface ArrayBufferView { - /** - * The ArrayBuffer instance referenced by the array. - */ - buffer: ArrayBuffer; - - /** - * The length in bytes of the array. - */ - byteLength: number; - - /** - * The offset in bytes of the array. - */ - byteOffset: number; -} - -interface DataView { - readonly buffer: ArrayBuffer; - readonly byteLength: number; - readonly byteOffset: number; - /** - * Gets the Float32 value at the specified byte offset from the start of the view. There is - * no alignment constraint; multi-byte values may be fetched from any offset. - * @param byteOffset The place in the buffer at which the value should be retrieved. - */ - getFloat32(byteOffset: number, littleEndian?: boolean): number; - - /** - * Gets the Float64 value at the specified byte offset from the start of the view. There is - * no alignment constraint; multi-byte values may be fetched from any offset. - * @param byteOffset The place in the buffer at which the value should be retrieved. - */ - getFloat64(byteOffset: number, littleEndian?: boolean): number; - - /** - * Gets the Int8 value at the specified byte offset from the start of the view. There is - * no alignment constraint; multi-byte values may be fetched from any offset. - * @param byteOffset The place in the buffer at which the value should be retrieved. - */ - getInt8(byteOffset: number): number; - - /** - * Gets the Int16 value at the specified byte offset from the start of the view. There is - * no alignment constraint; multi-byte values may be fetched from any offset. - * @param byteOffset The place in the buffer at which the value should be retrieved. - */ - getInt16(byteOffset: number, littleEndian?: boolean): number; - /** - * Gets the Int32 value at the specified byte offset from the start of the view. There is - * no alignment constraint; multi-byte values may be fetched from any offset. - * @param byteOffset The place in the buffer at which the value should be retrieved. - */ - getInt32(byteOffset: number, littleEndian?: boolean): number; - - /** - * Gets the Uint8 value at the specified byte offset from the start of the view. There is - * no alignment constraint; multi-byte values may be fetched from any offset. - * @param byteOffset The place in the buffer at which the value should be retrieved. - */ - getUint8(byteOffset: number): number; - - /** - * Gets the Uint16 value at the specified byte offset from the start of the view. There is - * no alignment constraint; multi-byte values may be fetched from any offset. - * @param byteOffset The place in the buffer at which the value should be retrieved. - */ - getUint16(byteOffset: number, littleEndian?: boolean): number; - - /** - * Gets the Uint32 value at the specified byte offset from the start of the view. There is - * no alignment constraint; multi-byte values may be fetched from any offset. - * @param byteOffset The place in the buffer at which the value should be retrieved. - */ - getUint32(byteOffset: number, littleEndian?: boolean): number; - - /** - * Stores an Float32 value at the specified byte offset from the start of the view. - * @param byteOffset The place in the buffer at which the value should be set. - * @param value The value to set. - * @param littleEndian If false or undefined, a big-endian value should be written, - * otherwise a little-endian value should be written. - */ - setFloat32(byteOffset: number, value: number, littleEndian?: boolean): void; - - /** - * Stores an Float64 value at the specified byte offset from the start of the view. - * @param byteOffset The place in the buffer at which the value should be set. - * @param value The value to set. - * @param littleEndian If false or undefined, a big-endian value should be written, - * otherwise a little-endian value should be written. - */ - setFloat64(byteOffset: number, value: number, littleEndian?: boolean): void; - - /** - * Stores an Int8 value at the specified byte offset from the start of the view. - * @param byteOffset The place in the buffer at which the value should be set. - * @param value The value to set. - */ - setInt8(byteOffset: number, value: number): void; - - /** - * Stores an Int16 value at the specified byte offset from the start of the view. - * @param byteOffset The place in the buffer at which the value should be set. - * @param value The value to set. - * @param littleEndian If false or undefined, a big-endian value should be written, - * otherwise a little-endian value should be written. - */ - setInt16(byteOffset: number, value: number, littleEndian?: boolean): void; - - /** - * Stores an Int32 value at the specified byte offset from the start of the view. - * @param byteOffset The place in the buffer at which the value should be set. - * @param value The value to set. - * @param littleEndian If false or undefined, a big-endian value should be written, - * otherwise a little-endian value should be written. - */ - setInt32(byteOffset: number, value: number, littleEndian?: boolean): void; - - /** - * Stores an Uint8 value at the specified byte offset from the start of the view. - * @param byteOffset The place in the buffer at which the value should be set. - * @param value The value to set. - */ - setUint8(byteOffset: number, value: number): void; - - /** - * Stores an Uint16 value at the specified byte offset from the start of the view. - * @param byteOffset The place in the buffer at which the value should be set. - * @param value The value to set. - * @param littleEndian If false or undefined, a big-endian value should be written, - * otherwise a little-endian value should be written. - */ - setUint16(byteOffset: number, value: number, littleEndian?: boolean): void; - - /** - * Stores an Uint32 value at the specified byte offset from the start of the view. - * @param byteOffset The place in the buffer at which the value should be set. - * @param value The value to set. - * @param littleEndian If false or undefined, a big-endian value should be written, - * otherwise a little-endian value should be written. - */ - setUint32(byteOffset: number, value: number, littleEndian?: boolean): void; -} - -interface DataViewConstructor { - new (buffer: ArrayBuffer, byteOffset?: number, byteLength?: number): DataView; -} -declare const DataView: DataViewConstructor; - -/** - * A typed array of 8-bit integer values. The contents are initialized to 0. If the requested - * number of bytes could not be allocated an exception is raised. - */ -interface Int8Array { - /** - * The size in bytes of each element in the array. - */ - readonly BYTES_PER_ELEMENT: number; - - /** - * The ArrayBuffer instance referenced by the array. - */ - readonly buffer: ArrayBuffer; - - /** - * The length in bytes of the array. - */ - readonly byteLength: number; - - /** - * The offset in bytes of the array. - */ - readonly byteOffset: number; - - /** - * Returns the this object after copying a section of the array identified by start and end - * to the same array starting at position target - * @param target If target is negative, it is treated as length+target where length is the - * length of the array. - * @param start If start is negative, it is treated as length+start. If end is negative, it - * is treated as length+end. - * @param end If not specified, length of the this object is used as its default value. - */ - copyWithin(target: number, start: number, end?: number): Int8Array; - - /** - * Determines whether all the members of an array satisfy the specified test. - * @param callbackfn A function that accepts up to three arguments. The every method calls - * the callbackfn function for each element in array1 until the callbackfn returns false, - * or until the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - every(callbackfn: (value: number, index: number, array: Int8Array) => boolean, thisArg?: any): boolean; - - /** - * Returns the this object after filling the section identified by start and end with value - * @param value value to fill array section with - * @param start index to start filling the array at. If start is negative, it is treated as - * length+start where length is the length of the array. - * @param end index to stop filling the array at. If end is negative, it is treated as - * length+end. - */ - fill(value: number, start?: number, end?: number): Int8Array; - - /** - * Returns the elements of an array that meet the condition specified in a callback function. - * @param callbackfn A function that accepts up to three arguments. The filter method calls - * the callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - filter(callbackfn: (value: number, index: number, array: Int8Array) => boolean, thisArg?: any): Int8Array; - - /** - * Returns the value of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; - - /** - * Returns the index of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; - - /** - * Performs the specified action for each element in an array. - * @param callbackfn A function that accepts up to three arguments. forEach calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - forEach(callbackfn: (value: number, index: number, array: Int8Array) => void, thisArg?: any): void; - - /** - * Returns the index of the first occurrence of a value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the - * search starts at index 0. - */ - indexOf(searchElement: number, fromIndex?: number): number; - - /** - * Adds all the elements of an array separated by the specified separator string. - * @param separator A string used to separate one element of an array from the next in the - * resulting String. If omitted, the array elements are separated with a comma. - */ - join(separator?: string): string; - - /** - * Returns the index of the last occurrence of a value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the - * search starts at index 0. - */ - lastIndexOf(searchElement: number, fromIndex?: number): number; - - /** - * The length of the array. - */ - readonly length: number; - - /** - * Calls a defined callback function on each element of an array, and returns an array that - * contains the results. - * @param callbackfn A function that accepts up to three arguments. The map method calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - map(callbackfn: (value: number, index: number, array: Int8Array) => number, thisArg?: any): Int8Array; - - /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next - * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the - * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Int8Array) => number, initialValue?: number): number; - - /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next - * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the - * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduce(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Int8Array) => U, initialValue: U): U; - - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an - * argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an - * argument instead of an array value. - */ - reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Int8Array) => number, initialValue?: number): number; - - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an - * argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduceRight(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Int8Array) => U, initialValue: U): U; - - /** - * Reverses the elements in an Array. - */ - reverse(): Int8Array; - - /** - * Sets a value or an array of values. - * @param index The index of the location to set. - * @param value The value to set. - */ - set(index: number, value: number): void; - - /** - * Sets a value or an array of values. - * @param array A typed or untyped array of values to set. - * @param offset The index in the current array at which the values are to be written. - */ - set(array: ArrayLike, offset?: number): void; - - /** - * Returns a section of an array. - * @param start The beginning of the specified portion of the array. - * @param end The end of the specified portion of the array. - */ - slice(start?: number, end?: number): Int8Array; - - /** - * Determines whether the specified callback function returns true for any element of an array. - * @param callbackfn A function that accepts up to three arguments. The some method calls the - * callbackfn function for each element in array1 until the callbackfn returns true, or until - * the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - some(callbackfn: (value: number, index: number, array: Int8Array) => boolean, thisArg?: any): boolean; - - /** - * Sorts an array. - * @param compareFn The name of the function used to determine the order of the elements. If - * omitted, the elements are sorted in ascending, ASCII character order. - */ - sort(compareFn?: (a: number, b: number) => number): Int8Array; - - /** - * Gets a new Int8Array view of the ArrayBuffer store for this array, referencing the elements - * at begin, inclusive, up to end, exclusive. - * @param begin The index of the beginning of the array. - * @param end The index of the end of the array. - */ - subarray(begin: number, end?: number): Int8Array; - - /** - * Converts a number to a string by using the current locale. - */ - toLocaleString(): string; - - /** - * Returns a string representation of an array. - */ - toString(): string; - - [index: number]: number; -} -interface Int8ArrayConstructor { - readonly prototype: Int8Array; - new (length: number): Int8Array; - new (array: ArrayLike): Int8Array; - new (buffer: ArrayBuffer, byteOffset?: number, length?: number): Int8Array; - - /** - * The size in bytes of each element in the array. - */ - readonly BYTES_PER_ELEMENT: number; - - /** - * Returns a new array from a set of elements. - * @param items A set of elements to include in the new array object. - */ - of(...items: number[]): Int8Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: ArrayLike, mapfn?: (v: number, k: number) => number, thisArg?: any): Int8Array; - -} -declare const Int8Array: Int8ArrayConstructor; - -/** - * A typed array of 8-bit unsigned integer values. The contents are initialized to 0. If the - * requested number of bytes could not be allocated an exception is raised. - */ -interface Uint8Array { - /** - * The size in bytes of each element in the array. - */ - readonly BYTES_PER_ELEMENT: number; - - /** - * The ArrayBuffer instance referenced by the array. - */ - readonly buffer: ArrayBuffer; - - /** - * The length in bytes of the array. - */ - readonly byteLength: number; - - /** - * The offset in bytes of the array. - */ - readonly byteOffset: number; - - /** - * Returns the this object after copying a section of the array identified by start and end - * to the same array starting at position target - * @param target If target is negative, it is treated as length+target where length is the - * length of the array. - * @param start If start is negative, it is treated as length+start. If end is negative, it - * is treated as length+end. - * @param end If not specified, length of the this object is used as its default value. - */ - copyWithin(target: number, start: number, end?: number): Uint8Array; - - /** - * Determines whether all the members of an array satisfy the specified test. - * @param callbackfn A function that accepts up to three arguments. The every method calls - * the callbackfn function for each element in array1 until the callbackfn returns false, - * or until the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - every(callbackfn: (value: number, index: number, array: Uint8Array) => boolean, thisArg?: any): boolean; - - /** - * Returns the this object after filling the section identified by start and end with value - * @param value value to fill array section with - * @param start index to start filling the array at. If start is negative, it is treated as - * length+start where length is the length of the array. - * @param end index to stop filling the array at. If end is negative, it is treated as - * length+end. - */ - fill(value: number, start?: number, end?: number): Uint8Array; - - /** - * Returns the elements of an array that meet the condition specified in a callback function. - * @param callbackfn A function that accepts up to three arguments. The filter method calls - * the callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - filter(callbackfn: (value: number, index: number, array: Uint8Array) => boolean, thisArg?: any): Uint8Array; - - /** - * Returns the value of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; - - /** - * Returns the index of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; - - /** - * Performs the specified action for each element in an array. - * @param callbackfn A function that accepts up to three arguments. forEach calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - forEach(callbackfn: (value: number, index: number, array: Uint8Array) => void, thisArg?: any): void; - - /** - * Returns the index of the first occurrence of a value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the - * search starts at index 0. - */ - indexOf(searchElement: number, fromIndex?: number): number; - - /** - * Adds all the elements of an array separated by the specified separator string. - * @param separator A string used to separate one element of an array from the next in the - * resulting String. If omitted, the array elements are separated with a comma. - */ - join(separator?: string): string; - - /** - * Returns the index of the last occurrence of a value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the - * search starts at index 0. - */ - lastIndexOf(searchElement: number, fromIndex?: number): number; - - /** - * The length of the array. - */ - readonly length: number; - - /** - * Calls a defined callback function on each element of an array, and returns an array that - * contains the results. - * @param callbackfn A function that accepts up to three arguments. The map method calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - map(callbackfn: (value: number, index: number, array: Uint8Array) => number, thisArg?: any): Uint8Array; - - /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next - * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the - * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint8Array) => number, initialValue?: number): number; - - /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next - * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the - * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduce(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Uint8Array) => U, initialValue: U): U; - - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an - * argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an - * argument instead of an array value. - */ - reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint8Array) => number, initialValue?: number): number; - - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an - * argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduceRight(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Uint8Array) => U, initialValue: U): U; - - /** - * Reverses the elements in an Array. - */ - reverse(): Uint8Array; - - /** - * Sets a value or an array of values. - * @param index The index of the location to set. - * @param value The value to set. - */ - set(index: number, value: number): void; - - /** - * Sets a value or an array of values. - * @param array A typed or untyped array of values to set. - * @param offset The index in the current array at which the values are to be written. - */ - set(array: ArrayLike, offset?: number): void; - - /** - * Returns a section of an array. - * @param start The beginning of the specified portion of the array. - * @param end The end of the specified portion of the array. - */ - slice(start?: number, end?: number): Uint8Array; - - /** - * Determines whether the specified callback function returns true for any element of an array. - * @param callbackfn A function that accepts up to three arguments. The some method calls the - * callbackfn function for each element in array1 until the callbackfn returns true, or until - * the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - some(callbackfn: (value: number, index: number, array: Uint8Array) => boolean, thisArg?: any): boolean; - - /** - * Sorts an array. - * @param compareFn The name of the function used to determine the order of the elements. If - * omitted, the elements are sorted in ascending, ASCII character order. - */ - sort(compareFn?: (a: number, b: number) => number): Uint8Array; - - /** - * Gets a new Uint8Array view of the ArrayBuffer store for this array, referencing the elements - * at begin, inclusive, up to end, exclusive. - * @param begin The index of the beginning of the array. - * @param end The index of the end of the array. - */ - subarray(begin: number, end?: number): Uint8Array; - - /** - * Converts a number to a string by using the current locale. - */ - toLocaleString(): string; - - /** - * Returns a string representation of an array. - */ - toString(): string; - - [index: number]: number; -} - -interface Uint8ArrayConstructor { - readonly prototype: Uint8Array; - new (length: number): Uint8Array; - new (array: ArrayLike): Uint8Array; - new (buffer: ArrayBuffer, byteOffset?: number, length?: number): Uint8Array; - - /** - * The size in bytes of each element in the array. - */ - readonly BYTES_PER_ELEMENT: number; - - /** - * Returns a new array from a set of elements. - * @param items A set of elements to include in the new array object. - */ - of(...items: number[]): Uint8Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: ArrayLike, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint8Array; - -} -declare const Uint8Array: Uint8ArrayConstructor; - -/** - * A typed array of 8-bit unsigned integer (clamped) values. The contents are initialized to 0. - * If the requested number of bytes could not be allocated an exception is raised. - */ -interface Uint8ClampedArray { - /** - * The size in bytes of each element in the array. - */ - readonly BYTES_PER_ELEMENT: number; - - /** - * The ArrayBuffer instance referenced by the array. - */ - readonly buffer: ArrayBuffer; - - /** - * The length in bytes of the array. - */ - readonly byteLength: number; - - /** - * The offset in bytes of the array. - */ - readonly byteOffset: number; - - /** - * Returns the this object after copying a section of the array identified by start and end - * to the same array starting at position target - * @param target If target is negative, it is treated as length+target where length is the - * length of the array. - * @param start If start is negative, it is treated as length+start. If end is negative, it - * is treated as length+end. - * @param end If not specified, length of the this object is used as its default value. - */ - copyWithin(target: number, start: number, end?: number): Uint8ClampedArray; - - /** - * Determines whether all the members of an array satisfy the specified test. - * @param callbackfn A function that accepts up to three arguments. The every method calls - * the callbackfn function for each element in array1 until the callbackfn returns false, - * or until the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - every(callbackfn: (value: number, index: number, array: Uint8ClampedArray) => boolean, thisArg?: any): boolean; - - /** - * Returns the this object after filling the section identified by start and end with value - * @param value value to fill array section with - * @param start index to start filling the array at. If start is negative, it is treated as - * length+start where length is the length of the array. - * @param end index to stop filling the array at. If end is negative, it is treated as - * length+end. - */ - fill(value: number, start?: number, end?: number): Uint8ClampedArray; - - /** - * Returns the elements of an array that meet the condition specified in a callback function. - * @param callbackfn A function that accepts up to three arguments. The filter method calls - * the callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - filter(callbackfn: (value: number, index: number, array: Uint8ClampedArray) => boolean, thisArg?: any): Uint8ClampedArray; - - /** - * Returns the value of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; - - /** - * Returns the index of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; - - /** - * Performs the specified action for each element in an array. - * @param callbackfn A function that accepts up to three arguments. forEach calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - forEach(callbackfn: (value: number, index: number, array: Uint8ClampedArray) => void, thisArg?: any): void; - - /** - * Returns the index of the first occurrence of a value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the - * search starts at index 0. - */ - indexOf(searchElement: number, fromIndex?: number): number; - - /** - * Adds all the elements of an array separated by the specified separator string. - * @param separator A string used to separate one element of an array from the next in the - * resulting String. If omitted, the array elements are separated with a comma. - */ - join(separator?: string): string; - - /** - * Returns the index of the last occurrence of a value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the - * search starts at index 0. - */ - lastIndexOf(searchElement: number, fromIndex?: number): number; - - /** - * The length of the array. - */ - readonly length: number; - - /** - * Calls a defined callback function on each element of an array, and returns an array that - * contains the results. - * @param callbackfn A function that accepts up to three arguments. The map method calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - map(callbackfn: (value: number, index: number, array: Uint8ClampedArray) => number, thisArg?: any): Uint8ClampedArray; - - /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next - * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the - * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint8ClampedArray) => number, initialValue?: number): number; - - /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next - * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the - * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduce(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Uint8ClampedArray) => U, initialValue: U): U; - - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an - * argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an - * argument instead of an array value. - */ - reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint8ClampedArray) => number, initialValue?: number): number; - - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an - * argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduceRight(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Uint8ClampedArray) => U, initialValue: U): U; - - /** - * Reverses the elements in an Array. - */ - reverse(): Uint8ClampedArray; - - /** - * Sets a value or an array of values. - * @param index The index of the location to set. - * @param value The value to set. - */ - set(index: number, value: number): void; - - /** - * Sets a value or an array of values. - * @param array A typed or untyped array of values to set. - * @param offset The index in the current array at which the values are to be written. - */ - set(array: Uint8ClampedArray, offset?: number): void; - - /** - * Returns a section of an array. - * @param start The beginning of the specified portion of the array. - * @param end The end of the specified portion of the array. - */ - slice(start?: number, end?: number): Uint8ClampedArray; - - /** - * Determines whether the specified callback function returns true for any element of an array. - * @param callbackfn A function that accepts up to three arguments. The some method calls the - * callbackfn function for each element in array1 until the callbackfn returns true, or until - * the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - some(callbackfn: (value: number, index: number, array: Uint8ClampedArray) => boolean, thisArg?: any): boolean; - - /** - * Sorts an array. - * @param compareFn The name of the function used to determine the order of the elements. If - * omitted, the elements are sorted in ascending, ASCII character order. - */ - sort(compareFn?: (a: number, b: number) => number): Uint8ClampedArray; - - /** - * Gets a new Uint8ClampedArray view of the ArrayBuffer store for this array, referencing the elements - * at begin, inclusive, up to end, exclusive. - * @param begin The index of the beginning of the array. - * @param end The index of the end of the array. - */ - subarray(begin: number, end?: number): Uint8ClampedArray; - - /** - * Converts a number to a string by using the current locale. - */ - toLocaleString(): string; - - /** - * Returns a string representation of an array. - */ - toString(): string; - - [index: number]: number; -} - -interface Uint8ClampedArrayConstructor { - readonly prototype: Uint8ClampedArray; - new (length: number): Uint8ClampedArray; - new (array: ArrayLike): Uint8ClampedArray; - new (buffer: ArrayBuffer, byteOffset?: number, length?: number): Uint8ClampedArray; - - /** - * The size in bytes of each element in the array. - */ - readonly BYTES_PER_ELEMENT: number; - - /** - * Returns a new array from a set of elements. - * @param items A set of elements to include in the new array object. - */ - of(...items: number[]): Uint8ClampedArray; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: ArrayLike, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint8ClampedArray; -} -declare const Uint8ClampedArray: Uint8ClampedArrayConstructor; - -/** - * A typed array of 16-bit signed integer values. The contents are initialized to 0. If the - * requested number of bytes could not be allocated an exception is raised. - */ -interface Int16Array { - /** - * The size in bytes of each element in the array. - */ - readonly BYTES_PER_ELEMENT: number; - - /** - * The ArrayBuffer instance referenced by the array. - */ - readonly buffer: ArrayBuffer; - - /** - * The length in bytes of the array. - */ - readonly byteLength: number; - - /** - * The offset in bytes of the array. - */ - readonly byteOffset: number; - - /** - * Returns the this object after copying a section of the array identified by start and end - * to the same array starting at position target - * @param target If target is negative, it is treated as length+target where length is the - * length of the array. - * @param start If start is negative, it is treated as length+start. If end is negative, it - * is treated as length+end. - * @param end If not specified, length of the this object is used as its default value. - */ - copyWithin(target: number, start: number, end?: number): Int16Array; - - /** - * Determines whether all the members of an array satisfy the specified test. - * @param callbackfn A function that accepts up to three arguments. The every method calls - * the callbackfn function for each element in array1 until the callbackfn returns false, - * or until the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - every(callbackfn: (value: number, index: number, array: Int16Array) => boolean, thisArg?: any): boolean; - - /** - * Returns the this object after filling the section identified by start and end with value - * @param value value to fill array section with - * @param start index to start filling the array at. If start is negative, it is treated as - * length+start where length is the length of the array. - * @param end index to stop filling the array at. If end is negative, it is treated as - * length+end. - */ - fill(value: number, start?: number, end?: number): Int16Array; - - /** - * Returns the elements of an array that meet the condition specified in a callback function. - * @param callbackfn A function that accepts up to three arguments. The filter method calls - * the callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - filter(callbackfn: (value: number, index: number, array: Int16Array) => boolean, thisArg?: any): Int16Array; - - /** - * Returns the value of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; - - /** - * Returns the index of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; - - /** - * Performs the specified action for each element in an array. - * @param callbackfn A function that accepts up to three arguments. forEach calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - forEach(callbackfn: (value: number, index: number, array: Int16Array) => void, thisArg?: any): void; - - /** - * Returns the index of the first occurrence of a value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the - * search starts at index 0. - */ - indexOf(searchElement: number, fromIndex?: number): number; - - /** - * Adds all the elements of an array separated by the specified separator string. - * @param separator A string used to separate one element of an array from the next in the - * resulting String. If omitted, the array elements are separated with a comma. - */ - join(separator?: string): string; - - /** - * Returns the index of the last occurrence of a value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the - * search starts at index 0. - */ - lastIndexOf(searchElement: number, fromIndex?: number): number; - - /** - * The length of the array. - */ - readonly length: number; - - /** - * Calls a defined callback function on each element of an array, and returns an array that - * contains the results. - * @param callbackfn A function that accepts up to three arguments. The map method calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - map(callbackfn: (value: number, index: number, array: Int16Array) => number, thisArg?: any): Int16Array; - - /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next - * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the - * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Int16Array) => number, initialValue?: number): number; - - /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next - * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the - * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduce(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Int16Array) => U, initialValue: U): U; - - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an - * argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an - * argument instead of an array value. - */ - reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Int16Array) => number, initialValue?: number): number; - - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an - * argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduceRight(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Int16Array) => U, initialValue: U): U; - - /** - * Reverses the elements in an Array. - */ - reverse(): Int16Array; - - /** - * Sets a value or an array of values. - * @param index The index of the location to set. - * @param value The value to set. - */ - set(index: number, value: number): void; - - /** - * Sets a value or an array of values. - * @param array A typed or untyped array of values to set. - * @param offset The index in the current array at which the values are to be written. - */ - set(array: ArrayLike, offset?: number): void; - - /** - * Returns a section of an array. - * @param start The beginning of the specified portion of the array. - * @param end The end of the specified portion of the array. - */ - slice(start?: number, end?: number): Int16Array; - - /** - * Determines whether the specified callback function returns true for any element of an array. - * @param callbackfn A function that accepts up to three arguments. The some method calls the - * callbackfn function for each element in array1 until the callbackfn returns true, or until - * the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - some(callbackfn: (value: number, index: number, array: Int16Array) => boolean, thisArg?: any): boolean; - - /** - * Sorts an array. - * @param compareFn The name of the function used to determine the order of the elements. If - * omitted, the elements are sorted in ascending, ASCII character order. - */ - sort(compareFn?: (a: number, b: number) => number): Int16Array; - - /** - * Gets a new Int16Array view of the ArrayBuffer store for this array, referencing the elements - * at begin, inclusive, up to end, exclusive. - * @param begin The index of the beginning of the array. - * @param end The index of the end of the array. - */ - subarray(begin: number, end?: number): Int16Array; - - /** - * Converts a number to a string by using the current locale. - */ - toLocaleString(): string; - - /** - * Returns a string representation of an array. - */ - toString(): string; - - [index: number]: number; -} - -interface Int16ArrayConstructor { - readonly prototype: Int16Array; - new (length: number): Int16Array; - new (array: ArrayLike): Int16Array; - new (buffer: ArrayBuffer, byteOffset?: number, length?: number): Int16Array; - - /** - * The size in bytes of each element in the array. - */ - readonly BYTES_PER_ELEMENT: number; - - /** - * Returns a new array from a set of elements. - * @param items A set of elements to include in the new array object. - */ - of(...items: number[]): Int16Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: ArrayLike, mapfn?: (v: number, k: number) => number, thisArg?: any): Int16Array; - -} -declare const Int16Array: Int16ArrayConstructor; - -/** - * A typed array of 16-bit unsigned integer values. The contents are initialized to 0. If the - * requested number of bytes could not be allocated an exception is raised. - */ -interface Uint16Array { - /** - * The size in bytes of each element in the array. - */ - readonly BYTES_PER_ELEMENT: number; - - /** - * The ArrayBuffer instance referenced by the array. - */ - readonly buffer: ArrayBuffer; - - /** - * The length in bytes of the array. - */ - readonly byteLength: number; - - /** - * The offset in bytes of the array. - */ - readonly byteOffset: number; - - /** - * Returns the this object after copying a section of the array identified by start and end - * to the same array starting at position target - * @param target If target is negative, it is treated as length+target where length is the - * length of the array. - * @param start If start is negative, it is treated as length+start. If end is negative, it - * is treated as length+end. - * @param end If not specified, length of the this object is used as its default value. - */ - copyWithin(target: number, start: number, end?: number): Uint16Array; - - /** - * Determines whether all the members of an array satisfy the specified test. - * @param callbackfn A function that accepts up to three arguments. The every method calls - * the callbackfn function for each element in array1 until the callbackfn returns false, - * or until the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - every(callbackfn: (value: number, index: number, array: Uint16Array) => boolean, thisArg?: any): boolean; - - /** - * Returns the this object after filling the section identified by start and end with value - * @param value value to fill array section with - * @param start index to start filling the array at. If start is negative, it is treated as - * length+start where length is the length of the array. - * @param end index to stop filling the array at. If end is negative, it is treated as - * length+end. - */ - fill(value: number, start?: number, end?: number): Uint16Array; - - /** - * Returns the elements of an array that meet the condition specified in a callback function. - * @param callbackfn A function that accepts up to three arguments. The filter method calls - * the callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - filter(callbackfn: (value: number, index: number, array: Uint16Array) => boolean, thisArg?: any): Uint16Array; - - /** - * Returns the value of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; - - /** - * Returns the index of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; - - /** - * Performs the specified action for each element in an array. - * @param callbackfn A function that accepts up to three arguments. forEach calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - forEach(callbackfn: (value: number, index: number, array: Uint16Array) => void, thisArg?: any): void; - - /** - * Returns the index of the first occurrence of a value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the - * search starts at index 0. - */ - indexOf(searchElement: number, fromIndex?: number): number; - - /** - * Adds all the elements of an array separated by the specified separator string. - * @param separator A string used to separate one element of an array from the next in the - * resulting String. If omitted, the array elements are separated with a comma. - */ - join(separator?: string): string; - - /** - * Returns the index of the last occurrence of a value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the - * search starts at index 0. - */ - lastIndexOf(searchElement: number, fromIndex?: number): number; - - /** - * The length of the array. - */ - readonly length: number; - - /** - * Calls a defined callback function on each element of an array, and returns an array that - * contains the results. - * @param callbackfn A function that accepts up to three arguments. The map method calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - map(callbackfn: (value: number, index: number, array: Uint16Array) => number, thisArg?: any): Uint16Array; - - /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next - * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the - * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint16Array) => number, initialValue?: number): number; - - /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next - * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the - * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduce(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Uint16Array) => U, initialValue: U): U; - - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an - * argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an - * argument instead of an array value. - */ - reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint16Array) => number, initialValue?: number): number; - - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an - * argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduceRight(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Uint16Array) => U, initialValue: U): U; - - /** - * Reverses the elements in an Array. - */ - reverse(): Uint16Array; - - /** - * Sets a value or an array of values. - * @param index The index of the location to set. - * @param value The value to set. - */ - set(index: number, value: number): void; - - /** - * Sets a value or an array of values. - * @param array A typed or untyped array of values to set. - * @param offset The index in the current array at which the values are to be written. - */ - set(array: ArrayLike, offset?: number): void; - - /** - * Returns a section of an array. - * @param start The beginning of the specified portion of the array. - * @param end The end of the specified portion of the array. - */ - slice(start?: number, end?: number): Uint16Array; - - /** - * Determines whether the specified callback function returns true for any element of an array. - * @param callbackfn A function that accepts up to three arguments. The some method calls the - * callbackfn function for each element in array1 until the callbackfn returns true, or until - * the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - some(callbackfn: (value: number, index: number, array: Uint16Array) => boolean, thisArg?: any): boolean; - - /** - * Sorts an array. - * @param compareFn The name of the function used to determine the order of the elements. If - * omitted, the elements are sorted in ascending, ASCII character order. - */ - sort(compareFn?: (a: number, b: number) => number): Uint16Array; - - /** - * Gets a new Uint16Array view of the ArrayBuffer store for this array, referencing the elements - * at begin, inclusive, up to end, exclusive. - * @param begin The index of the beginning of the array. - * @param end The index of the end of the array. - */ - subarray(begin: number, end?: number): Uint16Array; - - /** - * Converts a number to a string by using the current locale. - */ - toLocaleString(): string; - - /** - * Returns a string representation of an array. - */ - toString(): string; - - [index: number]: number; -} - -interface Uint16ArrayConstructor { - readonly prototype: Uint16Array; - new (length: number): Uint16Array; - new (array: ArrayLike): Uint16Array; - new (buffer: ArrayBuffer, byteOffset?: number, length?: number): Uint16Array; - - /** - * The size in bytes of each element in the array. - */ - readonly BYTES_PER_ELEMENT: number; - - /** - * Returns a new array from a set of elements. - * @param items A set of elements to include in the new array object. - */ - of(...items: number[]): Uint16Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: ArrayLike, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint16Array; - -} -declare const Uint16Array: Uint16ArrayConstructor; -/** - * A typed array of 32-bit signed integer values. The contents are initialized to 0. If the - * requested number of bytes could not be allocated an exception is raised. - */ -interface Int32Array { - /** - * The size in bytes of each element in the array. - */ - readonly BYTES_PER_ELEMENT: number; - - /** - * The ArrayBuffer instance referenced by the array. - */ - readonly buffer: ArrayBuffer; - - /** - * The length in bytes of the array. - */ - readonly byteLength: number; - - /** - * The offset in bytes of the array. - */ - readonly byteOffset: number; - - /** - * Returns the this object after copying a section of the array identified by start and end - * to the same array starting at position target - * @param target If target is negative, it is treated as length+target where length is the - * length of the array. - * @param start If start is negative, it is treated as length+start. If end is negative, it - * is treated as length+end. - * @param end If not specified, length of the this object is used as its default value. - */ - copyWithin(target: number, start: number, end?: number): Int32Array; - - /** - * Determines whether all the members of an array satisfy the specified test. - * @param callbackfn A function that accepts up to three arguments. The every method calls - * the callbackfn function for each element in array1 until the callbackfn returns false, - * or until the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - every(callbackfn: (value: number, index: number, array: Int32Array) => boolean, thisArg?: any): boolean; - - /** - * Returns the this object after filling the section identified by start and end with value - * @param value value to fill array section with - * @param start index to start filling the array at. If start is negative, it is treated as - * length+start where length is the length of the array. - * @param end index to stop filling the array at. If end is negative, it is treated as - * length+end. - */ - fill(value: number, start?: number, end?: number): Int32Array; - - /** - * Returns the elements of an array that meet the condition specified in a callback function. - * @param callbackfn A function that accepts up to three arguments. The filter method calls - * the callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - filter(callbackfn: (value: number, index: number, array: Int32Array) => boolean, thisArg?: any): Int32Array; - - /** - * Returns the value of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; - - /** - * Returns the index of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; - - /** - * Performs the specified action for each element in an array. - * @param callbackfn A function that accepts up to three arguments. forEach calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - forEach(callbackfn: (value: number, index: number, array: Int32Array) => void, thisArg?: any): void; - - /** - * Returns the index of the first occurrence of a value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the - * search starts at index 0. - */ - indexOf(searchElement: number, fromIndex?: number): number; - - /** - * Adds all the elements of an array separated by the specified separator string. - * @param separator A string used to separate one element of an array from the next in the - * resulting String. If omitted, the array elements are separated with a comma. - */ - join(separator?: string): string; - - /** - * Returns the index of the last occurrence of a value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the - * search starts at index 0. - */ - lastIndexOf(searchElement: number, fromIndex?: number): number; - - /** - * The length of the array. - */ - readonly length: number; - - /** - * Calls a defined callback function on each element of an array, and returns an array that - * contains the results. - * @param callbackfn A function that accepts up to three arguments. The map method calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - map(callbackfn: (value: number, index: number, array: Int32Array) => number, thisArg?: any): Int32Array; - - /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next - * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the - * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Int32Array) => number, initialValue?: number): number; - - /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next - * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the - * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduce(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Int32Array) => U, initialValue: U): U; - - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an - * argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an - * argument instead of an array value. - */ - reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Int32Array) => number, initialValue?: number): number; - - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an - * argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduceRight(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Int32Array) => U, initialValue: U): U; - - /** - * Reverses the elements in an Array. - */ - reverse(): Int32Array; - - /** - * Sets a value or an array of values. - * @param index The index of the location to set. - * @param value The value to set. - */ - set(index: number, value: number): void; - - /** - * Sets a value or an array of values. - * @param array A typed or untyped array of values to set. - * @param offset The index in the current array at which the values are to be written. - */ - set(array: ArrayLike, offset?: number): void; - - /** - * Returns a section of an array. - * @param start The beginning of the specified portion of the array. - * @param end The end of the specified portion of the array. - */ - slice(start?: number, end?: number): Int32Array; - - /** - * Determines whether the specified callback function returns true for any element of an array. - * @param callbackfn A function that accepts up to three arguments. The some method calls the - * callbackfn function for each element in array1 until the callbackfn returns true, or until - * the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - some(callbackfn: (value: number, index: number, array: Int32Array) => boolean, thisArg?: any): boolean; - - /** - * Sorts an array. - * @param compareFn The name of the function used to determine the order of the elements. If - * omitted, the elements are sorted in ascending, ASCII character order. - */ - sort(compareFn?: (a: number, b: number) => number): Int32Array; - - /** - * Gets a new Int32Array view of the ArrayBuffer store for this array, referencing the elements - * at begin, inclusive, up to end, exclusive. - * @param begin The index of the beginning of the array. - * @param end The index of the end of the array. - */ - subarray(begin: number, end?: number): Int32Array; - - /** - * Converts a number to a string by using the current locale. - */ - toLocaleString(): string; - - /** - * Returns a string representation of an array. - */ - toString(): string; - - [index: number]: number; -} - -interface Int32ArrayConstructor { - readonly prototype: Int32Array; - new (length: number): Int32Array; - new (array: ArrayLike): Int32Array; - new (buffer: ArrayBuffer, byteOffset?: number, length?: number): Int32Array; - - /** - * The size in bytes of each element in the array. - */ - readonly BYTES_PER_ELEMENT: number; - - /** - * Returns a new array from a set of elements. - * @param items A set of elements to include in the new array object. - */ - of(...items: number[]): Int32Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: ArrayLike, mapfn?: (v: number, k: number) => number, thisArg?: any): Int32Array; -} -declare const Int32Array: Int32ArrayConstructor; - -/** - * A typed array of 32-bit unsigned integer values. The contents are initialized to 0. If the - * requested number of bytes could not be allocated an exception is raised. - */ -interface Uint32Array { - /** - * The size in bytes of each element in the array. - */ - readonly BYTES_PER_ELEMENT: number; - - /** - * The ArrayBuffer instance referenced by the array. - */ - readonly buffer: ArrayBuffer; - - /** - * The length in bytes of the array. - */ - readonly byteLength: number; - - /** - * The offset in bytes of the array. - */ - readonly byteOffset: number; - - /** - * Returns the this object after copying a section of the array identified by start and end - * to the same array starting at position target - * @param target If target is negative, it is treated as length+target where length is the - * length of the array. - * @param start If start is negative, it is treated as length+start. If end is negative, it - * is treated as length+end. - * @param end If not specified, length of the this object is used as its default value. - */ - copyWithin(target: number, start: number, end?: number): Uint32Array; - - /** - * Determines whether all the members of an array satisfy the specified test. - * @param callbackfn A function that accepts up to three arguments. The every method calls - * the callbackfn function for each element in array1 until the callbackfn returns false, - * or until the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - every(callbackfn: (value: number, index: number, array: Uint32Array) => boolean, thisArg?: any): boolean; - - /** - * Returns the this object after filling the section identified by start and end with value - * @param value value to fill array section with - * @param start index to start filling the array at. If start is negative, it is treated as - * length+start where length is the length of the array. - * @param end index to stop filling the array at. If end is negative, it is treated as - * length+end. - */ - fill(value: number, start?: number, end?: number): Uint32Array; - - /** - * Returns the elements of an array that meet the condition specified in a callback function. - * @param callbackfn A function that accepts up to three arguments. The filter method calls - * the callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - filter(callbackfn: (value: number, index: number, array: Uint32Array) => boolean, thisArg?: any): Uint32Array; - - /** - * Returns the value of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; - - /** - * Returns the index of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; - - /** - * Performs the specified action for each element in an array. - * @param callbackfn A function that accepts up to three arguments. forEach calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - forEach(callbackfn: (value: number, index: number, array: Uint32Array) => void, thisArg?: any): void; - - /** - * Returns the index of the first occurrence of a value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the - * search starts at index 0. - */ - indexOf(searchElement: number, fromIndex?: number): number; - - /** - * Adds all the elements of an array separated by the specified separator string. - * @param separator A string used to separate one element of an array from the next in the - * resulting String. If omitted, the array elements are separated with a comma. - */ - join(separator?: string): string; - - /** - * Returns the index of the last occurrence of a value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the - * search starts at index 0. - */ - lastIndexOf(searchElement: number, fromIndex?: number): number; - - /** - * The length of the array. - */ - readonly length: number; - - /** - * Calls a defined callback function on each element of an array, and returns an array that - * contains the results. - * @param callbackfn A function that accepts up to three arguments. The map method calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - map(callbackfn: (value: number, index: number, array: Uint32Array) => number, thisArg?: any): Uint32Array; - - /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next - * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the - * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint32Array) => number, initialValue?: number): number; - - /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next - * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the - * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduce(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Uint32Array) => U, initialValue: U): U; - - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an - * argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an - * argument instead of an array value. - */ - reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint32Array) => number, initialValue?: number): number; - - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an - * argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduceRight(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Uint32Array) => U, initialValue: U): U; - - /** - * Reverses the elements in an Array. - */ - reverse(): Uint32Array; - - /** - * Sets a value or an array of values. - * @param index The index of the location to set. - * @param value The value to set. - */ - set(index: number, value: number): void; - - /** - * Sets a value or an array of values. - * @param array A typed or untyped array of values to set. - * @param offset The index in the current array at which the values are to be written. - */ - set(array: ArrayLike, offset?: number): void; - - /** - * Returns a section of an array. - * @param start The beginning of the specified portion of the array. - * @param end The end of the specified portion of the array. - */ - slice(start?: number, end?: number): Uint32Array; - - /** - * Determines whether the specified callback function returns true for any element of an array. - * @param callbackfn A function that accepts up to three arguments. The some method calls the - * callbackfn function for each element in array1 until the callbackfn returns true, or until - * the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - some(callbackfn: (value: number, index: number, array: Uint32Array) => boolean, thisArg?: any): boolean; - - /** - * Sorts an array. - * @param compareFn The name of the function used to determine the order of the elements. If - * omitted, the elements are sorted in ascending, ASCII character order. - */ - sort(compareFn?: (a: number, b: number) => number): Uint32Array; - - /** - * Gets a new Uint32Array view of the ArrayBuffer store for this array, referencing the elements - * at begin, inclusive, up to end, exclusive. - * @param begin The index of the beginning of the array. - * @param end The index of the end of the array. - */ - subarray(begin: number, end?: number): Uint32Array; - - /** - * Converts a number to a string by using the current locale. - */ - toLocaleString(): string; - - /** - * Returns a string representation of an array. - */ - toString(): string; - - [index: number]: number; -} - -interface Uint32ArrayConstructor { - readonly prototype: Uint32Array; - new (length: number): Uint32Array; - new (array: ArrayLike): Uint32Array; - new (buffer: ArrayBuffer, byteOffset?: number, length?: number): Uint32Array; - - /** - * The size in bytes of each element in the array. - */ - readonly BYTES_PER_ELEMENT: number; - - /** - * Returns a new array from a set of elements. - * @param items A set of elements to include in the new array object. - */ - of(...items: number[]): Uint32Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: ArrayLike, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint32Array; -} -declare const Uint32Array: Uint32ArrayConstructor; - -/** - * A typed array of 32-bit float values. The contents are initialized to 0. If the requested number - * of bytes could not be allocated an exception is raised. - */ -interface Float32Array { - /** - * The size in bytes of each element in the array. - */ - readonly BYTES_PER_ELEMENT: number; - - /** - * The ArrayBuffer instance referenced by the array. - */ - readonly buffer: ArrayBuffer; - - /** - * The length in bytes of the array. - */ - readonly byteLength: number; - - /** - * The offset in bytes of the array. - */ - readonly byteOffset: number; - - /** - * Returns the this object after copying a section of the array identified by start and end - * to the same array starting at position target - * @param target If target is negative, it is treated as length+target where length is the - * length of the array. - * @param start If start is negative, it is treated as length+start. If end is negative, it - * is treated as length+end. - * @param end If not specified, length of the this object is used as its default value. - */ - copyWithin(target: number, start: number, end?: number): Float32Array; - - /** - * Determines whether all the members of an array satisfy the specified test. - * @param callbackfn A function that accepts up to three arguments. The every method calls - * the callbackfn function for each element in array1 until the callbackfn returns false, - * or until the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - every(callbackfn: (value: number, index: number, array: Float32Array) => boolean, thisArg?: any): boolean; - - /** - * Returns the this object after filling the section identified by start and end with value - * @param value value to fill array section with - * @param start index to start filling the array at. If start is negative, it is treated as - * length+start where length is the length of the array. - * @param end index to stop filling the array at. If end is negative, it is treated as - * length+end. - */ - fill(value: number, start?: number, end?: number): Float32Array; - - /** - * Returns the elements of an array that meet the condition specified in a callback function. - * @param callbackfn A function that accepts up to three arguments. The filter method calls - * the callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - filter(callbackfn: (value: number, index: number, array: Float32Array) => boolean, thisArg?: any): Float32Array; - - /** - * Returns the value of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; - - /** - * Returns the index of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; - - /** - * Performs the specified action for each element in an array. - * @param callbackfn A function that accepts up to three arguments. forEach calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - forEach(callbackfn: (value: number, index: number, array: Float32Array) => void, thisArg?: any): void; - - /** - * Returns the index of the first occurrence of a value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the - * search starts at index 0. - */ - indexOf(searchElement: number, fromIndex?: number): number; - - /** - * Adds all the elements of an array separated by the specified separator string. - * @param separator A string used to separate one element of an array from the next in the - * resulting String. If omitted, the array elements are separated with a comma. - */ - join(separator?: string): string; - - /** - * Returns the index of the last occurrence of a value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the - * search starts at index 0. - */ - lastIndexOf(searchElement: number, fromIndex?: number): number; - - /** - * The length of the array. - */ - readonly length: number; - - /** - * Calls a defined callback function on each element of an array, and returns an array that - * contains the results. - * @param callbackfn A function that accepts up to three arguments. The map method calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - map(callbackfn: (value: number, index: number, array: Float32Array) => number, thisArg?: any): Float32Array; - - /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next - * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the - * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Float32Array) => number, initialValue?: number): number; - - /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next - * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the - * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduce(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Float32Array) => U, initialValue: U): U; - - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an - * argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an - * argument instead of an array value. - */ - reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Float32Array) => number, initialValue?: number): number; - - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an - * argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduceRight(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Float32Array) => U, initialValue: U): U; - - /** - * Reverses the elements in an Array. - */ - reverse(): Float32Array; - - /** - * Sets a value or an array of values. - * @param index The index of the location to set. - * @param value The value to set. - */ - set(index: number, value: number): void; - - /** - * Sets a value or an array of values. - * @param array A typed or untyped array of values to set. - * @param offset The index in the current array at which the values are to be written. - */ - set(array: ArrayLike, offset?: number): void; - - /** - * Returns a section of an array. - * @param start The beginning of the specified portion of the array. - * @param end The end of the specified portion of the array. - */ - slice(start?: number, end?: number): Float32Array; - - /** - * Determines whether the specified callback function returns true for any element of an array. - * @param callbackfn A function that accepts up to three arguments. The some method calls the - * callbackfn function for each element in array1 until the callbackfn returns true, or until - * the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - some(callbackfn: (value: number, index: number, array: Float32Array) => boolean, thisArg?: any): boolean; - - /** - * Sorts an array. - * @param compareFn The name of the function used to determine the order of the elements. If - * omitted, the elements are sorted in ascending, ASCII character order. - */ - sort(compareFn?: (a: number, b: number) => number): Float32Array; - - /** - * Gets a new Float32Array view of the ArrayBuffer store for this array, referencing the elements - * at begin, inclusive, up to end, exclusive. - * @param begin The index of the beginning of the array. - * @param end The index of the end of the array. - */ - subarray(begin: number, end?: number): Float32Array; - - /** - * Converts a number to a string by using the current locale. - */ - toLocaleString(): string; - - /** - * Returns a string representation of an array. - */ - toString(): string; - - [index: number]: number; -} - -interface Float32ArrayConstructor { - readonly prototype: Float32Array; - new (length: number): Float32Array; - new (array: ArrayLike): Float32Array; - new (buffer: ArrayBuffer, byteOffset?: number, length?: number): Float32Array; - - /** - * The size in bytes of each element in the array. - */ - readonly BYTES_PER_ELEMENT: number; - - /** - * Returns a new array from a set of elements. - * @param items A set of elements to include in the new array object. - */ - of(...items: number[]): Float32Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: ArrayLike, mapfn?: (v: number, k: number) => number, thisArg?: any): Float32Array; - -} -declare const Float32Array: Float32ArrayConstructor; - -/** - * A typed array of 64-bit float values. The contents are initialized to 0. If the requested - * number of bytes could not be allocated an exception is raised. - */ -interface Float64Array { - /** - * The size in bytes of each element in the array. - */ - readonly BYTES_PER_ELEMENT: number; - - /** - * The ArrayBuffer instance referenced by the array. - */ - readonly buffer: ArrayBuffer; - - /** - * The length in bytes of the array. - */ - readonly byteLength: number; - - /** - * The offset in bytes of the array. - */ - readonly byteOffset: number; - - /** - * Returns the this object after copying a section of the array identified by start and end - * to the same array starting at position target - * @param target If target is negative, it is treated as length+target where length is the - * length of the array. - * @param start If start is negative, it is treated as length+start. If end is negative, it - * is treated as length+end. - * @param end If not specified, length of the this object is used as its default value. - */ - copyWithin(target: number, start: number, end?: number): Float64Array; - - /** - * Determines whether all the members of an array satisfy the specified test. - * @param callbackfn A function that accepts up to three arguments. The every method calls - * the callbackfn function for each element in array1 until the callbackfn returns false, - * or until the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - every(callbackfn: (value: number, index: number, array: Float64Array) => boolean, thisArg?: any): boolean; - - /** - * Returns the this object after filling the section identified by start and end with value - * @param value value to fill array section with - * @param start index to start filling the array at. If start is negative, it is treated as - * length+start where length is the length of the array. - * @param end index to stop filling the array at. If end is negative, it is treated as - * length+end. - */ - fill(value: number, start?: number, end?: number): Float64Array; - - /** - * Returns the elements of an array that meet the condition specified in a callback function. - * @param callbackfn A function that accepts up to three arguments. The filter method calls - * the callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - filter(callbackfn: (value: number, index: number, array: Float64Array) => boolean, thisArg?: any): Float64Array; - - /** - * Returns the value of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; - - /** - * Returns the index of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; - - /** - * Performs the specified action for each element in an array. - * @param callbackfn A function that accepts up to three arguments. forEach calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - forEach(callbackfn: (value: number, index: number, array: Float64Array) => void, thisArg?: any): void; - - /** - * Returns the index of the first occurrence of a value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the - * search starts at index 0. - */ - indexOf(searchElement: number, fromIndex?: number): number; - - /** - * Adds all the elements of an array separated by the specified separator string. - * @param separator A string used to separate one element of an array from the next in the - * resulting String. If omitted, the array elements are separated with a comma. - */ - join(separator?: string): string; - - /** - * Returns the index of the last occurrence of a value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the - * search starts at index 0. - */ - lastIndexOf(searchElement: number, fromIndex?: number): number; - - /** - * The length of the array. - */ - readonly length: number; - - /** - * Calls a defined callback function on each element of an array, and returns an array that - * contains the results. - * @param callbackfn A function that accepts up to three arguments. The map method calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - map(callbackfn: (value: number, index: number, array: Float64Array) => number, thisArg?: any): Float64Array; - - /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next - * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the - * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Float64Array) => number, initialValue?: number): number; - - /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next - * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the - * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduce(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Float64Array) => U, initialValue: U): U; - - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an - * argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an - * argument instead of an array value. - */ - reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Float64Array) => number, initialValue?: number): number; - - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an - * argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduceRight(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Float64Array) => U, initialValue: U): U; - - /** - * Reverses the elements in an Array. - */ - reverse(): Float64Array; - - /** - * Sets a value or an array of values. - * @param index The index of the location to set. - * @param value The value to set. - */ - set(index: number, value: number): void; - - /** - * Sets a value or an array of values. - * @param array A typed or untyped array of values to set. - * @param offset The index in the current array at which the values are to be written. - */ - set(array: ArrayLike, offset?: number): void; - - /** - * Returns a section of an array. - * @param start The beginning of the specified portion of the array. - * @param end The end of the specified portion of the array. - */ - slice(start?: number, end?: number): Float64Array; - - /** - * Determines whether the specified callback function returns true for any element of an array. - * @param callbackfn A function that accepts up to three arguments. The some method calls the - * callbackfn function for each element in array1 until the callbackfn returns true, or until - * the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - some(callbackfn: (value: number, index: number, array: Float64Array) => boolean, thisArg?: any): boolean; - - /** - * Sorts an array. - * @param compareFn The name of the function used to determine the order of the elements. If - * omitted, the elements are sorted in ascending, ASCII character order. - */ - sort(compareFn?: (a: number, b: number) => number): Float64Array; - - /** - * Gets a new Float64Array view of the ArrayBuffer store for this array, referencing the elements - * at begin, inclusive, up to end, exclusive. - * @param begin The index of the beginning of the array. - * @param end The index of the end of the array. - */ - subarray(begin: number, end?: number): Float64Array; - - /** - * Converts a number to a string by using the current locale. - */ - toLocaleString(): string; - - /** - * Returns a string representation of an array. - */ - toString(): string; - - [index: number]: number; -} - -interface Float64ArrayConstructor { - readonly prototype: Float64Array; - new (length: number): Float64Array; - new (array: ArrayLike): Float64Array; - new (buffer: ArrayBuffer, byteOffset?: number, length?: number): Float64Array; - - /** - * The size in bytes of each element in the array. - */ - readonly BYTES_PER_ELEMENT: number; - - /** - * Returns a new array from a set of elements. - * @param items A set of elements to include in the new array object. - */ - of(...items: number[]): Float64Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: ArrayLike, mapfn?: (v: number, k: number) => number, thisArg?: any): Float64Array; -} -declare const Float64Array: Float64ArrayConstructor; -declare type PropertyKey = string | number | symbol; - -interface Symbol { - /** Returns a string representation of an object. */ - toString(): string; - - /** Returns the primitive value of the specified object. */ - valueOf(): Object; - - readonly [Symbol.toStringTag]: "Symbol"; -} - -interface SymbolConstructor { - /** - * A reference to the prototype. - */ - readonly prototype: Symbol; - - /** - * Returns a new unique Symbol value. - * @param description Description of the new Symbol object. - */ - (description?: string|number): symbol; - - /** - * Returns a Symbol object from the global symbol registry matching the given key if found. - * Otherwise, returns a new symbol with this key. - * @param key key to search for. - */ - for(key: string): symbol; - - /** - * Returns a key from the global symbol registry matching the given Symbol if found. - * Otherwise, returns a undefined. - * @param sym Symbol to find the key for. - */ - keyFor(sym: symbol): string; - - // Well-known Symbols - - /** - * A method that determines if a constructor object recognizes an object as one of the - * constructor’s instances. Called by the semantics of the instanceof operator. - */ - readonly hasInstance: symbol; - - /** - * A Boolean value that if true indicates that an object should flatten to its array elements - * by Array.prototype.concat. - */ - readonly isConcatSpreadable: symbol; - - /** - * A method that returns the default iterator for an object. Called by the semantics of the - * for-of statement. - */ - readonly iterator: symbol; - - /** - * A regular expression method that matches the regular expression against a string. Called - * by the String.prototype.match method. - */ - readonly match: symbol; - - /** - * A regular expression method that replaces matched substrings of a string. Called by the - * String.prototype.replace method. - */ - readonly replace: symbol; - - /** - * A regular expression method that returns the index within a string that matches the - * regular expression. Called by the String.prototype.search method. - */ - readonly search: symbol; - - /** - * A function valued property that is the constructor function that is used to create - * derived objects. - */ - readonly species: symbol; - - /** - * A regular expression method that splits a string at the indices that match the regular - * expression. Called by the String.prototype.split method. - */ - readonly split: symbol; - - /** - * A method that converts an object to a corresponding primitive value. - * Called by the ToPrimitive abstract operation. - */ - readonly toPrimitive: symbol; - - /** - * A String value that is used in the creation of the default string description of an object. - * Called by the built-in method Object.prototype.toString. - */ - readonly toStringTag: symbol; - - /** - * An Object whose own property names are property names that are excluded from the 'with' - * environment bindings of the associated objects. - */ - readonly unscopables: symbol; -} -declare var Symbol: SymbolConstructor; - -interface Object { - /** - * Determines whether an object has a property with the specified name. - * @param v A property name. - */ - hasOwnProperty(v: PropertyKey): boolean; - - /** - * Determines whether a specified property is enumerable. - * @param v A property name. - */ - propertyIsEnumerable(v: PropertyKey): boolean; -} - -interface ObjectConstructor { - /** - * Copy the values of all of the enumerable own properties from one or more source objects to a - * target object. Returns the target object. - * @param target The target object to copy to. - * @param source The source object from which to copy properties. - */ - assign(target: T, source: U): T & U; - - /** - * Copy the values of all of the enumerable own properties from one or more source objects to a - * target object. Returns the target object. - * @param target The target object to copy to. - * @param source1 The first source object from which to copy properties. - * @param source2 The second source object from which to copy properties. - */ - assign(target: T, source1: U, source2: V): T & U & V; - - /** - * Copy the values of all of the enumerable own properties from one or more source objects to a - * target object. Returns the target object. - * @param target The target object to copy to. - * @param source1 The first source object from which to copy properties. - * @param source2 The second source object from which to copy properties. - * @param source3 The third source object from which to copy properties. - */ - assign(target: T, source1: U, source2: V, source3: W): T & U & V & W; - - /** - * Copy the values of all of the enumerable own properties from one or more source objects to a - * target object. Returns the target object. - * @param target The target object to copy to. - * @param sources One or more source objects from which to copy properties - */ - assign(target: any, ...sources: any[]): any; - - /** - * Returns an array of all symbol properties found directly on object o. - * @param o Object to retrieve the symbols from. - */ - getOwnPropertySymbols(o: any): symbol[]; - - /** - * Returns true if the values are the same value, false otherwise. - * @param value1 The first value. - * @param value2 The second value. - */ - is(value1: any, value2: any): boolean; - - /** - * Sets the prototype of a specified object o to object proto or null. Returns the object o. - * @param o The object to change its prototype. - * @param proto The value of the new prototype or null. - */ - setPrototypeOf(o: any, proto: any): any; - - /** - * Gets the own property descriptor of the specified object. - * An own property descriptor is one that is defined directly on the object and is not - * inherited from the object's prototype. - * @param o Object that contains the property. - * @param p Name of the property. - */ - getOwnPropertyDescriptor(o: any, propertyKey: PropertyKey): PropertyDescriptor; - - /** - * Adds a property to an object, or modifies attributes of an existing property. - * @param o Object on which to add or modify the property. This can be a native JavaScript - * object (that is, a user-defined object or a built in object) or a DOM object. - * @param p The property name. - * @param attributes Descriptor for the property. It can be for a data property or an accessor - * property. - */ - defineProperty(o: any, propertyKey: PropertyKey, attributes: PropertyDescriptor): any; -} - -interface Function { - /** - * Returns the name of the function. Function names are read-only and can not be changed. - */ - readonly name: string; - - /** - * Determines whether the given value inherits from this function if this function was used - * as a constructor function. - * - * A constructor function can control which objects are recognized as its instances by - * 'instanceof' by overriding this method. - */ - [Symbol.hasInstance](value: any): boolean; -} - -interface NumberConstructor { - /** - * The value of Number.EPSILON is the difference between 1 and the smallest value greater than 1 - * that is representable as a Number value, which is approximately: - * 2.2204460492503130808472633361816 x 10‍−‍16. - */ - readonly EPSILON: number; - - /** - * Returns true if passed value is finite. - * Unlike the global isFininte, Number.isFinite doesn't forcibly convert the parameter to a - * number. Only finite values of the type number, result in true. - * @param number A numeric value. - */ - isFinite(number: number): boolean; - - /** - * Returns true if the value passed is an integer, false otherwise. - * @param number A numeric value. - */ - isInteger(number: number): boolean; - - /** - * Returns a Boolean value that indicates whether a value is the reserved value NaN (not a - * number). Unlike the global isNaN(), Number.isNaN() doesn't forcefully convert the parameter - * to a number. Only values of the type number, that are also NaN, result in true. - * @param number A numeric value. - */ - isNaN(number: number): boolean; - - /** - * Returns true if the value passed is a safe integer. - * @param number A numeric value. - */ - isSafeInteger(number: number): boolean; - - /** - * The value of the largest integer n such that n and n + 1 are both exactly representable as - * a Number value. - * The value of Number.MIN_SAFE_INTEGER is 9007199254740991 2^53 − 1. - */ - readonly MAX_SAFE_INTEGER: number; - - /** - * The value of the smallest integer n such that n and n − 1 are both exactly representable as - * a Number value. - * The value of Number.MIN_SAFE_INTEGER is −9007199254740991 (−(2^53 − 1)). - */ - readonly MIN_SAFE_INTEGER: number; - - /** - * Converts a string to a floating-point number. - * @param string A string that contains a floating-point number. - */ - parseFloat(string: string): number; - - /** - * Converts A string to an integer. - * @param s A string to convert into a number. - * @param radix A value between 2 and 36 that specifies the base of the number in numString. - * If this argument is not supplied, strings with a prefix of '0x' are considered hexadecimal. - * All other strings are considered decimal. - */ - parseInt(string: string, radix?: number): number; -} - -interface Array { - /** Iterator */ - [Symbol.iterator](): IterableIterator; - - /** - * Returns an object whose properties have the value 'true' - * when they will be absent when used in a 'with' statement. - */ - [Symbol.unscopables](): { - copyWithin: boolean; - entries: boolean; - fill: boolean; - find: boolean; - findIndex: boolean; - keys: boolean; - values: boolean; - }; - - /** - * Returns an array of key, value pairs for every entry in the array - */ - entries(): IterableIterator<[number, T]>; - - /** - * Returns an list of keys in the array - */ - keys(): IterableIterator; - - /** - * Returns an list of values in the array - */ - values(): IterableIterator; - - /** - * Returns the value of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - find(predicate: (value: T, index: number, obj: Array) => boolean, thisArg?: any): T; - - /** - * Returns the index of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - findIndex(predicate: (value: T) => boolean, thisArg?: any): number; - - /** - * Returns the this object after filling the section identified by start and end with value - * @param value value to fill array section with - * @param start index to start filling the array at. If start is negative, it is treated as - * length+start where length is the length of the array. - * @param end index to stop filling the array at. If end is negative, it is treated as - * length+end. - */ - fill(value: T, start?: number, end?: number): T[]; - - /** - * Returns the this object after copying a section of the array identified by start and end - * to the same array starting at position target - * @param target If target is negative, it is treated as length+target where length is the - * length of the array. - * @param start If start is negative, it is treated as length+start. If end is negative, it - * is treated as length+end. - * @param end If not specified, length of the this object is used as its default value. - */ - copyWithin(target: number, start: number, end?: number): T[]; -} - -interface IArguments { - /** Iterator */ - [Symbol.iterator](): IterableIterator; -} - -interface ArrayConstructor { - /** - * Creates an array from an array-like object. - * @param arrayLike An array-like object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): Array; - - /** - * Creates an array from an iterable object. - * @param iterable An iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(iterable: Iterable, mapfn: (v: T, k: number) => U, thisArg?: any): Array; - - /** - * Creates an array from an array-like object. - * @param arrayLike An array-like object to convert to an array. - */ - from(arrayLike: ArrayLike): Array; - - /** - * Creates an array from an iterable object. - * @param iterable An iterable object to convert to an array. - */ - from(iterable: Iterable): Array; - - /** - * Returns a new array from a set of elements. - * @param items A set of elements to include in the new array object. - */ - of(...items: T[]): Array; -} - -interface String { - /** Iterator */ - [Symbol.iterator](): IterableIterator; - - /** - * Returns a nonnegative integer Number less than 1114112 (0x110000) that is the code point - * value of the UTF-16 encoded code point starting at the string element at position pos in - * the String resulting from converting this object to a String. - * If there is no element at that position, the result is undefined. - * If a valid UTF-16 surrogate pair does not begin at pos, the result is the code unit at pos. - */ - codePointAt(pos: number): number; - - /** - * Returns true if searchString appears as a substring of the result of converting this - * object to a String, at one or more positions that are - * greater than or equal to position; otherwise, returns false. - * @param searchString search string - * @param position If position is undefined, 0 is assumed, so as to search all of the String. - */ - includes(searchString: string, position?: number): boolean; - - /** - * Returns true if the sequence of elements of searchString converted to a String is the - * same as the corresponding elements of this object (converted to a String) starting at - * endPosition – length(this). Otherwise returns false. - */ - endsWith(searchString: string, endPosition?: number): boolean; - - /** - * Returns the String value result of normalizing the string into the normalization form - * named by form as specified in Unicode Standard Annex #15, Unicode Normalization Forms. - * @param form Applicable values: "NFC", "NFD", "NFKC", or "NFKD", If not specified default - * is "NFC" - */ - normalize(form?: string): string; - - /** - * Returns a String value that is made from count copies appended together. If count is 0, - * T is the empty String is returned. - * @param count number of copies to append - */ - repeat(count: number): string; - - /** - * Returns true if the sequence of elements of searchString converted to a String is the - * same as the corresponding elements of this object (converted to a String) starting at - * position. Otherwise returns false. - */ - startsWith(searchString: string, position?: number): boolean; - - // Overloads for objects with methods of well-known symbols. - - /** - * Matches a string an object that supports being matched against, and returns an array containing the results of that search. - * @param matcher An object that supports being matched against. - */ - match(matcher: { [Symbol.match](string: string): RegExpMatchArray; }): RegExpMatchArray; - - /** - * Replaces text in a string, using an object that supports replacement within a string. - * @param searchValue A object can search for and replace matches within a string. - * @param replaceValue A string containing the text to replace for every successful match of searchValue in this string. - */ - replace(searchValue: { [Symbol.replace](string: string, replaceValue: string): string; }, replaceValue: string): string; - - /** - * Replaces text in a string, using an object that supports replacement within a string. - * @param searchValue A object can search for and replace matches within a string. - * @param replacer A function that returns the replacement text. - */ - replace(searchValue: { [Symbol.replace](string: string, replacer: (substring: string, ...args: any[]) => string): string; }, replacer: (substring: string, ...args: any[]) => string): string; - - /** - * Finds the first substring match in a regular expression search. - * @param searcher An object which supports searching within a string. - */ - search(searcher: { [Symbol.search](string: string): number; }): number; - - /** - * Split a string into substrings using the specified separator and return them as an array. - * @param splitter An object that can split a string. - * @param limit A value used to limit the number of elements returned in the array. - */ - split(splitter: { [Symbol.split](string: string, limit?: number): string[]; }, limit?: number): string[]; - - /** - * Returns an HTML anchor element and sets the name attribute to the text value - * @param name - */ - anchor(name: string): string; - - /** Returns a HTML element */ - big(): string; - - /** Returns a HTML element */ - blink(): string; - - /** Returns a HTML element */ - bold(): string; - - /** Returns a HTML element */ - fixed(): string - - /** Returns a HTML element and sets the color attribute value */ - fontcolor(color: string): string - - /** Returns a HTML element and sets the size attribute value */ - fontsize(size: number): string; - - /** Returns a HTML element and sets the size attribute value */ - fontsize(size: string): string; - - /** Returns an HTML element */ - italics(): string; - - /** Returns an HTML element and sets the href attribute value */ - link(url: string): string; - - /** Returns a HTML element */ - small(): string; - - /** Returns a HTML element */ - strike(): string; - - /** Returns a HTML element */ - sub(): string; - - /** Returns a HTML element */ - sup(): string; -} - -interface StringConstructor { - /** - * Return the String value whose elements are, in order, the elements in the List elements. - * If length is 0, the empty string is returned. - */ - fromCodePoint(...codePoints: number[]): string; - - /** - * String.raw is intended for use as a tag function of a Tagged Template String. When called - * as such the first argument will be a well formed template call site object and the rest - * parameter will contain the substitution values. - * @param template A well-formed template string call site representation. - * @param substitutions A set of substitution values. - */ - raw(template: TemplateStringsArray, ...substitutions: any[]): string; -} - -interface IteratorResult { - done: boolean; - value?: T; -} - -interface Iterator { - next(value?: any): IteratorResult; - return?(value?: any): IteratorResult; - throw?(e?: any): IteratorResult; -} - -interface Iterable { - [Symbol.iterator](): Iterator; -} - -interface IterableIterator extends Iterator { - [Symbol.iterator](): IterableIterator; -} - -interface GeneratorFunction extends Function { - readonly [Symbol.toStringTag]: "GeneratorFunction"; -} - -interface GeneratorFunctionConstructor { - /** - * Creates a new Generator function. - * @param args A list of arguments the function accepts. - */ - new (...args: string[]): GeneratorFunction; - (...args: string[]): GeneratorFunction; - readonly prototype: GeneratorFunction; -} -declare var GeneratorFunction: GeneratorFunctionConstructor; - -interface Math { - /** - * Returns the number of leading zero bits in the 32-bit binary representation of a number. - * @param x A numeric expression. - */ - clz32(x: number): number; - - /** - * Returns the result of 32-bit multiplication of two numbers. - * @param x First number - * @param y Second number - */ - imul(x: number, y: number): number; - - /** - * Returns the sign of the x, indicating whether x is positive, negative or zero. - * @param x The numeric expression to test - */ - sign(x: number): number; - - /** - * Returns the base 10 logarithm of a number. - * @param x A numeric expression. - */ - log10(x: number): number; - - /** - * Returns the base 2 logarithm of a number. - * @param x A numeric expression. - */ - log2(x: number): number; - - /** - * Returns the natural logarithm of 1 + x. - * @param x A numeric expression. - */ - log1p(x: number): number; - - /** - * Returns the result of (e^x - 1) of x (e raised to the power of x, where e is the base of - * the natural logarithms). - * @param x A numeric expression. - */ - expm1(x: number): number; - - /** - * Returns the hyperbolic cosine of a number. - * @param x A numeric expression that contains an angle measured in radians. - */ - cosh(x: number): number; - - /** - * Returns the hyperbolic sine of a number. - * @param x A numeric expression that contains an angle measured in radians. - */ - sinh(x: number): number; - - /** - * Returns the hyperbolic tangent of a number. - * @param x A numeric expression that contains an angle measured in radians. - */ - tanh(x: number): number; - - /** - * Returns the inverse hyperbolic cosine of a number. - * @param x A numeric expression that contains an angle measured in radians. - */ - acosh(x: number): number; - - /** - * Returns the inverse hyperbolic sine of a number. - * @param x A numeric expression that contains an angle measured in radians. - */ - asinh(x: number): number; - - /** - * Returns the inverse hyperbolic tangent of a number. - * @param x A numeric expression that contains an angle measured in radians. - */ - atanh(x: number): number; - - /** - * Returns the square root of the sum of squares of its arguments. - * @param values Values to compute the square root for. - * If no arguments are passed, the result is +0. - * If there is only one argument, the result is the absolute value. - * If any argument is +Infinity or -Infinity, the result is +Infinity. - * If any argument is NaN, the result is NaN. - * If all arguments are either +0 or −0, the result is +0. - */ - hypot(...values: number[] ): number; - - /** - * Returns the integral part of the a numeric expression, x, removing any fractional digits. - * If x is already an integer, the result is x. - * @param x A numeric expression. - */ - trunc(x: number): number; - - /** - * Returns the nearest single precision float representation of a number. - * @param x A numeric expression. - */ - fround(x: number): number; - - /** - * Returns an implementation-dependent approximation to the cube root of number. - * @param x A numeric expression. - */ - cbrt(x: number): number; - - readonly [Symbol.toStringTag]: "Math"; -} - -interface Date { - /** - * Converts a Date object to a string. - */ - [Symbol.toPrimitive](hint: "default"): string; - /** - * Converts a Date object to a string. - */ - [Symbol.toPrimitive](hint: "string"): string; - /** - * Converts a Date object to a number. - */ - [Symbol.toPrimitive](hint: "number"): number; - /** - * Converts a Date object to a string or number. - * - * @param hint The strings "number", "string", or "default" to specify what primitive to return. - * - * @throws {TypeError} If 'hint' was given something other than "number", "string", or "default". - * @returns A number if 'hint' was "number", a string if 'hint' was "string" or "default". - */ - [Symbol.toPrimitive](hint: string): string | number; -} - -interface RegExp { - /** - * Matches a string with this regular expression, and returns an array containing the results of - * that search. - * @param string A string to search within. - */ - [Symbol.match](string: string): RegExpMatchArray; - - /** - * Replaces text in a string, using this regular expression. - * @param string A String object or string literal whose contents matching against - * this regular expression will be replaced - * @param replaceValue A String object or string literal containing the text to replace for every - * successful match of this regular expression. - */ - [Symbol.replace](string: string, replaceValue: string): string; - - /** - * Replaces text in a string, using this regular expression. - * @param string A String object or string literal whose contents matching against - * this regular expression will be replaced - * @param replacer A function that returns the replacement text. - */ - [Symbol.replace](string: string, replacer: (substring: string, ...args: any[]) => string): string; - - /** - * Finds the position beginning first substring match in a regular expression search - * using this regular expression. - * - * @param string The string to search within. - */ - [Symbol.search](string: string): number; - - /** - * Returns an array of substrings that were delimited by strings in the original input that - * match against this regular expression. - * - * If the regular expression contains capturing parentheses, then each time this - * regular expression matches, the results (including any undefined results) of the - * capturing parentheses are spliced. - * - * @param string string value to split - * @param limit if not undefined, the output array is truncated so that it contains no more - * than 'limit' elements. - */ - [Symbol.split](string: string, limit?: number): string[]; - - /** - * Returns a string indicating the flags of the regular expression in question. This field is read-only. - * The characters in this string are sequenced and concatenated in the following order: - * - * - "g" for global - * - "i" for ignoreCase - * - "m" for multiline - * - "u" for unicode - * - "y" for sticky - * - * If no flags are set, the value is the empty string. - */ - readonly flags: string; - - /** - * Returns a Boolean value indicating the state of the sticky flag (y) used with a regular - * expression. Default is false. Read-only. - */ - readonly sticky: boolean; - - /** - * Returns a Boolean value indicating the state of the Unicode flag (u) used with a regular - * expression. Default is false. Read-only. - */ - readonly unicode: boolean; -} - -interface RegExpConstructor { - [Symbol.species](): RegExpConstructor; -} - -interface Map { - clear(): void; - delete(key: K): boolean; - entries(): IterableIterator<[K, V]>; - forEach(callbackfn: (value: V, index: K, map: Map) => void, thisArg?: any): void; - get(key: K): V; - has(key: K): boolean; - keys(): IterableIterator; - set(key: K, value?: V): Map; - readonly size: number; - values(): IterableIterator; - [Symbol.iterator]():IterableIterator<[K,V]>; - readonly [Symbol.toStringTag]: "Map"; -} - -interface MapConstructor { - new (): Map; - new (): Map; - new (iterable: Iterable<[K, V]>): Map; - readonly prototype: Map; -} -declare var Map: MapConstructor; - -interface WeakMap { - clear(): void; - delete(key: K): boolean; - get(key: K): V; - has(key: K): boolean; - set(key: K, value?: V): WeakMap; - readonly [Symbol.toStringTag]: "WeakMap"; -} - -interface WeakMapConstructor { - new (): WeakMap; - new (): WeakMap; - new (iterable: Iterable<[K, V]>): WeakMap; - readonly prototype: WeakMap; -} -declare var WeakMap: WeakMapConstructor; - -interface Set { - add(value: T): Set; - clear(): void; - delete(value: T): boolean; - entries(): IterableIterator<[T, T]>; - forEach(callbackfn: (value: T, index: T, set: Set) => void, thisArg?: any): void; - has(value: T): boolean; - keys(): IterableIterator; - readonly size: number; - values(): IterableIterator; - [Symbol.iterator]():IterableIterator; - readonly [Symbol.toStringTag]: "Set"; -} - -interface SetConstructor { - new (): Set; - new (): Set; - new (iterable: Iterable): Set; - readonly prototype: Set; -} -declare var Set: SetConstructor; - -interface WeakSet { - add(value: T): WeakSet; - clear(): void; - delete(value: T): boolean; - has(value: T): boolean; - readonly [Symbol.toStringTag]: "WeakSet"; -} - -interface WeakSetConstructor { - new (): WeakSet; - new (): WeakSet; - new (iterable: Iterable): WeakSet; - readonly prototype: WeakSet; -} -declare var WeakSet: WeakSetConstructor; - -interface JSON { - readonly [Symbol.toStringTag]: "JSON"; -} - -/** - * Represents a raw buffer of binary data, which is used to store data for the - * different typed arrays. ArrayBuffers cannot be read from or written to directly, - * but can be passed to a typed array or DataView Object to interpret the raw - * buffer as needed. - */ -interface ArrayBuffer { - readonly [Symbol.toStringTag]: "ArrayBuffer"; -} - -interface DataView { - readonly [Symbol.toStringTag]: "DataView"; -} - -/** - * A typed array of 8-bit integer values. The contents are initialized to 0. If the requested - * number of bytes could not be allocated an exception is raised. - */ -interface Int8Array { - /** - * Returns an array of key, value pairs for every entry in the array - */ - entries(): IterableIterator<[number, number]>; - /** - * Returns an list of keys in the array - */ - keys(): IterableIterator; - /** - * Returns an list of values in the array - */ - values(): IterableIterator; - [Symbol.iterator](): IterableIterator; - readonly [Symbol.toStringTag]: "Int8Array"; -} - -interface Int8ArrayConstructor { - new (elements: Iterable): Int8Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Int8Array; -} - -/** - * A typed array of 8-bit unsigned integer values. The contents are initialized to 0. If the - * requested number of bytes could not be allocated an exception is raised. - */ -interface Uint8Array { - /** - * Returns an array of key, value pairs for every entry in the array - */ - entries(): IterableIterator<[number, number]>; - /** - * Returns an list of keys in the array - */ - keys(): IterableIterator; - /** - * Returns an list of values in the array - */ - values(): IterableIterator; - [Symbol.iterator](): IterableIterator; - readonly [Symbol.toStringTag]: "UInt8Array"; -} - -interface Uint8ArrayConstructor { - new (elements: Iterable): Uint8Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint8Array; -} - -/** - * A typed array of 8-bit unsigned integer (clamped) values. The contents are initialized to 0. - * If the requested number of bytes could not be allocated an exception is raised. - */ -interface Uint8ClampedArray { - /** - * Returns an array of key, value pairs for every entry in the array - */ - entries(): IterableIterator<[number, number]>; - - /** - * Returns an list of keys in the array - */ - keys(): IterableIterator; - - /** - * Returns an list of values in the array - */ - values(): IterableIterator; - - [Symbol.iterator](): IterableIterator; - readonly [Symbol.toStringTag]: "Uint8ClampedArray"; -} - -interface Uint8ClampedArrayConstructor { - new (elements: Iterable): Uint8ClampedArray; - - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint8ClampedArray; -} - -/** - * A typed array of 16-bit signed integer values. The contents are initialized to 0. If the - * requested number of bytes could not be allocated an exception is raised. - */ -interface Int16Array { - /** - * Returns an array of key, value pairs for every entry in the array - */ - entries(): IterableIterator<[number, number]>; - - /** - * Returns an list of keys in the array - */ - keys(): IterableIterator; - - /** - * Returns an list of values in the array - */ - values(): IterableIterator; - - - [Symbol.iterator](): IterableIterator; - readonly [Symbol.toStringTag]: "Int16Array"; -} - -interface Int16ArrayConstructor { - new (elements: Iterable): Int16Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Int16Array; -} - -/** - * A typed array of 16-bit unsigned integer values. The contents are initialized to 0. If the - * requested number of bytes could not be allocated an exception is raised. - */ -interface Uint16Array { - /** - * Returns an array of key, value pairs for every entry in the array - */ - entries(): IterableIterator<[number, number]>; - /** - * Returns an list of keys in the array - */ - keys(): IterableIterator; - /** - * Returns an list of values in the array - */ - values(): IterableIterator; - [Symbol.iterator](): IterableIterator; - readonly [Symbol.toStringTag]: "Uint16Array"; -} - -interface Uint16ArrayConstructor { - new (elements: Iterable): Uint16Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint16Array; -} - -/** - * A typed array of 32-bit signed integer values. The contents are initialized to 0. If the - * requested number of bytes could not be allocated an exception is raised. - */ -interface Int32Array { - /** - * Returns an array of key, value pairs for every entry in the array - */ - entries(): IterableIterator<[number, number]>; - /** - * Returns an list of keys in the array - */ - keys(): IterableIterator; - /** - * Returns an list of values in the array - */ - values(): IterableIterator; - [Symbol.iterator](): IterableIterator; - readonly [Symbol.toStringTag]: "Int32Array"; -} - -interface Int32ArrayConstructor { - new (elements: Iterable): Int32Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Int32Array; -} - -/** - * A typed array of 32-bit unsigned integer values. The contents are initialized to 0. If the - * requested number of bytes could not be allocated an exception is raised. - */ -interface Uint32Array { - /** - * Returns an array of key, value pairs for every entry in the array - */ - entries(): IterableIterator<[number, number]>; - /** - * Returns an list of keys in the array - */ - keys(): IterableIterator; - /** - * Returns an list of values in the array - */ - values(): IterableIterator; - [Symbol.iterator](): IterableIterator; - readonly [Symbol.toStringTag]: "Uint32Array"; -} - -interface Uint32ArrayConstructor { - new (elements: Iterable): Uint32Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint32Array; -} - -/** - * A typed array of 32-bit float values. The contents are initialized to 0. If the requested number - * of bytes could not be allocated an exception is raised. - */ -interface Float32Array { - /** - * Returns an array of key, value pairs for every entry in the array - */ - entries(): IterableIterator<[number, number]>; - /** - * Returns an list of keys in the array - */ - keys(): IterableIterator; - /** - * Returns an list of values in the array - */ - values(): IterableIterator; - [Symbol.iterator](): IterableIterator; - readonly [Symbol.toStringTag]: "Float32Array"; -} - -interface Float32ArrayConstructor { - new (elements: Iterable): Float32Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Float32Array; -} - -/** - * A typed array of 64-bit float values. The contents are initialized to 0. If the requested - * number of bytes could not be allocated an exception is raised. - */ -interface Float64Array { - /** - * Returns an array of key, value pairs for every entry in the array - */ - entries(): IterableIterator<[number, number]>; - /** - * Returns an list of keys in the array - */ - keys(): IterableIterator; - /** - * Returns an list of values in the array - */ - values(): IterableIterator; - [Symbol.iterator](): IterableIterator; - readonly [Symbol.toStringTag]: "Float64Array"; -} - -interface Float64ArrayConstructor { - new (elements: Iterable): Float64Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Float64Array; -} - -interface ProxyHandler { - getPrototypeOf? (target: T): any; - setPrototypeOf? (target: T, v: any): boolean; - isExtensible? (target: T): boolean; - preventExtensions? (target: T): boolean; - getOwnPropertyDescriptor? (target: T, p: PropertyKey): PropertyDescriptor; - has? (target: T, p: PropertyKey): boolean; - get? (target: T, p: PropertyKey, receiver: any): any; - set? (target: T, p: PropertyKey, value: any, receiver: any): boolean; - deleteProperty? (target: T, p: PropertyKey): boolean; - defineProperty? (target: T, p: PropertyKey, attributes: PropertyDescriptor): boolean; - enumerate? (target: T): PropertyKey[]; - ownKeys? (target: T): PropertyKey[]; - apply? (target: T, thisArg: any, argArray?: any): any; - construct? (target: T, thisArg: any, argArray?: any): any; -} - -interface ProxyConstructor { - revocable(target: T, handler: ProxyHandler): { proxy: T; revoke: () => void; }; - new (target: T, handler: ProxyHandler): T -} -declare var Proxy: ProxyConstructor; - -declare namespace Reflect { - function apply(target: Function, thisArgument: any, argumentsList: ArrayLike): any; - function construct(target: Function, argumentsList: ArrayLike, newTarget?: any): any; - function defineProperty(target: any, propertyKey: PropertyKey, attributes: PropertyDescriptor): boolean; - function deleteProperty(target: any, propertyKey: PropertyKey): boolean; - function enumerate(target: any): IterableIterator; - function get(target: any, propertyKey: PropertyKey, receiver?: any): any; - function getOwnPropertyDescriptor(target: any, propertyKey: PropertyKey): PropertyDescriptor; - function getPrototypeOf(target: any): any; - function has(target: any, propertyKey: string): boolean; - function has(target: any, propertyKey: symbol): boolean; - function isExtensible(target: any): boolean; - function ownKeys(target: any): Array; - function preventExtensions(target: any): boolean; - function set(target: any, propertyKey: PropertyKey, value: any, receiver?: any): boolean; - function setPrototypeOf(target: any, proto: any): boolean; -} - -/** - * Represents the completion of an asynchronous operation - */ -interface Promise { - /** - * 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(onfulfilled?: (value: T) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): Promise; - then(onfulfilled?: (value: T) => TResult | PromiseLike, onrejected?: (reason: any) => void): Promise; - - /** - * Attaches a callback for only the rejection of the Promise. - * @param onrejected The callback to execute when the Promise is rejected. - * @returns A Promise for the completion of the callback. - */ - catch(onrejected?: (reason: any) => T | PromiseLike): Promise; - catch(onrejected?: (reason: any) => void): Promise; - - readonly [Symbol.toStringTag]: "Promise"; -} - -interface PromiseConstructor { - /** - * A reference to the prototype. - */ - readonly prototype: Promise; - - /** - * Creates a new Promise. - * @param executor A callback used to initialize the promise. This callback is passed two arguments: - * a resolve callback used resolve the promise with a value or the result of another promise, - * and a reject callback used to reject the promise with a provided reason or error. - */ - new (executor: (resolve: (value?: T | PromiseLike) => void, reject: (reason?: any) => void) => void): Promise; - - /** - * Creates a Promise that is resolved with an array of results when all of the provided Promises - * resolve, or rejected when any Promise is rejected. - * @param values An array of Promises. - * @returns A new Promise. - */ - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike, T9 | PromiseLike, T10 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]>; - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike, T9 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9]>; - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8]>; - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7]>; - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6]>; - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike]): Promise<[T1, T2, T3, T4, T5]>; - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike ]): Promise<[T1, T2, T3, T4]>; - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike]): Promise<[T1, T2, T3]>; - all(values: [T1 | PromiseLike, T2 | PromiseLike]): Promise<[T1, T2]>; - all(values: Iterable>): Promise; - - /** - * Creates a Promise that is resolved or rejected when any of the provided Promises are resolved - * or rejected. - * @param values An array of Promises. - * @returns A new Promise. - */ - race(values: Iterable>): Promise; - - /** - * Creates a new rejected promise for the provided reason. - * @param reason The reason the promise was rejected. - * @returns A new rejected Promise. - */ - reject(reason: any): Promise; - - /** - * Creates a new rejected promise for the provided reason. - * @param reason The reason the promise was rejected. - * @returns A new rejected Promise. - */ - reject(reason: any): Promise; - - /** - * Creates a new resolved promise for the provided value. - * @param value A promise. - * @returns A promise whose internal state matches the provided promise. - */ - resolve(value: T | PromiseLike): Promise; - - /** - * Creates a new resolved promise . - * @returns A resolved promise. - */ - resolve(): Promise; - - readonly [Symbol.species]: Function; -} - -declare var Promise: PromiseConstructor; diff --git a/lib/lib.core.es7.d.ts b/lib/lib.core.es7.d.ts deleted file mode 100644 index b5552f62929..00000000000 --- a/lib/lib.core.es7.d.ts +++ /dev/null @@ -1,5344 +0,0 @@ -/*! ***************************************************************************** -Copyright (c) Microsoft Corporation. All rights reserved. -Licensed under the Apache License, Version 2.0 (the "License"); you may not use -this file except in compliance with the License. You may obtain a copy of the -License at http://www.apache.org/licenses/LICENSE-2.0 - -THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED -WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, -MERCHANTABLITY OR NON-INFRINGEMENT. - -See the Apache Version 2.0 License for specific language governing permissions -and limitations under the License. -***************************************************************************** */ - -/// -///////////////////////////// -/// ECMAScript APIs -///////////////////////////// - -declare const NaN: number; -declare const Infinity: number; - -/** - * Evaluates JavaScript code and executes it. - * @param x A String value that contains valid JavaScript code. - */ -declare function eval(x: string): any; - -/** - * Converts A string to an integer. - * @param s A string to convert into a number. - * @param radix A value between 2 and 36 that specifies the base of the number in numString. - * If this argument is not supplied, strings with a prefix of '0x' are considered hexadecimal. - * All other strings are considered decimal. - */ -declare function parseInt(s: string, radix?: number): number; - -/** - * Converts a string to a floating-point number. - * @param string A string that contains a floating-point number. - */ -declare function parseFloat(string: string): number; - -/** - * Returns a Boolean value that indicates whether a value is the reserved value NaN (not a number). - * @param number A numeric value. - */ -declare function isNaN(number: number): boolean; - -/** - * Determines whether a supplied number is finite. - * @param number Any numeric value. - */ -declare function isFinite(number: number): boolean; - -/** - * Gets the unencoded version of an encoded Uniform Resource Identifier (URI). - * @param encodedURI A value representing an encoded URI. - */ -declare function decodeURI(encodedURI: string): string; - -/** - * Gets the unencoded version of an encoded component of a Uniform Resource Identifier (URI). - * @param encodedURIComponent A value representing an encoded URI component. - */ -declare function decodeURIComponent(encodedURIComponent: string): string; - -/** - * Encodes a text string as a valid Uniform Resource Identifier (URI) - * @param uri A value representing an encoded URI. - */ -declare function encodeURI(uri: string): string; - -/** - * Encodes a text string as a valid component of a Uniform Resource Identifier (URI). - * @param uriComponent A value representing an encoded URI component. - */ -declare function encodeURIComponent(uriComponent: string): string; - -interface PropertyDescriptor { - configurable?: boolean; - enumerable?: boolean; - value?: any; - writable?: boolean; - get? (): any; - set? (v: any): void; -} - -interface PropertyDescriptorMap { - [s: string]: PropertyDescriptor; -} - -interface Object { - /** The initial value of Object.prototype.constructor is the standard built-in Object constructor. */ - constructor: Function; - - /** Returns a string representation of an object. */ - toString(): string; - - /** Returns a date converted to a string using the current locale. */ - toLocaleString(): string; - - /** Returns the primitive value of the specified object. */ - valueOf(): Object; - - /** - * Determines whether an object has a property with the specified name. - * @param v A property name. - */ - hasOwnProperty(v: string): boolean; - - /** - * Determines whether an object exists in another object's prototype chain. - * @param v Another object whose prototype chain is to be checked. - */ - isPrototypeOf(v: Object): boolean; - - /** - * Determines whether a specified property is enumerable. - * @param v A property name. - */ - propertyIsEnumerable(v: string): boolean; -} - -interface ObjectConstructor { - new (value?: any): Object; - (): any; - (value: any): any; - - /** A reference to the prototype for a class of objects. */ - readonly prototype: Object; - - /** - * Returns the prototype of an object. - * @param o The object that references the prototype. - */ - getPrototypeOf(o: any): any; - - /** - * Gets the own property descriptor of the specified object. - * An own property descriptor is one that is defined directly on the object and is not inherited from the object's prototype. - * @param o Object that contains the property. - * @param p Name of the property. - */ - getOwnPropertyDescriptor(o: any, p: string): PropertyDescriptor; - - /** - * Returns the names of the own properties of an object. The own properties of an object are those that are defined directly - * on that object, and are not inherited from the object's prototype. The properties of an object include both fields (objects) and functions. - * @param o Object that contains the own properties. - */ - getOwnPropertyNames(o: any): string[]; - - /** - * Creates an object that has the specified prototype, and that optionally contains specified properties. - * @param o Object to use as a prototype. May be null - * @param properties JavaScript object that contains one or more property descriptors. - */ - create(o: any, properties?: PropertyDescriptorMap): any; - - /** - * Adds a property to an object, or modifies attributes of an existing property. - * @param o Object on which to add or modify the property. This can be a native JavaScript object (that is, a user-defined object or a built in object) or a DOM object. - * @param p The property name. - * @param attributes Descriptor for the property. It can be for a data property or an accessor property. - */ - defineProperty(o: any, p: string, attributes: PropertyDescriptor): any; - - /** - * Adds one or more properties to an object, and/or modifies attributes of existing properties. - * @param o Object on which to add or modify the properties. This can be a native JavaScript object or a DOM object. - * @param properties JavaScript object that contains one or more descriptor objects. Each descriptor object describes a data property or an accessor property. - */ - defineProperties(o: any, properties: PropertyDescriptorMap): any; - - /** - * Prevents the modification of attributes of existing properties, and prevents the addition of new properties. - * @param o Object on which to lock the attributes. - */ - seal(o: T): T; - - /** - * Prevents the modification of existing property attributes and values, and prevents the addition of new properties. - * @param o Object on which to lock the attributes. - */ - freeze(o: T): T; - - /** - * Prevents the addition of new properties to an object. - * @param o Object to make non-extensible. - */ - preventExtensions(o: T): T; - - /** - * Returns true if existing property attributes cannot be modified in an object and new properties cannot be added to the object. - * @param o Object to test. - */ - isSealed(o: any): boolean; - - /** - * Returns true if existing property attributes and values cannot be modified in an object, and new properties cannot be added to the object. - * @param o Object to test. - */ - isFrozen(o: any): boolean; - - /** - * Returns a value that indicates whether new properties can be added to an object. - * @param o Object to test. - */ - isExtensible(o: any): boolean; - - /** - * Returns the names of the enumerable properties and methods of an object. - * @param o Object that contains the properties and methods. This can be an object that you created or an existing Document Object Model (DOM) object. - */ - keys(o: any): string[]; -} - -/** - * Provides functionality common to all JavaScript objects. - */ -declare const Object: ObjectConstructor; - -/** - * Creates a new function. - */ -interface Function { - /** - * Calls the function, substituting the specified object for the this value of the function, and the specified array for the arguments of the function. - * @param thisArg The object to be used as the this object. - * @param argArray A set of arguments to be passed to the function. - */ - apply(thisArg: any, argArray?: any): any; - - /** - * Calls a method of an object, substituting another object for the current object. - * @param thisArg The object to be used as the current object. - * @param argArray A list of arguments to be passed to the method. - */ - call(thisArg: any, ...argArray: any[]): any; - - /** - * For a given function, creates a bound function that has the same body as the original function. - * The this object of the bound function is associated with the specified object, and has the specified initial parameters. - * @param thisArg An object to which the this keyword can refer inside the new function. - * @param argArray A list of arguments to be passed to the new function. - */ - bind(thisArg: any, ...argArray: any[]): any; - - prototype: any; - readonly length: number; - - // Non-standard extensions - arguments: any; - caller: Function; -} - -interface FunctionConstructor { - /** - * Creates a new function. - * @param args A list of arguments the function accepts. - */ - new (...args: string[]): Function; - (...args: string[]): Function; - readonly prototype: Function; -} - -declare const Function: FunctionConstructor; - -interface IArguments { - [index: number]: any; - length: number; - callee: Function; -} - -interface String { - /** Returns a string representation of a string. */ - toString(): string; - - /** - * Returns the character at the specified index. - * @param pos The zero-based index of the desired character. - */ - charAt(pos: number): string; - - /** - * Returns the Unicode value of the character at the specified location. - * @param index The zero-based index of the desired character. If there is no character at the specified index, NaN is returned. - */ - charCodeAt(index: number): number; - - /** - * Returns a string that contains the concatenation of two or more strings. - * @param strings The strings to append to the end of the string. - */ - concat(...strings: string[]): string; - - /** - * Returns the position of the first occurrence of a substring. - * @param searchString The substring to search for in the string - * @param position The index at which to begin searching the String object. If omitted, search starts at the beginning of the string. - */ - indexOf(searchString: string, position?: number): number; - - /** - * Returns the last occurrence of a substring in the string. - * @param searchString The substring to search for. - * @param position The index at which to begin searching. If omitted, the search begins at the end of the string. - */ - lastIndexOf(searchString: string, position?: number): number; - - /** - * Determines whether two strings are equivalent in the current locale. - * @param that String to compare to target string - */ - localeCompare(that: string): number; - - /** - * Matches a string with a regular expression, and returns an array containing the results of that search. - * @param regexp A variable name or string literal containing the regular expression pattern and flags. - */ - match(regexp: string): RegExpMatchArray; - - /** - * Matches a string with a regular expression, and returns an array containing the results of that search. - * @param regexp A regular expression object that contains the regular expression pattern and applicable flags. - */ - match(regexp: RegExp): RegExpMatchArray; - - /** - * Replaces text in a string, using a regular expression or search string. - * @param searchValue A string that represents the regular expression. - * @param replaceValue A string containing the text to replace for every successful match of searchValue in this string. - */ - replace(searchValue: string, replaceValue: string): string; - - /** - * Replaces text in a string, using a regular expression or search string. - * @param searchValue A string that represents the regular expression. - * @param replacer A function that returns the replacement text. - */ - replace(searchValue: string, replacer: (substring: string, ...args: any[]) => string): string; - - /** - * Replaces text in a string, using a regular expression or search string. - * @param searchValue A Regular Expression object containing the regular expression pattern and applicable flags. - * @param replaceValue A string containing the text to replace for every successful match of searchValue in this string. - */ - replace(searchValue: RegExp, replaceValue: string): string; - - /** - * Replaces text in a string, using a regular expression or search string. - * @param searchValue A Regular Expression object containing the regular expression pattern and applicable flags - * @param replacer A function that returns the replacement text. - */ - replace(searchValue: RegExp, replacer: (substring: string, ...args: any[]) => string): string; - - /** - * Finds the first substring match in a regular expression search. - * @param regexp The regular expression pattern and applicable flags. - */ - search(regexp: string): number; - - /** - * Finds the first substring match in a regular expression search. - * @param regexp The regular expression pattern and applicable flags. - */ - search(regexp: RegExp): number; - - /** - * Returns a section of a string. - * @param start The index to the beginning of the specified portion of stringObj. - * @param end The index to the end of the specified portion of stringObj. The substring includes the characters up to, but not including, the character indicated by end. - * If this value is not specified, the substring continues to the end of stringObj. - */ - slice(start?: number, end?: number): string; - - /** - * Split a string into substrings using the specified separator and return them as an array. - * @param separator A string that identifies character or characters to use in separating the string. If omitted, a single-element array containing the entire string is returned. - * @param limit A value used to limit the number of elements returned in the array. - */ - split(separator: string, limit?: number): string[]; - - /** - * Split a string into substrings using the specified separator and return them as an array. - * @param separator A Regular Express that identifies character or characters to use in separating the string. If omitted, a single-element array containing the entire string is returned. - * @param limit A value used to limit the number of elements returned in the array. - */ - split(separator: RegExp, limit?: number): string[]; - - /** - * Returns the substring at the specified location within a String object. - * @param start The zero-based index number indicating the beginning of the substring. - * @param end Zero-based index number indicating the end of the substring. The substring includes the characters up to, but not including, the character indicated by end. - * If end is omitted, the characters from start through the end of the original string are returned. - */ - substring(start: number, end?: number): string; - - /** Converts all the alphabetic characters in a string to lowercase. */ - toLowerCase(): string; - - /** Converts all alphabetic characters to lowercase, taking into account the host environment's current locale. */ - toLocaleLowerCase(): string; - - /** Converts all the alphabetic characters in a string to uppercase. */ - toUpperCase(): string; - - /** Returns a string where all alphabetic characters have been converted to uppercase, taking into account the host environment's current locale. */ - toLocaleUpperCase(): string; - - /** Removes the leading and trailing white space and line terminator characters from a string. */ - trim(): string; - - /** Returns the length of a String object. */ - readonly length: number; - - // IE extensions - /** - * Gets a substring beginning at the specified location and having the specified length. - * @param from The starting position of the desired substring. The index of the first character in the string is zero. - * @param length The number of characters to include in the returned substring. - */ - substr(from: number, length?: number): string; - - /** Returns the primitive value of the specified object. */ - valueOf(): string; - - readonly [index: number]: string; -} - -interface StringConstructor { - new (value?: any): String; - (value?: any): string; - readonly prototype: String; - fromCharCode(...codes: number[]): string; -} - -/** - * Allows manipulation and formatting of text strings and determination and location of substrings within strings. - */ -declare const String: StringConstructor; - -interface Boolean { - /** Returns the primitive value of the specified object. */ - valueOf(): boolean; -} - -interface BooleanConstructor { - new (value?: any): Boolean; - (value?: any): boolean; - readonly prototype: Boolean; -} - -declare const Boolean: BooleanConstructor; - -interface Number { - /** - * Returns a string representation of an object. - * @param radix Specifies a radix for converting numeric values to strings. This value is only used for numbers. - */ - toString(radix?: number): string; - - /** - * Returns a string representing a number in fixed-point notation. - * @param fractionDigits Number of digits after the decimal point. Must be in the range 0 - 20, inclusive. - */ - toFixed(fractionDigits?: number): string; - - /** - * Returns a string containing a number represented in exponential notation. - * @param fractionDigits Number of digits after the decimal point. Must be in the range 0 - 20, inclusive. - */ - toExponential(fractionDigits?: number): string; - - /** - * Returns a string containing a number represented either in exponential or fixed-point notation with a specified number of digits. - * @param precision Number of significant digits. Must be in the range 1 - 21, inclusive. - */ - toPrecision(precision?: number): string; - - /** Returns the primitive value of the specified object. */ - valueOf(): number; -} - -interface NumberConstructor { - new (value?: any): Number; - (value?: any): number; - readonly prototype: Number; - - /** The largest number that can be represented in JavaScript. Equal to approximately 1.79E+308. */ - readonly MAX_VALUE: number; - - /** The closest number to zero that can be represented in JavaScript. Equal to approximately 5.00E-324. */ - readonly MIN_VALUE: number; - - /** - * A value that is not a number. - * In equality comparisons, NaN does not equal any value, including itself. To test whether a value is equivalent to NaN, use the isNaN function. - */ - readonly NaN: number; - - /** - * A value that is less than the largest negative number that can be represented in JavaScript. - * JavaScript displays NEGATIVE_INFINITY values as -infinity. - */ - readonly NEGATIVE_INFINITY: number; - - /** - * A value greater than the largest number that can be represented in JavaScript. - * JavaScript displays POSITIVE_INFINITY values as infinity. - */ - readonly POSITIVE_INFINITY: number; -} - -/** An object that represents a number of any kind. All JavaScript numbers are 64-bit floating-point numbers. */ -declare const Number: NumberConstructor; - -interface TemplateStringsArray extends Array { - readonly raw: string[]; -} - -interface Math { - /** The mathematical constant e. This is Euler's number, the base of natural logarithms. */ - readonly E: number; - /** The natural logarithm of 10. */ - readonly LN10: number; - /** The natural logarithm of 2. */ - readonly LN2: number; - /** The base-2 logarithm of e. */ - readonly LOG2E: number; - /** The base-10 logarithm of e. */ - readonly LOG10E: number; - /** Pi. This is the ratio of the circumference of a circle to its diameter. */ - readonly PI: number; - /** The square root of 0.5, or, equivalently, one divided by the square root of 2. */ - readonly SQRT1_2: number; - /** The square root of 2. */ - readonly SQRT2: number; - /** - * Returns the absolute value of a number (the value without regard to whether it is positive or negative). - * For example, the absolute value of -5 is the same as the absolute value of 5. - * @param x A numeric expression for which the absolute value is needed. - */ - abs(x: number): number; - /** - * Returns the arc cosine (or inverse cosine) of a number. - * @param x A numeric expression. - */ - acos(x: number): number; - /** - * Returns the arcsine of a number. - * @param x A numeric expression. - */ - asin(x: number): number; - /** - * Returns the arctangent of a number. - * @param x A numeric expression for which the arctangent is needed. - */ - atan(x: number): number; - /** - * Returns the angle (in radians) from the X axis to a point. - * @param y A numeric expression representing the cartesian y-coordinate. - * @param x A numeric expression representing the cartesian x-coordinate. - */ - atan2(y: number, x: number): number; - /** - * Returns the smallest number greater than or equal to its numeric argument. - * @param x A numeric expression. - */ - ceil(x: number): number; - /** - * Returns the cosine of a number. - * @param x A numeric expression that contains an angle measured in radians. - */ - cos(x: number): number; - /** - * Returns e (the base of natural logarithms) raised to a power. - * @param x A numeric expression representing the power of e. - */ - exp(x: number): number; - /** - * Returns the greatest number less than or equal to its numeric argument. - * @param x A numeric expression. - */ - floor(x: number): number; - /** - * Returns the natural logarithm (base e) of a number. - * @param x A numeric expression. - */ - log(x: number): number; - /** - * Returns the larger of a set of supplied numeric expressions. - * @param values Numeric expressions to be evaluated. - */ - max(...values: number[]): number; - /** - * Returns the smaller of a set of supplied numeric expressions. - * @param values Numeric expressions to be evaluated. - */ - min(...values: number[]): number; - /** - * Returns the value of a base expression taken to a specified power. - * @param x The base value of the expression. - * @param y The exponent value of the expression. - */ - pow(x: number, y: number): number; - /** Returns a pseudorandom number between 0 and 1. */ - random(): number; - /** - * Returns a supplied numeric expression rounded to the nearest number. - * @param x The value to be rounded to the nearest number. - */ - round(x: number): number; - /** - * Returns the sine of a number. - * @param x A numeric expression that contains an angle measured in radians. - */ - sin(x: number): number; - /** - * Returns the square root of a number. - * @param x A numeric expression. - */ - sqrt(x: number): number; - /** - * Returns the tangent of a number. - * @param x A numeric expression that contains an angle measured in radians. - */ - tan(x: number): number; -} -/** An intrinsic object that provides basic mathematics functionality and constants. */ -declare const Math: Math; - -/** Enables basic storage and retrieval of dates and times. */ -interface Date { - /** Returns a string representation of a date. The format of the string depends on the locale. */ - toString(): string; - /** Returns a date as a string value. */ - toDateString(): string; - /** Returns a time as a string value. */ - toTimeString(): string; - /** Returns a value as a string value appropriate to the host environment's current locale. */ - toLocaleString(): string; - /** Returns a date as a string value appropriate to the host environment's current locale. */ - toLocaleDateString(): string; - /** Returns a time as a string value appropriate to the host environment's current locale. */ - toLocaleTimeString(): string; - /** Returns the stored time value in milliseconds since midnight, January 1, 1970 UTC. */ - valueOf(): number; - /** Gets the time value in milliseconds. */ - getTime(): number; - /** Gets the year, using local time. */ - getFullYear(): number; - /** Gets the year using Universal Coordinated Time (UTC). */ - getUTCFullYear(): number; - /** Gets the month, using local time. */ - getMonth(): number; - /** Gets the month of a Date object using Universal Coordinated Time (UTC). */ - getUTCMonth(): number; - /** Gets the day-of-the-month, using local time. */ - getDate(): number; - /** Gets the day-of-the-month, using Universal Coordinated Time (UTC). */ - getUTCDate(): number; - /** Gets the day of the week, using local time. */ - getDay(): number; - /** Gets the day of the week using Universal Coordinated Time (UTC). */ - getUTCDay(): number; - /** Gets the hours in a date, using local time. */ - getHours(): number; - /** Gets the hours value in a Date object using Universal Coordinated Time (UTC). */ - getUTCHours(): number; - /** Gets the minutes of a Date object, using local time. */ - getMinutes(): number; - /** Gets the minutes of a Date object using Universal Coordinated Time (UTC). */ - getUTCMinutes(): number; - /** Gets the seconds of a Date object, using local time. */ - getSeconds(): number; - /** Gets the seconds of a Date object using Universal Coordinated Time (UTC). */ - getUTCSeconds(): number; - /** Gets the milliseconds of a Date, using local time. */ - getMilliseconds(): number; - /** Gets the milliseconds of a Date object using Universal Coordinated Time (UTC). */ - getUTCMilliseconds(): number; - /** Gets the difference in minutes between the time on the local computer and Universal Coordinated Time (UTC). */ - getTimezoneOffset(): number; - /** - * Sets the date and time value in the Date object. - * @param time A numeric value representing the number of elapsed milliseconds since midnight, January 1, 1970 GMT. - */ - setTime(time: number): number; - /** - * Sets the milliseconds value in the Date object using local time. - * @param ms A numeric value equal to the millisecond value. - */ - setMilliseconds(ms: number): number; - /** - * Sets the milliseconds value in the Date object using Universal Coordinated Time (UTC). - * @param ms A numeric value equal to the millisecond value. - */ - setUTCMilliseconds(ms: number): number; - - /** - * Sets the seconds value in the Date object using local time. - * @param sec A numeric value equal to the seconds value. - * @param ms A numeric value equal to the milliseconds value. - */ - setSeconds(sec: number, ms?: number): number; - /** - * Sets the seconds value in the Date object using Universal Coordinated Time (UTC). - * @param sec A numeric value equal to the seconds value. - * @param ms A numeric value equal to the milliseconds value. - */ - setUTCSeconds(sec: number, ms?: number): number; - /** - * Sets the minutes value in the Date object using local time. - * @param min A numeric value equal to the minutes value. - * @param sec A numeric value equal to the seconds value. - * @param ms A numeric value equal to the milliseconds value. - */ - setMinutes(min: number, sec?: number, ms?: number): number; - /** - * Sets the minutes value in the Date object using Universal Coordinated Time (UTC). - * @param min A numeric value equal to the minutes value. - * @param sec A numeric value equal to the seconds value. - * @param ms A numeric value equal to the milliseconds value. - */ - setUTCMinutes(min: number, sec?: number, ms?: number): number; - /** - * Sets the hour value in the Date object using local time. - * @param hours A numeric value equal to the hours value. - * @param min A numeric value equal to the minutes value. - * @param sec A numeric value equal to the seconds value. - * @param ms A numeric value equal to the milliseconds value. - */ - setHours(hours: number, min?: number, sec?: number, ms?: number): number; - /** - * Sets the hours value in the Date object using Universal Coordinated Time (UTC). - * @param hours A numeric value equal to the hours value. - * @param min A numeric value equal to the minutes value. - * @param sec A numeric value equal to the seconds value. - * @param ms A numeric value equal to the milliseconds value. - */ - setUTCHours(hours: number, min?: number, sec?: number, ms?: number): number; - /** - * Sets the numeric day-of-the-month value of the Date object using local time. - * @param date A numeric value equal to the day of the month. - */ - setDate(date: number): number; - /** - * Sets the numeric day of the month in the Date object using Universal Coordinated Time (UTC). - * @param date A numeric value equal to the day of the month. - */ - setUTCDate(date: number): number; - /** - * Sets the month value in the Date object using local time. - * @param month A numeric value equal to the month. The value for January is 0, and other month values follow consecutively. - * @param date A numeric value representing the day of the month. If this value is not supplied, the value from a call to the getDate method is used. - */ - setMonth(month: number, date?: number): number; - /** - * Sets the month value in the Date object using Universal Coordinated Time (UTC). - * @param month A numeric value equal to the month. The value for January is 0, and other month values follow consecutively. - * @param date A numeric value representing the day of the month. If it is not supplied, the value from a call to the getUTCDate method is used. - */ - setUTCMonth(month: number, date?: number): number; - /** - * Sets the year of the Date object using local time. - * @param year A numeric value for the year. - * @param month A zero-based numeric value for the month (0 for January, 11 for December). Must be specified if numDate is specified. - * @param date A numeric value equal for the day of the month. - */ - setFullYear(year: number, month?: number, date?: number): number; - /** - * Sets the year value in the Date object using Universal Coordinated Time (UTC). - * @param year A numeric value equal to the year. - * @param month A numeric value equal to the month. The value for January is 0, and other month values follow consecutively. Must be supplied if numDate is supplied. - * @param date A numeric value equal to the day of the month. - */ - setUTCFullYear(year: number, month?: number, date?: number): number; - /** Returns a date converted to a string using Universal Coordinated Time (UTC). */ - toUTCString(): string; - /** Returns a date as a string value in ISO format. */ - toISOString(): string; - /** Used by the JSON.stringify method to enable the transformation of an object's data for JavaScript Object Notation (JSON) serialization. */ - toJSON(key?: any): string; -} - -interface DateConstructor { - new (): Date; - new (value: number): Date; - new (value: string): Date; - new (year: number, month: number, date?: number, hours?: number, minutes?: number, seconds?: number, ms?: number): Date; - (): string; - readonly prototype: Date; - /** - * Parses a string containing a date, and returns the number of milliseconds between that date and midnight, January 1, 1970. - * @param s A date string - */ - parse(s: string): number; - /** - * Returns the number of milliseconds between midnight, January 1, 1970 Universal Coordinated Time (UTC) (or GMT) and the specified date. - * @param year The full year designation is required for cross-century date accuracy. If year is between 0 and 99 is used, then year is assumed to be 1900 + year. - * @param month The month as an number between 0 and 11 (January to December). - * @param date The date as an number between 1 and 31. - * @param hours Must be supplied if minutes is supplied. An number from 0 to 23 (midnight to 11pm) that specifies the hour. - * @param minutes Must be supplied if seconds is supplied. An number from 0 to 59 that specifies the minutes. - * @param seconds Must be supplied if milliseconds is supplied. An number from 0 to 59 that specifies the seconds. - * @param ms An number from 0 to 999 that specifies the milliseconds. - */ - UTC(year: number, month: number, date?: number, hours?: number, minutes?: number, seconds?: number, ms?: number): number; - now(): number; -} - -declare const Date: DateConstructor; - -interface RegExpMatchArray extends Array { - index?: number; - input?: string; -} - -interface RegExpExecArray extends Array { - index: number; - input: string; -} - -interface RegExp { - /** - * Executes a search on a string using a regular expression pattern, and returns an array containing the results of that search. - * @param string The String object or string literal on which to perform the search. - */ - exec(string: string): RegExpExecArray; - - /** - * Returns a Boolean value that indicates whether or not a pattern exists in a searched string. - * @param string String on which to perform the search. - */ - test(string: string): boolean; - - /** Returns a copy of the text of the regular expression pattern. Read-only. The regExp argument is a Regular expression object. It can be a variable name or a literal. */ - readonly source: string; - - /** Returns a Boolean value indicating the state of the global flag (g) used with a regular expression. Default is false. Read-only. */ - readonly global: boolean; - - /** Returns a Boolean value indicating the state of the ignoreCase flag (i) used with a regular expression. Default is false. Read-only. */ - readonly ignoreCase: boolean; - - /** Returns a Boolean value indicating the state of the multiline flag (m) used with a regular expression. Default is false. Read-only. */ - readonly multiline: boolean; - - lastIndex: number; - - // Non-standard extensions - compile(): RegExp; -} - -interface RegExpConstructor { - new (pattern: string, flags?: string): RegExp; - (pattern: string, flags?: string): RegExp; - readonly prototype: RegExp; - - // Non-standard extensions - $1: string; - $2: string; - $3: string; - $4: string; - $5: string; - $6: string; - $7: string; - $8: string; - $9: string; - lastMatch: string; -} - -declare const RegExp: RegExpConstructor; - -interface Error { - name: string; - message: string; -} - -interface ErrorConstructor { - new (message?: string): Error; - (message?: string): Error; - readonly prototype: Error; -} - -declare const Error: ErrorConstructor; - -interface EvalError extends Error { -} - -interface EvalErrorConstructor { - new (message?: string): EvalError; - (message?: string): EvalError; - readonly prototype: EvalError; -} - -declare const EvalError: EvalErrorConstructor; - -interface RangeError extends Error { -} - -interface RangeErrorConstructor { - new (message?: string): RangeError; - (message?: string): RangeError; - readonly prototype: RangeError; -} - -declare const RangeError: RangeErrorConstructor; - -interface ReferenceError extends Error { -} - -interface ReferenceErrorConstructor { - new (message?: string): ReferenceError; - (message?: string): ReferenceError; - readonly prototype: ReferenceError; -} - -declare const ReferenceError: ReferenceErrorConstructor; - -interface SyntaxError extends Error { -} - -interface SyntaxErrorConstructor { - new (message?: string): SyntaxError; - (message?: string): SyntaxError; - readonly prototype: SyntaxError; -} - -declare const SyntaxError: SyntaxErrorConstructor; - -interface TypeError extends Error { -} - -interface TypeErrorConstructor { - new (message?: string): TypeError; - (message?: string): TypeError; - readonly prototype: TypeError; -} - -declare const TypeError: TypeErrorConstructor; - -interface URIError extends Error { -} - -interface URIErrorConstructor { - new (message?: string): URIError; - (message?: string): URIError; - readonly prototype: URIError; -} - -declare const URIError: URIErrorConstructor; - -interface JSON { - /** - * Converts a JavaScript Object Notation (JSON) string into an object. - * @param text A valid JSON string. - * @param reviver A function that transforms the results. This function is called for each member of the object. - * If a member contains nested objects, the nested objects are transformed before the parent object is. - */ - parse(text: string, reviver?: (key: any, value: any) => any): any; - /** - * Converts a JavaScript value to a JavaScript Object Notation (JSON) string. - * @param value A JavaScript value, usually an object or array, to be converted. - */ - stringify(value: any): string; - /** - * 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 A function that transforms the results. - */ - stringify(value: any, replacer: (key: string, value: any) => any): string; - /** - * 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 Array that transforms the results. - */ - stringify(value: any, replacer: any[]): string; - /** - * 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 A function that transforms the results. - * @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: (key: string, value: any) => any, space: string | number): string; - /** - * 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 Array that transforms the results. - * @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: any[], space: string | number): string; -} -/** - * An intrinsic object that provides functions to convert JavaScript values to and from the JavaScript Object Notation (JSON) format. - */ -declare const JSON: JSON; - - -///////////////////////////// -/// ECMAScript Array API (specially handled by compiler) -///////////////////////////// - -interface ReadonlyArray { - /** - * Gets the length of the array. This is a number one higher than the highest element defined in an array. - */ - readonly length: number; - /** - * Returns a string representation of an array. - */ - toString(): string; - toLocaleString(): string; - /** - * Combines two or more arrays. - * @param items Additional items to add to the end of array1. - */ - concat>(...items: U[]): T[]; - /** - * Combines two or more arrays. - * @param items Additional items to add to the end of array1. - */ - concat(...items: T[]): T[]; - /** - * Adds all the elements of an array separated by the specified separator string. - * @param separator A string used to separate one element of an array from the next in the resulting String. If omitted, the array elements are separated with a comma. - */ - join(separator?: string): string; - /** - * Returns a section of an array. - * @param start The beginning of the specified portion of the array. - * @param end The end of the specified portion of the array. - */ - slice(start?: number, end?: number): T[]; - /** - * Returns the index of the first occurrence of a value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the search starts at index 0. - */ - indexOf(searchElement: T, fromIndex?: number): number; - - /** - * Returns the index of the last occurrence of a specified value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the search starts at the last index in the array. - */ - lastIndexOf(searchElement: T, fromIndex?: number): number; - /** - * Determines whether all the members of an array satisfy the specified test. - * @param callbackfn A function that accepts up to three arguments. The every method calls the callbackfn function for each element in array1 until the callbackfn returns false, or until the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value. - */ - every(callbackfn: (value: T, index: number, array: ReadonlyArray) => boolean, thisArg?: any): boolean; - /** - * Determines whether the specified callback function returns true for any element of an array. - * @param callbackfn A function that accepts up to three arguments. The some method calls the callbackfn function for each element in array1 until the callbackfn returns true, or until the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value. - */ - some(callbackfn: (value: T, index: number, array: ReadonlyArray) => boolean, thisArg?: any): boolean; - /** - * Performs the specified action for each element in an array. - * @param callbackfn A function that accepts up to three arguments. forEach calls the callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value. - */ - forEach(callbackfn: (value: T, index: number, array: ReadonlyArray) => void, thisArg?: any): void; - /** - * Calls a defined callback function on each element of an array, and returns an array that contains the results. - * @param callbackfn A function that accepts up to three arguments. The map method calls the callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value. - */ - map(callbackfn: (value: T, index: number, array: ReadonlyArray) => U, thisArg?: any): U[]; - /** - * Returns the elements of an array that meet the condition specified in a callback function. - * @param callbackfn A function that accepts up to three arguments. The filter method calls the callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value. - */ - filter(callbackfn: (value: T, index: number, array: ReadonlyArray) => boolean, thisArg?: any): T[]; - /** - * Calls the specified callback function for all the elements in an array. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value. - */ - reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: ReadonlyArray) => T, initialValue?: T): T; - /** - * Calls the specified callback function for all the elements in an array. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value. - */ - reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: ReadonlyArray) => U, initialValue: U): U; - /** - * Calls the specified callback function for all the elements in an array, in descending order. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value. - */ - reduceRight(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: ReadonlyArray) => T, initialValue?: T): T; - /** - * Calls the specified callback function for all the elements in an array, in descending order. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value. - */ - reduceRight(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: ReadonlyArray) => U, initialValue: U): U; - - readonly [n: number]: T; -} - -interface Array { - /** - * Gets or sets the length of the array. This is a number one higher than the highest element defined in an array. - */ - length: number; - /** - * Returns a string representation of an array. - */ - toString(): string; - toLocaleString(): string; - /** - * Appends new elements to an array, and returns the new length of the array. - * @param items New elements of the Array. - */ - push(...items: T[]): number; - /** - * Removes the last element from an array and returns it. - */ - pop(): T; - /** - * Combines two or more arrays. - * @param items Additional items to add to the end of array1. - */ - concat(...items: (T | T[])[]): T[]; - /** - * Adds all the elements of an array separated by the specified separator string. - * @param separator A string used to separate one element of an array from the next in the resulting String. If omitted, the array elements are separated with a comma. - */ - join(separator?: string): string; - /** - * Reverses the elements in an Array. - */ - reverse(): T[]; - /** - * Removes the first element from an array and returns it. - */ - shift(): T; - /** - * Returns a section of an array. - * @param start The beginning of the specified portion of the array. - * @param end The end of the specified portion of the array. - */ - slice(start?: number, end?: number): T[]; - /** - * Sorts an array. - * @param compareFn The name of the function used to determine the order of the elements. If omitted, the elements are sorted in ascending, ASCII character order. - */ - sort(compareFn?: (a: T, b: T) => number): T[]; - /** - * Removes elements from an array and, if necessary, inserts new elements in their place, returning the deleted elements. - * @param start The zero-based location in the array from which to start removing elements. - */ - splice(start: number): T[]; - /** - * Removes elements from an array and, if necessary, inserts new elements in their place, returning the deleted elements. - * @param start The zero-based location in the array from which to start removing elements. - * @param deleteCount The number of elements to remove. - * @param items Elements to insert into the array in place of the deleted elements. - */ - splice(start: number, deleteCount: number, ...items: T[]): T[]; - /** - * Inserts new elements at the start of an array. - * @param items Elements to insert at the start of the Array. - */ - unshift(...items: T[]): number; - /** - * Returns the index of the first occurrence of a value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the search starts at index 0. - */ - indexOf(searchElement: T, fromIndex?: number): number; - /** - * Returns the index of the last occurrence of a specified value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the search starts at the last index in the array. - */ - lastIndexOf(searchElement: T, fromIndex?: number): number; - /** - * Determines whether all the members of an array satisfy the specified test. - * @param callbackfn A function that accepts up to three arguments. The every method calls the callbackfn function for each element in array1 until the callbackfn returns false, or until the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value. - */ - every(callbackfn: (value: T, index: number, array: T[]) => boolean, thisArg?: any): boolean; - /** - * Determines whether the specified callback function returns true for any element of an array. - * @param callbackfn A function that accepts up to three arguments. The some method calls the callbackfn function for each element in array1 until the callbackfn returns true, or until the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value. - */ - some(callbackfn: (value: T, index: number, array: T[]) => boolean, thisArg?: any): boolean; - /** - * Performs the specified action for each element in an array. - * @param callbackfn A function that accepts up to three arguments. forEach calls the callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value. - */ - forEach(callbackfn: (value: T, index: number, array: T[]) => void, thisArg?: any): void; - /** - * Calls a defined callback function on each element of an array, and returns an array that contains the results. - * @param callbackfn A function that accepts up to three arguments. The map method calls the callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value. - */ - map(callbackfn: (value: T, index: number, array: T[]) => U, thisArg?: any): U[]; - /** - * Returns the elements of an array that meet the condition specified in a callback function. - * @param callbackfn A function that accepts up to three arguments. The filter method calls the callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value. - */ - filter(callbackfn: (value: T, index: number, array: T[]) => boolean, thisArg?: any): T[]; - /** - * Calls the specified callback function for all the elements in an array. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value. - */ - reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue?: T): T; - /** - * Calls the specified callback function for all the elements in an array. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value. - */ - reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; - /** - * Calls the specified callback function for all the elements in an array, in descending order. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value. - */ - reduceRight(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue?: T): T; - /** - * Calls the specified callback function for all the elements in an array, in descending order. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value. - */ - reduceRight(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; - - [n: number]: T; -} - -interface ArrayConstructor { - new (arrayLength?: number): any[]; - new (arrayLength: number): T[]; - new (...items: T[]): T[]; - (arrayLength?: number): any[]; - (arrayLength: number): T[]; - (...items: T[]): T[]; - isArray(arg: any): arg is Array; - readonly prototype: Array; -} - -declare const Array: ArrayConstructor; - -interface TypedPropertyDescriptor { - enumerable?: boolean; - configurable?: boolean; - writable?: boolean; - value?: T; - get?: () => T; - set?: (value: T) => void; -} - -declare type ClassDecorator = (target: TFunction) => TFunction | void; -declare type PropertyDecorator = (target: Object, propertyKey: string | symbol) => void; -declare type MethodDecorator = (target: Object, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor | void; -declare type ParameterDecorator = (target: Object, propertyKey: string | symbol, parameterIndex: number) => void; - -declare type PromiseConstructorLike = new (executor: (resolve: (value?: T | PromiseLike) => void, reject: (reason?: any) => void) => void) => PromiseLike; - -interface PromiseLike { - /** - * 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(onfulfilled?: (value: T) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): PromiseLike; - then(onfulfilled?: (value: T) => TResult | PromiseLike, onrejected?: (reason: any) => void): PromiseLike; -} - -interface ArrayLike { - readonly length: number; - readonly [n: number]: T; -} - -/** - * Represents a raw buffer of binary data, which is used to store data for the - * different typed arrays. ArrayBuffers cannot be read from or written to directly, - * but can be passed to a typed array or DataView Object to interpret the raw - * buffer as needed. - */ -interface ArrayBuffer { - /** - * Read-only. The length of the ArrayBuffer (in bytes). - */ - readonly byteLength: number; - - /** - * Returns a section of an ArrayBuffer. - */ - slice(begin:number, end?:number): ArrayBuffer; -} - -interface ArrayBufferConstructor { - readonly prototype: ArrayBuffer; - new (byteLength: number): ArrayBuffer; - isView(arg: any): arg is ArrayBufferView; -} -declare const ArrayBuffer: ArrayBufferConstructor; - -interface ArrayBufferView { - /** - * The ArrayBuffer instance referenced by the array. - */ - buffer: ArrayBuffer; - - /** - * The length in bytes of the array. - */ - byteLength: number; - - /** - * The offset in bytes of the array. - */ - byteOffset: number; -} - -interface DataView { - readonly buffer: ArrayBuffer; - readonly byteLength: number; - readonly byteOffset: number; - /** - * Gets the Float32 value at the specified byte offset from the start of the view. There is - * no alignment constraint; multi-byte values may be fetched from any offset. - * @param byteOffset The place in the buffer at which the value should be retrieved. - */ - getFloat32(byteOffset: number, littleEndian?: boolean): number; - - /** - * Gets the Float64 value at the specified byte offset from the start of the view. There is - * no alignment constraint; multi-byte values may be fetched from any offset. - * @param byteOffset The place in the buffer at which the value should be retrieved. - */ - getFloat64(byteOffset: number, littleEndian?: boolean): number; - - /** - * Gets the Int8 value at the specified byte offset from the start of the view. There is - * no alignment constraint; multi-byte values may be fetched from any offset. - * @param byteOffset The place in the buffer at which the value should be retrieved. - */ - getInt8(byteOffset: number): number; - - /** - * Gets the Int16 value at the specified byte offset from the start of the view. There is - * no alignment constraint; multi-byte values may be fetched from any offset. - * @param byteOffset The place in the buffer at which the value should be retrieved. - */ - getInt16(byteOffset: number, littleEndian?: boolean): number; - /** - * Gets the Int32 value at the specified byte offset from the start of the view. There is - * no alignment constraint; multi-byte values may be fetched from any offset. - * @param byteOffset The place in the buffer at which the value should be retrieved. - */ - getInt32(byteOffset: number, littleEndian?: boolean): number; - - /** - * Gets the Uint8 value at the specified byte offset from the start of the view. There is - * no alignment constraint; multi-byte values may be fetched from any offset. - * @param byteOffset The place in the buffer at which the value should be retrieved. - */ - getUint8(byteOffset: number): number; - - /** - * Gets the Uint16 value at the specified byte offset from the start of the view. There is - * no alignment constraint; multi-byte values may be fetched from any offset. - * @param byteOffset The place in the buffer at which the value should be retrieved. - */ - getUint16(byteOffset: number, littleEndian?: boolean): number; - - /** - * Gets the Uint32 value at the specified byte offset from the start of the view. There is - * no alignment constraint; multi-byte values may be fetched from any offset. - * @param byteOffset The place in the buffer at which the value should be retrieved. - */ - getUint32(byteOffset: number, littleEndian?: boolean): number; - - /** - * Stores an Float32 value at the specified byte offset from the start of the view. - * @param byteOffset The place in the buffer at which the value should be set. - * @param value The value to set. - * @param littleEndian If false or undefined, a big-endian value should be written, - * otherwise a little-endian value should be written. - */ - setFloat32(byteOffset: number, value: number, littleEndian?: boolean): void; - - /** - * Stores an Float64 value at the specified byte offset from the start of the view. - * @param byteOffset The place in the buffer at which the value should be set. - * @param value The value to set. - * @param littleEndian If false or undefined, a big-endian value should be written, - * otherwise a little-endian value should be written. - */ - setFloat64(byteOffset: number, value: number, littleEndian?: boolean): void; - - /** - * Stores an Int8 value at the specified byte offset from the start of the view. - * @param byteOffset The place in the buffer at which the value should be set. - * @param value The value to set. - */ - setInt8(byteOffset: number, value: number): void; - - /** - * Stores an Int16 value at the specified byte offset from the start of the view. - * @param byteOffset The place in the buffer at which the value should be set. - * @param value The value to set. - * @param littleEndian If false or undefined, a big-endian value should be written, - * otherwise a little-endian value should be written. - */ - setInt16(byteOffset: number, value: number, littleEndian?: boolean): void; - - /** - * Stores an Int32 value at the specified byte offset from the start of the view. - * @param byteOffset The place in the buffer at which the value should be set. - * @param value The value to set. - * @param littleEndian If false or undefined, a big-endian value should be written, - * otherwise a little-endian value should be written. - */ - setInt32(byteOffset: number, value: number, littleEndian?: boolean): void; - - /** - * Stores an Uint8 value at the specified byte offset from the start of the view. - * @param byteOffset The place in the buffer at which the value should be set. - * @param value The value to set. - */ - setUint8(byteOffset: number, value: number): void; - - /** - * Stores an Uint16 value at the specified byte offset from the start of the view. - * @param byteOffset The place in the buffer at which the value should be set. - * @param value The value to set. - * @param littleEndian If false or undefined, a big-endian value should be written, - * otherwise a little-endian value should be written. - */ - setUint16(byteOffset: number, value: number, littleEndian?: boolean): void; - - /** - * Stores an Uint32 value at the specified byte offset from the start of the view. - * @param byteOffset The place in the buffer at which the value should be set. - * @param value The value to set. - * @param littleEndian If false or undefined, a big-endian value should be written, - * otherwise a little-endian value should be written. - */ - setUint32(byteOffset: number, value: number, littleEndian?: boolean): void; -} - -interface DataViewConstructor { - new (buffer: ArrayBuffer, byteOffset?: number, byteLength?: number): DataView; -} -declare const DataView: DataViewConstructor; - -/** - * A typed array of 8-bit integer values. The contents are initialized to 0. If the requested - * number of bytes could not be allocated an exception is raised. - */ -interface Int8Array { - /** - * The size in bytes of each element in the array. - */ - readonly BYTES_PER_ELEMENT: number; - - /** - * The ArrayBuffer instance referenced by the array. - */ - readonly buffer: ArrayBuffer; - - /** - * The length in bytes of the array. - */ - readonly byteLength: number; - - /** - * The offset in bytes of the array. - */ - readonly byteOffset: number; - - /** - * Returns the this object after copying a section of the array identified by start and end - * to the same array starting at position target - * @param target If target is negative, it is treated as length+target where length is the - * length of the array. - * @param start If start is negative, it is treated as length+start. If end is negative, it - * is treated as length+end. - * @param end If not specified, length of the this object is used as its default value. - */ - copyWithin(target: number, start: number, end?: number): Int8Array; - - /** - * Determines whether all the members of an array satisfy the specified test. - * @param callbackfn A function that accepts up to three arguments. The every method calls - * the callbackfn function for each element in array1 until the callbackfn returns false, - * or until the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - every(callbackfn: (value: number, index: number, array: Int8Array) => boolean, thisArg?: any): boolean; - - /** - * Returns the this object after filling the section identified by start and end with value - * @param value value to fill array section with - * @param start index to start filling the array at. If start is negative, it is treated as - * length+start where length is the length of the array. - * @param end index to stop filling the array at. If end is negative, it is treated as - * length+end. - */ - fill(value: number, start?: number, end?: number): Int8Array; - - /** - * Returns the elements of an array that meet the condition specified in a callback function. - * @param callbackfn A function that accepts up to three arguments. The filter method calls - * the callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - filter(callbackfn: (value: number, index: number, array: Int8Array) => boolean, thisArg?: any): Int8Array; - - /** - * Returns the value of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; - - /** - * Returns the index of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; - - /** - * Performs the specified action for each element in an array. - * @param callbackfn A function that accepts up to three arguments. forEach calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - forEach(callbackfn: (value: number, index: number, array: Int8Array) => void, thisArg?: any): void; - - /** - * Returns the index of the first occurrence of a value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the - * search starts at index 0. - */ - indexOf(searchElement: number, fromIndex?: number): number; - - /** - * Adds all the elements of an array separated by the specified separator string. - * @param separator A string used to separate one element of an array from the next in the - * resulting String. If omitted, the array elements are separated with a comma. - */ - join(separator?: string): string; - - /** - * Returns the index of the last occurrence of a value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the - * search starts at index 0. - */ - lastIndexOf(searchElement: number, fromIndex?: number): number; - - /** - * The length of the array. - */ - readonly length: number; - - /** - * Calls a defined callback function on each element of an array, and returns an array that - * contains the results. - * @param callbackfn A function that accepts up to three arguments. The map method calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - map(callbackfn: (value: number, index: number, array: Int8Array) => number, thisArg?: any): Int8Array; - - /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next - * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the - * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Int8Array) => number, initialValue?: number): number; - - /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next - * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the - * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduce(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Int8Array) => U, initialValue: U): U; - - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an - * argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an - * argument instead of an array value. - */ - reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Int8Array) => number, initialValue?: number): number; - - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an - * argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduceRight(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Int8Array) => U, initialValue: U): U; - - /** - * Reverses the elements in an Array. - */ - reverse(): Int8Array; - - /** - * Sets a value or an array of values. - * @param index The index of the location to set. - * @param value The value to set. - */ - set(index: number, value: number): void; - - /** - * Sets a value or an array of values. - * @param array A typed or untyped array of values to set. - * @param offset The index in the current array at which the values are to be written. - */ - set(array: ArrayLike, offset?: number): void; - - /** - * Returns a section of an array. - * @param start The beginning of the specified portion of the array. - * @param end The end of the specified portion of the array. - */ - slice(start?: number, end?: number): Int8Array; - - /** - * Determines whether the specified callback function returns true for any element of an array. - * @param callbackfn A function that accepts up to three arguments. The some method calls the - * callbackfn function for each element in array1 until the callbackfn returns true, or until - * the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - some(callbackfn: (value: number, index: number, array: Int8Array) => boolean, thisArg?: any): boolean; - - /** - * Sorts an array. - * @param compareFn The name of the function used to determine the order of the elements. If - * omitted, the elements are sorted in ascending, ASCII character order. - */ - sort(compareFn?: (a: number, b: number) => number): Int8Array; - - /** - * Gets a new Int8Array view of the ArrayBuffer store for this array, referencing the elements - * at begin, inclusive, up to end, exclusive. - * @param begin The index of the beginning of the array. - * @param end The index of the end of the array. - */ - subarray(begin: number, end?: number): Int8Array; - - /** - * Converts a number to a string by using the current locale. - */ - toLocaleString(): string; - - /** - * Returns a string representation of an array. - */ - toString(): string; - - [index: number]: number; -} -interface Int8ArrayConstructor { - readonly prototype: Int8Array; - new (length: number): Int8Array; - new (array: ArrayLike): Int8Array; - new (buffer: ArrayBuffer, byteOffset?: number, length?: number): Int8Array; - - /** - * The size in bytes of each element in the array. - */ - readonly BYTES_PER_ELEMENT: number; - - /** - * Returns a new array from a set of elements. - * @param items A set of elements to include in the new array object. - */ - of(...items: number[]): Int8Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: ArrayLike, mapfn?: (v: number, k: number) => number, thisArg?: any): Int8Array; - -} -declare const Int8Array: Int8ArrayConstructor; - -/** - * A typed array of 8-bit unsigned integer values. The contents are initialized to 0. If the - * requested number of bytes could not be allocated an exception is raised. - */ -interface Uint8Array { - /** - * The size in bytes of each element in the array. - */ - readonly BYTES_PER_ELEMENT: number; - - /** - * The ArrayBuffer instance referenced by the array. - */ - readonly buffer: ArrayBuffer; - - /** - * The length in bytes of the array. - */ - readonly byteLength: number; - - /** - * The offset in bytes of the array. - */ - readonly byteOffset: number; - - /** - * Returns the this object after copying a section of the array identified by start and end - * to the same array starting at position target - * @param target If target is negative, it is treated as length+target where length is the - * length of the array. - * @param start If start is negative, it is treated as length+start. If end is negative, it - * is treated as length+end. - * @param end If not specified, length of the this object is used as its default value. - */ - copyWithin(target: number, start: number, end?: number): Uint8Array; - - /** - * Determines whether all the members of an array satisfy the specified test. - * @param callbackfn A function that accepts up to three arguments. The every method calls - * the callbackfn function for each element in array1 until the callbackfn returns false, - * or until the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - every(callbackfn: (value: number, index: number, array: Uint8Array) => boolean, thisArg?: any): boolean; - - /** - * Returns the this object after filling the section identified by start and end with value - * @param value value to fill array section with - * @param start index to start filling the array at. If start is negative, it is treated as - * length+start where length is the length of the array. - * @param end index to stop filling the array at. If end is negative, it is treated as - * length+end. - */ - fill(value: number, start?: number, end?: number): Uint8Array; - - /** - * Returns the elements of an array that meet the condition specified in a callback function. - * @param callbackfn A function that accepts up to three arguments. The filter method calls - * the callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - filter(callbackfn: (value: number, index: number, array: Uint8Array) => boolean, thisArg?: any): Uint8Array; - - /** - * Returns the value of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; - - /** - * Returns the index of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; - - /** - * Performs the specified action for each element in an array. - * @param callbackfn A function that accepts up to three arguments. forEach calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - forEach(callbackfn: (value: number, index: number, array: Uint8Array) => void, thisArg?: any): void; - - /** - * Returns the index of the first occurrence of a value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the - * search starts at index 0. - */ - indexOf(searchElement: number, fromIndex?: number): number; - - /** - * Adds all the elements of an array separated by the specified separator string. - * @param separator A string used to separate one element of an array from the next in the - * resulting String. If omitted, the array elements are separated with a comma. - */ - join(separator?: string): string; - - /** - * Returns the index of the last occurrence of a value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the - * search starts at index 0. - */ - lastIndexOf(searchElement: number, fromIndex?: number): number; - - /** - * The length of the array. - */ - readonly length: number; - - /** - * Calls a defined callback function on each element of an array, and returns an array that - * contains the results. - * @param callbackfn A function that accepts up to three arguments. The map method calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - map(callbackfn: (value: number, index: number, array: Uint8Array) => number, thisArg?: any): Uint8Array; - - /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next - * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the - * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint8Array) => number, initialValue?: number): number; - - /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next - * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the - * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduce(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Uint8Array) => U, initialValue: U): U; - - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an - * argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an - * argument instead of an array value. - */ - reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint8Array) => number, initialValue?: number): number; - - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an - * argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduceRight(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Uint8Array) => U, initialValue: U): U; - - /** - * Reverses the elements in an Array. - */ - reverse(): Uint8Array; - - /** - * Sets a value or an array of values. - * @param index The index of the location to set. - * @param value The value to set. - */ - set(index: number, value: number): void; - - /** - * Sets a value or an array of values. - * @param array A typed or untyped array of values to set. - * @param offset The index in the current array at which the values are to be written. - */ - set(array: ArrayLike, offset?: number): void; - - /** - * Returns a section of an array. - * @param start The beginning of the specified portion of the array. - * @param end The end of the specified portion of the array. - */ - slice(start?: number, end?: number): Uint8Array; - - /** - * Determines whether the specified callback function returns true for any element of an array. - * @param callbackfn A function that accepts up to three arguments. The some method calls the - * callbackfn function for each element in array1 until the callbackfn returns true, or until - * the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - some(callbackfn: (value: number, index: number, array: Uint8Array) => boolean, thisArg?: any): boolean; - - /** - * Sorts an array. - * @param compareFn The name of the function used to determine the order of the elements. If - * omitted, the elements are sorted in ascending, ASCII character order. - */ - sort(compareFn?: (a: number, b: number) => number): Uint8Array; - - /** - * Gets a new Uint8Array view of the ArrayBuffer store for this array, referencing the elements - * at begin, inclusive, up to end, exclusive. - * @param begin The index of the beginning of the array. - * @param end The index of the end of the array. - */ - subarray(begin: number, end?: number): Uint8Array; - - /** - * Converts a number to a string by using the current locale. - */ - toLocaleString(): string; - - /** - * Returns a string representation of an array. - */ - toString(): string; - - [index: number]: number; -} - -interface Uint8ArrayConstructor { - readonly prototype: Uint8Array; - new (length: number): Uint8Array; - new (array: ArrayLike): Uint8Array; - new (buffer: ArrayBuffer, byteOffset?: number, length?: number): Uint8Array; - - /** - * The size in bytes of each element in the array. - */ - readonly BYTES_PER_ELEMENT: number; - - /** - * Returns a new array from a set of elements. - * @param items A set of elements to include in the new array object. - */ - of(...items: number[]): Uint8Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: ArrayLike, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint8Array; - -} -declare const Uint8Array: Uint8ArrayConstructor; - -/** - * A typed array of 8-bit unsigned integer (clamped) values. The contents are initialized to 0. - * If the requested number of bytes could not be allocated an exception is raised. - */ -interface Uint8ClampedArray { - /** - * The size in bytes of each element in the array. - */ - readonly BYTES_PER_ELEMENT: number; - - /** - * The ArrayBuffer instance referenced by the array. - */ - readonly buffer: ArrayBuffer; - - /** - * The length in bytes of the array. - */ - readonly byteLength: number; - - /** - * The offset in bytes of the array. - */ - readonly byteOffset: number; - - /** - * Returns the this object after copying a section of the array identified by start and end - * to the same array starting at position target - * @param target If target is negative, it is treated as length+target where length is the - * length of the array. - * @param start If start is negative, it is treated as length+start. If end is negative, it - * is treated as length+end. - * @param end If not specified, length of the this object is used as its default value. - */ - copyWithin(target: number, start: number, end?: number): Uint8ClampedArray; - - /** - * Determines whether all the members of an array satisfy the specified test. - * @param callbackfn A function that accepts up to three arguments. The every method calls - * the callbackfn function for each element in array1 until the callbackfn returns false, - * or until the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - every(callbackfn: (value: number, index: number, array: Uint8ClampedArray) => boolean, thisArg?: any): boolean; - - /** - * Returns the this object after filling the section identified by start and end with value - * @param value value to fill array section with - * @param start index to start filling the array at. If start is negative, it is treated as - * length+start where length is the length of the array. - * @param end index to stop filling the array at. If end is negative, it is treated as - * length+end. - */ - fill(value: number, start?: number, end?: number): Uint8ClampedArray; - - /** - * Returns the elements of an array that meet the condition specified in a callback function. - * @param callbackfn A function that accepts up to three arguments. The filter method calls - * the callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - filter(callbackfn: (value: number, index: number, array: Uint8ClampedArray) => boolean, thisArg?: any): Uint8ClampedArray; - - /** - * Returns the value of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; - - /** - * Returns the index of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; - - /** - * Performs the specified action for each element in an array. - * @param callbackfn A function that accepts up to three arguments. forEach calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - forEach(callbackfn: (value: number, index: number, array: Uint8ClampedArray) => void, thisArg?: any): void; - - /** - * Returns the index of the first occurrence of a value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the - * search starts at index 0. - */ - indexOf(searchElement: number, fromIndex?: number): number; - - /** - * Adds all the elements of an array separated by the specified separator string. - * @param separator A string used to separate one element of an array from the next in the - * resulting String. If omitted, the array elements are separated with a comma. - */ - join(separator?: string): string; - - /** - * Returns the index of the last occurrence of a value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the - * search starts at index 0. - */ - lastIndexOf(searchElement: number, fromIndex?: number): number; - - /** - * The length of the array. - */ - readonly length: number; - - /** - * Calls a defined callback function on each element of an array, and returns an array that - * contains the results. - * @param callbackfn A function that accepts up to three arguments. The map method calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - map(callbackfn: (value: number, index: number, array: Uint8ClampedArray) => number, thisArg?: any): Uint8ClampedArray; - - /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next - * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the - * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint8ClampedArray) => number, initialValue?: number): number; - - /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next - * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the - * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduce(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Uint8ClampedArray) => U, initialValue: U): U; - - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an - * argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an - * argument instead of an array value. - */ - reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint8ClampedArray) => number, initialValue?: number): number; - - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an - * argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduceRight(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Uint8ClampedArray) => U, initialValue: U): U; - - /** - * Reverses the elements in an Array. - */ - reverse(): Uint8ClampedArray; - - /** - * Sets a value or an array of values. - * @param index The index of the location to set. - * @param value The value to set. - */ - set(index: number, value: number): void; - - /** - * Sets a value or an array of values. - * @param array A typed or untyped array of values to set. - * @param offset The index in the current array at which the values are to be written. - */ - set(array: Uint8ClampedArray, offset?: number): void; - - /** - * Returns a section of an array. - * @param start The beginning of the specified portion of the array. - * @param end The end of the specified portion of the array. - */ - slice(start?: number, end?: number): Uint8ClampedArray; - - /** - * Determines whether the specified callback function returns true for any element of an array. - * @param callbackfn A function that accepts up to three arguments. The some method calls the - * callbackfn function for each element in array1 until the callbackfn returns true, or until - * the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - some(callbackfn: (value: number, index: number, array: Uint8ClampedArray) => boolean, thisArg?: any): boolean; - - /** - * Sorts an array. - * @param compareFn The name of the function used to determine the order of the elements. If - * omitted, the elements are sorted in ascending, ASCII character order. - */ - sort(compareFn?: (a: number, b: number) => number): Uint8ClampedArray; - - /** - * Gets a new Uint8ClampedArray view of the ArrayBuffer store for this array, referencing the elements - * at begin, inclusive, up to end, exclusive. - * @param begin The index of the beginning of the array. - * @param end The index of the end of the array. - */ - subarray(begin: number, end?: number): Uint8ClampedArray; - - /** - * Converts a number to a string by using the current locale. - */ - toLocaleString(): string; - - /** - * Returns a string representation of an array. - */ - toString(): string; - - [index: number]: number; -} - -interface Uint8ClampedArrayConstructor { - readonly prototype: Uint8ClampedArray; - new (length: number): Uint8ClampedArray; - new (array: ArrayLike): Uint8ClampedArray; - new (buffer: ArrayBuffer, byteOffset?: number, length?: number): Uint8ClampedArray; - - /** - * The size in bytes of each element in the array. - */ - readonly BYTES_PER_ELEMENT: number; - - /** - * Returns a new array from a set of elements. - * @param items A set of elements to include in the new array object. - */ - of(...items: number[]): Uint8ClampedArray; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: ArrayLike, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint8ClampedArray; -} -declare const Uint8ClampedArray: Uint8ClampedArrayConstructor; - -/** - * A typed array of 16-bit signed integer values. The contents are initialized to 0. If the - * requested number of bytes could not be allocated an exception is raised. - */ -interface Int16Array { - /** - * The size in bytes of each element in the array. - */ - readonly BYTES_PER_ELEMENT: number; - - /** - * The ArrayBuffer instance referenced by the array. - */ - readonly buffer: ArrayBuffer; - - /** - * The length in bytes of the array. - */ - readonly byteLength: number; - - /** - * The offset in bytes of the array. - */ - readonly byteOffset: number; - - /** - * Returns the this object after copying a section of the array identified by start and end - * to the same array starting at position target - * @param target If target is negative, it is treated as length+target where length is the - * length of the array. - * @param start If start is negative, it is treated as length+start. If end is negative, it - * is treated as length+end. - * @param end If not specified, length of the this object is used as its default value. - */ - copyWithin(target: number, start: number, end?: number): Int16Array; - - /** - * Determines whether all the members of an array satisfy the specified test. - * @param callbackfn A function that accepts up to three arguments. The every method calls - * the callbackfn function for each element in array1 until the callbackfn returns false, - * or until the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - every(callbackfn: (value: number, index: number, array: Int16Array) => boolean, thisArg?: any): boolean; - - /** - * Returns the this object after filling the section identified by start and end with value - * @param value value to fill array section with - * @param start index to start filling the array at. If start is negative, it is treated as - * length+start where length is the length of the array. - * @param end index to stop filling the array at. If end is negative, it is treated as - * length+end. - */ - fill(value: number, start?: number, end?: number): Int16Array; - - /** - * Returns the elements of an array that meet the condition specified in a callback function. - * @param callbackfn A function that accepts up to three arguments. The filter method calls - * the callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - filter(callbackfn: (value: number, index: number, array: Int16Array) => boolean, thisArg?: any): Int16Array; - - /** - * Returns the value of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; - - /** - * Returns the index of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; - - /** - * Performs the specified action for each element in an array. - * @param callbackfn A function that accepts up to three arguments. forEach calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - forEach(callbackfn: (value: number, index: number, array: Int16Array) => void, thisArg?: any): void; - - /** - * Returns the index of the first occurrence of a value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the - * search starts at index 0. - */ - indexOf(searchElement: number, fromIndex?: number): number; - - /** - * Adds all the elements of an array separated by the specified separator string. - * @param separator A string used to separate one element of an array from the next in the - * resulting String. If omitted, the array elements are separated with a comma. - */ - join(separator?: string): string; - - /** - * Returns the index of the last occurrence of a value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the - * search starts at index 0. - */ - lastIndexOf(searchElement: number, fromIndex?: number): number; - - /** - * The length of the array. - */ - readonly length: number; - - /** - * Calls a defined callback function on each element of an array, and returns an array that - * contains the results. - * @param callbackfn A function that accepts up to three arguments. The map method calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - map(callbackfn: (value: number, index: number, array: Int16Array) => number, thisArg?: any): Int16Array; - - /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next - * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the - * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Int16Array) => number, initialValue?: number): number; - - /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next - * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the - * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduce(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Int16Array) => U, initialValue: U): U; - - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an - * argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an - * argument instead of an array value. - */ - reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Int16Array) => number, initialValue?: number): number; - - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an - * argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduceRight(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Int16Array) => U, initialValue: U): U; - - /** - * Reverses the elements in an Array. - */ - reverse(): Int16Array; - - /** - * Sets a value or an array of values. - * @param index The index of the location to set. - * @param value The value to set. - */ - set(index: number, value: number): void; - - /** - * Sets a value or an array of values. - * @param array A typed or untyped array of values to set. - * @param offset The index in the current array at which the values are to be written. - */ - set(array: ArrayLike, offset?: number): void; - - /** - * Returns a section of an array. - * @param start The beginning of the specified portion of the array. - * @param end The end of the specified portion of the array. - */ - slice(start?: number, end?: number): Int16Array; - - /** - * Determines whether the specified callback function returns true for any element of an array. - * @param callbackfn A function that accepts up to three arguments. The some method calls the - * callbackfn function for each element in array1 until the callbackfn returns true, or until - * the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - some(callbackfn: (value: number, index: number, array: Int16Array) => boolean, thisArg?: any): boolean; - - /** - * Sorts an array. - * @param compareFn The name of the function used to determine the order of the elements. If - * omitted, the elements are sorted in ascending, ASCII character order. - */ - sort(compareFn?: (a: number, b: number) => number): Int16Array; - - /** - * Gets a new Int16Array view of the ArrayBuffer store for this array, referencing the elements - * at begin, inclusive, up to end, exclusive. - * @param begin The index of the beginning of the array. - * @param end The index of the end of the array. - */ - subarray(begin: number, end?: number): Int16Array; - - /** - * Converts a number to a string by using the current locale. - */ - toLocaleString(): string; - - /** - * Returns a string representation of an array. - */ - toString(): string; - - [index: number]: number; -} - -interface Int16ArrayConstructor { - readonly prototype: Int16Array; - new (length: number): Int16Array; - new (array: ArrayLike): Int16Array; - new (buffer: ArrayBuffer, byteOffset?: number, length?: number): Int16Array; - - /** - * The size in bytes of each element in the array. - */ - readonly BYTES_PER_ELEMENT: number; - - /** - * Returns a new array from a set of elements. - * @param items A set of elements to include in the new array object. - */ - of(...items: number[]): Int16Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: ArrayLike, mapfn?: (v: number, k: number) => number, thisArg?: any): Int16Array; - -} -declare const Int16Array: Int16ArrayConstructor; - -/** - * A typed array of 16-bit unsigned integer values. The contents are initialized to 0. If the - * requested number of bytes could not be allocated an exception is raised. - */ -interface Uint16Array { - /** - * The size in bytes of each element in the array. - */ - readonly BYTES_PER_ELEMENT: number; - - /** - * The ArrayBuffer instance referenced by the array. - */ - readonly buffer: ArrayBuffer; - - /** - * The length in bytes of the array. - */ - readonly byteLength: number; - - /** - * The offset in bytes of the array. - */ - readonly byteOffset: number; - - /** - * Returns the this object after copying a section of the array identified by start and end - * to the same array starting at position target - * @param target If target is negative, it is treated as length+target where length is the - * length of the array. - * @param start If start is negative, it is treated as length+start. If end is negative, it - * is treated as length+end. - * @param end If not specified, length of the this object is used as its default value. - */ - copyWithin(target: number, start: number, end?: number): Uint16Array; - - /** - * Determines whether all the members of an array satisfy the specified test. - * @param callbackfn A function that accepts up to three arguments. The every method calls - * the callbackfn function for each element in array1 until the callbackfn returns false, - * or until the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - every(callbackfn: (value: number, index: number, array: Uint16Array) => boolean, thisArg?: any): boolean; - - /** - * Returns the this object after filling the section identified by start and end with value - * @param value value to fill array section with - * @param start index to start filling the array at. If start is negative, it is treated as - * length+start where length is the length of the array. - * @param end index to stop filling the array at. If end is negative, it is treated as - * length+end. - */ - fill(value: number, start?: number, end?: number): Uint16Array; - - /** - * Returns the elements of an array that meet the condition specified in a callback function. - * @param callbackfn A function that accepts up to three arguments. The filter method calls - * the callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - filter(callbackfn: (value: number, index: number, array: Uint16Array) => boolean, thisArg?: any): Uint16Array; - - /** - * Returns the value of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; - - /** - * Returns the index of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; - - /** - * Performs the specified action for each element in an array. - * @param callbackfn A function that accepts up to three arguments. forEach calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - forEach(callbackfn: (value: number, index: number, array: Uint16Array) => void, thisArg?: any): void; - - /** - * Returns the index of the first occurrence of a value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the - * search starts at index 0. - */ - indexOf(searchElement: number, fromIndex?: number): number; - - /** - * Adds all the elements of an array separated by the specified separator string. - * @param separator A string used to separate one element of an array from the next in the - * resulting String. If omitted, the array elements are separated with a comma. - */ - join(separator?: string): string; - - /** - * Returns the index of the last occurrence of a value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the - * search starts at index 0. - */ - lastIndexOf(searchElement: number, fromIndex?: number): number; - - /** - * The length of the array. - */ - readonly length: number; - - /** - * Calls a defined callback function on each element of an array, and returns an array that - * contains the results. - * @param callbackfn A function that accepts up to three arguments. The map method calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - map(callbackfn: (value: number, index: number, array: Uint16Array) => number, thisArg?: any): Uint16Array; - - /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next - * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the - * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint16Array) => number, initialValue?: number): number; - - /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next - * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the - * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduce(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Uint16Array) => U, initialValue: U): U; - - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an - * argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an - * argument instead of an array value. - */ - reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint16Array) => number, initialValue?: number): number; - - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an - * argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduceRight(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Uint16Array) => U, initialValue: U): U; - - /** - * Reverses the elements in an Array. - */ - reverse(): Uint16Array; - - /** - * Sets a value or an array of values. - * @param index The index of the location to set. - * @param value The value to set. - */ - set(index: number, value: number): void; - - /** - * Sets a value or an array of values. - * @param array A typed or untyped array of values to set. - * @param offset The index in the current array at which the values are to be written. - */ - set(array: ArrayLike, offset?: number): void; - - /** - * Returns a section of an array. - * @param start The beginning of the specified portion of the array. - * @param end The end of the specified portion of the array. - */ - slice(start?: number, end?: number): Uint16Array; - - /** - * Determines whether the specified callback function returns true for any element of an array. - * @param callbackfn A function that accepts up to three arguments. The some method calls the - * callbackfn function for each element in array1 until the callbackfn returns true, or until - * the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - some(callbackfn: (value: number, index: number, array: Uint16Array) => boolean, thisArg?: any): boolean; - - /** - * Sorts an array. - * @param compareFn The name of the function used to determine the order of the elements. If - * omitted, the elements are sorted in ascending, ASCII character order. - */ - sort(compareFn?: (a: number, b: number) => number): Uint16Array; - - /** - * Gets a new Uint16Array view of the ArrayBuffer store for this array, referencing the elements - * at begin, inclusive, up to end, exclusive. - * @param begin The index of the beginning of the array. - * @param end The index of the end of the array. - */ - subarray(begin: number, end?: number): Uint16Array; - - /** - * Converts a number to a string by using the current locale. - */ - toLocaleString(): string; - - /** - * Returns a string representation of an array. - */ - toString(): string; - - [index: number]: number; -} - -interface Uint16ArrayConstructor { - readonly prototype: Uint16Array; - new (length: number): Uint16Array; - new (array: ArrayLike): Uint16Array; - new (buffer: ArrayBuffer, byteOffset?: number, length?: number): Uint16Array; - - /** - * The size in bytes of each element in the array. - */ - readonly BYTES_PER_ELEMENT: number; - - /** - * Returns a new array from a set of elements. - * @param items A set of elements to include in the new array object. - */ - of(...items: number[]): Uint16Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: ArrayLike, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint16Array; - -} -declare const Uint16Array: Uint16ArrayConstructor; -/** - * A typed array of 32-bit signed integer values. The contents are initialized to 0. If the - * requested number of bytes could not be allocated an exception is raised. - */ -interface Int32Array { - /** - * The size in bytes of each element in the array. - */ - readonly BYTES_PER_ELEMENT: number; - - /** - * The ArrayBuffer instance referenced by the array. - */ - readonly buffer: ArrayBuffer; - - /** - * The length in bytes of the array. - */ - readonly byteLength: number; - - /** - * The offset in bytes of the array. - */ - readonly byteOffset: number; - - /** - * Returns the this object after copying a section of the array identified by start and end - * to the same array starting at position target - * @param target If target is negative, it is treated as length+target where length is the - * length of the array. - * @param start If start is negative, it is treated as length+start. If end is negative, it - * is treated as length+end. - * @param end If not specified, length of the this object is used as its default value. - */ - copyWithin(target: number, start: number, end?: number): Int32Array; - - /** - * Determines whether all the members of an array satisfy the specified test. - * @param callbackfn A function that accepts up to three arguments. The every method calls - * the callbackfn function for each element in array1 until the callbackfn returns false, - * or until the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - every(callbackfn: (value: number, index: number, array: Int32Array) => boolean, thisArg?: any): boolean; - - /** - * Returns the this object after filling the section identified by start and end with value - * @param value value to fill array section with - * @param start index to start filling the array at. If start is negative, it is treated as - * length+start where length is the length of the array. - * @param end index to stop filling the array at. If end is negative, it is treated as - * length+end. - */ - fill(value: number, start?: number, end?: number): Int32Array; - - /** - * Returns the elements of an array that meet the condition specified in a callback function. - * @param callbackfn A function that accepts up to three arguments. The filter method calls - * the callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - filter(callbackfn: (value: number, index: number, array: Int32Array) => boolean, thisArg?: any): Int32Array; - - /** - * Returns the value of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; - - /** - * Returns the index of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; - - /** - * Performs the specified action for each element in an array. - * @param callbackfn A function that accepts up to three arguments. forEach calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - forEach(callbackfn: (value: number, index: number, array: Int32Array) => void, thisArg?: any): void; - - /** - * Returns the index of the first occurrence of a value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the - * search starts at index 0. - */ - indexOf(searchElement: number, fromIndex?: number): number; - - /** - * Adds all the elements of an array separated by the specified separator string. - * @param separator A string used to separate one element of an array from the next in the - * resulting String. If omitted, the array elements are separated with a comma. - */ - join(separator?: string): string; - - /** - * Returns the index of the last occurrence of a value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the - * search starts at index 0. - */ - lastIndexOf(searchElement: number, fromIndex?: number): number; - - /** - * The length of the array. - */ - readonly length: number; - - /** - * Calls a defined callback function on each element of an array, and returns an array that - * contains the results. - * @param callbackfn A function that accepts up to three arguments. The map method calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - map(callbackfn: (value: number, index: number, array: Int32Array) => number, thisArg?: any): Int32Array; - - /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next - * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the - * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Int32Array) => number, initialValue?: number): number; - - /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next - * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the - * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduce(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Int32Array) => U, initialValue: U): U; - - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an - * argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an - * argument instead of an array value. - */ - reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Int32Array) => number, initialValue?: number): number; - - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an - * argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduceRight(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Int32Array) => U, initialValue: U): U; - - /** - * Reverses the elements in an Array. - */ - reverse(): Int32Array; - - /** - * Sets a value or an array of values. - * @param index The index of the location to set. - * @param value The value to set. - */ - set(index: number, value: number): void; - - /** - * Sets a value or an array of values. - * @param array A typed or untyped array of values to set. - * @param offset The index in the current array at which the values are to be written. - */ - set(array: ArrayLike, offset?: number): void; - - /** - * Returns a section of an array. - * @param start The beginning of the specified portion of the array. - * @param end The end of the specified portion of the array. - */ - slice(start?: number, end?: number): Int32Array; - - /** - * Determines whether the specified callback function returns true for any element of an array. - * @param callbackfn A function that accepts up to three arguments. The some method calls the - * callbackfn function for each element in array1 until the callbackfn returns true, or until - * the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - some(callbackfn: (value: number, index: number, array: Int32Array) => boolean, thisArg?: any): boolean; - - /** - * Sorts an array. - * @param compareFn The name of the function used to determine the order of the elements. If - * omitted, the elements are sorted in ascending, ASCII character order. - */ - sort(compareFn?: (a: number, b: number) => number): Int32Array; - - /** - * Gets a new Int32Array view of the ArrayBuffer store for this array, referencing the elements - * at begin, inclusive, up to end, exclusive. - * @param begin The index of the beginning of the array. - * @param end The index of the end of the array. - */ - subarray(begin: number, end?: number): Int32Array; - - /** - * Converts a number to a string by using the current locale. - */ - toLocaleString(): string; - - /** - * Returns a string representation of an array. - */ - toString(): string; - - [index: number]: number; -} - -interface Int32ArrayConstructor { - readonly prototype: Int32Array; - new (length: number): Int32Array; - new (array: ArrayLike): Int32Array; - new (buffer: ArrayBuffer, byteOffset?: number, length?: number): Int32Array; - - /** - * The size in bytes of each element in the array. - */ - readonly BYTES_PER_ELEMENT: number; - - /** - * Returns a new array from a set of elements. - * @param items A set of elements to include in the new array object. - */ - of(...items: number[]): Int32Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: ArrayLike, mapfn?: (v: number, k: number) => number, thisArg?: any): Int32Array; -} -declare const Int32Array: Int32ArrayConstructor; - -/** - * A typed array of 32-bit unsigned integer values. The contents are initialized to 0. If the - * requested number of bytes could not be allocated an exception is raised. - */ -interface Uint32Array { - /** - * The size in bytes of each element in the array. - */ - readonly BYTES_PER_ELEMENT: number; - - /** - * The ArrayBuffer instance referenced by the array. - */ - readonly buffer: ArrayBuffer; - - /** - * The length in bytes of the array. - */ - readonly byteLength: number; - - /** - * The offset in bytes of the array. - */ - readonly byteOffset: number; - - /** - * Returns the this object after copying a section of the array identified by start and end - * to the same array starting at position target - * @param target If target is negative, it is treated as length+target where length is the - * length of the array. - * @param start If start is negative, it is treated as length+start. If end is negative, it - * is treated as length+end. - * @param end If not specified, length of the this object is used as its default value. - */ - copyWithin(target: number, start: number, end?: number): Uint32Array; - - /** - * Determines whether all the members of an array satisfy the specified test. - * @param callbackfn A function that accepts up to three arguments. The every method calls - * the callbackfn function for each element in array1 until the callbackfn returns false, - * or until the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - every(callbackfn: (value: number, index: number, array: Uint32Array) => boolean, thisArg?: any): boolean; - - /** - * Returns the this object after filling the section identified by start and end with value - * @param value value to fill array section with - * @param start index to start filling the array at. If start is negative, it is treated as - * length+start where length is the length of the array. - * @param end index to stop filling the array at. If end is negative, it is treated as - * length+end. - */ - fill(value: number, start?: number, end?: number): Uint32Array; - - /** - * Returns the elements of an array that meet the condition specified in a callback function. - * @param callbackfn A function that accepts up to three arguments. The filter method calls - * the callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - filter(callbackfn: (value: number, index: number, array: Uint32Array) => boolean, thisArg?: any): Uint32Array; - - /** - * Returns the value of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; - - /** - * Returns the index of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; - - /** - * Performs the specified action for each element in an array. - * @param callbackfn A function that accepts up to three arguments. forEach calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - forEach(callbackfn: (value: number, index: number, array: Uint32Array) => void, thisArg?: any): void; - - /** - * Returns the index of the first occurrence of a value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the - * search starts at index 0. - */ - indexOf(searchElement: number, fromIndex?: number): number; - - /** - * Adds all the elements of an array separated by the specified separator string. - * @param separator A string used to separate one element of an array from the next in the - * resulting String. If omitted, the array elements are separated with a comma. - */ - join(separator?: string): string; - - /** - * Returns the index of the last occurrence of a value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the - * search starts at index 0. - */ - lastIndexOf(searchElement: number, fromIndex?: number): number; - - /** - * The length of the array. - */ - readonly length: number; - - /** - * Calls a defined callback function on each element of an array, and returns an array that - * contains the results. - * @param callbackfn A function that accepts up to three arguments. The map method calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - map(callbackfn: (value: number, index: number, array: Uint32Array) => number, thisArg?: any): Uint32Array; - - /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next - * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the - * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint32Array) => number, initialValue?: number): number; - - /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next - * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the - * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduce(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Uint32Array) => U, initialValue: U): U; - - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an - * argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an - * argument instead of an array value. - */ - reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint32Array) => number, initialValue?: number): number; - - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an - * argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduceRight(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Uint32Array) => U, initialValue: U): U; - - /** - * Reverses the elements in an Array. - */ - reverse(): Uint32Array; - - /** - * Sets a value or an array of values. - * @param index The index of the location to set. - * @param value The value to set. - */ - set(index: number, value: number): void; - - /** - * Sets a value or an array of values. - * @param array A typed or untyped array of values to set. - * @param offset The index in the current array at which the values are to be written. - */ - set(array: ArrayLike, offset?: number): void; - - /** - * Returns a section of an array. - * @param start The beginning of the specified portion of the array. - * @param end The end of the specified portion of the array. - */ - slice(start?: number, end?: number): Uint32Array; - - /** - * Determines whether the specified callback function returns true for any element of an array. - * @param callbackfn A function that accepts up to three arguments. The some method calls the - * callbackfn function for each element in array1 until the callbackfn returns true, or until - * the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - some(callbackfn: (value: number, index: number, array: Uint32Array) => boolean, thisArg?: any): boolean; - - /** - * Sorts an array. - * @param compareFn The name of the function used to determine the order of the elements. If - * omitted, the elements are sorted in ascending, ASCII character order. - */ - sort(compareFn?: (a: number, b: number) => number): Uint32Array; - - /** - * Gets a new Uint32Array view of the ArrayBuffer store for this array, referencing the elements - * at begin, inclusive, up to end, exclusive. - * @param begin The index of the beginning of the array. - * @param end The index of the end of the array. - */ - subarray(begin: number, end?: number): Uint32Array; - - /** - * Converts a number to a string by using the current locale. - */ - toLocaleString(): string; - - /** - * Returns a string representation of an array. - */ - toString(): string; - - [index: number]: number; -} - -interface Uint32ArrayConstructor { - readonly prototype: Uint32Array; - new (length: number): Uint32Array; - new (array: ArrayLike): Uint32Array; - new (buffer: ArrayBuffer, byteOffset?: number, length?: number): Uint32Array; - - /** - * The size in bytes of each element in the array. - */ - readonly BYTES_PER_ELEMENT: number; - - /** - * Returns a new array from a set of elements. - * @param items A set of elements to include in the new array object. - */ - of(...items: number[]): Uint32Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: ArrayLike, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint32Array; -} -declare const Uint32Array: Uint32ArrayConstructor; - -/** - * A typed array of 32-bit float values. The contents are initialized to 0. If the requested number - * of bytes could not be allocated an exception is raised. - */ -interface Float32Array { - /** - * The size in bytes of each element in the array. - */ - readonly BYTES_PER_ELEMENT: number; - - /** - * The ArrayBuffer instance referenced by the array. - */ - readonly buffer: ArrayBuffer; - - /** - * The length in bytes of the array. - */ - readonly byteLength: number; - - /** - * The offset in bytes of the array. - */ - readonly byteOffset: number; - - /** - * Returns the this object after copying a section of the array identified by start and end - * to the same array starting at position target - * @param target If target is negative, it is treated as length+target where length is the - * length of the array. - * @param start If start is negative, it is treated as length+start. If end is negative, it - * is treated as length+end. - * @param end If not specified, length of the this object is used as its default value. - */ - copyWithin(target: number, start: number, end?: number): Float32Array; - - /** - * Determines whether all the members of an array satisfy the specified test. - * @param callbackfn A function that accepts up to three arguments. The every method calls - * the callbackfn function for each element in array1 until the callbackfn returns false, - * or until the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - every(callbackfn: (value: number, index: number, array: Float32Array) => boolean, thisArg?: any): boolean; - - /** - * Returns the this object after filling the section identified by start and end with value - * @param value value to fill array section with - * @param start index to start filling the array at. If start is negative, it is treated as - * length+start where length is the length of the array. - * @param end index to stop filling the array at. If end is negative, it is treated as - * length+end. - */ - fill(value: number, start?: number, end?: number): Float32Array; - - /** - * Returns the elements of an array that meet the condition specified in a callback function. - * @param callbackfn A function that accepts up to three arguments. The filter method calls - * the callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - filter(callbackfn: (value: number, index: number, array: Float32Array) => boolean, thisArg?: any): Float32Array; - - /** - * Returns the value of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; - - /** - * Returns the index of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; - - /** - * Performs the specified action for each element in an array. - * @param callbackfn A function that accepts up to three arguments. forEach calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - forEach(callbackfn: (value: number, index: number, array: Float32Array) => void, thisArg?: any): void; - - /** - * Returns the index of the first occurrence of a value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the - * search starts at index 0. - */ - indexOf(searchElement: number, fromIndex?: number): number; - - /** - * Adds all the elements of an array separated by the specified separator string. - * @param separator A string used to separate one element of an array from the next in the - * resulting String. If omitted, the array elements are separated with a comma. - */ - join(separator?: string): string; - - /** - * Returns the index of the last occurrence of a value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the - * search starts at index 0. - */ - lastIndexOf(searchElement: number, fromIndex?: number): number; - - /** - * The length of the array. - */ - readonly length: number; - - /** - * Calls a defined callback function on each element of an array, and returns an array that - * contains the results. - * @param callbackfn A function that accepts up to three arguments. The map method calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - map(callbackfn: (value: number, index: number, array: Float32Array) => number, thisArg?: any): Float32Array; - - /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next - * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the - * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Float32Array) => number, initialValue?: number): number; - - /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next - * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the - * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduce(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Float32Array) => U, initialValue: U): U; - - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an - * argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an - * argument instead of an array value. - */ - reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Float32Array) => number, initialValue?: number): number; - - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an - * argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduceRight(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Float32Array) => U, initialValue: U): U; - - /** - * Reverses the elements in an Array. - */ - reverse(): Float32Array; - - /** - * Sets a value or an array of values. - * @param index The index of the location to set. - * @param value The value to set. - */ - set(index: number, value: number): void; - - /** - * Sets a value or an array of values. - * @param array A typed or untyped array of values to set. - * @param offset The index in the current array at which the values are to be written. - */ - set(array: ArrayLike, offset?: number): void; - - /** - * Returns a section of an array. - * @param start The beginning of the specified portion of the array. - * @param end The end of the specified portion of the array. - */ - slice(start?: number, end?: number): Float32Array; - - /** - * Determines whether the specified callback function returns true for any element of an array. - * @param callbackfn A function that accepts up to three arguments. The some method calls the - * callbackfn function for each element in array1 until the callbackfn returns true, or until - * the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - some(callbackfn: (value: number, index: number, array: Float32Array) => boolean, thisArg?: any): boolean; - - /** - * Sorts an array. - * @param compareFn The name of the function used to determine the order of the elements. If - * omitted, the elements are sorted in ascending, ASCII character order. - */ - sort(compareFn?: (a: number, b: number) => number): Float32Array; - - /** - * Gets a new Float32Array view of the ArrayBuffer store for this array, referencing the elements - * at begin, inclusive, up to end, exclusive. - * @param begin The index of the beginning of the array. - * @param end The index of the end of the array. - */ - subarray(begin: number, end?: number): Float32Array; - - /** - * Converts a number to a string by using the current locale. - */ - toLocaleString(): string; - - /** - * Returns a string representation of an array. - */ - toString(): string; - - [index: number]: number; -} - -interface Float32ArrayConstructor { - readonly prototype: Float32Array; - new (length: number): Float32Array; - new (array: ArrayLike): Float32Array; - new (buffer: ArrayBuffer, byteOffset?: number, length?: number): Float32Array; - - /** - * The size in bytes of each element in the array. - */ - readonly BYTES_PER_ELEMENT: number; - - /** - * Returns a new array from a set of elements. - * @param items A set of elements to include in the new array object. - */ - of(...items: number[]): Float32Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: ArrayLike, mapfn?: (v: number, k: number) => number, thisArg?: any): Float32Array; - -} -declare const Float32Array: Float32ArrayConstructor; - -/** - * A typed array of 64-bit float values. The contents are initialized to 0. If the requested - * number of bytes could not be allocated an exception is raised. - */ -interface Float64Array { - /** - * The size in bytes of each element in the array. - */ - readonly BYTES_PER_ELEMENT: number; - - /** - * The ArrayBuffer instance referenced by the array. - */ - readonly buffer: ArrayBuffer; - - /** - * The length in bytes of the array. - */ - readonly byteLength: number; - - /** - * The offset in bytes of the array. - */ - readonly byteOffset: number; - - /** - * Returns the this object after copying a section of the array identified by start and end - * to the same array starting at position target - * @param target If target is negative, it is treated as length+target where length is the - * length of the array. - * @param start If start is negative, it is treated as length+start. If end is negative, it - * is treated as length+end. - * @param end If not specified, length of the this object is used as its default value. - */ - copyWithin(target: number, start: number, end?: number): Float64Array; - - /** - * Determines whether all the members of an array satisfy the specified test. - * @param callbackfn A function that accepts up to three arguments. The every method calls - * the callbackfn function for each element in array1 until the callbackfn returns false, - * or until the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - every(callbackfn: (value: number, index: number, array: Float64Array) => boolean, thisArg?: any): boolean; - - /** - * Returns the this object after filling the section identified by start and end with value - * @param value value to fill array section with - * @param start index to start filling the array at. If start is negative, it is treated as - * length+start where length is the length of the array. - * @param end index to stop filling the array at. If end is negative, it is treated as - * length+end. - */ - fill(value: number, start?: number, end?: number): Float64Array; - - /** - * Returns the elements of an array that meet the condition specified in a callback function. - * @param callbackfn A function that accepts up to three arguments. The filter method calls - * the callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - filter(callbackfn: (value: number, index: number, array: Float64Array) => boolean, thisArg?: any): Float64Array; - - /** - * Returns the value of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; - - /** - * Returns the index of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; - - /** - * Performs the specified action for each element in an array. - * @param callbackfn A function that accepts up to three arguments. forEach calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - forEach(callbackfn: (value: number, index: number, array: Float64Array) => void, thisArg?: any): void; - - /** - * Returns the index of the first occurrence of a value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the - * search starts at index 0. - */ - indexOf(searchElement: number, fromIndex?: number): number; - - /** - * Adds all the elements of an array separated by the specified separator string. - * @param separator A string used to separate one element of an array from the next in the - * resulting String. If omitted, the array elements are separated with a comma. - */ - join(separator?: string): string; - - /** - * Returns the index of the last occurrence of a value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the - * search starts at index 0. - */ - lastIndexOf(searchElement: number, fromIndex?: number): number; - - /** - * The length of the array. - */ - readonly length: number; - - /** - * Calls a defined callback function on each element of an array, and returns an array that - * contains the results. - * @param callbackfn A function that accepts up to three arguments. The map method calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - map(callbackfn: (value: number, index: number, array: Float64Array) => number, thisArg?: any): Float64Array; - - /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next - * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the - * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Float64Array) => number, initialValue?: number): number; - - /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next - * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the - * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduce(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Float64Array) => U, initialValue: U): U; - - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an - * argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an - * argument instead of an array value. - */ - reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Float64Array) => number, initialValue?: number): number; - - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an - * argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduceRight(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Float64Array) => U, initialValue: U): U; - - /** - * Reverses the elements in an Array. - */ - reverse(): Float64Array; - - /** - * Sets a value or an array of values. - * @param index The index of the location to set. - * @param value The value to set. - */ - set(index: number, value: number): void; - - /** - * Sets a value or an array of values. - * @param array A typed or untyped array of values to set. - * @param offset The index in the current array at which the values are to be written. - */ - set(array: ArrayLike, offset?: number): void; - - /** - * Returns a section of an array. - * @param start The beginning of the specified portion of the array. - * @param end The end of the specified portion of the array. - */ - slice(start?: number, end?: number): Float64Array; - - /** - * Determines whether the specified callback function returns true for any element of an array. - * @param callbackfn A function that accepts up to three arguments. The some method calls the - * callbackfn function for each element in array1 until the callbackfn returns true, or until - * the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - some(callbackfn: (value: number, index: number, array: Float64Array) => boolean, thisArg?: any): boolean; - - /** - * Sorts an array. - * @param compareFn The name of the function used to determine the order of the elements. If - * omitted, the elements are sorted in ascending, ASCII character order. - */ - sort(compareFn?: (a: number, b: number) => number): Float64Array; - - /** - * Gets a new Float64Array view of the ArrayBuffer store for this array, referencing the elements - * at begin, inclusive, up to end, exclusive. - * @param begin The index of the beginning of the array. - * @param end The index of the end of the array. - */ - subarray(begin: number, end?: number): Float64Array; - - /** - * Converts a number to a string by using the current locale. - */ - toLocaleString(): string; - - /** - * Returns a string representation of an array. - */ - toString(): string; - - [index: number]: number; -} - -interface Float64ArrayConstructor { - readonly prototype: Float64Array; - new (length: number): Float64Array; - new (array: ArrayLike): Float64Array; - new (buffer: ArrayBuffer, byteOffset?: number, length?: number): Float64Array; - - /** - * The size in bytes of each element in the array. - */ - readonly BYTES_PER_ELEMENT: number; - - /** - * Returns a new array from a set of elements. - * @param items A set of elements to include in the new array object. - */ - of(...items: number[]): Float64Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: ArrayLike, mapfn?: (v: number, k: number) => number, thisArg?: any): Float64Array; -} -declare const Float64Array: Float64ArrayConstructor; -declare type PropertyKey = string | number | symbol; - -interface Symbol { - /** Returns a string representation of an object. */ - toString(): string; - - /** Returns the primitive value of the specified object. */ - valueOf(): Object; - - readonly [Symbol.toStringTag]: "Symbol"; -} - -interface SymbolConstructor { - /** - * A reference to the prototype. - */ - readonly prototype: Symbol; - - /** - * Returns a new unique Symbol value. - * @param description Description of the new Symbol object. - */ - (description?: string|number): symbol; - - /** - * Returns a Symbol object from the global symbol registry matching the given key if found. - * Otherwise, returns a new symbol with this key. - * @param key key to search for. - */ - for(key: string): symbol; - - /** - * Returns a key from the global symbol registry matching the given Symbol if found. - * Otherwise, returns a undefined. - * @param sym Symbol to find the key for. - */ - keyFor(sym: symbol): string; - - // Well-known Symbols - - /** - * A method that determines if a constructor object recognizes an object as one of the - * constructor’s instances. Called by the semantics of the instanceof operator. - */ - readonly hasInstance: symbol; - - /** - * A Boolean value that if true indicates that an object should flatten to its array elements - * by Array.prototype.concat. - */ - readonly isConcatSpreadable: symbol; - - /** - * A method that returns the default iterator for an object. Called by the semantics of the - * for-of statement. - */ - readonly iterator: symbol; - - /** - * A regular expression method that matches the regular expression against a string. Called - * by the String.prototype.match method. - */ - readonly match: symbol; - - /** - * A regular expression method that replaces matched substrings of a string. Called by the - * String.prototype.replace method. - */ - readonly replace: symbol; - - /** - * A regular expression method that returns the index within a string that matches the - * regular expression. Called by the String.prototype.search method. - */ - readonly search: symbol; - - /** - * A function valued property that is the constructor function that is used to create - * derived objects. - */ - readonly species: symbol; - - /** - * A regular expression method that splits a string at the indices that match the regular - * expression. Called by the String.prototype.split method. - */ - readonly split: symbol; - - /** - * A method that converts an object to a corresponding primitive value. - * Called by the ToPrimitive abstract operation. - */ - readonly toPrimitive: symbol; - - /** - * A String value that is used in the creation of the default string description of an object. - * Called by the built-in method Object.prototype.toString. - */ - readonly toStringTag: symbol; - - /** - * An Object whose own property names are property names that are excluded from the 'with' - * environment bindings of the associated objects. - */ - readonly unscopables: symbol; -} -declare var Symbol: SymbolConstructor; - -interface Object { - /** - * Determines whether an object has a property with the specified name. - * @param v A property name. - */ - hasOwnProperty(v: PropertyKey): boolean; - - /** - * Determines whether a specified property is enumerable. - * @param v A property name. - */ - propertyIsEnumerable(v: PropertyKey): boolean; -} - -interface ObjectConstructor { - /** - * Copy the values of all of the enumerable own properties from one or more source objects to a - * target object. Returns the target object. - * @param target The target object to copy to. - * @param source The source object from which to copy properties. - */ - assign(target: T, source: U): T & U; - - /** - * Copy the values of all of the enumerable own properties from one or more source objects to a - * target object. Returns the target object. - * @param target The target object to copy to. - * @param source1 The first source object from which to copy properties. - * @param source2 The second source object from which to copy properties. - */ - assign(target: T, source1: U, source2: V): T & U & V; - - /** - * Copy the values of all of the enumerable own properties from one or more source objects to a - * target object. Returns the target object. - * @param target The target object to copy to. - * @param source1 The first source object from which to copy properties. - * @param source2 The second source object from which to copy properties. - * @param source3 The third source object from which to copy properties. - */ - assign(target: T, source1: U, source2: V, source3: W): T & U & V & W; - - /** - * Copy the values of all of the enumerable own properties from one or more source objects to a - * target object. Returns the target object. - * @param target The target object to copy to. - * @param sources One or more source objects from which to copy properties - */ - assign(target: any, ...sources: any[]): any; - - /** - * Returns an array of all symbol properties found directly on object o. - * @param o Object to retrieve the symbols from. - */ - getOwnPropertySymbols(o: any): symbol[]; - - /** - * Returns true if the values are the same value, false otherwise. - * @param value1 The first value. - * @param value2 The second value. - */ - is(value1: any, value2: any): boolean; - - /** - * Sets the prototype of a specified object o to object proto or null. Returns the object o. - * @param o The object to change its prototype. - * @param proto The value of the new prototype or null. - */ - setPrototypeOf(o: any, proto: any): any; - - /** - * Gets the own property descriptor of the specified object. - * An own property descriptor is one that is defined directly on the object and is not - * inherited from the object's prototype. - * @param o Object that contains the property. - * @param p Name of the property. - */ - getOwnPropertyDescriptor(o: any, propertyKey: PropertyKey): PropertyDescriptor; - - /** - * Adds a property to an object, or modifies attributes of an existing property. - * @param o Object on which to add or modify the property. This can be a native JavaScript - * object (that is, a user-defined object or a built in object) or a DOM object. - * @param p The property name. - * @param attributes Descriptor for the property. It can be for a data property or an accessor - * property. - */ - defineProperty(o: any, propertyKey: PropertyKey, attributes: PropertyDescriptor): any; -} - -interface Function { - /** - * Returns the name of the function. Function names are read-only and can not be changed. - */ - readonly name: string; - - /** - * Determines whether the given value inherits from this function if this function was used - * as a constructor function. - * - * A constructor function can control which objects are recognized as its instances by - * 'instanceof' by overriding this method. - */ - [Symbol.hasInstance](value: any): boolean; -} - -interface NumberConstructor { - /** - * The value of Number.EPSILON is the difference between 1 and the smallest value greater than 1 - * that is representable as a Number value, which is approximately: - * 2.2204460492503130808472633361816 x 10‍−‍16. - */ - readonly EPSILON: number; - - /** - * Returns true if passed value is finite. - * Unlike the global isFininte, Number.isFinite doesn't forcibly convert the parameter to a - * number. Only finite values of the type number, result in true. - * @param number A numeric value. - */ - isFinite(number: number): boolean; - - /** - * Returns true if the value passed is an integer, false otherwise. - * @param number A numeric value. - */ - isInteger(number: number): boolean; - - /** - * Returns a Boolean value that indicates whether a value is the reserved value NaN (not a - * number). Unlike the global isNaN(), Number.isNaN() doesn't forcefully convert the parameter - * to a number. Only values of the type number, that are also NaN, result in true. - * @param number A numeric value. - */ - isNaN(number: number): boolean; - - /** - * Returns true if the value passed is a safe integer. - * @param number A numeric value. - */ - isSafeInteger(number: number): boolean; - - /** - * The value of the largest integer n such that n and n + 1 are both exactly representable as - * a Number value. - * The value of Number.MIN_SAFE_INTEGER is 9007199254740991 2^53 − 1. - */ - readonly MAX_SAFE_INTEGER: number; - - /** - * The value of the smallest integer n such that n and n − 1 are both exactly representable as - * a Number value. - * The value of Number.MIN_SAFE_INTEGER is −9007199254740991 (−(2^53 − 1)). - */ - readonly MIN_SAFE_INTEGER: number; - - /** - * Converts a string to a floating-point number. - * @param string A string that contains a floating-point number. - */ - parseFloat(string: string): number; - - /** - * Converts A string to an integer. - * @param s A string to convert into a number. - * @param radix A value between 2 and 36 that specifies the base of the number in numString. - * If this argument is not supplied, strings with a prefix of '0x' are considered hexadecimal. - * All other strings are considered decimal. - */ - parseInt(string: string, radix?: number): number; -} - -interface Array { - /** Iterator */ - [Symbol.iterator](): IterableIterator; - - /** - * Returns an object whose properties have the value 'true' - * when they will be absent when used in a 'with' statement. - */ - [Symbol.unscopables](): { - copyWithin: boolean; - entries: boolean; - fill: boolean; - find: boolean; - findIndex: boolean; - keys: boolean; - values: boolean; - }; - - /** - * Returns an array of key, value pairs for every entry in the array - */ - entries(): IterableIterator<[number, T]>; - - /** - * Returns an list of keys in the array - */ - keys(): IterableIterator; - - /** - * Returns an list of values in the array - */ - values(): IterableIterator; - - /** - * Returns the value of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - find(predicate: (value: T, index: number, obj: Array) => boolean, thisArg?: any): T; - - /** - * Returns the index of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - findIndex(predicate: (value: T) => boolean, thisArg?: any): number; - - /** - * Returns the this object after filling the section identified by start and end with value - * @param value value to fill array section with - * @param start index to start filling the array at. If start is negative, it is treated as - * length+start where length is the length of the array. - * @param end index to stop filling the array at. If end is negative, it is treated as - * length+end. - */ - fill(value: T, start?: number, end?: number): T[]; - - /** - * Returns the this object after copying a section of the array identified by start and end - * to the same array starting at position target - * @param target If target is negative, it is treated as length+target where length is the - * length of the array. - * @param start If start is negative, it is treated as length+start. If end is negative, it - * is treated as length+end. - * @param end If not specified, length of the this object is used as its default value. - */ - copyWithin(target: number, start: number, end?: number): T[]; -} - -interface IArguments { - /** Iterator */ - [Symbol.iterator](): IterableIterator; -} - -interface ArrayConstructor { - /** - * Creates an array from an array-like object. - * @param arrayLike An array-like object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): Array; - - /** - * Creates an array from an iterable object. - * @param iterable An iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(iterable: Iterable, mapfn: (v: T, k: number) => U, thisArg?: any): Array; - - /** - * Creates an array from an array-like object. - * @param arrayLike An array-like object to convert to an array. - */ - from(arrayLike: ArrayLike): Array; - - /** - * Creates an array from an iterable object. - * @param iterable An iterable object to convert to an array. - */ - from(iterable: Iterable): Array; - - /** - * Returns a new array from a set of elements. - * @param items A set of elements to include in the new array object. - */ - of(...items: T[]): Array; -} - -interface String { - /** Iterator */ - [Symbol.iterator](): IterableIterator; - - /** - * Returns a nonnegative integer Number less than 1114112 (0x110000) that is the code point - * value of the UTF-16 encoded code point starting at the string element at position pos in - * the String resulting from converting this object to a String. - * If there is no element at that position, the result is undefined. - * If a valid UTF-16 surrogate pair does not begin at pos, the result is the code unit at pos. - */ - codePointAt(pos: number): number; - - /** - * Returns true if searchString appears as a substring of the result of converting this - * object to a String, at one or more positions that are - * greater than or equal to position; otherwise, returns false. - * @param searchString search string - * @param position If position is undefined, 0 is assumed, so as to search all of the String. - */ - includes(searchString: string, position?: number): boolean; - - /** - * Returns true if the sequence of elements of searchString converted to a String is the - * same as the corresponding elements of this object (converted to a String) starting at - * endPosition – length(this). Otherwise returns false. - */ - endsWith(searchString: string, endPosition?: number): boolean; - - /** - * Returns the String value result of normalizing the string into the normalization form - * named by form as specified in Unicode Standard Annex #15, Unicode Normalization Forms. - * @param form Applicable values: "NFC", "NFD", "NFKC", or "NFKD", If not specified default - * is "NFC" - */ - normalize(form?: string): string; - - /** - * Returns a String value that is made from count copies appended together. If count is 0, - * T is the empty String is returned. - * @param count number of copies to append - */ - repeat(count: number): string; - - /** - * Returns true if the sequence of elements of searchString converted to a String is the - * same as the corresponding elements of this object (converted to a String) starting at - * position. Otherwise returns false. - */ - startsWith(searchString: string, position?: number): boolean; - - // Overloads for objects with methods of well-known symbols. - - /** - * Matches a string an object that supports being matched against, and returns an array containing the results of that search. - * @param matcher An object that supports being matched against. - */ - match(matcher: { [Symbol.match](string: string): RegExpMatchArray; }): RegExpMatchArray; - - /** - * Replaces text in a string, using an object that supports replacement within a string. - * @param searchValue A object can search for and replace matches within a string. - * @param replaceValue A string containing the text to replace for every successful match of searchValue in this string. - */ - replace(searchValue: { [Symbol.replace](string: string, replaceValue: string): string; }, replaceValue: string): string; - - /** - * Replaces text in a string, using an object that supports replacement within a string. - * @param searchValue A object can search for and replace matches within a string. - * @param replacer A function that returns the replacement text. - */ - replace(searchValue: { [Symbol.replace](string: string, replacer: (substring: string, ...args: any[]) => string): string; }, replacer: (substring: string, ...args: any[]) => string): string; - - /** - * Finds the first substring match in a regular expression search. - * @param searcher An object which supports searching within a string. - */ - search(searcher: { [Symbol.search](string: string): number; }): number; - - /** - * Split a string into substrings using the specified separator and return them as an array. - * @param splitter An object that can split a string. - * @param limit A value used to limit the number of elements returned in the array. - */ - split(splitter: { [Symbol.split](string: string, limit?: number): string[]; }, limit?: number): string[]; - - /** - * Returns an HTML anchor element and sets the name attribute to the text value - * @param name - */ - anchor(name: string): string; - - /** Returns a HTML element */ - big(): string; - - /** Returns a HTML element */ - blink(): string; - - /** Returns a HTML element */ - bold(): string; - - /** Returns a HTML element */ - fixed(): string - - /** Returns a HTML element and sets the color attribute value */ - fontcolor(color: string): string - - /** Returns a HTML element and sets the size attribute value */ - fontsize(size: number): string; - - /** Returns a HTML element and sets the size attribute value */ - fontsize(size: string): string; - - /** Returns an HTML element */ - italics(): string; - - /** Returns an HTML element and sets the href attribute value */ - link(url: string): string; - - /** Returns a HTML element */ - small(): string; - - /** Returns a HTML element */ - strike(): string; - - /** Returns a HTML element */ - sub(): string; - - /** Returns a HTML element */ - sup(): string; -} - -interface StringConstructor { - /** - * Return the String value whose elements are, in order, the elements in the List elements. - * If length is 0, the empty string is returned. - */ - fromCodePoint(...codePoints: number[]): string; - - /** - * String.raw is intended for use as a tag function of a Tagged Template String. When called - * as such the first argument will be a well formed template call site object and the rest - * parameter will contain the substitution values. - * @param template A well-formed template string call site representation. - * @param substitutions A set of substitution values. - */ - raw(template: TemplateStringsArray, ...substitutions: any[]): string; -} - -interface IteratorResult { - done: boolean; - value?: T; -} - -interface Iterator { - next(value?: any): IteratorResult; - return?(value?: any): IteratorResult; - throw?(e?: any): IteratorResult; -} - -interface Iterable { - [Symbol.iterator](): Iterator; -} - -interface IterableIterator extends Iterator { - [Symbol.iterator](): IterableIterator; -} - -interface GeneratorFunction extends Function { - readonly [Symbol.toStringTag]: "GeneratorFunction"; -} - -interface GeneratorFunctionConstructor { - /** - * Creates a new Generator function. - * @param args A list of arguments the function accepts. - */ - new (...args: string[]): GeneratorFunction; - (...args: string[]): GeneratorFunction; - readonly prototype: GeneratorFunction; -} -declare var GeneratorFunction: GeneratorFunctionConstructor; - -interface Math { - /** - * Returns the number of leading zero bits in the 32-bit binary representation of a number. - * @param x A numeric expression. - */ - clz32(x: number): number; - - /** - * Returns the result of 32-bit multiplication of two numbers. - * @param x First number - * @param y Second number - */ - imul(x: number, y: number): number; - - /** - * Returns the sign of the x, indicating whether x is positive, negative or zero. - * @param x The numeric expression to test - */ - sign(x: number): number; - - /** - * Returns the base 10 logarithm of a number. - * @param x A numeric expression. - */ - log10(x: number): number; - - /** - * Returns the base 2 logarithm of a number. - * @param x A numeric expression. - */ - log2(x: number): number; - - /** - * Returns the natural logarithm of 1 + x. - * @param x A numeric expression. - */ - log1p(x: number): number; - - /** - * Returns the result of (e^x - 1) of x (e raised to the power of x, where e is the base of - * the natural logarithms). - * @param x A numeric expression. - */ - expm1(x: number): number; - - /** - * Returns the hyperbolic cosine of a number. - * @param x A numeric expression that contains an angle measured in radians. - */ - cosh(x: number): number; - - /** - * Returns the hyperbolic sine of a number. - * @param x A numeric expression that contains an angle measured in radians. - */ - sinh(x: number): number; - - /** - * Returns the hyperbolic tangent of a number. - * @param x A numeric expression that contains an angle measured in radians. - */ - tanh(x: number): number; - - /** - * Returns the inverse hyperbolic cosine of a number. - * @param x A numeric expression that contains an angle measured in radians. - */ - acosh(x: number): number; - - /** - * Returns the inverse hyperbolic sine of a number. - * @param x A numeric expression that contains an angle measured in radians. - */ - asinh(x: number): number; - - /** - * Returns the inverse hyperbolic tangent of a number. - * @param x A numeric expression that contains an angle measured in radians. - */ - atanh(x: number): number; - - /** - * Returns the square root of the sum of squares of its arguments. - * @param values Values to compute the square root for. - * If no arguments are passed, the result is +0. - * If there is only one argument, the result is the absolute value. - * If any argument is +Infinity or -Infinity, the result is +Infinity. - * If any argument is NaN, the result is NaN. - * If all arguments are either +0 or −0, the result is +0. - */ - hypot(...values: number[] ): number; - - /** - * Returns the integral part of the a numeric expression, x, removing any fractional digits. - * If x is already an integer, the result is x. - * @param x A numeric expression. - */ - trunc(x: number): number; - - /** - * Returns the nearest single precision float representation of a number. - * @param x A numeric expression. - */ - fround(x: number): number; - - /** - * Returns an implementation-dependent approximation to the cube root of number. - * @param x A numeric expression. - */ - cbrt(x: number): number; - - readonly [Symbol.toStringTag]: "Math"; -} - -interface Date { - /** - * Converts a Date object to a string. - */ - [Symbol.toPrimitive](hint: "default"): string; - /** - * Converts a Date object to a string. - */ - [Symbol.toPrimitive](hint: "string"): string; - /** - * Converts a Date object to a number. - */ - [Symbol.toPrimitive](hint: "number"): number; - /** - * Converts a Date object to a string or number. - * - * @param hint The strings "number", "string", or "default" to specify what primitive to return. - * - * @throws {TypeError} If 'hint' was given something other than "number", "string", or "default". - * @returns A number if 'hint' was "number", a string if 'hint' was "string" or "default". - */ - [Symbol.toPrimitive](hint: string): string | number; -} - -interface RegExp { - /** - * Matches a string with this regular expression, and returns an array containing the results of - * that search. - * @param string A string to search within. - */ - [Symbol.match](string: string): RegExpMatchArray; - - /** - * Replaces text in a string, using this regular expression. - * @param string A String object or string literal whose contents matching against - * this regular expression will be replaced - * @param replaceValue A String object or string literal containing the text to replace for every - * successful match of this regular expression. - */ - [Symbol.replace](string: string, replaceValue: string): string; - - /** - * Replaces text in a string, using this regular expression. - * @param string A String object or string literal whose contents matching against - * this regular expression will be replaced - * @param replacer A function that returns the replacement text. - */ - [Symbol.replace](string: string, replacer: (substring: string, ...args: any[]) => string): string; - - /** - * Finds the position beginning first substring match in a regular expression search - * using this regular expression. - * - * @param string The string to search within. - */ - [Symbol.search](string: string): number; - - /** - * Returns an array of substrings that were delimited by strings in the original input that - * match against this regular expression. - * - * If the regular expression contains capturing parentheses, then each time this - * regular expression matches, the results (including any undefined results) of the - * capturing parentheses are spliced. - * - * @param string string value to split - * @param limit if not undefined, the output array is truncated so that it contains no more - * than 'limit' elements. - */ - [Symbol.split](string: string, limit?: number): string[]; - - /** - * Returns a string indicating the flags of the regular expression in question. This field is read-only. - * The characters in this string are sequenced and concatenated in the following order: - * - * - "g" for global - * - "i" for ignoreCase - * - "m" for multiline - * - "u" for unicode - * - "y" for sticky - * - * If no flags are set, the value is the empty string. - */ - readonly flags: string; - - /** - * Returns a Boolean value indicating the state of the sticky flag (y) used with a regular - * expression. Default is false. Read-only. - */ - readonly sticky: boolean; - - /** - * Returns a Boolean value indicating the state of the Unicode flag (u) used with a regular - * expression. Default is false. Read-only. - */ - readonly unicode: boolean; -} - -interface RegExpConstructor { - [Symbol.species](): RegExpConstructor; -} - -interface Map { - clear(): void; - delete(key: K): boolean; - entries(): IterableIterator<[K, V]>; - forEach(callbackfn: (value: V, index: K, map: Map) => void, thisArg?: any): void; - get(key: K): V; - has(key: K): boolean; - keys(): IterableIterator; - set(key: K, value?: V): Map; - readonly size: number; - values(): IterableIterator; - [Symbol.iterator]():IterableIterator<[K,V]>; - readonly [Symbol.toStringTag]: "Map"; -} - -interface MapConstructor { - new (): Map; - new (): Map; - new (iterable: Iterable<[K, V]>): Map; - readonly prototype: Map; -} -declare var Map: MapConstructor; - -interface WeakMap { - clear(): void; - delete(key: K): boolean; - get(key: K): V; - has(key: K): boolean; - set(key: K, value?: V): WeakMap; - readonly [Symbol.toStringTag]: "WeakMap"; -} - -interface WeakMapConstructor { - new (): WeakMap; - new (): WeakMap; - new (iterable: Iterable<[K, V]>): WeakMap; - readonly prototype: WeakMap; -} -declare var WeakMap: WeakMapConstructor; - -interface Set { - add(value: T): Set; - clear(): void; - delete(value: T): boolean; - entries(): IterableIterator<[T, T]>; - forEach(callbackfn: (value: T, index: T, set: Set) => void, thisArg?: any): void; - has(value: T): boolean; - keys(): IterableIterator; - readonly size: number; - values(): IterableIterator; - [Symbol.iterator]():IterableIterator; - readonly [Symbol.toStringTag]: "Set"; -} - -interface SetConstructor { - new (): Set; - new (): Set; - new (iterable: Iterable): Set; - readonly prototype: Set; -} -declare var Set: SetConstructor; - -interface WeakSet { - add(value: T): WeakSet; - clear(): void; - delete(value: T): boolean; - has(value: T): boolean; - readonly [Symbol.toStringTag]: "WeakSet"; -} - -interface WeakSetConstructor { - new (): WeakSet; - new (): WeakSet; - new (iterable: Iterable): WeakSet; - readonly prototype: WeakSet; -} -declare var WeakSet: WeakSetConstructor; - -interface JSON { - readonly [Symbol.toStringTag]: "JSON"; -} - -/** - * Represents a raw buffer of binary data, which is used to store data for the - * different typed arrays. ArrayBuffers cannot be read from or written to directly, - * but can be passed to a typed array or DataView Object to interpret the raw - * buffer as needed. - */ -interface ArrayBuffer { - readonly [Symbol.toStringTag]: "ArrayBuffer"; -} - -interface DataView { - readonly [Symbol.toStringTag]: "DataView"; -} - -/** - * A typed array of 8-bit integer values. The contents are initialized to 0. If the requested - * number of bytes could not be allocated an exception is raised. - */ -interface Int8Array { - /** - * Returns an array of key, value pairs for every entry in the array - */ - entries(): IterableIterator<[number, number]>; - /** - * Returns an list of keys in the array - */ - keys(): IterableIterator; - /** - * Returns an list of values in the array - */ - values(): IterableIterator; - [Symbol.iterator](): IterableIterator; - readonly [Symbol.toStringTag]: "Int8Array"; -} - -interface Int8ArrayConstructor { - new (elements: Iterable): Int8Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Int8Array; -} - -/** - * A typed array of 8-bit unsigned integer values. The contents are initialized to 0. If the - * requested number of bytes could not be allocated an exception is raised. - */ -interface Uint8Array { - /** - * Returns an array of key, value pairs for every entry in the array - */ - entries(): IterableIterator<[number, number]>; - /** - * Returns an list of keys in the array - */ - keys(): IterableIterator; - /** - * Returns an list of values in the array - */ - values(): IterableIterator; - [Symbol.iterator](): IterableIterator; - readonly [Symbol.toStringTag]: "UInt8Array"; -} - -interface Uint8ArrayConstructor { - new (elements: Iterable): Uint8Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint8Array; -} - -/** - * A typed array of 8-bit unsigned integer (clamped) values. The contents are initialized to 0. - * If the requested number of bytes could not be allocated an exception is raised. - */ -interface Uint8ClampedArray { - /** - * Returns an array of key, value pairs for every entry in the array - */ - entries(): IterableIterator<[number, number]>; - - /** - * Returns an list of keys in the array - */ - keys(): IterableIterator; - - /** - * Returns an list of values in the array - */ - values(): IterableIterator; - - [Symbol.iterator](): IterableIterator; - readonly [Symbol.toStringTag]: "Uint8ClampedArray"; -} - -interface Uint8ClampedArrayConstructor { - new (elements: Iterable): Uint8ClampedArray; - - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint8ClampedArray; -} - -/** - * A typed array of 16-bit signed integer values. The contents are initialized to 0. If the - * requested number of bytes could not be allocated an exception is raised. - */ -interface Int16Array { - /** - * Returns an array of key, value pairs for every entry in the array - */ - entries(): IterableIterator<[number, number]>; - - /** - * Returns an list of keys in the array - */ - keys(): IterableIterator; - - /** - * Returns an list of values in the array - */ - values(): IterableIterator; - - - [Symbol.iterator](): IterableIterator; - readonly [Symbol.toStringTag]: "Int16Array"; -} - -interface Int16ArrayConstructor { - new (elements: Iterable): Int16Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Int16Array; -} - -/** - * A typed array of 16-bit unsigned integer values. The contents are initialized to 0. If the - * requested number of bytes could not be allocated an exception is raised. - */ -interface Uint16Array { - /** - * Returns an array of key, value pairs for every entry in the array - */ - entries(): IterableIterator<[number, number]>; - /** - * Returns an list of keys in the array - */ - keys(): IterableIterator; - /** - * Returns an list of values in the array - */ - values(): IterableIterator; - [Symbol.iterator](): IterableIterator; - readonly [Symbol.toStringTag]: "Uint16Array"; -} - -interface Uint16ArrayConstructor { - new (elements: Iterable): Uint16Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint16Array; -} - -/** - * A typed array of 32-bit signed integer values. The contents are initialized to 0. If the - * requested number of bytes could not be allocated an exception is raised. - */ -interface Int32Array { - /** - * Returns an array of key, value pairs for every entry in the array - */ - entries(): IterableIterator<[number, number]>; - /** - * Returns an list of keys in the array - */ - keys(): IterableIterator; - /** - * Returns an list of values in the array - */ - values(): IterableIterator; - [Symbol.iterator](): IterableIterator; - readonly [Symbol.toStringTag]: "Int32Array"; -} - -interface Int32ArrayConstructor { - new (elements: Iterable): Int32Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Int32Array; -} - -/** - * A typed array of 32-bit unsigned integer values. The contents are initialized to 0. If the - * requested number of bytes could not be allocated an exception is raised. - */ -interface Uint32Array { - /** - * Returns an array of key, value pairs for every entry in the array - */ - entries(): IterableIterator<[number, number]>; - /** - * Returns an list of keys in the array - */ - keys(): IterableIterator; - /** - * Returns an list of values in the array - */ - values(): IterableIterator; - [Symbol.iterator](): IterableIterator; - readonly [Symbol.toStringTag]: "Uint32Array"; -} - -interface Uint32ArrayConstructor { - new (elements: Iterable): Uint32Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint32Array; -} - -/** - * A typed array of 32-bit float values. The contents are initialized to 0. If the requested number - * of bytes could not be allocated an exception is raised. - */ -interface Float32Array { - /** - * Returns an array of key, value pairs for every entry in the array - */ - entries(): IterableIterator<[number, number]>; - /** - * Returns an list of keys in the array - */ - keys(): IterableIterator; - /** - * Returns an list of values in the array - */ - values(): IterableIterator; - [Symbol.iterator](): IterableIterator; - readonly [Symbol.toStringTag]: "Float32Array"; -} - -interface Float32ArrayConstructor { - new (elements: Iterable): Float32Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Float32Array; -} - -/** - * A typed array of 64-bit float values. The contents are initialized to 0. If the requested - * number of bytes could not be allocated an exception is raised. - */ -interface Float64Array { - /** - * Returns an array of key, value pairs for every entry in the array - */ - entries(): IterableIterator<[number, number]>; - /** - * Returns an list of keys in the array - */ - keys(): IterableIterator; - /** - * Returns an list of values in the array - */ - values(): IterableIterator; - [Symbol.iterator](): IterableIterator; - readonly [Symbol.toStringTag]: "Float64Array"; -} - -interface Float64ArrayConstructor { - new (elements: Iterable): Float64Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Float64Array; -} - -interface ProxyHandler { - getPrototypeOf? (target: T): any; - setPrototypeOf? (target: T, v: any): boolean; - isExtensible? (target: T): boolean; - preventExtensions? (target: T): boolean; - getOwnPropertyDescriptor? (target: T, p: PropertyKey): PropertyDescriptor; - has? (target: T, p: PropertyKey): boolean; - get? (target: T, p: PropertyKey, receiver: any): any; - set? (target: T, p: PropertyKey, value: any, receiver: any): boolean; - deleteProperty? (target: T, p: PropertyKey): boolean; - defineProperty? (target: T, p: PropertyKey, attributes: PropertyDescriptor): boolean; - enumerate? (target: T): PropertyKey[]; - ownKeys? (target: T): PropertyKey[]; - apply? (target: T, thisArg: any, argArray?: any): any; - construct? (target: T, thisArg: any, argArray?: any): any; -} - -interface ProxyConstructor { - revocable(target: T, handler: ProxyHandler): { proxy: T; revoke: () => void; }; - new (target: T, handler: ProxyHandler): T -} -declare var Proxy: ProxyConstructor; - -declare namespace Reflect { - function apply(target: Function, thisArgument: any, argumentsList: ArrayLike): any; - function construct(target: Function, argumentsList: ArrayLike, newTarget?: any): any; - function defineProperty(target: any, propertyKey: PropertyKey, attributes: PropertyDescriptor): boolean; - function deleteProperty(target: any, propertyKey: PropertyKey): boolean; - function enumerate(target: any): IterableIterator; - function get(target: any, propertyKey: PropertyKey, receiver?: any): any; - function getOwnPropertyDescriptor(target: any, propertyKey: PropertyKey): PropertyDescriptor; - function getPrototypeOf(target: any): any; - function has(target: any, propertyKey: string): boolean; - function has(target: any, propertyKey: symbol): boolean; - function isExtensible(target: any): boolean; - function ownKeys(target: any): Array; - function preventExtensions(target: any): boolean; - function set(target: any, propertyKey: PropertyKey, value: any, receiver?: any): boolean; - function setPrototypeOf(target: any, proto: any): boolean; -} - -/** - * Represents the completion of an asynchronous operation - */ -interface Promise { - /** - * 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(onfulfilled?: (value: T) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): Promise; - then(onfulfilled?: (value: T) => TResult | PromiseLike, onrejected?: (reason: any) => void): Promise; - - /** - * Attaches a callback for only the rejection of the Promise. - * @param onrejected The callback to execute when the Promise is rejected. - * @returns A Promise for the completion of the callback. - */ - catch(onrejected?: (reason: any) => T | PromiseLike): Promise; - catch(onrejected?: (reason: any) => void): Promise; - - readonly [Symbol.toStringTag]: "Promise"; -} - -interface PromiseConstructor { - /** - * A reference to the prototype. - */ - readonly prototype: Promise; - - /** - * Creates a new Promise. - * @param executor A callback used to initialize the promise. This callback is passed two arguments: - * a resolve callback used resolve the promise with a value or the result of another promise, - * and a reject callback used to reject the promise with a provided reason or error. - */ - new (executor: (resolve: (value?: T | PromiseLike) => void, reject: (reason?: any) => void) => void): Promise; - - /** - * Creates a Promise that is resolved with an array of results when all of the provided Promises - * resolve, or rejected when any Promise is rejected. - * @param values An array of Promises. - * @returns A new Promise. - */ - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike, T9 | PromiseLike, T10 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]>; - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike, T9 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9]>; - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8]>; - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7]>; - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6]>; - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike]): Promise<[T1, T2, T3, T4, T5]>; - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike ]): Promise<[T1, T2, T3, T4]>; - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike]): Promise<[T1, T2, T3]>; - all(values: [T1 | PromiseLike, T2 | PromiseLike]): Promise<[T1, T2]>; - all(values: Iterable>): Promise; - - /** - * Creates a Promise that is resolved or rejected when any of the provided Promises are resolved - * or rejected. - * @param values An array of Promises. - * @returns A new Promise. - */ - race(values: Iterable>): Promise; - - /** - * Creates a new rejected promise for the provided reason. - * @param reason The reason the promise was rejected. - * @returns A new rejected Promise. - */ - reject(reason: any): Promise; - - /** - * Creates a new rejected promise for the provided reason. - * @param reason The reason the promise was rejected. - * @returns A new rejected Promise. - */ - reject(reason: any): Promise; - - /** - * Creates a new resolved promise for the provided value. - * @param value A promise. - * @returns A promise whose internal state matches the provided promise. - */ - resolve(value: T | PromiseLike): Promise; - - /** - * Creates a new resolved promise . - * @returns A resolved promise. - */ - resolve(): Promise; - - readonly [Symbol.species]: Function; -} - -declare var Promise: PromiseConstructor; -interface Array { - /** - * Determines whether an array includes a certain element, returning true or false as appropriate. - * @param searchElement The element to search for. - * @param fromIndex The position in this array at which to begin searching for searchElement. - */ - includes(searchElement: T, fromIndex?: number): boolean; -} - -interface Int8Array { - /** - * Determines whether an array includes a certain element, returning true or false as appropriate. - * @param searchElement The element to search for. - * @param fromIndex The position in this array at which to begin searching for searchElement. - */ - includes(searchElement: number, fromIndex?: number): boolean; -} - -interface Uint8Array { - /** - * Determines whether an array includes a certain element, returning true or false as appropriate. - * @param searchElement The element to search for. - * @param fromIndex The position in this array at which to begin searching for searchElement. - */ - includes(searchElement: number, fromIndex?: number): boolean; -} - -interface Uint8ClampedArray { - /** - * Determines whether an array includes a certain element, returning true or false as appropriate. - * @param searchElement The element to search for. - * @param fromIndex The position in this array at which to begin searching for searchElement. - */ - includes(searchElement: number, fromIndex?: number): boolean; -} - -interface Int16Array { - /** - * Determines whether an array includes a certain element, returning true or false as appropriate. - * @param searchElement The element to search for. - * @param fromIndex The position in this array at which to begin searching for searchElement. - */ - includes(searchElement: number, fromIndex?: number): boolean; -} - -interface Uint16Array { - /** - * Determines whether an array includes a certain element, returning true or false as appropriate. - * @param searchElement The element to search for. - * @param fromIndex The position in this array at which to begin searching for searchElement. - */ - includes(searchElement: number, fromIndex?: number): boolean; -} - -interface Int32Array { - /** - * Determines whether an array includes a certain element, returning true or false as appropriate. - * @param searchElement The element to search for. - * @param fromIndex The position in this array at which to begin searching for searchElement. - */ - includes(searchElement: number, fromIndex?: number): boolean; -} - -interface Uint32Array { - /** - * Determines whether an array includes a certain element, returning true or false as appropriate. - * @param searchElement The element to search for. - * @param fromIndex The position in this array at which to begin searching for searchElement. - */ - includes(searchElement: number, fromIndex?: number): boolean; -} - -interface Float32Array { - /** - * Determines whether an array includes a certain element, returning true or false as appropriate. - * @param searchElement The element to search for. - * @param fromIndex The position in this array at which to begin searching for searchElement. - */ - includes(searchElement: number, fromIndex?: number): boolean; -} - -interface Float64Array { - /** - * Determines whether an array includes a certain element, returning true or false as appropriate. - * @param searchElement The element to search for. - * @param fromIndex The position in this array at which to begin searching for searchElement. - */ - includes(searchElement: number, fromIndex?: number): boolean; -} \ No newline at end of file diff --git a/lib/lib.d.ts b/lib/lib.d.ts index 68245cdefbf..da43acc116a 100644 --- a/lib/lib.d.ts +++ b/lib/lib.d.ts @@ -231,14 +231,16 @@ interface Function { * @param thisArg The object to be used as the this object. * @param argArray A set of arguments to be passed to the function. */ - apply(thisArg: any, argArray?: any): any; + apply(this: (this: T, ...argArray: any[]) => U, thisArg: T, argArray?: any): U; + apply(this: Function, thisArg: any, argArray?: any): any; /** * Calls a method of an object, substituting another object for the current object. * @param thisArg The object to be used as the current object. * @param argArray A list of arguments to be passed to the method. */ - call(thisArg: any, ...argArray: any[]): any; + call(this: (this: T, ...argArray: any[]) => U, thisArg: T, ...argArray: any[]): U; + call(this: Function, thisArg: any, ...argArray: any[]): any; /** * For a given function, creates a bound function that has the same body as the original function. @@ -246,7 +248,8 @@ interface Function { * @param thisArg An object to which the this keyword can refer inside the new function. * @param argArray A list of arguments to be passed to the new function. */ - bind(thisArg: any, ...argArray: any[]): any; + bind(this: (this: T, ...argArray: any[]) => U, thisArg: T, ...argArray: any[]): (this: void, ...argArray: any[]) => U; + bind(this: Function, thisArg: any, ...argArray: any[]): any; prototype: any; readonly length: number; @@ -320,13 +323,13 @@ interface String { * Matches a string with a regular expression, and returns an array containing the results of that search. * @param regexp A variable name or string literal containing the regular expression pattern and flags. */ - match(regexp: string): RegExpMatchArray; + match(regexp: string): RegExpMatchArray | null; /** * Matches a string with a regular expression, and returns an array containing the results of that search. * @param regexp A regular expression object that contains the regular expression pattern and applicable flags. */ - match(regexp: RegExp): RegExpMatchArray; + match(regexp: RegExp): RegExpMatchArray | null; /** * Replaces text in a string, using a regular expression or search string. @@ -829,7 +832,7 @@ interface RegExp { * Executes a search on a string using a regular expression pattern, and returns an array containing the results of that search. * @param string The String object or string literal on which to perform the search. */ - exec(string: string): RegExpExecArray; + exec(string: string): RegExpExecArray | null; /** * Returns a Boolean value that indicates whether or not a pattern exists in a searched string. @@ -852,7 +855,7 @@ interface RegExp { lastIndex: number; // Non-standard extensions - compile(): RegExp; + compile(): this; } interface RegExpConstructor { @@ -1124,7 +1127,7 @@ interface Array { /** * Removes the last element from an array and returns it. */ - pop(): T; + pop(): T | undefined; /** * Combines two or more arrays. * @param items Additional items to add to the end of array1. @@ -1142,7 +1145,7 @@ interface Array { /** * Removes the first element from an array and returns it. */ - shift(): T; + shift(): T | undefined; /** * Returns a section of an array. * @param start The beginning of the specified portion of the array. @@ -1535,7 +1538,7 @@ interface Int8Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; + find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number | undefined; /** * Returns the index of the first element in the array where predicate is true, and undefined @@ -1546,7 +1549,7 @@ interface Int8Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; + findIndex(predicate: (value: number) => boolean, thisArg?: any): number | undefined; /** * Performs the specified action for each element in an array. @@ -1808,7 +1811,7 @@ interface Uint8Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; + find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number | undefined; /** * Returns the index of the first element in the array where predicate is true, and undefined @@ -1819,7 +1822,7 @@ interface Uint8Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; + findIndex(predicate: (value: number) => boolean, thisArg?: any): number | undefined; /** * Performs the specified action for each element in an array. @@ -2082,7 +2085,7 @@ interface Uint8ClampedArray { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; + find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number | undefined; /** * Returns the index of the first element in the array where predicate is true, and undefined @@ -2093,7 +2096,7 @@ interface Uint8ClampedArray { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; + findIndex(predicate: (value: number) => boolean, thisArg?: any): number | undefined; /** * Performs the specified action for each element in an array. @@ -2355,7 +2358,7 @@ interface Int16Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; + find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number | undefined; /** * Returns the index of the first element in the array where predicate is true, and undefined @@ -2366,7 +2369,7 @@ interface Int16Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; + findIndex(predicate: (value: number) => boolean, thisArg?: any): number | undefined; /** * Performs the specified action for each element in an array. @@ -2629,7 +2632,7 @@ interface Uint16Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; + find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number | undefined; /** * Returns the index of the first element in the array where predicate is true, and undefined @@ -2640,7 +2643,7 @@ interface Uint16Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; + findIndex(predicate: (value: number) => boolean, thisArg?: any): number | undefined; /** * Performs the specified action for each element in an array. @@ -2902,7 +2905,7 @@ interface Int32Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; + find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number | undefined; /** * Returns the index of the first element in the array where predicate is true, and undefined @@ -2913,7 +2916,7 @@ interface Int32Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; + findIndex(predicate: (value: number) => boolean, thisArg?: any): number | undefined; /** * Performs the specified action for each element in an array. @@ -3175,7 +3178,7 @@ interface Uint32Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; + find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number | undefined; /** * Returns the index of the first element in the array where predicate is true, and undefined @@ -3186,7 +3189,7 @@ interface Uint32Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; + findIndex(predicate: (value: number) => boolean, thisArg?: any): number | undefined; /** * Performs the specified action for each element in an array. @@ -3448,7 +3451,7 @@ interface Float32Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; + find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number | undefined; /** * Returns the index of the first element in the array where predicate is true, and undefined @@ -3459,7 +3462,7 @@ interface Float32Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; + findIndex(predicate: (value: number) => boolean, thisArg?: any): number | undefined; /** * Performs the specified action for each element in an array. @@ -3722,7 +3725,7 @@ interface Float64Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; + find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number | undefined; /** * Returns the index of the first element in the array where predicate is true, and undefined @@ -3733,7 +3736,7 @@ interface Float64Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; + findIndex(predicate: (value: number) => boolean, thisArg?: any): number | undefined; /** * Performs the specified action for each element in an array. @@ -3920,6 +3923,7 @@ interface Float64ArrayConstructor { from(arrayLike: ArrayLike, mapfn?: (v: number, k: number) => number, thisArg?: any): Float64Array; } declare const Float64Array: Float64ArrayConstructor; + ///////////////////////////// /// ECMAScript Internationalization API ///////////////////////////// @@ -4120,8 +4124,6 @@ interface Date { */ toLocaleTimeString(locale?: string, options?: Intl.DateTimeFormatOptions): string; } - - ///////////////////////////// /// IE DOM APIs ///////////////////////////// @@ -4135,11 +4137,6 @@ interface AriaRequestEventInit extends EventInit { attributeValue?: string; } -interface ClipboardEventInit extends EventInit { - data?: string; - dataType?: string; -} - interface CommandEventInit extends EventInit { commandName?: string; detail?: string; @@ -4153,6 +4150,31 @@ interface ConfirmSiteSpecificExceptionsInformation extends ExceptionInformation arrayOfDomainStrings?: string[]; } +interface ConstrainBooleanParameters { + exact?: boolean; + ideal?: boolean; +} + +interface ConstrainDOMStringParameters { + exact?: string | string[]; + ideal?: string | string[]; +} + +interface ConstrainDoubleRange extends DoubleRange { + exact?: number; + ideal?: number; +} + +interface ConstrainLongRange extends LongRange { + exact?: number; + ideal?: number; +} + +interface ConstrainVideoFacingModeParameters { + exact?: string | string[]; + ideal?: string | string[]; +} + interface CustomEventInit extends EventInit { detail?: any; } @@ -4163,17 +4185,44 @@ interface DeviceAccelerationDict { z?: number; } +interface DeviceLightEventInit extends EventInit { + value?: number; +} + interface DeviceRotationRateDict { alpha?: number; beta?: number; gamma?: number; } +interface DoubleRange { + max?: number; + min?: number; +} + interface EventInit { bubbles?: boolean; cancelable?: boolean; } +interface EventModifierInit extends UIEventInit { + ctrlKey?: boolean; + shiftKey?: boolean; + altKey?: boolean; + metaKey?: boolean; + modifierAltGraph?: boolean; + modifierCapsLock?: boolean; + modifierFn?: boolean; + modifierFnLock?: boolean; + modifierHyper?: boolean; + modifierNumLock?: boolean; + modifierOS?: boolean; + modifierScrollLock?: boolean; + modifierSuper?: boolean; + modifierSymbol?: boolean; + modifierSymbolLock?: boolean; +} + interface ExceptionInformation { domain?: string; } @@ -4187,17 +4236,415 @@ interface HashChangeEventInit extends EventInit { oldURL?: string; } +interface IDBIndexParameters { + multiEntry?: boolean; + unique?: boolean; +} + +interface IDBObjectStoreParameters { + autoIncrement?: boolean; + keyPath?: IDBKeyPath; +} + interface KeyAlgorithm { name?: string; } -interface KeyboardEventInit extends SharedKeyboardAndMouseEventInit { +interface KeyboardEventInit extends EventModifierInit { key?: string; location?: number; repeat?: boolean; } -interface MouseEventInit extends SharedKeyboardAndMouseEventInit { +interface LongRange { + max?: number; + min?: number; +} + +interface MSAccountInfo { + rpDisplayName?: string; + userDisplayName?: string; + accountName?: string; + userId?: string; + accountImageUri?: string; +} + +interface MSAudioLocalClientEvent extends MSLocalClientEventBase { + networkSendQualityEventRatio?: number; + networkDelayEventRatio?: number; + cpuInsufficientEventRatio?: number; + deviceHalfDuplexAECEventRatio?: number; + deviceRenderNotFunctioningEventRatio?: number; + deviceCaptureNotFunctioningEventRatio?: number; + deviceGlitchesEventRatio?: number; + deviceLowSNREventRatio?: number; + deviceLowSpeechLevelEventRatio?: number; + deviceClippingEventRatio?: number; + deviceEchoEventRatio?: number; + deviceNearEndToEchoRatioEventRatio?: number; + deviceRenderZeroVolumeEventRatio?: number; + deviceRenderMuteEventRatio?: number; + deviceMultipleEndpointsEventCount?: number; + deviceHowlingEventCount?: number; +} + +interface MSAudioRecvPayload extends MSPayloadBase { + samplingRate?: number; + signal?: MSAudioRecvSignal; + packetReorderRatio?: number; + packetReorderDepthAvg?: number; + packetReorderDepthMax?: number; + burstLossLength1?: number; + burstLossLength2?: number; + burstLossLength3?: number; + burstLossLength4?: number; + burstLossLength5?: number; + burstLossLength6?: number; + burstLossLength7?: number; + burstLossLength8OrHigher?: number; + fecRecvDistance1?: number; + fecRecvDistance2?: number; + fecRecvDistance3?: number; + ratioConcealedSamplesAvg?: number; + ratioStretchedSamplesAvg?: number; + ratioCompressedSamplesAvg?: number; +} + +interface MSAudioRecvSignal { + initialSignalLevelRMS?: number; + recvSignalLevelCh1?: number; + recvNoiseLevelCh1?: number; + renderSignalLevel?: number; + renderNoiseLevel?: number; + renderLoopbackSignalLevel?: number; +} + +interface MSAudioSendPayload extends MSPayloadBase { + samplingRate?: number; + signal?: MSAudioSendSignal; + audioFECUsed?: boolean; + sendMutePercent?: number; +} + +interface MSAudioSendSignal { + noiseLevel?: number; + sendSignalLevelCh1?: number; + sendNoiseLevelCh1?: number; +} + +interface MSConnectivity { + iceType?: string; + iceWarningFlags?: MSIceWarningFlags; + relayAddress?: MSRelayAddress; +} + +interface MSCredentialFilter { + accept?: MSCredentialSpec[]; +} + +interface MSCredentialParameters { + type?: string; +} + +interface MSCredentialSpec { + type?: string; + id?: string; +} + +interface MSDelay { + roundTrip?: number; + roundTripMax?: number; +} + +interface MSDescription extends RTCStats { + connectivity?: MSConnectivity; + transport?: string; + networkconnectivity?: MSNetworkConnectivityInfo; + localAddr?: MSIPAddressInfo; + remoteAddr?: MSIPAddressInfo; + deviceDevName?: string; + reflexiveLocalIPAddr?: MSIPAddressInfo; +} + +interface MSFIDOCredentialParameters extends MSCredentialParameters { + algorithm?: string | Algorithm; + authenticators?: AAGUID[]; +} + +interface MSIPAddressInfo { + ipAddr?: string; + port?: number; + manufacturerMacAddrMask?: string; +} + +interface MSIceWarningFlags { + turnTcpTimedOut?: boolean; + turnUdpAllocateFailed?: boolean; + turnUdpSendFailed?: boolean; + turnTcpAllocateFailed?: boolean; + turnTcpSendFailed?: boolean; + udpLocalConnectivityFailed?: boolean; + udpNatConnectivityFailed?: boolean; + udpRelayConnectivityFailed?: boolean; + tcpNatConnectivityFailed?: boolean; + tcpRelayConnectivityFailed?: boolean; + connCheckMessageIntegrityFailed?: boolean; + allocationMessageIntegrityFailed?: boolean; + connCheckOtherError?: boolean; + turnAuthUnknownUsernameError?: boolean; + noRelayServersConfigured?: boolean; + multipleRelayServersAttempted?: boolean; + portRangeExhausted?: boolean; + alternateServerReceived?: boolean; + pseudoTLSFailure?: boolean; + turnTurnTcpConnectivityFailed?: boolean; + useCandidateChecksFailed?: boolean; + fipsAllocationFailure?: boolean; +} + +interface MSJitter { + interArrival?: number; + interArrivalMax?: number; + interArrivalSD?: number; +} + +interface MSLocalClientEventBase extends RTCStats { + networkReceiveQualityEventRatio?: number; + networkBandwidthLowEventRatio?: number; +} + +interface MSNetwork extends RTCStats { + jitter?: MSJitter; + delay?: MSDelay; + packetLoss?: MSPacketLoss; + utilization?: MSUtilization; +} + +interface MSNetworkConnectivityInfo { + vpn?: boolean; + linkspeed?: number; + networkConnectionDetails?: string; +} + +interface MSNetworkInterfaceType { + interfaceTypeEthernet?: boolean; + interfaceTypeWireless?: boolean; + interfaceTypePPP?: boolean; + interfaceTypeTunnel?: boolean; + interfaceTypeWWAN?: boolean; +} + +interface MSOutboundNetwork extends MSNetwork { + appliedBandwidthLimit?: number; +} + +interface MSPacketLoss { + lossRate?: number; + lossRateMax?: number; +} + +interface MSPayloadBase extends RTCStats { + payloadDescription?: string; +} + +interface MSRelayAddress { + relayAddress?: string; + port?: number; +} + +interface MSSignatureParameters { + userPrompt?: string; +} + +interface MSTransportDiagnosticsStats extends RTCStats { + baseAddress?: string; + localAddress?: string; + localSite?: string; + networkName?: string; + remoteAddress?: string; + remoteSite?: string; + localMR?: string; + remoteMR?: string; + iceWarningFlags?: MSIceWarningFlags; + portRangeMin?: number; + portRangeMax?: number; + localMRTCPPort?: number; + remoteMRTCPPort?: number; + stunVer?: number; + numConsentReqSent?: number; + numConsentReqReceived?: number; + numConsentRespSent?: number; + numConsentRespReceived?: number; + interfaces?: MSNetworkInterfaceType; + baseInterface?: MSNetworkInterfaceType; + protocol?: string; + localInterface?: MSNetworkInterfaceType; + localAddrType?: string; + remoteAddrType?: string; + iceRole?: string; + rtpRtcpMux?: boolean; + allocationTimeInMs?: number; + msRtcEngineVersion?: string; +} + +interface MSUtilization { + packets?: number; + bandwidthEstimation?: number; + bandwidthEstimationMin?: number; + bandwidthEstimationMax?: number; + bandwidthEstimationStdDev?: number; + bandwidthEstimationAvg?: number; +} + +interface MSVideoPayload extends MSPayloadBase { + resoluton?: string; + videoBitRateAvg?: number; + videoBitRateMax?: number; + videoFrameRateAvg?: number; + videoPacketLossRate?: number; + durationSeconds?: number; +} + +interface MSVideoRecvPayload extends MSVideoPayload { + videoFrameLossRate?: number; + recvCodecType?: string; + recvResolutionWidth?: number; + recvResolutionHeight?: number; + videoResolutions?: MSVideoResolutionDistribution; + recvFrameRateAverage?: number; + recvBitRateMaximum?: number; + recvBitRateAverage?: number; + recvVideoStreamsMax?: number; + recvVideoStreamsMin?: number; + recvVideoStreamsMode?: number; + videoPostFECPLR?: number; + lowBitRateCallPercent?: number; + lowFrameRateCallPercent?: number; + reorderBufferTotalPackets?: number; + recvReorderBufferReorderedPackets?: number; + recvReorderBufferPacketsDroppedDueToBufferExhaustion?: number; + recvReorderBufferMaxSuccessfullyOrderedExtent?: number; + recvReorderBufferMaxSuccessfullyOrderedLateTime?: number; + recvReorderBufferPacketsDroppedDueToTimeout?: number; + recvFpsHarmonicAverage?: number; + recvNumResSwitches?: number; +} + +interface MSVideoResolutionDistribution { + cifQuality?: number; + vgaQuality?: number; + h720Quality?: number; + h1080Quality?: number; + h1440Quality?: number; + h2160Quality?: number; +} + +interface MSVideoSendPayload extends MSVideoPayload { + sendFrameRateAverage?: number; + sendBitRateMaximum?: number; + sendBitRateAverage?: number; + sendVideoStreamsMax?: number; + sendResolutionWidth?: number; + sendResolutionHeight?: number; +} + +interface MediaEncryptedEventInit extends EventInit { + initDataType?: string; + initData?: ArrayBuffer; +} + +interface MediaKeyMessageEventInit extends EventInit { + messageType?: string; + message?: ArrayBuffer; +} + +interface MediaKeySystemConfiguration { + initDataTypes?: string[]; + audioCapabilities?: MediaKeySystemMediaCapability[]; + videoCapabilities?: MediaKeySystemMediaCapability[]; + distinctiveIdentifier?: string; + persistentState?: string; +} + +interface MediaKeySystemMediaCapability { + contentType?: string; + robustness?: string; +} + +interface MediaStreamConstraints { + video?: boolean | MediaTrackConstraints; + audio?: boolean | MediaTrackConstraints; +} + +interface MediaStreamErrorEventInit extends EventInit { + error?: MediaStreamError; +} + +interface MediaStreamTrackEventInit extends EventInit { + track?: MediaStreamTrack; +} + +interface MediaTrackCapabilities { + width?: number | LongRange; + height?: number | LongRange; + aspectRatio?: number | DoubleRange; + frameRate?: number | DoubleRange; + facingMode?: string; + volume?: number | DoubleRange; + sampleRate?: number | LongRange; + sampleSize?: number | LongRange; + echoCancellation?: boolean[]; + deviceId?: string; + groupId?: string; +} + +interface MediaTrackConstraintSet { + width?: number | ConstrainLongRange; + height?: number | ConstrainLongRange; + aspectRatio?: number | ConstrainDoubleRange; + frameRate?: number | ConstrainDoubleRange; + facingMode?: string | string[] | ConstrainDOMStringParameters; + volume?: number | ConstrainDoubleRange; + sampleRate?: number | ConstrainLongRange; + sampleSize?: number | ConstrainLongRange; + echoCancelation?: boolean | ConstrainBooleanParameters; + deviceId?: string | string[] | ConstrainDOMStringParameters; + groupId?: string | string[] | ConstrainDOMStringParameters; +} + +interface MediaTrackConstraints extends MediaTrackConstraintSet { + advanced?: MediaTrackConstraintSet[]; +} + +interface MediaTrackSettings { + width?: number; + height?: number; + aspectRatio?: number; + frameRate?: number; + facingMode?: string; + volume?: number; + sampleRate?: number; + sampleSize?: number; + echoCancellation?: boolean; + deviceId?: string; + groupId?: string; +} + +interface MediaTrackSupportedConstraints { + width?: boolean; + height?: boolean; + aspectRatio?: boolean; + frameRate?: boolean; + facingMode?: boolean; + volume?: boolean; + sampleRate?: boolean; + sampleSize?: boolean; + echoCancellation?: boolean; + deviceId?: boolean; + groupId?: boolean; +} + +interface MouseEventInit extends EventModifierInit { screenX?: number; screenY?: number; clientX?: number; @@ -4230,6 +4677,10 @@ interface ObjectURLOptions { oneTimeOnly?: boolean; } +interface PeriodicWaveConstraints { + disableNormalization?: boolean; +} + interface PointerEventInit extends MouseEventInit { pointerId?: number; width?: number; @@ -4247,22 +4698,266 @@ interface PositionOptions { maximumAge?: number; } -interface SharedKeyboardAndMouseEventInit extends UIEventInit { - ctrlKey?: boolean; - shiftKey?: boolean; - altKey?: boolean; - metaKey?: boolean; - keyModifierStateAltGraph?: boolean; - keyModifierStateCapsLock?: boolean; - keyModifierStateFn?: boolean; - keyModifierStateFnLock?: boolean; - keyModifierStateHyper?: boolean; - keyModifierStateNumLock?: boolean; - keyModifierStateOS?: boolean; - keyModifierStateScrollLock?: boolean; - keyModifierStateSuper?: boolean; - keyModifierStateSymbol?: boolean; - keyModifierStateSymbolLock?: boolean; +interface RTCDTMFToneChangeEventInit extends EventInit { + tone?: string; +} + +interface RTCDtlsFingerprint { + algorithm?: string; + value?: string; +} + +interface RTCDtlsParameters { + role?: string; + fingerprints?: RTCDtlsFingerprint[]; +} + +interface RTCIceCandidate { + foundation?: string; + priority?: number; + ip?: string; + protocol?: string; + port?: number; + type?: string; + tcpType?: string; + relatedAddress?: string; + relatedPort?: number; +} + +interface RTCIceCandidateAttributes extends RTCStats { + ipAddress?: string; + portNumber?: number; + transport?: string; + candidateType?: string; + priority?: number; + addressSourceUrl?: string; +} + +interface RTCIceCandidateComplete { +} + +interface RTCIceCandidatePair { + local?: RTCIceCandidate; + remote?: RTCIceCandidate; +} + +interface RTCIceCandidatePairStats extends RTCStats { + transportId?: string; + localCandidateId?: string; + remoteCandidateId?: string; + state?: string; + priority?: number; + nominated?: boolean; + writable?: boolean; + readable?: boolean; + bytesSent?: number; + bytesReceived?: number; + roundTripTime?: number; + availableOutgoingBitrate?: number; + availableIncomingBitrate?: number; +} + +interface RTCIceGatherOptions { + gatherPolicy?: string; + iceservers?: RTCIceServer[]; +} + +interface RTCIceParameters { + usernameFragment?: string; + password?: string; +} + +interface RTCIceServer { + urls?: any; + username?: string; + credential?: string; +} + +interface RTCInboundRTPStreamStats extends RTCRTPStreamStats { + packetsReceived?: number; + bytesReceived?: number; + packetsLost?: number; + jitter?: number; + fractionLost?: number; +} + +interface RTCMediaStreamTrackStats extends RTCStats { + trackIdentifier?: string; + remoteSource?: boolean; + ssrcIds?: string[]; + frameWidth?: number; + frameHeight?: number; + framesPerSecond?: number; + framesSent?: number; + framesReceived?: number; + framesDecoded?: number; + framesDropped?: number; + framesCorrupted?: number; + audioLevel?: number; + echoReturnLoss?: number; + echoReturnLossEnhancement?: number; +} + +interface RTCOutboundRTPStreamStats extends RTCRTPStreamStats { + packetsSent?: number; + bytesSent?: number; + targetBitrate?: number; + roundTripTime?: number; +} + +interface RTCRTPStreamStats extends RTCStats { + ssrc?: string; + associateStatsId?: string; + isRemote?: boolean; + mediaTrackId?: string; + transportId?: string; + codecId?: string; + firCount?: number; + pliCount?: number; + nackCount?: number; + sliCount?: number; +} + +interface RTCRtcpFeedback { + type?: string; + parameter?: string; +} + +interface RTCRtcpParameters { + ssrc?: number; + cname?: string; + reducedSize?: boolean; + mux?: boolean; +} + +interface RTCRtpCapabilities { + codecs?: RTCRtpCodecCapability[]; + headerExtensions?: RTCRtpHeaderExtension[]; + fecMechanisms?: string[]; +} + +interface RTCRtpCodecCapability { + name?: string; + kind?: string; + clockRate?: number; + preferredPayloadType?: number; + maxptime?: number; + numChannels?: number; + rtcpFeedback?: RTCRtcpFeedback[]; + parameters?: any; + options?: any; + maxTemporalLayers?: number; + maxSpatialLayers?: number; + svcMultiStreamSupport?: boolean; +} + +interface RTCRtpCodecParameters { + name?: string; + payloadType?: any; + clockRate?: number; + maxptime?: number; + numChannels?: number; + rtcpFeedback?: RTCRtcpFeedback[]; + parameters?: any; +} + +interface RTCRtpContributingSource { + timestamp?: number; + csrc?: number; + audioLevel?: number; +} + +interface RTCRtpEncodingParameters { + ssrc?: number; + codecPayloadType?: number; + fec?: RTCRtpFecParameters; + rtx?: RTCRtpRtxParameters; + priority?: number; + maxBitrate?: number; + minQuality?: number; + framerateBias?: number; + resolutionScale?: number; + framerateScale?: number; + active?: boolean; + encodingId?: string; + dependencyEncodingIds?: string[]; + ssrcRange?: RTCSsrcRange; +} + +interface RTCRtpFecParameters { + ssrc?: number; + mechanism?: string; +} + +interface RTCRtpHeaderExtension { + kind?: string; + uri?: string; + preferredId?: number; + preferredEncrypt?: boolean; +} + +interface RTCRtpHeaderExtensionParameters { + uri?: string; + id?: number; + encrypt?: boolean; +} + +interface RTCRtpParameters { + muxId?: string; + codecs?: RTCRtpCodecParameters[]; + headerExtensions?: RTCRtpHeaderExtensionParameters[]; + encodings?: RTCRtpEncodingParameters[]; + rtcp?: RTCRtcpParameters; +} + +interface RTCRtpRtxParameters { + ssrc?: number; +} + +interface RTCRtpUnhandled { + ssrc?: number; + payloadType?: number; + muxId?: string; +} + +interface RTCSrtpKeyParam { + keyMethod?: string; + keySalt?: string; + lifetime?: string; + mkiValue?: number; + mkiLength?: number; +} + +interface RTCSrtpSdesParameters { + tag?: number; + cryptoSuite?: string; + keyParams?: RTCSrtpKeyParam[]; + sessionParams?: string[]; +} + +interface RTCSsrcRange { + min?: number; + max?: number; +} + +interface RTCStats { + timestamp?: number; + type?: string; + id?: string; + msType?: string; +} + +interface RTCStatsReport { +} + +interface RTCTransportStats extends RTCStats { + bytesSent?: number; + bytesReceived?: number; + rtcpTransportStatsId?: string; + activeConnection?: boolean; + selectedCandidatePairId?: string; + localCertificateId?: string; + remoteCertificateId?: string; } interface StoreExceptionsInformation extends ExceptionInformation { @@ -4308,18 +5003,18 @@ interface ANGLE_instanced_arrays { drawArraysInstancedANGLE(mode: number, first: number, count: number, primcount: number): void; drawElementsInstancedANGLE(mode: number, count: number, type: number, offset: number, primcount: number): void; vertexAttribDivisorANGLE(index: number, divisor: number): void; - VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE: number; + readonly VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE: number; } declare var ANGLE_instanced_arrays: { prototype: ANGLE_instanced_arrays; new(): ANGLE_instanced_arrays; - VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE: number; + readonly VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE: number; } interface AnalyserNode extends AudioNode { fftSize: number; - frequencyBinCount: number; + readonly frequencyBinCount: number; maxDecibels: number; minDecibels: number; smoothingTimeConstant: number; @@ -4335,8 +5030,8 @@ declare var AnalyserNode: { } interface AnimationEvent extends Event { - animationName: string; - elapsedTime: number; + readonly animationName: string; + readonly elapsedTime: number; initAnimationEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, animationNameArg: string, elapsedTimeArg: number): void; } @@ -4354,16 +5049,16 @@ interface ApplicationCache extends EventTarget { onobsolete: (ev: Event) => any; onprogress: (ev: ProgressEvent) => any; onupdateready: (ev: Event) => any; - status: number; + readonly status: number; abort(): void; swapCache(): void; update(): void; - CHECKING: number; - DOWNLOADING: number; - IDLE: number; - OBSOLETE: number; - UNCACHED: number; - UPDATEREADY: number; + readonly CHECKING: number; + readonly DOWNLOADING: number; + readonly IDLE: number; + readonly OBSOLETE: number; + readonly UNCACHED: number; + readonly UPDATEREADY: number; addEventListener(type: "cached", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "checking", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "downloading", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -4378,16 +5073,16 @@ interface ApplicationCache extends EventTarget { declare var ApplicationCache: { prototype: ApplicationCache; new(): ApplicationCache; - CHECKING: number; - DOWNLOADING: number; - IDLE: number; - OBSOLETE: number; - UNCACHED: number; - UPDATEREADY: number; + readonly CHECKING: number; + readonly DOWNLOADING: number; + readonly IDLE: number; + readonly OBSOLETE: number; + readonly UNCACHED: number; + readonly UPDATEREADY: number; } interface AriaRequestEvent extends Event { - attributeName: string; + readonly attributeName: string; attributeValue: string; } @@ -4397,9 +5092,10 @@ declare var AriaRequestEvent: { } interface Attr extends Node { - name: string; - ownerElement: Element; - specified: boolean; + readonly name: string; + readonly ownerElement: Element; + readonly prefix: string; + readonly specified: boolean; value: string; } @@ -4409,10 +5105,12 @@ declare var Attr: { } interface AudioBuffer { - duration: number; - length: number; - numberOfChannels: number; - sampleRate: number; + readonly duration: number; + readonly length: number; + readonly numberOfChannels: number; + readonly sampleRate: number; + copyFromChannel(destination: Float32Array, channelNumber: number, startInChannel?: number): void; + copyToChannel(source: Float32Array, channelNumber: number, startInChannel?: number): void; getChannelData(channel: number): Float32Array; } @@ -4423,14 +5121,15 @@ declare var AudioBuffer: { interface AudioBufferSourceNode extends AudioNode { buffer: AudioBuffer; + readonly detune: AudioParam; loop: boolean; loopEnd: number; loopStart: number; - onended: (ev: Event) => any; - playbackRate: AudioParam; + onended: (ev: MediaStreamErrorEvent) => any; + readonly playbackRate: AudioParam; start(when?: number, offset?: number, duration?: number): void; stop(when?: number): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "ended", listener: (ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -4440,10 +5139,10 @@ declare var AudioBufferSourceNode: { } interface AudioContext extends EventTarget { - currentTime: number; - destination: AudioDestinationNode; - listener: AudioListener; - sampleRate: number; + readonly currentTime: number; + readonly destination: AudioDestinationNode; + readonly listener: AudioListener; + readonly sampleRate: number; state: string; createAnalyser(): AnalyserNode; createBiquadFilter(): BiquadFilterNode; @@ -4456,13 +5155,14 @@ interface AudioContext extends EventTarget { createDynamicsCompressor(): DynamicsCompressorNode; createGain(): GainNode; createMediaElementSource(mediaElement: HTMLMediaElement): MediaElementAudioSourceNode; + createMediaStreamSource(mediaStream: MediaStream): MediaStreamAudioSourceNode; createOscillator(): OscillatorNode; createPanner(): PannerNode; - createPeriodicWave(real: Float32Array, imag: Float32Array): PeriodicWave; + createPeriodicWave(real: Float32Array, imag: Float32Array, constraints?: PeriodicWaveConstraints): PeriodicWave; createScriptProcessor(bufferSize?: number, numberOfInputChannels?: number, numberOfOutputChannels?: number): ScriptProcessorNode; createStereoPanner(): StereoPannerNode; createWaveShaper(): WaveShaperNode; - decodeAudioData(audioData: ArrayBuffer, successCallback: DecodeSuccessCallback, errorCallback?: DecodeErrorCallback): void; + decodeAudioData(audioData: ArrayBuffer, successCallback?: DecodeSuccessCallback, errorCallback?: DecodeErrorCallback): PromiseLike; } declare var AudioContext: { @@ -4471,7 +5171,7 @@ declare var AudioContext: { } interface AudioDestinationNode extends AudioNode { - maxChannelCount: number; + readonly maxChannelCount: number; } declare var AudioDestinationNode: { @@ -4496,9 +5196,9 @@ interface AudioNode extends EventTarget { channelCount: number; channelCountMode: string; channelInterpretation: string; - context: AudioContext; - numberOfInputs: number; - numberOfOutputs: number; + readonly context: AudioContext; + readonly numberOfInputs: number; + readonly numberOfOutputs: number; connect(destination: AudioNode, output?: number, input?: number): void; disconnect(output?: number): void; disconnect(destination: AudioNode, output?: number, input?: number): void; @@ -4511,7 +5211,7 @@ declare var AudioNode: { } interface AudioParam { - defaultValue: number; + readonly defaultValue: number; value: number; cancelScheduledValues(startTime: number): void; exponentialRampToValueAtTime(value: number, endTime: number): void; @@ -4527,9 +5227,9 @@ declare var AudioParam: { } interface AudioProcessingEvent extends Event { - inputBuffer: AudioBuffer; - outputBuffer: AudioBuffer; - playbackTime: number; + readonly inputBuffer: AudioBuffer; + readonly outputBuffer: AudioBuffer; + readonly playbackTime: number; } declare var AudioProcessingEvent: { @@ -4539,11 +5239,11 @@ declare var AudioProcessingEvent: { interface AudioTrack { enabled: boolean; - id: string; + readonly id: string; kind: string; - label: string; + readonly label: string; language: string; - sourceBuffer: SourceBuffer; + readonly sourceBuffer: SourceBuffer; } declare var AudioTrack: { @@ -4552,7 +5252,7 @@ declare var AudioTrack: { } interface AudioTrackList extends EventTarget { - length: number; + readonly length: number; onaddtrack: (ev: TrackEvent) => any; onchange: (ev: Event) => any; onremovetrack: (ev: TrackEvent) => any; @@ -4571,7 +5271,7 @@ declare var AudioTrackList: { } interface BarProp { - visible: boolean; + readonly visible: boolean; } declare var BarProp: { @@ -4589,10 +5289,10 @@ declare var BeforeUnloadEvent: { } interface BiquadFilterNode extends AudioNode { - Q: AudioParam; - detune: AudioParam; - frequency: AudioParam; - gain: AudioParam; + readonly Q: AudioParam; + readonly detune: AudioParam; + readonly frequency: AudioParam; + readonly gain: AudioParam; type: string; getFrequencyResponse(frequencyHz: Float32Array, magResponse: Float32Array, phaseResponse: Float32Array): void; } @@ -4603,8 +5303,8 @@ declare var BiquadFilterNode: { } interface Blob { - size: number; - type: string; + readonly size: number; + readonly type: string; msClose(): void; msDetachStream(): any; slice(start?: number, end?: number, contentType?: string): Blob; @@ -4638,7 +5338,7 @@ declare var CSSConditionRule: { } interface CSSFontFaceRule extends CSSRule { - style: CSSStyleDeclaration; + readonly style: CSSStyleDeclaration; } declare var CSSFontFaceRule: { @@ -4647,9 +5347,9 @@ declare var CSSFontFaceRule: { } interface CSSGroupingRule extends CSSRule { - cssRules: CSSRuleList; - deleteRule(index?: number): void; - insertRule(rule: string, index?: number): number; + readonly cssRules: CSSRuleList; + deleteRule(index: number): void; + insertRule(rule: string, index: number): number; } declare var CSSGroupingRule: { @@ -4658,9 +5358,9 @@ declare var CSSGroupingRule: { } interface CSSImportRule extends CSSRule { - href: string; - media: MediaList; - styleSheet: CSSStyleSheet; + readonly href: string; + readonly media: MediaList; + readonly styleSheet: CSSStyleSheet; } declare var CSSImportRule: { @@ -4670,7 +5370,7 @@ declare var CSSImportRule: { interface CSSKeyframeRule extends CSSRule { keyText: string; - style: CSSStyleDeclaration; + readonly style: CSSStyleDeclaration; } declare var CSSKeyframeRule: { @@ -4679,7 +5379,7 @@ declare var CSSKeyframeRule: { } interface CSSKeyframesRule extends CSSRule { - cssRules: CSSRuleList; + readonly cssRules: CSSRuleList; name: string; appendRule(rule: string): void; deleteRule(rule: string): void; @@ -4692,7 +5392,7 @@ declare var CSSKeyframesRule: { } interface CSSMediaRule extends CSSConditionRule { - media: MediaList; + readonly media: MediaList; } declare var CSSMediaRule: { @@ -4701,8 +5401,8 @@ declare var CSSMediaRule: { } interface CSSNamespaceRule extends CSSRule { - namespaceURI: string; - prefix: string; + readonly namespaceURI: string; + readonly prefix: string; } declare var CSSNamespaceRule: { @@ -4711,10 +5411,10 @@ declare var CSSNamespaceRule: { } interface CSSPageRule extends CSSRule { - pseudoClass: string; - selector: string; + readonly pseudoClass: string; + readonly selector: string; selectorText: string; - style: CSSStyleDeclaration; + readonly style: CSSStyleDeclaration; } declare var CSSPageRule: { @@ -4724,42 +5424,42 @@ declare var CSSPageRule: { interface CSSRule { cssText: string; - parentRule: CSSRule; - parentStyleSheet: CSSStyleSheet; - type: number; - CHARSET_RULE: number; - FONT_FACE_RULE: number; - IMPORT_RULE: number; - KEYFRAMES_RULE: number; - KEYFRAME_RULE: number; - MEDIA_RULE: number; - NAMESPACE_RULE: number; - PAGE_RULE: number; - STYLE_RULE: number; - SUPPORTS_RULE: number; - UNKNOWN_RULE: number; - VIEWPORT_RULE: number; + readonly parentRule: CSSRule; + readonly parentStyleSheet: CSSStyleSheet; + readonly type: number; + readonly CHARSET_RULE: number; + readonly FONT_FACE_RULE: number; + readonly IMPORT_RULE: number; + readonly KEYFRAMES_RULE: number; + readonly KEYFRAME_RULE: number; + readonly MEDIA_RULE: number; + readonly NAMESPACE_RULE: number; + readonly PAGE_RULE: number; + readonly STYLE_RULE: number; + readonly SUPPORTS_RULE: number; + readonly UNKNOWN_RULE: number; + readonly VIEWPORT_RULE: number; } declare var CSSRule: { prototype: CSSRule; new(): CSSRule; - CHARSET_RULE: number; - FONT_FACE_RULE: number; - IMPORT_RULE: number; - KEYFRAMES_RULE: number; - KEYFRAME_RULE: number; - MEDIA_RULE: number; - NAMESPACE_RULE: number; - PAGE_RULE: number; - STYLE_RULE: number; - SUPPORTS_RULE: number; - UNKNOWN_RULE: number; - VIEWPORT_RULE: number; + readonly CHARSET_RULE: number; + readonly FONT_FACE_RULE: number; + readonly IMPORT_RULE: number; + readonly KEYFRAMES_RULE: number; + readonly KEYFRAME_RULE: number; + readonly MEDIA_RULE: number; + readonly NAMESPACE_RULE: number; + readonly PAGE_RULE: number; + readonly STYLE_RULE: number; + readonly SUPPORTS_RULE: number; + readonly UNKNOWN_RULE: number; + readonly VIEWPORT_RULE: number; } interface CSSRuleList { - length: number; + readonly length: number; item(index: number): CSSRule; [index: number]: CSSRule; } @@ -4892,7 +5592,7 @@ interface CSSStyleDeclaration { justifyContent: string; kerning: string; left: string; - length: number; + readonly length: number; letterSpacing: string; lightingColor: string; lineHeight: string; @@ -4979,7 +5679,7 @@ interface CSSStyleDeclaration { pageBreakAfter: string; pageBreakBefore: string; pageBreakInside: string; - parentRule: CSSRule; + readonly parentRule: CSSRule; perspective: string; perspectiveOrigin: string; pointerEvents: string; @@ -5004,7 +5704,6 @@ interface CSSStyleDeclaration { textAlignLast: string; textAnchor: string; textDecoration: string; - textFillColor: string; textIndent: string; textJustify: string; textKashida: string; @@ -5040,25 +5739,12 @@ interface CSSStyleDeclaration { webkitAnimationTimingFunction: string; webkitAppearance: string; webkitBackfaceVisibility: string; - webkitBackground: string; - webkitBackgroundAttachment: string; webkitBackgroundClip: string; - webkitBackgroundColor: string; - webkitBackgroundImage: string; webkitBackgroundOrigin: string; - webkitBackgroundPosition: string; - webkitBackgroundPositionX: string; - webkitBackgroundPositionY: string; - webkitBackgroundRepeat: string; webkitBackgroundSize: string; webkitBorderBottomLeftRadius: string; webkitBorderBottomRightRadius: string; webkitBorderImage: string; - webkitBorderImageOutset: string; - webkitBorderImageRepeat: string; - webkitBorderImageSlice: string; - webkitBorderImageSource: string; - webkitBorderImageWidth: string; webkitBorderRadius: string; webkitBorderTopLeftRadius: string; webkitBorderTopRightRadius: string; @@ -5104,6 +5790,7 @@ interface CSSStyleDeclaration { webkitTransitionDuration: string; webkitTransitionProperty: string; webkitTransitionTimingFunction: string; + webkitUserModify: string; webkitUserSelect: string; webkitWritingMode: string; whiteSpace: string; @@ -5129,9 +5816,9 @@ declare var CSSStyleDeclaration: { } interface CSSStyleRule extends CSSRule { - readOnly: boolean; + readonly readOnly: boolean; selectorText: string; - style: CSSStyleDeclaration; + readonly style: CSSStyleDeclaration; } declare var CSSStyleRule: { @@ -5140,18 +5827,18 @@ declare var CSSStyleRule: { } interface CSSStyleSheet extends StyleSheet { - cssRules: CSSRuleList; + readonly cssRules: CSSRuleList; cssText: string; - href: string; - id: string; - imports: StyleSheetList; - isAlternate: boolean; - isPrefAlternate: boolean; - ownerRule: CSSRule; - owningElement: Element; - pages: StyleSheetPageList; - readOnly: boolean; - rules: CSSRuleList; + readonly href: string; + readonly id: string; + readonly imports: StyleSheetList; + readonly isAlternate: boolean; + readonly isPrefAlternate: boolean; + readonly ownerRule: CSSRule; + readonly owningElement: Element; + readonly pages: StyleSheetPageList; + readonly readOnly: boolean; + readonly rules: CSSRuleList; addImport(bstrURL: string, lIndex?: number): number; addPageRule(bstrSelector: string, bstrStyle: string, lIndex?: number): number; addRule(bstrSelector: string, bstrStyle?: string, lIndex?: number): number; @@ -5191,8 +5878,8 @@ declare var CanvasPattern: { new(): CanvasPattern; } -interface CanvasRenderingContext2D { - canvas: HTMLCanvasElement; +interface CanvasRenderingContext2D extends Object, CanvasPathMethods { + readonly canvas: HTMLCanvasElement; fillStyle: string | CanvasGradient | CanvasPattern; font: string; globalAlpha: number; @@ -5211,13 +5898,9 @@ interface CanvasRenderingContext2D { strokeStyle: string | CanvasGradient | CanvasPattern; textAlign: string; textBaseline: string; - arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, anticlockwise?: boolean): void; - arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): void; beginPath(): void; - bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): void; clearRect(x: number, y: number, w: number, h: number): void; clip(fillRule?: string): void; - closePath(): void; createImageData(imageDataOrSw: number | ImageData, sh?: number): ImageData; createLinearGradient(x0: number, y0: number, x1: number, y1: number): CanvasGradient; createPattern(image: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement, repetition: string): CanvasPattern; @@ -5229,12 +5912,8 @@ interface CanvasRenderingContext2D { getImageData(sx: number, sy: number, sw: number, sh: number): ImageData; getLineDash(): number[]; isPointInPath(x: number, y: number, fillRule?: string): boolean; - lineTo(x: number, y: number): void; measureText(text: string): TextMetrics; - moveTo(x: number, y: number): void; putImageData(imagedata: ImageData, dx: number, dy: number, dirtyX?: number, dirtyY?: number, dirtyWidth?: number, dirtyHeight?: number): void; - quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void; - rect(x: number, y: number, w: number, h: number): void; restore(): void; rotate(angle: number): void; save(): void; @@ -5271,7 +5950,7 @@ declare var ChannelSplitterNode: { interface CharacterData extends Node, ChildNode { data: string; - length: number; + readonly length: number; appendData(arg: string): void; deleteData(offset: number, count: number): void; insertData(offset: number, arg: string): void; @@ -5287,11 +5966,11 @@ declare var CharacterData: { interface ClientRect { bottom: number; - height: number; + readonly height: number; left: number; right: number; top: number; - width: number; + readonly width: number; } declare var ClientRect: { @@ -5300,7 +5979,7 @@ declare var ClientRect: { } interface ClientRectList { - length: number; + readonly length: number; item(index: number): ClientRect; [index: number]: ClientRect; } @@ -5311,7 +5990,7 @@ declare var ClientRectList: { } interface ClipboardEvent extends Event { - clipboardData: DataTransfer; + readonly clipboardData: DataTransfer; } declare var ClipboardEvent: { @@ -5320,9 +5999,9 @@ declare var ClipboardEvent: { } interface CloseEvent extends Event { - code: number; - reason: string; - wasClean: boolean; + readonly code: number; + readonly reason: string; + readonly wasClean: boolean; initCloseEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, wasCleanArg: boolean, codeArg: number, reasonArg: string): void; } @@ -5332,8 +6011,8 @@ declare var CloseEvent: { } interface CommandEvent extends Event { - commandName: string; - detail: string; + readonly commandName: string; + readonly detail: string; } declare var CommandEvent: { @@ -5351,8 +6030,8 @@ declare var Comment: { } interface CompositionEvent extends UIEvent { - data: string; - locale: string; + readonly data: string; + readonly locale: string; initCompositionEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, dataArg: string, locale: string): void; } @@ -5369,6 +6048,7 @@ interface Console { dir(value?: any, ...optionalParams: any[]): void; dirxml(value: any): void; error(message?: any, ...optionalParams: any[]): void; + exception(message?: string, ...optionalParams: any[]): void; group(groupTitle?: string): void; groupCollapsed(groupTitle?: string): void; groupEnd(): void; @@ -5378,6 +6058,7 @@ interface Console { profile(reportName?: string): void; profileEnd(): void; select(element: Element): void; + table(...data: any[]): void; time(timerName?: string): void; timeEnd(timerName?: string): void; trace(message?: any, ...optionalParams: any[]): void; @@ -5400,13 +6081,13 @@ declare var ConvolverNode: { } interface Coordinates { - accuracy: number; - altitude: number; - altitudeAccuracy: number; - heading: number; - latitude: number; - longitude: number; - speed: number; + readonly accuracy: number; + readonly altitude: number; + readonly altitudeAccuracy: number; + readonly heading: number; + readonly latitude: number; + readonly longitude: number; + readonly speed: number; } declare var Coordinates: { @@ -5415,7 +6096,7 @@ declare var Coordinates: { } interface Crypto extends Object, RandomSource { - subtle: SubtleCrypto; + readonly subtle: SubtleCrypto; } declare var Crypto: { @@ -5424,10 +6105,10 @@ declare var Crypto: { } interface CryptoKey { - algorithm: KeyAlgorithm; - extractable: boolean; - type: string; - usages: string[]; + readonly algorithm: KeyAlgorithm; + readonly extractable: boolean; + readonly type: string; + readonly usages: string[]; } declare var CryptoKey: { @@ -5446,7 +6127,7 @@ declare var CryptoKeyPair: { } interface CustomEvent extends Event { - detail: any; + readonly detail: any; initCustomEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, detailArg: any): void; } @@ -5456,7 +6137,7 @@ declare var CustomEvent: { } interface DOMError { - name: string; + readonly name: string; toString(): string; } @@ -5466,69 +6147,69 @@ declare var DOMError: { } interface DOMException { - code: number; - message: string; - name: string; + readonly code: number; + readonly message: string; + readonly name: string; toString(): string; - ABORT_ERR: number; - DATA_CLONE_ERR: number; - DOMSTRING_SIZE_ERR: number; - HIERARCHY_REQUEST_ERR: number; - INDEX_SIZE_ERR: number; - INUSE_ATTRIBUTE_ERR: number; - INVALID_ACCESS_ERR: number; - INVALID_CHARACTER_ERR: number; - INVALID_MODIFICATION_ERR: number; - INVALID_NODE_TYPE_ERR: number; - INVALID_STATE_ERR: number; - NAMESPACE_ERR: number; - NETWORK_ERR: number; - NOT_FOUND_ERR: number; - NOT_SUPPORTED_ERR: number; - NO_DATA_ALLOWED_ERR: number; - NO_MODIFICATION_ALLOWED_ERR: number; - PARSE_ERR: number; - QUOTA_EXCEEDED_ERR: number; - SECURITY_ERR: number; - SERIALIZE_ERR: number; - SYNTAX_ERR: number; - TIMEOUT_ERR: number; - TYPE_MISMATCH_ERR: number; - URL_MISMATCH_ERR: number; - VALIDATION_ERR: number; - WRONG_DOCUMENT_ERR: number; + readonly ABORT_ERR: number; + readonly DATA_CLONE_ERR: number; + readonly DOMSTRING_SIZE_ERR: number; + readonly HIERARCHY_REQUEST_ERR: number; + readonly INDEX_SIZE_ERR: number; + readonly INUSE_ATTRIBUTE_ERR: number; + readonly INVALID_ACCESS_ERR: number; + readonly INVALID_CHARACTER_ERR: number; + readonly INVALID_MODIFICATION_ERR: number; + readonly INVALID_NODE_TYPE_ERR: number; + readonly INVALID_STATE_ERR: number; + readonly NAMESPACE_ERR: number; + readonly NETWORK_ERR: number; + readonly NOT_FOUND_ERR: number; + readonly NOT_SUPPORTED_ERR: number; + readonly NO_DATA_ALLOWED_ERR: number; + readonly NO_MODIFICATION_ALLOWED_ERR: number; + readonly PARSE_ERR: number; + readonly QUOTA_EXCEEDED_ERR: number; + readonly SECURITY_ERR: number; + readonly SERIALIZE_ERR: number; + readonly SYNTAX_ERR: number; + readonly TIMEOUT_ERR: number; + readonly TYPE_MISMATCH_ERR: number; + readonly URL_MISMATCH_ERR: number; + readonly VALIDATION_ERR: number; + readonly WRONG_DOCUMENT_ERR: number; } declare var DOMException: { prototype: DOMException; new(): DOMException; - ABORT_ERR: number; - DATA_CLONE_ERR: number; - DOMSTRING_SIZE_ERR: number; - HIERARCHY_REQUEST_ERR: number; - INDEX_SIZE_ERR: number; - INUSE_ATTRIBUTE_ERR: number; - INVALID_ACCESS_ERR: number; - INVALID_CHARACTER_ERR: number; - INVALID_MODIFICATION_ERR: number; - INVALID_NODE_TYPE_ERR: number; - INVALID_STATE_ERR: number; - NAMESPACE_ERR: number; - NETWORK_ERR: number; - NOT_FOUND_ERR: number; - NOT_SUPPORTED_ERR: number; - NO_DATA_ALLOWED_ERR: number; - NO_MODIFICATION_ALLOWED_ERR: number; - PARSE_ERR: number; - QUOTA_EXCEEDED_ERR: number; - SECURITY_ERR: number; - SERIALIZE_ERR: number; - SYNTAX_ERR: number; - TIMEOUT_ERR: number; - TYPE_MISMATCH_ERR: number; - URL_MISMATCH_ERR: number; - VALIDATION_ERR: number; - WRONG_DOCUMENT_ERR: number; + readonly ABORT_ERR: number; + readonly DATA_CLONE_ERR: number; + readonly DOMSTRING_SIZE_ERR: number; + readonly HIERARCHY_REQUEST_ERR: number; + readonly INDEX_SIZE_ERR: number; + readonly INUSE_ATTRIBUTE_ERR: number; + readonly INVALID_ACCESS_ERR: number; + readonly INVALID_CHARACTER_ERR: number; + readonly INVALID_MODIFICATION_ERR: number; + readonly INVALID_NODE_TYPE_ERR: number; + readonly INVALID_STATE_ERR: number; + readonly NAMESPACE_ERR: number; + readonly NETWORK_ERR: number; + readonly NOT_FOUND_ERR: number; + readonly NOT_SUPPORTED_ERR: number; + readonly NO_DATA_ALLOWED_ERR: number; + readonly NO_MODIFICATION_ALLOWED_ERR: number; + readonly PARSE_ERR: number; + readonly QUOTA_EXCEEDED_ERR: number; + readonly SECURITY_ERR: number; + readonly SERIALIZE_ERR: number; + readonly SYNTAX_ERR: number; + readonly TIMEOUT_ERR: number; + readonly TYPE_MISMATCH_ERR: number; + readonly URL_MISMATCH_ERR: number; + readonly VALIDATION_ERR: number; + readonly WRONG_DOCUMENT_ERR: number; } interface DOMImplementation { @@ -5562,7 +6243,7 @@ declare var DOMSettableTokenList: { } interface DOMStringList { - length: number; + readonly length: number; contains(str: string): boolean; item(index: number): string; [index: number]: string; @@ -5583,7 +6264,7 @@ declare var DOMStringMap: { } interface DOMTokenList { - length: number; + readonly length: number; add(...token: string[]): void; contains(token: string): boolean; item(index: number): string; @@ -5610,9 +6291,9 @@ declare var DataCue: { interface DataTransfer { dropEffect: string; effectAllowed: string; - files: FileList; - items: DataTransferItemList; - types: DOMStringList; + readonly files: FileList; + readonly items: DataTransferItemList; + readonly types: DOMStringList; clearData(format?: string): boolean; getData(format: string): string; setData(format: string, data: string): boolean; @@ -5624,8 +6305,8 @@ declare var DataTransfer: { } interface DataTransferItem { - kind: string; - type: string; + readonly kind: string; + readonly type: string; getAsFile(): File; getAsString(_callback: FunctionStringCallback): void; } @@ -5636,7 +6317,7 @@ declare var DataTransferItem: { } interface DataTransferItemList { - length: number; + readonly length: number; add(data: File): DataTransferItem; clear(): void; item(index: number): DataTransferItem; @@ -5650,9 +6331,9 @@ declare var DataTransferItemList: { } interface DeferredPermissionRequest { - id: number; - type: string; - uri: string; + readonly id: number; + readonly type: string; + readonly uri: string; allow(): void; deny(): void; } @@ -5663,7 +6344,7 @@ declare var DeferredPermissionRequest: { } interface DelayNode extends AudioNode { - delayTime: AudioParam; + readonly delayTime: AudioParam; } declare var DelayNode: { @@ -5672,9 +6353,9 @@ declare var DelayNode: { } interface DeviceAcceleration { - x: number; - y: number; - z: number; + readonly x: number; + readonly y: number; + readonly z: number; } declare var DeviceAcceleration: { @@ -5682,11 +6363,20 @@ declare var DeviceAcceleration: { new(): DeviceAcceleration; } +interface DeviceLightEvent extends Event { + readonly value: number; +} + +declare var DeviceLightEvent: { + prototype: DeviceLightEvent; + new(type: string, eventInitDict?: DeviceLightEventInit): DeviceLightEvent; +} + interface DeviceMotionEvent extends Event { - acceleration: DeviceAcceleration; - accelerationIncludingGravity: DeviceAcceleration; - interval: number; - rotationRate: DeviceRotationRate; + readonly acceleration: DeviceAcceleration; + readonly accelerationIncludingGravity: DeviceAcceleration; + readonly interval: number; + readonly rotationRate: DeviceRotationRate; initDeviceMotionEvent(type: string, bubbles: boolean, cancelable: boolean, acceleration: DeviceAccelerationDict, accelerationIncludingGravity: DeviceAccelerationDict, rotationRate: DeviceRotationRateDict, interval: number): void; } @@ -5696,10 +6386,10 @@ declare var DeviceMotionEvent: { } interface DeviceOrientationEvent extends Event { - absolute: boolean; - alpha: number; - beta: number; - gamma: number; + readonly absolute: boolean; + readonly alpha: number; + readonly beta: number; + readonly gamma: number; initDeviceOrientationEvent(type: string, bubbles: boolean, cancelable: boolean, alpha: number, beta: number, gamma: number, absolute: boolean): void; } @@ -5709,9 +6399,9 @@ declare var DeviceOrientationEvent: { } interface DeviceRotationRate { - alpha: number; - beta: number; - gamma: number; + readonly alpha: number; + readonly beta: number; + readonly gamma: number; } declare var DeviceRotationRate: { @@ -5723,15 +6413,15 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven /** * Sets or gets the URL for the current document. */ - URL: string; + readonly URL: string; /** * Gets the URL for the document, stripped of any character encoding. */ - URLUnencoded: string; + readonly URLUnencoded: string; /** * Gets the object that has the focus when the parent document has focus. */ - activeElement: Element; + readonly activeElement: Element; /** * Sets or gets the color of all active links in the document. */ @@ -5739,15 +6429,15 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven /** * Returns a reference to the collection of elements contained by the object. */ - all: HTMLCollection; + readonly all: HTMLAllCollection; /** * Retrieves a collection of all a objects that have a name and/or id property. Objects in this collection are in HTML source order. */ - anchors: HTMLCollection; + anchors: HTMLCollectionOf; /** * Retrieves a collection of all applet objects in the document. */ - applets: HTMLCollection; + applets: HTMLCollectionOf; /** * Deprecated. Sets or retrieves a value that indicates the background color behind the object. */ @@ -5756,7 +6446,7 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven * Specifies the beginning and end of the document body. */ body: HTMLElement; - characterSet: string; + readonly characterSet: string; /** * Gets or sets the character set used to encode the object. */ @@ -5764,13 +6454,14 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven /** * Gets a value that indicates whether standards-compliant mode is switched on for the object. */ - compatMode: string; + readonly compatMode: string; cookie: string; + readonly currentScript: HTMLScriptElement | SVGScriptElement; /** * Gets the default character set from the current regional language settings. */ - defaultCharset: string; - defaultView: Window; + readonly defaultCharset: string; + readonly defaultView: Window; /** * Sets or gets a value that indicates whether the document can be edited. */ @@ -5782,7 +6473,7 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven /** * Gets an object representing the document type declaration associated with the current document. */ - doctype: DocumentType; + readonly doctype: DocumentType; /** * Gets a reference to the root node of the document. */ @@ -5794,7 +6485,7 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven /** * Retrieves a collection of all embed objects in the document. */ - embeds: HTMLCollection; + embeds: HTMLCollectionOf; /** * Sets or gets the foreground (text) color of the document. */ @@ -5802,27 +6493,27 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven /** * Retrieves a collection, in source order, of all form objects in the document. */ - forms: HTMLCollection; - fullscreenElement: Element; - fullscreenEnabled: boolean; - head: HTMLHeadElement; - hidden: boolean; + forms: HTMLCollectionOf; + readonly fullscreenElement: Element; + readonly fullscreenEnabled: boolean; + readonly head: HTMLHeadElement; + readonly hidden: boolean; /** * Retrieves a collection, in source order, of img objects in the document. */ - images: HTMLCollection; + images: HTMLCollectionOf; /** * Gets the implementation object of the current document. */ - implementation: DOMImplementation; + readonly implementation: DOMImplementation; /** * Returns the character encoding used to create the webpage that is loaded into the document object. */ - inputEncoding: string; + readonly inputEncoding: string; /** * Gets the date that the page was last modified, if the page supplies one. */ - lastModified: string; + readonly lastModified: string; /** * Sets or gets the color of the document links. */ @@ -5830,16 +6521,13 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven /** * Retrieves a collection of all a objects that specify the href property and all area objects in the document. */ - links: HTMLCollection; + links: HTMLCollectionOf; /** * Contains information about the current URL. */ - location: Location; - media: string; + readonly location: Location; msCSSOMElementFloatMetrics: boolean; msCapsLockWarningOff: boolean; - msHidden: boolean; - msVisibilityState: string; /** * Fires when the user aborts the download. * @param ev The event. @@ -5941,7 +6629,7 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven * Occurs when the end of playback is reached. * @param ev The event */ - onended: (ev: Event) => any; + onended: (ev: MediaStreamErrorEvent) => any; /** * Fires when an error occurs during object loading. * @param ev The event. @@ -5955,6 +6643,7 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven onfullscreenchange: (ev: Event) => any; onfullscreenerror: (ev: Event) => any; oninput: (ev: Event) => any; + oninvalid: (ev: Event) => any; /** * Fires when the user presses a key. * @param ev The keyboard event @@ -6019,7 +6708,7 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven * Fires when the wheel button is rotated. * @param ev The mouse event */ - onmousewheel: (ev: MouseWheelEvent) => any; + onmousewheel: (ev: WheelEvent) => any; onmscontentzoom: (ev: UIEvent) => any; onmsgesturechange: (ev: MSGestureEvent) => any; onmsgesturedoubletap: (ev: MSGestureEvent) => any; @@ -6104,6 +6793,11 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven * @param ev The event. */ onselect: (ev: UIEvent) => any; + /** + * Fires when the selection state of a document changes. + * @param ev The event. + */ + onselectionchange: (ev: Event) => any; onselectstart: (ev: Event) => any; /** * Occurs when the download has stopped. @@ -6142,51 +6836,51 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven onwaiting: (ev: Event) => any; onwebkitfullscreenchange: (ev: Event) => any; onwebkitfullscreenerror: (ev: Event) => any; - plugins: HTMLCollection; - pointerLockElement: Element; + plugins: HTMLCollectionOf; + readonly pointerLockElement: Element; /** * Retrieves a value that indicates the current state of the object. */ - readyState: string; + readonly readyState: string; /** * Gets the URL of the location that referred the user to the current page. */ - referrer: string; + readonly referrer: string; /** * Gets the root svg element in the document hierarchy. */ - rootElement: SVGSVGElement; + readonly rootElement: SVGSVGElement; /** * Retrieves a collection of all script objects in the document. */ - scripts: HTMLCollection; - security: string; + scripts: HTMLCollectionOf; + readonly scrollingElement: Element; /** * Retrieves a collection of styleSheet objects representing the style sheets that correspond to each instance of a link or style object in the document. */ - styleSheets: StyleSheetList; + readonly styleSheets: StyleSheetList; /** * Contains the title of the document. */ title: string; - visibilityState: string; + readonly visibilityState: string; /** * Sets or gets the color of the links that the user has visited. */ vlinkColor: string; - webkitCurrentFullScreenElement: Element; - webkitFullscreenElement: Element; - webkitFullscreenEnabled: boolean; - webkitIsFullScreen: boolean; - xmlEncoding: string; + readonly webkitCurrentFullScreenElement: Element; + readonly webkitFullscreenElement: Element; + readonly webkitFullscreenEnabled: boolean; + readonly webkitIsFullScreen: boolean; + readonly xmlEncoding: string; xmlStandalone: boolean; /** * Gets or sets the version attribute specified in the declaration of an XML document. */ xmlVersion: string; - currentScript: HTMLScriptElement; adoptNode(source: Node): Node; captureEvents(): void; + caretRangeFromPoint(x: number, y: number): Range; clear(): void; /** * Closes an output stream and forces the sent data to display. @@ -6213,37 +6907,24 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven * @param tagName The name of an element. */ createElement(tagName: "a"): HTMLAnchorElement; - createElement(tagName: "abbr"): HTMLPhraseElement; - createElement(tagName: "acronym"): HTMLPhraseElement; - createElement(tagName: "address"): HTMLBlockElement; createElement(tagName: "applet"): HTMLAppletElement; createElement(tagName: "area"): HTMLAreaElement; createElement(tagName: "audio"): HTMLAudioElement; - createElement(tagName: "b"): HTMLPhraseElement; createElement(tagName: "base"): HTMLBaseElement; createElement(tagName: "basefont"): HTMLBaseFontElement; - createElement(tagName: "bdo"): HTMLPhraseElement; - createElement(tagName: "big"): HTMLPhraseElement; - createElement(tagName: "blockquote"): HTMLBlockElement; + createElement(tagName: "blockquote"): HTMLQuoteElement; createElement(tagName: "body"): HTMLBodyElement; createElement(tagName: "br"): HTMLBRElement; createElement(tagName: "button"): HTMLButtonElement; createElement(tagName: "canvas"): HTMLCanvasElement; createElement(tagName: "caption"): HTMLTableCaptionElement; - createElement(tagName: "center"): HTMLBlockElement; - createElement(tagName: "cite"): HTMLPhraseElement; - createElement(tagName: "code"): HTMLPhraseElement; createElement(tagName: "col"): HTMLTableColElement; createElement(tagName: "colgroup"): HTMLTableColElement; createElement(tagName: "datalist"): HTMLDataListElement; - createElement(tagName: "dd"): HTMLDDElement; createElement(tagName: "del"): HTMLModElement; - createElement(tagName: "dfn"): HTMLPhraseElement; createElement(tagName: "dir"): HTMLDirectoryElement; createElement(tagName: "div"): HTMLDivElement; createElement(tagName: "dl"): HTMLDListElement; - createElement(tagName: "dt"): HTMLDTElement; - createElement(tagName: "em"): HTMLPhraseElement; createElement(tagName: "embed"): HTMLEmbedElement; createElement(tagName: "fieldset"): HTMLFieldSetElement; createElement(tagName: "font"): HTMLFontElement; @@ -6259,52 +6940,41 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven createElement(tagName: "head"): HTMLHeadElement; createElement(tagName: "hr"): HTMLHRElement; createElement(tagName: "html"): HTMLHtmlElement; - createElement(tagName: "i"): HTMLPhraseElement; createElement(tagName: "iframe"): HTMLIFrameElement; createElement(tagName: "img"): HTMLImageElement; createElement(tagName: "input"): HTMLInputElement; createElement(tagName: "ins"): HTMLModElement; - createElement(tagName: "isindex"): HTMLIsIndexElement; - createElement(tagName: "kbd"): HTMLPhraseElement; - createElement(tagName: "keygen"): HTMLBlockElement; + createElement(tagName: "isindex"): HTMLUnknownElement; createElement(tagName: "label"): HTMLLabelElement; createElement(tagName: "legend"): HTMLLegendElement; createElement(tagName: "li"): HTMLLIElement; createElement(tagName: "link"): HTMLLinkElement; - createElement(tagName: "listing"): HTMLBlockElement; + createElement(tagName: "listing"): HTMLPreElement; createElement(tagName: "map"): HTMLMapElement; createElement(tagName: "marquee"): HTMLMarqueeElement; createElement(tagName: "menu"): HTMLMenuElement; createElement(tagName: "meta"): HTMLMetaElement; - createElement(tagName: "nextid"): HTMLNextIdElement; - createElement(tagName: "nobr"): HTMLPhraseElement; + createElement(tagName: "meter"): HTMLMeterElement; + createElement(tagName: "nextid"): HTMLUnknownElement; createElement(tagName: "object"): HTMLObjectElement; createElement(tagName: "ol"): HTMLOListElement; createElement(tagName: "optgroup"): HTMLOptGroupElement; createElement(tagName: "option"): HTMLOptionElement; createElement(tagName: "p"): HTMLParagraphElement; createElement(tagName: "param"): HTMLParamElement; - createElement(tagName: "plaintext"): HTMLBlockElement; + createElement(tagName: "picture"): HTMLPictureElement; createElement(tagName: "pre"): HTMLPreElement; createElement(tagName: "progress"): HTMLProgressElement; createElement(tagName: "q"): HTMLQuoteElement; - createElement(tagName: "rt"): HTMLPhraseElement; - createElement(tagName: "ruby"): HTMLPhraseElement; - createElement(tagName: "s"): HTMLPhraseElement; - createElement(tagName: "samp"): HTMLPhraseElement; createElement(tagName: "script"): HTMLScriptElement; createElement(tagName: "select"): HTMLSelectElement; - createElement(tagName: "small"): HTMLPhraseElement; createElement(tagName: "source"): HTMLSourceElement; createElement(tagName: "span"): HTMLSpanElement; - createElement(tagName: "strike"): HTMLPhraseElement; - createElement(tagName: "strong"): HTMLPhraseElement; createElement(tagName: "style"): HTMLStyleElement; - createElement(tagName: "sub"): HTMLPhraseElement; - createElement(tagName: "sup"): HTMLPhraseElement; createElement(tagName: "table"): HTMLTableElement; createElement(tagName: "tbody"): HTMLTableSectionElement; createElement(tagName: "td"): HTMLTableDataCellElement; + createElement(tagName: "template"): HTMLTemplateElement; createElement(tagName: "textarea"): HTMLTextAreaElement; createElement(tagName: "tfoot"): HTMLTableSectionElement; createElement(tagName: "th"): HTMLTableHeaderCellElement; @@ -6312,13 +6982,10 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven createElement(tagName: "title"): HTMLTitleElement; createElement(tagName: "tr"): HTMLTableRowElement; createElement(tagName: "track"): HTMLTrackElement; - createElement(tagName: "tt"): HTMLPhraseElement; - createElement(tagName: "u"): HTMLPhraseElement; createElement(tagName: "ul"): HTMLUListElement; - createElement(tagName: "var"): HTMLPhraseElement; createElement(tagName: "video"): HTMLVideoElement; createElement(tagName: "x-ms-webview"): MSHTMLWebViewElement; - createElement(tagName: "xmp"): HTMLBlockElement; + createElement(tagName: "xmp"): HTMLPreElement; createElement(tagName: string): HTMLElement; createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "a"): SVGAElement createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "circle"): SVGCircleElement @@ -6403,7 +7070,7 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven * @param data String that specifies the nodeValue property of the text node. */ createTextNode(data: string): Text; - createTouch(view: any, target: EventTarget, identifier: number, pageX: number, pageY: number, screenX: number, screenY: number): Touch; + createTouch(view: Window, target: EventTarget, identifier: number, pageX: number, pageY: number, screenX: number, screenY: number): Touch; createTouchList(...touches: Touch[]): TouchList; /** * Creates a TreeWalker object that you can use to traverse filtered lists of nodes or elements in a document. @@ -6454,44 +7121,44 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven * @param name Specifies the name of an element. */ getElementsByTagName(tagname: "a"): NodeListOf; - getElementsByTagName(tagname: "abbr"): NodeListOf; - getElementsByTagName(tagname: "acronym"): NodeListOf; - getElementsByTagName(tagname: "address"): NodeListOf; + getElementsByTagName(tagname: "abbr"): NodeListOf; + getElementsByTagName(tagname: "acronym"): NodeListOf; + getElementsByTagName(tagname: "address"): NodeListOf; getElementsByTagName(tagname: "applet"): NodeListOf; getElementsByTagName(tagname: "area"): NodeListOf; getElementsByTagName(tagname: "article"): NodeListOf; getElementsByTagName(tagname: "aside"): NodeListOf; getElementsByTagName(tagname: "audio"): NodeListOf; - getElementsByTagName(tagname: "b"): NodeListOf; + getElementsByTagName(tagname: "b"): NodeListOf; getElementsByTagName(tagname: "base"): NodeListOf; getElementsByTagName(tagname: "basefont"): NodeListOf; - getElementsByTagName(tagname: "bdo"): NodeListOf; - getElementsByTagName(tagname: "big"): NodeListOf; - getElementsByTagName(tagname: "blockquote"): NodeListOf; + getElementsByTagName(tagname: "bdo"): NodeListOf; + getElementsByTagName(tagname: "big"): NodeListOf; + getElementsByTagName(tagname: "blockquote"): NodeListOf; getElementsByTagName(tagname: "body"): NodeListOf; getElementsByTagName(tagname: "br"): NodeListOf; getElementsByTagName(tagname: "button"): NodeListOf; getElementsByTagName(tagname: "canvas"): NodeListOf; getElementsByTagName(tagname: "caption"): NodeListOf; - getElementsByTagName(tagname: "center"): NodeListOf; + getElementsByTagName(tagname: "center"): NodeListOf; getElementsByTagName(tagname: "circle"): NodeListOf; - getElementsByTagName(tagname: "cite"): NodeListOf; + getElementsByTagName(tagname: "cite"): NodeListOf; getElementsByTagName(tagname: "clippath"): NodeListOf; - getElementsByTagName(tagname: "code"): NodeListOf; + getElementsByTagName(tagname: "code"): NodeListOf; getElementsByTagName(tagname: "col"): NodeListOf; getElementsByTagName(tagname: "colgroup"): NodeListOf; getElementsByTagName(tagname: "datalist"): NodeListOf; - getElementsByTagName(tagname: "dd"): NodeListOf; + getElementsByTagName(tagname: "dd"): NodeListOf; getElementsByTagName(tagname: "defs"): NodeListOf; getElementsByTagName(tagname: "del"): NodeListOf; getElementsByTagName(tagname: "desc"): NodeListOf; - getElementsByTagName(tagname: "dfn"): NodeListOf; + getElementsByTagName(tagname: "dfn"): NodeListOf; getElementsByTagName(tagname: "dir"): NodeListOf; getElementsByTagName(tagname: "div"): NodeListOf; getElementsByTagName(tagname: "dl"): NodeListOf; - getElementsByTagName(tagname: "dt"): NodeListOf; + getElementsByTagName(tagname: "dt"): NodeListOf; getElementsByTagName(tagname: "ellipse"): NodeListOf; - getElementsByTagName(tagname: "em"): NodeListOf; + getElementsByTagName(tagname: "em"): NodeListOf; getElementsByTagName(tagname: "embed"): NodeListOf; getElementsByTagName(tagname: "feblend"): NodeListOf; getElementsByTagName(tagname: "fecolormatrix"): NodeListOf; @@ -6539,22 +7206,22 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven getElementsByTagName(tagname: "hgroup"): NodeListOf; getElementsByTagName(tagname: "hr"): NodeListOf; getElementsByTagName(tagname: "html"): NodeListOf; - getElementsByTagName(tagname: "i"): NodeListOf; + getElementsByTagName(tagname: "i"): NodeListOf; getElementsByTagName(tagname: "iframe"): NodeListOf; getElementsByTagName(tagname: "image"): NodeListOf; getElementsByTagName(tagname: "img"): NodeListOf; getElementsByTagName(tagname: "input"): NodeListOf; getElementsByTagName(tagname: "ins"): NodeListOf; - getElementsByTagName(tagname: "isindex"): NodeListOf; - getElementsByTagName(tagname: "kbd"): NodeListOf; - getElementsByTagName(tagname: "keygen"): NodeListOf; + getElementsByTagName(tagname: "isindex"): NodeListOf; + getElementsByTagName(tagname: "kbd"): NodeListOf; + getElementsByTagName(tagname: "keygen"): NodeListOf; getElementsByTagName(tagname: "label"): NodeListOf; getElementsByTagName(tagname: "legend"): NodeListOf; getElementsByTagName(tagname: "li"): NodeListOf; getElementsByTagName(tagname: "line"): NodeListOf; getElementsByTagName(tagname: "lineargradient"): NodeListOf; getElementsByTagName(tagname: "link"): NodeListOf; - getElementsByTagName(tagname: "listing"): NodeListOf; + getElementsByTagName(tagname: "listing"): NodeListOf; getElementsByTagName(tagname: "map"): NodeListOf; getElementsByTagName(tagname: "mark"): NodeListOf; getElementsByTagName(tagname: "marker"): NodeListOf; @@ -6563,9 +7230,10 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven getElementsByTagName(tagname: "menu"): NodeListOf; getElementsByTagName(tagname: "meta"): NodeListOf; getElementsByTagName(tagname: "metadata"): NodeListOf; + getElementsByTagName(tagname: "meter"): NodeListOf; getElementsByTagName(tagname: "nav"): NodeListOf; - getElementsByTagName(tagname: "nextid"): NodeListOf; - getElementsByTagName(tagname: "nobr"): NodeListOf; + getElementsByTagName(tagname: "nextid"): NodeListOf; + getElementsByTagName(tagname: "nobr"): NodeListOf; getElementsByTagName(tagname: "noframes"): NodeListOf; getElementsByTagName(tagname: "noscript"): NodeListOf; getElementsByTagName(tagname: "object"): NodeListOf; @@ -6576,7 +7244,8 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven getElementsByTagName(tagname: "param"): NodeListOf; getElementsByTagName(tagname: "path"): NodeListOf; getElementsByTagName(tagname: "pattern"): NodeListOf; - getElementsByTagName(tagname: "plaintext"): NodeListOf; + getElementsByTagName(tagname: "picture"): NodeListOf; + getElementsByTagName(tagname: "plaintext"): NodeListOf; getElementsByTagName(tagname: "polygon"): NodeListOf; getElementsByTagName(tagname: "polyline"): NodeListOf; getElementsByTagName(tagname: "pre"): NodeListOf; @@ -6584,28 +7253,29 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven getElementsByTagName(tagname: "q"): NodeListOf; getElementsByTagName(tagname: "radialgradient"): NodeListOf; getElementsByTagName(tagname: "rect"): NodeListOf; - getElementsByTagName(tagname: "rt"): NodeListOf; - getElementsByTagName(tagname: "ruby"): NodeListOf; - getElementsByTagName(tagname: "s"): NodeListOf; - getElementsByTagName(tagname: "samp"): NodeListOf; + getElementsByTagName(tagname: "rt"): NodeListOf; + getElementsByTagName(tagname: "ruby"): NodeListOf; + getElementsByTagName(tagname: "s"): NodeListOf; + getElementsByTagName(tagname: "samp"): NodeListOf; getElementsByTagName(tagname: "script"): NodeListOf; getElementsByTagName(tagname: "section"): NodeListOf; getElementsByTagName(tagname: "select"): NodeListOf; - getElementsByTagName(tagname: "small"): NodeListOf; + getElementsByTagName(tagname: "small"): NodeListOf; getElementsByTagName(tagname: "source"): NodeListOf; getElementsByTagName(tagname: "span"): NodeListOf; getElementsByTagName(tagname: "stop"): NodeListOf; - getElementsByTagName(tagname: "strike"): NodeListOf; - getElementsByTagName(tagname: "strong"): NodeListOf; + getElementsByTagName(tagname: "strike"): NodeListOf; + getElementsByTagName(tagname: "strong"): NodeListOf; getElementsByTagName(tagname: "style"): NodeListOf; - getElementsByTagName(tagname: "sub"): NodeListOf; - getElementsByTagName(tagname: "sup"): NodeListOf; + getElementsByTagName(tagname: "sub"): NodeListOf; + getElementsByTagName(tagname: "sup"): NodeListOf; getElementsByTagName(tagname: "svg"): NodeListOf; getElementsByTagName(tagname: "switch"): NodeListOf; getElementsByTagName(tagname: "symbol"): NodeListOf; getElementsByTagName(tagname: "table"): NodeListOf; getElementsByTagName(tagname: "tbody"): NodeListOf; getElementsByTagName(tagname: "td"): NodeListOf; + getElementsByTagName(tagname: "template"): NodeListOf; getElementsByTagName(tagname: "text"): NodeListOf; getElementsByTagName(tagname: "textpath"): NodeListOf; getElementsByTagName(tagname: "textarea"): NodeListOf; @@ -6616,16 +7286,16 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven getElementsByTagName(tagname: "tr"): NodeListOf; getElementsByTagName(tagname: "track"): NodeListOf; getElementsByTagName(tagname: "tspan"): NodeListOf; - getElementsByTagName(tagname: "tt"): NodeListOf; - getElementsByTagName(tagname: "u"): NodeListOf; + getElementsByTagName(tagname: "tt"): NodeListOf; + getElementsByTagName(tagname: "u"): NodeListOf; getElementsByTagName(tagname: "ul"): NodeListOf; getElementsByTagName(tagname: "use"): NodeListOf; - getElementsByTagName(tagname: "var"): NodeListOf; + getElementsByTagName(tagname: "var"): NodeListOf; getElementsByTagName(tagname: "video"): NodeListOf; getElementsByTagName(tagname: "view"): NodeListOf; getElementsByTagName(tagname: "wbr"): NodeListOf; getElementsByTagName(tagname: "x-ms-webview"): NodeListOf; - getElementsByTagName(tagname: "xmp"): NodeListOf; + getElementsByTagName(tagname: "xmp"): NodeListOf; getElementsByTagName(tagname: string): NodeListOf; getElementsByTagNameNS(namespaceURI: string, localName: string): NodeListOf; /** @@ -6637,8 +7307,8 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven */ hasFocus(): boolean; importNode(importedNode: Node, deep: boolean): Node; - msElementsFromPoint(x: number, y: number): NodeList; - msElementsFromRect(left: number, top: number, width: number, height: number): NodeList; + msElementsFromPoint(x: number, y: number): NodeListOf; + msElementsFromRect(left: number, top: number, width: number, height: number): NodeListOf; /** * Opens a new window and loads a document specified by a given URL. Also, opens a new window that uses the url parameter and the name parameter to collect the output of the write method and the writeln method. * @param url Specifies a MIME type for the document. @@ -6734,12 +7404,13 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "ended", listener: (ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; addEventListener(type: "fullscreenchange", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "fullscreenerror", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "invalid", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; @@ -6752,7 +7423,7 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousewheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; addEventListener(type: "mssitemodejumplistitemremoved", listener: (ev: MSSiteModeEvent) => any, useCapture?: boolean): void; addEventListener(type: "msthumbnailclick", listener: (ev: MSSiteModeEvent) => any, useCapture?: boolean): void; addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -6776,6 +7447,7 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven addEventListener(type: "seeked", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "seeking", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "select", listener: (ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "selectionchange", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "selectstart", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "stalled", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "stop", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -6809,12 +7481,12 @@ declare var DocumentFragment: { } interface DocumentType extends Node, ChildNode { - entities: NamedNodeMap; - internalSubset: string; - name: string; - notations: NamedNodeMap; - publicId: string; - systemId: string; + readonly entities: NamedNodeMap; + readonly internalSubset: string; + readonly name: string; + readonly notations: NamedNodeMap; + readonly publicId: string; + readonly systemId: string; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -6824,7 +7496,7 @@ declare var DocumentType: { } interface DragEvent extends MouseEvent { - dataTransfer: DataTransfer; + readonly dataTransfer: DataTransfer; initDragEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, screenXArg: number, screenYArg: number, clientXArg: number, clientYArg: number, ctrlKeyArg: boolean, altKeyArg: boolean, shiftKeyArg: boolean, metaKeyArg: boolean, buttonArg: number, relatedTargetArg: EventTarget, dataTransferArg: DataTransfer): void; msConvertURL(file: File, targetType: string, targetURL?: string): void; } @@ -6835,12 +7507,12 @@ declare var DragEvent: { } interface DynamicsCompressorNode extends AudioNode { - attack: AudioParam; - knee: AudioParam; - ratio: AudioParam; - reduction: AudioParam; - release: AudioParam; - threshold: AudioParam; + readonly attack: AudioParam; + readonly knee: AudioParam; + readonly ratio: AudioParam; + readonly reduction: AudioParam; + readonly release: AudioParam; + readonly threshold: AudioParam; } declare var DynamicsCompressorNode: { @@ -6848,26 +7520,36 @@ declare var DynamicsCompressorNode: { new(): DynamicsCompressorNode; } +interface EXT_frag_depth { +} + +declare var EXT_frag_depth: { + prototype: EXT_frag_depth; + new(): EXT_frag_depth; +} + interface EXT_texture_filter_anisotropic { - MAX_TEXTURE_MAX_ANISOTROPY_EXT: number; - TEXTURE_MAX_ANISOTROPY_EXT: number; + readonly MAX_TEXTURE_MAX_ANISOTROPY_EXT: number; + readonly TEXTURE_MAX_ANISOTROPY_EXT: number; } declare var EXT_texture_filter_anisotropic: { prototype: EXT_texture_filter_anisotropic; new(): EXT_texture_filter_anisotropic; - MAX_TEXTURE_MAX_ANISOTROPY_EXT: number; - TEXTURE_MAX_ANISOTROPY_EXT: number; + readonly MAX_TEXTURE_MAX_ANISOTROPY_EXT: number; + readonly TEXTURE_MAX_ANISOTROPY_EXT: number; } interface Element extends Node, GlobalEventHandlers, ElementTraversal, NodeSelector, ChildNode { - classList: DOMTokenList; - clientHeight: number; - clientLeft: number; - clientTop: number; - clientWidth: number; + readonly classList: DOMTokenList; + className: string; + readonly clientHeight: number; + readonly clientLeft: number; + readonly clientTop: number; + readonly clientWidth: number; + id: string; msContentZoomFactor: number; - msRegionOverflow: string; + readonly msRegionOverflow: string; onariarequest: (ev: AriaRequestEvent) => any; oncommand: (ev: CommandEvent) => any; ongotpointercapture: (ev: PointerEvent) => any; @@ -6895,13 +7577,12 @@ interface Element extends Node, GlobalEventHandlers, ElementTraversal, NodeSelec ontouchstart: (ev: TouchEvent) => any; onwebkitfullscreenchange: (ev: Event) => any; onwebkitfullscreenerror: (ev: Event) => any; - scrollHeight: number; + readonly prefix: string; + readonly scrollHeight: number; scrollLeft: number; scrollTop: number; - scrollWidth: number; - tagName: string; - id: string; - className: string; + readonly scrollWidth: number; + readonly tagName: string; innerHTML: string; getAttribute(name?: string): string; getAttributeNS(namespaceURI: string, localName: string): string; @@ -6910,44 +7591,44 @@ interface Element extends Node, GlobalEventHandlers, ElementTraversal, NodeSelec getBoundingClientRect(): ClientRect; getClientRects(): ClientRectList; getElementsByTagName(name: "a"): NodeListOf; - getElementsByTagName(name: "abbr"): NodeListOf; - getElementsByTagName(name: "acronym"): NodeListOf; - getElementsByTagName(name: "address"): NodeListOf; + getElementsByTagName(name: "abbr"): NodeListOf; + getElementsByTagName(name: "acronym"): NodeListOf; + getElementsByTagName(name: "address"): NodeListOf; getElementsByTagName(name: "applet"): NodeListOf; getElementsByTagName(name: "area"): NodeListOf; getElementsByTagName(name: "article"): NodeListOf; getElementsByTagName(name: "aside"): NodeListOf; getElementsByTagName(name: "audio"): NodeListOf; - getElementsByTagName(name: "b"): NodeListOf; + getElementsByTagName(name: "b"): NodeListOf; getElementsByTagName(name: "base"): NodeListOf; getElementsByTagName(name: "basefont"): NodeListOf; - getElementsByTagName(name: "bdo"): NodeListOf; - getElementsByTagName(name: "big"): NodeListOf; - getElementsByTagName(name: "blockquote"): NodeListOf; + getElementsByTagName(name: "bdo"): NodeListOf; + getElementsByTagName(name: "big"): NodeListOf; + getElementsByTagName(name: "blockquote"): NodeListOf; getElementsByTagName(name: "body"): NodeListOf; getElementsByTagName(name: "br"): NodeListOf; getElementsByTagName(name: "button"): NodeListOf; getElementsByTagName(name: "canvas"): NodeListOf; getElementsByTagName(name: "caption"): NodeListOf; - getElementsByTagName(name: "center"): NodeListOf; + getElementsByTagName(name: "center"): NodeListOf; getElementsByTagName(name: "circle"): NodeListOf; - getElementsByTagName(name: "cite"): NodeListOf; + getElementsByTagName(name: "cite"): NodeListOf; getElementsByTagName(name: "clippath"): NodeListOf; - getElementsByTagName(name: "code"): NodeListOf; + getElementsByTagName(name: "code"): NodeListOf; getElementsByTagName(name: "col"): NodeListOf; getElementsByTagName(name: "colgroup"): NodeListOf; getElementsByTagName(name: "datalist"): NodeListOf; - getElementsByTagName(name: "dd"): NodeListOf; + getElementsByTagName(name: "dd"): NodeListOf; getElementsByTagName(name: "defs"): NodeListOf; getElementsByTagName(name: "del"): NodeListOf; getElementsByTagName(name: "desc"): NodeListOf; - getElementsByTagName(name: "dfn"): NodeListOf; + getElementsByTagName(name: "dfn"): NodeListOf; getElementsByTagName(name: "dir"): NodeListOf; getElementsByTagName(name: "div"): NodeListOf; getElementsByTagName(name: "dl"): NodeListOf; - getElementsByTagName(name: "dt"): NodeListOf; + getElementsByTagName(name: "dt"): NodeListOf; getElementsByTagName(name: "ellipse"): NodeListOf; - getElementsByTagName(name: "em"): NodeListOf; + getElementsByTagName(name: "em"): NodeListOf; getElementsByTagName(name: "embed"): NodeListOf; getElementsByTagName(name: "feblend"): NodeListOf; getElementsByTagName(name: "fecolormatrix"): NodeListOf; @@ -6995,22 +7676,22 @@ interface Element extends Node, GlobalEventHandlers, ElementTraversal, NodeSelec getElementsByTagName(name: "hgroup"): NodeListOf; getElementsByTagName(name: "hr"): NodeListOf; getElementsByTagName(name: "html"): NodeListOf; - getElementsByTagName(name: "i"): NodeListOf; + getElementsByTagName(name: "i"): NodeListOf; getElementsByTagName(name: "iframe"): NodeListOf; getElementsByTagName(name: "image"): NodeListOf; getElementsByTagName(name: "img"): NodeListOf; getElementsByTagName(name: "input"): NodeListOf; getElementsByTagName(name: "ins"): NodeListOf; - getElementsByTagName(name: "isindex"): NodeListOf; - getElementsByTagName(name: "kbd"): NodeListOf; - getElementsByTagName(name: "keygen"): NodeListOf; + getElementsByTagName(name: "isindex"): NodeListOf; + getElementsByTagName(name: "kbd"): NodeListOf; + getElementsByTagName(name: "keygen"): NodeListOf; getElementsByTagName(name: "label"): NodeListOf; getElementsByTagName(name: "legend"): NodeListOf; getElementsByTagName(name: "li"): NodeListOf; getElementsByTagName(name: "line"): NodeListOf; getElementsByTagName(name: "lineargradient"): NodeListOf; getElementsByTagName(name: "link"): NodeListOf; - getElementsByTagName(name: "listing"): NodeListOf; + getElementsByTagName(name: "listing"): NodeListOf; getElementsByTagName(name: "map"): NodeListOf; getElementsByTagName(name: "mark"): NodeListOf; getElementsByTagName(name: "marker"): NodeListOf; @@ -7019,9 +7700,10 @@ interface Element extends Node, GlobalEventHandlers, ElementTraversal, NodeSelec getElementsByTagName(name: "menu"): NodeListOf; getElementsByTagName(name: "meta"): NodeListOf; getElementsByTagName(name: "metadata"): NodeListOf; + getElementsByTagName(name: "meter"): NodeListOf; getElementsByTagName(name: "nav"): NodeListOf; - getElementsByTagName(name: "nextid"): NodeListOf; - getElementsByTagName(name: "nobr"): NodeListOf; + getElementsByTagName(name: "nextid"): NodeListOf; + getElementsByTagName(name: "nobr"): NodeListOf; getElementsByTagName(name: "noframes"): NodeListOf; getElementsByTagName(name: "noscript"): NodeListOf; getElementsByTagName(name: "object"): NodeListOf; @@ -7032,7 +7714,8 @@ interface Element extends Node, GlobalEventHandlers, ElementTraversal, NodeSelec getElementsByTagName(name: "param"): NodeListOf; getElementsByTagName(name: "path"): NodeListOf; getElementsByTagName(name: "pattern"): NodeListOf; - getElementsByTagName(name: "plaintext"): NodeListOf; + getElementsByTagName(name: "picture"): NodeListOf; + getElementsByTagName(name: "plaintext"): NodeListOf; getElementsByTagName(name: "polygon"): NodeListOf; getElementsByTagName(name: "polyline"): NodeListOf; getElementsByTagName(name: "pre"): NodeListOf; @@ -7040,28 +7723,29 @@ interface Element extends Node, GlobalEventHandlers, ElementTraversal, NodeSelec getElementsByTagName(name: "q"): NodeListOf; getElementsByTagName(name: "radialgradient"): NodeListOf; getElementsByTagName(name: "rect"): NodeListOf; - getElementsByTagName(name: "rt"): NodeListOf; - getElementsByTagName(name: "ruby"): NodeListOf; - getElementsByTagName(name: "s"): NodeListOf; - getElementsByTagName(name: "samp"): NodeListOf; + getElementsByTagName(name: "rt"): NodeListOf; + getElementsByTagName(name: "ruby"): NodeListOf; + getElementsByTagName(name: "s"): NodeListOf; + getElementsByTagName(name: "samp"): NodeListOf; getElementsByTagName(name: "script"): NodeListOf; getElementsByTagName(name: "section"): NodeListOf; getElementsByTagName(name: "select"): NodeListOf; - getElementsByTagName(name: "small"): NodeListOf; + getElementsByTagName(name: "small"): NodeListOf; getElementsByTagName(name: "source"): NodeListOf; getElementsByTagName(name: "span"): NodeListOf; getElementsByTagName(name: "stop"): NodeListOf; - getElementsByTagName(name: "strike"): NodeListOf; - getElementsByTagName(name: "strong"): NodeListOf; + getElementsByTagName(name: "strike"): NodeListOf; + getElementsByTagName(name: "strong"): NodeListOf; getElementsByTagName(name: "style"): NodeListOf; - getElementsByTagName(name: "sub"): NodeListOf; - getElementsByTagName(name: "sup"): NodeListOf; + getElementsByTagName(name: "sub"): NodeListOf; + getElementsByTagName(name: "sup"): NodeListOf; getElementsByTagName(name: "svg"): NodeListOf; getElementsByTagName(name: "switch"): NodeListOf; getElementsByTagName(name: "symbol"): NodeListOf; getElementsByTagName(name: "table"): NodeListOf; getElementsByTagName(name: "tbody"): NodeListOf; getElementsByTagName(name: "td"): NodeListOf; + getElementsByTagName(name: "template"): NodeListOf; getElementsByTagName(name: "text"): NodeListOf; getElementsByTagName(name: "textpath"): NodeListOf; getElementsByTagName(name: "textarea"): NodeListOf; @@ -7072,16 +7756,16 @@ interface Element extends Node, GlobalEventHandlers, ElementTraversal, NodeSelec getElementsByTagName(name: "tr"): NodeListOf; getElementsByTagName(name: "track"): NodeListOf; getElementsByTagName(name: "tspan"): NodeListOf; - getElementsByTagName(name: "tt"): NodeListOf; - getElementsByTagName(name: "u"): NodeListOf; + getElementsByTagName(name: "tt"): NodeListOf; + getElementsByTagName(name: "u"): NodeListOf; getElementsByTagName(name: "ul"): NodeListOf; getElementsByTagName(name: "use"): NodeListOf; - getElementsByTagName(name: "var"): NodeListOf; + getElementsByTagName(name: "var"): NodeListOf; getElementsByTagName(name: "video"): NodeListOf; getElementsByTagName(name: "view"): NodeListOf; getElementsByTagName(name: "wbr"): NodeListOf; getElementsByTagName(name: "x-ms-webview"): NodeListOf; - getElementsByTagName(name: "xmp"): NodeListOf; + getElementsByTagName(name: "xmp"): NodeListOf; getElementsByTagName(name: string): NodeListOf; getElementsByTagNameNS(namespaceURI: string, localName: string): NodeListOf; hasAttribute(name: string): boolean; @@ -7154,11 +7838,11 @@ declare var Element: { } interface ErrorEvent extends Event { - colno: number; - error: any; - filename: string; - lineno: number; - message: string; + readonly colno: number; + readonly error: any; + readonly filename: string; + readonly lineno: number; + readonly message: string; initErrorEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, messageArg: string, filenameArg: string, linenoArg: number): void; } @@ -7168,39 +7852,39 @@ declare var ErrorEvent: { } interface Event { - bubbles: boolean; + readonly bubbles: boolean; cancelBubble: boolean; - cancelable: boolean; - currentTarget: EventTarget; - defaultPrevented: boolean; - eventPhase: number; - isTrusted: boolean; + readonly cancelable: boolean; + readonly currentTarget: EventTarget; + readonly defaultPrevented: boolean; + readonly eventPhase: number; + readonly isTrusted: boolean; returnValue: boolean; - srcElement: Element; - target: EventTarget; - timeStamp: number; - type: string; + readonly srcElement: Element; + readonly target: EventTarget; + readonly timeStamp: number; + readonly type: string; initEvent(eventTypeArg: string, canBubbleArg: boolean, cancelableArg: boolean): void; preventDefault(): void; stopImmediatePropagation(): void; stopPropagation(): void; - AT_TARGET: number; - BUBBLING_PHASE: number; - CAPTURING_PHASE: number; + readonly AT_TARGET: number; + readonly BUBBLING_PHASE: number; + readonly CAPTURING_PHASE: number; } declare var Event: { prototype: Event; new(type: string, eventInitDict?: EventInit): Event; - AT_TARGET: number; - BUBBLING_PHASE: number; - CAPTURING_PHASE: number; + readonly AT_TARGET: number; + readonly BUBBLING_PHASE: number; + readonly CAPTURING_PHASE: number; } interface EventTarget { - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; + addEventListener(type: string, listener?: EventListenerOrEventListenerObject, useCapture?: boolean): void; dispatchEvent(evt: Event): boolean; - removeEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; + removeEventListener(type: string, listener?: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var EventTarget: { @@ -7217,8 +7901,9 @@ declare var External: { } interface File extends Blob { - lastModifiedDate: any; - name: string; + readonly lastModifiedDate: any; + readonly name: string; + readonly webkitRelativePath: string; } declare var File: { @@ -7227,7 +7912,7 @@ declare var File: { } interface FileList { - length: number; + readonly length: number; item(index: number): File; [index: number]: File; } @@ -7238,7 +7923,7 @@ declare var FileList: { } interface FileReader extends EventTarget, MSBaseReader { - error: DOMError; + readonly error: DOMError; readAsArrayBuffer(blob: Blob): void; readAsBinaryString(blob: Blob): void; readAsDataURL(blob: Blob): void; @@ -7252,7 +7937,7 @@ declare var FileReader: { } interface FocusEvent extends UIEvent { - relatedTarget: EventTarget; + readonly relatedTarget: EventTarget; initFocusEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, relatedTargetArg: EventTarget): void; } @@ -7271,7 +7956,7 @@ declare var FormData: { } interface GainNode extends AudioNode { - gain: AudioParam; + readonly gain: AudioParam; } declare var GainNode: { @@ -7280,13 +7965,13 @@ declare var GainNode: { } interface Gamepad { - axes: number[]; - buttons: GamepadButton[]; - connected: boolean; - id: string; - index: number; - mapping: string; - timestamp: number; + readonly axes: number[]; + readonly buttons: GamepadButton[]; + readonly connected: boolean; + readonly id: string; + readonly index: number; + readonly mapping: string; + readonly timestamp: number; } declare var Gamepad: { @@ -7295,8 +7980,8 @@ declare var Gamepad: { } interface GamepadButton { - pressed: boolean; - value: number; + readonly pressed: boolean; + readonly value: number; } declare var GamepadButton: { @@ -7305,7 +7990,7 @@ declare var GamepadButton: { } interface GamepadEvent extends Event { - gamepad: Gamepad; + readonly gamepad: Gamepad; } declare var GamepadEvent: { @@ -7343,6 +8028,7 @@ interface HTMLAnchorElement extends HTMLElement { * Sets or retrieves the coordinates of the object. */ coords: string; + download: string; /** * Contains the anchor portion of the URL including the hash sign (#). */ @@ -7363,12 +8049,12 @@ interface HTMLAnchorElement extends HTMLElement { * Sets or retrieves the language code of the object. */ hreflang: string; - mimeType: string; + readonly mimeType: string; /** * Sets or retrieves the shape of the object. */ name: string; - nameProp: string; + readonly nameProp: string; /** * Contains the pathname of the URL. */ @@ -7381,7 +8067,7 @@ interface HTMLAnchorElement extends HTMLElement { * Contains the protocol of the URL. */ protocol: string; - protocolLong: string; + readonly protocolLong: string; /** * Sets or retrieves the relationship between the object and the destination of the link. */ @@ -7423,7 +8109,7 @@ interface HTMLAppletElement extends HTMLElement { /** * Retrieves a string of the URL where the object tag can be found. This is often the href of the document that the object is in, or the value set by a base element. */ - BaseHref: string; + readonly BaseHref: string; align: string; /** * Sets or retrieves a text alternative to the graphic. @@ -7450,7 +8136,7 @@ interface HTMLAppletElement extends HTMLElement { /** * Address of a pointer to the document this page or frame contains. If there is no document, then null will be returned. */ - contentDocument: Document; + readonly contentDocument: Document; /** * Sets or retrieves the URL that references the data of the object. */ @@ -7459,7 +8145,7 @@ interface HTMLAppletElement extends HTMLElement { * Sets or retrieves a character string that can be used to implement your own declare functionality for the object. */ declare: boolean; - form: HTMLFormElement; + readonly form: HTMLFormElement; /** * Sets or retrieves the height of the object. */ @@ -7500,6 +8186,7 @@ interface HTMLAreaElement extends HTMLElement { * Sets or retrieves the coordinates of the object. */ coords: string; + download: string; /** * Sets or retrieves the subsection of the href property that follows the number sign (#). */ @@ -7625,23 +8312,6 @@ declare var HTMLBaseFontElement: { new(): HTMLBaseFontElement; } -interface HTMLBlockElement extends HTMLElement { - /** - * Sets or retrieves reference information about the object. - */ - cite: string; - clear: string; - /** - * Sets or retrieves the width of the object. - */ - width: number; -} - -declare var HTMLBlockElement: { - prototype: HTMLBlockElement; - new(): HTMLBlockElement; -} - interface HTMLBodyElement extends HTMLElement { aLink: any; background: string; @@ -7669,7 +8339,6 @@ interface HTMLBodyElement extends HTMLElement { onunload: (ev: Event) => any; text: any; vLink: any; - createTextRange(): TextRange; addEventListener(type: "MSContentZoom", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; addEventListener(type: "MSGestureDoubleTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; @@ -7694,10 +8363,10 @@ interface HTMLBodyElement extends HTMLElement { addEventListener(type: "afterprint", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecopy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecopy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforedeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforepaste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforepaste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforeprint", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "beforeunload", listener: (ev: BeforeUnloadEvent) => any, useCapture?: boolean): void; addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; @@ -7708,9 +8377,9 @@ interface HTMLBodyElement extends HTMLElement { addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void; addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "copy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "copy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "cuechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "cut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "cut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "deactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void; @@ -7722,7 +8391,7 @@ interface HTMLBodyElement extends HTMLElement { addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "ended", listener: (ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; @@ -7730,6 +8399,7 @@ interface HTMLBodyElement extends HTMLElement { addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; addEventListener(type: "hashchange", listener: (ev: HashChangeEvent) => any, useCapture?: boolean): void; addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "invalid", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; @@ -7747,13 +8417,13 @@ interface HTMLBodyElement extends HTMLElement { addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousewheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; addEventListener(type: "offline", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "online", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "orientationchange", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "pagehide", listener: (ev: PageTransitionEvent) => any, useCapture?: boolean): void; addEventListener(type: "pageshow", listener: (ev: PageTransitionEvent) => any, useCapture?: boolean): void; - addEventListener(type: "paste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "paste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -7807,7 +8477,7 @@ interface HTMLButtonElement extends HTMLElement { /** * Retrieves a reference to the form that the object is embedded in. */ - form: HTMLFormElement; + readonly form: HTMLFormElement; /** * Overrides the action attribute (where the data on a form is sent) on the parent form element. */ @@ -7840,11 +8510,11 @@ interface HTMLButtonElement extends HTMLElement { /** * Returns the error message that would be displayed if the user submits the form, or an empty string if no error message. It also triggers the standard error message, such as "this is a required field". The result is that the user sees validation messages without actually submitting. */ - validationMessage: string; + readonly validationMessage: string; /** * Returns a ValidityState object that represents the validity states of an element. */ - validity: ValidityState; + readonly validity: ValidityState; /** * Sets or retrieves the default or selected value of the control. */ @@ -7852,15 +8522,11 @@ interface HTMLButtonElement extends HTMLElement { /** * Returns whether an element will successfully validate based on forms validation rules and constraints. */ - willValidate: boolean; + readonly willValidate: boolean; /** * Returns whether a form will validate when it is submitted, without having to submit it. */ checkValidity(): boolean; - /** - * Creates a TextRange object for the element. - */ - createTextRange(): TextRange; /** * Sets a custom error message that is displayed when a form is submitted. * @param error Sets a custom error message that is displayed when a form is submitted. @@ -7910,11 +8576,11 @@ interface HTMLCollection { /** * Sets or retrieves the number of objects in a collection. */ - length: number; + readonly length: number; /** * Retrieves an object from various collections. */ - item(nameOrIndex?: any, optionalIndex?: any): Element; + item(index: number): Element; /** * Retrieves a select object or an object from an options collection. */ @@ -7927,18 +8593,6 @@ declare var HTMLCollection: { new(): HTMLCollection; } -interface HTMLDDElement extends HTMLElement { - /** - * Sets or retrieves whether the browser automatically performs wordwrap. - */ - noWrap: boolean; -} - -declare var HTMLDDElement: { - prototype: HTMLDDElement; - new(): HTMLDDElement; -} - interface HTMLDListElement extends HTMLElement { compact: boolean; } @@ -7948,20 +8602,8 @@ declare var HTMLDListElement: { new(): HTMLDListElement; } -interface HTMLDTElement extends HTMLElement { - /** - * Sets or retrieves whether the browser automatically performs wordwrap. - */ - noWrap: boolean; -} - -declare var HTMLDTElement: { - prototype: HTMLDTElement; - new(): HTMLDTElement; -} - interface HTMLDataListElement extends HTMLElement { - options: HTMLCollection; + options: HTMLCollectionOf; } declare var HTMLDataListElement: { @@ -8004,38 +8646,38 @@ declare var HTMLDocument: { interface HTMLElement extends Element { accessKey: string; - children: HTMLCollection; + readonly children: HTMLCollection; contentEditable: string; - dataset: DOMStringMap; + readonly dataset: DOMStringMap; dir: string; draggable: boolean; hidden: boolean; hideFocus: boolean; innerHTML: string; innerText: string; - isContentEditable: boolean; + readonly isContentEditable: boolean; lang: string; - offsetHeight: number; - offsetLeft: number; - offsetParent: Element; - offsetTop: number; - offsetWidth: number; + readonly offsetHeight: number; + readonly offsetLeft: number; + readonly offsetParent: Element; + readonly offsetTop: number; + readonly offsetWidth: number; onabort: (ev: Event) => any; onactivate: (ev: UIEvent) => any; onbeforeactivate: (ev: UIEvent) => any; - onbeforecopy: (ev: DragEvent) => any; - onbeforecut: (ev: DragEvent) => any; + onbeforecopy: (ev: ClipboardEvent) => any; + onbeforecut: (ev: ClipboardEvent) => any; onbeforedeactivate: (ev: UIEvent) => any; - onbeforepaste: (ev: DragEvent) => any; + onbeforepaste: (ev: ClipboardEvent) => any; onblur: (ev: FocusEvent) => any; oncanplay: (ev: Event) => any; oncanplaythrough: (ev: Event) => any; onchange: (ev: Event) => any; onclick: (ev: MouseEvent) => any; oncontextmenu: (ev: PointerEvent) => any; - oncopy: (ev: DragEvent) => any; + oncopy: (ev: ClipboardEvent) => any; oncuechange: (ev: Event) => any; - oncut: (ev: DragEvent) => any; + oncut: (ev: ClipboardEvent) => any; ondblclick: (ev: MouseEvent) => any; ondeactivate: (ev: UIEvent) => any; ondrag: (ev: DragEvent) => any; @@ -8047,10 +8689,11 @@ interface HTMLElement extends Element { ondrop: (ev: DragEvent) => any; ondurationchange: (ev: Event) => any; onemptied: (ev: Event) => any; - onended: (ev: Event) => any; + onended: (ev: MediaStreamErrorEvent) => any; onerror: (ev: Event) => any; onfocus: (ev: FocusEvent) => any; oninput: (ev: Event) => any; + oninvalid: (ev: Event) => any; onkeydown: (ev: KeyboardEvent) => any; onkeypress: (ev: KeyboardEvent) => any; onkeyup: (ev: KeyboardEvent) => any; @@ -8065,10 +8708,10 @@ interface HTMLElement extends Element { onmouseout: (ev: MouseEvent) => any; onmouseover: (ev: MouseEvent) => any; onmouseup: (ev: MouseEvent) => any; - onmousewheel: (ev: MouseWheelEvent) => any; + onmousewheel: (ev: WheelEvent) => any; onmscontentzoom: (ev: UIEvent) => any; onmsmanipulationstatechanged: (ev: MSManipulationEvent) => any; - onpaste: (ev: DragEvent) => any; + onpaste: (ev: ClipboardEvent) => any; onpause: (ev: Event) => any; onplay: (ev: Event) => any; onplaying: (ev: Event) => any; @@ -8089,7 +8732,7 @@ interface HTMLElement extends Element { outerHTML: string; outerText: string; spellcheck: boolean; - style: CSSStyleDeclaration; + readonly style: CSSStyleDeclaration; tabIndex: number; title: string; blur(): void; @@ -8125,10 +8768,10 @@ interface HTMLElement extends Element { addEventListener(type: "activate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecopy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecopy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforedeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforepaste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforepaste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; addEventListener(type: "canplay", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "canplaythrough", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -8136,9 +8779,9 @@ interface HTMLElement extends Element { addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void; addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "copy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "copy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "cuechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "cut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "cut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "deactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void; @@ -8150,11 +8793,12 @@ interface HTMLElement extends Element { addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "ended", listener: (ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "invalid", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; @@ -8170,8 +8814,8 @@ interface HTMLElement extends Element { addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; - addEventListener(type: "paste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousewheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; + addEventListener(type: "paste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -8233,7 +8877,7 @@ interface HTMLEmbedElement extends HTMLElement, GetSVGDocument { /** * Gets the source associated with the media element for use by the PlayToManager. */ - msPlayToSource: any; + readonly msPlayToSource: any; /** * Sets or retrieves the name of the object. */ @@ -8241,12 +8885,12 @@ interface HTMLEmbedElement extends HTMLElement, GetSVGDocument { /** * Retrieves the palette used for the embedded document. */ - palette: string; + readonly palette: string; /** * Retrieves the URL of the plug-in used to view an embedded document. */ - pluginspage: string; - readyState: string; + readonly pluginspage: string; + readonly readyState: string; /** * Sets or retrieves a URL to be loaded by the object. */ @@ -8276,19 +8920,19 @@ interface HTMLFieldSetElement extends HTMLElement { /** * Retrieves a reference to the form that the object is embedded in. */ - form: HTMLFormElement; + readonly form: HTMLFormElement; /** * Returns the error message that would be displayed if the user submits the form, or an empty string if no error message. It also triggers the standard error message, such as "this is a required field". The result is that the user sees validation messages without actually submitting. */ - validationMessage: string; + readonly validationMessage: string; /** * Returns a ValidityState object that represents the validity states of an element. */ - validity: ValidityState; + readonly validity: ValidityState; /** * Returns whether an element will successfully validate based on forms validation rules and constraints. */ - willValidate: boolean; + readonly willValidate: boolean; /** * Returns whether a form will validate when it is submitted, without having to submit it. */ @@ -8334,7 +8978,7 @@ interface HTMLFormElement extends HTMLElement { /** * Retrieves a collection, in source order, of all controls in a given form. */ - elements: HTMLCollection; + readonly elements: HTMLCollection; /** * Sets or retrieves the MIME encoding for the form. */ @@ -8346,7 +8990,7 @@ interface HTMLFormElement extends HTMLElement { /** * Sets or retrieves the number of objects in a collection. */ - length: number; + readonly length: number; /** * Sets or retrieves how to send the form data to the server. */ @@ -8405,11 +9049,11 @@ interface HTMLFrameElement extends HTMLElement, GetSVGDocument { /** * Retrieves the document object of the page or frame. */ - contentDocument: Document; + readonly contentDocument: Document; /** * Retrieves the object of the specified. */ - contentWindow: Window; + readonly contentWindow: Window; /** * Sets or retrieves whether to display a border for the frame. */ @@ -8450,10 +9094,6 @@ interface HTMLFrameElement extends HTMLElement, GetSVGDocument { * Sets or retrieves whether the frame can be scrolled. */ scrolling: string; - /** - * Sets the value indicating whether the source file of a frame or iframe has specific security restrictions applied. - */ - security: any; /** * Sets or retrieves a URL to be loaded by the object. */ @@ -8485,10 +9125,10 @@ interface HTMLFrameElement extends HTMLElement, GetSVGDocument { addEventListener(type: "activate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecopy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecopy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforedeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforepaste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforepaste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; addEventListener(type: "canplay", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "canplaythrough", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -8496,9 +9136,9 @@ interface HTMLFrameElement extends HTMLElement, GetSVGDocument { addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void; addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "copy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "copy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "cuechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "cut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "cut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "deactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void; @@ -8510,11 +9150,12 @@ interface HTMLFrameElement extends HTMLElement, GetSVGDocument { addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "ended", listener: (ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "invalid", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; @@ -8531,8 +9172,8 @@ interface HTMLFrameElement extends HTMLElement, GetSVGDocument { addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; - addEventListener(type: "paste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousewheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; + addEventListener(type: "paste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -8642,10 +9283,10 @@ interface HTMLFrameSetElement extends HTMLElement { addEventListener(type: "activate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecopy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecopy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforedeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforepaste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforepaste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforeprint", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "beforeunload", listener: (ev: BeforeUnloadEvent) => any, useCapture?: boolean): void; addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; @@ -8656,9 +9297,9 @@ interface HTMLFrameSetElement extends HTMLElement { addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void; addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "copy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "copy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "cuechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "cut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "cut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "deactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void; @@ -8670,7 +9311,7 @@ interface HTMLFrameSetElement extends HTMLElement { addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "ended", listener: (ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; @@ -8678,6 +9319,7 @@ interface HTMLFrameSetElement extends HTMLElement { addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; addEventListener(type: "hashchange", listener: (ev: HashChangeEvent) => any, useCapture?: boolean): void; addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "invalid", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; @@ -8695,13 +9337,13 @@ interface HTMLFrameSetElement extends HTMLElement { addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousewheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; addEventListener(type: "offline", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "online", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "orientationchange", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "pagehide", listener: (ev: PageTransitionEvent) => any, useCapture?: boolean): void; addEventListener(type: "pageshow", listener: (ev: PageTransitionEvent) => any, useCapture?: boolean): void; - addEventListener(type: "paste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "paste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -8780,7 +9422,6 @@ interface HTMLHeadingElement extends HTMLElement { * Sets or retrieves a value that indicates the table alignment. */ align: string; - clear: string; } declare var HTMLHeadingElement: { @@ -8813,11 +9454,11 @@ interface HTMLIFrameElement extends HTMLElement, GetSVGDocument { /** * Retrieves the document object of the page or frame. */ - contentDocument: Document; + readonly contentDocument: Document; /** * Retrieves the object of the specified. */ - contentWindow: Window; + readonly contentWindow: Window; /** * Sets or retrieves whether to display a border for the frame. */ @@ -8858,15 +9499,11 @@ interface HTMLIFrameElement extends HTMLElement, GetSVGDocument { * Raised when the object has been completely received from the server. */ onload: (ev: Event) => any; - sandbox: DOMSettableTokenList; + readonly sandbox: DOMSettableTokenList; /** * Sets or retrieves whether the frame can be scrolled. */ scrolling: string; - /** - * Sets the value indicating whether the source file of a frame or iframe has specific security restrictions applied. - */ - security: any; /** * Sets or retrieves a URL to be loaded by the object. */ @@ -8902,10 +9539,10 @@ interface HTMLIFrameElement extends HTMLElement, GetSVGDocument { addEventListener(type: "activate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecopy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecopy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforedeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforepaste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforepaste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; addEventListener(type: "canplay", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "canplaythrough", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -8913,9 +9550,9 @@ interface HTMLIFrameElement extends HTMLElement, GetSVGDocument { addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void; addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "copy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "copy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "cuechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "cut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "cut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "deactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void; @@ -8927,11 +9564,12 @@ interface HTMLIFrameElement extends HTMLElement, GetSVGDocument { addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "ended", listener: (ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "invalid", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; @@ -8948,8 +9586,8 @@ interface HTMLIFrameElement extends HTMLElement, GetSVGDocument { addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; - addEventListener(type: "paste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousewheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; + addEventListener(type: "paste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -9006,9 +9644,9 @@ interface HTMLImageElement extends HTMLElement { /** * Retrieves whether the object is fully loaded. */ - complete: boolean; + readonly complete: boolean; crossOrigin: string; - currentSrc: string; + readonly currentSrc: string; /** * Sets or retrieves the height of the object. */ @@ -9025,6 +9663,7 @@ interface HTMLImageElement extends HTMLElement { * Sets or retrieves a Uniform Resource Identifier (URI) to a long description of the object. */ longDesc: string; + lowsrc: string; /** * Gets or sets whether the DLNA PlayTo device is available. */ @@ -9037,7 +9676,7 @@ interface HTMLImageElement extends HTMLElement { /** * Gets the source associated with the media element for use by the PlayToManager. */ - msPlayToSource: any; + readonly msPlayToSource: any; /** * Sets or retrieves the name of the object. */ @@ -9045,11 +9684,12 @@ interface HTMLImageElement extends HTMLElement { /** * The original height of the image resource before sizing. */ - naturalHeight: number; + readonly naturalHeight: number; /** * The original width of the image resource before sizing. */ - naturalWidth: number; + readonly naturalWidth: number; + sizes: string; /** * The address or URL of the a media resource that is to be considered. */ @@ -9067,8 +9707,8 @@ interface HTMLImageElement extends HTMLElement { * Sets or retrieves the width of the object. */ width: number; - x: number; - y: number; + readonly x: number; + readonly y: number; msGetAsCastingSource(): any; } @@ -9110,7 +9750,7 @@ interface HTMLInputElement extends HTMLElement { /** * Retrieves whether the object is fully loaded. */ - complete: boolean; + readonly complete: boolean; /** * Sets or retrieves the state of the check box or radio button. */ @@ -9123,11 +9763,11 @@ interface HTMLInputElement extends HTMLElement { /** * Returns a FileList object on a file type input object. */ - files: FileList; + readonly files: FileList; /** * Retrieves a reference to the form that the object is embedded in. */ - form: HTMLFormElement; + readonly form: HTMLFormElement; /** * Overrides the action attribute (where the data on a form is sent) on the parent form element. */ @@ -9160,7 +9800,7 @@ interface HTMLInputElement extends HTMLElement { /** * Specifies the ID of a pre-defined datalist of options for an input element. */ - list: HTMLElement; + readonly list: HTMLElement; /** * Defines the maximum acceptable value for an input element with type="number".When used with the min and step attributes, lets you control the range and increment (such as only even numbers) that the user can enter into an input field. */ @@ -9194,6 +9834,7 @@ interface HTMLInputElement extends HTMLElement { * When present, marks an element that can't be submitted without a value. */ required: boolean; + selectionDirection: string; /** * Gets or sets the end position or offset of a text selection. */ @@ -9223,11 +9864,11 @@ interface HTMLInputElement extends HTMLElement { /** * Returns the error message that would be displayed if the user submits the form, or an empty string if no error message. It also triggers the standard error message, such as "this is a required field". The result is that the user sees validation messages without actually submitting. */ - validationMessage: string; + readonly validationMessage: string; /** * Returns a ValidityState object that represents the validity states of an element. */ - validity: ValidityState; + readonly validity: ValidityState; /** * Returns the value of the data at the cursor's current position. */ @@ -9241,6 +9882,7 @@ interface HTMLInputElement extends HTMLElement { * Sets or retrieves the vertical margin for the object. */ vspace: number; + webkitdirectory: boolean; /** * Sets or retrieves the width of the object. */ @@ -9248,15 +9890,12 @@ interface HTMLInputElement extends HTMLElement { /** * Returns whether an element will successfully validate based on forms validation rules and constraints. */ - willValidate: boolean; + readonly willValidate: boolean; + minLength: number; /** * Returns whether a form will validate when it is submitted, without having to submit it. */ checkValidity(): boolean; - /** - * Creates a TextRange object for the element. - */ - createTextRange(): TextRange; /** * Makes the selection equal to the current object. */ @@ -9271,7 +9910,7 @@ interface HTMLInputElement extends HTMLElement { * @param start The offset into the text field for the start of the selection. * @param end The offset into the text field for the end of the selection. */ - setSelectionRange(start: number, end: number): void; + setSelectionRange(start?: number, end?: number, direction?: string): void; /** * Decrements a range input control's value by the value given by the Step attribute. If the optional parameter is used, it will decrement the input control's step value multiplied by the parameter's value. * @param n Value to decrement the value by. @@ -9289,23 +9928,6 @@ declare var HTMLInputElement: { new(): HTMLInputElement; } -interface HTMLIsIndexElement extends HTMLElement { - /** - * Sets or retrieves the URL to which the form content is sent for processing. - */ - action: string; - /** - * Retrieves a reference to the form that the object is embedded in. - */ - form: HTMLFormElement; - prompt: string; -} - -declare var HTMLIsIndexElement: { - prototype: HTMLIsIndexElement; - new(): HTMLIsIndexElement; -} - interface HTMLLIElement extends HTMLElement { type: string; /** @@ -9323,7 +9945,7 @@ interface HTMLLabelElement extends HTMLElement { /** * Retrieves a reference to the form that the object is embedded in. */ - form: HTMLFormElement; + readonly form: HTMLFormElement; /** * Sets or retrieves the object to which the given label object is assigned. */ @@ -9343,7 +9965,7 @@ interface HTMLLegendElement extends HTMLElement { /** * Retrieves a reference to the form that the object is embedded in. */ - form: HTMLFormElement; + readonly form: HTMLFormElement; } declare var HTMLLegendElement: { @@ -9385,6 +10007,7 @@ interface HTMLLinkElement extends HTMLElement, LinkStyle { * Sets or retrieves the MIME type of the object. */ type: string; + import?: Document; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -9397,7 +10020,7 @@ interface HTMLMapElement extends HTMLElement { /** * Retrieves a collection of the area objects defined for the given map object. */ - areas: HTMLAreasCollection; + readonly areas: HTMLAreasCollection; /** * Sets or retrieves the name of the object. */ @@ -9449,10 +10072,10 @@ interface HTMLMarqueeElement extends HTMLElement { addEventListener(type: "activate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecopy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecopy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforedeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforepaste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforepaste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; addEventListener(type: "bounce", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "canplay", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -9461,9 +10084,9 @@ interface HTMLMarqueeElement extends HTMLElement { addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void; addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "copy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "copy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "cuechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "cut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "cut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "deactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void; @@ -9475,12 +10098,13 @@ interface HTMLMarqueeElement extends HTMLElement { addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "ended", listener: (ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "finish", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "invalid", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; @@ -9496,8 +10120,8 @@ interface HTMLMarqueeElement extends HTMLElement { addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; - addEventListener(type: "paste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousewheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; + addEventListener(type: "paste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -9543,7 +10167,7 @@ interface HTMLMediaElement extends HTMLElement { /** * Returns an AudioTrackList object with the audio tracks for a given video element. */ - audioTracks: AudioTrackList; + readonly audioTracks: AudioTrackList; /** * Gets or sets a value that indicates whether to start playing the media automatically. */ @@ -9551,15 +10175,16 @@ interface HTMLMediaElement extends HTMLElement { /** * Gets a collection of buffered time ranges. */ - buffered: TimeRanges; + readonly buffered: TimeRanges; /** * Gets or sets a flag that indicates whether the client provides a set of controls for the media (in case the developer does not include controls for the player). */ controls: boolean; + crossOrigin: string; /** * Gets the address or URL of the current media resource that is selected by IHTMLMediaElement. */ - currentSrc: string; + readonly currentSrc: string; /** * Gets or sets the current playback position, in seconds. */ @@ -9572,19 +10197,20 @@ interface HTMLMediaElement extends HTMLElement { /** * Returns the duration in seconds of the current media resource. A NaN value is returned if duration is not available, or Infinity if the media resource is streaming. */ - duration: number; + readonly duration: number; /** * Gets information about whether the playback has ended or not. */ - ended: boolean; + readonly ended: boolean; /** * Returns an object representing the current error state of the audio or video element. */ - error: MediaError; + readonly error: MediaError; /** * Gets or sets a flag to specify whether playback should restart after it completes. */ loop: boolean; + readonly mediaKeys: MediaKeys; /** * Specifies the purpose of the audio or video media, such as background audio or alerts. */ @@ -9593,11 +10219,11 @@ interface HTMLMediaElement extends HTMLElement { * Specifies the output device id that the audio will be sent to. */ msAudioDeviceType: string; - msGraphicsTrustStatus: MSGraphicsTrust; + readonly msGraphicsTrustStatus: MSGraphicsTrust; /** * Gets the MSMediaKeys object, which is used for decrypting media data, that is associated with this media element. */ - msKeys: MSMediaKeys; + readonly msKeys: MSMediaKeys; /** * Gets or sets whether the DLNA PlayTo device is available. */ @@ -9613,7 +10239,7 @@ interface HTMLMediaElement extends HTMLElement { /** * Gets the source associated with the media element for use by the PlayToManager. */ - msPlayToSource: any; + readonly msPlayToSource: any; /** * Specifies whether or not to enable low-latency playback on the media element. */ @@ -9625,12 +10251,13 @@ interface HTMLMediaElement extends HTMLElement { /** * Gets the current network activity for the element. */ - networkState: number; + readonly networkState: number; + onencrypted: (ev: MediaEncryptedEvent) => any; onmsneedkey: (ev: MSMediaKeyNeededEvent) => any; /** * Gets a flag that specifies whether playback is paused. */ - paused: boolean; + readonly paused: boolean; /** * Gets or sets the current rate of speed for the media resource to play. This speed is expressed as a multiple of the normal speed of the media resource. */ @@ -9638,7 +10265,7 @@ interface HTMLMediaElement extends HTMLElement { /** * Gets TimeRanges for the current media resource that has been played. */ - played: TimeRanges; + readonly played: TimeRanges; /** * Gets or sets the current playback position, in seconds. */ @@ -9647,17 +10274,18 @@ interface HTMLMediaElement extends HTMLElement { /** * Returns a TimeRanges object that represents the ranges of the current media resource that can be seeked. */ - seekable: TimeRanges; + readonly seekable: TimeRanges; /** * Gets a flag that indicates whether the the client is currently moving to a new playback position in the media resource. */ - seeking: boolean; + readonly seeking: boolean; /** * The address or URL of the a media resource that is to be considered. */ src: string; - textTracks: TextTrackList; - videoTracks: VideoTrackList; + srcObject: MediaStream; + readonly textTracks: TextTrackList; + readonly videoTracks: VideoTrackList; /** * Gets or sets the volume level for audio portions of the media element. */ @@ -9693,15 +10321,16 @@ interface HTMLMediaElement extends HTMLElement { * Loads and starts playback of a media resource. */ play(): void; - HAVE_CURRENT_DATA: number; - HAVE_ENOUGH_DATA: number; - HAVE_FUTURE_DATA: number; - HAVE_METADATA: number; - HAVE_NOTHING: number; - NETWORK_EMPTY: number; - NETWORK_IDLE: number; - NETWORK_LOADING: number; - NETWORK_NO_SOURCE: number; + setMediaKeys(mediaKeys: MediaKeys): PromiseLike; + readonly HAVE_CURRENT_DATA: number; + readonly HAVE_ENOUGH_DATA: number; + readonly HAVE_FUTURE_DATA: number; + readonly HAVE_METADATA: number; + readonly HAVE_NOTHING: number; + readonly NETWORK_EMPTY: number; + readonly NETWORK_IDLE: number; + readonly NETWORK_LOADING: number; + readonly NETWORK_NO_SOURCE: number; addEventListener(type: "MSContentZoom", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; addEventListener(type: "MSGestureDoubleTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; @@ -9725,10 +10354,10 @@ interface HTMLMediaElement extends HTMLElement { addEventListener(type: "activate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecopy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecopy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforedeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforepaste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforepaste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; addEventListener(type: "canplay", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "canplaythrough", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -9736,9 +10365,9 @@ interface HTMLMediaElement extends HTMLElement { addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void; addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "copy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "copy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "cuechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "cut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "cut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "deactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void; @@ -9750,11 +10379,13 @@ interface HTMLMediaElement extends HTMLElement { addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "encrypted", listener: (ev: MediaEncryptedEvent) => any, useCapture?: boolean): void; + addEventListener(type: "ended", listener: (ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "invalid", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; @@ -9770,9 +10401,9 @@ interface HTMLMediaElement extends HTMLElement { addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousewheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; addEventListener(type: "msneedkey", listener: (ev: MSMediaKeyNeededEvent) => any, useCapture?: boolean): void; - addEventListener(type: "paste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "paste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -9811,15 +10442,15 @@ interface HTMLMediaElement extends HTMLElement { declare var HTMLMediaElement: { prototype: HTMLMediaElement; new(): HTMLMediaElement; - HAVE_CURRENT_DATA: number; - HAVE_ENOUGH_DATA: number; - HAVE_FUTURE_DATA: number; - HAVE_METADATA: number; - HAVE_NOTHING: number; - NETWORK_EMPTY: number; - NETWORK_IDLE: number; - NETWORK_LOADING: number; - NETWORK_NO_SOURCE: number; + readonly HAVE_CURRENT_DATA: number; + readonly HAVE_ENOUGH_DATA: number; + readonly HAVE_FUTURE_DATA: number; + readonly HAVE_METADATA: number; + readonly HAVE_NOTHING: number; + readonly NETWORK_EMPTY: number; + readonly NETWORK_IDLE: number; + readonly NETWORK_LOADING: number; + readonly NETWORK_NO_SOURCE: number; } interface HTMLMenuElement extends HTMLElement { @@ -9864,6 +10495,20 @@ declare var HTMLMetaElement: { new(): HTMLMetaElement; } +interface HTMLMeterElement extends HTMLElement { + high: number; + low: number; + max: number; + min: number; + optimum: number; + value: number; +} + +declare var HTMLMeterElement: { + prototype: HTMLMeterElement; + new(): HTMLMeterElement; +} + interface HTMLModElement extends HTMLElement { /** * Sets or retrieves reference information about the object. @@ -9880,15 +10525,6 @@ declare var HTMLModElement: { new(): HTMLModElement; } -interface HTMLNextIdElement extends HTMLElement { - n: string; -} - -declare var HTMLNextIdElement: { - prototype: HTMLNextIdElement; - new(): HTMLNextIdElement; -} - interface HTMLOListElement extends HTMLElement { compact: boolean; /** @@ -9907,7 +10543,7 @@ interface HTMLObjectElement extends HTMLElement, GetSVGDocument { /** * Retrieves a string of the URL where the object tag can be found. This is often the href of the document that the object is in, or the value set by a base element. */ - BaseHref: string; + readonly BaseHref: string; align: string; /** * Sets or retrieves a text alternative to the graphic. @@ -9937,7 +10573,7 @@ interface HTMLObjectElement extends HTMLElement, GetSVGDocument { /** * Retrieves the document object of the page or frame. */ - contentDocument: Document; + readonly contentDocument: Document; /** * Sets or retrieves the URL that references the data of the object. */ @@ -9946,7 +10582,7 @@ interface HTMLObjectElement extends HTMLElement, GetSVGDocument { /** * Retrieves a reference to the form that the object is embedded in. */ - form: HTMLFormElement; + readonly form: HTMLFormElement; /** * Sets or retrieves the height of the object. */ @@ -9967,7 +10603,7 @@ interface HTMLObjectElement extends HTMLElement, GetSVGDocument { /** * Gets the source associated with the media element for use by the PlayToManager. */ - msPlayToSource: any; + readonly msPlayToSource: any; /** * Sets or retrieves the name of the object. */ @@ -9975,8 +10611,8 @@ interface HTMLObjectElement extends HTMLElement, GetSVGDocument { /** * Retrieves the contained object. */ - object: any; - readyState: number; + readonly object: any; + readonly readyState: number; /** * Sets or retrieves a message to be displayed while an object is loading. */ @@ -9992,11 +10628,11 @@ interface HTMLObjectElement extends HTMLElement, GetSVGDocument { /** * Returns the error message that would be displayed if the user submits the form, or an empty string if no error message. It also triggers the standard error message, such as "this is a required field". The result is that the user sees validation messages without actually submitting. */ - validationMessage: string; + readonly validationMessage: string; /** * Returns a ValidityState object that represents the validity states of an element. */ - validity: ValidityState; + readonly validity: ValidityState; vspace: number; /** * Sets or retrieves the width of the object. @@ -10005,7 +10641,7 @@ interface HTMLObjectElement extends HTMLElement, GetSVGDocument { /** * Returns whether an element will successfully validate based on forms validation rules and constraints. */ - willValidate: boolean; + readonly willValidate: boolean; /** * Returns whether a form will validate when it is submitted, without having to submit it. */ @@ -10032,11 +10668,11 @@ interface HTMLOptGroupElement extends HTMLElement { /** * Retrieves a reference to the form that the object is embedded in. */ - form: HTMLFormElement; + readonly form: HTMLFormElement; /** * Sets or retrieves the ordinal position of an option in a list box. */ - index: number; + readonly index: number; /** * Sets or retrieves a value that you can use to implement your own label functionality for the object. */ @@ -10048,7 +10684,7 @@ interface HTMLOptGroupElement extends HTMLElement { /** * Sets or retrieves the text string specified by the option tag. */ - text: string; + readonly text: string; /** * Sets or retrieves the value which is returned to the server when the form control is submitted. */ @@ -10069,11 +10705,11 @@ interface HTMLOptionElement extends HTMLElement { /** * Retrieves a reference to the form that the object is embedded in. */ - form: HTMLFormElement; + readonly form: HTMLFormElement; /** * Sets or retrieves the ordinal position of an option in a list box. */ - index: number; + readonly index: number; /** * Sets or retrieves a value that you can use to implement your own label functionality for the object. */ @@ -10098,6 +10734,18 @@ declare var HTMLOptionElement: { create(): HTMLOptionElement; } +interface HTMLOptionsCollection extends HTMLCollection { + length: number; + selectedIndex: number; + add(element: HTMLOptionElement | HTMLOptGroupElement, before?: HTMLElement | number): void; + remove(index: number): void; +} + +declare var HTMLOptionsCollection: { + prototype: HTMLOptionsCollection; + new(): HTMLOptionsCollection; +} + interface HTMLParagraphElement extends HTMLElement { /** * Sets or retrieves how the object is aligned with adjacent text. @@ -10135,28 +10783,15 @@ declare var HTMLParamElement: { new(): HTMLParamElement; } -interface HTMLPhraseElement extends HTMLElement { - /** - * Sets or retrieves reference information about the object. - */ - cite: string; - /** - * Sets or retrieves the date and time of a modification to the object. - */ - dateTime: string; +interface HTMLPictureElement extends HTMLElement { } -declare var HTMLPhraseElement: { - prototype: HTMLPhraseElement; - new(): HTMLPhraseElement; +declare var HTMLPictureElement: { + prototype: HTMLPictureElement; + new(): HTMLPictureElement; } interface HTMLPreElement extends HTMLElement { - /** - * Indicates a citation by rendering text in italic type. - */ - cite: string; - clear: string; /** * Sets or gets a value that you can use to implement your own width functionality for the object. */ @@ -10172,7 +10807,7 @@ interface HTMLProgressElement extends HTMLElement { /** * Retrieves a reference to the form that the object is embedded in. */ - form: HTMLFormElement; + readonly form: HTMLFormElement; /** * Defines the maximum, or "done" value for a progress element. */ @@ -10180,7 +10815,7 @@ interface HTMLProgressElement extends HTMLElement { /** * Returns the quotient of value/max when the value attribute is set (determinate progress bar), or -1 when the value attribute is missing (indeterminate progress bar). */ - position: number; + readonly position: number; /** * Sets or gets the current value of a progress element. The value must be a non-negative number between 0 and the max value. */ @@ -10197,10 +10832,6 @@ interface HTMLQuoteElement extends HTMLElement { * Sets or retrieves reference information about the object. */ cite: string; - /** - * Sets or retrieves the date and time of a modification to the object. - */ - dateTime: string; } declare var HTMLQuoteElement: { @@ -10254,7 +10885,7 @@ interface HTMLSelectElement extends HTMLElement { /** * Retrieves a reference to the form that the object is embedded in. */ - form: HTMLFormElement; + readonly form: HTMLFormElement; /** * Sets or retrieves the number of objects in a collection. */ @@ -10267,7 +10898,7 @@ interface HTMLSelectElement extends HTMLElement { * Sets or retrieves the name of the object. */ name: string; - options: HTMLCollection; + options: HTMLCollectionOf; /** * When present, marks an element that can't be submitted without a value. */ @@ -10276,6 +10907,7 @@ interface HTMLSelectElement extends HTMLElement { * Sets or retrieves the index of the selected option in a select object. */ selectedIndex: number; + selectedOptions: HTMLCollectionOf; /** * Sets or retrieves the number of rows in the list box. */ @@ -10283,15 +10915,15 @@ interface HTMLSelectElement extends HTMLElement { /** * Retrieves the type of select control based on the value of the MULTIPLE attribute. */ - type: string; + readonly type: string; /** * Returns the error message that would be displayed if the user submits the form, or an empty string if no error message. It also triggers the standard error message, such as "this is a required field". The result is that the user sees validation messages without actually submitting. */ - validationMessage: string; + readonly validationMessage: string; /** * Returns a ValidityState object that represents the validity states of an element. */ - validity: ValidityState; + readonly validity: ValidityState; /** * Sets or retrieves the value which is returned to the server when the form control is submitted. */ @@ -10299,8 +10931,7 @@ interface HTMLSelectElement extends HTMLElement { /** * Returns whether an element will successfully validate based on forms validation rules and constraints. */ - willValidate: boolean; - selectedOptions: HTMLCollection; + readonly willValidate: boolean; /** * Adds an element to the areas, controlRange, or options collection. * @param element Variant of type Number that specifies the index position in the collection where the element is placed. If no value is given, the method places the element at the end of the collection. @@ -10346,10 +10977,12 @@ interface HTMLSourceElement extends HTMLElement { */ media: string; msKeySystem: string; + sizes: string; /** * The address or URL of the a media resource that is to be considered. */ src: string; + srcset: string; /** * Gets or sets the MIME type of a media resource. */ @@ -10370,6 +11003,7 @@ declare var HTMLSpanElement: { } interface HTMLStyleElement extends HTMLElement, LinkStyle { + disabled: boolean; /** * Sets or retrieves the media type. */ @@ -10419,7 +11053,7 @@ interface HTMLTableCellElement extends HTMLElement, HTMLTableAlignment { /** * Retrieves the position of the object in the cells collection of a row. */ - cellIndex: number; + readonly cellIndex: number; /** * Sets or retrieves the number columns in the table that the object should span. */ @@ -10526,7 +11160,7 @@ interface HTMLTableElement extends HTMLElement { /** * Sets or retrieves the number of horizontal rows contained in the object. */ - rows: HTMLCollection; + rows: HTMLCollectionOf; /** * Sets or retrieves which dividing lines (inner borders) are displayed. */ @@ -10538,7 +11172,7 @@ interface HTMLTableElement extends HTMLElement { /** * Retrieves a collection of all tBody objects in the table. Objects in this collection are in source order. */ - tBodies: HTMLCollection; + tBodies: HTMLCollectionOf; /** * Retrieves the tFoot object of the table. */ @@ -10617,7 +11251,7 @@ interface HTMLTableRowElement extends HTMLElement, HTMLTableAlignment { /** * Retrieves a collection of all cells in the table row. */ - cells: HTMLCollection; + cells: HTMLCollectionOf; /** * Sets or retrieves the height of the object. */ @@ -10625,11 +11259,11 @@ interface HTMLTableRowElement extends HTMLElement, HTMLTableAlignment { /** * Retrieves the position of the object in the rows collection for the table. */ - rowIndex: number; + readonly rowIndex: number; /** * Retrieves the position of the object in the collection. */ - sectionRowIndex: number; + readonly sectionRowIndex: number; /** * Removes the specified cell from the table row, as well as from the cells collection. * @param index Number that specifies the zero-based position of the cell to remove from the table row. If no value is provided, the last cell in the cells collection is deleted. @@ -10639,7 +11273,7 @@ interface HTMLTableRowElement extends HTMLElement, HTMLTableAlignment { * Creates a new cell in the table row, and adds the cell to the cells collection. * @param index Number that specifies where to insert the cell in the tr. The default value is -1, which appends the new cell to the end of the cells collection. */ - insertCell(index?: number): HTMLTableCellElement; + insertCell(index?: number): HTMLTableDataCellElement; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -10656,7 +11290,7 @@ interface HTMLTableSectionElement extends HTMLElement, HTMLTableAlignment { /** * Sets or retrieves the number of horizontal rows contained in the object. */ - rows: HTMLCollection; + rows: HTMLCollectionOf; /** * Removes the specified row (tr) from the element and from the rows collection. * @param index Number that specifies the zero-based position in the rows collection of the row to remove. @@ -10675,6 +11309,15 @@ declare var HTMLTableSectionElement: { new(): HTMLTableSectionElement; } +interface HTMLTemplateElement extends HTMLElement { + readonly content: DocumentFragment; +} + +declare var HTMLTemplateElement: { + prototype: HTMLTemplateElement; + new(): HTMLTemplateElement; +} + interface HTMLTextAreaElement extends HTMLElement { /** * Provides a way to direct a user to a specific field when a document loads. This can provide both direction and convenience for a user, reducing the need to click or tab to a field when a page opens. This attribute is true when present on an element, and false when missing. @@ -10692,7 +11335,7 @@ interface HTMLTextAreaElement extends HTMLElement { /** * Retrieves a reference to the form that the object is embedded in. */ - form: HTMLFormElement; + readonly form: HTMLFormElement; /** * Sets or retrieves the maximum number of characters that the user can enter in a text control. */ @@ -10732,15 +11375,15 @@ interface HTMLTextAreaElement extends HTMLElement { /** * Retrieves the type of control. */ - type: string; + readonly type: string; /** * Returns the error message that would be displayed if the user submits the form, or an empty string if no error message. It also triggers the standard error message, such as "this is a required field". The result is that the user sees validation messages without actually submitting. */ - validationMessage: string; + readonly validationMessage: string; /** * Returns a ValidityState object that represents the validity states of an element. */ - validity: ValidityState; + readonly validity: ValidityState; /** * Retrieves or sets the text in the entry field of the textArea element. */ @@ -10748,19 +11391,16 @@ interface HTMLTextAreaElement extends HTMLElement { /** * Returns whether an element will successfully validate based on forms validation rules and constraints. */ - willValidate: boolean; + readonly willValidate: boolean; /** * Sets or retrieves how to handle wordwrapping in the object. */ wrap: string; + minLength: number; /** * Returns whether a form will validate when it is submitted, without having to submit it. */ checkValidity(): boolean; - /** - * Creates a TextRange object for the element. - */ - createTextRange(): TextRange; /** * Highlights the input area of a form element. */ @@ -10799,23 +11439,23 @@ interface HTMLTrackElement extends HTMLElement { default: boolean; kind: string; label: string; - readyState: number; + readonly readyState: number; src: string; srclang: string; - track: TextTrack; - ERROR: number; - LOADED: number; - LOADING: number; - NONE: number; + readonly track: TextTrack; + readonly ERROR: number; + readonly LOADED: number; + readonly LOADING: number; + readonly NONE: number; } declare var HTMLTrackElement: { prototype: HTMLTrackElement; new(): HTMLTrackElement; - ERROR: number; - LOADED: number; - LOADING: number; - NONE: number; + readonly ERROR: number; + readonly LOADED: number; + readonly LOADING: number; + readonly NONE: number; } interface HTMLUListElement extends HTMLElement { @@ -10842,8 +11482,8 @@ interface HTMLVideoElement extends HTMLMediaElement { */ height: number; msHorizontalMirror: boolean; - msIsLayoutOptimalForPlayback: boolean; - msIsStereo3D: boolean; + readonly msIsLayoutOptimalForPlayback: boolean; + readonly msIsStereo3D: boolean; msStereo3DPackingMode: string; msStereo3DRenderMode: string; msZoom: boolean; @@ -10857,13 +11497,13 @@ interface HTMLVideoElement extends HTMLMediaElement { /** * Gets the intrinsic height of a video in CSS pixels, or zero if the dimensions are not known. */ - videoHeight: number; + readonly videoHeight: number; /** * Gets the intrinsic width of a video in CSS pixels, or zero if the dimensions are not known. */ - videoWidth: number; - webkitDisplayingFullscreen: boolean; - webkitSupportsFullscreen: boolean; + readonly videoWidth: number; + readonly webkitDisplayingFullscreen: boolean; + readonly webkitSupportsFullscreen: boolean; /** * Gets or sets the width of the video element. */ @@ -10902,10 +11542,10 @@ interface HTMLVideoElement extends HTMLMediaElement { addEventListener(type: "activate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecopy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecopy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforedeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforepaste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforepaste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; addEventListener(type: "canplay", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "canplaythrough", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -10913,9 +11553,9 @@ interface HTMLVideoElement extends HTMLMediaElement { addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void; addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "copy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "copy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "cuechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "cut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "cut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "deactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void; @@ -10927,11 +11567,13 @@ interface HTMLVideoElement extends HTMLMediaElement { addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "encrypted", listener: (ev: MediaEncryptedEvent) => any, useCapture?: boolean): void; + addEventListener(type: "ended", listener: (ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "invalid", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; @@ -10947,9 +11589,9 @@ interface HTMLVideoElement extends HTMLMediaElement { addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousewheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; addEventListener(type: "msneedkey", listener: (ev: MSMediaKeyNeededEvent) => any, useCapture?: boolean): void; - addEventListener(type: "paste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "paste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -10991,8 +11633,8 @@ declare var HTMLVideoElement: { } interface HashChangeEvent extends Event { - newURL: string; - oldURL: string; + readonly newURL: string; + readonly oldURL: string; } declare var HashChangeEvent: { @@ -11001,8 +11643,8 @@ declare var HashChangeEvent: { } interface History { - length: number; - state: any; + readonly length: number; + readonly state: any; back(distance?: any): void; forward(distance?: any): void; go(delta?: any): void; @@ -11016,31 +11658,31 @@ declare var History: { } interface IDBCursor { - direction: string; - key: any; - primaryKey: any; + readonly direction: string; + key: IDBKeyRange | IDBValidKey; + readonly primaryKey: any; source: IDBObjectStore | IDBIndex; advance(count: number): void; - continue(key?: any): void; + continue(key?: IDBKeyRange | IDBValidKey): void; delete(): IDBRequest; update(value: any): IDBRequest; - NEXT: string; - NEXT_NO_DUPLICATE: string; - PREV: string; - PREV_NO_DUPLICATE: string; + readonly NEXT: string; + readonly NEXT_NO_DUPLICATE: string; + readonly PREV: string; + readonly PREV_NO_DUPLICATE: string; } declare var IDBCursor: { prototype: IDBCursor; new(): IDBCursor; - NEXT: string; - NEXT_NO_DUPLICATE: string; - PREV: string; - PREV_NO_DUPLICATE: string; + readonly NEXT: string; + readonly NEXT_NO_DUPLICATE: string; + readonly PREV: string; + readonly PREV_NO_DUPLICATE: string; } interface IDBCursorWithValue extends IDBCursor { - value: any; + readonly value: any; } declare var IDBCursorWithValue: { @@ -11049,15 +11691,17 @@ declare var IDBCursorWithValue: { } interface IDBDatabase extends EventTarget { - name: string; - objectStoreNames: DOMStringList; + readonly name: string; + readonly objectStoreNames: DOMStringList; onabort: (ev: Event) => any; onerror: (ev: Event) => any; version: number; + onversionchange: (ev: IDBVersionChangeEvent) => any; close(): void; createObjectStore(name: string, optionalParameters?: IDBObjectStoreParameters): IDBObjectStore; 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: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; @@ -11081,15 +11725,15 @@ declare var IDBFactory: { interface IDBIndex { keyPath: string | string[]; - name: string; - objectStore: IDBObjectStore; - unique: boolean; + readonly name: string; + readonly objectStore: IDBObjectStore; + readonly unique: boolean; multiEntry: boolean; - count(key?: any): IDBRequest; - get(key: any): IDBRequest; - getKey(key: any): IDBRequest; - openCursor(range?: IDBKeyRange, direction?: string): IDBRequest; - openKeyCursor(range?: IDBKeyRange, direction?: string): IDBRequest; + count(key?: IDBKeyRange | IDBValidKey): IDBRequest; + get(key: IDBKeyRange | IDBValidKey): IDBRequest; + getKey(key: IDBKeyRange | IDBValidKey): IDBRequest; + openCursor(range?: IDBKeyRange | IDBValidKey, direction?: string): IDBRequest; + openKeyCursor(range?: IDBKeyRange | IDBValidKey, direction?: string): IDBRequest; } declare var IDBIndex: { @@ -11098,37 +11742,37 @@ declare var IDBIndex: { } interface IDBKeyRange { - lower: any; - lowerOpen: boolean; - upper: any; - upperOpen: boolean; + readonly lower: any; + readonly lowerOpen: boolean; + readonly upper: any; + readonly upperOpen: boolean; } declare var IDBKeyRange: { prototype: IDBKeyRange; new(): IDBKeyRange; bound(lower: any, upper: any, lowerOpen?: boolean, upperOpen?: boolean): IDBKeyRange; - lowerBound(bound: any, open?: boolean): IDBKeyRange; + lowerBound(lower: any, open?: boolean): IDBKeyRange; only(value: any): IDBKeyRange; - upperBound(bound: any, open?: boolean): IDBKeyRange; + upperBound(upper: any, open?: boolean): IDBKeyRange; } interface IDBObjectStore { - indexNames: DOMStringList; + readonly indexNames: DOMStringList; keyPath: string | string[]; - name: string; - transaction: IDBTransaction; + readonly name: string; + readonly transaction: IDBTransaction; autoIncrement: boolean; - add(value: any, key?: any): IDBRequest; + add(value: any, key?: IDBKeyRange | IDBValidKey): IDBRequest; clear(): IDBRequest; - count(key?: any): IDBRequest; + count(key?: IDBKeyRange | IDBValidKey): IDBRequest; createIndex(name: string, keyPath: string | string[], optionalParameters?: IDBIndexParameters): IDBIndex; - delete(key: any): IDBRequest; + delete(key: IDBKeyRange | IDBValidKey): IDBRequest; deleteIndex(indexName: string): void; get(key: any): IDBRequest; index(name: string): IDBIndex; - openCursor(range?: any, direction?: string): IDBRequest; - put(value: any, key?: any): IDBRequest; + openCursor(range?: IDBKeyRange | IDBValidKey, direction?: string): IDBRequest; + put(value: any, key?: IDBKeyRange | IDBValidKey): IDBRequest; } declare var IDBObjectStore: { @@ -11152,13 +11796,13 @@ declare var IDBOpenDBRequest: { } interface IDBRequest extends EventTarget { - error: DOMError; + readonly error: DOMError; onerror: (ev: Event) => any; onsuccess: (ev: Event) => any; - readyState: string; - result: any; + readonly readyState: string; + readonly result: any; source: IDBObjectStore | IDBIndex | IDBCursor; - transaction: IDBTransaction; + 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: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; @@ -11170,17 +11814,17 @@ declare var IDBRequest: { } interface IDBTransaction extends EventTarget { - db: IDBDatabase; - error: DOMError; - mode: string; + readonly db: IDBDatabase; + readonly error: DOMError; + readonly mode: string; onabort: (ev: Event) => any; oncomplete: (ev: Event) => any; onerror: (ev: Event) => any; abort(): void; objectStore(name: string): IDBObjectStore; - READ_ONLY: string; - READ_WRITE: string; - VERSION_CHANGE: string; + 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; @@ -11190,14 +11834,14 @@ interface IDBTransaction extends EventTarget { declare var IDBTransaction: { prototype: IDBTransaction; new(): IDBTransaction; - READ_ONLY: string; - READ_WRITE: string; - VERSION_CHANGE: string; + readonly READ_ONLY: string; + readonly READ_WRITE: string; + readonly VERSION_CHANGE: string; } interface IDBVersionChangeEvent extends Event { - newVersion: number; - oldVersion: number; + readonly newVersion: number; + readonly oldVersion: number; } declare var IDBVersionChangeEvent: { @@ -11207,8 +11851,8 @@ declare var IDBVersionChangeEvent: { interface ImageData { data: Uint8ClampedArray; - height: number; - width: number; + readonly height: number; + readonly width: number; } declare var ImageData: { @@ -11218,37 +11862,47 @@ declare var ImageData: { } interface KeyboardEvent extends UIEvent { - altKey: boolean; - char: string; - charCode: number; - ctrlKey: boolean; - key: string; - keyCode: number; - locale: string; - location: number; - metaKey: boolean; - repeat: boolean; - shiftKey: boolean; - which: number; + readonly altKey: boolean; + readonly char: string; + readonly charCode: number; + readonly ctrlKey: boolean; + readonly key: string; + readonly keyCode: number; + readonly locale: string; + readonly location: number; + readonly metaKey: boolean; + readonly repeat: boolean; + readonly shiftKey: boolean; + readonly which: number; getModifierState(keyArg: string): boolean; initKeyboardEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, keyArg: string, locationArg: number, modifiersListArg: string, repeat: boolean, locale: string): void; - DOM_KEY_LOCATION_JOYSTICK: number; - DOM_KEY_LOCATION_LEFT: number; - DOM_KEY_LOCATION_MOBILE: number; - DOM_KEY_LOCATION_NUMPAD: number; - DOM_KEY_LOCATION_RIGHT: number; - DOM_KEY_LOCATION_STANDARD: number; + readonly DOM_KEY_LOCATION_JOYSTICK: number; + readonly DOM_KEY_LOCATION_LEFT: number; + readonly DOM_KEY_LOCATION_MOBILE: number; + readonly DOM_KEY_LOCATION_NUMPAD: number; + readonly DOM_KEY_LOCATION_RIGHT: number; + readonly DOM_KEY_LOCATION_STANDARD: number; } declare var KeyboardEvent: { prototype: KeyboardEvent; new(typeArg: string, eventInitDict?: KeyboardEventInit): KeyboardEvent; - DOM_KEY_LOCATION_JOYSTICK: number; - DOM_KEY_LOCATION_LEFT: number; - DOM_KEY_LOCATION_MOBILE: number; - DOM_KEY_LOCATION_NUMPAD: number; - DOM_KEY_LOCATION_RIGHT: number; - DOM_KEY_LOCATION_STANDARD: number; + readonly DOM_KEY_LOCATION_JOYSTICK: number; + readonly DOM_KEY_LOCATION_LEFT: number; + readonly DOM_KEY_LOCATION_MOBILE: number; + readonly DOM_KEY_LOCATION_NUMPAD: number; + readonly DOM_KEY_LOCATION_RIGHT: number; + readonly DOM_KEY_LOCATION_STANDARD: number; +} + +interface ListeningStateChangedEvent extends Event { + readonly label: string; + readonly state: string; +} + +declare var ListeningStateChangedEvent: { + prototype: ListeningStateChangedEvent; + new(): ListeningStateChangedEvent; } interface Location { @@ -11256,7 +11910,7 @@ interface Location { host: string; hostname: string; href: string; - origin: string; + readonly origin: string; pathname: string; port: string; protocol: string; @@ -11273,7 +11927,7 @@ declare var Location: { } interface LongRunningScriptDetectedEvent extends Event { - executionTime: number; + readonly executionTime: number; stopPageScriptExecution: boolean; } @@ -11292,29 +11946,29 @@ interface MSApp { execAsyncAtPriority(asynchronousCallback: MSExecAtPriorityFunctionCallback, priority: string, ...args: any[]): void; execAtPriority(synchronousCallback: MSExecAtPriorityFunctionCallback, priority: string, ...args: any[]): any; getCurrentPriority(): string; - getHtmlPrintDocumentSourceAsync(htmlDoc: any): any; + getHtmlPrintDocumentSourceAsync(htmlDoc: any): PromiseLike; getViewId(view: any): any; isTaskScheduledAtPriorityOrHigher(priority: string): boolean; pageHandlesAllApplicationActivations(enabled: boolean): void; suppressSubdownloadCredentialPrompts(suppress: boolean): void; terminateApp(exceptionObject: any): void; - CURRENT: string; - HIGH: string; - IDLE: string; - NORMAL: string; + readonly CURRENT: string; + readonly HIGH: string; + readonly IDLE: string; + readonly NORMAL: string; } declare var MSApp: MSApp; interface MSAppAsyncOperation extends EventTarget { - error: DOMError; + readonly error: DOMError; oncomplete: (ev: Event) => any; onerror: (ev: Event) => any; - readyState: number; - result: any; + readonly readyState: number; + readonly result: any; start(): void; - COMPLETED: number; - ERROR: number; - STARTED: number; + 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: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; @@ -11323,9 +11977,19 @@ interface MSAppAsyncOperation extends EventTarget { declare var MSAppAsyncOperation: { prototype: MSAppAsyncOperation; new(): MSAppAsyncOperation; - COMPLETED: number; - ERROR: number; - STARTED: number; + readonly COMPLETED: number; + readonly ERROR: number; + readonly STARTED: number; +} + +interface MSAssertion { + readonly id: string; + readonly type: string; +} + +declare var MSAssertion: { + prototype: MSAssertion; + new(): MSAssertion; } interface MSBlobBuilder { @@ -11338,44 +12002,46 @@ declare var MSBlobBuilder: { new(): MSBlobBuilder; } -interface MSCSSMatrix { - a: number; - b: number; - c: number; - d: number; - e: number; - f: number; - m11: number; - m12: number; - m13: number; - m14: number; - m21: number; - m22: number; - m23: number; - m24: number; - m31: number; - m32: number; - m33: number; - m34: number; - m41: number; - m42: number; - m43: number; - m44: number; - inverse(): MSCSSMatrix; - multiply(secondMatrix: MSCSSMatrix): MSCSSMatrix; - rotate(angleX: number, angleY?: number, angleZ?: number): MSCSSMatrix; - rotateAxisAngle(x: number, y: number, z: number, angle: number): MSCSSMatrix; - scale(scaleX: number, scaleY?: number, scaleZ?: number): MSCSSMatrix; - setMatrixValue(value: string): void; - skewX(angle: number): MSCSSMatrix; - skewY(angle: number): MSCSSMatrix; - toString(): string; - translate(x: number, y: number, z?: number): MSCSSMatrix; +interface MSCredentials { + getAssertion(challenge: string, filter?: MSCredentialFilter, params?: MSSignatureParameters): PromiseLike; + makeCredential(accountInfo: MSAccountInfo, params: MSCredentialParameters[], challenge?: string): PromiseLike; } -declare var MSCSSMatrix: { - prototype: MSCSSMatrix; - new(text?: string): MSCSSMatrix; +declare var MSCredentials: { + prototype: MSCredentials; + new(): MSCredentials; +} + +interface MSFIDOCredentialAssertion extends MSAssertion { + readonly algorithm: string | Algorithm; + readonly attestation: any; + readonly publicKey: string; + readonly transportHints: string[]; +} + +declare var MSFIDOCredentialAssertion: { + prototype: MSFIDOCredentialAssertion; + new(): MSFIDOCredentialAssertion; +} + +interface MSFIDOSignature { + readonly authnrData: string; + readonly clientData: string; + readonly signature: string; +} + +declare var MSFIDOSignature: { + prototype: MSFIDOSignature; + new(): MSFIDOSignature; +} + +interface MSFIDOSignatureAssertion extends MSAssertion { + readonly signature: MSFIDOSignature; +} + +declare var MSFIDOSignatureAssertion: { + prototype: MSFIDOSignatureAssertion; + new(): MSFIDOSignatureAssertion; } interface MSGesture { @@ -11390,44 +12056,44 @@ declare var MSGesture: { } interface MSGestureEvent extends UIEvent { - clientX: number; - clientY: number; - expansion: number; - gestureObject: any; - hwTimestamp: number; - offsetX: number; - offsetY: number; - rotation: number; - scale: number; - screenX: number; - screenY: number; - translationX: number; - translationY: number; - velocityAngular: number; - velocityExpansion: number; - velocityX: number; - velocityY: number; + readonly clientX: number; + readonly clientY: number; + readonly expansion: number; + readonly gestureObject: any; + readonly hwTimestamp: number; + readonly offsetX: number; + readonly offsetY: number; + readonly rotation: number; + readonly scale: number; + readonly screenX: number; + readonly screenY: number; + readonly translationX: number; + readonly translationY: number; + readonly velocityAngular: number; + readonly velocityExpansion: number; + readonly velocityX: number; + readonly velocityY: number; initGestureEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, screenXArg: number, screenYArg: number, clientXArg: number, clientYArg: number, offsetXArg: number, offsetYArg: number, translationXArg: number, translationYArg: number, scaleArg: number, expansionArg: number, rotationArg: number, velocityXArg: number, velocityYArg: number, velocityExpansionArg: number, velocityAngularArg: number, hwTimestampArg: number): void; - MSGESTURE_FLAG_BEGIN: number; - MSGESTURE_FLAG_CANCEL: number; - MSGESTURE_FLAG_END: number; - MSGESTURE_FLAG_INERTIA: number; - MSGESTURE_FLAG_NONE: number; + readonly MSGESTURE_FLAG_BEGIN: number; + readonly MSGESTURE_FLAG_CANCEL: number; + readonly MSGESTURE_FLAG_END: number; + readonly MSGESTURE_FLAG_INERTIA: number; + readonly MSGESTURE_FLAG_NONE: number; } declare var MSGestureEvent: { prototype: MSGestureEvent; new(): MSGestureEvent; - MSGESTURE_FLAG_BEGIN: number; - MSGESTURE_FLAG_CANCEL: number; - MSGESTURE_FLAG_END: number; - MSGESTURE_FLAG_INERTIA: number; - MSGESTURE_FLAG_NONE: number; + readonly MSGESTURE_FLAG_BEGIN: number; + readonly MSGESTURE_FLAG_CANCEL: number; + readonly MSGESTURE_FLAG_END: number; + readonly MSGESTURE_FLAG_INERTIA: number; + readonly MSGESTURE_FLAG_NONE: number; } interface MSGraphicsTrust { - constrictionActive: boolean; - status: string; + readonly constrictionActive: boolean; + readonly status: string; } declare var MSGraphicsTrust: { @@ -11436,12 +12102,12 @@ declare var MSGraphicsTrust: { } interface MSHTMLWebViewElement extends HTMLElement { - canGoBack: boolean; - canGoForward: boolean; - containsFullScreenElement: boolean; - documentTitle: string; + readonly canGoBack: boolean; + readonly canGoForward: boolean; + readonly containsFullScreenElement: boolean; + readonly documentTitle: string; height: number; - settings: MSWebViewSettings; + readonly settings: MSWebViewSettings; src: string; width: number; addWebAllowedObject(name: string, applicationObject: any): void; @@ -11467,12 +12133,12 @@ declare var MSHTMLWebViewElement: { } interface MSInputMethodContext extends EventTarget { - compositionEndOffset: number; - compositionStartOffset: number; + readonly compositionEndOffset: number; + readonly compositionStartOffset: number; oncandidatewindowhide: (ev: Event) => any; oncandidatewindowshow: (ev: Event) => any; oncandidatewindowupdate: (ev: Event) => any; - target: HTMLElement; + readonly target: HTMLElement; getCandidateWindowClientRect(): ClientRect; getCompositionAlternatives(): string[]; hasComposition(): boolean; @@ -11489,59 +12155,59 @@ declare var MSInputMethodContext: { } interface MSManipulationEvent extends UIEvent { - currentState: number; - inertiaDestinationX: number; - inertiaDestinationY: number; - lastState: number; + readonly currentState: number; + readonly inertiaDestinationX: number; + readonly inertiaDestinationY: number; + readonly lastState: number; initMSManipulationEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, lastState: number, currentState: number): void; - MS_MANIPULATION_STATE_ACTIVE: number; - MS_MANIPULATION_STATE_CANCELLED: number; - MS_MANIPULATION_STATE_COMMITTED: number; - MS_MANIPULATION_STATE_DRAGGING: number; - MS_MANIPULATION_STATE_INERTIA: number; - MS_MANIPULATION_STATE_PRESELECT: number; - MS_MANIPULATION_STATE_SELECTING: number; - MS_MANIPULATION_STATE_STOPPED: number; + readonly MS_MANIPULATION_STATE_ACTIVE: number; + readonly MS_MANIPULATION_STATE_CANCELLED: number; + readonly MS_MANIPULATION_STATE_COMMITTED: number; + readonly MS_MANIPULATION_STATE_DRAGGING: number; + readonly MS_MANIPULATION_STATE_INERTIA: number; + readonly MS_MANIPULATION_STATE_PRESELECT: number; + readonly MS_MANIPULATION_STATE_SELECTING: number; + readonly MS_MANIPULATION_STATE_STOPPED: number; } declare var MSManipulationEvent: { prototype: MSManipulationEvent; new(): MSManipulationEvent; - MS_MANIPULATION_STATE_ACTIVE: number; - MS_MANIPULATION_STATE_CANCELLED: number; - MS_MANIPULATION_STATE_COMMITTED: number; - MS_MANIPULATION_STATE_DRAGGING: number; - MS_MANIPULATION_STATE_INERTIA: number; - MS_MANIPULATION_STATE_PRESELECT: number; - MS_MANIPULATION_STATE_SELECTING: number; - MS_MANIPULATION_STATE_STOPPED: number; + readonly MS_MANIPULATION_STATE_ACTIVE: number; + readonly MS_MANIPULATION_STATE_CANCELLED: number; + readonly MS_MANIPULATION_STATE_COMMITTED: number; + readonly MS_MANIPULATION_STATE_DRAGGING: number; + readonly MS_MANIPULATION_STATE_INERTIA: number; + readonly MS_MANIPULATION_STATE_PRESELECT: number; + readonly MS_MANIPULATION_STATE_SELECTING: number; + readonly MS_MANIPULATION_STATE_STOPPED: number; } interface MSMediaKeyError { - code: number; - systemCode: number; - MS_MEDIA_KEYERR_CLIENT: number; - MS_MEDIA_KEYERR_DOMAIN: number; - MS_MEDIA_KEYERR_HARDWARECHANGE: number; - MS_MEDIA_KEYERR_OUTPUT: number; - MS_MEDIA_KEYERR_SERVICE: number; - MS_MEDIA_KEYERR_UNKNOWN: number; + readonly code: number; + readonly systemCode: number; + readonly MS_MEDIA_KEYERR_CLIENT: number; + readonly MS_MEDIA_KEYERR_DOMAIN: number; + readonly MS_MEDIA_KEYERR_HARDWARECHANGE: number; + readonly MS_MEDIA_KEYERR_OUTPUT: number; + readonly MS_MEDIA_KEYERR_SERVICE: number; + readonly MS_MEDIA_KEYERR_UNKNOWN: number; } declare var MSMediaKeyError: { prototype: MSMediaKeyError; new(): MSMediaKeyError; - MS_MEDIA_KEYERR_CLIENT: number; - MS_MEDIA_KEYERR_DOMAIN: number; - MS_MEDIA_KEYERR_HARDWARECHANGE: number; - MS_MEDIA_KEYERR_OUTPUT: number; - MS_MEDIA_KEYERR_SERVICE: number; - MS_MEDIA_KEYERR_UNKNOWN: number; + readonly MS_MEDIA_KEYERR_CLIENT: number; + readonly MS_MEDIA_KEYERR_DOMAIN: number; + readonly MS_MEDIA_KEYERR_HARDWARECHANGE: number; + readonly MS_MEDIA_KEYERR_OUTPUT: number; + readonly MS_MEDIA_KEYERR_SERVICE: number; + readonly MS_MEDIA_KEYERR_UNKNOWN: number; } interface MSMediaKeyMessageEvent extends Event { - destinationURL: string; - message: Uint8Array; + readonly destinationURL: string; + readonly message: Uint8Array; } declare var MSMediaKeyMessageEvent: { @@ -11550,7 +12216,7 @@ declare var MSMediaKeyMessageEvent: { } interface MSMediaKeyNeededEvent extends Event { - initData: Uint8Array; + readonly initData: Uint8Array; } declare var MSMediaKeyNeededEvent: { @@ -11559,9 +12225,9 @@ declare var MSMediaKeyNeededEvent: { } interface MSMediaKeySession extends EventTarget { - error: MSMediaKeyError; - keySystem: string; - sessionId: string; + readonly error: MSMediaKeyError; + readonly keySystem: string; + readonly sessionId: string; close(): void; update(key: Uint8Array): void; } @@ -11572,7 +12238,7 @@ declare var MSMediaKeySession: { } interface MSMediaKeys { - keySystem: string; + readonly keySystem: string; createSession(type: string, initData: Uint8Array, cdmData?: Uint8Array): MSMediaKeySession; } @@ -11580,40 +12246,22 @@ declare var MSMediaKeys: { prototype: MSMediaKeys; new(keySystem: string): MSMediaKeys; isTypeSupported(keySystem: string, type?: string): boolean; -} - -interface MSMimeTypesCollection { - length: number; -} - -declare var MSMimeTypesCollection: { - prototype: MSMimeTypesCollection; - new(): MSMimeTypesCollection; -} - -interface MSPluginsCollection { - length: number; - refresh(reload?: boolean): void; -} - -declare var MSPluginsCollection: { - prototype: MSPluginsCollection; - new(): MSPluginsCollection; + isTypeSupportedWithFeatures(keySystem: string, type?: string): string; } interface MSPointerEvent extends MouseEvent { - currentPoint: any; - height: number; - hwTimestamp: number; - intermediatePoints: any; - isPrimary: boolean; - pointerId: number; - pointerType: any; - pressure: number; - rotation: number; - tiltX: number; - tiltY: number; - width: number; + readonly currentPoint: any; + readonly height: number; + readonly hwTimestamp: number; + readonly intermediatePoints: any; + readonly isPrimary: boolean; + readonly pointerId: number; + readonly pointerType: any; + readonly pressure: number; + readonly rotation: number; + readonly tiltX: number; + readonly tiltY: number; + readonly width: number; getCurrentPoint(element: Element): void; getIntermediatePoints(element: Element): void; initPointerEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, screenXArg: number, screenYArg: number, clientXArg: number, clientYArg: number, ctrlKeyArg: boolean, altKeyArg: boolean, shiftKeyArg: boolean, metaKeyArg: boolean, buttonArg: number, relatedTargetArg: EventTarget, offsetXArg: number, offsetYArg: number, widthArg: number, heightArg: number, pressure: number, rotation: number, tiltX: number, tiltY: number, pointerIdArg: number, pointerType: any, hwTimestampArg: number, isPrimary: boolean): void; @@ -11625,7 +12273,7 @@ declare var MSPointerEvent: { } interface MSRangeCollection { - length: number; + readonly length: number; item(index: number): Range; [index: number]: Range; } @@ -11636,8 +12284,8 @@ declare var MSRangeCollection: { } interface MSSiteModeEvent extends Event { - actionURL: string; - buttonID: number; + readonly actionURL: string; + readonly buttonID: number; } declare var MSSiteModeEvent: { @@ -11646,7 +12294,7 @@ declare var MSSiteModeEvent: { } interface MSStream { - type: string; + readonly type: string; msClose(): void; msDetachStream(): any; } @@ -11657,7 +12305,7 @@ declare var MSStream: { } interface MSStreamReader extends EventTarget, MSBaseReader { - error: DOMError; + readonly error: DOMError; readAsArrayBuffer(stream: MSStream, size?: number): void; readAsBinaryString(stream: MSStream, size?: number): void; readAsBlob(stream: MSStream, size?: number): void; @@ -11672,20 +12320,20 @@ declare var MSStreamReader: { } interface MSWebViewAsyncOperation extends EventTarget { - error: DOMError; + readonly error: DOMError; oncomplete: (ev: Event) => any; onerror: (ev: Event) => any; - readyState: number; - result: any; - target: MSHTMLWebViewElement; - type: number; + readonly readyState: number; + readonly result: any; + readonly target: MSHTMLWebViewElement; + readonly type: number; start(): void; - COMPLETED: number; - ERROR: number; - STARTED: number; - TYPE_CAPTURE_PREVIEW_TO_RANDOM_ACCESS_STREAM: number; - TYPE_CREATE_DATA_PACKAGE_FROM_SELECTION: number; - TYPE_INVOKE_SCRIPT: number; + readonly COMPLETED: number; + readonly ERROR: number; + readonly STARTED: number; + readonly TYPE_CAPTURE_PREVIEW_TO_RANDOM_ACCESS_STREAM: number; + readonly TYPE_CREATE_DATA_PACKAGE_FROM_SELECTION: number; + readonly TYPE_INVOKE_SCRIPT: number; addEventListener(type: "complete", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; @@ -11694,12 +12342,12 @@ interface MSWebViewAsyncOperation extends EventTarget { declare var MSWebViewAsyncOperation: { prototype: MSWebViewAsyncOperation; new(): MSWebViewAsyncOperation; - COMPLETED: number; - ERROR: number; - STARTED: number; - TYPE_CAPTURE_PREVIEW_TO_RANDOM_ACCESS_STREAM: number; - TYPE_CREATE_DATA_PACKAGE_FROM_SELECTION: number; - TYPE_INVOKE_SCRIPT: number; + readonly COMPLETED: number; + readonly ERROR: number; + readonly STARTED: number; + readonly TYPE_CAPTURE_PREVIEW_TO_RANDOM_ACCESS_STREAM: number; + readonly TYPE_CREATE_DATA_PACKAGE_FROM_SELECTION: number; + readonly TYPE_INVOKE_SCRIPT: number; } interface MSWebViewSettings { @@ -11712,6 +12360,32 @@ declare var MSWebViewSettings: { new(): MSWebViewSettings; } +interface MediaDeviceInfo { + readonly deviceId: string; + readonly groupId: string; + readonly kind: string; + readonly label: string; +} + +declare var MediaDeviceInfo: { + prototype: MediaDeviceInfo; + new(): MediaDeviceInfo; +} + +interface MediaDevices extends EventTarget { + ondevicechange: (ev: Event) => any; + enumerateDevices(): any; + getSupportedConstraints(): MediaTrackSupportedConstraints; + getUserMedia(constraints: MediaStreamConstraints): PromiseLike; + addEventListener(type: "devicechange", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +} + +declare var MediaDevices: { + prototype: MediaDevices; + new(): MediaDevices; +} + interface MediaElementAudioSourceNode extends AudioNode { } @@ -11720,28 +12394,98 @@ declare var MediaElementAudioSourceNode: { new(): MediaElementAudioSourceNode; } +interface MediaEncryptedEvent extends Event { + readonly initData: ArrayBuffer; + readonly initDataType: string; +} + +declare var MediaEncryptedEvent: { + prototype: MediaEncryptedEvent; + new(type: string, eventInitDict?: MediaEncryptedEventInit): MediaEncryptedEvent; +} + interface MediaError { - code: number; - msExtendedCode: number; - MEDIA_ERR_ABORTED: number; - MEDIA_ERR_DECODE: number; - MEDIA_ERR_NETWORK: number; - MEDIA_ERR_SRC_NOT_SUPPORTED: number; - MS_MEDIA_ERR_ENCRYPTED: number; + readonly code: number; + readonly msExtendedCode: number; + readonly MEDIA_ERR_ABORTED: number; + readonly MEDIA_ERR_DECODE: number; + readonly MEDIA_ERR_NETWORK: number; + readonly MEDIA_ERR_SRC_NOT_SUPPORTED: number; + readonly MS_MEDIA_ERR_ENCRYPTED: number; } declare var MediaError: { prototype: MediaError; new(): MediaError; - MEDIA_ERR_ABORTED: number; - MEDIA_ERR_DECODE: number; - MEDIA_ERR_NETWORK: number; - MEDIA_ERR_SRC_NOT_SUPPORTED: number; - MS_MEDIA_ERR_ENCRYPTED: number; + readonly MEDIA_ERR_ABORTED: number; + readonly MEDIA_ERR_DECODE: number; + readonly MEDIA_ERR_NETWORK: number; + readonly MEDIA_ERR_SRC_NOT_SUPPORTED: number; + readonly MS_MEDIA_ERR_ENCRYPTED: number; +} + +interface MediaKeyMessageEvent extends Event { + readonly message: ArrayBuffer; + readonly messageType: string; +} + +declare var MediaKeyMessageEvent: { + prototype: MediaKeyMessageEvent; + new(type: string, eventInitDict?: MediaKeyMessageEventInit): MediaKeyMessageEvent; +} + +interface MediaKeySession extends EventTarget { + readonly closed: PromiseLike; + readonly expiration: number; + readonly keyStatuses: MediaKeyStatusMap; + readonly sessionId: string; + close(): PromiseLike; + generateRequest(initDataType: string, initData: any): PromiseLike; + load(sessionId: string): PromiseLike; + remove(): PromiseLike; + update(response: any): PromiseLike; +} + +declare var MediaKeySession: { + prototype: MediaKeySession; + new(): MediaKeySession; +} + +interface MediaKeyStatusMap { + readonly size: number; + forEach(callback: ForEachCallback): void; + get(keyId: any): string; + has(keyId: any): boolean; +} + +declare var MediaKeyStatusMap: { + prototype: MediaKeyStatusMap; + new(): MediaKeyStatusMap; +} + +interface MediaKeySystemAccess { + readonly keySystem: string; + createMediaKeys(): PromiseLike; + getConfiguration(): MediaKeySystemConfiguration; +} + +declare var MediaKeySystemAccess: { + prototype: MediaKeySystemAccess; + new(): MediaKeySystemAccess; +} + +interface MediaKeys { + createSession(sessionType?: string): MediaKeySession; + setServerCertificate(serverCertificate: any): PromiseLike; +} + +declare var MediaKeys: { + prototype: MediaKeys; + new(): MediaKeys; } interface MediaList { - length: number; + readonly length: number; mediaText: string; appendMedium(newMedium: string): void; deleteMedium(oldMedium: string): void; @@ -11756,8 +12500,8 @@ declare var MediaList: { } interface MediaQueryList { - matches: boolean; - media: string; + readonly matches: boolean; + readonly media: string; addListener(listener: MediaQueryListListener): void; removeListener(listener: MediaQueryListListener): void; } @@ -11768,10 +12512,10 @@ declare var MediaQueryList: { } interface MediaSource extends EventTarget { - activeSourceBuffers: SourceBufferList; + readonly activeSourceBuffers: SourceBufferList; duration: number; - readyState: string; - sourceBuffers: SourceBufferList; + readonly readyState: string; + readonly sourceBuffers: SourceBufferList; addSourceBuffer(type: string): SourceBuffer; endOfStream(error?: number): void; removeSourceBuffer(sourceBuffer: SourceBuffer): void; @@ -11783,9 +12527,104 @@ declare var MediaSource: { isTypeSupported(type: string): boolean; } +interface MediaStream extends EventTarget { + readonly active: boolean; + readonly id: string; + onactive: (ev: Event) => any; + onaddtrack: (ev: TrackEvent) => any; + oninactive: (ev: Event) => any; + onremovetrack: (ev: TrackEvent) => any; + addTrack(track: MediaStreamTrack): void; + clone(): MediaStream; + getAudioTracks(): MediaStreamTrack[]; + getTrackById(trackId: string): MediaStreamTrack; + getTracks(): MediaStreamTrack[]; + getVideoTracks(): MediaStreamTrack[]; + removeTrack(track: MediaStreamTrack): void; + stop(): void; + addEventListener(type: "active", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "addtrack", listener: (ev: TrackEvent) => any, useCapture?: boolean): void; + addEventListener(type: "inactive", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "removetrack", listener: (ev: TrackEvent) => any, useCapture?: boolean): void; + addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +} + +declare var MediaStream: { + prototype: MediaStream; + new(streamOrTracks?: MediaStream | MediaStreamTrack[]): MediaStream; +} + +interface MediaStreamAudioSourceNode extends AudioNode { +} + +declare var MediaStreamAudioSourceNode: { + prototype: MediaStreamAudioSourceNode; + new(): MediaStreamAudioSourceNode; +} + +interface MediaStreamError { + readonly constraintName: string; + readonly message: string; + readonly name: string; +} + +declare var MediaStreamError: { + prototype: MediaStreamError; + new(): MediaStreamError; +} + +interface MediaStreamErrorEvent extends Event { + readonly error: MediaStreamError; +} + +declare var MediaStreamErrorEvent: { + prototype: MediaStreamErrorEvent; + new(type: string, eventInitDict?: MediaStreamErrorEventInit): MediaStreamErrorEvent; +} + +interface MediaStreamTrack extends EventTarget { + enabled: boolean; + readonly id: string; + readonly kind: string; + readonly label: string; + readonly muted: boolean; + onended: (ev: MediaStreamErrorEvent) => any; + onmute: (ev: Event) => any; + onoverconstrained: (ev: MediaStreamErrorEvent) => any; + onunmute: (ev: Event) => any; + readonly readonly: boolean; + readonly readyState: string; + readonly remote: boolean; + applyConstraints(constraints: MediaTrackConstraints): PromiseLike; + clone(): MediaStreamTrack; + getCapabilities(): MediaTrackCapabilities; + getConstraints(): MediaTrackConstraints; + getSettings(): MediaTrackSettings; + stop(): void; + addEventListener(type: "ended", listener: (ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mute", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "overconstrained", listener: (ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: "unmute", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +} + +declare var MediaStreamTrack: { + prototype: MediaStreamTrack; + new(): MediaStreamTrack; +} + +interface MediaStreamTrackEvent extends Event { + readonly track: MediaStreamTrack; +} + +declare var MediaStreamTrackEvent: { + prototype: MediaStreamTrackEvent; + new(type: string, eventInitDict?: MediaStreamTrackEventInit): MediaStreamTrackEvent; +} + interface MessageChannel { - port1: MessagePort; - port2: MessagePort; + readonly port1: MessagePort; + readonly port2: MessagePort; } declare var MessageChannel: { @@ -11794,10 +12633,10 @@ declare var MessageChannel: { } interface MessageEvent extends Event { - data: any; - origin: string; - ports: any; - source: Window; + readonly data: any; + readonly origin: string; + readonly ports: any; + readonly source: Window; initMessageEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, dataArg: any, originArg: string, lastEventIdArg: string, sourceArg: Window): void; } @@ -11821,10 +12660,10 @@ declare var MessagePort: { } interface MimeType { - description: string; - enabledPlugin: Plugin; - suffixes: string; - type: string; + readonly description: string; + readonly enabledPlugin: Plugin; + readonly suffixes: string; + readonly type: string; } declare var MimeType: { @@ -11833,7 +12672,7 @@ declare var MimeType: { } interface MimeTypeArray { - length: number; + readonly length: number; item(index: number): Plugin; namedItem(type: string): Plugin; [index: number]: Plugin; @@ -11845,30 +12684,30 @@ declare var MimeTypeArray: { } interface MouseEvent extends UIEvent { - altKey: boolean; - button: number; - buttons: number; - clientX: number; - clientY: number; - ctrlKey: boolean; - fromElement: Element; - layerX: number; - layerY: number; - metaKey: boolean; - movementX: number; - movementY: number; - offsetX: number; - offsetY: number; - pageX: number; - pageY: number; - relatedTarget: EventTarget; - screenX: number; - screenY: number; - shiftKey: boolean; - toElement: Element; - which: number; - x: number; - y: number; + readonly altKey: boolean; + readonly button: number; + readonly buttons: number; + readonly clientX: number; + readonly clientY: number; + readonly ctrlKey: boolean; + readonly fromElement: Element; + readonly layerX: number; + readonly layerY: number; + readonly metaKey: boolean; + readonly movementX: number; + readonly movementY: number; + readonly offsetX: number; + readonly offsetY: number; + readonly pageX: number; + readonly pageY: number; + readonly relatedTarget: EventTarget; + readonly screenX: number; + readonly screenY: number; + readonly shiftKey: boolean; + readonly toElement: Element; + readonly which: number; + readonly x: number; + readonly y: number; getModifierState(keyArg: string): boolean; initMouseEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, screenXArg: number, screenYArg: number, clientXArg: number, clientYArg: number, ctrlKeyArg: boolean, altKeyArg: boolean, shiftKeyArg: boolean, metaKeyArg: boolean, buttonArg: number, relatedTargetArg: EventTarget): void; } @@ -11878,36 +12717,24 @@ declare var MouseEvent: { new(typeArg: string, eventInitDict?: MouseEventInit): MouseEvent; } -interface MouseWheelEvent extends MouseEvent { - wheelDelta: number; - wheelDeltaX: number; - wheelDeltaY: number; - initMouseWheelEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, screenXArg: number, screenYArg: number, clientXArg: number, clientYArg: number, buttonArg: number, relatedTargetArg: EventTarget, modifiersListArg: string, wheelDeltaArg: number): void; -} - -declare var MouseWheelEvent: { - prototype: MouseWheelEvent; - new(): MouseWheelEvent; -} - interface MutationEvent extends Event { - attrChange: number; - attrName: string; - newValue: string; - prevValue: string; - relatedNode: Node; + readonly attrChange: number; + readonly attrName: string; + readonly newValue: string; + readonly prevValue: string; + readonly relatedNode: Node; initMutationEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, relatedNodeArg: Node, prevValueArg: string, newValueArg: string, attrNameArg: string, attrChangeArg: number): void; - ADDITION: number; - MODIFICATION: number; - REMOVAL: number; + readonly ADDITION: number; + readonly MODIFICATION: number; + readonly REMOVAL: number; } declare var MutationEvent: { prototype: MutationEvent; new(): MutationEvent; - ADDITION: number; - MODIFICATION: number; - REMOVAL: number; + readonly ADDITION: number; + readonly MODIFICATION: number; + readonly REMOVAL: number; } interface MutationObserver { @@ -11922,15 +12749,15 @@ declare var MutationObserver: { } interface MutationRecord { - addedNodes: NodeList; - attributeName: string; - attributeNamespace: string; - nextSibling: Node; - oldValue: string; - previousSibling: Node; - removedNodes: NodeList; - target: Node; - type: string; + readonly addedNodes: NodeList; + readonly attributeName: string; + readonly attributeNamespace: string; + readonly nextSibling: Node; + readonly oldValue: string; + readonly previousSibling: Node; + readonly removedNodes: NodeList; + readonly target: Node; + readonly type: string; } declare var MutationRecord: { @@ -11939,7 +12766,7 @@ declare var MutationRecord: { } interface NamedNodeMap { - length: number; + readonly length: number; getNamedItem(name: string): Attr; getNamedItemNS(namespaceURI: string, localName: string): Attr; item(index: number): Attr; @@ -11956,8 +12783,8 @@ declare var NamedNodeMap: { } interface NavigationCompletedEvent extends NavigationEvent { - isSuccess: boolean; - webErrorStatus: number; + readonly isSuccess: boolean; + readonly webErrorStatus: number; } declare var NavigationCompletedEvent: { @@ -11966,7 +12793,7 @@ declare var NavigationCompletedEvent: { } interface NavigationEvent extends Event { - uri: string; + readonly uri: string; } declare var NavigationEvent: { @@ -11975,7 +12802,7 @@ declare var NavigationEvent: { } interface NavigationEventWithReferrer extends NavigationEvent { - referer: string; + readonly referer: string; } declare var NavigationEventWithReferrer: { @@ -11983,27 +12810,22 @@ declare var NavigationEventWithReferrer: { new(): NavigationEventWithReferrer; } -interface Navigator extends Object, NavigatorID, NavigatorOnLine, NavigatorContentUtils, NavigatorStorageUtils, NavigatorGeolocation, MSNavigatorDoNotTrack, MSFileSaver { - appCodeName: string; - appMinorVersion: string; - browserLanguage: string; - connectionSpeed: number; - cookieEnabled: boolean; - cpuClass: string; - language: string; - maxTouchPoints: number; - mimeTypes: MSMimeTypesCollection; - msManipulationViewsEnabled: boolean; - msMaxTouchPoints: number; - msPointerEnabled: boolean; - plugins: MSPluginsCollection; - pointerEnabled: boolean; - systemLanguage: string; - userLanguage: string; - webdriver: boolean; +interface Navigator extends Object, NavigatorID, NavigatorOnLine, NavigatorContentUtils, NavigatorStorageUtils, NavigatorGeolocation, MSNavigatorDoNotTrack, MSFileSaver, NavigatorUserMedia { + readonly appCodeName: string; + readonly cookieEnabled: boolean; + readonly language: string; + readonly maxTouchPoints: number; + readonly mimeTypes: MimeTypeArray; + readonly msManipulationViewsEnabled: boolean; + readonly msMaxTouchPoints: number; + readonly msPointerEnabled: boolean; + readonly plugins: PluginArray; + readonly pointerEnabled: boolean; + readonly webdriver: boolean; getGamepads(): Gamepad[]; javaEnabled(): boolean; msLaunchUri(uri: string, successCallback?: MSLaunchUriCallback, noHandlerCallback?: MSLaunchUriCallback): void; + requestMediaKeySystemAccess(keySystem: string, supportedConfigurations: MediaKeySystemConfiguration[]): PromiseLike; vibrate(pattern: number | number[]): boolean; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -12014,26 +12836,26 @@ declare var Navigator: { } interface Node extends EventTarget { - attributes: NamedNodeMap; - baseURI: string; - childNodes: NodeList; - firstChild: Node; - lastChild: Node; - localName: string; - namespaceURI: string; - nextSibling: Node; - nodeName: string; - nodeType: number; + readonly attributes: NamedNodeMap; + readonly baseURI: string; + readonly childNodes: NodeList; + readonly firstChild: Node; + readonly lastChild: Node; + readonly localName: string; + readonly namespaceURI: string; + readonly nextSibling: Node; + readonly nodeName: string; + readonly nodeType: number; nodeValue: string; - ownerDocument: Document; - parentElement: HTMLElement; - parentNode: Node; - prefix: string; - previousSibling: Node; + readonly ownerDocument: Document; + readonly parentElement: HTMLElement; + readonly parentNode: Node; + readonly previousSibling: Node; textContent: string; appendChild(newChild: Node): Node; cloneNode(deep?: boolean): Node; compareDocumentPosition(other: Node): number; + contains(child: Node): boolean; hasAttributes(): boolean; hasChildNodes(): boolean; insertBefore(newChild: Node, refChild?: Node): Node; @@ -12046,47 +12868,47 @@ interface Node extends EventTarget { removeChild(oldChild: Node): Node; replaceChild(newChild: Node, oldChild: Node): Node; contains(node: Node): boolean; - ATTRIBUTE_NODE: number; - CDATA_SECTION_NODE: number; - COMMENT_NODE: number; - DOCUMENT_FRAGMENT_NODE: number; - DOCUMENT_NODE: number; - DOCUMENT_POSITION_CONTAINED_BY: number; - DOCUMENT_POSITION_CONTAINS: number; - DOCUMENT_POSITION_DISCONNECTED: number; - DOCUMENT_POSITION_FOLLOWING: number; - DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: number; - DOCUMENT_POSITION_PRECEDING: number; - DOCUMENT_TYPE_NODE: number; - ELEMENT_NODE: number; - ENTITY_NODE: number; - ENTITY_REFERENCE_NODE: number; - NOTATION_NODE: number; - PROCESSING_INSTRUCTION_NODE: number; - TEXT_NODE: number; + readonly ATTRIBUTE_NODE: number; + readonly CDATA_SECTION_NODE: number; + readonly COMMENT_NODE: number; + readonly DOCUMENT_FRAGMENT_NODE: number; + readonly DOCUMENT_NODE: number; + readonly DOCUMENT_POSITION_CONTAINED_BY: number; + readonly DOCUMENT_POSITION_CONTAINS: number; + readonly DOCUMENT_POSITION_DISCONNECTED: number; + readonly DOCUMENT_POSITION_FOLLOWING: number; + readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: number; + readonly DOCUMENT_POSITION_PRECEDING: number; + readonly DOCUMENT_TYPE_NODE: number; + readonly ELEMENT_NODE: number; + readonly ENTITY_NODE: number; + readonly ENTITY_REFERENCE_NODE: number; + readonly NOTATION_NODE: number; + readonly PROCESSING_INSTRUCTION_NODE: number; + readonly TEXT_NODE: number; } declare var Node: { prototype: Node; new(): Node; - ATTRIBUTE_NODE: number; - CDATA_SECTION_NODE: number; - COMMENT_NODE: number; - DOCUMENT_FRAGMENT_NODE: number; - DOCUMENT_NODE: number; - DOCUMENT_POSITION_CONTAINED_BY: number; - DOCUMENT_POSITION_CONTAINS: number; - DOCUMENT_POSITION_DISCONNECTED: number; - DOCUMENT_POSITION_FOLLOWING: number; - DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: number; - DOCUMENT_POSITION_PRECEDING: number; - DOCUMENT_TYPE_NODE: number; - ELEMENT_NODE: number; - ENTITY_NODE: number; - ENTITY_REFERENCE_NODE: number; - NOTATION_NODE: number; - PROCESSING_INSTRUCTION_NODE: number; - TEXT_NODE: number; + readonly ATTRIBUTE_NODE: number; + readonly CDATA_SECTION_NODE: number; + readonly COMMENT_NODE: number; + readonly DOCUMENT_FRAGMENT_NODE: number; + readonly DOCUMENT_NODE: number; + readonly DOCUMENT_POSITION_CONTAINED_BY: number; + readonly DOCUMENT_POSITION_CONTAINS: number; + readonly DOCUMENT_POSITION_DISCONNECTED: number; + readonly DOCUMENT_POSITION_FOLLOWING: number; + readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: number; + readonly DOCUMENT_POSITION_PRECEDING: number; + readonly DOCUMENT_TYPE_NODE: number; + readonly ELEMENT_NODE: number; + readonly ENTITY_NODE: number; + readonly ENTITY_REFERENCE_NODE: number; + readonly NOTATION_NODE: number; + readonly PROCESSING_INSTRUCTION_NODE: number; + readonly TEXT_NODE: number; } interface NodeFilter { @@ -12094,29 +12916,29 @@ interface NodeFilter { } declare var NodeFilter: { - FILTER_ACCEPT: number; - FILTER_REJECT: number; - FILTER_SKIP: number; - SHOW_ALL: number; - SHOW_ATTRIBUTE: number; - SHOW_CDATA_SECTION: number; - SHOW_COMMENT: number; - SHOW_DOCUMENT: number; - SHOW_DOCUMENT_FRAGMENT: number; - SHOW_DOCUMENT_TYPE: number; - SHOW_ELEMENT: number; - SHOW_ENTITY: number; - SHOW_ENTITY_REFERENCE: number; - SHOW_NOTATION: number; - SHOW_PROCESSING_INSTRUCTION: number; - SHOW_TEXT: number; + readonly FILTER_ACCEPT: number; + readonly FILTER_REJECT: number; + readonly FILTER_SKIP: number; + readonly SHOW_ALL: number; + readonly SHOW_ATTRIBUTE: number; + readonly SHOW_CDATA_SECTION: number; + readonly SHOW_COMMENT: number; + readonly SHOW_DOCUMENT: number; + readonly SHOW_DOCUMENT_FRAGMENT: number; + readonly SHOW_DOCUMENT_TYPE: number; + readonly SHOW_ELEMENT: number; + readonly SHOW_ENTITY: number; + readonly SHOW_ENTITY_REFERENCE: number; + readonly SHOW_NOTATION: number; + readonly SHOW_PROCESSING_INSTRUCTION: number; + readonly SHOW_TEXT: number; } interface NodeIterator { - expandEntityReferences: boolean; - filter: NodeFilter; - root: Node; - whatToShow: number; + readonly expandEntityReferences: boolean; + readonly filter: NodeFilter; + readonly root: Node; + readonly whatToShow: number; detach(): void; nextNode(): Node; previousNode(): Node; @@ -12128,7 +12950,7 @@ declare var NodeIterator: { } interface NodeList { - length: number; + readonly length: number; item(index: number): Node; [index: number]: Node; } @@ -12147,13 +12969,13 @@ declare var OES_element_index_uint: { } interface OES_standard_derivatives { - FRAGMENT_SHADER_DERIVATIVE_HINT_OES: number; + readonly FRAGMENT_SHADER_DERIVATIVE_HINT_OES: number; } declare var OES_standard_derivatives: { prototype: OES_standard_derivatives; new(): OES_standard_derivatives; - FRAGMENT_SHADER_DERIVATIVE_HINT_OES: number; + readonly FRAGMENT_SHADER_DERIVATIVE_HINT_OES: number; } interface OES_texture_float { @@ -12173,7 +12995,7 @@ declare var OES_texture_float_linear: { } interface OfflineAudioCompletionEvent extends Event { - renderedBuffer: AudioBuffer; + readonly renderedBuffer: AudioBuffer; } declare var OfflineAudioCompletionEvent: { @@ -12183,7 +13005,7 @@ declare var OfflineAudioCompletionEvent: { interface OfflineAudioContext extends AudioContext { oncomplete: (ev: Event) => any; - startRendering(): void; + startRendering(): PromiseLike; addEventListener(type: "complete", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -12194,14 +13016,14 @@ declare var OfflineAudioContext: { } interface OscillatorNode extends AudioNode { - detune: AudioParam; - frequency: AudioParam; - onended: (ev: Event) => any; + readonly detune: AudioParam; + readonly frequency: AudioParam; + onended: (ev: MediaStreamErrorEvent) => any; type: string; setPeriodicWave(periodicWave: PeriodicWave): void; start(when?: number): void; stop(when?: number): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "ended", listener: (ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -12210,8 +13032,25 @@ declare var OscillatorNode: { new(): OscillatorNode; } +interface OverflowEvent extends UIEvent { + readonly horizontalOverflow: boolean; + readonly orient: number; + readonly verticalOverflow: boolean; + readonly BOTH: number; + readonly HORIZONTAL: number; + readonly VERTICAL: number; +} + +declare var OverflowEvent: { + prototype: OverflowEvent; + new(): OverflowEvent; + readonly BOTH: number; + readonly HORIZONTAL: number; + readonly VERTICAL: number; +} + interface PageTransitionEvent extends Event { - persisted: boolean; + readonly persisted: boolean; } declare var PageTransitionEvent: { @@ -12239,17 +13078,17 @@ declare var PannerNode: { } interface PerfWidgetExternal { - activeNetworkRequestCount: number; - averageFrameTime: number; - averagePaintTime: number; - extraInformationEnabled: boolean; - independentRenderingEnabled: boolean; - irDisablingContentString: string; - irStatusAvailable: boolean; - maxCpuSpeed: number; - paintRequestsPerSecond: number; - performanceCounter: number; - performanceCounterFrequency: number; + readonly activeNetworkRequestCount: number; + readonly averageFrameTime: number; + readonly averagePaintTime: number; + readonly extraInformationEnabled: boolean; + readonly independentRenderingEnabled: boolean; + readonly irDisablingContentString: string; + readonly irStatusAvailable: boolean; + readonly maxCpuSpeed: number; + readonly paintRequestsPerSecond: number; + readonly performanceCounter: number; + readonly performanceCounterFrequency: number; addEventListener(eventType: string, callback: Function): void; getMemoryUsage(): number; getProcessCpuUsage(): number; @@ -12268,8 +13107,8 @@ declare var PerfWidgetExternal: { } interface Performance { - navigation: PerformanceNavigation; - timing: PerformanceTiming; + readonly navigation: PerformanceNavigation; + readonly timing: PerformanceTiming; clearMarks(markName?: string): void; clearMeasures(measureName?: string): void; clearResourceTimings(): void; @@ -12291,10 +13130,10 @@ declare var Performance: { } interface PerformanceEntry { - duration: number; - entryType: string; - name: string; - startTime: number; + readonly duration: number; + readonly entryType: string; + readonly name: string; + readonly startTime: number; } declare var PerformanceEntry: { @@ -12319,47 +13158,47 @@ declare var PerformanceMeasure: { } interface PerformanceNavigation { - redirectCount: number; - type: number; + readonly redirectCount: number; + readonly type: number; toJSON(): any; - TYPE_BACK_FORWARD: number; - TYPE_NAVIGATE: number; - TYPE_RELOAD: number; - TYPE_RESERVED: number; + readonly TYPE_BACK_FORWARD: number; + readonly TYPE_NAVIGATE: number; + readonly TYPE_RELOAD: number; + readonly TYPE_RESERVED: number; } declare var PerformanceNavigation: { prototype: PerformanceNavigation; new(): PerformanceNavigation; - TYPE_BACK_FORWARD: number; - TYPE_NAVIGATE: number; - TYPE_RELOAD: number; - TYPE_RESERVED: number; + readonly TYPE_BACK_FORWARD: number; + readonly TYPE_NAVIGATE: number; + readonly TYPE_RELOAD: number; + readonly TYPE_RESERVED: number; } interface PerformanceNavigationTiming extends PerformanceEntry { - connectEnd: number; - connectStart: number; - domComplete: number; - domContentLoadedEventEnd: number; - domContentLoadedEventStart: number; - domInteractive: number; - domLoading: number; - domainLookupEnd: number; - domainLookupStart: number; - fetchStart: number; - loadEventEnd: number; - loadEventStart: number; - navigationStart: number; - redirectCount: number; - redirectEnd: number; - redirectStart: number; - requestStart: number; - responseEnd: number; - responseStart: number; - type: string; - unloadEventEnd: number; - unloadEventStart: number; + readonly connectEnd: number; + readonly connectStart: number; + readonly domComplete: number; + readonly domContentLoadedEventEnd: number; + readonly domContentLoadedEventStart: number; + readonly domInteractive: number; + readonly domLoading: number; + readonly domainLookupEnd: number; + readonly domainLookupStart: number; + readonly fetchStart: number; + readonly loadEventEnd: number; + readonly loadEventStart: number; + readonly navigationStart: number; + readonly redirectCount: number; + readonly redirectEnd: number; + readonly redirectStart: number; + readonly requestStart: number; + readonly responseEnd: number; + readonly responseStart: number; + readonly type: string; + readonly unloadEventEnd: number; + readonly unloadEventStart: number; } declare var PerformanceNavigationTiming: { @@ -12368,17 +13207,17 @@ declare var PerformanceNavigationTiming: { } interface PerformanceResourceTiming extends PerformanceEntry { - connectEnd: number; - connectStart: number; - domainLookupEnd: number; - domainLookupStart: number; - fetchStart: number; - initiatorType: string; - redirectEnd: number; - redirectStart: number; - requestStart: number; - responseEnd: number; - responseStart: number; + readonly connectEnd: number; + readonly connectStart: number; + readonly domainLookupEnd: number; + readonly domainLookupStart: number; + readonly fetchStart: number; + readonly initiatorType: string; + readonly redirectEnd: number; + readonly redirectStart: number; + readonly requestStart: number; + readonly responseEnd: number; + readonly responseStart: number; } declare var PerformanceResourceTiming: { @@ -12387,27 +13226,27 @@ declare var PerformanceResourceTiming: { } interface PerformanceTiming { - connectEnd: number; - connectStart: number; - domComplete: number; - domContentLoadedEventEnd: number; - domContentLoadedEventStart: number; - domInteractive: number; - domLoading: number; - domainLookupEnd: number; - domainLookupStart: number; - fetchStart: number; - loadEventEnd: number; - loadEventStart: number; - msFirstPaint: number; - navigationStart: number; - redirectEnd: number; - redirectStart: number; - requestStart: number; - responseEnd: number; - responseStart: number; - unloadEventEnd: number; - unloadEventStart: number; + readonly connectEnd: number; + readonly connectStart: number; + readonly domComplete: number; + readonly domContentLoadedEventEnd: number; + readonly domContentLoadedEventStart: number; + readonly domInteractive: number; + readonly domLoading: number; + readonly domainLookupEnd: number; + readonly domainLookupStart: number; + readonly fetchStart: number; + readonly loadEventEnd: number; + readonly loadEventStart: number; + readonly msFirstPaint: number; + readonly navigationStart: number; + readonly redirectEnd: number; + readonly redirectStart: number; + readonly requestStart: number; + readonly responseEnd: number; + readonly responseStart: number; + readonly unloadEventEnd: number; + readonly unloadEventStart: number; toJSON(): any; } @@ -12425,7 +13264,7 @@ declare var PeriodicWave: { } interface PermissionRequest extends DeferredPermissionRequest { - state: string; + readonly state: string; defer(): void; } @@ -12435,7 +13274,7 @@ declare var PermissionRequest: { } interface PermissionRequestedEvent extends Event { - permissionRequest: PermissionRequest; + readonly permissionRequest: PermissionRequest; } declare var PermissionRequestedEvent: { @@ -12444,11 +13283,11 @@ declare var PermissionRequestedEvent: { } interface Plugin { - description: string; - filename: string; - length: number; - name: string; - version: string; + readonly description: string; + readonly filename: string; + readonly length: number; + readonly name: string; + readonly version: string; item(index: number): MimeType; namedItem(type: string): MimeType; [index: number]: MimeType; @@ -12460,7 +13299,7 @@ declare var Plugin: { } interface PluginArray { - length: number; + readonly length: number; item(index: number): Plugin; namedItem(name: string): Plugin; refresh(reload?: boolean): void; @@ -12473,18 +13312,18 @@ declare var PluginArray: { } interface PointerEvent extends MouseEvent { - currentPoint: any; - height: number; - hwTimestamp: number; - intermediatePoints: any; - isPrimary: boolean; - pointerId: number; - pointerType: any; - pressure: number; - rotation: number; - tiltX: number; - tiltY: number; - width: number; + readonly currentPoint: any; + readonly height: number; + readonly hwTimestamp: number; + readonly intermediatePoints: any; + readonly isPrimary: boolean; + readonly pointerId: number; + readonly pointerType: any; + readonly pressure: number; + readonly rotation: number; + readonly tiltX: number; + readonly tiltY: number; + readonly width: number; getCurrentPoint(element: Element): void; getIntermediatePoints(element: Element): void; initPointerEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, screenXArg: number, screenYArg: number, clientXArg: number, clientYArg: number, ctrlKeyArg: boolean, altKeyArg: boolean, shiftKeyArg: boolean, metaKeyArg: boolean, buttonArg: number, relatedTargetArg: EventTarget, offsetXArg: number, offsetYArg: number, widthArg: number, heightArg: number, pressure: number, rotation: number, tiltX: number, tiltY: number, pointerIdArg: number, pointerType: any, hwTimestampArg: number, isPrimary: boolean): void; @@ -12496,7 +13335,7 @@ declare var PointerEvent: { } interface PopStateEvent extends Event { - state: any; + readonly state: any; initPopStateEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, stateArg: any): void; } @@ -12506,8 +13345,8 @@ declare var PopStateEvent: { } interface Position { - coords: Coordinates; - timestamp: number; + readonly coords: Coordinates; + readonly timestamp: number; } declare var Position: { @@ -12516,24 +13355,24 @@ declare var Position: { } interface PositionError { - code: number; - message: string; + readonly code: number; + readonly message: string; toString(): string; - PERMISSION_DENIED: number; - POSITION_UNAVAILABLE: number; - TIMEOUT: number; + readonly PERMISSION_DENIED: number; + readonly POSITION_UNAVAILABLE: number; + readonly TIMEOUT: number; } declare var PositionError: { prototype: PositionError; new(): PositionError; - PERMISSION_DENIED: number; - POSITION_UNAVAILABLE: number; - TIMEOUT: number; + readonly PERMISSION_DENIED: number; + readonly POSITION_UNAVAILABLE: number; + readonly TIMEOUT: number; } interface ProcessingInstruction extends CharacterData { - target: string; + readonly target: string; } declare var ProcessingInstruction: { @@ -12542,9 +13381,9 @@ declare var ProcessingInstruction: { } interface ProgressEvent extends Event { - lengthComputable: boolean; - loaded: number; - total: number; + readonly lengthComputable: boolean; + readonly loaded: number; + readonly total: number; initProgressEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, lengthComputableArg: boolean, loadedArg: number, totalArg: number): void; } @@ -12553,13 +13392,210 @@ declare var ProgressEvent: { new(type: string, eventInitDict?: ProgressEventInit): ProgressEvent; } +interface RTCDTMFToneChangeEvent extends Event { + readonly tone: string; +} + +declare var RTCDTMFToneChangeEvent: { + prototype: RTCDTMFToneChangeEvent; + new(type: string, eventInitDict: RTCDTMFToneChangeEventInit): RTCDTMFToneChangeEvent; +} + +interface RTCDtlsTransport extends RTCStatsProvider { + ondtlsstatechange: (ev: RTCDtlsTransportStateChangedEvent) => any; + onerror: (ev: Event) => any; + readonly state: string; + readonly transport: RTCIceTransport; + getLocalParameters(): RTCDtlsParameters; + getRemoteCertificates(): ArrayBuffer[]; + getRemoteParameters(): RTCDtlsParameters; + start(remoteParameters: RTCDtlsParameters): void; + stop(): void; + addEventListener(type: "dtlsstatechange", listener: (ev: RTCDtlsTransportStateChangedEvent) => any, useCapture?: boolean): void; + addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +} + +declare var RTCDtlsTransport: { + prototype: RTCDtlsTransport; + new(transport: RTCIceTransport): RTCDtlsTransport; +} + +interface RTCDtlsTransportStateChangedEvent extends Event { + readonly state: string; +} + +declare var RTCDtlsTransportStateChangedEvent: { + prototype: RTCDtlsTransportStateChangedEvent; + new(): RTCDtlsTransportStateChangedEvent; +} + +interface RTCDtmfSender extends EventTarget { + readonly canInsertDTMF: boolean; + readonly duration: number; + readonly interToneGap: number; + ontonechange: (ev: RTCDTMFToneChangeEvent) => any; + readonly sender: RTCRtpSender; + readonly toneBuffer: string; + insertDTMF(tones: string, duration?: number, interToneGap?: number): void; + addEventListener(type: "tonechange", listener: (ev: RTCDTMFToneChangeEvent) => any, useCapture?: boolean): void; + addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +} + +declare var RTCDtmfSender: { + prototype: RTCDtmfSender; + new(sender: RTCRtpSender): RTCDtmfSender; +} + +interface RTCIceCandidatePairChangedEvent extends Event { + readonly pair: RTCIceCandidatePair; +} + +declare var RTCIceCandidatePairChangedEvent: { + prototype: RTCIceCandidatePairChangedEvent; + new(): RTCIceCandidatePairChangedEvent; +} + +interface RTCIceGatherer extends RTCStatsProvider { + readonly component: string; + onerror: (ev: Event) => any; + onlocalcandidate: (ev: RTCIceGathererEvent) => any; + createAssociatedGatherer(): RTCIceGatherer; + getLocalCandidates(): RTCIceCandidate[]; + getLocalParameters(): RTCIceParameters; + addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: "localcandidate", listener: (ev: RTCIceGathererEvent) => any, useCapture?: boolean): void; + addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +} + +declare var RTCIceGatherer: { + prototype: RTCIceGatherer; + new(options: RTCIceGatherOptions): RTCIceGatherer; +} + +interface RTCIceGathererEvent extends Event { + readonly candidate: RTCIceCandidate | RTCIceCandidateComplete; +} + +declare var RTCIceGathererEvent: { + prototype: RTCIceGathererEvent; + new(): RTCIceGathererEvent; +} + +interface RTCIceTransport extends RTCStatsProvider { + readonly component: string; + readonly iceGatherer: RTCIceGatherer; + oncandidatepairchange: (ev: RTCIceCandidatePairChangedEvent) => any; + onicestatechange: (ev: RTCIceTransportStateChangedEvent) => any; + readonly role: string; + readonly state: string; + addRemoteCandidate(remoteCandidate: RTCIceCandidate | RTCIceCandidateComplete): void; + createAssociatedTransport(): RTCIceTransport; + getNominatedCandidatePair(): RTCIceCandidatePair; + getRemoteCandidates(): RTCIceCandidate[]; + getRemoteParameters(): RTCIceParameters; + setRemoteCandidates(remoteCandidates: RTCIceCandidate[]): void; + start(gatherer: RTCIceGatherer, remoteParameters: RTCIceParameters, role?: string): void; + stop(): void; + addEventListener(type: "candidatepairchange", listener: (ev: RTCIceCandidatePairChangedEvent) => any, useCapture?: boolean): void; + addEventListener(type: "icestatechange", listener: (ev: RTCIceTransportStateChangedEvent) => any, useCapture?: boolean): void; + addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +} + +declare var RTCIceTransport: { + prototype: RTCIceTransport; + new(): RTCIceTransport; +} + +interface RTCIceTransportStateChangedEvent extends Event { + readonly state: string; +} + +declare var RTCIceTransportStateChangedEvent: { + prototype: RTCIceTransportStateChangedEvent; + new(): RTCIceTransportStateChangedEvent; +} + +interface RTCRtpReceiver extends RTCStatsProvider { + onerror: (ev: Event) => any; + readonly rtcpTransport: RTCDtlsTransport; + readonly track: MediaStreamTrack; + readonly transport: RTCDtlsTransport | RTCSrtpSdesTransport; + getContributingSources(): RTCRtpContributingSource[]; + receive(parameters: RTCRtpParameters): void; + requestSendCSRC(csrc: number): void; + setTransport(transport: RTCDtlsTransport | RTCSrtpSdesTransport, rtcpTransport?: RTCDtlsTransport): void; + stop(): void; + addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +} + +declare var RTCRtpReceiver: { + prototype: RTCRtpReceiver; + new(transport: RTCDtlsTransport | RTCSrtpSdesTransport, kind: string, rtcpTransport?: RTCDtlsTransport): RTCRtpReceiver; + getCapabilities(kind?: string): RTCRtpCapabilities; +} + +interface RTCRtpSender extends RTCStatsProvider { + onerror: (ev: Event) => any; + onssrcconflict: (ev: RTCSsrcConflictEvent) => any; + readonly rtcpTransport: RTCDtlsTransport; + readonly track: MediaStreamTrack; + readonly transport: RTCDtlsTransport | RTCSrtpSdesTransport; + send(parameters: RTCRtpParameters): void; + setTrack(track: MediaStreamTrack): void; + setTransport(transport: RTCDtlsTransport | RTCSrtpSdesTransport, rtcpTransport?: RTCDtlsTransport): void; + stop(): void; + addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: "ssrcconflict", listener: (ev: RTCSsrcConflictEvent) => any, useCapture?: boolean): void; + addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +} + +declare var RTCRtpSender: { + prototype: RTCRtpSender; + new(track: MediaStreamTrack, transport: RTCDtlsTransport | RTCSrtpSdesTransport, rtcpTransport?: RTCDtlsTransport): RTCRtpSender; + getCapabilities(kind?: string): RTCRtpCapabilities; +} + +interface RTCSrtpSdesTransport extends EventTarget { + onerror: (ev: Event) => any; + readonly transport: RTCIceTransport; + addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +} + +declare var RTCSrtpSdesTransport: { + prototype: RTCSrtpSdesTransport; + new(transport: RTCIceTransport, encryptParameters: RTCSrtpSdesParameters, decryptParameters: RTCSrtpSdesParameters): RTCSrtpSdesTransport; + getLocalParameters(): RTCSrtpSdesParameters[]; +} + +interface RTCSsrcConflictEvent extends Event { + readonly ssrc: number; +} + +declare var RTCSsrcConflictEvent: { + prototype: RTCSsrcConflictEvent; + new(): RTCSsrcConflictEvent; +} + +interface RTCStatsProvider extends EventTarget { + getStats(): PromiseLike; + msGetStats(): PromiseLike; +} + +declare var RTCStatsProvider: { + prototype: RTCStatsProvider; + new(): RTCStatsProvider; +} + interface Range { - collapsed: boolean; - commonAncestorContainer: Node; - endContainer: Node; - endOffset: number; - startContainer: Node; - startOffset: number; + readonly collapsed: boolean; + readonly commonAncestorContainer: Node; + readonly endContainer: Node; + readonly endOffset: number; + readonly startContainer: Node; + readonly startOffset: number; cloneContents(): DocumentFragment; cloneRange(): Range; collapse(toStart: boolean): void; @@ -12582,23 +13618,23 @@ interface Range { setStartBefore(refNode: Node): void; surroundContents(newParent: Node): void; toString(): string; - END_TO_END: number; - END_TO_START: number; - START_TO_END: number; - START_TO_START: number; + readonly END_TO_END: number; + readonly END_TO_START: number; + readonly START_TO_END: number; + readonly START_TO_START: number; } declare var Range: { prototype: Range; new(): Range; - END_TO_END: number; - END_TO_START: number; - START_TO_END: number; - START_TO_START: number; + readonly END_TO_END: number; + readonly END_TO_START: number; + readonly START_TO_END: number; + readonly START_TO_START: number; } interface SVGAElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired, SVGURIReference { - target: SVGAnimatedString; + readonly target: SVGAnimatedString; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -12608,32 +13644,32 @@ declare var SVGAElement: { } interface SVGAngle { - unitType: number; + readonly unitType: number; value: number; valueAsString: string; valueInSpecifiedUnits: number; convertToSpecifiedUnits(unitType: number): void; newValueSpecifiedUnits(unitType: number, valueInSpecifiedUnits: number): void; - SVG_ANGLETYPE_DEG: number; - SVG_ANGLETYPE_GRAD: number; - SVG_ANGLETYPE_RAD: number; - SVG_ANGLETYPE_UNKNOWN: number; - SVG_ANGLETYPE_UNSPECIFIED: number; + readonly SVG_ANGLETYPE_DEG: number; + readonly SVG_ANGLETYPE_GRAD: number; + readonly SVG_ANGLETYPE_RAD: number; + readonly SVG_ANGLETYPE_UNKNOWN: number; + readonly SVG_ANGLETYPE_UNSPECIFIED: number; } declare var SVGAngle: { prototype: SVGAngle; new(): SVGAngle; - SVG_ANGLETYPE_DEG: number; - SVG_ANGLETYPE_GRAD: number; - SVG_ANGLETYPE_RAD: number; - SVG_ANGLETYPE_UNKNOWN: number; - SVG_ANGLETYPE_UNSPECIFIED: number; + readonly SVG_ANGLETYPE_DEG: number; + readonly SVG_ANGLETYPE_GRAD: number; + readonly SVG_ANGLETYPE_RAD: number; + readonly SVG_ANGLETYPE_UNKNOWN: number; + readonly SVG_ANGLETYPE_UNSPECIFIED: number; } interface SVGAnimatedAngle { - animVal: SVGAngle; - baseVal: SVGAngle; + readonly animVal: SVGAngle; + readonly baseVal: SVGAngle; } declare var SVGAnimatedAngle: { @@ -12642,7 +13678,7 @@ declare var SVGAnimatedAngle: { } interface SVGAnimatedBoolean { - animVal: boolean; + readonly animVal: boolean; baseVal: boolean; } @@ -12652,7 +13688,7 @@ declare var SVGAnimatedBoolean: { } interface SVGAnimatedEnumeration { - animVal: number; + readonly animVal: number; baseVal: number; } @@ -12662,7 +13698,7 @@ declare var SVGAnimatedEnumeration: { } interface SVGAnimatedInteger { - animVal: number; + readonly animVal: number; baseVal: number; } @@ -12672,8 +13708,8 @@ declare var SVGAnimatedInteger: { } interface SVGAnimatedLength { - animVal: SVGLength; - baseVal: SVGLength; + readonly animVal: SVGLength; + readonly baseVal: SVGLength; } declare var SVGAnimatedLength: { @@ -12682,8 +13718,8 @@ declare var SVGAnimatedLength: { } interface SVGAnimatedLengthList { - animVal: SVGLengthList; - baseVal: SVGLengthList; + readonly animVal: SVGLengthList; + readonly baseVal: SVGLengthList; } declare var SVGAnimatedLengthList: { @@ -12692,7 +13728,7 @@ declare var SVGAnimatedLengthList: { } interface SVGAnimatedNumber { - animVal: number; + readonly animVal: number; baseVal: number; } @@ -12702,8 +13738,8 @@ declare var SVGAnimatedNumber: { } interface SVGAnimatedNumberList { - animVal: SVGNumberList; - baseVal: SVGNumberList; + readonly animVal: SVGNumberList; + readonly baseVal: SVGNumberList; } declare var SVGAnimatedNumberList: { @@ -12712,8 +13748,8 @@ declare var SVGAnimatedNumberList: { } interface SVGAnimatedPreserveAspectRatio { - animVal: SVGPreserveAspectRatio; - baseVal: SVGPreserveAspectRatio; + readonly animVal: SVGPreserveAspectRatio; + readonly baseVal: SVGPreserveAspectRatio; } declare var SVGAnimatedPreserveAspectRatio: { @@ -12722,8 +13758,8 @@ declare var SVGAnimatedPreserveAspectRatio: { } interface SVGAnimatedRect { - animVal: SVGRect; - baseVal: SVGRect; + readonly animVal: SVGRect; + readonly baseVal: SVGRect; } declare var SVGAnimatedRect: { @@ -12732,7 +13768,7 @@ declare var SVGAnimatedRect: { } interface SVGAnimatedString { - animVal: string; + readonly animVal: string; baseVal: string; } @@ -12742,8 +13778,8 @@ declare var SVGAnimatedString: { } interface SVGAnimatedTransformList { - animVal: SVGTransformList; - baseVal: SVGTransformList; + readonly animVal: SVGTransformList; + readonly baseVal: SVGTransformList; } declare var SVGAnimatedTransformList: { @@ -12752,9 +13788,9 @@ declare var SVGAnimatedTransformList: { } interface SVGCircleElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired { - cx: SVGAnimatedLength; - cy: SVGAnimatedLength; - r: SVGAnimatedLength; + readonly cx: SVGAnimatedLength; + readonly cy: SVGAnimatedLength; + readonly r: SVGAnimatedLength; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -12764,7 +13800,7 @@ declare var SVGCircleElement: { } interface SVGClipPathElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired, SVGUnitTypes { - clipPathUnits: SVGAnimatedEnumeration; + readonly clipPathUnits: SVGAnimatedEnumeration; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -12774,30 +13810,30 @@ declare var SVGClipPathElement: { } interface SVGComponentTransferFunctionElement extends SVGElement { - amplitude: SVGAnimatedNumber; - exponent: SVGAnimatedNumber; - intercept: SVGAnimatedNumber; - offset: SVGAnimatedNumber; - slope: SVGAnimatedNumber; - tableValues: SVGAnimatedNumberList; - type: SVGAnimatedEnumeration; - SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE: number; - SVG_FECOMPONENTTRANSFER_TYPE_GAMMA: number; - SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY: number; - SVG_FECOMPONENTTRANSFER_TYPE_LINEAR: number; - SVG_FECOMPONENTTRANSFER_TYPE_TABLE: number; - SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN: number; + readonly amplitude: SVGAnimatedNumber; + readonly exponent: SVGAnimatedNumber; + readonly intercept: SVGAnimatedNumber; + readonly offset: SVGAnimatedNumber; + readonly slope: SVGAnimatedNumber; + readonly tableValues: SVGAnimatedNumberList; + readonly type: SVGAnimatedEnumeration; + readonly SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE: number; + readonly SVG_FECOMPONENTTRANSFER_TYPE_GAMMA: number; + readonly SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY: number; + readonly SVG_FECOMPONENTTRANSFER_TYPE_LINEAR: number; + readonly SVG_FECOMPONENTTRANSFER_TYPE_TABLE: number; + readonly SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN: number; } declare var SVGComponentTransferFunctionElement: { prototype: SVGComponentTransferFunctionElement; new(): SVGComponentTransferFunctionElement; - SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE: number; - SVG_FECOMPONENTTRANSFER_TYPE_GAMMA: number; - SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY: number; - SVG_FECOMPONENTTRANSFER_TYPE_LINEAR: number; - SVG_FECOMPONENTTRANSFER_TYPE_TABLE: number; - SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN: number; + readonly SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE: number; + readonly SVG_FECOMPONENTTRANSFER_TYPE_GAMMA: number; + readonly SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY: number; + readonly SVG_FECOMPONENTTRANSFER_TYPE_LINEAR: number; + readonly SVG_FECOMPONENTTRANSFER_TYPE_TABLE: number; + readonly SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN: number; } interface SVGDefsElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired { @@ -12819,7 +13855,6 @@ declare var SVGDescElement: { } interface SVGElement extends Element { - id: string; onclick: (ev: MouseEvent) => any; ondblclick: (ev: MouseEvent) => any; onfocusin: (ev: FocusEvent) => any; @@ -12830,8 +13865,8 @@ interface SVGElement extends Element { onmouseout: (ev: MouseEvent) => any; onmouseover: (ev: MouseEvent) => any; onmouseup: (ev: MouseEvent) => any; - ownerSVGElement: SVGSVGElement; - viewportElement: SVGElement; + readonly ownerSVGElement: SVGSVGElement; + readonly viewportElement: SVGElement; xmlbase: string; className: any; addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; @@ -12889,14 +13924,14 @@ declare var SVGElement: { } interface SVGElementInstance extends EventTarget { - childNodes: SVGElementInstanceList; - correspondingElement: SVGElement; - correspondingUseElement: SVGUseElement; - firstChild: SVGElementInstance; - lastChild: SVGElementInstance; - nextSibling: SVGElementInstance; - parentNode: SVGElementInstance; - previousSibling: SVGElementInstance; + readonly childNodes: SVGElementInstanceList; + readonly correspondingElement: SVGElement; + readonly correspondingUseElement: SVGUseElement; + readonly firstChild: SVGElementInstance; + readonly lastChild: SVGElementInstance; + readonly nextSibling: SVGElementInstance; + readonly parentNode: SVGElementInstance; + readonly previousSibling: SVGElementInstance; } declare var SVGElementInstance: { @@ -12905,7 +13940,7 @@ declare var SVGElementInstance: { } interface SVGElementInstanceList { - length: number; + readonly length: number; item(index: number): SVGElementInstance; } @@ -12915,10 +13950,10 @@ declare var SVGElementInstanceList: { } interface SVGEllipseElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired { - cx: SVGAnimatedLength; - cy: SVGAnimatedLength; - rx: SVGAnimatedLength; - ry: SVGAnimatedLength; + readonly cx: SVGAnimatedLength; + readonly cy: SVGAnimatedLength; + readonly rx: SVGAnimatedLength; + readonly ry: SVGAnimatedLength; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -12928,75 +13963,75 @@ declare var SVGEllipseElement: { } interface SVGFEBlendElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - in1: SVGAnimatedString; - in2: SVGAnimatedString; - mode: SVGAnimatedEnumeration; - SVG_FEBLEND_MODE_COLOR: number; - SVG_FEBLEND_MODE_COLOR_BURN: number; - SVG_FEBLEND_MODE_COLOR_DODGE: number; - SVG_FEBLEND_MODE_DARKEN: number; - SVG_FEBLEND_MODE_DIFFERENCE: number; - SVG_FEBLEND_MODE_EXCLUSION: number; - SVG_FEBLEND_MODE_HARD_LIGHT: number; - SVG_FEBLEND_MODE_HUE: number; - SVG_FEBLEND_MODE_LIGHTEN: number; - SVG_FEBLEND_MODE_LUMINOSITY: number; - SVG_FEBLEND_MODE_MULTIPLY: number; - SVG_FEBLEND_MODE_NORMAL: number; - SVG_FEBLEND_MODE_OVERLAY: number; - SVG_FEBLEND_MODE_SATURATION: number; - SVG_FEBLEND_MODE_SCREEN: number; - SVG_FEBLEND_MODE_SOFT_LIGHT: number; - SVG_FEBLEND_MODE_UNKNOWN: number; + readonly in1: SVGAnimatedString; + readonly in2: SVGAnimatedString; + readonly mode: SVGAnimatedEnumeration; + readonly SVG_FEBLEND_MODE_COLOR: number; + readonly SVG_FEBLEND_MODE_COLOR_BURN: number; + readonly SVG_FEBLEND_MODE_COLOR_DODGE: number; + readonly SVG_FEBLEND_MODE_DARKEN: number; + readonly SVG_FEBLEND_MODE_DIFFERENCE: number; + readonly SVG_FEBLEND_MODE_EXCLUSION: number; + readonly SVG_FEBLEND_MODE_HARD_LIGHT: number; + readonly SVG_FEBLEND_MODE_HUE: number; + readonly SVG_FEBLEND_MODE_LIGHTEN: number; + readonly SVG_FEBLEND_MODE_LUMINOSITY: number; + readonly SVG_FEBLEND_MODE_MULTIPLY: number; + readonly SVG_FEBLEND_MODE_NORMAL: number; + readonly SVG_FEBLEND_MODE_OVERLAY: number; + readonly SVG_FEBLEND_MODE_SATURATION: number; + readonly SVG_FEBLEND_MODE_SCREEN: number; + readonly SVG_FEBLEND_MODE_SOFT_LIGHT: number; + readonly SVG_FEBLEND_MODE_UNKNOWN: number; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var SVGFEBlendElement: { prototype: SVGFEBlendElement; new(): SVGFEBlendElement; - SVG_FEBLEND_MODE_COLOR: number; - SVG_FEBLEND_MODE_COLOR_BURN: number; - SVG_FEBLEND_MODE_COLOR_DODGE: number; - SVG_FEBLEND_MODE_DARKEN: number; - SVG_FEBLEND_MODE_DIFFERENCE: number; - SVG_FEBLEND_MODE_EXCLUSION: number; - SVG_FEBLEND_MODE_HARD_LIGHT: number; - SVG_FEBLEND_MODE_HUE: number; - SVG_FEBLEND_MODE_LIGHTEN: number; - SVG_FEBLEND_MODE_LUMINOSITY: number; - SVG_FEBLEND_MODE_MULTIPLY: number; - SVG_FEBLEND_MODE_NORMAL: number; - SVG_FEBLEND_MODE_OVERLAY: number; - SVG_FEBLEND_MODE_SATURATION: number; - SVG_FEBLEND_MODE_SCREEN: number; - SVG_FEBLEND_MODE_SOFT_LIGHT: number; - SVG_FEBLEND_MODE_UNKNOWN: number; + readonly SVG_FEBLEND_MODE_COLOR: number; + readonly SVG_FEBLEND_MODE_COLOR_BURN: number; + readonly SVG_FEBLEND_MODE_COLOR_DODGE: number; + readonly SVG_FEBLEND_MODE_DARKEN: number; + readonly SVG_FEBLEND_MODE_DIFFERENCE: number; + readonly SVG_FEBLEND_MODE_EXCLUSION: number; + readonly SVG_FEBLEND_MODE_HARD_LIGHT: number; + readonly SVG_FEBLEND_MODE_HUE: number; + readonly SVG_FEBLEND_MODE_LIGHTEN: number; + readonly SVG_FEBLEND_MODE_LUMINOSITY: number; + readonly SVG_FEBLEND_MODE_MULTIPLY: number; + readonly SVG_FEBLEND_MODE_NORMAL: number; + readonly SVG_FEBLEND_MODE_OVERLAY: number; + readonly SVG_FEBLEND_MODE_SATURATION: number; + readonly SVG_FEBLEND_MODE_SCREEN: number; + readonly SVG_FEBLEND_MODE_SOFT_LIGHT: number; + readonly SVG_FEBLEND_MODE_UNKNOWN: number; } interface SVGFEColorMatrixElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - in1: SVGAnimatedString; - type: SVGAnimatedEnumeration; - values: SVGAnimatedNumberList; - SVG_FECOLORMATRIX_TYPE_HUEROTATE: number; - SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA: number; - SVG_FECOLORMATRIX_TYPE_MATRIX: number; - SVG_FECOLORMATRIX_TYPE_SATURATE: number; - SVG_FECOLORMATRIX_TYPE_UNKNOWN: number; + readonly in1: SVGAnimatedString; + readonly type: SVGAnimatedEnumeration; + readonly values: SVGAnimatedNumberList; + readonly SVG_FECOLORMATRIX_TYPE_HUEROTATE: number; + readonly SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA: number; + readonly SVG_FECOLORMATRIX_TYPE_MATRIX: number; + readonly SVG_FECOLORMATRIX_TYPE_SATURATE: number; + readonly SVG_FECOLORMATRIX_TYPE_UNKNOWN: number; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var SVGFEColorMatrixElement: { prototype: SVGFEColorMatrixElement; new(): SVGFEColorMatrixElement; - SVG_FECOLORMATRIX_TYPE_HUEROTATE: number; - SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA: number; - SVG_FECOLORMATRIX_TYPE_MATRIX: number; - SVG_FECOLORMATRIX_TYPE_SATURATE: number; - SVG_FECOLORMATRIX_TYPE_UNKNOWN: number; + readonly SVG_FECOLORMATRIX_TYPE_HUEROTATE: number; + readonly SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA: number; + readonly SVG_FECOLORMATRIX_TYPE_MATRIX: number; + readonly SVG_FECOLORMATRIX_TYPE_SATURATE: number; + readonly SVG_FECOLORMATRIX_TYPE_UNKNOWN: number; } interface SVGFEComponentTransferElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - in1: SVGAnimatedString; + readonly in1: SVGAnimatedString; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -13006,70 +14041,70 @@ declare var SVGFEComponentTransferElement: { } interface SVGFECompositeElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - in1: SVGAnimatedString; - in2: SVGAnimatedString; - k1: SVGAnimatedNumber; - k2: SVGAnimatedNumber; - k3: SVGAnimatedNumber; - k4: SVGAnimatedNumber; - operator: SVGAnimatedEnumeration; - SVG_FECOMPOSITE_OPERATOR_ARITHMETIC: number; - SVG_FECOMPOSITE_OPERATOR_ATOP: number; - SVG_FECOMPOSITE_OPERATOR_IN: number; - SVG_FECOMPOSITE_OPERATOR_OUT: number; - SVG_FECOMPOSITE_OPERATOR_OVER: number; - SVG_FECOMPOSITE_OPERATOR_UNKNOWN: number; - SVG_FECOMPOSITE_OPERATOR_XOR: number; + readonly in1: SVGAnimatedString; + readonly in2: SVGAnimatedString; + readonly k1: SVGAnimatedNumber; + readonly k2: SVGAnimatedNumber; + readonly k3: SVGAnimatedNumber; + readonly k4: SVGAnimatedNumber; + readonly operator: SVGAnimatedEnumeration; + readonly SVG_FECOMPOSITE_OPERATOR_ARITHMETIC: number; + readonly SVG_FECOMPOSITE_OPERATOR_ATOP: number; + readonly SVG_FECOMPOSITE_OPERATOR_IN: number; + readonly SVG_FECOMPOSITE_OPERATOR_OUT: number; + readonly SVG_FECOMPOSITE_OPERATOR_OVER: number; + readonly SVG_FECOMPOSITE_OPERATOR_UNKNOWN: number; + readonly SVG_FECOMPOSITE_OPERATOR_XOR: number; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var SVGFECompositeElement: { prototype: SVGFECompositeElement; new(): SVGFECompositeElement; - SVG_FECOMPOSITE_OPERATOR_ARITHMETIC: number; - SVG_FECOMPOSITE_OPERATOR_ATOP: number; - SVG_FECOMPOSITE_OPERATOR_IN: number; - SVG_FECOMPOSITE_OPERATOR_OUT: number; - SVG_FECOMPOSITE_OPERATOR_OVER: number; - SVG_FECOMPOSITE_OPERATOR_UNKNOWN: number; - SVG_FECOMPOSITE_OPERATOR_XOR: number; + readonly SVG_FECOMPOSITE_OPERATOR_ARITHMETIC: number; + readonly SVG_FECOMPOSITE_OPERATOR_ATOP: number; + readonly SVG_FECOMPOSITE_OPERATOR_IN: number; + readonly SVG_FECOMPOSITE_OPERATOR_OUT: number; + readonly SVG_FECOMPOSITE_OPERATOR_OVER: number; + readonly SVG_FECOMPOSITE_OPERATOR_UNKNOWN: number; + readonly SVG_FECOMPOSITE_OPERATOR_XOR: number; } interface SVGFEConvolveMatrixElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - bias: SVGAnimatedNumber; - divisor: SVGAnimatedNumber; - edgeMode: SVGAnimatedEnumeration; - in1: SVGAnimatedString; - kernelMatrix: SVGAnimatedNumberList; - kernelUnitLengthX: SVGAnimatedNumber; - kernelUnitLengthY: SVGAnimatedNumber; - orderX: SVGAnimatedInteger; - orderY: SVGAnimatedInteger; - preserveAlpha: SVGAnimatedBoolean; - targetX: SVGAnimatedInteger; - targetY: SVGAnimatedInteger; - SVG_EDGEMODE_DUPLICATE: number; - SVG_EDGEMODE_NONE: number; - SVG_EDGEMODE_UNKNOWN: number; - SVG_EDGEMODE_WRAP: number; + readonly bias: SVGAnimatedNumber; + readonly divisor: SVGAnimatedNumber; + readonly edgeMode: SVGAnimatedEnumeration; + readonly in1: SVGAnimatedString; + readonly kernelMatrix: SVGAnimatedNumberList; + readonly kernelUnitLengthX: SVGAnimatedNumber; + readonly kernelUnitLengthY: SVGAnimatedNumber; + readonly orderX: SVGAnimatedInteger; + readonly orderY: SVGAnimatedInteger; + readonly preserveAlpha: SVGAnimatedBoolean; + readonly targetX: SVGAnimatedInteger; + readonly targetY: SVGAnimatedInteger; + readonly SVG_EDGEMODE_DUPLICATE: number; + readonly SVG_EDGEMODE_NONE: number; + readonly SVG_EDGEMODE_UNKNOWN: number; + readonly SVG_EDGEMODE_WRAP: number; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var SVGFEConvolveMatrixElement: { prototype: SVGFEConvolveMatrixElement; new(): SVGFEConvolveMatrixElement; - SVG_EDGEMODE_DUPLICATE: number; - SVG_EDGEMODE_NONE: number; - SVG_EDGEMODE_UNKNOWN: number; - SVG_EDGEMODE_WRAP: number; + readonly SVG_EDGEMODE_DUPLICATE: number; + readonly SVG_EDGEMODE_NONE: number; + readonly SVG_EDGEMODE_UNKNOWN: number; + readonly SVG_EDGEMODE_WRAP: number; } interface SVGFEDiffuseLightingElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - diffuseConstant: SVGAnimatedNumber; - in1: SVGAnimatedString; - kernelUnitLengthX: SVGAnimatedNumber; - kernelUnitLengthY: SVGAnimatedNumber; - surfaceScale: SVGAnimatedNumber; + readonly diffuseConstant: SVGAnimatedNumber; + readonly in1: SVGAnimatedString; + readonly kernelUnitLengthX: SVGAnimatedNumber; + readonly kernelUnitLengthY: SVGAnimatedNumber; + readonly surfaceScale: SVGAnimatedNumber; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -13079,32 +14114,32 @@ declare var SVGFEDiffuseLightingElement: { } interface SVGFEDisplacementMapElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - in1: SVGAnimatedString; - in2: SVGAnimatedString; - scale: SVGAnimatedNumber; - xChannelSelector: SVGAnimatedEnumeration; - yChannelSelector: SVGAnimatedEnumeration; - SVG_CHANNEL_A: number; - SVG_CHANNEL_B: number; - SVG_CHANNEL_G: number; - SVG_CHANNEL_R: number; - SVG_CHANNEL_UNKNOWN: number; + readonly in1: SVGAnimatedString; + readonly in2: SVGAnimatedString; + readonly scale: SVGAnimatedNumber; + readonly xChannelSelector: SVGAnimatedEnumeration; + readonly yChannelSelector: SVGAnimatedEnumeration; + readonly SVG_CHANNEL_A: number; + readonly SVG_CHANNEL_B: number; + readonly SVG_CHANNEL_G: number; + readonly SVG_CHANNEL_R: number; + readonly SVG_CHANNEL_UNKNOWN: number; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var SVGFEDisplacementMapElement: { prototype: SVGFEDisplacementMapElement; new(): SVGFEDisplacementMapElement; - SVG_CHANNEL_A: number; - SVG_CHANNEL_B: number; - SVG_CHANNEL_G: number; - SVG_CHANNEL_R: number; - SVG_CHANNEL_UNKNOWN: number; + readonly SVG_CHANNEL_A: number; + readonly SVG_CHANNEL_B: number; + readonly SVG_CHANNEL_G: number; + readonly SVG_CHANNEL_R: number; + readonly SVG_CHANNEL_UNKNOWN: number; } interface SVGFEDistantLightElement extends SVGElement { - azimuth: SVGAnimatedNumber; - elevation: SVGAnimatedNumber; + readonly azimuth: SVGAnimatedNumber; + readonly elevation: SVGAnimatedNumber; } declare var SVGFEDistantLightElement: { @@ -13154,9 +14189,9 @@ declare var SVGFEFuncRElement: { } interface SVGFEGaussianBlurElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - in1: SVGAnimatedString; - stdDeviationX: SVGAnimatedNumber; - stdDeviationY: SVGAnimatedNumber; + readonly in1: SVGAnimatedString; + readonly stdDeviationX: SVGAnimatedNumber; + readonly stdDeviationY: SVGAnimatedNumber; setStdDeviation(stdDeviationX: number, stdDeviationY: number): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -13167,7 +14202,7 @@ declare var SVGFEGaussianBlurElement: { } interface SVGFEImageElement extends SVGElement, SVGFilterPrimitiveStandardAttributes, SVGLangSpace, SVGURIReference, SVGExternalResourcesRequired { - preserveAspectRatio: SVGAnimatedPreserveAspectRatio; + readonly preserveAspectRatio: SVGAnimatedPreserveAspectRatio; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -13186,7 +14221,7 @@ declare var SVGFEMergeElement: { } interface SVGFEMergeNodeElement extends SVGElement { - in1: SVGAnimatedString; + readonly in1: SVGAnimatedString; } declare var SVGFEMergeNodeElement: { @@ -13195,28 +14230,28 @@ declare var SVGFEMergeNodeElement: { } interface SVGFEMorphologyElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - in1: SVGAnimatedString; - operator: SVGAnimatedEnumeration; - radiusX: SVGAnimatedNumber; - radiusY: SVGAnimatedNumber; - SVG_MORPHOLOGY_OPERATOR_DILATE: number; - SVG_MORPHOLOGY_OPERATOR_ERODE: number; - SVG_MORPHOLOGY_OPERATOR_UNKNOWN: number; + readonly in1: SVGAnimatedString; + readonly operator: SVGAnimatedEnumeration; + readonly radiusX: SVGAnimatedNumber; + readonly radiusY: SVGAnimatedNumber; + readonly SVG_MORPHOLOGY_OPERATOR_DILATE: number; + readonly SVG_MORPHOLOGY_OPERATOR_ERODE: number; + readonly SVG_MORPHOLOGY_OPERATOR_UNKNOWN: number; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var SVGFEMorphologyElement: { prototype: SVGFEMorphologyElement; new(): SVGFEMorphologyElement; - SVG_MORPHOLOGY_OPERATOR_DILATE: number; - SVG_MORPHOLOGY_OPERATOR_ERODE: number; - SVG_MORPHOLOGY_OPERATOR_UNKNOWN: number; + readonly SVG_MORPHOLOGY_OPERATOR_DILATE: number; + readonly SVG_MORPHOLOGY_OPERATOR_ERODE: number; + readonly SVG_MORPHOLOGY_OPERATOR_UNKNOWN: number; } interface SVGFEOffsetElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - dx: SVGAnimatedNumber; - dy: SVGAnimatedNumber; - in1: SVGAnimatedString; + readonly dx: SVGAnimatedNumber; + readonly dy: SVGAnimatedNumber; + readonly in1: SVGAnimatedString; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -13226,9 +14261,9 @@ declare var SVGFEOffsetElement: { } interface SVGFEPointLightElement extends SVGElement { - x: SVGAnimatedNumber; - y: SVGAnimatedNumber; - z: SVGAnimatedNumber; + readonly x: SVGAnimatedNumber; + readonly y: SVGAnimatedNumber; + readonly z: SVGAnimatedNumber; } declare var SVGFEPointLightElement: { @@ -13237,12 +14272,12 @@ declare var SVGFEPointLightElement: { } interface SVGFESpecularLightingElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - in1: SVGAnimatedString; - kernelUnitLengthX: SVGAnimatedNumber; - kernelUnitLengthY: SVGAnimatedNumber; - specularConstant: SVGAnimatedNumber; - specularExponent: SVGAnimatedNumber; - surfaceScale: SVGAnimatedNumber; + readonly in1: SVGAnimatedString; + readonly kernelUnitLengthX: SVGAnimatedNumber; + readonly kernelUnitLengthY: SVGAnimatedNumber; + readonly specularConstant: SVGAnimatedNumber; + readonly specularExponent: SVGAnimatedNumber; + readonly surfaceScale: SVGAnimatedNumber; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -13252,14 +14287,14 @@ declare var SVGFESpecularLightingElement: { } interface SVGFESpotLightElement extends SVGElement { - limitingConeAngle: SVGAnimatedNumber; - pointsAtX: SVGAnimatedNumber; - pointsAtY: SVGAnimatedNumber; - pointsAtZ: SVGAnimatedNumber; - specularExponent: SVGAnimatedNumber; - x: SVGAnimatedNumber; - y: SVGAnimatedNumber; - z: SVGAnimatedNumber; + readonly limitingConeAngle: SVGAnimatedNumber; + readonly pointsAtX: SVGAnimatedNumber; + readonly pointsAtY: SVGAnimatedNumber; + readonly pointsAtZ: SVGAnimatedNumber; + readonly specularExponent: SVGAnimatedNumber; + readonly x: SVGAnimatedNumber; + readonly y: SVGAnimatedNumber; + readonly z: SVGAnimatedNumber; } declare var SVGFESpotLightElement: { @@ -13268,7 +14303,7 @@ declare var SVGFESpotLightElement: { } interface SVGFETileElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - in1: SVGAnimatedString; + readonly in1: SVGAnimatedString; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -13278,41 +14313,41 @@ declare var SVGFETileElement: { } interface SVGFETurbulenceElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - baseFrequencyX: SVGAnimatedNumber; - baseFrequencyY: SVGAnimatedNumber; - numOctaves: SVGAnimatedInteger; - seed: SVGAnimatedNumber; - stitchTiles: SVGAnimatedEnumeration; - type: SVGAnimatedEnumeration; - SVG_STITCHTYPE_NOSTITCH: number; - SVG_STITCHTYPE_STITCH: number; - SVG_STITCHTYPE_UNKNOWN: number; - SVG_TURBULENCE_TYPE_FRACTALNOISE: number; - SVG_TURBULENCE_TYPE_TURBULENCE: number; - SVG_TURBULENCE_TYPE_UNKNOWN: number; + readonly baseFrequencyX: SVGAnimatedNumber; + readonly baseFrequencyY: SVGAnimatedNumber; + readonly numOctaves: SVGAnimatedInteger; + readonly seed: SVGAnimatedNumber; + readonly stitchTiles: SVGAnimatedEnumeration; + readonly type: SVGAnimatedEnumeration; + readonly SVG_STITCHTYPE_NOSTITCH: number; + readonly SVG_STITCHTYPE_STITCH: number; + readonly SVG_STITCHTYPE_UNKNOWN: number; + readonly SVG_TURBULENCE_TYPE_FRACTALNOISE: number; + readonly SVG_TURBULENCE_TYPE_TURBULENCE: number; + readonly SVG_TURBULENCE_TYPE_UNKNOWN: number; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var SVGFETurbulenceElement: { prototype: SVGFETurbulenceElement; new(): SVGFETurbulenceElement; - SVG_STITCHTYPE_NOSTITCH: number; - SVG_STITCHTYPE_STITCH: number; - SVG_STITCHTYPE_UNKNOWN: number; - SVG_TURBULENCE_TYPE_FRACTALNOISE: number; - SVG_TURBULENCE_TYPE_TURBULENCE: number; - SVG_TURBULENCE_TYPE_UNKNOWN: number; + readonly SVG_STITCHTYPE_NOSTITCH: number; + readonly SVG_STITCHTYPE_STITCH: number; + readonly SVG_STITCHTYPE_UNKNOWN: number; + readonly SVG_TURBULENCE_TYPE_FRACTALNOISE: number; + readonly SVG_TURBULENCE_TYPE_TURBULENCE: number; + readonly SVG_TURBULENCE_TYPE_UNKNOWN: number; } interface SVGFilterElement extends SVGElement, SVGUnitTypes, SVGStylable, SVGLangSpace, SVGURIReference, SVGExternalResourcesRequired { - filterResX: SVGAnimatedInteger; - filterResY: SVGAnimatedInteger; - filterUnits: SVGAnimatedEnumeration; - height: SVGAnimatedLength; - primitiveUnits: SVGAnimatedEnumeration; - width: SVGAnimatedLength; - x: SVGAnimatedLength; - y: SVGAnimatedLength; + readonly filterResX: SVGAnimatedInteger; + readonly filterResY: SVGAnimatedInteger; + readonly filterUnits: SVGAnimatedEnumeration; + readonly height: SVGAnimatedLength; + readonly primitiveUnits: SVGAnimatedEnumeration; + readonly width: SVGAnimatedLength; + readonly x: SVGAnimatedLength; + readonly y: SVGAnimatedLength; setFilterRes(filterResX: number, filterResY: number): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -13323,10 +14358,10 @@ declare var SVGFilterElement: { } interface SVGForeignObjectElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired { - height: SVGAnimatedLength; - width: SVGAnimatedLength; - x: SVGAnimatedLength; - y: SVGAnimatedLength; + readonly height: SVGAnimatedLength; + readonly width: SVGAnimatedLength; + readonly x: SVGAnimatedLength; + readonly y: SVGAnimatedLength; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -13345,31 +14380,31 @@ declare var SVGGElement: { } interface SVGGradientElement extends SVGElement, SVGStylable, SVGExternalResourcesRequired, SVGURIReference, SVGUnitTypes { - gradientTransform: SVGAnimatedTransformList; - gradientUnits: SVGAnimatedEnumeration; - spreadMethod: SVGAnimatedEnumeration; - SVG_SPREADMETHOD_PAD: number; - SVG_SPREADMETHOD_REFLECT: number; - SVG_SPREADMETHOD_REPEAT: number; - SVG_SPREADMETHOD_UNKNOWN: number; + readonly gradientTransform: SVGAnimatedTransformList; + readonly gradientUnits: SVGAnimatedEnumeration; + readonly spreadMethod: SVGAnimatedEnumeration; + readonly SVG_SPREADMETHOD_PAD: number; + readonly SVG_SPREADMETHOD_REFLECT: number; + readonly SVG_SPREADMETHOD_REPEAT: number; + readonly SVG_SPREADMETHOD_UNKNOWN: number; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var SVGGradientElement: { prototype: SVGGradientElement; new(): SVGGradientElement; - SVG_SPREADMETHOD_PAD: number; - SVG_SPREADMETHOD_REFLECT: number; - SVG_SPREADMETHOD_REPEAT: number; - SVG_SPREADMETHOD_UNKNOWN: number; + readonly SVG_SPREADMETHOD_PAD: number; + readonly SVG_SPREADMETHOD_REFLECT: number; + readonly SVG_SPREADMETHOD_REPEAT: number; + readonly SVG_SPREADMETHOD_UNKNOWN: number; } interface SVGImageElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired, SVGURIReference { - height: SVGAnimatedLength; - preserveAspectRatio: SVGAnimatedPreserveAspectRatio; - width: SVGAnimatedLength; - x: SVGAnimatedLength; - y: SVGAnimatedLength; + readonly height: SVGAnimatedLength; + readonly preserveAspectRatio: SVGAnimatedPreserveAspectRatio; + readonly width: SVGAnimatedLength; + readonly x: SVGAnimatedLength; + readonly y: SVGAnimatedLength; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -13379,43 +14414,43 @@ declare var SVGImageElement: { } interface SVGLength { - unitType: number; + readonly unitType: number; value: number; valueAsString: string; valueInSpecifiedUnits: number; convertToSpecifiedUnits(unitType: number): void; newValueSpecifiedUnits(unitType: number, valueInSpecifiedUnits: number): void; - SVG_LENGTHTYPE_CM: number; - SVG_LENGTHTYPE_EMS: number; - SVG_LENGTHTYPE_EXS: number; - SVG_LENGTHTYPE_IN: number; - SVG_LENGTHTYPE_MM: number; - SVG_LENGTHTYPE_NUMBER: number; - SVG_LENGTHTYPE_PC: number; - SVG_LENGTHTYPE_PERCENTAGE: number; - SVG_LENGTHTYPE_PT: number; - SVG_LENGTHTYPE_PX: number; - SVG_LENGTHTYPE_UNKNOWN: number; + readonly SVG_LENGTHTYPE_CM: number; + readonly SVG_LENGTHTYPE_EMS: number; + readonly SVG_LENGTHTYPE_EXS: number; + readonly SVG_LENGTHTYPE_IN: number; + readonly SVG_LENGTHTYPE_MM: number; + readonly SVG_LENGTHTYPE_NUMBER: number; + readonly SVG_LENGTHTYPE_PC: number; + readonly SVG_LENGTHTYPE_PERCENTAGE: number; + readonly SVG_LENGTHTYPE_PT: number; + readonly SVG_LENGTHTYPE_PX: number; + readonly SVG_LENGTHTYPE_UNKNOWN: number; } declare var SVGLength: { prototype: SVGLength; new(): SVGLength; - SVG_LENGTHTYPE_CM: number; - SVG_LENGTHTYPE_EMS: number; - SVG_LENGTHTYPE_EXS: number; - SVG_LENGTHTYPE_IN: number; - SVG_LENGTHTYPE_MM: number; - SVG_LENGTHTYPE_NUMBER: number; - SVG_LENGTHTYPE_PC: number; - SVG_LENGTHTYPE_PERCENTAGE: number; - SVG_LENGTHTYPE_PT: number; - SVG_LENGTHTYPE_PX: number; - SVG_LENGTHTYPE_UNKNOWN: number; + readonly SVG_LENGTHTYPE_CM: number; + readonly SVG_LENGTHTYPE_EMS: number; + readonly SVG_LENGTHTYPE_EXS: number; + readonly SVG_LENGTHTYPE_IN: number; + readonly SVG_LENGTHTYPE_MM: number; + readonly SVG_LENGTHTYPE_NUMBER: number; + readonly SVG_LENGTHTYPE_PC: number; + readonly SVG_LENGTHTYPE_PERCENTAGE: number; + readonly SVG_LENGTHTYPE_PT: number; + readonly SVG_LENGTHTYPE_PX: number; + readonly SVG_LENGTHTYPE_UNKNOWN: number; } interface SVGLengthList { - numberOfItems: number; + readonly numberOfItems: number; appendItem(newItem: SVGLength): SVGLength; clear(): void; getItem(index: number): SVGLength; @@ -13431,10 +14466,10 @@ declare var SVGLengthList: { } interface SVGLineElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired { - x1: SVGAnimatedLength; - x2: SVGAnimatedLength; - y1: SVGAnimatedLength; - y2: SVGAnimatedLength; + readonly x1: SVGAnimatedLength; + readonly x2: SVGAnimatedLength; + readonly y1: SVGAnimatedLength; + readonly y2: SVGAnimatedLength; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -13444,10 +14479,10 @@ declare var SVGLineElement: { } interface SVGLinearGradientElement extends SVGGradientElement { - x1: SVGAnimatedLength; - x2: SVGAnimatedLength; - y1: SVGAnimatedLength; - y2: SVGAnimatedLength; + readonly x1: SVGAnimatedLength; + readonly x2: SVGAnimatedLength; + readonly y1: SVGAnimatedLength; + readonly y2: SVGAnimatedLength; } declare var SVGLinearGradientElement: { @@ -13456,42 +14491,42 @@ declare var SVGLinearGradientElement: { } interface SVGMarkerElement extends SVGElement, SVGStylable, SVGLangSpace, SVGExternalResourcesRequired, SVGFitToViewBox { - markerHeight: SVGAnimatedLength; - markerUnits: SVGAnimatedEnumeration; - markerWidth: SVGAnimatedLength; - orientAngle: SVGAnimatedAngle; - orientType: SVGAnimatedEnumeration; - refX: SVGAnimatedLength; - refY: SVGAnimatedLength; + readonly markerHeight: SVGAnimatedLength; + readonly markerUnits: SVGAnimatedEnumeration; + readonly markerWidth: SVGAnimatedLength; + readonly orientAngle: SVGAnimatedAngle; + readonly orientType: SVGAnimatedEnumeration; + readonly refX: SVGAnimatedLength; + readonly refY: SVGAnimatedLength; setOrientToAngle(angle: SVGAngle): void; setOrientToAuto(): void; - SVG_MARKERUNITS_STROKEWIDTH: number; - SVG_MARKERUNITS_UNKNOWN: number; - SVG_MARKERUNITS_USERSPACEONUSE: number; - SVG_MARKER_ORIENT_ANGLE: number; - SVG_MARKER_ORIENT_AUTO: number; - SVG_MARKER_ORIENT_UNKNOWN: number; + readonly SVG_MARKERUNITS_STROKEWIDTH: number; + readonly SVG_MARKERUNITS_UNKNOWN: number; + readonly SVG_MARKERUNITS_USERSPACEONUSE: number; + readonly SVG_MARKER_ORIENT_ANGLE: number; + readonly SVG_MARKER_ORIENT_AUTO: number; + readonly SVG_MARKER_ORIENT_UNKNOWN: number; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var SVGMarkerElement: { prototype: SVGMarkerElement; new(): SVGMarkerElement; - SVG_MARKERUNITS_STROKEWIDTH: number; - SVG_MARKERUNITS_UNKNOWN: number; - SVG_MARKERUNITS_USERSPACEONUSE: number; - SVG_MARKER_ORIENT_ANGLE: number; - SVG_MARKER_ORIENT_AUTO: number; - SVG_MARKER_ORIENT_UNKNOWN: number; + readonly SVG_MARKERUNITS_STROKEWIDTH: number; + readonly SVG_MARKERUNITS_UNKNOWN: number; + readonly SVG_MARKERUNITS_USERSPACEONUSE: number; + readonly SVG_MARKER_ORIENT_ANGLE: number; + readonly SVG_MARKER_ORIENT_AUTO: number; + readonly SVG_MARKER_ORIENT_UNKNOWN: number; } interface SVGMaskElement extends SVGElement, SVGStylable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired, SVGUnitTypes { - height: SVGAnimatedLength; - maskContentUnits: SVGAnimatedEnumeration; - maskUnits: SVGAnimatedEnumeration; - width: SVGAnimatedLength; - x: SVGAnimatedLength; - y: SVGAnimatedLength; + readonly height: SVGAnimatedLength; + readonly maskContentUnits: SVGAnimatedEnumeration; + readonly maskUnits: SVGAnimatedEnumeration; + readonly width: SVGAnimatedLength; + readonly x: SVGAnimatedLength; + readonly y: SVGAnimatedLength; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -13543,7 +14578,7 @@ declare var SVGNumber: { } interface SVGNumberList { - numberOfItems: number; + readonly numberOfItems: number; appendItem(newItem: SVGNumber): SVGNumber; clear(): void; getItem(index: number): SVGNumber; @@ -13590,53 +14625,53 @@ declare var SVGPathElement: { } interface SVGPathSeg { - pathSegType: number; - pathSegTypeAsLetter: string; - PATHSEG_ARC_ABS: number; - PATHSEG_ARC_REL: number; - PATHSEG_CLOSEPATH: number; - PATHSEG_CURVETO_CUBIC_ABS: number; - PATHSEG_CURVETO_CUBIC_REL: number; - PATHSEG_CURVETO_CUBIC_SMOOTH_ABS: number; - PATHSEG_CURVETO_CUBIC_SMOOTH_REL: number; - PATHSEG_CURVETO_QUADRATIC_ABS: number; - PATHSEG_CURVETO_QUADRATIC_REL: number; - PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS: number; - PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL: number; - PATHSEG_LINETO_ABS: number; - PATHSEG_LINETO_HORIZONTAL_ABS: number; - PATHSEG_LINETO_HORIZONTAL_REL: number; - PATHSEG_LINETO_REL: number; - PATHSEG_LINETO_VERTICAL_ABS: number; - PATHSEG_LINETO_VERTICAL_REL: number; - PATHSEG_MOVETO_ABS: number; - PATHSEG_MOVETO_REL: number; - PATHSEG_UNKNOWN: number; + readonly pathSegType: number; + readonly pathSegTypeAsLetter: string; + readonly PATHSEG_ARC_ABS: number; + readonly PATHSEG_ARC_REL: number; + readonly PATHSEG_CLOSEPATH: number; + readonly PATHSEG_CURVETO_CUBIC_ABS: number; + readonly PATHSEG_CURVETO_CUBIC_REL: number; + readonly PATHSEG_CURVETO_CUBIC_SMOOTH_ABS: number; + readonly PATHSEG_CURVETO_CUBIC_SMOOTH_REL: number; + readonly PATHSEG_CURVETO_QUADRATIC_ABS: number; + readonly PATHSEG_CURVETO_QUADRATIC_REL: number; + readonly PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS: number; + readonly PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL: number; + readonly PATHSEG_LINETO_ABS: number; + readonly PATHSEG_LINETO_HORIZONTAL_ABS: number; + readonly PATHSEG_LINETO_HORIZONTAL_REL: number; + readonly PATHSEG_LINETO_REL: number; + readonly PATHSEG_LINETO_VERTICAL_ABS: number; + readonly PATHSEG_LINETO_VERTICAL_REL: number; + readonly PATHSEG_MOVETO_ABS: number; + readonly PATHSEG_MOVETO_REL: number; + readonly PATHSEG_UNKNOWN: number; } declare var SVGPathSeg: { prototype: SVGPathSeg; new(): SVGPathSeg; - PATHSEG_ARC_ABS: number; - PATHSEG_ARC_REL: number; - PATHSEG_CLOSEPATH: number; - PATHSEG_CURVETO_CUBIC_ABS: number; - PATHSEG_CURVETO_CUBIC_REL: number; - PATHSEG_CURVETO_CUBIC_SMOOTH_ABS: number; - PATHSEG_CURVETO_CUBIC_SMOOTH_REL: number; - PATHSEG_CURVETO_QUADRATIC_ABS: number; - PATHSEG_CURVETO_QUADRATIC_REL: number; - PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS: number; - PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL: number; - PATHSEG_LINETO_ABS: number; - PATHSEG_LINETO_HORIZONTAL_ABS: number; - PATHSEG_LINETO_HORIZONTAL_REL: number; - PATHSEG_LINETO_REL: number; - PATHSEG_LINETO_VERTICAL_ABS: number; - PATHSEG_LINETO_VERTICAL_REL: number; - PATHSEG_MOVETO_ABS: number; - PATHSEG_MOVETO_REL: number; - PATHSEG_UNKNOWN: number; + readonly PATHSEG_ARC_ABS: number; + readonly PATHSEG_ARC_REL: number; + readonly PATHSEG_CLOSEPATH: number; + readonly PATHSEG_CURVETO_CUBIC_ABS: number; + readonly PATHSEG_CURVETO_CUBIC_REL: number; + readonly PATHSEG_CURVETO_CUBIC_SMOOTH_ABS: number; + readonly PATHSEG_CURVETO_CUBIC_SMOOTH_REL: number; + readonly PATHSEG_CURVETO_QUADRATIC_ABS: number; + readonly PATHSEG_CURVETO_QUADRATIC_REL: number; + readonly PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS: number; + readonly PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL: number; + readonly PATHSEG_LINETO_ABS: number; + readonly PATHSEG_LINETO_HORIZONTAL_ABS: number; + readonly PATHSEG_LINETO_HORIZONTAL_REL: number; + readonly PATHSEG_LINETO_REL: number; + readonly PATHSEG_LINETO_VERTICAL_ABS: number; + readonly PATHSEG_LINETO_VERTICAL_REL: number; + readonly PATHSEG_MOVETO_ABS: number; + readonly PATHSEG_MOVETO_REL: number; + readonly PATHSEG_UNKNOWN: number; } interface SVGPathSegArcAbs extends SVGPathSeg { @@ -13830,7 +14865,7 @@ declare var SVGPathSegLinetoVerticalRel: { } interface SVGPathSegList { - numberOfItems: number; + readonly numberOfItems: number; appendItem(newItem: SVGPathSeg): SVGPathSeg; clear(): void; getItem(index: number): SVGPathSeg; @@ -13866,13 +14901,13 @@ declare var SVGPathSegMovetoRel: { } interface SVGPatternElement extends SVGElement, SVGStylable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired, SVGFitToViewBox, SVGURIReference, SVGUnitTypes { - height: SVGAnimatedLength; - patternContentUnits: SVGAnimatedEnumeration; - patternTransform: SVGAnimatedTransformList; - patternUnits: SVGAnimatedEnumeration; - width: SVGAnimatedLength; - x: SVGAnimatedLength; - y: SVGAnimatedLength; + readonly height: SVGAnimatedLength; + readonly patternContentUnits: SVGAnimatedEnumeration; + readonly patternTransform: SVGAnimatedTransformList; + readonly patternUnits: SVGAnimatedEnumeration; + readonly width: SVGAnimatedLength; + readonly x: SVGAnimatedLength; + readonly y: SVGAnimatedLength; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -13893,7 +14928,7 @@ declare var SVGPoint: { } interface SVGPointList { - numberOfItems: number; + readonly numberOfItems: number; appendItem(newItem: SVGPoint): SVGPoint; clear(): void; getItem(index: number): SVGPoint; @@ -13929,47 +14964,47 @@ declare var SVGPolylineElement: { interface SVGPreserveAspectRatio { align: number; meetOrSlice: number; - SVG_MEETORSLICE_MEET: number; - SVG_MEETORSLICE_SLICE: number; - SVG_MEETORSLICE_UNKNOWN: number; - SVG_PRESERVEASPECTRATIO_NONE: number; - SVG_PRESERVEASPECTRATIO_UNKNOWN: number; - SVG_PRESERVEASPECTRATIO_XMAXYMAX: number; - SVG_PRESERVEASPECTRATIO_XMAXYMID: number; - SVG_PRESERVEASPECTRATIO_XMAXYMIN: number; - SVG_PRESERVEASPECTRATIO_XMIDYMAX: number; - SVG_PRESERVEASPECTRATIO_XMIDYMID: number; - SVG_PRESERVEASPECTRATIO_XMIDYMIN: number; - SVG_PRESERVEASPECTRATIO_XMINYMAX: number; - SVG_PRESERVEASPECTRATIO_XMINYMID: number; - SVG_PRESERVEASPECTRATIO_XMINYMIN: number; + readonly SVG_MEETORSLICE_MEET: number; + readonly SVG_MEETORSLICE_SLICE: number; + readonly SVG_MEETORSLICE_UNKNOWN: number; + readonly SVG_PRESERVEASPECTRATIO_NONE: number; + readonly SVG_PRESERVEASPECTRATIO_UNKNOWN: number; + readonly SVG_PRESERVEASPECTRATIO_XMAXYMAX: number; + readonly SVG_PRESERVEASPECTRATIO_XMAXYMID: number; + readonly SVG_PRESERVEASPECTRATIO_XMAXYMIN: number; + readonly SVG_PRESERVEASPECTRATIO_XMIDYMAX: number; + readonly SVG_PRESERVEASPECTRATIO_XMIDYMID: number; + readonly SVG_PRESERVEASPECTRATIO_XMIDYMIN: number; + readonly SVG_PRESERVEASPECTRATIO_XMINYMAX: number; + readonly SVG_PRESERVEASPECTRATIO_XMINYMID: number; + readonly SVG_PRESERVEASPECTRATIO_XMINYMIN: number; } declare var SVGPreserveAspectRatio: { prototype: SVGPreserveAspectRatio; new(): SVGPreserveAspectRatio; - SVG_MEETORSLICE_MEET: number; - SVG_MEETORSLICE_SLICE: number; - SVG_MEETORSLICE_UNKNOWN: number; - SVG_PRESERVEASPECTRATIO_NONE: number; - SVG_PRESERVEASPECTRATIO_UNKNOWN: number; - SVG_PRESERVEASPECTRATIO_XMAXYMAX: number; - SVG_PRESERVEASPECTRATIO_XMAXYMID: number; - SVG_PRESERVEASPECTRATIO_XMAXYMIN: number; - SVG_PRESERVEASPECTRATIO_XMIDYMAX: number; - SVG_PRESERVEASPECTRATIO_XMIDYMID: number; - SVG_PRESERVEASPECTRATIO_XMIDYMIN: number; - SVG_PRESERVEASPECTRATIO_XMINYMAX: number; - SVG_PRESERVEASPECTRATIO_XMINYMID: number; - SVG_PRESERVEASPECTRATIO_XMINYMIN: number; + readonly SVG_MEETORSLICE_MEET: number; + readonly SVG_MEETORSLICE_SLICE: number; + readonly SVG_MEETORSLICE_UNKNOWN: number; + readonly SVG_PRESERVEASPECTRATIO_NONE: number; + readonly SVG_PRESERVEASPECTRATIO_UNKNOWN: number; + readonly SVG_PRESERVEASPECTRATIO_XMAXYMAX: number; + readonly SVG_PRESERVEASPECTRATIO_XMAXYMID: number; + readonly SVG_PRESERVEASPECTRATIO_XMAXYMIN: number; + readonly SVG_PRESERVEASPECTRATIO_XMIDYMAX: number; + readonly SVG_PRESERVEASPECTRATIO_XMIDYMID: number; + readonly SVG_PRESERVEASPECTRATIO_XMIDYMIN: number; + readonly SVG_PRESERVEASPECTRATIO_XMINYMAX: number; + readonly SVG_PRESERVEASPECTRATIO_XMINYMID: number; + readonly SVG_PRESERVEASPECTRATIO_XMINYMIN: number; } interface SVGRadialGradientElement extends SVGGradientElement { - cx: SVGAnimatedLength; - cy: SVGAnimatedLength; - fx: SVGAnimatedLength; - fy: SVGAnimatedLength; - r: SVGAnimatedLength; + readonly cx: SVGAnimatedLength; + readonly cy: SVGAnimatedLength; + readonly fx: SVGAnimatedLength; + readonly fy: SVGAnimatedLength; + readonly r: SVGAnimatedLength; } declare var SVGRadialGradientElement: { @@ -13990,12 +15025,12 @@ declare var SVGRect: { } interface SVGRectElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired { - height: SVGAnimatedLength; - rx: SVGAnimatedLength; - ry: SVGAnimatedLength; - width: SVGAnimatedLength; - x: SVGAnimatedLength; - y: SVGAnimatedLength; + readonly height: SVGAnimatedLength; + readonly rx: SVGAnimatedLength; + readonly ry: SVGAnimatedLength; + readonly width: SVGAnimatedLength; + readonly x: SVGAnimatedLength; + readonly y: SVGAnimatedLength; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -14008,22 +15043,22 @@ interface SVGSVGElement extends SVGElement, DocumentEvent, SVGLocatable, SVGTest contentScriptType: string; contentStyleType: string; currentScale: number; - currentTranslate: SVGPoint; - height: SVGAnimatedLength; + readonly currentTranslate: SVGPoint; + readonly height: SVGAnimatedLength; onabort: (ev: Event) => any; onerror: (ev: Event) => any; onresize: (ev: UIEvent) => any; onscroll: (ev: UIEvent) => any; onunload: (ev: Event) => any; onzoom: (ev: SVGZoomEvent) => any; - pixelUnitToMillimeterX: number; - pixelUnitToMillimeterY: number; - screenPixelToMillimeterX: number; - screenPixelToMillimeterY: number; - viewport: SVGRect; - width: SVGAnimatedLength; - x: SVGAnimatedLength; - y: SVGAnimatedLength; + readonly pixelUnitToMillimeterX: number; + readonly pixelUnitToMillimeterY: number; + readonly screenPixelToMillimeterX: number; + readonly screenPixelToMillimeterY: number; + readonly viewport: SVGRect; + readonly width: SVGAnimatedLength; + readonly x: SVGAnimatedLength; + readonly y: SVGAnimatedLength; checkEnclosure(element: SVGElement, rect: SVGRect): boolean; checkIntersection(element: SVGElement, rect: SVGRect): boolean; createSVGAngle(): SVGAngle; @@ -14039,8 +15074,8 @@ interface SVGSVGElement extends SVGElement, DocumentEvent, SVGLocatable, SVGTest getComputedStyle(elt: Element, pseudoElt?: string): CSSStyleDeclaration; getCurrentTime(): number; getElementById(elementId: string): Element; - getEnclosureList(rect: SVGRect, referenceElement: SVGElement): NodeList; - getIntersectionList(rect: SVGRect, referenceElement: SVGElement): NodeList; + getEnclosureList(rect: SVGRect, referenceElement: SVGElement): NodeListOf; + getIntersectionList(rect: SVGRect, referenceElement: SVGElement): NodeListOf; pauseAnimations(): void; setCurrentTime(seconds: number): void; suspendRedraw(maxWaitMilliseconds: number): number; @@ -14118,7 +15153,7 @@ declare var SVGScriptElement: { } interface SVGStopElement extends SVGElement, SVGStylable { - offset: SVGAnimatedNumber; + readonly offset: SVGAnimatedNumber; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -14128,7 +15163,7 @@ declare var SVGStopElement: { } interface SVGStringList { - numberOfItems: number; + readonly numberOfItems: number; appendItem(newItem: string): string; clear(): void; getItem(index: number): string; @@ -14144,6 +15179,7 @@ declare var SVGStringList: { } interface SVGStyleElement extends SVGElement, SVGLangSpace { + disabled: boolean; media: string; title: string; type: string; @@ -14182,8 +15218,8 @@ declare var SVGTSpanElement: { } interface SVGTextContentElement extends SVGElement, SVGStylable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired { - lengthAdjust: SVGAnimatedEnumeration; - textLength: SVGAnimatedLength; + readonly lengthAdjust: SVGAnimatedEnumeration; + readonly textLength: SVGAnimatedLength; getCharNumAtPosition(point: SVGPoint): number; getComputedTextLength(): number; getEndPositionOfChar(charnum: number): SVGPoint; @@ -14193,18 +15229,18 @@ interface SVGTextContentElement extends SVGElement, SVGStylable, SVGTests, SVGLa getStartPositionOfChar(charnum: number): SVGPoint; getSubStringLength(charnum: number, nchars: number): number; selectSubString(charnum: number, nchars: number): void; - LENGTHADJUST_SPACING: number; - LENGTHADJUST_SPACINGANDGLYPHS: number; - LENGTHADJUST_UNKNOWN: number; + readonly LENGTHADJUST_SPACING: number; + readonly LENGTHADJUST_SPACINGANDGLYPHS: number; + readonly LENGTHADJUST_UNKNOWN: number; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var SVGTextContentElement: { prototype: SVGTextContentElement; new(): SVGTextContentElement; - LENGTHADJUST_SPACING: number; - LENGTHADJUST_SPACINGANDGLYPHS: number; - LENGTHADJUST_UNKNOWN: number; + readonly LENGTHADJUST_SPACING: number; + readonly LENGTHADJUST_SPACINGANDGLYPHS: number; + readonly LENGTHADJUST_UNKNOWN: number; } interface SVGTextElement extends SVGTextPositioningElement, SVGTransformable { @@ -14217,35 +15253,35 @@ declare var SVGTextElement: { } interface SVGTextPathElement extends SVGTextContentElement, SVGURIReference { - method: SVGAnimatedEnumeration; - spacing: SVGAnimatedEnumeration; - startOffset: SVGAnimatedLength; - TEXTPATH_METHODTYPE_ALIGN: number; - TEXTPATH_METHODTYPE_STRETCH: number; - TEXTPATH_METHODTYPE_UNKNOWN: number; - TEXTPATH_SPACINGTYPE_AUTO: number; - TEXTPATH_SPACINGTYPE_EXACT: number; - TEXTPATH_SPACINGTYPE_UNKNOWN: number; + readonly method: SVGAnimatedEnumeration; + readonly spacing: SVGAnimatedEnumeration; + readonly startOffset: SVGAnimatedLength; + readonly TEXTPATH_METHODTYPE_ALIGN: number; + readonly TEXTPATH_METHODTYPE_STRETCH: number; + readonly TEXTPATH_METHODTYPE_UNKNOWN: number; + readonly TEXTPATH_SPACINGTYPE_AUTO: number; + readonly TEXTPATH_SPACINGTYPE_EXACT: number; + readonly TEXTPATH_SPACINGTYPE_UNKNOWN: number; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var SVGTextPathElement: { prototype: SVGTextPathElement; new(): SVGTextPathElement; - TEXTPATH_METHODTYPE_ALIGN: number; - TEXTPATH_METHODTYPE_STRETCH: number; - TEXTPATH_METHODTYPE_UNKNOWN: number; - TEXTPATH_SPACINGTYPE_AUTO: number; - TEXTPATH_SPACINGTYPE_EXACT: number; - TEXTPATH_SPACINGTYPE_UNKNOWN: number; + readonly TEXTPATH_METHODTYPE_ALIGN: number; + readonly TEXTPATH_METHODTYPE_STRETCH: number; + readonly TEXTPATH_METHODTYPE_UNKNOWN: number; + readonly TEXTPATH_SPACINGTYPE_AUTO: number; + readonly TEXTPATH_SPACINGTYPE_EXACT: number; + readonly TEXTPATH_SPACINGTYPE_UNKNOWN: number; } interface SVGTextPositioningElement extends SVGTextContentElement { - dx: SVGAnimatedLengthList; - dy: SVGAnimatedLengthList; - rotate: SVGAnimatedNumberList; - x: SVGAnimatedLengthList; - y: SVGAnimatedLengthList; + readonly dx: SVGAnimatedLengthList; + readonly dy: SVGAnimatedLengthList; + readonly rotate: SVGAnimatedNumberList; + readonly x: SVGAnimatedLengthList; + readonly y: SVGAnimatedLengthList; } declare var SVGTextPositioningElement: { @@ -14263,38 +15299,38 @@ declare var SVGTitleElement: { } interface SVGTransform { - angle: number; - matrix: SVGMatrix; - type: number; + readonly angle: number; + readonly matrix: SVGMatrix; + readonly type: number; setMatrix(matrix: SVGMatrix): void; setRotate(angle: number, cx: number, cy: number): void; setScale(sx: number, sy: number): void; setSkewX(angle: number): void; setSkewY(angle: number): void; setTranslate(tx: number, ty: number): void; - SVG_TRANSFORM_MATRIX: number; - SVG_TRANSFORM_ROTATE: number; - SVG_TRANSFORM_SCALE: number; - SVG_TRANSFORM_SKEWX: number; - SVG_TRANSFORM_SKEWY: number; - SVG_TRANSFORM_TRANSLATE: number; - SVG_TRANSFORM_UNKNOWN: number; + readonly SVG_TRANSFORM_MATRIX: number; + readonly SVG_TRANSFORM_ROTATE: number; + readonly SVG_TRANSFORM_SCALE: number; + readonly SVG_TRANSFORM_SKEWX: number; + readonly SVG_TRANSFORM_SKEWY: number; + readonly SVG_TRANSFORM_TRANSLATE: number; + readonly SVG_TRANSFORM_UNKNOWN: number; } declare var SVGTransform: { prototype: SVGTransform; new(): SVGTransform; - SVG_TRANSFORM_MATRIX: number; - SVG_TRANSFORM_ROTATE: number; - SVG_TRANSFORM_SCALE: number; - SVG_TRANSFORM_SKEWX: number; - SVG_TRANSFORM_SKEWY: number; - SVG_TRANSFORM_TRANSLATE: number; - SVG_TRANSFORM_UNKNOWN: number; + readonly SVG_TRANSFORM_MATRIX: number; + readonly SVG_TRANSFORM_ROTATE: number; + readonly SVG_TRANSFORM_SCALE: number; + readonly SVG_TRANSFORM_SKEWX: number; + readonly SVG_TRANSFORM_SKEWY: number; + readonly SVG_TRANSFORM_TRANSLATE: number; + readonly SVG_TRANSFORM_UNKNOWN: number; } interface SVGTransformList { - numberOfItems: number; + readonly numberOfItems: number; appendItem(newItem: SVGTransform): SVGTransform; clear(): void; consolidate(): SVGTransform; @@ -14312,19 +15348,19 @@ declare var SVGTransformList: { } interface SVGUnitTypes { - SVG_UNIT_TYPE_OBJECTBOUNDINGBOX: number; - SVG_UNIT_TYPE_UNKNOWN: number; - SVG_UNIT_TYPE_USERSPACEONUSE: number; + readonly SVG_UNIT_TYPE_OBJECTBOUNDINGBOX: number; + readonly SVG_UNIT_TYPE_UNKNOWN: number; + readonly SVG_UNIT_TYPE_USERSPACEONUSE: number; } declare var SVGUnitTypes: SVGUnitTypes; interface SVGUseElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired, SVGURIReference { - animatedInstanceRoot: SVGElementInstance; - height: SVGAnimatedLength; - instanceRoot: SVGElementInstance; - width: SVGAnimatedLength; - x: SVGAnimatedLength; - y: SVGAnimatedLength; + readonly animatedInstanceRoot: SVGElementInstance; + readonly height: SVGAnimatedLength; + readonly instanceRoot: SVGElementInstance; + readonly width: SVGAnimatedLength; + readonly x: SVGAnimatedLength; + readonly y: SVGAnimatedLength; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -14334,7 +15370,7 @@ declare var SVGUseElement: { } interface SVGViewElement extends SVGElement, SVGExternalResourcesRequired, SVGFitToViewBox, SVGZoomAndPan { - viewTarget: SVGStringList; + readonly viewTarget: SVGStringList; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -14344,21 +15380,21 @@ declare var SVGViewElement: { } interface SVGZoomAndPan { - zoomAndPan: number; + readonly zoomAndPan: number; } declare var SVGZoomAndPan: { - SVG_ZOOMANDPAN_DISABLE: number; - SVG_ZOOMANDPAN_MAGNIFY: number; - SVG_ZOOMANDPAN_UNKNOWN: number; + readonly SVG_ZOOMANDPAN_DISABLE: number; + readonly SVG_ZOOMANDPAN_MAGNIFY: number; + readonly SVG_ZOOMANDPAN_UNKNOWN: number; } interface SVGZoomEvent extends UIEvent { - newScale: number; - newTranslate: SVGPoint; - previousScale: number; - previousTranslate: SVGPoint; - zoomRectScreen: SVGRect; + readonly newScale: number; + readonly newTranslate: SVGPoint; + readonly previousScale: number; + readonly previousTranslate: SVGPoint; + readonly zoomRectScreen: SVGRect; } declare var SVGZoomEvent: { @@ -14367,22 +15403,22 @@ declare var SVGZoomEvent: { } interface Screen extends EventTarget { - availHeight: number; - availWidth: number; + readonly availHeight: number; + readonly availWidth: number; bufferDepth: number; - colorDepth: number; - deviceXDPI: number; - deviceYDPI: number; - fontSmoothingEnabled: boolean; - height: number; - logicalXDPI: number; - logicalYDPI: number; - msOrientation: string; + readonly colorDepth: number; + readonly deviceXDPI: number; + readonly deviceYDPI: number; + readonly fontSmoothingEnabled: boolean; + readonly height: number; + readonly logicalXDPI: number; + readonly logicalYDPI: number; + readonly msOrientation: string; onmsorientationchange: (ev: Event) => any; - pixelDepth: number; - systemXDPI: number; - systemYDPI: number; - width: number; + readonly pixelDepth: number; + readonly systemXDPI: number; + readonly systemYDPI: number; + readonly width: number; msLockOrientation(orientations: string | string[]): boolean; msUnlockOrientation(): void; addEventListener(type: "MSOrientationChange", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -14395,8 +15431,8 @@ declare var Screen: { } interface ScriptNotifyEvent extends Event { - callingUri: string; - value: string; + readonly callingUri: string; + readonly value: string; } declare var ScriptNotifyEvent: { @@ -14405,7 +15441,7 @@ declare var ScriptNotifyEvent: { } interface ScriptProcessorNode extends AudioNode { - bufferSize: number; + readonly bufferSize: number; onaudioprocess: (ev: AudioProcessingEvent) => any; addEventListener(type: "audioprocess", listener: (ev: AudioProcessingEvent) => any, useCapture?: boolean): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; @@ -14417,13 +15453,13 @@ declare var ScriptProcessorNode: { } interface Selection { - anchorNode: Node; - anchorOffset: number; - focusNode: Node; - focusOffset: number; - isCollapsed: boolean; - rangeCount: number; - type: string; + readonly anchorNode: Node; + readonly anchorOffset: number; + readonly focusNode: Node; + readonly focusOffset: number; + readonly isCollapsed: boolean; + readonly rangeCount: number; + readonly type: string; addRange(range: Range): void; collapse(parentNode: Node, offset: number): void; collapseToEnd(): void; @@ -14448,12 +15484,12 @@ declare var Selection: { interface SourceBuffer extends EventTarget { appendWindowEnd: number; appendWindowStart: number; - audioTracks: AudioTrackList; - buffered: TimeRanges; + readonly audioTracks: AudioTrackList; + readonly buffered: TimeRanges; mode: string; timestampOffset: number; - updating: boolean; - videoTracks: VideoTrackList; + readonly updating: boolean; + readonly videoTracks: VideoTrackList; abort(): void; appendBuffer(data: ArrayBuffer | ArrayBufferView): void; appendStream(stream: MSStream, maxSize?: number): void; @@ -14466,7 +15502,7 @@ declare var SourceBuffer: { } interface SourceBufferList extends EventTarget { - length: number; + readonly length: number; item(index: number): SourceBuffer; [index: number]: SourceBuffer; } @@ -14477,7 +15513,7 @@ declare var SourceBufferList: { } interface StereoPannerNode extends AudioNode { - pan: AudioParam; + readonly pan: AudioParam; } declare var StereoPannerNode: { @@ -14486,9 +15522,9 @@ declare var StereoPannerNode: { } interface Storage { - length: number; + readonly length: number; clear(): void; - getItem(key: string): any; + getItem(key: string): string; key(index: number): string; removeItem(key: string): void; setItem(key: string, data: string): void; @@ -14502,7 +15538,7 @@ declare var Storage: { } interface StorageEvent extends Event { - url: string; + readonly url: string; key?: string; oldValue?: string; newValue?: string; @@ -14515,7 +15551,7 @@ declare var StorageEvent: { } interface StyleMedia { - type: string; + readonly type: string; matchMedium(mediaquery: string): boolean; } @@ -14526,12 +15562,12 @@ declare var StyleMedia: { interface StyleSheet { disabled: boolean; - href: string; - media: MediaList; - ownerNode: Node; - parentStyleSheet: StyleSheet; - title: string; - type: string; + readonly href: string; + readonly media: MediaList; + readonly ownerNode: Node; + readonly parentStyleSheet: StyleSheet; + readonly title: string; + readonly type: string; } declare var StyleSheet: { @@ -14540,7 +15576,7 @@ declare var StyleSheet: { } interface StyleSheetList { - length: number; + readonly length: number; item(index?: number): StyleSheet; [index: number]: StyleSheet; } @@ -14551,7 +15587,7 @@ declare var StyleSheetList: { } interface StyleSheetPageList { - length: number; + readonly length: number; item(index: number): CSSPageRule; [index: number]: CSSPageRule; } @@ -14562,18 +15598,18 @@ declare var StyleSheetPageList: { } interface SubtleCrypto { - decrypt(algorithm: string | Algorithm, key: CryptoKey, data: ArrayBufferView): any; - deriveBits(algorithm: string | Algorithm, baseKey: CryptoKey, length: number): any; - deriveKey(algorithm: string | Algorithm, baseKey: CryptoKey, derivedKeyType: string | Algorithm, extractable: boolean, keyUsages: string[]): any; - digest(algorithm: string | Algorithm, data: ArrayBufferView): any; - encrypt(algorithm: string | Algorithm, key: CryptoKey, data: ArrayBufferView): any; - exportKey(format: string, key: CryptoKey): any; - generateKey(algorithm: string | Algorithm, extractable: boolean, keyUsages: string[]): any; - importKey(format: string, keyData: ArrayBufferView, algorithm: string | Algorithm, extractable: boolean, keyUsages: string[]): any; - sign(algorithm: string | Algorithm, key: CryptoKey, data: ArrayBufferView): any; - unwrapKey(format: string, wrappedKey: ArrayBufferView, unwrappingKey: CryptoKey, unwrapAlgorithm: string | Algorithm, unwrappedKeyAlgorithm: string | Algorithm, extractable: boolean, keyUsages: string[]): any; - verify(algorithm: string | Algorithm, key: CryptoKey, signature: ArrayBufferView, data: ArrayBufferView): any; - wrapKey(format: string, key: CryptoKey, wrappingKey: CryptoKey, wrapAlgorithm: string | Algorithm): any; + decrypt(algorithm: string | Algorithm, key: CryptoKey, data: ArrayBufferView): PromiseLike; + deriveBits(algorithm: string | Algorithm, baseKey: CryptoKey, length: number): PromiseLike; + deriveKey(algorithm: string | Algorithm, baseKey: CryptoKey, derivedKeyType: string | Algorithm, extractable: boolean, keyUsages: string[]): PromiseLike; + digest(algorithm: string | Algorithm, data: ArrayBufferView): PromiseLike; + encrypt(algorithm: string | Algorithm, key: CryptoKey, data: ArrayBufferView): PromiseLike; + exportKey(format: string, key: CryptoKey): PromiseLike; + generateKey(algorithm: string | Algorithm, extractable: boolean, keyUsages: string[]): PromiseLike; + importKey(format: string, keyData: ArrayBufferView, algorithm: string | Algorithm, extractable: boolean, keyUsages: string[]): PromiseLike; + sign(algorithm: string | Algorithm, key: CryptoKey, data: ArrayBufferView): PromiseLike; + unwrapKey(format: string, wrappedKey: ArrayBufferView, unwrappingKey: CryptoKey, unwrapAlgorithm: string | Algorithm, unwrappedKeyAlgorithm: string | Algorithm, extractable: boolean, keyUsages: string[]): PromiseLike; + verify(algorithm: string | Algorithm, key: CryptoKey, signature: ArrayBufferView, data: ArrayBufferView): PromiseLike; + wrapKey(format: string, key: CryptoKey, wrappingKey: CryptoKey, wrapAlgorithm: string | Algorithm): PromiseLike; } declare var SubtleCrypto: { @@ -14582,8 +15618,7 @@ declare var SubtleCrypto: { } interface Text extends CharacterData { - wholeText: string; - replaceWholeText(content: string): Text; + readonly wholeText: string; splitText(offset: number): Text; } @@ -14593,39 +15628,39 @@ declare var Text: { } interface TextEvent extends UIEvent { - data: string; - inputMethod: number; - locale: string; + readonly data: string; + readonly inputMethod: number; + readonly locale: string; initTextEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, dataArg: string, inputMethod: number, locale: string): void; - DOM_INPUT_METHOD_DROP: number; - DOM_INPUT_METHOD_HANDWRITING: number; - DOM_INPUT_METHOD_IME: number; - DOM_INPUT_METHOD_KEYBOARD: number; - DOM_INPUT_METHOD_MULTIMODAL: number; - DOM_INPUT_METHOD_OPTION: number; - DOM_INPUT_METHOD_PASTE: number; - DOM_INPUT_METHOD_SCRIPT: number; - DOM_INPUT_METHOD_UNKNOWN: number; - DOM_INPUT_METHOD_VOICE: number; + readonly DOM_INPUT_METHOD_DROP: number; + readonly DOM_INPUT_METHOD_HANDWRITING: number; + readonly DOM_INPUT_METHOD_IME: number; + readonly DOM_INPUT_METHOD_KEYBOARD: number; + readonly DOM_INPUT_METHOD_MULTIMODAL: number; + readonly DOM_INPUT_METHOD_OPTION: number; + readonly DOM_INPUT_METHOD_PASTE: number; + readonly DOM_INPUT_METHOD_SCRIPT: number; + readonly DOM_INPUT_METHOD_UNKNOWN: number; + readonly DOM_INPUT_METHOD_VOICE: number; } declare var TextEvent: { prototype: TextEvent; new(): TextEvent; - DOM_INPUT_METHOD_DROP: number; - DOM_INPUT_METHOD_HANDWRITING: number; - DOM_INPUT_METHOD_IME: number; - DOM_INPUT_METHOD_KEYBOARD: number; - DOM_INPUT_METHOD_MULTIMODAL: number; - DOM_INPUT_METHOD_OPTION: number; - DOM_INPUT_METHOD_PASTE: number; - DOM_INPUT_METHOD_SCRIPT: number; - DOM_INPUT_METHOD_UNKNOWN: number; - DOM_INPUT_METHOD_VOICE: number; + readonly DOM_INPUT_METHOD_DROP: number; + readonly DOM_INPUT_METHOD_HANDWRITING: number; + readonly DOM_INPUT_METHOD_IME: number; + readonly DOM_INPUT_METHOD_KEYBOARD: number; + readonly DOM_INPUT_METHOD_MULTIMODAL: number; + readonly DOM_INPUT_METHOD_OPTION: number; + readonly DOM_INPUT_METHOD_PASTE: number; + readonly DOM_INPUT_METHOD_SCRIPT: number; + readonly DOM_INPUT_METHOD_UNKNOWN: number; + readonly DOM_INPUT_METHOD_VOICE: number; } interface TextMetrics { - width: number; + readonly width: number; } declare var TextMetrics: { @@ -14633,83 +15668,27 @@ declare var TextMetrics: { new(): TextMetrics; } -interface TextRange { - boundingHeight: number; - boundingLeft: number; - boundingTop: number; - boundingWidth: number; - htmlText: string; - offsetLeft: number; - offsetTop: number; - text: string; - collapse(start?: boolean): void; - compareEndPoints(how: string, sourceRange: TextRange): number; - duplicate(): TextRange; - execCommand(cmdID: string, showUI?: boolean, value?: any): boolean; - execCommandShowHelp(cmdID: string): boolean; - expand(Unit: string): boolean; - findText(string: string, count?: number, flags?: number): boolean; - getBookmark(): string; - getBoundingClientRect(): ClientRect; - getClientRects(): ClientRectList; - inRange(range: TextRange): boolean; - isEqual(range: TextRange): boolean; - move(unit: string, count?: number): number; - moveEnd(unit: string, count?: number): number; - moveStart(unit: string, count?: number): number; - moveToBookmark(bookmark: string): boolean; - moveToElementText(element: Element): void; - moveToPoint(x: number, y: number): void; - parentElement(): Element; - pasteHTML(html: string): void; - queryCommandEnabled(cmdID: string): boolean; - queryCommandIndeterm(cmdID: string): boolean; - queryCommandState(cmdID: string): boolean; - queryCommandSupported(cmdID: string): boolean; - queryCommandText(cmdID: string): string; - queryCommandValue(cmdID: string): any; - scrollIntoView(fStart?: boolean): void; - select(): void; - setEndPoint(how: string, SourceRange: TextRange): void; -} - -declare var TextRange: { - prototype: TextRange; - new(): TextRange; -} - -interface TextRangeCollection { - length: number; - item(index: number): TextRange; - [index: number]: TextRange; -} - -declare var TextRangeCollection: { - prototype: TextRangeCollection; - new(): TextRangeCollection; -} - interface TextTrack extends EventTarget { - activeCues: TextTrackCueList; - cues: TextTrackCueList; - inBandMetadataTrackDispatchType: string; - kind: string; - label: string; - language: string; + readonly activeCues: TextTrackCueList; + readonly cues: TextTrackCueList; + readonly inBandMetadataTrackDispatchType: string; + readonly kind: string; + readonly label: string; + readonly language: string; mode: any; oncuechange: (ev: Event) => any; onerror: (ev: Event) => any; onload: (ev: Event) => any; - readyState: number; + readonly readyState: number; addCue(cue: TextTrackCue): void; removeCue(cue: TextTrackCue): void; - DISABLED: number; - ERROR: number; - HIDDEN: number; - LOADED: number; - LOADING: number; - NONE: number; - SHOWING: number; + readonly DISABLED: number; + readonly ERROR: number; + readonly HIDDEN: number; + readonly LOADED: number; + readonly LOADING: number; + readonly NONE: number; + readonly SHOWING: number; addEventListener(type: "cuechange", 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; @@ -14719,13 +15698,13 @@ interface TextTrack extends EventTarget { declare var TextTrack: { prototype: TextTrack; new(): TextTrack; - DISABLED: number; - ERROR: number; - HIDDEN: number; - LOADED: number; - LOADING: number; - NONE: number; - SHOWING: number; + readonly DISABLED: number; + readonly ERROR: number; + readonly HIDDEN: number; + readonly LOADED: number; + readonly LOADING: number; + readonly NONE: number; + readonly SHOWING: number; } interface TextTrackCue extends EventTarget { @@ -14736,7 +15715,7 @@ interface TextTrackCue extends EventTarget { pauseOnExit: boolean; startTime: number; text: string; - track: TextTrack; + readonly track: TextTrack; getCueAsHTML(): DocumentFragment; addEventListener(type: "enter", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "exit", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -14749,7 +15728,7 @@ declare var TextTrackCue: { } interface TextTrackCueList { - length: number; + readonly length: number; getCueById(id: string): TextTrackCue; item(index: number): TextTrackCue; [index: number]: TextTrackCue; @@ -14761,7 +15740,7 @@ declare var TextTrackCueList: { } interface TextTrackList extends EventTarget { - length: number; + readonly length: number; onaddtrack: (ev: TrackEvent) => any; item(index: number): TextTrack; addEventListener(type: "addtrack", listener: (ev: TrackEvent) => any, useCapture?: boolean): void; @@ -14775,7 +15754,7 @@ declare var TextTrackList: { } interface TimeRanges { - length: number; + readonly length: number; end(index: number): number; start(index: number): number; } @@ -14786,14 +15765,14 @@ declare var TimeRanges: { } interface Touch { - clientX: number; - clientY: number; - identifier: number; - pageX: number; - pageY: number; - screenX: number; - screenY: number; - target: EventTarget; + readonly clientX: number; + readonly clientY: number; + readonly identifier: number; + readonly pageX: number; + readonly pageY: number; + readonly screenX: number; + readonly screenY: number; + readonly target: EventTarget; } declare var Touch: { @@ -14802,13 +15781,13 @@ declare var Touch: { } interface TouchEvent extends UIEvent { - altKey: boolean; - changedTouches: TouchList; - ctrlKey: boolean; - metaKey: boolean; - shiftKey: boolean; - targetTouches: TouchList; - touches: TouchList; + readonly altKey: boolean; + readonly changedTouches: TouchList; + readonly ctrlKey: boolean; + readonly metaKey: boolean; + readonly shiftKey: boolean; + readonly targetTouches: TouchList; + readonly touches: TouchList; } declare var TouchEvent: { @@ -14817,7 +15796,7 @@ declare var TouchEvent: { } interface TouchList { - length: number; + readonly length: number; item(index: number): Touch; [index: number]: Touch; } @@ -14828,7 +15807,7 @@ declare var TouchList: { } interface TrackEvent extends Event { - track: any; + readonly track: any; } declare var TrackEvent: { @@ -14837,8 +15816,8 @@ declare var TrackEvent: { } interface TransitionEvent extends Event { - elapsedTime: number; - propertyName: string; + readonly elapsedTime: number; + readonly propertyName: string; initTransitionEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, propertyNameArg: string, elapsedTimeArg: number): void; } @@ -14849,10 +15828,10 @@ declare var TransitionEvent: { interface TreeWalker { currentNode: Node; - expandEntityReferences: boolean; - filter: NodeFilter; - root: Node; - whatToShow: number; + readonly expandEntityReferences: boolean; + readonly filter: NodeFilter; + readonly root: Node; + readonly whatToShow: number; firstChild(): Node; lastChild(): Node; nextNode(): Node; @@ -14868,8 +15847,8 @@ declare var TreeWalker: { } interface UIEvent extends Event { - detail: number; - view: Window; + readonly detail: number; + readonly view: Window; initUIEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number): void; } @@ -14879,13 +15858,29 @@ declare var UIEvent: { } interface URL { + hash: string; + host: string; + hostname: string; + href: string; + readonly origin: string; + password: string; + pathname: string; + port: string; + protocol: string; + search: string; + username: string; + toString(): string; +} + +declare var URL: { + prototype: URL; + new(url: string, base?: string): URL; createObjectURL(object: any, options?: ObjectURLOptions): string; revokeObjectURL(url: string): void; } -declare var URL: URL; interface UnviewableContentIdentifiedEvent extends NavigationEventWithReferrer { - mediaType: string; + readonly mediaType: string; } declare var UnviewableContentIdentifiedEvent: { @@ -14894,16 +15889,16 @@ declare var UnviewableContentIdentifiedEvent: { } interface ValidityState { - badInput: boolean; - customError: boolean; - patternMismatch: boolean; - rangeOverflow: boolean; - rangeUnderflow: boolean; - stepMismatch: boolean; - tooLong: boolean; - typeMismatch: boolean; - valid: boolean; - valueMissing: boolean; + readonly badInput: boolean; + readonly customError: boolean; + readonly patternMismatch: boolean; + readonly rangeOverflow: boolean; + readonly rangeUnderflow: boolean; + readonly stepMismatch: boolean; + readonly tooLong: boolean; + readonly typeMismatch: boolean; + readonly valid: boolean; + readonly valueMissing: boolean; } declare var ValidityState: { @@ -14912,11 +15907,11 @@ declare var ValidityState: { } interface VideoPlaybackQuality { - corruptedVideoFrames: number; - creationTime: number; - droppedVideoFrames: number; - totalFrameDelay: number; - totalVideoFrames: number; + readonly corruptedVideoFrames: number; + readonly creationTime: number; + readonly droppedVideoFrames: number; + readonly totalFrameDelay: number; + readonly totalVideoFrames: number; } declare var VideoPlaybackQuality: { @@ -14925,12 +15920,12 @@ declare var VideoPlaybackQuality: { } interface VideoTrack { - id: string; + readonly id: string; kind: string; - label: string; + readonly label: string; language: string; selected: boolean; - sourceBuffer: SourceBuffer; + readonly sourceBuffer: SourceBuffer; } declare var VideoTrack: { @@ -14939,11 +15934,11 @@ declare var VideoTrack: { } interface VideoTrackList extends EventTarget { - length: number; + readonly length: number; onaddtrack: (ev: TrackEvent) => any; onchange: (ev: Event) => any; onremovetrack: (ev: TrackEvent) => any; - selectedIndex: number; + readonly selectedIndex: number; getTrackById(id: string): VideoTrack; item(index: number): VideoTrack; addEventListener(type: "addtrack", listener: (ev: TrackEvent) => any, useCapture?: boolean): void; @@ -14959,41 +15954,41 @@ declare var VideoTrackList: { } interface WEBGL_compressed_texture_s3tc { - COMPRESSED_RGBA_S3TC_DXT1_EXT: number; - COMPRESSED_RGBA_S3TC_DXT3_EXT: number; - COMPRESSED_RGBA_S3TC_DXT5_EXT: number; - COMPRESSED_RGB_S3TC_DXT1_EXT: number; + readonly COMPRESSED_RGBA_S3TC_DXT1_EXT: number; + readonly COMPRESSED_RGBA_S3TC_DXT3_EXT: number; + readonly COMPRESSED_RGBA_S3TC_DXT5_EXT: number; + readonly COMPRESSED_RGB_S3TC_DXT1_EXT: number; } declare var WEBGL_compressed_texture_s3tc: { prototype: WEBGL_compressed_texture_s3tc; new(): WEBGL_compressed_texture_s3tc; - COMPRESSED_RGBA_S3TC_DXT1_EXT: number; - COMPRESSED_RGBA_S3TC_DXT3_EXT: number; - COMPRESSED_RGBA_S3TC_DXT5_EXT: number; - COMPRESSED_RGB_S3TC_DXT1_EXT: number; + readonly COMPRESSED_RGBA_S3TC_DXT1_EXT: number; + readonly COMPRESSED_RGBA_S3TC_DXT3_EXT: number; + readonly COMPRESSED_RGBA_S3TC_DXT5_EXT: number; + readonly COMPRESSED_RGB_S3TC_DXT1_EXT: number; } interface WEBGL_debug_renderer_info { - UNMASKED_RENDERER_WEBGL: number; - UNMASKED_VENDOR_WEBGL: number; + readonly UNMASKED_RENDERER_WEBGL: number; + readonly UNMASKED_VENDOR_WEBGL: number; } declare var WEBGL_debug_renderer_info: { prototype: WEBGL_debug_renderer_info; new(): WEBGL_debug_renderer_info; - UNMASKED_RENDERER_WEBGL: number; - UNMASKED_VENDOR_WEBGL: number; + readonly UNMASKED_RENDERER_WEBGL: number; + readonly UNMASKED_VENDOR_WEBGL: number; } interface WEBGL_depth_texture { - UNSIGNED_INT_24_8_WEBGL: number; + readonly UNSIGNED_INT_24_8_WEBGL: number; } declare var WEBGL_depth_texture: { prototype: WEBGL_depth_texture; new(): WEBGL_depth_texture; - UNSIGNED_INT_24_8_WEBGL: number; + readonly UNSIGNED_INT_24_8_WEBGL: number; } interface WaveShaperNode extends AudioNode { @@ -15007,9 +16002,9 @@ declare var WaveShaperNode: { } interface WebGLActiveInfo { - name: string; - size: number; - type: number; + readonly name: string; + readonly size: number; + readonly type: number; } declare var WebGLActiveInfo: { @@ -15026,12 +16021,12 @@ declare var WebGLBuffer: { } interface WebGLContextEvent extends Event { - statusMessage: string; + readonly statusMessage: string; } declare var WebGLContextEvent: { prototype: WebGLContextEvent; - new(): WebGLContextEvent; + new(type: string, eventInitDict?: WebGLContextEventInit): WebGLContextEvent; } interface WebGLFramebuffer extends WebGLObject { @@ -15067,9 +16062,9 @@ declare var WebGLRenderbuffer: { } interface WebGLRenderingContext { - canvas: HTMLCanvasElement; - drawingBufferHeight: number; - drawingBufferWidth: number; + readonly canvas: HTMLCanvasElement; + readonly drawingBufferHeight: number; + readonly drawingBufferWidth: number; activeTexture(texture: number): void; attachShader(program: WebGLProgram, shader: WebGLShader): void; bindAttribLocation(program: WebGLProgram, index: number, name: string): void; @@ -15184,635 +16179,635 @@ interface WebGLRenderingContext { texSubImage2D(target: number, level: number, xoffset: number, yoffset: number, format: number, type: number, video: HTMLVideoElement): void; texSubImage2D(target: number, level: number, xoffset: number, yoffset: number, format: number, type: number, pixels: ImageData): void; uniform1f(location: WebGLUniformLocation, x: number): void; - uniform1fv(location: WebGLUniformLocation, v: Float32Array): void; + uniform1fv(location: WebGLUniformLocation, v: Float32Array | number[]): void; uniform1i(location: WebGLUniformLocation, x: number): void; - uniform1iv(location: WebGLUniformLocation, v: Int32Array): void; + uniform1iv(location: WebGLUniformLocation, v: Int32Array | number[]): void; uniform2f(location: WebGLUniformLocation, x: number, y: number): void; - uniform2fv(location: WebGLUniformLocation, v: Float32Array): void; + uniform2fv(location: WebGLUniformLocation, v: Float32Array | number[]): void; uniform2i(location: WebGLUniformLocation, x: number, y: number): void; - uniform2iv(location: WebGLUniformLocation, v: Int32Array): void; + uniform2iv(location: WebGLUniformLocation, v: Int32Array | number[]): void; uniform3f(location: WebGLUniformLocation, x: number, y: number, z: number): void; - uniform3fv(location: WebGLUniformLocation, v: Float32Array): void; + uniform3fv(location: WebGLUniformLocation, v: Float32Array | number[]): void; uniform3i(location: WebGLUniformLocation, x: number, y: number, z: number): void; - uniform3iv(location: WebGLUniformLocation, v: Int32Array): void; + uniform3iv(location: WebGLUniformLocation, v: Int32Array | number[]): void; uniform4f(location: WebGLUniformLocation, x: number, y: number, z: number, w: number): void; - uniform4fv(location: WebGLUniformLocation, v: Float32Array): void; + uniform4fv(location: WebGLUniformLocation, v: Float32Array | number[]): void; uniform4i(location: WebGLUniformLocation, x: number, y: number, z: number, w: number): void; - uniform4iv(location: WebGLUniformLocation, v: Int32Array): void; - uniformMatrix2fv(location: WebGLUniformLocation, transpose: boolean, value: Float32Array): void; - uniformMatrix3fv(location: WebGLUniformLocation, transpose: boolean, value: Float32Array): void; - uniformMatrix4fv(location: WebGLUniformLocation, transpose: boolean, value: Float32Array): void; + uniform4iv(location: WebGLUniformLocation, v: Int32Array | number[]): void; + uniformMatrix2fv(location: WebGLUniformLocation, transpose: boolean, value: Float32Array | number[]): void; + uniformMatrix3fv(location: WebGLUniformLocation, transpose: boolean, value: Float32Array | number[]): void; + uniformMatrix4fv(location: WebGLUniformLocation, transpose: boolean, value: Float32Array | number[]): void; useProgram(program: WebGLProgram): void; validateProgram(program: WebGLProgram): void; vertexAttrib1f(indx: number, x: number): void; - vertexAttrib1fv(indx: number, values: Float32Array): void; + vertexAttrib1fv(indx: number, values: Float32Array | number[]): void; vertexAttrib2f(indx: number, x: number, y: number): void; - vertexAttrib2fv(indx: number, values: Float32Array): void; + vertexAttrib2fv(indx: number, values: Float32Array | number[]): void; vertexAttrib3f(indx: number, x: number, y: number, z: number): void; - vertexAttrib3fv(indx: number, values: Float32Array): void; + vertexAttrib3fv(indx: number, values: Float32Array | number[]): void; vertexAttrib4f(indx: number, x: number, y: number, z: number, w: number): void; - vertexAttrib4fv(indx: number, values: Float32Array): void; + vertexAttrib4fv(indx: number, values: Float32Array | number[]): void; vertexAttribPointer(indx: number, size: number, type: number, normalized: boolean, stride: number, offset: number): void; viewport(x: number, y: number, width: number, height: number): void; - ACTIVE_ATTRIBUTES: number; - ACTIVE_TEXTURE: number; - ACTIVE_UNIFORMS: number; - ALIASED_LINE_WIDTH_RANGE: number; - ALIASED_POINT_SIZE_RANGE: number; - ALPHA: number; - ALPHA_BITS: number; - ALWAYS: number; - ARRAY_BUFFER: number; - ARRAY_BUFFER_BINDING: number; - ATTACHED_SHADERS: number; - BACK: number; - BLEND: number; - BLEND_COLOR: number; - BLEND_DST_ALPHA: number; - BLEND_DST_RGB: number; - BLEND_EQUATION: number; - BLEND_EQUATION_ALPHA: number; - BLEND_EQUATION_RGB: number; - BLEND_SRC_ALPHA: number; - BLEND_SRC_RGB: number; - BLUE_BITS: number; - BOOL: number; - BOOL_VEC2: number; - BOOL_VEC3: number; - BOOL_VEC4: number; - BROWSER_DEFAULT_WEBGL: number; - BUFFER_SIZE: number; - BUFFER_USAGE: number; - BYTE: number; - CCW: number; - CLAMP_TO_EDGE: number; - COLOR_ATTACHMENT0: number; - COLOR_BUFFER_BIT: number; - COLOR_CLEAR_VALUE: number; - COLOR_WRITEMASK: number; - COMPILE_STATUS: number; - COMPRESSED_TEXTURE_FORMATS: number; - CONSTANT_ALPHA: number; - CONSTANT_COLOR: number; - CONTEXT_LOST_WEBGL: number; - CULL_FACE: number; - CULL_FACE_MODE: number; - CURRENT_PROGRAM: number; - CURRENT_VERTEX_ATTRIB: number; - CW: number; - DECR: number; - DECR_WRAP: number; - DELETE_STATUS: number; - DEPTH_ATTACHMENT: number; - DEPTH_BITS: number; - DEPTH_BUFFER_BIT: number; - DEPTH_CLEAR_VALUE: number; - DEPTH_COMPONENT: number; - DEPTH_COMPONENT16: number; - DEPTH_FUNC: number; - DEPTH_RANGE: number; - DEPTH_STENCIL: number; - DEPTH_STENCIL_ATTACHMENT: number; - DEPTH_TEST: number; - DEPTH_WRITEMASK: number; - DITHER: number; - DONT_CARE: number; - DST_ALPHA: number; - DST_COLOR: number; - DYNAMIC_DRAW: number; - ELEMENT_ARRAY_BUFFER: number; - ELEMENT_ARRAY_BUFFER_BINDING: number; - EQUAL: number; - FASTEST: number; - FLOAT: number; - FLOAT_MAT2: number; - FLOAT_MAT3: number; - FLOAT_MAT4: number; - FLOAT_VEC2: number; - FLOAT_VEC3: number; - FLOAT_VEC4: number; - FRAGMENT_SHADER: number; - FRAMEBUFFER: number; - FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: number; - FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: number; - FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: number; - FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: number; - FRAMEBUFFER_BINDING: number; - FRAMEBUFFER_COMPLETE: number; - FRAMEBUFFER_INCOMPLETE_ATTACHMENT: number; - FRAMEBUFFER_INCOMPLETE_DIMENSIONS: number; - FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: number; - FRAMEBUFFER_UNSUPPORTED: number; - FRONT: number; - FRONT_AND_BACK: number; - FRONT_FACE: number; - FUNC_ADD: number; - FUNC_REVERSE_SUBTRACT: number; - FUNC_SUBTRACT: number; - GENERATE_MIPMAP_HINT: number; - GEQUAL: number; - GREATER: number; - GREEN_BITS: number; - HIGH_FLOAT: number; - HIGH_INT: number; - IMPLEMENTATION_COLOR_READ_FORMAT: number; - IMPLEMENTATION_COLOR_READ_TYPE: number; - INCR: number; - INCR_WRAP: number; - INT: number; - INT_VEC2: number; - INT_VEC3: number; - INT_VEC4: number; - INVALID_ENUM: number; - INVALID_FRAMEBUFFER_OPERATION: number; - INVALID_OPERATION: number; - INVALID_VALUE: number; - INVERT: number; - KEEP: number; - LEQUAL: number; - LESS: number; - LINEAR: number; - LINEAR_MIPMAP_LINEAR: number; - LINEAR_MIPMAP_NEAREST: number; - LINES: number; - LINE_LOOP: number; - LINE_STRIP: number; - LINE_WIDTH: number; - LINK_STATUS: number; - LOW_FLOAT: number; - LOW_INT: number; - LUMINANCE: number; - LUMINANCE_ALPHA: number; - MAX_COMBINED_TEXTURE_IMAGE_UNITS: number; - MAX_CUBE_MAP_TEXTURE_SIZE: number; - MAX_FRAGMENT_UNIFORM_VECTORS: number; - MAX_RENDERBUFFER_SIZE: number; - MAX_TEXTURE_IMAGE_UNITS: number; - MAX_TEXTURE_SIZE: number; - MAX_VARYING_VECTORS: number; - MAX_VERTEX_ATTRIBS: number; - MAX_VERTEX_TEXTURE_IMAGE_UNITS: number; - MAX_VERTEX_UNIFORM_VECTORS: number; - MAX_VIEWPORT_DIMS: number; - MEDIUM_FLOAT: number; - MEDIUM_INT: number; - MIRRORED_REPEAT: number; - NEAREST: number; - NEAREST_MIPMAP_LINEAR: number; - NEAREST_MIPMAP_NEAREST: number; - NEVER: number; - NICEST: number; - NONE: number; - NOTEQUAL: number; - NO_ERROR: number; - ONE: number; - ONE_MINUS_CONSTANT_ALPHA: number; - ONE_MINUS_CONSTANT_COLOR: number; - ONE_MINUS_DST_ALPHA: number; - ONE_MINUS_DST_COLOR: number; - ONE_MINUS_SRC_ALPHA: number; - ONE_MINUS_SRC_COLOR: number; - OUT_OF_MEMORY: number; - PACK_ALIGNMENT: number; - POINTS: number; - POLYGON_OFFSET_FACTOR: number; - POLYGON_OFFSET_FILL: number; - POLYGON_OFFSET_UNITS: number; - RED_BITS: number; - RENDERBUFFER: number; - RENDERBUFFER_ALPHA_SIZE: number; - RENDERBUFFER_BINDING: number; - RENDERBUFFER_BLUE_SIZE: number; - RENDERBUFFER_DEPTH_SIZE: number; - RENDERBUFFER_GREEN_SIZE: number; - RENDERBUFFER_HEIGHT: number; - RENDERBUFFER_INTERNAL_FORMAT: number; - RENDERBUFFER_RED_SIZE: number; - RENDERBUFFER_STENCIL_SIZE: number; - RENDERBUFFER_WIDTH: number; - RENDERER: number; - REPEAT: number; - REPLACE: number; - RGB: number; - RGB565: number; - RGB5_A1: number; - RGBA: number; - RGBA4: number; - SAMPLER_2D: number; - SAMPLER_CUBE: number; - SAMPLES: number; - SAMPLE_ALPHA_TO_COVERAGE: number; - SAMPLE_BUFFERS: number; - SAMPLE_COVERAGE: number; - SAMPLE_COVERAGE_INVERT: number; - SAMPLE_COVERAGE_VALUE: number; - SCISSOR_BOX: number; - SCISSOR_TEST: number; - SHADER_TYPE: number; - SHADING_LANGUAGE_VERSION: number; - SHORT: number; - SRC_ALPHA: number; - SRC_ALPHA_SATURATE: number; - SRC_COLOR: number; - STATIC_DRAW: number; - STENCIL_ATTACHMENT: number; - STENCIL_BACK_FAIL: number; - STENCIL_BACK_FUNC: number; - STENCIL_BACK_PASS_DEPTH_FAIL: number; - STENCIL_BACK_PASS_DEPTH_PASS: number; - STENCIL_BACK_REF: number; - STENCIL_BACK_VALUE_MASK: number; - STENCIL_BACK_WRITEMASK: number; - STENCIL_BITS: number; - STENCIL_BUFFER_BIT: number; - STENCIL_CLEAR_VALUE: number; - STENCIL_FAIL: number; - STENCIL_FUNC: number; - STENCIL_INDEX: number; - STENCIL_INDEX8: number; - STENCIL_PASS_DEPTH_FAIL: number; - STENCIL_PASS_DEPTH_PASS: number; - STENCIL_REF: number; - STENCIL_TEST: number; - STENCIL_VALUE_MASK: number; - STENCIL_WRITEMASK: number; - STREAM_DRAW: number; - SUBPIXEL_BITS: number; - TEXTURE: number; - TEXTURE0: number; - TEXTURE1: number; - TEXTURE10: number; - TEXTURE11: number; - TEXTURE12: number; - TEXTURE13: number; - TEXTURE14: number; - TEXTURE15: number; - TEXTURE16: number; - TEXTURE17: number; - TEXTURE18: number; - TEXTURE19: number; - TEXTURE2: number; - TEXTURE20: number; - TEXTURE21: number; - TEXTURE22: number; - TEXTURE23: number; - TEXTURE24: number; - TEXTURE25: number; - TEXTURE26: number; - TEXTURE27: number; - TEXTURE28: number; - TEXTURE29: number; - TEXTURE3: number; - TEXTURE30: number; - TEXTURE31: number; - TEXTURE4: number; - TEXTURE5: number; - TEXTURE6: number; - TEXTURE7: number; - TEXTURE8: number; - TEXTURE9: number; - TEXTURE_2D: number; - TEXTURE_BINDING_2D: number; - TEXTURE_BINDING_CUBE_MAP: number; - TEXTURE_CUBE_MAP: number; - TEXTURE_CUBE_MAP_NEGATIVE_X: number; - TEXTURE_CUBE_MAP_NEGATIVE_Y: number; - TEXTURE_CUBE_MAP_NEGATIVE_Z: number; - TEXTURE_CUBE_MAP_POSITIVE_X: number; - TEXTURE_CUBE_MAP_POSITIVE_Y: number; - TEXTURE_CUBE_MAP_POSITIVE_Z: number; - TEXTURE_MAG_FILTER: number; - TEXTURE_MIN_FILTER: number; - TEXTURE_WRAP_S: number; - TEXTURE_WRAP_T: number; - TRIANGLES: number; - TRIANGLE_FAN: number; - TRIANGLE_STRIP: number; - UNPACK_ALIGNMENT: number; - UNPACK_COLORSPACE_CONVERSION_WEBGL: number; - UNPACK_FLIP_Y_WEBGL: number; - UNPACK_PREMULTIPLY_ALPHA_WEBGL: number; - UNSIGNED_BYTE: number; - UNSIGNED_INT: number; - UNSIGNED_SHORT: number; - UNSIGNED_SHORT_4_4_4_4: number; - UNSIGNED_SHORT_5_5_5_1: number; - UNSIGNED_SHORT_5_6_5: number; - VALIDATE_STATUS: number; - VENDOR: number; - VERSION: number; - VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: number; - VERTEX_ATTRIB_ARRAY_ENABLED: number; - VERTEX_ATTRIB_ARRAY_NORMALIZED: number; - VERTEX_ATTRIB_ARRAY_POINTER: number; - VERTEX_ATTRIB_ARRAY_SIZE: number; - VERTEX_ATTRIB_ARRAY_STRIDE: number; - VERTEX_ATTRIB_ARRAY_TYPE: number; - VERTEX_SHADER: number; - VIEWPORT: number; - ZERO: number; + readonly ACTIVE_ATTRIBUTES: number; + readonly ACTIVE_TEXTURE: number; + readonly ACTIVE_UNIFORMS: number; + readonly ALIASED_LINE_WIDTH_RANGE: number; + readonly ALIASED_POINT_SIZE_RANGE: number; + readonly ALPHA: number; + readonly ALPHA_BITS: number; + readonly ALWAYS: number; + readonly ARRAY_BUFFER: number; + readonly ARRAY_BUFFER_BINDING: number; + readonly ATTACHED_SHADERS: number; + readonly BACK: number; + readonly BLEND: number; + readonly BLEND_COLOR: number; + readonly BLEND_DST_ALPHA: number; + readonly BLEND_DST_RGB: number; + readonly BLEND_EQUATION: number; + readonly BLEND_EQUATION_ALPHA: number; + readonly BLEND_EQUATION_RGB: number; + readonly BLEND_SRC_ALPHA: number; + readonly BLEND_SRC_RGB: number; + readonly BLUE_BITS: number; + readonly BOOL: number; + readonly BOOL_VEC2: number; + readonly BOOL_VEC3: number; + readonly BOOL_VEC4: number; + readonly BROWSER_DEFAULT_WEBGL: number; + readonly BUFFER_SIZE: number; + readonly BUFFER_USAGE: number; + readonly BYTE: number; + readonly CCW: number; + readonly CLAMP_TO_EDGE: number; + readonly COLOR_ATTACHMENT0: number; + readonly COLOR_BUFFER_BIT: number; + readonly COLOR_CLEAR_VALUE: number; + readonly COLOR_WRITEMASK: number; + readonly COMPILE_STATUS: number; + readonly COMPRESSED_TEXTURE_FORMATS: number; + readonly CONSTANT_ALPHA: number; + readonly CONSTANT_COLOR: number; + readonly CONTEXT_LOST_WEBGL: number; + readonly CULL_FACE: number; + readonly CULL_FACE_MODE: number; + readonly CURRENT_PROGRAM: number; + readonly CURRENT_VERTEX_ATTRIB: number; + readonly CW: number; + readonly DECR: number; + readonly DECR_WRAP: number; + readonly DELETE_STATUS: number; + readonly DEPTH_ATTACHMENT: number; + readonly DEPTH_BITS: number; + readonly DEPTH_BUFFER_BIT: number; + readonly DEPTH_CLEAR_VALUE: number; + readonly DEPTH_COMPONENT: number; + readonly DEPTH_COMPONENT16: number; + readonly DEPTH_FUNC: number; + readonly DEPTH_RANGE: number; + readonly DEPTH_STENCIL: number; + readonly DEPTH_STENCIL_ATTACHMENT: number; + readonly DEPTH_TEST: number; + readonly DEPTH_WRITEMASK: number; + readonly DITHER: number; + readonly DONT_CARE: number; + readonly DST_ALPHA: number; + readonly DST_COLOR: number; + readonly DYNAMIC_DRAW: number; + readonly ELEMENT_ARRAY_BUFFER: number; + readonly ELEMENT_ARRAY_BUFFER_BINDING: number; + readonly EQUAL: number; + readonly FASTEST: number; + readonly FLOAT: number; + readonly FLOAT_MAT2: number; + readonly FLOAT_MAT3: number; + readonly FLOAT_MAT4: number; + readonly FLOAT_VEC2: number; + readonly FLOAT_VEC3: number; + readonly FLOAT_VEC4: number; + readonly FRAGMENT_SHADER: number; + readonly FRAMEBUFFER: number; + readonly FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: number; + readonly FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: number; + readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: number; + readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: number; + readonly FRAMEBUFFER_BINDING: number; + readonly FRAMEBUFFER_COMPLETE: number; + readonly FRAMEBUFFER_INCOMPLETE_ATTACHMENT: number; + readonly FRAMEBUFFER_INCOMPLETE_DIMENSIONS: number; + readonly FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: number; + readonly FRAMEBUFFER_UNSUPPORTED: number; + readonly FRONT: number; + readonly FRONT_AND_BACK: number; + readonly FRONT_FACE: number; + readonly FUNC_ADD: number; + readonly FUNC_REVERSE_SUBTRACT: number; + readonly FUNC_SUBTRACT: number; + readonly GENERATE_MIPMAP_HINT: number; + readonly GEQUAL: number; + readonly GREATER: number; + readonly GREEN_BITS: number; + readonly HIGH_FLOAT: number; + readonly HIGH_INT: number; + readonly IMPLEMENTATION_COLOR_READ_FORMAT: number; + readonly IMPLEMENTATION_COLOR_READ_TYPE: number; + readonly INCR: number; + readonly INCR_WRAP: number; + readonly INT: number; + readonly INT_VEC2: number; + readonly INT_VEC3: number; + readonly INT_VEC4: number; + readonly INVALID_ENUM: number; + readonly INVALID_FRAMEBUFFER_OPERATION: number; + readonly INVALID_OPERATION: number; + readonly INVALID_VALUE: number; + readonly INVERT: number; + readonly KEEP: number; + readonly LEQUAL: number; + readonly LESS: number; + readonly LINEAR: number; + readonly LINEAR_MIPMAP_LINEAR: number; + readonly LINEAR_MIPMAP_NEAREST: number; + readonly LINES: number; + readonly LINE_LOOP: number; + readonly LINE_STRIP: number; + readonly LINE_WIDTH: number; + readonly LINK_STATUS: number; + readonly LOW_FLOAT: number; + readonly LOW_INT: number; + readonly LUMINANCE: number; + readonly LUMINANCE_ALPHA: number; + readonly MAX_COMBINED_TEXTURE_IMAGE_UNITS: number; + readonly MAX_CUBE_MAP_TEXTURE_SIZE: number; + readonly MAX_FRAGMENT_UNIFORM_VECTORS: number; + readonly MAX_RENDERBUFFER_SIZE: number; + readonly MAX_TEXTURE_IMAGE_UNITS: number; + readonly MAX_TEXTURE_SIZE: number; + readonly MAX_VARYING_VECTORS: number; + readonly MAX_VERTEX_ATTRIBS: number; + readonly MAX_VERTEX_TEXTURE_IMAGE_UNITS: number; + readonly MAX_VERTEX_UNIFORM_VECTORS: number; + readonly MAX_VIEWPORT_DIMS: number; + readonly MEDIUM_FLOAT: number; + readonly MEDIUM_INT: number; + readonly MIRRORED_REPEAT: number; + readonly NEAREST: number; + readonly NEAREST_MIPMAP_LINEAR: number; + readonly NEAREST_MIPMAP_NEAREST: number; + readonly NEVER: number; + readonly NICEST: number; + readonly NONE: number; + readonly NOTEQUAL: number; + readonly NO_ERROR: number; + readonly ONE: number; + readonly ONE_MINUS_CONSTANT_ALPHA: number; + readonly ONE_MINUS_CONSTANT_COLOR: number; + readonly ONE_MINUS_DST_ALPHA: number; + readonly ONE_MINUS_DST_COLOR: number; + readonly ONE_MINUS_SRC_ALPHA: number; + readonly ONE_MINUS_SRC_COLOR: number; + readonly OUT_OF_MEMORY: number; + readonly PACK_ALIGNMENT: number; + readonly POINTS: number; + readonly POLYGON_OFFSET_FACTOR: number; + readonly POLYGON_OFFSET_FILL: number; + readonly POLYGON_OFFSET_UNITS: number; + readonly RED_BITS: number; + readonly RENDERBUFFER: number; + readonly RENDERBUFFER_ALPHA_SIZE: number; + readonly RENDERBUFFER_BINDING: number; + readonly RENDERBUFFER_BLUE_SIZE: number; + readonly RENDERBUFFER_DEPTH_SIZE: number; + readonly RENDERBUFFER_GREEN_SIZE: number; + readonly RENDERBUFFER_HEIGHT: number; + readonly RENDERBUFFER_INTERNAL_FORMAT: number; + readonly RENDERBUFFER_RED_SIZE: number; + readonly RENDERBUFFER_STENCIL_SIZE: number; + readonly RENDERBUFFER_WIDTH: number; + readonly RENDERER: number; + readonly REPEAT: number; + readonly REPLACE: number; + readonly RGB: number; + readonly RGB565: number; + readonly RGB5_A1: number; + readonly RGBA: number; + readonly RGBA4: number; + readonly SAMPLER_2D: number; + readonly SAMPLER_CUBE: number; + readonly SAMPLES: number; + readonly SAMPLE_ALPHA_TO_COVERAGE: number; + readonly SAMPLE_BUFFERS: number; + readonly SAMPLE_COVERAGE: number; + readonly SAMPLE_COVERAGE_INVERT: number; + readonly SAMPLE_COVERAGE_VALUE: number; + readonly SCISSOR_BOX: number; + readonly SCISSOR_TEST: number; + readonly SHADER_TYPE: number; + readonly SHADING_LANGUAGE_VERSION: number; + readonly SHORT: number; + readonly SRC_ALPHA: number; + readonly SRC_ALPHA_SATURATE: number; + readonly SRC_COLOR: number; + readonly STATIC_DRAW: number; + readonly STENCIL_ATTACHMENT: number; + readonly STENCIL_BACK_FAIL: number; + readonly STENCIL_BACK_FUNC: number; + readonly STENCIL_BACK_PASS_DEPTH_FAIL: number; + readonly STENCIL_BACK_PASS_DEPTH_PASS: number; + readonly STENCIL_BACK_REF: number; + readonly STENCIL_BACK_VALUE_MASK: number; + readonly STENCIL_BACK_WRITEMASK: number; + readonly STENCIL_BITS: number; + readonly STENCIL_BUFFER_BIT: number; + readonly STENCIL_CLEAR_VALUE: number; + readonly STENCIL_FAIL: number; + readonly STENCIL_FUNC: number; + readonly STENCIL_INDEX: number; + readonly STENCIL_INDEX8: number; + readonly STENCIL_PASS_DEPTH_FAIL: number; + readonly STENCIL_PASS_DEPTH_PASS: number; + readonly STENCIL_REF: number; + readonly STENCIL_TEST: number; + readonly STENCIL_VALUE_MASK: number; + readonly STENCIL_WRITEMASK: number; + readonly STREAM_DRAW: number; + readonly SUBPIXEL_BITS: number; + readonly TEXTURE: number; + readonly TEXTURE0: number; + readonly TEXTURE1: number; + readonly TEXTURE10: number; + readonly TEXTURE11: number; + readonly TEXTURE12: number; + readonly TEXTURE13: number; + readonly TEXTURE14: number; + readonly TEXTURE15: number; + readonly TEXTURE16: number; + readonly TEXTURE17: number; + readonly TEXTURE18: number; + readonly TEXTURE19: number; + readonly TEXTURE2: number; + readonly TEXTURE20: number; + readonly TEXTURE21: number; + readonly TEXTURE22: number; + readonly TEXTURE23: number; + readonly TEXTURE24: number; + readonly TEXTURE25: number; + readonly TEXTURE26: number; + readonly TEXTURE27: number; + readonly TEXTURE28: number; + readonly TEXTURE29: number; + readonly TEXTURE3: number; + readonly TEXTURE30: number; + readonly TEXTURE31: number; + readonly TEXTURE4: number; + readonly TEXTURE5: number; + readonly TEXTURE6: number; + readonly TEXTURE7: number; + readonly TEXTURE8: number; + readonly TEXTURE9: number; + readonly TEXTURE_2D: number; + readonly TEXTURE_BINDING_2D: number; + readonly TEXTURE_BINDING_CUBE_MAP: number; + readonly TEXTURE_CUBE_MAP: number; + readonly TEXTURE_CUBE_MAP_NEGATIVE_X: number; + readonly TEXTURE_CUBE_MAP_NEGATIVE_Y: number; + readonly TEXTURE_CUBE_MAP_NEGATIVE_Z: number; + readonly TEXTURE_CUBE_MAP_POSITIVE_X: number; + readonly TEXTURE_CUBE_MAP_POSITIVE_Y: number; + readonly TEXTURE_CUBE_MAP_POSITIVE_Z: number; + readonly TEXTURE_MAG_FILTER: number; + readonly TEXTURE_MIN_FILTER: number; + readonly TEXTURE_WRAP_S: number; + readonly TEXTURE_WRAP_T: number; + readonly TRIANGLES: number; + readonly TRIANGLE_FAN: number; + readonly TRIANGLE_STRIP: number; + readonly UNPACK_ALIGNMENT: number; + readonly UNPACK_COLORSPACE_CONVERSION_WEBGL: number; + readonly UNPACK_FLIP_Y_WEBGL: number; + readonly UNPACK_PREMULTIPLY_ALPHA_WEBGL: number; + readonly UNSIGNED_BYTE: number; + readonly UNSIGNED_INT: number; + readonly UNSIGNED_SHORT: number; + readonly UNSIGNED_SHORT_4_4_4_4: number; + readonly UNSIGNED_SHORT_5_5_5_1: number; + readonly UNSIGNED_SHORT_5_6_5: number; + readonly VALIDATE_STATUS: number; + readonly VENDOR: number; + readonly VERSION: number; + readonly VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: number; + readonly VERTEX_ATTRIB_ARRAY_ENABLED: number; + readonly VERTEX_ATTRIB_ARRAY_NORMALIZED: number; + readonly VERTEX_ATTRIB_ARRAY_POINTER: number; + readonly VERTEX_ATTRIB_ARRAY_SIZE: number; + readonly VERTEX_ATTRIB_ARRAY_STRIDE: number; + readonly VERTEX_ATTRIB_ARRAY_TYPE: number; + readonly VERTEX_SHADER: number; + readonly VIEWPORT: number; + readonly ZERO: number; } declare var WebGLRenderingContext: { prototype: WebGLRenderingContext; new(): WebGLRenderingContext; - ACTIVE_ATTRIBUTES: number; - ACTIVE_TEXTURE: number; - ACTIVE_UNIFORMS: number; - ALIASED_LINE_WIDTH_RANGE: number; - ALIASED_POINT_SIZE_RANGE: number; - ALPHA: number; - ALPHA_BITS: number; - ALWAYS: number; - ARRAY_BUFFER: number; - ARRAY_BUFFER_BINDING: number; - ATTACHED_SHADERS: number; - BACK: number; - BLEND: number; - BLEND_COLOR: number; - BLEND_DST_ALPHA: number; - BLEND_DST_RGB: number; - BLEND_EQUATION: number; - BLEND_EQUATION_ALPHA: number; - BLEND_EQUATION_RGB: number; - BLEND_SRC_ALPHA: number; - BLEND_SRC_RGB: number; - BLUE_BITS: number; - BOOL: number; - BOOL_VEC2: number; - BOOL_VEC3: number; - BOOL_VEC4: number; - BROWSER_DEFAULT_WEBGL: number; - BUFFER_SIZE: number; - BUFFER_USAGE: number; - BYTE: number; - CCW: number; - CLAMP_TO_EDGE: number; - COLOR_ATTACHMENT0: number; - COLOR_BUFFER_BIT: number; - COLOR_CLEAR_VALUE: number; - COLOR_WRITEMASK: number; - COMPILE_STATUS: number; - COMPRESSED_TEXTURE_FORMATS: number; - CONSTANT_ALPHA: number; - CONSTANT_COLOR: number; - CONTEXT_LOST_WEBGL: number; - CULL_FACE: number; - CULL_FACE_MODE: number; - CURRENT_PROGRAM: number; - CURRENT_VERTEX_ATTRIB: number; - CW: number; - DECR: number; - DECR_WRAP: number; - DELETE_STATUS: number; - DEPTH_ATTACHMENT: number; - DEPTH_BITS: number; - DEPTH_BUFFER_BIT: number; - DEPTH_CLEAR_VALUE: number; - DEPTH_COMPONENT: number; - DEPTH_COMPONENT16: number; - DEPTH_FUNC: number; - DEPTH_RANGE: number; - DEPTH_STENCIL: number; - DEPTH_STENCIL_ATTACHMENT: number; - DEPTH_TEST: number; - DEPTH_WRITEMASK: number; - DITHER: number; - DONT_CARE: number; - DST_ALPHA: number; - DST_COLOR: number; - DYNAMIC_DRAW: number; - ELEMENT_ARRAY_BUFFER: number; - ELEMENT_ARRAY_BUFFER_BINDING: number; - EQUAL: number; - FASTEST: number; - FLOAT: number; - FLOAT_MAT2: number; - FLOAT_MAT3: number; - FLOAT_MAT4: number; - FLOAT_VEC2: number; - FLOAT_VEC3: number; - FLOAT_VEC4: number; - FRAGMENT_SHADER: number; - FRAMEBUFFER: number; - FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: number; - FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: number; - FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: number; - FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: number; - FRAMEBUFFER_BINDING: number; - FRAMEBUFFER_COMPLETE: number; - FRAMEBUFFER_INCOMPLETE_ATTACHMENT: number; - FRAMEBUFFER_INCOMPLETE_DIMENSIONS: number; - FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: number; - FRAMEBUFFER_UNSUPPORTED: number; - FRONT: number; - FRONT_AND_BACK: number; - FRONT_FACE: number; - FUNC_ADD: number; - FUNC_REVERSE_SUBTRACT: number; - FUNC_SUBTRACT: number; - GENERATE_MIPMAP_HINT: number; - GEQUAL: number; - GREATER: number; - GREEN_BITS: number; - HIGH_FLOAT: number; - HIGH_INT: number; - IMPLEMENTATION_COLOR_READ_FORMAT: number; - IMPLEMENTATION_COLOR_READ_TYPE: number; - INCR: number; - INCR_WRAP: number; - INT: number; - INT_VEC2: number; - INT_VEC3: number; - INT_VEC4: number; - INVALID_ENUM: number; - INVALID_FRAMEBUFFER_OPERATION: number; - INVALID_OPERATION: number; - INVALID_VALUE: number; - INVERT: number; - KEEP: number; - LEQUAL: number; - LESS: number; - LINEAR: number; - LINEAR_MIPMAP_LINEAR: number; - LINEAR_MIPMAP_NEAREST: number; - LINES: number; - LINE_LOOP: number; - LINE_STRIP: number; - LINE_WIDTH: number; - LINK_STATUS: number; - LOW_FLOAT: number; - LOW_INT: number; - LUMINANCE: number; - LUMINANCE_ALPHA: number; - MAX_COMBINED_TEXTURE_IMAGE_UNITS: number; - MAX_CUBE_MAP_TEXTURE_SIZE: number; - MAX_FRAGMENT_UNIFORM_VECTORS: number; - MAX_RENDERBUFFER_SIZE: number; - MAX_TEXTURE_IMAGE_UNITS: number; - MAX_TEXTURE_SIZE: number; - MAX_VARYING_VECTORS: number; - MAX_VERTEX_ATTRIBS: number; - MAX_VERTEX_TEXTURE_IMAGE_UNITS: number; - MAX_VERTEX_UNIFORM_VECTORS: number; - MAX_VIEWPORT_DIMS: number; - MEDIUM_FLOAT: number; - MEDIUM_INT: number; - MIRRORED_REPEAT: number; - NEAREST: number; - NEAREST_MIPMAP_LINEAR: number; - NEAREST_MIPMAP_NEAREST: number; - NEVER: number; - NICEST: number; - NONE: number; - NOTEQUAL: number; - NO_ERROR: number; - ONE: number; - ONE_MINUS_CONSTANT_ALPHA: number; - ONE_MINUS_CONSTANT_COLOR: number; - ONE_MINUS_DST_ALPHA: number; - ONE_MINUS_DST_COLOR: number; - ONE_MINUS_SRC_ALPHA: number; - ONE_MINUS_SRC_COLOR: number; - OUT_OF_MEMORY: number; - PACK_ALIGNMENT: number; - POINTS: number; - POLYGON_OFFSET_FACTOR: number; - POLYGON_OFFSET_FILL: number; - POLYGON_OFFSET_UNITS: number; - RED_BITS: number; - RENDERBUFFER: number; - RENDERBUFFER_ALPHA_SIZE: number; - RENDERBUFFER_BINDING: number; - RENDERBUFFER_BLUE_SIZE: number; - RENDERBUFFER_DEPTH_SIZE: number; - RENDERBUFFER_GREEN_SIZE: number; - RENDERBUFFER_HEIGHT: number; - RENDERBUFFER_INTERNAL_FORMAT: number; - RENDERBUFFER_RED_SIZE: number; - RENDERBUFFER_STENCIL_SIZE: number; - RENDERBUFFER_WIDTH: number; - RENDERER: number; - REPEAT: number; - REPLACE: number; - RGB: number; - RGB565: number; - RGB5_A1: number; - RGBA: number; - RGBA4: number; - SAMPLER_2D: number; - SAMPLER_CUBE: number; - SAMPLES: number; - SAMPLE_ALPHA_TO_COVERAGE: number; - SAMPLE_BUFFERS: number; - SAMPLE_COVERAGE: number; - SAMPLE_COVERAGE_INVERT: number; - SAMPLE_COVERAGE_VALUE: number; - SCISSOR_BOX: number; - SCISSOR_TEST: number; - SHADER_TYPE: number; - SHADING_LANGUAGE_VERSION: number; - SHORT: number; - SRC_ALPHA: number; - SRC_ALPHA_SATURATE: number; - SRC_COLOR: number; - STATIC_DRAW: number; - STENCIL_ATTACHMENT: number; - STENCIL_BACK_FAIL: number; - STENCIL_BACK_FUNC: number; - STENCIL_BACK_PASS_DEPTH_FAIL: number; - STENCIL_BACK_PASS_DEPTH_PASS: number; - STENCIL_BACK_REF: number; - STENCIL_BACK_VALUE_MASK: number; - STENCIL_BACK_WRITEMASK: number; - STENCIL_BITS: number; - STENCIL_BUFFER_BIT: number; - STENCIL_CLEAR_VALUE: number; - STENCIL_FAIL: number; - STENCIL_FUNC: number; - STENCIL_INDEX: number; - STENCIL_INDEX8: number; - STENCIL_PASS_DEPTH_FAIL: number; - STENCIL_PASS_DEPTH_PASS: number; - STENCIL_REF: number; - STENCIL_TEST: number; - STENCIL_VALUE_MASK: number; - STENCIL_WRITEMASK: number; - STREAM_DRAW: number; - SUBPIXEL_BITS: number; - TEXTURE: number; - TEXTURE0: number; - TEXTURE1: number; - TEXTURE10: number; - TEXTURE11: number; - TEXTURE12: number; - TEXTURE13: number; - TEXTURE14: number; - TEXTURE15: number; - TEXTURE16: number; - TEXTURE17: number; - TEXTURE18: number; - TEXTURE19: number; - TEXTURE2: number; - TEXTURE20: number; - TEXTURE21: number; - TEXTURE22: number; - TEXTURE23: number; - TEXTURE24: number; - TEXTURE25: number; - TEXTURE26: number; - TEXTURE27: number; - TEXTURE28: number; - TEXTURE29: number; - TEXTURE3: number; - TEXTURE30: number; - TEXTURE31: number; - TEXTURE4: number; - TEXTURE5: number; - TEXTURE6: number; - TEXTURE7: number; - TEXTURE8: number; - TEXTURE9: number; - TEXTURE_2D: number; - TEXTURE_BINDING_2D: number; - TEXTURE_BINDING_CUBE_MAP: number; - TEXTURE_CUBE_MAP: number; - TEXTURE_CUBE_MAP_NEGATIVE_X: number; - TEXTURE_CUBE_MAP_NEGATIVE_Y: number; - TEXTURE_CUBE_MAP_NEGATIVE_Z: number; - TEXTURE_CUBE_MAP_POSITIVE_X: number; - TEXTURE_CUBE_MAP_POSITIVE_Y: number; - TEXTURE_CUBE_MAP_POSITIVE_Z: number; - TEXTURE_MAG_FILTER: number; - TEXTURE_MIN_FILTER: number; - TEXTURE_WRAP_S: number; - TEXTURE_WRAP_T: number; - TRIANGLES: number; - TRIANGLE_FAN: number; - TRIANGLE_STRIP: number; - UNPACK_ALIGNMENT: number; - UNPACK_COLORSPACE_CONVERSION_WEBGL: number; - UNPACK_FLIP_Y_WEBGL: number; - UNPACK_PREMULTIPLY_ALPHA_WEBGL: number; - UNSIGNED_BYTE: number; - UNSIGNED_INT: number; - UNSIGNED_SHORT: number; - UNSIGNED_SHORT_4_4_4_4: number; - UNSIGNED_SHORT_5_5_5_1: number; - UNSIGNED_SHORT_5_6_5: number; - VALIDATE_STATUS: number; - VENDOR: number; - VERSION: number; - VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: number; - VERTEX_ATTRIB_ARRAY_ENABLED: number; - VERTEX_ATTRIB_ARRAY_NORMALIZED: number; - VERTEX_ATTRIB_ARRAY_POINTER: number; - VERTEX_ATTRIB_ARRAY_SIZE: number; - VERTEX_ATTRIB_ARRAY_STRIDE: number; - VERTEX_ATTRIB_ARRAY_TYPE: number; - VERTEX_SHADER: number; - VIEWPORT: number; - ZERO: number; + readonly ACTIVE_ATTRIBUTES: number; + readonly ACTIVE_TEXTURE: number; + readonly ACTIVE_UNIFORMS: number; + readonly ALIASED_LINE_WIDTH_RANGE: number; + readonly ALIASED_POINT_SIZE_RANGE: number; + readonly ALPHA: number; + readonly ALPHA_BITS: number; + readonly ALWAYS: number; + readonly ARRAY_BUFFER: number; + readonly ARRAY_BUFFER_BINDING: number; + readonly ATTACHED_SHADERS: number; + readonly BACK: number; + readonly BLEND: number; + readonly BLEND_COLOR: number; + readonly BLEND_DST_ALPHA: number; + readonly BLEND_DST_RGB: number; + readonly BLEND_EQUATION: number; + readonly BLEND_EQUATION_ALPHA: number; + readonly BLEND_EQUATION_RGB: number; + readonly BLEND_SRC_ALPHA: number; + readonly BLEND_SRC_RGB: number; + readonly BLUE_BITS: number; + readonly BOOL: number; + readonly BOOL_VEC2: number; + readonly BOOL_VEC3: number; + readonly BOOL_VEC4: number; + readonly BROWSER_DEFAULT_WEBGL: number; + readonly BUFFER_SIZE: number; + readonly BUFFER_USAGE: number; + readonly BYTE: number; + readonly CCW: number; + readonly CLAMP_TO_EDGE: number; + readonly COLOR_ATTACHMENT0: number; + readonly COLOR_BUFFER_BIT: number; + readonly COLOR_CLEAR_VALUE: number; + readonly COLOR_WRITEMASK: number; + readonly COMPILE_STATUS: number; + readonly COMPRESSED_TEXTURE_FORMATS: number; + readonly CONSTANT_ALPHA: number; + readonly CONSTANT_COLOR: number; + readonly CONTEXT_LOST_WEBGL: number; + readonly CULL_FACE: number; + readonly CULL_FACE_MODE: number; + readonly CURRENT_PROGRAM: number; + readonly CURRENT_VERTEX_ATTRIB: number; + readonly CW: number; + readonly DECR: number; + readonly DECR_WRAP: number; + readonly DELETE_STATUS: number; + readonly DEPTH_ATTACHMENT: number; + readonly DEPTH_BITS: number; + readonly DEPTH_BUFFER_BIT: number; + readonly DEPTH_CLEAR_VALUE: number; + readonly DEPTH_COMPONENT: number; + readonly DEPTH_COMPONENT16: number; + readonly DEPTH_FUNC: number; + readonly DEPTH_RANGE: number; + readonly DEPTH_STENCIL: number; + readonly DEPTH_STENCIL_ATTACHMENT: number; + readonly DEPTH_TEST: number; + readonly DEPTH_WRITEMASK: number; + readonly DITHER: number; + readonly DONT_CARE: number; + readonly DST_ALPHA: number; + readonly DST_COLOR: number; + readonly DYNAMIC_DRAW: number; + readonly ELEMENT_ARRAY_BUFFER: number; + readonly ELEMENT_ARRAY_BUFFER_BINDING: number; + readonly EQUAL: number; + readonly FASTEST: number; + readonly FLOAT: number; + readonly FLOAT_MAT2: number; + readonly FLOAT_MAT3: number; + readonly FLOAT_MAT4: number; + readonly FLOAT_VEC2: number; + readonly FLOAT_VEC3: number; + readonly FLOAT_VEC4: number; + readonly FRAGMENT_SHADER: number; + readonly FRAMEBUFFER: number; + readonly FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: number; + readonly FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: number; + readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: number; + readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: number; + readonly FRAMEBUFFER_BINDING: number; + readonly FRAMEBUFFER_COMPLETE: number; + readonly FRAMEBUFFER_INCOMPLETE_ATTACHMENT: number; + readonly FRAMEBUFFER_INCOMPLETE_DIMENSIONS: number; + readonly FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: number; + readonly FRAMEBUFFER_UNSUPPORTED: number; + readonly FRONT: number; + readonly FRONT_AND_BACK: number; + readonly FRONT_FACE: number; + readonly FUNC_ADD: number; + readonly FUNC_REVERSE_SUBTRACT: number; + readonly FUNC_SUBTRACT: number; + readonly GENERATE_MIPMAP_HINT: number; + readonly GEQUAL: number; + readonly GREATER: number; + readonly GREEN_BITS: number; + readonly HIGH_FLOAT: number; + readonly HIGH_INT: number; + readonly IMPLEMENTATION_COLOR_READ_FORMAT: number; + readonly IMPLEMENTATION_COLOR_READ_TYPE: number; + readonly INCR: number; + readonly INCR_WRAP: number; + readonly INT: number; + readonly INT_VEC2: number; + readonly INT_VEC3: number; + readonly INT_VEC4: number; + readonly INVALID_ENUM: number; + readonly INVALID_FRAMEBUFFER_OPERATION: number; + readonly INVALID_OPERATION: number; + readonly INVALID_VALUE: number; + readonly INVERT: number; + readonly KEEP: number; + readonly LEQUAL: number; + readonly LESS: number; + readonly LINEAR: number; + readonly LINEAR_MIPMAP_LINEAR: number; + readonly LINEAR_MIPMAP_NEAREST: number; + readonly LINES: number; + readonly LINE_LOOP: number; + readonly LINE_STRIP: number; + readonly LINE_WIDTH: number; + readonly LINK_STATUS: number; + readonly LOW_FLOAT: number; + readonly LOW_INT: number; + readonly LUMINANCE: number; + readonly LUMINANCE_ALPHA: number; + readonly MAX_COMBINED_TEXTURE_IMAGE_UNITS: number; + readonly MAX_CUBE_MAP_TEXTURE_SIZE: number; + readonly MAX_FRAGMENT_UNIFORM_VECTORS: number; + readonly MAX_RENDERBUFFER_SIZE: number; + readonly MAX_TEXTURE_IMAGE_UNITS: number; + readonly MAX_TEXTURE_SIZE: number; + readonly MAX_VARYING_VECTORS: number; + readonly MAX_VERTEX_ATTRIBS: number; + readonly MAX_VERTEX_TEXTURE_IMAGE_UNITS: number; + readonly MAX_VERTEX_UNIFORM_VECTORS: number; + readonly MAX_VIEWPORT_DIMS: number; + readonly MEDIUM_FLOAT: number; + readonly MEDIUM_INT: number; + readonly MIRRORED_REPEAT: number; + readonly NEAREST: number; + readonly NEAREST_MIPMAP_LINEAR: number; + readonly NEAREST_MIPMAP_NEAREST: number; + readonly NEVER: number; + readonly NICEST: number; + readonly NONE: number; + readonly NOTEQUAL: number; + readonly NO_ERROR: number; + readonly ONE: number; + readonly ONE_MINUS_CONSTANT_ALPHA: number; + readonly ONE_MINUS_CONSTANT_COLOR: number; + readonly ONE_MINUS_DST_ALPHA: number; + readonly ONE_MINUS_DST_COLOR: number; + readonly ONE_MINUS_SRC_ALPHA: number; + readonly ONE_MINUS_SRC_COLOR: number; + readonly OUT_OF_MEMORY: number; + readonly PACK_ALIGNMENT: number; + readonly POINTS: number; + readonly POLYGON_OFFSET_FACTOR: number; + readonly POLYGON_OFFSET_FILL: number; + readonly POLYGON_OFFSET_UNITS: number; + readonly RED_BITS: number; + readonly RENDERBUFFER: number; + readonly RENDERBUFFER_ALPHA_SIZE: number; + readonly RENDERBUFFER_BINDING: number; + readonly RENDERBUFFER_BLUE_SIZE: number; + readonly RENDERBUFFER_DEPTH_SIZE: number; + readonly RENDERBUFFER_GREEN_SIZE: number; + readonly RENDERBUFFER_HEIGHT: number; + readonly RENDERBUFFER_INTERNAL_FORMAT: number; + readonly RENDERBUFFER_RED_SIZE: number; + readonly RENDERBUFFER_STENCIL_SIZE: number; + readonly RENDERBUFFER_WIDTH: number; + readonly RENDERER: number; + readonly REPEAT: number; + readonly REPLACE: number; + readonly RGB: number; + readonly RGB565: number; + readonly RGB5_A1: number; + readonly RGBA: number; + readonly RGBA4: number; + readonly SAMPLER_2D: number; + readonly SAMPLER_CUBE: number; + readonly SAMPLES: number; + readonly SAMPLE_ALPHA_TO_COVERAGE: number; + readonly SAMPLE_BUFFERS: number; + readonly SAMPLE_COVERAGE: number; + readonly SAMPLE_COVERAGE_INVERT: number; + readonly SAMPLE_COVERAGE_VALUE: number; + readonly SCISSOR_BOX: number; + readonly SCISSOR_TEST: number; + readonly SHADER_TYPE: number; + readonly SHADING_LANGUAGE_VERSION: number; + readonly SHORT: number; + readonly SRC_ALPHA: number; + readonly SRC_ALPHA_SATURATE: number; + readonly SRC_COLOR: number; + readonly STATIC_DRAW: number; + readonly STENCIL_ATTACHMENT: number; + readonly STENCIL_BACK_FAIL: number; + readonly STENCIL_BACK_FUNC: number; + readonly STENCIL_BACK_PASS_DEPTH_FAIL: number; + readonly STENCIL_BACK_PASS_DEPTH_PASS: number; + readonly STENCIL_BACK_REF: number; + readonly STENCIL_BACK_VALUE_MASK: number; + readonly STENCIL_BACK_WRITEMASK: number; + readonly STENCIL_BITS: number; + readonly STENCIL_BUFFER_BIT: number; + readonly STENCIL_CLEAR_VALUE: number; + readonly STENCIL_FAIL: number; + readonly STENCIL_FUNC: number; + readonly STENCIL_INDEX: number; + readonly STENCIL_INDEX8: number; + readonly STENCIL_PASS_DEPTH_FAIL: number; + readonly STENCIL_PASS_DEPTH_PASS: number; + readonly STENCIL_REF: number; + readonly STENCIL_TEST: number; + readonly STENCIL_VALUE_MASK: number; + readonly STENCIL_WRITEMASK: number; + readonly STREAM_DRAW: number; + readonly SUBPIXEL_BITS: number; + readonly TEXTURE: number; + readonly TEXTURE0: number; + readonly TEXTURE1: number; + readonly TEXTURE10: number; + readonly TEXTURE11: number; + readonly TEXTURE12: number; + readonly TEXTURE13: number; + readonly TEXTURE14: number; + readonly TEXTURE15: number; + readonly TEXTURE16: number; + readonly TEXTURE17: number; + readonly TEXTURE18: number; + readonly TEXTURE19: number; + readonly TEXTURE2: number; + readonly TEXTURE20: number; + readonly TEXTURE21: number; + readonly TEXTURE22: number; + readonly TEXTURE23: number; + readonly TEXTURE24: number; + readonly TEXTURE25: number; + readonly TEXTURE26: number; + readonly TEXTURE27: number; + readonly TEXTURE28: number; + readonly TEXTURE29: number; + readonly TEXTURE3: number; + readonly TEXTURE30: number; + readonly TEXTURE31: number; + readonly TEXTURE4: number; + readonly TEXTURE5: number; + readonly TEXTURE6: number; + readonly TEXTURE7: number; + readonly TEXTURE8: number; + readonly TEXTURE9: number; + readonly TEXTURE_2D: number; + readonly TEXTURE_BINDING_2D: number; + readonly TEXTURE_BINDING_CUBE_MAP: number; + readonly TEXTURE_CUBE_MAP: number; + readonly TEXTURE_CUBE_MAP_NEGATIVE_X: number; + readonly TEXTURE_CUBE_MAP_NEGATIVE_Y: number; + readonly TEXTURE_CUBE_MAP_NEGATIVE_Z: number; + readonly TEXTURE_CUBE_MAP_POSITIVE_X: number; + readonly TEXTURE_CUBE_MAP_POSITIVE_Y: number; + readonly TEXTURE_CUBE_MAP_POSITIVE_Z: number; + readonly TEXTURE_MAG_FILTER: number; + readonly TEXTURE_MIN_FILTER: number; + readonly TEXTURE_WRAP_S: number; + readonly TEXTURE_WRAP_T: number; + readonly TRIANGLES: number; + readonly TRIANGLE_FAN: number; + readonly TRIANGLE_STRIP: number; + readonly UNPACK_ALIGNMENT: number; + readonly UNPACK_COLORSPACE_CONVERSION_WEBGL: number; + readonly UNPACK_FLIP_Y_WEBGL: number; + readonly UNPACK_PREMULTIPLY_ALPHA_WEBGL: number; + readonly UNSIGNED_BYTE: number; + readonly UNSIGNED_INT: number; + readonly UNSIGNED_SHORT: number; + readonly UNSIGNED_SHORT_4_4_4_4: number; + readonly UNSIGNED_SHORT_5_5_5_1: number; + readonly UNSIGNED_SHORT_5_6_5: number; + readonly VALIDATE_STATUS: number; + readonly VENDOR: number; + readonly VERSION: number; + readonly VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: number; + readonly VERTEX_ATTRIB_ARRAY_ENABLED: number; + readonly VERTEX_ATTRIB_ARRAY_NORMALIZED: number; + readonly VERTEX_ATTRIB_ARRAY_POINTER: number; + readonly VERTEX_ATTRIB_ARRAY_SIZE: number; + readonly VERTEX_ATTRIB_ARRAY_STRIDE: number; + readonly VERTEX_ATTRIB_ARRAY_TYPE: number; + readonly VERTEX_SHADER: number; + readonly VIEWPORT: number; + readonly ZERO: number; } interface WebGLShader extends WebGLObject { @@ -15824,9 +16819,9 @@ declare var WebGLShader: { } interface WebGLShaderPrecisionFormat { - precision: number; - rangeMax: number; - rangeMin: number; + readonly precision: number; + readonly rangeMax: number; + readonly rangeMin: number; } declare var WebGLShaderPrecisionFormat: { @@ -15902,21 +16897,21 @@ declare var WebKitPoint: { interface WebSocket extends EventTarget { binaryType: string; - bufferedAmount: number; - extensions: string; + readonly bufferedAmount: number; + readonly extensions: string; onclose: (ev: CloseEvent) => any; onerror: (ev: Event) => any; onmessage: (ev: MessageEvent) => any; onopen: (ev: Event) => any; - protocol: string; - readyState: number; - url: string; + readonly protocol: string; + readonly readyState: number; + readonly url: string; close(code?: number, reason?: string): void; send(data: any): void; - CLOSED: number; - CLOSING: number; - CONNECTING: number; - OPEN: number; + readonly CLOSED: number; + 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; @@ -15927,56 +16922,58 @@ interface WebSocket extends EventTarget { declare var WebSocket: { prototype: WebSocket; new(url: string, protocols?: string | string[]): WebSocket; - CLOSED: number; - CLOSING: number; - CONNECTING: number; - OPEN: number; + readonly CLOSED: number; + readonly CLOSING: number; + readonly CONNECTING: number; + readonly OPEN: number; } interface WheelEvent extends MouseEvent { - deltaMode: number; - deltaX: number; - deltaY: number; - deltaZ: number; + readonly deltaMode: number; + readonly deltaX: number; + readonly deltaY: number; + readonly deltaZ: number; + readonly wheelDelta: number; + readonly wheelDeltaX: number; + readonly wheelDeltaY: number; getCurrentPoint(element: Element): void; initWheelEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, screenXArg: number, screenYArg: number, clientXArg: number, clientYArg: number, buttonArg: number, relatedTargetArg: EventTarget, modifiersListArg: string, deltaXArg: number, deltaYArg: number, deltaZArg: number, deltaMode: number): void; - DOM_DELTA_LINE: number; - DOM_DELTA_PAGE: number; - DOM_DELTA_PIXEL: number; + readonly DOM_DELTA_LINE: number; + readonly DOM_DELTA_PAGE: number; + readonly DOM_DELTA_PIXEL: number; } declare var WheelEvent: { prototype: WheelEvent; new(typeArg: string, eventInitDict?: WheelEventInit): WheelEvent; - DOM_DELTA_LINE: number; - DOM_DELTA_PAGE: number; - DOM_DELTA_PIXEL: number; + readonly DOM_DELTA_LINE: number; + readonly DOM_DELTA_PAGE: number; + readonly DOM_DELTA_PIXEL: number; } interface Window extends EventTarget, WindowTimers, WindowSessionStorage, WindowLocalStorage, WindowConsole, GlobalEventHandlers, IDBEnvironment, WindowBase64 { - animationStartTime: number; - applicationCache: ApplicationCache; - clientInformation: Navigator; - closed: boolean; - crypto: Crypto; + readonly applicationCache: ApplicationCache; + readonly clientInformation: Navigator; + readonly closed: boolean; + readonly crypto: Crypto; defaultStatus: string; - devicePixelRatio: number; - doNotTrack: string; - document: Document; + readonly devicePixelRatio: number; + readonly doNotTrack: string; + readonly document: Document; event: Event; - external: External; - frameElement: Element; - frames: Window; - history: History; - innerHeight: number; - innerWidth: number; - length: number; - location: Location; - locationbar: BarProp; - menubar: BarProp; - msAnimationStartTime: number; + readonly external: External; + readonly frameElement: Element; + readonly frames: Window; + readonly history: History; + readonly innerHeight: number; + readonly innerWidth: number; + readonly length: number; + readonly location: Location; + readonly locationbar: BarProp; + readonly menubar: BarProp; + readonly msCredentials: MSCredentials; name: string; - navigator: Navigator; + readonly navigator: Navigator; offscreenBuffering: string | boolean; onabort: (ev: Event) => any; onafterprint: (ev: Event) => any; @@ -15990,6 +16987,7 @@ interface Window extends EventTarget, WindowTimers, WindowSessionStorage, Window oncompassneedscalibration: (ev: Event) => any; oncontextmenu: (ev: PointerEvent) => any; ondblclick: (ev: MouseEvent) => any; + ondevicelight: (ev: DeviceLightEvent) => any; ondevicemotion: (ev: DeviceMotionEvent) => any; ondeviceorientation: (ev: DeviceOrientationEvent) => any; ondrag: (ev: DragEvent) => any; @@ -16001,11 +16999,12 @@ interface Window extends EventTarget, WindowTimers, WindowSessionStorage, Window ondrop: (ev: DragEvent) => any; ondurationchange: (ev: Event) => any; onemptied: (ev: Event) => any; - onended: (ev: Event) => any; + onended: (ev: MediaStreamErrorEvent) => any; onerror: ErrorEventHandler; onfocus: (ev: FocusEvent) => any; onhashchange: (ev: HashChangeEvent) => any; oninput: (ev: Event) => any; + oninvalid: (ev: Event) => any; onkeydown: (ev: KeyboardEvent) => any; onkeypress: (ev: KeyboardEvent) => any; onkeyup: (ev: KeyboardEvent) => any; @@ -16021,7 +17020,7 @@ interface Window extends EventTarget, WindowTimers, WindowSessionStorage, Window onmouseout: (ev: MouseEvent) => any; onmouseover: (ev: MouseEvent) => any; onmouseup: (ev: MouseEvent) => any; - onmousewheel: (ev: MouseWheelEvent) => any; + onmousewheel: (ev: WheelEvent) => any; onmsgesturechange: (ev: MSGestureEvent) => any; onmsgesturedoubletap: (ev: MSGestureEvent) => any; onmsgestureend: (ev: MSGestureEvent) => any; @@ -16060,38 +17059,38 @@ interface Window extends EventTarget, WindowTimers, WindowSessionStorage, Window onsubmit: (ev: Event) => any; onsuspend: (ev: Event) => any; ontimeupdate: (ev: Event) => any; - ontouchcancel: any; - ontouchend: any; - ontouchmove: any; - ontouchstart: any; + ontouchcancel: (ev: TouchEvent) => any; + ontouchend: (ev: TouchEvent) => any; + ontouchmove: (ev: TouchEvent) => any; + ontouchstart: (ev: TouchEvent) => any; onunload: (ev: Event) => any; onvolumechange: (ev: Event) => any; onwaiting: (ev: Event) => any; - opener: Window; + readonly opener: Window; orientation: string | number; - outerHeight: number; - outerWidth: number; - pageXOffset: number; - pageYOffset: number; - parent: Window; - performance: Performance; - personalbar: BarProp; - screen: Screen; - screenLeft: number; - screenTop: number; - screenX: number; - screenY: number; - scrollX: number; - scrollY: number; - scrollbars: BarProp; - self: Window; + readonly outerHeight: number; + readonly outerWidth: number; + readonly pageXOffset: number; + readonly pageYOffset: number; + readonly parent: Window; + readonly performance: Performance; + readonly personalbar: BarProp; + readonly screen: Screen; + readonly screenLeft: number; + readonly screenTop: number; + readonly screenX: number; + readonly screenY: number; + readonly scrollX: number; + readonly scrollY: number; + readonly scrollbars: BarProp; + readonly self: Window; status: string; - statusbar: BarProp; - styleMedia: StyleMedia; - toolbar: BarProp; - top: Window; - window: Window; - URL: URL; + readonly statusbar: BarProp; + readonly styleMedia: StyleMedia; + readonly toolbar: BarProp; + readonly top: Window; + readonly window: Window; + URL: typeof URL; alert(message?: any): void; blur(): void; cancelAnimationFrame(handle: number): void; @@ -16105,12 +17104,9 @@ interface Window extends EventTarget, WindowTimers, WindowSessionStorage, Window matchMedia(mediaQuery: string): MediaQueryList; moveBy(x?: number, y?: number): void; moveTo(x?: number, y?: number): void; - msCancelRequestAnimationFrame(handle: number): void; - msMatchMedia(mediaQuery: string): MediaQueryList; - msRequestAnimationFrame(callback: FrameRequestCallback): number; msWriteProfilerMark(profilerMarkName: string): void; open(url?: string, target?: string, features?: string, replace?: boolean): Window; - postMessage(message: any, targetOrigin: string, ports?: any): void; + postMessage(message: any, targetOrigin: string, transfer?: any[]): void; print(): void; prompt(message?: string, _default?: string): string; releaseEvents(): void; @@ -16120,8 +17116,10 @@ interface Window extends EventTarget, WindowTimers, WindowSessionStorage, Window scroll(x?: number, y?: number): void; scrollBy(x?: number, y?: number): void; scrollTo(x?: number, y?: number): void; + webkitCancelAnimationFrame(handle: number): void; webkitConvertPointFromNodeToPage(node: Node, pt: WebKitPoint): WebKitPoint; webkitConvertPointFromPageToNode(node: Node, pt: WebKitPoint): WebKitPoint; + webkitRequestAnimationFrame(callback: FrameRequestCallback): number; addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; addEventListener(type: "MSGestureDoubleTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; addEventListener(type: "MSGestureEnd", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; @@ -16149,6 +17147,7 @@ interface Window extends EventTarget, WindowTimers, WindowSessionStorage, Window addEventListener(type: "compassneedscalibration", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "devicelight", listener: (ev: DeviceLightEvent) => any, useCapture?: boolean): void; addEventListener(type: "devicemotion", listener: (ev: DeviceMotionEvent) => any, useCapture?: boolean): void; addEventListener(type: "deviceorientation", listener: (ev: DeviceOrientationEvent) => any, useCapture?: boolean): void; addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void; @@ -16160,10 +17159,11 @@ interface Window extends EventTarget, WindowTimers, WindowSessionStorage, Window addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "ended", listener: (ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; addEventListener(type: "hashchange", listener: (ev: HashChangeEvent) => any, useCapture?: boolean): void; addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "invalid", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; @@ -16179,7 +17179,7 @@ interface Window extends EventTarget, WindowTimers, WindowSessionStorage, Window addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousewheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; addEventListener(type: "offline", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "online", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "orientationchange", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -16249,16 +17249,15 @@ declare var XMLDocument: { interface XMLHttpRequest extends EventTarget, XMLHttpRequestEventTarget { msCaching: string; onreadystatechange: (ev: ProgressEvent) => any; - readyState: number; - response: any; - responseBody: any; - responseText: string; + readonly readyState: number; + readonly response: any; + readonly responseText: string; responseType: string; - responseXML: any; - status: number; - statusText: string; + readonly responseXML: any; + readonly status: number; + readonly statusText: string; timeout: number; - upload: XMLHttpRequestUpload; + readonly upload: XMLHttpRequestUpload; withCredentials: boolean; abort(): void; getAllResponseHeaders(): string; @@ -16270,11 +17269,11 @@ interface XMLHttpRequest extends EventTarget, XMLHttpRequestEventTarget { send(data?: string): void; send(data?: any): void; setRequestHeader(header: string, value: string): void; - DONE: number; - HEADERS_RECEIVED: number; - LOADING: number; - OPENED: number; - UNSENT: number; + readonly DONE: number; + readonly HEADERS_RECEIVED: number; + 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; @@ -16289,11 +17288,11 @@ interface XMLHttpRequest extends EventTarget, XMLHttpRequestEventTarget { declare var XMLHttpRequest: { prototype: XMLHttpRequest; new(): XMLHttpRequest; - DONE: number; - HEADERS_RECEIVED: number; - LOADING: number; - OPENED: number; - UNSENT: number; + readonly DONE: number; + readonly HEADERS_RECEIVED: number; + readonly LOADING: number; + readonly OPENED: number; + readonly UNSENT: number; create(): XMLHttpRequest; } @@ -16345,40 +17344,40 @@ declare var XPathNSResolver: { } interface XPathResult { - booleanValue: boolean; - invalidIteratorState: boolean; - numberValue: number; - resultType: number; - singleNodeValue: Node; - snapshotLength: number; - stringValue: string; + readonly booleanValue: boolean; + readonly invalidIteratorState: boolean; + readonly numberValue: number; + readonly resultType: number; + readonly singleNodeValue: Node; + readonly snapshotLength: number; + readonly stringValue: string; iterateNext(): Node; snapshotItem(index: number): Node; - ANY_TYPE: number; - ANY_UNORDERED_NODE_TYPE: number; - BOOLEAN_TYPE: number; - FIRST_ORDERED_NODE_TYPE: number; - NUMBER_TYPE: number; - ORDERED_NODE_ITERATOR_TYPE: number; - ORDERED_NODE_SNAPSHOT_TYPE: number; - STRING_TYPE: number; - UNORDERED_NODE_ITERATOR_TYPE: number; - UNORDERED_NODE_SNAPSHOT_TYPE: number; + readonly ANY_TYPE: number; + readonly ANY_UNORDERED_NODE_TYPE: number; + readonly BOOLEAN_TYPE: number; + readonly FIRST_ORDERED_NODE_TYPE: number; + readonly NUMBER_TYPE: number; + readonly ORDERED_NODE_ITERATOR_TYPE: number; + readonly ORDERED_NODE_SNAPSHOT_TYPE: number; + readonly STRING_TYPE: number; + readonly UNORDERED_NODE_ITERATOR_TYPE: number; + readonly UNORDERED_NODE_SNAPSHOT_TYPE: number; } declare var XPathResult: { prototype: XPathResult; new(): XPathResult; - ANY_TYPE: number; - ANY_UNORDERED_NODE_TYPE: number; - BOOLEAN_TYPE: number; - FIRST_ORDERED_NODE_TYPE: number; - NUMBER_TYPE: number; - ORDERED_NODE_ITERATOR_TYPE: number; - ORDERED_NODE_SNAPSHOT_TYPE: number; - STRING_TYPE: number; - UNORDERED_NODE_ITERATOR_TYPE: number; - UNORDERED_NODE_SNAPSHOT_TYPE: number; + readonly ANY_TYPE: number; + readonly ANY_UNORDERED_NODE_TYPE: number; + readonly BOOLEAN_TYPE: number; + readonly FIRST_ORDERED_NODE_TYPE: number; + readonly NUMBER_TYPE: number; + readonly ORDERED_NODE_ITERATOR_TYPE: number; + readonly ORDERED_NODE_SNAPSHOT_TYPE: number; + readonly STRING_TYPE: number; + readonly UNORDERED_NODE_ITERATOR_TYPE: number; + readonly UNORDERED_NODE_SNAPSHOT_TYPE: number; } interface XSLTProcessor { @@ -16403,6 +17402,18 @@ interface AbstractWorker { addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } +interface CanvasPathMethods { + arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, anticlockwise?: boolean): void; + arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): void; + bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): void; + closePath(): void; + ellipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number, startAngle: number, endAngle: number, anticlockwise?: boolean): void; + lineTo(x: number, y: number): void; + moveTo(x: number, y: number): void; + quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void; + rect(x: number, y: number, w: number, h: number): void; +} + interface ChildNode { remove(): void; } @@ -16425,6 +17436,7 @@ interface DocumentEvent { createEvent(eventInterface:"CommandEvent"): CommandEvent; createEvent(eventInterface:"CompositionEvent"): CompositionEvent; createEvent(eventInterface:"CustomEvent"): CustomEvent; + createEvent(eventInterface:"DeviceLightEvent"): DeviceLightEvent; createEvent(eventInterface:"DeviceMotionEvent"): DeviceMotionEvent; createEvent(eventInterface:"DeviceOrientationEvent"): DeviceOrientationEvent; createEvent(eventInterface:"DragEvent"): DragEvent; @@ -16436,6 +17448,7 @@ interface DocumentEvent { createEvent(eventInterface:"HashChangeEvent"): HashChangeEvent; createEvent(eventInterface:"IDBVersionChangeEvent"): IDBVersionChangeEvent; createEvent(eventInterface:"KeyboardEvent"): KeyboardEvent; + createEvent(eventInterface:"ListeningStateChangedEvent"): ListeningStateChangedEvent; createEvent(eventInterface:"LongRunningScriptDetectedEvent"): LongRunningScriptDetectedEvent; createEvent(eventInterface:"MSGestureEvent"): MSGestureEvent; createEvent(eventInterface:"MSManipulationEvent"): MSManipulationEvent; @@ -16443,21 +17456,31 @@ interface DocumentEvent { createEvent(eventInterface:"MSMediaKeyNeededEvent"): MSMediaKeyNeededEvent; createEvent(eventInterface:"MSPointerEvent"): MSPointerEvent; createEvent(eventInterface:"MSSiteModeEvent"): MSSiteModeEvent; + createEvent(eventInterface:"MediaEncryptedEvent"): MediaEncryptedEvent; + createEvent(eventInterface:"MediaKeyMessageEvent"): MediaKeyMessageEvent; + createEvent(eventInterface:"MediaStreamErrorEvent"): MediaStreamErrorEvent; + createEvent(eventInterface:"MediaStreamTrackEvent"): MediaStreamTrackEvent; createEvent(eventInterface:"MessageEvent"): MessageEvent; createEvent(eventInterface:"MouseEvent"): MouseEvent; createEvent(eventInterface:"MouseEvents"): MouseEvent; - createEvent(eventInterface:"MouseWheelEvent"): MouseWheelEvent; createEvent(eventInterface:"MutationEvent"): MutationEvent; createEvent(eventInterface:"MutationEvents"): MutationEvent; createEvent(eventInterface:"NavigationCompletedEvent"): NavigationCompletedEvent; createEvent(eventInterface:"NavigationEvent"): NavigationEvent; createEvent(eventInterface:"NavigationEventWithReferrer"): NavigationEventWithReferrer; createEvent(eventInterface:"OfflineAudioCompletionEvent"): OfflineAudioCompletionEvent; + createEvent(eventInterface:"OverflowEvent"): OverflowEvent; createEvent(eventInterface:"PageTransitionEvent"): PageTransitionEvent; createEvent(eventInterface:"PermissionRequestedEvent"): PermissionRequestedEvent; createEvent(eventInterface:"PointerEvent"): PointerEvent; createEvent(eventInterface:"PopStateEvent"): PopStateEvent; createEvent(eventInterface:"ProgressEvent"): ProgressEvent; + createEvent(eventInterface:"RTCDTMFToneChangeEvent"): RTCDTMFToneChangeEvent; + createEvent(eventInterface:"RTCDtlsTransportStateChangedEvent"): RTCDtlsTransportStateChangedEvent; + createEvent(eventInterface:"RTCIceCandidatePairChangedEvent"): RTCIceCandidatePairChangedEvent; + createEvent(eventInterface:"RTCIceGathererEvent"): RTCIceGathererEvent; + createEvent(eventInterface:"RTCIceTransportStateChangedEvent"): RTCIceTransportStateChangedEvent; + createEvent(eventInterface:"RTCSsrcConflictEvent"): RTCSsrcConflictEvent; createEvent(eventInterface:"SVGZoomEvent"): SVGZoomEvent; createEvent(eventInterface:"SVGZoomEvents"): SVGZoomEvent; createEvent(eventInterface:"ScriptNotifyEvent"): ScriptNotifyEvent; @@ -16475,11 +17498,11 @@ interface DocumentEvent { } interface ElementTraversal { - childElementCount: number; - firstElementChild: Element; - lastElementChild: Element; - nextElementSibling: Element; - previousElementSibling: Element; + readonly childElementCount: number; + readonly firstElementChild: Element; + readonly lastElementChild: Element; + readonly nextElementSibling: Element; + readonly previousElementSibling: Element; } interface GetSVGDocument { @@ -16524,12 +17547,11 @@ interface HTMLTableAlignment { } interface IDBEnvironment { - indexedDB: IDBFactory; - msIndexedDB: IDBFactory; + readonly indexedDB: IDBFactory; } interface LinkStyle { - sheet: StyleSheet; + readonly sheet: StyleSheet; } interface MSBaseReader { @@ -16539,12 +17561,12 @@ interface MSBaseReader { onloadend: (ev: ProgressEvent) => any; onloadstart: (ev: Event) => any; onprogress: (ev: ProgressEvent) => any; - readyState: number; - result: any; + readonly readyState: number; + readonly result: any; abort(): void; - DONE: number; - EMPTY: number; - LOADING: number; + 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; @@ -16572,27 +17594,32 @@ interface NavigatorContentUtils { } interface NavigatorGeolocation { - geolocation: Geolocation; + readonly geolocation: Geolocation; } interface NavigatorID { - appName: string; - appVersion: string; - platform: string; - product: string; - productSub: string; - userAgent: string; - vendor: string; - vendorSub: string; + readonly appName: string; + readonly appVersion: string; + readonly platform: string; + readonly product: string; + readonly productSub: string; + readonly userAgent: string; + readonly vendor: string; + readonly vendorSub: string; } interface NavigatorOnLine { - onLine: boolean; + readonly onLine: boolean; } interface NavigatorStorageUtils { } +interface NavigatorUserMedia { + readonly mediaDevices: MediaDevices; + getUserMedia(constraints: MediaStreamConstraints, successCallback: NavigatorUserMediaSuccessCallback, errorCallback: NavigatorUserMediaErrorCallback): void; +} + interface NodeSelector { querySelector(selectors: string): Element; querySelectorAll(selectors: string): NodeListOf; @@ -16603,29 +17630,29 @@ interface RandomSource { } interface SVGAnimatedPathData { - pathSegList: SVGPathSegList; + readonly pathSegList: SVGPathSegList; } interface SVGAnimatedPoints { - animatedPoints: SVGPointList; - points: SVGPointList; + readonly animatedPoints: SVGPointList; + readonly points: SVGPointList; } interface SVGExternalResourcesRequired { - externalResourcesRequired: SVGAnimatedBoolean; + readonly externalResourcesRequired: SVGAnimatedBoolean; } interface SVGFilterPrimitiveStandardAttributes extends SVGStylable { - height: SVGAnimatedLength; - result: SVGAnimatedString; - width: SVGAnimatedLength; - x: SVGAnimatedLength; - y: SVGAnimatedLength; + readonly height: SVGAnimatedLength; + readonly result: SVGAnimatedString; + readonly width: SVGAnimatedLength; + readonly x: SVGAnimatedLength; + readonly y: SVGAnimatedLength; } interface SVGFitToViewBox { - preserveAspectRatio: SVGAnimatedPreserveAspectRatio; - viewBox: SVGAnimatedRect; + readonly preserveAspectRatio: SVGAnimatedPreserveAspectRatio; + readonly viewBox: SVGAnimatedRect; } interface SVGLangSpace { @@ -16634,8 +17661,8 @@ interface SVGLangSpace { } interface SVGLocatable { - farthestViewportElement: SVGElement; - nearestViewportElement: SVGElement; + readonly farthestViewportElement: SVGElement; + readonly nearestViewportElement: SVGElement; getBBox(): SVGRect; getCTM(): SVGMatrix; getScreenCTM(): SVGMatrix; @@ -16644,22 +17671,22 @@ interface SVGLocatable { interface SVGStylable { className: any; - style: CSSStyleDeclaration; + readonly style: CSSStyleDeclaration; } interface SVGTests { - requiredExtensions: SVGStringList; - requiredFeatures: SVGStringList; - systemLanguage: SVGStringList; + readonly requiredExtensions: SVGStringList; + readonly requiredFeatures: SVGStringList; + readonly systemLanguage: SVGStringList; hasExtension(extension: string): boolean; } interface SVGTransformable extends SVGLocatable { - transform: SVGAnimatedTransformList; + readonly transform: SVGAnimatedTransformList; } interface SVGURIReference { - href: SVGAnimatedString; + readonly href: SVGAnimatedString; } interface WindowBase64 { @@ -16668,15 +17695,15 @@ interface WindowBase64 { } interface WindowConsole { - console: Console; + readonly console: Console; } interface WindowLocalStorage { - localStorage: Storage; + readonly localStorage: Storage; } interface WindowSessionStorage { - sessionStorage: Storage; + readonly sessionStorage: Storage; } interface WindowTimers extends Object, WindowTimersExtension { @@ -16688,8 +17715,6 @@ interface WindowTimers extends Object, WindowTimersExtension { interface WindowTimersExtension { clearImmediate(handle: number): void; - msClearImmediate(handle: number): void; - msSetImmediate(expression: any, ...args: any[]): number; setImmediate(expression: any, ...args: any[]): number; } @@ -16719,22 +17744,18 @@ interface StorageEventInit extends EventInit { storageArea?: Storage; } -interface IDBObjectStoreParameters { - keyPath?: string | string[]; - autoIncrement?: boolean; -} - -interface IDBIndexParameters { - unique?: boolean; - multiEntry?: boolean; -} - interface NodeListOf extends NodeList { length: number; item(index: number): TNode; [index: number]: TNode; } +interface HTMLCollectionOf extends HTMLCollection { + item(index: number): T; + namedItem(name: string): T; + [index: number]: T; +} + interface BlobPropertyBag { type?: string; endings?: string; @@ -16764,15 +17785,6 @@ interface ProgressEventInit extends EventInit { total?: number; } -interface HTMLTemplateElement extends HTMLElement { - content: DocumentFragment; -} - -declare var HTMLTemplateElement: { - prototype: HTMLTemplateElement; - new(): HTMLTemplateElement; -} - interface HTMLPictureElement extends HTMLElement { } @@ -16781,6 +17793,14 @@ declare var HTMLPictureElement: { new(): HTMLPictureElement; } +interface ClipboardEventInit extends EventInit { + data?: string; + dataType?: string; +} + +interface IDBArrayKey extends Array { +} + declare type EventListenerOrEventListenerObject = EventListener | EventListenerObject; interface ErrorEventHandler { @@ -16819,10 +17839,18 @@ interface DecodeErrorCallback { interface FunctionStringCallback { (data: string): void; } +interface NavigatorUserMediaSuccessCallback { + (stream: MediaStream): void; +} +interface NavigatorUserMediaErrorCallback { + (error: MediaStreamError): void; +} +interface ForEachCallback { + (keyId: any, status: string): void; +} declare var Audio: {new(src?: string): HTMLAudioElement; }; declare var Image: {new(width?: number, height?: number): HTMLImageElement; }; declare var Option: {new(text?: string, value?: string, defaultSelected?: boolean, selected?: boolean): HTMLOptionElement; }; -declare var animationStartTime: number; declare var applicationCache: ApplicationCache; declare var clientInformation: Navigator; declare var closed: boolean; @@ -16842,7 +17870,7 @@ declare var length: number; declare var location: Location; declare var locationbar: BarProp; declare var menubar: BarProp; -declare var msAnimationStartTime: number; +declare var msCredentials: MSCredentials; declare var name: string; declare var navigator: Navigator; declare var offscreenBuffering: string | boolean; @@ -16858,6 +17886,7 @@ declare var onclick: (ev: MouseEvent) => any; declare var oncompassneedscalibration: (ev: Event) => any; declare var oncontextmenu: (ev: PointerEvent) => any; declare var ondblclick: (ev: MouseEvent) => any; +declare var ondevicelight: (ev: DeviceLightEvent) => any; declare var ondevicemotion: (ev: DeviceMotionEvent) => any; declare var ondeviceorientation: (ev: DeviceOrientationEvent) => any; declare var ondrag: (ev: DragEvent) => any; @@ -16869,11 +17898,12 @@ declare var ondragstart: (ev: DragEvent) => any; declare var ondrop: (ev: DragEvent) => any; declare var ondurationchange: (ev: Event) => any; declare var onemptied: (ev: Event) => any; -declare var onended: (ev: Event) => any; +declare var onended: (ev: MediaStreamErrorEvent) => any; declare var onerror: ErrorEventHandler; declare var onfocus: (ev: FocusEvent) => any; declare var onhashchange: (ev: HashChangeEvent) => any; declare var oninput: (ev: Event) => any; +declare var oninvalid: (ev: Event) => any; declare var onkeydown: (ev: KeyboardEvent) => any; declare var onkeypress: (ev: KeyboardEvent) => any; declare var onkeyup: (ev: KeyboardEvent) => any; @@ -16889,7 +17919,7 @@ declare var onmousemove: (ev: MouseEvent) => any; declare var onmouseout: (ev: MouseEvent) => any; declare var onmouseover: (ev: MouseEvent) => any; declare var onmouseup: (ev: MouseEvent) => any; -declare var onmousewheel: (ev: MouseWheelEvent) => any; +declare var onmousewheel: (ev: WheelEvent) => any; declare var onmsgesturechange: (ev: MSGestureEvent) => any; declare var onmsgesturedoubletap: (ev: MSGestureEvent) => any; declare var onmsgestureend: (ev: MSGestureEvent) => any; @@ -16928,10 +17958,10 @@ declare var onstorage: (ev: StorageEvent) => any; declare var onsubmit: (ev: Event) => any; declare var onsuspend: (ev: Event) => any; declare var ontimeupdate: (ev: Event) => any; -declare var ontouchcancel: any; -declare var ontouchend: any; -declare var ontouchmove: any; -declare var ontouchstart: any; +declare var ontouchcancel: (ev: TouchEvent) => any; +declare var ontouchend: (ev: TouchEvent) => any; +declare var ontouchmove: (ev: TouchEvent) => any; +declare var ontouchstart: (ev: TouchEvent) => any; declare var onunload: (ev: Event) => any; declare var onvolumechange: (ev: Event) => any; declare var onwaiting: (ev: Event) => any; @@ -16959,7 +17989,6 @@ declare var styleMedia: StyleMedia; declare var toolbar: BarProp; declare var top: Window; declare var window: Window; -declare var URL: URL; declare function alert(message?: any): void; declare function blur(): void; declare function cancelAnimationFrame(handle: number): void; @@ -16973,12 +18002,9 @@ declare function getSelection(): Selection; declare function matchMedia(mediaQuery: string): MediaQueryList; declare function moveBy(x?: number, y?: number): void; declare function moveTo(x?: number, y?: number): void; -declare function msCancelRequestAnimationFrame(handle: number): void; -declare function msMatchMedia(mediaQuery: string): MediaQueryList; -declare function msRequestAnimationFrame(callback: FrameRequestCallback): number; declare function msWriteProfilerMark(profilerMarkName: string): void; declare function open(url?: string, target?: string, features?: string, replace?: boolean): Window; -declare function postMessage(message: any, targetOrigin: string, ports?: any): void; +declare function postMessage(message: any, targetOrigin: string, transfer?: any[]): void; declare function print(): void; declare function prompt(message?: string, _default?: string): string; declare function releaseEvents(): void; @@ -16988,19 +18014,19 @@ declare function resizeTo(x?: number, y?: number): void; declare function scroll(x?: number, y?: number): void; declare function scrollBy(x?: number, y?: number): void; declare function scrollTo(x?: number, y?: number): void; +declare function webkitCancelAnimationFrame(handle: number): void; declare function webkitConvertPointFromNodeToPage(node: Node, pt: WebKitPoint): WebKitPoint; declare function webkitConvertPointFromPageToNode(node: Node, pt: WebKitPoint): WebKitPoint; +declare function webkitRequestAnimationFrame(callback: FrameRequestCallback): number; declare function toString(): string; -declare function addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +declare function addEventListener(type: string, listener?: EventListenerOrEventListenerObject, useCapture?: boolean): void; declare function dispatchEvent(evt: Event): boolean; -declare function removeEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +declare function removeEventListener(type: string, listener?: EventListenerOrEventListenerObject, useCapture?: boolean): void; declare function clearInterval(handle: number): void; declare function clearTimeout(handle: number): void; declare function setInterval(handler: any, timeout?: any, ...args: any[]): number; declare function setTimeout(handler: any, timeout?: any, ...args: any[]): number; declare function clearImmediate(handle: number): void; -declare function msClearImmediate(handle: number): void; -declare function msSetImmediate(expression: any, ...args: any[]): number; declare function setImmediate(expression: any, ...args: any[]): number; declare var sessionStorage: Storage; declare var localStorage: Storage; @@ -17015,7 +18041,6 @@ declare var onpointerover: (ev: PointerEvent) => any; declare var onpointerup: (ev: PointerEvent) => any; declare var onwheel: (ev: WheelEvent) => any; declare var indexedDB: IDBFactory; -declare var msIndexedDB: IDBFactory; declare function atob(encodedString: string): string; declare function btoa(rawString: string): string; declare function addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; @@ -17045,6 +18070,7 @@ declare function addEventListener(type: "click", listener: (ev: MouseEvent) => a declare function addEventListener(type: "compassneedscalibration", listener: (ev: Event) => any, useCapture?: boolean): void; declare function addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; declare function addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "devicelight", listener: (ev: DeviceLightEvent) => any, useCapture?: boolean): void; declare function addEventListener(type: "devicemotion", listener: (ev: DeviceMotionEvent) => any, useCapture?: boolean): void; declare function addEventListener(type: "deviceorientation", listener: (ev: DeviceOrientationEvent) => any, useCapture?: boolean): void; declare function addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void; @@ -17056,10 +18082,11 @@ declare function addEventListener(type: "dragstart", listener: (ev: DragEvent) = declare function addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; declare function addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; declare function addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; +declare function addEventListener(type: "ended", listener: (ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; declare function addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; declare function addEventListener(type: "hashchange", listener: (ev: HashChangeEvent) => any, useCapture?: boolean): void; declare function addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; +declare function addEventListener(type: "invalid", listener: (ev: Event) => any, useCapture?: boolean): void; declare function addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; declare function addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; declare function addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; @@ -17075,7 +18102,7 @@ declare function addEventListener(type: "mousemove", listener: (ev: MouseEvent) declare function addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; declare function addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; declare function addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "mousewheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; declare function addEventListener(type: "offline", listener: (ev: Event) => any, useCapture?: boolean): void; declare function addEventListener(type: "online", listener: (ev: Event) => any, useCapture?: boolean): void; declare function addEventListener(type: "orientationchange", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -17112,6 +18139,38 @@ declare function addEventListener(type: "volumechange", listener: (ev: Event) => declare function addEventListener(type: "waiting", listener: (ev: Event) => any, useCapture?: boolean): void; declare function addEventListener(type: "wheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; declare function addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +type AAGUID = string; +type AlgorithmIdentifier = string | Algorithm; +type ConstrainBoolean = boolean | ConstrainBooleanParameters; +type ConstrainDOMString = string | string[] | ConstrainDOMStringParameters; +type ConstrainDouble = number | ConstrainDoubleRange; +type ConstrainLong = number | ConstrainLongRange; +type CryptoOperationData = ArrayBufferView; +type GLbitfield = number; +type GLboolean = boolean; +type GLbyte = number; +type GLclampf = number; +type GLenum = number; +type GLfloat = number; +type GLint = number; +type GLintptr = number; +type GLshort = number; +type GLsizei = number; +type GLsizeiptr = number; +type GLubyte = number; +type GLuint = number; +type GLushort = number; +type IDBKeyPath = string; +type KeyFormat = string; +type KeyType = string; +type KeyUsage = string; +type MSInboundPayload = MSVideoRecvPayload | MSAudioRecvPayload; +type MSLocalClientEvent = MSLocalClientEventBase | MSAudioLocalClientEvent; +type MSOutboundPayload = MSVideoSendPayload | MSAudioSendPayload; +type RTCIceGatherCandidate = RTCIceCandidate | RTCIceCandidateComplete; +type RTCTransport = RTCDtlsTransport | RTCSrtpSdesTransport; +type payloadtype = number; +type IDBValidKey = number | string | Date | IDBArrayKey; ///////////////////////////// /// WorkerGlobalScope APIs ///////////////////////////// diff --git a/lib/lib.dom.d.ts b/lib/lib.dom.d.ts index 7bb2e8d4158..27a38590913 100644 --- a/lib/lib.dom.d.ts +++ b/lib/lib.dom.d.ts @@ -13,209 +13,7 @@ See the Apache Version 2.0 License for specific language governing permissions and limitations under the License. ***************************************************************************** */ -/// -///////////////////////////// -/// ECMAScript Internationalization API -///////////////////////////// - -declare module Intl { - interface CollatorOptions { - usage?: string; - localeMatcher?: string; - numeric?: boolean; - caseFirst?: string; - sensitivity?: string; - ignorePunctuation?: boolean; - } - - interface ResolvedCollatorOptions { - locale: string; - usage: string; - sensitivity: string; - ignorePunctuation: boolean; - collation: string; - caseFirst: string; - numeric: boolean; - } - - interface Collator { - compare(x: string, y: string): number; - resolvedOptions(): ResolvedCollatorOptions; - } - var Collator: { - new (locales?: string[], options?: CollatorOptions): Collator; - new (locale?: string, options?: CollatorOptions): Collator; - (locales?: string[], options?: CollatorOptions): Collator; - (locale?: string, options?: CollatorOptions): Collator; - supportedLocalesOf(locales: string[], options?: CollatorOptions): string[]; - supportedLocalesOf(locale: string, options?: CollatorOptions): string[]; - } - - interface NumberFormatOptions { - localeMatcher?: string; - style?: string; - currency?: string; - currencyDisplay?: string; - useGrouping?: boolean; - minimumIntegerDigits?: number; - minimumFractionDigits?: number; - maximumFractionDigits?: number; - minimumSignificantDigits?: number; - maximumSignificantDigits?: number; - } - - interface ResolvedNumberFormatOptions { - locale: string; - numberingSystem: string; - style: string; - currency?: string; - currencyDisplay?: string; - minimumIntegerDigits: number; - minimumFractionDigits: number; - maximumFractionDigits: number; - minimumSignificantDigits?: number; - maximumSignificantDigits?: number; - useGrouping: boolean; - } - - interface NumberFormat { - format(value: number): string; - resolvedOptions(): ResolvedNumberFormatOptions; - } - var NumberFormat: { - new (locales?: string[], options?: NumberFormatOptions): NumberFormat; - new (locale?: string, options?: NumberFormatOptions): NumberFormat; - (locales?: string[], options?: NumberFormatOptions): NumberFormat; - (locale?: string, options?: NumberFormatOptions): NumberFormat; - supportedLocalesOf(locales: string[], options?: NumberFormatOptions): string[]; - supportedLocalesOf(locale: string, options?: NumberFormatOptions): string[]; - } - - interface DateTimeFormatOptions { - localeMatcher?: string; - weekday?: string; - era?: string; - year?: string; - month?: string; - day?: string; - hour?: string; - minute?: string; - second?: string; - timeZoneName?: string; - formatMatcher?: string; - hour12?: boolean; - timeZone?: string; - } - - interface ResolvedDateTimeFormatOptions { - locale: string; - calendar: string; - numberingSystem: string; - timeZone: string; - hour12?: boolean; - weekday?: string; - era?: string; - year?: string; - month?: string; - day?: string; - hour?: string; - minute?: string; - second?: string; - timeZoneName?: string; - } - - interface DateTimeFormat { - format(date?: Date | number): string; - resolvedOptions(): ResolvedDateTimeFormatOptions; - } - var DateTimeFormat: { - new (locales?: string[], options?: DateTimeFormatOptions): DateTimeFormat; - new (locale?: string, options?: DateTimeFormatOptions): DateTimeFormat; - (locales?: string[], options?: DateTimeFormatOptions): DateTimeFormat; - (locale?: string, options?: DateTimeFormatOptions): DateTimeFormat; - supportedLocalesOf(locales: string[], options?: DateTimeFormatOptions): string[]; - supportedLocalesOf(locale: string, options?: DateTimeFormatOptions): string[]; - } -} - -interface String { - /** - * Determines whether two strings are equivalent in the current locale. - * @param that String to compare to target string - * @param locales An array of locale strings that contain one or more language or locale tags. If you include more than one locale string, list them in descending order of priority so that the first entry is the preferred locale. If you omit this parameter, the default locale of the JavaScript runtime is used. This parameter must conform to BCP 47 standards; see the Intl.Collator object for details. - * @param options An object that contains one or more properties that specify comparison options. see the Intl.Collator object for details. - */ - localeCompare(that: string, locales: string[], options?: Intl.CollatorOptions): number; - - /** - * Determines whether two strings are equivalent in the current locale. - * @param that String to compare to target string - * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used. This parameter must conform to BCP 47 standards; see the Intl.Collator object for details. - * @param options An object that contains one or more properties that specify comparison options. see the Intl.Collator object for details. - */ - localeCompare(that: string, locale: string, options?: Intl.CollatorOptions): number; -} - -interface Number { - /** - * Converts a number to a string by using the current or specified locale. - * @param locales An array of locale strings that contain one or more language or locale tags. If you include more than one locale string, list them in descending order of priority so that the first entry is the preferred locale. If you omit this parameter, the default locale of the JavaScript runtime is used. - * @param options An object that contains one or more properties that specify comparison options. - */ - toLocaleString(locales?: string[], options?: Intl.NumberFormatOptions): string; - - /** - * Converts a number to a string by using the current or specified locale. - * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used. - * @param options An object that contains one or more properties that specify comparison options. - */ - toLocaleString(locale?: string, options?: Intl.NumberFormatOptions): string; -} - -interface Date { - /** - * Converts a date and time to a string by using the current or specified locale. - * @param locales An array of locale strings that contain one or more language or locale tags. If you include more than one locale string, list them in descending order of priority so that the first entry is the preferred locale. If you omit this parameter, the default locale of the JavaScript runtime is used. - * @param options An object that contains one or more properties that specify comparison options. - */ - toLocaleString(locales?: string[], options?: Intl.DateTimeFormatOptions): string; - /** - * Converts a date to a string by using the current or specified locale. - * @param locales An array of locale strings that contain one or more language or locale tags. If you include more than one locale string, list them in descending order of priority so that the first entry is the preferred locale. If you omit this parameter, the default locale of the JavaScript runtime is used. - * @param options An object that contains one or more properties that specify comparison options. - */ - toLocaleDateString(locales?: string[], options?: Intl.DateTimeFormatOptions): string; - - /** - * Converts a time to a string by using the current or specified locale. - * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used. - * @param options An object that contains one or more properties that specify comparison options. - */ - toLocaleTimeString(locale?: string[], options?: Intl.DateTimeFormatOptions): string; - - /** - * Converts a date and time to a string by using the current or specified locale. - * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used. - * @param options An object that contains one or more properties that specify comparison options. - */ - toLocaleString(locale?: string, options?: Intl.DateTimeFormatOptions): string; - - /** - * Converts a date to a string by using the current or specified locale. - * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used. - * @param options An object that contains one or more properties that specify comparison options. - */ - toLocaleDateString(locale?: string, options?: Intl.DateTimeFormatOptions): string; - - /** - * Converts a time to a string by using the current or specified locale. - * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used. - * @param options An object that contains one or more properties that specify comparison options. - */ - toLocaleTimeString(locale?: string, options?: Intl.DateTimeFormatOptions): string; -} - - +/// ///////////////////////////// /// IE DOM APIs ///////////////////////////// @@ -229,11 +27,6 @@ interface AriaRequestEventInit extends EventInit { attributeValue?: string; } -interface ClipboardEventInit extends EventInit { - data?: string; - dataType?: string; -} - interface CommandEventInit extends EventInit { commandName?: string; detail?: string; @@ -247,6 +40,31 @@ interface ConfirmSiteSpecificExceptionsInformation extends ExceptionInformation arrayOfDomainStrings?: string[]; } +interface ConstrainBooleanParameters { + exact?: boolean; + ideal?: boolean; +} + +interface ConstrainDOMStringParameters { + exact?: string | string[]; + ideal?: string | string[]; +} + +interface ConstrainDoubleRange extends DoubleRange { + exact?: number; + ideal?: number; +} + +interface ConstrainLongRange extends LongRange { + exact?: number; + ideal?: number; +} + +interface ConstrainVideoFacingModeParameters { + exact?: string | string[]; + ideal?: string | string[]; +} + interface CustomEventInit extends EventInit { detail?: any; } @@ -257,17 +75,44 @@ interface DeviceAccelerationDict { z?: number; } +interface DeviceLightEventInit extends EventInit { + value?: number; +} + interface DeviceRotationRateDict { alpha?: number; beta?: number; gamma?: number; } +interface DoubleRange { + max?: number; + min?: number; +} + interface EventInit { bubbles?: boolean; cancelable?: boolean; } +interface EventModifierInit extends UIEventInit { + ctrlKey?: boolean; + shiftKey?: boolean; + altKey?: boolean; + metaKey?: boolean; + modifierAltGraph?: boolean; + modifierCapsLock?: boolean; + modifierFn?: boolean; + modifierFnLock?: boolean; + modifierHyper?: boolean; + modifierNumLock?: boolean; + modifierOS?: boolean; + modifierScrollLock?: boolean; + modifierSuper?: boolean; + modifierSymbol?: boolean; + modifierSymbolLock?: boolean; +} + interface ExceptionInformation { domain?: string; } @@ -281,17 +126,415 @@ interface HashChangeEventInit extends EventInit { oldURL?: string; } +interface IDBIndexParameters { + multiEntry?: boolean; + unique?: boolean; +} + +interface IDBObjectStoreParameters { + autoIncrement?: boolean; + keyPath?: IDBKeyPath; +} + interface KeyAlgorithm { name?: string; } -interface KeyboardEventInit extends SharedKeyboardAndMouseEventInit { +interface KeyboardEventInit extends EventModifierInit { key?: string; location?: number; repeat?: boolean; } -interface MouseEventInit extends SharedKeyboardAndMouseEventInit { +interface LongRange { + max?: number; + min?: number; +} + +interface MSAccountInfo { + rpDisplayName?: string; + userDisplayName?: string; + accountName?: string; + userId?: string; + accountImageUri?: string; +} + +interface MSAudioLocalClientEvent extends MSLocalClientEventBase { + networkSendQualityEventRatio?: number; + networkDelayEventRatio?: number; + cpuInsufficientEventRatio?: number; + deviceHalfDuplexAECEventRatio?: number; + deviceRenderNotFunctioningEventRatio?: number; + deviceCaptureNotFunctioningEventRatio?: number; + deviceGlitchesEventRatio?: number; + deviceLowSNREventRatio?: number; + deviceLowSpeechLevelEventRatio?: number; + deviceClippingEventRatio?: number; + deviceEchoEventRatio?: number; + deviceNearEndToEchoRatioEventRatio?: number; + deviceRenderZeroVolumeEventRatio?: number; + deviceRenderMuteEventRatio?: number; + deviceMultipleEndpointsEventCount?: number; + deviceHowlingEventCount?: number; +} + +interface MSAudioRecvPayload extends MSPayloadBase { + samplingRate?: number; + signal?: MSAudioRecvSignal; + packetReorderRatio?: number; + packetReorderDepthAvg?: number; + packetReorderDepthMax?: number; + burstLossLength1?: number; + burstLossLength2?: number; + burstLossLength3?: number; + burstLossLength4?: number; + burstLossLength5?: number; + burstLossLength6?: number; + burstLossLength7?: number; + burstLossLength8OrHigher?: number; + fecRecvDistance1?: number; + fecRecvDistance2?: number; + fecRecvDistance3?: number; + ratioConcealedSamplesAvg?: number; + ratioStretchedSamplesAvg?: number; + ratioCompressedSamplesAvg?: number; +} + +interface MSAudioRecvSignal { + initialSignalLevelRMS?: number; + recvSignalLevelCh1?: number; + recvNoiseLevelCh1?: number; + renderSignalLevel?: number; + renderNoiseLevel?: number; + renderLoopbackSignalLevel?: number; +} + +interface MSAudioSendPayload extends MSPayloadBase { + samplingRate?: number; + signal?: MSAudioSendSignal; + audioFECUsed?: boolean; + sendMutePercent?: number; +} + +interface MSAudioSendSignal { + noiseLevel?: number; + sendSignalLevelCh1?: number; + sendNoiseLevelCh1?: number; +} + +interface MSConnectivity { + iceType?: string; + iceWarningFlags?: MSIceWarningFlags; + relayAddress?: MSRelayAddress; +} + +interface MSCredentialFilter { + accept?: MSCredentialSpec[]; +} + +interface MSCredentialParameters { + type?: string; +} + +interface MSCredentialSpec { + type?: string; + id?: string; +} + +interface MSDelay { + roundTrip?: number; + roundTripMax?: number; +} + +interface MSDescription extends RTCStats { + connectivity?: MSConnectivity; + transport?: string; + networkconnectivity?: MSNetworkConnectivityInfo; + localAddr?: MSIPAddressInfo; + remoteAddr?: MSIPAddressInfo; + deviceDevName?: string; + reflexiveLocalIPAddr?: MSIPAddressInfo; +} + +interface MSFIDOCredentialParameters extends MSCredentialParameters { + algorithm?: string | Algorithm; + authenticators?: AAGUID[]; +} + +interface MSIPAddressInfo { + ipAddr?: string; + port?: number; + manufacturerMacAddrMask?: string; +} + +interface MSIceWarningFlags { + turnTcpTimedOut?: boolean; + turnUdpAllocateFailed?: boolean; + turnUdpSendFailed?: boolean; + turnTcpAllocateFailed?: boolean; + turnTcpSendFailed?: boolean; + udpLocalConnectivityFailed?: boolean; + udpNatConnectivityFailed?: boolean; + udpRelayConnectivityFailed?: boolean; + tcpNatConnectivityFailed?: boolean; + tcpRelayConnectivityFailed?: boolean; + connCheckMessageIntegrityFailed?: boolean; + allocationMessageIntegrityFailed?: boolean; + connCheckOtherError?: boolean; + turnAuthUnknownUsernameError?: boolean; + noRelayServersConfigured?: boolean; + multipleRelayServersAttempted?: boolean; + portRangeExhausted?: boolean; + alternateServerReceived?: boolean; + pseudoTLSFailure?: boolean; + turnTurnTcpConnectivityFailed?: boolean; + useCandidateChecksFailed?: boolean; + fipsAllocationFailure?: boolean; +} + +interface MSJitter { + interArrival?: number; + interArrivalMax?: number; + interArrivalSD?: number; +} + +interface MSLocalClientEventBase extends RTCStats { + networkReceiveQualityEventRatio?: number; + networkBandwidthLowEventRatio?: number; +} + +interface MSNetwork extends RTCStats { + jitter?: MSJitter; + delay?: MSDelay; + packetLoss?: MSPacketLoss; + utilization?: MSUtilization; +} + +interface MSNetworkConnectivityInfo { + vpn?: boolean; + linkspeed?: number; + networkConnectionDetails?: string; +} + +interface MSNetworkInterfaceType { + interfaceTypeEthernet?: boolean; + interfaceTypeWireless?: boolean; + interfaceTypePPP?: boolean; + interfaceTypeTunnel?: boolean; + interfaceTypeWWAN?: boolean; +} + +interface MSOutboundNetwork extends MSNetwork { + appliedBandwidthLimit?: number; +} + +interface MSPacketLoss { + lossRate?: number; + lossRateMax?: number; +} + +interface MSPayloadBase extends RTCStats { + payloadDescription?: string; +} + +interface MSRelayAddress { + relayAddress?: string; + port?: number; +} + +interface MSSignatureParameters { + userPrompt?: string; +} + +interface MSTransportDiagnosticsStats extends RTCStats { + baseAddress?: string; + localAddress?: string; + localSite?: string; + networkName?: string; + remoteAddress?: string; + remoteSite?: string; + localMR?: string; + remoteMR?: string; + iceWarningFlags?: MSIceWarningFlags; + portRangeMin?: number; + portRangeMax?: number; + localMRTCPPort?: number; + remoteMRTCPPort?: number; + stunVer?: number; + numConsentReqSent?: number; + numConsentReqReceived?: number; + numConsentRespSent?: number; + numConsentRespReceived?: number; + interfaces?: MSNetworkInterfaceType; + baseInterface?: MSNetworkInterfaceType; + protocol?: string; + localInterface?: MSNetworkInterfaceType; + localAddrType?: string; + remoteAddrType?: string; + iceRole?: string; + rtpRtcpMux?: boolean; + allocationTimeInMs?: number; + msRtcEngineVersion?: string; +} + +interface MSUtilization { + packets?: number; + bandwidthEstimation?: number; + bandwidthEstimationMin?: number; + bandwidthEstimationMax?: number; + bandwidthEstimationStdDev?: number; + bandwidthEstimationAvg?: number; +} + +interface MSVideoPayload extends MSPayloadBase { + resoluton?: string; + videoBitRateAvg?: number; + videoBitRateMax?: number; + videoFrameRateAvg?: number; + videoPacketLossRate?: number; + durationSeconds?: number; +} + +interface MSVideoRecvPayload extends MSVideoPayload { + videoFrameLossRate?: number; + recvCodecType?: string; + recvResolutionWidth?: number; + recvResolutionHeight?: number; + videoResolutions?: MSVideoResolutionDistribution; + recvFrameRateAverage?: number; + recvBitRateMaximum?: number; + recvBitRateAverage?: number; + recvVideoStreamsMax?: number; + recvVideoStreamsMin?: number; + recvVideoStreamsMode?: number; + videoPostFECPLR?: number; + lowBitRateCallPercent?: number; + lowFrameRateCallPercent?: number; + reorderBufferTotalPackets?: number; + recvReorderBufferReorderedPackets?: number; + recvReorderBufferPacketsDroppedDueToBufferExhaustion?: number; + recvReorderBufferMaxSuccessfullyOrderedExtent?: number; + recvReorderBufferMaxSuccessfullyOrderedLateTime?: number; + recvReorderBufferPacketsDroppedDueToTimeout?: number; + recvFpsHarmonicAverage?: number; + recvNumResSwitches?: number; +} + +interface MSVideoResolutionDistribution { + cifQuality?: number; + vgaQuality?: number; + h720Quality?: number; + h1080Quality?: number; + h1440Quality?: number; + h2160Quality?: number; +} + +interface MSVideoSendPayload extends MSVideoPayload { + sendFrameRateAverage?: number; + sendBitRateMaximum?: number; + sendBitRateAverage?: number; + sendVideoStreamsMax?: number; + sendResolutionWidth?: number; + sendResolutionHeight?: number; +} + +interface MediaEncryptedEventInit extends EventInit { + initDataType?: string; + initData?: ArrayBuffer; +} + +interface MediaKeyMessageEventInit extends EventInit { + messageType?: string; + message?: ArrayBuffer; +} + +interface MediaKeySystemConfiguration { + initDataTypes?: string[]; + audioCapabilities?: MediaKeySystemMediaCapability[]; + videoCapabilities?: MediaKeySystemMediaCapability[]; + distinctiveIdentifier?: string; + persistentState?: string; +} + +interface MediaKeySystemMediaCapability { + contentType?: string; + robustness?: string; +} + +interface MediaStreamConstraints { + video?: boolean | MediaTrackConstraints; + audio?: boolean | MediaTrackConstraints; +} + +interface MediaStreamErrorEventInit extends EventInit { + error?: MediaStreamError; +} + +interface MediaStreamTrackEventInit extends EventInit { + track?: MediaStreamTrack; +} + +interface MediaTrackCapabilities { + width?: number | LongRange; + height?: number | LongRange; + aspectRatio?: number | DoubleRange; + frameRate?: number | DoubleRange; + facingMode?: string; + volume?: number | DoubleRange; + sampleRate?: number | LongRange; + sampleSize?: number | LongRange; + echoCancellation?: boolean[]; + deviceId?: string; + groupId?: string; +} + +interface MediaTrackConstraintSet { + width?: number | ConstrainLongRange; + height?: number | ConstrainLongRange; + aspectRatio?: number | ConstrainDoubleRange; + frameRate?: number | ConstrainDoubleRange; + facingMode?: string | string[] | ConstrainDOMStringParameters; + volume?: number | ConstrainDoubleRange; + sampleRate?: number | ConstrainLongRange; + sampleSize?: number | ConstrainLongRange; + echoCancelation?: boolean | ConstrainBooleanParameters; + deviceId?: string | string[] | ConstrainDOMStringParameters; + groupId?: string | string[] | ConstrainDOMStringParameters; +} + +interface MediaTrackConstraints extends MediaTrackConstraintSet { + advanced?: MediaTrackConstraintSet[]; +} + +interface MediaTrackSettings { + width?: number; + height?: number; + aspectRatio?: number; + frameRate?: number; + facingMode?: string; + volume?: number; + sampleRate?: number; + sampleSize?: number; + echoCancellation?: boolean; + deviceId?: string; + groupId?: string; +} + +interface MediaTrackSupportedConstraints { + width?: boolean; + height?: boolean; + aspectRatio?: boolean; + frameRate?: boolean; + facingMode?: boolean; + volume?: boolean; + sampleRate?: boolean; + sampleSize?: boolean; + echoCancellation?: boolean; + deviceId?: boolean; + groupId?: boolean; +} + +interface MouseEventInit extends EventModifierInit { screenX?: number; screenY?: number; clientX?: number; @@ -324,6 +567,10 @@ interface ObjectURLOptions { oneTimeOnly?: boolean; } +interface PeriodicWaveConstraints { + disableNormalization?: boolean; +} + interface PointerEventInit extends MouseEventInit { pointerId?: number; width?: number; @@ -341,22 +588,266 @@ interface PositionOptions { maximumAge?: number; } -interface SharedKeyboardAndMouseEventInit extends UIEventInit { - ctrlKey?: boolean; - shiftKey?: boolean; - altKey?: boolean; - metaKey?: boolean; - keyModifierStateAltGraph?: boolean; - keyModifierStateCapsLock?: boolean; - keyModifierStateFn?: boolean; - keyModifierStateFnLock?: boolean; - keyModifierStateHyper?: boolean; - keyModifierStateNumLock?: boolean; - keyModifierStateOS?: boolean; - keyModifierStateScrollLock?: boolean; - keyModifierStateSuper?: boolean; - keyModifierStateSymbol?: boolean; - keyModifierStateSymbolLock?: boolean; +interface RTCDTMFToneChangeEventInit extends EventInit { + tone?: string; +} + +interface RTCDtlsFingerprint { + algorithm?: string; + value?: string; +} + +interface RTCDtlsParameters { + role?: string; + fingerprints?: RTCDtlsFingerprint[]; +} + +interface RTCIceCandidate { + foundation?: string; + priority?: number; + ip?: string; + protocol?: string; + port?: number; + type?: string; + tcpType?: string; + relatedAddress?: string; + relatedPort?: number; +} + +interface RTCIceCandidateAttributes extends RTCStats { + ipAddress?: string; + portNumber?: number; + transport?: string; + candidateType?: string; + priority?: number; + addressSourceUrl?: string; +} + +interface RTCIceCandidateComplete { +} + +interface RTCIceCandidatePair { + local?: RTCIceCandidate; + remote?: RTCIceCandidate; +} + +interface RTCIceCandidatePairStats extends RTCStats { + transportId?: string; + localCandidateId?: string; + remoteCandidateId?: string; + state?: string; + priority?: number; + nominated?: boolean; + writable?: boolean; + readable?: boolean; + bytesSent?: number; + bytesReceived?: number; + roundTripTime?: number; + availableOutgoingBitrate?: number; + availableIncomingBitrate?: number; +} + +interface RTCIceGatherOptions { + gatherPolicy?: string; + iceservers?: RTCIceServer[]; +} + +interface RTCIceParameters { + usernameFragment?: string; + password?: string; +} + +interface RTCIceServer { + urls?: any; + username?: string; + credential?: string; +} + +interface RTCInboundRTPStreamStats extends RTCRTPStreamStats { + packetsReceived?: number; + bytesReceived?: number; + packetsLost?: number; + jitter?: number; + fractionLost?: number; +} + +interface RTCMediaStreamTrackStats extends RTCStats { + trackIdentifier?: string; + remoteSource?: boolean; + ssrcIds?: string[]; + frameWidth?: number; + frameHeight?: number; + framesPerSecond?: number; + framesSent?: number; + framesReceived?: number; + framesDecoded?: number; + framesDropped?: number; + framesCorrupted?: number; + audioLevel?: number; + echoReturnLoss?: number; + echoReturnLossEnhancement?: number; +} + +interface RTCOutboundRTPStreamStats extends RTCRTPStreamStats { + packetsSent?: number; + bytesSent?: number; + targetBitrate?: number; + roundTripTime?: number; +} + +interface RTCRTPStreamStats extends RTCStats { + ssrc?: string; + associateStatsId?: string; + isRemote?: boolean; + mediaTrackId?: string; + transportId?: string; + codecId?: string; + firCount?: number; + pliCount?: number; + nackCount?: number; + sliCount?: number; +} + +interface RTCRtcpFeedback { + type?: string; + parameter?: string; +} + +interface RTCRtcpParameters { + ssrc?: number; + cname?: string; + reducedSize?: boolean; + mux?: boolean; +} + +interface RTCRtpCapabilities { + codecs?: RTCRtpCodecCapability[]; + headerExtensions?: RTCRtpHeaderExtension[]; + fecMechanisms?: string[]; +} + +interface RTCRtpCodecCapability { + name?: string; + kind?: string; + clockRate?: number; + preferredPayloadType?: number; + maxptime?: number; + numChannels?: number; + rtcpFeedback?: RTCRtcpFeedback[]; + parameters?: any; + options?: any; + maxTemporalLayers?: number; + maxSpatialLayers?: number; + svcMultiStreamSupport?: boolean; +} + +interface RTCRtpCodecParameters { + name?: string; + payloadType?: any; + clockRate?: number; + maxptime?: number; + numChannels?: number; + rtcpFeedback?: RTCRtcpFeedback[]; + parameters?: any; +} + +interface RTCRtpContributingSource { + timestamp?: number; + csrc?: number; + audioLevel?: number; +} + +interface RTCRtpEncodingParameters { + ssrc?: number; + codecPayloadType?: number; + fec?: RTCRtpFecParameters; + rtx?: RTCRtpRtxParameters; + priority?: number; + maxBitrate?: number; + minQuality?: number; + framerateBias?: number; + resolutionScale?: number; + framerateScale?: number; + active?: boolean; + encodingId?: string; + dependencyEncodingIds?: string[]; + ssrcRange?: RTCSsrcRange; +} + +interface RTCRtpFecParameters { + ssrc?: number; + mechanism?: string; +} + +interface RTCRtpHeaderExtension { + kind?: string; + uri?: string; + preferredId?: number; + preferredEncrypt?: boolean; +} + +interface RTCRtpHeaderExtensionParameters { + uri?: string; + id?: number; + encrypt?: boolean; +} + +interface RTCRtpParameters { + muxId?: string; + codecs?: RTCRtpCodecParameters[]; + headerExtensions?: RTCRtpHeaderExtensionParameters[]; + encodings?: RTCRtpEncodingParameters[]; + rtcp?: RTCRtcpParameters; +} + +interface RTCRtpRtxParameters { + ssrc?: number; +} + +interface RTCRtpUnhandled { + ssrc?: number; + payloadType?: number; + muxId?: string; +} + +interface RTCSrtpKeyParam { + keyMethod?: string; + keySalt?: string; + lifetime?: string; + mkiValue?: number; + mkiLength?: number; +} + +interface RTCSrtpSdesParameters { + tag?: number; + cryptoSuite?: string; + keyParams?: RTCSrtpKeyParam[]; + sessionParams?: string[]; +} + +interface RTCSsrcRange { + min?: number; + max?: number; +} + +interface RTCStats { + timestamp?: number; + type?: string; + id?: string; + msType?: string; +} + +interface RTCStatsReport { +} + +interface RTCTransportStats extends RTCStats { + bytesSent?: number; + bytesReceived?: number; + rtcpTransportStatsId?: string; + activeConnection?: boolean; + selectedCandidatePairId?: string; + localCertificateId?: string; + remoteCertificateId?: string; } interface StoreExceptionsInformation extends ExceptionInformation { @@ -402,18 +893,18 @@ interface ANGLE_instanced_arrays { drawArraysInstancedANGLE(mode: number, first: number, count: number, primcount: number): void; drawElementsInstancedANGLE(mode: number, count: number, type: number, offset: number, primcount: number): void; vertexAttribDivisorANGLE(index: number, divisor: number): void; - VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE: number; + readonly VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE: number; } declare var ANGLE_instanced_arrays: { prototype: ANGLE_instanced_arrays; new(): ANGLE_instanced_arrays; - VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE: number; + readonly VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE: number; } interface AnalyserNode extends AudioNode { fftSize: number; - frequencyBinCount: number; + readonly frequencyBinCount: number; maxDecibels: number; minDecibels: number; smoothingTimeConstant: number; @@ -429,8 +920,8 @@ declare var AnalyserNode: { } interface AnimationEvent extends Event { - animationName: string; - elapsedTime: number; + readonly animationName: string; + readonly elapsedTime: number; initAnimationEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, animationNameArg: string, elapsedTimeArg: number): void; } @@ -448,16 +939,16 @@ interface ApplicationCache extends EventTarget { onobsolete: (ev: Event) => any; onprogress: (ev: ProgressEvent) => any; onupdateready: (ev: Event) => any; - status: number; + readonly status: number; abort(): void; swapCache(): void; update(): void; - CHECKING: number; - DOWNLOADING: number; - IDLE: number; - OBSOLETE: number; - UNCACHED: number; - UPDATEREADY: number; + readonly CHECKING: number; + readonly DOWNLOADING: number; + readonly IDLE: number; + readonly OBSOLETE: number; + readonly UNCACHED: number; + readonly UPDATEREADY: number; addEventListener(type: "cached", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "checking", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "downloading", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -472,16 +963,16 @@ interface ApplicationCache extends EventTarget { declare var ApplicationCache: { prototype: ApplicationCache; new(): ApplicationCache; - CHECKING: number; - DOWNLOADING: number; - IDLE: number; - OBSOLETE: number; - UNCACHED: number; - UPDATEREADY: number; + readonly CHECKING: number; + readonly DOWNLOADING: number; + readonly IDLE: number; + readonly OBSOLETE: number; + readonly UNCACHED: number; + readonly UPDATEREADY: number; } interface AriaRequestEvent extends Event { - attributeName: string; + readonly attributeName: string; attributeValue: string; } @@ -491,9 +982,10 @@ declare var AriaRequestEvent: { } interface Attr extends Node { - name: string; - ownerElement: Element; - specified: boolean; + readonly name: string; + readonly ownerElement: Element; + readonly prefix: string; + readonly specified: boolean; value: string; } @@ -503,10 +995,12 @@ declare var Attr: { } interface AudioBuffer { - duration: number; - length: number; - numberOfChannels: number; - sampleRate: number; + readonly duration: number; + readonly length: number; + readonly numberOfChannels: number; + readonly sampleRate: number; + copyFromChannel(destination: Float32Array, channelNumber: number, startInChannel?: number): void; + copyToChannel(source: Float32Array, channelNumber: number, startInChannel?: number): void; getChannelData(channel: number): Float32Array; } @@ -517,14 +1011,15 @@ declare var AudioBuffer: { interface AudioBufferSourceNode extends AudioNode { buffer: AudioBuffer; + readonly detune: AudioParam; loop: boolean; loopEnd: number; loopStart: number; - onended: (ev: Event) => any; - playbackRate: AudioParam; + onended: (ev: MediaStreamErrorEvent) => any; + readonly playbackRate: AudioParam; start(when?: number, offset?: number, duration?: number): void; stop(when?: number): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "ended", listener: (ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -534,10 +1029,10 @@ declare var AudioBufferSourceNode: { } interface AudioContext extends EventTarget { - currentTime: number; - destination: AudioDestinationNode; - listener: AudioListener; - sampleRate: number; + readonly currentTime: number; + readonly destination: AudioDestinationNode; + readonly listener: AudioListener; + readonly sampleRate: number; state: string; createAnalyser(): AnalyserNode; createBiquadFilter(): BiquadFilterNode; @@ -550,13 +1045,14 @@ interface AudioContext extends EventTarget { createDynamicsCompressor(): DynamicsCompressorNode; createGain(): GainNode; createMediaElementSource(mediaElement: HTMLMediaElement): MediaElementAudioSourceNode; + createMediaStreamSource(mediaStream: MediaStream): MediaStreamAudioSourceNode; createOscillator(): OscillatorNode; createPanner(): PannerNode; - createPeriodicWave(real: Float32Array, imag: Float32Array): PeriodicWave; + createPeriodicWave(real: Float32Array, imag: Float32Array, constraints?: PeriodicWaveConstraints): PeriodicWave; createScriptProcessor(bufferSize?: number, numberOfInputChannels?: number, numberOfOutputChannels?: number): ScriptProcessorNode; createStereoPanner(): StereoPannerNode; createWaveShaper(): WaveShaperNode; - decodeAudioData(audioData: ArrayBuffer, successCallback: DecodeSuccessCallback, errorCallback?: DecodeErrorCallback): void; + decodeAudioData(audioData: ArrayBuffer, successCallback?: DecodeSuccessCallback, errorCallback?: DecodeErrorCallback): PromiseLike; } declare var AudioContext: { @@ -565,7 +1061,7 @@ declare var AudioContext: { } interface AudioDestinationNode extends AudioNode { - maxChannelCount: number; + readonly maxChannelCount: number; } declare var AudioDestinationNode: { @@ -590,9 +1086,9 @@ interface AudioNode extends EventTarget { channelCount: number; channelCountMode: string; channelInterpretation: string; - context: AudioContext; - numberOfInputs: number; - numberOfOutputs: number; + readonly context: AudioContext; + readonly numberOfInputs: number; + readonly numberOfOutputs: number; connect(destination: AudioNode, output?: number, input?: number): void; disconnect(output?: number): void; disconnect(destination: AudioNode, output?: number, input?: number): void; @@ -605,7 +1101,7 @@ declare var AudioNode: { } interface AudioParam { - defaultValue: number; + readonly defaultValue: number; value: number; cancelScheduledValues(startTime: number): void; exponentialRampToValueAtTime(value: number, endTime: number): void; @@ -621,9 +1117,9 @@ declare var AudioParam: { } interface AudioProcessingEvent extends Event { - inputBuffer: AudioBuffer; - outputBuffer: AudioBuffer; - playbackTime: number; + readonly inputBuffer: AudioBuffer; + readonly outputBuffer: AudioBuffer; + readonly playbackTime: number; } declare var AudioProcessingEvent: { @@ -633,11 +1129,11 @@ declare var AudioProcessingEvent: { interface AudioTrack { enabled: boolean; - id: string; + readonly id: string; kind: string; - label: string; + readonly label: string; language: string; - sourceBuffer: SourceBuffer; + readonly sourceBuffer: SourceBuffer; } declare var AudioTrack: { @@ -646,7 +1142,7 @@ declare var AudioTrack: { } interface AudioTrackList extends EventTarget { - length: number; + readonly length: number; onaddtrack: (ev: TrackEvent) => any; onchange: (ev: Event) => any; onremovetrack: (ev: TrackEvent) => any; @@ -665,7 +1161,7 @@ declare var AudioTrackList: { } interface BarProp { - visible: boolean; + readonly visible: boolean; } declare var BarProp: { @@ -683,10 +1179,10 @@ declare var BeforeUnloadEvent: { } interface BiquadFilterNode extends AudioNode { - Q: AudioParam; - detune: AudioParam; - frequency: AudioParam; - gain: AudioParam; + readonly Q: AudioParam; + readonly detune: AudioParam; + readonly frequency: AudioParam; + readonly gain: AudioParam; type: string; getFrequencyResponse(frequencyHz: Float32Array, magResponse: Float32Array, phaseResponse: Float32Array): void; } @@ -697,8 +1193,8 @@ declare var BiquadFilterNode: { } interface Blob { - size: number; - type: string; + readonly size: number; + readonly type: string; msClose(): void; msDetachStream(): any; slice(start?: number, end?: number, contentType?: string): Blob; @@ -732,7 +1228,7 @@ declare var CSSConditionRule: { } interface CSSFontFaceRule extends CSSRule { - style: CSSStyleDeclaration; + readonly style: CSSStyleDeclaration; } declare var CSSFontFaceRule: { @@ -741,9 +1237,9 @@ declare var CSSFontFaceRule: { } interface CSSGroupingRule extends CSSRule { - cssRules: CSSRuleList; - deleteRule(index?: number): void; - insertRule(rule: string, index?: number): number; + readonly cssRules: CSSRuleList; + deleteRule(index: number): void; + insertRule(rule: string, index: number): number; } declare var CSSGroupingRule: { @@ -752,9 +1248,9 @@ declare var CSSGroupingRule: { } interface CSSImportRule extends CSSRule { - href: string; - media: MediaList; - styleSheet: CSSStyleSheet; + readonly href: string; + readonly media: MediaList; + readonly styleSheet: CSSStyleSheet; } declare var CSSImportRule: { @@ -764,7 +1260,7 @@ declare var CSSImportRule: { interface CSSKeyframeRule extends CSSRule { keyText: string; - style: CSSStyleDeclaration; + readonly style: CSSStyleDeclaration; } declare var CSSKeyframeRule: { @@ -773,7 +1269,7 @@ declare var CSSKeyframeRule: { } interface CSSKeyframesRule extends CSSRule { - cssRules: CSSRuleList; + readonly cssRules: CSSRuleList; name: string; appendRule(rule: string): void; deleteRule(rule: string): void; @@ -786,7 +1282,7 @@ declare var CSSKeyframesRule: { } interface CSSMediaRule extends CSSConditionRule { - media: MediaList; + readonly media: MediaList; } declare var CSSMediaRule: { @@ -795,8 +1291,8 @@ declare var CSSMediaRule: { } interface CSSNamespaceRule extends CSSRule { - namespaceURI: string; - prefix: string; + readonly namespaceURI: string; + readonly prefix: string; } declare var CSSNamespaceRule: { @@ -805,10 +1301,10 @@ declare var CSSNamespaceRule: { } interface CSSPageRule extends CSSRule { - pseudoClass: string; - selector: string; + readonly pseudoClass: string; + readonly selector: string; selectorText: string; - style: CSSStyleDeclaration; + readonly style: CSSStyleDeclaration; } declare var CSSPageRule: { @@ -818,42 +1314,42 @@ declare var CSSPageRule: { interface CSSRule { cssText: string; - parentRule: CSSRule; - parentStyleSheet: CSSStyleSheet; - type: number; - CHARSET_RULE: number; - FONT_FACE_RULE: number; - IMPORT_RULE: number; - KEYFRAMES_RULE: number; - KEYFRAME_RULE: number; - MEDIA_RULE: number; - NAMESPACE_RULE: number; - PAGE_RULE: number; - STYLE_RULE: number; - SUPPORTS_RULE: number; - UNKNOWN_RULE: number; - VIEWPORT_RULE: number; + readonly parentRule: CSSRule; + readonly parentStyleSheet: CSSStyleSheet; + readonly type: number; + readonly CHARSET_RULE: number; + readonly FONT_FACE_RULE: number; + readonly IMPORT_RULE: number; + readonly KEYFRAMES_RULE: number; + readonly KEYFRAME_RULE: number; + readonly MEDIA_RULE: number; + readonly NAMESPACE_RULE: number; + readonly PAGE_RULE: number; + readonly STYLE_RULE: number; + readonly SUPPORTS_RULE: number; + readonly UNKNOWN_RULE: number; + readonly VIEWPORT_RULE: number; } declare var CSSRule: { prototype: CSSRule; new(): CSSRule; - CHARSET_RULE: number; - FONT_FACE_RULE: number; - IMPORT_RULE: number; - KEYFRAMES_RULE: number; - KEYFRAME_RULE: number; - MEDIA_RULE: number; - NAMESPACE_RULE: number; - PAGE_RULE: number; - STYLE_RULE: number; - SUPPORTS_RULE: number; - UNKNOWN_RULE: number; - VIEWPORT_RULE: number; + readonly CHARSET_RULE: number; + readonly FONT_FACE_RULE: number; + readonly IMPORT_RULE: number; + readonly KEYFRAMES_RULE: number; + readonly KEYFRAME_RULE: number; + readonly MEDIA_RULE: number; + readonly NAMESPACE_RULE: number; + readonly PAGE_RULE: number; + readonly STYLE_RULE: number; + readonly SUPPORTS_RULE: number; + readonly UNKNOWN_RULE: number; + readonly VIEWPORT_RULE: number; } interface CSSRuleList { - length: number; + readonly length: number; item(index: number): CSSRule; [index: number]: CSSRule; } @@ -986,7 +1482,7 @@ interface CSSStyleDeclaration { justifyContent: string; kerning: string; left: string; - length: number; + readonly length: number; letterSpacing: string; lightingColor: string; lineHeight: string; @@ -1073,7 +1569,7 @@ interface CSSStyleDeclaration { pageBreakAfter: string; pageBreakBefore: string; pageBreakInside: string; - parentRule: CSSRule; + readonly parentRule: CSSRule; perspective: string; perspectiveOrigin: string; pointerEvents: string; @@ -1098,7 +1594,6 @@ interface CSSStyleDeclaration { textAlignLast: string; textAnchor: string; textDecoration: string; - textFillColor: string; textIndent: string; textJustify: string; textKashida: string; @@ -1134,25 +1629,12 @@ interface CSSStyleDeclaration { webkitAnimationTimingFunction: string; webkitAppearance: string; webkitBackfaceVisibility: string; - webkitBackground: string; - webkitBackgroundAttachment: string; webkitBackgroundClip: string; - webkitBackgroundColor: string; - webkitBackgroundImage: string; webkitBackgroundOrigin: string; - webkitBackgroundPosition: string; - webkitBackgroundPositionX: string; - webkitBackgroundPositionY: string; - webkitBackgroundRepeat: string; webkitBackgroundSize: string; webkitBorderBottomLeftRadius: string; webkitBorderBottomRightRadius: string; webkitBorderImage: string; - webkitBorderImageOutset: string; - webkitBorderImageRepeat: string; - webkitBorderImageSlice: string; - webkitBorderImageSource: string; - webkitBorderImageWidth: string; webkitBorderRadius: string; webkitBorderTopLeftRadius: string; webkitBorderTopRightRadius: string; @@ -1198,6 +1680,7 @@ interface CSSStyleDeclaration { webkitTransitionDuration: string; webkitTransitionProperty: string; webkitTransitionTimingFunction: string; + webkitUserModify: string; webkitUserSelect: string; webkitWritingMode: string; whiteSpace: string; @@ -1223,9 +1706,9 @@ declare var CSSStyleDeclaration: { } interface CSSStyleRule extends CSSRule { - readOnly: boolean; + readonly readOnly: boolean; selectorText: string; - style: CSSStyleDeclaration; + readonly style: CSSStyleDeclaration; } declare var CSSStyleRule: { @@ -1234,18 +1717,18 @@ declare var CSSStyleRule: { } interface CSSStyleSheet extends StyleSheet { - cssRules: CSSRuleList; + readonly cssRules: CSSRuleList; cssText: string; - href: string; - id: string; - imports: StyleSheetList; - isAlternate: boolean; - isPrefAlternate: boolean; - ownerRule: CSSRule; - owningElement: Element; - pages: StyleSheetPageList; - readOnly: boolean; - rules: CSSRuleList; + readonly href: string; + readonly id: string; + readonly imports: StyleSheetList; + readonly isAlternate: boolean; + readonly isPrefAlternate: boolean; + readonly ownerRule: CSSRule; + readonly owningElement: Element; + readonly pages: StyleSheetPageList; + readonly readOnly: boolean; + readonly rules: CSSRuleList; addImport(bstrURL: string, lIndex?: number): number; addPageRule(bstrSelector: string, bstrStyle: string, lIndex?: number): number; addRule(bstrSelector: string, bstrStyle?: string, lIndex?: number): number; @@ -1285,8 +1768,8 @@ declare var CanvasPattern: { new(): CanvasPattern; } -interface CanvasRenderingContext2D { - canvas: HTMLCanvasElement; +interface CanvasRenderingContext2D extends Object, CanvasPathMethods { + readonly canvas: HTMLCanvasElement; fillStyle: string | CanvasGradient | CanvasPattern; font: string; globalAlpha: number; @@ -1305,13 +1788,9 @@ interface CanvasRenderingContext2D { strokeStyle: string | CanvasGradient | CanvasPattern; textAlign: string; textBaseline: string; - arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, anticlockwise?: boolean): void; - arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): void; beginPath(): void; - bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): void; clearRect(x: number, y: number, w: number, h: number): void; clip(fillRule?: string): void; - closePath(): void; createImageData(imageDataOrSw: number | ImageData, sh?: number): ImageData; createLinearGradient(x0: number, y0: number, x1: number, y1: number): CanvasGradient; createPattern(image: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement, repetition: string): CanvasPattern; @@ -1323,12 +1802,8 @@ interface CanvasRenderingContext2D { getImageData(sx: number, sy: number, sw: number, sh: number): ImageData; getLineDash(): number[]; isPointInPath(x: number, y: number, fillRule?: string): boolean; - lineTo(x: number, y: number): void; measureText(text: string): TextMetrics; - moveTo(x: number, y: number): void; putImageData(imagedata: ImageData, dx: number, dy: number, dirtyX?: number, dirtyY?: number, dirtyWidth?: number, dirtyHeight?: number): void; - quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void; - rect(x: number, y: number, w: number, h: number): void; restore(): void; rotate(angle: number): void; save(): void; @@ -1365,7 +1840,7 @@ declare var ChannelSplitterNode: { interface CharacterData extends Node, ChildNode { data: string; - length: number; + readonly length: number; appendData(arg: string): void; deleteData(offset: number, count: number): void; insertData(offset: number, arg: string): void; @@ -1381,11 +1856,11 @@ declare var CharacterData: { interface ClientRect { bottom: number; - height: number; + readonly height: number; left: number; right: number; top: number; - width: number; + readonly width: number; } declare var ClientRect: { @@ -1394,7 +1869,7 @@ declare var ClientRect: { } interface ClientRectList { - length: number; + readonly length: number; item(index: number): ClientRect; [index: number]: ClientRect; } @@ -1405,7 +1880,7 @@ declare var ClientRectList: { } interface ClipboardEvent extends Event { - clipboardData: DataTransfer; + readonly clipboardData: DataTransfer; } declare var ClipboardEvent: { @@ -1414,9 +1889,9 @@ declare var ClipboardEvent: { } interface CloseEvent extends Event { - code: number; - reason: string; - wasClean: boolean; + readonly code: number; + readonly reason: string; + readonly wasClean: boolean; initCloseEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, wasCleanArg: boolean, codeArg: number, reasonArg: string): void; } @@ -1426,8 +1901,8 @@ declare var CloseEvent: { } interface CommandEvent extends Event { - commandName: string; - detail: string; + readonly commandName: string; + readonly detail: string; } declare var CommandEvent: { @@ -1445,8 +1920,8 @@ declare var Comment: { } interface CompositionEvent extends UIEvent { - data: string; - locale: string; + readonly data: string; + readonly locale: string; initCompositionEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, dataArg: string, locale: string): void; } @@ -1463,6 +1938,7 @@ interface Console { dir(value?: any, ...optionalParams: any[]): void; dirxml(value: any): void; error(message?: any, ...optionalParams: any[]): void; + exception(message?: string, ...optionalParams: any[]): void; group(groupTitle?: string): void; groupCollapsed(groupTitle?: string): void; groupEnd(): void; @@ -1472,6 +1948,7 @@ interface Console { profile(reportName?: string): void; profileEnd(): void; select(element: Element): void; + table(...data: any[]): void; time(timerName?: string): void; timeEnd(timerName?: string): void; trace(message?: any, ...optionalParams: any[]): void; @@ -1494,13 +1971,13 @@ declare var ConvolverNode: { } interface Coordinates { - accuracy: number; - altitude: number; - altitudeAccuracy: number; - heading: number; - latitude: number; - longitude: number; - speed: number; + readonly accuracy: number; + readonly altitude: number; + readonly altitudeAccuracy: number; + readonly heading: number; + readonly latitude: number; + readonly longitude: number; + readonly speed: number; } declare var Coordinates: { @@ -1509,7 +1986,7 @@ declare var Coordinates: { } interface Crypto extends Object, RandomSource { - subtle: SubtleCrypto; + readonly subtle: SubtleCrypto; } declare var Crypto: { @@ -1518,10 +1995,10 @@ declare var Crypto: { } interface CryptoKey { - algorithm: KeyAlgorithm; - extractable: boolean; - type: string; - usages: string[]; + readonly algorithm: KeyAlgorithm; + readonly extractable: boolean; + readonly type: string; + readonly usages: string[]; } declare var CryptoKey: { @@ -1540,7 +2017,7 @@ declare var CryptoKeyPair: { } interface CustomEvent extends Event { - detail: any; + readonly detail: any; initCustomEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, detailArg: any): void; } @@ -1550,7 +2027,7 @@ declare var CustomEvent: { } interface DOMError { - name: string; + readonly name: string; toString(): string; } @@ -1560,69 +2037,69 @@ declare var DOMError: { } interface DOMException { - code: number; - message: string; - name: string; + readonly code: number; + readonly message: string; + readonly name: string; toString(): string; - ABORT_ERR: number; - DATA_CLONE_ERR: number; - DOMSTRING_SIZE_ERR: number; - HIERARCHY_REQUEST_ERR: number; - INDEX_SIZE_ERR: number; - INUSE_ATTRIBUTE_ERR: number; - INVALID_ACCESS_ERR: number; - INVALID_CHARACTER_ERR: number; - INVALID_MODIFICATION_ERR: number; - INVALID_NODE_TYPE_ERR: number; - INVALID_STATE_ERR: number; - NAMESPACE_ERR: number; - NETWORK_ERR: number; - NOT_FOUND_ERR: number; - NOT_SUPPORTED_ERR: number; - NO_DATA_ALLOWED_ERR: number; - NO_MODIFICATION_ALLOWED_ERR: number; - PARSE_ERR: number; - QUOTA_EXCEEDED_ERR: number; - SECURITY_ERR: number; - SERIALIZE_ERR: number; - SYNTAX_ERR: number; - TIMEOUT_ERR: number; - TYPE_MISMATCH_ERR: number; - URL_MISMATCH_ERR: number; - VALIDATION_ERR: number; - WRONG_DOCUMENT_ERR: number; + readonly ABORT_ERR: number; + readonly DATA_CLONE_ERR: number; + readonly DOMSTRING_SIZE_ERR: number; + readonly HIERARCHY_REQUEST_ERR: number; + readonly INDEX_SIZE_ERR: number; + readonly INUSE_ATTRIBUTE_ERR: number; + readonly INVALID_ACCESS_ERR: number; + readonly INVALID_CHARACTER_ERR: number; + readonly INVALID_MODIFICATION_ERR: number; + readonly INVALID_NODE_TYPE_ERR: number; + readonly INVALID_STATE_ERR: number; + readonly NAMESPACE_ERR: number; + readonly NETWORK_ERR: number; + readonly NOT_FOUND_ERR: number; + readonly NOT_SUPPORTED_ERR: number; + readonly NO_DATA_ALLOWED_ERR: number; + readonly NO_MODIFICATION_ALLOWED_ERR: number; + readonly PARSE_ERR: number; + readonly QUOTA_EXCEEDED_ERR: number; + readonly SECURITY_ERR: number; + readonly SERIALIZE_ERR: number; + readonly SYNTAX_ERR: number; + readonly TIMEOUT_ERR: number; + readonly TYPE_MISMATCH_ERR: number; + readonly URL_MISMATCH_ERR: number; + readonly VALIDATION_ERR: number; + readonly WRONG_DOCUMENT_ERR: number; } declare var DOMException: { prototype: DOMException; new(): DOMException; - ABORT_ERR: number; - DATA_CLONE_ERR: number; - DOMSTRING_SIZE_ERR: number; - HIERARCHY_REQUEST_ERR: number; - INDEX_SIZE_ERR: number; - INUSE_ATTRIBUTE_ERR: number; - INVALID_ACCESS_ERR: number; - INVALID_CHARACTER_ERR: number; - INVALID_MODIFICATION_ERR: number; - INVALID_NODE_TYPE_ERR: number; - INVALID_STATE_ERR: number; - NAMESPACE_ERR: number; - NETWORK_ERR: number; - NOT_FOUND_ERR: number; - NOT_SUPPORTED_ERR: number; - NO_DATA_ALLOWED_ERR: number; - NO_MODIFICATION_ALLOWED_ERR: number; - PARSE_ERR: number; - QUOTA_EXCEEDED_ERR: number; - SECURITY_ERR: number; - SERIALIZE_ERR: number; - SYNTAX_ERR: number; - TIMEOUT_ERR: number; - TYPE_MISMATCH_ERR: number; - URL_MISMATCH_ERR: number; - VALIDATION_ERR: number; - WRONG_DOCUMENT_ERR: number; + readonly ABORT_ERR: number; + readonly DATA_CLONE_ERR: number; + readonly DOMSTRING_SIZE_ERR: number; + readonly HIERARCHY_REQUEST_ERR: number; + readonly INDEX_SIZE_ERR: number; + readonly INUSE_ATTRIBUTE_ERR: number; + readonly INVALID_ACCESS_ERR: number; + readonly INVALID_CHARACTER_ERR: number; + readonly INVALID_MODIFICATION_ERR: number; + readonly INVALID_NODE_TYPE_ERR: number; + readonly INVALID_STATE_ERR: number; + readonly NAMESPACE_ERR: number; + readonly NETWORK_ERR: number; + readonly NOT_FOUND_ERR: number; + readonly NOT_SUPPORTED_ERR: number; + readonly NO_DATA_ALLOWED_ERR: number; + readonly NO_MODIFICATION_ALLOWED_ERR: number; + readonly PARSE_ERR: number; + readonly QUOTA_EXCEEDED_ERR: number; + readonly SECURITY_ERR: number; + readonly SERIALIZE_ERR: number; + readonly SYNTAX_ERR: number; + readonly TIMEOUT_ERR: number; + readonly TYPE_MISMATCH_ERR: number; + readonly URL_MISMATCH_ERR: number; + readonly VALIDATION_ERR: number; + readonly WRONG_DOCUMENT_ERR: number; } interface DOMImplementation { @@ -1656,7 +2133,7 @@ declare var DOMSettableTokenList: { } interface DOMStringList { - length: number; + readonly length: number; contains(str: string): boolean; item(index: number): string; [index: number]: string; @@ -1677,7 +2154,7 @@ declare var DOMStringMap: { } interface DOMTokenList { - length: number; + readonly length: number; add(...token: string[]): void; contains(token: string): boolean; item(index: number): string; @@ -1704,9 +2181,9 @@ declare var DataCue: { interface DataTransfer { dropEffect: string; effectAllowed: string; - files: FileList; - items: DataTransferItemList; - types: DOMStringList; + readonly files: FileList; + readonly items: DataTransferItemList; + readonly types: DOMStringList; clearData(format?: string): boolean; getData(format: string): string; setData(format: string, data: string): boolean; @@ -1718,8 +2195,8 @@ declare var DataTransfer: { } interface DataTransferItem { - kind: string; - type: string; + readonly kind: string; + readonly type: string; getAsFile(): File; getAsString(_callback: FunctionStringCallback): void; } @@ -1730,7 +2207,7 @@ declare var DataTransferItem: { } interface DataTransferItemList { - length: number; + readonly length: number; add(data: File): DataTransferItem; clear(): void; item(index: number): DataTransferItem; @@ -1744,9 +2221,9 @@ declare var DataTransferItemList: { } interface DeferredPermissionRequest { - id: number; - type: string; - uri: string; + readonly id: number; + readonly type: string; + readonly uri: string; allow(): void; deny(): void; } @@ -1757,7 +2234,7 @@ declare var DeferredPermissionRequest: { } interface DelayNode extends AudioNode { - delayTime: AudioParam; + readonly delayTime: AudioParam; } declare var DelayNode: { @@ -1766,9 +2243,9 @@ declare var DelayNode: { } interface DeviceAcceleration { - x: number; - y: number; - z: number; + readonly x: number; + readonly y: number; + readonly z: number; } declare var DeviceAcceleration: { @@ -1776,11 +2253,20 @@ declare var DeviceAcceleration: { new(): DeviceAcceleration; } +interface DeviceLightEvent extends Event { + readonly value: number; +} + +declare var DeviceLightEvent: { + prototype: DeviceLightEvent; + new(type: string, eventInitDict?: DeviceLightEventInit): DeviceLightEvent; +} + interface DeviceMotionEvent extends Event { - acceleration: DeviceAcceleration; - accelerationIncludingGravity: DeviceAcceleration; - interval: number; - rotationRate: DeviceRotationRate; + readonly acceleration: DeviceAcceleration; + readonly accelerationIncludingGravity: DeviceAcceleration; + readonly interval: number; + readonly rotationRate: DeviceRotationRate; initDeviceMotionEvent(type: string, bubbles: boolean, cancelable: boolean, acceleration: DeviceAccelerationDict, accelerationIncludingGravity: DeviceAccelerationDict, rotationRate: DeviceRotationRateDict, interval: number): void; } @@ -1790,10 +2276,10 @@ declare var DeviceMotionEvent: { } interface DeviceOrientationEvent extends Event { - absolute: boolean; - alpha: number; - beta: number; - gamma: number; + readonly absolute: boolean; + readonly alpha: number; + readonly beta: number; + readonly gamma: number; initDeviceOrientationEvent(type: string, bubbles: boolean, cancelable: boolean, alpha: number, beta: number, gamma: number, absolute: boolean): void; } @@ -1803,9 +2289,9 @@ declare var DeviceOrientationEvent: { } interface DeviceRotationRate { - alpha: number; - beta: number; - gamma: number; + readonly alpha: number; + readonly beta: number; + readonly gamma: number; } declare var DeviceRotationRate: { @@ -1817,15 +2303,15 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven /** * Sets or gets the URL for the current document. */ - URL: string; + readonly URL: string; /** * Gets the URL for the document, stripped of any character encoding. */ - URLUnencoded: string; + readonly URLUnencoded: string; /** * Gets the object that has the focus when the parent document has focus. */ - activeElement: Element; + readonly activeElement: Element; /** * Sets or gets the color of all active links in the document. */ @@ -1833,15 +2319,15 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven /** * Returns a reference to the collection of elements contained by the object. */ - all: HTMLCollection; + readonly all: HTMLAllCollection; /** * Retrieves a collection of all a objects that have a name and/or id property. Objects in this collection are in HTML source order. */ - anchors: HTMLCollection; + anchors: HTMLCollectionOf; /** * Retrieves a collection of all applet objects in the document. */ - applets: HTMLCollection; + applets: HTMLCollectionOf; /** * Deprecated. Sets or retrieves a value that indicates the background color behind the object. */ @@ -1850,7 +2336,7 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven * Specifies the beginning and end of the document body. */ body: HTMLElement; - characterSet: string; + readonly characterSet: string; /** * Gets or sets the character set used to encode the object. */ @@ -1858,13 +2344,14 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven /** * Gets a value that indicates whether standards-compliant mode is switched on for the object. */ - compatMode: string; + readonly compatMode: string; cookie: string; + readonly currentScript: HTMLScriptElement | SVGScriptElement; /** * Gets the default character set from the current regional language settings. */ - defaultCharset: string; - defaultView: Window; + readonly defaultCharset: string; + readonly defaultView: Window; /** * Sets or gets a value that indicates whether the document can be edited. */ @@ -1876,7 +2363,7 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven /** * Gets an object representing the document type declaration associated with the current document. */ - doctype: DocumentType; + readonly doctype: DocumentType; /** * Gets a reference to the root node of the document. */ @@ -1888,7 +2375,7 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven /** * Retrieves a collection of all embed objects in the document. */ - embeds: HTMLCollection; + embeds: HTMLCollectionOf; /** * Sets or gets the foreground (text) color of the document. */ @@ -1896,27 +2383,27 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven /** * Retrieves a collection, in source order, of all form objects in the document. */ - forms: HTMLCollection; - fullscreenElement: Element; - fullscreenEnabled: boolean; - head: HTMLHeadElement; - hidden: boolean; + forms: HTMLCollectionOf; + readonly fullscreenElement: Element; + readonly fullscreenEnabled: boolean; + readonly head: HTMLHeadElement; + readonly hidden: boolean; /** * Retrieves a collection, in source order, of img objects in the document. */ - images: HTMLCollection; + images: HTMLCollectionOf; /** * Gets the implementation object of the current document. */ - implementation: DOMImplementation; + readonly implementation: DOMImplementation; /** * Returns the character encoding used to create the webpage that is loaded into the document object. */ - inputEncoding: string; + readonly inputEncoding: string; /** * Gets the date that the page was last modified, if the page supplies one. */ - lastModified: string; + readonly lastModified: string; /** * Sets or gets the color of the document links. */ @@ -1924,16 +2411,13 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven /** * Retrieves a collection of all a objects that specify the href property and all area objects in the document. */ - links: HTMLCollection; + links: HTMLCollectionOf; /** * Contains information about the current URL. */ - location: Location; - media: string; + readonly location: Location; msCSSOMElementFloatMetrics: boolean; msCapsLockWarningOff: boolean; - msHidden: boolean; - msVisibilityState: string; /** * Fires when the user aborts the download. * @param ev The event. @@ -2035,7 +2519,7 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven * Occurs when the end of playback is reached. * @param ev The event */ - onended: (ev: Event) => any; + onended: (ev: MediaStreamErrorEvent) => any; /** * Fires when an error occurs during object loading. * @param ev The event. @@ -2049,6 +2533,7 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven onfullscreenchange: (ev: Event) => any; onfullscreenerror: (ev: Event) => any; oninput: (ev: Event) => any; + oninvalid: (ev: Event) => any; /** * Fires when the user presses a key. * @param ev The keyboard event @@ -2113,7 +2598,7 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven * Fires when the wheel button is rotated. * @param ev The mouse event */ - onmousewheel: (ev: MouseWheelEvent) => any; + onmousewheel: (ev: WheelEvent) => any; onmscontentzoom: (ev: UIEvent) => any; onmsgesturechange: (ev: MSGestureEvent) => any; onmsgesturedoubletap: (ev: MSGestureEvent) => any; @@ -2198,6 +2683,11 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven * @param ev The event. */ onselect: (ev: UIEvent) => any; + /** + * Fires when the selection state of a document changes. + * @param ev The event. + */ + onselectionchange: (ev: Event) => any; onselectstart: (ev: Event) => any; /** * Occurs when the download has stopped. @@ -2236,51 +2726,51 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven onwaiting: (ev: Event) => any; onwebkitfullscreenchange: (ev: Event) => any; onwebkitfullscreenerror: (ev: Event) => any; - plugins: HTMLCollection; - pointerLockElement: Element; + plugins: HTMLCollectionOf; + readonly pointerLockElement: Element; /** * Retrieves a value that indicates the current state of the object. */ - readyState: string; + readonly readyState: string; /** * Gets the URL of the location that referred the user to the current page. */ - referrer: string; + readonly referrer: string; /** * Gets the root svg element in the document hierarchy. */ - rootElement: SVGSVGElement; + readonly rootElement: SVGSVGElement; /** * Retrieves a collection of all script objects in the document. */ - scripts: HTMLCollection; - security: string; + scripts: HTMLCollectionOf; + readonly scrollingElement: Element; /** * Retrieves a collection of styleSheet objects representing the style sheets that correspond to each instance of a link or style object in the document. */ - styleSheets: StyleSheetList; + readonly styleSheets: StyleSheetList; /** * Contains the title of the document. */ title: string; - visibilityState: string; + readonly visibilityState: string; /** * Sets or gets the color of the links that the user has visited. */ vlinkColor: string; - webkitCurrentFullScreenElement: Element; - webkitFullscreenElement: Element; - webkitFullscreenEnabled: boolean; - webkitIsFullScreen: boolean; - xmlEncoding: string; + readonly webkitCurrentFullScreenElement: Element; + readonly webkitFullscreenElement: Element; + readonly webkitFullscreenEnabled: boolean; + readonly webkitIsFullScreen: boolean; + readonly xmlEncoding: string; xmlStandalone: boolean; /** * Gets or sets the version attribute specified in the declaration of an XML document. */ xmlVersion: string; - currentScript: HTMLScriptElement; adoptNode(source: Node): Node; captureEvents(): void; + caretRangeFromPoint(x: number, y: number): Range; clear(): void; /** * Closes an output stream and forces the sent data to display. @@ -2307,37 +2797,24 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven * @param tagName The name of an element. */ createElement(tagName: "a"): HTMLAnchorElement; - createElement(tagName: "abbr"): HTMLPhraseElement; - createElement(tagName: "acronym"): HTMLPhraseElement; - createElement(tagName: "address"): HTMLBlockElement; createElement(tagName: "applet"): HTMLAppletElement; createElement(tagName: "area"): HTMLAreaElement; createElement(tagName: "audio"): HTMLAudioElement; - createElement(tagName: "b"): HTMLPhraseElement; createElement(tagName: "base"): HTMLBaseElement; createElement(tagName: "basefont"): HTMLBaseFontElement; - createElement(tagName: "bdo"): HTMLPhraseElement; - createElement(tagName: "big"): HTMLPhraseElement; - createElement(tagName: "blockquote"): HTMLBlockElement; + createElement(tagName: "blockquote"): HTMLQuoteElement; createElement(tagName: "body"): HTMLBodyElement; createElement(tagName: "br"): HTMLBRElement; createElement(tagName: "button"): HTMLButtonElement; createElement(tagName: "canvas"): HTMLCanvasElement; createElement(tagName: "caption"): HTMLTableCaptionElement; - createElement(tagName: "center"): HTMLBlockElement; - createElement(tagName: "cite"): HTMLPhraseElement; - createElement(tagName: "code"): HTMLPhraseElement; createElement(tagName: "col"): HTMLTableColElement; createElement(tagName: "colgroup"): HTMLTableColElement; createElement(tagName: "datalist"): HTMLDataListElement; - createElement(tagName: "dd"): HTMLDDElement; createElement(tagName: "del"): HTMLModElement; - createElement(tagName: "dfn"): HTMLPhraseElement; createElement(tagName: "dir"): HTMLDirectoryElement; createElement(tagName: "div"): HTMLDivElement; createElement(tagName: "dl"): HTMLDListElement; - createElement(tagName: "dt"): HTMLDTElement; - createElement(tagName: "em"): HTMLPhraseElement; createElement(tagName: "embed"): HTMLEmbedElement; createElement(tagName: "fieldset"): HTMLFieldSetElement; createElement(tagName: "font"): HTMLFontElement; @@ -2353,52 +2830,41 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven createElement(tagName: "head"): HTMLHeadElement; createElement(tagName: "hr"): HTMLHRElement; createElement(tagName: "html"): HTMLHtmlElement; - createElement(tagName: "i"): HTMLPhraseElement; createElement(tagName: "iframe"): HTMLIFrameElement; createElement(tagName: "img"): HTMLImageElement; createElement(tagName: "input"): HTMLInputElement; createElement(tagName: "ins"): HTMLModElement; - createElement(tagName: "isindex"): HTMLIsIndexElement; - createElement(tagName: "kbd"): HTMLPhraseElement; - createElement(tagName: "keygen"): HTMLBlockElement; + createElement(tagName: "isindex"): HTMLUnknownElement; createElement(tagName: "label"): HTMLLabelElement; createElement(tagName: "legend"): HTMLLegendElement; createElement(tagName: "li"): HTMLLIElement; createElement(tagName: "link"): HTMLLinkElement; - createElement(tagName: "listing"): HTMLBlockElement; + createElement(tagName: "listing"): HTMLPreElement; createElement(tagName: "map"): HTMLMapElement; createElement(tagName: "marquee"): HTMLMarqueeElement; createElement(tagName: "menu"): HTMLMenuElement; createElement(tagName: "meta"): HTMLMetaElement; - createElement(tagName: "nextid"): HTMLNextIdElement; - createElement(tagName: "nobr"): HTMLPhraseElement; + createElement(tagName: "meter"): HTMLMeterElement; + createElement(tagName: "nextid"): HTMLUnknownElement; createElement(tagName: "object"): HTMLObjectElement; createElement(tagName: "ol"): HTMLOListElement; createElement(tagName: "optgroup"): HTMLOptGroupElement; createElement(tagName: "option"): HTMLOptionElement; createElement(tagName: "p"): HTMLParagraphElement; createElement(tagName: "param"): HTMLParamElement; - createElement(tagName: "plaintext"): HTMLBlockElement; + createElement(tagName: "picture"): HTMLPictureElement; createElement(tagName: "pre"): HTMLPreElement; createElement(tagName: "progress"): HTMLProgressElement; createElement(tagName: "q"): HTMLQuoteElement; - createElement(tagName: "rt"): HTMLPhraseElement; - createElement(tagName: "ruby"): HTMLPhraseElement; - createElement(tagName: "s"): HTMLPhraseElement; - createElement(tagName: "samp"): HTMLPhraseElement; createElement(tagName: "script"): HTMLScriptElement; createElement(tagName: "select"): HTMLSelectElement; - createElement(tagName: "small"): HTMLPhraseElement; createElement(tagName: "source"): HTMLSourceElement; createElement(tagName: "span"): HTMLSpanElement; - createElement(tagName: "strike"): HTMLPhraseElement; - createElement(tagName: "strong"): HTMLPhraseElement; createElement(tagName: "style"): HTMLStyleElement; - createElement(tagName: "sub"): HTMLPhraseElement; - createElement(tagName: "sup"): HTMLPhraseElement; createElement(tagName: "table"): HTMLTableElement; createElement(tagName: "tbody"): HTMLTableSectionElement; createElement(tagName: "td"): HTMLTableDataCellElement; + createElement(tagName: "template"): HTMLTemplateElement; createElement(tagName: "textarea"): HTMLTextAreaElement; createElement(tagName: "tfoot"): HTMLTableSectionElement; createElement(tagName: "th"): HTMLTableHeaderCellElement; @@ -2406,13 +2872,10 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven createElement(tagName: "title"): HTMLTitleElement; createElement(tagName: "tr"): HTMLTableRowElement; createElement(tagName: "track"): HTMLTrackElement; - createElement(tagName: "tt"): HTMLPhraseElement; - createElement(tagName: "u"): HTMLPhraseElement; createElement(tagName: "ul"): HTMLUListElement; - createElement(tagName: "var"): HTMLPhraseElement; createElement(tagName: "video"): HTMLVideoElement; createElement(tagName: "x-ms-webview"): MSHTMLWebViewElement; - createElement(tagName: "xmp"): HTMLBlockElement; + createElement(tagName: "xmp"): HTMLPreElement; createElement(tagName: string): HTMLElement; createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "a"): SVGAElement createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "circle"): SVGCircleElement @@ -2497,7 +2960,7 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven * @param data String that specifies the nodeValue property of the text node. */ createTextNode(data: string): Text; - createTouch(view: any, target: EventTarget, identifier: number, pageX: number, pageY: number, screenX: number, screenY: number): Touch; + createTouch(view: Window, target: EventTarget, identifier: number, pageX: number, pageY: number, screenX: number, screenY: number): Touch; createTouchList(...touches: Touch[]): TouchList; /** * Creates a TreeWalker object that you can use to traverse filtered lists of nodes or elements in a document. @@ -2548,44 +3011,44 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven * @param name Specifies the name of an element. */ getElementsByTagName(tagname: "a"): NodeListOf; - getElementsByTagName(tagname: "abbr"): NodeListOf; - getElementsByTagName(tagname: "acronym"): NodeListOf; - getElementsByTagName(tagname: "address"): NodeListOf; + getElementsByTagName(tagname: "abbr"): NodeListOf; + getElementsByTagName(tagname: "acronym"): NodeListOf; + getElementsByTagName(tagname: "address"): NodeListOf; getElementsByTagName(tagname: "applet"): NodeListOf; getElementsByTagName(tagname: "area"): NodeListOf; getElementsByTagName(tagname: "article"): NodeListOf; getElementsByTagName(tagname: "aside"): NodeListOf; getElementsByTagName(tagname: "audio"): NodeListOf; - getElementsByTagName(tagname: "b"): NodeListOf; + getElementsByTagName(tagname: "b"): NodeListOf; getElementsByTagName(tagname: "base"): NodeListOf; getElementsByTagName(tagname: "basefont"): NodeListOf; - getElementsByTagName(tagname: "bdo"): NodeListOf; - getElementsByTagName(tagname: "big"): NodeListOf; - getElementsByTagName(tagname: "blockquote"): NodeListOf; + getElementsByTagName(tagname: "bdo"): NodeListOf; + getElementsByTagName(tagname: "big"): NodeListOf; + getElementsByTagName(tagname: "blockquote"): NodeListOf; getElementsByTagName(tagname: "body"): NodeListOf; getElementsByTagName(tagname: "br"): NodeListOf; getElementsByTagName(tagname: "button"): NodeListOf; getElementsByTagName(tagname: "canvas"): NodeListOf; getElementsByTagName(tagname: "caption"): NodeListOf; - getElementsByTagName(tagname: "center"): NodeListOf; + getElementsByTagName(tagname: "center"): NodeListOf; getElementsByTagName(tagname: "circle"): NodeListOf; - getElementsByTagName(tagname: "cite"): NodeListOf; + getElementsByTagName(tagname: "cite"): NodeListOf; getElementsByTagName(tagname: "clippath"): NodeListOf; - getElementsByTagName(tagname: "code"): NodeListOf; + getElementsByTagName(tagname: "code"): NodeListOf; getElementsByTagName(tagname: "col"): NodeListOf; getElementsByTagName(tagname: "colgroup"): NodeListOf; getElementsByTagName(tagname: "datalist"): NodeListOf; - getElementsByTagName(tagname: "dd"): NodeListOf; + getElementsByTagName(tagname: "dd"): NodeListOf; getElementsByTagName(tagname: "defs"): NodeListOf; getElementsByTagName(tagname: "del"): NodeListOf; getElementsByTagName(tagname: "desc"): NodeListOf; - getElementsByTagName(tagname: "dfn"): NodeListOf; + getElementsByTagName(tagname: "dfn"): NodeListOf; getElementsByTagName(tagname: "dir"): NodeListOf; getElementsByTagName(tagname: "div"): NodeListOf; getElementsByTagName(tagname: "dl"): NodeListOf; - getElementsByTagName(tagname: "dt"): NodeListOf; + getElementsByTagName(tagname: "dt"): NodeListOf; getElementsByTagName(tagname: "ellipse"): NodeListOf; - getElementsByTagName(tagname: "em"): NodeListOf; + getElementsByTagName(tagname: "em"): NodeListOf; getElementsByTagName(tagname: "embed"): NodeListOf; getElementsByTagName(tagname: "feblend"): NodeListOf; getElementsByTagName(tagname: "fecolormatrix"): NodeListOf; @@ -2633,22 +3096,22 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven getElementsByTagName(tagname: "hgroup"): NodeListOf; getElementsByTagName(tagname: "hr"): NodeListOf; getElementsByTagName(tagname: "html"): NodeListOf; - getElementsByTagName(tagname: "i"): NodeListOf; + getElementsByTagName(tagname: "i"): NodeListOf; getElementsByTagName(tagname: "iframe"): NodeListOf; getElementsByTagName(tagname: "image"): NodeListOf; getElementsByTagName(tagname: "img"): NodeListOf; getElementsByTagName(tagname: "input"): NodeListOf; getElementsByTagName(tagname: "ins"): NodeListOf; - getElementsByTagName(tagname: "isindex"): NodeListOf; - getElementsByTagName(tagname: "kbd"): NodeListOf; - getElementsByTagName(tagname: "keygen"): NodeListOf; + getElementsByTagName(tagname: "isindex"): NodeListOf; + getElementsByTagName(tagname: "kbd"): NodeListOf; + getElementsByTagName(tagname: "keygen"): NodeListOf; getElementsByTagName(tagname: "label"): NodeListOf; getElementsByTagName(tagname: "legend"): NodeListOf; getElementsByTagName(tagname: "li"): NodeListOf; getElementsByTagName(tagname: "line"): NodeListOf; getElementsByTagName(tagname: "lineargradient"): NodeListOf; getElementsByTagName(tagname: "link"): NodeListOf; - getElementsByTagName(tagname: "listing"): NodeListOf; + getElementsByTagName(tagname: "listing"): NodeListOf; getElementsByTagName(tagname: "map"): NodeListOf; getElementsByTagName(tagname: "mark"): NodeListOf; getElementsByTagName(tagname: "marker"): NodeListOf; @@ -2657,9 +3120,10 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven getElementsByTagName(tagname: "menu"): NodeListOf; getElementsByTagName(tagname: "meta"): NodeListOf; getElementsByTagName(tagname: "metadata"): NodeListOf; + getElementsByTagName(tagname: "meter"): NodeListOf; getElementsByTagName(tagname: "nav"): NodeListOf; - getElementsByTagName(tagname: "nextid"): NodeListOf; - getElementsByTagName(tagname: "nobr"): NodeListOf; + getElementsByTagName(tagname: "nextid"): NodeListOf; + getElementsByTagName(tagname: "nobr"): NodeListOf; getElementsByTagName(tagname: "noframes"): NodeListOf; getElementsByTagName(tagname: "noscript"): NodeListOf; getElementsByTagName(tagname: "object"): NodeListOf; @@ -2670,7 +3134,8 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven getElementsByTagName(tagname: "param"): NodeListOf; getElementsByTagName(tagname: "path"): NodeListOf; getElementsByTagName(tagname: "pattern"): NodeListOf; - getElementsByTagName(tagname: "plaintext"): NodeListOf; + getElementsByTagName(tagname: "picture"): NodeListOf; + getElementsByTagName(tagname: "plaintext"): NodeListOf; getElementsByTagName(tagname: "polygon"): NodeListOf; getElementsByTagName(tagname: "polyline"): NodeListOf; getElementsByTagName(tagname: "pre"): NodeListOf; @@ -2678,28 +3143,29 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven getElementsByTagName(tagname: "q"): NodeListOf; getElementsByTagName(tagname: "radialgradient"): NodeListOf; getElementsByTagName(tagname: "rect"): NodeListOf; - getElementsByTagName(tagname: "rt"): NodeListOf; - getElementsByTagName(tagname: "ruby"): NodeListOf; - getElementsByTagName(tagname: "s"): NodeListOf; - getElementsByTagName(tagname: "samp"): NodeListOf; + getElementsByTagName(tagname: "rt"): NodeListOf; + getElementsByTagName(tagname: "ruby"): NodeListOf; + getElementsByTagName(tagname: "s"): NodeListOf; + getElementsByTagName(tagname: "samp"): NodeListOf; getElementsByTagName(tagname: "script"): NodeListOf; getElementsByTagName(tagname: "section"): NodeListOf; getElementsByTagName(tagname: "select"): NodeListOf; - getElementsByTagName(tagname: "small"): NodeListOf; + getElementsByTagName(tagname: "small"): NodeListOf; getElementsByTagName(tagname: "source"): NodeListOf; getElementsByTagName(tagname: "span"): NodeListOf; getElementsByTagName(tagname: "stop"): NodeListOf; - getElementsByTagName(tagname: "strike"): NodeListOf; - getElementsByTagName(tagname: "strong"): NodeListOf; + getElementsByTagName(tagname: "strike"): NodeListOf; + getElementsByTagName(tagname: "strong"): NodeListOf; getElementsByTagName(tagname: "style"): NodeListOf; - getElementsByTagName(tagname: "sub"): NodeListOf; - getElementsByTagName(tagname: "sup"): NodeListOf; + getElementsByTagName(tagname: "sub"): NodeListOf; + getElementsByTagName(tagname: "sup"): NodeListOf; getElementsByTagName(tagname: "svg"): NodeListOf; getElementsByTagName(tagname: "switch"): NodeListOf; getElementsByTagName(tagname: "symbol"): NodeListOf; getElementsByTagName(tagname: "table"): NodeListOf; getElementsByTagName(tagname: "tbody"): NodeListOf; getElementsByTagName(tagname: "td"): NodeListOf; + getElementsByTagName(tagname: "template"): NodeListOf; getElementsByTagName(tagname: "text"): NodeListOf; getElementsByTagName(tagname: "textpath"): NodeListOf; getElementsByTagName(tagname: "textarea"): NodeListOf; @@ -2710,16 +3176,16 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven getElementsByTagName(tagname: "tr"): NodeListOf; getElementsByTagName(tagname: "track"): NodeListOf; getElementsByTagName(tagname: "tspan"): NodeListOf; - getElementsByTagName(tagname: "tt"): NodeListOf; - getElementsByTagName(tagname: "u"): NodeListOf; + getElementsByTagName(tagname: "tt"): NodeListOf; + getElementsByTagName(tagname: "u"): NodeListOf; getElementsByTagName(tagname: "ul"): NodeListOf; getElementsByTagName(tagname: "use"): NodeListOf; - getElementsByTagName(tagname: "var"): NodeListOf; + getElementsByTagName(tagname: "var"): NodeListOf; getElementsByTagName(tagname: "video"): NodeListOf; getElementsByTagName(tagname: "view"): NodeListOf; getElementsByTagName(tagname: "wbr"): NodeListOf; getElementsByTagName(tagname: "x-ms-webview"): NodeListOf; - getElementsByTagName(tagname: "xmp"): NodeListOf; + getElementsByTagName(tagname: "xmp"): NodeListOf; getElementsByTagName(tagname: string): NodeListOf; getElementsByTagNameNS(namespaceURI: string, localName: string): NodeListOf; /** @@ -2731,8 +3197,8 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven */ hasFocus(): boolean; importNode(importedNode: Node, deep: boolean): Node; - msElementsFromPoint(x: number, y: number): NodeList; - msElementsFromRect(left: number, top: number, width: number, height: number): NodeList; + msElementsFromPoint(x: number, y: number): NodeListOf; + msElementsFromRect(left: number, top: number, width: number, height: number): NodeListOf; /** * Opens a new window and loads a document specified by a given URL. Also, opens a new window that uses the url parameter and the name parameter to collect the output of the write method and the writeln method. * @param url Specifies a MIME type for the document. @@ -2828,12 +3294,13 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "ended", listener: (ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; addEventListener(type: "fullscreenchange", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "fullscreenerror", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "invalid", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; @@ -2846,7 +3313,7 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousewheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; addEventListener(type: "mssitemodejumplistitemremoved", listener: (ev: MSSiteModeEvent) => any, useCapture?: boolean): void; addEventListener(type: "msthumbnailclick", listener: (ev: MSSiteModeEvent) => any, useCapture?: boolean): void; addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -2870,6 +3337,7 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven addEventListener(type: "seeked", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "seeking", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "select", listener: (ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "selectionchange", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "selectstart", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "stalled", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "stop", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -2903,12 +3371,12 @@ declare var DocumentFragment: { } interface DocumentType extends Node, ChildNode { - entities: NamedNodeMap; - internalSubset: string; - name: string; - notations: NamedNodeMap; - publicId: string; - systemId: string; + readonly entities: NamedNodeMap; + readonly internalSubset: string; + readonly name: string; + readonly notations: NamedNodeMap; + readonly publicId: string; + readonly systemId: string; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -2918,7 +3386,7 @@ declare var DocumentType: { } interface DragEvent extends MouseEvent { - dataTransfer: DataTransfer; + readonly dataTransfer: DataTransfer; initDragEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, screenXArg: number, screenYArg: number, clientXArg: number, clientYArg: number, ctrlKeyArg: boolean, altKeyArg: boolean, shiftKeyArg: boolean, metaKeyArg: boolean, buttonArg: number, relatedTargetArg: EventTarget, dataTransferArg: DataTransfer): void; msConvertURL(file: File, targetType: string, targetURL?: string): void; } @@ -2929,12 +3397,12 @@ declare var DragEvent: { } interface DynamicsCompressorNode extends AudioNode { - attack: AudioParam; - knee: AudioParam; - ratio: AudioParam; - reduction: AudioParam; - release: AudioParam; - threshold: AudioParam; + readonly attack: AudioParam; + readonly knee: AudioParam; + readonly ratio: AudioParam; + readonly reduction: AudioParam; + readonly release: AudioParam; + readonly threshold: AudioParam; } declare var DynamicsCompressorNode: { @@ -2942,26 +3410,36 @@ declare var DynamicsCompressorNode: { new(): DynamicsCompressorNode; } +interface EXT_frag_depth { +} + +declare var EXT_frag_depth: { + prototype: EXT_frag_depth; + new(): EXT_frag_depth; +} + interface EXT_texture_filter_anisotropic { - MAX_TEXTURE_MAX_ANISOTROPY_EXT: number; - TEXTURE_MAX_ANISOTROPY_EXT: number; + readonly MAX_TEXTURE_MAX_ANISOTROPY_EXT: number; + readonly TEXTURE_MAX_ANISOTROPY_EXT: number; } declare var EXT_texture_filter_anisotropic: { prototype: EXT_texture_filter_anisotropic; new(): EXT_texture_filter_anisotropic; - MAX_TEXTURE_MAX_ANISOTROPY_EXT: number; - TEXTURE_MAX_ANISOTROPY_EXT: number; + readonly MAX_TEXTURE_MAX_ANISOTROPY_EXT: number; + readonly TEXTURE_MAX_ANISOTROPY_EXT: number; } interface Element extends Node, GlobalEventHandlers, ElementTraversal, NodeSelector, ChildNode { - classList: DOMTokenList; - clientHeight: number; - clientLeft: number; - clientTop: number; - clientWidth: number; + readonly classList: DOMTokenList; + className: string; + readonly clientHeight: number; + readonly clientLeft: number; + readonly clientTop: number; + readonly clientWidth: number; + id: string; msContentZoomFactor: number; - msRegionOverflow: string; + readonly msRegionOverflow: string; onariarequest: (ev: AriaRequestEvent) => any; oncommand: (ev: CommandEvent) => any; ongotpointercapture: (ev: PointerEvent) => any; @@ -2989,13 +3467,12 @@ interface Element extends Node, GlobalEventHandlers, ElementTraversal, NodeSelec ontouchstart: (ev: TouchEvent) => any; onwebkitfullscreenchange: (ev: Event) => any; onwebkitfullscreenerror: (ev: Event) => any; - scrollHeight: number; + readonly prefix: string; + readonly scrollHeight: number; scrollLeft: number; scrollTop: number; - scrollWidth: number; - tagName: string; - id: string; - className: string; + readonly scrollWidth: number; + readonly tagName: string; innerHTML: string; getAttribute(name?: string): string; getAttributeNS(namespaceURI: string, localName: string): string; @@ -3004,44 +3481,44 @@ interface Element extends Node, GlobalEventHandlers, ElementTraversal, NodeSelec getBoundingClientRect(): ClientRect; getClientRects(): ClientRectList; getElementsByTagName(name: "a"): NodeListOf; - getElementsByTagName(name: "abbr"): NodeListOf; - getElementsByTagName(name: "acronym"): NodeListOf; - getElementsByTagName(name: "address"): NodeListOf; + getElementsByTagName(name: "abbr"): NodeListOf; + getElementsByTagName(name: "acronym"): NodeListOf; + getElementsByTagName(name: "address"): NodeListOf; getElementsByTagName(name: "applet"): NodeListOf; getElementsByTagName(name: "area"): NodeListOf; getElementsByTagName(name: "article"): NodeListOf; getElementsByTagName(name: "aside"): NodeListOf; getElementsByTagName(name: "audio"): NodeListOf; - getElementsByTagName(name: "b"): NodeListOf; + getElementsByTagName(name: "b"): NodeListOf; getElementsByTagName(name: "base"): NodeListOf; getElementsByTagName(name: "basefont"): NodeListOf; - getElementsByTagName(name: "bdo"): NodeListOf; - getElementsByTagName(name: "big"): NodeListOf; - getElementsByTagName(name: "blockquote"): NodeListOf; + getElementsByTagName(name: "bdo"): NodeListOf; + getElementsByTagName(name: "big"): NodeListOf; + getElementsByTagName(name: "blockquote"): NodeListOf; getElementsByTagName(name: "body"): NodeListOf; getElementsByTagName(name: "br"): NodeListOf; getElementsByTagName(name: "button"): NodeListOf; getElementsByTagName(name: "canvas"): NodeListOf; getElementsByTagName(name: "caption"): NodeListOf; - getElementsByTagName(name: "center"): NodeListOf; + getElementsByTagName(name: "center"): NodeListOf; getElementsByTagName(name: "circle"): NodeListOf; - getElementsByTagName(name: "cite"): NodeListOf; + getElementsByTagName(name: "cite"): NodeListOf; getElementsByTagName(name: "clippath"): NodeListOf; - getElementsByTagName(name: "code"): NodeListOf; + getElementsByTagName(name: "code"): NodeListOf; getElementsByTagName(name: "col"): NodeListOf; getElementsByTagName(name: "colgroup"): NodeListOf; getElementsByTagName(name: "datalist"): NodeListOf; - getElementsByTagName(name: "dd"): NodeListOf; + getElementsByTagName(name: "dd"): NodeListOf; getElementsByTagName(name: "defs"): NodeListOf; getElementsByTagName(name: "del"): NodeListOf; getElementsByTagName(name: "desc"): NodeListOf; - getElementsByTagName(name: "dfn"): NodeListOf; + getElementsByTagName(name: "dfn"): NodeListOf; getElementsByTagName(name: "dir"): NodeListOf; getElementsByTagName(name: "div"): NodeListOf; getElementsByTagName(name: "dl"): NodeListOf; - getElementsByTagName(name: "dt"): NodeListOf; + getElementsByTagName(name: "dt"): NodeListOf; getElementsByTagName(name: "ellipse"): NodeListOf; - getElementsByTagName(name: "em"): NodeListOf; + getElementsByTagName(name: "em"): NodeListOf; getElementsByTagName(name: "embed"): NodeListOf; getElementsByTagName(name: "feblend"): NodeListOf; getElementsByTagName(name: "fecolormatrix"): NodeListOf; @@ -3089,22 +3566,22 @@ interface Element extends Node, GlobalEventHandlers, ElementTraversal, NodeSelec getElementsByTagName(name: "hgroup"): NodeListOf; getElementsByTagName(name: "hr"): NodeListOf; getElementsByTagName(name: "html"): NodeListOf; - getElementsByTagName(name: "i"): NodeListOf; + getElementsByTagName(name: "i"): NodeListOf; getElementsByTagName(name: "iframe"): NodeListOf; getElementsByTagName(name: "image"): NodeListOf; getElementsByTagName(name: "img"): NodeListOf; getElementsByTagName(name: "input"): NodeListOf; getElementsByTagName(name: "ins"): NodeListOf; - getElementsByTagName(name: "isindex"): NodeListOf; - getElementsByTagName(name: "kbd"): NodeListOf; - getElementsByTagName(name: "keygen"): NodeListOf; + getElementsByTagName(name: "isindex"): NodeListOf; + getElementsByTagName(name: "kbd"): NodeListOf; + getElementsByTagName(name: "keygen"): NodeListOf; getElementsByTagName(name: "label"): NodeListOf; getElementsByTagName(name: "legend"): NodeListOf; getElementsByTagName(name: "li"): NodeListOf; getElementsByTagName(name: "line"): NodeListOf; getElementsByTagName(name: "lineargradient"): NodeListOf; getElementsByTagName(name: "link"): NodeListOf; - getElementsByTagName(name: "listing"): NodeListOf; + getElementsByTagName(name: "listing"): NodeListOf; getElementsByTagName(name: "map"): NodeListOf; getElementsByTagName(name: "mark"): NodeListOf; getElementsByTagName(name: "marker"): NodeListOf; @@ -3113,9 +3590,10 @@ interface Element extends Node, GlobalEventHandlers, ElementTraversal, NodeSelec getElementsByTagName(name: "menu"): NodeListOf; getElementsByTagName(name: "meta"): NodeListOf; getElementsByTagName(name: "metadata"): NodeListOf; + getElementsByTagName(name: "meter"): NodeListOf; getElementsByTagName(name: "nav"): NodeListOf; - getElementsByTagName(name: "nextid"): NodeListOf; - getElementsByTagName(name: "nobr"): NodeListOf; + getElementsByTagName(name: "nextid"): NodeListOf; + getElementsByTagName(name: "nobr"): NodeListOf; getElementsByTagName(name: "noframes"): NodeListOf; getElementsByTagName(name: "noscript"): NodeListOf; getElementsByTagName(name: "object"): NodeListOf; @@ -3126,7 +3604,8 @@ interface Element extends Node, GlobalEventHandlers, ElementTraversal, NodeSelec getElementsByTagName(name: "param"): NodeListOf; getElementsByTagName(name: "path"): NodeListOf; getElementsByTagName(name: "pattern"): NodeListOf; - getElementsByTagName(name: "plaintext"): NodeListOf; + getElementsByTagName(name: "picture"): NodeListOf; + getElementsByTagName(name: "plaintext"): NodeListOf; getElementsByTagName(name: "polygon"): NodeListOf; getElementsByTagName(name: "polyline"): NodeListOf; getElementsByTagName(name: "pre"): NodeListOf; @@ -3134,28 +3613,29 @@ interface Element extends Node, GlobalEventHandlers, ElementTraversal, NodeSelec getElementsByTagName(name: "q"): NodeListOf; getElementsByTagName(name: "radialgradient"): NodeListOf; getElementsByTagName(name: "rect"): NodeListOf; - getElementsByTagName(name: "rt"): NodeListOf; - getElementsByTagName(name: "ruby"): NodeListOf; - getElementsByTagName(name: "s"): NodeListOf; - getElementsByTagName(name: "samp"): NodeListOf; + getElementsByTagName(name: "rt"): NodeListOf; + getElementsByTagName(name: "ruby"): NodeListOf; + getElementsByTagName(name: "s"): NodeListOf; + getElementsByTagName(name: "samp"): NodeListOf; getElementsByTagName(name: "script"): NodeListOf; getElementsByTagName(name: "section"): NodeListOf; getElementsByTagName(name: "select"): NodeListOf; - getElementsByTagName(name: "small"): NodeListOf; + getElementsByTagName(name: "small"): NodeListOf; getElementsByTagName(name: "source"): NodeListOf; getElementsByTagName(name: "span"): NodeListOf; getElementsByTagName(name: "stop"): NodeListOf; - getElementsByTagName(name: "strike"): NodeListOf; - getElementsByTagName(name: "strong"): NodeListOf; + getElementsByTagName(name: "strike"): NodeListOf; + getElementsByTagName(name: "strong"): NodeListOf; getElementsByTagName(name: "style"): NodeListOf; - getElementsByTagName(name: "sub"): NodeListOf; - getElementsByTagName(name: "sup"): NodeListOf; + getElementsByTagName(name: "sub"): NodeListOf; + getElementsByTagName(name: "sup"): NodeListOf; getElementsByTagName(name: "svg"): NodeListOf; getElementsByTagName(name: "switch"): NodeListOf; getElementsByTagName(name: "symbol"): NodeListOf; getElementsByTagName(name: "table"): NodeListOf; getElementsByTagName(name: "tbody"): NodeListOf; getElementsByTagName(name: "td"): NodeListOf; + getElementsByTagName(name: "template"): NodeListOf; getElementsByTagName(name: "text"): NodeListOf; getElementsByTagName(name: "textpath"): NodeListOf; getElementsByTagName(name: "textarea"): NodeListOf; @@ -3166,16 +3646,16 @@ interface Element extends Node, GlobalEventHandlers, ElementTraversal, NodeSelec getElementsByTagName(name: "tr"): NodeListOf; getElementsByTagName(name: "track"): NodeListOf; getElementsByTagName(name: "tspan"): NodeListOf; - getElementsByTagName(name: "tt"): NodeListOf; - getElementsByTagName(name: "u"): NodeListOf; + getElementsByTagName(name: "tt"): NodeListOf; + getElementsByTagName(name: "u"): NodeListOf; getElementsByTagName(name: "ul"): NodeListOf; getElementsByTagName(name: "use"): NodeListOf; - getElementsByTagName(name: "var"): NodeListOf; + getElementsByTagName(name: "var"): NodeListOf; getElementsByTagName(name: "video"): NodeListOf; getElementsByTagName(name: "view"): NodeListOf; getElementsByTagName(name: "wbr"): NodeListOf; getElementsByTagName(name: "x-ms-webview"): NodeListOf; - getElementsByTagName(name: "xmp"): NodeListOf; + getElementsByTagName(name: "xmp"): NodeListOf; getElementsByTagName(name: string): NodeListOf; getElementsByTagNameNS(namespaceURI: string, localName: string): NodeListOf; hasAttribute(name: string): boolean; @@ -3248,11 +3728,11 @@ declare var Element: { } interface ErrorEvent extends Event { - colno: number; - error: any; - filename: string; - lineno: number; - message: string; + readonly colno: number; + readonly error: any; + readonly filename: string; + readonly lineno: number; + readonly message: string; initErrorEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, messageArg: string, filenameArg: string, linenoArg: number): void; } @@ -3262,39 +3742,39 @@ declare var ErrorEvent: { } interface Event { - bubbles: boolean; + readonly bubbles: boolean; cancelBubble: boolean; - cancelable: boolean; - currentTarget: EventTarget; - defaultPrevented: boolean; - eventPhase: number; - isTrusted: boolean; + readonly cancelable: boolean; + readonly currentTarget: EventTarget; + readonly defaultPrevented: boolean; + readonly eventPhase: number; + readonly isTrusted: boolean; returnValue: boolean; - srcElement: Element; - target: EventTarget; - timeStamp: number; - type: string; + readonly srcElement: Element; + readonly target: EventTarget; + readonly timeStamp: number; + readonly type: string; initEvent(eventTypeArg: string, canBubbleArg: boolean, cancelableArg: boolean): void; preventDefault(): void; stopImmediatePropagation(): void; stopPropagation(): void; - AT_TARGET: number; - BUBBLING_PHASE: number; - CAPTURING_PHASE: number; + readonly AT_TARGET: number; + readonly BUBBLING_PHASE: number; + readonly CAPTURING_PHASE: number; } declare var Event: { prototype: Event; new(type: string, eventInitDict?: EventInit): Event; - AT_TARGET: number; - BUBBLING_PHASE: number; - CAPTURING_PHASE: number; + readonly AT_TARGET: number; + readonly BUBBLING_PHASE: number; + readonly CAPTURING_PHASE: number; } interface EventTarget { - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; + addEventListener(type: string, listener?: EventListenerOrEventListenerObject, useCapture?: boolean): void; dispatchEvent(evt: Event): boolean; - removeEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; + removeEventListener(type: string, listener?: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var EventTarget: { @@ -3311,8 +3791,9 @@ declare var External: { } interface File extends Blob { - lastModifiedDate: any; - name: string; + readonly lastModifiedDate: any; + readonly name: string; + readonly webkitRelativePath: string; } declare var File: { @@ -3321,7 +3802,7 @@ declare var File: { } interface FileList { - length: number; + readonly length: number; item(index: number): File; [index: number]: File; } @@ -3332,7 +3813,7 @@ declare var FileList: { } interface FileReader extends EventTarget, MSBaseReader { - error: DOMError; + readonly error: DOMError; readAsArrayBuffer(blob: Blob): void; readAsBinaryString(blob: Blob): void; readAsDataURL(blob: Blob): void; @@ -3346,7 +3827,7 @@ declare var FileReader: { } interface FocusEvent extends UIEvent { - relatedTarget: EventTarget; + readonly relatedTarget: EventTarget; initFocusEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, relatedTargetArg: EventTarget): void; } @@ -3365,7 +3846,7 @@ declare var FormData: { } interface GainNode extends AudioNode { - gain: AudioParam; + readonly gain: AudioParam; } declare var GainNode: { @@ -3374,13 +3855,13 @@ declare var GainNode: { } interface Gamepad { - axes: number[]; - buttons: GamepadButton[]; - connected: boolean; - id: string; - index: number; - mapping: string; - timestamp: number; + readonly axes: number[]; + readonly buttons: GamepadButton[]; + readonly connected: boolean; + readonly id: string; + readonly index: number; + readonly mapping: string; + readonly timestamp: number; } declare var Gamepad: { @@ -3389,8 +3870,8 @@ declare var Gamepad: { } interface GamepadButton { - pressed: boolean; - value: number; + readonly pressed: boolean; + readonly value: number; } declare var GamepadButton: { @@ -3399,7 +3880,7 @@ declare var GamepadButton: { } interface GamepadEvent extends Event { - gamepad: Gamepad; + readonly gamepad: Gamepad; } declare var GamepadEvent: { @@ -3437,6 +3918,7 @@ interface HTMLAnchorElement extends HTMLElement { * Sets or retrieves the coordinates of the object. */ coords: string; + download: string; /** * Contains the anchor portion of the URL including the hash sign (#). */ @@ -3457,12 +3939,12 @@ interface HTMLAnchorElement extends HTMLElement { * Sets or retrieves the language code of the object. */ hreflang: string; - mimeType: string; + readonly mimeType: string; /** * Sets or retrieves the shape of the object. */ name: string; - nameProp: string; + readonly nameProp: string; /** * Contains the pathname of the URL. */ @@ -3475,7 +3957,7 @@ interface HTMLAnchorElement extends HTMLElement { * Contains the protocol of the URL. */ protocol: string; - protocolLong: string; + readonly protocolLong: string; /** * Sets or retrieves the relationship between the object and the destination of the link. */ @@ -3517,7 +3999,7 @@ interface HTMLAppletElement extends HTMLElement { /** * Retrieves a string of the URL where the object tag can be found. This is often the href of the document that the object is in, or the value set by a base element. */ - BaseHref: string; + readonly BaseHref: string; align: string; /** * Sets or retrieves a text alternative to the graphic. @@ -3544,7 +4026,7 @@ interface HTMLAppletElement extends HTMLElement { /** * Address of a pointer to the document this page or frame contains. If there is no document, then null will be returned. */ - contentDocument: Document; + readonly contentDocument: Document; /** * Sets or retrieves the URL that references the data of the object. */ @@ -3553,7 +4035,7 @@ interface HTMLAppletElement extends HTMLElement { * Sets or retrieves a character string that can be used to implement your own declare functionality for the object. */ declare: boolean; - form: HTMLFormElement; + readonly form: HTMLFormElement; /** * Sets or retrieves the height of the object. */ @@ -3594,6 +4076,7 @@ interface HTMLAreaElement extends HTMLElement { * Sets or retrieves the coordinates of the object. */ coords: string; + download: string; /** * Sets or retrieves the subsection of the href property that follows the number sign (#). */ @@ -3719,23 +4202,6 @@ declare var HTMLBaseFontElement: { new(): HTMLBaseFontElement; } -interface HTMLBlockElement extends HTMLElement { - /** - * Sets or retrieves reference information about the object. - */ - cite: string; - clear: string; - /** - * Sets or retrieves the width of the object. - */ - width: number; -} - -declare var HTMLBlockElement: { - prototype: HTMLBlockElement; - new(): HTMLBlockElement; -} - interface HTMLBodyElement extends HTMLElement { aLink: any; background: string; @@ -3763,7 +4229,6 @@ interface HTMLBodyElement extends HTMLElement { onunload: (ev: Event) => any; text: any; vLink: any; - createTextRange(): TextRange; addEventListener(type: "MSContentZoom", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; addEventListener(type: "MSGestureDoubleTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; @@ -3788,10 +4253,10 @@ interface HTMLBodyElement extends HTMLElement { addEventListener(type: "afterprint", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecopy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecopy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforedeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforepaste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforepaste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforeprint", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "beforeunload", listener: (ev: BeforeUnloadEvent) => any, useCapture?: boolean): void; addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; @@ -3802,9 +4267,9 @@ interface HTMLBodyElement extends HTMLElement { addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void; addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "copy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "copy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "cuechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "cut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "cut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "deactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void; @@ -3816,7 +4281,7 @@ interface HTMLBodyElement extends HTMLElement { addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "ended", listener: (ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; @@ -3824,6 +4289,7 @@ interface HTMLBodyElement extends HTMLElement { addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; addEventListener(type: "hashchange", listener: (ev: HashChangeEvent) => any, useCapture?: boolean): void; addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "invalid", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; @@ -3841,13 +4307,13 @@ interface HTMLBodyElement extends HTMLElement { addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousewheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; addEventListener(type: "offline", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "online", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "orientationchange", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "pagehide", listener: (ev: PageTransitionEvent) => any, useCapture?: boolean): void; addEventListener(type: "pageshow", listener: (ev: PageTransitionEvent) => any, useCapture?: boolean): void; - addEventListener(type: "paste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "paste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -3901,7 +4367,7 @@ interface HTMLButtonElement extends HTMLElement { /** * Retrieves a reference to the form that the object is embedded in. */ - form: HTMLFormElement; + readonly form: HTMLFormElement; /** * Overrides the action attribute (where the data on a form is sent) on the parent form element. */ @@ -3934,11 +4400,11 @@ interface HTMLButtonElement extends HTMLElement { /** * Returns the error message that would be displayed if the user submits the form, or an empty string if no error message. It also triggers the standard error message, such as "this is a required field". The result is that the user sees validation messages without actually submitting. */ - validationMessage: string; + readonly validationMessage: string; /** * Returns a ValidityState object that represents the validity states of an element. */ - validity: ValidityState; + readonly validity: ValidityState; /** * Sets or retrieves the default or selected value of the control. */ @@ -3946,15 +4412,11 @@ interface HTMLButtonElement extends HTMLElement { /** * Returns whether an element will successfully validate based on forms validation rules and constraints. */ - willValidate: boolean; + readonly willValidate: boolean; /** * Returns whether a form will validate when it is submitted, without having to submit it. */ checkValidity(): boolean; - /** - * Creates a TextRange object for the element. - */ - createTextRange(): TextRange; /** * Sets a custom error message that is displayed when a form is submitted. * @param error Sets a custom error message that is displayed when a form is submitted. @@ -4004,11 +4466,11 @@ interface HTMLCollection { /** * Sets or retrieves the number of objects in a collection. */ - length: number; + readonly length: number; /** * Retrieves an object from various collections. */ - item(nameOrIndex?: any, optionalIndex?: any): Element; + item(index: number): Element; /** * Retrieves a select object or an object from an options collection. */ @@ -4021,18 +4483,6 @@ declare var HTMLCollection: { new(): HTMLCollection; } -interface HTMLDDElement extends HTMLElement { - /** - * Sets or retrieves whether the browser automatically performs wordwrap. - */ - noWrap: boolean; -} - -declare var HTMLDDElement: { - prototype: HTMLDDElement; - new(): HTMLDDElement; -} - interface HTMLDListElement extends HTMLElement { compact: boolean; } @@ -4042,20 +4492,8 @@ declare var HTMLDListElement: { new(): HTMLDListElement; } -interface HTMLDTElement extends HTMLElement { - /** - * Sets or retrieves whether the browser automatically performs wordwrap. - */ - noWrap: boolean; -} - -declare var HTMLDTElement: { - prototype: HTMLDTElement; - new(): HTMLDTElement; -} - interface HTMLDataListElement extends HTMLElement { - options: HTMLCollection; + options: HTMLCollectionOf; } declare var HTMLDataListElement: { @@ -4098,38 +4536,38 @@ declare var HTMLDocument: { interface HTMLElement extends Element { accessKey: string; - children: HTMLCollection; + readonly children: HTMLCollection; contentEditable: string; - dataset: DOMStringMap; + readonly dataset: DOMStringMap; dir: string; draggable: boolean; hidden: boolean; hideFocus: boolean; innerHTML: string; innerText: string; - isContentEditable: boolean; + readonly isContentEditable: boolean; lang: string; - offsetHeight: number; - offsetLeft: number; - offsetParent: Element; - offsetTop: number; - offsetWidth: number; + readonly offsetHeight: number; + readonly offsetLeft: number; + readonly offsetParent: Element; + readonly offsetTop: number; + readonly offsetWidth: number; onabort: (ev: Event) => any; onactivate: (ev: UIEvent) => any; onbeforeactivate: (ev: UIEvent) => any; - onbeforecopy: (ev: DragEvent) => any; - onbeforecut: (ev: DragEvent) => any; + onbeforecopy: (ev: ClipboardEvent) => any; + onbeforecut: (ev: ClipboardEvent) => any; onbeforedeactivate: (ev: UIEvent) => any; - onbeforepaste: (ev: DragEvent) => any; + onbeforepaste: (ev: ClipboardEvent) => any; onblur: (ev: FocusEvent) => any; oncanplay: (ev: Event) => any; oncanplaythrough: (ev: Event) => any; onchange: (ev: Event) => any; onclick: (ev: MouseEvent) => any; oncontextmenu: (ev: PointerEvent) => any; - oncopy: (ev: DragEvent) => any; + oncopy: (ev: ClipboardEvent) => any; oncuechange: (ev: Event) => any; - oncut: (ev: DragEvent) => any; + oncut: (ev: ClipboardEvent) => any; ondblclick: (ev: MouseEvent) => any; ondeactivate: (ev: UIEvent) => any; ondrag: (ev: DragEvent) => any; @@ -4141,10 +4579,11 @@ interface HTMLElement extends Element { ondrop: (ev: DragEvent) => any; ondurationchange: (ev: Event) => any; onemptied: (ev: Event) => any; - onended: (ev: Event) => any; + onended: (ev: MediaStreamErrorEvent) => any; onerror: (ev: Event) => any; onfocus: (ev: FocusEvent) => any; oninput: (ev: Event) => any; + oninvalid: (ev: Event) => any; onkeydown: (ev: KeyboardEvent) => any; onkeypress: (ev: KeyboardEvent) => any; onkeyup: (ev: KeyboardEvent) => any; @@ -4159,10 +4598,10 @@ interface HTMLElement extends Element { onmouseout: (ev: MouseEvent) => any; onmouseover: (ev: MouseEvent) => any; onmouseup: (ev: MouseEvent) => any; - onmousewheel: (ev: MouseWheelEvent) => any; + onmousewheel: (ev: WheelEvent) => any; onmscontentzoom: (ev: UIEvent) => any; onmsmanipulationstatechanged: (ev: MSManipulationEvent) => any; - onpaste: (ev: DragEvent) => any; + onpaste: (ev: ClipboardEvent) => any; onpause: (ev: Event) => any; onplay: (ev: Event) => any; onplaying: (ev: Event) => any; @@ -4183,7 +4622,7 @@ interface HTMLElement extends Element { outerHTML: string; outerText: string; spellcheck: boolean; - style: CSSStyleDeclaration; + readonly style: CSSStyleDeclaration; tabIndex: number; title: string; blur(): void; @@ -4219,10 +4658,10 @@ interface HTMLElement extends Element { addEventListener(type: "activate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecopy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecopy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforedeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforepaste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforepaste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; addEventListener(type: "canplay", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "canplaythrough", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -4230,9 +4669,9 @@ interface HTMLElement extends Element { addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void; addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "copy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "copy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "cuechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "cut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "cut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "deactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void; @@ -4244,11 +4683,12 @@ interface HTMLElement extends Element { addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "ended", listener: (ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "invalid", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; @@ -4264,8 +4704,8 @@ interface HTMLElement extends Element { addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; - addEventListener(type: "paste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousewheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; + addEventListener(type: "paste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -4327,7 +4767,7 @@ interface HTMLEmbedElement extends HTMLElement, GetSVGDocument { /** * Gets the source associated with the media element for use by the PlayToManager. */ - msPlayToSource: any; + readonly msPlayToSource: any; /** * Sets or retrieves the name of the object. */ @@ -4335,12 +4775,12 @@ interface HTMLEmbedElement extends HTMLElement, GetSVGDocument { /** * Retrieves the palette used for the embedded document. */ - palette: string; + readonly palette: string; /** * Retrieves the URL of the plug-in used to view an embedded document. */ - pluginspage: string; - readyState: string; + readonly pluginspage: string; + readonly readyState: string; /** * Sets or retrieves a URL to be loaded by the object. */ @@ -4370,19 +4810,19 @@ interface HTMLFieldSetElement extends HTMLElement { /** * Retrieves a reference to the form that the object is embedded in. */ - form: HTMLFormElement; + readonly form: HTMLFormElement; /** * Returns the error message that would be displayed if the user submits the form, or an empty string if no error message. It also triggers the standard error message, such as "this is a required field". The result is that the user sees validation messages without actually submitting. */ - validationMessage: string; + readonly validationMessage: string; /** * Returns a ValidityState object that represents the validity states of an element. */ - validity: ValidityState; + readonly validity: ValidityState; /** * Returns whether an element will successfully validate based on forms validation rules and constraints. */ - willValidate: boolean; + readonly willValidate: boolean; /** * Returns whether a form will validate when it is submitted, without having to submit it. */ @@ -4428,7 +4868,7 @@ interface HTMLFormElement extends HTMLElement { /** * Retrieves a collection, in source order, of all controls in a given form. */ - elements: HTMLCollection; + readonly elements: HTMLCollection; /** * Sets or retrieves the MIME encoding for the form. */ @@ -4440,7 +4880,7 @@ interface HTMLFormElement extends HTMLElement { /** * Sets or retrieves the number of objects in a collection. */ - length: number; + readonly length: number; /** * Sets or retrieves how to send the form data to the server. */ @@ -4499,11 +4939,11 @@ interface HTMLFrameElement extends HTMLElement, GetSVGDocument { /** * Retrieves the document object of the page or frame. */ - contentDocument: Document; + readonly contentDocument: Document; /** * Retrieves the object of the specified. */ - contentWindow: Window; + readonly contentWindow: Window; /** * Sets or retrieves whether to display a border for the frame. */ @@ -4544,10 +4984,6 @@ interface HTMLFrameElement extends HTMLElement, GetSVGDocument { * Sets or retrieves whether the frame can be scrolled. */ scrolling: string; - /** - * Sets the value indicating whether the source file of a frame or iframe has specific security restrictions applied. - */ - security: any; /** * Sets or retrieves a URL to be loaded by the object. */ @@ -4579,10 +5015,10 @@ interface HTMLFrameElement extends HTMLElement, GetSVGDocument { addEventListener(type: "activate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecopy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecopy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforedeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforepaste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforepaste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; addEventListener(type: "canplay", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "canplaythrough", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -4590,9 +5026,9 @@ interface HTMLFrameElement extends HTMLElement, GetSVGDocument { addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void; addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "copy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "copy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "cuechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "cut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "cut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "deactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void; @@ -4604,11 +5040,12 @@ interface HTMLFrameElement extends HTMLElement, GetSVGDocument { addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "ended", listener: (ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "invalid", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; @@ -4625,8 +5062,8 @@ interface HTMLFrameElement extends HTMLElement, GetSVGDocument { addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; - addEventListener(type: "paste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousewheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; + addEventListener(type: "paste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -4736,10 +5173,10 @@ interface HTMLFrameSetElement extends HTMLElement { addEventListener(type: "activate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecopy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecopy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforedeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforepaste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforepaste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforeprint", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "beforeunload", listener: (ev: BeforeUnloadEvent) => any, useCapture?: boolean): void; addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; @@ -4750,9 +5187,9 @@ interface HTMLFrameSetElement extends HTMLElement { addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void; addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "copy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "copy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "cuechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "cut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "cut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "deactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void; @@ -4764,7 +5201,7 @@ interface HTMLFrameSetElement extends HTMLElement { addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "ended", listener: (ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; @@ -4772,6 +5209,7 @@ interface HTMLFrameSetElement extends HTMLElement { addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; addEventListener(type: "hashchange", listener: (ev: HashChangeEvent) => any, useCapture?: boolean): void; addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "invalid", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; @@ -4789,13 +5227,13 @@ interface HTMLFrameSetElement extends HTMLElement { addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousewheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; addEventListener(type: "offline", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "online", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "orientationchange", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "pagehide", listener: (ev: PageTransitionEvent) => any, useCapture?: boolean): void; addEventListener(type: "pageshow", listener: (ev: PageTransitionEvent) => any, useCapture?: boolean): void; - addEventListener(type: "paste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "paste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -4874,7 +5312,6 @@ interface HTMLHeadingElement extends HTMLElement { * Sets or retrieves a value that indicates the table alignment. */ align: string; - clear: string; } declare var HTMLHeadingElement: { @@ -4907,11 +5344,11 @@ interface HTMLIFrameElement extends HTMLElement, GetSVGDocument { /** * Retrieves the document object of the page or frame. */ - contentDocument: Document; + readonly contentDocument: Document; /** * Retrieves the object of the specified. */ - contentWindow: Window; + readonly contentWindow: Window; /** * Sets or retrieves whether to display a border for the frame. */ @@ -4952,15 +5389,11 @@ interface HTMLIFrameElement extends HTMLElement, GetSVGDocument { * Raised when the object has been completely received from the server. */ onload: (ev: Event) => any; - sandbox: DOMSettableTokenList; + readonly sandbox: DOMSettableTokenList; /** * Sets or retrieves whether the frame can be scrolled. */ scrolling: string; - /** - * Sets the value indicating whether the source file of a frame or iframe has specific security restrictions applied. - */ - security: any; /** * Sets or retrieves a URL to be loaded by the object. */ @@ -4996,10 +5429,10 @@ interface HTMLIFrameElement extends HTMLElement, GetSVGDocument { addEventListener(type: "activate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecopy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecopy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforedeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforepaste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforepaste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; addEventListener(type: "canplay", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "canplaythrough", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -5007,9 +5440,9 @@ interface HTMLIFrameElement extends HTMLElement, GetSVGDocument { addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void; addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "copy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "copy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "cuechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "cut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "cut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "deactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void; @@ -5021,11 +5454,12 @@ interface HTMLIFrameElement extends HTMLElement, GetSVGDocument { addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "ended", listener: (ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "invalid", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; @@ -5042,8 +5476,8 @@ interface HTMLIFrameElement extends HTMLElement, GetSVGDocument { addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; - addEventListener(type: "paste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousewheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; + addEventListener(type: "paste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -5100,9 +5534,9 @@ interface HTMLImageElement extends HTMLElement { /** * Retrieves whether the object is fully loaded. */ - complete: boolean; + readonly complete: boolean; crossOrigin: string; - currentSrc: string; + readonly currentSrc: string; /** * Sets or retrieves the height of the object. */ @@ -5119,6 +5553,7 @@ interface HTMLImageElement extends HTMLElement { * Sets or retrieves a Uniform Resource Identifier (URI) to a long description of the object. */ longDesc: string; + lowsrc: string; /** * Gets or sets whether the DLNA PlayTo device is available. */ @@ -5131,7 +5566,7 @@ interface HTMLImageElement extends HTMLElement { /** * Gets the source associated with the media element for use by the PlayToManager. */ - msPlayToSource: any; + readonly msPlayToSource: any; /** * Sets or retrieves the name of the object. */ @@ -5139,11 +5574,12 @@ interface HTMLImageElement extends HTMLElement { /** * The original height of the image resource before sizing. */ - naturalHeight: number; + readonly naturalHeight: number; /** * The original width of the image resource before sizing. */ - naturalWidth: number; + readonly naturalWidth: number; + sizes: string; /** * The address or URL of the a media resource that is to be considered. */ @@ -5161,8 +5597,8 @@ interface HTMLImageElement extends HTMLElement { * Sets or retrieves the width of the object. */ width: number; - x: number; - y: number; + readonly x: number; + readonly y: number; msGetAsCastingSource(): any; } @@ -5204,7 +5640,7 @@ interface HTMLInputElement extends HTMLElement { /** * Retrieves whether the object is fully loaded. */ - complete: boolean; + readonly complete: boolean; /** * Sets or retrieves the state of the check box or radio button. */ @@ -5217,11 +5653,11 @@ interface HTMLInputElement extends HTMLElement { /** * Returns a FileList object on a file type input object. */ - files: FileList; + readonly files: FileList; /** * Retrieves a reference to the form that the object is embedded in. */ - form: HTMLFormElement; + readonly form: HTMLFormElement; /** * Overrides the action attribute (where the data on a form is sent) on the parent form element. */ @@ -5254,7 +5690,7 @@ interface HTMLInputElement extends HTMLElement { /** * Specifies the ID of a pre-defined datalist of options for an input element. */ - list: HTMLElement; + readonly list: HTMLElement; /** * Defines the maximum acceptable value for an input element with type="number".When used with the min and step attributes, lets you control the range and increment (such as only even numbers) that the user can enter into an input field. */ @@ -5288,6 +5724,7 @@ interface HTMLInputElement extends HTMLElement { * When present, marks an element that can't be submitted without a value. */ required: boolean; + selectionDirection: string; /** * Gets or sets the end position or offset of a text selection. */ @@ -5317,11 +5754,11 @@ interface HTMLInputElement extends HTMLElement { /** * Returns the error message that would be displayed if the user submits the form, or an empty string if no error message. It also triggers the standard error message, such as "this is a required field". The result is that the user sees validation messages without actually submitting. */ - validationMessage: string; + readonly validationMessage: string; /** * Returns a ValidityState object that represents the validity states of an element. */ - validity: ValidityState; + readonly validity: ValidityState; /** * Returns the value of the data at the cursor's current position. */ @@ -5335,6 +5772,7 @@ interface HTMLInputElement extends HTMLElement { * Sets or retrieves the vertical margin for the object. */ vspace: number; + webkitdirectory: boolean; /** * Sets or retrieves the width of the object. */ @@ -5342,15 +5780,12 @@ interface HTMLInputElement extends HTMLElement { /** * Returns whether an element will successfully validate based on forms validation rules and constraints. */ - willValidate: boolean; + readonly willValidate: boolean; + minLength: number; /** * Returns whether a form will validate when it is submitted, without having to submit it. */ checkValidity(): boolean; - /** - * Creates a TextRange object for the element. - */ - createTextRange(): TextRange; /** * Makes the selection equal to the current object. */ @@ -5365,7 +5800,7 @@ interface HTMLInputElement extends HTMLElement { * @param start The offset into the text field for the start of the selection. * @param end The offset into the text field for the end of the selection. */ - setSelectionRange(start: number, end: number): void; + setSelectionRange(start?: number, end?: number, direction?: string): void; /** * Decrements a range input control's value by the value given by the Step attribute. If the optional parameter is used, it will decrement the input control's step value multiplied by the parameter's value. * @param n Value to decrement the value by. @@ -5383,23 +5818,6 @@ declare var HTMLInputElement: { new(): HTMLInputElement; } -interface HTMLIsIndexElement extends HTMLElement { - /** - * Sets or retrieves the URL to which the form content is sent for processing. - */ - action: string; - /** - * Retrieves a reference to the form that the object is embedded in. - */ - form: HTMLFormElement; - prompt: string; -} - -declare var HTMLIsIndexElement: { - prototype: HTMLIsIndexElement; - new(): HTMLIsIndexElement; -} - interface HTMLLIElement extends HTMLElement { type: string; /** @@ -5417,7 +5835,7 @@ interface HTMLLabelElement extends HTMLElement { /** * Retrieves a reference to the form that the object is embedded in. */ - form: HTMLFormElement; + readonly form: HTMLFormElement; /** * Sets or retrieves the object to which the given label object is assigned. */ @@ -5437,7 +5855,7 @@ interface HTMLLegendElement extends HTMLElement { /** * Retrieves a reference to the form that the object is embedded in. */ - form: HTMLFormElement; + readonly form: HTMLFormElement; } declare var HTMLLegendElement: { @@ -5479,6 +5897,7 @@ interface HTMLLinkElement extends HTMLElement, LinkStyle { * Sets or retrieves the MIME type of the object. */ type: string; + import?: Document; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -5491,7 +5910,7 @@ interface HTMLMapElement extends HTMLElement { /** * Retrieves a collection of the area objects defined for the given map object. */ - areas: HTMLAreasCollection; + readonly areas: HTMLAreasCollection; /** * Sets or retrieves the name of the object. */ @@ -5543,10 +5962,10 @@ interface HTMLMarqueeElement extends HTMLElement { addEventListener(type: "activate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecopy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecopy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforedeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforepaste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforepaste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; addEventListener(type: "bounce", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "canplay", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -5555,9 +5974,9 @@ interface HTMLMarqueeElement extends HTMLElement { addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void; addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "copy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "copy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "cuechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "cut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "cut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "deactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void; @@ -5569,12 +5988,13 @@ interface HTMLMarqueeElement extends HTMLElement { addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "ended", listener: (ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "finish", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "invalid", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; @@ -5590,8 +6010,8 @@ interface HTMLMarqueeElement extends HTMLElement { addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; - addEventListener(type: "paste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousewheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; + addEventListener(type: "paste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -5637,7 +6057,7 @@ interface HTMLMediaElement extends HTMLElement { /** * Returns an AudioTrackList object with the audio tracks for a given video element. */ - audioTracks: AudioTrackList; + readonly audioTracks: AudioTrackList; /** * Gets or sets a value that indicates whether to start playing the media automatically. */ @@ -5645,15 +6065,16 @@ interface HTMLMediaElement extends HTMLElement { /** * Gets a collection of buffered time ranges. */ - buffered: TimeRanges; + readonly buffered: TimeRanges; /** * Gets or sets a flag that indicates whether the client provides a set of controls for the media (in case the developer does not include controls for the player). */ controls: boolean; + crossOrigin: string; /** * Gets the address or URL of the current media resource that is selected by IHTMLMediaElement. */ - currentSrc: string; + readonly currentSrc: string; /** * Gets or sets the current playback position, in seconds. */ @@ -5666,19 +6087,20 @@ interface HTMLMediaElement extends HTMLElement { /** * Returns the duration in seconds of the current media resource. A NaN value is returned if duration is not available, or Infinity if the media resource is streaming. */ - duration: number; + readonly duration: number; /** * Gets information about whether the playback has ended or not. */ - ended: boolean; + readonly ended: boolean; /** * Returns an object representing the current error state of the audio or video element. */ - error: MediaError; + readonly error: MediaError; /** * Gets or sets a flag to specify whether playback should restart after it completes. */ loop: boolean; + readonly mediaKeys: MediaKeys; /** * Specifies the purpose of the audio or video media, such as background audio or alerts. */ @@ -5687,11 +6109,11 @@ interface HTMLMediaElement extends HTMLElement { * Specifies the output device id that the audio will be sent to. */ msAudioDeviceType: string; - msGraphicsTrustStatus: MSGraphicsTrust; + readonly msGraphicsTrustStatus: MSGraphicsTrust; /** * Gets the MSMediaKeys object, which is used for decrypting media data, that is associated with this media element. */ - msKeys: MSMediaKeys; + readonly msKeys: MSMediaKeys; /** * Gets or sets whether the DLNA PlayTo device is available. */ @@ -5707,7 +6129,7 @@ interface HTMLMediaElement extends HTMLElement { /** * Gets the source associated with the media element for use by the PlayToManager. */ - msPlayToSource: any; + readonly msPlayToSource: any; /** * Specifies whether or not to enable low-latency playback on the media element. */ @@ -5719,12 +6141,13 @@ interface HTMLMediaElement extends HTMLElement { /** * Gets the current network activity for the element. */ - networkState: number; + readonly networkState: number; + onencrypted: (ev: MediaEncryptedEvent) => any; onmsneedkey: (ev: MSMediaKeyNeededEvent) => any; /** * Gets a flag that specifies whether playback is paused. */ - paused: boolean; + readonly paused: boolean; /** * Gets or sets the current rate of speed for the media resource to play. This speed is expressed as a multiple of the normal speed of the media resource. */ @@ -5732,7 +6155,7 @@ interface HTMLMediaElement extends HTMLElement { /** * Gets TimeRanges for the current media resource that has been played. */ - played: TimeRanges; + readonly played: TimeRanges; /** * Gets or sets the current playback position, in seconds. */ @@ -5741,17 +6164,18 @@ interface HTMLMediaElement extends HTMLElement { /** * Returns a TimeRanges object that represents the ranges of the current media resource that can be seeked. */ - seekable: TimeRanges; + readonly seekable: TimeRanges; /** * Gets a flag that indicates whether the the client is currently moving to a new playback position in the media resource. */ - seeking: boolean; + readonly seeking: boolean; /** * The address or URL of the a media resource that is to be considered. */ src: string; - textTracks: TextTrackList; - videoTracks: VideoTrackList; + srcObject: MediaStream; + readonly textTracks: TextTrackList; + readonly videoTracks: VideoTrackList; /** * Gets or sets the volume level for audio portions of the media element. */ @@ -5787,15 +6211,16 @@ interface HTMLMediaElement extends HTMLElement { * Loads and starts playback of a media resource. */ play(): void; - HAVE_CURRENT_DATA: number; - HAVE_ENOUGH_DATA: number; - HAVE_FUTURE_DATA: number; - HAVE_METADATA: number; - HAVE_NOTHING: number; - NETWORK_EMPTY: number; - NETWORK_IDLE: number; - NETWORK_LOADING: number; - NETWORK_NO_SOURCE: number; + setMediaKeys(mediaKeys: MediaKeys): PromiseLike; + readonly HAVE_CURRENT_DATA: number; + readonly HAVE_ENOUGH_DATA: number; + readonly HAVE_FUTURE_DATA: number; + readonly HAVE_METADATA: number; + readonly HAVE_NOTHING: number; + readonly NETWORK_EMPTY: number; + readonly NETWORK_IDLE: number; + readonly NETWORK_LOADING: number; + readonly NETWORK_NO_SOURCE: number; addEventListener(type: "MSContentZoom", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; addEventListener(type: "MSGestureDoubleTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; @@ -5819,10 +6244,10 @@ interface HTMLMediaElement extends HTMLElement { addEventListener(type: "activate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecopy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecopy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforedeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforepaste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforepaste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; addEventListener(type: "canplay", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "canplaythrough", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -5830,9 +6255,9 @@ interface HTMLMediaElement extends HTMLElement { addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void; addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "copy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "copy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "cuechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "cut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "cut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "deactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void; @@ -5844,11 +6269,13 @@ interface HTMLMediaElement extends HTMLElement { addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "encrypted", listener: (ev: MediaEncryptedEvent) => any, useCapture?: boolean): void; + addEventListener(type: "ended", listener: (ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "invalid", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; @@ -5864,9 +6291,9 @@ interface HTMLMediaElement extends HTMLElement { addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousewheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; addEventListener(type: "msneedkey", listener: (ev: MSMediaKeyNeededEvent) => any, useCapture?: boolean): void; - addEventListener(type: "paste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "paste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -5905,15 +6332,15 @@ interface HTMLMediaElement extends HTMLElement { declare var HTMLMediaElement: { prototype: HTMLMediaElement; new(): HTMLMediaElement; - HAVE_CURRENT_DATA: number; - HAVE_ENOUGH_DATA: number; - HAVE_FUTURE_DATA: number; - HAVE_METADATA: number; - HAVE_NOTHING: number; - NETWORK_EMPTY: number; - NETWORK_IDLE: number; - NETWORK_LOADING: number; - NETWORK_NO_SOURCE: number; + readonly HAVE_CURRENT_DATA: number; + readonly HAVE_ENOUGH_DATA: number; + readonly HAVE_FUTURE_DATA: number; + readonly HAVE_METADATA: number; + readonly HAVE_NOTHING: number; + readonly NETWORK_EMPTY: number; + readonly NETWORK_IDLE: number; + readonly NETWORK_LOADING: number; + readonly NETWORK_NO_SOURCE: number; } interface HTMLMenuElement extends HTMLElement { @@ -5958,6 +6385,20 @@ declare var HTMLMetaElement: { new(): HTMLMetaElement; } +interface HTMLMeterElement extends HTMLElement { + high: number; + low: number; + max: number; + min: number; + optimum: number; + value: number; +} + +declare var HTMLMeterElement: { + prototype: HTMLMeterElement; + new(): HTMLMeterElement; +} + interface HTMLModElement extends HTMLElement { /** * Sets or retrieves reference information about the object. @@ -5974,15 +6415,6 @@ declare var HTMLModElement: { new(): HTMLModElement; } -interface HTMLNextIdElement extends HTMLElement { - n: string; -} - -declare var HTMLNextIdElement: { - prototype: HTMLNextIdElement; - new(): HTMLNextIdElement; -} - interface HTMLOListElement extends HTMLElement { compact: boolean; /** @@ -6001,7 +6433,7 @@ interface HTMLObjectElement extends HTMLElement, GetSVGDocument { /** * Retrieves a string of the URL where the object tag can be found. This is often the href of the document that the object is in, or the value set by a base element. */ - BaseHref: string; + readonly BaseHref: string; align: string; /** * Sets or retrieves a text alternative to the graphic. @@ -6031,7 +6463,7 @@ interface HTMLObjectElement extends HTMLElement, GetSVGDocument { /** * Retrieves the document object of the page or frame. */ - contentDocument: Document; + readonly contentDocument: Document; /** * Sets or retrieves the URL that references the data of the object. */ @@ -6040,7 +6472,7 @@ interface HTMLObjectElement extends HTMLElement, GetSVGDocument { /** * Retrieves a reference to the form that the object is embedded in. */ - form: HTMLFormElement; + readonly form: HTMLFormElement; /** * Sets or retrieves the height of the object. */ @@ -6061,7 +6493,7 @@ interface HTMLObjectElement extends HTMLElement, GetSVGDocument { /** * Gets the source associated with the media element for use by the PlayToManager. */ - msPlayToSource: any; + readonly msPlayToSource: any; /** * Sets or retrieves the name of the object. */ @@ -6069,8 +6501,8 @@ interface HTMLObjectElement extends HTMLElement, GetSVGDocument { /** * Retrieves the contained object. */ - object: any; - readyState: number; + readonly object: any; + readonly readyState: number; /** * Sets or retrieves a message to be displayed while an object is loading. */ @@ -6086,11 +6518,11 @@ interface HTMLObjectElement extends HTMLElement, GetSVGDocument { /** * Returns the error message that would be displayed if the user submits the form, or an empty string if no error message. It also triggers the standard error message, such as "this is a required field". The result is that the user sees validation messages without actually submitting. */ - validationMessage: string; + readonly validationMessage: string; /** * Returns a ValidityState object that represents the validity states of an element. */ - validity: ValidityState; + readonly validity: ValidityState; vspace: number; /** * Sets or retrieves the width of the object. @@ -6099,7 +6531,7 @@ interface HTMLObjectElement extends HTMLElement, GetSVGDocument { /** * Returns whether an element will successfully validate based on forms validation rules and constraints. */ - willValidate: boolean; + readonly willValidate: boolean; /** * Returns whether a form will validate when it is submitted, without having to submit it. */ @@ -6126,11 +6558,11 @@ interface HTMLOptGroupElement extends HTMLElement { /** * Retrieves a reference to the form that the object is embedded in. */ - form: HTMLFormElement; + readonly form: HTMLFormElement; /** * Sets or retrieves the ordinal position of an option in a list box. */ - index: number; + readonly index: number; /** * Sets or retrieves a value that you can use to implement your own label functionality for the object. */ @@ -6142,7 +6574,7 @@ interface HTMLOptGroupElement extends HTMLElement { /** * Sets or retrieves the text string specified by the option tag. */ - text: string; + readonly text: string; /** * Sets or retrieves the value which is returned to the server when the form control is submitted. */ @@ -6163,11 +6595,11 @@ interface HTMLOptionElement extends HTMLElement { /** * Retrieves a reference to the form that the object is embedded in. */ - form: HTMLFormElement; + readonly form: HTMLFormElement; /** * Sets or retrieves the ordinal position of an option in a list box. */ - index: number; + readonly index: number; /** * Sets or retrieves a value that you can use to implement your own label functionality for the object. */ @@ -6192,6 +6624,18 @@ declare var HTMLOptionElement: { create(): HTMLOptionElement; } +interface HTMLOptionsCollection extends HTMLCollection { + length: number; + selectedIndex: number; + add(element: HTMLOptionElement | HTMLOptGroupElement, before?: HTMLElement | number): void; + remove(index: number): void; +} + +declare var HTMLOptionsCollection: { + prototype: HTMLOptionsCollection; + new(): HTMLOptionsCollection; +} + interface HTMLParagraphElement extends HTMLElement { /** * Sets or retrieves how the object is aligned with adjacent text. @@ -6229,28 +6673,15 @@ declare var HTMLParamElement: { new(): HTMLParamElement; } -interface HTMLPhraseElement extends HTMLElement { - /** - * Sets or retrieves reference information about the object. - */ - cite: string; - /** - * Sets or retrieves the date and time of a modification to the object. - */ - dateTime: string; +interface HTMLPictureElement extends HTMLElement { } -declare var HTMLPhraseElement: { - prototype: HTMLPhraseElement; - new(): HTMLPhraseElement; +declare var HTMLPictureElement: { + prototype: HTMLPictureElement; + new(): HTMLPictureElement; } interface HTMLPreElement extends HTMLElement { - /** - * Indicates a citation by rendering text in italic type. - */ - cite: string; - clear: string; /** * Sets or gets a value that you can use to implement your own width functionality for the object. */ @@ -6266,7 +6697,7 @@ interface HTMLProgressElement extends HTMLElement { /** * Retrieves a reference to the form that the object is embedded in. */ - form: HTMLFormElement; + readonly form: HTMLFormElement; /** * Defines the maximum, or "done" value for a progress element. */ @@ -6274,7 +6705,7 @@ interface HTMLProgressElement extends HTMLElement { /** * Returns the quotient of value/max when the value attribute is set (determinate progress bar), or -1 when the value attribute is missing (indeterminate progress bar). */ - position: number; + readonly position: number; /** * Sets or gets the current value of a progress element. The value must be a non-negative number between 0 and the max value. */ @@ -6291,10 +6722,6 @@ interface HTMLQuoteElement extends HTMLElement { * Sets or retrieves reference information about the object. */ cite: string; - /** - * Sets or retrieves the date and time of a modification to the object. - */ - dateTime: string; } declare var HTMLQuoteElement: { @@ -6348,7 +6775,7 @@ interface HTMLSelectElement extends HTMLElement { /** * Retrieves a reference to the form that the object is embedded in. */ - form: HTMLFormElement; + readonly form: HTMLFormElement; /** * Sets or retrieves the number of objects in a collection. */ @@ -6361,7 +6788,7 @@ interface HTMLSelectElement extends HTMLElement { * Sets or retrieves the name of the object. */ name: string; - options: HTMLCollection; + options: HTMLCollectionOf; /** * When present, marks an element that can't be submitted without a value. */ @@ -6370,6 +6797,7 @@ interface HTMLSelectElement extends HTMLElement { * Sets or retrieves the index of the selected option in a select object. */ selectedIndex: number; + selectedOptions: HTMLCollectionOf; /** * Sets or retrieves the number of rows in the list box. */ @@ -6377,15 +6805,15 @@ interface HTMLSelectElement extends HTMLElement { /** * Retrieves the type of select control based on the value of the MULTIPLE attribute. */ - type: string; + readonly type: string; /** * Returns the error message that would be displayed if the user submits the form, or an empty string if no error message. It also triggers the standard error message, such as "this is a required field". The result is that the user sees validation messages without actually submitting. */ - validationMessage: string; + readonly validationMessage: string; /** * Returns a ValidityState object that represents the validity states of an element. */ - validity: ValidityState; + readonly validity: ValidityState; /** * Sets or retrieves the value which is returned to the server when the form control is submitted. */ @@ -6393,8 +6821,7 @@ interface HTMLSelectElement extends HTMLElement { /** * Returns whether an element will successfully validate based on forms validation rules and constraints. */ - willValidate: boolean; - selectedOptions: HTMLCollection; + readonly willValidate: boolean; /** * Adds an element to the areas, controlRange, or options collection. * @param element Variant of type Number that specifies the index position in the collection where the element is placed. If no value is given, the method places the element at the end of the collection. @@ -6440,10 +6867,12 @@ interface HTMLSourceElement extends HTMLElement { */ media: string; msKeySystem: string; + sizes: string; /** * The address or URL of the a media resource that is to be considered. */ src: string; + srcset: string; /** * Gets or sets the MIME type of a media resource. */ @@ -6464,6 +6893,7 @@ declare var HTMLSpanElement: { } interface HTMLStyleElement extends HTMLElement, LinkStyle { + disabled: boolean; /** * Sets or retrieves the media type. */ @@ -6513,7 +6943,7 @@ interface HTMLTableCellElement extends HTMLElement, HTMLTableAlignment { /** * Retrieves the position of the object in the cells collection of a row. */ - cellIndex: number; + readonly cellIndex: number; /** * Sets or retrieves the number columns in the table that the object should span. */ @@ -6620,7 +7050,7 @@ interface HTMLTableElement extends HTMLElement { /** * Sets or retrieves the number of horizontal rows contained in the object. */ - rows: HTMLCollection; + rows: HTMLCollectionOf; /** * Sets or retrieves which dividing lines (inner borders) are displayed. */ @@ -6632,7 +7062,7 @@ interface HTMLTableElement extends HTMLElement { /** * Retrieves a collection of all tBody objects in the table. Objects in this collection are in source order. */ - tBodies: HTMLCollection; + tBodies: HTMLCollectionOf; /** * Retrieves the tFoot object of the table. */ @@ -6711,7 +7141,7 @@ interface HTMLTableRowElement extends HTMLElement, HTMLTableAlignment { /** * Retrieves a collection of all cells in the table row. */ - cells: HTMLCollection; + cells: HTMLCollectionOf; /** * Sets or retrieves the height of the object. */ @@ -6719,11 +7149,11 @@ interface HTMLTableRowElement extends HTMLElement, HTMLTableAlignment { /** * Retrieves the position of the object in the rows collection for the table. */ - rowIndex: number; + readonly rowIndex: number; /** * Retrieves the position of the object in the collection. */ - sectionRowIndex: number; + readonly sectionRowIndex: number; /** * Removes the specified cell from the table row, as well as from the cells collection. * @param index Number that specifies the zero-based position of the cell to remove from the table row. If no value is provided, the last cell in the cells collection is deleted. @@ -6733,7 +7163,7 @@ interface HTMLTableRowElement extends HTMLElement, HTMLTableAlignment { * Creates a new cell in the table row, and adds the cell to the cells collection. * @param index Number that specifies where to insert the cell in the tr. The default value is -1, which appends the new cell to the end of the cells collection. */ - insertCell(index?: number): HTMLTableCellElement; + insertCell(index?: number): HTMLTableDataCellElement; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -6750,7 +7180,7 @@ interface HTMLTableSectionElement extends HTMLElement, HTMLTableAlignment { /** * Sets or retrieves the number of horizontal rows contained in the object. */ - rows: HTMLCollection; + rows: HTMLCollectionOf; /** * Removes the specified row (tr) from the element and from the rows collection. * @param index Number that specifies the zero-based position in the rows collection of the row to remove. @@ -6769,6 +7199,15 @@ declare var HTMLTableSectionElement: { new(): HTMLTableSectionElement; } +interface HTMLTemplateElement extends HTMLElement { + readonly content: DocumentFragment; +} + +declare var HTMLTemplateElement: { + prototype: HTMLTemplateElement; + new(): HTMLTemplateElement; +} + interface HTMLTextAreaElement extends HTMLElement { /** * Provides a way to direct a user to a specific field when a document loads. This can provide both direction and convenience for a user, reducing the need to click or tab to a field when a page opens. This attribute is true when present on an element, and false when missing. @@ -6786,7 +7225,7 @@ interface HTMLTextAreaElement extends HTMLElement { /** * Retrieves a reference to the form that the object is embedded in. */ - form: HTMLFormElement; + readonly form: HTMLFormElement; /** * Sets or retrieves the maximum number of characters that the user can enter in a text control. */ @@ -6826,15 +7265,15 @@ interface HTMLTextAreaElement extends HTMLElement { /** * Retrieves the type of control. */ - type: string; + readonly type: string; /** * Returns the error message that would be displayed if the user submits the form, or an empty string if no error message. It also triggers the standard error message, such as "this is a required field". The result is that the user sees validation messages without actually submitting. */ - validationMessage: string; + readonly validationMessage: string; /** * Returns a ValidityState object that represents the validity states of an element. */ - validity: ValidityState; + readonly validity: ValidityState; /** * Retrieves or sets the text in the entry field of the textArea element. */ @@ -6842,19 +7281,16 @@ interface HTMLTextAreaElement extends HTMLElement { /** * Returns whether an element will successfully validate based on forms validation rules and constraints. */ - willValidate: boolean; + readonly willValidate: boolean; /** * Sets or retrieves how to handle wordwrapping in the object. */ wrap: string; + minLength: number; /** * Returns whether a form will validate when it is submitted, without having to submit it. */ checkValidity(): boolean; - /** - * Creates a TextRange object for the element. - */ - createTextRange(): TextRange; /** * Highlights the input area of a form element. */ @@ -6893,23 +7329,23 @@ interface HTMLTrackElement extends HTMLElement { default: boolean; kind: string; label: string; - readyState: number; + readonly readyState: number; src: string; srclang: string; - track: TextTrack; - ERROR: number; - LOADED: number; - LOADING: number; - NONE: number; + readonly track: TextTrack; + readonly ERROR: number; + readonly LOADED: number; + readonly LOADING: number; + readonly NONE: number; } declare var HTMLTrackElement: { prototype: HTMLTrackElement; new(): HTMLTrackElement; - ERROR: number; - LOADED: number; - LOADING: number; - NONE: number; + readonly ERROR: number; + readonly LOADED: number; + readonly LOADING: number; + readonly NONE: number; } interface HTMLUListElement extends HTMLElement { @@ -6936,8 +7372,8 @@ interface HTMLVideoElement extends HTMLMediaElement { */ height: number; msHorizontalMirror: boolean; - msIsLayoutOptimalForPlayback: boolean; - msIsStereo3D: boolean; + readonly msIsLayoutOptimalForPlayback: boolean; + readonly msIsStereo3D: boolean; msStereo3DPackingMode: string; msStereo3DRenderMode: string; msZoom: boolean; @@ -6951,13 +7387,13 @@ interface HTMLVideoElement extends HTMLMediaElement { /** * Gets the intrinsic height of a video in CSS pixels, or zero if the dimensions are not known. */ - videoHeight: number; + readonly videoHeight: number; /** * Gets the intrinsic width of a video in CSS pixels, or zero if the dimensions are not known. */ - videoWidth: number; - webkitDisplayingFullscreen: boolean; - webkitSupportsFullscreen: boolean; + readonly videoWidth: number; + readonly webkitDisplayingFullscreen: boolean; + readonly webkitSupportsFullscreen: boolean; /** * Gets or sets the width of the video element. */ @@ -6996,10 +7432,10 @@ interface HTMLVideoElement extends HTMLMediaElement { addEventListener(type: "activate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecopy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecopy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforedeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforepaste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforepaste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; addEventListener(type: "canplay", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "canplaythrough", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -7007,9 +7443,9 @@ interface HTMLVideoElement extends HTMLMediaElement { addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void; addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "copy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "copy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "cuechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "cut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "cut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "deactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void; @@ -7021,11 +7457,13 @@ interface HTMLVideoElement extends HTMLMediaElement { addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "encrypted", listener: (ev: MediaEncryptedEvent) => any, useCapture?: boolean): void; + addEventListener(type: "ended", listener: (ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "invalid", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; @@ -7041,9 +7479,9 @@ interface HTMLVideoElement extends HTMLMediaElement { addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousewheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; addEventListener(type: "msneedkey", listener: (ev: MSMediaKeyNeededEvent) => any, useCapture?: boolean): void; - addEventListener(type: "paste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "paste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -7085,8 +7523,8 @@ declare var HTMLVideoElement: { } interface HashChangeEvent extends Event { - newURL: string; - oldURL: string; + readonly newURL: string; + readonly oldURL: string; } declare var HashChangeEvent: { @@ -7095,8 +7533,8 @@ declare var HashChangeEvent: { } interface History { - length: number; - state: any; + readonly length: number; + readonly state: any; back(distance?: any): void; forward(distance?: any): void; go(delta?: any): void; @@ -7110,31 +7548,31 @@ declare var History: { } interface IDBCursor { - direction: string; - key: any; - primaryKey: any; + readonly direction: string; + key: IDBKeyRange | IDBValidKey; + readonly primaryKey: any; source: IDBObjectStore | IDBIndex; advance(count: number): void; - continue(key?: any): void; + continue(key?: IDBKeyRange | IDBValidKey): void; delete(): IDBRequest; update(value: any): IDBRequest; - NEXT: string; - NEXT_NO_DUPLICATE: string; - PREV: string; - PREV_NO_DUPLICATE: string; + readonly NEXT: string; + readonly NEXT_NO_DUPLICATE: string; + readonly PREV: string; + readonly PREV_NO_DUPLICATE: string; } declare var IDBCursor: { prototype: IDBCursor; new(): IDBCursor; - NEXT: string; - NEXT_NO_DUPLICATE: string; - PREV: string; - PREV_NO_DUPLICATE: string; + readonly NEXT: string; + readonly NEXT_NO_DUPLICATE: string; + readonly PREV: string; + readonly PREV_NO_DUPLICATE: string; } interface IDBCursorWithValue extends IDBCursor { - value: any; + readonly value: any; } declare var IDBCursorWithValue: { @@ -7143,15 +7581,17 @@ declare var IDBCursorWithValue: { } interface IDBDatabase extends EventTarget { - name: string; - objectStoreNames: DOMStringList; + readonly name: string; + readonly objectStoreNames: DOMStringList; onabort: (ev: Event) => any; onerror: (ev: Event) => any; version: number; + onversionchange: (ev: IDBVersionChangeEvent) => any; close(): void; createObjectStore(name: string, optionalParameters?: IDBObjectStoreParameters): IDBObjectStore; 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: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; @@ -7175,15 +7615,15 @@ declare var IDBFactory: { interface IDBIndex { keyPath: string | string[]; - name: string; - objectStore: IDBObjectStore; - unique: boolean; + readonly name: string; + readonly objectStore: IDBObjectStore; + readonly unique: boolean; multiEntry: boolean; - count(key?: any): IDBRequest; - get(key: any): IDBRequest; - getKey(key: any): IDBRequest; - openCursor(range?: IDBKeyRange, direction?: string): IDBRequest; - openKeyCursor(range?: IDBKeyRange, direction?: string): IDBRequest; + count(key?: IDBKeyRange | IDBValidKey): IDBRequest; + get(key: IDBKeyRange | IDBValidKey): IDBRequest; + getKey(key: IDBKeyRange | IDBValidKey): IDBRequest; + openCursor(range?: IDBKeyRange | IDBValidKey, direction?: string): IDBRequest; + openKeyCursor(range?: IDBKeyRange | IDBValidKey, direction?: string): IDBRequest; } declare var IDBIndex: { @@ -7192,37 +7632,37 @@ declare var IDBIndex: { } interface IDBKeyRange { - lower: any; - lowerOpen: boolean; - upper: any; - upperOpen: boolean; + readonly lower: any; + readonly lowerOpen: boolean; + readonly upper: any; + readonly upperOpen: boolean; } declare var IDBKeyRange: { prototype: IDBKeyRange; new(): IDBKeyRange; bound(lower: any, upper: any, lowerOpen?: boolean, upperOpen?: boolean): IDBKeyRange; - lowerBound(bound: any, open?: boolean): IDBKeyRange; + lowerBound(lower: any, open?: boolean): IDBKeyRange; only(value: any): IDBKeyRange; - upperBound(bound: any, open?: boolean): IDBKeyRange; + upperBound(upper: any, open?: boolean): IDBKeyRange; } interface IDBObjectStore { - indexNames: DOMStringList; + readonly indexNames: DOMStringList; keyPath: string | string[]; - name: string; - transaction: IDBTransaction; + readonly name: string; + readonly transaction: IDBTransaction; autoIncrement: boolean; - add(value: any, key?: any): IDBRequest; + add(value: any, key?: IDBKeyRange | IDBValidKey): IDBRequest; clear(): IDBRequest; - count(key?: any): IDBRequest; + count(key?: IDBKeyRange | IDBValidKey): IDBRequest; createIndex(name: string, keyPath: string | string[], optionalParameters?: IDBIndexParameters): IDBIndex; - delete(key: any): IDBRequest; + delete(key: IDBKeyRange | IDBValidKey): IDBRequest; deleteIndex(indexName: string): void; get(key: any): IDBRequest; index(name: string): IDBIndex; - openCursor(range?: any, direction?: string): IDBRequest; - put(value: any, key?: any): IDBRequest; + openCursor(range?: IDBKeyRange | IDBValidKey, direction?: string): IDBRequest; + put(value: any, key?: IDBKeyRange | IDBValidKey): IDBRequest; } declare var IDBObjectStore: { @@ -7246,13 +7686,13 @@ declare var IDBOpenDBRequest: { } interface IDBRequest extends EventTarget { - error: DOMError; + readonly error: DOMError; onerror: (ev: Event) => any; onsuccess: (ev: Event) => any; - readyState: string; - result: any; + readonly readyState: string; + readonly result: any; source: IDBObjectStore | IDBIndex | IDBCursor; - transaction: IDBTransaction; + 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: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; @@ -7264,17 +7704,17 @@ declare var IDBRequest: { } interface IDBTransaction extends EventTarget { - db: IDBDatabase; - error: DOMError; - mode: string; + readonly db: IDBDatabase; + readonly error: DOMError; + readonly mode: string; onabort: (ev: Event) => any; oncomplete: (ev: Event) => any; onerror: (ev: Event) => any; abort(): void; objectStore(name: string): IDBObjectStore; - READ_ONLY: string; - READ_WRITE: string; - VERSION_CHANGE: string; + 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; @@ -7284,14 +7724,14 @@ interface IDBTransaction extends EventTarget { declare var IDBTransaction: { prototype: IDBTransaction; new(): IDBTransaction; - READ_ONLY: string; - READ_WRITE: string; - VERSION_CHANGE: string; + readonly READ_ONLY: string; + readonly READ_WRITE: string; + readonly VERSION_CHANGE: string; } interface IDBVersionChangeEvent extends Event { - newVersion: number; - oldVersion: number; + readonly newVersion: number; + readonly oldVersion: number; } declare var IDBVersionChangeEvent: { @@ -7301,8 +7741,8 @@ declare var IDBVersionChangeEvent: { interface ImageData { data: Uint8ClampedArray; - height: number; - width: number; + readonly height: number; + readonly width: number; } declare var ImageData: { @@ -7312,37 +7752,47 @@ declare var ImageData: { } interface KeyboardEvent extends UIEvent { - altKey: boolean; - char: string; - charCode: number; - ctrlKey: boolean; - key: string; - keyCode: number; - locale: string; - location: number; - metaKey: boolean; - repeat: boolean; - shiftKey: boolean; - which: number; + readonly altKey: boolean; + readonly char: string; + readonly charCode: number; + readonly ctrlKey: boolean; + readonly key: string; + readonly keyCode: number; + readonly locale: string; + readonly location: number; + readonly metaKey: boolean; + readonly repeat: boolean; + readonly shiftKey: boolean; + readonly which: number; getModifierState(keyArg: string): boolean; initKeyboardEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, keyArg: string, locationArg: number, modifiersListArg: string, repeat: boolean, locale: string): void; - DOM_KEY_LOCATION_JOYSTICK: number; - DOM_KEY_LOCATION_LEFT: number; - DOM_KEY_LOCATION_MOBILE: number; - DOM_KEY_LOCATION_NUMPAD: number; - DOM_KEY_LOCATION_RIGHT: number; - DOM_KEY_LOCATION_STANDARD: number; + readonly DOM_KEY_LOCATION_JOYSTICK: number; + readonly DOM_KEY_LOCATION_LEFT: number; + readonly DOM_KEY_LOCATION_MOBILE: number; + readonly DOM_KEY_LOCATION_NUMPAD: number; + readonly DOM_KEY_LOCATION_RIGHT: number; + readonly DOM_KEY_LOCATION_STANDARD: number; } declare var KeyboardEvent: { prototype: KeyboardEvent; new(typeArg: string, eventInitDict?: KeyboardEventInit): KeyboardEvent; - DOM_KEY_LOCATION_JOYSTICK: number; - DOM_KEY_LOCATION_LEFT: number; - DOM_KEY_LOCATION_MOBILE: number; - DOM_KEY_LOCATION_NUMPAD: number; - DOM_KEY_LOCATION_RIGHT: number; - DOM_KEY_LOCATION_STANDARD: number; + readonly DOM_KEY_LOCATION_JOYSTICK: number; + readonly DOM_KEY_LOCATION_LEFT: number; + readonly DOM_KEY_LOCATION_MOBILE: number; + readonly DOM_KEY_LOCATION_NUMPAD: number; + readonly DOM_KEY_LOCATION_RIGHT: number; + readonly DOM_KEY_LOCATION_STANDARD: number; +} + +interface ListeningStateChangedEvent extends Event { + readonly label: string; + readonly state: string; +} + +declare var ListeningStateChangedEvent: { + prototype: ListeningStateChangedEvent; + new(): ListeningStateChangedEvent; } interface Location { @@ -7350,7 +7800,7 @@ interface Location { host: string; hostname: string; href: string; - origin: string; + readonly origin: string; pathname: string; port: string; protocol: string; @@ -7367,7 +7817,7 @@ declare var Location: { } interface LongRunningScriptDetectedEvent extends Event { - executionTime: number; + readonly executionTime: number; stopPageScriptExecution: boolean; } @@ -7386,29 +7836,29 @@ interface MSApp { execAsyncAtPriority(asynchronousCallback: MSExecAtPriorityFunctionCallback, priority: string, ...args: any[]): void; execAtPriority(synchronousCallback: MSExecAtPriorityFunctionCallback, priority: string, ...args: any[]): any; getCurrentPriority(): string; - getHtmlPrintDocumentSourceAsync(htmlDoc: any): any; + getHtmlPrintDocumentSourceAsync(htmlDoc: any): PromiseLike; getViewId(view: any): any; isTaskScheduledAtPriorityOrHigher(priority: string): boolean; pageHandlesAllApplicationActivations(enabled: boolean): void; suppressSubdownloadCredentialPrompts(suppress: boolean): void; terminateApp(exceptionObject: any): void; - CURRENT: string; - HIGH: string; - IDLE: string; - NORMAL: string; + readonly CURRENT: string; + readonly HIGH: string; + readonly IDLE: string; + readonly NORMAL: string; } declare var MSApp: MSApp; interface MSAppAsyncOperation extends EventTarget { - error: DOMError; + readonly error: DOMError; oncomplete: (ev: Event) => any; onerror: (ev: Event) => any; - readyState: number; - result: any; + readonly readyState: number; + readonly result: any; start(): void; - COMPLETED: number; - ERROR: number; - STARTED: number; + 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: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; @@ -7417,9 +7867,19 @@ interface MSAppAsyncOperation extends EventTarget { declare var MSAppAsyncOperation: { prototype: MSAppAsyncOperation; new(): MSAppAsyncOperation; - COMPLETED: number; - ERROR: number; - STARTED: number; + readonly COMPLETED: number; + readonly ERROR: number; + readonly STARTED: number; +} + +interface MSAssertion { + readonly id: string; + readonly type: string; +} + +declare var MSAssertion: { + prototype: MSAssertion; + new(): MSAssertion; } interface MSBlobBuilder { @@ -7432,44 +7892,46 @@ declare var MSBlobBuilder: { new(): MSBlobBuilder; } -interface MSCSSMatrix { - a: number; - b: number; - c: number; - d: number; - e: number; - f: number; - m11: number; - m12: number; - m13: number; - m14: number; - m21: number; - m22: number; - m23: number; - m24: number; - m31: number; - m32: number; - m33: number; - m34: number; - m41: number; - m42: number; - m43: number; - m44: number; - inverse(): MSCSSMatrix; - multiply(secondMatrix: MSCSSMatrix): MSCSSMatrix; - rotate(angleX: number, angleY?: number, angleZ?: number): MSCSSMatrix; - rotateAxisAngle(x: number, y: number, z: number, angle: number): MSCSSMatrix; - scale(scaleX: number, scaleY?: number, scaleZ?: number): MSCSSMatrix; - setMatrixValue(value: string): void; - skewX(angle: number): MSCSSMatrix; - skewY(angle: number): MSCSSMatrix; - toString(): string; - translate(x: number, y: number, z?: number): MSCSSMatrix; +interface MSCredentials { + getAssertion(challenge: string, filter?: MSCredentialFilter, params?: MSSignatureParameters): PromiseLike; + makeCredential(accountInfo: MSAccountInfo, params: MSCredentialParameters[], challenge?: string): PromiseLike; } -declare var MSCSSMatrix: { - prototype: MSCSSMatrix; - new(text?: string): MSCSSMatrix; +declare var MSCredentials: { + prototype: MSCredentials; + new(): MSCredentials; +} + +interface MSFIDOCredentialAssertion extends MSAssertion { + readonly algorithm: string | Algorithm; + readonly attestation: any; + readonly publicKey: string; + readonly transportHints: string[]; +} + +declare var MSFIDOCredentialAssertion: { + prototype: MSFIDOCredentialAssertion; + new(): MSFIDOCredentialAssertion; +} + +interface MSFIDOSignature { + readonly authnrData: string; + readonly clientData: string; + readonly signature: string; +} + +declare var MSFIDOSignature: { + prototype: MSFIDOSignature; + new(): MSFIDOSignature; +} + +interface MSFIDOSignatureAssertion extends MSAssertion { + readonly signature: MSFIDOSignature; +} + +declare var MSFIDOSignatureAssertion: { + prototype: MSFIDOSignatureAssertion; + new(): MSFIDOSignatureAssertion; } interface MSGesture { @@ -7484,44 +7946,44 @@ declare var MSGesture: { } interface MSGestureEvent extends UIEvent { - clientX: number; - clientY: number; - expansion: number; - gestureObject: any; - hwTimestamp: number; - offsetX: number; - offsetY: number; - rotation: number; - scale: number; - screenX: number; - screenY: number; - translationX: number; - translationY: number; - velocityAngular: number; - velocityExpansion: number; - velocityX: number; - velocityY: number; + readonly clientX: number; + readonly clientY: number; + readonly expansion: number; + readonly gestureObject: any; + readonly hwTimestamp: number; + readonly offsetX: number; + readonly offsetY: number; + readonly rotation: number; + readonly scale: number; + readonly screenX: number; + readonly screenY: number; + readonly translationX: number; + readonly translationY: number; + readonly velocityAngular: number; + readonly velocityExpansion: number; + readonly velocityX: number; + readonly velocityY: number; initGestureEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, screenXArg: number, screenYArg: number, clientXArg: number, clientYArg: number, offsetXArg: number, offsetYArg: number, translationXArg: number, translationYArg: number, scaleArg: number, expansionArg: number, rotationArg: number, velocityXArg: number, velocityYArg: number, velocityExpansionArg: number, velocityAngularArg: number, hwTimestampArg: number): void; - MSGESTURE_FLAG_BEGIN: number; - MSGESTURE_FLAG_CANCEL: number; - MSGESTURE_FLAG_END: number; - MSGESTURE_FLAG_INERTIA: number; - MSGESTURE_FLAG_NONE: number; + readonly MSGESTURE_FLAG_BEGIN: number; + readonly MSGESTURE_FLAG_CANCEL: number; + readonly MSGESTURE_FLAG_END: number; + readonly MSGESTURE_FLAG_INERTIA: number; + readonly MSGESTURE_FLAG_NONE: number; } declare var MSGestureEvent: { prototype: MSGestureEvent; new(): MSGestureEvent; - MSGESTURE_FLAG_BEGIN: number; - MSGESTURE_FLAG_CANCEL: number; - MSGESTURE_FLAG_END: number; - MSGESTURE_FLAG_INERTIA: number; - MSGESTURE_FLAG_NONE: number; + readonly MSGESTURE_FLAG_BEGIN: number; + readonly MSGESTURE_FLAG_CANCEL: number; + readonly MSGESTURE_FLAG_END: number; + readonly MSGESTURE_FLAG_INERTIA: number; + readonly MSGESTURE_FLAG_NONE: number; } interface MSGraphicsTrust { - constrictionActive: boolean; - status: string; + readonly constrictionActive: boolean; + readonly status: string; } declare var MSGraphicsTrust: { @@ -7530,12 +7992,12 @@ declare var MSGraphicsTrust: { } interface MSHTMLWebViewElement extends HTMLElement { - canGoBack: boolean; - canGoForward: boolean; - containsFullScreenElement: boolean; - documentTitle: string; + readonly canGoBack: boolean; + readonly canGoForward: boolean; + readonly containsFullScreenElement: boolean; + readonly documentTitle: string; height: number; - settings: MSWebViewSettings; + readonly settings: MSWebViewSettings; src: string; width: number; addWebAllowedObject(name: string, applicationObject: any): void; @@ -7561,12 +8023,12 @@ declare var MSHTMLWebViewElement: { } interface MSInputMethodContext extends EventTarget { - compositionEndOffset: number; - compositionStartOffset: number; + readonly compositionEndOffset: number; + readonly compositionStartOffset: number; oncandidatewindowhide: (ev: Event) => any; oncandidatewindowshow: (ev: Event) => any; oncandidatewindowupdate: (ev: Event) => any; - target: HTMLElement; + readonly target: HTMLElement; getCandidateWindowClientRect(): ClientRect; getCompositionAlternatives(): string[]; hasComposition(): boolean; @@ -7583,59 +8045,59 @@ declare var MSInputMethodContext: { } interface MSManipulationEvent extends UIEvent { - currentState: number; - inertiaDestinationX: number; - inertiaDestinationY: number; - lastState: number; + readonly currentState: number; + readonly inertiaDestinationX: number; + readonly inertiaDestinationY: number; + readonly lastState: number; initMSManipulationEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, lastState: number, currentState: number): void; - MS_MANIPULATION_STATE_ACTIVE: number; - MS_MANIPULATION_STATE_CANCELLED: number; - MS_MANIPULATION_STATE_COMMITTED: number; - MS_MANIPULATION_STATE_DRAGGING: number; - MS_MANIPULATION_STATE_INERTIA: number; - MS_MANIPULATION_STATE_PRESELECT: number; - MS_MANIPULATION_STATE_SELECTING: number; - MS_MANIPULATION_STATE_STOPPED: number; + readonly MS_MANIPULATION_STATE_ACTIVE: number; + readonly MS_MANIPULATION_STATE_CANCELLED: number; + readonly MS_MANIPULATION_STATE_COMMITTED: number; + readonly MS_MANIPULATION_STATE_DRAGGING: number; + readonly MS_MANIPULATION_STATE_INERTIA: number; + readonly MS_MANIPULATION_STATE_PRESELECT: number; + readonly MS_MANIPULATION_STATE_SELECTING: number; + readonly MS_MANIPULATION_STATE_STOPPED: number; } declare var MSManipulationEvent: { prototype: MSManipulationEvent; new(): MSManipulationEvent; - MS_MANIPULATION_STATE_ACTIVE: number; - MS_MANIPULATION_STATE_CANCELLED: number; - MS_MANIPULATION_STATE_COMMITTED: number; - MS_MANIPULATION_STATE_DRAGGING: number; - MS_MANIPULATION_STATE_INERTIA: number; - MS_MANIPULATION_STATE_PRESELECT: number; - MS_MANIPULATION_STATE_SELECTING: number; - MS_MANIPULATION_STATE_STOPPED: number; + readonly MS_MANIPULATION_STATE_ACTIVE: number; + readonly MS_MANIPULATION_STATE_CANCELLED: number; + readonly MS_MANIPULATION_STATE_COMMITTED: number; + readonly MS_MANIPULATION_STATE_DRAGGING: number; + readonly MS_MANIPULATION_STATE_INERTIA: number; + readonly MS_MANIPULATION_STATE_PRESELECT: number; + readonly MS_MANIPULATION_STATE_SELECTING: number; + readonly MS_MANIPULATION_STATE_STOPPED: number; } interface MSMediaKeyError { - code: number; - systemCode: number; - MS_MEDIA_KEYERR_CLIENT: number; - MS_MEDIA_KEYERR_DOMAIN: number; - MS_MEDIA_KEYERR_HARDWARECHANGE: number; - MS_MEDIA_KEYERR_OUTPUT: number; - MS_MEDIA_KEYERR_SERVICE: number; - MS_MEDIA_KEYERR_UNKNOWN: number; + readonly code: number; + readonly systemCode: number; + readonly MS_MEDIA_KEYERR_CLIENT: number; + readonly MS_MEDIA_KEYERR_DOMAIN: number; + readonly MS_MEDIA_KEYERR_HARDWARECHANGE: number; + readonly MS_MEDIA_KEYERR_OUTPUT: number; + readonly MS_MEDIA_KEYERR_SERVICE: number; + readonly MS_MEDIA_KEYERR_UNKNOWN: number; } declare var MSMediaKeyError: { prototype: MSMediaKeyError; new(): MSMediaKeyError; - MS_MEDIA_KEYERR_CLIENT: number; - MS_MEDIA_KEYERR_DOMAIN: number; - MS_MEDIA_KEYERR_HARDWARECHANGE: number; - MS_MEDIA_KEYERR_OUTPUT: number; - MS_MEDIA_KEYERR_SERVICE: number; - MS_MEDIA_KEYERR_UNKNOWN: number; + readonly MS_MEDIA_KEYERR_CLIENT: number; + readonly MS_MEDIA_KEYERR_DOMAIN: number; + readonly MS_MEDIA_KEYERR_HARDWARECHANGE: number; + readonly MS_MEDIA_KEYERR_OUTPUT: number; + readonly MS_MEDIA_KEYERR_SERVICE: number; + readonly MS_MEDIA_KEYERR_UNKNOWN: number; } interface MSMediaKeyMessageEvent extends Event { - destinationURL: string; - message: Uint8Array; + readonly destinationURL: string; + readonly message: Uint8Array; } declare var MSMediaKeyMessageEvent: { @@ -7644,7 +8106,7 @@ declare var MSMediaKeyMessageEvent: { } interface MSMediaKeyNeededEvent extends Event { - initData: Uint8Array; + readonly initData: Uint8Array; } declare var MSMediaKeyNeededEvent: { @@ -7653,9 +8115,9 @@ declare var MSMediaKeyNeededEvent: { } interface MSMediaKeySession extends EventTarget { - error: MSMediaKeyError; - keySystem: string; - sessionId: string; + readonly error: MSMediaKeyError; + readonly keySystem: string; + readonly sessionId: string; close(): void; update(key: Uint8Array): void; } @@ -7666,7 +8128,7 @@ declare var MSMediaKeySession: { } interface MSMediaKeys { - keySystem: string; + readonly keySystem: string; createSession(type: string, initData: Uint8Array, cdmData?: Uint8Array): MSMediaKeySession; } @@ -7674,40 +8136,22 @@ declare var MSMediaKeys: { prototype: MSMediaKeys; new(keySystem: string): MSMediaKeys; isTypeSupported(keySystem: string, type?: string): boolean; -} - -interface MSMimeTypesCollection { - length: number; -} - -declare var MSMimeTypesCollection: { - prototype: MSMimeTypesCollection; - new(): MSMimeTypesCollection; -} - -interface MSPluginsCollection { - length: number; - refresh(reload?: boolean): void; -} - -declare var MSPluginsCollection: { - prototype: MSPluginsCollection; - new(): MSPluginsCollection; + isTypeSupportedWithFeatures(keySystem: string, type?: string): string; } interface MSPointerEvent extends MouseEvent { - currentPoint: any; - height: number; - hwTimestamp: number; - intermediatePoints: any; - isPrimary: boolean; - pointerId: number; - pointerType: any; - pressure: number; - rotation: number; - tiltX: number; - tiltY: number; - width: number; + readonly currentPoint: any; + readonly height: number; + readonly hwTimestamp: number; + readonly intermediatePoints: any; + readonly isPrimary: boolean; + readonly pointerId: number; + readonly pointerType: any; + readonly pressure: number; + readonly rotation: number; + readonly tiltX: number; + readonly tiltY: number; + readonly width: number; getCurrentPoint(element: Element): void; getIntermediatePoints(element: Element): void; initPointerEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, screenXArg: number, screenYArg: number, clientXArg: number, clientYArg: number, ctrlKeyArg: boolean, altKeyArg: boolean, shiftKeyArg: boolean, metaKeyArg: boolean, buttonArg: number, relatedTargetArg: EventTarget, offsetXArg: number, offsetYArg: number, widthArg: number, heightArg: number, pressure: number, rotation: number, tiltX: number, tiltY: number, pointerIdArg: number, pointerType: any, hwTimestampArg: number, isPrimary: boolean): void; @@ -7719,7 +8163,7 @@ declare var MSPointerEvent: { } interface MSRangeCollection { - length: number; + readonly length: number; item(index: number): Range; [index: number]: Range; } @@ -7730,8 +8174,8 @@ declare var MSRangeCollection: { } interface MSSiteModeEvent extends Event { - actionURL: string; - buttonID: number; + readonly actionURL: string; + readonly buttonID: number; } declare var MSSiteModeEvent: { @@ -7740,7 +8184,7 @@ declare var MSSiteModeEvent: { } interface MSStream { - type: string; + readonly type: string; msClose(): void; msDetachStream(): any; } @@ -7751,7 +8195,7 @@ declare var MSStream: { } interface MSStreamReader extends EventTarget, MSBaseReader { - error: DOMError; + readonly error: DOMError; readAsArrayBuffer(stream: MSStream, size?: number): void; readAsBinaryString(stream: MSStream, size?: number): void; readAsBlob(stream: MSStream, size?: number): void; @@ -7766,20 +8210,20 @@ declare var MSStreamReader: { } interface MSWebViewAsyncOperation extends EventTarget { - error: DOMError; + readonly error: DOMError; oncomplete: (ev: Event) => any; onerror: (ev: Event) => any; - readyState: number; - result: any; - target: MSHTMLWebViewElement; - type: number; + readonly readyState: number; + readonly result: any; + readonly target: MSHTMLWebViewElement; + readonly type: number; start(): void; - COMPLETED: number; - ERROR: number; - STARTED: number; - TYPE_CAPTURE_PREVIEW_TO_RANDOM_ACCESS_STREAM: number; - TYPE_CREATE_DATA_PACKAGE_FROM_SELECTION: number; - TYPE_INVOKE_SCRIPT: number; + readonly COMPLETED: number; + readonly ERROR: number; + readonly STARTED: number; + readonly TYPE_CAPTURE_PREVIEW_TO_RANDOM_ACCESS_STREAM: number; + readonly TYPE_CREATE_DATA_PACKAGE_FROM_SELECTION: number; + readonly TYPE_INVOKE_SCRIPT: number; addEventListener(type: "complete", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; @@ -7788,12 +8232,12 @@ interface MSWebViewAsyncOperation extends EventTarget { declare var MSWebViewAsyncOperation: { prototype: MSWebViewAsyncOperation; new(): MSWebViewAsyncOperation; - COMPLETED: number; - ERROR: number; - STARTED: number; - TYPE_CAPTURE_PREVIEW_TO_RANDOM_ACCESS_STREAM: number; - TYPE_CREATE_DATA_PACKAGE_FROM_SELECTION: number; - TYPE_INVOKE_SCRIPT: number; + readonly COMPLETED: number; + readonly ERROR: number; + readonly STARTED: number; + readonly TYPE_CAPTURE_PREVIEW_TO_RANDOM_ACCESS_STREAM: number; + readonly TYPE_CREATE_DATA_PACKAGE_FROM_SELECTION: number; + readonly TYPE_INVOKE_SCRIPT: number; } interface MSWebViewSettings { @@ -7806,6 +8250,32 @@ declare var MSWebViewSettings: { new(): MSWebViewSettings; } +interface MediaDeviceInfo { + readonly deviceId: string; + readonly groupId: string; + readonly kind: string; + readonly label: string; +} + +declare var MediaDeviceInfo: { + prototype: MediaDeviceInfo; + new(): MediaDeviceInfo; +} + +interface MediaDevices extends EventTarget { + ondevicechange: (ev: Event) => any; + enumerateDevices(): any; + getSupportedConstraints(): MediaTrackSupportedConstraints; + getUserMedia(constraints: MediaStreamConstraints): PromiseLike; + addEventListener(type: "devicechange", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +} + +declare var MediaDevices: { + prototype: MediaDevices; + new(): MediaDevices; +} + interface MediaElementAudioSourceNode extends AudioNode { } @@ -7814,28 +8284,98 @@ declare var MediaElementAudioSourceNode: { new(): MediaElementAudioSourceNode; } +interface MediaEncryptedEvent extends Event { + readonly initData: ArrayBuffer; + readonly initDataType: string; +} + +declare var MediaEncryptedEvent: { + prototype: MediaEncryptedEvent; + new(type: string, eventInitDict?: MediaEncryptedEventInit): MediaEncryptedEvent; +} + interface MediaError { - code: number; - msExtendedCode: number; - MEDIA_ERR_ABORTED: number; - MEDIA_ERR_DECODE: number; - MEDIA_ERR_NETWORK: number; - MEDIA_ERR_SRC_NOT_SUPPORTED: number; - MS_MEDIA_ERR_ENCRYPTED: number; + readonly code: number; + readonly msExtendedCode: number; + readonly MEDIA_ERR_ABORTED: number; + readonly MEDIA_ERR_DECODE: number; + readonly MEDIA_ERR_NETWORK: number; + readonly MEDIA_ERR_SRC_NOT_SUPPORTED: number; + readonly MS_MEDIA_ERR_ENCRYPTED: number; } declare var MediaError: { prototype: MediaError; new(): MediaError; - MEDIA_ERR_ABORTED: number; - MEDIA_ERR_DECODE: number; - MEDIA_ERR_NETWORK: number; - MEDIA_ERR_SRC_NOT_SUPPORTED: number; - MS_MEDIA_ERR_ENCRYPTED: number; + readonly MEDIA_ERR_ABORTED: number; + readonly MEDIA_ERR_DECODE: number; + readonly MEDIA_ERR_NETWORK: number; + readonly MEDIA_ERR_SRC_NOT_SUPPORTED: number; + readonly MS_MEDIA_ERR_ENCRYPTED: number; +} + +interface MediaKeyMessageEvent extends Event { + readonly message: ArrayBuffer; + readonly messageType: string; +} + +declare var MediaKeyMessageEvent: { + prototype: MediaKeyMessageEvent; + new(type: string, eventInitDict?: MediaKeyMessageEventInit): MediaKeyMessageEvent; +} + +interface MediaKeySession extends EventTarget { + readonly closed: PromiseLike; + readonly expiration: number; + readonly keyStatuses: MediaKeyStatusMap; + readonly sessionId: string; + close(): PromiseLike; + generateRequest(initDataType: string, initData: any): PromiseLike; + load(sessionId: string): PromiseLike; + remove(): PromiseLike; + update(response: any): PromiseLike; +} + +declare var MediaKeySession: { + prototype: MediaKeySession; + new(): MediaKeySession; +} + +interface MediaKeyStatusMap { + readonly size: number; + forEach(callback: ForEachCallback): void; + get(keyId: any): string; + has(keyId: any): boolean; +} + +declare var MediaKeyStatusMap: { + prototype: MediaKeyStatusMap; + new(): MediaKeyStatusMap; +} + +interface MediaKeySystemAccess { + readonly keySystem: string; + createMediaKeys(): PromiseLike; + getConfiguration(): MediaKeySystemConfiguration; +} + +declare var MediaKeySystemAccess: { + prototype: MediaKeySystemAccess; + new(): MediaKeySystemAccess; +} + +interface MediaKeys { + createSession(sessionType?: string): MediaKeySession; + setServerCertificate(serverCertificate: any): PromiseLike; +} + +declare var MediaKeys: { + prototype: MediaKeys; + new(): MediaKeys; } interface MediaList { - length: number; + readonly length: number; mediaText: string; appendMedium(newMedium: string): void; deleteMedium(oldMedium: string): void; @@ -7850,8 +8390,8 @@ declare var MediaList: { } interface MediaQueryList { - matches: boolean; - media: string; + readonly matches: boolean; + readonly media: string; addListener(listener: MediaQueryListListener): void; removeListener(listener: MediaQueryListListener): void; } @@ -7862,10 +8402,10 @@ declare var MediaQueryList: { } interface MediaSource extends EventTarget { - activeSourceBuffers: SourceBufferList; + readonly activeSourceBuffers: SourceBufferList; duration: number; - readyState: string; - sourceBuffers: SourceBufferList; + readonly readyState: string; + readonly sourceBuffers: SourceBufferList; addSourceBuffer(type: string): SourceBuffer; endOfStream(error?: number): void; removeSourceBuffer(sourceBuffer: SourceBuffer): void; @@ -7877,9 +8417,104 @@ declare var MediaSource: { isTypeSupported(type: string): boolean; } +interface MediaStream extends EventTarget { + readonly active: boolean; + readonly id: string; + onactive: (ev: Event) => any; + onaddtrack: (ev: TrackEvent) => any; + oninactive: (ev: Event) => any; + onremovetrack: (ev: TrackEvent) => any; + addTrack(track: MediaStreamTrack): void; + clone(): MediaStream; + getAudioTracks(): MediaStreamTrack[]; + getTrackById(trackId: string): MediaStreamTrack; + getTracks(): MediaStreamTrack[]; + getVideoTracks(): MediaStreamTrack[]; + removeTrack(track: MediaStreamTrack): void; + stop(): void; + addEventListener(type: "active", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "addtrack", listener: (ev: TrackEvent) => any, useCapture?: boolean): void; + addEventListener(type: "inactive", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "removetrack", listener: (ev: TrackEvent) => any, useCapture?: boolean): void; + addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +} + +declare var MediaStream: { + prototype: MediaStream; + new(streamOrTracks?: MediaStream | MediaStreamTrack[]): MediaStream; +} + +interface MediaStreamAudioSourceNode extends AudioNode { +} + +declare var MediaStreamAudioSourceNode: { + prototype: MediaStreamAudioSourceNode; + new(): MediaStreamAudioSourceNode; +} + +interface MediaStreamError { + readonly constraintName: string; + readonly message: string; + readonly name: string; +} + +declare var MediaStreamError: { + prototype: MediaStreamError; + new(): MediaStreamError; +} + +interface MediaStreamErrorEvent extends Event { + readonly error: MediaStreamError; +} + +declare var MediaStreamErrorEvent: { + prototype: MediaStreamErrorEvent; + new(type: string, eventInitDict?: MediaStreamErrorEventInit): MediaStreamErrorEvent; +} + +interface MediaStreamTrack extends EventTarget { + enabled: boolean; + readonly id: string; + readonly kind: string; + readonly label: string; + readonly muted: boolean; + onended: (ev: MediaStreamErrorEvent) => any; + onmute: (ev: Event) => any; + onoverconstrained: (ev: MediaStreamErrorEvent) => any; + onunmute: (ev: Event) => any; + readonly readonly: boolean; + readonly readyState: string; + readonly remote: boolean; + applyConstraints(constraints: MediaTrackConstraints): PromiseLike; + clone(): MediaStreamTrack; + getCapabilities(): MediaTrackCapabilities; + getConstraints(): MediaTrackConstraints; + getSettings(): MediaTrackSettings; + stop(): void; + addEventListener(type: "ended", listener: (ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mute", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "overconstrained", listener: (ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: "unmute", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +} + +declare var MediaStreamTrack: { + prototype: MediaStreamTrack; + new(): MediaStreamTrack; +} + +interface MediaStreamTrackEvent extends Event { + readonly track: MediaStreamTrack; +} + +declare var MediaStreamTrackEvent: { + prototype: MediaStreamTrackEvent; + new(type: string, eventInitDict?: MediaStreamTrackEventInit): MediaStreamTrackEvent; +} + interface MessageChannel { - port1: MessagePort; - port2: MessagePort; + readonly port1: MessagePort; + readonly port2: MessagePort; } declare var MessageChannel: { @@ -7888,10 +8523,10 @@ declare var MessageChannel: { } interface MessageEvent extends Event { - data: any; - origin: string; - ports: any; - source: Window; + readonly data: any; + readonly origin: string; + readonly ports: any; + readonly source: Window; initMessageEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, dataArg: any, originArg: string, lastEventIdArg: string, sourceArg: Window): void; } @@ -7915,10 +8550,10 @@ declare var MessagePort: { } interface MimeType { - description: string; - enabledPlugin: Plugin; - suffixes: string; - type: string; + readonly description: string; + readonly enabledPlugin: Plugin; + readonly suffixes: string; + readonly type: string; } declare var MimeType: { @@ -7927,7 +8562,7 @@ declare var MimeType: { } interface MimeTypeArray { - length: number; + readonly length: number; item(index: number): Plugin; namedItem(type: string): Plugin; [index: number]: Plugin; @@ -7939,30 +8574,30 @@ declare var MimeTypeArray: { } interface MouseEvent extends UIEvent { - altKey: boolean; - button: number; - buttons: number; - clientX: number; - clientY: number; - ctrlKey: boolean; - fromElement: Element; - layerX: number; - layerY: number; - metaKey: boolean; - movementX: number; - movementY: number; - offsetX: number; - offsetY: number; - pageX: number; - pageY: number; - relatedTarget: EventTarget; - screenX: number; - screenY: number; - shiftKey: boolean; - toElement: Element; - which: number; - x: number; - y: number; + readonly altKey: boolean; + readonly button: number; + readonly buttons: number; + readonly clientX: number; + readonly clientY: number; + readonly ctrlKey: boolean; + readonly fromElement: Element; + readonly layerX: number; + readonly layerY: number; + readonly metaKey: boolean; + readonly movementX: number; + readonly movementY: number; + readonly offsetX: number; + readonly offsetY: number; + readonly pageX: number; + readonly pageY: number; + readonly relatedTarget: EventTarget; + readonly screenX: number; + readonly screenY: number; + readonly shiftKey: boolean; + readonly toElement: Element; + readonly which: number; + readonly x: number; + readonly y: number; getModifierState(keyArg: string): boolean; initMouseEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, screenXArg: number, screenYArg: number, clientXArg: number, clientYArg: number, ctrlKeyArg: boolean, altKeyArg: boolean, shiftKeyArg: boolean, metaKeyArg: boolean, buttonArg: number, relatedTargetArg: EventTarget): void; } @@ -7972,36 +8607,24 @@ declare var MouseEvent: { new(typeArg: string, eventInitDict?: MouseEventInit): MouseEvent; } -interface MouseWheelEvent extends MouseEvent { - wheelDelta: number; - wheelDeltaX: number; - wheelDeltaY: number; - initMouseWheelEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, screenXArg: number, screenYArg: number, clientXArg: number, clientYArg: number, buttonArg: number, relatedTargetArg: EventTarget, modifiersListArg: string, wheelDeltaArg: number): void; -} - -declare var MouseWheelEvent: { - prototype: MouseWheelEvent; - new(): MouseWheelEvent; -} - interface MutationEvent extends Event { - attrChange: number; - attrName: string; - newValue: string; - prevValue: string; - relatedNode: Node; + readonly attrChange: number; + readonly attrName: string; + readonly newValue: string; + readonly prevValue: string; + readonly relatedNode: Node; initMutationEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, relatedNodeArg: Node, prevValueArg: string, newValueArg: string, attrNameArg: string, attrChangeArg: number): void; - ADDITION: number; - MODIFICATION: number; - REMOVAL: number; + readonly ADDITION: number; + readonly MODIFICATION: number; + readonly REMOVAL: number; } declare var MutationEvent: { prototype: MutationEvent; new(): MutationEvent; - ADDITION: number; - MODIFICATION: number; - REMOVAL: number; + readonly ADDITION: number; + readonly MODIFICATION: number; + readonly REMOVAL: number; } interface MutationObserver { @@ -8016,15 +8639,15 @@ declare var MutationObserver: { } interface MutationRecord { - addedNodes: NodeList; - attributeName: string; - attributeNamespace: string; - nextSibling: Node; - oldValue: string; - previousSibling: Node; - removedNodes: NodeList; - target: Node; - type: string; + readonly addedNodes: NodeList; + readonly attributeName: string; + readonly attributeNamespace: string; + readonly nextSibling: Node; + readonly oldValue: string; + readonly previousSibling: Node; + readonly removedNodes: NodeList; + readonly target: Node; + readonly type: string; } declare var MutationRecord: { @@ -8033,7 +8656,7 @@ declare var MutationRecord: { } interface NamedNodeMap { - length: number; + readonly length: number; getNamedItem(name: string): Attr; getNamedItemNS(namespaceURI: string, localName: string): Attr; item(index: number): Attr; @@ -8050,8 +8673,8 @@ declare var NamedNodeMap: { } interface NavigationCompletedEvent extends NavigationEvent { - isSuccess: boolean; - webErrorStatus: number; + readonly isSuccess: boolean; + readonly webErrorStatus: number; } declare var NavigationCompletedEvent: { @@ -8060,7 +8683,7 @@ declare var NavigationCompletedEvent: { } interface NavigationEvent extends Event { - uri: string; + readonly uri: string; } declare var NavigationEvent: { @@ -8069,7 +8692,7 @@ declare var NavigationEvent: { } interface NavigationEventWithReferrer extends NavigationEvent { - referer: string; + readonly referer: string; } declare var NavigationEventWithReferrer: { @@ -8077,27 +8700,22 @@ declare var NavigationEventWithReferrer: { new(): NavigationEventWithReferrer; } -interface Navigator extends Object, NavigatorID, NavigatorOnLine, NavigatorContentUtils, NavigatorStorageUtils, NavigatorGeolocation, MSNavigatorDoNotTrack, MSFileSaver { - appCodeName: string; - appMinorVersion: string; - browserLanguage: string; - connectionSpeed: number; - cookieEnabled: boolean; - cpuClass: string; - language: string; - maxTouchPoints: number; - mimeTypes: MSMimeTypesCollection; - msManipulationViewsEnabled: boolean; - msMaxTouchPoints: number; - msPointerEnabled: boolean; - plugins: MSPluginsCollection; - pointerEnabled: boolean; - systemLanguage: string; - userLanguage: string; - webdriver: boolean; +interface Navigator extends Object, NavigatorID, NavigatorOnLine, NavigatorContentUtils, NavigatorStorageUtils, NavigatorGeolocation, MSNavigatorDoNotTrack, MSFileSaver, NavigatorUserMedia { + readonly appCodeName: string; + readonly cookieEnabled: boolean; + readonly language: string; + readonly maxTouchPoints: number; + readonly mimeTypes: MimeTypeArray; + readonly msManipulationViewsEnabled: boolean; + readonly msMaxTouchPoints: number; + readonly msPointerEnabled: boolean; + readonly plugins: PluginArray; + readonly pointerEnabled: boolean; + readonly webdriver: boolean; getGamepads(): Gamepad[]; javaEnabled(): boolean; msLaunchUri(uri: string, successCallback?: MSLaunchUriCallback, noHandlerCallback?: MSLaunchUriCallback): void; + requestMediaKeySystemAccess(keySystem: string, supportedConfigurations: MediaKeySystemConfiguration[]): PromiseLike; vibrate(pattern: number | number[]): boolean; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -8108,26 +8726,26 @@ declare var Navigator: { } interface Node extends EventTarget { - attributes: NamedNodeMap; - baseURI: string; - childNodes: NodeList; - firstChild: Node; - lastChild: Node; - localName: string; - namespaceURI: string; - nextSibling: Node; - nodeName: string; - nodeType: number; + readonly attributes: NamedNodeMap; + readonly baseURI: string; + readonly childNodes: NodeList; + readonly firstChild: Node; + readonly lastChild: Node; + readonly localName: string; + readonly namespaceURI: string; + readonly nextSibling: Node; + readonly nodeName: string; + readonly nodeType: number; nodeValue: string; - ownerDocument: Document; - parentElement: HTMLElement; - parentNode: Node; - prefix: string; - previousSibling: Node; + readonly ownerDocument: Document; + readonly parentElement: HTMLElement; + readonly parentNode: Node; + readonly previousSibling: Node; textContent: string; appendChild(newChild: Node): Node; cloneNode(deep?: boolean): Node; compareDocumentPosition(other: Node): number; + contains(child: Node): boolean; hasAttributes(): boolean; hasChildNodes(): boolean; insertBefore(newChild: Node, refChild?: Node): Node; @@ -8140,47 +8758,47 @@ interface Node extends EventTarget { removeChild(oldChild: Node): Node; replaceChild(newChild: Node, oldChild: Node): Node; contains(node: Node): boolean; - ATTRIBUTE_NODE: number; - CDATA_SECTION_NODE: number; - COMMENT_NODE: number; - DOCUMENT_FRAGMENT_NODE: number; - DOCUMENT_NODE: number; - DOCUMENT_POSITION_CONTAINED_BY: number; - DOCUMENT_POSITION_CONTAINS: number; - DOCUMENT_POSITION_DISCONNECTED: number; - DOCUMENT_POSITION_FOLLOWING: number; - DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: number; - DOCUMENT_POSITION_PRECEDING: number; - DOCUMENT_TYPE_NODE: number; - ELEMENT_NODE: number; - ENTITY_NODE: number; - ENTITY_REFERENCE_NODE: number; - NOTATION_NODE: number; - PROCESSING_INSTRUCTION_NODE: number; - TEXT_NODE: number; + readonly ATTRIBUTE_NODE: number; + readonly CDATA_SECTION_NODE: number; + readonly COMMENT_NODE: number; + readonly DOCUMENT_FRAGMENT_NODE: number; + readonly DOCUMENT_NODE: number; + readonly DOCUMENT_POSITION_CONTAINED_BY: number; + readonly DOCUMENT_POSITION_CONTAINS: number; + readonly DOCUMENT_POSITION_DISCONNECTED: number; + readonly DOCUMENT_POSITION_FOLLOWING: number; + readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: number; + readonly DOCUMENT_POSITION_PRECEDING: number; + readonly DOCUMENT_TYPE_NODE: number; + readonly ELEMENT_NODE: number; + readonly ENTITY_NODE: number; + readonly ENTITY_REFERENCE_NODE: number; + readonly NOTATION_NODE: number; + readonly PROCESSING_INSTRUCTION_NODE: number; + readonly TEXT_NODE: number; } declare var Node: { prototype: Node; new(): Node; - ATTRIBUTE_NODE: number; - CDATA_SECTION_NODE: number; - COMMENT_NODE: number; - DOCUMENT_FRAGMENT_NODE: number; - DOCUMENT_NODE: number; - DOCUMENT_POSITION_CONTAINED_BY: number; - DOCUMENT_POSITION_CONTAINS: number; - DOCUMENT_POSITION_DISCONNECTED: number; - DOCUMENT_POSITION_FOLLOWING: number; - DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: number; - DOCUMENT_POSITION_PRECEDING: number; - DOCUMENT_TYPE_NODE: number; - ELEMENT_NODE: number; - ENTITY_NODE: number; - ENTITY_REFERENCE_NODE: number; - NOTATION_NODE: number; - PROCESSING_INSTRUCTION_NODE: number; - TEXT_NODE: number; + readonly ATTRIBUTE_NODE: number; + readonly CDATA_SECTION_NODE: number; + readonly COMMENT_NODE: number; + readonly DOCUMENT_FRAGMENT_NODE: number; + readonly DOCUMENT_NODE: number; + readonly DOCUMENT_POSITION_CONTAINED_BY: number; + readonly DOCUMENT_POSITION_CONTAINS: number; + readonly DOCUMENT_POSITION_DISCONNECTED: number; + readonly DOCUMENT_POSITION_FOLLOWING: number; + readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: number; + readonly DOCUMENT_POSITION_PRECEDING: number; + readonly DOCUMENT_TYPE_NODE: number; + readonly ELEMENT_NODE: number; + readonly ENTITY_NODE: number; + readonly ENTITY_REFERENCE_NODE: number; + readonly NOTATION_NODE: number; + readonly PROCESSING_INSTRUCTION_NODE: number; + readonly TEXT_NODE: number; } interface NodeFilter { @@ -8188,29 +8806,29 @@ interface NodeFilter { } declare var NodeFilter: { - FILTER_ACCEPT: number; - FILTER_REJECT: number; - FILTER_SKIP: number; - SHOW_ALL: number; - SHOW_ATTRIBUTE: number; - SHOW_CDATA_SECTION: number; - SHOW_COMMENT: number; - SHOW_DOCUMENT: number; - SHOW_DOCUMENT_FRAGMENT: number; - SHOW_DOCUMENT_TYPE: number; - SHOW_ELEMENT: number; - SHOW_ENTITY: number; - SHOW_ENTITY_REFERENCE: number; - SHOW_NOTATION: number; - SHOW_PROCESSING_INSTRUCTION: number; - SHOW_TEXT: number; + readonly FILTER_ACCEPT: number; + readonly FILTER_REJECT: number; + readonly FILTER_SKIP: number; + readonly SHOW_ALL: number; + readonly SHOW_ATTRIBUTE: number; + readonly SHOW_CDATA_SECTION: number; + readonly SHOW_COMMENT: number; + readonly SHOW_DOCUMENT: number; + readonly SHOW_DOCUMENT_FRAGMENT: number; + readonly SHOW_DOCUMENT_TYPE: number; + readonly SHOW_ELEMENT: number; + readonly SHOW_ENTITY: number; + readonly SHOW_ENTITY_REFERENCE: number; + readonly SHOW_NOTATION: number; + readonly SHOW_PROCESSING_INSTRUCTION: number; + readonly SHOW_TEXT: number; } interface NodeIterator { - expandEntityReferences: boolean; - filter: NodeFilter; - root: Node; - whatToShow: number; + readonly expandEntityReferences: boolean; + readonly filter: NodeFilter; + readonly root: Node; + readonly whatToShow: number; detach(): void; nextNode(): Node; previousNode(): Node; @@ -8222,7 +8840,7 @@ declare var NodeIterator: { } interface NodeList { - length: number; + readonly length: number; item(index: number): Node; [index: number]: Node; } @@ -8241,13 +8859,13 @@ declare var OES_element_index_uint: { } interface OES_standard_derivatives { - FRAGMENT_SHADER_DERIVATIVE_HINT_OES: number; + readonly FRAGMENT_SHADER_DERIVATIVE_HINT_OES: number; } declare var OES_standard_derivatives: { prototype: OES_standard_derivatives; new(): OES_standard_derivatives; - FRAGMENT_SHADER_DERIVATIVE_HINT_OES: number; + readonly FRAGMENT_SHADER_DERIVATIVE_HINT_OES: number; } interface OES_texture_float { @@ -8267,7 +8885,7 @@ declare var OES_texture_float_linear: { } interface OfflineAudioCompletionEvent extends Event { - renderedBuffer: AudioBuffer; + readonly renderedBuffer: AudioBuffer; } declare var OfflineAudioCompletionEvent: { @@ -8277,7 +8895,7 @@ declare var OfflineAudioCompletionEvent: { interface OfflineAudioContext extends AudioContext { oncomplete: (ev: Event) => any; - startRendering(): void; + startRendering(): PromiseLike; addEventListener(type: "complete", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -8288,14 +8906,14 @@ declare var OfflineAudioContext: { } interface OscillatorNode extends AudioNode { - detune: AudioParam; - frequency: AudioParam; - onended: (ev: Event) => any; + readonly detune: AudioParam; + readonly frequency: AudioParam; + onended: (ev: MediaStreamErrorEvent) => any; type: string; setPeriodicWave(periodicWave: PeriodicWave): void; start(when?: number): void; stop(when?: number): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "ended", listener: (ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -8304,8 +8922,25 @@ declare var OscillatorNode: { new(): OscillatorNode; } +interface OverflowEvent extends UIEvent { + readonly horizontalOverflow: boolean; + readonly orient: number; + readonly verticalOverflow: boolean; + readonly BOTH: number; + readonly HORIZONTAL: number; + readonly VERTICAL: number; +} + +declare var OverflowEvent: { + prototype: OverflowEvent; + new(): OverflowEvent; + readonly BOTH: number; + readonly HORIZONTAL: number; + readonly VERTICAL: number; +} + interface PageTransitionEvent extends Event { - persisted: boolean; + readonly persisted: boolean; } declare var PageTransitionEvent: { @@ -8333,17 +8968,17 @@ declare var PannerNode: { } interface PerfWidgetExternal { - activeNetworkRequestCount: number; - averageFrameTime: number; - averagePaintTime: number; - extraInformationEnabled: boolean; - independentRenderingEnabled: boolean; - irDisablingContentString: string; - irStatusAvailable: boolean; - maxCpuSpeed: number; - paintRequestsPerSecond: number; - performanceCounter: number; - performanceCounterFrequency: number; + readonly activeNetworkRequestCount: number; + readonly averageFrameTime: number; + readonly averagePaintTime: number; + readonly extraInformationEnabled: boolean; + readonly independentRenderingEnabled: boolean; + readonly irDisablingContentString: string; + readonly irStatusAvailable: boolean; + readonly maxCpuSpeed: number; + readonly paintRequestsPerSecond: number; + readonly performanceCounter: number; + readonly performanceCounterFrequency: number; addEventListener(eventType: string, callback: Function): void; getMemoryUsage(): number; getProcessCpuUsage(): number; @@ -8362,8 +8997,8 @@ declare var PerfWidgetExternal: { } interface Performance { - navigation: PerformanceNavigation; - timing: PerformanceTiming; + readonly navigation: PerformanceNavigation; + readonly timing: PerformanceTiming; clearMarks(markName?: string): void; clearMeasures(measureName?: string): void; clearResourceTimings(): void; @@ -8385,10 +9020,10 @@ declare var Performance: { } interface PerformanceEntry { - duration: number; - entryType: string; - name: string; - startTime: number; + readonly duration: number; + readonly entryType: string; + readonly name: string; + readonly startTime: number; } declare var PerformanceEntry: { @@ -8413,47 +9048,47 @@ declare var PerformanceMeasure: { } interface PerformanceNavigation { - redirectCount: number; - type: number; + readonly redirectCount: number; + readonly type: number; toJSON(): any; - TYPE_BACK_FORWARD: number; - TYPE_NAVIGATE: number; - TYPE_RELOAD: number; - TYPE_RESERVED: number; + readonly TYPE_BACK_FORWARD: number; + readonly TYPE_NAVIGATE: number; + readonly TYPE_RELOAD: number; + readonly TYPE_RESERVED: number; } declare var PerformanceNavigation: { prototype: PerformanceNavigation; new(): PerformanceNavigation; - TYPE_BACK_FORWARD: number; - TYPE_NAVIGATE: number; - TYPE_RELOAD: number; - TYPE_RESERVED: number; + readonly TYPE_BACK_FORWARD: number; + readonly TYPE_NAVIGATE: number; + readonly TYPE_RELOAD: number; + readonly TYPE_RESERVED: number; } interface PerformanceNavigationTiming extends PerformanceEntry { - connectEnd: number; - connectStart: number; - domComplete: number; - domContentLoadedEventEnd: number; - domContentLoadedEventStart: number; - domInteractive: number; - domLoading: number; - domainLookupEnd: number; - domainLookupStart: number; - fetchStart: number; - loadEventEnd: number; - loadEventStart: number; - navigationStart: number; - redirectCount: number; - redirectEnd: number; - redirectStart: number; - requestStart: number; - responseEnd: number; - responseStart: number; - type: string; - unloadEventEnd: number; - unloadEventStart: number; + readonly connectEnd: number; + readonly connectStart: number; + readonly domComplete: number; + readonly domContentLoadedEventEnd: number; + readonly domContentLoadedEventStart: number; + readonly domInteractive: number; + readonly domLoading: number; + readonly domainLookupEnd: number; + readonly domainLookupStart: number; + readonly fetchStart: number; + readonly loadEventEnd: number; + readonly loadEventStart: number; + readonly navigationStart: number; + readonly redirectCount: number; + readonly redirectEnd: number; + readonly redirectStart: number; + readonly requestStart: number; + readonly responseEnd: number; + readonly responseStart: number; + readonly type: string; + readonly unloadEventEnd: number; + readonly unloadEventStart: number; } declare var PerformanceNavigationTiming: { @@ -8462,17 +9097,17 @@ declare var PerformanceNavigationTiming: { } interface PerformanceResourceTiming extends PerformanceEntry { - connectEnd: number; - connectStart: number; - domainLookupEnd: number; - domainLookupStart: number; - fetchStart: number; - initiatorType: string; - redirectEnd: number; - redirectStart: number; - requestStart: number; - responseEnd: number; - responseStart: number; + readonly connectEnd: number; + readonly connectStart: number; + readonly domainLookupEnd: number; + readonly domainLookupStart: number; + readonly fetchStart: number; + readonly initiatorType: string; + readonly redirectEnd: number; + readonly redirectStart: number; + readonly requestStart: number; + readonly responseEnd: number; + readonly responseStart: number; } declare var PerformanceResourceTiming: { @@ -8481,27 +9116,27 @@ declare var PerformanceResourceTiming: { } interface PerformanceTiming { - connectEnd: number; - connectStart: number; - domComplete: number; - domContentLoadedEventEnd: number; - domContentLoadedEventStart: number; - domInteractive: number; - domLoading: number; - domainLookupEnd: number; - domainLookupStart: number; - fetchStart: number; - loadEventEnd: number; - loadEventStart: number; - msFirstPaint: number; - navigationStart: number; - redirectEnd: number; - redirectStart: number; - requestStart: number; - responseEnd: number; - responseStart: number; - unloadEventEnd: number; - unloadEventStart: number; + readonly connectEnd: number; + readonly connectStart: number; + readonly domComplete: number; + readonly domContentLoadedEventEnd: number; + readonly domContentLoadedEventStart: number; + readonly domInteractive: number; + readonly domLoading: number; + readonly domainLookupEnd: number; + readonly domainLookupStart: number; + readonly fetchStart: number; + readonly loadEventEnd: number; + readonly loadEventStart: number; + readonly msFirstPaint: number; + readonly navigationStart: number; + readonly redirectEnd: number; + readonly redirectStart: number; + readonly requestStart: number; + readonly responseEnd: number; + readonly responseStart: number; + readonly unloadEventEnd: number; + readonly unloadEventStart: number; toJSON(): any; } @@ -8519,7 +9154,7 @@ declare var PeriodicWave: { } interface PermissionRequest extends DeferredPermissionRequest { - state: string; + readonly state: string; defer(): void; } @@ -8529,7 +9164,7 @@ declare var PermissionRequest: { } interface PermissionRequestedEvent extends Event { - permissionRequest: PermissionRequest; + readonly permissionRequest: PermissionRequest; } declare var PermissionRequestedEvent: { @@ -8538,11 +9173,11 @@ declare var PermissionRequestedEvent: { } interface Plugin { - description: string; - filename: string; - length: number; - name: string; - version: string; + readonly description: string; + readonly filename: string; + readonly length: number; + readonly name: string; + readonly version: string; item(index: number): MimeType; namedItem(type: string): MimeType; [index: number]: MimeType; @@ -8554,7 +9189,7 @@ declare var Plugin: { } interface PluginArray { - length: number; + readonly length: number; item(index: number): Plugin; namedItem(name: string): Plugin; refresh(reload?: boolean): void; @@ -8567,18 +9202,18 @@ declare var PluginArray: { } interface PointerEvent extends MouseEvent { - currentPoint: any; - height: number; - hwTimestamp: number; - intermediatePoints: any; - isPrimary: boolean; - pointerId: number; - pointerType: any; - pressure: number; - rotation: number; - tiltX: number; - tiltY: number; - width: number; + readonly currentPoint: any; + readonly height: number; + readonly hwTimestamp: number; + readonly intermediatePoints: any; + readonly isPrimary: boolean; + readonly pointerId: number; + readonly pointerType: any; + readonly pressure: number; + readonly rotation: number; + readonly tiltX: number; + readonly tiltY: number; + readonly width: number; getCurrentPoint(element: Element): void; getIntermediatePoints(element: Element): void; initPointerEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, screenXArg: number, screenYArg: number, clientXArg: number, clientYArg: number, ctrlKeyArg: boolean, altKeyArg: boolean, shiftKeyArg: boolean, metaKeyArg: boolean, buttonArg: number, relatedTargetArg: EventTarget, offsetXArg: number, offsetYArg: number, widthArg: number, heightArg: number, pressure: number, rotation: number, tiltX: number, tiltY: number, pointerIdArg: number, pointerType: any, hwTimestampArg: number, isPrimary: boolean): void; @@ -8590,7 +9225,7 @@ declare var PointerEvent: { } interface PopStateEvent extends Event { - state: any; + readonly state: any; initPopStateEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, stateArg: any): void; } @@ -8600,8 +9235,8 @@ declare var PopStateEvent: { } interface Position { - coords: Coordinates; - timestamp: number; + readonly coords: Coordinates; + readonly timestamp: number; } declare var Position: { @@ -8610,24 +9245,24 @@ declare var Position: { } interface PositionError { - code: number; - message: string; + readonly code: number; + readonly message: string; toString(): string; - PERMISSION_DENIED: number; - POSITION_UNAVAILABLE: number; - TIMEOUT: number; + readonly PERMISSION_DENIED: number; + readonly POSITION_UNAVAILABLE: number; + readonly TIMEOUT: number; } declare var PositionError: { prototype: PositionError; new(): PositionError; - PERMISSION_DENIED: number; - POSITION_UNAVAILABLE: number; - TIMEOUT: number; + readonly PERMISSION_DENIED: number; + readonly POSITION_UNAVAILABLE: number; + readonly TIMEOUT: number; } interface ProcessingInstruction extends CharacterData { - target: string; + readonly target: string; } declare var ProcessingInstruction: { @@ -8636,9 +9271,9 @@ declare var ProcessingInstruction: { } interface ProgressEvent extends Event { - lengthComputable: boolean; - loaded: number; - total: number; + readonly lengthComputable: boolean; + readonly loaded: number; + readonly total: number; initProgressEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, lengthComputableArg: boolean, loadedArg: number, totalArg: number): void; } @@ -8647,13 +9282,210 @@ declare var ProgressEvent: { new(type: string, eventInitDict?: ProgressEventInit): ProgressEvent; } +interface RTCDTMFToneChangeEvent extends Event { + readonly tone: string; +} + +declare var RTCDTMFToneChangeEvent: { + prototype: RTCDTMFToneChangeEvent; + new(type: string, eventInitDict: RTCDTMFToneChangeEventInit): RTCDTMFToneChangeEvent; +} + +interface RTCDtlsTransport extends RTCStatsProvider { + ondtlsstatechange: (ev: RTCDtlsTransportStateChangedEvent) => any; + onerror: (ev: Event) => any; + readonly state: string; + readonly transport: RTCIceTransport; + getLocalParameters(): RTCDtlsParameters; + getRemoteCertificates(): ArrayBuffer[]; + getRemoteParameters(): RTCDtlsParameters; + start(remoteParameters: RTCDtlsParameters): void; + stop(): void; + addEventListener(type: "dtlsstatechange", listener: (ev: RTCDtlsTransportStateChangedEvent) => any, useCapture?: boolean): void; + addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +} + +declare var RTCDtlsTransport: { + prototype: RTCDtlsTransport; + new(transport: RTCIceTransport): RTCDtlsTransport; +} + +interface RTCDtlsTransportStateChangedEvent extends Event { + readonly state: string; +} + +declare var RTCDtlsTransportStateChangedEvent: { + prototype: RTCDtlsTransportStateChangedEvent; + new(): RTCDtlsTransportStateChangedEvent; +} + +interface RTCDtmfSender extends EventTarget { + readonly canInsertDTMF: boolean; + readonly duration: number; + readonly interToneGap: number; + ontonechange: (ev: RTCDTMFToneChangeEvent) => any; + readonly sender: RTCRtpSender; + readonly toneBuffer: string; + insertDTMF(tones: string, duration?: number, interToneGap?: number): void; + addEventListener(type: "tonechange", listener: (ev: RTCDTMFToneChangeEvent) => any, useCapture?: boolean): void; + addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +} + +declare var RTCDtmfSender: { + prototype: RTCDtmfSender; + new(sender: RTCRtpSender): RTCDtmfSender; +} + +interface RTCIceCandidatePairChangedEvent extends Event { + readonly pair: RTCIceCandidatePair; +} + +declare var RTCIceCandidatePairChangedEvent: { + prototype: RTCIceCandidatePairChangedEvent; + new(): RTCIceCandidatePairChangedEvent; +} + +interface RTCIceGatherer extends RTCStatsProvider { + readonly component: string; + onerror: (ev: Event) => any; + onlocalcandidate: (ev: RTCIceGathererEvent) => any; + createAssociatedGatherer(): RTCIceGatherer; + getLocalCandidates(): RTCIceCandidate[]; + getLocalParameters(): RTCIceParameters; + addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: "localcandidate", listener: (ev: RTCIceGathererEvent) => any, useCapture?: boolean): void; + addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +} + +declare var RTCIceGatherer: { + prototype: RTCIceGatherer; + new(options: RTCIceGatherOptions): RTCIceGatherer; +} + +interface RTCIceGathererEvent extends Event { + readonly candidate: RTCIceCandidate | RTCIceCandidateComplete; +} + +declare var RTCIceGathererEvent: { + prototype: RTCIceGathererEvent; + new(): RTCIceGathererEvent; +} + +interface RTCIceTransport extends RTCStatsProvider { + readonly component: string; + readonly iceGatherer: RTCIceGatherer; + oncandidatepairchange: (ev: RTCIceCandidatePairChangedEvent) => any; + onicestatechange: (ev: RTCIceTransportStateChangedEvent) => any; + readonly role: string; + readonly state: string; + addRemoteCandidate(remoteCandidate: RTCIceCandidate | RTCIceCandidateComplete): void; + createAssociatedTransport(): RTCIceTransport; + getNominatedCandidatePair(): RTCIceCandidatePair; + getRemoteCandidates(): RTCIceCandidate[]; + getRemoteParameters(): RTCIceParameters; + setRemoteCandidates(remoteCandidates: RTCIceCandidate[]): void; + start(gatherer: RTCIceGatherer, remoteParameters: RTCIceParameters, role?: string): void; + stop(): void; + addEventListener(type: "candidatepairchange", listener: (ev: RTCIceCandidatePairChangedEvent) => any, useCapture?: boolean): void; + addEventListener(type: "icestatechange", listener: (ev: RTCIceTransportStateChangedEvent) => any, useCapture?: boolean): void; + addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +} + +declare var RTCIceTransport: { + prototype: RTCIceTransport; + new(): RTCIceTransport; +} + +interface RTCIceTransportStateChangedEvent extends Event { + readonly state: string; +} + +declare var RTCIceTransportStateChangedEvent: { + prototype: RTCIceTransportStateChangedEvent; + new(): RTCIceTransportStateChangedEvent; +} + +interface RTCRtpReceiver extends RTCStatsProvider { + onerror: (ev: Event) => any; + readonly rtcpTransport: RTCDtlsTransport; + readonly track: MediaStreamTrack; + readonly transport: RTCDtlsTransport | RTCSrtpSdesTransport; + getContributingSources(): RTCRtpContributingSource[]; + receive(parameters: RTCRtpParameters): void; + requestSendCSRC(csrc: number): void; + setTransport(transport: RTCDtlsTransport | RTCSrtpSdesTransport, rtcpTransport?: RTCDtlsTransport): void; + stop(): void; + addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +} + +declare var RTCRtpReceiver: { + prototype: RTCRtpReceiver; + new(transport: RTCDtlsTransport | RTCSrtpSdesTransport, kind: string, rtcpTransport?: RTCDtlsTransport): RTCRtpReceiver; + getCapabilities(kind?: string): RTCRtpCapabilities; +} + +interface RTCRtpSender extends RTCStatsProvider { + onerror: (ev: Event) => any; + onssrcconflict: (ev: RTCSsrcConflictEvent) => any; + readonly rtcpTransport: RTCDtlsTransport; + readonly track: MediaStreamTrack; + readonly transport: RTCDtlsTransport | RTCSrtpSdesTransport; + send(parameters: RTCRtpParameters): void; + setTrack(track: MediaStreamTrack): void; + setTransport(transport: RTCDtlsTransport | RTCSrtpSdesTransport, rtcpTransport?: RTCDtlsTransport): void; + stop(): void; + addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: "ssrcconflict", listener: (ev: RTCSsrcConflictEvent) => any, useCapture?: boolean): void; + addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +} + +declare var RTCRtpSender: { + prototype: RTCRtpSender; + new(track: MediaStreamTrack, transport: RTCDtlsTransport | RTCSrtpSdesTransport, rtcpTransport?: RTCDtlsTransport): RTCRtpSender; + getCapabilities(kind?: string): RTCRtpCapabilities; +} + +interface RTCSrtpSdesTransport extends EventTarget { + onerror: (ev: Event) => any; + readonly transport: RTCIceTransport; + addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +} + +declare var RTCSrtpSdesTransport: { + prototype: RTCSrtpSdesTransport; + new(transport: RTCIceTransport, encryptParameters: RTCSrtpSdesParameters, decryptParameters: RTCSrtpSdesParameters): RTCSrtpSdesTransport; + getLocalParameters(): RTCSrtpSdesParameters[]; +} + +interface RTCSsrcConflictEvent extends Event { + readonly ssrc: number; +} + +declare var RTCSsrcConflictEvent: { + prototype: RTCSsrcConflictEvent; + new(): RTCSsrcConflictEvent; +} + +interface RTCStatsProvider extends EventTarget { + getStats(): PromiseLike; + msGetStats(): PromiseLike; +} + +declare var RTCStatsProvider: { + prototype: RTCStatsProvider; + new(): RTCStatsProvider; +} + interface Range { - collapsed: boolean; - commonAncestorContainer: Node; - endContainer: Node; - endOffset: number; - startContainer: Node; - startOffset: number; + readonly collapsed: boolean; + readonly commonAncestorContainer: Node; + readonly endContainer: Node; + readonly endOffset: number; + readonly startContainer: Node; + readonly startOffset: number; cloneContents(): DocumentFragment; cloneRange(): Range; collapse(toStart: boolean): void; @@ -8676,23 +9508,23 @@ interface Range { setStartBefore(refNode: Node): void; surroundContents(newParent: Node): void; toString(): string; - END_TO_END: number; - END_TO_START: number; - START_TO_END: number; - START_TO_START: number; + readonly END_TO_END: number; + readonly END_TO_START: number; + readonly START_TO_END: number; + readonly START_TO_START: number; } declare var Range: { prototype: Range; new(): Range; - END_TO_END: number; - END_TO_START: number; - START_TO_END: number; - START_TO_START: number; + readonly END_TO_END: number; + readonly END_TO_START: number; + readonly START_TO_END: number; + readonly START_TO_START: number; } interface SVGAElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired, SVGURIReference { - target: SVGAnimatedString; + readonly target: SVGAnimatedString; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -8702,32 +9534,32 @@ declare var SVGAElement: { } interface SVGAngle { - unitType: number; + readonly unitType: number; value: number; valueAsString: string; valueInSpecifiedUnits: number; convertToSpecifiedUnits(unitType: number): void; newValueSpecifiedUnits(unitType: number, valueInSpecifiedUnits: number): void; - SVG_ANGLETYPE_DEG: number; - SVG_ANGLETYPE_GRAD: number; - SVG_ANGLETYPE_RAD: number; - SVG_ANGLETYPE_UNKNOWN: number; - SVG_ANGLETYPE_UNSPECIFIED: number; + readonly SVG_ANGLETYPE_DEG: number; + readonly SVG_ANGLETYPE_GRAD: number; + readonly SVG_ANGLETYPE_RAD: number; + readonly SVG_ANGLETYPE_UNKNOWN: number; + readonly SVG_ANGLETYPE_UNSPECIFIED: number; } declare var SVGAngle: { prototype: SVGAngle; new(): SVGAngle; - SVG_ANGLETYPE_DEG: number; - SVG_ANGLETYPE_GRAD: number; - SVG_ANGLETYPE_RAD: number; - SVG_ANGLETYPE_UNKNOWN: number; - SVG_ANGLETYPE_UNSPECIFIED: number; + readonly SVG_ANGLETYPE_DEG: number; + readonly SVG_ANGLETYPE_GRAD: number; + readonly SVG_ANGLETYPE_RAD: number; + readonly SVG_ANGLETYPE_UNKNOWN: number; + readonly SVG_ANGLETYPE_UNSPECIFIED: number; } interface SVGAnimatedAngle { - animVal: SVGAngle; - baseVal: SVGAngle; + readonly animVal: SVGAngle; + readonly baseVal: SVGAngle; } declare var SVGAnimatedAngle: { @@ -8736,7 +9568,7 @@ declare var SVGAnimatedAngle: { } interface SVGAnimatedBoolean { - animVal: boolean; + readonly animVal: boolean; baseVal: boolean; } @@ -8746,7 +9578,7 @@ declare var SVGAnimatedBoolean: { } interface SVGAnimatedEnumeration { - animVal: number; + readonly animVal: number; baseVal: number; } @@ -8756,7 +9588,7 @@ declare var SVGAnimatedEnumeration: { } interface SVGAnimatedInteger { - animVal: number; + readonly animVal: number; baseVal: number; } @@ -8766,8 +9598,8 @@ declare var SVGAnimatedInteger: { } interface SVGAnimatedLength { - animVal: SVGLength; - baseVal: SVGLength; + readonly animVal: SVGLength; + readonly baseVal: SVGLength; } declare var SVGAnimatedLength: { @@ -8776,8 +9608,8 @@ declare var SVGAnimatedLength: { } interface SVGAnimatedLengthList { - animVal: SVGLengthList; - baseVal: SVGLengthList; + readonly animVal: SVGLengthList; + readonly baseVal: SVGLengthList; } declare var SVGAnimatedLengthList: { @@ -8786,7 +9618,7 @@ declare var SVGAnimatedLengthList: { } interface SVGAnimatedNumber { - animVal: number; + readonly animVal: number; baseVal: number; } @@ -8796,8 +9628,8 @@ declare var SVGAnimatedNumber: { } interface SVGAnimatedNumberList { - animVal: SVGNumberList; - baseVal: SVGNumberList; + readonly animVal: SVGNumberList; + readonly baseVal: SVGNumberList; } declare var SVGAnimatedNumberList: { @@ -8806,8 +9638,8 @@ declare var SVGAnimatedNumberList: { } interface SVGAnimatedPreserveAspectRatio { - animVal: SVGPreserveAspectRatio; - baseVal: SVGPreserveAspectRatio; + readonly animVal: SVGPreserveAspectRatio; + readonly baseVal: SVGPreserveAspectRatio; } declare var SVGAnimatedPreserveAspectRatio: { @@ -8816,8 +9648,8 @@ declare var SVGAnimatedPreserveAspectRatio: { } interface SVGAnimatedRect { - animVal: SVGRect; - baseVal: SVGRect; + readonly animVal: SVGRect; + readonly baseVal: SVGRect; } declare var SVGAnimatedRect: { @@ -8826,7 +9658,7 @@ declare var SVGAnimatedRect: { } interface SVGAnimatedString { - animVal: string; + readonly animVal: string; baseVal: string; } @@ -8836,8 +9668,8 @@ declare var SVGAnimatedString: { } interface SVGAnimatedTransformList { - animVal: SVGTransformList; - baseVal: SVGTransformList; + readonly animVal: SVGTransformList; + readonly baseVal: SVGTransformList; } declare var SVGAnimatedTransformList: { @@ -8846,9 +9678,9 @@ declare var SVGAnimatedTransformList: { } interface SVGCircleElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired { - cx: SVGAnimatedLength; - cy: SVGAnimatedLength; - r: SVGAnimatedLength; + readonly cx: SVGAnimatedLength; + readonly cy: SVGAnimatedLength; + readonly r: SVGAnimatedLength; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -8858,7 +9690,7 @@ declare var SVGCircleElement: { } interface SVGClipPathElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired, SVGUnitTypes { - clipPathUnits: SVGAnimatedEnumeration; + readonly clipPathUnits: SVGAnimatedEnumeration; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -8868,30 +9700,30 @@ declare var SVGClipPathElement: { } interface SVGComponentTransferFunctionElement extends SVGElement { - amplitude: SVGAnimatedNumber; - exponent: SVGAnimatedNumber; - intercept: SVGAnimatedNumber; - offset: SVGAnimatedNumber; - slope: SVGAnimatedNumber; - tableValues: SVGAnimatedNumberList; - type: SVGAnimatedEnumeration; - SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE: number; - SVG_FECOMPONENTTRANSFER_TYPE_GAMMA: number; - SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY: number; - SVG_FECOMPONENTTRANSFER_TYPE_LINEAR: number; - SVG_FECOMPONENTTRANSFER_TYPE_TABLE: number; - SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN: number; + readonly amplitude: SVGAnimatedNumber; + readonly exponent: SVGAnimatedNumber; + readonly intercept: SVGAnimatedNumber; + readonly offset: SVGAnimatedNumber; + readonly slope: SVGAnimatedNumber; + readonly tableValues: SVGAnimatedNumberList; + readonly type: SVGAnimatedEnumeration; + readonly SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE: number; + readonly SVG_FECOMPONENTTRANSFER_TYPE_GAMMA: number; + readonly SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY: number; + readonly SVG_FECOMPONENTTRANSFER_TYPE_LINEAR: number; + readonly SVG_FECOMPONENTTRANSFER_TYPE_TABLE: number; + readonly SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN: number; } declare var SVGComponentTransferFunctionElement: { prototype: SVGComponentTransferFunctionElement; new(): SVGComponentTransferFunctionElement; - SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE: number; - SVG_FECOMPONENTTRANSFER_TYPE_GAMMA: number; - SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY: number; - SVG_FECOMPONENTTRANSFER_TYPE_LINEAR: number; - SVG_FECOMPONENTTRANSFER_TYPE_TABLE: number; - SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN: number; + readonly SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE: number; + readonly SVG_FECOMPONENTTRANSFER_TYPE_GAMMA: number; + readonly SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY: number; + readonly SVG_FECOMPONENTTRANSFER_TYPE_LINEAR: number; + readonly SVG_FECOMPONENTTRANSFER_TYPE_TABLE: number; + readonly SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN: number; } interface SVGDefsElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired { @@ -8913,7 +9745,6 @@ declare var SVGDescElement: { } interface SVGElement extends Element { - id: string; onclick: (ev: MouseEvent) => any; ondblclick: (ev: MouseEvent) => any; onfocusin: (ev: FocusEvent) => any; @@ -8924,8 +9755,8 @@ interface SVGElement extends Element { onmouseout: (ev: MouseEvent) => any; onmouseover: (ev: MouseEvent) => any; onmouseup: (ev: MouseEvent) => any; - ownerSVGElement: SVGSVGElement; - viewportElement: SVGElement; + readonly ownerSVGElement: SVGSVGElement; + readonly viewportElement: SVGElement; xmlbase: string; className: any; addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; @@ -8983,14 +9814,14 @@ declare var SVGElement: { } interface SVGElementInstance extends EventTarget { - childNodes: SVGElementInstanceList; - correspondingElement: SVGElement; - correspondingUseElement: SVGUseElement; - firstChild: SVGElementInstance; - lastChild: SVGElementInstance; - nextSibling: SVGElementInstance; - parentNode: SVGElementInstance; - previousSibling: SVGElementInstance; + readonly childNodes: SVGElementInstanceList; + readonly correspondingElement: SVGElement; + readonly correspondingUseElement: SVGUseElement; + readonly firstChild: SVGElementInstance; + readonly lastChild: SVGElementInstance; + readonly nextSibling: SVGElementInstance; + readonly parentNode: SVGElementInstance; + readonly previousSibling: SVGElementInstance; } declare var SVGElementInstance: { @@ -8999,7 +9830,7 @@ declare var SVGElementInstance: { } interface SVGElementInstanceList { - length: number; + readonly length: number; item(index: number): SVGElementInstance; } @@ -9009,10 +9840,10 @@ declare var SVGElementInstanceList: { } interface SVGEllipseElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired { - cx: SVGAnimatedLength; - cy: SVGAnimatedLength; - rx: SVGAnimatedLength; - ry: SVGAnimatedLength; + readonly cx: SVGAnimatedLength; + readonly cy: SVGAnimatedLength; + readonly rx: SVGAnimatedLength; + readonly ry: SVGAnimatedLength; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -9022,75 +9853,75 @@ declare var SVGEllipseElement: { } interface SVGFEBlendElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - in1: SVGAnimatedString; - in2: SVGAnimatedString; - mode: SVGAnimatedEnumeration; - SVG_FEBLEND_MODE_COLOR: number; - SVG_FEBLEND_MODE_COLOR_BURN: number; - SVG_FEBLEND_MODE_COLOR_DODGE: number; - SVG_FEBLEND_MODE_DARKEN: number; - SVG_FEBLEND_MODE_DIFFERENCE: number; - SVG_FEBLEND_MODE_EXCLUSION: number; - SVG_FEBLEND_MODE_HARD_LIGHT: number; - SVG_FEBLEND_MODE_HUE: number; - SVG_FEBLEND_MODE_LIGHTEN: number; - SVG_FEBLEND_MODE_LUMINOSITY: number; - SVG_FEBLEND_MODE_MULTIPLY: number; - SVG_FEBLEND_MODE_NORMAL: number; - SVG_FEBLEND_MODE_OVERLAY: number; - SVG_FEBLEND_MODE_SATURATION: number; - SVG_FEBLEND_MODE_SCREEN: number; - SVG_FEBLEND_MODE_SOFT_LIGHT: number; - SVG_FEBLEND_MODE_UNKNOWN: number; + readonly in1: SVGAnimatedString; + readonly in2: SVGAnimatedString; + readonly mode: SVGAnimatedEnumeration; + readonly SVG_FEBLEND_MODE_COLOR: number; + readonly SVG_FEBLEND_MODE_COLOR_BURN: number; + readonly SVG_FEBLEND_MODE_COLOR_DODGE: number; + readonly SVG_FEBLEND_MODE_DARKEN: number; + readonly SVG_FEBLEND_MODE_DIFFERENCE: number; + readonly SVG_FEBLEND_MODE_EXCLUSION: number; + readonly SVG_FEBLEND_MODE_HARD_LIGHT: number; + readonly SVG_FEBLEND_MODE_HUE: number; + readonly SVG_FEBLEND_MODE_LIGHTEN: number; + readonly SVG_FEBLEND_MODE_LUMINOSITY: number; + readonly SVG_FEBLEND_MODE_MULTIPLY: number; + readonly SVG_FEBLEND_MODE_NORMAL: number; + readonly SVG_FEBLEND_MODE_OVERLAY: number; + readonly SVG_FEBLEND_MODE_SATURATION: number; + readonly SVG_FEBLEND_MODE_SCREEN: number; + readonly SVG_FEBLEND_MODE_SOFT_LIGHT: number; + readonly SVG_FEBLEND_MODE_UNKNOWN: number; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var SVGFEBlendElement: { prototype: SVGFEBlendElement; new(): SVGFEBlendElement; - SVG_FEBLEND_MODE_COLOR: number; - SVG_FEBLEND_MODE_COLOR_BURN: number; - SVG_FEBLEND_MODE_COLOR_DODGE: number; - SVG_FEBLEND_MODE_DARKEN: number; - SVG_FEBLEND_MODE_DIFFERENCE: number; - SVG_FEBLEND_MODE_EXCLUSION: number; - SVG_FEBLEND_MODE_HARD_LIGHT: number; - SVG_FEBLEND_MODE_HUE: number; - SVG_FEBLEND_MODE_LIGHTEN: number; - SVG_FEBLEND_MODE_LUMINOSITY: number; - SVG_FEBLEND_MODE_MULTIPLY: number; - SVG_FEBLEND_MODE_NORMAL: number; - SVG_FEBLEND_MODE_OVERLAY: number; - SVG_FEBLEND_MODE_SATURATION: number; - SVG_FEBLEND_MODE_SCREEN: number; - SVG_FEBLEND_MODE_SOFT_LIGHT: number; - SVG_FEBLEND_MODE_UNKNOWN: number; + readonly SVG_FEBLEND_MODE_COLOR: number; + readonly SVG_FEBLEND_MODE_COLOR_BURN: number; + readonly SVG_FEBLEND_MODE_COLOR_DODGE: number; + readonly SVG_FEBLEND_MODE_DARKEN: number; + readonly SVG_FEBLEND_MODE_DIFFERENCE: number; + readonly SVG_FEBLEND_MODE_EXCLUSION: number; + readonly SVG_FEBLEND_MODE_HARD_LIGHT: number; + readonly SVG_FEBLEND_MODE_HUE: number; + readonly SVG_FEBLEND_MODE_LIGHTEN: number; + readonly SVG_FEBLEND_MODE_LUMINOSITY: number; + readonly SVG_FEBLEND_MODE_MULTIPLY: number; + readonly SVG_FEBLEND_MODE_NORMAL: number; + readonly SVG_FEBLEND_MODE_OVERLAY: number; + readonly SVG_FEBLEND_MODE_SATURATION: number; + readonly SVG_FEBLEND_MODE_SCREEN: number; + readonly SVG_FEBLEND_MODE_SOFT_LIGHT: number; + readonly SVG_FEBLEND_MODE_UNKNOWN: number; } interface SVGFEColorMatrixElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - in1: SVGAnimatedString; - type: SVGAnimatedEnumeration; - values: SVGAnimatedNumberList; - SVG_FECOLORMATRIX_TYPE_HUEROTATE: number; - SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA: number; - SVG_FECOLORMATRIX_TYPE_MATRIX: number; - SVG_FECOLORMATRIX_TYPE_SATURATE: number; - SVG_FECOLORMATRIX_TYPE_UNKNOWN: number; + readonly in1: SVGAnimatedString; + readonly type: SVGAnimatedEnumeration; + readonly values: SVGAnimatedNumberList; + readonly SVG_FECOLORMATRIX_TYPE_HUEROTATE: number; + readonly SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA: number; + readonly SVG_FECOLORMATRIX_TYPE_MATRIX: number; + readonly SVG_FECOLORMATRIX_TYPE_SATURATE: number; + readonly SVG_FECOLORMATRIX_TYPE_UNKNOWN: number; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var SVGFEColorMatrixElement: { prototype: SVGFEColorMatrixElement; new(): SVGFEColorMatrixElement; - SVG_FECOLORMATRIX_TYPE_HUEROTATE: number; - SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA: number; - SVG_FECOLORMATRIX_TYPE_MATRIX: number; - SVG_FECOLORMATRIX_TYPE_SATURATE: number; - SVG_FECOLORMATRIX_TYPE_UNKNOWN: number; + readonly SVG_FECOLORMATRIX_TYPE_HUEROTATE: number; + readonly SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA: number; + readonly SVG_FECOLORMATRIX_TYPE_MATRIX: number; + readonly SVG_FECOLORMATRIX_TYPE_SATURATE: number; + readonly SVG_FECOLORMATRIX_TYPE_UNKNOWN: number; } interface SVGFEComponentTransferElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - in1: SVGAnimatedString; + readonly in1: SVGAnimatedString; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -9100,70 +9931,70 @@ declare var SVGFEComponentTransferElement: { } interface SVGFECompositeElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - in1: SVGAnimatedString; - in2: SVGAnimatedString; - k1: SVGAnimatedNumber; - k2: SVGAnimatedNumber; - k3: SVGAnimatedNumber; - k4: SVGAnimatedNumber; - operator: SVGAnimatedEnumeration; - SVG_FECOMPOSITE_OPERATOR_ARITHMETIC: number; - SVG_FECOMPOSITE_OPERATOR_ATOP: number; - SVG_FECOMPOSITE_OPERATOR_IN: number; - SVG_FECOMPOSITE_OPERATOR_OUT: number; - SVG_FECOMPOSITE_OPERATOR_OVER: number; - SVG_FECOMPOSITE_OPERATOR_UNKNOWN: number; - SVG_FECOMPOSITE_OPERATOR_XOR: number; + readonly in1: SVGAnimatedString; + readonly in2: SVGAnimatedString; + readonly k1: SVGAnimatedNumber; + readonly k2: SVGAnimatedNumber; + readonly k3: SVGAnimatedNumber; + readonly k4: SVGAnimatedNumber; + readonly operator: SVGAnimatedEnumeration; + readonly SVG_FECOMPOSITE_OPERATOR_ARITHMETIC: number; + readonly SVG_FECOMPOSITE_OPERATOR_ATOP: number; + readonly SVG_FECOMPOSITE_OPERATOR_IN: number; + readonly SVG_FECOMPOSITE_OPERATOR_OUT: number; + readonly SVG_FECOMPOSITE_OPERATOR_OVER: number; + readonly SVG_FECOMPOSITE_OPERATOR_UNKNOWN: number; + readonly SVG_FECOMPOSITE_OPERATOR_XOR: number; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var SVGFECompositeElement: { prototype: SVGFECompositeElement; new(): SVGFECompositeElement; - SVG_FECOMPOSITE_OPERATOR_ARITHMETIC: number; - SVG_FECOMPOSITE_OPERATOR_ATOP: number; - SVG_FECOMPOSITE_OPERATOR_IN: number; - SVG_FECOMPOSITE_OPERATOR_OUT: number; - SVG_FECOMPOSITE_OPERATOR_OVER: number; - SVG_FECOMPOSITE_OPERATOR_UNKNOWN: number; - SVG_FECOMPOSITE_OPERATOR_XOR: number; + readonly SVG_FECOMPOSITE_OPERATOR_ARITHMETIC: number; + readonly SVG_FECOMPOSITE_OPERATOR_ATOP: number; + readonly SVG_FECOMPOSITE_OPERATOR_IN: number; + readonly SVG_FECOMPOSITE_OPERATOR_OUT: number; + readonly SVG_FECOMPOSITE_OPERATOR_OVER: number; + readonly SVG_FECOMPOSITE_OPERATOR_UNKNOWN: number; + readonly SVG_FECOMPOSITE_OPERATOR_XOR: number; } interface SVGFEConvolveMatrixElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - bias: SVGAnimatedNumber; - divisor: SVGAnimatedNumber; - edgeMode: SVGAnimatedEnumeration; - in1: SVGAnimatedString; - kernelMatrix: SVGAnimatedNumberList; - kernelUnitLengthX: SVGAnimatedNumber; - kernelUnitLengthY: SVGAnimatedNumber; - orderX: SVGAnimatedInteger; - orderY: SVGAnimatedInteger; - preserveAlpha: SVGAnimatedBoolean; - targetX: SVGAnimatedInteger; - targetY: SVGAnimatedInteger; - SVG_EDGEMODE_DUPLICATE: number; - SVG_EDGEMODE_NONE: number; - SVG_EDGEMODE_UNKNOWN: number; - SVG_EDGEMODE_WRAP: number; + readonly bias: SVGAnimatedNumber; + readonly divisor: SVGAnimatedNumber; + readonly edgeMode: SVGAnimatedEnumeration; + readonly in1: SVGAnimatedString; + readonly kernelMatrix: SVGAnimatedNumberList; + readonly kernelUnitLengthX: SVGAnimatedNumber; + readonly kernelUnitLengthY: SVGAnimatedNumber; + readonly orderX: SVGAnimatedInteger; + readonly orderY: SVGAnimatedInteger; + readonly preserveAlpha: SVGAnimatedBoolean; + readonly targetX: SVGAnimatedInteger; + readonly targetY: SVGAnimatedInteger; + readonly SVG_EDGEMODE_DUPLICATE: number; + readonly SVG_EDGEMODE_NONE: number; + readonly SVG_EDGEMODE_UNKNOWN: number; + readonly SVG_EDGEMODE_WRAP: number; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var SVGFEConvolveMatrixElement: { prototype: SVGFEConvolveMatrixElement; new(): SVGFEConvolveMatrixElement; - SVG_EDGEMODE_DUPLICATE: number; - SVG_EDGEMODE_NONE: number; - SVG_EDGEMODE_UNKNOWN: number; - SVG_EDGEMODE_WRAP: number; + readonly SVG_EDGEMODE_DUPLICATE: number; + readonly SVG_EDGEMODE_NONE: number; + readonly SVG_EDGEMODE_UNKNOWN: number; + readonly SVG_EDGEMODE_WRAP: number; } interface SVGFEDiffuseLightingElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - diffuseConstant: SVGAnimatedNumber; - in1: SVGAnimatedString; - kernelUnitLengthX: SVGAnimatedNumber; - kernelUnitLengthY: SVGAnimatedNumber; - surfaceScale: SVGAnimatedNumber; + readonly diffuseConstant: SVGAnimatedNumber; + readonly in1: SVGAnimatedString; + readonly kernelUnitLengthX: SVGAnimatedNumber; + readonly kernelUnitLengthY: SVGAnimatedNumber; + readonly surfaceScale: SVGAnimatedNumber; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -9173,32 +10004,32 @@ declare var SVGFEDiffuseLightingElement: { } interface SVGFEDisplacementMapElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - in1: SVGAnimatedString; - in2: SVGAnimatedString; - scale: SVGAnimatedNumber; - xChannelSelector: SVGAnimatedEnumeration; - yChannelSelector: SVGAnimatedEnumeration; - SVG_CHANNEL_A: number; - SVG_CHANNEL_B: number; - SVG_CHANNEL_G: number; - SVG_CHANNEL_R: number; - SVG_CHANNEL_UNKNOWN: number; + readonly in1: SVGAnimatedString; + readonly in2: SVGAnimatedString; + readonly scale: SVGAnimatedNumber; + readonly xChannelSelector: SVGAnimatedEnumeration; + readonly yChannelSelector: SVGAnimatedEnumeration; + readonly SVG_CHANNEL_A: number; + readonly SVG_CHANNEL_B: number; + readonly SVG_CHANNEL_G: number; + readonly SVG_CHANNEL_R: number; + readonly SVG_CHANNEL_UNKNOWN: number; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var SVGFEDisplacementMapElement: { prototype: SVGFEDisplacementMapElement; new(): SVGFEDisplacementMapElement; - SVG_CHANNEL_A: number; - SVG_CHANNEL_B: number; - SVG_CHANNEL_G: number; - SVG_CHANNEL_R: number; - SVG_CHANNEL_UNKNOWN: number; + readonly SVG_CHANNEL_A: number; + readonly SVG_CHANNEL_B: number; + readonly SVG_CHANNEL_G: number; + readonly SVG_CHANNEL_R: number; + readonly SVG_CHANNEL_UNKNOWN: number; } interface SVGFEDistantLightElement extends SVGElement { - azimuth: SVGAnimatedNumber; - elevation: SVGAnimatedNumber; + readonly azimuth: SVGAnimatedNumber; + readonly elevation: SVGAnimatedNumber; } declare var SVGFEDistantLightElement: { @@ -9248,9 +10079,9 @@ declare var SVGFEFuncRElement: { } interface SVGFEGaussianBlurElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - in1: SVGAnimatedString; - stdDeviationX: SVGAnimatedNumber; - stdDeviationY: SVGAnimatedNumber; + readonly in1: SVGAnimatedString; + readonly stdDeviationX: SVGAnimatedNumber; + readonly stdDeviationY: SVGAnimatedNumber; setStdDeviation(stdDeviationX: number, stdDeviationY: number): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -9261,7 +10092,7 @@ declare var SVGFEGaussianBlurElement: { } interface SVGFEImageElement extends SVGElement, SVGFilterPrimitiveStandardAttributes, SVGLangSpace, SVGURIReference, SVGExternalResourcesRequired { - preserveAspectRatio: SVGAnimatedPreserveAspectRatio; + readonly preserveAspectRatio: SVGAnimatedPreserveAspectRatio; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -9280,7 +10111,7 @@ declare var SVGFEMergeElement: { } interface SVGFEMergeNodeElement extends SVGElement { - in1: SVGAnimatedString; + readonly in1: SVGAnimatedString; } declare var SVGFEMergeNodeElement: { @@ -9289,28 +10120,28 @@ declare var SVGFEMergeNodeElement: { } interface SVGFEMorphologyElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - in1: SVGAnimatedString; - operator: SVGAnimatedEnumeration; - radiusX: SVGAnimatedNumber; - radiusY: SVGAnimatedNumber; - SVG_MORPHOLOGY_OPERATOR_DILATE: number; - SVG_MORPHOLOGY_OPERATOR_ERODE: number; - SVG_MORPHOLOGY_OPERATOR_UNKNOWN: number; + readonly in1: SVGAnimatedString; + readonly operator: SVGAnimatedEnumeration; + readonly radiusX: SVGAnimatedNumber; + readonly radiusY: SVGAnimatedNumber; + readonly SVG_MORPHOLOGY_OPERATOR_DILATE: number; + readonly SVG_MORPHOLOGY_OPERATOR_ERODE: number; + readonly SVG_MORPHOLOGY_OPERATOR_UNKNOWN: number; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var SVGFEMorphologyElement: { prototype: SVGFEMorphologyElement; new(): SVGFEMorphologyElement; - SVG_MORPHOLOGY_OPERATOR_DILATE: number; - SVG_MORPHOLOGY_OPERATOR_ERODE: number; - SVG_MORPHOLOGY_OPERATOR_UNKNOWN: number; + readonly SVG_MORPHOLOGY_OPERATOR_DILATE: number; + readonly SVG_MORPHOLOGY_OPERATOR_ERODE: number; + readonly SVG_MORPHOLOGY_OPERATOR_UNKNOWN: number; } interface SVGFEOffsetElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - dx: SVGAnimatedNumber; - dy: SVGAnimatedNumber; - in1: SVGAnimatedString; + readonly dx: SVGAnimatedNumber; + readonly dy: SVGAnimatedNumber; + readonly in1: SVGAnimatedString; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -9320,9 +10151,9 @@ declare var SVGFEOffsetElement: { } interface SVGFEPointLightElement extends SVGElement { - x: SVGAnimatedNumber; - y: SVGAnimatedNumber; - z: SVGAnimatedNumber; + readonly x: SVGAnimatedNumber; + readonly y: SVGAnimatedNumber; + readonly z: SVGAnimatedNumber; } declare var SVGFEPointLightElement: { @@ -9331,12 +10162,12 @@ declare var SVGFEPointLightElement: { } interface SVGFESpecularLightingElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - in1: SVGAnimatedString; - kernelUnitLengthX: SVGAnimatedNumber; - kernelUnitLengthY: SVGAnimatedNumber; - specularConstant: SVGAnimatedNumber; - specularExponent: SVGAnimatedNumber; - surfaceScale: SVGAnimatedNumber; + readonly in1: SVGAnimatedString; + readonly kernelUnitLengthX: SVGAnimatedNumber; + readonly kernelUnitLengthY: SVGAnimatedNumber; + readonly specularConstant: SVGAnimatedNumber; + readonly specularExponent: SVGAnimatedNumber; + readonly surfaceScale: SVGAnimatedNumber; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -9346,14 +10177,14 @@ declare var SVGFESpecularLightingElement: { } interface SVGFESpotLightElement extends SVGElement { - limitingConeAngle: SVGAnimatedNumber; - pointsAtX: SVGAnimatedNumber; - pointsAtY: SVGAnimatedNumber; - pointsAtZ: SVGAnimatedNumber; - specularExponent: SVGAnimatedNumber; - x: SVGAnimatedNumber; - y: SVGAnimatedNumber; - z: SVGAnimatedNumber; + readonly limitingConeAngle: SVGAnimatedNumber; + readonly pointsAtX: SVGAnimatedNumber; + readonly pointsAtY: SVGAnimatedNumber; + readonly pointsAtZ: SVGAnimatedNumber; + readonly specularExponent: SVGAnimatedNumber; + readonly x: SVGAnimatedNumber; + readonly y: SVGAnimatedNumber; + readonly z: SVGAnimatedNumber; } declare var SVGFESpotLightElement: { @@ -9362,7 +10193,7 @@ declare var SVGFESpotLightElement: { } interface SVGFETileElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - in1: SVGAnimatedString; + readonly in1: SVGAnimatedString; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -9372,41 +10203,41 @@ declare var SVGFETileElement: { } interface SVGFETurbulenceElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - baseFrequencyX: SVGAnimatedNumber; - baseFrequencyY: SVGAnimatedNumber; - numOctaves: SVGAnimatedInteger; - seed: SVGAnimatedNumber; - stitchTiles: SVGAnimatedEnumeration; - type: SVGAnimatedEnumeration; - SVG_STITCHTYPE_NOSTITCH: number; - SVG_STITCHTYPE_STITCH: number; - SVG_STITCHTYPE_UNKNOWN: number; - SVG_TURBULENCE_TYPE_FRACTALNOISE: number; - SVG_TURBULENCE_TYPE_TURBULENCE: number; - SVG_TURBULENCE_TYPE_UNKNOWN: number; + readonly baseFrequencyX: SVGAnimatedNumber; + readonly baseFrequencyY: SVGAnimatedNumber; + readonly numOctaves: SVGAnimatedInteger; + readonly seed: SVGAnimatedNumber; + readonly stitchTiles: SVGAnimatedEnumeration; + readonly type: SVGAnimatedEnumeration; + readonly SVG_STITCHTYPE_NOSTITCH: number; + readonly SVG_STITCHTYPE_STITCH: number; + readonly SVG_STITCHTYPE_UNKNOWN: number; + readonly SVG_TURBULENCE_TYPE_FRACTALNOISE: number; + readonly SVG_TURBULENCE_TYPE_TURBULENCE: number; + readonly SVG_TURBULENCE_TYPE_UNKNOWN: number; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var SVGFETurbulenceElement: { prototype: SVGFETurbulenceElement; new(): SVGFETurbulenceElement; - SVG_STITCHTYPE_NOSTITCH: number; - SVG_STITCHTYPE_STITCH: number; - SVG_STITCHTYPE_UNKNOWN: number; - SVG_TURBULENCE_TYPE_FRACTALNOISE: number; - SVG_TURBULENCE_TYPE_TURBULENCE: number; - SVG_TURBULENCE_TYPE_UNKNOWN: number; + readonly SVG_STITCHTYPE_NOSTITCH: number; + readonly SVG_STITCHTYPE_STITCH: number; + readonly SVG_STITCHTYPE_UNKNOWN: number; + readonly SVG_TURBULENCE_TYPE_FRACTALNOISE: number; + readonly SVG_TURBULENCE_TYPE_TURBULENCE: number; + readonly SVG_TURBULENCE_TYPE_UNKNOWN: number; } interface SVGFilterElement extends SVGElement, SVGUnitTypes, SVGStylable, SVGLangSpace, SVGURIReference, SVGExternalResourcesRequired { - filterResX: SVGAnimatedInteger; - filterResY: SVGAnimatedInteger; - filterUnits: SVGAnimatedEnumeration; - height: SVGAnimatedLength; - primitiveUnits: SVGAnimatedEnumeration; - width: SVGAnimatedLength; - x: SVGAnimatedLength; - y: SVGAnimatedLength; + readonly filterResX: SVGAnimatedInteger; + readonly filterResY: SVGAnimatedInteger; + readonly filterUnits: SVGAnimatedEnumeration; + readonly height: SVGAnimatedLength; + readonly primitiveUnits: SVGAnimatedEnumeration; + readonly width: SVGAnimatedLength; + readonly x: SVGAnimatedLength; + readonly y: SVGAnimatedLength; setFilterRes(filterResX: number, filterResY: number): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -9417,10 +10248,10 @@ declare var SVGFilterElement: { } interface SVGForeignObjectElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired { - height: SVGAnimatedLength; - width: SVGAnimatedLength; - x: SVGAnimatedLength; - y: SVGAnimatedLength; + readonly height: SVGAnimatedLength; + readonly width: SVGAnimatedLength; + readonly x: SVGAnimatedLength; + readonly y: SVGAnimatedLength; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -9439,31 +10270,31 @@ declare var SVGGElement: { } interface SVGGradientElement extends SVGElement, SVGStylable, SVGExternalResourcesRequired, SVGURIReference, SVGUnitTypes { - gradientTransform: SVGAnimatedTransformList; - gradientUnits: SVGAnimatedEnumeration; - spreadMethod: SVGAnimatedEnumeration; - SVG_SPREADMETHOD_PAD: number; - SVG_SPREADMETHOD_REFLECT: number; - SVG_SPREADMETHOD_REPEAT: number; - SVG_SPREADMETHOD_UNKNOWN: number; + readonly gradientTransform: SVGAnimatedTransformList; + readonly gradientUnits: SVGAnimatedEnumeration; + readonly spreadMethod: SVGAnimatedEnumeration; + readonly SVG_SPREADMETHOD_PAD: number; + readonly SVG_SPREADMETHOD_REFLECT: number; + readonly SVG_SPREADMETHOD_REPEAT: number; + readonly SVG_SPREADMETHOD_UNKNOWN: number; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var SVGGradientElement: { prototype: SVGGradientElement; new(): SVGGradientElement; - SVG_SPREADMETHOD_PAD: number; - SVG_SPREADMETHOD_REFLECT: number; - SVG_SPREADMETHOD_REPEAT: number; - SVG_SPREADMETHOD_UNKNOWN: number; + readonly SVG_SPREADMETHOD_PAD: number; + readonly SVG_SPREADMETHOD_REFLECT: number; + readonly SVG_SPREADMETHOD_REPEAT: number; + readonly SVG_SPREADMETHOD_UNKNOWN: number; } interface SVGImageElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired, SVGURIReference { - height: SVGAnimatedLength; - preserveAspectRatio: SVGAnimatedPreserveAspectRatio; - width: SVGAnimatedLength; - x: SVGAnimatedLength; - y: SVGAnimatedLength; + readonly height: SVGAnimatedLength; + readonly preserveAspectRatio: SVGAnimatedPreserveAspectRatio; + readonly width: SVGAnimatedLength; + readonly x: SVGAnimatedLength; + readonly y: SVGAnimatedLength; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -9473,43 +10304,43 @@ declare var SVGImageElement: { } interface SVGLength { - unitType: number; + readonly unitType: number; value: number; valueAsString: string; valueInSpecifiedUnits: number; convertToSpecifiedUnits(unitType: number): void; newValueSpecifiedUnits(unitType: number, valueInSpecifiedUnits: number): void; - SVG_LENGTHTYPE_CM: number; - SVG_LENGTHTYPE_EMS: number; - SVG_LENGTHTYPE_EXS: number; - SVG_LENGTHTYPE_IN: number; - SVG_LENGTHTYPE_MM: number; - SVG_LENGTHTYPE_NUMBER: number; - SVG_LENGTHTYPE_PC: number; - SVG_LENGTHTYPE_PERCENTAGE: number; - SVG_LENGTHTYPE_PT: number; - SVG_LENGTHTYPE_PX: number; - SVG_LENGTHTYPE_UNKNOWN: number; + readonly SVG_LENGTHTYPE_CM: number; + readonly SVG_LENGTHTYPE_EMS: number; + readonly SVG_LENGTHTYPE_EXS: number; + readonly SVG_LENGTHTYPE_IN: number; + readonly SVG_LENGTHTYPE_MM: number; + readonly SVG_LENGTHTYPE_NUMBER: number; + readonly SVG_LENGTHTYPE_PC: number; + readonly SVG_LENGTHTYPE_PERCENTAGE: number; + readonly SVG_LENGTHTYPE_PT: number; + readonly SVG_LENGTHTYPE_PX: number; + readonly SVG_LENGTHTYPE_UNKNOWN: number; } declare var SVGLength: { prototype: SVGLength; new(): SVGLength; - SVG_LENGTHTYPE_CM: number; - SVG_LENGTHTYPE_EMS: number; - SVG_LENGTHTYPE_EXS: number; - SVG_LENGTHTYPE_IN: number; - SVG_LENGTHTYPE_MM: number; - SVG_LENGTHTYPE_NUMBER: number; - SVG_LENGTHTYPE_PC: number; - SVG_LENGTHTYPE_PERCENTAGE: number; - SVG_LENGTHTYPE_PT: number; - SVG_LENGTHTYPE_PX: number; - SVG_LENGTHTYPE_UNKNOWN: number; + readonly SVG_LENGTHTYPE_CM: number; + readonly SVG_LENGTHTYPE_EMS: number; + readonly SVG_LENGTHTYPE_EXS: number; + readonly SVG_LENGTHTYPE_IN: number; + readonly SVG_LENGTHTYPE_MM: number; + readonly SVG_LENGTHTYPE_NUMBER: number; + readonly SVG_LENGTHTYPE_PC: number; + readonly SVG_LENGTHTYPE_PERCENTAGE: number; + readonly SVG_LENGTHTYPE_PT: number; + readonly SVG_LENGTHTYPE_PX: number; + readonly SVG_LENGTHTYPE_UNKNOWN: number; } interface SVGLengthList { - numberOfItems: number; + readonly numberOfItems: number; appendItem(newItem: SVGLength): SVGLength; clear(): void; getItem(index: number): SVGLength; @@ -9525,10 +10356,10 @@ declare var SVGLengthList: { } interface SVGLineElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired { - x1: SVGAnimatedLength; - x2: SVGAnimatedLength; - y1: SVGAnimatedLength; - y2: SVGAnimatedLength; + readonly x1: SVGAnimatedLength; + readonly x2: SVGAnimatedLength; + readonly y1: SVGAnimatedLength; + readonly y2: SVGAnimatedLength; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -9538,10 +10369,10 @@ declare var SVGLineElement: { } interface SVGLinearGradientElement extends SVGGradientElement { - x1: SVGAnimatedLength; - x2: SVGAnimatedLength; - y1: SVGAnimatedLength; - y2: SVGAnimatedLength; + readonly x1: SVGAnimatedLength; + readonly x2: SVGAnimatedLength; + readonly y1: SVGAnimatedLength; + readonly y2: SVGAnimatedLength; } declare var SVGLinearGradientElement: { @@ -9550,42 +10381,42 @@ declare var SVGLinearGradientElement: { } interface SVGMarkerElement extends SVGElement, SVGStylable, SVGLangSpace, SVGExternalResourcesRequired, SVGFitToViewBox { - markerHeight: SVGAnimatedLength; - markerUnits: SVGAnimatedEnumeration; - markerWidth: SVGAnimatedLength; - orientAngle: SVGAnimatedAngle; - orientType: SVGAnimatedEnumeration; - refX: SVGAnimatedLength; - refY: SVGAnimatedLength; + readonly markerHeight: SVGAnimatedLength; + readonly markerUnits: SVGAnimatedEnumeration; + readonly markerWidth: SVGAnimatedLength; + readonly orientAngle: SVGAnimatedAngle; + readonly orientType: SVGAnimatedEnumeration; + readonly refX: SVGAnimatedLength; + readonly refY: SVGAnimatedLength; setOrientToAngle(angle: SVGAngle): void; setOrientToAuto(): void; - SVG_MARKERUNITS_STROKEWIDTH: number; - SVG_MARKERUNITS_UNKNOWN: number; - SVG_MARKERUNITS_USERSPACEONUSE: number; - SVG_MARKER_ORIENT_ANGLE: number; - SVG_MARKER_ORIENT_AUTO: number; - SVG_MARKER_ORIENT_UNKNOWN: number; + readonly SVG_MARKERUNITS_STROKEWIDTH: number; + readonly SVG_MARKERUNITS_UNKNOWN: number; + readonly SVG_MARKERUNITS_USERSPACEONUSE: number; + readonly SVG_MARKER_ORIENT_ANGLE: number; + readonly SVG_MARKER_ORIENT_AUTO: number; + readonly SVG_MARKER_ORIENT_UNKNOWN: number; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var SVGMarkerElement: { prototype: SVGMarkerElement; new(): SVGMarkerElement; - SVG_MARKERUNITS_STROKEWIDTH: number; - SVG_MARKERUNITS_UNKNOWN: number; - SVG_MARKERUNITS_USERSPACEONUSE: number; - SVG_MARKER_ORIENT_ANGLE: number; - SVG_MARKER_ORIENT_AUTO: number; - SVG_MARKER_ORIENT_UNKNOWN: number; + readonly SVG_MARKERUNITS_STROKEWIDTH: number; + readonly SVG_MARKERUNITS_UNKNOWN: number; + readonly SVG_MARKERUNITS_USERSPACEONUSE: number; + readonly SVG_MARKER_ORIENT_ANGLE: number; + readonly SVG_MARKER_ORIENT_AUTO: number; + readonly SVG_MARKER_ORIENT_UNKNOWN: number; } interface SVGMaskElement extends SVGElement, SVGStylable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired, SVGUnitTypes { - height: SVGAnimatedLength; - maskContentUnits: SVGAnimatedEnumeration; - maskUnits: SVGAnimatedEnumeration; - width: SVGAnimatedLength; - x: SVGAnimatedLength; - y: SVGAnimatedLength; + readonly height: SVGAnimatedLength; + readonly maskContentUnits: SVGAnimatedEnumeration; + readonly maskUnits: SVGAnimatedEnumeration; + readonly width: SVGAnimatedLength; + readonly x: SVGAnimatedLength; + readonly y: SVGAnimatedLength; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -9637,7 +10468,7 @@ declare var SVGNumber: { } interface SVGNumberList { - numberOfItems: number; + readonly numberOfItems: number; appendItem(newItem: SVGNumber): SVGNumber; clear(): void; getItem(index: number): SVGNumber; @@ -9684,53 +10515,53 @@ declare var SVGPathElement: { } interface SVGPathSeg { - pathSegType: number; - pathSegTypeAsLetter: string; - PATHSEG_ARC_ABS: number; - PATHSEG_ARC_REL: number; - PATHSEG_CLOSEPATH: number; - PATHSEG_CURVETO_CUBIC_ABS: number; - PATHSEG_CURVETO_CUBIC_REL: number; - PATHSEG_CURVETO_CUBIC_SMOOTH_ABS: number; - PATHSEG_CURVETO_CUBIC_SMOOTH_REL: number; - PATHSEG_CURVETO_QUADRATIC_ABS: number; - PATHSEG_CURVETO_QUADRATIC_REL: number; - PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS: number; - PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL: number; - PATHSEG_LINETO_ABS: number; - PATHSEG_LINETO_HORIZONTAL_ABS: number; - PATHSEG_LINETO_HORIZONTAL_REL: number; - PATHSEG_LINETO_REL: number; - PATHSEG_LINETO_VERTICAL_ABS: number; - PATHSEG_LINETO_VERTICAL_REL: number; - PATHSEG_MOVETO_ABS: number; - PATHSEG_MOVETO_REL: number; - PATHSEG_UNKNOWN: number; + readonly pathSegType: number; + readonly pathSegTypeAsLetter: string; + readonly PATHSEG_ARC_ABS: number; + readonly PATHSEG_ARC_REL: number; + readonly PATHSEG_CLOSEPATH: number; + readonly PATHSEG_CURVETO_CUBIC_ABS: number; + readonly PATHSEG_CURVETO_CUBIC_REL: number; + readonly PATHSEG_CURVETO_CUBIC_SMOOTH_ABS: number; + readonly PATHSEG_CURVETO_CUBIC_SMOOTH_REL: number; + readonly PATHSEG_CURVETO_QUADRATIC_ABS: number; + readonly PATHSEG_CURVETO_QUADRATIC_REL: number; + readonly PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS: number; + readonly PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL: number; + readonly PATHSEG_LINETO_ABS: number; + readonly PATHSEG_LINETO_HORIZONTAL_ABS: number; + readonly PATHSEG_LINETO_HORIZONTAL_REL: number; + readonly PATHSEG_LINETO_REL: number; + readonly PATHSEG_LINETO_VERTICAL_ABS: number; + readonly PATHSEG_LINETO_VERTICAL_REL: number; + readonly PATHSEG_MOVETO_ABS: number; + readonly PATHSEG_MOVETO_REL: number; + readonly PATHSEG_UNKNOWN: number; } declare var SVGPathSeg: { prototype: SVGPathSeg; new(): SVGPathSeg; - PATHSEG_ARC_ABS: number; - PATHSEG_ARC_REL: number; - PATHSEG_CLOSEPATH: number; - PATHSEG_CURVETO_CUBIC_ABS: number; - PATHSEG_CURVETO_CUBIC_REL: number; - PATHSEG_CURVETO_CUBIC_SMOOTH_ABS: number; - PATHSEG_CURVETO_CUBIC_SMOOTH_REL: number; - PATHSEG_CURVETO_QUADRATIC_ABS: number; - PATHSEG_CURVETO_QUADRATIC_REL: number; - PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS: number; - PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL: number; - PATHSEG_LINETO_ABS: number; - PATHSEG_LINETO_HORIZONTAL_ABS: number; - PATHSEG_LINETO_HORIZONTAL_REL: number; - PATHSEG_LINETO_REL: number; - PATHSEG_LINETO_VERTICAL_ABS: number; - PATHSEG_LINETO_VERTICAL_REL: number; - PATHSEG_MOVETO_ABS: number; - PATHSEG_MOVETO_REL: number; - PATHSEG_UNKNOWN: number; + readonly PATHSEG_ARC_ABS: number; + readonly PATHSEG_ARC_REL: number; + readonly PATHSEG_CLOSEPATH: number; + readonly PATHSEG_CURVETO_CUBIC_ABS: number; + readonly PATHSEG_CURVETO_CUBIC_REL: number; + readonly PATHSEG_CURVETO_CUBIC_SMOOTH_ABS: number; + readonly PATHSEG_CURVETO_CUBIC_SMOOTH_REL: number; + readonly PATHSEG_CURVETO_QUADRATIC_ABS: number; + readonly PATHSEG_CURVETO_QUADRATIC_REL: number; + readonly PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS: number; + readonly PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL: number; + readonly PATHSEG_LINETO_ABS: number; + readonly PATHSEG_LINETO_HORIZONTAL_ABS: number; + readonly PATHSEG_LINETO_HORIZONTAL_REL: number; + readonly PATHSEG_LINETO_REL: number; + readonly PATHSEG_LINETO_VERTICAL_ABS: number; + readonly PATHSEG_LINETO_VERTICAL_REL: number; + readonly PATHSEG_MOVETO_ABS: number; + readonly PATHSEG_MOVETO_REL: number; + readonly PATHSEG_UNKNOWN: number; } interface SVGPathSegArcAbs extends SVGPathSeg { @@ -9924,7 +10755,7 @@ declare var SVGPathSegLinetoVerticalRel: { } interface SVGPathSegList { - numberOfItems: number; + readonly numberOfItems: number; appendItem(newItem: SVGPathSeg): SVGPathSeg; clear(): void; getItem(index: number): SVGPathSeg; @@ -9960,13 +10791,13 @@ declare var SVGPathSegMovetoRel: { } interface SVGPatternElement extends SVGElement, SVGStylable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired, SVGFitToViewBox, SVGURIReference, SVGUnitTypes { - height: SVGAnimatedLength; - patternContentUnits: SVGAnimatedEnumeration; - patternTransform: SVGAnimatedTransformList; - patternUnits: SVGAnimatedEnumeration; - width: SVGAnimatedLength; - x: SVGAnimatedLength; - y: SVGAnimatedLength; + readonly height: SVGAnimatedLength; + readonly patternContentUnits: SVGAnimatedEnumeration; + readonly patternTransform: SVGAnimatedTransformList; + readonly patternUnits: SVGAnimatedEnumeration; + readonly width: SVGAnimatedLength; + readonly x: SVGAnimatedLength; + readonly y: SVGAnimatedLength; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -9987,7 +10818,7 @@ declare var SVGPoint: { } interface SVGPointList { - numberOfItems: number; + readonly numberOfItems: number; appendItem(newItem: SVGPoint): SVGPoint; clear(): void; getItem(index: number): SVGPoint; @@ -10023,47 +10854,47 @@ declare var SVGPolylineElement: { interface SVGPreserveAspectRatio { align: number; meetOrSlice: number; - SVG_MEETORSLICE_MEET: number; - SVG_MEETORSLICE_SLICE: number; - SVG_MEETORSLICE_UNKNOWN: number; - SVG_PRESERVEASPECTRATIO_NONE: number; - SVG_PRESERVEASPECTRATIO_UNKNOWN: number; - SVG_PRESERVEASPECTRATIO_XMAXYMAX: number; - SVG_PRESERVEASPECTRATIO_XMAXYMID: number; - SVG_PRESERVEASPECTRATIO_XMAXYMIN: number; - SVG_PRESERVEASPECTRATIO_XMIDYMAX: number; - SVG_PRESERVEASPECTRATIO_XMIDYMID: number; - SVG_PRESERVEASPECTRATIO_XMIDYMIN: number; - SVG_PRESERVEASPECTRATIO_XMINYMAX: number; - SVG_PRESERVEASPECTRATIO_XMINYMID: number; - SVG_PRESERVEASPECTRATIO_XMINYMIN: number; + readonly SVG_MEETORSLICE_MEET: number; + readonly SVG_MEETORSLICE_SLICE: number; + readonly SVG_MEETORSLICE_UNKNOWN: number; + readonly SVG_PRESERVEASPECTRATIO_NONE: number; + readonly SVG_PRESERVEASPECTRATIO_UNKNOWN: number; + readonly SVG_PRESERVEASPECTRATIO_XMAXYMAX: number; + readonly SVG_PRESERVEASPECTRATIO_XMAXYMID: number; + readonly SVG_PRESERVEASPECTRATIO_XMAXYMIN: number; + readonly SVG_PRESERVEASPECTRATIO_XMIDYMAX: number; + readonly SVG_PRESERVEASPECTRATIO_XMIDYMID: number; + readonly SVG_PRESERVEASPECTRATIO_XMIDYMIN: number; + readonly SVG_PRESERVEASPECTRATIO_XMINYMAX: number; + readonly SVG_PRESERVEASPECTRATIO_XMINYMID: number; + readonly SVG_PRESERVEASPECTRATIO_XMINYMIN: number; } declare var SVGPreserveAspectRatio: { prototype: SVGPreserveAspectRatio; new(): SVGPreserveAspectRatio; - SVG_MEETORSLICE_MEET: number; - SVG_MEETORSLICE_SLICE: number; - SVG_MEETORSLICE_UNKNOWN: number; - SVG_PRESERVEASPECTRATIO_NONE: number; - SVG_PRESERVEASPECTRATIO_UNKNOWN: number; - SVG_PRESERVEASPECTRATIO_XMAXYMAX: number; - SVG_PRESERVEASPECTRATIO_XMAXYMID: number; - SVG_PRESERVEASPECTRATIO_XMAXYMIN: number; - SVG_PRESERVEASPECTRATIO_XMIDYMAX: number; - SVG_PRESERVEASPECTRATIO_XMIDYMID: number; - SVG_PRESERVEASPECTRATIO_XMIDYMIN: number; - SVG_PRESERVEASPECTRATIO_XMINYMAX: number; - SVG_PRESERVEASPECTRATIO_XMINYMID: number; - SVG_PRESERVEASPECTRATIO_XMINYMIN: number; + readonly SVG_MEETORSLICE_MEET: number; + readonly SVG_MEETORSLICE_SLICE: number; + readonly SVG_MEETORSLICE_UNKNOWN: number; + readonly SVG_PRESERVEASPECTRATIO_NONE: number; + readonly SVG_PRESERVEASPECTRATIO_UNKNOWN: number; + readonly SVG_PRESERVEASPECTRATIO_XMAXYMAX: number; + readonly SVG_PRESERVEASPECTRATIO_XMAXYMID: number; + readonly SVG_PRESERVEASPECTRATIO_XMAXYMIN: number; + readonly SVG_PRESERVEASPECTRATIO_XMIDYMAX: number; + readonly SVG_PRESERVEASPECTRATIO_XMIDYMID: number; + readonly SVG_PRESERVEASPECTRATIO_XMIDYMIN: number; + readonly SVG_PRESERVEASPECTRATIO_XMINYMAX: number; + readonly SVG_PRESERVEASPECTRATIO_XMINYMID: number; + readonly SVG_PRESERVEASPECTRATIO_XMINYMIN: number; } interface SVGRadialGradientElement extends SVGGradientElement { - cx: SVGAnimatedLength; - cy: SVGAnimatedLength; - fx: SVGAnimatedLength; - fy: SVGAnimatedLength; - r: SVGAnimatedLength; + readonly cx: SVGAnimatedLength; + readonly cy: SVGAnimatedLength; + readonly fx: SVGAnimatedLength; + readonly fy: SVGAnimatedLength; + readonly r: SVGAnimatedLength; } declare var SVGRadialGradientElement: { @@ -10084,12 +10915,12 @@ declare var SVGRect: { } interface SVGRectElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired { - height: SVGAnimatedLength; - rx: SVGAnimatedLength; - ry: SVGAnimatedLength; - width: SVGAnimatedLength; - x: SVGAnimatedLength; - y: SVGAnimatedLength; + readonly height: SVGAnimatedLength; + readonly rx: SVGAnimatedLength; + readonly ry: SVGAnimatedLength; + readonly width: SVGAnimatedLength; + readonly x: SVGAnimatedLength; + readonly y: SVGAnimatedLength; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -10102,22 +10933,22 @@ interface SVGSVGElement extends SVGElement, DocumentEvent, SVGLocatable, SVGTest contentScriptType: string; contentStyleType: string; currentScale: number; - currentTranslate: SVGPoint; - height: SVGAnimatedLength; + readonly currentTranslate: SVGPoint; + readonly height: SVGAnimatedLength; onabort: (ev: Event) => any; onerror: (ev: Event) => any; onresize: (ev: UIEvent) => any; onscroll: (ev: UIEvent) => any; onunload: (ev: Event) => any; onzoom: (ev: SVGZoomEvent) => any; - pixelUnitToMillimeterX: number; - pixelUnitToMillimeterY: number; - screenPixelToMillimeterX: number; - screenPixelToMillimeterY: number; - viewport: SVGRect; - width: SVGAnimatedLength; - x: SVGAnimatedLength; - y: SVGAnimatedLength; + readonly pixelUnitToMillimeterX: number; + readonly pixelUnitToMillimeterY: number; + readonly screenPixelToMillimeterX: number; + readonly screenPixelToMillimeterY: number; + readonly viewport: SVGRect; + readonly width: SVGAnimatedLength; + readonly x: SVGAnimatedLength; + readonly y: SVGAnimatedLength; checkEnclosure(element: SVGElement, rect: SVGRect): boolean; checkIntersection(element: SVGElement, rect: SVGRect): boolean; createSVGAngle(): SVGAngle; @@ -10133,8 +10964,8 @@ interface SVGSVGElement extends SVGElement, DocumentEvent, SVGLocatable, SVGTest getComputedStyle(elt: Element, pseudoElt?: string): CSSStyleDeclaration; getCurrentTime(): number; getElementById(elementId: string): Element; - getEnclosureList(rect: SVGRect, referenceElement: SVGElement): NodeList; - getIntersectionList(rect: SVGRect, referenceElement: SVGElement): NodeList; + getEnclosureList(rect: SVGRect, referenceElement: SVGElement): NodeListOf; + getIntersectionList(rect: SVGRect, referenceElement: SVGElement): NodeListOf; pauseAnimations(): void; setCurrentTime(seconds: number): void; suspendRedraw(maxWaitMilliseconds: number): number; @@ -10212,7 +11043,7 @@ declare var SVGScriptElement: { } interface SVGStopElement extends SVGElement, SVGStylable { - offset: SVGAnimatedNumber; + readonly offset: SVGAnimatedNumber; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -10222,7 +11053,7 @@ declare var SVGStopElement: { } interface SVGStringList { - numberOfItems: number; + readonly numberOfItems: number; appendItem(newItem: string): string; clear(): void; getItem(index: number): string; @@ -10238,6 +11069,7 @@ declare var SVGStringList: { } interface SVGStyleElement extends SVGElement, SVGLangSpace { + disabled: boolean; media: string; title: string; type: string; @@ -10276,8 +11108,8 @@ declare var SVGTSpanElement: { } interface SVGTextContentElement extends SVGElement, SVGStylable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired { - lengthAdjust: SVGAnimatedEnumeration; - textLength: SVGAnimatedLength; + readonly lengthAdjust: SVGAnimatedEnumeration; + readonly textLength: SVGAnimatedLength; getCharNumAtPosition(point: SVGPoint): number; getComputedTextLength(): number; getEndPositionOfChar(charnum: number): SVGPoint; @@ -10287,18 +11119,18 @@ interface SVGTextContentElement extends SVGElement, SVGStylable, SVGTests, SVGLa getStartPositionOfChar(charnum: number): SVGPoint; getSubStringLength(charnum: number, nchars: number): number; selectSubString(charnum: number, nchars: number): void; - LENGTHADJUST_SPACING: number; - LENGTHADJUST_SPACINGANDGLYPHS: number; - LENGTHADJUST_UNKNOWN: number; + readonly LENGTHADJUST_SPACING: number; + readonly LENGTHADJUST_SPACINGANDGLYPHS: number; + readonly LENGTHADJUST_UNKNOWN: number; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var SVGTextContentElement: { prototype: SVGTextContentElement; new(): SVGTextContentElement; - LENGTHADJUST_SPACING: number; - LENGTHADJUST_SPACINGANDGLYPHS: number; - LENGTHADJUST_UNKNOWN: number; + readonly LENGTHADJUST_SPACING: number; + readonly LENGTHADJUST_SPACINGANDGLYPHS: number; + readonly LENGTHADJUST_UNKNOWN: number; } interface SVGTextElement extends SVGTextPositioningElement, SVGTransformable { @@ -10311,35 +11143,35 @@ declare var SVGTextElement: { } interface SVGTextPathElement extends SVGTextContentElement, SVGURIReference { - method: SVGAnimatedEnumeration; - spacing: SVGAnimatedEnumeration; - startOffset: SVGAnimatedLength; - TEXTPATH_METHODTYPE_ALIGN: number; - TEXTPATH_METHODTYPE_STRETCH: number; - TEXTPATH_METHODTYPE_UNKNOWN: number; - TEXTPATH_SPACINGTYPE_AUTO: number; - TEXTPATH_SPACINGTYPE_EXACT: number; - TEXTPATH_SPACINGTYPE_UNKNOWN: number; + readonly method: SVGAnimatedEnumeration; + readonly spacing: SVGAnimatedEnumeration; + readonly startOffset: SVGAnimatedLength; + readonly TEXTPATH_METHODTYPE_ALIGN: number; + readonly TEXTPATH_METHODTYPE_STRETCH: number; + readonly TEXTPATH_METHODTYPE_UNKNOWN: number; + readonly TEXTPATH_SPACINGTYPE_AUTO: number; + readonly TEXTPATH_SPACINGTYPE_EXACT: number; + readonly TEXTPATH_SPACINGTYPE_UNKNOWN: number; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var SVGTextPathElement: { prototype: SVGTextPathElement; new(): SVGTextPathElement; - TEXTPATH_METHODTYPE_ALIGN: number; - TEXTPATH_METHODTYPE_STRETCH: number; - TEXTPATH_METHODTYPE_UNKNOWN: number; - TEXTPATH_SPACINGTYPE_AUTO: number; - TEXTPATH_SPACINGTYPE_EXACT: number; - TEXTPATH_SPACINGTYPE_UNKNOWN: number; + readonly TEXTPATH_METHODTYPE_ALIGN: number; + readonly TEXTPATH_METHODTYPE_STRETCH: number; + readonly TEXTPATH_METHODTYPE_UNKNOWN: number; + readonly TEXTPATH_SPACINGTYPE_AUTO: number; + readonly TEXTPATH_SPACINGTYPE_EXACT: number; + readonly TEXTPATH_SPACINGTYPE_UNKNOWN: number; } interface SVGTextPositioningElement extends SVGTextContentElement { - dx: SVGAnimatedLengthList; - dy: SVGAnimatedLengthList; - rotate: SVGAnimatedNumberList; - x: SVGAnimatedLengthList; - y: SVGAnimatedLengthList; + readonly dx: SVGAnimatedLengthList; + readonly dy: SVGAnimatedLengthList; + readonly rotate: SVGAnimatedNumberList; + readonly x: SVGAnimatedLengthList; + readonly y: SVGAnimatedLengthList; } declare var SVGTextPositioningElement: { @@ -10357,38 +11189,38 @@ declare var SVGTitleElement: { } interface SVGTransform { - angle: number; - matrix: SVGMatrix; - type: number; + readonly angle: number; + readonly matrix: SVGMatrix; + readonly type: number; setMatrix(matrix: SVGMatrix): void; setRotate(angle: number, cx: number, cy: number): void; setScale(sx: number, sy: number): void; setSkewX(angle: number): void; setSkewY(angle: number): void; setTranslate(tx: number, ty: number): void; - SVG_TRANSFORM_MATRIX: number; - SVG_TRANSFORM_ROTATE: number; - SVG_TRANSFORM_SCALE: number; - SVG_TRANSFORM_SKEWX: number; - SVG_TRANSFORM_SKEWY: number; - SVG_TRANSFORM_TRANSLATE: number; - SVG_TRANSFORM_UNKNOWN: number; + readonly SVG_TRANSFORM_MATRIX: number; + readonly SVG_TRANSFORM_ROTATE: number; + readonly SVG_TRANSFORM_SCALE: number; + readonly SVG_TRANSFORM_SKEWX: number; + readonly SVG_TRANSFORM_SKEWY: number; + readonly SVG_TRANSFORM_TRANSLATE: number; + readonly SVG_TRANSFORM_UNKNOWN: number; } declare var SVGTransform: { prototype: SVGTransform; new(): SVGTransform; - SVG_TRANSFORM_MATRIX: number; - SVG_TRANSFORM_ROTATE: number; - SVG_TRANSFORM_SCALE: number; - SVG_TRANSFORM_SKEWX: number; - SVG_TRANSFORM_SKEWY: number; - SVG_TRANSFORM_TRANSLATE: number; - SVG_TRANSFORM_UNKNOWN: number; + readonly SVG_TRANSFORM_MATRIX: number; + readonly SVG_TRANSFORM_ROTATE: number; + readonly SVG_TRANSFORM_SCALE: number; + readonly SVG_TRANSFORM_SKEWX: number; + readonly SVG_TRANSFORM_SKEWY: number; + readonly SVG_TRANSFORM_TRANSLATE: number; + readonly SVG_TRANSFORM_UNKNOWN: number; } interface SVGTransformList { - numberOfItems: number; + readonly numberOfItems: number; appendItem(newItem: SVGTransform): SVGTransform; clear(): void; consolidate(): SVGTransform; @@ -10406,19 +11238,19 @@ declare var SVGTransformList: { } interface SVGUnitTypes { - SVG_UNIT_TYPE_OBJECTBOUNDINGBOX: number; - SVG_UNIT_TYPE_UNKNOWN: number; - SVG_UNIT_TYPE_USERSPACEONUSE: number; + readonly SVG_UNIT_TYPE_OBJECTBOUNDINGBOX: number; + readonly SVG_UNIT_TYPE_UNKNOWN: number; + readonly SVG_UNIT_TYPE_USERSPACEONUSE: number; } declare var SVGUnitTypes: SVGUnitTypes; interface SVGUseElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired, SVGURIReference { - animatedInstanceRoot: SVGElementInstance; - height: SVGAnimatedLength; - instanceRoot: SVGElementInstance; - width: SVGAnimatedLength; - x: SVGAnimatedLength; - y: SVGAnimatedLength; + readonly animatedInstanceRoot: SVGElementInstance; + readonly height: SVGAnimatedLength; + readonly instanceRoot: SVGElementInstance; + readonly width: SVGAnimatedLength; + readonly x: SVGAnimatedLength; + readonly y: SVGAnimatedLength; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -10428,7 +11260,7 @@ declare var SVGUseElement: { } interface SVGViewElement extends SVGElement, SVGExternalResourcesRequired, SVGFitToViewBox, SVGZoomAndPan { - viewTarget: SVGStringList; + readonly viewTarget: SVGStringList; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -10438,21 +11270,21 @@ declare var SVGViewElement: { } interface SVGZoomAndPan { - zoomAndPan: number; + readonly zoomAndPan: number; } declare var SVGZoomAndPan: { - SVG_ZOOMANDPAN_DISABLE: number; - SVG_ZOOMANDPAN_MAGNIFY: number; - SVG_ZOOMANDPAN_UNKNOWN: number; + readonly SVG_ZOOMANDPAN_DISABLE: number; + readonly SVG_ZOOMANDPAN_MAGNIFY: number; + readonly SVG_ZOOMANDPAN_UNKNOWN: number; } interface SVGZoomEvent extends UIEvent { - newScale: number; - newTranslate: SVGPoint; - previousScale: number; - previousTranslate: SVGPoint; - zoomRectScreen: SVGRect; + readonly newScale: number; + readonly newTranslate: SVGPoint; + readonly previousScale: number; + readonly previousTranslate: SVGPoint; + readonly zoomRectScreen: SVGRect; } declare var SVGZoomEvent: { @@ -10461,22 +11293,22 @@ declare var SVGZoomEvent: { } interface Screen extends EventTarget { - availHeight: number; - availWidth: number; + readonly availHeight: number; + readonly availWidth: number; bufferDepth: number; - colorDepth: number; - deviceXDPI: number; - deviceYDPI: number; - fontSmoothingEnabled: boolean; - height: number; - logicalXDPI: number; - logicalYDPI: number; - msOrientation: string; + readonly colorDepth: number; + readonly deviceXDPI: number; + readonly deviceYDPI: number; + readonly fontSmoothingEnabled: boolean; + readonly height: number; + readonly logicalXDPI: number; + readonly logicalYDPI: number; + readonly msOrientation: string; onmsorientationchange: (ev: Event) => any; - pixelDepth: number; - systemXDPI: number; - systemYDPI: number; - width: number; + readonly pixelDepth: number; + readonly systemXDPI: number; + readonly systemYDPI: number; + readonly width: number; msLockOrientation(orientations: string | string[]): boolean; msUnlockOrientation(): void; addEventListener(type: "MSOrientationChange", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -10489,8 +11321,8 @@ declare var Screen: { } interface ScriptNotifyEvent extends Event { - callingUri: string; - value: string; + readonly callingUri: string; + readonly value: string; } declare var ScriptNotifyEvent: { @@ -10499,7 +11331,7 @@ declare var ScriptNotifyEvent: { } interface ScriptProcessorNode extends AudioNode { - bufferSize: number; + readonly bufferSize: number; onaudioprocess: (ev: AudioProcessingEvent) => any; addEventListener(type: "audioprocess", listener: (ev: AudioProcessingEvent) => any, useCapture?: boolean): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; @@ -10511,13 +11343,13 @@ declare var ScriptProcessorNode: { } interface Selection { - anchorNode: Node; - anchorOffset: number; - focusNode: Node; - focusOffset: number; - isCollapsed: boolean; - rangeCount: number; - type: string; + readonly anchorNode: Node; + readonly anchorOffset: number; + readonly focusNode: Node; + readonly focusOffset: number; + readonly isCollapsed: boolean; + readonly rangeCount: number; + readonly type: string; addRange(range: Range): void; collapse(parentNode: Node, offset: number): void; collapseToEnd(): void; @@ -10542,12 +11374,12 @@ declare var Selection: { interface SourceBuffer extends EventTarget { appendWindowEnd: number; appendWindowStart: number; - audioTracks: AudioTrackList; - buffered: TimeRanges; + readonly audioTracks: AudioTrackList; + readonly buffered: TimeRanges; mode: string; timestampOffset: number; - updating: boolean; - videoTracks: VideoTrackList; + readonly updating: boolean; + readonly videoTracks: VideoTrackList; abort(): void; appendBuffer(data: ArrayBuffer | ArrayBufferView): void; appendStream(stream: MSStream, maxSize?: number): void; @@ -10560,7 +11392,7 @@ declare var SourceBuffer: { } interface SourceBufferList extends EventTarget { - length: number; + readonly length: number; item(index: number): SourceBuffer; [index: number]: SourceBuffer; } @@ -10571,7 +11403,7 @@ declare var SourceBufferList: { } interface StereoPannerNode extends AudioNode { - pan: AudioParam; + readonly pan: AudioParam; } declare var StereoPannerNode: { @@ -10580,9 +11412,9 @@ declare var StereoPannerNode: { } interface Storage { - length: number; + readonly length: number; clear(): void; - getItem(key: string): any; + getItem(key: string): string; key(index: number): string; removeItem(key: string): void; setItem(key: string, data: string): void; @@ -10596,7 +11428,7 @@ declare var Storage: { } interface StorageEvent extends Event { - url: string; + readonly url: string; key?: string; oldValue?: string; newValue?: string; @@ -10609,7 +11441,7 @@ declare var StorageEvent: { } interface StyleMedia { - type: string; + readonly type: string; matchMedium(mediaquery: string): boolean; } @@ -10620,12 +11452,12 @@ declare var StyleMedia: { interface StyleSheet { disabled: boolean; - href: string; - media: MediaList; - ownerNode: Node; - parentStyleSheet: StyleSheet; - title: string; - type: string; + readonly href: string; + readonly media: MediaList; + readonly ownerNode: Node; + readonly parentStyleSheet: StyleSheet; + readonly title: string; + readonly type: string; } declare var StyleSheet: { @@ -10634,7 +11466,7 @@ declare var StyleSheet: { } interface StyleSheetList { - length: number; + readonly length: number; item(index?: number): StyleSheet; [index: number]: StyleSheet; } @@ -10645,7 +11477,7 @@ declare var StyleSheetList: { } interface StyleSheetPageList { - length: number; + readonly length: number; item(index: number): CSSPageRule; [index: number]: CSSPageRule; } @@ -10656,18 +11488,18 @@ declare var StyleSheetPageList: { } interface SubtleCrypto { - decrypt(algorithm: string | Algorithm, key: CryptoKey, data: ArrayBufferView): any; - deriveBits(algorithm: string | Algorithm, baseKey: CryptoKey, length: number): any; - deriveKey(algorithm: string | Algorithm, baseKey: CryptoKey, derivedKeyType: string | Algorithm, extractable: boolean, keyUsages: string[]): any; - digest(algorithm: string | Algorithm, data: ArrayBufferView): any; - encrypt(algorithm: string | Algorithm, key: CryptoKey, data: ArrayBufferView): any; - exportKey(format: string, key: CryptoKey): any; - generateKey(algorithm: string | Algorithm, extractable: boolean, keyUsages: string[]): any; - importKey(format: string, keyData: ArrayBufferView, algorithm: string | Algorithm, extractable: boolean, keyUsages: string[]): any; - sign(algorithm: string | Algorithm, key: CryptoKey, data: ArrayBufferView): any; - unwrapKey(format: string, wrappedKey: ArrayBufferView, unwrappingKey: CryptoKey, unwrapAlgorithm: string | Algorithm, unwrappedKeyAlgorithm: string | Algorithm, extractable: boolean, keyUsages: string[]): any; - verify(algorithm: string | Algorithm, key: CryptoKey, signature: ArrayBufferView, data: ArrayBufferView): any; - wrapKey(format: string, key: CryptoKey, wrappingKey: CryptoKey, wrapAlgorithm: string | Algorithm): any; + decrypt(algorithm: string | Algorithm, key: CryptoKey, data: ArrayBufferView): PromiseLike; + deriveBits(algorithm: string | Algorithm, baseKey: CryptoKey, length: number): PromiseLike; + deriveKey(algorithm: string | Algorithm, baseKey: CryptoKey, derivedKeyType: string | Algorithm, extractable: boolean, keyUsages: string[]): PromiseLike; + digest(algorithm: string | Algorithm, data: ArrayBufferView): PromiseLike; + encrypt(algorithm: string | Algorithm, key: CryptoKey, data: ArrayBufferView): PromiseLike; + exportKey(format: string, key: CryptoKey): PromiseLike; + generateKey(algorithm: string | Algorithm, extractable: boolean, keyUsages: string[]): PromiseLike; + importKey(format: string, keyData: ArrayBufferView, algorithm: string | Algorithm, extractable: boolean, keyUsages: string[]): PromiseLike; + sign(algorithm: string | Algorithm, key: CryptoKey, data: ArrayBufferView): PromiseLike; + unwrapKey(format: string, wrappedKey: ArrayBufferView, unwrappingKey: CryptoKey, unwrapAlgorithm: string | Algorithm, unwrappedKeyAlgorithm: string | Algorithm, extractable: boolean, keyUsages: string[]): PromiseLike; + verify(algorithm: string | Algorithm, key: CryptoKey, signature: ArrayBufferView, data: ArrayBufferView): PromiseLike; + wrapKey(format: string, key: CryptoKey, wrappingKey: CryptoKey, wrapAlgorithm: string | Algorithm): PromiseLike; } declare var SubtleCrypto: { @@ -10676,8 +11508,7 @@ declare var SubtleCrypto: { } interface Text extends CharacterData { - wholeText: string; - replaceWholeText(content: string): Text; + readonly wholeText: string; splitText(offset: number): Text; } @@ -10687,39 +11518,39 @@ declare var Text: { } interface TextEvent extends UIEvent { - data: string; - inputMethod: number; - locale: string; + readonly data: string; + readonly inputMethod: number; + readonly locale: string; initTextEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, dataArg: string, inputMethod: number, locale: string): void; - DOM_INPUT_METHOD_DROP: number; - DOM_INPUT_METHOD_HANDWRITING: number; - DOM_INPUT_METHOD_IME: number; - DOM_INPUT_METHOD_KEYBOARD: number; - DOM_INPUT_METHOD_MULTIMODAL: number; - DOM_INPUT_METHOD_OPTION: number; - DOM_INPUT_METHOD_PASTE: number; - DOM_INPUT_METHOD_SCRIPT: number; - DOM_INPUT_METHOD_UNKNOWN: number; - DOM_INPUT_METHOD_VOICE: number; + readonly DOM_INPUT_METHOD_DROP: number; + readonly DOM_INPUT_METHOD_HANDWRITING: number; + readonly DOM_INPUT_METHOD_IME: number; + readonly DOM_INPUT_METHOD_KEYBOARD: number; + readonly DOM_INPUT_METHOD_MULTIMODAL: number; + readonly DOM_INPUT_METHOD_OPTION: number; + readonly DOM_INPUT_METHOD_PASTE: number; + readonly DOM_INPUT_METHOD_SCRIPT: number; + readonly DOM_INPUT_METHOD_UNKNOWN: number; + readonly DOM_INPUT_METHOD_VOICE: number; } declare var TextEvent: { prototype: TextEvent; new(): TextEvent; - DOM_INPUT_METHOD_DROP: number; - DOM_INPUT_METHOD_HANDWRITING: number; - DOM_INPUT_METHOD_IME: number; - DOM_INPUT_METHOD_KEYBOARD: number; - DOM_INPUT_METHOD_MULTIMODAL: number; - DOM_INPUT_METHOD_OPTION: number; - DOM_INPUT_METHOD_PASTE: number; - DOM_INPUT_METHOD_SCRIPT: number; - DOM_INPUT_METHOD_UNKNOWN: number; - DOM_INPUT_METHOD_VOICE: number; + readonly DOM_INPUT_METHOD_DROP: number; + readonly DOM_INPUT_METHOD_HANDWRITING: number; + readonly DOM_INPUT_METHOD_IME: number; + readonly DOM_INPUT_METHOD_KEYBOARD: number; + readonly DOM_INPUT_METHOD_MULTIMODAL: number; + readonly DOM_INPUT_METHOD_OPTION: number; + readonly DOM_INPUT_METHOD_PASTE: number; + readonly DOM_INPUT_METHOD_SCRIPT: number; + readonly DOM_INPUT_METHOD_UNKNOWN: number; + readonly DOM_INPUT_METHOD_VOICE: number; } interface TextMetrics { - width: number; + readonly width: number; } declare var TextMetrics: { @@ -10727,83 +11558,27 @@ declare var TextMetrics: { new(): TextMetrics; } -interface TextRange { - boundingHeight: number; - boundingLeft: number; - boundingTop: number; - boundingWidth: number; - htmlText: string; - offsetLeft: number; - offsetTop: number; - text: string; - collapse(start?: boolean): void; - compareEndPoints(how: string, sourceRange: TextRange): number; - duplicate(): TextRange; - execCommand(cmdID: string, showUI?: boolean, value?: any): boolean; - execCommandShowHelp(cmdID: string): boolean; - expand(Unit: string): boolean; - findText(string: string, count?: number, flags?: number): boolean; - getBookmark(): string; - getBoundingClientRect(): ClientRect; - getClientRects(): ClientRectList; - inRange(range: TextRange): boolean; - isEqual(range: TextRange): boolean; - move(unit: string, count?: number): number; - moveEnd(unit: string, count?: number): number; - moveStart(unit: string, count?: number): number; - moveToBookmark(bookmark: string): boolean; - moveToElementText(element: Element): void; - moveToPoint(x: number, y: number): void; - parentElement(): Element; - pasteHTML(html: string): void; - queryCommandEnabled(cmdID: string): boolean; - queryCommandIndeterm(cmdID: string): boolean; - queryCommandState(cmdID: string): boolean; - queryCommandSupported(cmdID: string): boolean; - queryCommandText(cmdID: string): string; - queryCommandValue(cmdID: string): any; - scrollIntoView(fStart?: boolean): void; - select(): void; - setEndPoint(how: string, SourceRange: TextRange): void; -} - -declare var TextRange: { - prototype: TextRange; - new(): TextRange; -} - -interface TextRangeCollection { - length: number; - item(index: number): TextRange; - [index: number]: TextRange; -} - -declare var TextRangeCollection: { - prototype: TextRangeCollection; - new(): TextRangeCollection; -} - interface TextTrack extends EventTarget { - activeCues: TextTrackCueList; - cues: TextTrackCueList; - inBandMetadataTrackDispatchType: string; - kind: string; - label: string; - language: string; + readonly activeCues: TextTrackCueList; + readonly cues: TextTrackCueList; + readonly inBandMetadataTrackDispatchType: string; + readonly kind: string; + readonly label: string; + readonly language: string; mode: any; oncuechange: (ev: Event) => any; onerror: (ev: Event) => any; onload: (ev: Event) => any; - readyState: number; + readonly readyState: number; addCue(cue: TextTrackCue): void; removeCue(cue: TextTrackCue): void; - DISABLED: number; - ERROR: number; - HIDDEN: number; - LOADED: number; - LOADING: number; - NONE: number; - SHOWING: number; + readonly DISABLED: number; + readonly ERROR: number; + readonly HIDDEN: number; + readonly LOADED: number; + readonly LOADING: number; + readonly NONE: number; + readonly SHOWING: number; addEventListener(type: "cuechange", 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; @@ -10813,13 +11588,13 @@ interface TextTrack extends EventTarget { declare var TextTrack: { prototype: TextTrack; new(): TextTrack; - DISABLED: number; - ERROR: number; - HIDDEN: number; - LOADED: number; - LOADING: number; - NONE: number; - SHOWING: number; + readonly DISABLED: number; + readonly ERROR: number; + readonly HIDDEN: number; + readonly LOADED: number; + readonly LOADING: number; + readonly NONE: number; + readonly SHOWING: number; } interface TextTrackCue extends EventTarget { @@ -10830,7 +11605,7 @@ interface TextTrackCue extends EventTarget { pauseOnExit: boolean; startTime: number; text: string; - track: TextTrack; + readonly track: TextTrack; getCueAsHTML(): DocumentFragment; addEventListener(type: "enter", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "exit", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -10843,7 +11618,7 @@ declare var TextTrackCue: { } interface TextTrackCueList { - length: number; + readonly length: number; getCueById(id: string): TextTrackCue; item(index: number): TextTrackCue; [index: number]: TextTrackCue; @@ -10855,7 +11630,7 @@ declare var TextTrackCueList: { } interface TextTrackList extends EventTarget { - length: number; + readonly length: number; onaddtrack: (ev: TrackEvent) => any; item(index: number): TextTrack; addEventListener(type: "addtrack", listener: (ev: TrackEvent) => any, useCapture?: boolean): void; @@ -10869,7 +11644,7 @@ declare var TextTrackList: { } interface TimeRanges { - length: number; + readonly length: number; end(index: number): number; start(index: number): number; } @@ -10880,14 +11655,14 @@ declare var TimeRanges: { } interface Touch { - clientX: number; - clientY: number; - identifier: number; - pageX: number; - pageY: number; - screenX: number; - screenY: number; - target: EventTarget; + readonly clientX: number; + readonly clientY: number; + readonly identifier: number; + readonly pageX: number; + readonly pageY: number; + readonly screenX: number; + readonly screenY: number; + readonly target: EventTarget; } declare var Touch: { @@ -10896,13 +11671,13 @@ declare var Touch: { } interface TouchEvent extends UIEvent { - altKey: boolean; - changedTouches: TouchList; - ctrlKey: boolean; - metaKey: boolean; - shiftKey: boolean; - targetTouches: TouchList; - touches: TouchList; + readonly altKey: boolean; + readonly changedTouches: TouchList; + readonly ctrlKey: boolean; + readonly metaKey: boolean; + readonly shiftKey: boolean; + readonly targetTouches: TouchList; + readonly touches: TouchList; } declare var TouchEvent: { @@ -10911,7 +11686,7 @@ declare var TouchEvent: { } interface TouchList { - length: number; + readonly length: number; item(index: number): Touch; [index: number]: Touch; } @@ -10922,7 +11697,7 @@ declare var TouchList: { } interface TrackEvent extends Event { - track: any; + readonly track: any; } declare var TrackEvent: { @@ -10931,8 +11706,8 @@ declare var TrackEvent: { } interface TransitionEvent extends Event { - elapsedTime: number; - propertyName: string; + readonly elapsedTime: number; + readonly propertyName: string; initTransitionEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, propertyNameArg: string, elapsedTimeArg: number): void; } @@ -10943,10 +11718,10 @@ declare var TransitionEvent: { interface TreeWalker { currentNode: Node; - expandEntityReferences: boolean; - filter: NodeFilter; - root: Node; - whatToShow: number; + readonly expandEntityReferences: boolean; + readonly filter: NodeFilter; + readonly root: Node; + readonly whatToShow: number; firstChild(): Node; lastChild(): Node; nextNode(): Node; @@ -10962,8 +11737,8 @@ declare var TreeWalker: { } interface UIEvent extends Event { - detail: number; - view: Window; + readonly detail: number; + readonly view: Window; initUIEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number): void; } @@ -10973,13 +11748,29 @@ declare var UIEvent: { } interface URL { + hash: string; + host: string; + hostname: string; + href: string; + readonly origin: string; + password: string; + pathname: string; + port: string; + protocol: string; + search: string; + username: string; + toString(): string; +} + +declare var URL: { + prototype: URL; + new(url: string, base?: string): URL; createObjectURL(object: any, options?: ObjectURLOptions): string; revokeObjectURL(url: string): void; } -declare var URL: URL; interface UnviewableContentIdentifiedEvent extends NavigationEventWithReferrer { - mediaType: string; + readonly mediaType: string; } declare var UnviewableContentIdentifiedEvent: { @@ -10988,16 +11779,16 @@ declare var UnviewableContentIdentifiedEvent: { } interface ValidityState { - badInput: boolean; - customError: boolean; - patternMismatch: boolean; - rangeOverflow: boolean; - rangeUnderflow: boolean; - stepMismatch: boolean; - tooLong: boolean; - typeMismatch: boolean; - valid: boolean; - valueMissing: boolean; + readonly badInput: boolean; + readonly customError: boolean; + readonly patternMismatch: boolean; + readonly rangeOverflow: boolean; + readonly rangeUnderflow: boolean; + readonly stepMismatch: boolean; + readonly tooLong: boolean; + readonly typeMismatch: boolean; + readonly valid: boolean; + readonly valueMissing: boolean; } declare var ValidityState: { @@ -11006,11 +11797,11 @@ declare var ValidityState: { } interface VideoPlaybackQuality { - corruptedVideoFrames: number; - creationTime: number; - droppedVideoFrames: number; - totalFrameDelay: number; - totalVideoFrames: number; + readonly corruptedVideoFrames: number; + readonly creationTime: number; + readonly droppedVideoFrames: number; + readonly totalFrameDelay: number; + readonly totalVideoFrames: number; } declare var VideoPlaybackQuality: { @@ -11019,12 +11810,12 @@ declare var VideoPlaybackQuality: { } interface VideoTrack { - id: string; + readonly id: string; kind: string; - label: string; + readonly label: string; language: string; selected: boolean; - sourceBuffer: SourceBuffer; + readonly sourceBuffer: SourceBuffer; } declare var VideoTrack: { @@ -11033,11 +11824,11 @@ declare var VideoTrack: { } interface VideoTrackList extends EventTarget { - length: number; + readonly length: number; onaddtrack: (ev: TrackEvent) => any; onchange: (ev: Event) => any; onremovetrack: (ev: TrackEvent) => any; - selectedIndex: number; + readonly selectedIndex: number; getTrackById(id: string): VideoTrack; item(index: number): VideoTrack; addEventListener(type: "addtrack", listener: (ev: TrackEvent) => any, useCapture?: boolean): void; @@ -11053,41 +11844,41 @@ declare var VideoTrackList: { } interface WEBGL_compressed_texture_s3tc { - COMPRESSED_RGBA_S3TC_DXT1_EXT: number; - COMPRESSED_RGBA_S3TC_DXT3_EXT: number; - COMPRESSED_RGBA_S3TC_DXT5_EXT: number; - COMPRESSED_RGB_S3TC_DXT1_EXT: number; + readonly COMPRESSED_RGBA_S3TC_DXT1_EXT: number; + readonly COMPRESSED_RGBA_S3TC_DXT3_EXT: number; + readonly COMPRESSED_RGBA_S3TC_DXT5_EXT: number; + readonly COMPRESSED_RGB_S3TC_DXT1_EXT: number; } declare var WEBGL_compressed_texture_s3tc: { prototype: WEBGL_compressed_texture_s3tc; new(): WEBGL_compressed_texture_s3tc; - COMPRESSED_RGBA_S3TC_DXT1_EXT: number; - COMPRESSED_RGBA_S3TC_DXT3_EXT: number; - COMPRESSED_RGBA_S3TC_DXT5_EXT: number; - COMPRESSED_RGB_S3TC_DXT1_EXT: number; + readonly COMPRESSED_RGBA_S3TC_DXT1_EXT: number; + readonly COMPRESSED_RGBA_S3TC_DXT3_EXT: number; + readonly COMPRESSED_RGBA_S3TC_DXT5_EXT: number; + readonly COMPRESSED_RGB_S3TC_DXT1_EXT: number; } interface WEBGL_debug_renderer_info { - UNMASKED_RENDERER_WEBGL: number; - UNMASKED_VENDOR_WEBGL: number; + readonly UNMASKED_RENDERER_WEBGL: number; + readonly UNMASKED_VENDOR_WEBGL: number; } declare var WEBGL_debug_renderer_info: { prototype: WEBGL_debug_renderer_info; new(): WEBGL_debug_renderer_info; - UNMASKED_RENDERER_WEBGL: number; - UNMASKED_VENDOR_WEBGL: number; + readonly UNMASKED_RENDERER_WEBGL: number; + readonly UNMASKED_VENDOR_WEBGL: number; } interface WEBGL_depth_texture { - UNSIGNED_INT_24_8_WEBGL: number; + readonly UNSIGNED_INT_24_8_WEBGL: number; } declare var WEBGL_depth_texture: { prototype: WEBGL_depth_texture; new(): WEBGL_depth_texture; - UNSIGNED_INT_24_8_WEBGL: number; + readonly UNSIGNED_INT_24_8_WEBGL: number; } interface WaveShaperNode extends AudioNode { @@ -11101,9 +11892,9 @@ declare var WaveShaperNode: { } interface WebGLActiveInfo { - name: string; - size: number; - type: number; + readonly name: string; + readonly size: number; + readonly type: number; } declare var WebGLActiveInfo: { @@ -11120,12 +11911,12 @@ declare var WebGLBuffer: { } interface WebGLContextEvent extends Event { - statusMessage: string; + readonly statusMessage: string; } declare var WebGLContextEvent: { prototype: WebGLContextEvent; - new(): WebGLContextEvent; + new(type: string, eventInitDict?: WebGLContextEventInit): WebGLContextEvent; } interface WebGLFramebuffer extends WebGLObject { @@ -11161,9 +11952,9 @@ declare var WebGLRenderbuffer: { } interface WebGLRenderingContext { - canvas: HTMLCanvasElement; - drawingBufferHeight: number; - drawingBufferWidth: number; + readonly canvas: HTMLCanvasElement; + readonly drawingBufferHeight: number; + readonly drawingBufferWidth: number; activeTexture(texture: number): void; attachShader(program: WebGLProgram, shader: WebGLShader): void; bindAttribLocation(program: WebGLProgram, index: number, name: string): void; @@ -11278,635 +12069,635 @@ interface WebGLRenderingContext { texSubImage2D(target: number, level: number, xoffset: number, yoffset: number, format: number, type: number, video: HTMLVideoElement): void; texSubImage2D(target: number, level: number, xoffset: number, yoffset: number, format: number, type: number, pixels: ImageData): void; uniform1f(location: WebGLUniformLocation, x: number): void; - uniform1fv(location: WebGLUniformLocation, v: Float32Array): void; + uniform1fv(location: WebGLUniformLocation, v: Float32Array | number[]): void; uniform1i(location: WebGLUniformLocation, x: number): void; - uniform1iv(location: WebGLUniformLocation, v: Int32Array): void; + uniform1iv(location: WebGLUniformLocation, v: Int32Array | number[]): void; uniform2f(location: WebGLUniformLocation, x: number, y: number): void; - uniform2fv(location: WebGLUniformLocation, v: Float32Array): void; + uniform2fv(location: WebGLUniformLocation, v: Float32Array | number[]): void; uniform2i(location: WebGLUniformLocation, x: number, y: number): void; - uniform2iv(location: WebGLUniformLocation, v: Int32Array): void; + uniform2iv(location: WebGLUniformLocation, v: Int32Array | number[]): void; uniform3f(location: WebGLUniformLocation, x: number, y: number, z: number): void; - uniform3fv(location: WebGLUniformLocation, v: Float32Array): void; + uniform3fv(location: WebGLUniformLocation, v: Float32Array | number[]): void; uniform3i(location: WebGLUniformLocation, x: number, y: number, z: number): void; - uniform3iv(location: WebGLUniformLocation, v: Int32Array): void; + uniform3iv(location: WebGLUniformLocation, v: Int32Array | number[]): void; uniform4f(location: WebGLUniformLocation, x: number, y: number, z: number, w: number): void; - uniform4fv(location: WebGLUniformLocation, v: Float32Array): void; + uniform4fv(location: WebGLUniformLocation, v: Float32Array | number[]): void; uniform4i(location: WebGLUniformLocation, x: number, y: number, z: number, w: number): void; - uniform4iv(location: WebGLUniformLocation, v: Int32Array): void; - uniformMatrix2fv(location: WebGLUniformLocation, transpose: boolean, value: Float32Array): void; - uniformMatrix3fv(location: WebGLUniformLocation, transpose: boolean, value: Float32Array): void; - uniformMatrix4fv(location: WebGLUniformLocation, transpose: boolean, value: Float32Array): void; + uniform4iv(location: WebGLUniformLocation, v: Int32Array | number[]): void; + uniformMatrix2fv(location: WebGLUniformLocation, transpose: boolean, value: Float32Array | number[]): void; + uniformMatrix3fv(location: WebGLUniformLocation, transpose: boolean, value: Float32Array | number[]): void; + uniformMatrix4fv(location: WebGLUniformLocation, transpose: boolean, value: Float32Array | number[]): void; useProgram(program: WebGLProgram): void; validateProgram(program: WebGLProgram): void; vertexAttrib1f(indx: number, x: number): void; - vertexAttrib1fv(indx: number, values: Float32Array): void; + vertexAttrib1fv(indx: number, values: Float32Array | number[]): void; vertexAttrib2f(indx: number, x: number, y: number): void; - vertexAttrib2fv(indx: number, values: Float32Array): void; + vertexAttrib2fv(indx: number, values: Float32Array | number[]): void; vertexAttrib3f(indx: number, x: number, y: number, z: number): void; - vertexAttrib3fv(indx: number, values: Float32Array): void; + vertexAttrib3fv(indx: number, values: Float32Array | number[]): void; vertexAttrib4f(indx: number, x: number, y: number, z: number, w: number): void; - vertexAttrib4fv(indx: number, values: Float32Array): void; + vertexAttrib4fv(indx: number, values: Float32Array | number[]): void; vertexAttribPointer(indx: number, size: number, type: number, normalized: boolean, stride: number, offset: number): void; viewport(x: number, y: number, width: number, height: number): void; - ACTIVE_ATTRIBUTES: number; - ACTIVE_TEXTURE: number; - ACTIVE_UNIFORMS: number; - ALIASED_LINE_WIDTH_RANGE: number; - ALIASED_POINT_SIZE_RANGE: number; - ALPHA: number; - ALPHA_BITS: number; - ALWAYS: number; - ARRAY_BUFFER: number; - ARRAY_BUFFER_BINDING: number; - ATTACHED_SHADERS: number; - BACK: number; - BLEND: number; - BLEND_COLOR: number; - BLEND_DST_ALPHA: number; - BLEND_DST_RGB: number; - BLEND_EQUATION: number; - BLEND_EQUATION_ALPHA: number; - BLEND_EQUATION_RGB: number; - BLEND_SRC_ALPHA: number; - BLEND_SRC_RGB: number; - BLUE_BITS: number; - BOOL: number; - BOOL_VEC2: number; - BOOL_VEC3: number; - BOOL_VEC4: number; - BROWSER_DEFAULT_WEBGL: number; - BUFFER_SIZE: number; - BUFFER_USAGE: number; - BYTE: number; - CCW: number; - CLAMP_TO_EDGE: number; - COLOR_ATTACHMENT0: number; - COLOR_BUFFER_BIT: number; - COLOR_CLEAR_VALUE: number; - COLOR_WRITEMASK: number; - COMPILE_STATUS: number; - COMPRESSED_TEXTURE_FORMATS: number; - CONSTANT_ALPHA: number; - CONSTANT_COLOR: number; - CONTEXT_LOST_WEBGL: number; - CULL_FACE: number; - CULL_FACE_MODE: number; - CURRENT_PROGRAM: number; - CURRENT_VERTEX_ATTRIB: number; - CW: number; - DECR: number; - DECR_WRAP: number; - DELETE_STATUS: number; - DEPTH_ATTACHMENT: number; - DEPTH_BITS: number; - DEPTH_BUFFER_BIT: number; - DEPTH_CLEAR_VALUE: number; - DEPTH_COMPONENT: number; - DEPTH_COMPONENT16: number; - DEPTH_FUNC: number; - DEPTH_RANGE: number; - DEPTH_STENCIL: number; - DEPTH_STENCIL_ATTACHMENT: number; - DEPTH_TEST: number; - DEPTH_WRITEMASK: number; - DITHER: number; - DONT_CARE: number; - DST_ALPHA: number; - DST_COLOR: number; - DYNAMIC_DRAW: number; - ELEMENT_ARRAY_BUFFER: number; - ELEMENT_ARRAY_BUFFER_BINDING: number; - EQUAL: number; - FASTEST: number; - FLOAT: number; - FLOAT_MAT2: number; - FLOAT_MAT3: number; - FLOAT_MAT4: number; - FLOAT_VEC2: number; - FLOAT_VEC3: number; - FLOAT_VEC4: number; - FRAGMENT_SHADER: number; - FRAMEBUFFER: number; - FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: number; - FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: number; - FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: number; - FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: number; - FRAMEBUFFER_BINDING: number; - FRAMEBUFFER_COMPLETE: number; - FRAMEBUFFER_INCOMPLETE_ATTACHMENT: number; - FRAMEBUFFER_INCOMPLETE_DIMENSIONS: number; - FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: number; - FRAMEBUFFER_UNSUPPORTED: number; - FRONT: number; - FRONT_AND_BACK: number; - FRONT_FACE: number; - FUNC_ADD: number; - FUNC_REVERSE_SUBTRACT: number; - FUNC_SUBTRACT: number; - GENERATE_MIPMAP_HINT: number; - GEQUAL: number; - GREATER: number; - GREEN_BITS: number; - HIGH_FLOAT: number; - HIGH_INT: number; - IMPLEMENTATION_COLOR_READ_FORMAT: number; - IMPLEMENTATION_COLOR_READ_TYPE: number; - INCR: number; - INCR_WRAP: number; - INT: number; - INT_VEC2: number; - INT_VEC3: number; - INT_VEC4: number; - INVALID_ENUM: number; - INVALID_FRAMEBUFFER_OPERATION: number; - INVALID_OPERATION: number; - INVALID_VALUE: number; - INVERT: number; - KEEP: number; - LEQUAL: number; - LESS: number; - LINEAR: number; - LINEAR_MIPMAP_LINEAR: number; - LINEAR_MIPMAP_NEAREST: number; - LINES: number; - LINE_LOOP: number; - LINE_STRIP: number; - LINE_WIDTH: number; - LINK_STATUS: number; - LOW_FLOAT: number; - LOW_INT: number; - LUMINANCE: number; - LUMINANCE_ALPHA: number; - MAX_COMBINED_TEXTURE_IMAGE_UNITS: number; - MAX_CUBE_MAP_TEXTURE_SIZE: number; - MAX_FRAGMENT_UNIFORM_VECTORS: number; - MAX_RENDERBUFFER_SIZE: number; - MAX_TEXTURE_IMAGE_UNITS: number; - MAX_TEXTURE_SIZE: number; - MAX_VARYING_VECTORS: number; - MAX_VERTEX_ATTRIBS: number; - MAX_VERTEX_TEXTURE_IMAGE_UNITS: number; - MAX_VERTEX_UNIFORM_VECTORS: number; - MAX_VIEWPORT_DIMS: number; - MEDIUM_FLOAT: number; - MEDIUM_INT: number; - MIRRORED_REPEAT: number; - NEAREST: number; - NEAREST_MIPMAP_LINEAR: number; - NEAREST_MIPMAP_NEAREST: number; - NEVER: number; - NICEST: number; - NONE: number; - NOTEQUAL: number; - NO_ERROR: number; - ONE: number; - ONE_MINUS_CONSTANT_ALPHA: number; - ONE_MINUS_CONSTANT_COLOR: number; - ONE_MINUS_DST_ALPHA: number; - ONE_MINUS_DST_COLOR: number; - ONE_MINUS_SRC_ALPHA: number; - ONE_MINUS_SRC_COLOR: number; - OUT_OF_MEMORY: number; - PACK_ALIGNMENT: number; - POINTS: number; - POLYGON_OFFSET_FACTOR: number; - POLYGON_OFFSET_FILL: number; - POLYGON_OFFSET_UNITS: number; - RED_BITS: number; - RENDERBUFFER: number; - RENDERBUFFER_ALPHA_SIZE: number; - RENDERBUFFER_BINDING: number; - RENDERBUFFER_BLUE_SIZE: number; - RENDERBUFFER_DEPTH_SIZE: number; - RENDERBUFFER_GREEN_SIZE: number; - RENDERBUFFER_HEIGHT: number; - RENDERBUFFER_INTERNAL_FORMAT: number; - RENDERBUFFER_RED_SIZE: number; - RENDERBUFFER_STENCIL_SIZE: number; - RENDERBUFFER_WIDTH: number; - RENDERER: number; - REPEAT: number; - REPLACE: number; - RGB: number; - RGB565: number; - RGB5_A1: number; - RGBA: number; - RGBA4: number; - SAMPLER_2D: number; - SAMPLER_CUBE: number; - SAMPLES: number; - SAMPLE_ALPHA_TO_COVERAGE: number; - SAMPLE_BUFFERS: number; - SAMPLE_COVERAGE: number; - SAMPLE_COVERAGE_INVERT: number; - SAMPLE_COVERAGE_VALUE: number; - SCISSOR_BOX: number; - SCISSOR_TEST: number; - SHADER_TYPE: number; - SHADING_LANGUAGE_VERSION: number; - SHORT: number; - SRC_ALPHA: number; - SRC_ALPHA_SATURATE: number; - SRC_COLOR: number; - STATIC_DRAW: number; - STENCIL_ATTACHMENT: number; - STENCIL_BACK_FAIL: number; - STENCIL_BACK_FUNC: number; - STENCIL_BACK_PASS_DEPTH_FAIL: number; - STENCIL_BACK_PASS_DEPTH_PASS: number; - STENCIL_BACK_REF: number; - STENCIL_BACK_VALUE_MASK: number; - STENCIL_BACK_WRITEMASK: number; - STENCIL_BITS: number; - STENCIL_BUFFER_BIT: number; - STENCIL_CLEAR_VALUE: number; - STENCIL_FAIL: number; - STENCIL_FUNC: number; - STENCIL_INDEX: number; - STENCIL_INDEX8: number; - STENCIL_PASS_DEPTH_FAIL: number; - STENCIL_PASS_DEPTH_PASS: number; - STENCIL_REF: number; - STENCIL_TEST: number; - STENCIL_VALUE_MASK: number; - STENCIL_WRITEMASK: number; - STREAM_DRAW: number; - SUBPIXEL_BITS: number; - TEXTURE: number; - TEXTURE0: number; - TEXTURE1: number; - TEXTURE10: number; - TEXTURE11: number; - TEXTURE12: number; - TEXTURE13: number; - TEXTURE14: number; - TEXTURE15: number; - TEXTURE16: number; - TEXTURE17: number; - TEXTURE18: number; - TEXTURE19: number; - TEXTURE2: number; - TEXTURE20: number; - TEXTURE21: number; - TEXTURE22: number; - TEXTURE23: number; - TEXTURE24: number; - TEXTURE25: number; - TEXTURE26: number; - TEXTURE27: number; - TEXTURE28: number; - TEXTURE29: number; - TEXTURE3: number; - TEXTURE30: number; - TEXTURE31: number; - TEXTURE4: number; - TEXTURE5: number; - TEXTURE6: number; - TEXTURE7: number; - TEXTURE8: number; - TEXTURE9: number; - TEXTURE_2D: number; - TEXTURE_BINDING_2D: number; - TEXTURE_BINDING_CUBE_MAP: number; - TEXTURE_CUBE_MAP: number; - TEXTURE_CUBE_MAP_NEGATIVE_X: number; - TEXTURE_CUBE_MAP_NEGATIVE_Y: number; - TEXTURE_CUBE_MAP_NEGATIVE_Z: number; - TEXTURE_CUBE_MAP_POSITIVE_X: number; - TEXTURE_CUBE_MAP_POSITIVE_Y: number; - TEXTURE_CUBE_MAP_POSITIVE_Z: number; - TEXTURE_MAG_FILTER: number; - TEXTURE_MIN_FILTER: number; - TEXTURE_WRAP_S: number; - TEXTURE_WRAP_T: number; - TRIANGLES: number; - TRIANGLE_FAN: number; - TRIANGLE_STRIP: number; - UNPACK_ALIGNMENT: number; - UNPACK_COLORSPACE_CONVERSION_WEBGL: number; - UNPACK_FLIP_Y_WEBGL: number; - UNPACK_PREMULTIPLY_ALPHA_WEBGL: number; - UNSIGNED_BYTE: number; - UNSIGNED_INT: number; - UNSIGNED_SHORT: number; - UNSIGNED_SHORT_4_4_4_4: number; - UNSIGNED_SHORT_5_5_5_1: number; - UNSIGNED_SHORT_5_6_5: number; - VALIDATE_STATUS: number; - VENDOR: number; - VERSION: number; - VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: number; - VERTEX_ATTRIB_ARRAY_ENABLED: number; - VERTEX_ATTRIB_ARRAY_NORMALIZED: number; - VERTEX_ATTRIB_ARRAY_POINTER: number; - VERTEX_ATTRIB_ARRAY_SIZE: number; - VERTEX_ATTRIB_ARRAY_STRIDE: number; - VERTEX_ATTRIB_ARRAY_TYPE: number; - VERTEX_SHADER: number; - VIEWPORT: number; - ZERO: number; + readonly ACTIVE_ATTRIBUTES: number; + readonly ACTIVE_TEXTURE: number; + readonly ACTIVE_UNIFORMS: number; + readonly ALIASED_LINE_WIDTH_RANGE: number; + readonly ALIASED_POINT_SIZE_RANGE: number; + readonly ALPHA: number; + readonly ALPHA_BITS: number; + readonly ALWAYS: number; + readonly ARRAY_BUFFER: number; + readonly ARRAY_BUFFER_BINDING: number; + readonly ATTACHED_SHADERS: number; + readonly BACK: number; + readonly BLEND: number; + readonly BLEND_COLOR: number; + readonly BLEND_DST_ALPHA: number; + readonly BLEND_DST_RGB: number; + readonly BLEND_EQUATION: number; + readonly BLEND_EQUATION_ALPHA: number; + readonly BLEND_EQUATION_RGB: number; + readonly BLEND_SRC_ALPHA: number; + readonly BLEND_SRC_RGB: number; + readonly BLUE_BITS: number; + readonly BOOL: number; + readonly BOOL_VEC2: number; + readonly BOOL_VEC3: number; + readonly BOOL_VEC4: number; + readonly BROWSER_DEFAULT_WEBGL: number; + readonly BUFFER_SIZE: number; + readonly BUFFER_USAGE: number; + readonly BYTE: number; + readonly CCW: number; + readonly CLAMP_TO_EDGE: number; + readonly COLOR_ATTACHMENT0: number; + readonly COLOR_BUFFER_BIT: number; + readonly COLOR_CLEAR_VALUE: number; + readonly COLOR_WRITEMASK: number; + readonly COMPILE_STATUS: number; + readonly COMPRESSED_TEXTURE_FORMATS: number; + readonly CONSTANT_ALPHA: number; + readonly CONSTANT_COLOR: number; + readonly CONTEXT_LOST_WEBGL: number; + readonly CULL_FACE: number; + readonly CULL_FACE_MODE: number; + readonly CURRENT_PROGRAM: number; + readonly CURRENT_VERTEX_ATTRIB: number; + readonly CW: number; + readonly DECR: number; + readonly DECR_WRAP: number; + readonly DELETE_STATUS: number; + readonly DEPTH_ATTACHMENT: number; + readonly DEPTH_BITS: number; + readonly DEPTH_BUFFER_BIT: number; + readonly DEPTH_CLEAR_VALUE: number; + readonly DEPTH_COMPONENT: number; + readonly DEPTH_COMPONENT16: number; + readonly DEPTH_FUNC: number; + readonly DEPTH_RANGE: number; + readonly DEPTH_STENCIL: number; + readonly DEPTH_STENCIL_ATTACHMENT: number; + readonly DEPTH_TEST: number; + readonly DEPTH_WRITEMASK: number; + readonly DITHER: number; + readonly DONT_CARE: number; + readonly DST_ALPHA: number; + readonly DST_COLOR: number; + readonly DYNAMIC_DRAW: number; + readonly ELEMENT_ARRAY_BUFFER: number; + readonly ELEMENT_ARRAY_BUFFER_BINDING: number; + readonly EQUAL: number; + readonly FASTEST: number; + readonly FLOAT: number; + readonly FLOAT_MAT2: number; + readonly FLOAT_MAT3: number; + readonly FLOAT_MAT4: number; + readonly FLOAT_VEC2: number; + readonly FLOAT_VEC3: number; + readonly FLOAT_VEC4: number; + readonly FRAGMENT_SHADER: number; + readonly FRAMEBUFFER: number; + readonly FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: number; + readonly FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: number; + readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: number; + readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: number; + readonly FRAMEBUFFER_BINDING: number; + readonly FRAMEBUFFER_COMPLETE: number; + readonly FRAMEBUFFER_INCOMPLETE_ATTACHMENT: number; + readonly FRAMEBUFFER_INCOMPLETE_DIMENSIONS: number; + readonly FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: number; + readonly FRAMEBUFFER_UNSUPPORTED: number; + readonly FRONT: number; + readonly FRONT_AND_BACK: number; + readonly FRONT_FACE: number; + readonly FUNC_ADD: number; + readonly FUNC_REVERSE_SUBTRACT: number; + readonly FUNC_SUBTRACT: number; + readonly GENERATE_MIPMAP_HINT: number; + readonly GEQUAL: number; + readonly GREATER: number; + readonly GREEN_BITS: number; + readonly HIGH_FLOAT: number; + readonly HIGH_INT: number; + readonly IMPLEMENTATION_COLOR_READ_FORMAT: number; + readonly IMPLEMENTATION_COLOR_READ_TYPE: number; + readonly INCR: number; + readonly INCR_WRAP: number; + readonly INT: number; + readonly INT_VEC2: number; + readonly INT_VEC3: number; + readonly INT_VEC4: number; + readonly INVALID_ENUM: number; + readonly INVALID_FRAMEBUFFER_OPERATION: number; + readonly INVALID_OPERATION: number; + readonly INVALID_VALUE: number; + readonly INVERT: number; + readonly KEEP: number; + readonly LEQUAL: number; + readonly LESS: number; + readonly LINEAR: number; + readonly LINEAR_MIPMAP_LINEAR: number; + readonly LINEAR_MIPMAP_NEAREST: number; + readonly LINES: number; + readonly LINE_LOOP: number; + readonly LINE_STRIP: number; + readonly LINE_WIDTH: number; + readonly LINK_STATUS: number; + readonly LOW_FLOAT: number; + readonly LOW_INT: number; + readonly LUMINANCE: number; + readonly LUMINANCE_ALPHA: number; + readonly MAX_COMBINED_TEXTURE_IMAGE_UNITS: number; + readonly MAX_CUBE_MAP_TEXTURE_SIZE: number; + readonly MAX_FRAGMENT_UNIFORM_VECTORS: number; + readonly MAX_RENDERBUFFER_SIZE: number; + readonly MAX_TEXTURE_IMAGE_UNITS: number; + readonly MAX_TEXTURE_SIZE: number; + readonly MAX_VARYING_VECTORS: number; + readonly MAX_VERTEX_ATTRIBS: number; + readonly MAX_VERTEX_TEXTURE_IMAGE_UNITS: number; + readonly MAX_VERTEX_UNIFORM_VECTORS: number; + readonly MAX_VIEWPORT_DIMS: number; + readonly MEDIUM_FLOAT: number; + readonly MEDIUM_INT: number; + readonly MIRRORED_REPEAT: number; + readonly NEAREST: number; + readonly NEAREST_MIPMAP_LINEAR: number; + readonly NEAREST_MIPMAP_NEAREST: number; + readonly NEVER: number; + readonly NICEST: number; + readonly NONE: number; + readonly NOTEQUAL: number; + readonly NO_ERROR: number; + readonly ONE: number; + readonly ONE_MINUS_CONSTANT_ALPHA: number; + readonly ONE_MINUS_CONSTANT_COLOR: number; + readonly ONE_MINUS_DST_ALPHA: number; + readonly ONE_MINUS_DST_COLOR: number; + readonly ONE_MINUS_SRC_ALPHA: number; + readonly ONE_MINUS_SRC_COLOR: number; + readonly OUT_OF_MEMORY: number; + readonly PACK_ALIGNMENT: number; + readonly POINTS: number; + readonly POLYGON_OFFSET_FACTOR: number; + readonly POLYGON_OFFSET_FILL: number; + readonly POLYGON_OFFSET_UNITS: number; + readonly RED_BITS: number; + readonly RENDERBUFFER: number; + readonly RENDERBUFFER_ALPHA_SIZE: number; + readonly RENDERBUFFER_BINDING: number; + readonly RENDERBUFFER_BLUE_SIZE: number; + readonly RENDERBUFFER_DEPTH_SIZE: number; + readonly RENDERBUFFER_GREEN_SIZE: number; + readonly RENDERBUFFER_HEIGHT: number; + readonly RENDERBUFFER_INTERNAL_FORMAT: number; + readonly RENDERBUFFER_RED_SIZE: number; + readonly RENDERBUFFER_STENCIL_SIZE: number; + readonly RENDERBUFFER_WIDTH: number; + readonly RENDERER: number; + readonly REPEAT: number; + readonly REPLACE: number; + readonly RGB: number; + readonly RGB565: number; + readonly RGB5_A1: number; + readonly RGBA: number; + readonly RGBA4: number; + readonly SAMPLER_2D: number; + readonly SAMPLER_CUBE: number; + readonly SAMPLES: number; + readonly SAMPLE_ALPHA_TO_COVERAGE: number; + readonly SAMPLE_BUFFERS: number; + readonly SAMPLE_COVERAGE: number; + readonly SAMPLE_COVERAGE_INVERT: number; + readonly SAMPLE_COVERAGE_VALUE: number; + readonly SCISSOR_BOX: number; + readonly SCISSOR_TEST: number; + readonly SHADER_TYPE: number; + readonly SHADING_LANGUAGE_VERSION: number; + readonly SHORT: number; + readonly SRC_ALPHA: number; + readonly SRC_ALPHA_SATURATE: number; + readonly SRC_COLOR: number; + readonly STATIC_DRAW: number; + readonly STENCIL_ATTACHMENT: number; + readonly STENCIL_BACK_FAIL: number; + readonly STENCIL_BACK_FUNC: number; + readonly STENCIL_BACK_PASS_DEPTH_FAIL: number; + readonly STENCIL_BACK_PASS_DEPTH_PASS: number; + readonly STENCIL_BACK_REF: number; + readonly STENCIL_BACK_VALUE_MASK: number; + readonly STENCIL_BACK_WRITEMASK: number; + readonly STENCIL_BITS: number; + readonly STENCIL_BUFFER_BIT: number; + readonly STENCIL_CLEAR_VALUE: number; + readonly STENCIL_FAIL: number; + readonly STENCIL_FUNC: number; + readonly STENCIL_INDEX: number; + readonly STENCIL_INDEX8: number; + readonly STENCIL_PASS_DEPTH_FAIL: number; + readonly STENCIL_PASS_DEPTH_PASS: number; + readonly STENCIL_REF: number; + readonly STENCIL_TEST: number; + readonly STENCIL_VALUE_MASK: number; + readonly STENCIL_WRITEMASK: number; + readonly STREAM_DRAW: number; + readonly SUBPIXEL_BITS: number; + readonly TEXTURE: number; + readonly TEXTURE0: number; + readonly TEXTURE1: number; + readonly TEXTURE10: number; + readonly TEXTURE11: number; + readonly TEXTURE12: number; + readonly TEXTURE13: number; + readonly TEXTURE14: number; + readonly TEXTURE15: number; + readonly TEXTURE16: number; + readonly TEXTURE17: number; + readonly TEXTURE18: number; + readonly TEXTURE19: number; + readonly TEXTURE2: number; + readonly TEXTURE20: number; + readonly TEXTURE21: number; + readonly TEXTURE22: number; + readonly TEXTURE23: number; + readonly TEXTURE24: number; + readonly TEXTURE25: number; + readonly TEXTURE26: number; + readonly TEXTURE27: number; + readonly TEXTURE28: number; + readonly TEXTURE29: number; + readonly TEXTURE3: number; + readonly TEXTURE30: number; + readonly TEXTURE31: number; + readonly TEXTURE4: number; + readonly TEXTURE5: number; + readonly TEXTURE6: number; + readonly TEXTURE7: number; + readonly TEXTURE8: number; + readonly TEXTURE9: number; + readonly TEXTURE_2D: number; + readonly TEXTURE_BINDING_2D: number; + readonly TEXTURE_BINDING_CUBE_MAP: number; + readonly TEXTURE_CUBE_MAP: number; + readonly TEXTURE_CUBE_MAP_NEGATIVE_X: number; + readonly TEXTURE_CUBE_MAP_NEGATIVE_Y: number; + readonly TEXTURE_CUBE_MAP_NEGATIVE_Z: number; + readonly TEXTURE_CUBE_MAP_POSITIVE_X: number; + readonly TEXTURE_CUBE_MAP_POSITIVE_Y: number; + readonly TEXTURE_CUBE_MAP_POSITIVE_Z: number; + readonly TEXTURE_MAG_FILTER: number; + readonly TEXTURE_MIN_FILTER: number; + readonly TEXTURE_WRAP_S: number; + readonly TEXTURE_WRAP_T: number; + readonly TRIANGLES: number; + readonly TRIANGLE_FAN: number; + readonly TRIANGLE_STRIP: number; + readonly UNPACK_ALIGNMENT: number; + readonly UNPACK_COLORSPACE_CONVERSION_WEBGL: number; + readonly UNPACK_FLIP_Y_WEBGL: number; + readonly UNPACK_PREMULTIPLY_ALPHA_WEBGL: number; + readonly UNSIGNED_BYTE: number; + readonly UNSIGNED_INT: number; + readonly UNSIGNED_SHORT: number; + readonly UNSIGNED_SHORT_4_4_4_4: number; + readonly UNSIGNED_SHORT_5_5_5_1: number; + readonly UNSIGNED_SHORT_5_6_5: number; + readonly VALIDATE_STATUS: number; + readonly VENDOR: number; + readonly VERSION: number; + readonly VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: number; + readonly VERTEX_ATTRIB_ARRAY_ENABLED: number; + readonly VERTEX_ATTRIB_ARRAY_NORMALIZED: number; + readonly VERTEX_ATTRIB_ARRAY_POINTER: number; + readonly VERTEX_ATTRIB_ARRAY_SIZE: number; + readonly VERTEX_ATTRIB_ARRAY_STRIDE: number; + readonly VERTEX_ATTRIB_ARRAY_TYPE: number; + readonly VERTEX_SHADER: number; + readonly VIEWPORT: number; + readonly ZERO: number; } declare var WebGLRenderingContext: { prototype: WebGLRenderingContext; new(): WebGLRenderingContext; - ACTIVE_ATTRIBUTES: number; - ACTIVE_TEXTURE: number; - ACTIVE_UNIFORMS: number; - ALIASED_LINE_WIDTH_RANGE: number; - ALIASED_POINT_SIZE_RANGE: number; - ALPHA: number; - ALPHA_BITS: number; - ALWAYS: number; - ARRAY_BUFFER: number; - ARRAY_BUFFER_BINDING: number; - ATTACHED_SHADERS: number; - BACK: number; - BLEND: number; - BLEND_COLOR: number; - BLEND_DST_ALPHA: number; - BLEND_DST_RGB: number; - BLEND_EQUATION: number; - BLEND_EQUATION_ALPHA: number; - BLEND_EQUATION_RGB: number; - BLEND_SRC_ALPHA: number; - BLEND_SRC_RGB: number; - BLUE_BITS: number; - BOOL: number; - BOOL_VEC2: number; - BOOL_VEC3: number; - BOOL_VEC4: number; - BROWSER_DEFAULT_WEBGL: number; - BUFFER_SIZE: number; - BUFFER_USAGE: number; - BYTE: number; - CCW: number; - CLAMP_TO_EDGE: number; - COLOR_ATTACHMENT0: number; - COLOR_BUFFER_BIT: number; - COLOR_CLEAR_VALUE: number; - COLOR_WRITEMASK: number; - COMPILE_STATUS: number; - COMPRESSED_TEXTURE_FORMATS: number; - CONSTANT_ALPHA: number; - CONSTANT_COLOR: number; - CONTEXT_LOST_WEBGL: number; - CULL_FACE: number; - CULL_FACE_MODE: number; - CURRENT_PROGRAM: number; - CURRENT_VERTEX_ATTRIB: number; - CW: number; - DECR: number; - DECR_WRAP: number; - DELETE_STATUS: number; - DEPTH_ATTACHMENT: number; - DEPTH_BITS: number; - DEPTH_BUFFER_BIT: number; - DEPTH_CLEAR_VALUE: number; - DEPTH_COMPONENT: number; - DEPTH_COMPONENT16: number; - DEPTH_FUNC: number; - DEPTH_RANGE: number; - DEPTH_STENCIL: number; - DEPTH_STENCIL_ATTACHMENT: number; - DEPTH_TEST: number; - DEPTH_WRITEMASK: number; - DITHER: number; - DONT_CARE: number; - DST_ALPHA: number; - DST_COLOR: number; - DYNAMIC_DRAW: number; - ELEMENT_ARRAY_BUFFER: number; - ELEMENT_ARRAY_BUFFER_BINDING: number; - EQUAL: number; - FASTEST: number; - FLOAT: number; - FLOAT_MAT2: number; - FLOAT_MAT3: number; - FLOAT_MAT4: number; - FLOAT_VEC2: number; - FLOAT_VEC3: number; - FLOAT_VEC4: number; - FRAGMENT_SHADER: number; - FRAMEBUFFER: number; - FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: number; - FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: number; - FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: number; - FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: number; - FRAMEBUFFER_BINDING: number; - FRAMEBUFFER_COMPLETE: number; - FRAMEBUFFER_INCOMPLETE_ATTACHMENT: number; - FRAMEBUFFER_INCOMPLETE_DIMENSIONS: number; - FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: number; - FRAMEBUFFER_UNSUPPORTED: number; - FRONT: number; - FRONT_AND_BACK: number; - FRONT_FACE: number; - FUNC_ADD: number; - FUNC_REVERSE_SUBTRACT: number; - FUNC_SUBTRACT: number; - GENERATE_MIPMAP_HINT: number; - GEQUAL: number; - GREATER: number; - GREEN_BITS: number; - HIGH_FLOAT: number; - HIGH_INT: number; - IMPLEMENTATION_COLOR_READ_FORMAT: number; - IMPLEMENTATION_COLOR_READ_TYPE: number; - INCR: number; - INCR_WRAP: number; - INT: number; - INT_VEC2: number; - INT_VEC3: number; - INT_VEC4: number; - INVALID_ENUM: number; - INVALID_FRAMEBUFFER_OPERATION: number; - INVALID_OPERATION: number; - INVALID_VALUE: number; - INVERT: number; - KEEP: number; - LEQUAL: number; - LESS: number; - LINEAR: number; - LINEAR_MIPMAP_LINEAR: number; - LINEAR_MIPMAP_NEAREST: number; - LINES: number; - LINE_LOOP: number; - LINE_STRIP: number; - LINE_WIDTH: number; - LINK_STATUS: number; - LOW_FLOAT: number; - LOW_INT: number; - LUMINANCE: number; - LUMINANCE_ALPHA: number; - MAX_COMBINED_TEXTURE_IMAGE_UNITS: number; - MAX_CUBE_MAP_TEXTURE_SIZE: number; - MAX_FRAGMENT_UNIFORM_VECTORS: number; - MAX_RENDERBUFFER_SIZE: number; - MAX_TEXTURE_IMAGE_UNITS: number; - MAX_TEXTURE_SIZE: number; - MAX_VARYING_VECTORS: number; - MAX_VERTEX_ATTRIBS: number; - MAX_VERTEX_TEXTURE_IMAGE_UNITS: number; - MAX_VERTEX_UNIFORM_VECTORS: number; - MAX_VIEWPORT_DIMS: number; - MEDIUM_FLOAT: number; - MEDIUM_INT: number; - MIRRORED_REPEAT: number; - NEAREST: number; - NEAREST_MIPMAP_LINEAR: number; - NEAREST_MIPMAP_NEAREST: number; - NEVER: number; - NICEST: number; - NONE: number; - NOTEQUAL: number; - NO_ERROR: number; - ONE: number; - ONE_MINUS_CONSTANT_ALPHA: number; - ONE_MINUS_CONSTANT_COLOR: number; - ONE_MINUS_DST_ALPHA: number; - ONE_MINUS_DST_COLOR: number; - ONE_MINUS_SRC_ALPHA: number; - ONE_MINUS_SRC_COLOR: number; - OUT_OF_MEMORY: number; - PACK_ALIGNMENT: number; - POINTS: number; - POLYGON_OFFSET_FACTOR: number; - POLYGON_OFFSET_FILL: number; - POLYGON_OFFSET_UNITS: number; - RED_BITS: number; - RENDERBUFFER: number; - RENDERBUFFER_ALPHA_SIZE: number; - RENDERBUFFER_BINDING: number; - RENDERBUFFER_BLUE_SIZE: number; - RENDERBUFFER_DEPTH_SIZE: number; - RENDERBUFFER_GREEN_SIZE: number; - RENDERBUFFER_HEIGHT: number; - RENDERBUFFER_INTERNAL_FORMAT: number; - RENDERBUFFER_RED_SIZE: number; - RENDERBUFFER_STENCIL_SIZE: number; - RENDERBUFFER_WIDTH: number; - RENDERER: number; - REPEAT: number; - REPLACE: number; - RGB: number; - RGB565: number; - RGB5_A1: number; - RGBA: number; - RGBA4: number; - SAMPLER_2D: number; - SAMPLER_CUBE: number; - SAMPLES: number; - SAMPLE_ALPHA_TO_COVERAGE: number; - SAMPLE_BUFFERS: number; - SAMPLE_COVERAGE: number; - SAMPLE_COVERAGE_INVERT: number; - SAMPLE_COVERAGE_VALUE: number; - SCISSOR_BOX: number; - SCISSOR_TEST: number; - SHADER_TYPE: number; - SHADING_LANGUAGE_VERSION: number; - SHORT: number; - SRC_ALPHA: number; - SRC_ALPHA_SATURATE: number; - SRC_COLOR: number; - STATIC_DRAW: number; - STENCIL_ATTACHMENT: number; - STENCIL_BACK_FAIL: number; - STENCIL_BACK_FUNC: number; - STENCIL_BACK_PASS_DEPTH_FAIL: number; - STENCIL_BACK_PASS_DEPTH_PASS: number; - STENCIL_BACK_REF: number; - STENCIL_BACK_VALUE_MASK: number; - STENCIL_BACK_WRITEMASK: number; - STENCIL_BITS: number; - STENCIL_BUFFER_BIT: number; - STENCIL_CLEAR_VALUE: number; - STENCIL_FAIL: number; - STENCIL_FUNC: number; - STENCIL_INDEX: number; - STENCIL_INDEX8: number; - STENCIL_PASS_DEPTH_FAIL: number; - STENCIL_PASS_DEPTH_PASS: number; - STENCIL_REF: number; - STENCIL_TEST: number; - STENCIL_VALUE_MASK: number; - STENCIL_WRITEMASK: number; - STREAM_DRAW: number; - SUBPIXEL_BITS: number; - TEXTURE: number; - TEXTURE0: number; - TEXTURE1: number; - TEXTURE10: number; - TEXTURE11: number; - TEXTURE12: number; - TEXTURE13: number; - TEXTURE14: number; - TEXTURE15: number; - TEXTURE16: number; - TEXTURE17: number; - TEXTURE18: number; - TEXTURE19: number; - TEXTURE2: number; - TEXTURE20: number; - TEXTURE21: number; - TEXTURE22: number; - TEXTURE23: number; - TEXTURE24: number; - TEXTURE25: number; - TEXTURE26: number; - TEXTURE27: number; - TEXTURE28: number; - TEXTURE29: number; - TEXTURE3: number; - TEXTURE30: number; - TEXTURE31: number; - TEXTURE4: number; - TEXTURE5: number; - TEXTURE6: number; - TEXTURE7: number; - TEXTURE8: number; - TEXTURE9: number; - TEXTURE_2D: number; - TEXTURE_BINDING_2D: number; - TEXTURE_BINDING_CUBE_MAP: number; - TEXTURE_CUBE_MAP: number; - TEXTURE_CUBE_MAP_NEGATIVE_X: number; - TEXTURE_CUBE_MAP_NEGATIVE_Y: number; - TEXTURE_CUBE_MAP_NEGATIVE_Z: number; - TEXTURE_CUBE_MAP_POSITIVE_X: number; - TEXTURE_CUBE_MAP_POSITIVE_Y: number; - TEXTURE_CUBE_MAP_POSITIVE_Z: number; - TEXTURE_MAG_FILTER: number; - TEXTURE_MIN_FILTER: number; - TEXTURE_WRAP_S: number; - TEXTURE_WRAP_T: number; - TRIANGLES: number; - TRIANGLE_FAN: number; - TRIANGLE_STRIP: number; - UNPACK_ALIGNMENT: number; - UNPACK_COLORSPACE_CONVERSION_WEBGL: number; - UNPACK_FLIP_Y_WEBGL: number; - UNPACK_PREMULTIPLY_ALPHA_WEBGL: number; - UNSIGNED_BYTE: number; - UNSIGNED_INT: number; - UNSIGNED_SHORT: number; - UNSIGNED_SHORT_4_4_4_4: number; - UNSIGNED_SHORT_5_5_5_1: number; - UNSIGNED_SHORT_5_6_5: number; - VALIDATE_STATUS: number; - VENDOR: number; - VERSION: number; - VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: number; - VERTEX_ATTRIB_ARRAY_ENABLED: number; - VERTEX_ATTRIB_ARRAY_NORMALIZED: number; - VERTEX_ATTRIB_ARRAY_POINTER: number; - VERTEX_ATTRIB_ARRAY_SIZE: number; - VERTEX_ATTRIB_ARRAY_STRIDE: number; - VERTEX_ATTRIB_ARRAY_TYPE: number; - VERTEX_SHADER: number; - VIEWPORT: number; - ZERO: number; + readonly ACTIVE_ATTRIBUTES: number; + readonly ACTIVE_TEXTURE: number; + readonly ACTIVE_UNIFORMS: number; + readonly ALIASED_LINE_WIDTH_RANGE: number; + readonly ALIASED_POINT_SIZE_RANGE: number; + readonly ALPHA: number; + readonly ALPHA_BITS: number; + readonly ALWAYS: number; + readonly ARRAY_BUFFER: number; + readonly ARRAY_BUFFER_BINDING: number; + readonly ATTACHED_SHADERS: number; + readonly BACK: number; + readonly BLEND: number; + readonly BLEND_COLOR: number; + readonly BLEND_DST_ALPHA: number; + readonly BLEND_DST_RGB: number; + readonly BLEND_EQUATION: number; + readonly BLEND_EQUATION_ALPHA: number; + readonly BLEND_EQUATION_RGB: number; + readonly BLEND_SRC_ALPHA: number; + readonly BLEND_SRC_RGB: number; + readonly BLUE_BITS: number; + readonly BOOL: number; + readonly BOOL_VEC2: number; + readonly BOOL_VEC3: number; + readonly BOOL_VEC4: number; + readonly BROWSER_DEFAULT_WEBGL: number; + readonly BUFFER_SIZE: number; + readonly BUFFER_USAGE: number; + readonly BYTE: number; + readonly CCW: number; + readonly CLAMP_TO_EDGE: number; + readonly COLOR_ATTACHMENT0: number; + readonly COLOR_BUFFER_BIT: number; + readonly COLOR_CLEAR_VALUE: number; + readonly COLOR_WRITEMASK: number; + readonly COMPILE_STATUS: number; + readonly COMPRESSED_TEXTURE_FORMATS: number; + readonly CONSTANT_ALPHA: number; + readonly CONSTANT_COLOR: number; + readonly CONTEXT_LOST_WEBGL: number; + readonly CULL_FACE: number; + readonly CULL_FACE_MODE: number; + readonly CURRENT_PROGRAM: number; + readonly CURRENT_VERTEX_ATTRIB: number; + readonly CW: number; + readonly DECR: number; + readonly DECR_WRAP: number; + readonly DELETE_STATUS: number; + readonly DEPTH_ATTACHMENT: number; + readonly DEPTH_BITS: number; + readonly DEPTH_BUFFER_BIT: number; + readonly DEPTH_CLEAR_VALUE: number; + readonly DEPTH_COMPONENT: number; + readonly DEPTH_COMPONENT16: number; + readonly DEPTH_FUNC: number; + readonly DEPTH_RANGE: number; + readonly DEPTH_STENCIL: number; + readonly DEPTH_STENCIL_ATTACHMENT: number; + readonly DEPTH_TEST: number; + readonly DEPTH_WRITEMASK: number; + readonly DITHER: number; + readonly DONT_CARE: number; + readonly DST_ALPHA: number; + readonly DST_COLOR: number; + readonly DYNAMIC_DRAW: number; + readonly ELEMENT_ARRAY_BUFFER: number; + readonly ELEMENT_ARRAY_BUFFER_BINDING: number; + readonly EQUAL: number; + readonly FASTEST: number; + readonly FLOAT: number; + readonly FLOAT_MAT2: number; + readonly FLOAT_MAT3: number; + readonly FLOAT_MAT4: number; + readonly FLOAT_VEC2: number; + readonly FLOAT_VEC3: number; + readonly FLOAT_VEC4: number; + readonly FRAGMENT_SHADER: number; + readonly FRAMEBUFFER: number; + readonly FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: number; + readonly FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: number; + readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: number; + readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: number; + readonly FRAMEBUFFER_BINDING: number; + readonly FRAMEBUFFER_COMPLETE: number; + readonly FRAMEBUFFER_INCOMPLETE_ATTACHMENT: number; + readonly FRAMEBUFFER_INCOMPLETE_DIMENSIONS: number; + readonly FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: number; + readonly FRAMEBUFFER_UNSUPPORTED: number; + readonly FRONT: number; + readonly FRONT_AND_BACK: number; + readonly FRONT_FACE: number; + readonly FUNC_ADD: number; + readonly FUNC_REVERSE_SUBTRACT: number; + readonly FUNC_SUBTRACT: number; + readonly GENERATE_MIPMAP_HINT: number; + readonly GEQUAL: number; + readonly GREATER: number; + readonly GREEN_BITS: number; + readonly HIGH_FLOAT: number; + readonly HIGH_INT: number; + readonly IMPLEMENTATION_COLOR_READ_FORMAT: number; + readonly IMPLEMENTATION_COLOR_READ_TYPE: number; + readonly INCR: number; + readonly INCR_WRAP: number; + readonly INT: number; + readonly INT_VEC2: number; + readonly INT_VEC3: number; + readonly INT_VEC4: number; + readonly INVALID_ENUM: number; + readonly INVALID_FRAMEBUFFER_OPERATION: number; + readonly INVALID_OPERATION: number; + readonly INVALID_VALUE: number; + readonly INVERT: number; + readonly KEEP: number; + readonly LEQUAL: number; + readonly LESS: number; + readonly LINEAR: number; + readonly LINEAR_MIPMAP_LINEAR: number; + readonly LINEAR_MIPMAP_NEAREST: number; + readonly LINES: number; + readonly LINE_LOOP: number; + readonly LINE_STRIP: number; + readonly LINE_WIDTH: number; + readonly LINK_STATUS: number; + readonly LOW_FLOAT: number; + readonly LOW_INT: number; + readonly LUMINANCE: number; + readonly LUMINANCE_ALPHA: number; + readonly MAX_COMBINED_TEXTURE_IMAGE_UNITS: number; + readonly MAX_CUBE_MAP_TEXTURE_SIZE: number; + readonly MAX_FRAGMENT_UNIFORM_VECTORS: number; + readonly MAX_RENDERBUFFER_SIZE: number; + readonly MAX_TEXTURE_IMAGE_UNITS: number; + readonly MAX_TEXTURE_SIZE: number; + readonly MAX_VARYING_VECTORS: number; + readonly MAX_VERTEX_ATTRIBS: number; + readonly MAX_VERTEX_TEXTURE_IMAGE_UNITS: number; + readonly MAX_VERTEX_UNIFORM_VECTORS: number; + readonly MAX_VIEWPORT_DIMS: number; + readonly MEDIUM_FLOAT: number; + readonly MEDIUM_INT: number; + readonly MIRRORED_REPEAT: number; + readonly NEAREST: number; + readonly NEAREST_MIPMAP_LINEAR: number; + readonly NEAREST_MIPMAP_NEAREST: number; + readonly NEVER: number; + readonly NICEST: number; + readonly NONE: number; + readonly NOTEQUAL: number; + readonly NO_ERROR: number; + readonly ONE: number; + readonly ONE_MINUS_CONSTANT_ALPHA: number; + readonly ONE_MINUS_CONSTANT_COLOR: number; + readonly ONE_MINUS_DST_ALPHA: number; + readonly ONE_MINUS_DST_COLOR: number; + readonly ONE_MINUS_SRC_ALPHA: number; + readonly ONE_MINUS_SRC_COLOR: number; + readonly OUT_OF_MEMORY: number; + readonly PACK_ALIGNMENT: number; + readonly POINTS: number; + readonly POLYGON_OFFSET_FACTOR: number; + readonly POLYGON_OFFSET_FILL: number; + readonly POLYGON_OFFSET_UNITS: number; + readonly RED_BITS: number; + readonly RENDERBUFFER: number; + readonly RENDERBUFFER_ALPHA_SIZE: number; + readonly RENDERBUFFER_BINDING: number; + readonly RENDERBUFFER_BLUE_SIZE: number; + readonly RENDERBUFFER_DEPTH_SIZE: number; + readonly RENDERBUFFER_GREEN_SIZE: number; + readonly RENDERBUFFER_HEIGHT: number; + readonly RENDERBUFFER_INTERNAL_FORMAT: number; + readonly RENDERBUFFER_RED_SIZE: number; + readonly RENDERBUFFER_STENCIL_SIZE: number; + readonly RENDERBUFFER_WIDTH: number; + readonly RENDERER: number; + readonly REPEAT: number; + readonly REPLACE: number; + readonly RGB: number; + readonly RGB565: number; + readonly RGB5_A1: number; + readonly RGBA: number; + readonly RGBA4: number; + readonly SAMPLER_2D: number; + readonly SAMPLER_CUBE: number; + readonly SAMPLES: number; + readonly SAMPLE_ALPHA_TO_COVERAGE: number; + readonly SAMPLE_BUFFERS: number; + readonly SAMPLE_COVERAGE: number; + readonly SAMPLE_COVERAGE_INVERT: number; + readonly SAMPLE_COVERAGE_VALUE: number; + readonly SCISSOR_BOX: number; + readonly SCISSOR_TEST: number; + readonly SHADER_TYPE: number; + readonly SHADING_LANGUAGE_VERSION: number; + readonly SHORT: number; + readonly SRC_ALPHA: number; + readonly SRC_ALPHA_SATURATE: number; + readonly SRC_COLOR: number; + readonly STATIC_DRAW: number; + readonly STENCIL_ATTACHMENT: number; + readonly STENCIL_BACK_FAIL: number; + readonly STENCIL_BACK_FUNC: number; + readonly STENCIL_BACK_PASS_DEPTH_FAIL: number; + readonly STENCIL_BACK_PASS_DEPTH_PASS: number; + readonly STENCIL_BACK_REF: number; + readonly STENCIL_BACK_VALUE_MASK: number; + readonly STENCIL_BACK_WRITEMASK: number; + readonly STENCIL_BITS: number; + readonly STENCIL_BUFFER_BIT: number; + readonly STENCIL_CLEAR_VALUE: number; + readonly STENCIL_FAIL: number; + readonly STENCIL_FUNC: number; + readonly STENCIL_INDEX: number; + readonly STENCIL_INDEX8: number; + readonly STENCIL_PASS_DEPTH_FAIL: number; + readonly STENCIL_PASS_DEPTH_PASS: number; + readonly STENCIL_REF: number; + readonly STENCIL_TEST: number; + readonly STENCIL_VALUE_MASK: number; + readonly STENCIL_WRITEMASK: number; + readonly STREAM_DRAW: number; + readonly SUBPIXEL_BITS: number; + readonly TEXTURE: number; + readonly TEXTURE0: number; + readonly TEXTURE1: number; + readonly TEXTURE10: number; + readonly TEXTURE11: number; + readonly TEXTURE12: number; + readonly TEXTURE13: number; + readonly TEXTURE14: number; + readonly TEXTURE15: number; + readonly TEXTURE16: number; + readonly TEXTURE17: number; + readonly TEXTURE18: number; + readonly TEXTURE19: number; + readonly TEXTURE2: number; + readonly TEXTURE20: number; + readonly TEXTURE21: number; + readonly TEXTURE22: number; + readonly TEXTURE23: number; + readonly TEXTURE24: number; + readonly TEXTURE25: number; + readonly TEXTURE26: number; + readonly TEXTURE27: number; + readonly TEXTURE28: number; + readonly TEXTURE29: number; + readonly TEXTURE3: number; + readonly TEXTURE30: number; + readonly TEXTURE31: number; + readonly TEXTURE4: number; + readonly TEXTURE5: number; + readonly TEXTURE6: number; + readonly TEXTURE7: number; + readonly TEXTURE8: number; + readonly TEXTURE9: number; + readonly TEXTURE_2D: number; + readonly TEXTURE_BINDING_2D: number; + readonly TEXTURE_BINDING_CUBE_MAP: number; + readonly TEXTURE_CUBE_MAP: number; + readonly TEXTURE_CUBE_MAP_NEGATIVE_X: number; + readonly TEXTURE_CUBE_MAP_NEGATIVE_Y: number; + readonly TEXTURE_CUBE_MAP_NEGATIVE_Z: number; + readonly TEXTURE_CUBE_MAP_POSITIVE_X: number; + readonly TEXTURE_CUBE_MAP_POSITIVE_Y: number; + readonly TEXTURE_CUBE_MAP_POSITIVE_Z: number; + readonly TEXTURE_MAG_FILTER: number; + readonly TEXTURE_MIN_FILTER: number; + readonly TEXTURE_WRAP_S: number; + readonly TEXTURE_WRAP_T: number; + readonly TRIANGLES: number; + readonly TRIANGLE_FAN: number; + readonly TRIANGLE_STRIP: number; + readonly UNPACK_ALIGNMENT: number; + readonly UNPACK_COLORSPACE_CONVERSION_WEBGL: number; + readonly UNPACK_FLIP_Y_WEBGL: number; + readonly UNPACK_PREMULTIPLY_ALPHA_WEBGL: number; + readonly UNSIGNED_BYTE: number; + readonly UNSIGNED_INT: number; + readonly UNSIGNED_SHORT: number; + readonly UNSIGNED_SHORT_4_4_4_4: number; + readonly UNSIGNED_SHORT_5_5_5_1: number; + readonly UNSIGNED_SHORT_5_6_5: number; + readonly VALIDATE_STATUS: number; + readonly VENDOR: number; + readonly VERSION: number; + readonly VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: number; + readonly VERTEX_ATTRIB_ARRAY_ENABLED: number; + readonly VERTEX_ATTRIB_ARRAY_NORMALIZED: number; + readonly VERTEX_ATTRIB_ARRAY_POINTER: number; + readonly VERTEX_ATTRIB_ARRAY_SIZE: number; + readonly VERTEX_ATTRIB_ARRAY_STRIDE: number; + readonly VERTEX_ATTRIB_ARRAY_TYPE: number; + readonly VERTEX_SHADER: number; + readonly VIEWPORT: number; + readonly ZERO: number; } interface WebGLShader extends WebGLObject { @@ -11918,9 +12709,9 @@ declare var WebGLShader: { } interface WebGLShaderPrecisionFormat { - precision: number; - rangeMax: number; - rangeMin: number; + readonly precision: number; + readonly rangeMax: number; + readonly rangeMin: number; } declare var WebGLShaderPrecisionFormat: { @@ -11996,21 +12787,21 @@ declare var WebKitPoint: { interface WebSocket extends EventTarget { binaryType: string; - bufferedAmount: number; - extensions: string; + readonly bufferedAmount: number; + readonly extensions: string; onclose: (ev: CloseEvent) => any; onerror: (ev: Event) => any; onmessage: (ev: MessageEvent) => any; onopen: (ev: Event) => any; - protocol: string; - readyState: number; - url: string; + readonly protocol: string; + readonly readyState: number; + readonly url: string; close(code?: number, reason?: string): void; send(data: any): void; - CLOSED: number; - CLOSING: number; - CONNECTING: number; - OPEN: number; + readonly CLOSED: number; + 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; @@ -12021,56 +12812,58 @@ interface WebSocket extends EventTarget { declare var WebSocket: { prototype: WebSocket; new(url: string, protocols?: string | string[]): WebSocket; - CLOSED: number; - CLOSING: number; - CONNECTING: number; - OPEN: number; + readonly CLOSED: number; + readonly CLOSING: number; + readonly CONNECTING: number; + readonly OPEN: number; } interface WheelEvent extends MouseEvent { - deltaMode: number; - deltaX: number; - deltaY: number; - deltaZ: number; + readonly deltaMode: number; + readonly deltaX: number; + readonly deltaY: number; + readonly deltaZ: number; + readonly wheelDelta: number; + readonly wheelDeltaX: number; + readonly wheelDeltaY: number; getCurrentPoint(element: Element): void; initWheelEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, screenXArg: number, screenYArg: number, clientXArg: number, clientYArg: number, buttonArg: number, relatedTargetArg: EventTarget, modifiersListArg: string, deltaXArg: number, deltaYArg: number, deltaZArg: number, deltaMode: number): void; - DOM_DELTA_LINE: number; - DOM_DELTA_PAGE: number; - DOM_DELTA_PIXEL: number; + readonly DOM_DELTA_LINE: number; + readonly DOM_DELTA_PAGE: number; + readonly DOM_DELTA_PIXEL: number; } declare var WheelEvent: { prototype: WheelEvent; new(typeArg: string, eventInitDict?: WheelEventInit): WheelEvent; - DOM_DELTA_LINE: number; - DOM_DELTA_PAGE: number; - DOM_DELTA_PIXEL: number; + readonly DOM_DELTA_LINE: number; + readonly DOM_DELTA_PAGE: number; + readonly DOM_DELTA_PIXEL: number; } interface Window extends EventTarget, WindowTimers, WindowSessionStorage, WindowLocalStorage, WindowConsole, GlobalEventHandlers, IDBEnvironment, WindowBase64 { - animationStartTime: number; - applicationCache: ApplicationCache; - clientInformation: Navigator; - closed: boolean; - crypto: Crypto; + readonly applicationCache: ApplicationCache; + readonly clientInformation: Navigator; + readonly closed: boolean; + readonly crypto: Crypto; defaultStatus: string; - devicePixelRatio: number; - doNotTrack: string; - document: Document; + readonly devicePixelRatio: number; + readonly doNotTrack: string; + readonly document: Document; event: Event; - external: External; - frameElement: Element; - frames: Window; - history: History; - innerHeight: number; - innerWidth: number; - length: number; - location: Location; - locationbar: BarProp; - menubar: BarProp; - msAnimationStartTime: number; + readonly external: External; + readonly frameElement: Element; + readonly frames: Window; + readonly history: History; + readonly innerHeight: number; + readonly innerWidth: number; + readonly length: number; + readonly location: Location; + readonly locationbar: BarProp; + readonly menubar: BarProp; + readonly msCredentials: MSCredentials; name: string; - navigator: Navigator; + readonly navigator: Navigator; offscreenBuffering: string | boolean; onabort: (ev: Event) => any; onafterprint: (ev: Event) => any; @@ -12084,6 +12877,7 @@ interface Window extends EventTarget, WindowTimers, WindowSessionStorage, Window oncompassneedscalibration: (ev: Event) => any; oncontextmenu: (ev: PointerEvent) => any; ondblclick: (ev: MouseEvent) => any; + ondevicelight: (ev: DeviceLightEvent) => any; ondevicemotion: (ev: DeviceMotionEvent) => any; ondeviceorientation: (ev: DeviceOrientationEvent) => any; ondrag: (ev: DragEvent) => any; @@ -12095,11 +12889,12 @@ interface Window extends EventTarget, WindowTimers, WindowSessionStorage, Window ondrop: (ev: DragEvent) => any; ondurationchange: (ev: Event) => any; onemptied: (ev: Event) => any; - onended: (ev: Event) => any; + onended: (ev: MediaStreamErrorEvent) => any; onerror: ErrorEventHandler; onfocus: (ev: FocusEvent) => any; onhashchange: (ev: HashChangeEvent) => any; oninput: (ev: Event) => any; + oninvalid: (ev: Event) => any; onkeydown: (ev: KeyboardEvent) => any; onkeypress: (ev: KeyboardEvent) => any; onkeyup: (ev: KeyboardEvent) => any; @@ -12115,7 +12910,7 @@ interface Window extends EventTarget, WindowTimers, WindowSessionStorage, Window onmouseout: (ev: MouseEvent) => any; onmouseover: (ev: MouseEvent) => any; onmouseup: (ev: MouseEvent) => any; - onmousewheel: (ev: MouseWheelEvent) => any; + onmousewheel: (ev: WheelEvent) => any; onmsgesturechange: (ev: MSGestureEvent) => any; onmsgesturedoubletap: (ev: MSGestureEvent) => any; onmsgestureend: (ev: MSGestureEvent) => any; @@ -12154,38 +12949,38 @@ interface Window extends EventTarget, WindowTimers, WindowSessionStorage, Window onsubmit: (ev: Event) => any; onsuspend: (ev: Event) => any; ontimeupdate: (ev: Event) => any; - ontouchcancel: any; - ontouchend: any; - ontouchmove: any; - ontouchstart: any; + ontouchcancel: (ev: TouchEvent) => any; + ontouchend: (ev: TouchEvent) => any; + ontouchmove: (ev: TouchEvent) => any; + ontouchstart: (ev: TouchEvent) => any; onunload: (ev: Event) => any; onvolumechange: (ev: Event) => any; onwaiting: (ev: Event) => any; - opener: Window; + readonly opener: Window; orientation: string | number; - outerHeight: number; - outerWidth: number; - pageXOffset: number; - pageYOffset: number; - parent: Window; - performance: Performance; - personalbar: BarProp; - screen: Screen; - screenLeft: number; - screenTop: number; - screenX: number; - screenY: number; - scrollX: number; - scrollY: number; - scrollbars: BarProp; - self: Window; + readonly outerHeight: number; + readonly outerWidth: number; + readonly pageXOffset: number; + readonly pageYOffset: number; + readonly parent: Window; + readonly performance: Performance; + readonly personalbar: BarProp; + readonly screen: Screen; + readonly screenLeft: number; + readonly screenTop: number; + readonly screenX: number; + readonly screenY: number; + readonly scrollX: number; + readonly scrollY: number; + readonly scrollbars: BarProp; + readonly self: Window; status: string; - statusbar: BarProp; - styleMedia: StyleMedia; - toolbar: BarProp; - top: Window; - window: Window; - URL: URL; + readonly statusbar: BarProp; + readonly styleMedia: StyleMedia; + readonly toolbar: BarProp; + readonly top: Window; + readonly window: Window; + URL: typeof URL; alert(message?: any): void; blur(): void; cancelAnimationFrame(handle: number): void; @@ -12199,12 +12994,9 @@ interface Window extends EventTarget, WindowTimers, WindowSessionStorage, Window matchMedia(mediaQuery: string): MediaQueryList; moveBy(x?: number, y?: number): void; moveTo(x?: number, y?: number): void; - msCancelRequestAnimationFrame(handle: number): void; - msMatchMedia(mediaQuery: string): MediaQueryList; - msRequestAnimationFrame(callback: FrameRequestCallback): number; msWriteProfilerMark(profilerMarkName: string): void; open(url?: string, target?: string, features?: string, replace?: boolean): Window; - postMessage(message: any, targetOrigin: string, ports?: any): void; + postMessage(message: any, targetOrigin: string, transfer?: any[]): void; print(): void; prompt(message?: string, _default?: string): string; releaseEvents(): void; @@ -12214,8 +13006,10 @@ interface Window extends EventTarget, WindowTimers, WindowSessionStorage, Window scroll(x?: number, y?: number): void; scrollBy(x?: number, y?: number): void; scrollTo(x?: number, y?: number): void; + webkitCancelAnimationFrame(handle: number): void; webkitConvertPointFromNodeToPage(node: Node, pt: WebKitPoint): WebKitPoint; webkitConvertPointFromPageToNode(node: Node, pt: WebKitPoint): WebKitPoint; + webkitRequestAnimationFrame(callback: FrameRequestCallback): number; addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; addEventListener(type: "MSGestureDoubleTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; addEventListener(type: "MSGestureEnd", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; @@ -12243,6 +13037,7 @@ interface Window extends EventTarget, WindowTimers, WindowSessionStorage, Window addEventListener(type: "compassneedscalibration", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "devicelight", listener: (ev: DeviceLightEvent) => any, useCapture?: boolean): void; addEventListener(type: "devicemotion", listener: (ev: DeviceMotionEvent) => any, useCapture?: boolean): void; addEventListener(type: "deviceorientation", listener: (ev: DeviceOrientationEvent) => any, useCapture?: boolean): void; addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void; @@ -12254,10 +13049,11 @@ interface Window extends EventTarget, WindowTimers, WindowSessionStorage, Window addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "ended", listener: (ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; addEventListener(type: "hashchange", listener: (ev: HashChangeEvent) => any, useCapture?: boolean): void; addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "invalid", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; @@ -12273,7 +13069,7 @@ interface Window extends EventTarget, WindowTimers, WindowSessionStorage, Window addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousewheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; addEventListener(type: "offline", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "online", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "orientationchange", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -12343,16 +13139,15 @@ declare var XMLDocument: { interface XMLHttpRequest extends EventTarget, XMLHttpRequestEventTarget { msCaching: string; onreadystatechange: (ev: ProgressEvent) => any; - readyState: number; - response: any; - responseBody: any; - responseText: string; + readonly readyState: number; + readonly response: any; + readonly responseText: string; responseType: string; - responseXML: any; - status: number; - statusText: string; + readonly responseXML: any; + readonly status: number; + readonly statusText: string; timeout: number; - upload: XMLHttpRequestUpload; + readonly upload: XMLHttpRequestUpload; withCredentials: boolean; abort(): void; getAllResponseHeaders(): string; @@ -12364,11 +13159,11 @@ interface XMLHttpRequest extends EventTarget, XMLHttpRequestEventTarget { send(data?: string): void; send(data?: any): void; setRequestHeader(header: string, value: string): void; - DONE: number; - HEADERS_RECEIVED: number; - LOADING: number; - OPENED: number; - UNSENT: number; + readonly DONE: number; + readonly HEADERS_RECEIVED: number; + 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; @@ -12383,11 +13178,11 @@ interface XMLHttpRequest extends EventTarget, XMLHttpRequestEventTarget { declare var XMLHttpRequest: { prototype: XMLHttpRequest; new(): XMLHttpRequest; - DONE: number; - HEADERS_RECEIVED: number; - LOADING: number; - OPENED: number; - UNSENT: number; + readonly DONE: number; + readonly HEADERS_RECEIVED: number; + readonly LOADING: number; + readonly OPENED: number; + readonly UNSENT: number; create(): XMLHttpRequest; } @@ -12439,40 +13234,40 @@ declare var XPathNSResolver: { } interface XPathResult { - booleanValue: boolean; - invalidIteratorState: boolean; - numberValue: number; - resultType: number; - singleNodeValue: Node; - snapshotLength: number; - stringValue: string; + readonly booleanValue: boolean; + readonly invalidIteratorState: boolean; + readonly numberValue: number; + readonly resultType: number; + readonly singleNodeValue: Node; + readonly snapshotLength: number; + readonly stringValue: string; iterateNext(): Node; snapshotItem(index: number): Node; - ANY_TYPE: number; - ANY_UNORDERED_NODE_TYPE: number; - BOOLEAN_TYPE: number; - FIRST_ORDERED_NODE_TYPE: number; - NUMBER_TYPE: number; - ORDERED_NODE_ITERATOR_TYPE: number; - ORDERED_NODE_SNAPSHOT_TYPE: number; - STRING_TYPE: number; - UNORDERED_NODE_ITERATOR_TYPE: number; - UNORDERED_NODE_SNAPSHOT_TYPE: number; + readonly ANY_TYPE: number; + readonly ANY_UNORDERED_NODE_TYPE: number; + readonly BOOLEAN_TYPE: number; + readonly FIRST_ORDERED_NODE_TYPE: number; + readonly NUMBER_TYPE: number; + readonly ORDERED_NODE_ITERATOR_TYPE: number; + readonly ORDERED_NODE_SNAPSHOT_TYPE: number; + readonly STRING_TYPE: number; + readonly UNORDERED_NODE_ITERATOR_TYPE: number; + readonly UNORDERED_NODE_SNAPSHOT_TYPE: number; } declare var XPathResult: { prototype: XPathResult; new(): XPathResult; - ANY_TYPE: number; - ANY_UNORDERED_NODE_TYPE: number; - BOOLEAN_TYPE: number; - FIRST_ORDERED_NODE_TYPE: number; - NUMBER_TYPE: number; - ORDERED_NODE_ITERATOR_TYPE: number; - ORDERED_NODE_SNAPSHOT_TYPE: number; - STRING_TYPE: number; - UNORDERED_NODE_ITERATOR_TYPE: number; - UNORDERED_NODE_SNAPSHOT_TYPE: number; + readonly ANY_TYPE: number; + readonly ANY_UNORDERED_NODE_TYPE: number; + readonly BOOLEAN_TYPE: number; + readonly FIRST_ORDERED_NODE_TYPE: number; + readonly NUMBER_TYPE: number; + readonly ORDERED_NODE_ITERATOR_TYPE: number; + readonly ORDERED_NODE_SNAPSHOT_TYPE: number; + readonly STRING_TYPE: number; + readonly UNORDERED_NODE_ITERATOR_TYPE: number; + readonly UNORDERED_NODE_SNAPSHOT_TYPE: number; } interface XSLTProcessor { @@ -12497,6 +13292,18 @@ interface AbstractWorker { addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } +interface CanvasPathMethods { + arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, anticlockwise?: boolean): void; + arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): void; + bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): void; + closePath(): void; + ellipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number, startAngle: number, endAngle: number, anticlockwise?: boolean): void; + lineTo(x: number, y: number): void; + moveTo(x: number, y: number): void; + quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void; + rect(x: number, y: number, w: number, h: number): void; +} + interface ChildNode { remove(): void; } @@ -12519,6 +13326,7 @@ interface DocumentEvent { createEvent(eventInterface:"CommandEvent"): CommandEvent; createEvent(eventInterface:"CompositionEvent"): CompositionEvent; createEvent(eventInterface:"CustomEvent"): CustomEvent; + createEvent(eventInterface:"DeviceLightEvent"): DeviceLightEvent; createEvent(eventInterface:"DeviceMotionEvent"): DeviceMotionEvent; createEvent(eventInterface:"DeviceOrientationEvent"): DeviceOrientationEvent; createEvent(eventInterface:"DragEvent"): DragEvent; @@ -12530,6 +13338,7 @@ interface DocumentEvent { createEvent(eventInterface:"HashChangeEvent"): HashChangeEvent; createEvent(eventInterface:"IDBVersionChangeEvent"): IDBVersionChangeEvent; createEvent(eventInterface:"KeyboardEvent"): KeyboardEvent; + createEvent(eventInterface:"ListeningStateChangedEvent"): ListeningStateChangedEvent; createEvent(eventInterface:"LongRunningScriptDetectedEvent"): LongRunningScriptDetectedEvent; createEvent(eventInterface:"MSGestureEvent"): MSGestureEvent; createEvent(eventInterface:"MSManipulationEvent"): MSManipulationEvent; @@ -12537,21 +13346,31 @@ interface DocumentEvent { createEvent(eventInterface:"MSMediaKeyNeededEvent"): MSMediaKeyNeededEvent; createEvent(eventInterface:"MSPointerEvent"): MSPointerEvent; createEvent(eventInterface:"MSSiteModeEvent"): MSSiteModeEvent; + createEvent(eventInterface:"MediaEncryptedEvent"): MediaEncryptedEvent; + createEvent(eventInterface:"MediaKeyMessageEvent"): MediaKeyMessageEvent; + createEvent(eventInterface:"MediaStreamErrorEvent"): MediaStreamErrorEvent; + createEvent(eventInterface:"MediaStreamTrackEvent"): MediaStreamTrackEvent; createEvent(eventInterface:"MessageEvent"): MessageEvent; createEvent(eventInterface:"MouseEvent"): MouseEvent; createEvent(eventInterface:"MouseEvents"): MouseEvent; - createEvent(eventInterface:"MouseWheelEvent"): MouseWheelEvent; createEvent(eventInterface:"MutationEvent"): MutationEvent; createEvent(eventInterface:"MutationEvents"): MutationEvent; createEvent(eventInterface:"NavigationCompletedEvent"): NavigationCompletedEvent; createEvent(eventInterface:"NavigationEvent"): NavigationEvent; createEvent(eventInterface:"NavigationEventWithReferrer"): NavigationEventWithReferrer; createEvent(eventInterface:"OfflineAudioCompletionEvent"): OfflineAudioCompletionEvent; + createEvent(eventInterface:"OverflowEvent"): OverflowEvent; createEvent(eventInterface:"PageTransitionEvent"): PageTransitionEvent; createEvent(eventInterface:"PermissionRequestedEvent"): PermissionRequestedEvent; createEvent(eventInterface:"PointerEvent"): PointerEvent; createEvent(eventInterface:"PopStateEvent"): PopStateEvent; createEvent(eventInterface:"ProgressEvent"): ProgressEvent; + createEvent(eventInterface:"RTCDTMFToneChangeEvent"): RTCDTMFToneChangeEvent; + createEvent(eventInterface:"RTCDtlsTransportStateChangedEvent"): RTCDtlsTransportStateChangedEvent; + createEvent(eventInterface:"RTCIceCandidatePairChangedEvent"): RTCIceCandidatePairChangedEvent; + createEvent(eventInterface:"RTCIceGathererEvent"): RTCIceGathererEvent; + createEvent(eventInterface:"RTCIceTransportStateChangedEvent"): RTCIceTransportStateChangedEvent; + createEvent(eventInterface:"RTCSsrcConflictEvent"): RTCSsrcConflictEvent; createEvent(eventInterface:"SVGZoomEvent"): SVGZoomEvent; createEvent(eventInterface:"SVGZoomEvents"): SVGZoomEvent; createEvent(eventInterface:"ScriptNotifyEvent"): ScriptNotifyEvent; @@ -12569,11 +13388,11 @@ interface DocumentEvent { } interface ElementTraversal { - childElementCount: number; - firstElementChild: Element; - lastElementChild: Element; - nextElementSibling: Element; - previousElementSibling: Element; + readonly childElementCount: number; + readonly firstElementChild: Element; + readonly lastElementChild: Element; + readonly nextElementSibling: Element; + readonly previousElementSibling: Element; } interface GetSVGDocument { @@ -12618,12 +13437,11 @@ interface HTMLTableAlignment { } interface IDBEnvironment { - indexedDB: IDBFactory; - msIndexedDB: IDBFactory; + readonly indexedDB: IDBFactory; } interface LinkStyle { - sheet: StyleSheet; + readonly sheet: StyleSheet; } interface MSBaseReader { @@ -12633,12 +13451,12 @@ interface MSBaseReader { onloadend: (ev: ProgressEvent) => any; onloadstart: (ev: Event) => any; onprogress: (ev: ProgressEvent) => any; - readyState: number; - result: any; + readonly readyState: number; + readonly result: any; abort(): void; - DONE: number; - EMPTY: number; - LOADING: number; + 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; @@ -12666,27 +13484,32 @@ interface NavigatorContentUtils { } interface NavigatorGeolocation { - geolocation: Geolocation; + readonly geolocation: Geolocation; } interface NavigatorID { - appName: string; - appVersion: string; - platform: string; - product: string; - productSub: string; - userAgent: string; - vendor: string; - vendorSub: string; + readonly appName: string; + readonly appVersion: string; + readonly platform: string; + readonly product: string; + readonly productSub: string; + readonly userAgent: string; + readonly vendor: string; + readonly vendorSub: string; } interface NavigatorOnLine { - onLine: boolean; + readonly onLine: boolean; } interface NavigatorStorageUtils { } +interface NavigatorUserMedia { + readonly mediaDevices: MediaDevices; + getUserMedia(constraints: MediaStreamConstraints, successCallback: NavigatorUserMediaSuccessCallback, errorCallback: NavigatorUserMediaErrorCallback): void; +} + interface NodeSelector { querySelector(selectors: string): Element; querySelectorAll(selectors: string): NodeListOf; @@ -12697,29 +13520,29 @@ interface RandomSource { } interface SVGAnimatedPathData { - pathSegList: SVGPathSegList; + readonly pathSegList: SVGPathSegList; } interface SVGAnimatedPoints { - animatedPoints: SVGPointList; - points: SVGPointList; + readonly animatedPoints: SVGPointList; + readonly points: SVGPointList; } interface SVGExternalResourcesRequired { - externalResourcesRequired: SVGAnimatedBoolean; + readonly externalResourcesRequired: SVGAnimatedBoolean; } interface SVGFilterPrimitiveStandardAttributes extends SVGStylable { - height: SVGAnimatedLength; - result: SVGAnimatedString; - width: SVGAnimatedLength; - x: SVGAnimatedLength; - y: SVGAnimatedLength; + readonly height: SVGAnimatedLength; + readonly result: SVGAnimatedString; + readonly width: SVGAnimatedLength; + readonly x: SVGAnimatedLength; + readonly y: SVGAnimatedLength; } interface SVGFitToViewBox { - preserveAspectRatio: SVGAnimatedPreserveAspectRatio; - viewBox: SVGAnimatedRect; + readonly preserveAspectRatio: SVGAnimatedPreserveAspectRatio; + readonly viewBox: SVGAnimatedRect; } interface SVGLangSpace { @@ -12728,8 +13551,8 @@ interface SVGLangSpace { } interface SVGLocatable { - farthestViewportElement: SVGElement; - nearestViewportElement: SVGElement; + readonly farthestViewportElement: SVGElement; + readonly nearestViewportElement: SVGElement; getBBox(): SVGRect; getCTM(): SVGMatrix; getScreenCTM(): SVGMatrix; @@ -12738,22 +13561,22 @@ interface SVGLocatable { interface SVGStylable { className: any; - style: CSSStyleDeclaration; + readonly style: CSSStyleDeclaration; } interface SVGTests { - requiredExtensions: SVGStringList; - requiredFeatures: SVGStringList; - systemLanguage: SVGStringList; + readonly requiredExtensions: SVGStringList; + readonly requiredFeatures: SVGStringList; + readonly systemLanguage: SVGStringList; hasExtension(extension: string): boolean; } interface SVGTransformable extends SVGLocatable { - transform: SVGAnimatedTransformList; + readonly transform: SVGAnimatedTransformList; } interface SVGURIReference { - href: SVGAnimatedString; + readonly href: SVGAnimatedString; } interface WindowBase64 { @@ -12762,15 +13585,15 @@ interface WindowBase64 { } interface WindowConsole { - console: Console; + readonly console: Console; } interface WindowLocalStorage { - localStorage: Storage; + readonly localStorage: Storage; } interface WindowSessionStorage { - sessionStorage: Storage; + readonly sessionStorage: Storage; } interface WindowTimers extends Object, WindowTimersExtension { @@ -12782,8 +13605,6 @@ interface WindowTimers extends Object, WindowTimersExtension { interface WindowTimersExtension { clearImmediate(handle: number): void; - msClearImmediate(handle: number): void; - msSetImmediate(expression: any, ...args: any[]): number; setImmediate(expression: any, ...args: any[]): number; } @@ -12813,22 +13634,18 @@ interface StorageEventInit extends EventInit { storageArea?: Storage; } -interface IDBObjectStoreParameters { - keyPath?: string | string[]; - autoIncrement?: boolean; -} - -interface IDBIndexParameters { - unique?: boolean; - multiEntry?: boolean; -} - interface NodeListOf extends NodeList { length: number; item(index: number): TNode; [index: number]: TNode; } +interface HTMLCollectionOf extends HTMLCollection { + item(index: number): T; + namedItem(name: string): T; + [index: number]: T; +} + interface BlobPropertyBag { type?: string; endings?: string; @@ -12858,15 +13675,6 @@ interface ProgressEventInit extends EventInit { total?: number; } -interface HTMLTemplateElement extends HTMLElement { - content: DocumentFragment; -} - -declare var HTMLTemplateElement: { - prototype: HTMLTemplateElement; - new(): HTMLTemplateElement; -} - interface HTMLPictureElement extends HTMLElement { } @@ -12875,6 +13683,14 @@ declare var HTMLPictureElement: { new(): HTMLPictureElement; } +interface ClipboardEventInit extends EventInit { + data?: string; + dataType?: string; +} + +interface IDBArrayKey extends Array { +} + declare type EventListenerOrEventListenerObject = EventListener | EventListenerObject; interface ErrorEventHandler { @@ -12913,10 +13729,18 @@ interface DecodeErrorCallback { interface FunctionStringCallback { (data: string): void; } +interface NavigatorUserMediaSuccessCallback { + (stream: MediaStream): void; +} +interface NavigatorUserMediaErrorCallback { + (error: MediaStreamError): void; +} +interface ForEachCallback { + (keyId: any, status: string): void; +} declare var Audio: {new(src?: string): HTMLAudioElement; }; declare var Image: {new(width?: number, height?: number): HTMLImageElement; }; declare var Option: {new(text?: string, value?: string, defaultSelected?: boolean, selected?: boolean): HTMLOptionElement; }; -declare var animationStartTime: number; declare var applicationCache: ApplicationCache; declare var clientInformation: Navigator; declare var closed: boolean; @@ -12936,7 +13760,7 @@ declare var length: number; declare var location: Location; declare var locationbar: BarProp; declare var menubar: BarProp; -declare var msAnimationStartTime: number; +declare var msCredentials: MSCredentials; declare var name: string; declare var navigator: Navigator; declare var offscreenBuffering: string | boolean; @@ -12952,6 +13776,7 @@ declare var onclick: (ev: MouseEvent) => any; declare var oncompassneedscalibration: (ev: Event) => any; declare var oncontextmenu: (ev: PointerEvent) => any; declare var ondblclick: (ev: MouseEvent) => any; +declare var ondevicelight: (ev: DeviceLightEvent) => any; declare var ondevicemotion: (ev: DeviceMotionEvent) => any; declare var ondeviceorientation: (ev: DeviceOrientationEvent) => any; declare var ondrag: (ev: DragEvent) => any; @@ -12963,11 +13788,12 @@ declare var ondragstart: (ev: DragEvent) => any; declare var ondrop: (ev: DragEvent) => any; declare var ondurationchange: (ev: Event) => any; declare var onemptied: (ev: Event) => any; -declare var onended: (ev: Event) => any; +declare var onended: (ev: MediaStreamErrorEvent) => any; declare var onerror: ErrorEventHandler; declare var onfocus: (ev: FocusEvent) => any; declare var onhashchange: (ev: HashChangeEvent) => any; declare var oninput: (ev: Event) => any; +declare var oninvalid: (ev: Event) => any; declare var onkeydown: (ev: KeyboardEvent) => any; declare var onkeypress: (ev: KeyboardEvent) => any; declare var onkeyup: (ev: KeyboardEvent) => any; @@ -12983,7 +13809,7 @@ declare var onmousemove: (ev: MouseEvent) => any; declare var onmouseout: (ev: MouseEvent) => any; declare var onmouseover: (ev: MouseEvent) => any; declare var onmouseup: (ev: MouseEvent) => any; -declare var onmousewheel: (ev: MouseWheelEvent) => any; +declare var onmousewheel: (ev: WheelEvent) => any; declare var onmsgesturechange: (ev: MSGestureEvent) => any; declare var onmsgesturedoubletap: (ev: MSGestureEvent) => any; declare var onmsgestureend: (ev: MSGestureEvent) => any; @@ -13022,10 +13848,10 @@ declare var onstorage: (ev: StorageEvent) => any; declare var onsubmit: (ev: Event) => any; declare var onsuspend: (ev: Event) => any; declare var ontimeupdate: (ev: Event) => any; -declare var ontouchcancel: any; -declare var ontouchend: any; -declare var ontouchmove: any; -declare var ontouchstart: any; +declare var ontouchcancel: (ev: TouchEvent) => any; +declare var ontouchend: (ev: TouchEvent) => any; +declare var ontouchmove: (ev: TouchEvent) => any; +declare var ontouchstart: (ev: TouchEvent) => any; declare var onunload: (ev: Event) => any; declare var onvolumechange: (ev: Event) => any; declare var onwaiting: (ev: Event) => any; @@ -13053,7 +13879,6 @@ declare var styleMedia: StyleMedia; declare var toolbar: BarProp; declare var top: Window; declare var window: Window; -declare var URL: URL; declare function alert(message?: any): void; declare function blur(): void; declare function cancelAnimationFrame(handle: number): void; @@ -13067,12 +13892,9 @@ declare function getSelection(): Selection; declare function matchMedia(mediaQuery: string): MediaQueryList; declare function moveBy(x?: number, y?: number): void; declare function moveTo(x?: number, y?: number): void; -declare function msCancelRequestAnimationFrame(handle: number): void; -declare function msMatchMedia(mediaQuery: string): MediaQueryList; -declare function msRequestAnimationFrame(callback: FrameRequestCallback): number; declare function msWriteProfilerMark(profilerMarkName: string): void; declare function open(url?: string, target?: string, features?: string, replace?: boolean): Window; -declare function postMessage(message: any, targetOrigin: string, ports?: any): void; +declare function postMessage(message: any, targetOrigin: string, transfer?: any[]): void; declare function print(): void; declare function prompt(message?: string, _default?: string): string; declare function releaseEvents(): void; @@ -13082,19 +13904,19 @@ declare function resizeTo(x?: number, y?: number): void; declare function scroll(x?: number, y?: number): void; declare function scrollBy(x?: number, y?: number): void; declare function scrollTo(x?: number, y?: number): void; +declare function webkitCancelAnimationFrame(handle: number): void; declare function webkitConvertPointFromNodeToPage(node: Node, pt: WebKitPoint): WebKitPoint; declare function webkitConvertPointFromPageToNode(node: Node, pt: WebKitPoint): WebKitPoint; +declare function webkitRequestAnimationFrame(callback: FrameRequestCallback): number; declare function toString(): string; -declare function addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +declare function addEventListener(type: string, listener?: EventListenerOrEventListenerObject, useCapture?: boolean): void; declare function dispatchEvent(evt: Event): boolean; -declare function removeEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +declare function removeEventListener(type: string, listener?: EventListenerOrEventListenerObject, useCapture?: boolean): void; declare function clearInterval(handle: number): void; declare function clearTimeout(handle: number): void; declare function setInterval(handler: any, timeout?: any, ...args: any[]): number; declare function setTimeout(handler: any, timeout?: any, ...args: any[]): number; declare function clearImmediate(handle: number): void; -declare function msClearImmediate(handle: number): void; -declare function msSetImmediate(expression: any, ...args: any[]): number; declare function setImmediate(expression: any, ...args: any[]): number; declare var sessionStorage: Storage; declare var localStorage: Storage; @@ -13109,7 +13931,6 @@ declare var onpointerover: (ev: PointerEvent) => any; declare var onpointerup: (ev: PointerEvent) => any; declare var onwheel: (ev: WheelEvent) => any; declare var indexedDB: IDBFactory; -declare var msIndexedDB: IDBFactory; declare function atob(encodedString: string): string; declare function btoa(rawString: string): string; declare function addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; @@ -13139,6 +13960,7 @@ declare function addEventListener(type: "click", listener: (ev: MouseEvent) => a declare function addEventListener(type: "compassneedscalibration", listener: (ev: Event) => any, useCapture?: boolean): void; declare function addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; declare function addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "devicelight", listener: (ev: DeviceLightEvent) => any, useCapture?: boolean): void; declare function addEventListener(type: "devicemotion", listener: (ev: DeviceMotionEvent) => any, useCapture?: boolean): void; declare function addEventListener(type: "deviceorientation", listener: (ev: DeviceOrientationEvent) => any, useCapture?: boolean): void; declare function addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void; @@ -13150,10 +13972,11 @@ declare function addEventListener(type: "dragstart", listener: (ev: DragEvent) = declare function addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; declare function addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; declare function addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; +declare function addEventListener(type: "ended", listener: (ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; declare function addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; declare function addEventListener(type: "hashchange", listener: (ev: HashChangeEvent) => any, useCapture?: boolean): void; declare function addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; +declare function addEventListener(type: "invalid", listener: (ev: Event) => any, useCapture?: boolean): void; declare function addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; declare function addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; declare function addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; @@ -13169,7 +13992,7 @@ declare function addEventListener(type: "mousemove", listener: (ev: MouseEvent) declare function addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; declare function addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; declare function addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "mousewheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; declare function addEventListener(type: "offline", listener: (ev: Event) => any, useCapture?: boolean): void; declare function addEventListener(type: "online", listener: (ev: Event) => any, useCapture?: boolean): void; declare function addEventListener(type: "orientationchange", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -13205,4 +14028,36 @@ declare function addEventListener(type: "unload", listener: (ev: Event) => any, declare function addEventListener(type: "volumechange", listener: (ev: Event) => any, useCapture?: boolean): void; declare function addEventListener(type: "waiting", listener: (ev: Event) => any, useCapture?: boolean): void; declare function addEventListener(type: "wheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; \ No newline at end of file +declare function addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +type AAGUID = string; +type AlgorithmIdentifier = string | Algorithm; +type ConstrainBoolean = boolean | ConstrainBooleanParameters; +type ConstrainDOMString = string | string[] | ConstrainDOMStringParameters; +type ConstrainDouble = number | ConstrainDoubleRange; +type ConstrainLong = number | ConstrainLongRange; +type CryptoOperationData = ArrayBufferView; +type GLbitfield = number; +type GLboolean = boolean; +type GLbyte = number; +type GLclampf = number; +type GLenum = number; +type GLfloat = number; +type GLint = number; +type GLintptr = number; +type GLshort = number; +type GLsizei = number; +type GLsizeiptr = number; +type GLubyte = number; +type GLuint = number; +type GLushort = number; +type IDBKeyPath = string; +type KeyFormat = string; +type KeyType = string; +type KeyUsage = string; +type MSInboundPayload = MSVideoRecvPayload | MSAudioRecvPayload; +type MSLocalClientEvent = MSLocalClientEventBase | MSAudioLocalClientEvent; +type MSOutboundPayload = MSVideoSendPayload | MSAudioSendPayload; +type RTCIceGatherCandidate = RTCIceCandidate | RTCIceCandidateComplete; +type RTCTransport = RTCDtlsTransport | RTCSrtpSdesTransport; +type payloadtype = number; +type IDBValidKey = number | string | Date | IDBArrayKey; \ No newline at end of file diff --git a/lib/lib.dom.iterable.d.ts b/lib/lib.dom.iterable.d.ts new file mode 100644 index 00000000000..e9cf451bf49 --- /dev/null +++ b/lib/lib.dom.iterable.d.ts @@ -0,0 +1,29 @@ +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. All rights reserved. +Licensed under the Apache License, Version 2.0 (the "License"); you may not use +this file except in compliance with the License. You may obtain a copy of the +License at http://www.apache.org/licenses/LICENSE-2.0 + +THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED +WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, +MERCHANTABLITY OR NON-INFRINGEMENT. + +See the Apache Version 2.0 License for specific language governing permissions +and limitations under the License. +***************************************************************************** */ + +/// +/// + +interface DOMTokenList { + [Symbol.iterator](): IterableIterator; +} + +interface NodeList { + [Symbol.iterator](): IterableIterator +} + +interface NodeListOf { + [Symbol.iterator](): IterableIterator +} diff --git a/lib/lib.es2015.collection.d.ts b/lib/lib.es2015.collection.d.ts new file mode 100644 index 00000000000..b1dbcac592d --- /dev/null +++ b/lib/lib.es2015.collection.d.ts @@ -0,0 +1,86 @@ +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. All rights reserved. +Licensed under the Apache License, Version 2.0 (the "License"); you may not use +this file except in compliance with the License. You may obtain a copy of the +License at http://www.apache.org/licenses/LICENSE-2.0 + +THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED +WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, +MERCHANTABLITY OR NON-INFRINGEMENT. + +See the Apache Version 2.0 License for specific language governing permissions +and limitations under the License. +***************************************************************************** */ + +/// +interface Map { + clear(): void; + delete(key: K): boolean; + forEach(callbackfn: (value: V, index: K, map: Map) => void, thisArg?: any): void; + get(key: K): V | undefined; + has(key: K): boolean; + set(key: K, value?: V): Map; + readonly size: number; +} + +interface MapConstructor { + new (): Map; + new (): Map; + readonly prototype: Map; +} +declare var Map: MapConstructor; + +interface WeakMap { + clear(): void; + delete(key: K): boolean; + get(key: K): V | undefined; + has(key: K): boolean; + set(key: K, value?: V): WeakMap; + +} + +interface WeakMapConstructor { + new (): WeakMap; + new (): WeakMap; + readonly prototype: WeakMap; +} +declare var WeakMap: WeakMapConstructor; + +interface Set { + add(value: T): Set; + clear(): void; + delete(value: T): boolean; + entries(): IterableIterator<[T, T]>; + forEach(callbackfn: (value: T, index: T, set: Set) => void, thisArg?: any): void; + has(value: T): boolean; + keys(): IterableIterator; + readonly size: number; + values(): IterableIterator; + [Symbol.iterator]():IterableIterator; + readonly [Symbol.toStringTag]: "Set"; +} + +interface SetConstructor { + new (): Set; + new (): Set; + new (iterable: Iterable): Set; + readonly prototype: Set; +} +declare var Set: SetConstructor; + +interface WeakSet { + add(value: T): WeakSet; + clear(): void; + delete(value: T): boolean; + has(value: T): boolean; + readonly [Symbol.toStringTag]: "WeakSet"; +} + +interface WeakSetConstructor { + new (): WeakSet; + new (): WeakSet; + new (iterable: Iterable): WeakSet; + readonly prototype: WeakSet; +} +declare var WeakSet: WeakSetConstructor; diff --git a/lib/lib.es2015.core.d.ts b/lib/lib.es2015.core.d.ts new file mode 100644 index 00000000000..fb6b7b96df5 --- /dev/null +++ b/lib/lib.es2015.core.d.ts @@ -0,0 +1,499 @@ +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. All rights reserved. +Licensed under the Apache License, Version 2.0 (the "License"); you may not use +this file except in compliance with the License. You may obtain a copy of the +License at http://www.apache.org/licenses/LICENSE-2.0 + +THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED +WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, +MERCHANTABLITY OR NON-INFRINGEMENT. + +See the Apache Version 2.0 License for specific language governing permissions +and limitations under the License. +***************************************************************************** */ + +/// +declare type PropertyKey = string | number | symbol; + +interface Array { + /** + * Returns the value of the first element in the array where predicate is true, and undefined + * otherwise. + * @param predicate find calls predicate once for each element of the array, in ascending + * order, until it finds one where predicate returns true. If such an element is found, find + * immediately returns that element value. Otherwise, find returns undefined. + * @param thisArg If provided, it will be used as the this value for each invocation of + * predicate. If it is not provided, undefined is used instead. + */ + find(predicate: (value: T, index: number, obj: Array) => boolean, thisArg?: any): T | undefined; + + /** + * Returns the index of the first element in the array where predicate is true, and undefined + * otherwise. + * @param predicate find calls predicate once for each element of the array, in ascending + * order, until it finds one where predicate returns true. If such an element is found, find + * immediately returns that element value. Otherwise, find returns undefined. + * @param thisArg If provided, it will be used as the this value for each invocation of + * predicate. If it is not provided, undefined is used instead. + */ + findIndex(predicate: (value: T) => boolean, thisArg?: any): number | undefined; + + /** + * Returns the this object after filling the section identified by start and end with value + * @param value value to fill array section with + * @param start index to start filling the array at. If start is negative, it is treated as + * length+start where length is the length of the array. + * @param end index to stop filling the array at. If end is negative, it is treated as + * length+end. + */ + fill(value: T, start?: number, end?: number): T[]; + + /** + * Returns the this object after copying a section of the array identified by start and end + * to the same array starting at position target + * @param target If target is negative, it is treated as length+target where length is the + * length of the array. + * @param start If start is negative, it is treated as length+start. If end is negative, it + * is treated as length+end. + * @param end If not specified, length of the this object is used as its default value. + */ + copyWithin(target: number, start: number, end?: number): T[]; +} + +interface ArrayConstructor { + /** + * Creates an array from an array-like object. + * @param arrayLike An array-like object to convert to an array. + * @param mapfn A mapping function to call on every element of the array. + * @param thisArg Value of 'this' used to invoke the mapfn. + */ + from(arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): Array; + + + /** + * Creates an array from an array-like object. + * @param arrayLike An array-like object to convert to an array. + */ + from(arrayLike: ArrayLike): Array; + + /** + * Returns a new array from a set of elements. + * @param items A set of elements to include in the new array object. + */ + of(...items: T[]): Array; +} + +interface Function { + /** + * Returns the name of the function. Function names are read-only and can not be changed. + */ + readonly name: string; +} + +interface Math { + /** + * Returns the number of leading zero bits in the 32-bit binary representation of a number. + * @param x A numeric expression. + */ + clz32(x: number): number; + + /** + * Returns the result of 32-bit multiplication of two numbers. + * @param x First number + * @param y Second number + */ + imul(x: number, y: number): number; + + /** + * Returns the sign of the x, indicating whether x is positive, negative or zero. + * @param x The numeric expression to test + */ + sign(x: number): number; + + /** + * Returns the base 10 logarithm of a number. + * @param x A numeric expression. + */ + log10(x: number): number; + + /** + * Returns the base 2 logarithm of a number. + * @param x A numeric expression. + */ + log2(x: number): number; + + /** + * Returns the natural logarithm of 1 + x. + * @param x A numeric expression. + */ + log1p(x: number): number; + + /** + * Returns the result of (e^x - 1) of x (e raised to the power of x, where e is the base of + * the natural logarithms). + * @param x A numeric expression. + */ + expm1(x: number): number; + + /** + * Returns the hyperbolic cosine of a number. + * @param x A numeric expression that contains an angle measured in radians. + */ + cosh(x: number): number; + + /** + * Returns the hyperbolic sine of a number. + * @param x A numeric expression that contains an angle measured in radians. + */ + sinh(x: number): number; + + /** + * Returns the hyperbolic tangent of a number. + * @param x A numeric expression that contains an angle measured in radians. + */ + tanh(x: number): number; + + /** + * Returns the inverse hyperbolic cosine of a number. + * @param x A numeric expression that contains an angle measured in radians. + */ + acosh(x: number): number; + + /** + * Returns the inverse hyperbolic sine of a number. + * @param x A numeric expression that contains an angle measured in radians. + */ + asinh(x: number): number; + + /** + * Returns the inverse hyperbolic tangent of a number. + * @param x A numeric expression that contains an angle measured in radians. + */ + atanh(x: number): number; + + /** + * Returns the square root of the sum of squares of its arguments. + * @param values Values to compute the square root for. + * If no arguments are passed, the result is +0. + * If there is only one argument, the result is the absolute value. + * If any argument is +Infinity or -Infinity, the result is +Infinity. + * If any argument is NaN, the result is NaN. + * If all arguments are either +0 or −0, the result is +0. + */ + hypot(...values: number[] ): number; + + /** + * Returns the integral part of the a numeric expression, x, removing any fractional digits. + * If x is already an integer, the result is x. + * @param x A numeric expression. + */ + trunc(x: number): number; + + /** + * Returns the nearest single precision float representation of a number. + * @param x A numeric expression. + */ + fround(x: number): number; + + /** + * Returns an implementation-dependent approximation to the cube root of number. + * @param x A numeric expression. + */ + cbrt(x: number): number; +} + +interface NumberConstructor { + /** + * The value of Number.EPSILON is the difference between 1 and the smallest value greater than 1 + * that is representable as a Number value, which is approximately: + * 2.2204460492503130808472633361816 x 10‍−‍16. + */ + readonly EPSILON: number; + + /** + * Returns true if passed value is finite. + * Unlike the global isFininte, Number.isFinite doesn't forcibly convert the parameter to a + * number. Only finite values of the type number, result in true. + * @param number A numeric value. + */ + isFinite(number: number): boolean; + + /** + * Returns true if the value passed is an integer, false otherwise. + * @param number A numeric value. + */ + isInteger(number: number): boolean; + + /** + * Returns a Boolean value that indicates whether a value is the reserved value NaN (not a + * number). Unlike the global isNaN(), Number.isNaN() doesn't forcefully convert the parameter + * to a number. Only values of the type number, that are also NaN, result in true. + * @param number A numeric value. + */ + isNaN(number: number): boolean; + + /** + * Returns true if the value passed is a safe integer. + * @param number A numeric value. + */ + isSafeInteger(number: number): boolean; + + /** + * The value of the largest integer n such that n and n + 1 are both exactly representable as + * a Number value. + * The value of Number.MIN_SAFE_INTEGER is 9007199254740991 2^53 − 1. + */ + readonly MAX_SAFE_INTEGER: number; + + /** + * The value of the smallest integer n such that n and n − 1 are both exactly representable as + * a Number value. + * The value of Number.MIN_SAFE_INTEGER is −9007199254740991 (−(2^53 − 1)). + */ + readonly MIN_SAFE_INTEGER: number; + + /** + * Converts a string to a floating-point number. + * @param string A string that contains a floating-point number. + */ + parseFloat(string: string): number; + + /** + * Converts A string to an integer. + * @param s A string to convert into a number. + * @param radix A value between 2 and 36 that specifies the base of the number in numString. + * If this argument is not supplied, strings with a prefix of '0x' are considered hexadecimal. + * All other strings are considered decimal. + */ + parseInt(string: string, radix?: number): number; +} + +interface Object { + /** + * Determines whether an object has a property with the specified name. + * @param v A property name. + */ + hasOwnProperty(v: PropertyKey): boolean + + /** + * Determines whether a specified property is enumerable. + * @param v A property name. + */ + propertyIsEnumerable(v: PropertyKey): boolean; +} + +interface ObjectConstructor { + /** + * Copy the values of all of the enumerable own properties from one or more source objects to a + * target object. Returns the target object. + * @param target The target object to copy to. + * @param source The source object from which to copy properties. + */ + assign(target: T, source: U): T & U; + + /** + * Copy the values of all of the enumerable own properties from one or more source objects to a + * target object. Returns the target object. + * @param target The target object to copy to. + * @param source1 The first source object from which to copy properties. + * @param source2 The second source object from which to copy properties. + */ + assign(target: T, source1: U, source2: V): T & U & V; + + /** + * Copy the values of all of the enumerable own properties from one or more source objects to a + * target object. Returns the target object. + * @param target The target object to copy to. + * @param source1 The first source object from which to copy properties. + * @param source2 The second source object from which to copy properties. + * @param source3 The third source object from which to copy properties. + */ + assign(target: T, source1: U, source2: V, source3: W): T & U & V & W; + + /** + * Copy the values of all of the enumerable own properties from one or more source objects to a + * target object. Returns the target object. + * @param target The target object to copy to. + * @param sources One or more source objects from which to copy properties + */ + assign(target: any, ...sources: any[]): any; + + /** + * Returns an array of all symbol properties found directly on object o. + * @param o Object to retrieve the symbols from. + */ + getOwnPropertySymbols(o: any): symbol[]; + + /** + * Returns true if the values are the same value, false otherwise. + * @param value1 The first value. + * @param value2 The second value. + */ + is(value1: any, value2: any): boolean; + + /** + * Sets the prototype of a specified object o to object proto or null. Returns the object o. + * @param o The object to change its prototype. + * @param proto The value of the new prototype or null. + */ + setPrototypeOf(o: any, proto: any): any; + + /** + * Gets the own property descriptor of the specified object. + * An own property descriptor is one that is defined directly on the object and is not + * inherited from the object's prototype. + * @param o Object that contains the property. + * @param p Name of the property. + */ + getOwnPropertyDescriptor(o: any, propertyKey: PropertyKey): PropertyDescriptor; + + /** + * Adds a property to an object, or modifies attributes of an existing property. + * @param o Object on which to add or modify the property. This can be a native JavaScript + * object (that is, a user-defined object or a built in object) or a DOM object. + * @param p The property name. + * @param attributes Descriptor for the property. It can be for a data property or an accessor + * property. + */ + defineProperty(o: any, propertyKey: PropertyKey, attributes: PropertyDescriptor): any; +} + +interface RegExp { + /** + * Returns a string indicating the flags of the regular expression in question. This field is read-only. + * The characters in this string are sequenced and concatenated in the following order: + * + * - "g" for global + * - "i" for ignoreCase + * - "m" for multiline + * - "u" for unicode + * - "y" for sticky + * + * If no flags are set, the value is the empty string. + */ + readonly flags: string; + + /** + * Returns a Boolean value indicating the state of the sticky flag (y) used with a regular + * expression. Default is false. Read-only. + */ + readonly sticky: boolean; + + /** + * Returns a Boolean value indicating the state of the Unicode flag (u) used with a regular + * expression. Default is false. Read-only. + */ + readonly unicode: boolean; +} + +interface String { + /** + * Returns a nonnegative integer Number less than 1114112 (0x110000) that is the code point + * value of the UTF-16 encoded code point starting at the string element at position pos in + * the String resulting from converting this object to a String. + * If there is no element at that position, the result is undefined. + * If a valid UTF-16 surrogate pair does not begin at pos, the result is the code unit at pos. + */ + codePointAt(pos: number): number | undefined; + + /** + * Returns true if searchString appears as a substring of the result of converting this + * object to a String, at one or more positions that are + * greater than or equal to position; otherwise, returns false. + * @param searchString search string + * @param position If position is undefined, 0 is assumed, so as to search all of the String. + */ + includes(searchString: string, position?: number): boolean; + + /** + * Returns true if the sequence of elements of searchString converted to a String is the + * same as the corresponding elements of this object (converted to a String) starting at + * endPosition – length(this). Otherwise returns false. + */ + endsWith(searchString: string, endPosition?: number): boolean; + + /** + * Returns the String value result of normalizing the string into the normalization form + * named by form as specified in Unicode Standard Annex #15, Unicode Normalization Forms. + * @param form Applicable values: "NFC", "NFD", "NFKC", or "NFKD", If not specified default + * is "NFC" + */ + normalize(form?: string): string; + + /** + * Returns a String value that is made from count copies appended together. If count is 0, + * T is the empty String is returned. + * @param count number of copies to append + */ + repeat(count: number): string; + + /** + * Returns true if the sequence of elements of searchString converted to a String is the + * same as the corresponding elements of this object (converted to a String) starting at + * position. Otherwise returns false. + */ + startsWith(searchString: string, position?: number): boolean; + + /** + * Returns an HTML anchor element and sets the name attribute to the text value + * @param name + */ + anchor(name: string): string; + + /** Returns a HTML element */ + big(): string; + + /** Returns a HTML element */ + blink(): string; + + /** Returns a HTML element */ + bold(): string; + + /** Returns a HTML element */ + fixed(): string + + /** Returns a HTML element and sets the color attribute value */ + fontcolor(color: string): string + + /** Returns a HTML element and sets the size attribute value */ + fontsize(size: number): string; + + /** Returns a HTML element and sets the size attribute value */ + fontsize(size: string): string; + + /** Returns an HTML element */ + italics(): string; + + /** Returns an HTML element and sets the href attribute value */ + link(url: string): string; + + /** Returns a HTML element */ + small(): string; + + /** Returns a HTML element */ + strike(): string; + + /** Returns a HTML element */ + sub(): string; + + /** Returns a HTML element */ + sup(): string; +} + +interface StringConstructor { + /** + * Return the String value whose elements are, in order, the elements in the List elements. + * If length is 0, the empty string is returned. + */ + fromCodePoint(...codePoints: number[]): string; + + /** + * String.raw is intended for use as a tag function of a Tagged Template String. When called + * as such the first argument will be a well formed template call site object and the rest + * parameter will contain the substitution values. + * @param template A well-formed template string call site representation. + * @param substitutions A set of substitution values. + */ + raw(template: TemplateStringsArray, ...substitutions: any[]): string; +} \ No newline at end of file diff --git a/lib/lib.es2015.d.ts b/lib/lib.es2015.d.ts new file mode 100644 index 00000000000..973d5180989 --- /dev/null +++ b/lib/lib.es2015.d.ts @@ -0,0 +1,26 @@ +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. All rights reserved. +Licensed under the Apache License, Version 2.0 (the "License"); you may not use +this file except in compliance with the License. You may obtain a copy of the +License at http://www.apache.org/licenses/LICENSE-2.0 + +THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED +WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, +MERCHANTABLITY OR NON-INFRINGEMENT. + +See the Apache Version 2.0 License for specific language governing permissions +and limitations under the License. +***************************************************************************** */ + +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// \ No newline at end of file diff --git a/lib/lib.es2015.generator.d.ts b/lib/lib.es2015.generator.d.ts new file mode 100644 index 00000000000..003f325e4e0 --- /dev/null +++ b/lib/lib.es2015.generator.d.ts @@ -0,0 +1,28 @@ +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. All rights reserved. +Licensed under the Apache License, Version 2.0 (the "License"); you may not use +this file except in compliance with the License. You may obtain a copy of the +License at http://www.apache.org/licenses/LICENSE-2.0 + +THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED +WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, +MERCHANTABLITY OR NON-INFRINGEMENT. + +See the Apache Version 2.0 License for specific language governing permissions +and limitations under the License. +***************************************************************************** */ + +/// +interface GeneratorFunction extends Function { } + +interface GeneratorFunctionConstructor { + /** + * Creates a new Generator function. + * @param args A list of arguments the function accepts. + */ + new (...args: string[]): GeneratorFunction; + (...args: string[]): GeneratorFunction; + readonly prototype: GeneratorFunction; +} +declare var GeneratorFunction: GeneratorFunctionConstructor; diff --git a/lib/lib.es2015.iterable.d.ts b/lib/lib.es2015.iterable.d.ts new file mode 100644 index 00000000000..ef8b99309af --- /dev/null +++ b/lib/lib.es2015.iterable.d.ts @@ -0,0 +1,389 @@ +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. All rights reserved. +Licensed under the Apache License, Version 2.0 (the "License"); you may not use +this file except in compliance with the License. You may obtain a copy of the +License at http://www.apache.org/licenses/LICENSE-2.0 + +THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED +WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, +MERCHANTABLITY OR NON-INFRINGEMENT. + +See the Apache Version 2.0 License for specific language governing permissions +and limitations under the License. +***************************************************************************** */ + +/// +/// + +interface IteratorResult { + done: boolean; + value?: T; +} + +interface Iterator { + next(value?: any): IteratorResult; + return?(value?: any): IteratorResult; + throw?(e?: any): IteratorResult; +} + +interface Iterable { } + +interface IterableIterator extends Iterator { } + +interface Array { + /** + * Returns an array of key, value pairs for every entry in the array + */ + entries(): IterableIterator<[number, T]>; + + /** + * Returns an list of keys in the array + */ + keys(): IterableIterator; + + /** + * Returns an list of values in the array + */ + values(): IterableIterator; +} + +interface ArrayConstructor { + /** + * Creates an array from an iterable object. + * @param iterable An iterable object to convert to an array. + * @param mapfn A mapping function to call on every element of the array. + * @param thisArg Value of 'this' used to invoke the mapfn. + */ + from(iterable: Iterable, mapfn: (v: T, k: number) => U, thisArg?: any): Array; + + /** + * Creates an array from an iterable object. + * @param iterable An iterable object to convert to an array. + */ + from(iterable: Iterable): Array; +} + +interface Map { + entries(): IterableIterator<[K, V]>; + keys(): IterableIterator; + values(): IterableIterator; +} + +interface MapConstructor { + new (iterable: Iterable<[K, V]>): Map; +} + +interface WeakMap { } + +interface WeakMapConstructor { + new (iterable: Iterable<[K, V]>): WeakMap; +} + +interface Promise { } + +interface PromiseConstructor { + /** + * Creates a Promise that is resolved with an array of results when all of the provided Promises + * resolve, or rejected when any Promise is rejected. + * @param values An array of Promises. + * @returns A new Promise. + */ + all(values: Iterable>): Promise; + + /** + * Creates a Promise that is resolved or rejected when any of the provided Promises are resolved + * or rejected. + * @param values An array of Promises. + * @returns A new Promise. + */ + race(values: Iterable>): Promise; +} + +declare namespace Reflect { + function enumerate(target: any): IterableIterator; +} + +/** + * A typed array of 8-bit integer values. The contents are initialized to 0. If the requested + * number of bytes could not be allocated an exception is raised. + */ +interface Int8Array { + /** + * Returns an array of key, value pairs for every entry in the array + */ + entries(): IterableIterator<[number, number]>; + /** + * Returns an list of keys in the array + */ + keys(): IterableIterator; + /** + * Returns an list of values in the array + */ + values(): IterableIterator; +} + +interface Int8ArrayConstructor { + new (elements: Iterable): Int8Array; + + /** + * Creates an array from an array-like or iterable object. + * @param arrayLike An array-like or iterable object to convert to an array. + * @param mapfn A mapping function to call on every element of the array. + * @param thisArg Value of 'this' used to invoke the mapfn. + */ + from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Int8Array; +} + +/** + * A typed array of 8-bit unsigned integer values. The contents are initialized to 0. If the + * requested number of bytes could not be allocated an exception is raised. + */ +interface Uint8Array { + /** + * Returns an array of key, value pairs for every entry in the array + */ + entries(): IterableIterator<[number, number]>; + /** + * Returns an list of keys in the array + */ + keys(): IterableIterator; + /** + * Returns an list of values in the array + */ + values(): IterableIterator; +} + +interface Uint8ArrayConstructor { + new (elements: Iterable): Uint8Array; + + /** + * Creates an array from an array-like or iterable object. + * @param arrayLike An array-like or iterable object to convert to an array. + * @param mapfn A mapping function to call on every element of the array. + * @param thisArg Value of 'this' used to invoke the mapfn. + */ + from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint8Array; +} + +/** + * A typed array of 8-bit unsigned integer (clamped) values. The contents are initialized to 0. + * If the requested number of bytes could not be allocated an exception is raised. + */ +interface Uint8ClampedArray { + /** + * Returns an array of key, value pairs for every entry in the array + */ + entries(): IterableIterator<[number, number]>; + + /** + * Returns an list of keys in the array + */ + keys(): IterableIterator; + + /** + * Returns an list of values in the array + */ + values(): IterableIterator; +} + +interface Uint8ClampedArrayConstructor { + new (elements: Iterable): Uint8ClampedArray; + + + /** + * Creates an array from an array-like or iterable object. + * @param arrayLike An array-like or iterable object to convert to an array. + * @param mapfn A mapping function to call on every element of the array. + * @param thisArg Value of 'this' used to invoke the mapfn. + */ + from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint8ClampedArray; +} + +/** + * A typed array of 16-bit signed integer values. The contents are initialized to 0. If the + * requested number of bytes could not be allocated an exception is raised. + */ +interface Int16Array { + /** + * Returns an array of key, value pairs for every entry in the array + */ + entries(): IterableIterator<[number, number]>; + + /** + * Returns an list of keys in the array + */ + keys(): IterableIterator; + + /** + * Returns an list of values in the array + */ + values(): IterableIterator; +} + +interface Int16ArrayConstructor { + new (elements: Iterable): Int16Array; + + /** + * Creates an array from an array-like or iterable object. + * @param arrayLike An array-like or iterable object to convert to an array. + * @param mapfn A mapping function to call on every element of the array. + * @param thisArg Value of 'this' used to invoke the mapfn. + */ + from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Int16Array; +} + +/** + * A typed array of 16-bit unsigned integer values. The contents are initialized to 0. If the + * requested number of bytes could not be allocated an exception is raised. + */ +interface Uint16Array { + /** + * Returns an array of key, value pairs for every entry in the array + */ + entries(): IterableIterator<[number, number]>; + /** + * Returns an list of keys in the array + */ + keys(): IterableIterator; + /** + * Returns an list of values in the array + */ + values(): IterableIterator; +} + +interface Uint16ArrayConstructor { + new (elements: Iterable): Uint16Array; + + /** + * Creates an array from an array-like or iterable object. + * @param arrayLike An array-like or iterable object to convert to an array. + * @param mapfn A mapping function to call on every element of the array. + * @param thisArg Value of 'this' used to invoke the mapfn. + */ + from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint16Array; +} + +/** + * A typed array of 32-bit signed integer values. The contents are initialized to 0. If the + * requested number of bytes could not be allocated an exception is raised. + */ +interface Int32Array { + /** + * Returns an array of key, value pairs for every entry in the array + */ + entries(): IterableIterator<[number, number]>; + /** + * Returns an list of keys in the array + */ + keys(): IterableIterator; + /** + * Returns an list of values in the array + */ + values(): IterableIterator; +} + +interface Int32ArrayConstructor { + new (elements: Iterable): Int32Array; + + /** + * Creates an array from an array-like or iterable object. + * @param arrayLike An array-like or iterable object to convert to an array. + * @param mapfn A mapping function to call on every element of the array. + * @param thisArg Value of 'this' used to invoke the mapfn. + */ + from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Int32Array; +} + +/** + * A typed array of 32-bit unsigned integer values. The contents are initialized to 0. If the + * requested number of bytes could not be allocated an exception is raised. + */ +interface Uint32Array { + /** + * Returns an array of key, value pairs for every entry in the array + */ + entries(): IterableIterator<[number, number]>; + /** + * Returns an list of keys in the array + */ + keys(): IterableIterator; + /** + * Returns an list of values in the array + */ + values(): IterableIterator; +} + +interface Uint32ArrayConstructor { + new (elements: Iterable): Uint32Array; + + /** + * Creates an array from an array-like or iterable object. + * @param arrayLike An array-like or iterable object to convert to an array. + * @param mapfn A mapping function to call on every element of the array. + * @param thisArg Value of 'this' used to invoke the mapfn. + */ + from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint32Array; +} + +/** + * A typed array of 32-bit float values. The contents are initialized to 0. If the requested number + * of bytes could not be allocated an exception is raised. + */ +interface Float32Array { + /** + * Returns an array of key, value pairs for every entry in the array + */ + entries(): IterableIterator<[number, number]>; + /** + * Returns an list of keys in the array + */ + keys(): IterableIterator; + /** + * Returns an list of values in the array + */ + values(): IterableIterator; +} + +interface Float32ArrayConstructor { + new (elements: Iterable): Float32Array; + + /** + * Creates an array from an array-like or iterable object. + * @param arrayLike An array-like or iterable object to convert to an array. + * @param mapfn A mapping function to call on every element of the array. + * @param thisArg Value of 'this' used to invoke the mapfn. + */ + from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Float32Array; +} + +/** + * A typed array of 64-bit float values. The contents are initialized to 0. If the requested + * number of bytes could not be allocated an exception is raised. + */ +interface Float64Array { + /** + * Returns an array of key, value pairs for every entry in the array + */ + entries(): IterableIterator<[number, number]>; + /** + * Returns an list of keys in the array + */ + keys(): IterableIterator; + /** + * Returns an list of values in the array + */ + values(): IterableIterator; +} + +interface Float64ArrayConstructor { + new (elements: Iterable): Float64Array; + + /** + * Creates an array from an array-like or iterable object. + * @param arrayLike An array-like or iterable object to convert to an array. + * @param mapfn A mapping function to call on every element of the array. + * @param thisArg Value of 'this' used to invoke the mapfn. + */ + from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Float64Array; +} \ No newline at end of file diff --git a/lib/lib.es2015.promise.d.ts b/lib/lib.es2015.promise.d.ts new file mode 100644 index 00000000000..4817121154f --- /dev/null +++ b/lib/lib.es2015.promise.d.ts @@ -0,0 +1,97 @@ +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. All rights reserved. +Licensed under the Apache License, Version 2.0 (the "License"); you may not use +this file except in compliance with the License. You may obtain a copy of the +License at http://www.apache.org/licenses/LICENSE-2.0 + +THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED +WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, +MERCHANTABLITY OR NON-INFRINGEMENT. + +See the Apache Version 2.0 License for specific language governing permissions +and limitations under the License. +***************************************************************************** */ + +/// +/** + * Represents the completion of an asynchronous operation + */ +interface Promise { + /** + * 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(onfulfilled?: (value: T) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): Promise; + then(onfulfilled?: (value: T) => TResult | PromiseLike, onrejected?: (reason: any) => void): Promise; + + /** + * Attaches a callback for only the rejection of the Promise. + * @param onrejected The callback to execute when the Promise is rejected. + * @returns A Promise for the completion of the callback. + */ + catch(onrejected?: (reason: any) => T | PromiseLike): Promise; + catch(onrejected?: (reason: any) => void): Promise; +} + +interface PromiseConstructor { + /** + * A reference to the prototype. + */ + readonly prototype: Promise; + + /** + * Creates a new Promise. + * @param executor A callback used to initialize the promise. This callback is passed two arguments: + * a resolve callback used resolve the promise with a value or the result of another promise, + * and a reject callback used to reject the promise with a provided reason or error. + */ + new (executor: (resolve: (value?: T | PromiseLike) => void, reject: (reason?: any) => void) => void): Promise; + + /** + * Creates a Promise that is resolved with an array of results when all of the provided Promises + * resolve, or rejected when any Promise is rejected. + * @param values An array of Promises. + * @returns A new Promise. + */ + all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike, T9 | PromiseLike, T10 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]>; + all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike, T9 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9]>; + all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8]>; + all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7]>; + all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6]>; + all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike]): Promise<[T1, T2, T3, T4, T5]>; + all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike ]): Promise<[T1, T2, T3, T4]>; + all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike]): Promise<[T1, T2, T3]>; + all(values: [T1 | PromiseLike, T2 | PromiseLike]): Promise<[T1, T2]>; + + /** + * Creates a new rejected promise for the provided reason. + * @param reason The reason the promise was rejected. + * @returns A new rejected Promise. + */ + reject(reason: any): Promise; + + /** + * Creates a new rejected promise for the provided reason. + * @param reason The reason the promise was rejected. + * @returns A new rejected Promise. + */ + reject(reason: any): Promise; + + /** + * Creates a new resolved promise for the provided value. + * @param value A promise. + * @returns A promise whose internal state matches the provided promise. + */ + resolve(value: T | PromiseLike): Promise; + + /** + * Creates a new resolved promise . + * @returns A resolved promise. + */ + resolve(): Promise; +} + +declare var Promise: PromiseConstructor; \ No newline at end of file diff --git a/lib/lib.es2015.proxy.d.ts b/lib/lib.es2015.proxy.d.ts new file mode 100644 index 00000000000..3908e97c17c --- /dev/null +++ b/lib/lib.es2015.proxy.d.ts @@ -0,0 +1,38 @@ +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. All rights reserved. +Licensed under the Apache License, Version 2.0 (the "License"); you may not use +this file except in compliance with the License. You may obtain a copy of the +License at http://www.apache.org/licenses/LICENSE-2.0 + +THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED +WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, +MERCHANTABLITY OR NON-INFRINGEMENT. + +See the Apache Version 2.0 License for specific language governing permissions +and limitations under the License. +***************************************************************************** */ + +/// +interface ProxyHandler { + getPrototypeOf? (target: T): any; + setPrototypeOf? (target: T, v: any): boolean; + isExtensible? (target: T): boolean; + preventExtensions? (target: T): boolean; + getOwnPropertyDescriptor? (target: T, p: PropertyKey): PropertyDescriptor; + has? (target: T, p: PropertyKey): boolean; + get? (target: T, p: PropertyKey, receiver: any): any; + set? (target: T, p: PropertyKey, value: any, receiver: any): boolean; + deleteProperty? (target: T, p: PropertyKey): boolean; + defineProperty? (target: T, p: PropertyKey, attributes: PropertyDescriptor): boolean; + enumerate? (target: T): PropertyKey[]; + ownKeys? (target: T): PropertyKey[]; + apply? (target: T, thisArg: any, argArray?: any): any; + construct? (target: T, thisArg: any, argArray?: any): any; +} + +interface ProxyConstructor { + revocable(target: T, handler: ProxyHandler): { proxy: T; revoke: () => void; }; + new (target: T, handler: ProxyHandler): T +} +declare var Proxy: ProxyConstructor; \ No newline at end of file diff --git a/lib/lib.es2015.reflect.d.ts b/lib/lib.es2015.reflect.d.ts new file mode 100644 index 00000000000..c53cdaf88ac --- /dev/null +++ b/lib/lib.es2015.reflect.d.ts @@ -0,0 +1,32 @@ +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. All rights reserved. +Licensed under the Apache License, Version 2.0 (the "License"); you may not use +this file except in compliance with the License. You may obtain a copy of the +License at http://www.apache.org/licenses/LICENSE-2.0 + +THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED +WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, +MERCHANTABLITY OR NON-INFRINGEMENT. + +See the Apache Version 2.0 License for specific language governing permissions +and limitations under the License. +***************************************************************************** */ + +/// +declare namespace Reflect { + function apply(target: Function, thisArgument: any, argumentsList: ArrayLike): any; + function construct(target: Function, argumentsList: ArrayLike, newTarget?: any): any; + function defineProperty(target: any, propertyKey: PropertyKey, attributes: PropertyDescriptor): boolean; + function deleteProperty(target: any, propertyKey: PropertyKey): boolean; + function get(target: any, propertyKey: PropertyKey, receiver?: any): any; + function getOwnPropertyDescriptor(target: any, propertyKey: PropertyKey): PropertyDescriptor; + function getPrototypeOf(target: any): any; + function has(target: any, propertyKey: string): boolean; + function has(target: any, propertyKey: symbol): boolean; + function isExtensible(target: any): boolean; + function ownKeys(target: any): Array; + function preventExtensions(target: any): boolean; + function set(target: any, propertyKey: PropertyKey, value: any, receiver?: any): boolean; + function setPrototypeOf(target: any, proto: any): boolean; +} \ No newline at end of file diff --git a/lib/lib.es2015.symbol.d.ts b/lib/lib.es2015.symbol.d.ts new file mode 100644 index 00000000000..4ab7b4374f1 --- /dev/null +++ b/lib/lib.es2015.symbol.d.ts @@ -0,0 +1,52 @@ +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. All rights reserved. +Licensed under the Apache License, Version 2.0 (the "License"); you may not use +this file except in compliance with the License. You may obtain a copy of the +License at http://www.apache.org/licenses/LICENSE-2.0 + +THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED +WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, +MERCHANTABLITY OR NON-INFRINGEMENT. + +See the Apache Version 2.0 License for specific language governing permissions +and limitations under the License. +***************************************************************************** */ + +/// +interface Symbol { + /** Returns a string representation of an object. */ + toString(): string; + + /** Returns the primitive value of the specified object. */ + valueOf(): Object; +} + +interface SymbolConstructor { + /** + * A reference to the prototype. + */ + readonly prototype: Symbol; + + /** + * Returns a new unique Symbol value. + * @param description Description of the new Symbol object. + */ + (description?: string|number): symbol; + + /** + * Returns a Symbol object from the global symbol registry matching the given key if found. + * Otherwise, returns a new symbol with this key. + * @param key key to search for. + */ + for(key: string): symbol; + + /** + * Returns a key from the global symbol registry matching the given Symbol if found. + * Otherwise, returns a undefined. + * @param sym Symbol to find the key for. + */ + keyFor(sym: symbol): string | undefined; +} + +declare var Symbol: SymbolConstructor; \ No newline at end of file diff --git a/lib/lib.es2015.symbol.wellknown.d.ts b/lib/lib.es2015.symbol.wellknown.d.ts new file mode 100644 index 00000000000..f266301dc23 --- /dev/null +++ b/lib/lib.es2015.symbol.wellknown.d.ts @@ -0,0 +1,372 @@ +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. All rights reserved. +Licensed under the Apache License, Version 2.0 (the "License"); you may not use +this file except in compliance with the License. You may obtain a copy of the +License at http://www.apache.org/licenses/LICENSE-2.0 + +THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED +WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, +MERCHANTABLITY OR NON-INFRINGEMENT. + +See the Apache Version 2.0 License for specific language governing permissions +and limitations under the License. +***************************************************************************** */ + +/// +/// + +interface SymbolConstructor { + /** + * A method that determines if a constructor object recognizes an object as one of the + * constructor’s instances. Called by the semantics of the instanceof operator. + */ + readonly hasInstance: symbol; + + /** + * A Boolean value that if true indicates that an object should flatten to its array elements + * by Array.prototype.concat. + */ + readonly isConcatSpreadable: symbol; + + /** + * A method that returns the default iterator for an object. Called by the semantics of the + * for-of statement. + */ + readonly iterator: symbol; + + /** + * A regular expression method that matches the regular expression against a string. Called + * by the String.prototype.match method. + */ + readonly match: symbol; + + /** + * A regular expression method that replaces matched substrings of a string. Called by the + * String.prototype.replace method. + */ + readonly replace: symbol; + + /** + * A regular expression method that returns the index within a string that matches the + * regular expression. Called by the String.prototype.search method. + */ + readonly search: symbol; + + /** + * A function valued property that is the constructor function that is used to create + * derived objects. + */ + readonly species: symbol; + + /** + * A regular expression method that splits a string at the indices that match the regular + * expression. Called by the String.prototype.split method. + */ + readonly split: symbol; + + /** + * A method that converts an object to a corresponding primitive value. + * Called by the ToPrimitive abstract operation. + */ + readonly toPrimitive: symbol; + + /** + * A String value that is used in the creation of the default string description of an object. + * Called by the built-in method Object.prototype.toString. + */ + readonly toStringTag: symbol; + + /** + * An Object whose own property names are property names that are excluded from the 'with' + * environment bindings of the associated objects. + */ + readonly unscopables: symbol; +} + +interface Symbol { + readonly [Symbol.toStringTag]: "Symbol"; +} + +interface Array { + /** Iterator */ + [Symbol.iterator](): IterableIterator; + + /** + * Returns an object whose properties have the value 'true' + * when they will be absent when used in a 'with' statement. + */ + [Symbol.unscopables](): { + copyWithin: boolean; + entries: boolean; + fill: boolean; + find: boolean; + findIndex: boolean; + keys: boolean; + values: boolean; + }; +} + +interface Date { + /** + * Converts a Date object to a string. + */ + [Symbol.toPrimitive](hint: "default"): string; + /** + * Converts a Date object to a string. + */ + [Symbol.toPrimitive](hint: "string"): string; + /** + * Converts a Date object to a number. + */ + [Symbol.toPrimitive](hint: "number"): number; + /** + * Converts a Date object to a string or number. + * + * @param hint The strings "number", "string", or "default" to specify what primitive to return. + * + * @throws {TypeError} If 'hint' was given something other than "number", "string", or "default". + * @returns A number if 'hint' was "number", a string if 'hint' was "string" or "default". + */ + [Symbol.toPrimitive](hint: string): string | number; +} + +interface Map { + [Symbol.iterator]():IterableIterator<[K,V]>; + readonly [Symbol.toStringTag]: "Map"; +} + +interface WeakMap{ + readonly [Symbol.toStringTag]: "WeakMap"; +} + +interface JSON { + readonly [Symbol.toStringTag]: "JSON"; +} + +interface Function { + /** + * Determines whether the given value inherits from this function if this function was used + * as a constructor function. + * + * A constructor function can control which objects are recognized as its instances by + * 'instanceof' by overriding this method. + */ + [Symbol.hasInstance](value: any): boolean; +} + +interface GeneratorFunction extends Function { + readonly [Symbol.toStringTag]: "GeneratorFunction"; +} + +interface IArguments { + /** Iterator */ + [Symbol.iterator](): IterableIterator; +} + +interface Iterator { } + +interface Iterable { + [Symbol.iterator](): Iterator; +} + +interface IterableIterator extends Iterator { + [Symbol.iterator](): IterableIterator; +} + +interface Math { + readonly [Symbol.toStringTag]: "Math"; +} + +interface Promise { + readonly [Symbol.toStringTag]: "Promise"; +} + +interface PromiseConstructor { + readonly [Symbol.species]: Function; +} + +interface RegExp { + /** + * Matches a string with this regular expression, and returns an array containing the results of + * that search. + * @param string A string to search within. + */ + [Symbol.match](string: string): RegExpMatchArray | null; + + /** + * Replaces text in a string, using this regular expression. + * @param string A String object or string literal whose contents matching against + * this regular expression will be replaced + * @param replaceValue A String object or string literal containing the text to replace for every + * successful match of this regular expression. + */ + [Symbol.replace](string: string, replaceValue: string): string; + + /** + * Replaces text in a string, using this regular expression. + * @param string A String object or string literal whose contents matching against + * this regular expression will be replaced + * @param replacer A function that returns the replacement text. + */ + [Symbol.replace](string: string, replacer: (substring: string, ...args: any[]) => string): string; + + /** + * Finds the position beginning first substring match in a regular expression search + * using this regular expression. + * + * @param string The string to search within. + */ + [Symbol.search](string: string): number; + + /** + * Returns an array of substrings that were delimited by strings in the original input that + * match against this regular expression. + * + * If the regular expression contains capturing parentheses, then each time this + * regular expression matches, the results (including any undefined results) of the + * capturing parentheses are spliced. + * + * @param string string value to split + * @param limit if not undefined, the output array is truncated so that it contains no more + * than 'limit' elements. + */ + [Symbol.split](string: string, limit?: number): string[]; +} + +interface RegExpConstructor { + [Symbol.species](): RegExpConstructor; +} + +interface String { + /** Iterator */ + [Symbol.iterator](): IterableIterator; + + /** + * Matches a string an object that supports being matched against, and returns an array containing the results of that search. + * @param matcher An object that supports being matched against. + */ + match(matcher: { [Symbol.match](string: string): RegExpMatchArray | null; }): RegExpMatchArray | null; + + /** + * Replaces text in a string, using an object that supports replacement within a string. + * @param searchValue A object can search for and replace matches within a string. + * @param replaceValue A string containing the text to replace for every successful match of searchValue in this string. + */ + replace(searchValue: { [Symbol.replace](string: string, replaceValue: string): string; }, replaceValue: string): string; + + /** + * Replaces text in a string, using an object that supports replacement within a string. + * @param searchValue A object can search for and replace matches within a string. + * @param replacer A function that returns the replacement text. + */ + replace(searchValue: { [Symbol.replace](string: string, replacer: (substring: string, ...args: any[]) => string): string; }, replacer: (substring: string, ...args: any[]) => string): string; + + /** + * Finds the first substring match in a regular expression search. + * @param searcher An object which supports searching within a string. + */ + search(searcher: { [Symbol.search](string: string): number; }): number; + + /** + * Split a string into substrings using the specified separator and return them as an array. + * @param splitter An object that can split a string. + * @param limit A value used to limit the number of elements returned in the array. + */ + split(splitter: { [Symbol.split](string: string, limit?: number): string[]; }, limit?: number): string[]; +} + +/** + * Represents a raw buffer of binary data, which is used to store data for the + * different typed arrays. ArrayBuffers cannot be read from or written to directly, + * but can be passed to a typed array or DataView Object to interpret the raw + * buffer as needed. + */ +interface ArrayBuffer { + readonly [Symbol.toStringTag]: "ArrayBuffer"; +} + +interface DataView { + readonly [Symbol.toStringTag]: "DataView"; +} + +/** + * A typed array of 8-bit integer values. The contents are initialized to 0. If the requested + * number of bytes could not be allocated an exception is raised. + */ +interface Int8Array { + [Symbol.iterator](): IterableIterator; + readonly [Symbol.toStringTag]: "Int8Array"; +} + +/** + * A typed array of 8-bit unsigned integer values. The contents are initialized to 0. If the + * requested number of bytes could not be allocated an exception is raised. + */ +interface Uint8Array { + [Symbol.iterator](): IterableIterator; + readonly [Symbol.toStringTag]: "UInt8Array"; +} + +/** + * A typed array of 8-bit unsigned integer (clamped) values. The contents are initialized to 0. + * If the requested number of bytes could not be allocated an exception is raised. + */ +interface Uint8ClampedArray { + [Symbol.iterator](): IterableIterator; + readonly [Symbol.toStringTag]: "Uint8ClampedArray"; +} + +/** + * A typed array of 16-bit signed integer values. The contents are initialized to 0. If the + * requested number of bytes could not be allocated an exception is raised. + */ +interface Int16Array { + [Symbol.iterator](): IterableIterator; + readonly [Symbol.toStringTag]: "Int16Array"; +} + +/** + * A typed array of 16-bit unsigned integer values. The contents are initialized to 0. If the + * requested number of bytes could not be allocated an exception is raised. + */ +interface Uint16Array { + [Symbol.iterator](): IterableIterator; + readonly [Symbol.toStringTag]: "Uint16Array"; +} + +/** + * A typed array of 32-bit signed integer values. The contents are initialized to 0. If the + * requested number of bytes could not be allocated an exception is raised. + */ +interface Int32Array { + [Symbol.iterator](): IterableIterator; + readonly [Symbol.toStringTag]: "Int32Array"; +} + +/** + * A typed array of 32-bit unsigned integer values. The contents are initialized to 0. If the + * requested number of bytes could not be allocated an exception is raised. + */ +interface Uint32Array { + [Symbol.iterator](): IterableIterator; + readonly [Symbol.toStringTag]: "Uint32Array"; +} + +/** + * A typed array of 32-bit float values. The contents are initialized to 0. If the requested number + * of bytes could not be allocated an exception is raised. + */ +interface Float32Array { + [Symbol.iterator](): IterableIterator; + readonly [Symbol.toStringTag]: "Float32Array"; +} + +/** + * A typed array of 64-bit float values. The contents are initialized to 0. If the requested + * number of bytes could not be allocated an exception is raised. + */ +interface Float64Array { + [Symbol.iterator](): IterableIterator; + readonly [Symbol.toStringTag]: "Float64Array"; +} \ No newline at end of file diff --git a/lib/lib.es2016.array.include.d.ts b/lib/lib.es2016.array.include.d.ts new file mode 100644 index 00000000000..a4677e7cf1e --- /dev/null +++ b/lib/lib.es2016.array.include.d.ts @@ -0,0 +1,105 @@ +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. All rights reserved. +Licensed under the Apache License, Version 2.0 (the "License"); you may not use +this file except in compliance with the License. You may obtain a copy of the +License at http://www.apache.org/licenses/LICENSE-2.0 + +THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED +WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, +MERCHANTABLITY OR NON-INFRINGEMENT. + +See the Apache Version 2.0 License for specific language governing permissions +and limitations under the License. +***************************************************************************** */ + +/// +interface Array { + /** + * Determines whether an array includes a certain element, returning true or false as appropriate. + * @param searchElement The element to search for. + * @param fromIndex The position in this array at which to begin searching for searchElement. + */ + includes(searchElement: T, fromIndex?: number): boolean; +} + +interface Int8Array { + /** + * Determines whether an array includes a certain element, returning true or false as appropriate. + * @param searchElement The element to search for. + * @param fromIndex The position in this array at which to begin searching for searchElement. + */ + includes(searchElement: number, fromIndex?: number): boolean; +} + +interface Uint8Array { + /** + * Determines whether an array includes a certain element, returning true or false as appropriate. + * @param searchElement The element to search for. + * @param fromIndex The position in this array at which to begin searching for searchElement. + */ + includes(searchElement: number, fromIndex?: number): boolean; +} + +interface Uint8ClampedArray { + /** + * Determines whether an array includes a certain element, returning true or false as appropriate. + * @param searchElement The element to search for. + * @param fromIndex The position in this array at which to begin searching for searchElement. + */ + includes(searchElement: number, fromIndex?: number): boolean; +} + +interface Int16Array { + /** + * Determines whether an array includes a certain element, returning true or false as appropriate. + * @param searchElement The element to search for. + * @param fromIndex The position in this array at which to begin searching for searchElement. + */ + includes(searchElement: number, fromIndex?: number): boolean; +} + +interface Uint16Array { + /** + * Determines whether an array includes a certain element, returning true or false as appropriate. + * @param searchElement The element to search for. + * @param fromIndex The position in this array at which to begin searching for searchElement. + */ + includes(searchElement: number, fromIndex?: number): boolean; +} + +interface Int32Array { + /** + * Determines whether an array includes a certain element, returning true or false as appropriate. + * @param searchElement The element to search for. + * @param fromIndex The position in this array at which to begin searching for searchElement. + */ + includes(searchElement: number, fromIndex?: number): boolean; +} + +interface Uint32Array { + /** + * Determines whether an array includes a certain element, returning true or false as appropriate. + * @param searchElement The element to search for. + * @param fromIndex The position in this array at which to begin searching for searchElement. + */ + includes(searchElement: number, fromIndex?: number): boolean; +} + +interface Float32Array { + /** + * Determines whether an array includes a certain element, returning true or false as appropriate. + * @param searchElement The element to search for. + * @param fromIndex The position in this array at which to begin searching for searchElement. + */ + includes(searchElement: number, fromIndex?: number): boolean; +} + +interface Float64Array { + /** + * Determines whether an array includes a certain element, returning true or false as appropriate. + * @param searchElement The element to search for. + * @param fromIndex The position in this array at which to begin searching for searchElement. + */ + includes(searchElement: number, fromIndex?: number): boolean; +} \ No newline at end of file diff --git a/lib/lib.es2016.d.ts b/lib/lib.es2016.d.ts new file mode 100644 index 00000000000..04a23379676 --- /dev/null +++ b/lib/lib.es2016.d.ts @@ -0,0 +1,18 @@ +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. All rights reserved. +Licensed under the Apache License, Version 2.0 (the "License"); you may not use +this file except in compliance with the License. You may obtain a copy of the +License at http://www.apache.org/licenses/LICENSE-2.0 + +THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED +WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, +MERCHANTABLITY OR NON-INFRINGEMENT. + +See the Apache Version 2.0 License for specific language governing permissions +and limitations under the License. +***************************************************************************** */ + +/// +/// +/// \ No newline at end of file diff --git a/lib/lib.core.d.ts b/lib/lib.es5.d.ts similarity index 92% rename from lib/lib.core.d.ts rename to lib/lib.es5.d.ts index c1843f5207e..8ea19d2b9ea 100644 --- a/lib/lib.core.d.ts +++ b/lib/lib.es5.d.ts @@ -231,14 +231,16 @@ interface Function { * @param thisArg The object to be used as the this object. * @param argArray A set of arguments to be passed to the function. */ - apply(thisArg: any, argArray?: any): any; + apply(this: (this: T, ...argArray: any[]) => U, thisArg: T, argArray?: any): U; + apply(this: Function, thisArg: any, argArray?: any): any; /** * Calls a method of an object, substituting another object for the current object. * @param thisArg The object to be used as the current object. * @param argArray A list of arguments to be passed to the method. */ - call(thisArg: any, ...argArray: any[]): any; + call(this: (this: T, ...argArray: any[]) => U, thisArg: T, ...argArray: any[]): U; + call(this: Function, thisArg: any, ...argArray: any[]): any; /** * For a given function, creates a bound function that has the same body as the original function. @@ -246,7 +248,8 @@ interface Function { * @param thisArg An object to which the this keyword can refer inside the new function. * @param argArray A list of arguments to be passed to the new function. */ - bind(thisArg: any, ...argArray: any[]): any; + bind(this: (this: T, ...argArray: any[]) => U, thisArg: T, ...argArray: any[]): (this: void, ...argArray: any[]) => U; + bind(this: Function, thisArg: any, ...argArray: any[]): any; prototype: any; readonly length: number; @@ -320,13 +323,13 @@ interface String { * Matches a string with a regular expression, and returns an array containing the results of that search. * @param regexp A variable name or string literal containing the regular expression pattern and flags. */ - match(regexp: string): RegExpMatchArray; + match(regexp: string): RegExpMatchArray | null; /** * Matches a string with a regular expression, and returns an array containing the results of that search. * @param regexp A regular expression object that contains the regular expression pattern and applicable flags. */ - match(regexp: RegExp): RegExpMatchArray; + match(regexp: RegExp): RegExpMatchArray | null; /** * Replaces text in a string, using a regular expression or search string. @@ -829,7 +832,7 @@ interface RegExp { * Executes a search on a string using a regular expression pattern, and returns an array containing the results of that search. * @param string The String object or string literal on which to perform the search. */ - exec(string: string): RegExpExecArray; + exec(string: string): RegExpExecArray | null; /** * Returns a Boolean value that indicates whether or not a pattern exists in a searched string. @@ -852,7 +855,7 @@ interface RegExp { lastIndex: number; // Non-standard extensions - compile(): RegExp; + compile(): this; } interface RegExpConstructor { @@ -1124,7 +1127,7 @@ interface Array { /** * Removes the last element from an array and returns it. */ - pop(): T; + pop(): T | undefined; /** * Combines two or more arrays. * @param items Additional items to add to the end of array1. @@ -1142,7 +1145,7 @@ interface Array { /** * Removes the first element from an array and returns it. */ - shift(): T; + shift(): T | undefined; /** * Returns a section of an array. * @param start The beginning of the specified portion of the array. @@ -1535,7 +1538,7 @@ interface Int8Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; + find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number | undefined; /** * Returns the index of the first element in the array where predicate is true, and undefined @@ -1546,7 +1549,7 @@ interface Int8Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; + findIndex(predicate: (value: number) => boolean, thisArg?: any): number | undefined; /** * Performs the specified action for each element in an array. @@ -1808,7 +1811,7 @@ interface Uint8Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; + find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number | undefined; /** * Returns the index of the first element in the array where predicate is true, and undefined @@ -1819,7 +1822,7 @@ interface Uint8Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; + findIndex(predicate: (value: number) => boolean, thisArg?: any): number | undefined; /** * Performs the specified action for each element in an array. @@ -2082,7 +2085,7 @@ interface Uint8ClampedArray { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; + find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number | undefined; /** * Returns the index of the first element in the array where predicate is true, and undefined @@ -2093,7 +2096,7 @@ interface Uint8ClampedArray { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; + findIndex(predicate: (value: number) => boolean, thisArg?: any): number | undefined; /** * Performs the specified action for each element in an array. @@ -2355,7 +2358,7 @@ interface Int16Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; + find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number | undefined; /** * Returns the index of the first element in the array where predicate is true, and undefined @@ -2366,7 +2369,7 @@ interface Int16Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; + findIndex(predicate: (value: number) => boolean, thisArg?: any): number | undefined; /** * Performs the specified action for each element in an array. @@ -2629,7 +2632,7 @@ interface Uint16Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; + find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number | undefined; /** * Returns the index of the first element in the array where predicate is true, and undefined @@ -2640,7 +2643,7 @@ interface Uint16Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; + findIndex(predicate: (value: number) => boolean, thisArg?: any): number | undefined; /** * Performs the specified action for each element in an array. @@ -2902,7 +2905,7 @@ interface Int32Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; + find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number | undefined; /** * Returns the index of the first element in the array where predicate is true, and undefined @@ -2913,7 +2916,7 @@ interface Int32Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; + findIndex(predicate: (value: number) => boolean, thisArg?: any): number | undefined; /** * Performs the specified action for each element in an array. @@ -3175,7 +3178,7 @@ interface Uint32Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; + find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number | undefined; /** * Returns the index of the first element in the array where predicate is true, and undefined @@ -3186,7 +3189,7 @@ interface Uint32Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; + findIndex(predicate: (value: number) => boolean, thisArg?: any): number | undefined; /** * Performs the specified action for each element in an array. @@ -3448,7 +3451,7 @@ interface Float32Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; + find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number | undefined; /** * Returns the index of the first element in the array where predicate is true, and undefined @@ -3459,7 +3462,7 @@ interface Float32Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; + findIndex(predicate: (value: number) => boolean, thisArg?: any): number | undefined; /** * Performs the specified action for each element in an array. @@ -3722,7 +3725,7 @@ interface Float64Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; + find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number | undefined; /** * Returns the index of the first element in the array where predicate is true, and undefined @@ -3733,7 +3736,7 @@ interface Float64Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; + findIndex(predicate: (value: number) => boolean, thisArg?: any): number | undefined; /** * Performs the specified action for each element in an array. @@ -3920,3 +3923,204 @@ interface Float64ArrayConstructor { from(arrayLike: ArrayLike, mapfn?: (v: number, k: number) => number, thisArg?: any): Float64Array; } declare const Float64Array: Float64ArrayConstructor; + +///////////////////////////// +/// ECMAScript Internationalization API +///////////////////////////// + +declare module Intl { + interface CollatorOptions { + usage?: string; + localeMatcher?: string; + numeric?: boolean; + caseFirst?: string; + sensitivity?: string; + ignorePunctuation?: boolean; + } + + interface ResolvedCollatorOptions { + locale: string; + usage: string; + sensitivity: string; + ignorePunctuation: boolean; + collation: string; + caseFirst: string; + numeric: boolean; + } + + interface Collator { + compare(x: string, y: string): number; + resolvedOptions(): ResolvedCollatorOptions; + } + var Collator: { + new (locales?: string[], options?: CollatorOptions): Collator; + new (locale?: string, options?: CollatorOptions): Collator; + (locales?: string[], options?: CollatorOptions): Collator; + (locale?: string, options?: CollatorOptions): Collator; + supportedLocalesOf(locales: string[], options?: CollatorOptions): string[]; + supportedLocalesOf(locale: string, options?: CollatorOptions): string[]; + } + + interface NumberFormatOptions { + localeMatcher?: string; + style?: string; + currency?: string; + currencyDisplay?: string; + useGrouping?: boolean; + minimumIntegerDigits?: number; + minimumFractionDigits?: number; + maximumFractionDigits?: number; + minimumSignificantDigits?: number; + maximumSignificantDigits?: number; + } + + interface ResolvedNumberFormatOptions { + locale: string; + numberingSystem: string; + style: string; + currency?: string; + currencyDisplay?: string; + minimumIntegerDigits: number; + minimumFractionDigits: number; + maximumFractionDigits: number; + minimumSignificantDigits?: number; + maximumSignificantDigits?: number; + useGrouping: boolean; + } + + interface NumberFormat { + format(value: number): string; + resolvedOptions(): ResolvedNumberFormatOptions; + } + var NumberFormat: { + new (locales?: string[], options?: NumberFormatOptions): NumberFormat; + new (locale?: string, options?: NumberFormatOptions): NumberFormat; + (locales?: string[], options?: NumberFormatOptions): NumberFormat; + (locale?: string, options?: NumberFormatOptions): NumberFormat; + supportedLocalesOf(locales: string[], options?: NumberFormatOptions): string[]; + supportedLocalesOf(locale: string, options?: NumberFormatOptions): string[]; + } + + interface DateTimeFormatOptions { + localeMatcher?: string; + weekday?: string; + era?: string; + year?: string; + month?: string; + day?: string; + hour?: string; + minute?: string; + second?: string; + timeZoneName?: string; + formatMatcher?: string; + hour12?: boolean; + timeZone?: string; + } + + interface ResolvedDateTimeFormatOptions { + locale: string; + calendar: string; + numberingSystem: string; + timeZone: string; + hour12?: boolean; + weekday?: string; + era?: string; + year?: string; + month?: string; + day?: string; + hour?: string; + minute?: string; + second?: string; + timeZoneName?: string; + } + + interface DateTimeFormat { + format(date?: Date | number): string; + resolvedOptions(): ResolvedDateTimeFormatOptions; + } + var DateTimeFormat: { + new (locales?: string[], options?: DateTimeFormatOptions): DateTimeFormat; + new (locale?: string, options?: DateTimeFormatOptions): DateTimeFormat; + (locales?: string[], options?: DateTimeFormatOptions): DateTimeFormat; + (locale?: string, options?: DateTimeFormatOptions): DateTimeFormat; + supportedLocalesOf(locales: string[], options?: DateTimeFormatOptions): string[]; + supportedLocalesOf(locale: string, options?: DateTimeFormatOptions): string[]; + } +} + +interface String { + /** + * Determines whether two strings are equivalent in the current locale. + * @param that String to compare to target string + * @param locales An array of locale strings that contain one or more language or locale tags. If you include more than one locale string, list them in descending order of priority so that the first entry is the preferred locale. If you omit this parameter, the default locale of the JavaScript runtime is used. This parameter must conform to BCP 47 standards; see the Intl.Collator object for details. + * @param options An object that contains one or more properties that specify comparison options. see the Intl.Collator object for details. + */ + localeCompare(that: string, locales: string[], options?: Intl.CollatorOptions): number; + + /** + * Determines whether two strings are equivalent in the current locale. + * @param that String to compare to target string + * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used. This parameter must conform to BCP 47 standards; see the Intl.Collator object for details. + * @param options An object that contains one or more properties that specify comparison options. see the Intl.Collator object for details. + */ + localeCompare(that: string, locale: string, options?: Intl.CollatorOptions): number; +} + +interface Number { + /** + * Converts a number to a string by using the current or specified locale. + * @param locales An array of locale strings that contain one or more language or locale tags. If you include more than one locale string, list them in descending order of priority so that the first entry is the preferred locale. If you omit this parameter, the default locale of the JavaScript runtime is used. + * @param options An object that contains one or more properties that specify comparison options. + */ + toLocaleString(locales?: string[], options?: Intl.NumberFormatOptions): string; + + /** + * Converts a number to a string by using the current or specified locale. + * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used. + * @param options An object that contains one or more properties that specify comparison options. + */ + toLocaleString(locale?: string, options?: Intl.NumberFormatOptions): string; +} + +interface Date { + /** + * Converts a date and time to a string by using the current or specified locale. + * @param locales An array of locale strings that contain one or more language or locale tags. If you include more than one locale string, list them in descending order of priority so that the first entry is the preferred locale. If you omit this parameter, the default locale of the JavaScript runtime is used. + * @param options An object that contains one or more properties that specify comparison options. + */ + toLocaleString(locales?: string[], options?: Intl.DateTimeFormatOptions): string; + /** + * Converts a date to a string by using the current or specified locale. + * @param locales An array of locale strings that contain one or more language or locale tags. If you include more than one locale string, list them in descending order of priority so that the first entry is the preferred locale. If you omit this parameter, the default locale of the JavaScript runtime is used. + * @param options An object that contains one or more properties that specify comparison options. + */ + toLocaleDateString(locales?: string[], options?: Intl.DateTimeFormatOptions): string; + + /** + * Converts a time to a string by using the current or specified locale. + * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used. + * @param options An object that contains one or more properties that specify comparison options. + */ + toLocaleTimeString(locale?: string[], options?: Intl.DateTimeFormatOptions): string; + + /** + * Converts a date and time to a string by using the current or specified locale. + * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used. + * @param options An object that contains one or more properties that specify comparison options. + */ + toLocaleString(locale?: string, options?: Intl.DateTimeFormatOptions): string; + + /** + * Converts a date to a string by using the current or specified locale. + * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used. + * @param options An object that contains one or more properties that specify comparison options. + */ + toLocaleDateString(locale?: string, options?: Intl.DateTimeFormatOptions): string; + + /** + * Converts a time to a string by using the current or specified locale. + * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used. + * @param options An object that contains one or more properties that specify comparison options. + */ + toLocaleTimeString(locale?: string, options?: Intl.DateTimeFormatOptions): string; +} diff --git a/lib/lib.es6.d.ts b/lib/lib.es6.d.ts index 7e973a82820..202d3d53d82 100644 --- a/lib/lib.es6.d.ts +++ b/lib/lib.es6.d.ts @@ -14,1339 +14,6 @@ and limitations under the License. ***************************************************************************** */ /// -declare type PropertyKey = string | number | symbol; - -interface Symbol { - /** Returns a string representation of an object. */ - toString(): string; - - /** Returns the primitive value of the specified object. */ - valueOf(): Object; - - readonly [Symbol.toStringTag]: "Symbol"; -} - -interface SymbolConstructor { - /** - * A reference to the prototype. - */ - readonly prototype: Symbol; - - /** - * Returns a new unique Symbol value. - * @param description Description of the new Symbol object. - */ - (description?: string|number): symbol; - - /** - * Returns a Symbol object from the global symbol registry matching the given key if found. - * Otherwise, returns a new symbol with this key. - * @param key key to search for. - */ - for(key: string): symbol; - - /** - * Returns a key from the global symbol registry matching the given Symbol if found. - * Otherwise, returns a undefined. - * @param sym Symbol to find the key for. - */ - keyFor(sym: symbol): string; - - // Well-known Symbols - - /** - * A method that determines if a constructor object recognizes an object as one of the - * constructor’s instances. Called by the semantics of the instanceof operator. - */ - readonly hasInstance: symbol; - - /** - * A Boolean value that if true indicates that an object should flatten to its array elements - * by Array.prototype.concat. - */ - readonly isConcatSpreadable: symbol; - - /** - * A method that returns the default iterator for an object. Called by the semantics of the - * for-of statement. - */ - readonly iterator: symbol; - - /** - * A regular expression method that matches the regular expression against a string. Called - * by the String.prototype.match method. - */ - readonly match: symbol; - - /** - * A regular expression method that replaces matched substrings of a string. Called by the - * String.prototype.replace method. - */ - readonly replace: symbol; - - /** - * A regular expression method that returns the index within a string that matches the - * regular expression. Called by the String.prototype.search method. - */ - readonly search: symbol; - - /** - * A function valued property that is the constructor function that is used to create - * derived objects. - */ - readonly species: symbol; - - /** - * A regular expression method that splits a string at the indices that match the regular - * expression. Called by the String.prototype.split method. - */ - readonly split: symbol; - - /** - * A method that converts an object to a corresponding primitive value. - * Called by the ToPrimitive abstract operation. - */ - readonly toPrimitive: symbol; - - /** - * A String value that is used in the creation of the default string description of an object. - * Called by the built-in method Object.prototype.toString. - */ - readonly toStringTag: symbol; - - /** - * An Object whose own property names are property names that are excluded from the 'with' - * environment bindings of the associated objects. - */ - readonly unscopables: symbol; -} -declare var Symbol: SymbolConstructor; - -interface Object { - /** - * Determines whether an object has a property with the specified name. - * @param v A property name. - */ - hasOwnProperty(v: PropertyKey): boolean; - - /** - * Determines whether a specified property is enumerable. - * @param v A property name. - */ - propertyIsEnumerable(v: PropertyKey): boolean; -} - -interface ObjectConstructor { - /** - * Copy the values of all of the enumerable own properties from one or more source objects to a - * target object. Returns the target object. - * @param target The target object to copy to. - * @param source The source object from which to copy properties. - */ - assign(target: T, source: U): T & U; - - /** - * Copy the values of all of the enumerable own properties from one or more source objects to a - * target object. Returns the target object. - * @param target The target object to copy to. - * @param source1 The first source object from which to copy properties. - * @param source2 The second source object from which to copy properties. - */ - assign(target: T, source1: U, source2: V): T & U & V; - - /** - * Copy the values of all of the enumerable own properties from one or more source objects to a - * target object. Returns the target object. - * @param target The target object to copy to. - * @param source1 The first source object from which to copy properties. - * @param source2 The second source object from which to copy properties. - * @param source3 The third source object from which to copy properties. - */ - assign(target: T, source1: U, source2: V, source3: W): T & U & V & W; - - /** - * Copy the values of all of the enumerable own properties from one or more source objects to a - * target object. Returns the target object. - * @param target The target object to copy to. - * @param sources One or more source objects from which to copy properties - */ - assign(target: any, ...sources: any[]): any; - - /** - * Returns an array of all symbol properties found directly on object o. - * @param o Object to retrieve the symbols from. - */ - getOwnPropertySymbols(o: any): symbol[]; - - /** - * Returns true if the values are the same value, false otherwise. - * @param value1 The first value. - * @param value2 The second value. - */ - is(value1: any, value2: any): boolean; - - /** - * Sets the prototype of a specified object o to object proto or null. Returns the object o. - * @param o The object to change its prototype. - * @param proto The value of the new prototype or null. - */ - setPrototypeOf(o: any, proto: any): any; - - /** - * Gets the own property descriptor of the specified object. - * An own property descriptor is one that is defined directly on the object and is not - * inherited from the object's prototype. - * @param o Object that contains the property. - * @param p Name of the property. - */ - getOwnPropertyDescriptor(o: any, propertyKey: PropertyKey): PropertyDescriptor; - - /** - * Adds a property to an object, or modifies attributes of an existing property. - * @param o Object on which to add or modify the property. This can be a native JavaScript - * object (that is, a user-defined object or a built in object) or a DOM object. - * @param p The property name. - * @param attributes Descriptor for the property. It can be for a data property or an accessor - * property. - */ - defineProperty(o: any, propertyKey: PropertyKey, attributes: PropertyDescriptor): any; -} - -interface Function { - /** - * Returns the name of the function. Function names are read-only and can not be changed. - */ - readonly name: string; - - /** - * Determines whether the given value inherits from this function if this function was used - * as a constructor function. - * - * A constructor function can control which objects are recognized as its instances by - * 'instanceof' by overriding this method. - */ - [Symbol.hasInstance](value: any): boolean; -} - -interface NumberConstructor { - /** - * The value of Number.EPSILON is the difference between 1 and the smallest value greater than 1 - * that is representable as a Number value, which is approximately: - * 2.2204460492503130808472633361816 x 10‍−‍16. - */ - readonly EPSILON: number; - - /** - * Returns true if passed value is finite. - * Unlike the global isFininte, Number.isFinite doesn't forcibly convert the parameter to a - * number. Only finite values of the type number, result in true. - * @param number A numeric value. - */ - isFinite(number: number): boolean; - - /** - * Returns true if the value passed is an integer, false otherwise. - * @param number A numeric value. - */ - isInteger(number: number): boolean; - - /** - * Returns a Boolean value that indicates whether a value is the reserved value NaN (not a - * number). Unlike the global isNaN(), Number.isNaN() doesn't forcefully convert the parameter - * to a number. Only values of the type number, that are also NaN, result in true. - * @param number A numeric value. - */ - isNaN(number: number): boolean; - - /** - * Returns true if the value passed is a safe integer. - * @param number A numeric value. - */ - isSafeInteger(number: number): boolean; - - /** - * The value of the largest integer n such that n and n + 1 are both exactly representable as - * a Number value. - * The value of Number.MIN_SAFE_INTEGER is 9007199254740991 2^53 − 1. - */ - readonly MAX_SAFE_INTEGER: number; - - /** - * The value of the smallest integer n such that n and n − 1 are both exactly representable as - * a Number value. - * The value of Number.MIN_SAFE_INTEGER is −9007199254740991 (−(2^53 − 1)). - */ - readonly MIN_SAFE_INTEGER: number; - - /** - * Converts a string to a floating-point number. - * @param string A string that contains a floating-point number. - */ - parseFloat(string: string): number; - - /** - * Converts A string to an integer. - * @param s A string to convert into a number. - * @param radix A value between 2 and 36 that specifies the base of the number in numString. - * If this argument is not supplied, strings with a prefix of '0x' are considered hexadecimal. - * All other strings are considered decimal. - */ - parseInt(string: string, radix?: number): number; -} - -interface Array { - /** Iterator */ - [Symbol.iterator](): IterableIterator; - - /** - * Returns an object whose properties have the value 'true' - * when they will be absent when used in a 'with' statement. - */ - [Symbol.unscopables](): { - copyWithin: boolean; - entries: boolean; - fill: boolean; - find: boolean; - findIndex: boolean; - keys: boolean; - values: boolean; - }; - - /** - * Returns an array of key, value pairs for every entry in the array - */ - entries(): IterableIterator<[number, T]>; - - /** - * Returns an list of keys in the array - */ - keys(): IterableIterator; - - /** - * Returns an list of values in the array - */ - values(): IterableIterator; - - /** - * Returns the value of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - find(predicate: (value: T, index: number, obj: Array) => boolean, thisArg?: any): T; - - /** - * Returns the index of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - findIndex(predicate: (value: T) => boolean, thisArg?: any): number; - - /** - * Returns the this object after filling the section identified by start and end with value - * @param value value to fill array section with - * @param start index to start filling the array at. If start is negative, it is treated as - * length+start where length is the length of the array. - * @param end index to stop filling the array at. If end is negative, it is treated as - * length+end. - */ - fill(value: T, start?: number, end?: number): T[]; - - /** - * Returns the this object after copying a section of the array identified by start and end - * to the same array starting at position target - * @param target If target is negative, it is treated as length+target where length is the - * length of the array. - * @param start If start is negative, it is treated as length+start. If end is negative, it - * is treated as length+end. - * @param end If not specified, length of the this object is used as its default value. - */ - copyWithin(target: number, start: number, end?: number): T[]; -} - -interface IArguments { - /** Iterator */ - [Symbol.iterator](): IterableIterator; -} - -interface ArrayConstructor { - /** - * Creates an array from an array-like object. - * @param arrayLike An array-like object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): Array; - - /** - * Creates an array from an iterable object. - * @param iterable An iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(iterable: Iterable, mapfn: (v: T, k: number) => U, thisArg?: any): Array; - - /** - * Creates an array from an array-like object. - * @param arrayLike An array-like object to convert to an array. - */ - from(arrayLike: ArrayLike): Array; - - /** - * Creates an array from an iterable object. - * @param iterable An iterable object to convert to an array. - */ - from(iterable: Iterable): Array; - - /** - * Returns a new array from a set of elements. - * @param items A set of elements to include in the new array object. - */ - of(...items: T[]): Array; -} - -interface String { - /** Iterator */ - [Symbol.iterator](): IterableIterator; - - /** - * Returns a nonnegative integer Number less than 1114112 (0x110000) that is the code point - * value of the UTF-16 encoded code point starting at the string element at position pos in - * the String resulting from converting this object to a String. - * If there is no element at that position, the result is undefined. - * If a valid UTF-16 surrogate pair does not begin at pos, the result is the code unit at pos. - */ - codePointAt(pos: number): number; - - /** - * Returns true if searchString appears as a substring of the result of converting this - * object to a String, at one or more positions that are - * greater than or equal to position; otherwise, returns false. - * @param searchString search string - * @param position If position is undefined, 0 is assumed, so as to search all of the String. - */ - includes(searchString: string, position?: number): boolean; - - /** - * Returns true if the sequence of elements of searchString converted to a String is the - * same as the corresponding elements of this object (converted to a String) starting at - * endPosition – length(this). Otherwise returns false. - */ - endsWith(searchString: string, endPosition?: number): boolean; - - /** - * Returns the String value result of normalizing the string into the normalization form - * named by form as specified in Unicode Standard Annex #15, Unicode Normalization Forms. - * @param form Applicable values: "NFC", "NFD", "NFKC", or "NFKD", If not specified default - * is "NFC" - */ - normalize(form?: string): string; - - /** - * Returns a String value that is made from count copies appended together. If count is 0, - * T is the empty String is returned. - * @param count number of copies to append - */ - repeat(count: number): string; - - /** - * Returns true if the sequence of elements of searchString converted to a String is the - * same as the corresponding elements of this object (converted to a String) starting at - * position. Otherwise returns false. - */ - startsWith(searchString: string, position?: number): boolean; - - // Overloads for objects with methods of well-known symbols. - - /** - * Matches a string an object that supports being matched against, and returns an array containing the results of that search. - * @param matcher An object that supports being matched against. - */ - match(matcher: { [Symbol.match](string: string): RegExpMatchArray; }): RegExpMatchArray; - - /** - * Replaces text in a string, using an object that supports replacement within a string. - * @param searchValue A object can search for and replace matches within a string. - * @param replaceValue A string containing the text to replace for every successful match of searchValue in this string. - */ - replace(searchValue: { [Symbol.replace](string: string, replaceValue: string): string; }, replaceValue: string): string; - - /** - * Replaces text in a string, using an object that supports replacement within a string. - * @param searchValue A object can search for and replace matches within a string. - * @param replacer A function that returns the replacement text. - */ - replace(searchValue: { [Symbol.replace](string: string, replacer: (substring: string, ...args: any[]) => string): string; }, replacer: (substring: string, ...args: any[]) => string): string; - - /** - * Finds the first substring match in a regular expression search. - * @param searcher An object which supports searching within a string. - */ - search(searcher: { [Symbol.search](string: string): number; }): number; - - /** - * Split a string into substrings using the specified separator and return them as an array. - * @param splitter An object that can split a string. - * @param limit A value used to limit the number of elements returned in the array. - */ - split(splitter: { [Symbol.split](string: string, limit?: number): string[]; }, limit?: number): string[]; - - /** - * Returns an HTML anchor element and sets the name attribute to the text value - * @param name - */ - anchor(name: string): string; - - /** Returns a HTML element */ - big(): string; - - /** Returns a HTML element */ - blink(): string; - - /** Returns a HTML element */ - bold(): string; - - /** Returns a HTML element */ - fixed(): string - - /** Returns a HTML element and sets the color attribute value */ - fontcolor(color: string): string - - /** Returns a HTML element and sets the size attribute value */ - fontsize(size: number): string; - - /** Returns a HTML element and sets the size attribute value */ - fontsize(size: string): string; - - /** Returns an HTML element */ - italics(): string; - - /** Returns an HTML element and sets the href attribute value */ - link(url: string): string; - - /** Returns a HTML element */ - small(): string; - - /** Returns a HTML element */ - strike(): string; - - /** Returns a HTML element */ - sub(): string; - - /** Returns a HTML element */ - sup(): string; -} - -interface StringConstructor { - /** - * Return the String value whose elements are, in order, the elements in the List elements. - * If length is 0, the empty string is returned. - */ - fromCodePoint(...codePoints: number[]): string; - - /** - * String.raw is intended for use as a tag function of a Tagged Template String. When called - * as such the first argument will be a well formed template call site object and the rest - * parameter will contain the substitution values. - * @param template A well-formed template string call site representation. - * @param substitutions A set of substitution values. - */ - raw(template: TemplateStringsArray, ...substitutions: any[]): string; -} - -interface IteratorResult { - done: boolean; - value?: T; -} - -interface Iterator { - next(value?: any): IteratorResult; - return?(value?: any): IteratorResult; - throw?(e?: any): IteratorResult; -} - -interface Iterable { - [Symbol.iterator](): Iterator; -} - -interface IterableIterator extends Iterator { - [Symbol.iterator](): IterableIterator; -} - -interface GeneratorFunction extends Function { - readonly [Symbol.toStringTag]: "GeneratorFunction"; -} - -interface GeneratorFunctionConstructor { - /** - * Creates a new Generator function. - * @param args A list of arguments the function accepts. - */ - new (...args: string[]): GeneratorFunction; - (...args: string[]): GeneratorFunction; - readonly prototype: GeneratorFunction; -} -declare var GeneratorFunction: GeneratorFunctionConstructor; - -interface Math { - /** - * Returns the number of leading zero bits in the 32-bit binary representation of a number. - * @param x A numeric expression. - */ - clz32(x: number): number; - - /** - * Returns the result of 32-bit multiplication of two numbers. - * @param x First number - * @param y Second number - */ - imul(x: number, y: number): number; - - /** - * Returns the sign of the x, indicating whether x is positive, negative or zero. - * @param x The numeric expression to test - */ - sign(x: number): number; - - /** - * Returns the base 10 logarithm of a number. - * @param x A numeric expression. - */ - log10(x: number): number; - - /** - * Returns the base 2 logarithm of a number. - * @param x A numeric expression. - */ - log2(x: number): number; - - /** - * Returns the natural logarithm of 1 + x. - * @param x A numeric expression. - */ - log1p(x: number): number; - - /** - * Returns the result of (e^x - 1) of x (e raised to the power of x, where e is the base of - * the natural logarithms). - * @param x A numeric expression. - */ - expm1(x: number): number; - - /** - * Returns the hyperbolic cosine of a number. - * @param x A numeric expression that contains an angle measured in radians. - */ - cosh(x: number): number; - - /** - * Returns the hyperbolic sine of a number. - * @param x A numeric expression that contains an angle measured in radians. - */ - sinh(x: number): number; - - /** - * Returns the hyperbolic tangent of a number. - * @param x A numeric expression that contains an angle measured in radians. - */ - tanh(x: number): number; - - /** - * Returns the inverse hyperbolic cosine of a number. - * @param x A numeric expression that contains an angle measured in radians. - */ - acosh(x: number): number; - - /** - * Returns the inverse hyperbolic sine of a number. - * @param x A numeric expression that contains an angle measured in radians. - */ - asinh(x: number): number; - - /** - * Returns the inverse hyperbolic tangent of a number. - * @param x A numeric expression that contains an angle measured in radians. - */ - atanh(x: number): number; - - /** - * Returns the square root of the sum of squares of its arguments. - * @param values Values to compute the square root for. - * If no arguments are passed, the result is +0. - * If there is only one argument, the result is the absolute value. - * If any argument is +Infinity or -Infinity, the result is +Infinity. - * If any argument is NaN, the result is NaN. - * If all arguments are either +0 or −0, the result is +0. - */ - hypot(...values: number[] ): number; - - /** - * Returns the integral part of the a numeric expression, x, removing any fractional digits. - * If x is already an integer, the result is x. - * @param x A numeric expression. - */ - trunc(x: number): number; - - /** - * Returns the nearest single precision float representation of a number. - * @param x A numeric expression. - */ - fround(x: number): number; - - /** - * Returns an implementation-dependent approximation to the cube root of number. - * @param x A numeric expression. - */ - cbrt(x: number): number; - - readonly [Symbol.toStringTag]: "Math"; -} - -interface Date { - /** - * Converts a Date object to a string. - */ - [Symbol.toPrimitive](hint: "default"): string; - /** - * Converts a Date object to a string. - */ - [Symbol.toPrimitive](hint: "string"): string; - /** - * Converts a Date object to a number. - */ - [Symbol.toPrimitive](hint: "number"): number; - /** - * Converts a Date object to a string or number. - * - * @param hint The strings "number", "string", or "default" to specify what primitive to return. - * - * @throws {TypeError} If 'hint' was given something other than "number", "string", or "default". - * @returns A number if 'hint' was "number", a string if 'hint' was "string" or "default". - */ - [Symbol.toPrimitive](hint: string): string | number; -} - -interface RegExp { - /** - * Matches a string with this regular expression, and returns an array containing the results of - * that search. - * @param string A string to search within. - */ - [Symbol.match](string: string): RegExpMatchArray; - - /** - * Replaces text in a string, using this regular expression. - * @param string A String object or string literal whose contents matching against - * this regular expression will be replaced - * @param replaceValue A String object or string literal containing the text to replace for every - * successful match of this regular expression. - */ - [Symbol.replace](string: string, replaceValue: string): string; - - /** - * Replaces text in a string, using this regular expression. - * @param string A String object or string literal whose contents matching against - * this regular expression will be replaced - * @param replacer A function that returns the replacement text. - */ - [Symbol.replace](string: string, replacer: (substring: string, ...args: any[]) => string): string; - - /** - * Finds the position beginning first substring match in a regular expression search - * using this regular expression. - * - * @param string The string to search within. - */ - [Symbol.search](string: string): number; - - /** - * Returns an array of substrings that were delimited by strings in the original input that - * match against this regular expression. - * - * If the regular expression contains capturing parentheses, then each time this - * regular expression matches, the results (including any undefined results) of the - * capturing parentheses are spliced. - * - * @param string string value to split - * @param limit if not undefined, the output array is truncated so that it contains no more - * than 'limit' elements. - */ - [Symbol.split](string: string, limit?: number): string[]; - - /** - * Returns a string indicating the flags of the regular expression in question. This field is read-only. - * The characters in this string are sequenced and concatenated in the following order: - * - * - "g" for global - * - "i" for ignoreCase - * - "m" for multiline - * - "u" for unicode - * - "y" for sticky - * - * If no flags are set, the value is the empty string. - */ - readonly flags: string; - - /** - * Returns a Boolean value indicating the state of the sticky flag (y) used with a regular - * expression. Default is false. Read-only. - */ - readonly sticky: boolean; - - /** - * Returns a Boolean value indicating the state of the Unicode flag (u) used with a regular - * expression. Default is false. Read-only. - */ - readonly unicode: boolean; -} - -interface RegExpConstructor { - [Symbol.species](): RegExpConstructor; -} - -interface Map { - clear(): void; - delete(key: K): boolean; - entries(): IterableIterator<[K, V]>; - forEach(callbackfn: (value: V, index: K, map: Map) => void, thisArg?: any): void; - get(key: K): V; - has(key: K): boolean; - keys(): IterableIterator; - set(key: K, value?: V): Map; - readonly size: number; - values(): IterableIterator; - [Symbol.iterator]():IterableIterator<[K,V]>; - readonly [Symbol.toStringTag]: "Map"; -} - -interface MapConstructor { - new (): Map; - new (): Map; - new (iterable: Iterable<[K, V]>): Map; - readonly prototype: Map; -} -declare var Map: MapConstructor; - -interface WeakMap { - clear(): void; - delete(key: K): boolean; - get(key: K): V; - has(key: K): boolean; - set(key: K, value?: V): WeakMap; - readonly [Symbol.toStringTag]: "WeakMap"; -} - -interface WeakMapConstructor { - new (): WeakMap; - new (): WeakMap; - new (iterable: Iterable<[K, V]>): WeakMap; - readonly prototype: WeakMap; -} -declare var WeakMap: WeakMapConstructor; - -interface Set { - add(value: T): Set; - clear(): void; - delete(value: T): boolean; - entries(): IterableIterator<[T, T]>; - forEach(callbackfn: (value: T, index: T, set: Set) => void, thisArg?: any): void; - has(value: T): boolean; - keys(): IterableIterator; - readonly size: number; - values(): IterableIterator; - [Symbol.iterator]():IterableIterator; - readonly [Symbol.toStringTag]: "Set"; -} - -interface SetConstructor { - new (): Set; - new (): Set; - new (iterable: Iterable): Set; - readonly prototype: Set; -} -declare var Set: SetConstructor; - -interface WeakSet { - add(value: T): WeakSet; - clear(): void; - delete(value: T): boolean; - has(value: T): boolean; - readonly [Symbol.toStringTag]: "WeakSet"; -} - -interface WeakSetConstructor { - new (): WeakSet; - new (): WeakSet; - new (iterable: Iterable): WeakSet; - readonly prototype: WeakSet; -} -declare var WeakSet: WeakSetConstructor; - -interface JSON { - readonly [Symbol.toStringTag]: "JSON"; -} - -/** - * Represents a raw buffer of binary data, which is used to store data for the - * different typed arrays. ArrayBuffers cannot be read from or written to directly, - * but can be passed to a typed array or DataView Object to interpret the raw - * buffer as needed. - */ -interface ArrayBuffer { - readonly [Symbol.toStringTag]: "ArrayBuffer"; -} - -interface DataView { - readonly [Symbol.toStringTag]: "DataView"; -} - -/** - * A typed array of 8-bit integer values. The contents are initialized to 0. If the requested - * number of bytes could not be allocated an exception is raised. - */ -interface Int8Array { - /** - * Returns an array of key, value pairs for every entry in the array - */ - entries(): IterableIterator<[number, number]>; - /** - * Returns an list of keys in the array - */ - keys(): IterableIterator; - /** - * Returns an list of values in the array - */ - values(): IterableIterator; - [Symbol.iterator](): IterableIterator; - readonly [Symbol.toStringTag]: "Int8Array"; -} - -interface Int8ArrayConstructor { - new (elements: Iterable): Int8Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Int8Array; -} - -/** - * A typed array of 8-bit unsigned integer values. The contents are initialized to 0. If the - * requested number of bytes could not be allocated an exception is raised. - */ -interface Uint8Array { - /** - * Returns an array of key, value pairs for every entry in the array - */ - entries(): IterableIterator<[number, number]>; - /** - * Returns an list of keys in the array - */ - keys(): IterableIterator; - /** - * Returns an list of values in the array - */ - values(): IterableIterator; - [Symbol.iterator](): IterableIterator; - readonly [Symbol.toStringTag]: "UInt8Array"; -} - -interface Uint8ArrayConstructor { - new (elements: Iterable): Uint8Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint8Array; -} - -/** - * A typed array of 8-bit unsigned integer (clamped) values. The contents are initialized to 0. - * If the requested number of bytes could not be allocated an exception is raised. - */ -interface Uint8ClampedArray { - /** - * Returns an array of key, value pairs for every entry in the array - */ - entries(): IterableIterator<[number, number]>; - - /** - * Returns an list of keys in the array - */ - keys(): IterableIterator; - - /** - * Returns an list of values in the array - */ - values(): IterableIterator; - - [Symbol.iterator](): IterableIterator; - readonly [Symbol.toStringTag]: "Uint8ClampedArray"; -} - -interface Uint8ClampedArrayConstructor { - new (elements: Iterable): Uint8ClampedArray; - - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint8ClampedArray; -} - -/** - * A typed array of 16-bit signed integer values. The contents are initialized to 0. If the - * requested number of bytes could not be allocated an exception is raised. - */ -interface Int16Array { - /** - * Returns an array of key, value pairs for every entry in the array - */ - entries(): IterableIterator<[number, number]>; - - /** - * Returns an list of keys in the array - */ - keys(): IterableIterator; - - /** - * Returns an list of values in the array - */ - values(): IterableIterator; - - - [Symbol.iterator](): IterableIterator; - readonly [Symbol.toStringTag]: "Int16Array"; -} - -interface Int16ArrayConstructor { - new (elements: Iterable): Int16Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Int16Array; -} - -/** - * A typed array of 16-bit unsigned integer values. The contents are initialized to 0. If the - * requested number of bytes could not be allocated an exception is raised. - */ -interface Uint16Array { - /** - * Returns an array of key, value pairs for every entry in the array - */ - entries(): IterableIterator<[number, number]>; - /** - * Returns an list of keys in the array - */ - keys(): IterableIterator; - /** - * Returns an list of values in the array - */ - values(): IterableIterator; - [Symbol.iterator](): IterableIterator; - readonly [Symbol.toStringTag]: "Uint16Array"; -} - -interface Uint16ArrayConstructor { - new (elements: Iterable): Uint16Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint16Array; -} - -/** - * A typed array of 32-bit signed integer values. The contents are initialized to 0. If the - * requested number of bytes could not be allocated an exception is raised. - */ -interface Int32Array { - /** - * Returns an array of key, value pairs for every entry in the array - */ - entries(): IterableIterator<[number, number]>; - /** - * Returns an list of keys in the array - */ - keys(): IterableIterator; - /** - * Returns an list of values in the array - */ - values(): IterableIterator; - [Symbol.iterator](): IterableIterator; - readonly [Symbol.toStringTag]: "Int32Array"; -} - -interface Int32ArrayConstructor { - new (elements: Iterable): Int32Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Int32Array; -} - -/** - * A typed array of 32-bit unsigned integer values. The contents are initialized to 0. If the - * requested number of bytes could not be allocated an exception is raised. - */ -interface Uint32Array { - /** - * Returns an array of key, value pairs for every entry in the array - */ - entries(): IterableIterator<[number, number]>; - /** - * Returns an list of keys in the array - */ - keys(): IterableIterator; - /** - * Returns an list of values in the array - */ - values(): IterableIterator; - [Symbol.iterator](): IterableIterator; - readonly [Symbol.toStringTag]: "Uint32Array"; -} - -interface Uint32ArrayConstructor { - new (elements: Iterable): Uint32Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint32Array; -} - -/** - * A typed array of 32-bit float values. The contents are initialized to 0. If the requested number - * of bytes could not be allocated an exception is raised. - */ -interface Float32Array { - /** - * Returns an array of key, value pairs for every entry in the array - */ - entries(): IterableIterator<[number, number]>; - /** - * Returns an list of keys in the array - */ - keys(): IterableIterator; - /** - * Returns an list of values in the array - */ - values(): IterableIterator; - [Symbol.iterator](): IterableIterator; - readonly [Symbol.toStringTag]: "Float32Array"; -} - -interface Float32ArrayConstructor { - new (elements: Iterable): Float32Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Float32Array; -} - -/** - * A typed array of 64-bit float values. The contents are initialized to 0. If the requested - * number of bytes could not be allocated an exception is raised. - */ -interface Float64Array { - /** - * Returns an array of key, value pairs for every entry in the array - */ - entries(): IterableIterator<[number, number]>; - /** - * Returns an list of keys in the array - */ - keys(): IterableIterator; - /** - * Returns an list of values in the array - */ - values(): IterableIterator; - [Symbol.iterator](): IterableIterator; - readonly [Symbol.toStringTag]: "Float64Array"; -} - -interface Float64ArrayConstructor { - new (elements: Iterable): Float64Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Float64Array; -} - -interface ProxyHandler { - getPrototypeOf? (target: T): any; - setPrototypeOf? (target: T, v: any): boolean; - isExtensible? (target: T): boolean; - preventExtensions? (target: T): boolean; - getOwnPropertyDescriptor? (target: T, p: PropertyKey): PropertyDescriptor; - has? (target: T, p: PropertyKey): boolean; - get? (target: T, p: PropertyKey, receiver: any): any; - set? (target: T, p: PropertyKey, value: any, receiver: any): boolean; - deleteProperty? (target: T, p: PropertyKey): boolean; - defineProperty? (target: T, p: PropertyKey, attributes: PropertyDescriptor): boolean; - enumerate? (target: T): PropertyKey[]; - ownKeys? (target: T): PropertyKey[]; - apply? (target: T, thisArg: any, argArray?: any): any; - construct? (target: T, thisArg: any, argArray?: any): any; -} - -interface ProxyConstructor { - revocable(target: T, handler: ProxyHandler): { proxy: T; revoke: () => void; }; - new (target: T, handler: ProxyHandler): T -} -declare var Proxy: ProxyConstructor; - -declare namespace Reflect { - function apply(target: Function, thisArgument: any, argumentsList: ArrayLike): any; - function construct(target: Function, argumentsList: ArrayLike, newTarget?: any): any; - function defineProperty(target: any, propertyKey: PropertyKey, attributes: PropertyDescriptor): boolean; - function deleteProperty(target: any, propertyKey: PropertyKey): boolean; - function enumerate(target: any): IterableIterator; - function get(target: any, propertyKey: PropertyKey, receiver?: any): any; - function getOwnPropertyDescriptor(target: any, propertyKey: PropertyKey): PropertyDescriptor; - function getPrototypeOf(target: any): any; - function has(target: any, propertyKey: string): boolean; - function has(target: any, propertyKey: symbol): boolean; - function isExtensible(target: any): boolean; - function ownKeys(target: any): Array; - function preventExtensions(target: any): boolean; - function set(target: any, propertyKey: PropertyKey, value: any, receiver?: any): boolean; - function setPrototypeOf(target: any, proto: any): boolean; -} - -/** - * Represents the completion of an asynchronous operation - */ -interface Promise { - /** - * 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(onfulfilled?: (value: T) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): Promise; - then(onfulfilled?: (value: T) => TResult | PromiseLike, onrejected?: (reason: any) => void): Promise; - - /** - * Attaches a callback for only the rejection of the Promise. - * @param onrejected The callback to execute when the Promise is rejected. - * @returns A Promise for the completion of the callback. - */ - catch(onrejected?: (reason: any) => T | PromiseLike): Promise; - catch(onrejected?: (reason: any) => void): Promise; - - readonly [Symbol.toStringTag]: "Promise"; -} - -interface PromiseConstructor { - /** - * A reference to the prototype. - */ - readonly prototype: Promise; - - /** - * Creates a new Promise. - * @param executor A callback used to initialize the promise. This callback is passed two arguments: - * a resolve callback used resolve the promise with a value or the result of another promise, - * and a reject callback used to reject the promise with a provided reason or error. - */ - new (executor: (resolve: (value?: T | PromiseLike) => void, reject: (reason?: any) => void) => void): Promise; - - /** - * Creates a Promise that is resolved with an array of results when all of the provided Promises - * resolve, or rejected when any Promise is rejected. - * @param values An array of Promises. - * @returns A new Promise. - */ - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike, T9 | PromiseLike, T10 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]>; - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike, T9 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9]>; - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8]>; - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7]>; - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6]>; - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike]): Promise<[T1, T2, T3, T4, T5]>; - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike ]): Promise<[T1, T2, T3, T4]>; - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike]): Promise<[T1, T2, T3]>; - all(values: [T1 | PromiseLike, T2 | PromiseLike]): Promise<[T1, T2]>; - all(values: Iterable>): Promise; - - /** - * Creates a Promise that is resolved or rejected when any of the provided Promises are resolved - * or rejected. - * @param values An array of Promises. - * @returns A new Promise. - */ - race(values: Iterable>): Promise; - - /** - * Creates a new rejected promise for the provided reason. - * @param reason The reason the promise was rejected. - * @returns A new rejected Promise. - */ - reject(reason: any): Promise; - - /** - * Creates a new rejected promise for the provided reason. - * @param reason The reason the promise was rejected. - * @returns A new rejected Promise. - */ - reject(reason: any): Promise; - - /** - * Creates a new resolved promise for the provided value. - * @param value A promise. - * @returns A promise whose internal state matches the provided promise. - */ - resolve(value: T | PromiseLike): Promise; - - /** - * Creates a new resolved promise . - * @returns A resolved promise. - */ - resolve(): Promise; - - readonly [Symbol.species]: Function; -} - -declare var Promise: PromiseConstructor; ///////////////////////////// /// ECMAScript APIs ///////////////////////////// @@ -1564,14 +231,16 @@ interface Function { * @param thisArg The object to be used as the this object. * @param argArray A set of arguments to be passed to the function. */ - apply(thisArg: any, argArray?: any): any; + apply(this: (this: T, ...argArray: any[]) => U, thisArg: T, argArray?: any): U; + apply(this: Function, thisArg: any, argArray?: any): any; /** * Calls a method of an object, substituting another object for the current object. * @param thisArg The object to be used as the current object. * @param argArray A list of arguments to be passed to the method. */ - call(thisArg: any, ...argArray: any[]): any; + call(this: (this: T, ...argArray: any[]) => U, thisArg: T, ...argArray: any[]): U; + call(this: Function, thisArg: any, ...argArray: any[]): any; /** * For a given function, creates a bound function that has the same body as the original function. @@ -1579,7 +248,8 @@ interface Function { * @param thisArg An object to which the this keyword can refer inside the new function. * @param argArray A list of arguments to be passed to the new function. */ - bind(thisArg: any, ...argArray: any[]): any; + bind(this: (this: T, ...argArray: any[]) => U, thisArg: T, ...argArray: any[]): (this: void, ...argArray: any[]) => U; + bind(this: Function, thisArg: any, ...argArray: any[]): any; prototype: any; readonly length: number; @@ -1653,13 +323,13 @@ interface String { * Matches a string with a regular expression, and returns an array containing the results of that search. * @param regexp A variable name or string literal containing the regular expression pattern and flags. */ - match(regexp: string): RegExpMatchArray; + match(regexp: string): RegExpMatchArray | null; /** * Matches a string with a regular expression, and returns an array containing the results of that search. * @param regexp A regular expression object that contains the regular expression pattern and applicable flags. */ - match(regexp: RegExp): RegExpMatchArray; + match(regexp: RegExp): RegExpMatchArray | null; /** * Replaces text in a string, using a regular expression or search string. @@ -2162,7 +832,7 @@ interface RegExp { * Executes a search on a string using a regular expression pattern, and returns an array containing the results of that search. * @param string The String object or string literal on which to perform the search. */ - exec(string: string): RegExpExecArray; + exec(string: string): RegExpExecArray | null; /** * Returns a Boolean value that indicates whether or not a pattern exists in a searched string. @@ -2185,7 +855,7 @@ interface RegExp { lastIndex: number; // Non-standard extensions - compile(): RegExp; + compile(): this; } interface RegExpConstructor { @@ -2457,7 +1127,7 @@ interface Array { /** * Removes the last element from an array and returns it. */ - pop(): T; + pop(): T | undefined; /** * Combines two or more arrays. * @param items Additional items to add to the end of array1. @@ -2475,7 +1145,7 @@ interface Array { /** * Removes the first element from an array and returns it. */ - shift(): T; + shift(): T | undefined; /** * Returns a section of an array. * @param start The beginning of the specified portion of the array. @@ -2868,7 +1538,7 @@ interface Int8Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; + find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number | undefined; /** * Returns the index of the first element in the array where predicate is true, and undefined @@ -2879,7 +1549,7 @@ interface Int8Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; + findIndex(predicate: (value: number) => boolean, thisArg?: any): number | undefined; /** * Performs the specified action for each element in an array. @@ -3141,7 +1811,7 @@ interface Uint8Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; + find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number | undefined; /** * Returns the index of the first element in the array where predicate is true, and undefined @@ -3152,7 +1822,7 @@ interface Uint8Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; + findIndex(predicate: (value: number) => boolean, thisArg?: any): number | undefined; /** * Performs the specified action for each element in an array. @@ -3415,7 +2085,7 @@ interface Uint8ClampedArray { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; + find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number | undefined; /** * Returns the index of the first element in the array where predicate is true, and undefined @@ -3426,7 +2096,7 @@ interface Uint8ClampedArray { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; + findIndex(predicate: (value: number) => boolean, thisArg?: any): number | undefined; /** * Performs the specified action for each element in an array. @@ -3688,7 +2358,7 @@ interface Int16Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; + find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number | undefined; /** * Returns the index of the first element in the array where predicate is true, and undefined @@ -3699,7 +2369,7 @@ interface Int16Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; + findIndex(predicate: (value: number) => boolean, thisArg?: any): number | undefined; /** * Performs the specified action for each element in an array. @@ -3962,7 +2632,7 @@ interface Uint16Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; + find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number | undefined; /** * Returns the index of the first element in the array where predicate is true, and undefined @@ -3973,7 +2643,7 @@ interface Uint16Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; + findIndex(predicate: (value: number) => boolean, thisArg?: any): number | undefined; /** * Performs the specified action for each element in an array. @@ -4235,7 +2905,7 @@ interface Int32Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; + find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number | undefined; /** * Returns the index of the first element in the array where predicate is true, and undefined @@ -4246,7 +2916,7 @@ interface Int32Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; + findIndex(predicate: (value: number) => boolean, thisArg?: any): number | undefined; /** * Performs the specified action for each element in an array. @@ -4508,7 +3178,7 @@ interface Uint32Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; + find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number | undefined; /** * Returns the index of the first element in the array where predicate is true, and undefined @@ -4519,7 +3189,7 @@ interface Uint32Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; + findIndex(predicate: (value: number) => boolean, thisArg?: any): number | undefined; /** * Performs the specified action for each element in an array. @@ -4781,7 +3451,7 @@ interface Float32Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; + find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number | undefined; /** * Returns the index of the first element in the array where predicate is true, and undefined @@ -4792,7 +3462,7 @@ interface Float32Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; + findIndex(predicate: (value: number) => boolean, thisArg?: any): number | undefined; /** * Performs the specified action for each element in an array. @@ -5055,7 +3725,7 @@ interface Float64Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; + find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number | undefined; /** * Returns the index of the first element in the array where predicate is true, and undefined @@ -5066,7 +3736,7 @@ interface Float64Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; + findIndex(predicate: (value: number) => boolean, thisArg?: any): number | undefined; /** * Performs the specified action for each element in an array. @@ -5253,6 +3923,7 @@ interface Float64ArrayConstructor { from(arrayLike: ArrayLike, mapfn?: (v: number, k: number) => number, thisArg?: any): Float64Array; } declare const Float64Array: Float64ArrayConstructor; + ///////////////////////////// /// ECMAScript Internationalization API ///////////////////////////// @@ -5453,9 +4124,1449 @@ interface Date { */ toLocaleTimeString(locale?: string, options?: Intl.DateTimeFormatOptions): string; } +declare type PropertyKey = string | number | symbol; + +interface Array { + /** + * Returns the value of the first element in the array where predicate is true, and undefined + * otherwise. + * @param predicate find calls predicate once for each element of the array, in ascending + * order, until it finds one where predicate returns true. If such an element is found, find + * immediately returns that element value. Otherwise, find returns undefined. + * @param thisArg If provided, it will be used as the this value for each invocation of + * predicate. If it is not provided, undefined is used instead. + */ + find(predicate: (value: T, index: number, obj: Array) => boolean, thisArg?: any): T | undefined; + + /** + * Returns the index of the first element in the array where predicate is true, and undefined + * otherwise. + * @param predicate find calls predicate once for each element of the array, in ascending + * order, until it finds one where predicate returns true. If such an element is found, find + * immediately returns that element value. Otherwise, find returns undefined. + * @param thisArg If provided, it will be used as the this value for each invocation of + * predicate. If it is not provided, undefined is used instead. + */ + findIndex(predicate: (value: T) => boolean, thisArg?: any): number | undefined; + + /** + * Returns the this object after filling the section identified by start and end with value + * @param value value to fill array section with + * @param start index to start filling the array at. If start is negative, it is treated as + * length+start where length is the length of the array. + * @param end index to stop filling the array at. If end is negative, it is treated as + * length+end. + */ + fill(value: T, start?: number, end?: number): T[]; + + /** + * Returns the this object after copying a section of the array identified by start and end + * to the same array starting at position target + * @param target If target is negative, it is treated as length+target where length is the + * length of the array. + * @param start If start is negative, it is treated as length+start. If end is negative, it + * is treated as length+end. + * @param end If not specified, length of the this object is used as its default value. + */ + copyWithin(target: number, start: number, end?: number): T[]; +} + +interface ArrayConstructor { + /** + * Creates an array from an array-like object. + * @param arrayLike An array-like object to convert to an array. + * @param mapfn A mapping function to call on every element of the array. + * @param thisArg Value of 'this' used to invoke the mapfn. + */ + from(arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): Array; -///////////////////////////// + /** + * Creates an array from an array-like object. + * @param arrayLike An array-like object to convert to an array. + */ + from(arrayLike: ArrayLike): Array; + + /** + * Returns a new array from a set of elements. + * @param items A set of elements to include in the new array object. + */ + of(...items: T[]): Array; +} + +interface Function { + /** + * Returns the name of the function. Function names are read-only and can not be changed. + */ + readonly name: string; +} + +interface Math { + /** + * Returns the number of leading zero bits in the 32-bit binary representation of a number. + * @param x A numeric expression. + */ + clz32(x: number): number; + + /** + * Returns the result of 32-bit multiplication of two numbers. + * @param x First number + * @param y Second number + */ + imul(x: number, y: number): number; + + /** + * Returns the sign of the x, indicating whether x is positive, negative or zero. + * @param x The numeric expression to test + */ + sign(x: number): number; + + /** + * Returns the base 10 logarithm of a number. + * @param x A numeric expression. + */ + log10(x: number): number; + + /** + * Returns the base 2 logarithm of a number. + * @param x A numeric expression. + */ + log2(x: number): number; + + /** + * Returns the natural logarithm of 1 + x. + * @param x A numeric expression. + */ + log1p(x: number): number; + + /** + * Returns the result of (e^x - 1) of x (e raised to the power of x, where e is the base of + * the natural logarithms). + * @param x A numeric expression. + */ + expm1(x: number): number; + + /** + * Returns the hyperbolic cosine of a number. + * @param x A numeric expression that contains an angle measured in radians. + */ + cosh(x: number): number; + + /** + * Returns the hyperbolic sine of a number. + * @param x A numeric expression that contains an angle measured in radians. + */ + sinh(x: number): number; + + /** + * Returns the hyperbolic tangent of a number. + * @param x A numeric expression that contains an angle measured in radians. + */ + tanh(x: number): number; + + /** + * Returns the inverse hyperbolic cosine of a number. + * @param x A numeric expression that contains an angle measured in radians. + */ + acosh(x: number): number; + + /** + * Returns the inverse hyperbolic sine of a number. + * @param x A numeric expression that contains an angle measured in radians. + */ + asinh(x: number): number; + + /** + * Returns the inverse hyperbolic tangent of a number. + * @param x A numeric expression that contains an angle measured in radians. + */ + atanh(x: number): number; + + /** + * Returns the square root of the sum of squares of its arguments. + * @param values Values to compute the square root for. + * If no arguments are passed, the result is +0. + * If there is only one argument, the result is the absolute value. + * If any argument is +Infinity or -Infinity, the result is +Infinity. + * If any argument is NaN, the result is NaN. + * If all arguments are either +0 or −0, the result is +0. + */ + hypot(...values: number[] ): number; + + /** + * Returns the integral part of the a numeric expression, x, removing any fractional digits. + * If x is already an integer, the result is x. + * @param x A numeric expression. + */ + trunc(x: number): number; + + /** + * Returns the nearest single precision float representation of a number. + * @param x A numeric expression. + */ + fround(x: number): number; + + /** + * Returns an implementation-dependent approximation to the cube root of number. + * @param x A numeric expression. + */ + cbrt(x: number): number; +} + +interface NumberConstructor { + /** + * The value of Number.EPSILON is the difference between 1 and the smallest value greater than 1 + * that is representable as a Number value, which is approximately: + * 2.2204460492503130808472633361816 x 10‍−‍16. + */ + readonly EPSILON: number; + + /** + * Returns true if passed value is finite. + * Unlike the global isFininte, Number.isFinite doesn't forcibly convert the parameter to a + * number. Only finite values of the type number, result in true. + * @param number A numeric value. + */ + isFinite(number: number): boolean; + + /** + * Returns true if the value passed is an integer, false otherwise. + * @param number A numeric value. + */ + isInteger(number: number): boolean; + + /** + * Returns a Boolean value that indicates whether a value is the reserved value NaN (not a + * number). Unlike the global isNaN(), Number.isNaN() doesn't forcefully convert the parameter + * to a number. Only values of the type number, that are also NaN, result in true. + * @param number A numeric value. + */ + isNaN(number: number): boolean; + + /** + * Returns true if the value passed is a safe integer. + * @param number A numeric value. + */ + isSafeInteger(number: number): boolean; + + /** + * The value of the largest integer n such that n and n + 1 are both exactly representable as + * a Number value. + * The value of Number.MIN_SAFE_INTEGER is 9007199254740991 2^53 − 1. + */ + readonly MAX_SAFE_INTEGER: number; + + /** + * The value of the smallest integer n such that n and n − 1 are both exactly representable as + * a Number value. + * The value of Number.MIN_SAFE_INTEGER is −9007199254740991 (−(2^53 − 1)). + */ + readonly MIN_SAFE_INTEGER: number; + + /** + * Converts a string to a floating-point number. + * @param string A string that contains a floating-point number. + */ + parseFloat(string: string): number; + + /** + * Converts A string to an integer. + * @param s A string to convert into a number. + * @param radix A value between 2 and 36 that specifies the base of the number in numString. + * If this argument is not supplied, strings with a prefix of '0x' are considered hexadecimal. + * All other strings are considered decimal. + */ + parseInt(string: string, radix?: number): number; +} + +interface Object { + /** + * Determines whether an object has a property with the specified name. + * @param v A property name. + */ + hasOwnProperty(v: PropertyKey): boolean + + /** + * Determines whether a specified property is enumerable. + * @param v A property name. + */ + propertyIsEnumerable(v: PropertyKey): boolean; +} + +interface ObjectConstructor { + /** + * Copy the values of all of the enumerable own properties from one or more source objects to a + * target object. Returns the target object. + * @param target The target object to copy to. + * @param source The source object from which to copy properties. + */ + assign(target: T, source: U): T & U; + + /** + * Copy the values of all of the enumerable own properties from one or more source objects to a + * target object. Returns the target object. + * @param target The target object to copy to. + * @param source1 The first source object from which to copy properties. + * @param source2 The second source object from which to copy properties. + */ + assign(target: T, source1: U, source2: V): T & U & V; + + /** + * Copy the values of all of the enumerable own properties from one or more source objects to a + * target object. Returns the target object. + * @param target The target object to copy to. + * @param source1 The first source object from which to copy properties. + * @param source2 The second source object from which to copy properties. + * @param source3 The third source object from which to copy properties. + */ + assign(target: T, source1: U, source2: V, source3: W): T & U & V & W; + + /** + * Copy the values of all of the enumerable own properties from one or more source objects to a + * target object. Returns the target object. + * @param target The target object to copy to. + * @param sources One or more source objects from which to copy properties + */ + assign(target: any, ...sources: any[]): any; + + /** + * Returns an array of all symbol properties found directly on object o. + * @param o Object to retrieve the symbols from. + */ + getOwnPropertySymbols(o: any): symbol[]; + + /** + * Returns true if the values are the same value, false otherwise. + * @param value1 The first value. + * @param value2 The second value. + */ + is(value1: any, value2: any): boolean; + + /** + * Sets the prototype of a specified object o to object proto or null. Returns the object o. + * @param o The object to change its prototype. + * @param proto The value of the new prototype or null. + */ + setPrototypeOf(o: any, proto: any): any; + + /** + * Gets the own property descriptor of the specified object. + * An own property descriptor is one that is defined directly on the object and is not + * inherited from the object's prototype. + * @param o Object that contains the property. + * @param p Name of the property. + */ + getOwnPropertyDescriptor(o: any, propertyKey: PropertyKey): PropertyDescriptor; + + /** + * Adds a property to an object, or modifies attributes of an existing property. + * @param o Object on which to add or modify the property. This can be a native JavaScript + * object (that is, a user-defined object or a built in object) or a DOM object. + * @param p The property name. + * @param attributes Descriptor for the property. It can be for a data property or an accessor + * property. + */ + defineProperty(o: any, propertyKey: PropertyKey, attributes: PropertyDescriptor): any; +} + +interface RegExp { + /** + * Returns a string indicating the flags of the regular expression in question. This field is read-only. + * The characters in this string are sequenced and concatenated in the following order: + * + * - "g" for global + * - "i" for ignoreCase + * - "m" for multiline + * - "u" for unicode + * - "y" for sticky + * + * If no flags are set, the value is the empty string. + */ + readonly flags: string; + + /** + * Returns a Boolean value indicating the state of the sticky flag (y) used with a regular + * expression. Default is false. Read-only. + */ + readonly sticky: boolean; + + /** + * Returns a Boolean value indicating the state of the Unicode flag (u) used with a regular + * expression. Default is false. Read-only. + */ + readonly unicode: boolean; +} + +interface String { + /** + * Returns a nonnegative integer Number less than 1114112 (0x110000) that is the code point + * value of the UTF-16 encoded code point starting at the string element at position pos in + * the String resulting from converting this object to a String. + * If there is no element at that position, the result is undefined. + * If a valid UTF-16 surrogate pair does not begin at pos, the result is the code unit at pos. + */ + codePointAt(pos: number): number | undefined; + + /** + * Returns true if searchString appears as a substring of the result of converting this + * object to a String, at one or more positions that are + * greater than or equal to position; otherwise, returns false. + * @param searchString search string + * @param position If position is undefined, 0 is assumed, so as to search all of the String. + */ + includes(searchString: string, position?: number): boolean; + + /** + * Returns true if the sequence of elements of searchString converted to a String is the + * same as the corresponding elements of this object (converted to a String) starting at + * endPosition – length(this). Otherwise returns false. + */ + endsWith(searchString: string, endPosition?: number): boolean; + + /** + * Returns the String value result of normalizing the string into the normalization form + * named by form as specified in Unicode Standard Annex #15, Unicode Normalization Forms. + * @param form Applicable values: "NFC", "NFD", "NFKC", or "NFKD", If not specified default + * is "NFC" + */ + normalize(form?: string): string; + + /** + * Returns a String value that is made from count copies appended together. If count is 0, + * T is the empty String is returned. + * @param count number of copies to append + */ + repeat(count: number): string; + + /** + * Returns true if the sequence of elements of searchString converted to a String is the + * same as the corresponding elements of this object (converted to a String) starting at + * position. Otherwise returns false. + */ + startsWith(searchString: string, position?: number): boolean; + + /** + * Returns an HTML anchor element and sets the name attribute to the text value + * @param name + */ + anchor(name: string): string; + + /** Returns a HTML element */ + big(): string; + + /** Returns a HTML element */ + blink(): string; + + /** Returns a HTML element */ + bold(): string; + + /** Returns a HTML element */ + fixed(): string + + /** Returns a HTML element and sets the color attribute value */ + fontcolor(color: string): string + + /** Returns a HTML element and sets the size attribute value */ + fontsize(size: number): string; + + /** Returns a HTML element and sets the size attribute value */ + fontsize(size: string): string; + + /** Returns an HTML element */ + italics(): string; + + /** Returns an HTML element and sets the href attribute value */ + link(url: string): string; + + /** Returns a HTML element */ + small(): string; + + /** Returns a HTML element */ + strike(): string; + + /** Returns a HTML element */ + sub(): string; + + /** Returns a HTML element */ + sup(): string; +} + +interface StringConstructor { + /** + * Return the String value whose elements are, in order, the elements in the List elements. + * If length is 0, the empty string is returned. + */ + fromCodePoint(...codePoints: number[]): string; + + /** + * String.raw is intended for use as a tag function of a Tagged Template String. When called + * as such the first argument will be a well formed template call site object and the rest + * parameter will contain the substitution values. + * @param template A well-formed template string call site representation. + * @param substitutions A set of substitution values. + */ + raw(template: TemplateStringsArray, ...substitutions: any[]): string; +}interface Map { + clear(): void; + delete(key: K): boolean; + forEach(callbackfn: (value: V, index: K, map: Map) => void, thisArg?: any): void; + get(key: K): V | undefined; + has(key: K): boolean; + set(key: K, value?: V): Map; + readonly size: number; +} + +interface MapConstructor { + new (): Map; + new (): Map; + readonly prototype: Map; +} +declare var Map: MapConstructor; + +interface WeakMap { + clear(): void; + delete(key: K): boolean; + get(key: K): V | undefined; + has(key: K): boolean; + set(key: K, value?: V): WeakMap; + +} + +interface WeakMapConstructor { + new (): WeakMap; + new (): WeakMap; + readonly prototype: WeakMap; +} +declare var WeakMap: WeakMapConstructor; + +interface Set { + add(value: T): Set; + clear(): void; + delete(value: T): boolean; + entries(): IterableIterator<[T, T]>; + forEach(callbackfn: (value: T, index: T, set: Set) => void, thisArg?: any): void; + has(value: T): boolean; + keys(): IterableIterator; + readonly size: number; + values(): IterableIterator; + [Symbol.iterator]():IterableIterator; + readonly [Symbol.toStringTag]: "Set"; +} + +interface SetConstructor { + new (): Set; + new (): Set; + new (iterable: Iterable): Set; + readonly prototype: Set; +} +declare var Set: SetConstructor; + +interface WeakSet { + add(value: T): WeakSet; + clear(): void; + delete(value: T): boolean; + has(value: T): boolean; + readonly [Symbol.toStringTag]: "WeakSet"; +} + +interface WeakSetConstructor { + new (): WeakSet; + new (): WeakSet; + new (iterable: Iterable): WeakSet; + readonly prototype: WeakSet; +} +declare var WeakSet: WeakSetConstructor; +interface GeneratorFunction extends Function { } + +interface GeneratorFunctionConstructor { + /** + * Creates a new Generator function. + * @param args A list of arguments the function accepts. + */ + new (...args: string[]): GeneratorFunction; + (...args: string[]): GeneratorFunction; + readonly prototype: GeneratorFunction; +} +declare var GeneratorFunction: GeneratorFunctionConstructor; +/// + +interface IteratorResult { + done: boolean; + value?: T; +} + +interface Iterator { + next(value?: any): IteratorResult; + return?(value?: any): IteratorResult; + throw?(e?: any): IteratorResult; +} + +interface Iterable { } + +interface IterableIterator extends Iterator { } + +interface Array { + /** + * Returns an array of key, value pairs for every entry in the array + */ + entries(): IterableIterator<[number, T]>; + + /** + * Returns an list of keys in the array + */ + keys(): IterableIterator; + + /** + * Returns an list of values in the array + */ + values(): IterableIterator; +} + +interface ArrayConstructor { + /** + * Creates an array from an iterable object. + * @param iterable An iterable object to convert to an array. + * @param mapfn A mapping function to call on every element of the array. + * @param thisArg Value of 'this' used to invoke the mapfn. + */ + from(iterable: Iterable, mapfn: (v: T, k: number) => U, thisArg?: any): Array; + + /** + * Creates an array from an iterable object. + * @param iterable An iterable object to convert to an array. + */ + from(iterable: Iterable): Array; +} + +interface Map { + entries(): IterableIterator<[K, V]>; + keys(): IterableIterator; + values(): IterableIterator; +} + +interface MapConstructor { + new (iterable: Iterable<[K, V]>): Map; +} + +interface WeakMap { } + +interface WeakMapConstructor { + new (iterable: Iterable<[K, V]>): WeakMap; +} + +interface Promise { } + +interface PromiseConstructor { + /** + * Creates a Promise that is resolved with an array of results when all of the provided Promises + * resolve, or rejected when any Promise is rejected. + * @param values An array of Promises. + * @returns A new Promise. + */ + all(values: Iterable>): Promise; + + /** + * Creates a Promise that is resolved or rejected when any of the provided Promises are resolved + * or rejected. + * @param values An array of Promises. + * @returns A new Promise. + */ + race(values: Iterable>): Promise; +} + +declare namespace Reflect { + function enumerate(target: any): IterableIterator; +} + +/** + * A typed array of 8-bit integer values. The contents are initialized to 0. If the requested + * number of bytes could not be allocated an exception is raised. + */ +interface Int8Array { + /** + * Returns an array of key, value pairs for every entry in the array + */ + entries(): IterableIterator<[number, number]>; + /** + * Returns an list of keys in the array + */ + keys(): IterableIterator; + /** + * Returns an list of values in the array + */ + values(): IterableIterator; +} + +interface Int8ArrayConstructor { + new (elements: Iterable): Int8Array; + + /** + * Creates an array from an array-like or iterable object. + * @param arrayLike An array-like or iterable object to convert to an array. + * @param mapfn A mapping function to call on every element of the array. + * @param thisArg Value of 'this' used to invoke the mapfn. + */ + from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Int8Array; +} + +/** + * A typed array of 8-bit unsigned integer values. The contents are initialized to 0. If the + * requested number of bytes could not be allocated an exception is raised. + */ +interface Uint8Array { + /** + * Returns an array of key, value pairs for every entry in the array + */ + entries(): IterableIterator<[number, number]>; + /** + * Returns an list of keys in the array + */ + keys(): IterableIterator; + /** + * Returns an list of values in the array + */ + values(): IterableIterator; +} + +interface Uint8ArrayConstructor { + new (elements: Iterable): Uint8Array; + + /** + * Creates an array from an array-like or iterable object. + * @param arrayLike An array-like or iterable object to convert to an array. + * @param mapfn A mapping function to call on every element of the array. + * @param thisArg Value of 'this' used to invoke the mapfn. + */ + from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint8Array; +} + +/** + * A typed array of 8-bit unsigned integer (clamped) values. The contents are initialized to 0. + * If the requested number of bytes could not be allocated an exception is raised. + */ +interface Uint8ClampedArray { + /** + * Returns an array of key, value pairs for every entry in the array + */ + entries(): IterableIterator<[number, number]>; + + /** + * Returns an list of keys in the array + */ + keys(): IterableIterator; + + /** + * Returns an list of values in the array + */ + values(): IterableIterator; +} + +interface Uint8ClampedArrayConstructor { + new (elements: Iterable): Uint8ClampedArray; + + + /** + * Creates an array from an array-like or iterable object. + * @param arrayLike An array-like or iterable object to convert to an array. + * @param mapfn A mapping function to call on every element of the array. + * @param thisArg Value of 'this' used to invoke the mapfn. + */ + from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint8ClampedArray; +} + +/** + * A typed array of 16-bit signed integer values. The contents are initialized to 0. If the + * requested number of bytes could not be allocated an exception is raised. + */ +interface Int16Array { + /** + * Returns an array of key, value pairs for every entry in the array + */ + entries(): IterableIterator<[number, number]>; + + /** + * Returns an list of keys in the array + */ + keys(): IterableIterator; + + /** + * Returns an list of values in the array + */ + values(): IterableIterator; +} + +interface Int16ArrayConstructor { + new (elements: Iterable): Int16Array; + + /** + * Creates an array from an array-like or iterable object. + * @param arrayLike An array-like or iterable object to convert to an array. + * @param mapfn A mapping function to call on every element of the array. + * @param thisArg Value of 'this' used to invoke the mapfn. + */ + from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Int16Array; +} + +/** + * A typed array of 16-bit unsigned integer values. The contents are initialized to 0. If the + * requested number of bytes could not be allocated an exception is raised. + */ +interface Uint16Array { + /** + * Returns an array of key, value pairs for every entry in the array + */ + entries(): IterableIterator<[number, number]>; + /** + * Returns an list of keys in the array + */ + keys(): IterableIterator; + /** + * Returns an list of values in the array + */ + values(): IterableIterator; +} + +interface Uint16ArrayConstructor { + new (elements: Iterable): Uint16Array; + + /** + * Creates an array from an array-like or iterable object. + * @param arrayLike An array-like or iterable object to convert to an array. + * @param mapfn A mapping function to call on every element of the array. + * @param thisArg Value of 'this' used to invoke the mapfn. + */ + from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint16Array; +} + +/** + * A typed array of 32-bit signed integer values. The contents are initialized to 0. If the + * requested number of bytes could not be allocated an exception is raised. + */ +interface Int32Array { + /** + * Returns an array of key, value pairs for every entry in the array + */ + entries(): IterableIterator<[number, number]>; + /** + * Returns an list of keys in the array + */ + keys(): IterableIterator; + /** + * Returns an list of values in the array + */ + values(): IterableIterator; +} + +interface Int32ArrayConstructor { + new (elements: Iterable): Int32Array; + + /** + * Creates an array from an array-like or iterable object. + * @param arrayLike An array-like or iterable object to convert to an array. + * @param mapfn A mapping function to call on every element of the array. + * @param thisArg Value of 'this' used to invoke the mapfn. + */ + from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Int32Array; +} + +/** + * A typed array of 32-bit unsigned integer values. The contents are initialized to 0. If the + * requested number of bytes could not be allocated an exception is raised. + */ +interface Uint32Array { + /** + * Returns an array of key, value pairs for every entry in the array + */ + entries(): IterableIterator<[number, number]>; + /** + * Returns an list of keys in the array + */ + keys(): IterableIterator; + /** + * Returns an list of values in the array + */ + values(): IterableIterator; +} + +interface Uint32ArrayConstructor { + new (elements: Iterable): Uint32Array; + + /** + * Creates an array from an array-like or iterable object. + * @param arrayLike An array-like or iterable object to convert to an array. + * @param mapfn A mapping function to call on every element of the array. + * @param thisArg Value of 'this' used to invoke the mapfn. + */ + from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint32Array; +} + +/** + * A typed array of 32-bit float values. The contents are initialized to 0. If the requested number + * of bytes could not be allocated an exception is raised. + */ +interface Float32Array { + /** + * Returns an array of key, value pairs for every entry in the array + */ + entries(): IterableIterator<[number, number]>; + /** + * Returns an list of keys in the array + */ + keys(): IterableIterator; + /** + * Returns an list of values in the array + */ + values(): IterableIterator; +} + +interface Float32ArrayConstructor { + new (elements: Iterable): Float32Array; + + /** + * Creates an array from an array-like or iterable object. + * @param arrayLike An array-like or iterable object to convert to an array. + * @param mapfn A mapping function to call on every element of the array. + * @param thisArg Value of 'this' used to invoke the mapfn. + */ + from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Float32Array; +} + +/** + * A typed array of 64-bit float values. The contents are initialized to 0. If the requested + * number of bytes could not be allocated an exception is raised. + */ +interface Float64Array { + /** + * Returns an array of key, value pairs for every entry in the array + */ + entries(): IterableIterator<[number, number]>; + /** + * Returns an list of keys in the array + */ + keys(): IterableIterator; + /** + * Returns an list of values in the array + */ + values(): IterableIterator; +} + +interface Float64ArrayConstructor { + new (elements: Iterable): Float64Array; + + /** + * Creates an array from an array-like or iterable object. + * @param arrayLike An array-like or iterable object to convert to an array. + * @param mapfn A mapping function to call on every element of the array. + * @param thisArg Value of 'this' used to invoke the mapfn. + */ + from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Float64Array; +}/** + * Represents the completion of an asynchronous operation + */ +interface Promise { + /** + * 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(onfulfilled?: (value: T) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): Promise; + then(onfulfilled?: (value: T) => TResult | PromiseLike, onrejected?: (reason: any) => void): Promise; + + /** + * Attaches a callback for only the rejection of the Promise. + * @param onrejected The callback to execute when the Promise is rejected. + * @returns A Promise for the completion of the callback. + */ + catch(onrejected?: (reason: any) => T | PromiseLike): Promise; + catch(onrejected?: (reason: any) => void): Promise; +} + +interface PromiseConstructor { + /** + * A reference to the prototype. + */ + readonly prototype: Promise; + + /** + * Creates a new Promise. + * @param executor A callback used to initialize the promise. This callback is passed two arguments: + * a resolve callback used resolve the promise with a value or the result of another promise, + * and a reject callback used to reject the promise with a provided reason or error. + */ + new (executor: (resolve: (value?: T | PromiseLike) => void, reject: (reason?: any) => void) => void): Promise; + + /** + * Creates a Promise that is resolved with an array of results when all of the provided Promises + * resolve, or rejected when any Promise is rejected. + * @param values An array of Promises. + * @returns A new Promise. + */ + all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike, T9 | PromiseLike, T10 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]>; + all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike, T9 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9]>; + all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8]>; + all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7]>; + all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6]>; + all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike]): Promise<[T1, T2, T3, T4, T5]>; + all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike ]): Promise<[T1, T2, T3, T4]>; + all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike]): Promise<[T1, T2, T3]>; + all(values: [T1 | PromiseLike, T2 | PromiseLike]): Promise<[T1, T2]>; + + /** + * Creates a new rejected promise for the provided reason. + * @param reason The reason the promise was rejected. + * @returns A new rejected Promise. + */ + reject(reason: any): Promise; + + /** + * Creates a new rejected promise for the provided reason. + * @param reason The reason the promise was rejected. + * @returns A new rejected Promise. + */ + reject(reason: any): Promise; + + /** + * Creates a new resolved promise for the provided value. + * @param value A promise. + * @returns A promise whose internal state matches the provided promise. + */ + resolve(value: T | PromiseLike): Promise; + + /** + * Creates a new resolved promise . + * @returns A resolved promise. + */ + resolve(): Promise; +} + +declare var Promise: PromiseConstructor;interface ProxyHandler { + getPrototypeOf? (target: T): any; + setPrototypeOf? (target: T, v: any): boolean; + isExtensible? (target: T): boolean; + preventExtensions? (target: T): boolean; + getOwnPropertyDescriptor? (target: T, p: PropertyKey): PropertyDescriptor; + has? (target: T, p: PropertyKey): boolean; + get? (target: T, p: PropertyKey, receiver: any): any; + set? (target: T, p: PropertyKey, value: any, receiver: any): boolean; + deleteProperty? (target: T, p: PropertyKey): boolean; + defineProperty? (target: T, p: PropertyKey, attributes: PropertyDescriptor): boolean; + enumerate? (target: T): PropertyKey[]; + ownKeys? (target: T): PropertyKey[]; + apply? (target: T, thisArg: any, argArray?: any): any; + construct? (target: T, thisArg: any, argArray?: any): any; +} + +interface ProxyConstructor { + revocable(target: T, handler: ProxyHandler): { proxy: T; revoke: () => void; }; + new (target: T, handler: ProxyHandler): T +} +declare var Proxy: ProxyConstructor;declare namespace Reflect { + function apply(target: Function, thisArgument: any, argumentsList: ArrayLike): any; + function construct(target: Function, argumentsList: ArrayLike, newTarget?: any): any; + function defineProperty(target: any, propertyKey: PropertyKey, attributes: PropertyDescriptor): boolean; + function deleteProperty(target: any, propertyKey: PropertyKey): boolean; + function get(target: any, propertyKey: PropertyKey, receiver?: any): any; + function getOwnPropertyDescriptor(target: any, propertyKey: PropertyKey): PropertyDescriptor; + function getPrototypeOf(target: any): any; + function has(target: any, propertyKey: string): boolean; + function has(target: any, propertyKey: symbol): boolean; + function isExtensible(target: any): boolean; + function ownKeys(target: any): Array; + function preventExtensions(target: any): boolean; + function set(target: any, propertyKey: PropertyKey, value: any, receiver?: any): boolean; + function setPrototypeOf(target: any, proto: any): boolean; +}interface Symbol { + /** Returns a string representation of an object. */ + toString(): string; + + /** Returns the primitive value of the specified object. */ + valueOf(): Object; +} + +interface SymbolConstructor { + /** + * A reference to the prototype. + */ + readonly prototype: Symbol; + + /** + * Returns a new unique Symbol value. + * @param description Description of the new Symbol object. + */ + (description?: string|number): symbol; + + /** + * Returns a Symbol object from the global symbol registry matching the given key if found. + * Otherwise, returns a new symbol with this key. + * @param key key to search for. + */ + for(key: string): symbol; + + /** + * Returns a key from the global symbol registry matching the given Symbol if found. + * Otherwise, returns a undefined. + * @param sym Symbol to find the key for. + */ + keyFor(sym: symbol): string | undefined; +} + +declare var Symbol: SymbolConstructor;/// + +interface SymbolConstructor { + /** + * A method that determines if a constructor object recognizes an object as one of the + * constructor’s instances. Called by the semantics of the instanceof operator. + */ + readonly hasInstance: symbol; + + /** + * A Boolean value that if true indicates that an object should flatten to its array elements + * by Array.prototype.concat. + */ + readonly isConcatSpreadable: symbol; + + /** + * A method that returns the default iterator for an object. Called by the semantics of the + * for-of statement. + */ + readonly iterator: symbol; + + /** + * A regular expression method that matches the regular expression against a string. Called + * by the String.prototype.match method. + */ + readonly match: symbol; + + /** + * A regular expression method that replaces matched substrings of a string. Called by the + * String.prototype.replace method. + */ + readonly replace: symbol; + + /** + * A regular expression method that returns the index within a string that matches the + * regular expression. Called by the String.prototype.search method. + */ + readonly search: symbol; + + /** + * A function valued property that is the constructor function that is used to create + * derived objects. + */ + readonly species: symbol; + + /** + * A regular expression method that splits a string at the indices that match the regular + * expression. Called by the String.prototype.split method. + */ + readonly split: symbol; + + /** + * A method that converts an object to a corresponding primitive value. + * Called by the ToPrimitive abstract operation. + */ + readonly toPrimitive: symbol; + + /** + * A String value that is used in the creation of the default string description of an object. + * Called by the built-in method Object.prototype.toString. + */ + readonly toStringTag: symbol; + + /** + * An Object whose own property names are property names that are excluded from the 'with' + * environment bindings of the associated objects. + */ + readonly unscopables: symbol; +} + +interface Symbol { + readonly [Symbol.toStringTag]: "Symbol"; +} + +interface Array { + /** Iterator */ + [Symbol.iterator](): IterableIterator; + + /** + * Returns an object whose properties have the value 'true' + * when they will be absent when used in a 'with' statement. + */ + [Symbol.unscopables](): { + copyWithin: boolean; + entries: boolean; + fill: boolean; + find: boolean; + findIndex: boolean; + keys: boolean; + values: boolean; + }; +} + +interface Date { + /** + * Converts a Date object to a string. + */ + [Symbol.toPrimitive](hint: "default"): string; + /** + * Converts a Date object to a string. + */ + [Symbol.toPrimitive](hint: "string"): string; + /** + * Converts a Date object to a number. + */ + [Symbol.toPrimitive](hint: "number"): number; + /** + * Converts a Date object to a string or number. + * + * @param hint The strings "number", "string", or "default" to specify what primitive to return. + * + * @throws {TypeError} If 'hint' was given something other than "number", "string", or "default". + * @returns A number if 'hint' was "number", a string if 'hint' was "string" or "default". + */ + [Symbol.toPrimitive](hint: string): string | number; +} + +interface Map { + [Symbol.iterator]():IterableIterator<[K,V]>; + readonly [Symbol.toStringTag]: "Map"; +} + +interface WeakMap{ + readonly [Symbol.toStringTag]: "WeakMap"; +} + +interface JSON { + readonly [Symbol.toStringTag]: "JSON"; +} + +interface Function { + /** + * Determines whether the given value inherits from this function if this function was used + * as a constructor function. + * + * A constructor function can control which objects are recognized as its instances by + * 'instanceof' by overriding this method. + */ + [Symbol.hasInstance](value: any): boolean; +} + +interface GeneratorFunction extends Function { + readonly [Symbol.toStringTag]: "GeneratorFunction"; +} + +interface IArguments { + /** Iterator */ + [Symbol.iterator](): IterableIterator; +} + +interface Iterator { } + +interface Iterable { + [Symbol.iterator](): Iterator; +} + +interface IterableIterator extends Iterator { + [Symbol.iterator](): IterableIterator; +} + +interface Math { + readonly [Symbol.toStringTag]: "Math"; +} + +interface Promise { + readonly [Symbol.toStringTag]: "Promise"; +} + +interface PromiseConstructor { + readonly [Symbol.species]: Function; +} + +interface RegExp { + /** + * Matches a string with this regular expression, and returns an array containing the results of + * that search. + * @param string A string to search within. + */ + [Symbol.match](string: string): RegExpMatchArray | null; + + /** + * Replaces text in a string, using this regular expression. + * @param string A String object or string literal whose contents matching against + * this regular expression will be replaced + * @param replaceValue A String object or string literal containing the text to replace for every + * successful match of this regular expression. + */ + [Symbol.replace](string: string, replaceValue: string): string; + + /** + * Replaces text in a string, using this regular expression. + * @param string A String object or string literal whose contents matching against + * this regular expression will be replaced + * @param replacer A function that returns the replacement text. + */ + [Symbol.replace](string: string, replacer: (substring: string, ...args: any[]) => string): string; + + /** + * Finds the position beginning first substring match in a regular expression search + * using this regular expression. + * + * @param string The string to search within. + */ + [Symbol.search](string: string): number; + + /** + * Returns an array of substrings that were delimited by strings in the original input that + * match against this regular expression. + * + * If the regular expression contains capturing parentheses, then each time this + * regular expression matches, the results (including any undefined results) of the + * capturing parentheses are spliced. + * + * @param string string value to split + * @param limit if not undefined, the output array is truncated so that it contains no more + * than 'limit' elements. + */ + [Symbol.split](string: string, limit?: number): string[]; +} + +interface RegExpConstructor { + [Symbol.species](): RegExpConstructor; +} + +interface String { + /** Iterator */ + [Symbol.iterator](): IterableIterator; + + /** + * Matches a string an object that supports being matched against, and returns an array containing the results of that search. + * @param matcher An object that supports being matched against. + */ + match(matcher: { [Symbol.match](string: string): RegExpMatchArray | null; }): RegExpMatchArray | null; + + /** + * Replaces text in a string, using an object that supports replacement within a string. + * @param searchValue A object can search for and replace matches within a string. + * @param replaceValue A string containing the text to replace for every successful match of searchValue in this string. + */ + replace(searchValue: { [Symbol.replace](string: string, replaceValue: string): string; }, replaceValue: string): string; + + /** + * Replaces text in a string, using an object that supports replacement within a string. + * @param searchValue A object can search for and replace matches within a string. + * @param replacer A function that returns the replacement text. + */ + replace(searchValue: { [Symbol.replace](string: string, replacer: (substring: string, ...args: any[]) => string): string; }, replacer: (substring: string, ...args: any[]) => string): string; + + /** + * Finds the first substring match in a regular expression search. + * @param searcher An object which supports searching within a string. + */ + search(searcher: { [Symbol.search](string: string): number; }): number; + + /** + * Split a string into substrings using the specified separator and return them as an array. + * @param splitter An object that can split a string. + * @param limit A value used to limit the number of elements returned in the array. + */ + split(splitter: { [Symbol.split](string: string, limit?: number): string[]; }, limit?: number): string[]; +} + +/** + * Represents a raw buffer of binary data, which is used to store data for the + * different typed arrays. ArrayBuffers cannot be read from or written to directly, + * but can be passed to a typed array or DataView Object to interpret the raw + * buffer as needed. + */ +interface ArrayBuffer { + readonly [Symbol.toStringTag]: "ArrayBuffer"; +} + +interface DataView { + readonly [Symbol.toStringTag]: "DataView"; +} + +/** + * A typed array of 8-bit integer values. The contents are initialized to 0. If the requested + * number of bytes could not be allocated an exception is raised. + */ +interface Int8Array { + [Symbol.iterator](): IterableIterator; + readonly [Symbol.toStringTag]: "Int8Array"; +} + +/** + * A typed array of 8-bit unsigned integer values. The contents are initialized to 0. If the + * requested number of bytes could not be allocated an exception is raised. + */ +interface Uint8Array { + [Symbol.iterator](): IterableIterator; + readonly [Symbol.toStringTag]: "UInt8Array"; +} + +/** + * A typed array of 8-bit unsigned integer (clamped) values. The contents are initialized to 0. + * If the requested number of bytes could not be allocated an exception is raised. + */ +interface Uint8ClampedArray { + [Symbol.iterator](): IterableIterator; + readonly [Symbol.toStringTag]: "Uint8ClampedArray"; +} + +/** + * A typed array of 16-bit signed integer values. The contents are initialized to 0. If the + * requested number of bytes could not be allocated an exception is raised. + */ +interface Int16Array { + [Symbol.iterator](): IterableIterator; + readonly [Symbol.toStringTag]: "Int16Array"; +} + +/** + * A typed array of 16-bit unsigned integer values. The contents are initialized to 0. If the + * requested number of bytes could not be allocated an exception is raised. + */ +interface Uint16Array { + [Symbol.iterator](): IterableIterator; + readonly [Symbol.toStringTag]: "Uint16Array"; +} + +/** + * A typed array of 32-bit signed integer values. The contents are initialized to 0. If the + * requested number of bytes could not be allocated an exception is raised. + */ +interface Int32Array { + [Symbol.iterator](): IterableIterator; + readonly [Symbol.toStringTag]: "Int32Array"; +} + +/** + * A typed array of 32-bit unsigned integer values. The contents are initialized to 0. If the + * requested number of bytes could not be allocated an exception is raised. + */ +interface Uint32Array { + [Symbol.iterator](): IterableIterator; + readonly [Symbol.toStringTag]: "Uint32Array"; +} + +/** + * A typed array of 32-bit float values. The contents are initialized to 0. If the requested number + * of bytes could not be allocated an exception is raised. + */ +interface Float32Array { + [Symbol.iterator](): IterableIterator; + readonly [Symbol.toStringTag]: "Float32Array"; +} + +/** + * A typed array of 64-bit float values. The contents are initialized to 0. If the requested + * number of bytes could not be allocated an exception is raised. + */ +interface Float64Array { + [Symbol.iterator](): IterableIterator; + readonly [Symbol.toStringTag]: "Float64Array"; +}///////////////////////////// /// IE DOM APIs ///////////////////////////// @@ -5468,11 +5579,6 @@ interface AriaRequestEventInit extends EventInit { attributeValue?: string; } -interface ClipboardEventInit extends EventInit { - data?: string; - dataType?: string; -} - interface CommandEventInit extends EventInit { commandName?: string; detail?: string; @@ -5486,6 +5592,31 @@ interface ConfirmSiteSpecificExceptionsInformation extends ExceptionInformation arrayOfDomainStrings?: string[]; } +interface ConstrainBooleanParameters { + exact?: boolean; + ideal?: boolean; +} + +interface ConstrainDOMStringParameters { + exact?: string | string[]; + ideal?: string | string[]; +} + +interface ConstrainDoubleRange extends DoubleRange { + exact?: number; + ideal?: number; +} + +interface ConstrainLongRange extends LongRange { + exact?: number; + ideal?: number; +} + +interface ConstrainVideoFacingModeParameters { + exact?: string | string[]; + ideal?: string | string[]; +} + interface CustomEventInit extends EventInit { detail?: any; } @@ -5496,17 +5627,44 @@ interface DeviceAccelerationDict { z?: number; } +interface DeviceLightEventInit extends EventInit { + value?: number; +} + interface DeviceRotationRateDict { alpha?: number; beta?: number; gamma?: number; } +interface DoubleRange { + max?: number; + min?: number; +} + interface EventInit { bubbles?: boolean; cancelable?: boolean; } +interface EventModifierInit extends UIEventInit { + ctrlKey?: boolean; + shiftKey?: boolean; + altKey?: boolean; + metaKey?: boolean; + modifierAltGraph?: boolean; + modifierCapsLock?: boolean; + modifierFn?: boolean; + modifierFnLock?: boolean; + modifierHyper?: boolean; + modifierNumLock?: boolean; + modifierOS?: boolean; + modifierScrollLock?: boolean; + modifierSuper?: boolean; + modifierSymbol?: boolean; + modifierSymbolLock?: boolean; +} + interface ExceptionInformation { domain?: string; } @@ -5520,17 +5678,415 @@ interface HashChangeEventInit extends EventInit { oldURL?: string; } +interface IDBIndexParameters { + multiEntry?: boolean; + unique?: boolean; +} + +interface IDBObjectStoreParameters { + autoIncrement?: boolean; + keyPath?: IDBKeyPath; +} + interface KeyAlgorithm { name?: string; } -interface KeyboardEventInit extends SharedKeyboardAndMouseEventInit { +interface KeyboardEventInit extends EventModifierInit { key?: string; location?: number; repeat?: boolean; } -interface MouseEventInit extends SharedKeyboardAndMouseEventInit { +interface LongRange { + max?: number; + min?: number; +} + +interface MSAccountInfo { + rpDisplayName?: string; + userDisplayName?: string; + accountName?: string; + userId?: string; + accountImageUri?: string; +} + +interface MSAudioLocalClientEvent extends MSLocalClientEventBase { + networkSendQualityEventRatio?: number; + networkDelayEventRatio?: number; + cpuInsufficientEventRatio?: number; + deviceHalfDuplexAECEventRatio?: number; + deviceRenderNotFunctioningEventRatio?: number; + deviceCaptureNotFunctioningEventRatio?: number; + deviceGlitchesEventRatio?: number; + deviceLowSNREventRatio?: number; + deviceLowSpeechLevelEventRatio?: number; + deviceClippingEventRatio?: number; + deviceEchoEventRatio?: number; + deviceNearEndToEchoRatioEventRatio?: number; + deviceRenderZeroVolumeEventRatio?: number; + deviceRenderMuteEventRatio?: number; + deviceMultipleEndpointsEventCount?: number; + deviceHowlingEventCount?: number; +} + +interface MSAudioRecvPayload extends MSPayloadBase { + samplingRate?: number; + signal?: MSAudioRecvSignal; + packetReorderRatio?: number; + packetReorderDepthAvg?: number; + packetReorderDepthMax?: number; + burstLossLength1?: number; + burstLossLength2?: number; + burstLossLength3?: number; + burstLossLength4?: number; + burstLossLength5?: number; + burstLossLength6?: number; + burstLossLength7?: number; + burstLossLength8OrHigher?: number; + fecRecvDistance1?: number; + fecRecvDistance2?: number; + fecRecvDistance3?: number; + ratioConcealedSamplesAvg?: number; + ratioStretchedSamplesAvg?: number; + ratioCompressedSamplesAvg?: number; +} + +interface MSAudioRecvSignal { + initialSignalLevelRMS?: number; + recvSignalLevelCh1?: number; + recvNoiseLevelCh1?: number; + renderSignalLevel?: number; + renderNoiseLevel?: number; + renderLoopbackSignalLevel?: number; +} + +interface MSAudioSendPayload extends MSPayloadBase { + samplingRate?: number; + signal?: MSAudioSendSignal; + audioFECUsed?: boolean; + sendMutePercent?: number; +} + +interface MSAudioSendSignal { + noiseLevel?: number; + sendSignalLevelCh1?: number; + sendNoiseLevelCh1?: number; +} + +interface MSConnectivity { + iceType?: string; + iceWarningFlags?: MSIceWarningFlags; + relayAddress?: MSRelayAddress; +} + +interface MSCredentialFilter { + accept?: MSCredentialSpec[]; +} + +interface MSCredentialParameters { + type?: string; +} + +interface MSCredentialSpec { + type?: string; + id?: string; +} + +interface MSDelay { + roundTrip?: number; + roundTripMax?: number; +} + +interface MSDescription extends RTCStats { + connectivity?: MSConnectivity; + transport?: string; + networkconnectivity?: MSNetworkConnectivityInfo; + localAddr?: MSIPAddressInfo; + remoteAddr?: MSIPAddressInfo; + deviceDevName?: string; + reflexiveLocalIPAddr?: MSIPAddressInfo; +} + +interface MSFIDOCredentialParameters extends MSCredentialParameters { + algorithm?: string | Algorithm; + authenticators?: AAGUID[]; +} + +interface MSIPAddressInfo { + ipAddr?: string; + port?: number; + manufacturerMacAddrMask?: string; +} + +interface MSIceWarningFlags { + turnTcpTimedOut?: boolean; + turnUdpAllocateFailed?: boolean; + turnUdpSendFailed?: boolean; + turnTcpAllocateFailed?: boolean; + turnTcpSendFailed?: boolean; + udpLocalConnectivityFailed?: boolean; + udpNatConnectivityFailed?: boolean; + udpRelayConnectivityFailed?: boolean; + tcpNatConnectivityFailed?: boolean; + tcpRelayConnectivityFailed?: boolean; + connCheckMessageIntegrityFailed?: boolean; + allocationMessageIntegrityFailed?: boolean; + connCheckOtherError?: boolean; + turnAuthUnknownUsernameError?: boolean; + noRelayServersConfigured?: boolean; + multipleRelayServersAttempted?: boolean; + portRangeExhausted?: boolean; + alternateServerReceived?: boolean; + pseudoTLSFailure?: boolean; + turnTurnTcpConnectivityFailed?: boolean; + useCandidateChecksFailed?: boolean; + fipsAllocationFailure?: boolean; +} + +interface MSJitter { + interArrival?: number; + interArrivalMax?: number; + interArrivalSD?: number; +} + +interface MSLocalClientEventBase extends RTCStats { + networkReceiveQualityEventRatio?: number; + networkBandwidthLowEventRatio?: number; +} + +interface MSNetwork extends RTCStats { + jitter?: MSJitter; + delay?: MSDelay; + packetLoss?: MSPacketLoss; + utilization?: MSUtilization; +} + +interface MSNetworkConnectivityInfo { + vpn?: boolean; + linkspeed?: number; + networkConnectionDetails?: string; +} + +interface MSNetworkInterfaceType { + interfaceTypeEthernet?: boolean; + interfaceTypeWireless?: boolean; + interfaceTypePPP?: boolean; + interfaceTypeTunnel?: boolean; + interfaceTypeWWAN?: boolean; +} + +interface MSOutboundNetwork extends MSNetwork { + appliedBandwidthLimit?: number; +} + +interface MSPacketLoss { + lossRate?: number; + lossRateMax?: number; +} + +interface MSPayloadBase extends RTCStats { + payloadDescription?: string; +} + +interface MSRelayAddress { + relayAddress?: string; + port?: number; +} + +interface MSSignatureParameters { + userPrompt?: string; +} + +interface MSTransportDiagnosticsStats extends RTCStats { + baseAddress?: string; + localAddress?: string; + localSite?: string; + networkName?: string; + remoteAddress?: string; + remoteSite?: string; + localMR?: string; + remoteMR?: string; + iceWarningFlags?: MSIceWarningFlags; + portRangeMin?: number; + portRangeMax?: number; + localMRTCPPort?: number; + remoteMRTCPPort?: number; + stunVer?: number; + numConsentReqSent?: number; + numConsentReqReceived?: number; + numConsentRespSent?: number; + numConsentRespReceived?: number; + interfaces?: MSNetworkInterfaceType; + baseInterface?: MSNetworkInterfaceType; + protocol?: string; + localInterface?: MSNetworkInterfaceType; + localAddrType?: string; + remoteAddrType?: string; + iceRole?: string; + rtpRtcpMux?: boolean; + allocationTimeInMs?: number; + msRtcEngineVersion?: string; +} + +interface MSUtilization { + packets?: number; + bandwidthEstimation?: number; + bandwidthEstimationMin?: number; + bandwidthEstimationMax?: number; + bandwidthEstimationStdDev?: number; + bandwidthEstimationAvg?: number; +} + +interface MSVideoPayload extends MSPayloadBase { + resoluton?: string; + videoBitRateAvg?: number; + videoBitRateMax?: number; + videoFrameRateAvg?: number; + videoPacketLossRate?: number; + durationSeconds?: number; +} + +interface MSVideoRecvPayload extends MSVideoPayload { + videoFrameLossRate?: number; + recvCodecType?: string; + recvResolutionWidth?: number; + recvResolutionHeight?: number; + videoResolutions?: MSVideoResolutionDistribution; + recvFrameRateAverage?: number; + recvBitRateMaximum?: number; + recvBitRateAverage?: number; + recvVideoStreamsMax?: number; + recvVideoStreamsMin?: number; + recvVideoStreamsMode?: number; + videoPostFECPLR?: number; + lowBitRateCallPercent?: number; + lowFrameRateCallPercent?: number; + reorderBufferTotalPackets?: number; + recvReorderBufferReorderedPackets?: number; + recvReorderBufferPacketsDroppedDueToBufferExhaustion?: number; + recvReorderBufferMaxSuccessfullyOrderedExtent?: number; + recvReorderBufferMaxSuccessfullyOrderedLateTime?: number; + recvReorderBufferPacketsDroppedDueToTimeout?: number; + recvFpsHarmonicAverage?: number; + recvNumResSwitches?: number; +} + +interface MSVideoResolutionDistribution { + cifQuality?: number; + vgaQuality?: number; + h720Quality?: number; + h1080Quality?: number; + h1440Quality?: number; + h2160Quality?: number; +} + +interface MSVideoSendPayload extends MSVideoPayload { + sendFrameRateAverage?: number; + sendBitRateMaximum?: number; + sendBitRateAverage?: number; + sendVideoStreamsMax?: number; + sendResolutionWidth?: number; + sendResolutionHeight?: number; +} + +interface MediaEncryptedEventInit extends EventInit { + initDataType?: string; + initData?: ArrayBuffer; +} + +interface MediaKeyMessageEventInit extends EventInit { + messageType?: string; + message?: ArrayBuffer; +} + +interface MediaKeySystemConfiguration { + initDataTypes?: string[]; + audioCapabilities?: MediaKeySystemMediaCapability[]; + videoCapabilities?: MediaKeySystemMediaCapability[]; + distinctiveIdentifier?: string; + persistentState?: string; +} + +interface MediaKeySystemMediaCapability { + contentType?: string; + robustness?: string; +} + +interface MediaStreamConstraints { + video?: boolean | MediaTrackConstraints; + audio?: boolean | MediaTrackConstraints; +} + +interface MediaStreamErrorEventInit extends EventInit { + error?: MediaStreamError; +} + +interface MediaStreamTrackEventInit extends EventInit { + track?: MediaStreamTrack; +} + +interface MediaTrackCapabilities { + width?: number | LongRange; + height?: number | LongRange; + aspectRatio?: number | DoubleRange; + frameRate?: number | DoubleRange; + facingMode?: string; + volume?: number | DoubleRange; + sampleRate?: number | LongRange; + sampleSize?: number | LongRange; + echoCancellation?: boolean[]; + deviceId?: string; + groupId?: string; +} + +interface MediaTrackConstraintSet { + width?: number | ConstrainLongRange; + height?: number | ConstrainLongRange; + aspectRatio?: number | ConstrainDoubleRange; + frameRate?: number | ConstrainDoubleRange; + facingMode?: string | string[] | ConstrainDOMStringParameters; + volume?: number | ConstrainDoubleRange; + sampleRate?: number | ConstrainLongRange; + sampleSize?: number | ConstrainLongRange; + echoCancelation?: boolean | ConstrainBooleanParameters; + deviceId?: string | string[] | ConstrainDOMStringParameters; + groupId?: string | string[] | ConstrainDOMStringParameters; +} + +interface MediaTrackConstraints extends MediaTrackConstraintSet { + advanced?: MediaTrackConstraintSet[]; +} + +interface MediaTrackSettings { + width?: number; + height?: number; + aspectRatio?: number; + frameRate?: number; + facingMode?: string; + volume?: number; + sampleRate?: number; + sampleSize?: number; + echoCancellation?: boolean; + deviceId?: string; + groupId?: string; +} + +interface MediaTrackSupportedConstraints { + width?: boolean; + height?: boolean; + aspectRatio?: boolean; + frameRate?: boolean; + facingMode?: boolean; + volume?: boolean; + sampleRate?: boolean; + sampleSize?: boolean; + echoCancellation?: boolean; + deviceId?: boolean; + groupId?: boolean; +} + +interface MouseEventInit extends EventModifierInit { screenX?: number; screenY?: number; clientX?: number; @@ -5563,6 +6119,10 @@ interface ObjectURLOptions { oneTimeOnly?: boolean; } +interface PeriodicWaveConstraints { + disableNormalization?: boolean; +} + interface PointerEventInit extends MouseEventInit { pointerId?: number; width?: number; @@ -5580,22 +6140,266 @@ interface PositionOptions { maximumAge?: number; } -interface SharedKeyboardAndMouseEventInit extends UIEventInit { - ctrlKey?: boolean; - shiftKey?: boolean; - altKey?: boolean; - metaKey?: boolean; - keyModifierStateAltGraph?: boolean; - keyModifierStateCapsLock?: boolean; - keyModifierStateFn?: boolean; - keyModifierStateFnLock?: boolean; - keyModifierStateHyper?: boolean; - keyModifierStateNumLock?: boolean; - keyModifierStateOS?: boolean; - keyModifierStateScrollLock?: boolean; - keyModifierStateSuper?: boolean; - keyModifierStateSymbol?: boolean; - keyModifierStateSymbolLock?: boolean; +interface RTCDTMFToneChangeEventInit extends EventInit { + tone?: string; +} + +interface RTCDtlsFingerprint { + algorithm?: string; + value?: string; +} + +interface RTCDtlsParameters { + role?: string; + fingerprints?: RTCDtlsFingerprint[]; +} + +interface RTCIceCandidate { + foundation?: string; + priority?: number; + ip?: string; + protocol?: string; + port?: number; + type?: string; + tcpType?: string; + relatedAddress?: string; + relatedPort?: number; +} + +interface RTCIceCandidateAttributes extends RTCStats { + ipAddress?: string; + portNumber?: number; + transport?: string; + candidateType?: string; + priority?: number; + addressSourceUrl?: string; +} + +interface RTCIceCandidateComplete { +} + +interface RTCIceCandidatePair { + local?: RTCIceCandidate; + remote?: RTCIceCandidate; +} + +interface RTCIceCandidatePairStats extends RTCStats { + transportId?: string; + localCandidateId?: string; + remoteCandidateId?: string; + state?: string; + priority?: number; + nominated?: boolean; + writable?: boolean; + readable?: boolean; + bytesSent?: number; + bytesReceived?: number; + roundTripTime?: number; + availableOutgoingBitrate?: number; + availableIncomingBitrate?: number; +} + +interface RTCIceGatherOptions { + gatherPolicy?: string; + iceservers?: RTCIceServer[]; +} + +interface RTCIceParameters { + usernameFragment?: string; + password?: string; +} + +interface RTCIceServer { + urls?: any; + username?: string; + credential?: string; +} + +interface RTCInboundRTPStreamStats extends RTCRTPStreamStats { + packetsReceived?: number; + bytesReceived?: number; + packetsLost?: number; + jitter?: number; + fractionLost?: number; +} + +interface RTCMediaStreamTrackStats extends RTCStats { + trackIdentifier?: string; + remoteSource?: boolean; + ssrcIds?: string[]; + frameWidth?: number; + frameHeight?: number; + framesPerSecond?: number; + framesSent?: number; + framesReceived?: number; + framesDecoded?: number; + framesDropped?: number; + framesCorrupted?: number; + audioLevel?: number; + echoReturnLoss?: number; + echoReturnLossEnhancement?: number; +} + +interface RTCOutboundRTPStreamStats extends RTCRTPStreamStats { + packetsSent?: number; + bytesSent?: number; + targetBitrate?: number; + roundTripTime?: number; +} + +interface RTCRTPStreamStats extends RTCStats { + ssrc?: string; + associateStatsId?: string; + isRemote?: boolean; + mediaTrackId?: string; + transportId?: string; + codecId?: string; + firCount?: number; + pliCount?: number; + nackCount?: number; + sliCount?: number; +} + +interface RTCRtcpFeedback { + type?: string; + parameter?: string; +} + +interface RTCRtcpParameters { + ssrc?: number; + cname?: string; + reducedSize?: boolean; + mux?: boolean; +} + +interface RTCRtpCapabilities { + codecs?: RTCRtpCodecCapability[]; + headerExtensions?: RTCRtpHeaderExtension[]; + fecMechanisms?: string[]; +} + +interface RTCRtpCodecCapability { + name?: string; + kind?: string; + clockRate?: number; + preferredPayloadType?: number; + maxptime?: number; + numChannels?: number; + rtcpFeedback?: RTCRtcpFeedback[]; + parameters?: any; + options?: any; + maxTemporalLayers?: number; + maxSpatialLayers?: number; + svcMultiStreamSupport?: boolean; +} + +interface RTCRtpCodecParameters { + name?: string; + payloadType?: any; + clockRate?: number; + maxptime?: number; + numChannels?: number; + rtcpFeedback?: RTCRtcpFeedback[]; + parameters?: any; +} + +interface RTCRtpContributingSource { + timestamp?: number; + csrc?: number; + audioLevel?: number; +} + +interface RTCRtpEncodingParameters { + ssrc?: number; + codecPayloadType?: number; + fec?: RTCRtpFecParameters; + rtx?: RTCRtpRtxParameters; + priority?: number; + maxBitrate?: number; + minQuality?: number; + framerateBias?: number; + resolutionScale?: number; + framerateScale?: number; + active?: boolean; + encodingId?: string; + dependencyEncodingIds?: string[]; + ssrcRange?: RTCSsrcRange; +} + +interface RTCRtpFecParameters { + ssrc?: number; + mechanism?: string; +} + +interface RTCRtpHeaderExtension { + kind?: string; + uri?: string; + preferredId?: number; + preferredEncrypt?: boolean; +} + +interface RTCRtpHeaderExtensionParameters { + uri?: string; + id?: number; + encrypt?: boolean; +} + +interface RTCRtpParameters { + muxId?: string; + codecs?: RTCRtpCodecParameters[]; + headerExtensions?: RTCRtpHeaderExtensionParameters[]; + encodings?: RTCRtpEncodingParameters[]; + rtcp?: RTCRtcpParameters; +} + +interface RTCRtpRtxParameters { + ssrc?: number; +} + +interface RTCRtpUnhandled { + ssrc?: number; + payloadType?: number; + muxId?: string; +} + +interface RTCSrtpKeyParam { + keyMethod?: string; + keySalt?: string; + lifetime?: string; + mkiValue?: number; + mkiLength?: number; +} + +interface RTCSrtpSdesParameters { + tag?: number; + cryptoSuite?: string; + keyParams?: RTCSrtpKeyParam[]; + sessionParams?: string[]; +} + +interface RTCSsrcRange { + min?: number; + max?: number; +} + +interface RTCStats { + timestamp?: number; + type?: string; + id?: string; + msType?: string; +} + +interface RTCStatsReport { +} + +interface RTCTransportStats extends RTCStats { + bytesSent?: number; + bytesReceived?: number; + rtcpTransportStatsId?: string; + activeConnection?: boolean; + selectedCandidatePairId?: string; + localCertificateId?: string; + remoteCertificateId?: string; } interface StoreExceptionsInformation extends ExceptionInformation { @@ -5641,18 +6445,18 @@ interface ANGLE_instanced_arrays { drawArraysInstancedANGLE(mode: number, first: number, count: number, primcount: number): void; drawElementsInstancedANGLE(mode: number, count: number, type: number, offset: number, primcount: number): void; vertexAttribDivisorANGLE(index: number, divisor: number): void; - VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE: number; + readonly VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE: number; } declare var ANGLE_instanced_arrays: { prototype: ANGLE_instanced_arrays; new(): ANGLE_instanced_arrays; - VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE: number; + readonly VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE: number; } interface AnalyserNode extends AudioNode { fftSize: number; - frequencyBinCount: number; + readonly frequencyBinCount: number; maxDecibels: number; minDecibels: number; smoothingTimeConstant: number; @@ -5668,8 +6472,8 @@ declare var AnalyserNode: { } interface AnimationEvent extends Event { - animationName: string; - elapsedTime: number; + readonly animationName: string; + readonly elapsedTime: number; initAnimationEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, animationNameArg: string, elapsedTimeArg: number): void; } @@ -5687,16 +6491,16 @@ interface ApplicationCache extends EventTarget { onobsolete: (ev: Event) => any; onprogress: (ev: ProgressEvent) => any; onupdateready: (ev: Event) => any; - status: number; + readonly status: number; abort(): void; swapCache(): void; update(): void; - CHECKING: number; - DOWNLOADING: number; - IDLE: number; - OBSOLETE: number; - UNCACHED: number; - UPDATEREADY: number; + readonly CHECKING: number; + readonly DOWNLOADING: number; + readonly IDLE: number; + readonly OBSOLETE: number; + readonly UNCACHED: number; + readonly UPDATEREADY: number; addEventListener(type: "cached", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "checking", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "downloading", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -5711,16 +6515,16 @@ interface ApplicationCache extends EventTarget { declare var ApplicationCache: { prototype: ApplicationCache; new(): ApplicationCache; - CHECKING: number; - DOWNLOADING: number; - IDLE: number; - OBSOLETE: number; - UNCACHED: number; - UPDATEREADY: number; + readonly CHECKING: number; + readonly DOWNLOADING: number; + readonly IDLE: number; + readonly OBSOLETE: number; + readonly UNCACHED: number; + readonly UPDATEREADY: number; } interface AriaRequestEvent extends Event { - attributeName: string; + readonly attributeName: string; attributeValue: string; } @@ -5730,9 +6534,10 @@ declare var AriaRequestEvent: { } interface Attr extends Node { - name: string; - ownerElement: Element; - specified: boolean; + readonly name: string; + readonly ownerElement: Element; + readonly prefix: string; + readonly specified: boolean; value: string; } @@ -5742,10 +6547,12 @@ declare var Attr: { } interface AudioBuffer { - duration: number; - length: number; - numberOfChannels: number; - sampleRate: number; + readonly duration: number; + readonly length: number; + readonly numberOfChannels: number; + readonly sampleRate: number; + copyFromChannel(destination: Float32Array, channelNumber: number, startInChannel?: number): void; + copyToChannel(source: Float32Array, channelNumber: number, startInChannel?: number): void; getChannelData(channel: number): Float32Array; } @@ -5756,14 +6563,15 @@ declare var AudioBuffer: { interface AudioBufferSourceNode extends AudioNode { buffer: AudioBuffer; + readonly detune: AudioParam; loop: boolean; loopEnd: number; loopStart: number; - onended: (ev: Event) => any; - playbackRate: AudioParam; + onended: (ev: MediaStreamErrorEvent) => any; + readonly playbackRate: AudioParam; start(when?: number, offset?: number, duration?: number): void; stop(when?: number): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "ended", listener: (ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -5773,10 +6581,10 @@ declare var AudioBufferSourceNode: { } interface AudioContext extends EventTarget { - currentTime: number; - destination: AudioDestinationNode; - listener: AudioListener; - sampleRate: number; + readonly currentTime: number; + readonly destination: AudioDestinationNode; + readonly listener: AudioListener; + readonly sampleRate: number; state: string; createAnalyser(): AnalyserNode; createBiquadFilter(): BiquadFilterNode; @@ -5789,13 +6597,14 @@ interface AudioContext extends EventTarget { createDynamicsCompressor(): DynamicsCompressorNode; createGain(): GainNode; createMediaElementSource(mediaElement: HTMLMediaElement): MediaElementAudioSourceNode; + createMediaStreamSource(mediaStream: MediaStream): MediaStreamAudioSourceNode; createOscillator(): OscillatorNode; createPanner(): PannerNode; - createPeriodicWave(real: Float32Array, imag: Float32Array): PeriodicWave; + createPeriodicWave(real: Float32Array, imag: Float32Array, constraints?: PeriodicWaveConstraints): PeriodicWave; createScriptProcessor(bufferSize?: number, numberOfInputChannels?: number, numberOfOutputChannels?: number): ScriptProcessorNode; createStereoPanner(): StereoPannerNode; createWaveShaper(): WaveShaperNode; - decodeAudioData(audioData: ArrayBuffer, successCallback: DecodeSuccessCallback, errorCallback?: DecodeErrorCallback): void; + decodeAudioData(audioData: ArrayBuffer, successCallback?: DecodeSuccessCallback, errorCallback?: DecodeErrorCallback): PromiseLike; } declare var AudioContext: { @@ -5804,7 +6613,7 @@ declare var AudioContext: { } interface AudioDestinationNode extends AudioNode { - maxChannelCount: number; + readonly maxChannelCount: number; } declare var AudioDestinationNode: { @@ -5829,9 +6638,9 @@ interface AudioNode extends EventTarget { channelCount: number; channelCountMode: string; channelInterpretation: string; - context: AudioContext; - numberOfInputs: number; - numberOfOutputs: number; + readonly context: AudioContext; + readonly numberOfInputs: number; + readonly numberOfOutputs: number; connect(destination: AudioNode, output?: number, input?: number): void; disconnect(output?: number): void; disconnect(destination: AudioNode, output?: number, input?: number): void; @@ -5844,7 +6653,7 @@ declare var AudioNode: { } interface AudioParam { - defaultValue: number; + readonly defaultValue: number; value: number; cancelScheduledValues(startTime: number): void; exponentialRampToValueAtTime(value: number, endTime: number): void; @@ -5860,9 +6669,9 @@ declare var AudioParam: { } interface AudioProcessingEvent extends Event { - inputBuffer: AudioBuffer; - outputBuffer: AudioBuffer; - playbackTime: number; + readonly inputBuffer: AudioBuffer; + readonly outputBuffer: AudioBuffer; + readonly playbackTime: number; } declare var AudioProcessingEvent: { @@ -5872,11 +6681,11 @@ declare var AudioProcessingEvent: { interface AudioTrack { enabled: boolean; - id: string; + readonly id: string; kind: string; - label: string; + readonly label: string; language: string; - sourceBuffer: SourceBuffer; + readonly sourceBuffer: SourceBuffer; } declare var AudioTrack: { @@ -5885,7 +6694,7 @@ declare var AudioTrack: { } interface AudioTrackList extends EventTarget { - length: number; + readonly length: number; onaddtrack: (ev: TrackEvent) => any; onchange: (ev: Event) => any; onremovetrack: (ev: TrackEvent) => any; @@ -5904,7 +6713,7 @@ declare var AudioTrackList: { } interface BarProp { - visible: boolean; + readonly visible: boolean; } declare var BarProp: { @@ -5922,10 +6731,10 @@ declare var BeforeUnloadEvent: { } interface BiquadFilterNode extends AudioNode { - Q: AudioParam; - detune: AudioParam; - frequency: AudioParam; - gain: AudioParam; + readonly Q: AudioParam; + readonly detune: AudioParam; + readonly frequency: AudioParam; + readonly gain: AudioParam; type: string; getFrequencyResponse(frequencyHz: Float32Array, magResponse: Float32Array, phaseResponse: Float32Array): void; } @@ -5936,8 +6745,8 @@ declare var BiquadFilterNode: { } interface Blob { - size: number; - type: string; + readonly size: number; + readonly type: string; msClose(): void; msDetachStream(): any; slice(start?: number, end?: number, contentType?: string): Blob; @@ -5971,7 +6780,7 @@ declare var CSSConditionRule: { } interface CSSFontFaceRule extends CSSRule { - style: CSSStyleDeclaration; + readonly style: CSSStyleDeclaration; } declare var CSSFontFaceRule: { @@ -5980,9 +6789,9 @@ declare var CSSFontFaceRule: { } interface CSSGroupingRule extends CSSRule { - cssRules: CSSRuleList; - deleteRule(index?: number): void; - insertRule(rule: string, index?: number): number; + readonly cssRules: CSSRuleList; + deleteRule(index: number): void; + insertRule(rule: string, index: number): number; } declare var CSSGroupingRule: { @@ -5991,9 +6800,9 @@ declare var CSSGroupingRule: { } interface CSSImportRule extends CSSRule { - href: string; - media: MediaList; - styleSheet: CSSStyleSheet; + readonly href: string; + readonly media: MediaList; + readonly styleSheet: CSSStyleSheet; } declare var CSSImportRule: { @@ -6003,7 +6812,7 @@ declare var CSSImportRule: { interface CSSKeyframeRule extends CSSRule { keyText: string; - style: CSSStyleDeclaration; + readonly style: CSSStyleDeclaration; } declare var CSSKeyframeRule: { @@ -6012,7 +6821,7 @@ declare var CSSKeyframeRule: { } interface CSSKeyframesRule extends CSSRule { - cssRules: CSSRuleList; + readonly cssRules: CSSRuleList; name: string; appendRule(rule: string): void; deleteRule(rule: string): void; @@ -6025,7 +6834,7 @@ declare var CSSKeyframesRule: { } interface CSSMediaRule extends CSSConditionRule { - media: MediaList; + readonly media: MediaList; } declare var CSSMediaRule: { @@ -6034,8 +6843,8 @@ declare var CSSMediaRule: { } interface CSSNamespaceRule extends CSSRule { - namespaceURI: string; - prefix: string; + readonly namespaceURI: string; + readonly prefix: string; } declare var CSSNamespaceRule: { @@ -6044,10 +6853,10 @@ declare var CSSNamespaceRule: { } interface CSSPageRule extends CSSRule { - pseudoClass: string; - selector: string; + readonly pseudoClass: string; + readonly selector: string; selectorText: string; - style: CSSStyleDeclaration; + readonly style: CSSStyleDeclaration; } declare var CSSPageRule: { @@ -6057,42 +6866,42 @@ declare var CSSPageRule: { interface CSSRule { cssText: string; - parentRule: CSSRule; - parentStyleSheet: CSSStyleSheet; - type: number; - CHARSET_RULE: number; - FONT_FACE_RULE: number; - IMPORT_RULE: number; - KEYFRAMES_RULE: number; - KEYFRAME_RULE: number; - MEDIA_RULE: number; - NAMESPACE_RULE: number; - PAGE_RULE: number; - STYLE_RULE: number; - SUPPORTS_RULE: number; - UNKNOWN_RULE: number; - VIEWPORT_RULE: number; + readonly parentRule: CSSRule; + readonly parentStyleSheet: CSSStyleSheet; + readonly type: number; + readonly CHARSET_RULE: number; + readonly FONT_FACE_RULE: number; + readonly IMPORT_RULE: number; + readonly KEYFRAMES_RULE: number; + readonly KEYFRAME_RULE: number; + readonly MEDIA_RULE: number; + readonly NAMESPACE_RULE: number; + readonly PAGE_RULE: number; + readonly STYLE_RULE: number; + readonly SUPPORTS_RULE: number; + readonly UNKNOWN_RULE: number; + readonly VIEWPORT_RULE: number; } declare var CSSRule: { prototype: CSSRule; new(): CSSRule; - CHARSET_RULE: number; - FONT_FACE_RULE: number; - IMPORT_RULE: number; - KEYFRAMES_RULE: number; - KEYFRAME_RULE: number; - MEDIA_RULE: number; - NAMESPACE_RULE: number; - PAGE_RULE: number; - STYLE_RULE: number; - SUPPORTS_RULE: number; - UNKNOWN_RULE: number; - VIEWPORT_RULE: number; + readonly CHARSET_RULE: number; + readonly FONT_FACE_RULE: number; + readonly IMPORT_RULE: number; + readonly KEYFRAMES_RULE: number; + readonly KEYFRAME_RULE: number; + readonly MEDIA_RULE: number; + readonly NAMESPACE_RULE: number; + readonly PAGE_RULE: number; + readonly STYLE_RULE: number; + readonly SUPPORTS_RULE: number; + readonly UNKNOWN_RULE: number; + readonly VIEWPORT_RULE: number; } interface CSSRuleList { - length: number; + readonly length: number; item(index: number): CSSRule; [index: number]: CSSRule; } @@ -6225,7 +7034,7 @@ interface CSSStyleDeclaration { justifyContent: string; kerning: string; left: string; - length: number; + readonly length: number; letterSpacing: string; lightingColor: string; lineHeight: string; @@ -6312,7 +7121,7 @@ interface CSSStyleDeclaration { pageBreakAfter: string; pageBreakBefore: string; pageBreakInside: string; - parentRule: CSSRule; + readonly parentRule: CSSRule; perspective: string; perspectiveOrigin: string; pointerEvents: string; @@ -6337,7 +7146,6 @@ interface CSSStyleDeclaration { textAlignLast: string; textAnchor: string; textDecoration: string; - textFillColor: string; textIndent: string; textJustify: string; textKashida: string; @@ -6373,25 +7181,12 @@ interface CSSStyleDeclaration { webkitAnimationTimingFunction: string; webkitAppearance: string; webkitBackfaceVisibility: string; - webkitBackground: string; - webkitBackgroundAttachment: string; webkitBackgroundClip: string; - webkitBackgroundColor: string; - webkitBackgroundImage: string; webkitBackgroundOrigin: string; - webkitBackgroundPosition: string; - webkitBackgroundPositionX: string; - webkitBackgroundPositionY: string; - webkitBackgroundRepeat: string; webkitBackgroundSize: string; webkitBorderBottomLeftRadius: string; webkitBorderBottomRightRadius: string; webkitBorderImage: string; - webkitBorderImageOutset: string; - webkitBorderImageRepeat: string; - webkitBorderImageSlice: string; - webkitBorderImageSource: string; - webkitBorderImageWidth: string; webkitBorderRadius: string; webkitBorderTopLeftRadius: string; webkitBorderTopRightRadius: string; @@ -6437,6 +7232,7 @@ interface CSSStyleDeclaration { webkitTransitionDuration: string; webkitTransitionProperty: string; webkitTransitionTimingFunction: string; + webkitUserModify: string; webkitUserSelect: string; webkitWritingMode: string; whiteSpace: string; @@ -6462,9 +7258,9 @@ declare var CSSStyleDeclaration: { } interface CSSStyleRule extends CSSRule { - readOnly: boolean; + readonly readOnly: boolean; selectorText: string; - style: CSSStyleDeclaration; + readonly style: CSSStyleDeclaration; } declare var CSSStyleRule: { @@ -6473,18 +7269,18 @@ declare var CSSStyleRule: { } interface CSSStyleSheet extends StyleSheet { - cssRules: CSSRuleList; + readonly cssRules: CSSRuleList; cssText: string; - href: string; - id: string; - imports: StyleSheetList; - isAlternate: boolean; - isPrefAlternate: boolean; - ownerRule: CSSRule; - owningElement: Element; - pages: StyleSheetPageList; - readOnly: boolean; - rules: CSSRuleList; + readonly href: string; + readonly id: string; + readonly imports: StyleSheetList; + readonly isAlternate: boolean; + readonly isPrefAlternate: boolean; + readonly ownerRule: CSSRule; + readonly owningElement: Element; + readonly pages: StyleSheetPageList; + readonly readOnly: boolean; + readonly rules: CSSRuleList; addImport(bstrURL: string, lIndex?: number): number; addPageRule(bstrSelector: string, bstrStyle: string, lIndex?: number): number; addRule(bstrSelector: string, bstrStyle?: string, lIndex?: number): number; @@ -6524,8 +7320,8 @@ declare var CanvasPattern: { new(): CanvasPattern; } -interface CanvasRenderingContext2D { - canvas: HTMLCanvasElement; +interface CanvasRenderingContext2D extends Object, CanvasPathMethods { + readonly canvas: HTMLCanvasElement; fillStyle: string | CanvasGradient | CanvasPattern; font: string; globalAlpha: number; @@ -6544,13 +7340,9 @@ interface CanvasRenderingContext2D { strokeStyle: string | CanvasGradient | CanvasPattern; textAlign: string; textBaseline: string; - arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, anticlockwise?: boolean): void; - arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): void; beginPath(): void; - bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): void; clearRect(x: number, y: number, w: number, h: number): void; clip(fillRule?: string): void; - closePath(): void; createImageData(imageDataOrSw: number | ImageData, sh?: number): ImageData; createLinearGradient(x0: number, y0: number, x1: number, y1: number): CanvasGradient; createPattern(image: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement, repetition: string): CanvasPattern; @@ -6562,12 +7354,8 @@ interface CanvasRenderingContext2D { getImageData(sx: number, sy: number, sw: number, sh: number): ImageData; getLineDash(): number[]; isPointInPath(x: number, y: number, fillRule?: string): boolean; - lineTo(x: number, y: number): void; measureText(text: string): TextMetrics; - moveTo(x: number, y: number): void; putImageData(imagedata: ImageData, dx: number, dy: number, dirtyX?: number, dirtyY?: number, dirtyWidth?: number, dirtyHeight?: number): void; - quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void; - rect(x: number, y: number, w: number, h: number): void; restore(): void; rotate(angle: number): void; save(): void; @@ -6604,7 +7392,7 @@ declare var ChannelSplitterNode: { interface CharacterData extends Node, ChildNode { data: string; - length: number; + readonly length: number; appendData(arg: string): void; deleteData(offset: number, count: number): void; insertData(offset: number, arg: string): void; @@ -6620,11 +7408,11 @@ declare var CharacterData: { interface ClientRect { bottom: number; - height: number; + readonly height: number; left: number; right: number; top: number; - width: number; + readonly width: number; } declare var ClientRect: { @@ -6633,7 +7421,7 @@ declare var ClientRect: { } interface ClientRectList { - length: number; + readonly length: number; item(index: number): ClientRect; [index: number]: ClientRect; } @@ -6644,7 +7432,7 @@ declare var ClientRectList: { } interface ClipboardEvent extends Event { - clipboardData: DataTransfer; + readonly clipboardData: DataTransfer; } declare var ClipboardEvent: { @@ -6653,9 +7441,9 @@ declare var ClipboardEvent: { } interface CloseEvent extends Event { - code: number; - reason: string; - wasClean: boolean; + readonly code: number; + readonly reason: string; + readonly wasClean: boolean; initCloseEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, wasCleanArg: boolean, codeArg: number, reasonArg: string): void; } @@ -6665,8 +7453,8 @@ declare var CloseEvent: { } interface CommandEvent extends Event { - commandName: string; - detail: string; + readonly commandName: string; + readonly detail: string; } declare var CommandEvent: { @@ -6684,8 +7472,8 @@ declare var Comment: { } interface CompositionEvent extends UIEvent { - data: string; - locale: string; + readonly data: string; + readonly locale: string; initCompositionEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, dataArg: string, locale: string): void; } @@ -6702,6 +7490,7 @@ interface Console { dir(value?: any, ...optionalParams: any[]): void; dirxml(value: any): void; error(message?: any, ...optionalParams: any[]): void; + exception(message?: string, ...optionalParams: any[]): void; group(groupTitle?: string): void; groupCollapsed(groupTitle?: string): void; groupEnd(): void; @@ -6711,6 +7500,7 @@ interface Console { profile(reportName?: string): void; profileEnd(): void; select(element: Element): void; + table(...data: any[]): void; time(timerName?: string): void; timeEnd(timerName?: string): void; trace(message?: any, ...optionalParams: any[]): void; @@ -6733,13 +7523,13 @@ declare var ConvolverNode: { } interface Coordinates { - accuracy: number; - altitude: number; - altitudeAccuracy: number; - heading: number; - latitude: number; - longitude: number; - speed: number; + readonly accuracy: number; + readonly altitude: number; + readonly altitudeAccuracy: number; + readonly heading: number; + readonly latitude: number; + readonly longitude: number; + readonly speed: number; } declare var Coordinates: { @@ -6748,7 +7538,7 @@ declare var Coordinates: { } interface Crypto extends Object, RandomSource { - subtle: SubtleCrypto; + readonly subtle: SubtleCrypto; } declare var Crypto: { @@ -6757,10 +7547,10 @@ declare var Crypto: { } interface CryptoKey { - algorithm: KeyAlgorithm; - extractable: boolean; - type: string; - usages: string[]; + readonly algorithm: KeyAlgorithm; + readonly extractable: boolean; + readonly type: string; + readonly usages: string[]; } declare var CryptoKey: { @@ -6779,7 +7569,7 @@ declare var CryptoKeyPair: { } interface CustomEvent extends Event { - detail: any; + readonly detail: any; initCustomEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, detailArg: any): void; } @@ -6789,7 +7579,7 @@ declare var CustomEvent: { } interface DOMError { - name: string; + readonly name: string; toString(): string; } @@ -6799,69 +7589,69 @@ declare var DOMError: { } interface DOMException { - code: number; - message: string; - name: string; + readonly code: number; + readonly message: string; + readonly name: string; toString(): string; - ABORT_ERR: number; - DATA_CLONE_ERR: number; - DOMSTRING_SIZE_ERR: number; - HIERARCHY_REQUEST_ERR: number; - INDEX_SIZE_ERR: number; - INUSE_ATTRIBUTE_ERR: number; - INVALID_ACCESS_ERR: number; - INVALID_CHARACTER_ERR: number; - INVALID_MODIFICATION_ERR: number; - INVALID_NODE_TYPE_ERR: number; - INVALID_STATE_ERR: number; - NAMESPACE_ERR: number; - NETWORK_ERR: number; - NOT_FOUND_ERR: number; - NOT_SUPPORTED_ERR: number; - NO_DATA_ALLOWED_ERR: number; - NO_MODIFICATION_ALLOWED_ERR: number; - PARSE_ERR: number; - QUOTA_EXCEEDED_ERR: number; - SECURITY_ERR: number; - SERIALIZE_ERR: number; - SYNTAX_ERR: number; - TIMEOUT_ERR: number; - TYPE_MISMATCH_ERR: number; - URL_MISMATCH_ERR: number; - VALIDATION_ERR: number; - WRONG_DOCUMENT_ERR: number; + readonly ABORT_ERR: number; + readonly DATA_CLONE_ERR: number; + readonly DOMSTRING_SIZE_ERR: number; + readonly HIERARCHY_REQUEST_ERR: number; + readonly INDEX_SIZE_ERR: number; + readonly INUSE_ATTRIBUTE_ERR: number; + readonly INVALID_ACCESS_ERR: number; + readonly INVALID_CHARACTER_ERR: number; + readonly INVALID_MODIFICATION_ERR: number; + readonly INVALID_NODE_TYPE_ERR: number; + readonly INVALID_STATE_ERR: number; + readonly NAMESPACE_ERR: number; + readonly NETWORK_ERR: number; + readonly NOT_FOUND_ERR: number; + readonly NOT_SUPPORTED_ERR: number; + readonly NO_DATA_ALLOWED_ERR: number; + readonly NO_MODIFICATION_ALLOWED_ERR: number; + readonly PARSE_ERR: number; + readonly QUOTA_EXCEEDED_ERR: number; + readonly SECURITY_ERR: number; + readonly SERIALIZE_ERR: number; + readonly SYNTAX_ERR: number; + readonly TIMEOUT_ERR: number; + readonly TYPE_MISMATCH_ERR: number; + readonly URL_MISMATCH_ERR: number; + readonly VALIDATION_ERR: number; + readonly WRONG_DOCUMENT_ERR: number; } declare var DOMException: { prototype: DOMException; new(): DOMException; - ABORT_ERR: number; - DATA_CLONE_ERR: number; - DOMSTRING_SIZE_ERR: number; - HIERARCHY_REQUEST_ERR: number; - INDEX_SIZE_ERR: number; - INUSE_ATTRIBUTE_ERR: number; - INVALID_ACCESS_ERR: number; - INVALID_CHARACTER_ERR: number; - INVALID_MODIFICATION_ERR: number; - INVALID_NODE_TYPE_ERR: number; - INVALID_STATE_ERR: number; - NAMESPACE_ERR: number; - NETWORK_ERR: number; - NOT_FOUND_ERR: number; - NOT_SUPPORTED_ERR: number; - NO_DATA_ALLOWED_ERR: number; - NO_MODIFICATION_ALLOWED_ERR: number; - PARSE_ERR: number; - QUOTA_EXCEEDED_ERR: number; - SECURITY_ERR: number; - SERIALIZE_ERR: number; - SYNTAX_ERR: number; - TIMEOUT_ERR: number; - TYPE_MISMATCH_ERR: number; - URL_MISMATCH_ERR: number; - VALIDATION_ERR: number; - WRONG_DOCUMENT_ERR: number; + readonly ABORT_ERR: number; + readonly DATA_CLONE_ERR: number; + readonly DOMSTRING_SIZE_ERR: number; + readonly HIERARCHY_REQUEST_ERR: number; + readonly INDEX_SIZE_ERR: number; + readonly INUSE_ATTRIBUTE_ERR: number; + readonly INVALID_ACCESS_ERR: number; + readonly INVALID_CHARACTER_ERR: number; + readonly INVALID_MODIFICATION_ERR: number; + readonly INVALID_NODE_TYPE_ERR: number; + readonly INVALID_STATE_ERR: number; + readonly NAMESPACE_ERR: number; + readonly NETWORK_ERR: number; + readonly NOT_FOUND_ERR: number; + readonly NOT_SUPPORTED_ERR: number; + readonly NO_DATA_ALLOWED_ERR: number; + readonly NO_MODIFICATION_ALLOWED_ERR: number; + readonly PARSE_ERR: number; + readonly QUOTA_EXCEEDED_ERR: number; + readonly SECURITY_ERR: number; + readonly SERIALIZE_ERR: number; + readonly SYNTAX_ERR: number; + readonly TIMEOUT_ERR: number; + readonly TYPE_MISMATCH_ERR: number; + readonly URL_MISMATCH_ERR: number; + readonly VALIDATION_ERR: number; + readonly WRONG_DOCUMENT_ERR: number; } interface DOMImplementation { @@ -6895,7 +7685,7 @@ declare var DOMSettableTokenList: { } interface DOMStringList { - length: number; + readonly length: number; contains(str: string): boolean; item(index: number): string; [index: number]: string; @@ -6916,7 +7706,7 @@ declare var DOMStringMap: { } interface DOMTokenList { - length: number; + readonly length: number; add(...token: string[]): void; contains(token: string): boolean; item(index: number): string; @@ -6943,9 +7733,9 @@ declare var DataCue: { interface DataTransfer { dropEffect: string; effectAllowed: string; - files: FileList; - items: DataTransferItemList; - types: DOMStringList; + readonly files: FileList; + readonly items: DataTransferItemList; + readonly types: DOMStringList; clearData(format?: string): boolean; getData(format: string): string; setData(format: string, data: string): boolean; @@ -6957,8 +7747,8 @@ declare var DataTransfer: { } interface DataTransferItem { - kind: string; - type: string; + readonly kind: string; + readonly type: string; getAsFile(): File; getAsString(_callback: FunctionStringCallback): void; } @@ -6969,7 +7759,7 @@ declare var DataTransferItem: { } interface DataTransferItemList { - length: number; + readonly length: number; add(data: File): DataTransferItem; clear(): void; item(index: number): DataTransferItem; @@ -6983,9 +7773,9 @@ declare var DataTransferItemList: { } interface DeferredPermissionRequest { - id: number; - type: string; - uri: string; + readonly id: number; + readonly type: string; + readonly uri: string; allow(): void; deny(): void; } @@ -6996,7 +7786,7 @@ declare var DeferredPermissionRequest: { } interface DelayNode extends AudioNode { - delayTime: AudioParam; + readonly delayTime: AudioParam; } declare var DelayNode: { @@ -7005,9 +7795,9 @@ declare var DelayNode: { } interface DeviceAcceleration { - x: number; - y: number; - z: number; + readonly x: number; + readonly y: number; + readonly z: number; } declare var DeviceAcceleration: { @@ -7015,11 +7805,20 @@ declare var DeviceAcceleration: { new(): DeviceAcceleration; } +interface DeviceLightEvent extends Event { + readonly value: number; +} + +declare var DeviceLightEvent: { + prototype: DeviceLightEvent; + new(type: string, eventInitDict?: DeviceLightEventInit): DeviceLightEvent; +} + interface DeviceMotionEvent extends Event { - acceleration: DeviceAcceleration; - accelerationIncludingGravity: DeviceAcceleration; - interval: number; - rotationRate: DeviceRotationRate; + readonly acceleration: DeviceAcceleration; + readonly accelerationIncludingGravity: DeviceAcceleration; + readonly interval: number; + readonly rotationRate: DeviceRotationRate; initDeviceMotionEvent(type: string, bubbles: boolean, cancelable: boolean, acceleration: DeviceAccelerationDict, accelerationIncludingGravity: DeviceAccelerationDict, rotationRate: DeviceRotationRateDict, interval: number): void; } @@ -7029,10 +7828,10 @@ declare var DeviceMotionEvent: { } interface DeviceOrientationEvent extends Event { - absolute: boolean; - alpha: number; - beta: number; - gamma: number; + readonly absolute: boolean; + readonly alpha: number; + readonly beta: number; + readonly gamma: number; initDeviceOrientationEvent(type: string, bubbles: boolean, cancelable: boolean, alpha: number, beta: number, gamma: number, absolute: boolean): void; } @@ -7042,9 +7841,9 @@ declare var DeviceOrientationEvent: { } interface DeviceRotationRate { - alpha: number; - beta: number; - gamma: number; + readonly alpha: number; + readonly beta: number; + readonly gamma: number; } declare var DeviceRotationRate: { @@ -7056,15 +7855,15 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven /** * Sets or gets the URL for the current document. */ - URL: string; + readonly URL: string; /** * Gets the URL for the document, stripped of any character encoding. */ - URLUnencoded: string; + readonly URLUnencoded: string; /** * Gets the object that has the focus when the parent document has focus. */ - activeElement: Element; + readonly activeElement: Element; /** * Sets or gets the color of all active links in the document. */ @@ -7072,15 +7871,15 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven /** * Returns a reference to the collection of elements contained by the object. */ - all: HTMLCollection; + readonly all: HTMLAllCollection; /** * Retrieves a collection of all a objects that have a name and/or id property. Objects in this collection are in HTML source order. */ - anchors: HTMLCollection; + anchors: HTMLCollectionOf; /** * Retrieves a collection of all applet objects in the document. */ - applets: HTMLCollection; + applets: HTMLCollectionOf; /** * Deprecated. Sets or retrieves a value that indicates the background color behind the object. */ @@ -7089,7 +7888,7 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven * Specifies the beginning and end of the document body. */ body: HTMLElement; - characterSet: string; + readonly characterSet: string; /** * Gets or sets the character set used to encode the object. */ @@ -7097,13 +7896,14 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven /** * Gets a value that indicates whether standards-compliant mode is switched on for the object. */ - compatMode: string; + readonly compatMode: string; cookie: string; + readonly currentScript: HTMLScriptElement | SVGScriptElement; /** * Gets the default character set from the current regional language settings. */ - defaultCharset: string; - defaultView: Window; + readonly defaultCharset: string; + readonly defaultView: Window; /** * Sets or gets a value that indicates whether the document can be edited. */ @@ -7115,7 +7915,7 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven /** * Gets an object representing the document type declaration associated with the current document. */ - doctype: DocumentType; + readonly doctype: DocumentType; /** * Gets a reference to the root node of the document. */ @@ -7127,7 +7927,7 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven /** * Retrieves a collection of all embed objects in the document. */ - embeds: HTMLCollection; + embeds: HTMLCollectionOf; /** * Sets or gets the foreground (text) color of the document. */ @@ -7135,27 +7935,27 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven /** * Retrieves a collection, in source order, of all form objects in the document. */ - forms: HTMLCollection; - fullscreenElement: Element; - fullscreenEnabled: boolean; - head: HTMLHeadElement; - hidden: boolean; + forms: HTMLCollectionOf; + readonly fullscreenElement: Element; + readonly fullscreenEnabled: boolean; + readonly head: HTMLHeadElement; + readonly hidden: boolean; /** * Retrieves a collection, in source order, of img objects in the document. */ - images: HTMLCollection; + images: HTMLCollectionOf; /** * Gets the implementation object of the current document. */ - implementation: DOMImplementation; + readonly implementation: DOMImplementation; /** * Returns the character encoding used to create the webpage that is loaded into the document object. */ - inputEncoding: string; + readonly inputEncoding: string; /** * Gets the date that the page was last modified, if the page supplies one. */ - lastModified: string; + readonly lastModified: string; /** * Sets or gets the color of the document links. */ @@ -7163,16 +7963,13 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven /** * Retrieves a collection of all a objects that specify the href property and all area objects in the document. */ - links: HTMLCollection; + links: HTMLCollectionOf; /** * Contains information about the current URL. */ - location: Location; - media: string; + readonly location: Location; msCSSOMElementFloatMetrics: boolean; msCapsLockWarningOff: boolean; - msHidden: boolean; - msVisibilityState: string; /** * Fires when the user aborts the download. * @param ev The event. @@ -7274,7 +8071,7 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven * Occurs when the end of playback is reached. * @param ev The event */ - onended: (ev: Event) => any; + onended: (ev: MediaStreamErrorEvent) => any; /** * Fires when an error occurs during object loading. * @param ev The event. @@ -7288,6 +8085,7 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven onfullscreenchange: (ev: Event) => any; onfullscreenerror: (ev: Event) => any; oninput: (ev: Event) => any; + oninvalid: (ev: Event) => any; /** * Fires when the user presses a key. * @param ev The keyboard event @@ -7352,7 +8150,7 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven * Fires when the wheel button is rotated. * @param ev The mouse event */ - onmousewheel: (ev: MouseWheelEvent) => any; + onmousewheel: (ev: WheelEvent) => any; onmscontentzoom: (ev: UIEvent) => any; onmsgesturechange: (ev: MSGestureEvent) => any; onmsgesturedoubletap: (ev: MSGestureEvent) => any; @@ -7437,6 +8235,11 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven * @param ev The event. */ onselect: (ev: UIEvent) => any; + /** + * Fires when the selection state of a document changes. + * @param ev The event. + */ + onselectionchange: (ev: Event) => any; onselectstart: (ev: Event) => any; /** * Occurs when the download has stopped. @@ -7475,51 +8278,51 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven onwaiting: (ev: Event) => any; onwebkitfullscreenchange: (ev: Event) => any; onwebkitfullscreenerror: (ev: Event) => any; - plugins: HTMLCollection; - pointerLockElement: Element; + plugins: HTMLCollectionOf; + readonly pointerLockElement: Element; /** * Retrieves a value that indicates the current state of the object. */ - readyState: string; + readonly readyState: string; /** * Gets the URL of the location that referred the user to the current page. */ - referrer: string; + readonly referrer: string; /** * Gets the root svg element in the document hierarchy. */ - rootElement: SVGSVGElement; + readonly rootElement: SVGSVGElement; /** * Retrieves a collection of all script objects in the document. */ - scripts: HTMLCollection; - security: string; + scripts: HTMLCollectionOf; + readonly scrollingElement: Element; /** * Retrieves a collection of styleSheet objects representing the style sheets that correspond to each instance of a link or style object in the document. */ - styleSheets: StyleSheetList; + readonly styleSheets: StyleSheetList; /** * Contains the title of the document. */ title: string; - visibilityState: string; + readonly visibilityState: string; /** * Sets or gets the color of the links that the user has visited. */ vlinkColor: string; - webkitCurrentFullScreenElement: Element; - webkitFullscreenElement: Element; - webkitFullscreenEnabled: boolean; - webkitIsFullScreen: boolean; - xmlEncoding: string; + readonly webkitCurrentFullScreenElement: Element; + readonly webkitFullscreenElement: Element; + readonly webkitFullscreenEnabled: boolean; + readonly webkitIsFullScreen: boolean; + readonly xmlEncoding: string; xmlStandalone: boolean; /** * Gets or sets the version attribute specified in the declaration of an XML document. */ xmlVersion: string; - currentScript: HTMLScriptElement; adoptNode(source: Node): Node; captureEvents(): void; + caretRangeFromPoint(x: number, y: number): Range; clear(): void; /** * Closes an output stream and forces the sent data to display. @@ -7546,37 +8349,24 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven * @param tagName The name of an element. */ createElement(tagName: "a"): HTMLAnchorElement; - createElement(tagName: "abbr"): HTMLPhraseElement; - createElement(tagName: "acronym"): HTMLPhraseElement; - createElement(tagName: "address"): HTMLBlockElement; createElement(tagName: "applet"): HTMLAppletElement; createElement(tagName: "area"): HTMLAreaElement; createElement(tagName: "audio"): HTMLAudioElement; - createElement(tagName: "b"): HTMLPhraseElement; createElement(tagName: "base"): HTMLBaseElement; createElement(tagName: "basefont"): HTMLBaseFontElement; - createElement(tagName: "bdo"): HTMLPhraseElement; - createElement(tagName: "big"): HTMLPhraseElement; - createElement(tagName: "blockquote"): HTMLBlockElement; + createElement(tagName: "blockquote"): HTMLQuoteElement; createElement(tagName: "body"): HTMLBodyElement; createElement(tagName: "br"): HTMLBRElement; createElement(tagName: "button"): HTMLButtonElement; createElement(tagName: "canvas"): HTMLCanvasElement; createElement(tagName: "caption"): HTMLTableCaptionElement; - createElement(tagName: "center"): HTMLBlockElement; - createElement(tagName: "cite"): HTMLPhraseElement; - createElement(tagName: "code"): HTMLPhraseElement; createElement(tagName: "col"): HTMLTableColElement; createElement(tagName: "colgroup"): HTMLTableColElement; createElement(tagName: "datalist"): HTMLDataListElement; - createElement(tagName: "dd"): HTMLDDElement; createElement(tagName: "del"): HTMLModElement; - createElement(tagName: "dfn"): HTMLPhraseElement; createElement(tagName: "dir"): HTMLDirectoryElement; createElement(tagName: "div"): HTMLDivElement; createElement(tagName: "dl"): HTMLDListElement; - createElement(tagName: "dt"): HTMLDTElement; - createElement(tagName: "em"): HTMLPhraseElement; createElement(tagName: "embed"): HTMLEmbedElement; createElement(tagName: "fieldset"): HTMLFieldSetElement; createElement(tagName: "font"): HTMLFontElement; @@ -7592,52 +8382,41 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven createElement(tagName: "head"): HTMLHeadElement; createElement(tagName: "hr"): HTMLHRElement; createElement(tagName: "html"): HTMLHtmlElement; - createElement(tagName: "i"): HTMLPhraseElement; createElement(tagName: "iframe"): HTMLIFrameElement; createElement(tagName: "img"): HTMLImageElement; createElement(tagName: "input"): HTMLInputElement; createElement(tagName: "ins"): HTMLModElement; - createElement(tagName: "isindex"): HTMLIsIndexElement; - createElement(tagName: "kbd"): HTMLPhraseElement; - createElement(tagName: "keygen"): HTMLBlockElement; + createElement(tagName: "isindex"): HTMLUnknownElement; createElement(tagName: "label"): HTMLLabelElement; createElement(tagName: "legend"): HTMLLegendElement; createElement(tagName: "li"): HTMLLIElement; createElement(tagName: "link"): HTMLLinkElement; - createElement(tagName: "listing"): HTMLBlockElement; + createElement(tagName: "listing"): HTMLPreElement; createElement(tagName: "map"): HTMLMapElement; createElement(tagName: "marquee"): HTMLMarqueeElement; createElement(tagName: "menu"): HTMLMenuElement; createElement(tagName: "meta"): HTMLMetaElement; - createElement(tagName: "nextid"): HTMLNextIdElement; - createElement(tagName: "nobr"): HTMLPhraseElement; + createElement(tagName: "meter"): HTMLMeterElement; + createElement(tagName: "nextid"): HTMLUnknownElement; createElement(tagName: "object"): HTMLObjectElement; createElement(tagName: "ol"): HTMLOListElement; createElement(tagName: "optgroup"): HTMLOptGroupElement; createElement(tagName: "option"): HTMLOptionElement; createElement(tagName: "p"): HTMLParagraphElement; createElement(tagName: "param"): HTMLParamElement; - createElement(tagName: "plaintext"): HTMLBlockElement; + createElement(tagName: "picture"): HTMLPictureElement; createElement(tagName: "pre"): HTMLPreElement; createElement(tagName: "progress"): HTMLProgressElement; createElement(tagName: "q"): HTMLQuoteElement; - createElement(tagName: "rt"): HTMLPhraseElement; - createElement(tagName: "ruby"): HTMLPhraseElement; - createElement(tagName: "s"): HTMLPhraseElement; - createElement(tagName: "samp"): HTMLPhraseElement; createElement(tagName: "script"): HTMLScriptElement; createElement(tagName: "select"): HTMLSelectElement; - createElement(tagName: "small"): HTMLPhraseElement; createElement(tagName: "source"): HTMLSourceElement; createElement(tagName: "span"): HTMLSpanElement; - createElement(tagName: "strike"): HTMLPhraseElement; - createElement(tagName: "strong"): HTMLPhraseElement; createElement(tagName: "style"): HTMLStyleElement; - createElement(tagName: "sub"): HTMLPhraseElement; - createElement(tagName: "sup"): HTMLPhraseElement; createElement(tagName: "table"): HTMLTableElement; createElement(tagName: "tbody"): HTMLTableSectionElement; createElement(tagName: "td"): HTMLTableDataCellElement; + createElement(tagName: "template"): HTMLTemplateElement; createElement(tagName: "textarea"): HTMLTextAreaElement; createElement(tagName: "tfoot"): HTMLTableSectionElement; createElement(tagName: "th"): HTMLTableHeaderCellElement; @@ -7645,13 +8424,10 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven createElement(tagName: "title"): HTMLTitleElement; createElement(tagName: "tr"): HTMLTableRowElement; createElement(tagName: "track"): HTMLTrackElement; - createElement(tagName: "tt"): HTMLPhraseElement; - createElement(tagName: "u"): HTMLPhraseElement; createElement(tagName: "ul"): HTMLUListElement; - createElement(tagName: "var"): HTMLPhraseElement; createElement(tagName: "video"): HTMLVideoElement; createElement(tagName: "x-ms-webview"): MSHTMLWebViewElement; - createElement(tagName: "xmp"): HTMLBlockElement; + createElement(tagName: "xmp"): HTMLPreElement; createElement(tagName: string): HTMLElement; createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "a"): SVGAElement createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "circle"): SVGCircleElement @@ -7736,7 +8512,7 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven * @param data String that specifies the nodeValue property of the text node. */ createTextNode(data: string): Text; - createTouch(view: any, target: EventTarget, identifier: number, pageX: number, pageY: number, screenX: number, screenY: number): Touch; + createTouch(view: Window, target: EventTarget, identifier: number, pageX: number, pageY: number, screenX: number, screenY: number): Touch; createTouchList(...touches: Touch[]): TouchList; /** * Creates a TreeWalker object that you can use to traverse filtered lists of nodes or elements in a document. @@ -7787,44 +8563,44 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven * @param name Specifies the name of an element. */ getElementsByTagName(tagname: "a"): NodeListOf; - getElementsByTagName(tagname: "abbr"): NodeListOf; - getElementsByTagName(tagname: "acronym"): NodeListOf; - getElementsByTagName(tagname: "address"): NodeListOf; + getElementsByTagName(tagname: "abbr"): NodeListOf; + getElementsByTagName(tagname: "acronym"): NodeListOf; + getElementsByTagName(tagname: "address"): NodeListOf; getElementsByTagName(tagname: "applet"): NodeListOf; getElementsByTagName(tagname: "area"): NodeListOf; getElementsByTagName(tagname: "article"): NodeListOf; getElementsByTagName(tagname: "aside"): NodeListOf; getElementsByTagName(tagname: "audio"): NodeListOf; - getElementsByTagName(tagname: "b"): NodeListOf; + getElementsByTagName(tagname: "b"): NodeListOf; getElementsByTagName(tagname: "base"): NodeListOf; getElementsByTagName(tagname: "basefont"): NodeListOf; - getElementsByTagName(tagname: "bdo"): NodeListOf; - getElementsByTagName(tagname: "big"): NodeListOf; - getElementsByTagName(tagname: "blockquote"): NodeListOf; + getElementsByTagName(tagname: "bdo"): NodeListOf; + getElementsByTagName(tagname: "big"): NodeListOf; + getElementsByTagName(tagname: "blockquote"): NodeListOf; getElementsByTagName(tagname: "body"): NodeListOf; getElementsByTagName(tagname: "br"): NodeListOf; getElementsByTagName(tagname: "button"): NodeListOf; getElementsByTagName(tagname: "canvas"): NodeListOf; getElementsByTagName(tagname: "caption"): NodeListOf; - getElementsByTagName(tagname: "center"): NodeListOf; + getElementsByTagName(tagname: "center"): NodeListOf; getElementsByTagName(tagname: "circle"): NodeListOf; - getElementsByTagName(tagname: "cite"): NodeListOf; + getElementsByTagName(tagname: "cite"): NodeListOf; getElementsByTagName(tagname: "clippath"): NodeListOf; - getElementsByTagName(tagname: "code"): NodeListOf; + getElementsByTagName(tagname: "code"): NodeListOf; getElementsByTagName(tagname: "col"): NodeListOf; getElementsByTagName(tagname: "colgroup"): NodeListOf; getElementsByTagName(tagname: "datalist"): NodeListOf; - getElementsByTagName(tagname: "dd"): NodeListOf; + getElementsByTagName(tagname: "dd"): NodeListOf; getElementsByTagName(tagname: "defs"): NodeListOf; getElementsByTagName(tagname: "del"): NodeListOf; getElementsByTagName(tagname: "desc"): NodeListOf; - getElementsByTagName(tagname: "dfn"): NodeListOf; + getElementsByTagName(tagname: "dfn"): NodeListOf; getElementsByTagName(tagname: "dir"): NodeListOf; getElementsByTagName(tagname: "div"): NodeListOf; getElementsByTagName(tagname: "dl"): NodeListOf; - getElementsByTagName(tagname: "dt"): NodeListOf; + getElementsByTagName(tagname: "dt"): NodeListOf; getElementsByTagName(tagname: "ellipse"): NodeListOf; - getElementsByTagName(tagname: "em"): NodeListOf; + getElementsByTagName(tagname: "em"): NodeListOf; getElementsByTagName(tagname: "embed"): NodeListOf; getElementsByTagName(tagname: "feblend"): NodeListOf; getElementsByTagName(tagname: "fecolormatrix"): NodeListOf; @@ -7872,22 +8648,22 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven getElementsByTagName(tagname: "hgroup"): NodeListOf; getElementsByTagName(tagname: "hr"): NodeListOf; getElementsByTagName(tagname: "html"): NodeListOf; - getElementsByTagName(tagname: "i"): NodeListOf; + getElementsByTagName(tagname: "i"): NodeListOf; getElementsByTagName(tagname: "iframe"): NodeListOf; getElementsByTagName(tagname: "image"): NodeListOf; getElementsByTagName(tagname: "img"): NodeListOf; getElementsByTagName(tagname: "input"): NodeListOf; getElementsByTagName(tagname: "ins"): NodeListOf; - getElementsByTagName(tagname: "isindex"): NodeListOf; - getElementsByTagName(tagname: "kbd"): NodeListOf; - getElementsByTagName(tagname: "keygen"): NodeListOf; + getElementsByTagName(tagname: "isindex"): NodeListOf; + getElementsByTagName(tagname: "kbd"): NodeListOf; + getElementsByTagName(tagname: "keygen"): NodeListOf; getElementsByTagName(tagname: "label"): NodeListOf; getElementsByTagName(tagname: "legend"): NodeListOf; getElementsByTagName(tagname: "li"): NodeListOf; getElementsByTagName(tagname: "line"): NodeListOf; getElementsByTagName(tagname: "lineargradient"): NodeListOf; getElementsByTagName(tagname: "link"): NodeListOf; - getElementsByTagName(tagname: "listing"): NodeListOf; + getElementsByTagName(tagname: "listing"): NodeListOf; getElementsByTagName(tagname: "map"): NodeListOf; getElementsByTagName(tagname: "mark"): NodeListOf; getElementsByTagName(tagname: "marker"): NodeListOf; @@ -7896,9 +8672,10 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven getElementsByTagName(tagname: "menu"): NodeListOf; getElementsByTagName(tagname: "meta"): NodeListOf; getElementsByTagName(tagname: "metadata"): NodeListOf; + getElementsByTagName(tagname: "meter"): NodeListOf; getElementsByTagName(tagname: "nav"): NodeListOf; - getElementsByTagName(tagname: "nextid"): NodeListOf; - getElementsByTagName(tagname: "nobr"): NodeListOf; + getElementsByTagName(tagname: "nextid"): NodeListOf; + getElementsByTagName(tagname: "nobr"): NodeListOf; getElementsByTagName(tagname: "noframes"): NodeListOf; getElementsByTagName(tagname: "noscript"): NodeListOf; getElementsByTagName(tagname: "object"): NodeListOf; @@ -7909,7 +8686,8 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven getElementsByTagName(tagname: "param"): NodeListOf; getElementsByTagName(tagname: "path"): NodeListOf; getElementsByTagName(tagname: "pattern"): NodeListOf; - getElementsByTagName(tagname: "plaintext"): NodeListOf; + getElementsByTagName(tagname: "picture"): NodeListOf; + getElementsByTagName(tagname: "plaintext"): NodeListOf; getElementsByTagName(tagname: "polygon"): NodeListOf; getElementsByTagName(tagname: "polyline"): NodeListOf; getElementsByTagName(tagname: "pre"): NodeListOf; @@ -7917,28 +8695,29 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven getElementsByTagName(tagname: "q"): NodeListOf; getElementsByTagName(tagname: "radialgradient"): NodeListOf; getElementsByTagName(tagname: "rect"): NodeListOf; - getElementsByTagName(tagname: "rt"): NodeListOf; - getElementsByTagName(tagname: "ruby"): NodeListOf; - getElementsByTagName(tagname: "s"): NodeListOf; - getElementsByTagName(tagname: "samp"): NodeListOf; + getElementsByTagName(tagname: "rt"): NodeListOf; + getElementsByTagName(tagname: "ruby"): NodeListOf; + getElementsByTagName(tagname: "s"): NodeListOf; + getElementsByTagName(tagname: "samp"): NodeListOf; getElementsByTagName(tagname: "script"): NodeListOf; getElementsByTagName(tagname: "section"): NodeListOf; getElementsByTagName(tagname: "select"): NodeListOf; - getElementsByTagName(tagname: "small"): NodeListOf; + getElementsByTagName(tagname: "small"): NodeListOf; getElementsByTagName(tagname: "source"): NodeListOf; getElementsByTagName(tagname: "span"): NodeListOf; getElementsByTagName(tagname: "stop"): NodeListOf; - getElementsByTagName(tagname: "strike"): NodeListOf; - getElementsByTagName(tagname: "strong"): NodeListOf; + getElementsByTagName(tagname: "strike"): NodeListOf; + getElementsByTagName(tagname: "strong"): NodeListOf; getElementsByTagName(tagname: "style"): NodeListOf; - getElementsByTagName(tagname: "sub"): NodeListOf; - getElementsByTagName(tagname: "sup"): NodeListOf; + getElementsByTagName(tagname: "sub"): NodeListOf; + getElementsByTagName(tagname: "sup"): NodeListOf; getElementsByTagName(tagname: "svg"): NodeListOf; getElementsByTagName(tagname: "switch"): NodeListOf; getElementsByTagName(tagname: "symbol"): NodeListOf; getElementsByTagName(tagname: "table"): NodeListOf; getElementsByTagName(tagname: "tbody"): NodeListOf; getElementsByTagName(tagname: "td"): NodeListOf; + getElementsByTagName(tagname: "template"): NodeListOf; getElementsByTagName(tagname: "text"): NodeListOf; getElementsByTagName(tagname: "textpath"): NodeListOf; getElementsByTagName(tagname: "textarea"): NodeListOf; @@ -7949,16 +8728,16 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven getElementsByTagName(tagname: "tr"): NodeListOf; getElementsByTagName(tagname: "track"): NodeListOf; getElementsByTagName(tagname: "tspan"): NodeListOf; - getElementsByTagName(tagname: "tt"): NodeListOf; - getElementsByTagName(tagname: "u"): NodeListOf; + getElementsByTagName(tagname: "tt"): NodeListOf; + getElementsByTagName(tagname: "u"): NodeListOf; getElementsByTagName(tagname: "ul"): NodeListOf; getElementsByTagName(tagname: "use"): NodeListOf; - getElementsByTagName(tagname: "var"): NodeListOf; + getElementsByTagName(tagname: "var"): NodeListOf; getElementsByTagName(tagname: "video"): NodeListOf; getElementsByTagName(tagname: "view"): NodeListOf; getElementsByTagName(tagname: "wbr"): NodeListOf; getElementsByTagName(tagname: "x-ms-webview"): NodeListOf; - getElementsByTagName(tagname: "xmp"): NodeListOf; + getElementsByTagName(tagname: "xmp"): NodeListOf; getElementsByTagName(tagname: string): NodeListOf; getElementsByTagNameNS(namespaceURI: string, localName: string): NodeListOf; /** @@ -7970,8 +8749,8 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven */ hasFocus(): boolean; importNode(importedNode: Node, deep: boolean): Node; - msElementsFromPoint(x: number, y: number): NodeList; - msElementsFromRect(left: number, top: number, width: number, height: number): NodeList; + msElementsFromPoint(x: number, y: number): NodeListOf; + msElementsFromRect(left: number, top: number, width: number, height: number): NodeListOf; /** * Opens a new window and loads a document specified by a given URL. Also, opens a new window that uses the url parameter and the name parameter to collect the output of the write method and the writeln method. * @param url Specifies a MIME type for the document. @@ -8067,12 +8846,13 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "ended", listener: (ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; addEventListener(type: "fullscreenchange", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "fullscreenerror", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "invalid", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; @@ -8085,7 +8865,7 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousewheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; addEventListener(type: "mssitemodejumplistitemremoved", listener: (ev: MSSiteModeEvent) => any, useCapture?: boolean): void; addEventListener(type: "msthumbnailclick", listener: (ev: MSSiteModeEvent) => any, useCapture?: boolean): void; addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -8109,6 +8889,7 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven addEventListener(type: "seeked", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "seeking", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "select", listener: (ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "selectionchange", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "selectstart", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "stalled", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "stop", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -8142,12 +8923,12 @@ declare var DocumentFragment: { } interface DocumentType extends Node, ChildNode { - entities: NamedNodeMap; - internalSubset: string; - name: string; - notations: NamedNodeMap; - publicId: string; - systemId: string; + readonly entities: NamedNodeMap; + readonly internalSubset: string; + readonly name: string; + readonly notations: NamedNodeMap; + readonly publicId: string; + readonly systemId: string; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -8157,7 +8938,7 @@ declare var DocumentType: { } interface DragEvent extends MouseEvent { - dataTransfer: DataTransfer; + readonly dataTransfer: DataTransfer; initDragEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, screenXArg: number, screenYArg: number, clientXArg: number, clientYArg: number, ctrlKeyArg: boolean, altKeyArg: boolean, shiftKeyArg: boolean, metaKeyArg: boolean, buttonArg: number, relatedTargetArg: EventTarget, dataTransferArg: DataTransfer): void; msConvertURL(file: File, targetType: string, targetURL?: string): void; } @@ -8168,12 +8949,12 @@ declare var DragEvent: { } interface DynamicsCompressorNode extends AudioNode { - attack: AudioParam; - knee: AudioParam; - ratio: AudioParam; - reduction: AudioParam; - release: AudioParam; - threshold: AudioParam; + readonly attack: AudioParam; + readonly knee: AudioParam; + readonly ratio: AudioParam; + readonly reduction: AudioParam; + readonly release: AudioParam; + readonly threshold: AudioParam; } declare var DynamicsCompressorNode: { @@ -8181,26 +8962,36 @@ declare var DynamicsCompressorNode: { new(): DynamicsCompressorNode; } +interface EXT_frag_depth { +} + +declare var EXT_frag_depth: { + prototype: EXT_frag_depth; + new(): EXT_frag_depth; +} + interface EXT_texture_filter_anisotropic { - MAX_TEXTURE_MAX_ANISOTROPY_EXT: number; - TEXTURE_MAX_ANISOTROPY_EXT: number; + readonly MAX_TEXTURE_MAX_ANISOTROPY_EXT: number; + readonly TEXTURE_MAX_ANISOTROPY_EXT: number; } declare var EXT_texture_filter_anisotropic: { prototype: EXT_texture_filter_anisotropic; new(): EXT_texture_filter_anisotropic; - MAX_TEXTURE_MAX_ANISOTROPY_EXT: number; - TEXTURE_MAX_ANISOTROPY_EXT: number; + readonly MAX_TEXTURE_MAX_ANISOTROPY_EXT: number; + readonly TEXTURE_MAX_ANISOTROPY_EXT: number; } interface Element extends Node, GlobalEventHandlers, ElementTraversal, NodeSelector, ChildNode { - classList: DOMTokenList; - clientHeight: number; - clientLeft: number; - clientTop: number; - clientWidth: number; + readonly classList: DOMTokenList; + className: string; + readonly clientHeight: number; + readonly clientLeft: number; + readonly clientTop: number; + readonly clientWidth: number; + id: string; msContentZoomFactor: number; - msRegionOverflow: string; + readonly msRegionOverflow: string; onariarequest: (ev: AriaRequestEvent) => any; oncommand: (ev: CommandEvent) => any; ongotpointercapture: (ev: PointerEvent) => any; @@ -8228,13 +9019,12 @@ interface Element extends Node, GlobalEventHandlers, ElementTraversal, NodeSelec ontouchstart: (ev: TouchEvent) => any; onwebkitfullscreenchange: (ev: Event) => any; onwebkitfullscreenerror: (ev: Event) => any; - scrollHeight: number; + readonly prefix: string; + readonly scrollHeight: number; scrollLeft: number; scrollTop: number; - scrollWidth: number; - tagName: string; - id: string; - className: string; + readonly scrollWidth: number; + readonly tagName: string; innerHTML: string; getAttribute(name?: string): string; getAttributeNS(namespaceURI: string, localName: string): string; @@ -8243,44 +9033,44 @@ interface Element extends Node, GlobalEventHandlers, ElementTraversal, NodeSelec getBoundingClientRect(): ClientRect; getClientRects(): ClientRectList; getElementsByTagName(name: "a"): NodeListOf; - getElementsByTagName(name: "abbr"): NodeListOf; - getElementsByTagName(name: "acronym"): NodeListOf; - getElementsByTagName(name: "address"): NodeListOf; + getElementsByTagName(name: "abbr"): NodeListOf; + getElementsByTagName(name: "acronym"): NodeListOf; + getElementsByTagName(name: "address"): NodeListOf; getElementsByTagName(name: "applet"): NodeListOf; getElementsByTagName(name: "area"): NodeListOf; getElementsByTagName(name: "article"): NodeListOf; getElementsByTagName(name: "aside"): NodeListOf; getElementsByTagName(name: "audio"): NodeListOf; - getElementsByTagName(name: "b"): NodeListOf; + getElementsByTagName(name: "b"): NodeListOf; getElementsByTagName(name: "base"): NodeListOf; getElementsByTagName(name: "basefont"): NodeListOf; - getElementsByTagName(name: "bdo"): NodeListOf; - getElementsByTagName(name: "big"): NodeListOf; - getElementsByTagName(name: "blockquote"): NodeListOf; + getElementsByTagName(name: "bdo"): NodeListOf; + getElementsByTagName(name: "big"): NodeListOf; + getElementsByTagName(name: "blockquote"): NodeListOf; getElementsByTagName(name: "body"): NodeListOf; getElementsByTagName(name: "br"): NodeListOf; getElementsByTagName(name: "button"): NodeListOf; getElementsByTagName(name: "canvas"): NodeListOf; getElementsByTagName(name: "caption"): NodeListOf; - getElementsByTagName(name: "center"): NodeListOf; + getElementsByTagName(name: "center"): NodeListOf; getElementsByTagName(name: "circle"): NodeListOf; - getElementsByTagName(name: "cite"): NodeListOf; + getElementsByTagName(name: "cite"): NodeListOf; getElementsByTagName(name: "clippath"): NodeListOf; - getElementsByTagName(name: "code"): NodeListOf; + getElementsByTagName(name: "code"): NodeListOf; getElementsByTagName(name: "col"): NodeListOf; getElementsByTagName(name: "colgroup"): NodeListOf; getElementsByTagName(name: "datalist"): NodeListOf; - getElementsByTagName(name: "dd"): NodeListOf; + getElementsByTagName(name: "dd"): NodeListOf; getElementsByTagName(name: "defs"): NodeListOf; getElementsByTagName(name: "del"): NodeListOf; getElementsByTagName(name: "desc"): NodeListOf; - getElementsByTagName(name: "dfn"): NodeListOf; + getElementsByTagName(name: "dfn"): NodeListOf; getElementsByTagName(name: "dir"): NodeListOf; getElementsByTagName(name: "div"): NodeListOf; getElementsByTagName(name: "dl"): NodeListOf; - getElementsByTagName(name: "dt"): NodeListOf; + getElementsByTagName(name: "dt"): NodeListOf; getElementsByTagName(name: "ellipse"): NodeListOf; - getElementsByTagName(name: "em"): NodeListOf; + getElementsByTagName(name: "em"): NodeListOf; getElementsByTagName(name: "embed"): NodeListOf; getElementsByTagName(name: "feblend"): NodeListOf; getElementsByTagName(name: "fecolormatrix"): NodeListOf; @@ -8328,22 +9118,22 @@ interface Element extends Node, GlobalEventHandlers, ElementTraversal, NodeSelec getElementsByTagName(name: "hgroup"): NodeListOf; getElementsByTagName(name: "hr"): NodeListOf; getElementsByTagName(name: "html"): NodeListOf; - getElementsByTagName(name: "i"): NodeListOf; + getElementsByTagName(name: "i"): NodeListOf; getElementsByTagName(name: "iframe"): NodeListOf; getElementsByTagName(name: "image"): NodeListOf; getElementsByTagName(name: "img"): NodeListOf; getElementsByTagName(name: "input"): NodeListOf; getElementsByTagName(name: "ins"): NodeListOf; - getElementsByTagName(name: "isindex"): NodeListOf; - getElementsByTagName(name: "kbd"): NodeListOf; - getElementsByTagName(name: "keygen"): NodeListOf; + getElementsByTagName(name: "isindex"): NodeListOf; + getElementsByTagName(name: "kbd"): NodeListOf; + getElementsByTagName(name: "keygen"): NodeListOf; getElementsByTagName(name: "label"): NodeListOf; getElementsByTagName(name: "legend"): NodeListOf; getElementsByTagName(name: "li"): NodeListOf; getElementsByTagName(name: "line"): NodeListOf; getElementsByTagName(name: "lineargradient"): NodeListOf; getElementsByTagName(name: "link"): NodeListOf; - getElementsByTagName(name: "listing"): NodeListOf; + getElementsByTagName(name: "listing"): NodeListOf; getElementsByTagName(name: "map"): NodeListOf; getElementsByTagName(name: "mark"): NodeListOf; getElementsByTagName(name: "marker"): NodeListOf; @@ -8352,9 +9142,10 @@ interface Element extends Node, GlobalEventHandlers, ElementTraversal, NodeSelec getElementsByTagName(name: "menu"): NodeListOf; getElementsByTagName(name: "meta"): NodeListOf; getElementsByTagName(name: "metadata"): NodeListOf; + getElementsByTagName(name: "meter"): NodeListOf; getElementsByTagName(name: "nav"): NodeListOf; - getElementsByTagName(name: "nextid"): NodeListOf; - getElementsByTagName(name: "nobr"): NodeListOf; + getElementsByTagName(name: "nextid"): NodeListOf; + getElementsByTagName(name: "nobr"): NodeListOf; getElementsByTagName(name: "noframes"): NodeListOf; getElementsByTagName(name: "noscript"): NodeListOf; getElementsByTagName(name: "object"): NodeListOf; @@ -8365,7 +9156,8 @@ interface Element extends Node, GlobalEventHandlers, ElementTraversal, NodeSelec getElementsByTagName(name: "param"): NodeListOf; getElementsByTagName(name: "path"): NodeListOf; getElementsByTagName(name: "pattern"): NodeListOf; - getElementsByTagName(name: "plaintext"): NodeListOf; + getElementsByTagName(name: "picture"): NodeListOf; + getElementsByTagName(name: "plaintext"): NodeListOf; getElementsByTagName(name: "polygon"): NodeListOf; getElementsByTagName(name: "polyline"): NodeListOf; getElementsByTagName(name: "pre"): NodeListOf; @@ -8373,28 +9165,29 @@ interface Element extends Node, GlobalEventHandlers, ElementTraversal, NodeSelec getElementsByTagName(name: "q"): NodeListOf; getElementsByTagName(name: "radialgradient"): NodeListOf; getElementsByTagName(name: "rect"): NodeListOf; - getElementsByTagName(name: "rt"): NodeListOf; - getElementsByTagName(name: "ruby"): NodeListOf; - getElementsByTagName(name: "s"): NodeListOf; - getElementsByTagName(name: "samp"): NodeListOf; + getElementsByTagName(name: "rt"): NodeListOf; + getElementsByTagName(name: "ruby"): NodeListOf; + getElementsByTagName(name: "s"): NodeListOf; + getElementsByTagName(name: "samp"): NodeListOf; getElementsByTagName(name: "script"): NodeListOf; getElementsByTagName(name: "section"): NodeListOf; getElementsByTagName(name: "select"): NodeListOf; - getElementsByTagName(name: "small"): NodeListOf; + getElementsByTagName(name: "small"): NodeListOf; getElementsByTagName(name: "source"): NodeListOf; getElementsByTagName(name: "span"): NodeListOf; getElementsByTagName(name: "stop"): NodeListOf; - getElementsByTagName(name: "strike"): NodeListOf; - getElementsByTagName(name: "strong"): NodeListOf; + getElementsByTagName(name: "strike"): NodeListOf; + getElementsByTagName(name: "strong"): NodeListOf; getElementsByTagName(name: "style"): NodeListOf; - getElementsByTagName(name: "sub"): NodeListOf; - getElementsByTagName(name: "sup"): NodeListOf; + getElementsByTagName(name: "sub"): NodeListOf; + getElementsByTagName(name: "sup"): NodeListOf; getElementsByTagName(name: "svg"): NodeListOf; getElementsByTagName(name: "switch"): NodeListOf; getElementsByTagName(name: "symbol"): NodeListOf; getElementsByTagName(name: "table"): NodeListOf; getElementsByTagName(name: "tbody"): NodeListOf; getElementsByTagName(name: "td"): NodeListOf; + getElementsByTagName(name: "template"): NodeListOf; getElementsByTagName(name: "text"): NodeListOf; getElementsByTagName(name: "textpath"): NodeListOf; getElementsByTagName(name: "textarea"): NodeListOf; @@ -8405,16 +9198,16 @@ interface Element extends Node, GlobalEventHandlers, ElementTraversal, NodeSelec getElementsByTagName(name: "tr"): NodeListOf; getElementsByTagName(name: "track"): NodeListOf; getElementsByTagName(name: "tspan"): NodeListOf; - getElementsByTagName(name: "tt"): NodeListOf; - getElementsByTagName(name: "u"): NodeListOf; + getElementsByTagName(name: "tt"): NodeListOf; + getElementsByTagName(name: "u"): NodeListOf; getElementsByTagName(name: "ul"): NodeListOf; getElementsByTagName(name: "use"): NodeListOf; - getElementsByTagName(name: "var"): NodeListOf; + getElementsByTagName(name: "var"): NodeListOf; getElementsByTagName(name: "video"): NodeListOf; getElementsByTagName(name: "view"): NodeListOf; getElementsByTagName(name: "wbr"): NodeListOf; getElementsByTagName(name: "x-ms-webview"): NodeListOf; - getElementsByTagName(name: "xmp"): NodeListOf; + getElementsByTagName(name: "xmp"): NodeListOf; getElementsByTagName(name: string): NodeListOf; getElementsByTagNameNS(namespaceURI: string, localName: string): NodeListOf; hasAttribute(name: string): boolean; @@ -8487,11 +9280,11 @@ declare var Element: { } interface ErrorEvent extends Event { - colno: number; - error: any; - filename: string; - lineno: number; - message: string; + readonly colno: number; + readonly error: any; + readonly filename: string; + readonly lineno: number; + readonly message: string; initErrorEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, messageArg: string, filenameArg: string, linenoArg: number): void; } @@ -8501,39 +9294,39 @@ declare var ErrorEvent: { } interface Event { - bubbles: boolean; + readonly bubbles: boolean; cancelBubble: boolean; - cancelable: boolean; - currentTarget: EventTarget; - defaultPrevented: boolean; - eventPhase: number; - isTrusted: boolean; + readonly cancelable: boolean; + readonly currentTarget: EventTarget; + readonly defaultPrevented: boolean; + readonly eventPhase: number; + readonly isTrusted: boolean; returnValue: boolean; - srcElement: Element; - target: EventTarget; - timeStamp: number; - type: string; + readonly srcElement: Element; + readonly target: EventTarget; + readonly timeStamp: number; + readonly type: string; initEvent(eventTypeArg: string, canBubbleArg: boolean, cancelableArg: boolean): void; preventDefault(): void; stopImmediatePropagation(): void; stopPropagation(): void; - AT_TARGET: number; - BUBBLING_PHASE: number; - CAPTURING_PHASE: number; + readonly AT_TARGET: number; + readonly BUBBLING_PHASE: number; + readonly CAPTURING_PHASE: number; } declare var Event: { prototype: Event; new(type: string, eventInitDict?: EventInit): Event; - AT_TARGET: number; - BUBBLING_PHASE: number; - CAPTURING_PHASE: number; + readonly AT_TARGET: number; + readonly BUBBLING_PHASE: number; + readonly CAPTURING_PHASE: number; } interface EventTarget { - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; + addEventListener(type: string, listener?: EventListenerOrEventListenerObject, useCapture?: boolean): void; dispatchEvent(evt: Event): boolean; - removeEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; + removeEventListener(type: string, listener?: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var EventTarget: { @@ -8550,8 +9343,9 @@ declare var External: { } interface File extends Blob { - lastModifiedDate: any; - name: string; + readonly lastModifiedDate: any; + readonly name: string; + readonly webkitRelativePath: string; } declare var File: { @@ -8560,7 +9354,7 @@ declare var File: { } interface FileList { - length: number; + readonly length: number; item(index: number): File; [index: number]: File; } @@ -8571,7 +9365,7 @@ declare var FileList: { } interface FileReader extends EventTarget, MSBaseReader { - error: DOMError; + readonly error: DOMError; readAsArrayBuffer(blob: Blob): void; readAsBinaryString(blob: Blob): void; readAsDataURL(blob: Blob): void; @@ -8585,7 +9379,7 @@ declare var FileReader: { } interface FocusEvent extends UIEvent { - relatedTarget: EventTarget; + readonly relatedTarget: EventTarget; initFocusEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, relatedTargetArg: EventTarget): void; } @@ -8604,7 +9398,7 @@ declare var FormData: { } interface GainNode extends AudioNode { - gain: AudioParam; + readonly gain: AudioParam; } declare var GainNode: { @@ -8613,13 +9407,13 @@ declare var GainNode: { } interface Gamepad { - axes: number[]; - buttons: GamepadButton[]; - connected: boolean; - id: string; - index: number; - mapping: string; - timestamp: number; + readonly axes: number[]; + readonly buttons: GamepadButton[]; + readonly connected: boolean; + readonly id: string; + readonly index: number; + readonly mapping: string; + readonly timestamp: number; } declare var Gamepad: { @@ -8628,8 +9422,8 @@ declare var Gamepad: { } interface GamepadButton { - pressed: boolean; - value: number; + readonly pressed: boolean; + readonly value: number; } declare var GamepadButton: { @@ -8638,7 +9432,7 @@ declare var GamepadButton: { } interface GamepadEvent extends Event { - gamepad: Gamepad; + readonly gamepad: Gamepad; } declare var GamepadEvent: { @@ -8676,6 +9470,7 @@ interface HTMLAnchorElement extends HTMLElement { * Sets or retrieves the coordinates of the object. */ coords: string; + download: string; /** * Contains the anchor portion of the URL including the hash sign (#). */ @@ -8696,12 +9491,12 @@ interface HTMLAnchorElement extends HTMLElement { * Sets or retrieves the language code of the object. */ hreflang: string; - mimeType: string; + readonly mimeType: string; /** * Sets or retrieves the shape of the object. */ name: string; - nameProp: string; + readonly nameProp: string; /** * Contains the pathname of the URL. */ @@ -8714,7 +9509,7 @@ interface HTMLAnchorElement extends HTMLElement { * Contains the protocol of the URL. */ protocol: string; - protocolLong: string; + readonly protocolLong: string; /** * Sets or retrieves the relationship between the object and the destination of the link. */ @@ -8756,7 +9551,7 @@ interface HTMLAppletElement extends HTMLElement { /** * Retrieves a string of the URL where the object tag can be found. This is often the href of the document that the object is in, or the value set by a base element. */ - BaseHref: string; + readonly BaseHref: string; align: string; /** * Sets or retrieves a text alternative to the graphic. @@ -8783,7 +9578,7 @@ interface HTMLAppletElement extends HTMLElement { /** * Address of a pointer to the document this page or frame contains. If there is no document, then null will be returned. */ - contentDocument: Document; + readonly contentDocument: Document; /** * Sets or retrieves the URL that references the data of the object. */ @@ -8792,7 +9587,7 @@ interface HTMLAppletElement extends HTMLElement { * Sets or retrieves a character string that can be used to implement your own declare functionality for the object. */ declare: boolean; - form: HTMLFormElement; + readonly form: HTMLFormElement; /** * Sets or retrieves the height of the object. */ @@ -8833,6 +9628,7 @@ interface HTMLAreaElement extends HTMLElement { * Sets or retrieves the coordinates of the object. */ coords: string; + download: string; /** * Sets or retrieves the subsection of the href property that follows the number sign (#). */ @@ -8958,23 +9754,6 @@ declare var HTMLBaseFontElement: { new(): HTMLBaseFontElement; } -interface HTMLBlockElement extends HTMLElement { - /** - * Sets or retrieves reference information about the object. - */ - cite: string; - clear: string; - /** - * Sets or retrieves the width of the object. - */ - width: number; -} - -declare var HTMLBlockElement: { - prototype: HTMLBlockElement; - new(): HTMLBlockElement; -} - interface HTMLBodyElement extends HTMLElement { aLink: any; background: string; @@ -9002,7 +9781,6 @@ interface HTMLBodyElement extends HTMLElement { onunload: (ev: Event) => any; text: any; vLink: any; - createTextRange(): TextRange; addEventListener(type: "MSContentZoom", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; addEventListener(type: "MSGestureDoubleTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; @@ -9027,10 +9805,10 @@ interface HTMLBodyElement extends HTMLElement { addEventListener(type: "afterprint", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecopy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecopy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforedeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforepaste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforepaste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforeprint", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "beforeunload", listener: (ev: BeforeUnloadEvent) => any, useCapture?: boolean): void; addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; @@ -9041,9 +9819,9 @@ interface HTMLBodyElement extends HTMLElement { addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void; addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "copy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "copy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "cuechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "cut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "cut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "deactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void; @@ -9055,7 +9833,7 @@ interface HTMLBodyElement extends HTMLElement { addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "ended", listener: (ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; @@ -9063,6 +9841,7 @@ interface HTMLBodyElement extends HTMLElement { addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; addEventListener(type: "hashchange", listener: (ev: HashChangeEvent) => any, useCapture?: boolean): void; addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "invalid", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; @@ -9080,13 +9859,13 @@ interface HTMLBodyElement extends HTMLElement { addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousewheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; addEventListener(type: "offline", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "online", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "orientationchange", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "pagehide", listener: (ev: PageTransitionEvent) => any, useCapture?: boolean): void; addEventListener(type: "pageshow", listener: (ev: PageTransitionEvent) => any, useCapture?: boolean): void; - addEventListener(type: "paste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "paste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -9140,7 +9919,7 @@ interface HTMLButtonElement extends HTMLElement { /** * Retrieves a reference to the form that the object is embedded in. */ - form: HTMLFormElement; + readonly form: HTMLFormElement; /** * Overrides the action attribute (where the data on a form is sent) on the parent form element. */ @@ -9173,11 +9952,11 @@ interface HTMLButtonElement extends HTMLElement { /** * Returns the error message that would be displayed if the user submits the form, or an empty string if no error message. It also triggers the standard error message, such as "this is a required field". The result is that the user sees validation messages without actually submitting. */ - validationMessage: string; + readonly validationMessage: string; /** * Returns a ValidityState object that represents the validity states of an element. */ - validity: ValidityState; + readonly validity: ValidityState; /** * Sets or retrieves the default or selected value of the control. */ @@ -9185,15 +9964,11 @@ interface HTMLButtonElement extends HTMLElement { /** * Returns whether an element will successfully validate based on forms validation rules and constraints. */ - willValidate: boolean; + readonly willValidate: boolean; /** * Returns whether a form will validate when it is submitted, without having to submit it. */ checkValidity(): boolean; - /** - * Creates a TextRange object for the element. - */ - createTextRange(): TextRange; /** * Sets a custom error message that is displayed when a form is submitted. * @param error Sets a custom error message that is displayed when a form is submitted. @@ -9243,11 +10018,11 @@ interface HTMLCollection { /** * Sets or retrieves the number of objects in a collection. */ - length: number; + readonly length: number; /** * Retrieves an object from various collections. */ - item(nameOrIndex?: any, optionalIndex?: any): Element; + item(index: number): Element; /** * Retrieves a select object or an object from an options collection. */ @@ -9260,18 +10035,6 @@ declare var HTMLCollection: { new(): HTMLCollection; } -interface HTMLDDElement extends HTMLElement { - /** - * Sets or retrieves whether the browser automatically performs wordwrap. - */ - noWrap: boolean; -} - -declare var HTMLDDElement: { - prototype: HTMLDDElement; - new(): HTMLDDElement; -} - interface HTMLDListElement extends HTMLElement { compact: boolean; } @@ -9281,20 +10044,8 @@ declare var HTMLDListElement: { new(): HTMLDListElement; } -interface HTMLDTElement extends HTMLElement { - /** - * Sets or retrieves whether the browser automatically performs wordwrap. - */ - noWrap: boolean; -} - -declare var HTMLDTElement: { - prototype: HTMLDTElement; - new(): HTMLDTElement; -} - interface HTMLDataListElement extends HTMLElement { - options: HTMLCollection; + options: HTMLCollectionOf; } declare var HTMLDataListElement: { @@ -9337,38 +10088,38 @@ declare var HTMLDocument: { interface HTMLElement extends Element { accessKey: string; - children: HTMLCollection; + readonly children: HTMLCollection; contentEditable: string; - dataset: DOMStringMap; + readonly dataset: DOMStringMap; dir: string; draggable: boolean; hidden: boolean; hideFocus: boolean; innerHTML: string; innerText: string; - isContentEditable: boolean; + readonly isContentEditable: boolean; lang: string; - offsetHeight: number; - offsetLeft: number; - offsetParent: Element; - offsetTop: number; - offsetWidth: number; + readonly offsetHeight: number; + readonly offsetLeft: number; + readonly offsetParent: Element; + readonly offsetTop: number; + readonly offsetWidth: number; onabort: (ev: Event) => any; onactivate: (ev: UIEvent) => any; onbeforeactivate: (ev: UIEvent) => any; - onbeforecopy: (ev: DragEvent) => any; - onbeforecut: (ev: DragEvent) => any; + onbeforecopy: (ev: ClipboardEvent) => any; + onbeforecut: (ev: ClipboardEvent) => any; onbeforedeactivate: (ev: UIEvent) => any; - onbeforepaste: (ev: DragEvent) => any; + onbeforepaste: (ev: ClipboardEvent) => any; onblur: (ev: FocusEvent) => any; oncanplay: (ev: Event) => any; oncanplaythrough: (ev: Event) => any; onchange: (ev: Event) => any; onclick: (ev: MouseEvent) => any; oncontextmenu: (ev: PointerEvent) => any; - oncopy: (ev: DragEvent) => any; + oncopy: (ev: ClipboardEvent) => any; oncuechange: (ev: Event) => any; - oncut: (ev: DragEvent) => any; + oncut: (ev: ClipboardEvent) => any; ondblclick: (ev: MouseEvent) => any; ondeactivate: (ev: UIEvent) => any; ondrag: (ev: DragEvent) => any; @@ -9380,10 +10131,11 @@ interface HTMLElement extends Element { ondrop: (ev: DragEvent) => any; ondurationchange: (ev: Event) => any; onemptied: (ev: Event) => any; - onended: (ev: Event) => any; + onended: (ev: MediaStreamErrorEvent) => any; onerror: (ev: Event) => any; onfocus: (ev: FocusEvent) => any; oninput: (ev: Event) => any; + oninvalid: (ev: Event) => any; onkeydown: (ev: KeyboardEvent) => any; onkeypress: (ev: KeyboardEvent) => any; onkeyup: (ev: KeyboardEvent) => any; @@ -9398,10 +10150,10 @@ interface HTMLElement extends Element { onmouseout: (ev: MouseEvent) => any; onmouseover: (ev: MouseEvent) => any; onmouseup: (ev: MouseEvent) => any; - onmousewheel: (ev: MouseWheelEvent) => any; + onmousewheel: (ev: WheelEvent) => any; onmscontentzoom: (ev: UIEvent) => any; onmsmanipulationstatechanged: (ev: MSManipulationEvent) => any; - onpaste: (ev: DragEvent) => any; + onpaste: (ev: ClipboardEvent) => any; onpause: (ev: Event) => any; onplay: (ev: Event) => any; onplaying: (ev: Event) => any; @@ -9422,7 +10174,7 @@ interface HTMLElement extends Element { outerHTML: string; outerText: string; spellcheck: boolean; - style: CSSStyleDeclaration; + readonly style: CSSStyleDeclaration; tabIndex: number; title: string; blur(): void; @@ -9458,10 +10210,10 @@ interface HTMLElement extends Element { addEventListener(type: "activate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecopy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecopy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforedeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforepaste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforepaste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; addEventListener(type: "canplay", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "canplaythrough", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -9469,9 +10221,9 @@ interface HTMLElement extends Element { addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void; addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "copy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "copy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "cuechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "cut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "cut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "deactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void; @@ -9483,11 +10235,12 @@ interface HTMLElement extends Element { addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "ended", listener: (ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "invalid", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; @@ -9503,8 +10256,8 @@ interface HTMLElement extends Element { addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; - addEventListener(type: "paste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousewheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; + addEventListener(type: "paste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -9566,7 +10319,7 @@ interface HTMLEmbedElement extends HTMLElement, GetSVGDocument { /** * Gets the source associated with the media element for use by the PlayToManager. */ - msPlayToSource: any; + readonly msPlayToSource: any; /** * Sets or retrieves the name of the object. */ @@ -9574,12 +10327,12 @@ interface HTMLEmbedElement extends HTMLElement, GetSVGDocument { /** * Retrieves the palette used for the embedded document. */ - palette: string; + readonly palette: string; /** * Retrieves the URL of the plug-in used to view an embedded document. */ - pluginspage: string; - readyState: string; + readonly pluginspage: string; + readonly readyState: string; /** * Sets or retrieves a URL to be loaded by the object. */ @@ -9609,19 +10362,19 @@ interface HTMLFieldSetElement extends HTMLElement { /** * Retrieves a reference to the form that the object is embedded in. */ - form: HTMLFormElement; + readonly form: HTMLFormElement; /** * Returns the error message that would be displayed if the user submits the form, or an empty string if no error message. It also triggers the standard error message, such as "this is a required field". The result is that the user sees validation messages without actually submitting. */ - validationMessage: string; + readonly validationMessage: string; /** * Returns a ValidityState object that represents the validity states of an element. */ - validity: ValidityState; + readonly validity: ValidityState; /** * Returns whether an element will successfully validate based on forms validation rules and constraints. */ - willValidate: boolean; + readonly willValidate: boolean; /** * Returns whether a form will validate when it is submitted, without having to submit it. */ @@ -9667,7 +10420,7 @@ interface HTMLFormElement extends HTMLElement { /** * Retrieves a collection, in source order, of all controls in a given form. */ - elements: HTMLCollection; + readonly elements: HTMLCollection; /** * Sets or retrieves the MIME encoding for the form. */ @@ -9679,7 +10432,7 @@ interface HTMLFormElement extends HTMLElement { /** * Sets or retrieves the number of objects in a collection. */ - length: number; + readonly length: number; /** * Sets or retrieves how to send the form data to the server. */ @@ -9738,11 +10491,11 @@ interface HTMLFrameElement extends HTMLElement, GetSVGDocument { /** * Retrieves the document object of the page or frame. */ - contentDocument: Document; + readonly contentDocument: Document; /** * Retrieves the object of the specified. */ - contentWindow: Window; + readonly contentWindow: Window; /** * Sets or retrieves whether to display a border for the frame. */ @@ -9783,10 +10536,6 @@ interface HTMLFrameElement extends HTMLElement, GetSVGDocument { * Sets or retrieves whether the frame can be scrolled. */ scrolling: string; - /** - * Sets the value indicating whether the source file of a frame or iframe has specific security restrictions applied. - */ - security: any; /** * Sets or retrieves a URL to be loaded by the object. */ @@ -9818,10 +10567,10 @@ interface HTMLFrameElement extends HTMLElement, GetSVGDocument { addEventListener(type: "activate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecopy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecopy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforedeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforepaste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforepaste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; addEventListener(type: "canplay", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "canplaythrough", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -9829,9 +10578,9 @@ interface HTMLFrameElement extends HTMLElement, GetSVGDocument { addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void; addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "copy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "copy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "cuechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "cut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "cut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "deactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void; @@ -9843,11 +10592,12 @@ interface HTMLFrameElement extends HTMLElement, GetSVGDocument { addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "ended", listener: (ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "invalid", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; @@ -9864,8 +10614,8 @@ interface HTMLFrameElement extends HTMLElement, GetSVGDocument { addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; - addEventListener(type: "paste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousewheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; + addEventListener(type: "paste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -9975,10 +10725,10 @@ interface HTMLFrameSetElement extends HTMLElement { addEventListener(type: "activate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecopy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecopy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforedeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforepaste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforepaste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforeprint", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "beforeunload", listener: (ev: BeforeUnloadEvent) => any, useCapture?: boolean): void; addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; @@ -9989,9 +10739,9 @@ interface HTMLFrameSetElement extends HTMLElement { addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void; addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "copy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "copy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "cuechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "cut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "cut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "deactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void; @@ -10003,7 +10753,7 @@ interface HTMLFrameSetElement extends HTMLElement { addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "ended", listener: (ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; @@ -10011,6 +10761,7 @@ interface HTMLFrameSetElement extends HTMLElement { addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; addEventListener(type: "hashchange", listener: (ev: HashChangeEvent) => any, useCapture?: boolean): void; addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "invalid", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; @@ -10028,13 +10779,13 @@ interface HTMLFrameSetElement extends HTMLElement { addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousewheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; addEventListener(type: "offline", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "online", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "orientationchange", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "pagehide", listener: (ev: PageTransitionEvent) => any, useCapture?: boolean): void; addEventListener(type: "pageshow", listener: (ev: PageTransitionEvent) => any, useCapture?: boolean): void; - addEventListener(type: "paste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "paste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -10113,7 +10864,6 @@ interface HTMLHeadingElement extends HTMLElement { * Sets or retrieves a value that indicates the table alignment. */ align: string; - clear: string; } declare var HTMLHeadingElement: { @@ -10146,11 +10896,11 @@ interface HTMLIFrameElement extends HTMLElement, GetSVGDocument { /** * Retrieves the document object of the page or frame. */ - contentDocument: Document; + readonly contentDocument: Document; /** * Retrieves the object of the specified. */ - contentWindow: Window; + readonly contentWindow: Window; /** * Sets or retrieves whether to display a border for the frame. */ @@ -10191,15 +10941,11 @@ interface HTMLIFrameElement extends HTMLElement, GetSVGDocument { * Raised when the object has been completely received from the server. */ onload: (ev: Event) => any; - sandbox: DOMSettableTokenList; + readonly sandbox: DOMSettableTokenList; /** * Sets or retrieves whether the frame can be scrolled. */ scrolling: string; - /** - * Sets the value indicating whether the source file of a frame or iframe has specific security restrictions applied. - */ - security: any; /** * Sets or retrieves a URL to be loaded by the object. */ @@ -10235,10 +10981,10 @@ interface HTMLIFrameElement extends HTMLElement, GetSVGDocument { addEventListener(type: "activate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecopy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecopy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforedeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforepaste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforepaste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; addEventListener(type: "canplay", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "canplaythrough", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -10246,9 +10992,9 @@ interface HTMLIFrameElement extends HTMLElement, GetSVGDocument { addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void; addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "copy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "copy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "cuechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "cut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "cut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "deactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void; @@ -10260,11 +11006,12 @@ interface HTMLIFrameElement extends HTMLElement, GetSVGDocument { addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "ended", listener: (ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "invalid", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; @@ -10281,8 +11028,8 @@ interface HTMLIFrameElement extends HTMLElement, GetSVGDocument { addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; - addEventListener(type: "paste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousewheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; + addEventListener(type: "paste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -10339,9 +11086,9 @@ interface HTMLImageElement extends HTMLElement { /** * Retrieves whether the object is fully loaded. */ - complete: boolean; + readonly complete: boolean; crossOrigin: string; - currentSrc: string; + readonly currentSrc: string; /** * Sets or retrieves the height of the object. */ @@ -10358,6 +11105,7 @@ interface HTMLImageElement extends HTMLElement { * Sets or retrieves a Uniform Resource Identifier (URI) to a long description of the object. */ longDesc: string; + lowsrc: string; /** * Gets or sets whether the DLNA PlayTo device is available. */ @@ -10370,7 +11118,7 @@ interface HTMLImageElement extends HTMLElement { /** * Gets the source associated with the media element for use by the PlayToManager. */ - msPlayToSource: any; + readonly msPlayToSource: any; /** * Sets or retrieves the name of the object. */ @@ -10378,11 +11126,12 @@ interface HTMLImageElement extends HTMLElement { /** * The original height of the image resource before sizing. */ - naturalHeight: number; + readonly naturalHeight: number; /** * The original width of the image resource before sizing. */ - naturalWidth: number; + readonly naturalWidth: number; + sizes: string; /** * The address or URL of the a media resource that is to be considered. */ @@ -10400,8 +11149,8 @@ interface HTMLImageElement extends HTMLElement { * Sets or retrieves the width of the object. */ width: number; - x: number; - y: number; + readonly x: number; + readonly y: number; msGetAsCastingSource(): any; } @@ -10443,7 +11192,7 @@ interface HTMLInputElement extends HTMLElement { /** * Retrieves whether the object is fully loaded. */ - complete: boolean; + readonly complete: boolean; /** * Sets or retrieves the state of the check box or radio button. */ @@ -10456,11 +11205,11 @@ interface HTMLInputElement extends HTMLElement { /** * Returns a FileList object on a file type input object. */ - files: FileList; + readonly files: FileList; /** * Retrieves a reference to the form that the object is embedded in. */ - form: HTMLFormElement; + readonly form: HTMLFormElement; /** * Overrides the action attribute (where the data on a form is sent) on the parent form element. */ @@ -10493,7 +11242,7 @@ interface HTMLInputElement extends HTMLElement { /** * Specifies the ID of a pre-defined datalist of options for an input element. */ - list: HTMLElement; + readonly list: HTMLElement; /** * Defines the maximum acceptable value for an input element with type="number".When used with the min and step attributes, lets you control the range and increment (such as only even numbers) that the user can enter into an input field. */ @@ -10527,6 +11276,7 @@ interface HTMLInputElement extends HTMLElement { * When present, marks an element that can't be submitted without a value. */ required: boolean; + selectionDirection: string; /** * Gets or sets the end position or offset of a text selection. */ @@ -10556,11 +11306,11 @@ interface HTMLInputElement extends HTMLElement { /** * Returns the error message that would be displayed if the user submits the form, or an empty string if no error message. It also triggers the standard error message, such as "this is a required field". The result is that the user sees validation messages without actually submitting. */ - validationMessage: string; + readonly validationMessage: string; /** * Returns a ValidityState object that represents the validity states of an element. */ - validity: ValidityState; + readonly validity: ValidityState; /** * Returns the value of the data at the cursor's current position. */ @@ -10574,6 +11324,7 @@ interface HTMLInputElement extends HTMLElement { * Sets or retrieves the vertical margin for the object. */ vspace: number; + webkitdirectory: boolean; /** * Sets or retrieves the width of the object. */ @@ -10581,15 +11332,12 @@ interface HTMLInputElement extends HTMLElement { /** * Returns whether an element will successfully validate based on forms validation rules and constraints. */ - willValidate: boolean; + readonly willValidate: boolean; + minLength: number; /** * Returns whether a form will validate when it is submitted, without having to submit it. */ checkValidity(): boolean; - /** - * Creates a TextRange object for the element. - */ - createTextRange(): TextRange; /** * Makes the selection equal to the current object. */ @@ -10604,7 +11352,7 @@ interface HTMLInputElement extends HTMLElement { * @param start The offset into the text field for the start of the selection. * @param end The offset into the text field for the end of the selection. */ - setSelectionRange(start: number, end: number): void; + setSelectionRange(start?: number, end?: number, direction?: string): void; /** * Decrements a range input control's value by the value given by the Step attribute. If the optional parameter is used, it will decrement the input control's step value multiplied by the parameter's value. * @param n Value to decrement the value by. @@ -10622,23 +11370,6 @@ declare var HTMLInputElement: { new(): HTMLInputElement; } -interface HTMLIsIndexElement extends HTMLElement { - /** - * Sets or retrieves the URL to which the form content is sent for processing. - */ - action: string; - /** - * Retrieves a reference to the form that the object is embedded in. - */ - form: HTMLFormElement; - prompt: string; -} - -declare var HTMLIsIndexElement: { - prototype: HTMLIsIndexElement; - new(): HTMLIsIndexElement; -} - interface HTMLLIElement extends HTMLElement { type: string; /** @@ -10656,7 +11387,7 @@ interface HTMLLabelElement extends HTMLElement { /** * Retrieves a reference to the form that the object is embedded in. */ - form: HTMLFormElement; + readonly form: HTMLFormElement; /** * Sets or retrieves the object to which the given label object is assigned. */ @@ -10676,7 +11407,7 @@ interface HTMLLegendElement extends HTMLElement { /** * Retrieves a reference to the form that the object is embedded in. */ - form: HTMLFormElement; + readonly form: HTMLFormElement; } declare var HTMLLegendElement: { @@ -10718,6 +11449,7 @@ interface HTMLLinkElement extends HTMLElement, LinkStyle { * Sets or retrieves the MIME type of the object. */ type: string; + import?: Document; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -10730,7 +11462,7 @@ interface HTMLMapElement extends HTMLElement { /** * Retrieves a collection of the area objects defined for the given map object. */ - areas: HTMLAreasCollection; + readonly areas: HTMLAreasCollection; /** * Sets or retrieves the name of the object. */ @@ -10782,10 +11514,10 @@ interface HTMLMarqueeElement extends HTMLElement { addEventListener(type: "activate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecopy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecopy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforedeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforepaste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforepaste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; addEventListener(type: "bounce", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "canplay", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -10794,9 +11526,9 @@ interface HTMLMarqueeElement extends HTMLElement { addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void; addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "copy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "copy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "cuechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "cut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "cut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "deactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void; @@ -10808,12 +11540,13 @@ interface HTMLMarqueeElement extends HTMLElement { addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "ended", listener: (ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "finish", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "invalid", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; @@ -10829,8 +11562,8 @@ interface HTMLMarqueeElement extends HTMLElement { addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; - addEventListener(type: "paste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousewheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; + addEventListener(type: "paste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -10876,7 +11609,7 @@ interface HTMLMediaElement extends HTMLElement { /** * Returns an AudioTrackList object with the audio tracks for a given video element. */ - audioTracks: AudioTrackList; + readonly audioTracks: AudioTrackList; /** * Gets or sets a value that indicates whether to start playing the media automatically. */ @@ -10884,15 +11617,16 @@ interface HTMLMediaElement extends HTMLElement { /** * Gets a collection of buffered time ranges. */ - buffered: TimeRanges; + readonly buffered: TimeRanges; /** * Gets or sets a flag that indicates whether the client provides a set of controls for the media (in case the developer does not include controls for the player). */ controls: boolean; + crossOrigin: string; /** * Gets the address or URL of the current media resource that is selected by IHTMLMediaElement. */ - currentSrc: string; + readonly currentSrc: string; /** * Gets or sets the current playback position, in seconds. */ @@ -10905,19 +11639,20 @@ interface HTMLMediaElement extends HTMLElement { /** * Returns the duration in seconds of the current media resource. A NaN value is returned if duration is not available, or Infinity if the media resource is streaming. */ - duration: number; + readonly duration: number; /** * Gets information about whether the playback has ended or not. */ - ended: boolean; + readonly ended: boolean; /** * Returns an object representing the current error state of the audio or video element. */ - error: MediaError; + readonly error: MediaError; /** * Gets or sets a flag to specify whether playback should restart after it completes. */ loop: boolean; + readonly mediaKeys: MediaKeys; /** * Specifies the purpose of the audio or video media, such as background audio or alerts. */ @@ -10926,11 +11661,11 @@ interface HTMLMediaElement extends HTMLElement { * Specifies the output device id that the audio will be sent to. */ msAudioDeviceType: string; - msGraphicsTrustStatus: MSGraphicsTrust; + readonly msGraphicsTrustStatus: MSGraphicsTrust; /** * Gets the MSMediaKeys object, which is used for decrypting media data, that is associated with this media element. */ - msKeys: MSMediaKeys; + readonly msKeys: MSMediaKeys; /** * Gets or sets whether the DLNA PlayTo device is available. */ @@ -10946,7 +11681,7 @@ interface HTMLMediaElement extends HTMLElement { /** * Gets the source associated with the media element for use by the PlayToManager. */ - msPlayToSource: any; + readonly msPlayToSource: any; /** * Specifies whether or not to enable low-latency playback on the media element. */ @@ -10958,12 +11693,13 @@ interface HTMLMediaElement extends HTMLElement { /** * Gets the current network activity for the element. */ - networkState: number; + readonly networkState: number; + onencrypted: (ev: MediaEncryptedEvent) => any; onmsneedkey: (ev: MSMediaKeyNeededEvent) => any; /** * Gets a flag that specifies whether playback is paused. */ - paused: boolean; + readonly paused: boolean; /** * Gets or sets the current rate of speed for the media resource to play. This speed is expressed as a multiple of the normal speed of the media resource. */ @@ -10971,7 +11707,7 @@ interface HTMLMediaElement extends HTMLElement { /** * Gets TimeRanges for the current media resource that has been played. */ - played: TimeRanges; + readonly played: TimeRanges; /** * Gets or sets the current playback position, in seconds. */ @@ -10980,17 +11716,18 @@ interface HTMLMediaElement extends HTMLElement { /** * Returns a TimeRanges object that represents the ranges of the current media resource that can be seeked. */ - seekable: TimeRanges; + readonly seekable: TimeRanges; /** * Gets a flag that indicates whether the the client is currently moving to a new playback position in the media resource. */ - seeking: boolean; + readonly seeking: boolean; /** * The address or URL of the a media resource that is to be considered. */ src: string; - textTracks: TextTrackList; - videoTracks: VideoTrackList; + srcObject: MediaStream; + readonly textTracks: TextTrackList; + readonly videoTracks: VideoTrackList; /** * Gets or sets the volume level for audio portions of the media element. */ @@ -11026,15 +11763,16 @@ interface HTMLMediaElement extends HTMLElement { * Loads and starts playback of a media resource. */ play(): void; - HAVE_CURRENT_DATA: number; - HAVE_ENOUGH_DATA: number; - HAVE_FUTURE_DATA: number; - HAVE_METADATA: number; - HAVE_NOTHING: number; - NETWORK_EMPTY: number; - NETWORK_IDLE: number; - NETWORK_LOADING: number; - NETWORK_NO_SOURCE: number; + setMediaKeys(mediaKeys: MediaKeys): PromiseLike; + readonly HAVE_CURRENT_DATA: number; + readonly HAVE_ENOUGH_DATA: number; + readonly HAVE_FUTURE_DATA: number; + readonly HAVE_METADATA: number; + readonly HAVE_NOTHING: number; + readonly NETWORK_EMPTY: number; + readonly NETWORK_IDLE: number; + readonly NETWORK_LOADING: number; + readonly NETWORK_NO_SOURCE: number; addEventListener(type: "MSContentZoom", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; addEventListener(type: "MSGestureDoubleTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; @@ -11058,10 +11796,10 @@ interface HTMLMediaElement extends HTMLElement { addEventListener(type: "activate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecopy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecopy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforedeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforepaste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforepaste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; addEventListener(type: "canplay", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "canplaythrough", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -11069,9 +11807,9 @@ interface HTMLMediaElement extends HTMLElement { addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void; addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "copy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "copy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "cuechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "cut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "cut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "deactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void; @@ -11083,11 +11821,13 @@ interface HTMLMediaElement extends HTMLElement { addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "encrypted", listener: (ev: MediaEncryptedEvent) => any, useCapture?: boolean): void; + addEventListener(type: "ended", listener: (ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "invalid", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; @@ -11103,9 +11843,9 @@ interface HTMLMediaElement extends HTMLElement { addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousewheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; addEventListener(type: "msneedkey", listener: (ev: MSMediaKeyNeededEvent) => any, useCapture?: boolean): void; - addEventListener(type: "paste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "paste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -11144,15 +11884,15 @@ interface HTMLMediaElement extends HTMLElement { declare var HTMLMediaElement: { prototype: HTMLMediaElement; new(): HTMLMediaElement; - HAVE_CURRENT_DATA: number; - HAVE_ENOUGH_DATA: number; - HAVE_FUTURE_DATA: number; - HAVE_METADATA: number; - HAVE_NOTHING: number; - NETWORK_EMPTY: number; - NETWORK_IDLE: number; - NETWORK_LOADING: number; - NETWORK_NO_SOURCE: number; + readonly HAVE_CURRENT_DATA: number; + readonly HAVE_ENOUGH_DATA: number; + readonly HAVE_FUTURE_DATA: number; + readonly HAVE_METADATA: number; + readonly HAVE_NOTHING: number; + readonly NETWORK_EMPTY: number; + readonly NETWORK_IDLE: number; + readonly NETWORK_LOADING: number; + readonly NETWORK_NO_SOURCE: number; } interface HTMLMenuElement extends HTMLElement { @@ -11197,6 +11937,20 @@ declare var HTMLMetaElement: { new(): HTMLMetaElement; } +interface HTMLMeterElement extends HTMLElement { + high: number; + low: number; + max: number; + min: number; + optimum: number; + value: number; +} + +declare var HTMLMeterElement: { + prototype: HTMLMeterElement; + new(): HTMLMeterElement; +} + interface HTMLModElement extends HTMLElement { /** * Sets or retrieves reference information about the object. @@ -11213,15 +11967,6 @@ declare var HTMLModElement: { new(): HTMLModElement; } -interface HTMLNextIdElement extends HTMLElement { - n: string; -} - -declare var HTMLNextIdElement: { - prototype: HTMLNextIdElement; - new(): HTMLNextIdElement; -} - interface HTMLOListElement extends HTMLElement { compact: boolean; /** @@ -11240,7 +11985,7 @@ interface HTMLObjectElement extends HTMLElement, GetSVGDocument { /** * Retrieves a string of the URL where the object tag can be found. This is often the href of the document that the object is in, or the value set by a base element. */ - BaseHref: string; + readonly BaseHref: string; align: string; /** * Sets or retrieves a text alternative to the graphic. @@ -11270,7 +12015,7 @@ interface HTMLObjectElement extends HTMLElement, GetSVGDocument { /** * Retrieves the document object of the page or frame. */ - contentDocument: Document; + readonly contentDocument: Document; /** * Sets or retrieves the URL that references the data of the object. */ @@ -11279,7 +12024,7 @@ interface HTMLObjectElement extends HTMLElement, GetSVGDocument { /** * Retrieves a reference to the form that the object is embedded in. */ - form: HTMLFormElement; + readonly form: HTMLFormElement; /** * Sets or retrieves the height of the object. */ @@ -11300,7 +12045,7 @@ interface HTMLObjectElement extends HTMLElement, GetSVGDocument { /** * Gets the source associated with the media element for use by the PlayToManager. */ - msPlayToSource: any; + readonly msPlayToSource: any; /** * Sets or retrieves the name of the object. */ @@ -11308,8 +12053,8 @@ interface HTMLObjectElement extends HTMLElement, GetSVGDocument { /** * Retrieves the contained object. */ - object: any; - readyState: number; + readonly object: any; + readonly readyState: number; /** * Sets or retrieves a message to be displayed while an object is loading. */ @@ -11325,11 +12070,11 @@ interface HTMLObjectElement extends HTMLElement, GetSVGDocument { /** * Returns the error message that would be displayed if the user submits the form, or an empty string if no error message. It also triggers the standard error message, such as "this is a required field". The result is that the user sees validation messages without actually submitting. */ - validationMessage: string; + readonly validationMessage: string; /** * Returns a ValidityState object that represents the validity states of an element. */ - validity: ValidityState; + readonly validity: ValidityState; vspace: number; /** * Sets or retrieves the width of the object. @@ -11338,7 +12083,7 @@ interface HTMLObjectElement extends HTMLElement, GetSVGDocument { /** * Returns whether an element will successfully validate based on forms validation rules and constraints. */ - willValidate: boolean; + readonly willValidate: boolean; /** * Returns whether a form will validate when it is submitted, without having to submit it. */ @@ -11365,11 +12110,11 @@ interface HTMLOptGroupElement extends HTMLElement { /** * Retrieves a reference to the form that the object is embedded in. */ - form: HTMLFormElement; + readonly form: HTMLFormElement; /** * Sets or retrieves the ordinal position of an option in a list box. */ - index: number; + readonly index: number; /** * Sets or retrieves a value that you can use to implement your own label functionality for the object. */ @@ -11381,7 +12126,7 @@ interface HTMLOptGroupElement extends HTMLElement { /** * Sets or retrieves the text string specified by the option tag. */ - text: string; + readonly text: string; /** * Sets or retrieves the value which is returned to the server when the form control is submitted. */ @@ -11402,11 +12147,11 @@ interface HTMLOptionElement extends HTMLElement { /** * Retrieves a reference to the form that the object is embedded in. */ - form: HTMLFormElement; + readonly form: HTMLFormElement; /** * Sets or retrieves the ordinal position of an option in a list box. */ - index: number; + readonly index: number; /** * Sets or retrieves a value that you can use to implement your own label functionality for the object. */ @@ -11431,6 +12176,18 @@ declare var HTMLOptionElement: { create(): HTMLOptionElement; } +interface HTMLOptionsCollection extends HTMLCollection { + length: number; + selectedIndex: number; + add(element: HTMLOptionElement | HTMLOptGroupElement, before?: HTMLElement | number): void; + remove(index: number): void; +} + +declare var HTMLOptionsCollection: { + prototype: HTMLOptionsCollection; + new(): HTMLOptionsCollection; +} + interface HTMLParagraphElement extends HTMLElement { /** * Sets or retrieves how the object is aligned with adjacent text. @@ -11468,28 +12225,15 @@ declare var HTMLParamElement: { new(): HTMLParamElement; } -interface HTMLPhraseElement extends HTMLElement { - /** - * Sets or retrieves reference information about the object. - */ - cite: string; - /** - * Sets or retrieves the date and time of a modification to the object. - */ - dateTime: string; +interface HTMLPictureElement extends HTMLElement { } -declare var HTMLPhraseElement: { - prototype: HTMLPhraseElement; - new(): HTMLPhraseElement; +declare var HTMLPictureElement: { + prototype: HTMLPictureElement; + new(): HTMLPictureElement; } interface HTMLPreElement extends HTMLElement { - /** - * Indicates a citation by rendering text in italic type. - */ - cite: string; - clear: string; /** * Sets or gets a value that you can use to implement your own width functionality for the object. */ @@ -11505,7 +12249,7 @@ interface HTMLProgressElement extends HTMLElement { /** * Retrieves a reference to the form that the object is embedded in. */ - form: HTMLFormElement; + readonly form: HTMLFormElement; /** * Defines the maximum, or "done" value for a progress element. */ @@ -11513,7 +12257,7 @@ interface HTMLProgressElement extends HTMLElement { /** * Returns the quotient of value/max when the value attribute is set (determinate progress bar), or -1 when the value attribute is missing (indeterminate progress bar). */ - position: number; + readonly position: number; /** * Sets or gets the current value of a progress element. The value must be a non-negative number between 0 and the max value. */ @@ -11530,10 +12274,6 @@ interface HTMLQuoteElement extends HTMLElement { * Sets or retrieves reference information about the object. */ cite: string; - /** - * Sets or retrieves the date and time of a modification to the object. - */ - dateTime: string; } declare var HTMLQuoteElement: { @@ -11587,7 +12327,7 @@ interface HTMLSelectElement extends HTMLElement { /** * Retrieves a reference to the form that the object is embedded in. */ - form: HTMLFormElement; + readonly form: HTMLFormElement; /** * Sets or retrieves the number of objects in a collection. */ @@ -11600,7 +12340,7 @@ interface HTMLSelectElement extends HTMLElement { * Sets or retrieves the name of the object. */ name: string; - options: HTMLCollection; + options: HTMLCollectionOf; /** * When present, marks an element that can't be submitted without a value. */ @@ -11609,6 +12349,7 @@ interface HTMLSelectElement extends HTMLElement { * Sets or retrieves the index of the selected option in a select object. */ selectedIndex: number; + selectedOptions: HTMLCollectionOf; /** * Sets or retrieves the number of rows in the list box. */ @@ -11616,15 +12357,15 @@ interface HTMLSelectElement extends HTMLElement { /** * Retrieves the type of select control based on the value of the MULTIPLE attribute. */ - type: string; + readonly type: string; /** * Returns the error message that would be displayed if the user submits the form, or an empty string if no error message. It also triggers the standard error message, such as "this is a required field". The result is that the user sees validation messages without actually submitting. */ - validationMessage: string; + readonly validationMessage: string; /** * Returns a ValidityState object that represents the validity states of an element. */ - validity: ValidityState; + readonly validity: ValidityState; /** * Sets or retrieves the value which is returned to the server when the form control is submitted. */ @@ -11632,8 +12373,7 @@ interface HTMLSelectElement extends HTMLElement { /** * Returns whether an element will successfully validate based on forms validation rules and constraints. */ - willValidate: boolean; - selectedOptions: HTMLCollection; + readonly willValidate: boolean; /** * Adds an element to the areas, controlRange, or options collection. * @param element Variant of type Number that specifies the index position in the collection where the element is placed. If no value is given, the method places the element at the end of the collection. @@ -11679,10 +12419,12 @@ interface HTMLSourceElement extends HTMLElement { */ media: string; msKeySystem: string; + sizes: string; /** * The address or URL of the a media resource that is to be considered. */ src: string; + srcset: string; /** * Gets or sets the MIME type of a media resource. */ @@ -11703,6 +12445,7 @@ declare var HTMLSpanElement: { } interface HTMLStyleElement extends HTMLElement, LinkStyle { + disabled: boolean; /** * Sets or retrieves the media type. */ @@ -11752,7 +12495,7 @@ interface HTMLTableCellElement extends HTMLElement, HTMLTableAlignment { /** * Retrieves the position of the object in the cells collection of a row. */ - cellIndex: number; + readonly cellIndex: number; /** * Sets or retrieves the number columns in the table that the object should span. */ @@ -11859,7 +12602,7 @@ interface HTMLTableElement extends HTMLElement { /** * Sets or retrieves the number of horizontal rows contained in the object. */ - rows: HTMLCollection; + rows: HTMLCollectionOf; /** * Sets or retrieves which dividing lines (inner borders) are displayed. */ @@ -11871,7 +12614,7 @@ interface HTMLTableElement extends HTMLElement { /** * Retrieves a collection of all tBody objects in the table. Objects in this collection are in source order. */ - tBodies: HTMLCollection; + tBodies: HTMLCollectionOf; /** * Retrieves the tFoot object of the table. */ @@ -11950,7 +12693,7 @@ interface HTMLTableRowElement extends HTMLElement, HTMLTableAlignment { /** * Retrieves a collection of all cells in the table row. */ - cells: HTMLCollection; + cells: HTMLCollectionOf; /** * Sets or retrieves the height of the object. */ @@ -11958,11 +12701,11 @@ interface HTMLTableRowElement extends HTMLElement, HTMLTableAlignment { /** * Retrieves the position of the object in the rows collection for the table. */ - rowIndex: number; + readonly rowIndex: number; /** * Retrieves the position of the object in the collection. */ - sectionRowIndex: number; + readonly sectionRowIndex: number; /** * Removes the specified cell from the table row, as well as from the cells collection. * @param index Number that specifies the zero-based position of the cell to remove from the table row. If no value is provided, the last cell in the cells collection is deleted. @@ -11972,7 +12715,7 @@ interface HTMLTableRowElement extends HTMLElement, HTMLTableAlignment { * Creates a new cell in the table row, and adds the cell to the cells collection. * @param index Number that specifies where to insert the cell in the tr. The default value is -1, which appends the new cell to the end of the cells collection. */ - insertCell(index?: number): HTMLTableCellElement; + insertCell(index?: number): HTMLTableDataCellElement; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -11989,7 +12732,7 @@ interface HTMLTableSectionElement extends HTMLElement, HTMLTableAlignment { /** * Sets or retrieves the number of horizontal rows contained in the object. */ - rows: HTMLCollection; + rows: HTMLCollectionOf; /** * Removes the specified row (tr) from the element and from the rows collection. * @param index Number that specifies the zero-based position in the rows collection of the row to remove. @@ -12008,6 +12751,15 @@ declare var HTMLTableSectionElement: { new(): HTMLTableSectionElement; } +interface HTMLTemplateElement extends HTMLElement { + readonly content: DocumentFragment; +} + +declare var HTMLTemplateElement: { + prototype: HTMLTemplateElement; + new(): HTMLTemplateElement; +} + interface HTMLTextAreaElement extends HTMLElement { /** * Provides a way to direct a user to a specific field when a document loads. This can provide both direction and convenience for a user, reducing the need to click or tab to a field when a page opens. This attribute is true when present on an element, and false when missing. @@ -12025,7 +12777,7 @@ interface HTMLTextAreaElement extends HTMLElement { /** * Retrieves a reference to the form that the object is embedded in. */ - form: HTMLFormElement; + readonly form: HTMLFormElement; /** * Sets or retrieves the maximum number of characters that the user can enter in a text control. */ @@ -12065,15 +12817,15 @@ interface HTMLTextAreaElement extends HTMLElement { /** * Retrieves the type of control. */ - type: string; + readonly type: string; /** * Returns the error message that would be displayed if the user submits the form, or an empty string if no error message. It also triggers the standard error message, such as "this is a required field". The result is that the user sees validation messages without actually submitting. */ - validationMessage: string; + readonly validationMessage: string; /** * Returns a ValidityState object that represents the validity states of an element. */ - validity: ValidityState; + readonly validity: ValidityState; /** * Retrieves or sets the text in the entry field of the textArea element. */ @@ -12081,19 +12833,16 @@ interface HTMLTextAreaElement extends HTMLElement { /** * Returns whether an element will successfully validate based on forms validation rules and constraints. */ - willValidate: boolean; + readonly willValidate: boolean; /** * Sets or retrieves how to handle wordwrapping in the object. */ wrap: string; + minLength: number; /** * Returns whether a form will validate when it is submitted, without having to submit it. */ checkValidity(): boolean; - /** - * Creates a TextRange object for the element. - */ - createTextRange(): TextRange; /** * Highlights the input area of a form element. */ @@ -12132,23 +12881,23 @@ interface HTMLTrackElement extends HTMLElement { default: boolean; kind: string; label: string; - readyState: number; + readonly readyState: number; src: string; srclang: string; - track: TextTrack; - ERROR: number; - LOADED: number; - LOADING: number; - NONE: number; + readonly track: TextTrack; + readonly ERROR: number; + readonly LOADED: number; + readonly LOADING: number; + readonly NONE: number; } declare var HTMLTrackElement: { prototype: HTMLTrackElement; new(): HTMLTrackElement; - ERROR: number; - LOADED: number; - LOADING: number; - NONE: number; + readonly ERROR: number; + readonly LOADED: number; + readonly LOADING: number; + readonly NONE: number; } interface HTMLUListElement extends HTMLElement { @@ -12175,8 +12924,8 @@ interface HTMLVideoElement extends HTMLMediaElement { */ height: number; msHorizontalMirror: boolean; - msIsLayoutOptimalForPlayback: boolean; - msIsStereo3D: boolean; + readonly msIsLayoutOptimalForPlayback: boolean; + readonly msIsStereo3D: boolean; msStereo3DPackingMode: string; msStereo3DRenderMode: string; msZoom: boolean; @@ -12190,13 +12939,13 @@ interface HTMLVideoElement extends HTMLMediaElement { /** * Gets the intrinsic height of a video in CSS pixels, or zero if the dimensions are not known. */ - videoHeight: number; + readonly videoHeight: number; /** * Gets the intrinsic width of a video in CSS pixels, or zero if the dimensions are not known. */ - videoWidth: number; - webkitDisplayingFullscreen: boolean; - webkitSupportsFullscreen: boolean; + readonly videoWidth: number; + readonly webkitDisplayingFullscreen: boolean; + readonly webkitSupportsFullscreen: boolean; /** * Gets or sets the width of the video element. */ @@ -12235,10 +12984,10 @@ interface HTMLVideoElement extends HTMLMediaElement { addEventListener(type: "activate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecopy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecopy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforedeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforepaste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforepaste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; addEventListener(type: "canplay", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "canplaythrough", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -12246,9 +12995,9 @@ interface HTMLVideoElement extends HTMLMediaElement { addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void; addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "copy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "copy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "cuechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "cut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "cut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "deactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void; @@ -12260,11 +13009,13 @@ interface HTMLVideoElement extends HTMLMediaElement { addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "encrypted", listener: (ev: MediaEncryptedEvent) => any, useCapture?: boolean): void; + addEventListener(type: "ended", listener: (ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "invalid", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; @@ -12280,9 +13031,9 @@ interface HTMLVideoElement extends HTMLMediaElement { addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousewheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; addEventListener(type: "msneedkey", listener: (ev: MSMediaKeyNeededEvent) => any, useCapture?: boolean): void; - addEventListener(type: "paste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "paste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -12324,8 +13075,8 @@ declare var HTMLVideoElement: { } interface HashChangeEvent extends Event { - newURL: string; - oldURL: string; + readonly newURL: string; + readonly oldURL: string; } declare var HashChangeEvent: { @@ -12334,8 +13085,8 @@ declare var HashChangeEvent: { } interface History { - length: number; - state: any; + readonly length: number; + readonly state: any; back(distance?: any): void; forward(distance?: any): void; go(delta?: any): void; @@ -12349,31 +13100,31 @@ declare var History: { } interface IDBCursor { - direction: string; - key: any; - primaryKey: any; + readonly direction: string; + key: IDBKeyRange | IDBValidKey; + readonly primaryKey: any; source: IDBObjectStore | IDBIndex; advance(count: number): void; - continue(key?: any): void; + continue(key?: IDBKeyRange | IDBValidKey): void; delete(): IDBRequest; update(value: any): IDBRequest; - NEXT: string; - NEXT_NO_DUPLICATE: string; - PREV: string; - PREV_NO_DUPLICATE: string; + readonly NEXT: string; + readonly NEXT_NO_DUPLICATE: string; + readonly PREV: string; + readonly PREV_NO_DUPLICATE: string; } declare var IDBCursor: { prototype: IDBCursor; new(): IDBCursor; - NEXT: string; - NEXT_NO_DUPLICATE: string; - PREV: string; - PREV_NO_DUPLICATE: string; + readonly NEXT: string; + readonly NEXT_NO_DUPLICATE: string; + readonly PREV: string; + readonly PREV_NO_DUPLICATE: string; } interface IDBCursorWithValue extends IDBCursor { - value: any; + readonly value: any; } declare var IDBCursorWithValue: { @@ -12382,15 +13133,17 @@ declare var IDBCursorWithValue: { } interface IDBDatabase extends EventTarget { - name: string; - objectStoreNames: DOMStringList; + readonly name: string; + readonly objectStoreNames: DOMStringList; onabort: (ev: Event) => any; onerror: (ev: Event) => any; version: number; + onversionchange: (ev: IDBVersionChangeEvent) => any; close(): void; createObjectStore(name: string, optionalParameters?: IDBObjectStoreParameters): IDBObjectStore; 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: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; @@ -12414,15 +13167,15 @@ declare var IDBFactory: { interface IDBIndex { keyPath: string | string[]; - name: string; - objectStore: IDBObjectStore; - unique: boolean; + readonly name: string; + readonly objectStore: IDBObjectStore; + readonly unique: boolean; multiEntry: boolean; - count(key?: any): IDBRequest; - get(key: any): IDBRequest; - getKey(key: any): IDBRequest; - openCursor(range?: IDBKeyRange, direction?: string): IDBRequest; - openKeyCursor(range?: IDBKeyRange, direction?: string): IDBRequest; + count(key?: IDBKeyRange | IDBValidKey): IDBRequest; + get(key: IDBKeyRange | IDBValidKey): IDBRequest; + getKey(key: IDBKeyRange | IDBValidKey): IDBRequest; + openCursor(range?: IDBKeyRange | IDBValidKey, direction?: string): IDBRequest; + openKeyCursor(range?: IDBKeyRange | IDBValidKey, direction?: string): IDBRequest; } declare var IDBIndex: { @@ -12431,37 +13184,37 @@ declare var IDBIndex: { } interface IDBKeyRange { - lower: any; - lowerOpen: boolean; - upper: any; - upperOpen: boolean; + readonly lower: any; + readonly lowerOpen: boolean; + readonly upper: any; + readonly upperOpen: boolean; } declare var IDBKeyRange: { prototype: IDBKeyRange; new(): IDBKeyRange; bound(lower: any, upper: any, lowerOpen?: boolean, upperOpen?: boolean): IDBKeyRange; - lowerBound(bound: any, open?: boolean): IDBKeyRange; + lowerBound(lower: any, open?: boolean): IDBKeyRange; only(value: any): IDBKeyRange; - upperBound(bound: any, open?: boolean): IDBKeyRange; + upperBound(upper: any, open?: boolean): IDBKeyRange; } interface IDBObjectStore { - indexNames: DOMStringList; + readonly indexNames: DOMStringList; keyPath: string | string[]; - name: string; - transaction: IDBTransaction; + readonly name: string; + readonly transaction: IDBTransaction; autoIncrement: boolean; - add(value: any, key?: any): IDBRequest; + add(value: any, key?: IDBKeyRange | IDBValidKey): IDBRequest; clear(): IDBRequest; - count(key?: any): IDBRequest; + count(key?: IDBKeyRange | IDBValidKey): IDBRequest; createIndex(name: string, keyPath: string | string[], optionalParameters?: IDBIndexParameters): IDBIndex; - delete(key: any): IDBRequest; + delete(key: IDBKeyRange | IDBValidKey): IDBRequest; deleteIndex(indexName: string): void; get(key: any): IDBRequest; index(name: string): IDBIndex; - openCursor(range?: any, direction?: string): IDBRequest; - put(value: any, key?: any): IDBRequest; + openCursor(range?: IDBKeyRange | IDBValidKey, direction?: string): IDBRequest; + put(value: any, key?: IDBKeyRange | IDBValidKey): IDBRequest; } declare var IDBObjectStore: { @@ -12485,13 +13238,13 @@ declare var IDBOpenDBRequest: { } interface IDBRequest extends EventTarget { - error: DOMError; + readonly error: DOMError; onerror: (ev: Event) => any; onsuccess: (ev: Event) => any; - readyState: string; - result: any; + readonly readyState: string; + readonly result: any; source: IDBObjectStore | IDBIndex | IDBCursor; - transaction: IDBTransaction; + 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: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; @@ -12503,17 +13256,17 @@ declare var IDBRequest: { } interface IDBTransaction extends EventTarget { - db: IDBDatabase; - error: DOMError; - mode: string; + readonly db: IDBDatabase; + readonly error: DOMError; + readonly mode: string; onabort: (ev: Event) => any; oncomplete: (ev: Event) => any; onerror: (ev: Event) => any; abort(): void; objectStore(name: string): IDBObjectStore; - READ_ONLY: string; - READ_WRITE: string; - VERSION_CHANGE: string; + 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; @@ -12523,14 +13276,14 @@ interface IDBTransaction extends EventTarget { declare var IDBTransaction: { prototype: IDBTransaction; new(): IDBTransaction; - READ_ONLY: string; - READ_WRITE: string; - VERSION_CHANGE: string; + readonly READ_ONLY: string; + readonly READ_WRITE: string; + readonly VERSION_CHANGE: string; } interface IDBVersionChangeEvent extends Event { - newVersion: number; - oldVersion: number; + readonly newVersion: number; + readonly oldVersion: number; } declare var IDBVersionChangeEvent: { @@ -12540,8 +13293,8 @@ declare var IDBVersionChangeEvent: { interface ImageData { data: Uint8ClampedArray; - height: number; - width: number; + readonly height: number; + readonly width: number; } declare var ImageData: { @@ -12551,37 +13304,47 @@ declare var ImageData: { } interface KeyboardEvent extends UIEvent { - altKey: boolean; - char: string; - charCode: number; - ctrlKey: boolean; - key: string; - keyCode: number; - locale: string; - location: number; - metaKey: boolean; - repeat: boolean; - shiftKey: boolean; - which: number; + readonly altKey: boolean; + readonly char: string; + readonly charCode: number; + readonly ctrlKey: boolean; + readonly key: string; + readonly keyCode: number; + readonly locale: string; + readonly location: number; + readonly metaKey: boolean; + readonly repeat: boolean; + readonly shiftKey: boolean; + readonly which: number; getModifierState(keyArg: string): boolean; initKeyboardEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, keyArg: string, locationArg: number, modifiersListArg: string, repeat: boolean, locale: string): void; - DOM_KEY_LOCATION_JOYSTICK: number; - DOM_KEY_LOCATION_LEFT: number; - DOM_KEY_LOCATION_MOBILE: number; - DOM_KEY_LOCATION_NUMPAD: number; - DOM_KEY_LOCATION_RIGHT: number; - DOM_KEY_LOCATION_STANDARD: number; + readonly DOM_KEY_LOCATION_JOYSTICK: number; + readonly DOM_KEY_LOCATION_LEFT: number; + readonly DOM_KEY_LOCATION_MOBILE: number; + readonly DOM_KEY_LOCATION_NUMPAD: number; + readonly DOM_KEY_LOCATION_RIGHT: number; + readonly DOM_KEY_LOCATION_STANDARD: number; } declare var KeyboardEvent: { prototype: KeyboardEvent; new(typeArg: string, eventInitDict?: KeyboardEventInit): KeyboardEvent; - DOM_KEY_LOCATION_JOYSTICK: number; - DOM_KEY_LOCATION_LEFT: number; - DOM_KEY_LOCATION_MOBILE: number; - DOM_KEY_LOCATION_NUMPAD: number; - DOM_KEY_LOCATION_RIGHT: number; - DOM_KEY_LOCATION_STANDARD: number; + readonly DOM_KEY_LOCATION_JOYSTICK: number; + readonly DOM_KEY_LOCATION_LEFT: number; + readonly DOM_KEY_LOCATION_MOBILE: number; + readonly DOM_KEY_LOCATION_NUMPAD: number; + readonly DOM_KEY_LOCATION_RIGHT: number; + readonly DOM_KEY_LOCATION_STANDARD: number; +} + +interface ListeningStateChangedEvent extends Event { + readonly label: string; + readonly state: string; +} + +declare var ListeningStateChangedEvent: { + prototype: ListeningStateChangedEvent; + new(): ListeningStateChangedEvent; } interface Location { @@ -12589,7 +13352,7 @@ interface Location { host: string; hostname: string; href: string; - origin: string; + readonly origin: string; pathname: string; port: string; protocol: string; @@ -12606,7 +13369,7 @@ declare var Location: { } interface LongRunningScriptDetectedEvent extends Event { - executionTime: number; + readonly executionTime: number; stopPageScriptExecution: boolean; } @@ -12625,29 +13388,29 @@ interface MSApp { execAsyncAtPriority(asynchronousCallback: MSExecAtPriorityFunctionCallback, priority: string, ...args: any[]): void; execAtPriority(synchronousCallback: MSExecAtPriorityFunctionCallback, priority: string, ...args: any[]): any; getCurrentPriority(): string; - getHtmlPrintDocumentSourceAsync(htmlDoc: any): any; + getHtmlPrintDocumentSourceAsync(htmlDoc: any): PromiseLike; getViewId(view: any): any; isTaskScheduledAtPriorityOrHigher(priority: string): boolean; pageHandlesAllApplicationActivations(enabled: boolean): void; suppressSubdownloadCredentialPrompts(suppress: boolean): void; terminateApp(exceptionObject: any): void; - CURRENT: string; - HIGH: string; - IDLE: string; - NORMAL: string; + readonly CURRENT: string; + readonly HIGH: string; + readonly IDLE: string; + readonly NORMAL: string; } declare var MSApp: MSApp; interface MSAppAsyncOperation extends EventTarget { - error: DOMError; + readonly error: DOMError; oncomplete: (ev: Event) => any; onerror: (ev: Event) => any; - readyState: number; - result: any; + readonly readyState: number; + readonly result: any; start(): void; - COMPLETED: number; - ERROR: number; - STARTED: number; + 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: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; @@ -12656,9 +13419,19 @@ interface MSAppAsyncOperation extends EventTarget { declare var MSAppAsyncOperation: { prototype: MSAppAsyncOperation; new(): MSAppAsyncOperation; - COMPLETED: number; - ERROR: number; - STARTED: number; + readonly COMPLETED: number; + readonly ERROR: number; + readonly STARTED: number; +} + +interface MSAssertion { + readonly id: string; + readonly type: string; +} + +declare var MSAssertion: { + prototype: MSAssertion; + new(): MSAssertion; } interface MSBlobBuilder { @@ -12671,44 +13444,46 @@ declare var MSBlobBuilder: { new(): MSBlobBuilder; } -interface MSCSSMatrix { - a: number; - b: number; - c: number; - d: number; - e: number; - f: number; - m11: number; - m12: number; - m13: number; - m14: number; - m21: number; - m22: number; - m23: number; - m24: number; - m31: number; - m32: number; - m33: number; - m34: number; - m41: number; - m42: number; - m43: number; - m44: number; - inverse(): MSCSSMatrix; - multiply(secondMatrix: MSCSSMatrix): MSCSSMatrix; - rotate(angleX: number, angleY?: number, angleZ?: number): MSCSSMatrix; - rotateAxisAngle(x: number, y: number, z: number, angle: number): MSCSSMatrix; - scale(scaleX: number, scaleY?: number, scaleZ?: number): MSCSSMatrix; - setMatrixValue(value: string): void; - skewX(angle: number): MSCSSMatrix; - skewY(angle: number): MSCSSMatrix; - toString(): string; - translate(x: number, y: number, z?: number): MSCSSMatrix; +interface MSCredentials { + getAssertion(challenge: string, filter?: MSCredentialFilter, params?: MSSignatureParameters): PromiseLike; + makeCredential(accountInfo: MSAccountInfo, params: MSCredentialParameters[], challenge?: string): PromiseLike; } -declare var MSCSSMatrix: { - prototype: MSCSSMatrix; - new(text?: string): MSCSSMatrix; +declare var MSCredentials: { + prototype: MSCredentials; + new(): MSCredentials; +} + +interface MSFIDOCredentialAssertion extends MSAssertion { + readonly algorithm: string | Algorithm; + readonly attestation: any; + readonly publicKey: string; + readonly transportHints: string[]; +} + +declare var MSFIDOCredentialAssertion: { + prototype: MSFIDOCredentialAssertion; + new(): MSFIDOCredentialAssertion; +} + +interface MSFIDOSignature { + readonly authnrData: string; + readonly clientData: string; + readonly signature: string; +} + +declare var MSFIDOSignature: { + prototype: MSFIDOSignature; + new(): MSFIDOSignature; +} + +interface MSFIDOSignatureAssertion extends MSAssertion { + readonly signature: MSFIDOSignature; +} + +declare var MSFIDOSignatureAssertion: { + prototype: MSFIDOSignatureAssertion; + new(): MSFIDOSignatureAssertion; } interface MSGesture { @@ -12723,44 +13498,44 @@ declare var MSGesture: { } interface MSGestureEvent extends UIEvent { - clientX: number; - clientY: number; - expansion: number; - gestureObject: any; - hwTimestamp: number; - offsetX: number; - offsetY: number; - rotation: number; - scale: number; - screenX: number; - screenY: number; - translationX: number; - translationY: number; - velocityAngular: number; - velocityExpansion: number; - velocityX: number; - velocityY: number; + readonly clientX: number; + readonly clientY: number; + readonly expansion: number; + readonly gestureObject: any; + readonly hwTimestamp: number; + readonly offsetX: number; + readonly offsetY: number; + readonly rotation: number; + readonly scale: number; + readonly screenX: number; + readonly screenY: number; + readonly translationX: number; + readonly translationY: number; + readonly velocityAngular: number; + readonly velocityExpansion: number; + readonly velocityX: number; + readonly velocityY: number; initGestureEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, screenXArg: number, screenYArg: number, clientXArg: number, clientYArg: number, offsetXArg: number, offsetYArg: number, translationXArg: number, translationYArg: number, scaleArg: number, expansionArg: number, rotationArg: number, velocityXArg: number, velocityYArg: number, velocityExpansionArg: number, velocityAngularArg: number, hwTimestampArg: number): void; - MSGESTURE_FLAG_BEGIN: number; - MSGESTURE_FLAG_CANCEL: number; - MSGESTURE_FLAG_END: number; - MSGESTURE_FLAG_INERTIA: number; - MSGESTURE_FLAG_NONE: number; + readonly MSGESTURE_FLAG_BEGIN: number; + readonly MSGESTURE_FLAG_CANCEL: number; + readonly MSGESTURE_FLAG_END: number; + readonly MSGESTURE_FLAG_INERTIA: number; + readonly MSGESTURE_FLAG_NONE: number; } declare var MSGestureEvent: { prototype: MSGestureEvent; new(): MSGestureEvent; - MSGESTURE_FLAG_BEGIN: number; - MSGESTURE_FLAG_CANCEL: number; - MSGESTURE_FLAG_END: number; - MSGESTURE_FLAG_INERTIA: number; - MSGESTURE_FLAG_NONE: number; + readonly MSGESTURE_FLAG_BEGIN: number; + readonly MSGESTURE_FLAG_CANCEL: number; + readonly MSGESTURE_FLAG_END: number; + readonly MSGESTURE_FLAG_INERTIA: number; + readonly MSGESTURE_FLAG_NONE: number; } interface MSGraphicsTrust { - constrictionActive: boolean; - status: string; + readonly constrictionActive: boolean; + readonly status: string; } declare var MSGraphicsTrust: { @@ -12769,12 +13544,12 @@ declare var MSGraphicsTrust: { } interface MSHTMLWebViewElement extends HTMLElement { - canGoBack: boolean; - canGoForward: boolean; - containsFullScreenElement: boolean; - documentTitle: string; + readonly canGoBack: boolean; + readonly canGoForward: boolean; + readonly containsFullScreenElement: boolean; + readonly documentTitle: string; height: number; - settings: MSWebViewSettings; + readonly settings: MSWebViewSettings; src: string; width: number; addWebAllowedObject(name: string, applicationObject: any): void; @@ -12800,12 +13575,12 @@ declare var MSHTMLWebViewElement: { } interface MSInputMethodContext extends EventTarget { - compositionEndOffset: number; - compositionStartOffset: number; + readonly compositionEndOffset: number; + readonly compositionStartOffset: number; oncandidatewindowhide: (ev: Event) => any; oncandidatewindowshow: (ev: Event) => any; oncandidatewindowupdate: (ev: Event) => any; - target: HTMLElement; + readonly target: HTMLElement; getCandidateWindowClientRect(): ClientRect; getCompositionAlternatives(): string[]; hasComposition(): boolean; @@ -12822,59 +13597,59 @@ declare var MSInputMethodContext: { } interface MSManipulationEvent extends UIEvent { - currentState: number; - inertiaDestinationX: number; - inertiaDestinationY: number; - lastState: number; + readonly currentState: number; + readonly inertiaDestinationX: number; + readonly inertiaDestinationY: number; + readonly lastState: number; initMSManipulationEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, lastState: number, currentState: number): void; - MS_MANIPULATION_STATE_ACTIVE: number; - MS_MANIPULATION_STATE_CANCELLED: number; - MS_MANIPULATION_STATE_COMMITTED: number; - MS_MANIPULATION_STATE_DRAGGING: number; - MS_MANIPULATION_STATE_INERTIA: number; - MS_MANIPULATION_STATE_PRESELECT: number; - MS_MANIPULATION_STATE_SELECTING: number; - MS_MANIPULATION_STATE_STOPPED: number; + readonly MS_MANIPULATION_STATE_ACTIVE: number; + readonly MS_MANIPULATION_STATE_CANCELLED: number; + readonly MS_MANIPULATION_STATE_COMMITTED: number; + readonly MS_MANIPULATION_STATE_DRAGGING: number; + readonly MS_MANIPULATION_STATE_INERTIA: number; + readonly MS_MANIPULATION_STATE_PRESELECT: number; + readonly MS_MANIPULATION_STATE_SELECTING: number; + readonly MS_MANIPULATION_STATE_STOPPED: number; } declare var MSManipulationEvent: { prototype: MSManipulationEvent; new(): MSManipulationEvent; - MS_MANIPULATION_STATE_ACTIVE: number; - MS_MANIPULATION_STATE_CANCELLED: number; - MS_MANIPULATION_STATE_COMMITTED: number; - MS_MANIPULATION_STATE_DRAGGING: number; - MS_MANIPULATION_STATE_INERTIA: number; - MS_MANIPULATION_STATE_PRESELECT: number; - MS_MANIPULATION_STATE_SELECTING: number; - MS_MANIPULATION_STATE_STOPPED: number; + readonly MS_MANIPULATION_STATE_ACTIVE: number; + readonly MS_MANIPULATION_STATE_CANCELLED: number; + readonly MS_MANIPULATION_STATE_COMMITTED: number; + readonly MS_MANIPULATION_STATE_DRAGGING: number; + readonly MS_MANIPULATION_STATE_INERTIA: number; + readonly MS_MANIPULATION_STATE_PRESELECT: number; + readonly MS_MANIPULATION_STATE_SELECTING: number; + readonly MS_MANIPULATION_STATE_STOPPED: number; } interface MSMediaKeyError { - code: number; - systemCode: number; - MS_MEDIA_KEYERR_CLIENT: number; - MS_MEDIA_KEYERR_DOMAIN: number; - MS_MEDIA_KEYERR_HARDWARECHANGE: number; - MS_MEDIA_KEYERR_OUTPUT: number; - MS_MEDIA_KEYERR_SERVICE: number; - MS_MEDIA_KEYERR_UNKNOWN: number; + readonly code: number; + readonly systemCode: number; + readonly MS_MEDIA_KEYERR_CLIENT: number; + readonly MS_MEDIA_KEYERR_DOMAIN: number; + readonly MS_MEDIA_KEYERR_HARDWARECHANGE: number; + readonly MS_MEDIA_KEYERR_OUTPUT: number; + readonly MS_MEDIA_KEYERR_SERVICE: number; + readonly MS_MEDIA_KEYERR_UNKNOWN: number; } declare var MSMediaKeyError: { prototype: MSMediaKeyError; new(): MSMediaKeyError; - MS_MEDIA_KEYERR_CLIENT: number; - MS_MEDIA_KEYERR_DOMAIN: number; - MS_MEDIA_KEYERR_HARDWARECHANGE: number; - MS_MEDIA_KEYERR_OUTPUT: number; - MS_MEDIA_KEYERR_SERVICE: number; - MS_MEDIA_KEYERR_UNKNOWN: number; + readonly MS_MEDIA_KEYERR_CLIENT: number; + readonly MS_MEDIA_KEYERR_DOMAIN: number; + readonly MS_MEDIA_KEYERR_HARDWARECHANGE: number; + readonly MS_MEDIA_KEYERR_OUTPUT: number; + readonly MS_MEDIA_KEYERR_SERVICE: number; + readonly MS_MEDIA_KEYERR_UNKNOWN: number; } interface MSMediaKeyMessageEvent extends Event { - destinationURL: string; - message: Uint8Array; + readonly destinationURL: string; + readonly message: Uint8Array; } declare var MSMediaKeyMessageEvent: { @@ -12883,7 +13658,7 @@ declare var MSMediaKeyMessageEvent: { } interface MSMediaKeyNeededEvent extends Event { - initData: Uint8Array; + readonly initData: Uint8Array; } declare var MSMediaKeyNeededEvent: { @@ -12892,9 +13667,9 @@ declare var MSMediaKeyNeededEvent: { } interface MSMediaKeySession extends EventTarget { - error: MSMediaKeyError; - keySystem: string; - sessionId: string; + readonly error: MSMediaKeyError; + readonly keySystem: string; + readonly sessionId: string; close(): void; update(key: Uint8Array): void; } @@ -12905,7 +13680,7 @@ declare var MSMediaKeySession: { } interface MSMediaKeys { - keySystem: string; + readonly keySystem: string; createSession(type: string, initData: Uint8Array, cdmData?: Uint8Array): MSMediaKeySession; } @@ -12913,40 +13688,22 @@ declare var MSMediaKeys: { prototype: MSMediaKeys; new(keySystem: string): MSMediaKeys; isTypeSupported(keySystem: string, type?: string): boolean; -} - -interface MSMimeTypesCollection { - length: number; -} - -declare var MSMimeTypesCollection: { - prototype: MSMimeTypesCollection; - new(): MSMimeTypesCollection; -} - -interface MSPluginsCollection { - length: number; - refresh(reload?: boolean): void; -} - -declare var MSPluginsCollection: { - prototype: MSPluginsCollection; - new(): MSPluginsCollection; + isTypeSupportedWithFeatures(keySystem: string, type?: string): string; } interface MSPointerEvent extends MouseEvent { - currentPoint: any; - height: number; - hwTimestamp: number; - intermediatePoints: any; - isPrimary: boolean; - pointerId: number; - pointerType: any; - pressure: number; - rotation: number; - tiltX: number; - tiltY: number; - width: number; + readonly currentPoint: any; + readonly height: number; + readonly hwTimestamp: number; + readonly intermediatePoints: any; + readonly isPrimary: boolean; + readonly pointerId: number; + readonly pointerType: any; + readonly pressure: number; + readonly rotation: number; + readonly tiltX: number; + readonly tiltY: number; + readonly width: number; getCurrentPoint(element: Element): void; getIntermediatePoints(element: Element): void; initPointerEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, screenXArg: number, screenYArg: number, clientXArg: number, clientYArg: number, ctrlKeyArg: boolean, altKeyArg: boolean, shiftKeyArg: boolean, metaKeyArg: boolean, buttonArg: number, relatedTargetArg: EventTarget, offsetXArg: number, offsetYArg: number, widthArg: number, heightArg: number, pressure: number, rotation: number, tiltX: number, tiltY: number, pointerIdArg: number, pointerType: any, hwTimestampArg: number, isPrimary: boolean): void; @@ -12958,7 +13715,7 @@ declare var MSPointerEvent: { } interface MSRangeCollection { - length: number; + readonly length: number; item(index: number): Range; [index: number]: Range; } @@ -12969,8 +13726,8 @@ declare var MSRangeCollection: { } interface MSSiteModeEvent extends Event { - actionURL: string; - buttonID: number; + readonly actionURL: string; + readonly buttonID: number; } declare var MSSiteModeEvent: { @@ -12979,7 +13736,7 @@ declare var MSSiteModeEvent: { } interface MSStream { - type: string; + readonly type: string; msClose(): void; msDetachStream(): any; } @@ -12990,7 +13747,7 @@ declare var MSStream: { } interface MSStreamReader extends EventTarget, MSBaseReader { - error: DOMError; + readonly error: DOMError; readAsArrayBuffer(stream: MSStream, size?: number): void; readAsBinaryString(stream: MSStream, size?: number): void; readAsBlob(stream: MSStream, size?: number): void; @@ -13005,20 +13762,20 @@ declare var MSStreamReader: { } interface MSWebViewAsyncOperation extends EventTarget { - error: DOMError; + readonly error: DOMError; oncomplete: (ev: Event) => any; onerror: (ev: Event) => any; - readyState: number; - result: any; - target: MSHTMLWebViewElement; - type: number; + readonly readyState: number; + readonly result: any; + readonly target: MSHTMLWebViewElement; + readonly type: number; start(): void; - COMPLETED: number; - ERROR: number; - STARTED: number; - TYPE_CAPTURE_PREVIEW_TO_RANDOM_ACCESS_STREAM: number; - TYPE_CREATE_DATA_PACKAGE_FROM_SELECTION: number; - TYPE_INVOKE_SCRIPT: number; + readonly COMPLETED: number; + readonly ERROR: number; + readonly STARTED: number; + readonly TYPE_CAPTURE_PREVIEW_TO_RANDOM_ACCESS_STREAM: number; + readonly TYPE_CREATE_DATA_PACKAGE_FROM_SELECTION: number; + readonly TYPE_INVOKE_SCRIPT: number; addEventListener(type: "complete", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; @@ -13027,12 +13784,12 @@ interface MSWebViewAsyncOperation extends EventTarget { declare var MSWebViewAsyncOperation: { prototype: MSWebViewAsyncOperation; new(): MSWebViewAsyncOperation; - COMPLETED: number; - ERROR: number; - STARTED: number; - TYPE_CAPTURE_PREVIEW_TO_RANDOM_ACCESS_STREAM: number; - TYPE_CREATE_DATA_PACKAGE_FROM_SELECTION: number; - TYPE_INVOKE_SCRIPT: number; + readonly COMPLETED: number; + readonly ERROR: number; + readonly STARTED: number; + readonly TYPE_CAPTURE_PREVIEW_TO_RANDOM_ACCESS_STREAM: number; + readonly TYPE_CREATE_DATA_PACKAGE_FROM_SELECTION: number; + readonly TYPE_INVOKE_SCRIPT: number; } interface MSWebViewSettings { @@ -13045,6 +13802,32 @@ declare var MSWebViewSettings: { new(): MSWebViewSettings; } +interface MediaDeviceInfo { + readonly deviceId: string; + readonly groupId: string; + readonly kind: string; + readonly label: string; +} + +declare var MediaDeviceInfo: { + prototype: MediaDeviceInfo; + new(): MediaDeviceInfo; +} + +interface MediaDevices extends EventTarget { + ondevicechange: (ev: Event) => any; + enumerateDevices(): any; + getSupportedConstraints(): MediaTrackSupportedConstraints; + getUserMedia(constraints: MediaStreamConstraints): PromiseLike; + addEventListener(type: "devicechange", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +} + +declare var MediaDevices: { + prototype: MediaDevices; + new(): MediaDevices; +} + interface MediaElementAudioSourceNode extends AudioNode { } @@ -13053,28 +13836,98 @@ declare var MediaElementAudioSourceNode: { new(): MediaElementAudioSourceNode; } +interface MediaEncryptedEvent extends Event { + readonly initData: ArrayBuffer; + readonly initDataType: string; +} + +declare var MediaEncryptedEvent: { + prototype: MediaEncryptedEvent; + new(type: string, eventInitDict?: MediaEncryptedEventInit): MediaEncryptedEvent; +} + interface MediaError { - code: number; - msExtendedCode: number; - MEDIA_ERR_ABORTED: number; - MEDIA_ERR_DECODE: number; - MEDIA_ERR_NETWORK: number; - MEDIA_ERR_SRC_NOT_SUPPORTED: number; - MS_MEDIA_ERR_ENCRYPTED: number; + readonly code: number; + readonly msExtendedCode: number; + readonly MEDIA_ERR_ABORTED: number; + readonly MEDIA_ERR_DECODE: number; + readonly MEDIA_ERR_NETWORK: number; + readonly MEDIA_ERR_SRC_NOT_SUPPORTED: number; + readonly MS_MEDIA_ERR_ENCRYPTED: number; } declare var MediaError: { prototype: MediaError; new(): MediaError; - MEDIA_ERR_ABORTED: number; - MEDIA_ERR_DECODE: number; - MEDIA_ERR_NETWORK: number; - MEDIA_ERR_SRC_NOT_SUPPORTED: number; - MS_MEDIA_ERR_ENCRYPTED: number; + readonly MEDIA_ERR_ABORTED: number; + readonly MEDIA_ERR_DECODE: number; + readonly MEDIA_ERR_NETWORK: number; + readonly MEDIA_ERR_SRC_NOT_SUPPORTED: number; + readonly MS_MEDIA_ERR_ENCRYPTED: number; +} + +interface MediaKeyMessageEvent extends Event { + readonly message: ArrayBuffer; + readonly messageType: string; +} + +declare var MediaKeyMessageEvent: { + prototype: MediaKeyMessageEvent; + new(type: string, eventInitDict?: MediaKeyMessageEventInit): MediaKeyMessageEvent; +} + +interface MediaKeySession extends EventTarget { + readonly closed: PromiseLike; + readonly expiration: number; + readonly keyStatuses: MediaKeyStatusMap; + readonly sessionId: string; + close(): PromiseLike; + generateRequest(initDataType: string, initData: any): PromiseLike; + load(sessionId: string): PromiseLike; + remove(): PromiseLike; + update(response: any): PromiseLike; +} + +declare var MediaKeySession: { + prototype: MediaKeySession; + new(): MediaKeySession; +} + +interface MediaKeyStatusMap { + readonly size: number; + forEach(callback: ForEachCallback): void; + get(keyId: any): string; + has(keyId: any): boolean; +} + +declare var MediaKeyStatusMap: { + prototype: MediaKeyStatusMap; + new(): MediaKeyStatusMap; +} + +interface MediaKeySystemAccess { + readonly keySystem: string; + createMediaKeys(): PromiseLike; + getConfiguration(): MediaKeySystemConfiguration; +} + +declare var MediaKeySystemAccess: { + prototype: MediaKeySystemAccess; + new(): MediaKeySystemAccess; +} + +interface MediaKeys { + createSession(sessionType?: string): MediaKeySession; + setServerCertificate(serverCertificate: any): PromiseLike; +} + +declare var MediaKeys: { + prototype: MediaKeys; + new(): MediaKeys; } interface MediaList { - length: number; + readonly length: number; mediaText: string; appendMedium(newMedium: string): void; deleteMedium(oldMedium: string): void; @@ -13089,8 +13942,8 @@ declare var MediaList: { } interface MediaQueryList { - matches: boolean; - media: string; + readonly matches: boolean; + readonly media: string; addListener(listener: MediaQueryListListener): void; removeListener(listener: MediaQueryListListener): void; } @@ -13101,10 +13954,10 @@ declare var MediaQueryList: { } interface MediaSource extends EventTarget { - activeSourceBuffers: SourceBufferList; + readonly activeSourceBuffers: SourceBufferList; duration: number; - readyState: string; - sourceBuffers: SourceBufferList; + readonly readyState: string; + readonly sourceBuffers: SourceBufferList; addSourceBuffer(type: string): SourceBuffer; endOfStream(error?: number): void; removeSourceBuffer(sourceBuffer: SourceBuffer): void; @@ -13116,9 +13969,104 @@ declare var MediaSource: { isTypeSupported(type: string): boolean; } +interface MediaStream extends EventTarget { + readonly active: boolean; + readonly id: string; + onactive: (ev: Event) => any; + onaddtrack: (ev: TrackEvent) => any; + oninactive: (ev: Event) => any; + onremovetrack: (ev: TrackEvent) => any; + addTrack(track: MediaStreamTrack): void; + clone(): MediaStream; + getAudioTracks(): MediaStreamTrack[]; + getTrackById(trackId: string): MediaStreamTrack; + getTracks(): MediaStreamTrack[]; + getVideoTracks(): MediaStreamTrack[]; + removeTrack(track: MediaStreamTrack): void; + stop(): void; + addEventListener(type: "active", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "addtrack", listener: (ev: TrackEvent) => any, useCapture?: boolean): void; + addEventListener(type: "inactive", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "removetrack", listener: (ev: TrackEvent) => any, useCapture?: boolean): void; + addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +} + +declare var MediaStream: { + prototype: MediaStream; + new(streamOrTracks?: MediaStream | MediaStreamTrack[]): MediaStream; +} + +interface MediaStreamAudioSourceNode extends AudioNode { +} + +declare var MediaStreamAudioSourceNode: { + prototype: MediaStreamAudioSourceNode; + new(): MediaStreamAudioSourceNode; +} + +interface MediaStreamError { + readonly constraintName: string; + readonly message: string; + readonly name: string; +} + +declare var MediaStreamError: { + prototype: MediaStreamError; + new(): MediaStreamError; +} + +interface MediaStreamErrorEvent extends Event { + readonly error: MediaStreamError; +} + +declare var MediaStreamErrorEvent: { + prototype: MediaStreamErrorEvent; + new(type: string, eventInitDict?: MediaStreamErrorEventInit): MediaStreamErrorEvent; +} + +interface MediaStreamTrack extends EventTarget { + enabled: boolean; + readonly id: string; + readonly kind: string; + readonly label: string; + readonly muted: boolean; + onended: (ev: MediaStreamErrorEvent) => any; + onmute: (ev: Event) => any; + onoverconstrained: (ev: MediaStreamErrorEvent) => any; + onunmute: (ev: Event) => any; + readonly readonly: boolean; + readonly readyState: string; + readonly remote: boolean; + applyConstraints(constraints: MediaTrackConstraints): PromiseLike; + clone(): MediaStreamTrack; + getCapabilities(): MediaTrackCapabilities; + getConstraints(): MediaTrackConstraints; + getSettings(): MediaTrackSettings; + stop(): void; + addEventListener(type: "ended", listener: (ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mute", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "overconstrained", listener: (ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: "unmute", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +} + +declare var MediaStreamTrack: { + prototype: MediaStreamTrack; + new(): MediaStreamTrack; +} + +interface MediaStreamTrackEvent extends Event { + readonly track: MediaStreamTrack; +} + +declare var MediaStreamTrackEvent: { + prototype: MediaStreamTrackEvent; + new(type: string, eventInitDict?: MediaStreamTrackEventInit): MediaStreamTrackEvent; +} + interface MessageChannel { - port1: MessagePort; - port2: MessagePort; + readonly port1: MessagePort; + readonly port2: MessagePort; } declare var MessageChannel: { @@ -13127,10 +14075,10 @@ declare var MessageChannel: { } interface MessageEvent extends Event { - data: any; - origin: string; - ports: any; - source: Window; + readonly data: any; + readonly origin: string; + readonly ports: any; + readonly source: Window; initMessageEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, dataArg: any, originArg: string, lastEventIdArg: string, sourceArg: Window): void; } @@ -13154,10 +14102,10 @@ declare var MessagePort: { } interface MimeType { - description: string; - enabledPlugin: Plugin; - suffixes: string; - type: string; + readonly description: string; + readonly enabledPlugin: Plugin; + readonly suffixes: string; + readonly type: string; } declare var MimeType: { @@ -13166,7 +14114,7 @@ declare var MimeType: { } interface MimeTypeArray { - length: number; + readonly length: number; item(index: number): Plugin; namedItem(type: string): Plugin; [index: number]: Plugin; @@ -13178,30 +14126,30 @@ declare var MimeTypeArray: { } interface MouseEvent extends UIEvent { - altKey: boolean; - button: number; - buttons: number; - clientX: number; - clientY: number; - ctrlKey: boolean; - fromElement: Element; - layerX: number; - layerY: number; - metaKey: boolean; - movementX: number; - movementY: number; - offsetX: number; - offsetY: number; - pageX: number; - pageY: number; - relatedTarget: EventTarget; - screenX: number; - screenY: number; - shiftKey: boolean; - toElement: Element; - which: number; - x: number; - y: number; + readonly altKey: boolean; + readonly button: number; + readonly buttons: number; + readonly clientX: number; + readonly clientY: number; + readonly ctrlKey: boolean; + readonly fromElement: Element; + readonly layerX: number; + readonly layerY: number; + readonly metaKey: boolean; + readonly movementX: number; + readonly movementY: number; + readonly offsetX: number; + readonly offsetY: number; + readonly pageX: number; + readonly pageY: number; + readonly relatedTarget: EventTarget; + readonly screenX: number; + readonly screenY: number; + readonly shiftKey: boolean; + readonly toElement: Element; + readonly which: number; + readonly x: number; + readonly y: number; getModifierState(keyArg: string): boolean; initMouseEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, screenXArg: number, screenYArg: number, clientXArg: number, clientYArg: number, ctrlKeyArg: boolean, altKeyArg: boolean, shiftKeyArg: boolean, metaKeyArg: boolean, buttonArg: number, relatedTargetArg: EventTarget): void; } @@ -13211,36 +14159,24 @@ declare var MouseEvent: { new(typeArg: string, eventInitDict?: MouseEventInit): MouseEvent; } -interface MouseWheelEvent extends MouseEvent { - wheelDelta: number; - wheelDeltaX: number; - wheelDeltaY: number; - initMouseWheelEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, screenXArg: number, screenYArg: number, clientXArg: number, clientYArg: number, buttonArg: number, relatedTargetArg: EventTarget, modifiersListArg: string, wheelDeltaArg: number): void; -} - -declare var MouseWheelEvent: { - prototype: MouseWheelEvent; - new(): MouseWheelEvent; -} - interface MutationEvent extends Event { - attrChange: number; - attrName: string; - newValue: string; - prevValue: string; - relatedNode: Node; + readonly attrChange: number; + readonly attrName: string; + readonly newValue: string; + readonly prevValue: string; + readonly relatedNode: Node; initMutationEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, relatedNodeArg: Node, prevValueArg: string, newValueArg: string, attrNameArg: string, attrChangeArg: number): void; - ADDITION: number; - MODIFICATION: number; - REMOVAL: number; + readonly ADDITION: number; + readonly MODIFICATION: number; + readonly REMOVAL: number; } declare var MutationEvent: { prototype: MutationEvent; new(): MutationEvent; - ADDITION: number; - MODIFICATION: number; - REMOVAL: number; + readonly ADDITION: number; + readonly MODIFICATION: number; + readonly REMOVAL: number; } interface MutationObserver { @@ -13255,15 +14191,15 @@ declare var MutationObserver: { } interface MutationRecord { - addedNodes: NodeList; - attributeName: string; - attributeNamespace: string; - nextSibling: Node; - oldValue: string; - previousSibling: Node; - removedNodes: NodeList; - target: Node; - type: string; + readonly addedNodes: NodeList; + readonly attributeName: string; + readonly attributeNamespace: string; + readonly nextSibling: Node; + readonly oldValue: string; + readonly previousSibling: Node; + readonly removedNodes: NodeList; + readonly target: Node; + readonly type: string; } declare var MutationRecord: { @@ -13272,7 +14208,7 @@ declare var MutationRecord: { } interface NamedNodeMap { - length: number; + readonly length: number; getNamedItem(name: string): Attr; getNamedItemNS(namespaceURI: string, localName: string): Attr; item(index: number): Attr; @@ -13289,8 +14225,8 @@ declare var NamedNodeMap: { } interface NavigationCompletedEvent extends NavigationEvent { - isSuccess: boolean; - webErrorStatus: number; + readonly isSuccess: boolean; + readonly webErrorStatus: number; } declare var NavigationCompletedEvent: { @@ -13299,7 +14235,7 @@ declare var NavigationCompletedEvent: { } interface NavigationEvent extends Event { - uri: string; + readonly uri: string; } declare var NavigationEvent: { @@ -13308,7 +14244,7 @@ declare var NavigationEvent: { } interface NavigationEventWithReferrer extends NavigationEvent { - referer: string; + readonly referer: string; } declare var NavigationEventWithReferrer: { @@ -13316,27 +14252,22 @@ declare var NavigationEventWithReferrer: { new(): NavigationEventWithReferrer; } -interface Navigator extends Object, NavigatorID, NavigatorOnLine, NavigatorContentUtils, NavigatorStorageUtils, NavigatorGeolocation, MSNavigatorDoNotTrack, MSFileSaver { - appCodeName: string; - appMinorVersion: string; - browserLanguage: string; - connectionSpeed: number; - cookieEnabled: boolean; - cpuClass: string; - language: string; - maxTouchPoints: number; - mimeTypes: MSMimeTypesCollection; - msManipulationViewsEnabled: boolean; - msMaxTouchPoints: number; - msPointerEnabled: boolean; - plugins: MSPluginsCollection; - pointerEnabled: boolean; - systemLanguage: string; - userLanguage: string; - webdriver: boolean; +interface Navigator extends Object, NavigatorID, NavigatorOnLine, NavigatorContentUtils, NavigatorStorageUtils, NavigatorGeolocation, MSNavigatorDoNotTrack, MSFileSaver, NavigatorUserMedia { + readonly appCodeName: string; + readonly cookieEnabled: boolean; + readonly language: string; + readonly maxTouchPoints: number; + readonly mimeTypes: MimeTypeArray; + readonly msManipulationViewsEnabled: boolean; + readonly msMaxTouchPoints: number; + readonly msPointerEnabled: boolean; + readonly plugins: PluginArray; + readonly pointerEnabled: boolean; + readonly webdriver: boolean; getGamepads(): Gamepad[]; javaEnabled(): boolean; msLaunchUri(uri: string, successCallback?: MSLaunchUriCallback, noHandlerCallback?: MSLaunchUriCallback): void; + requestMediaKeySystemAccess(keySystem: string, supportedConfigurations: MediaKeySystemConfiguration[]): PromiseLike; vibrate(pattern: number | number[]): boolean; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -13347,26 +14278,26 @@ declare var Navigator: { } interface Node extends EventTarget { - attributes: NamedNodeMap; - baseURI: string; - childNodes: NodeList; - firstChild: Node; - lastChild: Node; - localName: string; - namespaceURI: string; - nextSibling: Node; - nodeName: string; - nodeType: number; + readonly attributes: NamedNodeMap; + readonly baseURI: string; + readonly childNodes: NodeList; + readonly firstChild: Node; + readonly lastChild: Node; + readonly localName: string; + readonly namespaceURI: string; + readonly nextSibling: Node; + readonly nodeName: string; + readonly nodeType: number; nodeValue: string; - ownerDocument: Document; - parentElement: HTMLElement; - parentNode: Node; - prefix: string; - previousSibling: Node; + readonly ownerDocument: Document; + readonly parentElement: HTMLElement; + readonly parentNode: Node; + readonly previousSibling: Node; textContent: string; appendChild(newChild: Node): Node; cloneNode(deep?: boolean): Node; compareDocumentPosition(other: Node): number; + contains(child: Node): boolean; hasAttributes(): boolean; hasChildNodes(): boolean; insertBefore(newChild: Node, refChild?: Node): Node; @@ -13379,47 +14310,47 @@ interface Node extends EventTarget { removeChild(oldChild: Node): Node; replaceChild(newChild: Node, oldChild: Node): Node; contains(node: Node): boolean; - ATTRIBUTE_NODE: number; - CDATA_SECTION_NODE: number; - COMMENT_NODE: number; - DOCUMENT_FRAGMENT_NODE: number; - DOCUMENT_NODE: number; - DOCUMENT_POSITION_CONTAINED_BY: number; - DOCUMENT_POSITION_CONTAINS: number; - DOCUMENT_POSITION_DISCONNECTED: number; - DOCUMENT_POSITION_FOLLOWING: number; - DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: number; - DOCUMENT_POSITION_PRECEDING: number; - DOCUMENT_TYPE_NODE: number; - ELEMENT_NODE: number; - ENTITY_NODE: number; - ENTITY_REFERENCE_NODE: number; - NOTATION_NODE: number; - PROCESSING_INSTRUCTION_NODE: number; - TEXT_NODE: number; + readonly ATTRIBUTE_NODE: number; + readonly CDATA_SECTION_NODE: number; + readonly COMMENT_NODE: number; + readonly DOCUMENT_FRAGMENT_NODE: number; + readonly DOCUMENT_NODE: number; + readonly DOCUMENT_POSITION_CONTAINED_BY: number; + readonly DOCUMENT_POSITION_CONTAINS: number; + readonly DOCUMENT_POSITION_DISCONNECTED: number; + readonly DOCUMENT_POSITION_FOLLOWING: number; + readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: number; + readonly DOCUMENT_POSITION_PRECEDING: number; + readonly DOCUMENT_TYPE_NODE: number; + readonly ELEMENT_NODE: number; + readonly ENTITY_NODE: number; + readonly ENTITY_REFERENCE_NODE: number; + readonly NOTATION_NODE: number; + readonly PROCESSING_INSTRUCTION_NODE: number; + readonly TEXT_NODE: number; } declare var Node: { prototype: Node; new(): Node; - ATTRIBUTE_NODE: number; - CDATA_SECTION_NODE: number; - COMMENT_NODE: number; - DOCUMENT_FRAGMENT_NODE: number; - DOCUMENT_NODE: number; - DOCUMENT_POSITION_CONTAINED_BY: number; - DOCUMENT_POSITION_CONTAINS: number; - DOCUMENT_POSITION_DISCONNECTED: number; - DOCUMENT_POSITION_FOLLOWING: number; - DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: number; - DOCUMENT_POSITION_PRECEDING: number; - DOCUMENT_TYPE_NODE: number; - ELEMENT_NODE: number; - ENTITY_NODE: number; - ENTITY_REFERENCE_NODE: number; - NOTATION_NODE: number; - PROCESSING_INSTRUCTION_NODE: number; - TEXT_NODE: number; + readonly ATTRIBUTE_NODE: number; + readonly CDATA_SECTION_NODE: number; + readonly COMMENT_NODE: number; + readonly DOCUMENT_FRAGMENT_NODE: number; + readonly DOCUMENT_NODE: number; + readonly DOCUMENT_POSITION_CONTAINED_BY: number; + readonly DOCUMENT_POSITION_CONTAINS: number; + readonly DOCUMENT_POSITION_DISCONNECTED: number; + readonly DOCUMENT_POSITION_FOLLOWING: number; + readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: number; + readonly DOCUMENT_POSITION_PRECEDING: number; + readonly DOCUMENT_TYPE_NODE: number; + readonly ELEMENT_NODE: number; + readonly ENTITY_NODE: number; + readonly ENTITY_REFERENCE_NODE: number; + readonly NOTATION_NODE: number; + readonly PROCESSING_INSTRUCTION_NODE: number; + readonly TEXT_NODE: number; } interface NodeFilter { @@ -13427,29 +14358,29 @@ interface NodeFilter { } declare var NodeFilter: { - FILTER_ACCEPT: number; - FILTER_REJECT: number; - FILTER_SKIP: number; - SHOW_ALL: number; - SHOW_ATTRIBUTE: number; - SHOW_CDATA_SECTION: number; - SHOW_COMMENT: number; - SHOW_DOCUMENT: number; - SHOW_DOCUMENT_FRAGMENT: number; - SHOW_DOCUMENT_TYPE: number; - SHOW_ELEMENT: number; - SHOW_ENTITY: number; - SHOW_ENTITY_REFERENCE: number; - SHOW_NOTATION: number; - SHOW_PROCESSING_INSTRUCTION: number; - SHOW_TEXT: number; + readonly FILTER_ACCEPT: number; + readonly FILTER_REJECT: number; + readonly FILTER_SKIP: number; + readonly SHOW_ALL: number; + readonly SHOW_ATTRIBUTE: number; + readonly SHOW_CDATA_SECTION: number; + readonly SHOW_COMMENT: number; + readonly SHOW_DOCUMENT: number; + readonly SHOW_DOCUMENT_FRAGMENT: number; + readonly SHOW_DOCUMENT_TYPE: number; + readonly SHOW_ELEMENT: number; + readonly SHOW_ENTITY: number; + readonly SHOW_ENTITY_REFERENCE: number; + readonly SHOW_NOTATION: number; + readonly SHOW_PROCESSING_INSTRUCTION: number; + readonly SHOW_TEXT: number; } interface NodeIterator { - expandEntityReferences: boolean; - filter: NodeFilter; - root: Node; - whatToShow: number; + readonly expandEntityReferences: boolean; + readonly filter: NodeFilter; + readonly root: Node; + readonly whatToShow: number; detach(): void; nextNode(): Node; previousNode(): Node; @@ -13461,7 +14392,7 @@ declare var NodeIterator: { } interface NodeList { - length: number; + readonly length: number; item(index: number): Node; [index: number]: Node; } @@ -13480,13 +14411,13 @@ declare var OES_element_index_uint: { } interface OES_standard_derivatives { - FRAGMENT_SHADER_DERIVATIVE_HINT_OES: number; + readonly FRAGMENT_SHADER_DERIVATIVE_HINT_OES: number; } declare var OES_standard_derivatives: { prototype: OES_standard_derivatives; new(): OES_standard_derivatives; - FRAGMENT_SHADER_DERIVATIVE_HINT_OES: number; + readonly FRAGMENT_SHADER_DERIVATIVE_HINT_OES: number; } interface OES_texture_float { @@ -13506,7 +14437,7 @@ declare var OES_texture_float_linear: { } interface OfflineAudioCompletionEvent extends Event { - renderedBuffer: AudioBuffer; + readonly renderedBuffer: AudioBuffer; } declare var OfflineAudioCompletionEvent: { @@ -13516,7 +14447,7 @@ declare var OfflineAudioCompletionEvent: { interface OfflineAudioContext extends AudioContext { oncomplete: (ev: Event) => any; - startRendering(): void; + startRendering(): PromiseLike; addEventListener(type: "complete", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -13527,14 +14458,14 @@ declare var OfflineAudioContext: { } interface OscillatorNode extends AudioNode { - detune: AudioParam; - frequency: AudioParam; - onended: (ev: Event) => any; + readonly detune: AudioParam; + readonly frequency: AudioParam; + onended: (ev: MediaStreamErrorEvent) => any; type: string; setPeriodicWave(periodicWave: PeriodicWave): void; start(when?: number): void; stop(when?: number): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "ended", listener: (ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -13543,8 +14474,25 @@ declare var OscillatorNode: { new(): OscillatorNode; } +interface OverflowEvent extends UIEvent { + readonly horizontalOverflow: boolean; + readonly orient: number; + readonly verticalOverflow: boolean; + readonly BOTH: number; + readonly HORIZONTAL: number; + readonly VERTICAL: number; +} + +declare var OverflowEvent: { + prototype: OverflowEvent; + new(): OverflowEvent; + readonly BOTH: number; + readonly HORIZONTAL: number; + readonly VERTICAL: number; +} + interface PageTransitionEvent extends Event { - persisted: boolean; + readonly persisted: boolean; } declare var PageTransitionEvent: { @@ -13572,17 +14520,17 @@ declare var PannerNode: { } interface PerfWidgetExternal { - activeNetworkRequestCount: number; - averageFrameTime: number; - averagePaintTime: number; - extraInformationEnabled: boolean; - independentRenderingEnabled: boolean; - irDisablingContentString: string; - irStatusAvailable: boolean; - maxCpuSpeed: number; - paintRequestsPerSecond: number; - performanceCounter: number; - performanceCounterFrequency: number; + readonly activeNetworkRequestCount: number; + readonly averageFrameTime: number; + readonly averagePaintTime: number; + readonly extraInformationEnabled: boolean; + readonly independentRenderingEnabled: boolean; + readonly irDisablingContentString: string; + readonly irStatusAvailable: boolean; + readonly maxCpuSpeed: number; + readonly paintRequestsPerSecond: number; + readonly performanceCounter: number; + readonly performanceCounterFrequency: number; addEventListener(eventType: string, callback: Function): void; getMemoryUsage(): number; getProcessCpuUsage(): number; @@ -13601,8 +14549,8 @@ declare var PerfWidgetExternal: { } interface Performance { - navigation: PerformanceNavigation; - timing: PerformanceTiming; + readonly navigation: PerformanceNavigation; + readonly timing: PerformanceTiming; clearMarks(markName?: string): void; clearMeasures(measureName?: string): void; clearResourceTimings(): void; @@ -13624,10 +14572,10 @@ declare var Performance: { } interface PerformanceEntry { - duration: number; - entryType: string; - name: string; - startTime: number; + readonly duration: number; + readonly entryType: string; + readonly name: string; + readonly startTime: number; } declare var PerformanceEntry: { @@ -13652,47 +14600,47 @@ declare var PerformanceMeasure: { } interface PerformanceNavigation { - redirectCount: number; - type: number; + readonly redirectCount: number; + readonly type: number; toJSON(): any; - TYPE_BACK_FORWARD: number; - TYPE_NAVIGATE: number; - TYPE_RELOAD: number; - TYPE_RESERVED: number; + readonly TYPE_BACK_FORWARD: number; + readonly TYPE_NAVIGATE: number; + readonly TYPE_RELOAD: number; + readonly TYPE_RESERVED: number; } declare var PerformanceNavigation: { prototype: PerformanceNavigation; new(): PerformanceNavigation; - TYPE_BACK_FORWARD: number; - TYPE_NAVIGATE: number; - TYPE_RELOAD: number; - TYPE_RESERVED: number; + readonly TYPE_BACK_FORWARD: number; + readonly TYPE_NAVIGATE: number; + readonly TYPE_RELOAD: number; + readonly TYPE_RESERVED: number; } interface PerformanceNavigationTiming extends PerformanceEntry { - connectEnd: number; - connectStart: number; - domComplete: number; - domContentLoadedEventEnd: number; - domContentLoadedEventStart: number; - domInteractive: number; - domLoading: number; - domainLookupEnd: number; - domainLookupStart: number; - fetchStart: number; - loadEventEnd: number; - loadEventStart: number; - navigationStart: number; - redirectCount: number; - redirectEnd: number; - redirectStart: number; - requestStart: number; - responseEnd: number; - responseStart: number; - type: string; - unloadEventEnd: number; - unloadEventStart: number; + readonly connectEnd: number; + readonly connectStart: number; + readonly domComplete: number; + readonly domContentLoadedEventEnd: number; + readonly domContentLoadedEventStart: number; + readonly domInteractive: number; + readonly domLoading: number; + readonly domainLookupEnd: number; + readonly domainLookupStart: number; + readonly fetchStart: number; + readonly loadEventEnd: number; + readonly loadEventStart: number; + readonly navigationStart: number; + readonly redirectCount: number; + readonly redirectEnd: number; + readonly redirectStart: number; + readonly requestStart: number; + readonly responseEnd: number; + readonly responseStart: number; + readonly type: string; + readonly unloadEventEnd: number; + readonly unloadEventStart: number; } declare var PerformanceNavigationTiming: { @@ -13701,17 +14649,17 @@ declare var PerformanceNavigationTiming: { } interface PerformanceResourceTiming extends PerformanceEntry { - connectEnd: number; - connectStart: number; - domainLookupEnd: number; - domainLookupStart: number; - fetchStart: number; - initiatorType: string; - redirectEnd: number; - redirectStart: number; - requestStart: number; - responseEnd: number; - responseStart: number; + readonly connectEnd: number; + readonly connectStart: number; + readonly domainLookupEnd: number; + readonly domainLookupStart: number; + readonly fetchStart: number; + readonly initiatorType: string; + readonly redirectEnd: number; + readonly redirectStart: number; + readonly requestStart: number; + readonly responseEnd: number; + readonly responseStart: number; } declare var PerformanceResourceTiming: { @@ -13720,27 +14668,27 @@ declare var PerformanceResourceTiming: { } interface PerformanceTiming { - connectEnd: number; - connectStart: number; - domComplete: number; - domContentLoadedEventEnd: number; - domContentLoadedEventStart: number; - domInteractive: number; - domLoading: number; - domainLookupEnd: number; - domainLookupStart: number; - fetchStart: number; - loadEventEnd: number; - loadEventStart: number; - msFirstPaint: number; - navigationStart: number; - redirectEnd: number; - redirectStart: number; - requestStart: number; - responseEnd: number; - responseStart: number; - unloadEventEnd: number; - unloadEventStart: number; + readonly connectEnd: number; + readonly connectStart: number; + readonly domComplete: number; + readonly domContentLoadedEventEnd: number; + readonly domContentLoadedEventStart: number; + readonly domInteractive: number; + readonly domLoading: number; + readonly domainLookupEnd: number; + readonly domainLookupStart: number; + readonly fetchStart: number; + readonly loadEventEnd: number; + readonly loadEventStart: number; + readonly msFirstPaint: number; + readonly navigationStart: number; + readonly redirectEnd: number; + readonly redirectStart: number; + readonly requestStart: number; + readonly responseEnd: number; + readonly responseStart: number; + readonly unloadEventEnd: number; + readonly unloadEventStart: number; toJSON(): any; } @@ -13758,7 +14706,7 @@ declare var PeriodicWave: { } interface PermissionRequest extends DeferredPermissionRequest { - state: string; + readonly state: string; defer(): void; } @@ -13768,7 +14716,7 @@ declare var PermissionRequest: { } interface PermissionRequestedEvent extends Event { - permissionRequest: PermissionRequest; + readonly permissionRequest: PermissionRequest; } declare var PermissionRequestedEvent: { @@ -13777,11 +14725,11 @@ declare var PermissionRequestedEvent: { } interface Plugin { - description: string; - filename: string; - length: number; - name: string; - version: string; + readonly description: string; + readonly filename: string; + readonly length: number; + readonly name: string; + readonly version: string; item(index: number): MimeType; namedItem(type: string): MimeType; [index: number]: MimeType; @@ -13793,7 +14741,7 @@ declare var Plugin: { } interface PluginArray { - length: number; + readonly length: number; item(index: number): Plugin; namedItem(name: string): Plugin; refresh(reload?: boolean): void; @@ -13806,18 +14754,18 @@ declare var PluginArray: { } interface PointerEvent extends MouseEvent { - currentPoint: any; - height: number; - hwTimestamp: number; - intermediatePoints: any; - isPrimary: boolean; - pointerId: number; - pointerType: any; - pressure: number; - rotation: number; - tiltX: number; - tiltY: number; - width: number; + readonly currentPoint: any; + readonly height: number; + readonly hwTimestamp: number; + readonly intermediatePoints: any; + readonly isPrimary: boolean; + readonly pointerId: number; + readonly pointerType: any; + readonly pressure: number; + readonly rotation: number; + readonly tiltX: number; + readonly tiltY: number; + readonly width: number; getCurrentPoint(element: Element): void; getIntermediatePoints(element: Element): void; initPointerEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, screenXArg: number, screenYArg: number, clientXArg: number, clientYArg: number, ctrlKeyArg: boolean, altKeyArg: boolean, shiftKeyArg: boolean, metaKeyArg: boolean, buttonArg: number, relatedTargetArg: EventTarget, offsetXArg: number, offsetYArg: number, widthArg: number, heightArg: number, pressure: number, rotation: number, tiltX: number, tiltY: number, pointerIdArg: number, pointerType: any, hwTimestampArg: number, isPrimary: boolean): void; @@ -13829,7 +14777,7 @@ declare var PointerEvent: { } interface PopStateEvent extends Event { - state: any; + readonly state: any; initPopStateEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, stateArg: any): void; } @@ -13839,8 +14787,8 @@ declare var PopStateEvent: { } interface Position { - coords: Coordinates; - timestamp: number; + readonly coords: Coordinates; + readonly timestamp: number; } declare var Position: { @@ -13849,24 +14797,24 @@ declare var Position: { } interface PositionError { - code: number; - message: string; + readonly code: number; + readonly message: string; toString(): string; - PERMISSION_DENIED: number; - POSITION_UNAVAILABLE: number; - TIMEOUT: number; + readonly PERMISSION_DENIED: number; + readonly POSITION_UNAVAILABLE: number; + readonly TIMEOUT: number; } declare var PositionError: { prototype: PositionError; new(): PositionError; - PERMISSION_DENIED: number; - POSITION_UNAVAILABLE: number; - TIMEOUT: number; + readonly PERMISSION_DENIED: number; + readonly POSITION_UNAVAILABLE: number; + readonly TIMEOUT: number; } interface ProcessingInstruction extends CharacterData { - target: string; + readonly target: string; } declare var ProcessingInstruction: { @@ -13875,9 +14823,9 @@ declare var ProcessingInstruction: { } interface ProgressEvent extends Event { - lengthComputable: boolean; - loaded: number; - total: number; + readonly lengthComputable: boolean; + readonly loaded: number; + readonly total: number; initProgressEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, lengthComputableArg: boolean, loadedArg: number, totalArg: number): void; } @@ -13886,13 +14834,210 @@ declare var ProgressEvent: { new(type: string, eventInitDict?: ProgressEventInit): ProgressEvent; } +interface RTCDTMFToneChangeEvent extends Event { + readonly tone: string; +} + +declare var RTCDTMFToneChangeEvent: { + prototype: RTCDTMFToneChangeEvent; + new(type: string, eventInitDict: RTCDTMFToneChangeEventInit): RTCDTMFToneChangeEvent; +} + +interface RTCDtlsTransport extends RTCStatsProvider { + ondtlsstatechange: (ev: RTCDtlsTransportStateChangedEvent) => any; + onerror: (ev: Event) => any; + readonly state: string; + readonly transport: RTCIceTransport; + getLocalParameters(): RTCDtlsParameters; + getRemoteCertificates(): ArrayBuffer[]; + getRemoteParameters(): RTCDtlsParameters; + start(remoteParameters: RTCDtlsParameters): void; + stop(): void; + addEventListener(type: "dtlsstatechange", listener: (ev: RTCDtlsTransportStateChangedEvent) => any, useCapture?: boolean): void; + addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +} + +declare var RTCDtlsTransport: { + prototype: RTCDtlsTransport; + new(transport: RTCIceTransport): RTCDtlsTransport; +} + +interface RTCDtlsTransportStateChangedEvent extends Event { + readonly state: string; +} + +declare var RTCDtlsTransportStateChangedEvent: { + prototype: RTCDtlsTransportStateChangedEvent; + new(): RTCDtlsTransportStateChangedEvent; +} + +interface RTCDtmfSender extends EventTarget { + readonly canInsertDTMF: boolean; + readonly duration: number; + readonly interToneGap: number; + ontonechange: (ev: RTCDTMFToneChangeEvent) => any; + readonly sender: RTCRtpSender; + readonly toneBuffer: string; + insertDTMF(tones: string, duration?: number, interToneGap?: number): void; + addEventListener(type: "tonechange", listener: (ev: RTCDTMFToneChangeEvent) => any, useCapture?: boolean): void; + addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +} + +declare var RTCDtmfSender: { + prototype: RTCDtmfSender; + new(sender: RTCRtpSender): RTCDtmfSender; +} + +interface RTCIceCandidatePairChangedEvent extends Event { + readonly pair: RTCIceCandidatePair; +} + +declare var RTCIceCandidatePairChangedEvent: { + prototype: RTCIceCandidatePairChangedEvent; + new(): RTCIceCandidatePairChangedEvent; +} + +interface RTCIceGatherer extends RTCStatsProvider { + readonly component: string; + onerror: (ev: Event) => any; + onlocalcandidate: (ev: RTCIceGathererEvent) => any; + createAssociatedGatherer(): RTCIceGatherer; + getLocalCandidates(): RTCIceCandidate[]; + getLocalParameters(): RTCIceParameters; + addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: "localcandidate", listener: (ev: RTCIceGathererEvent) => any, useCapture?: boolean): void; + addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +} + +declare var RTCIceGatherer: { + prototype: RTCIceGatherer; + new(options: RTCIceGatherOptions): RTCIceGatherer; +} + +interface RTCIceGathererEvent extends Event { + readonly candidate: RTCIceCandidate | RTCIceCandidateComplete; +} + +declare var RTCIceGathererEvent: { + prototype: RTCIceGathererEvent; + new(): RTCIceGathererEvent; +} + +interface RTCIceTransport extends RTCStatsProvider { + readonly component: string; + readonly iceGatherer: RTCIceGatherer; + oncandidatepairchange: (ev: RTCIceCandidatePairChangedEvent) => any; + onicestatechange: (ev: RTCIceTransportStateChangedEvent) => any; + readonly role: string; + readonly state: string; + addRemoteCandidate(remoteCandidate: RTCIceCandidate | RTCIceCandidateComplete): void; + createAssociatedTransport(): RTCIceTransport; + getNominatedCandidatePair(): RTCIceCandidatePair; + getRemoteCandidates(): RTCIceCandidate[]; + getRemoteParameters(): RTCIceParameters; + setRemoteCandidates(remoteCandidates: RTCIceCandidate[]): void; + start(gatherer: RTCIceGatherer, remoteParameters: RTCIceParameters, role?: string): void; + stop(): void; + addEventListener(type: "candidatepairchange", listener: (ev: RTCIceCandidatePairChangedEvent) => any, useCapture?: boolean): void; + addEventListener(type: "icestatechange", listener: (ev: RTCIceTransportStateChangedEvent) => any, useCapture?: boolean): void; + addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +} + +declare var RTCIceTransport: { + prototype: RTCIceTransport; + new(): RTCIceTransport; +} + +interface RTCIceTransportStateChangedEvent extends Event { + readonly state: string; +} + +declare var RTCIceTransportStateChangedEvent: { + prototype: RTCIceTransportStateChangedEvent; + new(): RTCIceTransportStateChangedEvent; +} + +interface RTCRtpReceiver extends RTCStatsProvider { + onerror: (ev: Event) => any; + readonly rtcpTransport: RTCDtlsTransport; + readonly track: MediaStreamTrack; + readonly transport: RTCDtlsTransport | RTCSrtpSdesTransport; + getContributingSources(): RTCRtpContributingSource[]; + receive(parameters: RTCRtpParameters): void; + requestSendCSRC(csrc: number): void; + setTransport(transport: RTCDtlsTransport | RTCSrtpSdesTransport, rtcpTransport?: RTCDtlsTransport): void; + stop(): void; + addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +} + +declare var RTCRtpReceiver: { + prototype: RTCRtpReceiver; + new(transport: RTCDtlsTransport | RTCSrtpSdesTransport, kind: string, rtcpTransport?: RTCDtlsTransport): RTCRtpReceiver; + getCapabilities(kind?: string): RTCRtpCapabilities; +} + +interface RTCRtpSender extends RTCStatsProvider { + onerror: (ev: Event) => any; + onssrcconflict: (ev: RTCSsrcConflictEvent) => any; + readonly rtcpTransport: RTCDtlsTransport; + readonly track: MediaStreamTrack; + readonly transport: RTCDtlsTransport | RTCSrtpSdesTransport; + send(parameters: RTCRtpParameters): void; + setTrack(track: MediaStreamTrack): void; + setTransport(transport: RTCDtlsTransport | RTCSrtpSdesTransport, rtcpTransport?: RTCDtlsTransport): void; + stop(): void; + addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: "ssrcconflict", listener: (ev: RTCSsrcConflictEvent) => any, useCapture?: boolean): void; + addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +} + +declare var RTCRtpSender: { + prototype: RTCRtpSender; + new(track: MediaStreamTrack, transport: RTCDtlsTransport | RTCSrtpSdesTransport, rtcpTransport?: RTCDtlsTransport): RTCRtpSender; + getCapabilities(kind?: string): RTCRtpCapabilities; +} + +interface RTCSrtpSdesTransport extends EventTarget { + onerror: (ev: Event) => any; + readonly transport: RTCIceTransport; + addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +} + +declare var RTCSrtpSdesTransport: { + prototype: RTCSrtpSdesTransport; + new(transport: RTCIceTransport, encryptParameters: RTCSrtpSdesParameters, decryptParameters: RTCSrtpSdesParameters): RTCSrtpSdesTransport; + getLocalParameters(): RTCSrtpSdesParameters[]; +} + +interface RTCSsrcConflictEvent extends Event { + readonly ssrc: number; +} + +declare var RTCSsrcConflictEvent: { + prototype: RTCSsrcConflictEvent; + new(): RTCSsrcConflictEvent; +} + +interface RTCStatsProvider extends EventTarget { + getStats(): PromiseLike; + msGetStats(): PromiseLike; +} + +declare var RTCStatsProvider: { + prototype: RTCStatsProvider; + new(): RTCStatsProvider; +} + interface Range { - collapsed: boolean; - commonAncestorContainer: Node; - endContainer: Node; - endOffset: number; - startContainer: Node; - startOffset: number; + readonly collapsed: boolean; + readonly commonAncestorContainer: Node; + readonly endContainer: Node; + readonly endOffset: number; + readonly startContainer: Node; + readonly startOffset: number; cloneContents(): DocumentFragment; cloneRange(): Range; collapse(toStart: boolean): void; @@ -13915,23 +15060,23 @@ interface Range { setStartBefore(refNode: Node): void; surroundContents(newParent: Node): void; toString(): string; - END_TO_END: number; - END_TO_START: number; - START_TO_END: number; - START_TO_START: number; + readonly END_TO_END: number; + readonly END_TO_START: number; + readonly START_TO_END: number; + readonly START_TO_START: number; } declare var Range: { prototype: Range; new(): Range; - END_TO_END: number; - END_TO_START: number; - START_TO_END: number; - START_TO_START: number; + readonly END_TO_END: number; + readonly END_TO_START: number; + readonly START_TO_END: number; + readonly START_TO_START: number; } interface SVGAElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired, SVGURIReference { - target: SVGAnimatedString; + readonly target: SVGAnimatedString; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -13941,32 +15086,32 @@ declare var SVGAElement: { } interface SVGAngle { - unitType: number; + readonly unitType: number; value: number; valueAsString: string; valueInSpecifiedUnits: number; convertToSpecifiedUnits(unitType: number): void; newValueSpecifiedUnits(unitType: number, valueInSpecifiedUnits: number): void; - SVG_ANGLETYPE_DEG: number; - SVG_ANGLETYPE_GRAD: number; - SVG_ANGLETYPE_RAD: number; - SVG_ANGLETYPE_UNKNOWN: number; - SVG_ANGLETYPE_UNSPECIFIED: number; + readonly SVG_ANGLETYPE_DEG: number; + readonly SVG_ANGLETYPE_GRAD: number; + readonly SVG_ANGLETYPE_RAD: number; + readonly SVG_ANGLETYPE_UNKNOWN: number; + readonly SVG_ANGLETYPE_UNSPECIFIED: number; } declare var SVGAngle: { prototype: SVGAngle; new(): SVGAngle; - SVG_ANGLETYPE_DEG: number; - SVG_ANGLETYPE_GRAD: number; - SVG_ANGLETYPE_RAD: number; - SVG_ANGLETYPE_UNKNOWN: number; - SVG_ANGLETYPE_UNSPECIFIED: number; + readonly SVG_ANGLETYPE_DEG: number; + readonly SVG_ANGLETYPE_GRAD: number; + readonly SVG_ANGLETYPE_RAD: number; + readonly SVG_ANGLETYPE_UNKNOWN: number; + readonly SVG_ANGLETYPE_UNSPECIFIED: number; } interface SVGAnimatedAngle { - animVal: SVGAngle; - baseVal: SVGAngle; + readonly animVal: SVGAngle; + readonly baseVal: SVGAngle; } declare var SVGAnimatedAngle: { @@ -13975,7 +15120,7 @@ declare var SVGAnimatedAngle: { } interface SVGAnimatedBoolean { - animVal: boolean; + readonly animVal: boolean; baseVal: boolean; } @@ -13985,7 +15130,7 @@ declare var SVGAnimatedBoolean: { } interface SVGAnimatedEnumeration { - animVal: number; + readonly animVal: number; baseVal: number; } @@ -13995,7 +15140,7 @@ declare var SVGAnimatedEnumeration: { } interface SVGAnimatedInteger { - animVal: number; + readonly animVal: number; baseVal: number; } @@ -14005,8 +15150,8 @@ declare var SVGAnimatedInteger: { } interface SVGAnimatedLength { - animVal: SVGLength; - baseVal: SVGLength; + readonly animVal: SVGLength; + readonly baseVal: SVGLength; } declare var SVGAnimatedLength: { @@ -14015,8 +15160,8 @@ declare var SVGAnimatedLength: { } interface SVGAnimatedLengthList { - animVal: SVGLengthList; - baseVal: SVGLengthList; + readonly animVal: SVGLengthList; + readonly baseVal: SVGLengthList; } declare var SVGAnimatedLengthList: { @@ -14025,7 +15170,7 @@ declare var SVGAnimatedLengthList: { } interface SVGAnimatedNumber { - animVal: number; + readonly animVal: number; baseVal: number; } @@ -14035,8 +15180,8 @@ declare var SVGAnimatedNumber: { } interface SVGAnimatedNumberList { - animVal: SVGNumberList; - baseVal: SVGNumberList; + readonly animVal: SVGNumberList; + readonly baseVal: SVGNumberList; } declare var SVGAnimatedNumberList: { @@ -14045,8 +15190,8 @@ declare var SVGAnimatedNumberList: { } interface SVGAnimatedPreserveAspectRatio { - animVal: SVGPreserveAspectRatio; - baseVal: SVGPreserveAspectRatio; + readonly animVal: SVGPreserveAspectRatio; + readonly baseVal: SVGPreserveAspectRatio; } declare var SVGAnimatedPreserveAspectRatio: { @@ -14055,8 +15200,8 @@ declare var SVGAnimatedPreserveAspectRatio: { } interface SVGAnimatedRect { - animVal: SVGRect; - baseVal: SVGRect; + readonly animVal: SVGRect; + readonly baseVal: SVGRect; } declare var SVGAnimatedRect: { @@ -14065,7 +15210,7 @@ declare var SVGAnimatedRect: { } interface SVGAnimatedString { - animVal: string; + readonly animVal: string; baseVal: string; } @@ -14075,8 +15220,8 @@ declare var SVGAnimatedString: { } interface SVGAnimatedTransformList { - animVal: SVGTransformList; - baseVal: SVGTransformList; + readonly animVal: SVGTransformList; + readonly baseVal: SVGTransformList; } declare var SVGAnimatedTransformList: { @@ -14085,9 +15230,9 @@ declare var SVGAnimatedTransformList: { } interface SVGCircleElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired { - cx: SVGAnimatedLength; - cy: SVGAnimatedLength; - r: SVGAnimatedLength; + readonly cx: SVGAnimatedLength; + readonly cy: SVGAnimatedLength; + readonly r: SVGAnimatedLength; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -14097,7 +15242,7 @@ declare var SVGCircleElement: { } interface SVGClipPathElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired, SVGUnitTypes { - clipPathUnits: SVGAnimatedEnumeration; + readonly clipPathUnits: SVGAnimatedEnumeration; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -14107,30 +15252,30 @@ declare var SVGClipPathElement: { } interface SVGComponentTransferFunctionElement extends SVGElement { - amplitude: SVGAnimatedNumber; - exponent: SVGAnimatedNumber; - intercept: SVGAnimatedNumber; - offset: SVGAnimatedNumber; - slope: SVGAnimatedNumber; - tableValues: SVGAnimatedNumberList; - type: SVGAnimatedEnumeration; - SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE: number; - SVG_FECOMPONENTTRANSFER_TYPE_GAMMA: number; - SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY: number; - SVG_FECOMPONENTTRANSFER_TYPE_LINEAR: number; - SVG_FECOMPONENTTRANSFER_TYPE_TABLE: number; - SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN: number; + readonly amplitude: SVGAnimatedNumber; + readonly exponent: SVGAnimatedNumber; + readonly intercept: SVGAnimatedNumber; + readonly offset: SVGAnimatedNumber; + readonly slope: SVGAnimatedNumber; + readonly tableValues: SVGAnimatedNumberList; + readonly type: SVGAnimatedEnumeration; + readonly SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE: number; + readonly SVG_FECOMPONENTTRANSFER_TYPE_GAMMA: number; + readonly SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY: number; + readonly SVG_FECOMPONENTTRANSFER_TYPE_LINEAR: number; + readonly SVG_FECOMPONENTTRANSFER_TYPE_TABLE: number; + readonly SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN: number; } declare var SVGComponentTransferFunctionElement: { prototype: SVGComponentTransferFunctionElement; new(): SVGComponentTransferFunctionElement; - SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE: number; - SVG_FECOMPONENTTRANSFER_TYPE_GAMMA: number; - SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY: number; - SVG_FECOMPONENTTRANSFER_TYPE_LINEAR: number; - SVG_FECOMPONENTTRANSFER_TYPE_TABLE: number; - SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN: number; + readonly SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE: number; + readonly SVG_FECOMPONENTTRANSFER_TYPE_GAMMA: number; + readonly SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY: number; + readonly SVG_FECOMPONENTTRANSFER_TYPE_LINEAR: number; + readonly SVG_FECOMPONENTTRANSFER_TYPE_TABLE: number; + readonly SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN: number; } interface SVGDefsElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired { @@ -14152,7 +15297,6 @@ declare var SVGDescElement: { } interface SVGElement extends Element { - id: string; onclick: (ev: MouseEvent) => any; ondblclick: (ev: MouseEvent) => any; onfocusin: (ev: FocusEvent) => any; @@ -14163,8 +15307,8 @@ interface SVGElement extends Element { onmouseout: (ev: MouseEvent) => any; onmouseover: (ev: MouseEvent) => any; onmouseup: (ev: MouseEvent) => any; - ownerSVGElement: SVGSVGElement; - viewportElement: SVGElement; + readonly ownerSVGElement: SVGSVGElement; + readonly viewportElement: SVGElement; xmlbase: string; className: any; addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; @@ -14222,14 +15366,14 @@ declare var SVGElement: { } interface SVGElementInstance extends EventTarget { - childNodes: SVGElementInstanceList; - correspondingElement: SVGElement; - correspondingUseElement: SVGUseElement; - firstChild: SVGElementInstance; - lastChild: SVGElementInstance; - nextSibling: SVGElementInstance; - parentNode: SVGElementInstance; - previousSibling: SVGElementInstance; + readonly childNodes: SVGElementInstanceList; + readonly correspondingElement: SVGElement; + readonly correspondingUseElement: SVGUseElement; + readonly firstChild: SVGElementInstance; + readonly lastChild: SVGElementInstance; + readonly nextSibling: SVGElementInstance; + readonly parentNode: SVGElementInstance; + readonly previousSibling: SVGElementInstance; } declare var SVGElementInstance: { @@ -14238,7 +15382,7 @@ declare var SVGElementInstance: { } interface SVGElementInstanceList { - length: number; + readonly length: number; item(index: number): SVGElementInstance; } @@ -14248,10 +15392,10 @@ declare var SVGElementInstanceList: { } interface SVGEllipseElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired { - cx: SVGAnimatedLength; - cy: SVGAnimatedLength; - rx: SVGAnimatedLength; - ry: SVGAnimatedLength; + readonly cx: SVGAnimatedLength; + readonly cy: SVGAnimatedLength; + readonly rx: SVGAnimatedLength; + readonly ry: SVGAnimatedLength; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -14261,75 +15405,75 @@ declare var SVGEllipseElement: { } interface SVGFEBlendElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - in1: SVGAnimatedString; - in2: SVGAnimatedString; - mode: SVGAnimatedEnumeration; - SVG_FEBLEND_MODE_COLOR: number; - SVG_FEBLEND_MODE_COLOR_BURN: number; - SVG_FEBLEND_MODE_COLOR_DODGE: number; - SVG_FEBLEND_MODE_DARKEN: number; - SVG_FEBLEND_MODE_DIFFERENCE: number; - SVG_FEBLEND_MODE_EXCLUSION: number; - SVG_FEBLEND_MODE_HARD_LIGHT: number; - SVG_FEBLEND_MODE_HUE: number; - SVG_FEBLEND_MODE_LIGHTEN: number; - SVG_FEBLEND_MODE_LUMINOSITY: number; - SVG_FEBLEND_MODE_MULTIPLY: number; - SVG_FEBLEND_MODE_NORMAL: number; - SVG_FEBLEND_MODE_OVERLAY: number; - SVG_FEBLEND_MODE_SATURATION: number; - SVG_FEBLEND_MODE_SCREEN: number; - SVG_FEBLEND_MODE_SOFT_LIGHT: number; - SVG_FEBLEND_MODE_UNKNOWN: number; + readonly in1: SVGAnimatedString; + readonly in2: SVGAnimatedString; + readonly mode: SVGAnimatedEnumeration; + readonly SVG_FEBLEND_MODE_COLOR: number; + readonly SVG_FEBLEND_MODE_COLOR_BURN: number; + readonly SVG_FEBLEND_MODE_COLOR_DODGE: number; + readonly SVG_FEBLEND_MODE_DARKEN: number; + readonly SVG_FEBLEND_MODE_DIFFERENCE: number; + readonly SVG_FEBLEND_MODE_EXCLUSION: number; + readonly SVG_FEBLEND_MODE_HARD_LIGHT: number; + readonly SVG_FEBLEND_MODE_HUE: number; + readonly SVG_FEBLEND_MODE_LIGHTEN: number; + readonly SVG_FEBLEND_MODE_LUMINOSITY: number; + readonly SVG_FEBLEND_MODE_MULTIPLY: number; + readonly SVG_FEBLEND_MODE_NORMAL: number; + readonly SVG_FEBLEND_MODE_OVERLAY: number; + readonly SVG_FEBLEND_MODE_SATURATION: number; + readonly SVG_FEBLEND_MODE_SCREEN: number; + readonly SVG_FEBLEND_MODE_SOFT_LIGHT: number; + readonly SVG_FEBLEND_MODE_UNKNOWN: number; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var SVGFEBlendElement: { prototype: SVGFEBlendElement; new(): SVGFEBlendElement; - SVG_FEBLEND_MODE_COLOR: number; - SVG_FEBLEND_MODE_COLOR_BURN: number; - SVG_FEBLEND_MODE_COLOR_DODGE: number; - SVG_FEBLEND_MODE_DARKEN: number; - SVG_FEBLEND_MODE_DIFFERENCE: number; - SVG_FEBLEND_MODE_EXCLUSION: number; - SVG_FEBLEND_MODE_HARD_LIGHT: number; - SVG_FEBLEND_MODE_HUE: number; - SVG_FEBLEND_MODE_LIGHTEN: number; - SVG_FEBLEND_MODE_LUMINOSITY: number; - SVG_FEBLEND_MODE_MULTIPLY: number; - SVG_FEBLEND_MODE_NORMAL: number; - SVG_FEBLEND_MODE_OVERLAY: number; - SVG_FEBLEND_MODE_SATURATION: number; - SVG_FEBLEND_MODE_SCREEN: number; - SVG_FEBLEND_MODE_SOFT_LIGHT: number; - SVG_FEBLEND_MODE_UNKNOWN: number; + readonly SVG_FEBLEND_MODE_COLOR: number; + readonly SVG_FEBLEND_MODE_COLOR_BURN: number; + readonly SVG_FEBLEND_MODE_COLOR_DODGE: number; + readonly SVG_FEBLEND_MODE_DARKEN: number; + readonly SVG_FEBLEND_MODE_DIFFERENCE: number; + readonly SVG_FEBLEND_MODE_EXCLUSION: number; + readonly SVG_FEBLEND_MODE_HARD_LIGHT: number; + readonly SVG_FEBLEND_MODE_HUE: number; + readonly SVG_FEBLEND_MODE_LIGHTEN: number; + readonly SVG_FEBLEND_MODE_LUMINOSITY: number; + readonly SVG_FEBLEND_MODE_MULTIPLY: number; + readonly SVG_FEBLEND_MODE_NORMAL: number; + readonly SVG_FEBLEND_MODE_OVERLAY: number; + readonly SVG_FEBLEND_MODE_SATURATION: number; + readonly SVG_FEBLEND_MODE_SCREEN: number; + readonly SVG_FEBLEND_MODE_SOFT_LIGHT: number; + readonly SVG_FEBLEND_MODE_UNKNOWN: number; } interface SVGFEColorMatrixElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - in1: SVGAnimatedString; - type: SVGAnimatedEnumeration; - values: SVGAnimatedNumberList; - SVG_FECOLORMATRIX_TYPE_HUEROTATE: number; - SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA: number; - SVG_FECOLORMATRIX_TYPE_MATRIX: number; - SVG_FECOLORMATRIX_TYPE_SATURATE: number; - SVG_FECOLORMATRIX_TYPE_UNKNOWN: number; + readonly in1: SVGAnimatedString; + readonly type: SVGAnimatedEnumeration; + readonly values: SVGAnimatedNumberList; + readonly SVG_FECOLORMATRIX_TYPE_HUEROTATE: number; + readonly SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA: number; + readonly SVG_FECOLORMATRIX_TYPE_MATRIX: number; + readonly SVG_FECOLORMATRIX_TYPE_SATURATE: number; + readonly SVG_FECOLORMATRIX_TYPE_UNKNOWN: number; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var SVGFEColorMatrixElement: { prototype: SVGFEColorMatrixElement; new(): SVGFEColorMatrixElement; - SVG_FECOLORMATRIX_TYPE_HUEROTATE: number; - SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA: number; - SVG_FECOLORMATRIX_TYPE_MATRIX: number; - SVG_FECOLORMATRIX_TYPE_SATURATE: number; - SVG_FECOLORMATRIX_TYPE_UNKNOWN: number; + readonly SVG_FECOLORMATRIX_TYPE_HUEROTATE: number; + readonly SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA: number; + readonly SVG_FECOLORMATRIX_TYPE_MATRIX: number; + readonly SVG_FECOLORMATRIX_TYPE_SATURATE: number; + readonly SVG_FECOLORMATRIX_TYPE_UNKNOWN: number; } interface SVGFEComponentTransferElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - in1: SVGAnimatedString; + readonly in1: SVGAnimatedString; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -14339,70 +15483,70 @@ declare var SVGFEComponentTransferElement: { } interface SVGFECompositeElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - in1: SVGAnimatedString; - in2: SVGAnimatedString; - k1: SVGAnimatedNumber; - k2: SVGAnimatedNumber; - k3: SVGAnimatedNumber; - k4: SVGAnimatedNumber; - operator: SVGAnimatedEnumeration; - SVG_FECOMPOSITE_OPERATOR_ARITHMETIC: number; - SVG_FECOMPOSITE_OPERATOR_ATOP: number; - SVG_FECOMPOSITE_OPERATOR_IN: number; - SVG_FECOMPOSITE_OPERATOR_OUT: number; - SVG_FECOMPOSITE_OPERATOR_OVER: number; - SVG_FECOMPOSITE_OPERATOR_UNKNOWN: number; - SVG_FECOMPOSITE_OPERATOR_XOR: number; + readonly in1: SVGAnimatedString; + readonly in2: SVGAnimatedString; + readonly k1: SVGAnimatedNumber; + readonly k2: SVGAnimatedNumber; + readonly k3: SVGAnimatedNumber; + readonly k4: SVGAnimatedNumber; + readonly operator: SVGAnimatedEnumeration; + readonly SVG_FECOMPOSITE_OPERATOR_ARITHMETIC: number; + readonly SVG_FECOMPOSITE_OPERATOR_ATOP: number; + readonly SVG_FECOMPOSITE_OPERATOR_IN: number; + readonly SVG_FECOMPOSITE_OPERATOR_OUT: number; + readonly SVG_FECOMPOSITE_OPERATOR_OVER: number; + readonly SVG_FECOMPOSITE_OPERATOR_UNKNOWN: number; + readonly SVG_FECOMPOSITE_OPERATOR_XOR: number; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var SVGFECompositeElement: { prototype: SVGFECompositeElement; new(): SVGFECompositeElement; - SVG_FECOMPOSITE_OPERATOR_ARITHMETIC: number; - SVG_FECOMPOSITE_OPERATOR_ATOP: number; - SVG_FECOMPOSITE_OPERATOR_IN: number; - SVG_FECOMPOSITE_OPERATOR_OUT: number; - SVG_FECOMPOSITE_OPERATOR_OVER: number; - SVG_FECOMPOSITE_OPERATOR_UNKNOWN: number; - SVG_FECOMPOSITE_OPERATOR_XOR: number; + readonly SVG_FECOMPOSITE_OPERATOR_ARITHMETIC: number; + readonly SVG_FECOMPOSITE_OPERATOR_ATOP: number; + readonly SVG_FECOMPOSITE_OPERATOR_IN: number; + readonly SVG_FECOMPOSITE_OPERATOR_OUT: number; + readonly SVG_FECOMPOSITE_OPERATOR_OVER: number; + readonly SVG_FECOMPOSITE_OPERATOR_UNKNOWN: number; + readonly SVG_FECOMPOSITE_OPERATOR_XOR: number; } interface SVGFEConvolveMatrixElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - bias: SVGAnimatedNumber; - divisor: SVGAnimatedNumber; - edgeMode: SVGAnimatedEnumeration; - in1: SVGAnimatedString; - kernelMatrix: SVGAnimatedNumberList; - kernelUnitLengthX: SVGAnimatedNumber; - kernelUnitLengthY: SVGAnimatedNumber; - orderX: SVGAnimatedInteger; - orderY: SVGAnimatedInteger; - preserveAlpha: SVGAnimatedBoolean; - targetX: SVGAnimatedInteger; - targetY: SVGAnimatedInteger; - SVG_EDGEMODE_DUPLICATE: number; - SVG_EDGEMODE_NONE: number; - SVG_EDGEMODE_UNKNOWN: number; - SVG_EDGEMODE_WRAP: number; + readonly bias: SVGAnimatedNumber; + readonly divisor: SVGAnimatedNumber; + readonly edgeMode: SVGAnimatedEnumeration; + readonly in1: SVGAnimatedString; + readonly kernelMatrix: SVGAnimatedNumberList; + readonly kernelUnitLengthX: SVGAnimatedNumber; + readonly kernelUnitLengthY: SVGAnimatedNumber; + readonly orderX: SVGAnimatedInteger; + readonly orderY: SVGAnimatedInteger; + readonly preserveAlpha: SVGAnimatedBoolean; + readonly targetX: SVGAnimatedInteger; + readonly targetY: SVGAnimatedInteger; + readonly SVG_EDGEMODE_DUPLICATE: number; + readonly SVG_EDGEMODE_NONE: number; + readonly SVG_EDGEMODE_UNKNOWN: number; + readonly SVG_EDGEMODE_WRAP: number; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var SVGFEConvolveMatrixElement: { prototype: SVGFEConvolveMatrixElement; new(): SVGFEConvolveMatrixElement; - SVG_EDGEMODE_DUPLICATE: number; - SVG_EDGEMODE_NONE: number; - SVG_EDGEMODE_UNKNOWN: number; - SVG_EDGEMODE_WRAP: number; + readonly SVG_EDGEMODE_DUPLICATE: number; + readonly SVG_EDGEMODE_NONE: number; + readonly SVG_EDGEMODE_UNKNOWN: number; + readonly SVG_EDGEMODE_WRAP: number; } interface SVGFEDiffuseLightingElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - diffuseConstant: SVGAnimatedNumber; - in1: SVGAnimatedString; - kernelUnitLengthX: SVGAnimatedNumber; - kernelUnitLengthY: SVGAnimatedNumber; - surfaceScale: SVGAnimatedNumber; + readonly diffuseConstant: SVGAnimatedNumber; + readonly in1: SVGAnimatedString; + readonly kernelUnitLengthX: SVGAnimatedNumber; + readonly kernelUnitLengthY: SVGAnimatedNumber; + readonly surfaceScale: SVGAnimatedNumber; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -14412,32 +15556,32 @@ declare var SVGFEDiffuseLightingElement: { } interface SVGFEDisplacementMapElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - in1: SVGAnimatedString; - in2: SVGAnimatedString; - scale: SVGAnimatedNumber; - xChannelSelector: SVGAnimatedEnumeration; - yChannelSelector: SVGAnimatedEnumeration; - SVG_CHANNEL_A: number; - SVG_CHANNEL_B: number; - SVG_CHANNEL_G: number; - SVG_CHANNEL_R: number; - SVG_CHANNEL_UNKNOWN: number; + readonly in1: SVGAnimatedString; + readonly in2: SVGAnimatedString; + readonly scale: SVGAnimatedNumber; + readonly xChannelSelector: SVGAnimatedEnumeration; + readonly yChannelSelector: SVGAnimatedEnumeration; + readonly SVG_CHANNEL_A: number; + readonly SVG_CHANNEL_B: number; + readonly SVG_CHANNEL_G: number; + readonly SVG_CHANNEL_R: number; + readonly SVG_CHANNEL_UNKNOWN: number; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var SVGFEDisplacementMapElement: { prototype: SVGFEDisplacementMapElement; new(): SVGFEDisplacementMapElement; - SVG_CHANNEL_A: number; - SVG_CHANNEL_B: number; - SVG_CHANNEL_G: number; - SVG_CHANNEL_R: number; - SVG_CHANNEL_UNKNOWN: number; + readonly SVG_CHANNEL_A: number; + readonly SVG_CHANNEL_B: number; + readonly SVG_CHANNEL_G: number; + readonly SVG_CHANNEL_R: number; + readonly SVG_CHANNEL_UNKNOWN: number; } interface SVGFEDistantLightElement extends SVGElement { - azimuth: SVGAnimatedNumber; - elevation: SVGAnimatedNumber; + readonly azimuth: SVGAnimatedNumber; + readonly elevation: SVGAnimatedNumber; } declare var SVGFEDistantLightElement: { @@ -14487,9 +15631,9 @@ declare var SVGFEFuncRElement: { } interface SVGFEGaussianBlurElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - in1: SVGAnimatedString; - stdDeviationX: SVGAnimatedNumber; - stdDeviationY: SVGAnimatedNumber; + readonly in1: SVGAnimatedString; + readonly stdDeviationX: SVGAnimatedNumber; + readonly stdDeviationY: SVGAnimatedNumber; setStdDeviation(stdDeviationX: number, stdDeviationY: number): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -14500,7 +15644,7 @@ declare var SVGFEGaussianBlurElement: { } interface SVGFEImageElement extends SVGElement, SVGFilterPrimitiveStandardAttributes, SVGLangSpace, SVGURIReference, SVGExternalResourcesRequired { - preserveAspectRatio: SVGAnimatedPreserveAspectRatio; + readonly preserveAspectRatio: SVGAnimatedPreserveAspectRatio; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -14519,7 +15663,7 @@ declare var SVGFEMergeElement: { } interface SVGFEMergeNodeElement extends SVGElement { - in1: SVGAnimatedString; + readonly in1: SVGAnimatedString; } declare var SVGFEMergeNodeElement: { @@ -14528,28 +15672,28 @@ declare var SVGFEMergeNodeElement: { } interface SVGFEMorphologyElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - in1: SVGAnimatedString; - operator: SVGAnimatedEnumeration; - radiusX: SVGAnimatedNumber; - radiusY: SVGAnimatedNumber; - SVG_MORPHOLOGY_OPERATOR_DILATE: number; - SVG_MORPHOLOGY_OPERATOR_ERODE: number; - SVG_MORPHOLOGY_OPERATOR_UNKNOWN: number; + readonly in1: SVGAnimatedString; + readonly operator: SVGAnimatedEnumeration; + readonly radiusX: SVGAnimatedNumber; + readonly radiusY: SVGAnimatedNumber; + readonly SVG_MORPHOLOGY_OPERATOR_DILATE: number; + readonly SVG_MORPHOLOGY_OPERATOR_ERODE: number; + readonly SVG_MORPHOLOGY_OPERATOR_UNKNOWN: number; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var SVGFEMorphologyElement: { prototype: SVGFEMorphologyElement; new(): SVGFEMorphologyElement; - SVG_MORPHOLOGY_OPERATOR_DILATE: number; - SVG_MORPHOLOGY_OPERATOR_ERODE: number; - SVG_MORPHOLOGY_OPERATOR_UNKNOWN: number; + readonly SVG_MORPHOLOGY_OPERATOR_DILATE: number; + readonly SVG_MORPHOLOGY_OPERATOR_ERODE: number; + readonly SVG_MORPHOLOGY_OPERATOR_UNKNOWN: number; } interface SVGFEOffsetElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - dx: SVGAnimatedNumber; - dy: SVGAnimatedNumber; - in1: SVGAnimatedString; + readonly dx: SVGAnimatedNumber; + readonly dy: SVGAnimatedNumber; + readonly in1: SVGAnimatedString; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -14559,9 +15703,9 @@ declare var SVGFEOffsetElement: { } interface SVGFEPointLightElement extends SVGElement { - x: SVGAnimatedNumber; - y: SVGAnimatedNumber; - z: SVGAnimatedNumber; + readonly x: SVGAnimatedNumber; + readonly y: SVGAnimatedNumber; + readonly z: SVGAnimatedNumber; } declare var SVGFEPointLightElement: { @@ -14570,12 +15714,12 @@ declare var SVGFEPointLightElement: { } interface SVGFESpecularLightingElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - in1: SVGAnimatedString; - kernelUnitLengthX: SVGAnimatedNumber; - kernelUnitLengthY: SVGAnimatedNumber; - specularConstant: SVGAnimatedNumber; - specularExponent: SVGAnimatedNumber; - surfaceScale: SVGAnimatedNumber; + readonly in1: SVGAnimatedString; + readonly kernelUnitLengthX: SVGAnimatedNumber; + readonly kernelUnitLengthY: SVGAnimatedNumber; + readonly specularConstant: SVGAnimatedNumber; + readonly specularExponent: SVGAnimatedNumber; + readonly surfaceScale: SVGAnimatedNumber; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -14585,14 +15729,14 @@ declare var SVGFESpecularLightingElement: { } interface SVGFESpotLightElement extends SVGElement { - limitingConeAngle: SVGAnimatedNumber; - pointsAtX: SVGAnimatedNumber; - pointsAtY: SVGAnimatedNumber; - pointsAtZ: SVGAnimatedNumber; - specularExponent: SVGAnimatedNumber; - x: SVGAnimatedNumber; - y: SVGAnimatedNumber; - z: SVGAnimatedNumber; + readonly limitingConeAngle: SVGAnimatedNumber; + readonly pointsAtX: SVGAnimatedNumber; + readonly pointsAtY: SVGAnimatedNumber; + readonly pointsAtZ: SVGAnimatedNumber; + readonly specularExponent: SVGAnimatedNumber; + readonly x: SVGAnimatedNumber; + readonly y: SVGAnimatedNumber; + readonly z: SVGAnimatedNumber; } declare var SVGFESpotLightElement: { @@ -14601,7 +15745,7 @@ declare var SVGFESpotLightElement: { } interface SVGFETileElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - in1: SVGAnimatedString; + readonly in1: SVGAnimatedString; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -14611,41 +15755,41 @@ declare var SVGFETileElement: { } interface SVGFETurbulenceElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - baseFrequencyX: SVGAnimatedNumber; - baseFrequencyY: SVGAnimatedNumber; - numOctaves: SVGAnimatedInteger; - seed: SVGAnimatedNumber; - stitchTiles: SVGAnimatedEnumeration; - type: SVGAnimatedEnumeration; - SVG_STITCHTYPE_NOSTITCH: number; - SVG_STITCHTYPE_STITCH: number; - SVG_STITCHTYPE_UNKNOWN: number; - SVG_TURBULENCE_TYPE_FRACTALNOISE: number; - SVG_TURBULENCE_TYPE_TURBULENCE: number; - SVG_TURBULENCE_TYPE_UNKNOWN: number; + readonly baseFrequencyX: SVGAnimatedNumber; + readonly baseFrequencyY: SVGAnimatedNumber; + readonly numOctaves: SVGAnimatedInteger; + readonly seed: SVGAnimatedNumber; + readonly stitchTiles: SVGAnimatedEnumeration; + readonly type: SVGAnimatedEnumeration; + readonly SVG_STITCHTYPE_NOSTITCH: number; + readonly SVG_STITCHTYPE_STITCH: number; + readonly SVG_STITCHTYPE_UNKNOWN: number; + readonly SVG_TURBULENCE_TYPE_FRACTALNOISE: number; + readonly SVG_TURBULENCE_TYPE_TURBULENCE: number; + readonly SVG_TURBULENCE_TYPE_UNKNOWN: number; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var SVGFETurbulenceElement: { prototype: SVGFETurbulenceElement; new(): SVGFETurbulenceElement; - SVG_STITCHTYPE_NOSTITCH: number; - SVG_STITCHTYPE_STITCH: number; - SVG_STITCHTYPE_UNKNOWN: number; - SVG_TURBULENCE_TYPE_FRACTALNOISE: number; - SVG_TURBULENCE_TYPE_TURBULENCE: number; - SVG_TURBULENCE_TYPE_UNKNOWN: number; + readonly SVG_STITCHTYPE_NOSTITCH: number; + readonly SVG_STITCHTYPE_STITCH: number; + readonly SVG_STITCHTYPE_UNKNOWN: number; + readonly SVG_TURBULENCE_TYPE_FRACTALNOISE: number; + readonly SVG_TURBULENCE_TYPE_TURBULENCE: number; + readonly SVG_TURBULENCE_TYPE_UNKNOWN: number; } interface SVGFilterElement extends SVGElement, SVGUnitTypes, SVGStylable, SVGLangSpace, SVGURIReference, SVGExternalResourcesRequired { - filterResX: SVGAnimatedInteger; - filterResY: SVGAnimatedInteger; - filterUnits: SVGAnimatedEnumeration; - height: SVGAnimatedLength; - primitiveUnits: SVGAnimatedEnumeration; - width: SVGAnimatedLength; - x: SVGAnimatedLength; - y: SVGAnimatedLength; + readonly filterResX: SVGAnimatedInteger; + readonly filterResY: SVGAnimatedInteger; + readonly filterUnits: SVGAnimatedEnumeration; + readonly height: SVGAnimatedLength; + readonly primitiveUnits: SVGAnimatedEnumeration; + readonly width: SVGAnimatedLength; + readonly x: SVGAnimatedLength; + readonly y: SVGAnimatedLength; setFilterRes(filterResX: number, filterResY: number): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -14656,10 +15800,10 @@ declare var SVGFilterElement: { } interface SVGForeignObjectElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired { - height: SVGAnimatedLength; - width: SVGAnimatedLength; - x: SVGAnimatedLength; - y: SVGAnimatedLength; + readonly height: SVGAnimatedLength; + readonly width: SVGAnimatedLength; + readonly x: SVGAnimatedLength; + readonly y: SVGAnimatedLength; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -14678,31 +15822,31 @@ declare var SVGGElement: { } interface SVGGradientElement extends SVGElement, SVGStylable, SVGExternalResourcesRequired, SVGURIReference, SVGUnitTypes { - gradientTransform: SVGAnimatedTransformList; - gradientUnits: SVGAnimatedEnumeration; - spreadMethod: SVGAnimatedEnumeration; - SVG_SPREADMETHOD_PAD: number; - SVG_SPREADMETHOD_REFLECT: number; - SVG_SPREADMETHOD_REPEAT: number; - SVG_SPREADMETHOD_UNKNOWN: number; + readonly gradientTransform: SVGAnimatedTransformList; + readonly gradientUnits: SVGAnimatedEnumeration; + readonly spreadMethod: SVGAnimatedEnumeration; + readonly SVG_SPREADMETHOD_PAD: number; + readonly SVG_SPREADMETHOD_REFLECT: number; + readonly SVG_SPREADMETHOD_REPEAT: number; + readonly SVG_SPREADMETHOD_UNKNOWN: number; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var SVGGradientElement: { prototype: SVGGradientElement; new(): SVGGradientElement; - SVG_SPREADMETHOD_PAD: number; - SVG_SPREADMETHOD_REFLECT: number; - SVG_SPREADMETHOD_REPEAT: number; - SVG_SPREADMETHOD_UNKNOWN: number; + readonly SVG_SPREADMETHOD_PAD: number; + readonly SVG_SPREADMETHOD_REFLECT: number; + readonly SVG_SPREADMETHOD_REPEAT: number; + readonly SVG_SPREADMETHOD_UNKNOWN: number; } interface SVGImageElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired, SVGURIReference { - height: SVGAnimatedLength; - preserveAspectRatio: SVGAnimatedPreserveAspectRatio; - width: SVGAnimatedLength; - x: SVGAnimatedLength; - y: SVGAnimatedLength; + readonly height: SVGAnimatedLength; + readonly preserveAspectRatio: SVGAnimatedPreserveAspectRatio; + readonly width: SVGAnimatedLength; + readonly x: SVGAnimatedLength; + readonly y: SVGAnimatedLength; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -14712,43 +15856,43 @@ declare var SVGImageElement: { } interface SVGLength { - unitType: number; + readonly unitType: number; value: number; valueAsString: string; valueInSpecifiedUnits: number; convertToSpecifiedUnits(unitType: number): void; newValueSpecifiedUnits(unitType: number, valueInSpecifiedUnits: number): void; - SVG_LENGTHTYPE_CM: number; - SVG_LENGTHTYPE_EMS: number; - SVG_LENGTHTYPE_EXS: number; - SVG_LENGTHTYPE_IN: number; - SVG_LENGTHTYPE_MM: number; - SVG_LENGTHTYPE_NUMBER: number; - SVG_LENGTHTYPE_PC: number; - SVG_LENGTHTYPE_PERCENTAGE: number; - SVG_LENGTHTYPE_PT: number; - SVG_LENGTHTYPE_PX: number; - SVG_LENGTHTYPE_UNKNOWN: number; + readonly SVG_LENGTHTYPE_CM: number; + readonly SVG_LENGTHTYPE_EMS: number; + readonly SVG_LENGTHTYPE_EXS: number; + readonly SVG_LENGTHTYPE_IN: number; + readonly SVG_LENGTHTYPE_MM: number; + readonly SVG_LENGTHTYPE_NUMBER: number; + readonly SVG_LENGTHTYPE_PC: number; + readonly SVG_LENGTHTYPE_PERCENTAGE: number; + readonly SVG_LENGTHTYPE_PT: number; + readonly SVG_LENGTHTYPE_PX: number; + readonly SVG_LENGTHTYPE_UNKNOWN: number; } declare var SVGLength: { prototype: SVGLength; new(): SVGLength; - SVG_LENGTHTYPE_CM: number; - SVG_LENGTHTYPE_EMS: number; - SVG_LENGTHTYPE_EXS: number; - SVG_LENGTHTYPE_IN: number; - SVG_LENGTHTYPE_MM: number; - SVG_LENGTHTYPE_NUMBER: number; - SVG_LENGTHTYPE_PC: number; - SVG_LENGTHTYPE_PERCENTAGE: number; - SVG_LENGTHTYPE_PT: number; - SVG_LENGTHTYPE_PX: number; - SVG_LENGTHTYPE_UNKNOWN: number; + readonly SVG_LENGTHTYPE_CM: number; + readonly SVG_LENGTHTYPE_EMS: number; + readonly SVG_LENGTHTYPE_EXS: number; + readonly SVG_LENGTHTYPE_IN: number; + readonly SVG_LENGTHTYPE_MM: number; + readonly SVG_LENGTHTYPE_NUMBER: number; + readonly SVG_LENGTHTYPE_PC: number; + readonly SVG_LENGTHTYPE_PERCENTAGE: number; + readonly SVG_LENGTHTYPE_PT: number; + readonly SVG_LENGTHTYPE_PX: number; + readonly SVG_LENGTHTYPE_UNKNOWN: number; } interface SVGLengthList { - numberOfItems: number; + readonly numberOfItems: number; appendItem(newItem: SVGLength): SVGLength; clear(): void; getItem(index: number): SVGLength; @@ -14764,10 +15908,10 @@ declare var SVGLengthList: { } interface SVGLineElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired { - x1: SVGAnimatedLength; - x2: SVGAnimatedLength; - y1: SVGAnimatedLength; - y2: SVGAnimatedLength; + readonly x1: SVGAnimatedLength; + readonly x2: SVGAnimatedLength; + readonly y1: SVGAnimatedLength; + readonly y2: SVGAnimatedLength; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -14777,10 +15921,10 @@ declare var SVGLineElement: { } interface SVGLinearGradientElement extends SVGGradientElement { - x1: SVGAnimatedLength; - x2: SVGAnimatedLength; - y1: SVGAnimatedLength; - y2: SVGAnimatedLength; + readonly x1: SVGAnimatedLength; + readonly x2: SVGAnimatedLength; + readonly y1: SVGAnimatedLength; + readonly y2: SVGAnimatedLength; } declare var SVGLinearGradientElement: { @@ -14789,42 +15933,42 @@ declare var SVGLinearGradientElement: { } interface SVGMarkerElement extends SVGElement, SVGStylable, SVGLangSpace, SVGExternalResourcesRequired, SVGFitToViewBox { - markerHeight: SVGAnimatedLength; - markerUnits: SVGAnimatedEnumeration; - markerWidth: SVGAnimatedLength; - orientAngle: SVGAnimatedAngle; - orientType: SVGAnimatedEnumeration; - refX: SVGAnimatedLength; - refY: SVGAnimatedLength; + readonly markerHeight: SVGAnimatedLength; + readonly markerUnits: SVGAnimatedEnumeration; + readonly markerWidth: SVGAnimatedLength; + readonly orientAngle: SVGAnimatedAngle; + readonly orientType: SVGAnimatedEnumeration; + readonly refX: SVGAnimatedLength; + readonly refY: SVGAnimatedLength; setOrientToAngle(angle: SVGAngle): void; setOrientToAuto(): void; - SVG_MARKERUNITS_STROKEWIDTH: number; - SVG_MARKERUNITS_UNKNOWN: number; - SVG_MARKERUNITS_USERSPACEONUSE: number; - SVG_MARKER_ORIENT_ANGLE: number; - SVG_MARKER_ORIENT_AUTO: number; - SVG_MARKER_ORIENT_UNKNOWN: number; + readonly SVG_MARKERUNITS_STROKEWIDTH: number; + readonly SVG_MARKERUNITS_UNKNOWN: number; + readonly SVG_MARKERUNITS_USERSPACEONUSE: number; + readonly SVG_MARKER_ORIENT_ANGLE: number; + readonly SVG_MARKER_ORIENT_AUTO: number; + readonly SVG_MARKER_ORIENT_UNKNOWN: number; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var SVGMarkerElement: { prototype: SVGMarkerElement; new(): SVGMarkerElement; - SVG_MARKERUNITS_STROKEWIDTH: number; - SVG_MARKERUNITS_UNKNOWN: number; - SVG_MARKERUNITS_USERSPACEONUSE: number; - SVG_MARKER_ORIENT_ANGLE: number; - SVG_MARKER_ORIENT_AUTO: number; - SVG_MARKER_ORIENT_UNKNOWN: number; + readonly SVG_MARKERUNITS_STROKEWIDTH: number; + readonly SVG_MARKERUNITS_UNKNOWN: number; + readonly SVG_MARKERUNITS_USERSPACEONUSE: number; + readonly SVG_MARKER_ORIENT_ANGLE: number; + readonly SVG_MARKER_ORIENT_AUTO: number; + readonly SVG_MARKER_ORIENT_UNKNOWN: number; } interface SVGMaskElement extends SVGElement, SVGStylable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired, SVGUnitTypes { - height: SVGAnimatedLength; - maskContentUnits: SVGAnimatedEnumeration; - maskUnits: SVGAnimatedEnumeration; - width: SVGAnimatedLength; - x: SVGAnimatedLength; - y: SVGAnimatedLength; + readonly height: SVGAnimatedLength; + readonly maskContentUnits: SVGAnimatedEnumeration; + readonly maskUnits: SVGAnimatedEnumeration; + readonly width: SVGAnimatedLength; + readonly x: SVGAnimatedLength; + readonly y: SVGAnimatedLength; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -14876,7 +16020,7 @@ declare var SVGNumber: { } interface SVGNumberList { - numberOfItems: number; + readonly numberOfItems: number; appendItem(newItem: SVGNumber): SVGNumber; clear(): void; getItem(index: number): SVGNumber; @@ -14923,53 +16067,53 @@ declare var SVGPathElement: { } interface SVGPathSeg { - pathSegType: number; - pathSegTypeAsLetter: string; - PATHSEG_ARC_ABS: number; - PATHSEG_ARC_REL: number; - PATHSEG_CLOSEPATH: number; - PATHSEG_CURVETO_CUBIC_ABS: number; - PATHSEG_CURVETO_CUBIC_REL: number; - PATHSEG_CURVETO_CUBIC_SMOOTH_ABS: number; - PATHSEG_CURVETO_CUBIC_SMOOTH_REL: number; - PATHSEG_CURVETO_QUADRATIC_ABS: number; - PATHSEG_CURVETO_QUADRATIC_REL: number; - PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS: number; - PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL: number; - PATHSEG_LINETO_ABS: number; - PATHSEG_LINETO_HORIZONTAL_ABS: number; - PATHSEG_LINETO_HORIZONTAL_REL: number; - PATHSEG_LINETO_REL: number; - PATHSEG_LINETO_VERTICAL_ABS: number; - PATHSEG_LINETO_VERTICAL_REL: number; - PATHSEG_MOVETO_ABS: number; - PATHSEG_MOVETO_REL: number; - PATHSEG_UNKNOWN: number; + readonly pathSegType: number; + readonly pathSegTypeAsLetter: string; + readonly PATHSEG_ARC_ABS: number; + readonly PATHSEG_ARC_REL: number; + readonly PATHSEG_CLOSEPATH: number; + readonly PATHSEG_CURVETO_CUBIC_ABS: number; + readonly PATHSEG_CURVETO_CUBIC_REL: number; + readonly PATHSEG_CURVETO_CUBIC_SMOOTH_ABS: number; + readonly PATHSEG_CURVETO_CUBIC_SMOOTH_REL: number; + readonly PATHSEG_CURVETO_QUADRATIC_ABS: number; + readonly PATHSEG_CURVETO_QUADRATIC_REL: number; + readonly PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS: number; + readonly PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL: number; + readonly PATHSEG_LINETO_ABS: number; + readonly PATHSEG_LINETO_HORIZONTAL_ABS: number; + readonly PATHSEG_LINETO_HORIZONTAL_REL: number; + readonly PATHSEG_LINETO_REL: number; + readonly PATHSEG_LINETO_VERTICAL_ABS: number; + readonly PATHSEG_LINETO_VERTICAL_REL: number; + readonly PATHSEG_MOVETO_ABS: number; + readonly PATHSEG_MOVETO_REL: number; + readonly PATHSEG_UNKNOWN: number; } declare var SVGPathSeg: { prototype: SVGPathSeg; new(): SVGPathSeg; - PATHSEG_ARC_ABS: number; - PATHSEG_ARC_REL: number; - PATHSEG_CLOSEPATH: number; - PATHSEG_CURVETO_CUBIC_ABS: number; - PATHSEG_CURVETO_CUBIC_REL: number; - PATHSEG_CURVETO_CUBIC_SMOOTH_ABS: number; - PATHSEG_CURVETO_CUBIC_SMOOTH_REL: number; - PATHSEG_CURVETO_QUADRATIC_ABS: number; - PATHSEG_CURVETO_QUADRATIC_REL: number; - PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS: number; - PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL: number; - PATHSEG_LINETO_ABS: number; - PATHSEG_LINETO_HORIZONTAL_ABS: number; - PATHSEG_LINETO_HORIZONTAL_REL: number; - PATHSEG_LINETO_REL: number; - PATHSEG_LINETO_VERTICAL_ABS: number; - PATHSEG_LINETO_VERTICAL_REL: number; - PATHSEG_MOVETO_ABS: number; - PATHSEG_MOVETO_REL: number; - PATHSEG_UNKNOWN: number; + readonly PATHSEG_ARC_ABS: number; + readonly PATHSEG_ARC_REL: number; + readonly PATHSEG_CLOSEPATH: number; + readonly PATHSEG_CURVETO_CUBIC_ABS: number; + readonly PATHSEG_CURVETO_CUBIC_REL: number; + readonly PATHSEG_CURVETO_CUBIC_SMOOTH_ABS: number; + readonly PATHSEG_CURVETO_CUBIC_SMOOTH_REL: number; + readonly PATHSEG_CURVETO_QUADRATIC_ABS: number; + readonly PATHSEG_CURVETO_QUADRATIC_REL: number; + readonly PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS: number; + readonly PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL: number; + readonly PATHSEG_LINETO_ABS: number; + readonly PATHSEG_LINETO_HORIZONTAL_ABS: number; + readonly PATHSEG_LINETO_HORIZONTAL_REL: number; + readonly PATHSEG_LINETO_REL: number; + readonly PATHSEG_LINETO_VERTICAL_ABS: number; + readonly PATHSEG_LINETO_VERTICAL_REL: number; + readonly PATHSEG_MOVETO_ABS: number; + readonly PATHSEG_MOVETO_REL: number; + readonly PATHSEG_UNKNOWN: number; } interface SVGPathSegArcAbs extends SVGPathSeg { @@ -15163,7 +16307,7 @@ declare var SVGPathSegLinetoVerticalRel: { } interface SVGPathSegList { - numberOfItems: number; + readonly numberOfItems: number; appendItem(newItem: SVGPathSeg): SVGPathSeg; clear(): void; getItem(index: number): SVGPathSeg; @@ -15199,13 +16343,13 @@ declare var SVGPathSegMovetoRel: { } interface SVGPatternElement extends SVGElement, SVGStylable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired, SVGFitToViewBox, SVGURIReference, SVGUnitTypes { - height: SVGAnimatedLength; - patternContentUnits: SVGAnimatedEnumeration; - patternTransform: SVGAnimatedTransformList; - patternUnits: SVGAnimatedEnumeration; - width: SVGAnimatedLength; - x: SVGAnimatedLength; - y: SVGAnimatedLength; + readonly height: SVGAnimatedLength; + readonly patternContentUnits: SVGAnimatedEnumeration; + readonly patternTransform: SVGAnimatedTransformList; + readonly patternUnits: SVGAnimatedEnumeration; + readonly width: SVGAnimatedLength; + readonly x: SVGAnimatedLength; + readonly y: SVGAnimatedLength; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -15226,7 +16370,7 @@ declare var SVGPoint: { } interface SVGPointList { - numberOfItems: number; + readonly numberOfItems: number; appendItem(newItem: SVGPoint): SVGPoint; clear(): void; getItem(index: number): SVGPoint; @@ -15262,47 +16406,47 @@ declare var SVGPolylineElement: { interface SVGPreserveAspectRatio { align: number; meetOrSlice: number; - SVG_MEETORSLICE_MEET: number; - SVG_MEETORSLICE_SLICE: number; - SVG_MEETORSLICE_UNKNOWN: number; - SVG_PRESERVEASPECTRATIO_NONE: number; - SVG_PRESERVEASPECTRATIO_UNKNOWN: number; - SVG_PRESERVEASPECTRATIO_XMAXYMAX: number; - SVG_PRESERVEASPECTRATIO_XMAXYMID: number; - SVG_PRESERVEASPECTRATIO_XMAXYMIN: number; - SVG_PRESERVEASPECTRATIO_XMIDYMAX: number; - SVG_PRESERVEASPECTRATIO_XMIDYMID: number; - SVG_PRESERVEASPECTRATIO_XMIDYMIN: number; - SVG_PRESERVEASPECTRATIO_XMINYMAX: number; - SVG_PRESERVEASPECTRATIO_XMINYMID: number; - SVG_PRESERVEASPECTRATIO_XMINYMIN: number; + readonly SVG_MEETORSLICE_MEET: number; + readonly SVG_MEETORSLICE_SLICE: number; + readonly SVG_MEETORSLICE_UNKNOWN: number; + readonly SVG_PRESERVEASPECTRATIO_NONE: number; + readonly SVG_PRESERVEASPECTRATIO_UNKNOWN: number; + readonly SVG_PRESERVEASPECTRATIO_XMAXYMAX: number; + readonly SVG_PRESERVEASPECTRATIO_XMAXYMID: number; + readonly SVG_PRESERVEASPECTRATIO_XMAXYMIN: number; + readonly SVG_PRESERVEASPECTRATIO_XMIDYMAX: number; + readonly SVG_PRESERVEASPECTRATIO_XMIDYMID: number; + readonly SVG_PRESERVEASPECTRATIO_XMIDYMIN: number; + readonly SVG_PRESERVEASPECTRATIO_XMINYMAX: number; + readonly SVG_PRESERVEASPECTRATIO_XMINYMID: number; + readonly SVG_PRESERVEASPECTRATIO_XMINYMIN: number; } declare var SVGPreserveAspectRatio: { prototype: SVGPreserveAspectRatio; new(): SVGPreserveAspectRatio; - SVG_MEETORSLICE_MEET: number; - SVG_MEETORSLICE_SLICE: number; - SVG_MEETORSLICE_UNKNOWN: number; - SVG_PRESERVEASPECTRATIO_NONE: number; - SVG_PRESERVEASPECTRATIO_UNKNOWN: number; - SVG_PRESERVEASPECTRATIO_XMAXYMAX: number; - SVG_PRESERVEASPECTRATIO_XMAXYMID: number; - SVG_PRESERVEASPECTRATIO_XMAXYMIN: number; - SVG_PRESERVEASPECTRATIO_XMIDYMAX: number; - SVG_PRESERVEASPECTRATIO_XMIDYMID: number; - SVG_PRESERVEASPECTRATIO_XMIDYMIN: number; - SVG_PRESERVEASPECTRATIO_XMINYMAX: number; - SVG_PRESERVEASPECTRATIO_XMINYMID: number; - SVG_PRESERVEASPECTRATIO_XMINYMIN: number; + readonly SVG_MEETORSLICE_MEET: number; + readonly SVG_MEETORSLICE_SLICE: number; + readonly SVG_MEETORSLICE_UNKNOWN: number; + readonly SVG_PRESERVEASPECTRATIO_NONE: number; + readonly SVG_PRESERVEASPECTRATIO_UNKNOWN: number; + readonly SVG_PRESERVEASPECTRATIO_XMAXYMAX: number; + readonly SVG_PRESERVEASPECTRATIO_XMAXYMID: number; + readonly SVG_PRESERVEASPECTRATIO_XMAXYMIN: number; + readonly SVG_PRESERVEASPECTRATIO_XMIDYMAX: number; + readonly SVG_PRESERVEASPECTRATIO_XMIDYMID: number; + readonly SVG_PRESERVEASPECTRATIO_XMIDYMIN: number; + readonly SVG_PRESERVEASPECTRATIO_XMINYMAX: number; + readonly SVG_PRESERVEASPECTRATIO_XMINYMID: number; + readonly SVG_PRESERVEASPECTRATIO_XMINYMIN: number; } interface SVGRadialGradientElement extends SVGGradientElement { - cx: SVGAnimatedLength; - cy: SVGAnimatedLength; - fx: SVGAnimatedLength; - fy: SVGAnimatedLength; - r: SVGAnimatedLength; + readonly cx: SVGAnimatedLength; + readonly cy: SVGAnimatedLength; + readonly fx: SVGAnimatedLength; + readonly fy: SVGAnimatedLength; + readonly r: SVGAnimatedLength; } declare var SVGRadialGradientElement: { @@ -15323,12 +16467,12 @@ declare var SVGRect: { } interface SVGRectElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired { - height: SVGAnimatedLength; - rx: SVGAnimatedLength; - ry: SVGAnimatedLength; - width: SVGAnimatedLength; - x: SVGAnimatedLength; - y: SVGAnimatedLength; + readonly height: SVGAnimatedLength; + readonly rx: SVGAnimatedLength; + readonly ry: SVGAnimatedLength; + readonly width: SVGAnimatedLength; + readonly x: SVGAnimatedLength; + readonly y: SVGAnimatedLength; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -15341,22 +16485,22 @@ interface SVGSVGElement extends SVGElement, DocumentEvent, SVGLocatable, SVGTest contentScriptType: string; contentStyleType: string; currentScale: number; - currentTranslate: SVGPoint; - height: SVGAnimatedLength; + readonly currentTranslate: SVGPoint; + readonly height: SVGAnimatedLength; onabort: (ev: Event) => any; onerror: (ev: Event) => any; onresize: (ev: UIEvent) => any; onscroll: (ev: UIEvent) => any; onunload: (ev: Event) => any; onzoom: (ev: SVGZoomEvent) => any; - pixelUnitToMillimeterX: number; - pixelUnitToMillimeterY: number; - screenPixelToMillimeterX: number; - screenPixelToMillimeterY: number; - viewport: SVGRect; - width: SVGAnimatedLength; - x: SVGAnimatedLength; - y: SVGAnimatedLength; + readonly pixelUnitToMillimeterX: number; + readonly pixelUnitToMillimeterY: number; + readonly screenPixelToMillimeterX: number; + readonly screenPixelToMillimeterY: number; + readonly viewport: SVGRect; + readonly width: SVGAnimatedLength; + readonly x: SVGAnimatedLength; + readonly y: SVGAnimatedLength; checkEnclosure(element: SVGElement, rect: SVGRect): boolean; checkIntersection(element: SVGElement, rect: SVGRect): boolean; createSVGAngle(): SVGAngle; @@ -15372,8 +16516,8 @@ interface SVGSVGElement extends SVGElement, DocumentEvent, SVGLocatable, SVGTest getComputedStyle(elt: Element, pseudoElt?: string): CSSStyleDeclaration; getCurrentTime(): number; getElementById(elementId: string): Element; - getEnclosureList(rect: SVGRect, referenceElement: SVGElement): NodeList; - getIntersectionList(rect: SVGRect, referenceElement: SVGElement): NodeList; + getEnclosureList(rect: SVGRect, referenceElement: SVGElement): NodeListOf; + getIntersectionList(rect: SVGRect, referenceElement: SVGElement): NodeListOf; pauseAnimations(): void; setCurrentTime(seconds: number): void; suspendRedraw(maxWaitMilliseconds: number): number; @@ -15451,7 +16595,7 @@ declare var SVGScriptElement: { } interface SVGStopElement extends SVGElement, SVGStylable { - offset: SVGAnimatedNumber; + readonly offset: SVGAnimatedNumber; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -15461,7 +16605,7 @@ declare var SVGStopElement: { } interface SVGStringList { - numberOfItems: number; + readonly numberOfItems: number; appendItem(newItem: string): string; clear(): void; getItem(index: number): string; @@ -15477,6 +16621,7 @@ declare var SVGStringList: { } interface SVGStyleElement extends SVGElement, SVGLangSpace { + disabled: boolean; media: string; title: string; type: string; @@ -15515,8 +16660,8 @@ declare var SVGTSpanElement: { } interface SVGTextContentElement extends SVGElement, SVGStylable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired { - lengthAdjust: SVGAnimatedEnumeration; - textLength: SVGAnimatedLength; + readonly lengthAdjust: SVGAnimatedEnumeration; + readonly textLength: SVGAnimatedLength; getCharNumAtPosition(point: SVGPoint): number; getComputedTextLength(): number; getEndPositionOfChar(charnum: number): SVGPoint; @@ -15526,18 +16671,18 @@ interface SVGTextContentElement extends SVGElement, SVGStylable, SVGTests, SVGLa getStartPositionOfChar(charnum: number): SVGPoint; getSubStringLength(charnum: number, nchars: number): number; selectSubString(charnum: number, nchars: number): void; - LENGTHADJUST_SPACING: number; - LENGTHADJUST_SPACINGANDGLYPHS: number; - LENGTHADJUST_UNKNOWN: number; + readonly LENGTHADJUST_SPACING: number; + readonly LENGTHADJUST_SPACINGANDGLYPHS: number; + readonly LENGTHADJUST_UNKNOWN: number; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var SVGTextContentElement: { prototype: SVGTextContentElement; new(): SVGTextContentElement; - LENGTHADJUST_SPACING: number; - LENGTHADJUST_SPACINGANDGLYPHS: number; - LENGTHADJUST_UNKNOWN: number; + readonly LENGTHADJUST_SPACING: number; + readonly LENGTHADJUST_SPACINGANDGLYPHS: number; + readonly LENGTHADJUST_UNKNOWN: number; } interface SVGTextElement extends SVGTextPositioningElement, SVGTransformable { @@ -15550,35 +16695,35 @@ declare var SVGTextElement: { } interface SVGTextPathElement extends SVGTextContentElement, SVGURIReference { - method: SVGAnimatedEnumeration; - spacing: SVGAnimatedEnumeration; - startOffset: SVGAnimatedLength; - TEXTPATH_METHODTYPE_ALIGN: number; - TEXTPATH_METHODTYPE_STRETCH: number; - TEXTPATH_METHODTYPE_UNKNOWN: number; - TEXTPATH_SPACINGTYPE_AUTO: number; - TEXTPATH_SPACINGTYPE_EXACT: number; - TEXTPATH_SPACINGTYPE_UNKNOWN: number; + readonly method: SVGAnimatedEnumeration; + readonly spacing: SVGAnimatedEnumeration; + readonly startOffset: SVGAnimatedLength; + readonly TEXTPATH_METHODTYPE_ALIGN: number; + readonly TEXTPATH_METHODTYPE_STRETCH: number; + readonly TEXTPATH_METHODTYPE_UNKNOWN: number; + readonly TEXTPATH_SPACINGTYPE_AUTO: number; + readonly TEXTPATH_SPACINGTYPE_EXACT: number; + readonly TEXTPATH_SPACINGTYPE_UNKNOWN: number; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var SVGTextPathElement: { prototype: SVGTextPathElement; new(): SVGTextPathElement; - TEXTPATH_METHODTYPE_ALIGN: number; - TEXTPATH_METHODTYPE_STRETCH: number; - TEXTPATH_METHODTYPE_UNKNOWN: number; - TEXTPATH_SPACINGTYPE_AUTO: number; - TEXTPATH_SPACINGTYPE_EXACT: number; - TEXTPATH_SPACINGTYPE_UNKNOWN: number; + readonly TEXTPATH_METHODTYPE_ALIGN: number; + readonly TEXTPATH_METHODTYPE_STRETCH: number; + readonly TEXTPATH_METHODTYPE_UNKNOWN: number; + readonly TEXTPATH_SPACINGTYPE_AUTO: number; + readonly TEXTPATH_SPACINGTYPE_EXACT: number; + readonly TEXTPATH_SPACINGTYPE_UNKNOWN: number; } interface SVGTextPositioningElement extends SVGTextContentElement { - dx: SVGAnimatedLengthList; - dy: SVGAnimatedLengthList; - rotate: SVGAnimatedNumberList; - x: SVGAnimatedLengthList; - y: SVGAnimatedLengthList; + readonly dx: SVGAnimatedLengthList; + readonly dy: SVGAnimatedLengthList; + readonly rotate: SVGAnimatedNumberList; + readonly x: SVGAnimatedLengthList; + readonly y: SVGAnimatedLengthList; } declare var SVGTextPositioningElement: { @@ -15596,38 +16741,38 @@ declare var SVGTitleElement: { } interface SVGTransform { - angle: number; - matrix: SVGMatrix; - type: number; + readonly angle: number; + readonly matrix: SVGMatrix; + readonly type: number; setMatrix(matrix: SVGMatrix): void; setRotate(angle: number, cx: number, cy: number): void; setScale(sx: number, sy: number): void; setSkewX(angle: number): void; setSkewY(angle: number): void; setTranslate(tx: number, ty: number): void; - SVG_TRANSFORM_MATRIX: number; - SVG_TRANSFORM_ROTATE: number; - SVG_TRANSFORM_SCALE: number; - SVG_TRANSFORM_SKEWX: number; - SVG_TRANSFORM_SKEWY: number; - SVG_TRANSFORM_TRANSLATE: number; - SVG_TRANSFORM_UNKNOWN: number; + readonly SVG_TRANSFORM_MATRIX: number; + readonly SVG_TRANSFORM_ROTATE: number; + readonly SVG_TRANSFORM_SCALE: number; + readonly SVG_TRANSFORM_SKEWX: number; + readonly SVG_TRANSFORM_SKEWY: number; + readonly SVG_TRANSFORM_TRANSLATE: number; + readonly SVG_TRANSFORM_UNKNOWN: number; } declare var SVGTransform: { prototype: SVGTransform; new(): SVGTransform; - SVG_TRANSFORM_MATRIX: number; - SVG_TRANSFORM_ROTATE: number; - SVG_TRANSFORM_SCALE: number; - SVG_TRANSFORM_SKEWX: number; - SVG_TRANSFORM_SKEWY: number; - SVG_TRANSFORM_TRANSLATE: number; - SVG_TRANSFORM_UNKNOWN: number; + readonly SVG_TRANSFORM_MATRIX: number; + readonly SVG_TRANSFORM_ROTATE: number; + readonly SVG_TRANSFORM_SCALE: number; + readonly SVG_TRANSFORM_SKEWX: number; + readonly SVG_TRANSFORM_SKEWY: number; + readonly SVG_TRANSFORM_TRANSLATE: number; + readonly SVG_TRANSFORM_UNKNOWN: number; } interface SVGTransformList { - numberOfItems: number; + readonly numberOfItems: number; appendItem(newItem: SVGTransform): SVGTransform; clear(): void; consolidate(): SVGTransform; @@ -15645,19 +16790,19 @@ declare var SVGTransformList: { } interface SVGUnitTypes { - SVG_UNIT_TYPE_OBJECTBOUNDINGBOX: number; - SVG_UNIT_TYPE_UNKNOWN: number; - SVG_UNIT_TYPE_USERSPACEONUSE: number; + readonly SVG_UNIT_TYPE_OBJECTBOUNDINGBOX: number; + readonly SVG_UNIT_TYPE_UNKNOWN: number; + readonly SVG_UNIT_TYPE_USERSPACEONUSE: number; } declare var SVGUnitTypes: SVGUnitTypes; interface SVGUseElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired, SVGURIReference { - animatedInstanceRoot: SVGElementInstance; - height: SVGAnimatedLength; - instanceRoot: SVGElementInstance; - width: SVGAnimatedLength; - x: SVGAnimatedLength; - y: SVGAnimatedLength; + readonly animatedInstanceRoot: SVGElementInstance; + readonly height: SVGAnimatedLength; + readonly instanceRoot: SVGElementInstance; + readonly width: SVGAnimatedLength; + readonly x: SVGAnimatedLength; + readonly y: SVGAnimatedLength; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -15667,7 +16812,7 @@ declare var SVGUseElement: { } interface SVGViewElement extends SVGElement, SVGExternalResourcesRequired, SVGFitToViewBox, SVGZoomAndPan { - viewTarget: SVGStringList; + readonly viewTarget: SVGStringList; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -15677,21 +16822,21 @@ declare var SVGViewElement: { } interface SVGZoomAndPan { - zoomAndPan: number; + readonly zoomAndPan: number; } declare var SVGZoomAndPan: { - SVG_ZOOMANDPAN_DISABLE: number; - SVG_ZOOMANDPAN_MAGNIFY: number; - SVG_ZOOMANDPAN_UNKNOWN: number; + readonly SVG_ZOOMANDPAN_DISABLE: number; + readonly SVG_ZOOMANDPAN_MAGNIFY: number; + readonly SVG_ZOOMANDPAN_UNKNOWN: number; } interface SVGZoomEvent extends UIEvent { - newScale: number; - newTranslate: SVGPoint; - previousScale: number; - previousTranslate: SVGPoint; - zoomRectScreen: SVGRect; + readonly newScale: number; + readonly newTranslate: SVGPoint; + readonly previousScale: number; + readonly previousTranslate: SVGPoint; + readonly zoomRectScreen: SVGRect; } declare var SVGZoomEvent: { @@ -15700,22 +16845,22 @@ declare var SVGZoomEvent: { } interface Screen extends EventTarget { - availHeight: number; - availWidth: number; + readonly availHeight: number; + readonly availWidth: number; bufferDepth: number; - colorDepth: number; - deviceXDPI: number; - deviceYDPI: number; - fontSmoothingEnabled: boolean; - height: number; - logicalXDPI: number; - logicalYDPI: number; - msOrientation: string; + readonly colorDepth: number; + readonly deviceXDPI: number; + readonly deviceYDPI: number; + readonly fontSmoothingEnabled: boolean; + readonly height: number; + readonly logicalXDPI: number; + readonly logicalYDPI: number; + readonly msOrientation: string; onmsorientationchange: (ev: Event) => any; - pixelDepth: number; - systemXDPI: number; - systemYDPI: number; - width: number; + readonly pixelDepth: number; + readonly systemXDPI: number; + readonly systemYDPI: number; + readonly width: number; msLockOrientation(orientations: string | string[]): boolean; msUnlockOrientation(): void; addEventListener(type: "MSOrientationChange", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -15728,8 +16873,8 @@ declare var Screen: { } interface ScriptNotifyEvent extends Event { - callingUri: string; - value: string; + readonly callingUri: string; + readonly value: string; } declare var ScriptNotifyEvent: { @@ -15738,7 +16883,7 @@ declare var ScriptNotifyEvent: { } interface ScriptProcessorNode extends AudioNode { - bufferSize: number; + readonly bufferSize: number; onaudioprocess: (ev: AudioProcessingEvent) => any; addEventListener(type: "audioprocess", listener: (ev: AudioProcessingEvent) => any, useCapture?: boolean): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; @@ -15750,13 +16895,13 @@ declare var ScriptProcessorNode: { } interface Selection { - anchorNode: Node; - anchorOffset: number; - focusNode: Node; - focusOffset: number; - isCollapsed: boolean; - rangeCount: number; - type: string; + readonly anchorNode: Node; + readonly anchorOffset: number; + readonly focusNode: Node; + readonly focusOffset: number; + readonly isCollapsed: boolean; + readonly rangeCount: number; + readonly type: string; addRange(range: Range): void; collapse(parentNode: Node, offset: number): void; collapseToEnd(): void; @@ -15781,12 +16926,12 @@ declare var Selection: { interface SourceBuffer extends EventTarget { appendWindowEnd: number; appendWindowStart: number; - audioTracks: AudioTrackList; - buffered: TimeRanges; + readonly audioTracks: AudioTrackList; + readonly buffered: TimeRanges; mode: string; timestampOffset: number; - updating: boolean; - videoTracks: VideoTrackList; + readonly updating: boolean; + readonly videoTracks: VideoTrackList; abort(): void; appendBuffer(data: ArrayBuffer | ArrayBufferView): void; appendStream(stream: MSStream, maxSize?: number): void; @@ -15799,7 +16944,7 @@ declare var SourceBuffer: { } interface SourceBufferList extends EventTarget { - length: number; + readonly length: number; item(index: number): SourceBuffer; [index: number]: SourceBuffer; } @@ -15810,7 +16955,7 @@ declare var SourceBufferList: { } interface StereoPannerNode extends AudioNode { - pan: AudioParam; + readonly pan: AudioParam; } declare var StereoPannerNode: { @@ -15819,9 +16964,9 @@ declare var StereoPannerNode: { } interface Storage { - length: number; + readonly length: number; clear(): void; - getItem(key: string): any; + getItem(key: string): string; key(index: number): string; removeItem(key: string): void; setItem(key: string, data: string): void; @@ -15835,7 +16980,7 @@ declare var Storage: { } interface StorageEvent extends Event { - url: string; + readonly url: string; key?: string; oldValue?: string; newValue?: string; @@ -15848,7 +16993,7 @@ declare var StorageEvent: { } interface StyleMedia { - type: string; + readonly type: string; matchMedium(mediaquery: string): boolean; } @@ -15859,12 +17004,12 @@ declare var StyleMedia: { interface StyleSheet { disabled: boolean; - href: string; - media: MediaList; - ownerNode: Node; - parentStyleSheet: StyleSheet; - title: string; - type: string; + readonly href: string; + readonly media: MediaList; + readonly ownerNode: Node; + readonly parentStyleSheet: StyleSheet; + readonly title: string; + readonly type: string; } declare var StyleSheet: { @@ -15873,7 +17018,7 @@ declare var StyleSheet: { } interface StyleSheetList { - length: number; + readonly length: number; item(index?: number): StyleSheet; [index: number]: StyleSheet; } @@ -15884,7 +17029,7 @@ declare var StyleSheetList: { } interface StyleSheetPageList { - length: number; + readonly length: number; item(index: number): CSSPageRule; [index: number]: CSSPageRule; } @@ -15895,18 +17040,18 @@ declare var StyleSheetPageList: { } interface SubtleCrypto { - decrypt(algorithm: string | Algorithm, key: CryptoKey, data: ArrayBufferView): any; - deriveBits(algorithm: string | Algorithm, baseKey: CryptoKey, length: number): any; - deriveKey(algorithm: string | Algorithm, baseKey: CryptoKey, derivedKeyType: string | Algorithm, extractable: boolean, keyUsages: string[]): any; - digest(algorithm: string | Algorithm, data: ArrayBufferView): any; - encrypt(algorithm: string | Algorithm, key: CryptoKey, data: ArrayBufferView): any; - exportKey(format: string, key: CryptoKey): any; - generateKey(algorithm: string | Algorithm, extractable: boolean, keyUsages: string[]): any; - importKey(format: string, keyData: ArrayBufferView, algorithm: string | Algorithm, extractable: boolean, keyUsages: string[]): any; - sign(algorithm: string | Algorithm, key: CryptoKey, data: ArrayBufferView): any; - unwrapKey(format: string, wrappedKey: ArrayBufferView, unwrappingKey: CryptoKey, unwrapAlgorithm: string | Algorithm, unwrappedKeyAlgorithm: string | Algorithm, extractable: boolean, keyUsages: string[]): any; - verify(algorithm: string | Algorithm, key: CryptoKey, signature: ArrayBufferView, data: ArrayBufferView): any; - wrapKey(format: string, key: CryptoKey, wrappingKey: CryptoKey, wrapAlgorithm: string | Algorithm): any; + decrypt(algorithm: string | Algorithm, key: CryptoKey, data: ArrayBufferView): PromiseLike; + deriveBits(algorithm: string | Algorithm, baseKey: CryptoKey, length: number): PromiseLike; + deriveKey(algorithm: string | Algorithm, baseKey: CryptoKey, derivedKeyType: string | Algorithm, extractable: boolean, keyUsages: string[]): PromiseLike; + digest(algorithm: string | Algorithm, data: ArrayBufferView): PromiseLike; + encrypt(algorithm: string | Algorithm, key: CryptoKey, data: ArrayBufferView): PromiseLike; + exportKey(format: string, key: CryptoKey): PromiseLike; + generateKey(algorithm: string | Algorithm, extractable: boolean, keyUsages: string[]): PromiseLike; + importKey(format: string, keyData: ArrayBufferView, algorithm: string | Algorithm, extractable: boolean, keyUsages: string[]): PromiseLike; + sign(algorithm: string | Algorithm, key: CryptoKey, data: ArrayBufferView): PromiseLike; + unwrapKey(format: string, wrappedKey: ArrayBufferView, unwrappingKey: CryptoKey, unwrapAlgorithm: string | Algorithm, unwrappedKeyAlgorithm: string | Algorithm, extractable: boolean, keyUsages: string[]): PromiseLike; + verify(algorithm: string | Algorithm, key: CryptoKey, signature: ArrayBufferView, data: ArrayBufferView): PromiseLike; + wrapKey(format: string, key: CryptoKey, wrappingKey: CryptoKey, wrapAlgorithm: string | Algorithm): PromiseLike; } declare var SubtleCrypto: { @@ -15915,8 +17060,7 @@ declare var SubtleCrypto: { } interface Text extends CharacterData { - wholeText: string; - replaceWholeText(content: string): Text; + readonly wholeText: string; splitText(offset: number): Text; } @@ -15926,39 +17070,39 @@ declare var Text: { } interface TextEvent extends UIEvent { - data: string; - inputMethod: number; - locale: string; + readonly data: string; + readonly inputMethod: number; + readonly locale: string; initTextEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, dataArg: string, inputMethod: number, locale: string): void; - DOM_INPUT_METHOD_DROP: number; - DOM_INPUT_METHOD_HANDWRITING: number; - DOM_INPUT_METHOD_IME: number; - DOM_INPUT_METHOD_KEYBOARD: number; - DOM_INPUT_METHOD_MULTIMODAL: number; - DOM_INPUT_METHOD_OPTION: number; - DOM_INPUT_METHOD_PASTE: number; - DOM_INPUT_METHOD_SCRIPT: number; - DOM_INPUT_METHOD_UNKNOWN: number; - DOM_INPUT_METHOD_VOICE: number; + readonly DOM_INPUT_METHOD_DROP: number; + readonly DOM_INPUT_METHOD_HANDWRITING: number; + readonly DOM_INPUT_METHOD_IME: number; + readonly DOM_INPUT_METHOD_KEYBOARD: number; + readonly DOM_INPUT_METHOD_MULTIMODAL: number; + readonly DOM_INPUT_METHOD_OPTION: number; + readonly DOM_INPUT_METHOD_PASTE: number; + readonly DOM_INPUT_METHOD_SCRIPT: number; + readonly DOM_INPUT_METHOD_UNKNOWN: number; + readonly DOM_INPUT_METHOD_VOICE: number; } declare var TextEvent: { prototype: TextEvent; new(): TextEvent; - DOM_INPUT_METHOD_DROP: number; - DOM_INPUT_METHOD_HANDWRITING: number; - DOM_INPUT_METHOD_IME: number; - DOM_INPUT_METHOD_KEYBOARD: number; - DOM_INPUT_METHOD_MULTIMODAL: number; - DOM_INPUT_METHOD_OPTION: number; - DOM_INPUT_METHOD_PASTE: number; - DOM_INPUT_METHOD_SCRIPT: number; - DOM_INPUT_METHOD_UNKNOWN: number; - DOM_INPUT_METHOD_VOICE: number; + readonly DOM_INPUT_METHOD_DROP: number; + readonly DOM_INPUT_METHOD_HANDWRITING: number; + readonly DOM_INPUT_METHOD_IME: number; + readonly DOM_INPUT_METHOD_KEYBOARD: number; + readonly DOM_INPUT_METHOD_MULTIMODAL: number; + readonly DOM_INPUT_METHOD_OPTION: number; + readonly DOM_INPUT_METHOD_PASTE: number; + readonly DOM_INPUT_METHOD_SCRIPT: number; + readonly DOM_INPUT_METHOD_UNKNOWN: number; + readonly DOM_INPUT_METHOD_VOICE: number; } interface TextMetrics { - width: number; + readonly width: number; } declare var TextMetrics: { @@ -15966,83 +17110,27 @@ declare var TextMetrics: { new(): TextMetrics; } -interface TextRange { - boundingHeight: number; - boundingLeft: number; - boundingTop: number; - boundingWidth: number; - htmlText: string; - offsetLeft: number; - offsetTop: number; - text: string; - collapse(start?: boolean): void; - compareEndPoints(how: string, sourceRange: TextRange): number; - duplicate(): TextRange; - execCommand(cmdID: string, showUI?: boolean, value?: any): boolean; - execCommandShowHelp(cmdID: string): boolean; - expand(Unit: string): boolean; - findText(string: string, count?: number, flags?: number): boolean; - getBookmark(): string; - getBoundingClientRect(): ClientRect; - getClientRects(): ClientRectList; - inRange(range: TextRange): boolean; - isEqual(range: TextRange): boolean; - move(unit: string, count?: number): number; - moveEnd(unit: string, count?: number): number; - moveStart(unit: string, count?: number): number; - moveToBookmark(bookmark: string): boolean; - moveToElementText(element: Element): void; - moveToPoint(x: number, y: number): void; - parentElement(): Element; - pasteHTML(html: string): void; - queryCommandEnabled(cmdID: string): boolean; - queryCommandIndeterm(cmdID: string): boolean; - queryCommandState(cmdID: string): boolean; - queryCommandSupported(cmdID: string): boolean; - queryCommandText(cmdID: string): string; - queryCommandValue(cmdID: string): any; - scrollIntoView(fStart?: boolean): void; - select(): void; - setEndPoint(how: string, SourceRange: TextRange): void; -} - -declare var TextRange: { - prototype: TextRange; - new(): TextRange; -} - -interface TextRangeCollection { - length: number; - item(index: number): TextRange; - [index: number]: TextRange; -} - -declare var TextRangeCollection: { - prototype: TextRangeCollection; - new(): TextRangeCollection; -} - interface TextTrack extends EventTarget { - activeCues: TextTrackCueList; - cues: TextTrackCueList; - inBandMetadataTrackDispatchType: string; - kind: string; - label: string; - language: string; + readonly activeCues: TextTrackCueList; + readonly cues: TextTrackCueList; + readonly inBandMetadataTrackDispatchType: string; + readonly kind: string; + readonly label: string; + readonly language: string; mode: any; oncuechange: (ev: Event) => any; onerror: (ev: Event) => any; onload: (ev: Event) => any; - readyState: number; + readonly readyState: number; addCue(cue: TextTrackCue): void; removeCue(cue: TextTrackCue): void; - DISABLED: number; - ERROR: number; - HIDDEN: number; - LOADED: number; - LOADING: number; - NONE: number; - SHOWING: number; + readonly DISABLED: number; + readonly ERROR: number; + readonly HIDDEN: number; + readonly LOADED: number; + readonly LOADING: number; + readonly NONE: number; + readonly SHOWING: number; addEventListener(type: "cuechange", 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; @@ -16052,13 +17140,13 @@ interface TextTrack extends EventTarget { declare var TextTrack: { prototype: TextTrack; new(): TextTrack; - DISABLED: number; - ERROR: number; - HIDDEN: number; - LOADED: number; - LOADING: number; - NONE: number; - SHOWING: number; + readonly DISABLED: number; + readonly ERROR: number; + readonly HIDDEN: number; + readonly LOADED: number; + readonly LOADING: number; + readonly NONE: number; + readonly SHOWING: number; } interface TextTrackCue extends EventTarget { @@ -16069,7 +17157,7 @@ interface TextTrackCue extends EventTarget { pauseOnExit: boolean; startTime: number; text: string; - track: TextTrack; + readonly track: TextTrack; getCueAsHTML(): DocumentFragment; addEventListener(type: "enter", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "exit", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -16082,7 +17170,7 @@ declare var TextTrackCue: { } interface TextTrackCueList { - length: number; + readonly length: number; getCueById(id: string): TextTrackCue; item(index: number): TextTrackCue; [index: number]: TextTrackCue; @@ -16094,7 +17182,7 @@ declare var TextTrackCueList: { } interface TextTrackList extends EventTarget { - length: number; + readonly length: number; onaddtrack: (ev: TrackEvent) => any; item(index: number): TextTrack; addEventListener(type: "addtrack", listener: (ev: TrackEvent) => any, useCapture?: boolean): void; @@ -16108,7 +17196,7 @@ declare var TextTrackList: { } interface TimeRanges { - length: number; + readonly length: number; end(index: number): number; start(index: number): number; } @@ -16119,14 +17207,14 @@ declare var TimeRanges: { } interface Touch { - clientX: number; - clientY: number; - identifier: number; - pageX: number; - pageY: number; - screenX: number; - screenY: number; - target: EventTarget; + readonly clientX: number; + readonly clientY: number; + readonly identifier: number; + readonly pageX: number; + readonly pageY: number; + readonly screenX: number; + readonly screenY: number; + readonly target: EventTarget; } declare var Touch: { @@ -16135,13 +17223,13 @@ declare var Touch: { } interface TouchEvent extends UIEvent { - altKey: boolean; - changedTouches: TouchList; - ctrlKey: boolean; - metaKey: boolean; - shiftKey: boolean; - targetTouches: TouchList; - touches: TouchList; + readonly altKey: boolean; + readonly changedTouches: TouchList; + readonly ctrlKey: boolean; + readonly metaKey: boolean; + readonly shiftKey: boolean; + readonly targetTouches: TouchList; + readonly touches: TouchList; } declare var TouchEvent: { @@ -16150,7 +17238,7 @@ declare var TouchEvent: { } interface TouchList { - length: number; + readonly length: number; item(index: number): Touch; [index: number]: Touch; } @@ -16161,7 +17249,7 @@ declare var TouchList: { } interface TrackEvent extends Event { - track: any; + readonly track: any; } declare var TrackEvent: { @@ -16170,8 +17258,8 @@ declare var TrackEvent: { } interface TransitionEvent extends Event { - elapsedTime: number; - propertyName: string; + readonly elapsedTime: number; + readonly propertyName: string; initTransitionEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, propertyNameArg: string, elapsedTimeArg: number): void; } @@ -16182,10 +17270,10 @@ declare var TransitionEvent: { interface TreeWalker { currentNode: Node; - expandEntityReferences: boolean; - filter: NodeFilter; - root: Node; - whatToShow: number; + readonly expandEntityReferences: boolean; + readonly filter: NodeFilter; + readonly root: Node; + readonly whatToShow: number; firstChild(): Node; lastChild(): Node; nextNode(): Node; @@ -16201,8 +17289,8 @@ declare var TreeWalker: { } interface UIEvent extends Event { - detail: number; - view: Window; + readonly detail: number; + readonly view: Window; initUIEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number): void; } @@ -16212,13 +17300,29 @@ declare var UIEvent: { } interface URL { + hash: string; + host: string; + hostname: string; + href: string; + readonly origin: string; + password: string; + pathname: string; + port: string; + protocol: string; + search: string; + username: string; + toString(): string; +} + +declare var URL: { + prototype: URL; + new(url: string, base?: string): URL; createObjectURL(object: any, options?: ObjectURLOptions): string; revokeObjectURL(url: string): void; } -declare var URL: URL; interface UnviewableContentIdentifiedEvent extends NavigationEventWithReferrer { - mediaType: string; + readonly mediaType: string; } declare var UnviewableContentIdentifiedEvent: { @@ -16227,16 +17331,16 @@ declare var UnviewableContentIdentifiedEvent: { } interface ValidityState { - badInput: boolean; - customError: boolean; - patternMismatch: boolean; - rangeOverflow: boolean; - rangeUnderflow: boolean; - stepMismatch: boolean; - tooLong: boolean; - typeMismatch: boolean; - valid: boolean; - valueMissing: boolean; + readonly badInput: boolean; + readonly customError: boolean; + readonly patternMismatch: boolean; + readonly rangeOverflow: boolean; + readonly rangeUnderflow: boolean; + readonly stepMismatch: boolean; + readonly tooLong: boolean; + readonly typeMismatch: boolean; + readonly valid: boolean; + readonly valueMissing: boolean; } declare var ValidityState: { @@ -16245,11 +17349,11 @@ declare var ValidityState: { } interface VideoPlaybackQuality { - corruptedVideoFrames: number; - creationTime: number; - droppedVideoFrames: number; - totalFrameDelay: number; - totalVideoFrames: number; + readonly corruptedVideoFrames: number; + readonly creationTime: number; + readonly droppedVideoFrames: number; + readonly totalFrameDelay: number; + readonly totalVideoFrames: number; } declare var VideoPlaybackQuality: { @@ -16258,12 +17362,12 @@ declare var VideoPlaybackQuality: { } interface VideoTrack { - id: string; + readonly id: string; kind: string; - label: string; + readonly label: string; language: string; selected: boolean; - sourceBuffer: SourceBuffer; + readonly sourceBuffer: SourceBuffer; } declare var VideoTrack: { @@ -16272,11 +17376,11 @@ declare var VideoTrack: { } interface VideoTrackList extends EventTarget { - length: number; + readonly length: number; onaddtrack: (ev: TrackEvent) => any; onchange: (ev: Event) => any; onremovetrack: (ev: TrackEvent) => any; - selectedIndex: number; + readonly selectedIndex: number; getTrackById(id: string): VideoTrack; item(index: number): VideoTrack; addEventListener(type: "addtrack", listener: (ev: TrackEvent) => any, useCapture?: boolean): void; @@ -16292,41 +17396,41 @@ declare var VideoTrackList: { } interface WEBGL_compressed_texture_s3tc { - COMPRESSED_RGBA_S3TC_DXT1_EXT: number; - COMPRESSED_RGBA_S3TC_DXT3_EXT: number; - COMPRESSED_RGBA_S3TC_DXT5_EXT: number; - COMPRESSED_RGB_S3TC_DXT1_EXT: number; + readonly COMPRESSED_RGBA_S3TC_DXT1_EXT: number; + readonly COMPRESSED_RGBA_S3TC_DXT3_EXT: number; + readonly COMPRESSED_RGBA_S3TC_DXT5_EXT: number; + readonly COMPRESSED_RGB_S3TC_DXT1_EXT: number; } declare var WEBGL_compressed_texture_s3tc: { prototype: WEBGL_compressed_texture_s3tc; new(): WEBGL_compressed_texture_s3tc; - COMPRESSED_RGBA_S3TC_DXT1_EXT: number; - COMPRESSED_RGBA_S3TC_DXT3_EXT: number; - COMPRESSED_RGBA_S3TC_DXT5_EXT: number; - COMPRESSED_RGB_S3TC_DXT1_EXT: number; + readonly COMPRESSED_RGBA_S3TC_DXT1_EXT: number; + readonly COMPRESSED_RGBA_S3TC_DXT3_EXT: number; + readonly COMPRESSED_RGBA_S3TC_DXT5_EXT: number; + readonly COMPRESSED_RGB_S3TC_DXT1_EXT: number; } interface WEBGL_debug_renderer_info { - UNMASKED_RENDERER_WEBGL: number; - UNMASKED_VENDOR_WEBGL: number; + readonly UNMASKED_RENDERER_WEBGL: number; + readonly UNMASKED_VENDOR_WEBGL: number; } declare var WEBGL_debug_renderer_info: { prototype: WEBGL_debug_renderer_info; new(): WEBGL_debug_renderer_info; - UNMASKED_RENDERER_WEBGL: number; - UNMASKED_VENDOR_WEBGL: number; + readonly UNMASKED_RENDERER_WEBGL: number; + readonly UNMASKED_VENDOR_WEBGL: number; } interface WEBGL_depth_texture { - UNSIGNED_INT_24_8_WEBGL: number; + readonly UNSIGNED_INT_24_8_WEBGL: number; } declare var WEBGL_depth_texture: { prototype: WEBGL_depth_texture; new(): WEBGL_depth_texture; - UNSIGNED_INT_24_8_WEBGL: number; + readonly UNSIGNED_INT_24_8_WEBGL: number; } interface WaveShaperNode extends AudioNode { @@ -16340,9 +17444,9 @@ declare var WaveShaperNode: { } interface WebGLActiveInfo { - name: string; - size: number; - type: number; + readonly name: string; + readonly size: number; + readonly type: number; } declare var WebGLActiveInfo: { @@ -16359,12 +17463,12 @@ declare var WebGLBuffer: { } interface WebGLContextEvent extends Event { - statusMessage: string; + readonly statusMessage: string; } declare var WebGLContextEvent: { prototype: WebGLContextEvent; - new(): WebGLContextEvent; + new(type: string, eventInitDict?: WebGLContextEventInit): WebGLContextEvent; } interface WebGLFramebuffer extends WebGLObject { @@ -16400,9 +17504,9 @@ declare var WebGLRenderbuffer: { } interface WebGLRenderingContext { - canvas: HTMLCanvasElement; - drawingBufferHeight: number; - drawingBufferWidth: number; + readonly canvas: HTMLCanvasElement; + readonly drawingBufferHeight: number; + readonly drawingBufferWidth: number; activeTexture(texture: number): void; attachShader(program: WebGLProgram, shader: WebGLShader): void; bindAttribLocation(program: WebGLProgram, index: number, name: string): void; @@ -16517,635 +17621,635 @@ interface WebGLRenderingContext { texSubImage2D(target: number, level: number, xoffset: number, yoffset: number, format: number, type: number, video: HTMLVideoElement): void; texSubImage2D(target: number, level: number, xoffset: number, yoffset: number, format: number, type: number, pixels: ImageData): void; uniform1f(location: WebGLUniformLocation, x: number): void; - uniform1fv(location: WebGLUniformLocation, v: Float32Array): void; + uniform1fv(location: WebGLUniformLocation, v: Float32Array | number[]): void; uniform1i(location: WebGLUniformLocation, x: number): void; - uniform1iv(location: WebGLUniformLocation, v: Int32Array): void; + uniform1iv(location: WebGLUniformLocation, v: Int32Array | number[]): void; uniform2f(location: WebGLUniformLocation, x: number, y: number): void; - uniform2fv(location: WebGLUniformLocation, v: Float32Array): void; + uniform2fv(location: WebGLUniformLocation, v: Float32Array | number[]): void; uniform2i(location: WebGLUniformLocation, x: number, y: number): void; - uniform2iv(location: WebGLUniformLocation, v: Int32Array): void; + uniform2iv(location: WebGLUniformLocation, v: Int32Array | number[]): void; uniform3f(location: WebGLUniformLocation, x: number, y: number, z: number): void; - uniform3fv(location: WebGLUniformLocation, v: Float32Array): void; + uniform3fv(location: WebGLUniformLocation, v: Float32Array | number[]): void; uniform3i(location: WebGLUniformLocation, x: number, y: number, z: number): void; - uniform3iv(location: WebGLUniformLocation, v: Int32Array): void; + uniform3iv(location: WebGLUniformLocation, v: Int32Array | number[]): void; uniform4f(location: WebGLUniformLocation, x: number, y: number, z: number, w: number): void; - uniform4fv(location: WebGLUniformLocation, v: Float32Array): void; + uniform4fv(location: WebGLUniformLocation, v: Float32Array | number[]): void; uniform4i(location: WebGLUniformLocation, x: number, y: number, z: number, w: number): void; - uniform4iv(location: WebGLUniformLocation, v: Int32Array): void; - uniformMatrix2fv(location: WebGLUniformLocation, transpose: boolean, value: Float32Array): void; - uniformMatrix3fv(location: WebGLUniformLocation, transpose: boolean, value: Float32Array): void; - uniformMatrix4fv(location: WebGLUniformLocation, transpose: boolean, value: Float32Array): void; + uniform4iv(location: WebGLUniformLocation, v: Int32Array | number[]): void; + uniformMatrix2fv(location: WebGLUniformLocation, transpose: boolean, value: Float32Array | number[]): void; + uniformMatrix3fv(location: WebGLUniformLocation, transpose: boolean, value: Float32Array | number[]): void; + uniformMatrix4fv(location: WebGLUniformLocation, transpose: boolean, value: Float32Array | number[]): void; useProgram(program: WebGLProgram): void; validateProgram(program: WebGLProgram): void; vertexAttrib1f(indx: number, x: number): void; - vertexAttrib1fv(indx: number, values: Float32Array): void; + vertexAttrib1fv(indx: number, values: Float32Array | number[]): void; vertexAttrib2f(indx: number, x: number, y: number): void; - vertexAttrib2fv(indx: number, values: Float32Array): void; + vertexAttrib2fv(indx: number, values: Float32Array | number[]): void; vertexAttrib3f(indx: number, x: number, y: number, z: number): void; - vertexAttrib3fv(indx: number, values: Float32Array): void; + vertexAttrib3fv(indx: number, values: Float32Array | number[]): void; vertexAttrib4f(indx: number, x: number, y: number, z: number, w: number): void; - vertexAttrib4fv(indx: number, values: Float32Array): void; + vertexAttrib4fv(indx: number, values: Float32Array | number[]): void; vertexAttribPointer(indx: number, size: number, type: number, normalized: boolean, stride: number, offset: number): void; viewport(x: number, y: number, width: number, height: number): void; - ACTIVE_ATTRIBUTES: number; - ACTIVE_TEXTURE: number; - ACTIVE_UNIFORMS: number; - ALIASED_LINE_WIDTH_RANGE: number; - ALIASED_POINT_SIZE_RANGE: number; - ALPHA: number; - ALPHA_BITS: number; - ALWAYS: number; - ARRAY_BUFFER: number; - ARRAY_BUFFER_BINDING: number; - ATTACHED_SHADERS: number; - BACK: number; - BLEND: number; - BLEND_COLOR: number; - BLEND_DST_ALPHA: number; - BLEND_DST_RGB: number; - BLEND_EQUATION: number; - BLEND_EQUATION_ALPHA: number; - BLEND_EQUATION_RGB: number; - BLEND_SRC_ALPHA: number; - BLEND_SRC_RGB: number; - BLUE_BITS: number; - BOOL: number; - BOOL_VEC2: number; - BOOL_VEC3: number; - BOOL_VEC4: number; - BROWSER_DEFAULT_WEBGL: number; - BUFFER_SIZE: number; - BUFFER_USAGE: number; - BYTE: number; - CCW: number; - CLAMP_TO_EDGE: number; - COLOR_ATTACHMENT0: number; - COLOR_BUFFER_BIT: number; - COLOR_CLEAR_VALUE: number; - COLOR_WRITEMASK: number; - COMPILE_STATUS: number; - COMPRESSED_TEXTURE_FORMATS: number; - CONSTANT_ALPHA: number; - CONSTANT_COLOR: number; - CONTEXT_LOST_WEBGL: number; - CULL_FACE: number; - CULL_FACE_MODE: number; - CURRENT_PROGRAM: number; - CURRENT_VERTEX_ATTRIB: number; - CW: number; - DECR: number; - DECR_WRAP: number; - DELETE_STATUS: number; - DEPTH_ATTACHMENT: number; - DEPTH_BITS: number; - DEPTH_BUFFER_BIT: number; - DEPTH_CLEAR_VALUE: number; - DEPTH_COMPONENT: number; - DEPTH_COMPONENT16: number; - DEPTH_FUNC: number; - DEPTH_RANGE: number; - DEPTH_STENCIL: number; - DEPTH_STENCIL_ATTACHMENT: number; - DEPTH_TEST: number; - DEPTH_WRITEMASK: number; - DITHER: number; - DONT_CARE: number; - DST_ALPHA: number; - DST_COLOR: number; - DYNAMIC_DRAW: number; - ELEMENT_ARRAY_BUFFER: number; - ELEMENT_ARRAY_BUFFER_BINDING: number; - EQUAL: number; - FASTEST: number; - FLOAT: number; - FLOAT_MAT2: number; - FLOAT_MAT3: number; - FLOAT_MAT4: number; - FLOAT_VEC2: number; - FLOAT_VEC3: number; - FLOAT_VEC4: number; - FRAGMENT_SHADER: number; - FRAMEBUFFER: number; - FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: number; - FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: number; - FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: number; - FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: number; - FRAMEBUFFER_BINDING: number; - FRAMEBUFFER_COMPLETE: number; - FRAMEBUFFER_INCOMPLETE_ATTACHMENT: number; - FRAMEBUFFER_INCOMPLETE_DIMENSIONS: number; - FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: number; - FRAMEBUFFER_UNSUPPORTED: number; - FRONT: number; - FRONT_AND_BACK: number; - FRONT_FACE: number; - FUNC_ADD: number; - FUNC_REVERSE_SUBTRACT: number; - FUNC_SUBTRACT: number; - GENERATE_MIPMAP_HINT: number; - GEQUAL: number; - GREATER: number; - GREEN_BITS: number; - HIGH_FLOAT: number; - HIGH_INT: number; - IMPLEMENTATION_COLOR_READ_FORMAT: number; - IMPLEMENTATION_COLOR_READ_TYPE: number; - INCR: number; - INCR_WRAP: number; - INT: number; - INT_VEC2: number; - INT_VEC3: number; - INT_VEC4: number; - INVALID_ENUM: number; - INVALID_FRAMEBUFFER_OPERATION: number; - INVALID_OPERATION: number; - INVALID_VALUE: number; - INVERT: number; - KEEP: number; - LEQUAL: number; - LESS: number; - LINEAR: number; - LINEAR_MIPMAP_LINEAR: number; - LINEAR_MIPMAP_NEAREST: number; - LINES: number; - LINE_LOOP: number; - LINE_STRIP: number; - LINE_WIDTH: number; - LINK_STATUS: number; - LOW_FLOAT: number; - LOW_INT: number; - LUMINANCE: number; - LUMINANCE_ALPHA: number; - MAX_COMBINED_TEXTURE_IMAGE_UNITS: number; - MAX_CUBE_MAP_TEXTURE_SIZE: number; - MAX_FRAGMENT_UNIFORM_VECTORS: number; - MAX_RENDERBUFFER_SIZE: number; - MAX_TEXTURE_IMAGE_UNITS: number; - MAX_TEXTURE_SIZE: number; - MAX_VARYING_VECTORS: number; - MAX_VERTEX_ATTRIBS: number; - MAX_VERTEX_TEXTURE_IMAGE_UNITS: number; - MAX_VERTEX_UNIFORM_VECTORS: number; - MAX_VIEWPORT_DIMS: number; - MEDIUM_FLOAT: number; - MEDIUM_INT: number; - MIRRORED_REPEAT: number; - NEAREST: number; - NEAREST_MIPMAP_LINEAR: number; - NEAREST_MIPMAP_NEAREST: number; - NEVER: number; - NICEST: number; - NONE: number; - NOTEQUAL: number; - NO_ERROR: number; - ONE: number; - ONE_MINUS_CONSTANT_ALPHA: number; - ONE_MINUS_CONSTANT_COLOR: number; - ONE_MINUS_DST_ALPHA: number; - ONE_MINUS_DST_COLOR: number; - ONE_MINUS_SRC_ALPHA: number; - ONE_MINUS_SRC_COLOR: number; - OUT_OF_MEMORY: number; - PACK_ALIGNMENT: number; - POINTS: number; - POLYGON_OFFSET_FACTOR: number; - POLYGON_OFFSET_FILL: number; - POLYGON_OFFSET_UNITS: number; - RED_BITS: number; - RENDERBUFFER: number; - RENDERBUFFER_ALPHA_SIZE: number; - RENDERBUFFER_BINDING: number; - RENDERBUFFER_BLUE_SIZE: number; - RENDERBUFFER_DEPTH_SIZE: number; - RENDERBUFFER_GREEN_SIZE: number; - RENDERBUFFER_HEIGHT: number; - RENDERBUFFER_INTERNAL_FORMAT: number; - RENDERBUFFER_RED_SIZE: number; - RENDERBUFFER_STENCIL_SIZE: number; - RENDERBUFFER_WIDTH: number; - RENDERER: number; - REPEAT: number; - REPLACE: number; - RGB: number; - RGB565: number; - RGB5_A1: number; - RGBA: number; - RGBA4: number; - SAMPLER_2D: number; - SAMPLER_CUBE: number; - SAMPLES: number; - SAMPLE_ALPHA_TO_COVERAGE: number; - SAMPLE_BUFFERS: number; - SAMPLE_COVERAGE: number; - SAMPLE_COVERAGE_INVERT: number; - SAMPLE_COVERAGE_VALUE: number; - SCISSOR_BOX: number; - SCISSOR_TEST: number; - SHADER_TYPE: number; - SHADING_LANGUAGE_VERSION: number; - SHORT: number; - SRC_ALPHA: number; - SRC_ALPHA_SATURATE: number; - SRC_COLOR: number; - STATIC_DRAW: number; - STENCIL_ATTACHMENT: number; - STENCIL_BACK_FAIL: number; - STENCIL_BACK_FUNC: number; - STENCIL_BACK_PASS_DEPTH_FAIL: number; - STENCIL_BACK_PASS_DEPTH_PASS: number; - STENCIL_BACK_REF: number; - STENCIL_BACK_VALUE_MASK: number; - STENCIL_BACK_WRITEMASK: number; - STENCIL_BITS: number; - STENCIL_BUFFER_BIT: number; - STENCIL_CLEAR_VALUE: number; - STENCIL_FAIL: number; - STENCIL_FUNC: number; - STENCIL_INDEX: number; - STENCIL_INDEX8: number; - STENCIL_PASS_DEPTH_FAIL: number; - STENCIL_PASS_DEPTH_PASS: number; - STENCIL_REF: number; - STENCIL_TEST: number; - STENCIL_VALUE_MASK: number; - STENCIL_WRITEMASK: number; - STREAM_DRAW: number; - SUBPIXEL_BITS: number; - TEXTURE: number; - TEXTURE0: number; - TEXTURE1: number; - TEXTURE10: number; - TEXTURE11: number; - TEXTURE12: number; - TEXTURE13: number; - TEXTURE14: number; - TEXTURE15: number; - TEXTURE16: number; - TEXTURE17: number; - TEXTURE18: number; - TEXTURE19: number; - TEXTURE2: number; - TEXTURE20: number; - TEXTURE21: number; - TEXTURE22: number; - TEXTURE23: number; - TEXTURE24: number; - TEXTURE25: number; - TEXTURE26: number; - TEXTURE27: number; - TEXTURE28: number; - TEXTURE29: number; - TEXTURE3: number; - TEXTURE30: number; - TEXTURE31: number; - TEXTURE4: number; - TEXTURE5: number; - TEXTURE6: number; - TEXTURE7: number; - TEXTURE8: number; - TEXTURE9: number; - TEXTURE_2D: number; - TEXTURE_BINDING_2D: number; - TEXTURE_BINDING_CUBE_MAP: number; - TEXTURE_CUBE_MAP: number; - TEXTURE_CUBE_MAP_NEGATIVE_X: number; - TEXTURE_CUBE_MAP_NEGATIVE_Y: number; - TEXTURE_CUBE_MAP_NEGATIVE_Z: number; - TEXTURE_CUBE_MAP_POSITIVE_X: number; - TEXTURE_CUBE_MAP_POSITIVE_Y: number; - TEXTURE_CUBE_MAP_POSITIVE_Z: number; - TEXTURE_MAG_FILTER: number; - TEXTURE_MIN_FILTER: number; - TEXTURE_WRAP_S: number; - TEXTURE_WRAP_T: number; - TRIANGLES: number; - TRIANGLE_FAN: number; - TRIANGLE_STRIP: number; - UNPACK_ALIGNMENT: number; - UNPACK_COLORSPACE_CONVERSION_WEBGL: number; - UNPACK_FLIP_Y_WEBGL: number; - UNPACK_PREMULTIPLY_ALPHA_WEBGL: number; - UNSIGNED_BYTE: number; - UNSIGNED_INT: number; - UNSIGNED_SHORT: number; - UNSIGNED_SHORT_4_4_4_4: number; - UNSIGNED_SHORT_5_5_5_1: number; - UNSIGNED_SHORT_5_6_5: number; - VALIDATE_STATUS: number; - VENDOR: number; - VERSION: number; - VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: number; - VERTEX_ATTRIB_ARRAY_ENABLED: number; - VERTEX_ATTRIB_ARRAY_NORMALIZED: number; - VERTEX_ATTRIB_ARRAY_POINTER: number; - VERTEX_ATTRIB_ARRAY_SIZE: number; - VERTEX_ATTRIB_ARRAY_STRIDE: number; - VERTEX_ATTRIB_ARRAY_TYPE: number; - VERTEX_SHADER: number; - VIEWPORT: number; - ZERO: number; + readonly ACTIVE_ATTRIBUTES: number; + readonly ACTIVE_TEXTURE: number; + readonly ACTIVE_UNIFORMS: number; + readonly ALIASED_LINE_WIDTH_RANGE: number; + readonly ALIASED_POINT_SIZE_RANGE: number; + readonly ALPHA: number; + readonly ALPHA_BITS: number; + readonly ALWAYS: number; + readonly ARRAY_BUFFER: number; + readonly ARRAY_BUFFER_BINDING: number; + readonly ATTACHED_SHADERS: number; + readonly BACK: number; + readonly BLEND: number; + readonly BLEND_COLOR: number; + readonly BLEND_DST_ALPHA: number; + readonly BLEND_DST_RGB: number; + readonly BLEND_EQUATION: number; + readonly BLEND_EQUATION_ALPHA: number; + readonly BLEND_EQUATION_RGB: number; + readonly BLEND_SRC_ALPHA: number; + readonly BLEND_SRC_RGB: number; + readonly BLUE_BITS: number; + readonly BOOL: number; + readonly BOOL_VEC2: number; + readonly BOOL_VEC3: number; + readonly BOOL_VEC4: number; + readonly BROWSER_DEFAULT_WEBGL: number; + readonly BUFFER_SIZE: number; + readonly BUFFER_USAGE: number; + readonly BYTE: number; + readonly CCW: number; + readonly CLAMP_TO_EDGE: number; + readonly COLOR_ATTACHMENT0: number; + readonly COLOR_BUFFER_BIT: number; + readonly COLOR_CLEAR_VALUE: number; + readonly COLOR_WRITEMASK: number; + readonly COMPILE_STATUS: number; + readonly COMPRESSED_TEXTURE_FORMATS: number; + readonly CONSTANT_ALPHA: number; + readonly CONSTANT_COLOR: number; + readonly CONTEXT_LOST_WEBGL: number; + readonly CULL_FACE: number; + readonly CULL_FACE_MODE: number; + readonly CURRENT_PROGRAM: number; + readonly CURRENT_VERTEX_ATTRIB: number; + readonly CW: number; + readonly DECR: number; + readonly DECR_WRAP: number; + readonly DELETE_STATUS: number; + readonly DEPTH_ATTACHMENT: number; + readonly DEPTH_BITS: number; + readonly DEPTH_BUFFER_BIT: number; + readonly DEPTH_CLEAR_VALUE: number; + readonly DEPTH_COMPONENT: number; + readonly DEPTH_COMPONENT16: number; + readonly DEPTH_FUNC: number; + readonly DEPTH_RANGE: number; + readonly DEPTH_STENCIL: number; + readonly DEPTH_STENCIL_ATTACHMENT: number; + readonly DEPTH_TEST: number; + readonly DEPTH_WRITEMASK: number; + readonly DITHER: number; + readonly DONT_CARE: number; + readonly DST_ALPHA: number; + readonly DST_COLOR: number; + readonly DYNAMIC_DRAW: number; + readonly ELEMENT_ARRAY_BUFFER: number; + readonly ELEMENT_ARRAY_BUFFER_BINDING: number; + readonly EQUAL: number; + readonly FASTEST: number; + readonly FLOAT: number; + readonly FLOAT_MAT2: number; + readonly FLOAT_MAT3: number; + readonly FLOAT_MAT4: number; + readonly FLOAT_VEC2: number; + readonly FLOAT_VEC3: number; + readonly FLOAT_VEC4: number; + readonly FRAGMENT_SHADER: number; + readonly FRAMEBUFFER: number; + readonly FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: number; + readonly FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: number; + readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: number; + readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: number; + readonly FRAMEBUFFER_BINDING: number; + readonly FRAMEBUFFER_COMPLETE: number; + readonly FRAMEBUFFER_INCOMPLETE_ATTACHMENT: number; + readonly FRAMEBUFFER_INCOMPLETE_DIMENSIONS: number; + readonly FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: number; + readonly FRAMEBUFFER_UNSUPPORTED: number; + readonly FRONT: number; + readonly FRONT_AND_BACK: number; + readonly FRONT_FACE: number; + readonly FUNC_ADD: number; + readonly FUNC_REVERSE_SUBTRACT: number; + readonly FUNC_SUBTRACT: number; + readonly GENERATE_MIPMAP_HINT: number; + readonly GEQUAL: number; + readonly GREATER: number; + readonly GREEN_BITS: number; + readonly HIGH_FLOAT: number; + readonly HIGH_INT: number; + readonly IMPLEMENTATION_COLOR_READ_FORMAT: number; + readonly IMPLEMENTATION_COLOR_READ_TYPE: number; + readonly INCR: number; + readonly INCR_WRAP: number; + readonly INT: number; + readonly INT_VEC2: number; + readonly INT_VEC3: number; + readonly INT_VEC4: number; + readonly INVALID_ENUM: number; + readonly INVALID_FRAMEBUFFER_OPERATION: number; + readonly INVALID_OPERATION: number; + readonly INVALID_VALUE: number; + readonly INVERT: number; + readonly KEEP: number; + readonly LEQUAL: number; + readonly LESS: number; + readonly LINEAR: number; + readonly LINEAR_MIPMAP_LINEAR: number; + readonly LINEAR_MIPMAP_NEAREST: number; + readonly LINES: number; + readonly LINE_LOOP: number; + readonly LINE_STRIP: number; + readonly LINE_WIDTH: number; + readonly LINK_STATUS: number; + readonly LOW_FLOAT: number; + readonly LOW_INT: number; + readonly LUMINANCE: number; + readonly LUMINANCE_ALPHA: number; + readonly MAX_COMBINED_TEXTURE_IMAGE_UNITS: number; + readonly MAX_CUBE_MAP_TEXTURE_SIZE: number; + readonly MAX_FRAGMENT_UNIFORM_VECTORS: number; + readonly MAX_RENDERBUFFER_SIZE: number; + readonly MAX_TEXTURE_IMAGE_UNITS: number; + readonly MAX_TEXTURE_SIZE: number; + readonly MAX_VARYING_VECTORS: number; + readonly MAX_VERTEX_ATTRIBS: number; + readonly MAX_VERTEX_TEXTURE_IMAGE_UNITS: number; + readonly MAX_VERTEX_UNIFORM_VECTORS: number; + readonly MAX_VIEWPORT_DIMS: number; + readonly MEDIUM_FLOAT: number; + readonly MEDIUM_INT: number; + readonly MIRRORED_REPEAT: number; + readonly NEAREST: number; + readonly NEAREST_MIPMAP_LINEAR: number; + readonly NEAREST_MIPMAP_NEAREST: number; + readonly NEVER: number; + readonly NICEST: number; + readonly NONE: number; + readonly NOTEQUAL: number; + readonly NO_ERROR: number; + readonly ONE: number; + readonly ONE_MINUS_CONSTANT_ALPHA: number; + readonly ONE_MINUS_CONSTANT_COLOR: number; + readonly ONE_MINUS_DST_ALPHA: number; + readonly ONE_MINUS_DST_COLOR: number; + readonly ONE_MINUS_SRC_ALPHA: number; + readonly ONE_MINUS_SRC_COLOR: number; + readonly OUT_OF_MEMORY: number; + readonly PACK_ALIGNMENT: number; + readonly POINTS: number; + readonly POLYGON_OFFSET_FACTOR: number; + readonly POLYGON_OFFSET_FILL: number; + readonly POLYGON_OFFSET_UNITS: number; + readonly RED_BITS: number; + readonly RENDERBUFFER: number; + readonly RENDERBUFFER_ALPHA_SIZE: number; + readonly RENDERBUFFER_BINDING: number; + readonly RENDERBUFFER_BLUE_SIZE: number; + readonly RENDERBUFFER_DEPTH_SIZE: number; + readonly RENDERBUFFER_GREEN_SIZE: number; + readonly RENDERBUFFER_HEIGHT: number; + readonly RENDERBUFFER_INTERNAL_FORMAT: number; + readonly RENDERBUFFER_RED_SIZE: number; + readonly RENDERBUFFER_STENCIL_SIZE: number; + readonly RENDERBUFFER_WIDTH: number; + readonly RENDERER: number; + readonly REPEAT: number; + readonly REPLACE: number; + readonly RGB: number; + readonly RGB565: number; + readonly RGB5_A1: number; + readonly RGBA: number; + readonly RGBA4: number; + readonly SAMPLER_2D: number; + readonly SAMPLER_CUBE: number; + readonly SAMPLES: number; + readonly SAMPLE_ALPHA_TO_COVERAGE: number; + readonly SAMPLE_BUFFERS: number; + readonly SAMPLE_COVERAGE: number; + readonly SAMPLE_COVERAGE_INVERT: number; + readonly SAMPLE_COVERAGE_VALUE: number; + readonly SCISSOR_BOX: number; + readonly SCISSOR_TEST: number; + readonly SHADER_TYPE: number; + readonly SHADING_LANGUAGE_VERSION: number; + readonly SHORT: number; + readonly SRC_ALPHA: number; + readonly SRC_ALPHA_SATURATE: number; + readonly SRC_COLOR: number; + readonly STATIC_DRAW: number; + readonly STENCIL_ATTACHMENT: number; + readonly STENCIL_BACK_FAIL: number; + readonly STENCIL_BACK_FUNC: number; + readonly STENCIL_BACK_PASS_DEPTH_FAIL: number; + readonly STENCIL_BACK_PASS_DEPTH_PASS: number; + readonly STENCIL_BACK_REF: number; + readonly STENCIL_BACK_VALUE_MASK: number; + readonly STENCIL_BACK_WRITEMASK: number; + readonly STENCIL_BITS: number; + readonly STENCIL_BUFFER_BIT: number; + readonly STENCIL_CLEAR_VALUE: number; + readonly STENCIL_FAIL: number; + readonly STENCIL_FUNC: number; + readonly STENCIL_INDEX: number; + readonly STENCIL_INDEX8: number; + readonly STENCIL_PASS_DEPTH_FAIL: number; + readonly STENCIL_PASS_DEPTH_PASS: number; + readonly STENCIL_REF: number; + readonly STENCIL_TEST: number; + readonly STENCIL_VALUE_MASK: number; + readonly STENCIL_WRITEMASK: number; + readonly STREAM_DRAW: number; + readonly SUBPIXEL_BITS: number; + readonly TEXTURE: number; + readonly TEXTURE0: number; + readonly TEXTURE1: number; + readonly TEXTURE10: number; + readonly TEXTURE11: number; + readonly TEXTURE12: number; + readonly TEXTURE13: number; + readonly TEXTURE14: number; + readonly TEXTURE15: number; + readonly TEXTURE16: number; + readonly TEXTURE17: number; + readonly TEXTURE18: number; + readonly TEXTURE19: number; + readonly TEXTURE2: number; + readonly TEXTURE20: number; + readonly TEXTURE21: number; + readonly TEXTURE22: number; + readonly TEXTURE23: number; + readonly TEXTURE24: number; + readonly TEXTURE25: number; + readonly TEXTURE26: number; + readonly TEXTURE27: number; + readonly TEXTURE28: number; + readonly TEXTURE29: number; + readonly TEXTURE3: number; + readonly TEXTURE30: number; + readonly TEXTURE31: number; + readonly TEXTURE4: number; + readonly TEXTURE5: number; + readonly TEXTURE6: number; + readonly TEXTURE7: number; + readonly TEXTURE8: number; + readonly TEXTURE9: number; + readonly TEXTURE_2D: number; + readonly TEXTURE_BINDING_2D: number; + readonly TEXTURE_BINDING_CUBE_MAP: number; + readonly TEXTURE_CUBE_MAP: number; + readonly TEXTURE_CUBE_MAP_NEGATIVE_X: number; + readonly TEXTURE_CUBE_MAP_NEGATIVE_Y: number; + readonly TEXTURE_CUBE_MAP_NEGATIVE_Z: number; + readonly TEXTURE_CUBE_MAP_POSITIVE_X: number; + readonly TEXTURE_CUBE_MAP_POSITIVE_Y: number; + readonly TEXTURE_CUBE_MAP_POSITIVE_Z: number; + readonly TEXTURE_MAG_FILTER: number; + readonly TEXTURE_MIN_FILTER: number; + readonly TEXTURE_WRAP_S: number; + readonly TEXTURE_WRAP_T: number; + readonly TRIANGLES: number; + readonly TRIANGLE_FAN: number; + readonly TRIANGLE_STRIP: number; + readonly UNPACK_ALIGNMENT: number; + readonly UNPACK_COLORSPACE_CONVERSION_WEBGL: number; + readonly UNPACK_FLIP_Y_WEBGL: number; + readonly UNPACK_PREMULTIPLY_ALPHA_WEBGL: number; + readonly UNSIGNED_BYTE: number; + readonly UNSIGNED_INT: number; + readonly UNSIGNED_SHORT: number; + readonly UNSIGNED_SHORT_4_4_4_4: number; + readonly UNSIGNED_SHORT_5_5_5_1: number; + readonly UNSIGNED_SHORT_5_6_5: number; + readonly VALIDATE_STATUS: number; + readonly VENDOR: number; + readonly VERSION: number; + readonly VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: number; + readonly VERTEX_ATTRIB_ARRAY_ENABLED: number; + readonly VERTEX_ATTRIB_ARRAY_NORMALIZED: number; + readonly VERTEX_ATTRIB_ARRAY_POINTER: number; + readonly VERTEX_ATTRIB_ARRAY_SIZE: number; + readonly VERTEX_ATTRIB_ARRAY_STRIDE: number; + readonly VERTEX_ATTRIB_ARRAY_TYPE: number; + readonly VERTEX_SHADER: number; + readonly VIEWPORT: number; + readonly ZERO: number; } declare var WebGLRenderingContext: { prototype: WebGLRenderingContext; new(): WebGLRenderingContext; - ACTIVE_ATTRIBUTES: number; - ACTIVE_TEXTURE: number; - ACTIVE_UNIFORMS: number; - ALIASED_LINE_WIDTH_RANGE: number; - ALIASED_POINT_SIZE_RANGE: number; - ALPHA: number; - ALPHA_BITS: number; - ALWAYS: number; - ARRAY_BUFFER: number; - ARRAY_BUFFER_BINDING: number; - ATTACHED_SHADERS: number; - BACK: number; - BLEND: number; - BLEND_COLOR: number; - BLEND_DST_ALPHA: number; - BLEND_DST_RGB: number; - BLEND_EQUATION: number; - BLEND_EQUATION_ALPHA: number; - BLEND_EQUATION_RGB: number; - BLEND_SRC_ALPHA: number; - BLEND_SRC_RGB: number; - BLUE_BITS: number; - BOOL: number; - BOOL_VEC2: number; - BOOL_VEC3: number; - BOOL_VEC4: number; - BROWSER_DEFAULT_WEBGL: number; - BUFFER_SIZE: number; - BUFFER_USAGE: number; - BYTE: number; - CCW: number; - CLAMP_TO_EDGE: number; - COLOR_ATTACHMENT0: number; - COLOR_BUFFER_BIT: number; - COLOR_CLEAR_VALUE: number; - COLOR_WRITEMASK: number; - COMPILE_STATUS: number; - COMPRESSED_TEXTURE_FORMATS: number; - CONSTANT_ALPHA: number; - CONSTANT_COLOR: number; - CONTEXT_LOST_WEBGL: number; - CULL_FACE: number; - CULL_FACE_MODE: number; - CURRENT_PROGRAM: number; - CURRENT_VERTEX_ATTRIB: number; - CW: number; - DECR: number; - DECR_WRAP: number; - DELETE_STATUS: number; - DEPTH_ATTACHMENT: number; - DEPTH_BITS: number; - DEPTH_BUFFER_BIT: number; - DEPTH_CLEAR_VALUE: number; - DEPTH_COMPONENT: number; - DEPTH_COMPONENT16: number; - DEPTH_FUNC: number; - DEPTH_RANGE: number; - DEPTH_STENCIL: number; - DEPTH_STENCIL_ATTACHMENT: number; - DEPTH_TEST: number; - DEPTH_WRITEMASK: number; - DITHER: number; - DONT_CARE: number; - DST_ALPHA: number; - DST_COLOR: number; - DYNAMIC_DRAW: number; - ELEMENT_ARRAY_BUFFER: number; - ELEMENT_ARRAY_BUFFER_BINDING: number; - EQUAL: number; - FASTEST: number; - FLOAT: number; - FLOAT_MAT2: number; - FLOAT_MAT3: number; - FLOAT_MAT4: number; - FLOAT_VEC2: number; - FLOAT_VEC3: number; - FLOAT_VEC4: number; - FRAGMENT_SHADER: number; - FRAMEBUFFER: number; - FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: number; - FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: number; - FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: number; - FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: number; - FRAMEBUFFER_BINDING: number; - FRAMEBUFFER_COMPLETE: number; - FRAMEBUFFER_INCOMPLETE_ATTACHMENT: number; - FRAMEBUFFER_INCOMPLETE_DIMENSIONS: number; - FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: number; - FRAMEBUFFER_UNSUPPORTED: number; - FRONT: number; - FRONT_AND_BACK: number; - FRONT_FACE: number; - FUNC_ADD: number; - FUNC_REVERSE_SUBTRACT: number; - FUNC_SUBTRACT: number; - GENERATE_MIPMAP_HINT: number; - GEQUAL: number; - GREATER: number; - GREEN_BITS: number; - HIGH_FLOAT: number; - HIGH_INT: number; - IMPLEMENTATION_COLOR_READ_FORMAT: number; - IMPLEMENTATION_COLOR_READ_TYPE: number; - INCR: number; - INCR_WRAP: number; - INT: number; - INT_VEC2: number; - INT_VEC3: number; - INT_VEC4: number; - INVALID_ENUM: number; - INVALID_FRAMEBUFFER_OPERATION: number; - INVALID_OPERATION: number; - INVALID_VALUE: number; - INVERT: number; - KEEP: number; - LEQUAL: number; - LESS: number; - LINEAR: number; - LINEAR_MIPMAP_LINEAR: number; - LINEAR_MIPMAP_NEAREST: number; - LINES: number; - LINE_LOOP: number; - LINE_STRIP: number; - LINE_WIDTH: number; - LINK_STATUS: number; - LOW_FLOAT: number; - LOW_INT: number; - LUMINANCE: number; - LUMINANCE_ALPHA: number; - MAX_COMBINED_TEXTURE_IMAGE_UNITS: number; - MAX_CUBE_MAP_TEXTURE_SIZE: number; - MAX_FRAGMENT_UNIFORM_VECTORS: number; - MAX_RENDERBUFFER_SIZE: number; - MAX_TEXTURE_IMAGE_UNITS: number; - MAX_TEXTURE_SIZE: number; - MAX_VARYING_VECTORS: number; - MAX_VERTEX_ATTRIBS: number; - MAX_VERTEX_TEXTURE_IMAGE_UNITS: number; - MAX_VERTEX_UNIFORM_VECTORS: number; - MAX_VIEWPORT_DIMS: number; - MEDIUM_FLOAT: number; - MEDIUM_INT: number; - MIRRORED_REPEAT: number; - NEAREST: number; - NEAREST_MIPMAP_LINEAR: number; - NEAREST_MIPMAP_NEAREST: number; - NEVER: number; - NICEST: number; - NONE: number; - NOTEQUAL: number; - NO_ERROR: number; - ONE: number; - ONE_MINUS_CONSTANT_ALPHA: number; - ONE_MINUS_CONSTANT_COLOR: number; - ONE_MINUS_DST_ALPHA: number; - ONE_MINUS_DST_COLOR: number; - ONE_MINUS_SRC_ALPHA: number; - ONE_MINUS_SRC_COLOR: number; - OUT_OF_MEMORY: number; - PACK_ALIGNMENT: number; - POINTS: number; - POLYGON_OFFSET_FACTOR: number; - POLYGON_OFFSET_FILL: number; - POLYGON_OFFSET_UNITS: number; - RED_BITS: number; - RENDERBUFFER: number; - RENDERBUFFER_ALPHA_SIZE: number; - RENDERBUFFER_BINDING: number; - RENDERBUFFER_BLUE_SIZE: number; - RENDERBUFFER_DEPTH_SIZE: number; - RENDERBUFFER_GREEN_SIZE: number; - RENDERBUFFER_HEIGHT: number; - RENDERBUFFER_INTERNAL_FORMAT: number; - RENDERBUFFER_RED_SIZE: number; - RENDERBUFFER_STENCIL_SIZE: number; - RENDERBUFFER_WIDTH: number; - RENDERER: number; - REPEAT: number; - REPLACE: number; - RGB: number; - RGB565: number; - RGB5_A1: number; - RGBA: number; - RGBA4: number; - SAMPLER_2D: number; - SAMPLER_CUBE: number; - SAMPLES: number; - SAMPLE_ALPHA_TO_COVERAGE: number; - SAMPLE_BUFFERS: number; - SAMPLE_COVERAGE: number; - SAMPLE_COVERAGE_INVERT: number; - SAMPLE_COVERAGE_VALUE: number; - SCISSOR_BOX: number; - SCISSOR_TEST: number; - SHADER_TYPE: number; - SHADING_LANGUAGE_VERSION: number; - SHORT: number; - SRC_ALPHA: number; - SRC_ALPHA_SATURATE: number; - SRC_COLOR: number; - STATIC_DRAW: number; - STENCIL_ATTACHMENT: number; - STENCIL_BACK_FAIL: number; - STENCIL_BACK_FUNC: number; - STENCIL_BACK_PASS_DEPTH_FAIL: number; - STENCIL_BACK_PASS_DEPTH_PASS: number; - STENCIL_BACK_REF: number; - STENCIL_BACK_VALUE_MASK: number; - STENCIL_BACK_WRITEMASK: number; - STENCIL_BITS: number; - STENCIL_BUFFER_BIT: number; - STENCIL_CLEAR_VALUE: number; - STENCIL_FAIL: number; - STENCIL_FUNC: number; - STENCIL_INDEX: number; - STENCIL_INDEX8: number; - STENCIL_PASS_DEPTH_FAIL: number; - STENCIL_PASS_DEPTH_PASS: number; - STENCIL_REF: number; - STENCIL_TEST: number; - STENCIL_VALUE_MASK: number; - STENCIL_WRITEMASK: number; - STREAM_DRAW: number; - SUBPIXEL_BITS: number; - TEXTURE: number; - TEXTURE0: number; - TEXTURE1: number; - TEXTURE10: number; - TEXTURE11: number; - TEXTURE12: number; - TEXTURE13: number; - TEXTURE14: number; - TEXTURE15: number; - TEXTURE16: number; - TEXTURE17: number; - TEXTURE18: number; - TEXTURE19: number; - TEXTURE2: number; - TEXTURE20: number; - TEXTURE21: number; - TEXTURE22: number; - TEXTURE23: number; - TEXTURE24: number; - TEXTURE25: number; - TEXTURE26: number; - TEXTURE27: number; - TEXTURE28: number; - TEXTURE29: number; - TEXTURE3: number; - TEXTURE30: number; - TEXTURE31: number; - TEXTURE4: number; - TEXTURE5: number; - TEXTURE6: number; - TEXTURE7: number; - TEXTURE8: number; - TEXTURE9: number; - TEXTURE_2D: number; - TEXTURE_BINDING_2D: number; - TEXTURE_BINDING_CUBE_MAP: number; - TEXTURE_CUBE_MAP: number; - TEXTURE_CUBE_MAP_NEGATIVE_X: number; - TEXTURE_CUBE_MAP_NEGATIVE_Y: number; - TEXTURE_CUBE_MAP_NEGATIVE_Z: number; - TEXTURE_CUBE_MAP_POSITIVE_X: number; - TEXTURE_CUBE_MAP_POSITIVE_Y: number; - TEXTURE_CUBE_MAP_POSITIVE_Z: number; - TEXTURE_MAG_FILTER: number; - TEXTURE_MIN_FILTER: number; - TEXTURE_WRAP_S: number; - TEXTURE_WRAP_T: number; - TRIANGLES: number; - TRIANGLE_FAN: number; - TRIANGLE_STRIP: number; - UNPACK_ALIGNMENT: number; - UNPACK_COLORSPACE_CONVERSION_WEBGL: number; - UNPACK_FLIP_Y_WEBGL: number; - UNPACK_PREMULTIPLY_ALPHA_WEBGL: number; - UNSIGNED_BYTE: number; - UNSIGNED_INT: number; - UNSIGNED_SHORT: number; - UNSIGNED_SHORT_4_4_4_4: number; - UNSIGNED_SHORT_5_5_5_1: number; - UNSIGNED_SHORT_5_6_5: number; - VALIDATE_STATUS: number; - VENDOR: number; - VERSION: number; - VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: number; - VERTEX_ATTRIB_ARRAY_ENABLED: number; - VERTEX_ATTRIB_ARRAY_NORMALIZED: number; - VERTEX_ATTRIB_ARRAY_POINTER: number; - VERTEX_ATTRIB_ARRAY_SIZE: number; - VERTEX_ATTRIB_ARRAY_STRIDE: number; - VERTEX_ATTRIB_ARRAY_TYPE: number; - VERTEX_SHADER: number; - VIEWPORT: number; - ZERO: number; + readonly ACTIVE_ATTRIBUTES: number; + readonly ACTIVE_TEXTURE: number; + readonly ACTIVE_UNIFORMS: number; + readonly ALIASED_LINE_WIDTH_RANGE: number; + readonly ALIASED_POINT_SIZE_RANGE: number; + readonly ALPHA: number; + readonly ALPHA_BITS: number; + readonly ALWAYS: number; + readonly ARRAY_BUFFER: number; + readonly ARRAY_BUFFER_BINDING: number; + readonly ATTACHED_SHADERS: number; + readonly BACK: number; + readonly BLEND: number; + readonly BLEND_COLOR: number; + readonly BLEND_DST_ALPHA: number; + readonly BLEND_DST_RGB: number; + readonly BLEND_EQUATION: number; + readonly BLEND_EQUATION_ALPHA: number; + readonly BLEND_EQUATION_RGB: number; + readonly BLEND_SRC_ALPHA: number; + readonly BLEND_SRC_RGB: number; + readonly BLUE_BITS: number; + readonly BOOL: number; + readonly BOOL_VEC2: number; + readonly BOOL_VEC3: number; + readonly BOOL_VEC4: number; + readonly BROWSER_DEFAULT_WEBGL: number; + readonly BUFFER_SIZE: number; + readonly BUFFER_USAGE: number; + readonly BYTE: number; + readonly CCW: number; + readonly CLAMP_TO_EDGE: number; + readonly COLOR_ATTACHMENT0: number; + readonly COLOR_BUFFER_BIT: number; + readonly COLOR_CLEAR_VALUE: number; + readonly COLOR_WRITEMASK: number; + readonly COMPILE_STATUS: number; + readonly COMPRESSED_TEXTURE_FORMATS: number; + readonly CONSTANT_ALPHA: number; + readonly CONSTANT_COLOR: number; + readonly CONTEXT_LOST_WEBGL: number; + readonly CULL_FACE: number; + readonly CULL_FACE_MODE: number; + readonly CURRENT_PROGRAM: number; + readonly CURRENT_VERTEX_ATTRIB: number; + readonly CW: number; + readonly DECR: number; + readonly DECR_WRAP: number; + readonly DELETE_STATUS: number; + readonly DEPTH_ATTACHMENT: number; + readonly DEPTH_BITS: number; + readonly DEPTH_BUFFER_BIT: number; + readonly DEPTH_CLEAR_VALUE: number; + readonly DEPTH_COMPONENT: number; + readonly DEPTH_COMPONENT16: number; + readonly DEPTH_FUNC: number; + readonly DEPTH_RANGE: number; + readonly DEPTH_STENCIL: number; + readonly DEPTH_STENCIL_ATTACHMENT: number; + readonly DEPTH_TEST: number; + readonly DEPTH_WRITEMASK: number; + readonly DITHER: number; + readonly DONT_CARE: number; + readonly DST_ALPHA: number; + readonly DST_COLOR: number; + readonly DYNAMIC_DRAW: number; + readonly ELEMENT_ARRAY_BUFFER: number; + readonly ELEMENT_ARRAY_BUFFER_BINDING: number; + readonly EQUAL: number; + readonly FASTEST: number; + readonly FLOAT: number; + readonly FLOAT_MAT2: number; + readonly FLOAT_MAT3: number; + readonly FLOAT_MAT4: number; + readonly FLOAT_VEC2: number; + readonly FLOAT_VEC3: number; + readonly FLOAT_VEC4: number; + readonly FRAGMENT_SHADER: number; + readonly FRAMEBUFFER: number; + readonly FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: number; + readonly FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: number; + readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: number; + readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: number; + readonly FRAMEBUFFER_BINDING: number; + readonly FRAMEBUFFER_COMPLETE: number; + readonly FRAMEBUFFER_INCOMPLETE_ATTACHMENT: number; + readonly FRAMEBUFFER_INCOMPLETE_DIMENSIONS: number; + readonly FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: number; + readonly FRAMEBUFFER_UNSUPPORTED: number; + readonly FRONT: number; + readonly FRONT_AND_BACK: number; + readonly FRONT_FACE: number; + readonly FUNC_ADD: number; + readonly FUNC_REVERSE_SUBTRACT: number; + readonly FUNC_SUBTRACT: number; + readonly GENERATE_MIPMAP_HINT: number; + readonly GEQUAL: number; + readonly GREATER: number; + readonly GREEN_BITS: number; + readonly HIGH_FLOAT: number; + readonly HIGH_INT: number; + readonly IMPLEMENTATION_COLOR_READ_FORMAT: number; + readonly IMPLEMENTATION_COLOR_READ_TYPE: number; + readonly INCR: number; + readonly INCR_WRAP: number; + readonly INT: number; + readonly INT_VEC2: number; + readonly INT_VEC3: number; + readonly INT_VEC4: number; + readonly INVALID_ENUM: number; + readonly INVALID_FRAMEBUFFER_OPERATION: number; + readonly INVALID_OPERATION: number; + readonly INVALID_VALUE: number; + readonly INVERT: number; + readonly KEEP: number; + readonly LEQUAL: number; + readonly LESS: number; + readonly LINEAR: number; + readonly LINEAR_MIPMAP_LINEAR: number; + readonly LINEAR_MIPMAP_NEAREST: number; + readonly LINES: number; + readonly LINE_LOOP: number; + readonly LINE_STRIP: number; + readonly LINE_WIDTH: number; + readonly LINK_STATUS: number; + readonly LOW_FLOAT: number; + readonly LOW_INT: number; + readonly LUMINANCE: number; + readonly LUMINANCE_ALPHA: number; + readonly MAX_COMBINED_TEXTURE_IMAGE_UNITS: number; + readonly MAX_CUBE_MAP_TEXTURE_SIZE: number; + readonly MAX_FRAGMENT_UNIFORM_VECTORS: number; + readonly MAX_RENDERBUFFER_SIZE: number; + readonly MAX_TEXTURE_IMAGE_UNITS: number; + readonly MAX_TEXTURE_SIZE: number; + readonly MAX_VARYING_VECTORS: number; + readonly MAX_VERTEX_ATTRIBS: number; + readonly MAX_VERTEX_TEXTURE_IMAGE_UNITS: number; + readonly MAX_VERTEX_UNIFORM_VECTORS: number; + readonly MAX_VIEWPORT_DIMS: number; + readonly MEDIUM_FLOAT: number; + readonly MEDIUM_INT: number; + readonly MIRRORED_REPEAT: number; + readonly NEAREST: number; + readonly NEAREST_MIPMAP_LINEAR: number; + readonly NEAREST_MIPMAP_NEAREST: number; + readonly NEVER: number; + readonly NICEST: number; + readonly NONE: number; + readonly NOTEQUAL: number; + readonly NO_ERROR: number; + readonly ONE: number; + readonly ONE_MINUS_CONSTANT_ALPHA: number; + readonly ONE_MINUS_CONSTANT_COLOR: number; + readonly ONE_MINUS_DST_ALPHA: number; + readonly ONE_MINUS_DST_COLOR: number; + readonly ONE_MINUS_SRC_ALPHA: number; + readonly ONE_MINUS_SRC_COLOR: number; + readonly OUT_OF_MEMORY: number; + readonly PACK_ALIGNMENT: number; + readonly POINTS: number; + readonly POLYGON_OFFSET_FACTOR: number; + readonly POLYGON_OFFSET_FILL: number; + readonly POLYGON_OFFSET_UNITS: number; + readonly RED_BITS: number; + readonly RENDERBUFFER: number; + readonly RENDERBUFFER_ALPHA_SIZE: number; + readonly RENDERBUFFER_BINDING: number; + readonly RENDERBUFFER_BLUE_SIZE: number; + readonly RENDERBUFFER_DEPTH_SIZE: number; + readonly RENDERBUFFER_GREEN_SIZE: number; + readonly RENDERBUFFER_HEIGHT: number; + readonly RENDERBUFFER_INTERNAL_FORMAT: number; + readonly RENDERBUFFER_RED_SIZE: number; + readonly RENDERBUFFER_STENCIL_SIZE: number; + readonly RENDERBUFFER_WIDTH: number; + readonly RENDERER: number; + readonly REPEAT: number; + readonly REPLACE: number; + readonly RGB: number; + readonly RGB565: number; + readonly RGB5_A1: number; + readonly RGBA: number; + readonly RGBA4: number; + readonly SAMPLER_2D: number; + readonly SAMPLER_CUBE: number; + readonly SAMPLES: number; + readonly SAMPLE_ALPHA_TO_COVERAGE: number; + readonly SAMPLE_BUFFERS: number; + readonly SAMPLE_COVERAGE: number; + readonly SAMPLE_COVERAGE_INVERT: number; + readonly SAMPLE_COVERAGE_VALUE: number; + readonly SCISSOR_BOX: number; + readonly SCISSOR_TEST: number; + readonly SHADER_TYPE: number; + readonly SHADING_LANGUAGE_VERSION: number; + readonly SHORT: number; + readonly SRC_ALPHA: number; + readonly SRC_ALPHA_SATURATE: number; + readonly SRC_COLOR: number; + readonly STATIC_DRAW: number; + readonly STENCIL_ATTACHMENT: number; + readonly STENCIL_BACK_FAIL: number; + readonly STENCIL_BACK_FUNC: number; + readonly STENCIL_BACK_PASS_DEPTH_FAIL: number; + readonly STENCIL_BACK_PASS_DEPTH_PASS: number; + readonly STENCIL_BACK_REF: number; + readonly STENCIL_BACK_VALUE_MASK: number; + readonly STENCIL_BACK_WRITEMASK: number; + readonly STENCIL_BITS: number; + readonly STENCIL_BUFFER_BIT: number; + readonly STENCIL_CLEAR_VALUE: number; + readonly STENCIL_FAIL: number; + readonly STENCIL_FUNC: number; + readonly STENCIL_INDEX: number; + readonly STENCIL_INDEX8: number; + readonly STENCIL_PASS_DEPTH_FAIL: number; + readonly STENCIL_PASS_DEPTH_PASS: number; + readonly STENCIL_REF: number; + readonly STENCIL_TEST: number; + readonly STENCIL_VALUE_MASK: number; + readonly STENCIL_WRITEMASK: number; + readonly STREAM_DRAW: number; + readonly SUBPIXEL_BITS: number; + readonly TEXTURE: number; + readonly TEXTURE0: number; + readonly TEXTURE1: number; + readonly TEXTURE10: number; + readonly TEXTURE11: number; + readonly TEXTURE12: number; + readonly TEXTURE13: number; + readonly TEXTURE14: number; + readonly TEXTURE15: number; + readonly TEXTURE16: number; + readonly TEXTURE17: number; + readonly TEXTURE18: number; + readonly TEXTURE19: number; + readonly TEXTURE2: number; + readonly TEXTURE20: number; + readonly TEXTURE21: number; + readonly TEXTURE22: number; + readonly TEXTURE23: number; + readonly TEXTURE24: number; + readonly TEXTURE25: number; + readonly TEXTURE26: number; + readonly TEXTURE27: number; + readonly TEXTURE28: number; + readonly TEXTURE29: number; + readonly TEXTURE3: number; + readonly TEXTURE30: number; + readonly TEXTURE31: number; + readonly TEXTURE4: number; + readonly TEXTURE5: number; + readonly TEXTURE6: number; + readonly TEXTURE7: number; + readonly TEXTURE8: number; + readonly TEXTURE9: number; + readonly TEXTURE_2D: number; + readonly TEXTURE_BINDING_2D: number; + readonly TEXTURE_BINDING_CUBE_MAP: number; + readonly TEXTURE_CUBE_MAP: number; + readonly TEXTURE_CUBE_MAP_NEGATIVE_X: number; + readonly TEXTURE_CUBE_MAP_NEGATIVE_Y: number; + readonly TEXTURE_CUBE_MAP_NEGATIVE_Z: number; + readonly TEXTURE_CUBE_MAP_POSITIVE_X: number; + readonly TEXTURE_CUBE_MAP_POSITIVE_Y: number; + readonly TEXTURE_CUBE_MAP_POSITIVE_Z: number; + readonly TEXTURE_MAG_FILTER: number; + readonly TEXTURE_MIN_FILTER: number; + readonly TEXTURE_WRAP_S: number; + readonly TEXTURE_WRAP_T: number; + readonly TRIANGLES: number; + readonly TRIANGLE_FAN: number; + readonly TRIANGLE_STRIP: number; + readonly UNPACK_ALIGNMENT: number; + readonly UNPACK_COLORSPACE_CONVERSION_WEBGL: number; + readonly UNPACK_FLIP_Y_WEBGL: number; + readonly UNPACK_PREMULTIPLY_ALPHA_WEBGL: number; + readonly UNSIGNED_BYTE: number; + readonly UNSIGNED_INT: number; + readonly UNSIGNED_SHORT: number; + readonly UNSIGNED_SHORT_4_4_4_4: number; + readonly UNSIGNED_SHORT_5_5_5_1: number; + readonly UNSIGNED_SHORT_5_6_5: number; + readonly VALIDATE_STATUS: number; + readonly VENDOR: number; + readonly VERSION: number; + readonly VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: number; + readonly VERTEX_ATTRIB_ARRAY_ENABLED: number; + readonly VERTEX_ATTRIB_ARRAY_NORMALIZED: number; + readonly VERTEX_ATTRIB_ARRAY_POINTER: number; + readonly VERTEX_ATTRIB_ARRAY_SIZE: number; + readonly VERTEX_ATTRIB_ARRAY_STRIDE: number; + readonly VERTEX_ATTRIB_ARRAY_TYPE: number; + readonly VERTEX_SHADER: number; + readonly VIEWPORT: number; + readonly ZERO: number; } interface WebGLShader extends WebGLObject { @@ -17157,9 +18261,9 @@ declare var WebGLShader: { } interface WebGLShaderPrecisionFormat { - precision: number; - rangeMax: number; - rangeMin: number; + readonly precision: number; + readonly rangeMax: number; + readonly rangeMin: number; } declare var WebGLShaderPrecisionFormat: { @@ -17235,21 +18339,21 @@ declare var WebKitPoint: { interface WebSocket extends EventTarget { binaryType: string; - bufferedAmount: number; - extensions: string; + readonly bufferedAmount: number; + readonly extensions: string; onclose: (ev: CloseEvent) => any; onerror: (ev: Event) => any; onmessage: (ev: MessageEvent) => any; onopen: (ev: Event) => any; - protocol: string; - readyState: number; - url: string; + readonly protocol: string; + readonly readyState: number; + readonly url: string; close(code?: number, reason?: string): void; send(data: any): void; - CLOSED: number; - CLOSING: number; - CONNECTING: number; - OPEN: number; + readonly CLOSED: number; + 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; @@ -17260,56 +18364,58 @@ interface WebSocket extends EventTarget { declare var WebSocket: { prototype: WebSocket; new(url: string, protocols?: string | string[]): WebSocket; - CLOSED: number; - CLOSING: number; - CONNECTING: number; - OPEN: number; + readonly CLOSED: number; + readonly CLOSING: number; + readonly CONNECTING: number; + readonly OPEN: number; } interface WheelEvent extends MouseEvent { - deltaMode: number; - deltaX: number; - deltaY: number; - deltaZ: number; + readonly deltaMode: number; + readonly deltaX: number; + readonly deltaY: number; + readonly deltaZ: number; + readonly wheelDelta: number; + readonly wheelDeltaX: number; + readonly wheelDeltaY: number; getCurrentPoint(element: Element): void; initWheelEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, screenXArg: number, screenYArg: number, clientXArg: number, clientYArg: number, buttonArg: number, relatedTargetArg: EventTarget, modifiersListArg: string, deltaXArg: number, deltaYArg: number, deltaZArg: number, deltaMode: number): void; - DOM_DELTA_LINE: number; - DOM_DELTA_PAGE: number; - DOM_DELTA_PIXEL: number; + readonly DOM_DELTA_LINE: number; + readonly DOM_DELTA_PAGE: number; + readonly DOM_DELTA_PIXEL: number; } declare var WheelEvent: { prototype: WheelEvent; new(typeArg: string, eventInitDict?: WheelEventInit): WheelEvent; - DOM_DELTA_LINE: number; - DOM_DELTA_PAGE: number; - DOM_DELTA_PIXEL: number; + readonly DOM_DELTA_LINE: number; + readonly DOM_DELTA_PAGE: number; + readonly DOM_DELTA_PIXEL: number; } interface Window extends EventTarget, WindowTimers, WindowSessionStorage, WindowLocalStorage, WindowConsole, GlobalEventHandlers, IDBEnvironment, WindowBase64 { - animationStartTime: number; - applicationCache: ApplicationCache; - clientInformation: Navigator; - closed: boolean; - crypto: Crypto; + readonly applicationCache: ApplicationCache; + readonly clientInformation: Navigator; + readonly closed: boolean; + readonly crypto: Crypto; defaultStatus: string; - devicePixelRatio: number; - doNotTrack: string; - document: Document; + readonly devicePixelRatio: number; + readonly doNotTrack: string; + readonly document: Document; event: Event; - external: External; - frameElement: Element; - frames: Window; - history: History; - innerHeight: number; - innerWidth: number; - length: number; - location: Location; - locationbar: BarProp; - menubar: BarProp; - msAnimationStartTime: number; + readonly external: External; + readonly frameElement: Element; + readonly frames: Window; + readonly history: History; + readonly innerHeight: number; + readonly innerWidth: number; + readonly length: number; + readonly location: Location; + readonly locationbar: BarProp; + readonly menubar: BarProp; + readonly msCredentials: MSCredentials; name: string; - navigator: Navigator; + readonly navigator: Navigator; offscreenBuffering: string | boolean; onabort: (ev: Event) => any; onafterprint: (ev: Event) => any; @@ -17323,6 +18429,7 @@ interface Window extends EventTarget, WindowTimers, WindowSessionStorage, Window oncompassneedscalibration: (ev: Event) => any; oncontextmenu: (ev: PointerEvent) => any; ondblclick: (ev: MouseEvent) => any; + ondevicelight: (ev: DeviceLightEvent) => any; ondevicemotion: (ev: DeviceMotionEvent) => any; ondeviceorientation: (ev: DeviceOrientationEvent) => any; ondrag: (ev: DragEvent) => any; @@ -17334,11 +18441,12 @@ interface Window extends EventTarget, WindowTimers, WindowSessionStorage, Window ondrop: (ev: DragEvent) => any; ondurationchange: (ev: Event) => any; onemptied: (ev: Event) => any; - onended: (ev: Event) => any; + onended: (ev: MediaStreamErrorEvent) => any; onerror: ErrorEventHandler; onfocus: (ev: FocusEvent) => any; onhashchange: (ev: HashChangeEvent) => any; oninput: (ev: Event) => any; + oninvalid: (ev: Event) => any; onkeydown: (ev: KeyboardEvent) => any; onkeypress: (ev: KeyboardEvent) => any; onkeyup: (ev: KeyboardEvent) => any; @@ -17354,7 +18462,7 @@ interface Window extends EventTarget, WindowTimers, WindowSessionStorage, Window onmouseout: (ev: MouseEvent) => any; onmouseover: (ev: MouseEvent) => any; onmouseup: (ev: MouseEvent) => any; - onmousewheel: (ev: MouseWheelEvent) => any; + onmousewheel: (ev: WheelEvent) => any; onmsgesturechange: (ev: MSGestureEvent) => any; onmsgesturedoubletap: (ev: MSGestureEvent) => any; onmsgestureend: (ev: MSGestureEvent) => any; @@ -17393,38 +18501,38 @@ interface Window extends EventTarget, WindowTimers, WindowSessionStorage, Window onsubmit: (ev: Event) => any; onsuspend: (ev: Event) => any; ontimeupdate: (ev: Event) => any; - ontouchcancel: any; - ontouchend: any; - ontouchmove: any; - ontouchstart: any; + ontouchcancel: (ev: TouchEvent) => any; + ontouchend: (ev: TouchEvent) => any; + ontouchmove: (ev: TouchEvent) => any; + ontouchstart: (ev: TouchEvent) => any; onunload: (ev: Event) => any; onvolumechange: (ev: Event) => any; onwaiting: (ev: Event) => any; - opener: Window; + readonly opener: Window; orientation: string | number; - outerHeight: number; - outerWidth: number; - pageXOffset: number; - pageYOffset: number; - parent: Window; - performance: Performance; - personalbar: BarProp; - screen: Screen; - screenLeft: number; - screenTop: number; - screenX: number; - screenY: number; - scrollX: number; - scrollY: number; - scrollbars: BarProp; - self: Window; + readonly outerHeight: number; + readonly outerWidth: number; + readonly pageXOffset: number; + readonly pageYOffset: number; + readonly parent: Window; + readonly performance: Performance; + readonly personalbar: BarProp; + readonly screen: Screen; + readonly screenLeft: number; + readonly screenTop: number; + readonly screenX: number; + readonly screenY: number; + readonly scrollX: number; + readonly scrollY: number; + readonly scrollbars: BarProp; + readonly self: Window; status: string; - statusbar: BarProp; - styleMedia: StyleMedia; - toolbar: BarProp; - top: Window; - window: Window; - URL: URL; + readonly statusbar: BarProp; + readonly styleMedia: StyleMedia; + readonly toolbar: BarProp; + readonly top: Window; + readonly window: Window; + URL: typeof URL; alert(message?: any): void; blur(): void; cancelAnimationFrame(handle: number): void; @@ -17438,12 +18546,9 @@ interface Window extends EventTarget, WindowTimers, WindowSessionStorage, Window matchMedia(mediaQuery: string): MediaQueryList; moveBy(x?: number, y?: number): void; moveTo(x?: number, y?: number): void; - msCancelRequestAnimationFrame(handle: number): void; - msMatchMedia(mediaQuery: string): MediaQueryList; - msRequestAnimationFrame(callback: FrameRequestCallback): number; msWriteProfilerMark(profilerMarkName: string): void; open(url?: string, target?: string, features?: string, replace?: boolean): Window; - postMessage(message: any, targetOrigin: string, ports?: any): void; + postMessage(message: any, targetOrigin: string, transfer?: any[]): void; print(): void; prompt(message?: string, _default?: string): string; releaseEvents(): void; @@ -17453,8 +18558,10 @@ interface Window extends EventTarget, WindowTimers, WindowSessionStorage, Window scroll(x?: number, y?: number): void; scrollBy(x?: number, y?: number): void; scrollTo(x?: number, y?: number): void; + webkitCancelAnimationFrame(handle: number): void; webkitConvertPointFromNodeToPage(node: Node, pt: WebKitPoint): WebKitPoint; webkitConvertPointFromPageToNode(node: Node, pt: WebKitPoint): WebKitPoint; + webkitRequestAnimationFrame(callback: FrameRequestCallback): number; addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; addEventListener(type: "MSGestureDoubleTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; addEventListener(type: "MSGestureEnd", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; @@ -17482,6 +18589,7 @@ interface Window extends EventTarget, WindowTimers, WindowSessionStorage, Window addEventListener(type: "compassneedscalibration", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "devicelight", listener: (ev: DeviceLightEvent) => any, useCapture?: boolean): void; addEventListener(type: "devicemotion", listener: (ev: DeviceMotionEvent) => any, useCapture?: boolean): void; addEventListener(type: "deviceorientation", listener: (ev: DeviceOrientationEvent) => any, useCapture?: boolean): void; addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void; @@ -17493,10 +18601,11 @@ interface Window extends EventTarget, WindowTimers, WindowSessionStorage, Window addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "ended", listener: (ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; addEventListener(type: "hashchange", listener: (ev: HashChangeEvent) => any, useCapture?: boolean): void; addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "invalid", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; @@ -17512,7 +18621,7 @@ interface Window extends EventTarget, WindowTimers, WindowSessionStorage, Window addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousewheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; addEventListener(type: "offline", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "online", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "orientationchange", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -17582,16 +18691,15 @@ declare var XMLDocument: { interface XMLHttpRequest extends EventTarget, XMLHttpRequestEventTarget { msCaching: string; onreadystatechange: (ev: ProgressEvent) => any; - readyState: number; - response: any; - responseBody: any; - responseText: string; + readonly readyState: number; + readonly response: any; + readonly responseText: string; responseType: string; - responseXML: any; - status: number; - statusText: string; + readonly responseXML: any; + readonly status: number; + readonly statusText: string; timeout: number; - upload: XMLHttpRequestUpload; + readonly upload: XMLHttpRequestUpload; withCredentials: boolean; abort(): void; getAllResponseHeaders(): string; @@ -17603,11 +18711,11 @@ interface XMLHttpRequest extends EventTarget, XMLHttpRequestEventTarget { send(data?: string): void; send(data?: any): void; setRequestHeader(header: string, value: string): void; - DONE: number; - HEADERS_RECEIVED: number; - LOADING: number; - OPENED: number; - UNSENT: number; + readonly DONE: number; + readonly HEADERS_RECEIVED: number; + 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; @@ -17622,11 +18730,11 @@ interface XMLHttpRequest extends EventTarget, XMLHttpRequestEventTarget { declare var XMLHttpRequest: { prototype: XMLHttpRequest; new(): XMLHttpRequest; - DONE: number; - HEADERS_RECEIVED: number; - LOADING: number; - OPENED: number; - UNSENT: number; + readonly DONE: number; + readonly HEADERS_RECEIVED: number; + readonly LOADING: number; + readonly OPENED: number; + readonly UNSENT: number; create(): XMLHttpRequest; } @@ -17678,40 +18786,40 @@ declare var XPathNSResolver: { } interface XPathResult { - booleanValue: boolean; - invalidIteratorState: boolean; - numberValue: number; - resultType: number; - singleNodeValue: Node; - snapshotLength: number; - stringValue: string; + readonly booleanValue: boolean; + readonly invalidIteratorState: boolean; + readonly numberValue: number; + readonly resultType: number; + readonly singleNodeValue: Node; + readonly snapshotLength: number; + readonly stringValue: string; iterateNext(): Node; snapshotItem(index: number): Node; - ANY_TYPE: number; - ANY_UNORDERED_NODE_TYPE: number; - BOOLEAN_TYPE: number; - FIRST_ORDERED_NODE_TYPE: number; - NUMBER_TYPE: number; - ORDERED_NODE_ITERATOR_TYPE: number; - ORDERED_NODE_SNAPSHOT_TYPE: number; - STRING_TYPE: number; - UNORDERED_NODE_ITERATOR_TYPE: number; - UNORDERED_NODE_SNAPSHOT_TYPE: number; + readonly ANY_TYPE: number; + readonly ANY_UNORDERED_NODE_TYPE: number; + readonly BOOLEAN_TYPE: number; + readonly FIRST_ORDERED_NODE_TYPE: number; + readonly NUMBER_TYPE: number; + readonly ORDERED_NODE_ITERATOR_TYPE: number; + readonly ORDERED_NODE_SNAPSHOT_TYPE: number; + readonly STRING_TYPE: number; + readonly UNORDERED_NODE_ITERATOR_TYPE: number; + readonly UNORDERED_NODE_SNAPSHOT_TYPE: number; } declare var XPathResult: { prototype: XPathResult; new(): XPathResult; - ANY_TYPE: number; - ANY_UNORDERED_NODE_TYPE: number; - BOOLEAN_TYPE: number; - FIRST_ORDERED_NODE_TYPE: number; - NUMBER_TYPE: number; - ORDERED_NODE_ITERATOR_TYPE: number; - ORDERED_NODE_SNAPSHOT_TYPE: number; - STRING_TYPE: number; - UNORDERED_NODE_ITERATOR_TYPE: number; - UNORDERED_NODE_SNAPSHOT_TYPE: number; + readonly ANY_TYPE: number; + readonly ANY_UNORDERED_NODE_TYPE: number; + readonly BOOLEAN_TYPE: number; + readonly FIRST_ORDERED_NODE_TYPE: number; + readonly NUMBER_TYPE: number; + readonly ORDERED_NODE_ITERATOR_TYPE: number; + readonly ORDERED_NODE_SNAPSHOT_TYPE: number; + readonly STRING_TYPE: number; + readonly UNORDERED_NODE_ITERATOR_TYPE: number; + readonly UNORDERED_NODE_SNAPSHOT_TYPE: number; } interface XSLTProcessor { @@ -17736,6 +18844,18 @@ interface AbstractWorker { addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } +interface CanvasPathMethods { + arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, anticlockwise?: boolean): void; + arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): void; + bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): void; + closePath(): void; + ellipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number, startAngle: number, endAngle: number, anticlockwise?: boolean): void; + lineTo(x: number, y: number): void; + moveTo(x: number, y: number): void; + quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void; + rect(x: number, y: number, w: number, h: number): void; +} + interface ChildNode { remove(): void; } @@ -17758,6 +18878,7 @@ interface DocumentEvent { createEvent(eventInterface:"CommandEvent"): CommandEvent; createEvent(eventInterface:"CompositionEvent"): CompositionEvent; createEvent(eventInterface:"CustomEvent"): CustomEvent; + createEvent(eventInterface:"DeviceLightEvent"): DeviceLightEvent; createEvent(eventInterface:"DeviceMotionEvent"): DeviceMotionEvent; createEvent(eventInterface:"DeviceOrientationEvent"): DeviceOrientationEvent; createEvent(eventInterface:"DragEvent"): DragEvent; @@ -17769,6 +18890,7 @@ interface DocumentEvent { createEvent(eventInterface:"HashChangeEvent"): HashChangeEvent; createEvent(eventInterface:"IDBVersionChangeEvent"): IDBVersionChangeEvent; createEvent(eventInterface:"KeyboardEvent"): KeyboardEvent; + createEvent(eventInterface:"ListeningStateChangedEvent"): ListeningStateChangedEvent; createEvent(eventInterface:"LongRunningScriptDetectedEvent"): LongRunningScriptDetectedEvent; createEvent(eventInterface:"MSGestureEvent"): MSGestureEvent; createEvent(eventInterface:"MSManipulationEvent"): MSManipulationEvent; @@ -17776,21 +18898,31 @@ interface DocumentEvent { createEvent(eventInterface:"MSMediaKeyNeededEvent"): MSMediaKeyNeededEvent; createEvent(eventInterface:"MSPointerEvent"): MSPointerEvent; createEvent(eventInterface:"MSSiteModeEvent"): MSSiteModeEvent; + createEvent(eventInterface:"MediaEncryptedEvent"): MediaEncryptedEvent; + createEvent(eventInterface:"MediaKeyMessageEvent"): MediaKeyMessageEvent; + createEvent(eventInterface:"MediaStreamErrorEvent"): MediaStreamErrorEvent; + createEvent(eventInterface:"MediaStreamTrackEvent"): MediaStreamTrackEvent; createEvent(eventInterface:"MessageEvent"): MessageEvent; createEvent(eventInterface:"MouseEvent"): MouseEvent; createEvent(eventInterface:"MouseEvents"): MouseEvent; - createEvent(eventInterface:"MouseWheelEvent"): MouseWheelEvent; createEvent(eventInterface:"MutationEvent"): MutationEvent; createEvent(eventInterface:"MutationEvents"): MutationEvent; createEvent(eventInterface:"NavigationCompletedEvent"): NavigationCompletedEvent; createEvent(eventInterface:"NavigationEvent"): NavigationEvent; createEvent(eventInterface:"NavigationEventWithReferrer"): NavigationEventWithReferrer; createEvent(eventInterface:"OfflineAudioCompletionEvent"): OfflineAudioCompletionEvent; + createEvent(eventInterface:"OverflowEvent"): OverflowEvent; createEvent(eventInterface:"PageTransitionEvent"): PageTransitionEvent; createEvent(eventInterface:"PermissionRequestedEvent"): PermissionRequestedEvent; createEvent(eventInterface:"PointerEvent"): PointerEvent; createEvent(eventInterface:"PopStateEvent"): PopStateEvent; createEvent(eventInterface:"ProgressEvent"): ProgressEvent; + createEvent(eventInterface:"RTCDTMFToneChangeEvent"): RTCDTMFToneChangeEvent; + createEvent(eventInterface:"RTCDtlsTransportStateChangedEvent"): RTCDtlsTransportStateChangedEvent; + createEvent(eventInterface:"RTCIceCandidatePairChangedEvent"): RTCIceCandidatePairChangedEvent; + createEvent(eventInterface:"RTCIceGathererEvent"): RTCIceGathererEvent; + createEvent(eventInterface:"RTCIceTransportStateChangedEvent"): RTCIceTransportStateChangedEvent; + createEvent(eventInterface:"RTCSsrcConflictEvent"): RTCSsrcConflictEvent; createEvent(eventInterface:"SVGZoomEvent"): SVGZoomEvent; createEvent(eventInterface:"SVGZoomEvents"): SVGZoomEvent; createEvent(eventInterface:"ScriptNotifyEvent"): ScriptNotifyEvent; @@ -17808,11 +18940,11 @@ interface DocumentEvent { } interface ElementTraversal { - childElementCount: number; - firstElementChild: Element; - lastElementChild: Element; - nextElementSibling: Element; - previousElementSibling: Element; + readonly childElementCount: number; + readonly firstElementChild: Element; + readonly lastElementChild: Element; + readonly nextElementSibling: Element; + readonly previousElementSibling: Element; } interface GetSVGDocument { @@ -17857,12 +18989,11 @@ interface HTMLTableAlignment { } interface IDBEnvironment { - indexedDB: IDBFactory; - msIndexedDB: IDBFactory; + readonly indexedDB: IDBFactory; } interface LinkStyle { - sheet: StyleSheet; + readonly sheet: StyleSheet; } interface MSBaseReader { @@ -17872,12 +19003,12 @@ interface MSBaseReader { onloadend: (ev: ProgressEvent) => any; onloadstart: (ev: Event) => any; onprogress: (ev: ProgressEvent) => any; - readyState: number; - result: any; + readonly readyState: number; + readonly result: any; abort(): void; - DONE: number; - EMPTY: number; - LOADING: number; + 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; @@ -17905,27 +19036,32 @@ interface NavigatorContentUtils { } interface NavigatorGeolocation { - geolocation: Geolocation; + readonly geolocation: Geolocation; } interface NavigatorID { - appName: string; - appVersion: string; - platform: string; - product: string; - productSub: string; - userAgent: string; - vendor: string; - vendorSub: string; + readonly appName: string; + readonly appVersion: string; + readonly platform: string; + readonly product: string; + readonly productSub: string; + readonly userAgent: string; + readonly vendor: string; + readonly vendorSub: string; } interface NavigatorOnLine { - onLine: boolean; + readonly onLine: boolean; } interface NavigatorStorageUtils { } +interface NavigatorUserMedia { + readonly mediaDevices: MediaDevices; + getUserMedia(constraints: MediaStreamConstraints, successCallback: NavigatorUserMediaSuccessCallback, errorCallback: NavigatorUserMediaErrorCallback): void; +} + interface NodeSelector { querySelector(selectors: string): Element; querySelectorAll(selectors: string): NodeListOf; @@ -17936,29 +19072,29 @@ interface RandomSource { } interface SVGAnimatedPathData { - pathSegList: SVGPathSegList; + readonly pathSegList: SVGPathSegList; } interface SVGAnimatedPoints { - animatedPoints: SVGPointList; - points: SVGPointList; + readonly animatedPoints: SVGPointList; + readonly points: SVGPointList; } interface SVGExternalResourcesRequired { - externalResourcesRequired: SVGAnimatedBoolean; + readonly externalResourcesRequired: SVGAnimatedBoolean; } interface SVGFilterPrimitiveStandardAttributes extends SVGStylable { - height: SVGAnimatedLength; - result: SVGAnimatedString; - width: SVGAnimatedLength; - x: SVGAnimatedLength; - y: SVGAnimatedLength; + readonly height: SVGAnimatedLength; + readonly result: SVGAnimatedString; + readonly width: SVGAnimatedLength; + readonly x: SVGAnimatedLength; + readonly y: SVGAnimatedLength; } interface SVGFitToViewBox { - preserveAspectRatio: SVGAnimatedPreserveAspectRatio; - viewBox: SVGAnimatedRect; + readonly preserveAspectRatio: SVGAnimatedPreserveAspectRatio; + readonly viewBox: SVGAnimatedRect; } interface SVGLangSpace { @@ -17967,8 +19103,8 @@ interface SVGLangSpace { } interface SVGLocatable { - farthestViewportElement: SVGElement; - nearestViewportElement: SVGElement; + readonly farthestViewportElement: SVGElement; + readonly nearestViewportElement: SVGElement; getBBox(): SVGRect; getCTM(): SVGMatrix; getScreenCTM(): SVGMatrix; @@ -17977,22 +19113,22 @@ interface SVGLocatable { interface SVGStylable { className: any; - style: CSSStyleDeclaration; + readonly style: CSSStyleDeclaration; } interface SVGTests { - requiredExtensions: SVGStringList; - requiredFeatures: SVGStringList; - systemLanguage: SVGStringList; + readonly requiredExtensions: SVGStringList; + readonly requiredFeatures: SVGStringList; + readonly systemLanguage: SVGStringList; hasExtension(extension: string): boolean; } interface SVGTransformable extends SVGLocatable { - transform: SVGAnimatedTransformList; + readonly transform: SVGAnimatedTransformList; } interface SVGURIReference { - href: SVGAnimatedString; + readonly href: SVGAnimatedString; } interface WindowBase64 { @@ -18001,15 +19137,15 @@ interface WindowBase64 { } interface WindowConsole { - console: Console; + readonly console: Console; } interface WindowLocalStorage { - localStorage: Storage; + readonly localStorage: Storage; } interface WindowSessionStorage { - sessionStorage: Storage; + readonly sessionStorage: Storage; } interface WindowTimers extends Object, WindowTimersExtension { @@ -18021,8 +19157,6 @@ interface WindowTimers extends Object, WindowTimersExtension { interface WindowTimersExtension { clearImmediate(handle: number): void; - msClearImmediate(handle: number): void; - msSetImmediate(expression: any, ...args: any[]): number; setImmediate(expression: any, ...args: any[]): number; } @@ -18052,22 +19186,18 @@ interface StorageEventInit extends EventInit { storageArea?: Storage; } -interface IDBObjectStoreParameters { - keyPath?: string | string[]; - autoIncrement?: boolean; -} - -interface IDBIndexParameters { - unique?: boolean; - multiEntry?: boolean; -} - interface NodeListOf extends NodeList { length: number; item(index: number): TNode; [index: number]: TNode; } +interface HTMLCollectionOf extends HTMLCollection { + item(index: number): T; + namedItem(name: string): T; + [index: number]: T; +} + interface BlobPropertyBag { type?: string; endings?: string; @@ -18097,15 +19227,6 @@ interface ProgressEventInit extends EventInit { total?: number; } -interface HTMLTemplateElement extends HTMLElement { - content: DocumentFragment; -} - -declare var HTMLTemplateElement: { - prototype: HTMLTemplateElement; - new(): HTMLTemplateElement; -} - interface HTMLPictureElement extends HTMLElement { } @@ -18114,6 +19235,14 @@ declare var HTMLPictureElement: { new(): HTMLPictureElement; } +interface ClipboardEventInit extends EventInit { + data?: string; + dataType?: string; +} + +interface IDBArrayKey extends Array { +} + declare type EventListenerOrEventListenerObject = EventListener | EventListenerObject; interface ErrorEventHandler { @@ -18152,10 +19281,18 @@ interface DecodeErrorCallback { interface FunctionStringCallback { (data: string): void; } +interface NavigatorUserMediaSuccessCallback { + (stream: MediaStream): void; +} +interface NavigatorUserMediaErrorCallback { + (error: MediaStreamError): void; +} +interface ForEachCallback { + (keyId: any, status: string): void; +} declare var Audio: {new(src?: string): HTMLAudioElement; }; declare var Image: {new(width?: number, height?: number): HTMLImageElement; }; declare var Option: {new(text?: string, value?: string, defaultSelected?: boolean, selected?: boolean): HTMLOptionElement; }; -declare var animationStartTime: number; declare var applicationCache: ApplicationCache; declare var clientInformation: Navigator; declare var closed: boolean; @@ -18175,7 +19312,7 @@ declare var length: number; declare var location: Location; declare var locationbar: BarProp; declare var menubar: BarProp; -declare var msAnimationStartTime: number; +declare var msCredentials: MSCredentials; declare var name: string; declare var navigator: Navigator; declare var offscreenBuffering: string | boolean; @@ -18191,6 +19328,7 @@ declare var onclick: (ev: MouseEvent) => any; declare var oncompassneedscalibration: (ev: Event) => any; declare var oncontextmenu: (ev: PointerEvent) => any; declare var ondblclick: (ev: MouseEvent) => any; +declare var ondevicelight: (ev: DeviceLightEvent) => any; declare var ondevicemotion: (ev: DeviceMotionEvent) => any; declare var ondeviceorientation: (ev: DeviceOrientationEvent) => any; declare var ondrag: (ev: DragEvent) => any; @@ -18202,11 +19340,12 @@ declare var ondragstart: (ev: DragEvent) => any; declare var ondrop: (ev: DragEvent) => any; declare var ondurationchange: (ev: Event) => any; declare var onemptied: (ev: Event) => any; -declare var onended: (ev: Event) => any; +declare var onended: (ev: MediaStreamErrorEvent) => any; declare var onerror: ErrorEventHandler; declare var onfocus: (ev: FocusEvent) => any; declare var onhashchange: (ev: HashChangeEvent) => any; declare var oninput: (ev: Event) => any; +declare var oninvalid: (ev: Event) => any; declare var onkeydown: (ev: KeyboardEvent) => any; declare var onkeypress: (ev: KeyboardEvent) => any; declare var onkeyup: (ev: KeyboardEvent) => any; @@ -18222,7 +19361,7 @@ declare var onmousemove: (ev: MouseEvent) => any; declare var onmouseout: (ev: MouseEvent) => any; declare var onmouseover: (ev: MouseEvent) => any; declare var onmouseup: (ev: MouseEvent) => any; -declare var onmousewheel: (ev: MouseWheelEvent) => any; +declare var onmousewheel: (ev: WheelEvent) => any; declare var onmsgesturechange: (ev: MSGestureEvent) => any; declare var onmsgesturedoubletap: (ev: MSGestureEvent) => any; declare var onmsgestureend: (ev: MSGestureEvent) => any; @@ -18261,10 +19400,10 @@ declare var onstorage: (ev: StorageEvent) => any; declare var onsubmit: (ev: Event) => any; declare var onsuspend: (ev: Event) => any; declare var ontimeupdate: (ev: Event) => any; -declare var ontouchcancel: any; -declare var ontouchend: any; -declare var ontouchmove: any; -declare var ontouchstart: any; +declare var ontouchcancel: (ev: TouchEvent) => any; +declare var ontouchend: (ev: TouchEvent) => any; +declare var ontouchmove: (ev: TouchEvent) => any; +declare var ontouchstart: (ev: TouchEvent) => any; declare var onunload: (ev: Event) => any; declare var onvolumechange: (ev: Event) => any; declare var onwaiting: (ev: Event) => any; @@ -18292,7 +19431,6 @@ declare var styleMedia: StyleMedia; declare var toolbar: BarProp; declare var top: Window; declare var window: Window; -declare var URL: URL; declare function alert(message?: any): void; declare function blur(): void; declare function cancelAnimationFrame(handle: number): void; @@ -18306,12 +19444,9 @@ declare function getSelection(): Selection; declare function matchMedia(mediaQuery: string): MediaQueryList; declare function moveBy(x?: number, y?: number): void; declare function moveTo(x?: number, y?: number): void; -declare function msCancelRequestAnimationFrame(handle: number): void; -declare function msMatchMedia(mediaQuery: string): MediaQueryList; -declare function msRequestAnimationFrame(callback: FrameRequestCallback): number; declare function msWriteProfilerMark(profilerMarkName: string): void; declare function open(url?: string, target?: string, features?: string, replace?: boolean): Window; -declare function postMessage(message: any, targetOrigin: string, ports?: any): void; +declare function postMessage(message: any, targetOrigin: string, transfer?: any[]): void; declare function print(): void; declare function prompt(message?: string, _default?: string): string; declare function releaseEvents(): void; @@ -18321,19 +19456,19 @@ declare function resizeTo(x?: number, y?: number): void; declare function scroll(x?: number, y?: number): void; declare function scrollBy(x?: number, y?: number): void; declare function scrollTo(x?: number, y?: number): void; +declare function webkitCancelAnimationFrame(handle: number): void; declare function webkitConvertPointFromNodeToPage(node: Node, pt: WebKitPoint): WebKitPoint; declare function webkitConvertPointFromPageToNode(node: Node, pt: WebKitPoint): WebKitPoint; +declare function webkitRequestAnimationFrame(callback: FrameRequestCallback): number; declare function toString(): string; -declare function addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +declare function addEventListener(type: string, listener?: EventListenerOrEventListenerObject, useCapture?: boolean): void; declare function dispatchEvent(evt: Event): boolean; -declare function removeEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +declare function removeEventListener(type: string, listener?: EventListenerOrEventListenerObject, useCapture?: boolean): void; declare function clearInterval(handle: number): void; declare function clearTimeout(handle: number): void; declare function setInterval(handler: any, timeout?: any, ...args: any[]): number; declare function setTimeout(handler: any, timeout?: any, ...args: any[]): number; declare function clearImmediate(handle: number): void; -declare function msClearImmediate(handle: number): void; -declare function msSetImmediate(expression: any, ...args: any[]): number; declare function setImmediate(expression: any, ...args: any[]): number; declare var sessionStorage: Storage; declare var localStorage: Storage; @@ -18348,7 +19483,6 @@ declare var onpointerover: (ev: PointerEvent) => any; declare var onpointerup: (ev: PointerEvent) => any; declare var onwheel: (ev: WheelEvent) => any; declare var indexedDB: IDBFactory; -declare var msIndexedDB: IDBFactory; declare function atob(encodedString: string): string; declare function btoa(rawString: string): string; declare function addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; @@ -18378,6 +19512,7 @@ declare function addEventListener(type: "click", listener: (ev: MouseEvent) => a declare function addEventListener(type: "compassneedscalibration", listener: (ev: Event) => any, useCapture?: boolean): void; declare function addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; declare function addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "devicelight", listener: (ev: DeviceLightEvent) => any, useCapture?: boolean): void; declare function addEventListener(type: "devicemotion", listener: (ev: DeviceMotionEvent) => any, useCapture?: boolean): void; declare function addEventListener(type: "deviceorientation", listener: (ev: DeviceOrientationEvent) => any, useCapture?: boolean): void; declare function addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void; @@ -18389,10 +19524,11 @@ declare function addEventListener(type: "dragstart", listener: (ev: DragEvent) = declare function addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; declare function addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; declare function addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; +declare function addEventListener(type: "ended", listener: (ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; declare function addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; declare function addEventListener(type: "hashchange", listener: (ev: HashChangeEvent) => any, useCapture?: boolean): void; declare function addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; +declare function addEventListener(type: "invalid", listener: (ev: Event) => any, useCapture?: boolean): void; declare function addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; declare function addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; declare function addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; @@ -18408,7 +19544,7 @@ declare function addEventListener(type: "mousemove", listener: (ev: MouseEvent) declare function addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; declare function addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; declare function addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "mousewheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; declare function addEventListener(type: "offline", listener: (ev: Event) => any, useCapture?: boolean): void; declare function addEventListener(type: "online", listener: (ev: Event) => any, useCapture?: boolean): void; declare function addEventListener(type: "orientationchange", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -18444,18 +19580,39 @@ declare function addEventListener(type: "unload", listener: (ev: Event) => any, declare function addEventListener(type: "volumechange", listener: (ev: Event) => any, useCapture?: boolean): void; declare function addEventListener(type: "waiting", listener: (ev: Event) => any, useCapture?: boolean): void; declare function addEventListener(type: "wheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;interface DOMTokenList { - [Symbol.iterator](): IterableIterator; -} - -interface NodeList { - [Symbol.iterator](): IterableIterator -} - -interface NodeListOf { - [Symbol.iterator](): IterableIterator -} - +declare function addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +type AAGUID = string; +type AlgorithmIdentifier = string | Algorithm; +type ConstrainBoolean = boolean | ConstrainBooleanParameters; +type ConstrainDOMString = string | string[] | ConstrainDOMStringParameters; +type ConstrainDouble = number | ConstrainDoubleRange; +type ConstrainLong = number | ConstrainLongRange; +type CryptoOperationData = ArrayBufferView; +type GLbitfield = number; +type GLboolean = boolean; +type GLbyte = number; +type GLclampf = number; +type GLenum = number; +type GLfloat = number; +type GLint = number; +type GLintptr = number; +type GLshort = number; +type GLsizei = number; +type GLsizeiptr = number; +type GLubyte = number; +type GLuint = number; +type GLushort = number; +type IDBKeyPath = string; +type KeyFormat = string; +type KeyType = string; +type KeyUsage = string; +type MSInboundPayload = MSVideoRecvPayload | MSAudioRecvPayload; +type MSLocalClientEvent = MSLocalClientEventBase | MSAudioLocalClientEvent; +type MSOutboundPayload = MSVideoSendPayload | MSAudioSendPayload; +type RTCIceGatherCandidate = RTCIceCandidate | RTCIceCandidateComplete; +type RTCTransport = RTCDtlsTransport | RTCSrtpSdesTransport; +type payloadtype = number; +type IDBValidKey = number | string | Date | IDBArrayKey; ///////////////////////////// /// WorkerGlobalScope APIs ///////////////////////////// diff --git a/lib/lib.es7.d.ts b/lib/lib.es7.d.ts deleted file mode 100644 index 4da974fb3bc..00000000000 --- a/lib/lib.es7.d.ts +++ /dev/null @@ -1,18829 +0,0 @@ -/*! ***************************************************************************** -Copyright (c) Microsoft Corporation. All rights reserved. -Licensed under the Apache License, Version 2.0 (the "License"); you may not use -this file except in compliance with the License. You may obtain a copy of the -License at http://www.apache.org/licenses/LICENSE-2.0 - -THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED -WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, -MERCHANTABLITY OR NON-INFRINGEMENT. - -See the Apache Version 2.0 License for specific language governing permissions -and limitations under the License. -***************************************************************************** */ - -/// -declare type PropertyKey = string | number | symbol; - -interface Symbol { - /** Returns a string representation of an object. */ - toString(): string; - - /** Returns the primitive value of the specified object. */ - valueOf(): Object; - - readonly [Symbol.toStringTag]: "Symbol"; -} - -interface SymbolConstructor { - /** - * A reference to the prototype. - */ - readonly prototype: Symbol; - - /** - * Returns a new unique Symbol value. - * @param description Description of the new Symbol object. - */ - (description?: string|number): symbol; - - /** - * Returns a Symbol object from the global symbol registry matching the given key if found. - * Otherwise, returns a new symbol with this key. - * @param key key to search for. - */ - for(key: string): symbol; - - /** - * Returns a key from the global symbol registry matching the given Symbol if found. - * Otherwise, returns a undefined. - * @param sym Symbol to find the key for. - */ - keyFor(sym: symbol): string; - - // Well-known Symbols - - /** - * A method that determines if a constructor object recognizes an object as one of the - * constructor’s instances. Called by the semantics of the instanceof operator. - */ - readonly hasInstance: symbol; - - /** - * A Boolean value that if true indicates that an object should flatten to its array elements - * by Array.prototype.concat. - */ - readonly isConcatSpreadable: symbol; - - /** - * A method that returns the default iterator for an object. Called by the semantics of the - * for-of statement. - */ - readonly iterator: symbol; - - /** - * A regular expression method that matches the regular expression against a string. Called - * by the String.prototype.match method. - */ - readonly match: symbol; - - /** - * A regular expression method that replaces matched substrings of a string. Called by the - * String.prototype.replace method. - */ - readonly replace: symbol; - - /** - * A regular expression method that returns the index within a string that matches the - * regular expression. Called by the String.prototype.search method. - */ - readonly search: symbol; - - /** - * A function valued property that is the constructor function that is used to create - * derived objects. - */ - readonly species: symbol; - - /** - * A regular expression method that splits a string at the indices that match the regular - * expression. Called by the String.prototype.split method. - */ - readonly split: symbol; - - /** - * A method that converts an object to a corresponding primitive value. - * Called by the ToPrimitive abstract operation. - */ - readonly toPrimitive: symbol; - - /** - * A String value that is used in the creation of the default string description of an object. - * Called by the built-in method Object.prototype.toString. - */ - readonly toStringTag: symbol; - - /** - * An Object whose own property names are property names that are excluded from the 'with' - * environment bindings of the associated objects. - */ - readonly unscopables: symbol; -} -declare var Symbol: SymbolConstructor; - -interface Object { - /** - * Determines whether an object has a property with the specified name. - * @param v A property name. - */ - hasOwnProperty(v: PropertyKey): boolean; - - /** - * Determines whether a specified property is enumerable. - * @param v A property name. - */ - propertyIsEnumerable(v: PropertyKey): boolean; -} - -interface ObjectConstructor { - /** - * Copy the values of all of the enumerable own properties from one or more source objects to a - * target object. Returns the target object. - * @param target The target object to copy to. - * @param source The source object from which to copy properties. - */ - assign(target: T, source: U): T & U; - - /** - * Copy the values of all of the enumerable own properties from one or more source objects to a - * target object. Returns the target object. - * @param target The target object to copy to. - * @param source1 The first source object from which to copy properties. - * @param source2 The second source object from which to copy properties. - */ - assign(target: T, source1: U, source2: V): T & U & V; - - /** - * Copy the values of all of the enumerable own properties from one or more source objects to a - * target object. Returns the target object. - * @param target The target object to copy to. - * @param source1 The first source object from which to copy properties. - * @param source2 The second source object from which to copy properties. - * @param source3 The third source object from which to copy properties. - */ - assign(target: T, source1: U, source2: V, source3: W): T & U & V & W; - - /** - * Copy the values of all of the enumerable own properties from one or more source objects to a - * target object. Returns the target object. - * @param target The target object to copy to. - * @param sources One or more source objects from which to copy properties - */ - assign(target: any, ...sources: any[]): any; - - /** - * Returns an array of all symbol properties found directly on object o. - * @param o Object to retrieve the symbols from. - */ - getOwnPropertySymbols(o: any): symbol[]; - - /** - * Returns true if the values are the same value, false otherwise. - * @param value1 The first value. - * @param value2 The second value. - */ - is(value1: any, value2: any): boolean; - - /** - * Sets the prototype of a specified object o to object proto or null. Returns the object o. - * @param o The object to change its prototype. - * @param proto The value of the new prototype or null. - */ - setPrototypeOf(o: any, proto: any): any; - - /** - * Gets the own property descriptor of the specified object. - * An own property descriptor is one that is defined directly on the object and is not - * inherited from the object's prototype. - * @param o Object that contains the property. - * @param p Name of the property. - */ - getOwnPropertyDescriptor(o: any, propertyKey: PropertyKey): PropertyDescriptor; - - /** - * Adds a property to an object, or modifies attributes of an existing property. - * @param o Object on which to add or modify the property. This can be a native JavaScript - * object (that is, a user-defined object or a built in object) or a DOM object. - * @param p The property name. - * @param attributes Descriptor for the property. It can be for a data property or an accessor - * property. - */ - defineProperty(o: any, propertyKey: PropertyKey, attributes: PropertyDescriptor): any; -} - -interface Function { - /** - * Returns the name of the function. Function names are read-only and can not be changed. - */ - readonly name: string; - - /** - * Determines whether the given value inherits from this function if this function was used - * as a constructor function. - * - * A constructor function can control which objects are recognized as its instances by - * 'instanceof' by overriding this method. - */ - [Symbol.hasInstance](value: any): boolean; -} - -interface NumberConstructor { - /** - * The value of Number.EPSILON is the difference between 1 and the smallest value greater than 1 - * that is representable as a Number value, which is approximately: - * 2.2204460492503130808472633361816 x 10‍−‍16. - */ - readonly EPSILON: number; - - /** - * Returns true if passed value is finite. - * Unlike the global isFininte, Number.isFinite doesn't forcibly convert the parameter to a - * number. Only finite values of the type number, result in true. - * @param number A numeric value. - */ - isFinite(number: number): boolean; - - /** - * Returns true if the value passed is an integer, false otherwise. - * @param number A numeric value. - */ - isInteger(number: number): boolean; - - /** - * Returns a Boolean value that indicates whether a value is the reserved value NaN (not a - * number). Unlike the global isNaN(), Number.isNaN() doesn't forcefully convert the parameter - * to a number. Only values of the type number, that are also NaN, result in true. - * @param number A numeric value. - */ - isNaN(number: number): boolean; - - /** - * Returns true if the value passed is a safe integer. - * @param number A numeric value. - */ - isSafeInteger(number: number): boolean; - - /** - * The value of the largest integer n such that n and n + 1 are both exactly representable as - * a Number value. - * The value of Number.MIN_SAFE_INTEGER is 9007199254740991 2^53 − 1. - */ - readonly MAX_SAFE_INTEGER: number; - - /** - * The value of the smallest integer n such that n and n − 1 are both exactly representable as - * a Number value. - * The value of Number.MIN_SAFE_INTEGER is −9007199254740991 (−(2^53 − 1)). - */ - readonly MIN_SAFE_INTEGER: number; - - /** - * Converts a string to a floating-point number. - * @param string A string that contains a floating-point number. - */ - parseFloat(string: string): number; - - /** - * Converts A string to an integer. - * @param s A string to convert into a number. - * @param radix A value between 2 and 36 that specifies the base of the number in numString. - * If this argument is not supplied, strings with a prefix of '0x' are considered hexadecimal. - * All other strings are considered decimal. - */ - parseInt(string: string, radix?: number): number; -} - -interface Array { - /** Iterator */ - [Symbol.iterator](): IterableIterator; - - /** - * Returns an object whose properties have the value 'true' - * when they will be absent when used in a 'with' statement. - */ - [Symbol.unscopables](): { - copyWithin: boolean; - entries: boolean; - fill: boolean; - find: boolean; - findIndex: boolean; - keys: boolean; - values: boolean; - }; - - /** - * Returns an array of key, value pairs for every entry in the array - */ - entries(): IterableIterator<[number, T]>; - - /** - * Returns an list of keys in the array - */ - keys(): IterableIterator; - - /** - * Returns an list of values in the array - */ - values(): IterableIterator; - - /** - * Returns the value of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - find(predicate: (value: T, index: number, obj: Array) => boolean, thisArg?: any): T; - - /** - * Returns the index of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - findIndex(predicate: (value: T) => boolean, thisArg?: any): number; - - /** - * Returns the this object after filling the section identified by start and end with value - * @param value value to fill array section with - * @param start index to start filling the array at. If start is negative, it is treated as - * length+start where length is the length of the array. - * @param end index to stop filling the array at. If end is negative, it is treated as - * length+end. - */ - fill(value: T, start?: number, end?: number): T[]; - - /** - * Returns the this object after copying a section of the array identified by start and end - * to the same array starting at position target - * @param target If target is negative, it is treated as length+target where length is the - * length of the array. - * @param start If start is negative, it is treated as length+start. If end is negative, it - * is treated as length+end. - * @param end If not specified, length of the this object is used as its default value. - */ - copyWithin(target: number, start: number, end?: number): T[]; -} - -interface IArguments { - /** Iterator */ - [Symbol.iterator](): IterableIterator; -} - -interface ArrayConstructor { - /** - * Creates an array from an array-like object. - * @param arrayLike An array-like object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): Array; - - /** - * Creates an array from an iterable object. - * @param iterable An iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(iterable: Iterable, mapfn: (v: T, k: number) => U, thisArg?: any): Array; - - /** - * Creates an array from an array-like object. - * @param arrayLike An array-like object to convert to an array. - */ - from(arrayLike: ArrayLike): Array; - - /** - * Creates an array from an iterable object. - * @param iterable An iterable object to convert to an array. - */ - from(iterable: Iterable): Array; - - /** - * Returns a new array from a set of elements. - * @param items A set of elements to include in the new array object. - */ - of(...items: T[]): Array; -} - -interface String { - /** Iterator */ - [Symbol.iterator](): IterableIterator; - - /** - * Returns a nonnegative integer Number less than 1114112 (0x110000) that is the code point - * value of the UTF-16 encoded code point starting at the string element at position pos in - * the String resulting from converting this object to a String. - * If there is no element at that position, the result is undefined. - * If a valid UTF-16 surrogate pair does not begin at pos, the result is the code unit at pos. - */ - codePointAt(pos: number): number; - - /** - * Returns true if searchString appears as a substring of the result of converting this - * object to a String, at one or more positions that are - * greater than or equal to position; otherwise, returns false. - * @param searchString search string - * @param position If position is undefined, 0 is assumed, so as to search all of the String. - */ - includes(searchString: string, position?: number): boolean; - - /** - * Returns true if the sequence of elements of searchString converted to a String is the - * same as the corresponding elements of this object (converted to a String) starting at - * endPosition – length(this). Otherwise returns false. - */ - endsWith(searchString: string, endPosition?: number): boolean; - - /** - * Returns the String value result of normalizing the string into the normalization form - * named by form as specified in Unicode Standard Annex #15, Unicode Normalization Forms. - * @param form Applicable values: "NFC", "NFD", "NFKC", or "NFKD", If not specified default - * is "NFC" - */ - normalize(form?: string): string; - - /** - * Returns a String value that is made from count copies appended together. If count is 0, - * T is the empty String is returned. - * @param count number of copies to append - */ - repeat(count: number): string; - - /** - * Returns true if the sequence of elements of searchString converted to a String is the - * same as the corresponding elements of this object (converted to a String) starting at - * position. Otherwise returns false. - */ - startsWith(searchString: string, position?: number): boolean; - - // Overloads for objects with methods of well-known symbols. - - /** - * Matches a string an object that supports being matched against, and returns an array containing the results of that search. - * @param matcher An object that supports being matched against. - */ - match(matcher: { [Symbol.match](string: string): RegExpMatchArray; }): RegExpMatchArray; - - /** - * Replaces text in a string, using an object that supports replacement within a string. - * @param searchValue A object can search for and replace matches within a string. - * @param replaceValue A string containing the text to replace for every successful match of searchValue in this string. - */ - replace(searchValue: { [Symbol.replace](string: string, replaceValue: string): string; }, replaceValue: string): string; - - /** - * Replaces text in a string, using an object that supports replacement within a string. - * @param searchValue A object can search for and replace matches within a string. - * @param replacer A function that returns the replacement text. - */ - replace(searchValue: { [Symbol.replace](string: string, replacer: (substring: string, ...args: any[]) => string): string; }, replacer: (substring: string, ...args: any[]) => string): string; - - /** - * Finds the first substring match in a regular expression search. - * @param searcher An object which supports searching within a string. - */ - search(searcher: { [Symbol.search](string: string): number; }): number; - - /** - * Split a string into substrings using the specified separator and return them as an array. - * @param splitter An object that can split a string. - * @param limit A value used to limit the number of elements returned in the array. - */ - split(splitter: { [Symbol.split](string: string, limit?: number): string[]; }, limit?: number): string[]; - - /** - * Returns an HTML anchor element and sets the name attribute to the text value - * @param name - */ - anchor(name: string): string; - - /** Returns a HTML element */ - big(): string; - - /** Returns a HTML element */ - blink(): string; - - /** Returns a HTML element */ - bold(): string; - - /** Returns a HTML element */ - fixed(): string - - /** Returns a HTML element and sets the color attribute value */ - fontcolor(color: string): string - - /** Returns a HTML element and sets the size attribute value */ - fontsize(size: number): string; - - /** Returns a HTML element and sets the size attribute value */ - fontsize(size: string): string; - - /** Returns an HTML element */ - italics(): string; - - /** Returns an HTML element and sets the href attribute value */ - link(url: string): string; - - /** Returns a HTML element */ - small(): string; - - /** Returns a HTML element */ - strike(): string; - - /** Returns a HTML element */ - sub(): string; - - /** Returns a HTML element */ - sup(): string; -} - -interface StringConstructor { - /** - * Return the String value whose elements are, in order, the elements in the List elements. - * If length is 0, the empty string is returned. - */ - fromCodePoint(...codePoints: number[]): string; - - /** - * String.raw is intended for use as a tag function of a Tagged Template String. When called - * as such the first argument will be a well formed template call site object and the rest - * parameter will contain the substitution values. - * @param template A well-formed template string call site representation. - * @param substitutions A set of substitution values. - */ - raw(template: TemplateStringsArray, ...substitutions: any[]): string; -} - -interface IteratorResult { - done: boolean; - value?: T; -} - -interface Iterator { - next(value?: any): IteratorResult; - return?(value?: any): IteratorResult; - throw?(e?: any): IteratorResult; -} - -interface Iterable { - [Symbol.iterator](): Iterator; -} - -interface IterableIterator extends Iterator { - [Symbol.iterator](): IterableIterator; -} - -interface GeneratorFunction extends Function { - readonly [Symbol.toStringTag]: "GeneratorFunction"; -} - -interface GeneratorFunctionConstructor { - /** - * Creates a new Generator function. - * @param args A list of arguments the function accepts. - */ - new (...args: string[]): GeneratorFunction; - (...args: string[]): GeneratorFunction; - readonly prototype: GeneratorFunction; -} -declare var GeneratorFunction: GeneratorFunctionConstructor; - -interface Math { - /** - * Returns the number of leading zero bits in the 32-bit binary representation of a number. - * @param x A numeric expression. - */ - clz32(x: number): number; - - /** - * Returns the result of 32-bit multiplication of two numbers. - * @param x First number - * @param y Second number - */ - imul(x: number, y: number): number; - - /** - * Returns the sign of the x, indicating whether x is positive, negative or zero. - * @param x The numeric expression to test - */ - sign(x: number): number; - - /** - * Returns the base 10 logarithm of a number. - * @param x A numeric expression. - */ - log10(x: number): number; - - /** - * Returns the base 2 logarithm of a number. - * @param x A numeric expression. - */ - log2(x: number): number; - - /** - * Returns the natural logarithm of 1 + x. - * @param x A numeric expression. - */ - log1p(x: number): number; - - /** - * Returns the result of (e^x - 1) of x (e raised to the power of x, where e is the base of - * the natural logarithms). - * @param x A numeric expression. - */ - expm1(x: number): number; - - /** - * Returns the hyperbolic cosine of a number. - * @param x A numeric expression that contains an angle measured in radians. - */ - cosh(x: number): number; - - /** - * Returns the hyperbolic sine of a number. - * @param x A numeric expression that contains an angle measured in radians. - */ - sinh(x: number): number; - - /** - * Returns the hyperbolic tangent of a number. - * @param x A numeric expression that contains an angle measured in radians. - */ - tanh(x: number): number; - - /** - * Returns the inverse hyperbolic cosine of a number. - * @param x A numeric expression that contains an angle measured in radians. - */ - acosh(x: number): number; - - /** - * Returns the inverse hyperbolic sine of a number. - * @param x A numeric expression that contains an angle measured in radians. - */ - asinh(x: number): number; - - /** - * Returns the inverse hyperbolic tangent of a number. - * @param x A numeric expression that contains an angle measured in radians. - */ - atanh(x: number): number; - - /** - * Returns the square root of the sum of squares of its arguments. - * @param values Values to compute the square root for. - * If no arguments are passed, the result is +0. - * If there is only one argument, the result is the absolute value. - * If any argument is +Infinity or -Infinity, the result is +Infinity. - * If any argument is NaN, the result is NaN. - * If all arguments are either +0 or −0, the result is +0. - */ - hypot(...values: number[] ): number; - - /** - * Returns the integral part of the a numeric expression, x, removing any fractional digits. - * If x is already an integer, the result is x. - * @param x A numeric expression. - */ - trunc(x: number): number; - - /** - * Returns the nearest single precision float representation of a number. - * @param x A numeric expression. - */ - fround(x: number): number; - - /** - * Returns an implementation-dependent approximation to the cube root of number. - * @param x A numeric expression. - */ - cbrt(x: number): number; - - readonly [Symbol.toStringTag]: "Math"; -} - -interface Date { - /** - * Converts a Date object to a string. - */ - [Symbol.toPrimitive](hint: "default"): string; - /** - * Converts a Date object to a string. - */ - [Symbol.toPrimitive](hint: "string"): string; - /** - * Converts a Date object to a number. - */ - [Symbol.toPrimitive](hint: "number"): number; - /** - * Converts a Date object to a string or number. - * - * @param hint The strings "number", "string", or "default" to specify what primitive to return. - * - * @throws {TypeError} If 'hint' was given something other than "number", "string", or "default". - * @returns A number if 'hint' was "number", a string if 'hint' was "string" or "default". - */ - [Symbol.toPrimitive](hint: string): string | number; -} - -interface RegExp { - /** - * Matches a string with this regular expression, and returns an array containing the results of - * that search. - * @param string A string to search within. - */ - [Symbol.match](string: string): RegExpMatchArray; - - /** - * Replaces text in a string, using this regular expression. - * @param string A String object or string literal whose contents matching against - * this regular expression will be replaced - * @param replaceValue A String object or string literal containing the text to replace for every - * successful match of this regular expression. - */ - [Symbol.replace](string: string, replaceValue: string): string; - - /** - * Replaces text in a string, using this regular expression. - * @param string A String object or string literal whose contents matching against - * this regular expression will be replaced - * @param replacer A function that returns the replacement text. - */ - [Symbol.replace](string: string, replacer: (substring: string, ...args: any[]) => string): string; - - /** - * Finds the position beginning first substring match in a regular expression search - * using this regular expression. - * - * @param string The string to search within. - */ - [Symbol.search](string: string): number; - - /** - * Returns an array of substrings that were delimited by strings in the original input that - * match against this regular expression. - * - * If the regular expression contains capturing parentheses, then each time this - * regular expression matches, the results (including any undefined results) of the - * capturing parentheses are spliced. - * - * @param string string value to split - * @param limit if not undefined, the output array is truncated so that it contains no more - * than 'limit' elements. - */ - [Symbol.split](string: string, limit?: number): string[]; - - /** - * Returns a string indicating the flags of the regular expression in question. This field is read-only. - * The characters in this string are sequenced and concatenated in the following order: - * - * - "g" for global - * - "i" for ignoreCase - * - "m" for multiline - * - "u" for unicode - * - "y" for sticky - * - * If no flags are set, the value is the empty string. - */ - readonly flags: string; - - /** - * Returns a Boolean value indicating the state of the sticky flag (y) used with a regular - * expression. Default is false. Read-only. - */ - readonly sticky: boolean; - - /** - * Returns a Boolean value indicating the state of the Unicode flag (u) used with a regular - * expression. Default is false. Read-only. - */ - readonly unicode: boolean; -} - -interface RegExpConstructor { - [Symbol.species](): RegExpConstructor; -} - -interface Map { - clear(): void; - delete(key: K): boolean; - entries(): IterableIterator<[K, V]>; - forEach(callbackfn: (value: V, index: K, map: Map) => void, thisArg?: any): void; - get(key: K): V; - has(key: K): boolean; - keys(): IterableIterator; - set(key: K, value?: V): Map; - readonly size: number; - values(): IterableIterator; - [Symbol.iterator]():IterableIterator<[K,V]>; - readonly [Symbol.toStringTag]: "Map"; -} - -interface MapConstructor { - new (): Map; - new (): Map; - new (iterable: Iterable<[K, V]>): Map; - readonly prototype: Map; -} -declare var Map: MapConstructor; - -interface WeakMap { - clear(): void; - delete(key: K): boolean; - get(key: K): V; - has(key: K): boolean; - set(key: K, value?: V): WeakMap; - readonly [Symbol.toStringTag]: "WeakMap"; -} - -interface WeakMapConstructor { - new (): WeakMap; - new (): WeakMap; - new (iterable: Iterable<[K, V]>): WeakMap; - readonly prototype: WeakMap; -} -declare var WeakMap: WeakMapConstructor; - -interface Set { - add(value: T): Set; - clear(): void; - delete(value: T): boolean; - entries(): IterableIterator<[T, T]>; - forEach(callbackfn: (value: T, index: T, set: Set) => void, thisArg?: any): void; - has(value: T): boolean; - keys(): IterableIterator; - readonly size: number; - values(): IterableIterator; - [Symbol.iterator]():IterableIterator; - readonly [Symbol.toStringTag]: "Set"; -} - -interface SetConstructor { - new (): Set; - new (): Set; - new (iterable: Iterable): Set; - readonly prototype: Set; -} -declare var Set: SetConstructor; - -interface WeakSet { - add(value: T): WeakSet; - clear(): void; - delete(value: T): boolean; - has(value: T): boolean; - readonly [Symbol.toStringTag]: "WeakSet"; -} - -interface WeakSetConstructor { - new (): WeakSet; - new (): WeakSet; - new (iterable: Iterable): WeakSet; - readonly prototype: WeakSet; -} -declare var WeakSet: WeakSetConstructor; - -interface JSON { - readonly [Symbol.toStringTag]: "JSON"; -} - -/** - * Represents a raw buffer of binary data, which is used to store data for the - * different typed arrays. ArrayBuffers cannot be read from or written to directly, - * but can be passed to a typed array or DataView Object to interpret the raw - * buffer as needed. - */ -interface ArrayBuffer { - readonly [Symbol.toStringTag]: "ArrayBuffer"; -} - -interface DataView { - readonly [Symbol.toStringTag]: "DataView"; -} - -/** - * A typed array of 8-bit integer values. The contents are initialized to 0. If the requested - * number of bytes could not be allocated an exception is raised. - */ -interface Int8Array { - /** - * Returns an array of key, value pairs for every entry in the array - */ - entries(): IterableIterator<[number, number]>; - /** - * Returns an list of keys in the array - */ - keys(): IterableIterator; - /** - * Returns an list of values in the array - */ - values(): IterableIterator; - [Symbol.iterator](): IterableIterator; - readonly [Symbol.toStringTag]: "Int8Array"; -} - -interface Int8ArrayConstructor { - new (elements: Iterable): Int8Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Int8Array; -} - -/** - * A typed array of 8-bit unsigned integer values. The contents are initialized to 0. If the - * requested number of bytes could not be allocated an exception is raised. - */ -interface Uint8Array { - /** - * Returns an array of key, value pairs for every entry in the array - */ - entries(): IterableIterator<[number, number]>; - /** - * Returns an list of keys in the array - */ - keys(): IterableIterator; - /** - * Returns an list of values in the array - */ - values(): IterableIterator; - [Symbol.iterator](): IterableIterator; - readonly [Symbol.toStringTag]: "UInt8Array"; -} - -interface Uint8ArrayConstructor { - new (elements: Iterable): Uint8Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint8Array; -} - -/** - * A typed array of 8-bit unsigned integer (clamped) values. The contents are initialized to 0. - * If the requested number of bytes could not be allocated an exception is raised. - */ -interface Uint8ClampedArray { - /** - * Returns an array of key, value pairs for every entry in the array - */ - entries(): IterableIterator<[number, number]>; - - /** - * Returns an list of keys in the array - */ - keys(): IterableIterator; - - /** - * Returns an list of values in the array - */ - values(): IterableIterator; - - [Symbol.iterator](): IterableIterator; - readonly [Symbol.toStringTag]: "Uint8ClampedArray"; -} - -interface Uint8ClampedArrayConstructor { - new (elements: Iterable): Uint8ClampedArray; - - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint8ClampedArray; -} - -/** - * A typed array of 16-bit signed integer values. The contents are initialized to 0. If the - * requested number of bytes could not be allocated an exception is raised. - */ -interface Int16Array { - /** - * Returns an array of key, value pairs for every entry in the array - */ - entries(): IterableIterator<[number, number]>; - - /** - * Returns an list of keys in the array - */ - keys(): IterableIterator; - - /** - * Returns an list of values in the array - */ - values(): IterableIterator; - - - [Symbol.iterator](): IterableIterator; - readonly [Symbol.toStringTag]: "Int16Array"; -} - -interface Int16ArrayConstructor { - new (elements: Iterable): Int16Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Int16Array; -} - -/** - * A typed array of 16-bit unsigned integer values. The contents are initialized to 0. If the - * requested number of bytes could not be allocated an exception is raised. - */ -interface Uint16Array { - /** - * Returns an array of key, value pairs for every entry in the array - */ - entries(): IterableIterator<[number, number]>; - /** - * Returns an list of keys in the array - */ - keys(): IterableIterator; - /** - * Returns an list of values in the array - */ - values(): IterableIterator; - [Symbol.iterator](): IterableIterator; - readonly [Symbol.toStringTag]: "Uint16Array"; -} - -interface Uint16ArrayConstructor { - new (elements: Iterable): Uint16Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint16Array; -} - -/** - * A typed array of 32-bit signed integer values. The contents are initialized to 0. If the - * requested number of bytes could not be allocated an exception is raised. - */ -interface Int32Array { - /** - * Returns an array of key, value pairs for every entry in the array - */ - entries(): IterableIterator<[number, number]>; - /** - * Returns an list of keys in the array - */ - keys(): IterableIterator; - /** - * Returns an list of values in the array - */ - values(): IterableIterator; - [Symbol.iterator](): IterableIterator; - readonly [Symbol.toStringTag]: "Int32Array"; -} - -interface Int32ArrayConstructor { - new (elements: Iterable): Int32Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Int32Array; -} - -/** - * A typed array of 32-bit unsigned integer values. The contents are initialized to 0. If the - * requested number of bytes could not be allocated an exception is raised. - */ -interface Uint32Array { - /** - * Returns an array of key, value pairs for every entry in the array - */ - entries(): IterableIterator<[number, number]>; - /** - * Returns an list of keys in the array - */ - keys(): IterableIterator; - /** - * Returns an list of values in the array - */ - values(): IterableIterator; - [Symbol.iterator](): IterableIterator; - readonly [Symbol.toStringTag]: "Uint32Array"; -} - -interface Uint32ArrayConstructor { - new (elements: Iterable): Uint32Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint32Array; -} - -/** - * A typed array of 32-bit float values. The contents are initialized to 0. If the requested number - * of bytes could not be allocated an exception is raised. - */ -interface Float32Array { - /** - * Returns an array of key, value pairs for every entry in the array - */ - entries(): IterableIterator<[number, number]>; - /** - * Returns an list of keys in the array - */ - keys(): IterableIterator; - /** - * Returns an list of values in the array - */ - values(): IterableIterator; - [Symbol.iterator](): IterableIterator; - readonly [Symbol.toStringTag]: "Float32Array"; -} - -interface Float32ArrayConstructor { - new (elements: Iterable): Float32Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Float32Array; -} - -/** - * A typed array of 64-bit float values. The contents are initialized to 0. If the requested - * number of bytes could not be allocated an exception is raised. - */ -interface Float64Array { - /** - * Returns an array of key, value pairs for every entry in the array - */ - entries(): IterableIterator<[number, number]>; - /** - * Returns an list of keys in the array - */ - keys(): IterableIterator; - /** - * Returns an list of values in the array - */ - values(): IterableIterator; - [Symbol.iterator](): IterableIterator; - readonly [Symbol.toStringTag]: "Float64Array"; -} - -interface Float64ArrayConstructor { - new (elements: Iterable): Float64Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Float64Array; -} - -interface ProxyHandler { - getPrototypeOf? (target: T): any; - setPrototypeOf? (target: T, v: any): boolean; - isExtensible? (target: T): boolean; - preventExtensions? (target: T): boolean; - getOwnPropertyDescriptor? (target: T, p: PropertyKey): PropertyDescriptor; - has? (target: T, p: PropertyKey): boolean; - get? (target: T, p: PropertyKey, receiver: any): any; - set? (target: T, p: PropertyKey, value: any, receiver: any): boolean; - deleteProperty? (target: T, p: PropertyKey): boolean; - defineProperty? (target: T, p: PropertyKey, attributes: PropertyDescriptor): boolean; - enumerate? (target: T): PropertyKey[]; - ownKeys? (target: T): PropertyKey[]; - apply? (target: T, thisArg: any, argArray?: any): any; - construct? (target: T, thisArg: any, argArray?: any): any; -} - -interface ProxyConstructor { - revocable(target: T, handler: ProxyHandler): { proxy: T; revoke: () => void; }; - new (target: T, handler: ProxyHandler): T -} -declare var Proxy: ProxyConstructor; - -declare namespace Reflect { - function apply(target: Function, thisArgument: any, argumentsList: ArrayLike): any; - function construct(target: Function, argumentsList: ArrayLike, newTarget?: any): any; - function defineProperty(target: any, propertyKey: PropertyKey, attributes: PropertyDescriptor): boolean; - function deleteProperty(target: any, propertyKey: PropertyKey): boolean; - function enumerate(target: any): IterableIterator; - function get(target: any, propertyKey: PropertyKey, receiver?: any): any; - function getOwnPropertyDescriptor(target: any, propertyKey: PropertyKey): PropertyDescriptor; - function getPrototypeOf(target: any): any; - function has(target: any, propertyKey: string): boolean; - function has(target: any, propertyKey: symbol): boolean; - function isExtensible(target: any): boolean; - function ownKeys(target: any): Array; - function preventExtensions(target: any): boolean; - function set(target: any, propertyKey: PropertyKey, value: any, receiver?: any): boolean; - function setPrototypeOf(target: any, proto: any): boolean; -} - -/** - * Represents the completion of an asynchronous operation - */ -interface Promise { - /** - * 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(onfulfilled?: (value: T) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): Promise; - then(onfulfilled?: (value: T) => TResult | PromiseLike, onrejected?: (reason: any) => void): Promise; - - /** - * Attaches a callback for only the rejection of the Promise. - * @param onrejected The callback to execute when the Promise is rejected. - * @returns A Promise for the completion of the callback. - */ - catch(onrejected?: (reason: any) => T | PromiseLike): Promise; - catch(onrejected?: (reason: any) => void): Promise; - - readonly [Symbol.toStringTag]: "Promise"; -} - -interface PromiseConstructor { - /** - * A reference to the prototype. - */ - readonly prototype: Promise; - - /** - * Creates a new Promise. - * @param executor A callback used to initialize the promise. This callback is passed two arguments: - * a resolve callback used resolve the promise with a value or the result of another promise, - * and a reject callback used to reject the promise with a provided reason or error. - */ - new (executor: (resolve: (value?: T | PromiseLike) => void, reject: (reason?: any) => void) => void): Promise; - - /** - * Creates a Promise that is resolved with an array of results when all of the provided Promises - * resolve, or rejected when any Promise is rejected. - * @param values An array of Promises. - * @returns A new Promise. - */ - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike, T9 | PromiseLike, T10 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]>; - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike, T9 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9]>; - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8]>; - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7]>; - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6]>; - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike]): Promise<[T1, T2, T3, T4, T5]>; - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike ]): Promise<[T1, T2, T3, T4]>; - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike]): Promise<[T1, T2, T3]>; - all(values: [T1 | PromiseLike, T2 | PromiseLike]): Promise<[T1, T2]>; - all(values: Iterable>): Promise; - - /** - * Creates a Promise that is resolved or rejected when any of the provided Promises are resolved - * or rejected. - * @param values An array of Promises. - * @returns A new Promise. - */ - race(values: Iterable>): Promise; - - /** - * Creates a new rejected promise for the provided reason. - * @param reason The reason the promise was rejected. - * @returns A new rejected Promise. - */ - reject(reason: any): Promise; - - /** - * Creates a new rejected promise for the provided reason. - * @param reason The reason the promise was rejected. - * @returns A new rejected Promise. - */ - reject(reason: any): Promise; - - /** - * Creates a new resolved promise for the provided value. - * @param value A promise. - * @returns A promise whose internal state matches the provided promise. - */ - resolve(value: T | PromiseLike): Promise; - - /** - * Creates a new resolved promise . - * @returns A resolved promise. - */ - resolve(): Promise; - - readonly [Symbol.species]: Function; -} - -declare var Promise: PromiseConstructor; -interface Array { - /** - * Determines whether an array includes a certain element, returning true or false as appropriate. - * @param searchElement The element to search for. - * @param fromIndex The position in this array at which to begin searching for searchElement. - */ - includes(searchElement: T, fromIndex?: number): boolean; -} - -interface Int8Array { - /** - * Determines whether an array includes a certain element, returning true or false as appropriate. - * @param searchElement The element to search for. - * @param fromIndex The position in this array at which to begin searching for searchElement. - */ - includes(searchElement: number, fromIndex?: number): boolean; -} - -interface Uint8Array { - /** - * Determines whether an array includes a certain element, returning true or false as appropriate. - * @param searchElement The element to search for. - * @param fromIndex The position in this array at which to begin searching for searchElement. - */ - includes(searchElement: number, fromIndex?: number): boolean; -} - -interface Uint8ClampedArray { - /** - * Determines whether an array includes a certain element, returning true or false as appropriate. - * @param searchElement The element to search for. - * @param fromIndex The position in this array at which to begin searching for searchElement. - */ - includes(searchElement: number, fromIndex?: number): boolean; -} - -interface Int16Array { - /** - * Determines whether an array includes a certain element, returning true or false as appropriate. - * @param searchElement The element to search for. - * @param fromIndex The position in this array at which to begin searching for searchElement. - */ - includes(searchElement: number, fromIndex?: number): boolean; -} - -interface Uint16Array { - /** - * Determines whether an array includes a certain element, returning true or false as appropriate. - * @param searchElement The element to search for. - * @param fromIndex The position in this array at which to begin searching for searchElement. - */ - includes(searchElement: number, fromIndex?: number): boolean; -} - -interface Int32Array { - /** - * Determines whether an array includes a certain element, returning true or false as appropriate. - * @param searchElement The element to search for. - * @param fromIndex The position in this array at which to begin searching for searchElement. - */ - includes(searchElement: number, fromIndex?: number): boolean; -} - -interface Uint32Array { - /** - * Determines whether an array includes a certain element, returning true or false as appropriate. - * @param searchElement The element to search for. - * @param fromIndex The position in this array at which to begin searching for searchElement. - */ - includes(searchElement: number, fromIndex?: number): boolean; -} - -interface Float32Array { - /** - * Determines whether an array includes a certain element, returning true or false as appropriate. - * @param searchElement The element to search for. - * @param fromIndex The position in this array at which to begin searching for searchElement. - */ - includes(searchElement: number, fromIndex?: number): boolean; -} - -interface Float64Array { - /** - * Determines whether an array includes a certain element, returning true or false as appropriate. - * @param searchElement The element to search for. - * @param fromIndex The position in this array at which to begin searching for searchElement. - */ - includes(searchElement: number, fromIndex?: number): boolean; -}///////////////////////////// -/// ECMAScript APIs -///////////////////////////// - -declare const NaN: number; -declare const Infinity: number; - -/** - * Evaluates JavaScript code and executes it. - * @param x A String value that contains valid JavaScript code. - */ -declare function eval(x: string): any; - -/** - * Converts A string to an integer. - * @param s A string to convert into a number. - * @param radix A value between 2 and 36 that specifies the base of the number in numString. - * If this argument is not supplied, strings with a prefix of '0x' are considered hexadecimal. - * All other strings are considered decimal. - */ -declare function parseInt(s: string, radix?: number): number; - -/** - * Converts a string to a floating-point number. - * @param string A string that contains a floating-point number. - */ -declare function parseFloat(string: string): number; - -/** - * Returns a Boolean value that indicates whether a value is the reserved value NaN (not a number). - * @param number A numeric value. - */ -declare function isNaN(number: number): boolean; - -/** - * Determines whether a supplied number is finite. - * @param number Any numeric value. - */ -declare function isFinite(number: number): boolean; - -/** - * Gets the unencoded version of an encoded Uniform Resource Identifier (URI). - * @param encodedURI A value representing an encoded URI. - */ -declare function decodeURI(encodedURI: string): string; - -/** - * Gets the unencoded version of an encoded component of a Uniform Resource Identifier (URI). - * @param encodedURIComponent A value representing an encoded URI component. - */ -declare function decodeURIComponent(encodedURIComponent: string): string; - -/** - * Encodes a text string as a valid Uniform Resource Identifier (URI) - * @param uri A value representing an encoded URI. - */ -declare function encodeURI(uri: string): string; - -/** - * Encodes a text string as a valid component of a Uniform Resource Identifier (URI). - * @param uriComponent A value representing an encoded URI component. - */ -declare function encodeURIComponent(uriComponent: string): string; - -interface PropertyDescriptor { - configurable?: boolean; - enumerable?: boolean; - value?: any; - writable?: boolean; - get? (): any; - set? (v: any): void; -} - -interface PropertyDescriptorMap { - [s: string]: PropertyDescriptor; -} - -interface Object { - /** The initial value of Object.prototype.constructor is the standard built-in Object constructor. */ - constructor: Function; - - /** Returns a string representation of an object. */ - toString(): string; - - /** Returns a date converted to a string using the current locale. */ - toLocaleString(): string; - - /** Returns the primitive value of the specified object. */ - valueOf(): Object; - - /** - * Determines whether an object has a property with the specified name. - * @param v A property name. - */ - hasOwnProperty(v: string): boolean; - - /** - * Determines whether an object exists in another object's prototype chain. - * @param v Another object whose prototype chain is to be checked. - */ - isPrototypeOf(v: Object): boolean; - - /** - * Determines whether a specified property is enumerable. - * @param v A property name. - */ - propertyIsEnumerable(v: string): boolean; -} - -interface ObjectConstructor { - new (value?: any): Object; - (): any; - (value: any): any; - - /** A reference to the prototype for a class of objects. */ - readonly prototype: Object; - - /** - * Returns the prototype of an object. - * @param o The object that references the prototype. - */ - getPrototypeOf(o: any): any; - - /** - * Gets the own property descriptor of the specified object. - * An own property descriptor is one that is defined directly on the object and is not inherited from the object's prototype. - * @param o Object that contains the property. - * @param p Name of the property. - */ - getOwnPropertyDescriptor(o: any, p: string): PropertyDescriptor; - - /** - * Returns the names of the own properties of an object. The own properties of an object are those that are defined directly - * on that object, and are not inherited from the object's prototype. The properties of an object include both fields (objects) and functions. - * @param o Object that contains the own properties. - */ - getOwnPropertyNames(o: any): string[]; - - /** - * Creates an object that has the specified prototype, and that optionally contains specified properties. - * @param o Object to use as a prototype. May be null - * @param properties JavaScript object that contains one or more property descriptors. - */ - create(o: any, properties?: PropertyDescriptorMap): any; - - /** - * Adds a property to an object, or modifies attributes of an existing property. - * @param o Object on which to add or modify the property. This can be a native JavaScript object (that is, a user-defined object or a built in object) or a DOM object. - * @param p The property name. - * @param attributes Descriptor for the property. It can be for a data property or an accessor property. - */ - defineProperty(o: any, p: string, attributes: PropertyDescriptor): any; - - /** - * Adds one or more properties to an object, and/or modifies attributes of existing properties. - * @param o Object on which to add or modify the properties. This can be a native JavaScript object or a DOM object. - * @param properties JavaScript object that contains one or more descriptor objects. Each descriptor object describes a data property or an accessor property. - */ - defineProperties(o: any, properties: PropertyDescriptorMap): any; - - /** - * Prevents the modification of attributes of existing properties, and prevents the addition of new properties. - * @param o Object on which to lock the attributes. - */ - seal(o: T): T; - - /** - * Prevents the modification of existing property attributes and values, and prevents the addition of new properties. - * @param o Object on which to lock the attributes. - */ - freeze(o: T): T; - - /** - * Prevents the addition of new properties to an object. - * @param o Object to make non-extensible. - */ - preventExtensions(o: T): T; - - /** - * Returns true if existing property attributes cannot be modified in an object and new properties cannot be added to the object. - * @param o Object to test. - */ - isSealed(o: any): boolean; - - /** - * Returns true if existing property attributes and values cannot be modified in an object, and new properties cannot be added to the object. - * @param o Object to test. - */ - isFrozen(o: any): boolean; - - /** - * Returns a value that indicates whether new properties can be added to an object. - * @param o Object to test. - */ - isExtensible(o: any): boolean; - - /** - * Returns the names of the enumerable properties and methods of an object. - * @param o Object that contains the properties and methods. This can be an object that you created or an existing Document Object Model (DOM) object. - */ - keys(o: any): string[]; -} - -/** - * Provides functionality common to all JavaScript objects. - */ -declare const Object: ObjectConstructor; - -/** - * Creates a new function. - */ -interface Function { - /** - * Calls the function, substituting the specified object for the this value of the function, and the specified array for the arguments of the function. - * @param thisArg The object to be used as the this object. - * @param argArray A set of arguments to be passed to the function. - */ - apply(thisArg: any, argArray?: any): any; - - /** - * Calls a method of an object, substituting another object for the current object. - * @param thisArg The object to be used as the current object. - * @param argArray A list of arguments to be passed to the method. - */ - call(thisArg: any, ...argArray: any[]): any; - - /** - * For a given function, creates a bound function that has the same body as the original function. - * The this object of the bound function is associated with the specified object, and has the specified initial parameters. - * @param thisArg An object to which the this keyword can refer inside the new function. - * @param argArray A list of arguments to be passed to the new function. - */ - bind(thisArg: any, ...argArray: any[]): any; - - prototype: any; - readonly length: number; - - // Non-standard extensions - arguments: any; - caller: Function; -} - -interface FunctionConstructor { - /** - * Creates a new function. - * @param args A list of arguments the function accepts. - */ - new (...args: string[]): Function; - (...args: string[]): Function; - readonly prototype: Function; -} - -declare const Function: FunctionConstructor; - -interface IArguments { - [index: number]: any; - length: number; - callee: Function; -} - -interface String { - /** Returns a string representation of a string. */ - toString(): string; - - /** - * Returns the character at the specified index. - * @param pos The zero-based index of the desired character. - */ - charAt(pos: number): string; - - /** - * Returns the Unicode value of the character at the specified location. - * @param index The zero-based index of the desired character. If there is no character at the specified index, NaN is returned. - */ - charCodeAt(index: number): number; - - /** - * Returns a string that contains the concatenation of two or more strings. - * @param strings The strings to append to the end of the string. - */ - concat(...strings: string[]): string; - - /** - * Returns the position of the first occurrence of a substring. - * @param searchString The substring to search for in the string - * @param position The index at which to begin searching the String object. If omitted, search starts at the beginning of the string. - */ - indexOf(searchString: string, position?: number): number; - - /** - * Returns the last occurrence of a substring in the string. - * @param searchString The substring to search for. - * @param position The index at which to begin searching. If omitted, the search begins at the end of the string. - */ - lastIndexOf(searchString: string, position?: number): number; - - /** - * Determines whether two strings are equivalent in the current locale. - * @param that String to compare to target string - */ - localeCompare(that: string): number; - - /** - * Matches a string with a regular expression, and returns an array containing the results of that search. - * @param regexp A variable name or string literal containing the regular expression pattern and flags. - */ - match(regexp: string): RegExpMatchArray; - - /** - * Matches a string with a regular expression, and returns an array containing the results of that search. - * @param regexp A regular expression object that contains the regular expression pattern and applicable flags. - */ - match(regexp: RegExp): RegExpMatchArray; - - /** - * Replaces text in a string, using a regular expression or search string. - * @param searchValue A string that represents the regular expression. - * @param replaceValue A string containing the text to replace for every successful match of searchValue in this string. - */ - replace(searchValue: string, replaceValue: string): string; - - /** - * Replaces text in a string, using a regular expression or search string. - * @param searchValue A string that represents the regular expression. - * @param replacer A function that returns the replacement text. - */ - replace(searchValue: string, replacer: (substring: string, ...args: any[]) => string): string; - - /** - * Replaces text in a string, using a regular expression or search string. - * @param searchValue A Regular Expression object containing the regular expression pattern and applicable flags. - * @param replaceValue A string containing the text to replace for every successful match of searchValue in this string. - */ - replace(searchValue: RegExp, replaceValue: string): string; - - /** - * Replaces text in a string, using a regular expression or search string. - * @param searchValue A Regular Expression object containing the regular expression pattern and applicable flags - * @param replacer A function that returns the replacement text. - */ - replace(searchValue: RegExp, replacer: (substring: string, ...args: any[]) => string): string; - - /** - * Finds the first substring match in a regular expression search. - * @param regexp The regular expression pattern and applicable flags. - */ - search(regexp: string): number; - - /** - * Finds the first substring match in a regular expression search. - * @param regexp The regular expression pattern and applicable flags. - */ - search(regexp: RegExp): number; - - /** - * Returns a section of a string. - * @param start The index to the beginning of the specified portion of stringObj. - * @param end The index to the end of the specified portion of stringObj. The substring includes the characters up to, but not including, the character indicated by end. - * If this value is not specified, the substring continues to the end of stringObj. - */ - slice(start?: number, end?: number): string; - - /** - * Split a string into substrings using the specified separator and return them as an array. - * @param separator A string that identifies character or characters to use in separating the string. If omitted, a single-element array containing the entire string is returned. - * @param limit A value used to limit the number of elements returned in the array. - */ - split(separator: string, limit?: number): string[]; - - /** - * Split a string into substrings using the specified separator and return them as an array. - * @param separator A Regular Express that identifies character or characters to use in separating the string. If omitted, a single-element array containing the entire string is returned. - * @param limit A value used to limit the number of elements returned in the array. - */ - split(separator: RegExp, limit?: number): string[]; - - /** - * Returns the substring at the specified location within a String object. - * @param start The zero-based index number indicating the beginning of the substring. - * @param end Zero-based index number indicating the end of the substring. The substring includes the characters up to, but not including, the character indicated by end. - * If end is omitted, the characters from start through the end of the original string are returned. - */ - substring(start: number, end?: number): string; - - /** Converts all the alphabetic characters in a string to lowercase. */ - toLowerCase(): string; - - /** Converts all alphabetic characters to lowercase, taking into account the host environment's current locale. */ - toLocaleLowerCase(): string; - - /** Converts all the alphabetic characters in a string to uppercase. */ - toUpperCase(): string; - - /** Returns a string where all alphabetic characters have been converted to uppercase, taking into account the host environment's current locale. */ - toLocaleUpperCase(): string; - - /** Removes the leading and trailing white space and line terminator characters from a string. */ - trim(): string; - - /** Returns the length of a String object. */ - readonly length: number; - - // IE extensions - /** - * Gets a substring beginning at the specified location and having the specified length. - * @param from The starting position of the desired substring. The index of the first character in the string is zero. - * @param length The number of characters to include in the returned substring. - */ - substr(from: number, length?: number): string; - - /** Returns the primitive value of the specified object. */ - valueOf(): string; - - readonly [index: number]: string; -} - -interface StringConstructor { - new (value?: any): String; - (value?: any): string; - readonly prototype: String; - fromCharCode(...codes: number[]): string; -} - -/** - * Allows manipulation and formatting of text strings and determination and location of substrings within strings. - */ -declare const String: StringConstructor; - -interface Boolean { - /** Returns the primitive value of the specified object. */ - valueOf(): boolean; -} - -interface BooleanConstructor { - new (value?: any): Boolean; - (value?: any): boolean; - readonly prototype: Boolean; -} - -declare const Boolean: BooleanConstructor; - -interface Number { - /** - * Returns a string representation of an object. - * @param radix Specifies a radix for converting numeric values to strings. This value is only used for numbers. - */ - toString(radix?: number): string; - - /** - * Returns a string representing a number in fixed-point notation. - * @param fractionDigits Number of digits after the decimal point. Must be in the range 0 - 20, inclusive. - */ - toFixed(fractionDigits?: number): string; - - /** - * Returns a string containing a number represented in exponential notation. - * @param fractionDigits Number of digits after the decimal point. Must be in the range 0 - 20, inclusive. - */ - toExponential(fractionDigits?: number): string; - - /** - * Returns a string containing a number represented either in exponential or fixed-point notation with a specified number of digits. - * @param precision Number of significant digits. Must be in the range 1 - 21, inclusive. - */ - toPrecision(precision?: number): string; - - /** Returns the primitive value of the specified object. */ - valueOf(): number; -} - -interface NumberConstructor { - new (value?: any): Number; - (value?: any): number; - readonly prototype: Number; - - /** The largest number that can be represented in JavaScript. Equal to approximately 1.79E+308. */ - readonly MAX_VALUE: number; - - /** The closest number to zero that can be represented in JavaScript. Equal to approximately 5.00E-324. */ - readonly MIN_VALUE: number; - - /** - * A value that is not a number. - * In equality comparisons, NaN does not equal any value, including itself. To test whether a value is equivalent to NaN, use the isNaN function. - */ - readonly NaN: number; - - /** - * A value that is less than the largest negative number that can be represented in JavaScript. - * JavaScript displays NEGATIVE_INFINITY values as -infinity. - */ - readonly NEGATIVE_INFINITY: number; - - /** - * A value greater than the largest number that can be represented in JavaScript. - * JavaScript displays POSITIVE_INFINITY values as infinity. - */ - readonly POSITIVE_INFINITY: number; -} - -/** An object that represents a number of any kind. All JavaScript numbers are 64-bit floating-point numbers. */ -declare const Number: NumberConstructor; - -interface TemplateStringsArray extends Array { - readonly raw: string[]; -} - -interface Math { - /** The mathematical constant e. This is Euler's number, the base of natural logarithms. */ - readonly E: number; - /** The natural logarithm of 10. */ - readonly LN10: number; - /** The natural logarithm of 2. */ - readonly LN2: number; - /** The base-2 logarithm of e. */ - readonly LOG2E: number; - /** The base-10 logarithm of e. */ - readonly LOG10E: number; - /** Pi. This is the ratio of the circumference of a circle to its diameter. */ - readonly PI: number; - /** The square root of 0.5, or, equivalently, one divided by the square root of 2. */ - readonly SQRT1_2: number; - /** The square root of 2. */ - readonly SQRT2: number; - /** - * Returns the absolute value of a number (the value without regard to whether it is positive or negative). - * For example, the absolute value of -5 is the same as the absolute value of 5. - * @param x A numeric expression for which the absolute value is needed. - */ - abs(x: number): number; - /** - * Returns the arc cosine (or inverse cosine) of a number. - * @param x A numeric expression. - */ - acos(x: number): number; - /** - * Returns the arcsine of a number. - * @param x A numeric expression. - */ - asin(x: number): number; - /** - * Returns the arctangent of a number. - * @param x A numeric expression for which the arctangent is needed. - */ - atan(x: number): number; - /** - * Returns the angle (in radians) from the X axis to a point. - * @param y A numeric expression representing the cartesian y-coordinate. - * @param x A numeric expression representing the cartesian x-coordinate. - */ - atan2(y: number, x: number): number; - /** - * Returns the smallest number greater than or equal to its numeric argument. - * @param x A numeric expression. - */ - ceil(x: number): number; - /** - * Returns the cosine of a number. - * @param x A numeric expression that contains an angle measured in radians. - */ - cos(x: number): number; - /** - * Returns e (the base of natural logarithms) raised to a power. - * @param x A numeric expression representing the power of e. - */ - exp(x: number): number; - /** - * Returns the greatest number less than or equal to its numeric argument. - * @param x A numeric expression. - */ - floor(x: number): number; - /** - * Returns the natural logarithm (base e) of a number. - * @param x A numeric expression. - */ - log(x: number): number; - /** - * Returns the larger of a set of supplied numeric expressions. - * @param values Numeric expressions to be evaluated. - */ - max(...values: number[]): number; - /** - * Returns the smaller of a set of supplied numeric expressions. - * @param values Numeric expressions to be evaluated. - */ - min(...values: number[]): number; - /** - * Returns the value of a base expression taken to a specified power. - * @param x The base value of the expression. - * @param y The exponent value of the expression. - */ - pow(x: number, y: number): number; - /** Returns a pseudorandom number between 0 and 1. */ - random(): number; - /** - * Returns a supplied numeric expression rounded to the nearest number. - * @param x The value to be rounded to the nearest number. - */ - round(x: number): number; - /** - * Returns the sine of a number. - * @param x A numeric expression that contains an angle measured in radians. - */ - sin(x: number): number; - /** - * Returns the square root of a number. - * @param x A numeric expression. - */ - sqrt(x: number): number; - /** - * Returns the tangent of a number. - * @param x A numeric expression that contains an angle measured in radians. - */ - tan(x: number): number; -} -/** An intrinsic object that provides basic mathematics functionality and constants. */ -declare const Math: Math; - -/** Enables basic storage and retrieval of dates and times. */ -interface Date { - /** Returns a string representation of a date. The format of the string depends on the locale. */ - toString(): string; - /** Returns a date as a string value. */ - toDateString(): string; - /** Returns a time as a string value. */ - toTimeString(): string; - /** Returns a value as a string value appropriate to the host environment's current locale. */ - toLocaleString(): string; - /** Returns a date as a string value appropriate to the host environment's current locale. */ - toLocaleDateString(): string; - /** Returns a time as a string value appropriate to the host environment's current locale. */ - toLocaleTimeString(): string; - /** Returns the stored time value in milliseconds since midnight, January 1, 1970 UTC. */ - valueOf(): number; - /** Gets the time value in milliseconds. */ - getTime(): number; - /** Gets the year, using local time. */ - getFullYear(): number; - /** Gets the year using Universal Coordinated Time (UTC). */ - getUTCFullYear(): number; - /** Gets the month, using local time. */ - getMonth(): number; - /** Gets the month of a Date object using Universal Coordinated Time (UTC). */ - getUTCMonth(): number; - /** Gets the day-of-the-month, using local time. */ - getDate(): number; - /** Gets the day-of-the-month, using Universal Coordinated Time (UTC). */ - getUTCDate(): number; - /** Gets the day of the week, using local time. */ - getDay(): number; - /** Gets the day of the week using Universal Coordinated Time (UTC). */ - getUTCDay(): number; - /** Gets the hours in a date, using local time. */ - getHours(): number; - /** Gets the hours value in a Date object using Universal Coordinated Time (UTC). */ - getUTCHours(): number; - /** Gets the minutes of a Date object, using local time. */ - getMinutes(): number; - /** Gets the minutes of a Date object using Universal Coordinated Time (UTC). */ - getUTCMinutes(): number; - /** Gets the seconds of a Date object, using local time. */ - getSeconds(): number; - /** Gets the seconds of a Date object using Universal Coordinated Time (UTC). */ - getUTCSeconds(): number; - /** Gets the milliseconds of a Date, using local time. */ - getMilliseconds(): number; - /** Gets the milliseconds of a Date object using Universal Coordinated Time (UTC). */ - getUTCMilliseconds(): number; - /** Gets the difference in minutes between the time on the local computer and Universal Coordinated Time (UTC). */ - getTimezoneOffset(): number; - /** - * Sets the date and time value in the Date object. - * @param time A numeric value representing the number of elapsed milliseconds since midnight, January 1, 1970 GMT. - */ - setTime(time: number): number; - /** - * Sets the milliseconds value in the Date object using local time. - * @param ms A numeric value equal to the millisecond value. - */ - setMilliseconds(ms: number): number; - /** - * Sets the milliseconds value in the Date object using Universal Coordinated Time (UTC). - * @param ms A numeric value equal to the millisecond value. - */ - setUTCMilliseconds(ms: number): number; - - /** - * Sets the seconds value in the Date object using local time. - * @param sec A numeric value equal to the seconds value. - * @param ms A numeric value equal to the milliseconds value. - */ - setSeconds(sec: number, ms?: number): number; - /** - * Sets the seconds value in the Date object using Universal Coordinated Time (UTC). - * @param sec A numeric value equal to the seconds value. - * @param ms A numeric value equal to the milliseconds value. - */ - setUTCSeconds(sec: number, ms?: number): number; - /** - * Sets the minutes value in the Date object using local time. - * @param min A numeric value equal to the minutes value. - * @param sec A numeric value equal to the seconds value. - * @param ms A numeric value equal to the milliseconds value. - */ - setMinutes(min: number, sec?: number, ms?: number): number; - /** - * Sets the minutes value in the Date object using Universal Coordinated Time (UTC). - * @param min A numeric value equal to the minutes value. - * @param sec A numeric value equal to the seconds value. - * @param ms A numeric value equal to the milliseconds value. - */ - setUTCMinutes(min: number, sec?: number, ms?: number): number; - /** - * Sets the hour value in the Date object using local time. - * @param hours A numeric value equal to the hours value. - * @param min A numeric value equal to the minutes value. - * @param sec A numeric value equal to the seconds value. - * @param ms A numeric value equal to the milliseconds value. - */ - setHours(hours: number, min?: number, sec?: number, ms?: number): number; - /** - * Sets the hours value in the Date object using Universal Coordinated Time (UTC). - * @param hours A numeric value equal to the hours value. - * @param min A numeric value equal to the minutes value. - * @param sec A numeric value equal to the seconds value. - * @param ms A numeric value equal to the milliseconds value. - */ - setUTCHours(hours: number, min?: number, sec?: number, ms?: number): number; - /** - * Sets the numeric day-of-the-month value of the Date object using local time. - * @param date A numeric value equal to the day of the month. - */ - setDate(date: number): number; - /** - * Sets the numeric day of the month in the Date object using Universal Coordinated Time (UTC). - * @param date A numeric value equal to the day of the month. - */ - setUTCDate(date: number): number; - /** - * Sets the month value in the Date object using local time. - * @param month A numeric value equal to the month. The value for January is 0, and other month values follow consecutively. - * @param date A numeric value representing the day of the month. If this value is not supplied, the value from a call to the getDate method is used. - */ - setMonth(month: number, date?: number): number; - /** - * Sets the month value in the Date object using Universal Coordinated Time (UTC). - * @param month A numeric value equal to the month. The value for January is 0, and other month values follow consecutively. - * @param date A numeric value representing the day of the month. If it is not supplied, the value from a call to the getUTCDate method is used. - */ - setUTCMonth(month: number, date?: number): number; - /** - * Sets the year of the Date object using local time. - * @param year A numeric value for the year. - * @param month A zero-based numeric value for the month (0 for January, 11 for December). Must be specified if numDate is specified. - * @param date A numeric value equal for the day of the month. - */ - setFullYear(year: number, month?: number, date?: number): number; - /** - * Sets the year value in the Date object using Universal Coordinated Time (UTC). - * @param year A numeric value equal to the year. - * @param month A numeric value equal to the month. The value for January is 0, and other month values follow consecutively. Must be supplied if numDate is supplied. - * @param date A numeric value equal to the day of the month. - */ - setUTCFullYear(year: number, month?: number, date?: number): number; - /** Returns a date converted to a string using Universal Coordinated Time (UTC). */ - toUTCString(): string; - /** Returns a date as a string value in ISO format. */ - toISOString(): string; - /** Used by the JSON.stringify method to enable the transformation of an object's data for JavaScript Object Notation (JSON) serialization. */ - toJSON(key?: any): string; -} - -interface DateConstructor { - new (): Date; - new (value: number): Date; - new (value: string): Date; - new (year: number, month: number, date?: number, hours?: number, minutes?: number, seconds?: number, ms?: number): Date; - (): string; - readonly prototype: Date; - /** - * Parses a string containing a date, and returns the number of milliseconds between that date and midnight, January 1, 1970. - * @param s A date string - */ - parse(s: string): number; - /** - * Returns the number of milliseconds between midnight, January 1, 1970 Universal Coordinated Time (UTC) (or GMT) and the specified date. - * @param year The full year designation is required for cross-century date accuracy. If year is between 0 and 99 is used, then year is assumed to be 1900 + year. - * @param month The month as an number between 0 and 11 (January to December). - * @param date The date as an number between 1 and 31. - * @param hours Must be supplied if minutes is supplied. An number from 0 to 23 (midnight to 11pm) that specifies the hour. - * @param minutes Must be supplied if seconds is supplied. An number from 0 to 59 that specifies the minutes. - * @param seconds Must be supplied if milliseconds is supplied. An number from 0 to 59 that specifies the seconds. - * @param ms An number from 0 to 999 that specifies the milliseconds. - */ - UTC(year: number, month: number, date?: number, hours?: number, minutes?: number, seconds?: number, ms?: number): number; - now(): number; -} - -declare const Date: DateConstructor; - -interface RegExpMatchArray extends Array { - index?: number; - input?: string; -} - -interface RegExpExecArray extends Array { - index: number; - input: string; -} - -interface RegExp { - /** - * Executes a search on a string using a regular expression pattern, and returns an array containing the results of that search. - * @param string The String object or string literal on which to perform the search. - */ - exec(string: string): RegExpExecArray; - - /** - * Returns a Boolean value that indicates whether or not a pattern exists in a searched string. - * @param string String on which to perform the search. - */ - test(string: string): boolean; - - /** Returns a copy of the text of the regular expression pattern. Read-only. The regExp argument is a Regular expression object. It can be a variable name or a literal. */ - readonly source: string; - - /** Returns a Boolean value indicating the state of the global flag (g) used with a regular expression. Default is false. Read-only. */ - readonly global: boolean; - - /** Returns a Boolean value indicating the state of the ignoreCase flag (i) used with a regular expression. Default is false. Read-only. */ - readonly ignoreCase: boolean; - - /** Returns a Boolean value indicating the state of the multiline flag (m) used with a regular expression. Default is false. Read-only. */ - readonly multiline: boolean; - - lastIndex: number; - - // Non-standard extensions - compile(): RegExp; -} - -interface RegExpConstructor { - new (pattern: string, flags?: string): RegExp; - (pattern: string, flags?: string): RegExp; - readonly prototype: RegExp; - - // Non-standard extensions - $1: string; - $2: string; - $3: string; - $4: string; - $5: string; - $6: string; - $7: string; - $8: string; - $9: string; - lastMatch: string; -} - -declare const RegExp: RegExpConstructor; - -interface Error { - name: string; - message: string; -} - -interface ErrorConstructor { - new (message?: string): Error; - (message?: string): Error; - readonly prototype: Error; -} - -declare const Error: ErrorConstructor; - -interface EvalError extends Error { -} - -interface EvalErrorConstructor { - new (message?: string): EvalError; - (message?: string): EvalError; - readonly prototype: EvalError; -} - -declare const EvalError: EvalErrorConstructor; - -interface RangeError extends Error { -} - -interface RangeErrorConstructor { - new (message?: string): RangeError; - (message?: string): RangeError; - readonly prototype: RangeError; -} - -declare const RangeError: RangeErrorConstructor; - -interface ReferenceError extends Error { -} - -interface ReferenceErrorConstructor { - new (message?: string): ReferenceError; - (message?: string): ReferenceError; - readonly prototype: ReferenceError; -} - -declare const ReferenceError: ReferenceErrorConstructor; - -interface SyntaxError extends Error { -} - -interface SyntaxErrorConstructor { - new (message?: string): SyntaxError; - (message?: string): SyntaxError; - readonly prototype: SyntaxError; -} - -declare const SyntaxError: SyntaxErrorConstructor; - -interface TypeError extends Error { -} - -interface TypeErrorConstructor { - new (message?: string): TypeError; - (message?: string): TypeError; - readonly prototype: TypeError; -} - -declare const TypeError: TypeErrorConstructor; - -interface URIError extends Error { -} - -interface URIErrorConstructor { - new (message?: string): URIError; - (message?: string): URIError; - readonly prototype: URIError; -} - -declare const URIError: URIErrorConstructor; - -interface JSON { - /** - * Converts a JavaScript Object Notation (JSON) string into an object. - * @param text A valid JSON string. - * @param reviver A function that transforms the results. This function is called for each member of the object. - * If a member contains nested objects, the nested objects are transformed before the parent object is. - */ - parse(text: string, reviver?: (key: any, value: any) => any): any; - /** - * Converts a JavaScript value to a JavaScript Object Notation (JSON) string. - * @param value A JavaScript value, usually an object or array, to be converted. - */ - stringify(value: any): string; - /** - * 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 A function that transforms the results. - */ - stringify(value: any, replacer: (key: string, value: any) => any): string; - /** - * 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 Array that transforms the results. - */ - stringify(value: any, replacer: any[]): string; - /** - * 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 A function that transforms the results. - * @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: (key: string, value: any) => any, space: string | number): string; - /** - * 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 Array that transforms the results. - * @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: any[], space: string | number): string; -} -/** - * An intrinsic object that provides functions to convert JavaScript values to and from the JavaScript Object Notation (JSON) format. - */ -declare const JSON: JSON; - - -///////////////////////////// -/// ECMAScript Array API (specially handled by compiler) -///////////////////////////// - -interface ReadonlyArray { - /** - * Gets the length of the array. This is a number one higher than the highest element defined in an array. - */ - readonly length: number; - /** - * Returns a string representation of an array. - */ - toString(): string; - toLocaleString(): string; - /** - * Combines two or more arrays. - * @param items Additional items to add to the end of array1. - */ - concat>(...items: U[]): T[]; - /** - * Combines two or more arrays. - * @param items Additional items to add to the end of array1. - */ - concat(...items: T[]): T[]; - /** - * Adds all the elements of an array separated by the specified separator string. - * @param separator A string used to separate one element of an array from the next in the resulting String. If omitted, the array elements are separated with a comma. - */ - join(separator?: string): string; - /** - * Returns a section of an array. - * @param start The beginning of the specified portion of the array. - * @param end The end of the specified portion of the array. - */ - slice(start?: number, end?: number): T[]; - /** - * Returns the index of the first occurrence of a value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the search starts at index 0. - */ - indexOf(searchElement: T, fromIndex?: number): number; - - /** - * Returns the index of the last occurrence of a specified value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the search starts at the last index in the array. - */ - lastIndexOf(searchElement: T, fromIndex?: number): number; - /** - * Determines whether all the members of an array satisfy the specified test. - * @param callbackfn A function that accepts up to three arguments. The every method calls the callbackfn function for each element in array1 until the callbackfn returns false, or until the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value. - */ - every(callbackfn: (value: T, index: number, array: ReadonlyArray) => boolean, thisArg?: any): boolean; - /** - * Determines whether the specified callback function returns true for any element of an array. - * @param callbackfn A function that accepts up to three arguments. The some method calls the callbackfn function for each element in array1 until the callbackfn returns true, or until the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value. - */ - some(callbackfn: (value: T, index: number, array: ReadonlyArray) => boolean, thisArg?: any): boolean; - /** - * Performs the specified action for each element in an array. - * @param callbackfn A function that accepts up to three arguments. forEach calls the callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value. - */ - forEach(callbackfn: (value: T, index: number, array: ReadonlyArray) => void, thisArg?: any): void; - /** - * Calls a defined callback function on each element of an array, and returns an array that contains the results. - * @param callbackfn A function that accepts up to three arguments. The map method calls the callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value. - */ - map(callbackfn: (value: T, index: number, array: ReadonlyArray) => U, thisArg?: any): U[]; - /** - * Returns the elements of an array that meet the condition specified in a callback function. - * @param callbackfn A function that accepts up to three arguments. The filter method calls the callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value. - */ - filter(callbackfn: (value: T, index: number, array: ReadonlyArray) => boolean, thisArg?: any): T[]; - /** - * Calls the specified callback function for all the elements in an array. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value. - */ - reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: ReadonlyArray) => T, initialValue?: T): T; - /** - * Calls the specified callback function for all the elements in an array. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value. - */ - reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: ReadonlyArray) => U, initialValue: U): U; - /** - * Calls the specified callback function for all the elements in an array, in descending order. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value. - */ - reduceRight(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: ReadonlyArray) => T, initialValue?: T): T; - /** - * Calls the specified callback function for all the elements in an array, in descending order. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value. - */ - reduceRight(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: ReadonlyArray) => U, initialValue: U): U; - - readonly [n: number]: T; -} - -interface Array { - /** - * Gets or sets the length of the array. This is a number one higher than the highest element defined in an array. - */ - length: number; - /** - * Returns a string representation of an array. - */ - toString(): string; - toLocaleString(): string; - /** - * Appends new elements to an array, and returns the new length of the array. - * @param items New elements of the Array. - */ - push(...items: T[]): number; - /** - * Removes the last element from an array and returns it. - */ - pop(): T; - /** - * Combines two or more arrays. - * @param items Additional items to add to the end of array1. - */ - concat(...items: (T | T[])[]): T[]; - /** - * Adds all the elements of an array separated by the specified separator string. - * @param separator A string used to separate one element of an array from the next in the resulting String. If omitted, the array elements are separated with a comma. - */ - join(separator?: string): string; - /** - * Reverses the elements in an Array. - */ - reverse(): T[]; - /** - * Removes the first element from an array and returns it. - */ - shift(): T; - /** - * Returns a section of an array. - * @param start The beginning of the specified portion of the array. - * @param end The end of the specified portion of the array. - */ - slice(start?: number, end?: number): T[]; - /** - * Sorts an array. - * @param compareFn The name of the function used to determine the order of the elements. If omitted, the elements are sorted in ascending, ASCII character order. - */ - sort(compareFn?: (a: T, b: T) => number): T[]; - /** - * Removes elements from an array and, if necessary, inserts new elements in their place, returning the deleted elements. - * @param start The zero-based location in the array from which to start removing elements. - */ - splice(start: number): T[]; - /** - * Removes elements from an array and, if necessary, inserts new elements in their place, returning the deleted elements. - * @param start The zero-based location in the array from which to start removing elements. - * @param deleteCount The number of elements to remove. - * @param items Elements to insert into the array in place of the deleted elements. - */ - splice(start: number, deleteCount: number, ...items: T[]): T[]; - /** - * Inserts new elements at the start of an array. - * @param items Elements to insert at the start of the Array. - */ - unshift(...items: T[]): number; - /** - * Returns the index of the first occurrence of a value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the search starts at index 0. - */ - indexOf(searchElement: T, fromIndex?: number): number; - /** - * Returns the index of the last occurrence of a specified value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the search starts at the last index in the array. - */ - lastIndexOf(searchElement: T, fromIndex?: number): number; - /** - * Determines whether all the members of an array satisfy the specified test. - * @param callbackfn A function that accepts up to three arguments. The every method calls the callbackfn function for each element in array1 until the callbackfn returns false, or until the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value. - */ - every(callbackfn: (value: T, index: number, array: T[]) => boolean, thisArg?: any): boolean; - /** - * Determines whether the specified callback function returns true for any element of an array. - * @param callbackfn A function that accepts up to three arguments. The some method calls the callbackfn function for each element in array1 until the callbackfn returns true, or until the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value. - */ - some(callbackfn: (value: T, index: number, array: T[]) => boolean, thisArg?: any): boolean; - /** - * Performs the specified action for each element in an array. - * @param callbackfn A function that accepts up to three arguments. forEach calls the callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value. - */ - forEach(callbackfn: (value: T, index: number, array: T[]) => void, thisArg?: any): void; - /** - * Calls a defined callback function on each element of an array, and returns an array that contains the results. - * @param callbackfn A function that accepts up to three arguments. The map method calls the callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value. - */ - map(callbackfn: (value: T, index: number, array: T[]) => U, thisArg?: any): U[]; - /** - * Returns the elements of an array that meet the condition specified in a callback function. - * @param callbackfn A function that accepts up to three arguments. The filter method calls the callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value. - */ - filter(callbackfn: (value: T, index: number, array: T[]) => boolean, thisArg?: any): T[]; - /** - * Calls the specified callback function for all the elements in an array. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value. - */ - reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue?: T): T; - /** - * Calls the specified callback function for all the elements in an array. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value. - */ - reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; - /** - * Calls the specified callback function for all the elements in an array, in descending order. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value. - */ - reduceRight(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue?: T): T; - /** - * Calls the specified callback function for all the elements in an array, in descending order. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value. - */ - reduceRight(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; - - [n: number]: T; -} - -interface ArrayConstructor { - new (arrayLength?: number): any[]; - new (arrayLength: number): T[]; - new (...items: T[]): T[]; - (arrayLength?: number): any[]; - (arrayLength: number): T[]; - (...items: T[]): T[]; - isArray(arg: any): arg is Array; - readonly prototype: Array; -} - -declare const Array: ArrayConstructor; - -interface TypedPropertyDescriptor { - enumerable?: boolean; - configurable?: boolean; - writable?: boolean; - value?: T; - get?: () => T; - set?: (value: T) => void; -} - -declare type ClassDecorator = (target: TFunction) => TFunction | void; -declare type PropertyDecorator = (target: Object, propertyKey: string | symbol) => void; -declare type MethodDecorator = (target: Object, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor | void; -declare type ParameterDecorator = (target: Object, propertyKey: string | symbol, parameterIndex: number) => void; - -declare type PromiseConstructorLike = new (executor: (resolve: (value?: T | PromiseLike) => void, reject: (reason?: any) => void) => void) => PromiseLike; - -interface PromiseLike { - /** - * 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(onfulfilled?: (value: T) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): PromiseLike; - then(onfulfilled?: (value: T) => TResult | PromiseLike, onrejected?: (reason: any) => void): PromiseLike; -} - -interface ArrayLike { - readonly length: number; - readonly [n: number]: T; -} - -/** - * Represents a raw buffer of binary data, which is used to store data for the - * different typed arrays. ArrayBuffers cannot be read from or written to directly, - * but can be passed to a typed array or DataView Object to interpret the raw - * buffer as needed. - */ -interface ArrayBuffer { - /** - * Read-only. The length of the ArrayBuffer (in bytes). - */ - readonly byteLength: number; - - /** - * Returns a section of an ArrayBuffer. - */ - slice(begin:number, end?:number): ArrayBuffer; -} - -interface ArrayBufferConstructor { - readonly prototype: ArrayBuffer; - new (byteLength: number): ArrayBuffer; - isView(arg: any): arg is ArrayBufferView; -} -declare const ArrayBuffer: ArrayBufferConstructor; - -interface ArrayBufferView { - /** - * The ArrayBuffer instance referenced by the array. - */ - buffer: ArrayBuffer; - - /** - * The length in bytes of the array. - */ - byteLength: number; - - /** - * The offset in bytes of the array. - */ - byteOffset: number; -} - -interface DataView { - readonly buffer: ArrayBuffer; - readonly byteLength: number; - readonly byteOffset: number; - /** - * Gets the Float32 value at the specified byte offset from the start of the view. There is - * no alignment constraint; multi-byte values may be fetched from any offset. - * @param byteOffset The place in the buffer at which the value should be retrieved. - */ - getFloat32(byteOffset: number, littleEndian?: boolean): number; - - /** - * Gets the Float64 value at the specified byte offset from the start of the view. There is - * no alignment constraint; multi-byte values may be fetched from any offset. - * @param byteOffset The place in the buffer at which the value should be retrieved. - */ - getFloat64(byteOffset: number, littleEndian?: boolean): number; - - /** - * Gets the Int8 value at the specified byte offset from the start of the view. There is - * no alignment constraint; multi-byte values may be fetched from any offset. - * @param byteOffset The place in the buffer at which the value should be retrieved. - */ - getInt8(byteOffset: number): number; - - /** - * Gets the Int16 value at the specified byte offset from the start of the view. There is - * no alignment constraint; multi-byte values may be fetched from any offset. - * @param byteOffset The place in the buffer at which the value should be retrieved. - */ - getInt16(byteOffset: number, littleEndian?: boolean): number; - /** - * Gets the Int32 value at the specified byte offset from the start of the view. There is - * no alignment constraint; multi-byte values may be fetched from any offset. - * @param byteOffset The place in the buffer at which the value should be retrieved. - */ - getInt32(byteOffset: number, littleEndian?: boolean): number; - - /** - * Gets the Uint8 value at the specified byte offset from the start of the view. There is - * no alignment constraint; multi-byte values may be fetched from any offset. - * @param byteOffset The place in the buffer at which the value should be retrieved. - */ - getUint8(byteOffset: number): number; - - /** - * Gets the Uint16 value at the specified byte offset from the start of the view. There is - * no alignment constraint; multi-byte values may be fetched from any offset. - * @param byteOffset The place in the buffer at which the value should be retrieved. - */ - getUint16(byteOffset: number, littleEndian?: boolean): number; - - /** - * Gets the Uint32 value at the specified byte offset from the start of the view. There is - * no alignment constraint; multi-byte values may be fetched from any offset. - * @param byteOffset The place in the buffer at which the value should be retrieved. - */ - getUint32(byteOffset: number, littleEndian?: boolean): number; - - /** - * Stores an Float32 value at the specified byte offset from the start of the view. - * @param byteOffset The place in the buffer at which the value should be set. - * @param value The value to set. - * @param littleEndian If false or undefined, a big-endian value should be written, - * otherwise a little-endian value should be written. - */ - setFloat32(byteOffset: number, value: number, littleEndian?: boolean): void; - - /** - * Stores an Float64 value at the specified byte offset from the start of the view. - * @param byteOffset The place in the buffer at which the value should be set. - * @param value The value to set. - * @param littleEndian If false or undefined, a big-endian value should be written, - * otherwise a little-endian value should be written. - */ - setFloat64(byteOffset: number, value: number, littleEndian?: boolean): void; - - /** - * Stores an Int8 value at the specified byte offset from the start of the view. - * @param byteOffset The place in the buffer at which the value should be set. - * @param value The value to set. - */ - setInt8(byteOffset: number, value: number): void; - - /** - * Stores an Int16 value at the specified byte offset from the start of the view. - * @param byteOffset The place in the buffer at which the value should be set. - * @param value The value to set. - * @param littleEndian If false or undefined, a big-endian value should be written, - * otherwise a little-endian value should be written. - */ - setInt16(byteOffset: number, value: number, littleEndian?: boolean): void; - - /** - * Stores an Int32 value at the specified byte offset from the start of the view. - * @param byteOffset The place in the buffer at which the value should be set. - * @param value The value to set. - * @param littleEndian If false or undefined, a big-endian value should be written, - * otherwise a little-endian value should be written. - */ - setInt32(byteOffset: number, value: number, littleEndian?: boolean): void; - - /** - * Stores an Uint8 value at the specified byte offset from the start of the view. - * @param byteOffset The place in the buffer at which the value should be set. - * @param value The value to set. - */ - setUint8(byteOffset: number, value: number): void; - - /** - * Stores an Uint16 value at the specified byte offset from the start of the view. - * @param byteOffset The place in the buffer at which the value should be set. - * @param value The value to set. - * @param littleEndian If false or undefined, a big-endian value should be written, - * otherwise a little-endian value should be written. - */ - setUint16(byteOffset: number, value: number, littleEndian?: boolean): void; - - /** - * Stores an Uint32 value at the specified byte offset from the start of the view. - * @param byteOffset The place in the buffer at which the value should be set. - * @param value The value to set. - * @param littleEndian If false or undefined, a big-endian value should be written, - * otherwise a little-endian value should be written. - */ - setUint32(byteOffset: number, value: number, littleEndian?: boolean): void; -} - -interface DataViewConstructor { - new (buffer: ArrayBuffer, byteOffset?: number, byteLength?: number): DataView; -} -declare const DataView: DataViewConstructor; - -/** - * A typed array of 8-bit integer values. The contents are initialized to 0. If the requested - * number of bytes could not be allocated an exception is raised. - */ -interface Int8Array { - /** - * The size in bytes of each element in the array. - */ - readonly BYTES_PER_ELEMENT: number; - - /** - * The ArrayBuffer instance referenced by the array. - */ - readonly buffer: ArrayBuffer; - - /** - * The length in bytes of the array. - */ - readonly byteLength: number; - - /** - * The offset in bytes of the array. - */ - readonly byteOffset: number; - - /** - * Returns the this object after copying a section of the array identified by start and end - * to the same array starting at position target - * @param target If target is negative, it is treated as length+target where length is the - * length of the array. - * @param start If start is negative, it is treated as length+start. If end is negative, it - * is treated as length+end. - * @param end If not specified, length of the this object is used as its default value. - */ - copyWithin(target: number, start: number, end?: number): Int8Array; - - /** - * Determines whether all the members of an array satisfy the specified test. - * @param callbackfn A function that accepts up to three arguments. The every method calls - * the callbackfn function for each element in array1 until the callbackfn returns false, - * or until the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - every(callbackfn: (value: number, index: number, array: Int8Array) => boolean, thisArg?: any): boolean; - - /** - * Returns the this object after filling the section identified by start and end with value - * @param value value to fill array section with - * @param start index to start filling the array at. If start is negative, it is treated as - * length+start where length is the length of the array. - * @param end index to stop filling the array at. If end is negative, it is treated as - * length+end. - */ - fill(value: number, start?: number, end?: number): Int8Array; - - /** - * Returns the elements of an array that meet the condition specified in a callback function. - * @param callbackfn A function that accepts up to three arguments. The filter method calls - * the callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - filter(callbackfn: (value: number, index: number, array: Int8Array) => boolean, thisArg?: any): Int8Array; - - /** - * Returns the value of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; - - /** - * Returns the index of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; - - /** - * Performs the specified action for each element in an array. - * @param callbackfn A function that accepts up to three arguments. forEach calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - forEach(callbackfn: (value: number, index: number, array: Int8Array) => void, thisArg?: any): void; - - /** - * Returns the index of the first occurrence of a value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the - * search starts at index 0. - */ - indexOf(searchElement: number, fromIndex?: number): number; - - /** - * Adds all the elements of an array separated by the specified separator string. - * @param separator A string used to separate one element of an array from the next in the - * resulting String. If omitted, the array elements are separated with a comma. - */ - join(separator?: string): string; - - /** - * Returns the index of the last occurrence of a value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the - * search starts at index 0. - */ - lastIndexOf(searchElement: number, fromIndex?: number): number; - - /** - * The length of the array. - */ - readonly length: number; - - /** - * Calls a defined callback function on each element of an array, and returns an array that - * contains the results. - * @param callbackfn A function that accepts up to three arguments. The map method calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - map(callbackfn: (value: number, index: number, array: Int8Array) => number, thisArg?: any): Int8Array; - - /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next - * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the - * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Int8Array) => number, initialValue?: number): number; - - /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next - * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the - * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduce(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Int8Array) => U, initialValue: U): U; - - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an - * argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an - * argument instead of an array value. - */ - reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Int8Array) => number, initialValue?: number): number; - - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an - * argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduceRight(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Int8Array) => U, initialValue: U): U; - - /** - * Reverses the elements in an Array. - */ - reverse(): Int8Array; - - /** - * Sets a value or an array of values. - * @param index The index of the location to set. - * @param value The value to set. - */ - set(index: number, value: number): void; - - /** - * Sets a value or an array of values. - * @param array A typed or untyped array of values to set. - * @param offset The index in the current array at which the values are to be written. - */ - set(array: ArrayLike, offset?: number): void; - - /** - * Returns a section of an array. - * @param start The beginning of the specified portion of the array. - * @param end The end of the specified portion of the array. - */ - slice(start?: number, end?: number): Int8Array; - - /** - * Determines whether the specified callback function returns true for any element of an array. - * @param callbackfn A function that accepts up to three arguments. The some method calls the - * callbackfn function for each element in array1 until the callbackfn returns true, or until - * the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - some(callbackfn: (value: number, index: number, array: Int8Array) => boolean, thisArg?: any): boolean; - - /** - * Sorts an array. - * @param compareFn The name of the function used to determine the order of the elements. If - * omitted, the elements are sorted in ascending, ASCII character order. - */ - sort(compareFn?: (a: number, b: number) => number): Int8Array; - - /** - * Gets a new Int8Array view of the ArrayBuffer store for this array, referencing the elements - * at begin, inclusive, up to end, exclusive. - * @param begin The index of the beginning of the array. - * @param end The index of the end of the array. - */ - subarray(begin: number, end?: number): Int8Array; - - /** - * Converts a number to a string by using the current locale. - */ - toLocaleString(): string; - - /** - * Returns a string representation of an array. - */ - toString(): string; - - [index: number]: number; -} -interface Int8ArrayConstructor { - readonly prototype: Int8Array; - new (length: number): Int8Array; - new (array: ArrayLike): Int8Array; - new (buffer: ArrayBuffer, byteOffset?: number, length?: number): Int8Array; - - /** - * The size in bytes of each element in the array. - */ - readonly BYTES_PER_ELEMENT: number; - - /** - * Returns a new array from a set of elements. - * @param items A set of elements to include in the new array object. - */ - of(...items: number[]): Int8Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: ArrayLike, mapfn?: (v: number, k: number) => number, thisArg?: any): Int8Array; - -} -declare const Int8Array: Int8ArrayConstructor; - -/** - * A typed array of 8-bit unsigned integer values. The contents are initialized to 0. If the - * requested number of bytes could not be allocated an exception is raised. - */ -interface Uint8Array { - /** - * The size in bytes of each element in the array. - */ - readonly BYTES_PER_ELEMENT: number; - - /** - * The ArrayBuffer instance referenced by the array. - */ - readonly buffer: ArrayBuffer; - - /** - * The length in bytes of the array. - */ - readonly byteLength: number; - - /** - * The offset in bytes of the array. - */ - readonly byteOffset: number; - - /** - * Returns the this object after copying a section of the array identified by start and end - * to the same array starting at position target - * @param target If target is negative, it is treated as length+target where length is the - * length of the array. - * @param start If start is negative, it is treated as length+start. If end is negative, it - * is treated as length+end. - * @param end If not specified, length of the this object is used as its default value. - */ - copyWithin(target: number, start: number, end?: number): Uint8Array; - - /** - * Determines whether all the members of an array satisfy the specified test. - * @param callbackfn A function that accepts up to three arguments. The every method calls - * the callbackfn function for each element in array1 until the callbackfn returns false, - * or until the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - every(callbackfn: (value: number, index: number, array: Uint8Array) => boolean, thisArg?: any): boolean; - - /** - * Returns the this object after filling the section identified by start and end with value - * @param value value to fill array section with - * @param start index to start filling the array at. If start is negative, it is treated as - * length+start where length is the length of the array. - * @param end index to stop filling the array at. If end is negative, it is treated as - * length+end. - */ - fill(value: number, start?: number, end?: number): Uint8Array; - - /** - * Returns the elements of an array that meet the condition specified in a callback function. - * @param callbackfn A function that accepts up to three arguments. The filter method calls - * the callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - filter(callbackfn: (value: number, index: number, array: Uint8Array) => boolean, thisArg?: any): Uint8Array; - - /** - * Returns the value of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; - - /** - * Returns the index of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; - - /** - * Performs the specified action for each element in an array. - * @param callbackfn A function that accepts up to three arguments. forEach calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - forEach(callbackfn: (value: number, index: number, array: Uint8Array) => void, thisArg?: any): void; - - /** - * Returns the index of the first occurrence of a value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the - * search starts at index 0. - */ - indexOf(searchElement: number, fromIndex?: number): number; - - /** - * Adds all the elements of an array separated by the specified separator string. - * @param separator A string used to separate one element of an array from the next in the - * resulting String. If omitted, the array elements are separated with a comma. - */ - join(separator?: string): string; - - /** - * Returns the index of the last occurrence of a value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the - * search starts at index 0. - */ - lastIndexOf(searchElement: number, fromIndex?: number): number; - - /** - * The length of the array. - */ - readonly length: number; - - /** - * Calls a defined callback function on each element of an array, and returns an array that - * contains the results. - * @param callbackfn A function that accepts up to three arguments. The map method calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - map(callbackfn: (value: number, index: number, array: Uint8Array) => number, thisArg?: any): Uint8Array; - - /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next - * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the - * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint8Array) => number, initialValue?: number): number; - - /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next - * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the - * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduce(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Uint8Array) => U, initialValue: U): U; - - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an - * argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an - * argument instead of an array value. - */ - reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint8Array) => number, initialValue?: number): number; - - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an - * argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduceRight(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Uint8Array) => U, initialValue: U): U; - - /** - * Reverses the elements in an Array. - */ - reverse(): Uint8Array; - - /** - * Sets a value or an array of values. - * @param index The index of the location to set. - * @param value The value to set. - */ - set(index: number, value: number): void; - - /** - * Sets a value or an array of values. - * @param array A typed or untyped array of values to set. - * @param offset The index in the current array at which the values are to be written. - */ - set(array: ArrayLike, offset?: number): void; - - /** - * Returns a section of an array. - * @param start The beginning of the specified portion of the array. - * @param end The end of the specified portion of the array. - */ - slice(start?: number, end?: number): Uint8Array; - - /** - * Determines whether the specified callback function returns true for any element of an array. - * @param callbackfn A function that accepts up to three arguments. The some method calls the - * callbackfn function for each element in array1 until the callbackfn returns true, or until - * the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - some(callbackfn: (value: number, index: number, array: Uint8Array) => boolean, thisArg?: any): boolean; - - /** - * Sorts an array. - * @param compareFn The name of the function used to determine the order of the elements. If - * omitted, the elements are sorted in ascending, ASCII character order. - */ - sort(compareFn?: (a: number, b: number) => number): Uint8Array; - - /** - * Gets a new Uint8Array view of the ArrayBuffer store for this array, referencing the elements - * at begin, inclusive, up to end, exclusive. - * @param begin The index of the beginning of the array. - * @param end The index of the end of the array. - */ - subarray(begin: number, end?: number): Uint8Array; - - /** - * Converts a number to a string by using the current locale. - */ - toLocaleString(): string; - - /** - * Returns a string representation of an array. - */ - toString(): string; - - [index: number]: number; -} - -interface Uint8ArrayConstructor { - readonly prototype: Uint8Array; - new (length: number): Uint8Array; - new (array: ArrayLike): Uint8Array; - new (buffer: ArrayBuffer, byteOffset?: number, length?: number): Uint8Array; - - /** - * The size in bytes of each element in the array. - */ - readonly BYTES_PER_ELEMENT: number; - - /** - * Returns a new array from a set of elements. - * @param items A set of elements to include in the new array object. - */ - of(...items: number[]): Uint8Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: ArrayLike, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint8Array; - -} -declare const Uint8Array: Uint8ArrayConstructor; - -/** - * A typed array of 8-bit unsigned integer (clamped) values. The contents are initialized to 0. - * If the requested number of bytes could not be allocated an exception is raised. - */ -interface Uint8ClampedArray { - /** - * The size in bytes of each element in the array. - */ - readonly BYTES_PER_ELEMENT: number; - - /** - * The ArrayBuffer instance referenced by the array. - */ - readonly buffer: ArrayBuffer; - - /** - * The length in bytes of the array. - */ - readonly byteLength: number; - - /** - * The offset in bytes of the array. - */ - readonly byteOffset: number; - - /** - * Returns the this object after copying a section of the array identified by start and end - * to the same array starting at position target - * @param target If target is negative, it is treated as length+target where length is the - * length of the array. - * @param start If start is negative, it is treated as length+start. If end is negative, it - * is treated as length+end. - * @param end If not specified, length of the this object is used as its default value. - */ - copyWithin(target: number, start: number, end?: number): Uint8ClampedArray; - - /** - * Determines whether all the members of an array satisfy the specified test. - * @param callbackfn A function that accepts up to three arguments. The every method calls - * the callbackfn function for each element in array1 until the callbackfn returns false, - * or until the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - every(callbackfn: (value: number, index: number, array: Uint8ClampedArray) => boolean, thisArg?: any): boolean; - - /** - * Returns the this object after filling the section identified by start and end with value - * @param value value to fill array section with - * @param start index to start filling the array at. If start is negative, it is treated as - * length+start where length is the length of the array. - * @param end index to stop filling the array at. If end is negative, it is treated as - * length+end. - */ - fill(value: number, start?: number, end?: number): Uint8ClampedArray; - - /** - * Returns the elements of an array that meet the condition specified in a callback function. - * @param callbackfn A function that accepts up to three arguments. The filter method calls - * the callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - filter(callbackfn: (value: number, index: number, array: Uint8ClampedArray) => boolean, thisArg?: any): Uint8ClampedArray; - - /** - * Returns the value of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; - - /** - * Returns the index of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; - - /** - * Performs the specified action for each element in an array. - * @param callbackfn A function that accepts up to three arguments. forEach calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - forEach(callbackfn: (value: number, index: number, array: Uint8ClampedArray) => void, thisArg?: any): void; - - /** - * Returns the index of the first occurrence of a value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the - * search starts at index 0. - */ - indexOf(searchElement: number, fromIndex?: number): number; - - /** - * Adds all the elements of an array separated by the specified separator string. - * @param separator A string used to separate one element of an array from the next in the - * resulting String. If omitted, the array elements are separated with a comma. - */ - join(separator?: string): string; - - /** - * Returns the index of the last occurrence of a value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the - * search starts at index 0. - */ - lastIndexOf(searchElement: number, fromIndex?: number): number; - - /** - * The length of the array. - */ - readonly length: number; - - /** - * Calls a defined callback function on each element of an array, and returns an array that - * contains the results. - * @param callbackfn A function that accepts up to three arguments. The map method calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - map(callbackfn: (value: number, index: number, array: Uint8ClampedArray) => number, thisArg?: any): Uint8ClampedArray; - - /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next - * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the - * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint8ClampedArray) => number, initialValue?: number): number; - - /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next - * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the - * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduce(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Uint8ClampedArray) => U, initialValue: U): U; - - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an - * argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an - * argument instead of an array value. - */ - reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint8ClampedArray) => number, initialValue?: number): number; - - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an - * argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduceRight(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Uint8ClampedArray) => U, initialValue: U): U; - - /** - * Reverses the elements in an Array. - */ - reverse(): Uint8ClampedArray; - - /** - * Sets a value or an array of values. - * @param index The index of the location to set. - * @param value The value to set. - */ - set(index: number, value: number): void; - - /** - * Sets a value or an array of values. - * @param array A typed or untyped array of values to set. - * @param offset The index in the current array at which the values are to be written. - */ - set(array: Uint8ClampedArray, offset?: number): void; - - /** - * Returns a section of an array. - * @param start The beginning of the specified portion of the array. - * @param end The end of the specified portion of the array. - */ - slice(start?: number, end?: number): Uint8ClampedArray; - - /** - * Determines whether the specified callback function returns true for any element of an array. - * @param callbackfn A function that accepts up to three arguments. The some method calls the - * callbackfn function for each element in array1 until the callbackfn returns true, or until - * the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - some(callbackfn: (value: number, index: number, array: Uint8ClampedArray) => boolean, thisArg?: any): boolean; - - /** - * Sorts an array. - * @param compareFn The name of the function used to determine the order of the elements. If - * omitted, the elements are sorted in ascending, ASCII character order. - */ - sort(compareFn?: (a: number, b: number) => number): Uint8ClampedArray; - - /** - * Gets a new Uint8ClampedArray view of the ArrayBuffer store for this array, referencing the elements - * at begin, inclusive, up to end, exclusive. - * @param begin The index of the beginning of the array. - * @param end The index of the end of the array. - */ - subarray(begin: number, end?: number): Uint8ClampedArray; - - /** - * Converts a number to a string by using the current locale. - */ - toLocaleString(): string; - - /** - * Returns a string representation of an array. - */ - toString(): string; - - [index: number]: number; -} - -interface Uint8ClampedArrayConstructor { - readonly prototype: Uint8ClampedArray; - new (length: number): Uint8ClampedArray; - new (array: ArrayLike): Uint8ClampedArray; - new (buffer: ArrayBuffer, byteOffset?: number, length?: number): Uint8ClampedArray; - - /** - * The size in bytes of each element in the array. - */ - readonly BYTES_PER_ELEMENT: number; - - /** - * Returns a new array from a set of elements. - * @param items A set of elements to include in the new array object. - */ - of(...items: number[]): Uint8ClampedArray; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: ArrayLike, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint8ClampedArray; -} -declare const Uint8ClampedArray: Uint8ClampedArrayConstructor; - -/** - * A typed array of 16-bit signed integer values. The contents are initialized to 0. If the - * requested number of bytes could not be allocated an exception is raised. - */ -interface Int16Array { - /** - * The size in bytes of each element in the array. - */ - readonly BYTES_PER_ELEMENT: number; - - /** - * The ArrayBuffer instance referenced by the array. - */ - readonly buffer: ArrayBuffer; - - /** - * The length in bytes of the array. - */ - readonly byteLength: number; - - /** - * The offset in bytes of the array. - */ - readonly byteOffset: number; - - /** - * Returns the this object after copying a section of the array identified by start and end - * to the same array starting at position target - * @param target If target is negative, it is treated as length+target where length is the - * length of the array. - * @param start If start is negative, it is treated as length+start. If end is negative, it - * is treated as length+end. - * @param end If not specified, length of the this object is used as its default value. - */ - copyWithin(target: number, start: number, end?: number): Int16Array; - - /** - * Determines whether all the members of an array satisfy the specified test. - * @param callbackfn A function that accepts up to three arguments. The every method calls - * the callbackfn function for each element in array1 until the callbackfn returns false, - * or until the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - every(callbackfn: (value: number, index: number, array: Int16Array) => boolean, thisArg?: any): boolean; - - /** - * Returns the this object after filling the section identified by start and end with value - * @param value value to fill array section with - * @param start index to start filling the array at. If start is negative, it is treated as - * length+start where length is the length of the array. - * @param end index to stop filling the array at. If end is negative, it is treated as - * length+end. - */ - fill(value: number, start?: number, end?: number): Int16Array; - - /** - * Returns the elements of an array that meet the condition specified in a callback function. - * @param callbackfn A function that accepts up to three arguments. The filter method calls - * the callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - filter(callbackfn: (value: number, index: number, array: Int16Array) => boolean, thisArg?: any): Int16Array; - - /** - * Returns the value of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; - - /** - * Returns the index of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; - - /** - * Performs the specified action for each element in an array. - * @param callbackfn A function that accepts up to three arguments. forEach calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - forEach(callbackfn: (value: number, index: number, array: Int16Array) => void, thisArg?: any): void; - - /** - * Returns the index of the first occurrence of a value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the - * search starts at index 0. - */ - indexOf(searchElement: number, fromIndex?: number): number; - - /** - * Adds all the elements of an array separated by the specified separator string. - * @param separator A string used to separate one element of an array from the next in the - * resulting String. If omitted, the array elements are separated with a comma. - */ - join(separator?: string): string; - - /** - * Returns the index of the last occurrence of a value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the - * search starts at index 0. - */ - lastIndexOf(searchElement: number, fromIndex?: number): number; - - /** - * The length of the array. - */ - readonly length: number; - - /** - * Calls a defined callback function on each element of an array, and returns an array that - * contains the results. - * @param callbackfn A function that accepts up to three arguments. The map method calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - map(callbackfn: (value: number, index: number, array: Int16Array) => number, thisArg?: any): Int16Array; - - /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next - * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the - * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Int16Array) => number, initialValue?: number): number; - - /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next - * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the - * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduce(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Int16Array) => U, initialValue: U): U; - - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an - * argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an - * argument instead of an array value. - */ - reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Int16Array) => number, initialValue?: number): number; - - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an - * argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduceRight(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Int16Array) => U, initialValue: U): U; - - /** - * Reverses the elements in an Array. - */ - reverse(): Int16Array; - - /** - * Sets a value or an array of values. - * @param index The index of the location to set. - * @param value The value to set. - */ - set(index: number, value: number): void; - - /** - * Sets a value or an array of values. - * @param array A typed or untyped array of values to set. - * @param offset The index in the current array at which the values are to be written. - */ - set(array: ArrayLike, offset?: number): void; - - /** - * Returns a section of an array. - * @param start The beginning of the specified portion of the array. - * @param end The end of the specified portion of the array. - */ - slice(start?: number, end?: number): Int16Array; - - /** - * Determines whether the specified callback function returns true for any element of an array. - * @param callbackfn A function that accepts up to three arguments. The some method calls the - * callbackfn function for each element in array1 until the callbackfn returns true, or until - * the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - some(callbackfn: (value: number, index: number, array: Int16Array) => boolean, thisArg?: any): boolean; - - /** - * Sorts an array. - * @param compareFn The name of the function used to determine the order of the elements. If - * omitted, the elements are sorted in ascending, ASCII character order. - */ - sort(compareFn?: (a: number, b: number) => number): Int16Array; - - /** - * Gets a new Int16Array view of the ArrayBuffer store for this array, referencing the elements - * at begin, inclusive, up to end, exclusive. - * @param begin The index of the beginning of the array. - * @param end The index of the end of the array. - */ - subarray(begin: number, end?: number): Int16Array; - - /** - * Converts a number to a string by using the current locale. - */ - toLocaleString(): string; - - /** - * Returns a string representation of an array. - */ - toString(): string; - - [index: number]: number; -} - -interface Int16ArrayConstructor { - readonly prototype: Int16Array; - new (length: number): Int16Array; - new (array: ArrayLike): Int16Array; - new (buffer: ArrayBuffer, byteOffset?: number, length?: number): Int16Array; - - /** - * The size in bytes of each element in the array. - */ - readonly BYTES_PER_ELEMENT: number; - - /** - * Returns a new array from a set of elements. - * @param items A set of elements to include in the new array object. - */ - of(...items: number[]): Int16Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: ArrayLike, mapfn?: (v: number, k: number) => number, thisArg?: any): Int16Array; - -} -declare const Int16Array: Int16ArrayConstructor; - -/** - * A typed array of 16-bit unsigned integer values. The contents are initialized to 0. If the - * requested number of bytes could not be allocated an exception is raised. - */ -interface Uint16Array { - /** - * The size in bytes of each element in the array. - */ - readonly BYTES_PER_ELEMENT: number; - - /** - * The ArrayBuffer instance referenced by the array. - */ - readonly buffer: ArrayBuffer; - - /** - * The length in bytes of the array. - */ - readonly byteLength: number; - - /** - * The offset in bytes of the array. - */ - readonly byteOffset: number; - - /** - * Returns the this object after copying a section of the array identified by start and end - * to the same array starting at position target - * @param target If target is negative, it is treated as length+target where length is the - * length of the array. - * @param start If start is negative, it is treated as length+start. If end is negative, it - * is treated as length+end. - * @param end If not specified, length of the this object is used as its default value. - */ - copyWithin(target: number, start: number, end?: number): Uint16Array; - - /** - * Determines whether all the members of an array satisfy the specified test. - * @param callbackfn A function that accepts up to three arguments. The every method calls - * the callbackfn function for each element in array1 until the callbackfn returns false, - * or until the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - every(callbackfn: (value: number, index: number, array: Uint16Array) => boolean, thisArg?: any): boolean; - - /** - * Returns the this object after filling the section identified by start and end with value - * @param value value to fill array section with - * @param start index to start filling the array at. If start is negative, it is treated as - * length+start where length is the length of the array. - * @param end index to stop filling the array at. If end is negative, it is treated as - * length+end. - */ - fill(value: number, start?: number, end?: number): Uint16Array; - - /** - * Returns the elements of an array that meet the condition specified in a callback function. - * @param callbackfn A function that accepts up to three arguments. The filter method calls - * the callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - filter(callbackfn: (value: number, index: number, array: Uint16Array) => boolean, thisArg?: any): Uint16Array; - - /** - * Returns the value of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; - - /** - * Returns the index of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; - - /** - * Performs the specified action for each element in an array. - * @param callbackfn A function that accepts up to three arguments. forEach calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - forEach(callbackfn: (value: number, index: number, array: Uint16Array) => void, thisArg?: any): void; - - /** - * Returns the index of the first occurrence of a value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the - * search starts at index 0. - */ - indexOf(searchElement: number, fromIndex?: number): number; - - /** - * Adds all the elements of an array separated by the specified separator string. - * @param separator A string used to separate one element of an array from the next in the - * resulting String. If omitted, the array elements are separated with a comma. - */ - join(separator?: string): string; - - /** - * Returns the index of the last occurrence of a value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the - * search starts at index 0. - */ - lastIndexOf(searchElement: number, fromIndex?: number): number; - - /** - * The length of the array. - */ - readonly length: number; - - /** - * Calls a defined callback function on each element of an array, and returns an array that - * contains the results. - * @param callbackfn A function that accepts up to three arguments. The map method calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - map(callbackfn: (value: number, index: number, array: Uint16Array) => number, thisArg?: any): Uint16Array; - - /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next - * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the - * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint16Array) => number, initialValue?: number): number; - - /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next - * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the - * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduce(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Uint16Array) => U, initialValue: U): U; - - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an - * argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an - * argument instead of an array value. - */ - reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint16Array) => number, initialValue?: number): number; - - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an - * argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduceRight(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Uint16Array) => U, initialValue: U): U; - - /** - * Reverses the elements in an Array. - */ - reverse(): Uint16Array; - - /** - * Sets a value or an array of values. - * @param index The index of the location to set. - * @param value The value to set. - */ - set(index: number, value: number): void; - - /** - * Sets a value or an array of values. - * @param array A typed or untyped array of values to set. - * @param offset The index in the current array at which the values are to be written. - */ - set(array: ArrayLike, offset?: number): void; - - /** - * Returns a section of an array. - * @param start The beginning of the specified portion of the array. - * @param end The end of the specified portion of the array. - */ - slice(start?: number, end?: number): Uint16Array; - - /** - * Determines whether the specified callback function returns true for any element of an array. - * @param callbackfn A function that accepts up to three arguments. The some method calls the - * callbackfn function for each element in array1 until the callbackfn returns true, or until - * the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - some(callbackfn: (value: number, index: number, array: Uint16Array) => boolean, thisArg?: any): boolean; - - /** - * Sorts an array. - * @param compareFn The name of the function used to determine the order of the elements. If - * omitted, the elements are sorted in ascending, ASCII character order. - */ - sort(compareFn?: (a: number, b: number) => number): Uint16Array; - - /** - * Gets a new Uint16Array view of the ArrayBuffer store for this array, referencing the elements - * at begin, inclusive, up to end, exclusive. - * @param begin The index of the beginning of the array. - * @param end The index of the end of the array. - */ - subarray(begin: number, end?: number): Uint16Array; - - /** - * Converts a number to a string by using the current locale. - */ - toLocaleString(): string; - - /** - * Returns a string representation of an array. - */ - toString(): string; - - [index: number]: number; -} - -interface Uint16ArrayConstructor { - readonly prototype: Uint16Array; - new (length: number): Uint16Array; - new (array: ArrayLike): Uint16Array; - new (buffer: ArrayBuffer, byteOffset?: number, length?: number): Uint16Array; - - /** - * The size in bytes of each element in the array. - */ - readonly BYTES_PER_ELEMENT: number; - - /** - * Returns a new array from a set of elements. - * @param items A set of elements to include in the new array object. - */ - of(...items: number[]): Uint16Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: ArrayLike, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint16Array; - -} -declare const Uint16Array: Uint16ArrayConstructor; -/** - * A typed array of 32-bit signed integer values. The contents are initialized to 0. If the - * requested number of bytes could not be allocated an exception is raised. - */ -interface Int32Array { - /** - * The size in bytes of each element in the array. - */ - readonly BYTES_PER_ELEMENT: number; - - /** - * The ArrayBuffer instance referenced by the array. - */ - readonly buffer: ArrayBuffer; - - /** - * The length in bytes of the array. - */ - readonly byteLength: number; - - /** - * The offset in bytes of the array. - */ - readonly byteOffset: number; - - /** - * Returns the this object after copying a section of the array identified by start and end - * to the same array starting at position target - * @param target If target is negative, it is treated as length+target where length is the - * length of the array. - * @param start If start is negative, it is treated as length+start. If end is negative, it - * is treated as length+end. - * @param end If not specified, length of the this object is used as its default value. - */ - copyWithin(target: number, start: number, end?: number): Int32Array; - - /** - * Determines whether all the members of an array satisfy the specified test. - * @param callbackfn A function that accepts up to three arguments. The every method calls - * the callbackfn function for each element in array1 until the callbackfn returns false, - * or until the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - every(callbackfn: (value: number, index: number, array: Int32Array) => boolean, thisArg?: any): boolean; - - /** - * Returns the this object after filling the section identified by start and end with value - * @param value value to fill array section with - * @param start index to start filling the array at. If start is negative, it is treated as - * length+start where length is the length of the array. - * @param end index to stop filling the array at. If end is negative, it is treated as - * length+end. - */ - fill(value: number, start?: number, end?: number): Int32Array; - - /** - * Returns the elements of an array that meet the condition specified in a callback function. - * @param callbackfn A function that accepts up to three arguments. The filter method calls - * the callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - filter(callbackfn: (value: number, index: number, array: Int32Array) => boolean, thisArg?: any): Int32Array; - - /** - * Returns the value of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; - - /** - * Returns the index of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; - - /** - * Performs the specified action for each element in an array. - * @param callbackfn A function that accepts up to three arguments. forEach calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - forEach(callbackfn: (value: number, index: number, array: Int32Array) => void, thisArg?: any): void; - - /** - * Returns the index of the first occurrence of a value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the - * search starts at index 0. - */ - indexOf(searchElement: number, fromIndex?: number): number; - - /** - * Adds all the elements of an array separated by the specified separator string. - * @param separator A string used to separate one element of an array from the next in the - * resulting String. If omitted, the array elements are separated with a comma. - */ - join(separator?: string): string; - - /** - * Returns the index of the last occurrence of a value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the - * search starts at index 0. - */ - lastIndexOf(searchElement: number, fromIndex?: number): number; - - /** - * The length of the array. - */ - readonly length: number; - - /** - * Calls a defined callback function on each element of an array, and returns an array that - * contains the results. - * @param callbackfn A function that accepts up to three arguments. The map method calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - map(callbackfn: (value: number, index: number, array: Int32Array) => number, thisArg?: any): Int32Array; - - /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next - * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the - * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Int32Array) => number, initialValue?: number): number; - - /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next - * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the - * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduce(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Int32Array) => U, initialValue: U): U; - - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an - * argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an - * argument instead of an array value. - */ - reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Int32Array) => number, initialValue?: number): number; - - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an - * argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduceRight(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Int32Array) => U, initialValue: U): U; - - /** - * Reverses the elements in an Array. - */ - reverse(): Int32Array; - - /** - * Sets a value or an array of values. - * @param index The index of the location to set. - * @param value The value to set. - */ - set(index: number, value: number): void; - - /** - * Sets a value or an array of values. - * @param array A typed or untyped array of values to set. - * @param offset The index in the current array at which the values are to be written. - */ - set(array: ArrayLike, offset?: number): void; - - /** - * Returns a section of an array. - * @param start The beginning of the specified portion of the array. - * @param end The end of the specified portion of the array. - */ - slice(start?: number, end?: number): Int32Array; - - /** - * Determines whether the specified callback function returns true for any element of an array. - * @param callbackfn A function that accepts up to three arguments. The some method calls the - * callbackfn function for each element in array1 until the callbackfn returns true, or until - * the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - some(callbackfn: (value: number, index: number, array: Int32Array) => boolean, thisArg?: any): boolean; - - /** - * Sorts an array. - * @param compareFn The name of the function used to determine the order of the elements. If - * omitted, the elements are sorted in ascending, ASCII character order. - */ - sort(compareFn?: (a: number, b: number) => number): Int32Array; - - /** - * Gets a new Int32Array view of the ArrayBuffer store for this array, referencing the elements - * at begin, inclusive, up to end, exclusive. - * @param begin The index of the beginning of the array. - * @param end The index of the end of the array. - */ - subarray(begin: number, end?: number): Int32Array; - - /** - * Converts a number to a string by using the current locale. - */ - toLocaleString(): string; - - /** - * Returns a string representation of an array. - */ - toString(): string; - - [index: number]: number; -} - -interface Int32ArrayConstructor { - readonly prototype: Int32Array; - new (length: number): Int32Array; - new (array: ArrayLike): Int32Array; - new (buffer: ArrayBuffer, byteOffset?: number, length?: number): Int32Array; - - /** - * The size in bytes of each element in the array. - */ - readonly BYTES_PER_ELEMENT: number; - - /** - * Returns a new array from a set of elements. - * @param items A set of elements to include in the new array object. - */ - of(...items: number[]): Int32Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: ArrayLike, mapfn?: (v: number, k: number) => number, thisArg?: any): Int32Array; -} -declare const Int32Array: Int32ArrayConstructor; - -/** - * A typed array of 32-bit unsigned integer values. The contents are initialized to 0. If the - * requested number of bytes could not be allocated an exception is raised. - */ -interface Uint32Array { - /** - * The size in bytes of each element in the array. - */ - readonly BYTES_PER_ELEMENT: number; - - /** - * The ArrayBuffer instance referenced by the array. - */ - readonly buffer: ArrayBuffer; - - /** - * The length in bytes of the array. - */ - readonly byteLength: number; - - /** - * The offset in bytes of the array. - */ - readonly byteOffset: number; - - /** - * Returns the this object after copying a section of the array identified by start and end - * to the same array starting at position target - * @param target If target is negative, it is treated as length+target where length is the - * length of the array. - * @param start If start is negative, it is treated as length+start. If end is negative, it - * is treated as length+end. - * @param end If not specified, length of the this object is used as its default value. - */ - copyWithin(target: number, start: number, end?: number): Uint32Array; - - /** - * Determines whether all the members of an array satisfy the specified test. - * @param callbackfn A function that accepts up to three arguments. The every method calls - * the callbackfn function for each element in array1 until the callbackfn returns false, - * or until the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - every(callbackfn: (value: number, index: number, array: Uint32Array) => boolean, thisArg?: any): boolean; - - /** - * Returns the this object after filling the section identified by start and end with value - * @param value value to fill array section with - * @param start index to start filling the array at. If start is negative, it is treated as - * length+start where length is the length of the array. - * @param end index to stop filling the array at. If end is negative, it is treated as - * length+end. - */ - fill(value: number, start?: number, end?: number): Uint32Array; - - /** - * Returns the elements of an array that meet the condition specified in a callback function. - * @param callbackfn A function that accepts up to three arguments. The filter method calls - * the callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - filter(callbackfn: (value: number, index: number, array: Uint32Array) => boolean, thisArg?: any): Uint32Array; - - /** - * Returns the value of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; - - /** - * Returns the index of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; - - /** - * Performs the specified action for each element in an array. - * @param callbackfn A function that accepts up to three arguments. forEach calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - forEach(callbackfn: (value: number, index: number, array: Uint32Array) => void, thisArg?: any): void; - - /** - * Returns the index of the first occurrence of a value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the - * search starts at index 0. - */ - indexOf(searchElement: number, fromIndex?: number): number; - - /** - * Adds all the elements of an array separated by the specified separator string. - * @param separator A string used to separate one element of an array from the next in the - * resulting String. If omitted, the array elements are separated with a comma. - */ - join(separator?: string): string; - - /** - * Returns the index of the last occurrence of a value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the - * search starts at index 0. - */ - lastIndexOf(searchElement: number, fromIndex?: number): number; - - /** - * The length of the array. - */ - readonly length: number; - - /** - * Calls a defined callback function on each element of an array, and returns an array that - * contains the results. - * @param callbackfn A function that accepts up to three arguments. The map method calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - map(callbackfn: (value: number, index: number, array: Uint32Array) => number, thisArg?: any): Uint32Array; - - /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next - * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the - * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint32Array) => number, initialValue?: number): number; - - /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next - * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the - * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduce(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Uint32Array) => U, initialValue: U): U; - - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an - * argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an - * argument instead of an array value. - */ - reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint32Array) => number, initialValue?: number): number; - - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an - * argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduceRight(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Uint32Array) => U, initialValue: U): U; - - /** - * Reverses the elements in an Array. - */ - reverse(): Uint32Array; - - /** - * Sets a value or an array of values. - * @param index The index of the location to set. - * @param value The value to set. - */ - set(index: number, value: number): void; - - /** - * Sets a value or an array of values. - * @param array A typed or untyped array of values to set. - * @param offset The index in the current array at which the values are to be written. - */ - set(array: ArrayLike, offset?: number): void; - - /** - * Returns a section of an array. - * @param start The beginning of the specified portion of the array. - * @param end The end of the specified portion of the array. - */ - slice(start?: number, end?: number): Uint32Array; - - /** - * Determines whether the specified callback function returns true for any element of an array. - * @param callbackfn A function that accepts up to three arguments. The some method calls the - * callbackfn function for each element in array1 until the callbackfn returns true, or until - * the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - some(callbackfn: (value: number, index: number, array: Uint32Array) => boolean, thisArg?: any): boolean; - - /** - * Sorts an array. - * @param compareFn The name of the function used to determine the order of the elements. If - * omitted, the elements are sorted in ascending, ASCII character order. - */ - sort(compareFn?: (a: number, b: number) => number): Uint32Array; - - /** - * Gets a new Uint32Array view of the ArrayBuffer store for this array, referencing the elements - * at begin, inclusive, up to end, exclusive. - * @param begin The index of the beginning of the array. - * @param end The index of the end of the array. - */ - subarray(begin: number, end?: number): Uint32Array; - - /** - * Converts a number to a string by using the current locale. - */ - toLocaleString(): string; - - /** - * Returns a string representation of an array. - */ - toString(): string; - - [index: number]: number; -} - -interface Uint32ArrayConstructor { - readonly prototype: Uint32Array; - new (length: number): Uint32Array; - new (array: ArrayLike): Uint32Array; - new (buffer: ArrayBuffer, byteOffset?: number, length?: number): Uint32Array; - - /** - * The size in bytes of each element in the array. - */ - readonly BYTES_PER_ELEMENT: number; - - /** - * Returns a new array from a set of elements. - * @param items A set of elements to include in the new array object. - */ - of(...items: number[]): Uint32Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: ArrayLike, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint32Array; -} -declare const Uint32Array: Uint32ArrayConstructor; - -/** - * A typed array of 32-bit float values. The contents are initialized to 0. If the requested number - * of bytes could not be allocated an exception is raised. - */ -interface Float32Array { - /** - * The size in bytes of each element in the array. - */ - readonly BYTES_PER_ELEMENT: number; - - /** - * The ArrayBuffer instance referenced by the array. - */ - readonly buffer: ArrayBuffer; - - /** - * The length in bytes of the array. - */ - readonly byteLength: number; - - /** - * The offset in bytes of the array. - */ - readonly byteOffset: number; - - /** - * Returns the this object after copying a section of the array identified by start and end - * to the same array starting at position target - * @param target If target is negative, it is treated as length+target where length is the - * length of the array. - * @param start If start is negative, it is treated as length+start. If end is negative, it - * is treated as length+end. - * @param end If not specified, length of the this object is used as its default value. - */ - copyWithin(target: number, start: number, end?: number): Float32Array; - - /** - * Determines whether all the members of an array satisfy the specified test. - * @param callbackfn A function that accepts up to three arguments. The every method calls - * the callbackfn function for each element in array1 until the callbackfn returns false, - * or until the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - every(callbackfn: (value: number, index: number, array: Float32Array) => boolean, thisArg?: any): boolean; - - /** - * Returns the this object after filling the section identified by start and end with value - * @param value value to fill array section with - * @param start index to start filling the array at. If start is negative, it is treated as - * length+start where length is the length of the array. - * @param end index to stop filling the array at. If end is negative, it is treated as - * length+end. - */ - fill(value: number, start?: number, end?: number): Float32Array; - - /** - * Returns the elements of an array that meet the condition specified in a callback function. - * @param callbackfn A function that accepts up to three arguments. The filter method calls - * the callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - filter(callbackfn: (value: number, index: number, array: Float32Array) => boolean, thisArg?: any): Float32Array; - - /** - * Returns the value of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; - - /** - * Returns the index of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; - - /** - * Performs the specified action for each element in an array. - * @param callbackfn A function that accepts up to three arguments. forEach calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - forEach(callbackfn: (value: number, index: number, array: Float32Array) => void, thisArg?: any): void; - - /** - * Returns the index of the first occurrence of a value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the - * search starts at index 0. - */ - indexOf(searchElement: number, fromIndex?: number): number; - - /** - * Adds all the elements of an array separated by the specified separator string. - * @param separator A string used to separate one element of an array from the next in the - * resulting String. If omitted, the array elements are separated with a comma. - */ - join(separator?: string): string; - - /** - * Returns the index of the last occurrence of a value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the - * search starts at index 0. - */ - lastIndexOf(searchElement: number, fromIndex?: number): number; - - /** - * The length of the array. - */ - readonly length: number; - - /** - * Calls a defined callback function on each element of an array, and returns an array that - * contains the results. - * @param callbackfn A function that accepts up to three arguments. The map method calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - map(callbackfn: (value: number, index: number, array: Float32Array) => number, thisArg?: any): Float32Array; - - /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next - * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the - * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Float32Array) => number, initialValue?: number): number; - - /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next - * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the - * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduce(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Float32Array) => U, initialValue: U): U; - - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an - * argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an - * argument instead of an array value. - */ - reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Float32Array) => number, initialValue?: number): number; - - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an - * argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduceRight(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Float32Array) => U, initialValue: U): U; - - /** - * Reverses the elements in an Array. - */ - reverse(): Float32Array; - - /** - * Sets a value or an array of values. - * @param index The index of the location to set. - * @param value The value to set. - */ - set(index: number, value: number): void; - - /** - * Sets a value or an array of values. - * @param array A typed or untyped array of values to set. - * @param offset The index in the current array at which the values are to be written. - */ - set(array: ArrayLike, offset?: number): void; - - /** - * Returns a section of an array. - * @param start The beginning of the specified portion of the array. - * @param end The end of the specified portion of the array. - */ - slice(start?: number, end?: number): Float32Array; - - /** - * Determines whether the specified callback function returns true for any element of an array. - * @param callbackfn A function that accepts up to three arguments. The some method calls the - * callbackfn function for each element in array1 until the callbackfn returns true, or until - * the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - some(callbackfn: (value: number, index: number, array: Float32Array) => boolean, thisArg?: any): boolean; - - /** - * Sorts an array. - * @param compareFn The name of the function used to determine the order of the elements. If - * omitted, the elements are sorted in ascending, ASCII character order. - */ - sort(compareFn?: (a: number, b: number) => number): Float32Array; - - /** - * Gets a new Float32Array view of the ArrayBuffer store for this array, referencing the elements - * at begin, inclusive, up to end, exclusive. - * @param begin The index of the beginning of the array. - * @param end The index of the end of the array. - */ - subarray(begin: number, end?: number): Float32Array; - - /** - * Converts a number to a string by using the current locale. - */ - toLocaleString(): string; - - /** - * Returns a string representation of an array. - */ - toString(): string; - - [index: number]: number; -} - -interface Float32ArrayConstructor { - readonly prototype: Float32Array; - new (length: number): Float32Array; - new (array: ArrayLike): Float32Array; - new (buffer: ArrayBuffer, byteOffset?: number, length?: number): Float32Array; - - /** - * The size in bytes of each element in the array. - */ - readonly BYTES_PER_ELEMENT: number; - - /** - * Returns a new array from a set of elements. - * @param items A set of elements to include in the new array object. - */ - of(...items: number[]): Float32Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: ArrayLike, mapfn?: (v: number, k: number) => number, thisArg?: any): Float32Array; - -} -declare const Float32Array: Float32ArrayConstructor; - -/** - * A typed array of 64-bit float values. The contents are initialized to 0. If the requested - * number of bytes could not be allocated an exception is raised. - */ -interface Float64Array { - /** - * The size in bytes of each element in the array. - */ - readonly BYTES_PER_ELEMENT: number; - - /** - * The ArrayBuffer instance referenced by the array. - */ - readonly buffer: ArrayBuffer; - - /** - * The length in bytes of the array. - */ - readonly byteLength: number; - - /** - * The offset in bytes of the array. - */ - readonly byteOffset: number; - - /** - * Returns the this object after copying a section of the array identified by start and end - * to the same array starting at position target - * @param target If target is negative, it is treated as length+target where length is the - * length of the array. - * @param start If start is negative, it is treated as length+start. If end is negative, it - * is treated as length+end. - * @param end If not specified, length of the this object is used as its default value. - */ - copyWithin(target: number, start: number, end?: number): Float64Array; - - /** - * Determines whether all the members of an array satisfy the specified test. - * @param callbackfn A function that accepts up to three arguments. The every method calls - * the callbackfn function for each element in array1 until the callbackfn returns false, - * or until the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - every(callbackfn: (value: number, index: number, array: Float64Array) => boolean, thisArg?: any): boolean; - - /** - * Returns the this object after filling the section identified by start and end with value - * @param value value to fill array section with - * @param start index to start filling the array at. If start is negative, it is treated as - * length+start where length is the length of the array. - * @param end index to stop filling the array at. If end is negative, it is treated as - * length+end. - */ - fill(value: number, start?: number, end?: number): Float64Array; - - /** - * Returns the elements of an array that meet the condition specified in a callback function. - * @param callbackfn A function that accepts up to three arguments. The filter method calls - * the callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - filter(callbackfn: (value: number, index: number, array: Float64Array) => boolean, thisArg?: any): Float64Array; - - /** - * Returns the value of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; - - /** - * Returns the index of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; - - /** - * Performs the specified action for each element in an array. - * @param callbackfn A function that accepts up to three arguments. forEach calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - forEach(callbackfn: (value: number, index: number, array: Float64Array) => void, thisArg?: any): void; - - /** - * Returns the index of the first occurrence of a value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the - * search starts at index 0. - */ - indexOf(searchElement: number, fromIndex?: number): number; - - /** - * Adds all the elements of an array separated by the specified separator string. - * @param separator A string used to separate one element of an array from the next in the - * resulting String. If omitted, the array elements are separated with a comma. - */ - join(separator?: string): string; - - /** - * Returns the index of the last occurrence of a value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the - * search starts at index 0. - */ - lastIndexOf(searchElement: number, fromIndex?: number): number; - - /** - * The length of the array. - */ - readonly length: number; - - /** - * Calls a defined callback function on each element of an array, and returns an array that - * contains the results. - * @param callbackfn A function that accepts up to three arguments. The map method calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - map(callbackfn: (value: number, index: number, array: Float64Array) => number, thisArg?: any): Float64Array; - - /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next - * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the - * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Float64Array) => number, initialValue?: number): number; - - /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next - * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the - * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduce(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Float64Array) => U, initialValue: U): U; - - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an - * argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an - * argument instead of an array value. - */ - reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Float64Array) => number, initialValue?: number): number; - - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an - * argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument - * instead of an array value. - */ - reduceRight(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Float64Array) => U, initialValue: U): U; - - /** - * Reverses the elements in an Array. - */ - reverse(): Float64Array; - - /** - * Sets a value or an array of values. - * @param index The index of the location to set. - * @param value The value to set. - */ - set(index: number, value: number): void; - - /** - * Sets a value or an array of values. - * @param array A typed or untyped array of values to set. - * @param offset The index in the current array at which the values are to be written. - */ - set(array: ArrayLike, offset?: number): void; - - /** - * Returns a section of an array. - * @param start The beginning of the specified portion of the array. - * @param end The end of the specified portion of the array. - */ - slice(start?: number, end?: number): Float64Array; - - /** - * Determines whether the specified callback function returns true for any element of an array. - * @param callbackfn A function that accepts up to three arguments. The some method calls the - * callbackfn function for each element in array1 until the callbackfn returns true, or until - * the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - some(callbackfn: (value: number, index: number, array: Float64Array) => boolean, thisArg?: any): boolean; - - /** - * Sorts an array. - * @param compareFn The name of the function used to determine the order of the elements. If - * omitted, the elements are sorted in ascending, ASCII character order. - */ - sort(compareFn?: (a: number, b: number) => number): Float64Array; - - /** - * Gets a new Float64Array view of the ArrayBuffer store for this array, referencing the elements - * at begin, inclusive, up to end, exclusive. - * @param begin The index of the beginning of the array. - * @param end The index of the end of the array. - */ - subarray(begin: number, end?: number): Float64Array; - - /** - * Converts a number to a string by using the current locale. - */ - toLocaleString(): string; - - /** - * Returns a string representation of an array. - */ - toString(): string; - - [index: number]: number; -} - -interface Float64ArrayConstructor { - readonly prototype: Float64Array; - new (length: number): Float64Array; - new (array: ArrayLike): Float64Array; - new (buffer: ArrayBuffer, byteOffset?: number, length?: number): Float64Array; - - /** - * The size in bytes of each element in the array. - */ - readonly BYTES_PER_ELEMENT: number; - - /** - * Returns a new array from a set of elements. - * @param items A set of elements to include in the new array object. - */ - of(...items: number[]): Float64Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: ArrayLike, mapfn?: (v: number, k: number) => number, thisArg?: any): Float64Array; -} -declare const Float64Array: Float64ArrayConstructor; -///////////////////////////// -/// ECMAScript Internationalization API -///////////////////////////// - -declare module Intl { - interface CollatorOptions { - usage?: string; - localeMatcher?: string; - numeric?: boolean; - caseFirst?: string; - sensitivity?: string; - ignorePunctuation?: boolean; - } - - interface ResolvedCollatorOptions { - locale: string; - usage: string; - sensitivity: string; - ignorePunctuation: boolean; - collation: string; - caseFirst: string; - numeric: boolean; - } - - interface Collator { - compare(x: string, y: string): number; - resolvedOptions(): ResolvedCollatorOptions; - } - var Collator: { - new (locales?: string[], options?: CollatorOptions): Collator; - new (locale?: string, options?: CollatorOptions): Collator; - (locales?: string[], options?: CollatorOptions): Collator; - (locale?: string, options?: CollatorOptions): Collator; - supportedLocalesOf(locales: string[], options?: CollatorOptions): string[]; - supportedLocalesOf(locale: string, options?: CollatorOptions): string[]; - } - - interface NumberFormatOptions { - localeMatcher?: string; - style?: string; - currency?: string; - currencyDisplay?: string; - useGrouping?: boolean; - minimumIntegerDigits?: number; - minimumFractionDigits?: number; - maximumFractionDigits?: number; - minimumSignificantDigits?: number; - maximumSignificantDigits?: number; - } - - interface ResolvedNumberFormatOptions { - locale: string; - numberingSystem: string; - style: string; - currency?: string; - currencyDisplay?: string; - minimumIntegerDigits: number; - minimumFractionDigits: number; - maximumFractionDigits: number; - minimumSignificantDigits?: number; - maximumSignificantDigits?: number; - useGrouping: boolean; - } - - interface NumberFormat { - format(value: number): string; - resolvedOptions(): ResolvedNumberFormatOptions; - } - var NumberFormat: { - new (locales?: string[], options?: NumberFormatOptions): NumberFormat; - new (locale?: string, options?: NumberFormatOptions): NumberFormat; - (locales?: string[], options?: NumberFormatOptions): NumberFormat; - (locale?: string, options?: NumberFormatOptions): NumberFormat; - supportedLocalesOf(locales: string[], options?: NumberFormatOptions): string[]; - supportedLocalesOf(locale: string, options?: NumberFormatOptions): string[]; - } - - interface DateTimeFormatOptions { - localeMatcher?: string; - weekday?: string; - era?: string; - year?: string; - month?: string; - day?: string; - hour?: string; - minute?: string; - second?: string; - timeZoneName?: string; - formatMatcher?: string; - hour12?: boolean; - timeZone?: string; - } - - interface ResolvedDateTimeFormatOptions { - locale: string; - calendar: string; - numberingSystem: string; - timeZone: string; - hour12?: boolean; - weekday?: string; - era?: string; - year?: string; - month?: string; - day?: string; - hour?: string; - minute?: string; - second?: string; - timeZoneName?: string; - } - - interface DateTimeFormat { - format(date?: Date | number): string; - resolvedOptions(): ResolvedDateTimeFormatOptions; - } - var DateTimeFormat: { - new (locales?: string[], options?: DateTimeFormatOptions): DateTimeFormat; - new (locale?: string, options?: DateTimeFormatOptions): DateTimeFormat; - (locales?: string[], options?: DateTimeFormatOptions): DateTimeFormat; - (locale?: string, options?: DateTimeFormatOptions): DateTimeFormat; - supportedLocalesOf(locales: string[], options?: DateTimeFormatOptions): string[]; - supportedLocalesOf(locale: string, options?: DateTimeFormatOptions): string[]; - } -} - -interface String { - /** - * Determines whether two strings are equivalent in the current locale. - * @param that String to compare to target string - * @param locales An array of locale strings that contain one or more language or locale tags. If you include more than one locale string, list them in descending order of priority so that the first entry is the preferred locale. If you omit this parameter, the default locale of the JavaScript runtime is used. This parameter must conform to BCP 47 standards; see the Intl.Collator object for details. - * @param options An object that contains one or more properties that specify comparison options. see the Intl.Collator object for details. - */ - localeCompare(that: string, locales: string[], options?: Intl.CollatorOptions): number; - - /** - * Determines whether two strings are equivalent in the current locale. - * @param that String to compare to target string - * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used. This parameter must conform to BCP 47 standards; see the Intl.Collator object for details. - * @param options An object that contains one or more properties that specify comparison options. see the Intl.Collator object for details. - */ - localeCompare(that: string, locale: string, options?: Intl.CollatorOptions): number; -} - -interface Number { - /** - * Converts a number to a string by using the current or specified locale. - * @param locales An array of locale strings that contain one or more language or locale tags. If you include more than one locale string, list them in descending order of priority so that the first entry is the preferred locale. If you omit this parameter, the default locale of the JavaScript runtime is used. - * @param options An object that contains one or more properties that specify comparison options. - */ - toLocaleString(locales?: string[], options?: Intl.NumberFormatOptions): string; - - /** - * Converts a number to a string by using the current or specified locale. - * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used. - * @param options An object that contains one or more properties that specify comparison options. - */ - toLocaleString(locale?: string, options?: Intl.NumberFormatOptions): string; -} - -interface Date { - /** - * Converts a date and time to a string by using the current or specified locale. - * @param locales An array of locale strings that contain one or more language or locale tags. If you include more than one locale string, list them in descending order of priority so that the first entry is the preferred locale. If you omit this parameter, the default locale of the JavaScript runtime is used. - * @param options An object that contains one or more properties that specify comparison options. - */ - toLocaleString(locales?: string[], options?: Intl.DateTimeFormatOptions): string; - /** - * Converts a date to a string by using the current or specified locale. - * @param locales An array of locale strings that contain one or more language or locale tags. If you include more than one locale string, list them in descending order of priority so that the first entry is the preferred locale. If you omit this parameter, the default locale of the JavaScript runtime is used. - * @param options An object that contains one or more properties that specify comparison options. - */ - toLocaleDateString(locales?: string[], options?: Intl.DateTimeFormatOptions): string; - - /** - * Converts a time to a string by using the current or specified locale. - * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used. - * @param options An object that contains one or more properties that specify comparison options. - */ - toLocaleTimeString(locale?: string[], options?: Intl.DateTimeFormatOptions): string; - - /** - * Converts a date and time to a string by using the current or specified locale. - * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used. - * @param options An object that contains one or more properties that specify comparison options. - */ - toLocaleString(locale?: string, options?: Intl.DateTimeFormatOptions): string; - - /** - * Converts a date to a string by using the current or specified locale. - * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used. - * @param options An object that contains one or more properties that specify comparison options. - */ - toLocaleDateString(locale?: string, options?: Intl.DateTimeFormatOptions): string; - - /** - * Converts a time to a string by using the current or specified locale. - * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used. - * @param options An object that contains one or more properties that specify comparison options. - */ - toLocaleTimeString(locale?: string, options?: Intl.DateTimeFormatOptions): string; -} - - -///////////////////////////// -/// IE DOM APIs -///////////////////////////// - -interface Algorithm { - name?: string; -} - -interface AriaRequestEventInit extends EventInit { - attributeName?: string; - attributeValue?: string; -} - -interface ClipboardEventInit extends EventInit { - data?: string; - dataType?: string; -} - -interface CommandEventInit extends EventInit { - commandName?: string; - detail?: string; -} - -interface CompositionEventInit extends UIEventInit { - data?: string; -} - -interface ConfirmSiteSpecificExceptionsInformation extends ExceptionInformation { - arrayOfDomainStrings?: string[]; -} - -interface CustomEventInit extends EventInit { - detail?: any; -} - -interface DeviceAccelerationDict { - x?: number; - y?: number; - z?: number; -} - -interface DeviceRotationRateDict { - alpha?: number; - beta?: number; - gamma?: number; -} - -interface EventInit { - bubbles?: boolean; - cancelable?: boolean; -} - -interface ExceptionInformation { - domain?: string; -} - -interface FocusEventInit extends UIEventInit { - relatedTarget?: EventTarget; -} - -interface HashChangeEventInit extends EventInit { - newURL?: string; - oldURL?: string; -} - -interface KeyAlgorithm { - name?: string; -} - -interface KeyboardEventInit extends SharedKeyboardAndMouseEventInit { - key?: string; - location?: number; - repeat?: boolean; -} - -interface MouseEventInit extends SharedKeyboardAndMouseEventInit { - screenX?: number; - screenY?: number; - clientX?: number; - clientY?: number; - button?: number; - buttons?: number; - relatedTarget?: EventTarget; -} - -interface MsZoomToOptions { - contentX?: number; - contentY?: number; - viewportX?: string; - viewportY?: string; - scaleFactor?: number; - animate?: string; -} - -interface MutationObserverInit { - childList?: boolean; - attributes?: boolean; - characterData?: boolean; - subtree?: boolean; - attributeOldValue?: boolean; - characterDataOldValue?: boolean; - attributeFilter?: string[]; -} - -interface ObjectURLOptions { - oneTimeOnly?: boolean; -} - -interface PointerEventInit extends MouseEventInit { - pointerId?: number; - width?: number; - height?: number; - pressure?: number; - tiltX?: number; - tiltY?: number; - pointerType?: string; - isPrimary?: boolean; -} - -interface PositionOptions { - enableHighAccuracy?: boolean; - timeout?: number; - maximumAge?: number; -} - -interface SharedKeyboardAndMouseEventInit extends UIEventInit { - ctrlKey?: boolean; - shiftKey?: boolean; - altKey?: boolean; - metaKey?: boolean; - keyModifierStateAltGraph?: boolean; - keyModifierStateCapsLock?: boolean; - keyModifierStateFn?: boolean; - keyModifierStateFnLock?: boolean; - keyModifierStateHyper?: boolean; - keyModifierStateNumLock?: boolean; - keyModifierStateOS?: boolean; - keyModifierStateScrollLock?: boolean; - keyModifierStateSuper?: boolean; - keyModifierStateSymbol?: boolean; - keyModifierStateSymbolLock?: boolean; -} - -interface StoreExceptionsInformation extends ExceptionInformation { - siteName?: string; - explanationString?: string; - detailURI?: string; -} - -interface StoreSiteSpecificExceptionsInformation extends StoreExceptionsInformation { - arrayOfDomainStrings?: string[]; -} - -interface UIEventInit extends EventInit { - view?: Window; - detail?: number; -} - -interface WebGLContextAttributes { - alpha?: boolean; - depth?: boolean; - stencil?: boolean; - antialias?: boolean; - premultipliedAlpha?: boolean; - preserveDrawingBuffer?: boolean; -} - -interface WebGLContextEventInit extends EventInit { - statusMessage?: string; -} - -interface WheelEventInit extends MouseEventInit { - deltaX?: number; - deltaY?: number; - deltaZ?: number; - deltaMode?: number; -} - -interface EventListener { - (evt: Event): void; -} - -interface ANGLE_instanced_arrays { - drawArraysInstancedANGLE(mode: number, first: number, count: number, primcount: number): void; - drawElementsInstancedANGLE(mode: number, count: number, type: number, offset: number, primcount: number): void; - vertexAttribDivisorANGLE(index: number, divisor: number): void; - VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE: number; -} - -declare var ANGLE_instanced_arrays: { - prototype: ANGLE_instanced_arrays; - new(): ANGLE_instanced_arrays; - VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE: number; -} - -interface AnalyserNode extends AudioNode { - fftSize: number; - frequencyBinCount: number; - maxDecibels: number; - minDecibels: number; - smoothingTimeConstant: number; - getByteFrequencyData(array: Uint8Array): void; - getByteTimeDomainData(array: Uint8Array): void; - getFloatFrequencyData(array: Float32Array): void; - getFloatTimeDomainData(array: Float32Array): void; -} - -declare var AnalyserNode: { - prototype: AnalyserNode; - new(): AnalyserNode; -} - -interface AnimationEvent extends Event { - animationName: string; - elapsedTime: number; - initAnimationEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, animationNameArg: string, elapsedTimeArg: number): void; -} - -declare var AnimationEvent: { - prototype: AnimationEvent; - new(): AnimationEvent; -} - -interface ApplicationCache extends EventTarget { - oncached: (ev: Event) => any; - onchecking: (ev: Event) => any; - ondownloading: (ev: Event) => any; - onerror: (ev: Event) => any; - onnoupdate: (ev: Event) => any; - onobsolete: (ev: Event) => any; - onprogress: (ev: ProgressEvent) => any; - onupdateready: (ev: Event) => any; - status: number; - abort(): void; - swapCache(): void; - update(): void; - CHECKING: number; - DOWNLOADING: number; - IDLE: number; - OBSOLETE: number; - UNCACHED: number; - UPDATEREADY: number; - addEventListener(type: "cached", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "checking", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "downloading", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; - addEventListener(type: "noupdate", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "obsolete", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "progress", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void; - addEventListener(type: "updateready", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var ApplicationCache: { - prototype: ApplicationCache; - new(): ApplicationCache; - CHECKING: number; - DOWNLOADING: number; - IDLE: number; - OBSOLETE: number; - UNCACHED: number; - UPDATEREADY: number; -} - -interface AriaRequestEvent extends Event { - attributeName: string; - attributeValue: string; -} - -declare var AriaRequestEvent: { - prototype: AriaRequestEvent; - new(type: string, eventInitDict?: AriaRequestEventInit): AriaRequestEvent; -} - -interface Attr extends Node { - name: string; - ownerElement: Element; - specified: boolean; - value: string; -} - -declare var Attr: { - prototype: Attr; - new(): Attr; -} - -interface AudioBuffer { - duration: number; - length: number; - numberOfChannels: number; - sampleRate: number; - getChannelData(channel: number): Float32Array; -} - -declare var AudioBuffer: { - prototype: AudioBuffer; - new(): AudioBuffer; -} - -interface AudioBufferSourceNode extends AudioNode { - buffer: AudioBuffer; - loop: boolean; - loopEnd: number; - loopStart: number; - onended: (ev: Event) => any; - playbackRate: AudioParam; - start(when?: number, offset?: number, duration?: number): void; - stop(when?: number): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var AudioBufferSourceNode: { - prototype: AudioBufferSourceNode; - new(): AudioBufferSourceNode; -} - -interface AudioContext extends EventTarget { - currentTime: number; - destination: AudioDestinationNode; - listener: AudioListener; - sampleRate: number; - state: string; - createAnalyser(): AnalyserNode; - createBiquadFilter(): BiquadFilterNode; - createBuffer(numberOfChannels: number, length: number, sampleRate: number): AudioBuffer; - createBufferSource(): AudioBufferSourceNode; - createChannelMerger(numberOfInputs?: number): ChannelMergerNode; - createChannelSplitter(numberOfOutputs?: number): ChannelSplitterNode; - createConvolver(): ConvolverNode; - createDelay(maxDelayTime?: number): DelayNode; - createDynamicsCompressor(): DynamicsCompressorNode; - createGain(): GainNode; - createMediaElementSource(mediaElement: HTMLMediaElement): MediaElementAudioSourceNode; - createOscillator(): OscillatorNode; - createPanner(): PannerNode; - createPeriodicWave(real: Float32Array, imag: Float32Array): PeriodicWave; - createScriptProcessor(bufferSize?: number, numberOfInputChannels?: number, numberOfOutputChannels?: number): ScriptProcessorNode; - createStereoPanner(): StereoPannerNode; - createWaveShaper(): WaveShaperNode; - decodeAudioData(audioData: ArrayBuffer, successCallback: DecodeSuccessCallback, errorCallback?: DecodeErrorCallback): void; -} - -declare var AudioContext: { - prototype: AudioContext; - new(): AudioContext; -} - -interface AudioDestinationNode extends AudioNode { - maxChannelCount: number; -} - -declare var AudioDestinationNode: { - prototype: AudioDestinationNode; - new(): AudioDestinationNode; -} - -interface AudioListener { - dopplerFactor: number; - speedOfSound: number; - setOrientation(x: number, y: number, z: number, xUp: number, yUp: number, zUp: number): void; - setPosition(x: number, y: number, z: number): void; - setVelocity(x: number, y: number, z: number): void; -} - -declare var AudioListener: { - prototype: AudioListener; - new(): AudioListener; -} - -interface AudioNode extends EventTarget { - channelCount: number; - channelCountMode: string; - channelInterpretation: string; - context: AudioContext; - numberOfInputs: number; - numberOfOutputs: number; - connect(destination: AudioNode, output?: number, input?: number): void; - disconnect(output?: number): void; - disconnect(destination: AudioNode, output?: number, input?: number): void; - disconnect(destination: AudioParam, output?: number): void; -} - -declare var AudioNode: { - prototype: AudioNode; - new(): AudioNode; -} - -interface AudioParam { - defaultValue: number; - value: number; - cancelScheduledValues(startTime: number): void; - exponentialRampToValueAtTime(value: number, endTime: number): void; - linearRampToValueAtTime(value: number, endTime: number): void; - setTargetAtTime(target: number, startTime: number, timeConstant: number): void; - setValueAtTime(value: number, startTime: number): void; - setValueCurveAtTime(values: Float32Array, startTime: number, duration: number): void; -} - -declare var AudioParam: { - prototype: AudioParam; - new(): AudioParam; -} - -interface AudioProcessingEvent extends Event { - inputBuffer: AudioBuffer; - outputBuffer: AudioBuffer; - playbackTime: number; -} - -declare var AudioProcessingEvent: { - prototype: AudioProcessingEvent; - new(): AudioProcessingEvent; -} - -interface AudioTrack { - enabled: boolean; - id: string; - kind: string; - label: string; - language: string; - sourceBuffer: SourceBuffer; -} - -declare var AudioTrack: { - prototype: AudioTrack; - new(): AudioTrack; -} - -interface AudioTrackList extends EventTarget { - length: number; - onaddtrack: (ev: TrackEvent) => any; - onchange: (ev: Event) => any; - onremovetrack: (ev: TrackEvent) => any; - getTrackById(id: string): AudioTrack; - item(index: number): AudioTrack; - addEventListener(type: "addtrack", listener: (ev: TrackEvent) => any, useCapture?: boolean): void; - addEventListener(type: "change", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "removetrack", listener: (ev: TrackEvent) => any, useCapture?: boolean): void; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; - [index: number]: AudioTrack; -} - -declare var AudioTrackList: { - prototype: AudioTrackList; - new(): AudioTrackList; -} - -interface BarProp { - visible: boolean; -} - -declare var BarProp: { - prototype: BarProp; - new(): BarProp; -} - -interface BeforeUnloadEvent extends Event { - returnValue: any; -} - -declare var BeforeUnloadEvent: { - prototype: BeforeUnloadEvent; - new(): BeforeUnloadEvent; -} - -interface BiquadFilterNode extends AudioNode { - Q: AudioParam; - detune: AudioParam; - frequency: AudioParam; - gain: AudioParam; - type: string; - getFrequencyResponse(frequencyHz: Float32Array, magResponse: Float32Array, phaseResponse: Float32Array): void; -} - -declare var BiquadFilterNode: { - prototype: BiquadFilterNode; - new(): BiquadFilterNode; -} - -interface Blob { - size: number; - type: string; - msClose(): void; - msDetachStream(): any; - slice(start?: number, end?: number, contentType?: string): Blob; -} - -declare var Blob: { - prototype: Blob; - new (blobParts?: any[], options?: BlobPropertyBag): Blob; -} - -interface CDATASection extends Text { -} - -declare var CDATASection: { - prototype: CDATASection; - new(): CDATASection; -} - -interface CSS { - supports(property: string, value?: string): boolean; -} -declare var CSS: CSS; - -interface CSSConditionRule extends CSSGroupingRule { - conditionText: string; -} - -declare var CSSConditionRule: { - prototype: CSSConditionRule; - new(): CSSConditionRule; -} - -interface CSSFontFaceRule extends CSSRule { - style: CSSStyleDeclaration; -} - -declare var CSSFontFaceRule: { - prototype: CSSFontFaceRule; - new(): CSSFontFaceRule; -} - -interface CSSGroupingRule extends CSSRule { - cssRules: CSSRuleList; - deleteRule(index?: number): void; - insertRule(rule: string, index?: number): number; -} - -declare var CSSGroupingRule: { - prototype: CSSGroupingRule; - new(): CSSGroupingRule; -} - -interface CSSImportRule extends CSSRule { - href: string; - media: MediaList; - styleSheet: CSSStyleSheet; -} - -declare var CSSImportRule: { - prototype: CSSImportRule; - new(): CSSImportRule; -} - -interface CSSKeyframeRule extends CSSRule { - keyText: string; - style: CSSStyleDeclaration; -} - -declare var CSSKeyframeRule: { - prototype: CSSKeyframeRule; - new(): CSSKeyframeRule; -} - -interface CSSKeyframesRule extends CSSRule { - cssRules: CSSRuleList; - name: string; - appendRule(rule: string): void; - deleteRule(rule: string): void; - findRule(rule: string): CSSKeyframeRule; -} - -declare var CSSKeyframesRule: { - prototype: CSSKeyframesRule; - new(): CSSKeyframesRule; -} - -interface CSSMediaRule extends CSSConditionRule { - media: MediaList; -} - -declare var CSSMediaRule: { - prototype: CSSMediaRule; - new(): CSSMediaRule; -} - -interface CSSNamespaceRule extends CSSRule { - namespaceURI: string; - prefix: string; -} - -declare var CSSNamespaceRule: { - prototype: CSSNamespaceRule; - new(): CSSNamespaceRule; -} - -interface CSSPageRule extends CSSRule { - pseudoClass: string; - selector: string; - selectorText: string; - style: CSSStyleDeclaration; -} - -declare var CSSPageRule: { - prototype: CSSPageRule; - new(): CSSPageRule; -} - -interface CSSRule { - cssText: string; - parentRule: CSSRule; - parentStyleSheet: CSSStyleSheet; - type: number; - CHARSET_RULE: number; - FONT_FACE_RULE: number; - IMPORT_RULE: number; - KEYFRAMES_RULE: number; - KEYFRAME_RULE: number; - MEDIA_RULE: number; - NAMESPACE_RULE: number; - PAGE_RULE: number; - STYLE_RULE: number; - SUPPORTS_RULE: number; - UNKNOWN_RULE: number; - VIEWPORT_RULE: number; -} - -declare var CSSRule: { - prototype: CSSRule; - new(): CSSRule; - CHARSET_RULE: number; - FONT_FACE_RULE: number; - IMPORT_RULE: number; - KEYFRAMES_RULE: number; - KEYFRAME_RULE: number; - MEDIA_RULE: number; - NAMESPACE_RULE: number; - PAGE_RULE: number; - STYLE_RULE: number; - SUPPORTS_RULE: number; - UNKNOWN_RULE: number; - VIEWPORT_RULE: number; -} - -interface CSSRuleList { - length: number; - item(index: number): CSSRule; - [index: number]: CSSRule; -} - -declare var CSSRuleList: { - prototype: CSSRuleList; - new(): CSSRuleList; -} - -interface CSSStyleDeclaration { - alignContent: string; - alignItems: string; - alignSelf: string; - alignmentBaseline: string; - animation: string; - animationDelay: string; - animationDirection: string; - animationDuration: string; - animationFillMode: string; - animationIterationCount: string; - animationName: string; - animationPlayState: string; - animationTimingFunction: string; - backfaceVisibility: string; - background: string; - backgroundAttachment: string; - backgroundClip: string; - backgroundColor: string; - backgroundImage: string; - backgroundOrigin: string; - backgroundPosition: string; - backgroundPositionX: string; - backgroundPositionY: string; - backgroundRepeat: string; - backgroundSize: string; - baselineShift: string; - border: string; - borderBottom: string; - borderBottomColor: string; - borderBottomLeftRadius: string; - borderBottomRightRadius: string; - borderBottomStyle: string; - borderBottomWidth: string; - borderCollapse: string; - borderColor: string; - borderImage: string; - borderImageOutset: string; - borderImageRepeat: string; - borderImageSlice: string; - borderImageSource: string; - borderImageWidth: string; - borderLeft: string; - borderLeftColor: string; - borderLeftStyle: string; - borderLeftWidth: string; - borderRadius: string; - borderRight: string; - borderRightColor: string; - borderRightStyle: string; - borderRightWidth: string; - borderSpacing: string; - borderStyle: string; - borderTop: string; - borderTopColor: string; - borderTopLeftRadius: string; - borderTopRightRadius: string; - borderTopStyle: string; - borderTopWidth: string; - borderWidth: string; - bottom: string; - boxShadow: string; - boxSizing: string; - breakAfter: string; - breakBefore: string; - breakInside: string; - captionSide: string; - clear: string; - clip: string; - clipPath: string; - clipRule: string; - color: string; - colorInterpolationFilters: string; - columnCount: any; - columnFill: string; - columnGap: any; - columnRule: string; - columnRuleColor: any; - columnRuleStyle: string; - columnRuleWidth: any; - columnSpan: string; - columnWidth: any; - columns: string; - content: string; - counterIncrement: string; - counterReset: string; - cssFloat: string; - cssText: string; - cursor: string; - direction: string; - display: string; - dominantBaseline: string; - emptyCells: string; - enableBackground: string; - fill: string; - fillOpacity: string; - fillRule: string; - filter: string; - flex: string; - flexBasis: string; - flexDirection: string; - flexFlow: string; - flexGrow: string; - flexShrink: string; - flexWrap: string; - floodColor: string; - floodOpacity: string; - font: string; - fontFamily: string; - fontFeatureSettings: string; - fontSize: string; - fontSizeAdjust: string; - fontStretch: string; - fontStyle: string; - fontVariant: string; - fontWeight: string; - glyphOrientationHorizontal: string; - glyphOrientationVertical: string; - height: string; - imeMode: string; - justifyContent: string; - kerning: string; - left: string; - length: number; - letterSpacing: string; - lightingColor: string; - lineHeight: string; - listStyle: string; - listStyleImage: string; - listStylePosition: string; - listStyleType: string; - margin: string; - marginBottom: string; - marginLeft: string; - marginRight: string; - marginTop: string; - marker: string; - markerEnd: string; - markerMid: string; - markerStart: string; - mask: string; - maxHeight: string; - maxWidth: string; - minHeight: string; - minWidth: string; - msContentZoomChaining: string; - msContentZoomLimit: string; - msContentZoomLimitMax: any; - msContentZoomLimitMin: any; - msContentZoomSnap: string; - msContentZoomSnapPoints: string; - msContentZoomSnapType: string; - msContentZooming: string; - msFlowFrom: string; - msFlowInto: string; - msFontFeatureSettings: string; - msGridColumn: any; - msGridColumnAlign: string; - msGridColumnSpan: any; - msGridColumns: string; - msGridRow: any; - msGridRowAlign: string; - msGridRowSpan: any; - msGridRows: string; - msHighContrastAdjust: string; - msHyphenateLimitChars: string; - msHyphenateLimitLines: any; - msHyphenateLimitZone: any; - msHyphens: string; - msImeAlign: string; - msOverflowStyle: string; - msScrollChaining: string; - msScrollLimit: string; - msScrollLimitXMax: any; - msScrollLimitXMin: any; - msScrollLimitYMax: any; - msScrollLimitYMin: any; - msScrollRails: string; - msScrollSnapPointsX: string; - msScrollSnapPointsY: string; - msScrollSnapType: string; - msScrollSnapX: string; - msScrollSnapY: string; - msScrollTranslation: string; - msTextCombineHorizontal: string; - msTextSizeAdjust: any; - msTouchAction: string; - msTouchSelect: string; - msUserSelect: string; - msWrapFlow: string; - msWrapMargin: any; - msWrapThrough: string; - opacity: string; - order: string; - orphans: string; - outline: string; - outlineColor: string; - outlineStyle: string; - outlineWidth: string; - overflow: string; - overflowX: string; - overflowY: string; - padding: string; - paddingBottom: string; - paddingLeft: string; - paddingRight: string; - paddingTop: string; - pageBreakAfter: string; - pageBreakBefore: string; - pageBreakInside: string; - parentRule: CSSRule; - perspective: string; - perspectiveOrigin: string; - pointerEvents: string; - position: string; - quotes: string; - right: string; - rubyAlign: string; - rubyOverhang: string; - rubyPosition: string; - stopColor: string; - stopOpacity: string; - stroke: string; - strokeDasharray: string; - strokeDashoffset: string; - strokeLinecap: string; - strokeLinejoin: string; - strokeMiterlimit: string; - strokeOpacity: string; - strokeWidth: string; - tableLayout: string; - textAlign: string; - textAlignLast: string; - textAnchor: string; - textDecoration: string; - textFillColor: string; - textIndent: string; - textJustify: string; - textKashida: string; - textKashidaSpace: string; - textOverflow: string; - textShadow: string; - textTransform: string; - textUnderlinePosition: string; - top: string; - touchAction: string; - transform: string; - transformOrigin: string; - transformStyle: string; - transition: string; - transitionDelay: string; - transitionDuration: string; - transitionProperty: string; - transitionTimingFunction: string; - unicodeBidi: string; - verticalAlign: string; - visibility: string; - webkitAlignContent: string; - webkitAlignItems: string; - webkitAlignSelf: string; - webkitAnimation: string; - webkitAnimationDelay: string; - webkitAnimationDirection: string; - webkitAnimationDuration: string; - webkitAnimationFillMode: string; - webkitAnimationIterationCount: string; - webkitAnimationName: string; - webkitAnimationPlayState: string; - webkitAnimationTimingFunction: string; - webkitAppearance: string; - webkitBackfaceVisibility: string; - webkitBackground: string; - webkitBackgroundAttachment: string; - webkitBackgroundClip: string; - webkitBackgroundColor: string; - webkitBackgroundImage: string; - webkitBackgroundOrigin: string; - webkitBackgroundPosition: string; - webkitBackgroundPositionX: string; - webkitBackgroundPositionY: string; - webkitBackgroundRepeat: string; - webkitBackgroundSize: string; - webkitBorderBottomLeftRadius: string; - webkitBorderBottomRightRadius: string; - webkitBorderImage: string; - webkitBorderImageOutset: string; - webkitBorderImageRepeat: string; - webkitBorderImageSlice: string; - webkitBorderImageSource: string; - webkitBorderImageWidth: string; - webkitBorderRadius: string; - webkitBorderTopLeftRadius: string; - webkitBorderTopRightRadius: string; - webkitBoxAlign: string; - webkitBoxDirection: string; - webkitBoxFlex: string; - webkitBoxOrdinalGroup: string; - webkitBoxOrient: string; - webkitBoxPack: string; - webkitBoxSizing: string; - webkitColumnBreakAfter: string; - webkitColumnBreakBefore: string; - webkitColumnBreakInside: string; - webkitColumnCount: any; - webkitColumnGap: any; - webkitColumnRule: string; - webkitColumnRuleColor: any; - webkitColumnRuleStyle: string; - webkitColumnRuleWidth: any; - webkitColumnSpan: string; - webkitColumnWidth: any; - webkitColumns: string; - webkitFilter: string; - webkitFlex: string; - webkitFlexBasis: string; - webkitFlexDirection: string; - webkitFlexFlow: string; - webkitFlexGrow: string; - webkitFlexShrink: string; - webkitFlexWrap: string; - webkitJustifyContent: string; - webkitOrder: string; - webkitPerspective: string; - webkitPerspectiveOrigin: string; - webkitTapHighlightColor: string; - webkitTextFillColor: string; - webkitTextSizeAdjust: any; - webkitTransform: string; - webkitTransformOrigin: string; - webkitTransformStyle: string; - webkitTransition: string; - webkitTransitionDelay: string; - webkitTransitionDuration: string; - webkitTransitionProperty: string; - webkitTransitionTimingFunction: string; - webkitUserSelect: string; - webkitWritingMode: string; - whiteSpace: string; - widows: string; - width: string; - wordBreak: string; - wordSpacing: string; - wordWrap: string; - writingMode: string; - zIndex: string; - zoom: string; - getPropertyPriority(propertyName: string): string; - getPropertyValue(propertyName: string): string; - item(index: number): string; - removeProperty(propertyName: string): string; - setProperty(propertyName: string, value: string, priority?: string): void; - [index: number]: string; -} - -declare var CSSStyleDeclaration: { - prototype: CSSStyleDeclaration; - new(): CSSStyleDeclaration; -} - -interface CSSStyleRule extends CSSRule { - readOnly: boolean; - selectorText: string; - style: CSSStyleDeclaration; -} - -declare var CSSStyleRule: { - prototype: CSSStyleRule; - new(): CSSStyleRule; -} - -interface CSSStyleSheet extends StyleSheet { - cssRules: CSSRuleList; - cssText: string; - href: string; - id: string; - imports: StyleSheetList; - isAlternate: boolean; - isPrefAlternate: boolean; - ownerRule: CSSRule; - owningElement: Element; - pages: StyleSheetPageList; - readOnly: boolean; - rules: CSSRuleList; - addImport(bstrURL: string, lIndex?: number): number; - addPageRule(bstrSelector: string, bstrStyle: string, lIndex?: number): number; - addRule(bstrSelector: string, bstrStyle?: string, lIndex?: number): number; - deleteRule(index?: number): void; - insertRule(rule: string, index?: number): number; - removeImport(lIndex: number): void; - removeRule(lIndex: number): void; -} - -declare var CSSStyleSheet: { - prototype: CSSStyleSheet; - new(): CSSStyleSheet; -} - -interface CSSSupportsRule extends CSSConditionRule { -} - -declare var CSSSupportsRule: { - prototype: CSSSupportsRule; - new(): CSSSupportsRule; -} - -interface CanvasGradient { - addColorStop(offset: number, color: string): void; -} - -declare var CanvasGradient: { - prototype: CanvasGradient; - new(): CanvasGradient; -} - -interface CanvasPattern { -} - -declare var CanvasPattern: { - prototype: CanvasPattern; - new(): CanvasPattern; -} - -interface CanvasRenderingContext2D { - canvas: HTMLCanvasElement; - fillStyle: string | CanvasGradient | CanvasPattern; - font: string; - globalAlpha: number; - globalCompositeOperation: string; - lineCap: string; - lineDashOffset: number; - lineJoin: string; - lineWidth: number; - miterLimit: number; - msFillRule: string; - msImageSmoothingEnabled: boolean; - shadowBlur: number; - shadowColor: string; - shadowOffsetX: number; - shadowOffsetY: number; - strokeStyle: string | CanvasGradient | CanvasPattern; - textAlign: string; - textBaseline: string; - arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, anticlockwise?: boolean): void; - arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): void; - beginPath(): void; - bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): void; - clearRect(x: number, y: number, w: number, h: number): void; - clip(fillRule?: string): void; - closePath(): void; - createImageData(imageDataOrSw: number | ImageData, sh?: number): ImageData; - createLinearGradient(x0: number, y0: number, x1: number, y1: number): CanvasGradient; - createPattern(image: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement, repetition: string): CanvasPattern; - createRadialGradient(x0: number, y0: number, r0: number, x1: number, y1: number, r1: number): CanvasGradient; - drawImage(image: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement, offsetX: number, offsetY: number, width?: number, height?: number, canvasOffsetX?: number, canvasOffsetY?: number, canvasImageWidth?: number, canvasImageHeight?: number): void; - fill(fillRule?: string): void; - fillRect(x: number, y: number, w: number, h: number): void; - fillText(text: string, x: number, y: number, maxWidth?: number): void; - getImageData(sx: number, sy: number, sw: number, sh: number): ImageData; - getLineDash(): number[]; - isPointInPath(x: number, y: number, fillRule?: string): boolean; - lineTo(x: number, y: number): void; - measureText(text: string): TextMetrics; - moveTo(x: number, y: number): void; - putImageData(imagedata: ImageData, dx: number, dy: number, dirtyX?: number, dirtyY?: number, dirtyWidth?: number, dirtyHeight?: number): void; - quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void; - rect(x: number, y: number, w: number, h: number): void; - restore(): void; - rotate(angle: number): void; - save(): void; - scale(x: number, y: number): void; - setLineDash(segments: number[]): void; - setTransform(m11: number, m12: number, m21: number, m22: number, dx: number, dy: number): void; - stroke(): void; - strokeRect(x: number, y: number, w: number, h: number): void; - strokeText(text: string, x: number, y: number, maxWidth?: number): void; - transform(m11: number, m12: number, m21: number, m22: number, dx: number, dy: number): void; - translate(x: number, y: number): void; -} - -declare var CanvasRenderingContext2D: { - prototype: CanvasRenderingContext2D; - new(): CanvasRenderingContext2D; -} - -interface ChannelMergerNode extends AudioNode { -} - -declare var ChannelMergerNode: { - prototype: ChannelMergerNode; - new(): ChannelMergerNode; -} - -interface ChannelSplitterNode extends AudioNode { -} - -declare var ChannelSplitterNode: { - prototype: ChannelSplitterNode; - new(): ChannelSplitterNode; -} - -interface CharacterData extends Node, ChildNode { - data: string; - length: number; - appendData(arg: string): void; - deleteData(offset: number, count: number): void; - insertData(offset: number, arg: string): void; - replaceData(offset: number, count: number, arg: string): void; - substringData(offset: number, count: number): string; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var CharacterData: { - prototype: CharacterData; - new(): CharacterData; -} - -interface ClientRect { - bottom: number; - height: number; - left: number; - right: number; - top: number; - width: number; -} - -declare var ClientRect: { - prototype: ClientRect; - new(): ClientRect; -} - -interface ClientRectList { - length: number; - item(index: number): ClientRect; - [index: number]: ClientRect; -} - -declare var ClientRectList: { - prototype: ClientRectList; - new(): ClientRectList; -} - -interface ClipboardEvent extends Event { - clipboardData: DataTransfer; -} - -declare var ClipboardEvent: { - prototype: ClipboardEvent; - new(type: string, eventInitDict?: ClipboardEventInit): ClipboardEvent; -} - -interface CloseEvent extends Event { - code: number; - reason: string; - wasClean: boolean; - initCloseEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, wasCleanArg: boolean, codeArg: number, reasonArg: string): void; -} - -declare var CloseEvent: { - prototype: CloseEvent; - new(): CloseEvent; -} - -interface CommandEvent extends Event { - commandName: string; - detail: string; -} - -declare var CommandEvent: { - prototype: CommandEvent; - new(type: string, eventInitDict?: CommandEventInit): CommandEvent; -} - -interface Comment extends CharacterData { - text: string; -} - -declare var Comment: { - prototype: Comment; - new(): Comment; -} - -interface CompositionEvent extends UIEvent { - data: string; - locale: string; - initCompositionEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, dataArg: string, locale: string): void; -} - -declare var CompositionEvent: { - prototype: CompositionEvent; - new(typeArg: string, eventInitDict?: CompositionEventInit): CompositionEvent; -} - -interface Console { - assert(test?: boolean, message?: string, ...optionalParams: any[]): void; - clear(): void; - count(countTitle?: string): void; - debug(message?: string, ...optionalParams: any[]): void; - dir(value?: any, ...optionalParams: any[]): void; - dirxml(value: any): void; - error(message?: any, ...optionalParams: any[]): void; - group(groupTitle?: string): void; - groupCollapsed(groupTitle?: string): void; - groupEnd(): void; - info(message?: any, ...optionalParams: any[]): void; - log(message?: any, ...optionalParams: any[]): void; - msIsIndependentlyComposed(element: Element): boolean; - profile(reportName?: string): void; - profileEnd(): void; - select(element: Element): void; - time(timerName?: string): void; - timeEnd(timerName?: string): void; - trace(message?: any, ...optionalParams: any[]): void; - warn(message?: any, ...optionalParams: any[]): void; -} - -declare var Console: { - prototype: Console; - new(): Console; -} - -interface ConvolverNode extends AudioNode { - buffer: AudioBuffer; - normalize: boolean; -} - -declare var ConvolverNode: { - prototype: ConvolverNode; - new(): ConvolverNode; -} - -interface Coordinates { - accuracy: number; - altitude: number; - altitudeAccuracy: number; - heading: number; - latitude: number; - longitude: number; - speed: number; -} - -declare var Coordinates: { - prototype: Coordinates; - new(): Coordinates; -} - -interface Crypto extends Object, RandomSource { - subtle: SubtleCrypto; -} - -declare var Crypto: { - prototype: Crypto; - new(): Crypto; -} - -interface CryptoKey { - algorithm: KeyAlgorithm; - extractable: boolean; - type: string; - usages: string[]; -} - -declare var CryptoKey: { - prototype: CryptoKey; - new(): CryptoKey; -} - -interface CryptoKeyPair { - privateKey: CryptoKey; - publicKey: CryptoKey; -} - -declare var CryptoKeyPair: { - prototype: CryptoKeyPair; - new(): CryptoKeyPair; -} - -interface CustomEvent extends Event { - detail: any; - initCustomEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, detailArg: any): void; -} - -declare var CustomEvent: { - prototype: CustomEvent; - new(typeArg: string, eventInitDict?: CustomEventInit): CustomEvent; -} - -interface DOMError { - name: string; - toString(): string; -} - -declare var DOMError: { - prototype: DOMError; - new(): DOMError; -} - -interface DOMException { - code: number; - message: string; - name: string; - toString(): string; - ABORT_ERR: number; - DATA_CLONE_ERR: number; - DOMSTRING_SIZE_ERR: number; - HIERARCHY_REQUEST_ERR: number; - INDEX_SIZE_ERR: number; - INUSE_ATTRIBUTE_ERR: number; - INVALID_ACCESS_ERR: number; - INVALID_CHARACTER_ERR: number; - INVALID_MODIFICATION_ERR: number; - INVALID_NODE_TYPE_ERR: number; - INVALID_STATE_ERR: number; - NAMESPACE_ERR: number; - NETWORK_ERR: number; - NOT_FOUND_ERR: number; - NOT_SUPPORTED_ERR: number; - NO_DATA_ALLOWED_ERR: number; - NO_MODIFICATION_ALLOWED_ERR: number; - PARSE_ERR: number; - QUOTA_EXCEEDED_ERR: number; - SECURITY_ERR: number; - SERIALIZE_ERR: number; - SYNTAX_ERR: number; - TIMEOUT_ERR: number; - TYPE_MISMATCH_ERR: number; - URL_MISMATCH_ERR: number; - VALIDATION_ERR: number; - WRONG_DOCUMENT_ERR: number; -} - -declare var DOMException: { - prototype: DOMException; - new(): DOMException; - ABORT_ERR: number; - DATA_CLONE_ERR: number; - DOMSTRING_SIZE_ERR: number; - HIERARCHY_REQUEST_ERR: number; - INDEX_SIZE_ERR: number; - INUSE_ATTRIBUTE_ERR: number; - INVALID_ACCESS_ERR: number; - INVALID_CHARACTER_ERR: number; - INVALID_MODIFICATION_ERR: number; - INVALID_NODE_TYPE_ERR: number; - INVALID_STATE_ERR: number; - NAMESPACE_ERR: number; - NETWORK_ERR: number; - NOT_FOUND_ERR: number; - NOT_SUPPORTED_ERR: number; - NO_DATA_ALLOWED_ERR: number; - NO_MODIFICATION_ALLOWED_ERR: number; - PARSE_ERR: number; - QUOTA_EXCEEDED_ERR: number; - SECURITY_ERR: number; - SERIALIZE_ERR: number; - SYNTAX_ERR: number; - TIMEOUT_ERR: number; - TYPE_MISMATCH_ERR: number; - URL_MISMATCH_ERR: number; - VALIDATION_ERR: number; - WRONG_DOCUMENT_ERR: number; -} - -interface DOMImplementation { - createDocument(namespaceURI: string, qualifiedName: string, doctype: DocumentType): Document; - createDocumentType(qualifiedName: string, publicId: string, systemId: string): DocumentType; - createHTMLDocument(title: string): Document; - hasFeature(feature: string, version: string): boolean; -} - -declare var DOMImplementation: { - prototype: DOMImplementation; - new(): DOMImplementation; -} - -interface DOMParser { - parseFromString(source: string, mimeType: string): Document; -} - -declare var DOMParser: { - prototype: DOMParser; - new(): DOMParser; -} - -interface DOMSettableTokenList extends DOMTokenList { - value: string; -} - -declare var DOMSettableTokenList: { - prototype: DOMSettableTokenList; - new(): DOMSettableTokenList; -} - -interface DOMStringList { - length: number; - contains(str: string): boolean; - item(index: number): string; - [index: number]: string; -} - -declare var DOMStringList: { - prototype: DOMStringList; - new(): DOMStringList; -} - -interface DOMStringMap { - [name: string]: string; -} - -declare var DOMStringMap: { - prototype: DOMStringMap; - new(): DOMStringMap; -} - -interface DOMTokenList { - length: number; - add(...token: string[]): void; - contains(token: string): boolean; - item(index: number): string; - remove(...token: string[]): void; - toString(): string; - toggle(token: string, force?: boolean): boolean; - [index: number]: string; -} - -declare var DOMTokenList: { - prototype: DOMTokenList; - new(): DOMTokenList; -} - -interface DataCue extends TextTrackCue { - data: ArrayBuffer; -} - -declare var DataCue: { - prototype: DataCue; - new(): DataCue; -} - -interface DataTransfer { - dropEffect: string; - effectAllowed: string; - files: FileList; - items: DataTransferItemList; - types: DOMStringList; - clearData(format?: string): boolean; - getData(format: string): string; - setData(format: string, data: string): boolean; -} - -declare var DataTransfer: { - prototype: DataTransfer; - new(): DataTransfer; -} - -interface DataTransferItem { - kind: string; - type: string; - getAsFile(): File; - getAsString(_callback: FunctionStringCallback): void; -} - -declare var DataTransferItem: { - prototype: DataTransferItem; - new(): DataTransferItem; -} - -interface DataTransferItemList { - length: number; - add(data: File): DataTransferItem; - clear(): void; - item(index: number): DataTransferItem; - remove(index: number): void; - [index: number]: DataTransferItem; -} - -declare var DataTransferItemList: { - prototype: DataTransferItemList; - new(): DataTransferItemList; -} - -interface DeferredPermissionRequest { - id: number; - type: string; - uri: string; - allow(): void; - deny(): void; -} - -declare var DeferredPermissionRequest: { - prototype: DeferredPermissionRequest; - new(): DeferredPermissionRequest; -} - -interface DelayNode extends AudioNode { - delayTime: AudioParam; -} - -declare var DelayNode: { - prototype: DelayNode; - new(): DelayNode; -} - -interface DeviceAcceleration { - x: number; - y: number; - z: number; -} - -declare var DeviceAcceleration: { - prototype: DeviceAcceleration; - new(): DeviceAcceleration; -} - -interface DeviceMotionEvent extends Event { - acceleration: DeviceAcceleration; - accelerationIncludingGravity: DeviceAcceleration; - interval: number; - rotationRate: DeviceRotationRate; - initDeviceMotionEvent(type: string, bubbles: boolean, cancelable: boolean, acceleration: DeviceAccelerationDict, accelerationIncludingGravity: DeviceAccelerationDict, rotationRate: DeviceRotationRateDict, interval: number): void; -} - -declare var DeviceMotionEvent: { - prototype: DeviceMotionEvent; - new(): DeviceMotionEvent; -} - -interface DeviceOrientationEvent extends Event { - absolute: boolean; - alpha: number; - beta: number; - gamma: number; - initDeviceOrientationEvent(type: string, bubbles: boolean, cancelable: boolean, alpha: number, beta: number, gamma: number, absolute: boolean): void; -} - -declare var DeviceOrientationEvent: { - prototype: DeviceOrientationEvent; - new(): DeviceOrientationEvent; -} - -interface DeviceRotationRate { - alpha: number; - beta: number; - gamma: number; -} - -declare var DeviceRotationRate: { - prototype: DeviceRotationRate; - new(): DeviceRotationRate; -} - -interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEvent { - /** - * Sets or gets the URL for the current document. - */ - URL: string; - /** - * Gets the URL for the document, stripped of any character encoding. - */ - URLUnencoded: string; - /** - * Gets the object that has the focus when the parent document has focus. - */ - activeElement: Element; - /** - * Sets or gets the color of all active links in the document. - */ - alinkColor: string; - /** - * Returns a reference to the collection of elements contained by the object. - */ - all: HTMLCollection; - /** - * Retrieves a collection of all a objects that have a name and/or id property. Objects in this collection are in HTML source order. - */ - anchors: HTMLCollection; - /** - * Retrieves a collection of all applet objects in the document. - */ - applets: HTMLCollection; - /** - * Deprecated. Sets or retrieves a value that indicates the background color behind the object. - */ - bgColor: string; - /** - * Specifies the beginning and end of the document body. - */ - body: HTMLElement; - characterSet: string; - /** - * Gets or sets the character set used to encode the object. - */ - charset: string; - /** - * Gets a value that indicates whether standards-compliant mode is switched on for the object. - */ - compatMode: string; - cookie: string; - /** - * Gets the default character set from the current regional language settings. - */ - defaultCharset: string; - defaultView: Window; - /** - * Sets or gets a value that indicates whether the document can be edited. - */ - designMode: string; - /** - * Sets or retrieves a value that indicates the reading order of the object. - */ - dir: string; - /** - * Gets an object representing the document type declaration associated with the current document. - */ - doctype: DocumentType; - /** - * Gets a reference to the root node of the document. - */ - documentElement: HTMLElement; - /** - * Sets or gets the security domain of the document. - */ - domain: string; - /** - * Retrieves a collection of all embed objects in the document. - */ - embeds: HTMLCollection; - /** - * Sets or gets the foreground (text) color of the document. - */ - fgColor: string; - /** - * Retrieves a collection, in source order, of all form objects in the document. - */ - forms: HTMLCollection; - fullscreenElement: Element; - fullscreenEnabled: boolean; - head: HTMLHeadElement; - hidden: boolean; - /** - * Retrieves a collection, in source order, of img objects in the document. - */ - images: HTMLCollection; - /** - * Gets the implementation object of the current document. - */ - implementation: DOMImplementation; - /** - * Returns the character encoding used to create the webpage that is loaded into the document object. - */ - inputEncoding: string; - /** - * Gets the date that the page was last modified, if the page supplies one. - */ - lastModified: string; - /** - * Sets or gets the color of the document links. - */ - linkColor: string; - /** - * Retrieves a collection of all a objects that specify the href property and all area objects in the document. - */ - links: HTMLCollection; - /** - * Contains information about the current URL. - */ - location: Location; - media: string; - msCSSOMElementFloatMetrics: boolean; - msCapsLockWarningOff: boolean; - msHidden: boolean; - msVisibilityState: string; - /** - * Fires when the user aborts the download. - * @param ev The event. - */ - onabort: (ev: Event) => any; - /** - * Fires when the object is set as the active element. - * @param ev The event. - */ - onactivate: (ev: UIEvent) => any; - /** - * Fires immediately before the object is set as the active element. - * @param ev The event. - */ - onbeforeactivate: (ev: UIEvent) => any; - /** - * Fires immediately before the activeElement is changed from the current object to another object in the parent document. - * @param ev The event. - */ - onbeforedeactivate: (ev: UIEvent) => any; - /** - * Fires when the object loses the input focus. - * @param ev The focus event. - */ - onblur: (ev: FocusEvent) => any; - /** - * Occurs when playback is possible, but would require further buffering. - * @param ev The event. - */ - oncanplay: (ev: Event) => any; - oncanplaythrough: (ev: Event) => any; - /** - * Fires when the contents of the object or selection have changed. - * @param ev The event. - */ - onchange: (ev: Event) => any; - /** - * Fires when the user clicks the left mouse button on the object - * @param ev The mouse event. - */ - onclick: (ev: MouseEvent) => any; - /** - * Fires when the user clicks the right mouse button in the client area, opening the context menu. - * @param ev The mouse event. - */ - oncontextmenu: (ev: PointerEvent) => any; - /** - * Fires when the user double-clicks the object. - * @param ev The mouse event. - */ - ondblclick: (ev: MouseEvent) => any; - /** - * Fires when the activeElement is changed from the current object to another object in the parent document. - * @param ev The UI Event - */ - ondeactivate: (ev: UIEvent) => any; - /** - * Fires on the source object continuously during a drag operation. - * @param ev The event. - */ - ondrag: (ev: DragEvent) => any; - /** - * Fires on the source object when the user releases the mouse at the close of a drag operation. - * @param ev The event. - */ - ondragend: (ev: DragEvent) => any; - /** - * Fires on the target element when the user drags the object to a valid drop target. - * @param ev The drag event. - */ - ondragenter: (ev: DragEvent) => any; - /** - * Fires on the target object when the user moves the mouse out of a valid drop target during a drag operation. - * @param ev The drag event. - */ - ondragleave: (ev: DragEvent) => any; - /** - * Fires on the target element continuously while the user drags the object over a valid drop target. - * @param ev The event. - */ - ondragover: (ev: DragEvent) => any; - /** - * Fires on the source object when the user starts to drag a text selection or selected object. - * @param ev The event. - */ - ondragstart: (ev: DragEvent) => any; - ondrop: (ev: DragEvent) => any; - /** - * Occurs when the duration attribute is updated. - * @param ev The event. - */ - ondurationchange: (ev: Event) => any; - /** - * Occurs when the media element is reset to its initial state. - * @param ev The event. - */ - onemptied: (ev: Event) => any; - /** - * Occurs when the end of playback is reached. - * @param ev The event - */ - onended: (ev: Event) => any; - /** - * Fires when an error occurs during object loading. - * @param ev The event. - */ - onerror: (ev: Event) => any; - /** - * Fires when the object receives focus. - * @param ev The event. - */ - onfocus: (ev: FocusEvent) => any; - onfullscreenchange: (ev: Event) => any; - onfullscreenerror: (ev: Event) => any; - oninput: (ev: Event) => any; - /** - * Fires when the user presses a key. - * @param ev The keyboard event - */ - onkeydown: (ev: KeyboardEvent) => any; - /** - * Fires when the user presses an alphanumeric key. - * @param ev The event. - */ - onkeypress: (ev: KeyboardEvent) => any; - /** - * Fires when the user releases a key. - * @param ev The keyboard event - */ - onkeyup: (ev: KeyboardEvent) => any; - /** - * Fires immediately after the browser loads the object. - * @param ev The event. - */ - onload: (ev: Event) => any; - /** - * Occurs when media data is loaded at the current playback position. - * @param ev The event. - */ - onloadeddata: (ev: Event) => any; - /** - * Occurs when the duration and dimensions of the media have been determined. - * @param ev The event. - */ - onloadedmetadata: (ev: Event) => any; - /** - * Occurs when Internet Explorer begins looking for media data. - * @param ev The event. - */ - onloadstart: (ev: Event) => any; - /** - * Fires when the user clicks the object with either mouse button. - * @param ev The mouse event. - */ - onmousedown: (ev: MouseEvent) => any; - /** - * Fires when the user moves the mouse over the object. - * @param ev The mouse event. - */ - onmousemove: (ev: MouseEvent) => any; - /** - * Fires when the user moves the mouse pointer outside the boundaries of the object. - * @param ev The mouse event. - */ - onmouseout: (ev: MouseEvent) => any; - /** - * Fires when the user moves the mouse pointer into the object. - * @param ev The mouse event. - */ - onmouseover: (ev: MouseEvent) => any; - /** - * Fires when the user releases a mouse button while the mouse is over the object. - * @param ev The mouse event. - */ - onmouseup: (ev: MouseEvent) => any; - /** - * Fires when the wheel button is rotated. - * @param ev The mouse event - */ - onmousewheel: (ev: MouseWheelEvent) => any; - onmscontentzoom: (ev: UIEvent) => any; - onmsgesturechange: (ev: MSGestureEvent) => any; - onmsgesturedoubletap: (ev: MSGestureEvent) => any; - onmsgestureend: (ev: MSGestureEvent) => any; - onmsgesturehold: (ev: MSGestureEvent) => any; - onmsgesturestart: (ev: MSGestureEvent) => any; - onmsgesturetap: (ev: MSGestureEvent) => any; - onmsinertiastart: (ev: MSGestureEvent) => any; - onmsmanipulationstatechanged: (ev: MSManipulationEvent) => any; - onmspointercancel: (ev: MSPointerEvent) => any; - onmspointerdown: (ev: MSPointerEvent) => any; - onmspointerenter: (ev: MSPointerEvent) => any; - onmspointerleave: (ev: MSPointerEvent) => any; - onmspointermove: (ev: MSPointerEvent) => any; - onmspointerout: (ev: MSPointerEvent) => any; - onmspointerover: (ev: MSPointerEvent) => any; - onmspointerup: (ev: MSPointerEvent) => any; - /** - * Occurs when an item is removed from a Jump List of a webpage running in Site Mode. - * @param ev The event. - */ - onmssitemodejumplistitemremoved: (ev: MSSiteModeEvent) => any; - /** - * Occurs when a user clicks a button in a Thumbnail Toolbar of a webpage running in Site Mode. - * @param ev The event. - */ - onmsthumbnailclick: (ev: MSSiteModeEvent) => any; - /** - * Occurs when playback is paused. - * @param ev The event. - */ - onpause: (ev: Event) => any; - /** - * Occurs when the play method is requested. - * @param ev The event. - */ - onplay: (ev: Event) => any; - /** - * Occurs when the audio or video has started playing. - * @param ev The event. - */ - onplaying: (ev: Event) => any; - onpointerlockchange: (ev: Event) => any; - onpointerlockerror: (ev: Event) => any; - /** - * Occurs to indicate progress while downloading media data. - * @param ev The event. - */ - onprogress: (ev: ProgressEvent) => any; - /** - * Occurs when the playback rate is increased or decreased. - * @param ev The event. - */ - onratechange: (ev: Event) => any; - /** - * Fires when the state of the object has changed. - * @param ev The event - */ - onreadystatechange: (ev: ProgressEvent) => any; - /** - * Fires when the user resets a form. - * @param ev The event. - */ - onreset: (ev: Event) => any; - /** - * Fires when the user repositions the scroll box in the scroll bar on the object. - * @param ev The event. - */ - onscroll: (ev: UIEvent) => any; - /** - * Occurs when the seek operation ends. - * @param ev The event. - */ - onseeked: (ev: Event) => any; - /** - * Occurs when the current playback position is moved. - * @param ev The event. - */ - onseeking: (ev: Event) => any; - /** - * Fires when the current selection changes. - * @param ev The event. - */ - onselect: (ev: UIEvent) => any; - onselectstart: (ev: Event) => any; - /** - * Occurs when the download has stopped. - * @param ev The event. - */ - onstalled: (ev: Event) => any; - /** - * Fires when the user clicks the Stop button or leaves the Web page. - * @param ev The event. - */ - onstop: (ev: Event) => any; - onsubmit: (ev: Event) => any; - /** - * Occurs if the load operation has been intentionally halted. - * @param ev The event. - */ - onsuspend: (ev: Event) => any; - /** - * Occurs to indicate the current playback position. - * @param ev The event. - */ - ontimeupdate: (ev: Event) => any; - ontouchcancel: (ev: TouchEvent) => any; - ontouchend: (ev: TouchEvent) => any; - ontouchmove: (ev: TouchEvent) => any; - ontouchstart: (ev: TouchEvent) => any; - /** - * Occurs when the volume is changed, or playback is muted or unmuted. - * @param ev The event. - */ - onvolumechange: (ev: Event) => any; - /** - * Occurs when playback stops because the next frame of a video resource is not available. - * @param ev The event. - */ - onwaiting: (ev: Event) => any; - onwebkitfullscreenchange: (ev: Event) => any; - onwebkitfullscreenerror: (ev: Event) => any; - plugins: HTMLCollection; - pointerLockElement: Element; - /** - * Retrieves a value that indicates the current state of the object. - */ - readyState: string; - /** - * Gets the URL of the location that referred the user to the current page. - */ - referrer: string; - /** - * Gets the root svg element in the document hierarchy. - */ - rootElement: SVGSVGElement; - /** - * Retrieves a collection of all script objects in the document. - */ - scripts: HTMLCollection; - security: string; - /** - * Retrieves a collection of styleSheet objects representing the style sheets that correspond to each instance of a link or style object in the document. - */ - styleSheets: StyleSheetList; - /** - * Contains the title of the document. - */ - title: string; - visibilityState: string; - /** - * Sets or gets the color of the links that the user has visited. - */ - vlinkColor: string; - webkitCurrentFullScreenElement: Element; - webkitFullscreenElement: Element; - webkitFullscreenEnabled: boolean; - webkitIsFullScreen: boolean; - xmlEncoding: string; - xmlStandalone: boolean; - /** - * Gets or sets the version attribute specified in the declaration of an XML document. - */ - xmlVersion: string; - currentScript: HTMLScriptElement; - adoptNode(source: Node): Node; - captureEvents(): void; - clear(): void; - /** - * Closes an output stream and forces the sent data to display. - */ - close(): void; - /** - * Creates an attribute object with a specified name. - * @param name String that sets the attribute object's name. - */ - createAttribute(name: string): Attr; - createAttributeNS(namespaceURI: string, qualifiedName: string): Attr; - createCDATASection(data: string): CDATASection; - /** - * Creates a comment object with the specified data. - * @param data Sets the comment object's data. - */ - createComment(data: string): Comment; - /** - * Creates a new document. - */ - createDocumentFragment(): DocumentFragment; - /** - * Creates an instance of the element for the specified tag. - * @param tagName The name of an element. - */ - createElement(tagName: "a"): HTMLAnchorElement; - createElement(tagName: "abbr"): HTMLPhraseElement; - createElement(tagName: "acronym"): HTMLPhraseElement; - createElement(tagName: "address"): HTMLBlockElement; - createElement(tagName: "applet"): HTMLAppletElement; - createElement(tagName: "area"): HTMLAreaElement; - createElement(tagName: "audio"): HTMLAudioElement; - createElement(tagName: "b"): HTMLPhraseElement; - createElement(tagName: "base"): HTMLBaseElement; - createElement(tagName: "basefont"): HTMLBaseFontElement; - createElement(tagName: "bdo"): HTMLPhraseElement; - createElement(tagName: "big"): HTMLPhraseElement; - createElement(tagName: "blockquote"): HTMLBlockElement; - createElement(tagName: "body"): HTMLBodyElement; - createElement(tagName: "br"): HTMLBRElement; - createElement(tagName: "button"): HTMLButtonElement; - createElement(tagName: "canvas"): HTMLCanvasElement; - createElement(tagName: "caption"): HTMLTableCaptionElement; - createElement(tagName: "center"): HTMLBlockElement; - createElement(tagName: "cite"): HTMLPhraseElement; - createElement(tagName: "code"): HTMLPhraseElement; - createElement(tagName: "col"): HTMLTableColElement; - createElement(tagName: "colgroup"): HTMLTableColElement; - createElement(tagName: "datalist"): HTMLDataListElement; - createElement(tagName: "dd"): HTMLDDElement; - createElement(tagName: "del"): HTMLModElement; - createElement(tagName: "dfn"): HTMLPhraseElement; - createElement(tagName: "dir"): HTMLDirectoryElement; - createElement(tagName: "div"): HTMLDivElement; - createElement(tagName: "dl"): HTMLDListElement; - createElement(tagName: "dt"): HTMLDTElement; - createElement(tagName: "em"): HTMLPhraseElement; - createElement(tagName: "embed"): HTMLEmbedElement; - createElement(tagName: "fieldset"): HTMLFieldSetElement; - createElement(tagName: "font"): HTMLFontElement; - createElement(tagName: "form"): HTMLFormElement; - createElement(tagName: "frame"): HTMLFrameElement; - createElement(tagName: "frameset"): HTMLFrameSetElement; - createElement(tagName: "h1"): HTMLHeadingElement; - createElement(tagName: "h2"): HTMLHeadingElement; - createElement(tagName: "h3"): HTMLHeadingElement; - createElement(tagName: "h4"): HTMLHeadingElement; - createElement(tagName: "h5"): HTMLHeadingElement; - createElement(tagName: "h6"): HTMLHeadingElement; - createElement(tagName: "head"): HTMLHeadElement; - createElement(tagName: "hr"): HTMLHRElement; - createElement(tagName: "html"): HTMLHtmlElement; - createElement(tagName: "i"): HTMLPhraseElement; - createElement(tagName: "iframe"): HTMLIFrameElement; - createElement(tagName: "img"): HTMLImageElement; - createElement(tagName: "input"): HTMLInputElement; - createElement(tagName: "ins"): HTMLModElement; - createElement(tagName: "isindex"): HTMLIsIndexElement; - createElement(tagName: "kbd"): HTMLPhraseElement; - createElement(tagName: "keygen"): HTMLBlockElement; - createElement(tagName: "label"): HTMLLabelElement; - createElement(tagName: "legend"): HTMLLegendElement; - createElement(tagName: "li"): HTMLLIElement; - createElement(tagName: "link"): HTMLLinkElement; - createElement(tagName: "listing"): HTMLBlockElement; - createElement(tagName: "map"): HTMLMapElement; - createElement(tagName: "marquee"): HTMLMarqueeElement; - createElement(tagName: "menu"): HTMLMenuElement; - createElement(tagName: "meta"): HTMLMetaElement; - createElement(tagName: "nextid"): HTMLNextIdElement; - createElement(tagName: "nobr"): HTMLPhraseElement; - createElement(tagName: "object"): HTMLObjectElement; - createElement(tagName: "ol"): HTMLOListElement; - createElement(tagName: "optgroup"): HTMLOptGroupElement; - createElement(tagName: "option"): HTMLOptionElement; - createElement(tagName: "p"): HTMLParagraphElement; - createElement(tagName: "param"): HTMLParamElement; - createElement(tagName: "plaintext"): HTMLBlockElement; - createElement(tagName: "pre"): HTMLPreElement; - createElement(tagName: "progress"): HTMLProgressElement; - createElement(tagName: "q"): HTMLQuoteElement; - createElement(tagName: "rt"): HTMLPhraseElement; - createElement(tagName: "ruby"): HTMLPhraseElement; - createElement(tagName: "s"): HTMLPhraseElement; - createElement(tagName: "samp"): HTMLPhraseElement; - createElement(tagName: "script"): HTMLScriptElement; - createElement(tagName: "select"): HTMLSelectElement; - createElement(tagName: "small"): HTMLPhraseElement; - createElement(tagName: "source"): HTMLSourceElement; - createElement(tagName: "span"): HTMLSpanElement; - createElement(tagName: "strike"): HTMLPhraseElement; - createElement(tagName: "strong"): HTMLPhraseElement; - createElement(tagName: "style"): HTMLStyleElement; - createElement(tagName: "sub"): HTMLPhraseElement; - createElement(tagName: "sup"): HTMLPhraseElement; - createElement(tagName: "table"): HTMLTableElement; - createElement(tagName: "tbody"): HTMLTableSectionElement; - createElement(tagName: "td"): HTMLTableDataCellElement; - createElement(tagName: "textarea"): HTMLTextAreaElement; - createElement(tagName: "tfoot"): HTMLTableSectionElement; - createElement(tagName: "th"): HTMLTableHeaderCellElement; - createElement(tagName: "thead"): HTMLTableSectionElement; - createElement(tagName: "title"): HTMLTitleElement; - createElement(tagName: "tr"): HTMLTableRowElement; - createElement(tagName: "track"): HTMLTrackElement; - createElement(tagName: "tt"): HTMLPhraseElement; - createElement(tagName: "u"): HTMLPhraseElement; - createElement(tagName: "ul"): HTMLUListElement; - createElement(tagName: "var"): HTMLPhraseElement; - createElement(tagName: "video"): HTMLVideoElement; - createElement(tagName: "x-ms-webview"): MSHTMLWebViewElement; - createElement(tagName: "xmp"): HTMLBlockElement; - createElement(tagName: string): HTMLElement; - createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "a"): SVGAElement - createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "circle"): SVGCircleElement - createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "clipPath"): SVGClipPathElement - createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "componentTransferFunction"): SVGComponentTransferFunctionElement - createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "defs"): SVGDefsElement - createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "desc"): SVGDescElement - createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "ellipse"): SVGEllipseElement - createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "feBlend"): SVGFEBlendElement - createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "feColorMatrix"): SVGFEColorMatrixElement - createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "feComponentTransfer"): SVGFEComponentTransferElement - createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "feComposite"): SVGFECompositeElement - createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "feConvolveMatrix"): SVGFEConvolveMatrixElement - createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "feDiffuseLighting"): SVGFEDiffuseLightingElement - createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "feDisplacementMap"): SVGFEDisplacementMapElement - createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "feDistantLight"): SVGFEDistantLightElement - createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "feFlood"): SVGFEFloodElement - createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "feFuncA"): SVGFEFuncAElement - createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "feFuncB"): SVGFEFuncBElement - createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "feFuncG"): SVGFEFuncGElement - createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "feFuncR"): SVGFEFuncRElement - createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "feGaussianBlur"): SVGFEGaussianBlurElement - createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "feImage"): SVGFEImageElement - createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "feMerge"): SVGFEMergeElement - createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "feMergeNode"): SVGFEMergeNodeElement - createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "feMorphology"): SVGFEMorphologyElement - createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "feOffset"): SVGFEOffsetElement - createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "fePointLight"): SVGFEPointLightElement - createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "feSpecularLighting"): SVGFESpecularLightingElement - createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "feSpotLight"): SVGFESpotLightElement - createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "feTile"): SVGFETileElement - createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "feTurbulence"): SVGFETurbulenceElement - createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "filter"): SVGFilterElement - createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "foreignObject"): SVGForeignObjectElement - createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "g"): SVGGElement - createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "image"): SVGImageElement - createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "gradient"): SVGGradientElement - createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "line"): SVGLineElement - createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "linearGradient"): SVGLinearGradientElement - createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "marker"): SVGMarkerElement - createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "mask"): SVGMaskElement - createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "path"): SVGPathElement - createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "metadata"): SVGMetadataElement - createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "pattern"): SVGPatternElement - createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "polygon"): SVGPolygonElement - createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "polyline"): SVGPolylineElement - createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "radialGradient"): SVGRadialGradientElement - createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "rect"): SVGRectElement - createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "svg"): SVGSVGElement - createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "script"): SVGScriptElement - createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "stop"): SVGStopElement - createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "style"): SVGStyleElement - createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "switch"): SVGSwitchElement - createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "symbol"): SVGSymbolElement - createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "tspan"): SVGTSpanElement - createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "textContent"): SVGTextContentElement - createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "text"): SVGTextElement - createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "textPath"): SVGTextPathElement - createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "textPositioning"): SVGTextPositioningElement - createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "title"): SVGTitleElement - createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "use"): SVGUseElement - createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "view"): SVGViewElement - createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: string): SVGElement - createElementNS(namespaceURI: string, qualifiedName: string): Element; - createExpression(expression: string, resolver: XPathNSResolver): XPathExpression; - createNSResolver(nodeResolver: Node): XPathNSResolver; - /** - * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document. - * @param root The root element or node to start traversing on. - * @param whatToShow The type of nodes or elements to appear in the node list - * @param filter A custom NodeFilter function to use. For more information, see filter. Use null for no filter. - * @param entityReferenceExpansion A flag that specifies whether entity reference nodes are expanded. - */ - createNodeIterator(root: Node, whatToShow?: number, filter?: NodeFilter, entityReferenceExpansion?: boolean): NodeIterator; - createProcessingInstruction(target: string, data: string): ProcessingInstruction; - /** - * Returns an empty range object that has both of its boundary points positioned at the beginning of the document. - */ - createRange(): Range; - /** - * Creates a text string from the specified value. - * @param data String that specifies the nodeValue property of the text node. - */ - createTextNode(data: string): Text; - createTouch(view: any, target: EventTarget, identifier: number, pageX: number, pageY: number, screenX: number, screenY: number): Touch; - createTouchList(...touches: Touch[]): TouchList; - /** - * Creates a TreeWalker object that you can use to traverse filtered lists of nodes or elements in a document. - * @param root The root element or node to start traversing on. - * @param whatToShow The type of nodes or elements to appear in the node list. For more information, see whatToShow. - * @param filter A custom NodeFilter function to use. - * @param entityReferenceExpansion A flag that specifies whether entity reference nodes are expanded. - */ - createTreeWalker(root: Node, whatToShow?: number, filter?: NodeFilter, entityReferenceExpansion?: boolean): TreeWalker; - /** - * Returns the element for the specified x coordinate and the specified y coordinate. - * @param x The x-offset - * @param y The y-offset - */ - elementFromPoint(x: number, y: number): Element; - evaluate(expression: string, contextNode: Node, resolver: XPathNSResolver, type: number, result: XPathResult): XPathResult; - /** - * Executes a command on the current document, current selection, or the given range. - * @param commandId String that specifies the command to execute. This command can be any of the command identifiers that can be executed in script. - * @param showUI Display the user interface, defaults to false. - * @param value Value to assign. - */ - execCommand(commandId: string, showUI?: boolean, value?: any): boolean; - /** - * Displays help information for the given command identifier. - * @param commandId Displays help information for the given command identifier. - */ - execCommandShowHelp(commandId: string): boolean; - exitFullscreen(): void; - exitPointerLock(): void; - /** - * Causes the element to receive the focus and executes the code specified by the onfocus event. - */ - focus(): void; - /** - * Returns a reference to the first object with the specified value of the ID or NAME attribute. - * @param elementId String that specifies the ID value. Case-insensitive. - */ - getElementById(elementId: string): HTMLElement; - getElementsByClassName(classNames: string): NodeListOf; - /** - * Gets a collection of objects based on the value of the NAME or ID attribute. - * @param elementName Gets a collection of objects based on the value of the NAME or ID attribute. - */ - getElementsByName(elementName: string): NodeListOf; - /** - * Retrieves a collection of objects based on the specified element name. - * @param name Specifies the name of an element. - */ - getElementsByTagName(tagname: "a"): NodeListOf; - getElementsByTagName(tagname: "abbr"): NodeListOf; - getElementsByTagName(tagname: "acronym"): NodeListOf; - getElementsByTagName(tagname: "address"): NodeListOf; - getElementsByTagName(tagname: "applet"): NodeListOf; - getElementsByTagName(tagname: "area"): NodeListOf; - getElementsByTagName(tagname: "article"): NodeListOf; - getElementsByTagName(tagname: "aside"): NodeListOf; - getElementsByTagName(tagname: "audio"): NodeListOf; - getElementsByTagName(tagname: "b"): NodeListOf; - getElementsByTagName(tagname: "base"): NodeListOf; - getElementsByTagName(tagname: "basefont"): NodeListOf; - getElementsByTagName(tagname: "bdo"): NodeListOf; - getElementsByTagName(tagname: "big"): NodeListOf; - getElementsByTagName(tagname: "blockquote"): NodeListOf; - getElementsByTagName(tagname: "body"): NodeListOf; - getElementsByTagName(tagname: "br"): NodeListOf; - getElementsByTagName(tagname: "button"): NodeListOf; - getElementsByTagName(tagname: "canvas"): NodeListOf; - getElementsByTagName(tagname: "caption"): NodeListOf; - getElementsByTagName(tagname: "center"): NodeListOf; - getElementsByTagName(tagname: "circle"): NodeListOf; - getElementsByTagName(tagname: "cite"): NodeListOf; - getElementsByTagName(tagname: "clippath"): NodeListOf; - getElementsByTagName(tagname: "code"): NodeListOf; - getElementsByTagName(tagname: "col"): NodeListOf; - getElementsByTagName(tagname: "colgroup"): NodeListOf; - getElementsByTagName(tagname: "datalist"): NodeListOf; - getElementsByTagName(tagname: "dd"): NodeListOf; - getElementsByTagName(tagname: "defs"): NodeListOf; - getElementsByTagName(tagname: "del"): NodeListOf; - getElementsByTagName(tagname: "desc"): NodeListOf; - getElementsByTagName(tagname: "dfn"): NodeListOf; - getElementsByTagName(tagname: "dir"): NodeListOf; - getElementsByTagName(tagname: "div"): NodeListOf; - getElementsByTagName(tagname: "dl"): NodeListOf; - getElementsByTagName(tagname: "dt"): NodeListOf; - getElementsByTagName(tagname: "ellipse"): NodeListOf; - getElementsByTagName(tagname: "em"): NodeListOf; - getElementsByTagName(tagname: "embed"): NodeListOf; - getElementsByTagName(tagname: "feblend"): NodeListOf; - getElementsByTagName(tagname: "fecolormatrix"): NodeListOf; - getElementsByTagName(tagname: "fecomponenttransfer"): NodeListOf; - getElementsByTagName(tagname: "fecomposite"): NodeListOf; - getElementsByTagName(tagname: "feconvolvematrix"): NodeListOf; - getElementsByTagName(tagname: "fediffuselighting"): NodeListOf; - getElementsByTagName(tagname: "fedisplacementmap"): NodeListOf; - getElementsByTagName(tagname: "fedistantlight"): NodeListOf; - getElementsByTagName(tagname: "feflood"): NodeListOf; - getElementsByTagName(tagname: "fefunca"): NodeListOf; - getElementsByTagName(tagname: "fefuncb"): NodeListOf; - getElementsByTagName(tagname: "fefuncg"): NodeListOf; - getElementsByTagName(tagname: "fefuncr"): NodeListOf; - getElementsByTagName(tagname: "fegaussianblur"): NodeListOf; - getElementsByTagName(tagname: "feimage"): NodeListOf; - getElementsByTagName(tagname: "femerge"): NodeListOf; - getElementsByTagName(tagname: "femergenode"): NodeListOf; - getElementsByTagName(tagname: "femorphology"): NodeListOf; - getElementsByTagName(tagname: "feoffset"): NodeListOf; - getElementsByTagName(tagname: "fepointlight"): NodeListOf; - getElementsByTagName(tagname: "fespecularlighting"): NodeListOf; - getElementsByTagName(tagname: "fespotlight"): NodeListOf; - getElementsByTagName(tagname: "fetile"): NodeListOf; - getElementsByTagName(tagname: "feturbulence"): NodeListOf; - getElementsByTagName(tagname: "fieldset"): NodeListOf; - getElementsByTagName(tagname: "figcaption"): NodeListOf; - getElementsByTagName(tagname: "figure"): NodeListOf; - getElementsByTagName(tagname: "filter"): NodeListOf; - getElementsByTagName(tagname: "font"): NodeListOf; - getElementsByTagName(tagname: "footer"): NodeListOf; - getElementsByTagName(tagname: "foreignobject"): NodeListOf; - getElementsByTagName(tagname: "form"): NodeListOf; - getElementsByTagName(tagname: "frame"): NodeListOf; - getElementsByTagName(tagname: "frameset"): NodeListOf; - getElementsByTagName(tagname: "g"): NodeListOf; - getElementsByTagName(tagname: "h1"): NodeListOf; - getElementsByTagName(tagname: "h2"): NodeListOf; - getElementsByTagName(tagname: "h3"): NodeListOf; - getElementsByTagName(tagname: "h4"): NodeListOf; - getElementsByTagName(tagname: "h5"): NodeListOf; - getElementsByTagName(tagname: "h6"): NodeListOf; - getElementsByTagName(tagname: "head"): NodeListOf; - getElementsByTagName(tagname: "header"): NodeListOf; - getElementsByTagName(tagname: "hgroup"): NodeListOf; - getElementsByTagName(tagname: "hr"): NodeListOf; - getElementsByTagName(tagname: "html"): NodeListOf; - getElementsByTagName(tagname: "i"): NodeListOf; - getElementsByTagName(tagname: "iframe"): NodeListOf; - getElementsByTagName(tagname: "image"): NodeListOf; - getElementsByTagName(tagname: "img"): NodeListOf; - getElementsByTagName(tagname: "input"): NodeListOf; - getElementsByTagName(tagname: "ins"): NodeListOf; - getElementsByTagName(tagname: "isindex"): NodeListOf; - getElementsByTagName(tagname: "kbd"): NodeListOf; - getElementsByTagName(tagname: "keygen"): NodeListOf; - getElementsByTagName(tagname: "label"): NodeListOf; - getElementsByTagName(tagname: "legend"): NodeListOf; - getElementsByTagName(tagname: "li"): NodeListOf; - getElementsByTagName(tagname: "line"): NodeListOf; - getElementsByTagName(tagname: "lineargradient"): NodeListOf; - getElementsByTagName(tagname: "link"): NodeListOf; - getElementsByTagName(tagname: "listing"): NodeListOf; - getElementsByTagName(tagname: "map"): NodeListOf; - getElementsByTagName(tagname: "mark"): NodeListOf; - getElementsByTagName(tagname: "marker"): NodeListOf; - getElementsByTagName(tagname: "marquee"): NodeListOf; - getElementsByTagName(tagname: "mask"): NodeListOf; - getElementsByTagName(tagname: "menu"): NodeListOf; - getElementsByTagName(tagname: "meta"): NodeListOf; - getElementsByTagName(tagname: "metadata"): NodeListOf; - getElementsByTagName(tagname: "nav"): NodeListOf; - getElementsByTagName(tagname: "nextid"): NodeListOf; - getElementsByTagName(tagname: "nobr"): NodeListOf; - getElementsByTagName(tagname: "noframes"): NodeListOf; - getElementsByTagName(tagname: "noscript"): NodeListOf; - getElementsByTagName(tagname: "object"): NodeListOf; - getElementsByTagName(tagname: "ol"): NodeListOf; - getElementsByTagName(tagname: "optgroup"): NodeListOf; - getElementsByTagName(tagname: "option"): NodeListOf; - getElementsByTagName(tagname: "p"): NodeListOf; - getElementsByTagName(tagname: "param"): NodeListOf; - getElementsByTagName(tagname: "path"): NodeListOf; - getElementsByTagName(tagname: "pattern"): NodeListOf; - getElementsByTagName(tagname: "plaintext"): NodeListOf; - getElementsByTagName(tagname: "polygon"): NodeListOf; - getElementsByTagName(tagname: "polyline"): NodeListOf; - getElementsByTagName(tagname: "pre"): NodeListOf; - getElementsByTagName(tagname: "progress"): NodeListOf; - getElementsByTagName(tagname: "q"): NodeListOf; - getElementsByTagName(tagname: "radialgradient"): NodeListOf; - getElementsByTagName(tagname: "rect"): NodeListOf; - getElementsByTagName(tagname: "rt"): NodeListOf; - getElementsByTagName(tagname: "ruby"): NodeListOf; - getElementsByTagName(tagname: "s"): NodeListOf; - getElementsByTagName(tagname: "samp"): NodeListOf; - getElementsByTagName(tagname: "script"): NodeListOf; - getElementsByTagName(tagname: "section"): NodeListOf; - getElementsByTagName(tagname: "select"): NodeListOf; - getElementsByTagName(tagname: "small"): NodeListOf; - getElementsByTagName(tagname: "source"): NodeListOf; - getElementsByTagName(tagname: "span"): NodeListOf; - getElementsByTagName(tagname: "stop"): NodeListOf; - getElementsByTagName(tagname: "strike"): NodeListOf; - getElementsByTagName(tagname: "strong"): NodeListOf; - getElementsByTagName(tagname: "style"): NodeListOf; - getElementsByTagName(tagname: "sub"): NodeListOf; - getElementsByTagName(tagname: "sup"): NodeListOf; - getElementsByTagName(tagname: "svg"): NodeListOf; - getElementsByTagName(tagname: "switch"): NodeListOf; - getElementsByTagName(tagname: "symbol"): NodeListOf; - getElementsByTagName(tagname: "table"): NodeListOf; - getElementsByTagName(tagname: "tbody"): NodeListOf; - getElementsByTagName(tagname: "td"): NodeListOf; - getElementsByTagName(tagname: "text"): NodeListOf; - getElementsByTagName(tagname: "textpath"): NodeListOf; - getElementsByTagName(tagname: "textarea"): NodeListOf; - getElementsByTagName(tagname: "tfoot"): NodeListOf; - getElementsByTagName(tagname: "th"): NodeListOf; - getElementsByTagName(tagname: "thead"): NodeListOf; - getElementsByTagName(tagname: "title"): NodeListOf; - getElementsByTagName(tagname: "tr"): NodeListOf; - getElementsByTagName(tagname: "track"): NodeListOf; - getElementsByTagName(tagname: "tspan"): NodeListOf; - getElementsByTagName(tagname: "tt"): NodeListOf; - getElementsByTagName(tagname: "u"): NodeListOf; - getElementsByTagName(tagname: "ul"): NodeListOf; - getElementsByTagName(tagname: "use"): NodeListOf; - getElementsByTagName(tagname: "var"): NodeListOf; - getElementsByTagName(tagname: "video"): NodeListOf; - getElementsByTagName(tagname: "view"): NodeListOf; - getElementsByTagName(tagname: "wbr"): NodeListOf; - getElementsByTagName(tagname: "x-ms-webview"): NodeListOf; - getElementsByTagName(tagname: "xmp"): NodeListOf; - getElementsByTagName(tagname: string): NodeListOf; - getElementsByTagNameNS(namespaceURI: string, localName: string): NodeListOf; - /** - * Returns an object representing the current selection of the document that is loaded into the object displaying a webpage. - */ - getSelection(): Selection; - /** - * Gets a value indicating whether the object currently has focus. - */ - hasFocus(): boolean; - importNode(importedNode: Node, deep: boolean): Node; - msElementsFromPoint(x: number, y: number): NodeList; - msElementsFromRect(left: number, top: number, width: number, height: number): NodeList; - /** - * Opens a new window and loads a document specified by a given URL. Also, opens a new window that uses the url parameter and the name parameter to collect the output of the write method and the writeln method. - * @param url Specifies a MIME type for the document. - * @param name Specifies the name of the window. This name is used as the value for the TARGET attribute on a form or an anchor element. - * @param features Contains a list of items separated by commas. Each item consists of an option and a value, separated by an equals sign (for example, "fullscreen=yes, toolbar=yes"). The following values are supported. - * @param replace Specifies whether the existing entry for the document is replaced in the history list. - */ - open(url?: string, name?: string, features?: string, replace?: boolean): Document; - /** - * Returns a Boolean value that indicates whether a specified command can be successfully executed using execCommand, given the current state of the document. - * @param commandId Specifies a command identifier. - */ - queryCommandEnabled(commandId: string): boolean; - /** - * Returns a Boolean value that indicates whether the specified command is in the indeterminate state. - * @param commandId String that specifies a command identifier. - */ - queryCommandIndeterm(commandId: string): boolean; - /** - * Returns a Boolean value that indicates the current state of the command. - * @param commandId String that specifies a command identifier. - */ - queryCommandState(commandId: string): boolean; - /** - * Returns a Boolean value that indicates whether the current command is supported on the current range. - * @param commandId Specifies a command identifier. - */ - queryCommandSupported(commandId: string): boolean; - /** - * Retrieves the string associated with a command. - * @param commandId String that contains the identifier of a command. This can be any command identifier given in the list of Command Identifiers. - */ - queryCommandText(commandId: string): string; - /** - * Returns the current value of the document, range, or current selection for the given command. - * @param commandId String that specifies a command identifier. - */ - queryCommandValue(commandId: string): string; - releaseEvents(): void; - /** - * Allows updating the print settings for the page. - */ - updateSettings(): void; - webkitCancelFullScreen(): void; - webkitExitFullscreen(): void; - /** - * Writes one or more HTML expressions to a document in the specified window. - * @param content Specifies the text and HTML tags to write. - */ - write(...content: string[]): void; - /** - * Writes one or more HTML expressions, followed by a carriage return, to a document in the specified window. - * @param content The text and HTML tags to write. - */ - writeln(...content: string[]): void; - createElement(tagName: "picture"): HTMLPictureElement; - getElementsByTagName(tagname: "picture"): NodeListOf; - addEventListener(type: "MSContentZoom", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureDoubleTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureEnd", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureHold", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSInertiaStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSManipulationStateChanged", listener: (ev: MSManipulationEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerCancel", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerDown", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerEnter", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerLeave", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerMove", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerOut", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerOver", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerUp", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "abort", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "activate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforedeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; - addEventListener(type: "canplay", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "canplaythrough", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "change", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "deactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragend", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragenter", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragleave", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragover", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragstart", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; - addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; - addEventListener(type: "fullscreenchange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "fullscreenerror", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; - addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; - addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; - addEventListener(type: "load", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "loadeddata", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "loadedmetadata", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "loadstart", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "mousedown", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousemove", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mssitemodejumplistitemremoved", listener: (ev: MSSiteModeEvent) => any, useCapture?: boolean): void; - addEventListener(type: "msthumbnailclick", listener: (ev: MSSiteModeEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "pointercancel", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerdown", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerenter", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerleave", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerlockchange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "pointerlockerror", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "pointermove", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerout", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerover", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerup", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "progress", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void; - addEventListener(type: "ratechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "readystatechange", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void; - addEventListener(type: "reset", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "scroll", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "seeked", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "seeking", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "select", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "selectstart", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "stalled", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "stop", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "submit", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "suspend", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "timeupdate", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "touchcancel", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchend", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchmove", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchstart", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "volumechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "waiting", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "webkitfullscreenchange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "webkitfullscreenerror", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "wheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var Document: { - prototype: Document; - new(): Document; -} - -interface DocumentFragment extends Node, NodeSelector { - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var DocumentFragment: { - prototype: DocumentFragment; - new(): DocumentFragment; -} - -interface DocumentType extends Node, ChildNode { - entities: NamedNodeMap; - internalSubset: string; - name: string; - notations: NamedNodeMap; - publicId: string; - systemId: string; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var DocumentType: { - prototype: DocumentType; - new(): DocumentType; -} - -interface DragEvent extends MouseEvent { - dataTransfer: DataTransfer; - initDragEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, screenXArg: number, screenYArg: number, clientXArg: number, clientYArg: number, ctrlKeyArg: boolean, altKeyArg: boolean, shiftKeyArg: boolean, metaKeyArg: boolean, buttonArg: number, relatedTargetArg: EventTarget, dataTransferArg: DataTransfer): void; - msConvertURL(file: File, targetType: string, targetURL?: string): void; -} - -declare var DragEvent: { - prototype: DragEvent; - new(): DragEvent; -} - -interface DynamicsCompressorNode extends AudioNode { - attack: AudioParam; - knee: AudioParam; - ratio: AudioParam; - reduction: AudioParam; - release: AudioParam; - threshold: AudioParam; -} - -declare var DynamicsCompressorNode: { - prototype: DynamicsCompressorNode; - new(): DynamicsCompressorNode; -} - -interface EXT_texture_filter_anisotropic { - MAX_TEXTURE_MAX_ANISOTROPY_EXT: number; - TEXTURE_MAX_ANISOTROPY_EXT: number; -} - -declare var EXT_texture_filter_anisotropic: { - prototype: EXT_texture_filter_anisotropic; - new(): EXT_texture_filter_anisotropic; - MAX_TEXTURE_MAX_ANISOTROPY_EXT: number; - TEXTURE_MAX_ANISOTROPY_EXT: number; -} - -interface Element extends Node, GlobalEventHandlers, ElementTraversal, NodeSelector, ChildNode { - classList: DOMTokenList; - clientHeight: number; - clientLeft: number; - clientTop: number; - clientWidth: number; - msContentZoomFactor: number; - msRegionOverflow: string; - onariarequest: (ev: AriaRequestEvent) => any; - oncommand: (ev: CommandEvent) => any; - ongotpointercapture: (ev: PointerEvent) => any; - onlostpointercapture: (ev: PointerEvent) => any; - onmsgesturechange: (ev: MSGestureEvent) => any; - onmsgesturedoubletap: (ev: MSGestureEvent) => any; - onmsgestureend: (ev: MSGestureEvent) => any; - onmsgesturehold: (ev: MSGestureEvent) => any; - onmsgesturestart: (ev: MSGestureEvent) => any; - onmsgesturetap: (ev: MSGestureEvent) => any; - onmsgotpointercapture: (ev: MSPointerEvent) => any; - onmsinertiastart: (ev: MSGestureEvent) => any; - onmslostpointercapture: (ev: MSPointerEvent) => any; - onmspointercancel: (ev: MSPointerEvent) => any; - onmspointerdown: (ev: MSPointerEvent) => any; - onmspointerenter: (ev: MSPointerEvent) => any; - onmspointerleave: (ev: MSPointerEvent) => any; - onmspointermove: (ev: MSPointerEvent) => any; - onmspointerout: (ev: MSPointerEvent) => any; - onmspointerover: (ev: MSPointerEvent) => any; - onmspointerup: (ev: MSPointerEvent) => any; - ontouchcancel: (ev: TouchEvent) => any; - ontouchend: (ev: TouchEvent) => any; - ontouchmove: (ev: TouchEvent) => any; - ontouchstart: (ev: TouchEvent) => any; - onwebkitfullscreenchange: (ev: Event) => any; - onwebkitfullscreenerror: (ev: Event) => any; - scrollHeight: number; - scrollLeft: number; - scrollTop: number; - scrollWidth: number; - tagName: string; - id: string; - className: string; - innerHTML: string; - getAttribute(name?: string): string; - getAttributeNS(namespaceURI: string, localName: string): string; - getAttributeNode(name: string): Attr; - getAttributeNodeNS(namespaceURI: string, localName: string): Attr; - getBoundingClientRect(): ClientRect; - getClientRects(): ClientRectList; - getElementsByTagName(name: "a"): NodeListOf; - getElementsByTagName(name: "abbr"): NodeListOf; - getElementsByTagName(name: "acronym"): NodeListOf; - getElementsByTagName(name: "address"): NodeListOf; - getElementsByTagName(name: "applet"): NodeListOf; - getElementsByTagName(name: "area"): NodeListOf; - getElementsByTagName(name: "article"): NodeListOf; - getElementsByTagName(name: "aside"): NodeListOf; - getElementsByTagName(name: "audio"): NodeListOf; - getElementsByTagName(name: "b"): NodeListOf; - getElementsByTagName(name: "base"): NodeListOf; - getElementsByTagName(name: "basefont"): NodeListOf; - getElementsByTagName(name: "bdo"): NodeListOf; - getElementsByTagName(name: "big"): NodeListOf; - getElementsByTagName(name: "blockquote"): NodeListOf; - getElementsByTagName(name: "body"): NodeListOf; - getElementsByTagName(name: "br"): NodeListOf; - getElementsByTagName(name: "button"): NodeListOf; - getElementsByTagName(name: "canvas"): NodeListOf; - getElementsByTagName(name: "caption"): NodeListOf; - getElementsByTagName(name: "center"): NodeListOf; - getElementsByTagName(name: "circle"): NodeListOf; - getElementsByTagName(name: "cite"): NodeListOf; - getElementsByTagName(name: "clippath"): NodeListOf; - getElementsByTagName(name: "code"): NodeListOf; - getElementsByTagName(name: "col"): NodeListOf; - getElementsByTagName(name: "colgroup"): NodeListOf; - getElementsByTagName(name: "datalist"): NodeListOf; - getElementsByTagName(name: "dd"): NodeListOf; - getElementsByTagName(name: "defs"): NodeListOf; - getElementsByTagName(name: "del"): NodeListOf; - getElementsByTagName(name: "desc"): NodeListOf; - getElementsByTagName(name: "dfn"): NodeListOf; - getElementsByTagName(name: "dir"): NodeListOf; - getElementsByTagName(name: "div"): NodeListOf; - getElementsByTagName(name: "dl"): NodeListOf; - getElementsByTagName(name: "dt"): NodeListOf; - getElementsByTagName(name: "ellipse"): NodeListOf; - getElementsByTagName(name: "em"): NodeListOf; - getElementsByTagName(name: "embed"): NodeListOf; - getElementsByTagName(name: "feblend"): NodeListOf; - getElementsByTagName(name: "fecolormatrix"): NodeListOf; - getElementsByTagName(name: "fecomponenttransfer"): NodeListOf; - getElementsByTagName(name: "fecomposite"): NodeListOf; - getElementsByTagName(name: "feconvolvematrix"): NodeListOf; - getElementsByTagName(name: "fediffuselighting"): NodeListOf; - getElementsByTagName(name: "fedisplacementmap"): NodeListOf; - getElementsByTagName(name: "fedistantlight"): NodeListOf; - getElementsByTagName(name: "feflood"): NodeListOf; - getElementsByTagName(name: "fefunca"): NodeListOf; - getElementsByTagName(name: "fefuncb"): NodeListOf; - getElementsByTagName(name: "fefuncg"): NodeListOf; - getElementsByTagName(name: "fefuncr"): NodeListOf; - getElementsByTagName(name: "fegaussianblur"): NodeListOf; - getElementsByTagName(name: "feimage"): NodeListOf; - getElementsByTagName(name: "femerge"): NodeListOf; - getElementsByTagName(name: "femergenode"): NodeListOf; - getElementsByTagName(name: "femorphology"): NodeListOf; - getElementsByTagName(name: "feoffset"): NodeListOf; - getElementsByTagName(name: "fepointlight"): NodeListOf; - getElementsByTagName(name: "fespecularlighting"): NodeListOf; - getElementsByTagName(name: "fespotlight"): NodeListOf; - getElementsByTagName(name: "fetile"): NodeListOf; - getElementsByTagName(name: "feturbulence"): NodeListOf; - getElementsByTagName(name: "fieldset"): NodeListOf; - getElementsByTagName(name: "figcaption"): NodeListOf; - getElementsByTagName(name: "figure"): NodeListOf; - getElementsByTagName(name: "filter"): NodeListOf; - getElementsByTagName(name: "font"): NodeListOf; - getElementsByTagName(name: "footer"): NodeListOf; - getElementsByTagName(name: "foreignobject"): NodeListOf; - getElementsByTagName(name: "form"): NodeListOf; - getElementsByTagName(name: "frame"): NodeListOf; - getElementsByTagName(name: "frameset"): NodeListOf; - getElementsByTagName(name: "g"): NodeListOf; - getElementsByTagName(name: "h1"): NodeListOf; - getElementsByTagName(name: "h2"): NodeListOf; - getElementsByTagName(name: "h3"): NodeListOf; - getElementsByTagName(name: "h4"): NodeListOf; - getElementsByTagName(name: "h5"): NodeListOf; - getElementsByTagName(name: "h6"): NodeListOf; - getElementsByTagName(name: "head"): NodeListOf; - getElementsByTagName(name: "header"): NodeListOf; - getElementsByTagName(name: "hgroup"): NodeListOf; - getElementsByTagName(name: "hr"): NodeListOf; - getElementsByTagName(name: "html"): NodeListOf; - getElementsByTagName(name: "i"): NodeListOf; - getElementsByTagName(name: "iframe"): NodeListOf; - getElementsByTagName(name: "image"): NodeListOf; - getElementsByTagName(name: "img"): NodeListOf; - getElementsByTagName(name: "input"): NodeListOf; - getElementsByTagName(name: "ins"): NodeListOf; - getElementsByTagName(name: "isindex"): NodeListOf; - getElementsByTagName(name: "kbd"): NodeListOf; - getElementsByTagName(name: "keygen"): NodeListOf; - getElementsByTagName(name: "label"): NodeListOf; - getElementsByTagName(name: "legend"): NodeListOf; - getElementsByTagName(name: "li"): NodeListOf; - getElementsByTagName(name: "line"): NodeListOf; - getElementsByTagName(name: "lineargradient"): NodeListOf; - getElementsByTagName(name: "link"): NodeListOf; - getElementsByTagName(name: "listing"): NodeListOf; - getElementsByTagName(name: "map"): NodeListOf; - getElementsByTagName(name: "mark"): NodeListOf; - getElementsByTagName(name: "marker"): NodeListOf; - getElementsByTagName(name: "marquee"): NodeListOf; - getElementsByTagName(name: "mask"): NodeListOf; - getElementsByTagName(name: "menu"): NodeListOf; - getElementsByTagName(name: "meta"): NodeListOf; - getElementsByTagName(name: "metadata"): NodeListOf; - getElementsByTagName(name: "nav"): NodeListOf; - getElementsByTagName(name: "nextid"): NodeListOf; - getElementsByTagName(name: "nobr"): NodeListOf; - getElementsByTagName(name: "noframes"): NodeListOf; - getElementsByTagName(name: "noscript"): NodeListOf; - getElementsByTagName(name: "object"): NodeListOf; - getElementsByTagName(name: "ol"): NodeListOf; - getElementsByTagName(name: "optgroup"): NodeListOf; - getElementsByTagName(name: "option"): NodeListOf; - getElementsByTagName(name: "p"): NodeListOf; - getElementsByTagName(name: "param"): NodeListOf; - getElementsByTagName(name: "path"): NodeListOf; - getElementsByTagName(name: "pattern"): NodeListOf; - getElementsByTagName(name: "plaintext"): NodeListOf; - getElementsByTagName(name: "polygon"): NodeListOf; - getElementsByTagName(name: "polyline"): NodeListOf; - getElementsByTagName(name: "pre"): NodeListOf; - getElementsByTagName(name: "progress"): NodeListOf; - getElementsByTagName(name: "q"): NodeListOf; - getElementsByTagName(name: "radialgradient"): NodeListOf; - getElementsByTagName(name: "rect"): NodeListOf; - getElementsByTagName(name: "rt"): NodeListOf; - getElementsByTagName(name: "ruby"): NodeListOf; - getElementsByTagName(name: "s"): NodeListOf; - getElementsByTagName(name: "samp"): NodeListOf; - getElementsByTagName(name: "script"): NodeListOf; - getElementsByTagName(name: "section"): NodeListOf; - getElementsByTagName(name: "select"): NodeListOf; - getElementsByTagName(name: "small"): NodeListOf; - getElementsByTagName(name: "source"): NodeListOf; - getElementsByTagName(name: "span"): NodeListOf; - getElementsByTagName(name: "stop"): NodeListOf; - getElementsByTagName(name: "strike"): NodeListOf; - getElementsByTagName(name: "strong"): NodeListOf; - getElementsByTagName(name: "style"): NodeListOf; - getElementsByTagName(name: "sub"): NodeListOf; - getElementsByTagName(name: "sup"): NodeListOf; - getElementsByTagName(name: "svg"): NodeListOf; - getElementsByTagName(name: "switch"): NodeListOf; - getElementsByTagName(name: "symbol"): NodeListOf; - getElementsByTagName(name: "table"): NodeListOf; - getElementsByTagName(name: "tbody"): NodeListOf; - getElementsByTagName(name: "td"): NodeListOf; - getElementsByTagName(name: "text"): NodeListOf; - getElementsByTagName(name: "textpath"): NodeListOf; - getElementsByTagName(name: "textarea"): NodeListOf; - getElementsByTagName(name: "tfoot"): NodeListOf; - getElementsByTagName(name: "th"): NodeListOf; - getElementsByTagName(name: "thead"): NodeListOf; - getElementsByTagName(name: "title"): NodeListOf; - getElementsByTagName(name: "tr"): NodeListOf; - getElementsByTagName(name: "track"): NodeListOf; - getElementsByTagName(name: "tspan"): NodeListOf; - getElementsByTagName(name: "tt"): NodeListOf; - getElementsByTagName(name: "u"): NodeListOf; - getElementsByTagName(name: "ul"): NodeListOf; - getElementsByTagName(name: "use"): NodeListOf; - getElementsByTagName(name: "var"): NodeListOf; - getElementsByTagName(name: "video"): NodeListOf; - getElementsByTagName(name: "view"): NodeListOf; - getElementsByTagName(name: "wbr"): NodeListOf; - getElementsByTagName(name: "x-ms-webview"): NodeListOf; - getElementsByTagName(name: "xmp"): NodeListOf; - getElementsByTagName(name: string): NodeListOf; - getElementsByTagNameNS(namespaceURI: string, localName: string): NodeListOf; - hasAttribute(name: string): boolean; - hasAttributeNS(namespaceURI: string, localName: string): boolean; - msGetRegionContent(): MSRangeCollection; - msGetUntransformedBounds(): ClientRect; - msMatchesSelector(selectors: string): boolean; - msReleasePointerCapture(pointerId: number): void; - msSetPointerCapture(pointerId: number): void; - msZoomTo(args: MsZoomToOptions): void; - releasePointerCapture(pointerId: number): void; - removeAttribute(name?: string): void; - removeAttributeNS(namespaceURI: string, localName: string): void; - removeAttributeNode(oldAttr: Attr): Attr; - requestFullscreen(): void; - requestPointerLock(): void; - setAttribute(name: string, value: string): void; - setAttributeNS(namespaceURI: string, qualifiedName: string, value: string): void; - setAttributeNode(newAttr: Attr): Attr; - setAttributeNodeNS(newAttr: Attr): Attr; - setPointerCapture(pointerId: number): void; - webkitMatchesSelector(selectors: string): boolean; - webkitRequestFullScreen(): void; - webkitRequestFullscreen(): void; - getElementsByClassName(classNames: string): NodeListOf; - matches(selector: string): boolean; - getElementsByTagName(tagname: "picture"): NodeListOf; - addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureDoubleTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureEnd", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureHold", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGotPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSInertiaStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSLostPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerCancel", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerDown", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerEnter", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerLeave", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerMove", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerOut", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerOver", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerUp", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void; - addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void; - addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "lostpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointercancel", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerdown", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerenter", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerleave", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointermove", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerout", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerover", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerup", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchcancel", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchend", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchmove", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchstart", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "webkitfullscreenchange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "webkitfullscreenerror", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "wheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var Element: { - prototype: Element; - new(): Element; -} - -interface ErrorEvent extends Event { - colno: number; - error: any; - filename: string; - lineno: number; - message: string; - initErrorEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, messageArg: string, filenameArg: string, linenoArg: number): void; -} - -declare var ErrorEvent: { - prototype: ErrorEvent; - new(): ErrorEvent; -} - -interface Event { - bubbles: boolean; - cancelBubble: boolean; - cancelable: boolean; - currentTarget: EventTarget; - defaultPrevented: boolean; - eventPhase: number; - isTrusted: boolean; - returnValue: boolean; - srcElement: Element; - target: EventTarget; - timeStamp: number; - type: string; - initEvent(eventTypeArg: string, canBubbleArg: boolean, cancelableArg: boolean): void; - preventDefault(): void; - stopImmediatePropagation(): void; - stopPropagation(): void; - AT_TARGET: number; - BUBBLING_PHASE: number; - CAPTURING_PHASE: number; -} - -declare var Event: { - prototype: Event; - new(type: string, eventInitDict?: EventInit): Event; - AT_TARGET: number; - BUBBLING_PHASE: number; - CAPTURING_PHASE: number; -} - -interface EventTarget { - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; - dispatchEvent(evt: Event): boolean; - removeEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var EventTarget: { - prototype: EventTarget; - new(): EventTarget; -} - -interface External { -} - -declare var External: { - prototype: External; - new(): External; -} - -interface File extends Blob { - lastModifiedDate: any; - name: string; -} - -declare var File: { - prototype: File; - new (parts: (ArrayBuffer | ArrayBufferView | Blob | string)[], filename: string, properties?: FilePropertyBag): File; -} - -interface FileList { - length: number; - item(index: number): File; - [index: number]: File; -} - -declare var FileList: { - prototype: FileList; - new(): FileList; -} - -interface FileReader extends EventTarget, MSBaseReader { - error: DOMError; - readAsArrayBuffer(blob: Blob): void; - readAsBinaryString(blob: Blob): void; - readAsDataURL(blob: Blob): void; - readAsText(blob: Blob, encoding?: string): void; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var FileReader: { - prototype: FileReader; - new(): FileReader; -} - -interface FocusEvent extends UIEvent { - relatedTarget: EventTarget; - initFocusEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, relatedTargetArg: EventTarget): void; -} - -declare var FocusEvent: { - prototype: FocusEvent; - new(typeArg: string, eventInitDict?: FocusEventInit): FocusEvent; -} - -interface FormData { - append(name: any, value: any, blobName?: string): void; -} - -declare var FormData: { - prototype: FormData; - new (form?: HTMLFormElement): FormData; -} - -interface GainNode extends AudioNode { - gain: AudioParam; -} - -declare var GainNode: { - prototype: GainNode; - new(): GainNode; -} - -interface Gamepad { - axes: number[]; - buttons: GamepadButton[]; - connected: boolean; - id: string; - index: number; - mapping: string; - timestamp: number; -} - -declare var Gamepad: { - prototype: Gamepad; - new(): Gamepad; -} - -interface GamepadButton { - pressed: boolean; - value: number; -} - -declare var GamepadButton: { - prototype: GamepadButton; - new(): GamepadButton; -} - -interface GamepadEvent extends Event { - gamepad: Gamepad; -} - -declare var GamepadEvent: { - prototype: GamepadEvent; - new(): GamepadEvent; -} - -interface Geolocation { - clearWatch(watchId: number): void; - getCurrentPosition(successCallback: PositionCallback, errorCallback?: PositionErrorCallback, options?: PositionOptions): void; - watchPosition(successCallback: PositionCallback, errorCallback?: PositionErrorCallback, options?: PositionOptions): number; -} - -declare var Geolocation: { - prototype: Geolocation; - new(): Geolocation; -} - -interface HTMLAllCollection extends HTMLCollection { - namedItem(name: string): Element; -} - -declare var HTMLAllCollection: { - prototype: HTMLAllCollection; - new(): HTMLAllCollection; -} - -interface HTMLAnchorElement extends HTMLElement { - Methods: string; - /** - * Sets or retrieves the character set used to encode the object. - */ - charset: string; - /** - * Sets or retrieves the coordinates of the object. - */ - coords: string; - /** - * Contains the anchor portion of the URL including the hash sign (#). - */ - hash: string; - /** - * Contains the hostname and port values of the URL. - */ - host: string; - /** - * Contains the hostname of a URL. - */ - hostname: string; - /** - * Sets or retrieves a destination URL or an anchor point. - */ - href: string; - /** - * Sets or retrieves the language code of the object. - */ - hreflang: string; - mimeType: string; - /** - * Sets or retrieves the shape of the object. - */ - name: string; - nameProp: string; - /** - * Contains the pathname of the URL. - */ - pathname: string; - /** - * Sets or retrieves the port number associated with a URL. - */ - port: string; - /** - * Contains the protocol of the URL. - */ - protocol: string; - protocolLong: string; - /** - * Sets or retrieves the relationship between the object and the destination of the link. - */ - rel: string; - /** - * Sets or retrieves the relationship between the object and the destination of the link. - */ - rev: string; - /** - * Sets or retrieves the substring of the href property that follows the question mark. - */ - search: string; - /** - * Sets or retrieves the shape of the object. - */ - shape: string; - /** - * Sets or retrieves the window or frame at which to target content. - */ - target: string; - /** - * Retrieves or sets the text of the object as a string. - */ - text: string; - type: string; - urn: string; - /** - * Returns a string representation of an object. - */ - toString(): string; -} - -declare var HTMLAnchorElement: { - prototype: HTMLAnchorElement; - new(): HTMLAnchorElement; -} - -interface HTMLAppletElement extends HTMLElement { - /** - * Retrieves a string of the URL where the object tag can be found. This is often the href of the document that the object is in, or the value set by a base element. - */ - BaseHref: string; - align: string; - /** - * Sets or retrieves a text alternative to the graphic. - */ - alt: string; - /** - * Gets or sets the optional alternative HTML script to execute if the object fails to load. - */ - altHtml: string; - /** - * Sets or retrieves a character string that can be used to implement your own archive functionality for the object. - */ - archive: string; - border: string; - code: string; - /** - * Sets or retrieves the URL of the component. - */ - codeBase: string; - /** - * Sets or retrieves the Internet media type for the code associated with the object. - */ - codeType: string; - /** - * Address of a pointer to the document this page or frame contains. If there is no document, then null will be returned. - */ - contentDocument: Document; - /** - * Sets or retrieves the URL that references the data of the object. - */ - data: string; - /** - * Sets or retrieves a character string that can be used to implement your own declare functionality for the object. - */ - declare: boolean; - form: HTMLFormElement; - /** - * Sets or retrieves the height of the object. - */ - height: string; - hspace: number; - /** - * Sets or retrieves the shape of the object. - */ - name: string; - object: string; - /** - * Sets or retrieves a message to be displayed while an object is loading. - */ - standby: string; - /** - * Returns the content type of the object. - */ - type: string; - /** - * Sets or retrieves the URL, often with a bookmark extension (#name), to use as a client-side image map. - */ - useMap: string; - vspace: number; - width: number; -} - -declare var HTMLAppletElement: { - prototype: HTMLAppletElement; - new(): HTMLAppletElement; -} - -interface HTMLAreaElement extends HTMLElement { - /** - * Sets or retrieves a text alternative to the graphic. - */ - alt: string; - /** - * Sets or retrieves the coordinates of the object. - */ - coords: string; - /** - * Sets or retrieves the subsection of the href property that follows the number sign (#). - */ - hash: string; - /** - * Sets or retrieves the hostname and port number of the location or URL. - */ - host: string; - /** - * Sets or retrieves the host name part of the location or URL. - */ - hostname: string; - /** - * Sets or retrieves a destination URL or an anchor point. - */ - href: string; - /** - * Sets or gets whether clicks in this region cause action. - */ - noHref: boolean; - /** - * Sets or retrieves the file name or path specified by the object. - */ - pathname: string; - /** - * Sets or retrieves the port number associated with a URL. - */ - port: string; - /** - * Sets or retrieves the protocol portion of a URL. - */ - protocol: string; - rel: string; - /** - * Sets or retrieves the substring of the href property that follows the question mark. - */ - search: string; - /** - * Sets or retrieves the shape of the object. - */ - shape: string; - /** - * Sets or retrieves the window or frame at which to target content. - */ - target: string; - /** - * Returns a string representation of an object. - */ - toString(): string; -} - -declare var HTMLAreaElement: { - prototype: HTMLAreaElement; - new(): HTMLAreaElement; -} - -interface HTMLAreasCollection extends HTMLCollection { - /** - * Adds an element to the areas, controlRange, or options collection. - */ - add(element: HTMLElement, before?: HTMLElement | number): void; - /** - * Removes an element from the collection. - */ - remove(index?: number): void; -} - -declare var HTMLAreasCollection: { - prototype: HTMLAreasCollection; - new(): HTMLAreasCollection; -} - -interface HTMLAudioElement extends HTMLMediaElement { -} - -declare var HTMLAudioElement: { - prototype: HTMLAudioElement; - new(): HTMLAudioElement; -} - -interface HTMLBRElement extends HTMLElement { - /** - * Sets or retrieves the side on which floating objects are not to be positioned when any IHTMLBlockElement is inserted into the document. - */ - clear: string; -} - -declare var HTMLBRElement: { - prototype: HTMLBRElement; - new(): HTMLBRElement; -} - -interface HTMLBaseElement extends HTMLElement { - /** - * Gets or sets the baseline URL on which relative links are based. - */ - href: string; - /** - * Sets or retrieves the window or frame at which to target content. - */ - target: string; -} - -declare var HTMLBaseElement: { - prototype: HTMLBaseElement; - new(): HTMLBaseElement; -} - -interface HTMLBaseFontElement extends HTMLElement, DOML2DeprecatedColorProperty { - /** - * Sets or retrieves the current typeface family. - */ - face: string; - /** - * Sets or retrieves the font size of the object. - */ - size: number; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var HTMLBaseFontElement: { - prototype: HTMLBaseFontElement; - new(): HTMLBaseFontElement; -} - -interface HTMLBlockElement extends HTMLElement { - /** - * Sets or retrieves reference information about the object. - */ - cite: string; - clear: string; - /** - * Sets or retrieves the width of the object. - */ - width: number; -} - -declare var HTMLBlockElement: { - prototype: HTMLBlockElement; - new(): HTMLBlockElement; -} - -interface HTMLBodyElement extends HTMLElement { - aLink: any; - background: string; - bgColor: any; - bgProperties: string; - link: any; - noWrap: boolean; - onafterprint: (ev: Event) => any; - onbeforeprint: (ev: Event) => any; - onbeforeunload: (ev: BeforeUnloadEvent) => any; - onblur: (ev: FocusEvent) => any; - onerror: (ev: Event) => any; - onfocus: (ev: FocusEvent) => any; - onhashchange: (ev: HashChangeEvent) => any; - onload: (ev: Event) => any; - onmessage: (ev: MessageEvent) => any; - onoffline: (ev: Event) => any; - ononline: (ev: Event) => any; - onorientationchange: (ev: Event) => any; - onpagehide: (ev: PageTransitionEvent) => any; - onpageshow: (ev: PageTransitionEvent) => any; - onpopstate: (ev: PopStateEvent) => any; - onresize: (ev: UIEvent) => any; - onstorage: (ev: StorageEvent) => any; - onunload: (ev: Event) => any; - text: any; - vLink: any; - createTextRange(): TextRange; - addEventListener(type: "MSContentZoom", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureDoubleTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureEnd", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureHold", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGotPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSInertiaStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSLostPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSManipulationStateChanged", listener: (ev: MSManipulationEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerCancel", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerDown", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerEnter", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerLeave", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerMove", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerOut", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerOver", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerUp", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "abort", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "activate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "afterprint", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecopy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforedeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforepaste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforeprint", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "beforeunload", listener: (ev: BeforeUnloadEvent) => any, useCapture?: boolean): void; - addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; - addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; - addEventListener(type: "canplay", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "canplaythrough", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "change", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void; - addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "copy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "cuechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "cut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "deactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragend", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragenter", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragleave", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragover", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragstart", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; - addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; - addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; - addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; - addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "hashchange", listener: (ev: HashChangeEvent) => any, useCapture?: boolean): void; - addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; - addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; - addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; - addEventListener(type: "load", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "load", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "loadeddata", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "loadedmetadata", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "loadstart", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "lostpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "message", listener: (ev: MessageEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousedown", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseenter", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseleave", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousemove", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; - addEventListener(type: "offline", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "online", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "orientationchange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "pagehide", listener: (ev: PageTransitionEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pageshow", listener: (ev: PageTransitionEvent) => any, useCapture?: boolean): void; - addEventListener(type: "paste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "pointercancel", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerdown", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerenter", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerleave", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointermove", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerout", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerover", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerup", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "popstate", listener: (ev: PopStateEvent) => any, useCapture?: boolean): void; - addEventListener(type: "progress", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void; - addEventListener(type: "ratechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "reset", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "resize", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "scroll", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "seeked", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "seeking", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "select", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "selectstart", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "stalled", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "storage", listener: (ev: StorageEvent) => any, useCapture?: boolean): void; - addEventListener(type: "submit", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "suspend", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "timeupdate", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "touchcancel", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchend", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchmove", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchstart", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "unload", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "volumechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "waiting", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "webkitfullscreenchange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "webkitfullscreenerror", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "wheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var HTMLBodyElement: { - prototype: HTMLBodyElement; - new(): HTMLBodyElement; -} - -interface HTMLButtonElement extends HTMLElement { - /** - * Provides a way to direct a user to a specific field when a document loads. This can provide both direction and convenience for a user, reducing the need to click or tab to a field when a page opens. This attribute is true when present on an element, and false when missing. - */ - autofocus: boolean; - disabled: boolean; - /** - * Retrieves a reference to the form that the object is embedded in. - */ - form: HTMLFormElement; - /** - * Overrides the action attribute (where the data on a form is sent) on the parent form element. - */ - formAction: string; - /** - * Used to override the encoding (formEnctype attribute) specified on the form element. - */ - formEnctype: string; - /** - * Overrides the submit method attribute previously specified on a form element. - */ - formMethod: string; - /** - * Overrides any validation or required attributes on a form or form elements to allow it to be submitted without validation. This can be used to create a "save draft"-type submit option. - */ - formNoValidate: string; - /** - * Overrides the target attribute on a form element. - */ - formTarget: string; - /** - * Sets or retrieves the name of the object. - */ - name: string; - status: any; - /** - * Gets the classification and default behavior of the button. - */ - type: string; - /** - * Returns the error message that would be displayed if the user submits the form, or an empty string if no error message. It also triggers the standard error message, such as "this is a required field". The result is that the user sees validation messages without actually submitting. - */ - validationMessage: string; - /** - * Returns a ValidityState object that represents the validity states of an element. - */ - validity: ValidityState; - /** - * Sets or retrieves the default or selected value of the control. - */ - value: string; - /** - * Returns whether an element will successfully validate based on forms validation rules and constraints. - */ - willValidate: boolean; - /** - * Returns whether a form will validate when it is submitted, without having to submit it. - */ - checkValidity(): boolean; - /** - * Creates a TextRange object for the element. - */ - createTextRange(): TextRange; - /** - * Sets a custom error message that is displayed when a form is submitted. - * @param error Sets a custom error message that is displayed when a form is submitted. - */ - setCustomValidity(error: string): void; -} - -declare var HTMLButtonElement: { - prototype: HTMLButtonElement; - new(): HTMLButtonElement; -} - -interface HTMLCanvasElement extends HTMLElement { - /** - * Gets or sets the height of a canvas element on a document. - */ - height: number; - /** - * Gets or sets the width of a canvas element on a document. - */ - width: number; - /** - * Returns an object that provides methods and properties for drawing and manipulating images and graphics on a canvas element in a document. A context object includes information about colors, line widths, fonts, and other graphic parameters that can be drawn on a canvas. - * @param contextId The identifier (ID) of the type of canvas to create. Internet Explorer 9 and Internet Explorer 10 support only a 2-D context using canvas.getContext("2d"); IE11 Preview also supports 3-D or WebGL context using canvas.getContext("experimental-webgl"); - */ - getContext(contextId: "2d"): CanvasRenderingContext2D; - getContext(contextId: "experimental-webgl"): WebGLRenderingContext; - getContext(contextId: string, ...args: any[]): CanvasRenderingContext2D | WebGLRenderingContext; - /** - * Returns a blob object encoded as a Portable Network Graphics (PNG) format from a canvas image or drawing. - */ - msToBlob(): Blob; - /** - * Returns the content of the current canvas as an image that you can use as a source for another canvas or an HTML element. - * @param type The standard MIME type for the image format to return. If you do not specify this parameter, the default value is a PNG format image. - */ - toDataURL(type?: string, ...args: any[]): string; - toBlob(): Blob; -} - -declare var HTMLCanvasElement: { - prototype: HTMLCanvasElement; - new(): HTMLCanvasElement; -} - -interface HTMLCollection { - /** - * Sets or retrieves the number of objects in a collection. - */ - length: number; - /** - * Retrieves an object from various collections. - */ - item(nameOrIndex?: any, optionalIndex?: any): Element; - /** - * Retrieves a select object or an object from an options collection. - */ - namedItem(name: string): Element; - [index: number]: Element; -} - -declare var HTMLCollection: { - prototype: HTMLCollection; - new(): HTMLCollection; -} - -interface HTMLDDElement extends HTMLElement { - /** - * Sets or retrieves whether the browser automatically performs wordwrap. - */ - noWrap: boolean; -} - -declare var HTMLDDElement: { - prototype: HTMLDDElement; - new(): HTMLDDElement; -} - -interface HTMLDListElement extends HTMLElement { - compact: boolean; -} - -declare var HTMLDListElement: { - prototype: HTMLDListElement; - new(): HTMLDListElement; -} - -interface HTMLDTElement extends HTMLElement { - /** - * Sets or retrieves whether the browser automatically performs wordwrap. - */ - noWrap: boolean; -} - -declare var HTMLDTElement: { - prototype: HTMLDTElement; - new(): HTMLDTElement; -} - -interface HTMLDataListElement extends HTMLElement { - options: HTMLCollection; -} - -declare var HTMLDataListElement: { - prototype: HTMLDataListElement; - new(): HTMLDataListElement; -} - -interface HTMLDirectoryElement extends HTMLElement { - compact: boolean; -} - -declare var HTMLDirectoryElement: { - prototype: HTMLDirectoryElement; - new(): HTMLDirectoryElement; -} - -interface HTMLDivElement extends HTMLElement { - /** - * Sets or retrieves how the object is aligned with adjacent text. - */ - align: string; - /** - * Sets or retrieves whether the browser automatically performs wordwrap. - */ - noWrap: boolean; -} - -declare var HTMLDivElement: { - prototype: HTMLDivElement; - new(): HTMLDivElement; -} - -interface HTMLDocument extends Document { -} - -declare var HTMLDocument: { - prototype: HTMLDocument; - new(): HTMLDocument; -} - -interface HTMLElement extends Element { - accessKey: string; - children: HTMLCollection; - contentEditable: string; - dataset: DOMStringMap; - dir: string; - draggable: boolean; - hidden: boolean; - hideFocus: boolean; - innerHTML: string; - innerText: string; - isContentEditable: boolean; - lang: string; - offsetHeight: number; - offsetLeft: number; - offsetParent: Element; - offsetTop: number; - offsetWidth: number; - onabort: (ev: Event) => any; - onactivate: (ev: UIEvent) => any; - onbeforeactivate: (ev: UIEvent) => any; - onbeforecopy: (ev: DragEvent) => any; - onbeforecut: (ev: DragEvent) => any; - onbeforedeactivate: (ev: UIEvent) => any; - onbeforepaste: (ev: DragEvent) => any; - onblur: (ev: FocusEvent) => any; - oncanplay: (ev: Event) => any; - oncanplaythrough: (ev: Event) => any; - onchange: (ev: Event) => any; - onclick: (ev: MouseEvent) => any; - oncontextmenu: (ev: PointerEvent) => any; - oncopy: (ev: DragEvent) => any; - oncuechange: (ev: Event) => any; - oncut: (ev: DragEvent) => any; - ondblclick: (ev: MouseEvent) => any; - ondeactivate: (ev: UIEvent) => any; - ondrag: (ev: DragEvent) => any; - ondragend: (ev: DragEvent) => any; - ondragenter: (ev: DragEvent) => any; - ondragleave: (ev: DragEvent) => any; - ondragover: (ev: DragEvent) => any; - ondragstart: (ev: DragEvent) => any; - ondrop: (ev: DragEvent) => any; - ondurationchange: (ev: Event) => any; - onemptied: (ev: Event) => any; - onended: (ev: Event) => any; - onerror: (ev: Event) => any; - onfocus: (ev: FocusEvent) => any; - oninput: (ev: Event) => any; - onkeydown: (ev: KeyboardEvent) => any; - onkeypress: (ev: KeyboardEvent) => any; - onkeyup: (ev: KeyboardEvent) => any; - onload: (ev: Event) => any; - onloadeddata: (ev: Event) => any; - onloadedmetadata: (ev: Event) => any; - onloadstart: (ev: Event) => any; - onmousedown: (ev: MouseEvent) => any; - onmouseenter: (ev: MouseEvent) => any; - onmouseleave: (ev: MouseEvent) => any; - onmousemove: (ev: MouseEvent) => any; - onmouseout: (ev: MouseEvent) => any; - onmouseover: (ev: MouseEvent) => any; - onmouseup: (ev: MouseEvent) => any; - onmousewheel: (ev: MouseWheelEvent) => any; - onmscontentzoom: (ev: UIEvent) => any; - onmsmanipulationstatechanged: (ev: MSManipulationEvent) => any; - onpaste: (ev: DragEvent) => any; - onpause: (ev: Event) => any; - onplay: (ev: Event) => any; - onplaying: (ev: Event) => any; - onprogress: (ev: ProgressEvent) => any; - onratechange: (ev: Event) => any; - onreset: (ev: Event) => any; - onscroll: (ev: UIEvent) => any; - onseeked: (ev: Event) => any; - onseeking: (ev: Event) => any; - onselect: (ev: UIEvent) => any; - onselectstart: (ev: Event) => any; - onstalled: (ev: Event) => any; - onsubmit: (ev: Event) => any; - onsuspend: (ev: Event) => any; - ontimeupdate: (ev: Event) => any; - onvolumechange: (ev: Event) => any; - onwaiting: (ev: Event) => any; - outerHTML: string; - outerText: string; - spellcheck: boolean; - style: CSSStyleDeclaration; - tabIndex: number; - title: string; - blur(): void; - click(): void; - dragDrop(): boolean; - focus(): void; - insertAdjacentElement(position: string, insertedElement: Element): Element; - insertAdjacentHTML(where: string, html: string): void; - insertAdjacentText(where: string, text: string): void; - msGetInputContext(): MSInputMethodContext; - scrollIntoView(top?: boolean): void; - setActive(): void; - addEventListener(type: "MSContentZoom", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureDoubleTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureEnd", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureHold", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGotPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSInertiaStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSLostPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSManipulationStateChanged", listener: (ev: MSManipulationEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerCancel", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerDown", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerEnter", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerLeave", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerMove", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerOut", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerOver", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerUp", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "abort", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "activate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecopy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforedeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforepaste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; - addEventListener(type: "canplay", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "canplaythrough", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "change", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void; - addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "copy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "cuechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "cut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "deactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragend", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragenter", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragleave", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragover", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragstart", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; - addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; - addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; - addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; - addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; - addEventListener(type: "load", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "loadeddata", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "loadedmetadata", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "loadstart", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "lostpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousedown", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseenter", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseleave", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousemove", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; - addEventListener(type: "paste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "pointercancel", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerdown", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerenter", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerleave", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointermove", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerout", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerover", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerup", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "progress", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void; - addEventListener(type: "ratechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "reset", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "scroll", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "seeked", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "seeking", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "select", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "selectstart", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "stalled", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "submit", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "suspend", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "timeupdate", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "touchcancel", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchend", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchmove", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchstart", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "volumechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "waiting", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "webkitfullscreenchange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "webkitfullscreenerror", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "wheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var HTMLElement: { - prototype: HTMLElement; - new(): HTMLElement; -} - -interface HTMLEmbedElement extends HTMLElement, GetSVGDocument { - /** - * Sets or retrieves the height of the object. - */ - height: string; - hidden: any; - /** - * Gets or sets whether the DLNA PlayTo device is available. - */ - msPlayToDisabled: boolean; - /** - * Gets or sets the path to the preferred media source. This enables the Play To target device to stream the media content, which can be DRM protected, from a different location, such as a cloud media server. - */ - msPlayToPreferredSourceUri: string; - /** - * Gets or sets the primary DLNA PlayTo device. - */ - msPlayToPrimary: boolean; - /** - * Gets the source associated with the media element for use by the PlayToManager. - */ - msPlayToSource: any; - /** - * Sets or retrieves the name of the object. - */ - name: string; - /** - * Retrieves the palette used for the embedded document. - */ - palette: string; - /** - * Retrieves the URL of the plug-in used to view an embedded document. - */ - pluginspage: string; - readyState: string; - /** - * Sets or retrieves a URL to be loaded by the object. - */ - src: string; - /** - * Sets or retrieves the height and width units of the embed object. - */ - units: string; - /** - * Sets or retrieves the width of the object. - */ - width: string; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var HTMLEmbedElement: { - prototype: HTMLEmbedElement; - new(): HTMLEmbedElement; -} - -interface HTMLFieldSetElement extends HTMLElement { - /** - * Sets or retrieves how the object is aligned with adjacent text. - */ - align: string; - disabled: boolean; - /** - * Retrieves a reference to the form that the object is embedded in. - */ - form: HTMLFormElement; - /** - * Returns the error message that would be displayed if the user submits the form, or an empty string if no error message. It also triggers the standard error message, such as "this is a required field". The result is that the user sees validation messages without actually submitting. - */ - validationMessage: string; - /** - * Returns a ValidityState object that represents the validity states of an element. - */ - validity: ValidityState; - /** - * Returns whether an element will successfully validate based on forms validation rules and constraints. - */ - willValidate: boolean; - /** - * Returns whether a form will validate when it is submitted, without having to submit it. - */ - checkValidity(): boolean; - /** - * Sets a custom error message that is displayed when a form is submitted. - * @param error Sets a custom error message that is displayed when a form is submitted. - */ - setCustomValidity(error: string): void; -} - -declare var HTMLFieldSetElement: { - prototype: HTMLFieldSetElement; - new(): HTMLFieldSetElement; -} - -interface HTMLFontElement extends HTMLElement, DOML2DeprecatedColorProperty, DOML2DeprecatedSizeProperty { - /** - * Sets or retrieves the current typeface family. - */ - face: string; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var HTMLFontElement: { - prototype: HTMLFontElement; - new(): HTMLFontElement; -} - -interface HTMLFormElement extends HTMLElement { - /** - * Sets or retrieves a list of character encodings for input data that must be accepted by the server processing the form. - */ - acceptCharset: string; - /** - * Sets or retrieves the URL to which the form content is sent for processing. - */ - action: string; - /** - * Specifies whether autocomplete is applied to an editable text field. - */ - autocomplete: string; - /** - * Retrieves a collection, in source order, of all controls in a given form. - */ - elements: HTMLCollection; - /** - * Sets or retrieves the MIME encoding for the form. - */ - encoding: string; - /** - * Sets or retrieves the encoding type for the form. - */ - enctype: string; - /** - * Sets or retrieves the number of objects in a collection. - */ - length: number; - /** - * Sets or retrieves how to send the form data to the server. - */ - method: string; - /** - * Sets or retrieves the name of the object. - */ - name: string; - /** - * Designates a form that is not validated when submitted. - */ - noValidate: boolean; - /** - * Sets or retrieves the window or frame at which to target content. - */ - target: string; - /** - * Returns whether a form will validate when it is submitted, without having to submit it. - */ - checkValidity(): boolean; - /** - * Retrieves a form object or an object from an elements collection. - * @param name Variant of type Number or String that specifies the object or collection to retrieve. If this parameter is a Number, it is the zero-based index of the object. If this parameter is a string, all objects with matching name or id properties are retrieved, and a collection is returned if more than one match is made. - * @param index Variant of type Number that specifies the zero-based index of the object to retrieve when a collection is returned. - */ - item(name?: any, index?: any): any; - /** - * Retrieves a form object or an object from an elements collection. - */ - namedItem(name: string): any; - /** - * Fires when the user resets a form. - */ - reset(): void; - /** - * Fires when a FORM is about to be submitted. - */ - submit(): void; - [name: string]: any; -} - -declare var HTMLFormElement: { - prototype: HTMLFormElement; - new(): HTMLFormElement; -} - -interface HTMLFrameElement extends HTMLElement, GetSVGDocument { - /** - * Specifies the properties of a border drawn around an object. - */ - border: string; - /** - * Sets or retrieves the border color of the object. - */ - borderColor: any; - /** - * Retrieves the document object of the page or frame. - */ - contentDocument: Document; - /** - * Retrieves the object of the specified. - */ - contentWindow: Window; - /** - * Sets or retrieves whether to display a border for the frame. - */ - frameBorder: string; - /** - * Sets or retrieves the amount of additional space between the frames. - */ - frameSpacing: any; - /** - * Sets or retrieves the height of the object. - */ - height: string | number; - /** - * Sets or retrieves a URI to a long description of the object. - */ - longDesc: string; - /** - * Sets or retrieves the top and bottom margin heights before displaying the text in a frame. - */ - marginHeight: string; - /** - * Sets or retrieves the left and right margin widths before displaying the text in a frame. - */ - marginWidth: string; - /** - * Sets or retrieves the frame name. - */ - name: string; - /** - * Sets or retrieves whether the user can resize the frame. - */ - noResize: boolean; - /** - * Raised when the object has been completely received from the server. - */ - onload: (ev: Event) => any; - /** - * Sets or retrieves whether the frame can be scrolled. - */ - scrolling: string; - /** - * Sets the value indicating whether the source file of a frame or iframe has specific security restrictions applied. - */ - security: any; - /** - * Sets or retrieves a URL to be loaded by the object. - */ - src: string; - /** - * Sets or retrieves the width of the object. - */ - width: string | number; - addEventListener(type: "MSContentZoom", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureDoubleTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureEnd", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureHold", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGotPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSInertiaStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSLostPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSManipulationStateChanged", listener: (ev: MSManipulationEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerCancel", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerDown", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerEnter", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerLeave", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerMove", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerOut", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerOver", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerUp", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "abort", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "activate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecopy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforedeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforepaste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; - addEventListener(type: "canplay", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "canplaythrough", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "change", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void; - addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "copy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "cuechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "cut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "deactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragend", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragenter", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragleave", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragover", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragstart", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; - addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; - addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; - addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; - addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; - addEventListener(type: "load", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "load", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "loadeddata", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "loadedmetadata", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "loadstart", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "lostpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousedown", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseenter", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseleave", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousemove", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; - addEventListener(type: "paste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "pointercancel", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerdown", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerenter", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerleave", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointermove", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerout", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerover", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerup", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "progress", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void; - addEventListener(type: "ratechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "reset", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "scroll", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "seeked", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "seeking", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "select", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "selectstart", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "stalled", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "submit", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "suspend", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "timeupdate", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "touchcancel", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchend", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchmove", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchstart", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "volumechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "waiting", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "webkitfullscreenchange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "webkitfullscreenerror", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "wheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var HTMLFrameElement: { - prototype: HTMLFrameElement; - new(): HTMLFrameElement; -} - -interface HTMLFrameSetElement extends HTMLElement { - border: string; - /** - * Sets or retrieves the border color of the object. - */ - borderColor: any; - /** - * Sets or retrieves the frame widths of the object. - */ - cols: string; - /** - * Sets or retrieves whether to display a border for the frame. - */ - frameBorder: string; - /** - * Sets or retrieves the amount of additional space between the frames. - */ - frameSpacing: any; - name: string; - onafterprint: (ev: Event) => any; - onbeforeprint: (ev: Event) => any; - onbeforeunload: (ev: BeforeUnloadEvent) => any; - /** - * Fires when the object loses the input focus. - */ - onblur: (ev: FocusEvent) => any; - onerror: (ev: Event) => any; - /** - * Fires when the object receives focus. - */ - onfocus: (ev: FocusEvent) => any; - onhashchange: (ev: HashChangeEvent) => any; - onload: (ev: Event) => any; - onmessage: (ev: MessageEvent) => any; - onoffline: (ev: Event) => any; - ononline: (ev: Event) => any; - onorientationchange: (ev: Event) => any; - onpagehide: (ev: PageTransitionEvent) => any; - onpageshow: (ev: PageTransitionEvent) => any; - onresize: (ev: UIEvent) => any; - onstorage: (ev: StorageEvent) => any; - onunload: (ev: Event) => any; - /** - * Sets or retrieves the frame heights of the object. - */ - rows: string; - addEventListener(type: "MSContentZoom", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureDoubleTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureEnd", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureHold", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGotPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSInertiaStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSLostPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSManipulationStateChanged", listener: (ev: MSManipulationEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerCancel", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerDown", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerEnter", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerLeave", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerMove", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerOut", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerOver", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerUp", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "abort", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "activate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecopy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforedeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforepaste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforeprint", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "beforeunload", listener: (ev: BeforeUnloadEvent) => any, useCapture?: boolean): void; - addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; - addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; - addEventListener(type: "canplay", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "canplaythrough", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "change", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void; - addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "copy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "cuechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "cut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "deactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragend", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragenter", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragleave", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragover", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragstart", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; - addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; - addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; - addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; - addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "hashchange", listener: (ev: HashChangeEvent) => any, useCapture?: boolean): void; - addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; - addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; - addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; - addEventListener(type: "load", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "load", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "loadeddata", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "loadedmetadata", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "loadstart", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "lostpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "message", listener: (ev: MessageEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousedown", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseenter", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseleave", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousemove", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; - addEventListener(type: "offline", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "online", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "orientationchange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "pagehide", listener: (ev: PageTransitionEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pageshow", listener: (ev: PageTransitionEvent) => any, useCapture?: boolean): void; - addEventListener(type: "paste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "pointercancel", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerdown", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerenter", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerleave", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointermove", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerout", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerover", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerup", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "progress", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void; - addEventListener(type: "ratechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "reset", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "resize", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "scroll", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "seeked", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "seeking", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "select", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "selectstart", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "stalled", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "storage", listener: (ev: StorageEvent) => any, useCapture?: boolean): void; - addEventListener(type: "submit", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "suspend", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "timeupdate", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "touchcancel", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchend", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchmove", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchstart", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "unload", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "volumechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "waiting", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "webkitfullscreenchange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "webkitfullscreenerror", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "wheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var HTMLFrameSetElement: { - prototype: HTMLFrameSetElement; - new(): HTMLFrameSetElement; -} - -interface HTMLHRElement extends HTMLElement, DOML2DeprecatedColorProperty, DOML2DeprecatedSizeProperty { - /** - * Sets or retrieves how the object is aligned with adjacent text. - */ - align: string; - /** - * Sets or retrieves whether the horizontal rule is drawn with 3-D shading. - */ - noShade: boolean; - /** - * Sets or retrieves the width of the object. - */ - width: number; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var HTMLHRElement: { - prototype: HTMLHRElement; - new(): HTMLHRElement; -} - -interface HTMLHeadElement extends HTMLElement { - profile: string; -} - -declare var HTMLHeadElement: { - prototype: HTMLHeadElement; - new(): HTMLHeadElement; -} - -interface HTMLHeadingElement extends HTMLElement { - /** - * Sets or retrieves a value that indicates the table alignment. - */ - align: string; - clear: string; -} - -declare var HTMLHeadingElement: { - prototype: HTMLHeadingElement; - new(): HTMLHeadingElement; -} - -interface HTMLHtmlElement extends HTMLElement { - /** - * Sets or retrieves the DTD version that governs the current document. - */ - version: string; -} - -declare var HTMLHtmlElement: { - prototype: HTMLHtmlElement; - new(): HTMLHtmlElement; -} - -interface HTMLIFrameElement extends HTMLElement, GetSVGDocument { - /** - * Sets or retrieves how the object is aligned with adjacent text. - */ - align: string; - allowFullscreen: boolean; - /** - * Specifies the properties of a border drawn around an object. - */ - border: string; - /** - * Retrieves the document object of the page or frame. - */ - contentDocument: Document; - /** - * Retrieves the object of the specified. - */ - contentWindow: Window; - /** - * Sets or retrieves whether to display a border for the frame. - */ - frameBorder: string; - /** - * Sets or retrieves the amount of additional space between the frames. - */ - frameSpacing: any; - /** - * Sets or retrieves the height of the object. - */ - height: string; - /** - * Sets or retrieves the horizontal margin for the object. - */ - hspace: number; - /** - * Sets or retrieves a URI to a long description of the object. - */ - longDesc: string; - /** - * Sets or retrieves the top and bottom margin heights before displaying the text in a frame. - */ - marginHeight: string; - /** - * Sets or retrieves the left and right margin widths before displaying the text in a frame. - */ - marginWidth: string; - /** - * Sets or retrieves the frame name. - */ - name: string; - /** - * Sets or retrieves whether the user can resize the frame. - */ - noResize: boolean; - /** - * Raised when the object has been completely received from the server. - */ - onload: (ev: Event) => any; - sandbox: DOMSettableTokenList; - /** - * Sets or retrieves whether the frame can be scrolled. - */ - scrolling: string; - /** - * Sets the value indicating whether the source file of a frame or iframe has specific security restrictions applied. - */ - security: any; - /** - * Sets or retrieves a URL to be loaded by the object. - */ - src: string; - /** - * Sets or retrieves the vertical margin for the object. - */ - vspace: number; - /** - * Sets or retrieves the width of the object. - */ - width: string; - addEventListener(type: "MSContentZoom", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureDoubleTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureEnd", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureHold", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGotPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSInertiaStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSLostPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSManipulationStateChanged", listener: (ev: MSManipulationEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerCancel", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerDown", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerEnter", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerLeave", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerMove", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerOut", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerOver", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerUp", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "abort", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "activate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecopy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforedeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforepaste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; - addEventListener(type: "canplay", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "canplaythrough", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "change", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void; - addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "copy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "cuechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "cut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "deactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragend", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragenter", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragleave", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragover", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragstart", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; - addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; - addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; - addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; - addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; - addEventListener(type: "load", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "load", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "loadeddata", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "loadedmetadata", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "loadstart", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "lostpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousedown", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseenter", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseleave", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousemove", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; - addEventListener(type: "paste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "pointercancel", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerdown", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerenter", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerleave", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointermove", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerout", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerover", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerup", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "progress", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void; - addEventListener(type: "ratechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "reset", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "scroll", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "seeked", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "seeking", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "select", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "selectstart", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "stalled", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "submit", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "suspend", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "timeupdate", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "touchcancel", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchend", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchmove", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchstart", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "volumechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "waiting", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "webkitfullscreenchange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "webkitfullscreenerror", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "wheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var HTMLIFrameElement: { - prototype: HTMLIFrameElement; - new(): HTMLIFrameElement; -} - -interface HTMLImageElement extends HTMLElement { - /** - * Sets or retrieves how the object is aligned with adjacent text. - */ - align: string; - /** - * Sets or retrieves a text alternative to the graphic. - */ - alt: string; - /** - * Specifies the properties of a border drawn around an object. - */ - border: string; - /** - * Retrieves whether the object is fully loaded. - */ - complete: boolean; - crossOrigin: string; - currentSrc: string; - /** - * Sets or retrieves the height of the object. - */ - height: number; - /** - * Sets or retrieves the width of the border to draw around the object. - */ - hspace: number; - /** - * Sets or retrieves whether the image is a server-side image map. - */ - isMap: boolean; - /** - * Sets or retrieves a Uniform Resource Identifier (URI) to a long description of the object. - */ - longDesc: string; - /** - * Gets or sets whether the DLNA PlayTo device is available. - */ - msPlayToDisabled: boolean; - msPlayToPreferredSourceUri: string; - /** - * Gets or sets the primary DLNA PlayTo device. - */ - msPlayToPrimary: boolean; - /** - * Gets the source associated with the media element for use by the PlayToManager. - */ - msPlayToSource: any; - /** - * Sets or retrieves the name of the object. - */ - name: string; - /** - * The original height of the image resource before sizing. - */ - naturalHeight: number; - /** - * The original width of the image resource before sizing. - */ - naturalWidth: number; - /** - * The address or URL of the a media resource that is to be considered. - */ - src: string; - srcset: string; - /** - * Sets or retrieves the URL, often with a bookmark extension (#name), to use as a client-side image map. - */ - useMap: string; - /** - * Sets or retrieves the vertical margin for the object. - */ - vspace: number; - /** - * Sets or retrieves the width of the object. - */ - width: number; - x: number; - y: number; - msGetAsCastingSource(): any; -} - -declare var HTMLImageElement: { - prototype: HTMLImageElement; - new(): HTMLImageElement; - create(): HTMLImageElement; -} - -interface HTMLInputElement extends HTMLElement { - /** - * Sets or retrieves a comma-separated list of content types. - */ - accept: string; - /** - * Sets or retrieves how the object is aligned with adjacent text. - */ - align: string; - /** - * Sets or retrieves a text alternative to the graphic. - */ - alt: string; - /** - * Specifies whether autocomplete is applied to an editable text field. - */ - autocomplete: string; - /** - * Provides a way to direct a user to a specific field when a document loads. This can provide both direction and convenience for a user, reducing the need to click or tab to a field when a page opens. This attribute is true when present on an element, and false when missing. - */ - autofocus: boolean; - /** - * Sets or retrieves the width of the border to draw around the object. - */ - border: string; - /** - * Sets or retrieves the state of the check box or radio button. - */ - checked: boolean; - /** - * Retrieves whether the object is fully loaded. - */ - complete: boolean; - /** - * Sets or retrieves the state of the check box or radio button. - */ - defaultChecked: boolean; - /** - * Sets or retrieves the initial contents of the object. - */ - defaultValue: string; - disabled: boolean; - /** - * Returns a FileList object on a file type input object. - */ - files: FileList; - /** - * Retrieves a reference to the form that the object is embedded in. - */ - form: HTMLFormElement; - /** - * Overrides the action attribute (where the data on a form is sent) on the parent form element. - */ - formAction: string; - /** - * Used to override the encoding (formEnctype attribute) specified on the form element. - */ - formEnctype: string; - /** - * Overrides the submit method attribute previously specified on a form element. - */ - formMethod: string; - /** - * Overrides any validation or required attributes on a form or form elements to allow it to be submitted without validation. This can be used to create a "save draft"-type submit option. - */ - formNoValidate: string; - /** - * Overrides the target attribute on a form element. - */ - formTarget: string; - /** - * Sets or retrieves the height of the object. - */ - height: string; - /** - * Sets or retrieves the width of the border to draw around the object. - */ - hspace: number; - indeterminate: boolean; - /** - * Specifies the ID of a pre-defined datalist of options for an input element. - */ - list: HTMLElement; - /** - * Defines the maximum acceptable value for an input element with type="number".When used with the min and step attributes, lets you control the range and increment (such as only even numbers) that the user can enter into an input field. - */ - max: string; - /** - * Sets or retrieves the maximum number of characters that the user can enter in a text control. - */ - maxLength: number; - /** - * Defines the minimum acceptable value for an input element with type="number". When used with the max and step attributes, lets you control the range and increment (such as even numbers only) that the user can enter into an input field. - */ - min: string; - /** - * Sets or retrieves the Boolean value indicating whether multiple items can be selected from a list. - */ - multiple: boolean; - /** - * Sets or retrieves the name of the object. - */ - name: string; - /** - * Gets or sets a string containing a regular expression that the user's input must match. - */ - pattern: string; - /** - * Gets or sets a text string that is displayed in an input field as a hint or prompt to users as the format or type of information they need to enter.The text appears in an input field until the user puts focus on the field. - */ - placeholder: string; - readOnly: boolean; - /** - * When present, marks an element that can't be submitted without a value. - */ - required: boolean; - /** - * Gets or sets the end position or offset of a text selection. - */ - selectionEnd: number; - /** - * Gets or sets the starting position or offset of a text selection. - */ - selectionStart: number; - size: number; - /** - * The address or URL of the a media resource that is to be considered. - */ - src: string; - status: boolean; - /** - * Defines an increment or jump between values that you want to allow the user to enter. When used with the max and min attributes, lets you control the range and increment (for example, allow only even numbers) that the user can enter into an input field. - */ - step: string; - /** - * Returns the content type of the object. - */ - type: string; - /** - * Sets or retrieves the URL, often with a bookmark extension (#name), to use as a client-side image map. - */ - useMap: string; - /** - * Returns the error message that would be displayed if the user submits the form, or an empty string if no error message. It also triggers the standard error message, such as "this is a required field". The result is that the user sees validation messages without actually submitting. - */ - validationMessage: string; - /** - * Returns a ValidityState object that represents the validity states of an element. - */ - validity: ValidityState; - /** - * Returns the value of the data at the cursor's current position. - */ - value: string; - valueAsDate: Date; - /** - * Returns the input field value as a number. - */ - valueAsNumber: number; - /** - * Sets or retrieves the vertical margin for the object. - */ - vspace: number; - /** - * Sets or retrieves the width of the object. - */ - width: string; - /** - * Returns whether an element will successfully validate based on forms validation rules and constraints. - */ - willValidate: boolean; - /** - * Returns whether a form will validate when it is submitted, without having to submit it. - */ - checkValidity(): boolean; - /** - * Creates a TextRange object for the element. - */ - createTextRange(): TextRange; - /** - * Makes the selection equal to the current object. - */ - select(): void; - /** - * Sets a custom error message that is displayed when a form is submitted. - * @param error Sets a custom error message that is displayed when a form is submitted. - */ - setCustomValidity(error: string): void; - /** - * Sets the start and end positions of a selection in a text field. - * @param start The offset into the text field for the start of the selection. - * @param end The offset into the text field for the end of the selection. - */ - setSelectionRange(start: number, end: number): void; - /** - * Decrements a range input control's value by the value given by the Step attribute. If the optional parameter is used, it will decrement the input control's step value multiplied by the parameter's value. - * @param n Value to decrement the value by. - */ - stepDown(n?: number): void; - /** - * Increments a range input control's value by the value given by the Step attribute. If the optional parameter is used, will increment the input control's value by that value. - * @param n Value to increment the value by. - */ - stepUp(n?: number): void; -} - -declare var HTMLInputElement: { - prototype: HTMLInputElement; - new(): HTMLInputElement; -} - -interface HTMLIsIndexElement extends HTMLElement { - /** - * Sets or retrieves the URL to which the form content is sent for processing. - */ - action: string; - /** - * Retrieves a reference to the form that the object is embedded in. - */ - form: HTMLFormElement; - prompt: string; -} - -declare var HTMLIsIndexElement: { - prototype: HTMLIsIndexElement; - new(): HTMLIsIndexElement; -} - -interface HTMLLIElement extends HTMLElement { - type: string; - /** - * Sets or retrieves the value of a list item. - */ - value: number; -} - -declare var HTMLLIElement: { - prototype: HTMLLIElement; - new(): HTMLLIElement; -} - -interface HTMLLabelElement extends HTMLElement { - /** - * Retrieves a reference to the form that the object is embedded in. - */ - form: HTMLFormElement; - /** - * Sets or retrieves the object to which the given label object is assigned. - */ - htmlFor: string; -} - -declare var HTMLLabelElement: { - prototype: HTMLLabelElement; - new(): HTMLLabelElement; -} - -interface HTMLLegendElement extends HTMLElement { - /** - * Retrieves a reference to the form that the object is embedded in. - */ - align: string; - /** - * Retrieves a reference to the form that the object is embedded in. - */ - form: HTMLFormElement; -} - -declare var HTMLLegendElement: { - prototype: HTMLLegendElement; - new(): HTMLLegendElement; -} - -interface HTMLLinkElement extends HTMLElement, LinkStyle { - /** - * Sets or retrieves the character set used to encode the object. - */ - charset: string; - disabled: boolean; - /** - * Sets or retrieves a destination URL or an anchor point. - */ - href: string; - /** - * Sets or retrieves the language code of the object. - */ - hreflang: string; - /** - * Sets or retrieves the media type. - */ - media: string; - /** - * Sets or retrieves the relationship between the object and the destination of the link. - */ - rel: string; - /** - * Sets or retrieves the relationship between the object and the destination of the link. - */ - rev: string; - /** - * Sets or retrieves the window or frame at which to target content. - */ - target: string; - /** - * Sets or retrieves the MIME type of the object. - */ - type: string; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var HTMLLinkElement: { - prototype: HTMLLinkElement; - new(): HTMLLinkElement; -} - -interface HTMLMapElement extends HTMLElement { - /** - * Retrieves a collection of the area objects defined for the given map object. - */ - areas: HTMLAreasCollection; - /** - * Sets or retrieves the name of the object. - */ - name: string; -} - -declare var HTMLMapElement: { - prototype: HTMLMapElement; - new(): HTMLMapElement; -} - -interface HTMLMarqueeElement extends HTMLElement { - behavior: string; - bgColor: any; - direction: string; - height: string; - hspace: number; - loop: number; - onbounce: (ev: Event) => any; - onfinish: (ev: Event) => any; - onstart: (ev: Event) => any; - scrollAmount: number; - scrollDelay: number; - trueSpeed: boolean; - vspace: number; - width: string; - start(): void; - stop(): void; - addEventListener(type: "MSContentZoom", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureDoubleTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureEnd", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureHold", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGotPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSInertiaStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSLostPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSManipulationStateChanged", listener: (ev: MSManipulationEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerCancel", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerDown", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerEnter", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerLeave", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerMove", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerOut", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerOver", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerUp", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "abort", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "activate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecopy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforedeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforepaste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; - addEventListener(type: "bounce", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "canplay", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "canplaythrough", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "change", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void; - addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "copy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "cuechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "cut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "deactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragend", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragenter", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragleave", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragover", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragstart", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; - addEventListener(type: "finish", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; - addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; - addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; - addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; - addEventListener(type: "load", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "loadeddata", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "loadedmetadata", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "loadstart", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "lostpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousedown", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseenter", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseleave", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousemove", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; - addEventListener(type: "paste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "pointercancel", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerdown", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerenter", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerleave", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointermove", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerout", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerover", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerup", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "progress", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void; - addEventListener(type: "ratechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "reset", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "scroll", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "seeked", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "seeking", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "select", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "selectstart", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "stalled", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "start", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "submit", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "suspend", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "timeupdate", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "touchcancel", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchend", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchmove", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchstart", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "volumechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "waiting", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "webkitfullscreenchange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "webkitfullscreenerror", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "wheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var HTMLMarqueeElement: { - prototype: HTMLMarqueeElement; - new(): HTMLMarqueeElement; -} - -interface HTMLMediaElement extends HTMLElement { - /** - * Returns an AudioTrackList object with the audio tracks for a given video element. - */ - audioTracks: AudioTrackList; - /** - * Gets or sets a value that indicates whether to start playing the media automatically. - */ - autoplay: boolean; - /** - * Gets a collection of buffered time ranges. - */ - buffered: TimeRanges; - /** - * Gets or sets a flag that indicates whether the client provides a set of controls for the media (in case the developer does not include controls for the player). - */ - controls: boolean; - /** - * Gets the address or URL of the current media resource that is selected by IHTMLMediaElement. - */ - currentSrc: string; - /** - * Gets or sets the current playback position, in seconds. - */ - currentTime: number; - defaultMuted: boolean; - /** - * Gets or sets the default playback rate when the user is not using fast forward or reverse for a video or audio resource. - */ - defaultPlaybackRate: number; - /** - * Returns the duration in seconds of the current media resource. A NaN value is returned if duration is not available, or Infinity if the media resource is streaming. - */ - duration: number; - /** - * Gets information about whether the playback has ended or not. - */ - ended: boolean; - /** - * Returns an object representing the current error state of the audio or video element. - */ - error: MediaError; - /** - * Gets or sets a flag to specify whether playback should restart after it completes. - */ - loop: boolean; - /** - * Specifies the purpose of the audio or video media, such as background audio or alerts. - */ - msAudioCategory: string; - /** - * Specifies the output device id that the audio will be sent to. - */ - msAudioDeviceType: string; - msGraphicsTrustStatus: MSGraphicsTrust; - /** - * Gets the MSMediaKeys object, which is used for decrypting media data, that is associated with this media element. - */ - msKeys: MSMediaKeys; - /** - * Gets or sets whether the DLNA PlayTo device is available. - */ - msPlayToDisabled: boolean; - /** - * Gets or sets the path to the preferred media source. This enables the Play To target device to stream the media content, which can be DRM protected, from a different location, such as a cloud media server. - */ - msPlayToPreferredSourceUri: string; - /** - * Gets or sets the primary DLNA PlayTo device. - */ - msPlayToPrimary: boolean; - /** - * Gets the source associated with the media element for use by the PlayToManager. - */ - msPlayToSource: any; - /** - * Specifies whether or not to enable low-latency playback on the media element. - */ - msRealTime: boolean; - /** - * Gets or sets a flag that indicates whether the audio (either audio or the audio track on video media) is muted. - */ - muted: boolean; - /** - * Gets the current network activity for the element. - */ - networkState: number; - onmsneedkey: (ev: MSMediaKeyNeededEvent) => any; - /** - * Gets a flag that specifies whether playback is paused. - */ - paused: boolean; - /** - * Gets or sets the current rate of speed for the media resource to play. This speed is expressed as a multiple of the normal speed of the media resource. - */ - playbackRate: number; - /** - * Gets TimeRanges for the current media resource that has been played. - */ - played: TimeRanges; - /** - * Gets or sets the current playback position, in seconds. - */ - preload: string; - readyState: number; - /** - * Returns a TimeRanges object that represents the ranges of the current media resource that can be seeked. - */ - seekable: TimeRanges; - /** - * Gets a flag that indicates whether the the client is currently moving to a new playback position in the media resource. - */ - seeking: boolean; - /** - * The address or URL of the a media resource that is to be considered. - */ - src: string; - textTracks: TextTrackList; - videoTracks: VideoTrackList; - /** - * Gets or sets the volume level for audio portions of the media element. - */ - volume: number; - addTextTrack(kind: string, label?: string, language?: string): TextTrack; - /** - * Returns a string that specifies whether the client can play a given media resource type. - */ - canPlayType(type: string): string; - /** - * Fires immediately after the client loads the object. - */ - load(): void; - /** - * Clears all effects from the media pipeline. - */ - msClearEffects(): void; - msGetAsCastingSource(): any; - /** - * Inserts the specified audio effect into media pipeline. - */ - msInsertAudioEffect(activatableClassId: string, effectRequired: boolean, config?: any): void; - msSetMediaKeys(mediaKeys: MSMediaKeys): void; - /** - * Specifies the media protection manager for a given media pipeline. - */ - msSetMediaProtectionManager(mediaProtectionManager?: any): void; - /** - * Pauses the current playback and sets paused to TRUE. This can be used to test whether the media is playing or paused. You can also use the pause or play events to tell whether the media is playing or not. - */ - pause(): void; - /** - * Loads and starts playback of a media resource. - */ - play(): void; - HAVE_CURRENT_DATA: number; - HAVE_ENOUGH_DATA: number; - HAVE_FUTURE_DATA: number; - HAVE_METADATA: number; - HAVE_NOTHING: number; - NETWORK_EMPTY: number; - NETWORK_IDLE: number; - NETWORK_LOADING: number; - NETWORK_NO_SOURCE: number; - addEventListener(type: "MSContentZoom", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureDoubleTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureEnd", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureHold", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGotPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSInertiaStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSLostPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSManipulationStateChanged", listener: (ev: MSManipulationEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerCancel", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerDown", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerEnter", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerLeave", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerMove", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerOut", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerOver", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerUp", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "abort", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "activate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecopy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforedeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforepaste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; - addEventListener(type: "canplay", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "canplaythrough", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "change", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void; - addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "copy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "cuechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "cut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "deactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragend", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragenter", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragleave", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragover", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragstart", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; - addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; - addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; - addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; - addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; - addEventListener(type: "load", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "loadeddata", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "loadedmetadata", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "loadstart", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "lostpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousedown", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseenter", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseleave", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousemove", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; - addEventListener(type: "msneedkey", listener: (ev: MSMediaKeyNeededEvent) => any, useCapture?: boolean): void; - addEventListener(type: "paste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "pointercancel", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerdown", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerenter", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerleave", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointermove", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerout", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerover", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerup", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "progress", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void; - addEventListener(type: "ratechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "reset", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "scroll", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "seeked", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "seeking", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "select", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "selectstart", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "stalled", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "submit", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "suspend", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "timeupdate", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "touchcancel", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchend", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchmove", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchstart", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "volumechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "waiting", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "webkitfullscreenchange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "webkitfullscreenerror", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "wheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var HTMLMediaElement: { - prototype: HTMLMediaElement; - new(): HTMLMediaElement; - HAVE_CURRENT_DATA: number; - HAVE_ENOUGH_DATA: number; - HAVE_FUTURE_DATA: number; - HAVE_METADATA: number; - HAVE_NOTHING: number; - NETWORK_EMPTY: number; - NETWORK_IDLE: number; - NETWORK_LOADING: number; - NETWORK_NO_SOURCE: number; -} - -interface HTMLMenuElement extends HTMLElement { - compact: boolean; - type: string; -} - -declare var HTMLMenuElement: { - prototype: HTMLMenuElement; - new(): HTMLMenuElement; -} - -interface HTMLMetaElement extends HTMLElement { - /** - * Sets or retrieves the character set used to encode the object. - */ - charset: string; - /** - * Gets or sets meta-information to associate with httpEquiv or name. - */ - content: string; - /** - * Gets or sets information used to bind the value of a content attribute of a meta element to an HTTP response header. - */ - httpEquiv: string; - /** - * Sets or retrieves the value specified in the content attribute of the meta object. - */ - name: string; - /** - * Sets or retrieves a scheme to be used in interpreting the value of a property specified for the object. - */ - scheme: string; - /** - * Sets or retrieves the URL property that will be loaded after the specified time has elapsed. - */ - url: string; -} - -declare var HTMLMetaElement: { - prototype: HTMLMetaElement; - new(): HTMLMetaElement; -} - -interface HTMLModElement extends HTMLElement { - /** - * Sets or retrieves reference information about the object. - */ - cite: string; - /** - * Sets or retrieves the date and time of a modification to the object. - */ - dateTime: string; -} - -declare var HTMLModElement: { - prototype: HTMLModElement; - new(): HTMLModElement; -} - -interface HTMLNextIdElement extends HTMLElement { - n: string; -} - -declare var HTMLNextIdElement: { - prototype: HTMLNextIdElement; - new(): HTMLNextIdElement; -} - -interface HTMLOListElement extends HTMLElement { - compact: boolean; - /** - * The starting number. - */ - start: number; - type: string; -} - -declare var HTMLOListElement: { - prototype: HTMLOListElement; - new(): HTMLOListElement; -} - -interface HTMLObjectElement extends HTMLElement, GetSVGDocument { - /** - * Retrieves a string of the URL where the object tag can be found. This is often the href of the document that the object is in, or the value set by a base element. - */ - BaseHref: string; - align: string; - /** - * Sets or retrieves a text alternative to the graphic. - */ - alt: string; - /** - * Gets or sets the optional alternative HTML script to execute if the object fails to load. - */ - altHtml: string; - /** - * Sets or retrieves a character string that can be used to implement your own archive functionality for the object. - */ - archive: string; - border: string; - /** - * Sets or retrieves the URL of the file containing the compiled Java class. - */ - code: string; - /** - * Sets or retrieves the URL of the component. - */ - codeBase: string; - /** - * Sets or retrieves the Internet media type for the code associated with the object. - */ - codeType: string; - /** - * Retrieves the document object of the page or frame. - */ - contentDocument: Document; - /** - * Sets or retrieves the URL that references the data of the object. - */ - data: string; - declare: boolean; - /** - * Retrieves a reference to the form that the object is embedded in. - */ - form: HTMLFormElement; - /** - * Sets or retrieves the height of the object. - */ - height: string; - hspace: number; - /** - * Gets or sets whether the DLNA PlayTo device is available. - */ - msPlayToDisabled: boolean; - /** - * Gets or sets the path to the preferred media source. This enables the Play To target device to stream the media content, which can be DRM protected, from a different location, such as a cloud media server. - */ - msPlayToPreferredSourceUri: string; - /** - * Gets or sets the primary DLNA PlayTo device. - */ - msPlayToPrimary: boolean; - /** - * Gets the source associated with the media element for use by the PlayToManager. - */ - msPlayToSource: any; - /** - * Sets or retrieves the name of the object. - */ - name: string; - /** - * Retrieves the contained object. - */ - object: any; - readyState: number; - /** - * Sets or retrieves a message to be displayed while an object is loading. - */ - standby: string; - /** - * Sets or retrieves the MIME type of the object. - */ - type: string; - /** - * Sets or retrieves the URL, often with a bookmark extension (#name), to use as a client-side image map. - */ - useMap: string; - /** - * Returns the error message that would be displayed if the user submits the form, or an empty string if no error message. It also triggers the standard error message, such as "this is a required field". The result is that the user sees validation messages without actually submitting. - */ - validationMessage: string; - /** - * Returns a ValidityState object that represents the validity states of an element. - */ - validity: ValidityState; - vspace: number; - /** - * Sets or retrieves the width of the object. - */ - width: string; - /** - * Returns whether an element will successfully validate based on forms validation rules and constraints. - */ - willValidate: boolean; - /** - * Returns whether a form will validate when it is submitted, without having to submit it. - */ - checkValidity(): boolean; - /** - * Sets a custom error message that is displayed when a form is submitted. - * @param error Sets a custom error message that is displayed when a form is submitted. - */ - setCustomValidity(error: string): void; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var HTMLObjectElement: { - prototype: HTMLObjectElement; - new(): HTMLObjectElement; -} - -interface HTMLOptGroupElement extends HTMLElement { - /** - * Sets or retrieves the status of an option. - */ - defaultSelected: boolean; - disabled: boolean; - /** - * Retrieves a reference to the form that the object is embedded in. - */ - form: HTMLFormElement; - /** - * Sets or retrieves the ordinal position of an option in a list box. - */ - index: number; - /** - * Sets or retrieves a value that you can use to implement your own label functionality for the object. - */ - label: string; - /** - * Sets or retrieves whether the option in the list box is the default item. - */ - selected: boolean; - /** - * Sets or retrieves the text string specified by the option tag. - */ - text: string; - /** - * Sets or retrieves the value which is returned to the server when the form control is submitted. - */ - value: string; -} - -declare var HTMLOptGroupElement: { - prototype: HTMLOptGroupElement; - new(): HTMLOptGroupElement; -} - -interface HTMLOptionElement extends HTMLElement { - /** - * Sets or retrieves the status of an option. - */ - defaultSelected: boolean; - disabled: boolean; - /** - * Retrieves a reference to the form that the object is embedded in. - */ - form: HTMLFormElement; - /** - * Sets or retrieves the ordinal position of an option in a list box. - */ - index: number; - /** - * Sets or retrieves a value that you can use to implement your own label functionality for the object. - */ - label: string; - /** - * Sets or retrieves whether the option in the list box is the default item. - */ - selected: boolean; - /** - * Sets or retrieves the text string specified by the option tag. - */ - text: string; - /** - * Sets or retrieves the value which is returned to the server when the form control is submitted. - */ - value: string; -} - -declare var HTMLOptionElement: { - prototype: HTMLOptionElement; - new(): HTMLOptionElement; - create(): HTMLOptionElement; -} - -interface HTMLParagraphElement extends HTMLElement { - /** - * Sets or retrieves how the object is aligned with adjacent text. - */ - align: string; - clear: string; -} - -declare var HTMLParagraphElement: { - prototype: HTMLParagraphElement; - new(): HTMLParagraphElement; -} - -interface HTMLParamElement extends HTMLElement { - /** - * Sets or retrieves the name of an input parameter for an element. - */ - name: string; - /** - * Sets or retrieves the content type of the resource designated by the value attribute. - */ - type: string; - /** - * Sets or retrieves the value of an input parameter for an element. - */ - value: string; - /** - * Sets or retrieves the data type of the value attribute. - */ - valueType: string; -} - -declare var HTMLParamElement: { - prototype: HTMLParamElement; - new(): HTMLParamElement; -} - -interface HTMLPhraseElement extends HTMLElement { - /** - * Sets or retrieves reference information about the object. - */ - cite: string; - /** - * Sets or retrieves the date and time of a modification to the object. - */ - dateTime: string; -} - -declare var HTMLPhraseElement: { - prototype: HTMLPhraseElement; - new(): HTMLPhraseElement; -} - -interface HTMLPreElement extends HTMLElement { - /** - * Indicates a citation by rendering text in italic type. - */ - cite: string; - clear: string; - /** - * Sets or gets a value that you can use to implement your own width functionality for the object. - */ - width: number; -} - -declare var HTMLPreElement: { - prototype: HTMLPreElement; - new(): HTMLPreElement; -} - -interface HTMLProgressElement extends HTMLElement { - /** - * Retrieves a reference to the form that the object is embedded in. - */ - form: HTMLFormElement; - /** - * Defines the maximum, or "done" value for a progress element. - */ - max: number; - /** - * Returns the quotient of value/max when the value attribute is set (determinate progress bar), or -1 when the value attribute is missing (indeterminate progress bar). - */ - position: number; - /** - * Sets or gets the current value of a progress element. The value must be a non-negative number between 0 and the max value. - */ - value: number; -} - -declare var HTMLProgressElement: { - prototype: HTMLProgressElement; - new(): HTMLProgressElement; -} - -interface HTMLQuoteElement extends HTMLElement { - /** - * Sets or retrieves reference information about the object. - */ - cite: string; - /** - * Sets or retrieves the date and time of a modification to the object. - */ - dateTime: string; -} - -declare var HTMLQuoteElement: { - prototype: HTMLQuoteElement; - new(): HTMLQuoteElement; -} - -interface HTMLScriptElement extends HTMLElement { - async: boolean; - /** - * Sets or retrieves the character set used to encode the object. - */ - charset: string; - /** - * Sets or retrieves the status of the script. - */ - defer: boolean; - /** - * Sets or retrieves the event for which the script is written. - */ - event: string; - /** - * Sets or retrieves the object that is bound to the event script. - */ - htmlFor: string; - /** - * Retrieves the URL to an external file that contains the source code or data. - */ - src: string; - /** - * Retrieves or sets the text of the object as a string. - */ - text: string; - /** - * Sets or retrieves the MIME type for the associated scripting engine. - */ - type: string; -} - -declare var HTMLScriptElement: { - prototype: HTMLScriptElement; - new(): HTMLScriptElement; -} - -interface HTMLSelectElement extends HTMLElement { - /** - * Provides a way to direct a user to a specific field when a document loads. This can provide both direction and convenience for a user, reducing the need to click or tab to a field when a page opens. This attribute is true when present on an element, and false when missing. - */ - autofocus: boolean; - disabled: boolean; - /** - * Retrieves a reference to the form that the object is embedded in. - */ - form: HTMLFormElement; - /** - * Sets or retrieves the number of objects in a collection. - */ - length: number; - /** - * Sets or retrieves the Boolean value indicating whether multiple items can be selected from a list. - */ - multiple: boolean; - /** - * Sets or retrieves the name of the object. - */ - name: string; - options: HTMLCollection; - /** - * When present, marks an element that can't be submitted without a value. - */ - required: boolean; - /** - * Sets or retrieves the index of the selected option in a select object. - */ - selectedIndex: number; - /** - * Sets or retrieves the number of rows in the list box. - */ - size: number; - /** - * Retrieves the type of select control based on the value of the MULTIPLE attribute. - */ - type: string; - /** - * Returns the error message that would be displayed if the user submits the form, or an empty string if no error message. It also triggers the standard error message, such as "this is a required field". The result is that the user sees validation messages without actually submitting. - */ - validationMessage: string; - /** - * Returns a ValidityState object that represents the validity states of an element. - */ - validity: ValidityState; - /** - * Sets or retrieves the value which is returned to the server when the form control is submitted. - */ - value: string; - /** - * Returns whether an element will successfully validate based on forms validation rules and constraints. - */ - willValidate: boolean; - selectedOptions: HTMLCollection; - /** - * Adds an element to the areas, controlRange, or options collection. - * @param element Variant of type Number that specifies the index position in the collection where the element is placed. If no value is given, the method places the element at the end of the collection. - * @param before Variant of type Object that specifies an element to insert before, or null to append the object to the collection. - */ - add(element: HTMLElement, before?: HTMLElement | number): void; - /** - * Returns whether a form will validate when it is submitted, without having to submit it. - */ - checkValidity(): boolean; - /** - * Retrieves a select object or an object from an options collection. - * @param name Variant of type Number or String that specifies the object or collection to retrieve. If this parameter is an integer, it is the zero-based index of the object. If this parameter is a string, all objects with matching name or id properties are retrieved, and a collection is returned if more than one match is made. - * @param index Variant of type Number that specifies the zero-based index of the object to retrieve when a collection is returned. - */ - item(name?: any, index?: any): any; - /** - * Retrieves a select object or an object from an options collection. - * @param namedItem A String that specifies the name or id property of the object to retrieve. A collection is returned if more than one match is made. - */ - namedItem(name: string): any; - /** - * Removes an element from the collection. - * @param index Number that specifies the zero-based index of the element to remove from the collection. - */ - remove(index?: number): void; - /** - * Sets a custom error message that is displayed when a form is submitted. - * @param error Sets a custom error message that is displayed when a form is submitted. - */ - setCustomValidity(error: string): void; - [name: string]: any; -} - -declare var HTMLSelectElement: { - prototype: HTMLSelectElement; - new(): HTMLSelectElement; -} - -interface HTMLSourceElement extends HTMLElement { - /** - * Gets or sets the intended media type of the media source. - */ - media: string; - msKeySystem: string; - /** - * The address or URL of the a media resource that is to be considered. - */ - src: string; - /** - * Gets or sets the MIME type of a media resource. - */ - type: string; -} - -declare var HTMLSourceElement: { - prototype: HTMLSourceElement; - new(): HTMLSourceElement; -} - -interface HTMLSpanElement extends HTMLElement { -} - -declare var HTMLSpanElement: { - prototype: HTMLSpanElement; - new(): HTMLSpanElement; -} - -interface HTMLStyleElement extends HTMLElement, LinkStyle { - /** - * Sets or retrieves the media type. - */ - media: string; - /** - * Retrieves the CSS language in which the style sheet is written. - */ - type: string; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var HTMLStyleElement: { - prototype: HTMLStyleElement; - new(): HTMLStyleElement; -} - -interface HTMLTableCaptionElement extends HTMLElement { - /** - * Sets or retrieves the alignment of the caption or legend. - */ - align: string; - /** - * Sets or retrieves whether the caption appears at the top or bottom of the table. - */ - vAlign: string; -} - -declare var HTMLTableCaptionElement: { - prototype: HTMLTableCaptionElement; - new(): HTMLTableCaptionElement; -} - -interface HTMLTableCellElement extends HTMLElement, HTMLTableAlignment { - /** - * Sets or retrieves abbreviated text for the object. - */ - abbr: string; - /** - * Sets or retrieves how the object is aligned with adjacent text. - */ - align: string; - /** - * Sets or retrieves a comma-delimited list of conceptual categories associated with the object. - */ - axis: string; - bgColor: any; - /** - * Retrieves the position of the object in the cells collection of a row. - */ - cellIndex: number; - /** - * Sets or retrieves the number columns in the table that the object should span. - */ - colSpan: number; - /** - * Sets or retrieves a list of header cells that provide information for the object. - */ - headers: string; - /** - * Sets or retrieves the height of the object. - */ - height: any; - /** - * Sets or retrieves whether the browser automatically performs wordwrap. - */ - noWrap: boolean; - /** - * Sets or retrieves how many rows in a table the cell should span. - */ - rowSpan: number; - /** - * Sets or retrieves the group of cells in a table to which the object's information applies. - */ - scope: string; - /** - * Sets or retrieves the width of the object. - */ - width: string; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var HTMLTableCellElement: { - prototype: HTMLTableCellElement; - new(): HTMLTableCellElement; -} - -interface HTMLTableColElement extends HTMLElement, HTMLTableAlignment { - /** - * Sets or retrieves the alignment of the object relative to the display or table. - */ - align: string; - /** - * Sets or retrieves the number of columns in the group. - */ - span: number; - /** - * Sets or retrieves the width of the object. - */ - width: any; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var HTMLTableColElement: { - prototype: HTMLTableColElement; - new(): HTMLTableColElement; -} - -interface HTMLTableDataCellElement extends HTMLTableCellElement { -} - -declare var HTMLTableDataCellElement: { - prototype: HTMLTableDataCellElement; - new(): HTMLTableDataCellElement; -} - -interface HTMLTableElement extends HTMLElement { - /** - * Sets or retrieves a value that indicates the table alignment. - */ - align: string; - bgColor: any; - /** - * Sets or retrieves the width of the border to draw around the object. - */ - border: string; - /** - * Sets or retrieves the border color of the object. - */ - borderColor: any; - /** - * Retrieves the caption object of a table. - */ - caption: HTMLTableCaptionElement; - /** - * Sets or retrieves the amount of space between the border of the cell and the content of the cell. - */ - cellPadding: string; - /** - * Sets or retrieves the amount of space between cells in a table. - */ - cellSpacing: string; - /** - * Sets or retrieves the number of columns in the table. - */ - cols: number; - /** - * Sets or retrieves the way the border frame around the table is displayed. - */ - frame: string; - /** - * Sets or retrieves the height of the object. - */ - height: any; - /** - * Sets or retrieves the number of horizontal rows contained in the object. - */ - rows: HTMLCollection; - /** - * Sets or retrieves which dividing lines (inner borders) are displayed. - */ - rules: string; - /** - * Sets or retrieves a description and/or structure of the object. - */ - summary: string; - /** - * Retrieves a collection of all tBody objects in the table. Objects in this collection are in source order. - */ - tBodies: HTMLCollection; - /** - * Retrieves the tFoot object of the table. - */ - tFoot: HTMLTableSectionElement; - /** - * Retrieves the tHead object of the table. - */ - tHead: HTMLTableSectionElement; - /** - * Sets or retrieves the width of the object. - */ - width: string; - /** - * Creates an empty caption element in the table. - */ - createCaption(): HTMLTableCaptionElement; - /** - * Creates an empty tBody element in the table. - */ - createTBody(): HTMLTableSectionElement; - /** - * Creates an empty tFoot element in the table. - */ - createTFoot(): HTMLTableSectionElement; - /** - * Returns the tHead element object if successful, or null otherwise. - */ - createTHead(): HTMLTableSectionElement; - /** - * Deletes the caption element and its contents from the table. - */ - deleteCaption(): void; - /** - * Removes the specified row (tr) from the element and from the rows collection. - * @param index Number that specifies the zero-based position in the rows collection of the row to remove. - */ - deleteRow(index?: number): void; - /** - * Deletes the tFoot element and its contents from the table. - */ - deleteTFoot(): void; - /** - * Deletes the tHead element and its contents from the table. - */ - deleteTHead(): void; - /** - * Creates a new row (tr) in the table, and adds the row to the rows collection. - * @param index Number that specifies where to insert the row in the rows collection. The default value is -1, which appends the new row to the end of the rows collection. - */ - insertRow(index?: number): HTMLTableRowElement; -} - -declare var HTMLTableElement: { - prototype: HTMLTableElement; - new(): HTMLTableElement; -} - -interface HTMLTableHeaderCellElement extends HTMLTableCellElement { - /** - * Sets or retrieves the group of cells in a table to which the object's information applies. - */ - scope: string; -} - -declare var HTMLTableHeaderCellElement: { - prototype: HTMLTableHeaderCellElement; - new(): HTMLTableHeaderCellElement; -} - -interface HTMLTableRowElement extends HTMLElement, HTMLTableAlignment { - /** - * Sets or retrieves how the object is aligned with adjacent text. - */ - align: string; - bgColor: any; - /** - * Retrieves a collection of all cells in the table row. - */ - cells: HTMLCollection; - /** - * Sets or retrieves the height of the object. - */ - height: any; - /** - * Retrieves the position of the object in the rows collection for the table. - */ - rowIndex: number; - /** - * Retrieves the position of the object in the collection. - */ - sectionRowIndex: number; - /** - * Removes the specified cell from the table row, as well as from the cells collection. - * @param index Number that specifies the zero-based position of the cell to remove from the table row. If no value is provided, the last cell in the cells collection is deleted. - */ - deleteCell(index?: number): void; - /** - * Creates a new cell in the table row, and adds the cell to the cells collection. - * @param index Number that specifies where to insert the cell in the tr. The default value is -1, which appends the new cell to the end of the cells collection. - */ - insertCell(index?: number): HTMLTableCellElement; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var HTMLTableRowElement: { - prototype: HTMLTableRowElement; - new(): HTMLTableRowElement; -} - -interface HTMLTableSectionElement extends HTMLElement, HTMLTableAlignment { - /** - * Sets or retrieves a value that indicates the table alignment. - */ - align: string; - /** - * Sets or retrieves the number of horizontal rows contained in the object. - */ - rows: HTMLCollection; - /** - * Removes the specified row (tr) from the element and from the rows collection. - * @param index Number that specifies the zero-based position in the rows collection of the row to remove. - */ - deleteRow(index?: number): void; - /** - * Creates a new row (tr) in the table, and adds the row to the rows collection. - * @param index Number that specifies where to insert the row in the rows collection. The default value is -1, which appends the new row to the end of the rows collection. - */ - insertRow(index?: number): HTMLTableRowElement; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var HTMLTableSectionElement: { - prototype: HTMLTableSectionElement; - new(): HTMLTableSectionElement; -} - -interface HTMLTextAreaElement extends HTMLElement { - /** - * Provides a way to direct a user to a specific field when a document loads. This can provide both direction and convenience for a user, reducing the need to click or tab to a field when a page opens. This attribute is true when present on an element, and false when missing. - */ - autofocus: boolean; - /** - * Sets or retrieves the width of the object. - */ - cols: number; - /** - * Sets or retrieves the initial contents of the object. - */ - defaultValue: string; - disabled: boolean; - /** - * Retrieves a reference to the form that the object is embedded in. - */ - form: HTMLFormElement; - /** - * Sets or retrieves the maximum number of characters that the user can enter in a text control. - */ - maxLength: number; - /** - * Sets or retrieves the name of the object. - */ - name: string; - /** - * Gets or sets a text string that is displayed in an input field as a hint or prompt to users as the format or type of information they need to enter.The text appears in an input field until the user puts focus on the field. - */ - placeholder: string; - /** - * Sets or retrieves the value indicated whether the content of the object is read-only. - */ - readOnly: boolean; - /** - * When present, marks an element that can't be submitted without a value. - */ - required: boolean; - /** - * Sets or retrieves the number of horizontal rows contained in the object. - */ - rows: number; - /** - * Gets or sets the end position or offset of a text selection. - */ - selectionEnd: number; - /** - * Gets or sets the starting position or offset of a text selection. - */ - selectionStart: number; - /** - * Sets or retrieves the value indicating whether the control is selected. - */ - status: any; - /** - * Retrieves the type of control. - */ - type: string; - /** - * Returns the error message that would be displayed if the user submits the form, or an empty string if no error message. It also triggers the standard error message, such as "this is a required field". The result is that the user sees validation messages without actually submitting. - */ - validationMessage: string; - /** - * Returns a ValidityState object that represents the validity states of an element. - */ - validity: ValidityState; - /** - * Retrieves or sets the text in the entry field of the textArea element. - */ - value: string; - /** - * Returns whether an element will successfully validate based on forms validation rules and constraints. - */ - willValidate: boolean; - /** - * Sets or retrieves how to handle wordwrapping in the object. - */ - wrap: string; - /** - * Returns whether a form will validate when it is submitted, without having to submit it. - */ - checkValidity(): boolean; - /** - * Creates a TextRange object for the element. - */ - createTextRange(): TextRange; - /** - * Highlights the input area of a form element. - */ - select(): void; - /** - * Sets a custom error message that is displayed when a form is submitted. - * @param error Sets a custom error message that is displayed when a form is submitted. - */ - setCustomValidity(error: string): void; - /** - * Sets the start and end positions of a selection in a text field. - * @param start The offset into the text field for the start of the selection. - * @param end The offset into the text field for the end of the selection. - */ - setSelectionRange(start: number, end: number): void; -} - -declare var HTMLTextAreaElement: { - prototype: HTMLTextAreaElement; - new(): HTMLTextAreaElement; -} - -interface HTMLTitleElement extends HTMLElement { - /** - * Retrieves or sets the text of the object as a string. - */ - text: string; -} - -declare var HTMLTitleElement: { - prototype: HTMLTitleElement; - new(): HTMLTitleElement; -} - -interface HTMLTrackElement extends HTMLElement { - default: boolean; - kind: string; - label: string; - readyState: number; - src: string; - srclang: string; - track: TextTrack; - ERROR: number; - LOADED: number; - LOADING: number; - NONE: number; -} - -declare var HTMLTrackElement: { - prototype: HTMLTrackElement; - new(): HTMLTrackElement; - ERROR: number; - LOADED: number; - LOADING: number; - NONE: number; -} - -interface HTMLUListElement extends HTMLElement { - compact: boolean; - type: string; -} - -declare var HTMLUListElement: { - prototype: HTMLUListElement; - new(): HTMLUListElement; -} - -interface HTMLUnknownElement extends HTMLElement { -} - -declare var HTMLUnknownElement: { - prototype: HTMLUnknownElement; - new(): HTMLUnknownElement; -} - -interface HTMLVideoElement extends HTMLMediaElement { - /** - * Gets or sets the height of the video element. - */ - height: number; - msHorizontalMirror: boolean; - msIsLayoutOptimalForPlayback: boolean; - msIsStereo3D: boolean; - msStereo3DPackingMode: string; - msStereo3DRenderMode: string; - msZoom: boolean; - onMSVideoFormatChanged: (ev: Event) => any; - onMSVideoFrameStepCompleted: (ev: Event) => any; - onMSVideoOptimalLayoutChanged: (ev: Event) => any; - /** - * Gets or sets a URL of an image to display, for example, like a movie poster. This can be a still frame from the video, or another image if no video data is available. - */ - poster: string; - /** - * Gets the intrinsic height of a video in CSS pixels, or zero if the dimensions are not known. - */ - videoHeight: number; - /** - * Gets the intrinsic width of a video in CSS pixels, or zero if the dimensions are not known. - */ - videoWidth: number; - webkitDisplayingFullscreen: boolean; - webkitSupportsFullscreen: boolean; - /** - * Gets or sets the width of the video element. - */ - width: number; - getVideoPlaybackQuality(): VideoPlaybackQuality; - msFrameStep(forward: boolean): void; - msInsertVideoEffect(activatableClassId: string, effectRequired: boolean, config?: any): void; - msSetVideoRectangle(left: number, top: number, right: number, bottom: number): void; - webkitEnterFullScreen(): void; - webkitEnterFullscreen(): void; - webkitExitFullScreen(): void; - webkitExitFullscreen(): void; - addEventListener(type: "MSContentZoom", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureDoubleTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureEnd", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureHold", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGotPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSInertiaStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSLostPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSManipulationStateChanged", listener: (ev: MSManipulationEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerCancel", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerDown", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerEnter", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerLeave", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerMove", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerOut", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerOver", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerUp", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSVideoFormatChanged", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "MSVideoFrameStepCompleted", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "MSVideoOptimalLayoutChanged", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "abort", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "activate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecopy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforedeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforepaste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; - addEventListener(type: "canplay", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "canplaythrough", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "change", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void; - addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "copy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "cuechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "cut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "deactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragend", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragenter", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragleave", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragover", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragstart", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; - addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; - addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; - addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; - addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; - addEventListener(type: "load", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "loadeddata", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "loadedmetadata", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "loadstart", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "lostpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousedown", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseenter", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseleave", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousemove", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; - addEventListener(type: "msneedkey", listener: (ev: MSMediaKeyNeededEvent) => any, useCapture?: boolean): void; - addEventListener(type: "paste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "pointercancel", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerdown", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerenter", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerleave", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointermove", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerout", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerover", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerup", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "progress", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void; - addEventListener(type: "ratechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "reset", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "scroll", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "seeked", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "seeking", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "select", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "selectstart", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "stalled", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "submit", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "suspend", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "timeupdate", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "touchcancel", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchend", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchmove", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchstart", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "volumechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "waiting", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "webkitfullscreenchange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "webkitfullscreenerror", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "wheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var HTMLVideoElement: { - prototype: HTMLVideoElement; - new(): HTMLVideoElement; -} - -interface HashChangeEvent extends Event { - newURL: string; - oldURL: string; -} - -declare var HashChangeEvent: { - prototype: HashChangeEvent; - new(type: string, eventInitDict?: HashChangeEventInit): HashChangeEvent; -} - -interface History { - length: number; - state: any; - back(distance?: any): void; - forward(distance?: any): void; - go(delta?: any): void; - pushState(statedata: any, title?: string, url?: string): void; - replaceState(statedata: any, title?: string, url?: string): void; -} - -declare var History: { - prototype: History; - new(): History; -} - -interface IDBCursor { - direction: string; - key: any; - primaryKey: any; - source: IDBObjectStore | IDBIndex; - advance(count: number): void; - continue(key?: any): void; - delete(): IDBRequest; - update(value: any): IDBRequest; - NEXT: string; - NEXT_NO_DUPLICATE: string; - PREV: string; - PREV_NO_DUPLICATE: string; -} - -declare var IDBCursor: { - prototype: IDBCursor; - new(): IDBCursor; - NEXT: string; - NEXT_NO_DUPLICATE: string; - PREV: string; - PREV_NO_DUPLICATE: string; -} - -interface IDBCursorWithValue extends IDBCursor { - value: any; -} - -declare var IDBCursorWithValue: { - prototype: IDBCursorWithValue; - new(): IDBCursorWithValue; -} - -interface IDBDatabase extends EventTarget { - name: string; - objectStoreNames: DOMStringList; - onabort: (ev: Event) => any; - onerror: (ev: Event) => any; - version: number; - close(): void; - createObjectStore(name: string, optionalParameters?: IDBObjectStoreParameters): IDBObjectStore; - deleteObjectStore(name: string): void; - transaction(storeNames: string | string[], mode?: string): IDBTransaction; - addEventListener(type: "abort", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var IDBDatabase: { - prototype: IDBDatabase; - new(): IDBDatabase; -} - -interface IDBFactory { - cmp(first: any, second: any): number; - deleteDatabase(name: string): IDBOpenDBRequest; - open(name: string, version?: number): IDBOpenDBRequest; -} - -declare var IDBFactory: { - prototype: IDBFactory; - new(): IDBFactory; -} - -interface IDBIndex { - keyPath: string | string[]; - name: string; - objectStore: IDBObjectStore; - unique: boolean; - multiEntry: boolean; - count(key?: any): IDBRequest; - get(key: any): IDBRequest; - getKey(key: any): IDBRequest; - openCursor(range?: IDBKeyRange, direction?: string): IDBRequest; - openKeyCursor(range?: IDBKeyRange, direction?: string): IDBRequest; -} - -declare var IDBIndex: { - prototype: IDBIndex; - new(): IDBIndex; -} - -interface IDBKeyRange { - lower: any; - lowerOpen: boolean; - upper: any; - upperOpen: boolean; -} - -declare var IDBKeyRange: { - prototype: IDBKeyRange; - new(): IDBKeyRange; - bound(lower: any, upper: any, lowerOpen?: boolean, upperOpen?: boolean): IDBKeyRange; - lowerBound(bound: any, open?: boolean): IDBKeyRange; - only(value: any): IDBKeyRange; - upperBound(bound: any, open?: boolean): IDBKeyRange; -} - -interface IDBObjectStore { - indexNames: DOMStringList; - keyPath: string | string[]; - name: string; - transaction: IDBTransaction; - autoIncrement: boolean; - add(value: any, key?: any): IDBRequest; - clear(): IDBRequest; - count(key?: any): IDBRequest; - createIndex(name: string, keyPath: string | string[], optionalParameters?: IDBIndexParameters): IDBIndex; - delete(key: any): IDBRequest; - deleteIndex(indexName: string): void; - get(key: any): IDBRequest; - index(name: string): IDBIndex; - openCursor(range?: any, direction?: string): IDBRequest; - put(value: any, key?: any): IDBRequest; -} - -declare var IDBObjectStore: { - prototype: IDBObjectStore; - new(): 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; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var IDBOpenDBRequest: { - prototype: IDBOpenDBRequest; - new(): IDBOpenDBRequest; -} - -interface IDBRequest extends EventTarget { - error: DOMError; - onerror: (ev: Event) => any; - onsuccess: (ev: Event) => any; - readyState: string; - result: any; - source: IDBObjectStore | IDBIndex | IDBCursor; - transaction: IDBTransaction; - addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; - addEventListener(type: "success", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var IDBRequest: { - prototype: IDBRequest; - new(): IDBRequest; -} - -interface IDBTransaction extends EventTarget { - db: IDBDatabase; - error: DOMError; - mode: string; - onabort: (ev: Event) => any; - oncomplete: (ev: Event) => any; - onerror: (ev: Event) => any; - abort(): void; - objectStore(name: string): IDBObjectStore; - READ_ONLY: string; - READ_WRITE: string; - 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: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var IDBTransaction: { - prototype: IDBTransaction; - new(): IDBTransaction; - READ_ONLY: string; - READ_WRITE: string; - VERSION_CHANGE: string; -} - -interface IDBVersionChangeEvent extends Event { - newVersion: number; - oldVersion: number; -} - -declare var IDBVersionChangeEvent: { - prototype: IDBVersionChangeEvent; - new(): IDBVersionChangeEvent; -} - -interface ImageData { - data: Uint8ClampedArray; - height: number; - width: number; -} - -declare var ImageData: { - prototype: ImageData; - new(width: number, height: number): ImageData; - new(array: Uint8ClampedArray, width: number, height: number): ImageData; -} - -interface KeyboardEvent extends UIEvent { - altKey: boolean; - char: string; - charCode: number; - ctrlKey: boolean; - key: string; - keyCode: number; - locale: string; - location: number; - metaKey: boolean; - repeat: boolean; - shiftKey: boolean; - which: number; - getModifierState(keyArg: string): boolean; - initKeyboardEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, keyArg: string, locationArg: number, modifiersListArg: string, repeat: boolean, locale: string): void; - DOM_KEY_LOCATION_JOYSTICK: number; - DOM_KEY_LOCATION_LEFT: number; - DOM_KEY_LOCATION_MOBILE: number; - DOM_KEY_LOCATION_NUMPAD: number; - DOM_KEY_LOCATION_RIGHT: number; - DOM_KEY_LOCATION_STANDARD: number; -} - -declare var KeyboardEvent: { - prototype: KeyboardEvent; - new(typeArg: string, eventInitDict?: KeyboardEventInit): KeyboardEvent; - DOM_KEY_LOCATION_JOYSTICK: number; - DOM_KEY_LOCATION_LEFT: number; - DOM_KEY_LOCATION_MOBILE: number; - DOM_KEY_LOCATION_NUMPAD: number; - DOM_KEY_LOCATION_RIGHT: number; - DOM_KEY_LOCATION_STANDARD: number; -} - -interface Location { - hash: string; - host: string; - hostname: string; - href: string; - origin: string; - pathname: string; - port: string; - protocol: string; - search: string; - assign(url: string): void; - reload(forcedReload?: boolean): void; - replace(url: string): void; - toString(): string; -} - -declare var Location: { - prototype: Location; - new(): Location; -} - -interface LongRunningScriptDetectedEvent extends Event { - executionTime: number; - stopPageScriptExecution: boolean; -} - -declare var LongRunningScriptDetectedEvent: { - prototype: LongRunningScriptDetectedEvent; - new(): LongRunningScriptDetectedEvent; -} - -interface MSApp { - clearTemporaryWebDataAsync(): MSAppAsyncOperation; - createBlobFromRandomAccessStream(type: string, seeker: any): Blob; - createDataPackage(object: any): any; - createDataPackageFromSelection(): any; - createFileFromStorageFile(storageFile: any): File; - createStreamFromInputStream(type: string, inputStream: any): MSStream; - execAsyncAtPriority(asynchronousCallback: MSExecAtPriorityFunctionCallback, priority: string, ...args: any[]): void; - execAtPriority(synchronousCallback: MSExecAtPriorityFunctionCallback, priority: string, ...args: any[]): any; - getCurrentPriority(): string; - getHtmlPrintDocumentSourceAsync(htmlDoc: any): any; - getViewId(view: any): any; - isTaskScheduledAtPriorityOrHigher(priority: string): boolean; - pageHandlesAllApplicationActivations(enabled: boolean): void; - suppressSubdownloadCredentialPrompts(suppress: boolean): void; - terminateApp(exceptionObject: any): void; - CURRENT: string; - HIGH: string; - IDLE: string; - NORMAL: string; -} -declare var MSApp: MSApp; - -interface MSAppAsyncOperation extends EventTarget { - error: DOMError; - oncomplete: (ev: Event) => any; - onerror: (ev: Event) => any; - readyState: number; - result: any; - start(): void; - COMPLETED: number; - ERROR: number; - STARTED: number; - addEventListener(type: "complete", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var MSAppAsyncOperation: { - prototype: MSAppAsyncOperation; - new(): MSAppAsyncOperation; - COMPLETED: number; - ERROR: number; - STARTED: number; -} - -interface MSBlobBuilder { - append(data: any, endings?: string): void; - getBlob(contentType?: string): Blob; -} - -declare var MSBlobBuilder: { - prototype: MSBlobBuilder; - new(): MSBlobBuilder; -} - -interface MSCSSMatrix { - a: number; - b: number; - c: number; - d: number; - e: number; - f: number; - m11: number; - m12: number; - m13: number; - m14: number; - m21: number; - m22: number; - m23: number; - m24: number; - m31: number; - m32: number; - m33: number; - m34: number; - m41: number; - m42: number; - m43: number; - m44: number; - inverse(): MSCSSMatrix; - multiply(secondMatrix: MSCSSMatrix): MSCSSMatrix; - rotate(angleX: number, angleY?: number, angleZ?: number): MSCSSMatrix; - rotateAxisAngle(x: number, y: number, z: number, angle: number): MSCSSMatrix; - scale(scaleX: number, scaleY?: number, scaleZ?: number): MSCSSMatrix; - setMatrixValue(value: string): void; - skewX(angle: number): MSCSSMatrix; - skewY(angle: number): MSCSSMatrix; - toString(): string; - translate(x: number, y: number, z?: number): MSCSSMatrix; -} - -declare var MSCSSMatrix: { - prototype: MSCSSMatrix; - new(text?: string): MSCSSMatrix; -} - -interface MSGesture { - target: Element; - addPointer(pointerId: number): void; - stop(): void; -} - -declare var MSGesture: { - prototype: MSGesture; - new(): MSGesture; -} - -interface MSGestureEvent extends UIEvent { - clientX: number; - clientY: number; - expansion: number; - gestureObject: any; - hwTimestamp: number; - offsetX: number; - offsetY: number; - rotation: number; - scale: number; - screenX: number; - screenY: number; - translationX: number; - translationY: number; - velocityAngular: number; - velocityExpansion: number; - velocityX: number; - velocityY: number; - initGestureEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, screenXArg: number, screenYArg: number, clientXArg: number, clientYArg: number, offsetXArg: number, offsetYArg: number, translationXArg: number, translationYArg: number, scaleArg: number, expansionArg: number, rotationArg: number, velocityXArg: number, velocityYArg: number, velocityExpansionArg: number, velocityAngularArg: number, hwTimestampArg: number): void; - MSGESTURE_FLAG_BEGIN: number; - MSGESTURE_FLAG_CANCEL: number; - MSGESTURE_FLAG_END: number; - MSGESTURE_FLAG_INERTIA: number; - MSGESTURE_FLAG_NONE: number; -} - -declare var MSGestureEvent: { - prototype: MSGestureEvent; - new(): MSGestureEvent; - MSGESTURE_FLAG_BEGIN: number; - MSGESTURE_FLAG_CANCEL: number; - MSGESTURE_FLAG_END: number; - MSGESTURE_FLAG_INERTIA: number; - MSGESTURE_FLAG_NONE: number; -} - -interface MSGraphicsTrust { - constrictionActive: boolean; - status: string; -} - -declare var MSGraphicsTrust: { - prototype: MSGraphicsTrust; - new(): MSGraphicsTrust; -} - -interface MSHTMLWebViewElement extends HTMLElement { - canGoBack: boolean; - canGoForward: boolean; - containsFullScreenElement: boolean; - documentTitle: string; - height: number; - settings: MSWebViewSettings; - src: string; - width: number; - addWebAllowedObject(name: string, applicationObject: any): void; - buildLocalStreamUri(contentIdentifier: string, relativePath: string): string; - capturePreviewToBlobAsync(): MSWebViewAsyncOperation; - captureSelectedContentToDataPackageAsync(): MSWebViewAsyncOperation; - getDeferredPermissionRequestById(id: number): DeferredPermissionRequest; - getDeferredPermissionRequests(): DeferredPermissionRequest[]; - goBack(): void; - goForward(): void; - invokeScriptAsync(scriptName: string, ...args: any[]): MSWebViewAsyncOperation; - navigate(uri: string): void; - navigateToLocalStreamUri(source: string, streamResolver: any): void; - navigateToString(contents: string): void; - navigateWithHttpRequestMessage(requestMessage: any): void; - refresh(): void; - stop(): void; -} - -declare var MSHTMLWebViewElement: { - prototype: MSHTMLWebViewElement; - new(): MSHTMLWebViewElement; -} - -interface MSInputMethodContext extends EventTarget { - compositionEndOffset: number; - compositionStartOffset: number; - oncandidatewindowhide: (ev: Event) => any; - oncandidatewindowshow: (ev: Event) => any; - oncandidatewindowupdate: (ev: Event) => any; - target: HTMLElement; - getCandidateWindowClientRect(): ClientRect; - getCompositionAlternatives(): string[]; - hasComposition(): boolean; - isCandidateWindowVisible(): boolean; - addEventListener(type: "MSCandidateWindowHide", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "MSCandidateWindowShow", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "MSCandidateWindowUpdate", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var MSInputMethodContext: { - prototype: MSInputMethodContext; - new(): MSInputMethodContext; -} - -interface MSManipulationEvent extends UIEvent { - currentState: number; - inertiaDestinationX: number; - inertiaDestinationY: number; - lastState: number; - initMSManipulationEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, lastState: number, currentState: number): void; - MS_MANIPULATION_STATE_ACTIVE: number; - MS_MANIPULATION_STATE_CANCELLED: number; - MS_MANIPULATION_STATE_COMMITTED: number; - MS_MANIPULATION_STATE_DRAGGING: number; - MS_MANIPULATION_STATE_INERTIA: number; - MS_MANIPULATION_STATE_PRESELECT: number; - MS_MANIPULATION_STATE_SELECTING: number; - MS_MANIPULATION_STATE_STOPPED: number; -} - -declare var MSManipulationEvent: { - prototype: MSManipulationEvent; - new(): MSManipulationEvent; - MS_MANIPULATION_STATE_ACTIVE: number; - MS_MANIPULATION_STATE_CANCELLED: number; - MS_MANIPULATION_STATE_COMMITTED: number; - MS_MANIPULATION_STATE_DRAGGING: number; - MS_MANIPULATION_STATE_INERTIA: number; - MS_MANIPULATION_STATE_PRESELECT: number; - MS_MANIPULATION_STATE_SELECTING: number; - MS_MANIPULATION_STATE_STOPPED: number; -} - -interface MSMediaKeyError { - code: number; - systemCode: number; - MS_MEDIA_KEYERR_CLIENT: number; - MS_MEDIA_KEYERR_DOMAIN: number; - MS_MEDIA_KEYERR_HARDWARECHANGE: number; - MS_MEDIA_KEYERR_OUTPUT: number; - MS_MEDIA_KEYERR_SERVICE: number; - MS_MEDIA_KEYERR_UNKNOWN: number; -} - -declare var MSMediaKeyError: { - prototype: MSMediaKeyError; - new(): MSMediaKeyError; - MS_MEDIA_KEYERR_CLIENT: number; - MS_MEDIA_KEYERR_DOMAIN: number; - MS_MEDIA_KEYERR_HARDWARECHANGE: number; - MS_MEDIA_KEYERR_OUTPUT: number; - MS_MEDIA_KEYERR_SERVICE: number; - MS_MEDIA_KEYERR_UNKNOWN: number; -} - -interface MSMediaKeyMessageEvent extends Event { - destinationURL: string; - message: Uint8Array; -} - -declare var MSMediaKeyMessageEvent: { - prototype: MSMediaKeyMessageEvent; - new(): MSMediaKeyMessageEvent; -} - -interface MSMediaKeyNeededEvent extends Event { - initData: Uint8Array; -} - -declare var MSMediaKeyNeededEvent: { - prototype: MSMediaKeyNeededEvent; - new(): MSMediaKeyNeededEvent; -} - -interface MSMediaKeySession extends EventTarget { - error: MSMediaKeyError; - keySystem: string; - sessionId: string; - close(): void; - update(key: Uint8Array): void; -} - -declare var MSMediaKeySession: { - prototype: MSMediaKeySession; - new(): MSMediaKeySession; -} - -interface MSMediaKeys { - keySystem: string; - createSession(type: string, initData: Uint8Array, cdmData?: Uint8Array): MSMediaKeySession; -} - -declare var MSMediaKeys: { - prototype: MSMediaKeys; - new(keySystem: string): MSMediaKeys; - isTypeSupported(keySystem: string, type?: string): boolean; -} - -interface MSMimeTypesCollection { - length: number; -} - -declare var MSMimeTypesCollection: { - prototype: MSMimeTypesCollection; - new(): MSMimeTypesCollection; -} - -interface MSPluginsCollection { - length: number; - refresh(reload?: boolean): void; -} - -declare var MSPluginsCollection: { - prototype: MSPluginsCollection; - new(): MSPluginsCollection; -} - -interface MSPointerEvent extends MouseEvent { - currentPoint: any; - height: number; - hwTimestamp: number; - intermediatePoints: any; - isPrimary: boolean; - pointerId: number; - pointerType: any; - pressure: number; - rotation: number; - tiltX: number; - tiltY: number; - width: number; - getCurrentPoint(element: Element): void; - getIntermediatePoints(element: Element): void; - initPointerEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, screenXArg: number, screenYArg: number, clientXArg: number, clientYArg: number, ctrlKeyArg: boolean, altKeyArg: boolean, shiftKeyArg: boolean, metaKeyArg: boolean, buttonArg: number, relatedTargetArg: EventTarget, offsetXArg: number, offsetYArg: number, widthArg: number, heightArg: number, pressure: number, rotation: number, tiltX: number, tiltY: number, pointerIdArg: number, pointerType: any, hwTimestampArg: number, isPrimary: boolean): void; -} - -declare var MSPointerEvent: { - prototype: MSPointerEvent; - new(typeArg: string, eventInitDict?: PointerEventInit): MSPointerEvent; -} - -interface MSRangeCollection { - length: number; - item(index: number): Range; - [index: number]: Range; -} - -declare var MSRangeCollection: { - prototype: MSRangeCollection; - new(): MSRangeCollection; -} - -interface MSSiteModeEvent extends Event { - actionURL: string; - buttonID: number; -} - -declare var MSSiteModeEvent: { - prototype: MSSiteModeEvent; - new(): MSSiteModeEvent; -} - -interface MSStream { - type: string; - msClose(): void; - msDetachStream(): any; -} - -declare var MSStream: { - prototype: MSStream; - new(): MSStream; -} - -interface MSStreamReader extends EventTarget, MSBaseReader { - error: DOMError; - readAsArrayBuffer(stream: MSStream, size?: number): void; - readAsBinaryString(stream: MSStream, size?: number): void; - readAsBlob(stream: MSStream, size?: number): void; - readAsDataURL(stream: MSStream, size?: number): void; - readAsText(stream: MSStream, encoding?: string, size?: number): void; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var MSStreamReader: { - prototype: MSStreamReader; - new(): MSStreamReader; -} - -interface MSWebViewAsyncOperation extends EventTarget { - error: DOMError; - oncomplete: (ev: Event) => any; - onerror: (ev: Event) => any; - readyState: number; - result: any; - target: MSHTMLWebViewElement; - type: number; - start(): void; - COMPLETED: number; - ERROR: number; - STARTED: number; - TYPE_CAPTURE_PREVIEW_TO_RANDOM_ACCESS_STREAM: number; - TYPE_CREATE_DATA_PACKAGE_FROM_SELECTION: number; - TYPE_INVOKE_SCRIPT: number; - addEventListener(type: "complete", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var MSWebViewAsyncOperation: { - prototype: MSWebViewAsyncOperation; - new(): MSWebViewAsyncOperation; - COMPLETED: number; - ERROR: number; - STARTED: number; - TYPE_CAPTURE_PREVIEW_TO_RANDOM_ACCESS_STREAM: number; - TYPE_CREATE_DATA_PACKAGE_FROM_SELECTION: number; - TYPE_INVOKE_SCRIPT: number; -} - -interface MSWebViewSettings { - isIndexedDBEnabled: boolean; - isJavaScriptEnabled: boolean; -} - -declare var MSWebViewSettings: { - prototype: MSWebViewSettings; - new(): MSWebViewSettings; -} - -interface MediaElementAudioSourceNode extends AudioNode { -} - -declare var MediaElementAudioSourceNode: { - prototype: MediaElementAudioSourceNode; - new(): MediaElementAudioSourceNode; -} - -interface MediaError { - code: number; - msExtendedCode: number; - MEDIA_ERR_ABORTED: number; - MEDIA_ERR_DECODE: number; - MEDIA_ERR_NETWORK: number; - MEDIA_ERR_SRC_NOT_SUPPORTED: number; - MS_MEDIA_ERR_ENCRYPTED: number; -} - -declare var MediaError: { - prototype: MediaError; - new(): MediaError; - MEDIA_ERR_ABORTED: number; - MEDIA_ERR_DECODE: number; - MEDIA_ERR_NETWORK: number; - MEDIA_ERR_SRC_NOT_SUPPORTED: number; - MS_MEDIA_ERR_ENCRYPTED: number; -} - -interface MediaList { - length: number; - mediaText: string; - appendMedium(newMedium: string): void; - deleteMedium(oldMedium: string): void; - item(index: number): string; - toString(): string; - [index: number]: string; -} - -declare var MediaList: { - prototype: MediaList; - new(): MediaList; -} - -interface MediaQueryList { - matches: boolean; - media: string; - addListener(listener: MediaQueryListListener): void; - removeListener(listener: MediaQueryListListener): void; -} - -declare var MediaQueryList: { - prototype: MediaQueryList; - new(): MediaQueryList; -} - -interface MediaSource extends EventTarget { - activeSourceBuffers: SourceBufferList; - duration: number; - readyState: string; - sourceBuffers: SourceBufferList; - addSourceBuffer(type: string): SourceBuffer; - endOfStream(error?: number): void; - removeSourceBuffer(sourceBuffer: SourceBuffer): void; -} - -declare var MediaSource: { - prototype: MediaSource; - new(): MediaSource; - isTypeSupported(type: string): boolean; -} - -interface MessageChannel { - port1: MessagePort; - port2: MessagePort; -} - -declare var MessageChannel: { - prototype: MessageChannel; - new(): MessageChannel; -} - -interface MessageEvent extends Event { - data: any; - origin: string; - ports: any; - source: Window; - initMessageEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, dataArg: any, originArg: string, lastEventIdArg: string, sourceArg: Window): void; -} - -declare var MessageEvent: { - prototype: MessageEvent; - new(type: string, eventInitDict?: MessageEventInit): MessageEvent; -} - -interface MessagePort extends EventTarget { - onmessage: (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: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var MessagePort: { - prototype: MessagePort; - new(): MessagePort; -} - -interface MimeType { - description: string; - enabledPlugin: Plugin; - suffixes: string; - type: string; -} - -declare var MimeType: { - prototype: MimeType; - new(): MimeType; -} - -interface MimeTypeArray { - length: number; - item(index: number): Plugin; - namedItem(type: string): Plugin; - [index: number]: Plugin; -} - -declare var MimeTypeArray: { - prototype: MimeTypeArray; - new(): MimeTypeArray; -} - -interface MouseEvent extends UIEvent { - altKey: boolean; - button: number; - buttons: number; - clientX: number; - clientY: number; - ctrlKey: boolean; - fromElement: Element; - layerX: number; - layerY: number; - metaKey: boolean; - movementX: number; - movementY: number; - offsetX: number; - offsetY: number; - pageX: number; - pageY: number; - relatedTarget: EventTarget; - screenX: number; - screenY: number; - shiftKey: boolean; - toElement: Element; - which: number; - x: number; - y: number; - getModifierState(keyArg: string): boolean; - initMouseEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, screenXArg: number, screenYArg: number, clientXArg: number, clientYArg: number, ctrlKeyArg: boolean, altKeyArg: boolean, shiftKeyArg: boolean, metaKeyArg: boolean, buttonArg: number, relatedTargetArg: EventTarget): void; -} - -declare var MouseEvent: { - prototype: MouseEvent; - new(typeArg: string, eventInitDict?: MouseEventInit): MouseEvent; -} - -interface MouseWheelEvent extends MouseEvent { - wheelDelta: number; - wheelDeltaX: number; - wheelDeltaY: number; - initMouseWheelEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, screenXArg: number, screenYArg: number, clientXArg: number, clientYArg: number, buttonArg: number, relatedTargetArg: EventTarget, modifiersListArg: string, wheelDeltaArg: number): void; -} - -declare var MouseWheelEvent: { - prototype: MouseWheelEvent; - new(): MouseWheelEvent; -} - -interface MutationEvent extends Event { - attrChange: number; - attrName: string; - newValue: string; - prevValue: string; - relatedNode: Node; - initMutationEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, relatedNodeArg: Node, prevValueArg: string, newValueArg: string, attrNameArg: string, attrChangeArg: number): void; - ADDITION: number; - MODIFICATION: number; - REMOVAL: number; -} - -declare var MutationEvent: { - prototype: MutationEvent; - new(): MutationEvent; - ADDITION: number; - MODIFICATION: number; - REMOVAL: number; -} - -interface MutationObserver { - disconnect(): void; - observe(target: Node, options: MutationObserverInit): void; - takeRecords(): MutationRecord[]; -} - -declare var MutationObserver: { - prototype: MutationObserver; - new(callback: MutationCallback): MutationObserver; -} - -interface MutationRecord { - addedNodes: NodeList; - attributeName: string; - attributeNamespace: string; - nextSibling: Node; - oldValue: string; - previousSibling: Node; - removedNodes: NodeList; - target: Node; - type: string; -} - -declare var MutationRecord: { - prototype: MutationRecord; - new(): MutationRecord; -} - -interface NamedNodeMap { - length: number; - getNamedItem(name: string): Attr; - getNamedItemNS(namespaceURI: string, localName: string): Attr; - item(index: number): Attr; - removeNamedItem(name: string): Attr; - removeNamedItemNS(namespaceURI: string, localName: string): Attr; - setNamedItem(arg: Attr): Attr; - setNamedItemNS(arg: Attr): Attr; - [index: number]: Attr; -} - -declare var NamedNodeMap: { - prototype: NamedNodeMap; - new(): NamedNodeMap; -} - -interface NavigationCompletedEvent extends NavigationEvent { - isSuccess: boolean; - webErrorStatus: number; -} - -declare var NavigationCompletedEvent: { - prototype: NavigationCompletedEvent; - new(): NavigationCompletedEvent; -} - -interface NavigationEvent extends Event { - uri: string; -} - -declare var NavigationEvent: { - prototype: NavigationEvent; - new(): NavigationEvent; -} - -interface NavigationEventWithReferrer extends NavigationEvent { - referer: string; -} - -declare var NavigationEventWithReferrer: { - prototype: NavigationEventWithReferrer; - new(): NavigationEventWithReferrer; -} - -interface Navigator extends Object, NavigatorID, NavigatorOnLine, NavigatorContentUtils, NavigatorStorageUtils, NavigatorGeolocation, MSNavigatorDoNotTrack, MSFileSaver { - appCodeName: string; - appMinorVersion: string; - browserLanguage: string; - connectionSpeed: number; - cookieEnabled: boolean; - cpuClass: string; - language: string; - maxTouchPoints: number; - mimeTypes: MSMimeTypesCollection; - msManipulationViewsEnabled: boolean; - msMaxTouchPoints: number; - msPointerEnabled: boolean; - plugins: MSPluginsCollection; - pointerEnabled: boolean; - systemLanguage: string; - userLanguage: string; - webdriver: boolean; - getGamepads(): Gamepad[]; - javaEnabled(): boolean; - msLaunchUri(uri: string, successCallback?: MSLaunchUriCallback, noHandlerCallback?: MSLaunchUriCallback): void; - vibrate(pattern: number | number[]): boolean; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var Navigator: { - prototype: Navigator; - new(): Navigator; -} - -interface Node extends EventTarget { - attributes: NamedNodeMap; - baseURI: string; - childNodes: NodeList; - firstChild: Node; - lastChild: Node; - localName: string; - namespaceURI: string; - nextSibling: Node; - nodeName: string; - nodeType: number; - nodeValue: string; - ownerDocument: Document; - parentElement: HTMLElement; - parentNode: Node; - prefix: string; - previousSibling: Node; - textContent: string; - appendChild(newChild: Node): Node; - cloneNode(deep?: boolean): Node; - compareDocumentPosition(other: Node): number; - hasAttributes(): boolean; - hasChildNodes(): boolean; - insertBefore(newChild: Node, refChild?: Node): Node; - isDefaultNamespace(namespaceURI: string): boolean; - isEqualNode(arg: Node): boolean; - isSameNode(other: Node): boolean; - lookupNamespaceURI(prefix: string): string; - lookupPrefix(namespaceURI: string): string; - normalize(): void; - removeChild(oldChild: Node): Node; - replaceChild(newChild: Node, oldChild: Node): Node; - contains(node: Node): boolean; - ATTRIBUTE_NODE: number; - CDATA_SECTION_NODE: number; - COMMENT_NODE: number; - DOCUMENT_FRAGMENT_NODE: number; - DOCUMENT_NODE: number; - DOCUMENT_POSITION_CONTAINED_BY: number; - DOCUMENT_POSITION_CONTAINS: number; - DOCUMENT_POSITION_DISCONNECTED: number; - DOCUMENT_POSITION_FOLLOWING: number; - DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: number; - DOCUMENT_POSITION_PRECEDING: number; - DOCUMENT_TYPE_NODE: number; - ELEMENT_NODE: number; - ENTITY_NODE: number; - ENTITY_REFERENCE_NODE: number; - NOTATION_NODE: number; - PROCESSING_INSTRUCTION_NODE: number; - TEXT_NODE: number; -} - -declare var Node: { - prototype: Node; - new(): Node; - ATTRIBUTE_NODE: number; - CDATA_SECTION_NODE: number; - COMMENT_NODE: number; - DOCUMENT_FRAGMENT_NODE: number; - DOCUMENT_NODE: number; - DOCUMENT_POSITION_CONTAINED_BY: number; - DOCUMENT_POSITION_CONTAINS: number; - DOCUMENT_POSITION_DISCONNECTED: number; - DOCUMENT_POSITION_FOLLOWING: number; - DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: number; - DOCUMENT_POSITION_PRECEDING: number; - DOCUMENT_TYPE_NODE: number; - ELEMENT_NODE: number; - ENTITY_NODE: number; - ENTITY_REFERENCE_NODE: number; - NOTATION_NODE: number; - PROCESSING_INSTRUCTION_NODE: number; - TEXT_NODE: number; -} - -interface NodeFilter { - acceptNode(n: Node): number; -} - -declare var NodeFilter: { - FILTER_ACCEPT: number; - FILTER_REJECT: number; - FILTER_SKIP: number; - SHOW_ALL: number; - SHOW_ATTRIBUTE: number; - SHOW_CDATA_SECTION: number; - SHOW_COMMENT: number; - SHOW_DOCUMENT: number; - SHOW_DOCUMENT_FRAGMENT: number; - SHOW_DOCUMENT_TYPE: number; - SHOW_ELEMENT: number; - SHOW_ENTITY: number; - SHOW_ENTITY_REFERENCE: number; - SHOW_NOTATION: number; - SHOW_PROCESSING_INSTRUCTION: number; - SHOW_TEXT: number; -} - -interface NodeIterator { - expandEntityReferences: boolean; - filter: NodeFilter; - root: Node; - whatToShow: number; - detach(): void; - nextNode(): Node; - previousNode(): Node; -} - -declare var NodeIterator: { - prototype: NodeIterator; - new(): NodeIterator; -} - -interface NodeList { - length: number; - item(index: number): Node; - [index: number]: Node; -} - -declare var NodeList: { - prototype: NodeList; - new(): NodeList; -} - -interface OES_element_index_uint { -} - -declare var OES_element_index_uint: { - prototype: OES_element_index_uint; - new(): OES_element_index_uint; -} - -interface OES_standard_derivatives { - FRAGMENT_SHADER_DERIVATIVE_HINT_OES: number; -} - -declare var OES_standard_derivatives: { - prototype: OES_standard_derivatives; - new(): OES_standard_derivatives; - FRAGMENT_SHADER_DERIVATIVE_HINT_OES: number; -} - -interface OES_texture_float { -} - -declare var OES_texture_float: { - prototype: OES_texture_float; - new(): OES_texture_float; -} - -interface OES_texture_float_linear { -} - -declare var OES_texture_float_linear: { - prototype: OES_texture_float_linear; - new(): OES_texture_float_linear; -} - -interface OfflineAudioCompletionEvent extends Event { - renderedBuffer: AudioBuffer; -} - -declare var OfflineAudioCompletionEvent: { - prototype: OfflineAudioCompletionEvent; - new(): OfflineAudioCompletionEvent; -} - -interface OfflineAudioContext extends AudioContext { - oncomplete: (ev: Event) => any; - startRendering(): void; - addEventListener(type: "complete", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var OfflineAudioContext: { - prototype: OfflineAudioContext; - new(numberOfChannels: number, length: number, sampleRate: number): OfflineAudioContext; -} - -interface OscillatorNode extends AudioNode { - detune: AudioParam; - frequency: AudioParam; - onended: (ev: Event) => any; - type: string; - setPeriodicWave(periodicWave: PeriodicWave): void; - start(when?: number): void; - stop(when?: number): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var OscillatorNode: { - prototype: OscillatorNode; - new(): OscillatorNode; -} - -interface PageTransitionEvent extends Event { - persisted: boolean; -} - -declare var PageTransitionEvent: { - prototype: PageTransitionEvent; - new(): PageTransitionEvent; -} - -interface PannerNode extends AudioNode { - coneInnerAngle: number; - coneOuterAngle: number; - coneOuterGain: number; - distanceModel: string; - maxDistance: number; - panningModel: string; - refDistance: number; - rolloffFactor: number; - setOrientation(x: number, y: number, z: number): void; - setPosition(x: number, y: number, z: number): void; - setVelocity(x: number, y: number, z: number): void; -} - -declare var PannerNode: { - prototype: PannerNode; - new(): PannerNode; -} - -interface PerfWidgetExternal { - activeNetworkRequestCount: number; - averageFrameTime: number; - averagePaintTime: number; - extraInformationEnabled: boolean; - independentRenderingEnabled: boolean; - irDisablingContentString: string; - irStatusAvailable: boolean; - maxCpuSpeed: number; - paintRequestsPerSecond: number; - performanceCounter: number; - performanceCounterFrequency: number; - addEventListener(eventType: string, callback: Function): void; - getMemoryUsage(): number; - getProcessCpuUsage(): number; - getRecentCpuUsage(last: number): any; - getRecentFrames(last: number): any; - getRecentMemoryUsage(last: number): any; - getRecentPaintRequests(last: number): any; - removeEventListener(eventType: string, callback: Function): void; - repositionWindow(x: number, y: number): void; - resizeWindow(width: number, height: number): void; -} - -declare var PerfWidgetExternal: { - prototype: PerfWidgetExternal; - new(): PerfWidgetExternal; -} - -interface Performance { - navigation: PerformanceNavigation; - timing: PerformanceTiming; - clearMarks(markName?: string): void; - clearMeasures(measureName?: string): void; - clearResourceTimings(): void; - getEntries(): any; - getEntriesByName(name: string, entryType?: string): any; - getEntriesByType(entryType: string): any; - getMarks(markName?: string): any; - getMeasures(measureName?: string): any; - mark(markName: string): void; - measure(measureName: string, startMarkName?: string, endMarkName?: string): void; - now(): number; - setResourceTimingBufferSize(maxSize: number): void; - toJSON(): any; -} - -declare var Performance: { - prototype: Performance; - new(): Performance; -} - -interface PerformanceEntry { - duration: number; - entryType: string; - name: string; - startTime: number; -} - -declare var PerformanceEntry: { - prototype: PerformanceEntry; - new(): PerformanceEntry; -} - -interface PerformanceMark extends PerformanceEntry { -} - -declare var PerformanceMark: { - prototype: PerformanceMark; - new(): PerformanceMark; -} - -interface PerformanceMeasure extends PerformanceEntry { -} - -declare var PerformanceMeasure: { - prototype: PerformanceMeasure; - new(): PerformanceMeasure; -} - -interface PerformanceNavigation { - redirectCount: number; - type: number; - toJSON(): any; - TYPE_BACK_FORWARD: number; - TYPE_NAVIGATE: number; - TYPE_RELOAD: number; - TYPE_RESERVED: number; -} - -declare var PerformanceNavigation: { - prototype: PerformanceNavigation; - new(): PerformanceNavigation; - TYPE_BACK_FORWARD: number; - TYPE_NAVIGATE: number; - TYPE_RELOAD: number; - TYPE_RESERVED: number; -} - -interface PerformanceNavigationTiming extends PerformanceEntry { - connectEnd: number; - connectStart: number; - domComplete: number; - domContentLoadedEventEnd: number; - domContentLoadedEventStart: number; - domInteractive: number; - domLoading: number; - domainLookupEnd: number; - domainLookupStart: number; - fetchStart: number; - loadEventEnd: number; - loadEventStart: number; - navigationStart: number; - redirectCount: number; - redirectEnd: number; - redirectStart: number; - requestStart: number; - responseEnd: number; - responseStart: number; - type: string; - unloadEventEnd: number; - unloadEventStart: number; -} - -declare var PerformanceNavigationTiming: { - prototype: PerformanceNavigationTiming; - new(): PerformanceNavigationTiming; -} - -interface PerformanceResourceTiming extends PerformanceEntry { - connectEnd: number; - connectStart: number; - domainLookupEnd: number; - domainLookupStart: number; - fetchStart: number; - initiatorType: string; - redirectEnd: number; - redirectStart: number; - requestStart: number; - responseEnd: number; - responseStart: number; -} - -declare var PerformanceResourceTiming: { - prototype: PerformanceResourceTiming; - new(): PerformanceResourceTiming; -} - -interface PerformanceTiming { - connectEnd: number; - connectStart: number; - domComplete: number; - domContentLoadedEventEnd: number; - domContentLoadedEventStart: number; - domInteractive: number; - domLoading: number; - domainLookupEnd: number; - domainLookupStart: number; - fetchStart: number; - loadEventEnd: number; - loadEventStart: number; - msFirstPaint: number; - navigationStart: number; - redirectEnd: number; - redirectStart: number; - requestStart: number; - responseEnd: number; - responseStart: number; - unloadEventEnd: number; - unloadEventStart: number; - toJSON(): any; -} - -declare var PerformanceTiming: { - prototype: PerformanceTiming; - new(): PerformanceTiming; -} - -interface PeriodicWave { -} - -declare var PeriodicWave: { - prototype: PeriodicWave; - new(): PeriodicWave; -} - -interface PermissionRequest extends DeferredPermissionRequest { - state: string; - defer(): void; -} - -declare var PermissionRequest: { - prototype: PermissionRequest; - new(): PermissionRequest; -} - -interface PermissionRequestedEvent extends Event { - permissionRequest: PermissionRequest; -} - -declare var PermissionRequestedEvent: { - prototype: PermissionRequestedEvent; - new(): PermissionRequestedEvent; -} - -interface Plugin { - description: string; - filename: string; - length: number; - name: string; - version: string; - item(index: number): MimeType; - namedItem(type: string): MimeType; - [index: number]: MimeType; -} - -declare var Plugin: { - prototype: Plugin; - new(): Plugin; -} - -interface PluginArray { - length: number; - item(index: number): Plugin; - namedItem(name: string): Plugin; - refresh(reload?: boolean): void; - [index: number]: Plugin; -} - -declare var PluginArray: { - prototype: PluginArray; - new(): PluginArray; -} - -interface PointerEvent extends MouseEvent { - currentPoint: any; - height: number; - hwTimestamp: number; - intermediatePoints: any; - isPrimary: boolean; - pointerId: number; - pointerType: any; - pressure: number; - rotation: number; - tiltX: number; - tiltY: number; - width: number; - getCurrentPoint(element: Element): void; - getIntermediatePoints(element: Element): void; - initPointerEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, screenXArg: number, screenYArg: number, clientXArg: number, clientYArg: number, ctrlKeyArg: boolean, altKeyArg: boolean, shiftKeyArg: boolean, metaKeyArg: boolean, buttonArg: number, relatedTargetArg: EventTarget, offsetXArg: number, offsetYArg: number, widthArg: number, heightArg: number, pressure: number, rotation: number, tiltX: number, tiltY: number, pointerIdArg: number, pointerType: any, hwTimestampArg: number, isPrimary: boolean): void; -} - -declare var PointerEvent: { - prototype: PointerEvent; - new(typeArg: string, eventInitDict?: PointerEventInit): PointerEvent; -} - -interface PopStateEvent extends Event { - state: any; - initPopStateEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, stateArg: any): void; -} - -declare var PopStateEvent: { - prototype: PopStateEvent; - new(): PopStateEvent; -} - -interface Position { - coords: Coordinates; - timestamp: number; -} - -declare var Position: { - prototype: Position; - new(): Position; -} - -interface PositionError { - code: number; - message: string; - toString(): string; - PERMISSION_DENIED: number; - POSITION_UNAVAILABLE: number; - TIMEOUT: number; -} - -declare var PositionError: { - prototype: PositionError; - new(): PositionError; - PERMISSION_DENIED: number; - POSITION_UNAVAILABLE: number; - TIMEOUT: number; -} - -interface ProcessingInstruction extends CharacterData { - target: string; -} - -declare var ProcessingInstruction: { - prototype: ProcessingInstruction; - new(): ProcessingInstruction; -} - -interface ProgressEvent extends Event { - lengthComputable: boolean; - loaded: number; - total: number; - initProgressEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, lengthComputableArg: boolean, loadedArg: number, totalArg: number): void; -} - -declare var ProgressEvent: { - prototype: ProgressEvent; - new(type: string, eventInitDict?: ProgressEventInit): ProgressEvent; -} - -interface Range { - collapsed: boolean; - commonAncestorContainer: Node; - endContainer: Node; - endOffset: number; - startContainer: Node; - startOffset: number; - cloneContents(): DocumentFragment; - cloneRange(): Range; - collapse(toStart: boolean): void; - compareBoundaryPoints(how: number, sourceRange: Range): number; - createContextualFragment(fragment: string): DocumentFragment; - deleteContents(): void; - detach(): void; - expand(Unit: string): boolean; - extractContents(): DocumentFragment; - getBoundingClientRect(): ClientRect; - getClientRects(): ClientRectList; - insertNode(newNode: Node): void; - selectNode(refNode: Node): void; - selectNodeContents(refNode: Node): void; - setEnd(refNode: Node, offset: number): void; - setEndAfter(refNode: Node): void; - setEndBefore(refNode: Node): void; - setStart(refNode: Node, offset: number): void; - setStartAfter(refNode: Node): void; - setStartBefore(refNode: Node): void; - surroundContents(newParent: Node): void; - toString(): string; - END_TO_END: number; - END_TO_START: number; - START_TO_END: number; - START_TO_START: number; -} - -declare var Range: { - prototype: Range; - new(): Range; - END_TO_END: number; - END_TO_START: number; - START_TO_END: number; - START_TO_START: number; -} - -interface SVGAElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired, SVGURIReference { - target: SVGAnimatedString; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var SVGAElement: { - prototype: SVGAElement; - new(): SVGAElement; -} - -interface SVGAngle { - unitType: number; - value: number; - valueAsString: string; - valueInSpecifiedUnits: number; - convertToSpecifiedUnits(unitType: number): void; - newValueSpecifiedUnits(unitType: number, valueInSpecifiedUnits: number): void; - SVG_ANGLETYPE_DEG: number; - SVG_ANGLETYPE_GRAD: number; - SVG_ANGLETYPE_RAD: number; - SVG_ANGLETYPE_UNKNOWN: number; - SVG_ANGLETYPE_UNSPECIFIED: number; -} - -declare var SVGAngle: { - prototype: SVGAngle; - new(): SVGAngle; - SVG_ANGLETYPE_DEG: number; - SVG_ANGLETYPE_GRAD: number; - SVG_ANGLETYPE_RAD: number; - SVG_ANGLETYPE_UNKNOWN: number; - SVG_ANGLETYPE_UNSPECIFIED: number; -} - -interface SVGAnimatedAngle { - animVal: SVGAngle; - baseVal: SVGAngle; -} - -declare var SVGAnimatedAngle: { - prototype: SVGAnimatedAngle; - new(): SVGAnimatedAngle; -} - -interface SVGAnimatedBoolean { - animVal: boolean; - baseVal: boolean; -} - -declare var SVGAnimatedBoolean: { - prototype: SVGAnimatedBoolean; - new(): SVGAnimatedBoolean; -} - -interface SVGAnimatedEnumeration { - animVal: number; - baseVal: number; -} - -declare var SVGAnimatedEnumeration: { - prototype: SVGAnimatedEnumeration; - new(): SVGAnimatedEnumeration; -} - -interface SVGAnimatedInteger { - animVal: number; - baseVal: number; -} - -declare var SVGAnimatedInteger: { - prototype: SVGAnimatedInteger; - new(): SVGAnimatedInteger; -} - -interface SVGAnimatedLength { - animVal: SVGLength; - baseVal: SVGLength; -} - -declare var SVGAnimatedLength: { - prototype: SVGAnimatedLength; - new(): SVGAnimatedLength; -} - -interface SVGAnimatedLengthList { - animVal: SVGLengthList; - baseVal: SVGLengthList; -} - -declare var SVGAnimatedLengthList: { - prototype: SVGAnimatedLengthList; - new(): SVGAnimatedLengthList; -} - -interface SVGAnimatedNumber { - animVal: number; - baseVal: number; -} - -declare var SVGAnimatedNumber: { - prototype: SVGAnimatedNumber; - new(): SVGAnimatedNumber; -} - -interface SVGAnimatedNumberList { - animVal: SVGNumberList; - baseVal: SVGNumberList; -} - -declare var SVGAnimatedNumberList: { - prototype: SVGAnimatedNumberList; - new(): SVGAnimatedNumberList; -} - -interface SVGAnimatedPreserveAspectRatio { - animVal: SVGPreserveAspectRatio; - baseVal: SVGPreserveAspectRatio; -} - -declare var SVGAnimatedPreserveAspectRatio: { - prototype: SVGAnimatedPreserveAspectRatio; - new(): SVGAnimatedPreserveAspectRatio; -} - -interface SVGAnimatedRect { - animVal: SVGRect; - baseVal: SVGRect; -} - -declare var SVGAnimatedRect: { - prototype: SVGAnimatedRect; - new(): SVGAnimatedRect; -} - -interface SVGAnimatedString { - animVal: string; - baseVal: string; -} - -declare var SVGAnimatedString: { - prototype: SVGAnimatedString; - new(): SVGAnimatedString; -} - -interface SVGAnimatedTransformList { - animVal: SVGTransformList; - baseVal: SVGTransformList; -} - -declare var SVGAnimatedTransformList: { - prototype: SVGAnimatedTransformList; - new(): SVGAnimatedTransformList; -} - -interface SVGCircleElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired { - cx: SVGAnimatedLength; - cy: SVGAnimatedLength; - r: SVGAnimatedLength; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var SVGCircleElement: { - prototype: SVGCircleElement; - new(): SVGCircleElement; -} - -interface SVGClipPathElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired, SVGUnitTypes { - clipPathUnits: SVGAnimatedEnumeration; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var SVGClipPathElement: { - prototype: SVGClipPathElement; - new(): SVGClipPathElement; -} - -interface SVGComponentTransferFunctionElement extends SVGElement { - amplitude: SVGAnimatedNumber; - exponent: SVGAnimatedNumber; - intercept: SVGAnimatedNumber; - offset: SVGAnimatedNumber; - slope: SVGAnimatedNumber; - tableValues: SVGAnimatedNumberList; - type: SVGAnimatedEnumeration; - SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE: number; - SVG_FECOMPONENTTRANSFER_TYPE_GAMMA: number; - SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY: number; - SVG_FECOMPONENTTRANSFER_TYPE_LINEAR: number; - SVG_FECOMPONENTTRANSFER_TYPE_TABLE: number; - SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN: number; -} - -declare var SVGComponentTransferFunctionElement: { - prototype: SVGComponentTransferFunctionElement; - new(): SVGComponentTransferFunctionElement; - SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE: number; - SVG_FECOMPONENTTRANSFER_TYPE_GAMMA: number; - SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY: number; - SVG_FECOMPONENTTRANSFER_TYPE_LINEAR: number; - SVG_FECOMPONENTTRANSFER_TYPE_TABLE: number; - SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN: number; -} - -interface SVGDefsElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired { - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var SVGDefsElement: { - prototype: SVGDefsElement; - new(): SVGDefsElement; -} - -interface SVGDescElement extends SVGElement, SVGStylable, SVGLangSpace { - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var SVGDescElement: { - prototype: SVGDescElement; - new(): SVGDescElement; -} - -interface SVGElement extends Element { - id: string; - onclick: (ev: MouseEvent) => any; - ondblclick: (ev: MouseEvent) => any; - onfocusin: (ev: FocusEvent) => any; - onfocusout: (ev: FocusEvent) => any; - onload: (ev: Event) => any; - onmousedown: (ev: MouseEvent) => any; - onmousemove: (ev: MouseEvent) => any; - onmouseout: (ev: MouseEvent) => any; - onmouseover: (ev: MouseEvent) => any; - onmouseup: (ev: MouseEvent) => any; - ownerSVGElement: SVGSVGElement; - viewportElement: SVGElement; - xmlbase: string; - className: any; - addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureDoubleTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureEnd", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureHold", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGotPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSInertiaStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSLostPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerCancel", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerDown", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerEnter", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerLeave", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerMove", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerOut", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerOver", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerUp", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void; - addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "focusin", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; - addEventListener(type: "focusout", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; - addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "load", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "lostpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousedown", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousemove", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointercancel", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerdown", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerenter", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerleave", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointermove", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerout", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerover", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerup", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchcancel", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchend", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchmove", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchstart", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "webkitfullscreenchange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "webkitfullscreenerror", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "wheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var SVGElement: { - prototype: SVGElement; - new(): SVGElement; -} - -interface SVGElementInstance extends EventTarget { - childNodes: SVGElementInstanceList; - correspondingElement: SVGElement; - correspondingUseElement: SVGUseElement; - firstChild: SVGElementInstance; - lastChild: SVGElementInstance; - nextSibling: SVGElementInstance; - parentNode: SVGElementInstance; - previousSibling: SVGElementInstance; -} - -declare var SVGElementInstance: { - prototype: SVGElementInstance; - new(): SVGElementInstance; -} - -interface SVGElementInstanceList { - length: number; - item(index: number): SVGElementInstance; -} - -declare var SVGElementInstanceList: { - prototype: SVGElementInstanceList; - new(): SVGElementInstanceList; -} - -interface SVGEllipseElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired { - cx: SVGAnimatedLength; - cy: SVGAnimatedLength; - rx: SVGAnimatedLength; - ry: SVGAnimatedLength; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var SVGEllipseElement: { - prototype: SVGEllipseElement; - new(): SVGEllipseElement; -} - -interface SVGFEBlendElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - in1: SVGAnimatedString; - in2: SVGAnimatedString; - mode: SVGAnimatedEnumeration; - SVG_FEBLEND_MODE_COLOR: number; - SVG_FEBLEND_MODE_COLOR_BURN: number; - SVG_FEBLEND_MODE_COLOR_DODGE: number; - SVG_FEBLEND_MODE_DARKEN: number; - SVG_FEBLEND_MODE_DIFFERENCE: number; - SVG_FEBLEND_MODE_EXCLUSION: number; - SVG_FEBLEND_MODE_HARD_LIGHT: number; - SVG_FEBLEND_MODE_HUE: number; - SVG_FEBLEND_MODE_LIGHTEN: number; - SVG_FEBLEND_MODE_LUMINOSITY: number; - SVG_FEBLEND_MODE_MULTIPLY: number; - SVG_FEBLEND_MODE_NORMAL: number; - SVG_FEBLEND_MODE_OVERLAY: number; - SVG_FEBLEND_MODE_SATURATION: number; - SVG_FEBLEND_MODE_SCREEN: number; - SVG_FEBLEND_MODE_SOFT_LIGHT: number; - SVG_FEBLEND_MODE_UNKNOWN: number; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var SVGFEBlendElement: { - prototype: SVGFEBlendElement; - new(): SVGFEBlendElement; - SVG_FEBLEND_MODE_COLOR: number; - SVG_FEBLEND_MODE_COLOR_BURN: number; - SVG_FEBLEND_MODE_COLOR_DODGE: number; - SVG_FEBLEND_MODE_DARKEN: number; - SVG_FEBLEND_MODE_DIFFERENCE: number; - SVG_FEBLEND_MODE_EXCLUSION: number; - SVG_FEBLEND_MODE_HARD_LIGHT: number; - SVG_FEBLEND_MODE_HUE: number; - SVG_FEBLEND_MODE_LIGHTEN: number; - SVG_FEBLEND_MODE_LUMINOSITY: number; - SVG_FEBLEND_MODE_MULTIPLY: number; - SVG_FEBLEND_MODE_NORMAL: number; - SVG_FEBLEND_MODE_OVERLAY: number; - SVG_FEBLEND_MODE_SATURATION: number; - SVG_FEBLEND_MODE_SCREEN: number; - SVG_FEBLEND_MODE_SOFT_LIGHT: number; - SVG_FEBLEND_MODE_UNKNOWN: number; -} - -interface SVGFEColorMatrixElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - in1: SVGAnimatedString; - type: SVGAnimatedEnumeration; - values: SVGAnimatedNumberList; - SVG_FECOLORMATRIX_TYPE_HUEROTATE: number; - SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA: number; - SVG_FECOLORMATRIX_TYPE_MATRIX: number; - SVG_FECOLORMATRIX_TYPE_SATURATE: number; - SVG_FECOLORMATRIX_TYPE_UNKNOWN: number; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var SVGFEColorMatrixElement: { - prototype: SVGFEColorMatrixElement; - new(): SVGFEColorMatrixElement; - SVG_FECOLORMATRIX_TYPE_HUEROTATE: number; - SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA: number; - SVG_FECOLORMATRIX_TYPE_MATRIX: number; - SVG_FECOLORMATRIX_TYPE_SATURATE: number; - SVG_FECOLORMATRIX_TYPE_UNKNOWN: number; -} - -interface SVGFEComponentTransferElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - in1: SVGAnimatedString; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var SVGFEComponentTransferElement: { - prototype: SVGFEComponentTransferElement; - new(): SVGFEComponentTransferElement; -} - -interface SVGFECompositeElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - in1: SVGAnimatedString; - in2: SVGAnimatedString; - k1: SVGAnimatedNumber; - k2: SVGAnimatedNumber; - k3: SVGAnimatedNumber; - k4: SVGAnimatedNumber; - operator: SVGAnimatedEnumeration; - SVG_FECOMPOSITE_OPERATOR_ARITHMETIC: number; - SVG_FECOMPOSITE_OPERATOR_ATOP: number; - SVG_FECOMPOSITE_OPERATOR_IN: number; - SVG_FECOMPOSITE_OPERATOR_OUT: number; - SVG_FECOMPOSITE_OPERATOR_OVER: number; - SVG_FECOMPOSITE_OPERATOR_UNKNOWN: number; - SVG_FECOMPOSITE_OPERATOR_XOR: number; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var SVGFECompositeElement: { - prototype: SVGFECompositeElement; - new(): SVGFECompositeElement; - SVG_FECOMPOSITE_OPERATOR_ARITHMETIC: number; - SVG_FECOMPOSITE_OPERATOR_ATOP: number; - SVG_FECOMPOSITE_OPERATOR_IN: number; - SVG_FECOMPOSITE_OPERATOR_OUT: number; - SVG_FECOMPOSITE_OPERATOR_OVER: number; - SVG_FECOMPOSITE_OPERATOR_UNKNOWN: number; - SVG_FECOMPOSITE_OPERATOR_XOR: number; -} - -interface SVGFEConvolveMatrixElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - bias: SVGAnimatedNumber; - divisor: SVGAnimatedNumber; - edgeMode: SVGAnimatedEnumeration; - in1: SVGAnimatedString; - kernelMatrix: SVGAnimatedNumberList; - kernelUnitLengthX: SVGAnimatedNumber; - kernelUnitLengthY: SVGAnimatedNumber; - orderX: SVGAnimatedInteger; - orderY: SVGAnimatedInteger; - preserveAlpha: SVGAnimatedBoolean; - targetX: SVGAnimatedInteger; - targetY: SVGAnimatedInteger; - SVG_EDGEMODE_DUPLICATE: number; - SVG_EDGEMODE_NONE: number; - SVG_EDGEMODE_UNKNOWN: number; - SVG_EDGEMODE_WRAP: number; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var SVGFEConvolveMatrixElement: { - prototype: SVGFEConvolveMatrixElement; - new(): SVGFEConvolveMatrixElement; - SVG_EDGEMODE_DUPLICATE: number; - SVG_EDGEMODE_NONE: number; - SVG_EDGEMODE_UNKNOWN: number; - SVG_EDGEMODE_WRAP: number; -} - -interface SVGFEDiffuseLightingElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - diffuseConstant: SVGAnimatedNumber; - in1: SVGAnimatedString; - kernelUnitLengthX: SVGAnimatedNumber; - kernelUnitLengthY: SVGAnimatedNumber; - surfaceScale: SVGAnimatedNumber; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var SVGFEDiffuseLightingElement: { - prototype: SVGFEDiffuseLightingElement; - new(): SVGFEDiffuseLightingElement; -} - -interface SVGFEDisplacementMapElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - in1: SVGAnimatedString; - in2: SVGAnimatedString; - scale: SVGAnimatedNumber; - xChannelSelector: SVGAnimatedEnumeration; - yChannelSelector: SVGAnimatedEnumeration; - SVG_CHANNEL_A: number; - SVG_CHANNEL_B: number; - SVG_CHANNEL_G: number; - SVG_CHANNEL_R: number; - SVG_CHANNEL_UNKNOWN: number; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var SVGFEDisplacementMapElement: { - prototype: SVGFEDisplacementMapElement; - new(): SVGFEDisplacementMapElement; - SVG_CHANNEL_A: number; - SVG_CHANNEL_B: number; - SVG_CHANNEL_G: number; - SVG_CHANNEL_R: number; - SVG_CHANNEL_UNKNOWN: number; -} - -interface SVGFEDistantLightElement extends SVGElement { - azimuth: SVGAnimatedNumber; - elevation: SVGAnimatedNumber; -} - -declare var SVGFEDistantLightElement: { - prototype: SVGFEDistantLightElement; - new(): SVGFEDistantLightElement; -} - -interface SVGFEFloodElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var SVGFEFloodElement: { - prototype: SVGFEFloodElement; - new(): SVGFEFloodElement; -} - -interface SVGFEFuncAElement extends SVGComponentTransferFunctionElement { -} - -declare var SVGFEFuncAElement: { - prototype: SVGFEFuncAElement; - new(): SVGFEFuncAElement; -} - -interface SVGFEFuncBElement extends SVGComponentTransferFunctionElement { -} - -declare var SVGFEFuncBElement: { - prototype: SVGFEFuncBElement; - new(): SVGFEFuncBElement; -} - -interface SVGFEFuncGElement extends SVGComponentTransferFunctionElement { -} - -declare var SVGFEFuncGElement: { - prototype: SVGFEFuncGElement; - new(): SVGFEFuncGElement; -} - -interface SVGFEFuncRElement extends SVGComponentTransferFunctionElement { -} - -declare var SVGFEFuncRElement: { - prototype: SVGFEFuncRElement; - new(): SVGFEFuncRElement; -} - -interface SVGFEGaussianBlurElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - in1: SVGAnimatedString; - stdDeviationX: SVGAnimatedNumber; - stdDeviationY: SVGAnimatedNumber; - setStdDeviation(stdDeviationX: number, stdDeviationY: number): void; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var SVGFEGaussianBlurElement: { - prototype: SVGFEGaussianBlurElement; - new(): SVGFEGaussianBlurElement; -} - -interface SVGFEImageElement extends SVGElement, SVGFilterPrimitiveStandardAttributes, SVGLangSpace, SVGURIReference, SVGExternalResourcesRequired { - preserveAspectRatio: SVGAnimatedPreserveAspectRatio; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var SVGFEImageElement: { - prototype: SVGFEImageElement; - new(): SVGFEImageElement; -} - -interface SVGFEMergeElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var SVGFEMergeElement: { - prototype: SVGFEMergeElement; - new(): SVGFEMergeElement; -} - -interface SVGFEMergeNodeElement extends SVGElement { - in1: SVGAnimatedString; -} - -declare var SVGFEMergeNodeElement: { - prototype: SVGFEMergeNodeElement; - new(): SVGFEMergeNodeElement; -} - -interface SVGFEMorphologyElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - in1: SVGAnimatedString; - operator: SVGAnimatedEnumeration; - radiusX: SVGAnimatedNumber; - radiusY: SVGAnimatedNumber; - SVG_MORPHOLOGY_OPERATOR_DILATE: number; - SVG_MORPHOLOGY_OPERATOR_ERODE: number; - SVG_MORPHOLOGY_OPERATOR_UNKNOWN: number; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var SVGFEMorphologyElement: { - prototype: SVGFEMorphologyElement; - new(): SVGFEMorphologyElement; - SVG_MORPHOLOGY_OPERATOR_DILATE: number; - SVG_MORPHOLOGY_OPERATOR_ERODE: number; - SVG_MORPHOLOGY_OPERATOR_UNKNOWN: number; -} - -interface SVGFEOffsetElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - dx: SVGAnimatedNumber; - dy: SVGAnimatedNumber; - in1: SVGAnimatedString; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var SVGFEOffsetElement: { - prototype: SVGFEOffsetElement; - new(): SVGFEOffsetElement; -} - -interface SVGFEPointLightElement extends SVGElement { - x: SVGAnimatedNumber; - y: SVGAnimatedNumber; - z: SVGAnimatedNumber; -} - -declare var SVGFEPointLightElement: { - prototype: SVGFEPointLightElement; - new(): SVGFEPointLightElement; -} - -interface SVGFESpecularLightingElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - in1: SVGAnimatedString; - kernelUnitLengthX: SVGAnimatedNumber; - kernelUnitLengthY: SVGAnimatedNumber; - specularConstant: SVGAnimatedNumber; - specularExponent: SVGAnimatedNumber; - surfaceScale: SVGAnimatedNumber; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var SVGFESpecularLightingElement: { - prototype: SVGFESpecularLightingElement; - new(): SVGFESpecularLightingElement; -} - -interface SVGFESpotLightElement extends SVGElement { - limitingConeAngle: SVGAnimatedNumber; - pointsAtX: SVGAnimatedNumber; - pointsAtY: SVGAnimatedNumber; - pointsAtZ: SVGAnimatedNumber; - specularExponent: SVGAnimatedNumber; - x: SVGAnimatedNumber; - y: SVGAnimatedNumber; - z: SVGAnimatedNumber; -} - -declare var SVGFESpotLightElement: { - prototype: SVGFESpotLightElement; - new(): SVGFESpotLightElement; -} - -interface SVGFETileElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - in1: SVGAnimatedString; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var SVGFETileElement: { - prototype: SVGFETileElement; - new(): SVGFETileElement; -} - -interface SVGFETurbulenceElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - baseFrequencyX: SVGAnimatedNumber; - baseFrequencyY: SVGAnimatedNumber; - numOctaves: SVGAnimatedInteger; - seed: SVGAnimatedNumber; - stitchTiles: SVGAnimatedEnumeration; - type: SVGAnimatedEnumeration; - SVG_STITCHTYPE_NOSTITCH: number; - SVG_STITCHTYPE_STITCH: number; - SVG_STITCHTYPE_UNKNOWN: number; - SVG_TURBULENCE_TYPE_FRACTALNOISE: number; - SVG_TURBULENCE_TYPE_TURBULENCE: number; - SVG_TURBULENCE_TYPE_UNKNOWN: number; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var SVGFETurbulenceElement: { - prototype: SVGFETurbulenceElement; - new(): SVGFETurbulenceElement; - SVG_STITCHTYPE_NOSTITCH: number; - SVG_STITCHTYPE_STITCH: number; - SVG_STITCHTYPE_UNKNOWN: number; - SVG_TURBULENCE_TYPE_FRACTALNOISE: number; - SVG_TURBULENCE_TYPE_TURBULENCE: number; - SVG_TURBULENCE_TYPE_UNKNOWN: number; -} - -interface SVGFilterElement extends SVGElement, SVGUnitTypes, SVGStylable, SVGLangSpace, SVGURIReference, SVGExternalResourcesRequired { - filterResX: SVGAnimatedInteger; - filterResY: SVGAnimatedInteger; - filterUnits: SVGAnimatedEnumeration; - height: SVGAnimatedLength; - primitiveUnits: SVGAnimatedEnumeration; - width: SVGAnimatedLength; - x: SVGAnimatedLength; - y: SVGAnimatedLength; - setFilterRes(filterResX: number, filterResY: number): void; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var SVGFilterElement: { - prototype: SVGFilterElement; - new(): SVGFilterElement; -} - -interface SVGForeignObjectElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired { - height: SVGAnimatedLength; - width: SVGAnimatedLength; - x: SVGAnimatedLength; - y: SVGAnimatedLength; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var SVGForeignObjectElement: { - prototype: SVGForeignObjectElement; - new(): SVGForeignObjectElement; -} - -interface SVGGElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired { - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var SVGGElement: { - prototype: SVGGElement; - new(): SVGGElement; -} - -interface SVGGradientElement extends SVGElement, SVGStylable, SVGExternalResourcesRequired, SVGURIReference, SVGUnitTypes { - gradientTransform: SVGAnimatedTransformList; - gradientUnits: SVGAnimatedEnumeration; - spreadMethod: SVGAnimatedEnumeration; - SVG_SPREADMETHOD_PAD: number; - SVG_SPREADMETHOD_REFLECT: number; - SVG_SPREADMETHOD_REPEAT: number; - SVG_SPREADMETHOD_UNKNOWN: number; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var SVGGradientElement: { - prototype: SVGGradientElement; - new(): SVGGradientElement; - SVG_SPREADMETHOD_PAD: number; - SVG_SPREADMETHOD_REFLECT: number; - SVG_SPREADMETHOD_REPEAT: number; - SVG_SPREADMETHOD_UNKNOWN: number; -} - -interface SVGImageElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired, SVGURIReference { - height: SVGAnimatedLength; - preserveAspectRatio: SVGAnimatedPreserveAspectRatio; - width: SVGAnimatedLength; - x: SVGAnimatedLength; - y: SVGAnimatedLength; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var SVGImageElement: { - prototype: SVGImageElement; - new(): SVGImageElement; -} - -interface SVGLength { - unitType: number; - value: number; - valueAsString: string; - valueInSpecifiedUnits: number; - convertToSpecifiedUnits(unitType: number): void; - newValueSpecifiedUnits(unitType: number, valueInSpecifiedUnits: number): void; - SVG_LENGTHTYPE_CM: number; - SVG_LENGTHTYPE_EMS: number; - SVG_LENGTHTYPE_EXS: number; - SVG_LENGTHTYPE_IN: number; - SVG_LENGTHTYPE_MM: number; - SVG_LENGTHTYPE_NUMBER: number; - SVG_LENGTHTYPE_PC: number; - SVG_LENGTHTYPE_PERCENTAGE: number; - SVG_LENGTHTYPE_PT: number; - SVG_LENGTHTYPE_PX: number; - SVG_LENGTHTYPE_UNKNOWN: number; -} - -declare var SVGLength: { - prototype: SVGLength; - new(): SVGLength; - SVG_LENGTHTYPE_CM: number; - SVG_LENGTHTYPE_EMS: number; - SVG_LENGTHTYPE_EXS: number; - SVG_LENGTHTYPE_IN: number; - SVG_LENGTHTYPE_MM: number; - SVG_LENGTHTYPE_NUMBER: number; - SVG_LENGTHTYPE_PC: number; - SVG_LENGTHTYPE_PERCENTAGE: number; - SVG_LENGTHTYPE_PT: number; - SVG_LENGTHTYPE_PX: number; - SVG_LENGTHTYPE_UNKNOWN: number; -} - -interface SVGLengthList { - numberOfItems: number; - appendItem(newItem: SVGLength): SVGLength; - clear(): void; - getItem(index: number): SVGLength; - initialize(newItem: SVGLength): SVGLength; - insertItemBefore(newItem: SVGLength, index: number): SVGLength; - removeItem(index: number): SVGLength; - replaceItem(newItem: SVGLength, index: number): SVGLength; -} - -declare var SVGLengthList: { - prototype: SVGLengthList; - new(): SVGLengthList; -} - -interface SVGLineElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired { - x1: SVGAnimatedLength; - x2: SVGAnimatedLength; - y1: SVGAnimatedLength; - y2: SVGAnimatedLength; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var SVGLineElement: { - prototype: SVGLineElement; - new(): SVGLineElement; -} - -interface SVGLinearGradientElement extends SVGGradientElement { - x1: SVGAnimatedLength; - x2: SVGAnimatedLength; - y1: SVGAnimatedLength; - y2: SVGAnimatedLength; -} - -declare var SVGLinearGradientElement: { - prototype: SVGLinearGradientElement; - new(): SVGLinearGradientElement; -} - -interface SVGMarkerElement extends SVGElement, SVGStylable, SVGLangSpace, SVGExternalResourcesRequired, SVGFitToViewBox { - markerHeight: SVGAnimatedLength; - markerUnits: SVGAnimatedEnumeration; - markerWidth: SVGAnimatedLength; - orientAngle: SVGAnimatedAngle; - orientType: SVGAnimatedEnumeration; - refX: SVGAnimatedLength; - refY: SVGAnimatedLength; - setOrientToAngle(angle: SVGAngle): void; - setOrientToAuto(): void; - SVG_MARKERUNITS_STROKEWIDTH: number; - SVG_MARKERUNITS_UNKNOWN: number; - SVG_MARKERUNITS_USERSPACEONUSE: number; - SVG_MARKER_ORIENT_ANGLE: number; - SVG_MARKER_ORIENT_AUTO: number; - SVG_MARKER_ORIENT_UNKNOWN: number; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var SVGMarkerElement: { - prototype: SVGMarkerElement; - new(): SVGMarkerElement; - SVG_MARKERUNITS_STROKEWIDTH: number; - SVG_MARKERUNITS_UNKNOWN: number; - SVG_MARKERUNITS_USERSPACEONUSE: number; - SVG_MARKER_ORIENT_ANGLE: number; - SVG_MARKER_ORIENT_AUTO: number; - SVG_MARKER_ORIENT_UNKNOWN: number; -} - -interface SVGMaskElement extends SVGElement, SVGStylable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired, SVGUnitTypes { - height: SVGAnimatedLength; - maskContentUnits: SVGAnimatedEnumeration; - maskUnits: SVGAnimatedEnumeration; - width: SVGAnimatedLength; - x: SVGAnimatedLength; - y: SVGAnimatedLength; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var SVGMaskElement: { - prototype: SVGMaskElement; - new(): SVGMaskElement; -} - -interface SVGMatrix { - a: number; - b: number; - c: number; - d: number; - e: number; - f: number; - flipX(): SVGMatrix; - flipY(): SVGMatrix; - inverse(): SVGMatrix; - multiply(secondMatrix: SVGMatrix): SVGMatrix; - rotate(angle: number): SVGMatrix; - rotateFromVector(x: number, y: number): SVGMatrix; - scale(scaleFactor: number): SVGMatrix; - scaleNonUniform(scaleFactorX: number, scaleFactorY: number): SVGMatrix; - skewX(angle: number): SVGMatrix; - skewY(angle: number): SVGMatrix; - translate(x: number, y: number): SVGMatrix; -} - -declare var SVGMatrix: { - prototype: SVGMatrix; - new(): SVGMatrix; -} - -interface SVGMetadataElement extends SVGElement { -} - -declare var SVGMetadataElement: { - prototype: SVGMetadataElement; - new(): SVGMetadataElement; -} - -interface SVGNumber { - value: number; -} - -declare var SVGNumber: { - prototype: SVGNumber; - new(): SVGNumber; -} - -interface SVGNumberList { - numberOfItems: number; - appendItem(newItem: SVGNumber): SVGNumber; - clear(): void; - getItem(index: number): SVGNumber; - initialize(newItem: SVGNumber): SVGNumber; - insertItemBefore(newItem: SVGNumber, index: number): SVGNumber; - removeItem(index: number): SVGNumber; - replaceItem(newItem: SVGNumber, index: number): SVGNumber; -} - -declare var SVGNumberList: { - prototype: SVGNumberList; - new(): SVGNumberList; -} - -interface SVGPathElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired, SVGAnimatedPathData { - createSVGPathSegArcAbs(x: number, y: number, r1: number, r2: number, angle: number, largeArcFlag: boolean, sweepFlag: boolean): SVGPathSegArcAbs; - createSVGPathSegArcRel(x: number, y: number, r1: number, r2: number, angle: number, largeArcFlag: boolean, sweepFlag: boolean): SVGPathSegArcRel; - createSVGPathSegClosePath(): SVGPathSegClosePath; - createSVGPathSegCurvetoCubicAbs(x: number, y: number, x1: number, y1: number, x2: number, y2: number): SVGPathSegCurvetoCubicAbs; - createSVGPathSegCurvetoCubicRel(x: number, y: number, x1: number, y1: number, x2: number, y2: number): SVGPathSegCurvetoCubicRel; - createSVGPathSegCurvetoCubicSmoothAbs(x: number, y: number, x2: number, y2: number): SVGPathSegCurvetoCubicSmoothAbs; - createSVGPathSegCurvetoCubicSmoothRel(x: number, y: number, x2: number, y2: number): SVGPathSegCurvetoCubicSmoothRel; - createSVGPathSegCurvetoQuadraticAbs(x: number, y: number, x1: number, y1: number): SVGPathSegCurvetoQuadraticAbs; - createSVGPathSegCurvetoQuadraticRel(x: number, y: number, x1: number, y1: number): SVGPathSegCurvetoQuadraticRel; - createSVGPathSegCurvetoQuadraticSmoothAbs(x: number, y: number): SVGPathSegCurvetoQuadraticSmoothAbs; - createSVGPathSegCurvetoQuadraticSmoothRel(x: number, y: number): SVGPathSegCurvetoQuadraticSmoothRel; - createSVGPathSegLinetoAbs(x: number, y: number): SVGPathSegLinetoAbs; - createSVGPathSegLinetoHorizontalAbs(x: number): SVGPathSegLinetoHorizontalAbs; - createSVGPathSegLinetoHorizontalRel(x: number): SVGPathSegLinetoHorizontalRel; - createSVGPathSegLinetoRel(x: number, y: number): SVGPathSegLinetoRel; - createSVGPathSegLinetoVerticalAbs(y: number): SVGPathSegLinetoVerticalAbs; - createSVGPathSegLinetoVerticalRel(y: number): SVGPathSegLinetoVerticalRel; - createSVGPathSegMovetoAbs(x: number, y: number): SVGPathSegMovetoAbs; - createSVGPathSegMovetoRel(x: number, y: number): SVGPathSegMovetoRel; - getPathSegAtLength(distance: number): number; - getPointAtLength(distance: number): SVGPoint; - getTotalLength(): number; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var SVGPathElement: { - prototype: SVGPathElement; - new(): SVGPathElement; -} - -interface SVGPathSeg { - pathSegType: number; - pathSegTypeAsLetter: string; - PATHSEG_ARC_ABS: number; - PATHSEG_ARC_REL: number; - PATHSEG_CLOSEPATH: number; - PATHSEG_CURVETO_CUBIC_ABS: number; - PATHSEG_CURVETO_CUBIC_REL: number; - PATHSEG_CURVETO_CUBIC_SMOOTH_ABS: number; - PATHSEG_CURVETO_CUBIC_SMOOTH_REL: number; - PATHSEG_CURVETO_QUADRATIC_ABS: number; - PATHSEG_CURVETO_QUADRATIC_REL: number; - PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS: number; - PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL: number; - PATHSEG_LINETO_ABS: number; - PATHSEG_LINETO_HORIZONTAL_ABS: number; - PATHSEG_LINETO_HORIZONTAL_REL: number; - PATHSEG_LINETO_REL: number; - PATHSEG_LINETO_VERTICAL_ABS: number; - PATHSEG_LINETO_VERTICAL_REL: number; - PATHSEG_MOVETO_ABS: number; - PATHSEG_MOVETO_REL: number; - PATHSEG_UNKNOWN: number; -} - -declare var SVGPathSeg: { - prototype: SVGPathSeg; - new(): SVGPathSeg; - PATHSEG_ARC_ABS: number; - PATHSEG_ARC_REL: number; - PATHSEG_CLOSEPATH: number; - PATHSEG_CURVETO_CUBIC_ABS: number; - PATHSEG_CURVETO_CUBIC_REL: number; - PATHSEG_CURVETO_CUBIC_SMOOTH_ABS: number; - PATHSEG_CURVETO_CUBIC_SMOOTH_REL: number; - PATHSEG_CURVETO_QUADRATIC_ABS: number; - PATHSEG_CURVETO_QUADRATIC_REL: number; - PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS: number; - PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL: number; - PATHSEG_LINETO_ABS: number; - PATHSEG_LINETO_HORIZONTAL_ABS: number; - PATHSEG_LINETO_HORIZONTAL_REL: number; - PATHSEG_LINETO_REL: number; - PATHSEG_LINETO_VERTICAL_ABS: number; - PATHSEG_LINETO_VERTICAL_REL: number; - PATHSEG_MOVETO_ABS: number; - PATHSEG_MOVETO_REL: number; - PATHSEG_UNKNOWN: number; -} - -interface SVGPathSegArcAbs extends SVGPathSeg { - angle: number; - largeArcFlag: boolean; - r1: number; - r2: number; - sweepFlag: boolean; - x: number; - y: number; -} - -declare var SVGPathSegArcAbs: { - prototype: SVGPathSegArcAbs; - new(): SVGPathSegArcAbs; -} - -interface SVGPathSegArcRel extends SVGPathSeg { - angle: number; - largeArcFlag: boolean; - r1: number; - r2: number; - sweepFlag: boolean; - x: number; - y: number; -} - -declare var SVGPathSegArcRel: { - prototype: SVGPathSegArcRel; - new(): SVGPathSegArcRel; -} - -interface SVGPathSegClosePath extends SVGPathSeg { -} - -declare var SVGPathSegClosePath: { - prototype: SVGPathSegClosePath; - new(): SVGPathSegClosePath; -} - -interface SVGPathSegCurvetoCubicAbs extends SVGPathSeg { - x: number; - x1: number; - x2: number; - y: number; - y1: number; - y2: number; -} - -declare var SVGPathSegCurvetoCubicAbs: { - prototype: SVGPathSegCurvetoCubicAbs; - new(): SVGPathSegCurvetoCubicAbs; -} - -interface SVGPathSegCurvetoCubicRel extends SVGPathSeg { - x: number; - x1: number; - x2: number; - y: number; - y1: number; - y2: number; -} - -declare var SVGPathSegCurvetoCubicRel: { - prototype: SVGPathSegCurvetoCubicRel; - new(): SVGPathSegCurvetoCubicRel; -} - -interface SVGPathSegCurvetoCubicSmoothAbs extends SVGPathSeg { - x: number; - x2: number; - y: number; - y2: number; -} - -declare var SVGPathSegCurvetoCubicSmoothAbs: { - prototype: SVGPathSegCurvetoCubicSmoothAbs; - new(): SVGPathSegCurvetoCubicSmoothAbs; -} - -interface SVGPathSegCurvetoCubicSmoothRel extends SVGPathSeg { - x: number; - x2: number; - y: number; - y2: number; -} - -declare var SVGPathSegCurvetoCubicSmoothRel: { - prototype: SVGPathSegCurvetoCubicSmoothRel; - new(): SVGPathSegCurvetoCubicSmoothRel; -} - -interface SVGPathSegCurvetoQuadraticAbs extends SVGPathSeg { - x: number; - x1: number; - y: number; - y1: number; -} - -declare var SVGPathSegCurvetoQuadraticAbs: { - prototype: SVGPathSegCurvetoQuadraticAbs; - new(): SVGPathSegCurvetoQuadraticAbs; -} - -interface SVGPathSegCurvetoQuadraticRel extends SVGPathSeg { - x: number; - x1: number; - y: number; - y1: number; -} - -declare var SVGPathSegCurvetoQuadraticRel: { - prototype: SVGPathSegCurvetoQuadraticRel; - new(): SVGPathSegCurvetoQuadraticRel; -} - -interface SVGPathSegCurvetoQuadraticSmoothAbs extends SVGPathSeg { - x: number; - y: number; -} - -declare var SVGPathSegCurvetoQuadraticSmoothAbs: { - prototype: SVGPathSegCurvetoQuadraticSmoothAbs; - new(): SVGPathSegCurvetoQuadraticSmoothAbs; -} - -interface SVGPathSegCurvetoQuadraticSmoothRel extends SVGPathSeg { - x: number; - y: number; -} - -declare var SVGPathSegCurvetoQuadraticSmoothRel: { - prototype: SVGPathSegCurvetoQuadraticSmoothRel; - new(): SVGPathSegCurvetoQuadraticSmoothRel; -} - -interface SVGPathSegLinetoAbs extends SVGPathSeg { - x: number; - y: number; -} - -declare var SVGPathSegLinetoAbs: { - prototype: SVGPathSegLinetoAbs; - new(): SVGPathSegLinetoAbs; -} - -interface SVGPathSegLinetoHorizontalAbs extends SVGPathSeg { - x: number; -} - -declare var SVGPathSegLinetoHorizontalAbs: { - prototype: SVGPathSegLinetoHorizontalAbs; - new(): SVGPathSegLinetoHorizontalAbs; -} - -interface SVGPathSegLinetoHorizontalRel extends SVGPathSeg { - x: number; -} - -declare var SVGPathSegLinetoHorizontalRel: { - prototype: SVGPathSegLinetoHorizontalRel; - new(): SVGPathSegLinetoHorizontalRel; -} - -interface SVGPathSegLinetoRel extends SVGPathSeg { - x: number; - y: number; -} - -declare var SVGPathSegLinetoRel: { - prototype: SVGPathSegLinetoRel; - new(): SVGPathSegLinetoRel; -} - -interface SVGPathSegLinetoVerticalAbs extends SVGPathSeg { - y: number; -} - -declare var SVGPathSegLinetoVerticalAbs: { - prototype: SVGPathSegLinetoVerticalAbs; - new(): SVGPathSegLinetoVerticalAbs; -} - -interface SVGPathSegLinetoVerticalRel extends SVGPathSeg { - y: number; -} - -declare var SVGPathSegLinetoVerticalRel: { - prototype: SVGPathSegLinetoVerticalRel; - new(): SVGPathSegLinetoVerticalRel; -} - -interface SVGPathSegList { - numberOfItems: number; - appendItem(newItem: SVGPathSeg): SVGPathSeg; - clear(): void; - getItem(index: number): SVGPathSeg; - initialize(newItem: SVGPathSeg): SVGPathSeg; - insertItemBefore(newItem: SVGPathSeg, index: number): SVGPathSeg; - removeItem(index: number): SVGPathSeg; - replaceItem(newItem: SVGPathSeg, index: number): SVGPathSeg; -} - -declare var SVGPathSegList: { - prototype: SVGPathSegList; - new(): SVGPathSegList; -} - -interface SVGPathSegMovetoAbs extends SVGPathSeg { - x: number; - y: number; -} - -declare var SVGPathSegMovetoAbs: { - prototype: SVGPathSegMovetoAbs; - new(): SVGPathSegMovetoAbs; -} - -interface SVGPathSegMovetoRel extends SVGPathSeg { - x: number; - y: number; -} - -declare var SVGPathSegMovetoRel: { - prototype: SVGPathSegMovetoRel; - new(): SVGPathSegMovetoRel; -} - -interface SVGPatternElement extends SVGElement, SVGStylable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired, SVGFitToViewBox, SVGURIReference, SVGUnitTypes { - height: SVGAnimatedLength; - patternContentUnits: SVGAnimatedEnumeration; - patternTransform: SVGAnimatedTransformList; - patternUnits: SVGAnimatedEnumeration; - width: SVGAnimatedLength; - x: SVGAnimatedLength; - y: SVGAnimatedLength; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var SVGPatternElement: { - prototype: SVGPatternElement; - new(): SVGPatternElement; -} - -interface SVGPoint { - x: number; - y: number; - matrixTransform(matrix: SVGMatrix): SVGPoint; -} - -declare var SVGPoint: { - prototype: SVGPoint; - new(): SVGPoint; -} - -interface SVGPointList { - numberOfItems: number; - appendItem(newItem: SVGPoint): SVGPoint; - clear(): void; - getItem(index: number): SVGPoint; - initialize(newItem: SVGPoint): SVGPoint; - insertItemBefore(newItem: SVGPoint, index: number): SVGPoint; - removeItem(index: number): SVGPoint; - replaceItem(newItem: SVGPoint, index: number): SVGPoint; -} - -declare var SVGPointList: { - prototype: SVGPointList; - new(): SVGPointList; -} - -interface SVGPolygonElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired, SVGAnimatedPoints { - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var SVGPolygonElement: { - prototype: SVGPolygonElement; - new(): SVGPolygonElement; -} - -interface SVGPolylineElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired, SVGAnimatedPoints { - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var SVGPolylineElement: { - prototype: SVGPolylineElement; - new(): SVGPolylineElement; -} - -interface SVGPreserveAspectRatio { - align: number; - meetOrSlice: number; - SVG_MEETORSLICE_MEET: number; - SVG_MEETORSLICE_SLICE: number; - SVG_MEETORSLICE_UNKNOWN: number; - SVG_PRESERVEASPECTRATIO_NONE: number; - SVG_PRESERVEASPECTRATIO_UNKNOWN: number; - SVG_PRESERVEASPECTRATIO_XMAXYMAX: number; - SVG_PRESERVEASPECTRATIO_XMAXYMID: number; - SVG_PRESERVEASPECTRATIO_XMAXYMIN: number; - SVG_PRESERVEASPECTRATIO_XMIDYMAX: number; - SVG_PRESERVEASPECTRATIO_XMIDYMID: number; - SVG_PRESERVEASPECTRATIO_XMIDYMIN: number; - SVG_PRESERVEASPECTRATIO_XMINYMAX: number; - SVG_PRESERVEASPECTRATIO_XMINYMID: number; - SVG_PRESERVEASPECTRATIO_XMINYMIN: number; -} - -declare var SVGPreserveAspectRatio: { - prototype: SVGPreserveAspectRatio; - new(): SVGPreserveAspectRatio; - SVG_MEETORSLICE_MEET: number; - SVG_MEETORSLICE_SLICE: number; - SVG_MEETORSLICE_UNKNOWN: number; - SVG_PRESERVEASPECTRATIO_NONE: number; - SVG_PRESERVEASPECTRATIO_UNKNOWN: number; - SVG_PRESERVEASPECTRATIO_XMAXYMAX: number; - SVG_PRESERVEASPECTRATIO_XMAXYMID: number; - SVG_PRESERVEASPECTRATIO_XMAXYMIN: number; - SVG_PRESERVEASPECTRATIO_XMIDYMAX: number; - SVG_PRESERVEASPECTRATIO_XMIDYMID: number; - SVG_PRESERVEASPECTRATIO_XMIDYMIN: number; - SVG_PRESERVEASPECTRATIO_XMINYMAX: number; - SVG_PRESERVEASPECTRATIO_XMINYMID: number; - SVG_PRESERVEASPECTRATIO_XMINYMIN: number; -} - -interface SVGRadialGradientElement extends SVGGradientElement { - cx: SVGAnimatedLength; - cy: SVGAnimatedLength; - fx: SVGAnimatedLength; - fy: SVGAnimatedLength; - r: SVGAnimatedLength; -} - -declare var SVGRadialGradientElement: { - prototype: SVGRadialGradientElement; - new(): SVGRadialGradientElement; -} - -interface SVGRect { - height: number; - width: number; - x: number; - y: number; -} - -declare var SVGRect: { - prototype: SVGRect; - new(): SVGRect; -} - -interface SVGRectElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired { - height: SVGAnimatedLength; - rx: SVGAnimatedLength; - ry: SVGAnimatedLength; - width: SVGAnimatedLength; - x: SVGAnimatedLength; - y: SVGAnimatedLength; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var SVGRectElement: { - prototype: SVGRectElement; - new(): SVGRectElement; -} - -interface SVGSVGElement extends SVGElement, DocumentEvent, SVGLocatable, SVGTests, SVGStylable, SVGLangSpace, SVGExternalResourcesRequired, SVGFitToViewBox, SVGZoomAndPan { - contentScriptType: string; - contentStyleType: string; - currentScale: number; - currentTranslate: SVGPoint; - height: SVGAnimatedLength; - onabort: (ev: Event) => any; - onerror: (ev: Event) => any; - onresize: (ev: UIEvent) => any; - onscroll: (ev: UIEvent) => any; - onunload: (ev: Event) => any; - onzoom: (ev: SVGZoomEvent) => any; - pixelUnitToMillimeterX: number; - pixelUnitToMillimeterY: number; - screenPixelToMillimeterX: number; - screenPixelToMillimeterY: number; - viewport: SVGRect; - width: SVGAnimatedLength; - x: SVGAnimatedLength; - y: SVGAnimatedLength; - checkEnclosure(element: SVGElement, rect: SVGRect): boolean; - checkIntersection(element: SVGElement, rect: SVGRect): boolean; - createSVGAngle(): SVGAngle; - createSVGLength(): SVGLength; - createSVGMatrix(): SVGMatrix; - createSVGNumber(): SVGNumber; - createSVGPoint(): SVGPoint; - createSVGRect(): SVGRect; - createSVGTransform(): SVGTransform; - createSVGTransformFromMatrix(matrix: SVGMatrix): SVGTransform; - deselectAll(): void; - forceRedraw(): void; - getComputedStyle(elt: Element, pseudoElt?: string): CSSStyleDeclaration; - getCurrentTime(): number; - getElementById(elementId: string): Element; - getEnclosureList(rect: SVGRect, referenceElement: SVGElement): NodeList; - getIntersectionList(rect: SVGRect, referenceElement: SVGElement): NodeList; - pauseAnimations(): void; - setCurrentTime(seconds: number): void; - suspendRedraw(maxWaitMilliseconds: number): number; - unpauseAnimations(): void; - unsuspendRedraw(suspendHandleID: number): void; - unsuspendRedrawAll(): void; - addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureDoubleTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureEnd", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureHold", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGotPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSInertiaStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSLostPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerCancel", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerDown", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerEnter", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerLeave", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerMove", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerOut", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerOver", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerUp", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "SVGAbort", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "SVGError", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "SVGUnload", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "SVGZoom", listener: (ev: SVGZoomEvent) => any, useCapture?: boolean): void; - addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void; - addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "focusin", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; - addEventListener(type: "focusout", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; - addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "load", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "lostpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousedown", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousemove", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointercancel", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerdown", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerenter", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerleave", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointermove", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerout", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerover", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerup", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "resize", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "scroll", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchcancel", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchend", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchmove", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchstart", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "webkitfullscreenchange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "webkitfullscreenerror", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "wheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var SVGSVGElement: { - prototype: SVGSVGElement; - new(): SVGSVGElement; -} - -interface SVGScriptElement extends SVGElement, SVGExternalResourcesRequired, SVGURIReference { - type: string; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var SVGScriptElement: { - prototype: SVGScriptElement; - new(): SVGScriptElement; -} - -interface SVGStopElement extends SVGElement, SVGStylable { - offset: SVGAnimatedNumber; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var SVGStopElement: { - prototype: SVGStopElement; - new(): SVGStopElement; -} - -interface SVGStringList { - numberOfItems: number; - appendItem(newItem: string): string; - clear(): void; - getItem(index: number): string; - initialize(newItem: string): string; - insertItemBefore(newItem: string, index: number): string; - removeItem(index: number): string; - replaceItem(newItem: string, index: number): string; -} - -declare var SVGStringList: { - prototype: SVGStringList; - new(): SVGStringList; -} - -interface SVGStyleElement extends SVGElement, SVGLangSpace { - media: string; - title: string; - type: string; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var SVGStyleElement: { - prototype: SVGStyleElement; - new(): SVGStyleElement; -} - -interface SVGSwitchElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired { - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var SVGSwitchElement: { - prototype: SVGSwitchElement; - new(): SVGSwitchElement; -} - -interface SVGSymbolElement extends SVGElement, SVGStylable, SVGLangSpace, SVGExternalResourcesRequired, SVGFitToViewBox { - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var SVGSymbolElement: { - prototype: SVGSymbolElement; - new(): SVGSymbolElement; -} - -interface SVGTSpanElement extends SVGTextPositioningElement { -} - -declare var SVGTSpanElement: { - prototype: SVGTSpanElement; - new(): SVGTSpanElement; -} - -interface SVGTextContentElement extends SVGElement, SVGStylable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired { - lengthAdjust: SVGAnimatedEnumeration; - textLength: SVGAnimatedLength; - getCharNumAtPosition(point: SVGPoint): number; - getComputedTextLength(): number; - getEndPositionOfChar(charnum: number): SVGPoint; - getExtentOfChar(charnum: number): SVGRect; - getNumberOfChars(): number; - getRotationOfChar(charnum: number): number; - getStartPositionOfChar(charnum: number): SVGPoint; - getSubStringLength(charnum: number, nchars: number): number; - selectSubString(charnum: number, nchars: number): void; - LENGTHADJUST_SPACING: number; - LENGTHADJUST_SPACINGANDGLYPHS: number; - LENGTHADJUST_UNKNOWN: number; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var SVGTextContentElement: { - prototype: SVGTextContentElement; - new(): SVGTextContentElement; - LENGTHADJUST_SPACING: number; - LENGTHADJUST_SPACINGANDGLYPHS: number; - LENGTHADJUST_UNKNOWN: number; -} - -interface SVGTextElement extends SVGTextPositioningElement, SVGTransformable { - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var SVGTextElement: { - prototype: SVGTextElement; - new(): SVGTextElement; -} - -interface SVGTextPathElement extends SVGTextContentElement, SVGURIReference { - method: SVGAnimatedEnumeration; - spacing: SVGAnimatedEnumeration; - startOffset: SVGAnimatedLength; - TEXTPATH_METHODTYPE_ALIGN: number; - TEXTPATH_METHODTYPE_STRETCH: number; - TEXTPATH_METHODTYPE_UNKNOWN: number; - TEXTPATH_SPACINGTYPE_AUTO: number; - TEXTPATH_SPACINGTYPE_EXACT: number; - TEXTPATH_SPACINGTYPE_UNKNOWN: number; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var SVGTextPathElement: { - prototype: SVGTextPathElement; - new(): SVGTextPathElement; - TEXTPATH_METHODTYPE_ALIGN: number; - TEXTPATH_METHODTYPE_STRETCH: number; - TEXTPATH_METHODTYPE_UNKNOWN: number; - TEXTPATH_SPACINGTYPE_AUTO: number; - TEXTPATH_SPACINGTYPE_EXACT: number; - TEXTPATH_SPACINGTYPE_UNKNOWN: number; -} - -interface SVGTextPositioningElement extends SVGTextContentElement { - dx: SVGAnimatedLengthList; - dy: SVGAnimatedLengthList; - rotate: SVGAnimatedNumberList; - x: SVGAnimatedLengthList; - y: SVGAnimatedLengthList; -} - -declare var SVGTextPositioningElement: { - prototype: SVGTextPositioningElement; - new(): SVGTextPositioningElement; -} - -interface SVGTitleElement extends SVGElement, SVGStylable, SVGLangSpace { - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var SVGTitleElement: { - prototype: SVGTitleElement; - new(): SVGTitleElement; -} - -interface SVGTransform { - angle: number; - matrix: SVGMatrix; - type: number; - setMatrix(matrix: SVGMatrix): void; - setRotate(angle: number, cx: number, cy: number): void; - setScale(sx: number, sy: number): void; - setSkewX(angle: number): void; - setSkewY(angle: number): void; - setTranslate(tx: number, ty: number): void; - SVG_TRANSFORM_MATRIX: number; - SVG_TRANSFORM_ROTATE: number; - SVG_TRANSFORM_SCALE: number; - SVG_TRANSFORM_SKEWX: number; - SVG_TRANSFORM_SKEWY: number; - SVG_TRANSFORM_TRANSLATE: number; - SVG_TRANSFORM_UNKNOWN: number; -} - -declare var SVGTransform: { - prototype: SVGTransform; - new(): SVGTransform; - SVG_TRANSFORM_MATRIX: number; - SVG_TRANSFORM_ROTATE: number; - SVG_TRANSFORM_SCALE: number; - SVG_TRANSFORM_SKEWX: number; - SVG_TRANSFORM_SKEWY: number; - SVG_TRANSFORM_TRANSLATE: number; - SVG_TRANSFORM_UNKNOWN: number; -} - -interface SVGTransformList { - numberOfItems: number; - appendItem(newItem: SVGTransform): SVGTransform; - clear(): void; - consolidate(): SVGTransform; - createSVGTransformFromMatrix(matrix: SVGMatrix): SVGTransform; - getItem(index: number): SVGTransform; - initialize(newItem: SVGTransform): SVGTransform; - insertItemBefore(newItem: SVGTransform, index: number): SVGTransform; - removeItem(index: number): SVGTransform; - replaceItem(newItem: SVGTransform, index: number): SVGTransform; -} - -declare var SVGTransformList: { - prototype: SVGTransformList; - new(): SVGTransformList; -} - -interface SVGUnitTypes { - SVG_UNIT_TYPE_OBJECTBOUNDINGBOX: number; - SVG_UNIT_TYPE_UNKNOWN: number; - SVG_UNIT_TYPE_USERSPACEONUSE: number; -} -declare var SVGUnitTypes: SVGUnitTypes; - -interface SVGUseElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired, SVGURIReference { - animatedInstanceRoot: SVGElementInstance; - height: SVGAnimatedLength; - instanceRoot: SVGElementInstance; - width: SVGAnimatedLength; - x: SVGAnimatedLength; - y: SVGAnimatedLength; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var SVGUseElement: { - prototype: SVGUseElement; - new(): SVGUseElement; -} - -interface SVGViewElement extends SVGElement, SVGExternalResourcesRequired, SVGFitToViewBox, SVGZoomAndPan { - viewTarget: SVGStringList; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var SVGViewElement: { - prototype: SVGViewElement; - new(): SVGViewElement; -} - -interface SVGZoomAndPan { - zoomAndPan: number; -} - -declare var SVGZoomAndPan: { - SVG_ZOOMANDPAN_DISABLE: number; - SVG_ZOOMANDPAN_MAGNIFY: number; - SVG_ZOOMANDPAN_UNKNOWN: number; -} - -interface SVGZoomEvent extends UIEvent { - newScale: number; - newTranslate: SVGPoint; - previousScale: number; - previousTranslate: SVGPoint; - zoomRectScreen: SVGRect; -} - -declare var SVGZoomEvent: { - prototype: SVGZoomEvent; - new(): SVGZoomEvent; -} - -interface Screen extends EventTarget { - availHeight: number; - availWidth: number; - bufferDepth: number; - colorDepth: number; - deviceXDPI: number; - deviceYDPI: number; - fontSmoothingEnabled: boolean; - height: number; - logicalXDPI: number; - logicalYDPI: number; - msOrientation: string; - onmsorientationchange: (ev: Event) => any; - pixelDepth: number; - systemXDPI: number; - systemYDPI: number; - width: number; - msLockOrientation(orientations: string | string[]): boolean; - msUnlockOrientation(): void; - addEventListener(type: "MSOrientationChange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var Screen: { - prototype: Screen; - new(): Screen; -} - -interface ScriptNotifyEvent extends Event { - callingUri: string; - value: string; -} - -declare var ScriptNotifyEvent: { - prototype: ScriptNotifyEvent; - new(): ScriptNotifyEvent; -} - -interface ScriptProcessorNode extends AudioNode { - bufferSize: number; - onaudioprocess: (ev: AudioProcessingEvent) => any; - addEventListener(type: "audioprocess", listener: (ev: AudioProcessingEvent) => any, useCapture?: boolean): void; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var ScriptProcessorNode: { - prototype: ScriptProcessorNode; - new(): ScriptProcessorNode; -} - -interface Selection { - anchorNode: Node; - anchorOffset: number; - focusNode: Node; - focusOffset: number; - isCollapsed: boolean; - rangeCount: number; - type: string; - addRange(range: Range): void; - collapse(parentNode: Node, offset: number): void; - collapseToEnd(): void; - collapseToStart(): void; - containsNode(node: Node, partlyContained: boolean): boolean; - deleteFromDocument(): void; - empty(): void; - extend(newNode: Node, offset: number): void; - getRangeAt(index: number): Range; - removeAllRanges(): void; - removeRange(range: Range): void; - selectAllChildren(parentNode: Node): void; - setBaseAndExtent(baseNode: Node, baseOffset: number, extentNode: Node, extentOffset: number): void; - toString(): string; -} - -declare var Selection: { - prototype: Selection; - new(): Selection; -} - -interface SourceBuffer extends EventTarget { - appendWindowEnd: number; - appendWindowStart: number; - audioTracks: AudioTrackList; - buffered: TimeRanges; - mode: string; - timestampOffset: number; - updating: boolean; - videoTracks: VideoTrackList; - abort(): void; - appendBuffer(data: ArrayBuffer | ArrayBufferView): void; - appendStream(stream: MSStream, maxSize?: number): void; - remove(start: number, end: number): void; -} - -declare var SourceBuffer: { - prototype: SourceBuffer; - new(): SourceBuffer; -} - -interface SourceBufferList extends EventTarget { - length: number; - item(index: number): SourceBuffer; - [index: number]: SourceBuffer; -} - -declare var SourceBufferList: { - prototype: SourceBufferList; - new(): SourceBufferList; -} - -interface StereoPannerNode extends AudioNode { - pan: AudioParam; -} - -declare var StereoPannerNode: { - prototype: StereoPannerNode; - new(): StereoPannerNode; -} - -interface Storage { - length: number; - clear(): void; - getItem(key: string): any; - key(index: number): string; - removeItem(key: string): void; - setItem(key: string, data: string): void; - [key: string]: any; - [index: number]: string; -} - -declare var Storage: { - prototype: Storage; - new(): Storage; -} - -interface StorageEvent extends Event { - url: string; - key?: string; - oldValue?: string; - newValue?: string; - storageArea?: Storage; -} - -declare var StorageEvent: { - prototype: StorageEvent; - new (type: string, eventInitDict?: StorageEventInit): StorageEvent; -} - -interface StyleMedia { - type: string; - matchMedium(mediaquery: string): boolean; -} - -declare var StyleMedia: { - prototype: StyleMedia; - new(): StyleMedia; -} - -interface StyleSheet { - disabled: boolean; - href: string; - media: MediaList; - ownerNode: Node; - parentStyleSheet: StyleSheet; - title: string; - type: string; -} - -declare var StyleSheet: { - prototype: StyleSheet; - new(): StyleSheet; -} - -interface StyleSheetList { - length: number; - item(index?: number): StyleSheet; - [index: number]: StyleSheet; -} - -declare var StyleSheetList: { - prototype: StyleSheetList; - new(): StyleSheetList; -} - -interface StyleSheetPageList { - length: number; - item(index: number): CSSPageRule; - [index: number]: CSSPageRule; -} - -declare var StyleSheetPageList: { - prototype: StyleSheetPageList; - new(): StyleSheetPageList; -} - -interface SubtleCrypto { - decrypt(algorithm: string | Algorithm, key: CryptoKey, data: ArrayBufferView): any; - deriveBits(algorithm: string | Algorithm, baseKey: CryptoKey, length: number): any; - deriveKey(algorithm: string | Algorithm, baseKey: CryptoKey, derivedKeyType: string | Algorithm, extractable: boolean, keyUsages: string[]): any; - digest(algorithm: string | Algorithm, data: ArrayBufferView): any; - encrypt(algorithm: string | Algorithm, key: CryptoKey, data: ArrayBufferView): any; - exportKey(format: string, key: CryptoKey): any; - generateKey(algorithm: string | Algorithm, extractable: boolean, keyUsages: string[]): any; - importKey(format: string, keyData: ArrayBufferView, algorithm: string | Algorithm, extractable: boolean, keyUsages: string[]): any; - sign(algorithm: string | Algorithm, key: CryptoKey, data: ArrayBufferView): any; - unwrapKey(format: string, wrappedKey: ArrayBufferView, unwrappingKey: CryptoKey, unwrapAlgorithm: string | Algorithm, unwrappedKeyAlgorithm: string | Algorithm, extractable: boolean, keyUsages: string[]): any; - verify(algorithm: string | Algorithm, key: CryptoKey, signature: ArrayBufferView, data: ArrayBufferView): any; - wrapKey(format: string, key: CryptoKey, wrappingKey: CryptoKey, wrapAlgorithm: string | Algorithm): any; -} - -declare var SubtleCrypto: { - prototype: SubtleCrypto; - new(): SubtleCrypto; -} - -interface Text extends CharacterData { - wholeText: string; - replaceWholeText(content: string): Text; - splitText(offset: number): Text; -} - -declare var Text: { - prototype: Text; - new(): Text; -} - -interface TextEvent extends UIEvent { - data: string; - inputMethod: number; - locale: string; - initTextEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, dataArg: string, inputMethod: number, locale: string): void; - DOM_INPUT_METHOD_DROP: number; - DOM_INPUT_METHOD_HANDWRITING: number; - DOM_INPUT_METHOD_IME: number; - DOM_INPUT_METHOD_KEYBOARD: number; - DOM_INPUT_METHOD_MULTIMODAL: number; - DOM_INPUT_METHOD_OPTION: number; - DOM_INPUT_METHOD_PASTE: number; - DOM_INPUT_METHOD_SCRIPT: number; - DOM_INPUT_METHOD_UNKNOWN: number; - DOM_INPUT_METHOD_VOICE: number; -} - -declare var TextEvent: { - prototype: TextEvent; - new(): TextEvent; - DOM_INPUT_METHOD_DROP: number; - DOM_INPUT_METHOD_HANDWRITING: number; - DOM_INPUT_METHOD_IME: number; - DOM_INPUT_METHOD_KEYBOARD: number; - DOM_INPUT_METHOD_MULTIMODAL: number; - DOM_INPUT_METHOD_OPTION: number; - DOM_INPUT_METHOD_PASTE: number; - DOM_INPUT_METHOD_SCRIPT: number; - DOM_INPUT_METHOD_UNKNOWN: number; - DOM_INPUT_METHOD_VOICE: number; -} - -interface TextMetrics { - width: number; -} - -declare var TextMetrics: { - prototype: TextMetrics; - new(): TextMetrics; -} - -interface TextRange { - boundingHeight: number; - boundingLeft: number; - boundingTop: number; - boundingWidth: number; - htmlText: string; - offsetLeft: number; - offsetTop: number; - text: string; - collapse(start?: boolean): void; - compareEndPoints(how: string, sourceRange: TextRange): number; - duplicate(): TextRange; - execCommand(cmdID: string, showUI?: boolean, value?: any): boolean; - execCommandShowHelp(cmdID: string): boolean; - expand(Unit: string): boolean; - findText(string: string, count?: number, flags?: number): boolean; - getBookmark(): string; - getBoundingClientRect(): ClientRect; - getClientRects(): ClientRectList; - inRange(range: TextRange): boolean; - isEqual(range: TextRange): boolean; - move(unit: string, count?: number): number; - moveEnd(unit: string, count?: number): number; - moveStart(unit: string, count?: number): number; - moveToBookmark(bookmark: string): boolean; - moveToElementText(element: Element): void; - moveToPoint(x: number, y: number): void; - parentElement(): Element; - pasteHTML(html: string): void; - queryCommandEnabled(cmdID: string): boolean; - queryCommandIndeterm(cmdID: string): boolean; - queryCommandState(cmdID: string): boolean; - queryCommandSupported(cmdID: string): boolean; - queryCommandText(cmdID: string): string; - queryCommandValue(cmdID: string): any; - scrollIntoView(fStart?: boolean): void; - select(): void; - setEndPoint(how: string, SourceRange: TextRange): void; -} - -declare var TextRange: { - prototype: TextRange; - new(): TextRange; -} - -interface TextRangeCollection { - length: number; - item(index: number): TextRange; - [index: number]: TextRange; -} - -declare var TextRangeCollection: { - prototype: TextRangeCollection; - new(): TextRangeCollection; -} - -interface TextTrack extends EventTarget { - activeCues: TextTrackCueList; - cues: TextTrackCueList; - inBandMetadataTrackDispatchType: string; - kind: string; - label: string; - language: string; - mode: any; - oncuechange: (ev: Event) => any; - onerror: (ev: Event) => any; - onload: (ev: Event) => any; - readyState: number; - addCue(cue: TextTrackCue): void; - removeCue(cue: TextTrackCue): void; - DISABLED: number; - ERROR: number; - HIDDEN: number; - LOADED: number; - LOADING: number; - NONE: number; - SHOWING: number; - addEventListener(type: "cuechange", 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: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var TextTrack: { - prototype: TextTrack; - new(): TextTrack; - DISABLED: number; - ERROR: number; - HIDDEN: number; - LOADED: number; - LOADING: number; - NONE: number; - SHOWING: number; -} - -interface TextTrackCue extends EventTarget { - endTime: number; - id: string; - onenter: (ev: Event) => any; - onexit: (ev: Event) => any; - pauseOnExit: boolean; - startTime: number; - text: string; - track: TextTrack; - getCueAsHTML(): DocumentFragment; - addEventListener(type: "enter", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "exit", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var TextTrackCue: { - prototype: TextTrackCue; - new(startTime: number, endTime: number, text: string): TextTrackCue; -} - -interface TextTrackCueList { - length: number; - getCueById(id: string): TextTrackCue; - item(index: number): TextTrackCue; - [index: number]: TextTrackCue; -} - -declare var TextTrackCueList: { - prototype: TextTrackCueList; - new(): TextTrackCueList; -} - -interface TextTrackList extends EventTarget { - length: number; - onaddtrack: (ev: TrackEvent) => any; - item(index: number): TextTrack; - addEventListener(type: "addtrack", listener: (ev: TrackEvent) => any, useCapture?: boolean): void; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; - [index: number]: TextTrack; -} - -declare var TextTrackList: { - prototype: TextTrackList; - new(): TextTrackList; -} - -interface TimeRanges { - length: number; - end(index: number): number; - start(index: number): number; -} - -declare var TimeRanges: { - prototype: TimeRanges; - new(): TimeRanges; -} - -interface Touch { - clientX: number; - clientY: number; - identifier: number; - pageX: number; - pageY: number; - screenX: number; - screenY: number; - target: EventTarget; -} - -declare var Touch: { - prototype: Touch; - new(): Touch; -} - -interface TouchEvent extends UIEvent { - altKey: boolean; - changedTouches: TouchList; - ctrlKey: boolean; - metaKey: boolean; - shiftKey: boolean; - targetTouches: TouchList; - touches: TouchList; -} - -declare var TouchEvent: { - prototype: TouchEvent; - new(): TouchEvent; -} - -interface TouchList { - length: number; - item(index: number): Touch; - [index: number]: Touch; -} - -declare var TouchList: { - prototype: TouchList; - new(): TouchList; -} - -interface TrackEvent extends Event { - track: any; -} - -declare var TrackEvent: { - prototype: TrackEvent; - new(): TrackEvent; -} - -interface TransitionEvent extends Event { - elapsedTime: number; - propertyName: string; - initTransitionEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, propertyNameArg: string, elapsedTimeArg: number): void; -} - -declare var TransitionEvent: { - prototype: TransitionEvent; - new(): TransitionEvent; -} - -interface TreeWalker { - currentNode: Node; - expandEntityReferences: boolean; - filter: NodeFilter; - root: Node; - whatToShow: number; - firstChild(): Node; - lastChild(): Node; - nextNode(): Node; - nextSibling(): Node; - parentNode(): Node; - previousNode(): Node; - previousSibling(): Node; -} - -declare var TreeWalker: { - prototype: TreeWalker; - new(): TreeWalker; -} - -interface UIEvent extends Event { - detail: number; - view: Window; - initUIEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number): void; -} - -declare var UIEvent: { - prototype: UIEvent; - new(type: string, eventInitDict?: UIEventInit): UIEvent; -} - -interface URL { - createObjectURL(object: any, options?: ObjectURLOptions): string; - revokeObjectURL(url: string): void; -} -declare var URL: URL; - -interface UnviewableContentIdentifiedEvent extends NavigationEventWithReferrer { - mediaType: string; -} - -declare var UnviewableContentIdentifiedEvent: { - prototype: UnviewableContentIdentifiedEvent; - new(): UnviewableContentIdentifiedEvent; -} - -interface ValidityState { - badInput: boolean; - customError: boolean; - patternMismatch: boolean; - rangeOverflow: boolean; - rangeUnderflow: boolean; - stepMismatch: boolean; - tooLong: boolean; - typeMismatch: boolean; - valid: boolean; - valueMissing: boolean; -} - -declare var ValidityState: { - prototype: ValidityState; - new(): ValidityState; -} - -interface VideoPlaybackQuality { - corruptedVideoFrames: number; - creationTime: number; - droppedVideoFrames: number; - totalFrameDelay: number; - totalVideoFrames: number; -} - -declare var VideoPlaybackQuality: { - prototype: VideoPlaybackQuality; - new(): VideoPlaybackQuality; -} - -interface VideoTrack { - id: string; - kind: string; - label: string; - language: string; - selected: boolean; - sourceBuffer: SourceBuffer; -} - -declare var VideoTrack: { - prototype: VideoTrack; - new(): VideoTrack; -} - -interface VideoTrackList extends EventTarget { - length: number; - onaddtrack: (ev: TrackEvent) => any; - onchange: (ev: Event) => any; - onremovetrack: (ev: TrackEvent) => any; - selectedIndex: number; - getTrackById(id: string): VideoTrack; - item(index: number): VideoTrack; - addEventListener(type: "addtrack", listener: (ev: TrackEvent) => any, useCapture?: boolean): void; - addEventListener(type: "change", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "removetrack", listener: (ev: TrackEvent) => any, useCapture?: boolean): void; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; - [index: number]: VideoTrack; -} - -declare var VideoTrackList: { - prototype: VideoTrackList; - new(): VideoTrackList; -} - -interface WEBGL_compressed_texture_s3tc { - COMPRESSED_RGBA_S3TC_DXT1_EXT: number; - COMPRESSED_RGBA_S3TC_DXT3_EXT: number; - COMPRESSED_RGBA_S3TC_DXT5_EXT: number; - COMPRESSED_RGB_S3TC_DXT1_EXT: number; -} - -declare var WEBGL_compressed_texture_s3tc: { - prototype: WEBGL_compressed_texture_s3tc; - new(): WEBGL_compressed_texture_s3tc; - COMPRESSED_RGBA_S3TC_DXT1_EXT: number; - COMPRESSED_RGBA_S3TC_DXT3_EXT: number; - COMPRESSED_RGBA_S3TC_DXT5_EXT: number; - COMPRESSED_RGB_S3TC_DXT1_EXT: number; -} - -interface WEBGL_debug_renderer_info { - UNMASKED_RENDERER_WEBGL: number; - UNMASKED_VENDOR_WEBGL: number; -} - -declare var WEBGL_debug_renderer_info: { - prototype: WEBGL_debug_renderer_info; - new(): WEBGL_debug_renderer_info; - UNMASKED_RENDERER_WEBGL: number; - UNMASKED_VENDOR_WEBGL: number; -} - -interface WEBGL_depth_texture { - UNSIGNED_INT_24_8_WEBGL: number; -} - -declare var WEBGL_depth_texture: { - prototype: WEBGL_depth_texture; - new(): WEBGL_depth_texture; - UNSIGNED_INT_24_8_WEBGL: number; -} - -interface WaveShaperNode extends AudioNode { - curve: Float32Array; - oversample: string; -} - -declare var WaveShaperNode: { - prototype: WaveShaperNode; - new(): WaveShaperNode; -} - -interface WebGLActiveInfo { - name: string; - size: number; - type: number; -} - -declare var WebGLActiveInfo: { - prototype: WebGLActiveInfo; - new(): WebGLActiveInfo; -} - -interface WebGLBuffer extends WebGLObject { -} - -declare var WebGLBuffer: { - prototype: WebGLBuffer; - new(): WebGLBuffer; -} - -interface WebGLContextEvent extends Event { - statusMessage: string; -} - -declare var WebGLContextEvent: { - prototype: WebGLContextEvent; - new(): WebGLContextEvent; -} - -interface WebGLFramebuffer extends WebGLObject { -} - -declare var WebGLFramebuffer: { - prototype: WebGLFramebuffer; - new(): WebGLFramebuffer; -} - -interface WebGLObject { -} - -declare var WebGLObject: { - prototype: WebGLObject; - new(): WebGLObject; -} - -interface WebGLProgram extends WebGLObject { -} - -declare var WebGLProgram: { - prototype: WebGLProgram; - new(): WebGLProgram; -} - -interface WebGLRenderbuffer extends WebGLObject { -} - -declare var WebGLRenderbuffer: { - prototype: WebGLRenderbuffer; - new(): WebGLRenderbuffer; -} - -interface WebGLRenderingContext { - canvas: HTMLCanvasElement; - drawingBufferHeight: number; - drawingBufferWidth: number; - activeTexture(texture: number): void; - attachShader(program: WebGLProgram, shader: WebGLShader): void; - bindAttribLocation(program: WebGLProgram, index: number, name: string): void; - bindBuffer(target: number, buffer: WebGLBuffer): void; - bindFramebuffer(target: number, framebuffer: WebGLFramebuffer): void; - bindRenderbuffer(target: number, renderbuffer: WebGLRenderbuffer): void; - bindTexture(target: number, texture: WebGLTexture): void; - blendColor(red: number, green: number, blue: number, alpha: number): void; - blendEquation(mode: number): void; - blendEquationSeparate(modeRGB: number, modeAlpha: number): void; - blendFunc(sfactor: number, dfactor: number): void; - blendFuncSeparate(srcRGB: number, dstRGB: number, srcAlpha: number, dstAlpha: number): void; - bufferData(target: number, size: number | ArrayBufferView | ArrayBuffer, usage: number): void; - bufferSubData(target: number, offset: number, data: ArrayBufferView | ArrayBuffer): void; - checkFramebufferStatus(target: number): number; - clear(mask: number): void; - clearColor(red: number, green: number, blue: number, alpha: number): void; - clearDepth(depth: number): void; - clearStencil(s: number): void; - colorMask(red: boolean, green: boolean, blue: boolean, alpha: boolean): void; - compileShader(shader: WebGLShader): void; - compressedTexImage2D(target: number, level: number, internalformat: number, width: number, height: number, border: number, data: ArrayBufferView): void; - compressedTexSubImage2D(target: number, level: number, xoffset: number, yoffset: number, width: number, height: number, format: number, data: ArrayBufferView): void; - copyTexImage2D(target: number, level: number, internalformat: number, x: number, y: number, width: number, height: number, border: number): void; - copyTexSubImage2D(target: number, level: number, xoffset: number, yoffset: number, x: number, y: number, width: number, height: number): void; - createBuffer(): WebGLBuffer; - createFramebuffer(): WebGLFramebuffer; - createProgram(): WebGLProgram; - createRenderbuffer(): WebGLRenderbuffer; - createShader(type: number): WebGLShader; - createTexture(): WebGLTexture; - cullFace(mode: number): void; - deleteBuffer(buffer: WebGLBuffer): void; - deleteFramebuffer(framebuffer: WebGLFramebuffer): void; - deleteProgram(program: WebGLProgram): void; - deleteRenderbuffer(renderbuffer: WebGLRenderbuffer): void; - deleteShader(shader: WebGLShader): void; - deleteTexture(texture: WebGLTexture): void; - depthFunc(func: number): void; - depthMask(flag: boolean): void; - depthRange(zNear: number, zFar: number): void; - detachShader(program: WebGLProgram, shader: WebGLShader): void; - disable(cap: number): void; - disableVertexAttribArray(index: number): void; - drawArrays(mode: number, first: number, count: number): void; - drawElements(mode: number, count: number, type: number, offset: number): void; - enable(cap: number): void; - enableVertexAttribArray(index: number): void; - finish(): void; - flush(): void; - framebufferRenderbuffer(target: number, attachment: number, renderbuffertarget: number, renderbuffer: WebGLRenderbuffer): void; - framebufferTexture2D(target: number, attachment: number, textarget: number, texture: WebGLTexture, level: number): void; - frontFace(mode: number): void; - generateMipmap(target: number): void; - getActiveAttrib(program: WebGLProgram, index: number): WebGLActiveInfo; - getActiveUniform(program: WebGLProgram, index: number): WebGLActiveInfo; - getAttachedShaders(program: WebGLProgram): WebGLShader[]; - getAttribLocation(program: WebGLProgram, name: string): number; - getBufferParameter(target: number, pname: number): any; - getContextAttributes(): WebGLContextAttributes; - getError(): number; - getExtension(name: string): any; - getFramebufferAttachmentParameter(target: number, attachment: number, pname: number): any; - getParameter(pname: number): any; - getProgramInfoLog(program: WebGLProgram): string; - getProgramParameter(program: WebGLProgram, pname: number): any; - getRenderbufferParameter(target: number, pname: number): any; - getShaderInfoLog(shader: WebGLShader): string; - getShaderParameter(shader: WebGLShader, pname: number): any; - getShaderPrecisionFormat(shadertype: number, precisiontype: number): WebGLShaderPrecisionFormat; - getShaderSource(shader: WebGLShader): string; - getSupportedExtensions(): string[]; - getTexParameter(target: number, pname: number): any; - getUniform(program: WebGLProgram, location: WebGLUniformLocation): any; - getUniformLocation(program: WebGLProgram, name: string): WebGLUniformLocation; - getVertexAttrib(index: number, pname: number): any; - getVertexAttribOffset(index: number, pname: number): number; - hint(target: number, mode: number): void; - isBuffer(buffer: WebGLBuffer): boolean; - isContextLost(): boolean; - isEnabled(cap: number): boolean; - isFramebuffer(framebuffer: WebGLFramebuffer): boolean; - isProgram(program: WebGLProgram): boolean; - isRenderbuffer(renderbuffer: WebGLRenderbuffer): boolean; - isShader(shader: WebGLShader): boolean; - isTexture(texture: WebGLTexture): boolean; - lineWidth(width: number): void; - linkProgram(program: WebGLProgram): void; - pixelStorei(pname: number, param: number): void; - polygonOffset(factor: number, units: number): void; - readPixels(x: number, y: number, width: number, height: number, format: number, type: number, pixels: ArrayBufferView): void; - renderbufferStorage(target: number, internalformat: number, width: number, height: number): void; - sampleCoverage(value: number, invert: boolean): void; - scissor(x: number, y: number, width: number, height: number): void; - shaderSource(shader: WebGLShader, source: string): void; - stencilFunc(func: number, ref: number, mask: number): void; - stencilFuncSeparate(face: number, func: number, ref: number, mask: number): void; - stencilMask(mask: number): void; - stencilMaskSeparate(face: number, mask: number): void; - stencilOp(fail: number, zfail: number, zpass: number): void; - stencilOpSeparate(face: number, fail: number, zfail: number, zpass: number): void; - texImage2D(target: number, level: number, internalformat: number, width: number, height: number, border: number, format: number, type: number, pixels: ArrayBufferView): void; - texImage2D(target: number, level: number, internalformat: number, format: number, type: number, image: HTMLImageElement): void; - texImage2D(target: number, level: number, internalformat: number, format: number, type: number, canvas: HTMLCanvasElement): void; - texImage2D(target: number, level: number, internalformat: number, format: number, type: number, video: HTMLVideoElement): void; - texImage2D(target: number, level: number, internalformat: number, format: number, type: number, pixels: ImageData): void; - texParameterf(target: number, pname: number, param: number): void; - texParameteri(target: number, pname: number, param: number): void; - texSubImage2D(target: number, level: number, xoffset: number, yoffset: number, width: number, height: number, format: number, type: number, pixels: ArrayBufferView): void; - texSubImage2D(target: number, level: number, xoffset: number, yoffset: number, format: number, type: number, image: HTMLImageElement): void; - texSubImage2D(target: number, level: number, xoffset: number, yoffset: number, format: number, type: number, canvas: HTMLCanvasElement): void; - texSubImage2D(target: number, level: number, xoffset: number, yoffset: number, format: number, type: number, video: HTMLVideoElement): void; - texSubImage2D(target: number, level: number, xoffset: number, yoffset: number, format: number, type: number, pixels: ImageData): void; - uniform1f(location: WebGLUniformLocation, x: number): void; - uniform1fv(location: WebGLUniformLocation, v: Float32Array): void; - uniform1i(location: WebGLUniformLocation, x: number): void; - uniform1iv(location: WebGLUniformLocation, v: Int32Array): void; - uniform2f(location: WebGLUniformLocation, x: number, y: number): void; - uniform2fv(location: WebGLUniformLocation, v: Float32Array): void; - uniform2i(location: WebGLUniformLocation, x: number, y: number): void; - uniform2iv(location: WebGLUniformLocation, v: Int32Array): void; - uniform3f(location: WebGLUniformLocation, x: number, y: number, z: number): void; - uniform3fv(location: WebGLUniformLocation, v: Float32Array): void; - uniform3i(location: WebGLUniformLocation, x: number, y: number, z: number): void; - uniform3iv(location: WebGLUniformLocation, v: Int32Array): void; - uniform4f(location: WebGLUniformLocation, x: number, y: number, z: number, w: number): void; - uniform4fv(location: WebGLUniformLocation, v: Float32Array): void; - uniform4i(location: WebGLUniformLocation, x: number, y: number, z: number, w: number): void; - uniform4iv(location: WebGLUniformLocation, v: Int32Array): void; - uniformMatrix2fv(location: WebGLUniformLocation, transpose: boolean, value: Float32Array): void; - uniformMatrix3fv(location: WebGLUniformLocation, transpose: boolean, value: Float32Array): void; - uniformMatrix4fv(location: WebGLUniformLocation, transpose: boolean, value: Float32Array): void; - useProgram(program: WebGLProgram): void; - validateProgram(program: WebGLProgram): void; - vertexAttrib1f(indx: number, x: number): void; - vertexAttrib1fv(indx: number, values: Float32Array): void; - vertexAttrib2f(indx: number, x: number, y: number): void; - vertexAttrib2fv(indx: number, values: Float32Array): void; - vertexAttrib3f(indx: number, x: number, y: number, z: number): void; - vertexAttrib3fv(indx: number, values: Float32Array): void; - vertexAttrib4f(indx: number, x: number, y: number, z: number, w: number): void; - vertexAttrib4fv(indx: number, values: Float32Array): void; - vertexAttribPointer(indx: number, size: number, type: number, normalized: boolean, stride: number, offset: number): void; - viewport(x: number, y: number, width: number, height: number): void; - ACTIVE_ATTRIBUTES: number; - ACTIVE_TEXTURE: number; - ACTIVE_UNIFORMS: number; - ALIASED_LINE_WIDTH_RANGE: number; - ALIASED_POINT_SIZE_RANGE: number; - ALPHA: number; - ALPHA_BITS: number; - ALWAYS: number; - ARRAY_BUFFER: number; - ARRAY_BUFFER_BINDING: number; - ATTACHED_SHADERS: number; - BACK: number; - BLEND: number; - BLEND_COLOR: number; - BLEND_DST_ALPHA: number; - BLEND_DST_RGB: number; - BLEND_EQUATION: number; - BLEND_EQUATION_ALPHA: number; - BLEND_EQUATION_RGB: number; - BLEND_SRC_ALPHA: number; - BLEND_SRC_RGB: number; - BLUE_BITS: number; - BOOL: number; - BOOL_VEC2: number; - BOOL_VEC3: number; - BOOL_VEC4: number; - BROWSER_DEFAULT_WEBGL: number; - BUFFER_SIZE: number; - BUFFER_USAGE: number; - BYTE: number; - CCW: number; - CLAMP_TO_EDGE: number; - COLOR_ATTACHMENT0: number; - COLOR_BUFFER_BIT: number; - COLOR_CLEAR_VALUE: number; - COLOR_WRITEMASK: number; - COMPILE_STATUS: number; - COMPRESSED_TEXTURE_FORMATS: number; - CONSTANT_ALPHA: number; - CONSTANT_COLOR: number; - CONTEXT_LOST_WEBGL: number; - CULL_FACE: number; - CULL_FACE_MODE: number; - CURRENT_PROGRAM: number; - CURRENT_VERTEX_ATTRIB: number; - CW: number; - DECR: number; - DECR_WRAP: number; - DELETE_STATUS: number; - DEPTH_ATTACHMENT: number; - DEPTH_BITS: number; - DEPTH_BUFFER_BIT: number; - DEPTH_CLEAR_VALUE: number; - DEPTH_COMPONENT: number; - DEPTH_COMPONENT16: number; - DEPTH_FUNC: number; - DEPTH_RANGE: number; - DEPTH_STENCIL: number; - DEPTH_STENCIL_ATTACHMENT: number; - DEPTH_TEST: number; - DEPTH_WRITEMASK: number; - DITHER: number; - DONT_CARE: number; - DST_ALPHA: number; - DST_COLOR: number; - DYNAMIC_DRAW: number; - ELEMENT_ARRAY_BUFFER: number; - ELEMENT_ARRAY_BUFFER_BINDING: number; - EQUAL: number; - FASTEST: number; - FLOAT: number; - FLOAT_MAT2: number; - FLOAT_MAT3: number; - FLOAT_MAT4: number; - FLOAT_VEC2: number; - FLOAT_VEC3: number; - FLOAT_VEC4: number; - FRAGMENT_SHADER: number; - FRAMEBUFFER: number; - FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: number; - FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: number; - FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: number; - FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: number; - FRAMEBUFFER_BINDING: number; - FRAMEBUFFER_COMPLETE: number; - FRAMEBUFFER_INCOMPLETE_ATTACHMENT: number; - FRAMEBUFFER_INCOMPLETE_DIMENSIONS: number; - FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: number; - FRAMEBUFFER_UNSUPPORTED: number; - FRONT: number; - FRONT_AND_BACK: number; - FRONT_FACE: number; - FUNC_ADD: number; - FUNC_REVERSE_SUBTRACT: number; - FUNC_SUBTRACT: number; - GENERATE_MIPMAP_HINT: number; - GEQUAL: number; - GREATER: number; - GREEN_BITS: number; - HIGH_FLOAT: number; - HIGH_INT: number; - IMPLEMENTATION_COLOR_READ_FORMAT: number; - IMPLEMENTATION_COLOR_READ_TYPE: number; - INCR: number; - INCR_WRAP: number; - INT: number; - INT_VEC2: number; - INT_VEC3: number; - INT_VEC4: number; - INVALID_ENUM: number; - INVALID_FRAMEBUFFER_OPERATION: number; - INVALID_OPERATION: number; - INVALID_VALUE: number; - INVERT: number; - KEEP: number; - LEQUAL: number; - LESS: number; - LINEAR: number; - LINEAR_MIPMAP_LINEAR: number; - LINEAR_MIPMAP_NEAREST: number; - LINES: number; - LINE_LOOP: number; - LINE_STRIP: number; - LINE_WIDTH: number; - LINK_STATUS: number; - LOW_FLOAT: number; - LOW_INT: number; - LUMINANCE: number; - LUMINANCE_ALPHA: number; - MAX_COMBINED_TEXTURE_IMAGE_UNITS: number; - MAX_CUBE_MAP_TEXTURE_SIZE: number; - MAX_FRAGMENT_UNIFORM_VECTORS: number; - MAX_RENDERBUFFER_SIZE: number; - MAX_TEXTURE_IMAGE_UNITS: number; - MAX_TEXTURE_SIZE: number; - MAX_VARYING_VECTORS: number; - MAX_VERTEX_ATTRIBS: number; - MAX_VERTEX_TEXTURE_IMAGE_UNITS: number; - MAX_VERTEX_UNIFORM_VECTORS: number; - MAX_VIEWPORT_DIMS: number; - MEDIUM_FLOAT: number; - MEDIUM_INT: number; - MIRRORED_REPEAT: number; - NEAREST: number; - NEAREST_MIPMAP_LINEAR: number; - NEAREST_MIPMAP_NEAREST: number; - NEVER: number; - NICEST: number; - NONE: number; - NOTEQUAL: number; - NO_ERROR: number; - ONE: number; - ONE_MINUS_CONSTANT_ALPHA: number; - ONE_MINUS_CONSTANT_COLOR: number; - ONE_MINUS_DST_ALPHA: number; - ONE_MINUS_DST_COLOR: number; - ONE_MINUS_SRC_ALPHA: number; - ONE_MINUS_SRC_COLOR: number; - OUT_OF_MEMORY: number; - PACK_ALIGNMENT: number; - POINTS: number; - POLYGON_OFFSET_FACTOR: number; - POLYGON_OFFSET_FILL: number; - POLYGON_OFFSET_UNITS: number; - RED_BITS: number; - RENDERBUFFER: number; - RENDERBUFFER_ALPHA_SIZE: number; - RENDERBUFFER_BINDING: number; - RENDERBUFFER_BLUE_SIZE: number; - RENDERBUFFER_DEPTH_SIZE: number; - RENDERBUFFER_GREEN_SIZE: number; - RENDERBUFFER_HEIGHT: number; - RENDERBUFFER_INTERNAL_FORMAT: number; - RENDERBUFFER_RED_SIZE: number; - RENDERBUFFER_STENCIL_SIZE: number; - RENDERBUFFER_WIDTH: number; - RENDERER: number; - REPEAT: number; - REPLACE: number; - RGB: number; - RGB565: number; - RGB5_A1: number; - RGBA: number; - RGBA4: number; - SAMPLER_2D: number; - SAMPLER_CUBE: number; - SAMPLES: number; - SAMPLE_ALPHA_TO_COVERAGE: number; - SAMPLE_BUFFERS: number; - SAMPLE_COVERAGE: number; - SAMPLE_COVERAGE_INVERT: number; - SAMPLE_COVERAGE_VALUE: number; - SCISSOR_BOX: number; - SCISSOR_TEST: number; - SHADER_TYPE: number; - SHADING_LANGUAGE_VERSION: number; - SHORT: number; - SRC_ALPHA: number; - SRC_ALPHA_SATURATE: number; - SRC_COLOR: number; - STATIC_DRAW: number; - STENCIL_ATTACHMENT: number; - STENCIL_BACK_FAIL: number; - STENCIL_BACK_FUNC: number; - STENCIL_BACK_PASS_DEPTH_FAIL: number; - STENCIL_BACK_PASS_DEPTH_PASS: number; - STENCIL_BACK_REF: number; - STENCIL_BACK_VALUE_MASK: number; - STENCIL_BACK_WRITEMASK: number; - STENCIL_BITS: number; - STENCIL_BUFFER_BIT: number; - STENCIL_CLEAR_VALUE: number; - STENCIL_FAIL: number; - STENCIL_FUNC: number; - STENCIL_INDEX: number; - STENCIL_INDEX8: number; - STENCIL_PASS_DEPTH_FAIL: number; - STENCIL_PASS_DEPTH_PASS: number; - STENCIL_REF: number; - STENCIL_TEST: number; - STENCIL_VALUE_MASK: number; - STENCIL_WRITEMASK: number; - STREAM_DRAW: number; - SUBPIXEL_BITS: number; - TEXTURE: number; - TEXTURE0: number; - TEXTURE1: number; - TEXTURE10: number; - TEXTURE11: number; - TEXTURE12: number; - TEXTURE13: number; - TEXTURE14: number; - TEXTURE15: number; - TEXTURE16: number; - TEXTURE17: number; - TEXTURE18: number; - TEXTURE19: number; - TEXTURE2: number; - TEXTURE20: number; - TEXTURE21: number; - TEXTURE22: number; - TEXTURE23: number; - TEXTURE24: number; - TEXTURE25: number; - TEXTURE26: number; - TEXTURE27: number; - TEXTURE28: number; - TEXTURE29: number; - TEXTURE3: number; - TEXTURE30: number; - TEXTURE31: number; - TEXTURE4: number; - TEXTURE5: number; - TEXTURE6: number; - TEXTURE7: number; - TEXTURE8: number; - TEXTURE9: number; - TEXTURE_2D: number; - TEXTURE_BINDING_2D: number; - TEXTURE_BINDING_CUBE_MAP: number; - TEXTURE_CUBE_MAP: number; - TEXTURE_CUBE_MAP_NEGATIVE_X: number; - TEXTURE_CUBE_MAP_NEGATIVE_Y: number; - TEXTURE_CUBE_MAP_NEGATIVE_Z: number; - TEXTURE_CUBE_MAP_POSITIVE_X: number; - TEXTURE_CUBE_MAP_POSITIVE_Y: number; - TEXTURE_CUBE_MAP_POSITIVE_Z: number; - TEXTURE_MAG_FILTER: number; - TEXTURE_MIN_FILTER: number; - TEXTURE_WRAP_S: number; - TEXTURE_WRAP_T: number; - TRIANGLES: number; - TRIANGLE_FAN: number; - TRIANGLE_STRIP: number; - UNPACK_ALIGNMENT: number; - UNPACK_COLORSPACE_CONVERSION_WEBGL: number; - UNPACK_FLIP_Y_WEBGL: number; - UNPACK_PREMULTIPLY_ALPHA_WEBGL: number; - UNSIGNED_BYTE: number; - UNSIGNED_INT: number; - UNSIGNED_SHORT: number; - UNSIGNED_SHORT_4_4_4_4: number; - UNSIGNED_SHORT_5_5_5_1: number; - UNSIGNED_SHORT_5_6_5: number; - VALIDATE_STATUS: number; - VENDOR: number; - VERSION: number; - VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: number; - VERTEX_ATTRIB_ARRAY_ENABLED: number; - VERTEX_ATTRIB_ARRAY_NORMALIZED: number; - VERTEX_ATTRIB_ARRAY_POINTER: number; - VERTEX_ATTRIB_ARRAY_SIZE: number; - VERTEX_ATTRIB_ARRAY_STRIDE: number; - VERTEX_ATTRIB_ARRAY_TYPE: number; - VERTEX_SHADER: number; - VIEWPORT: number; - ZERO: number; -} - -declare var WebGLRenderingContext: { - prototype: WebGLRenderingContext; - new(): WebGLRenderingContext; - ACTIVE_ATTRIBUTES: number; - ACTIVE_TEXTURE: number; - ACTIVE_UNIFORMS: number; - ALIASED_LINE_WIDTH_RANGE: number; - ALIASED_POINT_SIZE_RANGE: number; - ALPHA: number; - ALPHA_BITS: number; - ALWAYS: number; - ARRAY_BUFFER: number; - ARRAY_BUFFER_BINDING: number; - ATTACHED_SHADERS: number; - BACK: number; - BLEND: number; - BLEND_COLOR: number; - BLEND_DST_ALPHA: number; - BLEND_DST_RGB: number; - BLEND_EQUATION: number; - BLEND_EQUATION_ALPHA: number; - BLEND_EQUATION_RGB: number; - BLEND_SRC_ALPHA: number; - BLEND_SRC_RGB: number; - BLUE_BITS: number; - BOOL: number; - BOOL_VEC2: number; - BOOL_VEC3: number; - BOOL_VEC4: number; - BROWSER_DEFAULT_WEBGL: number; - BUFFER_SIZE: number; - BUFFER_USAGE: number; - BYTE: number; - CCW: number; - CLAMP_TO_EDGE: number; - COLOR_ATTACHMENT0: number; - COLOR_BUFFER_BIT: number; - COLOR_CLEAR_VALUE: number; - COLOR_WRITEMASK: number; - COMPILE_STATUS: number; - COMPRESSED_TEXTURE_FORMATS: number; - CONSTANT_ALPHA: number; - CONSTANT_COLOR: number; - CONTEXT_LOST_WEBGL: number; - CULL_FACE: number; - CULL_FACE_MODE: number; - CURRENT_PROGRAM: number; - CURRENT_VERTEX_ATTRIB: number; - CW: number; - DECR: number; - DECR_WRAP: number; - DELETE_STATUS: number; - DEPTH_ATTACHMENT: number; - DEPTH_BITS: number; - DEPTH_BUFFER_BIT: number; - DEPTH_CLEAR_VALUE: number; - DEPTH_COMPONENT: number; - DEPTH_COMPONENT16: number; - DEPTH_FUNC: number; - DEPTH_RANGE: number; - DEPTH_STENCIL: number; - DEPTH_STENCIL_ATTACHMENT: number; - DEPTH_TEST: number; - DEPTH_WRITEMASK: number; - DITHER: number; - DONT_CARE: number; - DST_ALPHA: number; - DST_COLOR: number; - DYNAMIC_DRAW: number; - ELEMENT_ARRAY_BUFFER: number; - ELEMENT_ARRAY_BUFFER_BINDING: number; - EQUAL: number; - FASTEST: number; - FLOAT: number; - FLOAT_MAT2: number; - FLOAT_MAT3: number; - FLOAT_MAT4: number; - FLOAT_VEC2: number; - FLOAT_VEC3: number; - FLOAT_VEC4: number; - FRAGMENT_SHADER: number; - FRAMEBUFFER: number; - FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: number; - FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: number; - FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: number; - FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: number; - FRAMEBUFFER_BINDING: number; - FRAMEBUFFER_COMPLETE: number; - FRAMEBUFFER_INCOMPLETE_ATTACHMENT: number; - FRAMEBUFFER_INCOMPLETE_DIMENSIONS: number; - FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: number; - FRAMEBUFFER_UNSUPPORTED: number; - FRONT: number; - FRONT_AND_BACK: number; - FRONT_FACE: number; - FUNC_ADD: number; - FUNC_REVERSE_SUBTRACT: number; - FUNC_SUBTRACT: number; - GENERATE_MIPMAP_HINT: number; - GEQUAL: number; - GREATER: number; - GREEN_BITS: number; - HIGH_FLOAT: number; - HIGH_INT: number; - IMPLEMENTATION_COLOR_READ_FORMAT: number; - IMPLEMENTATION_COLOR_READ_TYPE: number; - INCR: number; - INCR_WRAP: number; - INT: number; - INT_VEC2: number; - INT_VEC3: number; - INT_VEC4: number; - INVALID_ENUM: number; - INVALID_FRAMEBUFFER_OPERATION: number; - INVALID_OPERATION: number; - INVALID_VALUE: number; - INVERT: number; - KEEP: number; - LEQUAL: number; - LESS: number; - LINEAR: number; - LINEAR_MIPMAP_LINEAR: number; - LINEAR_MIPMAP_NEAREST: number; - LINES: number; - LINE_LOOP: number; - LINE_STRIP: number; - LINE_WIDTH: number; - LINK_STATUS: number; - LOW_FLOAT: number; - LOW_INT: number; - LUMINANCE: number; - LUMINANCE_ALPHA: number; - MAX_COMBINED_TEXTURE_IMAGE_UNITS: number; - MAX_CUBE_MAP_TEXTURE_SIZE: number; - MAX_FRAGMENT_UNIFORM_VECTORS: number; - MAX_RENDERBUFFER_SIZE: number; - MAX_TEXTURE_IMAGE_UNITS: number; - MAX_TEXTURE_SIZE: number; - MAX_VARYING_VECTORS: number; - MAX_VERTEX_ATTRIBS: number; - MAX_VERTEX_TEXTURE_IMAGE_UNITS: number; - MAX_VERTEX_UNIFORM_VECTORS: number; - MAX_VIEWPORT_DIMS: number; - MEDIUM_FLOAT: number; - MEDIUM_INT: number; - MIRRORED_REPEAT: number; - NEAREST: number; - NEAREST_MIPMAP_LINEAR: number; - NEAREST_MIPMAP_NEAREST: number; - NEVER: number; - NICEST: number; - NONE: number; - NOTEQUAL: number; - NO_ERROR: number; - ONE: number; - ONE_MINUS_CONSTANT_ALPHA: number; - ONE_MINUS_CONSTANT_COLOR: number; - ONE_MINUS_DST_ALPHA: number; - ONE_MINUS_DST_COLOR: number; - ONE_MINUS_SRC_ALPHA: number; - ONE_MINUS_SRC_COLOR: number; - OUT_OF_MEMORY: number; - PACK_ALIGNMENT: number; - POINTS: number; - POLYGON_OFFSET_FACTOR: number; - POLYGON_OFFSET_FILL: number; - POLYGON_OFFSET_UNITS: number; - RED_BITS: number; - RENDERBUFFER: number; - RENDERBUFFER_ALPHA_SIZE: number; - RENDERBUFFER_BINDING: number; - RENDERBUFFER_BLUE_SIZE: number; - RENDERBUFFER_DEPTH_SIZE: number; - RENDERBUFFER_GREEN_SIZE: number; - RENDERBUFFER_HEIGHT: number; - RENDERBUFFER_INTERNAL_FORMAT: number; - RENDERBUFFER_RED_SIZE: number; - RENDERBUFFER_STENCIL_SIZE: number; - RENDERBUFFER_WIDTH: number; - RENDERER: number; - REPEAT: number; - REPLACE: number; - RGB: number; - RGB565: number; - RGB5_A1: number; - RGBA: number; - RGBA4: number; - SAMPLER_2D: number; - SAMPLER_CUBE: number; - SAMPLES: number; - SAMPLE_ALPHA_TO_COVERAGE: number; - SAMPLE_BUFFERS: number; - SAMPLE_COVERAGE: number; - SAMPLE_COVERAGE_INVERT: number; - SAMPLE_COVERAGE_VALUE: number; - SCISSOR_BOX: number; - SCISSOR_TEST: number; - SHADER_TYPE: number; - SHADING_LANGUAGE_VERSION: number; - SHORT: number; - SRC_ALPHA: number; - SRC_ALPHA_SATURATE: number; - SRC_COLOR: number; - STATIC_DRAW: number; - STENCIL_ATTACHMENT: number; - STENCIL_BACK_FAIL: number; - STENCIL_BACK_FUNC: number; - STENCIL_BACK_PASS_DEPTH_FAIL: number; - STENCIL_BACK_PASS_DEPTH_PASS: number; - STENCIL_BACK_REF: number; - STENCIL_BACK_VALUE_MASK: number; - STENCIL_BACK_WRITEMASK: number; - STENCIL_BITS: number; - STENCIL_BUFFER_BIT: number; - STENCIL_CLEAR_VALUE: number; - STENCIL_FAIL: number; - STENCIL_FUNC: number; - STENCIL_INDEX: number; - STENCIL_INDEX8: number; - STENCIL_PASS_DEPTH_FAIL: number; - STENCIL_PASS_DEPTH_PASS: number; - STENCIL_REF: number; - STENCIL_TEST: number; - STENCIL_VALUE_MASK: number; - STENCIL_WRITEMASK: number; - STREAM_DRAW: number; - SUBPIXEL_BITS: number; - TEXTURE: number; - TEXTURE0: number; - TEXTURE1: number; - TEXTURE10: number; - TEXTURE11: number; - TEXTURE12: number; - TEXTURE13: number; - TEXTURE14: number; - TEXTURE15: number; - TEXTURE16: number; - TEXTURE17: number; - TEXTURE18: number; - TEXTURE19: number; - TEXTURE2: number; - TEXTURE20: number; - TEXTURE21: number; - TEXTURE22: number; - TEXTURE23: number; - TEXTURE24: number; - TEXTURE25: number; - TEXTURE26: number; - TEXTURE27: number; - TEXTURE28: number; - TEXTURE29: number; - TEXTURE3: number; - TEXTURE30: number; - TEXTURE31: number; - TEXTURE4: number; - TEXTURE5: number; - TEXTURE6: number; - TEXTURE7: number; - TEXTURE8: number; - TEXTURE9: number; - TEXTURE_2D: number; - TEXTURE_BINDING_2D: number; - TEXTURE_BINDING_CUBE_MAP: number; - TEXTURE_CUBE_MAP: number; - TEXTURE_CUBE_MAP_NEGATIVE_X: number; - TEXTURE_CUBE_MAP_NEGATIVE_Y: number; - TEXTURE_CUBE_MAP_NEGATIVE_Z: number; - TEXTURE_CUBE_MAP_POSITIVE_X: number; - TEXTURE_CUBE_MAP_POSITIVE_Y: number; - TEXTURE_CUBE_MAP_POSITIVE_Z: number; - TEXTURE_MAG_FILTER: number; - TEXTURE_MIN_FILTER: number; - TEXTURE_WRAP_S: number; - TEXTURE_WRAP_T: number; - TRIANGLES: number; - TRIANGLE_FAN: number; - TRIANGLE_STRIP: number; - UNPACK_ALIGNMENT: number; - UNPACK_COLORSPACE_CONVERSION_WEBGL: number; - UNPACK_FLIP_Y_WEBGL: number; - UNPACK_PREMULTIPLY_ALPHA_WEBGL: number; - UNSIGNED_BYTE: number; - UNSIGNED_INT: number; - UNSIGNED_SHORT: number; - UNSIGNED_SHORT_4_4_4_4: number; - UNSIGNED_SHORT_5_5_5_1: number; - UNSIGNED_SHORT_5_6_5: number; - VALIDATE_STATUS: number; - VENDOR: number; - VERSION: number; - VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: number; - VERTEX_ATTRIB_ARRAY_ENABLED: number; - VERTEX_ATTRIB_ARRAY_NORMALIZED: number; - VERTEX_ATTRIB_ARRAY_POINTER: number; - VERTEX_ATTRIB_ARRAY_SIZE: number; - VERTEX_ATTRIB_ARRAY_STRIDE: number; - VERTEX_ATTRIB_ARRAY_TYPE: number; - VERTEX_SHADER: number; - VIEWPORT: number; - ZERO: number; -} - -interface WebGLShader extends WebGLObject { -} - -declare var WebGLShader: { - prototype: WebGLShader; - new(): WebGLShader; -} - -interface WebGLShaderPrecisionFormat { - precision: number; - rangeMax: number; - rangeMin: number; -} - -declare var WebGLShaderPrecisionFormat: { - prototype: WebGLShaderPrecisionFormat; - new(): WebGLShaderPrecisionFormat; -} - -interface WebGLTexture extends WebGLObject { -} - -declare var WebGLTexture: { - prototype: WebGLTexture; - new(): WebGLTexture; -} - -interface WebGLUniformLocation { -} - -declare var WebGLUniformLocation: { - prototype: WebGLUniformLocation; - new(): WebGLUniformLocation; -} - -interface WebKitCSSMatrix { - a: number; - b: number; - c: number; - d: number; - e: number; - f: number; - m11: number; - m12: number; - m13: number; - m14: number; - m21: number; - m22: number; - m23: number; - m24: number; - m31: number; - m32: number; - m33: number; - m34: number; - m41: number; - m42: number; - m43: number; - m44: number; - inverse(): WebKitCSSMatrix; - multiply(secondMatrix: WebKitCSSMatrix): WebKitCSSMatrix; - rotate(angleX: number, angleY?: number, angleZ?: number): WebKitCSSMatrix; - rotateAxisAngle(x: number, y: number, z: number, angle: number): WebKitCSSMatrix; - scale(scaleX: number, scaleY?: number, scaleZ?: number): WebKitCSSMatrix; - setMatrixValue(value: string): void; - skewX(angle: number): WebKitCSSMatrix; - skewY(angle: number): WebKitCSSMatrix; - toString(): string; - translate(x: number, y: number, z?: number): WebKitCSSMatrix; -} - -declare var WebKitCSSMatrix: { - prototype: WebKitCSSMatrix; - new(text?: string): WebKitCSSMatrix; -} - -interface WebKitPoint { - x: number; - y: number; -} - -declare var WebKitPoint: { - prototype: WebKitPoint; - new(x?: number, y?: number): WebKitPoint; -} - -interface WebSocket extends EventTarget { - binaryType: string; - bufferedAmount: number; - extensions: string; - onclose: (ev: CloseEvent) => any; - onerror: (ev: Event) => any; - onmessage: (ev: MessageEvent) => any; - onopen: (ev: Event) => any; - protocol: string; - readyState: number; - url: string; - close(code?: number, reason?: string): void; - send(data: any): void; - CLOSED: number; - CLOSING: number; - CONNECTING: number; - 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: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var WebSocket: { - prototype: WebSocket; - new(url: string, protocols?: string | string[]): WebSocket; - CLOSED: number; - CLOSING: number; - CONNECTING: number; - OPEN: number; -} - -interface WheelEvent extends MouseEvent { - deltaMode: number; - deltaX: number; - deltaY: number; - deltaZ: number; - getCurrentPoint(element: Element): void; - initWheelEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, screenXArg: number, screenYArg: number, clientXArg: number, clientYArg: number, buttonArg: number, relatedTargetArg: EventTarget, modifiersListArg: string, deltaXArg: number, deltaYArg: number, deltaZArg: number, deltaMode: number): void; - DOM_DELTA_LINE: number; - DOM_DELTA_PAGE: number; - DOM_DELTA_PIXEL: number; -} - -declare var WheelEvent: { - prototype: WheelEvent; - new(typeArg: string, eventInitDict?: WheelEventInit): WheelEvent; - DOM_DELTA_LINE: number; - DOM_DELTA_PAGE: number; - DOM_DELTA_PIXEL: number; -} - -interface Window extends EventTarget, WindowTimers, WindowSessionStorage, WindowLocalStorage, WindowConsole, GlobalEventHandlers, IDBEnvironment, WindowBase64 { - animationStartTime: number; - applicationCache: ApplicationCache; - clientInformation: Navigator; - closed: boolean; - crypto: Crypto; - defaultStatus: string; - devicePixelRatio: number; - doNotTrack: string; - document: Document; - event: Event; - external: External; - frameElement: Element; - frames: Window; - history: History; - innerHeight: number; - innerWidth: number; - length: number; - location: Location; - locationbar: BarProp; - menubar: BarProp; - msAnimationStartTime: number; - name: string; - navigator: Navigator; - offscreenBuffering: string | boolean; - onabort: (ev: Event) => any; - onafterprint: (ev: Event) => any; - onbeforeprint: (ev: Event) => any; - onbeforeunload: (ev: BeforeUnloadEvent) => any; - onblur: (ev: FocusEvent) => any; - oncanplay: (ev: Event) => any; - oncanplaythrough: (ev: Event) => any; - onchange: (ev: Event) => any; - onclick: (ev: MouseEvent) => any; - oncompassneedscalibration: (ev: Event) => any; - oncontextmenu: (ev: PointerEvent) => any; - ondblclick: (ev: MouseEvent) => any; - ondevicemotion: (ev: DeviceMotionEvent) => any; - ondeviceorientation: (ev: DeviceOrientationEvent) => any; - ondrag: (ev: DragEvent) => any; - ondragend: (ev: DragEvent) => any; - ondragenter: (ev: DragEvent) => any; - ondragleave: (ev: DragEvent) => any; - ondragover: (ev: DragEvent) => any; - ondragstart: (ev: DragEvent) => any; - ondrop: (ev: DragEvent) => any; - ondurationchange: (ev: Event) => any; - onemptied: (ev: Event) => any; - onended: (ev: Event) => any; - onerror: ErrorEventHandler; - onfocus: (ev: FocusEvent) => any; - onhashchange: (ev: HashChangeEvent) => any; - oninput: (ev: Event) => any; - onkeydown: (ev: KeyboardEvent) => any; - onkeypress: (ev: KeyboardEvent) => any; - onkeyup: (ev: KeyboardEvent) => any; - onload: (ev: Event) => any; - onloadeddata: (ev: Event) => any; - onloadedmetadata: (ev: Event) => any; - onloadstart: (ev: Event) => any; - onmessage: (ev: MessageEvent) => any; - onmousedown: (ev: MouseEvent) => any; - onmouseenter: (ev: MouseEvent) => any; - onmouseleave: (ev: MouseEvent) => any; - onmousemove: (ev: MouseEvent) => any; - onmouseout: (ev: MouseEvent) => any; - onmouseover: (ev: MouseEvent) => any; - onmouseup: (ev: MouseEvent) => any; - onmousewheel: (ev: MouseWheelEvent) => any; - onmsgesturechange: (ev: MSGestureEvent) => any; - onmsgesturedoubletap: (ev: MSGestureEvent) => any; - onmsgestureend: (ev: MSGestureEvent) => any; - onmsgesturehold: (ev: MSGestureEvent) => any; - onmsgesturestart: (ev: MSGestureEvent) => any; - onmsgesturetap: (ev: MSGestureEvent) => any; - onmsinertiastart: (ev: MSGestureEvent) => any; - onmspointercancel: (ev: MSPointerEvent) => any; - onmspointerdown: (ev: MSPointerEvent) => any; - onmspointerenter: (ev: MSPointerEvent) => any; - onmspointerleave: (ev: MSPointerEvent) => any; - onmspointermove: (ev: MSPointerEvent) => any; - onmspointerout: (ev: MSPointerEvent) => any; - onmspointerover: (ev: MSPointerEvent) => any; - onmspointerup: (ev: MSPointerEvent) => any; - onoffline: (ev: Event) => any; - ononline: (ev: Event) => any; - onorientationchange: (ev: Event) => any; - onpagehide: (ev: PageTransitionEvent) => any; - onpageshow: (ev: PageTransitionEvent) => any; - onpause: (ev: Event) => any; - onplay: (ev: Event) => any; - onplaying: (ev: Event) => any; - onpopstate: (ev: PopStateEvent) => any; - onprogress: (ev: ProgressEvent) => any; - onratechange: (ev: Event) => any; - onreadystatechange: (ev: ProgressEvent) => any; - onreset: (ev: Event) => any; - onresize: (ev: UIEvent) => any; - onscroll: (ev: UIEvent) => any; - onseeked: (ev: Event) => any; - onseeking: (ev: Event) => any; - onselect: (ev: UIEvent) => any; - onstalled: (ev: Event) => any; - onstorage: (ev: StorageEvent) => any; - onsubmit: (ev: Event) => any; - onsuspend: (ev: Event) => any; - ontimeupdate: (ev: Event) => any; - ontouchcancel: any; - ontouchend: any; - ontouchmove: any; - ontouchstart: any; - onunload: (ev: Event) => any; - onvolumechange: (ev: Event) => any; - onwaiting: (ev: Event) => any; - opener: Window; - orientation: string | number; - outerHeight: number; - outerWidth: number; - pageXOffset: number; - pageYOffset: number; - parent: Window; - performance: Performance; - personalbar: BarProp; - screen: Screen; - screenLeft: number; - screenTop: number; - screenX: number; - screenY: number; - scrollX: number; - scrollY: number; - scrollbars: BarProp; - self: Window; - status: string; - statusbar: BarProp; - styleMedia: StyleMedia; - toolbar: BarProp; - top: Window; - window: Window; - URL: URL; - alert(message?: any): void; - blur(): void; - cancelAnimationFrame(handle: number): void; - captureEvents(): void; - close(): void; - confirm(message?: string): boolean; - focus(): void; - getComputedStyle(elt: Element, pseudoElt?: string): CSSStyleDeclaration; - getMatchedCSSRules(elt: Element, pseudoElt?: string): CSSRuleList; - getSelection(): Selection; - matchMedia(mediaQuery: string): MediaQueryList; - moveBy(x?: number, y?: number): void; - moveTo(x?: number, y?: number): void; - msCancelRequestAnimationFrame(handle: number): void; - msMatchMedia(mediaQuery: string): MediaQueryList; - msRequestAnimationFrame(callback: FrameRequestCallback): number; - msWriteProfilerMark(profilerMarkName: string): void; - open(url?: string, target?: string, features?: string, replace?: boolean): Window; - postMessage(message: any, targetOrigin: string, ports?: any): void; - print(): void; - prompt(message?: string, _default?: string): string; - releaseEvents(): void; - requestAnimationFrame(callback: FrameRequestCallback): number; - resizeBy(x?: number, y?: number): void; - resizeTo(x?: number, y?: number): void; - scroll(x?: number, y?: number): void; - scrollBy(x?: number, y?: number): void; - scrollTo(x?: number, y?: number): void; - webkitConvertPointFromNodeToPage(node: Node, pt: WebKitPoint): WebKitPoint; - webkitConvertPointFromPageToNode(node: Node, pt: WebKitPoint): WebKitPoint; - addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureDoubleTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureEnd", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureHold", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSInertiaStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerCancel", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerDown", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerEnter", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerLeave", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerMove", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerOut", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerOver", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerUp", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "abort", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "afterprint", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "beforeprint", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "beforeunload", listener: (ev: BeforeUnloadEvent) => any, useCapture?: boolean): void; - addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; - addEventListener(type: "canplay", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "canplaythrough", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "change", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "compassneedscalibration", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "devicemotion", listener: (ev: DeviceMotionEvent) => any, useCapture?: boolean): void; - addEventListener(type: "deviceorientation", listener: (ev: DeviceOrientationEvent) => any, useCapture?: boolean): void; - addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragend", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragenter", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragleave", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragover", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragstart", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; - addEventListener(type: "hashchange", listener: (ev: HashChangeEvent) => any, useCapture?: boolean): void; - addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; - addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; - addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; - addEventListener(type: "load", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "loadeddata", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "loadedmetadata", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "loadstart", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "message", listener: (ev: MessageEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousedown", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseenter", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseleave", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousemove", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; - addEventListener(type: "offline", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "online", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "orientationchange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "pagehide", listener: (ev: PageTransitionEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pageshow", listener: (ev: PageTransitionEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "pointercancel", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerdown", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerenter", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerleave", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointermove", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerout", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerover", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerup", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "popstate", listener: (ev: PopStateEvent) => any, useCapture?: boolean): void; - addEventListener(type: "progress", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void; - addEventListener(type: "ratechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "readystatechange", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void; - addEventListener(type: "reset", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "resize", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "scroll", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "seeked", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "seeking", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "select", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "stalled", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "storage", listener: (ev: StorageEvent) => any, useCapture?: boolean): void; - addEventListener(type: "submit", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "suspend", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "timeupdate", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "unload", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "volumechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "waiting", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "wheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; - [index: number]: Window; -} - -declare var Window: { - prototype: Window; - new(): Window; -} - -interface Worker extends EventTarget, AbstractWorker { - onmessage: (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: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var Worker: { - prototype: Worker; - new(stringUrl: string): Worker; -} - -interface XMLDocument extends Document { -} - -declare var XMLDocument: { - prototype: XMLDocument; - new(): XMLDocument; -} - -interface XMLHttpRequest extends EventTarget, XMLHttpRequestEventTarget { - msCaching: string; - onreadystatechange: (ev: ProgressEvent) => any; - readyState: number; - response: any; - responseBody: any; - responseText: string; - responseType: string; - responseXML: any; - status: number; - statusText: string; - timeout: number; - upload: XMLHttpRequestUpload; - withCredentials: boolean; - abort(): void; - getAllResponseHeaders(): string; - getResponseHeader(header: string): string; - msCachingEnabled(): boolean; - open(method: string, url: string, async?: boolean, user?: string, password?: string): void; - overrideMimeType(mime: string): void; - send(data?: Document): void; - send(data?: string): void; - send(data?: any): void; - setRequestHeader(header: string, value: string): void; - DONE: number; - HEADERS_RECEIVED: number; - LOADING: number; - OPENED: number; - 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: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var XMLHttpRequest: { - prototype: XMLHttpRequest; - new(): XMLHttpRequest; - DONE: number; - HEADERS_RECEIVED: number; - LOADING: number; - OPENED: number; - UNSENT: number; - create(): XMLHttpRequest; -} - -interface XMLHttpRequestUpload extends EventTarget, XMLHttpRequestEventTarget { - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -declare var XMLHttpRequestUpload: { - prototype: XMLHttpRequestUpload; - new(): XMLHttpRequestUpload; -} - -interface XMLSerializer { - serializeToString(target: Node): string; -} - -declare var XMLSerializer: { - prototype: XMLSerializer; - new(): XMLSerializer; -} - -interface XPathEvaluator { - createExpression(expression: string, resolver: XPathNSResolver): XPathExpression; - createNSResolver(nodeResolver?: Node): XPathNSResolver; - evaluate(expression: string, contextNode: Node, resolver: XPathNSResolver, type: number, result: XPathResult): XPathResult; -} - -declare var XPathEvaluator: { - prototype: XPathEvaluator; - new(): XPathEvaluator; -} - -interface XPathExpression { - evaluate(contextNode: Node, type: number, result: XPathResult): XPathExpression; -} - -declare var XPathExpression: { - prototype: XPathExpression; - new(): XPathExpression; -} - -interface XPathNSResolver { - lookupNamespaceURI(prefix: string): string; -} - -declare var XPathNSResolver: { - prototype: XPathNSResolver; - new(): XPathNSResolver; -} - -interface XPathResult { - booleanValue: boolean; - invalidIteratorState: boolean; - numberValue: number; - resultType: number; - singleNodeValue: Node; - snapshotLength: number; - stringValue: string; - iterateNext(): Node; - snapshotItem(index: number): Node; - ANY_TYPE: number; - ANY_UNORDERED_NODE_TYPE: number; - BOOLEAN_TYPE: number; - FIRST_ORDERED_NODE_TYPE: number; - NUMBER_TYPE: number; - ORDERED_NODE_ITERATOR_TYPE: number; - ORDERED_NODE_SNAPSHOT_TYPE: number; - STRING_TYPE: number; - UNORDERED_NODE_ITERATOR_TYPE: number; - UNORDERED_NODE_SNAPSHOT_TYPE: number; -} - -declare var XPathResult: { - prototype: XPathResult; - new(): XPathResult; - ANY_TYPE: number; - ANY_UNORDERED_NODE_TYPE: number; - BOOLEAN_TYPE: number; - FIRST_ORDERED_NODE_TYPE: number; - NUMBER_TYPE: number; - ORDERED_NODE_ITERATOR_TYPE: number; - ORDERED_NODE_SNAPSHOT_TYPE: number; - STRING_TYPE: number; - UNORDERED_NODE_ITERATOR_TYPE: number; - UNORDERED_NODE_SNAPSHOT_TYPE: number; -} - -interface XSLTProcessor { - clearParameters(): void; - getParameter(namespaceURI: string, localName: string): any; - importStylesheet(style: Node): void; - removeParameter(namespaceURI: string, localName: string): void; - reset(): void; - setParameter(namespaceURI: string, localName: string, value: any): void; - transformToDocument(source: Node): Document; - transformToFragment(source: Node, document: Document): DocumentFragment; -} - -declare var XSLTProcessor: { - prototype: XSLTProcessor; - new(): XSLTProcessor; -} - -interface AbstractWorker { - onerror: (ev: Event) => any; - addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -interface ChildNode { - remove(): void; -} - -interface DOML2DeprecatedColorProperty { - color: string; -} - -interface DOML2DeprecatedSizeProperty { - size: number; -} - -interface DocumentEvent { - createEvent(eventInterface:"AnimationEvent"): AnimationEvent; - createEvent(eventInterface:"AriaRequestEvent"): AriaRequestEvent; - createEvent(eventInterface:"AudioProcessingEvent"): AudioProcessingEvent; - createEvent(eventInterface:"BeforeUnloadEvent"): BeforeUnloadEvent; - createEvent(eventInterface:"ClipboardEvent"): ClipboardEvent; - createEvent(eventInterface:"CloseEvent"): CloseEvent; - createEvent(eventInterface:"CommandEvent"): CommandEvent; - createEvent(eventInterface:"CompositionEvent"): CompositionEvent; - createEvent(eventInterface:"CustomEvent"): CustomEvent; - createEvent(eventInterface:"DeviceMotionEvent"): DeviceMotionEvent; - createEvent(eventInterface:"DeviceOrientationEvent"): DeviceOrientationEvent; - createEvent(eventInterface:"DragEvent"): DragEvent; - createEvent(eventInterface:"ErrorEvent"): ErrorEvent; - createEvent(eventInterface:"Event"): Event; - createEvent(eventInterface:"Events"): Event; - createEvent(eventInterface:"FocusEvent"): FocusEvent; - createEvent(eventInterface:"GamepadEvent"): GamepadEvent; - createEvent(eventInterface:"HashChangeEvent"): HashChangeEvent; - createEvent(eventInterface:"IDBVersionChangeEvent"): IDBVersionChangeEvent; - createEvent(eventInterface:"KeyboardEvent"): KeyboardEvent; - createEvent(eventInterface:"LongRunningScriptDetectedEvent"): LongRunningScriptDetectedEvent; - createEvent(eventInterface:"MSGestureEvent"): MSGestureEvent; - createEvent(eventInterface:"MSManipulationEvent"): MSManipulationEvent; - createEvent(eventInterface:"MSMediaKeyMessageEvent"): MSMediaKeyMessageEvent; - createEvent(eventInterface:"MSMediaKeyNeededEvent"): MSMediaKeyNeededEvent; - createEvent(eventInterface:"MSPointerEvent"): MSPointerEvent; - createEvent(eventInterface:"MSSiteModeEvent"): MSSiteModeEvent; - createEvent(eventInterface:"MessageEvent"): MessageEvent; - createEvent(eventInterface:"MouseEvent"): MouseEvent; - createEvent(eventInterface:"MouseEvents"): MouseEvent; - createEvent(eventInterface:"MouseWheelEvent"): MouseWheelEvent; - createEvent(eventInterface:"MutationEvent"): MutationEvent; - createEvent(eventInterface:"MutationEvents"): MutationEvent; - createEvent(eventInterface:"NavigationCompletedEvent"): NavigationCompletedEvent; - createEvent(eventInterface:"NavigationEvent"): NavigationEvent; - createEvent(eventInterface:"NavigationEventWithReferrer"): NavigationEventWithReferrer; - createEvent(eventInterface:"OfflineAudioCompletionEvent"): OfflineAudioCompletionEvent; - createEvent(eventInterface:"PageTransitionEvent"): PageTransitionEvent; - createEvent(eventInterface:"PermissionRequestedEvent"): PermissionRequestedEvent; - createEvent(eventInterface:"PointerEvent"): PointerEvent; - createEvent(eventInterface:"PopStateEvent"): PopStateEvent; - createEvent(eventInterface:"ProgressEvent"): ProgressEvent; - createEvent(eventInterface:"SVGZoomEvent"): SVGZoomEvent; - createEvent(eventInterface:"SVGZoomEvents"): SVGZoomEvent; - createEvent(eventInterface:"ScriptNotifyEvent"): ScriptNotifyEvent; - createEvent(eventInterface:"StorageEvent"): StorageEvent; - createEvent(eventInterface:"TextEvent"): TextEvent; - createEvent(eventInterface:"TouchEvent"): TouchEvent; - createEvent(eventInterface:"TrackEvent"): TrackEvent; - createEvent(eventInterface:"TransitionEvent"): TransitionEvent; - createEvent(eventInterface:"UIEvent"): UIEvent; - createEvent(eventInterface:"UIEvents"): UIEvent; - createEvent(eventInterface:"UnviewableContentIdentifiedEvent"): UnviewableContentIdentifiedEvent; - createEvent(eventInterface:"WebGLContextEvent"): WebGLContextEvent; - createEvent(eventInterface:"WheelEvent"): WheelEvent; - createEvent(eventInterface: string): Event; -} - -interface ElementTraversal { - childElementCount: number; - firstElementChild: Element; - lastElementChild: Element; - nextElementSibling: Element; - previousElementSibling: Element; -} - -interface GetSVGDocument { - getSVGDocument(): Document; -} - -interface GlobalEventHandlers { - onpointercancel: (ev: PointerEvent) => any; - onpointerdown: (ev: PointerEvent) => any; - onpointerenter: (ev: PointerEvent) => any; - onpointerleave: (ev: PointerEvent) => any; - onpointermove: (ev: PointerEvent) => any; - onpointerout: (ev: PointerEvent) => any; - onpointerover: (ev: PointerEvent) => any; - onpointerup: (ev: PointerEvent) => any; - onwheel: (ev: WheelEvent) => any; - addEventListener(type: "pointercancel", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerdown", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerenter", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerleave", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointermove", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerout", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerover", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerup", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "wheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -interface HTMLTableAlignment { - /** - * Sets or retrieves a value that you can use to implement your own ch functionality for the object. - */ - ch: string; - /** - * Sets or retrieves a value that you can use to implement your own chOff functionality for the object. - */ - chOff: string; - /** - * Sets or retrieves how text and other content are vertically aligned within the object that contains them. - */ - vAlign: string; -} - -interface IDBEnvironment { - indexedDB: IDBFactory; - msIndexedDB: IDBFactory; -} - -interface LinkStyle { - sheet: StyleSheet; -} - -interface MSBaseReader { - onabort: (ev: Event) => any; - onerror: (ev: Event) => any; - onload: (ev: Event) => any; - onloadend: (ev: ProgressEvent) => any; - onloadstart: (ev: Event) => any; - onprogress: (ev: ProgressEvent) => any; - readyState: number; - result: any; - abort(): void; - DONE: number; - EMPTY: number; - 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: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -interface MSFileSaver { - msSaveBlob(blob: any, defaultName?: string): boolean; - msSaveOrOpenBlob(blob: any, defaultName?: string): boolean; -} - -interface MSNavigatorDoNotTrack { - confirmSiteSpecificTrackingException(args: ConfirmSiteSpecificExceptionsInformation): boolean; - confirmWebWideTrackingException(args: ExceptionInformation): boolean; - removeSiteSpecificTrackingException(args: ExceptionInformation): void; - removeWebWideTrackingException(args: ExceptionInformation): void; - storeSiteSpecificTrackingException(args: StoreSiteSpecificExceptionsInformation): void; - storeWebWideTrackingException(args: StoreExceptionsInformation): void; -} - -interface NavigatorContentUtils { -} - -interface NavigatorGeolocation { - geolocation: Geolocation; -} - -interface NavigatorID { - appName: string; - appVersion: string; - platform: string; - product: string; - productSub: string; - userAgent: string; - vendor: string; - vendorSub: string; -} - -interface NavigatorOnLine { - onLine: boolean; -} - -interface NavigatorStorageUtils { -} - -interface NodeSelector { - querySelector(selectors: string): Element; - querySelectorAll(selectors: string): NodeListOf; -} - -interface RandomSource { - getRandomValues(array: ArrayBufferView): ArrayBufferView; -} - -interface SVGAnimatedPathData { - pathSegList: SVGPathSegList; -} - -interface SVGAnimatedPoints { - animatedPoints: SVGPointList; - points: SVGPointList; -} - -interface SVGExternalResourcesRequired { - externalResourcesRequired: SVGAnimatedBoolean; -} - -interface SVGFilterPrimitiveStandardAttributes extends SVGStylable { - height: SVGAnimatedLength; - result: SVGAnimatedString; - width: SVGAnimatedLength; - x: SVGAnimatedLength; - y: SVGAnimatedLength; -} - -interface SVGFitToViewBox { - preserveAspectRatio: SVGAnimatedPreserveAspectRatio; - viewBox: SVGAnimatedRect; -} - -interface SVGLangSpace { - xmllang: string; - xmlspace: string; -} - -interface SVGLocatable { - farthestViewportElement: SVGElement; - nearestViewportElement: SVGElement; - getBBox(): SVGRect; - getCTM(): SVGMatrix; - getScreenCTM(): SVGMatrix; - getTransformToElement(element: SVGElement): SVGMatrix; -} - -interface SVGStylable { - className: any; - style: CSSStyleDeclaration; -} - -interface SVGTests { - requiredExtensions: SVGStringList; - requiredFeatures: SVGStringList; - systemLanguage: SVGStringList; - hasExtension(extension: string): boolean; -} - -interface SVGTransformable extends SVGLocatable { - transform: SVGAnimatedTransformList; -} - -interface SVGURIReference { - href: SVGAnimatedString; -} - -interface WindowBase64 { - atob(encodedString: string): string; - btoa(rawString: string): string; -} - -interface WindowConsole { - console: Console; -} - -interface WindowLocalStorage { - localStorage: Storage; -} - -interface WindowSessionStorage { - sessionStorage: Storage; -} - -interface WindowTimers extends Object, WindowTimersExtension { - clearInterval(handle: number): void; - clearTimeout(handle: number): void; - setInterval(handler: any, timeout?: any, ...args: any[]): number; - setTimeout(handler: any, timeout?: any, ...args: any[]): number; -} - -interface WindowTimersExtension { - clearImmediate(handle: number): void; - msClearImmediate(handle: number): void; - msSetImmediate(expression: any, ...args: any[]): number; - setImmediate(expression: any, ...args: any[]): number; -} - -interface XMLHttpRequestEventTarget { - onabort: (ev: Event) => any; - onerror: (ev: Event) => 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; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -} - -interface StorageEventInit extends EventInit { - key?: string; - oldValue?: string; - newValue?: string; - url: string; - storageArea?: Storage; -} - -interface IDBObjectStoreParameters { - keyPath?: string | string[]; - autoIncrement?: boolean; -} - -interface IDBIndexParameters { - unique?: boolean; - multiEntry?: boolean; -} - -interface NodeListOf extends NodeList { - length: number; - item(index: number): TNode; - [index: number]: TNode; -} - -interface BlobPropertyBag { - type?: string; - endings?: string; -} - -interface FilePropertyBag { - type?: string; - lastModified?: number; -} - -interface EventListenerObject { - handleEvent(evt: Event): void; -} - -interface MessageEventInit extends EventInit { - data?: any; - origin?: string; - lastEventId?: string; - channel?: string; - source?: any; - ports?: MessagePort[]; -} - -interface ProgressEventInit extends EventInit { - lengthComputable?: boolean; - loaded?: number; - total?: number; -} - -interface HTMLTemplateElement extends HTMLElement { - content: DocumentFragment; -} - -declare var HTMLTemplateElement: { - prototype: HTMLTemplateElement; - new(): HTMLTemplateElement; -} - -interface HTMLPictureElement extends HTMLElement { -} - -declare var HTMLPictureElement: { - prototype: HTMLPictureElement; - new(): HTMLPictureElement; -} - -declare type EventListenerOrEventListenerObject = EventListener | EventListenerObject; - -interface ErrorEventHandler { - (message: string, filename?: string, lineno?: number, colno?: number, error?:Error): void; -} -interface PositionCallback { - (position: Position): void; -} -interface PositionErrorCallback { - (error: PositionError): void; -} -interface MediaQueryListListener { - (mql: MediaQueryList): void; -} -interface MSLaunchUriCallback { - (): void; -} -interface FrameRequestCallback { - (time: number): void; -} -interface MSUnsafeFunctionCallback { - (): any; -} -interface MSExecAtPriorityFunctionCallback { - (...args: any[]): any; -} -interface MutationCallback { - (mutations: MutationRecord[], observer: MutationObserver): void; -} -interface DecodeSuccessCallback { - (decodedData: AudioBuffer): void; -} -interface DecodeErrorCallback { - (error: DOMException): void; -} -interface FunctionStringCallback { - (data: string): void; -} -declare var Audio: {new(src?: string): HTMLAudioElement; }; -declare var Image: {new(width?: number, height?: number): HTMLImageElement; }; -declare var Option: {new(text?: string, value?: string, defaultSelected?: boolean, selected?: boolean): HTMLOptionElement; }; -declare var animationStartTime: number; -declare var applicationCache: ApplicationCache; -declare var clientInformation: Navigator; -declare var closed: boolean; -declare var crypto: Crypto; -declare var defaultStatus: string; -declare var devicePixelRatio: number; -declare var doNotTrack: string; -declare var document: Document; -declare var event: Event; -declare var external: External; -declare var frameElement: Element; -declare var frames: Window; -declare var history: History; -declare var innerHeight: number; -declare var innerWidth: number; -declare var length: number; -declare var location: Location; -declare var locationbar: BarProp; -declare var menubar: BarProp; -declare var msAnimationStartTime: number; -declare var name: string; -declare var navigator: Navigator; -declare var offscreenBuffering: string | boolean; -declare var onabort: (ev: Event) => any; -declare var onafterprint: (ev: Event) => any; -declare var onbeforeprint: (ev: Event) => any; -declare var onbeforeunload: (ev: BeforeUnloadEvent) => any; -declare var onblur: (ev: FocusEvent) => any; -declare var oncanplay: (ev: Event) => any; -declare var oncanplaythrough: (ev: Event) => any; -declare var onchange: (ev: Event) => any; -declare var onclick: (ev: MouseEvent) => any; -declare var oncompassneedscalibration: (ev: Event) => any; -declare var oncontextmenu: (ev: PointerEvent) => any; -declare var ondblclick: (ev: MouseEvent) => any; -declare var ondevicemotion: (ev: DeviceMotionEvent) => any; -declare var ondeviceorientation: (ev: DeviceOrientationEvent) => any; -declare var ondrag: (ev: DragEvent) => any; -declare var ondragend: (ev: DragEvent) => any; -declare var ondragenter: (ev: DragEvent) => any; -declare var ondragleave: (ev: DragEvent) => any; -declare var ondragover: (ev: DragEvent) => any; -declare var ondragstart: (ev: DragEvent) => any; -declare var ondrop: (ev: DragEvent) => any; -declare var ondurationchange: (ev: Event) => any; -declare var onemptied: (ev: Event) => any; -declare var onended: (ev: Event) => any; -declare var onerror: ErrorEventHandler; -declare var onfocus: (ev: FocusEvent) => any; -declare var onhashchange: (ev: HashChangeEvent) => any; -declare var oninput: (ev: Event) => any; -declare var onkeydown: (ev: KeyboardEvent) => any; -declare var onkeypress: (ev: KeyboardEvent) => any; -declare var onkeyup: (ev: KeyboardEvent) => any; -declare var onload: (ev: Event) => any; -declare var onloadeddata: (ev: Event) => any; -declare var onloadedmetadata: (ev: Event) => any; -declare var onloadstart: (ev: Event) => any; -declare var onmessage: (ev: MessageEvent) => any; -declare var onmousedown: (ev: MouseEvent) => any; -declare var onmouseenter: (ev: MouseEvent) => any; -declare var onmouseleave: (ev: MouseEvent) => any; -declare var onmousemove: (ev: MouseEvent) => any; -declare var onmouseout: (ev: MouseEvent) => any; -declare var onmouseover: (ev: MouseEvent) => any; -declare var onmouseup: (ev: MouseEvent) => any; -declare var onmousewheel: (ev: MouseWheelEvent) => any; -declare var onmsgesturechange: (ev: MSGestureEvent) => any; -declare var onmsgesturedoubletap: (ev: MSGestureEvent) => any; -declare var onmsgestureend: (ev: MSGestureEvent) => any; -declare var onmsgesturehold: (ev: MSGestureEvent) => any; -declare var onmsgesturestart: (ev: MSGestureEvent) => any; -declare var onmsgesturetap: (ev: MSGestureEvent) => any; -declare var onmsinertiastart: (ev: MSGestureEvent) => any; -declare var onmspointercancel: (ev: MSPointerEvent) => any; -declare var onmspointerdown: (ev: MSPointerEvent) => any; -declare var onmspointerenter: (ev: MSPointerEvent) => any; -declare var onmspointerleave: (ev: MSPointerEvent) => any; -declare var onmspointermove: (ev: MSPointerEvent) => any; -declare var onmspointerout: (ev: MSPointerEvent) => any; -declare var onmspointerover: (ev: MSPointerEvent) => any; -declare var onmspointerup: (ev: MSPointerEvent) => any; -declare var onoffline: (ev: Event) => any; -declare var ononline: (ev: Event) => any; -declare var onorientationchange: (ev: Event) => any; -declare var onpagehide: (ev: PageTransitionEvent) => any; -declare var onpageshow: (ev: PageTransitionEvent) => any; -declare var onpause: (ev: Event) => any; -declare var onplay: (ev: Event) => any; -declare var onplaying: (ev: Event) => any; -declare var onpopstate: (ev: PopStateEvent) => any; -declare var onprogress: (ev: ProgressEvent) => any; -declare var onratechange: (ev: Event) => any; -declare var onreadystatechange: (ev: ProgressEvent) => any; -declare var onreset: (ev: Event) => any; -declare var onresize: (ev: UIEvent) => any; -declare var onscroll: (ev: UIEvent) => any; -declare var onseeked: (ev: Event) => any; -declare var onseeking: (ev: Event) => any; -declare var onselect: (ev: UIEvent) => any; -declare var onstalled: (ev: Event) => any; -declare var onstorage: (ev: StorageEvent) => any; -declare var onsubmit: (ev: Event) => any; -declare var onsuspend: (ev: Event) => any; -declare var ontimeupdate: (ev: Event) => any; -declare var ontouchcancel: any; -declare var ontouchend: any; -declare var ontouchmove: any; -declare var ontouchstart: any; -declare var onunload: (ev: Event) => any; -declare var onvolumechange: (ev: Event) => any; -declare var onwaiting: (ev: Event) => any; -declare var opener: Window; -declare var orientation: string | number; -declare var outerHeight: number; -declare var outerWidth: number; -declare var pageXOffset: number; -declare var pageYOffset: number; -declare var parent: Window; -declare var performance: Performance; -declare var personalbar: BarProp; -declare var screen: Screen; -declare var screenLeft: number; -declare var screenTop: number; -declare var screenX: number; -declare var screenY: number; -declare var scrollX: number; -declare var scrollY: number; -declare var scrollbars: BarProp; -declare var self: Window; -declare var status: string; -declare var statusbar: BarProp; -declare var styleMedia: StyleMedia; -declare var toolbar: BarProp; -declare var top: Window; -declare var window: Window; -declare var URL: URL; -declare function alert(message?: any): void; -declare function blur(): void; -declare function cancelAnimationFrame(handle: number): void; -declare function captureEvents(): void; -declare function close(): void; -declare function confirm(message?: string): boolean; -declare function focus(): void; -declare function getComputedStyle(elt: Element, pseudoElt?: string): CSSStyleDeclaration; -declare function getMatchedCSSRules(elt: Element, pseudoElt?: string): CSSRuleList; -declare function getSelection(): Selection; -declare function matchMedia(mediaQuery: string): MediaQueryList; -declare function moveBy(x?: number, y?: number): void; -declare function moveTo(x?: number, y?: number): void; -declare function msCancelRequestAnimationFrame(handle: number): void; -declare function msMatchMedia(mediaQuery: string): MediaQueryList; -declare function msRequestAnimationFrame(callback: FrameRequestCallback): number; -declare function msWriteProfilerMark(profilerMarkName: string): void; -declare function open(url?: string, target?: string, features?: string, replace?: boolean): Window; -declare function postMessage(message: any, targetOrigin: string, ports?: any): void; -declare function print(): void; -declare function prompt(message?: string, _default?: string): string; -declare function releaseEvents(): void; -declare function requestAnimationFrame(callback: FrameRequestCallback): number; -declare function resizeBy(x?: number, y?: number): void; -declare function resizeTo(x?: number, y?: number): void; -declare function scroll(x?: number, y?: number): void; -declare function scrollBy(x?: number, y?: number): void; -declare function scrollTo(x?: number, y?: number): void; -declare function webkitConvertPointFromNodeToPage(node: Node, pt: WebKitPoint): WebKitPoint; -declare function webkitConvertPointFromPageToNode(node: Node, pt: WebKitPoint): WebKitPoint; -declare function toString(): string; -declare function addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -declare function dispatchEvent(evt: Event): boolean; -declare function removeEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; -declare function clearInterval(handle: number): void; -declare function clearTimeout(handle: number): void; -declare function setInterval(handler: any, timeout?: any, ...args: any[]): number; -declare function setTimeout(handler: any, timeout?: any, ...args: any[]): number; -declare function clearImmediate(handle: number): void; -declare function msClearImmediate(handle: number): void; -declare function msSetImmediate(expression: any, ...args: any[]): number; -declare function setImmediate(expression: any, ...args: any[]): number; -declare var sessionStorage: Storage; -declare var localStorage: Storage; -declare var console: Console; -declare var onpointercancel: (ev: PointerEvent) => any; -declare var onpointerdown: (ev: PointerEvent) => any; -declare var onpointerenter: (ev: PointerEvent) => any; -declare var onpointerleave: (ev: PointerEvent) => any; -declare var onpointermove: (ev: PointerEvent) => any; -declare var onpointerout: (ev: PointerEvent) => any; -declare var onpointerover: (ev: PointerEvent) => any; -declare var onpointerup: (ev: PointerEvent) => any; -declare var onwheel: (ev: WheelEvent) => any; -declare var indexedDB: IDBFactory; -declare var msIndexedDB: IDBFactory; -declare function atob(encodedString: string): string; -declare function btoa(rawString: string): string; -declare function addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "MSGestureDoubleTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "MSGestureEnd", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "MSGestureHold", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "MSGestureStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "MSGestureTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "MSInertiaStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "MSPointerCancel", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "MSPointerDown", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "MSPointerEnter", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "MSPointerLeave", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "MSPointerMove", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "MSPointerOut", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "MSPointerOver", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "MSPointerUp", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "abort", listener: (ev: UIEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "afterprint", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "beforeprint", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "beforeunload", listener: (ev: BeforeUnloadEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "canplay", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "canplaythrough", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "change", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "compassneedscalibration", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "devicemotion", listener: (ev: DeviceMotionEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "deviceorientation", listener: (ev: DeviceOrientationEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "dragend", listener: (ev: DragEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "dragenter", listener: (ev: DragEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "dragleave", listener: (ev: DragEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "dragover", listener: (ev: DragEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "dragstart", listener: (ev: DragEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "hashchange", listener: (ev: HashChangeEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "load", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "loadeddata", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "loadedmetadata", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "loadstart", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "message", listener: (ev: MessageEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "mousedown", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "mouseenter", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "mouseleave", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "mousemove", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "offline", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "online", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "orientationchange", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "pagehide", listener: (ev: PageTransitionEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "pageshow", listener: (ev: PageTransitionEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "pointercancel", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "pointerdown", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "pointerenter", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "pointerleave", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "pointermove", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "pointerout", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "pointerover", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "pointerup", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "popstate", listener: (ev: PopStateEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "progress", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "ratechange", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "readystatechange", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "reset", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "resize", listener: (ev: UIEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "scroll", listener: (ev: UIEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "seeked", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "seeking", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "select", listener: (ev: UIEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "stalled", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "storage", listener: (ev: StorageEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "submit", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "suspend", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "timeupdate", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "unload", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "volumechange", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "waiting", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "wheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;interface DOMTokenList { - [Symbol.iterator](): IterableIterator; -} - -interface NodeList { - [Symbol.iterator](): IterableIterator -} - -interface NodeListOf { - [Symbol.iterator](): IterableIterator -} - -///////////////////////////// -/// WorkerGlobalScope APIs -///////////////////////////// -// These are only available in a Web Worker -declare function importScripts(...urls: string[]): void; - - -///////////////////////////// -/// Windows Script Host APIS -///////////////////////////// - - -interface ActiveXObject { - new (s: string): any; -} -declare var ActiveXObject: ActiveXObject; - -interface ITextWriter { - Write(s: string): void; - WriteLine(s: string): void; - Close(): void; -} - -interface TextStreamBase { - /** - * The column number of the current character position in an input stream. - */ - Column: number; - - /** - * The current line number in an input stream. - */ - Line: number; - - /** - * Closes a text stream. - * It is not necessary to close standard streams; they close automatically when the process ends. If - * you close a standard stream, be aware that any other pointers to that standard stream become invalid. - */ - Close(): void; -} - -interface TextStreamWriter extends TextStreamBase { - /** - * Sends a string to an output stream. - */ - Write(s: string): void; - - /** - * Sends a specified number of blank lines (newline characters) to an output stream. - */ - WriteBlankLines(intLines: number): void; - - /** - * Sends a string followed by a newline character to an output stream. - */ - WriteLine(s: string): void; -} - -interface TextStreamReader extends TextStreamBase { - /** - * Returns a specified number of characters from an input stream, starting at the current pointer position. - * Does not return until the ENTER key is pressed. - * Can only be used on a stream in reading mode; causes an error in writing or appending mode. - */ - Read(characters: number): string; - - /** - * Returns all characters from an input stream. - * Can only be used on a stream in reading mode; causes an error in writing or appending mode. - */ - ReadAll(): string; - - /** - * Returns an entire line from an input stream. - * Although this method extracts the newline character, it does not add it to the returned string. - * Can only be used on a stream in reading mode; causes an error in writing or appending mode. - */ - ReadLine(): string; - - /** - * Skips a specified number of characters when reading from an input text stream. - * Can only be used on a stream in reading mode; causes an error in writing or appending mode. - * @param characters Positive number of characters to skip forward. (Backward skipping is not supported.) - */ - Skip(characters: number): void; - - /** - * Skips the next line when reading from an input text stream. - * Can only be used on a stream in reading mode, not writing or appending mode. - */ - SkipLine(): void; - - /** - * Indicates whether the stream pointer position is at the end of a line. - */ - AtEndOfLine: boolean; - - /** - * Indicates whether the stream pointer position is at the end of a stream. - */ - AtEndOfStream: boolean; -} - -declare var WScript: { - /** - * Outputs text to either a message box (under WScript.exe) or the command console window followed by - * a newline (under CScript.exe). - */ - Echo(s: any): void; - - /** - * Exposes the write-only error output stream for the current script. - * Can be accessed only while using CScript.exe. - */ - StdErr: TextStreamWriter; - - /** - * Exposes the write-only output stream for the current script. - * Can be accessed only while using CScript.exe. - */ - StdOut: TextStreamWriter; - Arguments: { length: number; Item(n: number): string; }; - - /** - * The full path of the currently running script. - */ - ScriptFullName: string; - - /** - * Forces the script to stop immediately, with an optional exit code. - */ - Quit(exitCode?: number): number; - - /** - * The Windows Script Host build version number. - */ - BuildVersion: number; - - /** - * Fully qualified path of the host executable. - */ - FullName: string; - - /** - * Gets/sets the script mode - interactive(true) or batch(false). - */ - Interactive: boolean; - - /** - * The name of the host executable (WScript.exe or CScript.exe). - */ - Name: string; - - /** - * Path of the directory containing the host executable. - */ - Path: string; - - /** - * The filename of the currently running script. - */ - ScriptName: string; - - /** - * Exposes the read-only input stream for the current script. - * Can be accessed only while using CScript.exe. - */ - StdIn: TextStreamReader; - - /** - * Windows Script Host version - */ - Version: string; - - /** - * Connects a COM object's event sources to functions named with a given prefix, in the form prefix_event. - */ - ConnectObject(objEventSource: any, strPrefix: string): void; - - /** - * Creates a COM object. - * @param strProgiID - * @param strPrefix Function names in the form prefix_event will be bound to this object's COM events. - */ - CreateObject(strProgID: string, strPrefix?: string): any; - - /** - * Disconnects a COM object from its event sources. - */ - DisconnectObject(obj: any): void; - - /** - * Retrieves an existing object with the specified ProgID from memory, or creates a new one from a file. - * @param strPathname Fully qualified path to the file containing the object persisted to disk. - * For objects in memory, pass a zero-length string. - * @param strProgID - * @param strPrefix Function names in the form prefix_event will be bound to this object's COM events. - */ - GetObject(strPathname: string, strProgID?: string, strPrefix?: string): any; - - /** - * Suspends script execution for a specified length of time, then continues execution. - * @param intTime Interval (in milliseconds) to suspend script execution. - */ - Sleep(intTime: number): void; -}; - -/** - * Allows enumerating over a COM collection, which may not have indexed item access. - */ -interface Enumerator { - /** - * Returns true if the current item is the last one in the collection, or the collection is empty, - * or the current item is undefined. - */ - atEnd(): boolean; - - /** - * Returns the current item in the collection - */ - item(): T; - - /** - * Resets the current item in the collection to the first item. If there are no items in the collection, - * the current item is set to undefined. - */ - moveFirst(): void; - - /** - * Moves the current item to the next item in the collection. If the enumerator is at the end of - * the collection or the collection is empty, the current item is set to undefined. - */ - moveNext(): void; -} - -interface EnumeratorConstructor { - new (collection: any): Enumerator; - new (collection: any): Enumerator; -} - -declare var Enumerator: EnumeratorConstructor; - -/** - * Enables reading from a COM safe array, which might have an alternate lower bound, or multiple dimensions. - */ -interface VBArray { - /** - * Returns the number of dimensions (1-based). - */ - dimensions(): number; - - /** - * Takes an index for each dimension in the array, and returns the item at the corresponding location. - */ - getItem(dimension1Index: number, ...dimensionNIndexes: number[]): T; - - /** - * Returns the smallest available index for a given dimension. - * @param dimension 1-based dimension (defaults to 1) - */ - lbound(dimension?: number): number; - - /** - * Returns the largest available index for a given dimension. - * @param dimension 1-based dimension (defaults to 1) - */ - ubound(dimension?: number): number; - - /** - * Returns a Javascript array with all the elements in the VBArray. If there are multiple dimensions, - * each successive dimension is appended to the end of the array. - * Example: [[1,2,3],[4,5,6]] becomes [1,2,3,4,5,6] - */ - toArray(): T[]; -} - -interface VBArrayConstructor { - new (safeArray: any): VBArray; - new (safeArray: any): VBArray; -} - -declare var VBArray: VBArrayConstructor; diff --git a/lib/lib.scriptHost.d.ts b/lib/lib.scriptHost.d.ts index 12e04fb4144..d4c6131fd93 100644 --- a/lib/lib.scriptHost.d.ts +++ b/lib/lib.scriptHost.d.ts @@ -13,7 +13,7 @@ See the Apache Version 2.0 License for specific language governing permissions and limitations under the License. ***************************************************************************** */ -/// +/// ///////////////////////////// diff --git a/lib/lib.webworker.d.ts b/lib/lib.webworker.d.ts index 43bc6fad9a0..9c54643a2ce 100644 --- a/lib/lib.webworker.d.ts +++ b/lib/lib.webworker.d.ts @@ -13,208 +13,7 @@ See the Apache Version 2.0 License for specific language governing permissions and limitations under the License. ***************************************************************************** */ -/// -///////////////////////////// -/// ECMAScript Internationalization API -///////////////////////////// - -declare module Intl { - interface CollatorOptions { - usage?: string; - localeMatcher?: string; - numeric?: boolean; - caseFirst?: string; - sensitivity?: string; - ignorePunctuation?: boolean; - } - - interface ResolvedCollatorOptions { - locale: string; - usage: string; - sensitivity: string; - ignorePunctuation: boolean; - collation: string; - caseFirst: string; - numeric: boolean; - } - - interface Collator { - compare(x: string, y: string): number; - resolvedOptions(): ResolvedCollatorOptions; - } - var Collator: { - new (locales?: string[], options?: CollatorOptions): Collator; - new (locale?: string, options?: CollatorOptions): Collator; - (locales?: string[], options?: CollatorOptions): Collator; - (locale?: string, options?: CollatorOptions): Collator; - supportedLocalesOf(locales: string[], options?: CollatorOptions): string[]; - supportedLocalesOf(locale: string, options?: CollatorOptions): string[]; - } - - interface NumberFormatOptions { - localeMatcher?: string; - style?: string; - currency?: string; - currencyDisplay?: string; - useGrouping?: boolean; - minimumIntegerDigits?: number; - minimumFractionDigits?: number; - maximumFractionDigits?: number; - minimumSignificantDigits?: number; - maximumSignificantDigits?: number; - } - - interface ResolvedNumberFormatOptions { - locale: string; - numberingSystem: string; - style: string; - currency?: string; - currencyDisplay?: string; - minimumIntegerDigits: number; - minimumFractionDigits: number; - maximumFractionDigits: number; - minimumSignificantDigits?: number; - maximumSignificantDigits?: number; - useGrouping: boolean; - } - - interface NumberFormat { - format(value: number): string; - resolvedOptions(): ResolvedNumberFormatOptions; - } - var NumberFormat: { - new (locales?: string[], options?: NumberFormatOptions): NumberFormat; - new (locale?: string, options?: NumberFormatOptions): NumberFormat; - (locales?: string[], options?: NumberFormatOptions): NumberFormat; - (locale?: string, options?: NumberFormatOptions): NumberFormat; - supportedLocalesOf(locales: string[], options?: NumberFormatOptions): string[]; - supportedLocalesOf(locale: string, options?: NumberFormatOptions): string[]; - } - - interface DateTimeFormatOptions { - localeMatcher?: string; - weekday?: string; - era?: string; - year?: string; - month?: string; - day?: string; - hour?: string; - minute?: string; - second?: string; - timeZoneName?: string; - formatMatcher?: string; - hour12?: boolean; - timeZone?: string; - } - - interface ResolvedDateTimeFormatOptions { - locale: string; - calendar: string; - numberingSystem: string; - timeZone: string; - hour12?: boolean; - weekday?: string; - era?: string; - year?: string; - month?: string; - day?: string; - hour?: string; - minute?: string; - second?: string; - timeZoneName?: string; - } - - interface DateTimeFormat { - format(date?: Date | number): string; - resolvedOptions(): ResolvedDateTimeFormatOptions; - } - var DateTimeFormat: { - new (locales?: string[], options?: DateTimeFormatOptions): DateTimeFormat; - new (locale?: string, options?: DateTimeFormatOptions): DateTimeFormat; - (locales?: string[], options?: DateTimeFormatOptions): DateTimeFormat; - (locale?: string, options?: DateTimeFormatOptions): DateTimeFormat; - supportedLocalesOf(locales: string[], options?: DateTimeFormatOptions): string[]; - supportedLocalesOf(locale: string, options?: DateTimeFormatOptions): string[]; - } -} - -interface String { - /** - * Determines whether two strings are equivalent in the current locale. - * @param that String to compare to target string - * @param locales An array of locale strings that contain one or more language or locale tags. If you include more than one locale string, list them in descending order of priority so that the first entry is the preferred locale. If you omit this parameter, the default locale of the JavaScript runtime is used. This parameter must conform to BCP 47 standards; see the Intl.Collator object for details. - * @param options An object that contains one or more properties that specify comparison options. see the Intl.Collator object for details. - */ - localeCompare(that: string, locales: string[], options?: Intl.CollatorOptions): number; - - /** - * Determines whether two strings are equivalent in the current locale. - * @param that String to compare to target string - * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used. This parameter must conform to BCP 47 standards; see the Intl.Collator object for details. - * @param options An object that contains one or more properties that specify comparison options. see the Intl.Collator object for details. - */ - localeCompare(that: string, locale: string, options?: Intl.CollatorOptions): number; -} - -interface Number { - /** - * Converts a number to a string by using the current or specified locale. - * @param locales An array of locale strings that contain one or more language or locale tags. If you include more than one locale string, list them in descending order of priority so that the first entry is the preferred locale. If you omit this parameter, the default locale of the JavaScript runtime is used. - * @param options An object that contains one or more properties that specify comparison options. - */ - toLocaleString(locales?: string[], options?: Intl.NumberFormatOptions): string; - - /** - * Converts a number to a string by using the current or specified locale. - * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used. - * @param options An object that contains one or more properties that specify comparison options. - */ - toLocaleString(locale?: string, options?: Intl.NumberFormatOptions): string; -} - -interface Date { - /** - * Converts a date and time to a string by using the current or specified locale. - * @param locales An array of locale strings that contain one or more language or locale tags. If you include more than one locale string, list them in descending order of priority so that the first entry is the preferred locale. If you omit this parameter, the default locale of the JavaScript runtime is used. - * @param options An object that contains one or more properties that specify comparison options. - */ - toLocaleString(locales?: string[], options?: Intl.DateTimeFormatOptions): string; - /** - * Converts a date to a string by using the current or specified locale. - * @param locales An array of locale strings that contain one or more language or locale tags. If you include more than one locale string, list them in descending order of priority so that the first entry is the preferred locale. If you omit this parameter, the default locale of the JavaScript runtime is used. - * @param options An object that contains one or more properties that specify comparison options. - */ - toLocaleDateString(locales?: string[], options?: Intl.DateTimeFormatOptions): string; - - /** - * Converts a time to a string by using the current or specified locale. - * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used. - * @param options An object that contains one or more properties that specify comparison options. - */ - toLocaleTimeString(locale?: string[], options?: Intl.DateTimeFormatOptions): string; - - /** - * Converts a date and time to a string by using the current or specified locale. - * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used. - * @param options An object that contains one or more properties that specify comparison options. - */ - toLocaleString(locale?: string, options?: Intl.DateTimeFormatOptions): string; - - /** - * Converts a date to a string by using the current or specified locale. - * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used. - * @param options An object that contains one or more properties that specify comparison options. - */ - toLocaleDateString(locale?: string, options?: Intl.DateTimeFormatOptions): string; - - /** - * Converts a time to a string by using the current or specified locale. - * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used. - * @param options An object that contains one or more properties that specify comparison options. - */ - toLocaleTimeString(locale?: string, options?: Intl.DateTimeFormatOptions): string; -} - +/// ///////////////////////////// /// IE Worker APIs @@ -230,10 +29,12 @@ interface EventListener { } interface AudioBuffer { - duration: number; - length: number; - numberOfChannels: number; - sampleRate: number; + readonly duration: number; + readonly length: number; + readonly numberOfChannels: number; + readonly sampleRate: number; + copyFromChannel(destination: Float32Array, channelNumber: number, startInChannel?: number): void; + copyToChannel(source: Float32Array, channelNumber: number, startInChannel?: number): void; getChannelData(channel: number): Float32Array; } @@ -243,8 +44,8 @@ declare var AudioBuffer: { } interface Blob { - size: number; - type: string; + readonly size: number; + readonly type: string; msClose(): void; msDetachStream(): any; slice(start?: number, end?: number, contentType?: string): Blob; @@ -256,9 +57,9 @@ declare var Blob: { } interface CloseEvent extends Event { - code: number; - reason: string; - wasClean: boolean; + readonly code: number; + readonly reason: string; + readonly wasClean: boolean; initCloseEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, wasCleanArg: boolean, codeArg: number, reasonArg: string): void; } @@ -275,6 +76,7 @@ interface Console { dir(value?: any, ...optionalParams: any[]): void; dirxml(value: any): void; error(message?: any, ...optionalParams: any[]): void; + exception(message?: string, ...optionalParams: any[]): void; group(groupTitle?: string): void; groupCollapsed(groupTitle?: string): void; groupEnd(): void; @@ -284,6 +86,7 @@ interface Console { profile(reportName?: string): void; profileEnd(): void; select(element: any): void; + table(...data: any[]): void; time(timerName?: string): void; timeEnd(timerName?: string): void; trace(message?: any, ...optionalParams: any[]): void; @@ -296,13 +99,13 @@ declare var Console: { } interface Coordinates { - accuracy: number; - altitude: number; - altitudeAccuracy: number; - heading: number; - latitude: number; - longitude: number; - speed: number; + readonly accuracy: number; + readonly altitude: number; + readonly altitudeAccuracy: number; + readonly heading: number; + readonly latitude: number; + readonly longitude: number; + readonly speed: number; } declare var Coordinates: { @@ -311,7 +114,7 @@ declare var Coordinates: { } interface DOMError { - name: string; + readonly name: string; toString(): string; } @@ -321,73 +124,73 @@ declare var DOMError: { } interface DOMException { - code: number; - message: string; - name: string; + readonly code: number; + readonly message: string; + readonly name: string; toString(): string; - ABORT_ERR: number; - DATA_CLONE_ERR: number; - DOMSTRING_SIZE_ERR: number; - HIERARCHY_REQUEST_ERR: number; - INDEX_SIZE_ERR: number; - INUSE_ATTRIBUTE_ERR: number; - INVALID_ACCESS_ERR: number; - INVALID_CHARACTER_ERR: number; - INVALID_MODIFICATION_ERR: number; - INVALID_NODE_TYPE_ERR: number; - INVALID_STATE_ERR: number; - NAMESPACE_ERR: number; - NETWORK_ERR: number; - NOT_FOUND_ERR: number; - NOT_SUPPORTED_ERR: number; - NO_DATA_ALLOWED_ERR: number; - NO_MODIFICATION_ALLOWED_ERR: number; - PARSE_ERR: number; - QUOTA_EXCEEDED_ERR: number; - SECURITY_ERR: number; - SERIALIZE_ERR: number; - SYNTAX_ERR: number; - TIMEOUT_ERR: number; - TYPE_MISMATCH_ERR: number; - URL_MISMATCH_ERR: number; - VALIDATION_ERR: number; - WRONG_DOCUMENT_ERR: number; + readonly ABORT_ERR: number; + readonly DATA_CLONE_ERR: number; + readonly DOMSTRING_SIZE_ERR: number; + readonly HIERARCHY_REQUEST_ERR: number; + readonly INDEX_SIZE_ERR: number; + readonly INUSE_ATTRIBUTE_ERR: number; + readonly INVALID_ACCESS_ERR: number; + readonly INVALID_CHARACTER_ERR: number; + readonly INVALID_MODIFICATION_ERR: number; + readonly INVALID_NODE_TYPE_ERR: number; + readonly INVALID_STATE_ERR: number; + readonly NAMESPACE_ERR: number; + readonly NETWORK_ERR: number; + readonly NOT_FOUND_ERR: number; + readonly NOT_SUPPORTED_ERR: number; + readonly NO_DATA_ALLOWED_ERR: number; + readonly NO_MODIFICATION_ALLOWED_ERR: number; + readonly PARSE_ERR: number; + readonly QUOTA_EXCEEDED_ERR: number; + readonly SECURITY_ERR: number; + readonly SERIALIZE_ERR: number; + readonly SYNTAX_ERR: number; + readonly TIMEOUT_ERR: number; + readonly TYPE_MISMATCH_ERR: number; + readonly URL_MISMATCH_ERR: number; + readonly VALIDATION_ERR: number; + readonly WRONG_DOCUMENT_ERR: number; } declare var DOMException: { prototype: DOMException; new(): DOMException; - ABORT_ERR: number; - DATA_CLONE_ERR: number; - DOMSTRING_SIZE_ERR: number; - HIERARCHY_REQUEST_ERR: number; - INDEX_SIZE_ERR: number; - INUSE_ATTRIBUTE_ERR: number; - INVALID_ACCESS_ERR: number; - INVALID_CHARACTER_ERR: number; - INVALID_MODIFICATION_ERR: number; - INVALID_NODE_TYPE_ERR: number; - INVALID_STATE_ERR: number; - NAMESPACE_ERR: number; - NETWORK_ERR: number; - NOT_FOUND_ERR: number; - NOT_SUPPORTED_ERR: number; - NO_DATA_ALLOWED_ERR: number; - NO_MODIFICATION_ALLOWED_ERR: number; - PARSE_ERR: number; - QUOTA_EXCEEDED_ERR: number; - SECURITY_ERR: number; - SERIALIZE_ERR: number; - SYNTAX_ERR: number; - TIMEOUT_ERR: number; - TYPE_MISMATCH_ERR: number; - URL_MISMATCH_ERR: number; - VALIDATION_ERR: number; - WRONG_DOCUMENT_ERR: number; + readonly ABORT_ERR: number; + readonly DATA_CLONE_ERR: number; + readonly DOMSTRING_SIZE_ERR: number; + readonly HIERARCHY_REQUEST_ERR: number; + readonly INDEX_SIZE_ERR: number; + readonly INUSE_ATTRIBUTE_ERR: number; + readonly INVALID_ACCESS_ERR: number; + readonly INVALID_CHARACTER_ERR: number; + readonly INVALID_MODIFICATION_ERR: number; + readonly INVALID_NODE_TYPE_ERR: number; + readonly INVALID_STATE_ERR: number; + readonly NAMESPACE_ERR: number; + readonly NETWORK_ERR: number; + readonly NOT_FOUND_ERR: number; + readonly NOT_SUPPORTED_ERR: number; + readonly NO_DATA_ALLOWED_ERR: number; + readonly NO_MODIFICATION_ALLOWED_ERR: number; + readonly PARSE_ERR: number; + readonly QUOTA_EXCEEDED_ERR: number; + readonly SECURITY_ERR: number; + readonly SERIALIZE_ERR: number; + readonly SYNTAX_ERR: number; + readonly TIMEOUT_ERR: number; + readonly TYPE_MISMATCH_ERR: number; + readonly URL_MISMATCH_ERR: number; + readonly VALIDATION_ERR: number; + readonly WRONG_DOCUMENT_ERR: number; } interface DOMStringList { - length: number; + readonly length: number; contains(str: string): boolean; item(index: number): string; [index: number]: string; @@ -399,11 +202,11 @@ declare var DOMStringList: { } interface ErrorEvent extends Event { - colno: number; - error: any; - filename: string; - lineno: number; - message: string; + readonly colno: number; + readonly error: any; + readonly filename: string; + readonly lineno: number; + readonly message: string; initErrorEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, messageArg: string, filenameArg: string, linenoArg: number): void; } @@ -413,39 +216,39 @@ declare var ErrorEvent: { } interface Event { - bubbles: boolean; + readonly bubbles: boolean; cancelBubble: boolean; - cancelable: boolean; - currentTarget: EventTarget; - defaultPrevented: boolean; - eventPhase: number; - isTrusted: boolean; + readonly cancelable: boolean; + readonly currentTarget: EventTarget; + readonly defaultPrevented: boolean; + readonly eventPhase: number; + readonly isTrusted: boolean; returnValue: boolean; - srcElement: any; - target: EventTarget; - timeStamp: number; - type: string; + readonly srcElement: any; + readonly target: EventTarget; + readonly timeStamp: number; + readonly type: string; initEvent(eventTypeArg: string, canBubbleArg: boolean, cancelableArg: boolean): void; preventDefault(): void; stopImmediatePropagation(): void; stopPropagation(): void; - AT_TARGET: number; - BUBBLING_PHASE: number; - CAPTURING_PHASE: number; + readonly AT_TARGET: number; + readonly BUBBLING_PHASE: number; + readonly CAPTURING_PHASE: number; } declare var Event: { prototype: Event; new(type: string, eventInitDict?: EventInit): Event; - AT_TARGET: number; - BUBBLING_PHASE: number; - CAPTURING_PHASE: number; + readonly AT_TARGET: number; + readonly BUBBLING_PHASE: number; + readonly CAPTURING_PHASE: number; } interface EventTarget { - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; + addEventListener(type: string, listener?: EventListenerOrEventListenerObject, useCapture?: boolean): void; dispatchEvent(evt: Event): boolean; - removeEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; + removeEventListener(type: string, listener?: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var EventTarget: { @@ -454,8 +257,9 @@ declare var EventTarget: { } interface File extends Blob { - lastModifiedDate: any; - name: string; + readonly lastModifiedDate: any; + readonly name: string; + readonly webkitRelativePath: string; } declare var File: { @@ -464,7 +268,7 @@ declare var File: { } interface FileList { - length: number; + readonly length: number; item(index: number): File; [index: number]: File; } @@ -475,7 +279,7 @@ declare var FileList: { } interface FileReader extends EventTarget, MSBaseReader { - error: DOMError; + readonly error: DOMError; readAsArrayBuffer(blob: Blob): void; readAsBinaryString(blob: Blob): void; readAsDataURL(blob: Blob): void; @@ -489,31 +293,31 @@ declare var FileReader: { } interface IDBCursor { - direction: string; - key: any; - primaryKey: any; + readonly direction: string; + key: IDBKeyRange | IDBValidKey; + readonly primaryKey: any; source: IDBObjectStore | IDBIndex; advance(count: number): void; - continue(key?: any): void; + continue(key?: IDBKeyRange | IDBValidKey): void; delete(): IDBRequest; update(value: any): IDBRequest; - NEXT: string; - NEXT_NO_DUPLICATE: string; - PREV: string; - PREV_NO_DUPLICATE: string; + readonly NEXT: string; + readonly NEXT_NO_DUPLICATE: string; + readonly PREV: string; + readonly PREV_NO_DUPLICATE: string; } declare var IDBCursor: { prototype: IDBCursor; new(): IDBCursor; - NEXT: string; - NEXT_NO_DUPLICATE: string; - PREV: string; - PREV_NO_DUPLICATE: string; + readonly NEXT: string; + readonly NEXT_NO_DUPLICATE: string; + readonly PREV: string; + readonly PREV_NO_DUPLICATE: string; } interface IDBCursorWithValue extends IDBCursor { - value: any; + readonly value: any; } declare var IDBCursorWithValue: { @@ -522,15 +326,17 @@ declare var IDBCursorWithValue: { } interface IDBDatabase extends EventTarget { - name: string; - objectStoreNames: DOMStringList; + readonly name: string; + readonly objectStoreNames: DOMStringList; onabort: (ev: Event) => any; onerror: (ev: Event) => any; version: number; + onversionchange: (ev: IDBVersionChangeEvent) => any; close(): void; createObjectStore(name: string, optionalParameters?: IDBObjectStoreParameters): IDBObjectStore; 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: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; @@ -554,15 +360,15 @@ declare var IDBFactory: { interface IDBIndex { keyPath: string | string[]; - name: string; - objectStore: IDBObjectStore; - unique: boolean; + readonly name: string; + readonly objectStore: IDBObjectStore; + readonly unique: boolean; multiEntry: boolean; - count(key?: any): IDBRequest; - get(key: any): IDBRequest; - getKey(key: any): IDBRequest; - openCursor(range?: IDBKeyRange, direction?: string): IDBRequest; - openKeyCursor(range?: IDBKeyRange, direction?: string): IDBRequest; + count(key?: IDBKeyRange | IDBValidKey): IDBRequest; + get(key: IDBKeyRange | IDBValidKey): IDBRequest; + getKey(key: IDBKeyRange | IDBValidKey): IDBRequest; + openCursor(range?: IDBKeyRange | IDBValidKey, direction?: string): IDBRequest; + openKeyCursor(range?: IDBKeyRange | IDBValidKey, direction?: string): IDBRequest; } declare var IDBIndex: { @@ -571,37 +377,37 @@ declare var IDBIndex: { } interface IDBKeyRange { - lower: any; - lowerOpen: boolean; - upper: any; - upperOpen: boolean; + readonly lower: any; + readonly lowerOpen: boolean; + readonly upper: any; + readonly upperOpen: boolean; } declare var IDBKeyRange: { prototype: IDBKeyRange; new(): IDBKeyRange; bound(lower: any, upper: any, lowerOpen?: boolean, upperOpen?: boolean): IDBKeyRange; - lowerBound(bound: any, open?: boolean): IDBKeyRange; + lowerBound(lower: any, open?: boolean): IDBKeyRange; only(value: any): IDBKeyRange; - upperBound(bound: any, open?: boolean): IDBKeyRange; + upperBound(upper: any, open?: boolean): IDBKeyRange; } interface IDBObjectStore { - indexNames: DOMStringList; + readonly indexNames: DOMStringList; keyPath: string | string[]; - name: string; - transaction: IDBTransaction; + readonly name: string; + readonly transaction: IDBTransaction; autoIncrement: boolean; - add(value: any, key?: any): IDBRequest; + add(value: any, key?: IDBKeyRange | IDBValidKey): IDBRequest; clear(): IDBRequest; - count(key?: any): IDBRequest; + count(key?: IDBKeyRange | IDBValidKey): IDBRequest; createIndex(name: string, keyPath: string | string[], optionalParameters?: IDBIndexParameters): IDBIndex; - delete(key: any): IDBRequest; + delete(key: IDBKeyRange | IDBValidKey): IDBRequest; deleteIndex(indexName: string): void; get(key: any): IDBRequest; index(name: string): IDBIndex; - openCursor(range?: any, direction?: string): IDBRequest; - put(value: any, key?: any): IDBRequest; + openCursor(range?: IDBKeyRange | IDBValidKey, direction?: string): IDBRequest; + put(value: any, key?: IDBKeyRange | IDBValidKey): IDBRequest; } declare var IDBObjectStore: { @@ -625,13 +431,13 @@ declare var IDBOpenDBRequest: { } interface IDBRequest extends EventTarget { - error: DOMError; + readonly error: DOMError; onerror: (ev: Event) => any; onsuccess: (ev: Event) => any; - readyState: string; - result: any; + readonly readyState: string; + readonly result: any; source: IDBObjectStore | IDBIndex | IDBCursor; - transaction: IDBTransaction; + 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: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; @@ -643,17 +449,17 @@ declare var IDBRequest: { } interface IDBTransaction extends EventTarget { - db: IDBDatabase; - error: DOMError; - mode: string; + readonly db: IDBDatabase; + readonly error: DOMError; + readonly mode: string; onabort: (ev: Event) => any; oncomplete: (ev: Event) => any; onerror: (ev: Event) => any; abort(): void; objectStore(name: string): IDBObjectStore; - READ_ONLY: string; - READ_WRITE: string; - VERSION_CHANGE: string; + 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; @@ -663,14 +469,14 @@ interface IDBTransaction extends EventTarget { declare var IDBTransaction: { prototype: IDBTransaction; new(): IDBTransaction; - READ_ONLY: string; - READ_WRITE: string; - VERSION_CHANGE: string; + readonly READ_ONLY: string; + readonly READ_WRITE: string; + readonly VERSION_CHANGE: string; } interface IDBVersionChangeEvent extends Event { - newVersion: number; - oldVersion: number; + readonly newVersion: number; + readonly oldVersion: number; } declare var IDBVersionChangeEvent: { @@ -680,8 +486,8 @@ declare var IDBVersionChangeEvent: { interface ImageData { data: Uint8ClampedArray; - height: number; - width: number; + readonly height: number; + readonly width: number; } declare var ImageData: { @@ -700,29 +506,29 @@ interface MSApp { execAsyncAtPriority(asynchronousCallback: MSExecAtPriorityFunctionCallback, priority: string, ...args: any[]): void; execAtPriority(synchronousCallback: MSExecAtPriorityFunctionCallback, priority: string, ...args: any[]): any; getCurrentPriority(): string; - getHtmlPrintDocumentSourceAsync(htmlDoc: any): any; + getHtmlPrintDocumentSourceAsync(htmlDoc: any): PromiseLike; getViewId(view: any): any; isTaskScheduledAtPriorityOrHigher(priority: string): boolean; pageHandlesAllApplicationActivations(enabled: boolean): void; suppressSubdownloadCredentialPrompts(suppress: boolean): void; terminateApp(exceptionObject: any): void; - CURRENT: string; - HIGH: string; - IDLE: string; - NORMAL: string; + readonly CURRENT: string; + readonly HIGH: string; + readonly IDLE: string; + readonly NORMAL: string; } declare var MSApp: MSApp; interface MSAppAsyncOperation extends EventTarget { - error: DOMError; + readonly error: DOMError; oncomplete: (ev: Event) => any; onerror: (ev: Event) => any; - readyState: number; - result: any; + readonly readyState: number; + readonly result: any; start(): void; - COMPLETED: number; - ERROR: number; - STARTED: number; + 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: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; @@ -731,9 +537,9 @@ interface MSAppAsyncOperation extends EventTarget { declare var MSAppAsyncOperation: { prototype: MSAppAsyncOperation; new(): MSAppAsyncOperation; - COMPLETED: number; - ERROR: number; - STARTED: number; + readonly COMPLETED: number; + readonly ERROR: number; + readonly STARTED: number; } interface MSBlobBuilder { @@ -747,7 +553,7 @@ declare var MSBlobBuilder: { } interface MSStream { - type: string; + readonly type: string; msClose(): void; msDetachStream(): any; } @@ -758,7 +564,7 @@ declare var MSStream: { } interface MSStreamReader extends EventTarget, MSBaseReader { - error: DOMError; + readonly error: DOMError; readAsArrayBuffer(stream: MSStream, size?: number): void; readAsBinaryString(stream: MSStream, size?: number): void; readAsBlob(stream: MSStream, size?: number): void; @@ -773,8 +579,8 @@ declare var MSStreamReader: { } interface MediaQueryList { - matches: boolean; - media: string; + readonly matches: boolean; + readonly media: string; addListener(listener: MediaQueryListListener): void; removeListener(listener: MediaQueryListListener): void; } @@ -785,8 +591,8 @@ declare var MediaQueryList: { } interface MessageChannel { - port1: MessagePort; - port2: MessagePort; + readonly port1: MessagePort; + readonly port2: MessagePort; } declare var MessageChannel: { @@ -795,10 +601,10 @@ declare var MessageChannel: { } interface MessageEvent extends Event { - data: any; - origin: string; - ports: any; - source: any; + readonly data: any; + readonly origin: string; + readonly ports: any; + readonly source: any; initMessageEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, dataArg: any, originArg: string, lastEventIdArg: string, sourceArg: any): void; } @@ -822,8 +628,8 @@ declare var MessagePort: { } interface Position { - coords: Coordinates; - timestamp: number; + readonly coords: Coordinates; + readonly timestamp: number; } declare var Position: { @@ -832,26 +638,26 @@ declare var Position: { } interface PositionError { - code: number; - message: string; + readonly code: number; + readonly message: string; toString(): string; - PERMISSION_DENIED: number; - POSITION_UNAVAILABLE: number; - TIMEOUT: number; + readonly PERMISSION_DENIED: number; + readonly POSITION_UNAVAILABLE: number; + readonly TIMEOUT: number; } declare var PositionError: { prototype: PositionError; new(): PositionError; - PERMISSION_DENIED: number; - POSITION_UNAVAILABLE: number; - TIMEOUT: number; + readonly PERMISSION_DENIED: number; + readonly POSITION_UNAVAILABLE: number; + readonly TIMEOUT: number; } interface ProgressEvent extends Event { - lengthComputable: boolean; - loaded: number; - total: number; + readonly lengthComputable: boolean; + readonly loaded: number; + readonly total: number; initProgressEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, lengthComputableArg: boolean, loadedArg: number, totalArg: number): void; } @@ -862,21 +668,21 @@ declare var ProgressEvent: { interface WebSocket extends EventTarget { binaryType: string; - bufferedAmount: number; - extensions: string; + readonly bufferedAmount: number; + readonly extensions: string; onclose: (ev: CloseEvent) => any; onerror: (ev: Event) => any; onmessage: (ev: MessageEvent) => any; onopen: (ev: Event) => any; - protocol: string; - readyState: number; - url: string; + readonly protocol: string; + readonly readyState: number; + readonly url: string; close(code?: number, reason?: string): void; send(data: any): void; - CLOSED: number; - CLOSING: number; - CONNECTING: number; - OPEN: number; + readonly CLOSED: number; + 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; @@ -887,10 +693,10 @@ interface WebSocket extends EventTarget { declare var WebSocket: { prototype: WebSocket; new(url: string, protocols?: string | string[]): WebSocket; - CLOSED: number; - CLOSING: number; - CONNECTING: number; - OPEN: number; + readonly CLOSED: number; + readonly CLOSING: number; + readonly CONNECTING: number; + readonly OPEN: number; } interface Worker extends EventTarget, AbstractWorker { @@ -910,16 +716,15 @@ declare var Worker: { interface XMLHttpRequest extends EventTarget, XMLHttpRequestEventTarget { msCaching: string; onreadystatechange: (ev: ProgressEvent) => any; - readyState: number; - response: any; - responseBody: any; - responseText: string; + readonly readyState: number; + readonly response: any; + readonly responseText: string; responseType: string; - responseXML: any; - status: number; - statusText: string; + readonly responseXML: any; + readonly status: number; + readonly statusText: string; timeout: number; - upload: XMLHttpRequestUpload; + readonly upload: XMLHttpRequestUpload; withCredentials: boolean; abort(): void; getAllResponseHeaders(): string; @@ -930,11 +735,11 @@ interface XMLHttpRequest extends EventTarget, XMLHttpRequestEventTarget { send(data?: string): void; send(data?: any): void; setRequestHeader(header: string, value: string): void; - DONE: number; - HEADERS_RECEIVED: number; - LOADING: number; - OPENED: number; - UNSENT: number; + readonly DONE: number; + readonly HEADERS_RECEIVED: number; + 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; @@ -949,11 +754,11 @@ interface XMLHttpRequest extends EventTarget, XMLHttpRequestEventTarget { declare var XMLHttpRequest: { prototype: XMLHttpRequest; new(): XMLHttpRequest; - DONE: number; - HEADERS_RECEIVED: number; - LOADING: number; - OPENED: number; - UNSENT: number; + readonly DONE: number; + readonly HEADERS_RECEIVED: number; + readonly LOADING: number; + readonly OPENED: number; + readonly UNSENT: number; create(): XMLHttpRequest; } @@ -979,12 +784,12 @@ interface MSBaseReader { onloadend: (ev: ProgressEvent) => any; onloadstart: (ev: Event) => any; onprogress: (ev: ProgressEvent) => any; - readyState: number; - result: any; + readonly readyState: number; + readonly result: any; abort(): void; - DONE: number; - EMPTY: number; - LOADING: number; + 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; @@ -995,18 +800,18 @@ interface MSBaseReader { } interface NavigatorID { - appName: string; - appVersion: string; - platform: string; - product: string; - productSub: string; - userAgent: string; - vendor: string; - vendorSub: string; + readonly appName: string; + readonly appVersion: string; + readonly platform: string; + readonly product: string; + readonly productSub: string; + readonly userAgent: string; + readonly vendor: string; + readonly vendorSub: string; } interface NavigatorOnLine { - onLine: boolean; + readonly onLine: boolean; } interface WindowBase64 { @@ -1015,7 +820,7 @@ interface WindowBase64 { } interface WindowConsole { - console: Console; + readonly console: Console; } interface XMLHttpRequestEventTarget { @@ -1049,9 +854,9 @@ declare var FileReaderSync: { } interface WorkerGlobalScope extends EventTarget, WorkerUtils, DedicatedWorkerGlobalScope, WindowConsole { - location: WorkerLocation; + readonly location: WorkerLocation; onerror: (ev: Event) => any; - self: WorkerGlobalScope; + readonly self: WorkerGlobalScope; close(): void; msWriteProfilerMark(profilerMarkName: string): void; toString(): string; @@ -1066,14 +871,14 @@ declare var WorkerGlobalScope: { } interface WorkerLocation { - hash: string; - host: string; - hostname: string; - href: string; - pathname: string; - port: string; - protocol: string; - search: string; + readonly hash: string; + readonly host: string; + readonly hostname: string; + readonly href: string; + readonly pathname: string; + readonly port: string; + readonly protocol: string; + readonly search: string; toString(): string; } @@ -1099,9 +904,9 @@ interface DedicatedWorkerGlobalScope { } interface WorkerUtils extends Object, WindowBase64 { - indexedDB: IDBFactory; - msIndexedDB: IDBFactory; - navigator: WorkerNavigator; + readonly indexedDB: IDBFactory; + readonly msIndexedDB: IDBFactory; + readonly navigator: WorkerNavigator; clearImmediate(handle: number): void; clearInterval(handle: number): void; clearTimeout(handle: number): void; @@ -1111,16 +916,6 @@ interface WorkerUtils extends Object, WindowBase64 { setTimeout(handler: any, timeout?: any, ...args: any[]): number; } -interface IDBObjectStoreParameters { - keyPath?: string | string[]; - autoIncrement?: boolean; -} - -interface IDBIndexParameters { - unique?: boolean; - multiEntry?: boolean; -} - interface BlobPropertyBag { type?: string; endings?: string; @@ -1150,6 +945,9 @@ interface ProgressEventInit extends EventInit { total?: number; } +interface IDBArrayKey extends Array { +} + declare type EventListenerOrEventListenerObject = EventListener | EventListenerObject; interface ErrorEventHandler { @@ -1188,9 +986,9 @@ declare var self: WorkerGlobalScope; declare function close(): void; declare function msWriteProfilerMark(profilerMarkName: string): void; declare function toString(): string; -declare function addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +declare function addEventListener(type: string, listener?: EventListenerOrEventListenerObject, useCapture?: boolean): void; declare function dispatchEvent(evt: Event): boolean; -declare function removeEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +declare function removeEventListener(type: string, listener?: EventListenerOrEventListenerObject, useCapture?: boolean): void; declare var indexedDB: IDBFactory; declare var msIndexedDB: IDBFactory; declare var navigator: WorkerNavigator; @@ -1208,4 +1006,5 @@ 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: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; \ No newline at end of file +declare function addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +type IDBValidKey = number | string | Date | IDBArrayKey; \ No newline at end of file diff --git a/lib/tsc.js b/lib/tsc.js index 4bdf0f84fae..9e14712261a 100644 --- a/lib/tsc.js +++ b/lib/tsc.js @@ -262,8 +262,14 @@ var ts; var count = array.length; if (count > 0) { var pos = 0; - var result = arguments.length <= 2 ? array[pos] : initial; - pos++; + var result = void 0; + if (arguments.length <= 2) { + result = array[pos]; + pos++; + } + else { + result = initial; + } while (pos < count) { result = f(result, array[pos]); pos++; @@ -278,8 +284,14 @@ var ts; if (array) { var pos = array.length - 1; if (pos >= 0) { - var result = arguments.length <= 2 ? array[pos] : initial; - pos--; + var result = void 0; + if (arguments.length <= 2) { + result = array[pos]; + pos--; + } + else { + result = initial; + } while (pos >= 0) { result = f(result, array[pos]); pos--; @@ -295,6 +307,14 @@ var ts; return hasOwnProperty.call(map, key); } ts.hasProperty = hasProperty; + function getKeys(map) { + var keys = []; + for (var key in map) { + keys.push(key); + } + return keys; + } + ts.getKeys = getKeys; function getProperty(map, key) { return hasOwnProperty.call(map, key) ? map[key] : undefined; } @@ -708,6 +728,26 @@ var ts; return pathLen > extLen && path.substr(pathLen - extLen, extLen) === extension; } ts.fileExtensionIs = fileExtensionIs; + function ensureScriptKind(fileName, scriptKind) { + return (scriptKind || getScriptKindFromFileName(fileName)) || 3; + } + ts.ensureScriptKind = ensureScriptKind; + function getScriptKindFromFileName(fileName) { + var ext = fileName.substr(fileName.lastIndexOf(".")); + switch (ext.toLowerCase()) { + case ".js": + return 1; + case ".jsx": + return 2; + case ".ts": + return 3; + case ".tsx": + return 4; + default: + return 0; + } + } + ts.getScriptKindFromFileName = getScriptKindFromFileName; ts.supportedTypeScriptExtensions = [".ts", ".tsx", ".d.ts"]; ts.supportedJavascriptExtensions = [".js", ".jsx"]; var allSupportedExtensions = ts.supportedTypeScriptExtensions.concat(ts.supportedJavascriptExtensions); @@ -941,6 +981,7 @@ var ts; var _fs = require("fs"); var _path = require("path"); var _os = require("os"); + var _crypto = require("crypto"); function createPollingWatchedFileSet(interval, chunkSize) { if (interval === void 0) { interval = 2500; } if (chunkSize === void 0) { chunkSize = 30; } @@ -955,13 +996,13 @@ var ts; if (!watchedFile) { return; } - _fs.stat(watchedFile.filePath, function (err, stats) { + _fs.stat(watchedFile.fileName, function (err, stats) { if (err) { - watchedFile.callback(watchedFile.filePath); + watchedFile.callback(watchedFile.fileName); } else if (watchedFile.mtime.getTime() !== stats.mtime.getTime()) { - watchedFile.mtime = getModifiedTime(watchedFile.filePath); - watchedFile.callback(watchedFile.filePath, watchedFile.mtime.getTime() === 0); + watchedFile.mtime = getModifiedTime(watchedFile.fileName); + watchedFile.callback(watchedFile.fileName, watchedFile.mtime.getTime() === 0); } }); } @@ -984,11 +1025,11 @@ var ts; nextFileToCheck = nextToCheck; }, interval); } - function addFile(filePath, callback) { + function addFile(fileName, callback) { var file = { - filePath: filePath, + fileName: fileName, callback: callback, - mtime: getModifiedTime(filePath) + mtime: getModifiedTime(fileName) }; watchedFiles.push(file); if (watchedFiles.length === 1) { @@ -1008,67 +1049,67 @@ var ts; }; } function createWatchedFileSet() { - var dirWatchers = ts.createFileMap(); - var fileWatcherCallbacks = ts.createFileMap(); + var dirWatchers = {}; + var fileWatcherCallbacks = {}; return { addFile: addFile, removeFile: removeFile }; - function reduceDirWatcherRefCountForFile(filePath) { - var dirPath = ts.getDirectoryPath(filePath); - if (dirWatchers.contains(dirPath)) { - var watcher = dirWatchers.get(dirPath); + function reduceDirWatcherRefCountForFile(fileName) { + var dirName = ts.getDirectoryPath(fileName); + if (ts.hasProperty(dirWatchers, dirName)) { + var watcher = dirWatchers[dirName]; watcher.referenceCount -= 1; if (watcher.referenceCount <= 0) { watcher.close(); - dirWatchers.remove(dirPath); + delete dirWatchers[dirName]; } } } function addDirWatcher(dirPath) { - if (dirWatchers.contains(dirPath)) { - var watcher_1 = dirWatchers.get(dirPath); + if (ts.hasProperty(dirWatchers, dirPath)) { + var watcher_1 = dirWatchers[dirPath]; watcher_1.referenceCount += 1; return; } var watcher = _fs.watch(dirPath, { persistent: true }, function (eventName, relativeFileName) { return fileEventHandler(eventName, relativeFileName, dirPath); }); watcher.referenceCount = 1; - dirWatchers.set(dirPath, watcher); + dirWatchers[dirPath] = watcher; return; } function addFileWatcherCallback(filePath, callback) { - if (fileWatcherCallbacks.contains(filePath)) { - fileWatcherCallbacks.get(filePath).push(callback); + if (ts.hasProperty(fileWatcherCallbacks, filePath)) { + fileWatcherCallbacks[filePath].push(callback); } else { - fileWatcherCallbacks.set(filePath, [callback]); + fileWatcherCallbacks[filePath] = [callback]; } } - function addFile(filePath, callback) { - addFileWatcherCallback(filePath, callback); - addDirWatcher(ts.getDirectoryPath(filePath)); - return { filePath: filePath, callback: callback }; + function addFile(fileName, callback) { + addFileWatcherCallback(fileName, callback); + addDirWatcher(ts.getDirectoryPath(fileName)); + return { fileName: fileName, callback: callback }; } function removeFile(watchedFile) { - removeFileWatcherCallback(watchedFile.filePath, watchedFile.callback); - reduceDirWatcherRefCountForFile(watchedFile.filePath); + removeFileWatcherCallback(watchedFile.fileName, watchedFile.callback); + reduceDirWatcherRefCountForFile(watchedFile.fileName); } function removeFileWatcherCallback(filePath, callback) { - if (fileWatcherCallbacks.contains(filePath)) { - var newCallbacks = ts.copyListRemovingItem(callback, fileWatcherCallbacks.get(filePath)); + if (ts.hasProperty(fileWatcherCallbacks, filePath)) { + var newCallbacks = ts.copyListRemovingItem(callback, fileWatcherCallbacks[filePath]); if (newCallbacks.length === 0) { - fileWatcherCallbacks.remove(filePath); + delete fileWatcherCallbacks[filePath]; } else { - fileWatcherCallbacks.set(filePath, newCallbacks); + fileWatcherCallbacks[filePath] = newCallbacks; } } } function fileEventHandler(eventName, relativeFileName, baseDirPath) { - var filePath = typeof relativeFileName !== "string" + var fileName = typeof relativeFileName !== "string" ? undefined - : ts.toPath(relativeFileName, baseDirPath, ts.createGetCanonicalFileName(ts.sys.useCaseSensitiveFileNames)); - if ((eventName === "change" || eventName === "rename") && fileWatcherCallbacks.contains(filePath)) { - for (var _i = 0, _a = fileWatcherCallbacks.get(filePath); _i < _a.length; _i++) { + : ts.getNormalizedAbsolutePath(relativeFileName, baseDirPath); + if ((eventName === "change" || eventName === "rename") && ts.hasProperty(fileWatcherCallbacks, fileName)) { + for (var _i = 0, _a = fileWatcherCallbacks[fileName]; _i < _a.length; _i++) { var fileCallback = _a[_i]; - fileCallback(filePath); + fileCallback(fileName); } } } @@ -1149,6 +1190,9 @@ var ts; var directories = []; for (var _i = 0, files_2 = files; _i < files_2.length; _i++) { var current = files_2[_i]; + if (current === "." || current === "..") { + continue; + } var name_3 = ts.combinePaths(path, current); if (!ts.contains(exclude, getCanonicalPath(name_3))) { var stat = _fs.statSync(name_3); @@ -1177,14 +1221,14 @@ var ts; }, readFile: readFile, writeFile: writeFile, - watchFile: function (filePath, callback) { + watchFile: function (fileName, callback) { var watchSet = isNode4OrLater() ? watchedFileSet : pollingWatchedFileSet; - var watchedFile = watchSet.addFile(filePath, callback); + var watchedFile = watchSet.addFile(fileName, callback); return { close: function () { return watchSet.removeFile(watchedFile); } }; }, - watchDirectory: function (path, callback, recursive) { + watchDirectory: function (directoryName, callback, recursive) { var options; if (isNode4OrLater() && (process.platform === "win32" || process.platform === "darwin")) { options = { persistent: true, recursive: !!recursive }; @@ -1192,9 +1236,9 @@ var ts; else { options = { persistent: true }; } - return _fs.watch(path, options, function (eventName, relativeFileName) { + return _fs.watch(directoryName, options, function (eventName, relativeFileName) { if (eventName === "rename") { - callback(!relativeFileName ? relativeFileName : ts.normalizePath(ts.combinePaths(path, relativeFileName))); + callback(!relativeFileName ? relativeFileName : ts.normalizePath(ts.combinePaths(directoryName, relativeFileName))); } ; }); @@ -1216,6 +1260,19 @@ var ts; return process.cwd(); }, readDirectory: readDirectory, + getModifiedTime: function (path) { + try { + return _fs.statSync(path).mtime; + } + catch (e) { + return undefined; + } + }, + createHash: function (data) { + var hash = _crypto.createHash("md5"); + hash.update(data); + return hash.digest("hex"); + }, getMemoryUsage: function () { if (global.gc) { global.gc(); @@ -1477,6 +1534,9 @@ var ts; Async_functions_are_only_available_when_targeting_ECMAScript_6_and_higher: { code: 1311, category: ts.DiagnosticCategory.Error, key: "Async_functions_are_only_available_when_targeting_ECMAScript_6_and_higher_1311", message: "Async functions are only available when targeting ECMAScript 6 and higher." }, can_only_be_used_in_an_object_literal_property_inside_a_destructuring_assignment: { code: 1312, category: ts.DiagnosticCategory.Error, key: "can_only_be_used_in_an_object_literal_property_inside_a_destructuring_assignment_1312", message: "'=' can only be used in an object literal property inside a destructuring assignment." }, The_body_of_an_if_statement_cannot_be_the_empty_statement: { code: 1313, category: ts.DiagnosticCategory.Error, key: "The_body_of_an_if_statement_cannot_be_the_empty_statement_1313", message: "The body of an 'if' statement cannot be the empty statement." }, + Global_module_exports_may_only_appear_in_module_files: { code: 1314, category: ts.DiagnosticCategory.Error, key: "Global_module_exports_may_only_appear_in_module_files_1314", message: "Global module exports may only appear in module files." }, + Global_module_exports_may_only_appear_in_declaration_files: { code: 1315, category: ts.DiagnosticCategory.Error, key: "Global_module_exports_may_only_appear_in_declaration_files_1315", message: "Global module exports may only appear in declaration files." }, + Global_module_exports_may_only_appear_at_top_level: { code: 1316, category: ts.DiagnosticCategory.Error, key: "Global_module_exports_may_only_appear_at_top_level_1316", message: "Global module exports may only appear at top level." }, Duplicate_identifier_0: { code: 2300, category: ts.DiagnosticCategory.Error, key: "Duplicate_identifier_0_2300", message: "Duplicate identifier '{0}'." }, Initializer_of_instance_member_variable_0_cannot_reference_identifier_1_declared_in_the_constructor: { code: 2301, category: ts.DiagnosticCategory.Error, key: "Initializer_of_instance_member_variable_0_cannot_reference_identifier_1_declared_in_the_constructor_2301", message: "Initializer of instance member variable '{0}' cannot reference identifier '{1}' declared in the constructor." }, Static_members_cannot_reference_class_type_parameters: { code: 2302, category: ts.DiagnosticCategory.Error, key: "Static_members_cannot_reference_class_type_parameters_2302", message: "Static members cannot reference class type parameters." }, @@ -1528,7 +1588,7 @@ var ts; Cannot_invoke_an_expression_whose_type_lacks_a_call_signature: { code: 2349, category: ts.DiagnosticCategory.Error, key: "Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_2349", message: "Cannot invoke an expression whose type lacks a call signature." }, Only_a_void_function_can_be_called_with_the_new_keyword: { code: 2350, category: ts.DiagnosticCategory.Error, key: "Only_a_void_function_can_be_called_with_the_new_keyword_2350", message: "Only a void function can be called with the 'new' keyword." }, Cannot_use_new_with_an_expression_whose_type_lacks_a_call_or_construct_signature: { code: 2351, category: ts.DiagnosticCategory.Error, key: "Cannot_use_new_with_an_expression_whose_type_lacks_a_call_or_construct_signature_2351", message: "Cannot use 'new' with an expression whose type lacks a call or construct signature." }, - Neither_type_0_nor_type_1_is_assignable_to_the_other: { code: 2352, category: ts.DiagnosticCategory.Error, key: "Neither_type_0_nor_type_1_is_assignable_to_the_other_2352", message: "Neither type '{0}' nor type '{1}' is assignable to the other." }, + Type_0_cannot_be_converted_to_type_1: { code: 2352, category: ts.DiagnosticCategory.Error, key: "Type_0_cannot_be_converted_to_type_1_2352", message: "Type '{0}' cannot be converted to type '{1}'." }, Object_literal_may_only_specify_known_properties_and_0_does_not_exist_in_type_1: { code: 2353, category: ts.DiagnosticCategory.Error, key: "Object_literal_may_only_specify_known_properties_and_0_does_not_exist_in_type_1_2353", message: "Object literal may only specify known properties, and '{0}' does not exist in type '{1}'." }, No_best_common_type_exists_among_return_expressions: { code: 2354, category: ts.DiagnosticCategory.Error, key: "No_best_common_type_exists_among_return_expressions_2354", message: "No best common type exists among return expressions." }, A_function_whose_declared_type_is_neither_void_nor_any_must_return_a_value: { code: 2355, category: ts.DiagnosticCategory.Error, key: "A_function_whose_declared_type_is_neither_void_nor_any_must_return_a_value_2355", message: "A function whose declared type is neither 'void' nor 'any' must return a value." }, @@ -1542,6 +1602,7 @@ var ts; The_right_hand_side_of_an_arithmetic_operation_must_be_of_type_any_number_or_an_enum_type: { code: 2363, category: ts.DiagnosticCategory.Error, key: "The_right_hand_side_of_an_arithmetic_operation_must_be_of_type_any_number_or_an_enum_type_2363", message: "The right-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type." }, Invalid_left_hand_side_of_assignment_expression: { code: 2364, category: ts.DiagnosticCategory.Error, key: "Invalid_left_hand_side_of_assignment_expression_2364", message: "Invalid left-hand side of assignment expression." }, Operator_0_cannot_be_applied_to_types_1_and_2: { code: 2365, category: ts.DiagnosticCategory.Error, key: "Operator_0_cannot_be_applied_to_types_1_and_2_2365", message: "Operator '{0}' cannot be applied to types '{1}' and '{2}'." }, + Function_lacks_ending_return_statement_and_return_type_does_not_include_undefined: { code: 2366, category: ts.DiagnosticCategory.Error, key: "Function_lacks_ending_return_statement_and_return_type_does_not_include_undefined_2366", message: "Function lacks ending return statement and return type does not include 'undefined'." }, Type_parameter_name_cannot_be_0: { code: 2368, category: ts.DiagnosticCategory.Error, key: "Type_parameter_name_cannot_be_0_2368", message: "Type parameter name cannot be '{0}'" }, A_parameter_property_is_only_allowed_in_a_constructor_implementation: { code: 2369, category: ts.DiagnosticCategory.Error, key: "A_parameter_property_is_only_allowed_in_a_constructor_implementation_2369", message: "A parameter property is only allowed in a constructor implementation." }, A_rest_parameter_must_be_of_an_array_type: { code: 2370, category: ts.DiagnosticCategory.Error, key: "A_rest_parameter_must_be_of_an_array_type_2370", message: "A rest parameter must be of an array type." }, @@ -1622,6 +1683,7 @@ var ts; Cannot_redeclare_block_scoped_variable_0: { code: 2451, category: ts.DiagnosticCategory.Error, key: "Cannot_redeclare_block_scoped_variable_0_2451", message: "Cannot redeclare block-scoped variable '{0}'." }, An_enum_member_cannot_have_a_numeric_name: { code: 2452, category: ts.DiagnosticCategory.Error, key: "An_enum_member_cannot_have_a_numeric_name_2452", message: "An enum member cannot have a numeric name." }, The_type_argument_for_type_parameter_0_cannot_be_inferred_from_the_usage_Consider_specifying_the_type_arguments_explicitly: { code: 2453, category: ts.DiagnosticCategory.Error, key: "The_type_argument_for_type_parameter_0_cannot_be_inferred_from_the_usage_Consider_specifying_the_typ_2453", message: "The type argument for type parameter '{0}' cannot be inferred from the usage. Consider specifying the type arguments explicitly." }, + Variable_0_is_used_before_being_assigned: { code: 2454, category: ts.DiagnosticCategory.Error, key: "Variable_0_is_used_before_being_assigned_2454", message: "Variable '{0}' is used before being assigned." }, Type_argument_candidate_1_is_not_a_valid_type_argument_because_it_is_not_a_supertype_of_candidate_0: { code: 2455, category: ts.DiagnosticCategory.Error, key: "Type_argument_candidate_1_is_not_a_valid_type_argument_because_it_is_not_a_supertype_of_candidate_0_2455", message: "Type argument candidate '{1}' is not a valid type argument because it is not a supertype of candidate '{0}'." }, Type_alias_0_circularly_references_itself: { code: 2456, category: ts.DiagnosticCategory.Error, key: "Type_alias_0_circularly_references_itself_2456", message: "Type alias '{0}' circularly references itself." }, Type_alias_name_cannot_be_0: { code: 2457, category: ts.DiagnosticCategory.Error, key: "Type_alias_name_cannot_be_0_2457", message: "Type alias name cannot be '{0}'" }, @@ -1696,6 +1758,7 @@ var ts; A_module_cannot_have_multiple_default_exports: { code: 2528, category: ts.DiagnosticCategory.Error, key: "A_module_cannot_have_multiple_default_exports_2528", message: "A module cannot have multiple default exports." }, Duplicate_identifier_0_Compiler_reserves_name_1_in_top_level_scope_of_a_module_containing_async_functions: { code: 2529, category: ts.DiagnosticCategory.Error, key: "Duplicate_identifier_0_Compiler_reserves_name_1_in_top_level_scope_of_a_module_containing_async_func_2529", message: "Duplicate identifier '{0}'. Compiler reserves name '{1}' in top level scope of a module containing async functions." }, Property_0_is_incompatible_with_index_signature: { code: 2530, category: ts.DiagnosticCategory.Error, key: "Property_0_is_incompatible_with_index_signature_2530", message: "Property '{0}' is incompatible with index signature." }, + Object_is_possibly_null_or_undefined: { code: 2531, category: ts.DiagnosticCategory.Error, key: "Object_is_possibly_null_or_undefined_2531", message: "Object is possibly 'null' or 'undefined'." }, JSX_element_attributes_type_0_may_not_be_a_union_type: { code: 2600, category: ts.DiagnosticCategory.Error, key: "JSX_element_attributes_type_0_may_not_be_a_union_type_2600", message: "JSX element attributes type '{0}' may not be a union type." }, The_return_type_of_a_JSX_element_constructor_must_return_an_object_type: { code: 2601, category: ts.DiagnosticCategory.Error, key: "The_return_type_of_a_JSX_element_constructor_must_return_an_object_type_2601", message: "The return type of a JSX element constructor must return an object type." }, JSX_element_implicitly_has_type_any_because_the_global_type_JSX_Element_does_not_exist: { code: 2602, category: ts.DiagnosticCategory.Error, key: "JSX_element_implicitly_has_type_any_because_the_global_type_JSX_Element_does_not_exist_2602", message: "JSX element implicitly has type 'any' because the global type 'JSX.Element' does not exist." }, @@ -1731,6 +1794,15 @@ var ts; Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration: { code: 2674, category: ts.DiagnosticCategory.Error, key: "Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration_2674", message: "Constructor of class '{0}' is protected and only accessible within the class declaration." }, Cannot_extend_a_class_0_Class_constructor_is_marked_as_private: { code: 2675, category: ts.DiagnosticCategory.Error, key: "Cannot_extend_a_class_0_Class_constructor_is_marked_as_private_2675", message: "Cannot extend a class '{0}'. Class constructor is marked as private." }, Accessors_must_both_be_abstract_or_non_abstract: { code: 2676, category: ts.DiagnosticCategory.Error, key: "Accessors_must_both_be_abstract_or_non_abstract_2676", message: "Accessors must both be abstract or non-abstract." }, + A_type_predicate_s_type_must_be_assignable_to_its_parameter_s_type: { code: 2677, category: ts.DiagnosticCategory.Error, key: "A_type_predicate_s_type_must_be_assignable_to_its_parameter_s_type_2677", message: "A type predicate's type must be assignable to its parameter's type." }, + Type_0_is_not_comparable_to_type_1: { code: 2678, category: ts.DiagnosticCategory.Error, key: "Type_0_is_not_comparable_to_type_1_2678", message: "Type '{0}' is not comparable to type '{1}'." }, + A_function_that_is_called_with_the_new_keyword_cannot_have_a_this_type_that_is_void: { code: 2679, category: ts.DiagnosticCategory.Error, key: "A_function_that_is_called_with_the_new_keyword_cannot_have_a_this_type_that_is_void_2679", message: "A function that is called with the 'new' keyword cannot have a 'this' type that is 'void'." }, + A_this_parameter_must_be_the_first_parameter: { code: 2680, category: ts.DiagnosticCategory.Error, key: "A_this_parameter_must_be_the_first_parameter_2680", message: "A 'this' parameter must be the first parameter." }, + A_constructor_cannot_have_a_this_parameter: { code: 2681, category: ts.DiagnosticCategory.Error, key: "A_constructor_cannot_have_a_this_parameter_2681", message: "A constructor cannot have a 'this' parameter." }, + A_setter_cannot_have_a_this_parameter: { code: 2682, category: ts.DiagnosticCategory.Error, key: "A_setter_cannot_have_a_this_parameter_2682", message: "A setter cannot have a 'this' parameter." }, + this_implicitly_has_type_any_because_it_does_not_have_a_type_annotation: { code: 2683, category: ts.DiagnosticCategory.Error, key: "this_implicitly_has_type_any_because_it_does_not_have_a_type_annotation_2683", message: "'this' implicitly has type 'any' because it does not have a type annotation." }, + The_this_context_of_type_0_is_not_assignable_to_method_s_this_of_type_1: { code: 2684, category: ts.DiagnosticCategory.Error, key: "The_this_context_of_type_0_is_not_assignable_to_method_s_this_of_type_1_2684", message: "The 'this' context of type '{0}' is not assignable to method's 'this' of type '{1}'." }, + The_this_types_of_each_signature_are_incompatible: { code: 2685, category: ts.DiagnosticCategory.Error, key: "The_this_types_of_each_signature_are_incompatible_2685", message: "The 'this' types of each signature are incompatible." }, Import_declaration_0_is_using_private_name_1: { code: 4000, category: ts.DiagnosticCategory.Error, key: "Import_declaration_0_is_using_private_name_1_4000", message: "Import declaration '{0}' is using private name '{1}'." }, Type_parameter_0_of_exported_class_has_or_is_using_private_name_1: { code: 4002, category: ts.DiagnosticCategory.Error, key: "Type_parameter_0_of_exported_class_has_or_is_using_private_name_1_4002", message: "Type parameter '{0}' of exported class has or is using private name '{1}'." }, Type_parameter_0_of_exported_interface_has_or_is_using_private_name_1: { code: 4004, category: ts.DiagnosticCategory.Error, key: "Type_parameter_0_of_exported_interface_has_or_is_using_private_name_1_4004", message: "Type parameter '{0}' of exported interface has or is using private name '{1}'." }, @@ -1801,6 +1873,7 @@ var ts; Parameter_0_of_exported_function_has_or_is_using_private_name_1: { code: 4078, category: ts.DiagnosticCategory.Error, key: "Parameter_0_of_exported_function_has_or_is_using_private_name_1_4078", message: "Parameter '{0}' of exported function has or is using private name '{1}'." }, Exported_type_alias_0_has_or_is_using_private_name_1: { code: 4081, category: ts.DiagnosticCategory.Error, key: "Exported_type_alias_0_has_or_is_using_private_name_1_4081", message: "Exported type alias '{0}' has or is using private name '{1}'." }, Default_export_of_the_module_has_or_is_using_private_name_0: { code: 4082, category: ts.DiagnosticCategory.Error, key: "Default_export_of_the_module_has_or_is_using_private_name_0_4082", message: "Default export of the module has or is using private name '{0}'." }, + Conflicting_library_definitions_for_0_found_at_1_and_2_Copy_the_correct_file_to_the_typings_folder_to_resolve_this_conflict: { code: 4090, category: ts.DiagnosticCategory.Message, key: "Conflicting_library_definitions_for_0_found_at_1_and_2_Copy_the_correct_file_to_the_typings_folder_t_4090", message: "Conflicting library definitions for '{0}' found at '{1}' and '{2}'. Copy the correct file to the 'typings' folder to resolve this conflict." }, The_current_host_does_not_support_the_0_option: { code: 5001, category: ts.DiagnosticCategory.Error, key: "The_current_host_does_not_support_the_0_option_5001", message: "The current host does not support the '{0}' option." }, Cannot_find_the_common_subdirectory_path_for_the_input_files: { code: 5009, category: ts.DiagnosticCategory.Error, key: "Cannot_find_the_common_subdirectory_path_for_the_input_files_5009", message: "Cannot find the common subdirectory path for the input files." }, Cannot_read_file_0_Colon_1: { code: 5012, category: ts.DiagnosticCategory.Error, key: "Cannot_read_file_0_Colon_1_5012", message: "Cannot read file '{0}': {1}" }, @@ -1825,8 +1898,8 @@ 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" }, 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." }, - Specifies_the_location_where_debugger_should_locate_map_files_instead_of_generated_locations: { code: 6003, category: ts.DiagnosticCategory.Message, key: "Specifies_the_location_where_debugger_should_locate_map_files_instead_of_generated_locations_6003", message: "Specifies the location where debugger should locate map files instead of generated locations." }, - Specifies_the_location_where_debugger_should_locate_TypeScript_files_instead_of_source_locations: { code: 6004, category: ts.DiagnosticCategory.Message, key: "Specifies_the_location_where_debugger_should_locate_TypeScript_files_instead_of_source_locations_6004", message: "Specifies the location where debugger should locate TypeScript files instead of source locations." }, + 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." }, + Specify_the_location_where_debugger_should_locate_TypeScript_files_instead_of_source_locations: { code: 6004, category: ts.DiagnosticCategory.Message, key: "Specify_the_location_where_debugger_should_locate_TypeScript_files_instead_of_source_locations_6004", message: "Specify the location where debugger should locate TypeScript files instead of source locations." }, Watch_input_files: { code: 6005, category: ts.DiagnosticCategory.Message, key: "Watch_input_files_6005", message: "Watch input files." }, Redirect_output_structure_to_the_directory: { code: 6006, category: ts.DiagnosticCategory.Message, key: "Redirect_output_structure_to_the_directory_6006", message: "Redirect output structure to the directory." }, Do_not_erase_const_enum_declarations_in_generated_code: { code: 6007, category: ts.DiagnosticCategory.Message, key: "Do_not_erase_const_enum_declarations_in_generated_code_6007", message: "Do not erase const enum declarations in generated code." }, @@ -1834,7 +1907,7 @@ var ts; Do_not_emit_comments_to_output: { code: 6009, category: ts.DiagnosticCategory.Message, key: "Do_not_emit_comments_to_output_6009", message: "Do not emit comments to output." }, Do_not_emit_outputs: { code: 6010, category: ts.DiagnosticCategory.Message, key: "Do_not_emit_outputs_6010", message: "Do not emit outputs." }, Allow_default_imports_from_modules_with_no_default_export_This_does_not_affect_code_emit_just_typechecking: { code: 6011, category: ts.DiagnosticCategory.Message, key: "Allow_default_imports_from_modules_with_no_default_export_This_does_not_affect_code_emit_just_typech_6011", message: "Allow default imports from modules with no default export. This does not affect code emit, just typechecking." }, - Specify_ECMAScript_target_version_Colon_ES3_default_ES5_or_ES2015_experimental: { code: 6015, category: ts.DiagnosticCategory.Message, key: "Specify_ECMAScript_target_version_Colon_ES3_default_ES5_or_ES2015_experimental_6015", message: "Specify ECMAScript target version: 'ES3' (default), 'ES5', or 'ES2015' (experimental)" }, + Specify_ECMAScript_target_version_Colon_ES3_default_ES5_or_ES2015: { code: 6015, category: ts.DiagnosticCategory.Message, key: "Specify_ECMAScript_target_version_Colon_ES3_default_ES5_or_ES2015_6015", message: "Specify ECMAScript target version: 'ES3' (default), 'ES5', or 'ES2015'" }, Specify_module_code_generation_Colon_commonjs_amd_system_umd_or_es2015: { code: 6016, category: ts.DiagnosticCategory.Message, key: "Specify_module_code_generation_Colon_commonjs_amd_system_umd_or_es2015_6016", message: "Specify module code generation: 'commonjs', 'amd', 'system', 'umd' or 'es2015'" }, Print_this_message: { code: 6017, category: ts.DiagnosticCategory.Message, key: "Print_this_message_6017", message: "Print this message." }, Print_the_compiler_s_version: { code: 6019, category: ts.DiagnosticCategory.Message, key: "Print_the_compiler_s_version_6019", message: "Print the compiler's version." }, @@ -1856,8 +1929,7 @@ var ts; Generates_corresponding_map_file: { code: 6043, category: ts.DiagnosticCategory.Message, key: "Generates_corresponding_map_file_6043", message: "Generates corresponding '.map' file." }, Compiler_option_0_expects_an_argument: { code: 6044, category: ts.DiagnosticCategory.Error, key: "Compiler_option_0_expects_an_argument_6044", message: "Compiler option '{0}' expects an argument." }, Unterminated_quoted_string_in_response_file_0: { code: 6045, category: ts.DiagnosticCategory.Error, key: "Unterminated_quoted_string_in_response_file_0_6045", message: "Unterminated quoted string in response file '{0}'." }, - Argument_for_module_option_must_be_commonjs_amd_system_umd_es2015_or_none: { code: 6046, category: ts.DiagnosticCategory.Error, key: "Argument_for_module_option_must_be_commonjs_amd_system_umd_es2015_or_none_6046", message: "Argument for '--module' option must be 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'none'." }, - Argument_for_target_option_must_be_ES3_ES5_or_ES2015: { code: 6047, category: ts.DiagnosticCategory.Error, key: "Argument_for_target_option_must_be_ES3_ES5_or_ES2015_6047", message: "Argument for '--target' option must be 'ES3', 'ES5', or 'ES2015'." }, + Argument_for_0_option_must_be_Colon_1: { code: 6046, category: ts.DiagnosticCategory.Error, key: "Argument_for_0_option_must_be_Colon_1_6046", message: "Argument for '{0}' option must be: {1}" }, Locale_must_be_of_the_form_language_or_language_territory_For_example_0_or_1: { code: 6048, category: ts.DiagnosticCategory.Error, key: "Locale_must_be_of_the_form_language_or_language_territory_For_example_0_or_1_6048", message: "Locale must be of the form or -. For example '{0}' or '{1}'." }, Unsupported_locale_0: { code: 6049, category: ts.DiagnosticCategory.Error, key: "Unsupported_locale_0_6049", message: "Unsupported locale '{0}'." }, Unable_to_open_file_0: { code: 6050, category: ts.DiagnosticCategory.Error, key: "Unable_to_open_file_0_6050", message: "Unable to open file '{0}'." }, @@ -1867,17 +1939,15 @@ var ts; File_0_has_unsupported_extension_The_only_supported_extensions_are_1: { code: 6054, category: ts.DiagnosticCategory.Error, key: "File_0_has_unsupported_extension_The_only_supported_extensions_are_1_6054", message: "File '{0}' has unsupported extension. The only supported extensions are {1}." }, Suppress_noImplicitAny_errors_for_indexing_objects_lacking_index_signatures: { code: 6055, category: ts.DiagnosticCategory.Message, key: "Suppress_noImplicitAny_errors_for_indexing_objects_lacking_index_signatures_6055", message: "Suppress noImplicitAny errors for indexing objects lacking index signatures." }, Do_not_emit_declarations_for_code_that_has_an_internal_annotation: { code: 6056, category: ts.DiagnosticCategory.Message, key: "Do_not_emit_declarations_for_code_that_has_an_internal_annotation_6056", message: "Do not emit declarations for code that has an '@internal' annotation." }, - Specifies_the_root_directory_of_input_files_Use_to_control_the_output_directory_structure_with_outDir: { code: 6058, category: ts.DiagnosticCategory.Message, key: "Specifies_the_root_directory_of_input_files_Use_to_control_the_output_directory_structure_with_outDi_6058", message: "Specifies the root directory of input files. Use to control the output directory structure with --outDir." }, + Specify_the_root_directory_of_input_files_Use_to_control_the_output_directory_structure_with_outDir: { code: 6058, category: ts.DiagnosticCategory.Message, key: "Specify_the_root_directory_of_input_files_Use_to_control_the_output_directory_structure_with_outDir_6058", message: "Specify the root directory of input files. Use to control the output directory structure with --outDir." }, File_0_is_not_under_rootDir_1_rootDir_is_expected_to_contain_all_source_files: { code: 6059, category: ts.DiagnosticCategory.Error, key: "File_0_is_not_under_rootDir_1_rootDir_is_expected_to_contain_all_source_files_6059", message: "File '{0}' is not under 'rootDir' '{1}'. 'rootDir' is expected to contain all source files." }, - Specifies_the_end_of_line_sequence_to_be_used_when_emitting_files_Colon_CRLF_dos_or_LF_unix: { code: 6060, category: ts.DiagnosticCategory.Message, key: "Specifies_the_end_of_line_sequence_to_be_used_when_emitting_files_Colon_CRLF_dos_or_LF_unix_6060", message: "Specifies the end of line sequence to be used when emitting files: 'CRLF' (dos) or 'LF' (unix)." }, + Specify_the_end_of_line_sequence_to_be_used_when_emitting_files_Colon_CRLF_dos_or_LF_unix: { code: 6060, category: ts.DiagnosticCategory.Message, key: "Specify_the_end_of_line_sequence_to_be_used_when_emitting_files_Colon_CRLF_dos_or_LF_unix_6060", message: "Specify the end of line sequence to be used when emitting files: 'CRLF' (dos) or 'LF' (unix)." }, NEWLINE: { code: 6061, category: ts.DiagnosticCategory.Message, key: "NEWLINE_6061", message: "NEWLINE" }, - Argument_for_newLine_option_must_be_CRLF_or_LF: { code: 6062, category: ts.DiagnosticCategory.Error, key: "Argument_for_newLine_option_must_be_CRLF_or_LF_6062", message: "Argument for '--newLine' option must be 'CRLF' or 'LF'." }, - Argument_for_moduleResolution_option_must_be_node_or_classic: { code: 6063, category: ts.DiagnosticCategory.Error, key: "Argument_for_moduleResolution_option_must_be_node_or_classic_6063", message: "Argument for '--moduleResolution' option must be 'node' or 'classic'." }, Option_0_can_only_be_specified_in_tsconfig_json_file: { code: 6064, category: ts.DiagnosticCategory.Error, key: "Option_0_can_only_be_specified_in_tsconfig_json_file_6064", message: "Option '{0}' can only be specified in 'tsconfig.json' file." }, Enables_experimental_support_for_ES7_decorators: { code: 6065, category: ts.DiagnosticCategory.Message, key: "Enables_experimental_support_for_ES7_decorators_6065", message: "Enables experimental support for ES7 decorators." }, Enables_experimental_support_for_emitting_type_metadata_for_decorators: { code: 6066, category: ts.DiagnosticCategory.Message, key: "Enables_experimental_support_for_emitting_type_metadata_for_decorators_6066", message: "Enables experimental support for emitting type metadata for decorators." }, Enables_experimental_support_for_ES7_async_functions: { code: 6068, category: ts.DiagnosticCategory.Message, key: "Enables_experimental_support_for_ES7_async_functions_6068", message: "Enables experimental support for ES7 async functions." }, - Specifies_module_resolution_strategy_Colon_node_Node_js_or_classic_TypeScript_pre_1_6: { code: 6069, category: ts.DiagnosticCategory.Message, key: "Specifies_module_resolution_strategy_Colon_node_Node_js_or_classic_TypeScript_pre_1_6_6069", message: "Specifies module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6)." }, + Specify_module_resolution_strategy_Colon_node_Node_js_or_classic_TypeScript_pre_1_6: { code: 6069, category: ts.DiagnosticCategory.Message, key: "Specify_module_resolution_strategy_Colon_node_Node_js_or_classic_TypeScript_pre_1_6_6069", message: "Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6)." }, Initializes_a_TypeScript_project_and_creates_a_tsconfig_json_file: { code: 6070, category: ts.DiagnosticCategory.Message, key: "Initializes_a_TypeScript_project_and_creates_a_tsconfig_json_file_6070", message: "Initializes a TypeScript project and creates a tsconfig.json file." }, Successfully_created_a_tsconfig_json_file: { code: 6071, category: ts.DiagnosticCategory.Message, key: "Successfully_created_a_tsconfig_json_file_6071", message: "Successfully created a tsconfig.json file." }, Suppress_excess_property_checks_for_object_literals: { code: 6072, category: ts.DiagnosticCategory.Message, key: "Suppress_excess_property_checks_for_object_literals_6072", message: "Suppress excess property checks for object literals." }, @@ -1887,12 +1957,12 @@ var ts; Report_errors_for_fallthrough_cases_in_switch_statement: { code: 6076, category: ts.DiagnosticCategory.Message, key: "Report_errors_for_fallthrough_cases_in_switch_statement_6076", message: "Report errors for fallthrough cases in switch statement." }, Do_not_report_errors_on_unreachable_code: { code: 6077, category: ts.DiagnosticCategory.Message, key: "Do_not_report_errors_on_unreachable_code_6077", message: "Do not report errors on unreachable code." }, Disallow_inconsistently_cased_references_to_the_same_file: { code: 6078, category: ts.DiagnosticCategory.Message, key: "Disallow_inconsistently_cased_references_to_the_same_file_6078", message: "Disallow inconsistently-cased references to the same file." }, + Specify_library_files_to_be_included_in_the_compilation_Colon: { code: 6079, category: ts.DiagnosticCategory.Message, key: "Specify_library_files_to_be_included_in_the_compilation_Colon_6079", message: "Specify library files to be included in the compilation: " }, Specify_JSX_code_generation_Colon_preserve_or_react: { code: 6080, category: ts.DiagnosticCategory.Message, key: "Specify_JSX_code_generation_Colon_preserve_or_react_6080", message: "Specify JSX code generation: 'preserve' or 'react'" }, - Argument_for_jsx_must_be_preserve_or_react: { code: 6081, category: ts.DiagnosticCategory.Message, key: "Argument_for_jsx_must_be_preserve_or_react_6081", message: "Argument for '--jsx' must be 'preserve' or 'react'." }, Only_amd_and_system_modules_are_supported_alongside_0: { code: 6082, category: ts.DiagnosticCategory.Error, key: "Only_amd_and_system_modules_are_supported_alongside_0_6082", message: "Only 'amd' and 'system' modules are supported alongside --{0}." }, Base_directory_to_resolve_non_absolute_module_names: { code: 6083, category: ts.DiagnosticCategory.Message, key: "Base_directory_to_resolve_non_absolute_module_names_6083", message: "Base directory to resolve non-absolute module names." }, - Specifies_the_object_invoked_for_createElement_and_spread_when_targeting_react_JSX_emit: { code: 6084, category: ts.DiagnosticCategory.Message, key: "Specifies_the_object_invoked_for_createElement_and_spread_when_targeting_react_JSX_emit_6084", message: "Specifies the object invoked for createElement and __spread when targeting 'react' JSX emit" }, - Enable_tracing_of_the_module_resolution_process: { code: 6085, category: ts.DiagnosticCategory.Message, key: "Enable_tracing_of_the_module_resolution_process_6085", message: "Enable tracing of the module resolution process." }, + Specify_the_object_invoked_for_createElement_and_spread_when_targeting_react_JSX_emit: { code: 6084, category: ts.DiagnosticCategory.Message, key: "Specify_the_object_invoked_for_createElement_and_spread_when_targeting_react_JSX_emit_6084", message: "Specify the object invoked for createElement and __spread when targeting 'react' JSX emit" }, + Enable_tracing_of_the_name_resolution_process: { code: 6085, category: ts.DiagnosticCategory.Message, key: "Enable_tracing_of_the_name_resolution_process_6085", message: "Enable tracing of the name resolution process." }, Resolving_module_0_from_1: { code: 6086, category: ts.DiagnosticCategory.Message, key: "Resolving_module_0_from_1_6086", message: "======== Resolving module '{0}' from '{1}'. ========" }, Explicitly_specified_module_resolution_kind_Colon_0: { code: 6087, category: ts.DiagnosticCategory.Message, key: "Explicitly_specified_module_resolution_kind_Colon_0_6087", message: "Explicitly specified module resolution kind: '{0}'." }, Module_resolution_kind_is_not_specified_using_0: { code: 6088, category: ts.DiagnosticCategory.Message, key: "Module_resolution_kind_is_not_specified_using_0_6088", message: "Module resolution kind is not specified, using '{0}'." }, @@ -1904,15 +1974,15 @@ var ts; Resolving_module_name_0_relative_to_base_url_1_2: { code: 6094, category: ts.DiagnosticCategory.Message, key: "Resolving_module_name_0_relative_to_base_url_1_2_6094", message: "Resolving module name '{0}' relative to base url '{1}' - '{2}'." }, Loading_module_as_file_Slash_folder_candidate_module_location_0: { code: 6095, category: ts.DiagnosticCategory.Message, key: "Loading_module_as_file_Slash_folder_candidate_module_location_0_6095", message: "Loading module as file / folder, candidate module location '{0}'." }, File_0_does_not_exist: { code: 6096, category: ts.DiagnosticCategory.Message, key: "File_0_does_not_exist_6096", message: "File '{0}' does not exist." }, - File_0_exist_use_it_as_a_module_resolution_result: { code: 6097, category: ts.DiagnosticCategory.Message, key: "File_0_exist_use_it_as_a_module_resolution_result_6097", message: "File '{0}' exist - use it as a module resolution result." }, + File_0_exist_use_it_as_a_name_resolution_result: { code: 6097, category: ts.DiagnosticCategory.Message, key: "File_0_exist_use_it_as_a_name_resolution_result_6097", message: "File '{0}' exist - use it as a name resolution result." }, Loading_module_0_from_node_modules_folder: { code: 6098, category: ts.DiagnosticCategory.Message, key: "Loading_module_0_from_node_modules_folder_6098", message: "Loading module '{0}' from 'node_modules' folder." }, Found_package_json_at_0: { code: 6099, category: ts.DiagnosticCategory.Message, key: "Found_package_json_at_0_6099", message: "Found 'package.json' at '{0}'." }, - package_json_does_not_have_typings_field: { code: 6100, category: ts.DiagnosticCategory.Message, key: "package_json_does_not_have_typings_field_6100", message: "'package.json' does not have 'typings' field." }, - package_json_has_typings_field_0_that_references_1: { code: 6101, category: ts.DiagnosticCategory.Message, key: "package_json_has_typings_field_0_that_references_1_6101", message: "'package.json' has 'typings' field '{0}' that references '{1}'." }, + package_json_does_not_have_types_field: { code: 6100, category: ts.DiagnosticCategory.Message, key: "package_json_does_not_have_types_field_6100", message: "'package.json' does not have 'types' field." }, + package_json_has_0_field_1_that_references_2: { code: 6101, category: ts.DiagnosticCategory.Message, key: "package_json_has_0_field_1_that_references_2_6101", message: "'package.json' has '{0}' field '{1}' that references '{2}'." }, Allow_javascript_files_to_be_compiled: { code: 6102, category: ts.DiagnosticCategory.Message, key: "Allow_javascript_files_to_be_compiled_6102", message: "Allow javascript files to be compiled." }, Option_0_should_have_array_of_strings_as_a_value: { code: 6103, category: ts.DiagnosticCategory.Error, key: "Option_0_should_have_array_of_strings_as_a_value_6103", message: "Option '{0}' should have array of strings as a value." }, Checking_if_0_is_the_longest_matching_prefix_for_1_2: { code: 6104, category: ts.DiagnosticCategory.Message, key: "Checking_if_0_is_the_longest_matching_prefix_for_1_2_6104", message: "Checking if '{0}' is the longest matching prefix for '{1}' - '{2}'." }, - Expected_type_of_typings_field_in_package_json_to_be_string_got_0: { code: 6105, category: ts.DiagnosticCategory.Message, key: "Expected_type_of_typings_field_in_package_json_to_be_string_got_0_6105", message: "Expected type of 'typings' field in 'package.json' to be 'string', got '{0}'." }, + Expected_type_of_0_field_in_package_json_to_be_string_got_1: { code: 6105, category: ts.DiagnosticCategory.Message, key: "Expected_type_of_0_field_in_package_json_to_be_string_got_1_6105", message: "Expected type of '{0}' field in 'package.json' to be 'string', got '{1}'." }, baseUrl_option_is_set_to_0_using_this_value_to_resolve_non_relative_module_name_1: { code: 6106, category: ts.DiagnosticCategory.Message, key: "baseUrl_option_is_set_to_0_using_this_value_to_resolve_non_relative_module_name_1_6106", message: "'baseUrl' option is set to '{0}', using this value to resolve non-relative module name '{1}'" }, rootDirs_option_is_set_using_it_to_resolve_relative_module_name_0: { code: 6107, category: ts.DiagnosticCategory.Message, key: "rootDirs_option_is_set_using_it_to_resolve_relative_module_name_0_6107", message: "'rootDirs' option is set, using it to resolve relative module name '{0}'" }, Longest_matching_prefix_for_0_is_1: { code: 6108, category: ts.DiagnosticCategory.Message, key: "Longest_matching_prefix_for_0_is_1_6108", message: "Longest matching prefix for '{0}' is '{1}'" }, @@ -1920,6 +1990,22 @@ var ts; Trying_other_entries_in_rootDirs: { code: 6110, category: ts.DiagnosticCategory.Message, key: "Trying_other_entries_in_rootDirs_6110", message: "Trying other entries in 'rootDirs'" }, Module_resolution_using_rootDirs_has_failed: { code: 6111, category: ts.DiagnosticCategory.Message, key: "Module_resolution_using_rootDirs_has_failed_6111", message: "Module resolution using 'rootDirs' has failed" }, Do_not_emit_use_strict_directives_in_module_output: { code: 6112, category: ts.DiagnosticCategory.Message, key: "Do_not_emit_use_strict_directives_in_module_output_6112", message: "Do not emit 'use strict' directives in module output." }, + Enable_strict_null_checks: { code: 6113, category: ts.DiagnosticCategory.Message, key: "Enable_strict_null_checks_6113", message: "Enable strict null checks." }, + Unknown_option_excludes_Did_you_mean_exclude: { code: 6114, category: ts.DiagnosticCategory.Error, key: "Unknown_option_excludes_Did_you_mean_exclude_6114", message: "Unknown option 'excludes'. Did you mean 'exclude'?" }, + Raise_error_on_this_expressions_with_an_implied_any_type: { code: 6115, category: ts.DiagnosticCategory.Message, key: "Raise_error_on_this_expressions_with_an_implied_any_type_6115", message: "Raise error on 'this' expressions with an implied 'any' type." }, + Resolving_type_reference_directive_0_containing_file_1_root_directory_2: { code: 6116, category: ts.DiagnosticCategory.Message, key: "Resolving_type_reference_directive_0_containing_file_1_root_directory_2_6116", message: "======== Resolving type reference directive '{0}', containing file '{1}', root directory '{2}'. ========" }, + Resolving_using_primary_search_paths: { code: 6117, category: ts.DiagnosticCategory.Message, key: "Resolving_using_primary_search_paths_6117", message: "Resolving using primary search paths..." }, + Resolving_from_node_modules_folder: { code: 6118, category: ts.DiagnosticCategory.Message, key: "Resolving_from_node_modules_folder_6118", message: "Resolving from node_modules folder..." }, + Type_reference_directive_0_was_successfully_resolved_to_1_primary_Colon_2: { code: 6119, category: ts.DiagnosticCategory.Message, key: "Type_reference_directive_0_was_successfully_resolved_to_1_primary_Colon_2_6119", message: "======== Type reference directive '{0}' was successfully resolved to '{1}', primary: {2}. ========" }, + Type_reference_directive_0_was_not_resolved: { code: 6120, category: ts.DiagnosticCategory.Message, key: "Type_reference_directive_0_was_not_resolved_6120", message: "======== Type reference directive '{0}' was not resolved. ========" }, + Resolving_with_primary_search_path_0: { code: 6121, category: ts.DiagnosticCategory.Message, key: "Resolving_with_primary_search_path_0_6121", message: "Resolving with primary search path '{0}'" }, + Root_directory_cannot_be_determined_skipping_primary_search_paths: { code: 6122, category: ts.DiagnosticCategory.Message, key: "Root_directory_cannot_be_determined_skipping_primary_search_paths_6122", message: "Root directory cannot be determined, skipping primary search paths." }, + Resolving_type_reference_directive_0_containing_file_1_root_directory_not_set: { code: 6123, category: ts.DiagnosticCategory.Message, key: "Resolving_type_reference_directive_0_containing_file_1_root_directory_not_set_6123", message: "======== Resolving type reference directive '{0}', containing file '{1}', root directory not set. ========" }, + Type_declaration_files_to_be_included_in_compilation: { code: 6124, category: ts.DiagnosticCategory.Message, key: "Type_declaration_files_to_be_included_in_compilation_6124", message: "Type declaration files to be included in compilation." }, + Looking_up_in_node_modules_folder_initial_location_0: { code: 6125, category: ts.DiagnosticCategory.Message, key: "Looking_up_in_node_modules_folder_initial_location_0_6125", message: "Looking up in 'node_modules' folder, initial location '{0}'" }, + Containing_file_is_not_specified_and_root_directory_cannot_be_determined_skipping_lookup_in_node_modules_folder: { code: 6126, category: ts.DiagnosticCategory.Message, key: "Containing_file_is_not_specified_and_root_directory_cannot_be_determined_skipping_lookup_in_node_mod_6126", message: "Containing file is not specified and root directory cannot be determined, skipping lookup in 'node_modules' folder." }, + Resolving_type_reference_directive_0_containing_file_not_set_root_directory_1: { code: 6127, category: ts.DiagnosticCategory.Message, key: "Resolving_type_reference_directive_0_containing_file_not_set_root_directory_1_6127", message: "======== Resolving type reference directive '{0}', containing file not set, root directory '{1}'. ========" }, + Resolving_type_reference_directive_0_containing_file_not_set_root_directory_not_set: { code: 6128, category: ts.DiagnosticCategory.Message, key: "Resolving_type_reference_directive_0_containing_file_not_set_root_directory_not_set_6128", message: "======== Resolving type reference directive '{0}', containing file not set, root directory not set. ========" }, 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." }, @@ -1942,6 +2028,7 @@ var ts; Unused_label: { code: 7028, category: ts.DiagnosticCategory.Error, key: "Unused_label_7028", message: "Unused label." }, Fallthrough_case_in_switch: { code: 7029, category: ts.DiagnosticCategory.Error, key: "Fallthrough_case_in_switch_7029", message: "Fallthrough case in switch." }, Not_all_code_paths_return_a_value: { code: 7030, category: ts.DiagnosticCategory.Error, key: "Not_all_code_paths_return_a_value_7030", message: "Not all code paths return a value." }, + Binding_element_0_implicitly_has_an_1_type: { code: 7031, category: ts.DiagnosticCategory.Error, key: "Binding_element_0_implicitly_has_an_1_type_7031", message: "Binding element '{0}' implicitly has an '{1}' type." }, You_cannot_rename_this_element: { code: 8000, category: ts.DiagnosticCategory.Error, key: "You_cannot_rename_this_element_8000", message: "You cannot rename this element." }, You_cannot_rename_elements_that_are_defined_in_the_standard_TypeScript_library: { code: 8001, category: ts.DiagnosticCategory.Error, key: "You_cannot_rename_elements_that_are_defined_in_the_standard_TypeScript_library_8001", message: "You cannot rename elements that are defined in the standard TypeScript library." }, import_can_only_be_used_in_a_ts_file: { code: 8002, category: ts.DiagnosticCategory.Error, key: "import_can_only_be_used_in_a_ts_file_8002", message: "'import ... =' can only be used in a .ts file." }, @@ -1969,7 +2056,8 @@ var ts; An_unary_expression_with_the_0_operator_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_expression_Consider_enclosing_the_expression_in_parentheses: { code: 17006, category: ts.DiagnosticCategory.Error, key: "An_unary_expression_with_the_0_operator_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_ex_17006", message: "An unary expression with the '{0}' operator is not allowed in the left-hand side of an exponentiation expression. Consider enclosing the expression in parentheses." }, A_type_assertion_expression_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_expression_Consider_enclosing_the_expression_in_parentheses: { code: 17007, category: ts.DiagnosticCategory.Error, key: "A_type_assertion_expression_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_expression_Con_17007", message: "A type assertion expression is not allowed in the left-hand side of an exponentiation expression. Consider enclosing the expression in parentheses." }, JSX_element_0_has_no_corresponding_closing_tag: { code: 17008, category: ts.DiagnosticCategory.Error, key: "JSX_element_0_has_no_corresponding_closing_tag_17008", message: "JSX element '{0}' has no corresponding closing tag." }, - super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class: { code: 17009, category: ts.DiagnosticCategory.Error, key: "super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class_17009", message: "'super' must be called before accessing 'this' in the constructor of a derived class." } + super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class: { code: 17009, category: ts.DiagnosticCategory.Error, key: "super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class_17009", message: "'super' must be called before accessing 'this' in the constructor of a derived class." }, + Unknown_typing_option_0: { code: 17010, category: ts.DiagnosticCategory.Error, key: "Unknown_typing_option_0_17010", message: "Unknown typing option '{0}'." } }; })(ts || (ts = {})); var ts; @@ -2002,7 +2090,7 @@ var ts; "false": 84, "finally": 85, "for": 86, - "from": 134, + "from": 135, "function": 87, "get": 123, "if": 88, @@ -2024,7 +2112,7 @@ var ts; "public": 112, "readonly": 127, "require": 128, - "global": 135, + "global": 136, "return": 94, "set": 130, "static": 113, @@ -2038,6 +2126,7 @@ var ts; "try": 100, "type": 133, "typeof": 101, + "undefined": 134, "var": 102, "void": 103, "while": 104, @@ -2045,7 +2134,7 @@ var ts; "yield": 114, "async": 118, "await": 119, - "of": 136, + "of": 137, "{": 15, "}": 16, "(": 17, @@ -3308,7 +3397,7 @@ var ts; break; } } - return token = 240; + return token = 243; } function scanJsxIdentifier() { if (tokenIsIdentifierOrKeyword(token)) { @@ -3467,10 +3556,10 @@ var ts; var stringWriters = []; function getSingleLineStringWriter() { if (stringWriters.length === 0) { - var str = ""; - var writeText = function (text) { return str += text; }; + var str_1 = ""; + var writeText = function (text) { return str_1 += text; }; return { - string: function () { return str; }, + string: function () { return str_1; }, writeKeyword: writeText, writeOperator: writeText, writePunctuation: writeText, @@ -3478,10 +3567,10 @@ var ts; writeStringLiteral: writeText, writeParameter: writeText, writeSymbol: writeText, - writeLine: function () { return str += " "; }, + writeLine: function () { return str_1 += " "; }, increaseIndent: function () { }, decreaseIndent: function () { }, - clear: function () { return str = ""; }, + clear: function () { return str_1 = ""; }, trackSymbol: function () { }, reportInaccessibleThisError: function () { } }; @@ -3529,6 +3618,38 @@ var ts; sourceFile.resolvedModules[moduleNameText] = resolvedModule; } ts.setResolvedModule = setResolvedModule; + function setResolvedTypeReferenceDirective(sourceFile, typeReferenceDirectiveName, resolvedTypeReferenceDirective) { + if (!sourceFile.resolvedTypeReferenceDirectiveNames) { + sourceFile.resolvedTypeReferenceDirectiveNames = {}; + } + sourceFile.resolvedTypeReferenceDirectiveNames[typeReferenceDirectiveName] = resolvedTypeReferenceDirective; + } + ts.setResolvedTypeReferenceDirective = setResolvedTypeReferenceDirective; + function moduleResolutionIsEqualTo(oldResolution, newResolution) { + return oldResolution.resolvedFileName === newResolution.resolvedFileName && oldResolution.isExternalLibraryImport === newResolution.isExternalLibraryImport; + } + ts.moduleResolutionIsEqualTo = moduleResolutionIsEqualTo; + function typeDirectiveIsEqualTo(oldResolution, newResolution) { + return oldResolution.resolvedFileName === newResolution.resolvedFileName && oldResolution.primary === newResolution.primary; + } + ts.typeDirectiveIsEqualTo = typeDirectiveIsEqualTo; + function hasChangesInResolutions(names, newResolutions, oldResolutions, comparer) { + if (names.length !== newResolutions.length) { + return false; + } + for (var i = 0; i < names.length; i++) { + var newResolution = newResolutions[i]; + var oldResolution = oldResolutions && ts.hasProperty(oldResolutions, names[i]) ? oldResolutions[names[i]] : undefined; + var changed = oldResolution + ? !newResolution || !comparer(oldResolution, newResolution) + : newResolution; + if (changed) { + return true; + } + } + return false; + } + ts.hasChangesInResolutions = hasChangesInResolutions; function containsParseError(node) { aggregateChildData(node); return (node.flags & 268435456) !== 0; @@ -3545,7 +3666,7 @@ var ts; } } function getSourceFileOfNode(node) { - while (node && node.kind !== 252) { + while (node && node.kind !== 255) { node = node.parent; } return node; @@ -3553,11 +3674,11 @@ var ts; ts.getSourceFileOfNode = getSourceFileOfNode; function isStatementWithLocals(node) { switch (node.kind) { - case 196: - case 224: - case 203: - case 204: + case 198: + case 226: case 205: + case 206: + case 207: return true; } return false; @@ -3578,6 +3699,25 @@ var ts; return node.pos; } ts.getStartPosOfNode = getStartPosOfNode; + function getEndLinePosition(line, sourceFile) { + ts.Debug.assert(line >= 0); + var lineStarts = ts.getLineStarts(sourceFile); + var lineIndex = line; + var sourceText = sourceFile.text; + if (lineIndex + 1 === lineStarts.length) { + return sourceText.length - 1; + } + else { + var start = lineStarts[lineIndex]; + var pos = lineStarts[lineIndex + 1] - 1; + ts.Debug.assert(ts.isLineBreak(sourceText.charCodeAt(pos))); + while (start <= pos && ts.isLineBreak(sourceText.charCodeAt(pos))) { + pos--; + } + return pos; + } + } + ts.getEndLinePosition = getEndLinePosition; function nodeIsMissing(node) { if (!node) { return true; @@ -3642,13 +3782,13 @@ var ts; } ts.isBlockOrCatchScoped = isBlockOrCatchScoped; function isAmbientModule(node) { - return node && node.kind === 222 && + return node && node.kind === 224 && (node.name.kind === 9 || isGlobalScopeAugmentation(node)); } ts.isAmbientModule = isAmbientModule; function isBlockScopedContainerTopLevel(node) { - return node.kind === 252 || - node.kind === 222 || + return node.kind === 255 || + node.kind === 224 || isFunctionLike(node) || isFunctionBlock(node); } @@ -3662,10 +3802,10 @@ var ts; return false; } switch (node.parent.kind) { - case 252: - return isExternalModule(node.parent); - case 223: - return isAmbientModule(node.parent.parent) && !isExternalModule(node.parent.parent.parent); + case 255: + return ts.isExternalModule(node.parent); + case 225: + return isAmbientModule(node.parent.parent) && !ts.isExternalModule(node.parent.parent.parent); } return false; } @@ -3677,15 +3817,15 @@ var ts; return current; } switch (current.kind) { - case 252: + case 255: + case 226: + case 251: case 224: - case 248: - case 222: - case 203: - case 204: case 205: + case 206: + case 207: return current; - case 196: + case 198: if (!isFunctionLike(current.parent)) { return current; } @@ -3696,9 +3836,9 @@ var ts; ts.getEnclosingBlockScopeContainer = getEnclosingBlockScopeContainer; function isCatchClauseVariableDeclaration(declaration) { return declaration && - declaration.kind === 215 && + declaration.kind === 217 && declaration.parent && - declaration.parent.kind === 248; + declaration.parent.kind === 251; } ts.isCatchClauseVariableDeclaration = isCatchClauseVariableDeclaration; function declarationNameToString(name) { @@ -3731,31 +3871,44 @@ var ts; return ts.createTextSpanFromBounds(start, scanner.getTextPos()); } ts.getSpanOfTokenAtPosition = getSpanOfTokenAtPosition; + function getErrorSpanForArrowFunction(sourceFile, node) { + var pos = ts.skipTrivia(sourceFile.text, node.pos); + if (node.body && node.body.kind === 198) { + var startLine = ts.getLineAndCharacterOfPosition(sourceFile, node.body.pos).line; + var endLine = ts.getLineAndCharacterOfPosition(sourceFile, node.body.end).line; + if (startLine < endLine) { + return ts.createTextSpan(pos, getEndLinePosition(startLine, sourceFile) - pos + 1); + } + } + return ts.createTextSpanFromBounds(pos, node.end); + } function getErrorSpanForNode(sourceFile, node) { var errorNode = node; switch (node.kind) { - case 252: + case 255: var pos_1 = ts.skipTrivia(sourceFile.text, 0, false); if (pos_1 === sourceFile.text.length) { return ts.createTextSpan(0, 0); } return getSpanOfTokenAtPosition(sourceFile, pos_1); - case 215: - case 167: - case 218: - case 190: - case 219: - case 222: - case 221: - case 251: case 217: - case 177: - case 145: - case 147: - case 148: + case 168: case 220: + case 191: + case 221: + case 224: + case 223: + case 254: + case 219: + case 178: + case 146: + case 148: + case 149: + case 222: errorNode = node.name; break; + case 179: + return getErrorSpanForArrowFunction(sourceFile, node); } if (errorNode === undefined) { return getSpanOfTokenAtPosition(sourceFile, node.pos); @@ -3766,10 +3919,6 @@ var ts; return ts.createTextSpanFromBounds(pos, errorNode.end); } ts.getErrorSpanForNode = getErrorSpanForNode; - function isExternalModule(file) { - return file.externalModuleIndicator !== undefined; - } - ts.isExternalModule = isExternalModule; function isExternalOrCommonJsModule(file) { return (file.externalModuleIndicator || file.commonJsModuleIndicator) !== undefined; } @@ -3779,11 +3928,11 @@ var ts; } ts.isDeclarationFile = isDeclarationFile; function isConstEnumDeclaration(node) { - return node.kind === 221 && isConst(node); + return node.kind === 223 && isConst(node); } ts.isConstEnumDeclaration = isConstEnumDeclaration; function walkUpBindingElementsAndPatterns(node) { - while (node && (node.kind === 167 || isBindingPattern(node))) { + while (node && (node.kind === 168 || isBindingPattern(node))) { node = node.parent; } return node; @@ -3791,14 +3940,14 @@ var ts; function getCombinedNodeFlags(node) { node = walkUpBindingElementsAndPatterns(node); var flags = node.flags; - if (node.kind === 215) { + if (node.kind === 217) { node = node.parent; } - if (node && node.kind === 216) { + if (node && node.kind === 218) { flags |= node.flags; node = node.parent; } - if (node && node.kind === 197) { + if (node && node.kind === 199) { flags |= node.flags; } return flags; @@ -3813,11 +3962,11 @@ var ts; } ts.isLet = isLet; function isSuperCallExpression(n) { - return n.kind === 172 && n.expression.kind === 95; + return n.kind === 173 && n.expression.kind === 95; } ts.isSuperCallExpression = isSuperCallExpression; function isPrologueDirective(node) { - return node.kind === 199 && node.expression.kind === 9; + return node.kind === 201 && node.expression.kind === 9; } ts.isPrologueDirective = isPrologueDirective; function getLeadingCommentRangesOfNode(node, sourceFileOfNode) { @@ -3833,7 +3982,7 @@ var ts; } ts.getJsDocComments = getJsDocComments; function getJsDocCommentsFromText(node, text) { - var commentRanges = (node.kind === 140 || node.kind === 139) ? + var commentRanges = (node.kind === 141 || node.kind === 140) ? ts.concatenate(ts.getTrailingCommentRanges(text, node.pos), ts.getLeadingCommentRanges(text, node.pos)) : getLeadingCommentRangesOfNodeFromText(node, text); return ts.filter(commentRanges, isJsDocComment); @@ -3845,9 +3994,10 @@ var ts; } ts.getJsDocCommentsFromText = getJsDocCommentsFromText; ts.fullTripleSlashReferencePathRegEx = /^(\/\/\/\s*/; + ts.fullTripleSlashReferenceTypeReferenceDirectiveRegEx = /^(\/\/\/\s*/; ts.fullTripleSlashAMDReferencePathRegEx = /^(\/\/\/\s*/; function isTypeNode(node) { - if (152 <= node.kind && node.kind <= 164) { + if (153 <= node.kind && node.kind <= 165) { return true; } switch (node.kind) { @@ -3856,58 +4006,59 @@ var ts; case 131: case 120: case 132: + case 134: return true; case 103: - return node.parent.kind !== 181; - case 192: + return node.parent.kind !== 182; + case 193: return !isExpressionWithTypeArgumentsInClassExtendsClause(node); case 69: - if (node.parent.kind === 137 && node.parent.right === node) { + if (node.parent.kind === 138 && node.parent.right === node) { node = node.parent; } - else if (node.parent.kind === 170 && node.parent.name === node) { + else if (node.parent.kind === 171 && node.parent.name === node) { node = node.parent; } - ts.Debug.assert(node.kind === 69 || node.kind === 137 || node.kind === 170, "'node' was expected to be a qualified name, identifier or property access in 'isTypeNode'."); - case 137: - case 170: + ts.Debug.assert(node.kind === 69 || node.kind === 138 || node.kind === 171, "'node' was expected to be a qualified name, identifier or property access in 'isTypeNode'."); + case 138: + case 171: case 97: var parent_1 = node.parent; - if (parent_1.kind === 156) { + if (parent_1.kind === 157) { return false; } - if (152 <= parent_1.kind && parent_1.kind <= 164) { + if (153 <= parent_1.kind && parent_1.kind <= 165) { return true; } switch (parent_1.kind) { - case 192: + case 193: return !isExpressionWithTypeArgumentsInClassExtendsClause(parent_1); - case 139: - return node === parent_1.constraint; - case 143: - case 142: case 140: - case 215: - return node === parent_1.type; + return node === parent_1.constraint; + case 144: + case 143: + case 141: case 217: - case 177: + return node === parent_1.type; + case 219: case 178: + case 179: + case 147: case 146: case 145: - case 144: - case 147: case 148: - return node === parent_1.type; case 149: + return node === parent_1.type; case 150: case 151: + case 152: return node === parent_1.type; - case 175: + case 176: return node === parent_1.type; - case 172: case 173: - return parent_1.typeArguments && ts.indexOf(parent_1.typeArguments, node) >= 0; case 174: + return parent_1.typeArguments && ts.indexOf(parent_1.typeArguments, node) >= 0; + case 175: return false; } } @@ -3918,23 +4069,23 @@ var ts; return traverse(body); function traverse(node) { switch (node.kind) { - case 208: + case 210: return visitor(node); - case 224: - case 196: - case 200: - case 201: + case 226: + case 198: case 202: case 203: case 204: case 205: - case 209: - case 210: - case 245: - case 246: + case 206: + case 207: case 211: - case 213: + case 212: case 248: + case 249: + case 213: + case 215: + case 251: return ts.forEachChild(node, traverse); } } @@ -3944,23 +4095,23 @@ var ts; return traverse(body); function traverse(node) { switch (node.kind) { - case 188: + case 189: visitor(node); var operand = node.expression; if (operand) { traverse(operand); } + case 223: case 221: - case 219: + case 224: case 222: case 220: - case 218: - case 190: + case 191: return; default: if (isFunctionLike(node)) { var name_5 = node.name; - if (name_5 && name_5.kind === 138) { + if (name_5 && name_5.kind === 139) { traverse(name_5.expression); return; } @@ -3975,14 +4126,14 @@ var ts; function isVariableLike(node) { if (node) { switch (node.kind) { - case 167: - case 251: - case 140: - case 249: + case 168: + case 254: + case 141: + case 252: + case 144: case 143: - case 142: - case 250: - case 215: + case 253: + case 217: return true; } } @@ -3990,11 +4141,11 @@ var ts; } ts.isVariableLike = isVariableLike; function isAccessor(node) { - return node && (node.kind === 147 || node.kind === 148); + return node && (node.kind === 148 || node.kind === 149); } ts.isAccessor = isAccessor; function isClassLike(node) { - return node && (node.kind === 218 || node.kind === 190); + return node && (node.kind === 220 || node.kind === 191); } ts.isClassLike = isClassLike; function isFunctionLike(node) { @@ -4003,32 +4154,32 @@ var ts; ts.isFunctionLike = isFunctionLike; function isFunctionLikeKind(kind) { switch (kind) { - case 146: - case 177: - case 217: - case 178: - case 145: - case 144: case 147: + case 178: + case 219: + case 179: + case 146: + case 145: case 148: case 149: case 150: case 151: - case 154: + case 152: case 155: + case 156: return true; } } ts.isFunctionLikeKind = isFunctionLikeKind; function introducesArgumentsExoticObject(node) { switch (node.kind) { - case 145: - case 144: case 146: + case 145: case 147: case 148: - case 217: - case 177: + case 149: + case 219: + case 178: return true; } return false; @@ -4036,24 +4187,24 @@ var ts; ts.introducesArgumentsExoticObject = introducesArgumentsExoticObject; function isIterationStatement(node, lookInLabeledStatements) { switch (node.kind) { + case 205: + case 206: + case 207: case 203: case 204: - case 205: - case 201: - case 202: return true; - case 211: + case 213: return lookInLabeledStatements && isIterationStatement(node.statement, lookInLabeledStatements); } return false; } ts.isIterationStatement = isIterationStatement; function isFunctionBlock(node) { - return node && node.kind === 196 && isFunctionLike(node.parent); + return node && node.kind === 198 && isFunctionLike(node.parent); } ts.isFunctionBlock = isFunctionBlock; function isObjectLiteralMethod(node) { - return node && node.kind === 145 && node.parent.kind === 169; + return node && node.kind === 146 && node.parent.kind === 170; } ts.isObjectLiteralMethod = isObjectLiteralMethod; function isIdentifierTypePredicate(predicate) { @@ -4089,39 +4240,39 @@ var ts; return undefined; } switch (node.kind) { - case 138: + case 139: if (isClassLike(node.parent.parent)) { return node; } node = node.parent; break; - case 141: - if (node.parent.kind === 140 && isClassElement(node.parent.parent)) { + case 142: + if (node.parent.kind === 141 && isClassElement(node.parent.parent)) { node = node.parent.parent; } else if (isClassElement(node.parent)) { node = node.parent; } break; - case 178: + case 179: if (!includeArrowFunctions) { continue; } - case 217: - case 177: - case 222: - case 143: - case 142: - case 145: + case 219: + case 178: + case 224: case 144: + case 143: case 146: + case 145: case 147: case 148: case 149: case 150: case 151: - case 221: - case 252: + case 152: + case 223: + case 255: return node; } } @@ -4134,25 +4285,25 @@ var ts; return node; } switch (node.kind) { - case 138: + case 139: node = node.parent; break; - case 217: - case 177: + case 219: case 178: + case 179: if (!stopOnFunctions) { continue; } - case 143: - case 142: - case 145: case 144: + case 143: case 146: + case 145: case 147: case 148: + case 149: return node; - case 141: - if (node.parent.kind === 140 && isClassElement(node.parent.parent)) { + case 142: + if (node.parent.kind === 141 && isClassElement(node.parent.parent)) { node = node.parent.parent; } else if (isClassElement(node.parent)) { @@ -4164,20 +4315,20 @@ var ts; } ts.getSuperContainer = getSuperContainer; function isSuperPropertyOrElementAccess(node) { - return (node.kind === 170 - || node.kind === 171) + return (node.kind === 171 + || node.kind === 172) && node.expression.kind === 95; } ts.isSuperPropertyOrElementAccess = isSuperPropertyOrElementAccess; function getEntityNameFromTypeNode(node) { if (node) { switch (node.kind) { - case 153: + case 154: return node.typeName; - case 192: + case 193: return node.expression; case 69: - case 137: + case 138: return node; } } @@ -4185,7 +4336,7 @@ var ts; } ts.getEntityNameFromTypeNode = getEntityNameFromTypeNode; function getInvokedExpression(node) { - if (node.kind === 174) { + if (node.kind === 175) { return node.tag; } return node.expression; @@ -4193,21 +4344,21 @@ var ts; ts.getInvokedExpression = getInvokedExpression; function nodeCanBeDecorated(node) { switch (node.kind) { - case 218: + case 220: return true; - case 143: - return node.parent.kind === 218; - case 147: + case 144: + return node.parent.kind === 220; case 148: - case 145: + case 149: + case 146: return node.body !== undefined - && node.parent.kind === 218; - case 140: + && node.parent.kind === 220; + case 141: return node.parent.body !== undefined - && (node.parent.kind === 146 - || node.parent.kind === 145 - || node.parent.kind === 148) - && node.parent.parent.kind === 218; + && (node.parent.kind === 147 + || node.parent.kind === 146 + || node.parent.kind === 149) + && node.parent.parent.kind === 220; } return false; } @@ -4218,13 +4369,23 @@ var ts; } ts.nodeIsDecorated = nodeIsDecorated; function isPropertyAccessExpression(node) { - return node.kind === 170; + return node.kind === 171; } ts.isPropertyAccessExpression = isPropertyAccessExpression; function isElementAccessExpression(node) { - return node.kind === 171; + return node.kind === 172; } ts.isElementAccessExpression = isElementAccessExpression; + function isJSXTagName(node) { + var parent = node.parent; + if (parent.kind === 242 || + parent.kind === 241 || + parent.kind === 244) { + return parent.tagName === node; + } + return false; + } + ts.isJSXTagName = isJSXTagName; function isExpression(node) { switch (node.kind) { case 95: @@ -4232,42 +4393,43 @@ var ts; case 99: case 84: case 10: - case 168: case 169: case 170: case 171: case 172: case 173: case 174: - case 193: case 175: + case 194: case 176: + case 195: case 177: - case 190: case 178: - case 181: + case 191: case 179: + case 182: case 180: - case 183: + case 181: case 184: case 185: case 186: - case 189: case 187: - case 11: - case 191: - case 237: - case 238: + case 190: case 188: - case 182: + case 11: + case 192: + case 240: + case 241: + case 189: + case 183: return true; - case 137: - while (node.parent.kind === 137) { + case 138: + while (node.parent.kind === 138) { node = node.parent; } - return node.parent.kind === 156; + return node.parent.kind === 157 || isJSXTagName(node); case 69: - if (node.parent.kind === 156) { + if (node.parent.kind === 157 || isJSXTagName(node)) { return true; } case 8: @@ -4275,47 +4437,47 @@ var ts; case 97: var parent_2 = node.parent; switch (parent_2.kind) { - case 215: - case 140: + case 217: + case 141: + case 144: case 143: - case 142: - case 251: - case 249: - case 167: + case 254: + case 252: + case 168: return parent_2.initializer === node; - case 199: - case 200: case 201: case 202: - case 208: - case 209: - case 210: - case 245: - case 212: - case 210: - return parent_2.expression === node; case 203: + case 204: + case 210: + case 211: + case 212: + case 248: + case 214: + case 212: + return parent_2.expression === node; + case 205: var forStatement = parent_2; - return (forStatement.initializer === node && forStatement.initializer.kind !== 216) || + return (forStatement.initializer === node && forStatement.initializer.kind !== 218) || forStatement.condition === node || forStatement.incrementor === node; - case 204: - case 205: + case 206: + case 207: var forInStatement = parent_2; - return (forInStatement.initializer === node && forInStatement.initializer.kind !== 216) || + return (forInStatement.initializer === node && forInStatement.initializer.kind !== 218) || forInStatement.expression === node; - case 175: - case 193: - return node === parent_2.expression; + case 176: case 194: return node === parent_2.expression; - case 138: + case 196: return node === parent_2.expression; - case 141: - case 244: - case 243: + case 139: + return node === parent_2.expression; + case 142: + case 247: + case 246: return true; - case 192: + case 193: return parent_2.expression === node && isExpressionWithTypeArgumentsInClassExtendsClause(parent_2); default: if (isExpression(parent_2)) { @@ -4337,7 +4499,7 @@ var ts; } ts.isInstantiatedModule = isInstantiatedModule; function isExternalModuleImportEqualsDeclaration(node) { - return node.kind === 225 && node.moduleReference.kind === 236; + return node.kind === 228 && node.moduleReference.kind === 239; } ts.isExternalModuleImportEqualsDeclaration = isExternalModuleImportEqualsDeclaration; function getExternalModuleImportEqualsDeclarationExpression(node) { @@ -4346,7 +4508,7 @@ var ts; } ts.getExternalModuleImportEqualsDeclarationExpression = getExternalModuleImportEqualsDeclarationExpression; function isInternalModuleImportEqualsDeclaration(node) { - return node.kind === 225 && node.moduleReference.kind !== 236; + return node.kind === 228 && node.moduleReference.kind !== 239; } ts.isInternalModuleImportEqualsDeclaration = isInternalModuleImportEqualsDeclaration; function isSourceFileJavaScript(file) { @@ -4358,7 +4520,7 @@ var ts; } ts.isInJavaScriptFile = isInJavaScriptFile; function isRequireCall(expression, checkArgumentIsStringLiteral) { - var isRequire = expression.kind === 172 && + var isRequire = expression.kind === 173 && expression.expression.kind === 69 && expression.expression.text === "require" && expression.arguments.length === 1; @@ -4366,11 +4528,14 @@ var ts; } ts.isRequireCall = isRequireCall; function getSpecialPropertyAssignmentKind(expression) { - if (expression.kind !== 185) { + if (!isInJavaScriptFile(expression)) { + return 0; + } + if (expression.kind !== 186) { return 0; } var expr = expression; - if (expr.operatorToken.kind !== 56 || expr.left.kind !== 170) { + if (expr.operatorToken.kind !== 56 || expr.left.kind !== 171) { return 0; } var lhs = expr.left; @@ -4386,7 +4551,7 @@ var ts; else if (lhs.expression.kind === 97) { return 4; } - else if (lhs.expression.kind === 170) { + else if (lhs.expression.kind === 171) { var innerPropertyAccess = lhs.expression; if (innerPropertyAccess.expression.kind === 69 && innerPropertyAccess.name.text === "prototype") { return 3; @@ -4396,19 +4561,19 @@ var ts; } ts.getSpecialPropertyAssignmentKind = getSpecialPropertyAssignmentKind; function getExternalModuleName(node) { - if (node.kind === 226) { + if (node.kind === 229) { return node.moduleSpecifier; } - if (node.kind === 225) { + if (node.kind === 228) { var reference = node.moduleReference; - if (reference.kind === 236) { + if (reference.kind === 239) { return reference.expression; } } - if (node.kind === 232) { + if (node.kind === 235) { return node.moduleSpecifier; } - if (node.kind === 222 && node.name.kind === 9) { + if (node.kind === 224 && node.name.kind === 9) { return node.name; } } @@ -4416,13 +4581,13 @@ var ts; function hasQuestionToken(node) { if (node) { switch (node.kind) { - case 140: + case 141: + case 146: case 145: + case 253: + case 252: case 144: - case 250: - case 249: case 143: - case 142: return node.questionToken !== undefined; } } @@ -4430,9 +4595,9 @@ var ts; } ts.hasQuestionToken = hasQuestionToken; function isJSDocConstructSignature(node) { - return node.kind === 265 && + return node.kind === 268 && node.parameters.length > 0 && - node.parameters[0].type.kind === 267; + node.parameters[0].type.kind === 270; } ts.isJSDocConstructSignature = isJSDocConstructSignature; function getJSDocTag(node, kind, checkParentVariableStatement) { @@ -4455,22 +4620,22 @@ var ts; return node.jsDocComment; } if (checkParentVariableStatement) { - var isInitializerOfVariableDeclarationInStatement = node.parent.kind === 215 && + var isInitializerOfVariableDeclarationInStatement = node.parent.kind === 217 && node.parent.initializer === node && - node.parent.parent.parent.kind === 197; + node.parent.parent.parent.kind === 199; var variableStatementNode = isInitializerOfVariableDeclarationInStatement ? node.parent.parent.parent : undefined; if (variableStatementNode) { return variableStatementNode.jsDocComment; } var parent_3 = node.parent; var isSourceOfAssignmentExpressionStatement = parent_3 && parent_3.parent && - parent_3.kind === 185 && + parent_3.kind === 186 && parent_3.operatorToken.kind === 56 && - parent_3.parent.kind === 199; + parent_3.parent.kind === 201; if (isSourceOfAssignmentExpressionStatement) { return parent_3.parent.jsDocComment; } - var isPropertyAssignmentExpression = parent_3 && parent_3.kind === 249; + var isPropertyAssignmentExpression = parent_3 && parent_3.kind === 252; if (isPropertyAssignmentExpression) { return parent_3.jsDocComment; } @@ -4478,15 +4643,15 @@ var ts; return undefined; } function getJSDocTypeTag(node) { - return getJSDocTag(node, 273, false); + return getJSDocTag(node, 276, false); } ts.getJSDocTypeTag = getJSDocTypeTag; function getJSDocReturnTag(node) { - return getJSDocTag(node, 272, true); + return getJSDocTag(node, 275, true); } ts.getJSDocReturnTag = getJSDocReturnTag; function getJSDocTemplateTag(node) { - return getJSDocTag(node, 274, false); + return getJSDocTag(node, 277, false); } ts.getJSDocTemplateTag = getJSDocTemplateTag; function getCorrespondingJSDocParameterTag(parameter) { @@ -4496,7 +4661,7 @@ var ts; if (jsDocComment) { for (var _i = 0, _a = jsDocComment.tags; _i < _a.length; _i++) { var tag = _a[_i]; - if (tag.kind === 271) { + if (tag.kind === 274) { var parameterTag = tag; var name_6 = parameterTag.preParameterName || parameterTag.postParameterName; if (name_6.text === parameterName) { @@ -4516,12 +4681,12 @@ var ts; function isRestParameter(node) { if (node) { if (node.flags & 134217728) { - if (node.type && node.type.kind === 266) { + if (node.type && node.type.kind === 269) { return true; } var paramTag = getCorrespondingJSDocParameterTag(node); if (paramTag && paramTag.typeExpression) { - return paramTag.typeExpression.type.kind === 266; + return paramTag.typeExpression.type.kind === 269; } } return node.dotDotDotToken !== undefined; @@ -4542,7 +4707,7 @@ var ts; } ts.isTemplateLiteralKind = isTemplateLiteralKind; function isBindingPattern(node) { - return !!node && (node.kind === 166 || node.kind === 165); + return !!node && (node.kind === 167 || node.kind === 166); } ts.isBindingPattern = isBindingPattern; function isNodeDescendentOf(node, ancestor) { @@ -4556,7 +4721,7 @@ var ts; ts.isNodeDescendentOf = isNodeDescendentOf; function isInAmbientContext(node) { while (node) { - if (node.flags & 2 || (node.kind === 252 && node.isDeclarationFile)) { + if (node.flags & 2 || (node.kind === 255 && node.isDeclarationFile)) { return true; } node = node.parent; @@ -4566,34 +4731,34 @@ var ts; ts.isInAmbientContext = isInAmbientContext; function isDeclaration(node) { switch (node.kind) { - case 178: - case 167: - case 218: - case 190: - case 146: - case 221: - case 251: - case 234: - case 217: - case 177: - case 147: - case 227: - case 225: - case 230: - case 219: - case 145: - case 144: - case 222: - case 228: - case 140: - case 249: - case 143: - case 142: - case 148: - case 250: + case 179: + case 168: case 220: - case 139: - case 215: + case 191: + case 147: + case 223: + case 254: + case 237: + case 219: + case 178: + case 148: + case 230: + case 228: + case 233: + case 221: + case 146: + case 145: + case 224: + case 231: + case 141: + case 252: + case 144: + case 143: + case 149: + case 253: + case 222: + case 140: + case 217: return true; } return false; @@ -4601,25 +4766,25 @@ var ts; ts.isDeclaration = isDeclaration; function isStatement(n) { switch (n.kind) { - case 207: - case 206: - case 214: - case 201: - case 199: - case 198: - case 204: - case 205: - case 203: - case 200: - case 211: + case 209: case 208: + case 216: + case 203: + case 201: + case 200: + case 206: + case 207: + case 205: + case 202: + case 213: case 210: case 212: - case 213: - case 197: - case 202: - case 209: - case 231: + case 214: + case 215: + case 199: + case 204: + case 211: + case 234: return true; default: return false; @@ -4628,13 +4793,13 @@ var ts; ts.isStatement = isStatement; function isClassElement(n) { switch (n.kind) { - case 146: - case 143: - case 145: case 147: - case 148: case 144: - case 151: + case 146: + case 148: + case 149: + case 145: + case 152: return true; default: return false; @@ -4646,7 +4811,7 @@ var ts; return false; } var parent = name.parent; - if (parent.kind === 230 || parent.kind === 234) { + if (parent.kind === 233 || parent.kind === 237) { if (parent.propertyName) { return true; } @@ -4660,40 +4825,41 @@ var ts; function isIdentifierName(node) { var parent = node.parent; switch (parent.kind) { - case 143: - case 142: - case 145: case 144: - case 147: + case 143: + case 146: + case 145: case 148: - case 251: - case 249: - case 170: + case 149: + case 254: + case 252: + case 171: return parent.name === node; - case 137: + case 138: if (parent.right === node) { - while (parent.kind === 137) { + while (parent.kind === 138) { parent = parent.parent; } - return parent.kind === 156; + return parent.kind === 157; } return false; - case 167: - case 230: + case 168: + case 233: return parent.propertyName === node; - case 234: + case 237: return true; } return false; } ts.isIdentifierName = isIdentifierName; function isAliasSymbolDeclaration(node) { - return node.kind === 225 || - node.kind === 227 && !!node.name || - node.kind === 228 || - node.kind === 230 || - node.kind === 234 || - node.kind === 231 && node.expression.kind === 69; + return node.kind === 228 || + node.kind === 227 || + node.kind === 230 && !!node.name || + node.kind === 231 || + node.kind === 233 || + node.kind === 237 || + node.kind === 234 && node.expression.kind === 69; } ts.isAliasSymbolDeclaration = isAliasSymbolDeclaration; function getClassExtendsHeritageClauseElement(node) { @@ -4750,32 +4916,32 @@ var ts; }; } else { - var matchResult = ts.fullTripleSlashReferencePathRegEx.exec(comment); - if (matchResult) { + var refMatchResult = ts.fullTripleSlashReferencePathRegEx.exec(comment); + var refLibResult = !refMatchResult && ts.fullTripleSlashReferenceTypeReferenceDirectiveRegEx.exec(comment); + if (refMatchResult || refLibResult) { var start = commentRange.pos; var end = commentRange.end; return { fileReference: { pos: start, end: end, - fileName: matchResult[3] + fileName: (refMatchResult || refLibResult)[3] }, - isNoDefaultLib: false - }; - } - else { - return { - diagnosticMessage: ts.Diagnostics.Invalid_reference_directive_syntax, - isNoDefaultLib: false + isNoDefaultLib: false, + isTypeReferenceDirective: !!refLibResult }; } + return { + diagnosticMessage: ts.Diagnostics.Invalid_reference_directive_syntax, + isNoDefaultLib: false + }; } } return undefined; } ts.getFileReferenceFromReferencePath = getFileReferenceFromReferencePath; function isKeyword(token) { - return 70 <= token && token <= 136; + return 70 <= token && token <= 137; } ts.isKeyword = isKeyword; function isTrivia(token) { @@ -4795,7 +4961,7 @@ var ts; } ts.hasDynamicName = hasDynamicName; function isDynamicName(name) { - return name.kind === 138 && + return name.kind === 139 && !isStringOrNumericLiteral(name.expression.kind) && !isWellKnownSymbolSyntactically(name.expression); } @@ -4808,7 +4974,7 @@ var ts; if (name.kind === 69 || name.kind === 9 || name.kind === 8) { return name.text; } - if (name.kind === 138) { + if (name.kind === 139) { var nameExpression = name.expression; if (isWellKnownSymbolSyntactically(nameExpression)) { var rightHandSideName = nameExpression.name.text; @@ -4846,18 +5012,18 @@ var ts; ts.isModifierKind = isModifierKind; function isParameterDeclaration(node) { var root = getRootDeclaration(node); - return root.kind === 140; + return root.kind === 141; } ts.isParameterDeclaration = isParameterDeclaration; function getRootDeclaration(node) { - while (node.kind === 167) { + while (node.kind === 168) { node = node.parent.parent; } return node; } ts.getRootDeclaration = getRootDeclaration; function nodeStartsNewLexicalEnvironment(n) { - return isFunctionLike(n) || n.kind === 222 || n.kind === 252; + return isFunctionLike(n) || n.kind === 224 || n.kind === 255; } ts.nodeStartsNewLexicalEnvironment = nodeStartsNewLexicalEnvironment; function cloneNode(node, location, flags, parent) { @@ -4890,7 +5056,7 @@ var ts; } ts.cloneEntityName = cloneEntityName; function isQualifiedName(node) { - return node.kind === 137; + return node.kind === 138; } ts.isQualifiedName = isQualifiedName; function nodeIsSynthesized(node) { @@ -5126,6 +5292,17 @@ var ts; return emitOutputFilePathWithoutExtension + extension; } ts.getOwnEmitOutputFilePath = getOwnEmitOutputFilePath; + function getDeclarationEmitOutputFilePath(sourceFile, host) { + var options = host.getCompilerOptions(); + var outputDir = options.declarationDir || options.outDir; + if (options.declaration) { + var path = outputDir + ? getSourceFilePathInNewDir(sourceFile, host, outputDir) + : sourceFile.fileName; + return ts.removeFileExtension(path) + ".d.ts"; + } + } + ts.getDeclarationEmitOutputFilePath = getDeclarationEmitOutputFilePath; function getEmitScriptTarget(compilerOptions) { return compilerOptions.target || 0; } @@ -5166,20 +5343,21 @@ var ts; var emitFileNames = { jsFilePath: jsFilePath, sourceMapFilePath: getSourceMapFilePath(jsFilePath, options), - declarationFilePath: !isSourceFileJavaScript(sourceFile) ? getDeclarationEmitFilePath(jsFilePath, options) : undefined + declarationFilePath: !isSourceFileJavaScript(sourceFile) ? getDeclarationEmitOutputFilePath(sourceFile, host) : undefined }; action(emitFileNames, [sourceFile], false); } function onBundledEmit(host) { - var bundledSources = ts.filter(host.getSourceFiles(), function (sourceFile) { return !isDeclarationFile(sourceFile) && - (!isExternalModule(sourceFile) || - (getEmitModuleKind(options) && isExternalModule(sourceFile))); }); + var bundledSources = ts.filter(host.getSourceFiles(), function (sourceFile) { + return !isDeclarationFile(sourceFile) + && (!ts.isExternalModule(sourceFile) || !!getEmitModuleKind(options)); + }); if (bundledSources.length) { var jsFilePath = options.outFile || options.out; var emitFileNames = { jsFilePath: jsFilePath, sourceMapFilePath: getSourceMapFilePath(jsFilePath, options), - declarationFilePath: getDeclarationEmitFilePath(jsFilePath, options) + declarationFilePath: options.declaration ? ts.removeFileExtension(jsFilePath) + ".d.ts" : undefined }; action(emitFileNames, bundledSources, true); } @@ -5187,9 +5365,6 @@ var ts; function getSourceMapFilePath(jsFilePath, options) { return options.sourceMap ? jsFilePath + ".map" : undefined; } - function getDeclarationEmitFilePath(jsFilePath, options) { - return options.declaration ? ts.removeFileExtension(jsFilePath) + ".d.ts" : undefined; - } } ts.forEachExpectedEmitFile = forEachExpectedEmitFile; function getSourceFilePathInNewDir(sourceFile, host, newDirPath) { @@ -5198,10 +5373,10 @@ var ts; return ts.combinePaths(newDirPath, sourceFilePath); } ts.getSourceFilePathInNewDir = getSourceFilePathInNewDir; - function writeFile(host, diagnostics, fileName, data, writeByteOrderMark) { + function writeFile(host, diagnostics, fileName, data, writeByteOrderMark, sourceFiles) { host.writeFile(fileName, data, writeByteOrderMark, function (hostErrorMessage) { diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Could_not_write_file_0_Colon_1, fileName, hostErrorMessage)); - }); + }, sourceFiles); } ts.writeFile = writeFile; function getLineOfLocalPosition(currentSourceFile, pos) { @@ -5214,7 +5389,7 @@ var ts; ts.getLineOfLocalPositionFromLineMap = getLineOfLocalPositionFromLineMap; function getFirstConstructorWithBody(node) { return ts.forEach(node.members, function (member) { - if (member.kind === 146 && nodeIsPresent(member.body)) { + if (member.kind === 147 && nodeIsPresent(member.body)) { return member; } }); @@ -5231,10 +5406,10 @@ var ts; var setAccessor; if (hasDynamicName(accessor)) { firstAccessor = accessor; - if (accessor.kind === 147) { + if (accessor.kind === 148) { getAccessor = accessor; } - else if (accessor.kind === 148) { + else if (accessor.kind === 149) { setAccessor = accessor; } else { @@ -5243,7 +5418,7 @@ var ts; } else { ts.forEach(declarations, function (member) { - if ((member.kind === 147 || member.kind === 148) + if ((member.kind === 148 || member.kind === 149) && (member.flags & 32) === (accessor.flags & 32)) { var memberName = getPropertyNameForPropertyNameNode(member.name); var accessorName = getPropertyNameForPropertyNameNode(accessor.name); @@ -5254,10 +5429,10 @@ var ts; else if (!secondAccessor) { secondAccessor = member; } - if (member.kind === 147 && !getAccessor) { + if (member.kind === 148 && !getAccessor) { getAccessor = member; } - if (member.kind === 148 && !setAccessor) { + if (member.kind === 149 && !setAccessor) { setAccessor = member; } } @@ -5312,7 +5487,7 @@ var ts; } if (leadingComments) { var detachedComments = []; - var lastComment; + var lastComment = void 0; for (var _i = 0, leadingComments_1 = leadingComments; _i < leadingComments_1.length; _i++) { var comment = leadingComments_1[_i]; if (lastComment) { @@ -5346,7 +5521,7 @@ var ts; if (text.charCodeAt(comment.pos + 1) === 42) { var firstCommentLineAndCharacter = ts.computeLineAndCharacterOfPosition(lineMap, comment.pos); var lineCount = lineMap.length; - var firstCommentLineIndent; + var firstCommentLineIndent = void 0; for (var pos = comment.pos, currentLine = firstCommentLineAndCharacter.line; pos < comment.end; currentLine++) { var nextLineStart = (currentLine + 1) === lineCount ? text.length + 1 @@ -5424,24 +5599,25 @@ var ts; function isLeftHandSideExpression(expr) { if (expr) { switch (expr.kind) { - case 170: case 171: - case 173: case 172: - case 237: - case 238: case 174: - case 168: - case 176: + case 173: + case 195: + case 240: + case 241: + case 175: case 169: - case 190: case 177: + case 170: + case 191: + case 178: case 69: case 10: case 8: case 9: case 11: - case 187: + case 188: case 84: case 93: case 97: @@ -5458,7 +5634,7 @@ var ts; } ts.isAssignmentOperator = isAssignmentOperator; function isExpressionWithTypeArgumentsInClassExtendsClause(node) { - return node.kind === 192 && + return node.kind === 193 && node.parent.token === 83 && isClassLike(node.parent.parent); } @@ -5479,16 +5655,16 @@ var ts; } } function isRightSideOfQualifiedNameOrPropertyAccess(node) { - return (node.parent.kind === 137 && node.parent.right === node) || - (node.parent.kind === 170 && node.parent.name === node); + return (node.parent.kind === 138 && node.parent.right === node) || + (node.parent.kind === 171 && node.parent.name === node); } ts.isRightSideOfQualifiedNameOrPropertyAccess = isRightSideOfQualifiedNameOrPropertyAccess; function isEmptyObjectLiteralOrArrayLiteral(expression) { var kind = expression.kind; - if (kind === 169) { + if (kind === 170) { return expression.properties.length === 0; } - if (kind === 168) { + if (kind === 169) { return expression.elements.length === 0; } return false; @@ -5609,6 +5785,10 @@ var ts; return carriageReturnLineFeed; } ts.getNewLineCharacter = getNewLineCharacter; + function isWatchSet(options) { + return options.watch && options.hasOwnProperty("watch"); + } + ts.isWatchSet = isWatchSet; })(ts || (ts = {})); var ts; (function (ts) { @@ -5732,9 +5912,9 @@ var ts; } ts.collapseTextChangeRangesAcrossMultipleVersions = collapseTextChangeRangesAcrossMultipleVersions; function getTypeParameterOwner(d) { - if (d && d.kind === 139) { + if (d && d.kind === 140) { for (var current = d; current; current = current.parent) { - if (ts.isFunctionLike(current) || ts.isClassLike(current) || current.kind === 219) { + if (ts.isFunctionLike(current) || ts.isClassLike(current) || current.kind === 221) { return current; } } @@ -5742,9 +5922,18 @@ var ts; } ts.getTypeParameterOwner = getTypeParameterOwner; function isParameterPropertyDeclaration(node) { - return node.flags & 28 && node.parent.kind === 146 && ts.isClassLike(node.parent.parent); + return node.flags & 28 && node.parent.kind === 147 && ts.isClassLike(node.parent.parent); } ts.isParameterPropertyDeclaration = isParameterPropertyDeclaration; + function startsWith(str, prefix) { + return str.lastIndexOf(prefix, 0) === 0; + } + ts.startsWith = startsWith; + function endsWith(str, suffix) { + var expectedPos = str.length - suffix.length; + return str.indexOf(suffix, expectedPos) === expectedPos; + } + ts.endsWith = endsWith; })(ts || (ts = {})); var ts; (function (ts) { @@ -5752,7 +5941,7 @@ var ts; var NodeConstructor; var SourceFileConstructor; function createNode(kind, pos, end) { - if (kind === 252) { + if (kind === 255) { return new (SourceFileConstructor || (SourceFileConstructor = ts.objectAllocator.getSourceFileConstructor()))(kind, pos, end); } else { @@ -5788,26 +5977,26 @@ var ts; var visitNodes = cbNodeArray ? visitNodeArray : visitEachNode; var cbNodes = cbNodeArray || cbNode; switch (node.kind) { - case 137: + case 138: return visitNode(cbNode, node.left) || visitNode(cbNode, node.right); - case 139: + case 140: return visitNode(cbNode, node.name) || visitNode(cbNode, node.constraint) || visitNode(cbNode, node.expression); - case 250: + case 253: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || visitNode(cbNode, node.questionToken) || visitNode(cbNode, node.equalsToken) || visitNode(cbNode, node.objectAssignmentInitializer); - case 140: + case 141: + case 144: case 143: - case 142: - case 249: - case 215: - case 167: + case 252: + case 217: + case 168: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.propertyName) || @@ -5816,24 +6005,24 @@ var ts; visitNode(cbNode, node.questionToken) || visitNode(cbNode, node.type) || visitNode(cbNode, node.initializer); - case 154: case 155: - case 149: + case 156: case 150: case 151: + case 152: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNodes(cbNodes, node.typeParameters) || visitNodes(cbNodes, node.parameters) || visitNode(cbNode, node.type); - case 145: - case 144: case 146: + case 145: case 147: case 148: - case 177: - case 217: + case 149: case 178: + case 219: + case 179: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.asteriskToken) || @@ -5844,290 +6033,294 @@ var ts; visitNode(cbNode, node.type) || visitNode(cbNode, node.equalsGreaterThanToken) || visitNode(cbNode, node.body); - case 153: + case 154: return visitNode(cbNode, node.typeName) || visitNodes(cbNodes, node.typeArguments); - case 152: + case 153: return visitNode(cbNode, node.parameterName) || visitNode(cbNode, node.type); - case 156: - return visitNode(cbNode, node.exprName); case 157: - return visitNodes(cbNodes, node.members); + return visitNode(cbNode, node.exprName); case 158: - return visitNode(cbNode, node.elementType); + return visitNodes(cbNodes, node.members); case 159: - return visitNodes(cbNodes, node.elementTypes); + return visitNode(cbNode, node.elementType); case 160: + return visitNodes(cbNodes, node.elementTypes); case 161: - return visitNodes(cbNodes, node.types); case 162: + return visitNodes(cbNodes, node.types); + case 163: return visitNode(cbNode, node.type); - case 165: case 166: - return visitNodes(cbNodes, node.elements); - case 168: + case 167: return visitNodes(cbNodes, node.elements); case 169: - return visitNodes(cbNodes, node.properties); + return visitNodes(cbNodes, node.elements); case 170: + return visitNodes(cbNodes, node.properties); + case 171: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.dotToken) || visitNode(cbNode, node.name); - case 171: + case 172: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.argumentExpression); - case 172: case 173: + case 174: return visitNode(cbNode, node.expression) || visitNodes(cbNodes, node.typeArguments) || visitNodes(cbNodes, node.arguments); - case 174: + case 175: return visitNode(cbNode, node.tag) || visitNode(cbNode, node.template); - case 175: + case 176: return visitNode(cbNode, node.type) || visitNode(cbNode, node.expression); - case 176: - return visitNode(cbNode, node.expression); - case 179: + case 177: return visitNode(cbNode, node.expression); case 180: return visitNode(cbNode, node.expression); case 181: return visitNode(cbNode, node.expression); - case 183: - return visitNode(cbNode, node.operand); - case 188: - return visitNode(cbNode, node.asteriskToken) || - visitNode(cbNode, node.expression); case 182: return visitNode(cbNode, node.expression); case 184: return visitNode(cbNode, node.operand); + case 189: + return visitNode(cbNode, node.asteriskToken) || + visitNode(cbNode, node.expression); + case 183: + return visitNode(cbNode, node.expression); case 185: + return visitNode(cbNode, node.operand); + case 186: return visitNode(cbNode, node.left) || visitNode(cbNode, node.operatorToken) || visitNode(cbNode, node.right); - case 193: + case 194: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.type); - case 186: + case 195: + return visitNode(cbNode, node.expression); + case 187: return visitNode(cbNode, node.condition) || visitNode(cbNode, node.questionToken) || visitNode(cbNode, node.whenTrue) || visitNode(cbNode, node.colonToken) || visitNode(cbNode, node.whenFalse); - case 189: + case 190: return visitNode(cbNode, node.expression); - case 196: - case 223: + case 198: + case 225: return visitNodes(cbNodes, node.statements); - case 252: + case 255: return visitNodes(cbNodes, node.statements) || visitNode(cbNode, node.endOfFileToken); - case 197: + case 199: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.declarationList); - case 216: + case 218: return visitNodes(cbNodes, node.declarations); - case 199: + case 201: return visitNode(cbNode, node.expression); - case 200: + case 202: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.thenStatement) || visitNode(cbNode, node.elseStatement); - case 201: + case 203: return visitNode(cbNode, node.statement) || visitNode(cbNode, node.expression); - case 202: + case 204: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.statement); - case 203: + case 205: return visitNode(cbNode, node.initializer) || visitNode(cbNode, node.condition) || visitNode(cbNode, node.incrementor) || visitNode(cbNode, node.statement); - case 204: - return visitNode(cbNode, node.initializer) || - visitNode(cbNode, node.expression) || - visitNode(cbNode, node.statement); - case 205: - return visitNode(cbNode, node.initializer) || - visitNode(cbNode, node.expression) || - visitNode(cbNode, node.statement); case 206: - case 207: - return visitNode(cbNode, node.label); - case 208: - return visitNode(cbNode, node.expression); - case 209: - return visitNode(cbNode, node.expression) || + return visitNode(cbNode, node.initializer) || + visitNode(cbNode, node.expression) || visitNode(cbNode, node.statement); + case 207: + return visitNode(cbNode, node.initializer) || + visitNode(cbNode, node.expression) || + visitNode(cbNode, node.statement); + case 208: + case 209: + return visitNode(cbNode, node.label); case 210: - return visitNode(cbNode, node.expression) || - visitNode(cbNode, node.caseBlock); - case 224: - return visitNodes(cbNodes, node.clauses); - case 245: - return visitNode(cbNode, node.expression) || - visitNodes(cbNodes, node.statements); - case 246: - return visitNodes(cbNodes, node.statements); + return visitNode(cbNode, node.expression); case 211: - return visitNode(cbNode, node.label) || + return visitNode(cbNode, node.expression) || visitNode(cbNode, node.statement); case 212: - return visitNode(cbNode, node.expression); + return visitNode(cbNode, node.expression) || + visitNode(cbNode, node.caseBlock); + case 226: + return visitNodes(cbNodes, node.clauses); + case 248: + return visitNode(cbNode, node.expression) || + visitNodes(cbNodes, node.statements); + case 249: + return visitNodes(cbNodes, node.statements); case 213: + return visitNode(cbNode, node.label) || + visitNode(cbNode, node.statement); + case 214: + return visitNode(cbNode, node.expression); + case 215: return visitNode(cbNode, node.tryBlock) || visitNode(cbNode, node.catchClause) || visitNode(cbNode, node.finallyBlock); - case 248: + case 251: return visitNode(cbNode, node.variableDeclaration) || visitNode(cbNode, node.block); - case 141: + case 142: return visitNode(cbNode, node.expression); - case 218: - case 190: - return visitNodes(cbNodes, node.decorators) || - visitNodes(cbNodes, node.modifiers) || - visitNode(cbNode, node.name) || - visitNodes(cbNodes, node.typeParameters) || - visitNodes(cbNodes, node.heritageClauses) || - visitNodes(cbNodes, node.members); - case 219: - return visitNodes(cbNodes, node.decorators) || - visitNodes(cbNodes, node.modifiers) || - visitNode(cbNode, node.name) || - visitNodes(cbNodes, node.typeParameters) || - visitNodes(cbNodes, node.heritageClauses) || - visitNodes(cbNodes, node.members); case 220: + case 191: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || visitNodes(cbNodes, node.typeParameters) || - visitNode(cbNode, node.type); + visitNodes(cbNodes, node.heritageClauses) || + visitNodes(cbNodes, node.members); case 221: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || + visitNodes(cbNodes, node.typeParameters) || + visitNodes(cbNodes, node.heritageClauses) || visitNodes(cbNodes, node.members); - case 251: - return visitNode(cbNode, node.name) || - visitNode(cbNode, node.initializer); case 222: + return visitNodes(cbNodes, node.decorators) || + visitNodes(cbNodes, node.modifiers) || + visitNode(cbNode, node.name) || + visitNodes(cbNodes, node.typeParameters) || + visitNode(cbNode, node.type); + case 223: + return visitNodes(cbNodes, node.decorators) || + visitNodes(cbNodes, node.modifiers) || + visitNode(cbNode, node.name) || + visitNodes(cbNodes, node.members); + case 254: + return visitNode(cbNode, node.name) || + visitNode(cbNode, node.initializer); + case 224: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || visitNode(cbNode, node.body); - case 225: + case 228: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || visitNode(cbNode, node.moduleReference); - case 226: + case 229: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.importClause) || visitNode(cbNode, node.moduleSpecifier); - case 227: + case 230: return visitNode(cbNode, node.name) || visitNode(cbNode, node.namedBindings); - case 228: + case 227: + return visitNode(cbNode, node.name); + case 231: return visitNode(cbNode, node.name); - case 229: - case 233: - return visitNodes(cbNodes, node.elements); case 232: + case 236: + return visitNodes(cbNodes, node.elements); + case 235: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.exportClause) || visitNode(cbNode, node.moduleSpecifier); - case 230: - case 234: + case 233: + case 237: return visitNode(cbNode, node.propertyName) || visitNode(cbNode, node.name); - case 231: + case 234: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.expression); - case 187: + case 188: return visitNode(cbNode, node.head) || visitNodes(cbNodes, node.templateSpans); - case 194: + case 196: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.literal); - case 138: + case 139: return visitNode(cbNode, node.expression); - case 247: + case 250: return visitNodes(cbNodes, node.types); - case 192: + case 193: return visitNode(cbNode, node.expression) || visitNodes(cbNodes, node.typeArguments); - case 236: + case 239: return visitNode(cbNode, node.expression); - case 235: + case 238: return visitNodes(cbNodes, node.decorators); - case 237: + case 240: return visitNode(cbNode, node.openingElement) || visitNodes(cbNodes, node.children) || visitNode(cbNode, node.closingElement); - case 238: - case 239: + case 241: + case 242: return visitNode(cbNode, node.tagName) || visitNodes(cbNodes, node.attributes); - case 242: + case 245: return visitNode(cbNode, node.name) || visitNode(cbNode, node.initializer); - case 243: + case 246: + return visitNode(cbNode, node.expression); + case 247: return visitNode(cbNode, node.expression); case 244: - return visitNode(cbNode, node.expression); - case 241: return visitNode(cbNode, node.tagName); - case 253: - return visitNode(cbNode, node.type); - case 257: - return visitNodes(cbNodes, node.types); - case 258: - return visitNodes(cbNodes, node.types); case 256: - return visitNode(cbNode, node.elementType); + return visitNode(cbNode, node.type); case 260: - return visitNode(cbNode, node.type); - case 259: - return visitNode(cbNode, node.type); + return visitNodes(cbNodes, node.types); case 261: - return visitNodes(cbNodes, node.members); + return visitNodes(cbNodes, node.types); + case 259: + return visitNode(cbNode, node.elementType); case 263: + return visitNode(cbNode, node.type); + case 262: + return visitNode(cbNode, node.type); + case 264: + return visitNodes(cbNodes, node.members); + case 266: return visitNode(cbNode, node.name) || visitNodes(cbNodes, node.typeArguments); - case 264: - return visitNode(cbNode, node.type); - case 265: - return visitNodes(cbNodes, node.parameters) || - visitNode(cbNode, node.type); - case 266: - return visitNode(cbNode, node.type); case 267: return visitNode(cbNode, node.type); case 268: - return visitNode(cbNode, node.type); - case 262: - return visitNode(cbNode, node.name) || + return visitNodes(cbNodes, node.parameters) || visitNode(cbNode, node.type); case 269: - return visitNodes(cbNodes, node.tags); + return visitNode(cbNode, node.type); + case 270: + return visitNode(cbNode, node.type); case 271: + return visitNode(cbNode, node.type); + case 265: + return visitNode(cbNode, node.name) || + visitNode(cbNode, node.type); + case 272: + return visitNodes(cbNodes, node.tags); + case 274: return visitNode(cbNode, node.preParameterName) || visitNode(cbNode, node.typeExpression) || visitNode(cbNode, node.postParameterName); - case 272: + case 275: return visitNode(cbNode, node.typeExpression); - case 273: + case 276: return visitNode(cbNode, node.typeExpression); - case 274: + case 277: return visitNodes(cbNodes, node.typeParameters); } } @@ -6140,22 +6333,10 @@ var ts; return result; } ts.createSourceFile = createSourceFile; - function getScriptKindFromFileName(fileName) { - var ext = fileName.substr(fileName.lastIndexOf(".")); - switch (ext.toLowerCase()) { - case ".js": - return 1; - case ".jsx": - return 2; - case ".ts": - return 3; - case ".tsx": - return 4; - default: - return 3; - } + function isExternalModule(file) { + return file.externalModuleIndicator !== undefined; } - ts.getScriptKindFromFileName = getScriptKindFromFileName; + ts.isExternalModule = isExternalModule; function updateSourceFile(sourceFile, newText, textChangeRange, aggressiveChecks) { return IncrementalParser.updateSourceFile(sourceFile, newText, textChangeRange, aggressiveChecks); } @@ -6186,7 +6367,7 @@ var ts; var contextFlags; var parseErrorBeforeNextFinishedNode = false; function parseSourceFile(fileName, _sourceText, languageVersion, _syntaxCursor, setParentNodes, scriptKind) { - scriptKind = scriptKind ? scriptKind : getScriptKindFromFileName(fileName); + scriptKind = ts.ensureScriptKind(fileName, scriptKind); initializeState(fileName, _sourceText, languageVersion, _syntaxCursor, scriptKind); var result = parseSourceFileWorker(fileName, languageVersion, setParentNodes, scriptKind); clearState(); @@ -6271,7 +6452,7 @@ var ts; } Parser.fixupParentReferences = fixupParentReferences; function createSourceFile(fileName, languageVersion, scriptKind) { - var sourceFile = new SourceFileConstructor(252, 0, sourceText.length); + var sourceFile = new SourceFileConstructor(255, 0, sourceText.length); nodeCount++; sourceFile.text = sourceText; sourceFile.bindDiagnostics = []; @@ -6563,7 +6744,7 @@ var ts; return token === 9 || token === 8 || ts.tokenIsIdentifierOrKeyword(token); } function parseComputedPropertyName() { - var node = createNode(138); + var node = createNode(139); parseExpected(19); node.expression = allowInAnd(parseExpression); parseExpected(20); @@ -6588,7 +6769,7 @@ var ts; if (token === 77) { return lookAhead(nextTokenIsClassOrFunction); } - return token !== 37 && token !== 15 && canFollowModifier(); + return token !== 37 && token !== 116 && token !== 15 && canFollowModifier(); } if (token === 77) { return nextTokenIsClassOrFunction(); @@ -6815,7 +6996,7 @@ var ts; if (ts.containsParseError(node)) { return undefined; } - var nodeContextFlags = node.flags & 62914560; + var nodeContextFlags = node.flags & 197132288; if (nodeContextFlags !== contextFlags) { return undefined; } @@ -6862,14 +7043,14 @@ var ts; function isReusableClassMember(node) { if (node) { switch (node.kind) { - case 146: - case 151: case 147: + case 152: case 148: - case 143: - case 195: + case 149: + case 144: + case 197: return true; - case 145: + case 146: var methodDeclaration = node; var nameIsConstructor = methodDeclaration.name.kind === 69 && methodDeclaration.name.originalKeywordKind === 121; @@ -6881,8 +7062,8 @@ var ts; function isReusableSwitchClause(node) { if (node) { switch (node.kind) { - case 245: - case 246: + case 248: + case 249: return true; } } @@ -6891,65 +7072,65 @@ var ts; function isReusableStatement(node) { if (node) { switch (node.kind) { - case 217: - case 197: - case 196: - case 200: + case 219: case 199: - case 212: - case 208: - case 210: - case 207: - case 206: - case 204: - case 205: - case 203: - case 202: - case 209: case 198: - case 213: - case 211: + case 202: case 201: case 214: - case 226: - case 225: - case 232: - case 231: - case 222: - case 218: - case 219: - case 221: + case 210: + case 212: + case 209: + case 208: + case 206: + case 207: + case 205: + case 204: + case 211: + case 200: + case 215: + case 213: + case 203: + case 216: + case 229: + case 228: + case 235: + case 234: + case 224: case 220: + case 221: + case 223: + case 222: return true; } } return false; } function isReusableEnumMember(node) { - return node.kind === 251; + return node.kind === 254; } function isReusableTypeMember(node) { if (node) { switch (node.kind) { - case 150: - case 144: case 151: - case 142: - case 149: + case 145: + case 152: + case 143: + case 150: return true; } } return false; } function isReusableVariableDeclaration(node) { - if (node.kind !== 215) { + if (node.kind !== 217) { return false; } var variableDeclarator = node; return variableDeclarator.initializer === undefined; } function isReusableParameter(node) { - if (node.kind !== 140) { + if (node.kind !== 141) { return false; } var parameter = node; @@ -7049,7 +7230,7 @@ var ts; function parseEntityName(allowReservedWords, diagnosticMessage) { var entity = parseIdentifier(diagnosticMessage); while (parseOptional(21)) { - var node = createNode(137, entity.pos); + var node = createNode(138, entity.pos); node.left = entity; node.right = parseRightSideOfDot(allowReservedWords); entity = finishNode(node); @@ -7066,7 +7247,7 @@ var ts; return allowIdentifierNames ? parseIdentifierName() : parseIdentifier(); } function parseTemplateExpression() { - var template = createNode(187); + var template = createNode(188); template.head = parseTemplateLiteralFragment(); ts.Debug.assert(template.head.kind === 12, "Template head has wrong token kind"); var templateSpans = []; @@ -7079,7 +7260,7 @@ var ts; return finishNode(template); } function parseTemplateSpan() { - var span = createNode(194); + var span = createNode(196); span.expression = allowInAnd(parseExpression); var literal; if (token === 16) { @@ -7093,7 +7274,7 @@ var ts; return finishNode(span); } function parseStringLiteralTypeNode() { - return parseLiteralLikeNode(164, true); + return parseLiteralLikeNode(165, true); } function parseLiteralNode(internName) { return parseLiteralLikeNode(token, internName); @@ -7123,7 +7304,7 @@ var ts; } function parseTypeReference() { var typeName = parseEntityName(false, ts.Diagnostics.Type_expected); - var node = createNode(153, typeName.pos); + var node = createNode(154, typeName.pos); node.typeName = typeName; if (!scanner.hasPrecedingLineBreak() && token === 25) { node.typeArguments = parseBracketedList(18, parseType, 25, 27); @@ -7132,24 +7313,24 @@ var ts; } function parseThisTypePredicate(lhs) { nextToken(); - var node = createNode(152, lhs.pos); + var node = createNode(153, lhs.pos); node.parameterName = lhs; node.type = parseType(); return finishNode(node); } function parseThisTypeNode() { - var node = createNode(163); + var node = createNode(164); nextToken(); return finishNode(node); } function parseTypeQuery() { - var node = createNode(156); + var node = createNode(157); parseExpected(101); node.exprName = parseEntityName(true); return finishNode(node); } function parseTypeParameter() { - var node = createNode(139); + var node = createNode(140); node.name = parseIdentifier(); if (parseOptional(83)) { if (isStartOfType() || !isStartOfExpression()) { @@ -7173,7 +7354,7 @@ var ts; return undefined; } function isStartOfParameter() { - return token === 22 || isIdentifierOrPattern() || ts.isModifierKind(token) || token === 55; + return token === 22 || isIdentifierOrPattern() || ts.isModifierKind(token) || token === 55 || token === 97; } function setModifiers(node, modifiers) { if (modifiers) { @@ -7182,7 +7363,12 @@ var ts; } } function parseParameter() { - var node = createNode(140); + var node = createNode(141); + if (token === 97) { + node.name = createIdentifier(true, undefined); + node.type = parseParameterType(); + return finishNode(node); + } node.decorators = parseDecorators(); setModifiers(node, parseModifiers()); node.dotDotDotToken = parseOptionalToken(22); @@ -7237,7 +7423,7 @@ var ts; } function parseSignatureMember(kind) { var node = createNode(kind); - if (kind === 150) { + if (kind === 151) { parseExpected(92); } fillSignature(54, false, false, false, node); @@ -7277,7 +7463,7 @@ var ts; return token === 54 || token === 24 || token === 20; } function parseIndexSignatureDeclaration(fullStart, decorators, modifiers) { - var node = createNode(151, fullStart); + var node = createNode(152, fullStart); node.decorators = decorators; setModifiers(node, modifiers); node.parameters = parseBracketedList(16, parseParameter, 19, 20); @@ -7289,7 +7475,7 @@ var ts; var name = parsePropertyName(); var questionToken = parseOptionalToken(53); if (token === 17 || token === 25) { - var method = createNode(144, fullStart); + var method = createNode(145, fullStart); setModifiers(method, modifiers); method.name = name; method.questionToken = questionToken; @@ -7298,7 +7484,7 @@ var ts; return finishNode(method); } else { - var property = createNode(142, fullStart); + var property = createNode(143, fullStart); setModifiers(property, modifiers); property.name = name; property.questionToken = questionToken; @@ -7337,10 +7523,10 @@ var ts; } function parseTypeMember() { if (token === 17 || token === 25) { - return parseSignatureMember(149); + return parseSignatureMember(150); } if (token === 92 && lookAhead(isStartOfConstructSignature)) { - return parseSignatureMember(150); + return parseSignatureMember(151); } var fullStart = getNodePos(); var modifiers = parseModifiers(); @@ -7354,7 +7540,7 @@ var ts; return token === 17 || token === 25; } function parseTypeLiteral() { - var node = createNode(157); + var node = createNode(158); node.members = parseObjectTypeMembers(); return finishNode(node); } @@ -7370,12 +7556,12 @@ var ts; return members; } function parseTupleType() { - var node = createNode(159); + var node = createNode(160); node.elementTypes = parseBracketedList(19, parseType, 19, 20); return finishNode(node); } function parseParenthesizedType() { - var node = createNode(162); + var node = createNode(163); parseExpected(17); node.type = parseType(); parseExpected(18); @@ -7383,7 +7569,7 @@ var ts; } function parseFunctionOrConstructorType(kind) { var node = createNode(kind); - if (kind === 155) { + if (kind === 156) { parseExpected(92); } fillSignature(34, false, false, false, node); @@ -7400,11 +7586,13 @@ var ts; case 129: case 120: case 132: + case 134: var node = tryParse(parseKeywordAndNoDot); return node || parseTypeReference(); case 9: return parseStringLiteralTypeNode(); case 103: + case 93: return parseTokenNode(); case 97: { var thisKeyword = parseThisTypeNode(); @@ -7435,6 +7623,8 @@ var ts; case 120: case 132: case 103: + case 134: + case 93: case 97: case 101: case 15: @@ -7457,7 +7647,7 @@ var ts; var type = parseNonArrayType(); while (!scanner.hasPrecedingLineBreak() && parseOptional(19)) { parseExpected(20); - var node = createNode(158, type.pos); + var node = createNode(159, type.pos); node.elementType = type; type = finishNode(node); } @@ -7479,10 +7669,10 @@ var ts; return type; } function parseIntersectionTypeOrHigher() { - return parseUnionOrIntersectionType(161, parseArrayTypeOrHigher, 46); + return parseUnionOrIntersectionType(162, parseArrayTypeOrHigher, 46); } function parseUnionTypeOrHigher() { - return parseUnionOrIntersectionType(160, parseIntersectionTypeOrHigher, 47); + return parseUnionOrIntersectionType(161, parseIntersectionTypeOrHigher, 47); } function isStartOfFunctionType() { if (token === 25) { @@ -7494,7 +7684,7 @@ var ts; if (ts.isModifierKind(token)) { parseModifiers(); } - if (isIdentifier()) { + if (isIdentifier() || token === 97) { nextToken(); return true; } @@ -7528,7 +7718,7 @@ var ts; var typePredicateVariable = isIdentifier() && tryParse(parseTypePredicatePrefix); var type = parseType(); if (typePredicateVariable) { - var node = createNode(152, typePredicateVariable.pos); + var node = createNode(153, typePredicateVariable.pos); node.parameterName = typePredicateVariable; node.type = type; return finishNode(node); @@ -7549,10 +7739,10 @@ var ts; } function parseTypeWorker() { if (isStartOfFunctionType()) { - return parseFunctionOrConstructorType(154); + return parseFunctionOrConstructorType(155); } if (token === 92) { - return parseFunctionOrConstructorType(155); + return parseFunctionOrConstructorType(156); } return parseUnionTypeOrHigher(); } @@ -7671,7 +7861,7 @@ var ts; return !scanner.hasPrecedingLineBreak() && isIdentifier(); } function parseYieldExpression() { - var node = createNode(188); + var node = createNode(189); nextToken(); if (!scanner.hasPrecedingLineBreak() && (token === 37 || isStartOfExpression())) { @@ -7685,8 +7875,8 @@ var ts; } function parseSimpleArrowFunctionExpression(identifier) { ts.Debug.assert(token === 34, "parseSimpleArrowFunctionExpression should only have been called if we had a =>"); - var node = createNode(178, identifier.pos); - var parameter = createNode(140, identifier.pos); + var node = createNode(179, identifier.pos); + var parameter = createNode(141, identifier.pos); parameter.name = identifier; finishNode(parameter); node.parameters = [parameter]; @@ -7797,7 +7987,7 @@ var ts; return parseParenthesizedArrowFunctionExpressionHead(false); } function parseParenthesizedArrowFunctionExpressionHead(allowAmbiguity) { - var node = createNode(178); + var node = createNode(179); setModifiers(node, parseModifiersForArrowFunction()); var isAsync = !!(node.flags & 256); fillSignature(54, false, isAsync, !allowAmbiguity, node); @@ -7829,7 +8019,7 @@ var ts; if (!questionToken) { return leftOperand; } - var node = createNode(186, leftOperand.pos); + var node = createNode(187, leftOperand.pos); node.condition = leftOperand; node.questionToken = questionToken; node.whenTrue = doOutsideOfContext(disallowInAndDecoratorContext, parseAssignmentExpressionOrHigher); @@ -7842,7 +8032,7 @@ var ts; return parseBinaryExpressionRest(precedence, leftOperand); } function isInOrOfKeyword(t) { - return t === 90 || t === 136; + return t === 90 || t === 137; } function parseBinaryExpressionRest(precedence, leftOperand) { while (true) { @@ -7920,43 +8110,43 @@ var ts; return -1; } function makeBinaryExpression(left, operatorToken, right) { - var node = createNode(185, left.pos); + var node = createNode(186, left.pos); node.left = left; node.operatorToken = operatorToken; node.right = right; return finishNode(node); } function makeAsExpression(left, right) { - var node = createNode(193, left.pos); + var node = createNode(194, left.pos); node.expression = left; node.type = right; return finishNode(node); } function parsePrefixUnaryExpression() { - var node = createNode(183); + var node = createNode(184); node.operator = token; nextToken(); node.operand = parseSimpleUnaryExpression(); return finishNode(node); } function parseDeleteExpression() { - var node = createNode(179); - nextToken(); - node.expression = parseSimpleUnaryExpression(); - return finishNode(node); - } - function parseTypeOfExpression() { var node = createNode(180); nextToken(); node.expression = parseSimpleUnaryExpression(); return finishNode(node); } - function parseVoidExpression() { + function parseTypeOfExpression() { var node = createNode(181); nextToken(); node.expression = parseSimpleUnaryExpression(); return finishNode(node); } + function parseVoidExpression() { + var node = createNode(182); + nextToken(); + node.expression = parseSimpleUnaryExpression(); + return finishNode(node); + } function isAwaitExpression() { if (token === 119) { if (inAwaitContext()) { @@ -7967,7 +8157,7 @@ var ts; return false; } function parseAwaitExpression() { - var node = createNode(182); + var node = createNode(183); nextToken(); node.expression = parseSimpleUnaryExpression(); return finishNode(node); @@ -7986,7 +8176,7 @@ var ts; var simpleUnaryExpression = parseSimpleUnaryExpression(); if (token === 38) { var start = ts.skipTrivia(sourceText, simpleUnaryExpression.pos); - if (simpleUnaryExpression.kind === 175) { + if (simpleUnaryExpression.kind === 176) { parseErrorAtPosition(start, simpleUnaryExpression.end - start, ts.Diagnostics.A_type_assertion_expression_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_expression_Consider_enclosing_the_expression_in_parentheses); } else { @@ -8034,7 +8224,7 @@ var ts; } function parseIncrementExpression() { if (token === 41 || token === 42) { - var node = createNode(183); + var node = createNode(184); node.operator = token; nextToken(); node.operand = parseLeftHandSideExpressionOrHigher(); @@ -8046,7 +8236,7 @@ var ts; var expression = parseLeftHandSideExpressionOrHigher(); ts.Debug.assert(ts.isLeftHandSideExpression(expression)); if ((token === 41 || token === 42) && !scanner.hasPrecedingLineBreak()) { - var node = createNode(184, expression.pos); + var node = createNode(185, expression.pos); node.operand = expression; node.operator = token; nextToken(); @@ -8069,7 +8259,7 @@ var ts; if (token === 17 || token === 21 || token === 19) { return expression; } - var node = createNode(170, expression.pos); + var node = createNode(171, expression.pos); node.expression = expression; node.dotToken = parseExpectedToken(21, false, ts.Diagnostics.super_must_be_followed_by_an_argument_list_or_member_access); node.name = parseRightSideOfDot(true); @@ -8088,8 +8278,8 @@ var ts; function parseJsxElementOrSelfClosingElement(inExpressionContext) { var opening = parseJsxOpeningOrSelfClosingElement(inExpressionContext); var result; - if (opening.kind === 239) { - var node = createNode(237, opening.pos); + if (opening.kind === 242) { + var node = createNode(240, opening.pos); node.openingElement = opening; node.children = parseJsxChildren(node.openingElement.tagName); node.closingElement = parseJsxClosingElement(inExpressionContext); @@ -8099,14 +8289,14 @@ var ts; result = finishNode(node); } else { - ts.Debug.assert(opening.kind === 238); + ts.Debug.assert(opening.kind === 241); result = opening; } if (inExpressionContext && token === 25) { var invalidElement = tryParse(function () { return parseJsxElementOrSelfClosingElement(true); }); if (invalidElement) { parseErrorAtCurrentToken(ts.Diagnostics.JSX_expressions_must_have_one_parent_element); - var badNode = createNode(185, result.pos); + var badNode = createNode(186, result.pos); badNode.end = invalidElement.end; badNode.left = result; badNode.right = invalidElement; @@ -8118,13 +8308,13 @@ var ts; return result; } function parseJsxText() { - var node = createNode(240, scanner.getStartPos()); + var node = createNode(243, scanner.getStartPos()); token = scanner.scanJsxToken(); return finishNode(node); } function parseJsxChild() { switch (token) { - case 240: + case 243: return parseJsxText(); case 15: return parseJsxExpression(false); @@ -8160,7 +8350,7 @@ var ts; var attributes = parseList(13, parseJsxAttribute); var node; if (token === 27) { - node = createNode(239, fullStart); + node = createNode(242, fullStart); scanJsxText(); } else { @@ -8172,7 +8362,7 @@ var ts; parseExpected(27, undefined, false); scanJsxText(); } - node = createNode(238, fullStart); + node = createNode(241, fullStart); } node.tagName = tagName; node.attributes = attributes; @@ -8183,7 +8373,7 @@ var ts; var elementName = parseIdentifierName(); while (parseOptional(21)) { scanJsxIdentifier(); - var node = createNode(137, elementName.pos); + var node = createNode(138, elementName.pos); node.left = elementName; node.right = parseIdentifierName(); elementName = finishNode(node); @@ -8191,7 +8381,7 @@ var ts; return elementName; } function parseJsxExpression(inExpressionContext) { - var node = createNode(244); + var node = createNode(247); parseExpected(15); if (token !== 16) { node.expression = parseAssignmentExpressionOrHigher(); @@ -8210,7 +8400,7 @@ var ts; return parseJsxSpreadAttribute(); } scanJsxIdentifier(); - var node = createNode(242); + var node = createNode(245); node.name = parseIdentifierName(); if (parseOptional(56)) { switch (token) { @@ -8225,7 +8415,7 @@ var ts; return finishNode(node); } function parseJsxSpreadAttribute() { - var node = createNode(243); + var node = createNode(246); parseExpected(15); parseExpected(22); node.expression = parseExpression(); @@ -8233,7 +8423,7 @@ var ts; return finishNode(node); } function parseJsxClosingElement(inExpressionContext) { - var node = createNode(241); + var node = createNode(244); parseExpected(26); node.tagName = parseJsxElementName(); if (inExpressionContext) { @@ -8246,7 +8436,7 @@ var ts; return finishNode(node); } function parseTypeAssertion() { - var node = createNode(175); + var node = createNode(176); parseExpected(25); node.type = parseType(); parseExpected(27); @@ -8257,15 +8447,22 @@ var ts; while (true) { var dotToken = parseOptionalToken(21); if (dotToken) { - var propertyAccess = createNode(170, expression.pos); + var propertyAccess = createNode(171, expression.pos); propertyAccess.expression = expression; propertyAccess.dotToken = dotToken; propertyAccess.name = parseRightSideOfDot(true); expression = finishNode(propertyAccess); continue; } + if (token === 49 && !scanner.hasPrecedingLineBreak()) { + nextToken(); + var nonNullExpression = createNode(195, expression.pos); + nonNullExpression.expression = expression; + expression = finishNode(nonNullExpression); + continue; + } if (!inDecoratorContext() && parseOptional(19)) { - var indexedAccess = createNode(171, expression.pos); + var indexedAccess = createNode(172, expression.pos); indexedAccess.expression = expression; if (token !== 20) { indexedAccess.argumentExpression = allowInAnd(parseExpression); @@ -8279,7 +8476,7 @@ var ts; continue; } if (token === 11 || token === 12) { - var tagExpression = createNode(174, expression.pos); + var tagExpression = createNode(175, expression.pos); tagExpression.tag = expression; tagExpression.template = token === 11 ? parseLiteralNode() @@ -8298,7 +8495,7 @@ var ts; if (!typeArguments) { return expression; } - var callExpr = createNode(172, expression.pos); + var callExpr = createNode(173, expression.pos); callExpr.expression = expression; callExpr.typeArguments = typeArguments; callExpr.arguments = parseArgumentList(); @@ -8306,7 +8503,7 @@ var ts; continue; } else if (token === 17) { - var callExpr = createNode(172, expression.pos); + var callExpr = createNode(173, expression.pos); callExpr.expression = expression; callExpr.arguments = parseArgumentList(); expression = finishNode(callExpr); @@ -8401,28 +8598,28 @@ var ts; return parseIdentifier(ts.Diagnostics.Expression_expected); } function parseParenthesizedExpression() { - var node = createNode(176); + var node = createNode(177); parseExpected(17); node.expression = allowInAnd(parseExpression); parseExpected(18); return finishNode(node); } function parseSpreadElement() { - var node = createNode(189); + var node = createNode(190); parseExpected(22); node.expression = parseAssignmentExpressionOrHigher(); return finishNode(node); } function parseArgumentOrArrayLiteralElement() { return token === 22 ? parseSpreadElement() : - token === 24 ? createNode(191) : + token === 24 ? createNode(192) : parseAssignmentExpressionOrHigher(); } function parseArgumentExpression() { return doOutsideOfContext(disallowInAndDecoratorContext, parseArgumentOrArrayLiteralElement); } function parseArrayLiteralExpression() { - var node = createNode(168); + var node = createNode(169); parseExpected(19); if (scanner.hasPrecedingLineBreak()) { node.multiLine = true; @@ -8433,10 +8630,10 @@ var ts; } function tryParseAccessorDeclaration(fullStart, decorators, modifiers) { if (parseContextualModifier(123)) { - return parseAccessorDeclaration(147, fullStart, decorators, modifiers); + return addJSDocComment(parseAccessorDeclaration(148, fullStart, decorators, modifiers)); } else if (parseContextualModifier(130)) { - return parseAccessorDeclaration(148, fullStart, decorators, modifiers); + return parseAccessorDeclaration(149, fullStart, decorators, modifiers); } return undefined; } @@ -8457,7 +8654,7 @@ var ts; } var isShorthandPropertyAssignment = tokenIsIdentifier && (token === 24 || token === 16 || token === 56); if (isShorthandPropertyAssignment) { - var shorthandDeclaration = createNode(250, fullStart); + var shorthandDeclaration = createNode(253, fullStart); shorthandDeclaration.name = propertyName; shorthandDeclaration.questionToken = questionToken; var equalsToken = parseOptionalToken(56); @@ -8468,7 +8665,7 @@ var ts; return addJSDocComment(finishNode(shorthandDeclaration)); } else { - var propertyAssignment = createNode(249, fullStart); + var propertyAssignment = createNode(252, fullStart); propertyAssignment.modifiers = modifiers; propertyAssignment.name = propertyName; propertyAssignment.questionToken = questionToken; @@ -8478,7 +8675,7 @@ var ts; } } function parseObjectLiteralExpression() { - var node = createNode(169); + var node = createNode(170); parseExpected(15); if (scanner.hasPrecedingLineBreak()) { node.multiLine = true; @@ -8492,7 +8689,7 @@ var ts; if (saveDecoratorContext) { setDecoratorContext(false); } - var node = createNode(177); + var node = createNode(178); setModifiers(node, parseModifiers()); parseExpected(87); node.asteriskToken = parseOptionalToken(37); @@ -8514,7 +8711,7 @@ var ts; return isIdentifier() ? parseIdentifier() : undefined; } function parseNewExpression() { - var node = createNode(173); + var node = createNode(174); parseExpected(92); node.expression = parseMemberExpressionOrHigher(); node.typeArguments = tryParse(parseTypeArgumentsInExpression); @@ -8524,7 +8721,7 @@ var ts; return finishNode(node); } function parseBlock(ignoreMissingOpenBrace, diagnosticMessage) { - var node = createNode(196); + var node = createNode(198); if (parseExpected(15, diagnosticMessage) || ignoreMissingOpenBrace) { node.statements = parseList(1, parseStatement); parseExpected(16); @@ -8552,12 +8749,12 @@ var ts; return block; } function parseEmptyStatement() { - var node = createNode(198); + var node = createNode(200); parseExpected(23); return finishNode(node); } function parseIfStatement() { - var node = createNode(200); + var node = createNode(202); parseExpected(88); parseExpected(17); node.expression = allowInAnd(parseExpression); @@ -8567,7 +8764,7 @@ var ts; return finishNode(node); } function parseDoStatement() { - var node = createNode(201); + var node = createNode(203); parseExpected(79); node.statement = parseStatement(); parseExpected(104); @@ -8578,7 +8775,7 @@ var ts; return finishNode(node); } function parseWhileStatement() { - var node = createNode(202); + var node = createNode(204); parseExpected(104); parseExpected(17); node.expression = allowInAnd(parseExpression); @@ -8601,21 +8798,21 @@ var ts; } var forOrForInOrForOfStatement; if (parseOptional(90)) { - var forInStatement = createNode(204, pos); + var forInStatement = createNode(206, pos); forInStatement.initializer = initializer; forInStatement.expression = allowInAnd(parseExpression); parseExpected(18); forOrForInOrForOfStatement = forInStatement; } - else if (parseOptional(136)) { - var forOfStatement = createNode(205, pos); + else if (parseOptional(137)) { + var forOfStatement = createNode(207, pos); forOfStatement.initializer = initializer; forOfStatement.expression = allowInAnd(parseAssignmentExpressionOrHigher); parseExpected(18); forOrForInOrForOfStatement = forOfStatement; } else { - var forStatement = createNode(203, pos); + var forStatement = createNode(205, pos); forStatement.initializer = initializer; parseExpected(23); if (token !== 23 && token !== 18) { @@ -8633,7 +8830,7 @@ var ts; } function parseBreakOrContinueStatement(kind) { var node = createNode(kind); - parseExpected(kind === 207 ? 70 : 75); + parseExpected(kind === 209 ? 70 : 75); if (!canParseSemicolon()) { node.label = parseIdentifier(); } @@ -8641,7 +8838,7 @@ var ts; return finishNode(node); } function parseReturnStatement() { - var node = createNode(208); + var node = createNode(210); parseExpected(94); if (!canParseSemicolon()) { node.expression = allowInAnd(parseExpression); @@ -8650,7 +8847,7 @@ var ts; return finishNode(node); } function parseWithStatement() { - var node = createNode(209); + var node = createNode(211); parseExpected(105); parseExpected(17); node.expression = allowInAnd(parseExpression); @@ -8659,7 +8856,7 @@ var ts; return finishNode(node); } function parseCaseClause() { - var node = createNode(245); + var node = createNode(248); parseExpected(71); node.expression = allowInAnd(parseExpression); parseExpected(54); @@ -8667,7 +8864,7 @@ var ts; return finishNode(node); } function parseDefaultClause() { - var node = createNode(246); + var node = createNode(249); parseExpected(77); parseExpected(54); node.statements = parseList(3, parseStatement); @@ -8677,12 +8874,12 @@ var ts; return token === 71 ? parseCaseClause() : parseDefaultClause(); } function parseSwitchStatement() { - var node = createNode(210); + var node = createNode(212); parseExpected(96); parseExpected(17); node.expression = allowInAnd(parseExpression); parseExpected(18); - var caseBlock = createNode(224, scanner.getStartPos()); + var caseBlock = createNode(226, scanner.getStartPos()); parseExpected(15); caseBlock.clauses = parseList(2, parseCaseOrDefaultClause); parseExpected(16); @@ -8690,14 +8887,14 @@ var ts; return finishNode(node); } function parseThrowStatement() { - var node = createNode(212); + var node = createNode(214); parseExpected(98); node.expression = scanner.hasPrecedingLineBreak() ? undefined : allowInAnd(parseExpression); parseSemicolon(); return finishNode(node); } function parseTryStatement() { - var node = createNode(213); + var node = createNode(215); parseExpected(100); node.tryBlock = parseBlock(false); node.catchClause = token === 72 ? parseCatchClause() : undefined; @@ -8708,7 +8905,7 @@ var ts; return finishNode(node); } function parseCatchClause() { - var result = createNode(248); + var result = createNode(251); parseExpected(72); if (parseExpected(17)) { result.variableDeclaration = parseVariableDeclaration(); @@ -8718,7 +8915,7 @@ var ts; return finishNode(result); } function parseDebuggerStatement() { - var node = createNode(214); + var node = createNode(216); parseExpected(76); parseSemicolon(); return finishNode(node); @@ -8727,13 +8924,13 @@ var ts; var fullStart = scanner.getStartPos(); var expression = allowInAnd(parseExpression); if (expression.kind === 69 && parseOptional(54)) { - var labeledStatement = createNode(211, fullStart); + var labeledStatement = createNode(213, fullStart); labeledStatement.label = expression; labeledStatement.statement = parseStatement(); return addJSDocComment(finishNode(labeledStatement)); } else { - var expressionStatement = createNode(199, fullStart); + var expressionStatement = createNode(201, fullStart); expressionStatement.expression = expression; parseSemicolon(); return addJSDocComment(finishNode(expressionStatement)); @@ -8779,8 +8976,9 @@ var ts; return false; } continue; - case 135: - return nextToken() === 15; + case 136: + nextToken(); + return token === 15 || token === 69 || token === 82; case 89: nextToken(); return token === 9 || token === 37 || @@ -8788,7 +8986,8 @@ var ts; case 82: nextToken(); if (token === 56 || token === 37 || - token === 15 || token === 77) { + token === 15 || token === 77 || + token === 116) { return true; } continue; @@ -8838,7 +9037,7 @@ var ts; case 125: case 126: case 133: - case 135: + case 136: return true; case 112: case 110: @@ -8883,9 +9082,9 @@ var ts; case 86: return parseForOrForInOrForOfStatement(); case 75: - return parseBreakOrContinueStatement(206); + return parseBreakOrContinueStatement(208); case 70: - return parseBreakOrContinueStatement(207); + return parseBreakOrContinueStatement(209); case 94: return parseReturnStatement(); case 105: @@ -8918,7 +9117,7 @@ var ts; case 115: case 113: case 127: - case 135: + case 136: if (isStartOfDeclaration()) { return parseDeclaration(); } @@ -8945,7 +9144,7 @@ var ts; return parseTypeAliasDeclaration(fullStart, decorators, modifiers); case 81: return parseEnumDeclaration(fullStart, decorators, modifiers); - case 135: + case 136: case 125: case 126: return parseModuleDeclaration(fullStart, decorators, modifiers); @@ -8953,12 +9152,18 @@ var ts; return parseImportDeclarationOrImportEqualsDeclaration(fullStart, decorators, modifiers); case 82: nextToken(); - return token === 77 || token === 56 ? - parseExportAssignment(fullStart, decorators, modifiers) : - parseExportDeclaration(fullStart, decorators, modifiers); + switch (token) { + case 77: + case 56: + return parseExportAssignment(fullStart, decorators, modifiers); + case 116: + return parseGlobalModuleExportDeclaration(fullStart, decorators, modifiers); + default: + return parseExportDeclaration(fullStart, decorators, modifiers); + } default: if (decorators || modifiers) { - var node = createMissingNode(235, true, ts.Diagnostics.Declaration_expected); + var node = createMissingNode(238, true, ts.Diagnostics.Declaration_expected); node.pos = fullStart; node.decorators = decorators; setModifiers(node, modifiers); @@ -8979,16 +9184,16 @@ var ts; } function parseArrayBindingElement() { if (token === 24) { - return createNode(191); + return createNode(192); } - var node = createNode(167); + var node = createNode(168); node.dotDotDotToken = parseOptionalToken(22); node.name = parseIdentifierOrPattern(); node.initializer = parseBindingElementInitializer(false); return finishNode(node); } function parseObjectBindingElement() { - var node = createNode(167); + var node = createNode(168); var tokenIsIdentifier = isIdentifier(); var propertyName = parsePropertyName(); if (tokenIsIdentifier && token !== 54) { @@ -9003,14 +9208,14 @@ var ts; return finishNode(node); } function parseObjectBindingPattern() { - var node = createNode(165); + var node = createNode(166); parseExpected(15); node.elements = parseDelimitedList(9, parseObjectBindingElement); parseExpected(16); return finishNode(node); } function parseArrayBindingPattern() { - var node = createNode(166); + var node = createNode(167); parseExpected(19); node.elements = parseDelimitedList(10, parseArrayBindingElement); parseExpected(20); @@ -9029,7 +9234,7 @@ var ts; return parseIdentifier(); } function parseVariableDeclaration() { - var node = createNode(215); + var node = createNode(217); node.name = parseIdentifierOrPattern(); node.type = parseTypeAnnotation(); if (!isInOrOfKeyword(token)) { @@ -9038,7 +9243,7 @@ var ts; return finishNode(node); } function parseVariableDeclarationList(inForStatementInitializer) { - var node = createNode(216); + var node = createNode(218); switch (token) { case 102: break; @@ -9052,7 +9257,7 @@ var ts; ts.Debug.fail(); } nextToken(); - if (token === 136 && lookAhead(canFollowContextualOfKeyword)) { + if (token === 137 && lookAhead(canFollowContextualOfKeyword)) { node.declarations = createMissingList(); } else { @@ -9067,7 +9272,7 @@ var ts; return nextTokenIsIdentifier() && nextToken() === 18; } function parseVariableStatement(fullStart, decorators, modifiers) { - var node = createNode(197, fullStart); + var node = createNode(199, fullStart); node.decorators = decorators; setModifiers(node, modifiers); node.declarationList = parseVariableDeclarationList(false); @@ -9075,7 +9280,7 @@ var ts; return addJSDocComment(finishNode(node)); } function parseFunctionDeclaration(fullStart, decorators, modifiers) { - var node = createNode(217, fullStart); + var node = createNode(219, fullStart); node.decorators = decorators; setModifiers(node, modifiers); parseExpected(87); @@ -9088,7 +9293,7 @@ var ts; return addJSDocComment(finishNode(node)); } function parseConstructorDeclaration(pos, decorators, modifiers) { - var node = createNode(146, pos); + var node = createNode(147, pos); node.decorators = decorators; setModifiers(node, modifiers); parseExpected(121); @@ -9097,7 +9302,7 @@ var ts; return addJSDocComment(finishNode(node)); } function parseMethodDeclaration(fullStart, decorators, modifiers, asteriskToken, name, questionToken, diagnosticMessage) { - var method = createNode(145, fullStart); + var method = createNode(146, fullStart); method.decorators = decorators; setModifiers(method, modifiers); method.asteriskToken = asteriskToken; @@ -9110,7 +9315,7 @@ var ts; return addJSDocComment(finishNode(method)); } function parsePropertyDeclaration(fullStart, decorators, modifiers, name, questionToken) { - var property = createNode(143, fullStart); + var property = createNode(144, fullStart); property.decorators = decorators; setModifiers(property, modifiers); property.name = name; @@ -9207,7 +9412,7 @@ var ts; decorators = []; decorators.pos = decoratorStart; } - var decorator = createNode(141, decoratorStart); + var decorator = createNode(142, decoratorStart); decorator.expression = doInDecoratorContext(parseLeftHandSideExpressionOrHigher); decorators.push(finishNode(decorator)); } @@ -9263,7 +9468,7 @@ var ts; } function parseClassElement() { if (token === 23) { - var result = createNode(195); + var result = createNode(197); nextToken(); return finishNode(result); } @@ -9294,10 +9499,10 @@ var ts; ts.Debug.fail("Should not have attempted to parse class member declaration."); } function parseClassExpression() { - return parseClassDeclarationOrExpression(scanner.getStartPos(), undefined, undefined, 190); + return parseClassDeclarationOrExpression(scanner.getStartPos(), undefined, undefined, 191); } function parseClassDeclaration(fullStart, decorators, modifiers) { - return parseClassDeclarationOrExpression(fullStart, decorators, modifiers, 218); + return parseClassDeclarationOrExpression(fullStart, decorators, modifiers, 220); } function parseClassDeclarationOrExpression(fullStart, decorators, modifiers, kind) { var node = createNode(kind, fullStart); @@ -9332,7 +9537,7 @@ var ts; } function parseHeritageClause() { if (token === 83 || token === 106) { - var node = createNode(247); + var node = createNode(250); node.token = token; nextToken(); node.types = parseDelimitedList(7, parseExpressionWithTypeArguments); @@ -9341,7 +9546,7 @@ var ts; return undefined; } function parseExpressionWithTypeArguments() { - var node = createNode(192); + var node = createNode(193); node.expression = parseLeftHandSideExpressionOrHigher(); if (token === 25) { node.typeArguments = parseBracketedList(18, parseType, 25, 27); @@ -9355,7 +9560,7 @@ var ts; return parseList(5, parseClassElement); } function parseInterfaceDeclaration(fullStart, decorators, modifiers) { - var node = createNode(219, fullStart); + var node = createNode(221, fullStart); node.decorators = decorators; setModifiers(node, modifiers); parseExpected(107); @@ -9366,7 +9571,7 @@ var ts; return finishNode(node); } function parseTypeAliasDeclaration(fullStart, decorators, modifiers) { - var node = createNode(220, fullStart); + var node = createNode(222, fullStart); node.decorators = decorators; setModifiers(node, modifiers); parseExpected(133); @@ -9378,13 +9583,13 @@ var ts; return finishNode(node); } function parseEnumMember() { - var node = createNode(251, scanner.getStartPos()); + var node = createNode(254, scanner.getStartPos()); node.name = parsePropertyName(); node.initializer = allowInAnd(parseNonParameterInitializer); return finishNode(node); } function parseEnumDeclaration(fullStart, decorators, modifiers) { - var node = createNode(221, fullStart); + var node = createNode(223, fullStart); node.decorators = decorators; setModifiers(node, modifiers); parseExpected(81); @@ -9399,7 +9604,7 @@ var ts; return finishNode(node); } function parseModuleBlock() { - var node = createNode(223, scanner.getStartPos()); + var node = createNode(225, scanner.getStartPos()); if (parseExpected(15)) { node.statements = parseList(1, parseStatement); parseExpected(16); @@ -9410,7 +9615,7 @@ var ts; return finishNode(node); } function parseModuleOrNamespaceDeclaration(fullStart, decorators, modifiers, flags) { - var node = createNode(222, fullStart); + var node = createNode(224, fullStart); var namespaceFlag = flags & 4096; node.decorators = decorators; setModifiers(node, modifiers); @@ -9422,10 +9627,10 @@ var ts; return finishNode(node); } function parseAmbientExternalModuleDeclaration(fullStart, decorators, modifiers) { - var node = createNode(222, fullStart); + var node = createNode(224, fullStart); node.decorators = decorators; setModifiers(node, modifiers); - if (token === 135) { + if (token === 136) { node.name = parseIdentifier(); node.flags |= 131072; } @@ -9437,7 +9642,7 @@ var ts; } function parseModuleDeclaration(fullStart, decorators, modifiers) { var flags = modifiers ? modifiers.flags : 0; - if (token === 135) { + if (token === 136) { return parseAmbientExternalModuleDeclaration(fullStart, decorators, modifiers); } else if (parseOptional(126)) { @@ -9461,14 +9666,24 @@ var ts; function nextTokenIsSlash() { return nextToken() === 39; } + function parseGlobalModuleExportDeclaration(fullStart, decorators, modifiers) { + var exportDeclaration = createNode(227, fullStart); + exportDeclaration.decorators = decorators; + exportDeclaration.modifiers = modifiers; + parseExpected(116); + parseExpected(126); + exportDeclaration.name = parseIdentifier(); + parseExpected(23); + return finishNode(exportDeclaration); + } function parseImportDeclarationOrImportEqualsDeclaration(fullStart, decorators, modifiers) { parseExpected(89); var afterImportPos = scanner.getStartPos(); var identifier; if (isIdentifier()) { identifier = parseIdentifier(); - if (token !== 24 && token !== 134) { - var importEqualsDeclaration = createNode(225, fullStart); + if (token !== 24 && token !== 135) { + var importEqualsDeclaration = createNode(228, fullStart); importEqualsDeclaration.decorators = decorators; setModifiers(importEqualsDeclaration, modifiers); importEqualsDeclaration.name = identifier; @@ -9478,27 +9693,27 @@ var ts; return finishNode(importEqualsDeclaration); } } - var importDeclaration = createNode(226, fullStart); + var importDeclaration = createNode(229, fullStart); importDeclaration.decorators = decorators; setModifiers(importDeclaration, modifiers); if (identifier || token === 37 || token === 15) { importDeclaration.importClause = parseImportClause(identifier, afterImportPos); - parseExpected(134); + parseExpected(135); } importDeclaration.moduleSpecifier = parseModuleSpecifier(); parseSemicolon(); return finishNode(importDeclaration); } function parseImportClause(identifier, fullStart) { - var importClause = createNode(227, fullStart); + var importClause = createNode(230, fullStart); if (identifier) { importClause.name = identifier; } if (!importClause.name || parseOptional(24)) { - importClause.namedBindings = token === 37 ? parseNamespaceImport() : parseNamedImportsOrExports(229); + importClause.namedBindings = token === 37 ? parseNamespaceImport() : parseNamedImportsOrExports(232); } return finishNode(importClause); } @@ -9508,7 +9723,7 @@ var ts; : parseEntityName(false); } function parseExternalModuleReference() { - var node = createNode(236); + var node = createNode(239); parseExpected(128); parseExpected(17); node.expression = parseModuleSpecifier(); @@ -9526,7 +9741,7 @@ var ts; } } function parseNamespaceImport() { - var namespaceImport = createNode(228); + var namespaceImport = createNode(231); parseExpected(37); parseExpected(116); namespaceImport.name = parseIdentifier(); @@ -9534,14 +9749,14 @@ var ts; } function parseNamedImportsOrExports(kind) { var node = createNode(kind); - node.elements = parseBracketedList(21, kind === 229 ? parseImportSpecifier : parseExportSpecifier, 15, 16); + node.elements = parseBracketedList(21, kind === 232 ? parseImportSpecifier : parseExportSpecifier, 15, 16); return finishNode(node); } function parseExportSpecifier() { - return parseImportOrExportSpecifier(234); + return parseImportOrExportSpecifier(237); } function parseImportSpecifier() { - return parseImportOrExportSpecifier(230); + return parseImportOrExportSpecifier(233); } function parseImportOrExportSpecifier(kind) { var node = createNode(kind); @@ -9560,23 +9775,23 @@ var ts; else { node.name = identifierName; } - if (kind === 230 && checkIdentifierIsKeyword) { + if (kind === 233 && checkIdentifierIsKeyword) { parseErrorAtPosition(checkIdentifierStart, checkIdentifierEnd - checkIdentifierStart, ts.Diagnostics.Identifier_expected); } return finishNode(node); } function parseExportDeclaration(fullStart, decorators, modifiers) { - var node = createNode(232, fullStart); + var node = createNode(235, fullStart); node.decorators = decorators; setModifiers(node, modifiers); if (parseOptional(37)) { - parseExpected(134); + parseExpected(135); node.moduleSpecifier = parseModuleSpecifier(); } else { - node.exportClause = parseNamedImportsOrExports(233); - if (token === 134 || (token === 9 && !scanner.hasPrecedingLineBreak())) { - parseExpected(134); + node.exportClause = parseNamedImportsOrExports(236); + if (token === 135 || (token === 9 && !scanner.hasPrecedingLineBreak())) { + parseExpected(135); node.moduleSpecifier = parseModuleSpecifier(); } } @@ -9584,7 +9799,7 @@ var ts; return finishNode(node); } function parseExportAssignment(fullStart, decorators, modifiers) { - var node = createNode(231, fullStart); + var node = createNode(234, fullStart); node.decorators = decorators; setModifiers(node, modifiers); if (parseOptional(56)) { @@ -9600,6 +9815,7 @@ var ts; function processReferenceComments(sourceFile) { var triviaScanner = ts.createScanner(sourceFile.languageVersion, false, 0, sourceText); var referencedFiles = []; + var typeReferenceDirectives = []; var amdDependencies = []; var amdModuleName; while (true) { @@ -9620,7 +9836,12 @@ var ts; sourceFile.hasNoDefaultLib = referencePathMatchResult.isNoDefaultLib; var diagnosticMessage = referencePathMatchResult.diagnosticMessage; if (fileReference) { - referencedFiles.push(fileReference); + if (referencePathMatchResult.isTypeReferenceDirective) { + typeReferenceDirectives.push(fileReference); + } + else { + referencedFiles.push(fileReference); + } } if (diagnosticMessage) { parseDiagnostics.push(ts.createFileDiagnostic(sourceFile, range.pos, range.end - range.pos, diagnosticMessage)); @@ -9650,16 +9871,17 @@ var ts; } } sourceFile.referencedFiles = referencedFiles; + sourceFile.typeReferenceDirectives = typeReferenceDirectives; sourceFile.amdDependencies = amdDependencies; sourceFile.moduleName = amdModuleName; } function setExternalModuleIndicator(sourceFile) { sourceFile.externalModuleIndicator = ts.forEach(sourceFile.statements, function (node) { return node.flags & 1 - || node.kind === 225 && node.moduleReference.kind === 236 - || node.kind === 226 - || node.kind === 231 - || node.kind === 232 + || node.kind === 228 && node.moduleReference.kind === 239 + || node.kind === 229 + || node.kind === 234 + || node.kind === 235 ? node : undefined; }); @@ -9694,7 +9916,7 @@ var ts; } JSDocParser.parseJSDocTypeExpressionForTests = parseJSDocTypeExpressionForTests; function parseJSDocTypeExpression() { - var result = createNode(253, scanner.getTokenPos()); + var result = createNode(256, scanner.getTokenPos()); parseExpected(15); result.type = parseJSDocTopLevelType(); parseExpected(16); @@ -9705,12 +9927,12 @@ var ts; function parseJSDocTopLevelType() { var type = parseJSDocType(); if (token === 47) { - var unionType = createNode(257, type.pos); + var unionType = createNode(260, type.pos); unionType.types = parseJSDocTypeList(type); type = finishNode(unionType); } if (token === 56) { - var optionalType = createNode(264, type.pos); + var optionalType = createNode(267, type.pos); nextToken(); optionalType.type = type; type = finishNode(optionalType); @@ -9721,20 +9943,20 @@ var ts; var type = parseBasicTypeExpression(); while (true) { if (token === 19) { - var arrayType = createNode(256, type.pos); + var arrayType = createNode(259, type.pos); arrayType.elementType = type; nextToken(); parseExpected(20); type = finishNode(arrayType); } else if (token === 53) { - var nullableType = createNode(259, type.pos); + var nullableType = createNode(262, type.pos); nullableType.type = type; nextToken(); type = finishNode(nullableType); } else if (token === 49) { - var nonNullableType = createNode(260, type.pos); + var nonNullableType = createNode(263, type.pos); nonNullableType.type = type; nextToken(); type = finishNode(nonNullableType); @@ -9778,27 +10000,27 @@ var ts; return parseJSDocTypeReference(); } function parseJSDocThisType() { - var result = createNode(268); + var result = createNode(271); nextToken(); parseExpected(54); result.type = parseJSDocType(); return finishNode(result); } function parseJSDocConstructorType() { - var result = createNode(267); + var result = createNode(270); nextToken(); parseExpected(54); result.type = parseJSDocType(); return finishNode(result); } function parseJSDocVariadicType() { - var result = createNode(266); + var result = createNode(269); nextToken(); result.type = parseJSDocType(); return finishNode(result); } function parseJSDocFunctionType() { - var result = createNode(265); + var result = createNode(268); nextToken(); parseExpected(17); result.parameters = parseDelimitedList(22, parseJSDocParameter); @@ -9811,7 +10033,7 @@ var ts; return finishNode(result); } function parseJSDocParameter() { - var parameter = createNode(140); + var parameter = createNode(141); parameter.type = parseJSDocType(); if (parseOptional(56)) { parameter.questionToken = createNode(56); @@ -9819,7 +10041,7 @@ var ts; return finishNode(parameter); } function parseJSDocTypeReference() { - var result = createNode(263); + var result = createNode(266); result.name = parseSimplePropertyName(); if (token === 25) { result.typeArguments = parseTypeArguments(); @@ -9853,13 +10075,13 @@ var ts; } } function parseQualifiedName(left) { - var result = createNode(137, left.pos); + var result = createNode(138, left.pos); result.left = left; result.right = parseIdentifierName(); return finishNode(result); } function parseJSDocRecordType() { - var result = createNode(261); + var result = createNode(264); nextToken(); result.members = parseDelimitedList(24, parseJSDocRecordMember); checkForTrailingComma(result.members); @@ -9867,7 +10089,7 @@ var ts; return finishNode(result); } function parseJSDocRecordMember() { - var result = createNode(262); + var result = createNode(265); result.name = parseSimplePropertyName(); if (token === 54) { nextToken(); @@ -9876,13 +10098,13 @@ var ts; return finishNode(result); } function parseJSDocNonNullableType() { - var result = createNode(260); + var result = createNode(263); nextToken(); result.type = parseJSDocType(); return finishNode(result); } function parseJSDocTupleType() { - var result = createNode(258); + var result = createNode(261); nextToken(); result.types = parseDelimitedList(25, parseJSDocType); checkForTrailingComma(result.types); @@ -9896,7 +10118,7 @@ var ts; } } function parseJSDocUnionType() { - var result = createNode(257); + var result = createNode(260); nextToken(); result.types = parseJSDocTypeList(parseJSDocType()); parseExpected(18); @@ -9914,7 +10136,7 @@ var ts; return types; } function parseJSDocAllType() { - var result = createNode(254); + var result = createNode(257); nextToken(); return finishNode(result); } @@ -9927,11 +10149,11 @@ var ts; token === 27 || token === 56 || token === 47) { - var result = createNode(255, pos); + var result = createNode(258, pos); return finishNode(result); } else { - var result = createNode(259, pos); + var result = createNode(262, pos); result.type = parseJSDocType(); return finishNode(result); } @@ -10011,7 +10233,7 @@ var ts; if (!tags) { return undefined; } - var result = createNode(269, start); + var result = createNode(272, start); result.tags = tags; return finishNode(result, end); } @@ -10049,7 +10271,7 @@ var ts; return undefined; } function handleUnknownTag(atToken, tagName) { - var result = createNode(270, atToken.pos); + var result = createNode(273, atToken.pos); result.atToken = atToken; result.tagName = tagName; return finishNode(result); @@ -10101,7 +10323,7 @@ var ts; if (!typeExpression) { typeExpression = tryParseTypeExpression(); } - var result = createNode(271, atToken.pos); + var result = createNode(274, atToken.pos); result.atToken = atToken; result.tagName = tagName; result.preParameterName = preName; @@ -10111,27 +10333,27 @@ var ts; return finishNode(result); } function handleReturnTag(atToken, tagName) { - if (ts.forEach(tags, function (t) { return t.kind === 272; })) { + if (ts.forEach(tags, function (t) { return t.kind === 275; })) { parseErrorAtPosition(tagName.pos, scanner.getTokenPos() - tagName.pos, ts.Diagnostics._0_tag_already_specified, tagName.text); } - var result = createNode(272, atToken.pos); + var result = createNode(275, atToken.pos); result.atToken = atToken; result.tagName = tagName; result.typeExpression = tryParseTypeExpression(); return finishNode(result); } function handleTypeTag(atToken, tagName) { - if (ts.forEach(tags, function (t) { return t.kind === 273; })) { + if (ts.forEach(tags, function (t) { return t.kind === 276; })) { parseErrorAtPosition(tagName.pos, scanner.getTokenPos() - tagName.pos, ts.Diagnostics._0_tag_already_specified, tagName.text); } - var result = createNode(273, atToken.pos); + var result = createNode(276, atToken.pos); result.atToken = atToken; result.tagName = tagName; result.typeExpression = tryParseTypeExpression(); return finishNode(result); } function handleTemplateTag(atToken, tagName) { - if (ts.forEach(tags, function (t) { return t.kind === 274; })) { + if (ts.forEach(tags, function (t) { return t.kind === 277; })) { parseErrorAtPosition(tagName.pos, scanner.getTokenPos() - tagName.pos, ts.Diagnostics._0_tag_already_specified, tagName.text); } var typeParameters = []; @@ -10142,7 +10364,7 @@ var ts; parseErrorAtPosition(scanner.getStartPos(), 0, ts.Diagnostics.Identifier_expected); return undefined; } - var typeParameter = createNode(139, name_8.pos); + var typeParameter = createNode(140, name_8.pos); typeParameter.name = name_8; finishNode(typeParameter); typeParameters.push(typeParameter); @@ -10153,7 +10375,7 @@ var ts; break; } } - var result = createNode(274, atToken.pos); + var result = createNode(277, atToken.pos); result.atToken = atToken; result.tagName = tagName; result.typeParameters = typeParameters; @@ -10273,12 +10495,12 @@ var ts; } function checkNodePositions(node, aggressiveChecks) { if (aggressiveChecks) { - var pos = node.pos; + var pos_2 = node.pos; forEachChild(node, function (child) { - ts.Debug.assert(child.pos >= pos); - pos = child.end; + ts.Debug.assert(child.pos >= pos_2); + pos_2 = child.end; }); - ts.Debug.assert(pos <= node.end); + ts.Debug.assert(pos_2 <= node.end); } } function updateTokenPositionsAndMarkElements(sourceFile, changeStart, changeRangeOldEnd, changeRangeNewEnd, delta, oldText, newText, aggressiveChecks) { @@ -10474,32 +10696,32 @@ var ts; : 4; } function getModuleInstanceState(node) { - if (node.kind === 219 || node.kind === 220) { + if (node.kind === 221 || node.kind === 222) { return 0; } else if (ts.isConstEnumDeclaration(node)) { return 2; } - else if ((node.kind === 226 || node.kind === 225) && !(node.flags & 1)) { + else if ((node.kind === 229 || node.kind === 228) && !(node.flags & 1)) { return 0; } - else if (node.kind === 223) { - var state = 0; + else if (node.kind === 225) { + var state_1 = 0; ts.forEachChild(node, function (n) { switch (getModuleInstanceState(n)) { case 0: return false; case 2: - state = 2; + state_1 = 2; return false; case 1: - state = 1; + state_1 = 1; return true; } }); - return state; + return state_1; } - else if (node.kind === 222) { + else if (node.kind === 224) { return getModuleInstanceState(node.body); } else { @@ -10531,6 +10753,7 @@ var ts; var hasAsyncFunctions; var hasDecorators; var hasParameterDecorators; + var hasJsxSpreadAttribute; var inStrictMode; var symbolCount = 0; var Symbol; @@ -10561,6 +10784,7 @@ var ts; hasAsyncFunctions = false; hasDecorators = false; hasParameterDecorators = false; + hasJsxSpreadAttribute = false; } return bindSourceFile; function createSymbol(flags, name) { @@ -10583,7 +10807,7 @@ var ts; if (symbolFlags & 107455) { var valueDeclaration = symbol.valueDeclaration; if (!valueDeclaration || - (valueDeclaration.kind !== node.kind && valueDeclaration.kind === 222)) { + (valueDeclaration.kind !== node.kind && valueDeclaration.kind === 224)) { symbol.valueDeclaration = node; } } @@ -10593,7 +10817,7 @@ var ts; if (ts.isAmbientModule(node)) { return ts.isGlobalScopeAugmentation(node) ? "__global" : "\"" + node.name.text + "\""; } - if (node.name.kind === 138) { + if (node.name.kind === 139) { var nameExpression = node.name.expression; if (ts.isStringOrNumericLiteral(nameExpression.kind)) { return nameExpression.text; @@ -10604,21 +10828,21 @@ var ts; return node.name.text; } switch (node.kind) { - case 146: + case 147: return "__constructor"; - case 154: - case 149: - return "__call"; case 155: case 150: - return "__new"; + return "__call"; + case 156: case 151: + return "__new"; + case 152: return "__index"; - case 232: + case 235: return "__export"; - case 231: + case 234: return node.isExportEquals ? "export=" : "default"; - case 185: + case 186: switch (ts.getSpecialPropertyAssignmentKind(node)) { case 2: return "export="; @@ -10630,13 +10854,13 @@ var ts; } ts.Debug.fail("Unknown binary declaration kind"); break; - case 217: - case 218: + case 219: + case 220: return node.flags & 512 ? "default" : undefined; - case 265: + case 268: return ts.isJSDocConstructSignature(node) ? "__new" : "__call"; - case 140: - ts.Debug.assert(node.parent.kind === 265); + case 141: + ts.Debug.assert(node.parent.kind === 268); var functionType = node.parent; var index = ts.indexOf(functionType.parameters, node); return "p" + index; @@ -10661,18 +10885,18 @@ var ts; if (node.name) { node.name.parent = node; } - var message = symbol.flags & 2 + var message_1 = symbol.flags & 2 ? ts.Diagnostics.Cannot_redeclare_block_scoped_variable_0 : ts.Diagnostics.Duplicate_identifier_0; ts.forEach(symbol.declarations, function (declaration) { if (declaration.flags & 512) { - message = ts.Diagnostics.A_module_cannot_have_multiple_default_exports; + message_1 = ts.Diagnostics.A_module_cannot_have_multiple_default_exports; } }); ts.forEach(symbol.declarations, function (declaration) { - file.bindDiagnostics.push(ts.createDiagnosticForNode(declaration.name || declaration, message, getDisplayName(declaration))); + file.bindDiagnostics.push(ts.createDiagnosticForNode(declaration.name || declaration, message_1, getDisplayName(declaration))); }); - file.bindDiagnostics.push(ts.createDiagnosticForNode(node.name || node, message, getDisplayName(node))); + file.bindDiagnostics.push(ts.createDiagnosticForNode(node.name || node, message_1, getDisplayName(node))); symbol = createSymbol(0, name); } } @@ -10686,7 +10910,7 @@ var ts; function declareModuleMember(node, symbolFlags, symbolExcludes) { var hasExportModifier = ts.getCombinedNodeFlags(node) & 1; if (symbolFlags & 8388608) { - if (node.kind === 234 || (node.kind === 225 && hasExportModifier)) { + if (node.kind === 237 || (node.kind === 228 && hasExportModifier)) { return declareSymbol(container.symbol.exports, container.symbol, node, symbolFlags, symbolExcludes); } else { @@ -10734,10 +10958,10 @@ var ts; var flags = node.flags; flags &= ~98304; flags &= ~3932160; - if (kind === 219) { + if (kind === 221) { seenThisKeyword = false; } - var saveState = kind === 252 || kind === 223 || ts.isFunctionLikeKind(kind); + var saveState = kind === 255 || kind === 225 || ts.isFunctionLikeKind(kind); if (saveState) { savedReachabilityState = currentReachabilityState; savedLabelStack = labelStack; @@ -10758,10 +10982,10 @@ var ts; flags |= 65536; } } - if (kind === 219) { + if (kind === 221) { flags = seenThisKeyword ? flags | 16384 : flags & ~16384; } - if (kind === 252) { + if (kind === 255) { if (hasClassExtends) { flags |= 262144; } @@ -10774,6 +10998,9 @@ var ts; if (hasAsyncFunctions) { flags |= 2097152; } + if (hasJsxSpreadAttribute) { + flags |= 1073741824; + } } node.flags = flags; if (saveState) { @@ -10793,40 +11020,40 @@ var ts; return; } switch (node.kind) { - case 202: + case 204: bindWhileStatement(node); break; - case 201: + case 203: bindDoStatement(node); break; - case 203: + case 205: bindForStatement(node); break; - case 204: - case 205: + case 206: + case 207: bindForInOrForOfStatement(node); break; - case 200: + case 202: bindIfStatement(node); break; - case 208: - case 212: + case 210: + case 214: bindReturnOrThrow(node); break; - case 207: - case 206: + case 209: + case 208: bindBreakOrContinueStatement(node); break; - case 213: + case 215: bindTryStatement(node); break; - case 210: + case 212: bindSwitchStatement(node); break; - case 224: + case 226: bindCaseBlock(node); break; - case 211: + case 213: bindLabeledStatement(node); break; default: @@ -10888,14 +11115,14 @@ var ts; } function bindReturnOrThrow(n) { bind(n.expression); - if (n.kind === 208) { + if (n.kind === 210) { hasExplicitReturn = true; } currentReachabilityState = 4; } function bindBreakOrContinueStatement(n) { bind(n.label); - var isValidJump = jumpToLabel(n.label, n.kind === 207 ? currentReachabilityState : 4); + var isValidJump = jumpToLabel(n.label, n.kind === 209 ? currentReachabilityState : 4); if (isValidJump) { currentReachabilityState = 4; } @@ -10909,24 +11136,27 @@ var ts; var postCatchState = currentReachabilityState; currentReachabilityState = preTryState; bind(n.finallyBlock); - currentReachabilityState = or(postTryState, postCatchState); + currentReachabilityState = n.catchClause ? or(postTryState, postCatchState) : postTryState; } function bindSwitchStatement(n) { var preSwitchState = currentReachabilityState; var postSwitchLabel = pushImplicitLabel(); bind(n.expression); bind(n.caseBlock); - var hasDefault = ts.forEach(n.caseBlock.clauses, function (c) { return c.kind === 246; }); + var hasDefault = ts.forEach(n.caseBlock.clauses, function (c) { return c.kind === 249; }); var postSwitchState = hasDefault && currentReachabilityState !== 2 ? 4 : preSwitchState; popImplicitLabel(postSwitchLabel, postSwitchState); } function bindCaseBlock(n) { var startState = currentReachabilityState; - for (var _i = 0, _a = n.clauses; _i < _a.length; _i++) { - var clause = _a[_i]; + for (var i = 0; i < n.clauses.length; i++) { + var clause = n.clauses[i]; currentReachabilityState = startState; bind(clause); - if (clause.statements.length && currentReachabilityState === 2 && options.noFallthroughCasesInSwitch) { + if (clause.statements.length && + i !== n.clauses.length - 1 && + currentReachabilityState === 2 && + options.noFallthroughCasesInSwitch) { errorOnFirstToken(clause, ts.Diagnostics.Fallthrough_case_in_switch); } } @@ -10941,38 +11171,39 @@ var ts; } function getContainerFlags(node) { switch (node.kind) { - case 190: - case 218: - case 219: + case 191: + case 220: case 221: - case 169: - case 157: - case 261: + case 223: + case 170: + case 158: + case 264: return 1; - case 149: case 150: case 151: - case 145: - case 144: - case 217: + case 152: case 146: + case 145: + case 219: case 147: case 148: - case 154: + case 149: case 155: - case 177: + case 268: + case 156: case 178: - case 222: - case 252: - case 220: - return 5; - case 248: - case 203: - case 204: - case 205: + case 179: case 224: + case 255: + case 222: + return 5; + case 251: + case 205: + case 206: + case 207: + case 226: return 2; - case 196: + case 198: return ts.isFunctionLike(node.parent) ? 0 : 2; } return 0; @@ -10988,35 +11219,35 @@ var ts; } function declareSymbolAndAddToSymbolTableWorker(node, symbolFlags, symbolExcludes) { switch (container.kind) { - case 222: + case 224: return declareModuleMember(node, symbolFlags, symbolExcludes); - case 252: + case 255: return declareSourceFileMember(node, symbolFlags, symbolExcludes); - case 190: - case 218: + case 191: + case 220: return declareClassMember(node, symbolFlags, symbolExcludes); - case 221: + case 223: return declareSymbol(container.symbol.exports, container.symbol, node, symbolFlags, symbolExcludes); - case 157: - case 169: - case 219: - case 261: + case 158: + case 170: + case 221: + case 264: return declareSymbol(container.symbol.members, container.symbol, node, symbolFlags, symbolExcludes); - case 154: case 155: - case 149: + case 156: case 150: case 151: - case 145: - case 144: + case 152: case 146: + case 145: case 147: case 148: - case 217: - case 177: + case 149: + case 219: case 178: - case 265: - case 220: + case 179: + case 268: + case 222: return declareSymbol(container.locals, undefined, node, symbolFlags, symbolExcludes); } } @@ -11031,11 +11262,11 @@ var ts; : declareSymbol(file.locals, undefined, node, symbolFlags, symbolExcludes); } function hasExportDeclarations(node) { - var body = node.kind === 252 ? node : node.body; - if (body.kind === 252 || body.kind === 223) { + var body = node.kind === 255 ? node : node.body; + if (body.kind === 255 || body.kind === 225) { for (var _i = 0, _a = body.statements; _i < _a.length; _i++) { var stat = _a[_i]; - if (stat.kind === 232 || stat.kind === 231) { + if (stat.kind === 235 || stat.kind === 234) { return true; } } @@ -11056,7 +11287,12 @@ var ts; if (node.flags & 1) { errorOnFirstToken(node, ts.Diagnostics.export_modifier_cannot_be_applied_to_ambient_modules_and_module_augmentations_since_they_are_always_visible); } - declareSymbolAndAddToSymbolTable(node, 512, 106639); + if (ts.isExternalModuleAugmentation(node)) { + declareSymbolAndAddToSymbolTable(node, 1024, 0); + } + else { + declareSymbolAndAddToSymbolTable(node, 512, 106639); + } } else { var state = getModuleInstanceState(node); @@ -11097,7 +11333,7 @@ var ts; continue; } var identifier = prop.name; - var currentKind = prop.kind === 249 || prop.kind === 250 || prop.kind === 145 + var currentKind = prop.kind === 252 || prop.kind === 253 || prop.kind === 146 ? 1 : 2; var existingKind = seen[identifier.text]; @@ -11119,10 +11355,10 @@ var ts; } function bindBlockScopedDeclaration(node, symbolFlags, symbolExcludes) { switch (blockScopeContainer.kind) { - case 222: + case 224: declareModuleMember(node, symbolFlags, symbolExcludes); break; - case 252: + case 255: if (ts.isExternalModule(container)) { declareModuleMember(node, symbolFlags, symbolExcludes); break; @@ -11244,17 +11480,17 @@ var ts; } function updateStrictMode(node) { switch (node.kind) { - case 252: - case 223: + case 255: + case 225: updateStrictModeStatementList(node.statements); return; - case 196: + case 198: if (ts.isFunctionLike(node.parent)) { updateStrictModeStatementList(node.statements); } return; - case 218: - case 190: + case 220: + case 191: inStrictMode = true; return; } @@ -11273,13 +11509,13 @@ var ts; } function isUseStrictPrologueDirective(node) { var nodeText = ts.getTextOfNodeFromSourceText(file.text, node.expression); - return nodeText === "\"use strict\"" || nodeText === "'use strict'"; + return nodeText === '"use strict"' || nodeText === "'use strict'"; } function bindWorker(node) { switch (node.kind) { case 69: return checkStrictModeIdentifier(node); - case 185: + case 186: if (ts.isInJavaScriptFile(node)) { var specialKind = ts.getSpecialPropertyAssignmentKind(node); switch (specialKind) { @@ -11302,94 +11538,99 @@ var ts; } } return checkStrictModeBinaryExpression(node); - case 248: + case 251: return checkStrictModeCatchClause(node); - case 179: + case 180: return checkStrictModeDeleteExpression(node); case 8: return checkStrictModeNumericLiteral(node); - case 184: + case 185: return checkStrictModePostfixUnaryExpression(node); - case 183: + case 184: return checkStrictModePrefixUnaryExpression(node); - case 209: + case 211: return checkStrictModeWithStatement(node); - case 163: + case 164: seenThisKeyword = true; return; - case 152: + case 153: return checkTypePredicate(node); - case 139: - return declareSymbolAndAddToSymbolTable(node, 262144, 530912); case 140: + return declareSymbolAndAddToSymbolTable(node, 262144, 530912); + case 141: return bindParameter(node); - case 215: - case 167: + case 217: + case 168: return bindVariableDeclarationOrBindingElement(node); + case 144: case 143: - case 142: - case 262: + case 265: return bindPropertyOrMethodOrAccessor(node, 4 | (node.questionToken ? 536870912 : 0), 107455); - case 249: - case 250: + case 252: + case 253: return bindPropertyOrMethodOrAccessor(node, 4, 107455); - case 251: + case 254: return bindPropertyOrMethodOrAccessor(node, 8, 107455); - case 149: + case 246: + hasJsxSpreadAttribute = true; + return; case 150: case 151: + case 152: return declareSymbolAndAddToSymbolTable(node, 131072, 0); - case 145: - case 144: - return bindPropertyOrMethodOrAccessor(node, 8192 | (node.questionToken ? 536870912 : 0), ts.isObjectLiteralMethod(node) ? 107455 : 99263); - case 217: - return bindFunctionDeclaration(node); case 146: - return declareSymbolAndAddToSymbolTable(node, 16384, 0); + case 145: + return bindPropertyOrMethodOrAccessor(node, 8192 | (node.questionToken ? 536870912 : 0), ts.isObjectLiteralMethod(node) ? 107455 : 99263); + case 219: + return bindFunctionDeclaration(node); case 147: - return bindPropertyOrMethodOrAccessor(node, 32768, 41919); + return declareSymbolAndAddToSymbolTable(node, 16384, 0); case 148: + return bindPropertyOrMethodOrAccessor(node, 32768, 41919); + case 149: return bindPropertyOrMethodOrAccessor(node, 65536, 74687); - case 154: case 155: - case 265: + case 156: + case 268: return bindFunctionOrConstructorType(node); - case 157: - case 261: + case 158: + case 264: return bindAnonymousDeclaration(node, 2048, "__type"); - case 169: + case 170: return bindObjectLiteralExpression(node); - case 177: case 178: + case 179: return bindFunctionExpression(node); - case 172: + case 173: if (ts.isInJavaScriptFile(node)) { bindCallExpression(node); } break; - case 190: - case 218: - return bindClassLikeDeclaration(node); - case 219: - return bindBlockScopedDeclaration(node, 64, 792960); + case 191: case 220: - return bindBlockScopedDeclaration(node, 524288, 793056); + return bindClassLikeDeclaration(node); case 221: - return bindEnumDeclaration(node); + return bindBlockScopedDeclaration(node, 64, 792960); case 222: + return bindBlockScopedDeclaration(node, 524288, 793056); + case 223: + return bindEnumDeclaration(node); + case 224: return bindModuleDeclaration(node); - case 225: case 228: - case 230: - case 234: + case 231: + case 233: + case 237: return declareSymbolAndAddToSymbolTable(node, 8388608, 8388608); case 227: + return bindGlobalModuleExportDeclaration(node); + case 230: return bindImportClause(node); - case 232: + case 235: return bindExportDeclaration(node); - case 231: + case 234: return bindExportAssignment(node); - case 252: + case 255: return bindSourceFileIfExternalModule(); } } @@ -11398,7 +11639,7 @@ var ts; if (parameterName && parameterName.kind === 69) { checkStrictModeIdentifier(parameterName); } - if (parameterName && parameterName.kind === 163) { + if (parameterName && parameterName.kind === 164) { seenThisKeyword = true; } bind(type); @@ -11413,17 +11654,39 @@ var ts; bindAnonymousDeclaration(file, 512, "\"" + ts.removeFileExtension(file.fileName) + "\""); } function bindExportAssignment(node) { - var boundExpression = node.kind === 231 ? node.expression : node.right; + var boundExpression = node.kind === 234 ? node.expression : node.right; if (!container.symbol || !container.symbol.exports) { bindAnonymousDeclaration(node, 8388608, getDeclarationName(node)); } - else if (boundExpression.kind === 69 && node.kind === 231) { + else if (boundExpression.kind === 69 && node.kind === 234) { declareSymbol(container.symbol.exports, container.symbol, node, 8388608, 107455 | 8388608); } else { declareSymbol(container.symbol.exports, container.symbol, node, 4, 107455 | 8388608); } } + function bindGlobalModuleExportDeclaration(node) { + if (node.modifiers && node.modifiers.length) { + file.bindDiagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.Modifiers_cannot_appear_here)); + } + if (node.parent.kind !== 255) { + file.bindDiagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.Global_module_exports_may_only_appear_at_top_level)); + return; + } + else { + var parent_4 = node.parent; + if (!ts.isExternalModule(parent_4)) { + file.bindDiagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.Global_module_exports_may_only_appear_in_module_files)); + return; + } + if (!parent_4.isDeclarationFile) { + file.bindDiagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.Global_module_exports_may_only_appear_in_declaration_files)); + return; + } + } + file.symbol.globalExports = file.symbol.globalExports || {}; + declareSymbol(file.symbol.globalExports, file.symbol, node, 8388608, 8388608); + } function bindExportDeclaration(node) { if (!container.symbol || !container.symbol.exports) { bindAnonymousDeclaration(node, 1073741824, getDeclarationName(node)); @@ -11449,10 +11712,10 @@ var ts; } function bindModuleExportsAssignment(node) { setCommonJsModuleIndicator(node); - bindExportAssignment(node); + declareSymbol(file.symbol.exports, file.symbol, node, 4 | 7340032 | 512, 0); } function bindThisPropertyAssignment(node) { - if (container.kind === 177 || container.kind === 217) { + if (container.kind === 178 || container.kind === 219) { container.symbol.members = container.symbol.members || {}; declareSymbol(container.symbol.members, container.symbol, node, 4, 107455 & ~4); } @@ -11487,7 +11750,7 @@ var ts; hasDecorators = true; } } - if (node.kind === 218) { + if (node.kind === 220) { bindBlockScopedDeclaration(node, 32, 899519); } else { @@ -11637,15 +11900,15 @@ var ts; function checkUnreachable(node) { switch (currentReachabilityState) { case 4: - var reportError = (ts.isStatement(node) && node.kind !== 198) || - node.kind === 218 || - (node.kind === 222 && shouldReportErrorOnModuleDeclaration(node)) || - (node.kind === 221 && (!ts.isConstEnumDeclaration(node) || options.preserveConstEnums)); + var reportError = (ts.isStatement(node) && node.kind !== 200) || + node.kind === 220 || + (node.kind === 224 && shouldReportErrorOnModuleDeclaration(node)) || + (node.kind === 223 && (!ts.isConstEnumDeclaration(node) || options.preserveConstEnums)); if (reportError) { currentReachabilityState = 8; var reportUnreachableCode = !options.allowUnreachableCode && !ts.isInAmbientContext(node) && - (node.kind !== 197 || + (node.kind !== 199 || ts.getCombinedNodeFlags(node.declarationList) & 3072 || ts.forEach(node.declarationList.declarations, function (d) { return d.initializer; })); if (reportUnreachableCode) { @@ -11708,6 +11971,7 @@ var ts; var languageVersion = compilerOptions.target || 0; var modulekind = ts.getEmitModuleKind(compilerOptions); var allowSyntheticDefaultImports = typeof compilerOptions.allowSyntheticDefaultImports !== "undefined" ? compilerOptions.allowSyntheticDefaultImports : modulekind === ts.ModuleKind.System; + var strictNullChecks = compilerOptions.strictNullChecks; var emitResolver = createResolver(); var undefinedSymbol = createSymbol(4 | 67108864, "undefined"); undefinedSymbol.declarations = []; @@ -11722,7 +11986,7 @@ var ts; isUnknownSymbol: function (symbol) { return symbol === unknownSymbol; }, getDiagnostics: getDiagnostics, getGlobalDiagnostics: getGlobalDiagnostics, - getTypeOfSymbolAtLocation: getNarrowedTypeOfSymbol, + getTypeOfSymbolAtLocation: getTypeOfSymbolAtLocation, getSymbolsOfParameterPropertyDeclaration: getSymbolsOfParameterPropertyDeclaration, getDeclaredTypeOfSymbol: getDeclaredTypeOfSymbol, getPropertiesOfType: getPropertiesOfType, @@ -11757,14 +12021,16 @@ var ts; }; var unknownSymbol = createSymbol(4 | 67108864, "unknown"); var resolvingSymbol = createSymbol(67108864, "__resolving__"); + var nullableWideningFlags = strictNullChecks ? 0 : 2097152; var anyType = createIntrinsicType(1, "any"); var stringType = createIntrinsicType(2, "string"); var numberType = createIntrinsicType(4, "number"); var booleanType = createIntrinsicType(8, "boolean"); var esSymbolType = createIntrinsicType(16777216, "symbol"); var voidType = createIntrinsicType(16, "void"); - var undefinedType = createIntrinsicType(32 | 2097152, "undefined"); - var nullType = createIntrinsicType(64 | 2097152, "null"); + var undefinedType = createIntrinsicType(32 | nullableWideningFlags, "undefined"); + var nullType = createIntrinsicType(64 | nullableWideningFlags, "null"); + var emptyArrayElementType = createIntrinsicType(32 | 2097152, "undefined"); var unknownType = createIntrinsicType(1, "unknown"); var emptyObjectType = createAnonymousType(undefined, emptySymbols, emptyArray, emptyArray, undefined, undefined); var emptyUnionType = emptyObjectType; @@ -11773,11 +12039,11 @@ var ts; var anyFunctionType = createAnonymousType(undefined, emptySymbols, emptyArray, emptyArray, undefined, undefined); anyFunctionType.flags |= 8388608; var noConstraintType = createAnonymousType(undefined, emptySymbols, emptyArray, emptyArray, undefined, undefined); - var anySignature = createSignature(undefined, undefined, emptyArray, anyType, undefined, 0, false, false); - var unknownSignature = createSignature(undefined, undefined, emptyArray, unknownType, undefined, 0, false, false); + var anySignature = createSignature(undefined, undefined, undefined, emptyArray, anyType, undefined, 0, false, false); + var unknownSignature = createSignature(undefined, undefined, undefined, emptyArray, unknownType, undefined, 0, false, false); var enumNumberIndexInfo = createIndexInfo(stringType, true); var globals = {}; - var globalESSymbolConstructorSymbol; + var getGlobalESSymbolConstructorSymbol; var getGlobalPromiseConstructorSymbol; var globalObjectType; var globalFunctionType; @@ -11787,13 +12053,13 @@ var ts; var globalNumberType; var globalBooleanType; var globalRegExpType; - var globalTemplateStringsArrayType; - var globalESSymbolType; - var globalIterableType; - var globalIteratorType; - var globalIterableIteratorType; var anyArrayType; var anyReadonlyArrayType; + var getGlobalTemplateStringsArrayType; + var getGlobalESSymbolType; + var getGlobalIterableType; + var getGlobalIteratorType; + var getGlobalIterableIteratorType; var getGlobalClassDecoratorType; var getGlobalParameterDecoratorType; var getGlobalPropertyDecoratorType; @@ -11855,6 +12121,7 @@ var ts; }; var subtypeRelation = {}; var assignableRelation = {}; + var comparableRelation = {}; var identityRelation = {}; var _displayBuilder; var builtinGlobals = (_a = {}, @@ -11943,7 +12210,7 @@ var ts; target.flags |= source.flags; if (source.valueDeclaration && (!target.valueDeclaration || - (target.valueDeclaration.kind === 222 && source.valueDeclaration.kind !== 222))) { + (target.valueDeclaration.kind === 224 && source.valueDeclaration.kind !== 224))) { target.valueDeclaration = source.valueDeclaration; } ts.forEach(source.declarations, function (node) { @@ -11962,13 +12229,13 @@ var ts; recordMergedSymbol(target, source); } else { - var message = target.flags & 2 || source.flags & 2 + var message_2 = target.flags & 2 || source.flags & 2 ? ts.Diagnostics.Cannot_redeclare_block_scoped_variable_0 : ts.Diagnostics.Duplicate_identifier_0; ts.forEach(source.declarations, function (node) { - error(node.name ? node.name : node, message, symbolToString(source)); + error(node.name ? node.name : node, message_2, symbolToString(source)); }); ts.forEach(target.declarations, function (node) { - error(node.name ? node.name : node, message, symbolToString(source)); + error(node.name ? node.name : node, message_2, symbolToString(source)); }); } } @@ -11999,7 +12266,7 @@ var ts; } function mergeModuleAugmentation(moduleName) { var moduleAugmentation = moduleName.parent; - if (moduleAugmentation.symbol.valueDeclaration !== moduleAugmentation) { + if (moduleAugmentation.symbol.declarations[0] !== moduleAugmentation) { ts.Debug.assert(moduleAugmentation.symbol.declarations.length > 1); return; } @@ -12047,7 +12314,7 @@ var ts; return nodeLinks[nodeId] || (nodeLinks[nodeId] = {}); } function isGlobalSourceFile(node) { - return node.kind === 252 && !ts.isExternalOrCommonJsModule(node); + return node.kind === 255 && !ts.isExternalOrCommonJsModule(node); } function getSymbol(symbols, name, meaning) { if (meaning && ts.hasProperty(symbols, name)) { @@ -12085,18 +12352,18 @@ var ts; return ts.indexOf(sourceFiles, declarationFile) <= ts.indexOf(sourceFiles, useFile); } if (declaration.pos <= usage.pos) { - return declaration.kind !== 215 || + return declaration.kind !== 217 || !isImmediatelyUsedInInitializerOfBlockScopedVariable(declaration, usage); } return isUsedInFunctionOrNonStaticProperty(declaration, usage); function isImmediatelyUsedInInitializerOfBlockScopedVariable(declaration, usage) { var container = ts.getEnclosingBlockScopeContainer(declaration); - if (declaration.parent.parent.kind === 197 || - declaration.parent.parent.kind === 203) { + if (declaration.parent.parent.kind === 199 || + declaration.parent.parent.kind === 205) { return isSameScopeDescendentOf(usage, declaration, container); } - else if (declaration.parent.parent.kind === 205 || - declaration.parent.parent.kind === 204) { + else if (declaration.parent.parent.kind === 207 || + declaration.parent.parent.kind === 206) { var expression = declaration.parent.parent.expression; return isSameScopeDescendentOf(usage, expression, container); } @@ -12112,7 +12379,7 @@ var ts; return true; } var initializerOfNonStaticProperty = current.parent && - current.parent.kind === 143 && + current.parent.kind === 144 && (current.parent.flags & 32) === 0 && current.parent.initializer === current; if (initializerOfNonStaticProperty) { @@ -12134,18 +12401,18 @@ var ts; if (result = getSymbol(location.locals, name, meaning)) { var useResult = true; if (ts.isFunctionLike(location) && lastLocation && lastLocation !== location.body) { - if (meaning & result.flags & 793056 && lastLocation.kind !== 269) { + if (meaning & result.flags & 793056 && lastLocation.kind !== 272) { useResult = result.flags & 262144 ? lastLocation === location.type || - lastLocation.kind === 140 || - lastLocation.kind === 139 + lastLocation.kind === 141 || + lastLocation.kind === 140 : false; } if (meaning & 107455 && result.flags & 1) { useResult = - lastLocation.kind === 140 || + lastLocation.kind === 141 || (lastLocation === location.type && - result.valueDeclaration.kind === 140); + result.valueDeclaration.kind === 141); } } if (useResult) { @@ -12157,12 +12424,12 @@ var ts; } } switch (location.kind) { - case 252: + case 255: if (!ts.isExternalOrCommonJsModule(location)) break; - case 222: + case 224: var moduleExports = getSymbolOfNode(location).exports; - if (location.kind === 252 || ts.isAmbientModule(location)) { + if (location.kind === 255 || ts.isAmbientModule(location)) { if (result = moduleExports["default"]) { var localSymbol = ts.getLocalSymbolForExportDefault(result); if (localSymbol && (result.flags & meaning) && localSymbol.name === name) { @@ -12172,7 +12439,7 @@ var ts; } if (ts.hasProperty(moduleExports, name) && moduleExports[name].flags === 8388608 && - ts.getDeclarationOfKind(moduleExports[name], 234)) { + ts.getDeclarationOfKind(moduleExports[name], 237)) { break; } } @@ -12180,13 +12447,13 @@ var ts; break loop; } break; - case 221: + case 223: if (result = getSymbol(getSymbolOfNode(location).exports, name, meaning & 8)) { break loop; } break; + case 144: case 143: - case 142: if (ts.isClassLike(location.parent) && !(location.flags & 32)) { var ctor = findConstructorDeclaration(location.parent); if (ctor && ctor.locals) { @@ -12196,9 +12463,9 @@ var ts; } } break; - case 218: - case 190: - case 219: + case 220: + case 191: + case 221: if (result = getSymbol(getSymbolOfNode(location).members, name, meaning & 793056)) { if (lastLocation && lastLocation.flags & 32) { error(errorLocation, ts.Diagnostics.Static_members_cannot_reference_class_type_parameters); @@ -12206,7 +12473,7 @@ var ts; } break loop; } - if (location.kind === 190 && meaning & 32) { + if (location.kind === 191 && meaning & 32) { var className = location.name; if (className && name === className.text) { result = location.symbol; @@ -12214,28 +12481,28 @@ var ts; } } break; - case 138: + case 139: grandparent = location.parent.parent; - if (ts.isClassLike(grandparent) || grandparent.kind === 219) { + if (ts.isClassLike(grandparent) || grandparent.kind === 221) { if (result = getSymbol(getSymbolOfNode(grandparent).members, name, meaning & 793056)) { error(errorLocation, ts.Diagnostics.A_computed_property_name_cannot_reference_a_type_parameter_from_its_containing_type); return undefined; } } break; - case 145: - case 144: case 146: + case 145: case 147: case 148: - case 217: - case 178: + case 149: + case 219: + case 179: if (meaning & 3 && name === "arguments") { result = argumentsSymbol; break loop; } break; - case 177: + case 178: if (meaning & 3 && name === "arguments") { result = argumentsSymbol; break loop; @@ -12248,8 +12515,8 @@ var ts; } } break; - case 141: - if (location.parent && location.parent.kind === 140) { + case 142: + if (location.parent && location.parent.kind === 141) { location = location.parent; } if (location.parent && ts.isClassElement(location.parent)) { @@ -12319,7 +12586,7 @@ var ts; ts.Debug.assert((result.flags & 2) !== 0); var declaration = ts.forEach(result.declarations, function (d) { return ts.isBlockOrCatchScoped(d) ? d : undefined; }); ts.Debug.assert(declaration !== undefined, "Block-scoped variable declaration is undefined"); - if (!isBlockScopedNameDeclaredBeforeUse(ts.getAncestor(declaration, 215), errorLocation)) { + if (!isBlockScopedNameDeclaredBeforeUse(ts.getAncestor(declaration, 217), errorLocation)) { error(errorLocation, ts.Diagnostics.Block_scoped_variable_0_used_before_its_declaration, ts.declarationNameToString(declaration.name)); } } @@ -12336,10 +12603,10 @@ var ts; } function getAnyImportSyntax(node) { if (ts.isAliasSymbolDeclaration(node)) { - if (node.kind === 225) { + if (node.kind === 228) { return node; } - while (node && node.kind !== 226) { + while (node && node.kind !== 229) { node = node.parent; } return node; @@ -12349,7 +12616,7 @@ var ts; return ts.forEach(symbol.declarations, function (d) { return ts.isAliasSymbolDeclaration(d) ? d : undefined; }); } function getTargetOfImportEqualsDeclaration(node) { - if (node.moduleReference.kind === 236) { + if (node.moduleReference.kind === 239) { return resolveExternalModuleSymbol(resolveExternalModuleName(node, ts.getExternalModuleImportEqualsDeclarationExpression(node))); } return getSymbolOfPartOfRightHandSideOfImportEquals(node.moduleReference, node); @@ -12357,7 +12624,9 @@ var ts; function getTargetOfImportClause(node) { var moduleSymbol = resolveExternalModuleName(node, node.parent.moduleSpecifier); if (moduleSymbol) { - var exportDefaultSymbol = resolveSymbol(moduleSymbol.exports["default"]); + var exportDefaultSymbol = moduleSymbol.exports["export="] ? + getPropertyOfType(getTypeOfSymbol(moduleSymbol.exports["export="]), "default") : + resolveSymbol(moduleSymbol.exports["default"]); if (!exportDefaultSymbol && !allowSyntheticDefaultImports) { error(node.name, ts.Diagnostics.Module_0_has_no_default_export, symbolToString(moduleSymbol)); } @@ -12408,8 +12677,14 @@ var ts; if (targetSymbol) { var name_9 = specifier.propertyName || specifier.name; if (name_9.text) { + var symbolFromVariable = void 0; + if (moduleSymbol && moduleSymbol.exports && moduleSymbol.exports["export="]) { + symbolFromVariable = getPropertyOfType(getTypeOfSymbol(targetSymbol), name_9.text); + } + else { + symbolFromVariable = getPropertyOfVariable(targetSymbol, name_9.text); + } var symbolFromModule = getExportOfModule(targetSymbol, name_9.text); - var symbolFromVariable = getPropertyOfVariable(targetSymbol, name_9.text); var symbol = symbolFromModule && symbolFromVariable ? combineValueAndTypeSymbols(symbolFromVariable, symbolFromModule) : symbolFromModule || symbolFromVariable; @@ -12423,6 +12698,9 @@ var ts; function getTargetOfImportSpecifier(node) { return getExternalModuleMember(node.parent.parent.parent, node); } + function getTargetOfGlobalModuleExportDeclaration(node) { + return resolveExternalModuleSymbol(node.parent.symbol); + } function getTargetOfExportSpecifier(node) { return node.parent.parent.moduleSpecifier ? getExternalModuleMember(node.parent.parent, node) : @@ -12433,18 +12711,20 @@ var ts; } function getTargetOfAliasDeclaration(node) { switch (node.kind) { - case 225: - return getTargetOfImportEqualsDeclaration(node); - case 227: - return getTargetOfImportClause(node); case 228: - return getTargetOfNamespaceImport(node); + return getTargetOfImportEqualsDeclaration(node); case 230: - return getTargetOfImportSpecifier(node); - case 234: - return getTargetOfExportSpecifier(node); + return getTargetOfImportClause(node); case 231: + return getTargetOfNamespaceImport(node); + case 233: + return getTargetOfImportSpecifier(node); + case 237: + return getTargetOfExportSpecifier(node); + case 234: return getTargetOfExportAssignment(node); + case 227: + return getTargetOfGlobalModuleExportDeclaration(node); } } function resolveSymbol(symbol) { @@ -12485,10 +12765,10 @@ var ts; if (!links.referenced) { links.referenced = true; var node = getDeclarationOfAliasSymbol(symbol); - if (node.kind === 231) { + if (node.kind === 234) { checkExpressionCached(node.expression); } - else if (node.kind === 234) { + else if (node.kind === 237) { checkExpressionCached(node.propertyName || node.name); } else if (ts.isInternalModuleImportEqualsDeclaration(node)) { @@ -12498,17 +12778,17 @@ var ts; } function getSymbolOfPartOfRightHandSideOfImportEquals(entityName, importDeclaration) { if (!importDeclaration) { - importDeclaration = ts.getAncestor(entityName, 225); + importDeclaration = ts.getAncestor(entityName, 228); ts.Debug.assert(importDeclaration !== undefined); } if (entityName.kind === 69 && ts.isRightSideOfQualifiedNameOrPropertyAccess(entityName)) { entityName = entityName.parent; } - if (entityName.kind === 69 || entityName.parent.kind === 137) { + if (entityName.kind === 69 || entityName.parent.kind === 138) { return resolveEntityName(entityName, 1536); } else { - ts.Debug.assert(entityName.parent.kind === 225); + ts.Debug.assert(entityName.parent.kind === 228); return resolveEntityName(entityName, 107455 | 793056 | 1536); } } @@ -12527,9 +12807,9 @@ var ts; return undefined; } } - else if (name.kind === 137 || name.kind === 170) { - var left = name.kind === 137 ? name.left : name.expression; - var right = name.kind === 137 ? name.right : name.name; + else if (name.kind === 138 || name.kind === 171) { + var left = name.kind === 138 ? name.left : name.expression; + var right = name.kind === 138 ? name.right : name.name; var namespace = resolveEntityName(left, 1536, ignoreErrors); if (!namespace || namespace === unknownSymbol || ts.nodeIsMissing(right)) { return undefined; @@ -12562,7 +12842,7 @@ var ts; } var isRelative = ts.isExternalModuleNameRelative(moduleName); if (!isRelative) { - var symbol = getSymbol(globals, "\"" + moduleName + "\"", 512); + var symbol = getSymbol(globals, '"' + moduleName + '"', 512); if (symbol) { return getMergedSymbol(symbol); } @@ -12692,7 +12972,7 @@ var ts; var members = node.members; for (var _i = 0, members_1 = members; _i < members_1.length; _i++) { var member = members_1[_i]; - if (member.kind === 146 && ts.nodeIsPresent(member.body)) { + if (member.kind === 147 && ts.nodeIsPresent(member.body)) { return member; } } @@ -12758,21 +13038,15 @@ var ts; } } switch (location_1.kind) { - case 252: + case 255: if (!ts.isExternalOrCommonJsModule(location_1)) { break; } - case 222: + case 224: if (result = callback(getSymbolOfNode(location_1).exports)) { return result; } break; - case 218: - case 219: - if (result = callback(getSymbolOfNode(location_1).members)) { - return result; - } - break; } } return callback(globals); @@ -12801,7 +13075,7 @@ var ts; return ts.forEachValue(symbols, function (symbolFromSymbolTable) { if (symbolFromSymbolTable.flags & 8388608 && symbolFromSymbolTable.name !== "export=" - && !ts.getDeclarationOfKind(symbolFromSymbolTable, 234)) { + && !ts.getDeclarationOfKind(symbolFromSymbolTable, 237)) { if (!useOnlyExternalAliasing || ts.forEach(symbolFromSymbolTable.declarations, ts.isExternalModuleImportEqualsDeclaration)) { var resolvedImportedSymbol = resolveAlias(symbolFromSymbolTable); @@ -12817,7 +13091,9 @@ var ts; }); } if (symbol) { - return forEachSymbolTableInScope(enclosingDeclaration, getAccessibleSymbolChainFromSymbolTable); + if (!(isPropertyOrMethodDeclarationSymbol(symbol))) { + return forEachSymbolTableInScope(enclosingDeclaration, getAccessibleSymbolChainFromSymbolTable); + } } } function needsQualification(symbol, enclosingDeclaration, meaning) { @@ -12830,7 +13106,7 @@ var ts; if (symbolFromSymbolTable === symbol) { return true; } - symbolFromSymbolTable = (symbolFromSymbolTable.flags & 8388608 && !ts.getDeclarationOfKind(symbolFromSymbolTable, 234)) ? resolveAlias(symbolFromSymbolTable) : symbolFromSymbolTable; + symbolFromSymbolTable = (symbolFromSymbolTable.flags & 8388608 && !ts.getDeclarationOfKind(symbolFromSymbolTable, 237)) ? resolveAlias(symbolFromSymbolTable) : symbolFromSymbolTable; if (symbolFromSymbolTable.flags & meaning) { qualify = true; return true; @@ -12839,6 +13115,24 @@ var ts; }); return qualify; } + function isPropertyOrMethodDeclarationSymbol(symbol) { + if (symbol.declarations && symbol.declarations.length) { + for (var _i = 0, _a = symbol.declarations; _i < _a.length; _i++) { + var declaration = _a[_i]; + switch (declaration.kind) { + case 144: + case 146: + case 148: + case 149: + continue; + default: + return false; + } + } + return true; + } + return false; + } function isSymbolAccessible(symbol, enclosingDeclaration, meaning) { if (symbol && enclosingDeclaration && !(symbol.flags & 262144)) { var initialSymbol = symbol; @@ -12885,7 +13179,7 @@ var ts; } } function hasExternalModuleSymbol(declaration) { - return ts.isAmbientModule(declaration) || (declaration.kind === 252 && ts.isExternalOrCommonJsModule(declaration)); + return ts.isAmbientModule(declaration) || (declaration.kind === 255 && ts.isExternalOrCommonJsModule(declaration)); } function hasVisibleDeclarations(symbol) { var aliasesToMakeVisible; @@ -12917,11 +13211,11 @@ var ts; } function isEntityNameVisible(entityName, enclosingDeclaration) { var meaning; - if (entityName.parent.kind === 156) { + if (entityName.parent.kind === 157 || ts.isExpressionWithTypeArgumentsInClassExtendsClause(entityName.parent)) { meaning = 107455 | 1048576; } - else if (entityName.kind === 137 || entityName.kind === 170 || - entityName.parent.kind === 225) { + else if (entityName.kind === 138 || entityName.kind === 171 || + entityName.parent.kind === 228) { meaning = 1536; } else { @@ -12988,10 +13282,10 @@ var ts; function getTypeAliasForTypeLiteral(type) { if (type.symbol && type.symbol.flags & 2048) { var node = type.symbol.declarations[0].parent; - while (node.kind === 162) { + while (node.kind === 163) { node = node.parent; } - if (node.kind === 220) { + if (node.kind === 222) { return getSymbolOfNode(node); } } @@ -12999,7 +13293,7 @@ var ts; } function isTopLevelInExternalModuleAugmentation(node) { return node && node.parent && - node.parent.kind === 223 && + node.parent.kind === 225 && ts.isExternalModuleAugmentation(node.parent.parent); } function getSymbolDisplayBuilder() { @@ -13010,10 +13304,10 @@ var ts; return ts.declarationNameToString(declaration.name); } switch (declaration.kind) { - case 190: + case 191: return "(Anonymous class)"; - case 177: case 178: + case 179: return "(Anonymous function)"; } } @@ -13157,12 +13451,12 @@ var ts; var length_1 = outerTypeParameters.length; while (i < length_1) { var start = i; - var parent_4 = getParentSymbolOfTypeParameter(outerTypeParameters[i]); + var parent_5 = getParentSymbolOfTypeParameter(outerTypeParameters[i]); do { i++; - } while (i < length_1 && getParentSymbolOfTypeParameter(outerTypeParameters[i]) === parent_4); + } while (i < length_1 && getParentSymbolOfTypeParameter(outerTypeParameters[i]) === parent_5); if (!ts.rangeEquals(outerTypeParameters, typeArguments, start, i)) { - writeSymbolTypeReference(parent_4, typeArguments, start, i, flags); + writeSymbolTypeReference(parent_5, typeArguments, start, i, flags); writePunctuation(writer, 21); } } @@ -13221,7 +13515,7 @@ var ts; var isNonLocalFunctionSymbol = !!(symbol.flags & 16) && (symbol.parent || ts.forEach(symbol.declarations, function (declaration) { - return declaration.parent.kind === 252 || declaration.parent.kind === 223; + return declaration.parent.kind === 255 || declaration.parent.kind === 225; })); if (isStaticMethodSymbol || isNonLocalFunctionSymbol) { return !!(flags & 2) || @@ -13361,7 +13655,12 @@ var ts; if (ts.isRestParameter(parameterNode)) { writePunctuation(writer, 22); } - appendSymbolNameOnly(p, writer); + if (ts.isBindingPattern(parameterNode.name)) { + buildBindingPatternDisplay(parameterNode.name, writer, enclosingDeclaration, flags, symbolStack); + } + else { + appendSymbolNameOnly(p, writer); + } if (isOptionalParameter(parameterNode)) { writePunctuation(writer, 53); } @@ -13369,19 +13668,58 @@ var ts; writeSpace(writer); buildTypeDisplay(getTypeOfSymbol(p), writer, enclosingDeclaration, flags, symbolStack); } + function buildBindingPatternDisplay(bindingPattern, writer, enclosingDeclaration, flags, symbolStack) { + if (bindingPattern.kind === 166) { + writePunctuation(writer, 15); + buildDisplayForCommaSeparatedList(bindingPattern.elements, writer, function (e) { return buildBindingElementDisplay(e, writer, enclosingDeclaration, flags, symbolStack); }); + writePunctuation(writer, 16); + } + else if (bindingPattern.kind === 167) { + writePunctuation(writer, 19); + var elements = bindingPattern.elements; + buildDisplayForCommaSeparatedList(elements, writer, function (e) { return buildBindingElementDisplay(e, writer, enclosingDeclaration, flags, symbolStack); }); + if (elements && elements.hasTrailingComma) { + writePunctuation(writer, 24); + } + writePunctuation(writer, 20); + } + } + function buildBindingElementDisplay(bindingElement, writer, enclosingDeclaration, flags, symbolStack) { + if (bindingElement.kind === 192) { + return; + } + ts.Debug.assert(bindingElement.kind === 168); + if (bindingElement.propertyName) { + writer.writeSymbol(ts.getTextOfNode(bindingElement.propertyName), bindingElement.symbol); + writePunctuation(writer, 54); + writeSpace(writer); + } + if (ts.isBindingPattern(bindingElement.name)) { + buildBindingPatternDisplay(bindingElement.name, writer, enclosingDeclaration, flags, symbolStack); + } + else { + if (bindingElement.dotDotDotToken) { + writePunctuation(writer, 22); + } + appendSymbolNameOnly(bindingElement.symbol, writer); + } + } function buildDisplayForTypeParametersAndDelimiters(typeParameters, writer, enclosingDeclaration, flags, symbolStack) { if (typeParameters && typeParameters.length) { writePunctuation(writer, 25); - for (var i = 0; i < typeParameters.length; i++) { - if (i > 0) { - writePunctuation(writer, 24); - writeSpace(writer); - } - buildTypeParameterDisplay(typeParameters[i], writer, enclosingDeclaration, flags, symbolStack); - } + buildDisplayForCommaSeparatedList(typeParameters, writer, function (p) { return buildTypeParameterDisplay(p, writer, enclosingDeclaration, flags, symbolStack); }); writePunctuation(writer, 27); } } + function buildDisplayForCommaSeparatedList(list, writer, action) { + for (var i = 0; i < list.length; i++) { + if (i > 0) { + writePunctuation(writer, 24); + writeSpace(writer); + } + action(list[i]); + } + } function buildDisplayForTypeArgumentsAndDelimiters(typeParameters, mapper, writer, enclosingDeclaration, flags, symbolStack) { if (typeParameters && typeParameters.length) { writePunctuation(writer, 25); @@ -13395,10 +13733,16 @@ var ts; writePunctuation(writer, 27); } } - function buildDisplayForParametersAndDelimiters(parameters, writer, enclosingDeclaration, flags, symbolStack) { + function buildDisplayForParametersAndDelimiters(thisType, parameters, writer, enclosingDeclaration, flags, symbolStack) { writePunctuation(writer, 17); + if (thisType) { + writeKeyword(writer, 97); + writePunctuation(writer, 54); + writeSpace(writer); + buildTypeDisplay(thisType, writer, enclosingDeclaration, flags, symbolStack); + } for (var i = 0; i < parameters.length; i++) { - if (i > 0) { + if (i > 0 || thisType) { writePunctuation(writer, 24); writeSpace(writer); } @@ -13446,7 +13790,7 @@ var ts; else { buildDisplayForTypeParametersAndDelimiters(signature.typeParameters, writer, enclosingDeclaration, flags, symbolStack); } - buildDisplayForParametersAndDelimiters(signature.parameters, writer, enclosingDeclaration, flags, symbolStack); + buildDisplayForParametersAndDelimiters(signature.thisType, signature.parameters, writer, enclosingDeclaration, flags, symbolStack); buildReturnTypeDisplay(signature, writer, enclosingDeclaration, flags, symbolStack); } return _displayBuilder || (_displayBuilder = { @@ -13473,74 +13817,74 @@ var ts; return false; function determineIfDeclarationIsVisible() { switch (node.kind) { - case 167: + case 168: return isDeclarationVisible(node.parent.parent); - case 215: + case 217: if (ts.isBindingPattern(node.name) && !node.name.elements.length) { return false; } - case 222: - case 218: - case 219: + case 224: case 220: - case 217: case 221: - case 225: + case 222: + case 219: + case 223: + case 228: if (ts.isExternalModuleAugmentation(node)) { return true; } - var parent_5 = getDeclarationContainer(node); + var parent_6 = getDeclarationContainer(node); if (!(ts.getCombinedNodeFlags(node) & 1) && - !(node.kind !== 225 && parent_5.kind !== 252 && ts.isInAmbientContext(parent_5))) { - return isGlobalSourceFile(parent_5); + !(node.kind !== 228 && parent_6.kind !== 255 && ts.isInAmbientContext(parent_6))) { + return isGlobalSourceFile(parent_6); } - return isDeclarationVisible(parent_5); - case 143: - case 142: - case 147: - case 148: - case 145: + return isDeclarationVisible(parent_6); case 144: + case 143: + case 148: + case 149: + case 146: + case 145: if (node.flags & (8 | 16)) { return false; } - case 146: - case 150: - case 149: + case 147: case 151: - case 140: - case 223: - case 154: + case 150: + case 152: + case 141: + case 225: case 155: - case 157: - case 153: + case 156: case 158: + case 154: case 159: case 160: case 161: case 162: + case 163: return isDeclarationVisible(node.parent); - case 227: - case 228: case 230: - return false; - case 139: - case 252: - return true; case 231: + case 233: + return false; + case 140: + case 255: + return true; + case 234: return false; default: - ts.Debug.fail("isDeclarationVisible unknown: SyntaxKind: " + node.kind); + return false; } } } function collectLinkedAliases(node) { var exportSymbol; - if (node.parent && node.parent.kind === 231) { + if (node.parent && node.parent.kind === 234) { exportSymbol = resolveName(node.parent, node.text, 107455 | 793056 | 1536 | 8388608, ts.Diagnostics.Cannot_find_name_0, node); } - else if (node.parent.kind === 234) { + else if (node.parent.kind === 237) { var exportSpecifier = node.parent; exportSymbol = exportSpecifier.parent.parent.moduleSpecifier ? getExternalModuleMember(exportSpecifier.parent.parent, exportSpecifier) : @@ -13619,12 +13963,12 @@ var ts; node = ts.getRootDeclaration(node); while (node) { switch (node.kind) { - case 215: - case 216: + case 217: + case 218: + case 233: + case 232: + case 231: case 230: - case 229: - case 228: - case 227: node = node.parent; break; default: @@ -13654,7 +13998,7 @@ var ts; case 9: case 8: return name.text; - case 138: + case 139: if (ts.isStringOrNumericLiteral(name.expression.kind)) { return name.expression.text; } @@ -13662,7 +14006,7 @@ var ts; return undefined; } function isComputedNonLiteralName(name) { - return name.kind === 138 && !ts.isStringOrNumericLiteral(name.expression.kind); + return name.kind === 139 && !ts.isStringOrNumericLiteral(name.expression.kind); } function getTypeForBindingElement(declaration) { var pattern = declaration.parent; @@ -13677,11 +14021,14 @@ var ts; return parentType; } var type; - if (pattern.kind === 165) { + if (pattern.kind === 166) { var name_10 = declaration.propertyName || declaration.name; if (isComputedNonLiteralName(name_10)) { return anyType; } + if (declaration.initializer) { + getContextualType(declaration.initializer); + } var text = getTextOfPropertyName(name_10); type = getTypeOfPropertyOfType(parentType, text) || isNumericLiteralName(text) && getIndexTypeOfType(parentType, 1) || @@ -13712,6 +14059,9 @@ var ts; type = createArrayType(elementType); } } + if (strictNullChecks && declaration.initializer && !(getNullableKind(checkExpressionCached(declaration.initializer)) & 32)) { + type = removeNullableKind(type, 32); + } return type; } function getTypeForVariableLikeDeclarationFromJSDocComment(declaration) { @@ -13725,15 +14075,15 @@ var ts; if (typeTag && typeTag.typeExpression) { return typeTag.typeExpression.type; } - if (declaration.kind === 215 && - declaration.parent.kind === 216 && - declaration.parent.parent.kind === 197) { + if (declaration.kind === 217 && + declaration.parent.kind === 218 && + declaration.parent.parent.kind === 199) { var annotation = ts.getJSDocTypeTag(declaration.parent.parent); if (annotation && annotation.typeExpression) { return annotation.typeExpression.type; } } - else if (declaration.kind === 140) { + else if (declaration.kind === 141) { var paramTag = ts.getCorrespondingJSDocParameterTag(declaration); if (paramTag && paramTag.typeExpression) { return paramTag.typeExpression.type; @@ -13748,35 +14098,38 @@ var ts; return type; } } - if (declaration.parent.parent.kind === 204) { + if (declaration.parent.parent.kind === 206) { return stringType; } - if (declaration.parent.parent.kind === 205) { + if (declaration.parent.parent.kind === 207) { return checkRightHandSideOfForOf(declaration.parent.parent.expression) || anyType; } if (ts.isBindingPattern(declaration.parent)) { return getTypeForBindingElement(declaration); } if (declaration.type) { - return getTypeFromTypeNode(declaration.type); + var type = getTypeFromTypeNode(declaration.type); + return strictNullChecks && declaration.questionToken ? addNullableKind(type, 32) : type; } - if (declaration.kind === 140) { + if (declaration.kind === 141) { var func = declaration.parent; - if (func.kind === 148 && !ts.hasDynamicName(func)) { - var getter = ts.getDeclarationOfKind(declaration.parent.symbol, 147); + if (func.kind === 149 && !ts.hasDynamicName(func)) { + var getter = ts.getDeclarationOfKind(declaration.parent.symbol, 148); if (getter) { return getReturnTypeOfSignature(getSignatureFromDeclaration(getter)); } } - var type = getContextuallyTypedParameterType(declaration); + var type = declaration.symbol.name === "this" + ? getContextuallyTypedThisType(func) + : getContextuallyTypedParameterType(declaration); if (type) { - return type; + return strictNullChecks && declaration.questionToken ? addNullableKind(type, 32) : type; } } if (declaration.initializer) { return checkExpressionCached(declaration.initializer); } - if (declaration.kind === 250) { + if (declaration.kind === 253) { return checkIdentifier(declaration.name); } if (ts.isBindingPattern(declaration.name)) { @@ -13786,11 +14139,16 @@ var ts; } function getTypeFromBindingElement(element, includePatternInType) { if (element.initializer) { - return getWidenedType(checkExpressionCached(element.initializer)); + var type = checkExpressionCached(element.initializer); + reportErrorsFromWidening(element, type); + return getWidenedType(type); } if (ts.isBindingPattern(element.name)) { return getTypeFromBindingPattern(element.name, includePatternInType); } + if (compilerOptions.noImplicitAny) { + reportImplicitAnyError(element, anyType); + } return anyType; } function getTypeFromObjectBindingPattern(pattern, includePatternInType) { @@ -13823,7 +14181,7 @@ var ts; if (elements.length === 0 || elements[elements.length - 1].dotDotDotToken) { return languageVersion >= 2 ? createIterableType(anyType) : anyArrayType; } - var elementTypes = ts.map(elements, function (e) { return e.kind === 191 ? anyType : getTypeFromBindingElement(e, includePatternInType); }); + var elementTypes = ts.map(elements, function (e) { return e.kind === 192 ? anyType : getTypeFromBindingElement(e, includePatternInType); }); if (includePatternInType) { var result = createNewTupleType(elementTypes); result.pattern = pattern; @@ -13832,7 +14190,7 @@ var ts; return createTupleType(elementTypes); } function getTypeFromBindingPattern(pattern, includePatternInType) { - return pattern.kind === 165 + return pattern.kind === 166 ? getTypeFromObjectBindingPattern(pattern, includePatternInType) : getTypeFromArrayBindingPattern(pattern, includePatternInType); } @@ -13842,7 +14200,7 @@ var ts; if (reportErrors) { reportErrorsFromWidening(declaration, type); } - if (declaration.kind === 249) { + if (declaration.kind === 252) { return type; } return getWidenedType(type); @@ -13850,7 +14208,7 @@ var ts; type = declaration.dotDotDotToken ? anyArrayType : anyType; if (reportErrors && compilerOptions.noImplicitAny) { var root = ts.getRootDeclaration(declaration); - if (!isPrivateWithinAmbient(root) && !(root.kind === 140 && isPrivateWithinAmbient(root.parent))) { + if (!isPrivateWithinAmbient(root) && !(root.kind === 141 && isPrivateWithinAmbient(root.parent))) { reportImplicitAnyError(declaration, type); } } @@ -13863,17 +14221,17 @@ var ts; return links.type = getTypeOfPrototypeProperty(symbol); } var declaration = symbol.valueDeclaration; - if (declaration.parent.kind === 248) { + if (declaration.parent.kind === 251) { return links.type = anyType; } - if (declaration.kind === 231) { + if (declaration.kind === 234) { return links.type = checkExpression(declaration.expression); } - if (declaration.kind === 185) { + if (declaration.kind === 186) { return links.type = getUnionType(ts.map(symbol.declarations, function (decl) { return checkExpressionCached(decl.right); })); } - if (declaration.kind === 170) { - if (declaration.parent.kind === 185) { + if (declaration.kind === 171) { + if (declaration.parent.kind === 186) { return links.type = checkExpressionCached(declaration.parent.right); } } @@ -13899,7 +14257,7 @@ var ts; } function getAnnotatedAccessorType(accessor) { if (accessor) { - if (accessor.kind === 147) { + if (accessor.kind === 148) { return accessor.type && getTypeFromTypeNode(accessor.type); } else { @@ -13912,12 +14270,18 @@ var ts; function getTypeOfAccessors(symbol) { var links = getSymbolLinks(symbol); if (!links.type) { + var getter = ts.getDeclarationOfKind(symbol, 148); + var setter = ts.getDeclarationOfKind(symbol, 149); + if (getter && getter.flags & 134217728) { + var jsDocType = getTypeForVariableLikeDeclarationFromJSDocComment(getter); + if (jsDocType) { + return links.type = jsDocType; + } + } if (!pushTypeResolution(symbol, 0)) { return unknownType; } - var getter = ts.getDeclarationOfKind(symbol, 147); - var setter = ts.getDeclarationOfKind(symbol, 148); - var type; + var type = void 0; var getterReturnType = getAnnotatedAccessorType(getter); if (getterReturnType) { type = getterReturnType; @@ -13942,7 +14306,7 @@ var ts; if (!popTypeResolution()) { type = anyType; if (compilerOptions.noImplicitAny) { - var getter_1 = ts.getDeclarationOfKind(symbol, 147); + var getter_1 = ts.getDeclarationOfKind(symbol, 148); error(getter_1, ts.Diagnostics._0_implicitly_has_return_type_any_because_it_does_not_have_a_return_type_annotation_and_is_referenced_directly_or_indirectly_in_one_of_its_return_expressions, symbolToString(symbol)); } } @@ -14031,9 +14395,9 @@ var ts; if (!node) { return typeParameters; } - if (node.kind === 218 || node.kind === 190 || - node.kind === 217 || node.kind === 177 || - node.kind === 145 || node.kind === 178) { + if (node.kind === 220 || node.kind === 191 || + node.kind === 219 || node.kind === 178 || + node.kind === 146 || node.kind === 179) { var declarations = node.typeParameters; if (declarations) { return appendTypeParameters(appendOuterTypeParameters(typeParameters, node), declarations); @@ -14042,15 +14406,15 @@ var ts; } } function getOuterTypeParametersOfClassOrInterface(symbol) { - var declaration = symbol.flags & 32 ? symbol.valueDeclaration : ts.getDeclarationOfKind(symbol, 219); + var declaration = symbol.flags & 32 ? symbol.valueDeclaration : ts.getDeclarationOfKind(symbol, 221); return appendOuterTypeParameters(undefined, declaration); } function getLocalTypeParametersOfClassOrInterfaceOrTypeAlias(symbol) { var result; for (var _i = 0, _a = symbol.declarations; _i < _a.length; _i++) { var node = _a[_i]; - if (node.kind === 219 || node.kind === 218 || - node.kind === 190 || node.kind === 220) { + if (node.kind === 221 || node.kind === 220 || + node.kind === 191 || node.kind === 222) { var declaration = node; if (declaration.typeParameters) { result = appendTypeParameters(result, declaration.typeParameters); @@ -14075,8 +14439,8 @@ var ts; function getInstantiatedConstructorsForTypeArguments(type, typeArgumentNodes) { var signatures = getConstructorsForTypeArguments(type, typeArgumentNodes); if (typeArgumentNodes) { - var typeArguments = ts.map(typeArgumentNodes, getTypeFromTypeNode); - signatures = ts.map(signatures, function (sig) { return getSignatureInstantiation(sig, typeArguments); }); + var typeArguments_1 = ts.map(typeArgumentNodes, getTypeFromTypeNode); + signatures = ts.map(signatures, function (sig) { return getSignatureInstantiation(sig, typeArguments_1); }); } return signatures; } @@ -14173,7 +14537,7 @@ var ts; type.resolvedBaseTypes = type.resolvedBaseTypes || emptyArray; for (var _i = 0, _a = type.symbol.declarations; _i < _a.length; _i++) { var declaration = _a[_i]; - if (declaration.kind === 219 && ts.getInterfaceBaseTypeNodes(declaration)) { + if (declaration.kind === 221 && ts.getInterfaceBaseTypeNodes(declaration)) { for (var _b = 0, _c = ts.getInterfaceBaseTypeNodes(declaration); _b < _c.length; _b++) { var node = _c[_b]; var baseType = getTypeFromTypeNode(node); @@ -14202,7 +14566,7 @@ var ts; function isIndependentInterface(symbol) { for (var _i = 0, _a = symbol.declarations; _i < _a.length; _i++) { var declaration = _a[_i]; - if (declaration.kind === 219) { + if (declaration.kind === 221) { if (declaration.flags & 16384) { return false; } @@ -14251,7 +14615,7 @@ var ts; if (!pushTypeResolution(symbol, 2)) { return unknownType; } - var declaration = ts.getDeclarationOfKind(symbol, 220); + var declaration = ts.getDeclarationOfKind(symbol, 222); var type = getTypeFromTypeNode(declaration.type); if (popTypeResolution()) { links.typeParameters = getLocalTypeParametersOfClassOrInterfaceOrTypeAlias(symbol); @@ -14282,7 +14646,7 @@ var ts; if (!links.declaredType) { var type = createType(512); type.symbol = symbol; - if (!ts.getDeclarationOfKind(symbol, 139).constraint) { + if (!ts.getDeclarationOfKind(symbol, 140).constraint) { type.constraint = noConstraintType; } links.declaredType = type; @@ -14334,11 +14698,13 @@ var ts; case 120: case 132: case 103: - case 164: + case 134: + case 93: + case 165: return true; - case 158: + case 159: return isIndependentType(node.elementType); - case 153: + case 154: return isIndependentTypeReference(node); } return false; @@ -14347,7 +14713,7 @@ var ts; return node.type && isIndependentType(node.type) || !node.type && !node.initializer; } function isIndependentFunctionLikeDeclaration(node) { - if (node.kind !== 146 && (!node.type || !isIndependentType(node.type))) { + if (node.kind !== 147 && (!node.type || !isIndependentType(node.type))) { return false; } for (var _i = 0, _a = node.parameters; _i < _a.length; _i++) { @@ -14363,12 +14729,12 @@ var ts; var declaration = symbol.declarations[0]; if (declaration) { switch (declaration.kind) { - case 143: - case 142: - return isIndependentVariableLikeDeclaration(declaration); - case 145: case 144: + case 143: + return isIndependentVariableLikeDeclaration(declaration); case 146: + case 145: + case 147: return isIndependentFunctionLikeDeclaration(declaration); } } @@ -14459,11 +14825,12 @@ var ts; type.typeArguments : ts.concatenate(type.typeArguments, [type]); resolveObjectTypeMembers(type, source, typeParameters, typeArguments); } - function createSignature(declaration, typeParameters, parameters, resolvedReturnType, typePredicate, minArgumentCount, hasRestParameter, hasStringLiterals) { + function createSignature(declaration, typeParameters, thisType, parameters, resolvedReturnType, typePredicate, minArgumentCount, hasRestParameter, hasStringLiterals) { var sig = new Signature(checker); sig.declaration = declaration; sig.typeParameters = typeParameters; sig.parameters = parameters; + sig.thisType = thisType; sig.resolvedReturnType = resolvedReturnType; sig.typePredicate = typePredicate; sig.minArgumentCount = minArgumentCount; @@ -14472,13 +14839,13 @@ var ts; return sig; } function cloneSignature(sig) { - return createSignature(sig.declaration, sig.typeParameters, sig.parameters, sig.resolvedReturnType, sig.typePredicate, sig.minArgumentCount, sig.hasRestParameter, sig.hasStringLiterals); + return createSignature(sig.declaration, sig.typeParameters, sig.thisType, sig.parameters, sig.resolvedReturnType, sig.typePredicate, sig.minArgumentCount, sig.hasRestParameter, sig.hasStringLiterals); } function getDefaultConstructSignatures(classType) { var baseConstructorType = getBaseConstructorTypeOfClass(classType); var baseSignatures = getSignaturesOfType(baseConstructorType, 1); if (baseSignatures.length === 0) { - return [createSignature(undefined, classType.localTypeParameters, emptyArray, classType, undefined, 0, false, false)]; + return [createSignature(undefined, classType.localTypeParameters, undefined, emptyArray, classType, undefined, 0, false, false)]; } var baseTypeNode = getBaseTypeNodeOfClass(classType); var typeArguments = ts.map(baseTypeNode.typeArguments, getTypeFromTypeNode); @@ -14512,10 +14879,10 @@ var ts; addInheritedMembers(members, arrayType.properties); setObjectTypeMembers(type, members, arrayType.callSignatures, arrayType.constructSignatures, arrayType.stringIndexInfo, arrayType.numberIndexInfo); } - function findMatchingSignature(signatureList, signature, partialMatch, ignoreReturnTypes) { + function findMatchingSignature(signatureList, signature, partialMatch, ignoreThisTypes, ignoreReturnTypes) { for (var _i = 0, signatureList_1 = signatureList; _i < signatureList_1.length; _i++) { var s = signatureList_1[_i]; - if (compareSignaturesIdentical(s, signature, partialMatch, ignoreReturnTypes, compareTypesIdentical)) { + if (compareSignaturesIdentical(s, signature, partialMatch, ignoreThisTypes, ignoreReturnTypes, compareTypesIdentical)) { return s; } } @@ -14526,7 +14893,7 @@ var ts; return undefined; } for (var i = 1; i < signatureLists.length; i++) { - if (!findMatchingSignature(signatureLists[i], signature, false, false)) { + if (!findMatchingSignature(signatureLists[i], signature, false, false, false)) { return undefined; } } @@ -14534,7 +14901,7 @@ var ts; } var result = undefined; for (var i = 0; i < signatureLists.length; i++) { - var match = i === listIndex ? signature : findMatchingSignature(signatureLists[i], signature, true, true); + var match = i === listIndex ? signature : findMatchingSignature(signatureLists[i], signature, true, true, true); if (!match) { return undefined; } @@ -14550,12 +14917,15 @@ var ts; for (var i = 0; i < signatureLists.length; i++) { for (var _i = 0, _a = signatureLists[i]; _i < _a.length; _i++) { var signature = _a[_i]; - if (!result || !findMatchingSignature(result, signature, false, true)) { + if (!result || !findMatchingSignature(result, signature, false, true, true)) { var unionSignatures = findMatchingSignatures(signatureLists, signature, i); if (unionSignatures) { var s = signature; if (unionSignatures.length > 1) { s = cloneSignature(signature); + if (ts.forEach(unionSignatures, function (sig) { return sig.thisType; })) { + s.thisType = getUnionType(ts.map(unionSignatures, function (sig) { return sig.thisType || anyType; })); + } s.resolvedReturnType = undefined; s.unionSignatures = unionSignatures; } @@ -14731,7 +15101,7 @@ var ts; type = globalBooleanType; } else if (type.flags & 16777216) { - type = globalESSymbolType; + type = getGlobalESSymbolType(); } return type; } @@ -14885,7 +15255,7 @@ var ts; } function isOptionalParameter(node) { if (node.flags & 134217728) { - if (node.type && node.type.kind === 264) { + if (node.type && node.type.kind === 267) { return true; } var paramTag = ts.getCorrespondingJSDocParameterTag(node); @@ -14894,7 +15264,7 @@ var ts; return true; } if (paramTag.typeExpression) { - return paramTag.typeExpression.type.kind === 264; + return paramTag.typeExpression.type.kind === 267; } } } @@ -14930,7 +15300,7 @@ var ts; function getSignatureFromDeclaration(declaration) { var links = getNodeLinks(declaration); if (!links.resolvedSignature) { - var classType = declaration.kind === 146 ? + var classType = declaration.kind === 147 ? getDeclaredTypeOfClassOrInterface(getMergedSymbol(declaration.parent.symbol)) : undefined; var typeParameters = classType ? classType.localTypeParameters : @@ -14939,6 +15309,8 @@ var ts; var parameters = []; var hasStringLiterals = false; var minArgumentCount = -1; + var thisType = undefined; + var hasThisParameter = void 0; var isJSConstructSignature = ts.isJSDocConstructSignature(declaration); var returnType = undefined; var typePredicate = undefined; @@ -14949,13 +15321,19 @@ var ts; var resolvedSymbol = resolveName(param, paramSymbol.name, 107455, undefined, undefined); paramSymbol = resolvedSymbol; } - parameters.push(paramSymbol); - if (param.type && param.type.kind === 164) { + if (i === 0 && paramSymbol.name === "this") { + hasThisParameter = true; + thisType = param.type ? getTypeFromTypeNode(param.type) : unknownType; + } + else { + parameters.push(paramSymbol); + } + if (param.type && param.type.kind === 165) { hasStringLiterals = true; } if (param.initializer || param.questionToken || param.dotDotDotToken) { if (minArgumentCount < 0) { - minArgumentCount = i; + minArgumentCount = i - (hasThisParameter ? 1 : 0); } } else { @@ -14963,7 +15341,7 @@ var ts; } } if (minArgumentCount < 0) { - minArgumentCount = declaration.parameters.length; + minArgumentCount = declaration.parameters.length - (hasThisParameter ? 1 : 0); } if (isJSConstructSignature) { minArgumentCount--; @@ -14974,7 +15352,7 @@ var ts; } else if (declaration.type) { returnType = getTypeFromTypeNode(declaration.type); - if (declaration.type.kind === 152) { + if (declaration.type.kind === 153) { typePredicate = createTypePredicateFromTypePredicateNode(declaration.type); } } @@ -14985,15 +15363,15 @@ var ts; returnType = type; } } - if (declaration.kind === 147 && !ts.hasDynamicName(declaration)) { - var setter = ts.getDeclarationOfKind(declaration.symbol, 148); + if (declaration.kind === 148 && !ts.hasDynamicName(declaration)) { + var setter = ts.getDeclarationOfKind(declaration.symbol, 149); returnType = getAnnotatedAccessorType(setter); } if (!returnType && ts.nodeIsMissing(declaration.body)) { returnType = anyType; } } - links.resolvedSignature = createSignature(declaration, typeParameters, parameters, returnType, typePredicate, minArgumentCount, ts.hasRestParameter(declaration), hasStringLiterals); + links.resolvedSignature = createSignature(declaration, typeParameters, thisType, parameters, returnType, typePredicate, minArgumentCount, ts.hasRestParameter(declaration), hasStringLiterals); } return links.resolvedSignature; } @@ -15004,20 +15382,20 @@ var ts; for (var i = 0, len = symbol.declarations.length; i < len; i++) { var node = symbol.declarations[i]; switch (node.kind) { - case 154: case 155: - case 217: - case 145: - case 144: + case 156: + case 219: case 146: - case 149: + case 145: + case 147: case 150: case 151: - case 147: + case 152: case 148: - case 177: + case 149: case 178: - case 265: + case 179: + case 268: if (i > 0 && node.body) { var previous = symbol.declarations[i - 1]; if (node.parent === previous.parent && node.kind === previous.kind && node.pos === previous.end) { @@ -15044,7 +15422,7 @@ var ts; if (!pushTypeResolution(signature, 3)) { return unknownType; } - var type; + var type = void 0; if (signature.target) { type = instantiateType(getReturnTypeOfSignature(signature.target), signature.mapper); } @@ -15097,7 +15475,7 @@ var ts; } function getOrCreateTypeFromSignature(signature) { if (!signature.isolatedSignatureType) { - var isConstructor = signature.declaration.kind === 146 || signature.declaration.kind === 150; + var isConstructor = signature.declaration.kind === 147 || signature.declaration.kind === 151; var type = createObjectType(65536 | 262144); type.members = emptySymbols; type.properties = emptyArray; @@ -15138,7 +15516,7 @@ var ts; return undefined; } function getConstraintDeclaration(type) { - return ts.getDeclarationOfKind(type.symbol, 139).constraint; + return ts.getDeclarationOfKind(type.symbol, 140).constraint; } function hasConstraintReferenceTo(type, target) { var checked; @@ -15171,7 +15549,7 @@ var ts; return typeParameter.constraint === noConstraintType ? undefined : typeParameter.constraint; } function getParentSymbolOfTypeParameter(typeParameter) { - return getSymbolOfNode(ts.getDeclarationOfKind(typeParameter.symbol, 139).parent); + return getSymbolOfNode(ts.getDeclarationOfKind(typeParameter.symbol, 140).parent); } function getTypeListId(types) { if (types) { @@ -15193,11 +15571,13 @@ var ts; } return ""; } - function getPropagatingFlagsOfTypes(types) { + function getPropagatingFlagsOfTypes(types, excludeKinds) { var result = 0; for (var _i = 0, types_3 = types; _i < types_3.length; _i++) { var type = types_3[_i]; - result |= type.flags; + if (!(type.flags & excludeKinds)) { + result |= type.flags; + } } return result & 14680064; } @@ -15205,7 +15585,8 @@ var ts; var id = getTypeListId(typeArguments); var type = target.instantiations[id]; if (!type) { - var flags = 4096 | (typeArguments ? getPropagatingFlagsOfTypes(typeArguments) : 0); + var propagatedFlags = typeArguments ? getPropagatingFlagsOfTypes(typeArguments, 0) : 0; + var flags = 4096 | propagatedFlags; type = target.instantiations[id] = createObjectType(flags, target.symbol); type.target = target; type.typeArguments = typeArguments; @@ -15213,7 +15594,7 @@ var ts; return type; } function getTypeFromClassOrInterfaceReference(node, symbol) { - var type = getDeclaredTypeOfSymbol(symbol); + var type = getDeclaredTypeOfSymbol(getMergedSymbol(symbol)); var typeParameters = type.localTypeParameters; if (typeParameters) { if (!node.typeArguments || node.typeArguments.length !== typeParameters.length) { @@ -15256,11 +15637,11 @@ var ts; } function getTypeReferenceName(node) { switch (node.kind) { - case 153: + case 154: return node.typeName; - case 263: + case 266: return node.name; - case 192: + case 193: if (ts.isSupportedExpressionWithTypeArguments(node)) { return node.expression; } @@ -15283,7 +15664,7 @@ var ts; if (symbol.flags & 524288) { return getTypeFromTypeAliasReference(node, symbol); } - if (symbol.flags & 107455 && node.kind === 263) { + if (symbol.flags & 107455 && node.kind === 266) { return getTypeOfSymbol(symbol); } return getTypeFromNonGenericTypeReference(node, symbol); @@ -15291,9 +15672,9 @@ var ts; function getTypeFromTypeReference(node) { var links = getNodeLinks(node); if (!links.resolvedType) { - var symbol; - var type; - if (node.kind === 263) { + var symbol = void 0; + var type = void 0; + if (node.kind === 266) { var typeReferenceName = getTypeReferenceName(node); symbol = resolveTypeReferenceName(node, typeReferenceName); type = getTypeReferenceType(node, symbol); @@ -15301,7 +15682,7 @@ var ts; links.resolvedType = type; } else { - var typeNameOrExpression = node.kind === 153 ? node.typeName : + var typeNameOrExpression = node.kind === 154 ? node.typeName : ts.isSupportedExpressionWithTypeArguments(node) ? node.expression : undefined; symbol = typeNameOrExpression && resolveEntityName(typeNameOrExpression, 793056) || unknownSymbol; @@ -15328,9 +15709,9 @@ var ts; for (var _i = 0, declarations_3 = declarations; _i < declarations_3.length; _i++) { var declaration = declarations_3[_i]; switch (declaration.kind) { - case 218: - case 219: + case 220: case 221: + case 223: return declaration; } } @@ -15367,9 +15748,6 @@ var ts; var typeSymbol = namespaceSymbol && getSymbol(namespaceSymbol.exports, name, 793056); return typeSymbol && getDeclaredTypeOfSymbol(typeSymbol); } - function getGlobalESSymbolConstructorSymbol() { - return globalESSymbolConstructorSymbol || (globalESSymbolConstructorSymbol = getGlobalValueSymbol("Symbol")); - } function createTypedPropertyDescriptorType(propertyType) { var globalTypedPropertyDescriptorType = getGlobalTypedPropertyDescriptorType(); return globalTypedPropertyDescriptorType !== emptyGenericType @@ -15380,10 +15758,10 @@ var ts; return genericGlobalType !== emptyGenericType ? createTypeReference(genericGlobalType, typeArguments) : emptyObjectType; } function createIterableType(elementType) { - return createTypeFromGenericGlobalType(globalIterableType, [elementType]); + return createTypeFromGenericGlobalType(getGlobalIterableType(), [elementType]); } function createIterableIteratorType(elementType) { - return createTypeFromGenericGlobalType(globalIterableIteratorType, [elementType]); + return createTypeFromGenericGlobalType(getGlobalIterableIteratorType(), [elementType]); } function createArrayType(elementType) { return createTypeFromGenericGlobalType(globalArrayType, [elementType]); @@ -15400,7 +15778,8 @@ var ts; return tupleTypes[id] || (tupleTypes[id] = createNewTupleType(elementTypes)); } function createNewTupleType(elementTypes) { - var type = createObjectType(8192 | getPropagatingFlagsOfTypes(elementTypes)); + var propagatedFlags = getPropagatingFlagsOfTypes(elementTypes, 0); + var type = createObjectType(8192 | propagatedFlags); type.elementTypes = elementTypes; return type; } @@ -15415,6 +15794,14 @@ var ts; if (type.flags & typeSetKind) { addTypesToSet(typeSet, type.types, typeSetKind); } + else if (type.flags & (1 | 32 | 64)) { + if (type.flags & 1) + typeSet.containsAny = true; + if (type.flags & 32) + typeSet.containsUndefined = true; + if (type.flags & 64) + typeSet.containsNull = true; + } else if (!ts.contains(typeSet, type)) { typeSet.push(type); } @@ -15442,47 +15829,35 @@ var ts; } } } - function containsTypeAny(types) { - for (var _i = 0, types_5 = types; _i < types_5.length; _i++) { - var type = types_5[_i]; - if (isTypeAny(type)) { - return true; - } - } - return false; - } - function removeAllButLast(types, typeToRemove) { - var i = types.length; - while (i > 0 && types.length > 1) { - i--; - if (types[i] === typeToRemove) { - types.splice(i, 1); - } - } - } function getUnionType(types, noSubtypeReduction) { if (types.length === 0) { return emptyUnionType; } var typeSet = []; addTypesToSet(typeSet, types, 16384); - if (containsTypeAny(typeSet)) { + if (typeSet.containsAny) { return anyType; } - if (noSubtypeReduction) { - removeAllButLast(typeSet, undefinedType); - removeAllButLast(typeSet, nullType); + if (strictNullChecks) { + if (typeSet.containsNull) + typeSet.push(nullType); + if (typeSet.containsUndefined) + typeSet.push(undefinedType); } - else { + if (!noSubtypeReduction) { removeSubtypes(typeSet); } - if (typeSet.length === 1) { + if (typeSet.length === 0) { + return typeSet.containsNull ? nullType : undefinedType; + } + else if (typeSet.length === 1) { return typeSet[0]; } var id = getTypeListId(typeSet); var type = unionTypes[id]; if (!type) { - type = unionTypes[id] = createObjectType(16384 | getPropagatingFlagsOfTypes(typeSet)); + var propagatedFlags = getPropagatingFlagsOfTypes(typeSet, 96); + type = unionTypes[id] = createObjectType(16384 | propagatedFlags); type.types = typeSet; } return type; @@ -15500,16 +15875,23 @@ var ts; } var typeSet = []; addTypesToSet(typeSet, types, 32768); - if (containsTypeAny(typeSet)) { + if (typeSet.containsAny) { return anyType; } + if (strictNullChecks) { + if (typeSet.containsNull) + typeSet.push(nullType); + if (typeSet.containsUndefined) + typeSet.push(undefinedType); + } if (typeSet.length === 1) { return typeSet[0]; } var id = getTypeListId(typeSet); var type = intersectionTypes[id]; if (!type) { - type = intersectionTypes[id] = createObjectType(32768 | getPropagatingFlagsOfTypes(typeSet)); + var propagatedFlags = getPropagatingFlagsOfTypes(typeSet, 96); + type = intersectionTypes[id] = createObjectType(32768 | propagatedFlags); type.types = typeSet; } return type; @@ -15562,9 +15944,9 @@ var ts; function getThisType(node) { var container = ts.getThisContainer(node, false); var parent = container && container.parent; - if (parent && (ts.isClassLike(parent) || parent.kind === 219)) { + if (parent && (ts.isClassLike(parent) || parent.kind === 221)) { if (!(container.flags & 32) && - (container.kind !== 146 || ts.isNodeDescendentOf(node, container.body))) { + (container.kind !== 147 || ts.isNodeDescendentOf(node, container.body))) { return getDeclaredTypeOfClassOrInterface(getSymbolOfNode(parent)).thisType; } } @@ -15581,8 +15963,8 @@ var ts; function getTypeFromTypeNode(node) { switch (node.kind) { case 117: - case 254: - case 255: + case 257: + case 258: return anyType; case 131: return stringType; @@ -15594,49 +15976,53 @@ var ts; return esSymbolType; case 103: return voidType; - case 163: - return getTypeFromThisTypeNode(node); + case 134: + return undefinedType; + case 93: + return nullType; case 164: + return getTypeFromThisTypeNode(node); + case 165: return getTypeFromStringLiteralTypeNode(node); + case 154: + case 266: + return getTypeFromTypeReference(node); case 153: - case 263: - return getTypeFromTypeReference(node); - case 152: return booleanType; - case 192: + case 193: return getTypeFromTypeReference(node); - case 156: + case 157: return getTypeFromTypeQueryNode(node); - case 158: - case 256: - return getTypeFromArrayTypeNode(node); case 159: - return getTypeFromTupleTypeNode(node); - case 160: - case 257: - return getTypeFromUnionTypeNode(node); - case 161: - return getTypeFromIntersectionTypeNode(node); - case 162: case 259: + return getTypeFromArrayTypeNode(node); + case 160: + return getTypeFromTupleTypeNode(node); + case 161: case 260: + return getTypeFromUnionTypeNode(node); + case 162: + return getTypeFromIntersectionTypeNode(node); + case 163: + case 262: + case 263: + case 270: + case 271: case 267: + return getTypeFromTypeNode(node.type); + case 155: + case 156: + case 158: case 268: case 264: - return getTypeFromTypeNode(node.type); - case 154: - case 155: - case 157: - case 265: - case 261: return getTypeFromTypeLiteralOrFunctionOrConstructorTypeNode(node); case 69: - case 137: + case 138: var symbol = getSymbolAtLocation(node); return symbol && getDeclaredTypeOfSymbol(symbol); - case 258: + case 261: return getTypeFromJSDocTupleType(node); - case 266: + case 269: return getTypeFromJSDocVariadicType(node); default: return unknownType; @@ -15659,40 +16045,26 @@ var ts; function createBinaryTypeMapper(source1, target1, source2, target2) { return function (t) { return t === source1 ? target1 : t === source2 ? target2 : t; }; } - function createTypeMapper(sources, targets) { - switch (sources.length) { - case 1: return createUnaryTypeMapper(sources[0], targets[0]); - case 2: return createBinaryTypeMapper(sources[0], targets[0], sources[1], targets[1]); - } + function createArrayTypeMapper(sources, targets) { return function (t) { for (var i = 0; i < sources.length; i++) { if (t === sources[i]) { - return targets[i]; + return targets ? targets[i] : anyType; } } return t; }; } - function createUnaryTypeEraser(source) { - return function (t) { return t === source ? anyType : t; }; - } - function createBinaryTypeEraser(source1, source2) { - return function (t) { return t === source1 || t === source2 ? anyType : t; }; + function createTypeMapper(sources, targets) { + var count = sources.length; + var mapper = count == 1 ? createUnaryTypeMapper(sources[0], targets ? targets[0] : anyType) : + count == 2 ? createBinaryTypeMapper(sources[0], targets ? targets[0] : anyType, sources[1], targets ? targets[1] : anyType) : + createArrayTypeMapper(sources, targets); + mapper.mappedTypes = sources; + return mapper; } function createTypeEraser(sources) { - switch (sources.length) { - case 1: return createUnaryTypeEraser(sources[0]); - case 2: return createBinaryTypeEraser(sources[0], sources[1]); - } - return function (t) { - for (var _i = 0, sources_1 = sources; _i < sources_1.length; _i++) { - var source = sources_1[_i]; - if (t === source) { - return anyType; - } - } - return t; - }; + return createTypeMapper(sources, undefined); } function getInferenceMapper(context) { if (!context.mapper) { @@ -15706,6 +16078,7 @@ var ts; } return t; }; + mapper.mappedTypes = context.typeParameters; mapper.context = context; context.mapper = mapper; } @@ -15715,7 +16088,9 @@ var ts; return type; } function combineTypeMappers(mapper1, mapper2) { - return function (t) { return instantiateType(mapper1(t), mapper2); }; + var mapper = function (t) { return instantiateType(mapper1(t), mapper2); }; + mapper.mappedTypes = mapper1.mappedTypes; + return mapper; } function cloneTypeParameter(typeParameter) { var result = createType(512); @@ -15753,7 +16128,7 @@ var ts; if (signature.typePredicate) { freshTypePredicate = cloneTypePredicate(signature.typePredicate, mapper); } - var result = createSignature(signature.declaration, freshTypeParameters, instantiateList(signature.parameters, mapper, instantiateSymbol), instantiateType(signature.resolvedReturnType, mapper), freshTypePredicate, signature.minArgumentCount, signature.hasRestParameter, signature.hasStringLiterals); + var result = createSignature(signature.declaration, freshTypeParameters, signature.thisType && instantiateType(signature.thisType, mapper), instantiateList(signature.parameters, mapper, instantiateSymbol), instantiateType(signature.resolvedReturnType, mapper), freshTypePredicate, signature.minArgumentCount, signature.hasRestParameter, signature.hasStringLiterals); result.target = signature; result.mapper = mapper; return result; @@ -15790,13 +16165,61 @@ var ts; mapper.instantiations[type.id] = result; return result; } + function isSymbolInScopeOfMappedTypeParameter(symbol, mapper) { + var mappedTypes = mapper.mappedTypes; + var node = symbol.declarations[0].parent; + while (node) { + switch (node.kind) { + case 155: + case 156: + case 219: + case 146: + case 145: + case 147: + case 150: + case 151: + case 152: + case 148: + case 149: + case 178: + case 179: + case 220: + case 191: + case 221: + case 222: + var declaration = node; + if (declaration.typeParameters) { + for (var _i = 0, _a = declaration.typeParameters; _i < _a.length; _i++) { + var d = _a[_i]; + if (ts.contains(mappedTypes, getDeclaredTypeOfTypeParameter(d.symbol))) { + return true; + } + } + } + if (ts.isClassLike(node) || node.kind === 221) { + var thisType = getDeclaredTypeOfClassOrInterface(getSymbolOfNode(node)).thisType; + if (thisType && ts.contains(mappedTypes, thisType)) { + return true; + } + } + break; + case 224: + case 255: + return false; + } + node = node.parent; + } + return false; + } function instantiateType(type, mapper) { if (type && mapper !== identityMapper) { if (type.flags & 512) { return mapper(type); } if (type.flags & 65536) { - return type.symbol && type.symbol.flags & (16 | 8192 | 32 | 2048 | 4096) ? + return type.symbol && + type.symbol.flags & (16 | 8192 | 32 | 2048 | 4096) && + (type.flags & 131072 || isSymbolInScopeOfMappedTypeParameter(type.symbol, mapper)) ? instantiateAnonymousType(type, mapper) : type; } if (type.flags & 4096) { @@ -15818,33 +16241,35 @@ var ts; return info && createIndexInfo(instantiateType(info.type, mapper), info.isReadonly, info.declaration); } function isContextSensitive(node) { - ts.Debug.assert(node.kind !== 145 || ts.isObjectLiteralMethod(node)); + ts.Debug.assert(node.kind !== 146 || ts.isObjectLiteralMethod(node)); switch (node.kind) { - case 177: case 178: + case 179: return isContextSensitiveFunctionLikeDeclaration(node); - case 169: + case 170: return ts.forEach(node.properties, isContextSensitive); - case 168: + case 169: return ts.forEach(node.elements, isContextSensitive); - case 186: + case 187: return isContextSensitive(node.whenTrue) || isContextSensitive(node.whenFalse); - case 185: + case 186: return node.operatorToken.kind === 52 && (isContextSensitive(node.left) || isContextSensitive(node.right)); - case 249: + case 252: return isContextSensitive(node.initializer); + case 146: case 145: - case 144: return isContextSensitiveFunctionLikeDeclaration(node); - case 176: + case 177: return isContextSensitive(node.expression); } return false; } function isContextSensitiveFunctionLikeDeclaration(node) { - return !node.typeParameters && node.parameters.length && !ts.forEach(node.parameters, function (p) { return p.type; }); + var areAllParametersUntyped = !ts.forEach(node.parameters, function (p) { return p.type; }); + var isNullaryArrow = node.kind === 179 && !node.parameters.length; + return !node.typeParameters && areAllParametersUntyped && !isNullaryArrow; } function getTypeWithoutSignatures(type) { if (type.flags & 80896) { @@ -15875,12 +16300,18 @@ var ts; function isTypeAssignableTo(source, target) { return checkTypeAssignableTo(source, target, undefined); } + function isTypeComparableTo(source, target) { + return checkTypeComparableTo(source, target, undefined); + } function checkTypeSubtypeOf(source, target, errorNode, headMessage, containingMessageChain) { return checkTypeRelatedTo(source, target, subtypeRelation, errorNode, headMessage, containingMessageChain); } function checkTypeAssignableTo(source, target, errorNode, headMessage, containingMessageChain) { return checkTypeRelatedTo(source, target, assignableRelation, errorNode, headMessage, containingMessageChain); } + function checkTypeComparableTo(source, target, errorNode, headMessage, containingMessageChain) { + return checkTypeRelatedTo(source, target, comparableRelation, errorNode, headMessage, containingMessageChain); + } function isSignatureAssignableTo(source, target, ignoreReturnTypes) { return compareSignaturesRelated(source, target, ignoreReturnTypes, false, undefined, compareTypesAssignable) !== 0; } @@ -15894,15 +16325,26 @@ var ts; source = getErasedSignature(source); target = getErasedSignature(target); var result = -1; + if (source.thisType && target.thisType && source.thisType !== voidType) { + var related = compareTypes(source.thisType, target.thisType, false) + || compareTypes(target.thisType, source.thisType, reportErrors); + if (!related) { + if (reportErrors) { + errorReporter(ts.Diagnostics.The_this_types_of_each_signature_are_incompatible); + } + return 0; + } + result &= related; + } var sourceMax = getNumNonRestParameters(source); var targetMax = getNumNonRestParameters(target); var checkCount = getNumParametersToCheckForSignatureRelatability(source, sourceMax, target, targetMax); var sourceParams = source.parameters; var targetParams = target.parameters; for (var i = 0; i < checkCount; i++) { - var s = i < sourceMax ? getTypeOfSymbol(sourceParams[i]) : getRestTypeOfSignature(source); - var t = i < targetMax ? getTypeOfSymbol(targetParams[i]) : getRestTypeOfSignature(target); - var related = compareTypes(t, s, false) || compareTypes(s, t, reportErrors); + var s = i < sourceMax ? getTypeOfParameter(sourceParams[i]) : getRestTypeOfSignature(source); + var t = i < targetMax ? getTypeOfParameter(targetParams[i]) : getRestTypeOfSignature(target); + var related = compareTypes(s, t, false) || compareTypes(t, s, reportErrors); if (!related) { if (reportErrors) { errorReporter(ts.Diagnostics.Types_of_parameters_0_and_1_are_incompatible, sourceParams[i < sourceMax ? i : sourceMax].name, targetParams[i < targetMax ? i : targetMax].name); @@ -16023,7 +16465,12 @@ var ts; sourceType = typeToString(source, undefined, 128); targetType = typeToString(target, undefined, 128); } - reportError(message || ts.Diagnostics.Type_0_is_not_assignable_to_type_1, sourceType, targetType); + if (!message) { + message = relation === comparableRelation ? + ts.Diagnostics.Type_0_is_not_comparable_to_type_1 : + ts.Diagnostics.Type_0_is_not_assignable_to_type_1; + } + reportError(message, sourceType, targetType); } function isRelatedTo(source, target, reportErrors, headMessage) { var result; @@ -16034,20 +16481,24 @@ var ts; } if (isTypeAny(target)) return -1; - if (source === undefinedType) - return -1; - if (source === nullType && target !== undefinedType) - return -1; + if (source.flags & 32) { + if (!strictNullChecks || target.flags & (32 | 16) || source === emptyArrayElementType) + return -1; + } + if (source.flags & 64) { + if (!strictNullChecks || target.flags & 64) + return -1; + } if (source.flags & 128 && target === numberType) return -1; if (source.flags & 128 && target.flags & 128) { - if (result = enumRelatedTo(source, target)) { + if (result = enumRelatedTo(source, target, reportErrors)) { return result; } } if (source.flags & 256 && target === stringType) return -1; - if (relation === assignableRelation) { + if (relation === assignableRelation || relation === comparableRelation) { if (isTypeAny(source)) return -1; if (source === numberType && target.flags & 128) @@ -16069,23 +16520,30 @@ var ts; } var saveErrorInfo = errorInfo; if (source.flags & 16384) { - if (result = eachTypeRelatedToType(source, target, reportErrors)) { + if (relation === comparableRelation) { + result = someTypeRelatedToType(source, target, reportErrors); + } + else { + result = eachTypeRelatedToType(source, target, reportErrors); + } + if (result) { return result; } } else if (target.flags & 32768) { - if (result = typeRelatedToEachType(source, target, reportErrors)) { + result = typeRelatedToEachType(source, target, reportErrors); + if (result) { return result; } } else { if (source.flags & 32768) { - if (result = someTypeRelatedToType(source, target, reportErrors && !(target.flags & 16384))) { + if (result = someTypeRelatedToType(source, target, false)) { return result; } } if (target.flags & 16384) { - if (result = typeRelatedToSomeType(source, target, reportErrors)) { + if (result = typeRelatedToSomeType(source, target, reportErrors && !(source.flags & 16777726))) { return result; } } @@ -16133,8 +16591,8 @@ var ts; } if (source.flags & 16384 && target.flags & 16384 || source.flags & 32768 && target.flags & 32768) { - if (result = eachTypeRelatedToSomeType(source, target)) { - if (result &= eachTypeRelatedToSomeType(target, source)) { + if (result = eachTypeRelatedToSomeType(source, target, false)) { + if (result &= eachTypeRelatedToSomeType(target, source, false)) { return result; } } @@ -16144,7 +16602,8 @@ var ts; function isKnownProperty(type, name) { if (type.flags & 80896) { var resolved = resolveStructuredTypeMembers(type); - if (relation === assignableRelation && (type === globalObjectType || resolved.properties.length === 0) || + if ((relation === assignableRelation || relation === comparableRelation) && + (type === globalObjectType || resolved.properties.length === 0) || resolved.stringIndexInfo || resolved.numberIndexInfo || getPropertyOfType(type, name)) { return true; } @@ -16175,7 +16634,7 @@ var ts; } return false; } - function eachTypeRelatedToSomeType(source, target) { + function eachTypeRelatedToSomeType(source, target, reportErrors) { var result = -1; var sourceTypes = source.types; for (var _i = 0, sourceTypes_1 = sourceTypes; _i < sourceTypes_1.length; _i++) { @@ -16190,7 +16649,15 @@ var ts; } function typeRelatedToSomeType(source, target, reportErrors) { var targetTypes = target.types; - for (var i = 0, len = targetTypes.length; i < len; i++) { + var len = targetTypes.length; + while (len >= 2 && targetTypes[len - 1].flags & 96) { + var related = isRelatedTo(source, targetTypes[len - 1], false); + if (related) { + return related; + } + len--; + } + for (var i = 0; i < len; i++) { var related = isRelatedTo(source, targetTypes[i], reportErrors && i === len - 1); if (related) { return related; @@ -16213,7 +16680,15 @@ var ts; } function someTypeRelatedToType(source, target, reportErrors) { var sourceTypes = source.types; - for (var i = 0, len = sourceTypes.length; i < len; i++) { + var len = sourceTypes.length; + while (len >= 2 && sourceTypes[len - 1].flags & 96) { + var related = isRelatedTo(sourceTypes[len - 1], target, false); + if (related) { + return related; + } + len--; + } + for (var i = 0; i < len; i++) { var related = isRelatedTo(sourceTypes[i], target, reportErrors && i === len - 1); if (related) { return related; @@ -16471,7 +16946,7 @@ var ts; } var result = -1; for (var i = 0, len = sourceSignatures.length; i < len; i++) { - var related = compareSignaturesIdentical(sourceSignatures[i], targetSignatures[i], false, false, isRelatedTo); + var related = compareSignaturesIdentical(sourceSignatures[i], targetSignatures[i], false, false, false, isRelatedTo); if (!related) { return 0; } @@ -16545,7 +17020,7 @@ var ts; } return 0; } - function enumRelatedTo(source, target) { + function enumRelatedTo(source, target, reportErrors) { if (source.symbol.name !== target.symbol.name || source.symbol.flags & 128 || target.symbol.flags & 128) { @@ -16557,7 +17032,9 @@ var ts; if (property.flags & 8) { var targetProperty = getPropertyOfType(targetEnumType, property.name); if (!targetProperty || !(targetProperty.flags & 8)) { - reportError(ts.Diagnostics.Property_0_is_missing_in_type_1, property.name, typeToString(target, undefined, 128)); + if (reportErrors) { + reportError(ts.Diagnostics.Property_0_is_missing_in_type_1, property.name, typeToString(target, undefined, 128)); + } return 0; } } @@ -16651,7 +17128,7 @@ var ts; } return false; } - function compareSignaturesIdentical(source, target, partialMatch, ignoreReturnTypes, compareTypes) { + function compareSignaturesIdentical(source, target, partialMatch, ignoreThisTypes, ignoreReturnTypes, compareTypes) { if (source === target) { return -1; } @@ -16664,10 +17141,17 @@ var ts; source = getErasedSignature(source); target = getErasedSignature(target); var result = -1; + if (!ignoreThisTypes && source.thisType && target.thisType) { + var related = compareTypes(source.thisType, target.thisType); + if (!related) { + return 0; + } + result &= related; + } var targetLen = target.parameters.length; for (var i = 0; i < targetLen; i++) { - var s = isRestParameterIndex(source, i) ? getRestTypeOfSignature(source) : getTypeOfSymbol(source.parameters[i]); - var t = isRestParameterIndex(target, i) ? getRestTypeOfSignature(target) : getTypeOfSymbol(target.parameters[i]); + var s = isRestParameterIndex(source, i) ? getRestTypeOfSignature(source) : getTypeOfParameter(source.parameters[i]); + var t = isRestParameterIndex(target, i) ? getRestTypeOfSignature(target) : getTypeOfParameter(target.parameters[i]); var related = compareTypes(s, t); if (!related) { return 0; @@ -16683,15 +17167,31 @@ var ts; return signature.hasRestParameter && parameterIndex >= signature.parameters.length - 1; } function isSupertypeOfEach(candidate, types) { - for (var _i = 0, types_6 = types; _i < types_6.length; _i++) { - var type = types_6[_i]; - if (candidate !== type && !isTypeSubtypeOf(type, candidate)) + for (var _i = 0, types_5 = types; _i < types_5.length; _i++) { + var t = types_5[_i]; + if (candidate !== t && !isTypeSubtypeOf(t, candidate)) return false; } return true; } + function getCombinedFlagsOfTypes(types) { + var flags = 0; + for (var _i = 0, types_6 = types; _i < types_6.length; _i++) { + var t = types_6[_i]; + flags |= t.flags; + } + return flags; + } function getCommonSupertype(types) { - return ts.forEach(types, function (t) { return isSupertypeOfEach(t, types) ? t : undefined; }); + if (!strictNullChecks) { + return ts.forEach(types, function (t) { return isSupertypeOfEach(t, types) ? t : undefined; }); + } + var primaryTypes = ts.filter(types, function (t) { return !(t.flags & 96); }); + if (!primaryTypes.length) { + return getUnionType(types); + } + var supertype = ts.forEach(primaryTypes, function (t) { return isSupertypeOfEach(t, primaryTypes) ? t : undefined; }); + return supertype && addNullableKind(supertype, getCombinedFlagsOfTypes(types) & 96); } function reportNoCommonSupertypeError(types, errorLocation, errorMessageChainHead) { var bestSupertype; @@ -16725,7 +17225,7 @@ var ts; } function isArrayLikeType(type) { return type.flags & 4096 && (type.target === globalArrayType || type.target === globalReadonlyArrayType) || - !(type.flags & (32 | 64)) && isTypeAssignableTo(type, anyReadonlyArrayType); + !(type.flags & 96) && isTypeAssignableTo(type, anyReadonlyArrayType); } function isTupleLikeType(type) { return !!getPropertyOfType(type, "0"); @@ -16736,6 +17236,60 @@ var ts; function isTupleType(type) { return !!(type.flags & 8192); } + function getNullableKind(type) { + var flags = type.flags; + if (flags & 16384) { + for (var _i = 0, _a = type.types; _i < _a.length; _i++) { + var t = _a[_i]; + flags |= t.flags; + } + } + return flags & 96; + } + function getNullableTypeOfKind(kind) { + return kind & 64 ? kind & 32 ? + getUnionType([nullType, undefinedType]) : nullType : undefinedType; + } + function addNullableKind(type, kind) { + if ((getNullableKind(type) & kind) !== kind) { + var types = [type]; + if (kind & 32) { + types.push(undefinedType); + } + if (kind & 64) { + types.push(nullType); + } + type = getUnionType(types); + } + return type; + } + function removeNullableKind(type, kind) { + if (type.flags & 16384 && getNullableKind(type) & kind) { + var firstType = void 0; + var types = void 0; + for (var _i = 0, _a = type.types; _i < _a.length; _i++) { + var t = _a[_i]; + if (!(t.flags & kind)) { + if (!firstType) { + firstType = t; + } + else { + if (!types) { + types = [firstType]; + } + types.push(t); + } + } + } + if (firstType) { + type = types ? getUnionType(types) : firstType; + } + } + return type; + } + function getNonNullableType(type) { + return strictNullChecks ? removeNullableKind(type, 96) : type; + } function isObjectLiteralType(type) { return type.symbol && (type.symbol.flags & (4096 | 2048)) !== 0 && getSignaturesOfType(type, 0).length === 0 && @@ -16781,16 +17335,19 @@ var ts; var numberIndexInfo = getIndexInfoOfType(type, 1); return createAnonymousType(type.symbol, members, emptyArray, emptyArray, stringIndexInfo && createIndexInfo(getWidenedType(stringIndexInfo.type), stringIndexInfo.isReadonly), numberIndexInfo && createIndexInfo(getWidenedType(numberIndexInfo.type), numberIndexInfo.isReadonly)); } + function getWidenedConstituentType(type) { + return type.flags & 96 ? type : getWidenedType(type); + } function getWidenedType(type) { if (type.flags & 6291456) { - if (type.flags & (32 | 64)) { + if (type.flags & 96) { return anyType; } if (type.flags & 524288) { return getWidenedTypeOfObjectLiteral(type); } if (type.flags & 16384) { - return getUnionType(ts.map(type.types, getWidenedType), true); + return getUnionType(ts.map(type.types, getWidenedConstituentType), true); } if (isArrayType(type)) { return createArrayType(getWidenedType(type.typeArguments[0])); @@ -16840,22 +17397,25 @@ var ts; var typeAsString = typeToString(getWidenedType(type)); var diagnostic; switch (declaration.kind) { + case 144: case 143: - case 142: diagnostic = ts.Diagnostics.Member_0_implicitly_has_an_1_type; break; - case 140: + case 141: diagnostic = declaration.dotDotDotToken ? ts.Diagnostics.Rest_parameter_0_implicitly_has_an_any_type : ts.Diagnostics.Parameter_0_implicitly_has_an_1_type; break; - case 217: + case 168: + diagnostic = ts.Diagnostics.Binding_element_0_implicitly_has_an_1_type; + break; + case 219: + case 146: case 145: - case 144: - case 147: case 148: - case 177: + case 149: case 178: + case 179: if (!declaration.name) { error(declaration, ts.Diagnostics.Function_expression_which_lacks_return_type_annotation_implicitly_has_an_0_return_type, typeAsString); return; @@ -16879,25 +17439,19 @@ var ts; var targetMax = target.parameters.length; var count; if (source.hasRestParameter && target.hasRestParameter) { - count = sourceMax > targetMax ? sourceMax : targetMax; - sourceMax--; - targetMax--; + count = Math.max(sourceMax, targetMax); } else if (source.hasRestParameter) { - sourceMax--; count = targetMax; } else if (target.hasRestParameter) { - targetMax--; count = sourceMax; } else { - count = sourceMax < targetMax ? sourceMax : targetMax; + count = Math.min(sourceMax, targetMax); } for (var i = 0; i < count; i++) { - var s = i < sourceMax ? getTypeOfSymbol(source.parameters[i]) : getRestTypeOfSignature(source); - var t = i < targetMax ? getTypeOfSymbol(target.parameters[i]) : getRestTypeOfSignature(target); - callback(s, t); + callback(getTypeAtPosition(source, i), getTypeAtPosition(target, i)); } } function createInferenceContext(typeParameters, inferUnionTypes) { @@ -16934,7 +17488,7 @@ var ts; function inferFromTypes(source, target) { if (source.flags & 16384 && target.flags & 16384 || source.flags & 32768 && target.flags & 32768) { - var matchingTypes; + var matchingTypes = void 0; for (var _i = 0, _a = target.types; _i < _a.length; _i++) { var t = _a[_i]; if (typeIdenticalToSomeType(t, source.types)) { @@ -16985,7 +17539,7 @@ var ts; else if (target.flags & 49152) { var targetTypes = target.types; var typeParameterCount = 0; - var typeParameter; + var typeParameter = void 0; for (var _b = 0, targetTypes_2 = targetTypes; _b < targetTypes_2.length; _b++) { var t = targetTypes_2[_b]; if (t.flags & 512 && ts.contains(context.typeParameters, t)) { @@ -17148,20 +17702,31 @@ var ts; } return context.inferredTypes; } + function createTransientIdentifier(symbol, location) { + var result = ts.createNode(69); + result.text = symbol.name; + result.resolvedSymbol = symbol; + result.parent = location; + result.id = -1; + return result; + } function getResolvedSymbol(node) { + if (node.id === -1) { + return node.resolvedSymbol; + } var links = getNodeLinks(node); if (!links.resolvedSymbol) { - links.resolvedSymbol = (!ts.nodeIsMissing(node) && resolveName(node, node.text, 107455 | 1048576, ts.Diagnostics.Cannot_find_name_0, node)) || unknownSymbol; + links.resolvedSymbol = !ts.nodeIsMissing(node) && resolveName(node, node.text, 107455 | 1048576, ts.Diagnostics.Cannot_find_name_0, node) || unknownSymbol; } return links.resolvedSymbol; } function isInTypeQuery(node) { while (node) { switch (node.kind) { - case 156: + case 157: return true; case 69: - case 137: + case 138: node = node.parent; continue; default: @@ -17170,164 +17735,279 @@ var ts; } ts.Debug.fail("should not get here"); } + function getAssignmentKey(node) { + if (node.kind === 69) { + var symbol = getResolvedSymbol(node); + return symbol !== unknownSymbol ? "" + getSymbolId(symbol) : undefined; + } + if (node.kind === 97) { + return "0"; + } + if (node.kind === 171) { + var key = getAssignmentKey(node.expression); + return key && key + "." + node.name.text; + } + return undefined; + } function hasInitializer(node) { return !!(node.initializer || ts.isBindingPattern(node.parent) && hasInitializer(node.parent.parent)); } - function isVariableAssignedWithin(symbol, node) { - var links = getNodeLinks(node); - if (links.assignmentChecks) { - var cachedResult = links.assignmentChecks[symbol.id]; - if (cachedResult !== undefined) { - return cachedResult; - } - } - else { - links.assignmentChecks = {}; - } - return links.assignmentChecks[symbol.id] = isAssignedIn(node); - function isAssignedInBinaryExpression(node) { - if (node.operatorToken.kind >= 56 && node.operatorToken.kind <= 68) { - var n = skipParenthesizedNodes(node.left); - if (n.kind === 69 && getResolvedSymbol(n) === symbol) { - return true; + function getAssignmentMap(node) { + var assignmentMap = {}; + visit(node); + return assignmentMap; + function visitReference(node) { + if (isAssignmentTarget(node) || isCompoundAssignmentTarget(node)) { + var key = getAssignmentKey(node); + if (key) { + assignmentMap[key] = true; } } - return ts.forEachChild(node, isAssignedIn); + ts.forEachChild(node, visit); } - function isAssignedInVariableDeclaration(node) { - if (!ts.isBindingPattern(node.name) && getSymbolOfNode(node) === symbol && hasInitializer(node)) { - return true; + function visitVariableDeclaration(node) { + if (!ts.isBindingPattern(node.name) && hasInitializer(node)) { + assignmentMap[getSymbolId(getSymbolOfNode(node))] = true; } - return ts.forEachChild(node, isAssignedIn); + ts.forEachChild(node, visit); } - function isAssignedIn(node) { + function visit(node) { switch (node.kind) { - case 185: - return isAssignedInBinaryExpression(node); - case 215: - case 167: - return isAssignedInVariableDeclaration(node); - case 165: - case 166: + case 69: + case 171: + visitReference(node); + break; + case 217: case 168: + visitVariableDeclaration(node); + break; + case 186: + case 166: + case 167: case 169: case 170: - case 171: case 172: case 173: - case 175: - case 193: + case 174: case 176: - case 183: - case 179: - case 182: - case 180: - case 181: + case 194: + case 195: + case 177: case 184: - case 188: - case 186: + case 180: + case 183: + case 181: + case 182: + case 185: case 189: - case 196: - case 197: + case 187: + case 190: + case 198: case 199: - case 200: case 201: case 202: case 203: case 204: case 205: - case 208: - case 209: + case 206: + case 207: case 210: - case 245: - case 246: case 211: case 212: - case 213: + case 226: case 248: - case 237: - case 238: + case 249: + case 213: + case 214: + case 215: + case 251: + case 240: + case 241: + case 245: + case 246: case 242: - case 243: - case 239: - case 244: - return ts.forEachChild(node, isAssignedIn); + case 247: + ts.forEachChild(node, visit); + break; } - return false; } } - function getNarrowedTypeOfSymbol(symbol, node) { - var type = getTypeOfSymbol(symbol); - if (node && symbol.flags & 3) { - if (isTypeAny(type) || type.flags & (80896 | 16384 | 512)) { - var declaration = ts.getDeclarationOfKind(symbol, 215); - var top_1 = declaration && getDeclarationContainer(declaration); - var originalType = type; - var nodeStack = []; - loop: while (node.parent) { - var child = node; - node = node.parent; - switch (node.kind) { - case 200: - case 186: - case 185: - nodeStack.push({ node: node, child: child }); - break; - case 252: - case 222: - break loop; - } - if (node === top_1) { - break; - } - } - var nodes; - while (nodes = nodeStack.pop()) { - var node_1 = nodes.node, child = nodes.child; - switch (node_1.kind) { - case 200: - if (child !== node_1.expression) { - type = narrowType(type, node_1.expression, child === node_1.thenStatement); - } - break; - case 186: - if (child !== node_1.condition) { - type = narrowType(type, node_1.condition, child === node_1.whenTrue); - } - break; - case 185: - if (child === node_1.right) { - if (node_1.operatorToken.kind === 51) { - type = narrowType(type, node_1.left, true); - } - else if (node_1.operatorToken.kind === 52) { - type = narrowType(type, node_1.left, false); - } - } - break; - default: - ts.Debug.fail("Unreachable!"); - } - if (type !== originalType && isVariableAssignedWithin(symbol, node_1)) { - type = originalType; - } - } - if (type === emptyUnionType) { - type = originalType; - } + function isReferenceAssignedWithin(reference, node) { + if (reference.kind !== 97) { + var key = getAssignmentKey(reference); + if (key) { + var links = getNodeLinks(node); + return (links.assignmentMap || (links.assignmentMap = getAssignmentMap(node)))[key]; } } - return type; - function narrowTypeByEquality(type, expr, assumeTrue) { - if (expr.left.kind !== 180 || expr.right.kind !== 9) { + return false; + } + function isAnyPartOfReferenceAssignedWithin(reference, node) { + while (true) { + if (isReferenceAssignedWithin(reference, node)) { + return true; + } + if (reference.kind !== 171) { + return false; + } + reference = reference.expression; + } + } + function isNullOrUndefinedLiteral(node) { + return node.kind === 93 || + node.kind === 69 && getResolvedSymbol(node) === undefinedSymbol; + } + function getLeftmostIdentifierOrThis(node) { + switch (node.kind) { + case 69: + case 97: + return node; + case 171: + return getLeftmostIdentifierOrThis(node.expression); + } + return undefined; + } + function isMatchingReference(source, target) { + if (source.kind === target.kind) { + switch (source.kind) { + case 69: + return getResolvedSymbol(source) === getResolvedSymbol(target); + case 97: + return true; + case 171: + return source.name.text === target.name.text && + isMatchingReference(source.expression, target.expression); + } + } + return false; + } + function getNarrowedTypeOfReference(type, reference) { + if (!(type.flags & (1 | 80896 | 16384 | 512))) { + return type; + } + var leftmostNode = getLeftmostIdentifierOrThis(reference); + if (!leftmostNode) { + return type; + } + var top; + if (leftmostNode.kind === 69) { + var leftmostSymbol = getExportSymbolOfValueSymbolIfExported(getResolvedSymbol(leftmostNode)); + if (!leftmostSymbol) { return type; } + var declaration = leftmostSymbol.valueDeclaration; + if (!declaration || declaration.kind !== 217 && declaration.kind !== 141 && declaration.kind !== 168) { + return type; + } + top = getDeclarationContainer(declaration); + } + var originalType = type; + var nodeStack = []; + var node = reference; + loop: while (node.parent) { + var child = node; + node = node.parent; + switch (node.kind) { + case 202: + case 187: + case 186: + nodeStack.push({ node: node, child: child }); + break; + case 255: + case 224: + break loop; + default: + if (node === top || ts.isFunctionLikeKind(node.kind)) { + break loop; + } + break; + } + } + var nodes; + while (nodes = nodeStack.pop()) { + var node_1 = nodes.node, child = nodes.child; + switch (node_1.kind) { + case 202: + if (child !== node_1.expression) { + type = narrowType(type, node_1.expression, child === node_1.thenStatement); + } + break; + case 187: + if (child !== node_1.condition) { + type = narrowType(type, node_1.condition, child === node_1.whenTrue); + } + break; + case 186: + if (child === node_1.right) { + if (node_1.operatorToken.kind === 51) { + type = narrowType(type, node_1.left, true); + } + else if (node_1.operatorToken.kind === 52) { + type = narrowType(type, node_1.left, false); + } + } + break; + default: + ts.Debug.fail("Unreachable!"); + } + if (type !== originalType && isAnyPartOfReferenceAssignedWithin(reference, node_1)) { + type = originalType; + } + } + if (type === emptyUnionType) { + type = originalType; + } + return type; + function narrowTypeByTruthiness(type, expr, assumeTrue) { + return strictNullChecks && assumeTrue && isMatchingReference(expr, reference) ? getNonNullableType(type) : type; + } + function narrowTypeByBinaryExpression(type, expr, assumeTrue) { + switch (expr.operatorToken.kind) { + case 30: + case 31: + case 32: + case 33: + if (isNullOrUndefinedLiteral(expr.right)) { + return narrowTypeByNullCheck(type, expr, assumeTrue); + } + if (expr.left.kind === 181 && expr.right.kind === 9) { + return narrowTypeByTypeof(type, expr, assumeTrue); + } + break; + case 51: + return narrowTypeByAnd(type, expr, assumeTrue); + case 52: + return narrowTypeByOr(type, expr, assumeTrue); + case 91: + return narrowTypeByInstanceof(type, expr, assumeTrue); + } + return type; + } + function narrowTypeByNullCheck(type, expr, assumeTrue) { + var operator = expr.operatorToken.kind; + if (operator === 31 || operator === 33) { + assumeTrue = !assumeTrue; + } + if (!strictNullChecks || !isMatchingReference(expr.left, reference)) { + return type; + } + var doubleEquals = operator === 30 || operator === 31; + var exprNullableKind = doubleEquals ? 96 : + expr.right.kind === 93 ? 64 : 32; + if (assumeTrue) { + var nullableKind = getNullableKind(type) & exprNullableKind; + return nullableKind ? getNullableTypeOfKind(nullableKind) : type; + } + return removeNullableKind(type, exprNullableKind); + } + function narrowTypeByTypeof(type, expr, assumeTrue) { var left = expr.left; var right = expr.right; - if (left.expression.kind !== 69 || getResolvedSymbol(left.expression) !== symbol) { + if (!isMatchingReference(left.expression, reference)) { return type; } - if (expr.operatorToken.kind === 33) { + if (expr.operatorToken.kind === 31 || + expr.operatorToken.kind === 33) { assumeTrue = !assumeTrue; } var typeInfo = primitiveTypeInfo[right.text]; @@ -17376,7 +18056,7 @@ var ts; } } function narrowTypeByInstanceof(type, expr, assumeTrue) { - if (isTypeAny(type) || expr.left.kind !== 69 || getResolvedSymbol(expr.left) !== symbol) { + if (isTypeAny(type) || !isMatchingReference(expr.left, reference)) { return type; } var rightType = checkExpression(expr.right); @@ -17392,7 +18072,7 @@ var ts; } } if (!targetType) { - var constructSignatures; + var constructSignatures = void 0; if (rightType.flags & 2048) { constructSignatures = resolveDeclaredMembers(rightType).declaredConstructSignatures; } @@ -17421,7 +18101,8 @@ var ts; return getUnionType(assignableConstituents); } } - if (isTypeAssignableTo(narrowedTypeCandidate, originalType)) { + var targetType = originalType.flags & 512 ? getApparentType(originalType) : originalType; + if (isTypeAssignableTo(narrowedTypeCandidate, targetType)) { return narrowedTypeCandidate; } return originalType; @@ -17436,57 +18117,36 @@ var ts; return type; } if (ts.isIdentifierTypePredicate(predicate)) { - if (callExpression.arguments[predicate.parameterIndex] && - getSymbolAtTypePredicatePosition(callExpression.arguments[predicate.parameterIndex]) === symbol) { + var predicateArgument = callExpression.arguments[predicate.parameterIndex]; + if (predicateArgument && isMatchingReference(predicateArgument, reference)) { return getNarrowedType(type, predicate.type, assumeTrue); } } else { var invokedExpression = skipParenthesizedNodes(callExpression.expression); - return narrowTypeByThisTypePredicate(type, predicate, invokedExpression, assumeTrue); - } - return type; - } - function narrowTypeByThisTypePredicate(type, predicate, invokedExpression, assumeTrue) { - if (invokedExpression.kind === 171 || invokedExpression.kind === 170) { - var accessExpression = invokedExpression; - var possibleIdentifier = skipParenthesizedNodes(accessExpression.expression); - if (possibleIdentifier.kind === 69 && getSymbolAtTypePredicatePosition(possibleIdentifier) === symbol) { - return getNarrowedType(type, predicate.type, assumeTrue); + if (invokedExpression.kind === 172 || invokedExpression.kind === 171) { + var accessExpression = invokedExpression; + var possibleReference = skipParenthesizedNodes(accessExpression.expression); + if (isMatchingReference(possibleReference, reference)) { + return getNarrowedType(type, predicate.type, assumeTrue); + } } } return type; } - function getSymbolAtTypePredicatePosition(expr) { - expr = skipParenthesizedNodes(expr); - switch (expr.kind) { - case 69: - case 170: - return getSymbolOfEntityNameOrPropertyAccessExpression(expr); - } - } function narrowType(type, expr, assumeTrue) { switch (expr.kind) { - case 172: + case 69: + case 97: + case 171: + return narrowTypeByTruthiness(type, expr, assumeTrue); + case 173: return narrowTypeByTypePredicate(type, expr, assumeTrue); - case 176: + case 177: return narrowType(type, expr.expression, assumeTrue); - case 185: - var operator = expr.operatorToken.kind; - if (operator === 32 || operator === 33) { - return narrowTypeByEquality(type, expr, assumeTrue); - } - else if (operator === 51) { - return narrowTypeByAnd(type, expr, assumeTrue); - } - else if (operator === 52) { - return narrowTypeByOr(type, expr, assumeTrue); - } - else if (operator === 91) { - return narrowTypeByInstanceof(type, expr, assumeTrue); - } - break; - case 183: + case 186: + return narrowTypeByBinaryExpression(type, expr, assumeTrue); + case 184: if (expr.operator === 49) { return narrowType(type, expr.operand, !assumeTrue); } @@ -17495,17 +18155,121 @@ var ts; return type; } } + function getTypeOfSymbolAtLocation(symbol, location) { + var type = getTypeOfSymbol(symbol); + if (location.kind === 69) { + if (ts.isRightSideOfQualifiedNameOrPropertyAccess(location)) { + location = location.parent; + } + if (ts.isExpression(location)) { + checkExpression(location); + if (getNodeLinks(location).resolvedSymbol === symbol) { + return getNarrowedTypeOfReference(type, location); + } + } + } + return getNarrowedTypeOfReference(type, createTransientIdentifier(symbol, location)); + } function skipParenthesizedNodes(expression) { - while (expression.kind === 176) { + while (expression.kind === 177) { expression = expression.expression; } return expression; } + function findFirstAssignment(symbol, container) { + return visit(ts.isFunctionLike(container) ? container.body : container); + function visit(node) { + switch (node.kind) { + case 69: + var assignment = getAssignmentRoot(node); + return assignment && getResolvedSymbol(node) === symbol ? assignment : undefined; + case 186: + case 217: + case 168: + case 166: + case 167: + case 169: + case 170: + case 171: + case 172: + case 173: + case 174: + case 176: + case 194: + case 195: + case 177: + case 184: + case 180: + case 183: + case 181: + case 182: + case 185: + case 189: + case 187: + case 190: + case 199: + case 201: + case 202: + case 203: + case 204: + case 205: + case 206: + case 207: + case 210: + case 211: + case 212: + case 226: + case 248: + case 249: + case 213: + case 214: + case 215: + case 251: + case 240: + case 241: + case 245: + case 246: + case 242: + case 247: + case 198: + case 255: + return ts.forEachChild(node, visit); + } + return undefined; + } + } + function checkVariableAssignedBefore(symbol, reference) { + if (!(symbol.flags & 3)) { + return; + } + var declaration = symbol.valueDeclaration; + if (!declaration || declaration.kind !== 217 || declaration.initializer || ts.isInAmbientContext(declaration)) { + return; + } + var parentParentKind = declaration.parent.parent.kind; + if (parentParentKind === 207 || parentParentKind === 206) { + return; + } + var declarationContainer = ts.getContainingFunction(declaration) || ts.getSourceFileOfNode(declaration); + var referenceContainer = ts.getContainingFunction(reference) || ts.getSourceFileOfNode(reference); + if (declarationContainer !== referenceContainer) { + return; + } + var links = getSymbolLinks(symbol); + if (!links.firstAssignmentChecked) { + links.firstAssignmentChecked = true; + links.firstAssignment = findFirstAssignment(symbol, declarationContainer); + } + if (links.firstAssignment && links.firstAssignment.end <= reference.pos) { + return; + } + error(reference, ts.Diagnostics.Variable_0_is_used_before_being_assigned, symbolToString(symbol)); + } function checkIdentifier(node) { var symbol = getResolvedSymbol(node); if (symbol === argumentsSymbol) { var container = ts.getContainingFunction(node); - if (container.kind === 178) { + if (container.kind === 179) { if (languageVersion < 2) { error(node, ts.Diagnostics.The_arguments_object_cannot_be_referenced_in_an_arrow_function_in_ES3_and_ES5_Consider_using_a_standard_function_expression); } @@ -17520,7 +18284,7 @@ var ts; var localOrExportSymbol = getExportSymbolOfValueSymbolIfExported(symbol); if (languageVersion === 2 && localOrExportSymbol.flags & 32 - && localOrExportSymbol.valueDeclaration.kind === 218 + && localOrExportSymbol.valueDeclaration.kind === 220 && ts.nodeIsDecorated(localOrExportSymbol.valueDeclaration)) { var container = ts.getContainingClass(node); while (container !== undefined) { @@ -17535,7 +18299,11 @@ var ts; checkCollisionWithCapturedSuperVariable(node, node); checkCollisionWithCapturedThisVariable(node, node); checkNestedBlockScopedBinding(node, symbol); - return getNarrowedTypeOfSymbol(localOrExportSymbol, node); + var type = getTypeOfSymbol(localOrExportSymbol); + if (strictNullChecks && !isAssignmentTarget(node) && !(type.flags & 1) && !(getNullableKind(type) & 32)) { + checkVariableAssignedBefore(symbol, node); + } + return getNarrowedTypeOfReference(type, node); } function isInsideFunction(node, threshold) { var current = node; @@ -17550,7 +18318,7 @@ var ts; function checkNestedBlockScopedBinding(node, symbol) { if (languageVersion >= 2 || (symbol.flags & (2 | 32)) === 0 || - symbol.valueDeclaration.parent.kind === 248) { + symbol.valueDeclaration.parent.kind === 251) { return; } var container = ts.getEnclosingBlockScopeContainer(symbol.valueDeclaration); @@ -17568,8 +18336,8 @@ var ts; if (usedInFunction) { getNodeLinks(current).flags |= 65536; } - if (container.kind === 203 && - ts.getAncestor(symbol.valueDeclaration, 216).parent === container && + if (container.kind === 205 && + ts.getAncestor(symbol.valueDeclaration, 218).parent === container && isAssignedInBodyOfForStatement(node, container)) { getNodeLinks(symbol.valueDeclaration).flags |= 2097152; } @@ -17581,14 +18349,14 @@ var ts; } function isAssignedInBodyOfForStatement(node, container) { var current = node; - while (current.parent.kind === 176) { + while (current.parent.kind === 177) { current = current.parent; } var isAssigned = false; - if (current.parent.kind === 185) { - isAssigned = current.parent.left === current && ts.isAssignmentOperator(current.parent.operatorToken.kind); + if (isAssignmentTarget(current)) { + isAssigned = true; } - if ((current.parent.kind === 183 || current.parent.kind === 184)) { + else if ((current.parent.kind === 184 || current.parent.kind === 185)) { var expr = current.parent; isAssigned = expr.operator === 41 || expr.operator === 42; } @@ -17607,7 +18375,7 @@ var ts; } function captureLexicalThis(node, container) { getNodeLinks(node).flags |= 2; - if (container.kind === 143 || container.kind === 146) { + if (container.kind === 144 || container.kind === 147) { var classNode = container.parent; getNodeLinks(classNode).flags |= 4; } @@ -17641,7 +18409,7 @@ var ts; function checkThisExpression(node) { var container = ts.getThisContainer(node, true); var needToCaptureLexicalThis = false; - if (container.kind === 146) { + if (container.kind === 147) { var containingClassDecl = container.parent; var baseTypeNode = ts.getClassExtendsHeritageClauseElement(containingClassDecl); if (baseTypeNode && !classDeclarationExtendsNull(containingClassDecl)) { @@ -17651,45 +18419,62 @@ var ts; } } } - if (container.kind === 178) { + if (container.kind === 179) { container = ts.getThisContainer(container, false); needToCaptureLexicalThis = (languageVersion < 2); } switch (container.kind) { - case 222: + case 224: error(node, ts.Diagnostics.this_cannot_be_referenced_in_a_module_or_namespace_body); break; - case 221: + case 223: error(node, ts.Diagnostics.this_cannot_be_referenced_in_current_location); break; - case 146: + case 147: if (isInConstructorArgumentInitializer(node, container)) { error(node, ts.Diagnostics.this_cannot_be_referenced_in_constructor_arguments); } break; + case 144: case 143: - case 142: if (container.flags & 32) { error(node, ts.Diagnostics.this_cannot_be_referenced_in_a_static_property_initializer); } break; - case 138: + case 139: error(node, ts.Diagnostics.this_cannot_be_referenced_in_a_computed_property_name); break; } if (needToCaptureLexicalThis) { captureLexicalThis(node, container); } + if (ts.isFunctionLike(container)) { + var type = getContextuallyTypedThisType(container); + if (type) { + return type; + } + var signature = getSignatureFromDeclaration(container); + if (signature.thisType) { + return signature.thisType; + } + if (container.parent && container.parent.kind === 170) { + var type_1 = checkExpressionCached(container.parent); + if (type_1) { + return type_1; + } + } + } if (ts.isClassLike(container.parent)) { var symbol = getSymbolOfNode(container.parent); - return container.flags & 32 ? getTypeOfSymbol(symbol) : getDeclaredTypeOfSymbol(symbol).thisType; + var type = container.flags & 32 ? getTypeOfSymbol(symbol) : getDeclaredTypeOfSymbol(symbol).thisType; + return getNarrowedTypeOfReference(type, node); } if (ts.isInJavaScriptFile(node)) { var type = getTypeForThisExpressionFromJSDoc(container); if (type && type !== unknownType) { return type; } - if (container.kind === 177) { + if (container.kind === 178) { if (ts.getSpecialPropertyAssignmentKind(container.parent) === 3) { var className = container.parent .left @@ -17702,31 +18487,34 @@ var ts; } } } + if (compilerOptions.noImplicitThis) { + error(node, ts.Diagnostics.this_implicitly_has_type_any_because_it_does_not_have_a_type_annotation); + } return anyType; } function getTypeForThisExpressionFromJSDoc(node) { var typeTag = ts.getJSDocTypeTag(node); - if (typeTag && typeTag.typeExpression && typeTag.typeExpression.type && typeTag.typeExpression.type.kind === 265) { + if (typeTag && typeTag.typeExpression && typeTag.typeExpression.type && typeTag.typeExpression.type.kind === 268) { var jsDocFunctionType = typeTag.typeExpression.type; - if (jsDocFunctionType.parameters.length > 0 && jsDocFunctionType.parameters[0].type.kind === 268) { + if (jsDocFunctionType.parameters.length > 0 && jsDocFunctionType.parameters[0].type.kind === 271) { return getTypeFromTypeNode(jsDocFunctionType.parameters[0].type); } } } function isInConstructorArgumentInitializer(node, constructorDecl) { for (var n = node; n && n !== constructorDecl; n = n.parent) { - if (n.kind === 140) { + if (n.kind === 141) { return true; } } return false; } function checkSuperExpression(node) { - var isCallExpression = node.parent.kind === 172 && node.parent.expression === node; + var isCallExpression = node.parent.kind === 173 && node.parent.expression === node; var container = ts.getSuperContainer(node, true); var needToCaptureLexicalThis = false; if (!isCallExpression) { - while (container && container.kind === 178) { + while (container && container.kind === 179) { container = ts.getSuperContainer(container, true); needToCaptureLexicalThis = languageVersion < 2; } @@ -17735,16 +18523,16 @@ var ts; var nodeCheckFlag = 0; if (!canUseSuperExpression) { var current = node; - while (current && current !== container && current.kind !== 138) { + while (current && current !== container && current.kind !== 139) { current = current.parent; } - if (current && current.kind === 138) { + if (current && current.kind === 139) { error(node, ts.Diagnostics.super_cannot_be_referenced_in_a_computed_property_name); } else if (isCallExpression) { error(node, ts.Diagnostics.Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors); } - else if (!container || !container.parent || !(ts.isClassLike(container.parent) || container.parent.kind === 169)) { + else if (!container || !container.parent || !(ts.isClassLike(container.parent) || container.parent.kind === 170)) { error(node, ts.Diagnostics.super_can_only_be_referenced_in_members_of_derived_classes_or_object_literal_expressions); } else { @@ -17759,7 +18547,7 @@ var ts; nodeCheckFlag = 256; } getNodeLinks(node).flags |= nodeCheckFlag; - if (container.kind === 145 && container.flags & 256) { + if (container.kind === 146 && container.flags & 256) { if (ts.isSuperPropertyOrElementAccess(node.parent) && isAssignmentTarget(node.parent)) { getNodeLinks(container).flags |= 4096; } @@ -17770,7 +18558,7 @@ var ts; if (needToCaptureLexicalThis) { captureLexicalThis(node.parent, container); } - if (container.parent.kind === 169) { + if (container.parent.kind === 170) { if (languageVersion < 2) { error(node, ts.Diagnostics.super_is_only_allowed_in_members_of_object_literal_expressions_when_option_target_is_ES2015_or_higher); return unknownType; @@ -17788,7 +18576,7 @@ var ts; } return unknownType; } - if (container.kind === 146 && isInConstructorArgumentInitializer(node, container)) { + if (container.kind === 147 && isInConstructorArgumentInitializer(node, container)) { error(node, ts.Diagnostics.super_cannot_be_referenced_in_constructor_arguments); return unknownType; } @@ -17800,30 +18588,41 @@ var ts; return false; } if (isCallExpression) { - return container.kind === 146; + return container.kind === 147; } else { - if (ts.isClassLike(container.parent) || container.parent.kind === 169) { + if (ts.isClassLike(container.parent) || container.parent.kind === 170) { if (container.flags & 32) { - return container.kind === 145 || - container.kind === 144 || - container.kind === 147 || - container.kind === 148; + return container.kind === 146 || + container.kind === 145 || + container.kind === 148 || + container.kind === 149; } else { - return container.kind === 145 || - container.kind === 144 || - container.kind === 147 || + return container.kind === 146 || + container.kind === 145 || container.kind === 148 || + container.kind === 149 || + container.kind === 144 || container.kind === 143 || - container.kind === 142 || - container.kind === 146; + container.kind === 147; } } } return false; } } + function getContextuallyTypedThisType(func) { + if ((isFunctionExpressionOrArrowFunction(func) || ts.isObjectLiteralMethod(func)) && + isContextSensitive(func) && + func.kind !== 179) { + var contextualSignature = getContextualSignature(func); + if (contextualSignature) { + return contextualSignature.thisType; + } + } + return undefined; + } function getContextuallyTypedParameterType(parameter) { var func = parameter.parent; if (isFunctionExpressionOrArrowFunction(func) || ts.isObjectLiteralMethod(func)) { @@ -17852,7 +18651,7 @@ var ts; if (declaration.type) { return getTypeFromTypeNode(declaration.type); } - if (declaration.kind === 140) { + if (declaration.kind === 141) { var type = getContextuallyTypedParameterType(declaration); if (type) { return type; @@ -17861,6 +18660,18 @@ var ts; if (ts.isBindingPattern(declaration.name)) { return getTypeFromBindingPattern(declaration.name, true); } + if (ts.isBindingPattern(declaration.parent)) { + var parentDeclaration = declaration.parent.parent; + var name_11 = declaration.propertyName || declaration.name; + if (ts.isVariableLike(parentDeclaration) && + parentDeclaration.type && + !ts.isBindingPattern(name_11)) { + var text = getTextOfPropertyName(name_11); + if (text) { + return getTypeOfPropertyOfType(getTypeFromTypeNode(parentDeclaration.type), text); + } + } + } } return undefined; } @@ -17885,7 +18696,7 @@ var ts; } function isInParameterInitializerBeforeContainingFunction(node) { while (node.parent && !ts.isFunctionLike(node.parent)) { - if (node.parent.kind === 140 && node.parent.initializer === node) { + if (node.parent.kind === 141 && node.parent.initializer === node) { return true; } node = node.parent; @@ -17894,8 +18705,8 @@ var ts; } function getContextualReturnType(functionDecl) { if (functionDecl.type || - functionDecl.kind === 146 || - functionDecl.kind === 147 && ts.getSetAccessorTypeAnnotationNode(ts.getDeclarationOfKind(functionDecl.symbol, 148))) { + functionDecl.kind === 147 || + functionDecl.kind === 148 && ts.getSetAccessorTypeAnnotationNode(ts.getDeclarationOfKind(functionDecl.symbol, 149))) { return getReturnTypeOfSignature(getSignatureFromDeclaration(functionDecl)); } var signature = getContextualSignatureForFunctionLikeDeclaration(functionDecl); @@ -17914,7 +18725,7 @@ var ts; return undefined; } function getContextualTypeForSubstitutionExpression(template, substitutionExpression) { - if (template.parent.kind === 174) { + if (template.parent.kind === 175) { return getContextualTypeForArgument(template.parent, substitutionExpression); } return undefined; @@ -18022,13 +18833,13 @@ var ts; var kind = attribute.kind; var jsxElement = attribute.parent; var attrsType = getJsxElementAttributesType(jsxElement); - if (attribute.kind === 242) { + if (attribute.kind === 245) { if (!attrsType || isTypeAny(attrsType)) { return undefined; } return getTypeOfPropertyOfType(attrsType, attribute.name.text); } - else if (attribute.kind === 243) { + else if (attribute.kind === 246) { return attrsType; } ts.Debug.fail("Expected JsxAttribute or JsxSpreadAttribute, got ts.SyntaxKind[" + kind + "]"); @@ -18046,40 +18857,40 @@ var ts; } var parent = node.parent; switch (parent.kind) { - case 215: - case 140: + case 217: + case 141: + case 144: case 143: - case 142: - case 167: - return getContextualTypeForInitializerExpression(node); - case 178: - case 208: - return getContextualTypeForReturnExpression(node); - case 188: - return getContextualTypeForYieldOperand(parent); - case 172: - case 173: - return getContextualTypeForArgument(parent, node); - case 175: - case 193: - return getTypeFromTypeNode(parent.type); - case 185: - return getContextualTypeForBinaryOperand(node); - case 249: - return getContextualTypeForObjectLiteralElement(parent); case 168: - return getContextualTypeForElementExpression(node); - case 186: - return getContextualTypeForConditionalOperand(node); - case 194: - ts.Debug.assert(parent.parent.kind === 187); - return getContextualTypeForSubstitutionExpression(parent.parent, node); + return getContextualTypeForInitializerExpression(node); + case 179: + case 210: + return getContextualTypeForReturnExpression(node); + case 189: + return getContextualTypeForYieldOperand(parent); + case 173: + case 174: + return getContextualTypeForArgument(parent, node); case 176: + case 194: + return getTypeFromTypeNode(parent.type); + case 186: + return getContextualTypeForBinaryOperand(node); + case 252: + return getContextualTypeForObjectLiteralElement(parent); + case 169: + return getContextualTypeForElementExpression(node); + case 187: + return getContextualTypeForConditionalOperand(node); + case 196: + ts.Debug.assert(parent.parent.kind === 188); + return getContextualTypeForSubstitutionExpression(parent.parent, node); + case 177: return getContextualType(parent); - case 244: + case 247: return getContextualType(parent); - case 242: - case 243: + case 245: + case 246: return getContextualTypeForJsxAttribute(parent); } return undefined; @@ -18094,7 +18905,7 @@ var ts; } } function isFunctionExpressionOrArrowFunction(node) { - return node.kind === 177 || node.kind === 178; + return node.kind === 178 || node.kind === 179; } function getContextualSignatureForFunctionLikeDeclaration(node) { return isFunctionExpressionOrArrowFunction(node) || ts.isObjectLiteralMethod(node) @@ -18102,7 +18913,7 @@ var ts; : undefined; } function getContextualSignature(node) { - ts.Debug.assert(node.kind !== 145 || ts.isObjectLiteralMethod(node)); + ts.Debug.assert(node.kind !== 146 || ts.isObjectLiteralMethod(node)); var type = ts.isObjectLiteralMethod(node) ? getContextualTypeForObjectLiteralMethod(node) : getApparentTypeOfContextualType(node); @@ -18121,7 +18932,7 @@ var ts; if (!signatureList) { signatureList = [signature]; } - else if (!compareSignaturesIdentical(signatureList[0], signature, false, true, compareTypesIdentical)) { + else if (!compareSignaturesIdentical(signatureList[0], signature, false, true, true, compareTypesIdentical)) { return undefined; } else { @@ -18140,16 +18951,34 @@ var ts; function isInferentialContext(mapper) { return mapper && mapper.context; } - function isAssignmentTarget(node) { + function getAssignmentRoot(node) { + while (node.parent.kind === 177) { + node = node.parent; + } + while (true) { + if (node.parent.kind === 252) { + node = node.parent.parent; + } + else if (node.parent.kind === 169) { + node = node.parent; + } + else { + break; + } + } var parent = node.parent; - if (parent.kind === 185 && parent.operatorToken.kind === 56 && parent.left === node) { - return true; - } - if (parent.kind === 249) { - return isAssignmentTarget(parent.parent); - } - if (parent.kind === 168) { - return isAssignmentTarget(parent); + return parent.kind === 186 && + parent.operatorToken.kind === 56 && + parent.left === node ? parent : undefined; + } + function isAssignmentTarget(node) { + return !!getAssignmentRoot(node); + } + function isCompoundAssignmentTarget(node) { + var parent = node.parent; + if (parent.kind === 186 && parent.left === node) { + var operator = parent.operatorToken.kind; + return operator >= 56 && operator <= 68; } return false; } @@ -18158,8 +18987,8 @@ var ts; return checkIteratedTypeOrElementType(arrayOrIterableType, node.expression, false); } function hasDefaultValue(node) { - return (node.kind === 167 && !!node.initializer) || - (node.kind === 185 && node.operatorToken.kind === 56); + return (node.kind === 168 && !!node.initializer) || + (node.kind === 186 && node.operatorToken.kind === 56); } function checkArrayLiteral(node, contextualMapper) { var elements = node.elements; @@ -18168,7 +18997,7 @@ var ts; var inDestructuringPattern = isAssignmentTarget(node); for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) { var e = elements_1[_i]; - if (inDestructuringPattern && e.kind === 189) { + if (inDestructuringPattern && e.kind === 190) { var restArrayType = checkExpression(e.expression, contextualMapper); var restElementType = getIndexTypeOfType(restArrayType, 1) || (languageVersion >= 2 ? getElementTypeOfIterable(restArrayType, undefined) : undefined); @@ -18180,7 +19009,7 @@ var ts; var type = checkExpression(e, contextualMapper); elementTypes.push(type); } - hasSpreadElement = hasSpreadElement || e.kind === 189; + hasSpreadElement = hasSpreadElement || e.kind === 190; } if (!hasSpreadElement) { if (inDestructuringPattern && elementTypes.length) { @@ -18191,7 +19020,7 @@ var ts; var contextualType = getApparentTypeOfContextualType(node); if (contextualType && contextualTypeIsTupleLikeType(contextualType)) { var pattern = contextualType.pattern; - if (pattern && (pattern.kind === 166 || pattern.kind === 168)) { + if (pattern && (pattern.kind === 167 || pattern.kind === 169)) { var patternElements = pattern.elements; for (var i = elementTypes.length; i < patternElements.length; i++) { var patternElement = patternElements[i]; @@ -18199,7 +19028,7 @@ var ts; elementTypes.push(contextualType.elementTypes[i]); } else { - if (patternElement.kind !== 191) { + if (patternElement.kind !== 192) { error(patternElement, ts.Diagnostics.Initializer_provides_no_value_for_this_binding_element_and_the_binding_element_has_no_default_value); } elementTypes.push(unknownType); @@ -18211,10 +19040,10 @@ var ts; } } } - return createArrayType(elementTypes.length ? getUnionType(elementTypes) : undefinedType); + return createArrayType(elementTypes.length ? getUnionType(elementTypes) : emptyArrayElementType); } function isNumericName(name) { - return name.kind === 138 ? isNumericComputedName(name) : isNumericLiteralName(name.text); + return name.kind === 139 ? isNumericComputedName(name) : isNumericLiteralName(name.text); } function isNumericComputedName(name) { return isTypeAnyOrAllConstituentTypesHaveKind(checkComputedPropertyName(name), 132); @@ -18255,7 +19084,7 @@ var ts; var propertiesArray = []; var contextualType = getApparentTypeOfContextualType(node); var contextualTypeHasPattern = contextualType && contextualType.pattern && - (contextualType.pattern.kind === 165 || contextualType.pattern.kind === 169); + (contextualType.pattern.kind === 166 || contextualType.pattern.kind === 170); var typeFlags = 0; var patternWithComputedProperties = false; var hasComputedStringProperty = false; @@ -18263,25 +19092,25 @@ var ts; for (var _i = 0, _a = node.properties; _i < _a.length; _i++) { var memberDecl = _a[_i]; var member = memberDecl.symbol; - if (memberDecl.kind === 249 || - memberDecl.kind === 250 || + if (memberDecl.kind === 252 || + memberDecl.kind === 253 || ts.isObjectLiteralMethod(memberDecl)) { var type = void 0; - if (memberDecl.kind === 249) { + if (memberDecl.kind === 252) { type = checkPropertyAssignment(memberDecl, contextualMapper); } - else if (memberDecl.kind === 145) { + else if (memberDecl.kind === 146) { type = checkObjectLiteralMethod(memberDecl, contextualMapper); } else { - ts.Debug.assert(memberDecl.kind === 250); + ts.Debug.assert(memberDecl.kind === 253); type = checkExpression(memberDecl.name, contextualMapper); } typeFlags |= type.flags; var prop = createSymbol(4 | 67108864 | member.flags, member.name); if (inDestructuringPattern) { - var isOptional = (memberDecl.kind === 249 && hasDefaultValue(memberDecl.initializer)) || - (memberDecl.kind === 250 && memberDecl.objectAssignmentInitializer); + var isOptional = (memberDecl.kind === 252 && hasDefaultValue(memberDecl.initializer)) || + (memberDecl.kind === 253 && memberDecl.objectAssignmentInitializer); if (isOptional) { prop.flags |= 536870912; } @@ -18308,7 +19137,7 @@ var ts; member = prop; } else { - ts.Debug.assert(memberDecl.kind === 147 || memberDecl.kind === 148); + ts.Debug.assert(memberDecl.kind === 148 || memberDecl.kind === 149); checkAccessorDeclaration(memberDecl); } if (ts.hasDynamicName(memberDecl)) { @@ -18352,17 +19181,22 @@ var ts; } function checkJsxElement(node) { checkJsxOpeningLikeElement(node.openingElement); - getJsxTagSymbol(node.closingElement); + if (isJsxIntrinsicIdentifier(node.closingElement.tagName)) { + getIntrinsicTagSymbol(node.closingElement); + } + else { + checkExpression(node.closingElement.tagName); + } for (var _i = 0, _a = node.children; _i < _a.length; _i++) { var child = _a[_i]; switch (child.kind) { - case 244: + case 247: checkJsxExpression(child); break; - case 237: + case 240: checkJsxElement(child); break; - case 238: + case 241: checkJsxSelfClosingElement(child); break; } @@ -18373,7 +19207,7 @@ var ts; return name.indexOf("-") < 0; } function isJsxIntrinsicIdentifier(tagName) { - if (tagName.kind === 137) { + if (tagName.kind === 138) { return false; } else { @@ -18436,14 +19270,6 @@ var ts; } return jsxTypes[name]; } - function getJsxTagSymbol(node) { - if (isJsxIntrinsicIdentifier(node.tagName)) { - return getIntrinsicTagSymbol(node); - } - else { - return checkExpression(node.tagName).symbol; - } - } function getIntrinsicTagSymbol(node) { var links = getNodeLinks(node); if (!links.resolvedSymbol) { @@ -18523,17 +19349,19 @@ var ts; var elemInstanceType = getJsxElementInstanceType(node); var elemClassType = getJsxGlobalElementClassType(); if (!elemClassType || !isTypeAssignableTo(elemInstanceType, elemClassType)) { - var elemType = checkExpression(node.tagName); - var callSignatures = elemType && getSignaturesOfType(elemType, 0); - var callSignature = callSignatures && callSignatures.length > 0 && callSignatures[0]; - var callReturnType = callSignature && getReturnTypeOfSignature(callSignature); - var paramType = callReturnType && (callSignature.parameters.length === 0 ? emptyObjectType : getTypeOfSymbol(callSignature.parameters[0])); - if (callReturnType && isTypeAssignableTo(callReturnType, jsxElementType)) { - var intrinsicAttributes = getJsxType(JsxNames.IntrinsicAttributes); - if (intrinsicAttributes !== unknownType) { - paramType = intersectTypes(intrinsicAttributes, paramType); + if (jsxElementType) { + var elemType = checkExpression(node.tagName); + var callSignatures = elemType && getSignaturesOfType(elemType, 0); + var callSignature = callSignatures && callSignatures.length > 0 && callSignatures[0]; + var callReturnType = callSignature && getReturnTypeOfSignature(callSignature); + var paramType = callReturnType && (callSignature.parameters.length === 0 ? emptyObjectType : getTypeOfSymbol(callSignature.parameters[0])); + if (callReturnType && isTypeAssignableTo(callReturnType, jsxElementType)) { + var intrinsicAttributes = getJsxType(JsxNames.IntrinsicAttributes); + if (intrinsicAttributes !== unknownType) { + paramType = intersectTypes(intrinsicAttributes, paramType); + } + return links.resolvedJsxType = paramType; } - return links.resolvedJsxType = paramType; } } if (elemClassType) { @@ -18625,11 +19453,11 @@ var ts; var nameTable = {}; var sawSpreadedAny = false; for (var i = node.attributes.length - 1; i >= 0; i--) { - if (node.attributes[i].kind === 242) { + if (node.attributes[i].kind === 245) { checkJsxAttribute((node.attributes[i]), targetAttributesType, nameTable); } else { - ts.Debug.assert(node.attributes[i].kind === 243); + ts.Debug.assert(node.attributes[i].kind === 246); var spreadType = checkJsxSpreadAttribute((node.attributes[i]), targetAttributesType, nameTable); if (isTypeAny(spreadType)) { sawSpreadedAny = true; @@ -18655,7 +19483,7 @@ var ts; } } function getDeclarationKindFromSymbol(s) { - return s.valueDeclaration ? s.valueDeclaration.kind : 143; + return s.valueDeclaration ? s.valueDeclaration.kind : 144; } function getDeclarationFlagsFromSymbol(s) { return s.valueDeclaration ? ts.getCombinedNodeFlags(s.valueDeclaration) : s.flags & 134217728 ? 4 | 32 : 0; @@ -18663,11 +19491,11 @@ var ts; function checkClassPropertyAccess(node, left, type, prop) { var flags = getDeclarationFlagsFromSymbol(prop); var declaringClass = getDeclaredTypeOfSymbol(getParentOfSymbol(prop)); + var errorNode = node.kind === 171 || node.kind === 217 ? + node.name : + node.right; if (left.kind === 95) { - var errorNode = node.kind === 170 ? - node.name : - node.right; - if (languageVersion < 2 && getDeclarationKindFromSymbol(prop) !== 145) { + if (languageVersion < 2 && getDeclarationKindFromSymbol(prop) !== 146) { error(errorNode, ts.Diagnostics.Only_public_and_protected_methods_of_the_base_class_are_accessible_via_the_super_keyword); return false; } @@ -18679,11 +19507,10 @@ var ts; if (!(flags & (8 | 16))) { return true; } - var enclosingClassDeclaration = ts.getContainingClass(node); - var enclosingClass = enclosingClassDeclaration ? getDeclaredTypeOfSymbol(getSymbolOfNode(enclosingClassDeclaration)) : undefined; if (flags & 8) { - if (declaringClass !== enclosingClass) { - error(node, ts.Diagnostics.Property_0_is_private_and_only_accessible_within_class_1, symbolToString(prop), typeToString(declaringClass)); + var declaringClassDeclaration = getClassLikeDeclarationOfSymbol(getParentOfSymbol(prop)); + if (!isNodeWithinClass(node, declaringClassDeclaration)) { + error(errorNode, ts.Diagnostics.Property_0_is_private_and_only_accessible_within_class_1, symbolToString(prop), typeToString(declaringClass)); return false; } return true; @@ -18691,8 +19518,12 @@ var ts; if (left.kind === 95) { return true; } - if (!enclosingClass || !hasBaseType(enclosingClass, declaringClass)) { - error(node, ts.Diagnostics.Property_0_is_protected_and_only_accessible_within_class_1_and_its_subclasses, symbolToString(prop), typeToString(declaringClass)); + var enclosingClass = forEachEnclosingClass(node, function (enclosingDeclaration) { + var enclosingClass = getDeclaredTypeOfSymbol(getSymbolOfNode(enclosingDeclaration)); + return hasBaseType(enclosingClass, declaringClass) ? enclosingClass : undefined; + }); + if (!enclosingClass) { + error(errorNode, ts.Diagnostics.Property_0_is_protected_and_only_accessible_within_class_1_and_its_subclasses, symbolToString(prop), typeToString(declaringClass)); return false; } if (flags & 32) { @@ -18702,11 +19533,19 @@ var ts; type = getConstraintOfTypeParameter(type); } if (!(getTargetType(type).flags & (1024 | 2048) && hasBaseType(type, enclosingClass))) { - error(node, ts.Diagnostics.Property_0_is_protected_and_only_accessible_through_an_instance_of_class_1, symbolToString(prop), typeToString(enclosingClass)); + error(errorNode, ts.Diagnostics.Property_0_is_protected_and_only_accessible_through_an_instance_of_class_1, symbolToString(prop), typeToString(enclosingClass)); return false; } return true; } + function checkNonNullExpression(node) { + var type = checkExpression(node); + if (strictNullChecks && getNullableKind(type)) { + error(node, ts.Diagnostics.Object_is_possibly_null_or_undefined); + return getNonNullableType(type); + } + return type; + } function checkPropertyAccessExpression(node) { return checkPropertyAccessExpressionOrQualifiedName(node, node.expression, node.name); } @@ -18714,7 +19553,7 @@ var ts; return checkPropertyAccessExpressionOrQualifiedName(node, node.left, node.right); } function checkPropertyAccessExpressionOrQualifiedName(node, left, right) { - var type = checkExpression(left); + var type = checkNonNullExpression(left); if (isTypeAny(type)) { return type; } @@ -18733,10 +19572,12 @@ var ts; if (prop.parent && prop.parent.flags & 32) { checkClassPropertyAccess(node, left, apparentType, prop); } - return getTypeOfSymbol(prop); + var propType = getTypeOfSymbol(prop); + return node.kind === 171 && prop.flags & 4 ? + getNarrowedTypeOfReference(propType, node) : propType; } function isValidPropertyAccess(node, propertyName) { - var left = node.kind === 170 + var left = node.kind === 171 ? node.expression : node.left; var type = checkExpression(left); @@ -18750,7 +19591,7 @@ var ts; } function getForInVariableSymbol(node) { var initializer = node.initializer; - if (initializer.kind === 216) { + if (initializer.kind === 218) { var variable = initializer.declarations[0]; if (variable && !ts.isBindingPattern(variable.name)) { return getSymbolOfNode(variable); @@ -18772,7 +19613,7 @@ var ts; var child = expr; var node = expr.parent; while (node) { - if (node.kind === 204 && + if (node.kind === 206 && child === node.statement && getForInVariableSymbol(node) === symbol && hasNumericPropertyNames(checkExpression(node.expression))) { @@ -18788,7 +19629,7 @@ var ts; function checkIndexedAccess(node) { if (!node.argumentExpression) { var sourceFile = ts.getSourceFileOfNode(node); - if (node.parent.kind === 173 && node.parent.expression === node) { + if (node.parent.kind === 174 && node.parent.expression === node) { var start = ts.skipTrivia(sourceFile.text, node.expression.end); var end = node.end; grammarErrorAtPos(sourceFile, start, end - start, ts.Diagnostics.new_T_cannot_be_used_to_create_an_array_Use_new_Array_T_instead); @@ -18799,7 +19640,7 @@ var ts; grammarErrorAtPos(sourceFile, start, end - start, ts.Diagnostics.Expression_expected); } } - var objectType = getApparentType(checkExpression(node.expression)); + var objectType = getApparentType(checkNonNullExpression(node.expression)); var indexType = node.argumentExpression ? checkExpression(node.argumentExpression) : unknownType; if (objectType === unknownType) { return unknownType; @@ -18811,15 +19652,15 @@ var ts; return unknownType; } if (node.argumentExpression) { - var name_11 = getPropertyNameForIndexedAccess(node.argumentExpression, indexType); - if (name_11 !== undefined) { - var prop = getPropertyOfType(objectType, name_11); + var name_12 = getPropertyNameForIndexedAccess(node.argumentExpression, indexType); + if (name_12 !== undefined) { + var prop = getPropertyOfType(objectType, name_12); if (prop) { getNodeLinks(node).resolvedSymbol = prop; return getTypeOfSymbol(prop); } else if (isConstEnum) { - error(node.argumentExpression, ts.Diagnostics.Property_0_does_not_exist_on_const_enum_1, name_11, symbolToString(objectType.symbol)); + error(node.argumentExpression, ts.Diagnostics.Property_0_does_not_exist_on_const_enum_1, name_12, symbolToString(objectType.symbol)); return unknownType; } } @@ -18851,7 +19692,7 @@ var ts; if (indexArgumentExpression.kind === 9 || indexArgumentExpression.kind === 8) { return indexArgumentExpression.text; } - if (indexArgumentExpression.kind === 171 || indexArgumentExpression.kind === 170) { + if (indexArgumentExpression.kind === 172 || indexArgumentExpression.kind === 171) { var value = getConstantValue(indexArgumentExpression); if (value !== undefined) { return value.toString(); @@ -18894,10 +19735,10 @@ var ts; return true; } function resolveUntypedCall(node) { - if (node.kind === 174) { + if (node.kind === 175) { checkExpression(node.template); } - else if (node.kind !== 141) { + else if (node.kind !== 142) { ts.forEach(node.arguments, function (argument) { checkExpression(argument); }); @@ -18919,19 +19760,19 @@ var ts; for (var _i = 0, signatures_2 = signatures; _i < signatures_2.length; _i++) { var signature = signatures_2[_i]; var symbol = signature.declaration && getSymbolOfNode(signature.declaration); - var parent_6 = signature.declaration && signature.declaration.parent; + var parent_7 = signature.declaration && signature.declaration.parent; if (!lastSymbol || symbol === lastSymbol) { - if (lastParent && parent_6 === lastParent) { + if (lastParent && parent_7 === lastParent) { index++; } else { - lastParent = parent_6; + lastParent = parent_7; index = cutoffIndex; } } else { index = cutoffIndex = result.length; - lastParent = parent_6; + lastParent = parent_7; } lastSymbol = symbol; if (signature.hasStringLiterals) { @@ -18948,7 +19789,7 @@ var ts; function getSpreadArgumentIndex(args) { for (var i = 0; i < args.length; i++) { var arg = args[i]; - if (arg && arg.kind === 189) { + if (arg && arg.kind === 190) { return i; } } @@ -18960,11 +19801,11 @@ var ts; var callIsIncomplete; var isDecorator; var spreadArgIndex = -1; - if (node.kind === 174) { + if (node.kind === 175) { var tagExpression = node; adjustedArgCount = args.length; typeArguments = undefined; - if (tagExpression.template.kind === 187) { + if (tagExpression.template.kind === 188) { var templateExpression = tagExpression.template; var lastSpan = ts.lastOrUndefined(templateExpression.templateSpans); ts.Debug.assert(lastSpan !== undefined); @@ -18976,7 +19817,7 @@ var ts; callIsIncomplete = !!templateLiteral.isUnterminated; } } - else if (node.kind === 141) { + else if (node.kind === 142) { isDecorator = true; typeArguments = undefined; adjustedArgCount = getEffectiveArgumentCount(node, undefined, signature); @@ -18984,7 +19825,7 @@ var ts; else { var callExpression = node; if (!callExpression.arguments) { - ts.Debug.assert(callExpression.kind === 173); + ts.Debug.assert(callExpression.kind === 174); return signature.minArgumentCount === 0; } adjustedArgCount = callExpression.arguments.hasTrailingComma ? args.length + 1 : args.length; @@ -19034,10 +19875,15 @@ var ts; if (context.failedTypeParameterIndex !== undefined && !context.inferences[context.failedTypeParameterIndex].isFixed) { context.failedTypeParameterIndex = undefined; } + if (signature.thisType) { + var thisArgumentNode = getThisArgumentOfCall(node); + var thisArgumentType = thisArgumentNode ? checkExpression(thisArgumentNode) : voidType; + inferTypes(context, thisArgumentType, signature.thisType); + } var argCount = getEffectiveArgumentCount(node, args, signature); for (var i = 0; i < argCount; i++) { var arg = getEffectiveArgument(node, args, i); - if (arg === undefined || arg.kind !== 191) { + if (arg === undefined || arg.kind !== 192) { var paramType = getTypeAtPosition(signature, i); var argType = getEffectiveArgumentType(node, i, arg); if (argType === undefined) { @@ -19083,10 +19929,20 @@ var ts; return typeArgumentsAreAssignable; } function checkApplicableSignature(node, args, signature, relation, excludeArgument, reportErrors) { + if (signature.thisType && signature.thisType !== voidType && node.kind !== 174) { + var thisArgumentNode = getThisArgumentOfCall(node); + var thisArgumentType = thisArgumentNode ? checkExpression(thisArgumentNode) : voidType; + var errorNode = reportErrors ? (thisArgumentNode || node) : undefined; + var headMessage_1 = ts.Diagnostics.The_this_context_of_type_0_is_not_assignable_to_method_s_this_of_type_1; + if (!checkTypeRelatedTo(thisArgumentType, signature.thisType, relation, errorNode, headMessage_1)) { + return false; + } + } + var headMessage = ts.Diagnostics.Argument_of_type_0_is_not_assignable_to_parameter_of_type_1; var argCount = getEffectiveArgumentCount(node, args, signature); for (var i = 0; i < argCount; i++) { var arg = getEffectiveArgument(node, args, i); - if (arg === undefined || arg.kind !== 191) { + if (arg === undefined || arg.kind !== 192) { var paramType = getTypeAtPosition(signature, i); var argType = getEffectiveArgumentType(node, i, arg); if (argType === undefined) { @@ -19095,7 +19951,6 @@ var ts; : checkExpressionWithContextualType(arg, paramType, excludeArgument && excludeArgument[i] ? identityMapper : undefined); } var errorNode = reportErrors ? getEffectiveArgumentErrorNode(node, i, arg) : undefined; - var headMessage = ts.Diagnostics.Argument_of_type_0_is_not_assignable_to_parameter_of_type_1; if (!checkTypeRelatedTo(argType, paramType, relation, errorNode, headMessage)) { return false; } @@ -19103,18 +19958,29 @@ var ts; } return true; } + function getThisArgumentOfCall(node) { + if (node.kind === 173) { + var callee = node.expression; + if (callee.kind === 171) { + return callee.expression; + } + else if (callee.kind === 172) { + return callee.expression; + } + } + } function getEffectiveCallArguments(node) { var args; - if (node.kind === 174) { + if (node.kind === 175) { var template = node.template; args = [undefined]; - if (template.kind === 187) { + if (template.kind === 188) { ts.forEach(template.templateSpans, function (span) { args.push(span.expression); }); } } - else if (node.kind === 141) { + else if (node.kind === 142) { return undefined; } else { @@ -19123,21 +19989,21 @@ var ts; return args; } function getEffectiveArgumentCount(node, args, signature) { - if (node.kind === 141) { + if (node.kind === 142) { switch (node.parent.kind) { - case 218: - case 190: + case 220: + case 191: return 1; - case 143: + case 144: return 2; - case 145: - case 147: + case 146: case 148: + case 149: if (languageVersion === 0) { return 2; } return signature.parameters.length >= 3 ? 3 : 2; - case 140: + case 141: return 3; } } @@ -19146,48 +20012,48 @@ var ts; } } function getEffectiveDecoratorFirstArgumentType(node) { - if (node.kind === 218) { + if (node.kind === 220) { var classSymbol = getSymbolOfNode(node); return getTypeOfSymbol(classSymbol); } - if (node.kind === 140) { + if (node.kind === 141) { node = node.parent; - if (node.kind === 146) { + if (node.kind === 147) { var classSymbol = getSymbolOfNode(node); return getTypeOfSymbol(classSymbol); } } - if (node.kind === 143 || - node.kind === 145 || - node.kind === 147 || - node.kind === 148) { + if (node.kind === 144 || + node.kind === 146 || + node.kind === 148 || + node.kind === 149) { return getParentTypeOfClassElement(node); } ts.Debug.fail("Unsupported decorator target."); return unknownType; } function getEffectiveDecoratorSecondArgumentType(node) { - if (node.kind === 218) { + if (node.kind === 220) { ts.Debug.fail("Class decorators should not have a second synthetic argument."); return unknownType; } - if (node.kind === 140) { + if (node.kind === 141) { node = node.parent; - if (node.kind === 146) { + if (node.kind === 147) { return anyType; } } - if (node.kind === 143 || - node.kind === 145 || - node.kind === 147 || - node.kind === 148) { + if (node.kind === 144 || + node.kind === 146 || + node.kind === 148 || + node.kind === 149) { var element = node; switch (element.name.kind) { case 69: case 8: case 9: return getStringLiteralTypeForText(element.name.text); - case 138: + case 139: var nameType = checkComputedPropertyName(element.name); if (isTypeOfKind(nameType, 16777216)) { return nameType; @@ -19204,20 +20070,20 @@ var ts; return unknownType; } function getEffectiveDecoratorThirdArgumentType(node) { - if (node.kind === 218) { + if (node.kind === 220) { ts.Debug.fail("Class decorators should not have a third synthetic argument."); return unknownType; } - if (node.kind === 140) { + if (node.kind === 141) { return numberType; } - if (node.kind === 143) { + if (node.kind === 144) { ts.Debug.fail("Property decorators should not have a third synthetic argument."); return unknownType; } - if (node.kind === 145 || - node.kind === 147 || - node.kind === 148) { + if (node.kind === 146 || + node.kind === 148 || + node.kind === 149) { var propertyType = getTypeOfNode(node); return createTypedPropertyDescriptorType(propertyType); } @@ -19238,26 +20104,26 @@ var ts; return unknownType; } function getEffectiveArgumentType(node, argIndex, arg) { - if (node.kind === 141) { + if (node.kind === 142) { return getEffectiveDecoratorArgumentType(node, argIndex); } - else if (argIndex === 0 && node.kind === 174) { - return globalTemplateStringsArrayType; + else if (argIndex === 0 && node.kind === 175) { + return getGlobalTemplateStringsArrayType(); } return undefined; } function getEffectiveArgument(node, args, argIndex) { - if (node.kind === 141 || - (argIndex === 0 && node.kind === 174)) { + if (node.kind === 142 || + (argIndex === 0 && node.kind === 175)) { return undefined; } return args[argIndex]; } function getEffectiveArgumentErrorNode(node, argIndex, arg) { - if (node.kind === 141) { + if (node.kind === 142) { return node.expression; } - else if (argIndex === 0 && node.kind === 174) { + else if (argIndex === 0 && node.kind === 175) { return node.template; } else { @@ -19265,8 +20131,8 @@ var ts; } } function resolveCall(node, signatures, candidatesOutArray, headMessage) { - var isTaggedTemplate = node.kind === 174; - var isDecorator = node.kind === 141; + var isTaggedTemplate = node.kind === 175; + var isDecorator = node.kind === 142; var typeArguments; if (!isTaggedTemplate && !isDecorator) { typeArguments = node.typeArguments; @@ -19313,8 +20179,8 @@ var ts; } else if (candidateForTypeArgumentError) { if (!isTaggedTemplate && !isDecorator && typeArguments) { - var typeArguments_1 = node.typeArguments; - checkTypeArguments(candidateForTypeArgumentError, typeArguments_1, ts.map(typeArguments_1, getTypeFromTypeNode), true, headMessage); + var typeArguments_2 = node.typeArguments; + checkTypeArguments(candidateForTypeArgumentError, typeArguments_2, ts.map(typeArguments_2, getTypeFromTypeNode), true, headMessage); } else { ts.Debug.assert(resultOfFailedInference.failedTypeParameterIndex >= 0); @@ -19420,7 +20286,7 @@ var ts; } return resolveUntypedCall(node); } - var funcType = checkExpression(node.expression); + var funcType = checkNonNullExpression(node.expression); var apparentType = getApparentType(funcType); if (apparentType === unknownType) { return resolveErrorCall(node); @@ -19451,7 +20317,7 @@ var ts; error(node.arguments[spreadIndex], ts.Diagnostics.Spread_operator_in_new_expressions_is_only_available_when_targeting_ECMAScript_5_and_higher); } } - var expressionType = checkExpression(node.expression); + var expressionType = checkNonNullExpression(node.expression); expressionType = getApparentType(expressionType); if (expressionType === unknownType) { return resolveErrorCall(node); @@ -19480,6 +20346,9 @@ var ts; if (getReturnTypeOfSignature(signature) !== voidType) { error(node, ts.Diagnostics.Only_a_void_function_can_be_called_with_the_new_keyword); } + if (signature.thisType === voidType) { + error(node, ts.Diagnostics.A_function_that_is_called_with_the_new_keyword_cannot_have_a_this_type_that_is_void); + } return signature; } error(node, ts.Diagnostics.Cannot_use_new_with_an_expression_whose_type_lacks_a_call_or_construct_signature); @@ -19525,16 +20394,16 @@ var ts; } function getDiagnosticHeadMessageForDecoratorResolution(node) { switch (node.parent.kind) { - case 218: - case 190: + case 220: + case 191: return ts.Diagnostics.Unable_to_resolve_signature_of_class_decorator_when_called_as_an_expression; - case 140: + case 141: return ts.Diagnostics.Unable_to_resolve_signature_of_parameter_decorator_when_called_as_an_expression; - case 143: + case 144: return ts.Diagnostics.Unable_to_resolve_signature_of_property_decorator_when_called_as_an_expression; - case 145: - case 147: + case 146: case 148: + case 149: return ts.Diagnostics.Unable_to_resolve_signature_of_method_decorator_when_called_as_an_expression; } } @@ -19550,7 +20419,7 @@ var ts; } var headMessage = getDiagnosticHeadMessageForDecoratorResolution(node); if (!callSignatures.length) { - var errorInfo; + var errorInfo = void 0; errorInfo = ts.chainDiagnosticMessages(errorInfo, ts.Diagnostics.Cannot_invoke_an_expression_whose_type_lacks_a_call_signature); errorInfo = ts.chainDiagnosticMessages(errorInfo, headMessage); diagnostics.add(ts.createDiagnosticForNodeFromMessageChain(node, errorInfo)); @@ -19562,16 +20431,16 @@ var ts; var links = getNodeLinks(node); if (!links.resolvedSignature || candidatesOutArray) { links.resolvedSignature = anySignature; - if (node.kind === 172) { + if (node.kind === 173) { links.resolvedSignature = resolveCallExpression(node, candidatesOutArray); } - else if (node.kind === 173) { + else if (node.kind === 174) { links.resolvedSignature = resolveNewExpression(node, candidatesOutArray); } - else if (node.kind === 174) { + else if (node.kind === 175) { links.resolvedSignature = resolveTaggedTemplateExpression(node, candidatesOutArray); } - else if (node.kind === 141) { + else if (node.kind === 142) { links.resolvedSignature = resolveDecorator(node, candidatesOutArray); } else { @@ -19593,12 +20462,12 @@ var ts; if (node.expression.kind === 95) { return voidType; } - if (node.kind === 173) { + if (node.kind === 174) { var declaration = signature.declaration; if (declaration && - declaration.kind !== 146 && - declaration.kind !== 150 && - declaration.kind !== 155 && + declaration.kind !== 147 && + declaration.kind !== 151 && + declaration.kind !== 156 && !ts.isJSDocConstructSignature(declaration)) { var funcSymbol = checkExpression(node.expression).symbol; if (funcSymbol && funcSymbol.members && (funcSymbol.flags & 16)) { @@ -19623,18 +20492,29 @@ var ts; var targetType = getTypeFromTypeNode(node.type); if (produceDiagnostics && targetType !== unknownType) { var widenedType = getWidenedType(exprType); - var bothAreStringLike = maybeTypeOfKind(targetType, 258) && - maybeTypeOfKind(widenedType, 258); - if (!bothAreStringLike && !(isTypeAssignableTo(targetType, widenedType))) { - checkTypeAssignableTo(exprType, targetType, node, ts.Diagnostics.Neither_type_0_nor_type_1_is_assignable_to_the_other); + if (!isTypeComparableTo(targetType, widenedType)) { + checkTypeComparableTo(exprType, targetType, node, ts.Diagnostics.Type_0_cannot_be_converted_to_type_1); } } return targetType; } + function checkNonNullAssertion(node) { + return getNonNullableType(checkExpression(node.expression)); + } + function getTypeOfParameter(symbol) { + var type = getTypeOfSymbol(symbol); + if (strictNullChecks) { + var declaration = symbol.valueDeclaration; + if (declaration && declaration.initializer) { + return addNullableKind(type, 32); + } + } + return type; + } function getTypeAtPosition(signature, pos) { return signature.hasRestParameter ? - pos < signature.parameters.length - 1 ? getTypeOfSymbol(signature.parameters[pos]) : getRestTypeOfSignature(signature) : - pos < signature.parameters.length ? getTypeOfSymbol(signature.parameters[pos]) : anyType; + pos < signature.parameters.length - 1 ? getTypeOfParameter(signature.parameters[pos]) : getRestTypeOfSignature(signature) : + pos < signature.parameters.length ? getTypeOfParameter(signature.parameters[pos]) : anyType; } function assignContextualParameterTypes(signature, context, mapper) { var len = signature.parameters.length - (signature.hasRestParameter ? 1 : 0); @@ -19653,7 +20533,7 @@ var ts; if (ts.isBindingPattern(node.name)) { for (var _i = 0, _a = node.name.elements; _i < _a.length; _i++) { var element = _a[_i]; - if (element.kind !== 191) { + if (element.kind !== 192) { if (element.name.kind === 69) { getSymbolLinks(getSymbolOfNode(element)).type = getTypeForBindingElement(element); } @@ -19694,14 +20574,14 @@ var ts; } var isAsync = ts.isAsyncFunctionLike(func); var type; - if (func.body.kind !== 196) { + if (func.body.kind !== 198) { type = checkExpressionCached(func.body, contextualMapper); if (isAsync) { type = checkAwaitedType(type, func, ts.Diagnostics.Return_expression_in_async_function_does_not_have_a_valid_callable_then_member); } } else { - var types; + var types = void 0; var funcIsGenerator = !!func.asteriskToken; if (funcIsGenerator) { types = checkAndAggregateYieldOperandTypes(func.body, contextualMapper); @@ -19714,7 +20594,8 @@ var ts; } } else { - types = checkAndAggregateReturnExpressionTypes(func.body, contextualMapper, isAsync); + var hasImplicitReturn = !!(func.flags & 32768); + types = checkAndAggregateReturnExpressionTypes(func.body, contextualMapper, isAsync, hasImplicitReturn); if (types.length === 0) { if (isAsync) { var promiseType = createPromiseType(voidType); @@ -19776,8 +20657,9 @@ var ts; }); return aggregatedTypes; } - function checkAndAggregateReturnExpressionTypes(body, contextualMapper, isAsync) { + function checkAndAggregateReturnExpressionTypes(body, contextualMapper, isAsync, hasImplicitReturn) { var aggregatedTypes = []; + var hasOmittedExpressions = false; ts.forEachReturnStatement(body, function (returnStatement) { var expr = returnStatement.expression; if (expr) { @@ -19789,7 +20671,15 @@ var ts; aggregatedTypes.push(type); } } + else { + hasOmittedExpressions = true; + } }); + if (strictNullChecks && aggregatedTypes.length && (hasOmittedExpressions || hasImplicitReturn)) { + if (!ts.contains(aggregatedTypes, undefinedType)) { + aggregatedTypes.push(undefinedType); + } + } return aggregatedTypes; } function checkAllCodePathsInNonVoidFunctionReturnOrThrow(func, returnType) { @@ -19799,19 +20689,23 @@ var ts; if (returnType && maybeTypeOfKind(returnType, 1 | 16)) { return; } - if (ts.nodeIsMissing(func.body) || func.body.kind !== 196 || !(func.flags & 32768)) { + if (ts.nodeIsMissing(func.body) || func.body.kind !== 198 || !(func.flags & 32768)) { return; } var hasExplicitReturn = func.flags & 65536; if (returnType && !hasExplicitReturn) { error(func.type, ts.Diagnostics.A_function_whose_declared_type_is_neither_void_nor_any_must_return_a_value); } + else if (returnType && strictNullChecks && !isTypeAssignableTo(undefinedType, returnType)) { + error(func.type, ts.Diagnostics.Function_lacks_ending_return_statement_and_return_type_does_not_include_undefined); + } else if (compilerOptions.noImplicitReturns) { if (!returnType) { - var inferredReturnType = hasExplicitReturn - ? getReturnTypeOfSignature(getSignatureFromDeclaration(func)) - : voidType; - if (inferredReturnType === voidType || isTypeAny(inferredReturnType)) { + if (!hasExplicitReturn) { + return; + } + var inferredReturnType = getReturnTypeOfSignature(getSignatureFromDeclaration(func)); + if (isUnwrappedReturnTypeVoidOrAny(func, inferredReturnType)) { return; } } @@ -19819,12 +20713,13 @@ var ts; } } function checkFunctionExpressionOrObjectLiteralMethod(node, contextualMapper) { - ts.Debug.assert(node.kind !== 145 || ts.isObjectLiteralMethod(node)); + ts.Debug.assert(node.kind !== 146 || ts.isObjectLiteralMethod(node)); var hasGrammarError = checkGrammarFunctionLikeDeclaration(node); - if (!hasGrammarError && node.kind === 177) { + if (!hasGrammarError && node.kind === 178) { checkGrammarForGenerator(node); } if (contextualMapper === identityMapper && isContextSensitive(node)) { + checkNodeDeferred(node); return anyFunctionType; } var links = getNodeLinks(node); @@ -19854,14 +20749,14 @@ var ts; } } } - if (produceDiagnostics && node.kind !== 145 && node.kind !== 144) { + if (produceDiagnostics && node.kind !== 146 && node.kind !== 145) { checkCollisionWithCapturedSuperVariable(node, node.name); checkCollisionWithCapturedThisVariable(node, node.name); } return type; } function checkFunctionExpressionOrObjectLiteralMethodDeferred(node) { - ts.Debug.assert(node.kind !== 145 || ts.isObjectLiteralMethod(node)); + ts.Debug.assert(node.kind !== 146 || ts.isObjectLiteralMethod(node)); var isAsync = ts.isAsyncFunctionLike(node); var returnOrPromisedType = node.type && (isAsync ? checkAsyncFunctionReturnType(node) : getTypeFromTypeNode(node.type)); if (!node.asteriskToken) { @@ -19871,7 +20766,7 @@ var ts; if (!node.type) { getReturnTypeOfSignature(getSignatureFromDeclaration(node)); } - if (node.body.kind === 196) { + if (node.body.kind === 198) { checkSourceElement(node.body); } else { @@ -19904,23 +20799,23 @@ var ts; function isReferenceToReadonlyEntity(expr, symbol) { if (isReadonlySymbol(symbol)) { if (symbol.flags & 4 && - (expr.kind === 170 || expr.kind === 171) && + (expr.kind === 171 || expr.kind === 172) && expr.expression.kind === 97) { var func = ts.getContainingFunction(expr); - return !(func && func.kind === 146 && func.parent === symbol.valueDeclaration.parent); + return !(func && func.kind === 147 && func.parent === symbol.valueDeclaration.parent); } return true; } return false; } function isReferenceThroughNamespaceImport(expr) { - if (expr.kind === 170 || expr.kind === 171) { + if (expr.kind === 171 || expr.kind === 172) { var node = skipParenthesizedNodes(expr.expression); if (node.kind === 69) { var symbol = getNodeLinks(node).resolvedSymbol; if (symbol.flags & 8388608) { var declaration = getDeclarationOfAliasSymbol(symbol); - return declaration && declaration.kind === 228; + return declaration && declaration.kind === 231; } } } @@ -19928,7 +20823,7 @@ var ts; } function checkReferenceExpression(expr, invalidReferenceMessage, constantVariableMessage) { var node = skipParenthesizedNodes(expr); - if (node.kind !== 69 && node.kind !== 170 && node.kind !== 171) { + if (node.kind !== 69 && node.kind !== 171 && node.kind !== 172) { error(expr, invalidReferenceMessage); return false; } @@ -19946,7 +20841,7 @@ var ts; } } } - else if (node.kind === 171) { + else if (node.kind === 172) { if (links.resolvedIndexInfo && links.resolvedIndexInfo.isReadonly) { error(expr, constantVariableMessage); return false; @@ -19992,7 +20887,7 @@ var ts; return booleanType; case 41: case 42: - var ok = checkArithmeticOperandType(node.operand, operandType, ts.Diagnostics.An_arithmetic_operand_must_be_of_type_any_number_or_an_enum_type); + var ok = checkArithmeticOperandType(node.operand, getNonNullableType(operandType), ts.Diagnostics.An_arithmetic_operand_must_be_of_type_any_number_or_an_enum_type); if (ok) { checkReferenceExpression(node.operand, ts.Diagnostics.The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_property_or_indexer, ts.Diagnostics.The_operand_of_an_increment_or_decrement_operator_cannot_be_a_constant_or_a_read_only_property); } @@ -20002,7 +20897,7 @@ var ts; } function checkPostfixUnaryExpression(node) { var operandType = checkExpression(node.operand); - var ok = checkArithmeticOperandType(node.operand, operandType, ts.Diagnostics.An_arithmetic_operand_must_be_of_type_any_number_or_an_enum_type); + var ok = checkArithmeticOperandType(node.operand, getNonNullableType(operandType), ts.Diagnostics.An_arithmetic_operand_must_be_of_type_any_number_or_an_enum_type); if (ok) { checkReferenceExpression(node.operand, ts.Diagnostics.The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_property_or_indexer, ts.Diagnostics.The_operand_of_an_increment_or_decrement_operator_cannot_be_a_constant_or_a_read_only_property); } @@ -20076,22 +20971,22 @@ var ts; var properties = node.properties; for (var _i = 0, properties_3 = properties; _i < properties_3.length; _i++) { var p = properties_3[_i]; - if (p.kind === 249 || p.kind === 250) { - var name_12 = p.name; - if (name_12.kind === 138) { - checkComputedPropertyName(name_12); + if (p.kind === 252 || p.kind === 253) { + var name_13 = p.name; + if (name_13.kind === 139) { + checkComputedPropertyName(name_13); } - if (isComputedNonLiteralName(name_12)) { + if (isComputedNonLiteralName(name_13)) { continue; } - var text = getTextOfPropertyName(name_12); + var text = getTextOfPropertyName(name_13); var type = isTypeAny(sourceType) ? sourceType : getTypeOfPropertyOfType(sourceType, text) || isNumericLiteralName(text) && getIndexTypeOfType(sourceType, 1) || getIndexTypeOfType(sourceType, 0); if (type) { - if (p.kind === 250) { + if (p.kind === 253) { checkDestructuringAssignment(p, type); } else { @@ -20099,7 +20994,7 @@ var ts; } } else { - error(name_12, ts.Diagnostics.Type_0_has_no_property_1_and_no_string_index_signature, typeToString(sourceType), ts.declarationNameToString(name_12)); + error(name_13, ts.Diagnostics.Type_0_has_no_property_1_and_no_string_index_signature, typeToString(sourceType), ts.declarationNameToString(name_13)); } } else { @@ -20113,8 +21008,8 @@ var ts; var elements = node.elements; for (var i = 0; i < elements.length; i++) { var e = elements[i]; - if (e.kind !== 191) { - if (e.kind !== 189) { + if (e.kind !== 192) { + if (e.kind !== 190) { var propName = "" + i; var type = isTypeAny(sourceType) ? sourceType @@ -20139,7 +21034,7 @@ var ts; } else { var restExpression = e.expression; - if (restExpression.kind === 185 && restExpression.operatorToken.kind === 56) { + if (restExpression.kind === 186 && restExpression.operatorToken.kind === 56) { error(restExpression.operatorToken, ts.Diagnostics.A_rest_element_cannot_have_an_initializer); } else { @@ -20153,7 +21048,7 @@ var ts; } function checkDestructuringAssignment(exprOrAssignment, sourceType, contextualMapper) { var target; - if (exprOrAssignment.kind === 250) { + if (exprOrAssignment.kind === 253) { var prop = exprOrAssignment; if (prop.objectAssignmentInitializer) { checkBinaryLikeExpression(prop.name, prop.equalsToken, prop.objectAssignmentInitializer, contextualMapper); @@ -20163,14 +21058,14 @@ var ts; else { target = exprOrAssignment; } - if (target.kind === 185 && target.operatorToken.kind === 56) { + if (target.kind === 186 && target.operatorToken.kind === 56) { checkBinaryExpression(target, contextualMapper); target = target.left; } - if (target.kind === 169) { + if (target.kind === 170) { return checkObjectLiteralAssignment(target, sourceType, contextualMapper); } - if (target.kind === 168) { + if (target.kind === 169) { return checkArrayLiteralAssignment(target, sourceType, contextualMapper); } return checkReferenceAssignment(target, sourceType, contextualMapper); @@ -20187,7 +21082,7 @@ var ts; } function checkBinaryLikeExpression(left, operatorToken, right, contextualMapper, errorNode) { var operator = operatorToken.kind; - if (operator === 56 && (left.kind === 169 || left.kind === 168)) { + if (operator === 56 && (left.kind === 170 || left.kind === 169)) { return checkDestructuringAssignment(left, checkExpression(right, contextualMapper), contextualMapper); } var leftType = checkExpression(left, contextualMapper); @@ -20215,11 +21110,13 @@ var ts; case 68: case 46: case 66: - if (leftType.flags & (32 | 64)) + if (leftType.flags & 96) leftType = rightType; - if (rightType.flags & (32 | 64)) + if (rightType.flags & 96) rightType = leftType; - var suggestedOperator; + leftType = getNonNullableType(leftType); + rightType = getNonNullableType(rightType); + var suggestedOperator = void 0; if ((leftType.flags & 8) && (rightType.flags & 8) && (suggestedOperator = getSuggestedBooleanOperator(operatorToken.kind)) !== undefined) { @@ -20235,11 +21132,13 @@ var ts; return numberType; case 35: case 57: - if (leftType.flags & (32 | 64)) + if (leftType.flags & 96) leftType = rightType; - if (rightType.flags & (32 | 64)) + if (rightType.flags & 96) rightType = leftType; - var resultType; + leftType = getNonNullableType(leftType); + rightType = getNonNullableType(rightType); + var resultType = void 0; if (isTypeOfKind(leftType, 132) && isTypeOfKind(rightType, 132)) { resultType = numberType; } @@ -20273,10 +21172,7 @@ var ts; case 31: case 32: case 33: - if (maybeTypeOfKind(leftType, 258) && maybeTypeOfKind(rightType, 258)) { - return booleanType; - } - if (!isTypeAssignableTo(leftType, rightType) && !isTypeAssignableTo(rightType, leftType)) { + if (!isTypeComparableTo(leftType, rightType) && !isTypeComparableTo(rightType, leftType)) { reportOperatorError(); } return booleanType; @@ -20285,9 +21181,9 @@ var ts; case 90: return checkInExpression(left, right, leftType, rightType); case 51: - return rightType; + return addNullableKind(rightType, getNullableKind(leftType)); case 52: - return getUnionType([leftType, rightType]); + return getUnionType([getNonNullableType(leftType), rightType]); case 56: checkAssignmentOperator(rightType); return getRegularTypeOfObjectLiteral(rightType); @@ -20359,7 +21255,7 @@ var ts; var func = ts.getContainingFunction(node); if (func && func.asteriskToken) { var expressionType = checkExpressionCached(node.expression, undefined); - var expressionElementType; + var expressionElementType = void 0; var nodeIsYieldStar = !!node.asteriskToken; if (nodeIsYieldStar) { expressionElementType = checkElementTypeOfIterable(expressionType, node.expression); @@ -20411,14 +21307,14 @@ var ts; return links.resolvedType; } function checkPropertyAssignment(node, contextualMapper) { - if (node.name.kind === 138) { + if (node.name.kind === 139) { checkComputedPropertyName(node.name); } return checkExpression(node.initializer, contextualMapper); } function checkObjectLiteralMethod(node, contextualMapper) { checkGrammarMethod(node); - if (node.name.kind === 138) { + if (node.name.kind === 139) { checkComputedPropertyName(node.name); } var uninstantiatedType = checkFunctionExpressionOrObjectLiteralMethod(node, contextualMapper); @@ -20441,7 +21337,7 @@ var ts; } function checkExpression(node, contextualMapper) { var type; - if (node.kind === 137) { + if (node.kind === 138) { type = checkQualifiedName(node); } else { @@ -20449,9 +21345,9 @@ var ts; type = instantiateTypeWithSingleGenericCallSignature(node, uninstantiatedType, contextualMapper); } if (isConstEnumObjectType(type)) { - var ok = (node.parent.kind === 170 && node.parent.expression === node) || - (node.parent.kind === 171 && node.parent.expression === node) || - ((node.kind === 69 || node.kind === 137) && isInRightSideOfImportOrExportAssignment(node)); + var ok = (node.parent.kind === 171 && node.parent.expression === node) || + (node.parent.kind === 172 && node.parent.expression === node) || + ((node.kind === 69 || node.kind === 138) && isInRightSideOfImportOrExportAssignment(node)); if (!ok) { error(node, ts.Diagnostics.const_enums_can_only_be_used_in_property_or_index_access_expressions_or_the_right_hand_side_of_an_import_declaration_or_export_assignment); } @@ -20477,7 +21373,7 @@ var ts; return booleanType; case 8: return checkNumericLiteral(node); - case 187: + case 188: return checkTemplateExpression(node); case 9: return checkStringLiteralExpression(node); @@ -20485,58 +21381,60 @@ var ts; return stringType; case 10: return globalRegExpType; - case 168: - return checkArrayLiteral(node, contextualMapper); case 169: - return checkObjectLiteral(node, contextualMapper); + return checkArrayLiteral(node, contextualMapper); case 170: - return checkPropertyAccessExpression(node); + return checkObjectLiteral(node, contextualMapper); case 171: - return checkIndexedAccess(node); + return checkPropertyAccessExpression(node); case 172: + return checkIndexedAccess(node); case 173: - return checkCallExpression(node); case 174: - return checkTaggedTemplateExpression(node); - case 176: - return checkExpression(node.expression, contextualMapper); - case 190: - return checkClassExpression(node); - case 177: - case 178: - return checkFunctionExpressionOrObjectLiteralMethod(node, contextualMapper); - case 180: - return checkTypeOfExpression(node); + return checkCallExpression(node); case 175: - case 193: - return checkAssertion(node); - case 179: - return checkDeleteExpression(node); - case 181: - return checkVoidExpression(node); - case 182: - return checkAwaitExpression(node); - case 183: - return checkPrefixUnaryExpression(node); - case 184: - return checkPostfixUnaryExpression(node); - case 185: - return checkBinaryExpression(node, contextualMapper); - case 186: - return checkConditionalExpression(node, contextualMapper); - case 189: - return checkSpreadElementExpression(node, contextualMapper); + return checkTaggedTemplateExpression(node); + case 177: + return checkExpression(node.expression, contextualMapper); case 191: + return checkClassExpression(node); + case 178: + case 179: + return checkFunctionExpressionOrObjectLiteralMethod(node, contextualMapper); + case 181: + return checkTypeOfExpression(node); + case 176: + case 194: + return checkAssertion(node); + case 195: + return checkNonNullAssertion(node); + case 180: + return checkDeleteExpression(node); + case 182: + return checkVoidExpression(node); + case 183: + return checkAwaitExpression(node); + case 184: + return checkPrefixUnaryExpression(node); + case 185: + return checkPostfixUnaryExpression(node); + case 186: + return checkBinaryExpression(node, contextualMapper); + case 187: + return checkConditionalExpression(node, contextualMapper); + case 190: + return checkSpreadElementExpression(node, contextualMapper); + case 192: return undefinedType; - case 188: + case 189: return checkYieldExpression(node); - case 244: + case 247: return checkJsxExpression(node); - case 237: + case 240: return checkJsxElement(node); - case 238: + case 241: return checkJsxSelfClosingElement(node); - case 239: + case 242: ts.Debug.fail("Shouldn't ever directly check a JsxOpeningElement"); } return unknownType; @@ -20557,13 +21455,24 @@ var ts; var func = ts.getContainingFunction(node); if (node.flags & 28) { func = ts.getContainingFunction(node); - if (!(func.kind === 146 && ts.nodeIsPresent(func.body))) { + if (!(func.kind === 147 && ts.nodeIsPresent(func.body))) { error(node, ts.Diagnostics.A_parameter_property_is_only_allowed_in_a_constructor_implementation); } } if (node.questionToken && ts.isBindingPattern(node.name) && func.body) { error(node, ts.Diagnostics.A_binding_pattern_parameter_cannot_be_optional_in_an_implementation_signature); } + if (node.name.text === "this") { + if (ts.indexOf(func.parameters, node) !== 0) { + error(node, ts.Diagnostics.A_this_parameter_must_be_the_first_parameter); + } + if (func.kind === 147 || func.kind === 151 || func.kind === 156) { + error(node, ts.Diagnostics.A_constructor_cannot_have_a_this_parameter); + } + if (func.kind === 149) { + error(node, ts.Diagnostics.A_setter_cannot_have_a_this_parameter); + } + } if (node.dotDotDotToken && !ts.isBindingPattern(node.name) && !isArrayType(getTypeOfSymbol(node.symbol))) { error(node, ts.Diagnostics.A_rest_parameter_must_be_of_an_array_type); } @@ -20572,9 +21481,9 @@ var ts; if (!node.asteriskToken || !node.body) { return false; } - return node.kind === 145 || - node.kind === 217 || - node.kind === 177; + return node.kind === 146 || + node.kind === 219 || + node.kind === 178; } function getTypePredicateParameterIndex(parameterList, parameter) { if (parameterList) { @@ -20608,15 +21517,16 @@ var ts; error(parameterName, ts.Diagnostics.A_type_predicate_cannot_reference_a_rest_parameter); } else { - checkTypeAssignableTo(typePredicate.type, getTypeOfNode(parent.parameters[typePredicate.parameterIndex]), node.type); + var leadingError = ts.chainDiagnosticMessages(undefined, ts.Diagnostics.A_type_predicate_s_type_must_be_assignable_to_its_parameter_s_type); + checkTypeAssignableTo(typePredicate.type, getTypeOfNode(parent.parameters[typePredicate.parameterIndex]), node.type, undefined, leadingError); } } else if (parameterName) { var hasReportedError = false; for (var _i = 0, _a = parent.parameters; _i < _a.length; _i++) { - var name_13 = _a[_i].name; - if (ts.isBindingPattern(name_13) && - checkIfTypePredicateVariableIsDeclaredInBindingPattern(name_13, parameterName, typePredicate.parameterName)) { + var name_14 = _a[_i].name; + if (ts.isBindingPattern(name_14) && + checkIfTypePredicateVariableIsDeclaredInBindingPattern(name_14, parameterName, typePredicate.parameterName)) { hasReportedError = true; break; } @@ -20629,42 +21539,42 @@ var ts; } function getTypePredicateParent(node) { switch (node.parent.kind) { + case 179: + case 150: + case 219: case 178: - case 149: - case 217: - case 177: - case 154: + case 155: + case 146: case 145: - case 144: - var parent_7 = node.parent; - if (node === parent_7.type) { - return parent_7; + var parent_8 = node.parent; + if (node === parent_8.type) { + return parent_8; } } } function checkIfTypePredicateVariableIsDeclaredInBindingPattern(pattern, predicateVariableNode, predicateVariableName) { for (var _i = 0, _a = pattern.elements; _i < _a.length; _i++) { - var name_14 = _a[_i].name; - if (name_14.kind === 69 && - name_14.text === predicateVariableName) { + var name_15 = _a[_i].name; + if (name_15.kind === 69 && + name_15.text === predicateVariableName) { error(predicateVariableNode, ts.Diagnostics.A_type_predicate_cannot_reference_element_0_in_a_binding_pattern, predicateVariableName); return true; } - else if (name_14.kind === 166 || - name_14.kind === 165) { - if (checkIfTypePredicateVariableIsDeclaredInBindingPattern(name_14, predicateVariableNode, predicateVariableName)) { + else if (name_15.kind === 167 || + name_15.kind === 166) { + if (checkIfTypePredicateVariableIsDeclaredInBindingPattern(name_15, predicateVariableNode, predicateVariableName)) { return true; } } } } function checkSignatureDeclaration(node) { - if (node.kind === 151) { + if (node.kind === 152) { checkGrammarIndexSignature(node); } - else if (node.kind === 154 || node.kind === 217 || node.kind === 155 || - node.kind === 149 || node.kind === 146 || - node.kind === 150) { + else if (node.kind === 155 || node.kind === 219 || node.kind === 156 || + node.kind === 150 || node.kind === 147 || + node.kind === 151) { checkGrammarFunctionLikeDeclaration(node); } checkTypeParameters(node.typeParameters); @@ -20676,10 +21586,10 @@ var ts; checkCollisionWithArgumentsInGeneratedCode(node); if (compilerOptions.noImplicitAny && !node.type) { switch (node.kind) { - case 150: + case 151: error(node, ts.Diagnostics.Construct_signature_which_lacks_return_type_annotation_implicitly_has_an_any_return_type); break; - case 149: + case 150: error(node, ts.Diagnostics.Call_signature_which_lacks_return_type_annotation_implicitly_has_an_any_return_type); break; } @@ -20703,7 +21613,7 @@ var ts; } } function checkTypeForDuplicateIndexSignatures(node) { - if (node.kind === 219) { + if (node.kind === 221) { var nodeSymbol = getSymbolOfNode(node); if (nodeSymbol.declarations.length > 0 && nodeSymbol.declarations[0] !== node) { return; @@ -20784,12 +21694,12 @@ var ts; if (n.kind === 97) { error(n, ts.Diagnostics.this_cannot_be_referenced_in_current_location); } - else if (n.kind !== 177 && n.kind !== 217) { + else if (n.kind !== 178 && n.kind !== 219) { ts.forEachChild(n, markThisReferencesAsErrors); } } function isInstancePropertyWithInitializer(n) { - return n.kind === 143 && + return n.kind === 144 && !(n.flags & 32) && !!n.initializer; } @@ -20805,10 +21715,10 @@ var ts; ts.forEach(node.parameters, function (p) { return p.flags & (4 | 8 | 16); }); if (superCallShouldBeFirst) { var statements = node.body.statements; - var superCallStatement; + var superCallStatement = void 0; for (var _i = 0, statements_2 = statements; _i < statements_2.length; _i++) { var statement = statements_2[_i]; - if (statement.kind === 199 && ts.isSuperCallExpression(statement.expression)) { + if (statement.kind === 201 && ts.isSuperCallExpression(statement.expression)) { superCallStatement = statement; break; } @@ -20831,7 +21741,7 @@ var ts; checkGrammarFunctionLikeDeclaration(node) || checkGrammarAccessor(node) || checkGrammarComputedPropertyName(node.name); checkDecorators(node); checkSignatureDeclaration(node); - if (node.kind === 147) { + if (node.kind === 148) { if (!ts.isInAmbientContext(node) && ts.nodeIsPresent(node.body) && (node.flags & 32768)) { if (node.flags & 65536) { if (compilerOptions.noImplicitReturns) { @@ -20843,11 +21753,11 @@ var ts; } } } - if (node.name.kind === 138) { + if (node.name.kind === 139) { checkComputedPropertyName(node.name); } if (!ts.hasDynamicName(node)) { - var otherKind = node.kind === 147 ? 148 : 147; + var otherKind = node.kind === 148 ? 149 : 148; var otherAccessor = ts.getDeclarationOfKind(node.symbol, otherKind); if (otherAccessor) { if (((node.flags & 28) !== (otherAccessor.flags & 28))) { @@ -20867,7 +21777,7 @@ var ts; } getTypeOfAccessors(getSymbolOfNode(node)); } - if (node.parent.kind !== 169) { + if (node.parent.kind !== 170) { checkSourceElement(node.body); } else { @@ -20938,9 +21848,9 @@ var ts; } function getEffectiveDeclarationFlags(n, flagsToCheck) { var flags = ts.getCombinedNodeFlags(n); - if (n.parent.kind !== 219 && - n.parent.kind !== 218 && - n.parent.kind !== 190 && + if (n.parent.kind !== 221 && + n.parent.kind !== 220 && + n.parent.kind !== 191 && ts.isInAmbientContext(n)) { if (!(flags & 2)) { flags |= 1; @@ -20960,9 +21870,9 @@ var ts; function checkFlagAgreementBetweenOverloads(overloads, implementation, flagsToCheck, someOverloadFlags, allOverloadFlags) { var someButNotAllOverloadFlags = someOverloadFlags ^ allOverloadFlags; if (someButNotAllOverloadFlags !== 0) { - var canonicalFlags = getEffectiveDeclarationFlags(getCanonicalOverload(overloads, implementation), flagsToCheck); + var canonicalFlags_1 = getEffectiveDeclarationFlags(getCanonicalOverload(overloads, implementation), flagsToCheck); ts.forEach(overloads, function (o) { - var deviation = getEffectiveDeclarationFlags(o, flagsToCheck) ^ canonicalFlags; + var deviation = getEffectiveDeclarationFlags(o, flagsToCheck) ^ canonicalFlags_1; if (deviation & 1) { error(o.name, ts.Diagnostics.Overload_signatures_must_all_be_exported_or_non_exported); } @@ -20980,9 +21890,9 @@ var ts; } function checkQuestionTokenAgreementBetweenOverloads(overloads, implementation, someHaveQuestionToken, allHaveQuestionToken) { if (someHaveQuestionToken !== allHaveQuestionToken) { - var canonicalHasQuestionToken = ts.hasQuestionToken(getCanonicalOverload(overloads, implementation)); + var canonicalHasQuestionToken_1 = ts.hasQuestionToken(getCanonicalOverload(overloads, implementation)); ts.forEach(overloads, function (o) { - var deviation = ts.hasQuestionToken(o) !== canonicalHasQuestionToken; + var deviation = ts.hasQuestionToken(o) !== canonicalHasQuestionToken_1; if (deviation) { error(o.name, ts.Diagnostics.Overload_signatures_must_all_be_optional_or_required); } @@ -21017,7 +21927,7 @@ var ts; if (subsequentNode.kind === node.kind) { var errorNode_1 = subsequentNode.name || subsequentNode; if (node.name && subsequentNode.name && node.name.text === subsequentNode.name.text) { - var reportError = (node.kind === 145 || node.kind === 144) && + var reportError = (node.kind === 146 || node.kind === 145) && (node.flags & 32) !== (subsequentNode.flags & 32); if (reportError) { var diagnostic = node.flags & 32 ? ts.Diagnostics.Function_overload_must_be_static : ts.Diagnostics.Function_overload_must_not_be_static; @@ -21051,11 +21961,11 @@ var ts; var current = declarations_4[_i]; var node = current; var inAmbientContext = ts.isInAmbientContext(node); - var inAmbientContextOrInterface = node.parent.kind === 219 || node.parent.kind === 157 || inAmbientContext; + var inAmbientContextOrInterface = node.parent.kind === 221 || node.parent.kind === 158 || inAmbientContext; if (inAmbientContextOrInterface) { previousDeclaration = undefined; } - if (node.kind === 217 || node.kind === 145 || node.kind === 144 || node.kind === 146) { + if (node.kind === 219 || node.kind === 146 || node.kind === 145 || node.kind === 147) { var currentNodeFlags = getEffectiveDeclarationFlags(node, flagsToCheck); someNodeFlags |= currentNodeFlags; allNodeFlags &= currentNodeFlags; @@ -21166,20 +22076,20 @@ var ts; } function getDeclarationSpaces(d) { switch (d.kind) { - case 219: + case 221: return 2097152; - case 222: + case 224: return ts.isAmbientModule(d) || ts.getModuleInstanceState(d) !== 0 ? 4194304 | 1048576 : 4194304; - case 218: - case 221: + case 220: + case 223: return 2097152 | 1048576; - case 225: - var result = 0; + case 228: + var result_1 = 0; var target = resolveAlias(getSymbolOfNode(d)); - ts.forEach(target.declarations, function (d) { result |= getDeclarationSpaces(d); }); - return result; + ts.forEach(target.declarations, function (d) { result_1 |= getDeclarationSpaces(d); }); + return result_1; default: return 1048576; } @@ -21251,7 +22161,7 @@ var ts; return checkNonThenableType(type, location, message); } else { - if (type.id === promisedType.id || awaitedTypeStack.indexOf(promisedType.id) >= 0) { + if (type.id === promisedType.id || ts.indexOf(awaitedTypeStack, promisedType.id) >= 0) { if (location) { error(location, ts.Diagnostics._0_is_referenced_directly_or_indirectly_in_the_fulfillment_callback_of_its_own_then_method, symbolToString(type.symbol)); } @@ -21322,22 +22232,22 @@ var ts; var headMessage = getDiagnosticHeadMessageForDecoratorResolution(node); var errorInfo; switch (node.parent.kind) { - case 218: + case 220: var classSymbol = getSymbolOfNode(node.parent); var classConstructorType = getTypeOfSymbol(classSymbol); expectedReturnType = getUnionType([classConstructorType, voidType]); break; - case 140: + case 141: expectedReturnType = voidType; errorInfo = ts.chainDiagnosticMessages(errorInfo, ts.Diagnostics.The_return_type_of_a_parameter_decorator_function_must_be_either_void_or_any); break; - case 143: + case 144: expectedReturnType = voidType; errorInfo = ts.chainDiagnosticMessages(errorInfo, ts.Diagnostics.The_return_type_of_a_property_decorator_function_must_be_either_void_or_any); break; - case 145: - case 147: + case 146: case 148: + case 149: var methodType = getTypeOfNode(node.parent); var descriptorType = createTypedPropertyDescriptorType(methodType); expectedReturnType = getUnionType([descriptorType, voidType]); @@ -21346,9 +22256,9 @@ var ts; checkTypeAssignableTo(returnType, expectedReturnType, node, headMessage, errorInfo); } function checkTypeNodeAsExpression(node) { - if (node && node.kind === 153) { + if (node && node.kind === 154) { var root = getFirstIdentifier(node.typeName); - var meaning = root.parent.kind === 153 ? 793056 : 1536; + var meaning = root.parent.kind === 154 ? 793056 : 1536; var rootSymbol = resolveName(root, root.text, meaning | 8388608, undefined, undefined); if (rootSymbol && rootSymbol.flags & 8388608) { var aliasTarget = resolveAlias(rootSymbol); @@ -21382,20 +22292,20 @@ var ts; } if (compilerOptions.emitDecoratorMetadata) { switch (node.kind) { - case 218: + case 220: var constructor = ts.getFirstConstructorWithBody(node); if (constructor) { checkParameterTypeAnnotationsAsExpressions(constructor); } break; - case 145: - case 147: + case 146: case 148: + case 149: checkParameterTypeAnnotationsAsExpressions(node); checkReturnTypeAnnotationAsExpression(node); break; - case 143: - case 140: + case 144: + case 141: checkTypeAnnotationAsExpression(node); break; } @@ -21415,7 +22325,7 @@ var ts; checkDecorators(node); checkSignatureDeclaration(node); var isAsync = ts.isAsyncFunctionLike(node); - if (node.name && node.name.kind === 138) { + if (node.name && node.name.kind === 139) { checkComputedPropertyName(node.name); } if (!ts.hasDynamicName(node)) { @@ -21447,7 +22357,7 @@ var ts; } } function checkBlock(node) { - if (node.kind === 196) { + if (node.kind === 198) { checkGrammarStatementInAmbientContext(node); } ts.forEach(node.statements, checkSourceElement); @@ -21466,19 +22376,19 @@ var ts; if (!(identifier && identifier.text === name)) { return false; } - if (node.kind === 143 || - node.kind === 142 || + if (node.kind === 144 || + node.kind === 143 || + node.kind === 146 || node.kind === 145 || - node.kind === 144 || - node.kind === 147 || - node.kind === 148) { + node.kind === 148 || + node.kind === 149) { return false; } if (ts.isInAmbientContext(node)) { return false; } var root = ts.getRootDeclaration(node); - if (root.kind === 140 && ts.nodeIsMissing(root.parent.body)) { + if (root.kind === 141 && ts.nodeIsMissing(root.parent.body)) { return false; } return true; @@ -21526,11 +22436,11 @@ var ts; if (!needCollisionCheckForIdentifier(node, name, "require") && !needCollisionCheckForIdentifier(node, name, "exports")) { return; } - if (node.kind === 222 && ts.getModuleInstanceState(node) !== 1) { + if (node.kind === 224 && ts.getModuleInstanceState(node) !== 1) { return; } var parent = getDeclarationContainer(node); - if (parent.kind === 252 && ts.isExternalOrCommonJsModule(parent)) { + if (parent.kind === 255 && ts.isExternalOrCommonJsModule(parent)) { error(name, ts.Diagnostics.Duplicate_identifier_0_Compiler_reserves_name_1_in_top_level_scope_of_a_module, ts.declarationNameToString(name), ts.declarationNameToString(name)); } } @@ -21538,11 +22448,11 @@ var ts; if (!needCollisionCheckForIdentifier(node, name, "Promise")) { return; } - if (node.kind === 222 && ts.getModuleInstanceState(node) !== 1) { + if (node.kind === 224 && ts.getModuleInstanceState(node) !== 1) { return; } var parent = getDeclarationContainer(node); - if (parent.kind === 252 && ts.isExternalOrCommonJsModule(parent) && parent.flags & 2097152) { + if (parent.kind === 255 && ts.isExternalOrCommonJsModule(parent) && parent.flags & 2097152) { error(name, ts.Diagnostics.Duplicate_identifier_0_Compiler_reserves_name_1_in_top_level_scope_of_a_module_containing_async_functions, ts.declarationNameToString(name), ts.declarationNameToString(name)); } } @@ -21550,7 +22460,7 @@ var ts; if ((ts.getCombinedNodeFlags(node) & 3072) !== 0 || ts.isParameterDeclaration(node)) { return; } - if (node.kind === 215 && !node.initializer) { + if (node.kind === 217 && !node.initializer) { return; } var symbol = getSymbolOfNode(node); @@ -21560,25 +22470,25 @@ var ts; localDeclarationSymbol !== symbol && localDeclarationSymbol.flags & 2) { if (getDeclarationFlagsFromSymbol(localDeclarationSymbol) & 3072) { - var varDeclList = ts.getAncestor(localDeclarationSymbol.valueDeclaration, 216); - var container = varDeclList.parent.kind === 197 && varDeclList.parent.parent + var varDeclList = ts.getAncestor(localDeclarationSymbol.valueDeclaration, 218); + var container = varDeclList.parent.kind === 199 && varDeclList.parent.parent ? varDeclList.parent.parent : undefined; var namesShareScope = container && - (container.kind === 196 && ts.isFunctionLike(container.parent) || - container.kind === 223 || - container.kind === 222 || - container.kind === 252); + (container.kind === 198 && ts.isFunctionLike(container.parent) || + container.kind === 225 || + container.kind === 224 || + container.kind === 255); if (!namesShareScope) { - var name_15 = symbolToString(localDeclarationSymbol); - error(node, ts.Diagnostics.Cannot_initialize_outer_scoped_variable_0_in_the_same_scope_as_block_scoped_declaration_1, name_15, name_15); + var name_16 = symbolToString(localDeclarationSymbol); + error(node, ts.Diagnostics.Cannot_initialize_outer_scoped_variable_0_in_the_same_scope_as_block_scoped_declaration_1, name_16, name_16); } } } } } function checkParameterInitializer(node) { - if (ts.getRootDeclaration(node).kind !== 140) { + if (ts.getRootDeclaration(node).kind !== 141) { return; } var func = ts.getContainingFunction(node); @@ -21587,7 +22497,7 @@ var ts; if (n.kind === 69) { var referencedSymbol = getNodeLinks(n).resolvedSymbol; if (referencedSymbol && referencedSymbol !== unknownSymbol && getSymbol(func.locals, referencedSymbol.name, 107455) === referencedSymbol) { - if (referencedSymbol.valueDeclaration.kind === 140) { + if (referencedSymbol.valueDeclaration.kind === 141) { if (referencedSymbol.valueDeclaration === node) { error(n, ts.Diagnostics.Parameter_0_cannot_be_referenced_in_its_initializer, ts.declarationNameToString(node.name)); return; @@ -21607,26 +22517,33 @@ var ts; function checkVariableLikeDeclaration(node) { checkDecorators(node); checkSourceElement(node.type); - if (node.name.kind === 138) { + if (node.name.kind === 139) { checkComputedPropertyName(node.name); if (node.initializer) { checkExpressionCached(node.initializer); } } - if (node.kind === 167) { - if (node.propertyName && node.propertyName.kind === 138) { + if (node.kind === 168) { + if (node.propertyName && node.propertyName.kind === 139) { checkComputedPropertyName(node.propertyName); } + var parent_9 = node.parent.parent; + var parentType = getTypeForBindingElementParent(parent_9); + var name_17 = node.propertyName || node.name; + var property = getPropertyOfType(parentType, getTextOfPropertyName(name_17)); + if (parent_9.initializer && property && getParentOfSymbol(property)) { + checkClassPropertyAccess(parent_9, parent_9.initializer, parentType, property); + } } if (ts.isBindingPattern(node.name)) { ts.forEach(node.name.elements, checkSourceElement); } - if (node.initializer && ts.getRootDeclaration(node).kind === 140 && ts.nodeIsMissing(ts.getContainingFunction(node).body)) { + if (node.initializer && ts.getRootDeclaration(node).kind === 141 && ts.nodeIsMissing(ts.getContainingFunction(node).body)) { error(node, ts.Diagnostics.A_parameter_initializer_is_only_allowed_in_a_function_or_constructor_implementation); return; } if (ts.isBindingPattern(node.name)) { - if (node.initializer && node.parent.parent.kind !== 204) { + if (node.initializer && node.parent.parent.kind !== 206) { checkTypeAssignableTo(checkExpressionCached(node.initializer), getWidenedTypeForVariableLikeDeclaration(node), node, undefined); checkParameterInitializer(node); } @@ -21635,7 +22552,7 @@ var ts; var symbol = getSymbolOfNode(node); var type = getTypeOfVariableOrParameterOrProperty(symbol); if (node === symbol.valueDeclaration) { - if (node.initializer && node.parent.parent.kind !== 204) { + if (node.initializer && node.parent.parent.kind !== 206) { checkTypeAssignableTo(checkExpressionCached(node.initializer), type, node, undefined); checkParameterInitializer(node); } @@ -21649,9 +22566,9 @@ var ts; checkTypeAssignableTo(checkExpressionCached(node.initializer), declarationType, node, undefined); } } - if (node.kind !== 143 && node.kind !== 142) { + if (node.kind !== 144 && node.kind !== 143) { checkExportsOnMergedDeclarations(node); - if (node.kind === 215 || node.kind === 167) { + if (node.kind === 217 || node.kind === 168) { checkVarDeclaredNamesNotShadowed(node); } checkCollisionWithCapturedSuperVariable(node, node.name); @@ -21673,7 +22590,7 @@ var ts; ts.forEach(node.declarationList.declarations, checkSourceElement); } function checkGrammarDisallowedModifiersOnObjectLiteralExpressionMethod(node) { - if (node.modifiers && node.parent.kind === 169) { + if (node.modifiers && node.parent.kind === 170) { if (ts.isAsyncFunctionLike(node)) { if (node.modifiers.length > 1) { return grammarErrorOnFirstToken(node, ts.Diagnostics.Modifiers_cannot_appear_here); @@ -21692,7 +22609,7 @@ var ts; checkGrammarStatementInAmbientContext(node); checkExpression(node.expression); checkSourceElement(node.thenStatement); - if (node.thenStatement.kind === 198) { + if (node.thenStatement.kind === 200) { error(node.thenStatement, ts.Diagnostics.The_body_of_an_if_statement_cannot_be_the_empty_statement); } checkSourceElement(node.elseStatement); @@ -21709,12 +22626,12 @@ var ts; } function checkForStatement(node) { if (!checkGrammarStatementInAmbientContext(node)) { - if (node.initializer && node.initializer.kind === 216) { + if (node.initializer && node.initializer.kind === 218) { checkGrammarVariableDeclarationList(node.initializer); } } if (node.initializer) { - if (node.initializer.kind === 216) { + if (node.initializer.kind === 218) { ts.forEach(node.initializer.declarations, checkVariableDeclaration); } else { @@ -21729,13 +22646,13 @@ var ts; } function checkForOfStatement(node) { checkGrammarForInOrForOfStatement(node); - if (node.initializer.kind === 216) { + if (node.initializer.kind === 218) { checkForInOrForOfVariableDeclaration(node); } else { var varExpr = node.initializer; var iteratedType = checkRightHandSideOfForOf(node.expression); - if (varExpr.kind === 168 || varExpr.kind === 169) { + if (varExpr.kind === 169 || varExpr.kind === 170) { checkDestructuringAssignment(varExpr, iteratedType || unknownType); } else { @@ -21750,7 +22667,7 @@ var ts; } function checkForInStatement(node) { checkGrammarForInOrForOfStatement(node); - if (node.initializer.kind === 216) { + if (node.initializer.kind === 218) { var variable = node.initializer.declarations[0]; if (variable && ts.isBindingPattern(variable.name)) { error(variable.name, ts.Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_be_a_destructuring_pattern); @@ -21760,7 +22677,7 @@ var ts; else { var varExpr = node.initializer; var leftType = checkExpression(varExpr); - if (varExpr.kind === 168 || varExpr.kind === 169) { + if (varExpr.kind === 169 || varExpr.kind === 170) { error(varExpr, ts.Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_be_a_destructuring_pattern); } else if (!isTypeAnyOrAllConstituentTypesHaveKind(leftType, 258)) { @@ -21770,7 +22687,7 @@ var ts; checkReferenceExpression(varExpr, ts.Diagnostics.Invalid_left_hand_side_in_for_in_statement, ts.Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_be_a_constant_or_a_read_only_property); } } - var rightType = checkExpression(node.expression); + var rightType = checkNonNullExpression(node.expression); if (!isTypeAnyOrAllConstituentTypesHaveKind(rightType, 80896 | 512)) { 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); } @@ -21784,7 +22701,7 @@ var ts; } } function checkRightHandSideOfForOf(rhsExpression) { - var expressionType = getTypeOfExpression(rhsExpression); + var expressionType = checkNonNullExpression(rhsExpression); return checkIteratedTypeOrElementType(expressionType, rhsExpression, true); } function checkIteratedTypeOrElementType(inputType, errorNode, allowStringInput) { @@ -21819,7 +22736,7 @@ var ts; } var typeAsIterable = type; if (!typeAsIterable.iterableElementType) { - if ((type.flags & 4096) && type.target === globalIterableType) { + if ((type.flags & 4096) && type.target === getGlobalIterableType()) { typeAsIterable.iterableElementType = type.typeArguments[0]; } else { @@ -21845,7 +22762,7 @@ var ts; } var typeAsIterator = type; if (!typeAsIterator.iteratorElementType) { - if ((type.flags & 4096) && type.target === globalIteratorType) { + if ((type.flags & 4096) && type.target === getGlobalIteratorType()) { typeAsIterator.iteratorElementType = type.typeArguments[0]; } else { @@ -21880,7 +22797,7 @@ var ts; if (isTypeAny(type)) { return undefined; } - if ((type.flags & 4096) && type.target === globalIterableIteratorType) { + if ((type.flags & 4096) && type.target === getGlobalIterableIteratorType()) { return type.typeArguments[0]; } return getElementTypeOfIterable(type, undefined) || @@ -21928,7 +22845,11 @@ var ts; checkGrammarStatementInAmbientContext(node) || checkGrammarBreakOrContinueStatement(node); } function isGetAccessorWithAnnotatedSetAccessor(node) { - return !!(node.kind === 147 && ts.getSetAccessorTypeAnnotationNode(ts.getDeclarationOfKind(node.symbol, 148))); + return !!(node.kind === 148 && ts.getSetAccessorTypeAnnotationNode(ts.getDeclarationOfKind(node.symbol, 149))); + } + function isUnwrappedReturnTypeVoidOrAny(func, returnType) { + var unwrappedReturnType = ts.isAsyncFunctionLike(func) ? getPromisedType(returnType) : returnType; + return maybeTypeOfKind(unwrappedReturnType, 16 | 1); } function checkReturnStatement(node) { if (!checkGrammarStatementInAmbientContext(node)) { @@ -21937,36 +22858,41 @@ var ts; grammarErrorOnFirstToken(node, ts.Diagnostics.A_return_statement_can_only_be_used_within_a_function_body); } } - if (node.expression) { - var func = ts.getContainingFunction(node); - if (func) { - var signature = getSignatureFromDeclaration(func); - var returnType = getReturnTypeOfSignature(signature); - var exprType = checkExpressionCached(node.expression); + var func = ts.getContainingFunction(node); + if (func) { + var signature = getSignatureFromDeclaration(func); + var returnType = getReturnTypeOfSignature(signature); + if (strictNullChecks || node.expression) { + var exprType = node.expression ? checkExpressionCached(node.expression) : undefinedType; if (func.asteriskToken) { return; } - if (func.kind === 148) { - error(node.expression, ts.Diagnostics.Setters_cannot_return_a_value); + if (func.kind === 149) { + if (node.expression) { + error(node.expression, ts.Diagnostics.Setters_cannot_return_a_value); + } } - else if (func.kind === 146) { - if (!checkTypeAssignableTo(exprType, returnType, node.expression)) { + else if (func.kind === 147) { + if (node.expression && !checkTypeAssignableTo(exprType, returnType, node.expression)) { error(node.expression, ts.Diagnostics.Return_type_of_constructor_signature_must_be_assignable_to_the_instance_type_of_the_class); } } else if (func.type || isGetAccessorWithAnnotatedSetAccessor(func)) { if (ts.isAsyncFunctionLike(func)) { var promisedType = getPromisedType(returnType); - var awaitedType = checkAwaitedType(exprType, node.expression, ts.Diagnostics.Return_expression_in_async_function_does_not_have_a_valid_callable_then_member); + var awaitedType = checkAwaitedType(exprType, node.expression || node, ts.Diagnostics.Return_expression_in_async_function_does_not_have_a_valid_callable_then_member); if (promisedType) { - checkTypeAssignableTo(awaitedType, promisedType, node.expression); + checkTypeAssignableTo(awaitedType, promisedType, node.expression || node); } } else { - checkTypeAssignableTo(exprType, returnType, node.expression); + checkTypeAssignableTo(exprType, returnType, node.expression || node); } } } + else if (func.kind !== 147 && compilerOptions.noImplicitReturns && !isUnwrappedReturnTypeVoidOrAny(func, returnType)) { + error(node, ts.Diagnostics.Not_all_code_paths_return_a_value); + } } } function checkWithStatement(node) { @@ -21983,9 +22909,8 @@ var ts; var firstDefaultClause; var hasDuplicateDefaultClause = false; var expressionType = checkExpression(node.expression); - var expressionTypeIsStringLike = maybeTypeOfKind(expressionType, 258); ts.forEach(node.caseBlock.clauses, function (clause) { - if (clause.kind === 246 && !hasDuplicateDefaultClause) { + if (clause.kind === 249 && !hasDuplicateDefaultClause) { if (firstDefaultClause === undefined) { firstDefaultClause = clause; } @@ -21997,13 +22922,11 @@ var ts; hasDuplicateDefaultClause = true; } } - if (produceDiagnostics && clause.kind === 245) { + if (produceDiagnostics && clause.kind === 248) { var caseClause = clause; var caseType = checkExpression(caseClause.expression); - var expressionTypeIsAssignableToCaseType = (expressionTypeIsStringLike && maybeTypeOfKind(caseType, 258)) || - isTypeAssignableTo(expressionType, caseType); - if (!expressionTypeIsAssignableToCaseType) { - checkTypeAssignableTo(caseType, expressionType, caseClause.expression, undefined); + if (!isTypeComparableTo(expressionType, caseType)) { + checkTypeComparableTo(caseType, expressionType, caseClause.expression, undefined); } } ts.forEach(clause.statements, checkSourceElement); @@ -22016,7 +22939,7 @@ var ts; if (ts.isFunctionLike(current)) { break; } - if (current.kind === 211 && current.label.text === node.label.text) { + if (current.kind === 213 && current.label.text === node.label.text) { var sourceFile = ts.getSourceFileOfNode(node); grammarErrorOnNode(node.label, ts.Diagnostics.Duplicate_label_0, ts.getTextOfNodeFromSourceText(sourceFile.text, node.label)); break; @@ -22110,7 +23033,7 @@ var ts; return; } var errorNode; - if (prop.valueDeclaration.name.kind === 138 || prop.parent === containingType.symbol) { + if (prop.valueDeclaration.name.kind === 139 || prop.parent === containingType.symbol) { errorNode = prop.valueDeclaration; } else if (indexDeclaration) { @@ -22161,7 +23084,7 @@ var ts; var firstDecl; for (var _i = 0, _a = symbol.declarations; _i < _a.length; _i++) { var declaration = _a[_i]; - if (declaration.kind === 218 || declaration.kind === 219) { + if (declaration.kind === 220 || declaration.kind === 221) { if (!firstDecl) { firstDecl = declaration; } @@ -22206,7 +23129,7 @@ var ts; if (baseTypeNode) { var baseTypes = getBaseTypes(type); if (baseTypes.length && produceDiagnostics) { - var baseType = baseTypes[0]; + var baseType_1 = baseTypes[0]; var staticBaseType = getBaseConstructorTypeOfClass(type); checkBaseTypeAccessibility(staticBaseType, baseTypeNode); checkSourceElement(baseTypeNode.expression); @@ -22219,15 +23142,15 @@ var ts; } } } - checkTypeAssignableTo(typeWithThis, getTypeWithThisArgument(baseType, type.thisType), node.name || node, ts.Diagnostics.Class_0_incorrectly_extends_base_class_1); + checkTypeAssignableTo(typeWithThis, getTypeWithThisArgument(baseType_1, type.thisType), node.name || node, ts.Diagnostics.Class_0_incorrectly_extends_base_class_1); checkTypeAssignableTo(staticType, getTypeWithoutSignatures(staticBaseType), node.name || node, ts.Diagnostics.Class_static_side_0_incorrectly_extends_base_class_static_side_1); if (!(staticBaseType.symbol && staticBaseType.symbol.flags & 32)) { var constructors = getInstantiatedConstructorsForTypeArguments(staticBaseType, baseTypeNode.typeArguments); - if (ts.forEach(constructors, function (sig) { return getReturnTypeOfSignature(sig) !== baseType; })) { + if (ts.forEach(constructors, function (sig) { return getReturnTypeOfSignature(sig) !== baseType_1; })) { error(baseTypeNode.expression, ts.Diagnostics.Base_constructors_must_all_have_the_same_return_type); } } - checkKindsOfPropertyMemberOverrides(type, baseType); + checkKindsOfPropertyMemberOverrides(type, baseType_1); } } var implementedTypeNodes = ts.getClassImplementsHeritageClauseElements(node); @@ -22290,7 +23213,7 @@ var ts; if (derived === base) { var derivedClassDecl = getClassLikeDeclarationOfSymbol(type.symbol); if (baseDeclarationFlags & 128 && (!derivedClassDecl || !(derivedClassDecl.flags & 128))) { - if (derivedClassDecl.kind === 190) { + if (derivedClassDecl.kind === 191) { error(derivedClassDecl, ts.Diagnostics.Non_abstract_class_expression_does_not_implement_inherited_abstract_member_0_from_class_1, symbolToString(baseProperty), typeToString(baseType)); } else { @@ -22334,7 +23257,7 @@ var ts; } } function isAccessor(kind) { - return kind === 147 || kind === 148; + return kind === 148 || kind === 149; } function areTypeParametersIdentical(list1, list2) { if (!list1 && !list2) { @@ -22401,7 +23324,7 @@ var ts; checkExportsOnMergedDeclarations(node); var symbol = getSymbolOfNode(node); checkTypeParameterListsIdentical(node, symbol); - var firstInterfaceDecl = ts.getDeclarationOfKind(symbol, 219); + var firstInterfaceDecl = ts.getDeclarationOfKind(symbol, 221); if (node === firstInterfaceDecl) { var type = getDeclaredTypeOfSymbol(symbol); var typeWithThis = getTypeWithThisArgument(type); @@ -22494,7 +23417,7 @@ var ts; return value; function evalConstant(e) { switch (e.kind) { - case 183: + case 184: var value_1 = evalConstant(e.operand); if (value_1 === undefined) { return undefined; @@ -22505,7 +23428,7 @@ var ts; case 50: return ~value_1; } return undefined; - case 185: + case 186: var left = evalConstant(e.left); if (left === undefined) { return undefined; @@ -22530,22 +23453,22 @@ var ts; return undefined; case 8: return +e.text; - case 176: + case 177: return evalConstant(e.expression); case 69: + case 172: case 171: - case 170: var member = initializer.parent; var currentType = getTypeOfSymbol(getSymbolOfNode(member.parent)); var enumType_1; - var propertyName; + var propertyName = void 0; if (e.kind === 69) { enumType_1 = currentType; propertyName = e.text; } else { - var expression; - if (e.kind === 171) { + var expression = void 0; + if (e.kind === 172) { if (e.argumentExpression === undefined || e.argumentExpression.kind !== 9) { return undefined; @@ -22562,7 +23485,7 @@ var ts; if (current.kind === 69) { break; } - else if (current.kind === 170) { + else if (current.kind === 171) { current = current.expression; } else { @@ -22620,9 +23543,9 @@ var ts; } }); } - var seenEnumMissingInitialInitializer = false; + var seenEnumMissingInitialInitializer_1 = false; ts.forEach(enumSymbol.declarations, function (declaration) { - if (declaration.kind !== 221) { + if (declaration.kind !== 223) { return false; } var enumDeclaration = declaration; @@ -22631,11 +23554,11 @@ var ts; } var firstEnumMember = enumDeclaration.members[0]; if (!firstEnumMember.initializer) { - if (seenEnumMissingInitialInitializer) { + if (seenEnumMissingInitialInitializer_1) { error(firstEnumMember.name, ts.Diagnostics.In_an_enum_with_multiple_declarations_only_one_declaration_can_omit_an_initializer_for_its_first_enum_element); } else { - seenEnumMissingInitialInitializer = true; + seenEnumMissingInitialInitializer_1 = true; } } }); @@ -22645,8 +23568,8 @@ var ts; var declarations = symbol.declarations; for (var _i = 0, declarations_5 = declarations; _i < declarations_5.length; _i++) { var declaration = declarations_5[_i]; - if ((declaration.kind === 218 || - (declaration.kind === 217 && ts.nodeIsPresent(declaration.body))) && + if ((declaration.kind === 220 || + (declaration.kind === 219 && ts.nodeIsPresent(declaration.body))) && !ts.isInAmbientContext(declaration)) { return declaration; } @@ -22703,7 +23626,7 @@ var ts; error(node.name, ts.Diagnostics.A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged); } } - var mergedClass = ts.getDeclarationOfKind(symbol, 218); + var mergedClass = ts.getDeclarationOfKind(symbol, 220); if (mergedClass && inSameLexicalScope(node, mergedClass)) { getNodeLinks(node).flags |= 32768; @@ -22741,40 +23664,40 @@ var ts; } function checkModuleAugmentationElement(node, isGlobalAugmentation) { switch (node.kind) { - case 197: + case 199: for (var _i = 0, _a = node.declarationList.declarations; _i < _a.length; _i++) { var decl = _a[_i]; checkModuleAugmentationElement(decl, isGlobalAugmentation); } break; - case 231: - case 232: + case 234: + case 235: grammarErrorOnFirstToken(node, ts.Diagnostics.Exports_and_export_assignments_are_not_permitted_in_module_augmentations); break; - case 225: + case 228: if (node.moduleReference.kind !== 9) { error(node.name, ts.Diagnostics.Module_augmentation_cannot_introduce_new_names_in_the_top_level_scope); break; } - case 226: + case 229: grammarErrorOnFirstToken(node, ts.Diagnostics.Imports_are_not_permitted_in_module_augmentations_Consider_moving_them_to_the_enclosing_external_module); break; - case 167: - case 215: - var name_16 = node.name; - if (ts.isBindingPattern(name_16)) { - for (var _b = 0, _c = name_16.elements; _b < _c.length; _b++) { + case 168: + case 217: + var name_18 = node.name; + if (ts.isBindingPattern(name_18)) { + for (var _b = 0, _c = name_18.elements; _b < _c.length; _b++) { var el = _c[_b]; checkModuleAugmentationElement(el, isGlobalAugmentation); } break; } - case 218: - case 221: - case 217: - case 219: - case 222: case 220: + case 223: + case 219: + case 221: + case 224: + case 222: var symbol = getSymbolOfNode(node); if (symbol) { var reportError = !(symbol.flags & 33554432); @@ -22783,7 +23706,7 @@ var ts; reportError = symbol.parent !== undefined; } else { - reportError = ts.isExternalModuleAugmentation(symbol.parent.valueDeclaration); + reportError = ts.isExternalModuleAugmentation(symbol.parent.declarations[0]); } } if (reportError) { @@ -22795,10 +23718,10 @@ var ts; } function getFirstIdentifier(node) { while (true) { - if (node.kind === 137) { + if (node.kind === 138) { node = node.left; } - else if (node.kind === 170) { + else if (node.kind === 171) { node = node.expression; } else { @@ -22814,9 +23737,9 @@ var ts; error(moduleName, ts.Diagnostics.String_literal_expected); return false; } - var inAmbientExternalModule = node.parent.kind === 223 && ts.isAmbientModule(node.parent.parent); - if (node.parent.kind !== 252 && !inAmbientExternalModule) { - error(moduleName, node.kind === 232 ? + var inAmbientExternalModule = node.parent.kind === 225 && ts.isAmbientModule(node.parent.parent); + if (node.parent.kind !== 255 && !inAmbientExternalModule) { + error(moduleName, node.kind === 235 ? ts.Diagnostics.Export_declarations_are_not_permitted_in_a_namespace : ts.Diagnostics.Import_declarations_in_a_namespace_cannot_reference_a_module); return false; @@ -22833,11 +23756,11 @@ var ts; var symbol = getSymbolOfNode(node); var target = resolveAlias(symbol); if (target !== unknownSymbol) { - var excludedMeanings = (symbol.flags & 107455 ? 107455 : 0) | + var excludedMeanings = (symbol.flags & (107455 | 1048576) ? 107455 : 0) | (symbol.flags & 793056 ? 793056 : 0) | (symbol.flags & 1536 ? 1536 : 0); if (target.flags & excludedMeanings) { - var message = node.kind === 234 ? + var message = node.kind === 237 ? ts.Diagnostics.Export_declaration_conflicts_with_exported_declaration_of_0 : ts.Diagnostics.Import_declaration_conflicts_with_local_declaration_of_0; error(node, message, symbolToString(symbol)); @@ -22864,7 +23787,7 @@ var ts; checkImportBinding(importClause); } if (importClause.namedBindings) { - if (importClause.namedBindings.kind === 228) { + if (importClause.namedBindings.kind === 231) { checkImportBinding(importClause.namedBindings); } else { @@ -22915,8 +23838,8 @@ var ts; if (!node.moduleSpecifier || checkExternalImportOrExportDeclaration(node)) { if (node.exportClause) { ts.forEach(node.exportClause.elements, checkExportSpecifier); - var inAmbientExternalModule = node.parent.kind === 223 && ts.isAmbientModule(node.parent.parent); - if (node.parent.kind !== 252 && !inAmbientExternalModule) { + var inAmbientExternalModule = node.parent.kind === 225 && ts.isAmbientModule(node.parent.parent); + if (node.parent.kind !== 255 && !inAmbientExternalModule) { error(node, ts.Diagnostics.Export_declarations_are_not_permitted_in_a_namespace); } } @@ -22929,7 +23852,7 @@ var ts; } } function checkGrammarModuleElementContext(node, errorMessage) { - if (node.parent.kind !== 252 && node.parent.kind !== 223 && node.parent.kind !== 222) { + if (node.parent.kind !== 255 && node.parent.kind !== 225 && node.parent.kind !== 224) { return grammarErrorOnFirstToken(node, errorMessage); } } @@ -22950,8 +23873,8 @@ var ts; if (checkGrammarModuleElementContext(node, ts.Diagnostics.An_export_assignment_can_only_be_used_in_a_module)) { return; } - var container = node.parent.kind === 252 ? node.parent : node.parent.parent; - if (container.kind === 222 && !ts.isAmbientModule(container)) { + var container = node.parent.kind === 255 ? node.parent : node.parent.parent; + if (container.kind === 224 && !ts.isAmbientModule(container)) { error(node, ts.Diagnostics.An_export_assignment_cannot_be_used_in_a_namespace); return; } @@ -23018,7 +23941,7 @@ var ts; links.exportsChecked = true; } function isNotOverload(declaration) { - return declaration.kind !== 217 || !!declaration.body; + return declaration.kind !== 219 || !!declaration.body; } } function checkSourceElement(node) { @@ -23028,118 +23951,118 @@ var ts; var kind = node.kind; if (cancellationToken) { switch (kind) { - case 222: - case 218: + case 224: + case 220: + case 221: case 219: - case 217: cancellationToken.throwIfCancellationRequested(); } } switch (kind) { - case 139: - return checkTypeParameter(node); case 140: + return checkTypeParameter(node); + case 141: return checkParameter(node); + case 144: case 143: - case 142: return checkPropertyDeclaration(node); - case 154: case 155: - case 149: + case 156: case 150: - return checkSignatureDeclaration(node); case 151: return checkSignatureDeclaration(node); - case 145: - case 144: - return checkMethodDeclaration(node); - case 146: - return checkConstructorDeclaration(node); - case 147: - case 148: - return checkAccessorDeclaration(node); - case 153: - return checkTypeReferenceNode(node); case 152: + return checkSignatureDeclaration(node); + case 146: + case 145: + return checkMethodDeclaration(node); + case 147: + return checkConstructorDeclaration(node); + case 148: + case 149: + return checkAccessorDeclaration(node); + case 154: + return checkTypeReferenceNode(node); + case 153: return checkTypePredicate(node); - case 156: - return checkTypeQuery(node); case 157: - return checkTypeLiteral(node); + return checkTypeQuery(node); case 158: - return checkArrayType(node); + return checkTypeLiteral(node); case 159: - return checkTupleType(node); + return checkArrayType(node); case 160: + return checkTupleType(node); case 161: - return checkUnionOrIntersectionType(node); case 162: + return checkUnionOrIntersectionType(node); + case 163: return checkSourceElement(node.type); - case 217: - return checkFunctionDeclaration(node); - case 196: - case 223: - return checkBlock(node); - case 197: - return checkVariableStatement(node); - case 199: - return checkExpressionStatement(node); - case 200: - return checkIfStatement(node); - case 201: - return checkDoStatement(node); - case 202: - return checkWhileStatement(node); - case 203: - return checkForStatement(node); - case 204: - return checkForInStatement(node); - case 205: - return checkForOfStatement(node); - case 206: - case 207: - return checkBreakOrContinueStatement(node); - case 208: - return checkReturnStatement(node); - case 209: - return checkWithStatement(node); - case 210: - return checkSwitchStatement(node); - case 211: - return checkLabeledStatement(node); - case 212: - return checkThrowStatement(node); - case 213: - return checkTryStatement(node); - case 215: - return checkVariableDeclaration(node); - case 167: - return checkBindingElement(node); - case 218: - return checkClassDeclaration(node); case 219: - return checkInterfaceDeclaration(node); - case 220: - return checkTypeAliasDeclaration(node); - case 221: - return checkEnumDeclaration(node); - case 222: - return checkModuleDeclaration(node); - case 226: - return checkImportDeclaration(node); - case 225: - return checkImportEqualsDeclaration(node); - case 232: - return checkExportDeclaration(node); - case 231: - return checkExportAssignment(node); + return checkFunctionDeclaration(node); case 198: - checkGrammarStatementInAmbientContext(node); - return; + case 225: + return checkBlock(node); + case 199: + return checkVariableStatement(node); + case 201: + return checkExpressionStatement(node); + case 202: + return checkIfStatement(node); + case 203: + return checkDoStatement(node); + case 204: + return checkWhileStatement(node); + case 205: + return checkForStatement(node); + case 206: + return checkForInStatement(node); + case 207: + return checkForOfStatement(node); + case 208: + case 209: + return checkBreakOrContinueStatement(node); + case 210: + return checkReturnStatement(node); + case 211: + return checkWithStatement(node); + case 212: + return checkSwitchStatement(node); + case 213: + return checkLabeledStatement(node); case 214: + return checkThrowStatement(node); + case 215: + return checkTryStatement(node); + case 217: + return checkVariableDeclaration(node); + case 168: + return checkBindingElement(node); + case 220: + return checkClassDeclaration(node); + case 221: + return checkInterfaceDeclaration(node); + case 222: + return checkTypeAliasDeclaration(node); + case 223: + return checkEnumDeclaration(node); + case 224: + return checkModuleDeclaration(node); + case 229: + return checkImportDeclaration(node); + case 228: + return checkImportEqualsDeclaration(node); + case 235: + return checkExportDeclaration(node); + case 234: + return checkExportAssignment(node); + case 200: checkGrammarStatementInAmbientContext(node); return; - case 235: + case 216: + checkGrammarStatementInAmbientContext(node); + return; + case 238: return checkMissingDeclaration(node); } } @@ -23152,17 +24075,17 @@ var ts; for (var _i = 0, deferredNodes_1 = deferredNodes; _i < deferredNodes_1.length; _i++) { var node = deferredNodes_1[_i]; switch (node.kind) { - case 177: case 178: + case 179: + case 146: case 145: - case 144: checkFunctionExpressionOrObjectLiteralMethodDeferred(node); break; - case 147: case 148: + case 149: checkAccessorDeferred(node); break; - case 190: + case 191: checkClassExpressionDeferred(node); break; } @@ -23227,7 +24150,7 @@ var ts; function isInsideWithStatementBody(node) { if (node) { while (node.parent) { - if (node.parent.kind === 209 && node.parent.statement === node) { + if (node.parent.kind === 211 && node.parent.statement === node) { return true; } node = node.parent; @@ -23249,28 +24172,28 @@ var ts; copySymbols(location.locals, meaning); } switch (location.kind) { - case 252: + case 255: if (!ts.isExternalOrCommonJsModule(location)) { break; } - case 222: + case 224: copySymbols(getSymbolOfNode(location).exports, meaning & 8914931); break; - case 221: + case 223: copySymbols(getSymbolOfNode(location).exports, meaning & 8); break; - case 190: + case 191: var className = location.name; if (className) { copySymbol(location.symbol, meaning); } - case 218: - case 219: + case 220: + case 221: if (!(memberFlags & 32)) { copySymbols(getSymbolOfNode(location).members, meaning & 793056); } break; - case 177: + case 178: var funcName = location.name; if (funcName) { copySymbol(location.symbol, meaning); @@ -23309,47 +24232,50 @@ var ts; } function isTypeDeclaration(node) { switch (node.kind) { - case 139: - case 218: - case 219: + case 140: case 220: case 221: + case 222: + case 223: return true; } } function isTypeReferenceIdentifier(entityName) { var node = entityName; - while (node.parent && node.parent.kind === 137) { + while (node.parent && node.parent.kind === 138) { node = node.parent; } - return node.parent && node.parent.kind === 153; + return node.parent && node.parent.kind === 154; } function isHeritageClauseElementIdentifier(entityName) { var node = entityName; - while (node.parent && node.parent.kind === 170) { + while (node.parent && node.parent.kind === 171) { node = node.parent; } - return node.parent && node.parent.kind === 192; + return node.parent && node.parent.kind === 193; } - function isNodeWithinClass(node, classDeclaration) { + function forEachEnclosingClass(node, callback) { + var result; while (true) { node = ts.getContainingClass(node); - if (!node) { - return false; - } - if (node === classDeclaration) { - return true; - } + if (!node) + break; + if (result = callback(node)) + break; } + return result; + } + function isNodeWithinClass(node, classDeclaration) { + return !!forEachEnclosingClass(node, function (n) { return n === classDeclaration; }); } function getLeftSideOfImportEqualsOrExportAssignment(nodeOnRightSide) { - while (nodeOnRightSide.parent.kind === 137) { + while (nodeOnRightSide.parent.kind === 138) { nodeOnRightSide = nodeOnRightSide.parent; } - if (nodeOnRightSide.parent.kind === 225) { + if (nodeOnRightSide.parent.kind === 228) { return nodeOnRightSide.parent.moduleReference === nodeOnRightSide && nodeOnRightSide.parent; } - if (nodeOnRightSide.parent.kind === 231) { + if (nodeOnRightSide.parent.kind === 234) { return nodeOnRightSide.parent.expression === nodeOnRightSide && nodeOnRightSide.parent; } return undefined; @@ -23361,7 +24287,7 @@ var ts; if (ts.isDeclarationName(entityName)) { return getSymbolOfNode(entityName.parent); } - if (ts.isInJavaScriptFile(entityName) && entityName.parent.kind === 170) { + if (ts.isInJavaScriptFile(entityName) && entityName.parent.kind === 171) { var specialPropertyAssignmentKind = ts.getSpecialPropertyAssignmentKind(entityName.parent.parent); switch (specialPropertyAssignmentKind) { case 1: @@ -23373,10 +24299,10 @@ var ts; default: } } - if (entityName.parent.kind === 231) { + if (entityName.parent.kind === 234) { return resolveEntityName(entityName, 107455 | 793056 | 1536 | 8388608); } - if (entityName.kind !== 170) { + if (entityName.kind !== 171) { if (isInRightSideOfImportOrExportAssignment(entityName)) { return getSymbolOfPartOfRightHandSideOfImportEquals(entityName); } @@ -23386,7 +24312,7 @@ var ts; } if (isHeritageClauseElementIdentifier(entityName)) { var meaning = 0; - if (entityName.parent.kind === 192) { + if (entityName.parent.kind === 193) { meaning = 793056; if (ts.isExpressionWithTypeArgumentsInClassExtendsClause(entityName.parent)) { meaning |= 107455; @@ -23398,27 +24324,25 @@ var ts; meaning |= 8388608; return resolveEntityName(entityName, meaning); } - else if ((entityName.parent.kind === 239) || - (entityName.parent.kind === 238) || - (entityName.parent.kind === 241)) { - return getJsxTagSymbol(entityName.parent); - } else if (ts.isExpression(entityName)) { if (ts.nodeIsMissing(entityName)) { return undefined; } if (entityName.kind === 69) { + if (ts.isJSXTagName(entityName) && isJsxIntrinsicIdentifier(entityName)) { + return getIntrinsicTagSymbol(entityName.parent); + } var meaning = 107455 | 8388608; return resolveEntityName(entityName, meaning); } - else if (entityName.kind === 170) { + else if (entityName.kind === 171) { var symbol = getNodeLinks(entityName).resolvedSymbol; if (!symbol) { checkPropertyAccessExpression(entityName); } return getNodeLinks(entityName).resolvedSymbol; } - else if (entityName.kind === 137) { + else if (entityName.kind === 138) { var symbol = getNodeLinks(entityName).resolvedSymbol; if (!symbol) { checkQualifiedName(entityName); @@ -23427,14 +24351,14 @@ var ts; } } else if (isTypeReferenceIdentifier(entityName)) { - var meaning = entityName.parent.kind === 153 ? 793056 : 1536; + var meaning = entityName.parent.kind === 154 ? 793056 : 1536; meaning |= 8388608; return resolveEntityName(entityName, meaning); } - else if (entityName.parent.kind === 242) { + else if (entityName.parent.kind === 245) { return getJsxAttributePropertySymbol(entityName.parent); } - if (entityName.parent.kind === 152) { + if (entityName.parent.kind === 153) { return resolveEntityName(entityName, 1); } return undefined; @@ -23448,12 +24372,12 @@ var ts; } if (node.kind === 69) { if (isInRightSideOfImportOrExportAssignment(node)) { - return node.parent.kind === 231 + return node.parent.kind === 234 ? getSymbolOfEntityNameOrPropertyAccessExpression(node) : getSymbolOfPartOfRightHandSideOfImportEquals(node); } - else if (node.parent.kind === 167 && - node.parent.parent.kind === 165 && + else if (node.parent.kind === 168 && + node.parent.parent.kind === 166 && node === node.parent.propertyName) { var typeOfPattern = getTypeOfNode(node.parent.parent); var propertyDeclaration = typeOfPattern && getPropertyOfType(typeOfPattern, node.text); @@ -23464,30 +24388,30 @@ var ts; } switch (node.kind) { case 69: - case 170: - case 137: + case 171: + case 138: return getSymbolOfEntityNameOrPropertyAccessExpression(node); case 97: case 95: var type = ts.isExpression(node) ? checkExpression(node) : getTypeFromTypeNode(node); return type.symbol; - case 163: + case 164: return getTypeFromTypeNode(node).symbol; case 121: var constructorDeclaration = node.parent; - if (constructorDeclaration && constructorDeclaration.kind === 146) { + if (constructorDeclaration && constructorDeclaration.kind === 147) { return constructorDeclaration.parent.symbol; } return undefined; case 9: if ((ts.isExternalModuleImportEqualsDeclaration(node.parent.parent) && ts.getExternalModuleImportEqualsDeclarationExpression(node.parent.parent) === node) || - ((node.parent.kind === 226 || node.parent.kind === 232) && + ((node.parent.kind === 229 || node.parent.kind === 235) && node.parent.moduleSpecifier === node)) { return resolveExternalModuleName(node, node); } case 8: - if (node.parent.kind === 171 && node.parent.argumentExpression === node) { + if (node.parent.kind === 172 && node.parent.argumentExpression === node) { var objectType = checkExpression(node.parent.expression); if (objectType === unknownType) return undefined; @@ -23501,7 +24425,7 @@ var ts; return undefined; } function getShorthandAssignmentValueSymbol(location) { - if (location && location.kind === 250) { + if (location && location.kind === 253) { return resolveEntityName(location.name, 107455 | 8388608); } return undefined; @@ -23576,15 +24500,15 @@ var ts; } function getRootSymbols(symbol) { if (symbol.flags & 268435456) { - var symbols = []; - var name_17 = symbol.name; + var symbols_3 = []; + var name_19 = symbol.name; ts.forEach(getSymbolLinks(symbol).containingType.types, function (t) { - var symbol = getPropertyOfType(t, name_17); + var symbol = getPropertyOfType(t, name_19); if (symbol) { - symbols.push(symbol); + symbols_3.push(symbol); } }); - return symbols; + return symbols_3; } else if (symbol.flags & 67108864) { var target = getSymbolLinks(symbol).target; @@ -23628,11 +24552,11 @@ var ts; } var parentSymbol = getParentOfSymbol(symbol); if (parentSymbol) { - if (parentSymbol.flags & 512 && parentSymbol.valueDeclaration.kind === 252) { + if (parentSymbol.flags & 512 && parentSymbol.valueDeclaration.kind === 255) { return parentSymbol.valueDeclaration; } for (var n = node.parent; n; n = n.parent) { - if ((n.kind === 222 || n.kind === 221) && getSymbolOfNode(n) === parentSymbol) { + if ((n.kind === 224 || n.kind === 223) && getSymbolOfNode(n) === parentSymbol) { return n; } } @@ -23656,7 +24580,7 @@ var ts; else if (nodeLinks_1.flags & 131072) { var isDeclaredInLoop = nodeLinks_1.flags & 262144; var inLoopInitializer = ts.isIterationStatement(container, false); - var inLoopBodyBlock = container.kind === 196 && ts.isIterationStatement(container.parent, false); + var inLoopBodyBlock = container.kind === 198 && ts.isIterationStatement(container.parent, false); links.isDeclarationWithCollidingName = !ts.isBlockScopedContainerTopLevel(container) && (!isDeclaredInLoop || (!inLoopInitializer && !inLoopBodyBlock)); } else { @@ -23677,22 +24601,22 @@ var ts; } function isValueAliasDeclaration(node) { switch (node.kind) { - case 225: - case 227: case 228: case 230: - case 234: + case 231: + case 233: + case 237: return isAliasResolvedToValue(getSymbolOfNode(node)); - case 232: + case 235: var exportClause = node.exportClause; return exportClause && ts.forEach(exportClause.elements, isValueAliasDeclaration); - case 231: + case 234: return node.expression && node.expression.kind === 69 ? isAliasResolvedToValue(getSymbolOfNode(node)) : true; } return false; } function isTopLevelValueImportEqualsWithEntityName(node) { - if (node.parent.kind !== 252 || !ts.isInternalModuleImportEqualsDeclaration(node)) { + if (node.parent.kind !== 255 || !ts.isInternalModuleImportEqualsDeclaration(node)) { return false; } var isValue = isAliasResolvedToValue(getSymbolOfNode(node)); @@ -23740,7 +24664,7 @@ var ts; return getNodeLinks(node).enumMemberValue; } function getConstantValue(node) { - if (node.kind === 251) { + if (node.kind === 254) { return getEnumMemberValue(node); } var symbol = getNodeLinks(node).resolvedSymbol; @@ -23811,9 +24735,15 @@ var ts; getSymbolDisplayBuilder().buildTypeDisplay(getReturnTypeOfSignature(signature), writer, enclosingDeclaration, flags); } function writeTypeOfExpression(expr, enclosingDeclaration, flags, writer) { - var type = getTypeOfExpression(expr); + var type = getWidenedType(getTypeOfExpression(expr)); getSymbolDisplayBuilder().buildTypeDisplay(type, writer, enclosingDeclaration, flags); } + function writeBaseConstructorTypeOfClass(node, enclosingDeclaration, flags, writer) { + var classType = getDeclaredTypeOfSymbol(getSymbolOfNode(node)); + resolveBaseTypesOfClass(classType); + var baseType = classType.resolvedBaseTypes.length ? classType.resolvedBaseTypes[0] : unknownType; + getSymbolDisplayBuilder().buildTypeDisplay(baseType, writer, enclosingDeclaration, flags); + } function hasGlobalName(name) { return ts.hasProperty(globals, name); } @@ -23842,6 +24772,7 @@ var ts; writeTypeOfDeclaration: writeTypeOfDeclaration, writeReturnTypeOfSignatureDeclaration: writeReturnTypeOfSignatureDeclaration, writeTypeOfExpression: writeTypeOfExpression, + writeBaseConstructorTypeOfClass: writeBaseConstructorTypeOfClass, isSymbolAccessible: isSymbolAccessible, isEntityNameVisible: isEntityNameVisible, getConstantValue: getConstantValue, @@ -23860,7 +24791,7 @@ var ts; if (!moduleSymbol) { return undefined; } - return ts.getDeclarationOfKind(moduleSymbol, 252); + return ts.getDeclarationOfKind(moduleSymbol, 255); } function initializeTypeChecker() { ts.forEach(host.getSourceFiles(), function (file) { @@ -23874,6 +24805,9 @@ var ts; if (file.moduleAugmentations.length) { (augmentations || (augmentations = [])).push(file.moduleAugmentations); } + if (file.wasReferenced && file.symbol && file.symbol.globalExports) { + mergeSymbolTable(globals, file.symbol.globalExports); + } }); if (augmentations) { for (var _i = 0, augmentations_1 = augmentations; _i < augmentations_1.length; _i++) { @@ -23901,6 +24835,7 @@ var ts; getGlobalMethodDecoratorType = ts.memoize(function () { return getGlobalType("MethodDecorator"); }); getGlobalParameterDecoratorType = ts.memoize(function () { return getGlobalType("ParameterDecorator"); }); getGlobalTypedPropertyDescriptorType = ts.memoize(function () { return getGlobalType("TypedPropertyDescriptor", 1); }); + getGlobalESSymbolConstructorSymbol = ts.memoize(function () { return getGlobalValueSymbol("Symbol"); }); getGlobalPromiseType = ts.memoize(function () { return getGlobalType("Promise", 1); }); tryGetGlobalPromiseType = ts.memoize(function () { return getGlobalSymbol("Promise", 793056, undefined) && getGlobalPromiseType(); }); getGlobalPromiseLikeType = ts.memoize(function () { return getGlobalType("PromiseLike", 1); }); @@ -23908,21 +24843,18 @@ var ts; getGlobalPromiseConstructorSymbol = ts.memoize(function () { return getGlobalValueSymbol("Promise"); }); getGlobalPromiseConstructorLikeType = ts.memoize(function () { return getGlobalType("PromiseConstructorLike"); }); getGlobalThenableType = ts.memoize(createThenableType); + getGlobalTemplateStringsArrayType = ts.memoize(function () { return getGlobalType("TemplateStringsArray"); }); if (languageVersion >= 2) { - globalTemplateStringsArrayType = getGlobalType("TemplateStringsArray"); - globalESSymbolType = getGlobalType("Symbol"); - globalESSymbolConstructorSymbol = getGlobalValueSymbol("Symbol"); - globalIterableType = getGlobalType("Iterable", 1); - globalIteratorType = getGlobalType("Iterator", 1); - globalIterableIteratorType = getGlobalType("IterableIterator", 1); + getGlobalESSymbolType = ts.memoize(function () { return getGlobalType("Symbol"); }); + getGlobalIterableType = ts.memoize(function () { return getGlobalType("Iterable", 1); }); + getGlobalIteratorType = ts.memoize(function () { return getGlobalType("Iterator", 1); }); + getGlobalIterableIteratorType = ts.memoize(function () { return getGlobalType("IterableIterator", 1); }); } else { - globalTemplateStringsArrayType = unknownType; - globalESSymbolType = createAnonymousType(undefined, emptySymbols, emptyArray, emptyArray, undefined, undefined); - globalESSymbolConstructorSymbol = undefined; - globalIterableType = emptyGenericType; - globalIteratorType = emptyGenericType; - globalIterableIteratorType = emptyGenericType; + getGlobalESSymbolType = ts.memoize(function () { return emptyObjectType; }); + getGlobalIterableType = ts.memoize(function () { return emptyGenericType; }); + getGlobalIteratorType = ts.memoize(function () { return emptyGenericType; }); + getGlobalIterableIteratorType = ts.memoize(function () { return emptyGenericType; }); } anyArrayType = createArrayType(anyType); var symbol = getGlobalSymbol("ReadonlyArray", 793056, undefined); @@ -23951,14 +24883,14 @@ var ts; return false; } if (!ts.nodeCanBeDecorated(node)) { - if (node.kind === 145 && !ts.nodeIsPresent(node.body)) { + if (node.kind === 146 && !ts.nodeIsPresent(node.body)) { return grammarErrorOnFirstToken(node, ts.Diagnostics.A_decorator_can_only_decorate_a_method_implementation_not_an_overload); } else { return grammarErrorOnFirstToken(node, ts.Diagnostics.Decorators_are_not_valid_here); } } - else if (node.kind === 147 || node.kind === 148) { + else if (node.kind === 148 || node.kind === 149) { var accessors = ts.getAllAccessorDeclarations(node.parent.members, node); if (accessors.firstAccessor.decorators && node === accessors.secondAccessor) { return grammarErrorOnFirstToken(node, ts.Diagnostics.Decorators_cannot_be_applied_to_multiple_get_Slashset_accessors_of_the_same_name); @@ -23968,38 +24900,38 @@ var ts; } function checkGrammarModifiers(node) { switch (node.kind) { - case 147: case 148: - case 146: - case 143: - case 142: - case 145: + case 149: + case 147: case 144: - case 151: - case 222: - case 226: - case 225: - case 232: - case 231: - case 140: + case 143: + case 146: + case 145: + case 152: + case 224: + case 229: + case 228: + case 235: + case 234: + case 141: break; - case 217: - if (node.modifiers && (node.modifiers.length > 1 || node.modifiers[0].kind !== 118) && - node.parent.kind !== 223 && node.parent.kind !== 252) { - return grammarErrorOnFirstToken(node, ts.Diagnostics.Modifiers_cannot_appear_here); - } - break; - case 218: case 219: - case 197: - case 220: - if (node.modifiers && node.parent.kind !== 223 && node.parent.kind !== 252) { + if (node.modifiers && (node.modifiers.length > 1 || node.modifiers[0].kind !== 118) && + node.parent.kind !== 225 && node.parent.kind !== 255) { return grammarErrorOnFirstToken(node, ts.Diagnostics.Modifiers_cannot_appear_here); } break; + case 220: case 221: + case 199: + case 222: + if (node.modifiers && node.parent.kind !== 225 && node.parent.kind !== 255) { + return grammarErrorOnFirstToken(node, ts.Diagnostics.Modifiers_cannot_appear_here); + } + break; + case 223: if (node.modifiers && (node.modifiers.length > 1 || node.modifiers[0].kind !== 74) && - node.parent.kind !== 223 && node.parent.kind !== 252) { + node.parent.kind !== 225 && node.parent.kind !== 255) { return grammarErrorOnFirstToken(node, ts.Diagnostics.Modifiers_cannot_appear_here); } break; @@ -24014,16 +24946,16 @@ var ts; for (var _i = 0, _a = node.modifiers; _i < _a.length; _i++) { var modifier = _a[_i]; if (modifier.kind !== 127) { - if (node.kind === 142 || node.kind === 144) { + if (node.kind === 143 || node.kind === 145) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_type_member, ts.tokenToString(modifier.kind)); } - if (node.kind === 151) { + if (node.kind === 152) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_an_index_signature, ts.tokenToString(modifier.kind)); } } switch (modifier.kind) { case 74: - if (node.kind !== 221 && node.parent.kind === 218) { + if (node.kind !== 223 && node.parent.kind === 220) { return grammarErrorOnNode(node, ts.Diagnostics.A_class_member_cannot_have_the_0_keyword, ts.tokenToString(74)); } break; @@ -24049,7 +24981,7 @@ var ts; else if (flags & 256) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_must_precede_1_modifier, text, "async"); } - else if (node.parent.kind === 223 || node.parent.kind === 252) { + else if (node.parent.kind === 225 || node.parent.kind === 255) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_module_or_namespace_element, text); } else if (flags & 128) { @@ -24072,10 +25004,10 @@ var ts; else if (flags & 256) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_must_precede_1_modifier, "static", "async"); } - else if (node.parent.kind === 223 || node.parent.kind === 252) { + else if (node.parent.kind === 225 || node.parent.kind === 255) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_module_or_namespace_element, "static"); } - else if (node.kind === 140) { + else if (node.kind === 141) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_parameter, "static"); } else if (flags & 128) { @@ -24088,7 +25020,7 @@ var ts; if (flags & 64) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_already_seen, "readonly"); } - else if (node.kind !== 143 && node.kind !== 142 && node.kind !== 151) { + else if (node.kind !== 144 && node.kind !== 143 && node.kind !== 152) { return grammarErrorOnNode(modifier, ts.Diagnostics.readonly_modifier_can_only_appear_on_a_property_declaration_or_index_signature); } flags |= 64; @@ -24107,10 +25039,10 @@ var ts; else if (flags & 256) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_must_precede_1_modifier, "export", "async"); } - else if (node.parent.kind === 218) { + else if (node.parent.kind === 220) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_class_element, "export"); } - else if (node.kind === 140) { + else if (node.kind === 141) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_parameter, "export"); } flags |= 1; @@ -24122,13 +25054,13 @@ var ts; else if (flags & 256) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_be_used_in_an_ambient_context, "async"); } - else if (node.parent.kind === 218) { + else if (node.parent.kind === 220) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_class_element, "declare"); } - else if (node.kind === 140) { + else if (node.kind === 141) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_parameter, "declare"); } - else if (ts.isInAmbientContext(node.parent) && node.parent.kind === 223) { + else if (ts.isInAmbientContext(node.parent) && node.parent.kind === 225) { return grammarErrorOnNode(modifier, ts.Diagnostics.A_declare_modifier_cannot_be_used_in_an_already_ambient_context); } flags |= 2; @@ -24138,14 +25070,14 @@ var ts; if (flags & 128) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_already_seen, "abstract"); } - if (node.kind !== 218) { - if (node.kind !== 145 && - node.kind !== 143 && - node.kind !== 147 && - node.kind !== 148) { + if (node.kind !== 220) { + if (node.kind !== 146 && + node.kind !== 144 && + node.kind !== 148 && + node.kind !== 149) { return grammarErrorOnNode(modifier, ts.Diagnostics.abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration); } - if (!(node.parent.kind === 218 && node.parent.flags & 128)) { + if (!(node.parent.kind === 220 && node.parent.flags & 128)) { return grammarErrorOnNode(modifier, ts.Diagnostics.Abstract_methods_can_only_appear_within_an_abstract_class); } if (flags & 32) { @@ -24164,7 +25096,7 @@ var ts; else if (flags & 2 || ts.isInAmbientContext(node.parent)) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_be_used_in_an_ambient_context, "async"); } - else if (node.kind === 140) { + else if (node.kind === 141) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_parameter, "async"); } flags |= 256; @@ -24172,7 +25104,7 @@ var ts; break; } } - if (node.kind === 146) { + if (node.kind === 147) { if (flags & 32) { return grammarErrorOnNode(lastStatic, ts.Diagnostics._0_modifier_cannot_appear_on_a_constructor_declaration, "static"); } @@ -24187,10 +25119,10 @@ var ts; } return; } - else if ((node.kind === 226 || node.kind === 225) && flags & 2) { + else if ((node.kind === 229 || node.kind === 228) && flags & 2) { return grammarErrorOnNode(lastDeclare, ts.Diagnostics.A_0_modifier_cannot_be_used_with_an_import_declaration, "declare"); } - else if (node.kind === 140 && (flags & 28) && ts.isBindingPattern(node.name)) { + else if (node.kind === 141 && (flags & 28) && ts.isBindingPattern(node.name)) { return grammarErrorOnNode(node, ts.Diagnostics.A_parameter_property_may_not_be_a_binding_pattern); } if (flags & 256) { @@ -24202,10 +25134,10 @@ var ts; return grammarErrorOnNode(asyncModifier, ts.Diagnostics.Async_functions_are_only_available_when_targeting_ECMAScript_6_and_higher); } switch (node.kind) { - case 145: - case 217: - case 177: + case 146: + case 219: case 178: + case 179: if (!node.asteriskToken) { return false; } @@ -24270,7 +25202,7 @@ var ts; checkGrammarParameterList(node.parameters) || checkGrammarArrowFunction(node, file); } function checkGrammarArrowFunction(node, file) { - if (node.kind === 178) { + if (node.kind === 179) { var arrowFunction = node; var startLine = ts.getLineAndCharacterOfPosition(file, arrowFunction.equalsGreaterThanToken.pos).line; var endLine = ts.getLineAndCharacterOfPosition(file, arrowFunction.equalsGreaterThanToken.end).line; @@ -24332,7 +25264,7 @@ var ts; var sourceFile = ts.getSourceFileOfNode(node); for (var _i = 0, args_1 = args; _i < args_1.length; _i++) { var arg = args_1[_i]; - if (arg.kind === 191) { + if (arg.kind === 192) { return grammarErrorAtPos(sourceFile, arg.pos, 0, ts.Diagnostics.Argument_expression_expected); } } @@ -24403,19 +25335,19 @@ var ts; return false; } function checkGrammarComputedPropertyName(node) { - if (node.kind !== 138) { + if (node.kind !== 139) { return false; } var computedPropertyName = node; - if (computedPropertyName.expression.kind === 185 && computedPropertyName.expression.operatorToken.kind === 24) { + if (computedPropertyName.expression.kind === 186 && computedPropertyName.expression.operatorToken.kind === 24) { return grammarErrorOnNode(computedPropertyName.expression, ts.Diagnostics.A_comma_expression_is_not_allowed_in_a_computed_property_name); } } function checkGrammarForGenerator(node) { if (node.asteriskToken) { - ts.Debug.assert(node.kind === 217 || - node.kind === 177 || - node.kind === 145); + ts.Debug.assert(node.kind === 219 || + node.kind === 178 || + node.kind === 146); if (ts.isInAmbientContext(node)) { return grammarErrorOnNode(node.asteriskToken, ts.Diagnostics.Generators_are_not_allowed_in_an_ambient_context); } @@ -24439,85 +25371,84 @@ var ts; var SetAccessor = 4; var GetOrSetAccessor = GetAccessor | SetAccessor; var _loop_1 = function(prop) { - var name_18 = prop.name; - if (prop.kind === 191 || - name_18.kind === 138) { - checkGrammarComputedPropertyName(name_18); + var name_20 = prop.name; + if (prop.kind === 192 || + name_20.kind === 139) { + checkGrammarComputedPropertyName(name_20); return "continue"; } - if (prop.kind === 250 && !inDestructuring && prop.objectAssignmentInitializer) { + if (prop.kind === 253 && !inDestructuring && prop.objectAssignmentInitializer) { return { value: grammarErrorOnNode(prop.equalsToken, ts.Diagnostics.can_only_be_used_in_an_object_literal_property_inside_a_destructuring_assignment) }; } ts.forEach(prop.modifiers, function (mod) { - if (mod.kind !== 118 || prop.kind !== 145) { + if (mod.kind !== 118 || prop.kind !== 146) { grammarErrorOnNode(mod, ts.Diagnostics._0_modifier_cannot_be_used_here, ts.getTextOfNode(mod)); } }); var currentKind = void 0; - if (prop.kind === 249 || prop.kind === 250) { + if (prop.kind === 252 || prop.kind === 253) { checkGrammarForInvalidQuestionMark(prop, prop.questionToken, ts.Diagnostics.An_object_member_cannot_be_declared_optional); - if (name_18.kind === 8) { - checkGrammarNumericLiteral(name_18); + if (name_20.kind === 8) { + checkGrammarNumericLiteral(name_20); } currentKind = Property; } - else if (prop.kind === 145) { + else if (prop.kind === 146) { currentKind = Property; } - else if (prop.kind === 147) { + else if (prop.kind === 148) { currentKind = GetAccessor; } - else if (prop.kind === 148) { + else if (prop.kind === 149) { currentKind = SetAccessor; } else { ts.Debug.fail("Unexpected syntax kind:" + prop.kind); } - if (!ts.hasProperty(seen, name_18.text)) { - seen[name_18.text] = currentKind; + if (!ts.hasProperty(seen, name_20.text)) { + seen[name_20.text] = currentKind; } else { - var existingKind = seen[name_18.text]; + var existingKind = seen[name_20.text]; if (currentKind === Property && existingKind === Property) { return "continue"; } else if ((currentKind & GetOrSetAccessor) && (existingKind & GetOrSetAccessor)) { if (existingKind !== GetOrSetAccessor && currentKind !== existingKind) { - seen[name_18.text] = currentKind | existingKind; + seen[name_20.text] = currentKind | existingKind; } else { - return { value: grammarErrorOnNode(name_18, ts.Diagnostics.An_object_literal_cannot_have_multiple_get_Slashset_accessors_with_the_same_name) }; + return { value: grammarErrorOnNode(name_20, ts.Diagnostics.An_object_literal_cannot_have_multiple_get_Slashset_accessors_with_the_same_name) }; } } else { - return { value: grammarErrorOnNode(name_18, ts.Diagnostics.An_object_literal_cannot_have_property_and_accessor_with_the_same_name) }; + return { value: grammarErrorOnNode(name_20, ts.Diagnostics.An_object_literal_cannot_have_property_and_accessor_with_the_same_name) }; } } }; for (var _i = 0, _a = node.properties; _i < _a.length; _i++) { var prop = _a[_i]; - var state_1 = _loop_1(prop); - if (typeof state_1 === "object") return state_1.value - if (state_1 === "continue") continue; + var state_2 = _loop_1(prop); + if (typeof state_2 === "object") return state_2.value; } } function checkGrammarJsxElement(node) { var seen = {}; for (var _i = 0, _a = node.attributes; _i < _a.length; _i++) { var attr = _a[_i]; - if (attr.kind === 243) { + if (attr.kind === 246) { continue; } var jsxAttr = attr; - var name_19 = jsxAttr.name; - if (!ts.hasProperty(seen, name_19.text)) { - seen[name_19.text] = true; + var name_21 = jsxAttr.name; + if (!ts.hasProperty(seen, name_21.text)) { + seen[name_21.text] = true; } else { - return grammarErrorOnNode(name_19, ts.Diagnostics.JSX_elements_cannot_have_multiple_attributes_with_the_same_name); + return grammarErrorOnNode(name_21, ts.Diagnostics.JSX_elements_cannot_have_multiple_attributes_with_the_same_name); } var initializer = jsxAttr.initializer; - if (initializer && initializer.kind === 244 && !initializer.expression) { + if (initializer && initializer.kind === 247 && !initializer.expression) { return grammarErrorOnNode(jsxAttr.initializer, ts.Diagnostics.JSX_attributes_must_only_be_assigned_a_non_empty_expression); } } @@ -24526,7 +25457,7 @@ var ts; if (checkGrammarStatementInAmbientContext(forInOrOfStatement)) { return true; } - if (forInOrOfStatement.initializer.kind === 216) { + if (forInOrOfStatement.initializer.kind === 218) { var variableList = forInOrOfStatement.initializer; if (!checkGrammarVariableDeclarationList(variableList)) { var declarations = variableList.declarations; @@ -24534,20 +25465,20 @@ var ts; return false; } if (declarations.length > 1) { - var diagnostic = forInOrOfStatement.kind === 204 + var diagnostic = forInOrOfStatement.kind === 206 ? ts.Diagnostics.Only_a_single_variable_declaration_is_allowed_in_a_for_in_statement : ts.Diagnostics.Only_a_single_variable_declaration_is_allowed_in_a_for_of_statement; return grammarErrorOnFirstToken(variableList.declarations[1], diagnostic); } var firstDeclaration = declarations[0]; if (firstDeclaration.initializer) { - var diagnostic = forInOrOfStatement.kind === 204 + var diagnostic = forInOrOfStatement.kind === 206 ? ts.Diagnostics.The_variable_declaration_of_a_for_in_statement_cannot_have_an_initializer : ts.Diagnostics.The_variable_declaration_of_a_for_of_statement_cannot_have_an_initializer; return grammarErrorOnNode(firstDeclaration.name, diagnostic); } if (firstDeclaration.type) { - var diagnostic = forInOrOfStatement.kind === 204 + var diagnostic = forInOrOfStatement.kind === 206 ? ts.Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_use_a_type_annotation : ts.Diagnostics.The_left_hand_side_of_a_for_of_statement_cannot_use_a_type_annotation; return grammarErrorOnNode(firstDeclaration, diagnostic); @@ -24570,10 +25501,10 @@ var ts; else if (accessor.typeParameters) { return grammarErrorOnNode(accessor.name, ts.Diagnostics.An_accessor_cannot_have_type_parameters); } - else if (kind === 147 && accessor.parameters.length) { + else if (kind === 148 && accessor.parameters.length) { return grammarErrorOnNode(accessor.name, ts.Diagnostics.A_get_accessor_cannot_have_parameters); } - else if (kind === 148) { + else if (kind === 149) { if (accessor.type) { return grammarErrorOnNode(accessor.name, ts.Diagnostics.A_set_accessor_cannot_have_a_return_type_annotation); } @@ -24608,7 +25539,7 @@ var ts; checkGrammarForGenerator(node)) { return true; } - if (node.parent.kind === 169) { + if (node.parent.kind === 170) { if (checkGrammarForInvalidQuestionMark(node, node.questionToken, ts.Diagnostics.A_class_member_cannot_be_declared_optional)) { return true; } @@ -24627,10 +25558,10 @@ var ts; return checkGrammarForNonSymbolComputedProperty(node.name, ts.Diagnostics.A_computed_property_name_in_a_method_overload_must_directly_refer_to_a_built_in_symbol); } } - else if (node.parent.kind === 219) { + else if (node.parent.kind === 221) { return checkGrammarForNonSymbolComputedProperty(node.name, ts.Diagnostics.A_computed_property_name_in_an_interface_must_directly_refer_to_a_built_in_symbol); } - else if (node.parent.kind === 157) { + else if (node.parent.kind === 158) { return checkGrammarForNonSymbolComputedProperty(node.name, ts.Diagnostics.A_computed_property_name_in_a_type_literal_must_directly_refer_to_a_built_in_symbol); } } @@ -24641,9 +25572,9 @@ var ts; return grammarErrorOnNode(node, ts.Diagnostics.Jump_target_cannot_cross_function_boundary); } switch (current.kind) { - case 211: + case 213: if (node.label && current.label.text === node.label.text) { - var isMisplacedContinueLabel = node.kind === 206 + var isMisplacedContinueLabel = node.kind === 208 && !ts.isIterationStatement(current.statement, true); if (isMisplacedContinueLabel) { return grammarErrorOnNode(node, ts.Diagnostics.A_continue_statement_can_only_jump_to_a_label_of_an_enclosing_iteration_statement); @@ -24651,8 +25582,8 @@ var ts; return false; } break; - case 210: - if (node.kind === 207 && !node.label) { + case 212: + if (node.kind === 209 && !node.label) { return false; } break; @@ -24665,13 +25596,13 @@ var ts; current = current.parent; } if (node.label) { - var message = node.kind === 207 + var message = node.kind === 209 ? ts.Diagnostics.A_break_statement_can_only_jump_to_a_label_of_an_enclosing_statement : ts.Diagnostics.A_continue_statement_can_only_jump_to_a_label_of_an_enclosing_iteration_statement; return grammarErrorOnNode(node, message); } else { - var message = node.kind === 207 + var message = node.kind === 209 ? ts.Diagnostics.A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement : ts.Diagnostics.A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement; return grammarErrorOnNode(node, message); @@ -24683,7 +25614,7 @@ var ts; if (node !== ts.lastOrUndefined(elements)) { return grammarErrorOnNode(node, ts.Diagnostics.A_rest_element_must_be_last_in_an_array_destructuring_pattern); } - if (node.name.kind === 166 || node.name.kind === 165) { + if (node.name.kind === 167 || node.name.kind === 166) { return grammarErrorOnNode(node.name, ts.Diagnostics.A_rest_element_cannot_contain_a_binding_pattern); } if (node.initializer) { @@ -24692,7 +25623,7 @@ var ts; } } function checkGrammarVariableDeclaration(node) { - if (node.parent.parent.kind !== 204 && node.parent.parent.kind !== 205) { + if (node.parent.parent.kind !== 206 && node.parent.parent.kind !== 207) { if (ts.isInAmbientContext(node)) { if (node.initializer) { var equalsTokenLength = "=".length; @@ -24721,7 +25652,7 @@ var ts; var elements = name.elements; for (var _i = 0, elements_2 = elements; _i < elements_2.length; _i++) { var element = elements_2[_i]; - if (element.kind !== 191) { + if (element.kind !== 192) { checkGrammarNameInLetOrConstDeclarations(element.name); } } @@ -24738,15 +25669,15 @@ var ts; } function allowLetAndConstDeclarations(parent) { switch (parent.kind) { - case 200: - case 201: case 202: - case 209: case 203: case 204: - case 205: - return false; case 211: + case 205: + case 206: + case 207: + return false; + case 213: return allowLetAndConstDeclarations(parent.parent); } return true; @@ -24802,7 +25733,7 @@ var ts; return true; } } - else if (node.parent.kind === 219) { + else if (node.parent.kind === 221) { if (checkGrammarForNonSymbolComputedProperty(node.name, ts.Diagnostics.A_computed_property_name_in_an_interface_must_directly_refer_to_a_built_in_symbol)) { return true; } @@ -24810,7 +25741,7 @@ var ts; return grammarErrorOnNode(node.initializer, ts.Diagnostics.An_interface_property_cannot_have_an_initializer); } } - else if (node.parent.kind === 157) { + else if (node.parent.kind === 158) { if (checkGrammarForNonSymbolComputedProperty(node.name, ts.Diagnostics.A_computed_property_name_in_a_type_literal_must_directly_refer_to_a_built_in_symbol)) { return true; } @@ -24823,12 +25754,12 @@ var ts; } } function checkGrammarTopLevelElementForRequiredDeclareModifier(node) { - if (node.kind === 219 || - node.kind === 220 || - node.kind === 226 || - node.kind === 225 || - node.kind === 232 || - node.kind === 231 || + if (node.kind === 221 || + node.kind === 222 || + node.kind === 229 || + node.kind === 228 || + node.kind === 235 || + node.kind === 234 || (node.flags & 2) || (node.flags & (1 | 512))) { return false; @@ -24838,7 +25769,7 @@ var ts; function checkGrammarTopLevelElementsForRequiredDeclareModifier(file) { for (var _i = 0, _a = file.statements; _i < _a.length; _i++) { var decl = _a[_i]; - if (ts.isDeclaration(decl) || decl.kind === 197) { + if (ts.isDeclaration(decl) || decl.kind === 199) { if (checkGrammarTopLevelElementForRequiredDeclareModifier(decl)) { return true; } @@ -24857,7 +25788,7 @@ var ts; if (!links.hasReportedStatementInAmbientContext && ts.isFunctionLike(node.parent)) { return getNodeLinks(node).hasReportedStatementInAmbientContext = grammarErrorOnFirstToken(node, ts.Diagnostics.An_implementation_cannot_be_declared_in_ambient_contexts); } - if (node.parent.kind === 196 || node.parent.kind === 223 || node.parent.kind === 252) { + if (node.parent.kind === 198 || node.parent.kind === 225 || node.parent.kind === 255) { var links_1 = getNodeLinks(node.parent); if (!links_1.hasReportedStatementInAmbientContext) { return links_1.hasReportedStatementInAmbientContext = grammarErrorOnFirstToken(node, ts.Diagnostics.Statements_are_not_allowed_in_ambient_contexts); @@ -25153,7 +26084,7 @@ var ts; function getDeclarationDiagnostics(host, resolver, targetSourceFile) { var declarationDiagnostics = ts.createDiagnosticCollection(); ts.forEachExpectedEmitFile(host, getDeclarationDiagnosticsFromFile, targetSourceFile); - return declarationDiagnostics.getDiagnostics(targetSourceFile.fileName); + return declarationDiagnostics.getDiagnostics(targetSourceFile ? targetSourceFile.fileName : undefined); function getDeclarationDiagnosticsFromFile(_a, sources, isBundledEmit) { var declarationFilePath = _a.declarationFilePath; emitDeclarations(host, resolver, declarationDiagnostics, declarationFilePath, sources, isBundledEmit); @@ -25221,7 +26152,7 @@ var ts; var oldWriter = writer; ts.forEach(moduleElementDeclarationEmitInfo, function (aliasEmitInfo) { if (aliasEmitInfo.isVisible && !aliasEmitInfo.asynchronousOutput) { - ts.Debug.assert(aliasEmitInfo.node.kind === 226); + ts.Debug.assert(aliasEmitInfo.node.kind === 229); createAndSetNewTextWriterWithSymbolWriter(); ts.Debug.assert(aliasEmitInfo.indent === 0 || (aliasEmitInfo.indent === 1 && isBundledEmit)); for (var i = 0; i < aliasEmitInfo.indent; i++) { @@ -25287,10 +26218,10 @@ var ts; var oldWriter = writer; ts.forEach(nodes, function (declaration) { var nodeToCheck; - if (declaration.kind === 215) { + if (declaration.kind === 217) { nodeToCheck = declaration.parent.parent; } - else if (declaration.kind === 229 || declaration.kind === 230 || declaration.kind === 227) { + else if (declaration.kind === 232 || declaration.kind === 233 || declaration.kind === 230) { ts.Debug.fail("We should be getting ImportDeclaration instead to write"); } else { @@ -25301,7 +26232,7 @@ var ts; moduleElementEmitInfo = ts.forEach(asynchronousSubModuleDeclarationEmitInfo, function (declEmitInfo) { return declEmitInfo.node === nodeToCheck ? declEmitInfo : undefined; }); } if (moduleElementEmitInfo) { - if (moduleElementEmitInfo.node.kind === 226) { + if (moduleElementEmitInfo.node.kind === 229) { moduleElementEmitInfo.isVisible = true; } else { @@ -25309,12 +26240,12 @@ var ts; for (var declarationIndent = moduleElementEmitInfo.indent; declarationIndent; declarationIndent--) { increaseIndent(); } - if (nodeToCheck.kind === 222) { + if (nodeToCheck.kind === 224) { ts.Debug.assert(asynchronousSubModuleDeclarationEmitInfo === undefined); asynchronousSubModuleDeclarationEmitInfo = []; } writeModuleElement(nodeToCheck); - if (nodeToCheck.kind === 222) { + if (nodeToCheck.kind === 224) { moduleElementEmitInfo.subModuleElementDeclarationEmitInfo = asynchronousSubModuleDeclarationEmitInfo; asynchronousSubModuleDeclarationEmitInfo = undefined; } @@ -25417,35 +26348,37 @@ var ts; case 120: case 132: case 103: - case 163: + case 134: + case 93: case 164: + case 165: return writeTextOfNode(currentText, type); - case 192: + case 193: return emitExpressionWithTypeArguments(type); - case 153: - return emitTypeReference(type); - case 156: - return emitTypeQuery(type); - case 158: - return emitArrayType(type); - case 159: - return emitTupleType(type); - case 160: - return emitUnionType(type); - case 161: - return emitIntersectionType(type); - case 162: - return emitParenType(type); case 154: - case 155: - return emitSignatureDeclarationWithJsDocComments(type); + return emitTypeReference(type); case 157: + return emitTypeQuery(type); + case 159: + return emitArrayType(type); + case 160: + return emitTupleType(type); + case 161: + return emitUnionType(type); + case 162: + return emitIntersectionType(type); + case 163: + return emitParenType(type); + case 155: + case 156: + return emitSignatureDeclarationWithJsDocComments(type); + case 158: return emitTypeLiteral(type); case 69: return emitEntityName(type); - case 137: + case 138: return emitEntityName(type); - case 152: + case 153: return emitTypePredicate(type); } function writeEntityName(entityName) { @@ -25453,21 +26386,21 @@ var ts; writeTextOfNode(currentText, entityName); } else { - var left = entityName.kind === 137 ? entityName.left : entityName.expression; - var right = entityName.kind === 137 ? entityName.right : entityName.name; + var left = entityName.kind === 138 ? entityName.left : entityName.expression; + var right = entityName.kind === 138 ? entityName.right : entityName.name; writeEntityName(left); write("."); writeTextOfNode(currentText, right); } } function emitEntityName(entityName) { - var visibilityResult = resolver.isEntityNameVisible(entityName, entityName.parent.kind === 225 ? entityName.parent : enclosingDeclaration); + var visibilityResult = resolver.isEntityNameVisible(entityName, entityName.parent.kind === 228 ? entityName.parent : enclosingDeclaration); handleSymbolAccessibilityError(visibilityResult); writeEntityName(entityName); } function emitExpressionWithTypeArguments(node) { if (ts.isSupportedExpressionWithTypeArguments(node)) { - ts.Debug.assert(node.expression.kind === 69 || node.expression.kind === 170); + ts.Debug.assert(node.expression.kind === 69 || node.expression.kind === 171); emitEntityName(node.expression); if (node.typeArguments) { write("<"); @@ -25541,9 +26474,9 @@ var ts; var count = 0; while (true) { count++; - var name_20 = baseName + "_" + count; - if (!ts.hasProperty(currentIdentifiers, name_20)) { - return name_20; + var name_22 = baseName + "_" + count; + if (!ts.hasProperty(currentIdentifiers, name_22)) { + return name_22; } } } @@ -25554,7 +26487,10 @@ var ts; } else { var tempVarName = getExportDefaultTempVariableName(); - write("declare var "); + if (!noDeclare) { + write("declare "); + } + write("var "); write(tempVarName); write(": "); writer.getSymbolAccessibilityDiagnostic = getDefaultExportAccessibilityDiagnostic; @@ -25584,10 +26520,10 @@ var ts; if (isModuleElementVisible) { writeModuleElement(node); } - else if (node.kind === 225 || - (node.parent.kind === 252 && isCurrentFileExternalModule)) { - var isVisible; - if (asynchronousSubModuleDeclarationEmitInfo && node.parent.kind !== 252) { + else if (node.kind === 228 || + (node.parent.kind === 255 && isCurrentFileExternalModule)) { + var isVisible = void 0; + if (asynchronousSubModuleDeclarationEmitInfo && node.parent.kind !== 255) { asynchronousSubModuleDeclarationEmitInfo.push({ node: node, outputPos: writer.getTextPos(), @@ -25596,7 +26532,7 @@ var ts; }); } else { - if (node.kind === 226) { + if (node.kind === 229) { var importDeclaration = node; if (importDeclaration.importClause) { isVisible = (importDeclaration.importClause.name && resolver.isDeclarationVisible(importDeclaration.importClause)) || @@ -25614,37 +26550,37 @@ var ts; } function writeModuleElement(node) { switch (node.kind) { - case 217: - return writeFunctionDeclaration(node); - case 197: - return writeVariableStatement(node); case 219: - return writeInterfaceDeclaration(node); - case 218: - return writeClassDeclaration(node); - case 220: - return writeTypeAliasDeclaration(node); + return writeFunctionDeclaration(node); + case 199: + return writeVariableStatement(node); case 221: - return writeEnumDeclaration(node); + return writeInterfaceDeclaration(node); + case 220: + return writeClassDeclaration(node); case 222: + return writeTypeAliasDeclaration(node); + case 223: + return writeEnumDeclaration(node); + case 224: return writeModuleDeclaration(node); - case 225: + case 228: return writeImportEqualsDeclaration(node); - case 226: + case 229: return writeImportDeclaration(node); default: ts.Debug.fail("Unknown symbol kind"); } } function emitModuleElementDeclarationFlags(node) { - if (node.parent.kind === 252) { + if (node.parent.kind === 255) { if (node.flags & 1) { write("export "); } if (node.flags & 512) { write("default "); } - else if (node.kind !== 219 && !noDeclare) { + else if (node.kind !== 221 && !noDeclare) { write("declare "); } } @@ -25694,7 +26630,7 @@ var ts; } function isVisibleNamedBinding(namedBindings) { if (namedBindings) { - if (namedBindings.kind === 228) { + if (namedBindings.kind === 231) { return resolver.isDeclarationVisible(namedBindings); } else { @@ -25717,7 +26653,7 @@ var ts; if (currentWriterPos !== writer.getTextPos()) { write(", "); } - if (node.importClause.namedBindings.kind === 228) { + if (node.importClause.namedBindings.kind === 231) { write("* as "); writeTextOfNode(currentText, node.importClause.namedBindings.name); } @@ -25734,13 +26670,13 @@ var ts; writer.writeLine(); } function emitExternalModuleSpecifier(parent) { - resultHasExternalModuleIndicator = resultHasExternalModuleIndicator || parent.kind !== 222; + resultHasExternalModuleIndicator = resultHasExternalModuleIndicator || parent.kind !== 224; var moduleSpecifier; - if (parent.kind === 225) { + if (parent.kind === 228) { var node = parent; moduleSpecifier = ts.getExternalModuleImportEqualsDeclarationExpression(node); } - else if (parent.kind === 222) { + else if (parent.kind === 224) { moduleSpecifier = parent.name; } else { @@ -25750,9 +26686,9 @@ var ts; if (moduleSpecifier.kind === 9 && isBundledEmit && (compilerOptions.out || compilerOptions.outFile)) { var moduleName = ts.getExternalModuleNameFromDeclaration(host, resolver, parent); if (moduleName) { - write("\""); + write('"'); write(moduleName); - write("\""); + write('"'); return; } } @@ -25808,7 +26744,7 @@ var ts; writeTextOfNode(currentText, node.name); } } - while (node.body.kind !== 223) { + while (node.body.kind !== 225) { node = node.body; write("."); writeTextOfNode(currentText, node.name); @@ -25873,7 +26809,7 @@ var ts; writeLine(); } function isPrivateMethodTypeParameter(node) { - return node.parent.kind === 145 && (node.parent.flags & 8); + return node.parent.kind === 146 && (node.parent.flags & 8); } function emitTypeParameters(typeParameters) { function emitTypeParameter(node) { @@ -25883,15 +26819,15 @@ var ts; writeTextOfNode(currentText, node.name); if (node.constraint && !isPrivateMethodTypeParameter(node)) { write(" extends "); - if (node.parent.kind === 154 || - node.parent.kind === 155 || - (node.parent.parent && node.parent.parent.kind === 157)) { - ts.Debug.assert(node.parent.kind === 145 || - node.parent.kind === 144 || - node.parent.kind === 154 || + if (node.parent.kind === 155 || + node.parent.kind === 156 || + (node.parent.parent && node.parent.parent.kind === 158)) { + ts.Debug.assert(node.parent.kind === 146 || + node.parent.kind === 145 || node.parent.kind === 155 || - node.parent.kind === 149 || - node.parent.kind === 150); + node.parent.kind === 156 || + node.parent.kind === 150 || + node.parent.kind === 151); emitType(node.constraint); } else { @@ -25901,31 +26837,31 @@ var ts; function getTypeParameterConstraintVisibilityError(symbolAccessibilityResult) { var diagnosticMessage; switch (node.parent.kind) { - case 218: + case 220: diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_exported_class_has_or_is_using_private_name_1; break; - case 219: + case 221: diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_exported_interface_has_or_is_using_private_name_1; break; - case 150: + case 151: diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_1; break; - case 149: + case 150: diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_name_1; break; + case 146: case 145: - case 144: if (node.parent.flags & 32) { diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1; } - else if (node.parent.parent.kind === 218) { + else if (node.parent.parent.kind === 220) { diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_public_method_from_exported_class_has_or_is_using_private_name_1; } else { diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1; } break; - case 217: + case 219: diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_exported_function_has_or_is_using_private_name_1; break; default: @@ -25956,9 +26892,13 @@ var ts; else if (!isImplementsList && node.expression.kind === 93) { write("null"); } + else { + writer.getSymbolAccessibilityDiagnostic = getHeritageClauseVisibilityError; + resolver.writeBaseConstructorTypeOfClass(enclosingDeclaration, enclosingDeclaration, 2, writer); + } function getHeritageClauseVisibilityError(symbolAccessibilityResult) { var diagnosticMessage; - if (node.parent.parent.kind === 218) { + if (node.parent.parent.kind === 220) { diagnosticMessage = isImplementsList ? ts.Diagnostics.Implements_clause_of_exported_class_0_has_or_is_using_private_name_1 : ts.Diagnostics.Extends_clause_of_exported_class_0_has_or_is_using_private_name_1; @@ -26038,16 +26978,16 @@ var ts; writeLine(); } function emitVariableDeclaration(node) { - if (node.kind !== 215 || resolver.isDeclarationVisible(node)) { + if (node.kind !== 217 || resolver.isDeclarationVisible(node)) { if (ts.isBindingPattern(node.name)) { emitBindingPattern(node.name); } else { writeTextOfNode(currentText, node.name); - if ((node.kind === 143 || node.kind === 142) && ts.hasQuestionToken(node)) { + if ((node.kind === 144 || node.kind === 143) && ts.hasQuestionToken(node)) { write("?"); } - if ((node.kind === 143 || node.kind === 142) && node.parent.kind === 157) { + if ((node.kind === 144 || node.kind === 143) && node.parent.kind === 158) { emitTypeOfVariableDeclarationFromTypeLiteral(node); } else if (!(node.flags & 8)) { @@ -26056,14 +26996,14 @@ var ts; } } function getVariableDeclarationTypeVisibilityDiagnosticMessage(symbolAccessibilityResult) { - if (node.kind === 215) { + if (node.kind === 217) { return symbolAccessibilityResult.errorModuleName ? symbolAccessibilityResult.accessibility === 2 ? ts.Diagnostics.Exported_variable_0_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : ts.Diagnostics.Exported_variable_0_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Exported_variable_0_has_or_is_using_private_name_1; } - else if (node.kind === 143 || node.kind === 142) { + else if (node.kind === 144 || node.kind === 143) { if (node.flags & 32) { return symbolAccessibilityResult.errorModuleName ? symbolAccessibilityResult.accessibility === 2 ? @@ -26071,7 +27011,7 @@ var ts; ts.Diagnostics.Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Public_static_property_0_of_exported_class_has_or_is_using_private_name_1; } - else if (node.parent.kind === 218) { + else if (node.parent.kind === 220) { return symbolAccessibilityResult.errorModuleName ? symbolAccessibilityResult.accessibility === 2 ? ts.Diagnostics.Public_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : @@ -26097,7 +27037,7 @@ var ts; var elements = []; for (var _i = 0, _a = bindingPattern.elements; _i < _a.length; _i++) { var element = _a[_i]; - if (element.kind !== 191) { + if (element.kind !== 192) { elements.push(element); } } @@ -26163,7 +27103,7 @@ var ts; accessorWithTypeAnnotation = node; var type = getTypeAnnotationFromAccessor(node); if (!type) { - var anotherAccessor = node.kind === 147 ? accessors.setAccessor : accessors.getAccessor; + var anotherAccessor = node.kind === 148 ? accessors.setAccessor : accessors.getAccessor; type = getTypeAnnotationFromAccessor(anotherAccessor); if (type) { accessorWithTypeAnnotation = anotherAccessor; @@ -26176,7 +27116,7 @@ var ts; } function getTypeAnnotationFromAccessor(accessor) { if (accessor) { - return accessor.kind === 147 + return accessor.kind === 148 ? accessor.type : accessor.parameters.length > 0 ? accessor.parameters[0].type @@ -26185,7 +27125,7 @@ var ts; } function getAccessorDeclarationTypeVisibilityError(symbolAccessibilityResult) { var diagnosticMessage; - if (accessorWithTypeAnnotation.kind === 148) { + if (accessorWithTypeAnnotation.kind === 149) { if (accessorWithTypeAnnotation.parent.flags & 32) { diagnosticMessage = symbolAccessibilityResult.errorModuleName ? ts.Diagnostics.Parameter_0_of_public_static_property_setter_from_exported_class_has_or_is_using_name_1_from_private_module_2 : @@ -26231,17 +27171,17 @@ var ts; } if (!resolver.isImplementationOfOverload(node)) { emitJsDocComments(node); - if (node.kind === 217) { + if (node.kind === 219) { emitModuleElementDeclarationFlags(node); } - else if (node.kind === 145 || node.kind === 146) { + else if (node.kind === 146 || node.kind === 147) { emitClassMemberDeclarationFlags(node.flags); } - if (node.kind === 217) { + if (node.kind === 219) { write("function "); writeTextOfNode(currentText, node.name); } - else if (node.kind === 146) { + else if (node.kind === 147) { write("constructor"); } else { @@ -26260,32 +27200,32 @@ var ts; function emitSignatureDeclaration(node) { var prevEnclosingDeclaration = enclosingDeclaration; enclosingDeclaration = node; - if (node.kind === 151) { + if (node.kind === 152) { emitClassMemberDeclarationFlags(node.flags); write("["); } else { - if (node.kind === 150 || node.kind === 155) { + if (node.kind === 151 || node.kind === 156) { write("new "); } emitTypeParameters(node.typeParameters); write("("); } emitCommaList(node.parameters, emitParameterDeclaration); - if (node.kind === 151) { + if (node.kind === 152) { write("]"); } else { write(")"); } - var isFunctionTypeOrConstructorType = node.kind === 154 || node.kind === 155; - if (isFunctionTypeOrConstructorType || node.parent.kind === 157) { + var isFunctionTypeOrConstructorType = node.kind === 155 || node.kind === 156; + if (isFunctionTypeOrConstructorType || node.parent.kind === 158) { if (node.type) { write(isFunctionTypeOrConstructorType ? " => " : ": "); emitType(node.type); } } - else if (node.kind !== 146 && !(node.flags & 8)) { + else if (node.kind !== 147 && !(node.flags & 8)) { writeReturnTypeAtSignature(node, getReturnTypeVisibilityError); } enclosingDeclaration = prevEnclosingDeclaration; @@ -26296,23 +27236,23 @@ var ts; function getReturnTypeVisibilityError(symbolAccessibilityResult) { var diagnosticMessage; switch (node.kind) { - case 150: + case 151: diagnosticMessage = symbolAccessibilityResult.errorModuleName ? ts.Diagnostics.Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1 : ts.Diagnostics.Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_0; break; - case 149: + case 150: diagnosticMessage = symbolAccessibilityResult.errorModuleName ? ts.Diagnostics.Return_type_of_call_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1 : ts.Diagnostics.Return_type_of_call_signature_from_exported_interface_has_or_is_using_private_name_0; break; - case 151: + case 152: diagnosticMessage = symbolAccessibilityResult.errorModuleName ? ts.Diagnostics.Return_type_of_index_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1 : ts.Diagnostics.Return_type_of_index_signature_from_exported_interface_has_or_is_using_private_name_0; break; + case 146: case 145: - case 144: if (node.flags & 32) { diagnosticMessage = symbolAccessibilityResult.errorModuleName ? symbolAccessibilityResult.accessibility === 2 ? @@ -26320,7 +27260,7 @@ var ts; ts.Diagnostics.Return_type_of_public_static_method_from_exported_class_has_or_is_using_name_0_from_private_module_1 : ts.Diagnostics.Return_type_of_public_static_method_from_exported_class_has_or_is_using_private_name_0; } - else if (node.parent.kind === 218) { + else if (node.parent.kind === 220) { diagnosticMessage = symbolAccessibilityResult.errorModuleName ? symbolAccessibilityResult.accessibility === 2 ? ts.Diagnostics.Return_type_of_public_method_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named : @@ -26333,7 +27273,7 @@ var ts; ts.Diagnostics.Return_type_of_method_from_exported_interface_has_or_is_using_private_name_0; } break; - case 217: + case 219: diagnosticMessage = symbolAccessibilityResult.errorModuleName ? symbolAccessibilityResult.accessibility === 2 ? ts.Diagnostics.Return_type_of_exported_function_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named : @@ -26365,9 +27305,9 @@ var ts; write("?"); } decreaseIndent(); - if (node.parent.kind === 154 || - node.parent.kind === 155 || - node.parent.parent.kind === 157) { + if (node.parent.kind === 155 || + node.parent.kind === 156 || + node.parent.parent.kind === 158) { emitTypeOfVariableDeclarationFromTypeLiteral(node); } else if (!(node.parent.flags & 8)) { @@ -26383,22 +27323,22 @@ var ts; } function getParameterDeclarationTypeVisibilityDiagnosticMessage(symbolAccessibilityResult) { switch (node.parent.kind) { - case 146: + case 147: return symbolAccessibilityResult.errorModuleName ? symbolAccessibilityResult.accessibility === 2 ? ts.Diagnostics.Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : ts.Diagnostics.Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Parameter_0_of_constructor_from_exported_class_has_or_is_using_private_name_1; - case 150: + case 151: return symbolAccessibilityResult.errorModuleName ? ts.Diagnostics.Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_1; - case 149: + case 150: return symbolAccessibilityResult.errorModuleName ? ts.Diagnostics.Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_name_1; + case 146: case 145: - case 144: if (node.parent.flags & 32) { return symbolAccessibilityResult.errorModuleName ? symbolAccessibilityResult.accessibility === 2 ? @@ -26406,7 +27346,7 @@ var ts; ts.Diagnostics.Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1; } - else if (node.parent.parent.kind === 218) { + else if (node.parent.parent.kind === 220) { return symbolAccessibilityResult.errorModuleName ? symbolAccessibilityResult.accessibility === 2 ? ts.Diagnostics.Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : @@ -26418,7 +27358,7 @@ var ts; ts.Diagnostics.Parameter_0_of_method_from_exported_interface_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1; } - case 217: + case 219: return symbolAccessibilityResult.errorModuleName ? symbolAccessibilityResult.accessibility === 2 ? ts.Diagnostics.Parameter_0_of_exported_function_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : @@ -26429,12 +27369,12 @@ var ts; } } function emitBindingPattern(bindingPattern) { - if (bindingPattern.kind === 165) { + if (bindingPattern.kind === 166) { write("{"); emitCommaList(bindingPattern.elements, emitBindingElement); write("}"); } - else if (bindingPattern.kind === 166) { + else if (bindingPattern.kind === 167) { write("["); var elements = bindingPattern.elements; emitCommaList(elements, emitBindingElement); @@ -26445,10 +27385,10 @@ var ts; } } function emitBindingElement(bindingElement) { - if (bindingElement.kind === 191) { + if (bindingElement.kind === 192) { write(" "); } - else if (bindingElement.kind === 167) { + else if (bindingElement.kind === 168) { if (bindingElement.propertyName) { writeTextOfNode(currentText, bindingElement.propertyName); write(": "); @@ -26470,39 +27410,39 @@ var ts; } function emitNode(node) { switch (node.kind) { - case 217: - case 222: - case 225: case 219: - case 218: - case 220: + case 224: + case 228: case 221: + case 220: + case 222: + case 223: return emitModuleElement(node, isModuleElementVisible(node)); - case 197: + case 199: return emitModuleElement(node, isVariableStatementVisible(node)); - case 226: + case 229: return emitModuleElement(node, !node.importClause); - case 232: + case 235: return emitExportDeclaration(node); + case 147: case 146: case 145: - case 144: return writeFunctionDeclaration(node); - case 150: - case 149: case 151: + case 150: + case 152: return emitSignatureDeclarationWithJsDocComments(node); - case 147: case 148: + case 149: return emitAccessorDeclaration(node); + case 144: case 143: - case 142: return emitPropertyDeclaration(node); - case 251: + case 254: return emitEnumMemberDeclaration(node); - case 231: + case 234: return emitExportAssignment(node); - case 252: + case 255: return emitSourceFile(node); } } @@ -26517,7 +27457,7 @@ var ts; } if (declFileName) { declFileName = ts.getRelativePathToDirectoryOrUrl(ts.getDirectoryPath(ts.normalizeSlashes(declarationFilePath)), declFileName, host.getCurrentDirectory(), host.getCanonicalFileName, false); - referencePathsOutput += "/// " + newLine; + referencePathsOutput += '/// ' + newLine; } return addedBundledEmitReference; function getDeclFileName(emitFileNames, sourceFiles, isBundledEmit) { @@ -26826,6 +27766,7 @@ var ts; }; function emitFiles(resolver, host, targetSourceFile) { var extendsHelper = "\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};"; + var assignHelper = "\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n};"; var decorateHelper = "\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};"; var metadataHelper = "\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};"; var paramHelper = "\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};"; @@ -26834,6 +27775,7 @@ var ts; var languageVersion = ts.getEmitScriptTarget(compilerOptions); var modulekind = ts.getEmitModuleKind(compilerOptions); var sourceMapDataList = compilerOptions.sourceMap || compilerOptions.inlineSourceMap ? [] : undefined; + var emittedFilesList = compilerOptions.listEmittedFiles ? [] : undefined; var emitterDiagnostics = ts.createDiagnosticCollection(); var emitSkipped = false; var newLine = host.getNewLine(); @@ -26842,6 +27784,7 @@ var ts; return { emitSkipped: emitSkipped, diagnostics: emitterDiagnostics.getDiagnostics(), + emittedFiles: emittedFilesList, sourceMaps: sourceMapDataList }; function isUniqueLocalName(name, container) { @@ -26905,6 +27848,7 @@ var ts; var decoratedClassAliases; var convertedLoopState; var extendsEmitted; + var assignEmitted; var decorateEmitted; var paramEmitted; var awaiterEmitted; @@ -26952,7 +27896,7 @@ var ts; if (sourceMappingURL) { write("//# sourceMappingURL=" + sourceMappingURL); } - writeEmittedFiles(writer.getText(), jsFilePath, sourceMapFilePath, compilerOptions.emitBOM); + writeEmittedFiles(writer.getText(), jsFilePath, sourceMapFilePath, compilerOptions.emitBOM, sourceFiles); sourceMap.reset(); writer.reset(); currentSourceFile = undefined; @@ -26969,6 +27913,7 @@ var ts; decorateEmitted = false; paramEmitted = false; awaiterEmitted = false; + assignEmitted = false; tempFlags = 0; tempVariables = undefined; tempParameters = undefined; @@ -27002,19 +27947,19 @@ var ts; } function makeTempVariableName(flags) { if (flags && !(tempFlags & flags)) { - var name_21 = flags === 268435456 ? "_i" : "_n"; - if (isUniqueName(name_21)) { + var name_23 = flags === 268435456 ? "_i" : "_n"; + if (isUniqueName(name_23)) { tempFlags |= flags; - return name_21; + return name_23; } } while (true) { var count = tempFlags & 268435455; tempFlags++; if (count !== 8 && count !== 13) { - var name_22 = count < 26 ? "_" + String.fromCharCode(97 + count) : "_" + (count - 26); - if (isUniqueName(name_22)) { - return name_22; + var name_24 = count < 26 ? "_" + String.fromCharCode(97 + count) : "_" + (count - 26); + if (isUniqueName(name_24)) { + return name_24; } } } @@ -27052,17 +27997,17 @@ var ts; switch (node.kind) { case 69: return makeUniqueName(node.text); - case 222: - case 221: + case 224: + case 223: return generateNameForModuleOrEnum(node); - case 226: - case 232: + case 229: + case 235: return generateNameForImportOrExportDeclaration(node); - case 217: - case 218: - case 231: + case 219: + case 220: + case 234: return generateNameForExportDefault(); - case 190: + case 191: return generateNameForClassExpression(); } } @@ -27070,14 +28015,14 @@ var ts; var id = ts.getNodeId(node); return nodeToGeneratedName[id] || (nodeToGeneratedName[id] = ts.unescapeIdentifier(generateNameForNode(node))); } - function writeEmittedFiles(emitOutput, jsFilePath, sourceMapFilePath, writeByteOrderMark) { + function writeEmittedFiles(emitOutput, jsFilePath, sourceMapFilePath, writeByteOrderMark, sourceFiles) { if (compilerOptions.sourceMap && !compilerOptions.inlineSourceMap) { - ts.writeFile(host, emitterDiagnostics, sourceMapFilePath, sourceMap.getText(), false); + ts.writeFile(host, emitterDiagnostics, sourceMapFilePath, sourceMap.getText(), false, sourceFiles); } if (sourceMapDataList) { sourceMapDataList.push(sourceMap.getSourceMapData()); } - ts.writeFile(host, emitterDiagnostics, jsFilePath, emitOutput, writeByteOrderMark); + ts.writeFile(host, emitterDiagnostics, jsFilePath, emitOutput, writeByteOrderMark, sourceFiles); } function createTempVariable(flags) { var result = ts.createSynthesizedNode(69); @@ -27242,14 +28187,14 @@ var ts; } function getLiteralText(node) { if (languageVersion < 2 && (ts.isTemplateLiteralKind(node.kind) || node.hasExtendedUnicodeEscape)) { - return getQuotedEscapedLiteralText("\"", node.text, "\""); + return getQuotedEscapedLiteralText('"', node.text, '"'); } if (node.parent) { return ts.getTextOfNodeFromSourceText(currentText, node); } switch (node.kind) { case 9: - return getQuotedEscapedLiteralText("\"", node.text, "\""); + return getQuotedEscapedLiteralText('"', node.text, '"'); case 11: return getQuotedEscapedLiteralText("`", node.text, "`"); case 12: @@ -27302,10 +28247,10 @@ var ts; emitParenthesizedIf(node.tag, needsParenthesisForPropertyAccessOrInvocation(node.tag)); write("("); emit(tempVariable); - if (node.template.kind === 187) { + if (node.template.kind === 188) { ts.forEach(node.template.templateSpans, function (templateSpan) { write(", "); - var needsParens = templateSpan.expression.kind === 185 + var needsParens = templateSpan.expression.kind === 186 && templateSpan.expression.operatorToken.kind === 24; emitParenthesizedIf(templateSpan.expression, needsParens); }); @@ -27329,7 +28274,7 @@ var ts; } for (var i = 0, n = node.templateSpans.length; i < n; i++) { var templateSpan = node.templateSpans[i]; - var needsParens = templateSpan.expression.kind !== 176 + var needsParens = templateSpan.expression.kind !== 177 && comparePrecedenceToBinaryPlus(templateSpan.expression) !== 1; if (i > 0 || headEmitted) { write(" + "); @@ -27349,11 +28294,11 @@ var ts; } function templateNeedsParens(template, parent) { switch (parent.kind) { - case 172: case 173: - return parent.expression === template; case 174: - case 176: + return parent.expression === template; + case 175: + case 177: return false; default: return comparePrecedenceToBinaryPlus(parent) !== -1; @@ -27361,7 +28306,7 @@ var ts; } function comparePrecedenceToBinaryPlus(expression) { switch (expression.kind) { - case 185: + case 186: switch (expression.operatorToken.kind) { case 37: case 39: @@ -27373,8 +28318,8 @@ var ts; default: return -1; } - case 188: - case 186: + case 189: + case 187: return -1; default: return 1; @@ -27388,9 +28333,9 @@ var ts; function jsxEmitReact(node) { function emitTagName(name) { if (name.kind === 69 && ts.isIntrinsicJsxName(name.text)) { - write("\""); + write('"'); emit(name); - write("\""); + write('"'); } else { emit(name); @@ -27401,9 +28346,9 @@ var ts; emit(name); } else { - write("\""); + write('"'); emit(name); - write("\""); + write('"'); } } function emitJsxAttribute(node) { @@ -27430,12 +28375,11 @@ var ts; } else { var attrs = openingNode.attributes; - if (ts.forEach(attrs, function (attr) { return attr.kind === 243; })) { - emitExpressionIdentifier(syntheticReactRef); - write(".__spread("); + if (ts.forEach(attrs, function (attr) { return attr.kind === 246; })) { + write("__assign("); var haveOpenedObjectLiteral = false; for (var i = 0; i < attrs.length; i++) { - if (attrs[i].kind === 243) { + if (attrs[i].kind === 246) { if (i === 0) { write("{}, "); } @@ -27449,7 +28393,7 @@ var ts; emit(attrs[i].expression); } else { - ts.Debug.assert(attrs[i].kind === 242); + ts.Debug.assert(attrs[i].kind === 245); if (haveOpenedObjectLiteral) { write(", "); } @@ -27479,7 +28423,7 @@ var ts; } } if (children) { - var firstChild; + var firstChild = void 0; var multipleEmittableChildren = false; for (var i = 0, n = children.length; i < n; i++) { var jsxChild = children[i]; @@ -27505,7 +28449,7 @@ var ts; decreaseIndent(); } else if (firstChild) { - if (firstChild.kind !== 237 && firstChild.kind !== 238) { + if (firstChild.kind !== 240 && firstChild.kind !== 241) { emit(firstChild); } else { @@ -27520,11 +28464,11 @@ var ts; write(")"); emitTrailingComments(openingNode); } - if (node.kind === 237) { + if (node.kind === 240) { emitJsxElement(node.openingElement, node.children); } else { - ts.Debug.assert(node.kind === 238); + ts.Debug.assert(node.kind === 241); emitJsxElement(node); } } @@ -27546,11 +28490,11 @@ var ts; if (i > 0) { write(" "); } - if (attribs[i].kind === 243) { + if (attribs[i].kind === 246) { emitJsxSpreadAttribute(attribs[i]); } else { - ts.Debug.assert(attribs[i].kind === 242); + ts.Debug.assert(attribs[i].kind === 245); emitJsxAttribute(attribs[i]); } } @@ -27558,11 +28502,11 @@ var ts; function emitJsxOpeningOrSelfClosingElement(node) { write("<"); emit(node.tagName); - if (node.attributes.length > 0 || (node.kind === 238)) { + if (node.attributes.length > 0 || (node.kind === 241)) { write(" "); } emitAttributes(node.attributes); - if (node.kind === 238) { + if (node.kind === 241) { write("/>"); } else { @@ -27581,20 +28525,20 @@ var ts; } emitJsxClosingElement(node.closingElement); } - if (node.kind === 237) { + if (node.kind === 240) { emitJsxElement(node); } else { - ts.Debug.assert(node.kind === 238); + ts.Debug.assert(node.kind === 241); emitJsxOpeningOrSelfClosingElement(node); } } function emitExpressionForPropertyName(node) { - ts.Debug.assert(node.kind !== 167); + ts.Debug.assert(node.kind !== 168); if (node.kind === 9) { emitLiteral(node); } - else if (node.kind === 138) { + else if (node.kind === 139) { if (ts.nodeIsDecorated(node.parent)) { if (!computedPropertyNamesToGeneratedNames) { computedPropertyNamesToGeneratedNames = []; @@ -27612,75 +28556,76 @@ var ts; emit(node.expression); } else { - write("\""); + write('"'); if (node.kind === 8) { write(node.text); } else { writeTextOfNode(currentText, node); } - write("\""); + write('"'); } } function isExpressionIdentifier(node) { var parent = node.parent; switch (parent.kind) { - case 168: - case 193: - case 185: - case 172: - case 245: - case 138: - case 186: - case 141: - case 179: - case 201: - case 171: - case 231: - case 199: - case 192: - case 203: - case 204: - case 205: - case 200: - case 241: - case 238: - case 239: - case 243: - case 244: - case 173: - case 176: - case 184: - case 183: - case 208: - case 250: - case 189: - case 210: - case 174: + case 169: case 194: + case 186: + case 173: + case 248: + case 139: + case 187: + case 142: + case 180: + case 203: + case 172: + case 234: + case 201: + case 193: + case 205: + case 206: + case 207: + case 202: + case 244: + case 241: + case 242: + case 246: + case 247: + case 174: + case 195: + case 177: + case 185: + case 184: + case 210: + case 253: + case 190: case 212: case 175: - case 180: + case 196: + case 214: + case 176: case 181: - case 202: - case 209: - case 188: + case 182: + case 204: + case 211: + case 189: return true; - case 167: - case 251: - case 140: - case 249: - case 143: - case 215: + case 168: + case 254: + case 141: + case 252: + case 144: + case 217: return parent.initializer === node; - case 170: + case 171: return parent.expression === node; + case 179: case 178: - case 177: return parent.body === node; - case 225: + case 228: return parent.moduleReference === node; - case 137: + case 138: return parent.left === node; } return false; @@ -27688,7 +28633,7 @@ var ts; function emitExpressionIdentifier(node) { var container = resolver.getReferencedExportContainer(node); if (container) { - if (container.kind === 252) { + if (container.kind === 255) { if (modulekind !== ts.ModuleKind.ES6 && modulekind !== ts.ModuleKind.System) { write("exports."); } @@ -27702,17 +28647,17 @@ var ts; if (modulekind !== ts.ModuleKind.ES6) { var declaration = resolver.getReferencedImportDeclaration(node); if (declaration) { - if (declaration.kind === 227) { + if (declaration.kind === 230) { write(getGeneratedNameForNode(declaration.parent)); - write(languageVersion === 0 ? "[\"default\"]" : ".default"); + write(languageVersion === 0 ? '["default"]' : ".default"); return; } - else if (declaration.kind === 230) { + else if (declaration.kind === 233) { write(getGeneratedNameForNode(declaration.parent.parent.parent)); - var name_23 = declaration.propertyName || declaration.name; - var identifier = ts.getTextOfNodeFromSourceText(currentText, name_23); + var name_25 = declaration.propertyName || declaration.name; + var identifier = ts.getTextOfNodeFromSourceText(currentText, name_25); if (languageVersion === 0 && identifier === "default") { - write("[\"default\"]"); + write('["default"]'); } else { write("."); @@ -27749,13 +28694,13 @@ var ts; } function isNameOfNestedBlockScopedRedeclarationOrCapturedBinding(node) { if (languageVersion < 2) { - var parent_8 = node.parent; - switch (parent_8.kind) { - case 167: - case 218: - case 221: - case 215: - return parent_8.name === node && resolver.isDeclarationWithCollidingName(parent_8); + var parent_10 = node.parent; + switch (parent_10.kind) { + case 168: + case 220: + case 223: + case 217: + return parent_10.name === node && resolver.isDeclarationWithCollidingName(parent_10); } } return false; @@ -27763,8 +28708,8 @@ var ts; function emitIdentifier(node) { if (convertedLoopState) { if (node.text == "arguments" && resolver.isArgumentsLocalBinding(node)) { - var name_24 = convertedLoopState.argumentsName || (convertedLoopState.argumentsName = makeUniqueName("arguments")); - write(name_24); + var name_26 = convertedLoopState.argumentsName || (convertedLoopState.argumentsName = makeUniqueName("arguments")); + write(name_26); return; } } @@ -27864,10 +28809,10 @@ var ts; } } function needsParenthesisForAwaitExpressionAsYield(node) { - if (node.parent.kind === 185 && !ts.isAssignmentOperator(node.parent.operatorToken.kind)) { + if (node.parent.kind === 186 && !ts.isAssignmentOperator(node.parent.operatorToken.kind)) { return true; } - else if (node.parent.kind === 186 && node.parent.condition === node) { + else if (node.parent.kind === 187 && node.parent.condition === node) { return true; } return false; @@ -27875,11 +28820,11 @@ var ts; function needsParenthesisForPropertyAccessOrInvocation(node) { switch (node.kind) { case 69: - case 168: - case 170: + case 169: case 171: case 172: - case 176: + case 173: + case 177: return false; } return true; @@ -27896,17 +28841,17 @@ var ts; write(", "); } var e = elements[pos]; - if (e.kind === 189) { + if (e.kind === 190) { e = e.expression; emitParenthesizedIf(e, group === 0 && needsParenthesisForPropertyAccessOrInvocation(e)); pos++; - if (pos === length && group === 0 && needsUniqueCopy && e.kind !== 168) { + if (pos === length && group === 0 && needsUniqueCopy && e.kind !== 169) { write(".slice()"); } } else { var i = pos; - while (i < length && elements[i].kind !== 189) { + while (i < length && elements[i].kind !== 190) { i++; } write("["); @@ -27929,7 +28874,7 @@ var ts; } } function isSpreadElementExpression(node) { - return node.kind === 189; + return node.kind === 190; } function emitArrayLiteral(node) { var elements = node.elements; @@ -27990,7 +28935,7 @@ var ts; writeComma(); var property = properties[i]; emitStart(property); - if (property.kind === 147 || property.kind === 148) { + if (property.kind === 148 || property.kind === 149) { var accessors = ts.getAllAccessorDeclarations(node.properties, property); if (property !== accessors.firstAccessor) { continue; @@ -28041,13 +28986,13 @@ var ts; emitMemberAccessForPropertyName(property.name); emitEnd(property.name); write(" = "); - if (property.kind === 249) { + if (property.kind === 252) { emit(property.initializer); } - else if (property.kind === 250) { + else if (property.kind === 253) { emitExpressionIdentifier(property.name); } - else if (property.kind === 145) { + else if (property.kind === 146) { emitFunctionDeclaration(property); } else { @@ -28079,7 +29024,7 @@ var ts; var numProperties = properties.length; var numInitialNonComputedProperties = numProperties; for (var i = 0, n = properties.length; i < n; i++) { - if (properties[i].name.kind === 138) { + if (properties[i].name.kind === 139) { numInitialNonComputedProperties = i; break; } @@ -28093,35 +29038,37 @@ var ts; emitObjectLiteralBody(node, properties.length); } function createBinaryExpression(left, operator, right, startsOnNewLine) { - var result = ts.createSynthesizedNode(185, startsOnNewLine); + var result = ts.createSynthesizedNode(186, startsOnNewLine); result.operatorToken = ts.createSynthesizedNode(operator); result.left = left; result.right = right; return result; } function createPropertyAccessExpression(expression, name) { - var result = ts.createSynthesizedNode(170); + var result = ts.createSynthesizedNode(171); result.expression = parenthesizeForAccess(expression); result.dotToken = ts.createSynthesizedNode(21); result.name = name; return result; } function createElementAccessExpression(expression, argumentExpression) { - var result = ts.createSynthesizedNode(171); + var result = ts.createSynthesizedNode(172); result.expression = parenthesizeForAccess(expression); result.argumentExpression = argumentExpression; return result; } function parenthesizeForAccess(expr) { - while (expr.kind === 175 || expr.kind === 193) { + while (expr.kind === 176 || + expr.kind === 194 || + expr.kind === 195) { expr = expr.expression; } if (ts.isLeftHandSideExpression(expr) && - expr.kind !== 173 && + expr.kind !== 174 && expr.kind !== 8) { return expr; } - var node = ts.createSynthesizedNode(176); + var node = ts.createSynthesizedNode(177); node.expression = expr; return node; } @@ -28148,11 +29095,15 @@ var ts; } function isNamespaceExportReference(node) { var container = resolver.getReferencedExportContainer(node); - return container && container.kind !== 252; + return container && container.kind !== 255; + } + function isImportedReference(node) { + var declaration = resolver.getReferencedImportDeclaration(node); + return declaration && (declaration.kind === 230 || declaration.kind === 233); } function emitShorthandPropertyAssignment(node) { writeTextOfNode(currentText, node.name); - if (modulekind !== ts.ModuleKind.ES6 || isNamespaceExportReference(node.name)) { + if (languageVersion < 2 || (modulekind !== ts.ModuleKind.ES6 && isImportedReference(node.name)) || isNamespaceExportReference(node.name)) { write(": "); emit(node.name); } @@ -28166,7 +29117,7 @@ var ts; if (constantValue !== undefined) { write(constantValue.toString()); if (!compilerOptions.removeComments) { - var propertyName = node.kind === 170 ? ts.declarationNameToString(node.name) : ts.getTextOfNode(node.argumentExpression); + var propertyName = node.kind === 171 ? ts.declarationNameToString(node.name) : ts.getTextOfNode(node.argumentExpression); write(" /* " + propertyName + " */"); } return true; @@ -28177,7 +29128,7 @@ var ts; if (compilerOptions.isolatedModules) { return undefined; } - return node.kind === 170 || node.kind === 171 + return node.kind === 171 || node.kind === 172 ? resolver.getConstantValue(node) : undefined; } @@ -28203,9 +29154,9 @@ var ts; if (languageVersion === 2 && node.expression.kind === 95 && isInAsyncMethodWithSuperInES6(node)) { - var name_25 = ts.createSynthesizedNode(9); - name_25.text = node.name.text; - emitSuperAccessInAsyncMethod(node.expression, name_25); + var name_27 = ts.createSynthesizedNode(9); + name_27.text = node.name.text; + emitSuperAccessInAsyncMethod(node.expression, name_27); return; } emit(node.expression); @@ -28265,7 +29216,7 @@ var ts; } emitExpressionIdentifier(node); break; - case 137: + case 138: emitQualifiedNameAsExpression(node, useFallback); break; default: @@ -28289,10 +29240,13 @@ var ts; write("]"); } function hasSpreadElement(elements) { - return ts.forEach(elements, function (e) { return e.kind === 189; }); + return ts.forEach(elements, function (e) { return e.kind === 190; }); } function skipParentheses(node) { - while (node.kind === 176 || node.kind === 175 || node.kind === 193) { + while (node.kind === 177 || + node.kind === 176 || + node.kind === 194 || + node.kind === 195) { node = node.expression; } return node; @@ -28313,12 +29267,12 @@ var ts; function emitCallWithSpread(node) { var target; var expr = skipParentheses(node.expression); - if (expr.kind === 170) { + if (expr.kind === 171) { target = emitCallTarget(expr.expression); write("."); emit(expr.name); } - else if (expr.kind === 171) { + else if (expr.kind === 172) { target = emitCallTarget(expr.expression); write("["); emit(expr.argumentExpression); @@ -28429,21 +29383,25 @@ var ts; } } function emitParenExpression(node) { - if (!ts.nodeIsSynthesized(node) && node.parent.kind !== 178) { - if (node.expression.kind === 175 || node.expression.kind === 193) { + if (!ts.nodeIsSynthesized(node) && node.parent.kind !== 179) { + if (node.expression.kind === 176 || + node.expression.kind === 194 || + node.expression.kind === 195) { var operand = node.expression.expression; - while (operand.kind === 175 || operand.kind === 193) { + while (operand.kind === 176 || + operand.kind === 194 || + operand.kind === 195) { operand = operand.expression; } - if (operand.kind !== 183 && + if (operand.kind !== 184 && + operand.kind !== 182 && operand.kind !== 181 && operand.kind !== 180 && - operand.kind !== 179 && - operand.kind !== 184 && - operand.kind !== 173 && - !(operand.kind === 172 && node.parent.kind === 173) && - !(operand.kind === 177 && node.parent.kind === 172) && - !(operand.kind === 8 && node.parent.kind === 170)) { + operand.kind !== 185 && + operand.kind !== 174 && + !(operand.kind === 173 && node.parent.kind === 174) && + !(operand.kind === 178 && node.parent.kind === 173) && + !(operand.kind === 8 && node.parent.kind === 171)) { emit(operand); return; } @@ -28472,7 +29430,7 @@ var ts; if (!isCurrentFileSystemExternalModule() || node.kind !== 69 || ts.nodeIsSynthesized(node)) { return false; } - var isVariableDeclarationOrBindingElement = node.parent && (node.parent.kind === 215 || node.parent.kind === 167); + var isVariableDeclarationOrBindingElement = node.parent && (node.parent.kind === 217 || node.parent.kind === 168); var targetDeclaration = isVariableDeclarationOrBindingElement ? node.parent : resolver.getReferencedValueDeclaration(node); @@ -28487,7 +29445,7 @@ var ts; write("\", "); } write(ts.tokenToString(node.operator)); - if (node.operand.kind === 183) { + if (node.operand.kind === 184) { var operand = node.operand; if (node.operator === 35 && (operand.operator === 35 || operand.operator === 41)) { write(" "); @@ -28530,7 +29488,7 @@ var ts; } var current = ts.getRootDeclaration(node).parent; while (current) { - if (current.kind === 252) { + if (current.kind === 255) { return !isExported || ((ts.getCombinedNodeFlags(node) & 1) !== 0); } else if (ts.isDeclaration(current)) { @@ -28544,12 +29502,12 @@ var ts; function emitExponentiationOperator(node) { var leftHandSideExpression = node.left; if (node.operatorToken.kind === 60) { - var synthesizedLHS; + var synthesizedLHS = void 0; var shouldEmitParentheses = false; if (ts.isElementAccessExpression(leftHandSideExpression)) { shouldEmitParentheses = true; write("("); - synthesizedLHS = ts.createSynthesizedNode(171, false); + synthesizedLHS = ts.createSynthesizedNode(172, false); var identifier = emitTempVariableAssignment(leftHandSideExpression.expression, false, false); synthesizedLHS.expression = identifier; if (leftHandSideExpression.argumentExpression.kind !== 8 && @@ -28566,7 +29524,7 @@ var ts; else if (ts.isPropertyAccessExpression(leftHandSideExpression)) { shouldEmitParentheses = true; write("("); - synthesizedLHS = ts.createSynthesizedNode(170, false); + synthesizedLHS = ts.createSynthesizedNode(171, false); var identifier = emitTempVariableAssignment(leftHandSideExpression.expression, false, false); synthesizedLHS.expression = identifier; synthesizedLHS.dotToken = leftHandSideExpression.dotToken; @@ -28594,8 +29552,8 @@ var ts; } function emitBinaryExpression(node) { if (languageVersion < 2 && node.operatorToken.kind === 56 && - (node.left.kind === 169 || node.left.kind === 168)) { - emitDestructuring(node, node.parent.kind === 199); + (node.left.kind === 170 || node.left.kind === 169)) { + emitDestructuring(node, node.parent.kind === 201); } else { var exportChanged = node.operatorToken.kind >= 56 && @@ -28647,7 +29605,7 @@ var ts; } } function isSingleLineEmptyBlock(node) { - if (node && node.kind === 196) { + if (node && node.kind === 198) { var block = node; return block.statements.length === 0 && nodeEndIsOnSameLineAsNodeStart(block, block); } @@ -28661,12 +29619,12 @@ var ts; } emitToken(15, node.pos); increaseIndent(); - if (node.kind === 223) { - ts.Debug.assert(node.parent.kind === 222); + if (node.kind === 225) { + ts.Debug.assert(node.parent.kind === 224); emitCaptureThisForNodeIfNecessary(node.parent); } emitLines(node.statements); - if (node.kind === 223) { + if (node.kind === 225) { emitTempDeclarations(true); } decreaseIndent(); @@ -28674,7 +29632,7 @@ var ts; emitToken(16, node.statements.end); } function emitEmbeddedStatement(node) { - if (node.kind === 196) { + if (node.kind === 198) { write(" "); emit(node); } @@ -28686,7 +29644,7 @@ var ts; } } function emitExpressionStatement(node) { - emitParenthesizedIf(node.expression, node.expression.kind === 178); + emitParenthesizedIf(node.expression, node.expression.kind === 179); write(";"); } function emitIfStatement(node) { @@ -28699,7 +29657,7 @@ var ts; if (node.elseStatement) { writeLine(); emitToken(80, node.thenStatement.end); - if (node.elseStatement.kind === 200) { + if (node.elseStatement.kind === 202) { write(" "); emit(node.elseStatement); } @@ -28719,7 +29677,7 @@ var ts; else { emitNormalLoopBody(node, true); } - if (node.statement.kind === 196) { + if (node.statement.kind === 198) { write(" "); } else { @@ -28799,7 +29757,7 @@ var ts; } else { var loop = convertLoopBody(node); - if (node.parent.kind === 211) { + if (node.parent.kind === 213) { emitLabelAndColon(node.parent); } loopEmitter(node, loop); @@ -28809,11 +29767,11 @@ var ts; var functionName = makeUniqueName("_loop"); var loopInitializer; switch (node.kind) { - case 203: - case 204: case 205: + case 206: + case 207: var initializer = node.initializer; - if (initializer && initializer.kind === 216) { + if (initializer && initializer.kind === 218) { loopInitializer = node.initializer; } break; @@ -28827,7 +29785,7 @@ var ts; processVariableDeclaration(varDeclaration.name); } } - var bodyIsBlock = node.statement.kind === 196; + var bodyIsBlock = node.statement.kind === 198; var paramList = loopParameters ? loopParameters.join(", ") : ""; writeLine(); write("var " + functionName + " = function(" + paramList + ")"); @@ -28894,7 +29852,7 @@ var ts; } else { write("var "); - var seen; + var seen = void 0; for (var _c = 0, _d = convertedLoopState.hoistedLocalVariables; _c < _d.length; _c++) { var id = _d[_c]; if (!seen) { @@ -28943,7 +29901,7 @@ var ts; if (emitAsEmbeddedStatement) { emitEmbeddedStatement(node.statement); } - else if (node.statement.kind === 196) { + else if (node.statement.kind === 198) { emitLines(node.statement.statements); } else { @@ -28982,7 +29940,7 @@ var ts; writeLine(); increaseIndent(); } - var isSimpleLoop = !loop.state.nonLocalJumps && + var isSimpleLoop = !(loop.state.nonLocalJumps & ~4) && !loop.state.labeledNonLocalBreaks && !loop.state.labeledNonLocalContinues; var loopResult = makeUniqueName("state"); @@ -29009,10 +29967,6 @@ var ts; write("if (" + loopResult + " === \"break\") break;"); writeLine(); } - if (loop.state.nonLocalJumps & 4) { - write("if (" + loopResult + " === \"continue\") continue;"); - writeLine(); - } emitDispatchTableForLabeledJumps(loopResult, loop.state, convertedLoopState); } if (emitAsBlock) { @@ -29063,7 +30017,7 @@ var ts; var endPos = emitToken(86, node.pos); write(" "); endPos = emitToken(17, endPos); - if (node.initializer && node.initializer.kind === 216) { + if (node.initializer && node.initializer.kind === 218) { var variableDeclarationList = node.initializer; var startIsEmitted = tryEmitStartOfVariableDeclarationList(variableDeclarationList); if (startIsEmitted) { @@ -29089,7 +30043,7 @@ var ts; } } function emitForInOrForOfStatement(node) { - if (languageVersion < 2 && node.kind === 205) { + if (languageVersion < 2 && node.kind === 207) { emitLoop(node, emitDownLevelForOfStatementWorker); } else { @@ -29100,7 +30054,7 @@ var ts; var endPos = emitToken(86, node.pos); write(" "); endPos = emitToken(17, endPos); - if (node.initializer.kind === 216) { + if (node.initializer.kind === 218) { var variableDeclarationList = node.initializer; if (variableDeclarationList.declarations.length >= 1) { tryEmitStartOfVariableDeclarationList(variableDeclarationList); @@ -29110,7 +30064,7 @@ var ts; else { emit(node.initializer); } - if (node.kind === 204) { + if (node.kind === 206) { write(" in "); } else { @@ -29163,7 +30117,7 @@ var ts; increaseIndent(); var rhsIterationValue = createElementAccessExpression(rhsReference, counter); emitStart(node.initializer); - if (node.initializer.kind === 216) { + if (node.initializer.kind === 218) { write("var "); var variableDeclarationList = node.initializer; if (variableDeclarationList.declarations.length > 0) { @@ -29185,7 +30139,7 @@ var ts; } else { var assignmentExpression = createBinaryExpression(node.initializer, 56, rhsIterationValue, false); - if (node.initializer.kind === 168 || node.initializer.kind === 169) { + if (node.initializer.kind === 169 || node.initializer.kind === 170) { emitDestructuring(assignmentExpression, true, undefined); } else { @@ -29207,14 +30161,14 @@ var ts; } function emitBreakOrContinueStatement(node) { if (convertedLoopState) { - var jump = node.kind === 207 ? 2 : 4; + var jump = node.kind === 209 ? 2 : 4; var canUseBreakOrContinue = (node.label && convertedLoopState.labels && convertedLoopState.labels[node.label.text]) || (!node.label && (convertedLoopState.allowedNonLabeledJumps & jump)); if (!canUseBreakOrContinue) { write("return "); copyLoopOutParameters(convertedLoopState, 1, false); if (!node.label) { - if (node.kind === 207) { + if (node.kind === 209) { convertedLoopState.nonLocalJumps |= 2; write("\"break\";"); } @@ -29224,8 +30178,8 @@ var ts; } } else { - var labelMarker; - if (node.kind === 207) { + var labelMarker = void 0; + if (node.kind === 209) { labelMarker = "break-" + node.label.text; setLabeledJump(convertedLoopState, true, node.label.text, labelMarker); } @@ -29238,7 +30192,7 @@ var ts; return; } } - emitToken(node.kind === 207 ? 70 : 75, node.pos); + emitToken(node.kind === 209 ? 70 : 75, node.pos); emitOptional(" ", node.label); write(";"); } @@ -29303,7 +30257,7 @@ var ts; ts.getLineOfLocalPositionFromLineMap(currentLineMap, ts.skipTrivia(currentText, node2.pos)); } function emitCaseOrDefaultClause(node) { - if (node.kind === 245) { + if (node.kind === 248) { write("case "); emit(node.expression); write(":"); @@ -29372,7 +30326,7 @@ var ts; function getContainingModule(node) { do { node = node.parent; - } while (node && node.kind !== 222); + } while (node && node.kind !== 224); return node; } function emitContainingModuleName(node) { @@ -29397,17 +30351,17 @@ var ts; function createVoidZero() { var zero = ts.createSynthesizedNode(8); zero.text = "0"; - var result = ts.createSynthesizedNode(181); + var result = ts.createSynthesizedNode(182); result.expression = zero; return result; } function emitEs6ExportDefaultCompat(node) { - if (node.parent.kind === 252) { - ts.Debug.assert(!!(node.flags & 512) || node.kind === 231); + if (node.parent.kind === 255) { + ts.Debug.assert(!!(node.flags & 512) || node.kind === 234); if (modulekind === ts.ModuleKind.CommonJS || modulekind === ts.ModuleKind.AMD || modulekind === ts.ModuleKind.UMD) { if (!isEs6Module) { if (languageVersion !== 0) { - write("Object.defineProperty(exports, \"__esModule\", { value: true });"); + write('Object.defineProperty(exports, "__esModule", { value: true });'); writeLine(); } else { @@ -29438,7 +30392,7 @@ var ts; if (node.flags & 512) { emitEs6ExportDefaultCompat(node); if (languageVersion === 0) { - write("exports[\"default\"]"); + write('exports["default"]'); } else { write("exports.default"); @@ -29498,7 +30452,7 @@ var ts; emitNodeWithCommentsAndWithoutSourcemap(name); write("\", "); } - var isVariableDeclarationOrBindingElement = name.parent && (name.parent.kind === 215 || name.parent.kind === 167); + var isVariableDeclarationOrBindingElement = name.parent && (name.parent.kind === 217 || name.parent.kind === 168); emitStart(isFirstVariableDeclaration(nodeForSourceMap) ? nodeForSourceMap.parent : nodeForSourceMap); withTemporaryNoSourceMap(function () { if (isVariableDeclarationOrBindingElement) { @@ -29524,22 +30478,22 @@ var ts; return identifier; } function isFirstVariableDeclaration(root) { - return root.kind === 215 && - root.parent.kind === 216 && + return root.kind === 217 && + root.parent.kind === 218 && root.parent.declarations[0] === root; } function emitDestructuring(root, isAssignmentExpressionStatement, value) { var emitCount = 0; var canDefineTempVariablesInPlace = false; - if (root.kind === 215) { + if (root.kind === 217) { var isExported = ts.getCombinedNodeFlags(root) & 1; var isSourceLevelForSystemModuleKind = shouldHoistDeclarationInSystemJsModule(root); canDefineTempVariablesInPlace = !isExported && !isSourceLevelForSystemModuleKind; } - else if (root.kind === 140) { + else if (root.kind === 141) { canDefineTempVariablesInPlace = true; } - if (root.kind === 185) { + if (root.kind === 186) { emitAssignmentExpression(root); } else { @@ -29559,14 +30513,14 @@ var ts; } function createDefaultValueCheck(value, defaultValue, sourceMapNode) { value = ensureIdentifier(value, true, sourceMapNode); - var equals = ts.createSynthesizedNode(185); + var equals = ts.createSynthesizedNode(186); equals.left = value; equals.operatorToken = ts.createSynthesizedNode(32); equals.right = createVoidZero(); return createConditionalExpression(equals, defaultValue, value); } function createConditionalExpression(condition, whenTrue, whenFalse) { - var cond = ts.createSynthesizedNode(186); + var cond = ts.createSynthesizedNode(187); cond.condition = condition; cond.questionToken = ts.createSynthesizedNode(53); cond.whenTrue = whenTrue; @@ -29581,7 +30535,7 @@ var ts; } function createPropertyAccessForDestructuringProperty(object, propName) { var index; - var nameIsComputed = propName.kind === 138; + var nameIsComputed = propName.kind === 139; if (nameIsComputed) { index = ensureIdentifier(propName.expression, false, propName); } @@ -29594,7 +30548,7 @@ var ts; : createElementAccessExpression(object, index); } function createSliceCall(value, sliceIndex) { - var call = ts.createSynthesizedNode(172); + var call = ts.createSynthesizedNode(173); var sliceIdentifier = ts.createSynthesizedNode(69); sliceIdentifier.text = "slice"; call.expression = createPropertyAccessExpression(value, sliceIdentifier); @@ -29609,9 +30563,9 @@ var ts; } for (var _a = 0, properties_5 = properties; _a < properties_5.length; _a++) { var p = properties_5[_a]; - if (p.kind === 249 || p.kind === 250) { + if (p.kind === 252 || p.kind === 253) { var propName = p.name; - var target_1 = p.kind === 250 ? p : p.initializer || propName; + var target_1 = p.kind === 253 ? p : p.initializer || propName; emitDestructuringAssignment(target_1, createPropertyAccessForDestructuringProperty(value, propName), p); } } @@ -29623,8 +30577,8 @@ var ts; } for (var i = 0; i < elements.length; i++) { var e = elements[i]; - if (e.kind !== 191) { - if (e.kind !== 189) { + if (e.kind !== 192) { + if (e.kind !== 190) { emitDestructuringAssignment(e, createElementAccessExpression(value, createNumericLiteral(i)), e); } else if (i === elements.length - 1) { @@ -29634,20 +30588,20 @@ var ts; } } function emitDestructuringAssignment(target, value, sourceMapNode) { - if (target.kind === 250) { + if (target.kind === 253) { if (target.objectAssignmentInitializer) { value = createDefaultValueCheck(value, target.objectAssignmentInitializer, sourceMapNode); } target = target.name; } - else if (target.kind === 185 && target.operatorToken.kind === 56) { + else if (target.kind === 186 && target.operatorToken.kind === 56) { value = createDefaultValueCheck(value, target.right, sourceMapNode); target = target.left; } - if (target.kind === 169) { + if (target.kind === 170) { emitObjectLiteralAssignment(target, value, sourceMapNode); } - else if (target.kind === 168) { + else if (target.kind === 169) { emitArrayLiteralAssignment(target, value, sourceMapNode); } else { @@ -29665,14 +30619,14 @@ var ts; emitDestructuringAssignment(target, value, ts.nodeIsSynthesized(root) ? target : root); } else { - if (root.parent.kind !== 176) { + if (root.parent.kind !== 177) { write("("); } value = ensureIdentifier(value, true, root); emitDestructuringAssignment(target, value, root); write(", "); emit(value); - if (root.parent.kind !== 176) { + if (root.parent.kind !== 177) { write(")"); } } @@ -29693,11 +30647,11 @@ var ts; } for (var i = 0; i < numElements; i++) { var element = elements[i]; - if (pattern.kind === 165) { + if (pattern.kind === 166) { var propName = element.propertyName || element.name; emitBindingElement(element, createPropertyAccessForDestructuringProperty(value, propName)); } - else if (element.kind !== 191) { + else if (element.kind !== 192) { if (!element.dotDotDotToken) { emitBindingElement(element, createElementAccessExpression(value, createNumericLiteral(i))); } @@ -29715,12 +30669,21 @@ var ts; } function emitVariableDeclaration(node) { if (ts.isBindingPattern(node.name)) { - if (languageVersion < 2) { - emitDestructuring(node, false); - } - else { + var isExported = ts.getCombinedNodeFlags(node) & 1; + if (languageVersion >= 2 && (!isExported || modulekind === ts.ModuleKind.ES6)) { + var isTopLevelDeclarationInSystemModule = modulekind === ts.ModuleKind.System && + shouldHoistVariable(node, true); + if (isTopLevelDeclarationInSystemModule) { + write("("); + } emit(node.name); emitOptional(" = ", node.initializer); + if (isTopLevelDeclarationInSystemModule) { + write(")"); + } + } + else { + emitDestructuring(node, false); } } else { @@ -29733,12 +30696,12 @@ var ts; var isCapturedInFunction = flags & 131072; var isDeclaredInLoop = flags & 262144; var emittedAsTopLevel = ts.isBlockScopedContainerTopLevel(container) || - (isCapturedInFunction && isDeclaredInLoop && container.kind === 196 && ts.isIterationStatement(container.parent, false)); + (isCapturedInFunction && isDeclaredInLoop && container.kind === 198 && ts.isIterationStatement(container.parent, false)); var emittedAsNestedLetDeclaration = ts.getCombinedNodeFlags(node) & 1024 && !emittedAsTopLevel; var emitExplicitInitializer = emittedAsNestedLetDeclaration && - container.kind !== 204 && - container.kind !== 205 && + container.kind !== 206 && + container.kind !== 207 && (!resolver.isDeclarationWithCollidingName(node) || (isDeclaredInLoop && !isCapturedInFunction && !ts.isIterationStatement(container, false))); if (emitExplicitInitializer) { @@ -29759,7 +30722,7 @@ var ts; } } function emitExportVariableAssignments(node) { - if (node.kind === 191) { + if (node.kind === 192) { return; } var name = node.name; @@ -29773,7 +30736,7 @@ var ts; function isES6ExportedDeclaration(node) { return !!(node.flags & 1) && modulekind === ts.ModuleKind.ES6 && - node.parent.kind === 252; + node.parent.kind === 255; } function emitVariableStatement(node) { var startIsEmitted = false; @@ -29818,12 +30781,12 @@ var ts; function emitParameter(node) { if (languageVersion < 2) { if (ts.isBindingPattern(node.name)) { - var name_26 = createTempVariable(0); + var name_28 = createTempVariable(0); if (!tempParameters) { tempParameters = []; } - tempParameters.push(name_26); - emit(name_26); + tempParameters.push(name_28); + emit(name_28); } else { emit(node.name); @@ -29839,7 +30802,7 @@ var ts; } function emitDefaultValueAssignments(node) { if (languageVersion < 2) { - var tempIndex = 0; + var tempIndex_1 = 0; ts.forEach(node.parameters, function (parameter) { if (parameter.dotDotDotToken) { return; @@ -29851,15 +30814,15 @@ var ts; writeLine(); write("var "); if (hasBindingElements) { - emitDestructuring(parameter, false, tempParameters[tempIndex]); + emitDestructuring(parameter, false, tempParameters[tempIndex_1]); } else { - emit(tempParameters[tempIndex]); + emit(tempParameters[tempIndex_1]); write(" = "); emit(initializer); } write(";"); - tempIndex++; + tempIndex_1++; } } else if (initializer) { @@ -29922,12 +30885,12 @@ var ts; } } function emitAccessor(node) { - write(node.kind === 147 ? "get " : "set "); + write(node.kind === 148 ? "get " : "set "); emit(node.name); emitSignatureAndBody(node); } function shouldEmitAsArrowFunction(node) { - return node.kind === 178 && languageVersion >= 2; + return node.kind === 179 && languageVersion >= 2; } function emitDeclarationName(node) { if (node.name) { @@ -29938,10 +30901,10 @@ var ts; } } function shouldEmitFunctionName(node) { - if (node.kind === 177) { + if (node.kind === 178) { return !!node.name; } - if (node.kind === 217) { + if (node.kind === 219) { return !!node.name || modulekind !== ts.ModuleKind.ES6; } } @@ -29950,12 +30913,12 @@ var ts; return emitCommentsOnNotEmittedNode(node); } var kind = node.kind, parent = node.parent; - if (kind !== 145 && - kind !== 144 && + if (kind !== 146 && + kind !== 145 && parent && - parent.kind !== 249 && - parent.kind !== 172 && - parent.kind !== 168) { + parent.kind !== 252 && + parent.kind !== 173 && + parent.kind !== 169) { emitLeadingComments(node); } emitStart(node); @@ -29976,11 +30939,13 @@ var ts; emitDeclarationName(node); } emitSignatureAndBody(node); - if (modulekind !== ts.ModuleKind.ES6 && kind === 217 && parent === currentSourceFile && node.name) { + if (modulekind !== ts.ModuleKind.ES6 && kind === 219 && parent === currentSourceFile && node.name) { emitExportMemberAssignments(node.name); } emitEnd(node); - if (kind !== 145 && kind !== 144) { + if (kind !== 146 && + kind !== 145 && + kind !== 179) { emitTrailingComments(node); } } @@ -29997,8 +30962,9 @@ var ts; write("("); if (node) { var parameters = node.parameters; + var skipCount = node.parameters.length && node.parameters[0].name.text === "this" ? 1 : 0; var omitCount = languageVersion < 2 && ts.hasRestParameter(node) ? 1 : 0; - emitList(parameters, 0, parameters.length - omitCount, false, false); + emitList(parameters, skipCount, parameters.length - omitCount - skipCount, false, false); } write(")"); decreaseIndent(); @@ -30012,7 +30978,7 @@ var ts; } function emitAsyncFunctionBodyForES6(node) { var promiseConstructor = ts.getEntityNameFromTypeNode(node.type); - var isArrowFunction = node.kind === 178; + var isArrowFunction = node.kind === 179; var hasLexicalArguments = (resolver.getNodeCheckFlags(node) & 8192) !== 0; if (!isArrowFunction) { write(" {"); @@ -30056,7 +31022,7 @@ var ts; write(" { }"); } else { - if (node.body.kind === 196) { + if (node.body.kind === 198) { emitBlockFunctionBody(node, node.body); } else { @@ -30108,10 +31074,10 @@ var ts; } write(" "); var current = body; - while (current.kind === 175) { + while (current.kind === 176) { current = current.expression; } - emitParenthesizedIf(body, current.kind === 169); + emitParenthesizedIf(body, current.kind === 170); } function emitDownLevelExpressionFunctionBody(node, body) { write(" {"); @@ -30187,7 +31153,7 @@ var ts; return undefined; } var statement = statements[index]; - if (statement.kind === 199) { + if (statement.kind === 201) { return ts.isSuperCallExpression(statement.expression) ? statement : undefined; } } @@ -30213,7 +31179,7 @@ var ts; emitNodeWithCommentsAndWithoutSourcemap(memberName); write("]"); } - else if (memberName.kind === 138) { + else if (memberName.kind === 139) { emitComputedPropertyName(memberName); } else { @@ -30225,7 +31191,7 @@ var ts; var properties = []; for (var _a = 0, _b = node.members; _a < _b.length; _a++) { var member = _b[_a]; - if (member.kind === 143 && isStatic === ((member.flags & 32) !== 0) && member.initializer) { + if (member.kind === 144 && isStatic === ((member.flags & 32) !== 0) && member.initializer) { properties.push(member); } } @@ -30265,11 +31231,11 @@ var ts; } function emitMemberFunctionsForES5AndLower(node) { ts.forEach(node.members, function (member) { - if (member.kind === 195) { + if (member.kind === 197) { writeLine(); write(";"); } - else if (member.kind === 145 || node.kind === 144) { + else if (member.kind === 146 || node.kind === 145) { if (!member.body) { return emitCommentsOnNotEmittedNode(member); } @@ -30286,7 +31252,7 @@ var ts; write(";"); emitTrailingComments(member); } - else if (member.kind === 147 || member.kind === 148) { + else if (member.kind === 148 || member.kind === 149) { var accessors = ts.getAllAccessorDeclarations(node.members, member); if (member === accessors.firstAccessor) { writeLine(); @@ -30336,22 +31302,22 @@ var ts; function emitMemberFunctionsForES6AndHigher(node) { for (var _a = 0, _b = node.members; _a < _b.length; _a++) { var member = _b[_a]; - if ((member.kind === 145 || node.kind === 144) && !member.body) { + if ((member.kind === 146 || node.kind === 145) && !member.body) { emitCommentsOnNotEmittedNode(member); } - else if (member.kind === 145 || - member.kind === 147 || - member.kind === 148) { + else if (member.kind === 146 || + member.kind === 148 || + member.kind === 149) { writeLine(); emitLeadingComments(member); emitStart(member); if (member.flags & 32) { write("static "); } - if (member.kind === 147) { + if (member.kind === 148) { write("get "); } - else if (member.kind === 148) { + else if (member.kind === 149) { write("set "); } if (member.asteriskToken) { @@ -30362,7 +31328,7 @@ var ts; emitEnd(member); emitTrailingComments(member); } - else if (member.kind === 195) { + else if (member.kind === 197) { writeLine(); write(";"); } @@ -30387,10 +31353,10 @@ var ts; function emitConstructorWorker(node, baseTypeElement) { var hasInstancePropertyWithInitializer = false; ts.forEach(node.members, function (member) { - if (member.kind === 146 && !member.body) { + if (member.kind === 147 && !member.body) { emitCommentsOnNotEmittedNode(member); } - if (member.kind === 143 && member.initializer && (member.flags & 32) === 0) { + if (member.kind === 144 && member.initializer && (member.flags & 32) === 0) { hasInstancePropertyWithInitializer = true; } }); @@ -30494,10 +31460,12 @@ var ts; } function emitClassLikeDeclarationForES6AndHigher(node) { var decoratedClassAlias; - var thisNodeIsDecorated = ts.nodeIsDecorated(node); - if (node.kind === 218) { - if (thisNodeIsDecorated) { - if (resolver.getNodeCheckFlags(node) & 524288) { + var isHoistedDeclarationInSystemModule = shouldHoistDeclarationInSystemJsModule(node); + var isDecorated = ts.nodeIsDecorated(node); + var rewriteAsClassExpression = isDecorated || isHoistedDeclarationInSystemModule; + if (node.kind === 220) { + if (rewriteAsClassExpression) { + if (isDecorated && resolver.getNodeCheckFlags(node) & 524288) { decoratedClassAlias = ts.unescapeIdentifier(makeUniqueName(node.name ? node.name.text : "default")); decoratedClassAliases[ts.getNodeId(node)] = decoratedClassAlias; write("let " + decoratedClassAlias + ";"); @@ -30506,7 +31474,9 @@ var ts; if (isES6ExportedDeclaration(node) && !(node.flags & 512)) { write("export "); } - write("let "); + if (!isHoistedDeclarationInSystemModule) { + write("let "); + } emitDeclarationName(node); if (decoratedClassAlias !== undefined) { write(" = " + decoratedClassAlias); @@ -30521,7 +31491,7 @@ var ts; } } var staticProperties = getInitializedProperties(node, true); - var isClassExpressionWithStaticProperties = staticProperties.length > 0 && node.kind === 190; + var isClassExpressionWithStaticProperties = staticProperties.length > 0 && node.kind === 191; var tempVariable; if (isClassExpressionWithStaticProperties) { tempVariable = createAndRecordTempVariable(0); @@ -30531,7 +31501,7 @@ var ts; write(" = "); } write("class"); - if (node.name || (node.flags & 512 && (staticProperties.length > 0 || modulekind !== ts.ModuleKind.ES6) && !thisNodeIsDecorated)) { + if (node.name || (node.flags & 512 && (staticProperties.length > 0 || modulekind !== ts.ModuleKind.ES6) && !rewriteAsClassExpression)) { write(" "); emitDeclarationName(node); } @@ -30548,7 +31518,7 @@ var ts; decreaseIndent(); writeLine(); emitToken(16, node.members.end); - if (thisNodeIsDecorated) { + if (rewriteAsClassExpression) { decoratedClassAliases[ts.getNodeId(node)] = undefined; write(";"); } @@ -30578,14 +31548,14 @@ var ts; } else { if (node.flags & 512) { - if (thisNodeIsDecorated) { + if (isDecorated) { writeLine(); write("export default "); emitDeclarationName(node); write(";"); } } - else if (node.parent.kind !== 252) { + else if (node.parent.kind !== 255) { writeLine(); emitStart(node); emitModuleMemberName(node); @@ -30597,7 +31567,7 @@ var ts; } } function emitClassLikeDeclarationBelowES6(node) { - if (node.kind === 218) { + if (node.kind === 220) { if (!shouldHoistDeclarationInSystemJsModule(node)) { write("var "); } @@ -30657,11 +31627,11 @@ var ts; emit(baseTypeNode.expression); } write("))"); - if (node.kind === 218) { + if (node.kind === 220) { write(";"); } emitEnd(node); - if (node.kind === 218) { + if (node.kind === 220) { emitExportMemberAssignment(node); } } @@ -30731,7 +31701,7 @@ var ts; } else { decorators = member.decorators; - if (member.kind === 145) { + if (member.kind === 146) { functionLikeMember = member; } } @@ -30757,7 +31727,7 @@ var ts; write(", "); emitExpressionForPropertyName(member.name); if (languageVersion > 0) { - if (member.kind !== 143) { + if (member.kind !== 144) { write(", null"); } else { @@ -30773,64 +31743,64 @@ var ts; function emitDecoratorsOfParameters(node, leadingComma) { var argumentsWritten = 0; if (node) { - var parameterIndex = 0; + var parameterIndex_1 = 0; for (var _a = 0, _b = node.parameters; _a < _b.length; _a++) { var parameter = _b[_a]; if (ts.nodeIsDecorated(parameter)) { var decorators = parameter.decorators; argumentsWritten += emitList(decorators, 0, decorators.length, true, false, leadingComma, true, function (decorator) { - write("__param(" + parameterIndex + ", "); + write("__param(" + parameterIndex_1 + ", "); emit(decorator.expression); write(")"); }); leadingComma = true; } - parameterIndex++; + parameterIndex_1++; } } return argumentsWritten; } function shouldEmitTypeMetadata(node) { switch (node.kind) { - case 145: - case 147: + case 146: case 148: - case 143: + case 149: + case 144: return true; } return false; } function shouldEmitReturnTypeMetadata(node) { switch (node.kind) { - case 145: + case 146: return true; } return false; } function shouldEmitParamTypesMetadata(node) { switch (node.kind) { - case 218: - case 145: - case 148: + case 220: + case 146: + case 149: return true; } return false; } function emitSerializedTypeOfNode(node) { switch (node.kind) { - case 218: + case 220: write("Function"); return; - case 143: + case 144: emitSerializedTypeNode(node.type); return; - case 140: - emitSerializedTypeNode(node.type); - return; - case 147: + case 141: emitSerializedTypeNode(node.type); return; case 148: + emitSerializedTypeNode(node.type); + return; + case 149: emitSerializedTypeNode(ts.getSetAccessorTypeAnnotationNode(node)); return; } @@ -30846,23 +31816,23 @@ var ts; case 103: write("void 0"); return; - case 162: + case 163: emitSerializedTypeNode(node.type); return; - case 154: case 155: + case 156: write("Function"); return; - case 158: case 159: + case 160: write("Array"); return; - case 152: + case 153: case 120: write("Boolean"); return; case 131: - case 164: + case 165: write("String"); return; case 129: @@ -30871,15 +31841,15 @@ var ts; case 132: write("Symbol"); return; - case 153: + case 154: emitSerializedTypeReferenceNode(node); return; - case 156: case 157: - case 160: + case 158: case 161: + case 162: case 117: - case 163: + case 164: break; default: ts.Debug.fail("Cannot serialize unexpected type node."); @@ -30942,8 +31912,8 @@ var ts; } function emitSerializedParameterTypesOfNode(node) { if (node) { - var valueDeclaration; - if (node.kind === 218) { + var valueDeclaration = void 0; + if (node.kind === 220) { valueDeclaration = ts.getFirstConstructorWithBody(node); } else if (ts.isFunctionLike(node) && ts.nodeIsPresent(node.body)) { @@ -30959,10 +31929,10 @@ var ts; } if (parameters[i].dotDotDotToken) { var parameterType = parameters[i].type; - if (parameterType.kind === 158) { + if (parameterType.kind === 159) { parameterType = parameterType.elementType; } - else if (parameterType.kind === 153 && parameterType.typeArguments && parameterType.typeArguments.length === 1) { + else if (parameterType.kind === 154 && parameterType.typeArguments && parameterType.typeArguments.length === 1) { parameterType = parameterType.typeArguments[0]; } else { @@ -31034,7 +32004,7 @@ var ts; } if (!shouldHoistDeclarationInSystemJsModule(node)) { var isES6ExportedEnum = isES6ExportedDeclaration(node); - if (!(node.flags & 1) || (isES6ExportedEnum && isFirstDeclarationOfKind(node, node.symbol && node.symbol.declarations, 221))) { + if (!(node.flags & 1) || (isES6ExportedEnum && isFirstDeclarationOfKind(node, node.symbol && node.symbol.declarations, 223))) { emitStart(node); if (isES6ExportedEnum) { write("export "); @@ -31114,7 +32084,7 @@ var ts; } } function getInnerMostModuleDeclarationFromDottedModule(moduleDeclaration) { - if (moduleDeclaration.body.kind === 222) { + if (moduleDeclaration.body.kind === 224) { var recursiveInnerModule = getInnerMostModuleDeclarationFromDottedModule(moduleDeclaration.body); return recursiveInnerModule || moduleDeclaration.body; } @@ -31137,7 +32107,7 @@ var ts; var emitVarForModule = !hoistedInDeclarationScope && !isModuleMergedWithES6Class(node); if (emitVarForModule) { var isES6ExportedNamespace = isES6ExportedDeclaration(node); - if (!isES6ExportedNamespace || isFirstDeclarationOfKind(node, node.symbol && node.symbol.declarations, 222)) { + if (!isES6ExportedNamespace || isFirstDeclarationOfKind(node, node.symbol && node.symbol.declarations, 224)) { emitStart(node); if (isES6ExportedNamespace) { write("export "); @@ -31155,7 +32125,7 @@ var ts; write(getGeneratedNameForNode(node)); emitEnd(node.name); write(") "); - if (node.body.kind === 223) { + if (node.body.kind === 225) { var saveConvertedLoopState = convertedLoopState; var saveTempFlags = tempFlags; var saveTempVariables = tempVariables; @@ -31226,16 +32196,16 @@ var ts; } } function getNamespaceDeclarationNode(node) { - if (node.kind === 225) { + if (node.kind === 228) { return node; } var importClause = node.importClause; - if (importClause && importClause.namedBindings && importClause.namedBindings.kind === 228) { + if (importClause && importClause.namedBindings && importClause.namedBindings.kind === 231) { return importClause.namedBindings; } } function isDefaultImport(node) { - return node.kind === 226 && node.importClause && !!node.importClause.name; + return node.kind === 229 && node.importClause && !!node.importClause.name; } function emitExportImportAssignments(node) { if (ts.isAliasSymbolDeclaration(node) && resolver.isValueAliasDeclaration(node)) { @@ -31262,7 +32232,7 @@ var ts; if (shouldEmitNamedBindings) { emitLeadingComments(node.importClause.namedBindings); emitStart(node.importClause.namedBindings); - if (node.importClause.namedBindings.kind === 228) { + if (node.importClause.namedBindings.kind === 231) { write("* as "); emit(node.importClause.namedBindings.name); } @@ -31288,7 +32258,7 @@ var ts; } function emitExternalImportDeclaration(node) { if (ts.contains(externalImports, node)) { - var isExportedImport = node.kind === 225 && (node.flags & 1) !== 0; + var isExportedImport = node.kind === 228 && (node.flags & 1) !== 0; var namespaceDeclaration = getNamespaceDeclarationNode(node); var varOrConst = (languageVersion <= 1) ? "var " : "const "; if (modulekind !== ts.ModuleKind.AMD) { @@ -31303,7 +32273,7 @@ var ts; write(" = "); } else { - var isNakedImport = 226 && !node.importClause; + var isNakedImport = 229 && !node.importClause; if (!isNakedImport) { write(varOrConst); write(getGeneratedNameForNode(node)); @@ -31470,8 +32440,8 @@ var ts; write("export default "); var expression = node.expression; emit(expression); - if (expression.kind !== 217 && - expression.kind !== 218) { + if (expression.kind !== 219 && + expression.kind !== 220) { write(";"); } emitEnd(node); @@ -31488,7 +32458,7 @@ var ts; emitEs6ExportDefaultCompat(node); emitContainingModuleName(node); if (languageVersion === 0) { - write("[\"default\"] = "); + write('["default"] = '); } else { write(".default = "); @@ -31508,18 +32478,18 @@ var ts; for (var _a = 0, _b = sourceFile.statements; _a < _b.length; _a++) { var node = _b[_a]; switch (node.kind) { - case 226: + case 229: if (!node.importClause || resolver.isReferencedAliasDeclaration(node.importClause, true)) { externalImports.push(node); } break; - case 225: - if (node.moduleReference.kind === 236 && resolver.isReferencedAliasDeclaration(node)) { + case 228: + if (node.moduleReference.kind === 239 && resolver.isReferencedAliasDeclaration(node)) { externalImports.push(node); } break; - case 232: + case 235: if (node.moduleSpecifier) { if (!node.exportClause) { if (resolver.moduleExportsSomeValue(node.moduleSpecifier)) { @@ -31534,12 +32504,12 @@ var ts; else { for (var _c = 0, _d = node.exportClause.elements; _c < _d.length; _c++) { var specifier = _d[_c]; - var name_27 = (specifier.propertyName || specifier.name).text; - (exportSpecifiers[name_27] || (exportSpecifiers[name_27] = [])).push(specifier); + var name_29 = (specifier.propertyName || specifier.name).text; + (exportSpecifiers[name_29] || (exportSpecifiers[name_29] = [])).push(specifier); } } break; - case 231: + case 234: if (node.isExportEquals && !exportEquals) { exportEquals = node; } @@ -31564,18 +32534,18 @@ var ts; if (namespaceDeclaration && !isDefaultImport(node)) { return ts.getTextOfNodeFromSourceText(currentText, namespaceDeclaration.name); } - if (node.kind === 226 && node.importClause) { + if (node.kind === 229 && node.importClause) { return getGeneratedNameForNode(node); } - if (node.kind === 232 && node.moduleSpecifier) { + if (node.kind === 235 && node.moduleSpecifier) { return getGeneratedNameForNode(node); } } function getExternalModuleNameText(importNode, emitRelativePathAsModuleName) { if (emitRelativePathAsModuleName) { - var name_28 = getExternalModuleNameFromDeclaration(host, resolver, importNode); - if (name_28) { - return "\"" + name_28 + "\""; + var name_30 = getExternalModuleNameFromDeclaration(host, resolver, importNode); + if (name_30) { + return "\"" + name_30 + "\""; } } var moduleName = ts.getExternalModuleName(importNode); @@ -31592,8 +32562,8 @@ var ts; var started = false; for (var _a = 0, externalImports_1 = externalImports; _a < externalImports_1.length; _a++) { var importNode = externalImports_1[_a]; - var skipNode = importNode.kind === 232 || - (importNode.kind === 226 && !importNode.importClause); + var skipNode = importNode.kind === 235 || + (importNode.kind === 229 && !importNode.importClause); if (skipNode) { continue; } @@ -31618,7 +32588,7 @@ var ts; var hasExportDeclarationWithExportClause = false; for (var _a = 0, externalImports_2 = externalImports; _a < externalImports_2.length; _a++) { var externalImport = externalImports_2[_a]; - if (externalImport.kind === 232 && externalImport.exportClause) { + if (externalImport.kind === 235 && externalImport.exportClause) { hasExportDeclarationWithExportClause = true; break; } @@ -31647,7 +32617,7 @@ var ts; } for (var _d = 0, externalImports_3 = externalImports; _d < externalImports_3.length; _d++) { var externalImport = externalImports_3[_d]; - if (externalImport.kind !== 232) { + if (externalImport.kind !== 235) { continue; } var exportDecl = externalImport; @@ -31721,11 +32691,11 @@ var ts; var seen = {}; for (var i = 0; i < hoistedVars.length; i++) { var local = hoistedVars[i]; - var name_29 = local.kind === 69 + var name_31 = local.kind === 69 ? local : local.name; - if (name_29) { - var text = ts.unescapeIdentifier(name_29.text); + if (name_31) { + var text = ts.unescapeIdentifier(name_31.text); if (ts.hasProperty(seen, text)) { continue; } @@ -31736,7 +32706,7 @@ var ts; if (i !== 0) { write(", "); } - if (local.kind === 218 || local.kind === 222 || local.kind === 221) { + if (local.kind === 220 || local.kind === 224 || local.kind === 223) { emitDeclarationName(local); } else { @@ -31770,21 +32740,21 @@ var ts; if (node.flags & 2) { return; } - if (node.kind === 217) { + if (node.kind === 219) { if (!hoistedFunctionDeclarations) { hoistedFunctionDeclarations = []; } hoistedFunctionDeclarations.push(node); return; } - if (node.kind === 218) { + if (node.kind === 220) { if (!hoistedVars) { hoistedVars = []; } hoistedVars.push(node); return; } - if (node.kind === 221) { + if (node.kind === 223) { if (shouldEmitEnumDeclaration(node)) { if (!hoistedVars) { hoistedVars = []; @@ -31793,7 +32763,7 @@ var ts; } return; } - if (node.kind === 222) { + if (node.kind === 224) { if (shouldEmitModuleDeclaration(node)) { if (!hoistedVars) { hoistedVars = []; @@ -31802,17 +32772,17 @@ var ts; } return; } - if (node.kind === 215 || node.kind === 167) { + if (node.kind === 217 || node.kind === 168) { if (shouldHoistVariable(node, false)) { - var name_30 = node.name; - if (name_30.kind === 69) { + var name_32 = node.name; + if (name_32.kind === 69) { if (!hoistedVars) { hoistedVars = []; } - hoistedVars.push(name_30); + hoistedVars.push(name_32); } else { - ts.forEachChild(name_30, visit); + ts.forEachChild(name_32, visit); } } return; @@ -31838,7 +32808,7 @@ var ts; return false; } return (ts.getCombinedNodeFlags(node) & 3072) === 0 || - ts.getEnclosingBlockScopeContainer(node).kind === 252; + ts.getEnclosingBlockScopeContainer(node).kind === 255; } function isCurrentFileSystemExternalModule() { return modulekind === ts.ModuleKind.System && isCurrentFileExternalModule; @@ -31876,17 +32846,17 @@ var ts; var entry = group_1[_a]; var importVariableName = getLocalNameForExternalImport(entry) || ""; switch (entry.kind) { - case 226: + case 229: if (!entry.importClause) { break; } - case 225: + case 228: ts.Debug.assert(importVariableName !== ""); writeLine(); write(importVariableName + " = " + parameterName + ";"); writeLine(); break; - case 232: + case 235: ts.Debug.assert(importVariableName !== ""); if (entry.exportClause) { writeLine(); @@ -31930,10 +32900,10 @@ var ts; for (var i = startIndex; i < node.statements.length; i++) { var statement = node.statements[i]; switch (statement.kind) { - case 217: - case 226: + case 219: + case 229: continue; - case 232: + case 235: if (!statement.moduleSpecifier) { for (var _a = 0, _b = statement.exportClause.elements; _a < _b.length; _a++) { var element = _b[_a]; @@ -31941,7 +32911,7 @@ var ts; } } continue; - case 225: + case 228: if (!ts.isInternalModuleImportEqualsDeclaration(statement)) { continue; } @@ -32012,11 +32982,11 @@ var ts; for (var _a = 0, _b = node.amdDependencies; _a < _b.length; _a++) { var amdDependency = _b[_a]; if (amdDependency.name) { - aliasedModuleNames.push("\"" + amdDependency.path + "\""); + aliasedModuleNames.push('"' + amdDependency.path + '"'); importAliasNames.push(amdDependency.name); } else { - unaliasedModuleNames.push("\"" + amdDependency.path + "\""); + unaliasedModuleNames.push('"' + amdDependency.path + '"'); } } for (var _c = 0, externalImports_4 = externalImports; _c < externalImports_4.length; _c++) { @@ -32041,7 +33011,7 @@ var ts; } function emitAMDDependencyList(_a) { var aliasedModuleNames = _a.aliasedModuleNames, unaliasedModuleNames = _a.unaliasedModuleNames; - write("[\"require\", \"exports\""); + write('["require", "exports"'); if (aliasedModuleNames.length) { write(", "); write(aliasedModuleNames.join(", ")); @@ -32073,8 +33043,8 @@ var ts; emitExportStarHelper(); emitCaptureThisForNodeIfNecessary(node); emitLinesStartingAt(node.statements, startIndex); - emitTempDeclarations(true); emitExportEquals(true); + emitTempDeclarations(true); decreaseIndent(); writeLine(); write("});"); @@ -32086,8 +33056,8 @@ var ts; emitExportStarHelper(); emitCaptureThisForNodeIfNecessary(node); emitLinesStartingAt(node.statements, startIndex); - emitTempDeclarations(true); emitExportEquals(false); + emitTempDeclarations(true); } function emitUMDModule(node) { emitEmitHelpers(node); @@ -32103,8 +33073,8 @@ var ts; emitExportStarHelper(); emitCaptureThisForNodeIfNecessary(node); emitLinesStartingAt(node.statements, startIndex); - emitTempDeclarations(true); emitExportEquals(true); + emitTempDeclarations(true); decreaseIndent(); writeLine(); write("});"); @@ -32170,7 +33140,7 @@ var ts; result = result.replace(/&(\w+);/g, function (s, m) { if (entities[m] !== undefined) { var ch = String.fromCharCode(entities[m]); - return ch === "\"" ? "\\\"" : ch; + return ch === '"' ? "\\\"" : ch; } else { return s; @@ -32180,10 +33150,10 @@ var ts; return result; } function isJsxChildEmittable(child) { - if (child.kind === 244) { + if (child.kind === 247) { return !!child.expression; } - else if (child.kind === 240) { + else if (child.kind === 243) { return !!getTextToEmit(child); } return true; @@ -32207,9 +33177,9 @@ var ts; function emitJsxText(node) { switch (compilerOptions.jsx) { case 2: - write("\""); + write('"'); write(trimReactWhitespaceAndApplyEntities(node)); - write("\""); + write('"'); break; case 1: default: @@ -32233,7 +33203,7 @@ var ts; } } function isUseStrictPrologue(node) { - return !!node.expression.text.match(/use strict/); + return node.expression.text === "use strict"; } function ensureUseStrictPrologue(startWithNewLine, writeUseStrict) { if (writeUseStrict) { @@ -32275,10 +33245,14 @@ var ts; } function emitEmitHelpers(node) { if (!compilerOptions.noEmitHelpers) { - if ((languageVersion < 2) && (!extendsEmitted && node.flags & 262144)) { + if (languageVersion < 2 && !extendsEmitted && node.flags & 262144) { writeLines(extendsHelper); extendsEmitted = true; } + if (compilerOptions.jsx !== 1 && !assignEmitted && (node.flags & 1073741824)) { + writeLines(assignHelper); + assignEmitted = true; + } if (!decorateEmitted && node.flags & 524288) { writeLines(decorateHelper); if (compilerOptions.emitDecoratorMetadata) { @@ -32373,28 +33347,28 @@ var ts; } function isSpecializedCommentHandling(node) { switch (node.kind) { + case 221: case 219: - case 217: - case 226: - case 225: - case 220: - case 231: + case 229: + case 228: + case 222: + case 234: return true; } } function shouldEmitLeadingAndTrailingComments(node) { switch (node.kind) { - case 197: + case 199: return shouldEmitLeadingAndTrailingCommentsForVariableStatement(node); - case 222: + case 224: return shouldEmitModuleDeclaration(node); - case 221: + case 223: return shouldEmitEnumDeclaration(node); } ts.Debug.assert(!isSpecializedCommentHandling(node)); - if (node.kind !== 196 && + if (node.kind !== 198 && node.parent && - node.parent.kind === 178 && + node.parent.kind === 179 && node.parent.body === node && compilerOptions.target <= 1) { return false; @@ -32405,13 +33379,13 @@ var ts; switch (node.kind) { case 69: return emitIdentifier(node); - case 140: + case 141: return emitParameter(node); + case 146: case 145: - case 144: return emitMethod(node); - case 147: case 148: + case 149: return emitAccessor(node); case 97: return emitThis(node); @@ -32431,142 +33405,142 @@ var ts; case 13: case 14: return emitLiteral(node); - case 187: - return emitTemplateExpression(node); - case 194: - return emitTemplateSpan(node); - case 237: - case 238: - return emitJsxElement(node); - case 240: - return emitJsxText(node); - case 244: - return emitJsxExpression(node); - case 137: - return emitQualifiedName(node); - case 165: - return emitObjectBindingPattern(node); - case 166: - return emitArrayBindingPattern(node); - case 167: - return emitBindingElement(node); - case 168: - return emitArrayLiteral(node); - case 169: - return emitObjectLiteral(node); - case 249: - return emitPropertyAssignment(node); - case 250: - return emitShorthandPropertyAssignment(node); - case 138: - return emitComputedPropertyName(node); - case 170: - return emitPropertyAccess(node); - case 171: - return emitIndexedAccess(node); - case 172: - return emitCallExpression(node); - case 173: - return emitNewExpression(node); - case 174: - return emitTaggedTemplateExpression(node); - case 175: - return emit(node.expression); - case 193: - return emit(node.expression); - case 176: - return emitParenExpression(node); - case 217: - case 177: - case 178: - return emitFunctionDeclaration(node); - case 179: - return emitDeleteExpression(node); - case 180: - return emitTypeOfExpression(node); - case 181: - return emitVoidExpression(node); - case 182: - return emitAwaitExpression(node); - case 183: - return emitPrefixUnaryExpression(node); - case 184: - return emitPostfixUnaryExpression(node); - case 185: - return emitBinaryExpression(node); - case 186: - return emitConditionalExpression(node); - case 189: - return emitSpreadElementExpression(node); case 188: - return emitYieldExpression(node); - case 191: - return; + return emitTemplateExpression(node); case 196: - case 223: - return emitBlock(node); - case 197: - return emitVariableStatement(node); - case 198: - return write(";"); - case 199: - return emitExpressionStatement(node); - case 200: - return emitIfStatement(node); - case 201: - return emitDoStatement(node); - case 202: - return emitWhileStatement(node); - case 203: - return emitForStatement(node); - case 205: - case 204: - return emitForInOrForOfStatement(node); - case 206: - case 207: - return emitBreakOrContinueStatement(node); - case 208: - return emitReturnStatement(node); - case 209: - return emitWithStatement(node); - case 210: - return emitSwitchStatement(node); - case 245: - case 246: - return emitCaseOrDefaultClause(node); - case 211: - return emitLabeledStatement(node); - case 212: - return emitThrowStatement(node); - case 213: - return emitTryStatement(node); - case 248: - return emitCatchClause(node); - case 214: - return emitDebuggerStatement(node); - case 215: - return emitVariableDeclaration(node); - case 190: - return emitClassExpression(node); - case 218: - return emitClassDeclaration(node); - case 219: - return emitInterfaceDeclaration(node); - case 221: - return emitEnumDeclaration(node); - case 251: - return emitEnumMember(node); - case 222: - return emitModuleDeclaration(node); - case 226: - return emitImportDeclaration(node); - case 225: - return emitImportEqualsDeclaration(node); - case 232: - return emitExportDeclaration(node); - case 231: - return emitExportAssignment(node); + return emitTemplateSpan(node); + case 240: + case 241: + return emitJsxElement(node); + case 243: + return emitJsxText(node); + case 247: + return emitJsxExpression(node); + case 138: + return emitQualifiedName(node); + case 166: + return emitObjectBindingPattern(node); + case 167: + return emitArrayBindingPattern(node); + case 168: + return emitBindingElement(node); + case 169: + return emitArrayLiteral(node); + case 170: + return emitObjectLiteral(node); case 252: + return emitPropertyAssignment(node); + case 253: + return emitShorthandPropertyAssignment(node); + case 139: + return emitComputedPropertyName(node); + case 171: + return emitPropertyAccess(node); + case 172: + return emitIndexedAccess(node); + case 173: + return emitCallExpression(node); + case 174: + return emitNewExpression(node); + case 175: + return emitTaggedTemplateExpression(node); + case 176: + case 194: + case 195: + return emit(node.expression); + case 177: + return emitParenExpression(node); + case 219: + case 178: + case 179: + return emitFunctionDeclaration(node); + case 180: + return emitDeleteExpression(node); + case 181: + return emitTypeOfExpression(node); + case 182: + return emitVoidExpression(node); + case 183: + return emitAwaitExpression(node); + case 184: + return emitPrefixUnaryExpression(node); + case 185: + return emitPostfixUnaryExpression(node); + case 186: + return emitBinaryExpression(node); + case 187: + return emitConditionalExpression(node); + case 190: + return emitSpreadElementExpression(node); + case 189: + return emitYieldExpression(node); + case 192: + return; + case 198: + case 225: + return emitBlock(node); + case 199: + return emitVariableStatement(node); + case 200: + return write(";"); + case 201: + return emitExpressionStatement(node); + case 202: + return emitIfStatement(node); + case 203: + return emitDoStatement(node); + case 204: + return emitWhileStatement(node); + case 205: + return emitForStatement(node); + case 207: + case 206: + return emitForInOrForOfStatement(node); + case 208: + case 209: + return emitBreakOrContinueStatement(node); + case 210: + return emitReturnStatement(node); + case 211: + return emitWithStatement(node); + case 212: + return emitSwitchStatement(node); + case 248: + case 249: + return emitCaseOrDefaultClause(node); + case 213: + return emitLabeledStatement(node); + case 214: + return emitThrowStatement(node); + case 215: + return emitTryStatement(node); + case 251: + return emitCatchClause(node); + case 216: + return emitDebuggerStatement(node); + case 217: + return emitVariableDeclaration(node); + case 191: + return emitClassExpression(node); + case 220: + return emitClassDeclaration(node); + case 221: + return emitInterfaceDeclaration(node); + case 223: + return emitEnumDeclaration(node); + case 254: + return emitEnumMember(node); + case 224: + return emitModuleDeclaration(node); + case 229: + return emitImportDeclaration(node); + case 228: + return emitImportEqualsDeclaration(node); + case 235: + return emitExportDeclaration(node); + case 234: + return emitExportAssignment(node); + case 255: return emitSourceFileNode(node); } } @@ -32596,7 +33570,7 @@ var ts; } function getLeadingCommentsToEmit(node) { if (node.parent) { - if (node.parent.kind === 252 || node.pos !== node.parent.pos) { + if (node.parent.kind === 255 || node.pos !== node.parent.pos) { if (hasDetachedComments(node.pos)) { return getLeadingCommentsWithoutDetachedComments(); } @@ -32608,7 +33582,7 @@ var ts; } function getTrailingCommentsToEmit(node) { if (node.parent) { - if (node.parent.kind === 252 || node.end !== node.parent.end) { + if (node.parent.kind === 255 || node.end !== node.parent.end) { return ts.getTrailingCommentRanges(currentText, node.end); } } @@ -32699,6 +33673,15 @@ var ts; if (declarationFilePath) { emitSkipped = ts.writeDeclarationFile(declarationFilePath, sourceFiles, isBundledEmit, host, resolver, emitterDiagnostics) || emitSkipped; } + if (!emitSkipped && emittedFilesList) { + emittedFilesList.push(jsFilePath); + if (sourceMapFilePath) { + emittedFilesList.push(sourceMapFilePath); + } + if (declarationFilePath) { + emittedFilesList.push(declarationFilePath); + } + } } } ts.emitFiles = emitFiles; @@ -32710,10 +33693,15 @@ var ts; ts.ioReadTime = 0; ts.ioWriteTime = 0; var emptyArray = []; + var defaultLibrarySearchPaths = [ + "types/", + "node_modules/", + "node_modules/@types/", + ]; ts.version = "1.9.0"; function findConfigFile(searchPath, fileExists) { - var fileName = "tsconfig.json"; while (true) { + var fileName = ts.combinePaths(searchPath, "tsconfig.json"); if (fileExists(fileName)) { return fileName; } @@ -32722,7 +33710,6 @@ var ts; break; } searchPath = parentPath; - fileName = "../" + fileName; } return undefined; } @@ -32733,18 +33720,42 @@ var ts; return ts.normalizePath(referencedFileName); } ts.resolveTripleslashReference = resolveTripleslashReference; + function computeCommonSourceDirectoryOfFilenames(fileNames, currentDirectory, getCanonicalFileName) { + var commonPathComponents; + var failed = ts.forEach(fileNames, function (sourceFile) { + var sourcePathComponents = ts.getNormalizedPathComponents(sourceFile, currentDirectory); + sourcePathComponents.pop(); + if (!commonPathComponents) { + commonPathComponents = sourcePathComponents; + return; + } + for (var i = 0, n = Math.min(commonPathComponents.length, sourcePathComponents.length); i < n; i++) { + if (getCanonicalFileName(commonPathComponents[i]) !== getCanonicalFileName(sourcePathComponents[i])) { + if (i === 0) { + return true; + } + commonPathComponents.length = i; + break; + } + } + if (sourcePathComponents.length < commonPathComponents.length) { + commonPathComponents.length = sourcePathComponents.length; + } + }); + if (failed) { + return ""; + } + if (!commonPathComponents) { + return currentDirectory; + } + return ts.getNormalizedPathFromPathComponents(commonPathComponents); + } + ts.computeCommonSourceDirectoryOfFilenames = computeCommonSourceDirectoryOfFilenames; function trace(host, message) { host.trace(ts.formatMessage.apply(undefined, arguments)); } function isTraceEnabled(compilerOptions, host) { - return compilerOptions.traceModuleResolution && host.trace !== undefined; - } - function startsWith(str, prefix) { - return str.lastIndexOf(prefix, 0) === 0; - } - function endsWith(str, suffix) { - var expectedPos = str.length - suffix.length; - return str.indexOf(suffix, expectedPos) === expectedPos; + return compilerOptions.traceResolution && host.trace !== undefined; } function hasZeroOrOneAsteriskCharacter(str) { var seenAsterisk = false; @@ -32771,6 +33782,139 @@ var ts; var startsWithDotSlashOrDotDotSlash = i === 0 || (i === 1 && moduleName.charCodeAt(0) === 46); return !startsWithDotSlashOrDotDotSlash; } + function tryReadTypesSection(packageJsonPath, baseDirectory, state) { + var jsonContent; + try { + var jsonText = state.host.readFile(packageJsonPath); + jsonContent = jsonText ? JSON.parse(jsonText) : {}; + } + catch (e) { + jsonContent = {}; + } + var typesFile; + var fieldName; + if (jsonContent.typings) { + if (typeof jsonContent.typings === "string") { + fieldName = "typings"; + typesFile = jsonContent.typings; + } + else { + if (state.traceEnabled) { + trace(state.host, ts.Diagnostics.Expected_type_of_0_field_in_package_json_to_be_string_got_1, "typings", typeof jsonContent.typings); + } + } + } + if (!typesFile && jsonContent.types) { + if (typeof jsonContent.types === "string") { + fieldName = "types"; + typesFile = jsonContent.types; + } + else { + if (state.traceEnabled) { + trace(state.host, ts.Diagnostics.Expected_type_of_0_field_in_package_json_to_be_string_got_1, "types", typeof jsonContent.types); + } + } + } + if (typesFile) { + var typesFilePath = ts.normalizePath(ts.combinePaths(baseDirectory, typesFile)); + if (state.traceEnabled) { + trace(state.host, ts.Diagnostics.package_json_has_0_field_1_that_references_2, fieldName, typesFile, typesFilePath); + } + return typesFilePath; + } + return undefined; + } + var typeReferenceExtensions = [".d.ts"]; + function resolveTypeReferenceDirective(typeReferenceDirectiveName, containingFile, options, host) { + var traceEnabled = isTraceEnabled(options, host); + var moduleResolutionState = { + compilerOptions: options, + host: host, + skipTsx: true, + traceEnabled: traceEnabled + }; + var rootDir = options.typesRoot || (options.configFilePath ? ts.getDirectoryPath(options.configFilePath) : undefined); + if (traceEnabled) { + if (containingFile === undefined) { + if (rootDir === undefined) { + trace(host, ts.Diagnostics.Resolving_type_reference_directive_0_containing_file_not_set_root_directory_not_set, typeReferenceDirectiveName); + } + else { + trace(host, ts.Diagnostics.Resolving_type_reference_directive_0_containing_file_not_set_root_directory_1, typeReferenceDirectiveName, rootDir); + } + } + else { + if (rootDir === undefined) { + trace(host, ts.Diagnostics.Resolving_type_reference_directive_0_containing_file_1_root_directory_not_set, typeReferenceDirectiveName, containingFile); + } + else { + trace(host, ts.Diagnostics.Resolving_type_reference_directive_0_containing_file_1_root_directory_2, typeReferenceDirectiveName, containingFile, rootDir); + } + } + } + var failedLookupLocations = []; + if (rootDir !== undefined) { + var effectivePrimarySearchPaths = options.typesSearchPaths || defaultLibrarySearchPaths; + for (var _i = 0, effectivePrimarySearchPaths_1 = effectivePrimarySearchPaths; _i < effectivePrimarySearchPaths_1.length; _i++) { + var searchPath = effectivePrimarySearchPaths_1[_i]; + var primaryPath = ts.combinePaths(rootDir, searchPath); + if (traceEnabled) { + trace(host, ts.Diagnostics.Resolving_with_primary_search_path_0, primaryPath); + } + var candidate = ts.combinePaths(primaryPath, typeReferenceDirectiveName); + var candidateDirectory = ts.getDirectoryPath(candidate); + var resolvedFile_1 = loadNodeModuleFromDirectory(typeReferenceExtensions, candidate, failedLookupLocations, !directoryProbablyExists(candidateDirectory, host), moduleResolutionState); + if (resolvedFile_1) { + if (traceEnabled) { + trace(host, ts.Diagnostics.Type_reference_directive_0_was_successfully_resolved_to_1_primary_Colon_2, typeReferenceDirectiveName, resolvedFile_1, true); + } + return { + resolvedTypeReferenceDirective: { primary: true, resolvedFileName: resolvedFile_1 }, + failedLookupLocations: failedLookupLocations + }; + } + } + } + else { + if (traceEnabled) { + trace(host, ts.Diagnostics.Root_directory_cannot_be_determined_skipping_primary_search_paths); + } + } + var resolvedFile; + var initialLocationForSecondaryLookup; + if (containingFile) { + initialLocationForSecondaryLookup = ts.getDirectoryPath(containingFile); + } + else { + initialLocationForSecondaryLookup = rootDir; + } + if (initialLocationForSecondaryLookup !== undefined) { + if (traceEnabled) { + trace(host, ts.Diagnostics.Looking_up_in_node_modules_folder_initial_location_0, initialLocationForSecondaryLookup); + } + resolvedFile = loadModuleFromNodeModules(typeReferenceDirectiveName, initialLocationForSecondaryLookup, failedLookupLocations, moduleResolutionState); + if (traceEnabled) { + if (resolvedFile) { + trace(host, ts.Diagnostics.Type_reference_directive_0_was_successfully_resolved_to_1_primary_Colon_2, typeReferenceDirectiveName, resolvedFile, false); + } + else { + trace(host, ts.Diagnostics.Type_reference_directive_0_was_not_resolved, typeReferenceDirectiveName); + } + } + } + else { + if (traceEnabled) { + trace(host, ts.Diagnostics.Containing_file_is_not_specified_and_root_directory_cannot_be_determined_skipping_lookup_in_node_modules_folder); + } + } + return { + resolvedTypeReferenceDirective: resolvedFile + ? { primary: false, resolvedFileName: resolvedFile } + : undefined, + failedLookupLocations: failedLookupLocations + }; + } + ts.resolveTypeReferenceDirective = resolveTypeReferenceDirective; function resolveModuleName(moduleName, containingFile, compilerOptions, host) { var traceEnabled = isTraceEnabled(compilerOptions, host); if (traceEnabled) { @@ -32829,10 +33973,10 @@ var ts; for (var _i = 0, _a = state.compilerOptions.rootDirs; _i < _a.length; _i++) { var rootDir = _a[_i]; var normalizedRoot = ts.normalizePath(rootDir); - if (!endsWith(normalizedRoot, ts.directorySeparator)) { + if (!ts.endsWith(normalizedRoot, ts.directorySeparator)) { normalizedRoot += ts.directorySeparator; } - var isLongestMatchingPrefix = startsWith(candidate, normalizedRoot) && + var isLongestMatchingPrefix = ts.startsWith(candidate, normalizedRoot) && (matchedNormalizedPrefix === undefined || matchedNormalizedPrefix.length < normalizedRoot.length); if (state.traceEnabled) { trace(state.host, ts.Diagnostics.Checking_if_0_is_the_longest_matching_prefix_for_1_2, normalizedRoot, candidate, isLongestMatchingPrefix); @@ -32899,8 +34043,8 @@ var ts; var prefix = pattern.substr(0, indexOfStar); var suffix = pattern.substr(indexOfStar + 1); if (moduleName.length >= prefix.length + suffix.length && - startsWith(moduleName, prefix) && - endsWith(moduleName, suffix)) { + ts.startsWith(moduleName, prefix) && + ts.endsWith(moduleName, suffix)) { if (prefix.length > longestMatchPrefixLength) { longestMatchPrefixLength = prefix.length; matchedPattern = pattern; @@ -32978,6 +34122,12 @@ var ts; } ts.directoryProbablyExists = directoryProbablyExists; function loadModuleFromFile(candidate, extensions, failedLookupLocation, onlyRecordFailures, state) { + if (!onlyRecordFailures) { + var directory = ts.getDirectoryPath(candidate); + if (directory) { + onlyRecordFailures = !directoryProbablyExists(directory, state.host); + } + } return ts.forEach(extensions, tryLoad); function tryLoad(ext) { if (ext === ".tsx" && state.skipTsx) { @@ -32986,7 +34136,7 @@ var ts; var fileName = ts.fileExtensionIs(candidate, ext) ? candidate : candidate + ext; if (!onlyRecordFailures && state.host.fileExists(fileName)) { if (state.traceEnabled) { - trace(state.host, ts.Diagnostics.File_0_exist_use_it_as_a_module_resolution_result, fileName); + trace(state.host, ts.Diagnostics.File_0_exist_use_it_as_a_name_resolution_result, fileName); } return fileName; } @@ -33006,32 +34156,16 @@ var ts; if (state.traceEnabled) { trace(state.host, ts.Diagnostics.Found_package_json_at_0, packageJsonPath); } - var jsonContent; - try { - var jsonText = state.host.readFile(packageJsonPath); - jsonContent = jsonText ? JSON.parse(jsonText) : { typings: undefined }; - } - catch (e) { - jsonContent = { typings: undefined }; - } - if (jsonContent.typings) { - if (typeof jsonContent.typings === "string") { - var typingsFile = ts.normalizePath(ts.combinePaths(candidate, jsonContent.typings)); - if (state.traceEnabled) { - trace(state.host, ts.Diagnostics.package_json_has_typings_field_0_that_references_1, jsonContent.typings, typingsFile); - } - var result = loadModuleFromFile(typingsFile, extensions, failedLookupLocation, !directoryProbablyExists(ts.getDirectoryPath(typingsFile), state.host), state); - if (result) { - return result; - } - } - else if (state.traceEnabled) { - trace(state.host, ts.Diagnostics.Expected_type_of_typings_field_in_package_json_to_be_string_got_0, typeof jsonContent.typings); + var typesFile = tryReadTypesSection(packageJsonPath, candidate, state); + if (typesFile) { + var result = loadModuleFromFile(typesFile, extensions, failedLookupLocation, !directoryProbablyExists(ts.getDirectoryPath(typesFile), state.host), state); + if (result) { + return result; } } else { if (state.traceEnabled) { - trace(state.host, ts.Diagnostics.package_json_does_not_have_typings_field); + trace(state.host, ts.Diagnostics.package_json_does_not_have_types_field); } } } @@ -33043,19 +34177,26 @@ var ts; } return loadModuleFromFile(ts.combinePaths(candidate, "index"), extensions, failedLookupLocation, !directoryExists, state); } + function loadModuleFromNodeModulesFolder(moduleName, directory, failedLookupLocations, state) { + 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); + if (result) { + return result; + } + result = loadNodeModuleFromDirectory(ts.supportedTypeScriptExtensions, candidate, failedLookupLocations, !nodeModulesFolderExists, state); + if (result) { + return result; + } + } function loadModuleFromNodeModules(moduleName, directory, failedLookupLocations, state) { directory = ts.normalizeSlashes(directory); while (true) { var baseName = ts.getBaseFileName(directory); if (baseName !== "node_modules") { - 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); - if (result) { - return result; - } - result = loadNodeModuleFromDirectory(ts.supportedTypeScriptExtensions, candidate, failedLookupLocations, !nodeModulesFolderExists, state); + var result = loadModuleFromNodeModulesFolder(moduleName, directory, failedLookupLocations, state) || + loadModuleFromNodeModulesFolder(ts.combinePaths("@types", moduleName), directory, failedLookupLocations, state); if (result) { return result; } @@ -33148,11 +34289,39 @@ var ts; ts.sys.createDirectory(directoryPath); } } + var outputFingerprints; + function writeFileIfUpdated(fileName, data, writeByteOrderMark) { + if (!outputFingerprints) { + outputFingerprints = {}; + } + var hash = ts.sys.createHash(data); + var mtimeBefore = ts.sys.getModifiedTime(fileName); + if (mtimeBefore && ts.hasProperty(outputFingerprints, fileName)) { + var fingerprint = outputFingerprints[fileName]; + if (fingerprint.byteOrderMark === writeByteOrderMark && + fingerprint.hash === hash && + fingerprint.mtime.getTime() === mtimeBefore.getTime()) { + return; + } + } + ts.sys.writeFile(fileName, data, writeByteOrderMark); + var mtimeAfter = ts.sys.getModifiedTime(fileName); + outputFingerprints[fileName] = { + hash: hash, + byteOrderMark: writeByteOrderMark, + mtime: mtimeAfter + }; + } function writeFile(fileName, data, writeByteOrderMark, onError) { try { var start = new Date().getTime(); ensureDirectoriesExist(ts.getDirectoryPath(ts.normalizePath(fileName))); - ts.sys.writeFile(fileName, data, writeByteOrderMark); + if (ts.isWatchSet(options) && ts.sys.createHash && ts.sys.getModifiedTime) { + writeFileIfUpdated(fileName, data, writeByteOrderMark); + } + else { + ts.sys.writeFile(fileName, data, writeByteOrderMark); + } ts.ioWriteTime += new Date().getTime() - start; } catch (e) { @@ -33161,10 +34330,14 @@ var ts; } } } + function getDefaultLibLocation() { + return ts.getDirectoryPath(ts.normalizePath(ts.sys.getExecutingFilePath())); + } var newLine = ts.getNewLineCharacter(options); return { getSourceFile: getSourceFile, - getDefaultLibFileName: function (options) { return ts.combinePaths(ts.getDirectoryPath(ts.normalizePath(ts.sys.getExecutingFilePath())), ts.getDefaultLibFileName(options)); }, + getDefaultLibLocation: getDefaultLibLocation, + getDefaultLibFileName: function (options) { return ts.combinePaths(getDefaultLibLocation(), ts.getDefaultLibFileName(options)); }, writeFile: writeFile, getCurrentDirectory: ts.memoize(function () { return ts.sys.getCurrentDirectory(); }), useCaseSensitiveFileNames: function () { return ts.sys.useCaseSensitiveFileNames; }, @@ -33208,57 +34381,78 @@ var ts; } } ts.flattenDiagnosticMessageText = flattenDiagnosticMessageText; + function loadWithLocalCache(names, containingFile, loader) { + if (names.length === 0) { + return []; + } + var resolutions = []; + var cache = {}; + for (var _i = 0, names_1 = names; _i < names_1.length; _i++) { + var name_33 = names_1[_i]; + var result = void 0; + if (ts.hasProperty(cache, name_33)) { + result = cache[name_33]; + } + else { + result = loader(name_33, containingFile); + cache[name_33] = result; + } + resolutions.push(result); + } + return resolutions; + } function createProgram(rootNames, options, host, oldProgram) { var program; var files = []; - var fileProcessingDiagnostics = ts.createDiagnosticCollection(); - var programDiagnostics = ts.createDiagnosticCollection(); var commonSourceDirectory; var diagnosticsProducingTypeChecker; var noDiagnosticsTypeChecker; var classifiableNames; - var skipDefaultLib = options.noLib; - var supportedExtensions = ts.getSupportedExtensions(options); + var resolvedTypeReferenceDirectives = {}; + var fileProcessingDiagnostics = ts.createDiagnosticCollection(); var start = new Date().getTime(); host = host || createCompilerHost(options); - var hasEmitBlockingDiagnostics = ts.createFileMap(getCanonicalFileName); + var skipDefaultLib = options.noLib; + var programDiagnostics = ts.createDiagnosticCollection(); var currentDirectory = host.getCurrentDirectory(); - var resolveModuleNamesWorker = host.resolveModuleNames - ? (function (moduleNames, containingFile) { return host.resolveModuleNames(moduleNames, containingFile); }) - : (function (moduleNames, containingFile) { - var resolvedModuleNames = []; - var lookup = {}; - for (var _i = 0, moduleNames_1 = moduleNames; _i < moduleNames_1.length; _i++) { - var moduleName = moduleNames_1[_i]; - var resolvedName = void 0; - if (ts.hasProperty(lookup, moduleName)) { - resolvedName = lookup[moduleName]; - } - else { - resolvedName = resolveModuleName(moduleName, containingFile, options, host).resolvedModule; - lookup[moduleName] = resolvedName; - } - resolvedModuleNames.push(resolvedName); - } - return resolvedModuleNames; - }); + var supportedExtensions = ts.getSupportedExtensions(options); + var hasEmitBlockingDiagnostics = ts.createFileMap(getCanonicalFileName); + var resolveModuleNamesWorker; + if (host.resolveModuleNames) { + resolveModuleNamesWorker = function (moduleNames, containingFile) { return host.resolveModuleNames(moduleNames, containingFile); }; + } + else { + var loader_1 = function (moduleName, containingFile) { return resolveModuleName(moduleName, containingFile, options, host).resolvedModule; }; + resolveModuleNamesWorker = function (moduleNames, containingFile) { return loadWithLocalCache(moduleNames, containingFile, loader_1); }; + } + var resolveTypeReferenceDirectiveNamesWorker; + if (host.resolveTypeReferenceDirectives) { + resolveTypeReferenceDirectiveNamesWorker = function (typeDirectiveNames, containingFile) { return host.resolveTypeReferenceDirectives(typeDirectiveNames, containingFile); }; + } + else { + var loader_2 = function (typesRef, containingFile) { return resolveTypeReferenceDirective(typesRef, containingFile, options, host).resolvedTypeReferenceDirective; }; + resolveTypeReferenceDirectiveNamesWorker = function (typeReferenceDirectiveNames, containingFile) { return loadWithLocalCache(typeReferenceDirectiveNames, containingFile, loader_2); }; + } var filesByName = ts.createFileMap(); var filesByNameIgnoreCase = host.useCaseSensitiveFileNames() ? ts.createFileMap(function (fileName) { return fileName.toLowerCase(); }) : undefined; - if (oldProgram) { - var oldOptions = oldProgram.getCompilerOptions(); - if ((oldOptions.module !== options.module) || - (oldOptions.noResolve !== options.noResolve) || - (oldOptions.target !== options.target) || - (oldOptions.noLib !== options.noLib) || - (oldOptions.jsx !== options.jsx) || - (oldOptions.allowJs !== options.allowJs)) { - oldProgram = undefined; - } - } if (!tryReuseStructureFromOldProgram()) { + if (options.types && options.types.length) { + var resolutions = resolveTypeReferenceDirectiveNamesWorker(options.types, undefined); + for (var i = 0; i < options.types.length; i++) { + processTypeReferenceDirective(options.types[i], resolutions[i]); + } + } ts.forEach(rootNames, function (name) { return processRootFile(name, false); }); if (!skipDefaultLib) { - processRootFile(host.getDefaultLibFileName(options), true); + if (!options.lib) { + processRootFile(host.getDefaultLibFileName(options), true); + } + else { + var libDirectory_1 = host.getDefaultLibLocation ? host.getDefaultLibLocation() : ts.getDirectoryPath(host.getDefaultLibFileName(options)); + ts.forEach(options.lib, function (libFileName) { + processRootFile(ts.combinePaths(libDirectory_1, libFileName), true); + }); + } } } oldProgram = undefined; @@ -33282,7 +34476,8 @@ var ts; getIdentifierCount: function () { return getDiagnosticsProducingTypeChecker().getIdentifierCount(); }, getSymbolCount: function () { return getDiagnosticsProducingTypeChecker().getSymbolCount(); }, getTypeCount: function () { return getDiagnosticsProducingTypeChecker().getTypeCount(); }, - getFileProcessingDiagnostics: function () { return fileProcessingDiagnostics; } + getFileProcessingDiagnostics: function () { return fileProcessingDiagnostics; }, + resolvedTypeReferenceDirectives: resolvedTypeReferenceDirectives }; verifyCompilerOptions(); ts.programTime += new Date().getTime() - start; @@ -33316,11 +34511,26 @@ var ts; if (!oldProgram) { return false; } + var oldOptions = oldProgram.getCompilerOptions(); + if ((oldOptions.module !== options.module) || + (oldOptions.noResolve !== options.noResolve) || + (oldOptions.target !== options.target) || + (oldOptions.noLib !== options.noLib) || + (oldOptions.jsx !== options.jsx) || + (oldOptions.allowJs !== options.allowJs) || + (oldOptions.rootDir !== options.rootDir) || + (oldOptions.typesSearchPaths !== options.typesSearchPaths) || + (oldOptions.configFilePath !== options.configFilePath)) { + return false; + } ts.Debug.assert(!oldProgram.structureIsReused); var oldRootNames = oldProgram.getRootFileNames(); if (!ts.arrayIsEqualTo(oldRootNames, rootNames)) { return false; } + if (!ts.arrayIsEqualTo(options.types, oldOptions.types)) { + return false; + } var newSourceFiles = []; var filePaths = []; var modifiedSourceFiles = []; @@ -33346,23 +34556,28 @@ var ts; if (!ts.arrayIsEqualTo(oldSourceFile.moduleAugmentations, newSourceFile.moduleAugmentations, moduleNameIsEqualTo)) { return false; } + if (!ts.arrayIsEqualTo(oldSourceFile.typeReferenceDirectives, newSourceFile.typeReferenceDirectives, fileReferenceIsEqualTo)) { + return false; + } + var newSourceFilePath = ts.getNormalizedAbsolutePath(newSourceFile.fileName, currentDirectory); if (resolveModuleNamesWorker) { var moduleNames = ts.map(ts.concatenate(newSourceFile.imports, newSourceFile.moduleAugmentations), getTextOfLiteral); - var resolutions = resolveModuleNamesWorker(moduleNames, ts.getNormalizedAbsolutePath(newSourceFile.fileName, currentDirectory)); - for (var i = 0; i < moduleNames.length; i++) { - var newResolution = resolutions[i]; - var oldResolution = ts.getResolvedModule(oldSourceFile, moduleNames[i]); - var resolutionChanged = oldResolution - ? !newResolution || - oldResolution.resolvedFileName !== newResolution.resolvedFileName || - !!oldResolution.isExternalLibraryImport !== !!newResolution.isExternalLibraryImport - : newResolution; - if (resolutionChanged) { - return false; - } + var resolutions = resolveModuleNamesWorker(moduleNames, newSourceFilePath); + var resolutionsChanged = ts.hasChangesInResolutions(moduleNames, resolutions, oldSourceFile.resolvedModules, ts.moduleResolutionIsEqualTo); + if (resolutionsChanged) { + return false; + } + } + if (resolveTypeReferenceDirectiveNamesWorker) { + var typesReferenceDirectives = ts.map(newSourceFile.typeReferenceDirectives, function (x) { return x.fileName; }); + var resolutions = resolveTypeReferenceDirectiveNamesWorker(typesReferenceDirectives, newSourceFilePath); + var resolutionsChanged = ts.hasChangesInResolutions(typesReferenceDirectives, resolutions, oldSourceFile.resolvedTypeReferenceDirectiveNames, ts.typeDirectiveIsEqualTo); + if (resolutionsChanged) { + return false; } } newSourceFile.resolvedModules = oldSourceFile.resolvedModules; + newSourceFile.resolvedTypeReferenceDirectiveNames = oldSourceFile.resolvedTypeReferenceDirectiveNames; modifiedSourceFiles.push(newSourceFile); } else { @@ -33379,6 +34594,7 @@ var ts; var modifiedFile = modifiedSourceFiles_1[_b]; fileProcessingDiagnostics.reattachFileDiagnostics(modifiedFile); } + resolvedTypeReferenceDirectives = oldProgram.resolvedTypeReferenceDirectives; oldProgram.structureIsReused = true; return true; } @@ -33391,7 +34607,7 @@ var ts; getNewLine: function () { return host.getNewLine(); }, getSourceFile: program.getSourceFile, getSourceFiles: program.getSourceFiles, - writeFile: writeFileCallback || (function (fileName, data, writeByteOrderMark, onError) { return host.writeFile(fileName, data, writeByteOrderMark, onError); }), + writeFile: writeFileCallback || (function (fileName, data, writeByteOrderMark, onError, sourceFiles) { return host.writeFile(fileName, data, writeByteOrderMark, onError, sourceFiles); }), isEmitBlocked: isEmitBlocked }; } @@ -33411,7 +34627,7 @@ var ts; function emitWorker(program, sourceFile, writeFileCallback, cancellationToken) { var declarationDiagnostics = []; if (options.noEmit) { - return { diagnostics: declarationDiagnostics, sourceMaps: undefined, emitSkipped: true }; + return { diagnostics: declarationDiagnostics, sourceMaps: undefined, emittedFiles: undefined, emitSkipped: true }; } if (options.noEmitOnError) { var diagnostics = program.getOptionsDiagnostics(cancellationToken).concat(program.getSyntacticDiagnostics(sourceFile, cancellationToken), program.getGlobalDiagnostics(cancellationToken), program.getSemanticDiagnostics(sourceFile, cancellationToken)); @@ -33419,7 +34635,12 @@ var ts; declarationDiagnostics = program.getDeclarationDiagnostics(undefined, cancellationToken); } if (diagnostics.length > 0 || declarationDiagnostics.length > 0) { - return { diagnostics: diagnostics, sourceMaps: undefined, emitSkipped: true }; + return { + diagnostics: ts.concatenate(diagnostics, declarationDiagnostics), + sourceMaps: undefined, + emittedFiles: undefined, + emitSkipped: true + }; } } var emitResolver = getDiagnosticsProducingTypeChecker().getEmitResolver((options.outFile || options.out) ? undefined : sourceFile); @@ -33451,7 +34672,13 @@ var ts; return getDiagnosticsHelper(sourceFile, getSemanticDiagnosticsForFile, cancellationToken); } function getDeclarationDiagnostics(sourceFile, cancellationToken) { - return getDiagnosticsHelper(sourceFile, getDeclarationDiagnosticsForFile, cancellationToken); + var options = program.getCompilerOptions(); + if (!sourceFile || options.out || options.outFile) { + return getDeclarationDiagnosticsWorker(sourceFile, cancellationToken); + } + else { + return getDiagnosticsHelper(sourceFile, getDeclarationDiagnosticsForFile, cancellationToken); + } } function getSyntacticDiagnosticsForFile(sourceFile, cancellationToken) { return sourceFile.parseDiagnostics; @@ -33491,47 +34718,47 @@ var ts; return false; } switch (node.kind) { - case 225: + case 228: diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.import_can_only_be_used_in_a_ts_file)); return true; - case 231: + case 234: if (node.isExportEquals) { diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.export_can_only_be_used_in_a_ts_file)); return true; } break; - case 218: + case 220: var classDeclaration = node; if (checkModifiers(classDeclaration.modifiers) || checkTypeParameters(classDeclaration.typeParameters)) { return true; } break; - case 247: + case 250: var heritageClause = node; if (heritageClause.token === 106) { diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.implements_clauses_can_only_be_used_in_a_ts_file)); return true; } break; - case 219: + case 221: diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.interface_declarations_can_only_be_used_in_a_ts_file)); return true; - case 222: + case 224: diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.module_declarations_can_only_be_used_in_a_ts_file)); return true; - case 220: + case 222: diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.type_aliases_can_only_be_used_in_a_ts_file)); return true; - case 145: - case 144: case 146: + case 145: case 147: case 148: - case 177: - case 217: + case 149: case 178: - case 217: + case 219: + case 179: + case 219: var functionDeclaration = node; if (checkModifiers(functionDeclaration.modifiers) || checkTypeParameters(functionDeclaration.typeParameters) || @@ -33539,20 +34766,20 @@ var ts; return true; } break; - case 197: + case 199: var variableStatement = node; if (checkModifiers(variableStatement.modifiers)) { return true; } break; - case 215: + case 217: var variableDeclaration = node; if (checkTypeAnnotation(variableDeclaration.type)) { return true; } break; - case 172: case 173: + case 174: var expression = node; if (expression.typeArguments && expression.typeArguments.length > 0) { var start_2 = expression.typeArguments.pos; @@ -33560,7 +34787,7 @@ var ts; return true; } break; - case 140: + case 141: var parameter = node; if (parameter.modifiers) { var start_3 = parameter.modifiers.pos; @@ -33576,17 +34803,17 @@ var ts; return true; } break; - case 143: + case 144: diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.property_declarations_can_only_be_used_in_a_ts_file)); return true; - case 221: + case 223: diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.enum_declarations_can_only_be_used_in_a_ts_file)); return true; - case 175: + case 176: var typeAssertionExpression = node; diagnostics.push(ts.createDiagnosticForNode(typeAssertionExpression.type, ts.Diagnostics.type_assertion_expressions_can_only_be_used_in_a_ts_file)); return true; - case 141: + case 142: if (!options.experimentalDecorators) { diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.Experimental_support_for_decorators_is_a_feature_that_is_subject_to_change_in_a_future_release_Set_the_experimentalDecorators_option_to_remove_this_warning)); } @@ -33633,15 +34860,16 @@ var ts; } }); } - function getDeclarationDiagnosticsForFile(sourceFile, cancellationToken) { + function getDeclarationDiagnosticsWorker(sourceFile, cancellationToken) { return runWithCancellationToken(function () { - if (!ts.isDeclarationFile(sourceFile)) { - var resolver = getDiagnosticsProducingTypeChecker().getEmitResolver(sourceFile, cancellationToken); - var writeFile_1 = function () { }; - return ts.getDeclarationDiagnostics(getEmitHost(writeFile_1), resolver, sourceFile); - } + var resolver = getDiagnosticsProducingTypeChecker().getEmitResolver(sourceFile, cancellationToken); + var writeFile = function () { }; + return ts.getDeclarationDiagnostics(getEmitHost(writeFile), resolver, sourceFile); }); } + function getDeclarationDiagnosticsForFile(sourceFile, cancellationToken) { + return ts.isDeclarationFile(sourceFile) ? [] : getDeclarationDiagnosticsWorker(sourceFile, cancellationToken); + } function getOptionsDiagnostics() { var allDiagnostics = []; ts.addRange(allDiagnostics, fileProcessingDiagnostics.getGlobalDiagnostics()); @@ -33657,7 +34885,7 @@ var ts; return ts.getBaseFileName(fileName).indexOf(".") >= 0; } function processRootFile(fileName, isDefaultLib) { - processSourceFile(ts.normalizePath(fileName), isDefaultLib); + processSourceFile(ts.normalizePath(fileName), isDefaultLib, true); } function fileReferenceIsEqualTo(a, b) { return a.fileName === b.fileName; @@ -33688,9 +34916,9 @@ var ts; return; function collectModuleReferences(node, inAmbientModule) { switch (node.kind) { - case 226: - case 225: - case 232: + case 229: + case 228: + case 235: var moduleNameExpr = ts.getExternalModuleName(node); if (!moduleNameExpr || moduleNameExpr.kind !== 9) { break; @@ -33702,7 +34930,7 @@ var ts; (imports || (imports = [])).push(moduleNameExpr); } break; - case 222: + case 224: if (ts.isAmbientModule(node) && (inAmbientModule || node.flags & 2 || ts.isDeclarationFile(file))) { var moduleName = node.name; if (isExternalModuleFile || (inAmbientModule && !ts.isExternalModuleNameRelative(moduleName.text))) { @@ -33726,7 +34954,7 @@ var ts; } } } - function processSourceFile(fileName, isDefaultLib, refFile, refPos, refEnd) { + function processSourceFile(fileName, isDefaultLib, isReference, refFile, refPos, refEnd) { var diagnosticArgument; var diagnostic; if (hasExtension(fileName)) { @@ -33734,7 +34962,7 @@ var ts; diagnostic = ts.Diagnostics.File_0_has_unsupported_extension_The_only_supported_extensions_are_1; diagnosticArgument = [fileName, "'" + supportedExtensions.join("', '") + "'"]; } - else if (!findSourceFile(fileName, ts.toPath(fileName, currentDirectory, getCanonicalFileName), isDefaultLib, refFile, refPos, refEnd)) { + else if (!findSourceFile(fileName, ts.toPath(fileName, currentDirectory, getCanonicalFileName), isDefaultLib, isReference, refFile, refPos, refEnd)) { diagnostic = ts.Diagnostics.File_0_not_found; diagnosticArgument = [fileName]; } @@ -33744,13 +34972,13 @@ var ts; } } else { - var nonTsFile = options.allowNonTsExtensions && findSourceFile(fileName, ts.toPath(fileName, currentDirectory, getCanonicalFileName), isDefaultLib, refFile, refPos, refEnd); + var nonTsFile = options.allowNonTsExtensions && findSourceFile(fileName, ts.toPath(fileName, currentDirectory, getCanonicalFileName), isDefaultLib, isReference, refFile, refPos, refEnd); if (!nonTsFile) { if (options.allowNonTsExtensions) { diagnostic = ts.Diagnostics.File_0_not_found; diagnosticArgument = [fileName]; } - else if (!ts.forEach(supportedExtensions, function (extension) { return findSourceFile(fileName + extension, ts.toPath(fileName + extension, currentDirectory, getCanonicalFileName), isDefaultLib, refFile, refPos, refEnd); })) { + else if (!ts.forEach(supportedExtensions, function (extension) { return findSourceFile(fileName + extension, ts.toPath(fileName + extension, currentDirectory, getCanonicalFileName), isDefaultLib, isReference, refFile, refPos, refEnd); })) { diagnostic = ts.Diagnostics.File_0_not_found; fileName += ".ts"; diagnosticArgument = [fileName]; @@ -33774,12 +35002,15 @@ var ts; fileProcessingDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.File_name_0_differs_from_already_included_file_name_1_only_in_casing, fileName, existingFileName)); } } - function findSourceFile(fileName, path, isDefaultLib, refFile, refPos, refEnd) { + function findSourceFile(fileName, path, isDefaultLib, isReference, refFile, refPos, refEnd) { if (filesByName.contains(path)) { var file_1 = filesByName.get(path); 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) { + file_1.wasReferenced = file_1.wasReferenced || isReference; + } return file_1; } var file = host.getSourceFile(fileName, options.target, function (hostErrorMessage) { @@ -33792,6 +35023,7 @@ var ts; }); filesByName.set(path, file); if (file) { + file.wasReferenced = file.wasReferenced || isReference; file.path = path; if (host.useCaseSensitiveFileNames()) { var existingFile = filesByNameIgnoreCase.get(path); @@ -33805,7 +35037,8 @@ var ts; skipDefaultLib = skipDefaultLib || file.hasNoDefaultLib; var basePath = ts.getDirectoryPath(fileName); if (!options.noResolve) { - processReferencedFiles(file, basePath); + processReferencedFiles(file, basePath, isDefaultLib); + processTypeReferenceDirectives(file); } processImportedModules(file, basePath); if (isDefaultLib) { @@ -33817,12 +35050,64 @@ var ts; } return file; } - function processReferencedFiles(file, basePath) { + function processReferencedFiles(file, basePath, isDefaultLib) { ts.forEach(file.referencedFiles, function (ref) { var referencedFileName = resolveTripleslashReference(ref.fileName, file.fileName); - processSourceFile(referencedFileName, false, file, ref.pos, ref.end); + processSourceFile(referencedFileName, isDefaultLib, true, file, ref.pos, ref.end); }); } + function processTypeReferenceDirectives(file) { + var typeDirectives = ts.map(file.typeReferenceDirectives, function (l) { return l.fileName; }); + var resolutions = resolveTypeReferenceDirectiveNamesWorker(typeDirectives, file.fileName); + for (var i = 0; i < typeDirectives.length; i++) { + var ref = file.typeReferenceDirectives[i]; + var resolvedTypeReferenceDirective = resolutions[i]; + ts.setResolvedTypeReferenceDirective(file, ref.fileName, resolvedTypeReferenceDirective); + processTypeReferenceDirective(ref.fileName, resolvedTypeReferenceDirective, file, ref.pos, ref.end); + } + } + function processTypeReferenceDirective(typeReferenceDirective, resolvedTypeReferenceDirective, refFile, refPos, refEnd) { + var previousResolution = resolvedTypeReferenceDirectives[typeReferenceDirective]; + if (previousResolution && previousResolution.primary) { + return; + } + var saveResolution = true; + if (resolvedTypeReferenceDirective) { + if (resolvedTypeReferenceDirective.primary) { + processSourceFile(resolvedTypeReferenceDirective.resolvedFileName, false, true, refFile, refPos, refEnd); + } + else { + if (previousResolution) { + var otherFileText = host.readFile(resolvedTypeReferenceDirective.resolvedFileName); + if (otherFileText !== getSourceFile(previousResolution.resolvedFileName).text) { + fileProcessingDiagnostics.add(createDiagnostic(refFile, refPos, refEnd, ts.Diagnostics.Conflicting_library_definitions_for_0_found_at_1_and_2_Copy_the_correct_file_to_the_typings_folder_to_resolve_this_conflict, typeReferenceDirective, resolvedTypeReferenceDirective.resolvedFileName, previousResolution.resolvedFileName)); + } + saveResolution = false; + } + else { + processSourceFile(resolvedTypeReferenceDirective.resolvedFileName, false, true, refFile, refPos, refEnd); + } + } + } + else { + fileProcessingDiagnostics.add(createDiagnostic(refFile, refPos, refEnd, ts.Diagnostics.Cannot_find_name_0, typeReferenceDirective)); + } + if (saveResolution) { + resolvedTypeReferenceDirectives[typeReferenceDirective] = resolvedTypeReferenceDirective; + } + } + function createDiagnostic(refFile, refPos, refEnd, message) { + var args = []; + for (var _i = 4; _i < arguments.length; _i++) { + args[_i - 4] = arguments[_i]; + } + if (refFile === undefined || refPos === undefined || refEnd === undefined) { + return ts.createCompilerDiagnostic.apply(void 0, [message].concat(args)); + } + else { + return ts.createFileDiagnostic.apply(void 0, [refFile, refPos, refEnd - refPos, message].concat(args)); + } + } function getCanonicalFileName(fileName) { return host.getCanonicalFileName(fileName); } @@ -33839,7 +35124,7 @@ var ts; !options.noResolve && i < file.imports.length; if (shouldAddFile) { - var importedFile = findSourceFile(resolution.resolvedFileName, ts.toPath(resolution.resolvedFileName, currentDirectory, getCanonicalFileName), false, file, ts.skipTrivia(file.text, file.imports[i].pos), file.imports[i].end); + var importedFile = findSourceFile(resolution.resolvedFileName, ts.toPath(resolution.resolvedFileName, currentDirectory, getCanonicalFileName), false, false, file, ts.skipTrivia(file.text, file.imports[i].pos), file.imports[i].end); if (importedFile && resolution.isExternalLibraryImport) { if (!ts.isExternalModule(importedFile) && importedFile.statements.length) { var start_5 = ts.getTokenPosOfNode(file.imports[i], file); @@ -33859,44 +35144,21 @@ var ts; return; } function computeCommonSourceDirectory(sourceFiles) { - var commonPathComponents; - var failed = ts.forEach(files, function (sourceFile) { - if (ts.isDeclarationFile(sourceFile)) { - return; + var fileNames = []; + for (var _i = 0, sourceFiles_2 = sourceFiles; _i < sourceFiles_2.length; _i++) { + var file = sourceFiles_2[_i]; + if (!file.isDeclarationFile) { + fileNames.push(file.fileName); } - var sourcePathComponents = ts.getNormalizedPathComponents(sourceFile.fileName, currentDirectory); - sourcePathComponents.pop(); - if (!commonPathComponents) { - commonPathComponents = sourcePathComponents; - return; - } - for (var i = 0, n = Math.min(commonPathComponents.length, sourcePathComponents.length); i < n; i++) { - if (getCanonicalFileName(commonPathComponents[i]) !== getCanonicalFileName(sourcePathComponents[i])) { - if (i === 0) { - return true; - } - commonPathComponents.length = i; - break; - } - } - if (sourcePathComponents.length < commonPathComponents.length) { - commonPathComponents.length = sourcePathComponents.length; - } - }); - if (failed) { - return ""; } - if (!commonPathComponents) { - return currentDirectory; - } - return ts.getNormalizedPathFromPathComponents(commonPathComponents); + return computeCommonSourceDirectoryOfFilenames(fileNames, currentDirectory, getCanonicalFileName); } function checkSourceFilesBelongToPath(sourceFiles, rootDirectory) { var allFilesBelongToPath = true; if (sourceFiles) { var absoluteRootDirectoryPath = host.getCanonicalFileName(ts.getNormalizedAbsolutePath(rootDirectory, currentDirectory)); - for (var _i = 0, sourceFiles_2 = sourceFiles; _i < sourceFiles_2.length; _i++) { - var sourceFile = sourceFiles_2[_i]; + for (var _i = 0, sourceFiles_3 = sourceFiles; _i < sourceFiles_3.length; _i++) { + var sourceFile = sourceFiles_3[_i]; if (!ts.isDeclarationFile(sourceFile)) { var absoluteSourceFilePath = host.getCanonicalFileName(ts.getNormalizedAbsolutePath(sourceFile.fileName, currentDirectory)); if (absoluteSourceFilePath.indexOf(absoluteRootDirectoryPath) !== 0) { @@ -33969,6 +35231,17 @@ var ts; programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1, "sourceRoot", "sourceMap")); } } + if (options.declarationDir) { + if (!options.declaration) { + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1, "declarationDir", "declaration")); + } + if (options.out || options.outFile) { + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "declarationDir", options.out ? "out" : "outFile")); + } + } + if (options.lib && options.noLib) { + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "lib", "noLib")); + } var languageVersion = options.target || 0; var outFile = options.outFile || options.out; var firstExternalModuleSourceFile = ts.forEach(files, function (f) { return ts.isExternalModule(f) ? f : undefined; }); @@ -34000,21 +35273,7 @@ var ts; programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Cannot_find_the_common_subdirectory_path_for_the_input_files)); } } - if (options.noEmit) { - if (options.out) { - programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "out")); - } - if (options.outFile) { - programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "outFile")); - } - if (options.outDir) { - programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "outDir")); - } - if (options.declaration) { - programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "declaration")); - } - } - else if (options.allowJs && options.declaration) { + if (!options.noEmit && options.allowJs && options.declaration) { programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "allowJs", "declaration")); } if (options.emitDecoratorMetadata && @@ -34026,10 +35285,10 @@ var ts; } if (!options.noEmit && !options.suppressOutputPathCheck) { var emitHost = getEmitHost(); - var emitFilesSeen = ts.createFileMap(!host.useCaseSensitiveFileNames() ? function (key) { return key.toLocaleLowerCase(); } : undefined); + var emitFilesSeen_1 = ts.createFileMap(!host.useCaseSensitiveFileNames() ? function (key) { return key.toLocaleLowerCase(); } : undefined); ts.forEachExpectedEmitFile(emitHost, function (emitFileNames, sourceFiles, isBundledEmit) { - verifyEmitFilePath(emitFileNames.jsFilePath, emitFilesSeen); - verifyEmitFilePath(emitFileNames.declarationFilePath, emitFilesSeen); + verifyEmitFilePath(emitFileNames.jsFilePath, emitFilesSeen_1); + verifyEmitFilePath(emitFileNames.declarationFilePath, emitFilesSeen_1); }); } function verifyEmitFilePath(emitFileName, emitFilesSeen) { @@ -34067,6 +35326,12 @@ var ts; type: "boolean", description: ts.Diagnostics.Generates_corresponding_d_ts_file }, + { + name: "declarationDir", + type: "string", + isFilePath: true, + paramType: ts.Diagnostics.DIRECTORY + }, { name: "diagnostics", type: "boolean" @@ -34101,13 +35366,12 @@ var ts; "react": 2 }, paramType: ts.Diagnostics.KIND, - description: ts.Diagnostics.Specify_JSX_code_generation_Colon_preserve_or_react, - error: ts.Diagnostics.Argument_for_jsx_must_be_preserve_or_react + description: ts.Diagnostics.Specify_JSX_code_generation_Colon_preserve_or_react }, { name: "reactNamespace", type: "string", - description: ts.Diagnostics.Specifies_the_object_invoked_for_createElement_and_spread_when_targeting_react_JSX_emit + description: ts.Diagnostics.Specify_the_object_invoked_for_createElement_and_spread_when_targeting_react_JSX_emit }, { name: "listFiles", @@ -34121,7 +35385,7 @@ var ts; name: "mapRoot", type: "string", isFilePath: true, - description: ts.Diagnostics.Specifies_the_location_where_debugger_should_locate_map_files_instead_of_generated_locations, + description: ts.Diagnostics.Specify_the_location_where_debugger_should_locate_map_files_instead_of_generated_locations, paramType: ts.Diagnostics.LOCATION }, { @@ -34137,8 +35401,7 @@ var ts; "es2015": ts.ModuleKind.ES2015 }, description: ts.Diagnostics.Specify_module_code_generation_Colon_commonjs_amd_system_umd_or_es2015, - paramType: ts.Diagnostics.KIND, - error: ts.Diagnostics.Argument_for_module_option_must_be_commonjs_amd_system_umd_es2015_or_none + paramType: ts.Diagnostics.KIND }, { name: "newLine", @@ -34146,9 +35409,8 @@ var ts; "crlf": 0, "lf": 1 }, - description: ts.Diagnostics.Specifies_the_end_of_line_sequence_to_be_used_when_emitting_files_Colon_CRLF_dos_or_LF_unix, - paramType: ts.Diagnostics.NEWLINE, - error: ts.Diagnostics.Argument_for_newLine_option_must_be_CRLF_or_LF + description: ts.Diagnostics.Specify_the_end_of_line_sequence_to_be_used_when_emitting_files_Colon_CRLF_dos_or_LF_unix, + paramType: ts.Diagnostics.NEWLINE }, { name: "noEmit", @@ -34169,6 +35431,11 @@ var ts; type: "boolean", description: ts.Diagnostics.Raise_error_on_expressions_and_declarations_with_an_implied_any_type }, + { + name: "noImplicitThis", + type: "boolean", + description: ts.Diagnostics.Raise_error_on_this_expressions_with_an_implied_any_type + }, { name: "noLib", type: "boolean" @@ -34208,7 +35475,6 @@ var ts; }, { name: "pretty", - paramType: ts.Diagnostics.KIND, description: ts.Diagnostics.Stylize_errors_and_messages_using_color_and_context_experimental, type: "boolean" }, @@ -34229,8 +35495,8 @@ var ts; name: "rootDir", type: "string", isFilePath: true, - description: ts.Diagnostics.Specifies_the_root_directory_of_input_files_Use_to_control_the_output_directory_structure_with_outDir, - paramType: ts.Diagnostics.LOCATION + paramType: ts.Diagnostics.LOCATION, + description: ts.Diagnostics.Specify_the_root_directory_of_input_files_Use_to_control_the_output_directory_structure_with_outDir }, { name: "isolatedModules", @@ -34245,7 +35511,7 @@ var ts; name: "sourceRoot", type: "string", isFilePath: true, - description: ts.Diagnostics.Specifies_the_location_where_debugger_should_locate_TypeScript_files_instead_of_source_locations, + description: ts.Diagnostics.Specify_the_location_where_debugger_should_locate_TypeScript_files_instead_of_source_locations, paramType: ts.Diagnostics.LOCATION }, { @@ -34274,9 +35540,8 @@ var ts; "es6": 2, "es2015": 2 }, - description: ts.Diagnostics.Specify_ECMAScript_target_version_Colon_ES3_default_ES5_or_ES2015_experimental, - paramType: ts.Diagnostics.VERSION, - error: ts.Diagnostics.Argument_for_target_option_must_be_ES3_ES5_or_ES2015 + description: ts.Diagnostics.Specify_ECMAScript_target_version_Colon_ES3_default_ES5_or_ES2015, + paramType: ts.Diagnostics.VERSION }, { name: "version", @@ -34307,8 +35572,7 @@ var ts; "node": ts.ModuleResolutionKind.NodeJs, "classic": ts.ModuleResolutionKind.Classic }, - description: ts.Diagnostics.Specifies_module_resolution_strategy_Colon_node_Node_js_or_classic_TypeScript_pre_1_6, - error: ts.Diagnostics.Argument_for_moduleResolution_option_must_be_node_or_classic + description: ts.Diagnostics.Specify_module_resolution_strategy_Colon_node_Node_js_or_classic_TypeScript_pre_1_6 }, { name: "allowUnusedLabels", @@ -34348,14 +35612,41 @@ var ts; }, { name: "rootDirs", - type: "object", + type: "list", isTSConfigOnly: true, - isFilePath: true + element: { + name: "rootDirs", + type: "string", + isFilePath: true + } }, { - name: "traceModuleResolution", + name: "typesSearchPaths", + type: "list", + isTSConfigOnly: true, + element: { + name: "typesSearchPaths", + type: "string", + isFilePath: true + } + }, + { + name: "typesRoot", + type: "string" + }, + { + name: "types", + type: "list", + element: { + name: "types", + type: "string" + }, + description: ts.Diagnostics.Type_declaration_files_to_be_included_in_compilation + }, + { + name: "traceResolution", type: "boolean", - description: ts.Diagnostics.Enable_tracing_of_the_module_resolution_process + description: ts.Diagnostics.Enable_tracing_of_the_name_resolution_process }, { name: "allowJs", @@ -34371,6 +35662,65 @@ var ts; name: "noImplicitUseStrict", type: "boolean", description: ts.Diagnostics.Do_not_emit_use_strict_directives_in_module_output + }, + { + name: "listEmittedFiles", + type: "boolean" + }, + { + name: "lib", + type: "list", + element: { + name: "lib", + type: { + "es5": "lib.es5.d.ts", + "es6": "lib.es2015.d.ts", + "es2015": "lib.es2015.d.ts", + "es7": "lib.es2016.d.ts", + "es2016": "lib.es2016.d.ts", + "dom": "lib.dom.d.ts", + "webworker": "lib.webworker.d.ts", + "scripthost": "lib.scripthost.d.ts", + "es2015.core": "lib.es2015.core.d.ts", + "es2015.collection": "lib.es2015.collection.d.ts", + "es2015.generator": "lib.es2015.generator.d.ts", + "es2015.iterable": "lib.es2015.iterable.d.ts", + "es2015.promise": "lib.es2015.promise.d.ts", + "es2015.proxy": "lib.es2015.proxy.d.ts", + "es2015.reflect": "lib.es2015.reflect.d.ts", + "es2015.symbol": "lib.es2015.symbol.d.ts", + "es2015.symbol.wellknown": "lib.es2015.symbol.wellknown.d.ts", + "es2016.array.include": "lib.es2016.array.include.d.ts" + } + }, + description: ts.Diagnostics.Specify_library_files_to_be_included_in_the_compilation_Colon + }, + { + name: "strictNullChecks", + type: "boolean", + description: ts.Diagnostics.Enable_strict_null_checks + } + ]; + ts.typingOptionDeclarations = [ + { + name: "enableAutoDiscovery", + type: "boolean" + }, + { + name: "include", + type: "list", + element: { + name: "include", + type: "string" + } + }, + { + name: "exclude", + type: "list", + element: { + name: "exclude", + type: "string" + } } ]; var optionNameMapCache; @@ -34390,6 +35740,37 @@ var ts; return optionNameMapCache; } ts.getOptionNameMap = getOptionNameMap; + function createCompilerDiagnosticForInvalidCustomType(opt) { + var namesOfType = []; + ts.forEachKey(opt.type, function (key) { + namesOfType.push(" '" + key + "'"); + }); + return ts.createCompilerDiagnostic(ts.Diagnostics.Argument_for_0_option_must_be_Colon_1, "--" + opt.name, namesOfType); + } + ts.createCompilerDiagnosticForInvalidCustomType = createCompilerDiagnosticForInvalidCustomType; + function parseCustomTypeOption(opt, value, errors) { + var key = (value || "").trim().toLowerCase(); + var map = opt.type; + if (ts.hasProperty(map, key)) { + return map[key]; + } + else { + errors.push(createCompilerDiagnosticForInvalidCustomType(opt)); + } + } + ts.parseCustomTypeOption = parseCustomTypeOption; + function parseListTypeOption(opt, value, errors) { + var values = (value || "").trim().split(","); + switch (opt.element.type) { + case "number": + return ts.map(values, parseInt); + case "string": + return ts.map(values, function (v) { return v || ""; }); + default: + return ts.filter(ts.map(values, function (v) { return parseCustomTypeOption(opt.element, v, errors); }), function (v) { return !!v; }); + } + } + ts.parseListTypeOption = parseListTypeOption; function parseCommandLine(commandLine, readFile) { var options = {}; var fileNames = []; @@ -34435,16 +35816,14 @@ var ts; options[opt.name] = args[i] || ""; i++; break; - default: - var map_1 = opt.type; - var key = (args[i] || "").toLowerCase(); + case "list": + options[opt.name] = parseListTypeOption(opt, args[i], errors); i++; - if (ts.hasProperty(map_1, key)) { - options[opt.name] = map_1[key]; - } - else { - errors.push(ts.createCompilerDiagnostic(opt.error)); - } + break; + default: + options[opt.name] = parseCustomTypeOption(opt, args[i], errors); + i++; + break; } } } @@ -34533,17 +35912,22 @@ var ts; } function parseJsonConfigFileContent(json, host, basePath, existingOptions, configFileName) { if (existingOptions === void 0) { existingOptions = {}; } - var _a = convertCompilerOptionsFromJson(json["compilerOptions"], basePath, configFileName), optionsFromJsonConfigFile = _a.options, errors = _a.errors; - var options = ts.extend(existingOptions, optionsFromJsonConfigFile); + var errors = []; + var compilerOptions = convertCompilerOptionsFromJsonWorker(json["compilerOptions"], basePath, errors, configFileName); + var options = ts.extend(existingOptions, compilerOptions); + var typingOptions = convertTypingOptionsFromJsonWorker(json["typingOptions"], basePath, errors, configFileName); + options.configFilePath = configFileName; + var fileNames = getFileNames(errors); return { options: options, - fileNames: getFileNames(), + fileNames: fileNames, + typingOptions: typingOptions, errors: errors }; - function getFileNames() { + function getFileNames(errors) { var fileNames = []; if (ts.hasProperty(json, "files")) { - if (json["files"] instanceof Array) { + if (ts.isArray(json["files"])) { fileNames = ts.map(json["files"], function (s) { return ts.combinePaths(basePath, s); }); } else { @@ -34553,7 +35937,7 @@ var ts; else { var filesSeen = {}; var exclude = []; - if (json["exclude"] instanceof Array) { + if (ts.isArray(json["exclude"])) { exclude = json["exclude"]; } else { @@ -34588,85 +35972,88 @@ var ts; } } } + if (ts.hasProperty(json, "excludes") && !ts.hasProperty(json, "exclude")) { + errors.push(ts.createCompilerDiagnostic(ts.Diagnostics.Unknown_option_excludes_Did_you_mean_exclude)); + } return fileNames; } } ts.parseJsonConfigFileContent = parseJsonConfigFileContent; function convertCompilerOptionsFromJson(jsonOptions, basePath, configFileName) { - var options = {}; var errors = []; - if (configFileName && ts.getBaseFileName(configFileName) === "jsconfig.json") { - options.allowJs = true; - } - if (!jsonOptions) { - return { options: options, errors: errors }; - } - var optionNameMap = ts.arrayToMap(ts.optionDeclarations, function (opt) { return opt.name; }); - for (var id in jsonOptions) { - if (ts.hasProperty(optionNameMap, id)) { - var opt = optionNameMap[id]; - var optType = opt.type; - var value = jsonOptions[id]; - var expectedType = typeof optType === "string" ? optType : "string"; - if (typeof value === expectedType) { - if (typeof optType !== "string") { - var key = value.toLowerCase(); - if (ts.hasProperty(optType, key)) { - value = optType[key]; - } - else { - errors.push(ts.createCompilerDiagnostic(opt.error)); - value = 0; - } - } - if (opt.isFilePath) { - switch (typeof value) { - case "string": - value = ts.normalizePath(ts.combinePaths(basePath, value)); - break; - case "object": - var paths = []; - var invalidOptionType = false; - if (!ts.isArray(value)) { - invalidOptionType = true; - } - else { - for (var _i = 0, _a = value; _i < _a.length; _i++) { - var element = _a[_i]; - if (typeof element === "string") { - paths.push(ts.normalizePath(ts.combinePaths(basePath, element))); - } - else { - invalidOptionType = true; - break; - } - } - } - if (invalidOptionType) { - errors.push(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_should_have_array_of_strings_as_a_value, opt.name)); - } - else { - value = paths; - } - break; - } - if (value === "") { - value = "."; - } - } - options[opt.name] = value; - } - else { - errors.push(ts.createCompilerDiagnostic(ts.Diagnostics.Compiler_option_0_requires_a_value_of_type_1, id, expectedType)); - } - } - else { - errors.push(ts.createCompilerDiagnostic(ts.Diagnostics.Unknown_compiler_option_0, id)); - } - } + var options = convertCompilerOptionsFromJsonWorker(jsonOptions, basePath, errors, configFileName); return { options: options, errors: errors }; } ts.convertCompilerOptionsFromJson = convertCompilerOptionsFromJson; + function convertTypingOptionsFromJson(jsonOptions, basePath, configFileName) { + var errors = []; + var options = convertTypingOptionsFromJsonWorker(jsonOptions, basePath, errors, configFileName); + return { options: options, errors: errors }; + } + ts.convertTypingOptionsFromJson = convertTypingOptionsFromJson; + function convertCompilerOptionsFromJsonWorker(jsonOptions, basePath, errors, configFileName) { + var options = ts.getBaseFileName(configFileName) === "jsconfig.json" ? { allowJs: true } : {}; + convertOptionsFromJson(ts.optionDeclarations, jsonOptions, basePath, options, ts.Diagnostics.Unknown_compiler_option_0, errors); + return options; + } + function convertTypingOptionsFromJsonWorker(jsonOptions, basePath, errors, configFileName) { + var options = ts.getBaseFileName(configFileName) === "jsconfig.json" + ? { enableAutoDiscovery: true, include: [], exclude: [] } + : { enableAutoDiscovery: false, include: [], exclude: [] }; + convertOptionsFromJson(ts.typingOptionDeclarations, jsonOptions, basePath, options, ts.Diagnostics.Unknown_typing_option_0, errors); + return options; + } + function convertOptionsFromJson(optionDeclarations, jsonOptions, basePath, defaultOptions, diagnosticMessage, errors) { + if (!jsonOptions) { + return; + } + var optionNameMap = ts.arrayToMap(optionDeclarations, function (opt) { return opt.name; }); + for (var id in jsonOptions) { + if (ts.hasProperty(optionNameMap, id)) { + var opt = optionNameMap[id]; + defaultOptions[opt.name] = convertJsonOption(opt, jsonOptions[id], basePath, errors); + } + else { + errors.push(ts.createCompilerDiagnostic(diagnosticMessage, id)); + } + } + } + function convertJsonOption(opt, value, basePath, errors) { + var optType = opt.type; + var expectedType = typeof optType === "string" ? optType : "string"; + if (optType === "list" && ts.isArray(value)) { + return convertJsonOptionOfListType(opt, value, basePath, errors); + } + else if (typeof value === expectedType) { + if (typeof optType !== "string") { + return convertJsonOptionOfCustomType(opt, value, errors); + } + else { + if (opt.isFilePath) { + value = ts.normalizePath(ts.combinePaths(basePath, value)); + if (value === "") { + value = "."; + } + } + } + return value; + } + else { + errors.push(ts.createCompilerDiagnostic(ts.Diagnostics.Compiler_option_0_requires_a_value_of_type_1, opt.name, expectedType)); + } + } + function convertJsonOptionOfCustomType(opt, value, errors) { + var key = value.toLowerCase(); + if (ts.hasProperty(opt.type, key)) { + return opt.type[key]; + } + else { + errors.push(createCompilerDiagnosticForInvalidCustomType(opt)); + } + } + function convertJsonOptionOfListType(option, values, basePath, errors) { + return ts.filter(ts.map(values, function (v) { return convertJsonOption(option.element, v, basePath, errors); }), function (v) { return !!v; }); + } })(ts || (ts = {})); var ts; (function (ts) { @@ -34677,6 +36064,17 @@ var ts; reportDiagnostic(diagnostic, host); } } + function reportEmittedFiles(files, host) { + if (!files || files.length == 0) { + return; + } + var currentDir = ts.sys.getCurrentDirectory(); + for (var _i = 0, files_4 = files; _i < files_4.length; _i++) { + var file = files_4[_i]; + var filepath = ts.getNormalizedAbsolutePath(file, currentDir); + ts.sys.write("TSFILE: " + filepath + ts.sys.newLine); + } + } function validateLocaleAndSetLanguage(locale, errors) { var matchResult = /^([a-z]+)([_\-]([a-z]+))?$/.exec(locale.toLowerCase()); if (!matchResult) { @@ -34849,9 +36247,6 @@ var ts; function isJSONSupported() { return typeof JSON === "object" && typeof JSON.parse === "function"; } - function isWatchSet(options) { - return options.watch && options.hasOwnProperty("watch"); - } function executeCommandLine(args) { var commandLine = ts.parseCommandLine(args); var configFileName; @@ -34925,14 +36320,13 @@ var ts; printHelp(); return ts.sys.exit(ts.ExitStatus.Success); } - if (isWatchSet(commandLine.options)) { + if (ts.isWatchSet(commandLine.options)) { if (!ts.sys.watchFile) { reportDiagnostic(ts.createCompilerDiagnostic(ts.Diagnostics.The_current_host_does_not_support_the_0_option, "--watch"), undefined); return ts.sys.exit(ts.ExitStatus.DiagnosticsPresent_OutputsSkipped); } if (configFileName) { - var configFilePath = ts.toPath(configFileName, ts.sys.getCurrentDirectory(), ts.createGetCanonicalFileName(ts.sys.useCaseSensitiveFileNames)); - configFileWatcher = ts.sys.watchFile(configFilePath, configFileChanged); + configFileWatcher = ts.sys.watchFile(configFileName, configFileChanged); } if (ts.sys.watchDirectory && configFileName) { var directory = ts.getDirectoryPath(configFileName); @@ -34971,6 +36365,10 @@ var ts; ts.sys.exit(ts.ExitStatus.DiagnosticsPresent_OutputsSkipped); return; } + if (ts.isWatchSet(configParseResult.options) && !ts.sys.watchFile) { + reportDiagnostic(ts.createCompilerDiagnostic(ts.Diagnostics.The_current_host_does_not_support_the_0_option, "--watch"), undefined); + ts.sys.exit(ts.ExitStatus.DiagnosticsPresent_OutputsSkipped); + } return configParseResult; } function performCompilation() { @@ -34995,7 +36393,7 @@ var ts; } cachedExistingFiles = {}; var compileResult = compile(rootFileNames, compilerOptions, compilerHost); - if (!isWatchSet(compilerOptions)) { + if (!ts.isWatchSet(compilerOptions)) { return ts.sys.exit(compileResult.exitStatus); } setCachedProgram(compileResult.program); @@ -35015,17 +36413,16 @@ var ts; } } var sourceFile = hostGetSourceFile(fileName, languageVersion, onError); - if (sourceFile && isWatchSet(compilerOptions)) { - var filePath = ts.toPath(sourceFile.fileName, ts.sys.getCurrentDirectory(), ts.createGetCanonicalFileName(ts.sys.useCaseSensitiveFileNames)); - sourceFile.fileWatcher = ts.sys.watchFile(filePath, function (fileName, removed) { return sourceFileChanged(sourceFile, removed); }); + if (sourceFile && ts.isWatchSet(compilerOptions) && ts.sys.watchFile) { + sourceFile.fileWatcher = ts.sys.watchFile(sourceFile.fileName, function (fileName, removed) { return sourceFileChanged(sourceFile, removed); }); } return sourceFile; } function setCachedProgram(program) { if (cachedProgram) { - var newSourceFiles = program ? program.getSourceFiles() : undefined; + var newSourceFiles_1 = program ? program.getSourceFiles() : undefined; ts.forEach(cachedProgram.getSourceFiles(), function (sourceFile) { - if (!(newSourceFiles && ts.contains(newSourceFiles, sourceFile))) { + if (!(newSourceFiles_1 && ts.contains(newSourceFiles_1, sourceFile))) { if (sourceFile.fileWatcher) { sourceFile.fileWatcher.close(); sourceFile.fileWatcher = undefined; @@ -35131,6 +36528,7 @@ var ts; var emitOutput = program.emit(); diagnostics = diagnostics.concat(emitOutput.diagnostics); reportDiagnostics(ts.sortAndDeduplicateDiagnostics(diagnostics), compilerHost); + reportEmittedFiles(emitOutput.emittedFiles, compilerHost); if (emitOutput.emitSkipped && diagnostics.length > 0) { return ts.ExitStatus.DiagnosticsPresent_OutputsSkipped; } @@ -35163,10 +36561,11 @@ var ts; marginLength = 0; var usageColumn = []; var descriptionColumn = []; - for (var i = 0; i < optsList.length; i++) { + var optionsDescriptionMap = {}; + var _loop_2 = function(i) { var option = optsList[i]; if (!option.description) { - continue; + return "continue"; } var usageText_1 = " "; if (option.shortName) { @@ -35177,8 +36576,24 @@ var ts; usageText_1 += "--" + option.name; usageText_1 += getParamType(option); usageColumn.push(usageText_1); - descriptionColumn.push(getDiagnosticText(option.description)); + var description = void 0; + if (option.name === "lib") { + description = getDiagnosticText(option.description); + var options_1 = []; + var element = option.element; + ts.forEachKey(element.type, function (key) { + options_1.push("'" + key + "'"); + }); + optionsDescriptionMap[description] = options_1; + } + else { + description = getDiagnosticText(option.description); + } + descriptionColumn.push(description); marginLength = Math.max(usageText_1.length, marginLength); + }; + for (var i = 0; i < optsList.length; i++) { + _loop_2(i); } var usageText = " @<" + getDiagnosticText(ts.Diagnostics.file) + ">"; usageColumn.push(usageText); @@ -35187,7 +36602,16 @@ var ts; for (var i = 0; i < usageColumn.length; i++) { var usage = usageColumn[i]; var description = descriptionColumn[i]; + var kindsList = optionsDescriptionMap[description]; output += usage + makePadding(marginLength - usage.length + 2) + description + ts.sys.newLine; + if (kindsList) { + output += makePadding(marginLength + 4); + for (var _i = 0, kindsList_1 = kindsList; _i < kindsList_1.length; _i++) { + var kind = kindsList_1[_i]; + output += kind + " "; + } + output += ts.sys.newLine; + } } ts.sys.write(output); return; @@ -35228,10 +36652,10 @@ var ts; function serializeCompilerOptions(options) { var result = {}; var optionsNameMap = ts.getOptionNameMap().optionNameMap; - for (var name_31 in options) { - if (ts.hasProperty(options, name_31)) { - var value = options[name_31]; - switch (name_31) { + for (var name_34 in options) { + if (ts.hasProperty(options, name_34)) { + var value = options[name_34]; + switch (name_34) { case "init": case "watch": case "version": @@ -35239,17 +36663,17 @@ var ts; case "project": break; default: - var optionDefinition = optionsNameMap[name_31.toLowerCase()]; + var optionDefinition = optionsNameMap[name_34.toLowerCase()]; if (optionDefinition) { if (typeof optionDefinition.type === "string") { - result[name_31] = value; + result[name_34] = value; } else { var typeMap = optionDefinition.type; for (var key in typeMap) { if (ts.hasProperty(typeMap, key)) { if (typeMap[key] === value) - result[name_31] = key; + result[name_34] = key; } } } diff --git a/lib/tsserver.js b/lib/tsserver.js index 8c33f866268..7b671727da5 100644 --- a/lib/tsserver.js +++ b/lib/tsserver.js @@ -267,8 +267,14 @@ var ts; var count = array.length; if (count > 0) { var pos = 0; - var result = arguments.length <= 2 ? array[pos] : initial; - pos++; + var result = void 0; + if (arguments.length <= 2) { + result = array[pos]; + pos++; + } + else { + result = initial; + } while (pos < count) { result = f(result, array[pos]); pos++; @@ -283,8 +289,14 @@ var ts; if (array) { var pos = array.length - 1; if (pos >= 0) { - var result = arguments.length <= 2 ? array[pos] : initial; - pos--; + var result = void 0; + if (arguments.length <= 2) { + result = array[pos]; + pos--; + } + else { + result = initial; + } while (pos >= 0) { result = f(result, array[pos]); pos--; @@ -300,6 +312,14 @@ var ts; return hasOwnProperty.call(map, key); } ts.hasProperty = hasProperty; + function getKeys(map) { + var keys = []; + for (var key in map) { + keys.push(key); + } + return keys; + } + ts.getKeys = getKeys; function getProperty(map, key) { return hasOwnProperty.call(map, key) ? map[key] : undefined; } @@ -713,6 +733,26 @@ var ts; return pathLen > extLen && path.substr(pathLen - extLen, extLen) === extension; } ts.fileExtensionIs = fileExtensionIs; + function ensureScriptKind(fileName, scriptKind) { + return (scriptKind || getScriptKindFromFileName(fileName)) || 3; + } + ts.ensureScriptKind = ensureScriptKind; + function getScriptKindFromFileName(fileName) { + var ext = fileName.substr(fileName.lastIndexOf(".")); + switch (ext.toLowerCase()) { + case ".js": + return 1; + case ".jsx": + return 2; + case ".ts": + return 3; + case ".tsx": + return 4; + default: + return 0; + } + } + ts.getScriptKindFromFileName = getScriptKindFromFileName; ts.supportedTypeScriptExtensions = [".ts", ".tsx", ".d.ts"]; ts.supportedJavascriptExtensions = [".js", ".jsx"]; var allSupportedExtensions = ts.supportedTypeScriptExtensions.concat(ts.supportedJavascriptExtensions); @@ -946,6 +986,7 @@ var ts; var _fs = require("fs"); var _path = require("path"); var _os = require("os"); + var _crypto = require("crypto"); function createPollingWatchedFileSet(interval, chunkSize) { if (interval === void 0) { interval = 2500; } if (chunkSize === void 0) { chunkSize = 30; } @@ -960,13 +1001,13 @@ var ts; if (!watchedFile) { return; } - _fs.stat(watchedFile.filePath, function (err, stats) { + _fs.stat(watchedFile.fileName, function (err, stats) { if (err) { - watchedFile.callback(watchedFile.filePath); + watchedFile.callback(watchedFile.fileName); } else if (watchedFile.mtime.getTime() !== stats.mtime.getTime()) { - watchedFile.mtime = getModifiedTime(watchedFile.filePath); - watchedFile.callback(watchedFile.filePath, watchedFile.mtime.getTime() === 0); + watchedFile.mtime = getModifiedTime(watchedFile.fileName); + watchedFile.callback(watchedFile.fileName, watchedFile.mtime.getTime() === 0); } }); } @@ -989,11 +1030,11 @@ var ts; nextFileToCheck = nextToCheck; }, interval); } - function addFile(filePath, callback) { + function addFile(fileName, callback) { var file = { - filePath: filePath, + fileName: fileName, callback: callback, - mtime: getModifiedTime(filePath) + mtime: getModifiedTime(fileName) }; watchedFiles.push(file); if (watchedFiles.length === 1) { @@ -1013,67 +1054,67 @@ var ts; }; } function createWatchedFileSet() { - var dirWatchers = ts.createFileMap(); - var fileWatcherCallbacks = ts.createFileMap(); + var dirWatchers = {}; + var fileWatcherCallbacks = {}; return { addFile: addFile, removeFile: removeFile }; - function reduceDirWatcherRefCountForFile(filePath) { - var dirPath = ts.getDirectoryPath(filePath); - if (dirWatchers.contains(dirPath)) { - var watcher = dirWatchers.get(dirPath); + function reduceDirWatcherRefCountForFile(fileName) { + var dirName = ts.getDirectoryPath(fileName); + if (ts.hasProperty(dirWatchers, dirName)) { + var watcher = dirWatchers[dirName]; watcher.referenceCount -= 1; if (watcher.referenceCount <= 0) { watcher.close(); - dirWatchers.remove(dirPath); + delete dirWatchers[dirName]; } } } function addDirWatcher(dirPath) { - if (dirWatchers.contains(dirPath)) { - var watcher_1 = dirWatchers.get(dirPath); + if (ts.hasProperty(dirWatchers, dirPath)) { + var watcher_1 = dirWatchers[dirPath]; watcher_1.referenceCount += 1; return; } var watcher = _fs.watch(dirPath, { persistent: true }, function (eventName, relativeFileName) { return fileEventHandler(eventName, relativeFileName, dirPath); }); watcher.referenceCount = 1; - dirWatchers.set(dirPath, watcher); + dirWatchers[dirPath] = watcher; return; } function addFileWatcherCallback(filePath, callback) { - if (fileWatcherCallbacks.contains(filePath)) { - fileWatcherCallbacks.get(filePath).push(callback); + if (ts.hasProperty(fileWatcherCallbacks, filePath)) { + fileWatcherCallbacks[filePath].push(callback); } else { - fileWatcherCallbacks.set(filePath, [callback]); + fileWatcherCallbacks[filePath] = [callback]; } } - function addFile(filePath, callback) { - addFileWatcherCallback(filePath, callback); - addDirWatcher(ts.getDirectoryPath(filePath)); - return { filePath: filePath, callback: callback }; + function addFile(fileName, callback) { + addFileWatcherCallback(fileName, callback); + addDirWatcher(ts.getDirectoryPath(fileName)); + return { fileName: fileName, callback: callback }; } function removeFile(watchedFile) { - removeFileWatcherCallback(watchedFile.filePath, watchedFile.callback); - reduceDirWatcherRefCountForFile(watchedFile.filePath); + removeFileWatcherCallback(watchedFile.fileName, watchedFile.callback); + reduceDirWatcherRefCountForFile(watchedFile.fileName); } function removeFileWatcherCallback(filePath, callback) { - if (fileWatcherCallbacks.contains(filePath)) { - var newCallbacks = ts.copyListRemovingItem(callback, fileWatcherCallbacks.get(filePath)); + if (ts.hasProperty(fileWatcherCallbacks, filePath)) { + var newCallbacks = ts.copyListRemovingItem(callback, fileWatcherCallbacks[filePath]); if (newCallbacks.length === 0) { - fileWatcherCallbacks.remove(filePath); + delete fileWatcherCallbacks[filePath]; } else { - fileWatcherCallbacks.set(filePath, newCallbacks); + fileWatcherCallbacks[filePath] = newCallbacks; } } } function fileEventHandler(eventName, relativeFileName, baseDirPath) { - var filePath = typeof relativeFileName !== "string" + var fileName = typeof relativeFileName !== "string" ? undefined - : ts.toPath(relativeFileName, baseDirPath, ts.createGetCanonicalFileName(ts.sys.useCaseSensitiveFileNames)); - if ((eventName === "change" || eventName === "rename") && fileWatcherCallbacks.contains(filePath)) { - for (var _i = 0, _a = fileWatcherCallbacks.get(filePath); _i < _a.length; _i++) { + : ts.getNormalizedAbsolutePath(relativeFileName, baseDirPath); + if ((eventName === "change" || eventName === "rename") && ts.hasProperty(fileWatcherCallbacks, fileName)) { + for (var _i = 0, _a = fileWatcherCallbacks[fileName]; _i < _a.length; _i++) { var fileCallback = _a[_i]; - fileCallback(filePath); + fileCallback(fileName); } } } @@ -1154,6 +1195,9 @@ var ts; var directories = []; for (var _i = 0, files_2 = files; _i < files_2.length; _i++) { var current = files_2[_i]; + if (current === "." || current === "..") { + continue; + } var name_3 = ts.combinePaths(path, current); if (!ts.contains(exclude, getCanonicalPath(name_3))) { var stat = _fs.statSync(name_3); @@ -1182,14 +1226,14 @@ var ts; }, readFile: readFile, writeFile: writeFile, - watchFile: function (filePath, callback) { + watchFile: function (fileName, callback) { var watchSet = isNode4OrLater() ? watchedFileSet : pollingWatchedFileSet; - var watchedFile = watchSet.addFile(filePath, callback); + var watchedFile = watchSet.addFile(fileName, callback); return { close: function () { return watchSet.removeFile(watchedFile); } }; }, - watchDirectory: function (path, callback, recursive) { + watchDirectory: function (directoryName, callback, recursive) { var options; if (isNode4OrLater() && (process.platform === "win32" || process.platform === "darwin")) { options = { persistent: true, recursive: !!recursive }; @@ -1197,9 +1241,9 @@ var ts; else { options = { persistent: true }; } - return _fs.watch(path, options, function (eventName, relativeFileName) { + return _fs.watch(directoryName, options, function (eventName, relativeFileName) { if (eventName === "rename") { - callback(!relativeFileName ? relativeFileName : ts.normalizePath(ts.combinePaths(path, relativeFileName))); + callback(!relativeFileName ? relativeFileName : ts.normalizePath(ts.combinePaths(directoryName, relativeFileName))); } ; }); @@ -1221,6 +1265,19 @@ var ts; return process.cwd(); }, readDirectory: readDirectory, + getModifiedTime: function (path) { + try { + return _fs.statSync(path).mtime; + } + catch (e) { + return undefined; + } + }, + createHash: function (data) { + var hash = _crypto.createHash("md5"); + hash.update(data); + return hash.digest("hex"); + }, getMemoryUsage: function () { if (global.gc) { global.gc(); @@ -1482,6 +1539,9 @@ var ts; Async_functions_are_only_available_when_targeting_ECMAScript_6_and_higher: { code: 1311, category: ts.DiagnosticCategory.Error, key: "Async_functions_are_only_available_when_targeting_ECMAScript_6_and_higher_1311", message: "Async functions are only available when targeting ECMAScript 6 and higher." }, can_only_be_used_in_an_object_literal_property_inside_a_destructuring_assignment: { code: 1312, category: ts.DiagnosticCategory.Error, key: "can_only_be_used_in_an_object_literal_property_inside_a_destructuring_assignment_1312", message: "'=' can only be used in an object literal property inside a destructuring assignment." }, The_body_of_an_if_statement_cannot_be_the_empty_statement: { code: 1313, category: ts.DiagnosticCategory.Error, key: "The_body_of_an_if_statement_cannot_be_the_empty_statement_1313", message: "The body of an 'if' statement cannot be the empty statement." }, + Global_module_exports_may_only_appear_in_module_files: { code: 1314, category: ts.DiagnosticCategory.Error, key: "Global_module_exports_may_only_appear_in_module_files_1314", message: "Global module exports may only appear in module files." }, + Global_module_exports_may_only_appear_in_declaration_files: { code: 1315, category: ts.DiagnosticCategory.Error, key: "Global_module_exports_may_only_appear_in_declaration_files_1315", message: "Global module exports may only appear in declaration files." }, + Global_module_exports_may_only_appear_at_top_level: { code: 1316, category: ts.DiagnosticCategory.Error, key: "Global_module_exports_may_only_appear_at_top_level_1316", message: "Global module exports may only appear at top level." }, Duplicate_identifier_0: { code: 2300, category: ts.DiagnosticCategory.Error, key: "Duplicate_identifier_0_2300", message: "Duplicate identifier '{0}'." }, Initializer_of_instance_member_variable_0_cannot_reference_identifier_1_declared_in_the_constructor: { code: 2301, category: ts.DiagnosticCategory.Error, key: "Initializer_of_instance_member_variable_0_cannot_reference_identifier_1_declared_in_the_constructor_2301", message: "Initializer of instance member variable '{0}' cannot reference identifier '{1}' declared in the constructor." }, Static_members_cannot_reference_class_type_parameters: { code: 2302, category: ts.DiagnosticCategory.Error, key: "Static_members_cannot_reference_class_type_parameters_2302", message: "Static members cannot reference class type parameters." }, @@ -1533,7 +1593,7 @@ var ts; Cannot_invoke_an_expression_whose_type_lacks_a_call_signature: { code: 2349, category: ts.DiagnosticCategory.Error, key: "Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_2349", message: "Cannot invoke an expression whose type lacks a call signature." }, Only_a_void_function_can_be_called_with_the_new_keyword: { code: 2350, category: ts.DiagnosticCategory.Error, key: "Only_a_void_function_can_be_called_with_the_new_keyword_2350", message: "Only a void function can be called with the 'new' keyword." }, Cannot_use_new_with_an_expression_whose_type_lacks_a_call_or_construct_signature: { code: 2351, category: ts.DiagnosticCategory.Error, key: "Cannot_use_new_with_an_expression_whose_type_lacks_a_call_or_construct_signature_2351", message: "Cannot use 'new' with an expression whose type lacks a call or construct signature." }, - Neither_type_0_nor_type_1_is_assignable_to_the_other: { code: 2352, category: ts.DiagnosticCategory.Error, key: "Neither_type_0_nor_type_1_is_assignable_to_the_other_2352", message: "Neither type '{0}' nor type '{1}' is assignable to the other." }, + Type_0_cannot_be_converted_to_type_1: { code: 2352, category: ts.DiagnosticCategory.Error, key: "Type_0_cannot_be_converted_to_type_1_2352", message: "Type '{0}' cannot be converted to type '{1}'." }, Object_literal_may_only_specify_known_properties_and_0_does_not_exist_in_type_1: { code: 2353, category: ts.DiagnosticCategory.Error, key: "Object_literal_may_only_specify_known_properties_and_0_does_not_exist_in_type_1_2353", message: "Object literal may only specify known properties, and '{0}' does not exist in type '{1}'." }, No_best_common_type_exists_among_return_expressions: { code: 2354, category: ts.DiagnosticCategory.Error, key: "No_best_common_type_exists_among_return_expressions_2354", message: "No best common type exists among return expressions." }, A_function_whose_declared_type_is_neither_void_nor_any_must_return_a_value: { code: 2355, category: ts.DiagnosticCategory.Error, key: "A_function_whose_declared_type_is_neither_void_nor_any_must_return_a_value_2355", message: "A function whose declared type is neither 'void' nor 'any' must return a value." }, @@ -1547,6 +1607,7 @@ var ts; The_right_hand_side_of_an_arithmetic_operation_must_be_of_type_any_number_or_an_enum_type: { code: 2363, category: ts.DiagnosticCategory.Error, key: "The_right_hand_side_of_an_arithmetic_operation_must_be_of_type_any_number_or_an_enum_type_2363", message: "The right-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type." }, Invalid_left_hand_side_of_assignment_expression: { code: 2364, category: ts.DiagnosticCategory.Error, key: "Invalid_left_hand_side_of_assignment_expression_2364", message: "Invalid left-hand side of assignment expression." }, Operator_0_cannot_be_applied_to_types_1_and_2: { code: 2365, category: ts.DiagnosticCategory.Error, key: "Operator_0_cannot_be_applied_to_types_1_and_2_2365", message: "Operator '{0}' cannot be applied to types '{1}' and '{2}'." }, + Function_lacks_ending_return_statement_and_return_type_does_not_include_undefined: { code: 2366, category: ts.DiagnosticCategory.Error, key: "Function_lacks_ending_return_statement_and_return_type_does_not_include_undefined_2366", message: "Function lacks ending return statement and return type does not include 'undefined'." }, Type_parameter_name_cannot_be_0: { code: 2368, category: ts.DiagnosticCategory.Error, key: "Type_parameter_name_cannot_be_0_2368", message: "Type parameter name cannot be '{0}'" }, A_parameter_property_is_only_allowed_in_a_constructor_implementation: { code: 2369, category: ts.DiagnosticCategory.Error, key: "A_parameter_property_is_only_allowed_in_a_constructor_implementation_2369", message: "A parameter property is only allowed in a constructor implementation." }, A_rest_parameter_must_be_of_an_array_type: { code: 2370, category: ts.DiagnosticCategory.Error, key: "A_rest_parameter_must_be_of_an_array_type_2370", message: "A rest parameter must be of an array type." }, @@ -1627,6 +1688,7 @@ var ts; Cannot_redeclare_block_scoped_variable_0: { code: 2451, category: ts.DiagnosticCategory.Error, key: "Cannot_redeclare_block_scoped_variable_0_2451", message: "Cannot redeclare block-scoped variable '{0}'." }, An_enum_member_cannot_have_a_numeric_name: { code: 2452, category: ts.DiagnosticCategory.Error, key: "An_enum_member_cannot_have_a_numeric_name_2452", message: "An enum member cannot have a numeric name." }, The_type_argument_for_type_parameter_0_cannot_be_inferred_from_the_usage_Consider_specifying_the_type_arguments_explicitly: { code: 2453, category: ts.DiagnosticCategory.Error, key: "The_type_argument_for_type_parameter_0_cannot_be_inferred_from_the_usage_Consider_specifying_the_typ_2453", message: "The type argument for type parameter '{0}' cannot be inferred from the usage. Consider specifying the type arguments explicitly." }, + Variable_0_is_used_before_being_assigned: { code: 2454, category: ts.DiagnosticCategory.Error, key: "Variable_0_is_used_before_being_assigned_2454", message: "Variable '{0}' is used before being assigned." }, Type_argument_candidate_1_is_not_a_valid_type_argument_because_it_is_not_a_supertype_of_candidate_0: { code: 2455, category: ts.DiagnosticCategory.Error, key: "Type_argument_candidate_1_is_not_a_valid_type_argument_because_it_is_not_a_supertype_of_candidate_0_2455", message: "Type argument candidate '{1}' is not a valid type argument because it is not a supertype of candidate '{0}'." }, Type_alias_0_circularly_references_itself: { code: 2456, category: ts.DiagnosticCategory.Error, key: "Type_alias_0_circularly_references_itself_2456", message: "Type alias '{0}' circularly references itself." }, Type_alias_name_cannot_be_0: { code: 2457, category: ts.DiagnosticCategory.Error, key: "Type_alias_name_cannot_be_0_2457", message: "Type alias name cannot be '{0}'" }, @@ -1701,6 +1763,7 @@ var ts; A_module_cannot_have_multiple_default_exports: { code: 2528, category: ts.DiagnosticCategory.Error, key: "A_module_cannot_have_multiple_default_exports_2528", message: "A module cannot have multiple default exports." }, Duplicate_identifier_0_Compiler_reserves_name_1_in_top_level_scope_of_a_module_containing_async_functions: { code: 2529, category: ts.DiagnosticCategory.Error, key: "Duplicate_identifier_0_Compiler_reserves_name_1_in_top_level_scope_of_a_module_containing_async_func_2529", message: "Duplicate identifier '{0}'. Compiler reserves name '{1}' in top level scope of a module containing async functions." }, Property_0_is_incompatible_with_index_signature: { code: 2530, category: ts.DiagnosticCategory.Error, key: "Property_0_is_incompatible_with_index_signature_2530", message: "Property '{0}' is incompatible with index signature." }, + Object_is_possibly_null_or_undefined: { code: 2531, category: ts.DiagnosticCategory.Error, key: "Object_is_possibly_null_or_undefined_2531", message: "Object is possibly 'null' or 'undefined'." }, JSX_element_attributes_type_0_may_not_be_a_union_type: { code: 2600, category: ts.DiagnosticCategory.Error, key: "JSX_element_attributes_type_0_may_not_be_a_union_type_2600", message: "JSX element attributes type '{0}' may not be a union type." }, The_return_type_of_a_JSX_element_constructor_must_return_an_object_type: { code: 2601, category: ts.DiagnosticCategory.Error, key: "The_return_type_of_a_JSX_element_constructor_must_return_an_object_type_2601", message: "The return type of a JSX element constructor must return an object type." }, JSX_element_implicitly_has_type_any_because_the_global_type_JSX_Element_does_not_exist: { code: 2602, category: ts.DiagnosticCategory.Error, key: "JSX_element_implicitly_has_type_any_because_the_global_type_JSX_Element_does_not_exist_2602", message: "JSX element implicitly has type 'any' because the global type 'JSX.Element' does not exist." }, @@ -1736,6 +1799,15 @@ var ts; Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration: { code: 2674, category: ts.DiagnosticCategory.Error, key: "Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration_2674", message: "Constructor of class '{0}' is protected and only accessible within the class declaration." }, Cannot_extend_a_class_0_Class_constructor_is_marked_as_private: { code: 2675, category: ts.DiagnosticCategory.Error, key: "Cannot_extend_a_class_0_Class_constructor_is_marked_as_private_2675", message: "Cannot extend a class '{0}'. Class constructor is marked as private." }, Accessors_must_both_be_abstract_or_non_abstract: { code: 2676, category: ts.DiagnosticCategory.Error, key: "Accessors_must_both_be_abstract_or_non_abstract_2676", message: "Accessors must both be abstract or non-abstract." }, + A_type_predicate_s_type_must_be_assignable_to_its_parameter_s_type: { code: 2677, category: ts.DiagnosticCategory.Error, key: "A_type_predicate_s_type_must_be_assignable_to_its_parameter_s_type_2677", message: "A type predicate's type must be assignable to its parameter's type." }, + Type_0_is_not_comparable_to_type_1: { code: 2678, category: ts.DiagnosticCategory.Error, key: "Type_0_is_not_comparable_to_type_1_2678", message: "Type '{0}' is not comparable to type '{1}'." }, + A_function_that_is_called_with_the_new_keyword_cannot_have_a_this_type_that_is_void: { code: 2679, category: ts.DiagnosticCategory.Error, key: "A_function_that_is_called_with_the_new_keyword_cannot_have_a_this_type_that_is_void_2679", message: "A function that is called with the 'new' keyword cannot have a 'this' type that is 'void'." }, + A_this_parameter_must_be_the_first_parameter: { code: 2680, category: ts.DiagnosticCategory.Error, key: "A_this_parameter_must_be_the_first_parameter_2680", message: "A 'this' parameter must be the first parameter." }, + A_constructor_cannot_have_a_this_parameter: { code: 2681, category: ts.DiagnosticCategory.Error, key: "A_constructor_cannot_have_a_this_parameter_2681", message: "A constructor cannot have a 'this' parameter." }, + A_setter_cannot_have_a_this_parameter: { code: 2682, category: ts.DiagnosticCategory.Error, key: "A_setter_cannot_have_a_this_parameter_2682", message: "A setter cannot have a 'this' parameter." }, + this_implicitly_has_type_any_because_it_does_not_have_a_type_annotation: { code: 2683, category: ts.DiagnosticCategory.Error, key: "this_implicitly_has_type_any_because_it_does_not_have_a_type_annotation_2683", message: "'this' implicitly has type 'any' because it does not have a type annotation." }, + The_this_context_of_type_0_is_not_assignable_to_method_s_this_of_type_1: { code: 2684, category: ts.DiagnosticCategory.Error, key: "The_this_context_of_type_0_is_not_assignable_to_method_s_this_of_type_1_2684", message: "The 'this' context of type '{0}' is not assignable to method's 'this' of type '{1}'." }, + The_this_types_of_each_signature_are_incompatible: { code: 2685, category: ts.DiagnosticCategory.Error, key: "The_this_types_of_each_signature_are_incompatible_2685", message: "The 'this' types of each signature are incompatible." }, Import_declaration_0_is_using_private_name_1: { code: 4000, category: ts.DiagnosticCategory.Error, key: "Import_declaration_0_is_using_private_name_1_4000", message: "Import declaration '{0}' is using private name '{1}'." }, Type_parameter_0_of_exported_class_has_or_is_using_private_name_1: { code: 4002, category: ts.DiagnosticCategory.Error, key: "Type_parameter_0_of_exported_class_has_or_is_using_private_name_1_4002", message: "Type parameter '{0}' of exported class has or is using private name '{1}'." }, Type_parameter_0_of_exported_interface_has_or_is_using_private_name_1: { code: 4004, category: ts.DiagnosticCategory.Error, key: "Type_parameter_0_of_exported_interface_has_or_is_using_private_name_1_4004", message: "Type parameter '{0}' of exported interface has or is using private name '{1}'." }, @@ -1806,6 +1878,7 @@ var ts; Parameter_0_of_exported_function_has_or_is_using_private_name_1: { code: 4078, category: ts.DiagnosticCategory.Error, key: "Parameter_0_of_exported_function_has_or_is_using_private_name_1_4078", message: "Parameter '{0}' of exported function has or is using private name '{1}'." }, Exported_type_alias_0_has_or_is_using_private_name_1: { code: 4081, category: ts.DiagnosticCategory.Error, key: "Exported_type_alias_0_has_or_is_using_private_name_1_4081", message: "Exported type alias '{0}' has or is using private name '{1}'." }, Default_export_of_the_module_has_or_is_using_private_name_0: { code: 4082, category: ts.DiagnosticCategory.Error, key: "Default_export_of_the_module_has_or_is_using_private_name_0_4082", message: "Default export of the module has or is using private name '{0}'." }, + Conflicting_library_definitions_for_0_found_at_1_and_2_Copy_the_correct_file_to_the_typings_folder_to_resolve_this_conflict: { code: 4090, category: ts.DiagnosticCategory.Message, key: "Conflicting_library_definitions_for_0_found_at_1_and_2_Copy_the_correct_file_to_the_typings_folder_t_4090", message: "Conflicting library definitions for '{0}' found at '{1}' and '{2}'. Copy the correct file to the 'typings' folder to resolve this conflict." }, The_current_host_does_not_support_the_0_option: { code: 5001, category: ts.DiagnosticCategory.Error, key: "The_current_host_does_not_support_the_0_option_5001", message: "The current host does not support the '{0}' option." }, Cannot_find_the_common_subdirectory_path_for_the_input_files: { code: 5009, category: ts.DiagnosticCategory.Error, key: "Cannot_find_the_common_subdirectory_path_for_the_input_files_5009", message: "Cannot find the common subdirectory path for the input files." }, Cannot_read_file_0_Colon_1: { code: 5012, category: ts.DiagnosticCategory.Error, key: "Cannot_read_file_0_Colon_1_5012", message: "Cannot read file '{0}': {1}" }, @@ -1830,8 +1903,8 @@ 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" }, 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." }, - Specifies_the_location_where_debugger_should_locate_map_files_instead_of_generated_locations: { code: 6003, category: ts.DiagnosticCategory.Message, key: "Specifies_the_location_where_debugger_should_locate_map_files_instead_of_generated_locations_6003", message: "Specifies the location where debugger should locate map files instead of generated locations." }, - Specifies_the_location_where_debugger_should_locate_TypeScript_files_instead_of_source_locations: { code: 6004, category: ts.DiagnosticCategory.Message, key: "Specifies_the_location_where_debugger_should_locate_TypeScript_files_instead_of_source_locations_6004", message: "Specifies the location where debugger should locate TypeScript files instead of source locations." }, + 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." }, + Specify_the_location_where_debugger_should_locate_TypeScript_files_instead_of_source_locations: { code: 6004, category: ts.DiagnosticCategory.Message, key: "Specify_the_location_where_debugger_should_locate_TypeScript_files_instead_of_source_locations_6004", message: "Specify the location where debugger should locate TypeScript files instead of source locations." }, Watch_input_files: { code: 6005, category: ts.DiagnosticCategory.Message, key: "Watch_input_files_6005", message: "Watch input files." }, Redirect_output_structure_to_the_directory: { code: 6006, category: ts.DiagnosticCategory.Message, key: "Redirect_output_structure_to_the_directory_6006", message: "Redirect output structure to the directory." }, Do_not_erase_const_enum_declarations_in_generated_code: { code: 6007, category: ts.DiagnosticCategory.Message, key: "Do_not_erase_const_enum_declarations_in_generated_code_6007", message: "Do not erase const enum declarations in generated code." }, @@ -1839,7 +1912,7 @@ var ts; Do_not_emit_comments_to_output: { code: 6009, category: ts.DiagnosticCategory.Message, key: "Do_not_emit_comments_to_output_6009", message: "Do not emit comments to output." }, Do_not_emit_outputs: { code: 6010, category: ts.DiagnosticCategory.Message, key: "Do_not_emit_outputs_6010", message: "Do not emit outputs." }, Allow_default_imports_from_modules_with_no_default_export_This_does_not_affect_code_emit_just_typechecking: { code: 6011, category: ts.DiagnosticCategory.Message, key: "Allow_default_imports_from_modules_with_no_default_export_This_does_not_affect_code_emit_just_typech_6011", message: "Allow default imports from modules with no default export. This does not affect code emit, just typechecking." }, - Specify_ECMAScript_target_version_Colon_ES3_default_ES5_or_ES2015_experimental: { code: 6015, category: ts.DiagnosticCategory.Message, key: "Specify_ECMAScript_target_version_Colon_ES3_default_ES5_or_ES2015_experimental_6015", message: "Specify ECMAScript target version: 'ES3' (default), 'ES5', or 'ES2015' (experimental)" }, + Specify_ECMAScript_target_version_Colon_ES3_default_ES5_or_ES2015: { code: 6015, category: ts.DiagnosticCategory.Message, key: "Specify_ECMAScript_target_version_Colon_ES3_default_ES5_or_ES2015_6015", message: "Specify ECMAScript target version: 'ES3' (default), 'ES5', or 'ES2015'" }, Specify_module_code_generation_Colon_commonjs_amd_system_umd_or_es2015: { code: 6016, category: ts.DiagnosticCategory.Message, key: "Specify_module_code_generation_Colon_commonjs_amd_system_umd_or_es2015_6016", message: "Specify module code generation: 'commonjs', 'amd', 'system', 'umd' or 'es2015'" }, Print_this_message: { code: 6017, category: ts.DiagnosticCategory.Message, key: "Print_this_message_6017", message: "Print this message." }, Print_the_compiler_s_version: { code: 6019, category: ts.DiagnosticCategory.Message, key: "Print_the_compiler_s_version_6019", message: "Print the compiler's version." }, @@ -1861,8 +1934,7 @@ var ts; Generates_corresponding_map_file: { code: 6043, category: ts.DiagnosticCategory.Message, key: "Generates_corresponding_map_file_6043", message: "Generates corresponding '.map' file." }, Compiler_option_0_expects_an_argument: { code: 6044, category: ts.DiagnosticCategory.Error, key: "Compiler_option_0_expects_an_argument_6044", message: "Compiler option '{0}' expects an argument." }, Unterminated_quoted_string_in_response_file_0: { code: 6045, category: ts.DiagnosticCategory.Error, key: "Unterminated_quoted_string_in_response_file_0_6045", message: "Unterminated quoted string in response file '{0}'." }, - Argument_for_module_option_must_be_commonjs_amd_system_umd_es2015_or_none: { code: 6046, category: ts.DiagnosticCategory.Error, key: "Argument_for_module_option_must_be_commonjs_amd_system_umd_es2015_or_none_6046", message: "Argument for '--module' option must be 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'none'." }, - Argument_for_target_option_must_be_ES3_ES5_or_ES2015: { code: 6047, category: ts.DiagnosticCategory.Error, key: "Argument_for_target_option_must_be_ES3_ES5_or_ES2015_6047", message: "Argument for '--target' option must be 'ES3', 'ES5', or 'ES2015'." }, + Argument_for_0_option_must_be_Colon_1: { code: 6046, category: ts.DiagnosticCategory.Error, key: "Argument_for_0_option_must_be_Colon_1_6046", message: "Argument for '{0}' option must be: {1}" }, Locale_must_be_of_the_form_language_or_language_territory_For_example_0_or_1: { code: 6048, category: ts.DiagnosticCategory.Error, key: "Locale_must_be_of_the_form_language_or_language_territory_For_example_0_or_1_6048", message: "Locale must be of the form or -. For example '{0}' or '{1}'." }, Unsupported_locale_0: { code: 6049, category: ts.DiagnosticCategory.Error, key: "Unsupported_locale_0_6049", message: "Unsupported locale '{0}'." }, Unable_to_open_file_0: { code: 6050, category: ts.DiagnosticCategory.Error, key: "Unable_to_open_file_0_6050", message: "Unable to open file '{0}'." }, @@ -1872,17 +1944,15 @@ var ts; File_0_has_unsupported_extension_The_only_supported_extensions_are_1: { code: 6054, category: ts.DiagnosticCategory.Error, key: "File_0_has_unsupported_extension_The_only_supported_extensions_are_1_6054", message: "File '{0}' has unsupported extension. The only supported extensions are {1}." }, Suppress_noImplicitAny_errors_for_indexing_objects_lacking_index_signatures: { code: 6055, category: ts.DiagnosticCategory.Message, key: "Suppress_noImplicitAny_errors_for_indexing_objects_lacking_index_signatures_6055", message: "Suppress noImplicitAny errors for indexing objects lacking index signatures." }, Do_not_emit_declarations_for_code_that_has_an_internal_annotation: { code: 6056, category: ts.DiagnosticCategory.Message, key: "Do_not_emit_declarations_for_code_that_has_an_internal_annotation_6056", message: "Do not emit declarations for code that has an '@internal' annotation." }, - Specifies_the_root_directory_of_input_files_Use_to_control_the_output_directory_structure_with_outDir: { code: 6058, category: ts.DiagnosticCategory.Message, key: "Specifies_the_root_directory_of_input_files_Use_to_control_the_output_directory_structure_with_outDi_6058", message: "Specifies the root directory of input files. Use to control the output directory structure with --outDir." }, + Specify_the_root_directory_of_input_files_Use_to_control_the_output_directory_structure_with_outDir: { code: 6058, category: ts.DiagnosticCategory.Message, key: "Specify_the_root_directory_of_input_files_Use_to_control_the_output_directory_structure_with_outDir_6058", message: "Specify the root directory of input files. Use to control the output directory structure with --outDir." }, File_0_is_not_under_rootDir_1_rootDir_is_expected_to_contain_all_source_files: { code: 6059, category: ts.DiagnosticCategory.Error, key: "File_0_is_not_under_rootDir_1_rootDir_is_expected_to_contain_all_source_files_6059", message: "File '{0}' is not under 'rootDir' '{1}'. 'rootDir' is expected to contain all source files." }, - Specifies_the_end_of_line_sequence_to_be_used_when_emitting_files_Colon_CRLF_dos_or_LF_unix: { code: 6060, category: ts.DiagnosticCategory.Message, key: "Specifies_the_end_of_line_sequence_to_be_used_when_emitting_files_Colon_CRLF_dos_or_LF_unix_6060", message: "Specifies the end of line sequence to be used when emitting files: 'CRLF' (dos) or 'LF' (unix)." }, + Specify_the_end_of_line_sequence_to_be_used_when_emitting_files_Colon_CRLF_dos_or_LF_unix: { code: 6060, category: ts.DiagnosticCategory.Message, key: "Specify_the_end_of_line_sequence_to_be_used_when_emitting_files_Colon_CRLF_dos_or_LF_unix_6060", message: "Specify the end of line sequence to be used when emitting files: 'CRLF' (dos) or 'LF' (unix)." }, NEWLINE: { code: 6061, category: ts.DiagnosticCategory.Message, key: "NEWLINE_6061", message: "NEWLINE" }, - Argument_for_newLine_option_must_be_CRLF_or_LF: { code: 6062, category: ts.DiagnosticCategory.Error, key: "Argument_for_newLine_option_must_be_CRLF_or_LF_6062", message: "Argument for '--newLine' option must be 'CRLF' or 'LF'." }, - Argument_for_moduleResolution_option_must_be_node_or_classic: { code: 6063, category: ts.DiagnosticCategory.Error, key: "Argument_for_moduleResolution_option_must_be_node_or_classic_6063", message: "Argument for '--moduleResolution' option must be 'node' or 'classic'." }, Option_0_can_only_be_specified_in_tsconfig_json_file: { code: 6064, category: ts.DiagnosticCategory.Error, key: "Option_0_can_only_be_specified_in_tsconfig_json_file_6064", message: "Option '{0}' can only be specified in 'tsconfig.json' file." }, Enables_experimental_support_for_ES7_decorators: { code: 6065, category: ts.DiagnosticCategory.Message, key: "Enables_experimental_support_for_ES7_decorators_6065", message: "Enables experimental support for ES7 decorators." }, Enables_experimental_support_for_emitting_type_metadata_for_decorators: { code: 6066, category: ts.DiagnosticCategory.Message, key: "Enables_experimental_support_for_emitting_type_metadata_for_decorators_6066", message: "Enables experimental support for emitting type metadata for decorators." }, Enables_experimental_support_for_ES7_async_functions: { code: 6068, category: ts.DiagnosticCategory.Message, key: "Enables_experimental_support_for_ES7_async_functions_6068", message: "Enables experimental support for ES7 async functions." }, - Specifies_module_resolution_strategy_Colon_node_Node_js_or_classic_TypeScript_pre_1_6: { code: 6069, category: ts.DiagnosticCategory.Message, key: "Specifies_module_resolution_strategy_Colon_node_Node_js_or_classic_TypeScript_pre_1_6_6069", message: "Specifies module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6)." }, + Specify_module_resolution_strategy_Colon_node_Node_js_or_classic_TypeScript_pre_1_6: { code: 6069, category: ts.DiagnosticCategory.Message, key: "Specify_module_resolution_strategy_Colon_node_Node_js_or_classic_TypeScript_pre_1_6_6069", message: "Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6)." }, Initializes_a_TypeScript_project_and_creates_a_tsconfig_json_file: { code: 6070, category: ts.DiagnosticCategory.Message, key: "Initializes_a_TypeScript_project_and_creates_a_tsconfig_json_file_6070", message: "Initializes a TypeScript project and creates a tsconfig.json file." }, Successfully_created_a_tsconfig_json_file: { code: 6071, category: ts.DiagnosticCategory.Message, key: "Successfully_created_a_tsconfig_json_file_6071", message: "Successfully created a tsconfig.json file." }, Suppress_excess_property_checks_for_object_literals: { code: 6072, category: ts.DiagnosticCategory.Message, key: "Suppress_excess_property_checks_for_object_literals_6072", message: "Suppress excess property checks for object literals." }, @@ -1892,12 +1962,12 @@ var ts; Report_errors_for_fallthrough_cases_in_switch_statement: { code: 6076, category: ts.DiagnosticCategory.Message, key: "Report_errors_for_fallthrough_cases_in_switch_statement_6076", message: "Report errors for fallthrough cases in switch statement." }, Do_not_report_errors_on_unreachable_code: { code: 6077, category: ts.DiagnosticCategory.Message, key: "Do_not_report_errors_on_unreachable_code_6077", message: "Do not report errors on unreachable code." }, Disallow_inconsistently_cased_references_to_the_same_file: { code: 6078, category: ts.DiagnosticCategory.Message, key: "Disallow_inconsistently_cased_references_to_the_same_file_6078", message: "Disallow inconsistently-cased references to the same file." }, + Specify_library_files_to_be_included_in_the_compilation_Colon: { code: 6079, category: ts.DiagnosticCategory.Message, key: "Specify_library_files_to_be_included_in_the_compilation_Colon_6079", message: "Specify library files to be included in the compilation: " }, Specify_JSX_code_generation_Colon_preserve_or_react: { code: 6080, category: ts.DiagnosticCategory.Message, key: "Specify_JSX_code_generation_Colon_preserve_or_react_6080", message: "Specify JSX code generation: 'preserve' or 'react'" }, - Argument_for_jsx_must_be_preserve_or_react: { code: 6081, category: ts.DiagnosticCategory.Message, key: "Argument_for_jsx_must_be_preserve_or_react_6081", message: "Argument for '--jsx' must be 'preserve' or 'react'." }, Only_amd_and_system_modules_are_supported_alongside_0: { code: 6082, category: ts.DiagnosticCategory.Error, key: "Only_amd_and_system_modules_are_supported_alongside_0_6082", message: "Only 'amd' and 'system' modules are supported alongside --{0}." }, Base_directory_to_resolve_non_absolute_module_names: { code: 6083, category: ts.DiagnosticCategory.Message, key: "Base_directory_to_resolve_non_absolute_module_names_6083", message: "Base directory to resolve non-absolute module names." }, - Specifies_the_object_invoked_for_createElement_and_spread_when_targeting_react_JSX_emit: { code: 6084, category: ts.DiagnosticCategory.Message, key: "Specifies_the_object_invoked_for_createElement_and_spread_when_targeting_react_JSX_emit_6084", message: "Specifies the object invoked for createElement and __spread when targeting 'react' JSX emit" }, - Enable_tracing_of_the_module_resolution_process: { code: 6085, category: ts.DiagnosticCategory.Message, key: "Enable_tracing_of_the_module_resolution_process_6085", message: "Enable tracing of the module resolution process." }, + Specify_the_object_invoked_for_createElement_and_spread_when_targeting_react_JSX_emit: { code: 6084, category: ts.DiagnosticCategory.Message, key: "Specify_the_object_invoked_for_createElement_and_spread_when_targeting_react_JSX_emit_6084", message: "Specify the object invoked for createElement and __spread when targeting 'react' JSX emit" }, + Enable_tracing_of_the_name_resolution_process: { code: 6085, category: ts.DiagnosticCategory.Message, key: "Enable_tracing_of_the_name_resolution_process_6085", message: "Enable tracing of the name resolution process." }, Resolving_module_0_from_1: { code: 6086, category: ts.DiagnosticCategory.Message, key: "Resolving_module_0_from_1_6086", message: "======== Resolving module '{0}' from '{1}'. ========" }, Explicitly_specified_module_resolution_kind_Colon_0: { code: 6087, category: ts.DiagnosticCategory.Message, key: "Explicitly_specified_module_resolution_kind_Colon_0_6087", message: "Explicitly specified module resolution kind: '{0}'." }, Module_resolution_kind_is_not_specified_using_0: { code: 6088, category: ts.DiagnosticCategory.Message, key: "Module_resolution_kind_is_not_specified_using_0_6088", message: "Module resolution kind is not specified, using '{0}'." }, @@ -1909,15 +1979,15 @@ var ts; Resolving_module_name_0_relative_to_base_url_1_2: { code: 6094, category: ts.DiagnosticCategory.Message, key: "Resolving_module_name_0_relative_to_base_url_1_2_6094", message: "Resolving module name '{0}' relative to base url '{1}' - '{2}'." }, Loading_module_as_file_Slash_folder_candidate_module_location_0: { code: 6095, category: ts.DiagnosticCategory.Message, key: "Loading_module_as_file_Slash_folder_candidate_module_location_0_6095", message: "Loading module as file / folder, candidate module location '{0}'." }, File_0_does_not_exist: { code: 6096, category: ts.DiagnosticCategory.Message, key: "File_0_does_not_exist_6096", message: "File '{0}' does not exist." }, - File_0_exist_use_it_as_a_module_resolution_result: { code: 6097, category: ts.DiagnosticCategory.Message, key: "File_0_exist_use_it_as_a_module_resolution_result_6097", message: "File '{0}' exist - use it as a module resolution result." }, + File_0_exist_use_it_as_a_name_resolution_result: { code: 6097, category: ts.DiagnosticCategory.Message, key: "File_0_exist_use_it_as_a_name_resolution_result_6097", message: "File '{0}' exist - use it as a name resolution result." }, Loading_module_0_from_node_modules_folder: { code: 6098, category: ts.DiagnosticCategory.Message, key: "Loading_module_0_from_node_modules_folder_6098", message: "Loading module '{0}' from 'node_modules' folder." }, Found_package_json_at_0: { code: 6099, category: ts.DiagnosticCategory.Message, key: "Found_package_json_at_0_6099", message: "Found 'package.json' at '{0}'." }, - package_json_does_not_have_typings_field: { code: 6100, category: ts.DiagnosticCategory.Message, key: "package_json_does_not_have_typings_field_6100", message: "'package.json' does not have 'typings' field." }, - package_json_has_typings_field_0_that_references_1: { code: 6101, category: ts.DiagnosticCategory.Message, key: "package_json_has_typings_field_0_that_references_1_6101", message: "'package.json' has 'typings' field '{0}' that references '{1}'." }, + package_json_does_not_have_types_field: { code: 6100, category: ts.DiagnosticCategory.Message, key: "package_json_does_not_have_types_field_6100", message: "'package.json' does not have 'types' field." }, + package_json_has_0_field_1_that_references_2: { code: 6101, category: ts.DiagnosticCategory.Message, key: "package_json_has_0_field_1_that_references_2_6101", message: "'package.json' has '{0}' field '{1}' that references '{2}'." }, Allow_javascript_files_to_be_compiled: { code: 6102, category: ts.DiagnosticCategory.Message, key: "Allow_javascript_files_to_be_compiled_6102", message: "Allow javascript files to be compiled." }, Option_0_should_have_array_of_strings_as_a_value: { code: 6103, category: ts.DiagnosticCategory.Error, key: "Option_0_should_have_array_of_strings_as_a_value_6103", message: "Option '{0}' should have array of strings as a value." }, Checking_if_0_is_the_longest_matching_prefix_for_1_2: { code: 6104, category: ts.DiagnosticCategory.Message, key: "Checking_if_0_is_the_longest_matching_prefix_for_1_2_6104", message: "Checking if '{0}' is the longest matching prefix for '{1}' - '{2}'." }, - Expected_type_of_typings_field_in_package_json_to_be_string_got_0: { code: 6105, category: ts.DiagnosticCategory.Message, key: "Expected_type_of_typings_field_in_package_json_to_be_string_got_0_6105", message: "Expected type of 'typings' field in 'package.json' to be 'string', got '{0}'." }, + Expected_type_of_0_field_in_package_json_to_be_string_got_1: { code: 6105, category: ts.DiagnosticCategory.Message, key: "Expected_type_of_0_field_in_package_json_to_be_string_got_1_6105", message: "Expected type of '{0}' field in 'package.json' to be 'string', got '{1}'." }, baseUrl_option_is_set_to_0_using_this_value_to_resolve_non_relative_module_name_1: { code: 6106, category: ts.DiagnosticCategory.Message, key: "baseUrl_option_is_set_to_0_using_this_value_to_resolve_non_relative_module_name_1_6106", message: "'baseUrl' option is set to '{0}', using this value to resolve non-relative module name '{1}'" }, rootDirs_option_is_set_using_it_to_resolve_relative_module_name_0: { code: 6107, category: ts.DiagnosticCategory.Message, key: "rootDirs_option_is_set_using_it_to_resolve_relative_module_name_0_6107", message: "'rootDirs' option is set, using it to resolve relative module name '{0}'" }, Longest_matching_prefix_for_0_is_1: { code: 6108, category: ts.DiagnosticCategory.Message, key: "Longest_matching_prefix_for_0_is_1_6108", message: "Longest matching prefix for '{0}' is '{1}'" }, @@ -1925,6 +1995,22 @@ var ts; Trying_other_entries_in_rootDirs: { code: 6110, category: ts.DiagnosticCategory.Message, key: "Trying_other_entries_in_rootDirs_6110", message: "Trying other entries in 'rootDirs'" }, Module_resolution_using_rootDirs_has_failed: { code: 6111, category: ts.DiagnosticCategory.Message, key: "Module_resolution_using_rootDirs_has_failed_6111", message: "Module resolution using 'rootDirs' has failed" }, Do_not_emit_use_strict_directives_in_module_output: { code: 6112, category: ts.DiagnosticCategory.Message, key: "Do_not_emit_use_strict_directives_in_module_output_6112", message: "Do not emit 'use strict' directives in module output." }, + Enable_strict_null_checks: { code: 6113, category: ts.DiagnosticCategory.Message, key: "Enable_strict_null_checks_6113", message: "Enable strict null checks." }, + Unknown_option_excludes_Did_you_mean_exclude: { code: 6114, category: ts.DiagnosticCategory.Error, key: "Unknown_option_excludes_Did_you_mean_exclude_6114", message: "Unknown option 'excludes'. Did you mean 'exclude'?" }, + Raise_error_on_this_expressions_with_an_implied_any_type: { code: 6115, category: ts.DiagnosticCategory.Message, key: "Raise_error_on_this_expressions_with_an_implied_any_type_6115", message: "Raise error on 'this' expressions with an implied 'any' type." }, + Resolving_type_reference_directive_0_containing_file_1_root_directory_2: { code: 6116, category: ts.DiagnosticCategory.Message, key: "Resolving_type_reference_directive_0_containing_file_1_root_directory_2_6116", message: "======== Resolving type reference directive '{0}', containing file '{1}', root directory '{2}'. ========" }, + Resolving_using_primary_search_paths: { code: 6117, category: ts.DiagnosticCategory.Message, key: "Resolving_using_primary_search_paths_6117", message: "Resolving using primary search paths..." }, + Resolving_from_node_modules_folder: { code: 6118, category: ts.DiagnosticCategory.Message, key: "Resolving_from_node_modules_folder_6118", message: "Resolving from node_modules folder..." }, + Type_reference_directive_0_was_successfully_resolved_to_1_primary_Colon_2: { code: 6119, category: ts.DiagnosticCategory.Message, key: "Type_reference_directive_0_was_successfully_resolved_to_1_primary_Colon_2_6119", message: "======== Type reference directive '{0}' was successfully resolved to '{1}', primary: {2}. ========" }, + Type_reference_directive_0_was_not_resolved: { code: 6120, category: ts.DiagnosticCategory.Message, key: "Type_reference_directive_0_was_not_resolved_6120", message: "======== Type reference directive '{0}' was not resolved. ========" }, + Resolving_with_primary_search_path_0: { code: 6121, category: ts.DiagnosticCategory.Message, key: "Resolving_with_primary_search_path_0_6121", message: "Resolving with primary search path '{0}'" }, + Root_directory_cannot_be_determined_skipping_primary_search_paths: { code: 6122, category: ts.DiagnosticCategory.Message, key: "Root_directory_cannot_be_determined_skipping_primary_search_paths_6122", message: "Root directory cannot be determined, skipping primary search paths." }, + Resolving_type_reference_directive_0_containing_file_1_root_directory_not_set: { code: 6123, category: ts.DiagnosticCategory.Message, key: "Resolving_type_reference_directive_0_containing_file_1_root_directory_not_set_6123", message: "======== Resolving type reference directive '{0}', containing file '{1}', root directory not set. ========" }, + Type_declaration_files_to_be_included_in_compilation: { code: 6124, category: ts.DiagnosticCategory.Message, key: "Type_declaration_files_to_be_included_in_compilation_6124", message: "Type declaration files to be included in compilation." }, + Looking_up_in_node_modules_folder_initial_location_0: { code: 6125, category: ts.DiagnosticCategory.Message, key: "Looking_up_in_node_modules_folder_initial_location_0_6125", message: "Looking up in 'node_modules' folder, initial location '{0}'" }, + Containing_file_is_not_specified_and_root_directory_cannot_be_determined_skipping_lookup_in_node_modules_folder: { code: 6126, category: ts.DiagnosticCategory.Message, key: "Containing_file_is_not_specified_and_root_directory_cannot_be_determined_skipping_lookup_in_node_mod_6126", message: "Containing file is not specified and root directory cannot be determined, skipping lookup in 'node_modules' folder." }, + Resolving_type_reference_directive_0_containing_file_not_set_root_directory_1: { code: 6127, category: ts.DiagnosticCategory.Message, key: "Resolving_type_reference_directive_0_containing_file_not_set_root_directory_1_6127", message: "======== Resolving type reference directive '{0}', containing file not set, root directory '{1}'. ========" }, + Resolving_type_reference_directive_0_containing_file_not_set_root_directory_not_set: { code: 6128, category: ts.DiagnosticCategory.Message, key: "Resolving_type_reference_directive_0_containing_file_not_set_root_directory_not_set_6128", message: "======== Resolving type reference directive '{0}', containing file not set, root directory not set. ========" }, 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." }, @@ -1947,6 +2033,7 @@ var ts; Unused_label: { code: 7028, category: ts.DiagnosticCategory.Error, key: "Unused_label_7028", message: "Unused label." }, Fallthrough_case_in_switch: { code: 7029, category: ts.DiagnosticCategory.Error, key: "Fallthrough_case_in_switch_7029", message: "Fallthrough case in switch." }, Not_all_code_paths_return_a_value: { code: 7030, category: ts.DiagnosticCategory.Error, key: "Not_all_code_paths_return_a_value_7030", message: "Not all code paths return a value." }, + Binding_element_0_implicitly_has_an_1_type: { code: 7031, category: ts.DiagnosticCategory.Error, key: "Binding_element_0_implicitly_has_an_1_type_7031", message: "Binding element '{0}' implicitly has an '{1}' type." }, You_cannot_rename_this_element: { code: 8000, category: ts.DiagnosticCategory.Error, key: "You_cannot_rename_this_element_8000", message: "You cannot rename this element." }, You_cannot_rename_elements_that_are_defined_in_the_standard_TypeScript_library: { code: 8001, category: ts.DiagnosticCategory.Error, key: "You_cannot_rename_elements_that_are_defined_in_the_standard_TypeScript_library_8001", message: "You cannot rename elements that are defined in the standard TypeScript library." }, import_can_only_be_used_in_a_ts_file: { code: 8002, category: ts.DiagnosticCategory.Error, key: "import_can_only_be_used_in_a_ts_file_8002", message: "'import ... =' can only be used in a .ts file." }, @@ -1974,7 +2061,8 @@ var ts; An_unary_expression_with_the_0_operator_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_expression_Consider_enclosing_the_expression_in_parentheses: { code: 17006, category: ts.DiagnosticCategory.Error, key: "An_unary_expression_with_the_0_operator_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_ex_17006", message: "An unary expression with the '{0}' operator is not allowed in the left-hand side of an exponentiation expression. Consider enclosing the expression in parentheses." }, A_type_assertion_expression_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_expression_Consider_enclosing_the_expression_in_parentheses: { code: 17007, category: ts.DiagnosticCategory.Error, key: "A_type_assertion_expression_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_expression_Con_17007", message: "A type assertion expression is not allowed in the left-hand side of an exponentiation expression. Consider enclosing the expression in parentheses." }, JSX_element_0_has_no_corresponding_closing_tag: { code: 17008, category: ts.DiagnosticCategory.Error, key: "JSX_element_0_has_no_corresponding_closing_tag_17008", message: "JSX element '{0}' has no corresponding closing tag." }, - super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class: { code: 17009, category: ts.DiagnosticCategory.Error, key: "super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class_17009", message: "'super' must be called before accessing 'this' in the constructor of a derived class." } + super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class: { code: 17009, category: ts.DiagnosticCategory.Error, key: "super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class_17009", message: "'super' must be called before accessing 'this' in the constructor of a derived class." }, + Unknown_typing_option_0: { code: 17010, category: ts.DiagnosticCategory.Error, key: "Unknown_typing_option_0_17010", message: "Unknown typing option '{0}'." } }; })(ts || (ts = {})); var ts; @@ -2007,7 +2095,7 @@ var ts; "false": 84, "finally": 85, "for": 86, - "from": 134, + "from": 135, "function": 87, "get": 123, "if": 88, @@ -2029,7 +2117,7 @@ var ts; "public": 112, "readonly": 127, "require": 128, - "global": 135, + "global": 136, "return": 94, "set": 130, "static": 113, @@ -2043,6 +2131,7 @@ var ts; "try": 100, "type": 133, "typeof": 101, + "undefined": 134, "var": 102, "void": 103, "while": 104, @@ -2050,7 +2139,7 @@ var ts; "yield": 114, "async": 118, "await": 119, - "of": 136, + "of": 137, "{": 15, "}": 16, "(": 17, @@ -3313,7 +3402,7 @@ var ts; break; } } - return token = 240; + return token = 243; } function scanJsxIdentifier() { if (tokenIsIdentifierOrKeyword(token)) { @@ -3467,6 +3556,12 @@ var ts; type: "boolean", description: ts.Diagnostics.Generates_corresponding_d_ts_file }, + { + name: "declarationDir", + type: "string", + isFilePath: true, + paramType: ts.Diagnostics.DIRECTORY + }, { name: "diagnostics", type: "boolean" @@ -3501,13 +3596,12 @@ var ts; "react": 2 }, paramType: ts.Diagnostics.KIND, - description: ts.Diagnostics.Specify_JSX_code_generation_Colon_preserve_or_react, - error: ts.Diagnostics.Argument_for_jsx_must_be_preserve_or_react + description: ts.Diagnostics.Specify_JSX_code_generation_Colon_preserve_or_react }, { name: "reactNamespace", type: "string", - description: ts.Diagnostics.Specifies_the_object_invoked_for_createElement_and_spread_when_targeting_react_JSX_emit + description: ts.Diagnostics.Specify_the_object_invoked_for_createElement_and_spread_when_targeting_react_JSX_emit }, { name: "listFiles", @@ -3521,7 +3615,7 @@ var ts; name: "mapRoot", type: "string", isFilePath: true, - description: ts.Diagnostics.Specifies_the_location_where_debugger_should_locate_map_files_instead_of_generated_locations, + description: ts.Diagnostics.Specify_the_location_where_debugger_should_locate_map_files_instead_of_generated_locations, paramType: ts.Diagnostics.LOCATION }, { @@ -3537,8 +3631,7 @@ var ts; "es2015": ts.ModuleKind.ES2015 }, description: ts.Diagnostics.Specify_module_code_generation_Colon_commonjs_amd_system_umd_or_es2015, - paramType: ts.Diagnostics.KIND, - error: ts.Diagnostics.Argument_for_module_option_must_be_commonjs_amd_system_umd_es2015_or_none + paramType: ts.Diagnostics.KIND }, { name: "newLine", @@ -3546,9 +3639,8 @@ var ts; "crlf": 0, "lf": 1 }, - description: ts.Diagnostics.Specifies_the_end_of_line_sequence_to_be_used_when_emitting_files_Colon_CRLF_dos_or_LF_unix, - paramType: ts.Diagnostics.NEWLINE, - error: ts.Diagnostics.Argument_for_newLine_option_must_be_CRLF_or_LF + description: ts.Diagnostics.Specify_the_end_of_line_sequence_to_be_used_when_emitting_files_Colon_CRLF_dos_or_LF_unix, + paramType: ts.Diagnostics.NEWLINE }, { name: "noEmit", @@ -3569,6 +3661,11 @@ var ts; type: "boolean", description: ts.Diagnostics.Raise_error_on_expressions_and_declarations_with_an_implied_any_type }, + { + name: "noImplicitThis", + type: "boolean", + description: ts.Diagnostics.Raise_error_on_this_expressions_with_an_implied_any_type + }, { name: "noLib", type: "boolean" @@ -3608,7 +3705,6 @@ var ts; }, { name: "pretty", - paramType: ts.Diagnostics.KIND, description: ts.Diagnostics.Stylize_errors_and_messages_using_color_and_context_experimental, type: "boolean" }, @@ -3629,8 +3725,8 @@ var ts; name: "rootDir", type: "string", isFilePath: true, - description: ts.Diagnostics.Specifies_the_root_directory_of_input_files_Use_to_control_the_output_directory_structure_with_outDir, - paramType: ts.Diagnostics.LOCATION + paramType: ts.Diagnostics.LOCATION, + description: ts.Diagnostics.Specify_the_root_directory_of_input_files_Use_to_control_the_output_directory_structure_with_outDir }, { name: "isolatedModules", @@ -3645,7 +3741,7 @@ var ts; name: "sourceRoot", type: "string", isFilePath: true, - description: ts.Diagnostics.Specifies_the_location_where_debugger_should_locate_TypeScript_files_instead_of_source_locations, + description: ts.Diagnostics.Specify_the_location_where_debugger_should_locate_TypeScript_files_instead_of_source_locations, paramType: ts.Diagnostics.LOCATION }, { @@ -3674,9 +3770,8 @@ var ts; "es6": 2, "es2015": 2 }, - description: ts.Diagnostics.Specify_ECMAScript_target_version_Colon_ES3_default_ES5_or_ES2015_experimental, - paramType: ts.Diagnostics.VERSION, - error: ts.Diagnostics.Argument_for_target_option_must_be_ES3_ES5_or_ES2015 + description: ts.Diagnostics.Specify_ECMAScript_target_version_Colon_ES3_default_ES5_or_ES2015, + paramType: ts.Diagnostics.VERSION }, { name: "version", @@ -3707,8 +3802,7 @@ var ts; "node": ts.ModuleResolutionKind.NodeJs, "classic": ts.ModuleResolutionKind.Classic }, - description: ts.Diagnostics.Specifies_module_resolution_strategy_Colon_node_Node_js_or_classic_TypeScript_pre_1_6, - error: ts.Diagnostics.Argument_for_moduleResolution_option_must_be_node_or_classic + description: ts.Diagnostics.Specify_module_resolution_strategy_Colon_node_Node_js_or_classic_TypeScript_pre_1_6 }, { name: "allowUnusedLabels", @@ -3748,14 +3842,41 @@ var ts; }, { name: "rootDirs", - type: "object", + type: "list", isTSConfigOnly: true, - isFilePath: true + element: { + name: "rootDirs", + type: "string", + isFilePath: true + } }, { - name: "traceModuleResolution", + name: "typesSearchPaths", + type: "list", + isTSConfigOnly: true, + element: { + name: "typesSearchPaths", + type: "string", + isFilePath: true + } + }, + { + name: "typesRoot", + type: "string" + }, + { + name: "types", + type: "list", + element: { + name: "types", + type: "string" + }, + description: ts.Diagnostics.Type_declaration_files_to_be_included_in_compilation + }, + { + name: "traceResolution", type: "boolean", - description: ts.Diagnostics.Enable_tracing_of_the_module_resolution_process + description: ts.Diagnostics.Enable_tracing_of_the_name_resolution_process }, { name: "allowJs", @@ -3771,6 +3892,65 @@ var ts; name: "noImplicitUseStrict", type: "boolean", description: ts.Diagnostics.Do_not_emit_use_strict_directives_in_module_output + }, + { + name: "listEmittedFiles", + type: "boolean" + }, + { + name: "lib", + type: "list", + element: { + name: "lib", + type: { + "es5": "lib.es5.d.ts", + "es6": "lib.es2015.d.ts", + "es2015": "lib.es2015.d.ts", + "es7": "lib.es2016.d.ts", + "es2016": "lib.es2016.d.ts", + "dom": "lib.dom.d.ts", + "webworker": "lib.webworker.d.ts", + "scripthost": "lib.scripthost.d.ts", + "es2015.core": "lib.es2015.core.d.ts", + "es2015.collection": "lib.es2015.collection.d.ts", + "es2015.generator": "lib.es2015.generator.d.ts", + "es2015.iterable": "lib.es2015.iterable.d.ts", + "es2015.promise": "lib.es2015.promise.d.ts", + "es2015.proxy": "lib.es2015.proxy.d.ts", + "es2015.reflect": "lib.es2015.reflect.d.ts", + "es2015.symbol": "lib.es2015.symbol.d.ts", + "es2015.symbol.wellknown": "lib.es2015.symbol.wellknown.d.ts", + "es2016.array.include": "lib.es2016.array.include.d.ts" + } + }, + description: ts.Diagnostics.Specify_library_files_to_be_included_in_the_compilation_Colon + }, + { + name: "strictNullChecks", + type: "boolean", + description: ts.Diagnostics.Enable_strict_null_checks + } + ]; + ts.typingOptionDeclarations = [ + { + name: "enableAutoDiscovery", + type: "boolean" + }, + { + name: "include", + type: "list", + element: { + name: "include", + type: "string" + } + }, + { + name: "exclude", + type: "list", + element: { + name: "exclude", + type: "string" + } } ]; var optionNameMapCache; @@ -3790,6 +3970,37 @@ var ts; return optionNameMapCache; } ts.getOptionNameMap = getOptionNameMap; + function createCompilerDiagnosticForInvalidCustomType(opt) { + var namesOfType = []; + ts.forEachKey(opt.type, function (key) { + namesOfType.push(" '" + key + "'"); + }); + return ts.createCompilerDiagnostic(ts.Diagnostics.Argument_for_0_option_must_be_Colon_1, "--" + opt.name, namesOfType); + } + ts.createCompilerDiagnosticForInvalidCustomType = createCompilerDiagnosticForInvalidCustomType; + function parseCustomTypeOption(opt, value, errors) { + var key = (value || "").trim().toLowerCase(); + var map = opt.type; + if (ts.hasProperty(map, key)) { + return map[key]; + } + else { + errors.push(createCompilerDiagnosticForInvalidCustomType(opt)); + } + } + ts.parseCustomTypeOption = parseCustomTypeOption; + function parseListTypeOption(opt, value, errors) { + var values = (value || "").trim().split(","); + switch (opt.element.type) { + case "number": + return ts.map(values, parseInt); + case "string": + return ts.map(values, function (v) { return v || ""; }); + default: + return ts.filter(ts.map(values, function (v) { return parseCustomTypeOption(opt.element, v, errors); }), function (v) { return !!v; }); + } + } + ts.parseListTypeOption = parseListTypeOption; function parseCommandLine(commandLine, readFile) { var options = {}; var fileNames = []; @@ -3835,16 +4046,14 @@ var ts; options[opt.name] = args[i] || ""; i++; break; - default: - var map_1 = opt.type; - var key = (args[i] || "").toLowerCase(); + case "list": + options[opt.name] = parseListTypeOption(opt, args[i], errors); i++; - if (ts.hasProperty(map_1, key)) { - options[opt.name] = map_1[key]; - } - else { - errors.push(ts.createCompilerDiagnostic(opt.error)); - } + break; + default: + options[opt.name] = parseCustomTypeOption(opt, args[i], errors); + i++; + break; } } } @@ -3933,17 +4142,22 @@ var ts; } function parseJsonConfigFileContent(json, host, basePath, existingOptions, configFileName) { if (existingOptions === void 0) { existingOptions = {}; } - var _a = convertCompilerOptionsFromJson(json["compilerOptions"], basePath, configFileName), optionsFromJsonConfigFile = _a.options, errors = _a.errors; - var options = ts.extend(existingOptions, optionsFromJsonConfigFile); + var errors = []; + var compilerOptions = convertCompilerOptionsFromJsonWorker(json["compilerOptions"], basePath, errors, configFileName); + var options = ts.extend(existingOptions, compilerOptions); + var typingOptions = convertTypingOptionsFromJsonWorker(json["typingOptions"], basePath, errors, configFileName); + options.configFilePath = configFileName; + var fileNames = getFileNames(errors); return { options: options, - fileNames: getFileNames(), + fileNames: fileNames, + typingOptions: typingOptions, errors: errors }; - function getFileNames() { + function getFileNames(errors) { var fileNames = []; if (ts.hasProperty(json, "files")) { - if (json["files"] instanceof Array) { + if (ts.isArray(json["files"])) { fileNames = ts.map(json["files"], function (s) { return ts.combinePaths(basePath, s); }); } else { @@ -3953,7 +4167,7 @@ var ts; else { var filesSeen = {}; var exclude = []; - if (json["exclude"] instanceof Array) { + if (ts.isArray(json["exclude"])) { exclude = json["exclude"]; } else { @@ -3988,85 +4202,88 @@ var ts; } } } + if (ts.hasProperty(json, "excludes") && !ts.hasProperty(json, "exclude")) { + errors.push(ts.createCompilerDiagnostic(ts.Diagnostics.Unknown_option_excludes_Did_you_mean_exclude)); + } return fileNames; } } ts.parseJsonConfigFileContent = parseJsonConfigFileContent; function convertCompilerOptionsFromJson(jsonOptions, basePath, configFileName) { - var options = {}; var errors = []; - if (configFileName && ts.getBaseFileName(configFileName) === "jsconfig.json") { - options.allowJs = true; - } - if (!jsonOptions) { - return { options: options, errors: errors }; - } - var optionNameMap = ts.arrayToMap(ts.optionDeclarations, function (opt) { return opt.name; }); - for (var id in jsonOptions) { - if (ts.hasProperty(optionNameMap, id)) { - var opt = optionNameMap[id]; - var optType = opt.type; - var value = jsonOptions[id]; - var expectedType = typeof optType === "string" ? optType : "string"; - if (typeof value === expectedType) { - if (typeof optType !== "string") { - var key = value.toLowerCase(); - if (ts.hasProperty(optType, key)) { - value = optType[key]; - } - else { - errors.push(ts.createCompilerDiagnostic(opt.error)); - value = 0; - } - } - if (opt.isFilePath) { - switch (typeof value) { - case "string": - value = ts.normalizePath(ts.combinePaths(basePath, value)); - break; - case "object": - var paths = []; - var invalidOptionType = false; - if (!ts.isArray(value)) { - invalidOptionType = true; - } - else { - for (var _i = 0, _a = value; _i < _a.length; _i++) { - var element = _a[_i]; - if (typeof element === "string") { - paths.push(ts.normalizePath(ts.combinePaths(basePath, element))); - } - else { - invalidOptionType = true; - break; - } - } - } - if (invalidOptionType) { - errors.push(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_should_have_array_of_strings_as_a_value, opt.name)); - } - else { - value = paths; - } - break; - } - if (value === "") { - value = "."; - } - } - options[opt.name] = value; - } - else { - errors.push(ts.createCompilerDiagnostic(ts.Diagnostics.Compiler_option_0_requires_a_value_of_type_1, id, expectedType)); - } - } - else { - errors.push(ts.createCompilerDiagnostic(ts.Diagnostics.Unknown_compiler_option_0, id)); - } - } + var options = convertCompilerOptionsFromJsonWorker(jsonOptions, basePath, errors, configFileName); return { options: options, errors: errors }; } ts.convertCompilerOptionsFromJson = convertCompilerOptionsFromJson; + function convertTypingOptionsFromJson(jsonOptions, basePath, configFileName) { + var errors = []; + var options = convertTypingOptionsFromJsonWorker(jsonOptions, basePath, errors, configFileName); + return { options: options, errors: errors }; + } + ts.convertTypingOptionsFromJson = convertTypingOptionsFromJson; + function convertCompilerOptionsFromJsonWorker(jsonOptions, basePath, errors, configFileName) { + var options = ts.getBaseFileName(configFileName) === "jsconfig.json" ? { allowJs: true } : {}; + convertOptionsFromJson(ts.optionDeclarations, jsonOptions, basePath, options, ts.Diagnostics.Unknown_compiler_option_0, errors); + return options; + } + function convertTypingOptionsFromJsonWorker(jsonOptions, basePath, errors, configFileName) { + var options = ts.getBaseFileName(configFileName) === "jsconfig.json" + ? { enableAutoDiscovery: true, include: [], exclude: [] } + : { enableAutoDiscovery: false, include: [], exclude: [] }; + convertOptionsFromJson(ts.typingOptionDeclarations, jsonOptions, basePath, options, ts.Diagnostics.Unknown_typing_option_0, errors); + return options; + } + function convertOptionsFromJson(optionDeclarations, jsonOptions, basePath, defaultOptions, diagnosticMessage, errors) { + if (!jsonOptions) { + return; + } + var optionNameMap = ts.arrayToMap(optionDeclarations, function (opt) { return opt.name; }); + for (var id in jsonOptions) { + if (ts.hasProperty(optionNameMap, id)) { + var opt = optionNameMap[id]; + defaultOptions[opt.name] = convertJsonOption(opt, jsonOptions[id], basePath, errors); + } + else { + errors.push(ts.createCompilerDiagnostic(diagnosticMessage, id)); + } + } + } + function convertJsonOption(opt, value, basePath, errors) { + var optType = opt.type; + var expectedType = typeof optType === "string" ? optType : "string"; + if (optType === "list" && ts.isArray(value)) { + return convertJsonOptionOfListType(opt, value, basePath, errors); + } + else if (typeof value === expectedType) { + if (typeof optType !== "string") { + return convertJsonOptionOfCustomType(opt, value, errors); + } + else { + if (opt.isFilePath) { + value = ts.normalizePath(ts.combinePaths(basePath, value)); + if (value === "") { + value = "."; + } + } + } + return value; + } + else { + errors.push(ts.createCompilerDiagnostic(ts.Diagnostics.Compiler_option_0_requires_a_value_of_type_1, opt.name, expectedType)); + } + } + function convertJsonOptionOfCustomType(opt, value, errors) { + var key = value.toLowerCase(); + if (ts.hasProperty(opt.type, key)) { + return opt.type[key]; + } + else { + errors.push(createCompilerDiagnosticForInvalidCustomType(opt)); + } + } + function convertJsonOptionOfListType(option, values, basePath, errors) { + return ts.filter(ts.map(values, function (v) { return convertJsonOption(option.element, v, basePath, errors); }), function (v) { return !!v; }); + } })(ts || (ts = {})); var ts; (function (ts) { @@ -4148,6 +4365,38 @@ var ts; sourceFile.resolvedModules[moduleNameText] = resolvedModule; } ts.setResolvedModule = setResolvedModule; + function setResolvedTypeReferenceDirective(sourceFile, typeReferenceDirectiveName, resolvedTypeReferenceDirective) { + if (!sourceFile.resolvedTypeReferenceDirectiveNames) { + sourceFile.resolvedTypeReferenceDirectiveNames = {}; + } + sourceFile.resolvedTypeReferenceDirectiveNames[typeReferenceDirectiveName] = resolvedTypeReferenceDirective; + } + ts.setResolvedTypeReferenceDirective = setResolvedTypeReferenceDirective; + function moduleResolutionIsEqualTo(oldResolution, newResolution) { + return oldResolution.resolvedFileName === newResolution.resolvedFileName && oldResolution.isExternalLibraryImport === newResolution.isExternalLibraryImport; + } + ts.moduleResolutionIsEqualTo = moduleResolutionIsEqualTo; + function typeDirectiveIsEqualTo(oldResolution, newResolution) { + return oldResolution.resolvedFileName === newResolution.resolvedFileName && oldResolution.primary === newResolution.primary; + } + ts.typeDirectiveIsEqualTo = typeDirectiveIsEqualTo; + function hasChangesInResolutions(names, newResolutions, oldResolutions, comparer) { + if (names.length !== newResolutions.length) { + return false; + } + for (var i = 0; i < names.length; i++) { + var newResolution = newResolutions[i]; + var oldResolution = oldResolutions && ts.hasProperty(oldResolutions, names[i]) ? oldResolutions[names[i]] : undefined; + var changed = oldResolution + ? !newResolution || !comparer(oldResolution, newResolution) + : newResolution; + if (changed) { + return true; + } + } + return false; + } + ts.hasChangesInResolutions = hasChangesInResolutions; function containsParseError(node) { aggregateChildData(node); return (node.flags & 268435456) !== 0; @@ -4164,7 +4413,7 @@ var ts; } } function getSourceFileOfNode(node) { - while (node && node.kind !== 252) { + while (node && node.kind !== 255) { node = node.parent; } return node; @@ -4172,11 +4421,11 @@ var ts; ts.getSourceFileOfNode = getSourceFileOfNode; function isStatementWithLocals(node) { switch (node.kind) { - case 196: - case 224: - case 203: - case 204: + case 198: + case 226: case 205: + case 206: + case 207: return true; } return false; @@ -4197,6 +4446,25 @@ var ts; return node.pos; } ts.getStartPosOfNode = getStartPosOfNode; + function getEndLinePosition(line, sourceFile) { + ts.Debug.assert(line >= 0); + var lineStarts = ts.getLineStarts(sourceFile); + var lineIndex = line; + var sourceText = sourceFile.text; + if (lineIndex + 1 === lineStarts.length) { + return sourceText.length - 1; + } + else { + var start = lineStarts[lineIndex]; + var pos = lineStarts[lineIndex + 1] - 1; + ts.Debug.assert(ts.isLineBreak(sourceText.charCodeAt(pos))); + while (start <= pos && ts.isLineBreak(sourceText.charCodeAt(pos))) { + pos--; + } + return pos; + } + } + ts.getEndLinePosition = getEndLinePosition; function nodeIsMissing(node) { if (!node) { return true; @@ -4261,13 +4529,13 @@ var ts; } ts.isBlockOrCatchScoped = isBlockOrCatchScoped; function isAmbientModule(node) { - return node && node.kind === 222 && + return node && node.kind === 224 && (node.name.kind === 9 || isGlobalScopeAugmentation(node)); } ts.isAmbientModule = isAmbientModule; function isBlockScopedContainerTopLevel(node) { - return node.kind === 252 || - node.kind === 222 || + return node.kind === 255 || + node.kind === 224 || isFunctionLike(node) || isFunctionBlock(node); } @@ -4281,10 +4549,10 @@ var ts; return false; } switch (node.parent.kind) { - case 252: - return isExternalModule(node.parent); - case 223: - return isAmbientModule(node.parent.parent) && !isExternalModule(node.parent.parent.parent); + case 255: + return ts.isExternalModule(node.parent); + case 225: + return isAmbientModule(node.parent.parent) && !ts.isExternalModule(node.parent.parent.parent); } return false; } @@ -4296,15 +4564,15 @@ var ts; return current; } switch (current.kind) { - case 252: + case 255: + case 226: + case 251: case 224: - case 248: - case 222: - case 203: - case 204: case 205: + case 206: + case 207: return current; - case 196: + case 198: if (!isFunctionLike(current.parent)) { return current; } @@ -4315,9 +4583,9 @@ var ts; ts.getEnclosingBlockScopeContainer = getEnclosingBlockScopeContainer; function isCatchClauseVariableDeclaration(declaration) { return declaration && - declaration.kind === 215 && + declaration.kind === 217 && declaration.parent && - declaration.parent.kind === 248; + declaration.parent.kind === 251; } ts.isCatchClauseVariableDeclaration = isCatchClauseVariableDeclaration; function declarationNameToString(name) { @@ -4350,31 +4618,44 @@ var ts; return ts.createTextSpanFromBounds(start, scanner.getTextPos()); } ts.getSpanOfTokenAtPosition = getSpanOfTokenAtPosition; + function getErrorSpanForArrowFunction(sourceFile, node) { + var pos = ts.skipTrivia(sourceFile.text, node.pos); + if (node.body && node.body.kind === 198) { + var startLine = ts.getLineAndCharacterOfPosition(sourceFile, node.body.pos).line; + var endLine = ts.getLineAndCharacterOfPosition(sourceFile, node.body.end).line; + if (startLine < endLine) { + return ts.createTextSpan(pos, getEndLinePosition(startLine, sourceFile) - pos + 1); + } + } + return ts.createTextSpanFromBounds(pos, node.end); + } function getErrorSpanForNode(sourceFile, node) { var errorNode = node; switch (node.kind) { - case 252: + case 255: var pos_1 = ts.skipTrivia(sourceFile.text, 0, false); if (pos_1 === sourceFile.text.length) { return ts.createTextSpan(0, 0); } return getSpanOfTokenAtPosition(sourceFile, pos_1); - case 215: - case 167: - case 218: - case 190: - case 219: - case 222: - case 221: - case 251: case 217: - case 177: - case 145: - case 147: - case 148: + case 168: case 220: + case 191: + case 221: + case 224: + case 223: + case 254: + case 219: + case 178: + case 146: + case 148: + case 149: + case 222: errorNode = node.name; break; + case 179: + return getErrorSpanForArrowFunction(sourceFile, node); } if (errorNode === undefined) { return getSpanOfTokenAtPosition(sourceFile, node.pos); @@ -4385,10 +4666,6 @@ var ts; return ts.createTextSpanFromBounds(pos, errorNode.end); } ts.getErrorSpanForNode = getErrorSpanForNode; - function isExternalModule(file) { - return file.externalModuleIndicator !== undefined; - } - ts.isExternalModule = isExternalModule; function isExternalOrCommonJsModule(file) { return (file.externalModuleIndicator || file.commonJsModuleIndicator) !== undefined; } @@ -4398,11 +4675,11 @@ var ts; } ts.isDeclarationFile = isDeclarationFile; function isConstEnumDeclaration(node) { - return node.kind === 221 && isConst(node); + return node.kind === 223 && isConst(node); } ts.isConstEnumDeclaration = isConstEnumDeclaration; function walkUpBindingElementsAndPatterns(node) { - while (node && (node.kind === 167 || isBindingPattern(node))) { + while (node && (node.kind === 168 || isBindingPattern(node))) { node = node.parent; } return node; @@ -4410,14 +4687,14 @@ var ts; function getCombinedNodeFlags(node) { node = walkUpBindingElementsAndPatterns(node); var flags = node.flags; - if (node.kind === 215) { + if (node.kind === 217) { node = node.parent; } - if (node && node.kind === 216) { + if (node && node.kind === 218) { flags |= node.flags; node = node.parent; } - if (node && node.kind === 197) { + if (node && node.kind === 199) { flags |= node.flags; } return flags; @@ -4432,11 +4709,11 @@ var ts; } ts.isLet = isLet; function isSuperCallExpression(n) { - return n.kind === 172 && n.expression.kind === 95; + return n.kind === 173 && n.expression.kind === 95; } ts.isSuperCallExpression = isSuperCallExpression; function isPrologueDirective(node) { - return node.kind === 199 && node.expression.kind === 9; + return node.kind === 201 && node.expression.kind === 9; } ts.isPrologueDirective = isPrologueDirective; function getLeadingCommentRangesOfNode(node, sourceFileOfNode) { @@ -4452,7 +4729,7 @@ var ts; } ts.getJsDocComments = getJsDocComments; function getJsDocCommentsFromText(node, text) { - var commentRanges = (node.kind === 140 || node.kind === 139) ? + var commentRanges = (node.kind === 141 || node.kind === 140) ? ts.concatenate(ts.getTrailingCommentRanges(text, node.pos), ts.getLeadingCommentRanges(text, node.pos)) : getLeadingCommentRangesOfNodeFromText(node, text); return ts.filter(commentRanges, isJsDocComment); @@ -4464,9 +4741,10 @@ var ts; } ts.getJsDocCommentsFromText = getJsDocCommentsFromText; ts.fullTripleSlashReferencePathRegEx = /^(\/\/\/\s*/; + ts.fullTripleSlashReferenceTypeReferenceDirectiveRegEx = /^(\/\/\/\s*/; ts.fullTripleSlashAMDReferencePathRegEx = /^(\/\/\/\s*/; function isTypeNode(node) { - if (152 <= node.kind && node.kind <= 164) { + if (153 <= node.kind && node.kind <= 165) { return true; } switch (node.kind) { @@ -4475,58 +4753,59 @@ var ts; case 131: case 120: case 132: + case 134: return true; case 103: - return node.parent.kind !== 181; - case 192: + return node.parent.kind !== 182; + case 193: return !isExpressionWithTypeArgumentsInClassExtendsClause(node); case 69: - if (node.parent.kind === 137 && node.parent.right === node) { + if (node.parent.kind === 138 && node.parent.right === node) { node = node.parent; } - else if (node.parent.kind === 170 && node.parent.name === node) { + else if (node.parent.kind === 171 && node.parent.name === node) { node = node.parent; } - ts.Debug.assert(node.kind === 69 || node.kind === 137 || node.kind === 170, "'node' was expected to be a qualified name, identifier or property access in 'isTypeNode'."); - case 137: - case 170: + ts.Debug.assert(node.kind === 69 || node.kind === 138 || node.kind === 171, "'node' was expected to be a qualified name, identifier or property access in 'isTypeNode'."); + case 138: + case 171: case 97: var parent_1 = node.parent; - if (parent_1.kind === 156) { + if (parent_1.kind === 157) { return false; } - if (152 <= parent_1.kind && parent_1.kind <= 164) { + if (153 <= parent_1.kind && parent_1.kind <= 165) { return true; } switch (parent_1.kind) { - case 192: + case 193: return !isExpressionWithTypeArgumentsInClassExtendsClause(parent_1); - case 139: - return node === parent_1.constraint; - case 143: - case 142: case 140: - case 215: - return node === parent_1.type; + return node === parent_1.constraint; + case 144: + case 143: + case 141: case 217: - case 177: + return node === parent_1.type; + case 219: case 178: + case 179: + case 147: case 146: case 145: - case 144: - case 147: case 148: - return node === parent_1.type; case 149: + return node === parent_1.type; case 150: case 151: + case 152: return node === parent_1.type; - case 175: + case 176: return node === parent_1.type; - case 172: case 173: - return parent_1.typeArguments && ts.indexOf(parent_1.typeArguments, node) >= 0; case 174: + return parent_1.typeArguments && ts.indexOf(parent_1.typeArguments, node) >= 0; + case 175: return false; } } @@ -4537,23 +4816,23 @@ var ts; return traverse(body); function traverse(node) { switch (node.kind) { - case 208: + case 210: return visitor(node); - case 224: - case 196: - case 200: - case 201: + case 226: + case 198: case 202: case 203: case 204: case 205: - case 209: - case 210: - case 245: - case 246: + case 206: + case 207: case 211: - case 213: + case 212: case 248: + case 249: + case 213: + case 215: + case 251: return ts.forEachChild(node, traverse); } } @@ -4563,23 +4842,23 @@ var ts; return traverse(body); function traverse(node) { switch (node.kind) { - case 188: + case 189: visitor(node); var operand = node.expression; if (operand) { traverse(operand); } + case 223: case 221: - case 219: + case 224: case 222: case 220: - case 218: - case 190: + case 191: return; default: if (isFunctionLike(node)) { var name_5 = node.name; - if (name_5 && name_5.kind === 138) { + if (name_5 && name_5.kind === 139) { traverse(name_5.expression); return; } @@ -4594,14 +4873,14 @@ var ts; function isVariableLike(node) { if (node) { switch (node.kind) { - case 167: - case 251: - case 140: - case 249: + case 168: + case 254: + case 141: + case 252: + case 144: case 143: - case 142: - case 250: - case 215: + case 253: + case 217: return true; } } @@ -4609,11 +4888,11 @@ var ts; } ts.isVariableLike = isVariableLike; function isAccessor(node) { - return node && (node.kind === 147 || node.kind === 148); + return node && (node.kind === 148 || node.kind === 149); } ts.isAccessor = isAccessor; function isClassLike(node) { - return node && (node.kind === 218 || node.kind === 190); + return node && (node.kind === 220 || node.kind === 191); } ts.isClassLike = isClassLike; function isFunctionLike(node) { @@ -4622,32 +4901,32 @@ var ts; ts.isFunctionLike = isFunctionLike; function isFunctionLikeKind(kind) { switch (kind) { - case 146: - case 177: - case 217: - case 178: - case 145: - case 144: case 147: + case 178: + case 219: + case 179: + case 146: + case 145: case 148: case 149: case 150: case 151: - case 154: + case 152: case 155: + case 156: return true; } } ts.isFunctionLikeKind = isFunctionLikeKind; function introducesArgumentsExoticObject(node) { switch (node.kind) { - case 145: - case 144: case 146: + case 145: case 147: case 148: - case 217: - case 177: + case 149: + case 219: + case 178: return true; } return false; @@ -4655,24 +4934,24 @@ var ts; ts.introducesArgumentsExoticObject = introducesArgumentsExoticObject; function isIterationStatement(node, lookInLabeledStatements) { switch (node.kind) { + case 205: + case 206: + case 207: case 203: case 204: - case 205: - case 201: - case 202: return true; - case 211: + case 213: return lookInLabeledStatements && isIterationStatement(node.statement, lookInLabeledStatements); } return false; } ts.isIterationStatement = isIterationStatement; function isFunctionBlock(node) { - return node && node.kind === 196 && isFunctionLike(node.parent); + return node && node.kind === 198 && isFunctionLike(node.parent); } ts.isFunctionBlock = isFunctionBlock; function isObjectLiteralMethod(node) { - return node && node.kind === 145 && node.parent.kind === 169; + return node && node.kind === 146 && node.parent.kind === 170; } ts.isObjectLiteralMethod = isObjectLiteralMethod; function isIdentifierTypePredicate(predicate) { @@ -4708,39 +4987,39 @@ var ts; return undefined; } switch (node.kind) { - case 138: + case 139: if (isClassLike(node.parent.parent)) { return node; } node = node.parent; break; - case 141: - if (node.parent.kind === 140 && isClassElement(node.parent.parent)) { + case 142: + if (node.parent.kind === 141 && isClassElement(node.parent.parent)) { node = node.parent.parent; } else if (isClassElement(node.parent)) { node = node.parent; } break; - case 178: + case 179: if (!includeArrowFunctions) { continue; } - case 217: - case 177: - case 222: - case 143: - case 142: - case 145: + case 219: + case 178: + case 224: case 144: + case 143: case 146: + case 145: case 147: case 148: case 149: case 150: case 151: - case 221: - case 252: + case 152: + case 223: + case 255: return node; } } @@ -4753,25 +5032,25 @@ var ts; return node; } switch (node.kind) { - case 138: + case 139: node = node.parent; break; - case 217: - case 177: + case 219: case 178: + case 179: if (!stopOnFunctions) { continue; } - case 143: - case 142: - case 145: case 144: + case 143: case 146: + case 145: case 147: case 148: + case 149: return node; - case 141: - if (node.parent.kind === 140 && isClassElement(node.parent.parent)) { + case 142: + if (node.parent.kind === 141 && isClassElement(node.parent.parent)) { node = node.parent.parent; } else if (isClassElement(node.parent)) { @@ -4783,20 +5062,20 @@ var ts; } ts.getSuperContainer = getSuperContainer; function isSuperPropertyOrElementAccess(node) { - return (node.kind === 170 - || node.kind === 171) + return (node.kind === 171 + || node.kind === 172) && node.expression.kind === 95; } ts.isSuperPropertyOrElementAccess = isSuperPropertyOrElementAccess; function getEntityNameFromTypeNode(node) { if (node) { switch (node.kind) { - case 153: + case 154: return node.typeName; - case 192: + case 193: return node.expression; case 69: - case 137: + case 138: return node; } } @@ -4804,7 +5083,7 @@ var ts; } ts.getEntityNameFromTypeNode = getEntityNameFromTypeNode; function getInvokedExpression(node) { - if (node.kind === 174) { + if (node.kind === 175) { return node.tag; } return node.expression; @@ -4812,21 +5091,21 @@ var ts; ts.getInvokedExpression = getInvokedExpression; function nodeCanBeDecorated(node) { switch (node.kind) { - case 218: + case 220: return true; - case 143: - return node.parent.kind === 218; - case 147: + case 144: + return node.parent.kind === 220; case 148: - case 145: + case 149: + case 146: return node.body !== undefined - && node.parent.kind === 218; - case 140: + && node.parent.kind === 220; + case 141: return node.parent.body !== undefined - && (node.parent.kind === 146 - || node.parent.kind === 145 - || node.parent.kind === 148) - && node.parent.parent.kind === 218; + && (node.parent.kind === 147 + || node.parent.kind === 146 + || node.parent.kind === 149) + && node.parent.parent.kind === 220; } return false; } @@ -4837,13 +5116,23 @@ var ts; } ts.nodeIsDecorated = nodeIsDecorated; function isPropertyAccessExpression(node) { - return node.kind === 170; + return node.kind === 171; } ts.isPropertyAccessExpression = isPropertyAccessExpression; function isElementAccessExpression(node) { - return node.kind === 171; + return node.kind === 172; } ts.isElementAccessExpression = isElementAccessExpression; + function isJSXTagName(node) { + var parent = node.parent; + if (parent.kind === 242 || + parent.kind === 241 || + parent.kind === 244) { + return parent.tagName === node; + } + return false; + } + ts.isJSXTagName = isJSXTagName; function isExpression(node) { switch (node.kind) { case 95: @@ -4851,42 +5140,43 @@ var ts; case 99: case 84: case 10: - case 168: case 169: case 170: case 171: case 172: case 173: case 174: - case 193: case 175: + case 194: case 176: + case 195: case 177: - case 190: case 178: - case 181: + case 191: case 179: + case 182: case 180: - case 183: + case 181: case 184: case 185: case 186: - case 189: case 187: - case 11: - case 191: - case 237: - case 238: + case 190: case 188: - case 182: + case 11: + case 192: + case 240: + case 241: + case 189: + case 183: return true; - case 137: - while (node.parent.kind === 137) { + case 138: + while (node.parent.kind === 138) { node = node.parent; } - return node.parent.kind === 156; + return node.parent.kind === 157 || isJSXTagName(node); case 69: - if (node.parent.kind === 156) { + if (node.parent.kind === 157 || isJSXTagName(node)) { return true; } case 8: @@ -4894,47 +5184,47 @@ var ts; case 97: var parent_2 = node.parent; switch (parent_2.kind) { - case 215: - case 140: + case 217: + case 141: + case 144: case 143: - case 142: - case 251: - case 249: - case 167: + case 254: + case 252: + case 168: return parent_2.initializer === node; - case 199: - case 200: case 201: case 202: - case 208: - case 209: - case 210: - case 245: - case 212: - case 210: - return parent_2.expression === node; case 203: + case 204: + case 210: + case 211: + case 212: + case 248: + case 214: + case 212: + return parent_2.expression === node; + case 205: var forStatement = parent_2; - return (forStatement.initializer === node && forStatement.initializer.kind !== 216) || + return (forStatement.initializer === node && forStatement.initializer.kind !== 218) || forStatement.condition === node || forStatement.incrementor === node; - case 204: - case 205: + case 206: + case 207: var forInStatement = parent_2; - return (forInStatement.initializer === node && forInStatement.initializer.kind !== 216) || + return (forInStatement.initializer === node && forInStatement.initializer.kind !== 218) || forInStatement.expression === node; - case 175: - case 193: - return node === parent_2.expression; + case 176: case 194: return node === parent_2.expression; - case 138: + case 196: return node === parent_2.expression; - case 141: - case 244: - case 243: + case 139: + return node === parent_2.expression; + case 142: + case 247: + case 246: return true; - case 192: + case 193: return parent_2.expression === node && isExpressionWithTypeArgumentsInClassExtendsClause(parent_2); default: if (isExpression(parent_2)) { @@ -4956,7 +5246,7 @@ var ts; } ts.isInstantiatedModule = isInstantiatedModule; function isExternalModuleImportEqualsDeclaration(node) { - return node.kind === 225 && node.moduleReference.kind === 236; + return node.kind === 228 && node.moduleReference.kind === 239; } ts.isExternalModuleImportEqualsDeclaration = isExternalModuleImportEqualsDeclaration; function getExternalModuleImportEqualsDeclarationExpression(node) { @@ -4965,7 +5255,7 @@ var ts; } ts.getExternalModuleImportEqualsDeclarationExpression = getExternalModuleImportEqualsDeclarationExpression; function isInternalModuleImportEqualsDeclaration(node) { - return node.kind === 225 && node.moduleReference.kind !== 236; + return node.kind === 228 && node.moduleReference.kind !== 239; } ts.isInternalModuleImportEqualsDeclaration = isInternalModuleImportEqualsDeclaration; function isSourceFileJavaScript(file) { @@ -4977,7 +5267,7 @@ var ts; } ts.isInJavaScriptFile = isInJavaScriptFile; function isRequireCall(expression, checkArgumentIsStringLiteral) { - var isRequire = expression.kind === 172 && + var isRequire = expression.kind === 173 && expression.expression.kind === 69 && expression.expression.text === "require" && expression.arguments.length === 1; @@ -4985,11 +5275,14 @@ var ts; } ts.isRequireCall = isRequireCall; function getSpecialPropertyAssignmentKind(expression) { - if (expression.kind !== 185) { + if (!isInJavaScriptFile(expression)) { + return 0; + } + if (expression.kind !== 186) { return 0; } var expr = expression; - if (expr.operatorToken.kind !== 56 || expr.left.kind !== 170) { + if (expr.operatorToken.kind !== 56 || expr.left.kind !== 171) { return 0; } var lhs = expr.left; @@ -5005,7 +5298,7 @@ var ts; else if (lhs.expression.kind === 97) { return 4; } - else if (lhs.expression.kind === 170) { + else if (lhs.expression.kind === 171) { var innerPropertyAccess = lhs.expression; if (innerPropertyAccess.expression.kind === 69 && innerPropertyAccess.name.text === "prototype") { return 3; @@ -5015,19 +5308,19 @@ var ts; } ts.getSpecialPropertyAssignmentKind = getSpecialPropertyAssignmentKind; function getExternalModuleName(node) { - if (node.kind === 226) { + if (node.kind === 229) { return node.moduleSpecifier; } - if (node.kind === 225) { + if (node.kind === 228) { var reference = node.moduleReference; - if (reference.kind === 236) { + if (reference.kind === 239) { return reference.expression; } } - if (node.kind === 232) { + if (node.kind === 235) { return node.moduleSpecifier; } - if (node.kind === 222 && node.name.kind === 9) { + if (node.kind === 224 && node.name.kind === 9) { return node.name; } } @@ -5035,13 +5328,13 @@ var ts; function hasQuestionToken(node) { if (node) { switch (node.kind) { - case 140: + case 141: + case 146: case 145: + case 253: + case 252: case 144: - case 250: - case 249: case 143: - case 142: return node.questionToken !== undefined; } } @@ -5049,9 +5342,9 @@ var ts; } ts.hasQuestionToken = hasQuestionToken; function isJSDocConstructSignature(node) { - return node.kind === 265 && + return node.kind === 268 && node.parameters.length > 0 && - node.parameters[0].type.kind === 267; + node.parameters[0].type.kind === 270; } ts.isJSDocConstructSignature = isJSDocConstructSignature; function getJSDocTag(node, kind, checkParentVariableStatement) { @@ -5074,22 +5367,22 @@ var ts; return node.jsDocComment; } if (checkParentVariableStatement) { - var isInitializerOfVariableDeclarationInStatement = node.parent.kind === 215 && + var isInitializerOfVariableDeclarationInStatement = node.parent.kind === 217 && node.parent.initializer === node && - node.parent.parent.parent.kind === 197; + node.parent.parent.parent.kind === 199; var variableStatementNode = isInitializerOfVariableDeclarationInStatement ? node.parent.parent.parent : undefined; if (variableStatementNode) { return variableStatementNode.jsDocComment; } var parent_3 = node.parent; var isSourceOfAssignmentExpressionStatement = parent_3 && parent_3.parent && - parent_3.kind === 185 && + parent_3.kind === 186 && parent_3.operatorToken.kind === 56 && - parent_3.parent.kind === 199; + parent_3.parent.kind === 201; if (isSourceOfAssignmentExpressionStatement) { return parent_3.parent.jsDocComment; } - var isPropertyAssignmentExpression = parent_3 && parent_3.kind === 249; + var isPropertyAssignmentExpression = parent_3 && parent_3.kind === 252; if (isPropertyAssignmentExpression) { return parent_3.jsDocComment; } @@ -5097,15 +5390,15 @@ var ts; return undefined; } function getJSDocTypeTag(node) { - return getJSDocTag(node, 273, false); + return getJSDocTag(node, 276, false); } ts.getJSDocTypeTag = getJSDocTypeTag; function getJSDocReturnTag(node) { - return getJSDocTag(node, 272, true); + return getJSDocTag(node, 275, true); } ts.getJSDocReturnTag = getJSDocReturnTag; function getJSDocTemplateTag(node) { - return getJSDocTag(node, 274, false); + return getJSDocTag(node, 277, false); } ts.getJSDocTemplateTag = getJSDocTemplateTag; function getCorrespondingJSDocParameterTag(parameter) { @@ -5115,7 +5408,7 @@ var ts; if (jsDocComment) { for (var _i = 0, _a = jsDocComment.tags; _i < _a.length; _i++) { var tag = _a[_i]; - if (tag.kind === 271) { + if (tag.kind === 274) { var parameterTag = tag; var name_6 = parameterTag.preParameterName || parameterTag.postParameterName; if (name_6.text === parameterName) { @@ -5135,12 +5428,12 @@ var ts; function isRestParameter(node) { if (node) { if (node.flags & 134217728) { - if (node.type && node.type.kind === 266) { + if (node.type && node.type.kind === 269) { return true; } var paramTag = getCorrespondingJSDocParameterTag(node); if (paramTag && paramTag.typeExpression) { - return paramTag.typeExpression.type.kind === 266; + return paramTag.typeExpression.type.kind === 269; } } return node.dotDotDotToken !== undefined; @@ -5161,7 +5454,7 @@ var ts; } ts.isTemplateLiteralKind = isTemplateLiteralKind; function isBindingPattern(node) { - return !!node && (node.kind === 166 || node.kind === 165); + return !!node && (node.kind === 167 || node.kind === 166); } ts.isBindingPattern = isBindingPattern; function isNodeDescendentOf(node, ancestor) { @@ -5175,7 +5468,7 @@ var ts; ts.isNodeDescendentOf = isNodeDescendentOf; function isInAmbientContext(node) { while (node) { - if (node.flags & 2 || (node.kind === 252 && node.isDeclarationFile)) { + if (node.flags & 2 || (node.kind === 255 && node.isDeclarationFile)) { return true; } node = node.parent; @@ -5185,34 +5478,34 @@ var ts; ts.isInAmbientContext = isInAmbientContext; function isDeclaration(node) { switch (node.kind) { - case 178: - case 167: - case 218: - case 190: - case 146: - case 221: - case 251: - case 234: - case 217: - case 177: - case 147: - case 227: - case 225: - case 230: - case 219: - case 145: - case 144: - case 222: - case 228: - case 140: - case 249: - case 143: - case 142: - case 148: - case 250: + case 179: + case 168: case 220: - case 139: - case 215: + case 191: + case 147: + case 223: + case 254: + case 237: + case 219: + case 178: + case 148: + case 230: + case 228: + case 233: + case 221: + case 146: + case 145: + case 224: + case 231: + case 141: + case 252: + case 144: + case 143: + case 149: + case 253: + case 222: + case 140: + case 217: return true; } return false; @@ -5220,25 +5513,25 @@ var ts; ts.isDeclaration = isDeclaration; function isStatement(n) { switch (n.kind) { - case 207: - case 206: - case 214: - case 201: - case 199: - case 198: - case 204: - case 205: - case 203: - case 200: - case 211: + case 209: case 208: + case 216: + case 203: + case 201: + case 200: + case 206: + case 207: + case 205: + case 202: + case 213: case 210: case 212: - case 213: - case 197: - case 202: - case 209: - case 231: + case 214: + case 215: + case 199: + case 204: + case 211: + case 234: return true; default: return false; @@ -5247,13 +5540,13 @@ var ts; ts.isStatement = isStatement; function isClassElement(n) { switch (n.kind) { - case 146: - case 143: - case 145: case 147: - case 148: case 144: - case 151: + case 146: + case 148: + case 149: + case 145: + case 152: return true; default: return false; @@ -5265,7 +5558,7 @@ var ts; return false; } var parent = name.parent; - if (parent.kind === 230 || parent.kind === 234) { + if (parent.kind === 233 || parent.kind === 237) { if (parent.propertyName) { return true; } @@ -5279,40 +5572,41 @@ var ts; function isIdentifierName(node) { var parent = node.parent; switch (parent.kind) { - case 143: - case 142: - case 145: case 144: - case 147: + case 143: + case 146: + case 145: case 148: - case 251: - case 249: - case 170: + case 149: + case 254: + case 252: + case 171: return parent.name === node; - case 137: + case 138: if (parent.right === node) { - while (parent.kind === 137) { + while (parent.kind === 138) { parent = parent.parent; } - return parent.kind === 156; + return parent.kind === 157; } return false; - case 167: - case 230: + case 168: + case 233: return parent.propertyName === node; - case 234: + case 237: return true; } return false; } ts.isIdentifierName = isIdentifierName; function isAliasSymbolDeclaration(node) { - return node.kind === 225 || - node.kind === 227 && !!node.name || - node.kind === 228 || - node.kind === 230 || - node.kind === 234 || - node.kind === 231 && node.expression.kind === 69; + return node.kind === 228 || + node.kind === 227 || + node.kind === 230 && !!node.name || + node.kind === 231 || + node.kind === 233 || + node.kind === 237 || + node.kind === 234 && node.expression.kind === 69; } ts.isAliasSymbolDeclaration = isAliasSymbolDeclaration; function getClassExtendsHeritageClauseElement(node) { @@ -5369,32 +5663,32 @@ var ts; }; } else { - var matchResult = ts.fullTripleSlashReferencePathRegEx.exec(comment); - if (matchResult) { + var refMatchResult = ts.fullTripleSlashReferencePathRegEx.exec(comment); + var refLibResult = !refMatchResult && ts.fullTripleSlashReferenceTypeReferenceDirectiveRegEx.exec(comment); + if (refMatchResult || refLibResult) { var start = commentRange.pos; var end = commentRange.end; return { fileReference: { pos: start, end: end, - fileName: matchResult[3] + fileName: (refMatchResult || refLibResult)[3] }, - isNoDefaultLib: false - }; - } - else { - return { - diagnosticMessage: ts.Diagnostics.Invalid_reference_directive_syntax, - isNoDefaultLib: false + isNoDefaultLib: false, + isTypeReferenceDirective: !!refLibResult }; } + return { + diagnosticMessage: ts.Diagnostics.Invalid_reference_directive_syntax, + isNoDefaultLib: false + }; } } return undefined; } ts.getFileReferenceFromReferencePath = getFileReferenceFromReferencePath; function isKeyword(token) { - return 70 <= token && token <= 136; + return 70 <= token && token <= 137; } ts.isKeyword = isKeyword; function isTrivia(token) { @@ -5414,7 +5708,7 @@ var ts; } ts.hasDynamicName = hasDynamicName; function isDynamicName(name) { - return name.kind === 138 && + return name.kind === 139 && !isStringOrNumericLiteral(name.expression.kind) && !isWellKnownSymbolSyntactically(name.expression); } @@ -5427,7 +5721,7 @@ var ts; if (name.kind === 69 || name.kind === 9 || name.kind === 8) { return name.text; } - if (name.kind === 138) { + if (name.kind === 139) { var nameExpression = name.expression; if (isWellKnownSymbolSyntactically(nameExpression)) { var rightHandSideName = nameExpression.name.text; @@ -5465,18 +5759,18 @@ var ts; ts.isModifierKind = isModifierKind; function isParameterDeclaration(node) { var root = getRootDeclaration(node); - return root.kind === 140; + return root.kind === 141; } ts.isParameterDeclaration = isParameterDeclaration; function getRootDeclaration(node) { - while (node.kind === 167) { + while (node.kind === 168) { node = node.parent.parent; } return node; } ts.getRootDeclaration = getRootDeclaration; function nodeStartsNewLexicalEnvironment(n) { - return isFunctionLike(n) || n.kind === 222 || n.kind === 252; + return isFunctionLike(n) || n.kind === 224 || n.kind === 255; } ts.nodeStartsNewLexicalEnvironment = nodeStartsNewLexicalEnvironment; function cloneNode(node, location, flags, parent) { @@ -5509,7 +5803,7 @@ var ts; } ts.cloneEntityName = cloneEntityName; function isQualifiedName(node) { - return node.kind === 137; + return node.kind === 138; } ts.isQualifiedName = isQualifiedName; function nodeIsSynthesized(node) { @@ -5745,6 +6039,17 @@ var ts; return emitOutputFilePathWithoutExtension + extension; } ts.getOwnEmitOutputFilePath = getOwnEmitOutputFilePath; + function getDeclarationEmitOutputFilePath(sourceFile, host) { + var options = host.getCompilerOptions(); + var outputDir = options.declarationDir || options.outDir; + if (options.declaration) { + var path = outputDir + ? getSourceFilePathInNewDir(sourceFile, host, outputDir) + : sourceFile.fileName; + return ts.removeFileExtension(path) + ".d.ts"; + } + } + ts.getDeclarationEmitOutputFilePath = getDeclarationEmitOutputFilePath; function getEmitScriptTarget(compilerOptions) { return compilerOptions.target || 0; } @@ -5785,20 +6090,21 @@ var ts; var emitFileNames = { jsFilePath: jsFilePath, sourceMapFilePath: getSourceMapFilePath(jsFilePath, options), - declarationFilePath: !isSourceFileJavaScript(sourceFile) ? getDeclarationEmitFilePath(jsFilePath, options) : undefined + declarationFilePath: !isSourceFileJavaScript(sourceFile) ? getDeclarationEmitOutputFilePath(sourceFile, host) : undefined }; action(emitFileNames, [sourceFile], false); } function onBundledEmit(host) { - var bundledSources = ts.filter(host.getSourceFiles(), function (sourceFile) { return !isDeclarationFile(sourceFile) && - (!isExternalModule(sourceFile) || - (getEmitModuleKind(options) && isExternalModule(sourceFile))); }); + var bundledSources = ts.filter(host.getSourceFiles(), function (sourceFile) { + return !isDeclarationFile(sourceFile) + && (!ts.isExternalModule(sourceFile) || !!getEmitModuleKind(options)); + }); if (bundledSources.length) { var jsFilePath = options.outFile || options.out; var emitFileNames = { jsFilePath: jsFilePath, sourceMapFilePath: getSourceMapFilePath(jsFilePath, options), - declarationFilePath: getDeclarationEmitFilePath(jsFilePath, options) + declarationFilePath: options.declaration ? ts.removeFileExtension(jsFilePath) + ".d.ts" : undefined }; action(emitFileNames, bundledSources, true); } @@ -5806,9 +6112,6 @@ var ts; function getSourceMapFilePath(jsFilePath, options) { return options.sourceMap ? jsFilePath + ".map" : undefined; } - function getDeclarationEmitFilePath(jsFilePath, options) { - return options.declaration ? ts.removeFileExtension(jsFilePath) + ".d.ts" : undefined; - } } ts.forEachExpectedEmitFile = forEachExpectedEmitFile; function getSourceFilePathInNewDir(sourceFile, host, newDirPath) { @@ -5817,10 +6120,10 @@ var ts; return ts.combinePaths(newDirPath, sourceFilePath); } ts.getSourceFilePathInNewDir = getSourceFilePathInNewDir; - function writeFile(host, diagnostics, fileName, data, writeByteOrderMark) { + function writeFile(host, diagnostics, fileName, data, writeByteOrderMark, sourceFiles) { host.writeFile(fileName, data, writeByteOrderMark, function (hostErrorMessage) { diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Could_not_write_file_0_Colon_1, fileName, hostErrorMessage)); - }); + }, sourceFiles); } ts.writeFile = writeFile; function getLineOfLocalPosition(currentSourceFile, pos) { @@ -5833,7 +6136,7 @@ var ts; ts.getLineOfLocalPositionFromLineMap = getLineOfLocalPositionFromLineMap; function getFirstConstructorWithBody(node) { return ts.forEach(node.members, function (member) { - if (member.kind === 146 && nodeIsPresent(member.body)) { + if (member.kind === 147 && nodeIsPresent(member.body)) { return member; } }); @@ -5850,10 +6153,10 @@ var ts; var setAccessor; if (hasDynamicName(accessor)) { firstAccessor = accessor; - if (accessor.kind === 147) { + if (accessor.kind === 148) { getAccessor = accessor; } - else if (accessor.kind === 148) { + else if (accessor.kind === 149) { setAccessor = accessor; } else { @@ -5862,7 +6165,7 @@ var ts; } else { ts.forEach(declarations, function (member) { - if ((member.kind === 147 || member.kind === 148) + if ((member.kind === 148 || member.kind === 149) && (member.flags & 32) === (accessor.flags & 32)) { var memberName = getPropertyNameForPropertyNameNode(member.name); var accessorName = getPropertyNameForPropertyNameNode(accessor.name); @@ -5873,10 +6176,10 @@ var ts; else if (!secondAccessor) { secondAccessor = member; } - if (member.kind === 147 && !getAccessor) { + if (member.kind === 148 && !getAccessor) { getAccessor = member; } - if (member.kind === 148 && !setAccessor) { + if (member.kind === 149 && !setAccessor) { setAccessor = member; } } @@ -6043,24 +6346,25 @@ var ts; function isLeftHandSideExpression(expr) { if (expr) { switch (expr.kind) { - case 170: case 171: - case 173: case 172: - case 237: - case 238: case 174: - case 168: - case 176: + case 173: + case 195: + case 240: + case 241: + case 175: case 169: - case 190: case 177: + case 170: + case 191: + case 178: case 69: case 10: case 8: case 9: case 11: - case 187: + case 188: case 84: case 93: case 97: @@ -6077,7 +6381,7 @@ var ts; } ts.isAssignmentOperator = isAssignmentOperator; function isExpressionWithTypeArgumentsInClassExtendsClause(node) { - return node.kind === 192 && + return node.kind === 193 && node.parent.token === 83 && isClassLike(node.parent.parent); } @@ -6098,16 +6402,16 @@ var ts; } } function isRightSideOfQualifiedNameOrPropertyAccess(node) { - return (node.parent.kind === 137 && node.parent.right === node) || - (node.parent.kind === 170 && node.parent.name === node); + return (node.parent.kind === 138 && node.parent.right === node) || + (node.parent.kind === 171 && node.parent.name === node); } ts.isRightSideOfQualifiedNameOrPropertyAccess = isRightSideOfQualifiedNameOrPropertyAccess; function isEmptyObjectLiteralOrArrayLiteral(expression) { var kind = expression.kind; - if (kind === 169) { + if (kind === 170) { return expression.properties.length === 0; } - if (kind === 168) { + if (kind === 169) { return expression.elements.length === 0; } return false; @@ -6228,6 +6532,10 @@ var ts; return carriageReturnLineFeed; } ts.getNewLineCharacter = getNewLineCharacter; + function isWatchSet(options) { + return options.watch && options.hasOwnProperty("watch"); + } + ts.isWatchSet = isWatchSet; })(ts || (ts = {})); var ts; (function (ts) { @@ -6351,9 +6659,9 @@ var ts; } ts.collapseTextChangeRangesAcrossMultipleVersions = collapseTextChangeRangesAcrossMultipleVersions; function getTypeParameterOwner(d) { - if (d && d.kind === 139) { + if (d && d.kind === 140) { for (var current = d; current; current = current.parent) { - if (ts.isFunctionLike(current) || ts.isClassLike(current) || current.kind === 219) { + if (ts.isFunctionLike(current) || ts.isClassLike(current) || current.kind === 221) { return current; } } @@ -6361,9 +6669,18 @@ var ts; } ts.getTypeParameterOwner = getTypeParameterOwner; function isParameterPropertyDeclaration(node) { - return node.flags & 28 && node.parent.kind === 146 && ts.isClassLike(node.parent.parent); + return node.flags & 28 && node.parent.kind === 147 && ts.isClassLike(node.parent.parent); } ts.isParameterPropertyDeclaration = isParameterPropertyDeclaration; + function startsWith(str, prefix) { + return str.lastIndexOf(prefix, 0) === 0; + } + ts.startsWith = startsWith; + function endsWith(str, suffix) { + var expectedPos = str.length - suffix.length; + return str.indexOf(suffix, expectedPos) === expectedPos; + } + ts.endsWith = endsWith; })(ts || (ts = {})); var ts; (function (ts) { @@ -6371,7 +6688,7 @@ var ts; var NodeConstructor; var SourceFileConstructor; function createNode(kind, pos, end) { - if (kind === 252) { + if (kind === 255) { return new (SourceFileConstructor || (SourceFileConstructor = ts.objectAllocator.getSourceFileConstructor()))(kind, pos, end); } else { @@ -6407,26 +6724,26 @@ var ts; var visitNodes = cbNodeArray ? visitNodeArray : visitEachNode; var cbNodes = cbNodeArray || cbNode; switch (node.kind) { - case 137: + case 138: return visitNode(cbNode, node.left) || visitNode(cbNode, node.right); - case 139: + case 140: return visitNode(cbNode, node.name) || visitNode(cbNode, node.constraint) || visitNode(cbNode, node.expression); - case 250: + case 253: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || visitNode(cbNode, node.questionToken) || visitNode(cbNode, node.equalsToken) || visitNode(cbNode, node.objectAssignmentInitializer); - case 140: + case 141: + case 144: case 143: - case 142: - case 249: - case 215: - case 167: + case 252: + case 217: + case 168: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.propertyName) || @@ -6435,24 +6752,24 @@ var ts; visitNode(cbNode, node.questionToken) || visitNode(cbNode, node.type) || visitNode(cbNode, node.initializer); - case 154: case 155: - case 149: + case 156: case 150: case 151: + case 152: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNodes(cbNodes, node.typeParameters) || visitNodes(cbNodes, node.parameters) || visitNode(cbNode, node.type); - case 145: - case 144: case 146: + case 145: case 147: case 148: - case 177: - case 217: + case 149: case 178: + case 219: + case 179: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.asteriskToken) || @@ -6463,290 +6780,294 @@ var ts; visitNode(cbNode, node.type) || visitNode(cbNode, node.equalsGreaterThanToken) || visitNode(cbNode, node.body); - case 153: + case 154: return visitNode(cbNode, node.typeName) || visitNodes(cbNodes, node.typeArguments); - case 152: + case 153: return visitNode(cbNode, node.parameterName) || visitNode(cbNode, node.type); - case 156: - return visitNode(cbNode, node.exprName); case 157: - return visitNodes(cbNodes, node.members); + return visitNode(cbNode, node.exprName); case 158: - return visitNode(cbNode, node.elementType); + return visitNodes(cbNodes, node.members); case 159: - return visitNodes(cbNodes, node.elementTypes); + return visitNode(cbNode, node.elementType); case 160: + return visitNodes(cbNodes, node.elementTypes); case 161: - return visitNodes(cbNodes, node.types); case 162: + return visitNodes(cbNodes, node.types); + case 163: return visitNode(cbNode, node.type); - case 165: case 166: - return visitNodes(cbNodes, node.elements); - case 168: + case 167: return visitNodes(cbNodes, node.elements); case 169: - return visitNodes(cbNodes, node.properties); + return visitNodes(cbNodes, node.elements); case 170: + return visitNodes(cbNodes, node.properties); + case 171: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.dotToken) || visitNode(cbNode, node.name); - case 171: + case 172: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.argumentExpression); - case 172: case 173: + case 174: return visitNode(cbNode, node.expression) || visitNodes(cbNodes, node.typeArguments) || visitNodes(cbNodes, node.arguments); - case 174: + case 175: return visitNode(cbNode, node.tag) || visitNode(cbNode, node.template); - case 175: + case 176: return visitNode(cbNode, node.type) || visitNode(cbNode, node.expression); - case 176: - return visitNode(cbNode, node.expression); - case 179: + case 177: return visitNode(cbNode, node.expression); case 180: return visitNode(cbNode, node.expression); case 181: return visitNode(cbNode, node.expression); - case 183: - return visitNode(cbNode, node.operand); - case 188: - return visitNode(cbNode, node.asteriskToken) || - visitNode(cbNode, node.expression); case 182: return visitNode(cbNode, node.expression); case 184: return visitNode(cbNode, node.operand); + case 189: + return visitNode(cbNode, node.asteriskToken) || + visitNode(cbNode, node.expression); + case 183: + return visitNode(cbNode, node.expression); case 185: + return visitNode(cbNode, node.operand); + case 186: return visitNode(cbNode, node.left) || visitNode(cbNode, node.operatorToken) || visitNode(cbNode, node.right); - case 193: + case 194: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.type); - case 186: + case 195: + return visitNode(cbNode, node.expression); + case 187: return visitNode(cbNode, node.condition) || visitNode(cbNode, node.questionToken) || visitNode(cbNode, node.whenTrue) || visitNode(cbNode, node.colonToken) || visitNode(cbNode, node.whenFalse); - case 189: + case 190: return visitNode(cbNode, node.expression); - case 196: - case 223: + case 198: + case 225: return visitNodes(cbNodes, node.statements); - case 252: + case 255: return visitNodes(cbNodes, node.statements) || visitNode(cbNode, node.endOfFileToken); - case 197: + case 199: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.declarationList); - case 216: + case 218: return visitNodes(cbNodes, node.declarations); - case 199: + case 201: return visitNode(cbNode, node.expression); - case 200: + case 202: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.thenStatement) || visitNode(cbNode, node.elseStatement); - case 201: + case 203: return visitNode(cbNode, node.statement) || visitNode(cbNode, node.expression); - case 202: + case 204: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.statement); - case 203: + case 205: return visitNode(cbNode, node.initializer) || visitNode(cbNode, node.condition) || visitNode(cbNode, node.incrementor) || visitNode(cbNode, node.statement); - case 204: - return visitNode(cbNode, node.initializer) || - visitNode(cbNode, node.expression) || - visitNode(cbNode, node.statement); - case 205: - return visitNode(cbNode, node.initializer) || - visitNode(cbNode, node.expression) || - visitNode(cbNode, node.statement); case 206: - case 207: - return visitNode(cbNode, node.label); - case 208: - return visitNode(cbNode, node.expression); - case 209: - return visitNode(cbNode, node.expression) || + return visitNode(cbNode, node.initializer) || + visitNode(cbNode, node.expression) || visitNode(cbNode, node.statement); + case 207: + return visitNode(cbNode, node.initializer) || + visitNode(cbNode, node.expression) || + visitNode(cbNode, node.statement); + case 208: + case 209: + return visitNode(cbNode, node.label); case 210: - return visitNode(cbNode, node.expression) || - visitNode(cbNode, node.caseBlock); - case 224: - return visitNodes(cbNodes, node.clauses); - case 245: - return visitNode(cbNode, node.expression) || - visitNodes(cbNodes, node.statements); - case 246: - return visitNodes(cbNodes, node.statements); + return visitNode(cbNode, node.expression); case 211: - return visitNode(cbNode, node.label) || + return visitNode(cbNode, node.expression) || visitNode(cbNode, node.statement); case 212: - return visitNode(cbNode, node.expression); + return visitNode(cbNode, node.expression) || + visitNode(cbNode, node.caseBlock); + case 226: + return visitNodes(cbNodes, node.clauses); + case 248: + return visitNode(cbNode, node.expression) || + visitNodes(cbNodes, node.statements); + case 249: + return visitNodes(cbNodes, node.statements); case 213: + return visitNode(cbNode, node.label) || + visitNode(cbNode, node.statement); + case 214: + return visitNode(cbNode, node.expression); + case 215: return visitNode(cbNode, node.tryBlock) || visitNode(cbNode, node.catchClause) || visitNode(cbNode, node.finallyBlock); - case 248: + case 251: return visitNode(cbNode, node.variableDeclaration) || visitNode(cbNode, node.block); - case 141: + case 142: return visitNode(cbNode, node.expression); - case 218: - case 190: - return visitNodes(cbNodes, node.decorators) || - visitNodes(cbNodes, node.modifiers) || - visitNode(cbNode, node.name) || - visitNodes(cbNodes, node.typeParameters) || - visitNodes(cbNodes, node.heritageClauses) || - visitNodes(cbNodes, node.members); - case 219: - return visitNodes(cbNodes, node.decorators) || - visitNodes(cbNodes, node.modifiers) || - visitNode(cbNode, node.name) || - visitNodes(cbNodes, node.typeParameters) || - visitNodes(cbNodes, node.heritageClauses) || - visitNodes(cbNodes, node.members); case 220: + case 191: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || visitNodes(cbNodes, node.typeParameters) || - visitNode(cbNode, node.type); + visitNodes(cbNodes, node.heritageClauses) || + visitNodes(cbNodes, node.members); case 221: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || + visitNodes(cbNodes, node.typeParameters) || + visitNodes(cbNodes, node.heritageClauses) || visitNodes(cbNodes, node.members); - case 251: - return visitNode(cbNode, node.name) || - visitNode(cbNode, node.initializer); case 222: + return visitNodes(cbNodes, node.decorators) || + visitNodes(cbNodes, node.modifiers) || + visitNode(cbNode, node.name) || + visitNodes(cbNodes, node.typeParameters) || + visitNode(cbNode, node.type); + case 223: + return visitNodes(cbNodes, node.decorators) || + visitNodes(cbNodes, node.modifiers) || + visitNode(cbNode, node.name) || + visitNodes(cbNodes, node.members); + case 254: + return visitNode(cbNode, node.name) || + visitNode(cbNode, node.initializer); + case 224: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || visitNode(cbNode, node.body); - case 225: + case 228: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || visitNode(cbNode, node.moduleReference); - case 226: + case 229: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.importClause) || visitNode(cbNode, node.moduleSpecifier); - case 227: + case 230: return visitNode(cbNode, node.name) || visitNode(cbNode, node.namedBindings); - case 228: + case 227: + return visitNode(cbNode, node.name); + case 231: return visitNode(cbNode, node.name); - case 229: - case 233: - return visitNodes(cbNodes, node.elements); case 232: + case 236: + return visitNodes(cbNodes, node.elements); + case 235: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.exportClause) || visitNode(cbNode, node.moduleSpecifier); - case 230: - case 234: + case 233: + case 237: return visitNode(cbNode, node.propertyName) || visitNode(cbNode, node.name); - case 231: + case 234: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.expression); - case 187: + case 188: return visitNode(cbNode, node.head) || visitNodes(cbNodes, node.templateSpans); - case 194: + case 196: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.literal); - case 138: + case 139: return visitNode(cbNode, node.expression); - case 247: + case 250: return visitNodes(cbNodes, node.types); - case 192: + case 193: return visitNode(cbNode, node.expression) || visitNodes(cbNodes, node.typeArguments); - case 236: + case 239: return visitNode(cbNode, node.expression); - case 235: + case 238: return visitNodes(cbNodes, node.decorators); - case 237: + case 240: return visitNode(cbNode, node.openingElement) || visitNodes(cbNodes, node.children) || visitNode(cbNode, node.closingElement); - case 238: - case 239: + case 241: + case 242: return visitNode(cbNode, node.tagName) || visitNodes(cbNodes, node.attributes); - case 242: + case 245: return visitNode(cbNode, node.name) || visitNode(cbNode, node.initializer); - case 243: + case 246: + return visitNode(cbNode, node.expression); + case 247: return visitNode(cbNode, node.expression); case 244: - return visitNode(cbNode, node.expression); - case 241: return visitNode(cbNode, node.tagName); - case 253: - return visitNode(cbNode, node.type); - case 257: - return visitNodes(cbNodes, node.types); - case 258: - return visitNodes(cbNodes, node.types); case 256: - return visitNode(cbNode, node.elementType); + return visitNode(cbNode, node.type); case 260: - return visitNode(cbNode, node.type); - case 259: - return visitNode(cbNode, node.type); + return visitNodes(cbNodes, node.types); case 261: - return visitNodes(cbNodes, node.members); + return visitNodes(cbNodes, node.types); + case 259: + return visitNode(cbNode, node.elementType); case 263: + return visitNode(cbNode, node.type); + case 262: + return visitNode(cbNode, node.type); + case 264: + return visitNodes(cbNodes, node.members); + case 266: return visitNode(cbNode, node.name) || visitNodes(cbNodes, node.typeArguments); - case 264: - return visitNode(cbNode, node.type); - case 265: - return visitNodes(cbNodes, node.parameters) || - visitNode(cbNode, node.type); - case 266: - return visitNode(cbNode, node.type); case 267: return visitNode(cbNode, node.type); case 268: - return visitNode(cbNode, node.type); - case 262: - return visitNode(cbNode, node.name) || + return visitNodes(cbNodes, node.parameters) || visitNode(cbNode, node.type); case 269: - return visitNodes(cbNodes, node.tags); + return visitNode(cbNode, node.type); + case 270: + return visitNode(cbNode, node.type); case 271: + return visitNode(cbNode, node.type); + case 265: + return visitNode(cbNode, node.name) || + visitNode(cbNode, node.type); + case 272: + return visitNodes(cbNodes, node.tags); + case 274: return visitNode(cbNode, node.preParameterName) || visitNode(cbNode, node.typeExpression) || visitNode(cbNode, node.postParameterName); - case 272: + case 275: return visitNode(cbNode, node.typeExpression); - case 273: + case 276: return visitNode(cbNode, node.typeExpression); - case 274: + case 277: return visitNodes(cbNodes, node.typeParameters); } } @@ -6759,22 +7080,10 @@ var ts; return result; } ts.createSourceFile = createSourceFile; - function getScriptKindFromFileName(fileName) { - var ext = fileName.substr(fileName.lastIndexOf(".")); - switch (ext.toLowerCase()) { - case ".js": - return 1; - case ".jsx": - return 2; - case ".ts": - return 3; - case ".tsx": - return 4; - default: - return 3; - } + function isExternalModule(file) { + return file.externalModuleIndicator !== undefined; } - ts.getScriptKindFromFileName = getScriptKindFromFileName; + ts.isExternalModule = isExternalModule; function updateSourceFile(sourceFile, newText, textChangeRange, aggressiveChecks) { return IncrementalParser.updateSourceFile(sourceFile, newText, textChangeRange, aggressiveChecks); } @@ -6805,7 +7114,7 @@ var ts; var contextFlags; var parseErrorBeforeNextFinishedNode = false; function parseSourceFile(fileName, _sourceText, languageVersion, _syntaxCursor, setParentNodes, scriptKind) { - scriptKind = scriptKind ? scriptKind : getScriptKindFromFileName(fileName); + scriptKind = ts.ensureScriptKind(fileName, scriptKind); initializeState(fileName, _sourceText, languageVersion, _syntaxCursor, scriptKind); var result = parseSourceFileWorker(fileName, languageVersion, setParentNodes, scriptKind); clearState(); @@ -6890,7 +7199,7 @@ var ts; } Parser.fixupParentReferences = fixupParentReferences; function createSourceFile(fileName, languageVersion, scriptKind) { - var sourceFile = new SourceFileConstructor(252, 0, sourceText.length); + var sourceFile = new SourceFileConstructor(255, 0, sourceText.length); nodeCount++; sourceFile.text = sourceText; sourceFile.bindDiagnostics = []; @@ -7182,7 +7491,7 @@ var ts; return token === 9 || token === 8 || ts.tokenIsIdentifierOrKeyword(token); } function parseComputedPropertyName() { - var node = createNode(138); + var node = createNode(139); parseExpected(19); node.expression = allowInAnd(parseExpression); parseExpected(20); @@ -7207,7 +7516,7 @@ var ts; if (token === 77) { return lookAhead(nextTokenIsClassOrFunction); } - return token !== 37 && token !== 15 && canFollowModifier(); + return token !== 37 && token !== 116 && token !== 15 && canFollowModifier(); } if (token === 77) { return nextTokenIsClassOrFunction(); @@ -7434,7 +7743,7 @@ var ts; if (ts.containsParseError(node)) { return undefined; } - var nodeContextFlags = node.flags & 62914560; + var nodeContextFlags = node.flags & 197132288; if (nodeContextFlags !== contextFlags) { return undefined; } @@ -7481,14 +7790,14 @@ var ts; function isReusableClassMember(node) { if (node) { switch (node.kind) { - case 146: - case 151: case 147: + case 152: case 148: - case 143: - case 195: + case 149: + case 144: + case 197: return true; - case 145: + case 146: var methodDeclaration = node; var nameIsConstructor = methodDeclaration.name.kind === 69 && methodDeclaration.name.originalKeywordKind === 121; @@ -7500,8 +7809,8 @@ var ts; function isReusableSwitchClause(node) { if (node) { switch (node.kind) { - case 245: - case 246: + case 248: + case 249: return true; } } @@ -7510,65 +7819,65 @@ var ts; function isReusableStatement(node) { if (node) { switch (node.kind) { - case 217: - case 197: - case 196: - case 200: + case 219: case 199: - case 212: - case 208: - case 210: - case 207: - case 206: - case 204: - case 205: - case 203: - case 202: - case 209: case 198: - case 213: - case 211: + case 202: case 201: case 214: - case 226: - case 225: - case 232: - case 231: - case 222: - case 218: - case 219: - case 221: + case 210: + case 212: + case 209: + case 208: + case 206: + case 207: + case 205: + case 204: + case 211: + case 200: + case 215: + case 213: + case 203: + case 216: + case 229: + case 228: + case 235: + case 234: + case 224: case 220: + case 221: + case 223: + case 222: return true; } } return false; } function isReusableEnumMember(node) { - return node.kind === 251; + return node.kind === 254; } function isReusableTypeMember(node) { if (node) { switch (node.kind) { - case 150: - case 144: case 151: - case 142: - case 149: + case 145: + case 152: + case 143: + case 150: return true; } } return false; } function isReusableVariableDeclaration(node) { - if (node.kind !== 215) { + if (node.kind !== 217) { return false; } var variableDeclarator = node; return variableDeclarator.initializer === undefined; } function isReusableParameter(node) { - if (node.kind !== 140) { + if (node.kind !== 141) { return false; } var parameter = node; @@ -7668,7 +7977,7 @@ var ts; function parseEntityName(allowReservedWords, diagnosticMessage) { var entity = parseIdentifier(diagnosticMessage); while (parseOptional(21)) { - var node = createNode(137, entity.pos); + var node = createNode(138, entity.pos); node.left = entity; node.right = parseRightSideOfDot(allowReservedWords); entity = finishNode(node); @@ -7685,7 +7994,7 @@ var ts; return allowIdentifierNames ? parseIdentifierName() : parseIdentifier(); } function parseTemplateExpression() { - var template = createNode(187); + var template = createNode(188); template.head = parseTemplateLiteralFragment(); ts.Debug.assert(template.head.kind === 12, "Template head has wrong token kind"); var templateSpans = []; @@ -7698,7 +8007,7 @@ var ts; return finishNode(template); } function parseTemplateSpan() { - var span = createNode(194); + var span = createNode(196); span.expression = allowInAnd(parseExpression); var literal; if (token === 16) { @@ -7712,7 +8021,7 @@ var ts; return finishNode(span); } function parseStringLiteralTypeNode() { - return parseLiteralLikeNode(164, true); + return parseLiteralLikeNode(165, true); } function parseLiteralNode(internName) { return parseLiteralLikeNode(token, internName); @@ -7742,7 +8051,7 @@ var ts; } function parseTypeReference() { var typeName = parseEntityName(false, ts.Diagnostics.Type_expected); - var node = createNode(153, typeName.pos); + var node = createNode(154, typeName.pos); node.typeName = typeName; if (!scanner.hasPrecedingLineBreak() && token === 25) { node.typeArguments = parseBracketedList(18, parseType, 25, 27); @@ -7751,24 +8060,24 @@ var ts; } function parseThisTypePredicate(lhs) { nextToken(); - var node = createNode(152, lhs.pos); + var node = createNode(153, lhs.pos); node.parameterName = lhs; node.type = parseType(); return finishNode(node); } function parseThisTypeNode() { - var node = createNode(163); + var node = createNode(164); nextToken(); return finishNode(node); } function parseTypeQuery() { - var node = createNode(156); + var node = createNode(157); parseExpected(101); node.exprName = parseEntityName(true); return finishNode(node); } function parseTypeParameter() { - var node = createNode(139); + var node = createNode(140); node.name = parseIdentifier(); if (parseOptional(83)) { if (isStartOfType() || !isStartOfExpression()) { @@ -7792,7 +8101,7 @@ var ts; return undefined; } function isStartOfParameter() { - return token === 22 || isIdentifierOrPattern() || ts.isModifierKind(token) || token === 55; + return token === 22 || isIdentifierOrPattern() || ts.isModifierKind(token) || token === 55 || token === 97; } function setModifiers(node, modifiers) { if (modifiers) { @@ -7801,7 +8110,12 @@ var ts; } } function parseParameter() { - var node = createNode(140); + var node = createNode(141); + if (token === 97) { + node.name = createIdentifier(true, undefined); + node.type = parseParameterType(); + return finishNode(node); + } node.decorators = parseDecorators(); setModifiers(node, parseModifiers()); node.dotDotDotToken = parseOptionalToken(22); @@ -7856,7 +8170,7 @@ var ts; } function parseSignatureMember(kind) { var node = createNode(kind); - if (kind === 150) { + if (kind === 151) { parseExpected(92); } fillSignature(54, false, false, false, node); @@ -7896,7 +8210,7 @@ var ts; return token === 54 || token === 24 || token === 20; } function parseIndexSignatureDeclaration(fullStart, decorators, modifiers) { - var node = createNode(151, fullStart); + var node = createNode(152, fullStart); node.decorators = decorators; setModifiers(node, modifiers); node.parameters = parseBracketedList(16, parseParameter, 19, 20); @@ -7908,7 +8222,7 @@ var ts; var name = parsePropertyName(); var questionToken = parseOptionalToken(53); if (token === 17 || token === 25) { - var method = createNode(144, fullStart); + var method = createNode(145, fullStart); setModifiers(method, modifiers); method.name = name; method.questionToken = questionToken; @@ -7917,7 +8231,7 @@ var ts; return finishNode(method); } else { - var property = createNode(142, fullStart); + var property = createNode(143, fullStart); setModifiers(property, modifiers); property.name = name; property.questionToken = questionToken; @@ -7956,10 +8270,10 @@ var ts; } function parseTypeMember() { if (token === 17 || token === 25) { - return parseSignatureMember(149); + return parseSignatureMember(150); } if (token === 92 && lookAhead(isStartOfConstructSignature)) { - return parseSignatureMember(150); + return parseSignatureMember(151); } var fullStart = getNodePos(); var modifiers = parseModifiers(); @@ -7973,7 +8287,7 @@ var ts; return token === 17 || token === 25; } function parseTypeLiteral() { - var node = createNode(157); + var node = createNode(158); node.members = parseObjectTypeMembers(); return finishNode(node); } @@ -7989,12 +8303,12 @@ var ts; return members; } function parseTupleType() { - var node = createNode(159); + var node = createNode(160); node.elementTypes = parseBracketedList(19, parseType, 19, 20); return finishNode(node); } function parseParenthesizedType() { - var node = createNode(162); + var node = createNode(163); parseExpected(17); node.type = parseType(); parseExpected(18); @@ -8002,7 +8316,7 @@ var ts; } function parseFunctionOrConstructorType(kind) { var node = createNode(kind); - if (kind === 155) { + if (kind === 156) { parseExpected(92); } fillSignature(34, false, false, false, node); @@ -8019,11 +8333,13 @@ var ts; case 129: case 120: case 132: + case 134: var node = tryParse(parseKeywordAndNoDot); return node || parseTypeReference(); case 9: return parseStringLiteralTypeNode(); case 103: + case 93: return parseTokenNode(); case 97: { var thisKeyword = parseThisTypeNode(); @@ -8054,6 +8370,8 @@ var ts; case 120: case 132: case 103: + case 134: + case 93: case 97: case 101: case 15: @@ -8076,7 +8394,7 @@ var ts; var type = parseNonArrayType(); while (!scanner.hasPrecedingLineBreak() && parseOptional(19)) { parseExpected(20); - var node = createNode(158, type.pos); + var node = createNode(159, type.pos); node.elementType = type; type = finishNode(node); } @@ -8098,10 +8416,10 @@ var ts; return type; } function parseIntersectionTypeOrHigher() { - return parseUnionOrIntersectionType(161, parseArrayTypeOrHigher, 46); + return parseUnionOrIntersectionType(162, parseArrayTypeOrHigher, 46); } function parseUnionTypeOrHigher() { - return parseUnionOrIntersectionType(160, parseIntersectionTypeOrHigher, 47); + return parseUnionOrIntersectionType(161, parseIntersectionTypeOrHigher, 47); } function isStartOfFunctionType() { if (token === 25) { @@ -8113,7 +8431,7 @@ var ts; if (ts.isModifierKind(token)) { parseModifiers(); } - if (isIdentifier()) { + if (isIdentifier() || token === 97) { nextToken(); return true; } @@ -8147,7 +8465,7 @@ var ts; var typePredicateVariable = isIdentifier() && tryParse(parseTypePredicatePrefix); var type = parseType(); if (typePredicateVariable) { - var node = createNode(152, typePredicateVariable.pos); + var node = createNode(153, typePredicateVariable.pos); node.parameterName = typePredicateVariable; node.type = type; return finishNode(node); @@ -8168,10 +8486,10 @@ var ts; } function parseTypeWorker() { if (isStartOfFunctionType()) { - return parseFunctionOrConstructorType(154); + return parseFunctionOrConstructorType(155); } if (token === 92) { - return parseFunctionOrConstructorType(155); + return parseFunctionOrConstructorType(156); } return parseUnionTypeOrHigher(); } @@ -8290,7 +8608,7 @@ var ts; return !scanner.hasPrecedingLineBreak() && isIdentifier(); } function parseYieldExpression() { - var node = createNode(188); + var node = createNode(189); nextToken(); if (!scanner.hasPrecedingLineBreak() && (token === 37 || isStartOfExpression())) { @@ -8304,8 +8622,8 @@ var ts; } function parseSimpleArrowFunctionExpression(identifier) { ts.Debug.assert(token === 34, "parseSimpleArrowFunctionExpression should only have been called if we had a =>"); - var node = createNode(178, identifier.pos); - var parameter = createNode(140, identifier.pos); + var node = createNode(179, identifier.pos); + var parameter = createNode(141, identifier.pos); parameter.name = identifier; finishNode(parameter); node.parameters = [parameter]; @@ -8416,7 +8734,7 @@ var ts; return parseParenthesizedArrowFunctionExpressionHead(false); } function parseParenthesizedArrowFunctionExpressionHead(allowAmbiguity) { - var node = createNode(178); + var node = createNode(179); setModifiers(node, parseModifiersForArrowFunction()); var isAsync = !!(node.flags & 256); fillSignature(54, false, isAsync, !allowAmbiguity, node); @@ -8448,7 +8766,7 @@ var ts; if (!questionToken) { return leftOperand; } - var node = createNode(186, leftOperand.pos); + var node = createNode(187, leftOperand.pos); node.condition = leftOperand; node.questionToken = questionToken; node.whenTrue = doOutsideOfContext(disallowInAndDecoratorContext, parseAssignmentExpressionOrHigher); @@ -8461,7 +8779,7 @@ var ts; return parseBinaryExpressionRest(precedence, leftOperand); } function isInOrOfKeyword(t) { - return t === 90 || t === 136; + return t === 90 || t === 137; } function parseBinaryExpressionRest(precedence, leftOperand) { while (true) { @@ -8539,43 +8857,43 @@ var ts; return -1; } function makeBinaryExpression(left, operatorToken, right) { - var node = createNode(185, left.pos); + var node = createNode(186, left.pos); node.left = left; node.operatorToken = operatorToken; node.right = right; return finishNode(node); } function makeAsExpression(left, right) { - var node = createNode(193, left.pos); + var node = createNode(194, left.pos); node.expression = left; node.type = right; return finishNode(node); } function parsePrefixUnaryExpression() { - var node = createNode(183); + var node = createNode(184); node.operator = token; nextToken(); node.operand = parseSimpleUnaryExpression(); return finishNode(node); } function parseDeleteExpression() { - var node = createNode(179); - nextToken(); - node.expression = parseSimpleUnaryExpression(); - return finishNode(node); - } - function parseTypeOfExpression() { var node = createNode(180); nextToken(); node.expression = parseSimpleUnaryExpression(); return finishNode(node); } - function parseVoidExpression() { + function parseTypeOfExpression() { var node = createNode(181); nextToken(); node.expression = parseSimpleUnaryExpression(); return finishNode(node); } + function parseVoidExpression() { + var node = createNode(182); + nextToken(); + node.expression = parseSimpleUnaryExpression(); + return finishNode(node); + } function isAwaitExpression() { if (token === 119) { if (inAwaitContext()) { @@ -8586,7 +8904,7 @@ var ts; return false; } function parseAwaitExpression() { - var node = createNode(182); + var node = createNode(183); nextToken(); node.expression = parseSimpleUnaryExpression(); return finishNode(node); @@ -8605,7 +8923,7 @@ var ts; var simpleUnaryExpression = parseSimpleUnaryExpression(); if (token === 38) { var start = ts.skipTrivia(sourceText, simpleUnaryExpression.pos); - if (simpleUnaryExpression.kind === 175) { + if (simpleUnaryExpression.kind === 176) { parseErrorAtPosition(start, simpleUnaryExpression.end - start, ts.Diagnostics.A_type_assertion_expression_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_expression_Consider_enclosing_the_expression_in_parentheses); } else { @@ -8653,7 +8971,7 @@ var ts; } function parseIncrementExpression() { if (token === 41 || token === 42) { - var node = createNode(183); + var node = createNode(184); node.operator = token; nextToken(); node.operand = parseLeftHandSideExpressionOrHigher(); @@ -8665,7 +8983,7 @@ var ts; var expression = parseLeftHandSideExpressionOrHigher(); ts.Debug.assert(ts.isLeftHandSideExpression(expression)); if ((token === 41 || token === 42) && !scanner.hasPrecedingLineBreak()) { - var node = createNode(184, expression.pos); + var node = createNode(185, expression.pos); node.operand = expression; node.operator = token; nextToken(); @@ -8688,7 +9006,7 @@ var ts; if (token === 17 || token === 21 || token === 19) { return expression; } - var node = createNode(170, expression.pos); + var node = createNode(171, expression.pos); node.expression = expression; node.dotToken = parseExpectedToken(21, false, ts.Diagnostics.super_must_be_followed_by_an_argument_list_or_member_access); node.name = parseRightSideOfDot(true); @@ -8707,8 +9025,8 @@ var ts; function parseJsxElementOrSelfClosingElement(inExpressionContext) { var opening = parseJsxOpeningOrSelfClosingElement(inExpressionContext); var result; - if (opening.kind === 239) { - var node = createNode(237, opening.pos); + if (opening.kind === 242) { + var node = createNode(240, opening.pos); node.openingElement = opening; node.children = parseJsxChildren(node.openingElement.tagName); node.closingElement = parseJsxClosingElement(inExpressionContext); @@ -8718,14 +9036,14 @@ var ts; result = finishNode(node); } else { - ts.Debug.assert(opening.kind === 238); + ts.Debug.assert(opening.kind === 241); result = opening; } if (inExpressionContext && token === 25) { var invalidElement = tryParse(function () { return parseJsxElementOrSelfClosingElement(true); }); if (invalidElement) { parseErrorAtCurrentToken(ts.Diagnostics.JSX_expressions_must_have_one_parent_element); - var badNode = createNode(185, result.pos); + var badNode = createNode(186, result.pos); badNode.end = invalidElement.end; badNode.left = result; badNode.right = invalidElement; @@ -8737,13 +9055,13 @@ var ts; return result; } function parseJsxText() { - var node = createNode(240, scanner.getStartPos()); + var node = createNode(243, scanner.getStartPos()); token = scanner.scanJsxToken(); return finishNode(node); } function parseJsxChild() { switch (token) { - case 240: + case 243: return parseJsxText(); case 15: return parseJsxExpression(false); @@ -8779,7 +9097,7 @@ var ts; var attributes = parseList(13, parseJsxAttribute); var node; if (token === 27) { - node = createNode(239, fullStart); + node = createNode(242, fullStart); scanJsxText(); } else { @@ -8791,7 +9109,7 @@ var ts; parseExpected(27, undefined, false); scanJsxText(); } - node = createNode(238, fullStart); + node = createNode(241, fullStart); } node.tagName = tagName; node.attributes = attributes; @@ -8802,7 +9120,7 @@ var ts; var elementName = parseIdentifierName(); while (parseOptional(21)) { scanJsxIdentifier(); - var node = createNode(137, elementName.pos); + var node = createNode(138, elementName.pos); node.left = elementName; node.right = parseIdentifierName(); elementName = finishNode(node); @@ -8810,7 +9128,7 @@ var ts; return elementName; } function parseJsxExpression(inExpressionContext) { - var node = createNode(244); + var node = createNode(247); parseExpected(15); if (token !== 16) { node.expression = parseAssignmentExpressionOrHigher(); @@ -8829,7 +9147,7 @@ var ts; return parseJsxSpreadAttribute(); } scanJsxIdentifier(); - var node = createNode(242); + var node = createNode(245); node.name = parseIdentifierName(); if (parseOptional(56)) { switch (token) { @@ -8844,7 +9162,7 @@ var ts; return finishNode(node); } function parseJsxSpreadAttribute() { - var node = createNode(243); + var node = createNode(246); parseExpected(15); parseExpected(22); node.expression = parseExpression(); @@ -8852,7 +9170,7 @@ var ts; return finishNode(node); } function parseJsxClosingElement(inExpressionContext) { - var node = createNode(241); + var node = createNode(244); parseExpected(26); node.tagName = parseJsxElementName(); if (inExpressionContext) { @@ -8865,7 +9183,7 @@ var ts; return finishNode(node); } function parseTypeAssertion() { - var node = createNode(175); + var node = createNode(176); parseExpected(25); node.type = parseType(); parseExpected(27); @@ -8876,15 +9194,22 @@ var ts; while (true) { var dotToken = parseOptionalToken(21); if (dotToken) { - var propertyAccess = createNode(170, expression.pos); + var propertyAccess = createNode(171, expression.pos); propertyAccess.expression = expression; propertyAccess.dotToken = dotToken; propertyAccess.name = parseRightSideOfDot(true); expression = finishNode(propertyAccess); continue; } + if (token === 49 && !scanner.hasPrecedingLineBreak()) { + nextToken(); + var nonNullExpression = createNode(195, expression.pos); + nonNullExpression.expression = expression; + expression = finishNode(nonNullExpression); + continue; + } if (!inDecoratorContext() && parseOptional(19)) { - var indexedAccess = createNode(171, expression.pos); + var indexedAccess = createNode(172, expression.pos); indexedAccess.expression = expression; if (token !== 20) { indexedAccess.argumentExpression = allowInAnd(parseExpression); @@ -8898,7 +9223,7 @@ var ts; continue; } if (token === 11 || token === 12) { - var tagExpression = createNode(174, expression.pos); + var tagExpression = createNode(175, expression.pos); tagExpression.tag = expression; tagExpression.template = token === 11 ? parseLiteralNode() @@ -8917,7 +9242,7 @@ var ts; if (!typeArguments) { return expression; } - var callExpr = createNode(172, expression.pos); + var callExpr = createNode(173, expression.pos); callExpr.expression = expression; callExpr.typeArguments = typeArguments; callExpr.arguments = parseArgumentList(); @@ -8925,7 +9250,7 @@ var ts; continue; } else if (token === 17) { - var callExpr = createNode(172, expression.pos); + var callExpr = createNode(173, expression.pos); callExpr.expression = expression; callExpr.arguments = parseArgumentList(); expression = finishNode(callExpr); @@ -9020,28 +9345,28 @@ var ts; return parseIdentifier(ts.Diagnostics.Expression_expected); } function parseParenthesizedExpression() { - var node = createNode(176); + var node = createNode(177); parseExpected(17); node.expression = allowInAnd(parseExpression); parseExpected(18); return finishNode(node); } function parseSpreadElement() { - var node = createNode(189); + var node = createNode(190); parseExpected(22); node.expression = parseAssignmentExpressionOrHigher(); return finishNode(node); } function parseArgumentOrArrayLiteralElement() { return token === 22 ? parseSpreadElement() : - token === 24 ? createNode(191) : + token === 24 ? createNode(192) : parseAssignmentExpressionOrHigher(); } function parseArgumentExpression() { return doOutsideOfContext(disallowInAndDecoratorContext, parseArgumentOrArrayLiteralElement); } function parseArrayLiteralExpression() { - var node = createNode(168); + var node = createNode(169); parseExpected(19); if (scanner.hasPrecedingLineBreak()) { node.multiLine = true; @@ -9052,10 +9377,10 @@ var ts; } function tryParseAccessorDeclaration(fullStart, decorators, modifiers) { if (parseContextualModifier(123)) { - return parseAccessorDeclaration(147, fullStart, decorators, modifiers); + return addJSDocComment(parseAccessorDeclaration(148, fullStart, decorators, modifiers)); } else if (parseContextualModifier(130)) { - return parseAccessorDeclaration(148, fullStart, decorators, modifiers); + return parseAccessorDeclaration(149, fullStart, decorators, modifiers); } return undefined; } @@ -9076,7 +9401,7 @@ var ts; } var isShorthandPropertyAssignment = tokenIsIdentifier && (token === 24 || token === 16 || token === 56); if (isShorthandPropertyAssignment) { - var shorthandDeclaration = createNode(250, fullStart); + var shorthandDeclaration = createNode(253, fullStart); shorthandDeclaration.name = propertyName; shorthandDeclaration.questionToken = questionToken; var equalsToken = parseOptionalToken(56); @@ -9087,7 +9412,7 @@ var ts; return addJSDocComment(finishNode(shorthandDeclaration)); } else { - var propertyAssignment = createNode(249, fullStart); + var propertyAssignment = createNode(252, fullStart); propertyAssignment.modifiers = modifiers; propertyAssignment.name = propertyName; propertyAssignment.questionToken = questionToken; @@ -9097,7 +9422,7 @@ var ts; } } function parseObjectLiteralExpression() { - var node = createNode(169); + var node = createNode(170); parseExpected(15); if (scanner.hasPrecedingLineBreak()) { node.multiLine = true; @@ -9111,7 +9436,7 @@ var ts; if (saveDecoratorContext) { setDecoratorContext(false); } - var node = createNode(177); + var node = createNode(178); setModifiers(node, parseModifiers()); parseExpected(87); node.asteriskToken = parseOptionalToken(37); @@ -9133,7 +9458,7 @@ var ts; return isIdentifier() ? parseIdentifier() : undefined; } function parseNewExpression() { - var node = createNode(173); + var node = createNode(174); parseExpected(92); node.expression = parseMemberExpressionOrHigher(); node.typeArguments = tryParse(parseTypeArgumentsInExpression); @@ -9143,7 +9468,7 @@ var ts; return finishNode(node); } function parseBlock(ignoreMissingOpenBrace, diagnosticMessage) { - var node = createNode(196); + var node = createNode(198); if (parseExpected(15, diagnosticMessage) || ignoreMissingOpenBrace) { node.statements = parseList(1, parseStatement); parseExpected(16); @@ -9171,12 +9496,12 @@ var ts; return block; } function parseEmptyStatement() { - var node = createNode(198); + var node = createNode(200); parseExpected(23); return finishNode(node); } function parseIfStatement() { - var node = createNode(200); + var node = createNode(202); parseExpected(88); parseExpected(17); node.expression = allowInAnd(parseExpression); @@ -9186,7 +9511,7 @@ var ts; return finishNode(node); } function parseDoStatement() { - var node = createNode(201); + var node = createNode(203); parseExpected(79); node.statement = parseStatement(); parseExpected(104); @@ -9197,7 +9522,7 @@ var ts; return finishNode(node); } function parseWhileStatement() { - var node = createNode(202); + var node = createNode(204); parseExpected(104); parseExpected(17); node.expression = allowInAnd(parseExpression); @@ -9220,21 +9545,21 @@ var ts; } var forOrForInOrForOfStatement; if (parseOptional(90)) { - var forInStatement = createNode(204, pos); + var forInStatement = createNode(206, pos); forInStatement.initializer = initializer; forInStatement.expression = allowInAnd(parseExpression); parseExpected(18); forOrForInOrForOfStatement = forInStatement; } - else if (parseOptional(136)) { - var forOfStatement = createNode(205, pos); + else if (parseOptional(137)) { + var forOfStatement = createNode(207, pos); forOfStatement.initializer = initializer; forOfStatement.expression = allowInAnd(parseAssignmentExpressionOrHigher); parseExpected(18); forOrForInOrForOfStatement = forOfStatement; } else { - var forStatement = createNode(203, pos); + var forStatement = createNode(205, pos); forStatement.initializer = initializer; parseExpected(23); if (token !== 23 && token !== 18) { @@ -9252,7 +9577,7 @@ var ts; } function parseBreakOrContinueStatement(kind) { var node = createNode(kind); - parseExpected(kind === 207 ? 70 : 75); + parseExpected(kind === 209 ? 70 : 75); if (!canParseSemicolon()) { node.label = parseIdentifier(); } @@ -9260,7 +9585,7 @@ var ts; return finishNode(node); } function parseReturnStatement() { - var node = createNode(208); + var node = createNode(210); parseExpected(94); if (!canParseSemicolon()) { node.expression = allowInAnd(parseExpression); @@ -9269,7 +9594,7 @@ var ts; return finishNode(node); } function parseWithStatement() { - var node = createNode(209); + var node = createNode(211); parseExpected(105); parseExpected(17); node.expression = allowInAnd(parseExpression); @@ -9278,7 +9603,7 @@ var ts; return finishNode(node); } function parseCaseClause() { - var node = createNode(245); + var node = createNode(248); parseExpected(71); node.expression = allowInAnd(parseExpression); parseExpected(54); @@ -9286,7 +9611,7 @@ var ts; return finishNode(node); } function parseDefaultClause() { - var node = createNode(246); + var node = createNode(249); parseExpected(77); parseExpected(54); node.statements = parseList(3, parseStatement); @@ -9296,12 +9621,12 @@ var ts; return token === 71 ? parseCaseClause() : parseDefaultClause(); } function parseSwitchStatement() { - var node = createNode(210); + var node = createNode(212); parseExpected(96); parseExpected(17); node.expression = allowInAnd(parseExpression); parseExpected(18); - var caseBlock = createNode(224, scanner.getStartPos()); + var caseBlock = createNode(226, scanner.getStartPos()); parseExpected(15); caseBlock.clauses = parseList(2, parseCaseOrDefaultClause); parseExpected(16); @@ -9309,14 +9634,14 @@ var ts; return finishNode(node); } function parseThrowStatement() { - var node = createNode(212); + var node = createNode(214); parseExpected(98); node.expression = scanner.hasPrecedingLineBreak() ? undefined : allowInAnd(parseExpression); parseSemicolon(); return finishNode(node); } function parseTryStatement() { - var node = createNode(213); + var node = createNode(215); parseExpected(100); node.tryBlock = parseBlock(false); node.catchClause = token === 72 ? parseCatchClause() : undefined; @@ -9327,7 +9652,7 @@ var ts; return finishNode(node); } function parseCatchClause() { - var result = createNode(248); + var result = createNode(251); parseExpected(72); if (parseExpected(17)) { result.variableDeclaration = parseVariableDeclaration(); @@ -9337,7 +9662,7 @@ var ts; return finishNode(result); } function parseDebuggerStatement() { - var node = createNode(214); + var node = createNode(216); parseExpected(76); parseSemicolon(); return finishNode(node); @@ -9346,13 +9671,13 @@ var ts; var fullStart = scanner.getStartPos(); var expression = allowInAnd(parseExpression); if (expression.kind === 69 && parseOptional(54)) { - var labeledStatement = createNode(211, fullStart); + var labeledStatement = createNode(213, fullStart); labeledStatement.label = expression; labeledStatement.statement = parseStatement(); return addJSDocComment(finishNode(labeledStatement)); } else { - var expressionStatement = createNode(199, fullStart); + var expressionStatement = createNode(201, fullStart); expressionStatement.expression = expression; parseSemicolon(); return addJSDocComment(finishNode(expressionStatement)); @@ -9398,8 +9723,9 @@ var ts; return false; } continue; - case 135: - return nextToken() === 15; + case 136: + nextToken(); + return token === 15 || token === 69 || token === 82; case 89: nextToken(); return token === 9 || token === 37 || @@ -9407,7 +9733,8 @@ var ts; case 82: nextToken(); if (token === 56 || token === 37 || - token === 15 || token === 77) { + token === 15 || token === 77 || + token === 116) { return true; } continue; @@ -9457,7 +9784,7 @@ var ts; case 125: case 126: case 133: - case 135: + case 136: return true; case 112: case 110: @@ -9502,9 +9829,9 @@ var ts; case 86: return parseForOrForInOrForOfStatement(); case 75: - return parseBreakOrContinueStatement(206); + return parseBreakOrContinueStatement(208); case 70: - return parseBreakOrContinueStatement(207); + return parseBreakOrContinueStatement(209); case 94: return parseReturnStatement(); case 105: @@ -9537,7 +9864,7 @@ var ts; case 115: case 113: case 127: - case 135: + case 136: if (isStartOfDeclaration()) { return parseDeclaration(); } @@ -9564,7 +9891,7 @@ var ts; return parseTypeAliasDeclaration(fullStart, decorators, modifiers); case 81: return parseEnumDeclaration(fullStart, decorators, modifiers); - case 135: + case 136: case 125: case 126: return parseModuleDeclaration(fullStart, decorators, modifiers); @@ -9572,12 +9899,18 @@ var ts; return parseImportDeclarationOrImportEqualsDeclaration(fullStart, decorators, modifiers); case 82: nextToken(); - return token === 77 || token === 56 ? - parseExportAssignment(fullStart, decorators, modifiers) : - parseExportDeclaration(fullStart, decorators, modifiers); + switch (token) { + case 77: + case 56: + return parseExportAssignment(fullStart, decorators, modifiers); + case 116: + return parseGlobalModuleExportDeclaration(fullStart, decorators, modifiers); + default: + return parseExportDeclaration(fullStart, decorators, modifiers); + } default: if (decorators || modifiers) { - var node = createMissingNode(235, true, ts.Diagnostics.Declaration_expected); + var node = createMissingNode(238, true, ts.Diagnostics.Declaration_expected); node.pos = fullStart; node.decorators = decorators; setModifiers(node, modifiers); @@ -9598,16 +9931,16 @@ var ts; } function parseArrayBindingElement() { if (token === 24) { - return createNode(191); + return createNode(192); } - var node = createNode(167); + var node = createNode(168); node.dotDotDotToken = parseOptionalToken(22); node.name = parseIdentifierOrPattern(); node.initializer = parseBindingElementInitializer(false); return finishNode(node); } function parseObjectBindingElement() { - var node = createNode(167); + var node = createNode(168); var tokenIsIdentifier = isIdentifier(); var propertyName = parsePropertyName(); if (tokenIsIdentifier && token !== 54) { @@ -9622,14 +9955,14 @@ var ts; return finishNode(node); } function parseObjectBindingPattern() { - var node = createNode(165); + var node = createNode(166); parseExpected(15); node.elements = parseDelimitedList(9, parseObjectBindingElement); parseExpected(16); return finishNode(node); } function parseArrayBindingPattern() { - var node = createNode(166); + var node = createNode(167); parseExpected(19); node.elements = parseDelimitedList(10, parseArrayBindingElement); parseExpected(20); @@ -9648,7 +9981,7 @@ var ts; return parseIdentifier(); } function parseVariableDeclaration() { - var node = createNode(215); + var node = createNode(217); node.name = parseIdentifierOrPattern(); node.type = parseTypeAnnotation(); if (!isInOrOfKeyword(token)) { @@ -9657,7 +9990,7 @@ var ts; return finishNode(node); } function parseVariableDeclarationList(inForStatementInitializer) { - var node = createNode(216); + var node = createNode(218); switch (token) { case 102: break; @@ -9671,7 +10004,7 @@ var ts; ts.Debug.fail(); } nextToken(); - if (token === 136 && lookAhead(canFollowContextualOfKeyword)) { + if (token === 137 && lookAhead(canFollowContextualOfKeyword)) { node.declarations = createMissingList(); } else { @@ -9686,7 +10019,7 @@ var ts; return nextTokenIsIdentifier() && nextToken() === 18; } function parseVariableStatement(fullStart, decorators, modifiers) { - var node = createNode(197, fullStart); + var node = createNode(199, fullStart); node.decorators = decorators; setModifiers(node, modifiers); node.declarationList = parseVariableDeclarationList(false); @@ -9694,7 +10027,7 @@ var ts; return addJSDocComment(finishNode(node)); } function parseFunctionDeclaration(fullStart, decorators, modifiers) { - var node = createNode(217, fullStart); + var node = createNode(219, fullStart); node.decorators = decorators; setModifiers(node, modifiers); parseExpected(87); @@ -9707,7 +10040,7 @@ var ts; return addJSDocComment(finishNode(node)); } function parseConstructorDeclaration(pos, decorators, modifiers) { - var node = createNode(146, pos); + var node = createNode(147, pos); node.decorators = decorators; setModifiers(node, modifiers); parseExpected(121); @@ -9716,7 +10049,7 @@ var ts; return addJSDocComment(finishNode(node)); } function parseMethodDeclaration(fullStart, decorators, modifiers, asteriskToken, name, questionToken, diagnosticMessage) { - var method = createNode(145, fullStart); + var method = createNode(146, fullStart); method.decorators = decorators; setModifiers(method, modifiers); method.asteriskToken = asteriskToken; @@ -9729,7 +10062,7 @@ var ts; return addJSDocComment(finishNode(method)); } function parsePropertyDeclaration(fullStart, decorators, modifiers, name, questionToken) { - var property = createNode(143, fullStart); + var property = createNode(144, fullStart); property.decorators = decorators; setModifiers(property, modifiers); property.name = name; @@ -9826,7 +10159,7 @@ var ts; decorators = []; decorators.pos = decoratorStart; } - var decorator = createNode(141, decoratorStart); + var decorator = createNode(142, decoratorStart); decorator.expression = doInDecoratorContext(parseLeftHandSideExpressionOrHigher); decorators.push(finishNode(decorator)); } @@ -9882,7 +10215,7 @@ var ts; } function parseClassElement() { if (token === 23) { - var result = createNode(195); + var result = createNode(197); nextToken(); return finishNode(result); } @@ -9913,10 +10246,10 @@ var ts; ts.Debug.fail("Should not have attempted to parse class member declaration."); } function parseClassExpression() { - return parseClassDeclarationOrExpression(scanner.getStartPos(), undefined, undefined, 190); + return parseClassDeclarationOrExpression(scanner.getStartPos(), undefined, undefined, 191); } function parseClassDeclaration(fullStart, decorators, modifiers) { - return parseClassDeclarationOrExpression(fullStart, decorators, modifiers, 218); + return parseClassDeclarationOrExpression(fullStart, decorators, modifiers, 220); } function parseClassDeclarationOrExpression(fullStart, decorators, modifiers, kind) { var node = createNode(kind, fullStart); @@ -9951,7 +10284,7 @@ var ts; } function parseHeritageClause() { if (token === 83 || token === 106) { - var node = createNode(247); + var node = createNode(250); node.token = token; nextToken(); node.types = parseDelimitedList(7, parseExpressionWithTypeArguments); @@ -9960,7 +10293,7 @@ var ts; return undefined; } function parseExpressionWithTypeArguments() { - var node = createNode(192); + var node = createNode(193); node.expression = parseLeftHandSideExpressionOrHigher(); if (token === 25) { node.typeArguments = parseBracketedList(18, parseType, 25, 27); @@ -9974,7 +10307,7 @@ var ts; return parseList(5, parseClassElement); } function parseInterfaceDeclaration(fullStart, decorators, modifiers) { - var node = createNode(219, fullStart); + var node = createNode(221, fullStart); node.decorators = decorators; setModifiers(node, modifiers); parseExpected(107); @@ -9985,7 +10318,7 @@ var ts; return finishNode(node); } function parseTypeAliasDeclaration(fullStart, decorators, modifiers) { - var node = createNode(220, fullStart); + var node = createNode(222, fullStart); node.decorators = decorators; setModifiers(node, modifiers); parseExpected(133); @@ -9997,13 +10330,13 @@ var ts; return finishNode(node); } function parseEnumMember() { - var node = createNode(251, scanner.getStartPos()); + var node = createNode(254, scanner.getStartPos()); node.name = parsePropertyName(); node.initializer = allowInAnd(parseNonParameterInitializer); return finishNode(node); } function parseEnumDeclaration(fullStart, decorators, modifiers) { - var node = createNode(221, fullStart); + var node = createNode(223, fullStart); node.decorators = decorators; setModifiers(node, modifiers); parseExpected(81); @@ -10018,7 +10351,7 @@ var ts; return finishNode(node); } function parseModuleBlock() { - var node = createNode(223, scanner.getStartPos()); + var node = createNode(225, scanner.getStartPos()); if (parseExpected(15)) { node.statements = parseList(1, parseStatement); parseExpected(16); @@ -10029,7 +10362,7 @@ var ts; return finishNode(node); } function parseModuleOrNamespaceDeclaration(fullStart, decorators, modifiers, flags) { - var node = createNode(222, fullStart); + var node = createNode(224, fullStart); var namespaceFlag = flags & 4096; node.decorators = decorators; setModifiers(node, modifiers); @@ -10041,10 +10374,10 @@ var ts; return finishNode(node); } function parseAmbientExternalModuleDeclaration(fullStart, decorators, modifiers) { - var node = createNode(222, fullStart); + var node = createNode(224, fullStart); node.decorators = decorators; setModifiers(node, modifiers); - if (token === 135) { + if (token === 136) { node.name = parseIdentifier(); node.flags |= 131072; } @@ -10056,7 +10389,7 @@ var ts; } function parseModuleDeclaration(fullStart, decorators, modifiers) { var flags = modifiers ? modifiers.flags : 0; - if (token === 135) { + if (token === 136) { return parseAmbientExternalModuleDeclaration(fullStart, decorators, modifiers); } else if (parseOptional(126)) { @@ -10080,14 +10413,24 @@ var ts; function nextTokenIsSlash() { return nextToken() === 39; } + function parseGlobalModuleExportDeclaration(fullStart, decorators, modifiers) { + var exportDeclaration = createNode(227, fullStart); + exportDeclaration.decorators = decorators; + exportDeclaration.modifiers = modifiers; + parseExpected(116); + parseExpected(126); + exportDeclaration.name = parseIdentifier(); + parseExpected(23); + return finishNode(exportDeclaration); + } function parseImportDeclarationOrImportEqualsDeclaration(fullStart, decorators, modifiers) { parseExpected(89); var afterImportPos = scanner.getStartPos(); var identifier; if (isIdentifier()) { identifier = parseIdentifier(); - if (token !== 24 && token !== 134) { - var importEqualsDeclaration = createNode(225, fullStart); + if (token !== 24 && token !== 135) { + var importEqualsDeclaration = createNode(228, fullStart); importEqualsDeclaration.decorators = decorators; setModifiers(importEqualsDeclaration, modifiers); importEqualsDeclaration.name = identifier; @@ -10097,27 +10440,27 @@ var ts; return finishNode(importEqualsDeclaration); } } - var importDeclaration = createNode(226, fullStart); + var importDeclaration = createNode(229, fullStart); importDeclaration.decorators = decorators; setModifiers(importDeclaration, modifiers); if (identifier || token === 37 || token === 15) { importDeclaration.importClause = parseImportClause(identifier, afterImportPos); - parseExpected(134); + parseExpected(135); } importDeclaration.moduleSpecifier = parseModuleSpecifier(); parseSemicolon(); return finishNode(importDeclaration); } function parseImportClause(identifier, fullStart) { - var importClause = createNode(227, fullStart); + var importClause = createNode(230, fullStart); if (identifier) { importClause.name = identifier; } if (!importClause.name || parseOptional(24)) { - importClause.namedBindings = token === 37 ? parseNamespaceImport() : parseNamedImportsOrExports(229); + importClause.namedBindings = token === 37 ? parseNamespaceImport() : parseNamedImportsOrExports(232); } return finishNode(importClause); } @@ -10127,7 +10470,7 @@ var ts; : parseEntityName(false); } function parseExternalModuleReference() { - var node = createNode(236); + var node = createNode(239); parseExpected(128); parseExpected(17); node.expression = parseModuleSpecifier(); @@ -10145,7 +10488,7 @@ var ts; } } function parseNamespaceImport() { - var namespaceImport = createNode(228); + var namespaceImport = createNode(231); parseExpected(37); parseExpected(116); namespaceImport.name = parseIdentifier(); @@ -10153,14 +10496,14 @@ var ts; } function parseNamedImportsOrExports(kind) { var node = createNode(kind); - node.elements = parseBracketedList(21, kind === 229 ? parseImportSpecifier : parseExportSpecifier, 15, 16); + node.elements = parseBracketedList(21, kind === 232 ? parseImportSpecifier : parseExportSpecifier, 15, 16); return finishNode(node); } function parseExportSpecifier() { - return parseImportOrExportSpecifier(234); + return parseImportOrExportSpecifier(237); } function parseImportSpecifier() { - return parseImportOrExportSpecifier(230); + return parseImportOrExportSpecifier(233); } function parseImportOrExportSpecifier(kind) { var node = createNode(kind); @@ -10179,23 +10522,23 @@ var ts; else { node.name = identifierName; } - if (kind === 230 && checkIdentifierIsKeyword) { + if (kind === 233 && checkIdentifierIsKeyword) { parseErrorAtPosition(checkIdentifierStart, checkIdentifierEnd - checkIdentifierStart, ts.Diagnostics.Identifier_expected); } return finishNode(node); } function parseExportDeclaration(fullStart, decorators, modifiers) { - var node = createNode(232, fullStart); + var node = createNode(235, fullStart); node.decorators = decorators; setModifiers(node, modifiers); if (parseOptional(37)) { - parseExpected(134); + parseExpected(135); node.moduleSpecifier = parseModuleSpecifier(); } else { - node.exportClause = parseNamedImportsOrExports(233); - if (token === 134 || (token === 9 && !scanner.hasPrecedingLineBreak())) { - parseExpected(134); + node.exportClause = parseNamedImportsOrExports(236); + if (token === 135 || (token === 9 && !scanner.hasPrecedingLineBreak())) { + parseExpected(135); node.moduleSpecifier = parseModuleSpecifier(); } } @@ -10203,7 +10546,7 @@ var ts; return finishNode(node); } function parseExportAssignment(fullStart, decorators, modifiers) { - var node = createNode(231, fullStart); + var node = createNode(234, fullStart); node.decorators = decorators; setModifiers(node, modifiers); if (parseOptional(56)) { @@ -10219,6 +10562,7 @@ var ts; function processReferenceComments(sourceFile) { var triviaScanner = ts.createScanner(sourceFile.languageVersion, false, 0, sourceText); var referencedFiles = []; + var typeReferenceDirectives = []; var amdDependencies = []; var amdModuleName; while (true) { @@ -10239,7 +10583,12 @@ var ts; sourceFile.hasNoDefaultLib = referencePathMatchResult.isNoDefaultLib; var diagnosticMessage = referencePathMatchResult.diagnosticMessage; if (fileReference) { - referencedFiles.push(fileReference); + if (referencePathMatchResult.isTypeReferenceDirective) { + typeReferenceDirectives.push(fileReference); + } + else { + referencedFiles.push(fileReference); + } } if (diagnosticMessage) { parseDiagnostics.push(ts.createFileDiagnostic(sourceFile, range.pos, range.end - range.pos, diagnosticMessage)); @@ -10269,16 +10618,17 @@ var ts; } } sourceFile.referencedFiles = referencedFiles; + sourceFile.typeReferenceDirectives = typeReferenceDirectives; sourceFile.amdDependencies = amdDependencies; sourceFile.moduleName = amdModuleName; } function setExternalModuleIndicator(sourceFile) { sourceFile.externalModuleIndicator = ts.forEach(sourceFile.statements, function (node) { return node.flags & 1 - || node.kind === 225 && node.moduleReference.kind === 236 - || node.kind === 226 - || node.kind === 231 - || node.kind === 232 + || node.kind === 228 && node.moduleReference.kind === 239 + || node.kind === 229 + || node.kind === 234 + || node.kind === 235 ? node : undefined; }); @@ -10313,7 +10663,7 @@ var ts; } JSDocParser.parseJSDocTypeExpressionForTests = parseJSDocTypeExpressionForTests; function parseJSDocTypeExpression() { - var result = createNode(253, scanner.getTokenPos()); + var result = createNode(256, scanner.getTokenPos()); parseExpected(15); result.type = parseJSDocTopLevelType(); parseExpected(16); @@ -10324,12 +10674,12 @@ var ts; function parseJSDocTopLevelType() { var type = parseJSDocType(); if (token === 47) { - var unionType = createNode(257, type.pos); + var unionType = createNode(260, type.pos); unionType.types = parseJSDocTypeList(type); type = finishNode(unionType); } if (token === 56) { - var optionalType = createNode(264, type.pos); + var optionalType = createNode(267, type.pos); nextToken(); optionalType.type = type; type = finishNode(optionalType); @@ -10340,20 +10690,20 @@ var ts; var type = parseBasicTypeExpression(); while (true) { if (token === 19) { - var arrayType = createNode(256, type.pos); + var arrayType = createNode(259, type.pos); arrayType.elementType = type; nextToken(); parseExpected(20); type = finishNode(arrayType); } else if (token === 53) { - var nullableType = createNode(259, type.pos); + var nullableType = createNode(262, type.pos); nullableType.type = type; nextToken(); type = finishNode(nullableType); } else if (token === 49) { - var nonNullableType = createNode(260, type.pos); + var nonNullableType = createNode(263, type.pos); nonNullableType.type = type; nextToken(); type = finishNode(nonNullableType); @@ -10397,27 +10747,27 @@ var ts; return parseJSDocTypeReference(); } function parseJSDocThisType() { - var result = createNode(268); + var result = createNode(271); nextToken(); parseExpected(54); result.type = parseJSDocType(); return finishNode(result); } function parseJSDocConstructorType() { - var result = createNode(267); + var result = createNode(270); nextToken(); parseExpected(54); result.type = parseJSDocType(); return finishNode(result); } function parseJSDocVariadicType() { - var result = createNode(266); + var result = createNode(269); nextToken(); result.type = parseJSDocType(); return finishNode(result); } function parseJSDocFunctionType() { - var result = createNode(265); + var result = createNode(268); nextToken(); parseExpected(17); result.parameters = parseDelimitedList(22, parseJSDocParameter); @@ -10430,7 +10780,7 @@ var ts; return finishNode(result); } function parseJSDocParameter() { - var parameter = createNode(140); + var parameter = createNode(141); parameter.type = parseJSDocType(); if (parseOptional(56)) { parameter.questionToken = createNode(56); @@ -10438,7 +10788,7 @@ var ts; return finishNode(parameter); } function parseJSDocTypeReference() { - var result = createNode(263); + var result = createNode(266); result.name = parseSimplePropertyName(); if (token === 25) { result.typeArguments = parseTypeArguments(); @@ -10472,13 +10822,13 @@ var ts; } } function parseQualifiedName(left) { - var result = createNode(137, left.pos); + var result = createNode(138, left.pos); result.left = left; result.right = parseIdentifierName(); return finishNode(result); } function parseJSDocRecordType() { - var result = createNode(261); + var result = createNode(264); nextToken(); result.members = parseDelimitedList(24, parseJSDocRecordMember); checkForTrailingComma(result.members); @@ -10486,7 +10836,7 @@ var ts; return finishNode(result); } function parseJSDocRecordMember() { - var result = createNode(262); + var result = createNode(265); result.name = parseSimplePropertyName(); if (token === 54) { nextToken(); @@ -10495,13 +10845,13 @@ var ts; return finishNode(result); } function parseJSDocNonNullableType() { - var result = createNode(260); + var result = createNode(263); nextToken(); result.type = parseJSDocType(); return finishNode(result); } function parseJSDocTupleType() { - var result = createNode(258); + var result = createNode(261); nextToken(); result.types = parseDelimitedList(25, parseJSDocType); checkForTrailingComma(result.types); @@ -10515,7 +10865,7 @@ var ts; } } function parseJSDocUnionType() { - var result = createNode(257); + var result = createNode(260); nextToken(); result.types = parseJSDocTypeList(parseJSDocType()); parseExpected(18); @@ -10533,7 +10883,7 @@ var ts; return types; } function parseJSDocAllType() { - var result = createNode(254); + var result = createNode(257); nextToken(); return finishNode(result); } @@ -10546,11 +10896,11 @@ var ts; token === 27 || token === 56 || token === 47) { - var result = createNode(255, pos); + var result = createNode(258, pos); return finishNode(result); } else { - var result = createNode(259, pos); + var result = createNode(262, pos); result.type = parseJSDocType(); return finishNode(result); } @@ -10630,7 +10980,7 @@ var ts; if (!tags) { return undefined; } - var result = createNode(269, start); + var result = createNode(272, start); result.tags = tags; return finishNode(result, end); } @@ -10668,7 +11018,7 @@ var ts; return undefined; } function handleUnknownTag(atToken, tagName) { - var result = createNode(270, atToken.pos); + var result = createNode(273, atToken.pos); result.atToken = atToken; result.tagName = tagName; return finishNode(result); @@ -10720,7 +11070,7 @@ var ts; if (!typeExpression) { typeExpression = tryParseTypeExpression(); } - var result = createNode(271, atToken.pos); + var result = createNode(274, atToken.pos); result.atToken = atToken; result.tagName = tagName; result.preParameterName = preName; @@ -10730,27 +11080,27 @@ var ts; return finishNode(result); } function handleReturnTag(atToken, tagName) { - if (ts.forEach(tags, function (t) { return t.kind === 272; })) { + if (ts.forEach(tags, function (t) { return t.kind === 275; })) { parseErrorAtPosition(tagName.pos, scanner.getTokenPos() - tagName.pos, ts.Diagnostics._0_tag_already_specified, tagName.text); } - var result = createNode(272, atToken.pos); + var result = createNode(275, atToken.pos); result.atToken = atToken; result.tagName = tagName; result.typeExpression = tryParseTypeExpression(); return finishNode(result); } function handleTypeTag(atToken, tagName) { - if (ts.forEach(tags, function (t) { return t.kind === 273; })) { + if (ts.forEach(tags, function (t) { return t.kind === 276; })) { parseErrorAtPosition(tagName.pos, scanner.getTokenPos() - tagName.pos, ts.Diagnostics._0_tag_already_specified, tagName.text); } - var result = createNode(273, atToken.pos); + var result = createNode(276, atToken.pos); result.atToken = atToken; result.tagName = tagName; result.typeExpression = tryParseTypeExpression(); return finishNode(result); } function handleTemplateTag(atToken, tagName) { - if (ts.forEach(tags, function (t) { return t.kind === 274; })) { + if (ts.forEach(tags, function (t) { return t.kind === 277; })) { parseErrorAtPosition(tagName.pos, scanner.getTokenPos() - tagName.pos, ts.Diagnostics._0_tag_already_specified, tagName.text); } var typeParameters = []; @@ -10761,7 +11111,7 @@ var ts; parseErrorAtPosition(scanner.getStartPos(), 0, ts.Diagnostics.Identifier_expected); return undefined; } - var typeParameter = createNode(139, name_8.pos); + var typeParameter = createNode(140, name_8.pos); typeParameter.name = name_8; finishNode(typeParameter); typeParameters.push(typeParameter); @@ -10772,7 +11122,7 @@ var ts; break; } } - var result = createNode(274, atToken.pos); + var result = createNode(277, atToken.pos); result.atToken = atToken; result.tagName = tagName; result.typeParameters = typeParameters; @@ -11093,16 +11443,16 @@ var ts; : 4; } function getModuleInstanceState(node) { - if (node.kind === 219 || node.kind === 220) { + if (node.kind === 221 || node.kind === 222) { return 0; } else if (ts.isConstEnumDeclaration(node)) { return 2; } - else if ((node.kind === 226 || node.kind === 225) && !(node.flags & 1)) { + else if ((node.kind === 229 || node.kind === 228) && !(node.flags & 1)) { return 0; } - else if (node.kind === 223) { + else if (node.kind === 225) { var state_1 = 0; ts.forEachChild(node, function (n) { switch (getModuleInstanceState(n)) { @@ -11118,7 +11468,7 @@ var ts; }); return state_1; } - else if (node.kind === 222) { + else if (node.kind === 224) { return getModuleInstanceState(node.body); } else { @@ -11150,6 +11500,7 @@ var ts; var hasAsyncFunctions; var hasDecorators; var hasParameterDecorators; + var hasJsxSpreadAttribute; var inStrictMode; var symbolCount = 0; var Symbol; @@ -11180,6 +11531,7 @@ var ts; hasAsyncFunctions = false; hasDecorators = false; hasParameterDecorators = false; + hasJsxSpreadAttribute = false; } return bindSourceFile; function createSymbol(flags, name) { @@ -11202,7 +11554,7 @@ var ts; if (symbolFlags & 107455) { var valueDeclaration = symbol.valueDeclaration; if (!valueDeclaration || - (valueDeclaration.kind !== node.kind && valueDeclaration.kind === 222)) { + (valueDeclaration.kind !== node.kind && valueDeclaration.kind === 224)) { symbol.valueDeclaration = node; } } @@ -11212,7 +11564,7 @@ var ts; if (ts.isAmbientModule(node)) { return ts.isGlobalScopeAugmentation(node) ? "__global" : "\"" + node.name.text + "\""; } - if (node.name.kind === 138) { + if (node.name.kind === 139) { var nameExpression = node.name.expression; if (ts.isStringOrNumericLiteral(nameExpression.kind)) { return nameExpression.text; @@ -11223,21 +11575,21 @@ var ts; return node.name.text; } switch (node.kind) { - case 146: + case 147: return "__constructor"; - case 154: - case 149: - return "__call"; case 155: case 150: - return "__new"; + return "__call"; + case 156: case 151: + return "__new"; + case 152: return "__index"; - case 232: + case 235: return "__export"; - case 231: + case 234: return node.isExportEquals ? "export=" : "default"; - case 185: + case 186: switch (ts.getSpecialPropertyAssignmentKind(node)) { case 2: return "export="; @@ -11249,13 +11601,13 @@ var ts; } ts.Debug.fail("Unknown binary declaration kind"); break; - case 217: - case 218: + case 219: + case 220: return node.flags & 512 ? "default" : undefined; - case 265: + case 268: return ts.isJSDocConstructSignature(node) ? "__new" : "__call"; - case 140: - ts.Debug.assert(node.parent.kind === 265); + case 141: + ts.Debug.assert(node.parent.kind === 268); var functionType = node.parent; var index = ts.indexOf(functionType.parameters, node); return "p" + index; @@ -11305,7 +11657,7 @@ var ts; function declareModuleMember(node, symbolFlags, symbolExcludes) { var hasExportModifier = ts.getCombinedNodeFlags(node) & 1; if (symbolFlags & 8388608) { - if (node.kind === 234 || (node.kind === 225 && hasExportModifier)) { + if (node.kind === 237 || (node.kind === 228 && hasExportModifier)) { return declareSymbol(container.symbol.exports, container.symbol, node, symbolFlags, symbolExcludes); } else { @@ -11353,10 +11705,10 @@ var ts; var flags = node.flags; flags &= ~98304; flags &= ~3932160; - if (kind === 219) { + if (kind === 221) { seenThisKeyword = false; } - var saveState = kind === 252 || kind === 223 || ts.isFunctionLikeKind(kind); + var saveState = kind === 255 || kind === 225 || ts.isFunctionLikeKind(kind); if (saveState) { savedReachabilityState = currentReachabilityState; savedLabelStack = labelStack; @@ -11377,10 +11729,10 @@ var ts; flags |= 65536; } } - if (kind === 219) { + if (kind === 221) { flags = seenThisKeyword ? flags | 16384 : flags & ~16384; } - if (kind === 252) { + if (kind === 255) { if (hasClassExtends) { flags |= 262144; } @@ -11393,6 +11745,9 @@ var ts; if (hasAsyncFunctions) { flags |= 2097152; } + if (hasJsxSpreadAttribute) { + flags |= 1073741824; + } } node.flags = flags; if (saveState) { @@ -11412,40 +11767,40 @@ var ts; return; } switch (node.kind) { - case 202: + case 204: bindWhileStatement(node); break; - case 201: + case 203: bindDoStatement(node); break; - case 203: + case 205: bindForStatement(node); break; - case 204: - case 205: + case 206: + case 207: bindForInOrForOfStatement(node); break; - case 200: + case 202: bindIfStatement(node); break; - case 208: - case 212: + case 210: + case 214: bindReturnOrThrow(node); break; - case 207: - case 206: + case 209: + case 208: bindBreakOrContinueStatement(node); break; - case 213: + case 215: bindTryStatement(node); break; - case 210: + case 212: bindSwitchStatement(node); break; - case 224: + case 226: bindCaseBlock(node); break; - case 211: + case 213: bindLabeledStatement(node); break; default: @@ -11507,14 +11862,14 @@ var ts; } function bindReturnOrThrow(n) { bind(n.expression); - if (n.kind === 208) { + if (n.kind === 210) { hasExplicitReturn = true; } currentReachabilityState = 4; } function bindBreakOrContinueStatement(n) { bind(n.label); - var isValidJump = jumpToLabel(n.label, n.kind === 207 ? currentReachabilityState : 4); + var isValidJump = jumpToLabel(n.label, n.kind === 209 ? currentReachabilityState : 4); if (isValidJump) { currentReachabilityState = 4; } @@ -11528,24 +11883,27 @@ var ts; var postCatchState = currentReachabilityState; currentReachabilityState = preTryState; bind(n.finallyBlock); - currentReachabilityState = or(postTryState, postCatchState); + currentReachabilityState = n.catchClause ? or(postTryState, postCatchState) : postTryState; } function bindSwitchStatement(n) { var preSwitchState = currentReachabilityState; var postSwitchLabel = pushImplicitLabel(); bind(n.expression); bind(n.caseBlock); - var hasDefault = ts.forEach(n.caseBlock.clauses, function (c) { return c.kind === 246; }); + var hasDefault = ts.forEach(n.caseBlock.clauses, function (c) { return c.kind === 249; }); var postSwitchState = hasDefault && currentReachabilityState !== 2 ? 4 : preSwitchState; popImplicitLabel(postSwitchLabel, postSwitchState); } function bindCaseBlock(n) { var startState = currentReachabilityState; - for (var _i = 0, _a = n.clauses; _i < _a.length; _i++) { - var clause = _a[_i]; + for (var i = 0; i < n.clauses.length; i++) { + var clause = n.clauses[i]; currentReachabilityState = startState; bind(clause); - if (clause.statements.length && currentReachabilityState === 2 && options.noFallthroughCasesInSwitch) { + if (clause.statements.length && + i !== n.clauses.length - 1 && + currentReachabilityState === 2 && + options.noFallthroughCasesInSwitch) { errorOnFirstToken(clause, ts.Diagnostics.Fallthrough_case_in_switch); } } @@ -11560,38 +11918,39 @@ var ts; } function getContainerFlags(node) { switch (node.kind) { - case 190: - case 218: - case 219: + case 191: + case 220: case 221: - case 169: - case 157: - case 261: + case 223: + case 170: + case 158: + case 264: return 1; - case 149: case 150: case 151: - case 145: - case 144: - case 217: + case 152: case 146: + case 145: + case 219: case 147: case 148: - case 154: + case 149: case 155: - case 177: + case 268: + case 156: case 178: - case 222: - case 252: - case 220: - return 5; - case 248: - case 203: - case 204: - case 205: + case 179: case 224: + case 255: + case 222: + return 5; + case 251: + case 205: + case 206: + case 207: + case 226: return 2; - case 196: + case 198: return ts.isFunctionLike(node.parent) ? 0 : 2; } return 0; @@ -11607,35 +11966,35 @@ var ts; } function declareSymbolAndAddToSymbolTableWorker(node, symbolFlags, symbolExcludes) { switch (container.kind) { - case 222: + case 224: return declareModuleMember(node, symbolFlags, symbolExcludes); - case 252: + case 255: return declareSourceFileMember(node, symbolFlags, symbolExcludes); - case 190: - case 218: + case 191: + case 220: return declareClassMember(node, symbolFlags, symbolExcludes); - case 221: + case 223: return declareSymbol(container.symbol.exports, container.symbol, node, symbolFlags, symbolExcludes); - case 157: - case 169: - case 219: - case 261: + case 158: + case 170: + case 221: + case 264: return declareSymbol(container.symbol.members, container.symbol, node, symbolFlags, symbolExcludes); - case 154: case 155: - case 149: + case 156: case 150: case 151: - case 145: - case 144: + case 152: case 146: + case 145: case 147: case 148: - case 217: - case 177: + case 149: + case 219: case 178: - case 265: - case 220: + case 179: + case 268: + case 222: return declareSymbol(container.locals, undefined, node, symbolFlags, symbolExcludes); } } @@ -11650,11 +12009,11 @@ var ts; : declareSymbol(file.locals, undefined, node, symbolFlags, symbolExcludes); } function hasExportDeclarations(node) { - var body = node.kind === 252 ? node : node.body; - if (body.kind === 252 || body.kind === 223) { + var body = node.kind === 255 ? node : node.body; + if (body.kind === 255 || body.kind === 225) { for (var _i = 0, _a = body.statements; _i < _a.length; _i++) { var stat = _a[_i]; - if (stat.kind === 232 || stat.kind === 231) { + if (stat.kind === 235 || stat.kind === 234) { return true; } } @@ -11675,7 +12034,12 @@ var ts; if (node.flags & 1) { errorOnFirstToken(node, ts.Diagnostics.export_modifier_cannot_be_applied_to_ambient_modules_and_module_augmentations_since_they_are_always_visible); } - declareSymbolAndAddToSymbolTable(node, 512, 106639); + if (ts.isExternalModuleAugmentation(node)) { + declareSymbolAndAddToSymbolTable(node, 1024, 0); + } + else { + declareSymbolAndAddToSymbolTable(node, 512, 106639); + } } else { var state = getModuleInstanceState(node); @@ -11716,7 +12080,7 @@ var ts; continue; } var identifier = prop.name; - var currentKind = prop.kind === 249 || prop.kind === 250 || prop.kind === 145 + var currentKind = prop.kind === 252 || prop.kind === 253 || prop.kind === 146 ? 1 : 2; var existingKind = seen[identifier.text]; @@ -11738,10 +12102,10 @@ var ts; } function bindBlockScopedDeclaration(node, symbolFlags, symbolExcludes) { switch (blockScopeContainer.kind) { - case 222: + case 224: declareModuleMember(node, symbolFlags, symbolExcludes); break; - case 252: + case 255: if (ts.isExternalModule(container)) { declareModuleMember(node, symbolFlags, symbolExcludes); break; @@ -11863,17 +12227,17 @@ var ts; } function updateStrictMode(node) { switch (node.kind) { - case 252: - case 223: + case 255: + case 225: updateStrictModeStatementList(node.statements); return; - case 196: + case 198: if (ts.isFunctionLike(node.parent)) { updateStrictModeStatementList(node.statements); } return; - case 218: - case 190: + case 220: + case 191: inStrictMode = true; return; } @@ -11892,13 +12256,13 @@ var ts; } function isUseStrictPrologueDirective(node) { var nodeText = ts.getTextOfNodeFromSourceText(file.text, node.expression); - return nodeText === "\"use strict\"" || nodeText === "'use strict'"; + return nodeText === '"use strict"' || nodeText === "'use strict'"; } function bindWorker(node) { switch (node.kind) { case 69: return checkStrictModeIdentifier(node); - case 185: + case 186: if (ts.isInJavaScriptFile(node)) { var specialKind = ts.getSpecialPropertyAssignmentKind(node); switch (specialKind) { @@ -11921,94 +12285,99 @@ var ts; } } return checkStrictModeBinaryExpression(node); - case 248: + case 251: return checkStrictModeCatchClause(node); - case 179: + case 180: return checkStrictModeDeleteExpression(node); case 8: return checkStrictModeNumericLiteral(node); - case 184: + case 185: return checkStrictModePostfixUnaryExpression(node); - case 183: + case 184: return checkStrictModePrefixUnaryExpression(node); - case 209: + case 211: return checkStrictModeWithStatement(node); - case 163: + case 164: seenThisKeyword = true; return; - case 152: + case 153: return checkTypePredicate(node); - case 139: - return declareSymbolAndAddToSymbolTable(node, 262144, 530912); case 140: + return declareSymbolAndAddToSymbolTable(node, 262144, 530912); + case 141: return bindParameter(node); - case 215: - case 167: + case 217: + case 168: return bindVariableDeclarationOrBindingElement(node); + case 144: case 143: - case 142: - case 262: + case 265: return bindPropertyOrMethodOrAccessor(node, 4 | (node.questionToken ? 536870912 : 0), 107455); - case 249: - case 250: + case 252: + case 253: return bindPropertyOrMethodOrAccessor(node, 4, 107455); - case 251: + case 254: return bindPropertyOrMethodOrAccessor(node, 8, 107455); - case 149: + case 246: + hasJsxSpreadAttribute = true; + return; case 150: case 151: + case 152: return declareSymbolAndAddToSymbolTable(node, 131072, 0); - case 145: - case 144: - return bindPropertyOrMethodOrAccessor(node, 8192 | (node.questionToken ? 536870912 : 0), ts.isObjectLiteralMethod(node) ? 107455 : 99263); - case 217: - return bindFunctionDeclaration(node); case 146: - return declareSymbolAndAddToSymbolTable(node, 16384, 0); + case 145: + return bindPropertyOrMethodOrAccessor(node, 8192 | (node.questionToken ? 536870912 : 0), ts.isObjectLiteralMethod(node) ? 107455 : 99263); + case 219: + return bindFunctionDeclaration(node); case 147: - return bindPropertyOrMethodOrAccessor(node, 32768, 41919); + return declareSymbolAndAddToSymbolTable(node, 16384, 0); case 148: + return bindPropertyOrMethodOrAccessor(node, 32768, 41919); + case 149: return bindPropertyOrMethodOrAccessor(node, 65536, 74687); - case 154: case 155: - case 265: + case 156: + case 268: return bindFunctionOrConstructorType(node); - case 157: - case 261: + case 158: + case 264: return bindAnonymousDeclaration(node, 2048, "__type"); - case 169: + case 170: return bindObjectLiteralExpression(node); - case 177: case 178: + case 179: return bindFunctionExpression(node); - case 172: + case 173: if (ts.isInJavaScriptFile(node)) { bindCallExpression(node); } break; - case 190: - case 218: - return bindClassLikeDeclaration(node); - case 219: - return bindBlockScopedDeclaration(node, 64, 792960); + case 191: case 220: - return bindBlockScopedDeclaration(node, 524288, 793056); + return bindClassLikeDeclaration(node); case 221: - return bindEnumDeclaration(node); + return bindBlockScopedDeclaration(node, 64, 792960); case 222: + return bindBlockScopedDeclaration(node, 524288, 793056); + case 223: + return bindEnumDeclaration(node); + case 224: return bindModuleDeclaration(node); - case 225: case 228: - case 230: - case 234: + case 231: + case 233: + case 237: return declareSymbolAndAddToSymbolTable(node, 8388608, 8388608); case 227: + return bindGlobalModuleExportDeclaration(node); + case 230: return bindImportClause(node); - case 232: + case 235: return bindExportDeclaration(node); - case 231: + case 234: return bindExportAssignment(node); - case 252: + case 255: return bindSourceFileIfExternalModule(); } } @@ -12017,7 +12386,7 @@ var ts; if (parameterName && parameterName.kind === 69) { checkStrictModeIdentifier(parameterName); } - if (parameterName && parameterName.kind === 163) { + if (parameterName && parameterName.kind === 164) { seenThisKeyword = true; } bind(type); @@ -12032,17 +12401,39 @@ var ts; bindAnonymousDeclaration(file, 512, "\"" + ts.removeFileExtension(file.fileName) + "\""); } function bindExportAssignment(node) { - var boundExpression = node.kind === 231 ? node.expression : node.right; + var boundExpression = node.kind === 234 ? node.expression : node.right; if (!container.symbol || !container.symbol.exports) { bindAnonymousDeclaration(node, 8388608, getDeclarationName(node)); } - else if (boundExpression.kind === 69 && node.kind === 231) { + else if (boundExpression.kind === 69 && node.kind === 234) { declareSymbol(container.symbol.exports, container.symbol, node, 8388608, 107455 | 8388608); } else { declareSymbol(container.symbol.exports, container.symbol, node, 4, 107455 | 8388608); } } + function bindGlobalModuleExportDeclaration(node) { + if (node.modifiers && node.modifiers.length) { + file.bindDiagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.Modifiers_cannot_appear_here)); + } + if (node.parent.kind !== 255) { + file.bindDiagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.Global_module_exports_may_only_appear_at_top_level)); + return; + } + else { + var parent_4 = node.parent; + if (!ts.isExternalModule(parent_4)) { + file.bindDiagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.Global_module_exports_may_only_appear_in_module_files)); + return; + } + if (!parent_4.isDeclarationFile) { + file.bindDiagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.Global_module_exports_may_only_appear_in_declaration_files)); + return; + } + } + file.symbol.globalExports = file.symbol.globalExports || {}; + declareSymbol(file.symbol.globalExports, file.symbol, node, 8388608, 8388608); + } function bindExportDeclaration(node) { if (!container.symbol || !container.symbol.exports) { bindAnonymousDeclaration(node, 1073741824, getDeclarationName(node)); @@ -12068,10 +12459,10 @@ var ts; } function bindModuleExportsAssignment(node) { setCommonJsModuleIndicator(node); - bindExportAssignment(node); + declareSymbol(file.symbol.exports, file.symbol, node, 4 | 7340032 | 512, 0); } function bindThisPropertyAssignment(node) { - if (container.kind === 177 || container.kind === 217) { + if (container.kind === 178 || container.kind === 219) { container.symbol.members = container.symbol.members || {}; declareSymbol(container.symbol.members, container.symbol, node, 4, 107455 & ~4); } @@ -12106,7 +12497,7 @@ var ts; hasDecorators = true; } } - if (node.kind === 218) { + if (node.kind === 220) { bindBlockScopedDeclaration(node, 32, 899519); } else { @@ -12256,15 +12647,15 @@ var ts; function checkUnreachable(node) { switch (currentReachabilityState) { case 4: - var reportError = (ts.isStatement(node) && node.kind !== 198) || - node.kind === 218 || - (node.kind === 222 && shouldReportErrorOnModuleDeclaration(node)) || - (node.kind === 221 && (!ts.isConstEnumDeclaration(node) || options.preserveConstEnums)); + var reportError = (ts.isStatement(node) && node.kind !== 200) || + node.kind === 220 || + (node.kind === 224 && shouldReportErrorOnModuleDeclaration(node)) || + (node.kind === 223 && (!ts.isConstEnumDeclaration(node) || options.preserveConstEnums)); if (reportError) { currentReachabilityState = 8; var reportUnreachableCode = !options.allowUnreachableCode && !ts.isInAmbientContext(node) && - (node.kind !== 197 || + (node.kind !== 199 || ts.getCombinedNodeFlags(node.declarationList) & 3072 || ts.forEach(node.declarationList.declarations, function (d) { return d.initializer; })); if (reportUnreachableCode) { @@ -12327,6 +12718,7 @@ var ts; var languageVersion = compilerOptions.target || 0; var modulekind = ts.getEmitModuleKind(compilerOptions); var allowSyntheticDefaultImports = typeof compilerOptions.allowSyntheticDefaultImports !== "undefined" ? compilerOptions.allowSyntheticDefaultImports : modulekind === ts.ModuleKind.System; + var strictNullChecks = compilerOptions.strictNullChecks; var emitResolver = createResolver(); var undefinedSymbol = createSymbol(4 | 67108864, "undefined"); undefinedSymbol.declarations = []; @@ -12341,7 +12733,7 @@ var ts; isUnknownSymbol: function (symbol) { return symbol === unknownSymbol; }, getDiagnostics: getDiagnostics, getGlobalDiagnostics: getGlobalDiagnostics, - getTypeOfSymbolAtLocation: getNarrowedTypeOfSymbol, + getTypeOfSymbolAtLocation: getTypeOfSymbolAtLocation, getSymbolsOfParameterPropertyDeclaration: getSymbolsOfParameterPropertyDeclaration, getDeclaredTypeOfSymbol: getDeclaredTypeOfSymbol, getPropertiesOfType: getPropertiesOfType, @@ -12376,14 +12768,16 @@ var ts; }; var unknownSymbol = createSymbol(4 | 67108864, "unknown"); var resolvingSymbol = createSymbol(67108864, "__resolving__"); + var nullableWideningFlags = strictNullChecks ? 0 : 2097152; var anyType = createIntrinsicType(1, "any"); var stringType = createIntrinsicType(2, "string"); var numberType = createIntrinsicType(4, "number"); var booleanType = createIntrinsicType(8, "boolean"); var esSymbolType = createIntrinsicType(16777216, "symbol"); var voidType = createIntrinsicType(16, "void"); - var undefinedType = createIntrinsicType(32 | 2097152, "undefined"); - var nullType = createIntrinsicType(64 | 2097152, "null"); + var undefinedType = createIntrinsicType(32 | nullableWideningFlags, "undefined"); + var nullType = createIntrinsicType(64 | nullableWideningFlags, "null"); + var emptyArrayElementType = createIntrinsicType(32 | 2097152, "undefined"); var unknownType = createIntrinsicType(1, "unknown"); var emptyObjectType = createAnonymousType(undefined, emptySymbols, emptyArray, emptyArray, undefined, undefined); var emptyUnionType = emptyObjectType; @@ -12392,11 +12786,11 @@ var ts; var anyFunctionType = createAnonymousType(undefined, emptySymbols, emptyArray, emptyArray, undefined, undefined); anyFunctionType.flags |= 8388608; var noConstraintType = createAnonymousType(undefined, emptySymbols, emptyArray, emptyArray, undefined, undefined); - var anySignature = createSignature(undefined, undefined, emptyArray, anyType, undefined, 0, false, false); - var unknownSignature = createSignature(undefined, undefined, emptyArray, unknownType, undefined, 0, false, false); + var anySignature = createSignature(undefined, undefined, undefined, emptyArray, anyType, undefined, 0, false, false); + var unknownSignature = createSignature(undefined, undefined, undefined, emptyArray, unknownType, undefined, 0, false, false); var enumNumberIndexInfo = createIndexInfo(stringType, true); var globals = {}; - var globalESSymbolConstructorSymbol; + var getGlobalESSymbolConstructorSymbol; var getGlobalPromiseConstructorSymbol; var globalObjectType; var globalFunctionType; @@ -12406,13 +12800,13 @@ var ts; var globalNumberType; var globalBooleanType; var globalRegExpType; - var globalTemplateStringsArrayType; - var globalESSymbolType; - var globalIterableType; - var globalIteratorType; - var globalIterableIteratorType; var anyArrayType; var anyReadonlyArrayType; + var getGlobalTemplateStringsArrayType; + var getGlobalESSymbolType; + var getGlobalIterableType; + var getGlobalIteratorType; + var getGlobalIterableIteratorType; var getGlobalClassDecoratorType; var getGlobalParameterDecoratorType; var getGlobalPropertyDecoratorType; @@ -12474,6 +12868,7 @@ var ts; }; var subtypeRelation = {}; var assignableRelation = {}; + var comparableRelation = {}; var identityRelation = {}; var _displayBuilder; var builtinGlobals = (_a = {}, @@ -12562,7 +12957,7 @@ var ts; target.flags |= source.flags; if (source.valueDeclaration && (!target.valueDeclaration || - (target.valueDeclaration.kind === 222 && source.valueDeclaration.kind !== 222))) { + (target.valueDeclaration.kind === 224 && source.valueDeclaration.kind !== 224))) { target.valueDeclaration = source.valueDeclaration; } ts.forEach(source.declarations, function (node) { @@ -12618,7 +13013,7 @@ var ts; } function mergeModuleAugmentation(moduleName) { var moduleAugmentation = moduleName.parent; - if (moduleAugmentation.symbol.valueDeclaration !== moduleAugmentation) { + if (moduleAugmentation.symbol.declarations[0] !== moduleAugmentation) { ts.Debug.assert(moduleAugmentation.symbol.declarations.length > 1); return; } @@ -12666,7 +13061,7 @@ var ts; return nodeLinks[nodeId] || (nodeLinks[nodeId] = {}); } function isGlobalSourceFile(node) { - return node.kind === 252 && !ts.isExternalOrCommonJsModule(node); + return node.kind === 255 && !ts.isExternalOrCommonJsModule(node); } function getSymbol(symbols, name, meaning) { if (meaning && ts.hasProperty(symbols, name)) { @@ -12704,18 +13099,18 @@ var ts; return ts.indexOf(sourceFiles, declarationFile) <= ts.indexOf(sourceFiles, useFile); } if (declaration.pos <= usage.pos) { - return declaration.kind !== 215 || + return declaration.kind !== 217 || !isImmediatelyUsedInInitializerOfBlockScopedVariable(declaration, usage); } return isUsedInFunctionOrNonStaticProperty(declaration, usage); function isImmediatelyUsedInInitializerOfBlockScopedVariable(declaration, usage) { var container = ts.getEnclosingBlockScopeContainer(declaration); - if (declaration.parent.parent.kind === 197 || - declaration.parent.parent.kind === 203) { + if (declaration.parent.parent.kind === 199 || + declaration.parent.parent.kind === 205) { return isSameScopeDescendentOf(usage, declaration, container); } - else if (declaration.parent.parent.kind === 205 || - declaration.parent.parent.kind === 204) { + else if (declaration.parent.parent.kind === 207 || + declaration.parent.parent.kind === 206) { var expression = declaration.parent.parent.expression; return isSameScopeDescendentOf(usage, expression, container); } @@ -12731,7 +13126,7 @@ var ts; return true; } var initializerOfNonStaticProperty = current.parent && - current.parent.kind === 143 && + current.parent.kind === 144 && (current.parent.flags & 32) === 0 && current.parent.initializer === current; if (initializerOfNonStaticProperty) { @@ -12753,18 +13148,18 @@ var ts; if (result = getSymbol(location.locals, name, meaning)) { var useResult = true; if (ts.isFunctionLike(location) && lastLocation && lastLocation !== location.body) { - if (meaning & result.flags & 793056 && lastLocation.kind !== 269) { + if (meaning & result.flags & 793056 && lastLocation.kind !== 272) { useResult = result.flags & 262144 ? lastLocation === location.type || - lastLocation.kind === 140 || - lastLocation.kind === 139 + lastLocation.kind === 141 || + lastLocation.kind === 140 : false; } if (meaning & 107455 && result.flags & 1) { useResult = - lastLocation.kind === 140 || + lastLocation.kind === 141 || (lastLocation === location.type && - result.valueDeclaration.kind === 140); + result.valueDeclaration.kind === 141); } } if (useResult) { @@ -12776,12 +13171,12 @@ var ts; } } switch (location.kind) { - case 252: + case 255: if (!ts.isExternalOrCommonJsModule(location)) break; - case 222: + case 224: var moduleExports = getSymbolOfNode(location).exports; - if (location.kind === 252 || ts.isAmbientModule(location)) { + if (location.kind === 255 || ts.isAmbientModule(location)) { if (result = moduleExports["default"]) { var localSymbol = ts.getLocalSymbolForExportDefault(result); if (localSymbol && (result.flags & meaning) && localSymbol.name === name) { @@ -12791,7 +13186,7 @@ var ts; } if (ts.hasProperty(moduleExports, name) && moduleExports[name].flags === 8388608 && - ts.getDeclarationOfKind(moduleExports[name], 234)) { + ts.getDeclarationOfKind(moduleExports[name], 237)) { break; } } @@ -12799,13 +13194,13 @@ var ts; break loop; } break; - case 221: + case 223: if (result = getSymbol(getSymbolOfNode(location).exports, name, meaning & 8)) { break loop; } break; + case 144: case 143: - case 142: if (ts.isClassLike(location.parent) && !(location.flags & 32)) { var ctor = findConstructorDeclaration(location.parent); if (ctor && ctor.locals) { @@ -12815,9 +13210,9 @@ var ts; } } break; - case 218: - case 190: - case 219: + case 220: + case 191: + case 221: if (result = getSymbol(getSymbolOfNode(location).members, name, meaning & 793056)) { if (lastLocation && lastLocation.flags & 32) { error(errorLocation, ts.Diagnostics.Static_members_cannot_reference_class_type_parameters); @@ -12825,7 +13220,7 @@ var ts; } break loop; } - if (location.kind === 190 && meaning & 32) { + if (location.kind === 191 && meaning & 32) { var className = location.name; if (className && name === className.text) { result = location.symbol; @@ -12833,28 +13228,28 @@ var ts; } } break; - case 138: + case 139: grandparent = location.parent.parent; - if (ts.isClassLike(grandparent) || grandparent.kind === 219) { + if (ts.isClassLike(grandparent) || grandparent.kind === 221) { if (result = getSymbol(getSymbolOfNode(grandparent).members, name, meaning & 793056)) { error(errorLocation, ts.Diagnostics.A_computed_property_name_cannot_reference_a_type_parameter_from_its_containing_type); return undefined; } } break; - case 145: - case 144: case 146: + case 145: case 147: case 148: - case 217: - case 178: + case 149: + case 219: + case 179: if (meaning & 3 && name === "arguments") { result = argumentsSymbol; break loop; } break; - case 177: + case 178: if (meaning & 3 && name === "arguments") { result = argumentsSymbol; break loop; @@ -12867,8 +13262,8 @@ var ts; } } break; - case 141: - if (location.parent && location.parent.kind === 140) { + case 142: + if (location.parent && location.parent.kind === 141) { location = location.parent; } if (location.parent && ts.isClassElement(location.parent)) { @@ -12938,7 +13333,7 @@ var ts; ts.Debug.assert((result.flags & 2) !== 0); var declaration = ts.forEach(result.declarations, function (d) { return ts.isBlockOrCatchScoped(d) ? d : undefined; }); ts.Debug.assert(declaration !== undefined, "Block-scoped variable declaration is undefined"); - if (!isBlockScopedNameDeclaredBeforeUse(ts.getAncestor(declaration, 215), errorLocation)) { + if (!isBlockScopedNameDeclaredBeforeUse(ts.getAncestor(declaration, 217), errorLocation)) { error(errorLocation, ts.Diagnostics.Block_scoped_variable_0_used_before_its_declaration, ts.declarationNameToString(declaration.name)); } } @@ -12955,10 +13350,10 @@ var ts; } function getAnyImportSyntax(node) { if (ts.isAliasSymbolDeclaration(node)) { - if (node.kind === 225) { + if (node.kind === 228) { return node; } - while (node && node.kind !== 226) { + while (node && node.kind !== 229) { node = node.parent; } return node; @@ -12968,7 +13363,7 @@ var ts; return ts.forEach(symbol.declarations, function (d) { return ts.isAliasSymbolDeclaration(d) ? d : undefined; }); } function getTargetOfImportEqualsDeclaration(node) { - if (node.moduleReference.kind === 236) { + if (node.moduleReference.kind === 239) { return resolveExternalModuleSymbol(resolveExternalModuleName(node, ts.getExternalModuleImportEqualsDeclarationExpression(node))); } return getSymbolOfPartOfRightHandSideOfImportEquals(node.moduleReference, node); @@ -12976,7 +13371,9 @@ var ts; function getTargetOfImportClause(node) { var moduleSymbol = resolveExternalModuleName(node, node.parent.moduleSpecifier); if (moduleSymbol) { - var exportDefaultSymbol = resolveSymbol(moduleSymbol.exports["default"]); + var exportDefaultSymbol = moduleSymbol.exports["export="] ? + getPropertyOfType(getTypeOfSymbol(moduleSymbol.exports["export="]), "default") : + resolveSymbol(moduleSymbol.exports["default"]); if (!exportDefaultSymbol && !allowSyntheticDefaultImports) { error(node.name, ts.Diagnostics.Module_0_has_no_default_export, symbolToString(moduleSymbol)); } @@ -13027,8 +13424,14 @@ var ts; if (targetSymbol) { var name_9 = specifier.propertyName || specifier.name; if (name_9.text) { + var symbolFromVariable = void 0; + if (moduleSymbol && moduleSymbol.exports && moduleSymbol.exports["export="]) { + symbolFromVariable = getPropertyOfType(getTypeOfSymbol(targetSymbol), name_9.text); + } + else { + symbolFromVariable = getPropertyOfVariable(targetSymbol, name_9.text); + } var symbolFromModule = getExportOfModule(targetSymbol, name_9.text); - var symbolFromVariable = getPropertyOfVariable(targetSymbol, name_9.text); var symbol = symbolFromModule && symbolFromVariable ? combineValueAndTypeSymbols(symbolFromVariable, symbolFromModule) : symbolFromModule || symbolFromVariable; @@ -13042,6 +13445,9 @@ var ts; function getTargetOfImportSpecifier(node) { return getExternalModuleMember(node.parent.parent.parent, node); } + function getTargetOfGlobalModuleExportDeclaration(node) { + return resolveExternalModuleSymbol(node.parent.symbol); + } function getTargetOfExportSpecifier(node) { return node.parent.parent.moduleSpecifier ? getExternalModuleMember(node.parent.parent, node) : @@ -13052,18 +13458,20 @@ var ts; } function getTargetOfAliasDeclaration(node) { switch (node.kind) { - case 225: - return getTargetOfImportEqualsDeclaration(node); - case 227: - return getTargetOfImportClause(node); case 228: - return getTargetOfNamespaceImport(node); + return getTargetOfImportEqualsDeclaration(node); case 230: - return getTargetOfImportSpecifier(node); - case 234: - return getTargetOfExportSpecifier(node); + return getTargetOfImportClause(node); case 231: + return getTargetOfNamespaceImport(node); + case 233: + return getTargetOfImportSpecifier(node); + case 237: + return getTargetOfExportSpecifier(node); + case 234: return getTargetOfExportAssignment(node); + case 227: + return getTargetOfGlobalModuleExportDeclaration(node); } } function resolveSymbol(symbol) { @@ -13104,10 +13512,10 @@ var ts; if (!links.referenced) { links.referenced = true; var node = getDeclarationOfAliasSymbol(symbol); - if (node.kind === 231) { + if (node.kind === 234) { checkExpressionCached(node.expression); } - else if (node.kind === 234) { + else if (node.kind === 237) { checkExpressionCached(node.propertyName || node.name); } else if (ts.isInternalModuleImportEqualsDeclaration(node)) { @@ -13117,17 +13525,17 @@ var ts; } function getSymbolOfPartOfRightHandSideOfImportEquals(entityName, importDeclaration) { if (!importDeclaration) { - importDeclaration = ts.getAncestor(entityName, 225); + importDeclaration = ts.getAncestor(entityName, 228); ts.Debug.assert(importDeclaration !== undefined); } if (entityName.kind === 69 && ts.isRightSideOfQualifiedNameOrPropertyAccess(entityName)) { entityName = entityName.parent; } - if (entityName.kind === 69 || entityName.parent.kind === 137) { + if (entityName.kind === 69 || entityName.parent.kind === 138) { return resolveEntityName(entityName, 1536); } else { - ts.Debug.assert(entityName.parent.kind === 225); + ts.Debug.assert(entityName.parent.kind === 228); return resolveEntityName(entityName, 107455 | 793056 | 1536); } } @@ -13146,9 +13554,9 @@ var ts; return undefined; } } - else if (name.kind === 137 || name.kind === 170) { - var left = name.kind === 137 ? name.left : name.expression; - var right = name.kind === 137 ? name.right : name.name; + else if (name.kind === 138 || name.kind === 171) { + var left = name.kind === 138 ? name.left : name.expression; + var right = name.kind === 138 ? name.right : name.name; var namespace = resolveEntityName(left, 1536, ignoreErrors); if (!namespace || namespace === unknownSymbol || ts.nodeIsMissing(right)) { return undefined; @@ -13181,7 +13589,7 @@ var ts; } var isRelative = ts.isExternalModuleNameRelative(moduleName); if (!isRelative) { - var symbol = getSymbol(globals, "\"" + moduleName + "\"", 512); + var symbol = getSymbol(globals, '"' + moduleName + '"', 512); if (symbol) { return getMergedSymbol(symbol); } @@ -13311,7 +13719,7 @@ var ts; var members = node.members; for (var _i = 0, members_1 = members; _i < members_1.length; _i++) { var member = members_1[_i]; - if (member.kind === 146 && ts.nodeIsPresent(member.body)) { + if (member.kind === 147 && ts.nodeIsPresent(member.body)) { return member; } } @@ -13377,21 +13785,15 @@ var ts; } } switch (location_1.kind) { - case 252: + case 255: if (!ts.isExternalOrCommonJsModule(location_1)) { break; } - case 222: + case 224: if (result = callback(getSymbolOfNode(location_1).exports)) { return result; } break; - case 218: - case 219: - if (result = callback(getSymbolOfNode(location_1).members)) { - return result; - } - break; } } return callback(globals); @@ -13420,7 +13822,7 @@ var ts; return ts.forEachValue(symbols, function (symbolFromSymbolTable) { if (symbolFromSymbolTable.flags & 8388608 && symbolFromSymbolTable.name !== "export=" - && !ts.getDeclarationOfKind(symbolFromSymbolTable, 234)) { + && !ts.getDeclarationOfKind(symbolFromSymbolTable, 237)) { if (!useOnlyExternalAliasing || ts.forEach(symbolFromSymbolTable.declarations, ts.isExternalModuleImportEqualsDeclaration)) { var resolvedImportedSymbol = resolveAlias(symbolFromSymbolTable); @@ -13436,7 +13838,9 @@ var ts; }); } if (symbol) { - return forEachSymbolTableInScope(enclosingDeclaration, getAccessibleSymbolChainFromSymbolTable); + if (!(isPropertyOrMethodDeclarationSymbol(symbol))) { + return forEachSymbolTableInScope(enclosingDeclaration, getAccessibleSymbolChainFromSymbolTable); + } } } function needsQualification(symbol, enclosingDeclaration, meaning) { @@ -13449,7 +13853,7 @@ var ts; if (symbolFromSymbolTable === symbol) { return true; } - symbolFromSymbolTable = (symbolFromSymbolTable.flags & 8388608 && !ts.getDeclarationOfKind(symbolFromSymbolTable, 234)) ? resolveAlias(symbolFromSymbolTable) : symbolFromSymbolTable; + symbolFromSymbolTable = (symbolFromSymbolTable.flags & 8388608 && !ts.getDeclarationOfKind(symbolFromSymbolTable, 237)) ? resolveAlias(symbolFromSymbolTable) : symbolFromSymbolTable; if (symbolFromSymbolTable.flags & meaning) { qualify = true; return true; @@ -13458,6 +13862,24 @@ var ts; }); return qualify; } + function isPropertyOrMethodDeclarationSymbol(symbol) { + if (symbol.declarations && symbol.declarations.length) { + for (var _i = 0, _a = symbol.declarations; _i < _a.length; _i++) { + var declaration = _a[_i]; + switch (declaration.kind) { + case 144: + case 146: + case 148: + case 149: + continue; + default: + return false; + } + } + return true; + } + return false; + } function isSymbolAccessible(symbol, enclosingDeclaration, meaning) { if (symbol && enclosingDeclaration && !(symbol.flags & 262144)) { var initialSymbol = symbol; @@ -13504,7 +13926,7 @@ var ts; } } function hasExternalModuleSymbol(declaration) { - return ts.isAmbientModule(declaration) || (declaration.kind === 252 && ts.isExternalOrCommonJsModule(declaration)); + return ts.isAmbientModule(declaration) || (declaration.kind === 255 && ts.isExternalOrCommonJsModule(declaration)); } function hasVisibleDeclarations(symbol) { var aliasesToMakeVisible; @@ -13536,11 +13958,11 @@ var ts; } function isEntityNameVisible(entityName, enclosingDeclaration) { var meaning; - if (entityName.parent.kind === 156) { + if (entityName.parent.kind === 157 || ts.isExpressionWithTypeArgumentsInClassExtendsClause(entityName.parent)) { meaning = 107455 | 1048576; } - else if (entityName.kind === 137 || entityName.kind === 170 || - entityName.parent.kind === 225) { + else if (entityName.kind === 138 || entityName.kind === 171 || + entityName.parent.kind === 228) { meaning = 1536; } else { @@ -13607,10 +14029,10 @@ var ts; function getTypeAliasForTypeLiteral(type) { if (type.symbol && type.symbol.flags & 2048) { var node = type.symbol.declarations[0].parent; - while (node.kind === 162) { + while (node.kind === 163) { node = node.parent; } - if (node.kind === 220) { + if (node.kind === 222) { return getSymbolOfNode(node); } } @@ -13618,7 +14040,7 @@ var ts; } function isTopLevelInExternalModuleAugmentation(node) { return node && node.parent && - node.parent.kind === 223 && + node.parent.kind === 225 && ts.isExternalModuleAugmentation(node.parent.parent); } function getSymbolDisplayBuilder() { @@ -13629,10 +14051,10 @@ var ts; return ts.declarationNameToString(declaration.name); } switch (declaration.kind) { - case 190: + case 191: return "(Anonymous class)"; - case 177: case 178: + case 179: return "(Anonymous function)"; } } @@ -13776,12 +14198,12 @@ var ts; var length_1 = outerTypeParameters.length; while (i < length_1) { var start = i; - var parent_4 = getParentSymbolOfTypeParameter(outerTypeParameters[i]); + var parent_5 = getParentSymbolOfTypeParameter(outerTypeParameters[i]); do { i++; - } while (i < length_1 && getParentSymbolOfTypeParameter(outerTypeParameters[i]) === parent_4); + } while (i < length_1 && getParentSymbolOfTypeParameter(outerTypeParameters[i]) === parent_5); if (!ts.rangeEquals(outerTypeParameters, typeArguments, start, i)) { - writeSymbolTypeReference(parent_4, typeArguments, start, i, flags); + writeSymbolTypeReference(parent_5, typeArguments, start, i, flags); writePunctuation(writer, 21); } } @@ -13840,7 +14262,7 @@ var ts; var isNonLocalFunctionSymbol = !!(symbol.flags & 16) && (symbol.parent || ts.forEach(symbol.declarations, function (declaration) { - return declaration.parent.kind === 252 || declaration.parent.kind === 223; + return declaration.parent.kind === 255 || declaration.parent.kind === 225; })); if (isStaticMethodSymbol || isNonLocalFunctionSymbol) { return !!(flags & 2) || @@ -13980,7 +14402,12 @@ var ts; if (ts.isRestParameter(parameterNode)) { writePunctuation(writer, 22); } - appendSymbolNameOnly(p, writer); + if (ts.isBindingPattern(parameterNode.name)) { + buildBindingPatternDisplay(parameterNode.name, writer, enclosingDeclaration, flags, symbolStack); + } + else { + appendSymbolNameOnly(p, writer); + } if (isOptionalParameter(parameterNode)) { writePunctuation(writer, 53); } @@ -13988,19 +14415,58 @@ var ts; writeSpace(writer); buildTypeDisplay(getTypeOfSymbol(p), writer, enclosingDeclaration, flags, symbolStack); } + function buildBindingPatternDisplay(bindingPattern, writer, enclosingDeclaration, flags, symbolStack) { + if (bindingPattern.kind === 166) { + writePunctuation(writer, 15); + buildDisplayForCommaSeparatedList(bindingPattern.elements, writer, function (e) { return buildBindingElementDisplay(e, writer, enclosingDeclaration, flags, symbolStack); }); + writePunctuation(writer, 16); + } + else if (bindingPattern.kind === 167) { + writePunctuation(writer, 19); + var elements = bindingPattern.elements; + buildDisplayForCommaSeparatedList(elements, writer, function (e) { return buildBindingElementDisplay(e, writer, enclosingDeclaration, flags, symbolStack); }); + if (elements && elements.hasTrailingComma) { + writePunctuation(writer, 24); + } + writePunctuation(writer, 20); + } + } + function buildBindingElementDisplay(bindingElement, writer, enclosingDeclaration, flags, symbolStack) { + if (bindingElement.kind === 192) { + return; + } + ts.Debug.assert(bindingElement.kind === 168); + if (bindingElement.propertyName) { + writer.writeSymbol(ts.getTextOfNode(bindingElement.propertyName), bindingElement.symbol); + writePunctuation(writer, 54); + writeSpace(writer); + } + if (ts.isBindingPattern(bindingElement.name)) { + buildBindingPatternDisplay(bindingElement.name, writer, enclosingDeclaration, flags, symbolStack); + } + else { + if (bindingElement.dotDotDotToken) { + writePunctuation(writer, 22); + } + appendSymbolNameOnly(bindingElement.symbol, writer); + } + } function buildDisplayForTypeParametersAndDelimiters(typeParameters, writer, enclosingDeclaration, flags, symbolStack) { if (typeParameters && typeParameters.length) { writePunctuation(writer, 25); - for (var i = 0; i < typeParameters.length; i++) { - if (i > 0) { - writePunctuation(writer, 24); - writeSpace(writer); - } - buildTypeParameterDisplay(typeParameters[i], writer, enclosingDeclaration, flags, symbolStack); - } + buildDisplayForCommaSeparatedList(typeParameters, writer, function (p) { return buildTypeParameterDisplay(p, writer, enclosingDeclaration, flags, symbolStack); }); writePunctuation(writer, 27); } } + function buildDisplayForCommaSeparatedList(list, writer, action) { + for (var i = 0; i < list.length; i++) { + if (i > 0) { + writePunctuation(writer, 24); + writeSpace(writer); + } + action(list[i]); + } + } function buildDisplayForTypeArgumentsAndDelimiters(typeParameters, mapper, writer, enclosingDeclaration, flags, symbolStack) { if (typeParameters && typeParameters.length) { writePunctuation(writer, 25); @@ -14014,10 +14480,16 @@ var ts; writePunctuation(writer, 27); } } - function buildDisplayForParametersAndDelimiters(parameters, writer, enclosingDeclaration, flags, symbolStack) { + function buildDisplayForParametersAndDelimiters(thisType, parameters, writer, enclosingDeclaration, flags, symbolStack) { writePunctuation(writer, 17); + if (thisType) { + writeKeyword(writer, 97); + writePunctuation(writer, 54); + writeSpace(writer); + buildTypeDisplay(thisType, writer, enclosingDeclaration, flags, symbolStack); + } for (var i = 0; i < parameters.length; i++) { - if (i > 0) { + if (i > 0 || thisType) { writePunctuation(writer, 24); writeSpace(writer); } @@ -14065,7 +14537,7 @@ var ts; else { buildDisplayForTypeParametersAndDelimiters(signature.typeParameters, writer, enclosingDeclaration, flags, symbolStack); } - buildDisplayForParametersAndDelimiters(signature.parameters, writer, enclosingDeclaration, flags, symbolStack); + buildDisplayForParametersAndDelimiters(signature.thisType, signature.parameters, writer, enclosingDeclaration, flags, symbolStack); buildReturnTypeDisplay(signature, writer, enclosingDeclaration, flags, symbolStack); } return _displayBuilder || (_displayBuilder = { @@ -14092,74 +14564,74 @@ var ts; return false; function determineIfDeclarationIsVisible() { switch (node.kind) { - case 167: + case 168: return isDeclarationVisible(node.parent.parent); - case 215: + case 217: if (ts.isBindingPattern(node.name) && !node.name.elements.length) { return false; } - case 222: - case 218: - case 219: + case 224: case 220: - case 217: case 221: - case 225: + case 222: + case 219: + case 223: + case 228: if (ts.isExternalModuleAugmentation(node)) { return true; } - var parent_5 = getDeclarationContainer(node); + var parent_6 = getDeclarationContainer(node); if (!(ts.getCombinedNodeFlags(node) & 1) && - !(node.kind !== 225 && parent_5.kind !== 252 && ts.isInAmbientContext(parent_5))) { - return isGlobalSourceFile(parent_5); + !(node.kind !== 228 && parent_6.kind !== 255 && ts.isInAmbientContext(parent_6))) { + return isGlobalSourceFile(parent_6); } - return isDeclarationVisible(parent_5); - case 143: - case 142: - case 147: - case 148: - case 145: + return isDeclarationVisible(parent_6); case 144: + case 143: + case 148: + case 149: + case 146: + case 145: if (node.flags & (8 | 16)) { return false; } - case 146: - case 150: - case 149: + case 147: case 151: - case 140: - case 223: - case 154: + case 150: + case 152: + case 141: + case 225: case 155: - case 157: - case 153: + case 156: case 158: + case 154: case 159: case 160: case 161: case 162: + case 163: return isDeclarationVisible(node.parent); - case 227: - case 228: case 230: - return false; - case 139: - case 252: - return true; case 231: + case 233: + return false; + case 140: + case 255: + return true; + case 234: return false; default: - ts.Debug.fail("isDeclarationVisible unknown: SyntaxKind: " + node.kind); + return false; } } } function collectLinkedAliases(node) { var exportSymbol; - if (node.parent && node.parent.kind === 231) { + if (node.parent && node.parent.kind === 234) { exportSymbol = resolveName(node.parent, node.text, 107455 | 793056 | 1536 | 8388608, ts.Diagnostics.Cannot_find_name_0, node); } - else if (node.parent.kind === 234) { + else if (node.parent.kind === 237) { var exportSpecifier = node.parent; exportSymbol = exportSpecifier.parent.parent.moduleSpecifier ? getExternalModuleMember(exportSpecifier.parent.parent, exportSpecifier) : @@ -14238,12 +14710,12 @@ var ts; node = ts.getRootDeclaration(node); while (node) { switch (node.kind) { - case 215: - case 216: + case 217: + case 218: + case 233: + case 232: + case 231: case 230: - case 229: - case 228: - case 227: node = node.parent; break; default: @@ -14273,7 +14745,7 @@ var ts; case 9: case 8: return name.text; - case 138: + case 139: if (ts.isStringOrNumericLiteral(name.expression.kind)) { return name.expression.text; } @@ -14281,7 +14753,7 @@ var ts; return undefined; } function isComputedNonLiteralName(name) { - return name.kind === 138 && !ts.isStringOrNumericLiteral(name.expression.kind); + return name.kind === 139 && !ts.isStringOrNumericLiteral(name.expression.kind); } function getTypeForBindingElement(declaration) { var pattern = declaration.parent; @@ -14296,11 +14768,14 @@ var ts; return parentType; } var type; - if (pattern.kind === 165) { + if (pattern.kind === 166) { var name_10 = declaration.propertyName || declaration.name; if (isComputedNonLiteralName(name_10)) { return anyType; } + if (declaration.initializer) { + getContextualType(declaration.initializer); + } var text = getTextOfPropertyName(name_10); type = getTypeOfPropertyOfType(parentType, text) || isNumericLiteralName(text) && getIndexTypeOfType(parentType, 1) || @@ -14331,6 +14806,9 @@ var ts; type = createArrayType(elementType); } } + if (strictNullChecks && declaration.initializer && !(getNullableKind(checkExpressionCached(declaration.initializer)) & 32)) { + type = removeNullableKind(type, 32); + } return type; } function getTypeForVariableLikeDeclarationFromJSDocComment(declaration) { @@ -14344,15 +14822,15 @@ var ts; if (typeTag && typeTag.typeExpression) { return typeTag.typeExpression.type; } - if (declaration.kind === 215 && - declaration.parent.kind === 216 && - declaration.parent.parent.kind === 197) { + if (declaration.kind === 217 && + declaration.parent.kind === 218 && + declaration.parent.parent.kind === 199) { var annotation = ts.getJSDocTypeTag(declaration.parent.parent); if (annotation && annotation.typeExpression) { return annotation.typeExpression.type; } } - else if (declaration.kind === 140) { + else if (declaration.kind === 141) { var paramTag = ts.getCorrespondingJSDocParameterTag(declaration); if (paramTag && paramTag.typeExpression) { return paramTag.typeExpression.type; @@ -14367,35 +14845,38 @@ var ts; return type; } } - if (declaration.parent.parent.kind === 204) { + if (declaration.parent.parent.kind === 206) { return stringType; } - if (declaration.parent.parent.kind === 205) { + if (declaration.parent.parent.kind === 207) { return checkRightHandSideOfForOf(declaration.parent.parent.expression) || anyType; } if (ts.isBindingPattern(declaration.parent)) { return getTypeForBindingElement(declaration); } if (declaration.type) { - return getTypeFromTypeNode(declaration.type); + var type = getTypeFromTypeNode(declaration.type); + return strictNullChecks && declaration.questionToken ? addNullableKind(type, 32) : type; } - if (declaration.kind === 140) { + if (declaration.kind === 141) { var func = declaration.parent; - if (func.kind === 148 && !ts.hasDynamicName(func)) { - var getter = ts.getDeclarationOfKind(declaration.parent.symbol, 147); + if (func.kind === 149 && !ts.hasDynamicName(func)) { + var getter = ts.getDeclarationOfKind(declaration.parent.symbol, 148); if (getter) { return getReturnTypeOfSignature(getSignatureFromDeclaration(getter)); } } - var type = getContextuallyTypedParameterType(declaration); + var type = declaration.symbol.name === "this" + ? getContextuallyTypedThisType(func) + : getContextuallyTypedParameterType(declaration); if (type) { - return type; + return strictNullChecks && declaration.questionToken ? addNullableKind(type, 32) : type; } } if (declaration.initializer) { return checkExpressionCached(declaration.initializer); } - if (declaration.kind === 250) { + if (declaration.kind === 253) { return checkIdentifier(declaration.name); } if (ts.isBindingPattern(declaration.name)) { @@ -14405,11 +14886,16 @@ var ts; } function getTypeFromBindingElement(element, includePatternInType) { if (element.initializer) { - return getWidenedType(checkExpressionCached(element.initializer)); + var type = checkExpressionCached(element.initializer); + reportErrorsFromWidening(element, type); + return getWidenedType(type); } if (ts.isBindingPattern(element.name)) { return getTypeFromBindingPattern(element.name, includePatternInType); } + if (compilerOptions.noImplicitAny) { + reportImplicitAnyError(element, anyType); + } return anyType; } function getTypeFromObjectBindingPattern(pattern, includePatternInType) { @@ -14442,7 +14928,7 @@ var ts; if (elements.length === 0 || elements[elements.length - 1].dotDotDotToken) { return languageVersion >= 2 ? createIterableType(anyType) : anyArrayType; } - var elementTypes = ts.map(elements, function (e) { return e.kind === 191 ? anyType : getTypeFromBindingElement(e, includePatternInType); }); + var elementTypes = ts.map(elements, function (e) { return e.kind === 192 ? anyType : getTypeFromBindingElement(e, includePatternInType); }); if (includePatternInType) { var result = createNewTupleType(elementTypes); result.pattern = pattern; @@ -14451,7 +14937,7 @@ var ts; return createTupleType(elementTypes); } function getTypeFromBindingPattern(pattern, includePatternInType) { - return pattern.kind === 165 + return pattern.kind === 166 ? getTypeFromObjectBindingPattern(pattern, includePatternInType) : getTypeFromArrayBindingPattern(pattern, includePatternInType); } @@ -14461,7 +14947,7 @@ var ts; if (reportErrors) { reportErrorsFromWidening(declaration, type); } - if (declaration.kind === 249) { + if (declaration.kind === 252) { return type; } return getWidenedType(type); @@ -14469,7 +14955,7 @@ var ts; type = declaration.dotDotDotToken ? anyArrayType : anyType; if (reportErrors && compilerOptions.noImplicitAny) { var root = ts.getRootDeclaration(declaration); - if (!isPrivateWithinAmbient(root) && !(root.kind === 140 && isPrivateWithinAmbient(root.parent))) { + if (!isPrivateWithinAmbient(root) && !(root.kind === 141 && isPrivateWithinAmbient(root.parent))) { reportImplicitAnyError(declaration, type); } } @@ -14482,17 +14968,17 @@ var ts; return links.type = getTypeOfPrototypeProperty(symbol); } var declaration = symbol.valueDeclaration; - if (declaration.parent.kind === 248) { + if (declaration.parent.kind === 251) { return links.type = anyType; } - if (declaration.kind === 231) { + if (declaration.kind === 234) { return links.type = checkExpression(declaration.expression); } - if (declaration.kind === 185) { + if (declaration.kind === 186) { return links.type = getUnionType(ts.map(symbol.declarations, function (decl) { return checkExpressionCached(decl.right); })); } - if (declaration.kind === 170) { - if (declaration.parent.kind === 185) { + if (declaration.kind === 171) { + if (declaration.parent.kind === 186) { return links.type = checkExpressionCached(declaration.parent.right); } } @@ -14518,7 +15004,7 @@ var ts; } function getAnnotatedAccessorType(accessor) { if (accessor) { - if (accessor.kind === 147) { + if (accessor.kind === 148) { return accessor.type && getTypeFromTypeNode(accessor.type); } else { @@ -14531,11 +15017,17 @@ var ts; function getTypeOfAccessors(symbol) { var links = getSymbolLinks(symbol); if (!links.type) { + var getter = ts.getDeclarationOfKind(symbol, 148); + var setter = ts.getDeclarationOfKind(symbol, 149); + if (getter && getter.flags & 134217728) { + var jsDocType = getTypeForVariableLikeDeclarationFromJSDocComment(getter); + if (jsDocType) { + return links.type = jsDocType; + } + } if (!pushTypeResolution(symbol, 0)) { return unknownType; } - var getter = ts.getDeclarationOfKind(symbol, 147); - var setter = ts.getDeclarationOfKind(symbol, 148); var type = void 0; var getterReturnType = getAnnotatedAccessorType(getter); if (getterReturnType) { @@ -14561,7 +15053,7 @@ var ts; if (!popTypeResolution()) { type = anyType; if (compilerOptions.noImplicitAny) { - var getter_1 = ts.getDeclarationOfKind(symbol, 147); + var getter_1 = ts.getDeclarationOfKind(symbol, 148); error(getter_1, ts.Diagnostics._0_implicitly_has_return_type_any_because_it_does_not_have_a_return_type_annotation_and_is_referenced_directly_or_indirectly_in_one_of_its_return_expressions, symbolToString(symbol)); } } @@ -14650,9 +15142,9 @@ var ts; if (!node) { return typeParameters; } - if (node.kind === 218 || node.kind === 190 || - node.kind === 217 || node.kind === 177 || - node.kind === 145 || node.kind === 178) { + if (node.kind === 220 || node.kind === 191 || + node.kind === 219 || node.kind === 178 || + node.kind === 146 || node.kind === 179) { var declarations = node.typeParameters; if (declarations) { return appendTypeParameters(appendOuterTypeParameters(typeParameters, node), declarations); @@ -14661,15 +15153,15 @@ var ts; } } function getOuterTypeParametersOfClassOrInterface(symbol) { - var declaration = symbol.flags & 32 ? symbol.valueDeclaration : ts.getDeclarationOfKind(symbol, 219); + var declaration = symbol.flags & 32 ? symbol.valueDeclaration : ts.getDeclarationOfKind(symbol, 221); return appendOuterTypeParameters(undefined, declaration); } function getLocalTypeParametersOfClassOrInterfaceOrTypeAlias(symbol) { var result; for (var _i = 0, _a = symbol.declarations; _i < _a.length; _i++) { var node = _a[_i]; - if (node.kind === 219 || node.kind === 218 || - node.kind === 190 || node.kind === 220) { + if (node.kind === 221 || node.kind === 220 || + node.kind === 191 || node.kind === 222) { var declaration = node; if (declaration.typeParameters) { result = appendTypeParameters(result, declaration.typeParameters); @@ -14792,7 +15284,7 @@ var ts; type.resolvedBaseTypes = type.resolvedBaseTypes || emptyArray; for (var _i = 0, _a = type.symbol.declarations; _i < _a.length; _i++) { var declaration = _a[_i]; - if (declaration.kind === 219 && ts.getInterfaceBaseTypeNodes(declaration)) { + if (declaration.kind === 221 && ts.getInterfaceBaseTypeNodes(declaration)) { for (var _b = 0, _c = ts.getInterfaceBaseTypeNodes(declaration); _b < _c.length; _b++) { var node = _c[_b]; var baseType = getTypeFromTypeNode(node); @@ -14821,7 +15313,7 @@ var ts; function isIndependentInterface(symbol) { for (var _i = 0, _a = symbol.declarations; _i < _a.length; _i++) { var declaration = _a[_i]; - if (declaration.kind === 219) { + if (declaration.kind === 221) { if (declaration.flags & 16384) { return false; } @@ -14870,7 +15362,7 @@ var ts; if (!pushTypeResolution(symbol, 2)) { return unknownType; } - var declaration = ts.getDeclarationOfKind(symbol, 220); + var declaration = ts.getDeclarationOfKind(symbol, 222); var type = getTypeFromTypeNode(declaration.type); if (popTypeResolution()) { links.typeParameters = getLocalTypeParametersOfClassOrInterfaceOrTypeAlias(symbol); @@ -14901,7 +15393,7 @@ var ts; if (!links.declaredType) { var type = createType(512); type.symbol = symbol; - if (!ts.getDeclarationOfKind(symbol, 139).constraint) { + if (!ts.getDeclarationOfKind(symbol, 140).constraint) { type.constraint = noConstraintType; } links.declaredType = type; @@ -14953,11 +15445,13 @@ var ts; case 120: case 132: case 103: - case 164: + case 134: + case 93: + case 165: return true; - case 158: + case 159: return isIndependentType(node.elementType); - case 153: + case 154: return isIndependentTypeReference(node); } return false; @@ -14966,7 +15460,7 @@ var ts; return node.type && isIndependentType(node.type) || !node.type && !node.initializer; } function isIndependentFunctionLikeDeclaration(node) { - if (node.kind !== 146 && (!node.type || !isIndependentType(node.type))) { + if (node.kind !== 147 && (!node.type || !isIndependentType(node.type))) { return false; } for (var _i = 0, _a = node.parameters; _i < _a.length; _i++) { @@ -14982,12 +15476,12 @@ var ts; var declaration = symbol.declarations[0]; if (declaration) { switch (declaration.kind) { - case 143: - case 142: - return isIndependentVariableLikeDeclaration(declaration); - case 145: case 144: + case 143: + return isIndependentVariableLikeDeclaration(declaration); case 146: + case 145: + case 147: return isIndependentFunctionLikeDeclaration(declaration); } } @@ -15078,11 +15572,12 @@ var ts; type.typeArguments : ts.concatenate(type.typeArguments, [type]); resolveObjectTypeMembers(type, source, typeParameters, typeArguments); } - function createSignature(declaration, typeParameters, parameters, resolvedReturnType, typePredicate, minArgumentCount, hasRestParameter, hasStringLiterals) { + function createSignature(declaration, typeParameters, thisType, parameters, resolvedReturnType, typePredicate, minArgumentCount, hasRestParameter, hasStringLiterals) { var sig = new Signature(checker); sig.declaration = declaration; sig.typeParameters = typeParameters; sig.parameters = parameters; + sig.thisType = thisType; sig.resolvedReturnType = resolvedReturnType; sig.typePredicate = typePredicate; sig.minArgumentCount = minArgumentCount; @@ -15091,13 +15586,13 @@ var ts; return sig; } function cloneSignature(sig) { - return createSignature(sig.declaration, sig.typeParameters, sig.parameters, sig.resolvedReturnType, sig.typePredicate, sig.minArgumentCount, sig.hasRestParameter, sig.hasStringLiterals); + return createSignature(sig.declaration, sig.typeParameters, sig.thisType, sig.parameters, sig.resolvedReturnType, sig.typePredicate, sig.minArgumentCount, sig.hasRestParameter, sig.hasStringLiterals); } function getDefaultConstructSignatures(classType) { var baseConstructorType = getBaseConstructorTypeOfClass(classType); var baseSignatures = getSignaturesOfType(baseConstructorType, 1); if (baseSignatures.length === 0) { - return [createSignature(undefined, classType.localTypeParameters, emptyArray, classType, undefined, 0, false, false)]; + return [createSignature(undefined, classType.localTypeParameters, undefined, emptyArray, classType, undefined, 0, false, false)]; } var baseTypeNode = getBaseTypeNodeOfClass(classType); var typeArguments = ts.map(baseTypeNode.typeArguments, getTypeFromTypeNode); @@ -15131,10 +15626,10 @@ var ts; addInheritedMembers(members, arrayType.properties); setObjectTypeMembers(type, members, arrayType.callSignatures, arrayType.constructSignatures, arrayType.stringIndexInfo, arrayType.numberIndexInfo); } - function findMatchingSignature(signatureList, signature, partialMatch, ignoreReturnTypes) { + function findMatchingSignature(signatureList, signature, partialMatch, ignoreThisTypes, ignoreReturnTypes) { for (var _i = 0, signatureList_1 = signatureList; _i < signatureList_1.length; _i++) { var s = signatureList_1[_i]; - if (compareSignaturesIdentical(s, signature, partialMatch, ignoreReturnTypes, compareTypesIdentical)) { + if (compareSignaturesIdentical(s, signature, partialMatch, ignoreThisTypes, ignoreReturnTypes, compareTypesIdentical)) { return s; } } @@ -15145,7 +15640,7 @@ var ts; return undefined; } for (var i = 1; i < signatureLists.length; i++) { - if (!findMatchingSignature(signatureLists[i], signature, false, false)) { + if (!findMatchingSignature(signatureLists[i], signature, false, false, false)) { return undefined; } } @@ -15153,7 +15648,7 @@ var ts; } var result = undefined; for (var i = 0; i < signatureLists.length; i++) { - var match = i === listIndex ? signature : findMatchingSignature(signatureLists[i], signature, true, true); + var match = i === listIndex ? signature : findMatchingSignature(signatureLists[i], signature, true, true, true); if (!match) { return undefined; } @@ -15169,12 +15664,15 @@ var ts; for (var i = 0; i < signatureLists.length; i++) { for (var _i = 0, _a = signatureLists[i]; _i < _a.length; _i++) { var signature = _a[_i]; - if (!result || !findMatchingSignature(result, signature, false, true)) { + if (!result || !findMatchingSignature(result, signature, false, true, true)) { var unionSignatures = findMatchingSignatures(signatureLists, signature, i); if (unionSignatures) { var s = signature; if (unionSignatures.length > 1) { s = cloneSignature(signature); + if (ts.forEach(unionSignatures, function (sig) { return sig.thisType; })) { + s.thisType = getUnionType(ts.map(unionSignatures, function (sig) { return sig.thisType || anyType; })); + } s.resolvedReturnType = undefined; s.unionSignatures = unionSignatures; } @@ -15350,7 +15848,7 @@ var ts; type = globalBooleanType; } else if (type.flags & 16777216) { - type = globalESSymbolType; + type = getGlobalESSymbolType(); } return type; } @@ -15504,7 +16002,7 @@ var ts; } function isOptionalParameter(node) { if (node.flags & 134217728) { - if (node.type && node.type.kind === 264) { + if (node.type && node.type.kind === 267) { return true; } var paramTag = ts.getCorrespondingJSDocParameterTag(node); @@ -15513,7 +16011,7 @@ var ts; return true; } if (paramTag.typeExpression) { - return paramTag.typeExpression.type.kind === 264; + return paramTag.typeExpression.type.kind === 267; } } } @@ -15549,7 +16047,7 @@ var ts; function getSignatureFromDeclaration(declaration) { var links = getNodeLinks(declaration); if (!links.resolvedSignature) { - var classType = declaration.kind === 146 ? + var classType = declaration.kind === 147 ? getDeclaredTypeOfClassOrInterface(getMergedSymbol(declaration.parent.symbol)) : undefined; var typeParameters = classType ? classType.localTypeParameters : @@ -15558,6 +16056,8 @@ var ts; var parameters = []; var hasStringLiterals = false; var minArgumentCount = -1; + var thisType = undefined; + var hasThisParameter = void 0; var isJSConstructSignature = ts.isJSDocConstructSignature(declaration); var returnType = undefined; var typePredicate = undefined; @@ -15568,13 +16068,19 @@ var ts; var resolvedSymbol = resolveName(param, paramSymbol.name, 107455, undefined, undefined); paramSymbol = resolvedSymbol; } - parameters.push(paramSymbol); - if (param.type && param.type.kind === 164) { + if (i === 0 && paramSymbol.name === "this") { + hasThisParameter = true; + thisType = param.type ? getTypeFromTypeNode(param.type) : unknownType; + } + else { + parameters.push(paramSymbol); + } + if (param.type && param.type.kind === 165) { hasStringLiterals = true; } if (param.initializer || param.questionToken || param.dotDotDotToken) { if (minArgumentCount < 0) { - minArgumentCount = i; + minArgumentCount = i - (hasThisParameter ? 1 : 0); } } else { @@ -15582,7 +16088,7 @@ var ts; } } if (minArgumentCount < 0) { - minArgumentCount = declaration.parameters.length; + minArgumentCount = declaration.parameters.length - (hasThisParameter ? 1 : 0); } if (isJSConstructSignature) { minArgumentCount--; @@ -15593,7 +16099,7 @@ var ts; } else if (declaration.type) { returnType = getTypeFromTypeNode(declaration.type); - if (declaration.type.kind === 152) { + if (declaration.type.kind === 153) { typePredicate = createTypePredicateFromTypePredicateNode(declaration.type); } } @@ -15604,15 +16110,15 @@ var ts; returnType = type; } } - if (declaration.kind === 147 && !ts.hasDynamicName(declaration)) { - var setter = ts.getDeclarationOfKind(declaration.symbol, 148); + if (declaration.kind === 148 && !ts.hasDynamicName(declaration)) { + var setter = ts.getDeclarationOfKind(declaration.symbol, 149); returnType = getAnnotatedAccessorType(setter); } if (!returnType && ts.nodeIsMissing(declaration.body)) { returnType = anyType; } } - links.resolvedSignature = createSignature(declaration, typeParameters, parameters, returnType, typePredicate, minArgumentCount, ts.hasRestParameter(declaration), hasStringLiterals); + links.resolvedSignature = createSignature(declaration, typeParameters, thisType, parameters, returnType, typePredicate, minArgumentCount, ts.hasRestParameter(declaration), hasStringLiterals); } return links.resolvedSignature; } @@ -15623,20 +16129,20 @@ var ts; for (var i = 0, len = symbol.declarations.length; i < len; i++) { var node = symbol.declarations[i]; switch (node.kind) { - case 154: case 155: - case 217: - case 145: - case 144: + case 156: + case 219: case 146: - case 149: + case 145: + case 147: case 150: case 151: - case 147: + case 152: case 148: - case 177: + case 149: case 178: - case 265: + case 179: + case 268: if (i > 0 && node.body) { var previous = symbol.declarations[i - 1]; if (node.parent === previous.parent && node.kind === previous.kind && node.pos === previous.end) { @@ -15716,7 +16222,7 @@ var ts; } function getOrCreateTypeFromSignature(signature) { if (!signature.isolatedSignatureType) { - var isConstructor = signature.declaration.kind === 146 || signature.declaration.kind === 150; + var isConstructor = signature.declaration.kind === 147 || signature.declaration.kind === 151; var type = createObjectType(65536 | 262144); type.members = emptySymbols; type.properties = emptyArray; @@ -15757,7 +16263,7 @@ var ts; return undefined; } function getConstraintDeclaration(type) { - return ts.getDeclarationOfKind(type.symbol, 139).constraint; + return ts.getDeclarationOfKind(type.symbol, 140).constraint; } function hasConstraintReferenceTo(type, target) { var checked; @@ -15790,7 +16296,7 @@ var ts; return typeParameter.constraint === noConstraintType ? undefined : typeParameter.constraint; } function getParentSymbolOfTypeParameter(typeParameter) { - return getSymbolOfNode(ts.getDeclarationOfKind(typeParameter.symbol, 139).parent); + return getSymbolOfNode(ts.getDeclarationOfKind(typeParameter.symbol, 140).parent); } function getTypeListId(types) { if (types) { @@ -15812,11 +16318,13 @@ var ts; } return ""; } - function getPropagatingFlagsOfTypes(types) { + function getPropagatingFlagsOfTypes(types, excludeKinds) { var result = 0; for (var _i = 0, types_3 = types; _i < types_3.length; _i++) { var type = types_3[_i]; - result |= type.flags; + if (!(type.flags & excludeKinds)) { + result |= type.flags; + } } return result & 14680064; } @@ -15824,7 +16332,8 @@ var ts; var id = getTypeListId(typeArguments); var type = target.instantiations[id]; if (!type) { - var flags = 4096 | (typeArguments ? getPropagatingFlagsOfTypes(typeArguments) : 0); + var propagatedFlags = typeArguments ? getPropagatingFlagsOfTypes(typeArguments, 0) : 0; + var flags = 4096 | propagatedFlags; type = target.instantiations[id] = createObjectType(flags, target.symbol); type.target = target; type.typeArguments = typeArguments; @@ -15832,7 +16341,7 @@ var ts; return type; } function getTypeFromClassOrInterfaceReference(node, symbol) { - var type = getDeclaredTypeOfSymbol(symbol); + var type = getDeclaredTypeOfSymbol(getMergedSymbol(symbol)); var typeParameters = type.localTypeParameters; if (typeParameters) { if (!node.typeArguments || node.typeArguments.length !== typeParameters.length) { @@ -15875,11 +16384,11 @@ var ts; } function getTypeReferenceName(node) { switch (node.kind) { - case 153: + case 154: return node.typeName; - case 263: + case 266: return node.name; - case 192: + case 193: if (ts.isSupportedExpressionWithTypeArguments(node)) { return node.expression; } @@ -15902,7 +16411,7 @@ var ts; if (symbol.flags & 524288) { return getTypeFromTypeAliasReference(node, symbol); } - if (symbol.flags & 107455 && node.kind === 263) { + if (symbol.flags & 107455 && node.kind === 266) { return getTypeOfSymbol(symbol); } return getTypeFromNonGenericTypeReference(node, symbol); @@ -15912,7 +16421,7 @@ var ts; if (!links.resolvedType) { var symbol = void 0; var type = void 0; - if (node.kind === 263) { + if (node.kind === 266) { var typeReferenceName = getTypeReferenceName(node); symbol = resolveTypeReferenceName(node, typeReferenceName); type = getTypeReferenceType(node, symbol); @@ -15920,7 +16429,7 @@ var ts; links.resolvedType = type; } else { - var typeNameOrExpression = node.kind === 153 ? node.typeName : + var typeNameOrExpression = node.kind === 154 ? node.typeName : ts.isSupportedExpressionWithTypeArguments(node) ? node.expression : undefined; symbol = typeNameOrExpression && resolveEntityName(typeNameOrExpression, 793056) || unknownSymbol; @@ -15947,9 +16456,9 @@ var ts; for (var _i = 0, declarations_3 = declarations; _i < declarations_3.length; _i++) { var declaration = declarations_3[_i]; switch (declaration.kind) { - case 218: - case 219: + case 220: case 221: + case 223: return declaration; } } @@ -15986,9 +16495,6 @@ var ts; var typeSymbol = namespaceSymbol && getSymbol(namespaceSymbol.exports, name, 793056); return typeSymbol && getDeclaredTypeOfSymbol(typeSymbol); } - function getGlobalESSymbolConstructorSymbol() { - return globalESSymbolConstructorSymbol || (globalESSymbolConstructorSymbol = getGlobalValueSymbol("Symbol")); - } function createTypedPropertyDescriptorType(propertyType) { var globalTypedPropertyDescriptorType = getGlobalTypedPropertyDescriptorType(); return globalTypedPropertyDescriptorType !== emptyGenericType @@ -15999,10 +16505,10 @@ var ts; return genericGlobalType !== emptyGenericType ? createTypeReference(genericGlobalType, typeArguments) : emptyObjectType; } function createIterableType(elementType) { - return createTypeFromGenericGlobalType(globalIterableType, [elementType]); + return createTypeFromGenericGlobalType(getGlobalIterableType(), [elementType]); } function createIterableIteratorType(elementType) { - return createTypeFromGenericGlobalType(globalIterableIteratorType, [elementType]); + return createTypeFromGenericGlobalType(getGlobalIterableIteratorType(), [elementType]); } function createArrayType(elementType) { return createTypeFromGenericGlobalType(globalArrayType, [elementType]); @@ -16019,7 +16525,8 @@ var ts; return tupleTypes[id] || (tupleTypes[id] = createNewTupleType(elementTypes)); } function createNewTupleType(elementTypes) { - var type = createObjectType(8192 | getPropagatingFlagsOfTypes(elementTypes)); + var propagatedFlags = getPropagatingFlagsOfTypes(elementTypes, 0); + var type = createObjectType(8192 | propagatedFlags); type.elementTypes = elementTypes; return type; } @@ -16034,6 +16541,14 @@ var ts; if (type.flags & typeSetKind) { addTypesToSet(typeSet, type.types, typeSetKind); } + else if (type.flags & (1 | 32 | 64)) { + if (type.flags & 1) + typeSet.containsAny = true; + if (type.flags & 32) + typeSet.containsUndefined = true; + if (type.flags & 64) + typeSet.containsNull = true; + } else if (!ts.contains(typeSet, type)) { typeSet.push(type); } @@ -16061,47 +16576,35 @@ var ts; } } } - function containsTypeAny(types) { - for (var _i = 0, types_5 = types; _i < types_5.length; _i++) { - var type = types_5[_i]; - if (isTypeAny(type)) { - return true; - } - } - return false; - } - function removeAllButLast(types, typeToRemove) { - var i = types.length; - while (i > 0 && types.length > 1) { - i--; - if (types[i] === typeToRemove) { - types.splice(i, 1); - } - } - } function getUnionType(types, noSubtypeReduction) { if (types.length === 0) { return emptyUnionType; } var typeSet = []; addTypesToSet(typeSet, types, 16384); - if (containsTypeAny(typeSet)) { + if (typeSet.containsAny) { return anyType; } - if (noSubtypeReduction) { - removeAllButLast(typeSet, undefinedType); - removeAllButLast(typeSet, nullType); + if (strictNullChecks) { + if (typeSet.containsNull) + typeSet.push(nullType); + if (typeSet.containsUndefined) + typeSet.push(undefinedType); } - else { + if (!noSubtypeReduction) { removeSubtypes(typeSet); } - if (typeSet.length === 1) { + if (typeSet.length === 0) { + return typeSet.containsNull ? nullType : undefinedType; + } + else if (typeSet.length === 1) { return typeSet[0]; } var id = getTypeListId(typeSet); var type = unionTypes[id]; if (!type) { - type = unionTypes[id] = createObjectType(16384 | getPropagatingFlagsOfTypes(typeSet)); + var propagatedFlags = getPropagatingFlagsOfTypes(typeSet, 96); + type = unionTypes[id] = createObjectType(16384 | propagatedFlags); type.types = typeSet; } return type; @@ -16119,16 +16622,23 @@ var ts; } var typeSet = []; addTypesToSet(typeSet, types, 32768); - if (containsTypeAny(typeSet)) { + if (typeSet.containsAny) { return anyType; } + if (strictNullChecks) { + if (typeSet.containsNull) + typeSet.push(nullType); + if (typeSet.containsUndefined) + typeSet.push(undefinedType); + } if (typeSet.length === 1) { return typeSet[0]; } var id = getTypeListId(typeSet); var type = intersectionTypes[id]; if (!type) { - type = intersectionTypes[id] = createObjectType(32768 | getPropagatingFlagsOfTypes(typeSet)); + var propagatedFlags = getPropagatingFlagsOfTypes(typeSet, 96); + type = intersectionTypes[id] = createObjectType(32768 | propagatedFlags); type.types = typeSet; } return type; @@ -16181,9 +16691,9 @@ var ts; function getThisType(node) { var container = ts.getThisContainer(node, false); var parent = container && container.parent; - if (parent && (ts.isClassLike(parent) || parent.kind === 219)) { + if (parent && (ts.isClassLike(parent) || parent.kind === 221)) { if (!(container.flags & 32) && - (container.kind !== 146 || ts.isNodeDescendentOf(node, container.body))) { + (container.kind !== 147 || ts.isNodeDescendentOf(node, container.body))) { return getDeclaredTypeOfClassOrInterface(getSymbolOfNode(parent)).thisType; } } @@ -16200,8 +16710,8 @@ var ts; function getTypeFromTypeNode(node) { switch (node.kind) { case 117: - case 254: - case 255: + case 257: + case 258: return anyType; case 131: return stringType; @@ -16213,49 +16723,53 @@ var ts; return esSymbolType; case 103: return voidType; - case 163: - return getTypeFromThisTypeNode(node); + case 134: + return undefinedType; + case 93: + return nullType; case 164: + return getTypeFromThisTypeNode(node); + case 165: return getTypeFromStringLiteralTypeNode(node); + case 154: + case 266: + return getTypeFromTypeReference(node); case 153: - case 263: - return getTypeFromTypeReference(node); - case 152: return booleanType; - case 192: + case 193: return getTypeFromTypeReference(node); - case 156: + case 157: return getTypeFromTypeQueryNode(node); - case 158: - case 256: - return getTypeFromArrayTypeNode(node); case 159: - return getTypeFromTupleTypeNode(node); - case 160: - case 257: - return getTypeFromUnionTypeNode(node); - case 161: - return getTypeFromIntersectionTypeNode(node); - case 162: case 259: + return getTypeFromArrayTypeNode(node); + case 160: + return getTypeFromTupleTypeNode(node); + case 161: case 260: + return getTypeFromUnionTypeNode(node); + case 162: + return getTypeFromIntersectionTypeNode(node); + case 163: + case 262: + case 263: + case 270: + case 271: case 267: + return getTypeFromTypeNode(node.type); + case 155: + case 156: + case 158: case 268: case 264: - return getTypeFromTypeNode(node.type); - case 154: - case 155: - case 157: - case 265: - case 261: return getTypeFromTypeLiteralOrFunctionOrConstructorTypeNode(node); case 69: - case 137: + case 138: var symbol = getSymbolAtLocation(node); return symbol && getDeclaredTypeOfSymbol(symbol); - case 258: + case 261: return getTypeFromJSDocTupleType(node); - case 266: + case 269: return getTypeFromJSDocVariadicType(node); default: return unknownType; @@ -16278,40 +16792,26 @@ var ts; function createBinaryTypeMapper(source1, target1, source2, target2) { return function (t) { return t === source1 ? target1 : t === source2 ? target2 : t; }; } - function createTypeMapper(sources, targets) { - switch (sources.length) { - case 1: return createUnaryTypeMapper(sources[0], targets[0]); - case 2: return createBinaryTypeMapper(sources[0], targets[0], sources[1], targets[1]); - } + function createArrayTypeMapper(sources, targets) { return function (t) { for (var i = 0; i < sources.length; i++) { if (t === sources[i]) { - return targets[i]; + return targets ? targets[i] : anyType; } } return t; }; } - function createUnaryTypeEraser(source) { - return function (t) { return t === source ? anyType : t; }; - } - function createBinaryTypeEraser(source1, source2) { - return function (t) { return t === source1 || t === source2 ? anyType : t; }; + function createTypeMapper(sources, targets) { + var count = sources.length; + var mapper = count == 1 ? createUnaryTypeMapper(sources[0], targets ? targets[0] : anyType) : + count == 2 ? createBinaryTypeMapper(sources[0], targets ? targets[0] : anyType, sources[1], targets ? targets[1] : anyType) : + createArrayTypeMapper(sources, targets); + mapper.mappedTypes = sources; + return mapper; } function createTypeEraser(sources) { - switch (sources.length) { - case 1: return createUnaryTypeEraser(sources[0]); - case 2: return createBinaryTypeEraser(sources[0], sources[1]); - } - return function (t) { - for (var _i = 0, sources_1 = sources; _i < sources_1.length; _i++) { - var source = sources_1[_i]; - if (t === source) { - return anyType; - } - } - return t; - }; + return createTypeMapper(sources, undefined); } function getInferenceMapper(context) { if (!context.mapper) { @@ -16325,6 +16825,7 @@ var ts; } return t; }; + mapper.mappedTypes = context.typeParameters; mapper.context = context; context.mapper = mapper; } @@ -16334,7 +16835,9 @@ var ts; return type; } function combineTypeMappers(mapper1, mapper2) { - return function (t) { return instantiateType(mapper1(t), mapper2); }; + var mapper = function (t) { return instantiateType(mapper1(t), mapper2); }; + mapper.mappedTypes = mapper1.mappedTypes; + return mapper; } function cloneTypeParameter(typeParameter) { var result = createType(512); @@ -16372,7 +16875,7 @@ var ts; if (signature.typePredicate) { freshTypePredicate = cloneTypePredicate(signature.typePredicate, mapper); } - var result = createSignature(signature.declaration, freshTypeParameters, instantiateList(signature.parameters, mapper, instantiateSymbol), instantiateType(signature.resolvedReturnType, mapper), freshTypePredicate, signature.minArgumentCount, signature.hasRestParameter, signature.hasStringLiterals); + var result = createSignature(signature.declaration, freshTypeParameters, signature.thisType && instantiateType(signature.thisType, mapper), instantiateList(signature.parameters, mapper, instantiateSymbol), instantiateType(signature.resolvedReturnType, mapper), freshTypePredicate, signature.minArgumentCount, signature.hasRestParameter, signature.hasStringLiterals); result.target = signature; result.mapper = mapper; return result; @@ -16409,13 +16912,61 @@ var ts; mapper.instantiations[type.id] = result; return result; } + function isSymbolInScopeOfMappedTypeParameter(symbol, mapper) { + var mappedTypes = mapper.mappedTypes; + var node = symbol.declarations[0].parent; + while (node) { + switch (node.kind) { + case 155: + case 156: + case 219: + case 146: + case 145: + case 147: + case 150: + case 151: + case 152: + case 148: + case 149: + case 178: + case 179: + case 220: + case 191: + case 221: + case 222: + var declaration = node; + if (declaration.typeParameters) { + for (var _i = 0, _a = declaration.typeParameters; _i < _a.length; _i++) { + var d = _a[_i]; + if (ts.contains(mappedTypes, getDeclaredTypeOfTypeParameter(d.symbol))) { + return true; + } + } + } + if (ts.isClassLike(node) || node.kind === 221) { + var thisType = getDeclaredTypeOfClassOrInterface(getSymbolOfNode(node)).thisType; + if (thisType && ts.contains(mappedTypes, thisType)) { + return true; + } + } + break; + case 224: + case 255: + return false; + } + node = node.parent; + } + return false; + } function instantiateType(type, mapper) { if (type && mapper !== identityMapper) { if (type.flags & 512) { return mapper(type); } if (type.flags & 65536) { - return type.symbol && type.symbol.flags & (16 | 8192 | 32 | 2048 | 4096) ? + return type.symbol && + type.symbol.flags & (16 | 8192 | 32 | 2048 | 4096) && + (type.flags & 131072 || isSymbolInScopeOfMappedTypeParameter(type.symbol, mapper)) ? instantiateAnonymousType(type, mapper) : type; } if (type.flags & 4096) { @@ -16437,33 +16988,35 @@ var ts; return info && createIndexInfo(instantiateType(info.type, mapper), info.isReadonly, info.declaration); } function isContextSensitive(node) { - ts.Debug.assert(node.kind !== 145 || ts.isObjectLiteralMethod(node)); + ts.Debug.assert(node.kind !== 146 || ts.isObjectLiteralMethod(node)); switch (node.kind) { - case 177: case 178: + case 179: return isContextSensitiveFunctionLikeDeclaration(node); - case 169: + case 170: return ts.forEach(node.properties, isContextSensitive); - case 168: + case 169: return ts.forEach(node.elements, isContextSensitive); - case 186: + case 187: return isContextSensitive(node.whenTrue) || isContextSensitive(node.whenFalse); - case 185: + case 186: return node.operatorToken.kind === 52 && (isContextSensitive(node.left) || isContextSensitive(node.right)); - case 249: + case 252: return isContextSensitive(node.initializer); + case 146: case 145: - case 144: return isContextSensitiveFunctionLikeDeclaration(node); - case 176: + case 177: return isContextSensitive(node.expression); } return false; } function isContextSensitiveFunctionLikeDeclaration(node) { - return !node.typeParameters && node.parameters.length && !ts.forEach(node.parameters, function (p) { return p.type; }); + var areAllParametersUntyped = !ts.forEach(node.parameters, function (p) { return p.type; }); + var isNullaryArrow = node.kind === 179 && !node.parameters.length; + return !node.typeParameters && areAllParametersUntyped && !isNullaryArrow; } function getTypeWithoutSignatures(type) { if (type.flags & 80896) { @@ -16494,12 +17047,18 @@ var ts; function isTypeAssignableTo(source, target) { return checkTypeAssignableTo(source, target, undefined); } + function isTypeComparableTo(source, target) { + return checkTypeComparableTo(source, target, undefined); + } function checkTypeSubtypeOf(source, target, errorNode, headMessage, containingMessageChain) { return checkTypeRelatedTo(source, target, subtypeRelation, errorNode, headMessage, containingMessageChain); } function checkTypeAssignableTo(source, target, errorNode, headMessage, containingMessageChain) { return checkTypeRelatedTo(source, target, assignableRelation, errorNode, headMessage, containingMessageChain); } + function checkTypeComparableTo(source, target, errorNode, headMessage, containingMessageChain) { + return checkTypeRelatedTo(source, target, comparableRelation, errorNode, headMessage, containingMessageChain); + } function isSignatureAssignableTo(source, target, ignoreReturnTypes) { return compareSignaturesRelated(source, target, ignoreReturnTypes, false, undefined, compareTypesAssignable) !== 0; } @@ -16513,15 +17072,26 @@ var ts; source = getErasedSignature(source); target = getErasedSignature(target); var result = -1; + if (source.thisType && target.thisType && source.thisType !== voidType) { + var related = compareTypes(source.thisType, target.thisType, false) + || compareTypes(target.thisType, source.thisType, reportErrors); + if (!related) { + if (reportErrors) { + errorReporter(ts.Diagnostics.The_this_types_of_each_signature_are_incompatible); + } + return 0; + } + result &= related; + } var sourceMax = getNumNonRestParameters(source); var targetMax = getNumNonRestParameters(target); var checkCount = getNumParametersToCheckForSignatureRelatability(source, sourceMax, target, targetMax); var sourceParams = source.parameters; var targetParams = target.parameters; for (var i = 0; i < checkCount; i++) { - var s = i < sourceMax ? getTypeOfSymbol(sourceParams[i]) : getRestTypeOfSignature(source); - var t = i < targetMax ? getTypeOfSymbol(targetParams[i]) : getRestTypeOfSignature(target); - var related = compareTypes(t, s, false) || compareTypes(s, t, reportErrors); + var s = i < sourceMax ? getTypeOfParameter(sourceParams[i]) : getRestTypeOfSignature(source); + var t = i < targetMax ? getTypeOfParameter(targetParams[i]) : getRestTypeOfSignature(target); + var related = compareTypes(s, t, false) || compareTypes(t, s, reportErrors); if (!related) { if (reportErrors) { errorReporter(ts.Diagnostics.Types_of_parameters_0_and_1_are_incompatible, sourceParams[i < sourceMax ? i : sourceMax].name, targetParams[i < targetMax ? i : targetMax].name); @@ -16642,7 +17212,12 @@ var ts; sourceType = typeToString(source, undefined, 128); targetType = typeToString(target, undefined, 128); } - reportError(message || ts.Diagnostics.Type_0_is_not_assignable_to_type_1, sourceType, targetType); + if (!message) { + message = relation === comparableRelation ? + ts.Diagnostics.Type_0_is_not_comparable_to_type_1 : + ts.Diagnostics.Type_0_is_not_assignable_to_type_1; + } + reportError(message, sourceType, targetType); } function isRelatedTo(source, target, reportErrors, headMessage) { var result; @@ -16653,20 +17228,24 @@ var ts; } if (isTypeAny(target)) return -1; - if (source === undefinedType) - return -1; - if (source === nullType && target !== undefinedType) - return -1; + if (source.flags & 32) { + if (!strictNullChecks || target.flags & (32 | 16) || source === emptyArrayElementType) + return -1; + } + if (source.flags & 64) { + if (!strictNullChecks || target.flags & 64) + return -1; + } if (source.flags & 128 && target === numberType) return -1; if (source.flags & 128 && target.flags & 128) { - if (result = enumRelatedTo(source, target)) { + if (result = enumRelatedTo(source, target, reportErrors)) { return result; } } if (source.flags & 256 && target === stringType) return -1; - if (relation === assignableRelation) { + if (relation === assignableRelation || relation === comparableRelation) { if (isTypeAny(source)) return -1; if (source === numberType && target.flags & 128) @@ -16688,23 +17267,30 @@ var ts; } var saveErrorInfo = errorInfo; if (source.flags & 16384) { - if (result = eachTypeRelatedToType(source, target, reportErrors)) { + if (relation === comparableRelation) { + result = someTypeRelatedToType(source, target, reportErrors); + } + else { + result = eachTypeRelatedToType(source, target, reportErrors); + } + if (result) { return result; } } else if (target.flags & 32768) { - if (result = typeRelatedToEachType(source, target, reportErrors)) { + result = typeRelatedToEachType(source, target, reportErrors); + if (result) { return result; } } else { if (source.flags & 32768) { - if (result = someTypeRelatedToType(source, target, reportErrors && !(target.flags & 16384))) { + if (result = someTypeRelatedToType(source, target, false)) { return result; } } if (target.flags & 16384) { - if (result = typeRelatedToSomeType(source, target, reportErrors)) { + if (result = typeRelatedToSomeType(source, target, reportErrors && !(source.flags & 16777726))) { return result; } } @@ -16752,8 +17338,8 @@ var ts; } if (source.flags & 16384 && target.flags & 16384 || source.flags & 32768 && target.flags & 32768) { - if (result = eachTypeRelatedToSomeType(source, target)) { - if (result &= eachTypeRelatedToSomeType(target, source)) { + if (result = eachTypeRelatedToSomeType(source, target, false)) { + if (result &= eachTypeRelatedToSomeType(target, source, false)) { return result; } } @@ -16763,7 +17349,8 @@ var ts; function isKnownProperty(type, name) { if (type.flags & 80896) { var resolved = resolveStructuredTypeMembers(type); - if (relation === assignableRelation && (type === globalObjectType || resolved.properties.length === 0) || + if ((relation === assignableRelation || relation === comparableRelation) && + (type === globalObjectType || resolved.properties.length === 0) || resolved.stringIndexInfo || resolved.numberIndexInfo || getPropertyOfType(type, name)) { return true; } @@ -16794,7 +17381,7 @@ var ts; } return false; } - function eachTypeRelatedToSomeType(source, target) { + function eachTypeRelatedToSomeType(source, target, reportErrors) { var result = -1; var sourceTypes = source.types; for (var _i = 0, sourceTypes_1 = sourceTypes; _i < sourceTypes_1.length; _i++) { @@ -16809,7 +17396,15 @@ var ts; } function typeRelatedToSomeType(source, target, reportErrors) { var targetTypes = target.types; - for (var i = 0, len = targetTypes.length; i < len; i++) { + var len = targetTypes.length; + while (len >= 2 && targetTypes[len - 1].flags & 96) { + var related = isRelatedTo(source, targetTypes[len - 1], false); + if (related) { + return related; + } + len--; + } + for (var i = 0; i < len; i++) { var related = isRelatedTo(source, targetTypes[i], reportErrors && i === len - 1); if (related) { return related; @@ -16832,7 +17427,15 @@ var ts; } function someTypeRelatedToType(source, target, reportErrors) { var sourceTypes = source.types; - for (var i = 0, len = sourceTypes.length; i < len; i++) { + var len = sourceTypes.length; + while (len >= 2 && sourceTypes[len - 1].flags & 96) { + var related = isRelatedTo(sourceTypes[len - 1], target, false); + if (related) { + return related; + } + len--; + } + for (var i = 0; i < len; i++) { var related = isRelatedTo(sourceTypes[i], target, reportErrors && i === len - 1); if (related) { return related; @@ -17090,7 +17693,7 @@ var ts; } var result = -1; for (var i = 0, len = sourceSignatures.length; i < len; i++) { - var related = compareSignaturesIdentical(sourceSignatures[i], targetSignatures[i], false, false, isRelatedTo); + var related = compareSignaturesIdentical(sourceSignatures[i], targetSignatures[i], false, false, false, isRelatedTo); if (!related) { return 0; } @@ -17164,7 +17767,7 @@ var ts; } return 0; } - function enumRelatedTo(source, target) { + function enumRelatedTo(source, target, reportErrors) { if (source.symbol.name !== target.symbol.name || source.symbol.flags & 128 || target.symbol.flags & 128) { @@ -17176,7 +17779,9 @@ var ts; if (property.flags & 8) { var targetProperty = getPropertyOfType(targetEnumType, property.name); if (!targetProperty || !(targetProperty.flags & 8)) { - reportError(ts.Diagnostics.Property_0_is_missing_in_type_1, property.name, typeToString(target, undefined, 128)); + if (reportErrors) { + reportError(ts.Diagnostics.Property_0_is_missing_in_type_1, property.name, typeToString(target, undefined, 128)); + } return 0; } } @@ -17270,7 +17875,7 @@ var ts; } return false; } - function compareSignaturesIdentical(source, target, partialMatch, ignoreReturnTypes, compareTypes) { + function compareSignaturesIdentical(source, target, partialMatch, ignoreThisTypes, ignoreReturnTypes, compareTypes) { if (source === target) { return -1; } @@ -17283,10 +17888,17 @@ var ts; source = getErasedSignature(source); target = getErasedSignature(target); var result = -1; + if (!ignoreThisTypes && source.thisType && target.thisType) { + var related = compareTypes(source.thisType, target.thisType); + if (!related) { + return 0; + } + result &= related; + } var targetLen = target.parameters.length; for (var i = 0; i < targetLen; i++) { - var s = isRestParameterIndex(source, i) ? getRestTypeOfSignature(source) : getTypeOfSymbol(source.parameters[i]); - var t = isRestParameterIndex(target, i) ? getRestTypeOfSignature(target) : getTypeOfSymbol(target.parameters[i]); + var s = isRestParameterIndex(source, i) ? getRestTypeOfSignature(source) : getTypeOfParameter(source.parameters[i]); + var t = isRestParameterIndex(target, i) ? getRestTypeOfSignature(target) : getTypeOfParameter(target.parameters[i]); var related = compareTypes(s, t); if (!related) { return 0; @@ -17302,15 +17914,31 @@ var ts; return signature.hasRestParameter && parameterIndex >= signature.parameters.length - 1; } function isSupertypeOfEach(candidate, types) { - for (var _i = 0, types_6 = types; _i < types_6.length; _i++) { - var type = types_6[_i]; - if (candidate !== type && !isTypeSubtypeOf(type, candidate)) + for (var _i = 0, types_5 = types; _i < types_5.length; _i++) { + var t = types_5[_i]; + if (candidate !== t && !isTypeSubtypeOf(t, candidate)) return false; } return true; } + function getCombinedFlagsOfTypes(types) { + var flags = 0; + for (var _i = 0, types_6 = types; _i < types_6.length; _i++) { + var t = types_6[_i]; + flags |= t.flags; + } + return flags; + } function getCommonSupertype(types) { - return ts.forEach(types, function (t) { return isSupertypeOfEach(t, types) ? t : undefined; }); + if (!strictNullChecks) { + return ts.forEach(types, function (t) { return isSupertypeOfEach(t, types) ? t : undefined; }); + } + var primaryTypes = ts.filter(types, function (t) { return !(t.flags & 96); }); + if (!primaryTypes.length) { + return getUnionType(types); + } + var supertype = ts.forEach(primaryTypes, function (t) { return isSupertypeOfEach(t, primaryTypes) ? t : undefined; }); + return supertype && addNullableKind(supertype, getCombinedFlagsOfTypes(types) & 96); } function reportNoCommonSupertypeError(types, errorLocation, errorMessageChainHead) { var bestSupertype; @@ -17344,7 +17972,7 @@ var ts; } function isArrayLikeType(type) { return type.flags & 4096 && (type.target === globalArrayType || type.target === globalReadonlyArrayType) || - !(type.flags & (32 | 64)) && isTypeAssignableTo(type, anyReadonlyArrayType); + !(type.flags & 96) && isTypeAssignableTo(type, anyReadonlyArrayType); } function isTupleLikeType(type) { return !!getPropertyOfType(type, "0"); @@ -17355,6 +17983,60 @@ var ts; function isTupleType(type) { return !!(type.flags & 8192); } + function getNullableKind(type) { + var flags = type.flags; + if (flags & 16384) { + for (var _i = 0, _a = type.types; _i < _a.length; _i++) { + var t = _a[_i]; + flags |= t.flags; + } + } + return flags & 96; + } + function getNullableTypeOfKind(kind) { + return kind & 64 ? kind & 32 ? + getUnionType([nullType, undefinedType]) : nullType : undefinedType; + } + function addNullableKind(type, kind) { + if ((getNullableKind(type) & kind) !== kind) { + var types = [type]; + if (kind & 32) { + types.push(undefinedType); + } + if (kind & 64) { + types.push(nullType); + } + type = getUnionType(types); + } + return type; + } + function removeNullableKind(type, kind) { + if (type.flags & 16384 && getNullableKind(type) & kind) { + var firstType = void 0; + var types = void 0; + for (var _i = 0, _a = type.types; _i < _a.length; _i++) { + var t = _a[_i]; + if (!(t.flags & kind)) { + if (!firstType) { + firstType = t; + } + else { + if (!types) { + types = [firstType]; + } + types.push(t); + } + } + } + if (firstType) { + type = types ? getUnionType(types) : firstType; + } + } + return type; + } + function getNonNullableType(type) { + return strictNullChecks ? removeNullableKind(type, 96) : type; + } function isObjectLiteralType(type) { return type.symbol && (type.symbol.flags & (4096 | 2048)) !== 0 && getSignaturesOfType(type, 0).length === 0 && @@ -17400,16 +18082,19 @@ var ts; var numberIndexInfo = getIndexInfoOfType(type, 1); return createAnonymousType(type.symbol, members, emptyArray, emptyArray, stringIndexInfo && createIndexInfo(getWidenedType(stringIndexInfo.type), stringIndexInfo.isReadonly), numberIndexInfo && createIndexInfo(getWidenedType(numberIndexInfo.type), numberIndexInfo.isReadonly)); } + function getWidenedConstituentType(type) { + return type.flags & 96 ? type : getWidenedType(type); + } function getWidenedType(type) { if (type.flags & 6291456) { - if (type.flags & (32 | 64)) { + if (type.flags & 96) { return anyType; } if (type.flags & 524288) { return getWidenedTypeOfObjectLiteral(type); } if (type.flags & 16384) { - return getUnionType(ts.map(type.types, getWidenedType), true); + return getUnionType(ts.map(type.types, getWidenedConstituentType), true); } if (isArrayType(type)) { return createArrayType(getWidenedType(type.typeArguments[0])); @@ -17459,22 +18144,25 @@ var ts; var typeAsString = typeToString(getWidenedType(type)); var diagnostic; switch (declaration.kind) { + case 144: case 143: - case 142: diagnostic = ts.Diagnostics.Member_0_implicitly_has_an_1_type; break; - case 140: + case 141: diagnostic = declaration.dotDotDotToken ? ts.Diagnostics.Rest_parameter_0_implicitly_has_an_any_type : ts.Diagnostics.Parameter_0_implicitly_has_an_1_type; break; - case 217: + case 168: + diagnostic = ts.Diagnostics.Binding_element_0_implicitly_has_an_1_type; + break; + case 219: + case 146: case 145: - case 144: - case 147: case 148: - case 177: + case 149: case 178: + case 179: if (!declaration.name) { error(declaration, ts.Diagnostics.Function_expression_which_lacks_return_type_annotation_implicitly_has_an_0_return_type, typeAsString); return; @@ -17498,25 +18186,19 @@ var ts; var targetMax = target.parameters.length; var count; if (source.hasRestParameter && target.hasRestParameter) { - count = sourceMax > targetMax ? sourceMax : targetMax; - sourceMax--; - targetMax--; + count = Math.max(sourceMax, targetMax); } else if (source.hasRestParameter) { - sourceMax--; count = targetMax; } else if (target.hasRestParameter) { - targetMax--; count = sourceMax; } else { - count = sourceMax < targetMax ? sourceMax : targetMax; + count = Math.min(sourceMax, targetMax); } for (var i = 0; i < count; i++) { - var s = i < sourceMax ? getTypeOfSymbol(source.parameters[i]) : getRestTypeOfSignature(source); - var t = i < targetMax ? getTypeOfSymbol(target.parameters[i]) : getRestTypeOfSignature(target); - callback(s, t); + callback(getTypeAtPosition(source, i), getTypeAtPosition(target, i)); } } function createInferenceContext(typeParameters, inferUnionTypes) { @@ -17767,20 +18449,31 @@ var ts; } return context.inferredTypes; } + function createTransientIdentifier(symbol, location) { + var result = ts.createNode(69); + result.text = symbol.name; + result.resolvedSymbol = symbol; + result.parent = location; + result.id = -1; + return result; + } function getResolvedSymbol(node) { + if (node.id === -1) { + return node.resolvedSymbol; + } var links = getNodeLinks(node); if (!links.resolvedSymbol) { - links.resolvedSymbol = (!ts.nodeIsMissing(node) && resolveName(node, node.text, 107455 | 1048576, ts.Diagnostics.Cannot_find_name_0, node)) || unknownSymbol; + links.resolvedSymbol = !ts.nodeIsMissing(node) && resolveName(node, node.text, 107455 | 1048576, ts.Diagnostics.Cannot_find_name_0, node) || unknownSymbol; } return links.resolvedSymbol; } function isInTypeQuery(node) { while (node) { switch (node.kind) { - case 156: + case 157: return true; case 69: - case 137: + case 138: node = node.parent; continue; default: @@ -17789,164 +18482,279 @@ var ts; } ts.Debug.fail("should not get here"); } + function getAssignmentKey(node) { + if (node.kind === 69) { + var symbol = getResolvedSymbol(node); + return symbol !== unknownSymbol ? "" + getSymbolId(symbol) : undefined; + } + if (node.kind === 97) { + return "0"; + } + if (node.kind === 171) { + var key = getAssignmentKey(node.expression); + return key && key + "." + node.name.text; + } + return undefined; + } function hasInitializer(node) { return !!(node.initializer || ts.isBindingPattern(node.parent) && hasInitializer(node.parent.parent)); } - function isVariableAssignedWithin(symbol, node) { - var links = getNodeLinks(node); - if (links.assignmentChecks) { - var cachedResult = links.assignmentChecks[symbol.id]; - if (cachedResult !== undefined) { - return cachedResult; - } - } - else { - links.assignmentChecks = {}; - } - return links.assignmentChecks[symbol.id] = isAssignedIn(node); - function isAssignedInBinaryExpression(node) { - if (node.operatorToken.kind >= 56 && node.operatorToken.kind <= 68) { - var n = skipParenthesizedNodes(node.left); - if (n.kind === 69 && getResolvedSymbol(n) === symbol) { - return true; + function getAssignmentMap(node) { + var assignmentMap = {}; + visit(node); + return assignmentMap; + function visitReference(node) { + if (isAssignmentTarget(node) || isCompoundAssignmentTarget(node)) { + var key = getAssignmentKey(node); + if (key) { + assignmentMap[key] = true; } } - return ts.forEachChild(node, isAssignedIn); + ts.forEachChild(node, visit); } - function isAssignedInVariableDeclaration(node) { - if (!ts.isBindingPattern(node.name) && getSymbolOfNode(node) === symbol && hasInitializer(node)) { - return true; + function visitVariableDeclaration(node) { + if (!ts.isBindingPattern(node.name) && hasInitializer(node)) { + assignmentMap[getSymbolId(getSymbolOfNode(node))] = true; } - return ts.forEachChild(node, isAssignedIn); + ts.forEachChild(node, visit); } - function isAssignedIn(node) { + function visit(node) { switch (node.kind) { - case 185: - return isAssignedInBinaryExpression(node); - case 215: - case 167: - return isAssignedInVariableDeclaration(node); - case 165: - case 166: + case 69: + case 171: + visitReference(node); + break; + case 217: case 168: + visitVariableDeclaration(node); + break; + case 186: + case 166: + case 167: case 169: case 170: - case 171: case 172: case 173: - case 175: - case 193: + case 174: case 176: - case 183: - case 179: - case 182: - case 180: - case 181: + case 194: + case 195: + case 177: case 184: - case 188: - case 186: + case 180: + case 183: + case 181: + case 182: + case 185: case 189: - case 196: - case 197: + case 187: + case 190: + case 198: case 199: - case 200: case 201: case 202: case 203: case 204: case 205: - case 208: - case 209: + case 206: + case 207: case 210: - case 245: - case 246: case 211: case 212: - case 213: + case 226: case 248: - case 237: - case 238: + case 249: + case 213: + case 214: + case 215: + case 251: + case 240: + case 241: + case 245: + case 246: case 242: - case 243: - case 239: - case 244: - return ts.forEachChild(node, isAssignedIn); + case 247: + ts.forEachChild(node, visit); + break; } - return false; } } - function getNarrowedTypeOfSymbol(symbol, node) { - var type = getTypeOfSymbol(symbol); - if (node && symbol.flags & 3) { - if (isTypeAny(type) || type.flags & (80896 | 16384 | 512)) { - var declaration = ts.getDeclarationOfKind(symbol, 215); - var top_1 = declaration && getDeclarationContainer(declaration); - var originalType = type; - var nodeStack = []; - loop: while (node.parent) { - var child = node; - node = node.parent; - switch (node.kind) { - case 200: - case 186: - case 185: - nodeStack.push({ node: node, child: child }); - break; - case 252: - case 222: - break loop; - } - if (node === top_1) { - break; - } - } - var nodes = void 0; - while (nodes = nodeStack.pop()) { - var node_1 = nodes.node, child = nodes.child; - switch (node_1.kind) { - case 200: - if (child !== node_1.expression) { - type = narrowType(type, node_1.expression, child === node_1.thenStatement); - } - break; - case 186: - if (child !== node_1.condition) { - type = narrowType(type, node_1.condition, child === node_1.whenTrue); - } - break; - case 185: - if (child === node_1.right) { - if (node_1.operatorToken.kind === 51) { - type = narrowType(type, node_1.left, true); - } - else if (node_1.operatorToken.kind === 52) { - type = narrowType(type, node_1.left, false); - } - } - break; - default: - ts.Debug.fail("Unreachable!"); - } - if (type !== originalType && isVariableAssignedWithin(symbol, node_1)) { - type = originalType; - } - } - if (type === emptyUnionType) { - type = originalType; - } + function isReferenceAssignedWithin(reference, node) { + if (reference.kind !== 97) { + var key = getAssignmentKey(reference); + if (key) { + var links = getNodeLinks(node); + return (links.assignmentMap || (links.assignmentMap = getAssignmentMap(node)))[key]; } } - return type; - function narrowTypeByEquality(type, expr, assumeTrue) { - if (expr.left.kind !== 180 || expr.right.kind !== 9) { + return false; + } + function isAnyPartOfReferenceAssignedWithin(reference, node) { + while (true) { + if (isReferenceAssignedWithin(reference, node)) { + return true; + } + if (reference.kind !== 171) { + return false; + } + reference = reference.expression; + } + } + function isNullOrUndefinedLiteral(node) { + return node.kind === 93 || + node.kind === 69 && getResolvedSymbol(node) === undefinedSymbol; + } + function getLeftmostIdentifierOrThis(node) { + switch (node.kind) { + case 69: + case 97: + return node; + case 171: + return getLeftmostIdentifierOrThis(node.expression); + } + return undefined; + } + function isMatchingReference(source, target) { + if (source.kind === target.kind) { + switch (source.kind) { + case 69: + return getResolvedSymbol(source) === getResolvedSymbol(target); + case 97: + return true; + case 171: + return source.name.text === target.name.text && + isMatchingReference(source.expression, target.expression); + } + } + return false; + } + function getNarrowedTypeOfReference(type, reference) { + if (!(type.flags & (1 | 80896 | 16384 | 512))) { + return type; + } + var leftmostNode = getLeftmostIdentifierOrThis(reference); + if (!leftmostNode) { + return type; + } + var top; + if (leftmostNode.kind === 69) { + var leftmostSymbol = getExportSymbolOfValueSymbolIfExported(getResolvedSymbol(leftmostNode)); + if (!leftmostSymbol) { return type; } + var declaration = leftmostSymbol.valueDeclaration; + if (!declaration || declaration.kind !== 217 && declaration.kind !== 141 && declaration.kind !== 168) { + return type; + } + top = getDeclarationContainer(declaration); + } + var originalType = type; + var nodeStack = []; + var node = reference; + loop: while (node.parent) { + var child = node; + node = node.parent; + switch (node.kind) { + case 202: + case 187: + case 186: + nodeStack.push({ node: node, child: child }); + break; + case 255: + case 224: + break loop; + default: + if (node === top || ts.isFunctionLikeKind(node.kind)) { + break loop; + } + break; + } + } + var nodes; + while (nodes = nodeStack.pop()) { + var node_1 = nodes.node, child = nodes.child; + switch (node_1.kind) { + case 202: + if (child !== node_1.expression) { + type = narrowType(type, node_1.expression, child === node_1.thenStatement); + } + break; + case 187: + if (child !== node_1.condition) { + type = narrowType(type, node_1.condition, child === node_1.whenTrue); + } + break; + case 186: + if (child === node_1.right) { + if (node_1.operatorToken.kind === 51) { + type = narrowType(type, node_1.left, true); + } + else if (node_1.operatorToken.kind === 52) { + type = narrowType(type, node_1.left, false); + } + } + break; + default: + ts.Debug.fail("Unreachable!"); + } + if (type !== originalType && isAnyPartOfReferenceAssignedWithin(reference, node_1)) { + type = originalType; + } + } + if (type === emptyUnionType) { + type = originalType; + } + return type; + function narrowTypeByTruthiness(type, expr, assumeTrue) { + return strictNullChecks && assumeTrue && isMatchingReference(expr, reference) ? getNonNullableType(type) : type; + } + function narrowTypeByBinaryExpression(type, expr, assumeTrue) { + switch (expr.operatorToken.kind) { + case 30: + case 31: + case 32: + case 33: + if (isNullOrUndefinedLiteral(expr.right)) { + return narrowTypeByNullCheck(type, expr, assumeTrue); + } + if (expr.left.kind === 181 && expr.right.kind === 9) { + return narrowTypeByTypeof(type, expr, assumeTrue); + } + break; + case 51: + return narrowTypeByAnd(type, expr, assumeTrue); + case 52: + return narrowTypeByOr(type, expr, assumeTrue); + case 91: + return narrowTypeByInstanceof(type, expr, assumeTrue); + } + return type; + } + function narrowTypeByNullCheck(type, expr, assumeTrue) { + var operator = expr.operatorToken.kind; + if (operator === 31 || operator === 33) { + assumeTrue = !assumeTrue; + } + if (!strictNullChecks || !isMatchingReference(expr.left, reference)) { + return type; + } + var doubleEquals = operator === 30 || operator === 31; + var exprNullableKind = doubleEquals ? 96 : + expr.right.kind === 93 ? 64 : 32; + if (assumeTrue) { + var nullableKind = getNullableKind(type) & exprNullableKind; + return nullableKind ? getNullableTypeOfKind(nullableKind) : type; + } + return removeNullableKind(type, exprNullableKind); + } + function narrowTypeByTypeof(type, expr, assumeTrue) { var left = expr.left; var right = expr.right; - if (left.expression.kind !== 69 || getResolvedSymbol(left.expression) !== symbol) { + if (!isMatchingReference(left.expression, reference)) { return type; } - if (expr.operatorToken.kind === 33) { + if (expr.operatorToken.kind === 31 || + expr.operatorToken.kind === 33) { assumeTrue = !assumeTrue; } var typeInfo = primitiveTypeInfo[right.text]; @@ -17995,7 +18803,7 @@ var ts; } } function narrowTypeByInstanceof(type, expr, assumeTrue) { - if (isTypeAny(type) || expr.left.kind !== 69 || getResolvedSymbol(expr.left) !== symbol) { + if (isTypeAny(type) || !isMatchingReference(expr.left, reference)) { return type; } var rightType = checkExpression(expr.right); @@ -18040,7 +18848,8 @@ var ts; return getUnionType(assignableConstituents); } } - if (isTypeAssignableTo(narrowedTypeCandidate, originalType)) { + var targetType = originalType.flags & 512 ? getApparentType(originalType) : originalType; + if (isTypeAssignableTo(narrowedTypeCandidate, targetType)) { return narrowedTypeCandidate; } return originalType; @@ -18055,57 +18864,36 @@ var ts; return type; } if (ts.isIdentifierTypePredicate(predicate)) { - if (callExpression.arguments[predicate.parameterIndex] && - getSymbolAtTypePredicatePosition(callExpression.arguments[predicate.parameterIndex]) === symbol) { + var predicateArgument = callExpression.arguments[predicate.parameterIndex]; + if (predicateArgument && isMatchingReference(predicateArgument, reference)) { return getNarrowedType(type, predicate.type, assumeTrue); } } else { var invokedExpression = skipParenthesizedNodes(callExpression.expression); - return narrowTypeByThisTypePredicate(type, predicate, invokedExpression, assumeTrue); - } - return type; - } - function narrowTypeByThisTypePredicate(type, predicate, invokedExpression, assumeTrue) { - if (invokedExpression.kind === 171 || invokedExpression.kind === 170) { - var accessExpression = invokedExpression; - var possibleIdentifier = skipParenthesizedNodes(accessExpression.expression); - if (possibleIdentifier.kind === 69 && getSymbolAtTypePredicatePosition(possibleIdentifier) === symbol) { - return getNarrowedType(type, predicate.type, assumeTrue); + if (invokedExpression.kind === 172 || invokedExpression.kind === 171) { + var accessExpression = invokedExpression; + var possibleReference = skipParenthesizedNodes(accessExpression.expression); + if (isMatchingReference(possibleReference, reference)) { + return getNarrowedType(type, predicate.type, assumeTrue); + } } } return type; } - function getSymbolAtTypePredicatePosition(expr) { - expr = skipParenthesizedNodes(expr); - switch (expr.kind) { - case 69: - case 170: - return getSymbolOfEntityNameOrPropertyAccessExpression(expr); - } - } function narrowType(type, expr, assumeTrue) { switch (expr.kind) { - case 172: + case 69: + case 97: + case 171: + return narrowTypeByTruthiness(type, expr, assumeTrue); + case 173: return narrowTypeByTypePredicate(type, expr, assumeTrue); - case 176: + case 177: return narrowType(type, expr.expression, assumeTrue); - case 185: - var operator = expr.operatorToken.kind; - if (operator === 32 || operator === 33) { - return narrowTypeByEquality(type, expr, assumeTrue); - } - else if (operator === 51) { - return narrowTypeByAnd(type, expr, assumeTrue); - } - else if (operator === 52) { - return narrowTypeByOr(type, expr, assumeTrue); - } - else if (operator === 91) { - return narrowTypeByInstanceof(type, expr, assumeTrue); - } - break; - case 183: + case 186: + return narrowTypeByBinaryExpression(type, expr, assumeTrue); + case 184: if (expr.operator === 49) { return narrowType(type, expr.operand, !assumeTrue); } @@ -18114,17 +18902,121 @@ var ts; return type; } } + function getTypeOfSymbolAtLocation(symbol, location) { + var type = getTypeOfSymbol(symbol); + if (location.kind === 69) { + if (ts.isRightSideOfQualifiedNameOrPropertyAccess(location)) { + location = location.parent; + } + if (ts.isExpression(location)) { + checkExpression(location); + if (getNodeLinks(location).resolvedSymbol === symbol) { + return getNarrowedTypeOfReference(type, location); + } + } + } + return getNarrowedTypeOfReference(type, createTransientIdentifier(symbol, location)); + } function skipParenthesizedNodes(expression) { - while (expression.kind === 176) { + while (expression.kind === 177) { expression = expression.expression; } return expression; } + function findFirstAssignment(symbol, container) { + return visit(ts.isFunctionLike(container) ? container.body : container); + function visit(node) { + switch (node.kind) { + case 69: + var assignment = getAssignmentRoot(node); + return assignment && getResolvedSymbol(node) === symbol ? assignment : undefined; + case 186: + case 217: + case 168: + case 166: + case 167: + case 169: + case 170: + case 171: + case 172: + case 173: + case 174: + case 176: + case 194: + case 195: + case 177: + case 184: + case 180: + case 183: + case 181: + case 182: + case 185: + case 189: + case 187: + case 190: + case 199: + case 201: + case 202: + case 203: + case 204: + case 205: + case 206: + case 207: + case 210: + case 211: + case 212: + case 226: + case 248: + case 249: + case 213: + case 214: + case 215: + case 251: + case 240: + case 241: + case 245: + case 246: + case 242: + case 247: + case 198: + case 255: + return ts.forEachChild(node, visit); + } + return undefined; + } + } + function checkVariableAssignedBefore(symbol, reference) { + if (!(symbol.flags & 3)) { + return; + } + var declaration = symbol.valueDeclaration; + if (!declaration || declaration.kind !== 217 || declaration.initializer || ts.isInAmbientContext(declaration)) { + return; + } + var parentParentKind = declaration.parent.parent.kind; + if (parentParentKind === 207 || parentParentKind === 206) { + return; + } + var declarationContainer = ts.getContainingFunction(declaration) || ts.getSourceFileOfNode(declaration); + var referenceContainer = ts.getContainingFunction(reference) || ts.getSourceFileOfNode(reference); + if (declarationContainer !== referenceContainer) { + return; + } + var links = getSymbolLinks(symbol); + if (!links.firstAssignmentChecked) { + links.firstAssignmentChecked = true; + links.firstAssignment = findFirstAssignment(symbol, declarationContainer); + } + if (links.firstAssignment && links.firstAssignment.end <= reference.pos) { + return; + } + error(reference, ts.Diagnostics.Variable_0_is_used_before_being_assigned, symbolToString(symbol)); + } function checkIdentifier(node) { var symbol = getResolvedSymbol(node); if (symbol === argumentsSymbol) { var container = ts.getContainingFunction(node); - if (container.kind === 178) { + if (container.kind === 179) { if (languageVersion < 2) { error(node, ts.Diagnostics.The_arguments_object_cannot_be_referenced_in_an_arrow_function_in_ES3_and_ES5_Consider_using_a_standard_function_expression); } @@ -18139,7 +19031,7 @@ var ts; var localOrExportSymbol = getExportSymbolOfValueSymbolIfExported(symbol); if (languageVersion === 2 && localOrExportSymbol.flags & 32 - && localOrExportSymbol.valueDeclaration.kind === 218 + && localOrExportSymbol.valueDeclaration.kind === 220 && ts.nodeIsDecorated(localOrExportSymbol.valueDeclaration)) { var container = ts.getContainingClass(node); while (container !== undefined) { @@ -18154,7 +19046,11 @@ var ts; checkCollisionWithCapturedSuperVariable(node, node); checkCollisionWithCapturedThisVariable(node, node); checkNestedBlockScopedBinding(node, symbol); - return getNarrowedTypeOfSymbol(localOrExportSymbol, node); + var type = getTypeOfSymbol(localOrExportSymbol); + if (strictNullChecks && !isAssignmentTarget(node) && !(type.flags & 1) && !(getNullableKind(type) & 32)) { + checkVariableAssignedBefore(symbol, node); + } + return getNarrowedTypeOfReference(type, node); } function isInsideFunction(node, threshold) { var current = node; @@ -18169,7 +19065,7 @@ var ts; function checkNestedBlockScopedBinding(node, symbol) { if (languageVersion >= 2 || (symbol.flags & (2 | 32)) === 0 || - symbol.valueDeclaration.parent.kind === 248) { + symbol.valueDeclaration.parent.kind === 251) { return; } var container = ts.getEnclosingBlockScopeContainer(symbol.valueDeclaration); @@ -18187,8 +19083,8 @@ var ts; if (usedInFunction) { getNodeLinks(current).flags |= 65536; } - if (container.kind === 203 && - ts.getAncestor(symbol.valueDeclaration, 216).parent === container && + if (container.kind === 205 && + ts.getAncestor(symbol.valueDeclaration, 218).parent === container && isAssignedInBodyOfForStatement(node, container)) { getNodeLinks(symbol.valueDeclaration).flags |= 2097152; } @@ -18200,14 +19096,14 @@ var ts; } function isAssignedInBodyOfForStatement(node, container) { var current = node; - while (current.parent.kind === 176) { + while (current.parent.kind === 177) { current = current.parent; } var isAssigned = false; - if (current.parent.kind === 185) { - isAssigned = current.parent.left === current && ts.isAssignmentOperator(current.parent.operatorToken.kind); + if (isAssignmentTarget(current)) { + isAssigned = true; } - if ((current.parent.kind === 183 || current.parent.kind === 184)) { + else if ((current.parent.kind === 184 || current.parent.kind === 185)) { var expr = current.parent; isAssigned = expr.operator === 41 || expr.operator === 42; } @@ -18226,7 +19122,7 @@ var ts; } function captureLexicalThis(node, container) { getNodeLinks(node).flags |= 2; - if (container.kind === 143 || container.kind === 146) { + if (container.kind === 144 || container.kind === 147) { var classNode = container.parent; getNodeLinks(classNode).flags |= 4; } @@ -18260,7 +19156,7 @@ var ts; function checkThisExpression(node) { var container = ts.getThisContainer(node, true); var needToCaptureLexicalThis = false; - if (container.kind === 146) { + if (container.kind === 147) { var containingClassDecl = container.parent; var baseTypeNode = ts.getClassExtendsHeritageClauseElement(containingClassDecl); if (baseTypeNode && !classDeclarationExtendsNull(containingClassDecl)) { @@ -18270,45 +19166,62 @@ var ts; } } } - if (container.kind === 178) { + if (container.kind === 179) { container = ts.getThisContainer(container, false); needToCaptureLexicalThis = (languageVersion < 2); } switch (container.kind) { - case 222: + case 224: error(node, ts.Diagnostics.this_cannot_be_referenced_in_a_module_or_namespace_body); break; - case 221: + case 223: error(node, ts.Diagnostics.this_cannot_be_referenced_in_current_location); break; - case 146: + case 147: if (isInConstructorArgumentInitializer(node, container)) { error(node, ts.Diagnostics.this_cannot_be_referenced_in_constructor_arguments); } break; + case 144: case 143: - case 142: if (container.flags & 32) { error(node, ts.Diagnostics.this_cannot_be_referenced_in_a_static_property_initializer); } break; - case 138: + case 139: error(node, ts.Diagnostics.this_cannot_be_referenced_in_a_computed_property_name); break; } if (needToCaptureLexicalThis) { captureLexicalThis(node, container); } + if (ts.isFunctionLike(container)) { + var type = getContextuallyTypedThisType(container); + if (type) { + return type; + } + var signature = getSignatureFromDeclaration(container); + if (signature.thisType) { + return signature.thisType; + } + if (container.parent && container.parent.kind === 170) { + var type_1 = checkExpressionCached(container.parent); + if (type_1) { + return type_1; + } + } + } if (ts.isClassLike(container.parent)) { var symbol = getSymbolOfNode(container.parent); - return container.flags & 32 ? getTypeOfSymbol(symbol) : getDeclaredTypeOfSymbol(symbol).thisType; + var type = container.flags & 32 ? getTypeOfSymbol(symbol) : getDeclaredTypeOfSymbol(symbol).thisType; + return getNarrowedTypeOfReference(type, node); } if (ts.isInJavaScriptFile(node)) { var type = getTypeForThisExpressionFromJSDoc(container); if (type && type !== unknownType) { return type; } - if (container.kind === 177) { + if (container.kind === 178) { if (ts.getSpecialPropertyAssignmentKind(container.parent) === 3) { var className = container.parent .left @@ -18321,31 +19234,34 @@ var ts; } } } + if (compilerOptions.noImplicitThis) { + error(node, ts.Diagnostics.this_implicitly_has_type_any_because_it_does_not_have_a_type_annotation); + } return anyType; } function getTypeForThisExpressionFromJSDoc(node) { var typeTag = ts.getJSDocTypeTag(node); - if (typeTag && typeTag.typeExpression && typeTag.typeExpression.type && typeTag.typeExpression.type.kind === 265) { + if (typeTag && typeTag.typeExpression && typeTag.typeExpression.type && typeTag.typeExpression.type.kind === 268) { var jsDocFunctionType = typeTag.typeExpression.type; - if (jsDocFunctionType.parameters.length > 0 && jsDocFunctionType.parameters[0].type.kind === 268) { + if (jsDocFunctionType.parameters.length > 0 && jsDocFunctionType.parameters[0].type.kind === 271) { return getTypeFromTypeNode(jsDocFunctionType.parameters[0].type); } } } function isInConstructorArgumentInitializer(node, constructorDecl) { for (var n = node; n && n !== constructorDecl; n = n.parent) { - if (n.kind === 140) { + if (n.kind === 141) { return true; } } return false; } function checkSuperExpression(node) { - var isCallExpression = node.parent.kind === 172 && node.parent.expression === node; + var isCallExpression = node.parent.kind === 173 && node.parent.expression === node; var container = ts.getSuperContainer(node, true); var needToCaptureLexicalThis = false; if (!isCallExpression) { - while (container && container.kind === 178) { + while (container && container.kind === 179) { container = ts.getSuperContainer(container, true); needToCaptureLexicalThis = languageVersion < 2; } @@ -18354,16 +19270,16 @@ var ts; var nodeCheckFlag = 0; if (!canUseSuperExpression) { var current = node; - while (current && current !== container && current.kind !== 138) { + while (current && current !== container && current.kind !== 139) { current = current.parent; } - if (current && current.kind === 138) { + if (current && current.kind === 139) { error(node, ts.Diagnostics.super_cannot_be_referenced_in_a_computed_property_name); } else if (isCallExpression) { error(node, ts.Diagnostics.Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors); } - else if (!container || !container.parent || !(ts.isClassLike(container.parent) || container.parent.kind === 169)) { + else if (!container || !container.parent || !(ts.isClassLike(container.parent) || container.parent.kind === 170)) { error(node, ts.Diagnostics.super_can_only_be_referenced_in_members_of_derived_classes_or_object_literal_expressions); } else { @@ -18378,7 +19294,7 @@ var ts; nodeCheckFlag = 256; } getNodeLinks(node).flags |= nodeCheckFlag; - if (container.kind === 145 && container.flags & 256) { + if (container.kind === 146 && container.flags & 256) { if (ts.isSuperPropertyOrElementAccess(node.parent) && isAssignmentTarget(node.parent)) { getNodeLinks(container).flags |= 4096; } @@ -18389,7 +19305,7 @@ var ts; if (needToCaptureLexicalThis) { captureLexicalThis(node.parent, container); } - if (container.parent.kind === 169) { + if (container.parent.kind === 170) { if (languageVersion < 2) { error(node, ts.Diagnostics.super_is_only_allowed_in_members_of_object_literal_expressions_when_option_target_is_ES2015_or_higher); return unknownType; @@ -18407,7 +19323,7 @@ var ts; } return unknownType; } - if (container.kind === 146 && isInConstructorArgumentInitializer(node, container)) { + if (container.kind === 147 && isInConstructorArgumentInitializer(node, container)) { error(node, ts.Diagnostics.super_cannot_be_referenced_in_constructor_arguments); return unknownType; } @@ -18419,30 +19335,41 @@ var ts; return false; } if (isCallExpression) { - return container.kind === 146; + return container.kind === 147; } else { - if (ts.isClassLike(container.parent) || container.parent.kind === 169) { + if (ts.isClassLike(container.parent) || container.parent.kind === 170) { if (container.flags & 32) { - return container.kind === 145 || - container.kind === 144 || - container.kind === 147 || - container.kind === 148; + return container.kind === 146 || + container.kind === 145 || + container.kind === 148 || + container.kind === 149; } else { - return container.kind === 145 || - container.kind === 144 || - container.kind === 147 || + return container.kind === 146 || + container.kind === 145 || container.kind === 148 || + container.kind === 149 || + container.kind === 144 || container.kind === 143 || - container.kind === 142 || - container.kind === 146; + container.kind === 147; } } } return false; } } + function getContextuallyTypedThisType(func) { + if ((isFunctionExpressionOrArrowFunction(func) || ts.isObjectLiteralMethod(func)) && + isContextSensitive(func) && + func.kind !== 179) { + var contextualSignature = getContextualSignature(func); + if (contextualSignature) { + return contextualSignature.thisType; + } + } + return undefined; + } function getContextuallyTypedParameterType(parameter) { var func = parameter.parent; if (isFunctionExpressionOrArrowFunction(func) || ts.isObjectLiteralMethod(func)) { @@ -18471,7 +19398,7 @@ var ts; if (declaration.type) { return getTypeFromTypeNode(declaration.type); } - if (declaration.kind === 140) { + if (declaration.kind === 141) { var type = getContextuallyTypedParameterType(declaration); if (type) { return type; @@ -18480,6 +19407,18 @@ var ts; if (ts.isBindingPattern(declaration.name)) { return getTypeFromBindingPattern(declaration.name, true); } + if (ts.isBindingPattern(declaration.parent)) { + var parentDeclaration = declaration.parent.parent; + var name_11 = declaration.propertyName || declaration.name; + if (ts.isVariableLike(parentDeclaration) && + parentDeclaration.type && + !ts.isBindingPattern(name_11)) { + var text = getTextOfPropertyName(name_11); + if (text) { + return getTypeOfPropertyOfType(getTypeFromTypeNode(parentDeclaration.type), text); + } + } + } } return undefined; } @@ -18504,7 +19443,7 @@ var ts; } function isInParameterInitializerBeforeContainingFunction(node) { while (node.parent && !ts.isFunctionLike(node.parent)) { - if (node.parent.kind === 140 && node.parent.initializer === node) { + if (node.parent.kind === 141 && node.parent.initializer === node) { return true; } node = node.parent; @@ -18513,8 +19452,8 @@ var ts; } function getContextualReturnType(functionDecl) { if (functionDecl.type || - functionDecl.kind === 146 || - functionDecl.kind === 147 && ts.getSetAccessorTypeAnnotationNode(ts.getDeclarationOfKind(functionDecl.symbol, 148))) { + functionDecl.kind === 147 || + functionDecl.kind === 148 && ts.getSetAccessorTypeAnnotationNode(ts.getDeclarationOfKind(functionDecl.symbol, 149))) { return getReturnTypeOfSignature(getSignatureFromDeclaration(functionDecl)); } var signature = getContextualSignatureForFunctionLikeDeclaration(functionDecl); @@ -18533,7 +19472,7 @@ var ts; return undefined; } function getContextualTypeForSubstitutionExpression(template, substitutionExpression) { - if (template.parent.kind === 174) { + if (template.parent.kind === 175) { return getContextualTypeForArgument(template.parent, substitutionExpression); } return undefined; @@ -18641,13 +19580,13 @@ var ts; var kind = attribute.kind; var jsxElement = attribute.parent; var attrsType = getJsxElementAttributesType(jsxElement); - if (attribute.kind === 242) { + if (attribute.kind === 245) { if (!attrsType || isTypeAny(attrsType)) { return undefined; } return getTypeOfPropertyOfType(attrsType, attribute.name.text); } - else if (attribute.kind === 243) { + else if (attribute.kind === 246) { return attrsType; } ts.Debug.fail("Expected JsxAttribute or JsxSpreadAttribute, got ts.SyntaxKind[" + kind + "]"); @@ -18665,40 +19604,40 @@ var ts; } var parent = node.parent; switch (parent.kind) { - case 215: - case 140: + case 217: + case 141: + case 144: case 143: - case 142: - case 167: - return getContextualTypeForInitializerExpression(node); - case 178: - case 208: - return getContextualTypeForReturnExpression(node); - case 188: - return getContextualTypeForYieldOperand(parent); - case 172: - case 173: - return getContextualTypeForArgument(parent, node); - case 175: - case 193: - return getTypeFromTypeNode(parent.type); - case 185: - return getContextualTypeForBinaryOperand(node); - case 249: - return getContextualTypeForObjectLiteralElement(parent); case 168: - return getContextualTypeForElementExpression(node); - case 186: - return getContextualTypeForConditionalOperand(node); - case 194: - ts.Debug.assert(parent.parent.kind === 187); - return getContextualTypeForSubstitutionExpression(parent.parent, node); + return getContextualTypeForInitializerExpression(node); + case 179: + case 210: + return getContextualTypeForReturnExpression(node); + case 189: + return getContextualTypeForYieldOperand(parent); + case 173: + case 174: + return getContextualTypeForArgument(parent, node); case 176: + case 194: + return getTypeFromTypeNode(parent.type); + case 186: + return getContextualTypeForBinaryOperand(node); + case 252: + return getContextualTypeForObjectLiteralElement(parent); + case 169: + return getContextualTypeForElementExpression(node); + case 187: + return getContextualTypeForConditionalOperand(node); + case 196: + ts.Debug.assert(parent.parent.kind === 188); + return getContextualTypeForSubstitutionExpression(parent.parent, node); + case 177: return getContextualType(parent); - case 244: + case 247: return getContextualType(parent); - case 242: - case 243: + case 245: + case 246: return getContextualTypeForJsxAttribute(parent); } return undefined; @@ -18713,7 +19652,7 @@ var ts; } } function isFunctionExpressionOrArrowFunction(node) { - return node.kind === 177 || node.kind === 178; + return node.kind === 178 || node.kind === 179; } function getContextualSignatureForFunctionLikeDeclaration(node) { return isFunctionExpressionOrArrowFunction(node) || ts.isObjectLiteralMethod(node) @@ -18721,7 +19660,7 @@ var ts; : undefined; } function getContextualSignature(node) { - ts.Debug.assert(node.kind !== 145 || ts.isObjectLiteralMethod(node)); + ts.Debug.assert(node.kind !== 146 || ts.isObjectLiteralMethod(node)); var type = ts.isObjectLiteralMethod(node) ? getContextualTypeForObjectLiteralMethod(node) : getApparentTypeOfContextualType(node); @@ -18740,7 +19679,7 @@ var ts; if (!signatureList) { signatureList = [signature]; } - else if (!compareSignaturesIdentical(signatureList[0], signature, false, true, compareTypesIdentical)) { + else if (!compareSignaturesIdentical(signatureList[0], signature, false, true, true, compareTypesIdentical)) { return undefined; } else { @@ -18759,16 +19698,34 @@ var ts; function isInferentialContext(mapper) { return mapper && mapper.context; } - function isAssignmentTarget(node) { + function getAssignmentRoot(node) { + while (node.parent.kind === 177) { + node = node.parent; + } + while (true) { + if (node.parent.kind === 252) { + node = node.parent.parent; + } + else if (node.parent.kind === 169) { + node = node.parent; + } + else { + break; + } + } var parent = node.parent; - if (parent.kind === 185 && parent.operatorToken.kind === 56 && parent.left === node) { - return true; - } - if (parent.kind === 249) { - return isAssignmentTarget(parent.parent); - } - if (parent.kind === 168) { - return isAssignmentTarget(parent); + return parent.kind === 186 && + parent.operatorToken.kind === 56 && + parent.left === node ? parent : undefined; + } + function isAssignmentTarget(node) { + return !!getAssignmentRoot(node); + } + function isCompoundAssignmentTarget(node) { + var parent = node.parent; + if (parent.kind === 186 && parent.left === node) { + var operator = parent.operatorToken.kind; + return operator >= 56 && operator <= 68; } return false; } @@ -18777,8 +19734,8 @@ var ts; return checkIteratedTypeOrElementType(arrayOrIterableType, node.expression, false); } function hasDefaultValue(node) { - return (node.kind === 167 && !!node.initializer) || - (node.kind === 185 && node.operatorToken.kind === 56); + return (node.kind === 168 && !!node.initializer) || + (node.kind === 186 && node.operatorToken.kind === 56); } function checkArrayLiteral(node, contextualMapper) { var elements = node.elements; @@ -18787,7 +19744,7 @@ var ts; var inDestructuringPattern = isAssignmentTarget(node); for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) { var e = elements_1[_i]; - if (inDestructuringPattern && e.kind === 189) { + if (inDestructuringPattern && e.kind === 190) { var restArrayType = checkExpression(e.expression, contextualMapper); var restElementType = getIndexTypeOfType(restArrayType, 1) || (languageVersion >= 2 ? getElementTypeOfIterable(restArrayType, undefined) : undefined); @@ -18799,7 +19756,7 @@ var ts; var type = checkExpression(e, contextualMapper); elementTypes.push(type); } - hasSpreadElement = hasSpreadElement || e.kind === 189; + hasSpreadElement = hasSpreadElement || e.kind === 190; } if (!hasSpreadElement) { if (inDestructuringPattern && elementTypes.length) { @@ -18810,7 +19767,7 @@ var ts; var contextualType = getApparentTypeOfContextualType(node); if (contextualType && contextualTypeIsTupleLikeType(contextualType)) { var pattern = contextualType.pattern; - if (pattern && (pattern.kind === 166 || pattern.kind === 168)) { + if (pattern && (pattern.kind === 167 || pattern.kind === 169)) { var patternElements = pattern.elements; for (var i = elementTypes.length; i < patternElements.length; i++) { var patternElement = patternElements[i]; @@ -18818,7 +19775,7 @@ var ts; elementTypes.push(contextualType.elementTypes[i]); } else { - if (patternElement.kind !== 191) { + if (patternElement.kind !== 192) { error(patternElement, ts.Diagnostics.Initializer_provides_no_value_for_this_binding_element_and_the_binding_element_has_no_default_value); } elementTypes.push(unknownType); @@ -18830,10 +19787,10 @@ var ts; } } } - return createArrayType(elementTypes.length ? getUnionType(elementTypes) : undefinedType); + return createArrayType(elementTypes.length ? getUnionType(elementTypes) : emptyArrayElementType); } function isNumericName(name) { - return name.kind === 138 ? isNumericComputedName(name) : isNumericLiteralName(name.text); + return name.kind === 139 ? isNumericComputedName(name) : isNumericLiteralName(name.text); } function isNumericComputedName(name) { return isTypeAnyOrAllConstituentTypesHaveKind(checkComputedPropertyName(name), 132); @@ -18874,7 +19831,7 @@ var ts; var propertiesArray = []; var contextualType = getApparentTypeOfContextualType(node); var contextualTypeHasPattern = contextualType && contextualType.pattern && - (contextualType.pattern.kind === 165 || contextualType.pattern.kind === 169); + (contextualType.pattern.kind === 166 || contextualType.pattern.kind === 170); var typeFlags = 0; var patternWithComputedProperties = false; var hasComputedStringProperty = false; @@ -18882,25 +19839,25 @@ var ts; for (var _i = 0, _a = node.properties; _i < _a.length; _i++) { var memberDecl = _a[_i]; var member = memberDecl.symbol; - if (memberDecl.kind === 249 || - memberDecl.kind === 250 || + if (memberDecl.kind === 252 || + memberDecl.kind === 253 || ts.isObjectLiteralMethod(memberDecl)) { var type = void 0; - if (memberDecl.kind === 249) { + if (memberDecl.kind === 252) { type = checkPropertyAssignment(memberDecl, contextualMapper); } - else if (memberDecl.kind === 145) { + else if (memberDecl.kind === 146) { type = checkObjectLiteralMethod(memberDecl, contextualMapper); } else { - ts.Debug.assert(memberDecl.kind === 250); + ts.Debug.assert(memberDecl.kind === 253); type = checkExpression(memberDecl.name, contextualMapper); } typeFlags |= type.flags; var prop = createSymbol(4 | 67108864 | member.flags, member.name); if (inDestructuringPattern) { - var isOptional = (memberDecl.kind === 249 && hasDefaultValue(memberDecl.initializer)) || - (memberDecl.kind === 250 && memberDecl.objectAssignmentInitializer); + var isOptional = (memberDecl.kind === 252 && hasDefaultValue(memberDecl.initializer)) || + (memberDecl.kind === 253 && memberDecl.objectAssignmentInitializer); if (isOptional) { prop.flags |= 536870912; } @@ -18927,7 +19884,7 @@ var ts; member = prop; } else { - ts.Debug.assert(memberDecl.kind === 147 || memberDecl.kind === 148); + ts.Debug.assert(memberDecl.kind === 148 || memberDecl.kind === 149); checkAccessorDeclaration(memberDecl); } if (ts.hasDynamicName(memberDecl)) { @@ -18971,17 +19928,22 @@ var ts; } function checkJsxElement(node) { checkJsxOpeningLikeElement(node.openingElement); - getJsxTagSymbol(node.closingElement); + if (isJsxIntrinsicIdentifier(node.closingElement.tagName)) { + getIntrinsicTagSymbol(node.closingElement); + } + else { + checkExpression(node.closingElement.tagName); + } for (var _i = 0, _a = node.children; _i < _a.length; _i++) { var child = _a[_i]; switch (child.kind) { - case 244: + case 247: checkJsxExpression(child); break; - case 237: + case 240: checkJsxElement(child); break; - case 238: + case 241: checkJsxSelfClosingElement(child); break; } @@ -18992,7 +19954,7 @@ var ts; return name.indexOf("-") < 0; } function isJsxIntrinsicIdentifier(tagName) { - if (tagName.kind === 137) { + if (tagName.kind === 138) { return false; } else { @@ -19055,14 +20017,6 @@ var ts; } return jsxTypes[name]; } - function getJsxTagSymbol(node) { - if (isJsxIntrinsicIdentifier(node.tagName)) { - return getIntrinsicTagSymbol(node); - } - else { - return checkExpression(node.tagName).symbol; - } - } function getIntrinsicTagSymbol(node) { var links = getNodeLinks(node); if (!links.resolvedSymbol) { @@ -19142,17 +20096,19 @@ var ts; var elemInstanceType = getJsxElementInstanceType(node); var elemClassType = getJsxGlobalElementClassType(); if (!elemClassType || !isTypeAssignableTo(elemInstanceType, elemClassType)) { - var elemType = checkExpression(node.tagName); - var callSignatures = elemType && getSignaturesOfType(elemType, 0); - var callSignature = callSignatures && callSignatures.length > 0 && callSignatures[0]; - var callReturnType = callSignature && getReturnTypeOfSignature(callSignature); - var paramType = callReturnType && (callSignature.parameters.length === 0 ? emptyObjectType : getTypeOfSymbol(callSignature.parameters[0])); - if (callReturnType && isTypeAssignableTo(callReturnType, jsxElementType)) { - var intrinsicAttributes = getJsxType(JsxNames.IntrinsicAttributes); - if (intrinsicAttributes !== unknownType) { - paramType = intersectTypes(intrinsicAttributes, paramType); + if (jsxElementType) { + var elemType = checkExpression(node.tagName); + var callSignatures = elemType && getSignaturesOfType(elemType, 0); + var callSignature = callSignatures && callSignatures.length > 0 && callSignatures[0]; + var callReturnType = callSignature && getReturnTypeOfSignature(callSignature); + var paramType = callReturnType && (callSignature.parameters.length === 0 ? emptyObjectType : getTypeOfSymbol(callSignature.parameters[0])); + if (callReturnType && isTypeAssignableTo(callReturnType, jsxElementType)) { + var intrinsicAttributes = getJsxType(JsxNames.IntrinsicAttributes); + if (intrinsicAttributes !== unknownType) { + paramType = intersectTypes(intrinsicAttributes, paramType); + } + return links.resolvedJsxType = paramType; } - return links.resolvedJsxType = paramType; } } if (elemClassType) { @@ -19244,11 +20200,11 @@ var ts; var nameTable = {}; var sawSpreadedAny = false; for (var i = node.attributes.length - 1; i >= 0; i--) { - if (node.attributes[i].kind === 242) { + if (node.attributes[i].kind === 245) { checkJsxAttribute((node.attributes[i]), targetAttributesType, nameTable); } else { - ts.Debug.assert(node.attributes[i].kind === 243); + ts.Debug.assert(node.attributes[i].kind === 246); var spreadType = checkJsxSpreadAttribute((node.attributes[i]), targetAttributesType, nameTable); if (isTypeAny(spreadType)) { sawSpreadedAny = true; @@ -19274,7 +20230,7 @@ var ts; } } function getDeclarationKindFromSymbol(s) { - return s.valueDeclaration ? s.valueDeclaration.kind : 143; + return s.valueDeclaration ? s.valueDeclaration.kind : 144; } function getDeclarationFlagsFromSymbol(s) { return s.valueDeclaration ? ts.getCombinedNodeFlags(s.valueDeclaration) : s.flags & 134217728 ? 4 | 32 : 0; @@ -19282,11 +20238,11 @@ var ts; function checkClassPropertyAccess(node, left, type, prop) { var flags = getDeclarationFlagsFromSymbol(prop); var declaringClass = getDeclaredTypeOfSymbol(getParentOfSymbol(prop)); + var errorNode = node.kind === 171 || node.kind === 217 ? + node.name : + node.right; if (left.kind === 95) { - var errorNode = node.kind === 170 ? - node.name : - node.right; - if (languageVersion < 2 && getDeclarationKindFromSymbol(prop) !== 145) { + if (languageVersion < 2 && getDeclarationKindFromSymbol(prop) !== 146) { error(errorNode, ts.Diagnostics.Only_public_and_protected_methods_of_the_base_class_are_accessible_via_the_super_keyword); return false; } @@ -19298,11 +20254,10 @@ var ts; if (!(flags & (8 | 16))) { return true; } - var enclosingClassDeclaration = ts.getContainingClass(node); - var enclosingClass = enclosingClassDeclaration ? getDeclaredTypeOfSymbol(getSymbolOfNode(enclosingClassDeclaration)) : undefined; if (flags & 8) { - if (declaringClass !== enclosingClass) { - error(node, ts.Diagnostics.Property_0_is_private_and_only_accessible_within_class_1, symbolToString(prop), typeToString(declaringClass)); + var declaringClassDeclaration = getClassLikeDeclarationOfSymbol(getParentOfSymbol(prop)); + if (!isNodeWithinClass(node, declaringClassDeclaration)) { + error(errorNode, ts.Diagnostics.Property_0_is_private_and_only_accessible_within_class_1, symbolToString(prop), typeToString(declaringClass)); return false; } return true; @@ -19310,8 +20265,12 @@ var ts; if (left.kind === 95) { return true; } - if (!enclosingClass || !hasBaseType(enclosingClass, declaringClass)) { - error(node, ts.Diagnostics.Property_0_is_protected_and_only_accessible_within_class_1_and_its_subclasses, symbolToString(prop), typeToString(declaringClass)); + var enclosingClass = forEachEnclosingClass(node, function (enclosingDeclaration) { + var enclosingClass = getDeclaredTypeOfSymbol(getSymbolOfNode(enclosingDeclaration)); + return hasBaseType(enclosingClass, declaringClass) ? enclosingClass : undefined; + }); + if (!enclosingClass) { + error(errorNode, ts.Diagnostics.Property_0_is_protected_and_only_accessible_within_class_1_and_its_subclasses, symbolToString(prop), typeToString(declaringClass)); return false; } if (flags & 32) { @@ -19321,11 +20280,19 @@ var ts; type = getConstraintOfTypeParameter(type); } if (!(getTargetType(type).flags & (1024 | 2048) && hasBaseType(type, enclosingClass))) { - error(node, ts.Diagnostics.Property_0_is_protected_and_only_accessible_through_an_instance_of_class_1, symbolToString(prop), typeToString(enclosingClass)); + error(errorNode, ts.Diagnostics.Property_0_is_protected_and_only_accessible_through_an_instance_of_class_1, symbolToString(prop), typeToString(enclosingClass)); return false; } return true; } + function checkNonNullExpression(node) { + var type = checkExpression(node); + if (strictNullChecks && getNullableKind(type)) { + error(node, ts.Diagnostics.Object_is_possibly_null_or_undefined); + return getNonNullableType(type); + } + return type; + } function checkPropertyAccessExpression(node) { return checkPropertyAccessExpressionOrQualifiedName(node, node.expression, node.name); } @@ -19333,7 +20300,7 @@ var ts; return checkPropertyAccessExpressionOrQualifiedName(node, node.left, node.right); } function checkPropertyAccessExpressionOrQualifiedName(node, left, right) { - var type = checkExpression(left); + var type = checkNonNullExpression(left); if (isTypeAny(type)) { return type; } @@ -19352,10 +20319,12 @@ var ts; if (prop.parent && prop.parent.flags & 32) { checkClassPropertyAccess(node, left, apparentType, prop); } - return getTypeOfSymbol(prop); + var propType = getTypeOfSymbol(prop); + return node.kind === 171 && prop.flags & 4 ? + getNarrowedTypeOfReference(propType, node) : propType; } function isValidPropertyAccess(node, propertyName) { - var left = node.kind === 170 + var left = node.kind === 171 ? node.expression : node.left; var type = checkExpression(left); @@ -19369,7 +20338,7 @@ var ts; } function getForInVariableSymbol(node) { var initializer = node.initializer; - if (initializer.kind === 216) { + if (initializer.kind === 218) { var variable = initializer.declarations[0]; if (variable && !ts.isBindingPattern(variable.name)) { return getSymbolOfNode(variable); @@ -19391,7 +20360,7 @@ var ts; var child = expr; var node = expr.parent; while (node) { - if (node.kind === 204 && + if (node.kind === 206 && child === node.statement && getForInVariableSymbol(node) === symbol && hasNumericPropertyNames(checkExpression(node.expression))) { @@ -19407,7 +20376,7 @@ var ts; function checkIndexedAccess(node) { if (!node.argumentExpression) { var sourceFile = ts.getSourceFileOfNode(node); - if (node.parent.kind === 173 && node.parent.expression === node) { + if (node.parent.kind === 174 && node.parent.expression === node) { var start = ts.skipTrivia(sourceFile.text, node.expression.end); var end = node.end; grammarErrorAtPos(sourceFile, start, end - start, ts.Diagnostics.new_T_cannot_be_used_to_create_an_array_Use_new_Array_T_instead); @@ -19418,7 +20387,7 @@ var ts; grammarErrorAtPos(sourceFile, start, end - start, ts.Diagnostics.Expression_expected); } } - var objectType = getApparentType(checkExpression(node.expression)); + var objectType = getApparentType(checkNonNullExpression(node.expression)); var indexType = node.argumentExpression ? checkExpression(node.argumentExpression) : unknownType; if (objectType === unknownType) { return unknownType; @@ -19430,15 +20399,15 @@ var ts; return unknownType; } if (node.argumentExpression) { - var name_11 = getPropertyNameForIndexedAccess(node.argumentExpression, indexType); - if (name_11 !== undefined) { - var prop = getPropertyOfType(objectType, name_11); + var name_12 = getPropertyNameForIndexedAccess(node.argumentExpression, indexType); + if (name_12 !== undefined) { + var prop = getPropertyOfType(objectType, name_12); if (prop) { getNodeLinks(node).resolvedSymbol = prop; return getTypeOfSymbol(prop); } else if (isConstEnum) { - error(node.argumentExpression, ts.Diagnostics.Property_0_does_not_exist_on_const_enum_1, name_11, symbolToString(objectType.symbol)); + error(node.argumentExpression, ts.Diagnostics.Property_0_does_not_exist_on_const_enum_1, name_12, symbolToString(objectType.symbol)); return unknownType; } } @@ -19470,7 +20439,7 @@ var ts; if (indexArgumentExpression.kind === 9 || indexArgumentExpression.kind === 8) { return indexArgumentExpression.text; } - if (indexArgumentExpression.kind === 171 || indexArgumentExpression.kind === 170) { + if (indexArgumentExpression.kind === 172 || indexArgumentExpression.kind === 171) { var value = getConstantValue(indexArgumentExpression); if (value !== undefined) { return value.toString(); @@ -19513,10 +20482,10 @@ var ts; return true; } function resolveUntypedCall(node) { - if (node.kind === 174) { + if (node.kind === 175) { checkExpression(node.template); } - else if (node.kind !== 141) { + else if (node.kind !== 142) { ts.forEach(node.arguments, function (argument) { checkExpression(argument); }); @@ -19538,19 +20507,19 @@ var ts; for (var _i = 0, signatures_2 = signatures; _i < signatures_2.length; _i++) { var signature = signatures_2[_i]; var symbol = signature.declaration && getSymbolOfNode(signature.declaration); - var parent_6 = signature.declaration && signature.declaration.parent; + var parent_7 = signature.declaration && signature.declaration.parent; if (!lastSymbol || symbol === lastSymbol) { - if (lastParent && parent_6 === lastParent) { + if (lastParent && parent_7 === lastParent) { index++; } else { - lastParent = parent_6; + lastParent = parent_7; index = cutoffIndex; } } else { index = cutoffIndex = result.length; - lastParent = parent_6; + lastParent = parent_7; } lastSymbol = symbol; if (signature.hasStringLiterals) { @@ -19567,7 +20536,7 @@ var ts; function getSpreadArgumentIndex(args) { for (var i = 0; i < args.length; i++) { var arg = args[i]; - if (arg && arg.kind === 189) { + if (arg && arg.kind === 190) { return i; } } @@ -19579,11 +20548,11 @@ var ts; var callIsIncomplete; var isDecorator; var spreadArgIndex = -1; - if (node.kind === 174) { + if (node.kind === 175) { var tagExpression = node; adjustedArgCount = args.length; typeArguments = undefined; - if (tagExpression.template.kind === 187) { + if (tagExpression.template.kind === 188) { var templateExpression = tagExpression.template; var lastSpan = ts.lastOrUndefined(templateExpression.templateSpans); ts.Debug.assert(lastSpan !== undefined); @@ -19595,7 +20564,7 @@ var ts; callIsIncomplete = !!templateLiteral.isUnterminated; } } - else if (node.kind === 141) { + else if (node.kind === 142) { isDecorator = true; typeArguments = undefined; adjustedArgCount = getEffectiveArgumentCount(node, undefined, signature); @@ -19603,7 +20572,7 @@ var ts; else { var callExpression = node; if (!callExpression.arguments) { - ts.Debug.assert(callExpression.kind === 173); + ts.Debug.assert(callExpression.kind === 174); return signature.minArgumentCount === 0; } adjustedArgCount = callExpression.arguments.hasTrailingComma ? args.length + 1 : args.length; @@ -19653,10 +20622,15 @@ var ts; if (context.failedTypeParameterIndex !== undefined && !context.inferences[context.failedTypeParameterIndex].isFixed) { context.failedTypeParameterIndex = undefined; } + if (signature.thisType) { + var thisArgumentNode = getThisArgumentOfCall(node); + var thisArgumentType = thisArgumentNode ? checkExpression(thisArgumentNode) : voidType; + inferTypes(context, thisArgumentType, signature.thisType); + } var argCount = getEffectiveArgumentCount(node, args, signature); for (var i = 0; i < argCount; i++) { var arg = getEffectiveArgument(node, args, i); - if (arg === undefined || arg.kind !== 191) { + if (arg === undefined || arg.kind !== 192) { var paramType = getTypeAtPosition(signature, i); var argType = getEffectiveArgumentType(node, i, arg); if (argType === undefined) { @@ -19702,10 +20676,20 @@ var ts; return typeArgumentsAreAssignable; } function checkApplicableSignature(node, args, signature, relation, excludeArgument, reportErrors) { + if (signature.thisType && signature.thisType !== voidType && node.kind !== 174) { + var thisArgumentNode = getThisArgumentOfCall(node); + var thisArgumentType = thisArgumentNode ? checkExpression(thisArgumentNode) : voidType; + var errorNode = reportErrors ? (thisArgumentNode || node) : undefined; + var headMessage_1 = ts.Diagnostics.The_this_context_of_type_0_is_not_assignable_to_method_s_this_of_type_1; + if (!checkTypeRelatedTo(thisArgumentType, signature.thisType, relation, errorNode, headMessage_1)) { + return false; + } + } + var headMessage = ts.Diagnostics.Argument_of_type_0_is_not_assignable_to_parameter_of_type_1; var argCount = getEffectiveArgumentCount(node, args, signature); for (var i = 0; i < argCount; i++) { var arg = getEffectiveArgument(node, args, i); - if (arg === undefined || arg.kind !== 191) { + if (arg === undefined || arg.kind !== 192) { var paramType = getTypeAtPosition(signature, i); var argType = getEffectiveArgumentType(node, i, arg); if (argType === undefined) { @@ -19714,7 +20698,6 @@ var ts; : checkExpressionWithContextualType(arg, paramType, excludeArgument && excludeArgument[i] ? identityMapper : undefined); } var errorNode = reportErrors ? getEffectiveArgumentErrorNode(node, i, arg) : undefined; - var headMessage = ts.Diagnostics.Argument_of_type_0_is_not_assignable_to_parameter_of_type_1; if (!checkTypeRelatedTo(argType, paramType, relation, errorNode, headMessage)) { return false; } @@ -19722,18 +20705,29 @@ var ts; } return true; } + function getThisArgumentOfCall(node) { + if (node.kind === 173) { + var callee = node.expression; + if (callee.kind === 171) { + return callee.expression; + } + else if (callee.kind === 172) { + return callee.expression; + } + } + } function getEffectiveCallArguments(node) { var args; - if (node.kind === 174) { + if (node.kind === 175) { var template = node.template; args = [undefined]; - if (template.kind === 187) { + if (template.kind === 188) { ts.forEach(template.templateSpans, function (span) { args.push(span.expression); }); } } - else if (node.kind === 141) { + else if (node.kind === 142) { return undefined; } else { @@ -19742,21 +20736,21 @@ var ts; return args; } function getEffectiveArgumentCount(node, args, signature) { - if (node.kind === 141) { + if (node.kind === 142) { switch (node.parent.kind) { - case 218: - case 190: + case 220: + case 191: return 1; - case 143: + case 144: return 2; - case 145: - case 147: + case 146: case 148: + case 149: if (languageVersion === 0) { return 2; } return signature.parameters.length >= 3 ? 3 : 2; - case 140: + case 141: return 3; } } @@ -19765,48 +20759,48 @@ var ts; } } function getEffectiveDecoratorFirstArgumentType(node) { - if (node.kind === 218) { + if (node.kind === 220) { var classSymbol = getSymbolOfNode(node); return getTypeOfSymbol(classSymbol); } - if (node.kind === 140) { + if (node.kind === 141) { node = node.parent; - if (node.kind === 146) { + if (node.kind === 147) { var classSymbol = getSymbolOfNode(node); return getTypeOfSymbol(classSymbol); } } - if (node.kind === 143 || - node.kind === 145 || - node.kind === 147 || - node.kind === 148) { + if (node.kind === 144 || + node.kind === 146 || + node.kind === 148 || + node.kind === 149) { return getParentTypeOfClassElement(node); } ts.Debug.fail("Unsupported decorator target."); return unknownType; } function getEffectiveDecoratorSecondArgumentType(node) { - if (node.kind === 218) { + if (node.kind === 220) { ts.Debug.fail("Class decorators should not have a second synthetic argument."); return unknownType; } - if (node.kind === 140) { + if (node.kind === 141) { node = node.parent; - if (node.kind === 146) { + if (node.kind === 147) { return anyType; } } - if (node.kind === 143 || - node.kind === 145 || - node.kind === 147 || - node.kind === 148) { + if (node.kind === 144 || + node.kind === 146 || + node.kind === 148 || + node.kind === 149) { var element = node; switch (element.name.kind) { case 69: case 8: case 9: return getStringLiteralTypeForText(element.name.text); - case 138: + case 139: var nameType = checkComputedPropertyName(element.name); if (isTypeOfKind(nameType, 16777216)) { return nameType; @@ -19823,20 +20817,20 @@ var ts; return unknownType; } function getEffectiveDecoratorThirdArgumentType(node) { - if (node.kind === 218) { + if (node.kind === 220) { ts.Debug.fail("Class decorators should not have a third synthetic argument."); return unknownType; } - if (node.kind === 140) { + if (node.kind === 141) { return numberType; } - if (node.kind === 143) { + if (node.kind === 144) { ts.Debug.fail("Property decorators should not have a third synthetic argument."); return unknownType; } - if (node.kind === 145 || - node.kind === 147 || - node.kind === 148) { + if (node.kind === 146 || + node.kind === 148 || + node.kind === 149) { var propertyType = getTypeOfNode(node); return createTypedPropertyDescriptorType(propertyType); } @@ -19857,26 +20851,26 @@ var ts; return unknownType; } function getEffectiveArgumentType(node, argIndex, arg) { - if (node.kind === 141) { + if (node.kind === 142) { return getEffectiveDecoratorArgumentType(node, argIndex); } - else if (argIndex === 0 && node.kind === 174) { - return globalTemplateStringsArrayType; + else if (argIndex === 0 && node.kind === 175) { + return getGlobalTemplateStringsArrayType(); } return undefined; } function getEffectiveArgument(node, args, argIndex) { - if (node.kind === 141 || - (argIndex === 0 && node.kind === 174)) { + if (node.kind === 142 || + (argIndex === 0 && node.kind === 175)) { return undefined; } return args[argIndex]; } function getEffectiveArgumentErrorNode(node, argIndex, arg) { - if (node.kind === 141) { + if (node.kind === 142) { return node.expression; } - else if (argIndex === 0 && node.kind === 174) { + else if (argIndex === 0 && node.kind === 175) { return node.template; } else { @@ -19884,8 +20878,8 @@ var ts; } } function resolveCall(node, signatures, candidatesOutArray, headMessage) { - var isTaggedTemplate = node.kind === 174; - var isDecorator = node.kind === 141; + var isTaggedTemplate = node.kind === 175; + var isDecorator = node.kind === 142; var typeArguments; if (!isTaggedTemplate && !isDecorator) { typeArguments = node.typeArguments; @@ -20039,7 +21033,7 @@ var ts; } return resolveUntypedCall(node); } - var funcType = checkExpression(node.expression); + var funcType = checkNonNullExpression(node.expression); var apparentType = getApparentType(funcType); if (apparentType === unknownType) { return resolveErrorCall(node); @@ -20070,7 +21064,7 @@ var ts; error(node.arguments[spreadIndex], ts.Diagnostics.Spread_operator_in_new_expressions_is_only_available_when_targeting_ECMAScript_5_and_higher); } } - var expressionType = checkExpression(node.expression); + var expressionType = checkNonNullExpression(node.expression); expressionType = getApparentType(expressionType); if (expressionType === unknownType) { return resolveErrorCall(node); @@ -20099,6 +21093,9 @@ var ts; if (getReturnTypeOfSignature(signature) !== voidType) { error(node, ts.Diagnostics.Only_a_void_function_can_be_called_with_the_new_keyword); } + if (signature.thisType === voidType) { + error(node, ts.Diagnostics.A_function_that_is_called_with_the_new_keyword_cannot_have_a_this_type_that_is_void); + } return signature; } error(node, ts.Diagnostics.Cannot_use_new_with_an_expression_whose_type_lacks_a_call_or_construct_signature); @@ -20144,16 +21141,16 @@ var ts; } function getDiagnosticHeadMessageForDecoratorResolution(node) { switch (node.parent.kind) { - case 218: - case 190: + case 220: + case 191: return ts.Diagnostics.Unable_to_resolve_signature_of_class_decorator_when_called_as_an_expression; - case 140: + case 141: return ts.Diagnostics.Unable_to_resolve_signature_of_parameter_decorator_when_called_as_an_expression; - case 143: + case 144: return ts.Diagnostics.Unable_to_resolve_signature_of_property_decorator_when_called_as_an_expression; - case 145: - case 147: + case 146: case 148: + case 149: return ts.Diagnostics.Unable_to_resolve_signature_of_method_decorator_when_called_as_an_expression; } } @@ -20181,16 +21178,16 @@ var ts; var links = getNodeLinks(node); if (!links.resolvedSignature || candidatesOutArray) { links.resolvedSignature = anySignature; - if (node.kind === 172) { + if (node.kind === 173) { links.resolvedSignature = resolveCallExpression(node, candidatesOutArray); } - else if (node.kind === 173) { + else if (node.kind === 174) { links.resolvedSignature = resolveNewExpression(node, candidatesOutArray); } - else if (node.kind === 174) { + else if (node.kind === 175) { links.resolvedSignature = resolveTaggedTemplateExpression(node, candidatesOutArray); } - else if (node.kind === 141) { + else if (node.kind === 142) { links.resolvedSignature = resolveDecorator(node, candidatesOutArray); } else { @@ -20212,12 +21209,12 @@ var ts; if (node.expression.kind === 95) { return voidType; } - if (node.kind === 173) { + if (node.kind === 174) { var declaration = signature.declaration; if (declaration && - declaration.kind !== 146 && - declaration.kind !== 150 && - declaration.kind !== 155 && + declaration.kind !== 147 && + declaration.kind !== 151 && + declaration.kind !== 156 && !ts.isJSDocConstructSignature(declaration)) { var funcSymbol = checkExpression(node.expression).symbol; if (funcSymbol && funcSymbol.members && (funcSymbol.flags & 16)) { @@ -20242,18 +21239,29 @@ var ts; var targetType = getTypeFromTypeNode(node.type); if (produceDiagnostics && targetType !== unknownType) { var widenedType = getWidenedType(exprType); - var bothAreStringLike = maybeTypeOfKind(targetType, 258) && - maybeTypeOfKind(widenedType, 258); - if (!bothAreStringLike && !(isTypeAssignableTo(targetType, widenedType))) { - checkTypeAssignableTo(exprType, targetType, node, ts.Diagnostics.Neither_type_0_nor_type_1_is_assignable_to_the_other); + if (!isTypeComparableTo(targetType, widenedType)) { + checkTypeComparableTo(exprType, targetType, node, ts.Diagnostics.Type_0_cannot_be_converted_to_type_1); } } return targetType; } + function checkNonNullAssertion(node) { + return getNonNullableType(checkExpression(node.expression)); + } + function getTypeOfParameter(symbol) { + var type = getTypeOfSymbol(symbol); + if (strictNullChecks) { + var declaration = symbol.valueDeclaration; + if (declaration && declaration.initializer) { + return addNullableKind(type, 32); + } + } + return type; + } function getTypeAtPosition(signature, pos) { return signature.hasRestParameter ? - pos < signature.parameters.length - 1 ? getTypeOfSymbol(signature.parameters[pos]) : getRestTypeOfSignature(signature) : - pos < signature.parameters.length ? getTypeOfSymbol(signature.parameters[pos]) : anyType; + pos < signature.parameters.length - 1 ? getTypeOfParameter(signature.parameters[pos]) : getRestTypeOfSignature(signature) : + pos < signature.parameters.length ? getTypeOfParameter(signature.parameters[pos]) : anyType; } function assignContextualParameterTypes(signature, context, mapper) { var len = signature.parameters.length - (signature.hasRestParameter ? 1 : 0); @@ -20272,7 +21280,7 @@ var ts; if (ts.isBindingPattern(node.name)) { for (var _i = 0, _a = node.name.elements; _i < _a.length; _i++) { var element = _a[_i]; - if (element.kind !== 191) { + if (element.kind !== 192) { if (element.name.kind === 69) { getSymbolLinks(getSymbolOfNode(element)).type = getTypeForBindingElement(element); } @@ -20313,7 +21321,7 @@ var ts; } var isAsync = ts.isAsyncFunctionLike(func); var type; - if (func.body.kind !== 196) { + if (func.body.kind !== 198) { type = checkExpressionCached(func.body, contextualMapper); if (isAsync) { type = checkAwaitedType(type, func, ts.Diagnostics.Return_expression_in_async_function_does_not_have_a_valid_callable_then_member); @@ -20333,7 +21341,8 @@ var ts; } } else { - types = checkAndAggregateReturnExpressionTypes(func.body, contextualMapper, isAsync); + var hasImplicitReturn = !!(func.flags & 32768); + types = checkAndAggregateReturnExpressionTypes(func.body, contextualMapper, isAsync, hasImplicitReturn); if (types.length === 0) { if (isAsync) { var promiseType = createPromiseType(voidType); @@ -20395,8 +21404,9 @@ var ts; }); return aggregatedTypes; } - function checkAndAggregateReturnExpressionTypes(body, contextualMapper, isAsync) { + function checkAndAggregateReturnExpressionTypes(body, contextualMapper, isAsync, hasImplicitReturn) { var aggregatedTypes = []; + var hasOmittedExpressions = false; ts.forEachReturnStatement(body, function (returnStatement) { var expr = returnStatement.expression; if (expr) { @@ -20408,7 +21418,15 @@ var ts; aggregatedTypes.push(type); } } + else { + hasOmittedExpressions = true; + } }); + if (strictNullChecks && aggregatedTypes.length && (hasOmittedExpressions || hasImplicitReturn)) { + if (!ts.contains(aggregatedTypes, undefinedType)) { + aggregatedTypes.push(undefinedType); + } + } return aggregatedTypes; } function checkAllCodePathsInNonVoidFunctionReturnOrThrow(func, returnType) { @@ -20418,19 +21436,23 @@ var ts; if (returnType && maybeTypeOfKind(returnType, 1 | 16)) { return; } - if (ts.nodeIsMissing(func.body) || func.body.kind !== 196 || !(func.flags & 32768)) { + if (ts.nodeIsMissing(func.body) || func.body.kind !== 198 || !(func.flags & 32768)) { return; } var hasExplicitReturn = func.flags & 65536; if (returnType && !hasExplicitReturn) { error(func.type, ts.Diagnostics.A_function_whose_declared_type_is_neither_void_nor_any_must_return_a_value); } + else if (returnType && strictNullChecks && !isTypeAssignableTo(undefinedType, returnType)) { + error(func.type, ts.Diagnostics.Function_lacks_ending_return_statement_and_return_type_does_not_include_undefined); + } else if (compilerOptions.noImplicitReturns) { if (!returnType) { - var inferredReturnType = hasExplicitReturn - ? getReturnTypeOfSignature(getSignatureFromDeclaration(func)) - : voidType; - if (inferredReturnType === voidType || isTypeAny(inferredReturnType)) { + if (!hasExplicitReturn) { + return; + } + var inferredReturnType = getReturnTypeOfSignature(getSignatureFromDeclaration(func)); + if (isUnwrappedReturnTypeVoidOrAny(func, inferredReturnType)) { return; } } @@ -20438,12 +21460,13 @@ var ts; } } function checkFunctionExpressionOrObjectLiteralMethod(node, contextualMapper) { - ts.Debug.assert(node.kind !== 145 || ts.isObjectLiteralMethod(node)); + ts.Debug.assert(node.kind !== 146 || ts.isObjectLiteralMethod(node)); var hasGrammarError = checkGrammarFunctionLikeDeclaration(node); - if (!hasGrammarError && node.kind === 177) { + if (!hasGrammarError && node.kind === 178) { checkGrammarForGenerator(node); } if (contextualMapper === identityMapper && isContextSensitive(node)) { + checkNodeDeferred(node); return anyFunctionType; } var links = getNodeLinks(node); @@ -20473,14 +21496,14 @@ var ts; } } } - if (produceDiagnostics && node.kind !== 145 && node.kind !== 144) { + if (produceDiagnostics && node.kind !== 146 && node.kind !== 145) { checkCollisionWithCapturedSuperVariable(node, node.name); checkCollisionWithCapturedThisVariable(node, node.name); } return type; } function checkFunctionExpressionOrObjectLiteralMethodDeferred(node) { - ts.Debug.assert(node.kind !== 145 || ts.isObjectLiteralMethod(node)); + ts.Debug.assert(node.kind !== 146 || ts.isObjectLiteralMethod(node)); var isAsync = ts.isAsyncFunctionLike(node); var returnOrPromisedType = node.type && (isAsync ? checkAsyncFunctionReturnType(node) : getTypeFromTypeNode(node.type)); if (!node.asteriskToken) { @@ -20490,7 +21513,7 @@ var ts; if (!node.type) { getReturnTypeOfSignature(getSignatureFromDeclaration(node)); } - if (node.body.kind === 196) { + if (node.body.kind === 198) { checkSourceElement(node.body); } else { @@ -20523,23 +21546,23 @@ var ts; function isReferenceToReadonlyEntity(expr, symbol) { if (isReadonlySymbol(symbol)) { if (symbol.flags & 4 && - (expr.kind === 170 || expr.kind === 171) && + (expr.kind === 171 || expr.kind === 172) && expr.expression.kind === 97) { var func = ts.getContainingFunction(expr); - return !(func && func.kind === 146 && func.parent === symbol.valueDeclaration.parent); + return !(func && func.kind === 147 && func.parent === symbol.valueDeclaration.parent); } return true; } return false; } function isReferenceThroughNamespaceImport(expr) { - if (expr.kind === 170 || expr.kind === 171) { + if (expr.kind === 171 || expr.kind === 172) { var node = skipParenthesizedNodes(expr.expression); if (node.kind === 69) { var symbol = getNodeLinks(node).resolvedSymbol; if (symbol.flags & 8388608) { var declaration = getDeclarationOfAliasSymbol(symbol); - return declaration && declaration.kind === 228; + return declaration && declaration.kind === 231; } } } @@ -20547,7 +21570,7 @@ var ts; } function checkReferenceExpression(expr, invalidReferenceMessage, constantVariableMessage) { var node = skipParenthesizedNodes(expr); - if (node.kind !== 69 && node.kind !== 170 && node.kind !== 171) { + if (node.kind !== 69 && node.kind !== 171 && node.kind !== 172) { error(expr, invalidReferenceMessage); return false; } @@ -20565,7 +21588,7 @@ var ts; } } } - else if (node.kind === 171) { + else if (node.kind === 172) { if (links.resolvedIndexInfo && links.resolvedIndexInfo.isReadonly) { error(expr, constantVariableMessage); return false; @@ -20611,7 +21634,7 @@ var ts; return booleanType; case 41: case 42: - var ok = checkArithmeticOperandType(node.operand, operandType, ts.Diagnostics.An_arithmetic_operand_must_be_of_type_any_number_or_an_enum_type); + var ok = checkArithmeticOperandType(node.operand, getNonNullableType(operandType), ts.Diagnostics.An_arithmetic_operand_must_be_of_type_any_number_or_an_enum_type); if (ok) { checkReferenceExpression(node.operand, ts.Diagnostics.The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_property_or_indexer, ts.Diagnostics.The_operand_of_an_increment_or_decrement_operator_cannot_be_a_constant_or_a_read_only_property); } @@ -20621,7 +21644,7 @@ var ts; } function checkPostfixUnaryExpression(node) { var operandType = checkExpression(node.operand); - var ok = checkArithmeticOperandType(node.operand, operandType, ts.Diagnostics.An_arithmetic_operand_must_be_of_type_any_number_or_an_enum_type); + var ok = checkArithmeticOperandType(node.operand, getNonNullableType(operandType), ts.Diagnostics.An_arithmetic_operand_must_be_of_type_any_number_or_an_enum_type); if (ok) { checkReferenceExpression(node.operand, ts.Diagnostics.The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_property_or_indexer, ts.Diagnostics.The_operand_of_an_increment_or_decrement_operator_cannot_be_a_constant_or_a_read_only_property); } @@ -20695,22 +21718,22 @@ var ts; var properties = node.properties; for (var _i = 0, properties_3 = properties; _i < properties_3.length; _i++) { var p = properties_3[_i]; - if (p.kind === 249 || p.kind === 250) { - var name_12 = p.name; - if (name_12.kind === 138) { - checkComputedPropertyName(name_12); + if (p.kind === 252 || p.kind === 253) { + var name_13 = p.name; + if (name_13.kind === 139) { + checkComputedPropertyName(name_13); } - if (isComputedNonLiteralName(name_12)) { + if (isComputedNonLiteralName(name_13)) { continue; } - var text = getTextOfPropertyName(name_12); + var text = getTextOfPropertyName(name_13); var type = isTypeAny(sourceType) ? sourceType : getTypeOfPropertyOfType(sourceType, text) || isNumericLiteralName(text) && getIndexTypeOfType(sourceType, 1) || getIndexTypeOfType(sourceType, 0); if (type) { - if (p.kind === 250) { + if (p.kind === 253) { checkDestructuringAssignment(p, type); } else { @@ -20718,7 +21741,7 @@ var ts; } } else { - error(name_12, ts.Diagnostics.Type_0_has_no_property_1_and_no_string_index_signature, typeToString(sourceType), ts.declarationNameToString(name_12)); + error(name_13, ts.Diagnostics.Type_0_has_no_property_1_and_no_string_index_signature, typeToString(sourceType), ts.declarationNameToString(name_13)); } } else { @@ -20732,8 +21755,8 @@ var ts; var elements = node.elements; for (var i = 0; i < elements.length; i++) { var e = elements[i]; - if (e.kind !== 191) { - if (e.kind !== 189) { + if (e.kind !== 192) { + if (e.kind !== 190) { var propName = "" + i; var type = isTypeAny(sourceType) ? sourceType @@ -20758,7 +21781,7 @@ var ts; } else { var restExpression = e.expression; - if (restExpression.kind === 185 && restExpression.operatorToken.kind === 56) { + if (restExpression.kind === 186 && restExpression.operatorToken.kind === 56) { error(restExpression.operatorToken, ts.Diagnostics.A_rest_element_cannot_have_an_initializer); } else { @@ -20772,7 +21795,7 @@ var ts; } function checkDestructuringAssignment(exprOrAssignment, sourceType, contextualMapper) { var target; - if (exprOrAssignment.kind === 250) { + if (exprOrAssignment.kind === 253) { var prop = exprOrAssignment; if (prop.objectAssignmentInitializer) { checkBinaryLikeExpression(prop.name, prop.equalsToken, prop.objectAssignmentInitializer, contextualMapper); @@ -20782,14 +21805,14 @@ var ts; else { target = exprOrAssignment; } - if (target.kind === 185 && target.operatorToken.kind === 56) { + if (target.kind === 186 && target.operatorToken.kind === 56) { checkBinaryExpression(target, contextualMapper); target = target.left; } - if (target.kind === 169) { + if (target.kind === 170) { return checkObjectLiteralAssignment(target, sourceType, contextualMapper); } - if (target.kind === 168) { + if (target.kind === 169) { return checkArrayLiteralAssignment(target, sourceType, contextualMapper); } return checkReferenceAssignment(target, sourceType, contextualMapper); @@ -20806,7 +21829,7 @@ var ts; } function checkBinaryLikeExpression(left, operatorToken, right, contextualMapper, errorNode) { var operator = operatorToken.kind; - if (operator === 56 && (left.kind === 169 || left.kind === 168)) { + if (operator === 56 && (left.kind === 170 || left.kind === 169)) { return checkDestructuringAssignment(left, checkExpression(right, contextualMapper), contextualMapper); } var leftType = checkExpression(left, contextualMapper); @@ -20834,10 +21857,12 @@ var ts; case 68: case 46: case 66: - if (leftType.flags & (32 | 64)) + if (leftType.flags & 96) leftType = rightType; - if (rightType.flags & (32 | 64)) + if (rightType.flags & 96) rightType = leftType; + leftType = getNonNullableType(leftType); + rightType = getNonNullableType(rightType); var suggestedOperator = void 0; if ((leftType.flags & 8) && (rightType.flags & 8) && @@ -20854,10 +21879,12 @@ var ts; return numberType; case 35: case 57: - if (leftType.flags & (32 | 64)) + if (leftType.flags & 96) leftType = rightType; - if (rightType.flags & (32 | 64)) + if (rightType.flags & 96) rightType = leftType; + leftType = getNonNullableType(leftType); + rightType = getNonNullableType(rightType); var resultType = void 0; if (isTypeOfKind(leftType, 132) && isTypeOfKind(rightType, 132)) { resultType = numberType; @@ -20892,10 +21919,7 @@ var ts; case 31: case 32: case 33: - if (maybeTypeOfKind(leftType, 258) && maybeTypeOfKind(rightType, 258)) { - return booleanType; - } - if (!isTypeAssignableTo(leftType, rightType) && !isTypeAssignableTo(rightType, leftType)) { + if (!isTypeComparableTo(leftType, rightType) && !isTypeComparableTo(rightType, leftType)) { reportOperatorError(); } return booleanType; @@ -20904,9 +21928,9 @@ var ts; case 90: return checkInExpression(left, right, leftType, rightType); case 51: - return rightType; + return addNullableKind(rightType, getNullableKind(leftType)); case 52: - return getUnionType([leftType, rightType]); + return getUnionType([getNonNullableType(leftType), rightType]); case 56: checkAssignmentOperator(rightType); return getRegularTypeOfObjectLiteral(rightType); @@ -21030,14 +22054,14 @@ var ts; return links.resolvedType; } function checkPropertyAssignment(node, contextualMapper) { - if (node.name.kind === 138) { + if (node.name.kind === 139) { checkComputedPropertyName(node.name); } return checkExpression(node.initializer, contextualMapper); } function checkObjectLiteralMethod(node, contextualMapper) { checkGrammarMethod(node); - if (node.name.kind === 138) { + if (node.name.kind === 139) { checkComputedPropertyName(node.name); } var uninstantiatedType = checkFunctionExpressionOrObjectLiteralMethod(node, contextualMapper); @@ -21060,7 +22084,7 @@ var ts; } function checkExpression(node, contextualMapper) { var type; - if (node.kind === 137) { + if (node.kind === 138) { type = checkQualifiedName(node); } else { @@ -21068,9 +22092,9 @@ var ts; type = instantiateTypeWithSingleGenericCallSignature(node, uninstantiatedType, contextualMapper); } if (isConstEnumObjectType(type)) { - var ok = (node.parent.kind === 170 && node.parent.expression === node) || - (node.parent.kind === 171 && node.parent.expression === node) || - ((node.kind === 69 || node.kind === 137) && isInRightSideOfImportOrExportAssignment(node)); + var ok = (node.parent.kind === 171 && node.parent.expression === node) || + (node.parent.kind === 172 && node.parent.expression === node) || + ((node.kind === 69 || node.kind === 138) && isInRightSideOfImportOrExportAssignment(node)); if (!ok) { error(node, ts.Diagnostics.const_enums_can_only_be_used_in_property_or_index_access_expressions_or_the_right_hand_side_of_an_import_declaration_or_export_assignment); } @@ -21096,7 +22120,7 @@ var ts; return booleanType; case 8: return checkNumericLiteral(node); - case 187: + case 188: return checkTemplateExpression(node); case 9: return checkStringLiteralExpression(node); @@ -21104,58 +22128,60 @@ var ts; return stringType; case 10: return globalRegExpType; - case 168: - return checkArrayLiteral(node, contextualMapper); case 169: - return checkObjectLiteral(node, contextualMapper); + return checkArrayLiteral(node, contextualMapper); case 170: - return checkPropertyAccessExpression(node); + return checkObjectLiteral(node, contextualMapper); case 171: - return checkIndexedAccess(node); + return checkPropertyAccessExpression(node); case 172: + return checkIndexedAccess(node); case 173: - return checkCallExpression(node); case 174: - return checkTaggedTemplateExpression(node); - case 176: - return checkExpression(node.expression, contextualMapper); - case 190: - return checkClassExpression(node); - case 177: - case 178: - return checkFunctionExpressionOrObjectLiteralMethod(node, contextualMapper); - case 180: - return checkTypeOfExpression(node); + return checkCallExpression(node); case 175: - case 193: - return checkAssertion(node); - case 179: - return checkDeleteExpression(node); - case 181: - return checkVoidExpression(node); - case 182: - return checkAwaitExpression(node); - case 183: - return checkPrefixUnaryExpression(node); - case 184: - return checkPostfixUnaryExpression(node); - case 185: - return checkBinaryExpression(node, contextualMapper); - case 186: - return checkConditionalExpression(node, contextualMapper); - case 189: - return checkSpreadElementExpression(node, contextualMapper); + return checkTaggedTemplateExpression(node); + case 177: + return checkExpression(node.expression, contextualMapper); case 191: + return checkClassExpression(node); + case 178: + case 179: + return checkFunctionExpressionOrObjectLiteralMethod(node, contextualMapper); + case 181: + return checkTypeOfExpression(node); + case 176: + case 194: + return checkAssertion(node); + case 195: + return checkNonNullAssertion(node); + case 180: + return checkDeleteExpression(node); + case 182: + return checkVoidExpression(node); + case 183: + return checkAwaitExpression(node); + case 184: + return checkPrefixUnaryExpression(node); + case 185: + return checkPostfixUnaryExpression(node); + case 186: + return checkBinaryExpression(node, contextualMapper); + case 187: + return checkConditionalExpression(node, contextualMapper); + case 190: + return checkSpreadElementExpression(node, contextualMapper); + case 192: return undefinedType; - case 188: + case 189: return checkYieldExpression(node); - case 244: + case 247: return checkJsxExpression(node); - case 237: + case 240: return checkJsxElement(node); - case 238: + case 241: return checkJsxSelfClosingElement(node); - case 239: + case 242: ts.Debug.fail("Shouldn't ever directly check a JsxOpeningElement"); } return unknownType; @@ -21176,13 +22202,24 @@ var ts; var func = ts.getContainingFunction(node); if (node.flags & 28) { func = ts.getContainingFunction(node); - if (!(func.kind === 146 && ts.nodeIsPresent(func.body))) { + if (!(func.kind === 147 && ts.nodeIsPresent(func.body))) { error(node, ts.Diagnostics.A_parameter_property_is_only_allowed_in_a_constructor_implementation); } } if (node.questionToken && ts.isBindingPattern(node.name) && func.body) { error(node, ts.Diagnostics.A_binding_pattern_parameter_cannot_be_optional_in_an_implementation_signature); } + if (node.name.text === "this") { + if (ts.indexOf(func.parameters, node) !== 0) { + error(node, ts.Diagnostics.A_this_parameter_must_be_the_first_parameter); + } + if (func.kind === 147 || func.kind === 151 || func.kind === 156) { + error(node, ts.Diagnostics.A_constructor_cannot_have_a_this_parameter); + } + if (func.kind === 149) { + error(node, ts.Diagnostics.A_setter_cannot_have_a_this_parameter); + } + } if (node.dotDotDotToken && !ts.isBindingPattern(node.name) && !isArrayType(getTypeOfSymbol(node.symbol))) { error(node, ts.Diagnostics.A_rest_parameter_must_be_of_an_array_type); } @@ -21191,9 +22228,9 @@ var ts; if (!node.asteriskToken || !node.body) { return false; } - return node.kind === 145 || - node.kind === 217 || - node.kind === 177; + return node.kind === 146 || + node.kind === 219 || + node.kind === 178; } function getTypePredicateParameterIndex(parameterList, parameter) { if (parameterList) { @@ -21227,15 +22264,16 @@ var ts; error(parameterName, ts.Diagnostics.A_type_predicate_cannot_reference_a_rest_parameter); } else { - checkTypeAssignableTo(typePredicate.type, getTypeOfNode(parent.parameters[typePredicate.parameterIndex]), node.type); + var leadingError = ts.chainDiagnosticMessages(undefined, ts.Diagnostics.A_type_predicate_s_type_must_be_assignable_to_its_parameter_s_type); + checkTypeAssignableTo(typePredicate.type, getTypeOfNode(parent.parameters[typePredicate.parameterIndex]), node.type, undefined, leadingError); } } else if (parameterName) { var hasReportedError = false; for (var _i = 0, _a = parent.parameters; _i < _a.length; _i++) { - var name_13 = _a[_i].name; - if (ts.isBindingPattern(name_13) && - checkIfTypePredicateVariableIsDeclaredInBindingPattern(name_13, parameterName, typePredicate.parameterName)) { + var name_14 = _a[_i].name; + if (ts.isBindingPattern(name_14) && + checkIfTypePredicateVariableIsDeclaredInBindingPattern(name_14, parameterName, typePredicate.parameterName)) { hasReportedError = true; break; } @@ -21248,42 +22286,42 @@ var ts; } function getTypePredicateParent(node) { switch (node.parent.kind) { + case 179: + case 150: + case 219: case 178: - case 149: - case 217: - case 177: - case 154: + case 155: + case 146: case 145: - case 144: - var parent_7 = node.parent; - if (node === parent_7.type) { - return parent_7; + var parent_8 = node.parent; + if (node === parent_8.type) { + return parent_8; } } } function checkIfTypePredicateVariableIsDeclaredInBindingPattern(pattern, predicateVariableNode, predicateVariableName) { for (var _i = 0, _a = pattern.elements; _i < _a.length; _i++) { - var name_14 = _a[_i].name; - if (name_14.kind === 69 && - name_14.text === predicateVariableName) { + var name_15 = _a[_i].name; + if (name_15.kind === 69 && + name_15.text === predicateVariableName) { error(predicateVariableNode, ts.Diagnostics.A_type_predicate_cannot_reference_element_0_in_a_binding_pattern, predicateVariableName); return true; } - else if (name_14.kind === 166 || - name_14.kind === 165) { - if (checkIfTypePredicateVariableIsDeclaredInBindingPattern(name_14, predicateVariableNode, predicateVariableName)) { + else if (name_15.kind === 167 || + name_15.kind === 166) { + if (checkIfTypePredicateVariableIsDeclaredInBindingPattern(name_15, predicateVariableNode, predicateVariableName)) { return true; } } } } function checkSignatureDeclaration(node) { - if (node.kind === 151) { + if (node.kind === 152) { checkGrammarIndexSignature(node); } - else if (node.kind === 154 || node.kind === 217 || node.kind === 155 || - node.kind === 149 || node.kind === 146 || - node.kind === 150) { + else if (node.kind === 155 || node.kind === 219 || node.kind === 156 || + node.kind === 150 || node.kind === 147 || + node.kind === 151) { checkGrammarFunctionLikeDeclaration(node); } checkTypeParameters(node.typeParameters); @@ -21295,10 +22333,10 @@ var ts; checkCollisionWithArgumentsInGeneratedCode(node); if (compilerOptions.noImplicitAny && !node.type) { switch (node.kind) { - case 150: + case 151: error(node, ts.Diagnostics.Construct_signature_which_lacks_return_type_annotation_implicitly_has_an_any_return_type); break; - case 149: + case 150: error(node, ts.Diagnostics.Call_signature_which_lacks_return_type_annotation_implicitly_has_an_any_return_type); break; } @@ -21322,7 +22360,7 @@ var ts; } } function checkTypeForDuplicateIndexSignatures(node) { - if (node.kind === 219) { + if (node.kind === 221) { var nodeSymbol = getSymbolOfNode(node); if (nodeSymbol.declarations.length > 0 && nodeSymbol.declarations[0] !== node) { return; @@ -21403,12 +22441,12 @@ var ts; if (n.kind === 97) { error(n, ts.Diagnostics.this_cannot_be_referenced_in_current_location); } - else if (n.kind !== 177 && n.kind !== 217) { + else if (n.kind !== 178 && n.kind !== 219) { ts.forEachChild(n, markThisReferencesAsErrors); } } function isInstancePropertyWithInitializer(n) { - return n.kind === 143 && + return n.kind === 144 && !(n.flags & 32) && !!n.initializer; } @@ -21427,7 +22465,7 @@ var ts; var superCallStatement = void 0; for (var _i = 0, statements_2 = statements; _i < statements_2.length; _i++) { var statement = statements_2[_i]; - if (statement.kind === 199 && ts.isSuperCallExpression(statement.expression)) { + if (statement.kind === 201 && ts.isSuperCallExpression(statement.expression)) { superCallStatement = statement; break; } @@ -21450,7 +22488,7 @@ var ts; checkGrammarFunctionLikeDeclaration(node) || checkGrammarAccessor(node) || checkGrammarComputedPropertyName(node.name); checkDecorators(node); checkSignatureDeclaration(node); - if (node.kind === 147) { + if (node.kind === 148) { if (!ts.isInAmbientContext(node) && ts.nodeIsPresent(node.body) && (node.flags & 32768)) { if (node.flags & 65536) { if (compilerOptions.noImplicitReturns) { @@ -21462,11 +22500,11 @@ var ts; } } } - if (node.name.kind === 138) { + if (node.name.kind === 139) { checkComputedPropertyName(node.name); } if (!ts.hasDynamicName(node)) { - var otherKind = node.kind === 147 ? 148 : 147; + var otherKind = node.kind === 148 ? 149 : 148; var otherAccessor = ts.getDeclarationOfKind(node.symbol, otherKind); if (otherAccessor) { if (((node.flags & 28) !== (otherAccessor.flags & 28))) { @@ -21486,7 +22524,7 @@ var ts; } getTypeOfAccessors(getSymbolOfNode(node)); } - if (node.parent.kind !== 169) { + if (node.parent.kind !== 170) { checkSourceElement(node.body); } else { @@ -21557,9 +22595,9 @@ var ts; } function getEffectiveDeclarationFlags(n, flagsToCheck) { var flags = ts.getCombinedNodeFlags(n); - if (n.parent.kind !== 219 && - n.parent.kind !== 218 && - n.parent.kind !== 190 && + if (n.parent.kind !== 221 && + n.parent.kind !== 220 && + n.parent.kind !== 191 && ts.isInAmbientContext(n)) { if (!(flags & 2)) { flags |= 1; @@ -21636,7 +22674,7 @@ var ts; if (subsequentNode.kind === node.kind) { var errorNode_1 = subsequentNode.name || subsequentNode; if (node.name && subsequentNode.name && node.name.text === subsequentNode.name.text) { - var reportError = (node.kind === 145 || node.kind === 144) && + var reportError = (node.kind === 146 || node.kind === 145) && (node.flags & 32) !== (subsequentNode.flags & 32); if (reportError) { var diagnostic = node.flags & 32 ? ts.Diagnostics.Function_overload_must_be_static : ts.Diagnostics.Function_overload_must_not_be_static; @@ -21670,11 +22708,11 @@ var ts; var current = declarations_4[_i]; var node = current; var inAmbientContext = ts.isInAmbientContext(node); - var inAmbientContextOrInterface = node.parent.kind === 219 || node.parent.kind === 157 || inAmbientContext; + var inAmbientContextOrInterface = node.parent.kind === 221 || node.parent.kind === 158 || inAmbientContext; if (inAmbientContextOrInterface) { previousDeclaration = undefined; } - if (node.kind === 217 || node.kind === 145 || node.kind === 144 || node.kind === 146) { + if (node.kind === 219 || node.kind === 146 || node.kind === 145 || node.kind === 147) { var currentNodeFlags = getEffectiveDeclarationFlags(node, flagsToCheck); someNodeFlags |= currentNodeFlags; allNodeFlags &= currentNodeFlags; @@ -21785,16 +22823,16 @@ var ts; } function getDeclarationSpaces(d) { switch (d.kind) { - case 219: + case 221: return 2097152; - case 222: + case 224: return ts.isAmbientModule(d) || ts.getModuleInstanceState(d) !== 0 ? 4194304 | 1048576 : 4194304; - case 218: - case 221: + case 220: + case 223: return 2097152 | 1048576; - case 225: + case 228: var result_1 = 0; var target = resolveAlias(getSymbolOfNode(d)); ts.forEach(target.declarations, function (d) { result_1 |= getDeclarationSpaces(d); }); @@ -21870,7 +22908,7 @@ var ts; return checkNonThenableType(type, location, message); } else { - if (type.id === promisedType.id || awaitedTypeStack.indexOf(promisedType.id) >= 0) { + if (type.id === promisedType.id || ts.indexOf(awaitedTypeStack, promisedType.id) >= 0) { if (location) { error(location, ts.Diagnostics._0_is_referenced_directly_or_indirectly_in_the_fulfillment_callback_of_its_own_then_method, symbolToString(type.symbol)); } @@ -21941,22 +22979,22 @@ var ts; var headMessage = getDiagnosticHeadMessageForDecoratorResolution(node); var errorInfo; switch (node.parent.kind) { - case 218: + case 220: var classSymbol = getSymbolOfNode(node.parent); var classConstructorType = getTypeOfSymbol(classSymbol); expectedReturnType = getUnionType([classConstructorType, voidType]); break; - case 140: + case 141: expectedReturnType = voidType; errorInfo = ts.chainDiagnosticMessages(errorInfo, ts.Diagnostics.The_return_type_of_a_parameter_decorator_function_must_be_either_void_or_any); break; - case 143: + case 144: expectedReturnType = voidType; errorInfo = ts.chainDiagnosticMessages(errorInfo, ts.Diagnostics.The_return_type_of_a_property_decorator_function_must_be_either_void_or_any); break; - case 145: - case 147: + case 146: case 148: + case 149: var methodType = getTypeOfNode(node.parent); var descriptorType = createTypedPropertyDescriptorType(methodType); expectedReturnType = getUnionType([descriptorType, voidType]); @@ -21965,9 +23003,9 @@ var ts; checkTypeAssignableTo(returnType, expectedReturnType, node, headMessage, errorInfo); } function checkTypeNodeAsExpression(node) { - if (node && node.kind === 153) { + if (node && node.kind === 154) { var root = getFirstIdentifier(node.typeName); - var meaning = root.parent.kind === 153 ? 793056 : 1536; + var meaning = root.parent.kind === 154 ? 793056 : 1536; var rootSymbol = resolveName(root, root.text, meaning | 8388608, undefined, undefined); if (rootSymbol && rootSymbol.flags & 8388608) { var aliasTarget = resolveAlias(rootSymbol); @@ -22001,20 +23039,20 @@ var ts; } if (compilerOptions.emitDecoratorMetadata) { switch (node.kind) { - case 218: + case 220: var constructor = ts.getFirstConstructorWithBody(node); if (constructor) { checkParameterTypeAnnotationsAsExpressions(constructor); } break; - case 145: - case 147: + case 146: case 148: + case 149: checkParameterTypeAnnotationsAsExpressions(node); checkReturnTypeAnnotationAsExpression(node); break; - case 143: - case 140: + case 144: + case 141: checkTypeAnnotationAsExpression(node); break; } @@ -22034,7 +23072,7 @@ var ts; checkDecorators(node); checkSignatureDeclaration(node); var isAsync = ts.isAsyncFunctionLike(node); - if (node.name && node.name.kind === 138) { + if (node.name && node.name.kind === 139) { checkComputedPropertyName(node.name); } if (!ts.hasDynamicName(node)) { @@ -22066,7 +23104,7 @@ var ts; } } function checkBlock(node) { - if (node.kind === 196) { + if (node.kind === 198) { checkGrammarStatementInAmbientContext(node); } ts.forEach(node.statements, checkSourceElement); @@ -22085,19 +23123,19 @@ var ts; if (!(identifier && identifier.text === name)) { return false; } - if (node.kind === 143 || - node.kind === 142 || + if (node.kind === 144 || + node.kind === 143 || + node.kind === 146 || node.kind === 145 || - node.kind === 144 || - node.kind === 147 || - node.kind === 148) { + node.kind === 148 || + node.kind === 149) { return false; } if (ts.isInAmbientContext(node)) { return false; } var root = ts.getRootDeclaration(node); - if (root.kind === 140 && ts.nodeIsMissing(root.parent.body)) { + if (root.kind === 141 && ts.nodeIsMissing(root.parent.body)) { return false; } return true; @@ -22145,11 +23183,11 @@ var ts; if (!needCollisionCheckForIdentifier(node, name, "require") && !needCollisionCheckForIdentifier(node, name, "exports")) { return; } - if (node.kind === 222 && ts.getModuleInstanceState(node) !== 1) { + if (node.kind === 224 && ts.getModuleInstanceState(node) !== 1) { return; } var parent = getDeclarationContainer(node); - if (parent.kind === 252 && ts.isExternalOrCommonJsModule(parent)) { + if (parent.kind === 255 && ts.isExternalOrCommonJsModule(parent)) { error(name, ts.Diagnostics.Duplicate_identifier_0_Compiler_reserves_name_1_in_top_level_scope_of_a_module, ts.declarationNameToString(name), ts.declarationNameToString(name)); } } @@ -22157,11 +23195,11 @@ var ts; if (!needCollisionCheckForIdentifier(node, name, "Promise")) { return; } - if (node.kind === 222 && ts.getModuleInstanceState(node) !== 1) { + if (node.kind === 224 && ts.getModuleInstanceState(node) !== 1) { return; } var parent = getDeclarationContainer(node); - if (parent.kind === 252 && ts.isExternalOrCommonJsModule(parent) && parent.flags & 2097152) { + if (parent.kind === 255 && ts.isExternalOrCommonJsModule(parent) && parent.flags & 2097152) { error(name, ts.Diagnostics.Duplicate_identifier_0_Compiler_reserves_name_1_in_top_level_scope_of_a_module_containing_async_functions, ts.declarationNameToString(name), ts.declarationNameToString(name)); } } @@ -22169,7 +23207,7 @@ var ts; if ((ts.getCombinedNodeFlags(node) & 3072) !== 0 || ts.isParameterDeclaration(node)) { return; } - if (node.kind === 215 && !node.initializer) { + if (node.kind === 217 && !node.initializer) { return; } var symbol = getSymbolOfNode(node); @@ -22179,25 +23217,25 @@ var ts; localDeclarationSymbol !== symbol && localDeclarationSymbol.flags & 2) { if (getDeclarationFlagsFromSymbol(localDeclarationSymbol) & 3072) { - var varDeclList = ts.getAncestor(localDeclarationSymbol.valueDeclaration, 216); - var container = varDeclList.parent.kind === 197 && varDeclList.parent.parent + var varDeclList = ts.getAncestor(localDeclarationSymbol.valueDeclaration, 218); + var container = varDeclList.parent.kind === 199 && varDeclList.parent.parent ? varDeclList.parent.parent : undefined; var namesShareScope = container && - (container.kind === 196 && ts.isFunctionLike(container.parent) || - container.kind === 223 || - container.kind === 222 || - container.kind === 252); + (container.kind === 198 && ts.isFunctionLike(container.parent) || + container.kind === 225 || + container.kind === 224 || + container.kind === 255); if (!namesShareScope) { - var name_15 = symbolToString(localDeclarationSymbol); - error(node, ts.Diagnostics.Cannot_initialize_outer_scoped_variable_0_in_the_same_scope_as_block_scoped_declaration_1, name_15, name_15); + var name_16 = symbolToString(localDeclarationSymbol); + error(node, ts.Diagnostics.Cannot_initialize_outer_scoped_variable_0_in_the_same_scope_as_block_scoped_declaration_1, name_16, name_16); } } } } } function checkParameterInitializer(node) { - if (ts.getRootDeclaration(node).kind !== 140) { + if (ts.getRootDeclaration(node).kind !== 141) { return; } var func = ts.getContainingFunction(node); @@ -22206,7 +23244,7 @@ var ts; if (n.kind === 69) { var referencedSymbol = getNodeLinks(n).resolvedSymbol; if (referencedSymbol && referencedSymbol !== unknownSymbol && getSymbol(func.locals, referencedSymbol.name, 107455) === referencedSymbol) { - if (referencedSymbol.valueDeclaration.kind === 140) { + if (referencedSymbol.valueDeclaration.kind === 141) { if (referencedSymbol.valueDeclaration === node) { error(n, ts.Diagnostics.Parameter_0_cannot_be_referenced_in_its_initializer, ts.declarationNameToString(node.name)); return; @@ -22226,26 +23264,33 @@ var ts; function checkVariableLikeDeclaration(node) { checkDecorators(node); checkSourceElement(node.type); - if (node.name.kind === 138) { + if (node.name.kind === 139) { checkComputedPropertyName(node.name); if (node.initializer) { checkExpressionCached(node.initializer); } } - if (node.kind === 167) { - if (node.propertyName && node.propertyName.kind === 138) { + if (node.kind === 168) { + if (node.propertyName && node.propertyName.kind === 139) { checkComputedPropertyName(node.propertyName); } + var parent_9 = node.parent.parent; + var parentType = getTypeForBindingElementParent(parent_9); + var name_17 = node.propertyName || node.name; + var property = getPropertyOfType(parentType, getTextOfPropertyName(name_17)); + if (parent_9.initializer && property && getParentOfSymbol(property)) { + checkClassPropertyAccess(parent_9, parent_9.initializer, parentType, property); + } } if (ts.isBindingPattern(node.name)) { ts.forEach(node.name.elements, checkSourceElement); } - if (node.initializer && ts.getRootDeclaration(node).kind === 140 && ts.nodeIsMissing(ts.getContainingFunction(node).body)) { + if (node.initializer && ts.getRootDeclaration(node).kind === 141 && ts.nodeIsMissing(ts.getContainingFunction(node).body)) { error(node, ts.Diagnostics.A_parameter_initializer_is_only_allowed_in_a_function_or_constructor_implementation); return; } if (ts.isBindingPattern(node.name)) { - if (node.initializer && node.parent.parent.kind !== 204) { + if (node.initializer && node.parent.parent.kind !== 206) { checkTypeAssignableTo(checkExpressionCached(node.initializer), getWidenedTypeForVariableLikeDeclaration(node), node, undefined); checkParameterInitializer(node); } @@ -22254,7 +23299,7 @@ var ts; var symbol = getSymbolOfNode(node); var type = getTypeOfVariableOrParameterOrProperty(symbol); if (node === symbol.valueDeclaration) { - if (node.initializer && node.parent.parent.kind !== 204) { + if (node.initializer && node.parent.parent.kind !== 206) { checkTypeAssignableTo(checkExpressionCached(node.initializer), type, node, undefined); checkParameterInitializer(node); } @@ -22268,9 +23313,9 @@ var ts; checkTypeAssignableTo(checkExpressionCached(node.initializer), declarationType, node, undefined); } } - if (node.kind !== 143 && node.kind !== 142) { + if (node.kind !== 144 && node.kind !== 143) { checkExportsOnMergedDeclarations(node); - if (node.kind === 215 || node.kind === 167) { + if (node.kind === 217 || node.kind === 168) { checkVarDeclaredNamesNotShadowed(node); } checkCollisionWithCapturedSuperVariable(node, node.name); @@ -22292,7 +23337,7 @@ var ts; ts.forEach(node.declarationList.declarations, checkSourceElement); } function checkGrammarDisallowedModifiersOnObjectLiteralExpressionMethod(node) { - if (node.modifiers && node.parent.kind === 169) { + if (node.modifiers && node.parent.kind === 170) { if (ts.isAsyncFunctionLike(node)) { if (node.modifiers.length > 1) { return grammarErrorOnFirstToken(node, ts.Diagnostics.Modifiers_cannot_appear_here); @@ -22311,7 +23356,7 @@ var ts; checkGrammarStatementInAmbientContext(node); checkExpression(node.expression); checkSourceElement(node.thenStatement); - if (node.thenStatement.kind === 198) { + if (node.thenStatement.kind === 200) { error(node.thenStatement, ts.Diagnostics.The_body_of_an_if_statement_cannot_be_the_empty_statement); } checkSourceElement(node.elseStatement); @@ -22328,12 +23373,12 @@ var ts; } function checkForStatement(node) { if (!checkGrammarStatementInAmbientContext(node)) { - if (node.initializer && node.initializer.kind === 216) { + if (node.initializer && node.initializer.kind === 218) { checkGrammarVariableDeclarationList(node.initializer); } } if (node.initializer) { - if (node.initializer.kind === 216) { + if (node.initializer.kind === 218) { ts.forEach(node.initializer.declarations, checkVariableDeclaration); } else { @@ -22348,13 +23393,13 @@ var ts; } function checkForOfStatement(node) { checkGrammarForInOrForOfStatement(node); - if (node.initializer.kind === 216) { + if (node.initializer.kind === 218) { checkForInOrForOfVariableDeclaration(node); } else { var varExpr = node.initializer; var iteratedType = checkRightHandSideOfForOf(node.expression); - if (varExpr.kind === 168 || varExpr.kind === 169) { + if (varExpr.kind === 169 || varExpr.kind === 170) { checkDestructuringAssignment(varExpr, iteratedType || unknownType); } else { @@ -22369,7 +23414,7 @@ var ts; } function checkForInStatement(node) { checkGrammarForInOrForOfStatement(node); - if (node.initializer.kind === 216) { + if (node.initializer.kind === 218) { var variable = node.initializer.declarations[0]; if (variable && ts.isBindingPattern(variable.name)) { error(variable.name, ts.Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_be_a_destructuring_pattern); @@ -22379,7 +23424,7 @@ var ts; else { var varExpr = node.initializer; var leftType = checkExpression(varExpr); - if (varExpr.kind === 168 || varExpr.kind === 169) { + if (varExpr.kind === 169 || varExpr.kind === 170) { error(varExpr, ts.Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_be_a_destructuring_pattern); } else if (!isTypeAnyOrAllConstituentTypesHaveKind(leftType, 258)) { @@ -22389,7 +23434,7 @@ var ts; checkReferenceExpression(varExpr, ts.Diagnostics.Invalid_left_hand_side_in_for_in_statement, ts.Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_be_a_constant_or_a_read_only_property); } } - var rightType = checkExpression(node.expression); + var rightType = checkNonNullExpression(node.expression); if (!isTypeAnyOrAllConstituentTypesHaveKind(rightType, 80896 | 512)) { 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); } @@ -22403,7 +23448,7 @@ var ts; } } function checkRightHandSideOfForOf(rhsExpression) { - var expressionType = getTypeOfExpression(rhsExpression); + var expressionType = checkNonNullExpression(rhsExpression); return checkIteratedTypeOrElementType(expressionType, rhsExpression, true); } function checkIteratedTypeOrElementType(inputType, errorNode, allowStringInput) { @@ -22438,7 +23483,7 @@ var ts; } var typeAsIterable = type; if (!typeAsIterable.iterableElementType) { - if ((type.flags & 4096) && type.target === globalIterableType) { + if ((type.flags & 4096) && type.target === getGlobalIterableType()) { typeAsIterable.iterableElementType = type.typeArguments[0]; } else { @@ -22464,7 +23509,7 @@ var ts; } var typeAsIterator = type; if (!typeAsIterator.iteratorElementType) { - if ((type.flags & 4096) && type.target === globalIteratorType) { + if ((type.flags & 4096) && type.target === getGlobalIteratorType()) { typeAsIterator.iteratorElementType = type.typeArguments[0]; } else { @@ -22499,7 +23544,7 @@ var ts; if (isTypeAny(type)) { return undefined; } - if ((type.flags & 4096) && type.target === globalIterableIteratorType) { + if ((type.flags & 4096) && type.target === getGlobalIterableIteratorType()) { return type.typeArguments[0]; } return getElementTypeOfIterable(type, undefined) || @@ -22547,7 +23592,11 @@ var ts; checkGrammarStatementInAmbientContext(node) || checkGrammarBreakOrContinueStatement(node); } function isGetAccessorWithAnnotatedSetAccessor(node) { - return !!(node.kind === 147 && ts.getSetAccessorTypeAnnotationNode(ts.getDeclarationOfKind(node.symbol, 148))); + return !!(node.kind === 148 && ts.getSetAccessorTypeAnnotationNode(ts.getDeclarationOfKind(node.symbol, 149))); + } + function isUnwrappedReturnTypeVoidOrAny(func, returnType) { + var unwrappedReturnType = ts.isAsyncFunctionLike(func) ? getPromisedType(returnType) : returnType; + return maybeTypeOfKind(unwrappedReturnType, 16 | 1); } function checkReturnStatement(node) { if (!checkGrammarStatementInAmbientContext(node)) { @@ -22556,36 +23605,41 @@ var ts; grammarErrorOnFirstToken(node, ts.Diagnostics.A_return_statement_can_only_be_used_within_a_function_body); } } - if (node.expression) { - var func = ts.getContainingFunction(node); - if (func) { - var signature = getSignatureFromDeclaration(func); - var returnType = getReturnTypeOfSignature(signature); - var exprType = checkExpressionCached(node.expression); + var func = ts.getContainingFunction(node); + if (func) { + var signature = getSignatureFromDeclaration(func); + var returnType = getReturnTypeOfSignature(signature); + if (strictNullChecks || node.expression) { + var exprType = node.expression ? checkExpressionCached(node.expression) : undefinedType; if (func.asteriskToken) { return; } - if (func.kind === 148) { - error(node.expression, ts.Diagnostics.Setters_cannot_return_a_value); + if (func.kind === 149) { + if (node.expression) { + error(node.expression, ts.Diagnostics.Setters_cannot_return_a_value); + } } - else if (func.kind === 146) { - if (!checkTypeAssignableTo(exprType, returnType, node.expression)) { + else if (func.kind === 147) { + if (node.expression && !checkTypeAssignableTo(exprType, returnType, node.expression)) { error(node.expression, ts.Diagnostics.Return_type_of_constructor_signature_must_be_assignable_to_the_instance_type_of_the_class); } } else if (func.type || isGetAccessorWithAnnotatedSetAccessor(func)) { if (ts.isAsyncFunctionLike(func)) { var promisedType = getPromisedType(returnType); - var awaitedType = checkAwaitedType(exprType, node.expression, ts.Diagnostics.Return_expression_in_async_function_does_not_have_a_valid_callable_then_member); + var awaitedType = checkAwaitedType(exprType, node.expression || node, ts.Diagnostics.Return_expression_in_async_function_does_not_have_a_valid_callable_then_member); if (promisedType) { - checkTypeAssignableTo(awaitedType, promisedType, node.expression); + checkTypeAssignableTo(awaitedType, promisedType, node.expression || node); } } else { - checkTypeAssignableTo(exprType, returnType, node.expression); + checkTypeAssignableTo(exprType, returnType, node.expression || node); } } } + else if (func.kind !== 147 && compilerOptions.noImplicitReturns && !isUnwrappedReturnTypeVoidOrAny(func, returnType)) { + error(node, ts.Diagnostics.Not_all_code_paths_return_a_value); + } } } function checkWithStatement(node) { @@ -22602,9 +23656,8 @@ var ts; var firstDefaultClause; var hasDuplicateDefaultClause = false; var expressionType = checkExpression(node.expression); - var expressionTypeIsStringLike = maybeTypeOfKind(expressionType, 258); ts.forEach(node.caseBlock.clauses, function (clause) { - if (clause.kind === 246 && !hasDuplicateDefaultClause) { + if (clause.kind === 249 && !hasDuplicateDefaultClause) { if (firstDefaultClause === undefined) { firstDefaultClause = clause; } @@ -22616,13 +23669,11 @@ var ts; hasDuplicateDefaultClause = true; } } - if (produceDiagnostics && clause.kind === 245) { + if (produceDiagnostics && clause.kind === 248) { var caseClause = clause; var caseType = checkExpression(caseClause.expression); - var expressionTypeIsAssignableToCaseType = (expressionTypeIsStringLike && maybeTypeOfKind(caseType, 258)) || - isTypeAssignableTo(expressionType, caseType); - if (!expressionTypeIsAssignableToCaseType) { - checkTypeAssignableTo(caseType, expressionType, caseClause.expression, undefined); + if (!isTypeComparableTo(expressionType, caseType)) { + checkTypeComparableTo(caseType, expressionType, caseClause.expression, undefined); } } ts.forEach(clause.statements, checkSourceElement); @@ -22635,7 +23686,7 @@ var ts; if (ts.isFunctionLike(current)) { break; } - if (current.kind === 211 && current.label.text === node.label.text) { + if (current.kind === 213 && current.label.text === node.label.text) { var sourceFile = ts.getSourceFileOfNode(node); grammarErrorOnNode(node.label, ts.Diagnostics.Duplicate_label_0, ts.getTextOfNodeFromSourceText(sourceFile.text, node.label)); break; @@ -22729,7 +23780,7 @@ var ts; return; } var errorNode; - if (prop.valueDeclaration.name.kind === 138 || prop.parent === containingType.symbol) { + if (prop.valueDeclaration.name.kind === 139 || prop.parent === containingType.symbol) { errorNode = prop.valueDeclaration; } else if (indexDeclaration) { @@ -22780,7 +23831,7 @@ var ts; var firstDecl; for (var _i = 0, _a = symbol.declarations; _i < _a.length; _i++) { var declaration = _a[_i]; - if (declaration.kind === 218 || declaration.kind === 219) { + if (declaration.kind === 220 || declaration.kind === 221) { if (!firstDecl) { firstDecl = declaration; } @@ -22909,7 +23960,7 @@ var ts; if (derived === base) { var derivedClassDecl = getClassLikeDeclarationOfSymbol(type.symbol); if (baseDeclarationFlags & 128 && (!derivedClassDecl || !(derivedClassDecl.flags & 128))) { - if (derivedClassDecl.kind === 190) { + if (derivedClassDecl.kind === 191) { error(derivedClassDecl, ts.Diagnostics.Non_abstract_class_expression_does_not_implement_inherited_abstract_member_0_from_class_1, symbolToString(baseProperty), typeToString(baseType)); } else { @@ -22953,7 +24004,7 @@ var ts; } } function isAccessor(kind) { - return kind === 147 || kind === 148; + return kind === 148 || kind === 149; } function areTypeParametersIdentical(list1, list2) { if (!list1 && !list2) { @@ -23020,7 +24071,7 @@ var ts; checkExportsOnMergedDeclarations(node); var symbol = getSymbolOfNode(node); checkTypeParameterListsIdentical(node, symbol); - var firstInterfaceDecl = ts.getDeclarationOfKind(symbol, 219); + var firstInterfaceDecl = ts.getDeclarationOfKind(symbol, 221); if (node === firstInterfaceDecl) { var type = getDeclaredTypeOfSymbol(symbol); var typeWithThis = getTypeWithThisArgument(type); @@ -23113,7 +24164,7 @@ var ts; return value; function evalConstant(e) { switch (e.kind) { - case 183: + case 184: var value_1 = evalConstant(e.operand); if (value_1 === undefined) { return undefined; @@ -23124,7 +24175,7 @@ var ts; case 50: return ~value_1; } return undefined; - case 185: + case 186: var left = evalConstant(e.left); if (left === undefined) { return undefined; @@ -23149,11 +24200,11 @@ var ts; return undefined; case 8: return +e.text; - case 176: + case 177: return evalConstant(e.expression); case 69: + case 172: case 171: - case 170: var member = initializer.parent; var currentType = getTypeOfSymbol(getSymbolOfNode(member.parent)); var enumType_1; @@ -23164,7 +24215,7 @@ var ts; } else { var expression = void 0; - if (e.kind === 171) { + if (e.kind === 172) { if (e.argumentExpression === undefined || e.argumentExpression.kind !== 9) { return undefined; @@ -23181,7 +24232,7 @@ var ts; if (current.kind === 69) { break; } - else if (current.kind === 170) { + else if (current.kind === 171) { current = current.expression; } else { @@ -23241,7 +24292,7 @@ var ts; } var seenEnumMissingInitialInitializer_1 = false; ts.forEach(enumSymbol.declarations, function (declaration) { - if (declaration.kind !== 221) { + if (declaration.kind !== 223) { return false; } var enumDeclaration = declaration; @@ -23264,8 +24315,8 @@ var ts; var declarations = symbol.declarations; for (var _i = 0, declarations_5 = declarations; _i < declarations_5.length; _i++) { var declaration = declarations_5[_i]; - if ((declaration.kind === 218 || - (declaration.kind === 217 && ts.nodeIsPresent(declaration.body))) && + if ((declaration.kind === 220 || + (declaration.kind === 219 && ts.nodeIsPresent(declaration.body))) && !ts.isInAmbientContext(declaration)) { return declaration; } @@ -23322,7 +24373,7 @@ var ts; error(node.name, ts.Diagnostics.A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged); } } - var mergedClass = ts.getDeclarationOfKind(symbol, 218); + var mergedClass = ts.getDeclarationOfKind(symbol, 220); if (mergedClass && inSameLexicalScope(node, mergedClass)) { getNodeLinks(node).flags |= 32768; @@ -23360,40 +24411,40 @@ var ts; } function checkModuleAugmentationElement(node, isGlobalAugmentation) { switch (node.kind) { - case 197: + case 199: for (var _i = 0, _a = node.declarationList.declarations; _i < _a.length; _i++) { var decl = _a[_i]; checkModuleAugmentationElement(decl, isGlobalAugmentation); } break; - case 231: - case 232: + case 234: + case 235: grammarErrorOnFirstToken(node, ts.Diagnostics.Exports_and_export_assignments_are_not_permitted_in_module_augmentations); break; - case 225: + case 228: if (node.moduleReference.kind !== 9) { error(node.name, ts.Diagnostics.Module_augmentation_cannot_introduce_new_names_in_the_top_level_scope); break; } - case 226: + case 229: grammarErrorOnFirstToken(node, ts.Diagnostics.Imports_are_not_permitted_in_module_augmentations_Consider_moving_them_to_the_enclosing_external_module); break; - case 167: - case 215: - var name_16 = node.name; - if (ts.isBindingPattern(name_16)) { - for (var _b = 0, _c = name_16.elements; _b < _c.length; _b++) { + case 168: + case 217: + var name_18 = node.name; + if (ts.isBindingPattern(name_18)) { + for (var _b = 0, _c = name_18.elements; _b < _c.length; _b++) { var el = _c[_b]; checkModuleAugmentationElement(el, isGlobalAugmentation); } break; } - case 218: - case 221: - case 217: - case 219: - case 222: case 220: + case 223: + case 219: + case 221: + case 224: + case 222: var symbol = getSymbolOfNode(node); if (symbol) { var reportError = !(symbol.flags & 33554432); @@ -23402,7 +24453,7 @@ var ts; reportError = symbol.parent !== undefined; } else { - reportError = ts.isExternalModuleAugmentation(symbol.parent.valueDeclaration); + reportError = ts.isExternalModuleAugmentation(symbol.parent.declarations[0]); } } if (reportError) { @@ -23414,10 +24465,10 @@ var ts; } function getFirstIdentifier(node) { while (true) { - if (node.kind === 137) { + if (node.kind === 138) { node = node.left; } - else if (node.kind === 170) { + else if (node.kind === 171) { node = node.expression; } else { @@ -23433,9 +24484,9 @@ var ts; error(moduleName, ts.Diagnostics.String_literal_expected); return false; } - var inAmbientExternalModule = node.parent.kind === 223 && ts.isAmbientModule(node.parent.parent); - if (node.parent.kind !== 252 && !inAmbientExternalModule) { - error(moduleName, node.kind === 232 ? + var inAmbientExternalModule = node.parent.kind === 225 && ts.isAmbientModule(node.parent.parent); + if (node.parent.kind !== 255 && !inAmbientExternalModule) { + error(moduleName, node.kind === 235 ? ts.Diagnostics.Export_declarations_are_not_permitted_in_a_namespace : ts.Diagnostics.Import_declarations_in_a_namespace_cannot_reference_a_module); return false; @@ -23452,11 +24503,11 @@ var ts; var symbol = getSymbolOfNode(node); var target = resolveAlias(symbol); if (target !== unknownSymbol) { - var excludedMeanings = (symbol.flags & 107455 ? 107455 : 0) | + var excludedMeanings = (symbol.flags & (107455 | 1048576) ? 107455 : 0) | (symbol.flags & 793056 ? 793056 : 0) | (symbol.flags & 1536 ? 1536 : 0); if (target.flags & excludedMeanings) { - var message = node.kind === 234 ? + var message = node.kind === 237 ? ts.Diagnostics.Export_declaration_conflicts_with_exported_declaration_of_0 : ts.Diagnostics.Import_declaration_conflicts_with_local_declaration_of_0; error(node, message, symbolToString(symbol)); @@ -23483,7 +24534,7 @@ var ts; checkImportBinding(importClause); } if (importClause.namedBindings) { - if (importClause.namedBindings.kind === 228) { + if (importClause.namedBindings.kind === 231) { checkImportBinding(importClause.namedBindings); } else { @@ -23534,8 +24585,8 @@ var ts; if (!node.moduleSpecifier || checkExternalImportOrExportDeclaration(node)) { if (node.exportClause) { ts.forEach(node.exportClause.elements, checkExportSpecifier); - var inAmbientExternalModule = node.parent.kind === 223 && ts.isAmbientModule(node.parent.parent); - if (node.parent.kind !== 252 && !inAmbientExternalModule) { + var inAmbientExternalModule = node.parent.kind === 225 && ts.isAmbientModule(node.parent.parent); + if (node.parent.kind !== 255 && !inAmbientExternalModule) { error(node, ts.Diagnostics.Export_declarations_are_not_permitted_in_a_namespace); } } @@ -23548,7 +24599,7 @@ var ts; } } function checkGrammarModuleElementContext(node, errorMessage) { - if (node.parent.kind !== 252 && node.parent.kind !== 223 && node.parent.kind !== 222) { + if (node.parent.kind !== 255 && node.parent.kind !== 225 && node.parent.kind !== 224) { return grammarErrorOnFirstToken(node, errorMessage); } } @@ -23569,8 +24620,8 @@ var ts; if (checkGrammarModuleElementContext(node, ts.Diagnostics.An_export_assignment_can_only_be_used_in_a_module)) { return; } - var container = node.parent.kind === 252 ? node.parent : node.parent.parent; - if (container.kind === 222 && !ts.isAmbientModule(container)) { + var container = node.parent.kind === 255 ? node.parent : node.parent.parent; + if (container.kind === 224 && !ts.isAmbientModule(container)) { error(node, ts.Diagnostics.An_export_assignment_cannot_be_used_in_a_namespace); return; } @@ -23637,7 +24688,7 @@ var ts; links.exportsChecked = true; } function isNotOverload(declaration) { - return declaration.kind !== 217 || !!declaration.body; + return declaration.kind !== 219 || !!declaration.body; } } function checkSourceElement(node) { @@ -23647,118 +24698,118 @@ var ts; var kind = node.kind; if (cancellationToken) { switch (kind) { - case 222: - case 218: + case 224: + case 220: + case 221: case 219: - case 217: cancellationToken.throwIfCancellationRequested(); } } switch (kind) { - case 139: - return checkTypeParameter(node); case 140: + return checkTypeParameter(node); + case 141: return checkParameter(node); + case 144: case 143: - case 142: return checkPropertyDeclaration(node); - case 154: case 155: - case 149: + case 156: case 150: - return checkSignatureDeclaration(node); case 151: return checkSignatureDeclaration(node); - case 145: - case 144: - return checkMethodDeclaration(node); - case 146: - return checkConstructorDeclaration(node); - case 147: - case 148: - return checkAccessorDeclaration(node); - case 153: - return checkTypeReferenceNode(node); case 152: + return checkSignatureDeclaration(node); + case 146: + case 145: + return checkMethodDeclaration(node); + case 147: + return checkConstructorDeclaration(node); + case 148: + case 149: + return checkAccessorDeclaration(node); + case 154: + return checkTypeReferenceNode(node); + case 153: return checkTypePredicate(node); - case 156: - return checkTypeQuery(node); case 157: - return checkTypeLiteral(node); + return checkTypeQuery(node); case 158: - return checkArrayType(node); + return checkTypeLiteral(node); case 159: - return checkTupleType(node); + return checkArrayType(node); case 160: + return checkTupleType(node); case 161: - return checkUnionOrIntersectionType(node); case 162: + return checkUnionOrIntersectionType(node); + case 163: return checkSourceElement(node.type); - case 217: - return checkFunctionDeclaration(node); - case 196: - case 223: - return checkBlock(node); - case 197: - return checkVariableStatement(node); - case 199: - return checkExpressionStatement(node); - case 200: - return checkIfStatement(node); - case 201: - return checkDoStatement(node); - case 202: - return checkWhileStatement(node); - case 203: - return checkForStatement(node); - case 204: - return checkForInStatement(node); - case 205: - return checkForOfStatement(node); - case 206: - case 207: - return checkBreakOrContinueStatement(node); - case 208: - return checkReturnStatement(node); - case 209: - return checkWithStatement(node); - case 210: - return checkSwitchStatement(node); - case 211: - return checkLabeledStatement(node); - case 212: - return checkThrowStatement(node); - case 213: - return checkTryStatement(node); - case 215: - return checkVariableDeclaration(node); - case 167: - return checkBindingElement(node); - case 218: - return checkClassDeclaration(node); case 219: - return checkInterfaceDeclaration(node); - case 220: - return checkTypeAliasDeclaration(node); - case 221: - return checkEnumDeclaration(node); - case 222: - return checkModuleDeclaration(node); - case 226: - return checkImportDeclaration(node); - case 225: - return checkImportEqualsDeclaration(node); - case 232: - return checkExportDeclaration(node); - case 231: - return checkExportAssignment(node); + return checkFunctionDeclaration(node); case 198: - checkGrammarStatementInAmbientContext(node); - return; + case 225: + return checkBlock(node); + case 199: + return checkVariableStatement(node); + case 201: + return checkExpressionStatement(node); + case 202: + return checkIfStatement(node); + case 203: + return checkDoStatement(node); + case 204: + return checkWhileStatement(node); + case 205: + return checkForStatement(node); + case 206: + return checkForInStatement(node); + case 207: + return checkForOfStatement(node); + case 208: + case 209: + return checkBreakOrContinueStatement(node); + case 210: + return checkReturnStatement(node); + case 211: + return checkWithStatement(node); + case 212: + return checkSwitchStatement(node); + case 213: + return checkLabeledStatement(node); case 214: + return checkThrowStatement(node); + case 215: + return checkTryStatement(node); + case 217: + return checkVariableDeclaration(node); + case 168: + return checkBindingElement(node); + case 220: + return checkClassDeclaration(node); + case 221: + return checkInterfaceDeclaration(node); + case 222: + return checkTypeAliasDeclaration(node); + case 223: + return checkEnumDeclaration(node); + case 224: + return checkModuleDeclaration(node); + case 229: + return checkImportDeclaration(node); + case 228: + return checkImportEqualsDeclaration(node); + case 235: + return checkExportDeclaration(node); + case 234: + return checkExportAssignment(node); + case 200: checkGrammarStatementInAmbientContext(node); return; - case 235: + case 216: + checkGrammarStatementInAmbientContext(node); + return; + case 238: return checkMissingDeclaration(node); } } @@ -23771,17 +24822,17 @@ var ts; for (var _i = 0, deferredNodes_1 = deferredNodes; _i < deferredNodes_1.length; _i++) { var node = deferredNodes_1[_i]; switch (node.kind) { - case 177: case 178: + case 179: + case 146: case 145: - case 144: checkFunctionExpressionOrObjectLiteralMethodDeferred(node); break; - case 147: case 148: + case 149: checkAccessorDeferred(node); break; - case 190: + case 191: checkClassExpressionDeferred(node); break; } @@ -23846,7 +24897,7 @@ var ts; function isInsideWithStatementBody(node) { if (node) { while (node.parent) { - if (node.parent.kind === 209 && node.parent.statement === node) { + if (node.parent.kind === 211 && node.parent.statement === node) { return true; } node = node.parent; @@ -23868,28 +24919,28 @@ var ts; copySymbols(location.locals, meaning); } switch (location.kind) { - case 252: + case 255: if (!ts.isExternalOrCommonJsModule(location)) { break; } - case 222: + case 224: copySymbols(getSymbolOfNode(location).exports, meaning & 8914931); break; - case 221: + case 223: copySymbols(getSymbolOfNode(location).exports, meaning & 8); break; - case 190: + case 191: var className = location.name; if (className) { copySymbol(location.symbol, meaning); } - case 218: - case 219: + case 220: + case 221: if (!(memberFlags & 32)) { copySymbols(getSymbolOfNode(location).members, meaning & 793056); } break; - case 177: + case 178: var funcName = location.name; if (funcName) { copySymbol(location.symbol, meaning); @@ -23928,47 +24979,50 @@ var ts; } function isTypeDeclaration(node) { switch (node.kind) { - case 139: - case 218: - case 219: + case 140: case 220: case 221: + case 222: + case 223: return true; } } function isTypeReferenceIdentifier(entityName) { var node = entityName; - while (node.parent && node.parent.kind === 137) { + while (node.parent && node.parent.kind === 138) { node = node.parent; } - return node.parent && node.parent.kind === 153; + return node.parent && node.parent.kind === 154; } function isHeritageClauseElementIdentifier(entityName) { var node = entityName; - while (node.parent && node.parent.kind === 170) { + while (node.parent && node.parent.kind === 171) { node = node.parent; } - return node.parent && node.parent.kind === 192; + return node.parent && node.parent.kind === 193; } - function isNodeWithinClass(node, classDeclaration) { + function forEachEnclosingClass(node, callback) { + var result; while (true) { node = ts.getContainingClass(node); - if (!node) { - return false; - } - if (node === classDeclaration) { - return true; - } + if (!node) + break; + if (result = callback(node)) + break; } + return result; + } + function isNodeWithinClass(node, classDeclaration) { + return !!forEachEnclosingClass(node, function (n) { return n === classDeclaration; }); } function getLeftSideOfImportEqualsOrExportAssignment(nodeOnRightSide) { - while (nodeOnRightSide.parent.kind === 137) { + while (nodeOnRightSide.parent.kind === 138) { nodeOnRightSide = nodeOnRightSide.parent; } - if (nodeOnRightSide.parent.kind === 225) { + if (nodeOnRightSide.parent.kind === 228) { return nodeOnRightSide.parent.moduleReference === nodeOnRightSide && nodeOnRightSide.parent; } - if (nodeOnRightSide.parent.kind === 231) { + if (nodeOnRightSide.parent.kind === 234) { return nodeOnRightSide.parent.expression === nodeOnRightSide && nodeOnRightSide.parent; } return undefined; @@ -23980,7 +25034,7 @@ var ts; if (ts.isDeclarationName(entityName)) { return getSymbolOfNode(entityName.parent); } - if (ts.isInJavaScriptFile(entityName) && entityName.parent.kind === 170) { + if (ts.isInJavaScriptFile(entityName) && entityName.parent.kind === 171) { var specialPropertyAssignmentKind = ts.getSpecialPropertyAssignmentKind(entityName.parent.parent); switch (specialPropertyAssignmentKind) { case 1: @@ -23992,10 +25046,10 @@ var ts; default: } } - if (entityName.parent.kind === 231) { + if (entityName.parent.kind === 234) { return resolveEntityName(entityName, 107455 | 793056 | 1536 | 8388608); } - if (entityName.kind !== 170) { + if (entityName.kind !== 171) { if (isInRightSideOfImportOrExportAssignment(entityName)) { return getSymbolOfPartOfRightHandSideOfImportEquals(entityName); } @@ -24005,7 +25059,7 @@ var ts; } if (isHeritageClauseElementIdentifier(entityName)) { var meaning = 0; - if (entityName.parent.kind === 192) { + if (entityName.parent.kind === 193) { meaning = 793056; if (ts.isExpressionWithTypeArgumentsInClassExtendsClause(entityName.parent)) { meaning |= 107455; @@ -24017,27 +25071,25 @@ var ts; meaning |= 8388608; return resolveEntityName(entityName, meaning); } - else if ((entityName.parent.kind === 239) || - (entityName.parent.kind === 238) || - (entityName.parent.kind === 241)) { - return getJsxTagSymbol(entityName.parent); - } else if (ts.isExpression(entityName)) { if (ts.nodeIsMissing(entityName)) { return undefined; } if (entityName.kind === 69) { + if (ts.isJSXTagName(entityName) && isJsxIntrinsicIdentifier(entityName)) { + return getIntrinsicTagSymbol(entityName.parent); + } var meaning = 107455 | 8388608; return resolveEntityName(entityName, meaning); } - else if (entityName.kind === 170) { + else if (entityName.kind === 171) { var symbol = getNodeLinks(entityName).resolvedSymbol; if (!symbol) { checkPropertyAccessExpression(entityName); } return getNodeLinks(entityName).resolvedSymbol; } - else if (entityName.kind === 137) { + else if (entityName.kind === 138) { var symbol = getNodeLinks(entityName).resolvedSymbol; if (!symbol) { checkQualifiedName(entityName); @@ -24046,14 +25098,14 @@ var ts; } } else if (isTypeReferenceIdentifier(entityName)) { - var meaning = entityName.parent.kind === 153 ? 793056 : 1536; + var meaning = entityName.parent.kind === 154 ? 793056 : 1536; meaning |= 8388608; return resolveEntityName(entityName, meaning); } - else if (entityName.parent.kind === 242) { + else if (entityName.parent.kind === 245) { return getJsxAttributePropertySymbol(entityName.parent); } - if (entityName.parent.kind === 152) { + if (entityName.parent.kind === 153) { return resolveEntityName(entityName, 1); } return undefined; @@ -24067,12 +25119,12 @@ var ts; } if (node.kind === 69) { if (isInRightSideOfImportOrExportAssignment(node)) { - return node.parent.kind === 231 + return node.parent.kind === 234 ? getSymbolOfEntityNameOrPropertyAccessExpression(node) : getSymbolOfPartOfRightHandSideOfImportEquals(node); } - else if (node.parent.kind === 167 && - node.parent.parent.kind === 165 && + else if (node.parent.kind === 168 && + node.parent.parent.kind === 166 && node === node.parent.propertyName) { var typeOfPattern = getTypeOfNode(node.parent.parent); var propertyDeclaration = typeOfPattern && getPropertyOfType(typeOfPattern, node.text); @@ -24083,30 +25135,30 @@ var ts; } switch (node.kind) { case 69: - case 170: - case 137: + case 171: + case 138: return getSymbolOfEntityNameOrPropertyAccessExpression(node); case 97: case 95: var type = ts.isExpression(node) ? checkExpression(node) : getTypeFromTypeNode(node); return type.symbol; - case 163: + case 164: return getTypeFromTypeNode(node).symbol; case 121: var constructorDeclaration = node.parent; - if (constructorDeclaration && constructorDeclaration.kind === 146) { + if (constructorDeclaration && constructorDeclaration.kind === 147) { return constructorDeclaration.parent.symbol; } return undefined; case 9: if ((ts.isExternalModuleImportEqualsDeclaration(node.parent.parent) && ts.getExternalModuleImportEqualsDeclarationExpression(node.parent.parent) === node) || - ((node.parent.kind === 226 || node.parent.kind === 232) && + ((node.parent.kind === 229 || node.parent.kind === 235) && node.parent.moduleSpecifier === node)) { return resolveExternalModuleName(node, node); } case 8: - if (node.parent.kind === 171 && node.parent.argumentExpression === node) { + if (node.parent.kind === 172 && node.parent.argumentExpression === node) { var objectType = checkExpression(node.parent.expression); if (objectType === unknownType) return undefined; @@ -24120,7 +25172,7 @@ var ts; return undefined; } function getShorthandAssignmentValueSymbol(location) { - if (location && location.kind === 250) { + if (location && location.kind === 253) { return resolveEntityName(location.name, 107455 | 8388608); } return undefined; @@ -24196,9 +25248,9 @@ var ts; function getRootSymbols(symbol) { if (symbol.flags & 268435456) { var symbols_3 = []; - var name_17 = symbol.name; + var name_19 = symbol.name; ts.forEach(getSymbolLinks(symbol).containingType.types, function (t) { - var symbol = getPropertyOfType(t, name_17); + var symbol = getPropertyOfType(t, name_19); if (symbol) { symbols_3.push(symbol); } @@ -24247,11 +25299,11 @@ var ts; } var parentSymbol = getParentOfSymbol(symbol); if (parentSymbol) { - if (parentSymbol.flags & 512 && parentSymbol.valueDeclaration.kind === 252) { + if (parentSymbol.flags & 512 && parentSymbol.valueDeclaration.kind === 255) { return parentSymbol.valueDeclaration; } for (var n = node.parent; n; n = n.parent) { - if ((n.kind === 222 || n.kind === 221) && getSymbolOfNode(n) === parentSymbol) { + if ((n.kind === 224 || n.kind === 223) && getSymbolOfNode(n) === parentSymbol) { return n; } } @@ -24275,7 +25327,7 @@ var ts; else if (nodeLinks_1.flags & 131072) { var isDeclaredInLoop = nodeLinks_1.flags & 262144; var inLoopInitializer = ts.isIterationStatement(container, false); - var inLoopBodyBlock = container.kind === 196 && ts.isIterationStatement(container.parent, false); + var inLoopBodyBlock = container.kind === 198 && ts.isIterationStatement(container.parent, false); links.isDeclarationWithCollidingName = !ts.isBlockScopedContainerTopLevel(container) && (!isDeclaredInLoop || (!inLoopInitializer && !inLoopBodyBlock)); } else { @@ -24296,22 +25348,22 @@ var ts; } function isValueAliasDeclaration(node) { switch (node.kind) { - case 225: - case 227: case 228: case 230: - case 234: + case 231: + case 233: + case 237: return isAliasResolvedToValue(getSymbolOfNode(node)); - case 232: + case 235: var exportClause = node.exportClause; return exportClause && ts.forEach(exportClause.elements, isValueAliasDeclaration); - case 231: + case 234: return node.expression && node.expression.kind === 69 ? isAliasResolvedToValue(getSymbolOfNode(node)) : true; } return false; } function isTopLevelValueImportEqualsWithEntityName(node) { - if (node.parent.kind !== 252 || !ts.isInternalModuleImportEqualsDeclaration(node)) { + if (node.parent.kind !== 255 || !ts.isInternalModuleImportEqualsDeclaration(node)) { return false; } var isValue = isAliasResolvedToValue(getSymbolOfNode(node)); @@ -24359,7 +25411,7 @@ var ts; return getNodeLinks(node).enumMemberValue; } function getConstantValue(node) { - if (node.kind === 251) { + if (node.kind === 254) { return getEnumMemberValue(node); } var symbol = getNodeLinks(node).resolvedSymbol; @@ -24430,9 +25482,15 @@ var ts; getSymbolDisplayBuilder().buildTypeDisplay(getReturnTypeOfSignature(signature), writer, enclosingDeclaration, flags); } function writeTypeOfExpression(expr, enclosingDeclaration, flags, writer) { - var type = getTypeOfExpression(expr); + var type = getWidenedType(getTypeOfExpression(expr)); getSymbolDisplayBuilder().buildTypeDisplay(type, writer, enclosingDeclaration, flags); } + function writeBaseConstructorTypeOfClass(node, enclosingDeclaration, flags, writer) { + var classType = getDeclaredTypeOfSymbol(getSymbolOfNode(node)); + resolveBaseTypesOfClass(classType); + var baseType = classType.resolvedBaseTypes.length ? classType.resolvedBaseTypes[0] : unknownType; + getSymbolDisplayBuilder().buildTypeDisplay(baseType, writer, enclosingDeclaration, flags); + } function hasGlobalName(name) { return ts.hasProperty(globals, name); } @@ -24461,6 +25519,7 @@ var ts; writeTypeOfDeclaration: writeTypeOfDeclaration, writeReturnTypeOfSignatureDeclaration: writeReturnTypeOfSignatureDeclaration, writeTypeOfExpression: writeTypeOfExpression, + writeBaseConstructorTypeOfClass: writeBaseConstructorTypeOfClass, isSymbolAccessible: isSymbolAccessible, isEntityNameVisible: isEntityNameVisible, getConstantValue: getConstantValue, @@ -24479,7 +25538,7 @@ var ts; if (!moduleSymbol) { return undefined; } - return ts.getDeclarationOfKind(moduleSymbol, 252); + return ts.getDeclarationOfKind(moduleSymbol, 255); } function initializeTypeChecker() { ts.forEach(host.getSourceFiles(), function (file) { @@ -24493,6 +25552,9 @@ var ts; if (file.moduleAugmentations.length) { (augmentations || (augmentations = [])).push(file.moduleAugmentations); } + if (file.wasReferenced && file.symbol && file.symbol.globalExports) { + mergeSymbolTable(globals, file.symbol.globalExports); + } }); if (augmentations) { for (var _i = 0, augmentations_1 = augmentations; _i < augmentations_1.length; _i++) { @@ -24520,6 +25582,7 @@ var ts; getGlobalMethodDecoratorType = ts.memoize(function () { return getGlobalType("MethodDecorator"); }); getGlobalParameterDecoratorType = ts.memoize(function () { return getGlobalType("ParameterDecorator"); }); getGlobalTypedPropertyDescriptorType = ts.memoize(function () { return getGlobalType("TypedPropertyDescriptor", 1); }); + getGlobalESSymbolConstructorSymbol = ts.memoize(function () { return getGlobalValueSymbol("Symbol"); }); getGlobalPromiseType = ts.memoize(function () { return getGlobalType("Promise", 1); }); tryGetGlobalPromiseType = ts.memoize(function () { return getGlobalSymbol("Promise", 793056, undefined) && getGlobalPromiseType(); }); getGlobalPromiseLikeType = ts.memoize(function () { return getGlobalType("PromiseLike", 1); }); @@ -24527,21 +25590,18 @@ var ts; getGlobalPromiseConstructorSymbol = ts.memoize(function () { return getGlobalValueSymbol("Promise"); }); getGlobalPromiseConstructorLikeType = ts.memoize(function () { return getGlobalType("PromiseConstructorLike"); }); getGlobalThenableType = ts.memoize(createThenableType); + getGlobalTemplateStringsArrayType = ts.memoize(function () { return getGlobalType("TemplateStringsArray"); }); if (languageVersion >= 2) { - globalTemplateStringsArrayType = getGlobalType("TemplateStringsArray"); - globalESSymbolType = getGlobalType("Symbol"); - globalESSymbolConstructorSymbol = getGlobalValueSymbol("Symbol"); - globalIterableType = getGlobalType("Iterable", 1); - globalIteratorType = getGlobalType("Iterator", 1); - globalIterableIteratorType = getGlobalType("IterableIterator", 1); + getGlobalESSymbolType = ts.memoize(function () { return getGlobalType("Symbol"); }); + getGlobalIterableType = ts.memoize(function () { return getGlobalType("Iterable", 1); }); + getGlobalIteratorType = ts.memoize(function () { return getGlobalType("Iterator", 1); }); + getGlobalIterableIteratorType = ts.memoize(function () { return getGlobalType("IterableIterator", 1); }); } else { - globalTemplateStringsArrayType = unknownType; - globalESSymbolType = createAnonymousType(undefined, emptySymbols, emptyArray, emptyArray, undefined, undefined); - globalESSymbolConstructorSymbol = undefined; - globalIterableType = emptyGenericType; - globalIteratorType = emptyGenericType; - globalIterableIteratorType = emptyGenericType; + getGlobalESSymbolType = ts.memoize(function () { return emptyObjectType; }); + getGlobalIterableType = ts.memoize(function () { return emptyGenericType; }); + getGlobalIteratorType = ts.memoize(function () { return emptyGenericType; }); + getGlobalIterableIteratorType = ts.memoize(function () { return emptyGenericType; }); } anyArrayType = createArrayType(anyType); var symbol = getGlobalSymbol("ReadonlyArray", 793056, undefined); @@ -24570,14 +25630,14 @@ var ts; return false; } if (!ts.nodeCanBeDecorated(node)) { - if (node.kind === 145 && !ts.nodeIsPresent(node.body)) { + if (node.kind === 146 && !ts.nodeIsPresent(node.body)) { return grammarErrorOnFirstToken(node, ts.Diagnostics.A_decorator_can_only_decorate_a_method_implementation_not_an_overload); } else { return grammarErrorOnFirstToken(node, ts.Diagnostics.Decorators_are_not_valid_here); } } - else if (node.kind === 147 || node.kind === 148) { + else if (node.kind === 148 || node.kind === 149) { var accessors = ts.getAllAccessorDeclarations(node.parent.members, node); if (accessors.firstAccessor.decorators && node === accessors.secondAccessor) { return grammarErrorOnFirstToken(node, ts.Diagnostics.Decorators_cannot_be_applied_to_multiple_get_Slashset_accessors_of_the_same_name); @@ -24587,38 +25647,38 @@ var ts; } function checkGrammarModifiers(node) { switch (node.kind) { - case 147: case 148: - case 146: - case 143: - case 142: - case 145: + case 149: + case 147: case 144: - case 151: - case 222: - case 226: - case 225: - case 232: - case 231: - case 140: + case 143: + case 146: + case 145: + case 152: + case 224: + case 229: + case 228: + case 235: + case 234: + case 141: break; - case 217: - if (node.modifiers && (node.modifiers.length > 1 || node.modifiers[0].kind !== 118) && - node.parent.kind !== 223 && node.parent.kind !== 252) { - return grammarErrorOnFirstToken(node, ts.Diagnostics.Modifiers_cannot_appear_here); - } - break; - case 218: case 219: - case 197: - case 220: - if (node.modifiers && node.parent.kind !== 223 && node.parent.kind !== 252) { + if (node.modifiers && (node.modifiers.length > 1 || node.modifiers[0].kind !== 118) && + node.parent.kind !== 225 && node.parent.kind !== 255) { return grammarErrorOnFirstToken(node, ts.Diagnostics.Modifiers_cannot_appear_here); } break; + case 220: case 221: + case 199: + case 222: + if (node.modifiers && node.parent.kind !== 225 && node.parent.kind !== 255) { + return grammarErrorOnFirstToken(node, ts.Diagnostics.Modifiers_cannot_appear_here); + } + break; + case 223: if (node.modifiers && (node.modifiers.length > 1 || node.modifiers[0].kind !== 74) && - node.parent.kind !== 223 && node.parent.kind !== 252) { + node.parent.kind !== 225 && node.parent.kind !== 255) { return grammarErrorOnFirstToken(node, ts.Diagnostics.Modifiers_cannot_appear_here); } break; @@ -24633,16 +25693,16 @@ var ts; for (var _i = 0, _a = node.modifiers; _i < _a.length; _i++) { var modifier = _a[_i]; if (modifier.kind !== 127) { - if (node.kind === 142 || node.kind === 144) { + if (node.kind === 143 || node.kind === 145) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_type_member, ts.tokenToString(modifier.kind)); } - if (node.kind === 151) { + if (node.kind === 152) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_an_index_signature, ts.tokenToString(modifier.kind)); } } switch (modifier.kind) { case 74: - if (node.kind !== 221 && node.parent.kind === 218) { + if (node.kind !== 223 && node.parent.kind === 220) { return grammarErrorOnNode(node, ts.Diagnostics.A_class_member_cannot_have_the_0_keyword, ts.tokenToString(74)); } break; @@ -24668,7 +25728,7 @@ var ts; else if (flags & 256) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_must_precede_1_modifier, text, "async"); } - else if (node.parent.kind === 223 || node.parent.kind === 252) { + else if (node.parent.kind === 225 || node.parent.kind === 255) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_module_or_namespace_element, text); } else if (flags & 128) { @@ -24691,10 +25751,10 @@ var ts; else if (flags & 256) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_must_precede_1_modifier, "static", "async"); } - else if (node.parent.kind === 223 || node.parent.kind === 252) { + else if (node.parent.kind === 225 || node.parent.kind === 255) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_module_or_namespace_element, "static"); } - else if (node.kind === 140) { + else if (node.kind === 141) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_parameter, "static"); } else if (flags & 128) { @@ -24707,7 +25767,7 @@ var ts; if (flags & 64) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_already_seen, "readonly"); } - else if (node.kind !== 143 && node.kind !== 142 && node.kind !== 151) { + else if (node.kind !== 144 && node.kind !== 143 && node.kind !== 152) { return grammarErrorOnNode(modifier, ts.Diagnostics.readonly_modifier_can_only_appear_on_a_property_declaration_or_index_signature); } flags |= 64; @@ -24726,10 +25786,10 @@ var ts; else if (flags & 256) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_must_precede_1_modifier, "export", "async"); } - else if (node.parent.kind === 218) { + else if (node.parent.kind === 220) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_class_element, "export"); } - else if (node.kind === 140) { + else if (node.kind === 141) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_parameter, "export"); } flags |= 1; @@ -24741,13 +25801,13 @@ var ts; else if (flags & 256) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_be_used_in_an_ambient_context, "async"); } - else if (node.parent.kind === 218) { + else if (node.parent.kind === 220) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_class_element, "declare"); } - else if (node.kind === 140) { + else if (node.kind === 141) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_parameter, "declare"); } - else if (ts.isInAmbientContext(node.parent) && node.parent.kind === 223) { + else if (ts.isInAmbientContext(node.parent) && node.parent.kind === 225) { return grammarErrorOnNode(modifier, ts.Diagnostics.A_declare_modifier_cannot_be_used_in_an_already_ambient_context); } flags |= 2; @@ -24757,14 +25817,14 @@ var ts; if (flags & 128) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_already_seen, "abstract"); } - if (node.kind !== 218) { - if (node.kind !== 145 && - node.kind !== 143 && - node.kind !== 147 && - node.kind !== 148) { + if (node.kind !== 220) { + if (node.kind !== 146 && + node.kind !== 144 && + node.kind !== 148 && + node.kind !== 149) { return grammarErrorOnNode(modifier, ts.Diagnostics.abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration); } - if (!(node.parent.kind === 218 && node.parent.flags & 128)) { + if (!(node.parent.kind === 220 && node.parent.flags & 128)) { return grammarErrorOnNode(modifier, ts.Diagnostics.Abstract_methods_can_only_appear_within_an_abstract_class); } if (flags & 32) { @@ -24783,7 +25843,7 @@ var ts; else if (flags & 2 || ts.isInAmbientContext(node.parent)) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_be_used_in_an_ambient_context, "async"); } - else if (node.kind === 140) { + else if (node.kind === 141) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_parameter, "async"); } flags |= 256; @@ -24791,7 +25851,7 @@ var ts; break; } } - if (node.kind === 146) { + if (node.kind === 147) { if (flags & 32) { return grammarErrorOnNode(lastStatic, ts.Diagnostics._0_modifier_cannot_appear_on_a_constructor_declaration, "static"); } @@ -24806,10 +25866,10 @@ var ts; } return; } - else if ((node.kind === 226 || node.kind === 225) && flags & 2) { + else if ((node.kind === 229 || node.kind === 228) && flags & 2) { return grammarErrorOnNode(lastDeclare, ts.Diagnostics.A_0_modifier_cannot_be_used_with_an_import_declaration, "declare"); } - else if (node.kind === 140 && (flags & 28) && ts.isBindingPattern(node.name)) { + else if (node.kind === 141 && (flags & 28) && ts.isBindingPattern(node.name)) { return grammarErrorOnNode(node, ts.Diagnostics.A_parameter_property_may_not_be_a_binding_pattern); } if (flags & 256) { @@ -24821,10 +25881,10 @@ var ts; return grammarErrorOnNode(asyncModifier, ts.Diagnostics.Async_functions_are_only_available_when_targeting_ECMAScript_6_and_higher); } switch (node.kind) { - case 145: - case 217: - case 177: + case 146: + case 219: case 178: + case 179: if (!node.asteriskToken) { return false; } @@ -24889,7 +25949,7 @@ var ts; checkGrammarParameterList(node.parameters) || checkGrammarArrowFunction(node, file); } function checkGrammarArrowFunction(node, file) { - if (node.kind === 178) { + if (node.kind === 179) { var arrowFunction = node; var startLine = ts.getLineAndCharacterOfPosition(file, arrowFunction.equalsGreaterThanToken.pos).line; var endLine = ts.getLineAndCharacterOfPosition(file, arrowFunction.equalsGreaterThanToken.end).line; @@ -24951,7 +26011,7 @@ var ts; var sourceFile = ts.getSourceFileOfNode(node); for (var _i = 0, args_1 = args; _i < args_1.length; _i++) { var arg = args_1[_i]; - if (arg.kind === 191) { + if (arg.kind === 192) { return grammarErrorAtPos(sourceFile, arg.pos, 0, ts.Diagnostics.Argument_expression_expected); } } @@ -25022,19 +26082,19 @@ var ts; return false; } function checkGrammarComputedPropertyName(node) { - if (node.kind !== 138) { + if (node.kind !== 139) { return false; } var computedPropertyName = node; - if (computedPropertyName.expression.kind === 185 && computedPropertyName.expression.operatorToken.kind === 24) { + if (computedPropertyName.expression.kind === 186 && computedPropertyName.expression.operatorToken.kind === 24) { return grammarErrorOnNode(computedPropertyName.expression, ts.Diagnostics.A_comma_expression_is_not_allowed_in_a_computed_property_name); } } function checkGrammarForGenerator(node) { if (node.asteriskToken) { - ts.Debug.assert(node.kind === 217 || - node.kind === 177 || - node.kind === 145); + ts.Debug.assert(node.kind === 219 || + node.kind === 178 || + node.kind === 146); if (ts.isInAmbientContext(node)) { return grammarErrorOnNode(node.asteriskToken, ts.Diagnostics.Generators_are_not_allowed_in_an_ambient_context); } @@ -25058,58 +26118,58 @@ var ts; var SetAccessor = 4; var GetOrSetAccessor = GetAccessor | SetAccessor; var _loop_1 = function(prop) { - var name_18 = prop.name; - if (prop.kind === 191 || - name_18.kind === 138) { - checkGrammarComputedPropertyName(name_18); + var name_20 = prop.name; + if (prop.kind === 192 || + name_20.kind === 139) { + checkGrammarComputedPropertyName(name_20); return "continue"; } - if (prop.kind === 250 && !inDestructuring && prop.objectAssignmentInitializer) { + if (prop.kind === 253 && !inDestructuring && prop.objectAssignmentInitializer) { return { value: grammarErrorOnNode(prop.equalsToken, ts.Diagnostics.can_only_be_used_in_an_object_literal_property_inside_a_destructuring_assignment) }; } ts.forEach(prop.modifiers, function (mod) { - if (mod.kind !== 118 || prop.kind !== 145) { + if (mod.kind !== 118 || prop.kind !== 146) { grammarErrorOnNode(mod, ts.Diagnostics._0_modifier_cannot_be_used_here, ts.getTextOfNode(mod)); } }); var currentKind = void 0; - if (prop.kind === 249 || prop.kind === 250) { + if (prop.kind === 252 || prop.kind === 253) { checkGrammarForInvalidQuestionMark(prop, prop.questionToken, ts.Diagnostics.An_object_member_cannot_be_declared_optional); - if (name_18.kind === 8) { - checkGrammarNumericLiteral(name_18); + if (name_20.kind === 8) { + checkGrammarNumericLiteral(name_20); } currentKind = Property; } - else if (prop.kind === 145) { + else if (prop.kind === 146) { currentKind = Property; } - else if (prop.kind === 147) { + else if (prop.kind === 148) { currentKind = GetAccessor; } - else if (prop.kind === 148) { + else if (prop.kind === 149) { currentKind = SetAccessor; } else { ts.Debug.fail("Unexpected syntax kind:" + prop.kind); } - if (!ts.hasProperty(seen, name_18.text)) { - seen[name_18.text] = currentKind; + if (!ts.hasProperty(seen, name_20.text)) { + seen[name_20.text] = currentKind; } else { - var existingKind = seen[name_18.text]; + var existingKind = seen[name_20.text]; if (currentKind === Property && existingKind === Property) { return "continue"; } else if ((currentKind & GetOrSetAccessor) && (existingKind & GetOrSetAccessor)) { if (existingKind !== GetOrSetAccessor && currentKind !== existingKind) { - seen[name_18.text] = currentKind | existingKind; + seen[name_20.text] = currentKind | existingKind; } else { - return { value: grammarErrorOnNode(name_18, ts.Diagnostics.An_object_literal_cannot_have_multiple_get_Slashset_accessors_with_the_same_name) }; + return { value: grammarErrorOnNode(name_20, ts.Diagnostics.An_object_literal_cannot_have_multiple_get_Slashset_accessors_with_the_same_name) }; } } else { - return { value: grammarErrorOnNode(name_18, ts.Diagnostics.An_object_literal_cannot_have_property_and_accessor_with_the_same_name) }; + return { value: grammarErrorOnNode(name_20, ts.Diagnostics.An_object_literal_cannot_have_property_and_accessor_with_the_same_name) }; } } }; @@ -25117,26 +26177,25 @@ var ts; var prop = _a[_i]; var state_2 = _loop_1(prop); if (typeof state_2 === "object") return state_2.value; - if (state_2 === "continue") continue; } } function checkGrammarJsxElement(node) { var seen = {}; for (var _i = 0, _a = node.attributes; _i < _a.length; _i++) { var attr = _a[_i]; - if (attr.kind === 243) { + if (attr.kind === 246) { continue; } var jsxAttr = attr; - var name_19 = jsxAttr.name; - if (!ts.hasProperty(seen, name_19.text)) { - seen[name_19.text] = true; + var name_21 = jsxAttr.name; + if (!ts.hasProperty(seen, name_21.text)) { + seen[name_21.text] = true; } else { - return grammarErrorOnNode(name_19, ts.Diagnostics.JSX_elements_cannot_have_multiple_attributes_with_the_same_name); + return grammarErrorOnNode(name_21, ts.Diagnostics.JSX_elements_cannot_have_multiple_attributes_with_the_same_name); } var initializer = jsxAttr.initializer; - if (initializer && initializer.kind === 244 && !initializer.expression) { + if (initializer && initializer.kind === 247 && !initializer.expression) { return grammarErrorOnNode(jsxAttr.initializer, ts.Diagnostics.JSX_attributes_must_only_be_assigned_a_non_empty_expression); } } @@ -25145,7 +26204,7 @@ var ts; if (checkGrammarStatementInAmbientContext(forInOrOfStatement)) { return true; } - if (forInOrOfStatement.initializer.kind === 216) { + if (forInOrOfStatement.initializer.kind === 218) { var variableList = forInOrOfStatement.initializer; if (!checkGrammarVariableDeclarationList(variableList)) { var declarations = variableList.declarations; @@ -25153,20 +26212,20 @@ var ts; return false; } if (declarations.length > 1) { - var diagnostic = forInOrOfStatement.kind === 204 + var diagnostic = forInOrOfStatement.kind === 206 ? ts.Diagnostics.Only_a_single_variable_declaration_is_allowed_in_a_for_in_statement : ts.Diagnostics.Only_a_single_variable_declaration_is_allowed_in_a_for_of_statement; return grammarErrorOnFirstToken(variableList.declarations[1], diagnostic); } var firstDeclaration = declarations[0]; if (firstDeclaration.initializer) { - var diagnostic = forInOrOfStatement.kind === 204 + var diagnostic = forInOrOfStatement.kind === 206 ? ts.Diagnostics.The_variable_declaration_of_a_for_in_statement_cannot_have_an_initializer : ts.Diagnostics.The_variable_declaration_of_a_for_of_statement_cannot_have_an_initializer; return grammarErrorOnNode(firstDeclaration.name, diagnostic); } if (firstDeclaration.type) { - var diagnostic = forInOrOfStatement.kind === 204 + var diagnostic = forInOrOfStatement.kind === 206 ? ts.Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_use_a_type_annotation : ts.Diagnostics.The_left_hand_side_of_a_for_of_statement_cannot_use_a_type_annotation; return grammarErrorOnNode(firstDeclaration, diagnostic); @@ -25189,10 +26248,10 @@ var ts; else if (accessor.typeParameters) { return grammarErrorOnNode(accessor.name, ts.Diagnostics.An_accessor_cannot_have_type_parameters); } - else if (kind === 147 && accessor.parameters.length) { + else if (kind === 148 && accessor.parameters.length) { return grammarErrorOnNode(accessor.name, ts.Diagnostics.A_get_accessor_cannot_have_parameters); } - else if (kind === 148) { + else if (kind === 149) { if (accessor.type) { return grammarErrorOnNode(accessor.name, ts.Diagnostics.A_set_accessor_cannot_have_a_return_type_annotation); } @@ -25227,7 +26286,7 @@ var ts; checkGrammarForGenerator(node)) { return true; } - if (node.parent.kind === 169) { + if (node.parent.kind === 170) { if (checkGrammarForInvalidQuestionMark(node, node.questionToken, ts.Diagnostics.A_class_member_cannot_be_declared_optional)) { return true; } @@ -25246,10 +26305,10 @@ var ts; return checkGrammarForNonSymbolComputedProperty(node.name, ts.Diagnostics.A_computed_property_name_in_a_method_overload_must_directly_refer_to_a_built_in_symbol); } } - else if (node.parent.kind === 219) { + else if (node.parent.kind === 221) { return checkGrammarForNonSymbolComputedProperty(node.name, ts.Diagnostics.A_computed_property_name_in_an_interface_must_directly_refer_to_a_built_in_symbol); } - else if (node.parent.kind === 157) { + else if (node.parent.kind === 158) { return checkGrammarForNonSymbolComputedProperty(node.name, ts.Diagnostics.A_computed_property_name_in_a_type_literal_must_directly_refer_to_a_built_in_symbol); } } @@ -25260,9 +26319,9 @@ var ts; return grammarErrorOnNode(node, ts.Diagnostics.Jump_target_cannot_cross_function_boundary); } switch (current.kind) { - case 211: + case 213: if (node.label && current.label.text === node.label.text) { - var isMisplacedContinueLabel = node.kind === 206 + var isMisplacedContinueLabel = node.kind === 208 && !ts.isIterationStatement(current.statement, true); if (isMisplacedContinueLabel) { return grammarErrorOnNode(node, ts.Diagnostics.A_continue_statement_can_only_jump_to_a_label_of_an_enclosing_iteration_statement); @@ -25270,8 +26329,8 @@ var ts; return false; } break; - case 210: - if (node.kind === 207 && !node.label) { + case 212: + if (node.kind === 209 && !node.label) { return false; } break; @@ -25284,13 +26343,13 @@ var ts; current = current.parent; } if (node.label) { - var message = node.kind === 207 + var message = node.kind === 209 ? ts.Diagnostics.A_break_statement_can_only_jump_to_a_label_of_an_enclosing_statement : ts.Diagnostics.A_continue_statement_can_only_jump_to_a_label_of_an_enclosing_iteration_statement; return grammarErrorOnNode(node, message); } else { - var message = node.kind === 207 + var message = node.kind === 209 ? ts.Diagnostics.A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement : ts.Diagnostics.A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement; return grammarErrorOnNode(node, message); @@ -25302,7 +26361,7 @@ var ts; if (node !== ts.lastOrUndefined(elements)) { return grammarErrorOnNode(node, ts.Diagnostics.A_rest_element_must_be_last_in_an_array_destructuring_pattern); } - if (node.name.kind === 166 || node.name.kind === 165) { + if (node.name.kind === 167 || node.name.kind === 166) { return grammarErrorOnNode(node.name, ts.Diagnostics.A_rest_element_cannot_contain_a_binding_pattern); } if (node.initializer) { @@ -25311,7 +26370,7 @@ var ts; } } function checkGrammarVariableDeclaration(node) { - if (node.parent.parent.kind !== 204 && node.parent.parent.kind !== 205) { + if (node.parent.parent.kind !== 206 && node.parent.parent.kind !== 207) { if (ts.isInAmbientContext(node)) { if (node.initializer) { var equalsTokenLength = "=".length; @@ -25340,7 +26399,7 @@ var ts; var elements = name.elements; for (var _i = 0, elements_2 = elements; _i < elements_2.length; _i++) { var element = elements_2[_i]; - if (element.kind !== 191) { + if (element.kind !== 192) { checkGrammarNameInLetOrConstDeclarations(element.name); } } @@ -25357,15 +26416,15 @@ var ts; } function allowLetAndConstDeclarations(parent) { switch (parent.kind) { - case 200: - case 201: case 202: - case 209: case 203: case 204: - case 205: - return false; case 211: + case 205: + case 206: + case 207: + return false; + case 213: return allowLetAndConstDeclarations(parent.parent); } return true; @@ -25421,7 +26480,7 @@ var ts; return true; } } - else if (node.parent.kind === 219) { + else if (node.parent.kind === 221) { if (checkGrammarForNonSymbolComputedProperty(node.name, ts.Diagnostics.A_computed_property_name_in_an_interface_must_directly_refer_to_a_built_in_symbol)) { return true; } @@ -25429,7 +26488,7 @@ var ts; return grammarErrorOnNode(node.initializer, ts.Diagnostics.An_interface_property_cannot_have_an_initializer); } } - else if (node.parent.kind === 157) { + else if (node.parent.kind === 158) { if (checkGrammarForNonSymbolComputedProperty(node.name, ts.Diagnostics.A_computed_property_name_in_a_type_literal_must_directly_refer_to_a_built_in_symbol)) { return true; } @@ -25442,12 +26501,12 @@ var ts; } } function checkGrammarTopLevelElementForRequiredDeclareModifier(node) { - if (node.kind === 219 || - node.kind === 220 || - node.kind === 226 || - node.kind === 225 || - node.kind === 232 || - node.kind === 231 || + if (node.kind === 221 || + node.kind === 222 || + node.kind === 229 || + node.kind === 228 || + node.kind === 235 || + node.kind === 234 || (node.flags & 2) || (node.flags & (1 | 512))) { return false; @@ -25457,7 +26516,7 @@ var ts; function checkGrammarTopLevelElementsForRequiredDeclareModifier(file) { for (var _i = 0, _a = file.statements; _i < _a.length; _i++) { var decl = _a[_i]; - if (ts.isDeclaration(decl) || decl.kind === 197) { + if (ts.isDeclaration(decl) || decl.kind === 199) { if (checkGrammarTopLevelElementForRequiredDeclareModifier(decl)) { return true; } @@ -25476,7 +26535,7 @@ var ts; if (!links.hasReportedStatementInAmbientContext && ts.isFunctionLike(node.parent)) { return getNodeLinks(node).hasReportedStatementInAmbientContext = grammarErrorOnFirstToken(node, ts.Diagnostics.An_implementation_cannot_be_declared_in_ambient_contexts); } - if (node.parent.kind === 196 || node.parent.kind === 223 || node.parent.kind === 252) { + if (node.parent.kind === 198 || node.parent.kind === 225 || node.parent.kind === 255) { var links_1 = getNodeLinks(node.parent); if (!links_1.hasReportedStatementInAmbientContext) { return links_1.hasReportedStatementInAmbientContext = grammarErrorOnFirstToken(node, ts.Diagnostics.Statements_are_not_allowed_in_ambient_contexts); @@ -25772,7 +26831,7 @@ var ts; function getDeclarationDiagnostics(host, resolver, targetSourceFile) { var declarationDiagnostics = ts.createDiagnosticCollection(); ts.forEachExpectedEmitFile(host, getDeclarationDiagnosticsFromFile, targetSourceFile); - return declarationDiagnostics.getDiagnostics(targetSourceFile.fileName); + return declarationDiagnostics.getDiagnostics(targetSourceFile ? targetSourceFile.fileName : undefined); function getDeclarationDiagnosticsFromFile(_a, sources, isBundledEmit) { var declarationFilePath = _a.declarationFilePath; emitDeclarations(host, resolver, declarationDiagnostics, declarationFilePath, sources, isBundledEmit); @@ -25840,7 +26899,7 @@ var ts; var oldWriter = writer; ts.forEach(moduleElementDeclarationEmitInfo, function (aliasEmitInfo) { if (aliasEmitInfo.isVisible && !aliasEmitInfo.asynchronousOutput) { - ts.Debug.assert(aliasEmitInfo.node.kind === 226); + ts.Debug.assert(aliasEmitInfo.node.kind === 229); createAndSetNewTextWriterWithSymbolWriter(); ts.Debug.assert(aliasEmitInfo.indent === 0 || (aliasEmitInfo.indent === 1 && isBundledEmit)); for (var i = 0; i < aliasEmitInfo.indent; i++) { @@ -25906,10 +26965,10 @@ var ts; var oldWriter = writer; ts.forEach(nodes, function (declaration) { var nodeToCheck; - if (declaration.kind === 215) { + if (declaration.kind === 217) { nodeToCheck = declaration.parent.parent; } - else if (declaration.kind === 229 || declaration.kind === 230 || declaration.kind === 227) { + else if (declaration.kind === 232 || declaration.kind === 233 || declaration.kind === 230) { ts.Debug.fail("We should be getting ImportDeclaration instead to write"); } else { @@ -25920,7 +26979,7 @@ var ts; moduleElementEmitInfo = ts.forEach(asynchronousSubModuleDeclarationEmitInfo, function (declEmitInfo) { return declEmitInfo.node === nodeToCheck ? declEmitInfo : undefined; }); } if (moduleElementEmitInfo) { - if (moduleElementEmitInfo.node.kind === 226) { + if (moduleElementEmitInfo.node.kind === 229) { moduleElementEmitInfo.isVisible = true; } else { @@ -25928,12 +26987,12 @@ var ts; for (var declarationIndent = moduleElementEmitInfo.indent; declarationIndent; declarationIndent--) { increaseIndent(); } - if (nodeToCheck.kind === 222) { + if (nodeToCheck.kind === 224) { ts.Debug.assert(asynchronousSubModuleDeclarationEmitInfo === undefined); asynchronousSubModuleDeclarationEmitInfo = []; } writeModuleElement(nodeToCheck); - if (nodeToCheck.kind === 222) { + if (nodeToCheck.kind === 224) { moduleElementEmitInfo.subModuleElementDeclarationEmitInfo = asynchronousSubModuleDeclarationEmitInfo; asynchronousSubModuleDeclarationEmitInfo = undefined; } @@ -26036,35 +27095,37 @@ var ts; case 120: case 132: case 103: - case 163: + case 134: + case 93: case 164: + case 165: return writeTextOfNode(currentText, type); - case 192: + case 193: return emitExpressionWithTypeArguments(type); - case 153: - return emitTypeReference(type); - case 156: - return emitTypeQuery(type); - case 158: - return emitArrayType(type); - case 159: - return emitTupleType(type); - case 160: - return emitUnionType(type); - case 161: - return emitIntersectionType(type); - case 162: - return emitParenType(type); case 154: - case 155: - return emitSignatureDeclarationWithJsDocComments(type); + return emitTypeReference(type); case 157: + return emitTypeQuery(type); + case 159: + return emitArrayType(type); + case 160: + return emitTupleType(type); + case 161: + return emitUnionType(type); + case 162: + return emitIntersectionType(type); + case 163: + return emitParenType(type); + case 155: + case 156: + return emitSignatureDeclarationWithJsDocComments(type); + case 158: return emitTypeLiteral(type); case 69: return emitEntityName(type); - case 137: + case 138: return emitEntityName(type); - case 152: + case 153: return emitTypePredicate(type); } function writeEntityName(entityName) { @@ -26072,21 +27133,21 @@ var ts; writeTextOfNode(currentText, entityName); } else { - var left = entityName.kind === 137 ? entityName.left : entityName.expression; - var right = entityName.kind === 137 ? entityName.right : entityName.name; + var left = entityName.kind === 138 ? entityName.left : entityName.expression; + var right = entityName.kind === 138 ? entityName.right : entityName.name; writeEntityName(left); write("."); writeTextOfNode(currentText, right); } } function emitEntityName(entityName) { - var visibilityResult = resolver.isEntityNameVisible(entityName, entityName.parent.kind === 225 ? entityName.parent : enclosingDeclaration); + var visibilityResult = resolver.isEntityNameVisible(entityName, entityName.parent.kind === 228 ? entityName.parent : enclosingDeclaration); handleSymbolAccessibilityError(visibilityResult); writeEntityName(entityName); } function emitExpressionWithTypeArguments(node) { if (ts.isSupportedExpressionWithTypeArguments(node)) { - ts.Debug.assert(node.expression.kind === 69 || node.expression.kind === 170); + ts.Debug.assert(node.expression.kind === 69 || node.expression.kind === 171); emitEntityName(node.expression); if (node.typeArguments) { write("<"); @@ -26160,9 +27221,9 @@ var ts; var count = 0; while (true) { count++; - var name_20 = baseName + "_" + count; - if (!ts.hasProperty(currentIdentifiers, name_20)) { - return name_20; + var name_22 = baseName + "_" + count; + if (!ts.hasProperty(currentIdentifiers, name_22)) { + return name_22; } } } @@ -26173,7 +27234,10 @@ var ts; } else { var tempVarName = getExportDefaultTempVariableName(); - write("declare var "); + if (!noDeclare) { + write("declare "); + } + write("var "); write(tempVarName); write(": "); writer.getSymbolAccessibilityDiagnostic = getDefaultExportAccessibilityDiagnostic; @@ -26203,10 +27267,10 @@ var ts; if (isModuleElementVisible) { writeModuleElement(node); } - else if (node.kind === 225 || - (node.parent.kind === 252 && isCurrentFileExternalModule)) { + else if (node.kind === 228 || + (node.parent.kind === 255 && isCurrentFileExternalModule)) { var isVisible = void 0; - if (asynchronousSubModuleDeclarationEmitInfo && node.parent.kind !== 252) { + if (asynchronousSubModuleDeclarationEmitInfo && node.parent.kind !== 255) { asynchronousSubModuleDeclarationEmitInfo.push({ node: node, outputPos: writer.getTextPos(), @@ -26215,7 +27279,7 @@ var ts; }); } else { - if (node.kind === 226) { + if (node.kind === 229) { var importDeclaration = node; if (importDeclaration.importClause) { isVisible = (importDeclaration.importClause.name && resolver.isDeclarationVisible(importDeclaration.importClause)) || @@ -26233,37 +27297,37 @@ var ts; } function writeModuleElement(node) { switch (node.kind) { - case 217: - return writeFunctionDeclaration(node); - case 197: - return writeVariableStatement(node); case 219: - return writeInterfaceDeclaration(node); - case 218: - return writeClassDeclaration(node); - case 220: - return writeTypeAliasDeclaration(node); + return writeFunctionDeclaration(node); + case 199: + return writeVariableStatement(node); case 221: - return writeEnumDeclaration(node); + return writeInterfaceDeclaration(node); + case 220: + return writeClassDeclaration(node); case 222: + return writeTypeAliasDeclaration(node); + case 223: + return writeEnumDeclaration(node); + case 224: return writeModuleDeclaration(node); - case 225: + case 228: return writeImportEqualsDeclaration(node); - case 226: + case 229: return writeImportDeclaration(node); default: ts.Debug.fail("Unknown symbol kind"); } } function emitModuleElementDeclarationFlags(node) { - if (node.parent.kind === 252) { + if (node.parent.kind === 255) { if (node.flags & 1) { write("export "); } if (node.flags & 512) { write("default "); } - else if (node.kind !== 219 && !noDeclare) { + else if (node.kind !== 221 && !noDeclare) { write("declare "); } } @@ -26313,7 +27377,7 @@ var ts; } function isVisibleNamedBinding(namedBindings) { if (namedBindings) { - if (namedBindings.kind === 228) { + if (namedBindings.kind === 231) { return resolver.isDeclarationVisible(namedBindings); } else { @@ -26336,7 +27400,7 @@ var ts; if (currentWriterPos !== writer.getTextPos()) { write(", "); } - if (node.importClause.namedBindings.kind === 228) { + if (node.importClause.namedBindings.kind === 231) { write("* as "); writeTextOfNode(currentText, node.importClause.namedBindings.name); } @@ -26353,13 +27417,13 @@ var ts; writer.writeLine(); } function emitExternalModuleSpecifier(parent) { - resultHasExternalModuleIndicator = resultHasExternalModuleIndicator || parent.kind !== 222; + resultHasExternalModuleIndicator = resultHasExternalModuleIndicator || parent.kind !== 224; var moduleSpecifier; - if (parent.kind === 225) { + if (parent.kind === 228) { var node = parent; moduleSpecifier = ts.getExternalModuleImportEqualsDeclarationExpression(node); } - else if (parent.kind === 222) { + else if (parent.kind === 224) { moduleSpecifier = parent.name; } else { @@ -26369,9 +27433,9 @@ var ts; if (moduleSpecifier.kind === 9 && isBundledEmit && (compilerOptions.out || compilerOptions.outFile)) { var moduleName = ts.getExternalModuleNameFromDeclaration(host, resolver, parent); if (moduleName) { - write("\""); + write('"'); write(moduleName); - write("\""); + write('"'); return; } } @@ -26427,7 +27491,7 @@ var ts; writeTextOfNode(currentText, node.name); } } - while (node.body.kind !== 223) { + while (node.body.kind !== 225) { node = node.body; write("."); writeTextOfNode(currentText, node.name); @@ -26492,7 +27556,7 @@ var ts; writeLine(); } function isPrivateMethodTypeParameter(node) { - return node.parent.kind === 145 && (node.parent.flags & 8); + return node.parent.kind === 146 && (node.parent.flags & 8); } function emitTypeParameters(typeParameters) { function emitTypeParameter(node) { @@ -26502,15 +27566,15 @@ var ts; writeTextOfNode(currentText, node.name); if (node.constraint && !isPrivateMethodTypeParameter(node)) { write(" extends "); - if (node.parent.kind === 154 || - node.parent.kind === 155 || - (node.parent.parent && node.parent.parent.kind === 157)) { - ts.Debug.assert(node.parent.kind === 145 || - node.parent.kind === 144 || - node.parent.kind === 154 || + if (node.parent.kind === 155 || + node.parent.kind === 156 || + (node.parent.parent && node.parent.parent.kind === 158)) { + ts.Debug.assert(node.parent.kind === 146 || + node.parent.kind === 145 || node.parent.kind === 155 || - node.parent.kind === 149 || - node.parent.kind === 150); + node.parent.kind === 156 || + node.parent.kind === 150 || + node.parent.kind === 151); emitType(node.constraint); } else { @@ -26520,31 +27584,31 @@ var ts; function getTypeParameterConstraintVisibilityError(symbolAccessibilityResult) { var diagnosticMessage; switch (node.parent.kind) { - case 218: + case 220: diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_exported_class_has_or_is_using_private_name_1; break; - case 219: + case 221: diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_exported_interface_has_or_is_using_private_name_1; break; - case 150: + case 151: diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_1; break; - case 149: + case 150: diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_name_1; break; + case 146: case 145: - case 144: if (node.parent.flags & 32) { diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1; } - else if (node.parent.parent.kind === 218) { + else if (node.parent.parent.kind === 220) { diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_public_method_from_exported_class_has_or_is_using_private_name_1; } else { diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1; } break; - case 217: + case 219: diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_exported_function_has_or_is_using_private_name_1; break; default: @@ -26575,9 +27639,13 @@ var ts; else if (!isImplementsList && node.expression.kind === 93) { write("null"); } + else { + writer.getSymbolAccessibilityDiagnostic = getHeritageClauseVisibilityError; + resolver.writeBaseConstructorTypeOfClass(enclosingDeclaration, enclosingDeclaration, 2, writer); + } function getHeritageClauseVisibilityError(symbolAccessibilityResult) { var diagnosticMessage; - if (node.parent.parent.kind === 218) { + if (node.parent.parent.kind === 220) { diagnosticMessage = isImplementsList ? ts.Diagnostics.Implements_clause_of_exported_class_0_has_or_is_using_private_name_1 : ts.Diagnostics.Extends_clause_of_exported_class_0_has_or_is_using_private_name_1; @@ -26657,16 +27725,16 @@ var ts; writeLine(); } function emitVariableDeclaration(node) { - if (node.kind !== 215 || resolver.isDeclarationVisible(node)) { + if (node.kind !== 217 || resolver.isDeclarationVisible(node)) { if (ts.isBindingPattern(node.name)) { emitBindingPattern(node.name); } else { writeTextOfNode(currentText, node.name); - if ((node.kind === 143 || node.kind === 142) && ts.hasQuestionToken(node)) { + if ((node.kind === 144 || node.kind === 143) && ts.hasQuestionToken(node)) { write("?"); } - if ((node.kind === 143 || node.kind === 142) && node.parent.kind === 157) { + if ((node.kind === 144 || node.kind === 143) && node.parent.kind === 158) { emitTypeOfVariableDeclarationFromTypeLiteral(node); } else if (!(node.flags & 8)) { @@ -26675,14 +27743,14 @@ var ts; } } function getVariableDeclarationTypeVisibilityDiagnosticMessage(symbolAccessibilityResult) { - if (node.kind === 215) { + if (node.kind === 217) { return symbolAccessibilityResult.errorModuleName ? symbolAccessibilityResult.accessibility === 2 ? ts.Diagnostics.Exported_variable_0_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : ts.Diagnostics.Exported_variable_0_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Exported_variable_0_has_or_is_using_private_name_1; } - else if (node.kind === 143 || node.kind === 142) { + else if (node.kind === 144 || node.kind === 143) { if (node.flags & 32) { return symbolAccessibilityResult.errorModuleName ? symbolAccessibilityResult.accessibility === 2 ? @@ -26690,7 +27758,7 @@ var ts; ts.Diagnostics.Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Public_static_property_0_of_exported_class_has_or_is_using_private_name_1; } - else if (node.parent.kind === 218) { + else if (node.parent.kind === 220) { return symbolAccessibilityResult.errorModuleName ? symbolAccessibilityResult.accessibility === 2 ? ts.Diagnostics.Public_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : @@ -26716,7 +27784,7 @@ var ts; var elements = []; for (var _i = 0, _a = bindingPattern.elements; _i < _a.length; _i++) { var element = _a[_i]; - if (element.kind !== 191) { + if (element.kind !== 192) { elements.push(element); } } @@ -26782,7 +27850,7 @@ var ts; accessorWithTypeAnnotation = node; var type = getTypeAnnotationFromAccessor(node); if (!type) { - var anotherAccessor = node.kind === 147 ? accessors.setAccessor : accessors.getAccessor; + var anotherAccessor = node.kind === 148 ? accessors.setAccessor : accessors.getAccessor; type = getTypeAnnotationFromAccessor(anotherAccessor); if (type) { accessorWithTypeAnnotation = anotherAccessor; @@ -26795,7 +27863,7 @@ var ts; } function getTypeAnnotationFromAccessor(accessor) { if (accessor) { - return accessor.kind === 147 + return accessor.kind === 148 ? accessor.type : accessor.parameters.length > 0 ? accessor.parameters[0].type @@ -26804,7 +27872,7 @@ var ts; } function getAccessorDeclarationTypeVisibilityError(symbolAccessibilityResult) { var diagnosticMessage; - if (accessorWithTypeAnnotation.kind === 148) { + if (accessorWithTypeAnnotation.kind === 149) { if (accessorWithTypeAnnotation.parent.flags & 32) { diagnosticMessage = symbolAccessibilityResult.errorModuleName ? ts.Diagnostics.Parameter_0_of_public_static_property_setter_from_exported_class_has_or_is_using_name_1_from_private_module_2 : @@ -26850,17 +27918,17 @@ var ts; } if (!resolver.isImplementationOfOverload(node)) { emitJsDocComments(node); - if (node.kind === 217) { + if (node.kind === 219) { emitModuleElementDeclarationFlags(node); } - else if (node.kind === 145 || node.kind === 146) { + else if (node.kind === 146 || node.kind === 147) { emitClassMemberDeclarationFlags(node.flags); } - if (node.kind === 217) { + if (node.kind === 219) { write("function "); writeTextOfNode(currentText, node.name); } - else if (node.kind === 146) { + else if (node.kind === 147) { write("constructor"); } else { @@ -26879,32 +27947,32 @@ var ts; function emitSignatureDeclaration(node) { var prevEnclosingDeclaration = enclosingDeclaration; enclosingDeclaration = node; - if (node.kind === 151) { + if (node.kind === 152) { emitClassMemberDeclarationFlags(node.flags); write("["); } else { - if (node.kind === 150 || node.kind === 155) { + if (node.kind === 151 || node.kind === 156) { write("new "); } emitTypeParameters(node.typeParameters); write("("); } emitCommaList(node.parameters, emitParameterDeclaration); - if (node.kind === 151) { + if (node.kind === 152) { write("]"); } else { write(")"); } - var isFunctionTypeOrConstructorType = node.kind === 154 || node.kind === 155; - if (isFunctionTypeOrConstructorType || node.parent.kind === 157) { + var isFunctionTypeOrConstructorType = node.kind === 155 || node.kind === 156; + if (isFunctionTypeOrConstructorType || node.parent.kind === 158) { if (node.type) { write(isFunctionTypeOrConstructorType ? " => " : ": "); emitType(node.type); } } - else if (node.kind !== 146 && !(node.flags & 8)) { + else if (node.kind !== 147 && !(node.flags & 8)) { writeReturnTypeAtSignature(node, getReturnTypeVisibilityError); } enclosingDeclaration = prevEnclosingDeclaration; @@ -26915,23 +27983,23 @@ var ts; function getReturnTypeVisibilityError(symbolAccessibilityResult) { var diagnosticMessage; switch (node.kind) { - case 150: + case 151: diagnosticMessage = symbolAccessibilityResult.errorModuleName ? ts.Diagnostics.Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1 : ts.Diagnostics.Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_0; break; - case 149: + case 150: diagnosticMessage = symbolAccessibilityResult.errorModuleName ? ts.Diagnostics.Return_type_of_call_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1 : ts.Diagnostics.Return_type_of_call_signature_from_exported_interface_has_or_is_using_private_name_0; break; - case 151: + case 152: diagnosticMessage = symbolAccessibilityResult.errorModuleName ? ts.Diagnostics.Return_type_of_index_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1 : ts.Diagnostics.Return_type_of_index_signature_from_exported_interface_has_or_is_using_private_name_0; break; + case 146: case 145: - case 144: if (node.flags & 32) { diagnosticMessage = symbolAccessibilityResult.errorModuleName ? symbolAccessibilityResult.accessibility === 2 ? @@ -26939,7 +28007,7 @@ var ts; ts.Diagnostics.Return_type_of_public_static_method_from_exported_class_has_or_is_using_name_0_from_private_module_1 : ts.Diagnostics.Return_type_of_public_static_method_from_exported_class_has_or_is_using_private_name_0; } - else if (node.parent.kind === 218) { + else if (node.parent.kind === 220) { diagnosticMessage = symbolAccessibilityResult.errorModuleName ? symbolAccessibilityResult.accessibility === 2 ? ts.Diagnostics.Return_type_of_public_method_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named : @@ -26952,7 +28020,7 @@ var ts; ts.Diagnostics.Return_type_of_method_from_exported_interface_has_or_is_using_private_name_0; } break; - case 217: + case 219: diagnosticMessage = symbolAccessibilityResult.errorModuleName ? symbolAccessibilityResult.accessibility === 2 ? ts.Diagnostics.Return_type_of_exported_function_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named : @@ -26984,9 +28052,9 @@ var ts; write("?"); } decreaseIndent(); - if (node.parent.kind === 154 || - node.parent.kind === 155 || - node.parent.parent.kind === 157) { + if (node.parent.kind === 155 || + node.parent.kind === 156 || + node.parent.parent.kind === 158) { emitTypeOfVariableDeclarationFromTypeLiteral(node); } else if (!(node.parent.flags & 8)) { @@ -27002,22 +28070,22 @@ var ts; } function getParameterDeclarationTypeVisibilityDiagnosticMessage(symbolAccessibilityResult) { switch (node.parent.kind) { - case 146: + case 147: return symbolAccessibilityResult.errorModuleName ? symbolAccessibilityResult.accessibility === 2 ? ts.Diagnostics.Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : ts.Diagnostics.Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Parameter_0_of_constructor_from_exported_class_has_or_is_using_private_name_1; - case 150: + case 151: return symbolAccessibilityResult.errorModuleName ? ts.Diagnostics.Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_1; - case 149: + case 150: return symbolAccessibilityResult.errorModuleName ? ts.Diagnostics.Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_name_1; + case 146: case 145: - case 144: if (node.parent.flags & 32) { return symbolAccessibilityResult.errorModuleName ? symbolAccessibilityResult.accessibility === 2 ? @@ -27025,7 +28093,7 @@ var ts; ts.Diagnostics.Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1; } - else if (node.parent.parent.kind === 218) { + else if (node.parent.parent.kind === 220) { return symbolAccessibilityResult.errorModuleName ? symbolAccessibilityResult.accessibility === 2 ? ts.Diagnostics.Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : @@ -27037,7 +28105,7 @@ var ts; ts.Diagnostics.Parameter_0_of_method_from_exported_interface_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1; } - case 217: + case 219: return symbolAccessibilityResult.errorModuleName ? symbolAccessibilityResult.accessibility === 2 ? ts.Diagnostics.Parameter_0_of_exported_function_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : @@ -27048,12 +28116,12 @@ var ts; } } function emitBindingPattern(bindingPattern) { - if (bindingPattern.kind === 165) { + if (bindingPattern.kind === 166) { write("{"); emitCommaList(bindingPattern.elements, emitBindingElement); write("}"); } - else if (bindingPattern.kind === 166) { + else if (bindingPattern.kind === 167) { write("["); var elements = bindingPattern.elements; emitCommaList(elements, emitBindingElement); @@ -27064,10 +28132,10 @@ var ts; } } function emitBindingElement(bindingElement) { - if (bindingElement.kind === 191) { + if (bindingElement.kind === 192) { write(" "); } - else if (bindingElement.kind === 167) { + else if (bindingElement.kind === 168) { if (bindingElement.propertyName) { writeTextOfNode(currentText, bindingElement.propertyName); write(": "); @@ -27089,39 +28157,39 @@ var ts; } function emitNode(node) { switch (node.kind) { - case 217: - case 222: - case 225: case 219: - case 218: - case 220: + case 224: + case 228: case 221: + case 220: + case 222: + case 223: return emitModuleElement(node, isModuleElementVisible(node)); - case 197: + case 199: return emitModuleElement(node, isVariableStatementVisible(node)); - case 226: + case 229: return emitModuleElement(node, !node.importClause); - case 232: + case 235: return emitExportDeclaration(node); + case 147: case 146: case 145: - case 144: return writeFunctionDeclaration(node); - case 150: - case 149: case 151: + case 150: + case 152: return emitSignatureDeclarationWithJsDocComments(node); - case 147: case 148: + case 149: return emitAccessorDeclaration(node); + case 144: case 143: - case 142: return emitPropertyDeclaration(node); - case 251: + case 254: return emitEnumMemberDeclaration(node); - case 231: + case 234: return emitExportAssignment(node); - case 252: + case 255: return emitSourceFile(node); } } @@ -27136,7 +28204,7 @@ var ts; } if (declFileName) { declFileName = ts.getRelativePathToDirectoryOrUrl(ts.getDirectoryPath(ts.normalizeSlashes(declarationFilePath)), declFileName, host.getCurrentDirectory(), host.getCanonicalFileName, false); - referencePathsOutput += "/// " + newLine; + referencePathsOutput += '/// ' + newLine; } return addedBundledEmitReference; function getDeclFileName(emitFileNames, sourceFiles, isBundledEmit) { @@ -27445,6 +28513,7 @@ var ts; }; function emitFiles(resolver, host, targetSourceFile) { var extendsHelper = "\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};"; + var assignHelper = "\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n};"; var decorateHelper = "\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};"; var metadataHelper = "\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};"; var paramHelper = "\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};"; @@ -27453,6 +28522,7 @@ var ts; var languageVersion = ts.getEmitScriptTarget(compilerOptions); var modulekind = ts.getEmitModuleKind(compilerOptions); var sourceMapDataList = compilerOptions.sourceMap || compilerOptions.inlineSourceMap ? [] : undefined; + var emittedFilesList = compilerOptions.listEmittedFiles ? [] : undefined; var emitterDiagnostics = ts.createDiagnosticCollection(); var emitSkipped = false; var newLine = host.getNewLine(); @@ -27461,6 +28531,7 @@ var ts; return { emitSkipped: emitSkipped, diagnostics: emitterDiagnostics.getDiagnostics(), + emittedFiles: emittedFilesList, sourceMaps: sourceMapDataList }; function isUniqueLocalName(name, container) { @@ -27524,6 +28595,7 @@ var ts; var decoratedClassAliases; var convertedLoopState; var extendsEmitted; + var assignEmitted; var decorateEmitted; var paramEmitted; var awaiterEmitted; @@ -27571,7 +28643,7 @@ var ts; if (sourceMappingURL) { write("//# sourceMappingURL=" + sourceMappingURL); } - writeEmittedFiles(writer.getText(), jsFilePath, sourceMapFilePath, compilerOptions.emitBOM); + writeEmittedFiles(writer.getText(), jsFilePath, sourceMapFilePath, compilerOptions.emitBOM, sourceFiles); sourceMap.reset(); writer.reset(); currentSourceFile = undefined; @@ -27588,6 +28660,7 @@ var ts; decorateEmitted = false; paramEmitted = false; awaiterEmitted = false; + assignEmitted = false; tempFlags = 0; tempVariables = undefined; tempParameters = undefined; @@ -27621,19 +28694,19 @@ var ts; } function makeTempVariableName(flags) { if (flags && !(tempFlags & flags)) { - var name_21 = flags === 268435456 ? "_i" : "_n"; - if (isUniqueName(name_21)) { + var name_23 = flags === 268435456 ? "_i" : "_n"; + if (isUniqueName(name_23)) { tempFlags |= flags; - return name_21; + return name_23; } } while (true) { var count = tempFlags & 268435455; tempFlags++; if (count !== 8 && count !== 13) { - var name_22 = count < 26 ? "_" + String.fromCharCode(97 + count) : "_" + (count - 26); - if (isUniqueName(name_22)) { - return name_22; + var name_24 = count < 26 ? "_" + String.fromCharCode(97 + count) : "_" + (count - 26); + if (isUniqueName(name_24)) { + return name_24; } } } @@ -27671,17 +28744,17 @@ var ts; switch (node.kind) { case 69: return makeUniqueName(node.text); - case 222: - case 221: + case 224: + case 223: return generateNameForModuleOrEnum(node); - case 226: - case 232: + case 229: + case 235: return generateNameForImportOrExportDeclaration(node); - case 217: - case 218: - case 231: + case 219: + case 220: + case 234: return generateNameForExportDefault(); - case 190: + case 191: return generateNameForClassExpression(); } } @@ -27689,14 +28762,14 @@ var ts; var id = ts.getNodeId(node); return nodeToGeneratedName[id] || (nodeToGeneratedName[id] = ts.unescapeIdentifier(generateNameForNode(node))); } - function writeEmittedFiles(emitOutput, jsFilePath, sourceMapFilePath, writeByteOrderMark) { + function writeEmittedFiles(emitOutput, jsFilePath, sourceMapFilePath, writeByteOrderMark, sourceFiles) { if (compilerOptions.sourceMap && !compilerOptions.inlineSourceMap) { - ts.writeFile(host, emitterDiagnostics, sourceMapFilePath, sourceMap.getText(), false); + ts.writeFile(host, emitterDiagnostics, sourceMapFilePath, sourceMap.getText(), false, sourceFiles); } if (sourceMapDataList) { sourceMapDataList.push(sourceMap.getSourceMapData()); } - ts.writeFile(host, emitterDiagnostics, jsFilePath, emitOutput, writeByteOrderMark); + ts.writeFile(host, emitterDiagnostics, jsFilePath, emitOutput, writeByteOrderMark, sourceFiles); } function createTempVariable(flags) { var result = ts.createSynthesizedNode(69); @@ -27861,14 +28934,14 @@ var ts; } function getLiteralText(node) { if (languageVersion < 2 && (ts.isTemplateLiteralKind(node.kind) || node.hasExtendedUnicodeEscape)) { - return getQuotedEscapedLiteralText("\"", node.text, "\""); + return getQuotedEscapedLiteralText('"', node.text, '"'); } if (node.parent) { return ts.getTextOfNodeFromSourceText(currentText, node); } switch (node.kind) { case 9: - return getQuotedEscapedLiteralText("\"", node.text, "\""); + return getQuotedEscapedLiteralText('"', node.text, '"'); case 11: return getQuotedEscapedLiteralText("`", node.text, "`"); case 12: @@ -27921,10 +28994,10 @@ var ts; emitParenthesizedIf(node.tag, needsParenthesisForPropertyAccessOrInvocation(node.tag)); write("("); emit(tempVariable); - if (node.template.kind === 187) { + if (node.template.kind === 188) { ts.forEach(node.template.templateSpans, function (templateSpan) { write(", "); - var needsParens = templateSpan.expression.kind === 185 + var needsParens = templateSpan.expression.kind === 186 && templateSpan.expression.operatorToken.kind === 24; emitParenthesizedIf(templateSpan.expression, needsParens); }); @@ -27948,7 +29021,7 @@ var ts; } for (var i = 0, n = node.templateSpans.length; i < n; i++) { var templateSpan = node.templateSpans[i]; - var needsParens = templateSpan.expression.kind !== 176 + var needsParens = templateSpan.expression.kind !== 177 && comparePrecedenceToBinaryPlus(templateSpan.expression) !== 1; if (i > 0 || headEmitted) { write(" + "); @@ -27968,11 +29041,11 @@ var ts; } function templateNeedsParens(template, parent) { switch (parent.kind) { - case 172: case 173: - return parent.expression === template; case 174: - case 176: + return parent.expression === template; + case 175: + case 177: return false; default: return comparePrecedenceToBinaryPlus(parent) !== -1; @@ -27980,7 +29053,7 @@ var ts; } function comparePrecedenceToBinaryPlus(expression) { switch (expression.kind) { - case 185: + case 186: switch (expression.operatorToken.kind) { case 37: case 39: @@ -27992,8 +29065,8 @@ var ts; default: return -1; } - case 188: - case 186: + case 189: + case 187: return -1; default: return 1; @@ -28007,9 +29080,9 @@ var ts; function jsxEmitReact(node) { function emitTagName(name) { if (name.kind === 69 && ts.isIntrinsicJsxName(name.text)) { - write("\""); + write('"'); emit(name); - write("\""); + write('"'); } else { emit(name); @@ -28020,9 +29093,9 @@ var ts; emit(name); } else { - write("\""); + write('"'); emit(name); - write("\""); + write('"'); } } function emitJsxAttribute(node) { @@ -28049,12 +29122,11 @@ var ts; } else { var attrs = openingNode.attributes; - if (ts.forEach(attrs, function (attr) { return attr.kind === 243; })) { - emitExpressionIdentifier(syntheticReactRef); - write(".__spread("); + if (ts.forEach(attrs, function (attr) { return attr.kind === 246; })) { + write("__assign("); var haveOpenedObjectLiteral = false; for (var i = 0; i < attrs.length; i++) { - if (attrs[i].kind === 243) { + if (attrs[i].kind === 246) { if (i === 0) { write("{}, "); } @@ -28068,7 +29140,7 @@ var ts; emit(attrs[i].expression); } else { - ts.Debug.assert(attrs[i].kind === 242); + ts.Debug.assert(attrs[i].kind === 245); if (haveOpenedObjectLiteral) { write(", "); } @@ -28124,7 +29196,7 @@ var ts; decreaseIndent(); } else if (firstChild) { - if (firstChild.kind !== 237 && firstChild.kind !== 238) { + if (firstChild.kind !== 240 && firstChild.kind !== 241) { emit(firstChild); } else { @@ -28139,11 +29211,11 @@ var ts; write(")"); emitTrailingComments(openingNode); } - if (node.kind === 237) { + if (node.kind === 240) { emitJsxElement(node.openingElement, node.children); } else { - ts.Debug.assert(node.kind === 238); + ts.Debug.assert(node.kind === 241); emitJsxElement(node); } } @@ -28165,11 +29237,11 @@ var ts; if (i > 0) { write(" "); } - if (attribs[i].kind === 243) { + if (attribs[i].kind === 246) { emitJsxSpreadAttribute(attribs[i]); } else { - ts.Debug.assert(attribs[i].kind === 242); + ts.Debug.assert(attribs[i].kind === 245); emitJsxAttribute(attribs[i]); } } @@ -28177,11 +29249,11 @@ var ts; function emitJsxOpeningOrSelfClosingElement(node) { write("<"); emit(node.tagName); - if (node.attributes.length > 0 || (node.kind === 238)) { + if (node.attributes.length > 0 || (node.kind === 241)) { write(" "); } emitAttributes(node.attributes); - if (node.kind === 238) { + if (node.kind === 241) { write("/>"); } else { @@ -28200,20 +29272,20 @@ var ts; } emitJsxClosingElement(node.closingElement); } - if (node.kind === 237) { + if (node.kind === 240) { emitJsxElement(node); } else { - ts.Debug.assert(node.kind === 238); + ts.Debug.assert(node.kind === 241); emitJsxOpeningOrSelfClosingElement(node); } } function emitExpressionForPropertyName(node) { - ts.Debug.assert(node.kind !== 167); + ts.Debug.assert(node.kind !== 168); if (node.kind === 9) { emitLiteral(node); } - else if (node.kind === 138) { + else if (node.kind === 139) { if (ts.nodeIsDecorated(node.parent)) { if (!computedPropertyNamesToGeneratedNames) { computedPropertyNamesToGeneratedNames = []; @@ -28231,75 +29303,76 @@ var ts; emit(node.expression); } else { - write("\""); + write('"'); if (node.kind === 8) { write(node.text); } else { writeTextOfNode(currentText, node); } - write("\""); + write('"'); } } function isExpressionIdentifier(node) { var parent = node.parent; switch (parent.kind) { - case 168: - case 193: - case 185: - case 172: - case 245: - case 138: - case 186: - case 141: - case 179: - case 201: - case 171: - case 231: - case 199: - case 192: - case 203: - case 204: - case 205: - case 200: - case 241: - case 238: - case 239: - case 243: - case 244: - case 173: - case 176: - case 184: - case 183: - case 208: - case 250: - case 189: - case 210: - case 174: + case 169: case 194: + case 186: + case 173: + case 248: + case 139: + case 187: + case 142: + case 180: + case 203: + case 172: + case 234: + case 201: + case 193: + case 205: + case 206: + case 207: + case 202: + case 244: + case 241: + case 242: + case 246: + case 247: + case 174: + case 195: + case 177: + case 185: + case 184: + case 210: + case 253: + case 190: case 212: case 175: - case 180: + case 196: + case 214: + case 176: case 181: - case 202: - case 209: - case 188: + case 182: + case 204: + case 211: + case 189: return true; - case 167: - case 251: - case 140: - case 249: - case 143: - case 215: + case 168: + case 254: + case 141: + case 252: + case 144: + case 217: return parent.initializer === node; - case 170: + case 171: return parent.expression === node; + case 179: case 178: - case 177: return parent.body === node; - case 225: + case 228: return parent.moduleReference === node; - case 137: + case 138: return parent.left === node; } return false; @@ -28307,7 +29380,7 @@ var ts; function emitExpressionIdentifier(node) { var container = resolver.getReferencedExportContainer(node); if (container) { - if (container.kind === 252) { + if (container.kind === 255) { if (modulekind !== ts.ModuleKind.ES6 && modulekind !== ts.ModuleKind.System) { write("exports."); } @@ -28321,17 +29394,17 @@ var ts; if (modulekind !== ts.ModuleKind.ES6) { var declaration = resolver.getReferencedImportDeclaration(node); if (declaration) { - if (declaration.kind === 227) { + if (declaration.kind === 230) { write(getGeneratedNameForNode(declaration.parent)); - write(languageVersion === 0 ? "[\"default\"]" : ".default"); + write(languageVersion === 0 ? '["default"]' : ".default"); return; } - else if (declaration.kind === 230) { + else if (declaration.kind === 233) { write(getGeneratedNameForNode(declaration.parent.parent.parent)); - var name_23 = declaration.propertyName || declaration.name; - var identifier = ts.getTextOfNodeFromSourceText(currentText, name_23); + var name_25 = declaration.propertyName || declaration.name; + var identifier = ts.getTextOfNodeFromSourceText(currentText, name_25); if (languageVersion === 0 && identifier === "default") { - write("[\"default\"]"); + write('["default"]'); } else { write("."); @@ -28368,13 +29441,13 @@ var ts; } function isNameOfNestedBlockScopedRedeclarationOrCapturedBinding(node) { if (languageVersion < 2) { - var parent_8 = node.parent; - switch (parent_8.kind) { - case 167: - case 218: - case 221: - case 215: - return parent_8.name === node && resolver.isDeclarationWithCollidingName(parent_8); + var parent_10 = node.parent; + switch (parent_10.kind) { + case 168: + case 220: + case 223: + case 217: + return parent_10.name === node && resolver.isDeclarationWithCollidingName(parent_10); } } return false; @@ -28382,8 +29455,8 @@ var ts; function emitIdentifier(node) { if (convertedLoopState) { if (node.text == "arguments" && resolver.isArgumentsLocalBinding(node)) { - var name_24 = convertedLoopState.argumentsName || (convertedLoopState.argumentsName = makeUniqueName("arguments")); - write(name_24); + var name_26 = convertedLoopState.argumentsName || (convertedLoopState.argumentsName = makeUniqueName("arguments")); + write(name_26); return; } } @@ -28483,10 +29556,10 @@ var ts; } } function needsParenthesisForAwaitExpressionAsYield(node) { - if (node.parent.kind === 185 && !ts.isAssignmentOperator(node.parent.operatorToken.kind)) { + if (node.parent.kind === 186 && !ts.isAssignmentOperator(node.parent.operatorToken.kind)) { return true; } - else if (node.parent.kind === 186 && node.parent.condition === node) { + else if (node.parent.kind === 187 && node.parent.condition === node) { return true; } return false; @@ -28494,11 +29567,11 @@ var ts; function needsParenthesisForPropertyAccessOrInvocation(node) { switch (node.kind) { case 69: - case 168: - case 170: + case 169: case 171: case 172: - case 176: + case 173: + case 177: return false; } return true; @@ -28515,17 +29588,17 @@ var ts; write(", "); } var e = elements[pos]; - if (e.kind === 189) { + if (e.kind === 190) { e = e.expression; emitParenthesizedIf(e, group === 0 && needsParenthesisForPropertyAccessOrInvocation(e)); pos++; - if (pos === length && group === 0 && needsUniqueCopy && e.kind !== 168) { + if (pos === length && group === 0 && needsUniqueCopy && e.kind !== 169) { write(".slice()"); } } else { var i = pos; - while (i < length && elements[i].kind !== 189) { + while (i < length && elements[i].kind !== 190) { i++; } write("["); @@ -28548,7 +29621,7 @@ var ts; } } function isSpreadElementExpression(node) { - return node.kind === 189; + return node.kind === 190; } function emitArrayLiteral(node) { var elements = node.elements; @@ -28609,7 +29682,7 @@ var ts; writeComma(); var property = properties[i]; emitStart(property); - if (property.kind === 147 || property.kind === 148) { + if (property.kind === 148 || property.kind === 149) { var accessors = ts.getAllAccessorDeclarations(node.properties, property); if (property !== accessors.firstAccessor) { continue; @@ -28660,13 +29733,13 @@ var ts; emitMemberAccessForPropertyName(property.name); emitEnd(property.name); write(" = "); - if (property.kind === 249) { + if (property.kind === 252) { emit(property.initializer); } - else if (property.kind === 250) { + else if (property.kind === 253) { emitExpressionIdentifier(property.name); } - else if (property.kind === 145) { + else if (property.kind === 146) { emitFunctionDeclaration(property); } else { @@ -28698,7 +29771,7 @@ var ts; var numProperties = properties.length; var numInitialNonComputedProperties = numProperties; for (var i = 0, n = properties.length; i < n; i++) { - if (properties[i].name.kind === 138) { + if (properties[i].name.kind === 139) { numInitialNonComputedProperties = i; break; } @@ -28712,35 +29785,37 @@ var ts; emitObjectLiteralBody(node, properties.length); } function createBinaryExpression(left, operator, right, startsOnNewLine) { - var result = ts.createSynthesizedNode(185, startsOnNewLine); + var result = ts.createSynthesizedNode(186, startsOnNewLine); result.operatorToken = ts.createSynthesizedNode(operator); result.left = left; result.right = right; return result; } function createPropertyAccessExpression(expression, name) { - var result = ts.createSynthesizedNode(170); + var result = ts.createSynthesizedNode(171); result.expression = parenthesizeForAccess(expression); result.dotToken = ts.createSynthesizedNode(21); result.name = name; return result; } function createElementAccessExpression(expression, argumentExpression) { - var result = ts.createSynthesizedNode(171); + var result = ts.createSynthesizedNode(172); result.expression = parenthesizeForAccess(expression); result.argumentExpression = argumentExpression; return result; } function parenthesizeForAccess(expr) { - while (expr.kind === 175 || expr.kind === 193) { + while (expr.kind === 176 || + expr.kind === 194 || + expr.kind === 195) { expr = expr.expression; } if (ts.isLeftHandSideExpression(expr) && - expr.kind !== 173 && + expr.kind !== 174 && expr.kind !== 8) { return expr; } - var node = ts.createSynthesizedNode(176); + var node = ts.createSynthesizedNode(177); node.expression = expr; return node; } @@ -28767,11 +29842,15 @@ var ts; } function isNamespaceExportReference(node) { var container = resolver.getReferencedExportContainer(node); - return container && container.kind !== 252; + return container && container.kind !== 255; + } + function isImportedReference(node) { + var declaration = resolver.getReferencedImportDeclaration(node); + return declaration && (declaration.kind === 230 || declaration.kind === 233); } function emitShorthandPropertyAssignment(node) { writeTextOfNode(currentText, node.name); - if (modulekind !== ts.ModuleKind.ES6 || isNamespaceExportReference(node.name)) { + if (languageVersion < 2 || (modulekind !== ts.ModuleKind.ES6 && isImportedReference(node.name)) || isNamespaceExportReference(node.name)) { write(": "); emit(node.name); } @@ -28785,7 +29864,7 @@ var ts; if (constantValue !== undefined) { write(constantValue.toString()); if (!compilerOptions.removeComments) { - var propertyName = node.kind === 170 ? ts.declarationNameToString(node.name) : ts.getTextOfNode(node.argumentExpression); + var propertyName = node.kind === 171 ? ts.declarationNameToString(node.name) : ts.getTextOfNode(node.argumentExpression); write(" /* " + propertyName + " */"); } return true; @@ -28796,7 +29875,7 @@ var ts; if (compilerOptions.isolatedModules) { return undefined; } - return node.kind === 170 || node.kind === 171 + return node.kind === 171 || node.kind === 172 ? resolver.getConstantValue(node) : undefined; } @@ -28822,9 +29901,9 @@ var ts; if (languageVersion === 2 && node.expression.kind === 95 && isInAsyncMethodWithSuperInES6(node)) { - var name_25 = ts.createSynthesizedNode(9); - name_25.text = node.name.text; - emitSuperAccessInAsyncMethod(node.expression, name_25); + var name_27 = ts.createSynthesizedNode(9); + name_27.text = node.name.text; + emitSuperAccessInAsyncMethod(node.expression, name_27); return; } emit(node.expression); @@ -28884,7 +29963,7 @@ var ts; } emitExpressionIdentifier(node); break; - case 137: + case 138: emitQualifiedNameAsExpression(node, useFallback); break; default: @@ -28908,10 +29987,13 @@ var ts; write("]"); } function hasSpreadElement(elements) { - return ts.forEach(elements, function (e) { return e.kind === 189; }); + return ts.forEach(elements, function (e) { return e.kind === 190; }); } function skipParentheses(node) { - while (node.kind === 176 || node.kind === 175 || node.kind === 193) { + while (node.kind === 177 || + node.kind === 176 || + node.kind === 194 || + node.kind === 195) { node = node.expression; } return node; @@ -28932,12 +30014,12 @@ var ts; function emitCallWithSpread(node) { var target; var expr = skipParentheses(node.expression); - if (expr.kind === 170) { + if (expr.kind === 171) { target = emitCallTarget(expr.expression); write("."); emit(expr.name); } - else if (expr.kind === 171) { + else if (expr.kind === 172) { target = emitCallTarget(expr.expression); write("["); emit(expr.argumentExpression); @@ -29048,21 +30130,25 @@ var ts; } } function emitParenExpression(node) { - if (!ts.nodeIsSynthesized(node) && node.parent.kind !== 178) { - if (node.expression.kind === 175 || node.expression.kind === 193) { + if (!ts.nodeIsSynthesized(node) && node.parent.kind !== 179) { + if (node.expression.kind === 176 || + node.expression.kind === 194 || + node.expression.kind === 195) { var operand = node.expression.expression; - while (operand.kind === 175 || operand.kind === 193) { + while (operand.kind === 176 || + operand.kind === 194 || + operand.kind === 195) { operand = operand.expression; } - if (operand.kind !== 183 && + if (operand.kind !== 184 && + operand.kind !== 182 && operand.kind !== 181 && operand.kind !== 180 && - operand.kind !== 179 && - operand.kind !== 184 && - operand.kind !== 173 && - !(operand.kind === 172 && node.parent.kind === 173) && - !(operand.kind === 177 && node.parent.kind === 172) && - !(operand.kind === 8 && node.parent.kind === 170)) { + operand.kind !== 185 && + operand.kind !== 174 && + !(operand.kind === 173 && node.parent.kind === 174) && + !(operand.kind === 178 && node.parent.kind === 173) && + !(operand.kind === 8 && node.parent.kind === 171)) { emit(operand); return; } @@ -29091,7 +30177,7 @@ var ts; if (!isCurrentFileSystemExternalModule() || node.kind !== 69 || ts.nodeIsSynthesized(node)) { return false; } - var isVariableDeclarationOrBindingElement = node.parent && (node.parent.kind === 215 || node.parent.kind === 167); + var isVariableDeclarationOrBindingElement = node.parent && (node.parent.kind === 217 || node.parent.kind === 168); var targetDeclaration = isVariableDeclarationOrBindingElement ? node.parent : resolver.getReferencedValueDeclaration(node); @@ -29106,7 +30192,7 @@ var ts; write("\", "); } write(ts.tokenToString(node.operator)); - if (node.operand.kind === 183) { + if (node.operand.kind === 184) { var operand = node.operand; if (node.operator === 35 && (operand.operator === 35 || operand.operator === 41)) { write(" "); @@ -29149,7 +30235,7 @@ var ts; } var current = ts.getRootDeclaration(node).parent; while (current) { - if (current.kind === 252) { + if (current.kind === 255) { return !isExported || ((ts.getCombinedNodeFlags(node) & 1) !== 0); } else if (ts.isDeclaration(current)) { @@ -29168,7 +30254,7 @@ var ts; if (ts.isElementAccessExpression(leftHandSideExpression)) { shouldEmitParentheses = true; write("("); - synthesizedLHS = ts.createSynthesizedNode(171, false); + synthesizedLHS = ts.createSynthesizedNode(172, false); var identifier = emitTempVariableAssignment(leftHandSideExpression.expression, false, false); synthesizedLHS.expression = identifier; if (leftHandSideExpression.argumentExpression.kind !== 8 && @@ -29185,7 +30271,7 @@ var ts; else if (ts.isPropertyAccessExpression(leftHandSideExpression)) { shouldEmitParentheses = true; write("("); - synthesizedLHS = ts.createSynthesizedNode(170, false); + synthesizedLHS = ts.createSynthesizedNode(171, false); var identifier = emitTempVariableAssignment(leftHandSideExpression.expression, false, false); synthesizedLHS.expression = identifier; synthesizedLHS.dotToken = leftHandSideExpression.dotToken; @@ -29213,8 +30299,8 @@ var ts; } function emitBinaryExpression(node) { if (languageVersion < 2 && node.operatorToken.kind === 56 && - (node.left.kind === 169 || node.left.kind === 168)) { - emitDestructuring(node, node.parent.kind === 199); + (node.left.kind === 170 || node.left.kind === 169)) { + emitDestructuring(node, node.parent.kind === 201); } else { var exportChanged = node.operatorToken.kind >= 56 && @@ -29266,7 +30352,7 @@ var ts; } } function isSingleLineEmptyBlock(node) { - if (node && node.kind === 196) { + if (node && node.kind === 198) { var block = node; return block.statements.length === 0 && nodeEndIsOnSameLineAsNodeStart(block, block); } @@ -29280,12 +30366,12 @@ var ts; } emitToken(15, node.pos); increaseIndent(); - if (node.kind === 223) { - ts.Debug.assert(node.parent.kind === 222); + if (node.kind === 225) { + ts.Debug.assert(node.parent.kind === 224); emitCaptureThisForNodeIfNecessary(node.parent); } emitLines(node.statements); - if (node.kind === 223) { + if (node.kind === 225) { emitTempDeclarations(true); } decreaseIndent(); @@ -29293,7 +30379,7 @@ var ts; emitToken(16, node.statements.end); } function emitEmbeddedStatement(node) { - if (node.kind === 196) { + if (node.kind === 198) { write(" "); emit(node); } @@ -29305,7 +30391,7 @@ var ts; } } function emitExpressionStatement(node) { - emitParenthesizedIf(node.expression, node.expression.kind === 178); + emitParenthesizedIf(node.expression, node.expression.kind === 179); write(";"); } function emitIfStatement(node) { @@ -29318,7 +30404,7 @@ var ts; if (node.elseStatement) { writeLine(); emitToken(80, node.thenStatement.end); - if (node.elseStatement.kind === 200) { + if (node.elseStatement.kind === 202) { write(" "); emit(node.elseStatement); } @@ -29338,7 +30424,7 @@ var ts; else { emitNormalLoopBody(node, true); } - if (node.statement.kind === 196) { + if (node.statement.kind === 198) { write(" "); } else { @@ -29418,7 +30504,7 @@ var ts; } else { var loop = convertLoopBody(node); - if (node.parent.kind === 211) { + if (node.parent.kind === 213) { emitLabelAndColon(node.parent); } loopEmitter(node, loop); @@ -29428,11 +30514,11 @@ var ts; var functionName = makeUniqueName("_loop"); var loopInitializer; switch (node.kind) { - case 203: - case 204: case 205: + case 206: + case 207: var initializer = node.initializer; - if (initializer && initializer.kind === 216) { + if (initializer && initializer.kind === 218) { loopInitializer = node.initializer; } break; @@ -29446,7 +30532,7 @@ var ts; processVariableDeclaration(varDeclaration.name); } } - var bodyIsBlock = node.statement.kind === 196; + var bodyIsBlock = node.statement.kind === 198; var paramList = loopParameters ? loopParameters.join(", ") : ""; writeLine(); write("var " + functionName + " = function(" + paramList + ")"); @@ -29562,7 +30648,7 @@ var ts; if (emitAsEmbeddedStatement) { emitEmbeddedStatement(node.statement); } - else if (node.statement.kind === 196) { + else if (node.statement.kind === 198) { emitLines(node.statement.statements); } else { @@ -29601,7 +30687,7 @@ var ts; writeLine(); increaseIndent(); } - var isSimpleLoop = !loop.state.nonLocalJumps && + var isSimpleLoop = !(loop.state.nonLocalJumps & ~4) && !loop.state.labeledNonLocalBreaks && !loop.state.labeledNonLocalContinues; var loopResult = makeUniqueName("state"); @@ -29628,10 +30714,6 @@ var ts; write("if (" + loopResult + " === \"break\") break;"); writeLine(); } - if (loop.state.nonLocalJumps & 4) { - write("if (" + loopResult + " === \"continue\") continue;"); - writeLine(); - } emitDispatchTableForLabeledJumps(loopResult, loop.state, convertedLoopState); } if (emitAsBlock) { @@ -29682,7 +30764,7 @@ var ts; var endPos = emitToken(86, node.pos); write(" "); endPos = emitToken(17, endPos); - if (node.initializer && node.initializer.kind === 216) { + if (node.initializer && node.initializer.kind === 218) { var variableDeclarationList = node.initializer; var startIsEmitted = tryEmitStartOfVariableDeclarationList(variableDeclarationList); if (startIsEmitted) { @@ -29708,7 +30790,7 @@ var ts; } } function emitForInOrForOfStatement(node) { - if (languageVersion < 2 && node.kind === 205) { + if (languageVersion < 2 && node.kind === 207) { emitLoop(node, emitDownLevelForOfStatementWorker); } else { @@ -29719,7 +30801,7 @@ var ts; var endPos = emitToken(86, node.pos); write(" "); endPos = emitToken(17, endPos); - if (node.initializer.kind === 216) { + if (node.initializer.kind === 218) { var variableDeclarationList = node.initializer; if (variableDeclarationList.declarations.length >= 1) { tryEmitStartOfVariableDeclarationList(variableDeclarationList); @@ -29729,7 +30811,7 @@ var ts; else { emit(node.initializer); } - if (node.kind === 204) { + if (node.kind === 206) { write(" in "); } else { @@ -29782,7 +30864,7 @@ var ts; increaseIndent(); var rhsIterationValue = createElementAccessExpression(rhsReference, counter); emitStart(node.initializer); - if (node.initializer.kind === 216) { + if (node.initializer.kind === 218) { write("var "); var variableDeclarationList = node.initializer; if (variableDeclarationList.declarations.length > 0) { @@ -29804,7 +30886,7 @@ var ts; } else { var assignmentExpression = createBinaryExpression(node.initializer, 56, rhsIterationValue, false); - if (node.initializer.kind === 168 || node.initializer.kind === 169) { + if (node.initializer.kind === 169 || node.initializer.kind === 170) { emitDestructuring(assignmentExpression, true, undefined); } else { @@ -29826,14 +30908,14 @@ var ts; } function emitBreakOrContinueStatement(node) { if (convertedLoopState) { - var jump = node.kind === 207 ? 2 : 4; + var jump = node.kind === 209 ? 2 : 4; var canUseBreakOrContinue = (node.label && convertedLoopState.labels && convertedLoopState.labels[node.label.text]) || (!node.label && (convertedLoopState.allowedNonLabeledJumps & jump)); if (!canUseBreakOrContinue) { write("return "); copyLoopOutParameters(convertedLoopState, 1, false); if (!node.label) { - if (node.kind === 207) { + if (node.kind === 209) { convertedLoopState.nonLocalJumps |= 2; write("\"break\";"); } @@ -29844,7 +30926,7 @@ var ts; } else { var labelMarker = void 0; - if (node.kind === 207) { + if (node.kind === 209) { labelMarker = "break-" + node.label.text; setLabeledJump(convertedLoopState, true, node.label.text, labelMarker); } @@ -29857,7 +30939,7 @@ var ts; return; } } - emitToken(node.kind === 207 ? 70 : 75, node.pos); + emitToken(node.kind === 209 ? 70 : 75, node.pos); emitOptional(" ", node.label); write(";"); } @@ -29922,7 +31004,7 @@ var ts; ts.getLineOfLocalPositionFromLineMap(currentLineMap, ts.skipTrivia(currentText, node2.pos)); } function emitCaseOrDefaultClause(node) { - if (node.kind === 245) { + if (node.kind === 248) { write("case "); emit(node.expression); write(":"); @@ -29991,7 +31073,7 @@ var ts; function getContainingModule(node) { do { node = node.parent; - } while (node && node.kind !== 222); + } while (node && node.kind !== 224); return node; } function emitContainingModuleName(node) { @@ -30016,17 +31098,17 @@ var ts; function createVoidZero() { var zero = ts.createSynthesizedNode(8); zero.text = "0"; - var result = ts.createSynthesizedNode(181); + var result = ts.createSynthesizedNode(182); result.expression = zero; return result; } function emitEs6ExportDefaultCompat(node) { - if (node.parent.kind === 252) { - ts.Debug.assert(!!(node.flags & 512) || node.kind === 231); + if (node.parent.kind === 255) { + ts.Debug.assert(!!(node.flags & 512) || node.kind === 234); if (modulekind === ts.ModuleKind.CommonJS || modulekind === ts.ModuleKind.AMD || modulekind === ts.ModuleKind.UMD) { if (!isEs6Module) { if (languageVersion !== 0) { - write("Object.defineProperty(exports, \"__esModule\", { value: true });"); + write('Object.defineProperty(exports, "__esModule", { value: true });'); writeLine(); } else { @@ -30057,7 +31139,7 @@ var ts; if (node.flags & 512) { emitEs6ExportDefaultCompat(node); if (languageVersion === 0) { - write("exports[\"default\"]"); + write('exports["default"]'); } else { write("exports.default"); @@ -30117,7 +31199,7 @@ var ts; emitNodeWithCommentsAndWithoutSourcemap(name); write("\", "); } - var isVariableDeclarationOrBindingElement = name.parent && (name.parent.kind === 215 || name.parent.kind === 167); + var isVariableDeclarationOrBindingElement = name.parent && (name.parent.kind === 217 || name.parent.kind === 168); emitStart(isFirstVariableDeclaration(nodeForSourceMap) ? nodeForSourceMap.parent : nodeForSourceMap); withTemporaryNoSourceMap(function () { if (isVariableDeclarationOrBindingElement) { @@ -30143,22 +31225,22 @@ var ts; return identifier; } function isFirstVariableDeclaration(root) { - return root.kind === 215 && - root.parent.kind === 216 && + return root.kind === 217 && + root.parent.kind === 218 && root.parent.declarations[0] === root; } function emitDestructuring(root, isAssignmentExpressionStatement, value) { var emitCount = 0; var canDefineTempVariablesInPlace = false; - if (root.kind === 215) { + if (root.kind === 217) { var isExported = ts.getCombinedNodeFlags(root) & 1; var isSourceLevelForSystemModuleKind = shouldHoistDeclarationInSystemJsModule(root); canDefineTempVariablesInPlace = !isExported && !isSourceLevelForSystemModuleKind; } - else if (root.kind === 140) { + else if (root.kind === 141) { canDefineTempVariablesInPlace = true; } - if (root.kind === 185) { + if (root.kind === 186) { emitAssignmentExpression(root); } else { @@ -30178,14 +31260,14 @@ var ts; } function createDefaultValueCheck(value, defaultValue, sourceMapNode) { value = ensureIdentifier(value, true, sourceMapNode); - var equals = ts.createSynthesizedNode(185); + var equals = ts.createSynthesizedNode(186); equals.left = value; equals.operatorToken = ts.createSynthesizedNode(32); equals.right = createVoidZero(); return createConditionalExpression(equals, defaultValue, value); } function createConditionalExpression(condition, whenTrue, whenFalse) { - var cond = ts.createSynthesizedNode(186); + var cond = ts.createSynthesizedNode(187); cond.condition = condition; cond.questionToken = ts.createSynthesizedNode(53); cond.whenTrue = whenTrue; @@ -30200,7 +31282,7 @@ var ts; } function createPropertyAccessForDestructuringProperty(object, propName) { var index; - var nameIsComputed = propName.kind === 138; + var nameIsComputed = propName.kind === 139; if (nameIsComputed) { index = ensureIdentifier(propName.expression, false, propName); } @@ -30213,7 +31295,7 @@ var ts; : createElementAccessExpression(object, index); } function createSliceCall(value, sliceIndex) { - var call = ts.createSynthesizedNode(172); + var call = ts.createSynthesizedNode(173); var sliceIdentifier = ts.createSynthesizedNode(69); sliceIdentifier.text = "slice"; call.expression = createPropertyAccessExpression(value, sliceIdentifier); @@ -30228,9 +31310,9 @@ var ts; } for (var _a = 0, properties_5 = properties; _a < properties_5.length; _a++) { var p = properties_5[_a]; - if (p.kind === 249 || p.kind === 250) { + if (p.kind === 252 || p.kind === 253) { var propName = p.name; - var target_1 = p.kind === 250 ? p : p.initializer || propName; + var target_1 = p.kind === 253 ? p : p.initializer || propName; emitDestructuringAssignment(target_1, createPropertyAccessForDestructuringProperty(value, propName), p); } } @@ -30242,8 +31324,8 @@ var ts; } for (var i = 0; i < elements.length; i++) { var e = elements[i]; - if (e.kind !== 191) { - if (e.kind !== 189) { + if (e.kind !== 192) { + if (e.kind !== 190) { emitDestructuringAssignment(e, createElementAccessExpression(value, createNumericLiteral(i)), e); } else if (i === elements.length - 1) { @@ -30253,20 +31335,20 @@ var ts; } } function emitDestructuringAssignment(target, value, sourceMapNode) { - if (target.kind === 250) { + if (target.kind === 253) { if (target.objectAssignmentInitializer) { value = createDefaultValueCheck(value, target.objectAssignmentInitializer, sourceMapNode); } target = target.name; } - else if (target.kind === 185 && target.operatorToken.kind === 56) { + else if (target.kind === 186 && target.operatorToken.kind === 56) { value = createDefaultValueCheck(value, target.right, sourceMapNode); target = target.left; } - if (target.kind === 169) { + if (target.kind === 170) { emitObjectLiteralAssignment(target, value, sourceMapNode); } - else if (target.kind === 168) { + else if (target.kind === 169) { emitArrayLiteralAssignment(target, value, sourceMapNode); } else { @@ -30284,14 +31366,14 @@ var ts; emitDestructuringAssignment(target, value, ts.nodeIsSynthesized(root) ? target : root); } else { - if (root.parent.kind !== 176) { + if (root.parent.kind !== 177) { write("("); } value = ensureIdentifier(value, true, root); emitDestructuringAssignment(target, value, root); write(", "); emit(value); - if (root.parent.kind !== 176) { + if (root.parent.kind !== 177) { write(")"); } } @@ -30312,11 +31394,11 @@ var ts; } for (var i = 0; i < numElements; i++) { var element = elements[i]; - if (pattern.kind === 165) { + if (pattern.kind === 166) { var propName = element.propertyName || element.name; emitBindingElement(element, createPropertyAccessForDestructuringProperty(value, propName)); } - else if (element.kind !== 191) { + else if (element.kind !== 192) { if (!element.dotDotDotToken) { emitBindingElement(element, createElementAccessExpression(value, createNumericLiteral(i))); } @@ -30334,12 +31416,21 @@ var ts; } function emitVariableDeclaration(node) { if (ts.isBindingPattern(node.name)) { - if (languageVersion < 2) { - emitDestructuring(node, false); - } - else { + var isExported = ts.getCombinedNodeFlags(node) & 1; + if (languageVersion >= 2 && (!isExported || modulekind === ts.ModuleKind.ES6)) { + var isTopLevelDeclarationInSystemModule = modulekind === ts.ModuleKind.System && + shouldHoistVariable(node, true); + if (isTopLevelDeclarationInSystemModule) { + write("("); + } emit(node.name); emitOptional(" = ", node.initializer); + if (isTopLevelDeclarationInSystemModule) { + write(")"); + } + } + else { + emitDestructuring(node, false); } } else { @@ -30352,12 +31443,12 @@ var ts; var isCapturedInFunction = flags & 131072; var isDeclaredInLoop = flags & 262144; var emittedAsTopLevel = ts.isBlockScopedContainerTopLevel(container) || - (isCapturedInFunction && isDeclaredInLoop && container.kind === 196 && ts.isIterationStatement(container.parent, false)); + (isCapturedInFunction && isDeclaredInLoop && container.kind === 198 && ts.isIterationStatement(container.parent, false)); var emittedAsNestedLetDeclaration = ts.getCombinedNodeFlags(node) & 1024 && !emittedAsTopLevel; var emitExplicitInitializer = emittedAsNestedLetDeclaration && - container.kind !== 204 && - container.kind !== 205 && + container.kind !== 206 && + container.kind !== 207 && (!resolver.isDeclarationWithCollidingName(node) || (isDeclaredInLoop && !isCapturedInFunction && !ts.isIterationStatement(container, false))); if (emitExplicitInitializer) { @@ -30378,7 +31469,7 @@ var ts; } } function emitExportVariableAssignments(node) { - if (node.kind === 191) { + if (node.kind === 192) { return; } var name = node.name; @@ -30392,7 +31483,7 @@ var ts; function isES6ExportedDeclaration(node) { return !!(node.flags & 1) && modulekind === ts.ModuleKind.ES6 && - node.parent.kind === 252; + node.parent.kind === 255; } function emitVariableStatement(node) { var startIsEmitted = false; @@ -30437,12 +31528,12 @@ var ts; function emitParameter(node) { if (languageVersion < 2) { if (ts.isBindingPattern(node.name)) { - var name_26 = createTempVariable(0); + var name_28 = createTempVariable(0); if (!tempParameters) { tempParameters = []; } - tempParameters.push(name_26); - emit(name_26); + tempParameters.push(name_28); + emit(name_28); } else { emit(node.name); @@ -30541,12 +31632,12 @@ var ts; } } function emitAccessor(node) { - write(node.kind === 147 ? "get " : "set "); + write(node.kind === 148 ? "get " : "set "); emit(node.name); emitSignatureAndBody(node); } function shouldEmitAsArrowFunction(node) { - return node.kind === 178 && languageVersion >= 2; + return node.kind === 179 && languageVersion >= 2; } function emitDeclarationName(node) { if (node.name) { @@ -30557,10 +31648,10 @@ var ts; } } function shouldEmitFunctionName(node) { - if (node.kind === 177) { + if (node.kind === 178) { return !!node.name; } - if (node.kind === 217) { + if (node.kind === 219) { return !!node.name || modulekind !== ts.ModuleKind.ES6; } } @@ -30569,12 +31660,12 @@ var ts; return emitCommentsOnNotEmittedNode(node); } var kind = node.kind, parent = node.parent; - if (kind !== 145 && - kind !== 144 && + if (kind !== 146 && + kind !== 145 && parent && - parent.kind !== 249 && - parent.kind !== 172 && - parent.kind !== 168) { + parent.kind !== 252 && + parent.kind !== 173 && + parent.kind !== 169) { emitLeadingComments(node); } emitStart(node); @@ -30595,11 +31686,13 @@ var ts; emitDeclarationName(node); } emitSignatureAndBody(node); - if (modulekind !== ts.ModuleKind.ES6 && kind === 217 && parent === currentSourceFile && node.name) { + if (modulekind !== ts.ModuleKind.ES6 && kind === 219 && parent === currentSourceFile && node.name) { emitExportMemberAssignments(node.name); } emitEnd(node); - if (kind !== 145 && kind !== 144) { + if (kind !== 146 && + kind !== 145 && + kind !== 179) { emitTrailingComments(node); } } @@ -30616,8 +31709,9 @@ var ts; write("("); if (node) { var parameters = node.parameters; + var skipCount = node.parameters.length && node.parameters[0].name.text === "this" ? 1 : 0; var omitCount = languageVersion < 2 && ts.hasRestParameter(node) ? 1 : 0; - emitList(parameters, 0, parameters.length - omitCount, false, false); + emitList(parameters, skipCount, parameters.length - omitCount - skipCount, false, false); } write(")"); decreaseIndent(); @@ -30631,7 +31725,7 @@ var ts; } function emitAsyncFunctionBodyForES6(node) { var promiseConstructor = ts.getEntityNameFromTypeNode(node.type); - var isArrowFunction = node.kind === 178; + var isArrowFunction = node.kind === 179; var hasLexicalArguments = (resolver.getNodeCheckFlags(node) & 8192) !== 0; if (!isArrowFunction) { write(" {"); @@ -30675,7 +31769,7 @@ var ts; write(" { }"); } else { - if (node.body.kind === 196) { + if (node.body.kind === 198) { emitBlockFunctionBody(node, node.body); } else { @@ -30727,10 +31821,10 @@ var ts; } write(" "); var current = body; - while (current.kind === 175) { + while (current.kind === 176) { current = current.expression; } - emitParenthesizedIf(body, current.kind === 169); + emitParenthesizedIf(body, current.kind === 170); } function emitDownLevelExpressionFunctionBody(node, body) { write(" {"); @@ -30806,7 +31900,7 @@ var ts; return undefined; } var statement = statements[index]; - if (statement.kind === 199) { + if (statement.kind === 201) { return ts.isSuperCallExpression(statement.expression) ? statement : undefined; } } @@ -30832,7 +31926,7 @@ var ts; emitNodeWithCommentsAndWithoutSourcemap(memberName); write("]"); } - else if (memberName.kind === 138) { + else if (memberName.kind === 139) { emitComputedPropertyName(memberName); } else { @@ -30844,7 +31938,7 @@ var ts; var properties = []; for (var _a = 0, _b = node.members; _a < _b.length; _a++) { var member = _b[_a]; - if (member.kind === 143 && isStatic === ((member.flags & 32) !== 0) && member.initializer) { + if (member.kind === 144 && isStatic === ((member.flags & 32) !== 0) && member.initializer) { properties.push(member); } } @@ -30884,11 +31978,11 @@ var ts; } function emitMemberFunctionsForES5AndLower(node) { ts.forEach(node.members, function (member) { - if (member.kind === 195) { + if (member.kind === 197) { writeLine(); write(";"); } - else if (member.kind === 145 || node.kind === 144) { + else if (member.kind === 146 || node.kind === 145) { if (!member.body) { return emitCommentsOnNotEmittedNode(member); } @@ -30905,7 +31999,7 @@ var ts; write(";"); emitTrailingComments(member); } - else if (member.kind === 147 || member.kind === 148) { + else if (member.kind === 148 || member.kind === 149) { var accessors = ts.getAllAccessorDeclarations(node.members, member); if (member === accessors.firstAccessor) { writeLine(); @@ -30955,22 +32049,22 @@ var ts; function emitMemberFunctionsForES6AndHigher(node) { for (var _a = 0, _b = node.members; _a < _b.length; _a++) { var member = _b[_a]; - if ((member.kind === 145 || node.kind === 144) && !member.body) { + if ((member.kind === 146 || node.kind === 145) && !member.body) { emitCommentsOnNotEmittedNode(member); } - else if (member.kind === 145 || - member.kind === 147 || - member.kind === 148) { + else if (member.kind === 146 || + member.kind === 148 || + member.kind === 149) { writeLine(); emitLeadingComments(member); emitStart(member); if (member.flags & 32) { write("static "); } - if (member.kind === 147) { + if (member.kind === 148) { write("get "); } - else if (member.kind === 148) { + else if (member.kind === 149) { write("set "); } if (member.asteriskToken) { @@ -30981,7 +32075,7 @@ var ts; emitEnd(member); emitTrailingComments(member); } - else if (member.kind === 195) { + else if (member.kind === 197) { writeLine(); write(";"); } @@ -31006,10 +32100,10 @@ var ts; function emitConstructorWorker(node, baseTypeElement) { var hasInstancePropertyWithInitializer = false; ts.forEach(node.members, function (member) { - if (member.kind === 146 && !member.body) { + if (member.kind === 147 && !member.body) { emitCommentsOnNotEmittedNode(member); } - if (member.kind === 143 && member.initializer && (member.flags & 32) === 0) { + if (member.kind === 144 && member.initializer && (member.flags & 32) === 0) { hasInstancePropertyWithInitializer = true; } }); @@ -31113,10 +32207,12 @@ var ts; } function emitClassLikeDeclarationForES6AndHigher(node) { var decoratedClassAlias; - var thisNodeIsDecorated = ts.nodeIsDecorated(node); - if (node.kind === 218) { - if (thisNodeIsDecorated) { - if (resolver.getNodeCheckFlags(node) & 524288) { + var isHoistedDeclarationInSystemModule = shouldHoistDeclarationInSystemJsModule(node); + var isDecorated = ts.nodeIsDecorated(node); + var rewriteAsClassExpression = isDecorated || isHoistedDeclarationInSystemModule; + if (node.kind === 220) { + if (rewriteAsClassExpression) { + if (isDecorated && resolver.getNodeCheckFlags(node) & 524288) { decoratedClassAlias = ts.unescapeIdentifier(makeUniqueName(node.name ? node.name.text : "default")); decoratedClassAliases[ts.getNodeId(node)] = decoratedClassAlias; write("let " + decoratedClassAlias + ";"); @@ -31125,7 +32221,9 @@ var ts; if (isES6ExportedDeclaration(node) && !(node.flags & 512)) { write("export "); } - write("let "); + if (!isHoistedDeclarationInSystemModule) { + write("let "); + } emitDeclarationName(node); if (decoratedClassAlias !== undefined) { write(" = " + decoratedClassAlias); @@ -31140,7 +32238,7 @@ var ts; } } var staticProperties = getInitializedProperties(node, true); - var isClassExpressionWithStaticProperties = staticProperties.length > 0 && node.kind === 190; + var isClassExpressionWithStaticProperties = staticProperties.length > 0 && node.kind === 191; var tempVariable; if (isClassExpressionWithStaticProperties) { tempVariable = createAndRecordTempVariable(0); @@ -31150,7 +32248,7 @@ var ts; write(" = "); } write("class"); - if (node.name || (node.flags & 512 && (staticProperties.length > 0 || modulekind !== ts.ModuleKind.ES6) && !thisNodeIsDecorated)) { + if (node.name || (node.flags & 512 && (staticProperties.length > 0 || modulekind !== ts.ModuleKind.ES6) && !rewriteAsClassExpression)) { write(" "); emitDeclarationName(node); } @@ -31167,7 +32265,7 @@ var ts; decreaseIndent(); writeLine(); emitToken(16, node.members.end); - if (thisNodeIsDecorated) { + if (rewriteAsClassExpression) { decoratedClassAliases[ts.getNodeId(node)] = undefined; write(";"); } @@ -31197,14 +32295,14 @@ var ts; } else { if (node.flags & 512) { - if (thisNodeIsDecorated) { + if (isDecorated) { writeLine(); write("export default "); emitDeclarationName(node); write(";"); } } - else if (node.parent.kind !== 252) { + else if (node.parent.kind !== 255) { writeLine(); emitStart(node); emitModuleMemberName(node); @@ -31216,7 +32314,7 @@ var ts; } } function emitClassLikeDeclarationBelowES6(node) { - if (node.kind === 218) { + if (node.kind === 220) { if (!shouldHoistDeclarationInSystemJsModule(node)) { write("var "); } @@ -31276,11 +32374,11 @@ var ts; emit(baseTypeNode.expression); } write("))"); - if (node.kind === 218) { + if (node.kind === 220) { write(";"); } emitEnd(node); - if (node.kind === 218) { + if (node.kind === 220) { emitExportMemberAssignment(node); } } @@ -31350,7 +32448,7 @@ var ts; } else { decorators = member.decorators; - if (member.kind === 145) { + if (member.kind === 146) { functionLikeMember = member; } } @@ -31376,7 +32474,7 @@ var ts; write(", "); emitExpressionForPropertyName(member.name); if (languageVersion > 0) { - if (member.kind !== 143) { + if (member.kind !== 144) { write(", null"); } else { @@ -31411,45 +32509,45 @@ var ts; } function shouldEmitTypeMetadata(node) { switch (node.kind) { - case 145: - case 147: + case 146: case 148: - case 143: + case 149: + case 144: return true; } return false; } function shouldEmitReturnTypeMetadata(node) { switch (node.kind) { - case 145: + case 146: return true; } return false; } function shouldEmitParamTypesMetadata(node) { switch (node.kind) { - case 218: - case 145: - case 148: + case 220: + case 146: + case 149: return true; } return false; } function emitSerializedTypeOfNode(node) { switch (node.kind) { - case 218: + case 220: write("Function"); return; - case 143: + case 144: emitSerializedTypeNode(node.type); return; - case 140: - emitSerializedTypeNode(node.type); - return; - case 147: + case 141: emitSerializedTypeNode(node.type); return; case 148: + emitSerializedTypeNode(node.type); + return; + case 149: emitSerializedTypeNode(ts.getSetAccessorTypeAnnotationNode(node)); return; } @@ -31465,23 +32563,23 @@ var ts; case 103: write("void 0"); return; - case 162: + case 163: emitSerializedTypeNode(node.type); return; - case 154: case 155: + case 156: write("Function"); return; - case 158: case 159: + case 160: write("Array"); return; - case 152: + case 153: case 120: write("Boolean"); return; case 131: - case 164: + case 165: write("String"); return; case 129: @@ -31490,15 +32588,15 @@ var ts; case 132: write("Symbol"); return; - case 153: + case 154: emitSerializedTypeReferenceNode(node); return; - case 156: case 157: - case 160: + case 158: case 161: + case 162: case 117: - case 163: + case 164: break; default: ts.Debug.fail("Cannot serialize unexpected type node."); @@ -31562,7 +32660,7 @@ var ts; function emitSerializedParameterTypesOfNode(node) { if (node) { var valueDeclaration = void 0; - if (node.kind === 218) { + if (node.kind === 220) { valueDeclaration = ts.getFirstConstructorWithBody(node); } else if (ts.isFunctionLike(node) && ts.nodeIsPresent(node.body)) { @@ -31578,10 +32676,10 @@ var ts; } if (parameters[i].dotDotDotToken) { var parameterType = parameters[i].type; - if (parameterType.kind === 158) { + if (parameterType.kind === 159) { parameterType = parameterType.elementType; } - else if (parameterType.kind === 153 && parameterType.typeArguments && parameterType.typeArguments.length === 1) { + else if (parameterType.kind === 154 && parameterType.typeArguments && parameterType.typeArguments.length === 1) { parameterType = parameterType.typeArguments[0]; } else { @@ -31653,7 +32751,7 @@ var ts; } if (!shouldHoistDeclarationInSystemJsModule(node)) { var isES6ExportedEnum = isES6ExportedDeclaration(node); - if (!(node.flags & 1) || (isES6ExportedEnum && isFirstDeclarationOfKind(node, node.symbol && node.symbol.declarations, 221))) { + if (!(node.flags & 1) || (isES6ExportedEnum && isFirstDeclarationOfKind(node, node.symbol && node.symbol.declarations, 223))) { emitStart(node); if (isES6ExportedEnum) { write("export "); @@ -31733,7 +32831,7 @@ var ts; } } function getInnerMostModuleDeclarationFromDottedModule(moduleDeclaration) { - if (moduleDeclaration.body.kind === 222) { + if (moduleDeclaration.body.kind === 224) { var recursiveInnerModule = getInnerMostModuleDeclarationFromDottedModule(moduleDeclaration.body); return recursiveInnerModule || moduleDeclaration.body; } @@ -31756,7 +32854,7 @@ var ts; var emitVarForModule = !hoistedInDeclarationScope && !isModuleMergedWithES6Class(node); if (emitVarForModule) { var isES6ExportedNamespace = isES6ExportedDeclaration(node); - if (!isES6ExportedNamespace || isFirstDeclarationOfKind(node, node.symbol && node.symbol.declarations, 222)) { + if (!isES6ExportedNamespace || isFirstDeclarationOfKind(node, node.symbol && node.symbol.declarations, 224)) { emitStart(node); if (isES6ExportedNamespace) { write("export "); @@ -31774,7 +32872,7 @@ var ts; write(getGeneratedNameForNode(node)); emitEnd(node.name); write(") "); - if (node.body.kind === 223) { + if (node.body.kind === 225) { var saveConvertedLoopState = convertedLoopState; var saveTempFlags = tempFlags; var saveTempVariables = tempVariables; @@ -31845,16 +32943,16 @@ var ts; } } function getNamespaceDeclarationNode(node) { - if (node.kind === 225) { + if (node.kind === 228) { return node; } var importClause = node.importClause; - if (importClause && importClause.namedBindings && importClause.namedBindings.kind === 228) { + if (importClause && importClause.namedBindings && importClause.namedBindings.kind === 231) { return importClause.namedBindings; } } function isDefaultImport(node) { - return node.kind === 226 && node.importClause && !!node.importClause.name; + return node.kind === 229 && node.importClause && !!node.importClause.name; } function emitExportImportAssignments(node) { if (ts.isAliasSymbolDeclaration(node) && resolver.isValueAliasDeclaration(node)) { @@ -31881,7 +32979,7 @@ var ts; if (shouldEmitNamedBindings) { emitLeadingComments(node.importClause.namedBindings); emitStart(node.importClause.namedBindings); - if (node.importClause.namedBindings.kind === 228) { + if (node.importClause.namedBindings.kind === 231) { write("* as "); emit(node.importClause.namedBindings.name); } @@ -31907,7 +33005,7 @@ var ts; } function emitExternalImportDeclaration(node) { if (ts.contains(externalImports, node)) { - var isExportedImport = node.kind === 225 && (node.flags & 1) !== 0; + var isExportedImport = node.kind === 228 && (node.flags & 1) !== 0; var namespaceDeclaration = getNamespaceDeclarationNode(node); var varOrConst = (languageVersion <= 1) ? "var " : "const "; if (modulekind !== ts.ModuleKind.AMD) { @@ -31922,7 +33020,7 @@ var ts; write(" = "); } else { - var isNakedImport = 226 && !node.importClause; + var isNakedImport = 229 && !node.importClause; if (!isNakedImport) { write(varOrConst); write(getGeneratedNameForNode(node)); @@ -32089,8 +33187,8 @@ var ts; write("export default "); var expression = node.expression; emit(expression); - if (expression.kind !== 217 && - expression.kind !== 218) { + if (expression.kind !== 219 && + expression.kind !== 220) { write(";"); } emitEnd(node); @@ -32107,7 +33205,7 @@ var ts; emitEs6ExportDefaultCompat(node); emitContainingModuleName(node); if (languageVersion === 0) { - write("[\"default\"] = "); + write('["default"] = '); } else { write(".default = "); @@ -32127,18 +33225,18 @@ var ts; for (var _a = 0, _b = sourceFile.statements; _a < _b.length; _a++) { var node = _b[_a]; switch (node.kind) { - case 226: + case 229: if (!node.importClause || resolver.isReferencedAliasDeclaration(node.importClause, true)) { externalImports.push(node); } break; - case 225: - if (node.moduleReference.kind === 236 && resolver.isReferencedAliasDeclaration(node)) { + case 228: + if (node.moduleReference.kind === 239 && resolver.isReferencedAliasDeclaration(node)) { externalImports.push(node); } break; - case 232: + case 235: if (node.moduleSpecifier) { if (!node.exportClause) { if (resolver.moduleExportsSomeValue(node.moduleSpecifier)) { @@ -32153,12 +33251,12 @@ var ts; else { for (var _c = 0, _d = node.exportClause.elements; _c < _d.length; _c++) { var specifier = _d[_c]; - var name_27 = (specifier.propertyName || specifier.name).text; - (exportSpecifiers[name_27] || (exportSpecifiers[name_27] = [])).push(specifier); + var name_29 = (specifier.propertyName || specifier.name).text; + (exportSpecifiers[name_29] || (exportSpecifiers[name_29] = [])).push(specifier); } } break; - case 231: + case 234: if (node.isExportEquals && !exportEquals) { exportEquals = node; } @@ -32183,18 +33281,18 @@ var ts; if (namespaceDeclaration && !isDefaultImport(node)) { return ts.getTextOfNodeFromSourceText(currentText, namespaceDeclaration.name); } - if (node.kind === 226 && node.importClause) { + if (node.kind === 229 && node.importClause) { return getGeneratedNameForNode(node); } - if (node.kind === 232 && node.moduleSpecifier) { + if (node.kind === 235 && node.moduleSpecifier) { return getGeneratedNameForNode(node); } } function getExternalModuleNameText(importNode, emitRelativePathAsModuleName) { if (emitRelativePathAsModuleName) { - var name_28 = getExternalModuleNameFromDeclaration(host, resolver, importNode); - if (name_28) { - return "\"" + name_28 + "\""; + var name_30 = getExternalModuleNameFromDeclaration(host, resolver, importNode); + if (name_30) { + return "\"" + name_30 + "\""; } } var moduleName = ts.getExternalModuleName(importNode); @@ -32211,8 +33309,8 @@ var ts; var started = false; for (var _a = 0, externalImports_1 = externalImports; _a < externalImports_1.length; _a++) { var importNode = externalImports_1[_a]; - var skipNode = importNode.kind === 232 || - (importNode.kind === 226 && !importNode.importClause); + var skipNode = importNode.kind === 235 || + (importNode.kind === 229 && !importNode.importClause); if (skipNode) { continue; } @@ -32237,7 +33335,7 @@ var ts; var hasExportDeclarationWithExportClause = false; for (var _a = 0, externalImports_2 = externalImports; _a < externalImports_2.length; _a++) { var externalImport = externalImports_2[_a]; - if (externalImport.kind === 232 && externalImport.exportClause) { + if (externalImport.kind === 235 && externalImport.exportClause) { hasExportDeclarationWithExportClause = true; break; } @@ -32266,7 +33364,7 @@ var ts; } for (var _d = 0, externalImports_3 = externalImports; _d < externalImports_3.length; _d++) { var externalImport = externalImports_3[_d]; - if (externalImport.kind !== 232) { + if (externalImport.kind !== 235) { continue; } var exportDecl = externalImport; @@ -32340,11 +33438,11 @@ var ts; var seen = {}; for (var i = 0; i < hoistedVars.length; i++) { var local = hoistedVars[i]; - var name_29 = local.kind === 69 + var name_31 = local.kind === 69 ? local : local.name; - if (name_29) { - var text = ts.unescapeIdentifier(name_29.text); + if (name_31) { + var text = ts.unescapeIdentifier(name_31.text); if (ts.hasProperty(seen, text)) { continue; } @@ -32355,7 +33453,7 @@ var ts; if (i !== 0) { write(", "); } - if (local.kind === 218 || local.kind === 222 || local.kind === 221) { + if (local.kind === 220 || local.kind === 224 || local.kind === 223) { emitDeclarationName(local); } else { @@ -32389,21 +33487,21 @@ var ts; if (node.flags & 2) { return; } - if (node.kind === 217) { + if (node.kind === 219) { if (!hoistedFunctionDeclarations) { hoistedFunctionDeclarations = []; } hoistedFunctionDeclarations.push(node); return; } - if (node.kind === 218) { + if (node.kind === 220) { if (!hoistedVars) { hoistedVars = []; } hoistedVars.push(node); return; } - if (node.kind === 221) { + if (node.kind === 223) { if (shouldEmitEnumDeclaration(node)) { if (!hoistedVars) { hoistedVars = []; @@ -32412,7 +33510,7 @@ var ts; } return; } - if (node.kind === 222) { + if (node.kind === 224) { if (shouldEmitModuleDeclaration(node)) { if (!hoistedVars) { hoistedVars = []; @@ -32421,17 +33519,17 @@ var ts; } return; } - if (node.kind === 215 || node.kind === 167) { + if (node.kind === 217 || node.kind === 168) { if (shouldHoistVariable(node, false)) { - var name_30 = node.name; - if (name_30.kind === 69) { + var name_32 = node.name; + if (name_32.kind === 69) { if (!hoistedVars) { hoistedVars = []; } - hoistedVars.push(name_30); + hoistedVars.push(name_32); } else { - ts.forEachChild(name_30, visit); + ts.forEachChild(name_32, visit); } } return; @@ -32457,7 +33555,7 @@ var ts; return false; } return (ts.getCombinedNodeFlags(node) & 3072) === 0 || - ts.getEnclosingBlockScopeContainer(node).kind === 252; + ts.getEnclosingBlockScopeContainer(node).kind === 255; } function isCurrentFileSystemExternalModule() { return modulekind === ts.ModuleKind.System && isCurrentFileExternalModule; @@ -32495,17 +33593,17 @@ var ts; var entry = group_1[_a]; var importVariableName = getLocalNameForExternalImport(entry) || ""; switch (entry.kind) { - case 226: + case 229: if (!entry.importClause) { break; } - case 225: + case 228: ts.Debug.assert(importVariableName !== ""); writeLine(); write(importVariableName + " = " + parameterName + ";"); writeLine(); break; - case 232: + case 235: ts.Debug.assert(importVariableName !== ""); if (entry.exportClause) { writeLine(); @@ -32549,10 +33647,10 @@ var ts; for (var i = startIndex; i < node.statements.length; i++) { var statement = node.statements[i]; switch (statement.kind) { - case 217: - case 226: + case 219: + case 229: continue; - case 232: + case 235: if (!statement.moduleSpecifier) { for (var _a = 0, _b = statement.exportClause.elements; _a < _b.length; _a++) { var element = _b[_a]; @@ -32560,7 +33658,7 @@ var ts; } } continue; - case 225: + case 228: if (!ts.isInternalModuleImportEqualsDeclaration(statement)) { continue; } @@ -32631,11 +33729,11 @@ var ts; for (var _a = 0, _b = node.amdDependencies; _a < _b.length; _a++) { var amdDependency = _b[_a]; if (amdDependency.name) { - aliasedModuleNames.push("\"" + amdDependency.path + "\""); + aliasedModuleNames.push('"' + amdDependency.path + '"'); importAliasNames.push(amdDependency.name); } else { - unaliasedModuleNames.push("\"" + amdDependency.path + "\""); + unaliasedModuleNames.push('"' + amdDependency.path + '"'); } } for (var _c = 0, externalImports_4 = externalImports; _c < externalImports_4.length; _c++) { @@ -32660,7 +33758,7 @@ var ts; } function emitAMDDependencyList(_a) { var aliasedModuleNames = _a.aliasedModuleNames, unaliasedModuleNames = _a.unaliasedModuleNames; - write("[\"require\", \"exports\""); + write('["require", "exports"'); if (aliasedModuleNames.length) { write(", "); write(aliasedModuleNames.join(", ")); @@ -32692,8 +33790,8 @@ var ts; emitExportStarHelper(); emitCaptureThisForNodeIfNecessary(node); emitLinesStartingAt(node.statements, startIndex); - emitTempDeclarations(true); emitExportEquals(true); + emitTempDeclarations(true); decreaseIndent(); writeLine(); write("});"); @@ -32705,8 +33803,8 @@ var ts; emitExportStarHelper(); emitCaptureThisForNodeIfNecessary(node); emitLinesStartingAt(node.statements, startIndex); - emitTempDeclarations(true); emitExportEquals(false); + emitTempDeclarations(true); } function emitUMDModule(node) { emitEmitHelpers(node); @@ -32722,8 +33820,8 @@ var ts; emitExportStarHelper(); emitCaptureThisForNodeIfNecessary(node); emitLinesStartingAt(node.statements, startIndex); - emitTempDeclarations(true); emitExportEquals(true); + emitTempDeclarations(true); decreaseIndent(); writeLine(); write("});"); @@ -32789,7 +33887,7 @@ var ts; result = result.replace(/&(\w+);/g, function (s, m) { if (entities[m] !== undefined) { var ch = String.fromCharCode(entities[m]); - return ch === "\"" ? "\\\"" : ch; + return ch === '"' ? "\\\"" : ch; } else { return s; @@ -32799,10 +33897,10 @@ var ts; return result; } function isJsxChildEmittable(child) { - if (child.kind === 244) { + if (child.kind === 247) { return !!child.expression; } - else if (child.kind === 240) { + else if (child.kind === 243) { return !!getTextToEmit(child); } return true; @@ -32826,9 +33924,9 @@ var ts; function emitJsxText(node) { switch (compilerOptions.jsx) { case 2: - write("\""); + write('"'); write(trimReactWhitespaceAndApplyEntities(node)); - write("\""); + write('"'); break; case 1: default: @@ -32852,7 +33950,7 @@ var ts; } } function isUseStrictPrologue(node) { - return !!node.expression.text.match(/use strict/); + return node.expression.text === "use strict"; } function ensureUseStrictPrologue(startWithNewLine, writeUseStrict) { if (writeUseStrict) { @@ -32894,10 +33992,14 @@ var ts; } function emitEmitHelpers(node) { if (!compilerOptions.noEmitHelpers) { - if ((languageVersion < 2) && (!extendsEmitted && node.flags & 262144)) { + if (languageVersion < 2 && !extendsEmitted && node.flags & 262144) { writeLines(extendsHelper); extendsEmitted = true; } + if (compilerOptions.jsx !== 1 && !assignEmitted && (node.flags & 1073741824)) { + writeLines(assignHelper); + assignEmitted = true; + } if (!decorateEmitted && node.flags & 524288) { writeLines(decorateHelper); if (compilerOptions.emitDecoratorMetadata) { @@ -32992,28 +34094,28 @@ var ts; } function isSpecializedCommentHandling(node) { switch (node.kind) { + case 221: case 219: - case 217: - case 226: - case 225: - case 220: - case 231: + case 229: + case 228: + case 222: + case 234: return true; } } function shouldEmitLeadingAndTrailingComments(node) { switch (node.kind) { - case 197: + case 199: return shouldEmitLeadingAndTrailingCommentsForVariableStatement(node); - case 222: + case 224: return shouldEmitModuleDeclaration(node); - case 221: + case 223: return shouldEmitEnumDeclaration(node); } ts.Debug.assert(!isSpecializedCommentHandling(node)); - if (node.kind !== 196 && + if (node.kind !== 198 && node.parent && - node.parent.kind === 178 && + node.parent.kind === 179 && node.parent.body === node && compilerOptions.target <= 1) { return false; @@ -33024,13 +34126,13 @@ var ts; switch (node.kind) { case 69: return emitIdentifier(node); - case 140: + case 141: return emitParameter(node); + case 146: case 145: - case 144: return emitMethod(node); - case 147: case 148: + case 149: return emitAccessor(node); case 97: return emitThis(node); @@ -33050,142 +34152,142 @@ var ts; case 13: case 14: return emitLiteral(node); - case 187: - return emitTemplateExpression(node); - case 194: - return emitTemplateSpan(node); - case 237: - case 238: - return emitJsxElement(node); - case 240: - return emitJsxText(node); - case 244: - return emitJsxExpression(node); - case 137: - return emitQualifiedName(node); - case 165: - return emitObjectBindingPattern(node); - case 166: - return emitArrayBindingPattern(node); - case 167: - return emitBindingElement(node); - case 168: - return emitArrayLiteral(node); - case 169: - return emitObjectLiteral(node); - case 249: - return emitPropertyAssignment(node); - case 250: - return emitShorthandPropertyAssignment(node); - case 138: - return emitComputedPropertyName(node); - case 170: - return emitPropertyAccess(node); - case 171: - return emitIndexedAccess(node); - case 172: - return emitCallExpression(node); - case 173: - return emitNewExpression(node); - case 174: - return emitTaggedTemplateExpression(node); - case 175: - return emit(node.expression); - case 193: - return emit(node.expression); - case 176: - return emitParenExpression(node); - case 217: - case 177: - case 178: - return emitFunctionDeclaration(node); - case 179: - return emitDeleteExpression(node); - case 180: - return emitTypeOfExpression(node); - case 181: - return emitVoidExpression(node); - case 182: - return emitAwaitExpression(node); - case 183: - return emitPrefixUnaryExpression(node); - case 184: - return emitPostfixUnaryExpression(node); - case 185: - return emitBinaryExpression(node); - case 186: - return emitConditionalExpression(node); - case 189: - return emitSpreadElementExpression(node); case 188: - return emitYieldExpression(node); - case 191: - return; + return emitTemplateExpression(node); case 196: - case 223: - return emitBlock(node); - case 197: - return emitVariableStatement(node); - case 198: - return write(";"); - case 199: - return emitExpressionStatement(node); - case 200: - return emitIfStatement(node); - case 201: - return emitDoStatement(node); - case 202: - return emitWhileStatement(node); - case 203: - return emitForStatement(node); - case 205: - case 204: - return emitForInOrForOfStatement(node); - case 206: - case 207: - return emitBreakOrContinueStatement(node); - case 208: - return emitReturnStatement(node); - case 209: - return emitWithStatement(node); - case 210: - return emitSwitchStatement(node); - case 245: - case 246: - return emitCaseOrDefaultClause(node); - case 211: - return emitLabeledStatement(node); - case 212: - return emitThrowStatement(node); - case 213: - return emitTryStatement(node); - case 248: - return emitCatchClause(node); - case 214: - return emitDebuggerStatement(node); - case 215: - return emitVariableDeclaration(node); - case 190: - return emitClassExpression(node); - case 218: - return emitClassDeclaration(node); - case 219: - return emitInterfaceDeclaration(node); - case 221: - return emitEnumDeclaration(node); - case 251: - return emitEnumMember(node); - case 222: - return emitModuleDeclaration(node); - case 226: - return emitImportDeclaration(node); - case 225: - return emitImportEqualsDeclaration(node); - case 232: - return emitExportDeclaration(node); - case 231: - return emitExportAssignment(node); + return emitTemplateSpan(node); + case 240: + case 241: + return emitJsxElement(node); + case 243: + return emitJsxText(node); + case 247: + return emitJsxExpression(node); + case 138: + return emitQualifiedName(node); + case 166: + return emitObjectBindingPattern(node); + case 167: + return emitArrayBindingPattern(node); + case 168: + return emitBindingElement(node); + case 169: + return emitArrayLiteral(node); + case 170: + return emitObjectLiteral(node); case 252: + return emitPropertyAssignment(node); + case 253: + return emitShorthandPropertyAssignment(node); + case 139: + return emitComputedPropertyName(node); + case 171: + return emitPropertyAccess(node); + case 172: + return emitIndexedAccess(node); + case 173: + return emitCallExpression(node); + case 174: + return emitNewExpression(node); + case 175: + return emitTaggedTemplateExpression(node); + case 176: + case 194: + case 195: + return emit(node.expression); + case 177: + return emitParenExpression(node); + case 219: + case 178: + case 179: + return emitFunctionDeclaration(node); + case 180: + return emitDeleteExpression(node); + case 181: + return emitTypeOfExpression(node); + case 182: + return emitVoidExpression(node); + case 183: + return emitAwaitExpression(node); + case 184: + return emitPrefixUnaryExpression(node); + case 185: + return emitPostfixUnaryExpression(node); + case 186: + return emitBinaryExpression(node); + case 187: + return emitConditionalExpression(node); + case 190: + return emitSpreadElementExpression(node); + case 189: + return emitYieldExpression(node); + case 192: + return; + case 198: + case 225: + return emitBlock(node); + case 199: + return emitVariableStatement(node); + case 200: + return write(";"); + case 201: + return emitExpressionStatement(node); + case 202: + return emitIfStatement(node); + case 203: + return emitDoStatement(node); + case 204: + return emitWhileStatement(node); + case 205: + return emitForStatement(node); + case 207: + case 206: + return emitForInOrForOfStatement(node); + case 208: + case 209: + return emitBreakOrContinueStatement(node); + case 210: + return emitReturnStatement(node); + case 211: + return emitWithStatement(node); + case 212: + return emitSwitchStatement(node); + case 248: + case 249: + return emitCaseOrDefaultClause(node); + case 213: + return emitLabeledStatement(node); + case 214: + return emitThrowStatement(node); + case 215: + return emitTryStatement(node); + case 251: + return emitCatchClause(node); + case 216: + return emitDebuggerStatement(node); + case 217: + return emitVariableDeclaration(node); + case 191: + return emitClassExpression(node); + case 220: + return emitClassDeclaration(node); + case 221: + return emitInterfaceDeclaration(node); + case 223: + return emitEnumDeclaration(node); + case 254: + return emitEnumMember(node); + case 224: + return emitModuleDeclaration(node); + case 229: + return emitImportDeclaration(node); + case 228: + return emitImportEqualsDeclaration(node); + case 235: + return emitExportDeclaration(node); + case 234: + return emitExportAssignment(node); + case 255: return emitSourceFileNode(node); } } @@ -33215,7 +34317,7 @@ var ts; } function getLeadingCommentsToEmit(node) { if (node.parent) { - if (node.parent.kind === 252 || node.pos !== node.parent.pos) { + if (node.parent.kind === 255 || node.pos !== node.parent.pos) { if (hasDetachedComments(node.pos)) { return getLeadingCommentsWithoutDetachedComments(); } @@ -33227,7 +34329,7 @@ var ts; } function getTrailingCommentsToEmit(node) { if (node.parent) { - if (node.parent.kind === 252 || node.end !== node.parent.end) { + if (node.parent.kind === 255 || node.end !== node.parent.end) { return ts.getTrailingCommentRanges(currentText, node.end); } } @@ -33318,6 +34420,15 @@ var ts; if (declarationFilePath) { emitSkipped = ts.writeDeclarationFile(declarationFilePath, sourceFiles, isBundledEmit, host, resolver, emitterDiagnostics) || emitSkipped; } + if (!emitSkipped && emittedFilesList) { + emittedFilesList.push(jsFilePath); + if (sourceMapFilePath) { + emittedFilesList.push(sourceMapFilePath); + } + if (declarationFilePath) { + emittedFilesList.push(declarationFilePath); + } + } } } ts.emitFiles = emitFiles; @@ -33329,10 +34440,15 @@ var ts; ts.ioReadTime = 0; ts.ioWriteTime = 0; var emptyArray = []; + var defaultLibrarySearchPaths = [ + "types/", + "node_modules/", + "node_modules/@types/", + ]; ts.version = "1.9.0"; function findConfigFile(searchPath, fileExists) { - var fileName = "tsconfig.json"; while (true) { + var fileName = ts.combinePaths(searchPath, "tsconfig.json"); if (fileExists(fileName)) { return fileName; } @@ -33341,7 +34457,6 @@ var ts; break; } searchPath = parentPath; - fileName = "../" + fileName; } return undefined; } @@ -33352,18 +34467,42 @@ var ts; return ts.normalizePath(referencedFileName); } ts.resolveTripleslashReference = resolveTripleslashReference; + function computeCommonSourceDirectoryOfFilenames(fileNames, currentDirectory, getCanonicalFileName) { + var commonPathComponents; + var failed = ts.forEach(fileNames, function (sourceFile) { + var sourcePathComponents = ts.getNormalizedPathComponents(sourceFile, currentDirectory); + sourcePathComponents.pop(); + if (!commonPathComponents) { + commonPathComponents = sourcePathComponents; + return; + } + for (var i = 0, n = Math.min(commonPathComponents.length, sourcePathComponents.length); i < n; i++) { + if (getCanonicalFileName(commonPathComponents[i]) !== getCanonicalFileName(sourcePathComponents[i])) { + if (i === 0) { + return true; + } + commonPathComponents.length = i; + break; + } + } + if (sourcePathComponents.length < commonPathComponents.length) { + commonPathComponents.length = sourcePathComponents.length; + } + }); + if (failed) { + return ""; + } + if (!commonPathComponents) { + return currentDirectory; + } + return ts.getNormalizedPathFromPathComponents(commonPathComponents); + } + ts.computeCommonSourceDirectoryOfFilenames = computeCommonSourceDirectoryOfFilenames; function trace(host, message) { host.trace(ts.formatMessage.apply(undefined, arguments)); } function isTraceEnabled(compilerOptions, host) { - return compilerOptions.traceModuleResolution && host.trace !== undefined; - } - function startsWith(str, prefix) { - return str.lastIndexOf(prefix, 0) === 0; - } - function endsWith(str, suffix) { - var expectedPos = str.length - suffix.length; - return str.indexOf(suffix, expectedPos) === expectedPos; + return compilerOptions.traceResolution && host.trace !== undefined; } function hasZeroOrOneAsteriskCharacter(str) { var seenAsterisk = false; @@ -33390,6 +34529,139 @@ var ts; var startsWithDotSlashOrDotDotSlash = i === 0 || (i === 1 && moduleName.charCodeAt(0) === 46); return !startsWithDotSlashOrDotDotSlash; } + function tryReadTypesSection(packageJsonPath, baseDirectory, state) { + var jsonContent; + try { + var jsonText = state.host.readFile(packageJsonPath); + jsonContent = jsonText ? JSON.parse(jsonText) : {}; + } + catch (e) { + jsonContent = {}; + } + var typesFile; + var fieldName; + if (jsonContent.typings) { + if (typeof jsonContent.typings === "string") { + fieldName = "typings"; + typesFile = jsonContent.typings; + } + else { + if (state.traceEnabled) { + trace(state.host, ts.Diagnostics.Expected_type_of_0_field_in_package_json_to_be_string_got_1, "typings", typeof jsonContent.typings); + } + } + } + if (!typesFile && jsonContent.types) { + if (typeof jsonContent.types === "string") { + fieldName = "types"; + typesFile = jsonContent.types; + } + else { + if (state.traceEnabled) { + trace(state.host, ts.Diagnostics.Expected_type_of_0_field_in_package_json_to_be_string_got_1, "types", typeof jsonContent.types); + } + } + } + if (typesFile) { + var typesFilePath = ts.normalizePath(ts.combinePaths(baseDirectory, typesFile)); + if (state.traceEnabled) { + trace(state.host, ts.Diagnostics.package_json_has_0_field_1_that_references_2, fieldName, typesFile, typesFilePath); + } + return typesFilePath; + } + return undefined; + } + var typeReferenceExtensions = [".d.ts"]; + function resolveTypeReferenceDirective(typeReferenceDirectiveName, containingFile, options, host) { + var traceEnabled = isTraceEnabled(options, host); + var moduleResolutionState = { + compilerOptions: options, + host: host, + skipTsx: true, + traceEnabled: traceEnabled + }; + var rootDir = options.typesRoot || (options.configFilePath ? ts.getDirectoryPath(options.configFilePath) : undefined); + if (traceEnabled) { + if (containingFile === undefined) { + if (rootDir === undefined) { + trace(host, ts.Diagnostics.Resolving_type_reference_directive_0_containing_file_not_set_root_directory_not_set, typeReferenceDirectiveName); + } + else { + trace(host, ts.Diagnostics.Resolving_type_reference_directive_0_containing_file_not_set_root_directory_1, typeReferenceDirectiveName, rootDir); + } + } + else { + if (rootDir === undefined) { + trace(host, ts.Diagnostics.Resolving_type_reference_directive_0_containing_file_1_root_directory_not_set, typeReferenceDirectiveName, containingFile); + } + else { + trace(host, ts.Diagnostics.Resolving_type_reference_directive_0_containing_file_1_root_directory_2, typeReferenceDirectiveName, containingFile, rootDir); + } + } + } + var failedLookupLocations = []; + if (rootDir !== undefined) { + var effectivePrimarySearchPaths = options.typesSearchPaths || defaultLibrarySearchPaths; + for (var _i = 0, effectivePrimarySearchPaths_1 = effectivePrimarySearchPaths; _i < effectivePrimarySearchPaths_1.length; _i++) { + var searchPath = effectivePrimarySearchPaths_1[_i]; + var primaryPath = ts.combinePaths(rootDir, searchPath); + if (traceEnabled) { + trace(host, ts.Diagnostics.Resolving_with_primary_search_path_0, primaryPath); + } + var candidate = ts.combinePaths(primaryPath, typeReferenceDirectiveName); + var candidateDirectory = ts.getDirectoryPath(candidate); + var resolvedFile_1 = loadNodeModuleFromDirectory(typeReferenceExtensions, candidate, failedLookupLocations, !directoryProbablyExists(candidateDirectory, host), moduleResolutionState); + if (resolvedFile_1) { + if (traceEnabled) { + trace(host, ts.Diagnostics.Type_reference_directive_0_was_successfully_resolved_to_1_primary_Colon_2, typeReferenceDirectiveName, resolvedFile_1, true); + } + return { + resolvedTypeReferenceDirective: { primary: true, resolvedFileName: resolvedFile_1 }, + failedLookupLocations: failedLookupLocations + }; + } + } + } + else { + if (traceEnabled) { + trace(host, ts.Diagnostics.Root_directory_cannot_be_determined_skipping_primary_search_paths); + } + } + var resolvedFile; + var initialLocationForSecondaryLookup; + if (containingFile) { + initialLocationForSecondaryLookup = ts.getDirectoryPath(containingFile); + } + else { + initialLocationForSecondaryLookup = rootDir; + } + if (initialLocationForSecondaryLookup !== undefined) { + if (traceEnabled) { + trace(host, ts.Diagnostics.Looking_up_in_node_modules_folder_initial_location_0, initialLocationForSecondaryLookup); + } + resolvedFile = loadModuleFromNodeModules(typeReferenceDirectiveName, initialLocationForSecondaryLookup, failedLookupLocations, moduleResolutionState); + if (traceEnabled) { + if (resolvedFile) { + trace(host, ts.Diagnostics.Type_reference_directive_0_was_successfully_resolved_to_1_primary_Colon_2, typeReferenceDirectiveName, resolvedFile, false); + } + else { + trace(host, ts.Diagnostics.Type_reference_directive_0_was_not_resolved, typeReferenceDirectiveName); + } + } + } + else { + if (traceEnabled) { + trace(host, ts.Diagnostics.Containing_file_is_not_specified_and_root_directory_cannot_be_determined_skipping_lookup_in_node_modules_folder); + } + } + return { + resolvedTypeReferenceDirective: resolvedFile + ? { primary: false, resolvedFileName: resolvedFile } + : undefined, + failedLookupLocations: failedLookupLocations + }; + } + ts.resolveTypeReferenceDirective = resolveTypeReferenceDirective; function resolveModuleName(moduleName, containingFile, compilerOptions, host) { var traceEnabled = isTraceEnabled(compilerOptions, host); if (traceEnabled) { @@ -33448,10 +34720,10 @@ var ts; for (var _i = 0, _a = state.compilerOptions.rootDirs; _i < _a.length; _i++) { var rootDir = _a[_i]; var normalizedRoot = ts.normalizePath(rootDir); - if (!endsWith(normalizedRoot, ts.directorySeparator)) { + if (!ts.endsWith(normalizedRoot, ts.directorySeparator)) { normalizedRoot += ts.directorySeparator; } - var isLongestMatchingPrefix = startsWith(candidate, normalizedRoot) && + var isLongestMatchingPrefix = ts.startsWith(candidate, normalizedRoot) && (matchedNormalizedPrefix === undefined || matchedNormalizedPrefix.length < normalizedRoot.length); if (state.traceEnabled) { trace(state.host, ts.Diagnostics.Checking_if_0_is_the_longest_matching_prefix_for_1_2, normalizedRoot, candidate, isLongestMatchingPrefix); @@ -33518,8 +34790,8 @@ var ts; var prefix = pattern.substr(0, indexOfStar); var suffix = pattern.substr(indexOfStar + 1); if (moduleName.length >= prefix.length + suffix.length && - startsWith(moduleName, prefix) && - endsWith(moduleName, suffix)) { + ts.startsWith(moduleName, prefix) && + ts.endsWith(moduleName, suffix)) { if (prefix.length > longestMatchPrefixLength) { longestMatchPrefixLength = prefix.length; matchedPattern = pattern; @@ -33597,6 +34869,12 @@ var ts; } ts.directoryProbablyExists = directoryProbablyExists; function loadModuleFromFile(candidate, extensions, failedLookupLocation, onlyRecordFailures, state) { + if (!onlyRecordFailures) { + var directory = ts.getDirectoryPath(candidate); + if (directory) { + onlyRecordFailures = !directoryProbablyExists(directory, state.host); + } + } return ts.forEach(extensions, tryLoad); function tryLoad(ext) { if (ext === ".tsx" && state.skipTsx) { @@ -33605,7 +34883,7 @@ var ts; var fileName = ts.fileExtensionIs(candidate, ext) ? candidate : candidate + ext; if (!onlyRecordFailures && state.host.fileExists(fileName)) { if (state.traceEnabled) { - trace(state.host, ts.Diagnostics.File_0_exist_use_it_as_a_module_resolution_result, fileName); + trace(state.host, ts.Diagnostics.File_0_exist_use_it_as_a_name_resolution_result, fileName); } return fileName; } @@ -33625,32 +34903,16 @@ var ts; if (state.traceEnabled) { trace(state.host, ts.Diagnostics.Found_package_json_at_0, packageJsonPath); } - var jsonContent = void 0; - try { - var jsonText = state.host.readFile(packageJsonPath); - jsonContent = jsonText ? JSON.parse(jsonText) : { typings: undefined }; - } - catch (e) { - jsonContent = { typings: undefined }; - } - if (jsonContent.typings) { - if (typeof jsonContent.typings === "string") { - var typingsFile = ts.normalizePath(ts.combinePaths(candidate, jsonContent.typings)); - if (state.traceEnabled) { - trace(state.host, ts.Diagnostics.package_json_has_typings_field_0_that_references_1, jsonContent.typings, typingsFile); - } - var result = loadModuleFromFile(typingsFile, extensions, failedLookupLocation, !directoryProbablyExists(ts.getDirectoryPath(typingsFile), state.host), state); - if (result) { - return result; - } - } - else if (state.traceEnabled) { - trace(state.host, ts.Diagnostics.Expected_type_of_typings_field_in_package_json_to_be_string_got_0, typeof jsonContent.typings); + var typesFile = tryReadTypesSection(packageJsonPath, candidate, state); + if (typesFile) { + var result = loadModuleFromFile(typesFile, extensions, failedLookupLocation, !directoryProbablyExists(ts.getDirectoryPath(typesFile), state.host), state); + if (result) { + return result; } } else { if (state.traceEnabled) { - trace(state.host, ts.Diagnostics.package_json_does_not_have_typings_field); + trace(state.host, ts.Diagnostics.package_json_does_not_have_types_field); } } } @@ -33662,19 +34924,26 @@ var ts; } return loadModuleFromFile(ts.combinePaths(candidate, "index"), extensions, failedLookupLocation, !directoryExists, state); } + function loadModuleFromNodeModulesFolder(moduleName, directory, failedLookupLocations, state) { + 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); + if (result) { + return result; + } + result = loadNodeModuleFromDirectory(ts.supportedTypeScriptExtensions, candidate, failedLookupLocations, !nodeModulesFolderExists, state); + if (result) { + return result; + } + } function loadModuleFromNodeModules(moduleName, directory, failedLookupLocations, state) { directory = ts.normalizeSlashes(directory); while (true) { var baseName = ts.getBaseFileName(directory); if (baseName !== "node_modules") { - 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); - if (result) { - return result; - } - result = loadNodeModuleFromDirectory(ts.supportedTypeScriptExtensions, candidate, failedLookupLocations, !nodeModulesFolderExists, state); + var result = loadModuleFromNodeModulesFolder(moduleName, directory, failedLookupLocations, state) || + loadModuleFromNodeModulesFolder(ts.combinePaths("@types", moduleName), directory, failedLookupLocations, state); if (result) { return result; } @@ -33767,11 +35036,39 @@ var ts; ts.sys.createDirectory(directoryPath); } } + var outputFingerprints; + function writeFileIfUpdated(fileName, data, writeByteOrderMark) { + if (!outputFingerprints) { + outputFingerprints = {}; + } + var hash = ts.sys.createHash(data); + var mtimeBefore = ts.sys.getModifiedTime(fileName); + if (mtimeBefore && ts.hasProperty(outputFingerprints, fileName)) { + var fingerprint = outputFingerprints[fileName]; + if (fingerprint.byteOrderMark === writeByteOrderMark && + fingerprint.hash === hash && + fingerprint.mtime.getTime() === mtimeBefore.getTime()) { + return; + } + } + ts.sys.writeFile(fileName, data, writeByteOrderMark); + var mtimeAfter = ts.sys.getModifiedTime(fileName); + outputFingerprints[fileName] = { + hash: hash, + byteOrderMark: writeByteOrderMark, + mtime: mtimeAfter + }; + } function writeFile(fileName, data, writeByteOrderMark, onError) { try { var start = new Date().getTime(); ensureDirectoriesExist(ts.getDirectoryPath(ts.normalizePath(fileName))); - ts.sys.writeFile(fileName, data, writeByteOrderMark); + if (ts.isWatchSet(options) && ts.sys.createHash && ts.sys.getModifiedTime) { + writeFileIfUpdated(fileName, data, writeByteOrderMark); + } + else { + ts.sys.writeFile(fileName, data, writeByteOrderMark); + } ts.ioWriteTime += new Date().getTime() - start; } catch (e) { @@ -33780,10 +35077,14 @@ var ts; } } } + function getDefaultLibLocation() { + return ts.getDirectoryPath(ts.normalizePath(ts.sys.getExecutingFilePath())); + } var newLine = ts.getNewLineCharacter(options); return { getSourceFile: getSourceFile, - getDefaultLibFileName: function (options) { return ts.combinePaths(ts.getDirectoryPath(ts.normalizePath(ts.sys.getExecutingFilePath())), ts.getDefaultLibFileName(options)); }, + getDefaultLibLocation: getDefaultLibLocation, + getDefaultLibFileName: function (options) { return ts.combinePaths(getDefaultLibLocation(), ts.getDefaultLibFileName(options)); }, writeFile: writeFile, getCurrentDirectory: ts.memoize(function () { return ts.sys.getCurrentDirectory(); }), useCaseSensitiveFileNames: function () { return ts.sys.useCaseSensitiveFileNames; }, @@ -33827,57 +35128,78 @@ var ts; } } ts.flattenDiagnosticMessageText = flattenDiagnosticMessageText; + function loadWithLocalCache(names, containingFile, loader) { + if (names.length === 0) { + return []; + } + var resolutions = []; + var cache = {}; + for (var _i = 0, names_1 = names; _i < names_1.length; _i++) { + var name_33 = names_1[_i]; + var result = void 0; + if (ts.hasProperty(cache, name_33)) { + result = cache[name_33]; + } + else { + result = loader(name_33, containingFile); + cache[name_33] = result; + } + resolutions.push(result); + } + return resolutions; + } function createProgram(rootNames, options, host, oldProgram) { var program; var files = []; - var fileProcessingDiagnostics = ts.createDiagnosticCollection(); - var programDiagnostics = ts.createDiagnosticCollection(); var commonSourceDirectory; var diagnosticsProducingTypeChecker; var noDiagnosticsTypeChecker; var classifiableNames; - var skipDefaultLib = options.noLib; - var supportedExtensions = ts.getSupportedExtensions(options); + var resolvedTypeReferenceDirectives = {}; + var fileProcessingDiagnostics = ts.createDiagnosticCollection(); var start = new Date().getTime(); host = host || createCompilerHost(options); - var hasEmitBlockingDiagnostics = ts.createFileMap(getCanonicalFileName); + var skipDefaultLib = options.noLib; + var programDiagnostics = ts.createDiagnosticCollection(); var currentDirectory = host.getCurrentDirectory(); - var resolveModuleNamesWorker = host.resolveModuleNames - ? (function (moduleNames, containingFile) { return host.resolveModuleNames(moduleNames, containingFile); }) - : (function (moduleNames, containingFile) { - var resolvedModuleNames = []; - var lookup = {}; - for (var _i = 0, moduleNames_1 = moduleNames; _i < moduleNames_1.length; _i++) { - var moduleName = moduleNames_1[_i]; - var resolvedName = void 0; - if (ts.hasProperty(lookup, moduleName)) { - resolvedName = lookup[moduleName]; - } - else { - resolvedName = resolveModuleName(moduleName, containingFile, options, host).resolvedModule; - lookup[moduleName] = resolvedName; - } - resolvedModuleNames.push(resolvedName); - } - return resolvedModuleNames; - }); + var supportedExtensions = ts.getSupportedExtensions(options); + var hasEmitBlockingDiagnostics = ts.createFileMap(getCanonicalFileName); + var resolveModuleNamesWorker; + if (host.resolveModuleNames) { + resolveModuleNamesWorker = function (moduleNames, containingFile) { return host.resolveModuleNames(moduleNames, containingFile); }; + } + else { + var loader_1 = function (moduleName, containingFile) { return resolveModuleName(moduleName, containingFile, options, host).resolvedModule; }; + resolveModuleNamesWorker = function (moduleNames, containingFile) { return loadWithLocalCache(moduleNames, containingFile, loader_1); }; + } + var resolveTypeReferenceDirectiveNamesWorker; + if (host.resolveTypeReferenceDirectives) { + resolveTypeReferenceDirectiveNamesWorker = function (typeDirectiveNames, containingFile) { return host.resolveTypeReferenceDirectives(typeDirectiveNames, containingFile); }; + } + else { + var loader_2 = function (typesRef, containingFile) { return resolveTypeReferenceDirective(typesRef, containingFile, options, host).resolvedTypeReferenceDirective; }; + resolveTypeReferenceDirectiveNamesWorker = function (typeReferenceDirectiveNames, containingFile) { return loadWithLocalCache(typeReferenceDirectiveNames, containingFile, loader_2); }; + } var filesByName = ts.createFileMap(); var filesByNameIgnoreCase = host.useCaseSensitiveFileNames() ? ts.createFileMap(function (fileName) { return fileName.toLowerCase(); }) : undefined; - if (oldProgram) { - var oldOptions = oldProgram.getCompilerOptions(); - if ((oldOptions.module !== options.module) || - (oldOptions.noResolve !== options.noResolve) || - (oldOptions.target !== options.target) || - (oldOptions.noLib !== options.noLib) || - (oldOptions.jsx !== options.jsx) || - (oldOptions.allowJs !== options.allowJs)) { - oldProgram = undefined; - } - } if (!tryReuseStructureFromOldProgram()) { + if (options.types && options.types.length) { + var resolutions = resolveTypeReferenceDirectiveNamesWorker(options.types, undefined); + for (var i = 0; i < options.types.length; i++) { + processTypeReferenceDirective(options.types[i], resolutions[i]); + } + } ts.forEach(rootNames, function (name) { return processRootFile(name, false); }); if (!skipDefaultLib) { - processRootFile(host.getDefaultLibFileName(options), true); + if (!options.lib) { + processRootFile(host.getDefaultLibFileName(options), true); + } + else { + var libDirectory_1 = host.getDefaultLibLocation ? host.getDefaultLibLocation() : ts.getDirectoryPath(host.getDefaultLibFileName(options)); + ts.forEach(options.lib, function (libFileName) { + processRootFile(ts.combinePaths(libDirectory_1, libFileName), true); + }); + } } } oldProgram = undefined; @@ -33901,7 +35223,8 @@ var ts; getIdentifierCount: function () { return getDiagnosticsProducingTypeChecker().getIdentifierCount(); }, getSymbolCount: function () { return getDiagnosticsProducingTypeChecker().getSymbolCount(); }, getTypeCount: function () { return getDiagnosticsProducingTypeChecker().getTypeCount(); }, - getFileProcessingDiagnostics: function () { return fileProcessingDiagnostics; } + getFileProcessingDiagnostics: function () { return fileProcessingDiagnostics; }, + resolvedTypeReferenceDirectives: resolvedTypeReferenceDirectives }; verifyCompilerOptions(); ts.programTime += new Date().getTime() - start; @@ -33935,11 +35258,26 @@ var ts; if (!oldProgram) { return false; } + var oldOptions = oldProgram.getCompilerOptions(); + if ((oldOptions.module !== options.module) || + (oldOptions.noResolve !== options.noResolve) || + (oldOptions.target !== options.target) || + (oldOptions.noLib !== options.noLib) || + (oldOptions.jsx !== options.jsx) || + (oldOptions.allowJs !== options.allowJs) || + (oldOptions.rootDir !== options.rootDir) || + (oldOptions.typesSearchPaths !== options.typesSearchPaths) || + (oldOptions.configFilePath !== options.configFilePath)) { + return false; + } ts.Debug.assert(!oldProgram.structureIsReused); var oldRootNames = oldProgram.getRootFileNames(); if (!ts.arrayIsEqualTo(oldRootNames, rootNames)) { return false; } + if (!ts.arrayIsEqualTo(options.types, oldOptions.types)) { + return false; + } var newSourceFiles = []; var filePaths = []; var modifiedSourceFiles = []; @@ -33965,23 +35303,28 @@ var ts; if (!ts.arrayIsEqualTo(oldSourceFile.moduleAugmentations, newSourceFile.moduleAugmentations, moduleNameIsEqualTo)) { return false; } + if (!ts.arrayIsEqualTo(oldSourceFile.typeReferenceDirectives, newSourceFile.typeReferenceDirectives, fileReferenceIsEqualTo)) { + return false; + } + var newSourceFilePath = ts.getNormalizedAbsolutePath(newSourceFile.fileName, currentDirectory); if (resolveModuleNamesWorker) { var moduleNames = ts.map(ts.concatenate(newSourceFile.imports, newSourceFile.moduleAugmentations), getTextOfLiteral); - var resolutions = resolveModuleNamesWorker(moduleNames, ts.getNormalizedAbsolutePath(newSourceFile.fileName, currentDirectory)); - for (var i = 0; i < moduleNames.length; i++) { - var newResolution = resolutions[i]; - var oldResolution = ts.getResolvedModule(oldSourceFile, moduleNames[i]); - var resolutionChanged = oldResolution - ? !newResolution || - oldResolution.resolvedFileName !== newResolution.resolvedFileName || - !!oldResolution.isExternalLibraryImport !== !!newResolution.isExternalLibraryImport - : newResolution; - if (resolutionChanged) { - return false; - } + var resolutions = resolveModuleNamesWorker(moduleNames, newSourceFilePath); + var resolutionsChanged = ts.hasChangesInResolutions(moduleNames, resolutions, oldSourceFile.resolvedModules, ts.moduleResolutionIsEqualTo); + if (resolutionsChanged) { + return false; + } + } + if (resolveTypeReferenceDirectiveNamesWorker) { + var typesReferenceDirectives = ts.map(newSourceFile.typeReferenceDirectives, function (x) { return x.fileName; }); + var resolutions = resolveTypeReferenceDirectiveNamesWorker(typesReferenceDirectives, newSourceFilePath); + var resolutionsChanged = ts.hasChangesInResolutions(typesReferenceDirectives, resolutions, oldSourceFile.resolvedTypeReferenceDirectiveNames, ts.typeDirectiveIsEqualTo); + if (resolutionsChanged) { + return false; } } newSourceFile.resolvedModules = oldSourceFile.resolvedModules; + newSourceFile.resolvedTypeReferenceDirectiveNames = oldSourceFile.resolvedTypeReferenceDirectiveNames; modifiedSourceFiles.push(newSourceFile); } else { @@ -33998,6 +35341,7 @@ var ts; var modifiedFile = modifiedSourceFiles_1[_b]; fileProcessingDiagnostics.reattachFileDiagnostics(modifiedFile); } + resolvedTypeReferenceDirectives = oldProgram.resolvedTypeReferenceDirectives; oldProgram.structureIsReused = true; return true; } @@ -34010,7 +35354,7 @@ var ts; getNewLine: function () { return host.getNewLine(); }, getSourceFile: program.getSourceFile, getSourceFiles: program.getSourceFiles, - writeFile: writeFileCallback || (function (fileName, data, writeByteOrderMark, onError) { return host.writeFile(fileName, data, writeByteOrderMark, onError); }), + writeFile: writeFileCallback || (function (fileName, data, writeByteOrderMark, onError, sourceFiles) { return host.writeFile(fileName, data, writeByteOrderMark, onError, sourceFiles); }), isEmitBlocked: isEmitBlocked }; } @@ -34030,7 +35374,7 @@ var ts; function emitWorker(program, sourceFile, writeFileCallback, cancellationToken) { var declarationDiagnostics = []; if (options.noEmit) { - return { diagnostics: declarationDiagnostics, sourceMaps: undefined, emitSkipped: true }; + return { diagnostics: declarationDiagnostics, sourceMaps: undefined, emittedFiles: undefined, emitSkipped: true }; } if (options.noEmitOnError) { var diagnostics = program.getOptionsDiagnostics(cancellationToken).concat(program.getSyntacticDiagnostics(sourceFile, cancellationToken), program.getGlobalDiagnostics(cancellationToken), program.getSemanticDiagnostics(sourceFile, cancellationToken)); @@ -34038,7 +35382,12 @@ var ts; declarationDiagnostics = program.getDeclarationDiagnostics(undefined, cancellationToken); } if (diagnostics.length > 0 || declarationDiagnostics.length > 0) { - return { diagnostics: diagnostics, sourceMaps: undefined, emitSkipped: true }; + return { + diagnostics: ts.concatenate(diagnostics, declarationDiagnostics), + sourceMaps: undefined, + emittedFiles: undefined, + emitSkipped: true + }; } } var emitResolver = getDiagnosticsProducingTypeChecker().getEmitResolver((options.outFile || options.out) ? undefined : sourceFile); @@ -34070,7 +35419,13 @@ var ts; return getDiagnosticsHelper(sourceFile, getSemanticDiagnosticsForFile, cancellationToken); } function getDeclarationDiagnostics(sourceFile, cancellationToken) { - return getDiagnosticsHelper(sourceFile, getDeclarationDiagnosticsForFile, cancellationToken); + var options = program.getCompilerOptions(); + if (!sourceFile || options.out || options.outFile) { + return getDeclarationDiagnosticsWorker(sourceFile, cancellationToken); + } + else { + return getDiagnosticsHelper(sourceFile, getDeclarationDiagnosticsForFile, cancellationToken); + } } function getSyntacticDiagnosticsForFile(sourceFile, cancellationToken) { return sourceFile.parseDiagnostics; @@ -34110,47 +35465,47 @@ var ts; return false; } switch (node.kind) { - case 225: + case 228: diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.import_can_only_be_used_in_a_ts_file)); return true; - case 231: + case 234: if (node.isExportEquals) { diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.export_can_only_be_used_in_a_ts_file)); return true; } break; - case 218: + case 220: var classDeclaration = node; if (checkModifiers(classDeclaration.modifiers) || checkTypeParameters(classDeclaration.typeParameters)) { return true; } break; - case 247: + case 250: var heritageClause = node; if (heritageClause.token === 106) { diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.implements_clauses_can_only_be_used_in_a_ts_file)); return true; } break; - case 219: + case 221: diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.interface_declarations_can_only_be_used_in_a_ts_file)); return true; - case 222: + case 224: diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.module_declarations_can_only_be_used_in_a_ts_file)); return true; - case 220: + case 222: diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.type_aliases_can_only_be_used_in_a_ts_file)); return true; - case 145: - case 144: case 146: + case 145: case 147: case 148: - case 177: - case 217: + case 149: case 178: - case 217: + case 219: + case 179: + case 219: var functionDeclaration = node; if (checkModifiers(functionDeclaration.modifiers) || checkTypeParameters(functionDeclaration.typeParameters) || @@ -34158,20 +35513,20 @@ var ts; return true; } break; - case 197: + case 199: var variableStatement = node; if (checkModifiers(variableStatement.modifiers)) { return true; } break; - case 215: + case 217: var variableDeclaration = node; if (checkTypeAnnotation(variableDeclaration.type)) { return true; } break; - case 172: case 173: + case 174: var expression = node; if (expression.typeArguments && expression.typeArguments.length > 0) { var start_2 = expression.typeArguments.pos; @@ -34179,7 +35534,7 @@ var ts; return true; } break; - case 140: + case 141: var parameter = node; if (parameter.modifiers) { var start_3 = parameter.modifiers.pos; @@ -34195,17 +35550,17 @@ var ts; return true; } break; - case 143: + case 144: diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.property_declarations_can_only_be_used_in_a_ts_file)); return true; - case 221: + case 223: diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.enum_declarations_can_only_be_used_in_a_ts_file)); return true; - case 175: + case 176: var typeAssertionExpression = node; diagnostics.push(ts.createDiagnosticForNode(typeAssertionExpression.type, ts.Diagnostics.type_assertion_expressions_can_only_be_used_in_a_ts_file)); return true; - case 141: + case 142: if (!options.experimentalDecorators) { diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.Experimental_support_for_decorators_is_a_feature_that_is_subject_to_change_in_a_future_release_Set_the_experimentalDecorators_option_to_remove_this_warning)); } @@ -34252,15 +35607,16 @@ var ts; } }); } - function getDeclarationDiagnosticsForFile(sourceFile, cancellationToken) { + function getDeclarationDiagnosticsWorker(sourceFile, cancellationToken) { return runWithCancellationToken(function () { - if (!ts.isDeclarationFile(sourceFile)) { - var resolver = getDiagnosticsProducingTypeChecker().getEmitResolver(sourceFile, cancellationToken); - var writeFile_1 = function () { }; - return ts.getDeclarationDiagnostics(getEmitHost(writeFile_1), resolver, sourceFile); - } + var resolver = getDiagnosticsProducingTypeChecker().getEmitResolver(sourceFile, cancellationToken); + var writeFile = function () { }; + return ts.getDeclarationDiagnostics(getEmitHost(writeFile), resolver, sourceFile); }); } + function getDeclarationDiagnosticsForFile(sourceFile, cancellationToken) { + return ts.isDeclarationFile(sourceFile) ? [] : getDeclarationDiagnosticsWorker(sourceFile, cancellationToken); + } function getOptionsDiagnostics() { var allDiagnostics = []; ts.addRange(allDiagnostics, fileProcessingDiagnostics.getGlobalDiagnostics()); @@ -34276,7 +35632,7 @@ var ts; return ts.getBaseFileName(fileName).indexOf(".") >= 0; } function processRootFile(fileName, isDefaultLib) { - processSourceFile(ts.normalizePath(fileName), isDefaultLib); + processSourceFile(ts.normalizePath(fileName), isDefaultLib, true); } function fileReferenceIsEqualTo(a, b) { return a.fileName === b.fileName; @@ -34307,9 +35663,9 @@ var ts; return; function collectModuleReferences(node, inAmbientModule) { switch (node.kind) { - case 226: - case 225: - case 232: + case 229: + case 228: + case 235: var moduleNameExpr = ts.getExternalModuleName(node); if (!moduleNameExpr || moduleNameExpr.kind !== 9) { break; @@ -34321,7 +35677,7 @@ var ts; (imports || (imports = [])).push(moduleNameExpr); } break; - case 222: + case 224: if (ts.isAmbientModule(node) && (inAmbientModule || node.flags & 2 || ts.isDeclarationFile(file))) { var moduleName = node.name; if (isExternalModuleFile || (inAmbientModule && !ts.isExternalModuleNameRelative(moduleName.text))) { @@ -34345,7 +35701,7 @@ var ts; } } } - function processSourceFile(fileName, isDefaultLib, refFile, refPos, refEnd) { + function processSourceFile(fileName, isDefaultLib, isReference, refFile, refPos, refEnd) { var diagnosticArgument; var diagnostic; if (hasExtension(fileName)) { @@ -34353,7 +35709,7 @@ var ts; diagnostic = ts.Diagnostics.File_0_has_unsupported_extension_The_only_supported_extensions_are_1; diagnosticArgument = [fileName, "'" + supportedExtensions.join("', '") + "'"]; } - else if (!findSourceFile(fileName, ts.toPath(fileName, currentDirectory, getCanonicalFileName), isDefaultLib, refFile, refPos, refEnd)) { + else if (!findSourceFile(fileName, ts.toPath(fileName, currentDirectory, getCanonicalFileName), isDefaultLib, isReference, refFile, refPos, refEnd)) { diagnostic = ts.Diagnostics.File_0_not_found; diagnosticArgument = [fileName]; } @@ -34363,13 +35719,13 @@ var ts; } } else { - var nonTsFile = options.allowNonTsExtensions && findSourceFile(fileName, ts.toPath(fileName, currentDirectory, getCanonicalFileName), isDefaultLib, refFile, refPos, refEnd); + var nonTsFile = options.allowNonTsExtensions && findSourceFile(fileName, ts.toPath(fileName, currentDirectory, getCanonicalFileName), isDefaultLib, isReference, refFile, refPos, refEnd); if (!nonTsFile) { if (options.allowNonTsExtensions) { diagnostic = ts.Diagnostics.File_0_not_found; diagnosticArgument = [fileName]; } - else if (!ts.forEach(supportedExtensions, function (extension) { return findSourceFile(fileName + extension, ts.toPath(fileName + extension, currentDirectory, getCanonicalFileName), isDefaultLib, refFile, refPos, refEnd); })) { + else if (!ts.forEach(supportedExtensions, function (extension) { return findSourceFile(fileName + extension, ts.toPath(fileName + extension, currentDirectory, getCanonicalFileName), isDefaultLib, isReference, refFile, refPos, refEnd); })) { diagnostic = ts.Diagnostics.File_0_not_found; fileName += ".ts"; diagnosticArgument = [fileName]; @@ -34393,12 +35749,15 @@ var ts; fileProcessingDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.File_name_0_differs_from_already_included_file_name_1_only_in_casing, fileName, existingFileName)); } } - function findSourceFile(fileName, path, isDefaultLib, refFile, refPos, refEnd) { + function findSourceFile(fileName, path, isDefaultLib, isReference, refFile, refPos, refEnd) { if (filesByName.contains(path)) { var file_1 = filesByName.get(path); 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) { + file_1.wasReferenced = file_1.wasReferenced || isReference; + } return file_1; } var file = host.getSourceFile(fileName, options.target, function (hostErrorMessage) { @@ -34411,6 +35770,7 @@ var ts; }); filesByName.set(path, file); if (file) { + file.wasReferenced = file.wasReferenced || isReference; file.path = path; if (host.useCaseSensitiveFileNames()) { var existingFile = filesByNameIgnoreCase.get(path); @@ -34424,7 +35784,8 @@ var ts; skipDefaultLib = skipDefaultLib || file.hasNoDefaultLib; var basePath = ts.getDirectoryPath(fileName); if (!options.noResolve) { - processReferencedFiles(file, basePath); + processReferencedFiles(file, basePath, isDefaultLib); + processTypeReferenceDirectives(file); } processImportedModules(file, basePath); if (isDefaultLib) { @@ -34436,12 +35797,64 @@ var ts; } return file; } - function processReferencedFiles(file, basePath) { + function processReferencedFiles(file, basePath, isDefaultLib) { ts.forEach(file.referencedFiles, function (ref) { var referencedFileName = resolveTripleslashReference(ref.fileName, file.fileName); - processSourceFile(referencedFileName, false, file, ref.pos, ref.end); + processSourceFile(referencedFileName, isDefaultLib, true, file, ref.pos, ref.end); }); } + function processTypeReferenceDirectives(file) { + var typeDirectives = ts.map(file.typeReferenceDirectives, function (l) { return l.fileName; }); + var resolutions = resolveTypeReferenceDirectiveNamesWorker(typeDirectives, file.fileName); + for (var i = 0; i < typeDirectives.length; i++) { + var ref = file.typeReferenceDirectives[i]; + var resolvedTypeReferenceDirective = resolutions[i]; + ts.setResolvedTypeReferenceDirective(file, ref.fileName, resolvedTypeReferenceDirective); + processTypeReferenceDirective(ref.fileName, resolvedTypeReferenceDirective, file, ref.pos, ref.end); + } + } + function processTypeReferenceDirective(typeReferenceDirective, resolvedTypeReferenceDirective, refFile, refPos, refEnd) { + var previousResolution = resolvedTypeReferenceDirectives[typeReferenceDirective]; + if (previousResolution && previousResolution.primary) { + return; + } + var saveResolution = true; + if (resolvedTypeReferenceDirective) { + if (resolvedTypeReferenceDirective.primary) { + processSourceFile(resolvedTypeReferenceDirective.resolvedFileName, false, true, refFile, refPos, refEnd); + } + else { + if (previousResolution) { + var otherFileText = host.readFile(resolvedTypeReferenceDirective.resolvedFileName); + if (otherFileText !== getSourceFile(previousResolution.resolvedFileName).text) { + fileProcessingDiagnostics.add(createDiagnostic(refFile, refPos, refEnd, ts.Diagnostics.Conflicting_library_definitions_for_0_found_at_1_and_2_Copy_the_correct_file_to_the_typings_folder_to_resolve_this_conflict, typeReferenceDirective, resolvedTypeReferenceDirective.resolvedFileName, previousResolution.resolvedFileName)); + } + saveResolution = false; + } + else { + processSourceFile(resolvedTypeReferenceDirective.resolvedFileName, false, true, refFile, refPos, refEnd); + } + } + } + else { + fileProcessingDiagnostics.add(createDiagnostic(refFile, refPos, refEnd, ts.Diagnostics.Cannot_find_name_0, typeReferenceDirective)); + } + if (saveResolution) { + resolvedTypeReferenceDirectives[typeReferenceDirective] = resolvedTypeReferenceDirective; + } + } + function createDiagnostic(refFile, refPos, refEnd, message) { + var args = []; + for (var _i = 4; _i < arguments.length; _i++) { + args[_i - 4] = arguments[_i]; + } + if (refFile === undefined || refPos === undefined || refEnd === undefined) { + return ts.createCompilerDiagnostic.apply(void 0, [message].concat(args)); + } + else { + return ts.createFileDiagnostic.apply(void 0, [refFile, refPos, refEnd - refPos, message].concat(args)); + } + } function getCanonicalFileName(fileName) { return host.getCanonicalFileName(fileName); } @@ -34458,7 +35871,7 @@ var ts; !options.noResolve && i < file.imports.length; if (shouldAddFile) { - var importedFile = findSourceFile(resolution.resolvedFileName, ts.toPath(resolution.resolvedFileName, currentDirectory, getCanonicalFileName), false, file, ts.skipTrivia(file.text, file.imports[i].pos), file.imports[i].end); + var importedFile = findSourceFile(resolution.resolvedFileName, ts.toPath(resolution.resolvedFileName, currentDirectory, getCanonicalFileName), false, false, file, ts.skipTrivia(file.text, file.imports[i].pos), file.imports[i].end); if (importedFile && resolution.isExternalLibraryImport) { if (!ts.isExternalModule(importedFile) && importedFile.statements.length) { var start_5 = ts.getTokenPosOfNode(file.imports[i], file); @@ -34478,44 +35891,21 @@ var ts; return; } function computeCommonSourceDirectory(sourceFiles) { - var commonPathComponents; - var failed = ts.forEach(files, function (sourceFile) { - if (ts.isDeclarationFile(sourceFile)) { - return; + var fileNames = []; + for (var _i = 0, sourceFiles_2 = sourceFiles; _i < sourceFiles_2.length; _i++) { + var file = sourceFiles_2[_i]; + if (!file.isDeclarationFile) { + fileNames.push(file.fileName); } - var sourcePathComponents = ts.getNormalizedPathComponents(sourceFile.fileName, currentDirectory); - sourcePathComponents.pop(); - if (!commonPathComponents) { - commonPathComponents = sourcePathComponents; - return; - } - for (var i = 0, n = Math.min(commonPathComponents.length, sourcePathComponents.length); i < n; i++) { - if (getCanonicalFileName(commonPathComponents[i]) !== getCanonicalFileName(sourcePathComponents[i])) { - if (i === 0) { - return true; - } - commonPathComponents.length = i; - break; - } - } - if (sourcePathComponents.length < commonPathComponents.length) { - commonPathComponents.length = sourcePathComponents.length; - } - }); - if (failed) { - return ""; } - if (!commonPathComponents) { - return currentDirectory; - } - return ts.getNormalizedPathFromPathComponents(commonPathComponents); + return computeCommonSourceDirectoryOfFilenames(fileNames, currentDirectory, getCanonicalFileName); } function checkSourceFilesBelongToPath(sourceFiles, rootDirectory) { var allFilesBelongToPath = true; if (sourceFiles) { var absoluteRootDirectoryPath = host.getCanonicalFileName(ts.getNormalizedAbsolutePath(rootDirectory, currentDirectory)); - for (var _i = 0, sourceFiles_2 = sourceFiles; _i < sourceFiles_2.length; _i++) { - var sourceFile = sourceFiles_2[_i]; + for (var _i = 0, sourceFiles_3 = sourceFiles; _i < sourceFiles_3.length; _i++) { + var sourceFile = sourceFiles_3[_i]; if (!ts.isDeclarationFile(sourceFile)) { var absoluteSourceFilePath = host.getCanonicalFileName(ts.getNormalizedAbsolutePath(sourceFile.fileName, currentDirectory)); if (absoluteSourceFilePath.indexOf(absoluteRootDirectoryPath) !== 0) { @@ -34588,6 +35978,17 @@ var ts; programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1, "sourceRoot", "sourceMap")); } } + if (options.declarationDir) { + if (!options.declaration) { + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1, "declarationDir", "declaration")); + } + if (options.out || options.outFile) { + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "declarationDir", options.out ? "out" : "outFile")); + } + } + if (options.lib && options.noLib) { + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "lib", "noLib")); + } var languageVersion = options.target || 0; var outFile = options.outFile || options.out; var firstExternalModuleSourceFile = ts.forEach(files, function (f) { return ts.isExternalModule(f) ? f : undefined; }); @@ -34619,21 +36020,7 @@ var ts; programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Cannot_find_the_common_subdirectory_path_for_the_input_files)); } } - if (options.noEmit) { - if (options.out) { - programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "out")); - } - if (options.outFile) { - programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "outFile")); - } - if (options.outDir) { - programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "outDir")); - } - if (options.declaration) { - programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "declaration")); - } - } - else if (options.allowJs && options.declaration) { + if (!options.noEmit && options.allowJs && options.declaration) { programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "allowJs", "declaration")); } if (options.emitDecoratorMetadata && @@ -34720,89 +36107,89 @@ var ts; function spanInNode(node) { if (node) { switch (node.kind) { - case 197: + case 199: return spanInVariableDeclaration(node.declarationList.declarations[0]); - case 215: - case 143: - case 142: - return spanInVariableDeclaration(node); - case 140: - return spanInParameterDeclaration(node); case 217: - case 145: case 144: - case 147: - case 148: + case 143: + return spanInVariableDeclaration(node); + case 141: + return spanInParameterDeclaration(node); + case 219: case 146: - case 177: + case 145: + case 148: + case 149: + case 147: case 178: + case 179: return spanInFunctionDeclaration(node); - case 196: + case 198: if (ts.isFunctionBlock(node)) { return spanInFunctionBlock(node); } - case 223: + case 225: return spanInBlock(node); - case 248: + case 251: return spanInBlock(node.block); - case 199: - return textSpan(node.expression); - case 208: - return textSpan(node.getChildAt(0), node.expression); - case 202: - return textSpanEndingAtNextToken(node, node.expression); case 201: - return spanInNode(node.statement); - case 214: - return textSpan(node.getChildAt(0)); - case 200: - return textSpanEndingAtNextToken(node, node.expression); - case 211: - return spanInNode(node.statement); - case 207: - case 206: - return textSpan(node.getChildAt(0), node.label); - case 203: - return spanInForStatement(node); + return textSpan(node.expression); + case 210: + return textSpan(node.getChildAt(0), node.expression); case 204: return textSpanEndingAtNextToken(node, node.expression); - case 205: - return spanInInitializerOfForLike(node); - case 210: + case 203: + return spanInNode(node.statement); + case 216: + return textSpan(node.getChildAt(0)); + case 202: return textSpanEndingAtNextToken(node, node.expression); - case 245: - case 246: - return spanInNode(node.statements[0]); case 213: - return spanInBlock(node.tryBlock); + return spanInNode(node.statement); + case 209: + case 208: + return textSpan(node.getChildAt(0), node.label); + case 205: + return spanInForStatement(node); + case 206: + return textSpanEndingAtNextToken(node, node.expression); + case 207: + return spanInInitializerOfForLike(node); case 212: + return textSpanEndingAtNextToken(node, node.expression); + case 248: + case 249: + return spanInNode(node.statements[0]); + case 215: + return spanInBlock(node.tryBlock); + case 214: return textSpan(node, node.expression); - case 231: + case 234: return textSpan(node, node.expression); - case 225: + case 228: return textSpan(node, node.moduleReference); - case 226: + case 229: return textSpan(node, node.moduleSpecifier); - case 232: + case 235: return textSpan(node, node.moduleSpecifier); - case 222: + case 224: if (ts.getModuleInstanceState(node) !== 1) { return undefined; } - case 218: - case 221: - case 251: - case 167: - return textSpan(node); - case 209: - return spanInNode(node.statement); - case 141: - return spanInNodeArray(node.parent.decorators); - case 165: - case 166: - return spanInBindingPattern(node); - case 219: case 220: + case 223: + case 254: + case 168: + return textSpan(node); + case 211: + return spanInNode(node.statement); + case 142: + return spanInNodeArray(node.parent.decorators); + case 166: + case 167: + return spanInBindingPattern(node); + case 221: + case 222: return undefined; case 23: case 1: @@ -34830,20 +36217,20 @@ var ts; case 72: case 85: return spanInNextNode(node); - case 136: + case 137: return spanInOfKeyword(node); default: if (ts.isArrayLiteralOrObjectLiteralDestructuringPattern(node)) { return spanInArrayLiteralOrObjectLiteralDestructuringPattern(node); } if ((node.kind === 69 || - node.kind == 189 || - node.kind === 249 || - node.kind === 250) && + node.kind == 190 || + node.kind === 252 || + node.kind === 253) && ts.isArrayLiteralOrObjectLiteralDestructuringPattern(node.parent)) { return textSpan(node); } - if (node.kind === 185) { + if (node.kind === 186) { var binaryExpression = node; if (ts.isArrayLiteralOrObjectLiteralDestructuringPattern(binaryExpression.left)) { return spanInArrayLiteralOrObjectLiteralDestructuringPattern(binaryExpression.left); @@ -34858,38 +36245,38 @@ var ts; } if (ts.isExpression(node)) { switch (node.parent.kind) { - case 201: - return spanInPreviousNode(node); - case 141: - return spanInNode(node.parent); case 203: + return spanInPreviousNode(node); + case 142: + return spanInNode(node.parent); case 205: + case 207: return textSpan(node); - case 185: + case 186: if (node.parent.operatorToken.kind === 24) { return textSpan(node); } break; - case 178: + case 179: if (node.parent.body === node) { return textSpan(node); } break; } } - if (node.parent.kind === 249 && + if (node.parent.kind === 252 && node.parent.name === node && !ts.isArrayLiteralOrObjectLiteralDestructuringPattern(node.parent.parent)) { return spanInNode(node.parent.initializer); } - if (node.parent.kind === 175 && node.parent.type === node) { + if (node.parent.kind === 176 && node.parent.type === node) { return spanInNextNode(node.parent.type); } if (ts.isFunctionLike(node.parent) && node.parent.type === node) { return spanInPreviousNode(node); } - if ((node.parent.kind === 215 || - node.parent.kind === 140)) { + if ((node.parent.kind === 217 || + node.parent.kind === 141)) { var paramOrVarDecl = node.parent; if (paramOrVarDecl.initializer === node || paramOrVarDecl.type === node || @@ -34897,7 +36284,7 @@ var ts; return spanInPreviousNode(node); } } - if (node.parent.kind === 185) { + if (node.parent.kind === 186) { var binaryExpression = node.parent; if (ts.isArrayLiteralOrObjectLiteralDestructuringPattern(binaryExpression.left) && (binaryExpression.right === node || @@ -34918,7 +36305,7 @@ var ts; } } function spanInVariableDeclaration(variableDeclaration) { - if (variableDeclaration.parent.parent.kind === 204) { + if (variableDeclaration.parent.parent.kind === 206) { return spanInNode(variableDeclaration.parent.parent); } if (ts.isBindingPattern(variableDeclaration.name)) { @@ -34926,7 +36313,7 @@ var ts; } if (variableDeclaration.initializer || (variableDeclaration.flags & 1) || - variableDeclaration.parent.parent.kind === 205) { + variableDeclaration.parent.parent.kind === 207) { return textSpanFromVariableDeclaration(variableDeclaration); } var declarations = variableDeclaration.parent.declarations; @@ -34958,7 +36345,7 @@ var ts; } function canFunctionHaveSpanInWholeDeclaration(functionDeclaration) { return !!(functionDeclaration.flags & 1) || - (functionDeclaration.parent.kind === 218 && functionDeclaration.kind !== 146); + (functionDeclaration.parent.kind === 220 && functionDeclaration.kind !== 147); } function spanInFunctionDeclaration(functionDeclaration) { if (!functionDeclaration.body) { @@ -34978,29 +36365,29 @@ var ts; } function spanInBlock(block) { switch (block.parent.kind) { - case 222: + case 224: if (ts.getModuleInstanceState(block.parent) !== 1) { return undefined; } - case 202: - case 200: case 204: + case 202: + case 206: return spanInNodeIfStartsOnSameLine(block.parent, block.statements[0]); - case 203: case 205: + case 207: return spanInNodeIfStartsOnSameLine(ts.findPrecedingToken(block.pos, sourceFile, block.parent), block.statements[0]); } return spanInNode(block.statements[0]); } - function spanInInitializerOfForLike(forLikeStaement) { - if (forLikeStaement.initializer.kind === 216) { - var variableDeclarationList = forLikeStaement.initializer; + function spanInInitializerOfForLike(forLikeStatement) { + if (forLikeStatement.initializer.kind === 218) { + var variableDeclarationList = forLikeStatement.initializer; if (variableDeclarationList.declarations.length > 0) { return spanInNode(variableDeclarationList.declarations[0]); } } else { - return spanInNode(forLikeStaement.initializer); + return spanInNode(forLikeStatement.initializer); } } function spanInForStatement(forStatement) { @@ -35015,62 +36402,62 @@ var ts; } } function spanInBindingPattern(bindingPattern) { - var firstBindingElement = ts.forEach(bindingPattern.elements, function (element) { return element.kind !== 191 ? element : undefined; }); + var firstBindingElement = ts.forEach(bindingPattern.elements, function (element) { return element.kind !== 192 ? element : undefined; }); if (firstBindingElement) { return spanInNode(firstBindingElement); } - if (bindingPattern.parent.kind === 167) { + if (bindingPattern.parent.kind === 168) { return textSpan(bindingPattern.parent); } return textSpanFromVariableDeclaration(bindingPattern.parent); } function spanInArrayLiteralOrObjectLiteralDestructuringPattern(node) { - ts.Debug.assert(node.kind !== 166 && node.kind !== 165); - var elements = node.kind === 168 ? + ts.Debug.assert(node.kind !== 167 && node.kind !== 166); + var elements = node.kind === 169 ? node.elements : node.properties; - var firstBindingElement = ts.forEach(elements, function (element) { return element.kind !== 191 ? element : undefined; }); + var firstBindingElement = ts.forEach(elements, function (element) { return element.kind !== 192 ? element : undefined; }); if (firstBindingElement) { return spanInNode(firstBindingElement); } - return textSpan(node.parent.kind === 185 ? node.parent : node); + return textSpan(node.parent.kind === 186 ? node.parent : node); } function spanInOpenBraceToken(node) { switch (node.parent.kind) { - case 221: + case 223: var enumDeclaration = node.parent; return spanInNodeIfStartsOnSameLine(ts.findPrecedingToken(node.pos, sourceFile, node.parent), enumDeclaration.members.length ? enumDeclaration.members[0] : enumDeclaration.getLastToken(sourceFile)); - case 218: + case 220: var classDeclaration = node.parent; return spanInNodeIfStartsOnSameLine(ts.findPrecedingToken(node.pos, sourceFile, node.parent), classDeclaration.members.length ? classDeclaration.members[0] : classDeclaration.getLastToken(sourceFile)); - case 224: + case 226: return spanInNodeIfStartsOnSameLine(node.parent.parent, node.parent.clauses[0]); } return spanInNode(node.parent); } function spanInCloseBraceToken(node) { switch (node.parent.kind) { - case 223: + case 225: if (ts.getModuleInstanceState(node.parent.parent) !== 1) { return undefined; } - case 221: - case 218: + case 223: + case 220: return textSpan(node); - case 196: + case 198: if (ts.isFunctionBlock(node.parent)) { return textSpan(node); } - case 248: + case 251: return spanInNode(ts.lastOrUndefined(node.parent.statements)); - case 224: + case 226: var caseBlock = node.parent; var lastClause = ts.lastOrUndefined(caseBlock.clauses); if (lastClause) { return spanInNode(ts.lastOrUndefined(lastClause.statements)); } return undefined; - case 165: + case 166: var bindingPattern = node.parent; return spanInNode(ts.lastOrUndefined(bindingPattern.elements) || bindingPattern); default: @@ -35083,7 +36470,7 @@ var ts; } function spanInCloseBracketToken(node) { switch (node.parent.kind) { - case 166: + case 167: var bindingPattern = node.parent; return textSpan(ts.lastOrUndefined(bindingPattern.elements) || bindingPattern); default: @@ -35095,33 +36482,33 @@ var ts; } } function spanInOpenParenToken(node) { - if (node.parent.kind === 201 || - node.parent.kind === 172 || - node.parent.kind === 173) { + if (node.parent.kind === 203 || + node.parent.kind === 173 || + node.parent.kind === 174) { return spanInPreviousNode(node); } - if (node.parent.kind === 176) { + if (node.parent.kind === 177) { return spanInNextNode(node); } return spanInNode(node.parent); } function spanInCloseParenToken(node) { switch (node.parent.kind) { - case 177: - case 217: case 178: - case 145: - case 144: - case 147: - case 148: + case 219: + case 179: case 146: - case 202: - case 201: + case 145: + case 148: + case 149: + case 147: + case 204: case 203: case 205: - case 172: + case 207: case 173: - case 176: + case 174: + case 177: return spanInPreviousNode(node); default: return spanInNode(node.parent); @@ -35129,26 +36516,26 @@ var ts; } function spanInColonToken(node) { if (ts.isFunctionLike(node.parent) || - node.parent.kind === 249 || - node.parent.kind === 140) { + node.parent.kind === 252 || + node.parent.kind === 141) { return spanInPreviousNode(node); } return spanInNode(node.parent); } function spanInGreaterThanOrLessThanToken(node) { - if (node.parent.kind === 175) { + if (node.parent.kind === 176) { return spanInNextNode(node); } return spanInNode(node.parent); } function spanInWhileKeyword(node) { - if (node.parent.kind === 201) { + if (node.parent.kind === 203) { return textSpanEndingAtNextToken(node, node.parent.expression); } return spanInNode(node.parent); } function spanInOfKeyword(node) { - if (node.parent.kind === 205) { + if (node.parent.kind === 207) { return spanInNextNode(node); } return spanInNode(node.parent); @@ -35226,7 +36613,7 @@ var ts; } } function autoCollapse(node) { - return ts.isFunctionBlock(node) && node.parent.kind !== 178; + return ts.isFunctionBlock(node) && node.parent.kind !== 179; } var depth = 0; var maxDepth = 20; @@ -35238,26 +36625,26 @@ var ts; addOutliningForLeadingCommentsForNode(n); } switch (n.kind) { - case 196: + case 198: if (!ts.isFunctionBlock(n)) { - var parent_9 = n.parent; + var parent_11 = n.parent; var openBrace = ts.findChildOfKind(n, 15, sourceFile); var closeBrace = ts.findChildOfKind(n, 16, sourceFile); - if (parent_9.kind === 201 || - parent_9.kind === 204 || - parent_9.kind === 205 || - parent_9.kind === 203 || - parent_9.kind === 200 || - parent_9.kind === 202 || - parent_9.kind === 209 || - parent_9.kind === 248) { - addOutliningSpan(parent_9, openBrace, closeBrace, autoCollapse(n)); + if (parent_11.kind === 203 || + parent_11.kind === 206 || + parent_11.kind === 207 || + parent_11.kind === 205 || + parent_11.kind === 202 || + parent_11.kind === 204 || + parent_11.kind === 211 || + parent_11.kind === 251) { + addOutliningSpan(parent_11, openBrace, closeBrace, autoCollapse(n)); break; } - if (parent_9.kind === 213) { - var tryStatement = parent_9; + if (parent_11.kind === 215) { + var tryStatement = parent_11; if (tryStatement.tryBlock === n) { - addOutliningSpan(parent_9, openBrace, closeBrace, autoCollapse(n)); + addOutliningSpan(parent_11, openBrace, closeBrace, autoCollapse(n)); break; } else if (tryStatement.finallyBlock === n) { @@ -35277,23 +36664,23 @@ var ts; }); break; } - case 223: { + case 225: { var openBrace = ts.findChildOfKind(n, 15, sourceFile); var closeBrace = ts.findChildOfKind(n, 16, sourceFile); addOutliningSpan(n.parent, openBrace, closeBrace, autoCollapse(n)); break; } - case 218: - case 219: + case 220: case 221: - case 169: - case 224: { + case 223: + case 170: + case 226: { var openBrace = ts.findChildOfKind(n, 15, sourceFile); var closeBrace = ts.findChildOfKind(n, 16, sourceFile); addOutliningSpan(n, openBrace, closeBrace, autoCollapse(n)); break; } - case 168: + case 169: var openBracket = ts.findChildOfKind(n, 19, sourceFile); var closeBracket = ts.findChildOfKind(n, 20, sourceFile); addOutliningSpan(n, openBracket, closeBracket, autoCollapse(n)); @@ -35320,10 +36707,10 @@ var ts; ts.forEach(program.getSourceFiles(), function (sourceFile) { cancellationToken.throwIfCancellationRequested(); var nameToDeclarations = sourceFile.getNamedDeclarations(); - for (var name_31 in nameToDeclarations) { - var declarations = ts.getProperty(nameToDeclarations, name_31); + for (var name_34 in nameToDeclarations) { + var declarations = ts.getProperty(nameToDeclarations, name_34); if (declarations) { - var matches = patternMatcher.getMatchesForLastSegmentOfPattern(name_31); + var matches = patternMatcher.getMatchesForLastSegmentOfPattern(name_34); if (!matches) { continue; } @@ -35334,14 +36721,14 @@ var ts; if (!containers) { return undefined; } - matches = patternMatcher.getMatches(containers, name_31); + matches = patternMatcher.getMatches(containers, name_34); if (!matches) { continue; } } var fileName = sourceFile.fileName; var matchKind = bestMatchKind(matches); - rawItems.push({ name: name_31, fileName: fileName, matchKind: matchKind, isCaseSensitive: allMatchesAreCaseSensitive(matches), declaration: declaration }); + rawItems.push({ name: name_34, fileName: fileName, matchKind: matchKind, isCaseSensitive: allMatchesAreCaseSensitive(matches), declaration: declaration }); } } } @@ -35378,7 +36765,7 @@ var ts; if (text !== undefined) { containers.unshift(text); } - else if (declaration.name.kind === 138) { + else if (declaration.name.kind === 139) { return tryAddComputedPropertyName(declaration.name.expression, containers, true); } else { @@ -35395,7 +36782,7 @@ var ts; } return true; } - if (expression.kind === 170) { + if (expression.kind === 171) { var propertyAccess = expression; if (includeLastPortion) { containers.unshift(propertyAccess.name.text); @@ -35406,7 +36793,7 @@ var ts; } function getContainers(declaration) { var containers = []; - if (declaration.name.kind === 138) { + if (declaration.name.kind === 139) { if (!tryAddComputedPropertyName(declaration.name.expression, containers, false)) { return undefined; } @@ -35461,6 +36848,9 @@ var ts; var NavigationBar; (function (NavigationBar) { function getNavigationBarItems(sourceFile, compilerOptions) { + if (ts.isSourceFileJavaScript(sourceFile)) { + return getJsNavigationBarItems(sourceFile, compilerOptions); + } var hasGlobalNode = false; return getItemsWorker(getTopLevelNodes(sourceFile), createTopLevelItem); function getIndent(node) { @@ -35468,14 +36858,14 @@ var ts; var current = node.parent; while (current) { switch (current.kind) { - case 222: + case 224: do { current = current.parent; - } while (current.kind === 222); - case 218: + } while (current.kind === 224); + case 220: + case 223: case 221: case 219: - case 217: indent++; } current = current.parent; @@ -35486,26 +36876,26 @@ var ts; var childNodes = []; function visit(node) { switch (node.kind) { - case 197: + case 199: ts.forEach(node.declarationList.declarations, visit); break; - case 165: case 166: + case 167: ts.forEach(node.elements, visit); break; - case 232: + case 235: if (node.exportClause) { ts.forEach(node.exportClause.elements, visit); } break; - case 226: + case 229: var importClause = node.importClause; if (importClause) { if (importClause.name) { childNodes.push(importClause); } if (importClause.namedBindings) { - if (importClause.namedBindings.kind === 228) { + if (importClause.namedBindings.kind === 231) { childNodes.push(importClause.namedBindings); } else { @@ -35514,20 +36904,20 @@ var ts; } } break; - case 167: - case 215: + case 168: + case 217: if (ts.isBindingPattern(node.name)) { visit(node.name); break; } - case 218: + case 220: + case 223: case 221: + case 224: case 219: - case 222: - case 217: - case 225: - case 230: - case 234: + case 228: + case 233: + case 237: childNodes.push(node); break; } @@ -35562,17 +36952,30 @@ var ts; for (var _i = 0, nodes_4 = nodes; _i < nodes_4.length; _i++) { var node = nodes_4[_i]; switch (node.kind) { - case 218: + case 220: + topLevelNodes.push(node); + for (var _a = 0, _b = node.members; _a < _b.length; _a++) { + var member = _b[_a]; + if (member.kind === 146 || member.kind === 147) { + if (member.body) { + if (hasNamedFunctionDeclarations(member.body.statements)) { + topLevelNodes.push(member); + } + addTopLevelNodes(member.body.statements, topLevelNodes); + } + } + } + break; + case 223: case 221: - case 219: topLevelNodes.push(node); break; - case 222: + case 224: var moduleDeclaration = node; topLevelNodes.push(node); addTopLevelNodes(getInnermostModule(moduleDeclaration).body.statements, topLevelNodes); break; - case 217: + case 219: var functionDeclaration = node; if (isTopLevelFunctionDeclaration(functionDeclaration)) { topLevelNodes.push(node); @@ -35582,15 +36985,31 @@ var ts; } } } + function hasNamedFunctionDeclarations(nodes) { + for (var _i = 0, nodes_5 = nodes; _i < nodes_5.length; _i++) { + var s = nodes_5[_i]; + if (s.kind === 219 && !isEmpty(s.name.text)) { + return true; + } + } + return false; + } function isTopLevelFunctionDeclaration(functionDeclaration) { - if (functionDeclaration.kind === 217) { - if (functionDeclaration.body && functionDeclaration.body.kind === 196) { - if (ts.forEach(functionDeclaration.body.statements, function (s) { return s.kind === 217 && !isEmpty(s.name.text); })) { + if (functionDeclaration.kind === 219) { + if (functionDeclaration.body && functionDeclaration.body.kind === 198) { + if (hasNamedFunctionDeclarations(functionDeclaration.body.statements)) { return true; } if (!ts.isFunctionBlock(functionDeclaration.parent)) { return true; } + else { + var grandParentKind = functionDeclaration.parent.parent.kind; + if (grandParentKind === 146 || + grandParentKind === 147) { + return true; + } + } } } return false; @@ -35598,8 +37017,8 @@ var ts; function getItemsWorker(nodes, createItem) { var items = []; var keyToItem = {}; - for (var _i = 0, nodes_5 = nodes; _i < nodes_5.length; _i++) { - var child = nodes_5[_i]; + for (var _i = 0, nodes_6 = nodes; _i < nodes_6.length; _i++) { + var child = nodes_6[_i]; var item = createItem(child); if (item !== undefined) { if (item.text.length > 0) { @@ -35638,7 +37057,7 @@ var ts; } function createChildItem(node) { switch (node.kind) { - case 140: + case 141: if (ts.isBindingPattern(node.name)) { break; } @@ -35646,34 +37065,34 @@ var ts; return undefined; } return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.memberVariableElement); + case 146: case 145: - case 144: return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.memberFunctionElement); - case 147: - return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.memberGetAccessorElement); case 148: - return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.memberSetAccessorElement); - case 151: - return createItem(node, "[]", ts.ScriptElementKind.indexSignatureElement); - case 251: - return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.memberVariableElement); + return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.memberGetAccessorElement); case 149: - return createItem(node, "()", ts.ScriptElementKind.callSignatureElement); - case 150: - return createItem(node, "new()", ts.ScriptElementKind.constructSignatureElement); - case 143: - case 142: + return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.memberSetAccessorElement); + case 152: + return createItem(node, "[]", ts.ScriptElementKind.indexSignatureElement); + case 254: return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.memberVariableElement); - case 217: + case 150: + return createItem(node, "()", ts.ScriptElementKind.callSignatureElement); + case 151: + return createItem(node, "new()", ts.ScriptElementKind.constructSignatureElement); + case 144: + case 143: + return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.memberVariableElement); + case 219: return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.functionElement); - case 215: - case 167: + case 217: + case 168: var variableDeclarationNode = void 0; - var name_32; - if (node.kind === 167) { - name_32 = node.name; + var name_35; + if (node.kind === 168) { + name_35 = node.name; variableDeclarationNode = node; - while (variableDeclarationNode && variableDeclarationNode.kind !== 215) { + while (variableDeclarationNode && variableDeclarationNode.kind !== 217) { variableDeclarationNode = variableDeclarationNode.parent; } ts.Debug.assert(variableDeclarationNode !== undefined); @@ -35681,24 +37100,24 @@ var ts; else { ts.Debug.assert(!ts.isBindingPattern(node.name)); variableDeclarationNode = node; - name_32 = node.name; + name_35 = node.name; } if (ts.isConst(variableDeclarationNode)) { - return createItem(node, getTextOfNode(name_32), ts.ScriptElementKind.constElement); + return createItem(node, getTextOfNode(name_35), ts.ScriptElementKind.constElement); } else if (ts.isLet(variableDeclarationNode)) { - return createItem(node, getTextOfNode(name_32), ts.ScriptElementKind.letElement); + return createItem(node, getTextOfNode(name_35), ts.ScriptElementKind.letElement); } else { - return createItem(node, getTextOfNode(name_32), ts.ScriptElementKind.variableElement); + return createItem(node, getTextOfNode(name_35), ts.ScriptElementKind.variableElement); } - case 146: + case 147: return createItem(node, "constructor", ts.ScriptElementKind.constructorImplementationElement); - case 234: - case 230: - case 225: - case 227: + case 237: + case 233: case 228: + case 230: + case 231: return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.alias); } return undefined; @@ -35728,17 +37147,20 @@ var ts; } function createTopLevelItem(node) { switch (node.kind) { - case 252: + case 255: return createSourceFileItem(node); - case 218: + case 220: return createClassItem(node); - case 221: + case 146: + case 147: + return createMemberFunctionLikeItem(node); + case 223: return createEnumItem(node); - case 219: - return createIterfaceItem(node); - case 222: + case 221: + return createInterfaceItem(node); + case 224: return createModuleItem(node); - case 217: + case 219: return createFunctionItem(node); } return undefined; @@ -35748,7 +37170,7 @@ var ts; } var result = []; result.push(moduleDeclaration.name.text); - while (moduleDeclaration.body && moduleDeclaration.body.kind === 222) { + while (moduleDeclaration.body && moduleDeclaration.body.kind === 224) { moduleDeclaration = moduleDeclaration.body; result.push(moduleDeclaration.name.text); } @@ -35760,12 +37182,29 @@ var ts; return getNavigationBarItem(moduleName, ts.ScriptElementKind.moduleElement, ts.getNodeModifiers(node), [getNodeSpan(node)], childItems, getIndent(node)); } function createFunctionItem(node) { - if (node.body && node.body.kind === 196) { + if (node.body && node.body.kind === 198) { var childItems = getItemsWorker(sortNodes(node.body.statements), createChildItem); return getNavigationBarItem(!node.name ? "default" : node.name.text, ts.ScriptElementKind.functionElement, ts.getNodeModifiers(node), [getNodeSpan(node)], childItems, getIndent(node)); } return undefined; } + function createMemberFunctionLikeItem(node) { + if (node.body && node.body.kind === 198) { + var childItems = getItemsWorker(sortNodes(node.body.statements), createChildItem); + var scriptElementKind = void 0; + var memberFunctionName = void 0; + if (node.kind === 146) { + memberFunctionName = ts.getPropertyNameForPropertyNameNode(node.name); + scriptElementKind = ts.ScriptElementKind.memberFunctionElement; + } + else { + memberFunctionName = "constructor"; + scriptElementKind = ts.ScriptElementKind.constructorImplementationElement; + } + return getNavigationBarItem(memberFunctionName, scriptElementKind, ts.getNodeModifiers(node), [getNodeSpan(node)], childItems, getIndent(node)); + } + return undefined; + } function createSourceFileItem(node) { var childItems = getItemsWorker(getChildNodes(node.statements), createChildItem); if (childItems === undefined || childItems.length === 0) { @@ -35781,7 +37220,7 @@ var ts; var childItems; if (node.members) { var constructor = ts.forEach(node.members, function (member) { - return member.kind === 146 && member; + return member.kind === 147 && member; }); var nodes = removeDynamicallyNamedProperties(node); if (constructor) { @@ -35796,25 +37235,25 @@ var ts; var childItems = getItemsWorker(sortNodes(removeComputedProperties(node)), createChildItem); return getNavigationBarItem(node.name.text, ts.ScriptElementKind.enumElement, ts.getNodeModifiers(node), [getNodeSpan(node)], childItems, getIndent(node)); } - function createIterfaceItem(node) { + function createInterfaceItem(node) { var childItems = getItemsWorker(sortNodes(removeDynamicallyNamedProperties(node)), createChildItem); return getNavigationBarItem(node.name.text, ts.ScriptElementKind.interfaceElement, ts.getNodeModifiers(node), [getNodeSpan(node)], childItems, getIndent(node)); } } function removeComputedProperties(node) { - return ts.filter(node.members, function (member) { return member.name === undefined || member.name.kind !== 138; }); + return ts.filter(node.members, function (member) { return member.name === undefined || member.name.kind !== 139; }); } function removeDynamicallyNamedProperties(node) { return ts.filter(node.members, function (member) { return !ts.hasDynamicName(member); }); } function getInnermostModule(node) { - while (node.body.kind === 222) { + while (node.body.kind === 224) { node = node.body; } return node; } function getNodeSpan(node) { - return node.kind === 252 + return node.kind === 255 ? ts.createTextSpanFromBounds(node.getFullStart(), node.getEnd()) : ts.createTextSpanFromBounds(node.getStart(), node.getEnd()); } @@ -35823,6 +37262,171 @@ var ts; } } NavigationBar.getNavigationBarItems = getNavigationBarItems; + function getJsNavigationBarItems(sourceFile, compilerOptions) { + var anonFnText = ""; + var anonClassText = ""; + var indent = 0; + var rootName = ts.isExternalModule(sourceFile) ? + "\"" + ts.escapeString(ts.getBaseFileName(ts.removeFileExtension(ts.normalizePath(sourceFile.fileName)))) + "\"" + : ""; + var sourceFileItem = getNavBarItem(rootName, ts.ScriptElementKind.moduleElement, [getNodeSpan(sourceFile)]); + var topItem = sourceFileItem; + ts.forEachChild(sourceFile, visitNode); + function visitNode(node) { + var newItem = createNavBarItem(node); + if (newItem) { + topItem.childItems.push(newItem); + } + if (newItem && (ts.isFunctionLike(node) || ts.isClassLike(node))) { + var lastTop = topItem; + indent++; + topItem = newItem; + ts.forEachChild(node, visitNode); + topItem = lastTop; + indent--; + if (newItem && newItem.text === anonFnText && newItem.childItems.length === 0) { + topItem.childItems.pop(); + } + } + else { + ts.forEachChild(node, visitNode); + } + } + function createNavBarItem(node) { + switch (node.kind) { + case 217: + if (node.parent.parent + .parent.kind !== 255) { + return undefined; + } + var varDecl = node; + if (varDecl.initializer && (varDecl.initializer.kind === 178 || + varDecl.initializer.kind === 179 || + varDecl.initializer.kind === 191)) { + return undefined; + } + case 219: + case 220: + case 147: + case 148: + case 149: + var name_36 = node.flags && (node.flags & 512) && !node.name ? "default" : + node.kind === 147 ? "constructor" : + ts.declarationNameToString(node.name); + return getNavBarItem(name_36, getScriptKindForElementKind(node.kind), [getNodeSpan(node)]); + case 178: + case 179: + case 191: + return getDefineModuleItem(node) || getFunctionOrClassExpressionItem(node); + case 146: + var methodDecl = node; + return getNavBarItem(ts.declarationNameToString(methodDecl.name), ts.ScriptElementKind.memberFunctionElement, [getNodeSpan(node)]); + case 234: + return getNavBarItem("default", ts.ScriptElementKind.variableElement, [getNodeSpan(node)]); + case 230: + if (!node.name) { + return undefined; + } + case 233: + case 231: + case 237: + if (node.kind === 237) { + if (!node.parent.parent.moduleSpecifier && !node.propertyName) { + return undefined; + } + } + var decl = node; + if (!decl.name) { + return undefined; + } + var declName = ts.declarationNameToString(decl.name); + return getNavBarItem(declName, ts.ScriptElementKind.constElement, [getNodeSpan(node)]); + default: + return undefined; + } + } + function getNavBarItem(text, kind, spans, kindModifiers) { + if (kindModifiers === void 0) { kindModifiers = ts.ScriptElementKindModifier.none; } + return { + text: text, kind: kind, kindModifiers: kindModifiers, spans: spans, childItems: [], indent: indent, bolded: false, grayed: false + }; + } + function getDefineModuleItem(node) { + if (node.kind !== 178 && node.kind !== 179) { + return undefined; + } + if (node.parent.kind !== 173) { + return undefined; + } + var callExpr = node.parent; + if (callExpr.expression.kind !== 69 || callExpr.expression.getText() !== 'define') { + return undefined; + } + var defaultName = node.getSourceFile().fileName; + if (callExpr.arguments[0].kind === 9) { + defaultName = (callExpr.arguments[0]).text; + } + return getNavBarItem(defaultName, ts.ScriptElementKind.moduleElement, [getNodeSpan(node.parent)]); + } + function getFunctionOrClassExpressionItem(node) { + if (node.kind !== 178 && + node.kind !== 179 && + node.kind !== 191) { + return undefined; + } + var fnExpr = node; + var fnName; + if (fnExpr.name && ts.getFullWidth(fnExpr.name) > 0) { + fnName = ts.declarationNameToString(fnExpr.name); + } + else { + if (fnExpr.parent.kind === 217) { + fnName = ts.declarationNameToString(fnExpr.parent.name); + } + else if (fnExpr.parent.kind === 186 && + fnExpr.parent.operatorToken.kind === 56) { + fnName = fnExpr.parent.left.getText(); + if (fnName.length > 20) { + fnName = fnName.substring(0, 17) + "..."; + } + } + else if (fnExpr.parent.kind === 252 && + fnExpr.parent.name) { + fnName = fnExpr.parent.name.getText(); + } + else { + fnName = node.kind === 191 ? anonClassText : anonFnText; + } + } + var scriptKind = node.kind === 191 ? ts.ScriptElementKind.classElement : ts.ScriptElementKind.functionElement; + return getNavBarItem(fnName, scriptKind, [getNodeSpan(node)]); + } + function getNodeSpan(node) { + return node.kind === 255 + ? ts.createTextSpanFromBounds(node.getFullStart(), node.getEnd()) + : ts.createTextSpanFromBounds(node.getStart(), node.getEnd()); + } + function getScriptKindForElementKind(kind) { + switch (kind) { + case 217: + return ts.ScriptElementKind.variableElement; + case 219: + return ts.ScriptElementKind.functionElement; + case 220: + return ts.ScriptElementKind.classElement; + case 147: + return ts.ScriptElementKind.constructorImplementationElement; + case 148: + return ts.ScriptElementKind.memberGetAccessorElement; + case 149: + return ts.ScriptElementKind.memberSetAccessorElement; + default: + return "unknown"; + } + } + return sourceFileItem.childItems; + } + NavigationBar.getJsNavigationBarItems = getJsNavigationBarItems; })(NavigationBar = ts.NavigationBar || (ts.NavigationBar = {})); })(ts || (ts = {})); var ts; @@ -36269,14 +37873,14 @@ var ts; } return createSignatureHelpItems(candidates, resolvedSignature, argumentInfo); function createJavaScriptSignatureHelpItems(argumentInfo) { - if (argumentInfo.invocation.kind !== 172) { + if (argumentInfo.invocation.kind !== 173) { return undefined; } var callExpression = argumentInfo.invocation; var expression = callExpression.expression; var name = expression.kind === 69 ? expression - : expression.kind === 170 + : expression.kind === 171 ? expression.name : undefined; if (!name || !name.text) { @@ -36305,7 +37909,7 @@ var ts; } } function getImmediatelyContainingArgumentInfo(node) { - if (node.parent.kind === 172 || node.parent.kind === 173) { + if (node.parent.kind === 173 || node.parent.kind === 174) { var callExpression = node.parent; if (node.kind === 25 || node.kind === 17) { @@ -36336,23 +37940,23 @@ var ts; }; } } - else if (node.kind === 11 && node.parent.kind === 174) { + else if (node.kind === 11 && node.parent.kind === 175) { if (ts.isInsideTemplateLiteral(node, position)) { return getArgumentListInfoForTemplate(node.parent, 0); } } - else if (node.kind === 12 && node.parent.parent.kind === 174) { + else if (node.kind === 12 && node.parent.parent.kind === 175) { var templateExpression = node.parent; var tagExpression = templateExpression.parent; - ts.Debug.assert(templateExpression.kind === 187); + ts.Debug.assert(templateExpression.kind === 188); var argumentIndex = ts.isInsideTemplateLiteral(node, position) ? 0 : 1; return getArgumentListInfoForTemplate(tagExpression, argumentIndex); } - else if (node.parent.kind === 194 && node.parent.parent.parent.kind === 174) { + else if (node.parent.kind === 196 && node.parent.parent.parent.kind === 175) { var templateSpan = node.parent; var templateExpression = templateSpan.parent; var tagExpression = templateExpression.parent; - ts.Debug.assert(templateExpression.kind === 187); + ts.Debug.assert(templateExpression.kind === 188); if (node.kind === 14 && !ts.isInsideTemplateLiteral(node, position)) { return undefined; } @@ -36416,7 +38020,7 @@ var ts; var template = taggedTemplate.template; var applicableSpanStart = template.getStart(); var applicableSpanEnd = template.getEnd(); - if (template.kind === 187) { + if (template.kind === 188) { var lastSpan = ts.lastOrUndefined(template.templateSpans); if (lastSpan.literal.getFullWidth() === 0) { applicableSpanEnd = ts.skipTrivia(sourceFile.text, applicableSpanEnd, false); @@ -36425,7 +38029,7 @@ var ts; return ts.createTextSpan(applicableSpanStart, applicableSpanEnd - applicableSpanStart); } function getContainingArgumentInfo(node) { - for (var n = node; n.kind !== 252; n = n.parent) { + for (var n = node; n.kind !== 255; n = n.parent) { if (ts.isFunctionBlock(n)) { return undefined; } @@ -36480,7 +38084,7 @@ var ts; signatureHelpParameters = typeParameters && typeParameters.length > 0 ? ts.map(typeParameters, createSignatureHelpParameterForTypeParameter) : emptyArray; suffixDisplayParts.push(ts.punctuationPart(27)); var parameterParts = ts.mapToDisplayParts(function (writer) { - return typeChecker.getSymbolDisplayBuilder().buildDisplayForParametersAndDelimiters(candidateSignature.parameters, writer, invocation); + return typeChecker.getSymbolDisplayBuilder().buildDisplayForParametersAndDelimiters(candidateSignature.thisType, candidateSignature.parameters, writer, invocation); }); ts.addRange(suffixDisplayParts, parameterParts); } @@ -36550,24 +38154,6 @@ var ts; })(ts || (ts = {})); var ts; (function (ts) { - function getEndLinePosition(line, sourceFile) { - ts.Debug.assert(line >= 0); - var lineStarts = sourceFile.getLineStarts(); - var lineIndex = line; - if (lineIndex + 1 === lineStarts.length) { - return sourceFile.text.length - 1; - } - else { - var start = lineStarts[lineIndex]; - var pos = lineStarts[lineIndex + 1] - 1; - ts.Debug.assert(ts.isLineBreak(sourceFile.text.charCodeAt(pos))); - while (start <= pos && ts.isLineBreak(sourceFile.text.charCodeAt(pos))) { - pos--; - } - return pos; - } - } - ts.getEndLinePosition = getEndLinePosition; function getLineStartPositionForPosition(position, sourceFile) { var lineStarts = sourceFile.getLineStarts(); var line = sourceFile.getLineAndCharacterOfPosition(position).line; @@ -36605,39 +38191,39 @@ var ts; return false; } switch (n.kind) { - case 218: - case 219: + case 220: case 221: - case 169: - case 165: - case 157: - case 196: case 223: - case 224: + case 170: + case 166: + case 158: + case 198: + case 225: + case 226: return nodeEndsWith(n, 16, sourceFile); - case 248: + case 251: return isCompletedNode(n.block, sourceFile); - case 173: + case 174: if (!n.arguments) { return true; } - case 172: - case 176: - case 162: + case 173: + case 177: + case 163: return nodeEndsWith(n, 18, sourceFile); - case 154: case 155: + case 156: return isCompletedNode(n.type, sourceFile); - case 146: case 147: case 148: - case 217: - case 177: - case 145: - case 144: - case 150: case 149: + case 219: case 178: + case 146: + case 145: + case 151: + case 150: + case 179: if (n.body) { return isCompletedNode(n.body, sourceFile); } @@ -36645,62 +38231,62 @@ var ts; return isCompletedNode(n.type, sourceFile); } return hasChildOfKind(n, 18, sourceFile); - case 222: + case 224: return n.body && isCompletedNode(n.body, sourceFile); - case 200: + case 202: if (n.elseStatement) { return isCompletedNode(n.elseStatement, sourceFile); } return isCompletedNode(n.thenStatement, sourceFile); - case 199: + case 201: return isCompletedNode(n.expression, sourceFile) || hasChildOfKind(n, 23); - case 168: - case 166: - case 171: - case 138: - case 159: + case 169: + case 167: + case 172: + case 139: + case 160: return nodeEndsWith(n, 20, sourceFile); - case 151: + case 152: if (n.type) { return isCompletedNode(n.type, sourceFile); } return hasChildOfKind(n, 20, sourceFile); - case 245: - case 246: + case 248: + case 249: return false; - case 203: - case 204: case 205: - case 202: + case 206: + case 207: + case 204: return isCompletedNode(n.statement, sourceFile); - case 201: + case 203: var hasWhileKeyword = findChildOfKind(n, 104, sourceFile); if (hasWhileKeyword) { return nodeEndsWith(n, 18, sourceFile); } return isCompletedNode(n.statement, sourceFile); - case 156: + case 157: return isCompletedNode(n.exprName, sourceFile); - case 180: - case 179: case 181: - case 188: + case 180: + case 182: case 189: + case 190: var unaryWordExpression = n; return isCompletedNode(unaryWordExpression.expression, sourceFile); - case 174: + case 175: return isCompletedNode(n.template, sourceFile); - case 187: + case 188: var lastSpan = ts.lastOrUndefined(n.templateSpans); return isCompletedNode(lastSpan, sourceFile); - case 194: + case 196: return ts.nodeIsPresent(n.literal); - case 183: + case 184: return isCompletedNode(n.operand, sourceFile); - case 185: - return isCompletedNode(n.right, sourceFile); case 186: + return isCompletedNode(n.right, sourceFile); + case 187: return isCompletedNode(n.whenFalse, sourceFile); default: return true; @@ -36743,7 +38329,7 @@ var ts; ts.findChildOfKind = findChildOfKind; function findContainingList(node) { var syntaxList = ts.forEach(node.parent.getChildren(), function (c) { - if (c.kind === 275 && c.pos <= node.pos && c.end >= node.end) { + if (c.kind === 278 && c.pos <= node.pos && c.end >= node.end) { return c; } }); @@ -36823,7 +38409,7 @@ var ts; function findPrecedingToken(position, sourceFile, startNode) { return find(startNode || sourceFile); function findRightmostToken(n) { - if (isToken(n) || n.kind === 240) { + if (isToken(n) || n.kind === 243) { return n; } var children = n.getChildren(); @@ -36831,16 +38417,16 @@ var ts; return candidate && findRightmostToken(candidate); } function find(n) { - if (isToken(n) || n.kind === 240) { + if (isToken(n) || n.kind === 243) { return n; } var children = n.getChildren(); for (var i = 0, len = children.length; i < len; i++) { var child = children[i]; - if (position < child.end && (nodeHasTokens(child) || child.kind === 240)) { + if (position < child.end && (nodeHasTokens(child) || child.kind === 243)) { var start = child.getStart(sourceFile); var lookInPreviousChild = (start >= position) || - (child.kind === 240 && start === child.end); + (child.kind === 243 && start === child.end); if (lookInPreviousChild) { var candidate = findRightmostChildNodeWithTokens(children, i); return candidate && findRightmostToken(candidate); @@ -36850,7 +38436,7 @@ var ts; } } } - ts.Debug.assert(startNode !== undefined || n.kind === 252); + ts.Debug.assert(startNode !== undefined || n.kind === 255); if (children.length) { var candidate = findRightmostChildNodeWithTokens(children, children.length); return candidate && findRightmostToken(candidate); @@ -36867,7 +38453,7 @@ var ts; ts.findPrecedingToken = findPrecedingToken; function isInString(sourceFile, position) { var token = getTokenAtPosition(sourceFile, position); - return token && (token.kind === 9 || token.kind === 164) && position > token.getStart(); + return token && (token.kind === 9 || token.kind === 165) && position > token.getStart(); } ts.isInString = isInString; function isInComment(sourceFile, position) { @@ -36950,17 +38536,17 @@ var ts; } ts.getNodeModifiers = getNodeModifiers; function getTypeArgumentOrTypeParameterList(node) { - if (node.kind === 153 || node.kind === 172) { + if (node.kind === 154 || node.kind === 173) { return node.typeArguments; } - if (ts.isFunctionLike(node) || node.kind === 218 || node.kind === 219) { + if (ts.isFunctionLike(node) || node.kind === 220 || node.kind === 221) { return node.typeParameters; } return undefined; } ts.getTypeArgumentOrTypeParameterList = getTypeArgumentOrTypeParameterList; function isToken(n) { - return n.kind >= 0 && n.kind <= 136; + return n.kind >= 0 && n.kind <= 137; } ts.isToken = isToken; function isWord(kind) { @@ -36976,7 +38562,7 @@ var ts; ts.isComment = isComment; function isStringOrRegularExpressionOrTemplateLiteral(kind) { if (kind === 9 - || kind === 164 + || kind === 165 || kind === 10 || ts.isTemplateLiteralKind(kind)) { return true; @@ -37020,18 +38606,18 @@ var ts; } ts.compareDataObjects = compareDataObjects; function isArrayLiteralOrObjectLiteralDestructuringPattern(node) { - if (node.kind === 168 || - node.kind === 169) { - if (node.parent.kind === 185 && + if (node.kind === 169 || + node.kind === 170) { + if (node.parent.kind === 186 && node.parent.left === node && node.parent.operatorToken.kind === 56) { return true; } - if (node.parent.kind === 205 && + if (node.parent.kind === 207 && node.parent.initializer === node) { return true; } - if (isArrayLiteralOrObjectLiteralDestructuringPattern(node.parent.kind === 249 ? node.parent.parent : node.parent)) { + if (isArrayLiteralOrObjectLiteralDestructuringPattern(node.parent.kind === 252 ? node.parent.parent : node.parent)) { return true; } } @@ -37042,7 +38628,7 @@ var ts; var ts; (function (ts) { function isFirstDeclarationOfSymbolParameter(symbol) { - return symbol.declarations && symbol.declarations.length > 0 && symbol.declarations[0].kind === 140; + return symbol.declarations && symbol.declarations.length > 0 && symbol.declarations[0].kind === 141; } ts.isFirstDeclarationOfSymbolParameter = isFirstDeclarationOfSymbolParameter; var displayPartWriter = getDisplayPartWriter(); @@ -37223,7 +38809,7 @@ var ts; ts.getDeclaredName = getDeclaredName; function isImportOrExportSpecifierName(location) { return location.parent && - (location.parent.kind === 230 || location.parent.kind === 234) && + (location.parent.kind === 233 || location.parent.kind === 237) && location.parent.propertyName === location; } ts.isImportOrExportSpecifierName = isImportOrExportSpecifierName; @@ -37238,6 +38824,169 @@ var ts; return name; } ts.stripQuotes = stripQuotes; + function scriptKindIs(fileName, host) { + var scriptKinds = []; + for (var _i = 2; _i < arguments.length; _i++) { + scriptKinds[_i - 2] = arguments[_i]; + } + var scriptKind = getScriptKind(fileName, host); + return ts.forEach(scriptKinds, function (k) { return k === scriptKind; }); + } + ts.scriptKindIs = scriptKindIs; + function getScriptKind(fileName, host) { + var scriptKind = ts.getScriptKindFromFileName(fileName); + if (scriptKind === 0 && host && host.getScriptKind) { + scriptKind = host.getScriptKind(fileName); + } + return ts.ensureScriptKind(fileName, scriptKind); + } + ts.getScriptKind = getScriptKind; +})(ts || (ts = {})); +var ts; +(function (ts) { + var JsTyping; + (function (JsTyping) { + ; + ; + var safeList; + function discoverTypings(host, fileNames, projectRootPath, safeListPath, packageNameToTypingLocation, typingOptions, compilerOptions) { + var inferredTypings = {}; + if (!typingOptions || !typingOptions.enableAutoDiscovery) { + return { cachedTypingPaths: [], newTypingNames: [], filesToWatch: [] }; + } + fileNames = ts.filter(ts.map(fileNames, ts.normalizePath), function (f) { return ts.scriptKindIs(f, undefined, 1, 2); }); + if (!safeList) { + var result = ts.readConfigFile(safeListPath, function (path) { return host.readFile(path); }); + if (result.config) { + safeList = result.config; + } + else { + safeList = {}; + } + ; + } + var filesToWatch = []; + var searchDirs = []; + var exclude = []; + mergeTypings(typingOptions.include); + exclude = typingOptions.exclude || []; + var possibleSearchDirs = ts.map(fileNames, ts.getDirectoryPath); + if (projectRootPath !== undefined) { + possibleSearchDirs.push(projectRootPath); + } + searchDirs = ts.deduplicate(possibleSearchDirs); + for (var _i = 0, searchDirs_1 = searchDirs; _i < searchDirs_1.length; _i++) { + var searchDir = searchDirs_1[_i]; + var packageJsonPath = ts.combinePaths(searchDir, "package.json"); + getTypingNamesFromJson(packageJsonPath, filesToWatch); + var bowerJsonPath = ts.combinePaths(searchDir, "bower.json"); + getTypingNamesFromJson(bowerJsonPath, filesToWatch); + var nodeModulesPath = ts.combinePaths(searchDir, "node_modules"); + getTypingNamesFromNodeModuleFolder(nodeModulesPath); + } + getTypingNamesFromSourceFileNames(fileNames); + for (var name_37 in packageNameToTypingLocation) { + if (ts.hasProperty(inferredTypings, name_37) && !inferredTypings[name_37]) { + inferredTypings[name_37] = packageNameToTypingLocation[name_37]; + } + } + for (var _a = 0, exclude_1 = exclude; _a < exclude_1.length; _a++) { + var excludeTypingName = exclude_1[_a]; + delete inferredTypings[excludeTypingName]; + } + var newTypingNames = []; + var cachedTypingPaths = []; + for (var typing in inferredTypings) { + if (inferredTypings[typing] !== undefined) { + cachedTypingPaths.push(inferredTypings[typing]); + } + else { + newTypingNames.push(typing); + } + } + return { cachedTypingPaths: cachedTypingPaths, newTypingNames: newTypingNames, filesToWatch: filesToWatch }; + function mergeTypings(typingNames) { + if (!typingNames) { + return; + } + for (var _i = 0, typingNames_1 = typingNames; _i < typingNames_1.length; _i++) { + var typing = typingNames_1[_i]; + if (!ts.hasProperty(inferredTypings, typing)) { + inferredTypings[typing] = undefined; + } + } + } + function getTypingNamesFromJson(jsonPath, filesToWatch) { + var result = ts.readConfigFile(jsonPath, function (path) { return host.readFile(path); }); + if (result.config) { + var jsonConfig = result.config; + filesToWatch.push(jsonPath); + if (jsonConfig.dependencies) { + mergeTypings(ts.getKeys(jsonConfig.dependencies)); + } + if (jsonConfig.devDependencies) { + mergeTypings(ts.getKeys(jsonConfig.devDependencies)); + } + if (jsonConfig.optionalDependencies) { + mergeTypings(ts.getKeys(jsonConfig.optionalDependencies)); + } + if (jsonConfig.peerDependencies) { + mergeTypings(ts.getKeys(jsonConfig.peerDependencies)); + } + } + } + function getTypingNamesFromSourceFileNames(fileNames) { + var jsFileNames = ts.filter(fileNames, ts.hasJavaScriptFileExtension); + var inferredTypingNames = ts.map(jsFileNames, function (f) { return ts.removeFileExtension(ts.getBaseFileName(f.toLowerCase())); }); + var cleanedTypingNames = ts.map(inferredTypingNames, function (f) { return f.replace(/((?:\.|-)min(?=\.|$))|((?:-|\.)\d+)/g, ""); }); + if (safeList === undefined) { + mergeTypings(cleanedTypingNames); + } + else { + mergeTypings(ts.filter(cleanedTypingNames, function (f) { return ts.hasProperty(safeList, f); })); + } + var hasJsxFile = ts.forEach(fileNames, function (f) { return ts.scriptKindIs(f, undefined, 2); }); + if (hasJsxFile) { + mergeTypings(["react"]); + } + } + function getTypingNamesFromNodeModuleFolder(nodeModulesPath) { + if (!host.directoryExists(nodeModulesPath)) { + return; + } + var typingNames = []; + var fileNames = host.readDirectory(nodeModulesPath, "*.json", undefined, 2); + for (var _i = 0, fileNames_1 = fileNames; _i < fileNames_1.length; _i++) { + var fileName = fileNames_1[_i]; + var normalizedFileName = ts.normalizePath(fileName); + if (ts.getBaseFileName(normalizedFileName) !== "package.json") { + continue; + } + var result = ts.readConfigFile(normalizedFileName, function (path) { return host.readFile(path); }); + if (!result.config) { + continue; + } + var packageJson = result.config; + if (packageJson._requiredBy && + ts.filter(packageJson._requiredBy, function (r) { return r[0] === "#" || r === "/"; }).length === 0) { + continue; + } + if (!packageJson.name) { + continue; + } + if (packageJson.typings) { + var absolutePath = ts.getNormalizedAbsolutePath(packageJson.typings, ts.getDirectoryPath(normalizedFileName)); + inferredTypings[packageJson.name] = absolutePath; + } + else { + typingNames.push(packageJson.name); + } + } + mergeTypings(typingNames); + } + } + JsTyping.discoverTypings = discoverTypings; + })(JsTyping = ts.JsTyping || (ts.JsTyping = {})); })(ts || (ts = {})); var ts; (function (ts) { @@ -37325,10 +39074,10 @@ var ts; function shouldRescanJsxIdentifier(node) { if (node.parent) { switch (node.parent.kind) { + case 245: case 242: - case 239: + case 244: case 241: - case 238: return node.kind === 69; } } @@ -37800,41 +39549,41 @@ var ts; } Rules.prototype.getRuleName = function (rule) { var o = this; - for (var name_33 in o) { - if (o[name_33] === rule) { - return name_33; + for (var name_38 in o) { + if (o[name_38] === rule) { + return name_38; } } throw new Error("Unknown rule"); }; Rules.IsForContext = function (context) { - return context.contextNode.kind === 203; + return context.contextNode.kind === 205; }; Rules.IsNotForContext = function (context) { return !Rules.IsForContext(context); }; Rules.IsBinaryOpContext = function (context) { switch (context.contextNode.kind) { - case 185: case 186: - case 193: - case 152: - case 160: + case 187: + case 194: + case 153: case 161: + case 162: return true; - case 167: - case 220: - case 225: - case 215: - case 140: - case 251: + case 168: + case 222: + case 228: + case 217: + case 141: + case 254: + case 144: case 143: - case 142: return context.currentTokenSpan.kind === 56 || context.nextTokenSpan.kind === 56; - case 204: + case 206: return context.currentTokenSpan.kind === 90 || context.nextTokenSpan.kind === 90; - case 205: - return context.currentTokenSpan.kind === 136 || context.nextTokenSpan.kind === 136; + case 207: + return context.currentTokenSpan.kind === 137 || context.nextTokenSpan.kind === 137; } return false; }; @@ -37842,7 +39591,7 @@ var ts; return !Rules.IsBinaryOpContext(context); }; Rules.IsConditionalOperatorContext = function (context) { - return context.contextNode.kind === 186; + return context.contextNode.kind === 187; }; Rules.IsSameLineTokenOrBeforeMultilineBlockContext = function (context) { return context.TokensAreOnSameLine() || Rules.IsBeforeMultilineBlockContext(context); @@ -37867,86 +39616,86 @@ var ts; return true; } switch (node.kind) { - case 196: - case 224: - case 169: - case 223: + case 198: + case 226: + case 170: + case 225: return true; } return false; }; Rules.IsFunctionDeclContext = function (context) { switch (context.contextNode.kind) { - case 217: + case 219: + case 146: case 145: - case 144: - case 147: case 148: case 149: - case 177: - case 146: + case 150: case 178: - case 219: + case 147: + case 179: + case 221: return true; } return false; }; Rules.IsFunctionDeclarationOrFunctionExpressionContext = function (context) { - return context.contextNode.kind === 217 || context.contextNode.kind === 177; + return context.contextNode.kind === 219 || context.contextNode.kind === 178; }; Rules.IsTypeScriptDeclWithBlockContext = function (context) { return Rules.NodeIsTypeScriptDeclWithBlockContext(context.contextNode); }; Rules.NodeIsTypeScriptDeclWithBlockContext = function (node) { switch (node.kind) { - case 218: - case 190: - case 219: + case 220: + case 191: case 221: - case 157: - case 222: + case 223: + case 158: + case 224: return true; } return false; }; Rules.IsAfterCodeBlockContext = function (context) { switch (context.currentTokenParent.kind) { - case 218: - case 222: - case 221: - case 196: - case 248: + case 220: + case 224: case 223: - case 210: + case 198: + case 251: + case 225: + case 212: return true; } return false; }; Rules.IsControlDeclContext = function (context) { switch (context.contextNode.kind) { - case 200: - case 210: - case 203: - case 204: - case 205: case 202: - case 213: - case 201: - case 209: - case 248: + case 212: + case 205: + case 206: + case 207: + case 204: + case 215: + case 203: + case 211: + case 251: return true; default: return false; } }; Rules.IsObjectContext = function (context) { - return context.contextNode.kind === 169; + return context.contextNode.kind === 170; }; Rules.IsFunctionCallContext = function (context) { - return context.contextNode.kind === 172; + return context.contextNode.kind === 173; }; Rules.IsNewContext = function (context) { - return context.contextNode.kind === 173; + return context.contextNode.kind === 174; }; Rules.IsFunctionCallOrNewContext = function (context) { return Rules.IsFunctionCallContext(context) || Rules.IsNewContext(context); @@ -37958,10 +39707,10 @@ var ts; return context.nextTokenSpan.kind !== 20; }; Rules.IsArrowFunctionContext = function (context) { - return context.contextNode.kind === 178; + return context.contextNode.kind === 179; }; Rules.IsNonJsxSameLineTokenContext = function (context) { - return context.TokensAreOnSameLine() && context.contextNode.kind !== 240; + return context.TokensAreOnSameLine() && context.contextNode.kind !== 243; }; Rules.IsNotBeforeBlockInFunctionDeclarationContext = function (context) { return !Rules.IsFunctionDeclContext(context) && !Rules.IsBeforeBlockContext(context); @@ -37976,41 +39725,41 @@ var ts; while (ts.isExpression(node)) { node = node.parent; } - return node.kind === 141; + return node.kind === 142; }; Rules.IsStartOfVariableDeclarationList = function (context) { - return context.currentTokenParent.kind === 216 && + return context.currentTokenParent.kind === 218 && context.currentTokenParent.getStart(context.sourceFile) === context.currentTokenSpan.pos; }; Rules.IsNotFormatOnEnter = function (context) { return context.formattingRequestKind !== 2; }; Rules.IsModuleDeclContext = function (context) { - return context.contextNode.kind === 222; + return context.contextNode.kind === 224; }; Rules.IsObjectTypeContext = function (context) { - return context.contextNode.kind === 157; + return context.contextNode.kind === 158; }; Rules.IsTypeArgumentOrParameterOrAssertion = function (token, parent) { if (token.kind !== 25 && token.kind !== 27) { return false; } switch (parent.kind) { - case 153: - case 175: - case 218: - case 190: + case 154: + case 176: + case 220: + case 191: + case 221: case 219: - case 217: - case 177: case 178: + case 179: + case 146: case 145: - case 144: - case 149: case 150: - case 172: + case 151: case 173: - case 192: + case 174: + case 193: return true; default: return false; @@ -38021,13 +39770,13 @@ var ts; Rules.IsTypeArgumentOrParameterOrAssertion(context.nextTokenSpan, context.nextTokenParent); }; Rules.IsTypeAssertionContext = function (context) { - return context.contextNode.kind === 175; + return context.contextNode.kind === 176; }; Rules.IsVoidOpContext = function (context) { - return context.currentTokenSpan.kind === 103 && context.currentTokenParent.kind === 181; + return context.currentTokenSpan.kind === 103 && context.currentTokenParent.kind === 182; }; Rules.IsYieldOrYieldStarWithOperand = function (context) { - return context.contextNode.kind === 188 && context.contextNode.expression !== undefined; + return context.contextNode.kind === 189 && context.contextNode.expression !== undefined; }; return Rules; }()); @@ -38049,7 +39798,7 @@ var ts; return result; }; RulesMap.prototype.Initialize = function (rules) { - this.mapRowLength = 136 + 1; + this.mapRowLength = 137 + 1; this.map = new Array(this.mapRowLength * this.mapRowLength); var rulesBucketConstructionStateList = new Array(this.map.length); this.FillRules(rules, rulesBucketConstructionStateList); @@ -38225,7 +39974,7 @@ var ts; } TokenAllAccess.prototype.GetTokens = function () { var result = []; - for (var token = 0; token <= 136; token++) { + for (var token = 0; token <= 137; token++) { result.push(token); } return result; @@ -38267,9 +40016,9 @@ var ts; }; TokenRange.Any = TokenRange.AllTokens(); TokenRange.AnyIncludingMultilineComments = TokenRange.FromTokens(TokenRange.Any.GetTokens().concat([3])); - TokenRange.Keywords = TokenRange.FromRange(70, 136); + TokenRange.Keywords = TokenRange.FromRange(70, 137); TokenRange.BinaryOperators = TokenRange.FromRange(25, 68); - TokenRange.BinaryKeywordOperators = TokenRange.FromTokens([90, 91, 136, 116, 124]); + TokenRange.BinaryKeywordOperators = TokenRange.FromTokens([90, 91, 137, 116, 124]); TokenRange.UnaryPrefixOperators = TokenRange.FromTokens([41, 42, 50, 49]); TokenRange.UnaryPrefixExpressions = TokenRange.FromTokens([8, 69, 17, 19, 15, 97, 92]); TokenRange.UnaryPreincrementExpressions = TokenRange.FromTokens([69, 17, 97, 92]); @@ -38396,9 +40145,13 @@ var ts; if (line === 0) { return []; } + var endOfFormatSpan = ts.getEndLinePosition(line, sourceFile); + while (ts.isWhiteSpace(sourceFile.text.charCodeAt(endOfFormatSpan)) && !ts.isLineBreak(sourceFile.text.charCodeAt(endOfFormatSpan))) { + endOfFormatSpan--; + } var span = { pos: ts.getStartPositionOfLine(line - 1, sourceFile), - end: ts.getEndLinePosition(line, sourceFile) + 1 + end: endOfFormatSpan + 1 }; return formatSpan(span, sourceFile, options, rulesProvider, 2); } @@ -38456,17 +40209,17 @@ var ts; } function isListElement(parent, node) { switch (parent.kind) { - case 218: - case 219: + case 220: + case 221: return ts.rangeContainsRange(parent.members, node); - case 222: + case 224: var body = parent.body; - return body && body.kind === 196 && ts.rangeContainsRange(body.statements, node); - case 252: - case 196: - case 223: + return body && body.kind === 198 && ts.rangeContainsRange(body.statements, node); + case 255: + case 198: + case 225: return ts.rangeContainsRange(parent.statements, node); - case 248: + case 251: return ts.rangeContainsRange(parent.block.statements, node); } return false; @@ -38621,18 +40374,18 @@ var ts; return node.modifiers[0].kind; } switch (node.kind) { - case 218: return 73; - case 219: return 107; - case 217: return 87; - case 221: return 221; - case 147: return 123; - case 148: return 130; - case 145: + case 220: return 73; + case 221: return 107; + case 219: return 87; + case 223: return 223; + case 148: return 123; + case 149: return 130; + case 146: if (node.asteriskToken) { return 37; } - case 143: - case 140: + case 144: + case 141: return node.name.kind; } } @@ -38745,7 +40498,7 @@ var ts; consumeTokenAndAdvanceScanner(tokenInfo, node, parentDynamicIndentation, child); return inheritedIndentation; } - var effectiveParentStartLine = child.kind === 141 ? childStartLine : undecoratedParentStartLine; + var effectiveParentStartLine = child.kind === 142 ? childStartLine : undecoratedParentStartLine; var childIndentation = computeIndentation(child, childStartLine, childIndentationAmount, node, parentDynamicIndentation, effectiveParentStartLine); processNode(child, childContextNode, childStartLine, undecoratedChildStartLine, childIndentation.indentation, childIndentation.delta); childContextNode = node; @@ -38774,8 +40527,8 @@ var ts; } } var inheritedIndentation = -1; - for (var _i = 0, nodes_6 = nodes; _i < nodes_6.length; _i++) { - var child = nodes_6[_i]; + for (var _i = 0, nodes_7 = nodes; _i < nodes_7.length; _i++) { + var child = nodes_7[_i]; inheritedIndentation = processChildNode(child, inheritedIndentation, node, listDynamicIndentation, startLine, startLine, true); } if (listEndToken !== 0) { @@ -39048,20 +40801,20 @@ var ts; } function isSomeBlock(kind) { switch (kind) { - case 196: - case 223: + case 198: + case 225: return true; } return false; } function getOpenTokenForList(node, list) { switch (node.kind) { - case 146: - case 217: - case 177: - case 145: - case 144: + case 147: + case 219: case 178: + case 146: + case 145: + case 179: if (node.typeParameters === list) { return 25; } @@ -39069,8 +40822,8 @@ var ts; return 17; } break; - case 172: case 173: + case 174: if (node.typeArguments === list) { return 25; } @@ -39078,7 +40831,7 @@ var ts; return 17; } break; - case 153: + case 154: if (node.typeArguments === list) { return 25; } @@ -39179,7 +40932,7 @@ var ts; var lineStart = ts.getLineStartPositionForPosition(current_1, sourceFile); return SmartIndenter.findFirstNonWhitespaceColumn(lineStart, current_1, sourceFile, options); } - if (precedingToken.kind === 24 && precedingToken.parent.kind !== 185) { + if (precedingToken.kind === 24 && precedingToken.parent.kind !== 186) { var actualIndentation = getActualIndentationForListItemBeforeComma(precedingToken, sourceFile, options); if (actualIndentation !== -1) { return actualIndentation; @@ -39277,7 +41030,7 @@ var ts; } function getActualIndentationForNode(current, parent, currentLineAndChar, parentAndChildShareLine, sourceFile, options) { var useActualIndentation = (ts.isDeclaration(current) || ts.isStatement(current)) && - (parent.kind === 252 || !parentAndChildShareLine); + (parent.kind === 255 || !parentAndChildShareLine); if (!useActualIndentation) { return -1; } @@ -39301,7 +41054,7 @@ var ts; return sourceFile.getLineAndCharacterOfPosition(n.getStart(sourceFile)); } function childStartsOnTheSameLineWithElseInIfStatement(parent, child, childStartLine, sourceFile) { - if (parent.kind === 200 && parent.elseStatement === child) { + if (parent.kind === 202 && parent.elseStatement === child) { var elseKeyword = ts.findChildOfKind(parent, 80, sourceFile); ts.Debug.assert(elseKeyword !== undefined); var elseKeywordStartLine = getStartLineAndCharacterForNode(elseKeyword, sourceFile).line; @@ -39313,23 +41066,23 @@ var ts; function getContainingList(node, sourceFile) { if (node.parent) { switch (node.parent.kind) { - case 153: + case 154: if (node.parent.typeArguments && ts.rangeContainsStartEnd(node.parent.typeArguments, node.getStart(sourceFile), node.getEnd())) { return node.parent.typeArguments; } break; - case 169: + case 170: return node.parent.properties; - case 168: + case 169: return node.parent.elements; - case 217: - case 177: + case 219: case 178: + case 179: + case 146: case 145: - case 144: - case 149: - case 150: { + case 150: + case 151: { var start = node.getStart(sourceFile); if (node.parent.typeParameters && ts.rangeContainsStartEnd(node.parent.typeParameters, start, node.getEnd())) { @@ -39340,8 +41093,8 @@ var ts; } break; } - case 173: - case 172: { + case 174: + case 173: { var start = node.getStart(sourceFile); if (node.parent.typeArguments && ts.rangeContainsStartEnd(node.parent.typeArguments, start, node.getEnd())) { @@ -39369,8 +41122,8 @@ var ts; if (node.kind === 18) { return -1; } - if (node.parent && (node.parent.kind === 172 || - node.parent.kind === 173) && + if (node.parent && (node.parent.kind === 173 || + node.parent.kind === 174) && node.parent.expression !== node) { var fullCallOrNewExpression = node.parent.expression; var startingExpression = getStartingExpression(fullCallOrNewExpression); @@ -39388,10 +41141,10 @@ var ts; function getStartingExpression(node) { while (true) { switch (node.kind) { - case 172: case 173: - case 170: + case 174: case 171: + case 172: node = node.expression; break; default: @@ -39445,45 +41198,45 @@ var ts; SmartIndenter.findFirstNonWhitespaceColumn = findFirstNonWhitespaceColumn; function nodeContentIsAlwaysIndented(kind) { switch (kind) { - case 199: - case 218: - case 190: - case 219: - case 221: + case 201: case 220: - case 168: - case 196: + case 191: + case 221: case 223: + case 222: case 169: - case 157: - case 159: - case 224: - case 246: - case 245: - case 176: + case 198: + case 225: case 170: - case 172: + case 158: + case 160: + case 226: + case 249: + case 248: + case 177: + case 171: case 173: - case 197: - case 215: - case 231: - case 208: - case 186: - case 166: - case 165: - case 239: - case 238: - case 244: - case 144: - case 149: - case 150: - case 140: - case 154: - case 155: - case 162: case 174: - case 182: - case 229: + case 199: + case 217: + case 234: + case 210: + case 187: + case 167: + case 166: + case 242: + case 241: + case 247: + case 145: + case 150: + case 151: + case 141: + case 155: + case 156: + case 163: + case 175: + case 183: + case 232: return true; } return false; @@ -39491,22 +41244,22 @@ var ts; function nodeWillIndentChild(parent, child, indentByDefault) { var childKind = child ? child.kind : 0; switch (parent.kind) { - case 201: - case 202: - case 204: - case 205: case 203: - case 200: - case 217: - case 177: - case 145: + case 204: + case 206: + case 207: + case 205: + case 202: + case 219: case 178: case 146: + case 179: case 147: case 148: - return childKind !== 196; - case 237: - return childKind !== 241; + case 149: + return childKind !== 198; + case 240: + return childKind !== 244; } return indentByDefault; } @@ -39636,11 +41389,11 @@ var ts; return pos; }; NodeObject.prototype.createSyntaxList = function (nodes) { - var list = createNode(275, nodes.pos, nodes.end, 0, this); + var list = createNode(278, nodes.pos, nodes.end, 0, this); list._children = []; var pos = nodes.pos; - for (var _i = 0, nodes_7 = nodes; _i < nodes_7.length; _i++) { - var node = nodes_7[_i]; + for (var _i = 0, nodes_8 = nodes; _i < nodes_8.length; _i++) { + var node = nodes_8[_i]; if (pos < node.pos) { pos = this.addSyntheticNodes(list._children, pos, node.pos); } @@ -39655,7 +41408,7 @@ var ts; NodeObject.prototype.createChildren = function (sourceFile) { var _this = this; var children; - if (this.kind >= 137) { + if (this.kind >= 138) { scanner.setText((sourceFile || this.getSourceFile()).text); children = []; var pos_3 = this.pos; @@ -39702,7 +41455,7 @@ var ts; return undefined; } var child = children[0]; - return child.kind < 137 ? child : child.getFirstToken(sourceFile); + return child.kind < 138 ? child : child.getFirstToken(sourceFile); }; NodeObject.prototype.getLastToken = function (sourceFile) { var children = this.getChildren(sourceFile); @@ -39710,7 +41463,7 @@ var ts; if (!child) { return undefined; } - return child.kind < 137 ? child : child.getLastToken(sourceFile); + return child.kind < 138 ? child : child.getLastToken(sourceFile); }; return NodeObject; }()); @@ -39752,7 +41505,7 @@ var ts; ts.forEach(declarations, function (declaration, indexOfDeclaration) { if (ts.indexOf(declarations, declaration) === indexOfDeclaration) { var sourceFileOfDeclaration_1 = ts.getSourceFileOfNode(declaration); - if (canUseParsedParamTagComments && declaration.kind === 140) { + if (canUseParsedParamTagComments && declaration.kind === 141) { ts.forEach(getJsDocCommentTextRange(declaration.parent, sourceFileOfDeclaration_1), function (jsDocCommentTextRange) { var cleanedParamJsDocComment = getCleanedParamJsDocComment(jsDocCommentTextRange.pos, jsDocCommentTextRange.end, sourceFileOfDeclaration_1); if (cleanedParamJsDocComment) { @@ -39760,13 +41513,13 @@ var ts; } }); } - if (declaration.kind === 222 && declaration.body.kind === 222) { + if (declaration.kind === 224 && declaration.body.kind === 224) { return; } - while (declaration.kind === 222 && declaration.parent.kind === 222) { + while (declaration.kind === 224 && declaration.parent.kind === 224) { declaration = declaration.parent; } - ts.forEach(getJsDocCommentTextRange(declaration.kind === 215 ? declaration.parent.parent : declaration, sourceFileOfDeclaration_1), function (jsDocCommentTextRange) { + ts.forEach(getJsDocCommentTextRange(declaration.kind === 217 ? declaration.parent.parent : declaration, sourceFileOfDeclaration_1), function (jsDocCommentTextRange) { var cleanedJsDocComment = getCleanedJsDocComment(jsDocCommentTextRange.pos, jsDocCommentTextRange.end, sourceFileOfDeclaration_1); if (cleanedJsDocComment) { ts.addRange(jsDocCommentParts, cleanedJsDocComment); @@ -40077,9 +41830,9 @@ var ts; if (result_2 !== undefined) { return result_2; } - if (declaration.name.kind === 138) { + if (declaration.name.kind === 139) { var expr = declaration.name.expression; - if (expr.kind === 170) { + if (expr.kind === 171) { return expr.name.text; } return getTextOfIdentifierOrLiteral(expr); @@ -40099,9 +41852,9 @@ var ts; } function visit(node) { switch (node.kind) { - case 217: + case 219: + case 146: case 145: - case 144: var functionDeclaration = node; var declarationName = getDeclarationName(functionDeclaration); if (declarationName) { @@ -40118,62 +41871,62 @@ var ts; ts.forEachChild(node, visit); } break; - case 218: - case 219: case 220: case 221: case 222: - case 225: - case 234: - case 230: - case 225: - case 227: - case 228: - case 147: - case 148: - case 157: - addDeclaration(node); - case 146: - case 197: - case 216: - case 165: - case 166: case 223: + case 224: + case 228: + case 237: + case 233: + case 228: + case 230: + case 231: + case 148: + case 149: + case 158: + addDeclaration(node); + case 147: + case 199: + case 218: + case 166: + case 167: + case 225: ts.forEachChild(node, visit); break; - case 196: + case 198: if (ts.isFunctionBlock(node)) { ts.forEachChild(node, visit); } break; - case 140: + case 141: if (!(node.flags & 28)) { break; } - case 215: - case 167: + case 217: + case 168: if (ts.isBindingPattern(node.name)) { ts.forEachChild(node.name, visit); break; } - case 251: + case 254: + case 144: case 143: - case 142: addDeclaration(node); break; - case 232: + case 235: if (node.exportClause) { ts.forEach(node.exportClause.elements, visit); } break; - case 226: + case 229: var importClause = node.importClause; if (importClause) { if (importClause.name) { addDeclaration(importClause); } if (importClause.namedBindings) { - if (importClause.namedBindings.kind === 228) { + if (importClause.namedBindings.kind === 231) { addDeclaration(importClause.namedBindings); } else { @@ -40327,14 +42080,14 @@ var ts; return false; } return ts.forEach(symbol.declarations, function (declaration) { - if (declaration.kind === 177) { + if (declaration.kind === 178) { return true; } - if (declaration.kind !== 215 && declaration.kind !== 217) { + if (declaration.kind !== 217 && declaration.kind !== 219) { return false; } - for (var parent_10 = declaration.parent; !ts.isFunctionBlock(parent_10); parent_10 = parent_10.parent) { - if (parent_10.kind === 252 || parent_10.kind === 223) { + for (var parent_12 = declaration.parent; !ts.isFunctionBlock(parent_12); parent_12 = parent_12.parent) { + if (parent_12.kind === 255 || parent_12.kind === 225) { return false; } } @@ -40366,14 +42119,13 @@ var ts; }; HostCache.prototype.createEntry = function (fileName, path) { var entry; - var scriptKind = this.host.getScriptKind ? this.host.getScriptKind(fileName) : 0; var scriptSnapshot = this.host.getScriptSnapshot(fileName); if (scriptSnapshot) { entry = { hostFileName: fileName, version: this.host.getScriptVersion(fileName), scriptSnapshot: scriptSnapshot, - scriptKind: scriptKind ? scriptKind : ts.getScriptKindFromFileName(fileName) + scriptKind: ts.getScriptKind(fileName, this.host) }; } this.fileNameToEntry.set(path, entry); @@ -40420,7 +42172,7 @@ var ts; if (!scriptSnapshot) { throw new Error("Could not find file: '" + fileName + "'."); } - var scriptKind = this.host.getScriptKind ? this.host.getScriptKind(fileName) : 0; + var scriptKind = ts.getScriptKind(fileName, this.host); var version = this.host.getScriptVersion(fileName); var sourceFile; if (this.currentFileName !== fileName) { @@ -40632,9 +42384,22 @@ var ts; if (readImportFiles === void 0) { readImportFiles = true; } if (detectJavaScriptImports === void 0) { detectJavaScriptImports = false; } var referencedFiles = []; + var typeReferenceDirectives = []; var importedFiles = []; var ambientExternalModules; var isNoDefaultLib = false; + var braceNesting = 0; + var externalModule = false; + function nextToken() { + var token = scanner.scan(); + if (token === 15) { + braceNesting++; + } + else if (token === 16) { + braceNesting--; + } + return token; + } function processTripleSlashDirectives() { var commentRanges = ts.getLeadingCommentRanges(sourceText, 0); ts.forEach(commentRanges, function (commentRange) { @@ -40644,32 +42409,44 @@ var ts; isNoDefaultLib = referencePathMatchResult.isNoDefaultLib; var fileReference = referencePathMatchResult.fileReference; if (fileReference) { - referencedFiles.push(fileReference); + var collection = referencePathMatchResult.isTypeReferenceDirective + ? typeReferenceDirectives + : referencedFiles; + collection.push(fileReference); } } }); } + function getFileReference() { + var file = scanner.getTokenValue(); + var pos = scanner.getTokenPos(); + return { + fileName: file, + pos: pos, + end: pos + file.length + }; + } function recordAmbientExternalModule() { if (!ambientExternalModules) { ambientExternalModules = []; } - ambientExternalModules.push(scanner.getTokenValue()); + ambientExternalModules.push({ ref: getFileReference(), depth: braceNesting }); } function recordModuleName() { - var importPath = scanner.getTokenValue(); - var pos = scanner.getTokenPos(); - importedFiles.push({ - fileName: importPath, - pos: pos, - end: pos + importPath.length - }); + importedFiles.push(getFileReference()); + markAsExternalModuleIfTopLevel(); + } + function markAsExternalModuleIfTopLevel() { + if (braceNesting === 0) { + externalModule = true; + } } function tryConsumeDeclare() { var token = scanner.getToken(); if (token === 122) { - token = scanner.scan(); + token = nextToken(); if (token === 125) { - token = scanner.scan(); + token = nextToken(); if (token === 9) { recordAmbientExternalModule(); } @@ -40681,16 +42458,16 @@ var ts; function tryConsumeImport() { var token = scanner.getToken(); if (token === 89) { - token = scanner.scan(); + token = nextToken(); if (token === 9) { recordModuleName(); return true; } else { if (token === 69 || ts.isKeyword(token)) { - token = scanner.scan(); - if (token === 134) { - token = scanner.scan(); + token = nextToken(); + if (token === 135) { + token = nextToken(); if (token === 9) { recordModuleName(); return true; @@ -40702,21 +42479,21 @@ var ts; } } else if (token === 24) { - token = scanner.scan(); + token = nextToken(); } else { return true; } } if (token === 15) { - token = scanner.scan(); + token = nextToken(); while (token !== 16 && token !== 1) { - token = scanner.scan(); + token = nextToken(); } if (token === 16) { - token = scanner.scan(); - if (token === 134) { - token = scanner.scan(); + token = nextToken(); + if (token === 135) { + token = nextToken(); if (token === 9) { recordModuleName(); } @@ -40724,13 +42501,13 @@ var ts; } } else if (token === 37) { - token = scanner.scan(); + token = nextToken(); if (token === 116) { - token = scanner.scan(); + token = nextToken(); if (token === 69 || ts.isKeyword(token)) { - token = scanner.scan(); - if (token === 134) { - token = scanner.scan(); + token = nextToken(); + if (token === 135) { + token = nextToken(); if (token === 9) { recordModuleName(); } @@ -40746,16 +42523,17 @@ var ts; function tryConsumeExport() { var token = scanner.getToken(); if (token === 82) { - token = scanner.scan(); + markAsExternalModuleIfTopLevel(); + token = nextToken(); if (token === 15) { - token = scanner.scan(); + token = nextToken(); while (token !== 16 && token !== 1) { - token = scanner.scan(); + token = nextToken(); } if (token === 16) { - token = scanner.scan(); - if (token === 134) { - token = scanner.scan(); + token = nextToken(); + if (token === 135) { + token = nextToken(); if (token === 9) { recordModuleName(); } @@ -40763,18 +42541,18 @@ var ts; } } else if (token === 37) { - token = scanner.scan(); - if (token === 134) { - token = scanner.scan(); + token = nextToken(); + if (token === 135) { + token = nextToken(); if (token === 9) { recordModuleName(); } } } else if (token === 89) { - token = scanner.scan(); + token = nextToken(); if (token === 69 || ts.isKeyword(token)) { - token = scanner.scan(); + token = nextToken(); if (token === 56) { if (tryConsumeRequireCall(true)) { return true; @@ -40787,11 +42565,11 @@ var ts; return false; } function tryConsumeRequireCall(skipCurrentToken) { - var token = skipCurrentToken ? scanner.scan() : scanner.getToken(); + var token = skipCurrentToken ? nextToken() : scanner.getToken(); if (token === 128) { - token = scanner.scan(); + token = nextToken(); if (token === 17) { - token = scanner.scan(); + token = nextToken(); if (token === 9) { recordModuleName(); } @@ -40803,15 +42581,15 @@ var ts; function tryConsumeDefine() { var token = scanner.getToken(); if (token === 69 && scanner.getTokenValue() === "define") { - token = scanner.scan(); + token = nextToken(); if (token !== 17) { return true; } - token = scanner.scan(); + token = nextToken(); if (token === 9) { - token = scanner.scan(); + token = nextToken(); if (token === 24) { - token = scanner.scan(); + token = nextToken(); } else { return true; @@ -40820,14 +42598,14 @@ var ts; if (token !== 19) { return true; } - token = scanner.scan(); + token = nextToken(); var i = 0; while (token !== 20 && token !== 1) { if (token === 9) { recordModuleName(); i++; } - token = scanner.scan(); + token = nextToken(); } return true; } @@ -40835,7 +42613,7 @@ var ts; } function processImports() { scanner.setText(sourceText); - scanner.scan(); + nextToken(); while (true) { if (scanner.getToken() === 1) { break; @@ -40847,7 +42625,7 @@ var ts; continue; } else { - scanner.scan(); + nextToken(); } } scanner.setText(undefined); @@ -40856,12 +42634,38 @@ var ts; processImports(); } processTripleSlashDirectives(); - return { referencedFiles: referencedFiles, importedFiles: importedFiles, isLibFile: isNoDefaultLib, ambientExternalModules: ambientExternalModules }; + if (externalModule) { + if (ambientExternalModules) { + for (var _i = 0, ambientExternalModules_1 = ambientExternalModules; _i < ambientExternalModules_1.length; _i++) { + var decl = ambientExternalModules_1[_i]; + importedFiles.push(decl.ref); + } + } + return { referencedFiles: referencedFiles, typeReferenceDirectives: typeReferenceDirectives, importedFiles: importedFiles, isLibFile: isNoDefaultLib, ambientExternalModules: undefined }; + } + else { + var ambientModuleNames = void 0; + if (ambientExternalModules) { + for (var _a = 0, ambientExternalModules_2 = ambientExternalModules; _a < ambientExternalModules_2.length; _a++) { + var decl = ambientExternalModules_2[_a]; + if (decl.depth === 0) { + if (!ambientModuleNames) { + ambientModuleNames = []; + } + ambientModuleNames.push(decl.ref.fileName); + } + else { + importedFiles.push(decl.ref); + } + } + } + return { referencedFiles: referencedFiles, typeReferenceDirectives: typeReferenceDirectives, importedFiles: importedFiles, isLibFile: isNoDefaultLib, ambientExternalModules: ambientModuleNames }; + } } ts.preProcessFile = preProcessFile; function getTargetLabel(referenceNode, labelName) { while (referenceNode) { - if (referenceNode.kind === 211 && referenceNode.label.text === labelName) { + if (referenceNode.kind === 213 && referenceNode.label.text === labelName) { return referenceNode.label; } referenceNode = referenceNode.parent; @@ -40870,16 +42674,16 @@ var ts; } function isJumpStatementTarget(node) { return node.kind === 69 && - (node.parent.kind === 207 || node.parent.kind === 206) && + (node.parent.kind === 209 || node.parent.kind === 208) && node.parent.label === node; } function isLabelOfLabeledStatement(node) { return node.kind === 69 && - node.parent.kind === 211 && + node.parent.kind === 213 && node.parent.label === node; } function isLabeledBy(node, labelName) { - for (var owner = node.parent; owner.kind === 211; owner = owner.parent) { + for (var owner = node.parent; owner.kind === 213; owner = owner.parent) { if (owner.label.text === labelName) { return true; } @@ -40890,25 +42694,25 @@ var ts; return isLabelOfLabeledStatement(node) || isJumpStatementTarget(node); } function isRightSideOfQualifiedName(node) { - return node.parent.kind === 137 && node.parent.right === node; + return node.parent.kind === 138 && node.parent.right === node; } function isRightSideOfPropertyAccess(node) { - return node && node.parent && node.parent.kind === 170 && node.parent.name === node; + return node && node.parent && node.parent.kind === 171 && node.parent.name === node; } function isCallExpressionTarget(node) { if (isRightSideOfPropertyAccess(node)) { node = node.parent; } - return node && node.parent && node.parent.kind === 172 && node.parent.expression === node; + return node && node.parent && node.parent.kind === 173 && node.parent.expression === node; } function isNewExpressionTarget(node) { if (isRightSideOfPropertyAccess(node)) { node = node.parent; } - return node && node.parent && node.parent.kind === 173 && node.parent.expression === node; + return node && node.parent && node.parent.kind === 174 && node.parent.expression === node; } function isNameOfModuleDeclaration(node) { - return node.parent.kind === 222 && node.parent.name === node; + return node.parent.kind === 224 && node.parent.name === node; } function isNameOfFunctionDeclaration(node) { return node.kind === 69 && @@ -40916,22 +42720,22 @@ var ts; } function isNameOfPropertyAssignment(node) { return (node.kind === 69 || node.kind === 9 || node.kind === 8) && - (node.parent.kind === 249 || node.parent.kind === 250) && node.parent.name === node; + (node.parent.kind === 252 || node.parent.kind === 253) && node.parent.name === node; } function isLiteralNameOfPropertyDeclarationOrIndexAccess(node) { if (node.kind === 9 || node.kind === 8) { switch (node.parent.kind) { - case 143: - case 142: - case 249: - case 251: - case 145: case 144: - case 147: + case 143: + case 252: + case 254: + case 146: + case 145: case 148: - case 222: + case 149: + case 224: return node.parent.name === node; - case 171: + case 172: return node.parent.argumentExpression === node; } } @@ -40969,7 +42773,7 @@ var ts; } } var keywordCompletions = []; - for (var i = 70; i <= 136; i++) { + for (var i = 70; i <= 137; i++) { keywordCompletions.push({ name: ts.tokenToString(i), kind: ScriptElementKind.keyword, @@ -40984,17 +42788,17 @@ var ts; return undefined; } switch (node.kind) { - case 252: + case 255: + case 146: case 145: - case 144: - case 217: - case 177: - case 147: - case 148: - case 218: case 219: + case 178: + case 148: + case 149: + case 220: case 221: - case 222: + case 223: + case 224: return node; } } @@ -41002,38 +42806,38 @@ var ts; ts.getContainerNode = getContainerNode; function getNodeKind(node) { switch (node.kind) { - case 222: return ScriptElementKind.moduleElement; - case 218: return ScriptElementKind.classElement; - case 219: return ScriptElementKind.interfaceElement; - case 220: return ScriptElementKind.typeElement; - case 221: return ScriptElementKind.enumElement; - case 215: + case 224: return ScriptElementKind.moduleElement; + case 220: return ScriptElementKind.classElement; + case 221: return ScriptElementKind.interfaceElement; + case 222: return ScriptElementKind.typeElement; + case 223: return ScriptElementKind.enumElement; + case 217: return ts.isConst(node) ? ScriptElementKind.constElement : ts.isLet(node) ? ScriptElementKind.letElement : ScriptElementKind.variableElement; - case 217: return ScriptElementKind.functionElement; - case 147: return ScriptElementKind.memberGetAccessorElement; - case 148: return ScriptElementKind.memberSetAccessorElement; + case 219: return ScriptElementKind.functionElement; + case 148: return ScriptElementKind.memberGetAccessorElement; + case 149: return ScriptElementKind.memberSetAccessorElement; + case 146: case 145: - case 144: return ScriptElementKind.memberFunctionElement; + case 144: case 143: - case 142: return ScriptElementKind.memberVariableElement; - case 151: return ScriptElementKind.indexSignatureElement; - case 150: return ScriptElementKind.constructSignatureElement; - case 149: return ScriptElementKind.callSignatureElement; - case 146: return ScriptElementKind.constructorImplementationElement; - case 139: return ScriptElementKind.typeParameterElement; - case 251: return ScriptElementKind.variableElement; - case 140: return (node.flags & 28) ? ScriptElementKind.memberVariableElement : ScriptElementKind.parameterElement; - case 225: - case 230: - case 227: - case 234: + case 152: return ScriptElementKind.indexSignatureElement; + case 151: return ScriptElementKind.constructSignatureElement; + case 150: return ScriptElementKind.callSignatureElement; + case 147: return ScriptElementKind.constructorImplementationElement; + case 140: return ScriptElementKind.typeParameterElement; + case 254: return ScriptElementKind.variableElement; + case 141: return (node.flags & 28) ? ScriptElementKind.memberVariableElement : ScriptElementKind.parameterElement; case 228: + case 233: + case 230: + case 237: + case 231: return ScriptElementKind.alias; } return ScriptElementKind.unknown; @@ -41117,7 +42921,7 @@ var ts; writeFile: function (fileName, data, writeByteOrderMark) { }, getCurrentDirectory: function () { return currentDirectory; }, fileExists: function (fileName) { - ts.Debug.assert(!host.resolveModuleNames); + ts.Debug.assert(!host.resolveModuleNames || !host.resolveTypeReferenceDirectives); return hostCache.getOrCreateEntry(fileName) !== undefined; }, readFile: function (fileName) { @@ -41125,7 +42929,7 @@ var ts; return entry && entry.scriptSnapshot.getText(0, entry.scriptSnapshot.getLength()); }, directoryExists: function (directoryName) { - ts.Debug.assert(!host.resolveModuleNames); + ts.Debug.assert(!host.resolveModuleNames || !host.resolveTypeReferenceDirectives); return ts.directoryProbablyExists(directoryName, host); } }; @@ -41135,6 +42939,11 @@ var ts; if (host.resolveModuleNames) { compilerHost.resolveModuleNames = function (moduleNames, containingFile) { return host.resolveModuleNames(moduleNames, containingFile); }; } + if (host.resolveTypeReferenceDirectives) { + compilerHost.resolveTypeReferenceDirectives = function (typeReferenceDirectiveNames, containingFile) { + return host.resolveTypeReferenceDirectives(typeReferenceDirectiveNames, containingFile); + }; + } var newProgram = ts.createProgram(hostCache.getRootFileNames(), newSettings, compilerHost, program); if (program) { var oldSourceFiles = program.getSourceFiles(); @@ -41266,9 +43075,9 @@ var ts; isJsDocTagName = true; } switch (tag.kind) { - case 273: - case 271: - case 272: + case 276: + case 274: + case 275: var tagWithExpression = tag; if (tagWithExpression.typeExpression) { insideJsDocTagExpression = tagWithExpression.typeExpression.pos < position && position < tagWithExpression.typeExpression.end; @@ -41303,13 +43112,13 @@ var ts; log("Returning an empty list because completion was requested in an invalid position."); return undefined; } - var parent_11 = contextToken.parent, kind = contextToken.kind; + var parent_13 = contextToken.parent, kind = contextToken.kind; if (kind === 21) { - if (parent_11.kind === 170) { + if (parent_13.kind === 171) { node = contextToken.parent.expression; isRightOfDot = true; } - else if (parent_11.kind === 137) { + else if (parent_13.kind === 138) { node = contextToken.parent.left; isRightOfDot = true; } @@ -41322,7 +43131,7 @@ var ts; isRightOfOpenTag = true; location = contextToken; } - else if (kind === 39 && contextToken.parent.kind === 241) { + else if (kind === 39 && contextToken.parent.kind === 244) { isStartingCloseTag = true; location = contextToken; } @@ -41338,7 +43147,7 @@ var ts; else if (isRightOfOpenTag) { var tagSymbols = typeChecker.getJsxIntrinsicTagNames(); if (tryGetGlobalSymbols()) { - symbols = tagSymbols.concat(symbols.filter(function (s) { return !!(s.flags & 107455); })); + symbols = tagSymbols.concat(symbols.filter(function (s) { return !!(s.flags & (107455 | 8388608)); })); } else { symbols = tagSymbols; @@ -41365,7 +43174,7 @@ var ts; function getTypeScriptMemberSymbols() { isMemberCompletion = true; isNewIdentifierLocation = false; - if (node.kind === 69 || node.kind === 137 || node.kind === 170) { + if (node.kind === 69 || node.kind === 138 || node.kind === 171) { var symbol = typeChecker.getSymbolAtLocation(node); if (symbol && symbol.flags & 8388608) { symbol = typeChecker.getAliasedSymbol(symbol); @@ -41411,7 +43220,7 @@ var ts; } if (jsxContainer = tryGetContainingJsxElement(contextToken)) { var attrsType = void 0; - if ((jsxContainer.kind === 238) || (jsxContainer.kind === 239)) { + if ((jsxContainer.kind === 241) || (jsxContainer.kind === 242)) { attrsType = typeChecker.getJsxElementAttributesType(jsxContainer); if (attrsType) { symbols = filterJsxAttributes(typeChecker.getPropertiesOfType(attrsType), jsxContainer.attributes); @@ -41451,15 +43260,15 @@ var ts; return result; } function isInJsxText(contextToken) { - if (contextToken.kind === 240) { + if (contextToken.kind === 243) { return true; } if (contextToken.kind === 27 && contextToken.parent) { - if (contextToken.parent.kind === 239) { + if (contextToken.parent.kind === 242) { return true; } - if (contextToken.parent.kind === 241 || contextToken.parent.kind === 238) { - return contextToken.parent.parent && contextToken.parent.parent.kind === 237; + if (contextToken.parent.kind === 244 || contextToken.parent.kind === 241) { + return contextToken.parent.parent && contextToken.parent.parent.kind === 240; } } return false; @@ -41469,40 +43278,40 @@ var ts; var containingNodeKind = previousToken.parent.kind; switch (previousToken.kind) { case 24: - return containingNodeKind === 172 - || containingNodeKind === 146 - || containingNodeKind === 173 - || containingNodeKind === 168 - || containingNodeKind === 185 - || containingNodeKind === 154; + return containingNodeKind === 173 + || containingNodeKind === 147 + || containingNodeKind === 174 + || containingNodeKind === 169 + || containingNodeKind === 186 + || containingNodeKind === 155; case 17: - return containingNodeKind === 172 - || containingNodeKind === 146 - || containingNodeKind === 173 - || containingNodeKind === 176 - || containingNodeKind === 162; + return containingNodeKind === 173 + || containingNodeKind === 147 + || containingNodeKind === 174 + || containingNodeKind === 177 + || containingNodeKind === 163; case 19: - return containingNodeKind === 168 - || containingNodeKind === 151 - || containingNodeKind === 138; + return containingNodeKind === 169 + || containingNodeKind === 152 + || containingNodeKind === 139; case 125: case 126: return true; case 21: - return containingNodeKind === 222; + return containingNodeKind === 224; case 15: - return containingNodeKind === 218; + return containingNodeKind === 220; case 56: - return containingNodeKind === 215 - || containingNodeKind === 185; + return containingNodeKind === 217 + || containingNodeKind === 186; case 12: - return containingNodeKind === 187; + return containingNodeKind === 188; case 13: - return containingNodeKind === 194; + return containingNodeKind === 196; case 112: case 110: case 111: - return containingNodeKind === 143; + return containingNodeKind === 144; } switch (previousToken.getText()) { case "public": @@ -41515,7 +43324,7 @@ var ts; } function isInStringOrRegularExpressionOrTemplateLiteral(contextToken) { if (contextToken.kind === 9 - || contextToken.kind === 164 + || contextToken.kind === 165 || contextToken.kind === 10 || ts.isTemplateLiteralKind(contextToken.kind)) { var start_7 = contextToken.getStart(); @@ -41534,16 +43343,25 @@ var ts; isMemberCompletion = true; var typeForObject; var existingMembers; - if (objectLikeContainer.kind === 169) { + if (objectLikeContainer.kind === 170) { isNewIdentifierLocation = true; typeForObject = typeChecker.getContextualType(objectLikeContainer); existingMembers = objectLikeContainer.properties; } - else if (objectLikeContainer.kind === 165) { + else if (objectLikeContainer.kind === 166) { isNewIdentifierLocation = false; var rootDeclaration = ts.getRootDeclaration(objectLikeContainer.parent); if (ts.isVariableLike(rootDeclaration)) { - if (rootDeclaration.initializer || rootDeclaration.type) { + var canGetType = !!(rootDeclaration.initializer || rootDeclaration.type); + if (!canGetType && rootDeclaration.kind === 141) { + if (ts.isExpression(rootDeclaration.parent)) { + canGetType = !!typeChecker.getContextualType(rootDeclaration.parent); + } + else if (rootDeclaration.parent.kind === 146 || rootDeclaration.parent.kind === 149) { + canGetType = ts.isExpression(rootDeclaration.parent.parent) && !!typeChecker.getContextualType(rootDeclaration.parent.parent); + } + } + if (canGetType) { typeForObject = typeChecker.getTypeAtLocation(objectLikeContainer); existingMembers = objectLikeContainer.elements; } @@ -41565,9 +43383,9 @@ var ts; return true; } function tryGetImportOrExportClauseCompletionSymbols(namedImportsOrExports) { - var declarationKind = namedImportsOrExports.kind === 229 ? - 226 : - 232; + var declarationKind = namedImportsOrExports.kind === 232 ? + 229 : + 235; var importOrExportDeclaration = ts.getAncestor(namedImportsOrExports, declarationKind); var moduleSpecifier = importOrExportDeclaration.moduleSpecifier; if (!moduleSpecifier) { @@ -41588,9 +43406,9 @@ var ts; switch (contextToken.kind) { case 15: case 24: - var parent_12 = contextToken.parent; - if (parent_12 && (parent_12.kind === 169 || parent_12.kind === 165)) { - return parent_12; + var parent_14 = contextToken.parent; + if (parent_14 && (parent_14.kind === 170 || parent_14.kind === 166)) { + return parent_14; } break; } @@ -41603,8 +43421,8 @@ var ts; case 15: case 24: switch (contextToken.parent.kind) { - case 229: - case 233: + case 232: + case 236: return contextToken.parent; } } @@ -41613,34 +43431,34 @@ var ts; } function tryGetContainingJsxElement(contextToken) { if (contextToken) { - var parent_13 = contextToken.parent; + var parent_15 = contextToken.parent; switch (contextToken.kind) { case 26: case 39: case 69: - case 242: - case 243: - if (parent_13 && (parent_13.kind === 238 || parent_13.kind === 239)) { - return parent_13; + case 245: + case 246: + if (parent_15 && (parent_15.kind === 241 || parent_15.kind === 242)) { + return parent_15; } - else if (parent_13.kind === 242) { - return parent_13.parent; + else if (parent_15.kind === 245) { + return parent_15.parent; } break; case 9: - if (parent_13 && ((parent_13.kind === 242) || (parent_13.kind === 243))) { - return parent_13.parent; + if (parent_15 && ((parent_15.kind === 245) || (parent_15.kind === 246))) { + return parent_15.parent; } break; case 16: - if (parent_13 && - parent_13.kind === 244 && - parent_13.parent && - (parent_13.parent.kind === 242)) { - return parent_13.parent.parent; + if (parent_15 && + parent_15.kind === 247 && + parent_15.parent && + (parent_15.parent.kind === 245)) { + return parent_15.parent.parent; } - if (parent_13 && parent_13.kind === 243) { - return parent_13.parent; + if (parent_15 && parent_15.kind === 246) { + return parent_15.parent; } break; } @@ -41649,16 +43467,16 @@ var ts; } function isFunction(kind) { switch (kind) { - case 177: case 178: - case 217: + case 179: + case 219: + case 146: case 145: - case 144: - case 147: case 148: case 149: case 150: case 151: + case 152: return true; } return false; @@ -41667,54 +43485,54 @@ var ts; var containingNodeKind = contextToken.parent.kind; switch (contextToken.kind) { case 24: - return containingNodeKind === 215 || - containingNodeKind === 216 || - containingNodeKind === 197 || - containingNodeKind === 221 || - isFunction(containingNodeKind) || + return containingNodeKind === 217 || containingNodeKind === 218 || - containingNodeKind === 190 || - containingNodeKind === 219 || - containingNodeKind === 166 || - containingNodeKind === 220; + containingNodeKind === 199 || + containingNodeKind === 223 || + isFunction(containingNodeKind) || + containingNodeKind === 220 || + containingNodeKind === 191 || + containingNodeKind === 221 || + containingNodeKind === 167 || + containingNodeKind === 222; case 21: - return containingNodeKind === 166; - case 54: return containingNodeKind === 167; + case 54: + return containingNodeKind === 168; case 19: - return containingNodeKind === 166; + return containingNodeKind === 167; case 17: - return containingNodeKind === 248 || + return containingNodeKind === 251 || isFunction(containingNodeKind); case 15: - return containingNodeKind === 221 || - containingNodeKind === 219 || - containingNodeKind === 157; + return containingNodeKind === 223 || + containingNodeKind === 221 || + containingNodeKind === 158; case 23: - return containingNodeKind === 142 && + return containingNodeKind === 143 && contextToken.parent && contextToken.parent.parent && - (contextToken.parent.parent.kind === 219 || - contextToken.parent.parent.kind === 157); + (contextToken.parent.parent.kind === 221 || + contextToken.parent.parent.kind === 158); case 25: - return containingNodeKind === 218 || - containingNodeKind === 190 || - containingNodeKind === 219 || - containingNodeKind === 220 || + return containingNodeKind === 220 || + containingNodeKind === 191 || + containingNodeKind === 221 || + containingNodeKind === 222 || isFunction(containingNodeKind); case 113: - return containingNodeKind === 143; + return containingNodeKind === 144; case 22: - return containingNodeKind === 140 || + return containingNodeKind === 141 || (contextToken.parent && contextToken.parent.parent && - contextToken.parent.parent.kind === 166); + contextToken.parent.parent.kind === 167); case 112: case 110: case 111: - return containingNodeKind === 140; + return containingNodeKind === 141; case 116: - return containingNodeKind === 230 || - containingNodeKind === 234 || - containingNodeKind === 228; + return containingNodeKind === 233 || + containingNodeKind === 237 || + containingNodeKind === 231; case 73: case 81: case 107: @@ -41763,8 +43581,8 @@ var ts; if (element.getStart() <= position && position <= element.getEnd()) { continue; } - var name_34 = element.propertyName || element.name; - existingImportsOrExports[name_34.text] = true; + var name_39 = element.propertyName || element.name; + existingImportsOrExports[name_39.text] = true; } if (ts.isEmpty(existingImportsOrExports)) { return exportsOfModule; @@ -41778,17 +43596,17 @@ var ts; var existingMemberNames = {}; for (var _i = 0, existingMembers_1 = existingMembers; _i < existingMembers_1.length; _i++) { var m = existingMembers_1[_i]; - if (m.kind !== 249 && - m.kind !== 250 && - m.kind !== 167 && - m.kind !== 145) { + if (m.kind !== 252 && + m.kind !== 253 && + m.kind !== 168 && + m.kind !== 146) { continue; } if (m.getStart() <= position && position <= m.getEnd()) { continue; } var existingName = void 0; - if (m.kind === 167 && m.propertyName) { + if (m.kind === 168 && m.propertyName) { if (m.propertyName.kind === 69) { existingName = m.propertyName.text; } @@ -41807,7 +43625,7 @@ var ts; if (attr.getStart() <= position && position <= attr.getEnd()) { continue; } - if (attr.kind === 242) { + if (attr.kind === 245) { seenNames[attr.name.text] = true; } } @@ -41833,7 +43651,7 @@ var ts; else { if (!symbols || symbols.length === 0) { if (sourceFile.languageVariant === 1 && - location.parent && location.parent.kind === 241) { + location.parent && location.parent.kind === 244) { var tagName = location.parent.parent.openingElement.tagName; entries.push({ name: tagName.text, @@ -41856,13 +43674,13 @@ var ts; var entries = []; var target = program.getCompilerOptions().target; var nameTable = getNameTable(sourceFile); - for (var name_35 in nameTable) { - if (nameTable[name_35] === position) { + for (var name_40 in nameTable) { + if (nameTable[name_40] === position) { continue; } - if (!uniqueNames[name_35]) { - uniqueNames[name_35] = name_35; - var displayName = getCompletionEntryDisplayName(name_35, target, true); + if (!uniqueNames[name_40]) { + uniqueNames[name_40] = name_40; + var displayName = getCompletionEntryDisplayName(name_40, target, true); if (displayName) { var entry = { name: displayName, @@ -41951,7 +43769,7 @@ var ts; function getSymbolKind(symbol, location) { var flags = symbol.getFlags(); if (flags & 32) - return ts.getDeclarationOfKind(symbol, 190) ? + return ts.getDeclarationOfKind(symbol, 191) ? ScriptElementKind.localClassElement : ScriptElementKind.classElement; if (flags & 384) return ScriptElementKind.enumElement; @@ -41982,6 +43800,9 @@ var ts; if (typeChecker.isArgumentsSymbol(symbol)) { return ScriptElementKind.localVariableElement; } + if (location.kind === 97 && ts.isExpression(location)) { + return ScriptElementKind.parameterElement; + } if (flags & 3) { if (ts.isFirstDeclarationOfSymbolParameter(symbol)) { return ScriptElementKind.parameterElement; @@ -42039,22 +43860,23 @@ var ts; var symbolFlags = symbol.flags; var symbolKind = getSymbolKindOfConstructorPropertyMethodAccessorFunctionOrVar(symbol, symbolFlags, location); var hasAddedSymbolInfo; + var isThisExpression = location.kind === 97 && ts.isExpression(location); var type; if (symbolKind !== ScriptElementKind.unknown || symbolFlags & 32 || symbolFlags & 8388608) { if (symbolKind === ScriptElementKind.memberGetAccessorElement || symbolKind === ScriptElementKind.memberSetAccessorElement) { symbolKind = ScriptElementKind.memberVariableElement; } var signature = void 0; - type = typeChecker.getTypeOfSymbolAtLocation(symbol, location); + type = isThisExpression ? typeChecker.getTypeAtLocation(location) : typeChecker.getTypeOfSymbolAtLocation(symbol, location); if (type) { - if (location.parent && location.parent.kind === 170) { + if (location.parent && location.parent.kind === 171) { var right = location.parent.name; if (right === location || (right && right.getFullWidth() === 0)) { location = location.parent; } } var callExpression = void 0; - if (location.kind === 172 || location.kind === 173) { + if (location.kind === 173 || location.kind === 174) { callExpression = location; } else if (isCallExpressionTarget(location) || isNewExpressionTarget(location)) { @@ -42066,7 +43888,7 @@ var ts; if (!signature && candidateSignatures.length) { signature = candidateSignatures[0]; } - var useConstructSignatures = callExpression.kind === 173 || callExpression.expression.kind === 95; + var useConstructSignatures = callExpression.kind === 174 || callExpression.expression.kind === 95; var allSignatures = useConstructSignatures ? type.getConstructSignatures() : type.getCallSignatures(); if (!ts.contains(allSignatures, signature.target) && !ts.contains(allSignatures, signature)) { signature = allSignatures.length ? allSignatures[0] : undefined; @@ -42114,21 +43936,21 @@ var ts; } } else if ((isNameOfFunctionDeclaration(location) && !(symbol.flags & 98304)) || - (location.kind === 121 && location.parent.kind === 146)) { + (location.kind === 121 && location.parent.kind === 147)) { var functionDeclaration = location.parent; - var allSignatures = functionDeclaration.kind === 146 ? type.getConstructSignatures() : type.getCallSignatures(); + var allSignatures = functionDeclaration.kind === 147 ? type.getConstructSignatures() : type.getCallSignatures(); if (!typeChecker.isImplementationOfOverload(functionDeclaration)) { signature = typeChecker.getSignatureFromDeclaration(functionDeclaration); } else { signature = allSignatures[0]; } - if (functionDeclaration.kind === 146) { + if (functionDeclaration.kind === 147) { symbolKind = ScriptElementKind.constructorImplementationElement; addPrefixForAnyFunctionOrVar(type.symbol, symbolKind); } else { - addPrefixForAnyFunctionOrVar(functionDeclaration.kind === 149 && + addPrefixForAnyFunctionOrVar(functionDeclaration.kind === 150 && !(type.symbol.flags & 2048 || type.symbol.flags & 4096) ? type.symbol : symbol, symbolKind); } addSignatureDisplayParts(signature, allSignatures); @@ -42136,8 +43958,8 @@ var ts; } } } - if (symbolFlags & 32 && !hasAddedSymbolInfo) { - if (ts.getDeclarationOfKind(symbol, 190)) { + if (symbolFlags & 32 && !hasAddedSymbolInfo && !isThisExpression) { + if (ts.getDeclarationOfKind(symbol, 191)) { pushTypePart(ScriptElementKind.localClassElement); } else { @@ -42177,7 +43999,7 @@ var ts; } if (symbolFlags & 1536) { addNewLineIfDisplayPartsExist(); - var declaration = ts.getDeclarationOfKind(symbol, 222); + var declaration = ts.getDeclarationOfKind(symbol, 224); var isNamespace = declaration && declaration.name && declaration.name.kind === 69; displayParts.push(ts.keywordPart(isNamespace ? 126 : 125)); displayParts.push(ts.spacePart()); @@ -42198,17 +44020,17 @@ var ts; writeTypeParametersOfSymbol(symbol.parent, enclosingDeclaration); } else { - var declaration = ts.getDeclarationOfKind(symbol, 139); + var declaration = ts.getDeclarationOfKind(symbol, 140); ts.Debug.assert(declaration !== undefined); declaration = declaration.parent; if (declaration) { if (ts.isFunctionLikeKind(declaration.kind)) { var signature = typeChecker.getSignatureFromDeclaration(declaration); - if (declaration.kind === 150) { + if (declaration.kind === 151) { displayParts.push(ts.keywordPart(92)); displayParts.push(ts.spacePart()); } - else if (declaration.kind !== 149 && declaration.name) { + else if (declaration.kind !== 150 && declaration.name) { addFullSymbolName(declaration.symbol); } ts.addRange(displayParts, ts.signatureToDisplayParts(typeChecker, signature, sourceFile, 32)); @@ -42225,7 +44047,7 @@ var ts; if (symbolFlags & 8) { addPrefixForAnyFunctionOrVar(symbol, "enum member"); var declaration = symbol.declarations[0]; - if (declaration.kind === 251) { + if (declaration.kind === 254) { var constantValue = typeChecker.getConstantValue(declaration); if (constantValue !== undefined) { displayParts.push(ts.spacePart()); @@ -42241,7 +44063,7 @@ var ts; displayParts.push(ts.spacePart()); addFullSymbolName(symbol); ts.forEach(symbol.declarations, function (declaration) { - if (declaration.kind === 225) { + if (declaration.kind === 228) { var importEqualsDeclaration = declaration; if (ts.isExternalModuleImportEqualsDeclaration(importEqualsDeclaration)) { displayParts.push(ts.spacePart()); @@ -42268,10 +44090,17 @@ var ts; if (!hasAddedSymbolInfo) { if (symbolKind !== ScriptElementKind.unknown) { if (type) { - addPrefixForAnyFunctionOrVar(symbol, symbolKind); + if (isThisExpression) { + addNewLineIfDisplayPartsExist(); + displayParts.push(ts.keywordPart(97)); + } + else { + addPrefixForAnyFunctionOrVar(symbol, symbolKind); + } if (symbolKind === ScriptElementKind.memberVariableElement || symbolFlags & 3 || - symbolKind === ScriptElementKind.localVariableElement) { + symbolKind === ScriptElementKind.localVariableElement || + isThisExpression) { displayParts.push(ts.punctuationPart(54)); displayParts.push(ts.spacePart()); if (type.symbol && type.symbol.flags & 262144) { @@ -42371,10 +44200,10 @@ var ts; if (!symbol || typeChecker.isUnknownSymbol(symbol)) { switch (node.kind) { case 69: - case 170: - case 137: + case 171: + case 138: case 97: - case 163: + case 164: case 95: var type = typeChecker.getTypeAtLocation(node); if (type) { @@ -42447,8 +44276,8 @@ var ts; var declarations = []; var definition; ts.forEach(signatureDeclarations, function (d) { - if ((selectConstructors && d.kind === 146) || - (!selectConstructors && (d.kind === 217 || d.kind === 145 || d.kind === 144))) { + if ((selectConstructors && d.kind === 147) || + (!selectConstructors && (d.kind === 219 || d.kind === 146 || d.kind === 145))) { declarations.push(d); if (d.body) definition = d; @@ -42465,6 +44294,25 @@ var ts; return false; } } + function findReferenceInPosition(refs, pos) { + for (var _i = 0, refs_1 = refs; _i < refs_1.length; _i++) { + var ref = refs_1[_i]; + if (ref.pos <= pos && pos < ref.end) { + return ref; + } + } + return undefined; + } + function getDefinitionInfoForFileReference(name, targetFileName) { + return { + fileName: targetFileName, + textSpan: ts.createTextSpanFromBounds(0, 0), + kind: ScriptElementKind.scriptElement, + name: name, + containerName: undefined, + containerKind: undefined + }; + } function getDefinitionAtPosition(fileName, position) { synchronizeHostData(); var sourceFile = getValidSourceFile(fileName); @@ -42477,18 +44325,19 @@ var ts; var label = getTargetLabel(node.parent, node.text); return label ? [createDefinitionInfo(label, ScriptElementKind.label, labelName, undefined)] : undefined; } - var comment = ts.forEach(sourceFile.referencedFiles, function (r) { return (r.pos <= position && position < r.end) ? r : undefined; }); + var comment = findReferenceInPosition(sourceFile.referencedFiles, position); if (comment) { var referenceFile = ts.tryResolveScriptReference(program, sourceFile, comment); if (referenceFile) { - return [{ - fileName: referenceFile.fileName, - textSpan: ts.createTextSpanFromBounds(0, 0), - kind: ScriptElementKind.scriptElement, - name: comment.fileName, - containerName: undefined, - containerKind: undefined - }]; + return [getDefinitionInfoForFileReference(comment.fileName, referenceFile.fileName)]; + } + return undefined; + } + var typeReferenceDirective = findReferenceInPosition(sourceFile.typeReferenceDirectives, position); + if (typeReferenceDirective) { + var referenceFile = ts.lookUp(program.resolvedTypeReferenceDirectives, typeReferenceDirective.fileName); + if (referenceFile && referenceFile.resolvedFileName) { + return [getDefinitionInfoForFileReference(typeReferenceDirective.fileName, referenceFile.resolvedFileName)]; } return undefined; } @@ -42501,11 +44350,11 @@ var ts; var declaration = symbol.declarations[0]; if (node.kind === 69 && (node.parent === declaration || - (declaration.kind === 230 && declaration.parent && declaration.parent.kind === 229))) { + (declaration.kind === 233 && declaration.parent && declaration.parent.kind === 232))) { symbol = typeChecker.getAliasedSymbol(symbol); } } - if (node.parent.kind === 250) { + if (node.parent.kind === 253) { var shorthandSymbol = typeChecker.getShorthandAssignmentValueSymbol(symbol.valueDeclaration); if (!shorthandSymbol) { return []; @@ -42578,7 +44427,7 @@ var ts; function getSemanticDocumentHighlights(node) { if (node.kind === 69 || node.kind === 97 || - node.kind === 163 || + node.kind === 164 || node.kind === 95 || isLiteralNameOfPropertyDeclarationOrIndexAccess(node) || isNameOfExternalModuleImportOrDeclaration(node)) { @@ -42630,75 +44479,75 @@ var ts; switch (node.kind) { case 88: case 80: - if (hasKind(node.parent, 200)) { + if (hasKind(node.parent, 202)) { return getIfElseOccurrences(node.parent); } break; case 94: - if (hasKind(node.parent, 208)) { + if (hasKind(node.parent, 210)) { return getReturnOccurrences(node.parent); } break; case 98: - if (hasKind(node.parent, 212)) { + if (hasKind(node.parent, 214)) { return getThrowOccurrences(node.parent); } break; case 72: - if (hasKind(parent(parent(node)), 213)) { + if (hasKind(parent(parent(node)), 215)) { return getTryCatchFinallyOccurrences(node.parent.parent); } break; case 100: case 85: - if (hasKind(parent(node), 213)) { + if (hasKind(parent(node), 215)) { return getTryCatchFinallyOccurrences(node.parent); } break; case 96: - if (hasKind(node.parent, 210)) { + if (hasKind(node.parent, 212)) { return getSwitchCaseDefaultOccurrences(node.parent); } break; case 71: case 77: - if (hasKind(parent(parent(parent(node))), 210)) { + if (hasKind(parent(parent(parent(node))), 212)) { return getSwitchCaseDefaultOccurrences(node.parent.parent.parent); } break; case 70: case 75: - if (hasKind(node.parent, 207) || hasKind(node.parent, 206)) { + if (hasKind(node.parent, 209) || hasKind(node.parent, 208)) { return getBreakOrContinueStatementOccurrences(node.parent); } break; case 86: - if (hasKind(node.parent, 203) || - hasKind(node.parent, 204) || - hasKind(node.parent, 205)) { + if (hasKind(node.parent, 205) || + hasKind(node.parent, 206) || + hasKind(node.parent, 207)) { return getLoopBreakContinueOccurrences(node.parent); } break; case 104: case 79: - if (hasKind(node.parent, 202) || hasKind(node.parent, 201)) { + if (hasKind(node.parent, 204) || hasKind(node.parent, 203)) { return getLoopBreakContinueOccurrences(node.parent); } break; case 121: - if (hasKind(node.parent, 146)) { + if (hasKind(node.parent, 147)) { return getConstructorOccurrences(node.parent); } break; case 123: case 130: - if (hasKind(node.parent, 147) || hasKind(node.parent, 148)) { + if (hasKind(node.parent, 148) || hasKind(node.parent, 149)) { return getGetAndSetOccurrences(node.parent); } break; default: if (ts.isModifierKind(node.kind) && node.parent && - (ts.isDeclaration(node.parent) || node.parent.kind === 197)) { + (ts.isDeclaration(node.parent) || node.parent.kind === 199)) { return getModifierOccurrences(node.kind, node.parent); } } @@ -42710,10 +44559,10 @@ var ts; aggregate(node); return statementAccumulator; function aggregate(node) { - if (node.kind === 212) { + if (node.kind === 214) { statementAccumulator.push(node); } - else if (node.kind === 213) { + else if (node.kind === 215) { var tryStatement = node; if (tryStatement.catchClause) { aggregate(tryStatement.catchClause); @@ -42733,17 +44582,17 @@ var ts; function getThrowStatementOwner(throwStatement) { var child = throwStatement; while (child.parent) { - var parent_14 = child.parent; - if (ts.isFunctionBlock(parent_14) || parent_14.kind === 252) { - return parent_14; + var parent_16 = child.parent; + if (ts.isFunctionBlock(parent_16) || parent_16.kind === 255) { + return parent_16; } - if (parent_14.kind === 213) { - var tryStatement = parent_14; + if (parent_16.kind === 215) { + var tryStatement = parent_16; if (tryStatement.tryBlock === child && tryStatement.catchClause) { return child; } } - child = parent_14; + child = parent_16; } return undefined; } @@ -42752,7 +44601,7 @@ var ts; aggregate(node); return statementAccumulator; function aggregate(node) { - if (node.kind === 207 || node.kind === 206) { + if (node.kind === 209 || node.kind === 208) { statementAccumulator.push(node); } else if (!ts.isFunctionLike(node)) { @@ -42767,15 +44616,15 @@ var ts; function getBreakOrContinueOwner(statement) { for (var node_2 = statement.parent; node_2; node_2 = node_2.parent) { switch (node_2.kind) { - case 210: - if (statement.kind === 206) { + case 212: + if (statement.kind === 208) { continue; } - case 203: - case 204: case 205: - case 202: - case 201: + case 206: + case 207: + case 204: + case 203: if (!statement.label || isLabeledBy(node_2, statement.label.text)) { return node_2; } @@ -42792,24 +44641,24 @@ var ts; function getModifierOccurrences(modifier, declaration) { var container = declaration.parent; if (ts.isAccessibilityModifier(modifier)) { - if (!(container.kind === 218 || - container.kind === 190 || - (declaration.kind === 140 && hasKind(container, 146)))) { + if (!(container.kind === 220 || + container.kind === 191 || + (declaration.kind === 141 && hasKind(container, 147)))) { return undefined; } } else if (modifier === 113) { - if (!(container.kind === 218 || container.kind === 190)) { + if (!(container.kind === 220 || container.kind === 191)) { return undefined; } } else if (modifier === 82 || modifier === 122) { - if (!(container.kind === 223 || container.kind === 252)) { + if (!(container.kind === 225 || container.kind === 255)) { return undefined; } } else if (modifier === 115) { - if (!(container.kind === 218 || declaration.kind === 218)) { + if (!(container.kind === 220 || declaration.kind === 220)) { return undefined; } } @@ -42820,8 +44669,8 @@ var ts; var modifierFlag = getFlagFromModifier(modifier); var nodes; switch (container.kind) { - case 223: - case 252: + case 225: + case 255: if (modifierFlag & 128) { nodes = declaration.members.concat(declaration); } @@ -42829,15 +44678,15 @@ var ts; nodes = container.statements; } break; - case 146: + case 147: nodes = container.parameters.concat(container.parent.members); break; - case 218: - case 190: + case 220: + case 191: nodes = container.members; if (modifierFlag & 28) { var constructor = ts.forEach(container.members, function (member) { - return member.kind === 146 && member; + return member.kind === 147 && member; }); if (constructor) { nodes = nodes.concat(constructor.parameters); @@ -42890,8 +44739,8 @@ var ts; } function getGetAndSetOccurrences(accessorDeclaration) { var keywords = []; - tryPushAccessorKeyword(accessorDeclaration.symbol, 147); tryPushAccessorKeyword(accessorDeclaration.symbol, 148); + tryPushAccessorKeyword(accessorDeclaration.symbol, 149); return ts.map(keywords, getHighlightSpanForNode); function tryPushAccessorKeyword(accessorSymbol, accessorKind) { var accessor = ts.getDeclarationOfKind(accessorSymbol, accessorKind); @@ -42913,7 +44762,7 @@ var ts; function getLoopBreakContinueOccurrences(loopNode) { var keywords = []; if (pushKeywordIf(keywords, loopNode.getFirstToken(), 86, 104, 79)) { - if (loopNode.kind === 201) { + if (loopNode.kind === 203) { var loopTokens = loopNode.getChildren(); for (var i = loopTokens.length - 1; i >= 0; i--) { if (pushKeywordIf(keywords, loopTokens[i], 104)) { @@ -42934,13 +44783,13 @@ var ts; var owner = getBreakOrContinueOwner(breakOrContinueStatement); if (owner) { switch (owner.kind) { + case 205: + case 206: + case 207: case 203: case 204: - case 205: - case 201: - case 202: return getLoopBreakContinueOccurrences(owner); - case 210: + case 212: return getSwitchCaseDefaultOccurrences(owner); } } @@ -42990,7 +44839,7 @@ var ts; } function getReturnOccurrences(returnStatement) { var func = ts.getContainingFunction(returnStatement); - if (!(func && hasKind(func.body, 196))) { + if (!(func && hasKind(func.body, 198))) { return undefined; } var keywords = []; @@ -43004,7 +44853,7 @@ var ts; } function getIfElseOccurrences(ifStatement) { var keywords = []; - while (hasKind(ifStatement.parent, 200) && ifStatement.parent.elseStatement === ifStatement) { + while (hasKind(ifStatement.parent, 202) && ifStatement.parent.elseStatement === ifStatement) { ifStatement = ifStatement.parent; } while (ifStatement) { @@ -43015,7 +44864,7 @@ var ts; break; } } - if (!hasKind(ifStatement.elseStatement, 200)) { + if (!hasKind(ifStatement.elseStatement, 202)) { break; } ifStatement = ifStatement.elseStatement; @@ -43119,7 +44968,7 @@ var ts; return getLabelReferencesInNode(node.parent, node); } } - if (node.kind === 97 || node.kind === 163) { + if (node.kind === 97 || node.kind === 164) { return getReferencesForThisKeyword(node, sourceFiles); } if (node.kind === 95) { @@ -43144,8 +44993,8 @@ var ts; } else { var internedName = getInternedName(symbol, node, declarations); - for (var _i = 0, sourceFiles_3 = sourceFiles; _i < sourceFiles_3.length; _i++) { - var sourceFile = sourceFiles_3[_i]; + for (var _i = 0, sourceFiles_4 = sourceFiles; _i < sourceFiles_4.length; _i++) { + var sourceFile = sourceFiles_4[_i]; cancellationToken.throwIfCancellationRequested(); var nameTable = getNameTable(sourceFile); if (ts.lookUp(nameTable, internedName) !== undefined) { @@ -43172,7 +45021,7 @@ var ts; }; } function isImportSpecifierSymbol(symbol) { - return (symbol.flags & 8388608) && !!ts.getDeclarationOfKind(symbol, 230); + return (symbol.flags & 8388608) && !!ts.getDeclarationOfKind(symbol, 233); } function getInternedName(symbol, location, declarations) { if (ts.isImportOrExportSpecifierName(location)) { @@ -43184,13 +45033,13 @@ var ts; } function getSymbolScope(symbol) { var valueDeclaration = symbol.valueDeclaration; - if (valueDeclaration && (valueDeclaration.kind === 177 || valueDeclaration.kind === 190)) { + if (valueDeclaration && (valueDeclaration.kind === 178 || valueDeclaration.kind === 191)) { return valueDeclaration; } if (symbol.flags & (4 | 8192)) { var privateDeclaration = ts.forEach(symbol.getDeclarations(), function (d) { return (d.flags & 8) ? d : undefined; }); if (privateDeclaration) { - return ts.getAncestor(privateDeclaration, 218); + return ts.getAncestor(privateDeclaration, 220); } } if (symbol.flags & 8388608) { @@ -43211,7 +45060,7 @@ var ts; if (scope && scope !== container) { return undefined; } - if (container.kind === 252 && !ts.isExternalModule(container)) { + if (container.kind === 255 && !ts.isExternalModule(container)) { return undefined; } scope = container; @@ -43358,13 +45207,13 @@ var ts; } var staticFlag = 32; switch (searchSpaceNode.kind) { - case 143: - case 142: - case 145: case 144: + case 143: case 146: + case 145: case 147: case 148: + case 149: staticFlag &= searchSpaceNode.flags; searchSpaceNode = searchSpaceNode.parent; break; @@ -43392,32 +45241,32 @@ var ts; var searchSpaceNode = ts.getThisContainer(thisOrSuperKeyword, false); var staticFlag = 32; switch (searchSpaceNode.kind) { + case 146: case 145: - case 144: if (ts.isObjectLiteralMethod(searchSpaceNode)) { break; } + case 144: case 143: - case 142: - case 146: case 147: case 148: + case 149: staticFlag &= searchSpaceNode.flags; searchSpaceNode = searchSpaceNode.parent; break; - case 252: + case 255: if (ts.isExternalModule(searchSpaceNode)) { return undefined; } - case 217: - case 177: + case 219: + case 178: break; default: return undefined; } var references = []; var possiblePositions; - if (searchSpaceNode.kind === 252) { + if (searchSpaceNode.kind === 255) { ts.forEach(sourceFiles, function (sourceFile) { possiblePositions = getPossibleSymbolReferencePositions(sourceFile, "this", sourceFile.getStart(), sourceFile.getEnd()); getThisReferencesInFile(sourceFile, sourceFile, possiblePositions, references); @@ -43443,31 +45292,31 @@ var ts; ts.forEach(possiblePositions, function (position) { cancellationToken.throwIfCancellationRequested(); var node = ts.getTouchingWord(sourceFile, position); - if (!node || (node.kind !== 97 && node.kind !== 163)) { + if (!node || (node.kind !== 97 && node.kind !== 164)) { return; } var container = ts.getThisContainer(node, false); switch (searchSpaceNode.kind) { - case 177: - case 217: + case 178: + case 219: if (searchSpaceNode.symbol === container.symbol) { result.push(getReferenceEntryFromNode(node)); } break; + case 146: case 145: - case 144: if (ts.isObjectLiteralMethod(searchSpaceNode) && searchSpaceNode.symbol === container.symbol) { result.push(getReferenceEntryFromNode(node)); } break; - case 190: - case 218: + case 191: + case 220: if (container.parent && searchSpaceNode.symbol === container.parent.symbol && (container.flags & 32) === staticFlag) { result.push(getReferenceEntryFromNode(node)); } break; - case 252: - if (container.kind === 252 && !ts.isExternalModule(container)) { + case 255: + if (container.kind === 255 && !ts.isExternalModule(container)) { result.push(getReferenceEntryFromNode(node)); } break; @@ -43480,7 +45329,7 @@ var ts; if (isImportSpecifierSymbol(symbol)) { result.push(typeChecker.getAliasedSymbol(symbol)); } - if (location.parent.kind === 234) { + if (location.parent.kind === 237) { result.push(typeChecker.getExportSpecifierLocalTargetSymbol(location.parent)); } if (isNameOfPropertyAssignment(location)) { @@ -43492,7 +45341,7 @@ var ts; result.push(shorthandValueSymbol); } } - if (symbol.valueDeclaration && symbol.valueDeclaration.kind === 140 && + if (symbol.valueDeclaration && symbol.valueDeclaration.kind === 141 && ts.isParameterPropertyDeclaration(symbol.valueDeclaration)) { result = result.concat(typeChecker.getSymbolsOfParameterPropertyDeclaration(symbol.valueDeclaration, symbol.name)); } @@ -43515,11 +45364,11 @@ var ts; } if (symbol.flags & (32 | 64)) { ts.forEach(symbol.getDeclarations(), function (declaration) { - if (declaration.kind === 218) { + if (declaration.kind === 220) { getPropertySymbolFromTypeReference(ts.getClassExtendsHeritageClauseElement(declaration)); ts.forEach(ts.getClassImplementsHeritageClauseElements(declaration), getPropertySymbolFromTypeReference); } - else if (declaration.kind === 219) { + else if (declaration.kind === 221) { ts.forEach(ts.getInterfaceBaseTypeNodes(declaration), getPropertySymbolFromTypeReference); } }); @@ -43549,7 +45398,7 @@ var ts; return aliasedSymbol; } } - if (referenceLocation.parent.kind === 234) { + if (referenceLocation.parent.kind === 237) { var aliasedSymbol = typeChecker.getExportSpecifierLocalTargetSymbol(referenceLocation.parent); if (searchSymbols.indexOf(aliasedSymbol) >= 0) { return aliasedSymbol; @@ -43576,17 +45425,17 @@ var ts; if (isNameOfPropertyAssignment(node)) { var objectLiteral = node.parent.parent; var contextualType = typeChecker.getContextualType(objectLiteral); - var name_36 = node.text; + var name_41 = node.text; if (contextualType) { if (contextualType.flags & 16384) { - var unionProperty = contextualType.getProperty(name_36); + var unionProperty = contextualType.getProperty(name_41); if (unionProperty) { return [unionProperty]; } else { var result_5 = []; ts.forEach(contextualType.types, function (t) { - var symbol = t.getProperty(name_36); + var symbol = t.getProperty(name_41); if (symbol) { result_5.push(symbol); } @@ -43595,7 +45444,7 @@ var ts; } } else { - var symbol_1 = contextualType.getProperty(name_36); + var symbol_1 = contextualType.getProperty(name_41); if (symbol_1) { return [symbol_1]; } @@ -43640,10 +45489,10 @@ var ts; } var parent = node.parent; if (parent) { - if (parent.kind === 184 || parent.kind === 183) { + if (parent.kind === 185 || parent.kind === 184) { return true; } - else if (parent.kind === 185 && parent.left === node) { + else if (parent.kind === 186 && parent.left === node) { var operator = parent.operatorToken.kind; return 56 <= operator && operator <= 68; } @@ -43673,33 +45522,33 @@ var ts; } function getMeaningFromDeclaration(node) { switch (node.kind) { - case 140: - case 215: - case 167: - case 143: - case 142: - case 249: - case 250: - case 251: - case 145: + case 141: + case 217: + case 168: case 144: + case 143: + case 252: + case 253: + case 254: case 146: + case 145: case 147: case 148: - case 217: - case 177: - case 178: - case 248: - return 1; - case 139: + case 149: case 219: - case 220: - case 157: - return 2; - case 218: + case 178: + case 179: + case 251: + return 1; + case 140: case 221: - return 1 | 2; case 222: + case 158: + return 2; + case 220: + case 223: + return 1 | 2; + case 224: if (ts.isAmbientModule(node)) { return 4 | 1; } @@ -43709,14 +45558,14 @@ var ts; else { return 4; } - case 229: - case 230: - case 225: - case 226: - case 231: case 232: + case 233: + case 228: + case 229: + case 234: + case 235: return 1 | 2 | 4; - case 252: + case 255: return 4 | 1; } return 1 | 2 | 4; @@ -43725,10 +45574,10 @@ var ts; if (ts.isRightSideOfQualifiedNameOrPropertyAccess(node)) { node = node.parent; } - return node.parent.kind === 153 || - (node.parent.kind === 192 && !ts.isExpressionWithTypeArgumentsInClassExtendsClause(node.parent)) || + return node.parent.kind === 154 || + (node.parent.kind === 193 && !ts.isExpressionWithTypeArgumentsInClassExtendsClause(node.parent)) || (node.kind === 97 && !ts.isExpression(node)) || - node.kind === 163; + node.kind === 164; } function isNamespaceReference(node) { return isQualifiedNameNamespaceReference(node) || isPropertyAccessNamespaceReference(node); @@ -43736,47 +45585,47 @@ var ts; function isPropertyAccessNamespaceReference(node) { var root = node; var isLastClause = true; - if (root.parent.kind === 170) { - while (root.parent && root.parent.kind === 170) { + if (root.parent.kind === 171) { + while (root.parent && root.parent.kind === 171) { root = root.parent; } isLastClause = root.name === node; } - if (!isLastClause && root.parent.kind === 192 && root.parent.parent.kind === 247) { + if (!isLastClause && root.parent.kind === 193 && root.parent.parent.kind === 250) { var decl = root.parent.parent.parent; - return (decl.kind === 218 && root.parent.parent.token === 106) || - (decl.kind === 219 && root.parent.parent.token === 83); + return (decl.kind === 220 && root.parent.parent.token === 106) || + (decl.kind === 221 && root.parent.parent.token === 83); } return false; } function isQualifiedNameNamespaceReference(node) { var root = node; var isLastClause = true; - if (root.parent.kind === 137) { - while (root.parent && root.parent.kind === 137) { + if (root.parent.kind === 138) { + while (root.parent && root.parent.kind === 138) { root = root.parent; } isLastClause = root.right === node; } - return root.parent.kind === 153 && !isLastClause; + return root.parent.kind === 154 && !isLastClause; } function isInRightSideOfImport(node) { - while (node.parent.kind === 137) { + while (node.parent.kind === 138) { node = node.parent; } return ts.isInternalModuleImportEqualsDeclaration(node.parent) && node.parent.moduleReference === node; } function getMeaningFromRightHandSideOfImportEquals(node) { ts.Debug.assert(node.kind === 69); - if (node.parent.kind === 137 && + if (node.parent.kind === 138 && node.parent.right === node && - node.parent.parent.kind === 225) { + node.parent.parent.kind === 228) { return 1 | 2 | 4; } return 4; } function getMeaningFromLocation(node) { - if (node.parent.kind === 231) { + if (node.parent.kind === 234) { return 1 | 2 | 4; } else if (isInRightSideOfImport(node)) { @@ -43800,7 +45649,7 @@ var ts; var sourceFile = getValidSourceFile(fileName); return ts.SignatureHelp.getSignatureHelpItems(program, sourceFile, position, cancellationToken); } - function getSourceFile(fileName) { + function getNonBoundSourceFile(fileName) { return syntaxTreeCache.getCurrentSourceFile(fileName); } function getNameOrDottedNameSpan(fileName, startPos, endPos) { @@ -43810,16 +45659,16 @@ var ts; return; } switch (node.kind) { - case 170: - case 137: + case 171: + case 138: case 9: - case 164: + case 165: case 84: case 99: case 93: case 95: case 97: - case 163: + case 164: case 69: break; default: @@ -43831,7 +45680,7 @@ var ts; nodeForStartPos = nodeForStartPos.parent; } else if (isNameOfModuleDeclaration(nodeForStartPos)) { - if (nodeForStartPos.parent.parent.kind === 222 && + if (nodeForStartPos.parent.parent.kind === 224 && nodeForStartPos.parent.parent.body === nodeForStartPos.parent) { nodeForStartPos = nodeForStartPos.parent.parent.name; } @@ -43858,10 +45707,10 @@ var ts; } function checkForClassificationCancellation(kind) { switch (kind) { - case 222: - case 218: + case 224: + case 220: + case 221: case 219: - case 217: cancellationToken.throwIfCancellationRequested(); } } @@ -43909,7 +45758,7 @@ var ts; return undefined; function hasValueSideModule(symbol) { return ts.forEach(symbol.declarations, function (declaration) { - return declaration.kind === 222 && + return declaration.kind === 224 && ts.getModuleInstanceState(declaration) === 1; }); } @@ -44048,16 +45897,16 @@ var ts; pushClassification(tag.tagName.pos, tag.tagName.end - tag.tagName.pos, 18); pos = tag.tagName.end; switch (tag.kind) { - case 271: + case 274: processJSDocParameterTag(tag); break; - case 274: + case 277: processJSDocTemplateTag(tag); break; - case 273: + case 276: processElement(tag.typeExpression); break; - case 272: + case 275: processElement(tag.typeExpression); break; } @@ -44118,10 +45967,10 @@ var ts; return true; } var classifiedElementName = tryClassifyJsxElementName(node); - if (!ts.isToken(node) && node.kind !== 240 && classifiedElementName === undefined) { + if (!ts.isToken(node) && node.kind !== 243 && classifiedElementName === undefined) { return false; } - var tokenStart = node.kind === 240 ? node.pos : classifyLeadingTriviaAndGetTokenStart(node); + var tokenStart = node.kind === 243 ? node.pos : classifyLeadingTriviaAndGetTokenStart(node); var tokenWidth = node.end - tokenStart; ts.Debug.assert(tokenWidth >= 0); if (tokenWidth > 0) { @@ -44134,22 +45983,22 @@ var ts; } function tryClassifyJsxElementName(token) { switch (token.parent && token.parent.kind) { - case 239: + case 242: if (token.parent.tagName === token) { return 19; } break; - case 241: + case 244: if (token.parent.tagName === token) { return 20; } break; - case 238: + case 241: if (token.parent.tagName === token) { return 21; } break; - case 242: + case 245: if (token.parent.name === token) { return 22; } @@ -44169,17 +46018,17 @@ var ts; if (ts.isPunctuation(tokenKind)) { if (token) { if (tokenKind === 56) { - if (token.parent.kind === 215 || - token.parent.kind === 143 || - token.parent.kind === 140 || - token.parent.kind === 242) { + if (token.parent.kind === 217 || + token.parent.kind === 144 || + token.parent.kind === 141 || + token.parent.kind === 245) { return 5; } } - if (token.parent.kind === 185 || - token.parent.kind === 183 || + if (token.parent.kind === 186 || token.parent.kind === 184 || - token.parent.kind === 186) { + token.parent.kind === 185 || + token.parent.kind === 187) { return 5; } } @@ -44188,8 +46037,8 @@ var ts; else if (tokenKind === 8) { return 4; } - else if (tokenKind === 9 || tokenKind === 164) { - return token.parent.kind === 242 ? 24 : 6; + else if (tokenKind === 9 || tokenKind === 165) { + return token.parent.kind === 245 ? 24 : 6; } else if (tokenKind === 10) { return 6; @@ -44197,38 +46046,38 @@ var ts; else if (ts.isTemplateLiteralKind(tokenKind)) { return 6; } - else if (tokenKind === 240) { + else if (tokenKind === 243) { return 23; } else if (tokenKind === 69) { if (token) { switch (token.parent.kind) { - case 218: + case 220: if (token.parent.name === token) { return 11; } return; - case 139: + case 140: if (token.parent.name === token) { return 15; } return; - case 219: + case 221: if (token.parent.name === token) { return 13; } return; - case 221: + case 223: if (token.parent.name === token) { return 12; } return; - case 222: + case 224: if (token.parent.name === token) { return 14; } return; - case 140: + case 141: if (token.parent.name === token) { return 17; } @@ -44341,16 +46190,16 @@ var ts; var commentOwner; findOwner: for (commentOwner = tokenAtPos; commentOwner; commentOwner = commentOwner.parent) { switch (commentOwner.kind) { - case 217: - case 145: + case 219: case 146: - case 218: - case 197: + case 147: + case 220: + case 199: break findOwner; - case 252: + case 255: return undefined; - case 222: - if (commentOwner.parent.kind === 222) { + case 224: + if (commentOwner.parent.kind === 224) { return undefined; } break findOwner; @@ -44384,7 +46233,7 @@ var ts; if (ts.isFunctionLike(commentOwner)) { return commentOwner.parameters; } - if (commentOwner.kind === 197) { + if (commentOwner.kind === 199) { var varStatement = commentOwner; var varDeclarations = varStatement.declarationList.declarations; if (varDeclarations.length === 1 && varDeclarations[0].initializer) { @@ -44394,17 +46243,17 @@ var ts; return emptyArray; } function getParametersFromRightHandSideOfAssignment(rightHandSide) { - while (rightHandSide.kind === 176) { + while (rightHandSide.kind === 177) { rightHandSide = rightHandSide.expression; } switch (rightHandSide.kind) { - case 177: case 178: + case 179: return rightHandSide.parameters; - case 190: + case 191: for (var _i = 0, _a = rightHandSide.members; _i < _a.length; _i++) { var member = _a[_i]; - if (member.kind === 146) { + if (member.kind === 147) { return member.parameters; } } @@ -44560,7 +46409,7 @@ var ts; getFormattingEditsAfterKeystroke: getFormattingEditsAfterKeystroke, getDocCommentTemplateAtPosition: getDocCommentTemplateAtPosition, getEmitOutput: getEmitOutput, - getSourceFile: getSourceFile, + getNonBoundSourceFile: getNonBoundSourceFile, getProgram: getProgram }; } @@ -44584,7 +46433,7 @@ var ts; case 9: case 8: if (ts.isDeclarationName(node) || - node.parent.kind === 236 || + node.parent.kind === 239 || isArgumentOfElementAccessExpression(node)) { nameTable[node.text] = nameTable[node.text] === undefined ? node.pos : -1; } @@ -44597,7 +46446,7 @@ var ts; function isArgumentOfElementAccessExpression(node) { return node && node.parent && - node.parent.kind === 171 && + node.parent.kind === 172 && node.parent.argumentExpression === node; } function createClassifier() { @@ -44779,7 +46628,7 @@ var ts; var end = scanner.getTextPos(); addResult(start, end, classFromKind(token)); if (end >= text.length) { - if (token === 9 || token === 164) { + if (token === 9 || token === 165) { var tokenText = scanner.getTokenText(); if (scanner.isUnterminated()) { var lastCharIndex = tokenText.length - 1; @@ -44893,7 +46742,7 @@ var ts; } } function isKeyword(token) { - return token >= 70 && token <= 136; + return token >= 70 && token <= 137; } function classFromKind(token) { if (isKeyword(token)) { @@ -44909,7 +46758,7 @@ var ts; case 8: return 4; case 9: - case 164: + case 165: return 6; case 10: return 7; @@ -45997,6 +47846,7 @@ var ts; this.roots = []; this.getCanonicalFileName = ts.createGetCanonicalFileName(host.useCaseSensitiveFileNames); this.resolvedModuleNames = ts.createFileMap(); + this.resolvedTypeReferenceDirectives = ts.createFileMap(); this.filenameToScript = ts.createFileMap(); this.moduleResolutionHost = { fileExists: function (fileName) { return _this.fileExists(fileName); }, @@ -46004,41 +47854,47 @@ var ts; directoryExists: function (directoryName) { return _this.host.directoryExists(directoryName); } }; } - LSHost.prototype.resolveModuleNames = function (moduleNames, containingFile) { + LSHost.prototype.resolveNamesWithLocalCache = function (names, containingFile, cache, loader, getResult) { var path = ts.toPath(containingFile, this.host.getCurrentDirectory(), this.getCanonicalFileName); - var currentResolutionsInFile = this.resolvedModuleNames.get(path); + var currentResolutionsInFile = cache.get(path); var newResolutions = {}; var resolvedModules = []; var compilerOptions = this.getCompilationSettings(); - for (var _i = 0, moduleNames_2 = moduleNames; _i < moduleNames_2.length; _i++) { - var moduleName = moduleNames_2[_i]; - var resolution = ts.lookUp(newResolutions, moduleName); + for (var _i = 0, names_2 = names; _i < names_2.length; _i++) { + var name_42 = names_2[_i]; + var resolution = ts.lookUp(newResolutions, name_42); if (!resolution) { - var existingResolution = currentResolutionsInFile && ts.lookUp(currentResolutionsInFile, moduleName); + var existingResolution = currentResolutionsInFile && ts.lookUp(currentResolutionsInFile, name_42); if (moduleResolutionIsValid(existingResolution)) { resolution = existingResolution; } else { - resolution = ts.resolveModuleName(moduleName, containingFile, compilerOptions, this.moduleResolutionHost); + resolution = loader(name_42, containingFile, compilerOptions, this.moduleResolutionHost); resolution.lastCheckTime = Date.now(); - newResolutions[moduleName] = resolution; + newResolutions[name_42] = resolution; } } ts.Debug.assert(resolution !== undefined); - resolvedModules.push(resolution.resolvedModule); + resolvedModules.push(getResult(resolution)); } - this.resolvedModuleNames.set(path, newResolutions); + cache.set(path, newResolutions); return resolvedModules; function moduleResolutionIsValid(resolution) { if (!resolution) { return false; } - if (resolution.resolvedModule) { + if (getResult(resolution)) { return true; } return resolution.failedLookupLocations.length === 0; } }; + LSHost.prototype.resolveTypeReferenceDirectives = function (typeDirectiveNames, containingFile) { + return this.resolveNamesWithLocalCache(typeDirectiveNames, containingFile, this.resolvedTypeReferenceDirectives, ts.resolveTypeReferenceDirective, function (m) { return m.resolvedTypeReferenceDirective; }); + }; + LSHost.prototype.resolveModuleNames = function (moduleNames, containingFile) { + return this.resolveNamesWithLocalCache(moduleNames, containingFile, this.resolvedModuleNames, ts.resolveModuleName, function (m) { return m.resolvedModule; }); + }; LSHost.prototype.getDefaultLibFileName = function () { var nodeModuleBinDir = ts.getDirectoryPath(ts.normalizePath(this.host.getExecutingFilePath())); return ts.combinePaths(nodeModuleBinDir, ts.getDefaultLibFileName(this.compilationSettings)); @@ -46052,6 +47908,7 @@ var ts; LSHost.prototype.setCompilationSettings = function (opt) { this.compilationSettings = opt; this.resolvedModuleNames.clear(); + this.resolvedTypeReferenceDirectives.clear(); }; LSHost.prototype.lineAffectsRefs = function (filename, line) { var info = this.getScriptInfo(filename); @@ -46083,6 +47940,7 @@ var ts; if (!info.isOpen) { this.filenameToScript.remove(info.path); this.resolvedModuleNames.remove(info.path); + this.resolvedTypeReferenceDirectives.remove(info.path); } }; LSHost.prototype.getScriptInfo = function (filename) { @@ -46107,6 +47965,7 @@ var ts; this.filenameToScript.remove(info.path); this.roots = copyListRemovingItem(info, this.roots); this.resolvedModuleNames.remove(info.path); + this.resolvedTypeReferenceDirectives.remove(info.path); } }; LSHost.prototype.saveTo = function (filename, tmpfilename) { @@ -46475,8 +48334,8 @@ var ts; this.inferredProjects = copyListRemovingItem(project, this.inferredProjects); } var fileNames = project.getFileNames(); - for (var _b = 0, fileNames_1 = fileNames; _b < fileNames_1.length; _b++) { - var fileName = fileNames_1[_b]; + for (var _b = 0, fileNames_2 = fileNames; _b < fileNames_2.length; _b++) { + var fileName = fileNames_2[_b]; var info = this.getScriptInfo(fileName); if (info.defaultProject == project) { info.defaultProject = undefined; @@ -46685,7 +48544,7 @@ var ts; info.setFormatOptions(this.getFormatCodeOptions()); this.filenameToScriptInfo[fileName] = info; if (!info.isOpen) { - info.fileWatcher = this.host.watchFile(ts.toPath(fileName, fileName, ts.createGetCanonicalFileName(ts.sys.useCaseSensitiveFileNames)), function (_) { _this.watchedFileChanged(fileName); }); + info.fileWatcher = this.host.watchFile(fileName, function (_) { _this.watchedFileChanged(fileName); }); } } } @@ -46871,7 +48730,7 @@ var ts; } } project_1.finishGraph(); - project_1.projectFileWatcher = this.host.watchFile(ts.toPath(configFilename, configFilename, ts.createGetCanonicalFileName(ts.sys.useCaseSensitiveFileNames)), function (_) { return _this.watchedProjectConfigFileChanged(project_1); }); + project_1.projectFileWatcher = this.host.watchFile(configFilename, function (_) { return _this.watchedProjectConfigFileChanged(project_1); }); this.log("Add recursive watcher for: " + ts.getDirectoryPath(configFilename)); project_1.directoryWatcher = this.host.watchDirectory(ts.getDirectoryPath(configFilename), function (path) { return _this.directoryWatchedForSourceFilesChanged(project_1, path); }, true); return { success: true, project: project_1 }; @@ -46946,6 +48805,7 @@ var ts; else { var defaultOpts = ts.getDefaultCompilerOptions(); defaultOpts.allowNonTsExtensions = true; + defaultOpts.allowJs = true; this.setCompilerOptions(defaultOpts); } this.languageService = ts.createLanguageService(this.host, this.documentRegistry); @@ -46956,7 +48816,7 @@ var ts; this.host.setCompilationSettings(opt); }; CompilerService.prototype.isExternalModule = function (filename) { - var sourceFile = this.languageService.getSourceFile(filename); + var sourceFile = this.languageService.getNonBoundSourceFile(filename); return ts.isExternalModule(sourceFile); }; CompilerService.defaultFormatCodeOptions = { @@ -48029,6 +49889,12 @@ var ts; if ("directoryExists" in this.shimHost) { this.directoryExists = function (directoryName) { return _this.shimHost.directoryExists(directoryName); }; } + if ("getTypeReferenceDirectiveResolutionsForFile" in this.shimHost) { + this.resolveTypeReferenceDirectives = function (typeDirectiveNames, containingFile) { + var typeDirectivesForFile = JSON.parse(_this.shimHost.getTypeReferenceDirectiveResolutionsForFile(containingFile)); + return ts.map(typeDirectiveNames, function (name) { return ts.lookUp(typeDirectivesForFile, name); }); + }; + } } LanguageServiceShimHostAdapter.prototype.log = function (s) { if (this.loggingEnabled) { @@ -48128,8 +49994,14 @@ var ts; this.directoryExists = function (directoryName) { return _this.shimHost.directoryExists(directoryName); }; } } - CoreServicesShimHostAdapter.prototype.readDirectory = function (rootDir, extension, exclude) { - var encoded = this.shimHost.readDirectory(rootDir, extension, JSON.stringify(exclude)); + CoreServicesShimHostAdapter.prototype.readDirectory = function (rootDir, extension, exclude, depth) { + var encoded; + try { + encoded = this.shimHost.readDirectory(rootDir, extension, JSON.stringify(exclude), depth); + } + catch (e) { + encoded = this.shimHost.readDirectory(rootDir, extension, JSON.stringify(exclude)); + } return JSON.parse(encoded); }; CoreServicesShimHostAdapter.prototype.fileExists = function (fileName) { @@ -48440,32 +50312,46 @@ var ts; }; }); }; + CoreServicesShimObject.prototype.resolveTypeReferenceDirective = function (fileName, typeReferenceDirective, compilerOptionsJson) { + var _this = this; + return this.forwardJSONCall("resolveTypeReferenceDirective(" + fileName + ")", function () { + var compilerOptions = JSON.parse(compilerOptionsJson); + var result = ts.resolveTypeReferenceDirective(typeReferenceDirective, ts.normalizeSlashes(fileName), compilerOptions, _this.host); + return { + resolvedFileName: result.resolvedTypeReferenceDirective ? result.resolvedTypeReferenceDirective.resolvedFileName : undefined, + primary: result.resolvedTypeReferenceDirective ? result.resolvedTypeReferenceDirective.primary : true, + failedLookupLocations: result.failedLookupLocations + }; + }); + }; CoreServicesShimObject.prototype.getPreProcessedFileInfo = function (fileName, sourceTextSnapshot) { + var _this = this; return this.forwardJSONCall("getPreProcessedFileInfo('" + fileName + "')", function () { var result = ts.preProcessFile(sourceTextSnapshot.getText(0, sourceTextSnapshot.getLength()), true, true); - var convertResult = { - referencedFiles: [], - importedFiles: [], + return { + referencedFiles: _this.convertFileReferences(result.referencedFiles), + importedFiles: _this.convertFileReferences(result.importedFiles), ambientExternalModules: result.ambientExternalModules, - isLibFile: result.isLibFile + isLibFile: result.isLibFile, + typeReferenceDirectives: _this.convertFileReferences(result.typeReferenceDirectives) }; - ts.forEach(result.referencedFiles, function (refFile) { - convertResult.referencedFiles.push({ - path: ts.normalizePath(refFile.fileName), - position: refFile.pos, - length: refFile.end - refFile.pos - }); - }); - ts.forEach(result.importedFiles, function (importedFile) { - convertResult.importedFiles.push({ - path: ts.normalizeSlashes(importedFile.fileName), - position: importedFile.pos, - length: importedFile.end - importedFile.pos - }); - }); - return convertResult; }); }; + CoreServicesShimObject.prototype.convertFileReferences = function (refs) { + if (!refs) { + return undefined; + } + var result = []; + for (var _i = 0, refs_2 = refs; _i < refs_2.length; _i++) { + var ref = refs_2[_i]; + result.push({ + path: ts.normalizeSlashes(ref.fileName), + position: ref.pos, + length: ref.end - ref.pos + }); + } + return result; + }; CoreServicesShimObject.prototype.getTSConfigFileInfo = function (fileName, sourceTextSnapshot) { var _this = this; return this.forwardJSONCall("getTSConfigFileInfo('" + fileName + "')", function () { @@ -48474,6 +50360,7 @@ var ts; if (result.error) { return { options: {}, + typingOptions: {}, files: [], errors: [realizeDiagnostic(result.error, "\r\n")] }; @@ -48482,6 +50369,7 @@ var ts; var configFile = ts.parseJsonConfigFileContent(result.config, _this.host, ts.getDirectoryPath(normalizedFileName), {}, normalizedFileName); return { options: configFile.options, + typingOptions: configFile.typingOptions, files: configFile.fileNames, errors: realizeDiagnostics(configFile.errors, "\r\n") }; @@ -48490,6 +50378,14 @@ var ts; CoreServicesShimObject.prototype.getDefaultCompilationSettings = function () { return this.forwardJSONCall("getDefaultCompilationSettings()", function () { return ts.getDefaultCompilerOptions(); }); }; + CoreServicesShimObject.prototype.discoverTypings = function (discoverTypingsJson) { + var _this = this; + var getCanonicalFileName = ts.createGetCanonicalFileName(false); + return this.forwardJSONCall("discoverTypings()", function () { + var info = JSON.parse(discoverTypingsJson); + return ts.JsTyping.discoverTypings(_this.host, info.fileNames, ts.toPath(info.projectRootPath, info.projectRootPath, getCanonicalFileName), ts.toPath(info.safeListPath, info.safeListPath, getCanonicalFileName), info.packageNameToTypingLocation, info.typingOptions, info.compilerOptions); + }); + }; return CoreServicesShimObject; }(ShimBase)); var TypeScriptServicesFactory = (function () { diff --git a/lib/typescript.d.ts b/lib/typescript.d.ts index 1ad5a4bc28d..e9917c7cc6b 100644 --- a/lib/typescript.d.ts +++ b/lib/typescript.d.ts @@ -167,163 +167,166 @@ declare namespace ts { StringKeyword = 131, SymbolKeyword = 132, TypeKeyword = 133, - FromKeyword = 134, - GlobalKeyword = 135, - OfKeyword = 136, - QualifiedName = 137, - ComputedPropertyName = 138, - TypeParameter = 139, - Parameter = 140, - Decorator = 141, - PropertySignature = 142, - PropertyDeclaration = 143, - MethodSignature = 144, - MethodDeclaration = 145, - Constructor = 146, - GetAccessor = 147, - SetAccessor = 148, - CallSignature = 149, - ConstructSignature = 150, - IndexSignature = 151, - TypePredicate = 152, - TypeReference = 153, - FunctionType = 154, - ConstructorType = 155, - TypeQuery = 156, - TypeLiteral = 157, - ArrayType = 158, - TupleType = 159, - UnionType = 160, - IntersectionType = 161, - ParenthesizedType = 162, - ThisType = 163, - StringLiteralType = 164, - ObjectBindingPattern = 165, - ArrayBindingPattern = 166, - BindingElement = 167, - ArrayLiteralExpression = 168, - ObjectLiteralExpression = 169, - PropertyAccessExpression = 170, - ElementAccessExpression = 171, - CallExpression = 172, - NewExpression = 173, - TaggedTemplateExpression = 174, - TypeAssertionExpression = 175, - ParenthesizedExpression = 176, - FunctionExpression = 177, - ArrowFunction = 178, - DeleteExpression = 179, - TypeOfExpression = 180, - VoidExpression = 181, - AwaitExpression = 182, - PrefixUnaryExpression = 183, - PostfixUnaryExpression = 184, - BinaryExpression = 185, - ConditionalExpression = 186, - TemplateExpression = 187, - YieldExpression = 188, - SpreadElementExpression = 189, - ClassExpression = 190, - OmittedExpression = 191, - ExpressionWithTypeArguments = 192, - AsExpression = 193, - TemplateSpan = 194, - SemicolonClassElement = 195, - Block = 196, - VariableStatement = 197, - EmptyStatement = 198, - ExpressionStatement = 199, - IfStatement = 200, - DoStatement = 201, - WhileStatement = 202, - ForStatement = 203, - ForInStatement = 204, - ForOfStatement = 205, - ContinueStatement = 206, - BreakStatement = 207, - ReturnStatement = 208, - WithStatement = 209, - SwitchStatement = 210, - LabeledStatement = 211, - ThrowStatement = 212, - TryStatement = 213, - DebuggerStatement = 214, - VariableDeclaration = 215, - VariableDeclarationList = 216, - FunctionDeclaration = 217, - ClassDeclaration = 218, - InterfaceDeclaration = 219, - TypeAliasDeclaration = 220, - EnumDeclaration = 221, - ModuleDeclaration = 222, - ModuleBlock = 223, - CaseBlock = 224, - ImportEqualsDeclaration = 225, - ImportDeclaration = 226, - ImportClause = 227, - NamespaceImport = 228, - NamedImports = 229, - ImportSpecifier = 230, - ExportAssignment = 231, - ExportDeclaration = 232, - NamedExports = 233, - ExportSpecifier = 234, - MissingDeclaration = 235, - ExternalModuleReference = 236, - JsxElement = 237, - JsxSelfClosingElement = 238, - JsxOpeningElement = 239, - JsxText = 240, - JsxClosingElement = 241, - JsxAttribute = 242, - JsxSpreadAttribute = 243, - JsxExpression = 244, - CaseClause = 245, - DefaultClause = 246, - HeritageClause = 247, - CatchClause = 248, - PropertyAssignment = 249, - ShorthandPropertyAssignment = 250, - EnumMember = 251, - SourceFile = 252, - JSDocTypeExpression = 253, - JSDocAllType = 254, - JSDocUnknownType = 255, - JSDocArrayType = 256, - JSDocUnionType = 257, - JSDocTupleType = 258, - JSDocNullableType = 259, - JSDocNonNullableType = 260, - JSDocRecordType = 261, - JSDocRecordMember = 262, - JSDocTypeReference = 263, - JSDocOptionalType = 264, - JSDocFunctionType = 265, - JSDocVariadicType = 266, - JSDocConstructorType = 267, - JSDocThisType = 268, - JSDocComment = 269, - JSDocTag = 270, - JSDocParameterTag = 271, - JSDocReturnTag = 272, - JSDocTypeTag = 273, - JSDocTemplateTag = 274, - SyntaxList = 275, - Count = 276, + UndefinedKeyword = 134, + FromKeyword = 135, + GlobalKeyword = 136, + OfKeyword = 137, + QualifiedName = 138, + ComputedPropertyName = 139, + TypeParameter = 140, + Parameter = 141, + Decorator = 142, + PropertySignature = 143, + PropertyDeclaration = 144, + MethodSignature = 145, + MethodDeclaration = 146, + Constructor = 147, + GetAccessor = 148, + SetAccessor = 149, + CallSignature = 150, + ConstructSignature = 151, + IndexSignature = 152, + TypePredicate = 153, + TypeReference = 154, + FunctionType = 155, + ConstructorType = 156, + TypeQuery = 157, + TypeLiteral = 158, + ArrayType = 159, + TupleType = 160, + UnionType = 161, + IntersectionType = 162, + ParenthesizedType = 163, + ThisType = 164, + StringLiteralType = 165, + ObjectBindingPattern = 166, + ArrayBindingPattern = 167, + BindingElement = 168, + ArrayLiteralExpression = 169, + ObjectLiteralExpression = 170, + PropertyAccessExpression = 171, + ElementAccessExpression = 172, + CallExpression = 173, + NewExpression = 174, + TaggedTemplateExpression = 175, + TypeAssertionExpression = 176, + ParenthesizedExpression = 177, + FunctionExpression = 178, + ArrowFunction = 179, + DeleteExpression = 180, + TypeOfExpression = 181, + VoidExpression = 182, + AwaitExpression = 183, + PrefixUnaryExpression = 184, + PostfixUnaryExpression = 185, + BinaryExpression = 186, + ConditionalExpression = 187, + TemplateExpression = 188, + YieldExpression = 189, + SpreadElementExpression = 190, + ClassExpression = 191, + OmittedExpression = 192, + ExpressionWithTypeArguments = 193, + AsExpression = 194, + NonNullExpression = 195, + TemplateSpan = 196, + SemicolonClassElement = 197, + Block = 198, + VariableStatement = 199, + EmptyStatement = 200, + ExpressionStatement = 201, + IfStatement = 202, + DoStatement = 203, + WhileStatement = 204, + ForStatement = 205, + ForInStatement = 206, + ForOfStatement = 207, + ContinueStatement = 208, + BreakStatement = 209, + ReturnStatement = 210, + WithStatement = 211, + SwitchStatement = 212, + LabeledStatement = 213, + ThrowStatement = 214, + TryStatement = 215, + DebuggerStatement = 216, + VariableDeclaration = 217, + VariableDeclarationList = 218, + FunctionDeclaration = 219, + ClassDeclaration = 220, + InterfaceDeclaration = 221, + TypeAliasDeclaration = 222, + EnumDeclaration = 223, + ModuleDeclaration = 224, + ModuleBlock = 225, + CaseBlock = 226, + GlobalModuleExportDeclaration = 227, + ImportEqualsDeclaration = 228, + ImportDeclaration = 229, + ImportClause = 230, + NamespaceImport = 231, + NamedImports = 232, + ImportSpecifier = 233, + ExportAssignment = 234, + ExportDeclaration = 235, + NamedExports = 236, + ExportSpecifier = 237, + MissingDeclaration = 238, + ExternalModuleReference = 239, + JsxElement = 240, + JsxSelfClosingElement = 241, + JsxOpeningElement = 242, + JsxText = 243, + JsxClosingElement = 244, + JsxAttribute = 245, + JsxSpreadAttribute = 246, + JsxExpression = 247, + CaseClause = 248, + DefaultClause = 249, + HeritageClause = 250, + CatchClause = 251, + PropertyAssignment = 252, + ShorthandPropertyAssignment = 253, + EnumMember = 254, + SourceFile = 255, + JSDocTypeExpression = 256, + JSDocAllType = 257, + JSDocUnknownType = 258, + JSDocArrayType = 259, + JSDocUnionType = 260, + JSDocTupleType = 261, + JSDocNullableType = 262, + JSDocNonNullableType = 263, + JSDocRecordType = 264, + JSDocRecordMember = 265, + JSDocTypeReference = 266, + JSDocOptionalType = 267, + JSDocFunctionType = 268, + JSDocVariadicType = 269, + JSDocConstructorType = 270, + JSDocThisType = 271, + JSDocComment = 272, + JSDocTag = 273, + JSDocParameterTag = 274, + JSDocReturnTag = 275, + JSDocTypeTag = 276, + JSDocTemplateTag = 277, + SyntaxList = 278, + Count = 279, FirstAssignment = 56, LastAssignment = 68, FirstReservedWord = 70, LastReservedWord = 105, FirstKeyword = 70, - LastKeyword = 136, + LastKeyword = 137, FirstFutureReservedWord = 106, LastFutureReservedWord = 114, - FirstTypeNode = 152, - LastTypeNode = 164, + FirstTypeNode = 153, + LastTypeNode = 165, FirstPunctuation = 15, LastPunctuation = 68, FirstToken = 0, - LastToken = 136, + LastToken = 137, FirstTriviaToken = 2, LastTriviaToken = 7, FirstLiteralToken = 8, @@ -332,7 +335,7 @@ declare namespace ts { LastTemplateToken = 14, FirstBinaryOperator = 25, LastBinaryOperator = 68, - FirstNode = 137, + FirstNode = 138, } enum NodeFlags { None = 0, @@ -366,12 +369,13 @@ declare namespace ts { JavaScriptFile = 134217728, ThisNodeOrAnySubNodesHasError = 268435456, HasAggregatedChildData = 536870912, + HasJsxSpreadAttribute = 1073741824, Modifier = 959, AccessibilityModifier = 28, BlockScoped = 3072, ReachabilityCheckFlags = 98304, EmitHelperFlags = 3932160, - ContextFlags = 62914560, + ContextFlags = 197132288, TypeExcludesFlags = 41943040, } enum JsxFlags { @@ -401,6 +405,9 @@ declare namespace ts { text: string; originalKeywordKind?: SyntaxKind; } + interface TransientIdentifier extends Identifier { + resolvedSymbol: Symbol; + } interface QualifiedName extends Node { left: EntityName; right: Identifier; @@ -702,6 +709,7 @@ declare namespace ts { dotToken: Node; name: Identifier; } + type IdentifierOrPropertyAccess = Identifier | PropertyAccessExpression; interface ElementAccessExpression extends MemberExpression { expression: LeftHandSideExpression; argumentExpression?: Expression; @@ -731,6 +739,9 @@ declare namespace ts { expression: UnaryExpression; } type AssertionExpression = TypeAssertion | AsExpression; + interface NonNullExpression extends LeftHandSideExpression { + expression: Expression; + } interface JsxElement extends PrimaryExpression { openingElement: JsxOpeningElement; children: NodeArray; @@ -854,6 +865,7 @@ declare namespace ts { variableDeclaration: VariableDeclaration; block: Block; } + type DeclarationWithTypeParameters = SignatureDeclaration | ClassLikeDeclaration | InterfaceDeclaration | TypeAliasDeclaration; interface ClassLikeDeclaration extends Declaration { name?: Identifier; typeParameters?: NodeArray; @@ -923,6 +935,10 @@ declare namespace ts { interface NamespaceImport extends Declaration { name: Identifier; } + interface GlobalModuleExportDeclaration extends DeclarationStatement { + name: Identifier; + moduleReference: LiteralLikeNode; + } interface ExportDeclaration extends DeclarationStatement { exportClause?: NamedExports; moduleSpecifier?: Expression; @@ -1044,6 +1060,7 @@ declare namespace ts { amdDependencies: AmdDependency[]; moduleName: string; referencedFiles: FileReference[]; + typeReferenceDirectives: FileReference[]; languageVariant: LanguageVariant; isDeclarationFile: boolean; /** @@ -1066,7 +1083,7 @@ declare namespace ts { readDirectory(rootDir: string, extension: string, exclude: string[]): string[]; } interface WriteFileCallback { - (fileName: string, data: string, writeByteOrderMark: boolean, onError?: (message: string) => void): void; + (fileName: string, data: string, writeByteOrderMark: boolean, onError?: (message: string) => void, sourceFiles?: SourceFile[]): void; } class OperationCanceledException { } @@ -1141,6 +1158,7 @@ declare namespace ts { emitSkipped: boolean; /** Contains declaration emit diagnostics */ diagnostics: Diagnostic[]; + emittedFiles: string[]; } interface TypeChecker { getTypeOfSymbolAtLocation(symbol: Symbol, node: Node): Type; @@ -1186,7 +1204,7 @@ declare namespace ts { buildTypeParameterDisplay(tp: TypeParameter, writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags): void; buildTypePredicateDisplay(predicate: TypePredicate, writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags): void; buildTypeParameterDisplayFromSymbol(symbol: Symbol, writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags): void; - buildDisplayForParametersAndDelimiters(parameters: Symbol[], writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags): void; + buildDisplayForParametersAndDelimiters(thisType: Type, parameters: Symbol[], writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags): void; buildDisplayForTypeParametersAndDelimiters(typeParameters: TypeParameter[], writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags): void; buildReturnTypeDisplay(signature: Signature, writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags): void; } @@ -1310,6 +1328,7 @@ declare namespace ts { valueDeclaration?: Declaration; members?: SymbolTable; exports?: SymbolTable; + globalExports?: SymbolTable; } interface SymbolTable { [index: string]: Symbol; @@ -1394,6 +1413,7 @@ declare namespace ts { declaration: SignatureDeclaration; typeParameters: TypeParameter[]; parameters: Symbol[]; + thisType?: Type; } enum IndexKind { String = 0, @@ -1442,10 +1462,12 @@ declare namespace ts { type RootPaths = string[]; type PathSubstitutions = Map; type TsConfigOnlyOptions = RootPaths | PathSubstitutions; + type CompilerOptionsValue = string | number | boolean | (string | number)[] | TsConfigOnlyOptions; interface CompilerOptions { allowNonTsExtensions?: boolean; charset?: string; declaration?: boolean; + declarationDir?: string; diagnostics?: boolean; emitBOM?: boolean; help?: boolean; @@ -1455,6 +1477,7 @@ declare namespace ts { jsx?: JsxEmit; reactNamespace?: string; listFiles?: boolean; + typesSearchPaths?: string[]; locale?: string; mapRoot?: string; module?: ModuleKind; @@ -1464,6 +1487,7 @@ declare namespace ts { noEmitOnError?: boolean; noErrorTruncation?: boolean; noImplicitAny?: boolean; + noImplicitThis?: boolean; noLib?: boolean; noResolve?: boolean; out?: string; @@ -1492,11 +1516,30 @@ declare namespace ts { baseUrl?: string; paths?: PathSubstitutions; rootDirs?: RootPaths; - traceModuleResolution?: boolean; + traceResolution?: boolean; allowSyntheticDefaultImports?: boolean; allowJs?: boolean; noImplicitUseStrict?: boolean; - [option: string]: string | number | boolean | TsConfigOnlyOptions; + strictNullChecks?: boolean; + listEmittedFiles?: boolean; + lib?: string[]; + types?: string[]; + list?: string[]; + [option: string]: CompilerOptionsValue; + } + interface TypingOptions { + enableAutoDiscovery?: boolean; + include?: string[]; + exclude?: string[]; + [option: string]: string[] | boolean; + } + interface DiscoverTypingsInfo { + fileNames: string[]; + projectRootPath: string; + safeListPath: string; + packageNameToTypingLocation: Map; + typingOptions: TypingOptions; + compilerOptions: CompilerOptions; } enum ModuleKind { None = 0, @@ -1540,6 +1583,7 @@ declare namespace ts { } interface ParsedCommandLine { options: CompilerOptions; + typingOptions?: TypingOptions; fileNames: string[]; errors: Diagnostic[]; } @@ -1557,16 +1601,29 @@ declare namespace ts { resolvedModule: ResolvedModule; failedLookupLocations: string[]; } + interface ResolvedTypeReferenceDirective { + primary: boolean; + resolvedFileName?: string; + } + interface ResolvedTypeReferenceDirectiveWithFailedLookupLocations { + resolvedTypeReferenceDirective: ResolvedTypeReferenceDirective; + failedLookupLocations: string[]; + } interface CompilerHost extends ModuleResolutionHost { getSourceFile(fileName: string, languageVersion: ScriptTarget, onError?: (message: string) => void): SourceFile; getCancellationToken?(): CancellationToken; getDefaultLibFileName(options: CompilerOptions): string; + getDefaultLibLocation?(): string; writeFile: WriteFileCallback; getCurrentDirectory(): string; getCanonicalFileName(fileName: string): string; useCaseSensitiveFileNames(): boolean; getNewLine(): string; resolveModuleNames?(moduleNames: string[], containingFile: string): ResolvedModule[]; + /** + * This method is a companion for 'resolveModuleNames' and is used to resolve 'types' references to actual type declaration files + */ + resolveTypeReferenceDirectives?(typeReferenceDirectiveNames: string[], containingFile: string): ResolvedTypeReferenceDirective[]; } interface TextSpan { start: number; @@ -1578,8 +1635,8 @@ declare namespace ts { } } declare namespace ts { - type FileWatcherCallback = (path: string, removed?: boolean) => void; - type DirectoryWatcherCallback = (path: string) => void; + type FileWatcherCallback = (fileName: string, removed?: boolean) => void; + type DirectoryWatcherCallback = (directoryName: string) => void; interface System { args: string[]; newLine: string; @@ -1587,7 +1644,7 @@ declare namespace ts { write(s: string): void; readFile(path: string, encoding?: string): string; writeFile(path: string, data: string, writeByteOrderMark?: boolean): void; - watchFile?(path: Path, callback: FileWatcherCallback): FileWatcher; + watchFile?(path: string, callback: FileWatcherCallback): FileWatcher; watchDirectory?(path: string, callback: DirectoryWatcherCallback, recursive?: boolean): FileWatcher; resolvePath(path: string): string; fileExists(path: string): boolean; @@ -1596,6 +1653,8 @@ declare namespace ts { getExecutingFilePath(): string; getCurrentDirectory(): string; readDirectory(path: string, extension?: string, exclude?: string[]): string[]; + getModifiedTime?(path: string): Date; + createHash?(data: string): string; getMemoryUsage?(): number; exit(exitCode?: number): void; } @@ -1603,7 +1662,7 @@ declare namespace ts { close(): void; } interface DirectoryWatcher extends FileWatcher { - directoryPath: Path; + directoryName: string; referenceCount: number; } var sys: System; @@ -1685,17 +1744,26 @@ declare namespace ts { function collapseTextChangeRangesAcrossMultipleVersions(changes: TextChangeRange[]): TextChangeRange; function getTypeParameterOwner(d: Declaration): Declaration; function isParameterPropertyDeclaration(node: ParameterDeclaration): boolean; + function startsWith(str: string, prefix: string): boolean; + function endsWith(str: string, suffix: string): boolean; } declare namespace ts { function createNode(kind: SyntaxKind, pos?: number, end?: number): Node; function forEachChild(node: Node, cbNode: (node: Node) => T, cbNodeArray?: (nodes: Node[]) => T): T; function createSourceFile(fileName: string, sourceText: string, languageVersion: ScriptTarget, setParentNodes?: boolean, scriptKind?: ScriptKind): SourceFile; + function isExternalModule(file: SourceFile): boolean; function updateSourceFile(sourceFile: SourceFile, newText: string, textChangeRange: TextChangeRange, aggressiveChecks?: boolean): SourceFile; } declare namespace ts { const version: string; function findConfigFile(searchPath: string, fileExists: (fileName: string) => boolean): string; function resolveTripleslashReference(moduleName: string, containingFile: string): string; + /** + * @param {string | undefined} containingFile - file that contains type reference directive, can be undefined if containing file is unknown. + * This is possible in case if resolution is performed for directives specified via 'types' parameter. In this case initial path for secondary lookups + * is assumed to be the same as root directory of the project. + */ + function resolveTypeReferenceDirective(typeReferenceDirectiveName: string, containingFile: string, options: CompilerOptions, host: ModuleResolutionHost): ResolvedTypeReferenceDirectiveWithFailedLookupLocations; function resolveModuleName(moduleName: string, containingFile: string, compilerOptions: CompilerOptions, host: ModuleResolutionHost): ResolvedModuleWithFailedLookupLocations; function nodeModuleNameResolver(moduleName: string, containingFile: string, compilerOptions: CompilerOptions, host: ModuleResolutionHost): ResolvedModuleWithFailedLookupLocations; function classicNameResolver(moduleName: string, containingFile: string, compilerOptions: CompilerOptions, host: ModuleResolutionHost): ResolvedModuleWithFailedLookupLocations; @@ -1705,7 +1773,6 @@ declare namespace ts { function createProgram(rootNames: string[], options: CompilerOptions, host?: CompilerHost, oldProgram?: Program): Program; } declare namespace ts { - function parseCommandLine(commandLine: string[], readFile?: (path: string) => string): ParsedCommandLine; /** * Read tsconfig.json file * @param fileName The path to the config file @@ -1735,6 +1802,10 @@ declare namespace ts { options: CompilerOptions; errors: Diagnostic[]; }; + function convertTypingOptionsFromJson(jsonOptions: any, basePath: string, configFileName?: string): { + options: CompilerOptions; + errors: Diagnostic[]; + }; } declare namespace ts { /** The version of the language service API */ @@ -1812,6 +1883,7 @@ declare namespace ts { } interface PreProcessedFileInfo { referencedFiles: FileReference[]; + typeReferenceDirectives: FileReference[]; importedFiles: FileReference[]; ambientExternalModules: string[]; isLibFile: boolean; @@ -1836,6 +1908,7 @@ declare namespace ts { error?(s: string): void; useCaseSensitiveFileNames?(): boolean; resolveModuleNames?(moduleNames: string[], containingFile: string): ResolvedModule[]; + resolveTypeReferenceDirectives?(typeDirectiveNames: string[], containingFile: string): ResolvedTypeReferenceDirective[]; directoryExists?(directoryName: string): boolean; } interface LanguageService { @@ -1880,7 +1953,6 @@ declare namespace ts { getDocCommentTemplateAtPosition(fileName: string, position: number): TextInsertion; getEmitOutput(fileName: string): EmitOutput; getProgram(): Program; - getSourceFile(fileName: string): SourceFile; dispose(): void; } interface Classifications { diff --git a/lib/typescript.js b/lib/typescript.js index 8dafad54257..f8b128defd8 100644 --- a/lib/typescript.js +++ b/lib/typescript.js @@ -168,184 +168,187 @@ var ts; SyntaxKind[SyntaxKind["StringKeyword"] = 131] = "StringKeyword"; SyntaxKind[SyntaxKind["SymbolKeyword"] = 132] = "SymbolKeyword"; SyntaxKind[SyntaxKind["TypeKeyword"] = 133] = "TypeKeyword"; - SyntaxKind[SyntaxKind["FromKeyword"] = 134] = "FromKeyword"; - SyntaxKind[SyntaxKind["GlobalKeyword"] = 135] = "GlobalKeyword"; - SyntaxKind[SyntaxKind["OfKeyword"] = 136] = "OfKeyword"; + SyntaxKind[SyntaxKind["UndefinedKeyword"] = 134] = "UndefinedKeyword"; + SyntaxKind[SyntaxKind["FromKeyword"] = 135] = "FromKeyword"; + SyntaxKind[SyntaxKind["GlobalKeyword"] = 136] = "GlobalKeyword"; + SyntaxKind[SyntaxKind["OfKeyword"] = 137] = "OfKeyword"; // Parse tree nodes // Names - SyntaxKind[SyntaxKind["QualifiedName"] = 137] = "QualifiedName"; - SyntaxKind[SyntaxKind["ComputedPropertyName"] = 138] = "ComputedPropertyName"; + SyntaxKind[SyntaxKind["QualifiedName"] = 138] = "QualifiedName"; + SyntaxKind[SyntaxKind["ComputedPropertyName"] = 139] = "ComputedPropertyName"; // Signature elements - SyntaxKind[SyntaxKind["TypeParameter"] = 139] = "TypeParameter"; - SyntaxKind[SyntaxKind["Parameter"] = 140] = "Parameter"; - SyntaxKind[SyntaxKind["Decorator"] = 141] = "Decorator"; + SyntaxKind[SyntaxKind["TypeParameter"] = 140] = "TypeParameter"; + SyntaxKind[SyntaxKind["Parameter"] = 141] = "Parameter"; + SyntaxKind[SyntaxKind["Decorator"] = 142] = "Decorator"; // TypeMember - SyntaxKind[SyntaxKind["PropertySignature"] = 142] = "PropertySignature"; - SyntaxKind[SyntaxKind["PropertyDeclaration"] = 143] = "PropertyDeclaration"; - SyntaxKind[SyntaxKind["MethodSignature"] = 144] = "MethodSignature"; - SyntaxKind[SyntaxKind["MethodDeclaration"] = 145] = "MethodDeclaration"; - SyntaxKind[SyntaxKind["Constructor"] = 146] = "Constructor"; - SyntaxKind[SyntaxKind["GetAccessor"] = 147] = "GetAccessor"; - SyntaxKind[SyntaxKind["SetAccessor"] = 148] = "SetAccessor"; - SyntaxKind[SyntaxKind["CallSignature"] = 149] = "CallSignature"; - SyntaxKind[SyntaxKind["ConstructSignature"] = 150] = "ConstructSignature"; - SyntaxKind[SyntaxKind["IndexSignature"] = 151] = "IndexSignature"; + SyntaxKind[SyntaxKind["PropertySignature"] = 143] = "PropertySignature"; + SyntaxKind[SyntaxKind["PropertyDeclaration"] = 144] = "PropertyDeclaration"; + SyntaxKind[SyntaxKind["MethodSignature"] = 145] = "MethodSignature"; + SyntaxKind[SyntaxKind["MethodDeclaration"] = 146] = "MethodDeclaration"; + SyntaxKind[SyntaxKind["Constructor"] = 147] = "Constructor"; + SyntaxKind[SyntaxKind["GetAccessor"] = 148] = "GetAccessor"; + SyntaxKind[SyntaxKind["SetAccessor"] = 149] = "SetAccessor"; + SyntaxKind[SyntaxKind["CallSignature"] = 150] = "CallSignature"; + SyntaxKind[SyntaxKind["ConstructSignature"] = 151] = "ConstructSignature"; + SyntaxKind[SyntaxKind["IndexSignature"] = 152] = "IndexSignature"; // Type - SyntaxKind[SyntaxKind["TypePredicate"] = 152] = "TypePredicate"; - SyntaxKind[SyntaxKind["TypeReference"] = 153] = "TypeReference"; - SyntaxKind[SyntaxKind["FunctionType"] = 154] = "FunctionType"; - SyntaxKind[SyntaxKind["ConstructorType"] = 155] = "ConstructorType"; - SyntaxKind[SyntaxKind["TypeQuery"] = 156] = "TypeQuery"; - SyntaxKind[SyntaxKind["TypeLiteral"] = 157] = "TypeLiteral"; - SyntaxKind[SyntaxKind["ArrayType"] = 158] = "ArrayType"; - SyntaxKind[SyntaxKind["TupleType"] = 159] = "TupleType"; - SyntaxKind[SyntaxKind["UnionType"] = 160] = "UnionType"; - SyntaxKind[SyntaxKind["IntersectionType"] = 161] = "IntersectionType"; - SyntaxKind[SyntaxKind["ParenthesizedType"] = 162] = "ParenthesizedType"; - SyntaxKind[SyntaxKind["ThisType"] = 163] = "ThisType"; - SyntaxKind[SyntaxKind["StringLiteralType"] = 164] = "StringLiteralType"; + SyntaxKind[SyntaxKind["TypePredicate"] = 153] = "TypePredicate"; + SyntaxKind[SyntaxKind["TypeReference"] = 154] = "TypeReference"; + SyntaxKind[SyntaxKind["FunctionType"] = 155] = "FunctionType"; + SyntaxKind[SyntaxKind["ConstructorType"] = 156] = "ConstructorType"; + SyntaxKind[SyntaxKind["TypeQuery"] = 157] = "TypeQuery"; + SyntaxKind[SyntaxKind["TypeLiteral"] = 158] = "TypeLiteral"; + SyntaxKind[SyntaxKind["ArrayType"] = 159] = "ArrayType"; + SyntaxKind[SyntaxKind["TupleType"] = 160] = "TupleType"; + SyntaxKind[SyntaxKind["UnionType"] = 161] = "UnionType"; + SyntaxKind[SyntaxKind["IntersectionType"] = 162] = "IntersectionType"; + SyntaxKind[SyntaxKind["ParenthesizedType"] = 163] = "ParenthesizedType"; + SyntaxKind[SyntaxKind["ThisType"] = 164] = "ThisType"; + SyntaxKind[SyntaxKind["StringLiteralType"] = 165] = "StringLiteralType"; // Binding patterns - SyntaxKind[SyntaxKind["ObjectBindingPattern"] = 165] = "ObjectBindingPattern"; - SyntaxKind[SyntaxKind["ArrayBindingPattern"] = 166] = "ArrayBindingPattern"; - SyntaxKind[SyntaxKind["BindingElement"] = 167] = "BindingElement"; + SyntaxKind[SyntaxKind["ObjectBindingPattern"] = 166] = "ObjectBindingPattern"; + SyntaxKind[SyntaxKind["ArrayBindingPattern"] = 167] = "ArrayBindingPattern"; + SyntaxKind[SyntaxKind["BindingElement"] = 168] = "BindingElement"; // Expression - SyntaxKind[SyntaxKind["ArrayLiteralExpression"] = 168] = "ArrayLiteralExpression"; - SyntaxKind[SyntaxKind["ObjectLiteralExpression"] = 169] = "ObjectLiteralExpression"; - SyntaxKind[SyntaxKind["PropertyAccessExpression"] = 170] = "PropertyAccessExpression"; - SyntaxKind[SyntaxKind["ElementAccessExpression"] = 171] = "ElementAccessExpression"; - SyntaxKind[SyntaxKind["CallExpression"] = 172] = "CallExpression"; - SyntaxKind[SyntaxKind["NewExpression"] = 173] = "NewExpression"; - SyntaxKind[SyntaxKind["TaggedTemplateExpression"] = 174] = "TaggedTemplateExpression"; - SyntaxKind[SyntaxKind["TypeAssertionExpression"] = 175] = "TypeAssertionExpression"; - SyntaxKind[SyntaxKind["ParenthesizedExpression"] = 176] = "ParenthesizedExpression"; - SyntaxKind[SyntaxKind["FunctionExpression"] = 177] = "FunctionExpression"; - SyntaxKind[SyntaxKind["ArrowFunction"] = 178] = "ArrowFunction"; - SyntaxKind[SyntaxKind["DeleteExpression"] = 179] = "DeleteExpression"; - SyntaxKind[SyntaxKind["TypeOfExpression"] = 180] = "TypeOfExpression"; - SyntaxKind[SyntaxKind["VoidExpression"] = 181] = "VoidExpression"; - SyntaxKind[SyntaxKind["AwaitExpression"] = 182] = "AwaitExpression"; - SyntaxKind[SyntaxKind["PrefixUnaryExpression"] = 183] = "PrefixUnaryExpression"; - SyntaxKind[SyntaxKind["PostfixUnaryExpression"] = 184] = "PostfixUnaryExpression"; - SyntaxKind[SyntaxKind["BinaryExpression"] = 185] = "BinaryExpression"; - SyntaxKind[SyntaxKind["ConditionalExpression"] = 186] = "ConditionalExpression"; - SyntaxKind[SyntaxKind["TemplateExpression"] = 187] = "TemplateExpression"; - SyntaxKind[SyntaxKind["YieldExpression"] = 188] = "YieldExpression"; - SyntaxKind[SyntaxKind["SpreadElementExpression"] = 189] = "SpreadElementExpression"; - SyntaxKind[SyntaxKind["ClassExpression"] = 190] = "ClassExpression"; - SyntaxKind[SyntaxKind["OmittedExpression"] = 191] = "OmittedExpression"; - SyntaxKind[SyntaxKind["ExpressionWithTypeArguments"] = 192] = "ExpressionWithTypeArguments"; - SyntaxKind[SyntaxKind["AsExpression"] = 193] = "AsExpression"; + SyntaxKind[SyntaxKind["ArrayLiteralExpression"] = 169] = "ArrayLiteralExpression"; + SyntaxKind[SyntaxKind["ObjectLiteralExpression"] = 170] = "ObjectLiteralExpression"; + SyntaxKind[SyntaxKind["PropertyAccessExpression"] = 171] = "PropertyAccessExpression"; + SyntaxKind[SyntaxKind["ElementAccessExpression"] = 172] = "ElementAccessExpression"; + SyntaxKind[SyntaxKind["CallExpression"] = 173] = "CallExpression"; + SyntaxKind[SyntaxKind["NewExpression"] = 174] = "NewExpression"; + SyntaxKind[SyntaxKind["TaggedTemplateExpression"] = 175] = "TaggedTemplateExpression"; + SyntaxKind[SyntaxKind["TypeAssertionExpression"] = 176] = "TypeAssertionExpression"; + SyntaxKind[SyntaxKind["ParenthesizedExpression"] = 177] = "ParenthesizedExpression"; + SyntaxKind[SyntaxKind["FunctionExpression"] = 178] = "FunctionExpression"; + SyntaxKind[SyntaxKind["ArrowFunction"] = 179] = "ArrowFunction"; + SyntaxKind[SyntaxKind["DeleteExpression"] = 180] = "DeleteExpression"; + SyntaxKind[SyntaxKind["TypeOfExpression"] = 181] = "TypeOfExpression"; + SyntaxKind[SyntaxKind["VoidExpression"] = 182] = "VoidExpression"; + SyntaxKind[SyntaxKind["AwaitExpression"] = 183] = "AwaitExpression"; + SyntaxKind[SyntaxKind["PrefixUnaryExpression"] = 184] = "PrefixUnaryExpression"; + SyntaxKind[SyntaxKind["PostfixUnaryExpression"] = 185] = "PostfixUnaryExpression"; + SyntaxKind[SyntaxKind["BinaryExpression"] = 186] = "BinaryExpression"; + SyntaxKind[SyntaxKind["ConditionalExpression"] = 187] = "ConditionalExpression"; + SyntaxKind[SyntaxKind["TemplateExpression"] = 188] = "TemplateExpression"; + SyntaxKind[SyntaxKind["YieldExpression"] = 189] = "YieldExpression"; + SyntaxKind[SyntaxKind["SpreadElementExpression"] = 190] = "SpreadElementExpression"; + SyntaxKind[SyntaxKind["ClassExpression"] = 191] = "ClassExpression"; + SyntaxKind[SyntaxKind["OmittedExpression"] = 192] = "OmittedExpression"; + SyntaxKind[SyntaxKind["ExpressionWithTypeArguments"] = 193] = "ExpressionWithTypeArguments"; + SyntaxKind[SyntaxKind["AsExpression"] = 194] = "AsExpression"; + SyntaxKind[SyntaxKind["NonNullExpression"] = 195] = "NonNullExpression"; // Misc - SyntaxKind[SyntaxKind["TemplateSpan"] = 194] = "TemplateSpan"; - SyntaxKind[SyntaxKind["SemicolonClassElement"] = 195] = "SemicolonClassElement"; + SyntaxKind[SyntaxKind["TemplateSpan"] = 196] = "TemplateSpan"; + SyntaxKind[SyntaxKind["SemicolonClassElement"] = 197] = "SemicolonClassElement"; // Element - SyntaxKind[SyntaxKind["Block"] = 196] = "Block"; - SyntaxKind[SyntaxKind["VariableStatement"] = 197] = "VariableStatement"; - SyntaxKind[SyntaxKind["EmptyStatement"] = 198] = "EmptyStatement"; - SyntaxKind[SyntaxKind["ExpressionStatement"] = 199] = "ExpressionStatement"; - SyntaxKind[SyntaxKind["IfStatement"] = 200] = "IfStatement"; - SyntaxKind[SyntaxKind["DoStatement"] = 201] = "DoStatement"; - SyntaxKind[SyntaxKind["WhileStatement"] = 202] = "WhileStatement"; - SyntaxKind[SyntaxKind["ForStatement"] = 203] = "ForStatement"; - SyntaxKind[SyntaxKind["ForInStatement"] = 204] = "ForInStatement"; - SyntaxKind[SyntaxKind["ForOfStatement"] = 205] = "ForOfStatement"; - SyntaxKind[SyntaxKind["ContinueStatement"] = 206] = "ContinueStatement"; - SyntaxKind[SyntaxKind["BreakStatement"] = 207] = "BreakStatement"; - SyntaxKind[SyntaxKind["ReturnStatement"] = 208] = "ReturnStatement"; - SyntaxKind[SyntaxKind["WithStatement"] = 209] = "WithStatement"; - SyntaxKind[SyntaxKind["SwitchStatement"] = 210] = "SwitchStatement"; - SyntaxKind[SyntaxKind["LabeledStatement"] = 211] = "LabeledStatement"; - SyntaxKind[SyntaxKind["ThrowStatement"] = 212] = "ThrowStatement"; - SyntaxKind[SyntaxKind["TryStatement"] = 213] = "TryStatement"; - SyntaxKind[SyntaxKind["DebuggerStatement"] = 214] = "DebuggerStatement"; - SyntaxKind[SyntaxKind["VariableDeclaration"] = 215] = "VariableDeclaration"; - SyntaxKind[SyntaxKind["VariableDeclarationList"] = 216] = "VariableDeclarationList"; - SyntaxKind[SyntaxKind["FunctionDeclaration"] = 217] = "FunctionDeclaration"; - SyntaxKind[SyntaxKind["ClassDeclaration"] = 218] = "ClassDeclaration"; - SyntaxKind[SyntaxKind["InterfaceDeclaration"] = 219] = "InterfaceDeclaration"; - SyntaxKind[SyntaxKind["TypeAliasDeclaration"] = 220] = "TypeAliasDeclaration"; - SyntaxKind[SyntaxKind["EnumDeclaration"] = 221] = "EnumDeclaration"; - SyntaxKind[SyntaxKind["ModuleDeclaration"] = 222] = "ModuleDeclaration"; - SyntaxKind[SyntaxKind["ModuleBlock"] = 223] = "ModuleBlock"; - SyntaxKind[SyntaxKind["CaseBlock"] = 224] = "CaseBlock"; - SyntaxKind[SyntaxKind["ImportEqualsDeclaration"] = 225] = "ImportEqualsDeclaration"; - SyntaxKind[SyntaxKind["ImportDeclaration"] = 226] = "ImportDeclaration"; - SyntaxKind[SyntaxKind["ImportClause"] = 227] = "ImportClause"; - SyntaxKind[SyntaxKind["NamespaceImport"] = 228] = "NamespaceImport"; - SyntaxKind[SyntaxKind["NamedImports"] = 229] = "NamedImports"; - SyntaxKind[SyntaxKind["ImportSpecifier"] = 230] = "ImportSpecifier"; - SyntaxKind[SyntaxKind["ExportAssignment"] = 231] = "ExportAssignment"; - SyntaxKind[SyntaxKind["ExportDeclaration"] = 232] = "ExportDeclaration"; - SyntaxKind[SyntaxKind["NamedExports"] = 233] = "NamedExports"; - SyntaxKind[SyntaxKind["ExportSpecifier"] = 234] = "ExportSpecifier"; - SyntaxKind[SyntaxKind["MissingDeclaration"] = 235] = "MissingDeclaration"; + SyntaxKind[SyntaxKind["Block"] = 198] = "Block"; + SyntaxKind[SyntaxKind["VariableStatement"] = 199] = "VariableStatement"; + SyntaxKind[SyntaxKind["EmptyStatement"] = 200] = "EmptyStatement"; + SyntaxKind[SyntaxKind["ExpressionStatement"] = 201] = "ExpressionStatement"; + SyntaxKind[SyntaxKind["IfStatement"] = 202] = "IfStatement"; + SyntaxKind[SyntaxKind["DoStatement"] = 203] = "DoStatement"; + SyntaxKind[SyntaxKind["WhileStatement"] = 204] = "WhileStatement"; + SyntaxKind[SyntaxKind["ForStatement"] = 205] = "ForStatement"; + SyntaxKind[SyntaxKind["ForInStatement"] = 206] = "ForInStatement"; + SyntaxKind[SyntaxKind["ForOfStatement"] = 207] = "ForOfStatement"; + SyntaxKind[SyntaxKind["ContinueStatement"] = 208] = "ContinueStatement"; + SyntaxKind[SyntaxKind["BreakStatement"] = 209] = "BreakStatement"; + SyntaxKind[SyntaxKind["ReturnStatement"] = 210] = "ReturnStatement"; + SyntaxKind[SyntaxKind["WithStatement"] = 211] = "WithStatement"; + SyntaxKind[SyntaxKind["SwitchStatement"] = 212] = "SwitchStatement"; + SyntaxKind[SyntaxKind["LabeledStatement"] = 213] = "LabeledStatement"; + SyntaxKind[SyntaxKind["ThrowStatement"] = 214] = "ThrowStatement"; + SyntaxKind[SyntaxKind["TryStatement"] = 215] = "TryStatement"; + SyntaxKind[SyntaxKind["DebuggerStatement"] = 216] = "DebuggerStatement"; + SyntaxKind[SyntaxKind["VariableDeclaration"] = 217] = "VariableDeclaration"; + SyntaxKind[SyntaxKind["VariableDeclarationList"] = 218] = "VariableDeclarationList"; + SyntaxKind[SyntaxKind["FunctionDeclaration"] = 219] = "FunctionDeclaration"; + SyntaxKind[SyntaxKind["ClassDeclaration"] = 220] = "ClassDeclaration"; + SyntaxKind[SyntaxKind["InterfaceDeclaration"] = 221] = "InterfaceDeclaration"; + SyntaxKind[SyntaxKind["TypeAliasDeclaration"] = 222] = "TypeAliasDeclaration"; + SyntaxKind[SyntaxKind["EnumDeclaration"] = 223] = "EnumDeclaration"; + SyntaxKind[SyntaxKind["ModuleDeclaration"] = 224] = "ModuleDeclaration"; + SyntaxKind[SyntaxKind["ModuleBlock"] = 225] = "ModuleBlock"; + SyntaxKind[SyntaxKind["CaseBlock"] = 226] = "CaseBlock"; + SyntaxKind[SyntaxKind["GlobalModuleExportDeclaration"] = 227] = "GlobalModuleExportDeclaration"; + SyntaxKind[SyntaxKind["ImportEqualsDeclaration"] = 228] = "ImportEqualsDeclaration"; + SyntaxKind[SyntaxKind["ImportDeclaration"] = 229] = "ImportDeclaration"; + SyntaxKind[SyntaxKind["ImportClause"] = 230] = "ImportClause"; + SyntaxKind[SyntaxKind["NamespaceImport"] = 231] = "NamespaceImport"; + SyntaxKind[SyntaxKind["NamedImports"] = 232] = "NamedImports"; + SyntaxKind[SyntaxKind["ImportSpecifier"] = 233] = "ImportSpecifier"; + SyntaxKind[SyntaxKind["ExportAssignment"] = 234] = "ExportAssignment"; + SyntaxKind[SyntaxKind["ExportDeclaration"] = 235] = "ExportDeclaration"; + SyntaxKind[SyntaxKind["NamedExports"] = 236] = "NamedExports"; + SyntaxKind[SyntaxKind["ExportSpecifier"] = 237] = "ExportSpecifier"; + SyntaxKind[SyntaxKind["MissingDeclaration"] = 238] = "MissingDeclaration"; // Module references - SyntaxKind[SyntaxKind["ExternalModuleReference"] = 236] = "ExternalModuleReference"; + SyntaxKind[SyntaxKind["ExternalModuleReference"] = 239] = "ExternalModuleReference"; // JSX - SyntaxKind[SyntaxKind["JsxElement"] = 237] = "JsxElement"; - SyntaxKind[SyntaxKind["JsxSelfClosingElement"] = 238] = "JsxSelfClosingElement"; - SyntaxKind[SyntaxKind["JsxOpeningElement"] = 239] = "JsxOpeningElement"; - SyntaxKind[SyntaxKind["JsxText"] = 240] = "JsxText"; - SyntaxKind[SyntaxKind["JsxClosingElement"] = 241] = "JsxClosingElement"; - SyntaxKind[SyntaxKind["JsxAttribute"] = 242] = "JsxAttribute"; - SyntaxKind[SyntaxKind["JsxSpreadAttribute"] = 243] = "JsxSpreadAttribute"; - SyntaxKind[SyntaxKind["JsxExpression"] = 244] = "JsxExpression"; + SyntaxKind[SyntaxKind["JsxElement"] = 240] = "JsxElement"; + SyntaxKind[SyntaxKind["JsxSelfClosingElement"] = 241] = "JsxSelfClosingElement"; + SyntaxKind[SyntaxKind["JsxOpeningElement"] = 242] = "JsxOpeningElement"; + SyntaxKind[SyntaxKind["JsxText"] = 243] = "JsxText"; + SyntaxKind[SyntaxKind["JsxClosingElement"] = 244] = "JsxClosingElement"; + SyntaxKind[SyntaxKind["JsxAttribute"] = 245] = "JsxAttribute"; + SyntaxKind[SyntaxKind["JsxSpreadAttribute"] = 246] = "JsxSpreadAttribute"; + SyntaxKind[SyntaxKind["JsxExpression"] = 247] = "JsxExpression"; // Clauses - SyntaxKind[SyntaxKind["CaseClause"] = 245] = "CaseClause"; - SyntaxKind[SyntaxKind["DefaultClause"] = 246] = "DefaultClause"; - SyntaxKind[SyntaxKind["HeritageClause"] = 247] = "HeritageClause"; - SyntaxKind[SyntaxKind["CatchClause"] = 248] = "CatchClause"; + SyntaxKind[SyntaxKind["CaseClause"] = 248] = "CaseClause"; + SyntaxKind[SyntaxKind["DefaultClause"] = 249] = "DefaultClause"; + SyntaxKind[SyntaxKind["HeritageClause"] = 250] = "HeritageClause"; + SyntaxKind[SyntaxKind["CatchClause"] = 251] = "CatchClause"; // Property assignments - SyntaxKind[SyntaxKind["PropertyAssignment"] = 249] = "PropertyAssignment"; - SyntaxKind[SyntaxKind["ShorthandPropertyAssignment"] = 250] = "ShorthandPropertyAssignment"; + SyntaxKind[SyntaxKind["PropertyAssignment"] = 252] = "PropertyAssignment"; + SyntaxKind[SyntaxKind["ShorthandPropertyAssignment"] = 253] = "ShorthandPropertyAssignment"; // Enum - SyntaxKind[SyntaxKind["EnumMember"] = 251] = "EnumMember"; + SyntaxKind[SyntaxKind["EnumMember"] = 254] = "EnumMember"; // Top-level nodes - SyntaxKind[SyntaxKind["SourceFile"] = 252] = "SourceFile"; + SyntaxKind[SyntaxKind["SourceFile"] = 255] = "SourceFile"; // JSDoc nodes - SyntaxKind[SyntaxKind["JSDocTypeExpression"] = 253] = "JSDocTypeExpression"; + SyntaxKind[SyntaxKind["JSDocTypeExpression"] = 256] = "JSDocTypeExpression"; // The * type - SyntaxKind[SyntaxKind["JSDocAllType"] = 254] = "JSDocAllType"; + SyntaxKind[SyntaxKind["JSDocAllType"] = 257] = "JSDocAllType"; // The ? type - SyntaxKind[SyntaxKind["JSDocUnknownType"] = 255] = "JSDocUnknownType"; - SyntaxKind[SyntaxKind["JSDocArrayType"] = 256] = "JSDocArrayType"; - SyntaxKind[SyntaxKind["JSDocUnionType"] = 257] = "JSDocUnionType"; - SyntaxKind[SyntaxKind["JSDocTupleType"] = 258] = "JSDocTupleType"; - SyntaxKind[SyntaxKind["JSDocNullableType"] = 259] = "JSDocNullableType"; - SyntaxKind[SyntaxKind["JSDocNonNullableType"] = 260] = "JSDocNonNullableType"; - SyntaxKind[SyntaxKind["JSDocRecordType"] = 261] = "JSDocRecordType"; - SyntaxKind[SyntaxKind["JSDocRecordMember"] = 262] = "JSDocRecordMember"; - SyntaxKind[SyntaxKind["JSDocTypeReference"] = 263] = "JSDocTypeReference"; - SyntaxKind[SyntaxKind["JSDocOptionalType"] = 264] = "JSDocOptionalType"; - SyntaxKind[SyntaxKind["JSDocFunctionType"] = 265] = "JSDocFunctionType"; - SyntaxKind[SyntaxKind["JSDocVariadicType"] = 266] = "JSDocVariadicType"; - SyntaxKind[SyntaxKind["JSDocConstructorType"] = 267] = "JSDocConstructorType"; - SyntaxKind[SyntaxKind["JSDocThisType"] = 268] = "JSDocThisType"; - SyntaxKind[SyntaxKind["JSDocComment"] = 269] = "JSDocComment"; - SyntaxKind[SyntaxKind["JSDocTag"] = 270] = "JSDocTag"; - SyntaxKind[SyntaxKind["JSDocParameterTag"] = 271] = "JSDocParameterTag"; - SyntaxKind[SyntaxKind["JSDocReturnTag"] = 272] = "JSDocReturnTag"; - SyntaxKind[SyntaxKind["JSDocTypeTag"] = 273] = "JSDocTypeTag"; - SyntaxKind[SyntaxKind["JSDocTemplateTag"] = 274] = "JSDocTemplateTag"; + SyntaxKind[SyntaxKind["JSDocUnknownType"] = 258] = "JSDocUnknownType"; + SyntaxKind[SyntaxKind["JSDocArrayType"] = 259] = "JSDocArrayType"; + SyntaxKind[SyntaxKind["JSDocUnionType"] = 260] = "JSDocUnionType"; + SyntaxKind[SyntaxKind["JSDocTupleType"] = 261] = "JSDocTupleType"; + SyntaxKind[SyntaxKind["JSDocNullableType"] = 262] = "JSDocNullableType"; + SyntaxKind[SyntaxKind["JSDocNonNullableType"] = 263] = "JSDocNonNullableType"; + SyntaxKind[SyntaxKind["JSDocRecordType"] = 264] = "JSDocRecordType"; + SyntaxKind[SyntaxKind["JSDocRecordMember"] = 265] = "JSDocRecordMember"; + SyntaxKind[SyntaxKind["JSDocTypeReference"] = 266] = "JSDocTypeReference"; + SyntaxKind[SyntaxKind["JSDocOptionalType"] = 267] = "JSDocOptionalType"; + SyntaxKind[SyntaxKind["JSDocFunctionType"] = 268] = "JSDocFunctionType"; + SyntaxKind[SyntaxKind["JSDocVariadicType"] = 269] = "JSDocVariadicType"; + SyntaxKind[SyntaxKind["JSDocConstructorType"] = 270] = "JSDocConstructorType"; + SyntaxKind[SyntaxKind["JSDocThisType"] = 271] = "JSDocThisType"; + SyntaxKind[SyntaxKind["JSDocComment"] = 272] = "JSDocComment"; + SyntaxKind[SyntaxKind["JSDocTag"] = 273] = "JSDocTag"; + SyntaxKind[SyntaxKind["JSDocParameterTag"] = 274] = "JSDocParameterTag"; + SyntaxKind[SyntaxKind["JSDocReturnTag"] = 275] = "JSDocReturnTag"; + SyntaxKind[SyntaxKind["JSDocTypeTag"] = 276] = "JSDocTypeTag"; + SyntaxKind[SyntaxKind["JSDocTemplateTag"] = 277] = "JSDocTemplateTag"; // Synthesized list - SyntaxKind[SyntaxKind["SyntaxList"] = 275] = "SyntaxList"; + SyntaxKind[SyntaxKind["SyntaxList"] = 278] = "SyntaxList"; // Enum value count - SyntaxKind[SyntaxKind["Count"] = 276] = "Count"; + SyntaxKind[SyntaxKind["Count"] = 279] = "Count"; // Markers SyntaxKind[SyntaxKind["FirstAssignment"] = 56] = "FirstAssignment"; SyntaxKind[SyntaxKind["LastAssignment"] = 68] = "LastAssignment"; SyntaxKind[SyntaxKind["FirstReservedWord"] = 70] = "FirstReservedWord"; SyntaxKind[SyntaxKind["LastReservedWord"] = 105] = "LastReservedWord"; SyntaxKind[SyntaxKind["FirstKeyword"] = 70] = "FirstKeyword"; - SyntaxKind[SyntaxKind["LastKeyword"] = 136] = "LastKeyword"; + SyntaxKind[SyntaxKind["LastKeyword"] = 137] = "LastKeyword"; SyntaxKind[SyntaxKind["FirstFutureReservedWord"] = 106] = "FirstFutureReservedWord"; SyntaxKind[SyntaxKind["LastFutureReservedWord"] = 114] = "LastFutureReservedWord"; - SyntaxKind[SyntaxKind["FirstTypeNode"] = 152] = "FirstTypeNode"; - SyntaxKind[SyntaxKind["LastTypeNode"] = 164] = "LastTypeNode"; + SyntaxKind[SyntaxKind["FirstTypeNode"] = 153] = "FirstTypeNode"; + SyntaxKind[SyntaxKind["LastTypeNode"] = 165] = "LastTypeNode"; SyntaxKind[SyntaxKind["FirstPunctuation"] = 15] = "FirstPunctuation"; SyntaxKind[SyntaxKind["LastPunctuation"] = 68] = "LastPunctuation"; SyntaxKind[SyntaxKind["FirstToken"] = 0] = "FirstToken"; - SyntaxKind[SyntaxKind["LastToken"] = 136] = "LastToken"; + SyntaxKind[SyntaxKind["LastToken"] = 137] = "LastToken"; SyntaxKind[SyntaxKind["FirstTriviaToken"] = 2] = "FirstTriviaToken"; SyntaxKind[SyntaxKind["LastTriviaToken"] = 7] = "LastTriviaToken"; SyntaxKind[SyntaxKind["FirstLiteralToken"] = 8] = "FirstLiteralToken"; @@ -354,7 +357,7 @@ var ts; SyntaxKind[SyntaxKind["LastTemplateToken"] = 14] = "LastTemplateToken"; SyntaxKind[SyntaxKind["FirstBinaryOperator"] = 25] = "FirstBinaryOperator"; SyntaxKind[SyntaxKind["LastBinaryOperator"] = 68] = "LastBinaryOperator"; - SyntaxKind[SyntaxKind["FirstNode"] = 137] = "FirstNode"; + SyntaxKind[SyntaxKind["FirstNode"] = 138] = "FirstNode"; })(ts.SyntaxKind || (ts.SyntaxKind = {})); var SyntaxKind = ts.SyntaxKind; (function (NodeFlags) { @@ -389,13 +392,14 @@ var ts; NodeFlags[NodeFlags["JavaScriptFile"] = 134217728] = "JavaScriptFile"; NodeFlags[NodeFlags["ThisNodeOrAnySubNodesHasError"] = 268435456] = "ThisNodeOrAnySubNodesHasError"; NodeFlags[NodeFlags["HasAggregatedChildData"] = 536870912] = "HasAggregatedChildData"; + NodeFlags[NodeFlags["HasJsxSpreadAttribute"] = 1073741824] = "HasJsxSpreadAttribute"; NodeFlags[NodeFlags["Modifier"] = 959] = "Modifier"; NodeFlags[NodeFlags["AccessibilityModifier"] = 28] = "AccessibilityModifier"; NodeFlags[NodeFlags["BlockScoped"] = 3072] = "BlockScoped"; NodeFlags[NodeFlags["ReachabilityCheckFlags"] = 98304] = "ReachabilityCheckFlags"; NodeFlags[NodeFlags["EmitHelperFlags"] = 3932160] = "EmitHelperFlags"; // Parsing context flags - NodeFlags[NodeFlags["ContextFlags"] = 62914560] = "ContextFlags"; + NodeFlags[NodeFlags["ContextFlags"] = 197132288] = "ContextFlags"; // Exclude these flags when parsing a Type NodeFlags[NodeFlags["TypeExcludesFlags"] = 41943040] = "TypeExcludesFlags"; })(ts.NodeFlags || (ts.NodeFlags = {})); @@ -622,6 +626,8 @@ var ts; TypeFlags[TypeFlags["ThisType"] = 33554432] = "ThisType"; TypeFlags[TypeFlags["ObjectLiteralPatternWithComputedProperties"] = 67108864] = "ObjectLiteralPatternWithComputedProperties"; /* @internal */ + TypeFlags[TypeFlags["Nullable"] = 96] = "Nullable"; + /* @internal */ TypeFlags[TypeFlags["Intrinsic"] = 16777343] = "Intrinsic"; /* @internal */ TypeFlags[TypeFlags["Primitive"] = 16777726] = "Primitive"; @@ -1087,8 +1093,14 @@ var ts; var count = array.length; if (count > 0) { var pos = 0; - var result = arguments.length <= 2 ? array[pos] : initial; - pos++; + var result = void 0; + if (arguments.length <= 2) { + result = array[pos]; + pos++; + } + else { + result = initial; + } while (pos < count) { result = f(result, array[pos]); pos++; @@ -1103,8 +1115,14 @@ var ts; if (array) { var pos = array.length - 1; if (pos >= 0) { - var result = arguments.length <= 2 ? array[pos] : initial; - pos--; + var result = void 0; + if (arguments.length <= 2) { + result = array[pos]; + pos--; + } + else { + result = initial; + } while (pos >= 0) { result = f(result, array[pos]); pos--; @@ -1120,6 +1138,14 @@ var ts; return hasOwnProperty.call(map, key); } ts.hasProperty = hasProperty; + function getKeys(map) { + var keys = []; + for (var key in map) { + keys.push(key); + } + return keys; + } + ts.getKeys = getKeys; function getProperty(map, key) { return hasOwnProperty.call(map, key) ? map[key] : undefined; } @@ -1586,6 +1612,32 @@ var ts; return pathLen > extLen && path.substr(pathLen - extLen, extLen) === extension; } ts.fileExtensionIs = fileExtensionIs; + function ensureScriptKind(fileName, scriptKind) { + // Using scriptKind as a condition handles both: + // - 'scriptKind' is unspecified and thus it is `undefined` + // - 'scriptKind' is set and it is `Unknown` (0) + // If the 'scriptKind' is 'undefined' or 'Unknown' then we attempt + // to get the ScriptKind from the file name. If it cannot be resolved + // from the file name then the default 'TS' script kind is returned. + return (scriptKind || getScriptKindFromFileName(fileName)) || 3 /* TS */; + } + ts.ensureScriptKind = ensureScriptKind; + function getScriptKindFromFileName(fileName) { + var ext = fileName.substr(fileName.lastIndexOf(".")); + switch (ext.toLowerCase()) { + case ".js": + return 1 /* JS */; + case ".jsx": + return 2 /* JSX */; + case ".ts": + return 3 /* TS */; + case ".tsx": + return 4 /* TSX */; + default: + return 0 /* Unknown */; + } + } + ts.getScriptKindFromFileName = getScriptKindFromFileName; /** * List of supported extensions in order of file resolution precedence. */ @@ -1837,6 +1889,7 @@ var ts; var _fs = require("fs"); var _path = require("path"); var _os = require("os"); + var _crypto = require("crypto"); // average async stat takes about 30 microseconds // set chunk size to do 30 files in < 1 millisecond function createPollingWatchedFileSet(interval, chunkSize) { @@ -1853,13 +1906,13 @@ var ts; if (!watchedFile) { return; } - _fs.stat(watchedFile.filePath, function (err, stats) { + _fs.stat(watchedFile.fileName, function (err, stats) { if (err) { - watchedFile.callback(watchedFile.filePath); + watchedFile.callback(watchedFile.fileName); } else if (watchedFile.mtime.getTime() !== stats.mtime.getTime()) { - watchedFile.mtime = getModifiedTime(watchedFile.filePath); - watchedFile.callback(watchedFile.filePath, watchedFile.mtime.getTime() === 0); + watchedFile.mtime = getModifiedTime(watchedFile.fileName); + watchedFile.callback(watchedFile.fileName, watchedFile.mtime.getTime() === 0); } }); } @@ -1885,11 +1938,11 @@ var ts; nextFileToCheck = nextToCheck; }, interval); } - function addFile(filePath, callback) { + function addFile(fileName, callback) { var file = { - filePath: filePath, + fileName: fileName, callback: callback, - mtime: getModifiedTime(filePath) + mtime: getModifiedTime(fileName) }; watchedFiles.push(file); if (watchedFiles.length === 1) { @@ -1909,70 +1962,70 @@ var ts; }; } function createWatchedFileSet() { - var dirWatchers = ts.createFileMap(); + var dirWatchers = {}; // One file can have multiple watchers - var fileWatcherCallbacks = ts.createFileMap(); + var fileWatcherCallbacks = {}; return { addFile: addFile, removeFile: removeFile }; - function reduceDirWatcherRefCountForFile(filePath) { - var dirPath = ts.getDirectoryPath(filePath); - if (dirWatchers.contains(dirPath)) { - var watcher = dirWatchers.get(dirPath); + function reduceDirWatcherRefCountForFile(fileName) { + var dirName = ts.getDirectoryPath(fileName); + if (ts.hasProperty(dirWatchers, dirName)) { + var watcher = dirWatchers[dirName]; watcher.referenceCount -= 1; if (watcher.referenceCount <= 0) { watcher.close(); - dirWatchers.remove(dirPath); + delete dirWatchers[dirName]; } } } function addDirWatcher(dirPath) { - if (dirWatchers.contains(dirPath)) { - var watcher_1 = dirWatchers.get(dirPath); + if (ts.hasProperty(dirWatchers, dirPath)) { + var watcher_1 = dirWatchers[dirPath]; watcher_1.referenceCount += 1; return; } var watcher = _fs.watch(dirPath, { persistent: true }, function (eventName, relativeFileName) { return fileEventHandler(eventName, relativeFileName, dirPath); }); watcher.referenceCount = 1; - dirWatchers.set(dirPath, watcher); + dirWatchers[dirPath] = watcher; return; } function addFileWatcherCallback(filePath, callback) { - if (fileWatcherCallbacks.contains(filePath)) { - fileWatcherCallbacks.get(filePath).push(callback); + if (ts.hasProperty(fileWatcherCallbacks, filePath)) { + fileWatcherCallbacks[filePath].push(callback); } else { - fileWatcherCallbacks.set(filePath, [callback]); + fileWatcherCallbacks[filePath] = [callback]; } } - function addFile(filePath, callback) { - addFileWatcherCallback(filePath, callback); - addDirWatcher(ts.getDirectoryPath(filePath)); - return { filePath: filePath, callback: callback }; + function addFile(fileName, callback) { + addFileWatcherCallback(fileName, callback); + addDirWatcher(ts.getDirectoryPath(fileName)); + return { fileName: fileName, callback: callback }; } function removeFile(watchedFile) { - removeFileWatcherCallback(watchedFile.filePath, watchedFile.callback); - reduceDirWatcherRefCountForFile(watchedFile.filePath); + removeFileWatcherCallback(watchedFile.fileName, watchedFile.callback); + reduceDirWatcherRefCountForFile(watchedFile.fileName); } function removeFileWatcherCallback(filePath, callback) { - if (fileWatcherCallbacks.contains(filePath)) { - var newCallbacks = ts.copyListRemovingItem(callback, fileWatcherCallbacks.get(filePath)); + if (ts.hasProperty(fileWatcherCallbacks, filePath)) { + var newCallbacks = ts.copyListRemovingItem(callback, fileWatcherCallbacks[filePath]); if (newCallbacks.length === 0) { - fileWatcherCallbacks.remove(filePath); + delete fileWatcherCallbacks[filePath]; } else { - fileWatcherCallbacks.set(filePath, newCallbacks); + fileWatcherCallbacks[filePath] = newCallbacks; } } } function fileEventHandler(eventName, relativeFileName, baseDirPath) { // When files are deleted from disk, the triggered "rename" event would have a relativefileName of "undefined" - var filePath = typeof relativeFileName !== "string" + var fileName = typeof relativeFileName !== "string" ? undefined - : ts.toPath(relativeFileName, baseDirPath, ts.createGetCanonicalFileName(ts.sys.useCaseSensitiveFileNames)); + : ts.getNormalizedAbsolutePath(relativeFileName, baseDirPath); // Some applications save a working file via rename operations - if ((eventName === "change" || eventName === "rename") && fileWatcherCallbacks.contains(filePath)) { - for (var _i = 0, _a = fileWatcherCallbacks.get(filePath); _i < _a.length; _i++) { + if ((eventName === "change" || eventName === "rename") && ts.hasProperty(fileWatcherCallbacks, fileName)) { + for (var _i = 0, _a = fileWatcherCallbacks[fileName]; _i < _a.length; _i++) { var fileCallback = _a[_i]; - fileCallback(filePath); + fileCallback(fileName); } } } @@ -2078,6 +2131,11 @@ var ts; var directories = []; for (var _i = 0, files_2 = files; _i < files_2.length; _i++) { var current = files_2[_i]; + // This is necessary because on some file system node fails to exclude + // "." and "..". See https://github.com/nodejs/node/issues/4002 + if (current === "." || current === "..") { + continue; + } var name_3 = ts.combinePaths(path, current); if (!ts.contains(exclude, getCanonicalPath(name_3))) { var stat = _fs.statSync(name_3); @@ -2106,18 +2164,18 @@ var ts; }, readFile: readFile, writeFile: writeFile, - watchFile: function (filePath, callback) { + watchFile: function (fileName, callback) { // Node 4.0 stabilized the `fs.watch` function on Windows which avoids polling // and is more efficient than `fs.watchFile` (ref: https://github.com/nodejs/node/pull/2649 // and https://github.com/Microsoft/TypeScript/issues/4643), therefore // if the current node.js version is newer than 4, use `fs.watch` instead. var watchSet = isNode4OrLater() ? watchedFileSet : pollingWatchedFileSet; - var watchedFile = watchSet.addFile(filePath, callback); + var watchedFile = watchSet.addFile(fileName, callback); return { close: function () { return watchSet.removeFile(watchedFile); } }; }, - watchDirectory: function (path, callback, recursive) { + watchDirectory: function (directoryName, callback, recursive) { // Node 4.0 `fs.watch` function supports the "recursive" option on both OSX and Windows // (ref: https://github.com/nodejs/node/pull/2649 and https://github.com/Microsoft/TypeScript/issues/4643) var options; @@ -2127,13 +2185,13 @@ var ts; else { options = { persistent: true }; } - return _fs.watch(path, options, function (eventName, relativeFileName) { + return _fs.watch(directoryName, options, function (eventName, relativeFileName) { // In watchDirectory we only care about adding and removing files (when event name is // "rename"); changes made within files are handled by corresponding fileWatchers (when // event name is "change") if (eventName === "rename") { // When deleting a file, the passed baseFileName is null - callback(!relativeFileName ? relativeFileName : ts.normalizePath(ts.combinePaths(path, relativeFileName))); + callback(!relativeFileName ? relativeFileName : ts.normalizePath(ts.combinePaths(directoryName, relativeFileName))); } ; }); @@ -2155,6 +2213,19 @@ var ts; return process.cwd(); }, readDirectory: readDirectory, + getModifiedTime: function (path) { + try { + return _fs.statSync(path).mtime; + } + catch (e) { + return undefined; + } + }, + createHash: function (data) { + var hash = _crypto.createHash("md5"); + hash.update(data); + return hash.digest("hex"); + }, getMemoryUsage: function () { if (global.gc) { global.gc(); @@ -2423,6 +2494,9 @@ var ts; Async_functions_are_only_available_when_targeting_ECMAScript_6_and_higher: { code: 1311, category: ts.DiagnosticCategory.Error, key: "Async_functions_are_only_available_when_targeting_ECMAScript_6_and_higher_1311", message: "Async functions are only available when targeting ECMAScript 6 and higher." }, can_only_be_used_in_an_object_literal_property_inside_a_destructuring_assignment: { code: 1312, category: ts.DiagnosticCategory.Error, key: "can_only_be_used_in_an_object_literal_property_inside_a_destructuring_assignment_1312", message: "'=' can only be used in an object literal property inside a destructuring assignment." }, The_body_of_an_if_statement_cannot_be_the_empty_statement: { code: 1313, category: ts.DiagnosticCategory.Error, key: "The_body_of_an_if_statement_cannot_be_the_empty_statement_1313", message: "The body of an 'if' statement cannot be the empty statement." }, + Global_module_exports_may_only_appear_in_module_files: { code: 1314, category: ts.DiagnosticCategory.Error, key: "Global_module_exports_may_only_appear_in_module_files_1314", message: "Global module exports may only appear in module files." }, + Global_module_exports_may_only_appear_in_declaration_files: { code: 1315, category: ts.DiagnosticCategory.Error, key: "Global_module_exports_may_only_appear_in_declaration_files_1315", message: "Global module exports may only appear in declaration files." }, + Global_module_exports_may_only_appear_at_top_level: { code: 1316, category: ts.DiagnosticCategory.Error, key: "Global_module_exports_may_only_appear_at_top_level_1316", message: "Global module exports may only appear at top level." }, Duplicate_identifier_0: { code: 2300, category: ts.DiagnosticCategory.Error, key: "Duplicate_identifier_0_2300", message: "Duplicate identifier '{0}'." }, Initializer_of_instance_member_variable_0_cannot_reference_identifier_1_declared_in_the_constructor: { code: 2301, category: ts.DiagnosticCategory.Error, key: "Initializer_of_instance_member_variable_0_cannot_reference_identifier_1_declared_in_the_constructor_2301", message: "Initializer of instance member variable '{0}' cannot reference identifier '{1}' declared in the constructor." }, Static_members_cannot_reference_class_type_parameters: { code: 2302, category: ts.DiagnosticCategory.Error, key: "Static_members_cannot_reference_class_type_parameters_2302", message: "Static members cannot reference class type parameters." }, @@ -2474,7 +2548,7 @@ var ts; Cannot_invoke_an_expression_whose_type_lacks_a_call_signature: { code: 2349, category: ts.DiagnosticCategory.Error, key: "Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_2349", message: "Cannot invoke an expression whose type lacks a call signature." }, Only_a_void_function_can_be_called_with_the_new_keyword: { code: 2350, category: ts.DiagnosticCategory.Error, key: "Only_a_void_function_can_be_called_with_the_new_keyword_2350", message: "Only a void function can be called with the 'new' keyword." }, Cannot_use_new_with_an_expression_whose_type_lacks_a_call_or_construct_signature: { code: 2351, category: ts.DiagnosticCategory.Error, key: "Cannot_use_new_with_an_expression_whose_type_lacks_a_call_or_construct_signature_2351", message: "Cannot use 'new' with an expression whose type lacks a call or construct signature." }, - Neither_type_0_nor_type_1_is_assignable_to_the_other: { code: 2352, category: ts.DiagnosticCategory.Error, key: "Neither_type_0_nor_type_1_is_assignable_to_the_other_2352", message: "Neither type '{0}' nor type '{1}' is assignable to the other." }, + Type_0_cannot_be_converted_to_type_1: { code: 2352, category: ts.DiagnosticCategory.Error, key: "Type_0_cannot_be_converted_to_type_1_2352", message: "Type '{0}' cannot be converted to type '{1}'." }, Object_literal_may_only_specify_known_properties_and_0_does_not_exist_in_type_1: { code: 2353, category: ts.DiagnosticCategory.Error, key: "Object_literal_may_only_specify_known_properties_and_0_does_not_exist_in_type_1_2353", message: "Object literal may only specify known properties, and '{0}' does not exist in type '{1}'." }, No_best_common_type_exists_among_return_expressions: { code: 2354, category: ts.DiagnosticCategory.Error, key: "No_best_common_type_exists_among_return_expressions_2354", message: "No best common type exists among return expressions." }, A_function_whose_declared_type_is_neither_void_nor_any_must_return_a_value: { code: 2355, category: ts.DiagnosticCategory.Error, key: "A_function_whose_declared_type_is_neither_void_nor_any_must_return_a_value_2355", message: "A function whose declared type is neither 'void' nor 'any' must return a value." }, @@ -2488,6 +2562,7 @@ var ts; The_right_hand_side_of_an_arithmetic_operation_must_be_of_type_any_number_or_an_enum_type: { code: 2363, category: ts.DiagnosticCategory.Error, key: "The_right_hand_side_of_an_arithmetic_operation_must_be_of_type_any_number_or_an_enum_type_2363", message: "The right-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type." }, Invalid_left_hand_side_of_assignment_expression: { code: 2364, category: ts.DiagnosticCategory.Error, key: "Invalid_left_hand_side_of_assignment_expression_2364", message: "Invalid left-hand side of assignment expression." }, Operator_0_cannot_be_applied_to_types_1_and_2: { code: 2365, category: ts.DiagnosticCategory.Error, key: "Operator_0_cannot_be_applied_to_types_1_and_2_2365", message: "Operator '{0}' cannot be applied to types '{1}' and '{2}'." }, + Function_lacks_ending_return_statement_and_return_type_does_not_include_undefined: { code: 2366, category: ts.DiagnosticCategory.Error, key: "Function_lacks_ending_return_statement_and_return_type_does_not_include_undefined_2366", message: "Function lacks ending return statement and return type does not include 'undefined'." }, Type_parameter_name_cannot_be_0: { code: 2368, category: ts.DiagnosticCategory.Error, key: "Type_parameter_name_cannot_be_0_2368", message: "Type parameter name cannot be '{0}'" }, A_parameter_property_is_only_allowed_in_a_constructor_implementation: { code: 2369, category: ts.DiagnosticCategory.Error, key: "A_parameter_property_is_only_allowed_in_a_constructor_implementation_2369", message: "A parameter property is only allowed in a constructor implementation." }, A_rest_parameter_must_be_of_an_array_type: { code: 2370, category: ts.DiagnosticCategory.Error, key: "A_rest_parameter_must_be_of_an_array_type_2370", message: "A rest parameter must be of an array type." }, @@ -2568,6 +2643,7 @@ var ts; Cannot_redeclare_block_scoped_variable_0: { code: 2451, category: ts.DiagnosticCategory.Error, key: "Cannot_redeclare_block_scoped_variable_0_2451", message: "Cannot redeclare block-scoped variable '{0}'." }, An_enum_member_cannot_have_a_numeric_name: { code: 2452, category: ts.DiagnosticCategory.Error, key: "An_enum_member_cannot_have_a_numeric_name_2452", message: "An enum member cannot have a numeric name." }, The_type_argument_for_type_parameter_0_cannot_be_inferred_from_the_usage_Consider_specifying_the_type_arguments_explicitly: { code: 2453, category: ts.DiagnosticCategory.Error, key: "The_type_argument_for_type_parameter_0_cannot_be_inferred_from_the_usage_Consider_specifying_the_typ_2453", message: "The type argument for type parameter '{0}' cannot be inferred from the usage. Consider specifying the type arguments explicitly." }, + Variable_0_is_used_before_being_assigned: { code: 2454, category: ts.DiagnosticCategory.Error, key: "Variable_0_is_used_before_being_assigned_2454", message: "Variable '{0}' is used before being assigned." }, Type_argument_candidate_1_is_not_a_valid_type_argument_because_it_is_not_a_supertype_of_candidate_0: { code: 2455, category: ts.DiagnosticCategory.Error, key: "Type_argument_candidate_1_is_not_a_valid_type_argument_because_it_is_not_a_supertype_of_candidate_0_2455", message: "Type argument candidate '{1}' is not a valid type argument because it is not a supertype of candidate '{0}'." }, Type_alias_0_circularly_references_itself: { code: 2456, category: ts.DiagnosticCategory.Error, key: "Type_alias_0_circularly_references_itself_2456", message: "Type alias '{0}' circularly references itself." }, Type_alias_name_cannot_be_0: { code: 2457, category: ts.DiagnosticCategory.Error, key: "Type_alias_name_cannot_be_0_2457", message: "Type alias name cannot be '{0}'" }, @@ -2642,6 +2718,7 @@ var ts; A_module_cannot_have_multiple_default_exports: { code: 2528, category: ts.DiagnosticCategory.Error, key: "A_module_cannot_have_multiple_default_exports_2528", message: "A module cannot have multiple default exports." }, Duplicate_identifier_0_Compiler_reserves_name_1_in_top_level_scope_of_a_module_containing_async_functions: { code: 2529, category: ts.DiagnosticCategory.Error, key: "Duplicate_identifier_0_Compiler_reserves_name_1_in_top_level_scope_of_a_module_containing_async_func_2529", message: "Duplicate identifier '{0}'. Compiler reserves name '{1}' in top level scope of a module containing async functions." }, Property_0_is_incompatible_with_index_signature: { code: 2530, category: ts.DiagnosticCategory.Error, key: "Property_0_is_incompatible_with_index_signature_2530", message: "Property '{0}' is incompatible with index signature." }, + Object_is_possibly_null_or_undefined: { code: 2531, category: ts.DiagnosticCategory.Error, key: "Object_is_possibly_null_or_undefined_2531", message: "Object is possibly 'null' or 'undefined'." }, JSX_element_attributes_type_0_may_not_be_a_union_type: { code: 2600, category: ts.DiagnosticCategory.Error, key: "JSX_element_attributes_type_0_may_not_be_a_union_type_2600", message: "JSX element attributes type '{0}' may not be a union type." }, The_return_type_of_a_JSX_element_constructor_must_return_an_object_type: { code: 2601, category: ts.DiagnosticCategory.Error, key: "The_return_type_of_a_JSX_element_constructor_must_return_an_object_type_2601", message: "The return type of a JSX element constructor must return an object type." }, JSX_element_implicitly_has_type_any_because_the_global_type_JSX_Element_does_not_exist: { code: 2602, category: ts.DiagnosticCategory.Error, key: "JSX_element_implicitly_has_type_any_because_the_global_type_JSX_Element_does_not_exist_2602", message: "JSX element implicitly has type 'any' because the global type 'JSX.Element' does not exist." }, @@ -2677,6 +2754,15 @@ var ts; Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration: { code: 2674, category: ts.DiagnosticCategory.Error, key: "Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration_2674", message: "Constructor of class '{0}' is protected and only accessible within the class declaration." }, Cannot_extend_a_class_0_Class_constructor_is_marked_as_private: { code: 2675, category: ts.DiagnosticCategory.Error, key: "Cannot_extend_a_class_0_Class_constructor_is_marked_as_private_2675", message: "Cannot extend a class '{0}'. Class constructor is marked as private." }, Accessors_must_both_be_abstract_or_non_abstract: { code: 2676, category: ts.DiagnosticCategory.Error, key: "Accessors_must_both_be_abstract_or_non_abstract_2676", message: "Accessors must both be abstract or non-abstract." }, + A_type_predicate_s_type_must_be_assignable_to_its_parameter_s_type: { code: 2677, category: ts.DiagnosticCategory.Error, key: "A_type_predicate_s_type_must_be_assignable_to_its_parameter_s_type_2677", message: "A type predicate's type must be assignable to its parameter's type." }, + Type_0_is_not_comparable_to_type_1: { code: 2678, category: ts.DiagnosticCategory.Error, key: "Type_0_is_not_comparable_to_type_1_2678", message: "Type '{0}' is not comparable to type '{1}'." }, + A_function_that_is_called_with_the_new_keyword_cannot_have_a_this_type_that_is_void: { code: 2679, category: ts.DiagnosticCategory.Error, key: "A_function_that_is_called_with_the_new_keyword_cannot_have_a_this_type_that_is_void_2679", message: "A function that is called with the 'new' keyword cannot have a 'this' type that is 'void'." }, + A_this_parameter_must_be_the_first_parameter: { code: 2680, category: ts.DiagnosticCategory.Error, key: "A_this_parameter_must_be_the_first_parameter_2680", message: "A 'this' parameter must be the first parameter." }, + A_constructor_cannot_have_a_this_parameter: { code: 2681, category: ts.DiagnosticCategory.Error, key: "A_constructor_cannot_have_a_this_parameter_2681", message: "A constructor cannot have a 'this' parameter." }, + A_setter_cannot_have_a_this_parameter: { code: 2682, category: ts.DiagnosticCategory.Error, key: "A_setter_cannot_have_a_this_parameter_2682", message: "A setter cannot have a 'this' parameter." }, + this_implicitly_has_type_any_because_it_does_not_have_a_type_annotation: { code: 2683, category: ts.DiagnosticCategory.Error, key: "this_implicitly_has_type_any_because_it_does_not_have_a_type_annotation_2683", message: "'this' implicitly has type 'any' because it does not have a type annotation." }, + The_this_context_of_type_0_is_not_assignable_to_method_s_this_of_type_1: { code: 2684, category: ts.DiagnosticCategory.Error, key: "The_this_context_of_type_0_is_not_assignable_to_method_s_this_of_type_1_2684", message: "The 'this' context of type '{0}' is not assignable to method's 'this' of type '{1}'." }, + The_this_types_of_each_signature_are_incompatible: { code: 2685, category: ts.DiagnosticCategory.Error, key: "The_this_types_of_each_signature_are_incompatible_2685", message: "The 'this' types of each signature are incompatible." }, Import_declaration_0_is_using_private_name_1: { code: 4000, category: ts.DiagnosticCategory.Error, key: "Import_declaration_0_is_using_private_name_1_4000", message: "Import declaration '{0}' is using private name '{1}'." }, Type_parameter_0_of_exported_class_has_or_is_using_private_name_1: { code: 4002, category: ts.DiagnosticCategory.Error, key: "Type_parameter_0_of_exported_class_has_or_is_using_private_name_1_4002", message: "Type parameter '{0}' of exported class has or is using private name '{1}'." }, Type_parameter_0_of_exported_interface_has_or_is_using_private_name_1: { code: 4004, category: ts.DiagnosticCategory.Error, key: "Type_parameter_0_of_exported_interface_has_or_is_using_private_name_1_4004", message: "Type parameter '{0}' of exported interface has or is using private name '{1}'." }, @@ -2747,6 +2833,7 @@ var ts; Parameter_0_of_exported_function_has_or_is_using_private_name_1: { code: 4078, category: ts.DiagnosticCategory.Error, key: "Parameter_0_of_exported_function_has_or_is_using_private_name_1_4078", message: "Parameter '{0}' of exported function has or is using private name '{1}'." }, Exported_type_alias_0_has_or_is_using_private_name_1: { code: 4081, category: ts.DiagnosticCategory.Error, key: "Exported_type_alias_0_has_or_is_using_private_name_1_4081", message: "Exported type alias '{0}' has or is using private name '{1}'." }, Default_export_of_the_module_has_or_is_using_private_name_0: { code: 4082, category: ts.DiagnosticCategory.Error, key: "Default_export_of_the_module_has_or_is_using_private_name_0_4082", message: "Default export of the module has or is using private name '{0}'." }, + Conflicting_library_definitions_for_0_found_at_1_and_2_Copy_the_correct_file_to_the_typings_folder_to_resolve_this_conflict: { code: 4090, category: ts.DiagnosticCategory.Message, key: "Conflicting_library_definitions_for_0_found_at_1_and_2_Copy_the_correct_file_to_the_typings_folder_t_4090", message: "Conflicting library definitions for '{0}' found at '{1}' and '{2}'. Copy the correct file to the 'typings' folder to resolve this conflict." }, The_current_host_does_not_support_the_0_option: { code: 5001, category: ts.DiagnosticCategory.Error, key: "The_current_host_does_not_support_the_0_option_5001", message: "The current host does not support the '{0}' option." }, Cannot_find_the_common_subdirectory_path_for_the_input_files: { code: 5009, category: ts.DiagnosticCategory.Error, key: "Cannot_find_the_common_subdirectory_path_for_the_input_files_5009", message: "Cannot find the common subdirectory path for the input files." }, Cannot_read_file_0_Colon_1: { code: 5012, category: ts.DiagnosticCategory.Error, key: "Cannot_read_file_0_Colon_1_5012", message: "Cannot read file '{0}': {1}" }, @@ -2771,8 +2858,8 @@ 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" }, 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." }, - Specifies_the_location_where_debugger_should_locate_map_files_instead_of_generated_locations: { code: 6003, category: ts.DiagnosticCategory.Message, key: "Specifies_the_location_where_debugger_should_locate_map_files_instead_of_generated_locations_6003", message: "Specifies the location where debugger should locate map files instead of generated locations." }, - Specifies_the_location_where_debugger_should_locate_TypeScript_files_instead_of_source_locations: { code: 6004, category: ts.DiagnosticCategory.Message, key: "Specifies_the_location_where_debugger_should_locate_TypeScript_files_instead_of_source_locations_6004", message: "Specifies the location where debugger should locate TypeScript files instead of source locations." }, + 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." }, + Specify_the_location_where_debugger_should_locate_TypeScript_files_instead_of_source_locations: { code: 6004, category: ts.DiagnosticCategory.Message, key: "Specify_the_location_where_debugger_should_locate_TypeScript_files_instead_of_source_locations_6004", message: "Specify the location where debugger should locate TypeScript files instead of source locations." }, Watch_input_files: { code: 6005, category: ts.DiagnosticCategory.Message, key: "Watch_input_files_6005", message: "Watch input files." }, Redirect_output_structure_to_the_directory: { code: 6006, category: ts.DiagnosticCategory.Message, key: "Redirect_output_structure_to_the_directory_6006", message: "Redirect output structure to the directory." }, Do_not_erase_const_enum_declarations_in_generated_code: { code: 6007, category: ts.DiagnosticCategory.Message, key: "Do_not_erase_const_enum_declarations_in_generated_code_6007", message: "Do not erase const enum declarations in generated code." }, @@ -2780,7 +2867,7 @@ var ts; Do_not_emit_comments_to_output: { code: 6009, category: ts.DiagnosticCategory.Message, key: "Do_not_emit_comments_to_output_6009", message: "Do not emit comments to output." }, Do_not_emit_outputs: { code: 6010, category: ts.DiagnosticCategory.Message, key: "Do_not_emit_outputs_6010", message: "Do not emit outputs." }, Allow_default_imports_from_modules_with_no_default_export_This_does_not_affect_code_emit_just_typechecking: { code: 6011, category: ts.DiagnosticCategory.Message, key: "Allow_default_imports_from_modules_with_no_default_export_This_does_not_affect_code_emit_just_typech_6011", message: "Allow default imports from modules with no default export. This does not affect code emit, just typechecking." }, - Specify_ECMAScript_target_version_Colon_ES3_default_ES5_or_ES2015_experimental: { code: 6015, category: ts.DiagnosticCategory.Message, key: "Specify_ECMAScript_target_version_Colon_ES3_default_ES5_or_ES2015_experimental_6015", message: "Specify ECMAScript target version: 'ES3' (default), 'ES5', or 'ES2015' (experimental)" }, + Specify_ECMAScript_target_version_Colon_ES3_default_ES5_or_ES2015: { code: 6015, category: ts.DiagnosticCategory.Message, key: "Specify_ECMAScript_target_version_Colon_ES3_default_ES5_or_ES2015_6015", message: "Specify ECMAScript target version: 'ES3' (default), 'ES5', or 'ES2015'" }, Specify_module_code_generation_Colon_commonjs_amd_system_umd_or_es2015: { code: 6016, category: ts.DiagnosticCategory.Message, key: "Specify_module_code_generation_Colon_commonjs_amd_system_umd_or_es2015_6016", message: "Specify module code generation: 'commonjs', 'amd', 'system', 'umd' or 'es2015'" }, Print_this_message: { code: 6017, category: ts.DiagnosticCategory.Message, key: "Print_this_message_6017", message: "Print this message." }, Print_the_compiler_s_version: { code: 6019, category: ts.DiagnosticCategory.Message, key: "Print_the_compiler_s_version_6019", message: "Print the compiler's version." }, @@ -2802,8 +2889,7 @@ var ts; Generates_corresponding_map_file: { code: 6043, category: ts.DiagnosticCategory.Message, key: "Generates_corresponding_map_file_6043", message: "Generates corresponding '.map' file." }, Compiler_option_0_expects_an_argument: { code: 6044, category: ts.DiagnosticCategory.Error, key: "Compiler_option_0_expects_an_argument_6044", message: "Compiler option '{0}' expects an argument." }, Unterminated_quoted_string_in_response_file_0: { code: 6045, category: ts.DiagnosticCategory.Error, key: "Unterminated_quoted_string_in_response_file_0_6045", message: "Unterminated quoted string in response file '{0}'." }, - Argument_for_module_option_must_be_commonjs_amd_system_umd_es2015_or_none: { code: 6046, category: ts.DiagnosticCategory.Error, key: "Argument_for_module_option_must_be_commonjs_amd_system_umd_es2015_or_none_6046", message: "Argument for '--module' option must be 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'none'." }, - Argument_for_target_option_must_be_ES3_ES5_or_ES2015: { code: 6047, category: ts.DiagnosticCategory.Error, key: "Argument_for_target_option_must_be_ES3_ES5_or_ES2015_6047", message: "Argument for '--target' option must be 'ES3', 'ES5', or 'ES2015'." }, + Argument_for_0_option_must_be_Colon_1: { code: 6046, category: ts.DiagnosticCategory.Error, key: "Argument_for_0_option_must_be_Colon_1_6046", message: "Argument for '{0}' option must be: {1}" }, Locale_must_be_of_the_form_language_or_language_territory_For_example_0_or_1: { code: 6048, category: ts.DiagnosticCategory.Error, key: "Locale_must_be_of_the_form_language_or_language_territory_For_example_0_or_1_6048", message: "Locale must be of the form or -. For example '{0}' or '{1}'." }, Unsupported_locale_0: { code: 6049, category: ts.DiagnosticCategory.Error, key: "Unsupported_locale_0_6049", message: "Unsupported locale '{0}'." }, Unable_to_open_file_0: { code: 6050, category: ts.DiagnosticCategory.Error, key: "Unable_to_open_file_0_6050", message: "Unable to open file '{0}'." }, @@ -2813,17 +2899,15 @@ var ts; File_0_has_unsupported_extension_The_only_supported_extensions_are_1: { code: 6054, category: ts.DiagnosticCategory.Error, key: "File_0_has_unsupported_extension_The_only_supported_extensions_are_1_6054", message: "File '{0}' has unsupported extension. The only supported extensions are {1}." }, Suppress_noImplicitAny_errors_for_indexing_objects_lacking_index_signatures: { code: 6055, category: ts.DiagnosticCategory.Message, key: "Suppress_noImplicitAny_errors_for_indexing_objects_lacking_index_signatures_6055", message: "Suppress noImplicitAny errors for indexing objects lacking index signatures." }, Do_not_emit_declarations_for_code_that_has_an_internal_annotation: { code: 6056, category: ts.DiagnosticCategory.Message, key: "Do_not_emit_declarations_for_code_that_has_an_internal_annotation_6056", message: "Do not emit declarations for code that has an '@internal' annotation." }, - Specifies_the_root_directory_of_input_files_Use_to_control_the_output_directory_structure_with_outDir: { code: 6058, category: ts.DiagnosticCategory.Message, key: "Specifies_the_root_directory_of_input_files_Use_to_control_the_output_directory_structure_with_outDi_6058", message: "Specifies the root directory of input files. Use to control the output directory structure with --outDir." }, + Specify_the_root_directory_of_input_files_Use_to_control_the_output_directory_structure_with_outDir: { code: 6058, category: ts.DiagnosticCategory.Message, key: "Specify_the_root_directory_of_input_files_Use_to_control_the_output_directory_structure_with_outDir_6058", message: "Specify the root directory of input files. Use to control the output directory structure with --outDir." }, File_0_is_not_under_rootDir_1_rootDir_is_expected_to_contain_all_source_files: { code: 6059, category: ts.DiagnosticCategory.Error, key: "File_0_is_not_under_rootDir_1_rootDir_is_expected_to_contain_all_source_files_6059", message: "File '{0}' is not under 'rootDir' '{1}'. 'rootDir' is expected to contain all source files." }, - Specifies_the_end_of_line_sequence_to_be_used_when_emitting_files_Colon_CRLF_dos_or_LF_unix: { code: 6060, category: ts.DiagnosticCategory.Message, key: "Specifies_the_end_of_line_sequence_to_be_used_when_emitting_files_Colon_CRLF_dos_or_LF_unix_6060", message: "Specifies the end of line sequence to be used when emitting files: 'CRLF' (dos) or 'LF' (unix)." }, + Specify_the_end_of_line_sequence_to_be_used_when_emitting_files_Colon_CRLF_dos_or_LF_unix: { code: 6060, category: ts.DiagnosticCategory.Message, key: "Specify_the_end_of_line_sequence_to_be_used_when_emitting_files_Colon_CRLF_dos_or_LF_unix_6060", message: "Specify the end of line sequence to be used when emitting files: 'CRLF' (dos) or 'LF' (unix)." }, NEWLINE: { code: 6061, category: ts.DiagnosticCategory.Message, key: "NEWLINE_6061", message: "NEWLINE" }, - Argument_for_newLine_option_must_be_CRLF_or_LF: { code: 6062, category: ts.DiagnosticCategory.Error, key: "Argument_for_newLine_option_must_be_CRLF_or_LF_6062", message: "Argument for '--newLine' option must be 'CRLF' or 'LF'." }, - Argument_for_moduleResolution_option_must_be_node_or_classic: { code: 6063, category: ts.DiagnosticCategory.Error, key: "Argument_for_moduleResolution_option_must_be_node_or_classic_6063", message: "Argument for '--moduleResolution' option must be 'node' or 'classic'." }, Option_0_can_only_be_specified_in_tsconfig_json_file: { code: 6064, category: ts.DiagnosticCategory.Error, key: "Option_0_can_only_be_specified_in_tsconfig_json_file_6064", message: "Option '{0}' can only be specified in 'tsconfig.json' file." }, Enables_experimental_support_for_ES7_decorators: { code: 6065, category: ts.DiagnosticCategory.Message, key: "Enables_experimental_support_for_ES7_decorators_6065", message: "Enables experimental support for ES7 decorators." }, Enables_experimental_support_for_emitting_type_metadata_for_decorators: { code: 6066, category: ts.DiagnosticCategory.Message, key: "Enables_experimental_support_for_emitting_type_metadata_for_decorators_6066", message: "Enables experimental support for emitting type metadata for decorators." }, Enables_experimental_support_for_ES7_async_functions: { code: 6068, category: ts.DiagnosticCategory.Message, key: "Enables_experimental_support_for_ES7_async_functions_6068", message: "Enables experimental support for ES7 async functions." }, - Specifies_module_resolution_strategy_Colon_node_Node_js_or_classic_TypeScript_pre_1_6: { code: 6069, category: ts.DiagnosticCategory.Message, key: "Specifies_module_resolution_strategy_Colon_node_Node_js_or_classic_TypeScript_pre_1_6_6069", message: "Specifies module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6)." }, + Specify_module_resolution_strategy_Colon_node_Node_js_or_classic_TypeScript_pre_1_6: { code: 6069, category: ts.DiagnosticCategory.Message, key: "Specify_module_resolution_strategy_Colon_node_Node_js_or_classic_TypeScript_pre_1_6_6069", message: "Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6)." }, Initializes_a_TypeScript_project_and_creates_a_tsconfig_json_file: { code: 6070, category: ts.DiagnosticCategory.Message, key: "Initializes_a_TypeScript_project_and_creates_a_tsconfig_json_file_6070", message: "Initializes a TypeScript project and creates a tsconfig.json file." }, Successfully_created_a_tsconfig_json_file: { code: 6071, category: ts.DiagnosticCategory.Message, key: "Successfully_created_a_tsconfig_json_file_6071", message: "Successfully created a tsconfig.json file." }, Suppress_excess_property_checks_for_object_literals: { code: 6072, category: ts.DiagnosticCategory.Message, key: "Suppress_excess_property_checks_for_object_literals_6072", message: "Suppress excess property checks for object literals." }, @@ -2833,12 +2917,12 @@ var ts; Report_errors_for_fallthrough_cases_in_switch_statement: { code: 6076, category: ts.DiagnosticCategory.Message, key: "Report_errors_for_fallthrough_cases_in_switch_statement_6076", message: "Report errors for fallthrough cases in switch statement." }, Do_not_report_errors_on_unreachable_code: { code: 6077, category: ts.DiagnosticCategory.Message, key: "Do_not_report_errors_on_unreachable_code_6077", message: "Do not report errors on unreachable code." }, Disallow_inconsistently_cased_references_to_the_same_file: { code: 6078, category: ts.DiagnosticCategory.Message, key: "Disallow_inconsistently_cased_references_to_the_same_file_6078", message: "Disallow inconsistently-cased references to the same file." }, + Specify_library_files_to_be_included_in_the_compilation_Colon: { code: 6079, category: ts.DiagnosticCategory.Message, key: "Specify_library_files_to_be_included_in_the_compilation_Colon_6079", message: "Specify library files to be included in the compilation: " }, Specify_JSX_code_generation_Colon_preserve_or_react: { code: 6080, category: ts.DiagnosticCategory.Message, key: "Specify_JSX_code_generation_Colon_preserve_or_react_6080", message: "Specify JSX code generation: 'preserve' or 'react'" }, - Argument_for_jsx_must_be_preserve_or_react: { code: 6081, category: ts.DiagnosticCategory.Message, key: "Argument_for_jsx_must_be_preserve_or_react_6081", message: "Argument for '--jsx' must be 'preserve' or 'react'." }, Only_amd_and_system_modules_are_supported_alongside_0: { code: 6082, category: ts.DiagnosticCategory.Error, key: "Only_amd_and_system_modules_are_supported_alongside_0_6082", message: "Only 'amd' and 'system' modules are supported alongside --{0}." }, Base_directory_to_resolve_non_absolute_module_names: { code: 6083, category: ts.DiagnosticCategory.Message, key: "Base_directory_to_resolve_non_absolute_module_names_6083", message: "Base directory to resolve non-absolute module names." }, - Specifies_the_object_invoked_for_createElement_and_spread_when_targeting_react_JSX_emit: { code: 6084, category: ts.DiagnosticCategory.Message, key: "Specifies_the_object_invoked_for_createElement_and_spread_when_targeting_react_JSX_emit_6084", message: "Specifies the object invoked for createElement and __spread when targeting 'react' JSX emit" }, - Enable_tracing_of_the_module_resolution_process: { code: 6085, category: ts.DiagnosticCategory.Message, key: "Enable_tracing_of_the_module_resolution_process_6085", message: "Enable tracing of the module resolution process." }, + Specify_the_object_invoked_for_createElement_and_spread_when_targeting_react_JSX_emit: { code: 6084, category: ts.DiagnosticCategory.Message, key: "Specify_the_object_invoked_for_createElement_and_spread_when_targeting_react_JSX_emit_6084", message: "Specify the object invoked for createElement and __spread when targeting 'react' JSX emit" }, + Enable_tracing_of_the_name_resolution_process: { code: 6085, category: ts.DiagnosticCategory.Message, key: "Enable_tracing_of_the_name_resolution_process_6085", message: "Enable tracing of the name resolution process." }, Resolving_module_0_from_1: { code: 6086, category: ts.DiagnosticCategory.Message, key: "Resolving_module_0_from_1_6086", message: "======== Resolving module '{0}' from '{1}'. ========" }, Explicitly_specified_module_resolution_kind_Colon_0: { code: 6087, category: ts.DiagnosticCategory.Message, key: "Explicitly_specified_module_resolution_kind_Colon_0_6087", message: "Explicitly specified module resolution kind: '{0}'." }, Module_resolution_kind_is_not_specified_using_0: { code: 6088, category: ts.DiagnosticCategory.Message, key: "Module_resolution_kind_is_not_specified_using_0_6088", message: "Module resolution kind is not specified, using '{0}'." }, @@ -2850,15 +2934,15 @@ var ts; Resolving_module_name_0_relative_to_base_url_1_2: { code: 6094, category: ts.DiagnosticCategory.Message, key: "Resolving_module_name_0_relative_to_base_url_1_2_6094", message: "Resolving module name '{0}' relative to base url '{1}' - '{2}'." }, Loading_module_as_file_Slash_folder_candidate_module_location_0: { code: 6095, category: ts.DiagnosticCategory.Message, key: "Loading_module_as_file_Slash_folder_candidate_module_location_0_6095", message: "Loading module as file / folder, candidate module location '{0}'." }, File_0_does_not_exist: { code: 6096, category: ts.DiagnosticCategory.Message, key: "File_0_does_not_exist_6096", message: "File '{0}' does not exist." }, - File_0_exist_use_it_as_a_module_resolution_result: { code: 6097, category: ts.DiagnosticCategory.Message, key: "File_0_exist_use_it_as_a_module_resolution_result_6097", message: "File '{0}' exist - use it as a module resolution result." }, + File_0_exist_use_it_as_a_name_resolution_result: { code: 6097, category: ts.DiagnosticCategory.Message, key: "File_0_exist_use_it_as_a_name_resolution_result_6097", message: "File '{0}' exist - use it as a name resolution result." }, Loading_module_0_from_node_modules_folder: { code: 6098, category: ts.DiagnosticCategory.Message, key: "Loading_module_0_from_node_modules_folder_6098", message: "Loading module '{0}' from 'node_modules' folder." }, Found_package_json_at_0: { code: 6099, category: ts.DiagnosticCategory.Message, key: "Found_package_json_at_0_6099", message: "Found 'package.json' at '{0}'." }, - package_json_does_not_have_typings_field: { code: 6100, category: ts.DiagnosticCategory.Message, key: "package_json_does_not_have_typings_field_6100", message: "'package.json' does not have 'typings' field." }, - package_json_has_typings_field_0_that_references_1: { code: 6101, category: ts.DiagnosticCategory.Message, key: "package_json_has_typings_field_0_that_references_1_6101", message: "'package.json' has 'typings' field '{0}' that references '{1}'." }, + package_json_does_not_have_types_field: { code: 6100, category: ts.DiagnosticCategory.Message, key: "package_json_does_not_have_types_field_6100", message: "'package.json' does not have 'types' field." }, + package_json_has_0_field_1_that_references_2: { code: 6101, category: ts.DiagnosticCategory.Message, key: "package_json_has_0_field_1_that_references_2_6101", message: "'package.json' has '{0}' field '{1}' that references '{2}'." }, Allow_javascript_files_to_be_compiled: { code: 6102, category: ts.DiagnosticCategory.Message, key: "Allow_javascript_files_to_be_compiled_6102", message: "Allow javascript files to be compiled." }, Option_0_should_have_array_of_strings_as_a_value: { code: 6103, category: ts.DiagnosticCategory.Error, key: "Option_0_should_have_array_of_strings_as_a_value_6103", message: "Option '{0}' should have array of strings as a value." }, Checking_if_0_is_the_longest_matching_prefix_for_1_2: { code: 6104, category: ts.DiagnosticCategory.Message, key: "Checking_if_0_is_the_longest_matching_prefix_for_1_2_6104", message: "Checking if '{0}' is the longest matching prefix for '{1}' - '{2}'." }, - Expected_type_of_typings_field_in_package_json_to_be_string_got_0: { code: 6105, category: ts.DiagnosticCategory.Message, key: "Expected_type_of_typings_field_in_package_json_to_be_string_got_0_6105", message: "Expected type of 'typings' field in 'package.json' to be 'string', got '{0}'." }, + Expected_type_of_0_field_in_package_json_to_be_string_got_1: { code: 6105, category: ts.DiagnosticCategory.Message, key: "Expected_type_of_0_field_in_package_json_to_be_string_got_1_6105", message: "Expected type of '{0}' field in 'package.json' to be 'string', got '{1}'." }, baseUrl_option_is_set_to_0_using_this_value_to_resolve_non_relative_module_name_1: { code: 6106, category: ts.DiagnosticCategory.Message, key: "baseUrl_option_is_set_to_0_using_this_value_to_resolve_non_relative_module_name_1_6106", message: "'baseUrl' option is set to '{0}', using this value to resolve non-relative module name '{1}'" }, rootDirs_option_is_set_using_it_to_resolve_relative_module_name_0: { code: 6107, category: ts.DiagnosticCategory.Message, key: "rootDirs_option_is_set_using_it_to_resolve_relative_module_name_0_6107", message: "'rootDirs' option is set, using it to resolve relative module name '{0}'" }, Longest_matching_prefix_for_0_is_1: { code: 6108, category: ts.DiagnosticCategory.Message, key: "Longest_matching_prefix_for_0_is_1_6108", message: "Longest matching prefix for '{0}' is '{1}'" }, @@ -2866,6 +2950,22 @@ var ts; Trying_other_entries_in_rootDirs: { code: 6110, category: ts.DiagnosticCategory.Message, key: "Trying_other_entries_in_rootDirs_6110", message: "Trying other entries in 'rootDirs'" }, Module_resolution_using_rootDirs_has_failed: { code: 6111, category: ts.DiagnosticCategory.Message, key: "Module_resolution_using_rootDirs_has_failed_6111", message: "Module resolution using 'rootDirs' has failed" }, Do_not_emit_use_strict_directives_in_module_output: { code: 6112, category: ts.DiagnosticCategory.Message, key: "Do_not_emit_use_strict_directives_in_module_output_6112", message: "Do not emit 'use strict' directives in module output." }, + Enable_strict_null_checks: { code: 6113, category: ts.DiagnosticCategory.Message, key: "Enable_strict_null_checks_6113", message: "Enable strict null checks." }, + Unknown_option_excludes_Did_you_mean_exclude: { code: 6114, category: ts.DiagnosticCategory.Error, key: "Unknown_option_excludes_Did_you_mean_exclude_6114", message: "Unknown option 'excludes'. Did you mean 'exclude'?" }, + Raise_error_on_this_expressions_with_an_implied_any_type: { code: 6115, category: ts.DiagnosticCategory.Message, key: "Raise_error_on_this_expressions_with_an_implied_any_type_6115", message: "Raise error on 'this' expressions with an implied 'any' type." }, + Resolving_type_reference_directive_0_containing_file_1_root_directory_2: { code: 6116, category: ts.DiagnosticCategory.Message, key: "Resolving_type_reference_directive_0_containing_file_1_root_directory_2_6116", message: "======== Resolving type reference directive '{0}', containing file '{1}', root directory '{2}'. ========" }, + Resolving_using_primary_search_paths: { code: 6117, category: ts.DiagnosticCategory.Message, key: "Resolving_using_primary_search_paths_6117", message: "Resolving using primary search paths..." }, + Resolving_from_node_modules_folder: { code: 6118, category: ts.DiagnosticCategory.Message, key: "Resolving_from_node_modules_folder_6118", message: "Resolving from node_modules folder..." }, + Type_reference_directive_0_was_successfully_resolved_to_1_primary_Colon_2: { code: 6119, category: ts.DiagnosticCategory.Message, key: "Type_reference_directive_0_was_successfully_resolved_to_1_primary_Colon_2_6119", message: "======== Type reference directive '{0}' was successfully resolved to '{1}', primary: {2}. ========" }, + Type_reference_directive_0_was_not_resolved: { code: 6120, category: ts.DiagnosticCategory.Message, key: "Type_reference_directive_0_was_not_resolved_6120", message: "======== Type reference directive '{0}' was not resolved. ========" }, + Resolving_with_primary_search_path_0: { code: 6121, category: ts.DiagnosticCategory.Message, key: "Resolving_with_primary_search_path_0_6121", message: "Resolving with primary search path '{0}'" }, + Root_directory_cannot_be_determined_skipping_primary_search_paths: { code: 6122, category: ts.DiagnosticCategory.Message, key: "Root_directory_cannot_be_determined_skipping_primary_search_paths_6122", message: "Root directory cannot be determined, skipping primary search paths." }, + Resolving_type_reference_directive_0_containing_file_1_root_directory_not_set: { code: 6123, category: ts.DiagnosticCategory.Message, key: "Resolving_type_reference_directive_0_containing_file_1_root_directory_not_set_6123", message: "======== Resolving type reference directive '{0}', containing file '{1}', root directory not set. ========" }, + Type_declaration_files_to_be_included_in_compilation: { code: 6124, category: ts.DiagnosticCategory.Message, key: "Type_declaration_files_to_be_included_in_compilation_6124", message: "Type declaration files to be included in compilation." }, + Looking_up_in_node_modules_folder_initial_location_0: { code: 6125, category: ts.DiagnosticCategory.Message, key: "Looking_up_in_node_modules_folder_initial_location_0_6125", message: "Looking up in 'node_modules' folder, initial location '{0}'" }, + Containing_file_is_not_specified_and_root_directory_cannot_be_determined_skipping_lookup_in_node_modules_folder: { code: 6126, category: ts.DiagnosticCategory.Message, key: "Containing_file_is_not_specified_and_root_directory_cannot_be_determined_skipping_lookup_in_node_mod_6126", message: "Containing file is not specified and root directory cannot be determined, skipping lookup in 'node_modules' folder." }, + Resolving_type_reference_directive_0_containing_file_not_set_root_directory_1: { code: 6127, category: ts.DiagnosticCategory.Message, key: "Resolving_type_reference_directive_0_containing_file_not_set_root_directory_1_6127", message: "======== Resolving type reference directive '{0}', containing file not set, root directory '{1}'. ========" }, + Resolving_type_reference_directive_0_containing_file_not_set_root_directory_not_set: { code: 6128, category: ts.DiagnosticCategory.Message, key: "Resolving_type_reference_directive_0_containing_file_not_set_root_directory_not_set_6128", message: "======== Resolving type reference directive '{0}', containing file not set, root directory not set. ========" }, 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." }, @@ -2888,6 +2988,7 @@ var ts; Unused_label: { code: 7028, category: ts.DiagnosticCategory.Error, key: "Unused_label_7028", message: "Unused label." }, Fallthrough_case_in_switch: { code: 7029, category: ts.DiagnosticCategory.Error, key: "Fallthrough_case_in_switch_7029", message: "Fallthrough case in switch." }, Not_all_code_paths_return_a_value: { code: 7030, category: ts.DiagnosticCategory.Error, key: "Not_all_code_paths_return_a_value_7030", message: "Not all code paths return a value." }, + Binding_element_0_implicitly_has_an_1_type: { code: 7031, category: ts.DiagnosticCategory.Error, key: "Binding_element_0_implicitly_has_an_1_type_7031", message: "Binding element '{0}' implicitly has an '{1}' type." }, You_cannot_rename_this_element: { code: 8000, category: ts.DiagnosticCategory.Error, key: "You_cannot_rename_this_element_8000", message: "You cannot rename this element." }, You_cannot_rename_elements_that_are_defined_in_the_standard_TypeScript_library: { code: 8001, category: ts.DiagnosticCategory.Error, key: "You_cannot_rename_elements_that_are_defined_in_the_standard_TypeScript_library_8001", message: "You cannot rename elements that are defined in the standard TypeScript library." }, import_can_only_be_used_in_a_ts_file: { code: 8002, category: ts.DiagnosticCategory.Error, key: "import_can_only_be_used_in_a_ts_file_8002", message: "'import ... =' can only be used in a .ts file." }, @@ -2915,7 +3016,8 @@ var ts; An_unary_expression_with_the_0_operator_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_expression_Consider_enclosing_the_expression_in_parentheses: { code: 17006, category: ts.DiagnosticCategory.Error, key: "An_unary_expression_with_the_0_operator_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_ex_17006", message: "An unary expression with the '{0}' operator is not allowed in the left-hand side of an exponentiation expression. Consider enclosing the expression in parentheses." }, A_type_assertion_expression_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_expression_Consider_enclosing_the_expression_in_parentheses: { code: 17007, category: ts.DiagnosticCategory.Error, key: "A_type_assertion_expression_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_expression_Con_17007", message: "A type assertion expression is not allowed in the left-hand side of an exponentiation expression. Consider enclosing the expression in parentheses." }, JSX_element_0_has_no_corresponding_closing_tag: { code: 17008, category: ts.DiagnosticCategory.Error, key: "JSX_element_0_has_no_corresponding_closing_tag_17008", message: "JSX element '{0}' has no corresponding closing tag." }, - super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class: { code: 17009, category: ts.DiagnosticCategory.Error, key: "super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class_17009", message: "'super' must be called before accessing 'this' in the constructor of a derived class." } + super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class: { code: 17009, category: ts.DiagnosticCategory.Error, key: "super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class_17009", message: "'super' must be called before accessing 'this' in the constructor of a derived class." }, + Unknown_typing_option_0: { code: 17010, category: ts.DiagnosticCategory.Error, key: "Unknown_typing_option_0_17010", message: "Unknown typing option '{0}'." } }; })(ts || (ts = {})); /// @@ -2951,7 +3053,7 @@ var ts; "false": 84 /* FalseKeyword */, "finally": 85 /* FinallyKeyword */, "for": 86 /* ForKeyword */, - "from": 134 /* FromKeyword */, + "from": 135 /* FromKeyword */, "function": 87 /* FunctionKeyword */, "get": 123 /* GetKeyword */, "if": 88 /* IfKeyword */, @@ -2973,7 +3075,7 @@ var ts; "public": 112 /* PublicKeyword */, "readonly": 127 /* ReadonlyKeyword */, "require": 128 /* RequireKeyword */, - "global": 135 /* GlobalKeyword */, + "global": 136 /* GlobalKeyword */, "return": 94 /* ReturnKeyword */, "set": 130 /* SetKeyword */, "static": 113 /* StaticKeyword */, @@ -2987,6 +3089,7 @@ var ts; "try": 100 /* TryKeyword */, "type": 133 /* TypeKeyword */, "typeof": 101 /* TypeOfKeyword */, + "undefined": 134 /* UndefinedKeyword */, "var": 102 /* VarKeyword */, "void": 103 /* VoidKeyword */, "while": 104 /* WhileKeyword */, @@ -2994,7 +3097,7 @@ var ts; "yield": 114 /* YieldKeyword */, "async": 118 /* AsyncKeyword */, "await": 119 /* AwaitKeyword */, - "of": 136 /* OfKeyword */, + "of": 137 /* OfKeyword */, "{": 15 /* OpenBraceToken */, "}": 16 /* CloseBraceToken */, "(": 17 /* OpenParenToken */, @@ -4412,7 +4515,7 @@ var ts; break; } } - return token = 240 /* JsxText */; + return token = 243 /* JsxText */; } // Scans a JSX identifier; these differ from normal identifiers in that // they allow dashes @@ -4643,6 +4746,41 @@ var ts; sourceFile.resolvedModules[moduleNameText] = resolvedModule; } ts.setResolvedModule = setResolvedModule; + function setResolvedTypeReferenceDirective(sourceFile, typeReferenceDirectiveName, resolvedTypeReferenceDirective) { + if (!sourceFile.resolvedTypeReferenceDirectiveNames) { + sourceFile.resolvedTypeReferenceDirectiveNames = {}; + } + sourceFile.resolvedTypeReferenceDirectiveNames[typeReferenceDirectiveName] = resolvedTypeReferenceDirective; + } + ts.setResolvedTypeReferenceDirective = setResolvedTypeReferenceDirective; + /* @internal */ + function moduleResolutionIsEqualTo(oldResolution, newResolution) { + return oldResolution.resolvedFileName === newResolution.resolvedFileName && oldResolution.isExternalLibraryImport === newResolution.isExternalLibraryImport; + } + ts.moduleResolutionIsEqualTo = moduleResolutionIsEqualTo; + /* @internal */ + function typeDirectiveIsEqualTo(oldResolution, newResolution) { + return oldResolution.resolvedFileName === newResolution.resolvedFileName && oldResolution.primary === newResolution.primary; + } + ts.typeDirectiveIsEqualTo = typeDirectiveIsEqualTo; + /* @internal */ + function hasChangesInResolutions(names, newResolutions, oldResolutions, comparer) { + if (names.length !== newResolutions.length) { + return false; + } + for (var i = 0; i < names.length; i++) { + var newResolution = newResolutions[i]; + var oldResolution = oldResolutions && ts.hasProperty(oldResolutions, names[i]) ? oldResolutions[names[i]] : undefined; + var changed = oldResolution + ? !newResolution || !comparer(oldResolution, newResolution) + : newResolution; + if (changed) { + return true; + } + } + return false; + } + ts.hasChangesInResolutions = hasChangesInResolutions; // Returns true if this node contains a parse error anywhere underneath it. function containsParseError(node) { aggregateChildData(node); @@ -4667,7 +4805,7 @@ var ts; } } function getSourceFileOfNode(node) { - while (node && node.kind !== 252 /* SourceFile */) { + while (node && node.kind !== 255 /* SourceFile */) { node = node.parent; } return node; @@ -4675,11 +4813,11 @@ var ts; ts.getSourceFileOfNode = getSourceFileOfNode; function isStatementWithLocals(node) { switch (node.kind) { - case 196 /* Block */: - case 224 /* CaseBlock */: - case 203 /* ForStatement */: - case 204 /* ForInStatement */: - case 205 /* ForOfStatement */: + case 198 /* Block */: + case 226 /* CaseBlock */: + case 205 /* ForStatement */: + case 206 /* ForInStatement */: + case 207 /* ForOfStatement */: return true; } return false; @@ -4701,6 +4839,32 @@ var ts; return node.pos; } ts.getStartPosOfNode = getStartPosOfNode; + function getEndLinePosition(line, sourceFile) { + ts.Debug.assert(line >= 0); + var lineStarts = ts.getLineStarts(sourceFile); + var lineIndex = line; + var sourceText = sourceFile.text; + if (lineIndex + 1 === lineStarts.length) { + // last line - return EOF + return sourceText.length - 1; + } + else { + // current line start + var start = lineStarts[lineIndex]; + // take the start position of the next line - 1 = it should be some line break + var pos = lineStarts[lineIndex + 1] - 1; + ts.Debug.assert(ts.isLineBreak(sourceText.charCodeAt(pos))); + // walk backwards skipping line breaks, stop the the beginning of current line. + // i.e: + // + // $ <- end of line for this position should match the start position + while (start <= pos && ts.isLineBreak(sourceText.charCodeAt(pos))) { + pos--; + } + return pos; + } + } + ts.getEndLinePosition = getEndLinePosition; // Returns true if this node is missing from the actual source code. A 'missing' node is different // from 'undefined/defined'. When a node is undefined (which can happen for optional nodes // in the tree), it is definitely missing. However, a node may be defined, but still be @@ -4783,13 +4947,13 @@ var ts; } ts.isBlockOrCatchScoped = isBlockOrCatchScoped; function isAmbientModule(node) { - return node && node.kind === 222 /* ModuleDeclaration */ && + return node && node.kind === 224 /* ModuleDeclaration */ && (node.name.kind === 9 /* StringLiteral */ || isGlobalScopeAugmentation(node)); } ts.isAmbientModule = isAmbientModule; function isBlockScopedContainerTopLevel(node) { - return node.kind === 252 /* SourceFile */ || - node.kind === 222 /* ModuleDeclaration */ || + return node.kind === 255 /* SourceFile */ || + node.kind === 224 /* ModuleDeclaration */ || isFunctionLike(node) || isFunctionBlock(node); } @@ -4806,10 +4970,10 @@ var ts; return false; } switch (node.parent.kind) { - case 252 /* SourceFile */: - return isExternalModule(node.parent); - case 223 /* ModuleBlock */: - return isAmbientModule(node.parent.parent) && !isExternalModule(node.parent.parent.parent); + case 255 /* SourceFile */: + return ts.isExternalModule(node.parent); + case 225 /* ModuleBlock */: + return isAmbientModule(node.parent.parent) && !ts.isExternalModule(node.parent.parent.parent); } return false; } @@ -4823,15 +4987,15 @@ var ts; return current; } switch (current.kind) { - case 252 /* SourceFile */: - case 224 /* CaseBlock */: - case 248 /* CatchClause */: - case 222 /* ModuleDeclaration */: - case 203 /* ForStatement */: - case 204 /* ForInStatement */: - case 205 /* ForOfStatement */: + case 255 /* SourceFile */: + case 226 /* CaseBlock */: + case 251 /* CatchClause */: + case 224 /* ModuleDeclaration */: + case 205 /* ForStatement */: + case 206 /* ForInStatement */: + case 207 /* ForOfStatement */: return current; - case 196 /* Block */: + case 198 /* Block */: // function block is not considered block-scope container // see comment in binder.ts: bind(...), case for SyntaxKind.Block if (!isFunctionLike(current.parent)) { @@ -4844,9 +5008,9 @@ var ts; ts.getEnclosingBlockScopeContainer = getEnclosingBlockScopeContainer; function isCatchClauseVariableDeclaration(declaration) { return declaration && - declaration.kind === 215 /* VariableDeclaration */ && + declaration.kind === 217 /* VariableDeclaration */ && declaration.parent && - declaration.parent.kind === 248 /* CatchClause */; + declaration.parent.kind === 251 /* CatchClause */; } ts.isCatchClauseVariableDeclaration = isCatchClauseVariableDeclaration; // Return display name of an identifier @@ -4882,10 +5046,23 @@ var ts; return ts.createTextSpanFromBounds(start, scanner.getTextPos()); } ts.getSpanOfTokenAtPosition = getSpanOfTokenAtPosition; + function getErrorSpanForArrowFunction(sourceFile, node) { + var pos = ts.skipTrivia(sourceFile.text, node.pos); + if (node.body && node.body.kind === 198 /* Block */) { + var startLine = ts.getLineAndCharacterOfPosition(sourceFile, node.body.pos).line; + var endLine = ts.getLineAndCharacterOfPosition(sourceFile, node.body.end).line; + if (startLine < endLine) { + // The arrow function spans multiple lines, + // make the error span be the first line, inclusive. + return ts.createTextSpan(pos, getEndLinePosition(startLine, sourceFile) - pos + 1); + } + } + return ts.createTextSpanFromBounds(pos, node.end); + } function getErrorSpanForNode(sourceFile, node) { var errorNode = node; switch (node.kind) { - case 252 /* SourceFile */: + case 255 /* SourceFile */: var pos_1 = ts.skipTrivia(sourceFile.text, 0, /*stopAfterLineBreak*/ false); if (pos_1 === sourceFile.text.length) { // file is empty - return span for the beginning of the file @@ -4894,22 +5071,24 @@ var ts; return getSpanOfTokenAtPosition(sourceFile, pos_1); // This list is a work in progress. Add missing node kinds to improve their error // spans. - case 215 /* VariableDeclaration */: - case 167 /* BindingElement */: - case 218 /* ClassDeclaration */: - case 190 /* ClassExpression */: - case 219 /* InterfaceDeclaration */: - case 222 /* ModuleDeclaration */: - case 221 /* EnumDeclaration */: - case 251 /* EnumMember */: - case 217 /* FunctionDeclaration */: - case 177 /* FunctionExpression */: - case 145 /* MethodDeclaration */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: - case 220 /* TypeAliasDeclaration */: + case 217 /* VariableDeclaration */: + case 168 /* BindingElement */: + case 220 /* ClassDeclaration */: + case 191 /* ClassExpression */: + case 221 /* InterfaceDeclaration */: + case 224 /* ModuleDeclaration */: + case 223 /* EnumDeclaration */: + case 254 /* EnumMember */: + case 219 /* FunctionDeclaration */: + case 178 /* FunctionExpression */: + case 146 /* MethodDeclaration */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: + case 222 /* TypeAliasDeclaration */: errorNode = node.name; break; + case 179 /* ArrowFunction */: + return getErrorSpanForArrowFunction(sourceFile, node); } if (errorNode === undefined) { // If we don't have a better node, then just set the error on the first token of @@ -4922,10 +5101,6 @@ var ts; return ts.createTextSpanFromBounds(pos, errorNode.end); } ts.getErrorSpanForNode = getErrorSpanForNode; - function isExternalModule(file) { - return file.externalModuleIndicator !== undefined; - } - ts.isExternalModule = isExternalModule; function isExternalOrCommonJsModule(file) { return (file.externalModuleIndicator || file.commonJsModuleIndicator) !== undefined; } @@ -4935,11 +5110,11 @@ var ts; } ts.isDeclarationFile = isDeclarationFile; function isConstEnumDeclaration(node) { - return node.kind === 221 /* EnumDeclaration */ && isConst(node); + return node.kind === 223 /* EnumDeclaration */ && isConst(node); } ts.isConstEnumDeclaration = isConstEnumDeclaration; function walkUpBindingElementsAndPatterns(node) { - while (node && (node.kind === 167 /* BindingElement */ || isBindingPattern(node))) { + while (node && (node.kind === 168 /* BindingElement */ || isBindingPattern(node))) { node = node.parent; } return node; @@ -4954,14 +5129,14 @@ var ts; function getCombinedNodeFlags(node) { node = walkUpBindingElementsAndPatterns(node); var flags = node.flags; - if (node.kind === 215 /* VariableDeclaration */) { + if (node.kind === 217 /* VariableDeclaration */) { node = node.parent; } - if (node && node.kind === 216 /* VariableDeclarationList */) { + if (node && node.kind === 218 /* VariableDeclarationList */) { flags |= node.flags; node = node.parent; } - if (node && node.kind === 197 /* VariableStatement */) { + if (node && node.kind === 199 /* VariableStatement */) { flags |= node.flags; } return flags; @@ -4976,11 +5151,11 @@ var ts; } ts.isLet = isLet; function isSuperCallExpression(n) { - return n.kind === 172 /* CallExpression */ && n.expression.kind === 95 /* SuperKeyword */; + return n.kind === 173 /* CallExpression */ && n.expression.kind === 95 /* SuperKeyword */; } ts.isSuperCallExpression = isSuperCallExpression; function isPrologueDirective(node) { - return node.kind === 199 /* ExpressionStatement */ && node.expression.kind === 9 /* StringLiteral */; + return node.kind === 201 /* ExpressionStatement */ && node.expression.kind === 9 /* StringLiteral */; } ts.isPrologueDirective = isPrologueDirective; function getLeadingCommentRangesOfNode(node, sourceFileOfNode) { @@ -4996,7 +5171,7 @@ var ts; } ts.getJsDocComments = getJsDocComments; function getJsDocCommentsFromText(node, text) { - var commentRanges = (node.kind === 140 /* Parameter */ || node.kind === 139 /* TypeParameter */) ? + var commentRanges = (node.kind === 141 /* Parameter */ || node.kind === 140 /* TypeParameter */) ? ts.concatenate(ts.getTrailingCommentRanges(text, node.pos), ts.getLeadingCommentRanges(text, node.pos)) : getLeadingCommentRangesOfNodeFromText(node, text); return ts.filter(commentRanges, isJsDocComment); @@ -5009,9 +5184,10 @@ var ts; } ts.getJsDocCommentsFromText = getJsDocCommentsFromText; ts.fullTripleSlashReferencePathRegEx = /^(\/\/\/\s*/; + ts.fullTripleSlashReferenceTypeReferenceDirectiveRegEx = /^(\/\/\/\s*/; ts.fullTripleSlashAMDReferencePathRegEx = /^(\/\/\/\s*/; function isTypeNode(node) { - if (152 /* FirstTypeNode */ <= node.kind && node.kind <= 164 /* LastTypeNode */) { + if (153 /* FirstTypeNode */ <= node.kind && node.kind <= 165 /* LastTypeNode */) { return true; } switch (node.kind) { @@ -5020,28 +5196,29 @@ var ts; case 131 /* StringKeyword */: case 120 /* BooleanKeyword */: case 132 /* SymbolKeyword */: + case 134 /* UndefinedKeyword */: return true; case 103 /* VoidKeyword */: - return node.parent.kind !== 181 /* VoidExpression */; - case 192 /* ExpressionWithTypeArguments */: + return node.parent.kind !== 182 /* VoidExpression */; + case 193 /* ExpressionWithTypeArguments */: return !isExpressionWithTypeArgumentsInClassExtendsClause(node); // Identifiers and qualified names may be type nodes, depending on their context. Climb // above them to find the lowest container case 69 /* Identifier */: // If the identifier is the RHS of a qualified name, then it's a type iff its parent is. - if (node.parent.kind === 137 /* QualifiedName */ && node.parent.right === node) { + if (node.parent.kind === 138 /* QualifiedName */ && node.parent.right === node) { node = node.parent; } - else if (node.parent.kind === 170 /* PropertyAccessExpression */ && node.parent.name === node) { + else if (node.parent.kind === 171 /* PropertyAccessExpression */ && node.parent.name === node) { node = node.parent; } // At this point, node is either a qualified name or an identifier - ts.Debug.assert(node.kind === 69 /* Identifier */ || node.kind === 137 /* QualifiedName */ || node.kind === 170 /* PropertyAccessExpression */, "'node' was expected to be a qualified name, identifier or property access in 'isTypeNode'."); - case 137 /* QualifiedName */: - case 170 /* PropertyAccessExpression */: + ts.Debug.assert(node.kind === 69 /* Identifier */ || node.kind === 138 /* QualifiedName */ || node.kind === 171 /* PropertyAccessExpression */, "'node' was expected to be a qualified name, identifier or property access in 'isTypeNode'."); + case 138 /* QualifiedName */: + case 171 /* PropertyAccessExpression */: case 97 /* ThisKeyword */: var parent_1 = node.parent; - if (parent_1.kind === 156 /* TypeQuery */) { + if (parent_1.kind === 157 /* TypeQuery */) { return false; } // Do not recursively call isTypeNode on the parent. In the example: @@ -5050,38 +5227,38 @@ var ts; // // Calling isTypeNode would consider the qualified name A.B a type node. Only C or // A.B.C is a type node. - if (152 /* FirstTypeNode */ <= parent_1.kind && parent_1.kind <= 164 /* LastTypeNode */) { + if (153 /* FirstTypeNode */ <= parent_1.kind && parent_1.kind <= 165 /* LastTypeNode */) { return true; } switch (parent_1.kind) { - case 192 /* ExpressionWithTypeArguments */: + case 193 /* ExpressionWithTypeArguments */: return !isExpressionWithTypeArgumentsInClassExtendsClause(parent_1); - case 139 /* TypeParameter */: + case 140 /* TypeParameter */: return node === parent_1.constraint; - case 143 /* PropertyDeclaration */: - case 142 /* PropertySignature */: - case 140 /* Parameter */: - case 215 /* VariableDeclaration */: + case 144 /* PropertyDeclaration */: + case 143 /* PropertySignature */: + case 141 /* Parameter */: + case 217 /* VariableDeclaration */: return node === parent_1.type; - case 217 /* FunctionDeclaration */: - case 177 /* FunctionExpression */: - case 178 /* ArrowFunction */: - case 146 /* Constructor */: - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: + case 219 /* FunctionDeclaration */: + case 178 /* FunctionExpression */: + case 179 /* ArrowFunction */: + case 147 /* Constructor */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: return node === parent_1.type; - case 149 /* CallSignature */: - case 150 /* ConstructSignature */: - case 151 /* IndexSignature */: + case 150 /* CallSignature */: + case 151 /* ConstructSignature */: + case 152 /* IndexSignature */: return node === parent_1.type; - case 175 /* TypeAssertionExpression */: + case 176 /* TypeAssertionExpression */: return node === parent_1.type; - case 172 /* CallExpression */: - case 173 /* NewExpression */: + case 173 /* CallExpression */: + case 174 /* NewExpression */: return parent_1.typeArguments && ts.indexOf(parent_1.typeArguments, node) >= 0; - case 174 /* TaggedTemplateExpression */: + case 175 /* TaggedTemplateExpression */: // TODO (drosen): TaggedTemplateExpressions may eventually support type arguments. return false; } @@ -5095,23 +5272,23 @@ var ts; return traverse(body); function traverse(node) { switch (node.kind) { - case 208 /* ReturnStatement */: + case 210 /* ReturnStatement */: return visitor(node); - case 224 /* CaseBlock */: - case 196 /* Block */: - case 200 /* IfStatement */: - case 201 /* DoStatement */: - case 202 /* WhileStatement */: - case 203 /* ForStatement */: - case 204 /* ForInStatement */: - case 205 /* ForOfStatement */: - case 209 /* WithStatement */: - case 210 /* SwitchStatement */: - case 245 /* CaseClause */: - case 246 /* DefaultClause */: - case 211 /* LabeledStatement */: - case 213 /* TryStatement */: - case 248 /* CatchClause */: + case 226 /* CaseBlock */: + case 198 /* Block */: + case 202 /* IfStatement */: + case 203 /* DoStatement */: + case 204 /* WhileStatement */: + case 205 /* ForStatement */: + case 206 /* ForInStatement */: + case 207 /* ForOfStatement */: + case 211 /* WithStatement */: + case 212 /* SwitchStatement */: + case 248 /* CaseClause */: + case 249 /* DefaultClause */: + case 213 /* LabeledStatement */: + case 215 /* TryStatement */: + case 251 /* CatchClause */: return ts.forEachChild(node, traverse); } } @@ -5121,18 +5298,18 @@ var ts; return traverse(body); function traverse(node) { switch (node.kind) { - case 188 /* YieldExpression */: + case 189 /* YieldExpression */: visitor(node); var operand = node.expression; if (operand) { traverse(operand); } - case 221 /* EnumDeclaration */: - case 219 /* InterfaceDeclaration */: - case 222 /* ModuleDeclaration */: - case 220 /* TypeAliasDeclaration */: - case 218 /* ClassDeclaration */: - case 190 /* ClassExpression */: + case 223 /* EnumDeclaration */: + case 221 /* InterfaceDeclaration */: + case 224 /* ModuleDeclaration */: + case 222 /* TypeAliasDeclaration */: + case 220 /* ClassDeclaration */: + case 191 /* ClassExpression */: // These are not allowed inside a generator now, but eventually they may be allowed // as local types. Regardless, any yield statements contained within them should be // skipped in this traversal. @@ -5140,7 +5317,7 @@ var ts; default: if (isFunctionLike(node)) { var name_5 = node.name; - if (name_5 && name_5.kind === 138 /* ComputedPropertyName */) { + if (name_5 && name_5.kind === 139 /* ComputedPropertyName */) { // Note that we will not include methods/accessors of a class because they would require // first descending into the class. This is by design. traverse(name_5.expression); @@ -5159,14 +5336,14 @@ var ts; function isVariableLike(node) { if (node) { switch (node.kind) { - case 167 /* BindingElement */: - case 251 /* EnumMember */: - case 140 /* Parameter */: - case 249 /* PropertyAssignment */: - case 143 /* PropertyDeclaration */: - case 142 /* PropertySignature */: - case 250 /* ShorthandPropertyAssignment */: - case 215 /* VariableDeclaration */: + case 168 /* BindingElement */: + case 254 /* EnumMember */: + case 141 /* Parameter */: + case 252 /* PropertyAssignment */: + case 144 /* PropertyDeclaration */: + case 143 /* PropertySignature */: + case 253 /* ShorthandPropertyAssignment */: + case 217 /* VariableDeclaration */: return true; } } @@ -5174,11 +5351,11 @@ var ts; } ts.isVariableLike = isVariableLike; function isAccessor(node) { - return node && (node.kind === 147 /* GetAccessor */ || node.kind === 148 /* SetAccessor */); + return node && (node.kind === 148 /* GetAccessor */ || node.kind === 149 /* SetAccessor */); } ts.isAccessor = isAccessor; function isClassLike(node) { - return node && (node.kind === 218 /* ClassDeclaration */ || node.kind === 190 /* ClassExpression */); + return node && (node.kind === 220 /* ClassDeclaration */ || node.kind === 191 /* ClassExpression */); } ts.isClassLike = isClassLike; function isFunctionLike(node) { @@ -5187,32 +5364,32 @@ var ts; ts.isFunctionLike = isFunctionLike; function isFunctionLikeKind(kind) { switch (kind) { - case 146 /* Constructor */: - case 177 /* FunctionExpression */: - case 217 /* FunctionDeclaration */: - case 178 /* ArrowFunction */: - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: - case 149 /* CallSignature */: - case 150 /* ConstructSignature */: - case 151 /* IndexSignature */: - case 154 /* FunctionType */: - case 155 /* ConstructorType */: + case 147 /* Constructor */: + case 178 /* FunctionExpression */: + case 219 /* FunctionDeclaration */: + case 179 /* ArrowFunction */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: + case 150 /* CallSignature */: + case 151 /* ConstructSignature */: + case 152 /* IndexSignature */: + case 155 /* FunctionType */: + case 156 /* ConstructorType */: return true; } } ts.isFunctionLikeKind = isFunctionLikeKind; function introducesArgumentsExoticObject(node) { switch (node.kind) { - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: - case 146 /* Constructor */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: - case 217 /* FunctionDeclaration */: - case 177 /* FunctionExpression */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: + case 147 /* Constructor */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: + case 219 /* FunctionDeclaration */: + case 178 /* FunctionExpression */: return true; } return false; @@ -5220,24 +5397,24 @@ var ts; ts.introducesArgumentsExoticObject = introducesArgumentsExoticObject; function isIterationStatement(node, lookInLabeledStatements) { switch (node.kind) { - case 203 /* ForStatement */: - case 204 /* ForInStatement */: - case 205 /* ForOfStatement */: - case 201 /* DoStatement */: - case 202 /* WhileStatement */: + case 205 /* ForStatement */: + case 206 /* ForInStatement */: + case 207 /* ForOfStatement */: + case 203 /* DoStatement */: + case 204 /* WhileStatement */: return true; - case 211 /* LabeledStatement */: + case 213 /* LabeledStatement */: return lookInLabeledStatements && isIterationStatement(node.statement, lookInLabeledStatements); } return false; } ts.isIterationStatement = isIterationStatement; function isFunctionBlock(node) { - return node && node.kind === 196 /* Block */ && isFunctionLike(node.parent); + return node && node.kind === 198 /* Block */ && isFunctionLike(node.parent); } ts.isFunctionBlock = isFunctionBlock; function isObjectLiteralMethod(node) { - return node && node.kind === 145 /* MethodDeclaration */ && node.parent.kind === 169 /* ObjectLiteralExpression */; + return node && node.kind === 146 /* MethodDeclaration */ && node.parent.kind === 170 /* ObjectLiteralExpression */; } ts.isObjectLiteralMethod = isObjectLiteralMethod; function isIdentifierTypePredicate(predicate) { @@ -5273,7 +5450,7 @@ var ts; return undefined; } switch (node.kind) { - case 138 /* ComputedPropertyName */: + case 139 /* ComputedPropertyName */: // If the grandparent node is an object literal (as opposed to a class), // then the computed property is not a 'this' container. // A computed property name in a class needs to be a this container @@ -5288,9 +5465,9 @@ var ts; // the *body* of the container. node = node.parent; break; - case 141 /* Decorator */: + case 142 /* Decorator */: // Decorators are always applied outside of the body of a class or method. - if (node.parent.kind === 140 /* Parameter */ && isClassElement(node.parent.parent)) { + if (node.parent.kind === 141 /* Parameter */ && isClassElement(node.parent.parent)) { // If the decorator's parent is a Parameter, we resolve the this container from // the grandparent class declaration. node = node.parent.parent; @@ -5301,26 +5478,26 @@ var ts; node = node.parent; } break; - case 178 /* ArrowFunction */: + case 179 /* ArrowFunction */: if (!includeArrowFunctions) { continue; } // Fall through - case 217 /* FunctionDeclaration */: - case 177 /* FunctionExpression */: - case 222 /* ModuleDeclaration */: - case 143 /* PropertyDeclaration */: - case 142 /* PropertySignature */: - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: - case 146 /* Constructor */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: - case 149 /* CallSignature */: - case 150 /* ConstructSignature */: - case 151 /* IndexSignature */: - case 221 /* EnumDeclaration */: - case 252 /* SourceFile */: + case 219 /* FunctionDeclaration */: + case 178 /* FunctionExpression */: + case 224 /* ModuleDeclaration */: + case 144 /* PropertyDeclaration */: + case 143 /* PropertySignature */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: + case 147 /* Constructor */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: + case 150 /* CallSignature */: + case 151 /* ConstructSignature */: + case 152 /* IndexSignature */: + case 223 /* EnumDeclaration */: + case 255 /* SourceFile */: return node; } } @@ -5341,26 +5518,26 @@ var ts; return node; } switch (node.kind) { - case 138 /* ComputedPropertyName */: + case 139 /* ComputedPropertyName */: node = node.parent; break; - case 217 /* FunctionDeclaration */: - case 177 /* FunctionExpression */: - case 178 /* ArrowFunction */: + case 219 /* FunctionDeclaration */: + case 178 /* FunctionExpression */: + case 179 /* ArrowFunction */: if (!stopOnFunctions) { continue; } - case 143 /* PropertyDeclaration */: - case 142 /* PropertySignature */: - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: - case 146 /* Constructor */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: + case 144 /* PropertyDeclaration */: + case 143 /* PropertySignature */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: + case 147 /* Constructor */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: return node; - case 141 /* Decorator */: + case 142 /* Decorator */: // Decorators are always applied outside of the body of a class or method. - if (node.parent.kind === 140 /* Parameter */ && isClassElement(node.parent.parent)) { + if (node.parent.kind === 141 /* Parameter */ && isClassElement(node.parent.parent)) { // If the decorator's parent is a Parameter, we resolve the this container from // the grandparent class declaration. node = node.parent.parent; @@ -5379,20 +5556,20 @@ var ts; * Determines whether a node is a property or element access expression for super. */ function isSuperPropertyOrElementAccess(node) { - return (node.kind === 170 /* PropertyAccessExpression */ - || node.kind === 171 /* ElementAccessExpression */) + return (node.kind === 171 /* PropertyAccessExpression */ + || node.kind === 172 /* ElementAccessExpression */) && node.expression.kind === 95 /* SuperKeyword */; } ts.isSuperPropertyOrElementAccess = isSuperPropertyOrElementAccess; function getEntityNameFromTypeNode(node) { if (node) { switch (node.kind) { - case 153 /* TypeReference */: + case 154 /* TypeReference */: return node.typeName; - case 192 /* ExpressionWithTypeArguments */: + case 193 /* ExpressionWithTypeArguments */: return node.expression; case 69 /* Identifier */: - case 137 /* QualifiedName */: + case 138 /* QualifiedName */: return node; } } @@ -5400,7 +5577,7 @@ var ts; } ts.getEntityNameFromTypeNode = getEntityNameFromTypeNode; function getInvokedExpression(node) { - if (node.kind === 174 /* TaggedTemplateExpression */) { + if (node.kind === 175 /* TaggedTemplateExpression */) { return node.tag; } // Will either be a CallExpression, NewExpression, or Decorator. @@ -5409,25 +5586,25 @@ var ts; ts.getInvokedExpression = getInvokedExpression; function nodeCanBeDecorated(node) { switch (node.kind) { - case 218 /* ClassDeclaration */: + case 220 /* ClassDeclaration */: // classes are valid targets return true; - case 143 /* PropertyDeclaration */: + case 144 /* PropertyDeclaration */: // property declarations are valid if their parent is a class declaration. - return node.parent.kind === 218 /* ClassDeclaration */; - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: - case 145 /* MethodDeclaration */: + return node.parent.kind === 220 /* ClassDeclaration */; + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: + case 146 /* MethodDeclaration */: // if this method has a body and its parent is a class declaration, this is a valid target. return node.body !== undefined - && node.parent.kind === 218 /* ClassDeclaration */; - case 140 /* Parameter */: + && node.parent.kind === 220 /* ClassDeclaration */; + case 141 /* Parameter */: // if the parameter's parent has a body and its grandparent is a class declaration, this is a valid target; return node.parent.body !== undefined - && (node.parent.kind === 146 /* Constructor */ - || node.parent.kind === 145 /* MethodDeclaration */ - || node.parent.kind === 148 /* SetAccessor */) - && node.parent.parent.kind === 218 /* ClassDeclaration */; + && (node.parent.kind === 147 /* Constructor */ + || node.parent.kind === 146 /* MethodDeclaration */ + || node.parent.kind === 149 /* SetAccessor */) + && node.parent.parent.kind === 220 /* ClassDeclaration */; } return false; } @@ -5438,13 +5615,23 @@ var ts; } ts.nodeIsDecorated = nodeIsDecorated; function isPropertyAccessExpression(node) { - return node.kind === 170 /* PropertyAccessExpression */; + return node.kind === 171 /* PropertyAccessExpression */; } ts.isPropertyAccessExpression = isPropertyAccessExpression; function isElementAccessExpression(node) { - return node.kind === 171 /* ElementAccessExpression */; + return node.kind === 172 /* ElementAccessExpression */; } ts.isElementAccessExpression = isElementAccessExpression; + function isJSXTagName(node) { + var parent = node.parent; + if (parent.kind === 242 /* JsxOpeningElement */ || + parent.kind === 241 /* JsxSelfClosingElement */ || + parent.kind === 244 /* JsxClosingElement */) { + return parent.tagName === node; + } + return false; + } + ts.isJSXTagName = isJSXTagName; function isExpression(node) { switch (node.kind) { case 95 /* SuperKeyword */: @@ -5452,42 +5639,43 @@ var ts; case 99 /* TrueKeyword */: case 84 /* FalseKeyword */: case 10 /* RegularExpressionLiteral */: - case 168 /* ArrayLiteralExpression */: - case 169 /* ObjectLiteralExpression */: - case 170 /* PropertyAccessExpression */: - case 171 /* ElementAccessExpression */: - case 172 /* CallExpression */: - case 173 /* NewExpression */: - case 174 /* TaggedTemplateExpression */: - case 193 /* AsExpression */: - case 175 /* TypeAssertionExpression */: - case 176 /* ParenthesizedExpression */: - case 177 /* FunctionExpression */: - case 190 /* ClassExpression */: - case 178 /* ArrowFunction */: - case 181 /* VoidExpression */: - case 179 /* DeleteExpression */: - case 180 /* TypeOfExpression */: - case 183 /* PrefixUnaryExpression */: - case 184 /* PostfixUnaryExpression */: - case 185 /* BinaryExpression */: - case 186 /* ConditionalExpression */: - case 189 /* SpreadElementExpression */: - case 187 /* TemplateExpression */: + case 169 /* ArrayLiteralExpression */: + case 170 /* ObjectLiteralExpression */: + case 171 /* PropertyAccessExpression */: + case 172 /* ElementAccessExpression */: + case 173 /* CallExpression */: + case 174 /* NewExpression */: + case 175 /* TaggedTemplateExpression */: + case 194 /* AsExpression */: + case 176 /* TypeAssertionExpression */: + case 195 /* NonNullExpression */: + case 177 /* ParenthesizedExpression */: + case 178 /* FunctionExpression */: + case 191 /* ClassExpression */: + case 179 /* ArrowFunction */: + case 182 /* VoidExpression */: + case 180 /* DeleteExpression */: + case 181 /* TypeOfExpression */: + case 184 /* PrefixUnaryExpression */: + case 185 /* PostfixUnaryExpression */: + case 186 /* BinaryExpression */: + case 187 /* ConditionalExpression */: + case 190 /* SpreadElementExpression */: + case 188 /* TemplateExpression */: case 11 /* NoSubstitutionTemplateLiteral */: - case 191 /* OmittedExpression */: - case 237 /* JsxElement */: - case 238 /* JsxSelfClosingElement */: - case 188 /* YieldExpression */: - case 182 /* AwaitExpression */: + case 192 /* OmittedExpression */: + case 240 /* JsxElement */: + case 241 /* JsxSelfClosingElement */: + case 189 /* YieldExpression */: + case 183 /* AwaitExpression */: return true; - case 137 /* QualifiedName */: - while (node.parent.kind === 137 /* QualifiedName */) { + case 138 /* QualifiedName */: + while (node.parent.kind === 138 /* QualifiedName */) { node = node.parent; } - return node.parent.kind === 156 /* TypeQuery */; + return node.parent.kind === 157 /* TypeQuery */ || isJSXTagName(node); case 69 /* Identifier */: - if (node.parent.kind === 156 /* TypeQuery */) { + if (node.parent.kind === 157 /* TypeQuery */ || isJSXTagName(node)) { return true; } // fall through @@ -5496,47 +5684,47 @@ var ts; case 97 /* ThisKeyword */: var parent_2 = node.parent; switch (parent_2.kind) { - case 215 /* VariableDeclaration */: - case 140 /* Parameter */: - case 143 /* PropertyDeclaration */: - case 142 /* PropertySignature */: - case 251 /* EnumMember */: - case 249 /* PropertyAssignment */: - case 167 /* BindingElement */: + case 217 /* VariableDeclaration */: + case 141 /* Parameter */: + case 144 /* PropertyDeclaration */: + case 143 /* PropertySignature */: + case 254 /* EnumMember */: + case 252 /* PropertyAssignment */: + case 168 /* BindingElement */: return parent_2.initializer === node; - case 199 /* ExpressionStatement */: - case 200 /* IfStatement */: - case 201 /* DoStatement */: - case 202 /* WhileStatement */: - case 208 /* ReturnStatement */: - case 209 /* WithStatement */: - case 210 /* SwitchStatement */: - case 245 /* CaseClause */: - case 212 /* ThrowStatement */: - case 210 /* SwitchStatement */: + case 201 /* ExpressionStatement */: + case 202 /* IfStatement */: + case 203 /* DoStatement */: + case 204 /* WhileStatement */: + case 210 /* ReturnStatement */: + case 211 /* WithStatement */: + case 212 /* SwitchStatement */: + case 248 /* CaseClause */: + case 214 /* ThrowStatement */: + case 212 /* SwitchStatement */: return parent_2.expression === node; - case 203 /* ForStatement */: + case 205 /* ForStatement */: var forStatement = parent_2; - return (forStatement.initializer === node && forStatement.initializer.kind !== 216 /* VariableDeclarationList */) || + return (forStatement.initializer === node && forStatement.initializer.kind !== 218 /* VariableDeclarationList */) || forStatement.condition === node || forStatement.incrementor === node; - case 204 /* ForInStatement */: - case 205 /* ForOfStatement */: + case 206 /* ForInStatement */: + case 207 /* ForOfStatement */: var forInStatement = parent_2; - return (forInStatement.initializer === node && forInStatement.initializer.kind !== 216 /* VariableDeclarationList */) || + return (forInStatement.initializer === node && forInStatement.initializer.kind !== 218 /* VariableDeclarationList */) || forInStatement.expression === node; - case 175 /* TypeAssertionExpression */: - case 193 /* AsExpression */: + case 176 /* TypeAssertionExpression */: + case 194 /* AsExpression */: return node === parent_2.expression; - case 194 /* TemplateSpan */: + case 196 /* TemplateSpan */: return node === parent_2.expression; - case 138 /* ComputedPropertyName */: + case 139 /* ComputedPropertyName */: return node === parent_2.expression; - case 141 /* Decorator */: - case 244 /* JsxExpression */: - case 243 /* JsxSpreadAttribute */: + case 142 /* Decorator */: + case 247 /* JsxExpression */: + case 246 /* JsxSpreadAttribute */: return true; - case 192 /* ExpressionWithTypeArguments */: + case 193 /* ExpressionWithTypeArguments */: return parent_2.expression === node && isExpressionWithTypeArgumentsInClassExtendsClause(parent_2); default: if (isExpression(parent_2)) { @@ -5560,7 +5748,7 @@ var ts; } ts.isInstantiatedModule = isInstantiatedModule; function isExternalModuleImportEqualsDeclaration(node) { - return node.kind === 225 /* ImportEqualsDeclaration */ && node.moduleReference.kind === 236 /* ExternalModuleReference */; + return node.kind === 228 /* ImportEqualsDeclaration */ && node.moduleReference.kind === 239 /* ExternalModuleReference */; } ts.isExternalModuleImportEqualsDeclaration = isExternalModuleImportEqualsDeclaration; function getExternalModuleImportEqualsDeclarationExpression(node) { @@ -5569,7 +5757,7 @@ var ts; } ts.getExternalModuleImportEqualsDeclarationExpression = getExternalModuleImportEqualsDeclarationExpression; function isInternalModuleImportEqualsDeclaration(node) { - return node.kind === 225 /* ImportEqualsDeclaration */ && node.moduleReference.kind !== 236 /* ExternalModuleReference */; + return node.kind === 228 /* ImportEqualsDeclaration */ && node.moduleReference.kind !== 239 /* ExternalModuleReference */; } ts.isInternalModuleImportEqualsDeclaration = isInternalModuleImportEqualsDeclaration; function isSourceFileJavaScript(file) { @@ -5587,7 +5775,7 @@ var ts; */ function isRequireCall(expression, checkArgumentIsStringLiteral) { // of the form 'require("name")' - var isRequire = expression.kind === 172 /* CallExpression */ && + var isRequire = expression.kind === 173 /* CallExpression */ && expression.expression.kind === 69 /* Identifier */ && expression.expression.text === "require" && expression.arguments.length === 1; @@ -5597,11 +5785,14 @@ var ts; /// Given a BinaryExpression, returns SpecialPropertyAssignmentKind for the various kinds of property /// assignments we treat as special in the binder function getSpecialPropertyAssignmentKind(expression) { - if (expression.kind !== 185 /* BinaryExpression */) { + if (!isInJavaScriptFile(expression)) { + return 0 /* None */; + } + if (expression.kind !== 186 /* BinaryExpression */) { return 0 /* None */; } var expr = expression; - if (expr.operatorToken.kind !== 56 /* EqualsToken */ || expr.left.kind !== 170 /* PropertyAccessExpression */) { + if (expr.operatorToken.kind !== 56 /* EqualsToken */ || expr.left.kind !== 171 /* PropertyAccessExpression */) { return 0 /* None */; } var lhs = expr.left; @@ -5619,7 +5810,7 @@ var ts; else if (lhs.expression.kind === 97 /* ThisKeyword */) { return 4 /* ThisProperty */; } - else if (lhs.expression.kind === 170 /* PropertyAccessExpression */) { + else if (lhs.expression.kind === 171 /* PropertyAccessExpression */) { // chained dot, e.g. x.y.z = expr; this var is the 'x.y' part var innerPropertyAccess = lhs.expression; if (innerPropertyAccess.expression.kind === 69 /* Identifier */ && innerPropertyAccess.name.text === "prototype") { @@ -5630,19 +5821,19 @@ var ts; } ts.getSpecialPropertyAssignmentKind = getSpecialPropertyAssignmentKind; function getExternalModuleName(node) { - if (node.kind === 226 /* ImportDeclaration */) { + if (node.kind === 229 /* ImportDeclaration */) { return node.moduleSpecifier; } - if (node.kind === 225 /* ImportEqualsDeclaration */) { + if (node.kind === 228 /* ImportEqualsDeclaration */) { var reference = node.moduleReference; - if (reference.kind === 236 /* ExternalModuleReference */) { + if (reference.kind === 239 /* ExternalModuleReference */) { return reference.expression; } } - if (node.kind === 232 /* ExportDeclaration */) { + if (node.kind === 235 /* ExportDeclaration */) { return node.moduleSpecifier; } - if (node.kind === 222 /* ModuleDeclaration */ && node.name.kind === 9 /* StringLiteral */) { + if (node.kind === 224 /* ModuleDeclaration */ && node.name.kind === 9 /* StringLiteral */) { return node.name; } } @@ -5650,13 +5841,13 @@ var ts; function hasQuestionToken(node) { if (node) { switch (node.kind) { - case 140 /* Parameter */: - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: - case 250 /* ShorthandPropertyAssignment */: - case 249 /* PropertyAssignment */: - case 143 /* PropertyDeclaration */: - case 142 /* PropertySignature */: + case 141 /* Parameter */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: + case 253 /* ShorthandPropertyAssignment */: + case 252 /* PropertyAssignment */: + case 144 /* PropertyDeclaration */: + case 143 /* PropertySignature */: return node.questionToken !== undefined; } } @@ -5664,9 +5855,9 @@ var ts; } ts.hasQuestionToken = hasQuestionToken; function isJSDocConstructSignature(node) { - return node.kind === 265 /* JSDocFunctionType */ && + return node.kind === 268 /* JSDocFunctionType */ && node.parameters.length > 0 && - node.parameters[0].type.kind === 267 /* JSDocConstructorType */; + node.parameters[0].type.kind === 270 /* JSDocConstructorType */; } ts.isJSDocConstructSignature = isJSDocConstructSignature; function getJSDocTag(node, kind, checkParentVariableStatement) { @@ -5695,9 +5886,9 @@ var ts; // */ // var x = function(name) { return name.length; } if (checkParentVariableStatement) { - var isInitializerOfVariableDeclarationInStatement = node.parent.kind === 215 /* VariableDeclaration */ && + var isInitializerOfVariableDeclarationInStatement = node.parent.kind === 217 /* VariableDeclaration */ && node.parent.initializer === node && - node.parent.parent.parent.kind === 197 /* VariableStatement */; + node.parent.parent.parent.kind === 199 /* VariableStatement */; var variableStatementNode = isInitializerOfVariableDeclarationInStatement ? node.parent.parent.parent : undefined; if (variableStatementNode) { return variableStatementNode.jsDocComment; @@ -5705,13 +5896,13 @@ var ts; // Also recognize when the node is the RHS of an assignment expression var parent_3 = node.parent; var isSourceOfAssignmentExpressionStatement = parent_3 && parent_3.parent && - parent_3.kind === 185 /* BinaryExpression */ && + parent_3.kind === 186 /* BinaryExpression */ && parent_3.operatorToken.kind === 56 /* EqualsToken */ && - parent_3.parent.kind === 199 /* ExpressionStatement */; + parent_3.parent.kind === 201 /* ExpressionStatement */; if (isSourceOfAssignmentExpressionStatement) { return parent_3.parent.jsDocComment; } - var isPropertyAssignmentExpression = parent_3 && parent_3.kind === 249 /* PropertyAssignment */; + var isPropertyAssignmentExpression = parent_3 && parent_3.kind === 252 /* PropertyAssignment */; if (isPropertyAssignmentExpression) { return parent_3.jsDocComment; } @@ -5719,15 +5910,15 @@ var ts; return undefined; } function getJSDocTypeTag(node) { - return getJSDocTag(node, 273 /* JSDocTypeTag */, /*checkParentVariableStatement*/ false); + return getJSDocTag(node, 276 /* JSDocTypeTag */, /*checkParentVariableStatement*/ false); } ts.getJSDocTypeTag = getJSDocTypeTag; function getJSDocReturnTag(node) { - return getJSDocTag(node, 272 /* JSDocReturnTag */, /*checkParentVariableStatement*/ true); + return getJSDocTag(node, 275 /* JSDocReturnTag */, /*checkParentVariableStatement*/ true); } ts.getJSDocReturnTag = getJSDocReturnTag; function getJSDocTemplateTag(node) { - return getJSDocTag(node, 274 /* JSDocTemplateTag */, /*checkParentVariableStatement*/ false); + return getJSDocTag(node, 277 /* JSDocTemplateTag */, /*checkParentVariableStatement*/ false); } ts.getJSDocTemplateTag = getJSDocTemplateTag; function getCorrespondingJSDocParameterTag(parameter) { @@ -5739,7 +5930,7 @@ var ts; if (jsDocComment) { for (var _i = 0, _a = jsDocComment.tags; _i < _a.length; _i++) { var tag = _a[_i]; - if (tag.kind === 271 /* JSDocParameterTag */) { + if (tag.kind === 274 /* JSDocParameterTag */) { var parameterTag = tag; var name_6 = parameterTag.preParameterName || parameterTag.postParameterName; if (name_6.text === parameterName) { @@ -5759,12 +5950,12 @@ var ts; function isRestParameter(node) { if (node) { if (node.flags & 134217728 /* JavaScriptFile */) { - if (node.type && node.type.kind === 266 /* JSDocVariadicType */) { + if (node.type && node.type.kind === 269 /* JSDocVariadicType */) { return true; } var paramTag = getCorrespondingJSDocParameterTag(node); if (paramTag && paramTag.typeExpression) { - return paramTag.typeExpression.type.kind === 266 /* JSDocVariadicType */; + return paramTag.typeExpression.type.kind === 269 /* JSDocVariadicType */; } } return node.dotDotDotToken !== undefined; @@ -5785,7 +5976,7 @@ var ts; } ts.isTemplateLiteralKind = isTemplateLiteralKind; function isBindingPattern(node) { - return !!node && (node.kind === 166 /* ArrayBindingPattern */ || node.kind === 165 /* ObjectBindingPattern */); + return !!node && (node.kind === 167 /* ArrayBindingPattern */ || node.kind === 166 /* ObjectBindingPattern */); } ts.isBindingPattern = isBindingPattern; function isNodeDescendentOf(node, ancestor) { @@ -5799,7 +5990,7 @@ var ts; ts.isNodeDescendentOf = isNodeDescendentOf; function isInAmbientContext(node) { while (node) { - if (node.flags & 2 /* Ambient */ || (node.kind === 252 /* SourceFile */ && node.isDeclarationFile)) { + if (node.flags & 2 /* Ambient */ || (node.kind === 255 /* SourceFile */ && node.isDeclarationFile)) { return true; } node = node.parent; @@ -5809,34 +6000,34 @@ var ts; ts.isInAmbientContext = isInAmbientContext; function isDeclaration(node) { switch (node.kind) { - case 178 /* ArrowFunction */: - case 167 /* BindingElement */: - case 218 /* ClassDeclaration */: - case 190 /* ClassExpression */: - case 146 /* Constructor */: - case 221 /* EnumDeclaration */: - case 251 /* EnumMember */: - case 234 /* ExportSpecifier */: - case 217 /* FunctionDeclaration */: - case 177 /* FunctionExpression */: - case 147 /* GetAccessor */: - case 227 /* ImportClause */: - case 225 /* ImportEqualsDeclaration */: - case 230 /* ImportSpecifier */: - case 219 /* InterfaceDeclaration */: - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: - case 222 /* ModuleDeclaration */: - case 228 /* NamespaceImport */: - case 140 /* Parameter */: - case 249 /* PropertyAssignment */: - case 143 /* PropertyDeclaration */: - case 142 /* PropertySignature */: - case 148 /* SetAccessor */: - case 250 /* ShorthandPropertyAssignment */: - case 220 /* TypeAliasDeclaration */: - case 139 /* TypeParameter */: - case 215 /* VariableDeclaration */: + case 179 /* ArrowFunction */: + case 168 /* BindingElement */: + case 220 /* ClassDeclaration */: + case 191 /* ClassExpression */: + case 147 /* Constructor */: + case 223 /* EnumDeclaration */: + case 254 /* EnumMember */: + case 237 /* ExportSpecifier */: + case 219 /* FunctionDeclaration */: + case 178 /* FunctionExpression */: + case 148 /* GetAccessor */: + case 230 /* ImportClause */: + case 228 /* ImportEqualsDeclaration */: + case 233 /* ImportSpecifier */: + case 221 /* InterfaceDeclaration */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: + case 224 /* ModuleDeclaration */: + case 231 /* NamespaceImport */: + case 141 /* Parameter */: + case 252 /* PropertyAssignment */: + case 144 /* PropertyDeclaration */: + case 143 /* PropertySignature */: + case 149 /* SetAccessor */: + case 253 /* ShorthandPropertyAssignment */: + case 222 /* TypeAliasDeclaration */: + case 140 /* TypeParameter */: + case 217 /* VariableDeclaration */: return true; } return false; @@ -5844,25 +6035,25 @@ var ts; ts.isDeclaration = isDeclaration; function isStatement(n) { switch (n.kind) { - case 207 /* BreakStatement */: - case 206 /* ContinueStatement */: - case 214 /* DebuggerStatement */: - case 201 /* DoStatement */: - case 199 /* ExpressionStatement */: - case 198 /* EmptyStatement */: - case 204 /* ForInStatement */: - case 205 /* ForOfStatement */: - case 203 /* ForStatement */: - case 200 /* IfStatement */: - case 211 /* LabeledStatement */: - case 208 /* ReturnStatement */: - case 210 /* SwitchStatement */: - case 212 /* ThrowStatement */: - case 213 /* TryStatement */: - case 197 /* VariableStatement */: - case 202 /* WhileStatement */: - case 209 /* WithStatement */: - case 231 /* ExportAssignment */: + case 209 /* BreakStatement */: + case 208 /* ContinueStatement */: + case 216 /* DebuggerStatement */: + case 203 /* DoStatement */: + case 201 /* ExpressionStatement */: + case 200 /* EmptyStatement */: + case 206 /* ForInStatement */: + case 207 /* ForOfStatement */: + case 205 /* ForStatement */: + case 202 /* IfStatement */: + case 213 /* LabeledStatement */: + case 210 /* ReturnStatement */: + case 212 /* SwitchStatement */: + case 214 /* ThrowStatement */: + case 215 /* TryStatement */: + case 199 /* VariableStatement */: + case 204 /* WhileStatement */: + case 211 /* WithStatement */: + case 234 /* ExportAssignment */: return true; default: return false; @@ -5871,13 +6062,13 @@ var ts; ts.isStatement = isStatement; function isClassElement(n) { switch (n.kind) { - case 146 /* Constructor */: - case 143 /* PropertyDeclaration */: - case 145 /* MethodDeclaration */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: - case 144 /* MethodSignature */: - case 151 /* IndexSignature */: + case 147 /* Constructor */: + case 144 /* PropertyDeclaration */: + case 146 /* MethodDeclaration */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: + case 145 /* MethodSignature */: + case 152 /* IndexSignature */: return true; default: return false; @@ -5890,7 +6081,7 @@ var ts; return false; } var parent = name.parent; - if (parent.kind === 230 /* ImportSpecifier */ || parent.kind === 234 /* ExportSpecifier */) { + if (parent.kind === 233 /* ImportSpecifier */ || parent.kind === 237 /* ExportSpecifier */) { if (parent.propertyName) { return true; } @@ -5905,31 +6096,31 @@ var ts; function isIdentifierName(node) { var parent = node.parent; switch (parent.kind) { - case 143 /* PropertyDeclaration */: - case 142 /* PropertySignature */: - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: - case 251 /* EnumMember */: - case 249 /* PropertyAssignment */: - case 170 /* PropertyAccessExpression */: + case 144 /* PropertyDeclaration */: + case 143 /* PropertySignature */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: + case 254 /* EnumMember */: + case 252 /* PropertyAssignment */: + case 171 /* PropertyAccessExpression */: // Name in member declaration or property name in property access return parent.name === node; - case 137 /* QualifiedName */: + case 138 /* QualifiedName */: // Name on right hand side of dot in a type query if (parent.right === node) { - while (parent.kind === 137 /* QualifiedName */) { + while (parent.kind === 138 /* QualifiedName */) { parent = parent.parent; } - return parent.kind === 156 /* TypeQuery */; + return parent.kind === 157 /* TypeQuery */; } return false; - case 167 /* BindingElement */: - case 230 /* ImportSpecifier */: + case 168 /* BindingElement */: + case 233 /* ImportSpecifier */: // Property name in binding element or import specifier return parent.propertyName === node; - case 234 /* ExportSpecifier */: + case 237 /* ExportSpecifier */: // Any name in an export specifier return true; } @@ -5945,12 +6136,13 @@ var ts; // export = ... // export default ... function isAliasSymbolDeclaration(node) { - return node.kind === 225 /* ImportEqualsDeclaration */ || - node.kind === 227 /* ImportClause */ && !!node.name || - node.kind === 228 /* NamespaceImport */ || - node.kind === 230 /* ImportSpecifier */ || - node.kind === 234 /* ExportSpecifier */ || - node.kind === 231 /* ExportAssignment */ && node.expression.kind === 69 /* Identifier */; + return node.kind === 228 /* ImportEqualsDeclaration */ || + node.kind === 227 /* GlobalModuleExportDeclaration */ || + node.kind === 230 /* ImportClause */ && !!node.name || + node.kind === 231 /* NamespaceImport */ || + node.kind === 233 /* ImportSpecifier */ || + node.kind === 237 /* ExportSpecifier */ || + node.kind === 234 /* ExportAssignment */ && node.expression.kind === 69 /* Identifier */; } ts.isAliasSymbolDeclaration = isAliasSymbolDeclaration; function getClassExtendsHeritageClauseElement(node) { @@ -6007,32 +6199,32 @@ var ts; }; } else { - var matchResult = ts.fullTripleSlashReferencePathRegEx.exec(comment); - if (matchResult) { + var refMatchResult = ts.fullTripleSlashReferencePathRegEx.exec(comment); + var refLibResult = !refMatchResult && ts.fullTripleSlashReferenceTypeReferenceDirectiveRegEx.exec(comment); + if (refMatchResult || refLibResult) { var start = commentRange.pos; var end = commentRange.end; return { fileReference: { pos: start, end: end, - fileName: matchResult[3] + fileName: (refMatchResult || refLibResult)[3] }, - isNoDefaultLib: false - }; - } - else { - return { - diagnosticMessage: ts.Diagnostics.Invalid_reference_directive_syntax, - isNoDefaultLib: false + isNoDefaultLib: false, + isTypeReferenceDirective: !!refLibResult }; } + return { + diagnosticMessage: ts.Diagnostics.Invalid_reference_directive_syntax, + isNoDefaultLib: false + }; } } return undefined; } ts.getFileReferenceFromReferencePath = getFileReferenceFromReferencePath; function isKeyword(token) { - return 70 /* FirstKeyword */ <= token && token <= 136 /* LastKeyword */; + return 70 /* FirstKeyword */ <= token && token <= 137 /* LastKeyword */; } ts.isKeyword = isKeyword; function isTrivia(token) { @@ -6059,7 +6251,7 @@ var ts; } ts.hasDynamicName = hasDynamicName; function isDynamicName(name) { - return name.kind === 138 /* ComputedPropertyName */ && + return name.kind === 139 /* ComputedPropertyName */ && !isStringOrNumericLiteral(name.expression.kind) && !isWellKnownSymbolSyntactically(name.expression); } @@ -6077,7 +6269,7 @@ var ts; if (name.kind === 69 /* Identifier */ || name.kind === 9 /* StringLiteral */ || name.kind === 8 /* NumericLiteral */) { return name.text; } - if (name.kind === 138 /* ComputedPropertyName */) { + if (name.kind === 139 /* ComputedPropertyName */) { var nameExpression = name.expression; if (isWellKnownSymbolSyntactically(nameExpression)) { var rightHandSideName = nameExpression.name.text; @@ -6118,18 +6310,18 @@ var ts; ts.isModifierKind = isModifierKind; function isParameterDeclaration(node) { var root = getRootDeclaration(node); - return root.kind === 140 /* Parameter */; + return root.kind === 141 /* Parameter */; } ts.isParameterDeclaration = isParameterDeclaration; function getRootDeclaration(node) { - while (node.kind === 167 /* BindingElement */) { + while (node.kind === 168 /* BindingElement */) { node = node.parent.parent; } return node; } ts.getRootDeclaration = getRootDeclaration; function nodeStartsNewLexicalEnvironment(n) { - return isFunctionLike(n) || n.kind === 222 /* ModuleDeclaration */ || n.kind === 252 /* SourceFile */; + return isFunctionLike(n) || n.kind === 224 /* ModuleDeclaration */ || n.kind === 255 /* SourceFile */; } ts.nodeStartsNewLexicalEnvironment = nodeStartsNewLexicalEnvironment; /** @@ -6179,7 +6371,7 @@ var ts; } ts.cloneEntityName = cloneEntityName; function isQualifiedName(node) { - return node.kind === 137 /* QualifiedName */; + return node.kind === 138 /* QualifiedName */; } ts.isQualifiedName = isQualifiedName; function nodeIsSynthesized(node) { @@ -6430,6 +6622,17 @@ var ts; return emitOutputFilePathWithoutExtension + extension; } ts.getOwnEmitOutputFilePath = getOwnEmitOutputFilePath; + function getDeclarationEmitOutputFilePath(sourceFile, host) { + var options = host.getCompilerOptions(); + var outputDir = options.declarationDir || options.outDir; // Prefer declaration folder if specified + if (options.declaration) { + var path = outputDir + ? getSourceFilePathInNewDir(sourceFile, host, outputDir) + : sourceFile.fileName; + return ts.removeFileExtension(path) + ".d.ts"; + } + } + ts.getDeclarationEmitOutputFilePath = getDeclarationEmitOutputFilePath; function getEmitScriptTarget(compilerOptions) { return compilerOptions.target || 0 /* ES3 */; } @@ -6475,21 +6678,22 @@ var ts; var emitFileNames = { jsFilePath: jsFilePath, sourceMapFilePath: getSourceMapFilePath(jsFilePath, options), - declarationFilePath: !isSourceFileJavaScript(sourceFile) ? getDeclarationEmitFilePath(jsFilePath, options) : undefined + declarationFilePath: !isSourceFileJavaScript(sourceFile) ? getDeclarationEmitOutputFilePath(sourceFile, host) : undefined }; action(emitFileNames, [sourceFile], /*isBundledEmit*/ false); } function onBundledEmit(host) { // Can emit only sources that are not declaration file and are either non module code or module with --module or --target es6 specified - var bundledSources = ts.filter(host.getSourceFiles(), function (sourceFile) { return !isDeclarationFile(sourceFile) && - (!isExternalModule(sourceFile) || - (getEmitModuleKind(options) && isExternalModule(sourceFile))); }); // module that can emit - note falsy value from getEmitModuleKind means the module kind that shouldn't be emitted + var bundledSources = ts.filter(host.getSourceFiles(), function (sourceFile) { + return !isDeclarationFile(sourceFile) // Not a declaration file + && (!ts.isExternalModule(sourceFile) || !!getEmitModuleKind(options)); + }); // and not a module, unless module emit enabled if (bundledSources.length) { var jsFilePath = options.outFile || options.out; var emitFileNames = { jsFilePath: jsFilePath, sourceMapFilePath: getSourceMapFilePath(jsFilePath, options), - declarationFilePath: getDeclarationEmitFilePath(jsFilePath, options) + declarationFilePath: options.declaration ? ts.removeFileExtension(jsFilePath) + ".d.ts" : undefined }; action(emitFileNames, bundledSources, /*isBundledEmit*/ true); } @@ -6497,9 +6701,6 @@ var ts; function getSourceMapFilePath(jsFilePath, options) { return options.sourceMap ? jsFilePath + ".map" : undefined; } - function getDeclarationEmitFilePath(jsFilePath, options) { - return options.declaration ? ts.removeFileExtension(jsFilePath) + ".d.ts" : undefined; - } } ts.forEachExpectedEmitFile = forEachExpectedEmitFile; function getSourceFilePathInNewDir(sourceFile, host, newDirPath) { @@ -6508,10 +6709,10 @@ var ts; return ts.combinePaths(newDirPath, sourceFilePath); } ts.getSourceFilePathInNewDir = getSourceFilePathInNewDir; - function writeFile(host, diagnostics, fileName, data, writeByteOrderMark) { + function writeFile(host, diagnostics, fileName, data, writeByteOrderMark, sourceFiles) { host.writeFile(fileName, data, writeByteOrderMark, function (hostErrorMessage) { diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Could_not_write_file_0_Colon_1, fileName, hostErrorMessage)); - }); + }, sourceFiles); } ts.writeFile = writeFile; function getLineOfLocalPosition(currentSourceFile, pos) { @@ -6524,7 +6725,7 @@ var ts; ts.getLineOfLocalPositionFromLineMap = getLineOfLocalPositionFromLineMap; function getFirstConstructorWithBody(node) { return ts.forEach(node.members, function (member) { - if (member.kind === 146 /* Constructor */ && nodeIsPresent(member.body)) { + if (member.kind === 147 /* Constructor */ && nodeIsPresent(member.body)) { return member; } }); @@ -6541,10 +6742,10 @@ var ts; var setAccessor; if (hasDynamicName(accessor)) { firstAccessor = accessor; - if (accessor.kind === 147 /* GetAccessor */) { + if (accessor.kind === 148 /* GetAccessor */) { getAccessor = accessor; } - else if (accessor.kind === 148 /* SetAccessor */) { + else if (accessor.kind === 149 /* SetAccessor */) { setAccessor = accessor; } else { @@ -6553,7 +6754,7 @@ var ts; } else { ts.forEach(declarations, function (member) { - if ((member.kind === 147 /* GetAccessor */ || member.kind === 148 /* SetAccessor */) + if ((member.kind === 148 /* GetAccessor */ || member.kind === 149 /* SetAccessor */) && (member.flags & 32 /* Static */) === (accessor.flags & 32 /* Static */)) { var memberName = getPropertyNameForPropertyNameNode(member.name); var accessorName = getPropertyNameForPropertyNameNode(accessor.name); @@ -6564,10 +6765,10 @@ var ts; else if (!secondAccessor) { secondAccessor = member; } - if (member.kind === 147 /* GetAccessor */ && !getAccessor) { + if (member.kind === 148 /* GetAccessor */ && !getAccessor) { getAccessor = member; } - if (member.kind === 148 /* SetAccessor */ && !setAccessor) { + if (member.kind === 149 /* SetAccessor */ && !setAccessor) { setAccessor = member; } } @@ -6778,24 +6979,25 @@ var ts; function isLeftHandSideExpression(expr) { if (expr) { switch (expr.kind) { - case 170 /* PropertyAccessExpression */: - case 171 /* ElementAccessExpression */: - case 173 /* NewExpression */: - case 172 /* CallExpression */: - case 237 /* JsxElement */: - case 238 /* JsxSelfClosingElement */: - case 174 /* TaggedTemplateExpression */: - case 168 /* ArrayLiteralExpression */: - case 176 /* ParenthesizedExpression */: - case 169 /* ObjectLiteralExpression */: - case 190 /* ClassExpression */: - case 177 /* FunctionExpression */: + case 171 /* PropertyAccessExpression */: + case 172 /* ElementAccessExpression */: + case 174 /* NewExpression */: + case 173 /* CallExpression */: + case 195 /* NonNullExpression */: + case 240 /* JsxElement */: + case 241 /* JsxSelfClosingElement */: + case 175 /* TaggedTemplateExpression */: + case 169 /* ArrayLiteralExpression */: + case 177 /* ParenthesizedExpression */: + case 170 /* ObjectLiteralExpression */: + case 191 /* ClassExpression */: + case 178 /* FunctionExpression */: case 69 /* Identifier */: case 10 /* RegularExpressionLiteral */: case 8 /* NumericLiteral */: case 9 /* StringLiteral */: case 11 /* NoSubstitutionTemplateLiteral */: - case 187 /* TemplateExpression */: + case 188 /* TemplateExpression */: case 84 /* FalseKeyword */: case 93 /* NullKeyword */: case 97 /* ThisKeyword */: @@ -6812,7 +7014,7 @@ var ts; } ts.isAssignmentOperator = isAssignmentOperator; function isExpressionWithTypeArgumentsInClassExtendsClause(node) { - return node.kind === 192 /* ExpressionWithTypeArguments */ && + return node.kind === 193 /* ExpressionWithTypeArguments */ && node.parent.token === 83 /* ExtendsKeyword */ && isClassLike(node.parent.parent); } @@ -6835,16 +7037,16 @@ var ts; } } function isRightSideOfQualifiedNameOrPropertyAccess(node) { - return (node.parent.kind === 137 /* QualifiedName */ && node.parent.right === node) || - (node.parent.kind === 170 /* PropertyAccessExpression */ && node.parent.name === node); + return (node.parent.kind === 138 /* QualifiedName */ && node.parent.right === node) || + (node.parent.kind === 171 /* PropertyAccessExpression */ && node.parent.name === node); } ts.isRightSideOfQualifiedNameOrPropertyAccess = isRightSideOfQualifiedNameOrPropertyAccess; function isEmptyObjectLiteralOrArrayLiteral(expression) { var kind = expression.kind; - if (kind === 169 /* ObjectLiteralExpression */) { + if (kind === 170 /* ObjectLiteralExpression */) { return expression.properties.length === 0; } - if (kind === 168 /* ArrayLiteralExpression */) { + if (kind === 169 /* ArrayLiteralExpression */) { return expression.elements.length === 0; } return false; @@ -6986,6 +7188,11 @@ var ts; return carriageReturnLineFeed; } ts.getNewLineCharacter = getNewLineCharacter; + function isWatchSet(options) { + // Firefox has Object.prototype.watch + return options.watch && options.hasOwnProperty("watch"); + } + ts.isWatchSet = isWatchSet; })(ts || (ts = {})); var ts; (function (ts) { @@ -7199,9 +7406,9 @@ var ts; } ts.collapseTextChangeRangesAcrossMultipleVersions = collapseTextChangeRangesAcrossMultipleVersions; function getTypeParameterOwner(d) { - if (d && d.kind === 139 /* TypeParameter */) { + if (d && d.kind === 140 /* TypeParameter */) { for (var current = d; current; current = current.parent) { - if (ts.isFunctionLike(current) || ts.isClassLike(current) || current.kind === 219 /* InterfaceDeclaration */) { + if (ts.isFunctionLike(current) || ts.isClassLike(current) || current.kind === 221 /* InterfaceDeclaration */) { return current; } } @@ -7209,9 +7416,18 @@ var ts; } ts.getTypeParameterOwner = getTypeParameterOwner; function isParameterPropertyDeclaration(node) { - return node.flags & 28 /* AccessibilityModifier */ && node.parent.kind === 146 /* Constructor */ && ts.isClassLike(node.parent.parent); + return node.flags & 28 /* AccessibilityModifier */ && node.parent.kind === 147 /* Constructor */ && ts.isClassLike(node.parent.parent); } ts.isParameterPropertyDeclaration = isParameterPropertyDeclaration; + function startsWith(str, prefix) { + return str.lastIndexOf(prefix, 0) === 0; + } + ts.startsWith = startsWith; + function endsWith(str, suffix) { + var expectedPos = str.length - suffix.length; + return str.indexOf(suffix, expectedPos) === expectedPos; + } + ts.endsWith = endsWith; })(ts || (ts = {})); /// /// @@ -7221,7 +7437,7 @@ var ts; var NodeConstructor; var SourceFileConstructor; function createNode(kind, pos, end) { - if (kind === 252 /* SourceFile */) { + if (kind === 255 /* SourceFile */) { return new (SourceFileConstructor || (SourceFileConstructor = ts.objectAllocator.getSourceFileConstructor()))(kind, pos, end); } else { @@ -7264,26 +7480,26 @@ var ts; var visitNodes = cbNodeArray ? visitNodeArray : visitEachNode; var cbNodes = cbNodeArray || cbNode; switch (node.kind) { - case 137 /* QualifiedName */: + case 138 /* QualifiedName */: return visitNode(cbNode, node.left) || visitNode(cbNode, node.right); - case 139 /* TypeParameter */: + case 140 /* TypeParameter */: return visitNode(cbNode, node.name) || visitNode(cbNode, node.constraint) || visitNode(cbNode, node.expression); - case 250 /* ShorthandPropertyAssignment */: + case 253 /* ShorthandPropertyAssignment */: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || visitNode(cbNode, node.questionToken) || visitNode(cbNode, node.equalsToken) || visitNode(cbNode, node.objectAssignmentInitializer); - case 140 /* Parameter */: - case 143 /* PropertyDeclaration */: - case 142 /* PropertySignature */: - case 249 /* PropertyAssignment */: - case 215 /* VariableDeclaration */: - case 167 /* BindingElement */: + case 141 /* Parameter */: + case 144 /* PropertyDeclaration */: + case 143 /* PropertySignature */: + case 252 /* PropertyAssignment */: + case 217 /* VariableDeclaration */: + case 168 /* BindingElement */: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.propertyName) || @@ -7292,24 +7508,24 @@ var ts; visitNode(cbNode, node.questionToken) || visitNode(cbNode, node.type) || visitNode(cbNode, node.initializer); - case 154 /* FunctionType */: - case 155 /* ConstructorType */: - case 149 /* CallSignature */: - case 150 /* ConstructSignature */: - case 151 /* IndexSignature */: + case 155 /* FunctionType */: + case 156 /* ConstructorType */: + case 150 /* CallSignature */: + case 151 /* ConstructSignature */: + case 152 /* IndexSignature */: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNodes(cbNodes, node.typeParameters) || visitNodes(cbNodes, node.parameters) || visitNode(cbNode, node.type); - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: - case 146 /* Constructor */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: - case 177 /* FunctionExpression */: - case 217 /* FunctionDeclaration */: - case 178 /* ArrowFunction */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: + case 147 /* Constructor */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: + case 178 /* FunctionExpression */: + case 219 /* FunctionDeclaration */: + case 179 /* ArrowFunction */: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.asteriskToken) || @@ -7320,290 +7536,294 @@ var ts; visitNode(cbNode, node.type) || visitNode(cbNode, node.equalsGreaterThanToken) || visitNode(cbNode, node.body); - case 153 /* TypeReference */: + case 154 /* TypeReference */: return visitNode(cbNode, node.typeName) || visitNodes(cbNodes, node.typeArguments); - case 152 /* TypePredicate */: + case 153 /* TypePredicate */: return visitNode(cbNode, node.parameterName) || visitNode(cbNode, node.type); - case 156 /* TypeQuery */: + case 157 /* TypeQuery */: return visitNode(cbNode, node.exprName); - case 157 /* TypeLiteral */: + case 158 /* TypeLiteral */: return visitNodes(cbNodes, node.members); - case 158 /* ArrayType */: + case 159 /* ArrayType */: return visitNode(cbNode, node.elementType); - case 159 /* TupleType */: + case 160 /* TupleType */: return visitNodes(cbNodes, node.elementTypes); - case 160 /* UnionType */: - case 161 /* IntersectionType */: + case 161 /* UnionType */: + case 162 /* IntersectionType */: return visitNodes(cbNodes, node.types); - case 162 /* ParenthesizedType */: + case 163 /* ParenthesizedType */: return visitNode(cbNode, node.type); - case 165 /* ObjectBindingPattern */: - case 166 /* ArrayBindingPattern */: + case 166 /* ObjectBindingPattern */: + case 167 /* ArrayBindingPattern */: return visitNodes(cbNodes, node.elements); - case 168 /* ArrayLiteralExpression */: + case 169 /* ArrayLiteralExpression */: return visitNodes(cbNodes, node.elements); - case 169 /* ObjectLiteralExpression */: + case 170 /* ObjectLiteralExpression */: return visitNodes(cbNodes, node.properties); - case 170 /* PropertyAccessExpression */: + case 171 /* PropertyAccessExpression */: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.dotToken) || visitNode(cbNode, node.name); - case 171 /* ElementAccessExpression */: + case 172 /* ElementAccessExpression */: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.argumentExpression); - case 172 /* CallExpression */: - case 173 /* NewExpression */: + case 173 /* CallExpression */: + case 174 /* NewExpression */: return visitNode(cbNode, node.expression) || visitNodes(cbNodes, node.typeArguments) || visitNodes(cbNodes, node.arguments); - case 174 /* TaggedTemplateExpression */: + case 175 /* TaggedTemplateExpression */: return visitNode(cbNode, node.tag) || visitNode(cbNode, node.template); - case 175 /* TypeAssertionExpression */: + case 176 /* TypeAssertionExpression */: return visitNode(cbNode, node.type) || visitNode(cbNode, node.expression); - case 176 /* ParenthesizedExpression */: + case 177 /* ParenthesizedExpression */: return visitNode(cbNode, node.expression); - case 179 /* DeleteExpression */: + case 180 /* DeleteExpression */: return visitNode(cbNode, node.expression); - case 180 /* TypeOfExpression */: + case 181 /* TypeOfExpression */: return visitNode(cbNode, node.expression); - case 181 /* VoidExpression */: + case 182 /* VoidExpression */: return visitNode(cbNode, node.expression); - case 183 /* PrefixUnaryExpression */: + case 184 /* PrefixUnaryExpression */: return visitNode(cbNode, node.operand); - case 188 /* YieldExpression */: + case 189 /* YieldExpression */: return visitNode(cbNode, node.asteriskToken) || visitNode(cbNode, node.expression); - case 182 /* AwaitExpression */: + case 183 /* AwaitExpression */: return visitNode(cbNode, node.expression); - case 184 /* PostfixUnaryExpression */: + case 185 /* PostfixUnaryExpression */: return visitNode(cbNode, node.operand); - case 185 /* BinaryExpression */: + case 186 /* BinaryExpression */: return visitNode(cbNode, node.left) || visitNode(cbNode, node.operatorToken) || visitNode(cbNode, node.right); - case 193 /* AsExpression */: + case 194 /* AsExpression */: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.type); - case 186 /* ConditionalExpression */: + case 195 /* NonNullExpression */: + return visitNode(cbNode, node.expression); + case 187 /* ConditionalExpression */: return visitNode(cbNode, node.condition) || visitNode(cbNode, node.questionToken) || visitNode(cbNode, node.whenTrue) || visitNode(cbNode, node.colonToken) || visitNode(cbNode, node.whenFalse); - case 189 /* SpreadElementExpression */: + case 190 /* SpreadElementExpression */: return visitNode(cbNode, node.expression); - case 196 /* Block */: - case 223 /* ModuleBlock */: + case 198 /* Block */: + case 225 /* ModuleBlock */: return visitNodes(cbNodes, node.statements); - case 252 /* SourceFile */: + case 255 /* SourceFile */: return visitNodes(cbNodes, node.statements) || visitNode(cbNode, node.endOfFileToken); - case 197 /* VariableStatement */: + case 199 /* VariableStatement */: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.declarationList); - case 216 /* VariableDeclarationList */: + case 218 /* VariableDeclarationList */: return visitNodes(cbNodes, node.declarations); - case 199 /* ExpressionStatement */: + case 201 /* ExpressionStatement */: return visitNode(cbNode, node.expression); - case 200 /* IfStatement */: + case 202 /* IfStatement */: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.thenStatement) || visitNode(cbNode, node.elseStatement); - case 201 /* DoStatement */: + case 203 /* DoStatement */: return visitNode(cbNode, node.statement) || visitNode(cbNode, node.expression); - case 202 /* WhileStatement */: + case 204 /* WhileStatement */: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.statement); - case 203 /* ForStatement */: + case 205 /* ForStatement */: return visitNode(cbNode, node.initializer) || visitNode(cbNode, node.condition) || visitNode(cbNode, node.incrementor) || visitNode(cbNode, node.statement); - case 204 /* ForInStatement */: + case 206 /* ForInStatement */: return visitNode(cbNode, node.initializer) || visitNode(cbNode, node.expression) || visitNode(cbNode, node.statement); - case 205 /* ForOfStatement */: + case 207 /* ForOfStatement */: return visitNode(cbNode, node.initializer) || visitNode(cbNode, node.expression) || visitNode(cbNode, node.statement); - case 206 /* ContinueStatement */: - case 207 /* BreakStatement */: + case 208 /* ContinueStatement */: + case 209 /* BreakStatement */: return visitNode(cbNode, node.label); - case 208 /* ReturnStatement */: + case 210 /* ReturnStatement */: return visitNode(cbNode, node.expression); - case 209 /* WithStatement */: + case 211 /* WithStatement */: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.statement); - case 210 /* SwitchStatement */: + case 212 /* SwitchStatement */: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.caseBlock); - case 224 /* CaseBlock */: + case 226 /* CaseBlock */: return visitNodes(cbNodes, node.clauses); - case 245 /* CaseClause */: + case 248 /* CaseClause */: return visitNode(cbNode, node.expression) || visitNodes(cbNodes, node.statements); - case 246 /* DefaultClause */: + case 249 /* DefaultClause */: return visitNodes(cbNodes, node.statements); - case 211 /* LabeledStatement */: + case 213 /* LabeledStatement */: return visitNode(cbNode, node.label) || visitNode(cbNode, node.statement); - case 212 /* ThrowStatement */: + case 214 /* ThrowStatement */: return visitNode(cbNode, node.expression); - case 213 /* TryStatement */: + case 215 /* TryStatement */: return visitNode(cbNode, node.tryBlock) || visitNode(cbNode, node.catchClause) || visitNode(cbNode, node.finallyBlock); - case 248 /* CatchClause */: + case 251 /* CatchClause */: return visitNode(cbNode, node.variableDeclaration) || visitNode(cbNode, node.block); - case 141 /* Decorator */: + case 142 /* Decorator */: return visitNode(cbNode, node.expression); - case 218 /* ClassDeclaration */: - case 190 /* ClassExpression */: + case 220 /* ClassDeclaration */: + case 191 /* ClassExpression */: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || visitNodes(cbNodes, node.typeParameters) || visitNodes(cbNodes, node.heritageClauses) || visitNodes(cbNodes, node.members); - case 219 /* InterfaceDeclaration */: + case 221 /* InterfaceDeclaration */: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || visitNodes(cbNodes, node.typeParameters) || visitNodes(cbNodes, node.heritageClauses) || visitNodes(cbNodes, node.members); - case 220 /* TypeAliasDeclaration */: + case 222 /* TypeAliasDeclaration */: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || visitNodes(cbNodes, node.typeParameters) || visitNode(cbNode, node.type); - case 221 /* EnumDeclaration */: + case 223 /* EnumDeclaration */: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || visitNodes(cbNodes, node.members); - case 251 /* EnumMember */: + case 254 /* EnumMember */: return visitNode(cbNode, node.name) || visitNode(cbNode, node.initializer); - case 222 /* ModuleDeclaration */: + case 224 /* ModuleDeclaration */: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || visitNode(cbNode, node.body); - case 225 /* ImportEqualsDeclaration */: + case 228 /* ImportEqualsDeclaration */: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || visitNode(cbNode, node.moduleReference); - case 226 /* ImportDeclaration */: + case 229 /* ImportDeclaration */: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.importClause) || visitNode(cbNode, node.moduleSpecifier); - case 227 /* ImportClause */: + case 230 /* ImportClause */: return visitNode(cbNode, node.name) || visitNode(cbNode, node.namedBindings); - case 228 /* NamespaceImport */: + case 227 /* GlobalModuleExportDeclaration */: return visitNode(cbNode, node.name); - case 229 /* NamedImports */: - case 233 /* NamedExports */: + case 231 /* NamespaceImport */: + return visitNode(cbNode, node.name); + case 232 /* NamedImports */: + case 236 /* NamedExports */: return visitNodes(cbNodes, node.elements); - case 232 /* ExportDeclaration */: + case 235 /* ExportDeclaration */: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.exportClause) || visitNode(cbNode, node.moduleSpecifier); - case 230 /* ImportSpecifier */: - case 234 /* ExportSpecifier */: + case 233 /* ImportSpecifier */: + case 237 /* ExportSpecifier */: return visitNode(cbNode, node.propertyName) || visitNode(cbNode, node.name); - case 231 /* ExportAssignment */: + case 234 /* ExportAssignment */: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.expression); - case 187 /* TemplateExpression */: + case 188 /* TemplateExpression */: return visitNode(cbNode, node.head) || visitNodes(cbNodes, node.templateSpans); - case 194 /* TemplateSpan */: + case 196 /* TemplateSpan */: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.literal); - case 138 /* ComputedPropertyName */: + case 139 /* ComputedPropertyName */: return visitNode(cbNode, node.expression); - case 247 /* HeritageClause */: + case 250 /* HeritageClause */: return visitNodes(cbNodes, node.types); - case 192 /* ExpressionWithTypeArguments */: + case 193 /* ExpressionWithTypeArguments */: return visitNode(cbNode, node.expression) || visitNodes(cbNodes, node.typeArguments); - case 236 /* ExternalModuleReference */: + case 239 /* ExternalModuleReference */: return visitNode(cbNode, node.expression); - case 235 /* MissingDeclaration */: + case 238 /* MissingDeclaration */: return visitNodes(cbNodes, node.decorators); - case 237 /* JsxElement */: + case 240 /* JsxElement */: return visitNode(cbNode, node.openingElement) || visitNodes(cbNodes, node.children) || visitNode(cbNode, node.closingElement); - case 238 /* JsxSelfClosingElement */: - case 239 /* JsxOpeningElement */: + case 241 /* JsxSelfClosingElement */: + case 242 /* JsxOpeningElement */: return visitNode(cbNode, node.tagName) || visitNodes(cbNodes, node.attributes); - case 242 /* JsxAttribute */: + case 245 /* JsxAttribute */: return visitNode(cbNode, node.name) || visitNode(cbNode, node.initializer); - case 243 /* JsxSpreadAttribute */: + case 246 /* JsxSpreadAttribute */: return visitNode(cbNode, node.expression); - case 244 /* JsxExpression */: + case 247 /* JsxExpression */: return visitNode(cbNode, node.expression); - case 241 /* JsxClosingElement */: + case 244 /* JsxClosingElement */: return visitNode(cbNode, node.tagName); - case 253 /* JSDocTypeExpression */: + case 256 /* JSDocTypeExpression */: return visitNode(cbNode, node.type); - case 257 /* JSDocUnionType */: + case 260 /* JSDocUnionType */: return visitNodes(cbNodes, node.types); - case 258 /* JSDocTupleType */: + case 261 /* JSDocTupleType */: return visitNodes(cbNodes, node.types); - case 256 /* JSDocArrayType */: + case 259 /* JSDocArrayType */: return visitNode(cbNode, node.elementType); - case 260 /* JSDocNonNullableType */: + case 263 /* JSDocNonNullableType */: return visitNode(cbNode, node.type); - case 259 /* JSDocNullableType */: + case 262 /* JSDocNullableType */: return visitNode(cbNode, node.type); - case 261 /* JSDocRecordType */: + case 264 /* JSDocRecordType */: return visitNodes(cbNodes, node.members); - case 263 /* JSDocTypeReference */: + case 266 /* JSDocTypeReference */: return visitNode(cbNode, node.name) || visitNodes(cbNodes, node.typeArguments); - case 264 /* JSDocOptionalType */: + case 267 /* JSDocOptionalType */: return visitNode(cbNode, node.type); - case 265 /* JSDocFunctionType */: + case 268 /* JSDocFunctionType */: return visitNodes(cbNodes, node.parameters) || visitNode(cbNode, node.type); - case 266 /* JSDocVariadicType */: + case 269 /* JSDocVariadicType */: return visitNode(cbNode, node.type); - case 267 /* JSDocConstructorType */: + case 270 /* JSDocConstructorType */: return visitNode(cbNode, node.type); - case 268 /* JSDocThisType */: + case 271 /* JSDocThisType */: return visitNode(cbNode, node.type); - case 262 /* JSDocRecordMember */: + case 265 /* JSDocRecordMember */: return visitNode(cbNode, node.name) || visitNode(cbNode, node.type); - case 269 /* JSDocComment */: + case 272 /* JSDocComment */: return visitNodes(cbNodes, node.tags); - case 271 /* JSDocParameterTag */: + case 274 /* JSDocParameterTag */: return visitNode(cbNode, node.preParameterName) || visitNode(cbNode, node.typeExpression) || visitNode(cbNode, node.postParameterName); - case 272 /* JSDocReturnTag */: + case 275 /* JSDocReturnTag */: return visitNode(cbNode, node.typeExpression); - case 273 /* JSDocTypeTag */: + case 276 /* JSDocTypeTag */: return visitNode(cbNode, node.typeExpression); - case 274 /* JSDocTemplateTag */: + case 277 /* JSDocTemplateTag */: return visitNodes(cbNodes, node.typeParameters); } } @@ -7616,23 +7836,10 @@ var ts; return result; } ts.createSourceFile = createSourceFile; - /* @internal */ - function getScriptKindFromFileName(fileName) { - var ext = fileName.substr(fileName.lastIndexOf(".")); - switch (ext.toLowerCase()) { - case ".js": - return 1 /* JS */; - case ".jsx": - return 2 /* JSX */; - case ".ts": - return 3 /* TS */; - case ".tsx": - return 4 /* TSX */; - default: - return 3 /* TS */; - } + function isExternalModule(file) { + return file.externalModuleIndicator !== undefined; } - ts.getScriptKindFromFileName = getScriptKindFromFileName; + ts.isExternalModule = isExternalModule; // Produces a new SourceFile for the 'newText' provided. The 'textChangeRange' parameter // indicates what changed between the 'text' that this SourceFile has and the 'newText'. // The SourceFile will be created with the compiler attempting to reuse as many nodes from @@ -7754,12 +7961,7 @@ var ts; // attached to the EOF token. var parseErrorBeforeNextFinishedNode = false; function parseSourceFile(fileName, _sourceText, languageVersion, _syntaxCursor, setParentNodes, scriptKind) { - // Using scriptKind as a condition handles both: - // - 'scriptKind' is unspecified and thus it is `undefined` - // - 'scriptKind' is set and it is `Unknown` (0) - // If the 'scriptKind' is 'undefined' or 'Unknown' then attempt - // to get the ScriptKind from the file name. - scriptKind = scriptKind ? scriptKind : getScriptKindFromFileName(fileName); + scriptKind = ts.ensureScriptKind(fileName, scriptKind); initializeState(fileName, _sourceText, languageVersion, _syntaxCursor, scriptKind); var result = parseSourceFileWorker(fileName, languageVersion, setParentNodes, scriptKind); clearState(); @@ -7858,7 +8060,7 @@ var ts; function createSourceFile(fileName, languageVersion, scriptKind) { // code from createNode is inlined here so createNode won't have to deal with special case of creating source files // this is quite rare comparing to other nodes and createNode should be as fast as possible - var sourceFile = new SourceFileConstructor(252 /* SourceFile */, /*pos*/ 0, /* end */ sourceText.length); + var sourceFile = new SourceFileConstructor(255 /* SourceFile */, /*pos*/ 0, /* end */ sourceText.length); nodeCount++; sourceFile.text = sourceText; sourceFile.bindDiagnostics = []; @@ -8211,7 +8413,7 @@ var ts; // PropertyName [Yield]: // LiteralPropertyName // ComputedPropertyName[?Yield] - var node = createNode(138 /* ComputedPropertyName */); + var node = createNode(139 /* ComputedPropertyName */); parseExpected(19 /* OpenBracketToken */); // We parse any expression (including a comma expression). But the grammar // says that only an assignment expression is allowed, so the grammar checker @@ -8240,7 +8442,7 @@ var ts; if (token === 77 /* DefaultKeyword */) { return lookAhead(nextTokenIsClassOrFunction); } - return token !== 37 /* AsteriskToken */ && token !== 15 /* OpenBraceToken */ && canFollowModifier(); + return token !== 37 /* AsteriskToken */ && token !== 116 /* AsKeyword */ && token !== 15 /* OpenBraceToken */ && canFollowModifier(); } if (token === 77 /* DefaultKeyword */) { return nextTokenIsClassOrFunction(); @@ -8532,7 +8734,7 @@ var ts; // differently depending on what mode it is in. // // This also applies to all our other context flags as well. - var nodeContextFlags = node.flags & 62914560 /* ContextFlags */; + var nodeContextFlags = node.flags & 197132288 /* ContextFlags */; if (nodeContextFlags !== contextFlags) { return undefined; } @@ -8612,14 +8814,14 @@ var ts; function isReusableClassMember(node) { if (node) { switch (node.kind) { - case 146 /* Constructor */: - case 151 /* IndexSignature */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: - case 143 /* PropertyDeclaration */: - case 195 /* SemicolonClassElement */: + case 147 /* Constructor */: + case 152 /* IndexSignature */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: + case 144 /* PropertyDeclaration */: + case 197 /* SemicolonClassElement */: return true; - case 145 /* MethodDeclaration */: + case 146 /* MethodDeclaration */: // Method declarations are not necessarily reusable. An object-literal // may have a method calls "constructor(...)" and we must reparse that // into an actual .ConstructorDeclaration. @@ -8634,8 +8836,8 @@ var ts; function isReusableSwitchClause(node) { if (node) { switch (node.kind) { - case 245 /* CaseClause */: - case 246 /* DefaultClause */: + case 248 /* CaseClause */: + case 249 /* DefaultClause */: return true; } } @@ -8644,58 +8846,58 @@ var ts; function isReusableStatement(node) { if (node) { switch (node.kind) { - case 217 /* FunctionDeclaration */: - case 197 /* VariableStatement */: - case 196 /* Block */: - case 200 /* IfStatement */: - case 199 /* ExpressionStatement */: - case 212 /* ThrowStatement */: - case 208 /* ReturnStatement */: - case 210 /* SwitchStatement */: - case 207 /* BreakStatement */: - case 206 /* ContinueStatement */: - case 204 /* ForInStatement */: - case 205 /* ForOfStatement */: - case 203 /* ForStatement */: - case 202 /* WhileStatement */: - case 209 /* WithStatement */: - case 198 /* EmptyStatement */: - case 213 /* TryStatement */: - case 211 /* LabeledStatement */: - case 201 /* DoStatement */: - case 214 /* DebuggerStatement */: - case 226 /* ImportDeclaration */: - case 225 /* ImportEqualsDeclaration */: - case 232 /* ExportDeclaration */: - case 231 /* ExportAssignment */: - case 222 /* ModuleDeclaration */: - case 218 /* ClassDeclaration */: - case 219 /* InterfaceDeclaration */: - case 221 /* EnumDeclaration */: - case 220 /* TypeAliasDeclaration */: + case 219 /* FunctionDeclaration */: + case 199 /* VariableStatement */: + case 198 /* Block */: + case 202 /* IfStatement */: + case 201 /* ExpressionStatement */: + case 214 /* ThrowStatement */: + case 210 /* ReturnStatement */: + case 212 /* SwitchStatement */: + case 209 /* BreakStatement */: + case 208 /* ContinueStatement */: + case 206 /* ForInStatement */: + case 207 /* ForOfStatement */: + case 205 /* ForStatement */: + case 204 /* WhileStatement */: + case 211 /* WithStatement */: + case 200 /* EmptyStatement */: + case 215 /* TryStatement */: + case 213 /* LabeledStatement */: + case 203 /* DoStatement */: + case 216 /* DebuggerStatement */: + case 229 /* ImportDeclaration */: + case 228 /* ImportEqualsDeclaration */: + case 235 /* ExportDeclaration */: + case 234 /* ExportAssignment */: + case 224 /* ModuleDeclaration */: + case 220 /* ClassDeclaration */: + case 221 /* InterfaceDeclaration */: + case 223 /* EnumDeclaration */: + case 222 /* TypeAliasDeclaration */: return true; } } return false; } function isReusableEnumMember(node) { - return node.kind === 251 /* EnumMember */; + return node.kind === 254 /* EnumMember */; } function isReusableTypeMember(node) { if (node) { switch (node.kind) { - case 150 /* ConstructSignature */: - case 144 /* MethodSignature */: - case 151 /* IndexSignature */: - case 142 /* PropertySignature */: - case 149 /* CallSignature */: + case 151 /* ConstructSignature */: + case 145 /* MethodSignature */: + case 152 /* IndexSignature */: + case 143 /* PropertySignature */: + case 150 /* CallSignature */: return true; } } return false; } function isReusableVariableDeclaration(node) { - if (node.kind !== 215 /* VariableDeclaration */) { + if (node.kind !== 217 /* VariableDeclaration */) { return false; } // Very subtle incremental parsing bug. Consider the following code: @@ -8716,7 +8918,7 @@ var ts; return variableDeclarator.initializer === undefined; } function isReusableParameter(node) { - if (node.kind !== 140 /* Parameter */) { + if (node.kind !== 141 /* Parameter */) { return false; } // See the comment in isReusableVariableDeclaration for why we do this. @@ -8833,7 +9035,7 @@ var ts; function parseEntityName(allowReservedWords, diagnosticMessage) { var entity = parseIdentifier(diagnosticMessage); while (parseOptional(21 /* DotToken */)) { - var node = createNode(137 /* QualifiedName */, entity.pos); + var node = createNode(138 /* QualifiedName */, entity.pos); node.left = entity; node.right = parseRightSideOfDot(allowReservedWords); entity = finishNode(node); @@ -8872,7 +9074,7 @@ var ts; return allowIdentifierNames ? parseIdentifierName() : parseIdentifier(); } function parseTemplateExpression() { - var template = createNode(187 /* TemplateExpression */); + var template = createNode(188 /* TemplateExpression */); template.head = parseTemplateLiteralFragment(); ts.Debug.assert(template.head.kind === 12 /* TemplateHead */, "Template head has wrong token kind"); var templateSpans = []; @@ -8885,7 +9087,7 @@ var ts; return finishNode(template); } function parseTemplateSpan() { - var span = createNode(194 /* TemplateSpan */); + var span = createNode(196 /* TemplateSpan */); span.expression = allowInAnd(parseExpression); var literal; if (token === 16 /* CloseBraceToken */) { @@ -8899,7 +9101,7 @@ var ts; return finishNode(span); } function parseStringLiteralTypeNode() { - return parseLiteralLikeNode(164 /* StringLiteralType */, /*internName*/ true); + return parseLiteralLikeNode(165 /* StringLiteralType */, /*internName*/ true); } function parseLiteralNode(internName) { return parseLiteralLikeNode(token, internName); @@ -8936,7 +9138,7 @@ var ts; // TYPES function parseTypeReference() { var typeName = parseEntityName(/*allowReservedWords*/ false, ts.Diagnostics.Type_expected); - var node = createNode(153 /* TypeReference */, typeName.pos); + var node = createNode(154 /* TypeReference */, typeName.pos); node.typeName = typeName; if (!scanner.hasPrecedingLineBreak() && token === 25 /* LessThanToken */) { node.typeArguments = parseBracketedList(18 /* TypeArguments */, parseType, 25 /* LessThanToken */, 27 /* GreaterThanToken */); @@ -8945,24 +9147,24 @@ var ts; } function parseThisTypePredicate(lhs) { nextToken(); - var node = createNode(152 /* TypePredicate */, lhs.pos); + var node = createNode(153 /* TypePredicate */, lhs.pos); node.parameterName = lhs; node.type = parseType(); return finishNode(node); } function parseThisTypeNode() { - var node = createNode(163 /* ThisType */); + var node = createNode(164 /* ThisType */); nextToken(); return finishNode(node); } function parseTypeQuery() { - var node = createNode(156 /* TypeQuery */); + var node = createNode(157 /* TypeQuery */); parseExpected(101 /* TypeOfKeyword */); node.exprName = parseEntityName(/*allowReservedWords*/ true); return finishNode(node); } function parseTypeParameter() { - var node = createNode(139 /* TypeParameter */); + var node = createNode(140 /* TypeParameter */); node.name = parseIdentifier(); if (parseOptional(83 /* ExtendsKeyword */)) { // It's not uncommon for people to write improper constraints to a generic. If the @@ -8997,7 +9199,7 @@ var ts; return undefined; } function isStartOfParameter() { - return token === 22 /* DotDotDotToken */ || isIdentifierOrPattern() || ts.isModifierKind(token) || token === 55 /* AtToken */; + return token === 22 /* DotDotDotToken */ || isIdentifierOrPattern() || ts.isModifierKind(token) || token === 55 /* AtToken */ || token === 97 /* ThisKeyword */; } function setModifiers(node, modifiers) { if (modifiers) { @@ -9006,7 +9208,12 @@ var ts; } } function parseParameter() { - var node = createNode(140 /* Parameter */); + var node = createNode(141 /* Parameter */); + if (token === 97 /* ThisKeyword */) { + node.name = createIdentifier(/*isIdentifier*/ true, undefined); + node.type = parseParameterType(); + return finishNode(node); + } node.decorators = parseDecorators(); setModifiers(node, parseModifiers()); node.dotDotDotToken = parseOptionalToken(22 /* DotDotDotToken */); @@ -9100,7 +9307,7 @@ var ts; } function parseSignatureMember(kind) { var node = createNode(kind); - if (kind === 150 /* ConstructSignature */) { + if (kind === 151 /* ConstructSignature */) { parseExpected(92 /* NewKeyword */); } fillSignature(54 /* ColonToken */, /*yieldContext*/ false, /*awaitContext*/ false, /*requireCompleteParameterList*/ false, node); @@ -9164,7 +9371,7 @@ var ts; return token === 54 /* ColonToken */ || token === 24 /* CommaToken */ || token === 20 /* CloseBracketToken */; } function parseIndexSignatureDeclaration(fullStart, decorators, modifiers) { - var node = createNode(151 /* IndexSignature */, fullStart); + var node = createNode(152 /* IndexSignature */, fullStart); node.decorators = decorators; setModifiers(node, modifiers); node.parameters = parseBracketedList(16 /* Parameters */, parseParameter, 19 /* OpenBracketToken */, 20 /* CloseBracketToken */); @@ -9176,7 +9383,7 @@ var ts; var name = parsePropertyName(); var questionToken = parseOptionalToken(53 /* QuestionToken */); if (token === 17 /* OpenParenToken */ || token === 25 /* LessThanToken */) { - var method = createNode(144 /* MethodSignature */, fullStart); + var method = createNode(145 /* MethodSignature */, fullStart); setModifiers(method, modifiers); method.name = name; method.questionToken = questionToken; @@ -9187,7 +9394,7 @@ var ts; return finishNode(method); } else { - var property = createNode(142 /* PropertySignature */, fullStart); + var property = createNode(143 /* PropertySignature */, fullStart); setModifiers(property, modifiers); property.name = name; property.questionToken = questionToken; @@ -9235,10 +9442,10 @@ var ts; } function parseTypeMember() { if (token === 17 /* OpenParenToken */ || token === 25 /* LessThanToken */) { - return parseSignatureMember(149 /* CallSignature */); + return parseSignatureMember(150 /* CallSignature */); } if (token === 92 /* NewKeyword */ && lookAhead(isStartOfConstructSignature)) { - return parseSignatureMember(150 /* ConstructSignature */); + return parseSignatureMember(151 /* ConstructSignature */); } var fullStart = getNodePos(); var modifiers = parseModifiers(); @@ -9252,7 +9459,7 @@ var ts; return token === 17 /* OpenParenToken */ || token === 25 /* LessThanToken */; } function parseTypeLiteral() { - var node = createNode(157 /* TypeLiteral */); + var node = createNode(158 /* TypeLiteral */); node.members = parseObjectTypeMembers(); return finishNode(node); } @@ -9268,12 +9475,12 @@ var ts; return members; } function parseTupleType() { - var node = createNode(159 /* TupleType */); + var node = createNode(160 /* TupleType */); node.elementTypes = parseBracketedList(19 /* TupleElementTypes */, parseType, 19 /* OpenBracketToken */, 20 /* CloseBracketToken */); return finishNode(node); } function parseParenthesizedType() { - var node = createNode(162 /* ParenthesizedType */); + var node = createNode(163 /* ParenthesizedType */); parseExpected(17 /* OpenParenToken */); node.type = parseType(); parseExpected(18 /* CloseParenToken */); @@ -9281,7 +9488,7 @@ var ts; } function parseFunctionOrConstructorType(kind) { var node = createNode(kind); - if (kind === 155 /* ConstructorType */) { + if (kind === 156 /* ConstructorType */) { parseExpected(92 /* NewKeyword */); } fillSignature(34 /* EqualsGreaterThanToken */, /*yieldContext*/ false, /*awaitContext*/ false, /*requireCompleteParameterList*/ false, node); @@ -9298,12 +9505,14 @@ var ts; case 129 /* NumberKeyword */: case 120 /* BooleanKeyword */: case 132 /* SymbolKeyword */: + case 134 /* UndefinedKeyword */: // If these are followed by a dot, then parse these out as a dotted type reference instead. var node = tryParse(parseKeywordAndNoDot); return node || parseTypeReference(); case 9 /* StringLiteral */: return parseStringLiteralTypeNode(); case 103 /* VoidKeyword */: + case 93 /* NullKeyword */: return parseTokenNode(); case 97 /* ThisKeyword */: { var thisKeyword = parseThisTypeNode(); @@ -9334,6 +9543,8 @@ var ts; case 120 /* BooleanKeyword */: case 132 /* SymbolKeyword */: case 103 /* VoidKeyword */: + case 134 /* UndefinedKeyword */: + case 93 /* NullKeyword */: case 97 /* ThisKeyword */: case 101 /* TypeOfKeyword */: case 15 /* OpenBraceToken */: @@ -9358,7 +9569,7 @@ var ts; var type = parseNonArrayType(); while (!scanner.hasPrecedingLineBreak() && parseOptional(19 /* OpenBracketToken */)) { parseExpected(20 /* CloseBracketToken */); - var node = createNode(158 /* ArrayType */, type.pos); + var node = createNode(159 /* ArrayType */, type.pos); node.elementType = type; type = finishNode(node); } @@ -9380,10 +9591,10 @@ var ts; return type; } function parseIntersectionTypeOrHigher() { - return parseUnionOrIntersectionType(161 /* IntersectionType */, parseArrayTypeOrHigher, 46 /* AmpersandToken */); + return parseUnionOrIntersectionType(162 /* IntersectionType */, parseArrayTypeOrHigher, 46 /* AmpersandToken */); } function parseUnionTypeOrHigher() { - return parseUnionOrIntersectionType(160 /* UnionType */, parseIntersectionTypeOrHigher, 47 /* BarToken */); + return parseUnionOrIntersectionType(161 /* UnionType */, parseIntersectionTypeOrHigher, 47 /* BarToken */); } function isStartOfFunctionType() { if (token === 25 /* LessThanToken */) { @@ -9396,7 +9607,7 @@ var ts; // Skip modifiers parseModifiers(); } - if (isIdentifier()) { + if (isIdentifier() || token === 97 /* ThisKeyword */) { nextToken(); return true; } @@ -9440,7 +9651,7 @@ var ts; var typePredicateVariable = isIdentifier() && tryParse(parseTypePredicatePrefix); var type = parseType(); if (typePredicateVariable) { - var node = createNode(152 /* TypePredicate */, typePredicateVariable.pos); + var node = createNode(153 /* TypePredicate */, typePredicateVariable.pos); node.parameterName = typePredicateVariable; node.type = type; return finishNode(node); @@ -9463,10 +9674,10 @@ var ts; } function parseTypeWorker() { if (isStartOfFunctionType()) { - return parseFunctionOrConstructorType(154 /* FunctionType */); + return parseFunctionOrConstructorType(155 /* FunctionType */); } if (token === 92 /* NewKeyword */) { - return parseFunctionOrConstructorType(155 /* ConstructorType */); + return parseFunctionOrConstructorType(156 /* ConstructorType */); } return parseUnionTypeOrHigher(); } @@ -9659,7 +9870,7 @@ var ts; return !scanner.hasPrecedingLineBreak() && isIdentifier(); } function parseYieldExpression() { - var node = createNode(188 /* YieldExpression */); + var node = createNode(189 /* YieldExpression */); // YieldExpression[In] : // yield // yield [no LineTerminator here] [Lexical goal InputElementRegExp]AssignmentExpression[?In, Yield] @@ -9679,8 +9890,8 @@ var ts; } function parseSimpleArrowFunctionExpression(identifier) { ts.Debug.assert(token === 34 /* EqualsGreaterThanToken */, "parseSimpleArrowFunctionExpression should only have been called if we had a =>"); - var node = createNode(178 /* ArrowFunction */, identifier.pos); - var parameter = createNode(140 /* Parameter */, identifier.pos); + var node = createNode(179 /* ArrowFunction */, identifier.pos); + var parameter = createNode(141 /* Parameter */, identifier.pos); parameter.name = identifier; finishNode(parameter); node.parameters = [parameter]; @@ -9832,7 +10043,7 @@ var ts; return parseParenthesizedArrowFunctionExpressionHead(/*allowAmbiguity*/ false); } function parseParenthesizedArrowFunctionExpressionHead(allowAmbiguity) { - var node = createNode(178 /* ArrowFunction */); + var node = createNode(179 /* ArrowFunction */); setModifiers(node, parseModifiersForArrowFunction()); var isAsync = !!(node.flags & 256 /* Async */); // Arrow functions are never generators. @@ -9898,7 +10109,7 @@ var ts; } // Note: we explicitly 'allowIn' in the whenTrue part of the condition expression, and // we do not that for the 'whenFalse' part. - var node = createNode(186 /* ConditionalExpression */, leftOperand.pos); + var node = createNode(187 /* ConditionalExpression */, leftOperand.pos); node.condition = leftOperand; node.questionToken = questionToken; node.whenTrue = doOutsideOfContext(disallowInAndDecoratorContext, parseAssignmentExpressionOrHigher); @@ -9911,7 +10122,7 @@ var ts; return parseBinaryExpressionRest(precedence, leftOperand); } function isInOrOfKeyword(t) { - return t === 90 /* InKeyword */ || t === 136 /* OfKeyword */; + return t === 90 /* InKeyword */ || t === 137 /* OfKeyword */; } function parseBinaryExpressionRest(precedence, leftOperand) { while (true) { @@ -10019,39 +10230,39 @@ var ts; return -1; } function makeBinaryExpression(left, operatorToken, right) { - var node = createNode(185 /* BinaryExpression */, left.pos); + var node = createNode(186 /* BinaryExpression */, left.pos); node.left = left; node.operatorToken = operatorToken; node.right = right; return finishNode(node); } function makeAsExpression(left, right) { - var node = createNode(193 /* AsExpression */, left.pos); + var node = createNode(194 /* AsExpression */, left.pos); node.expression = left; node.type = right; return finishNode(node); } function parsePrefixUnaryExpression() { - var node = createNode(183 /* PrefixUnaryExpression */); + var node = createNode(184 /* PrefixUnaryExpression */); node.operator = token; nextToken(); node.operand = parseSimpleUnaryExpression(); return finishNode(node); } function parseDeleteExpression() { - var node = createNode(179 /* DeleteExpression */); + var node = createNode(180 /* DeleteExpression */); nextToken(); node.expression = parseSimpleUnaryExpression(); return finishNode(node); } function parseTypeOfExpression() { - var node = createNode(180 /* TypeOfExpression */); + var node = createNode(181 /* TypeOfExpression */); nextToken(); node.expression = parseSimpleUnaryExpression(); return finishNode(node); } function parseVoidExpression() { - var node = createNode(181 /* VoidExpression */); + var node = createNode(182 /* VoidExpression */); nextToken(); node.expression = parseSimpleUnaryExpression(); return finishNode(node); @@ -10067,7 +10278,7 @@ var ts; return false; } function parseAwaitExpression() { - var node = createNode(182 /* AwaitExpression */); + var node = createNode(183 /* AwaitExpression */); nextToken(); node.expression = parseSimpleUnaryExpression(); return finishNode(node); @@ -10093,7 +10304,7 @@ var ts; var simpleUnaryExpression = parseSimpleUnaryExpression(); if (token === 38 /* AsteriskAsteriskToken */) { var start = ts.skipTrivia(sourceText, simpleUnaryExpression.pos); - if (simpleUnaryExpression.kind === 175 /* TypeAssertionExpression */) { + if (simpleUnaryExpression.kind === 176 /* TypeAssertionExpression */) { parseErrorAtPosition(start, simpleUnaryExpression.end - start, ts.Diagnostics.A_type_assertion_expression_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_expression_Consider_enclosing_the_expression_in_parentheses); } else { @@ -10183,7 +10394,7 @@ var ts; */ function parseIncrementExpression() { if (token === 41 /* PlusPlusToken */ || token === 42 /* MinusMinusToken */) { - var node = createNode(183 /* PrefixUnaryExpression */); + var node = createNode(184 /* PrefixUnaryExpression */); node.operator = token; nextToken(); node.operand = parseLeftHandSideExpressionOrHigher(); @@ -10196,7 +10407,7 @@ var ts; var expression = parseLeftHandSideExpressionOrHigher(); ts.Debug.assert(ts.isLeftHandSideExpression(expression)); if ((token === 41 /* PlusPlusToken */ || token === 42 /* MinusMinusToken */) && !scanner.hasPrecedingLineBreak()) { - var node = createNode(184 /* PostfixUnaryExpression */, expression.pos); + var node = createNode(185 /* PostfixUnaryExpression */, expression.pos); node.operand = expression; node.operator = token; nextToken(); @@ -10300,7 +10511,7 @@ var ts; } // If we have seen "super" it must be followed by '(' or '.'. // If it wasn't then just try to parse out a '.' and report an error. - var node = createNode(170 /* PropertyAccessExpression */, expression.pos); + var node = createNode(171 /* PropertyAccessExpression */, expression.pos); node.expression = expression; node.dotToken = parseExpectedToken(21 /* DotToken */, /*reportAtCurrentPosition*/ false, ts.Diagnostics.super_must_be_followed_by_an_argument_list_or_member_access); node.name = parseRightSideOfDot(/*allowIdentifierNames*/ true); @@ -10319,8 +10530,8 @@ var ts; function parseJsxElementOrSelfClosingElement(inExpressionContext) { var opening = parseJsxOpeningOrSelfClosingElement(inExpressionContext); var result; - if (opening.kind === 239 /* JsxOpeningElement */) { - var node = createNode(237 /* JsxElement */, opening.pos); + if (opening.kind === 242 /* JsxOpeningElement */) { + var node = createNode(240 /* JsxElement */, opening.pos); node.openingElement = opening; node.children = parseJsxChildren(node.openingElement.tagName); node.closingElement = parseJsxClosingElement(inExpressionContext); @@ -10330,7 +10541,7 @@ var ts; result = finishNode(node); } else { - ts.Debug.assert(opening.kind === 238 /* JsxSelfClosingElement */); + ts.Debug.assert(opening.kind === 241 /* JsxSelfClosingElement */); // Nothing else to do for self-closing elements result = opening; } @@ -10345,7 +10556,7 @@ var ts; var invalidElement = tryParse(function () { return parseJsxElementOrSelfClosingElement(/*inExpressionContext*/ true); }); if (invalidElement) { parseErrorAtCurrentToken(ts.Diagnostics.JSX_expressions_must_have_one_parent_element); - var badNode = createNode(185 /* BinaryExpression */, result.pos); + var badNode = createNode(186 /* BinaryExpression */, result.pos); badNode.end = invalidElement.end; badNode.left = result; badNode.right = invalidElement; @@ -10357,13 +10568,13 @@ var ts; return result; } function parseJsxText() { - var node = createNode(240 /* JsxText */, scanner.getStartPos()); + var node = createNode(243 /* JsxText */, scanner.getStartPos()); token = scanner.scanJsxToken(); return finishNode(node); } function parseJsxChild() { switch (token) { - case 240 /* JsxText */: + case 243 /* JsxText */: return parseJsxText(); case 15 /* OpenBraceToken */: return parseJsxExpression(/*inExpressionContext*/ false); @@ -10405,7 +10616,7 @@ var ts; // Closing tag, so scan the immediately-following text with the JSX scanning instead // of regular scanning to avoid treating illegal characters (e.g. '#') as immediate // scanning errors - node = createNode(239 /* JsxOpeningElement */, fullStart); + node = createNode(242 /* JsxOpeningElement */, fullStart); scanJsxText(); } else { @@ -10417,7 +10628,7 @@ var ts; parseExpected(27 /* GreaterThanToken */, /*diagnostic*/ undefined, /*shouldAdvance*/ false); scanJsxText(); } - node = createNode(238 /* JsxSelfClosingElement */, fullStart); + node = createNode(241 /* JsxSelfClosingElement */, fullStart); } node.tagName = tagName; node.attributes = attributes; @@ -10428,7 +10639,7 @@ var ts; var elementName = parseIdentifierName(); while (parseOptional(21 /* DotToken */)) { scanJsxIdentifier(); - var node = createNode(137 /* QualifiedName */, elementName.pos); + var node = createNode(138 /* QualifiedName */, elementName.pos); node.left = elementName; node.right = parseIdentifierName(); elementName = finishNode(node); @@ -10436,7 +10647,7 @@ var ts; return elementName; } function parseJsxExpression(inExpressionContext) { - var node = createNode(244 /* JsxExpression */); + var node = createNode(247 /* JsxExpression */); parseExpected(15 /* OpenBraceToken */); if (token !== 16 /* CloseBraceToken */) { node.expression = parseAssignmentExpressionOrHigher(); @@ -10455,7 +10666,7 @@ var ts; return parseJsxSpreadAttribute(); } scanJsxIdentifier(); - var node = createNode(242 /* JsxAttribute */); + var node = createNode(245 /* JsxAttribute */); node.name = parseIdentifierName(); if (parseOptional(56 /* EqualsToken */)) { switch (token) { @@ -10470,7 +10681,7 @@ var ts; return finishNode(node); } function parseJsxSpreadAttribute() { - var node = createNode(243 /* JsxSpreadAttribute */); + var node = createNode(246 /* JsxSpreadAttribute */); parseExpected(15 /* OpenBraceToken */); parseExpected(22 /* DotDotDotToken */); node.expression = parseExpression(); @@ -10478,7 +10689,7 @@ var ts; return finishNode(node); } function parseJsxClosingElement(inExpressionContext) { - var node = createNode(241 /* JsxClosingElement */); + var node = createNode(244 /* JsxClosingElement */); parseExpected(26 /* LessThanSlashToken */); node.tagName = parseJsxElementName(); if (inExpressionContext) { @@ -10491,7 +10702,7 @@ var ts; return finishNode(node); } function parseTypeAssertion() { - var node = createNode(175 /* TypeAssertionExpression */); + var node = createNode(176 /* TypeAssertionExpression */); parseExpected(25 /* LessThanToken */); node.type = parseType(); parseExpected(27 /* GreaterThanToken */); @@ -10502,16 +10713,23 @@ var ts; while (true) { var dotToken = parseOptionalToken(21 /* DotToken */); if (dotToken) { - var propertyAccess = createNode(170 /* PropertyAccessExpression */, expression.pos); + var propertyAccess = createNode(171 /* PropertyAccessExpression */, expression.pos); propertyAccess.expression = expression; propertyAccess.dotToken = dotToken; propertyAccess.name = parseRightSideOfDot(/*allowIdentifierNames*/ true); expression = finishNode(propertyAccess); continue; } + if (token === 49 /* ExclamationToken */ && !scanner.hasPrecedingLineBreak()) { + nextToken(); + var nonNullExpression = createNode(195 /* NonNullExpression */, expression.pos); + nonNullExpression.expression = expression; + expression = finishNode(nonNullExpression); + continue; + } // when in the [Decorator] context, we do not parse ElementAccess as it could be part of a ComputedPropertyName if (!inDecoratorContext() && parseOptional(19 /* OpenBracketToken */)) { - var indexedAccess = createNode(171 /* ElementAccessExpression */, expression.pos); + var indexedAccess = createNode(172 /* ElementAccessExpression */, expression.pos); indexedAccess.expression = expression; // It's not uncommon for a user to write: "new Type[]". // Check for that common pattern and report a better error message. @@ -10527,7 +10745,7 @@ var ts; continue; } if (token === 11 /* NoSubstitutionTemplateLiteral */ || token === 12 /* TemplateHead */) { - var tagExpression = createNode(174 /* TaggedTemplateExpression */, expression.pos); + var tagExpression = createNode(175 /* TaggedTemplateExpression */, expression.pos); tagExpression.tag = expression; tagExpression.template = token === 11 /* NoSubstitutionTemplateLiteral */ ? parseLiteralNode() @@ -10550,7 +10768,7 @@ var ts; if (!typeArguments) { return expression; } - var callExpr = createNode(172 /* CallExpression */, expression.pos); + var callExpr = createNode(173 /* CallExpression */, expression.pos); callExpr.expression = expression; callExpr.typeArguments = typeArguments; callExpr.arguments = parseArgumentList(); @@ -10558,7 +10776,7 @@ var ts; continue; } else if (token === 17 /* OpenParenToken */) { - var callExpr = createNode(172 /* CallExpression */, expression.pos); + var callExpr = createNode(173 /* CallExpression */, expression.pos); callExpr.expression = expression; callExpr.arguments = parseArgumentList(); expression = finishNode(callExpr); @@ -10668,28 +10886,28 @@ var ts; return parseIdentifier(ts.Diagnostics.Expression_expected); } function parseParenthesizedExpression() { - var node = createNode(176 /* ParenthesizedExpression */); + var node = createNode(177 /* ParenthesizedExpression */); parseExpected(17 /* OpenParenToken */); node.expression = allowInAnd(parseExpression); parseExpected(18 /* CloseParenToken */); return finishNode(node); } function parseSpreadElement() { - var node = createNode(189 /* SpreadElementExpression */); + var node = createNode(190 /* SpreadElementExpression */); parseExpected(22 /* DotDotDotToken */); node.expression = parseAssignmentExpressionOrHigher(); return finishNode(node); } function parseArgumentOrArrayLiteralElement() { return token === 22 /* DotDotDotToken */ ? parseSpreadElement() : - token === 24 /* CommaToken */ ? createNode(191 /* OmittedExpression */) : + token === 24 /* CommaToken */ ? createNode(192 /* OmittedExpression */) : parseAssignmentExpressionOrHigher(); } function parseArgumentExpression() { return doOutsideOfContext(disallowInAndDecoratorContext, parseArgumentOrArrayLiteralElement); } function parseArrayLiteralExpression() { - var node = createNode(168 /* ArrayLiteralExpression */); + var node = createNode(169 /* ArrayLiteralExpression */); parseExpected(19 /* OpenBracketToken */); if (scanner.hasPrecedingLineBreak()) { node.multiLine = true; @@ -10700,10 +10918,10 @@ var ts; } function tryParseAccessorDeclaration(fullStart, decorators, modifiers) { if (parseContextualModifier(123 /* GetKeyword */)) { - return parseAccessorDeclaration(147 /* GetAccessor */, fullStart, decorators, modifiers); + return addJSDocComment(parseAccessorDeclaration(148 /* GetAccessor */, fullStart, decorators, modifiers)); } else if (parseContextualModifier(130 /* SetKeyword */)) { - return parseAccessorDeclaration(148 /* SetAccessor */, fullStart, decorators, modifiers); + return parseAccessorDeclaration(149 /* SetAccessor */, fullStart, decorators, modifiers); } return undefined; } @@ -10730,7 +10948,7 @@ var ts; // this is necessary because ObjectLiteral productions are also used to cover grammar for ObjectAssignmentPattern var isShorthandPropertyAssignment = tokenIsIdentifier && (token === 24 /* CommaToken */ || token === 16 /* CloseBraceToken */ || token === 56 /* EqualsToken */); if (isShorthandPropertyAssignment) { - var shorthandDeclaration = createNode(250 /* ShorthandPropertyAssignment */, fullStart); + var shorthandDeclaration = createNode(253 /* ShorthandPropertyAssignment */, fullStart); shorthandDeclaration.name = propertyName; shorthandDeclaration.questionToken = questionToken; var equalsToken = parseOptionalToken(56 /* EqualsToken */); @@ -10741,7 +10959,7 @@ var ts; return addJSDocComment(finishNode(shorthandDeclaration)); } else { - var propertyAssignment = createNode(249 /* PropertyAssignment */, fullStart); + var propertyAssignment = createNode(252 /* PropertyAssignment */, fullStart); propertyAssignment.modifiers = modifiers; propertyAssignment.name = propertyName; propertyAssignment.questionToken = questionToken; @@ -10751,7 +10969,7 @@ var ts; } } function parseObjectLiteralExpression() { - var node = createNode(169 /* ObjectLiteralExpression */); + var node = createNode(170 /* ObjectLiteralExpression */); parseExpected(15 /* OpenBraceToken */); if (scanner.hasPrecedingLineBreak()) { node.multiLine = true; @@ -10770,7 +10988,7 @@ var ts; if (saveDecoratorContext) { setDecoratorContext(/*val*/ false); } - var node = createNode(177 /* FunctionExpression */); + var node = createNode(178 /* FunctionExpression */); setModifiers(node, parseModifiers()); parseExpected(87 /* FunctionKeyword */); node.asteriskToken = parseOptionalToken(37 /* AsteriskToken */); @@ -10792,7 +11010,7 @@ var ts; return isIdentifier() ? parseIdentifier() : undefined; } function parseNewExpression() { - var node = createNode(173 /* NewExpression */); + var node = createNode(174 /* NewExpression */); parseExpected(92 /* NewKeyword */); node.expression = parseMemberExpressionOrHigher(); node.typeArguments = tryParse(parseTypeArgumentsInExpression); @@ -10803,7 +11021,7 @@ var ts; } // STATEMENTS function parseBlock(ignoreMissingOpenBrace, diagnosticMessage) { - var node = createNode(196 /* Block */); + var node = createNode(198 /* Block */); if (parseExpected(15 /* OpenBraceToken */, diagnosticMessage) || ignoreMissingOpenBrace) { node.statements = parseList(1 /* BlockStatements */, parseStatement); parseExpected(16 /* CloseBraceToken */); @@ -10833,12 +11051,12 @@ var ts; return block; } function parseEmptyStatement() { - var node = createNode(198 /* EmptyStatement */); + var node = createNode(200 /* EmptyStatement */); parseExpected(23 /* SemicolonToken */); return finishNode(node); } function parseIfStatement() { - var node = createNode(200 /* IfStatement */); + var node = createNode(202 /* IfStatement */); parseExpected(88 /* IfKeyword */); parseExpected(17 /* OpenParenToken */); node.expression = allowInAnd(parseExpression); @@ -10848,7 +11066,7 @@ var ts; return finishNode(node); } function parseDoStatement() { - var node = createNode(201 /* DoStatement */); + var node = createNode(203 /* DoStatement */); parseExpected(79 /* DoKeyword */); node.statement = parseStatement(); parseExpected(104 /* WhileKeyword */); @@ -10863,7 +11081,7 @@ var ts; return finishNode(node); } function parseWhileStatement() { - var node = createNode(202 /* WhileStatement */); + var node = createNode(204 /* WhileStatement */); parseExpected(104 /* WhileKeyword */); parseExpected(17 /* OpenParenToken */); node.expression = allowInAnd(parseExpression); @@ -10886,21 +11104,21 @@ var ts; } var forOrForInOrForOfStatement; if (parseOptional(90 /* InKeyword */)) { - var forInStatement = createNode(204 /* ForInStatement */, pos); + var forInStatement = createNode(206 /* ForInStatement */, pos); forInStatement.initializer = initializer; forInStatement.expression = allowInAnd(parseExpression); parseExpected(18 /* CloseParenToken */); forOrForInOrForOfStatement = forInStatement; } - else if (parseOptional(136 /* OfKeyword */)) { - var forOfStatement = createNode(205 /* ForOfStatement */, pos); + else if (parseOptional(137 /* OfKeyword */)) { + var forOfStatement = createNode(207 /* ForOfStatement */, pos); forOfStatement.initializer = initializer; forOfStatement.expression = allowInAnd(parseAssignmentExpressionOrHigher); parseExpected(18 /* CloseParenToken */); forOrForInOrForOfStatement = forOfStatement; } else { - var forStatement = createNode(203 /* ForStatement */, pos); + var forStatement = createNode(205 /* ForStatement */, pos); forStatement.initializer = initializer; parseExpected(23 /* SemicolonToken */); if (token !== 23 /* SemicolonToken */ && token !== 18 /* CloseParenToken */) { @@ -10918,7 +11136,7 @@ var ts; } function parseBreakOrContinueStatement(kind) { var node = createNode(kind); - parseExpected(kind === 207 /* BreakStatement */ ? 70 /* BreakKeyword */ : 75 /* ContinueKeyword */); + parseExpected(kind === 209 /* BreakStatement */ ? 70 /* BreakKeyword */ : 75 /* ContinueKeyword */); if (!canParseSemicolon()) { node.label = parseIdentifier(); } @@ -10926,7 +11144,7 @@ var ts; return finishNode(node); } function parseReturnStatement() { - var node = createNode(208 /* ReturnStatement */); + var node = createNode(210 /* ReturnStatement */); parseExpected(94 /* ReturnKeyword */); if (!canParseSemicolon()) { node.expression = allowInAnd(parseExpression); @@ -10935,7 +11153,7 @@ var ts; return finishNode(node); } function parseWithStatement() { - var node = createNode(209 /* WithStatement */); + var node = createNode(211 /* WithStatement */); parseExpected(105 /* WithKeyword */); parseExpected(17 /* OpenParenToken */); node.expression = allowInAnd(parseExpression); @@ -10944,7 +11162,7 @@ var ts; return finishNode(node); } function parseCaseClause() { - var node = createNode(245 /* CaseClause */); + var node = createNode(248 /* CaseClause */); parseExpected(71 /* CaseKeyword */); node.expression = allowInAnd(parseExpression); parseExpected(54 /* ColonToken */); @@ -10952,7 +11170,7 @@ var ts; return finishNode(node); } function parseDefaultClause() { - var node = createNode(246 /* DefaultClause */); + var node = createNode(249 /* DefaultClause */); parseExpected(77 /* DefaultKeyword */); parseExpected(54 /* ColonToken */); node.statements = parseList(3 /* SwitchClauseStatements */, parseStatement); @@ -10962,12 +11180,12 @@ var ts; return token === 71 /* CaseKeyword */ ? parseCaseClause() : parseDefaultClause(); } function parseSwitchStatement() { - var node = createNode(210 /* SwitchStatement */); + var node = createNode(212 /* SwitchStatement */); parseExpected(96 /* SwitchKeyword */); parseExpected(17 /* OpenParenToken */); node.expression = allowInAnd(parseExpression); parseExpected(18 /* CloseParenToken */); - var caseBlock = createNode(224 /* CaseBlock */, scanner.getStartPos()); + var caseBlock = createNode(226 /* CaseBlock */, scanner.getStartPos()); parseExpected(15 /* OpenBraceToken */); caseBlock.clauses = parseList(2 /* SwitchClauses */, parseCaseOrDefaultClause); parseExpected(16 /* CloseBraceToken */); @@ -10982,7 +11200,7 @@ var ts; // directly as that might consume an expression on the following line. // We just return 'undefined' in that case. The actual error will be reported in the // grammar walker. - var node = createNode(212 /* ThrowStatement */); + var node = createNode(214 /* ThrowStatement */); parseExpected(98 /* ThrowKeyword */); node.expression = scanner.hasPrecedingLineBreak() ? undefined : allowInAnd(parseExpression); parseSemicolon(); @@ -10990,7 +11208,7 @@ var ts; } // TODO: Review for error recovery function parseTryStatement() { - var node = createNode(213 /* TryStatement */); + var node = createNode(215 /* TryStatement */); parseExpected(100 /* TryKeyword */); node.tryBlock = parseBlock(/*ignoreMissingOpenBrace*/ false); node.catchClause = token === 72 /* CatchKeyword */ ? parseCatchClause() : undefined; @@ -11003,7 +11221,7 @@ var ts; return finishNode(node); } function parseCatchClause() { - var result = createNode(248 /* CatchClause */); + var result = createNode(251 /* CatchClause */); parseExpected(72 /* CatchKeyword */); if (parseExpected(17 /* OpenParenToken */)) { result.variableDeclaration = parseVariableDeclaration(); @@ -11013,7 +11231,7 @@ var ts; return finishNode(result); } function parseDebuggerStatement() { - var node = createNode(214 /* DebuggerStatement */); + var node = createNode(216 /* DebuggerStatement */); parseExpected(76 /* DebuggerKeyword */); parseSemicolon(); return finishNode(node); @@ -11025,13 +11243,13 @@ var ts; var fullStart = scanner.getStartPos(); var expression = allowInAnd(parseExpression); if (expression.kind === 69 /* Identifier */ && parseOptional(54 /* ColonToken */)) { - var labeledStatement = createNode(211 /* LabeledStatement */, fullStart); + var labeledStatement = createNode(213 /* LabeledStatement */, fullStart); labeledStatement.label = expression; labeledStatement.statement = parseStatement(); return addJSDocComment(finishNode(labeledStatement)); } else { - var expressionStatement = createNode(199 /* ExpressionStatement */, fullStart); + var expressionStatement = createNode(201 /* ExpressionStatement */, fullStart); expressionStatement.expression = expression; parseSemicolon(); return addJSDocComment(finishNode(expressionStatement)); @@ -11099,8 +11317,9 @@ var ts; return false; } continue; - case 135 /* GlobalKeyword */: - return nextToken() === 15 /* OpenBraceToken */; + case 136 /* GlobalKeyword */: + nextToken(); + return token === 15 /* OpenBraceToken */ || token === 69 /* Identifier */ || token === 82 /* ExportKeyword */; case 89 /* ImportKeyword */: nextToken(); return token === 9 /* StringLiteral */ || token === 37 /* AsteriskToken */ || @@ -11108,7 +11327,8 @@ var ts; case 82 /* ExportKeyword */: nextToken(); if (token === 56 /* EqualsToken */ || token === 37 /* AsteriskToken */ || - token === 15 /* OpenBraceToken */ || token === 77 /* DefaultKeyword */) { + token === 15 /* OpenBraceToken */ || token === 77 /* DefaultKeyword */ || + token === 116 /* AsKeyword */) { return true; } continue; @@ -11160,7 +11380,7 @@ var ts; case 125 /* ModuleKeyword */: case 126 /* NamespaceKeyword */: case 133 /* TypeKeyword */: - case 135 /* GlobalKeyword */: + case 136 /* GlobalKeyword */: // When these don't start a declaration, they're an identifier in an expression statement return true; case 112 /* PublicKeyword */: @@ -11210,9 +11430,9 @@ var ts; case 86 /* ForKeyword */: return parseForOrForInOrForOfStatement(); case 75 /* ContinueKeyword */: - return parseBreakOrContinueStatement(206 /* ContinueStatement */); + return parseBreakOrContinueStatement(208 /* ContinueStatement */); case 70 /* BreakKeyword */: - return parseBreakOrContinueStatement(207 /* BreakStatement */); + return parseBreakOrContinueStatement(209 /* BreakStatement */); case 94 /* ReturnKeyword */: return parseReturnStatement(); case 105 /* WithKeyword */: @@ -11246,7 +11466,7 @@ var ts; case 115 /* AbstractKeyword */: case 113 /* StaticKeyword */: case 127 /* ReadonlyKeyword */: - case 135 /* GlobalKeyword */: + case 136 /* GlobalKeyword */: if (isStartOfDeclaration()) { return parseDeclaration(); } @@ -11273,7 +11493,7 @@ var ts; return parseTypeAliasDeclaration(fullStart, decorators, modifiers); case 81 /* EnumKeyword */: return parseEnumDeclaration(fullStart, decorators, modifiers); - case 135 /* GlobalKeyword */: + case 136 /* GlobalKeyword */: case 125 /* ModuleKeyword */: case 126 /* NamespaceKeyword */: return parseModuleDeclaration(fullStart, decorators, modifiers); @@ -11281,14 +11501,20 @@ var ts; return parseImportDeclarationOrImportEqualsDeclaration(fullStart, decorators, modifiers); case 82 /* ExportKeyword */: nextToken(); - return token === 77 /* DefaultKeyword */ || token === 56 /* EqualsToken */ ? - parseExportAssignment(fullStart, decorators, modifiers) : - parseExportDeclaration(fullStart, decorators, modifiers); + switch (token) { + case 77 /* DefaultKeyword */: + case 56 /* EqualsToken */: + return parseExportAssignment(fullStart, decorators, modifiers); + case 116 /* AsKeyword */: + return parseGlobalModuleExportDeclaration(fullStart, decorators, modifiers); + default: + return parseExportDeclaration(fullStart, decorators, modifiers); + } default: if (decorators || modifiers) { // We reached this point because we encountered decorators and/or modifiers and assumed a declaration // would follow. For recovery and error reporting purposes, return an incomplete declaration. - var node = createMissingNode(235 /* MissingDeclaration */, /*reportAtCurrentPosition*/ true, ts.Diagnostics.Declaration_expected); + var node = createMissingNode(238 /* MissingDeclaration */, /*reportAtCurrentPosition*/ true, ts.Diagnostics.Declaration_expected); node.pos = fullStart; node.decorators = decorators; setModifiers(node, modifiers); @@ -11310,16 +11536,16 @@ var ts; // DECLARATIONS function parseArrayBindingElement() { if (token === 24 /* CommaToken */) { - return createNode(191 /* OmittedExpression */); + return createNode(192 /* OmittedExpression */); } - var node = createNode(167 /* BindingElement */); + var node = createNode(168 /* BindingElement */); node.dotDotDotToken = parseOptionalToken(22 /* DotDotDotToken */); node.name = parseIdentifierOrPattern(); node.initializer = parseBindingElementInitializer(/*inParameter*/ false); return finishNode(node); } function parseObjectBindingElement() { - var node = createNode(167 /* BindingElement */); + var node = createNode(168 /* BindingElement */); var tokenIsIdentifier = isIdentifier(); var propertyName = parsePropertyName(); if (tokenIsIdentifier && token !== 54 /* ColonToken */) { @@ -11334,14 +11560,14 @@ var ts; return finishNode(node); } function parseObjectBindingPattern() { - var node = createNode(165 /* ObjectBindingPattern */); + var node = createNode(166 /* ObjectBindingPattern */); parseExpected(15 /* OpenBraceToken */); node.elements = parseDelimitedList(9 /* ObjectBindingElements */, parseObjectBindingElement); parseExpected(16 /* CloseBraceToken */); return finishNode(node); } function parseArrayBindingPattern() { - var node = createNode(166 /* ArrayBindingPattern */); + var node = createNode(167 /* ArrayBindingPattern */); parseExpected(19 /* OpenBracketToken */); node.elements = parseDelimitedList(10 /* ArrayBindingElements */, parseArrayBindingElement); parseExpected(20 /* CloseBracketToken */); @@ -11360,7 +11586,7 @@ var ts; return parseIdentifier(); } function parseVariableDeclaration() { - var node = createNode(215 /* VariableDeclaration */); + var node = createNode(217 /* VariableDeclaration */); node.name = parseIdentifierOrPattern(); node.type = parseTypeAnnotation(); if (!isInOrOfKeyword(token)) { @@ -11369,7 +11595,7 @@ var ts; return finishNode(node); } function parseVariableDeclarationList(inForStatementInitializer) { - var node = createNode(216 /* VariableDeclarationList */); + var node = createNode(218 /* VariableDeclarationList */); switch (token) { case 102 /* VarKeyword */: break; @@ -11392,7 +11618,7 @@ var ts; // So we need to look ahead to determine if 'of' should be treated as a keyword in // this context. // The checker will then give an error that there is an empty declaration list. - if (token === 136 /* OfKeyword */ && lookAhead(canFollowContextualOfKeyword)) { + if (token === 137 /* OfKeyword */ && lookAhead(canFollowContextualOfKeyword)) { node.declarations = createMissingList(); } else { @@ -11407,7 +11633,7 @@ var ts; return nextTokenIsIdentifier() && nextToken() === 18 /* CloseParenToken */; } function parseVariableStatement(fullStart, decorators, modifiers) { - var node = createNode(197 /* VariableStatement */, fullStart); + var node = createNode(199 /* VariableStatement */, fullStart); node.decorators = decorators; setModifiers(node, modifiers); node.declarationList = parseVariableDeclarationList(/*inForStatementInitializer*/ false); @@ -11415,7 +11641,7 @@ var ts; return addJSDocComment(finishNode(node)); } function parseFunctionDeclaration(fullStart, decorators, modifiers) { - var node = createNode(217 /* FunctionDeclaration */, fullStart); + var node = createNode(219 /* FunctionDeclaration */, fullStart); node.decorators = decorators; setModifiers(node, modifiers); parseExpected(87 /* FunctionKeyword */); @@ -11428,7 +11654,7 @@ var ts; return addJSDocComment(finishNode(node)); } function parseConstructorDeclaration(pos, decorators, modifiers) { - var node = createNode(146 /* Constructor */, pos); + var node = createNode(147 /* Constructor */, pos); node.decorators = decorators; setModifiers(node, modifiers); parseExpected(121 /* ConstructorKeyword */); @@ -11437,7 +11663,7 @@ var ts; return addJSDocComment(finishNode(node)); } function parseMethodDeclaration(fullStart, decorators, modifiers, asteriskToken, name, questionToken, diagnosticMessage) { - var method = createNode(145 /* MethodDeclaration */, fullStart); + var method = createNode(146 /* MethodDeclaration */, fullStart); method.decorators = decorators; setModifiers(method, modifiers); method.asteriskToken = asteriskToken; @@ -11450,7 +11676,7 @@ var ts; return addJSDocComment(finishNode(method)); } function parsePropertyDeclaration(fullStart, decorators, modifiers, name, questionToken) { - var property = createNode(143 /* PropertyDeclaration */, fullStart); + var property = createNode(144 /* PropertyDeclaration */, fullStart); property.decorators = decorators; setModifiers(property, modifiers); property.name = name; @@ -11577,7 +11803,7 @@ var ts; decorators = []; decorators.pos = decoratorStart; } - var decorator = createNode(141 /* Decorator */, decoratorStart); + var decorator = createNode(142 /* Decorator */, decoratorStart); decorator.expression = doInDecoratorContext(parseLeftHandSideExpressionOrHigher); decorators.push(finishNode(decorator)); } @@ -11642,7 +11868,7 @@ var ts; } function parseClassElement() { if (token === 23 /* SemicolonToken */) { - var result = createNode(195 /* SemicolonClassElement */); + var result = createNode(197 /* SemicolonClassElement */); nextToken(); return finishNode(result); } @@ -11680,10 +11906,10 @@ var ts; return parseClassDeclarationOrExpression( /*fullStart*/ scanner.getStartPos(), /*decorators*/ undefined, - /*modifiers*/ undefined, 190 /* ClassExpression */); + /*modifiers*/ undefined, 191 /* ClassExpression */); } function parseClassDeclaration(fullStart, decorators, modifiers) { - return parseClassDeclarationOrExpression(fullStart, decorators, modifiers, 218 /* ClassDeclaration */); + return parseClassDeclarationOrExpression(fullStart, decorators, modifiers, 220 /* ClassDeclaration */); } function parseClassDeclarationOrExpression(fullStart, decorators, modifiers, kind) { var node = createNode(kind, fullStart); @@ -11727,7 +11953,7 @@ var ts; } function parseHeritageClause() { if (token === 83 /* ExtendsKeyword */ || token === 106 /* ImplementsKeyword */) { - var node = createNode(247 /* HeritageClause */); + var node = createNode(250 /* HeritageClause */); node.token = token; nextToken(); node.types = parseDelimitedList(7 /* HeritageClauseElement */, parseExpressionWithTypeArguments); @@ -11736,7 +11962,7 @@ var ts; return undefined; } function parseExpressionWithTypeArguments() { - var node = createNode(192 /* ExpressionWithTypeArguments */); + var node = createNode(193 /* ExpressionWithTypeArguments */); node.expression = parseLeftHandSideExpressionOrHigher(); if (token === 25 /* LessThanToken */) { node.typeArguments = parseBracketedList(18 /* TypeArguments */, parseType, 25 /* LessThanToken */, 27 /* GreaterThanToken */); @@ -11750,7 +11976,7 @@ var ts; return parseList(5 /* ClassMembers */, parseClassElement); } function parseInterfaceDeclaration(fullStart, decorators, modifiers) { - var node = createNode(219 /* InterfaceDeclaration */, fullStart); + var node = createNode(221 /* InterfaceDeclaration */, fullStart); node.decorators = decorators; setModifiers(node, modifiers); parseExpected(107 /* InterfaceKeyword */); @@ -11761,7 +11987,7 @@ var ts; return finishNode(node); } function parseTypeAliasDeclaration(fullStart, decorators, modifiers) { - var node = createNode(220 /* TypeAliasDeclaration */, fullStart); + var node = createNode(222 /* TypeAliasDeclaration */, fullStart); node.decorators = decorators; setModifiers(node, modifiers); parseExpected(133 /* TypeKeyword */); @@ -11777,13 +12003,13 @@ var ts; // ConstantEnumMemberSection, which starts at the beginning of an enum declaration // or any time an integer literal initializer is encountered. function parseEnumMember() { - var node = createNode(251 /* EnumMember */, scanner.getStartPos()); + var node = createNode(254 /* EnumMember */, scanner.getStartPos()); node.name = parsePropertyName(); node.initializer = allowInAnd(parseNonParameterInitializer); return finishNode(node); } function parseEnumDeclaration(fullStart, decorators, modifiers) { - var node = createNode(221 /* EnumDeclaration */, fullStart); + var node = createNode(223 /* EnumDeclaration */, fullStart); node.decorators = decorators; setModifiers(node, modifiers); parseExpected(81 /* EnumKeyword */); @@ -11798,7 +12024,7 @@ var ts; return finishNode(node); } function parseModuleBlock() { - var node = createNode(223 /* ModuleBlock */, scanner.getStartPos()); + var node = createNode(225 /* ModuleBlock */, scanner.getStartPos()); if (parseExpected(15 /* OpenBraceToken */)) { node.statements = parseList(1 /* BlockStatements */, parseStatement); parseExpected(16 /* CloseBraceToken */); @@ -11809,7 +12035,7 @@ var ts; return finishNode(node); } function parseModuleOrNamespaceDeclaration(fullStart, decorators, modifiers, flags) { - var node = createNode(222 /* ModuleDeclaration */, fullStart); + var node = createNode(224 /* ModuleDeclaration */, fullStart); // If we are parsing a dotted namespace name, we want to // propagate the 'Namespace' flag across the names if set. var namespaceFlag = flags & 4096 /* Namespace */; @@ -11823,10 +12049,10 @@ var ts; return finishNode(node); } function parseAmbientExternalModuleDeclaration(fullStart, decorators, modifiers) { - var node = createNode(222 /* ModuleDeclaration */, fullStart); + var node = createNode(224 /* ModuleDeclaration */, fullStart); node.decorators = decorators; setModifiers(node, modifiers); - if (token === 135 /* GlobalKeyword */) { + if (token === 136 /* GlobalKeyword */) { // parse 'global' as name of global scope augmentation node.name = parseIdentifier(); node.flags |= 131072 /* GlobalAugmentation */; @@ -11839,7 +12065,7 @@ var ts; } function parseModuleDeclaration(fullStart, decorators, modifiers) { var flags = modifiers ? modifiers.flags : 0; - if (token === 135 /* GlobalKeyword */) { + if (token === 136 /* GlobalKeyword */) { // global augmentation return parseAmbientExternalModuleDeclaration(fullStart, decorators, modifiers); } @@ -11864,17 +12090,27 @@ var ts; function nextTokenIsSlash() { return nextToken() === 39 /* SlashToken */; } + function parseGlobalModuleExportDeclaration(fullStart, decorators, modifiers) { + var exportDeclaration = createNode(227 /* GlobalModuleExportDeclaration */, fullStart); + exportDeclaration.decorators = decorators; + exportDeclaration.modifiers = modifiers; + parseExpected(116 /* AsKeyword */); + parseExpected(126 /* NamespaceKeyword */); + exportDeclaration.name = parseIdentifier(); + parseExpected(23 /* SemicolonToken */); + return finishNode(exportDeclaration); + } function parseImportDeclarationOrImportEqualsDeclaration(fullStart, decorators, modifiers) { parseExpected(89 /* ImportKeyword */); var afterImportPos = scanner.getStartPos(); var identifier; if (isIdentifier()) { identifier = parseIdentifier(); - if (token !== 24 /* CommaToken */ && token !== 134 /* FromKeyword */) { + if (token !== 24 /* CommaToken */ && token !== 135 /* FromKeyword */) { // ImportEquals declaration of type: // import x = require("mod"); or // import x = M.x; - var importEqualsDeclaration = createNode(225 /* ImportEqualsDeclaration */, fullStart); + var importEqualsDeclaration = createNode(228 /* ImportEqualsDeclaration */, fullStart); importEqualsDeclaration.decorators = decorators; setModifiers(importEqualsDeclaration, modifiers); importEqualsDeclaration.name = identifier; @@ -11885,7 +12121,7 @@ var ts; } } // Import statement - var importDeclaration = createNode(226 /* ImportDeclaration */, fullStart); + var importDeclaration = createNode(229 /* ImportDeclaration */, fullStart); importDeclaration.decorators = decorators; setModifiers(importDeclaration, modifiers); // ImportDeclaration: @@ -11895,7 +12131,7 @@ var ts; token === 37 /* AsteriskToken */ || token === 15 /* OpenBraceToken */) { importDeclaration.importClause = parseImportClause(identifier, afterImportPos); - parseExpected(134 /* FromKeyword */); + parseExpected(135 /* FromKeyword */); } importDeclaration.moduleSpecifier = parseModuleSpecifier(); parseSemicolon(); @@ -11908,7 +12144,7 @@ var ts; // NamedImports // ImportedDefaultBinding, NameSpaceImport // ImportedDefaultBinding, NamedImports - var importClause = createNode(227 /* ImportClause */, fullStart); + var importClause = createNode(230 /* ImportClause */, fullStart); if (identifier) { // ImportedDefaultBinding: // ImportedBinding @@ -11918,7 +12154,7 @@ var ts; // parse namespace or named imports if (!importClause.name || parseOptional(24 /* CommaToken */)) { - importClause.namedBindings = token === 37 /* AsteriskToken */ ? parseNamespaceImport() : parseNamedImportsOrExports(229 /* NamedImports */); + importClause.namedBindings = token === 37 /* AsteriskToken */ ? parseNamespaceImport() : parseNamedImportsOrExports(232 /* NamedImports */); } return finishNode(importClause); } @@ -11928,7 +12164,7 @@ var ts; : parseEntityName(/*allowReservedWords*/ false); } function parseExternalModuleReference() { - var node = createNode(236 /* ExternalModuleReference */); + var node = createNode(239 /* ExternalModuleReference */); parseExpected(128 /* RequireKeyword */); parseExpected(17 /* OpenParenToken */); node.expression = parseModuleSpecifier(); @@ -11951,7 +12187,7 @@ var ts; function parseNamespaceImport() { // NameSpaceImport: // * as ImportedBinding - var namespaceImport = createNode(228 /* NamespaceImport */); + var namespaceImport = createNode(231 /* NamespaceImport */); parseExpected(37 /* AsteriskToken */); parseExpected(116 /* AsKeyword */); namespaceImport.name = parseIdentifier(); @@ -11966,14 +12202,14 @@ var ts; // ImportsList: // ImportSpecifier // ImportsList, ImportSpecifier - node.elements = parseBracketedList(21 /* ImportOrExportSpecifiers */, kind === 229 /* NamedImports */ ? parseImportSpecifier : parseExportSpecifier, 15 /* OpenBraceToken */, 16 /* CloseBraceToken */); + node.elements = parseBracketedList(21 /* ImportOrExportSpecifiers */, kind === 232 /* NamedImports */ ? parseImportSpecifier : parseExportSpecifier, 15 /* OpenBraceToken */, 16 /* CloseBraceToken */); return finishNode(node); } function parseExportSpecifier() { - return parseImportOrExportSpecifier(234 /* ExportSpecifier */); + return parseImportOrExportSpecifier(237 /* ExportSpecifier */); } function parseImportSpecifier() { - return parseImportOrExportSpecifier(230 /* ImportSpecifier */); + return parseImportOrExportSpecifier(233 /* ImportSpecifier */); } function parseImportOrExportSpecifier(kind) { var node = createNode(kind); @@ -11998,27 +12234,27 @@ var ts; else { node.name = identifierName; } - if (kind === 230 /* ImportSpecifier */ && checkIdentifierIsKeyword) { + if (kind === 233 /* ImportSpecifier */ && checkIdentifierIsKeyword) { // Report error identifier expected parseErrorAtPosition(checkIdentifierStart, checkIdentifierEnd - checkIdentifierStart, ts.Diagnostics.Identifier_expected); } return finishNode(node); } function parseExportDeclaration(fullStart, decorators, modifiers) { - var node = createNode(232 /* ExportDeclaration */, fullStart); + var node = createNode(235 /* ExportDeclaration */, fullStart); node.decorators = decorators; setModifiers(node, modifiers); if (parseOptional(37 /* AsteriskToken */)) { - parseExpected(134 /* FromKeyword */); + parseExpected(135 /* FromKeyword */); node.moduleSpecifier = parseModuleSpecifier(); } else { - node.exportClause = parseNamedImportsOrExports(233 /* NamedExports */); + node.exportClause = parseNamedImportsOrExports(236 /* NamedExports */); // It is not uncommon to accidentally omit the 'from' keyword. Additionally, in editing scenarios, // the 'from' keyword can be parsed as a named export when the export clause is unterminated (i.e. `export { from "moduleName";`) // If we don't have a 'from' keyword, see if we have a string literal such that ASI won't take effect. - if (token === 134 /* FromKeyword */ || (token === 9 /* StringLiteral */ && !scanner.hasPrecedingLineBreak())) { - parseExpected(134 /* FromKeyword */); + if (token === 135 /* FromKeyword */ || (token === 9 /* StringLiteral */ && !scanner.hasPrecedingLineBreak())) { + parseExpected(135 /* FromKeyword */); node.moduleSpecifier = parseModuleSpecifier(); } } @@ -12026,7 +12262,7 @@ var ts; return finishNode(node); } function parseExportAssignment(fullStart, decorators, modifiers) { - var node = createNode(231 /* ExportAssignment */, fullStart); + var node = createNode(234 /* ExportAssignment */, fullStart); node.decorators = decorators; setModifiers(node, modifiers); if (parseOptional(56 /* EqualsToken */)) { @@ -12042,6 +12278,7 @@ var ts; function processReferenceComments(sourceFile) { var triviaScanner = ts.createScanner(sourceFile.languageVersion, /*skipTrivia*/ false, 0 /* Standard */, sourceText); var referencedFiles = []; + var typeReferenceDirectives = []; var amdDependencies = []; var amdModuleName; // Keep scanning all the leading trivia in the file until we get to something that @@ -12065,7 +12302,12 @@ var ts; sourceFile.hasNoDefaultLib = referencePathMatchResult.isNoDefaultLib; var diagnosticMessage = referencePathMatchResult.diagnosticMessage; if (fileReference) { - referencedFiles.push(fileReference); + if (referencePathMatchResult.isTypeReferenceDirective) { + typeReferenceDirectives.push(fileReference); + } + else { + referencedFiles.push(fileReference); + } } if (diagnosticMessage) { parseDiagnostics.push(ts.createFileDiagnostic(sourceFile, range.pos, range.end - range.pos, diagnosticMessage)); @@ -12095,16 +12337,17 @@ var ts; } } sourceFile.referencedFiles = referencedFiles; + sourceFile.typeReferenceDirectives = typeReferenceDirectives; sourceFile.amdDependencies = amdDependencies; sourceFile.moduleName = amdModuleName; } function setExternalModuleIndicator(sourceFile) { sourceFile.externalModuleIndicator = ts.forEach(sourceFile.statements, function (node) { return node.flags & 1 /* Export */ - || node.kind === 225 /* ImportEqualsDeclaration */ && node.moduleReference.kind === 236 /* ExternalModuleReference */ - || node.kind === 226 /* ImportDeclaration */ - || node.kind === 231 /* ExportAssignment */ - || node.kind === 232 /* ExportDeclaration */ + || node.kind === 228 /* ImportEqualsDeclaration */ && node.moduleReference.kind === 239 /* ExternalModuleReference */ + || node.kind === 229 /* ImportDeclaration */ + || node.kind === 234 /* ExportAssignment */ + || node.kind === 235 /* ExportDeclaration */ ? node : undefined; }); @@ -12177,7 +12420,7 @@ var ts; // Parses out a JSDoc type expression. /* @internal */ function parseJSDocTypeExpression() { - var result = createNode(253 /* JSDocTypeExpression */, scanner.getTokenPos()); + var result = createNode(256 /* JSDocTypeExpression */, scanner.getTokenPos()); parseExpected(15 /* OpenBraceToken */); result.type = parseJSDocTopLevelType(); parseExpected(16 /* CloseBraceToken */); @@ -12188,12 +12431,12 @@ var ts; function parseJSDocTopLevelType() { var type = parseJSDocType(); if (token === 47 /* BarToken */) { - var unionType = createNode(257 /* JSDocUnionType */, type.pos); + var unionType = createNode(260 /* JSDocUnionType */, type.pos); unionType.types = parseJSDocTypeList(type); type = finishNode(unionType); } if (token === 56 /* EqualsToken */) { - var optionalType = createNode(264 /* JSDocOptionalType */, type.pos); + var optionalType = createNode(267 /* JSDocOptionalType */, type.pos); nextToken(); optionalType.type = type; type = finishNode(optionalType); @@ -12204,20 +12447,20 @@ var ts; var type = parseBasicTypeExpression(); while (true) { if (token === 19 /* OpenBracketToken */) { - var arrayType = createNode(256 /* JSDocArrayType */, type.pos); + var arrayType = createNode(259 /* JSDocArrayType */, type.pos); arrayType.elementType = type; nextToken(); parseExpected(20 /* CloseBracketToken */); type = finishNode(arrayType); } else if (token === 53 /* QuestionToken */) { - var nullableType = createNode(259 /* JSDocNullableType */, type.pos); + var nullableType = createNode(262 /* JSDocNullableType */, type.pos); nullableType.type = type; nextToken(); type = finishNode(nullableType); } else if (token === 49 /* ExclamationToken */) { - var nonNullableType = createNode(260 /* JSDocNonNullableType */, type.pos); + var nonNullableType = createNode(263 /* JSDocNonNullableType */, type.pos); nonNullableType.type = type; nextToken(); type = finishNode(nonNullableType); @@ -12262,27 +12505,27 @@ var ts; return parseJSDocTypeReference(); } function parseJSDocThisType() { - var result = createNode(268 /* JSDocThisType */); + var result = createNode(271 /* JSDocThisType */); nextToken(); parseExpected(54 /* ColonToken */); result.type = parseJSDocType(); return finishNode(result); } function parseJSDocConstructorType() { - var result = createNode(267 /* JSDocConstructorType */); + var result = createNode(270 /* JSDocConstructorType */); nextToken(); parseExpected(54 /* ColonToken */); result.type = parseJSDocType(); return finishNode(result); } function parseJSDocVariadicType() { - var result = createNode(266 /* JSDocVariadicType */); + var result = createNode(269 /* JSDocVariadicType */); nextToken(); result.type = parseJSDocType(); return finishNode(result); } function parseJSDocFunctionType() { - var result = createNode(265 /* JSDocFunctionType */); + var result = createNode(268 /* JSDocFunctionType */); nextToken(); parseExpected(17 /* OpenParenToken */); result.parameters = parseDelimitedList(22 /* JSDocFunctionParameters */, parseJSDocParameter); @@ -12295,7 +12538,7 @@ var ts; return finishNode(result); } function parseJSDocParameter() { - var parameter = createNode(140 /* Parameter */); + var parameter = createNode(141 /* Parameter */); parameter.type = parseJSDocType(); if (parseOptional(56 /* EqualsToken */)) { parameter.questionToken = createNode(56 /* EqualsToken */); @@ -12303,7 +12546,7 @@ var ts; return finishNode(parameter); } function parseJSDocTypeReference() { - var result = createNode(263 /* JSDocTypeReference */); + var result = createNode(266 /* JSDocTypeReference */); result.name = parseSimplePropertyName(); if (token === 25 /* LessThanToken */) { result.typeArguments = parseTypeArguments(); @@ -12338,13 +12581,13 @@ var ts; } } function parseQualifiedName(left) { - var result = createNode(137 /* QualifiedName */, left.pos); + var result = createNode(138 /* QualifiedName */, left.pos); result.left = left; result.right = parseIdentifierName(); return finishNode(result); } function parseJSDocRecordType() { - var result = createNode(261 /* JSDocRecordType */); + var result = createNode(264 /* JSDocRecordType */); nextToken(); result.members = parseDelimitedList(24 /* JSDocRecordMembers */, parseJSDocRecordMember); checkForTrailingComma(result.members); @@ -12352,7 +12595,7 @@ var ts; return finishNode(result); } function parseJSDocRecordMember() { - var result = createNode(262 /* JSDocRecordMember */); + var result = createNode(265 /* JSDocRecordMember */); result.name = parseSimplePropertyName(); if (token === 54 /* ColonToken */) { nextToken(); @@ -12361,13 +12604,13 @@ var ts; return finishNode(result); } function parseJSDocNonNullableType() { - var result = createNode(260 /* JSDocNonNullableType */); + var result = createNode(263 /* JSDocNonNullableType */); nextToken(); result.type = parseJSDocType(); return finishNode(result); } function parseJSDocTupleType() { - var result = createNode(258 /* JSDocTupleType */); + var result = createNode(261 /* JSDocTupleType */); nextToken(); result.types = parseDelimitedList(25 /* JSDocTupleTypes */, parseJSDocType); checkForTrailingComma(result.types); @@ -12381,7 +12624,7 @@ var ts; } } function parseJSDocUnionType() { - var result = createNode(257 /* JSDocUnionType */); + var result = createNode(260 /* JSDocUnionType */); nextToken(); result.types = parseJSDocTypeList(parseJSDocType()); parseExpected(18 /* CloseParenToken */); @@ -12399,7 +12642,7 @@ var ts; return types; } function parseJSDocAllType() { - var result = createNode(254 /* JSDocAllType */); + var result = createNode(257 /* JSDocAllType */); nextToken(); return finishNode(result); } @@ -12422,11 +12665,11 @@ var ts; token === 27 /* GreaterThanToken */ || token === 56 /* EqualsToken */ || token === 47 /* BarToken */) { - var result = createNode(255 /* JSDocUnknownType */, pos); + var result = createNode(258 /* JSDocUnknownType */, pos); return finishNode(result); } else { - var result = createNode(259 /* JSDocNullableType */, pos); + var result = createNode(262 /* JSDocNullableType */, pos); result.type = parseJSDocType(); return finishNode(result); } @@ -12517,7 +12760,7 @@ var ts; if (!tags) { return undefined; } - var result = createNode(269 /* JSDocComment */, start); + var result = createNode(272 /* JSDocComment */, start); result.tags = tags; return finishNode(result, end); } @@ -12555,7 +12798,7 @@ var ts; return undefined; } function handleUnknownTag(atToken, tagName) { - var result = createNode(270 /* JSDocTag */, atToken.pos); + var result = createNode(273 /* JSDocTag */, atToken.pos); result.atToken = atToken; result.tagName = tagName; return finishNode(result); @@ -12609,7 +12852,7 @@ var ts; if (!typeExpression) { typeExpression = tryParseTypeExpression(); } - var result = createNode(271 /* JSDocParameterTag */, atToken.pos); + var result = createNode(274 /* JSDocParameterTag */, atToken.pos); result.atToken = atToken; result.tagName = tagName; result.preParameterName = preName; @@ -12619,27 +12862,27 @@ var ts; return finishNode(result); } function handleReturnTag(atToken, tagName) { - if (ts.forEach(tags, function (t) { return t.kind === 272 /* JSDocReturnTag */; })) { + if (ts.forEach(tags, function (t) { return t.kind === 275 /* JSDocReturnTag */; })) { parseErrorAtPosition(tagName.pos, scanner.getTokenPos() - tagName.pos, ts.Diagnostics._0_tag_already_specified, tagName.text); } - var result = createNode(272 /* JSDocReturnTag */, atToken.pos); + var result = createNode(275 /* JSDocReturnTag */, atToken.pos); result.atToken = atToken; result.tagName = tagName; result.typeExpression = tryParseTypeExpression(); return finishNode(result); } function handleTypeTag(atToken, tagName) { - if (ts.forEach(tags, function (t) { return t.kind === 273 /* JSDocTypeTag */; })) { + if (ts.forEach(tags, function (t) { return t.kind === 276 /* JSDocTypeTag */; })) { parseErrorAtPosition(tagName.pos, scanner.getTokenPos() - tagName.pos, ts.Diagnostics._0_tag_already_specified, tagName.text); } - var result = createNode(273 /* JSDocTypeTag */, atToken.pos); + var result = createNode(276 /* JSDocTypeTag */, atToken.pos); result.atToken = atToken; result.tagName = tagName; result.typeExpression = tryParseTypeExpression(); return finishNode(result); } function handleTemplateTag(atToken, tagName) { - if (ts.forEach(tags, function (t) { return t.kind === 274 /* JSDocTemplateTag */; })) { + if (ts.forEach(tags, function (t) { return t.kind === 277 /* JSDocTemplateTag */; })) { parseErrorAtPosition(tagName.pos, scanner.getTokenPos() - tagName.pos, ts.Diagnostics._0_tag_already_specified, tagName.text); } // Type parameter list looks like '@template T,U,V' @@ -12651,7 +12894,7 @@ var ts; parseErrorAtPosition(scanner.getStartPos(), 0, ts.Diagnostics.Identifier_expected); return undefined; } - var typeParameter = createNode(139 /* TypeParameter */, name_8.pos); + var typeParameter = createNode(140 /* TypeParameter */, name_8.pos); typeParameter.name = name_8; finishNode(typeParameter); typeParameters.push(typeParameter); @@ -12662,7 +12905,7 @@ var ts; break; } } - var result = createNode(274 /* JSDocTemplateTag */, atToken.pos); + var result = createNode(277 /* JSDocTemplateTag */, atToken.pos); result.atToken = atToken; result.tagName = tagName; result.typeParameters = typeParameters; @@ -13191,16 +13434,16 @@ var ts; function getModuleInstanceState(node) { // A module is uninstantiated if it contains only // 1. interface declarations, type alias declarations - if (node.kind === 219 /* InterfaceDeclaration */ || node.kind === 220 /* TypeAliasDeclaration */) { + if (node.kind === 221 /* InterfaceDeclaration */ || node.kind === 222 /* TypeAliasDeclaration */) { return 0 /* NonInstantiated */; } else if (ts.isConstEnumDeclaration(node)) { return 2 /* ConstEnumOnly */; } - else if ((node.kind === 226 /* ImportDeclaration */ || node.kind === 225 /* ImportEqualsDeclaration */) && !(node.flags & 1 /* Export */)) { + else if ((node.kind === 229 /* ImportDeclaration */ || node.kind === 228 /* ImportEqualsDeclaration */) && !(node.flags & 1 /* Export */)) { return 0 /* NonInstantiated */; } - else if (node.kind === 223 /* ModuleBlock */) { + else if (node.kind === 225 /* ModuleBlock */) { var state_1 = 0 /* NonInstantiated */; ts.forEachChild(node, function (n) { switch (getModuleInstanceState(n)) { @@ -13219,7 +13462,7 @@ var ts; }); return state_1; } - else if (node.kind === 222 /* ModuleDeclaration */) { + else if (node.kind === 224 /* ModuleDeclaration */) { return getModuleInstanceState(node.body); } else { @@ -13274,6 +13517,7 @@ var ts; var hasAsyncFunctions; var hasDecorators; var hasParameterDecorators; + var hasJsxSpreadAttribute; // If this file is an external module, then it is automatically in strict-mode according to // ES6. If it is not an external module, then we'll determine if it is in strict mode or // not depending on if we see "use strict" in certain places (or if we hit a class/namespace). @@ -13307,6 +13551,7 @@ var ts; hasAsyncFunctions = false; hasDecorators = false; hasParameterDecorators = false; + hasJsxSpreadAttribute = false; } return bindSourceFile; function createSymbol(flags, name) { @@ -13329,7 +13574,7 @@ var ts; if (symbolFlags & 107455 /* Value */) { var valueDeclaration = symbol.valueDeclaration; if (!valueDeclaration || - (valueDeclaration.kind !== node.kind && valueDeclaration.kind === 222 /* ModuleDeclaration */)) { + (valueDeclaration.kind !== node.kind && valueDeclaration.kind === 224 /* ModuleDeclaration */)) { // other kinds of value declarations take precedence over modules symbol.valueDeclaration = node; } @@ -13342,7 +13587,7 @@ var ts; if (ts.isAmbientModule(node)) { return ts.isGlobalScopeAugmentation(node) ? "__global" : "\"" + node.name.text + "\""; } - if (node.name.kind === 138 /* ComputedPropertyName */) { + if (node.name.kind === 139 /* ComputedPropertyName */) { var nameExpression = node.name.expression; // treat computed property names where expression is string/numeric literal as just string/numeric literal if (ts.isStringOrNumericLiteral(nameExpression.kind)) { @@ -13354,21 +13599,21 @@ var ts; return node.name.text; } switch (node.kind) { - case 146 /* Constructor */: + case 147 /* Constructor */: return "__constructor"; - case 154 /* FunctionType */: - case 149 /* CallSignature */: + case 155 /* FunctionType */: + case 150 /* CallSignature */: return "__call"; - case 155 /* ConstructorType */: - case 150 /* ConstructSignature */: + case 156 /* ConstructorType */: + case 151 /* ConstructSignature */: return "__new"; - case 151 /* IndexSignature */: + case 152 /* IndexSignature */: return "__index"; - case 232 /* ExportDeclaration */: + case 235 /* ExportDeclaration */: return "__export"; - case 231 /* ExportAssignment */: + case 234 /* ExportAssignment */: return node.isExportEquals ? "export=" : "default"; - case 185 /* BinaryExpression */: + case 186 /* BinaryExpression */: switch (ts.getSpecialPropertyAssignmentKind(node)) { case 2 /* ModuleExports */: // module.exports = ... @@ -13383,15 +13628,15 @@ var ts; } ts.Debug.fail("Unknown binary declaration kind"); break; - case 217 /* FunctionDeclaration */: - case 218 /* ClassDeclaration */: + case 219 /* FunctionDeclaration */: + case 220 /* ClassDeclaration */: return node.flags & 512 /* Default */ ? "default" : undefined; - case 265 /* JSDocFunctionType */: + case 268 /* JSDocFunctionType */: return ts.isJSDocConstructSignature(node) ? "__new" : "__call"; - case 140 /* Parameter */: + case 141 /* Parameter */: // Parameters with names are handled at the top of this function. Parameters // without names can only come from JSDocFunctionTypes. - ts.Debug.assert(node.parent.kind === 265 /* JSDocFunctionType */); + ts.Debug.assert(node.parent.kind === 268 /* JSDocFunctionType */); var functionType = node.parent; var index = ts.indexOf(functionType.parameters, node); return "p" + index; @@ -13470,7 +13715,7 @@ var ts; function declareModuleMember(node, symbolFlags, symbolExcludes) { var hasExportModifier = ts.getCombinedNodeFlags(node) & 1 /* Export */; if (symbolFlags & 8388608 /* Alias */) { - if (node.kind === 234 /* ExportSpecifier */ || (node.kind === 225 /* ImportEqualsDeclaration */ && hasExportModifier)) { + if (node.kind === 237 /* ExportSpecifier */ || (node.kind === 228 /* ImportEqualsDeclaration */ && hasExportModifier)) { return declareSymbol(container.symbol.exports, container.symbol, node, symbolFlags, symbolExcludes); } else { @@ -13559,10 +13804,10 @@ var ts; flags &= ~98304 /* ReachabilityCheckFlags */; // reset all emit helper flags on node (for incremental scenarios) flags &= ~3932160 /* EmitHelperFlags */; - if (kind === 219 /* InterfaceDeclaration */) { + if (kind === 221 /* InterfaceDeclaration */) { seenThisKeyword = false; } - var saveState = kind === 252 /* SourceFile */ || kind === 223 /* ModuleBlock */ || ts.isFunctionLikeKind(kind); + var saveState = kind === 255 /* SourceFile */ || kind === 225 /* ModuleBlock */ || ts.isFunctionLikeKind(kind); if (saveState) { savedReachabilityState = currentReachabilityState; savedLabelStack = labelStack; @@ -13583,10 +13828,10 @@ var ts; flags |= 65536 /* HasExplicitReturn */; } } - if (kind === 219 /* InterfaceDeclaration */) { + if (kind === 221 /* InterfaceDeclaration */) { flags = seenThisKeyword ? flags | 16384 /* ContainsThis */ : flags & ~16384 /* ContainsThis */; } - if (kind === 252 /* SourceFile */) { + if (kind === 255 /* SourceFile */) { if (hasClassExtends) { flags |= 262144 /* HasClassExtends */; } @@ -13599,6 +13844,9 @@ var ts; if (hasAsyncFunctions) { flags |= 2097152 /* HasAsyncFunctions */; } + if (hasJsxSpreadAttribute) { + flags |= 1073741824 /* HasJsxSpreadAttribute */; + } } node.flags = flags; if (saveState) { @@ -13622,40 +13870,40 @@ var ts; return; } switch (node.kind) { - case 202 /* WhileStatement */: + case 204 /* WhileStatement */: bindWhileStatement(node); break; - case 201 /* DoStatement */: + case 203 /* DoStatement */: bindDoStatement(node); break; - case 203 /* ForStatement */: + case 205 /* ForStatement */: bindForStatement(node); break; - case 204 /* ForInStatement */: - case 205 /* ForOfStatement */: + case 206 /* ForInStatement */: + case 207 /* ForOfStatement */: bindForInOrForOfStatement(node); break; - case 200 /* IfStatement */: + case 202 /* IfStatement */: bindIfStatement(node); break; - case 208 /* ReturnStatement */: - case 212 /* ThrowStatement */: + case 210 /* ReturnStatement */: + case 214 /* ThrowStatement */: bindReturnOrThrow(node); break; - case 207 /* BreakStatement */: - case 206 /* ContinueStatement */: + case 209 /* BreakStatement */: + case 208 /* ContinueStatement */: bindBreakOrContinueStatement(node); break; - case 213 /* TryStatement */: + case 215 /* TryStatement */: bindTryStatement(node); break; - case 210 /* SwitchStatement */: + case 212 /* SwitchStatement */: bindSwitchStatement(node); break; - case 224 /* CaseBlock */: + case 226 /* CaseBlock */: bindCaseBlock(node); break; - case 211 /* LabeledStatement */: + case 213 /* LabeledStatement */: bindLabeledStatement(node); break; default: @@ -13730,7 +13978,7 @@ var ts; function bindReturnOrThrow(n) { // bind expression (don't affect reachability) bind(n.expression); - if (n.kind === 208 /* ReturnStatement */) { + if (n.kind === 210 /* ReturnStatement */) { hasExplicitReturn = true; } currentReachabilityState = 4 /* Unreachable */; @@ -13739,7 +13987,7 @@ var ts; // call bind on label (don't affect reachability) bind(n.label); // for continue case touch label so it will be marked a used - var isValidJump = jumpToLabel(n.label, n.kind === 207 /* BreakStatement */ ? currentReachabilityState : 4 /* Unreachable */); + var isValidJump = jumpToLabel(n.label, n.kind === 209 /* BreakStatement */ ? currentReachabilityState : 4 /* Unreachable */); if (isValidJump) { currentReachabilityState = 4 /* Unreachable */; } @@ -13757,7 +14005,7 @@ var ts; // post catch/finally state is reachable if // - post try state is reachable - control flow can fall out of try block // - post catch state is reachable - control flow can fall out of catch block - currentReachabilityState = or(postTryState, postCatchState); + currentReachabilityState = n.catchClause ? or(postTryState, postCatchState) : postTryState; } function bindSwitchStatement(n) { var preSwitchState = currentReachabilityState; @@ -13765,18 +14013,21 @@ var ts; // bind expression (don't affect reachability) bind(n.expression); bind(n.caseBlock); - var hasDefault = ts.forEach(n.caseBlock.clauses, function (c) { return c.kind === 246 /* DefaultClause */; }); + var hasDefault = ts.forEach(n.caseBlock.clauses, function (c) { return c.kind === 249 /* DefaultClause */; }); // post switch state is unreachable if switch is exhaustive (has a default case ) and does not have fallthrough from the last case var postSwitchState = hasDefault && currentReachabilityState !== 2 /* Reachable */ ? 4 /* Unreachable */ : preSwitchState; popImplicitLabel(postSwitchLabel, postSwitchState); } function bindCaseBlock(n) { var startState = currentReachabilityState; - for (var _i = 0, _a = n.clauses; _i < _a.length; _i++) { - var clause = _a[_i]; + for (var i = 0; i < n.clauses.length; i++) { + var clause = n.clauses[i]; currentReachabilityState = startState; bind(clause); - if (clause.statements.length && currentReachabilityState === 2 /* Reachable */ && options.noFallthroughCasesInSwitch) { + if (clause.statements.length && + i !== n.clauses.length - 1 && + currentReachabilityState === 2 /* Reachable */ && + options.noFallthroughCasesInSwitch) { errorOnFirstToken(clause, ts.Diagnostics.Fallthrough_case_in_switch); } } @@ -13792,38 +14043,39 @@ var ts; } function getContainerFlags(node) { switch (node.kind) { - case 190 /* ClassExpression */: - case 218 /* ClassDeclaration */: - case 219 /* InterfaceDeclaration */: - case 221 /* EnumDeclaration */: - case 169 /* ObjectLiteralExpression */: - case 157 /* TypeLiteral */: - case 261 /* JSDocRecordType */: + case 191 /* ClassExpression */: + case 220 /* ClassDeclaration */: + case 221 /* InterfaceDeclaration */: + case 223 /* EnumDeclaration */: + case 170 /* ObjectLiteralExpression */: + case 158 /* TypeLiteral */: + case 264 /* JSDocRecordType */: return 1 /* IsContainer */; - case 149 /* CallSignature */: - case 150 /* ConstructSignature */: - case 151 /* IndexSignature */: - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: - case 217 /* FunctionDeclaration */: - case 146 /* Constructor */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: - case 154 /* FunctionType */: - case 155 /* ConstructorType */: - case 177 /* FunctionExpression */: - case 178 /* ArrowFunction */: - case 222 /* ModuleDeclaration */: - case 252 /* SourceFile */: - case 220 /* TypeAliasDeclaration */: + case 150 /* CallSignature */: + case 151 /* ConstructSignature */: + case 152 /* IndexSignature */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: + case 219 /* FunctionDeclaration */: + case 147 /* Constructor */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: + case 155 /* FunctionType */: + case 268 /* JSDocFunctionType */: + case 156 /* ConstructorType */: + case 178 /* FunctionExpression */: + case 179 /* ArrowFunction */: + case 224 /* ModuleDeclaration */: + case 255 /* SourceFile */: + case 222 /* TypeAliasDeclaration */: return 5 /* IsContainerWithLocals */; - case 248 /* CatchClause */: - case 203 /* ForStatement */: - case 204 /* ForInStatement */: - case 205 /* ForOfStatement */: - case 224 /* CaseBlock */: + case 251 /* CatchClause */: + case 205 /* ForStatement */: + case 206 /* ForInStatement */: + case 207 /* ForOfStatement */: + case 226 /* CaseBlock */: return 2 /* IsBlockScopedContainer */; - case 196 /* Block */: + case 198 /* Block */: // do not treat blocks directly inside a function as a block-scoped-container. // Locals that reside in this block should go to the function locals. Otherwise 'x' // would not appear to be a redeclaration of a block scoped local in the following @@ -13860,40 +14112,40 @@ var ts; // members are declared (for example, a member of a class will go into a specific // symbol table depending on if it is static or not). We defer to specialized // handlers to take care of declaring these child members. - case 222 /* ModuleDeclaration */: + case 224 /* ModuleDeclaration */: return declareModuleMember(node, symbolFlags, symbolExcludes); - case 252 /* SourceFile */: + case 255 /* SourceFile */: return declareSourceFileMember(node, symbolFlags, symbolExcludes); - case 190 /* ClassExpression */: - case 218 /* ClassDeclaration */: + case 191 /* ClassExpression */: + case 220 /* ClassDeclaration */: return declareClassMember(node, symbolFlags, symbolExcludes); - case 221 /* EnumDeclaration */: + case 223 /* EnumDeclaration */: return declareSymbol(container.symbol.exports, container.symbol, node, symbolFlags, symbolExcludes); - case 157 /* TypeLiteral */: - case 169 /* ObjectLiteralExpression */: - case 219 /* InterfaceDeclaration */: - case 261 /* JSDocRecordType */: + case 158 /* TypeLiteral */: + case 170 /* ObjectLiteralExpression */: + case 221 /* InterfaceDeclaration */: + case 264 /* JSDocRecordType */: // Interface/Object-types always have their children added to the 'members' of // their container. They are only accessible through an instance of their // container, and are never in scope otherwise (even inside the body of the // object / type / interface declaring them). An exception is type parameters, // which are in scope without qualification (similar to 'locals'). return declareSymbol(container.symbol.members, container.symbol, node, symbolFlags, symbolExcludes); - case 154 /* FunctionType */: - case 155 /* ConstructorType */: - case 149 /* CallSignature */: - case 150 /* ConstructSignature */: - case 151 /* IndexSignature */: - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: - case 146 /* Constructor */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: - case 217 /* FunctionDeclaration */: - case 177 /* FunctionExpression */: - case 178 /* ArrowFunction */: - case 265 /* JSDocFunctionType */: - case 220 /* TypeAliasDeclaration */: + case 155 /* FunctionType */: + case 156 /* ConstructorType */: + case 150 /* CallSignature */: + case 151 /* ConstructSignature */: + case 152 /* IndexSignature */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: + case 147 /* Constructor */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: + case 219 /* FunctionDeclaration */: + case 178 /* FunctionExpression */: + case 179 /* ArrowFunction */: + case 268 /* JSDocFunctionType */: + case 222 /* TypeAliasDeclaration */: // All the children of these container types are never visible through another // symbol (i.e. through another symbol's 'exports' or 'members'). Instead, // they're only accessed 'lexically' (i.e. from code that exists underneath @@ -13914,11 +14166,11 @@ var ts; : declareSymbol(file.locals, undefined, node, symbolFlags, symbolExcludes); } function hasExportDeclarations(node) { - var body = node.kind === 252 /* SourceFile */ ? node : node.body; - if (body.kind === 252 /* SourceFile */ || body.kind === 223 /* ModuleBlock */) { + var body = node.kind === 255 /* SourceFile */ ? node : node.body; + if (body.kind === 255 /* SourceFile */ || body.kind === 225 /* ModuleBlock */) { for (var _i = 0, _a = body.statements; _i < _a.length; _i++) { var stat = _a[_i]; - if (stat.kind === 232 /* ExportDeclaration */ || stat.kind === 231 /* ExportAssignment */) { + if (stat.kind === 235 /* ExportDeclaration */ || stat.kind === 234 /* ExportAssignment */) { return true; } } @@ -13941,7 +14193,12 @@ var ts; if (node.flags & 1 /* Export */) { errorOnFirstToken(node, ts.Diagnostics.export_modifier_cannot_be_applied_to_ambient_modules_and_module_augmentations_since_they_are_always_visible); } - declareSymbolAndAddToSymbolTable(node, 512 /* ValueModule */, 106639 /* ValueModuleExcludes */); + if (ts.isExternalModuleAugmentation(node)) { + declareSymbolAndAddToSymbolTable(node, 1024 /* NamespaceModule */, 0 /* NamespaceModuleExcludes */); + } + else { + declareSymbolAndAddToSymbolTable(node, 512 /* ValueModule */, 106639 /* ValueModuleExcludes */); + } } else { var state = getModuleInstanceState(node); @@ -14005,7 +14262,7 @@ var ts; // c.IsAccessorDescriptor(previous) is true and IsDataDescriptor(propId.descriptor) is true. // d.IsAccessorDescriptor(previous) is true and IsAccessorDescriptor(propId.descriptor) is true // and either both previous and propId.descriptor have[[Get]] fields or both previous and propId.descriptor have[[Set]] fields - var currentKind = prop.kind === 249 /* PropertyAssignment */ || prop.kind === 250 /* ShorthandPropertyAssignment */ || prop.kind === 145 /* MethodDeclaration */ + var currentKind = prop.kind === 252 /* PropertyAssignment */ || prop.kind === 253 /* ShorthandPropertyAssignment */ || prop.kind === 146 /* MethodDeclaration */ ? 1 /* Property */ : 2 /* Accessor */; var existingKind = seen[identifier.text]; @@ -14027,10 +14284,10 @@ var ts; } function bindBlockScopedDeclaration(node, symbolFlags, symbolExcludes) { switch (blockScopeContainer.kind) { - case 222 /* ModuleDeclaration */: + case 224 /* ModuleDeclaration */: declareModuleMember(node, symbolFlags, symbolExcludes); break; - case 252 /* SourceFile */: + case 255 /* SourceFile */: if (ts.isExternalModule(container)) { declareModuleMember(node, symbolFlags, symbolExcludes); break; @@ -14190,17 +14447,17 @@ var ts; } function updateStrictMode(node) { switch (node.kind) { - case 252 /* SourceFile */: - case 223 /* ModuleBlock */: + case 255 /* SourceFile */: + case 225 /* ModuleBlock */: updateStrictModeStatementList(node.statements); return; - case 196 /* Block */: + case 198 /* Block */: if (ts.isFunctionLike(node.parent)) { updateStrictModeStatementList(node.statements); } return; - case 218 /* ClassDeclaration */: - case 190 /* ClassExpression */: + case 220 /* ClassDeclaration */: + case 191 /* ClassExpression */: // All classes are automatically in strict mode in ES6. inStrictMode = true; return; @@ -14223,14 +14480,14 @@ var ts; var nodeText = ts.getTextOfNodeFromSourceText(file.text, node.expression); // Note: the node text must be exactly "use strict" or 'use strict'. It is not ok for the // string to contain unicode escapes (as per ES5). - return nodeText === "\"use strict\"" || nodeText === "'use strict'"; + return nodeText === '"use strict"' || nodeText === "'use strict'"; } function bindWorker(node) { switch (node.kind) { /* Strict mode checks */ case 69 /* Identifier */: return checkStrictModeIdentifier(node); - case 185 /* BinaryExpression */: + case 186 /* BinaryExpression */: if (ts.isInJavaScriptFile(node)) { var specialKind = ts.getSpecialPropertyAssignmentKind(node); switch (specialKind) { @@ -14254,100 +14511,105 @@ var ts; } } return checkStrictModeBinaryExpression(node); - case 248 /* CatchClause */: + case 251 /* CatchClause */: return checkStrictModeCatchClause(node); - case 179 /* DeleteExpression */: + case 180 /* DeleteExpression */: return checkStrictModeDeleteExpression(node); case 8 /* NumericLiteral */: return checkStrictModeNumericLiteral(node); - case 184 /* PostfixUnaryExpression */: + case 185 /* PostfixUnaryExpression */: return checkStrictModePostfixUnaryExpression(node); - case 183 /* PrefixUnaryExpression */: + case 184 /* PrefixUnaryExpression */: return checkStrictModePrefixUnaryExpression(node); - case 209 /* WithStatement */: + case 211 /* WithStatement */: return checkStrictModeWithStatement(node); - case 163 /* ThisType */: + case 164 /* ThisType */: seenThisKeyword = true; return; - case 152 /* TypePredicate */: + case 153 /* TypePredicate */: return checkTypePredicate(node); - case 139 /* TypeParameter */: + case 140 /* TypeParameter */: return declareSymbolAndAddToSymbolTable(node, 262144 /* TypeParameter */, 530912 /* TypeParameterExcludes */); - case 140 /* Parameter */: + case 141 /* Parameter */: return bindParameter(node); - case 215 /* VariableDeclaration */: - case 167 /* BindingElement */: + case 217 /* VariableDeclaration */: + case 168 /* BindingElement */: return bindVariableDeclarationOrBindingElement(node); - case 143 /* PropertyDeclaration */: - case 142 /* PropertySignature */: - case 262 /* JSDocRecordMember */: + case 144 /* PropertyDeclaration */: + case 143 /* PropertySignature */: + case 265 /* JSDocRecordMember */: return bindPropertyOrMethodOrAccessor(node, 4 /* Property */ | (node.questionToken ? 536870912 /* Optional */ : 0 /* None */), 107455 /* PropertyExcludes */); - case 249 /* PropertyAssignment */: - case 250 /* ShorthandPropertyAssignment */: + case 252 /* PropertyAssignment */: + case 253 /* ShorthandPropertyAssignment */: return bindPropertyOrMethodOrAccessor(node, 4 /* Property */, 107455 /* PropertyExcludes */); - case 251 /* EnumMember */: + case 254 /* EnumMember */: return bindPropertyOrMethodOrAccessor(node, 8 /* EnumMember */, 107455 /* EnumMemberExcludes */); - case 149 /* CallSignature */: - case 150 /* ConstructSignature */: - case 151 /* IndexSignature */: + case 246 /* JsxSpreadAttribute */: + hasJsxSpreadAttribute = true; + return; + case 150 /* CallSignature */: + case 151 /* ConstructSignature */: + case 152 /* IndexSignature */: return declareSymbolAndAddToSymbolTable(node, 131072 /* Signature */, 0 /* None */); - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: // If this is an ObjectLiteralExpression method, then it sits in the same space // as other properties in the object literal. So we use SymbolFlags.PropertyExcludes // so that it will conflict with any other object literal members with the same // name. return bindPropertyOrMethodOrAccessor(node, 8192 /* Method */ | (node.questionToken ? 536870912 /* Optional */ : 0 /* None */), ts.isObjectLiteralMethod(node) ? 107455 /* PropertyExcludes */ : 99263 /* MethodExcludes */); - case 217 /* FunctionDeclaration */: + case 219 /* FunctionDeclaration */: return bindFunctionDeclaration(node); - case 146 /* Constructor */: + case 147 /* Constructor */: return declareSymbolAndAddToSymbolTable(node, 16384 /* Constructor */, /*symbolExcludes:*/ 0 /* None */); - case 147 /* GetAccessor */: + case 148 /* GetAccessor */: return bindPropertyOrMethodOrAccessor(node, 32768 /* GetAccessor */, 41919 /* GetAccessorExcludes */); - case 148 /* SetAccessor */: + case 149 /* SetAccessor */: return bindPropertyOrMethodOrAccessor(node, 65536 /* SetAccessor */, 74687 /* SetAccessorExcludes */); - case 154 /* FunctionType */: - case 155 /* ConstructorType */: - case 265 /* JSDocFunctionType */: + case 155 /* FunctionType */: + case 156 /* ConstructorType */: + case 268 /* JSDocFunctionType */: return bindFunctionOrConstructorType(node); - case 157 /* TypeLiteral */: - case 261 /* JSDocRecordType */: + case 158 /* TypeLiteral */: + case 264 /* JSDocRecordType */: return bindAnonymousDeclaration(node, 2048 /* TypeLiteral */, "__type"); - case 169 /* ObjectLiteralExpression */: + case 170 /* ObjectLiteralExpression */: return bindObjectLiteralExpression(node); - case 177 /* FunctionExpression */: - case 178 /* ArrowFunction */: + case 178 /* FunctionExpression */: + case 179 /* ArrowFunction */: return bindFunctionExpression(node); - case 172 /* CallExpression */: + case 173 /* CallExpression */: if (ts.isInJavaScriptFile(node)) { bindCallExpression(node); } break; // Members of classes, interfaces, and modules - case 190 /* ClassExpression */: - case 218 /* ClassDeclaration */: + case 191 /* ClassExpression */: + case 220 /* ClassDeclaration */: return bindClassLikeDeclaration(node); - case 219 /* InterfaceDeclaration */: + case 221 /* InterfaceDeclaration */: return bindBlockScopedDeclaration(node, 64 /* Interface */, 792960 /* InterfaceExcludes */); - case 220 /* TypeAliasDeclaration */: + case 222 /* TypeAliasDeclaration */: return bindBlockScopedDeclaration(node, 524288 /* TypeAlias */, 793056 /* TypeAliasExcludes */); - case 221 /* EnumDeclaration */: + case 223 /* EnumDeclaration */: return bindEnumDeclaration(node); - case 222 /* ModuleDeclaration */: + case 224 /* ModuleDeclaration */: return bindModuleDeclaration(node); // Imports and exports - case 225 /* ImportEqualsDeclaration */: - case 228 /* NamespaceImport */: - case 230 /* ImportSpecifier */: - case 234 /* ExportSpecifier */: + case 228 /* ImportEqualsDeclaration */: + case 231 /* NamespaceImport */: + case 233 /* ImportSpecifier */: + case 237 /* ExportSpecifier */: return declareSymbolAndAddToSymbolTable(node, 8388608 /* Alias */, 8388608 /* AliasExcludes */); - case 227 /* ImportClause */: + case 227 /* GlobalModuleExportDeclaration */: + return bindGlobalModuleExportDeclaration(node); + case 230 /* ImportClause */: return bindImportClause(node); - case 232 /* ExportDeclaration */: + case 235 /* ExportDeclaration */: return bindExportDeclaration(node); - case 231 /* ExportAssignment */: + case 234 /* ExportAssignment */: return bindExportAssignment(node); - case 252 /* SourceFile */: + case 255 /* SourceFile */: return bindSourceFileIfExternalModule(); } } @@ -14356,7 +14618,7 @@ var ts; if (parameterName && parameterName.kind === 69 /* Identifier */) { checkStrictModeIdentifier(parameterName); } - if (parameterName && parameterName.kind === 163 /* ThisType */) { + if (parameterName && parameterName.kind === 164 /* ThisType */) { seenThisKeyword = true; } bind(type); @@ -14371,12 +14633,12 @@ var ts; bindAnonymousDeclaration(file, 512 /* ValueModule */, "\"" + ts.removeFileExtension(file.fileName) + "\""); } function bindExportAssignment(node) { - var boundExpression = node.kind === 231 /* ExportAssignment */ ? node.expression : node.right; + var boundExpression = node.kind === 234 /* ExportAssignment */ ? node.expression : node.right; if (!container.symbol || !container.symbol.exports) { // Export assignment in some sort of block construct bindAnonymousDeclaration(node, 8388608 /* Alias */, getDeclarationName(node)); } - else if (boundExpression.kind === 69 /* Identifier */ && node.kind === 231 /* ExportAssignment */) { + else if (boundExpression.kind === 69 /* Identifier */ && node.kind === 234 /* ExportAssignment */) { // An export default clause with an identifier exports all meanings of that identifier declareSymbol(container.symbol.exports, container.symbol, node, 8388608 /* Alias */, 107455 /* PropertyExcludes */ | 8388608 /* AliasExcludes */); } @@ -14385,6 +14647,28 @@ var ts; declareSymbol(container.symbol.exports, container.symbol, node, 4 /* Property */, 107455 /* PropertyExcludes */ | 8388608 /* AliasExcludes */); } } + function bindGlobalModuleExportDeclaration(node) { + if (node.modifiers && node.modifiers.length) { + file.bindDiagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.Modifiers_cannot_appear_here)); + } + if (node.parent.kind !== 255 /* SourceFile */) { + file.bindDiagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.Global_module_exports_may_only_appear_at_top_level)); + return; + } + else { + var parent_4 = node.parent; + if (!ts.isExternalModule(parent_4)) { + file.bindDiagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.Global_module_exports_may_only_appear_in_module_files)); + return; + } + if (!parent_4.isDeclarationFile) { + file.bindDiagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.Global_module_exports_may_only_appear_in_declaration_files)); + return; + } + } + file.symbol.globalExports = file.symbol.globalExports || {}; + declareSymbol(file.symbol.globalExports, file.symbol, node, 8388608 /* Alias */, 8388608 /* AliasExcludes */); + } function bindExportDeclaration(node) { if (!container.symbol || !container.symbol.exports) { // Export * in some sort of block construct @@ -14415,11 +14699,11 @@ var ts; function bindModuleExportsAssignment(node) { // 'module.exports = expr' assignment setCommonJsModuleIndicator(node); - bindExportAssignment(node); + declareSymbol(file.symbol.exports, file.symbol, node, 4 /* Property */ | 7340032 /* Export */ | 512 /* ValueModule */, 0 /* None */); } function bindThisPropertyAssignment(node) { // Declare a 'member' in case it turns out the container was an ES5 class - if (container.kind === 177 /* FunctionExpression */ || container.kind === 217 /* FunctionDeclaration */) { + if (container.kind === 178 /* FunctionExpression */ || container.kind === 219 /* FunctionDeclaration */) { container.symbol.members = container.symbol.members || {}; // It's acceptable for multiple 'this' assignments of the same identifier to occur declareSymbol(container.symbol.members, container.symbol, node, 4 /* Property */, 107455 /* PropertyExcludes */ & ~4 /* Property */); @@ -14463,7 +14747,7 @@ var ts; hasDecorators = true; } } - if (node.kind === 218 /* ClassDeclaration */) { + if (node.kind === 220 /* ClassDeclaration */) { bindBlockScopedDeclaration(node, 32 /* Class */, 899519 /* ClassExcludes */); } else { @@ -14641,13 +14925,13 @@ var ts; case 4 /* Unreachable */: var reportError = // report error on all statements except empty ones - (ts.isStatement(node) && node.kind !== 198 /* EmptyStatement */) || + (ts.isStatement(node) && node.kind !== 200 /* EmptyStatement */) || // report error on class declarations - node.kind === 218 /* ClassDeclaration */ || + node.kind === 220 /* ClassDeclaration */ || // report error on instantiated modules or const-enums only modules if preserveConstEnums is set - (node.kind === 222 /* ModuleDeclaration */ && shouldReportErrorOnModuleDeclaration(node)) || + (node.kind === 224 /* ModuleDeclaration */ && shouldReportErrorOnModuleDeclaration(node)) || // report error on regular enums and const enums if preserveConstEnums is set - (node.kind === 221 /* EnumDeclaration */ && (!ts.isConstEnumDeclaration(node) || options.preserveConstEnums)); + (node.kind === 223 /* EnumDeclaration */ && (!ts.isConstEnumDeclaration(node) || options.preserveConstEnums)); if (reportError) { currentReachabilityState = 8 /* ReportedUnreachable */; // unreachable code is reported if @@ -14661,7 +14945,7 @@ var ts; // On the other side we do want to report errors on non-initialized 'lets' because of TDZ var reportUnreachableCode = !options.allowUnreachableCode && !ts.isInAmbientContext(node) && - (node.kind !== 197 /* VariableStatement */ || + (node.kind !== 199 /* VariableStatement */ || ts.getCombinedNodeFlags(node.declarationList) & 3072 /* BlockScoped */ || ts.forEach(node.declarationList.declarations, function (d) { return d.initializer; })); if (reportUnreachableCode) { @@ -14735,6 +15019,7 @@ var ts; var languageVersion = compilerOptions.target || 0 /* ES3 */; var modulekind = ts.getEmitModuleKind(compilerOptions); var allowSyntheticDefaultImports = typeof compilerOptions.allowSyntheticDefaultImports !== "undefined" ? compilerOptions.allowSyntheticDefaultImports : modulekind === ts.ModuleKind.System; + var strictNullChecks = compilerOptions.strictNullChecks; var emitResolver = createResolver(); var undefinedSymbol = createSymbol(4 /* Property */ | 67108864 /* Transient */, "undefined"); undefinedSymbol.declarations = []; @@ -14749,9 +15034,7 @@ var ts; isUnknownSymbol: function (symbol) { return symbol === unknownSymbol; }, getDiagnostics: getDiagnostics, getGlobalDiagnostics: getGlobalDiagnostics, - // The language service will always care about the narrowed type of a symbol, because that is - // the type the language says the symbol should have. - getTypeOfSymbolAtLocation: getNarrowedTypeOfSymbol, + getTypeOfSymbolAtLocation: getTypeOfSymbolAtLocation, getSymbolsOfParameterPropertyDeclaration: getSymbolsOfParameterPropertyDeclaration, getDeclaredTypeOfSymbol: getDeclaredTypeOfSymbol, getPropertiesOfType: getPropertiesOfType, @@ -14786,14 +15069,16 @@ var ts; }; var unknownSymbol = createSymbol(4 /* Property */ | 67108864 /* Transient */, "unknown"); var resolvingSymbol = createSymbol(67108864 /* Transient */, "__resolving__"); + var nullableWideningFlags = strictNullChecks ? 0 : 2097152 /* ContainsUndefinedOrNull */; var anyType = createIntrinsicType(1 /* Any */, "any"); var stringType = createIntrinsicType(2 /* String */, "string"); var numberType = createIntrinsicType(4 /* Number */, "number"); var booleanType = createIntrinsicType(8 /* Boolean */, "boolean"); var esSymbolType = createIntrinsicType(16777216 /* ESSymbol */, "symbol"); var voidType = createIntrinsicType(16 /* Void */, "void"); - var undefinedType = createIntrinsicType(32 /* Undefined */ | 2097152 /* ContainsUndefinedOrNull */, "undefined"); - var nullType = createIntrinsicType(64 /* Null */ | 2097152 /* ContainsUndefinedOrNull */, "null"); + var undefinedType = createIntrinsicType(32 /* Undefined */ | nullableWideningFlags, "undefined"); + var nullType = createIntrinsicType(64 /* Null */ | nullableWideningFlags, "null"); + var emptyArrayElementType = createIntrinsicType(32 /* Undefined */ | 2097152 /* ContainsUndefinedOrNull */, "undefined"); var unknownType = createIntrinsicType(1 /* Any */, "unknown"); var emptyObjectType = createAnonymousType(undefined, emptySymbols, emptyArray, emptyArray, undefined, undefined); var emptyUnionType = emptyObjectType; @@ -14804,11 +15089,11 @@ var ts; // in getPropagatingFlagsOfTypes, and it is checked in inferFromTypes. anyFunctionType.flags |= 8388608 /* ContainsAnyFunctionType */; var noConstraintType = createAnonymousType(undefined, emptySymbols, emptyArray, emptyArray, undefined, undefined); - var anySignature = createSignature(undefined, undefined, emptyArray, anyType, /*typePredicate*/ undefined, 0, /*hasRestParameter*/ false, /*hasStringLiterals*/ false); - var unknownSignature = createSignature(undefined, undefined, emptyArray, unknownType, /*typePredicate*/ undefined, 0, /*hasRestParameter*/ false, /*hasStringLiterals*/ false); + var anySignature = createSignature(undefined, undefined, undefined, emptyArray, anyType, /*typePredicate*/ undefined, 0, /*hasRestParameter*/ false, /*hasStringLiterals*/ false); + var unknownSignature = createSignature(undefined, undefined, undefined, emptyArray, unknownType, /*typePredicate*/ undefined, 0, /*hasRestParameter*/ false, /*hasStringLiterals*/ false); var enumNumberIndexInfo = createIndexInfo(stringType, /*isReadonly*/ true); var globals = {}; - var globalESSymbolConstructorSymbol; + var getGlobalESSymbolConstructorSymbol; var getGlobalPromiseConstructorSymbol; var globalObjectType; var globalFunctionType; @@ -14818,13 +15103,16 @@ var ts; var globalNumberType; var globalBooleanType; var globalRegExpType; - var globalTemplateStringsArrayType; - var globalESSymbolType; - var globalIterableType; - var globalIteratorType; - var globalIterableIteratorType; var anyArrayType; var anyReadonlyArrayType; + // The library files are only loaded when the feature is used. + // This allows users to just specify library files they want to used through --lib + // and they will not get an error from not having unrelated library files + var getGlobalTemplateStringsArrayType; + var getGlobalESSymbolType; + var getGlobalIterableType; + var getGlobalIteratorType; + var getGlobalIterableIteratorType; var getGlobalClassDecoratorType; var getGlobalParameterDecoratorType; var getGlobalPropertyDecoratorType; @@ -14887,6 +15175,7 @@ var ts; }; var subtypeRelation = {}; var assignableRelation = {}; + var comparableRelation = {}; var identityRelation = {}; // This is for caching the result of getSymbolDisplayBuilder. Do not access directly. var _displayBuilder; @@ -14986,7 +15275,7 @@ var ts; target.flags |= source.flags; if (source.valueDeclaration && (!target.valueDeclaration || - (target.valueDeclaration.kind === 222 /* ModuleDeclaration */ && source.valueDeclaration.kind !== 222 /* ModuleDeclaration */))) { + (target.valueDeclaration.kind === 224 /* ModuleDeclaration */ && source.valueDeclaration.kind !== 224 /* ModuleDeclaration */))) { // other kinds of value declarations take precedence over modules target.valueDeclaration = source.valueDeclaration; } @@ -15043,7 +15332,7 @@ var ts; } function mergeModuleAugmentation(moduleName) { var moduleAugmentation = moduleName.parent; - if (moduleAugmentation.symbol.valueDeclaration !== moduleAugmentation) { + if (moduleAugmentation.symbol.declarations[0] !== moduleAugmentation) { // this is a combined symbol for multiple augmentations within the same file. // its symbol already has accumulated information for all declarations // so we need to add it just once - do the work only for first declaration @@ -15099,7 +15388,7 @@ var ts; return nodeLinks[nodeId] || (nodeLinks[nodeId] = {}); } function isGlobalSourceFile(node) { - return node.kind === 252 /* SourceFile */ && !ts.isExternalOrCommonJsModule(node); + return node.kind === 255 /* SourceFile */ && !ts.isExternalOrCommonJsModule(node); } function getSymbol(symbols, name, meaning) { if (meaning && ts.hasProperty(symbols, name)) { @@ -15148,7 +15437,7 @@ var ts; if (declaration.pos <= usage.pos) { // declaration is before usage // still might be illegal if usage is in the initializer of the variable declaration - return declaration.kind !== 215 /* VariableDeclaration */ || + return declaration.kind !== 217 /* VariableDeclaration */ || !isImmediatelyUsedInInitializerOfBlockScopedVariable(declaration, usage); } // declaration is after usage @@ -15156,14 +15445,14 @@ var ts; return isUsedInFunctionOrNonStaticProperty(declaration, usage); function isImmediatelyUsedInInitializerOfBlockScopedVariable(declaration, usage) { var container = ts.getEnclosingBlockScopeContainer(declaration); - if (declaration.parent.parent.kind === 197 /* VariableStatement */ || - declaration.parent.parent.kind === 203 /* ForStatement */) { + if (declaration.parent.parent.kind === 199 /* VariableStatement */ || + declaration.parent.parent.kind === 205 /* ForStatement */) { // variable statement/for statement case, // use site should not be inside variable declaration (initializer of declaration or binding element) return isSameScopeDescendentOf(usage, declaration, container); } - else if (declaration.parent.parent.kind === 205 /* ForOfStatement */ || - declaration.parent.parent.kind === 204 /* ForInStatement */) { + else if (declaration.parent.parent.kind === 207 /* ForOfStatement */ || + declaration.parent.parent.kind === 206 /* ForInStatement */) { // ForIn/ForOf case - use site should not be used in expression part var expression = declaration.parent.parent.expression; return isSameScopeDescendentOf(usage, expression, container); @@ -15180,7 +15469,7 @@ var ts; return true; } var initializerOfNonStaticProperty = current.parent && - current.parent.kind === 143 /* PropertyDeclaration */ && + current.parent.kind === 144 /* PropertyDeclaration */ && (current.parent.flags & 32 /* Static */) === 0 && current.parent.initializer === current; if (initializerOfNonStaticProperty) { @@ -15212,11 +15501,11 @@ var ts; // - parameters are only in the scope of function body // This restriction does not apply to JSDoc comment types because they are parented // at a higher level than type parameters would normally be - if (meaning & result.flags & 793056 /* Type */ && lastLocation.kind !== 269 /* JSDocComment */) { + if (meaning & result.flags & 793056 /* Type */ && lastLocation.kind !== 272 /* JSDocComment */) { useResult = result.flags & 262144 /* TypeParameter */ ? lastLocation === location.type || - lastLocation.kind === 140 /* Parameter */ || - lastLocation.kind === 139 /* TypeParameter */ + lastLocation.kind === 141 /* Parameter */ || + lastLocation.kind === 140 /* TypeParameter */ : false; } if (meaning & 107455 /* Value */ && result.flags & 1 /* FunctionScopedVariable */) { @@ -15225,9 +15514,9 @@ var ts; // however it is detected separately when checking initializers of parameters // to make sure that they reference no variables declared after them. useResult = - lastLocation.kind === 140 /* Parameter */ || + lastLocation.kind === 141 /* Parameter */ || (lastLocation === location.type && - result.valueDeclaration.kind === 140 /* Parameter */); + result.valueDeclaration.kind === 141 /* Parameter */); } } if (useResult) { @@ -15239,12 +15528,12 @@ var ts; } } switch (location.kind) { - case 252 /* SourceFile */: + case 255 /* SourceFile */: if (!ts.isExternalOrCommonJsModule(location)) break; - case 222 /* ModuleDeclaration */: + case 224 /* ModuleDeclaration */: var moduleExports = getSymbolOfNode(location).exports; - if (location.kind === 252 /* SourceFile */ || ts.isAmbientModule(location)) { + if (location.kind === 255 /* SourceFile */ || ts.isAmbientModule(location)) { // It's an external module. First see if the module has an export default and if the local // name of that export default matches. if (result = moduleExports["default"]) { @@ -15267,7 +15556,7 @@ var ts; // which is not the desired behavior. if (ts.hasProperty(moduleExports, name) && moduleExports[name].flags === 8388608 /* Alias */ && - ts.getDeclarationOfKind(moduleExports[name], 234 /* ExportSpecifier */)) { + ts.getDeclarationOfKind(moduleExports[name], 237 /* ExportSpecifier */)) { break; } } @@ -15275,13 +15564,13 @@ var ts; break loop; } break; - case 221 /* EnumDeclaration */: + case 223 /* EnumDeclaration */: if (result = getSymbol(getSymbolOfNode(location).exports, name, meaning & 8 /* EnumMember */)) { break loop; } break; - case 143 /* PropertyDeclaration */: - case 142 /* PropertySignature */: + case 144 /* PropertyDeclaration */: + case 143 /* PropertySignature */: // TypeScript 1.0 spec (April 2014): 8.4.1 // Initializer expressions for instance member variables are evaluated in the scope // of the class constructor body but are not permitted to reference parameters or @@ -15298,9 +15587,9 @@ var ts; } } break; - case 218 /* ClassDeclaration */: - case 190 /* ClassExpression */: - case 219 /* InterfaceDeclaration */: + case 220 /* ClassDeclaration */: + case 191 /* ClassExpression */: + case 221 /* InterfaceDeclaration */: if (result = getSymbol(getSymbolOfNode(location).members, name, meaning & 793056 /* Type */)) { if (lastLocation && lastLocation.flags & 32 /* Static */) { // TypeScript 1.0 spec (April 2014): 3.4.1 @@ -15311,7 +15600,7 @@ var ts; } break loop; } - if (location.kind === 190 /* ClassExpression */ && meaning & 32 /* Class */) { + if (location.kind === 191 /* ClassExpression */ && meaning & 32 /* Class */) { var className = location.name; if (className && name === className.text) { result = location.symbol; @@ -15327,9 +15616,9 @@ var ts; // [foo()]() { } // <-- Reference to T from class's own computed property // } // - case 138 /* ComputedPropertyName */: + case 139 /* ComputedPropertyName */: grandparent = location.parent.parent; - if (ts.isClassLike(grandparent) || grandparent.kind === 219 /* InterfaceDeclaration */) { + if (ts.isClassLike(grandparent) || grandparent.kind === 221 /* InterfaceDeclaration */) { // A reference to this grandparent's type parameters would be an error if (result = getSymbol(getSymbolOfNode(grandparent).members, name, meaning & 793056 /* Type */)) { error(errorLocation, ts.Diagnostics.A_computed_property_name_cannot_reference_a_type_parameter_from_its_containing_type); @@ -15337,19 +15626,19 @@ var ts; } } break; - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: - case 146 /* Constructor */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: - case 217 /* FunctionDeclaration */: - case 178 /* ArrowFunction */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: + case 147 /* Constructor */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: + case 219 /* FunctionDeclaration */: + case 179 /* ArrowFunction */: if (meaning & 3 /* Variable */ && name === "arguments") { result = argumentsSymbol; break loop; } break; - case 177 /* FunctionExpression */: + case 178 /* FunctionExpression */: if (meaning & 3 /* Variable */ && name === "arguments") { result = argumentsSymbol; break loop; @@ -15362,7 +15651,7 @@ var ts; } } break; - case 141 /* Decorator */: + case 142 /* Decorator */: // Decorators are resolved at the class declaration. Resolving at the parameter // or member would result in looking up locals in the method. // @@ -15371,7 +15660,7 @@ var ts; // method(@y x, y) {} // <-- decorator y should be resolved at the class declaration, not the parameter. // } // - if (location.parent && location.parent.kind === 140 /* Parameter */) { + if (location.parent && location.parent.kind === 141 /* Parameter */) { location = location.parent; } // @@ -15465,7 +15754,7 @@ var ts; // Block-scoped variables cannot be used before their definition var declaration = ts.forEach(result.declarations, function (d) { return ts.isBlockOrCatchScoped(d) ? d : undefined; }); ts.Debug.assert(declaration !== undefined, "Block-scoped variable declaration is undefined"); - if (!isBlockScopedNameDeclaredBeforeUse(ts.getAncestor(declaration, 215 /* VariableDeclaration */), errorLocation)) { + if (!isBlockScopedNameDeclaredBeforeUse(ts.getAncestor(declaration, 217 /* VariableDeclaration */), errorLocation)) { error(errorLocation, ts.Diagnostics.Block_scoped_variable_0_used_before_its_declaration, ts.declarationNameToString(declaration.name)); } } @@ -15486,10 +15775,10 @@ var ts; } function getAnyImportSyntax(node) { if (ts.isAliasSymbolDeclaration(node)) { - if (node.kind === 225 /* ImportEqualsDeclaration */) { + if (node.kind === 228 /* ImportEqualsDeclaration */) { return node; } - while (node && node.kind !== 226 /* ImportDeclaration */) { + while (node && node.kind !== 229 /* ImportDeclaration */) { node = node.parent; } return node; @@ -15499,7 +15788,7 @@ var ts; return ts.forEach(symbol.declarations, function (d) { return ts.isAliasSymbolDeclaration(d) ? d : undefined; }); } function getTargetOfImportEqualsDeclaration(node) { - if (node.moduleReference.kind === 236 /* ExternalModuleReference */) { + if (node.moduleReference.kind === 239 /* ExternalModuleReference */) { return resolveExternalModuleSymbol(resolveExternalModuleName(node, ts.getExternalModuleImportEqualsDeclarationExpression(node))); } return getSymbolOfPartOfRightHandSideOfImportEquals(node.moduleReference, node); @@ -15507,7 +15796,9 @@ var ts; function getTargetOfImportClause(node) { var moduleSymbol = resolveExternalModuleName(node, node.parent.moduleSpecifier); if (moduleSymbol) { - var exportDefaultSymbol = resolveSymbol(moduleSymbol.exports["default"]); + var exportDefaultSymbol = moduleSymbol.exports["export="] ? + getPropertyOfType(getTypeOfSymbol(moduleSymbol.exports["export="]), "default") : + resolveSymbol(moduleSymbol.exports["default"]); if (!exportDefaultSymbol && !allowSyntheticDefaultImports) { error(node.name, ts.Diagnostics.Module_0_has_no_default_export, symbolToString(moduleSymbol)); } @@ -15576,8 +15867,15 @@ var ts; if (targetSymbol) { var name_9 = specifier.propertyName || specifier.name; if (name_9.text) { + var symbolFromVariable = void 0; + // First check if module was specified with "export=". If so, get the member from the resolved type + if (moduleSymbol && moduleSymbol.exports && moduleSymbol.exports["export="]) { + symbolFromVariable = getPropertyOfType(getTypeOfSymbol(targetSymbol), name_9.text); + } + else { + symbolFromVariable = getPropertyOfVariable(targetSymbol, name_9.text); + } var symbolFromModule = getExportOfModule(targetSymbol, name_9.text); - var symbolFromVariable = getPropertyOfVariable(targetSymbol, name_9.text); var symbol = symbolFromModule && symbolFromVariable ? combineValueAndTypeSymbols(symbolFromVariable, symbolFromModule) : symbolFromModule || symbolFromVariable; @@ -15591,6 +15889,9 @@ var ts; function getTargetOfImportSpecifier(node) { return getExternalModuleMember(node.parent.parent.parent, node); } + function getTargetOfGlobalModuleExportDeclaration(node) { + return resolveExternalModuleSymbol(node.parent.symbol); + } function getTargetOfExportSpecifier(node) { return node.parent.parent.moduleSpecifier ? getExternalModuleMember(node.parent.parent, node) : @@ -15601,18 +15902,20 @@ var ts; } function getTargetOfAliasDeclaration(node) { switch (node.kind) { - case 225 /* ImportEqualsDeclaration */: + case 228 /* ImportEqualsDeclaration */: return getTargetOfImportEqualsDeclaration(node); - case 227 /* ImportClause */: + case 230 /* ImportClause */: return getTargetOfImportClause(node); - case 228 /* NamespaceImport */: + case 231 /* NamespaceImport */: return getTargetOfNamespaceImport(node); - case 230 /* ImportSpecifier */: + case 233 /* ImportSpecifier */: return getTargetOfImportSpecifier(node); - case 234 /* ExportSpecifier */: + case 237 /* ExportSpecifier */: return getTargetOfExportSpecifier(node); - case 231 /* ExportAssignment */: + case 234 /* ExportAssignment */: return getTargetOfExportAssignment(node); + case 227 /* GlobalModuleExportDeclaration */: + return getTargetOfGlobalModuleExportDeclaration(node); } } function resolveSymbol(symbol) { @@ -15656,11 +15959,11 @@ var ts; if (!links.referenced) { links.referenced = true; var node = getDeclarationOfAliasSymbol(symbol); - if (node.kind === 231 /* ExportAssignment */) { + if (node.kind === 234 /* ExportAssignment */) { // export default checkExpressionCached(node.expression); } - else if (node.kind === 234 /* ExportSpecifier */) { + else if (node.kind === 237 /* ExportSpecifier */) { // export { } or export { as foo } checkExpressionCached(node.propertyName || node.name); } @@ -15673,7 +15976,7 @@ var ts; // This function is only for imports with entity names function getSymbolOfPartOfRightHandSideOfImportEquals(entityName, importDeclaration) { if (!importDeclaration) { - importDeclaration = ts.getAncestor(entityName, 225 /* ImportEqualsDeclaration */); + importDeclaration = ts.getAncestor(entityName, 228 /* ImportEqualsDeclaration */); ts.Debug.assert(importDeclaration !== undefined); } // There are three things we might try to look for. In the following examples, @@ -15686,13 +15989,13 @@ var ts; entityName = entityName.parent; } // Check for case 1 and 3 in the above example - if (entityName.kind === 69 /* Identifier */ || entityName.parent.kind === 137 /* QualifiedName */) { + if (entityName.kind === 69 /* Identifier */ || entityName.parent.kind === 138 /* QualifiedName */) { return resolveEntityName(entityName, 1536 /* Namespace */); } else { // Case 2 in above example // entityName.kind could be a QualifiedName or a Missing identifier - ts.Debug.assert(entityName.parent.kind === 225 /* ImportEqualsDeclaration */); + ts.Debug.assert(entityName.parent.kind === 228 /* ImportEqualsDeclaration */); return resolveEntityName(entityName, 107455 /* Value */ | 793056 /* Type */ | 1536 /* Namespace */); } } @@ -15712,9 +16015,9 @@ var ts; return undefined; } } - else if (name.kind === 137 /* QualifiedName */ || name.kind === 170 /* PropertyAccessExpression */) { - var left = name.kind === 137 /* QualifiedName */ ? name.left : name.expression; - var right = name.kind === 137 /* QualifiedName */ ? name.right : name.name; + else if (name.kind === 138 /* QualifiedName */ || name.kind === 171 /* PropertyAccessExpression */) { + var left = name.kind === 138 /* QualifiedName */ ? name.left : name.expression; + var right = name.kind === 138 /* QualifiedName */ ? name.right : name.name; var namespace = resolveEntityName(left, 1536 /* Namespace */, ignoreErrors); if (!namespace || namespace === unknownSymbol || ts.nodeIsMissing(right)) { return undefined; @@ -15749,7 +16052,7 @@ var ts; } var isRelative = ts.isExternalModuleNameRelative(moduleName); if (!isRelative) { - var symbol = getSymbol(globals, "\"" + moduleName + "\"", 512 /* ValueModule */); + var symbol = getSymbol(globals, '"' + moduleName + '"', 512 /* ValueModule */); if (symbol) { // merged symbol is module declaration symbol combined with all augmentations return getMergedSymbol(symbol); @@ -15900,7 +16203,7 @@ var ts; var members = node.members; for (var _i = 0, members_1 = members; _i < members_1.length; _i++) { var member = members_1[_i]; - if (member.kind === 146 /* Constructor */ && ts.nodeIsPresent(member.body)) { + if (member.kind === 147 /* Constructor */ && ts.nodeIsPresent(member.body)) { return member; } } @@ -15971,21 +16274,15 @@ var ts; } } switch (location_1.kind) { - case 252 /* SourceFile */: + case 255 /* SourceFile */: if (!ts.isExternalOrCommonJsModule(location_1)) { break; } - case 222 /* ModuleDeclaration */: + case 224 /* ModuleDeclaration */: if (result = callback(getSymbolOfNode(location_1).exports)) { return result; } break; - case 218 /* ClassDeclaration */: - case 219 /* InterfaceDeclaration */: - if (result = callback(getSymbolOfNode(location_1).members)) { - return result; - } - break; } } return callback(globals); @@ -16022,7 +16319,7 @@ var ts; return ts.forEachValue(symbols, function (symbolFromSymbolTable) { if (symbolFromSymbolTable.flags & 8388608 /* Alias */ && symbolFromSymbolTable.name !== "export=" - && !ts.getDeclarationOfKind(symbolFromSymbolTable, 234 /* ExportSpecifier */)) { + && !ts.getDeclarationOfKind(symbolFromSymbolTable, 237 /* ExportSpecifier */)) { if (!useOnlyExternalAliasing || // Is this external alias, then use it to name ts.forEach(symbolFromSymbolTable.declarations, ts.isExternalModuleImportEqualsDeclaration)) { @@ -16041,7 +16338,9 @@ var ts; }); } if (symbol) { - return forEachSymbolTableInScope(enclosingDeclaration, getAccessibleSymbolChainFromSymbolTable); + if (!(isPropertyOrMethodDeclarationSymbol(symbol))) { + return forEachSymbolTableInScope(enclosingDeclaration, getAccessibleSymbolChainFromSymbolTable); + } } } function needsQualification(symbol, enclosingDeclaration, meaning) { @@ -16059,7 +16358,7 @@ var ts; return true; } // Qualify if the symbol from symbol table has same meaning as expected - symbolFromSymbolTable = (symbolFromSymbolTable.flags & 8388608 /* Alias */ && !ts.getDeclarationOfKind(symbolFromSymbolTable, 234 /* ExportSpecifier */)) ? resolveAlias(symbolFromSymbolTable) : symbolFromSymbolTable; + symbolFromSymbolTable = (symbolFromSymbolTable.flags & 8388608 /* Alias */ && !ts.getDeclarationOfKind(symbolFromSymbolTable, 237 /* ExportSpecifier */)) ? resolveAlias(symbolFromSymbolTable) : symbolFromSymbolTable; if (symbolFromSymbolTable.flags & meaning) { qualify = true; return true; @@ -16069,6 +16368,24 @@ var ts; }); return qualify; } + function isPropertyOrMethodDeclarationSymbol(symbol) { + if (symbol.declarations && symbol.declarations.length) { + for (var _i = 0, _a = symbol.declarations; _i < _a.length; _i++) { + var declaration = _a[_i]; + switch (declaration.kind) { + case 144 /* PropertyDeclaration */: + case 146 /* MethodDeclaration */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: + continue; + default: + return false; + } + } + return true; + } + return false; + } function isSymbolAccessible(symbol, enclosingDeclaration, meaning) { if (symbol && enclosingDeclaration && !(symbol.flags & 262144 /* TypeParameter */)) { var initialSymbol = symbol; @@ -16132,7 +16449,7 @@ var ts; } } function hasExternalModuleSymbol(declaration) { - return ts.isAmbientModule(declaration) || (declaration.kind === 252 /* SourceFile */ && ts.isExternalOrCommonJsModule(declaration)); + return ts.isAmbientModule(declaration) || (declaration.kind === 255 /* SourceFile */ && ts.isExternalOrCommonJsModule(declaration)); } function hasVisibleDeclarations(symbol) { var aliasesToMakeVisible; @@ -16168,12 +16485,12 @@ var ts; function isEntityNameVisible(entityName, enclosingDeclaration) { // get symbol of the first identifier of the entityName var meaning; - if (entityName.parent.kind === 156 /* TypeQuery */) { + if (entityName.parent.kind === 157 /* TypeQuery */ || ts.isExpressionWithTypeArgumentsInClassExtendsClause(entityName.parent)) { // Typeof value meaning = 107455 /* Value */ | 1048576 /* ExportValue */; } - else if (entityName.kind === 137 /* QualifiedName */ || entityName.kind === 170 /* PropertyAccessExpression */ || - entityName.parent.kind === 225 /* ImportEqualsDeclaration */) { + else if (entityName.kind === 138 /* QualifiedName */ || entityName.kind === 171 /* PropertyAccessExpression */ || + entityName.parent.kind === 228 /* ImportEqualsDeclaration */) { // Left identifier from type reference or TypeAlias // Entity name of the import declaration meaning = 1536 /* Namespace */; @@ -16244,10 +16561,10 @@ var ts; function getTypeAliasForTypeLiteral(type) { if (type.symbol && type.symbol.flags & 2048 /* TypeLiteral */) { var node = type.symbol.declarations[0].parent; - while (node.kind === 162 /* ParenthesizedType */) { + while (node.kind === 163 /* ParenthesizedType */) { node = node.parent; } - if (node.kind === 220 /* TypeAliasDeclaration */) { + if (node.kind === 222 /* TypeAliasDeclaration */) { return getSymbolOfNode(node); } } @@ -16255,7 +16572,7 @@ var ts; } function isTopLevelInExternalModuleAugmentation(node) { return node && node.parent && - node.parent.kind === 223 /* ModuleBlock */ && + node.parent.kind === 225 /* ModuleBlock */ && ts.isExternalModuleAugmentation(node.parent.parent); } function getSymbolDisplayBuilder() { @@ -16266,10 +16583,10 @@ var ts; return ts.declarationNameToString(declaration.name); } switch (declaration.kind) { - case 190 /* ClassExpression */: + case 191 /* ClassExpression */: return "(Anonymous class)"; - case 177 /* FunctionExpression */: - case 178 /* ArrowFunction */: + case 178 /* FunctionExpression */: + case 179 /* ArrowFunction */: return "(Anonymous function)"; } } @@ -16445,14 +16762,14 @@ var ts; while (i < length_1) { // Find group of type arguments for type parameters with the same declaring container. var start = i; - var parent_4 = getParentSymbolOfTypeParameter(outerTypeParameters[i]); + var parent_5 = getParentSymbolOfTypeParameter(outerTypeParameters[i]); do { i++; - } while (i < length_1 && getParentSymbolOfTypeParameter(outerTypeParameters[i]) === parent_4); + } while (i < length_1 && getParentSymbolOfTypeParameter(outerTypeParameters[i]) === parent_5); // When type parameters are their own type arguments for the whole group (i.e. we have // the default outer type arguments), we don't show the group. if (!ts.rangeEquals(outerTypeParameters, typeArguments, start, i)) { - writeSymbolTypeReference(parent_4, typeArguments, start, i, flags); + writeSymbolTypeReference(parent_5, typeArguments, start, i, flags); writePunctuation(writer, 21 /* DotToken */); } } @@ -16518,7 +16835,7 @@ var ts; var isNonLocalFunctionSymbol = !!(symbol.flags & 16 /* Function */) && (symbol.parent || ts.forEach(symbol.declarations, function (declaration) { - return declaration.parent.kind === 252 /* SourceFile */ || declaration.parent.kind === 223 /* ModuleBlock */; + return declaration.parent.kind === 255 /* SourceFile */ || declaration.parent.kind === 225 /* ModuleBlock */; })); if (isStaticMethodSymbol || isNonLocalFunctionSymbol) { // typeof is allowed only for static/non local functions @@ -16659,7 +16976,12 @@ var ts; if (ts.isRestParameter(parameterNode)) { writePunctuation(writer, 22 /* DotDotDotToken */); } - appendSymbolNameOnly(p, writer); + if (ts.isBindingPattern(parameterNode.name)) { + buildBindingPatternDisplay(parameterNode.name, writer, enclosingDeclaration, flags, symbolStack); + } + else { + appendSymbolNameOnly(p, writer); + } if (isOptionalParameter(parameterNode)) { writePunctuation(writer, 53 /* QuestionToken */); } @@ -16667,19 +16989,59 @@ var ts; writeSpace(writer); buildTypeDisplay(getTypeOfSymbol(p), writer, enclosingDeclaration, flags, symbolStack); } + function buildBindingPatternDisplay(bindingPattern, writer, enclosingDeclaration, flags, symbolStack) { + // We have to explicitly emit square bracket and bracket because these tokens are not stored inside the node. + if (bindingPattern.kind === 166 /* ObjectBindingPattern */) { + writePunctuation(writer, 15 /* OpenBraceToken */); + buildDisplayForCommaSeparatedList(bindingPattern.elements, writer, function (e) { return buildBindingElementDisplay(e, writer, enclosingDeclaration, flags, symbolStack); }); + writePunctuation(writer, 16 /* CloseBraceToken */); + } + else if (bindingPattern.kind === 167 /* ArrayBindingPattern */) { + writePunctuation(writer, 19 /* OpenBracketToken */); + var elements = bindingPattern.elements; + buildDisplayForCommaSeparatedList(elements, writer, function (e) { return buildBindingElementDisplay(e, writer, enclosingDeclaration, flags, symbolStack); }); + if (elements && elements.hasTrailingComma) { + writePunctuation(writer, 24 /* CommaToken */); + } + writePunctuation(writer, 20 /* CloseBracketToken */); + } + } + function buildBindingElementDisplay(bindingElement, writer, enclosingDeclaration, flags, symbolStack) { + if (bindingElement.kind === 192 /* OmittedExpression */) { + return; + } + ts.Debug.assert(bindingElement.kind === 168 /* BindingElement */); + if (bindingElement.propertyName) { + writer.writeSymbol(ts.getTextOfNode(bindingElement.propertyName), bindingElement.symbol); + writePunctuation(writer, 54 /* ColonToken */); + writeSpace(writer); + } + if (ts.isBindingPattern(bindingElement.name)) { + buildBindingPatternDisplay(bindingElement.name, writer, enclosingDeclaration, flags, symbolStack); + } + else { + if (bindingElement.dotDotDotToken) { + writePunctuation(writer, 22 /* DotDotDotToken */); + } + appendSymbolNameOnly(bindingElement.symbol, writer); + } + } function buildDisplayForTypeParametersAndDelimiters(typeParameters, writer, enclosingDeclaration, flags, symbolStack) { if (typeParameters && typeParameters.length) { writePunctuation(writer, 25 /* LessThanToken */); - for (var i = 0; i < typeParameters.length; i++) { - if (i > 0) { - writePunctuation(writer, 24 /* CommaToken */); - writeSpace(writer); - } - buildTypeParameterDisplay(typeParameters[i], writer, enclosingDeclaration, flags, symbolStack); - } + buildDisplayForCommaSeparatedList(typeParameters, writer, function (p) { return buildTypeParameterDisplay(p, writer, enclosingDeclaration, flags, symbolStack); }); writePunctuation(writer, 27 /* GreaterThanToken */); } } + function buildDisplayForCommaSeparatedList(list, writer, action) { + for (var i = 0; i < list.length; i++) { + if (i > 0) { + writePunctuation(writer, 24 /* CommaToken */); + writeSpace(writer); + } + action(list[i]); + } + } function buildDisplayForTypeArgumentsAndDelimiters(typeParameters, mapper, writer, enclosingDeclaration, flags, symbolStack) { if (typeParameters && typeParameters.length) { writePunctuation(writer, 25 /* LessThanToken */); @@ -16693,10 +17055,16 @@ var ts; writePunctuation(writer, 27 /* GreaterThanToken */); } } - function buildDisplayForParametersAndDelimiters(parameters, writer, enclosingDeclaration, flags, symbolStack) { + function buildDisplayForParametersAndDelimiters(thisType, parameters, writer, enclosingDeclaration, flags, symbolStack) { writePunctuation(writer, 17 /* OpenParenToken */); + if (thisType) { + writeKeyword(writer, 97 /* ThisKeyword */); + writePunctuation(writer, 54 /* ColonToken */); + writeSpace(writer); + buildTypeDisplay(thisType, writer, enclosingDeclaration, flags, symbolStack); + } for (var i = 0; i < parameters.length; i++) { - if (i > 0) { + if (i > 0 || thisType) { writePunctuation(writer, 24 /* CommaToken */); writeSpace(writer); } @@ -16746,7 +17114,7 @@ var ts; else { buildDisplayForTypeParametersAndDelimiters(signature.typeParameters, writer, enclosingDeclaration, flags, symbolStack); } - buildDisplayForParametersAndDelimiters(signature.parameters, writer, enclosingDeclaration, flags, symbolStack); + buildDisplayForParametersAndDelimiters(signature.thisType, signature.parameters, writer, enclosingDeclaration, flags, symbolStack); buildReturnTypeDisplay(signature, writer, enclosingDeclaration, flags, symbolStack); } return _displayBuilder || (_displayBuilder = { @@ -16773,86 +17141,86 @@ var ts; return false; function determineIfDeclarationIsVisible() { switch (node.kind) { - case 167 /* BindingElement */: + case 168 /* BindingElement */: return isDeclarationVisible(node.parent.parent); - case 215 /* VariableDeclaration */: + case 217 /* VariableDeclaration */: if (ts.isBindingPattern(node.name) && !node.name.elements.length) { // If the binding pattern is empty, this variable declaration is not visible return false; } // Otherwise fall through - case 222 /* ModuleDeclaration */: - case 218 /* ClassDeclaration */: - case 219 /* InterfaceDeclaration */: - case 220 /* TypeAliasDeclaration */: - case 217 /* FunctionDeclaration */: - case 221 /* EnumDeclaration */: - case 225 /* ImportEqualsDeclaration */: + case 224 /* ModuleDeclaration */: + case 220 /* ClassDeclaration */: + case 221 /* InterfaceDeclaration */: + case 222 /* TypeAliasDeclaration */: + case 219 /* FunctionDeclaration */: + case 223 /* EnumDeclaration */: + case 228 /* ImportEqualsDeclaration */: // external module augmentation is always visible if (ts.isExternalModuleAugmentation(node)) { return true; } - var parent_5 = getDeclarationContainer(node); + var parent_6 = getDeclarationContainer(node); // If the node is not exported or it is not ambient module element (except import declaration) if (!(ts.getCombinedNodeFlags(node) & 1 /* Export */) && - !(node.kind !== 225 /* ImportEqualsDeclaration */ && parent_5.kind !== 252 /* SourceFile */ && ts.isInAmbientContext(parent_5))) { - return isGlobalSourceFile(parent_5); + !(node.kind !== 228 /* ImportEqualsDeclaration */ && parent_6.kind !== 255 /* SourceFile */ && ts.isInAmbientContext(parent_6))) { + return isGlobalSourceFile(parent_6); } // Exported members/ambient module elements (exception import declaration) are visible if parent is visible - return isDeclarationVisible(parent_5); - case 143 /* PropertyDeclaration */: - case 142 /* PropertySignature */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: + return isDeclarationVisible(parent_6); + case 144 /* PropertyDeclaration */: + case 143 /* PropertySignature */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: if (node.flags & (8 /* Private */ | 16 /* Protected */)) { // Private/protected properties/methods are not visible return false; } // Public properties/methods are visible if its parents are visible, so const it fall into next case statement - case 146 /* Constructor */: - case 150 /* ConstructSignature */: - case 149 /* CallSignature */: - case 151 /* IndexSignature */: - case 140 /* Parameter */: - case 223 /* ModuleBlock */: - case 154 /* FunctionType */: - case 155 /* ConstructorType */: - case 157 /* TypeLiteral */: - case 153 /* TypeReference */: - case 158 /* ArrayType */: - case 159 /* TupleType */: - case 160 /* UnionType */: - case 161 /* IntersectionType */: - case 162 /* ParenthesizedType */: + case 147 /* Constructor */: + case 151 /* ConstructSignature */: + case 150 /* CallSignature */: + case 152 /* IndexSignature */: + case 141 /* Parameter */: + case 225 /* ModuleBlock */: + case 155 /* FunctionType */: + case 156 /* ConstructorType */: + case 158 /* TypeLiteral */: + case 154 /* TypeReference */: + case 159 /* ArrayType */: + case 160 /* TupleType */: + case 161 /* UnionType */: + case 162 /* IntersectionType */: + case 163 /* ParenthesizedType */: return isDeclarationVisible(node.parent); // Default binding, import specifier and namespace import is visible // only on demand so by default it is not visible - case 227 /* ImportClause */: - case 228 /* NamespaceImport */: - case 230 /* ImportSpecifier */: + case 230 /* ImportClause */: + case 231 /* NamespaceImport */: + case 233 /* ImportSpecifier */: return false; // Type parameters are always visible - case 139 /* TypeParameter */: + case 140 /* TypeParameter */: // Source file is always visible - case 252 /* SourceFile */: + case 255 /* SourceFile */: return true; // Export assignments do not create name bindings outside the module - case 231 /* ExportAssignment */: + case 234 /* ExportAssignment */: return false; default: - ts.Debug.fail("isDeclarationVisible unknown: SyntaxKind: " + node.kind); + return false; } } } function collectLinkedAliases(node) { var exportSymbol; - if (node.parent && node.parent.kind === 231 /* ExportAssignment */) { + if (node.parent && node.parent.kind === 234 /* ExportAssignment */) { exportSymbol = resolveName(node.parent, node.text, 107455 /* Value */ | 793056 /* Type */ | 1536 /* Namespace */ | 8388608 /* Alias */, ts.Diagnostics.Cannot_find_name_0, node); } - else if (node.parent.kind === 234 /* ExportSpecifier */) { + else if (node.parent.kind === 237 /* ExportSpecifier */) { var exportSpecifier = node.parent; exportSymbol = exportSpecifier.parent.parent.moduleSpecifier ? getExternalModuleMember(exportSpecifier.parent.parent, exportSpecifier) : @@ -16946,12 +17314,12 @@ var ts; node = ts.getRootDeclaration(node); while (node) { switch (node.kind) { - case 215 /* VariableDeclaration */: - case 216 /* VariableDeclarationList */: - case 230 /* ImportSpecifier */: - case 229 /* NamedImports */: - case 228 /* NamespaceImport */: - case 227 /* ImportClause */: + case 217 /* VariableDeclaration */: + case 218 /* VariableDeclarationList */: + case 233 /* ImportSpecifier */: + case 232 /* NamedImports */: + case 231 /* NamespaceImport */: + case 230 /* ImportClause */: node = node.parent; break; default: @@ -16988,7 +17356,7 @@ var ts; case 9 /* StringLiteral */: case 8 /* NumericLiteral */: return name.text; - case 138 /* ComputedPropertyName */: + case 139 /* ComputedPropertyName */: if (ts.isStringOrNumericLiteral(name.expression.kind)) { return name.expression.text; } @@ -16996,9 +17364,9 @@ var ts; return undefined; } function isComputedNonLiteralName(name) { - return name.kind === 138 /* ComputedPropertyName */ && !ts.isStringOrNumericLiteral(name.expression.kind); + return name.kind === 139 /* ComputedPropertyName */ && !ts.isStringOrNumericLiteral(name.expression.kind); } - // Return the inferred type for a binding element + /** Return the inferred type for a binding element */ function getTypeForBindingElement(declaration) { var pattern = declaration.parent; var parentType = getTypeForBindingElementParent(pattern.parent); @@ -17016,13 +17384,16 @@ var ts; return parentType; } var type; - if (pattern.kind === 165 /* ObjectBindingPattern */) { + if (pattern.kind === 166 /* ObjectBindingPattern */) { // Use explicitly specified property name ({ p: xxx } form), or otherwise the implied name ({ p } form) var name_10 = declaration.propertyName || declaration.name; if (isComputedNonLiteralName(name_10)) { // computed properties with non-literal names are treated as 'any' return anyType; } + if (declaration.initializer) { + getContextualType(declaration.initializer); + } // Use type of the specified property, or otherwise, for a numeric name, the type of the numeric index signature, // or otherwise the type of the string index signature. var text = getTextOfPropertyName(name_10); @@ -17060,6 +17431,11 @@ var ts; type = createArrayType(elementType); } } + // In strict null checking mode, if a default value of a non-undefined type is specified, remove + // undefined from the final type. + if (strictNullChecks && declaration.initializer && !(getNullableKind(checkExpressionCached(declaration.initializer)) & 32 /* Undefined */)) { + type = removeNullableKind(type, 32 /* Undefined */); + } return type; } function getTypeForVariableLikeDeclarationFromJSDocComment(declaration) { @@ -17074,16 +17450,16 @@ var ts; if (typeTag && typeTag.typeExpression) { return typeTag.typeExpression.type; } - if (declaration.kind === 215 /* VariableDeclaration */ && - declaration.parent.kind === 216 /* VariableDeclarationList */ && - declaration.parent.parent.kind === 197 /* VariableStatement */) { + if (declaration.kind === 217 /* VariableDeclaration */ && + declaration.parent.kind === 218 /* VariableDeclarationList */ && + declaration.parent.parent.kind === 199 /* VariableStatement */) { // @type annotation might have been on the variable statement, try that instead. var annotation = ts.getJSDocTypeTag(declaration.parent.parent); if (annotation && annotation.typeExpression) { return annotation.typeExpression.type; } } - else if (declaration.kind === 140 /* Parameter */) { + else if (declaration.kind === 141 /* Parameter */) { // If it's a parameter, see if the parent has a jsdoc comment with an @param // annotation. var paramTag = ts.getCorrespondingJSDocParameterTag(declaration); @@ -17105,10 +17481,10 @@ var ts; } } // A variable declared in a for..in statement is always of type string - if (declaration.parent.parent.kind === 204 /* ForInStatement */) { + if (declaration.parent.parent.kind === 206 /* ForInStatement */) { return stringType; } - if (declaration.parent.parent.kind === 205 /* ForOfStatement */) { + if (declaration.parent.parent.kind === 207 /* ForOfStatement */) { // checkRightHandSideOfForOf will return undefined if the for-of expression type was // missing properties/signatures required to get its iteratedType (like // [Symbol.iterator] or next). This may be because we accessed properties from anyType, @@ -17120,21 +17496,24 @@ var ts; } // Use type from type annotation if one is present if (declaration.type) { - return getTypeFromTypeNode(declaration.type); + var type = getTypeFromTypeNode(declaration.type); + return strictNullChecks && declaration.questionToken ? addNullableKind(type, 32 /* Undefined */) : type; } - if (declaration.kind === 140 /* Parameter */) { + if (declaration.kind === 141 /* Parameter */) { var func = declaration.parent; // For a parameter of a set accessor, use the type of the get accessor if one is present - if (func.kind === 148 /* SetAccessor */ && !ts.hasDynamicName(func)) { - var getter = ts.getDeclarationOfKind(declaration.parent.symbol, 147 /* GetAccessor */); + if (func.kind === 149 /* SetAccessor */ && !ts.hasDynamicName(func)) { + var getter = ts.getDeclarationOfKind(declaration.parent.symbol, 148 /* GetAccessor */); if (getter) { return getReturnTypeOfSignature(getSignatureFromDeclaration(getter)); } } // Use contextual parameter type if one is available - var type = getContextuallyTypedParameterType(declaration); + var type = declaration.symbol.name === "this" + ? getContextuallyTypedThisType(func) + : getContextuallyTypedParameterType(declaration); if (type) { - return type; + return strictNullChecks && declaration.questionToken ? addNullableKind(type, 32 /* Undefined */) : type; } } // Use the type of the initializer expression if one is present @@ -17142,7 +17521,7 @@ var ts; return checkExpressionCached(declaration.initializer); } // If it is a short-hand property assignment, use the type of the identifier - if (declaration.kind === 250 /* ShorthandPropertyAssignment */) { + if (declaration.kind === 253 /* ShorthandPropertyAssignment */) { return checkIdentifier(declaration.name); } // If the declaration specifies a binding pattern, use the type implied by the binding pattern @@ -17157,11 +17536,16 @@ var ts; // pattern. Otherwise, it is the type any. function getTypeFromBindingElement(element, includePatternInType) { if (element.initializer) { - return getWidenedType(checkExpressionCached(element.initializer)); + var type = checkExpressionCached(element.initializer); + reportErrorsFromWidening(element, type); + return getWidenedType(type); } if (ts.isBindingPattern(element.name)) { return getTypeFromBindingPattern(element.name, includePatternInType); } + if (compilerOptions.noImplicitAny) { + reportImplicitAnyError(element, anyType); + } return anyType; } // Return the type implied by an object binding pattern @@ -17198,7 +17582,7 @@ var ts; return languageVersion >= 2 /* ES6 */ ? createIterableType(anyType) : anyArrayType; } // If the pattern has at least one element, and no rest element, then it should imply a tuple type. - var elementTypes = ts.map(elements, function (e) { return e.kind === 191 /* OmittedExpression */ ? anyType : getTypeFromBindingElement(e, includePatternInType); }); + var elementTypes = ts.map(elements, function (e) { return e.kind === 192 /* OmittedExpression */ ? anyType : getTypeFromBindingElement(e, includePatternInType); }); if (includePatternInType) { var result = createNewTupleType(elementTypes); result.pattern = pattern; @@ -17214,7 +17598,7 @@ var ts; // parameter with no type annotation or initializer, the type implied by the binding pattern becomes the type of // the parameter. function getTypeFromBindingPattern(pattern, includePatternInType) { - return pattern.kind === 165 /* ObjectBindingPattern */ + return pattern.kind === 166 /* ObjectBindingPattern */ ? getTypeFromObjectBindingPattern(pattern, includePatternInType) : getTypeFromArrayBindingPattern(pattern, includePatternInType); } @@ -17236,7 +17620,7 @@ var ts; // During a normal type check we'll never get to here with a property assignment (the check of the containing // object literal uses a different path). We exclude widening only so that language services and type verification // tools see the actual type. - if (declaration.kind === 249 /* PropertyAssignment */) { + if (declaration.kind === 252 /* PropertyAssignment */) { return type; } return getWidenedType(type); @@ -17246,7 +17630,7 @@ var ts; // Report implicit any errors unless this is a private property within an ambient declaration if (reportErrors && compilerOptions.noImplicitAny) { var root = ts.getRootDeclaration(declaration); - if (!isPrivateWithinAmbient(root) && !(root.kind === 140 /* Parameter */ && isPrivateWithinAmbient(root.parent))) { + if (!isPrivateWithinAmbient(root) && !(root.kind === 141 /* Parameter */ && isPrivateWithinAmbient(root.parent))) { reportImplicitAnyError(declaration, type); } } @@ -17261,21 +17645,21 @@ var ts; } // Handle catch clause variables var declaration = symbol.valueDeclaration; - if (declaration.parent.kind === 248 /* CatchClause */) { + if (declaration.parent.kind === 251 /* CatchClause */) { return links.type = anyType; } // Handle export default expressions - if (declaration.kind === 231 /* ExportAssignment */) { + if (declaration.kind === 234 /* ExportAssignment */) { return links.type = checkExpression(declaration.expression); } // Handle module.exports = expr - if (declaration.kind === 185 /* BinaryExpression */) { + if (declaration.kind === 186 /* BinaryExpression */) { return links.type = getUnionType(ts.map(symbol.declarations, function (decl) { return checkExpressionCached(decl.right); })); } - if (declaration.kind === 170 /* PropertyAccessExpression */) { + if (declaration.kind === 171 /* PropertyAccessExpression */) { // Declarations only exist for property access expressions for certain // special assignment kinds - if (declaration.parent.kind === 185 /* BinaryExpression */) { + if (declaration.parent.kind === 186 /* BinaryExpression */) { // Handle exports.p = expr or this.p = expr or className.prototype.method = expr return links.type = checkExpressionCached(declaration.parent.right); } @@ -17305,7 +17689,7 @@ var ts; } function getAnnotatedAccessorType(accessor) { if (accessor) { - if (accessor.kind === 147 /* GetAccessor */) { + if (accessor.kind === 148 /* GetAccessor */) { return accessor.type && getTypeFromTypeNode(accessor.type); } else { @@ -17318,11 +17702,17 @@ var ts; function getTypeOfAccessors(symbol) { var links = getSymbolLinks(symbol); if (!links.type) { + var getter = ts.getDeclarationOfKind(symbol, 148 /* GetAccessor */); + var setter = ts.getDeclarationOfKind(symbol, 149 /* SetAccessor */); + if (getter && getter.flags & 134217728 /* JavaScriptFile */) { + var jsDocType = getTypeForVariableLikeDeclarationFromJSDocComment(getter); + if (jsDocType) { + return links.type = jsDocType; + } + } if (!pushTypeResolution(symbol, 0 /* Type */)) { return unknownType; } - var getter = ts.getDeclarationOfKind(symbol, 147 /* GetAccessor */); - var setter = ts.getDeclarationOfKind(symbol, 148 /* SetAccessor */); var type = void 0; // First try to see if the user specified a return type on the get-accessor. var getterReturnType = getAnnotatedAccessorType(getter); @@ -17351,7 +17741,7 @@ var ts; if (!popTypeResolution()) { type = anyType; if (compilerOptions.noImplicitAny) { - var getter_1 = ts.getDeclarationOfKind(symbol, 147 /* GetAccessor */); + var getter_1 = ts.getDeclarationOfKind(symbol, 148 /* GetAccessor */); error(getter_1, ts.Diagnostics._0_implicitly_has_return_type_any_because_it_does_not_have_a_return_type_annotation_and_is_referenced_directly_or_indirectly_in_one_of_its_return_expressions, symbolToString(symbol)); } } @@ -17451,9 +17841,9 @@ var ts; if (!node) { return typeParameters; } - if (node.kind === 218 /* ClassDeclaration */ || node.kind === 190 /* ClassExpression */ || - node.kind === 217 /* FunctionDeclaration */ || node.kind === 177 /* FunctionExpression */ || - node.kind === 145 /* MethodDeclaration */ || node.kind === 178 /* ArrowFunction */) { + if (node.kind === 220 /* ClassDeclaration */ || node.kind === 191 /* ClassExpression */ || + node.kind === 219 /* FunctionDeclaration */ || node.kind === 178 /* FunctionExpression */ || + node.kind === 146 /* MethodDeclaration */ || node.kind === 179 /* ArrowFunction */) { var declarations = node.typeParameters; if (declarations) { return appendTypeParameters(appendOuterTypeParameters(typeParameters, node), declarations); @@ -17463,7 +17853,7 @@ var ts; } // The outer type parameters are those defined by enclosing generic classes, methods, or functions. function getOuterTypeParametersOfClassOrInterface(symbol) { - var declaration = symbol.flags & 32 /* Class */ ? symbol.valueDeclaration : ts.getDeclarationOfKind(symbol, 219 /* InterfaceDeclaration */); + var declaration = symbol.flags & 32 /* Class */ ? symbol.valueDeclaration : ts.getDeclarationOfKind(symbol, 221 /* InterfaceDeclaration */); return appendOuterTypeParameters(undefined, declaration); } // The local type parameters are the combined set of type parameters from all declarations of the class, @@ -17472,8 +17862,8 @@ var ts; var result; for (var _i = 0, _a = symbol.declarations; _i < _a.length; _i++) { var node = _a[_i]; - if (node.kind === 219 /* InterfaceDeclaration */ || node.kind === 218 /* ClassDeclaration */ || - node.kind === 190 /* ClassExpression */ || node.kind === 220 /* TypeAliasDeclaration */) { + if (node.kind === 221 /* InterfaceDeclaration */ || node.kind === 220 /* ClassDeclaration */ || + node.kind === 191 /* ClassExpression */ || node.kind === 222 /* TypeAliasDeclaration */) { var declaration = node; if (declaration.typeParameters) { result = appendTypeParameters(result, declaration.typeParameters); @@ -17613,7 +18003,7 @@ var ts; type.resolvedBaseTypes = type.resolvedBaseTypes || emptyArray; for (var _i = 0, _a = type.symbol.declarations; _i < _a.length; _i++) { var declaration = _a[_i]; - if (declaration.kind === 219 /* InterfaceDeclaration */ && ts.getInterfaceBaseTypeNodes(declaration)) { + if (declaration.kind === 221 /* InterfaceDeclaration */ && ts.getInterfaceBaseTypeNodes(declaration)) { for (var _b = 0, _c = ts.getInterfaceBaseTypeNodes(declaration); _b < _c.length; _b++) { var node = _c[_b]; var baseType = getTypeFromTypeNode(node); @@ -17645,7 +18035,7 @@ var ts; function isIndependentInterface(symbol) { for (var _i = 0, _a = symbol.declarations; _i < _a.length; _i++) { var declaration = _a[_i]; - if (declaration.kind === 219 /* InterfaceDeclaration */) { + if (declaration.kind === 221 /* InterfaceDeclaration */) { if (declaration.flags & 16384 /* ContainsThis */) { return false; } @@ -17701,7 +18091,7 @@ var ts; if (!pushTypeResolution(symbol, 2 /* DeclaredType */)) { return unknownType; } - var declaration = ts.getDeclarationOfKind(symbol, 220 /* TypeAliasDeclaration */); + var declaration = ts.getDeclarationOfKind(symbol, 222 /* TypeAliasDeclaration */); var type = getTypeFromTypeNode(declaration.type); if (popTypeResolution()) { links.typeParameters = getLocalTypeParametersOfClassOrInterfaceOrTypeAlias(symbol); @@ -17734,7 +18124,7 @@ var ts; if (!links.declaredType) { var type = createType(512 /* TypeParameter */); type.symbol = symbol; - if (!ts.getDeclarationOfKind(symbol, 139 /* TypeParameter */).constraint) { + if (!ts.getDeclarationOfKind(symbol, 140 /* TypeParameter */).constraint) { type.constraint = noConstraintType; } links.declaredType = type; @@ -17790,11 +18180,13 @@ var ts; case 120 /* BooleanKeyword */: case 132 /* SymbolKeyword */: case 103 /* VoidKeyword */: - case 164 /* StringLiteralType */: + case 134 /* UndefinedKeyword */: + case 93 /* NullKeyword */: + case 165 /* StringLiteralType */: return true; - case 158 /* ArrayType */: + case 159 /* ArrayType */: return isIndependentType(node.elementType); - case 153 /* TypeReference */: + case 154 /* TypeReference */: return isIndependentTypeReference(node); } return false; @@ -17807,7 +18199,7 @@ var ts; // A function-like declaration is considered independent (free of this references) if it has a return type // annotation that is considered independent and if each parameter is considered independent. function isIndependentFunctionLikeDeclaration(node) { - if (node.kind !== 146 /* Constructor */ && (!node.type || !isIndependentType(node.type))) { + if (node.kind !== 147 /* Constructor */ && (!node.type || !isIndependentType(node.type))) { return false; } for (var _i = 0, _a = node.parameters; _i < _a.length; _i++) { @@ -17828,12 +18220,12 @@ var ts; var declaration = symbol.declarations[0]; if (declaration) { switch (declaration.kind) { - case 143 /* PropertyDeclaration */: - case 142 /* PropertySignature */: + case 144 /* PropertyDeclaration */: + case 143 /* PropertySignature */: return isIndependentVariableLikeDeclaration(declaration); - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: - case 146 /* Constructor */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: + case 147 /* Constructor */: return isIndependentFunctionLikeDeclaration(declaration); } } @@ -17926,11 +18318,12 @@ var ts; type.typeArguments : ts.concatenate(type.typeArguments, [type]); resolveObjectTypeMembers(type, source, typeParameters, typeArguments); } - function createSignature(declaration, typeParameters, parameters, resolvedReturnType, typePredicate, minArgumentCount, hasRestParameter, hasStringLiterals) { + function createSignature(declaration, typeParameters, thisType, parameters, resolvedReturnType, typePredicate, minArgumentCount, hasRestParameter, hasStringLiterals) { var sig = new Signature(checker); sig.declaration = declaration; sig.typeParameters = typeParameters; sig.parameters = parameters; + sig.thisType = thisType; sig.resolvedReturnType = resolvedReturnType; sig.typePredicate = typePredicate; sig.minArgumentCount = minArgumentCount; @@ -17939,13 +18332,13 @@ var ts; return sig; } function cloneSignature(sig) { - return createSignature(sig.declaration, sig.typeParameters, sig.parameters, sig.resolvedReturnType, sig.typePredicate, sig.minArgumentCount, sig.hasRestParameter, sig.hasStringLiterals); + return createSignature(sig.declaration, sig.typeParameters, sig.thisType, sig.parameters, sig.resolvedReturnType, sig.typePredicate, sig.minArgumentCount, sig.hasRestParameter, sig.hasStringLiterals); } function getDefaultConstructSignatures(classType) { var baseConstructorType = getBaseConstructorTypeOfClass(classType); var baseSignatures = getSignaturesOfType(baseConstructorType, 1 /* Construct */); if (baseSignatures.length === 0) { - return [createSignature(undefined, classType.localTypeParameters, emptyArray, classType, /*typePredicate*/ undefined, 0, /*hasRestParameter*/ false, /*hasStringLiterals*/ false)]; + return [createSignature(undefined, classType.localTypeParameters, undefined, emptyArray, classType, /*typePredicate*/ undefined, 0, /*hasRestParameter*/ false, /*hasStringLiterals*/ false)]; } var baseTypeNode = getBaseTypeNodeOfClass(classType); var typeArguments = ts.map(baseTypeNode.typeArguments, getTypeFromTypeNode); @@ -17980,10 +18373,10 @@ var ts; addInheritedMembers(members, arrayType.properties); setObjectTypeMembers(type, members, arrayType.callSignatures, arrayType.constructSignatures, arrayType.stringIndexInfo, arrayType.numberIndexInfo); } - function findMatchingSignature(signatureList, signature, partialMatch, ignoreReturnTypes) { + function findMatchingSignature(signatureList, signature, partialMatch, ignoreThisTypes, ignoreReturnTypes) { for (var _i = 0, signatureList_1 = signatureList; _i < signatureList_1.length; _i++) { var s = signatureList_1[_i]; - if (compareSignaturesIdentical(s, signature, partialMatch, ignoreReturnTypes, compareTypesIdentical)) { + if (compareSignaturesIdentical(s, signature, partialMatch, ignoreThisTypes, ignoreReturnTypes, compareTypesIdentical)) { return s; } } @@ -17996,7 +18389,7 @@ var ts; return undefined; } for (var i = 1; i < signatureLists.length; i++) { - if (!findMatchingSignature(signatureLists[i], signature, /*partialMatch*/ false, /*ignoreReturnTypes*/ false)) { + if (!findMatchingSignature(signatureLists[i], signature, /*partialMatch*/ false, /*ignoreThisTypes*/ false, /*ignoreReturnTypes*/ false)) { return undefined; } } @@ -18005,7 +18398,7 @@ var ts; var result = undefined; for (var i = 0; i < signatureLists.length; i++) { // Allow matching non-generic signatures to have excess parameters and different return types - var match = i === listIndex ? signature : findMatchingSignature(signatureLists[i], signature, /*partialMatch*/ true, /*ignoreReturnTypes*/ true); + var match = i === listIndex ? signature : findMatchingSignature(signatureLists[i], signature, /*partialMatch*/ true, /*ignoreThisTypes*/ true, /*ignoreReturnTypes*/ true); if (!match) { return undefined; } @@ -18026,13 +18419,16 @@ var ts; for (var _i = 0, _a = signatureLists[i]; _i < _a.length; _i++) { var signature = _a[_i]; // Only process signatures with parameter lists that aren't already in the result list - if (!result || !findMatchingSignature(result, signature, /*partialMatch*/ false, /*ignoreReturnTypes*/ true)) { + if (!result || !findMatchingSignature(result, signature, /*partialMatch*/ false, /*ignoreThisTypes*/ true, /*ignoreReturnTypes*/ true)) { var unionSignatures = findMatchingSignatures(signatureLists, signature, i); if (unionSignatures) { var s = signature; // Union the result types when more than one signature matches if (unionSignatures.length > 1) { s = cloneSignature(signature); + if (ts.forEach(unionSignatures, function (sig) { return sig.thisType; })) { + s.thisType = getUnionType(ts.map(unionSignatures, function (sig) { return sig.thisType || anyType; })); + } // Clear resolved return type we possibly got from cloneSignature s.resolvedReturnType = undefined; s.unionSignatures = unionSignatures; @@ -18232,7 +18628,7 @@ var ts; type = globalBooleanType; } else if (type.flags & 16777216 /* ESSymbol */) { - type = globalESSymbolType; + type = getGlobalESSymbolType(); } return type; } @@ -18401,7 +18797,7 @@ var ts; } function isOptionalParameter(node) { if (node.flags & 134217728 /* JavaScriptFile */) { - if (node.type && node.type.kind === 264 /* JSDocOptionalType */) { + if (node.type && node.type.kind === 267 /* JSDocOptionalType */) { return true; } var paramTag = ts.getCorrespondingJSDocParameterTag(node); @@ -18410,7 +18806,7 @@ var ts; return true; } if (paramTag.typeExpression) { - return paramTag.typeExpression.type.kind === 264 /* JSDocOptionalType */; + return paramTag.typeExpression.type.kind === 267 /* JSDocOptionalType */; } } } @@ -18446,7 +18842,7 @@ var ts; function getSignatureFromDeclaration(declaration) { var links = getNodeLinks(declaration); if (!links.resolvedSignature) { - var classType = declaration.kind === 146 /* Constructor */ ? + var classType = declaration.kind === 147 /* Constructor */ ? getDeclaredTypeOfClassOrInterface(getMergedSymbol(declaration.parent.symbol)) : undefined; var typeParameters = classType ? classType.localTypeParameters : @@ -18455,6 +18851,8 @@ var ts; var parameters = []; var hasStringLiterals = false; var minArgumentCount = -1; + var thisType = undefined; + var hasThisParameter = void 0; var isJSConstructSignature = ts.isJSDocConstructSignature(declaration); var returnType = undefined; var typePredicate = undefined; @@ -18469,13 +18867,19 @@ var ts; var resolvedSymbol = resolveName(param, paramSymbol.name, 107455 /* Value */, undefined, undefined); paramSymbol = resolvedSymbol; } - parameters.push(paramSymbol); - if (param.type && param.type.kind === 164 /* StringLiteralType */) { + if (i === 0 && paramSymbol.name === "this") { + hasThisParameter = true; + thisType = param.type ? getTypeFromTypeNode(param.type) : unknownType; + } + else { + parameters.push(paramSymbol); + } + if (param.type && param.type.kind === 165 /* StringLiteralType */) { hasStringLiterals = true; } if (param.initializer || param.questionToken || param.dotDotDotToken) { if (minArgumentCount < 0) { - minArgumentCount = i; + minArgumentCount = i - (hasThisParameter ? 1 : 0); } } else { @@ -18484,7 +18888,7 @@ var ts; } } if (minArgumentCount < 0) { - minArgumentCount = declaration.parameters.length; + minArgumentCount = declaration.parameters.length - (hasThisParameter ? 1 : 0); } if (isJSConstructSignature) { minArgumentCount--; @@ -18495,7 +18899,7 @@ var ts; } else if (declaration.type) { returnType = getTypeFromTypeNode(declaration.type); - if (declaration.type.kind === 152 /* TypePredicate */) { + if (declaration.type.kind === 153 /* TypePredicate */) { typePredicate = createTypePredicateFromTypePredicateNode(declaration.type); } } @@ -18508,15 +18912,15 @@ var ts; } // TypeScript 1.0 spec (April 2014): // If only one accessor includes a type annotation, the other behaves as if it had the same type annotation. - if (declaration.kind === 147 /* GetAccessor */ && !ts.hasDynamicName(declaration)) { - var setter = ts.getDeclarationOfKind(declaration.symbol, 148 /* SetAccessor */); + if (declaration.kind === 148 /* GetAccessor */ && !ts.hasDynamicName(declaration)) { + var setter = ts.getDeclarationOfKind(declaration.symbol, 149 /* SetAccessor */); returnType = getAnnotatedAccessorType(setter); } if (!returnType && ts.nodeIsMissing(declaration.body)) { returnType = anyType; } } - links.resolvedSignature = createSignature(declaration, typeParameters, parameters, returnType, typePredicate, minArgumentCount, ts.hasRestParameter(declaration), hasStringLiterals); + links.resolvedSignature = createSignature(declaration, typeParameters, thisType, parameters, returnType, typePredicate, minArgumentCount, ts.hasRestParameter(declaration), hasStringLiterals); } return links.resolvedSignature; } @@ -18527,20 +18931,20 @@ var ts; for (var i = 0, len = symbol.declarations.length; i < len; i++) { var node = symbol.declarations[i]; switch (node.kind) { - case 154 /* FunctionType */: - case 155 /* ConstructorType */: - case 217 /* FunctionDeclaration */: - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: - case 146 /* Constructor */: - case 149 /* CallSignature */: - case 150 /* ConstructSignature */: - case 151 /* IndexSignature */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: - case 177 /* FunctionExpression */: - case 178 /* ArrowFunction */: - case 265 /* JSDocFunctionType */: + case 155 /* FunctionType */: + case 156 /* ConstructorType */: + case 219 /* FunctionDeclaration */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: + case 147 /* Constructor */: + case 150 /* CallSignature */: + case 151 /* ConstructSignature */: + case 152 /* IndexSignature */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: + case 178 /* FunctionExpression */: + case 179 /* ArrowFunction */: + case 268 /* JSDocFunctionType */: // Don't include signature if node is the implementation of an overloaded function. A node is considered // an implementation node if it has a body and the previous node is of the same kind and immediately // precedes the implementation node (i.e. has the same parent and ends where the implementation starts). @@ -18627,7 +19031,7 @@ var ts; // object type literal or interface (using the new keyword). Each way of declaring a constructor // will result in a different declaration kind. if (!signature.isolatedSignatureType) { - var isConstructor = signature.declaration.kind === 146 /* Constructor */ || signature.declaration.kind === 150 /* ConstructSignature */; + var isConstructor = signature.declaration.kind === 147 /* Constructor */ || signature.declaration.kind === 151 /* ConstructSignature */; var type = createObjectType(65536 /* Anonymous */ | 262144 /* FromSignature */); type.members = emptySymbols; type.properties = emptyArray; @@ -18668,7 +19072,7 @@ var ts; return undefined; } function getConstraintDeclaration(type) { - return ts.getDeclarationOfKind(type.symbol, 139 /* TypeParameter */).constraint; + return ts.getDeclarationOfKind(type.symbol, 140 /* TypeParameter */).constraint; } function hasConstraintReferenceTo(type, target) { var checked; @@ -18701,7 +19105,7 @@ var ts; return typeParameter.constraint === noConstraintType ? undefined : typeParameter.constraint; } function getParentSymbolOfTypeParameter(typeParameter) { - return getSymbolOfNode(ts.getDeclarationOfKind(typeParameter.symbol, 139 /* TypeParameter */).parent); + return getSymbolOfNode(ts.getDeclarationOfKind(typeParameter.symbol, 140 /* TypeParameter */).parent); } function getTypeListId(types) { if (types) { @@ -18727,11 +19131,13 @@ var ts; // It is only necessary to do so if a constituent type might be the undefined type, the null type, the type // of an object literal or the anyFunctionType. This is because there are operations in the type checker // that care about the presence of such types at arbitrary depth in a containing type. - function getPropagatingFlagsOfTypes(types) { + function getPropagatingFlagsOfTypes(types, excludeKinds) { var result = 0; for (var _i = 0, types_3 = types; _i < types_3.length; _i++) { var type = types_3[_i]; - result |= type.flags; + if (!(type.flags & excludeKinds)) { + result |= type.flags; + } } return result & 14680064 /* PropagatingFlags */; } @@ -18739,7 +19145,8 @@ var ts; var id = getTypeListId(typeArguments); var type = target.instantiations[id]; if (!type) { - var flags = 4096 /* Reference */ | (typeArguments ? getPropagatingFlagsOfTypes(typeArguments) : 0); + var propagatedFlags = typeArguments ? getPropagatingFlagsOfTypes(typeArguments, /*excludeKinds*/ 0) : 0; + var flags = 4096 /* Reference */ | propagatedFlags; type = target.instantiations[id] = createObjectType(flags, target.symbol); type.target = target; type.typeArguments = typeArguments; @@ -18748,7 +19155,7 @@ var ts; } // Get type from reference to class or interface function getTypeFromClassOrInterfaceReference(node, symbol) { - var type = getDeclaredTypeOfSymbol(symbol); + var type = getDeclaredTypeOfSymbol(getMergedSymbol(symbol)); var typeParameters = type.localTypeParameters; if (typeParameters) { if (!node.typeArguments || node.typeArguments.length !== typeParameters.length) { @@ -18798,11 +19205,11 @@ var ts; } function getTypeReferenceName(node) { switch (node.kind) { - case 153 /* TypeReference */: + case 154 /* TypeReference */: return node.typeName; - case 263 /* JSDocTypeReference */: + case 266 /* JSDocTypeReference */: return node.name; - case 192 /* ExpressionWithTypeArguments */: + case 193 /* ExpressionWithTypeArguments */: // We only support expressions that are simple qualified names. For other // expressions this produces undefined. if (ts.isSupportedExpressionWithTypeArguments(node)) { @@ -18827,7 +19234,7 @@ var ts; if (symbol.flags & 524288 /* TypeAlias */) { return getTypeFromTypeAliasReference(node, symbol); } - if (symbol.flags & 107455 /* Value */ && node.kind === 263 /* JSDocTypeReference */) { + if (symbol.flags & 107455 /* Value */ && node.kind === 266 /* JSDocTypeReference */) { // A JSDocTypeReference may have resolved to a value (as opposed to a type). In // that case, the type of this reference is just the type of the value we resolved // to. @@ -18840,7 +19247,7 @@ var ts; if (!links.resolvedType) { var symbol = void 0; var type = void 0; - if (node.kind === 263 /* JSDocTypeReference */) { + if (node.kind === 266 /* JSDocTypeReference */) { var typeReferenceName = getTypeReferenceName(node); symbol = resolveTypeReferenceName(node, typeReferenceName); type = getTypeReferenceType(node, symbol); @@ -18849,7 +19256,7 @@ var ts; } else { // We only support expressions that are simple qualified names. For other expressions this produces undefined. - var typeNameOrExpression = node.kind === 153 /* TypeReference */ ? node.typeName : + var typeNameOrExpression = node.kind === 154 /* TypeReference */ ? node.typeName : ts.isSupportedExpressionWithTypeArguments(node) ? node.expression : undefined; symbol = typeNameOrExpression && resolveEntityName(typeNameOrExpression, 793056 /* Type */) || unknownSymbol; @@ -18882,9 +19289,9 @@ var ts; for (var _i = 0, declarations_3 = declarations; _i < declarations_3.length; _i++) { var declaration = declarations_3[_i]; switch (declaration.kind) { - case 218 /* ClassDeclaration */: - case 219 /* InterfaceDeclaration */: - case 221 /* EnumDeclaration */: + case 220 /* ClassDeclaration */: + case 221 /* InterfaceDeclaration */: + case 223 /* EnumDeclaration */: return declaration; } } @@ -18925,9 +19332,6 @@ var ts; var typeSymbol = namespaceSymbol && getSymbol(namespaceSymbol.exports, name, 793056 /* Type */); return typeSymbol && getDeclaredTypeOfSymbol(typeSymbol); } - function getGlobalESSymbolConstructorSymbol() { - return globalESSymbolConstructorSymbol || (globalESSymbolConstructorSymbol = getGlobalValueSymbol("Symbol")); - } /** * Creates a TypeReference for a generic `TypedPropertyDescriptor`. */ @@ -18944,10 +19348,10 @@ var ts; return genericGlobalType !== emptyGenericType ? createTypeReference(genericGlobalType, typeArguments) : emptyObjectType; } function createIterableType(elementType) { - return createTypeFromGenericGlobalType(globalIterableType, [elementType]); + return createTypeFromGenericGlobalType(getGlobalIterableType(), [elementType]); } function createIterableIteratorType(elementType) { - return createTypeFromGenericGlobalType(globalIterableIteratorType, [elementType]); + return createTypeFromGenericGlobalType(getGlobalIterableIteratorType(), [elementType]); } function createArrayType(elementType) { return createTypeFromGenericGlobalType(globalArrayType, [elementType]); @@ -18964,7 +19368,8 @@ var ts; return tupleTypes[id] || (tupleTypes[id] = createNewTupleType(elementTypes)); } function createNewTupleType(elementTypes) { - var type = createObjectType(8192 /* Tuple */ | getPropagatingFlagsOfTypes(elementTypes)); + var propagatedFlags = getPropagatingFlagsOfTypes(elementTypes, /*excludeKinds*/ 0); + var type = createObjectType(8192 /* Tuple */ | propagatedFlags); type.elementTypes = elementTypes; return type; } @@ -18979,6 +19384,14 @@ var ts; if (type.flags & typeSetKind) { addTypesToSet(typeSet, type.types, typeSetKind); } + else if (type.flags & (1 /* Any */ | 32 /* Undefined */ | 64 /* Null */)) { + if (type.flags & 1 /* Any */) + typeSet.containsAny = true; + if (type.flags & 32 /* Undefined */) + typeSet.containsUndefined = true; + if (type.flags & 64 /* Null */) + typeSet.containsNull = true; + } else if (!ts.contains(typeSet, type)) { typeSet.push(type); } @@ -19008,24 +19421,6 @@ var ts; } } } - function containsTypeAny(types) { - for (var _i = 0, types_5 = types; _i < types_5.length; _i++) { - var type = types_5[_i]; - if (isTypeAny(type)) { - return true; - } - } - return false; - } - function removeAllButLast(types, typeToRemove) { - var i = types.length; - while (i > 0 && types.length > 1) { - i--; - if (types[i] === typeToRemove) { - types.splice(i, 1); - } - } - } // We reduce the constituent type set to only include types that aren't subtypes of other types, unless // the noSubtypeReduction flag is specified, in which case we perform a simple deduplication based on // object identity. Subtype reduction is possible only when union types are known not to circularly @@ -19039,23 +19434,29 @@ var ts; } var typeSet = []; addTypesToSet(typeSet, types, 16384 /* Union */); - if (containsTypeAny(typeSet)) { + if (typeSet.containsAny) { return anyType; } - if (noSubtypeReduction) { - removeAllButLast(typeSet, undefinedType); - removeAllButLast(typeSet, nullType); + if (strictNullChecks) { + if (typeSet.containsNull) + typeSet.push(nullType); + if (typeSet.containsUndefined) + typeSet.push(undefinedType); } - else { + if (!noSubtypeReduction) { removeSubtypes(typeSet); } - if (typeSet.length === 1) { + if (typeSet.length === 0) { + return typeSet.containsNull ? nullType : undefinedType; + } + else if (typeSet.length === 1) { return typeSet[0]; } var id = getTypeListId(typeSet); var type = unionTypes[id]; if (!type) { - type = unionTypes[id] = createObjectType(16384 /* Union */ | getPropagatingFlagsOfTypes(typeSet)); + var propagatedFlags = getPropagatingFlagsOfTypes(typeSet, /*excludeKinds*/ 96 /* Nullable */); + type = unionTypes[id] = createObjectType(16384 /* Union */ | propagatedFlags); type.types = typeSet; } return type; @@ -19078,16 +19479,23 @@ var ts; } var typeSet = []; addTypesToSet(typeSet, types, 32768 /* Intersection */); - if (containsTypeAny(typeSet)) { + if (typeSet.containsAny) { return anyType; } + if (strictNullChecks) { + if (typeSet.containsNull) + typeSet.push(nullType); + if (typeSet.containsUndefined) + typeSet.push(undefinedType); + } if (typeSet.length === 1) { return typeSet[0]; } var id = getTypeListId(typeSet); var type = intersectionTypes[id]; if (!type) { - type = intersectionTypes[id] = createObjectType(32768 /* Intersection */ | getPropagatingFlagsOfTypes(typeSet)); + var propagatedFlags = getPropagatingFlagsOfTypes(typeSet, /*excludeKinds*/ 96 /* Nullable */); + type = intersectionTypes[id] = createObjectType(32768 /* Intersection */ | propagatedFlags); type.types = typeSet; } return type; @@ -19141,9 +19549,9 @@ var ts; function getThisType(node) { var container = ts.getThisContainer(node, /*includeArrowFunctions*/ false); var parent = container && container.parent; - if (parent && (ts.isClassLike(parent) || parent.kind === 219 /* InterfaceDeclaration */)) { + if (parent && (ts.isClassLike(parent) || parent.kind === 221 /* InterfaceDeclaration */)) { if (!(container.flags & 32 /* Static */) && - (container.kind !== 146 /* Constructor */ || ts.isNodeDescendentOf(node, container.body))) { + (container.kind !== 147 /* Constructor */ || ts.isNodeDescendentOf(node, container.body))) { return getDeclaredTypeOfClassOrInterface(getSymbolOfNode(parent)).thisType; } } @@ -19160,8 +19568,8 @@ var ts; function getTypeFromTypeNode(node) { switch (node.kind) { case 117 /* AnyKeyword */: - case 254 /* JSDocAllType */: - case 255 /* JSDocUnknownType */: + case 257 /* JSDocAllType */: + case 258 /* JSDocUnknownType */: return anyType; case 131 /* StringKeyword */: return stringType; @@ -19173,51 +19581,55 @@ var ts; return esSymbolType; case 103 /* VoidKeyword */: return voidType; - case 163 /* ThisType */: + case 134 /* UndefinedKeyword */: + return undefinedType; + case 93 /* NullKeyword */: + return nullType; + case 164 /* ThisType */: return getTypeFromThisTypeNode(node); - case 164 /* StringLiteralType */: + case 165 /* StringLiteralType */: return getTypeFromStringLiteralTypeNode(node); - case 153 /* TypeReference */: - case 263 /* JSDocTypeReference */: + case 154 /* TypeReference */: + case 266 /* JSDocTypeReference */: return getTypeFromTypeReference(node); - case 152 /* TypePredicate */: + case 153 /* TypePredicate */: return booleanType; - case 192 /* ExpressionWithTypeArguments */: + case 193 /* ExpressionWithTypeArguments */: return getTypeFromTypeReference(node); - case 156 /* TypeQuery */: + case 157 /* TypeQuery */: return getTypeFromTypeQueryNode(node); - case 158 /* ArrayType */: - case 256 /* JSDocArrayType */: + case 159 /* ArrayType */: + case 259 /* JSDocArrayType */: return getTypeFromArrayTypeNode(node); - case 159 /* TupleType */: + case 160 /* TupleType */: return getTypeFromTupleTypeNode(node); - case 160 /* UnionType */: - case 257 /* JSDocUnionType */: + case 161 /* UnionType */: + case 260 /* JSDocUnionType */: return getTypeFromUnionTypeNode(node); - case 161 /* IntersectionType */: + case 162 /* IntersectionType */: return getTypeFromIntersectionTypeNode(node); - case 162 /* ParenthesizedType */: - case 259 /* JSDocNullableType */: - case 260 /* JSDocNonNullableType */: - case 267 /* JSDocConstructorType */: - case 268 /* JSDocThisType */: - case 264 /* JSDocOptionalType */: + case 163 /* ParenthesizedType */: + case 262 /* JSDocNullableType */: + case 263 /* JSDocNonNullableType */: + case 270 /* JSDocConstructorType */: + case 271 /* JSDocThisType */: + case 267 /* JSDocOptionalType */: return getTypeFromTypeNode(node.type); - case 154 /* FunctionType */: - case 155 /* ConstructorType */: - case 157 /* TypeLiteral */: - case 265 /* JSDocFunctionType */: - case 261 /* JSDocRecordType */: + case 155 /* FunctionType */: + case 156 /* ConstructorType */: + case 158 /* TypeLiteral */: + case 268 /* JSDocFunctionType */: + case 264 /* JSDocRecordType */: return getTypeFromTypeLiteralOrFunctionOrConstructorTypeNode(node); // This function assumes that an identifier or qualified name is a type expression // Callers should first ensure this by calling isTypeNode case 69 /* Identifier */: - case 137 /* QualifiedName */: + case 138 /* QualifiedName */: var symbol = getSymbolAtLocation(node); return symbol && getDeclaredTypeOfSymbol(symbol); - case 258 /* JSDocTupleType */: + case 261 /* JSDocTupleType */: return getTypeFromJSDocTupleType(node); - case 266 /* JSDocVariadicType */: + case 269 /* JSDocVariadicType */: return getTypeFromJSDocVariadicType(node); default: return unknownType; @@ -19240,40 +19652,26 @@ var ts; function createBinaryTypeMapper(source1, target1, source2, target2) { return function (t) { return t === source1 ? target1 : t === source2 ? target2 : t; }; } - function createTypeMapper(sources, targets) { - switch (sources.length) { - case 1: return createUnaryTypeMapper(sources[0], targets[0]); - case 2: return createBinaryTypeMapper(sources[0], targets[0], sources[1], targets[1]); - } + function createArrayTypeMapper(sources, targets) { return function (t) { for (var i = 0; i < sources.length; i++) { if (t === sources[i]) { - return targets[i]; + return targets ? targets[i] : anyType; } } return t; }; } - function createUnaryTypeEraser(source) { - return function (t) { return t === source ? anyType : t; }; - } - function createBinaryTypeEraser(source1, source2) { - return function (t) { return t === source1 || t === source2 ? anyType : t; }; + function createTypeMapper(sources, targets) { + var count = sources.length; + var mapper = count == 1 ? createUnaryTypeMapper(sources[0], targets ? targets[0] : anyType) : + count == 2 ? createBinaryTypeMapper(sources[0], targets ? targets[0] : anyType, sources[1], targets ? targets[1] : anyType) : + createArrayTypeMapper(sources, targets); + mapper.mappedTypes = sources; + return mapper; } function createTypeEraser(sources) { - switch (sources.length) { - case 1: return createUnaryTypeEraser(sources[0]); - case 2: return createBinaryTypeEraser(sources[0], sources[1]); - } - return function (t) { - for (var _i = 0, sources_1 = sources; _i < sources_1.length; _i++) { - var source = sources_1[_i]; - if (t === source) { - return anyType; - } - } - return t; - }; + return createTypeMapper(sources, undefined); } function getInferenceMapper(context) { if (!context.mapper) { @@ -19287,6 +19685,7 @@ var ts; } return t; }; + mapper.mappedTypes = context.typeParameters; mapper.context = context; context.mapper = mapper; } @@ -19296,7 +19695,9 @@ var ts; return type; } function combineTypeMappers(mapper1, mapper2) { - return function (t) { return instantiateType(mapper1(t), mapper2); }; + var mapper = function (t) { return instantiateType(mapper1(t), mapper2); }; + mapper.mappedTypes = mapper1.mappedTypes; + return mapper; } function cloneTypeParameter(typeParameter) { var result = createType(512 /* TypeParameter */); @@ -19337,7 +19738,7 @@ var ts; if (signature.typePredicate) { freshTypePredicate = cloneTypePredicate(signature.typePredicate, mapper); } - var result = createSignature(signature.declaration, freshTypeParameters, instantiateList(signature.parameters, mapper, instantiateSymbol), instantiateType(signature.resolvedReturnType, mapper), freshTypePredicate, signature.minArgumentCount, signature.hasRestParameter, signature.hasStringLiterals); + var result = createSignature(signature.declaration, freshTypeParameters, signature.thisType && instantiateType(signature.thisType, mapper), instantiateList(signature.parameters, mapper, instantiateSymbol), instantiateType(signature.resolvedReturnType, mapper), freshTypePredicate, signature.minArgumentCount, signature.hasRestParameter, signature.hasStringLiterals); result.target = signature; result.mapper = mapper; return result; @@ -19380,13 +19781,70 @@ var ts; mapper.instantiations[type.id] = result; return result; } + function isSymbolInScopeOfMappedTypeParameter(symbol, mapper) { + var mappedTypes = mapper.mappedTypes; + // Starting with the parent of the symbol's declaration, check if the mapper maps any of + // the type parameters introduced by enclosing declarations. We just pick the first + // declaration since multiple declarations will all have the same parent anyway. + var node = symbol.declarations[0].parent; + while (node) { + switch (node.kind) { + case 155 /* FunctionType */: + case 156 /* ConstructorType */: + case 219 /* FunctionDeclaration */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: + case 147 /* Constructor */: + case 150 /* CallSignature */: + case 151 /* ConstructSignature */: + case 152 /* IndexSignature */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: + case 178 /* FunctionExpression */: + case 179 /* ArrowFunction */: + case 220 /* ClassDeclaration */: + case 191 /* ClassExpression */: + case 221 /* InterfaceDeclaration */: + case 222 /* TypeAliasDeclaration */: + var declaration = node; + if (declaration.typeParameters) { + for (var _i = 0, _a = declaration.typeParameters; _i < _a.length; _i++) { + var d = _a[_i]; + if (ts.contains(mappedTypes, getDeclaredTypeOfTypeParameter(d.symbol))) { + return true; + } + } + } + if (ts.isClassLike(node) || node.kind === 221 /* InterfaceDeclaration */) { + var thisType = getDeclaredTypeOfClassOrInterface(getSymbolOfNode(node)).thisType; + if (thisType && ts.contains(mappedTypes, thisType)) { + return true; + } + } + break; + case 224 /* ModuleDeclaration */: + case 255 /* SourceFile */: + return false; + } + node = node.parent; + } + return false; + } function instantiateType(type, mapper) { if (type && mapper !== identityMapper) { if (type.flags & 512 /* TypeParameter */) { return mapper(type); } if (type.flags & 65536 /* Anonymous */) { - return type.symbol && type.symbol.flags & (16 /* Function */ | 8192 /* Method */ | 32 /* Class */ | 2048 /* TypeLiteral */ | 4096 /* ObjectLiteral */) ? + // If the anonymous type originates in a declaration of a function, method, class, or + // interface, in an object type literal, or in an object literal expression, we may need + // to instantiate the type because it might reference a type parameter. We skip instantiation + // if none of the type parameters that are in scope in the type's declaration are mapped by + // the given mapper, however we can only do that analysis if the type isn't itself an + // instantiation. + return type.symbol && + type.symbol.flags & (16 /* Function */ | 8192 /* Method */ | 32 /* Class */ | 2048 /* TypeLiteral */ | 4096 /* ObjectLiteral */) && + (type.flags & 131072 /* Instantiated */ || isSymbolInScopeOfMappedTypeParameter(type.symbol, mapper)) ? instantiateAnonymousType(type, mapper) : type; } if (type.flags & 4096 /* Reference */) { @@ -19410,33 +19868,35 @@ var ts; // Returns true if the given expression contains (at any level of nesting) a function or arrow expression // that is subject to contextual typing. function isContextSensitive(node) { - ts.Debug.assert(node.kind !== 145 /* MethodDeclaration */ || ts.isObjectLiteralMethod(node)); + ts.Debug.assert(node.kind !== 146 /* MethodDeclaration */ || ts.isObjectLiteralMethod(node)); switch (node.kind) { - case 177 /* FunctionExpression */: - case 178 /* ArrowFunction */: + case 178 /* FunctionExpression */: + case 179 /* ArrowFunction */: return isContextSensitiveFunctionLikeDeclaration(node); - case 169 /* ObjectLiteralExpression */: + case 170 /* ObjectLiteralExpression */: return ts.forEach(node.properties, isContextSensitive); - case 168 /* ArrayLiteralExpression */: + case 169 /* ArrayLiteralExpression */: return ts.forEach(node.elements, isContextSensitive); - case 186 /* ConditionalExpression */: + case 187 /* ConditionalExpression */: return isContextSensitive(node.whenTrue) || isContextSensitive(node.whenFalse); - case 185 /* BinaryExpression */: + case 186 /* BinaryExpression */: return node.operatorToken.kind === 52 /* BarBarToken */ && (isContextSensitive(node.left) || isContextSensitive(node.right)); - case 249 /* PropertyAssignment */: + case 252 /* PropertyAssignment */: return isContextSensitive(node.initializer); - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: return isContextSensitiveFunctionLikeDeclaration(node); - case 176 /* ParenthesizedExpression */: + case 177 /* ParenthesizedExpression */: return isContextSensitive(node.expression); } return false; } function isContextSensitiveFunctionLikeDeclaration(node) { - return !node.typeParameters && node.parameters.length && !ts.forEach(node.parameters, function (p) { return p.type; }); + var areAllParametersUntyped = !ts.forEach(node.parameters, function (p) { return p.type; }); + var isNullaryArrow = node.kind === 179 /* ArrowFunction */ && !node.parameters.length; + return !node.typeParameters && areAllParametersUntyped && !isNullaryArrow; } function getTypeWithoutSignatures(type) { if (type.flags & 80896 /* ObjectType */) { @@ -19468,12 +19928,26 @@ var ts; function isTypeAssignableTo(source, target) { return checkTypeAssignableTo(source, target, /*errorNode*/ undefined); } + /** + * This is *not* a bi-directional relationship. + * If one needs to check both directions for comparability, use a second call to this function or 'checkTypeComparableTo'. + */ + function isTypeComparableTo(source, target) { + return checkTypeComparableTo(source, target, /*errorNode*/ undefined); + } function checkTypeSubtypeOf(source, target, errorNode, headMessage, containingMessageChain) { return checkTypeRelatedTo(source, target, subtypeRelation, errorNode, headMessage, containingMessageChain); } function checkTypeAssignableTo(source, target, errorNode, headMessage, containingMessageChain) { return checkTypeRelatedTo(source, target, assignableRelation, errorNode, headMessage, containingMessageChain); } + /** + * This is *not* a bi-directional relationship. + * If one needs to check both directions for comparability, use a second call to this function or 'isTypeComparableTo'. + */ + function checkTypeComparableTo(source, target, errorNode, headMessage, containingMessageChain) { + return checkTypeRelatedTo(source, target, comparableRelation, errorNode, headMessage, containingMessageChain); + } function isSignatureAssignableTo(source, target, ignoreReturnTypes) { return compareSignaturesRelated(source, target, ignoreReturnTypes, /*reportErrors*/ false, /*errorReporter*/ undefined, compareTypesAssignable) !== 0 /* False */; } @@ -19493,15 +19967,27 @@ var ts; source = getErasedSignature(source); target = getErasedSignature(target); var result = -1 /* True */; + if (source.thisType && target.thisType && source.thisType !== voidType) { + // void sources are assignable to anything. + var related = compareTypes(source.thisType, target.thisType, /*reportErrors*/ false) + || compareTypes(target.thisType, source.thisType, reportErrors); + if (!related) { + if (reportErrors) { + errorReporter(ts.Diagnostics.The_this_types_of_each_signature_are_incompatible); + } + return 0 /* False */; + } + result &= related; + } var sourceMax = getNumNonRestParameters(source); var targetMax = getNumNonRestParameters(target); var checkCount = getNumParametersToCheckForSignatureRelatability(source, sourceMax, target, targetMax); var sourceParams = source.parameters; var targetParams = target.parameters; for (var i = 0; i < checkCount; i++) { - var s = i < sourceMax ? getTypeOfSymbol(sourceParams[i]) : getRestTypeOfSignature(source); - var t = i < targetMax ? getTypeOfSymbol(targetParams[i]) : getRestTypeOfSignature(target); - var related = compareTypes(t, s, /*reportErrors*/ false) || compareTypes(s, t, reportErrors); + var s = i < sourceMax ? getTypeOfParameter(sourceParams[i]) : getRestTypeOfSignature(source); + var t = i < targetMax ? getTypeOfParameter(targetParams[i]) : getRestTypeOfSignature(target); + var related = compareTypes(s, t, /*reportErrors*/ false) || compareTypes(t, s, reportErrors); if (!related) { if (reportErrors) { errorReporter(ts.Diagnostics.Types_of_parameters_0_and_1_are_incompatible, sourceParams[i < sourceMax ? i : sourceMax].name, targetParams[i < targetMax ? i : targetMax].name); @@ -19600,7 +20086,7 @@ var ts; * Checks if 'source' is related to 'target' (e.g.: is a assignable to). * @param source The left-hand-side of the relation. * @param target The right-hand-side of the relation. - * @param relation The relation considered. One of 'identityRelation', 'assignableRelation', or 'subTypeRelation'. + * @param relation The relation considered. One of 'identityRelation', 'subtypeRelation', 'assignableRelation', or 'comparableRelation'. * Used as both to determine which checks are performed and as a cache of previously computed results. * @param errorNode The suggested node upon which all errors will be reported, if defined. This may or may not be the actual node used. * @param headMessage If the error chain should be prepended by a head message, then headMessage will be used. @@ -19637,7 +20123,12 @@ var ts; sourceType = typeToString(source, /*enclosingDeclaration*/ undefined, 128 /* UseFullyQualifiedType */); targetType = typeToString(target, /*enclosingDeclaration*/ undefined, 128 /* UseFullyQualifiedType */); } - reportError(message || ts.Diagnostics.Type_0_is_not_assignable_to_type_1, sourceType, targetType); + if (!message) { + message = relation === comparableRelation ? + ts.Diagnostics.Type_0_is_not_comparable_to_type_1 : + ts.Diagnostics.Type_0_is_not_assignable_to_type_1; + } + reportError(message, sourceType, targetType); } // Compare two types and return // Ternary.True if they are related with no assumptions, @@ -19653,20 +20144,24 @@ var ts; } if (isTypeAny(target)) return -1 /* True */; - if (source === undefinedType) - return -1 /* True */; - if (source === nullType && target !== undefinedType) - return -1 /* True */; + if (source.flags & 32 /* Undefined */) { + if (!strictNullChecks || target.flags & (32 /* Undefined */ | 16 /* Void */) || source === emptyArrayElementType) + return -1 /* True */; + } + if (source.flags & 64 /* Null */) { + if (!strictNullChecks || target.flags & 64 /* Null */) + return -1 /* True */; + } if (source.flags & 128 /* Enum */ && target === numberType) return -1 /* True */; if (source.flags & 128 /* Enum */ && target.flags & 128 /* Enum */) { - if (result = enumRelatedTo(source, target)) { + if (result = enumRelatedTo(source, target, reportErrors)) { return result; } } if (source.flags & 256 /* StringLiteral */ && target === stringType) return -1 /* True */; - if (relation === assignableRelation) { + if (relation === assignableRelation || relation === comparableRelation) { if (isTypeAny(source)) return -1 /* True */; if (source === numberType && target.flags & 128 /* Enum */) @@ -19691,29 +20186,48 @@ var ts; } } var saveErrorInfo = errorInfo; - // Note that the "each" checks must precede the "some" checks to produce the correct results + // Note that these checks are specifically ordered to produce correct results. if (source.flags & 16384 /* Union */) { - if (result = eachTypeRelatedToType(source, target, reportErrors)) { + if (relation === comparableRelation) { + result = someTypeRelatedToType(source, target, reportErrors); + } + else { + result = eachTypeRelatedToType(source, target, reportErrors); + } + if (result) { return result; } } else if (target.flags & 32768 /* Intersection */) { - if (result = typeRelatedToEachType(source, target, reportErrors)) { + result = typeRelatedToEachType(source, target, reportErrors); + if (result) { return result; } } else { - // It is necessary to try "some" checks on both sides because there may be nested "each" checks + // It is necessary to try these "some" checks on both sides because there may be nested "each" checks // on either side that need to be prioritized. For example, A | B = (A | B) & (C | D) or // A & B = (A & B) | (C & D). if (source.flags & 32768 /* Intersection */) { - // If target is a union type the following check will report errors so we suppress them here - if (result = someTypeRelatedToType(source, target, reportErrors && !(target.flags & 16384 /* Union */))) { + // Check to see if any constituents of the intersection are immediately related to the target. + // + // Don't report errors though. Checking whether a constituent is related to the source is not actually + // useful and leads to some confusing error messages. Instead it is better to let the below checks + // take care of this, or to not elaborate at all. For instance, + // + // - For an object type (such as 'C = A & B'), users are usually more interested in structural errors. + // + // - For a union type (such as '(A | B) = (C & D)'), it's better to hold onto the whole intersection + // than to report that 'D' is not assignable to 'A' or 'B'. + // + // - For a primitive type or type parameter (such as 'number = A & B') there is no point in + // breaking the intersection apart. + if (result = someTypeRelatedToType(source, target, /*reportErrors*/ false)) { return result; } } if (target.flags & 16384 /* Union */) { - if (result = typeRelatedToSomeType(source, target, reportErrors)) { + if (result = typeRelatedToSomeType(source, target, reportErrors && !(source.flags & 16777726 /* Primitive */))) { return result; } } @@ -19770,8 +20284,8 @@ var ts; } if (source.flags & 16384 /* Union */ && target.flags & 16384 /* Union */ || source.flags & 32768 /* Intersection */ && target.flags & 32768 /* Intersection */) { - if (result = eachTypeRelatedToSomeType(source, target)) { - if (result &= eachTypeRelatedToSomeType(target, source)) { + if (result = eachTypeRelatedToSomeType(source, target, /*reportErrors*/ false)) { + if (result &= eachTypeRelatedToSomeType(target, source, /*reportErrors*/ false)) { return result; } } @@ -19785,7 +20299,8 @@ var ts; function isKnownProperty(type, name) { if (type.flags & 80896 /* ObjectType */) { var resolved = resolveStructuredTypeMembers(type); - if (relation === assignableRelation && (type === globalObjectType || resolved.properties.length === 0) || + if ((relation === assignableRelation || relation === comparableRelation) && + (type === globalObjectType || resolved.properties.length === 0) || resolved.stringIndexInfo || resolved.numberIndexInfo || getPropertyOfType(type, name)) { return true; } @@ -19819,7 +20334,7 @@ var ts; } return false; } - function eachTypeRelatedToSomeType(source, target) { + function eachTypeRelatedToSomeType(source, target, reportErrors) { var result = -1 /* True */; var sourceTypes = source.types; for (var _i = 0, sourceTypes_1 = sourceTypes; _i < sourceTypes_1.length; _i++) { @@ -19834,7 +20349,19 @@ var ts; } function typeRelatedToSomeType(source, target, reportErrors) { var targetTypes = target.types; - for (var i = 0, len = targetTypes.length; i < len; i++) { + var len = targetTypes.length; + // The null and undefined types are guaranteed to be at the end of the constituent type list. In order + // to produce the best possible errors we first check the nullable types, such that the last type we + // check and report errors from is a non-nullable type if one is present. + while (len >= 2 && targetTypes[len - 1].flags & 96 /* Nullable */) { + var related = isRelatedTo(source, targetTypes[len - 1], /*reportErrors*/ false); + if (related) { + return related; + } + len--; + } + // Now check the non-nullable types and report errors on the last one. + for (var i = 0; i < len; i++) { var related = isRelatedTo(source, targetTypes[i], reportErrors && i === len - 1); if (related) { return related; @@ -19857,7 +20384,19 @@ var ts; } function someTypeRelatedToType(source, target, reportErrors) { var sourceTypes = source.types; - for (var i = 0, len = sourceTypes.length; i < len; i++) { + var len = sourceTypes.length; + // The null and undefined types are guaranteed to be at the end of the constituent type list. In order + // to produce the best possible errors we first check the nullable types, such that the last type we + // check and report errors from is a non-nullable type if one is present. + while (len >= 2 && sourceTypes[len - 1].flags & 96 /* Nullable */) { + var related = isRelatedTo(sourceTypes[len - 1], target, /*reportErrors*/ false); + if (related) { + return related; + } + len--; + } + // Now check the non-nullable types and report errors on the last one. + for (var i = 0; i < len; i++) { var related = isRelatedTo(sourceTypes[i], target, reportErrors && i === len - 1); if (related) { return related; @@ -20141,7 +20680,7 @@ var ts; } var result = -1 /* True */; for (var i = 0, len = sourceSignatures.length; i < len; i++) { - var related = compareSignaturesIdentical(sourceSignatures[i], targetSignatures[i], /*partialMatch*/ false, /*ignoreReturnTypes*/ false, isRelatedTo); + var related = compareSignaturesIdentical(sourceSignatures[i], targetSignatures[i], /*partialMatch*/ false, /*ignoreThisTypes*/ false, /*ignoreReturnTypes*/ false, isRelatedTo); if (!related) { return 0 /* False */; } @@ -20216,7 +20755,7 @@ var ts; } return 0 /* False */; } - function enumRelatedTo(source, target) { + function enumRelatedTo(source, target, reportErrors) { if (source.symbol.name !== target.symbol.name || source.symbol.flags & 128 /* ConstEnum */ || target.symbol.flags & 128 /* ConstEnum */) { @@ -20228,7 +20767,9 @@ var ts; if (property.flags & 8 /* EnumMember */) { var targetProperty = getPropertyOfType(targetEnumType, property.name); if (!targetProperty || !(targetProperty.flags & 8 /* EnumMember */)) { - reportError(ts.Diagnostics.Property_0_is_missing_in_type_1, property.name, typeToString(target, /*enclosingDeclaration*/ undefined, 128 /* UseFullyQualifiedType */)); + if (reportErrors) { + reportError(ts.Diagnostics.Property_0_is_missing_in_type_1, property.name, typeToString(target, /*enclosingDeclaration*/ undefined, 128 /* UseFullyQualifiedType */)); + } return 0 /* False */; } } @@ -20343,7 +20884,7 @@ var ts; /** * See signatureRelatedTo, compareSignaturesIdentical */ - function compareSignaturesIdentical(source, target, partialMatch, ignoreReturnTypes, compareTypes) { + function compareSignaturesIdentical(source, target, partialMatch, ignoreThisTypes, ignoreReturnTypes, compareTypes) { // TODO (drosen): De-duplicate code between related functions. if (source === target) { return -1 /* True */; @@ -20364,10 +20905,17 @@ var ts; source = getErasedSignature(source); target = getErasedSignature(target); var result = -1 /* True */; + if (!ignoreThisTypes && source.thisType && target.thisType) { + var related = compareTypes(source.thisType, target.thisType); + if (!related) { + return 0 /* False */; + } + result &= related; + } var targetLen = target.parameters.length; for (var i = 0; i < targetLen; i++) { - var s = isRestParameterIndex(source, i) ? getRestTypeOfSignature(source) : getTypeOfSymbol(source.parameters[i]); - var t = isRestParameterIndex(target, i) ? getRestTypeOfSignature(target) : getTypeOfSymbol(target.parameters[i]); + var s = isRestParameterIndex(source, i) ? getRestTypeOfSignature(source) : getTypeOfParameter(source.parameters[i]); + var t = isRestParameterIndex(target, i) ? getRestTypeOfSignature(target) : getTypeOfParameter(target.parameters[i]); var related = compareTypes(s, t); if (!related) { return 0 /* False */; @@ -20383,15 +20931,31 @@ var ts; return signature.hasRestParameter && parameterIndex >= signature.parameters.length - 1; } function isSupertypeOfEach(candidate, types) { - for (var _i = 0, types_6 = types; _i < types_6.length; _i++) { - var type = types_6[_i]; - if (candidate !== type && !isTypeSubtypeOf(type, candidate)) + for (var _i = 0, types_5 = types; _i < types_5.length; _i++) { + var t = types_5[_i]; + if (candidate !== t && !isTypeSubtypeOf(t, candidate)) return false; } return true; } + function getCombinedFlagsOfTypes(types) { + var flags = 0; + for (var _i = 0, types_6 = types; _i < types_6.length; _i++) { + var t = types_6[_i]; + flags |= t.flags; + } + return flags; + } function getCommonSupertype(types) { - return ts.forEach(types, function (t) { return isSupertypeOfEach(t, types) ? t : undefined; }); + if (!strictNullChecks) { + return ts.forEach(types, function (t) { return isSupertypeOfEach(t, types) ? t : undefined; }); + } + var primaryTypes = ts.filter(types, function (t) { return !(t.flags & 96 /* Nullable */); }); + if (!primaryTypes.length) { + return getUnionType(types); + } + var supertype = ts.forEach(primaryTypes, function (t) { return isSupertypeOfEach(t, primaryTypes) ? t : undefined; }); + return supertype && addNullableKind(supertype, getCombinedFlagsOfTypes(types) & 96 /* Nullable */); } function reportNoCommonSupertypeError(types, errorLocation, errorMessageChainHead) { // The downfallType/bestSupertypeDownfallType is the first type that caused a particular candidate @@ -20433,7 +20997,7 @@ var ts; // A type is array-like if it is a reference to the global Array or global ReadonlyArray type, // or if it is not the undefined or null type and if it is assignable to ReadonlyArray return type.flags & 4096 /* Reference */ && (type.target === globalArrayType || type.target === globalReadonlyArrayType) || - !(type.flags & (32 /* Undefined */ | 64 /* Null */)) && isTypeAssignableTo(type, anyReadonlyArrayType); + !(type.flags & 96 /* Nullable */) && isTypeAssignableTo(type, anyReadonlyArrayType); } function isTupleLikeType(type) { return !!getPropertyOfType(type, "0"); @@ -20448,6 +21012,60 @@ var ts; function isTupleType(type) { return !!(type.flags & 8192 /* Tuple */); } + function getNullableKind(type) { + var flags = type.flags; + if (flags & 16384 /* Union */) { + for (var _i = 0, _a = type.types; _i < _a.length; _i++) { + var t = _a[_i]; + flags |= t.flags; + } + } + return flags & 96 /* Nullable */; + } + function getNullableTypeOfKind(kind) { + return kind & 64 /* Null */ ? kind & 32 /* Undefined */ ? + getUnionType([nullType, undefinedType]) : nullType : undefinedType; + } + function addNullableKind(type, kind) { + if ((getNullableKind(type) & kind) !== kind) { + var types = [type]; + if (kind & 32 /* Undefined */) { + types.push(undefinedType); + } + if (kind & 64 /* Null */) { + types.push(nullType); + } + type = getUnionType(types); + } + return type; + } + function removeNullableKind(type, kind) { + if (type.flags & 16384 /* Union */ && getNullableKind(type) & kind) { + var firstType = void 0; + var types = void 0; + for (var _i = 0, _a = type.types; _i < _a.length; _i++) { + var t = _a[_i]; + if (!(t.flags & kind)) { + if (!firstType) { + firstType = t; + } + else { + if (!types) { + types = [firstType]; + } + types.push(t); + } + } + } + if (firstType) { + type = types ? getUnionType(types) : firstType; + } + } + return type; + } + function getNonNullableType(type) { + return strictNullChecks ? removeNullableKind(type, 96 /* Nullable */) : type; + } /** * Return true if type was inferred from an object literal or written as an object type literal * with no call or construct signatures. @@ -20497,16 +21115,19 @@ var ts; var numberIndexInfo = getIndexInfoOfType(type, 1 /* Number */); return createAnonymousType(type.symbol, members, emptyArray, emptyArray, stringIndexInfo && createIndexInfo(getWidenedType(stringIndexInfo.type), stringIndexInfo.isReadonly), numberIndexInfo && createIndexInfo(getWidenedType(numberIndexInfo.type), numberIndexInfo.isReadonly)); } + function getWidenedConstituentType(type) { + return type.flags & 96 /* Nullable */ ? type : getWidenedType(type); + } function getWidenedType(type) { if (type.flags & 6291456 /* RequiresWidening */) { - if (type.flags & (32 /* Undefined */ | 64 /* Null */)) { + if (type.flags & 96 /* Nullable */) { return anyType; } if (type.flags & 524288 /* ObjectLiteral */) { return getWidenedTypeOfObjectLiteral(type); } if (type.flags & 16384 /* Union */) { - return getUnionType(ts.map(type.types, getWidenedType), /*noSubtypeReduction*/ true); + return getUnionType(ts.map(type.types, getWidenedConstituentType), /*noSubtypeReduction*/ true); } if (isArrayType(type)) { return createArrayType(getWidenedType(type.typeArguments[0])); @@ -20567,22 +21188,25 @@ var ts; var typeAsString = typeToString(getWidenedType(type)); var diagnostic; switch (declaration.kind) { - case 143 /* PropertyDeclaration */: - case 142 /* PropertySignature */: + case 144 /* PropertyDeclaration */: + case 143 /* PropertySignature */: diagnostic = ts.Diagnostics.Member_0_implicitly_has_an_1_type; break; - case 140 /* Parameter */: + case 141 /* Parameter */: diagnostic = declaration.dotDotDotToken ? ts.Diagnostics.Rest_parameter_0_implicitly_has_an_any_type : ts.Diagnostics.Parameter_0_implicitly_has_an_1_type; break; - case 217 /* FunctionDeclaration */: - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: - case 177 /* FunctionExpression */: - case 178 /* ArrowFunction */: + case 168 /* BindingElement */: + diagnostic = ts.Diagnostics.Binding_element_0_implicitly_has_an_1_type; + break; + case 219 /* FunctionDeclaration */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: + case 178 /* FunctionExpression */: + case 179 /* ArrowFunction */: if (!declaration.name) { error(declaration, ts.Diagnostics.Function_expression_which_lacks_return_type_annotation_implicitly_has_an_0_return_type, typeAsString); return; @@ -20607,25 +21231,19 @@ var ts; var targetMax = target.parameters.length; var count; if (source.hasRestParameter && target.hasRestParameter) { - count = sourceMax > targetMax ? sourceMax : targetMax; - sourceMax--; - targetMax--; + count = Math.max(sourceMax, targetMax); } else if (source.hasRestParameter) { - sourceMax--; count = targetMax; } else if (target.hasRestParameter) { - targetMax--; count = sourceMax; } else { - count = sourceMax < targetMax ? sourceMax : targetMax; + count = Math.min(sourceMax, targetMax); } for (var i = 0; i < count; i++) { - var s = i < sourceMax ? getTypeOfSymbol(source.parameters[i]) : getRestTypeOfSignature(source); - var t = i < targetMax ? getTypeOfSymbol(target.parameters[i]) : getRestTypeOfSignature(target); - callback(s, t); + callback(getTypeAtPosition(source, i), getTypeAtPosition(target, i)); } } function createInferenceContext(typeParameters, inferUnionTypes) { @@ -20920,10 +21538,21 @@ var ts; return context.inferredTypes; } // EXPRESSION TYPE CHECKING + function createTransientIdentifier(symbol, location) { + var result = ts.createNode(69 /* Identifier */); + result.text = symbol.name; + result.resolvedSymbol = symbol; + result.parent = location; + result.id = -1; + return result; + } function getResolvedSymbol(node) { + if (node.id === -1) { + return node.resolvedSymbol; + } var links = getNodeLinks(node); if (!links.resolvedSymbol) { - links.resolvedSymbol = (!ts.nodeIsMissing(node) && resolveName(node, node.text, 107455 /* Value */ | 1048576 /* ExportValue */, ts.Diagnostics.Cannot_find_name_0, node)) || unknownSymbol; + links.resolvedSymbol = !ts.nodeIsMissing(node) && resolveName(node, node.text, 107455 /* Value */ | 1048576 /* ExportValue */, ts.Diagnostics.Cannot_find_name_0, node) || unknownSymbol; } return links.resolvedSymbol; } @@ -20933,10 +21562,10 @@ var ts; // The expression is restricted to a single identifier or a sequence of identifiers separated by periods while (node) { switch (node.kind) { - case 156 /* TypeQuery */: + case 157 /* TypeQuery */: return true; case 69 /* Identifier */: - case 137 /* QualifiedName */: + case 138 /* QualifiedName */: node = node.parent; continue; default: @@ -20945,174 +21574,294 @@ var ts; } ts.Debug.fail("should not get here"); } + // Return the assignment key for a "dotted name" (i.e. a sequence of identifiers + // separated by dots). The key consists of the id of the symbol referenced by the + // leftmost identifier followed by zero or more property names separated by dots. + // The result is undefined if the reference isn't a dotted name. + function getAssignmentKey(node) { + if (node.kind === 69 /* Identifier */) { + var symbol = getResolvedSymbol(node); + return symbol !== unknownSymbol ? "" + getSymbolId(symbol) : undefined; + } + if (node.kind === 97 /* ThisKeyword */) { + return "0"; + } + if (node.kind === 171 /* PropertyAccessExpression */) { + var key = getAssignmentKey(node.expression); + return key && key + "." + node.name.text; + } + return undefined; + } function hasInitializer(node) { return !!(node.initializer || ts.isBindingPattern(node.parent) && hasInitializer(node.parent.parent)); } - // Check if a given variable is assigned within a given syntax node - function isVariableAssignedWithin(symbol, node) { - var links = getNodeLinks(node); - if (links.assignmentChecks) { - var cachedResult = links.assignmentChecks[symbol.id]; - if (cachedResult !== undefined) { - return cachedResult; - } - } - else { - links.assignmentChecks = {}; - } - return links.assignmentChecks[symbol.id] = isAssignedIn(node); - function isAssignedInBinaryExpression(node) { - if (node.operatorToken.kind >= 56 /* FirstAssignment */ && node.operatorToken.kind <= 68 /* LastAssignment */) { - var n = skipParenthesizedNodes(node.left); - if (n.kind === 69 /* Identifier */ && getResolvedSymbol(n) === symbol) { - return true; + // For a given node compute a map of which dotted names are assigned within + // the node. + function getAssignmentMap(node) { + var assignmentMap = {}; + visit(node); + return assignmentMap; + function visitReference(node) { + if (isAssignmentTarget(node) || isCompoundAssignmentTarget(node)) { + var key = getAssignmentKey(node); + if (key) { + assignmentMap[key] = true; } } - return ts.forEachChild(node, isAssignedIn); + ts.forEachChild(node, visit); } - function isAssignedInVariableDeclaration(node) { - if (!ts.isBindingPattern(node.name) && getSymbolOfNode(node) === symbol && hasInitializer(node)) { - return true; + function visitVariableDeclaration(node) { + if (!ts.isBindingPattern(node.name) && hasInitializer(node)) { + assignmentMap[getSymbolId(getSymbolOfNode(node))] = true; } - return ts.forEachChild(node, isAssignedIn); + ts.forEachChild(node, visit); } - function isAssignedIn(node) { + function visit(node) { switch (node.kind) { - case 185 /* BinaryExpression */: - return isAssignedInBinaryExpression(node); - case 215 /* VariableDeclaration */: - case 167 /* BindingElement */: - return isAssignedInVariableDeclaration(node); - case 165 /* ObjectBindingPattern */: - case 166 /* ArrayBindingPattern */: - case 168 /* ArrayLiteralExpression */: - case 169 /* ObjectLiteralExpression */: - case 170 /* PropertyAccessExpression */: - case 171 /* ElementAccessExpression */: - case 172 /* CallExpression */: - case 173 /* NewExpression */: - case 175 /* TypeAssertionExpression */: - case 193 /* AsExpression */: - case 176 /* ParenthesizedExpression */: - case 183 /* PrefixUnaryExpression */: - case 179 /* DeleteExpression */: - case 182 /* AwaitExpression */: - case 180 /* TypeOfExpression */: - case 181 /* VoidExpression */: - case 184 /* PostfixUnaryExpression */: - case 188 /* YieldExpression */: - case 186 /* ConditionalExpression */: - case 189 /* SpreadElementExpression */: - case 196 /* Block */: - case 197 /* VariableStatement */: - case 199 /* ExpressionStatement */: - case 200 /* IfStatement */: - case 201 /* DoStatement */: - case 202 /* WhileStatement */: - case 203 /* ForStatement */: - case 204 /* ForInStatement */: - case 205 /* ForOfStatement */: - case 208 /* ReturnStatement */: - case 209 /* WithStatement */: - case 210 /* SwitchStatement */: - case 245 /* CaseClause */: - case 246 /* DefaultClause */: - case 211 /* LabeledStatement */: - case 212 /* ThrowStatement */: - case 213 /* TryStatement */: - case 248 /* CatchClause */: - case 237 /* JsxElement */: - case 238 /* JsxSelfClosingElement */: - case 242 /* JsxAttribute */: - case 243 /* JsxSpreadAttribute */: - case 239 /* JsxOpeningElement */: - case 244 /* JsxExpression */: - return ts.forEachChild(node, isAssignedIn); + case 69 /* Identifier */: + case 171 /* PropertyAccessExpression */: + visitReference(node); + break; + case 217 /* VariableDeclaration */: + case 168 /* BindingElement */: + visitVariableDeclaration(node); + break; + case 186 /* BinaryExpression */: + case 166 /* ObjectBindingPattern */: + case 167 /* ArrayBindingPattern */: + case 169 /* ArrayLiteralExpression */: + case 170 /* ObjectLiteralExpression */: + case 172 /* ElementAccessExpression */: + case 173 /* CallExpression */: + case 174 /* NewExpression */: + case 176 /* TypeAssertionExpression */: + case 194 /* AsExpression */: + case 195 /* NonNullExpression */: + case 177 /* ParenthesizedExpression */: + case 184 /* PrefixUnaryExpression */: + case 180 /* DeleteExpression */: + case 183 /* AwaitExpression */: + case 181 /* TypeOfExpression */: + case 182 /* VoidExpression */: + case 185 /* PostfixUnaryExpression */: + case 189 /* YieldExpression */: + case 187 /* ConditionalExpression */: + case 190 /* SpreadElementExpression */: + case 198 /* Block */: + case 199 /* VariableStatement */: + case 201 /* ExpressionStatement */: + case 202 /* IfStatement */: + case 203 /* DoStatement */: + case 204 /* WhileStatement */: + case 205 /* ForStatement */: + case 206 /* ForInStatement */: + case 207 /* ForOfStatement */: + case 210 /* ReturnStatement */: + case 211 /* WithStatement */: + case 212 /* SwitchStatement */: + case 226 /* CaseBlock */: + case 248 /* CaseClause */: + case 249 /* DefaultClause */: + case 213 /* LabeledStatement */: + case 214 /* ThrowStatement */: + case 215 /* TryStatement */: + case 251 /* CatchClause */: + case 240 /* JsxElement */: + case 241 /* JsxSelfClosingElement */: + case 245 /* JsxAttribute */: + case 246 /* JsxSpreadAttribute */: + case 242 /* JsxOpeningElement */: + case 247 /* JsxExpression */: + ts.forEachChild(node, visit); + break; } - return false; } } - // Get the narrowed type of a given symbol at a given location - function getNarrowedTypeOfSymbol(symbol, node) { - var type = getTypeOfSymbol(symbol); - // Only narrow when symbol is variable of type any or an object, union, or type parameter type - if (node && symbol.flags & 3 /* Variable */) { - if (isTypeAny(type) || type.flags & (80896 /* ObjectType */ | 16384 /* Union */ | 512 /* TypeParameter */)) { - var declaration = ts.getDeclarationOfKind(symbol, 215 /* VariableDeclaration */); - var top_1 = declaration && getDeclarationContainer(declaration); - var originalType = type; - var nodeStack = []; - loop: while (node.parent) { - var child = node; - node = node.parent; - switch (node.kind) { - case 200 /* IfStatement */: - case 186 /* ConditionalExpression */: - case 185 /* BinaryExpression */: - nodeStack.push({ node: node, child: child }); - break; - case 252 /* SourceFile */: - case 222 /* ModuleDeclaration */: - // Stop at the first containing file or module declaration - break loop; - } - if (node === top_1) { - break; - } - } - var nodes = void 0; - while (nodes = nodeStack.pop()) { - var node_1 = nodes.node, child = nodes.child; - switch (node_1.kind) { - case 200 /* IfStatement */: - // In a branch of an if statement, narrow based on controlling expression - if (child !== node_1.expression) { - type = narrowType(type, node_1.expression, /*assumeTrue*/ child === node_1.thenStatement); - } - break; - case 186 /* ConditionalExpression */: - // In a branch of a conditional expression, narrow based on controlling condition - if (child !== node_1.condition) { - type = narrowType(type, node_1.condition, /*assumeTrue*/ child === node_1.whenTrue); - } - break; - case 185 /* BinaryExpression */: - // In the right operand of an && or ||, narrow based on left operand - if (child === node_1.right) { - if (node_1.operatorToken.kind === 51 /* AmpersandAmpersandToken */) { - type = narrowType(type, node_1.left, /*assumeTrue*/ true); - } - else if (node_1.operatorToken.kind === 52 /* BarBarToken */) { - type = narrowType(type, node_1.left, /*assumeTrue*/ false); - } - } - break; - default: - ts.Debug.fail("Unreachable!"); - } - // Use original type if construct contains assignments to variable - if (type !== originalType && isVariableAssignedWithin(symbol, node_1)) { - type = originalType; - } - } - // Preserve old top-level behavior - if the branch is really an empty set, revert to prior type - if (type === emptyUnionType) { - type = originalType; - } + function isReferenceAssignedWithin(reference, node) { + if (reference.kind !== 97 /* ThisKeyword */) { + var key = getAssignmentKey(reference); + if (key) { + var links = getNodeLinks(node); + return (links.assignmentMap || (links.assignmentMap = getAssignmentMap(node)))[key]; } } - return type; - function narrowTypeByEquality(type, expr, assumeTrue) { - // Check that we have 'typeof ' on the left and string literal on the right - if (expr.left.kind !== 180 /* TypeOfExpression */ || expr.right.kind !== 9 /* StringLiteral */) { + return false; + } + function isAnyPartOfReferenceAssignedWithin(reference, node) { + while (true) { + if (isReferenceAssignedWithin(reference, node)) { + return true; + } + if (reference.kind !== 171 /* PropertyAccessExpression */) { + return false; + } + reference = reference.expression; + } + } + function isNullOrUndefinedLiteral(node) { + return node.kind === 93 /* NullKeyword */ || + node.kind === 69 /* Identifier */ && getResolvedSymbol(node) === undefinedSymbol; + } + function getLeftmostIdentifierOrThis(node) { + switch (node.kind) { + case 69 /* Identifier */: + case 97 /* ThisKeyword */: + return node; + case 171 /* PropertyAccessExpression */: + return getLeftmostIdentifierOrThis(node.expression); + } + return undefined; + } + function isMatchingReference(source, target) { + if (source.kind === target.kind) { + switch (source.kind) { + case 69 /* Identifier */: + return getResolvedSymbol(source) === getResolvedSymbol(target); + case 97 /* ThisKeyword */: + return true; + case 171 /* PropertyAccessExpression */: + return source.name.text === target.name.text && + isMatchingReference(source.expression, target.expression); + } + } + return false; + } + // Get the narrowed type of a given symbol at a given location + function getNarrowedTypeOfReference(type, reference) { + if (!(type.flags & (1 /* Any */ | 80896 /* ObjectType */ | 16384 /* Union */ | 512 /* TypeParameter */))) { + return type; + } + var leftmostNode = getLeftmostIdentifierOrThis(reference); + if (!leftmostNode) { + return type; + } + var top; + if (leftmostNode.kind === 69 /* Identifier */) { + var leftmostSymbol = getExportSymbolOfValueSymbolIfExported(getResolvedSymbol(leftmostNode)); + if (!leftmostSymbol) { return type; } + var declaration = leftmostSymbol.valueDeclaration; + if (!declaration || declaration.kind !== 217 /* VariableDeclaration */ && declaration.kind !== 141 /* Parameter */ && declaration.kind !== 168 /* BindingElement */) { + return type; + } + top = getDeclarationContainer(declaration); + } + var originalType = type; + var nodeStack = []; + var node = reference; + loop: while (node.parent) { + var child = node; + node = node.parent; + switch (node.kind) { + case 202 /* IfStatement */: + case 187 /* ConditionalExpression */: + case 186 /* BinaryExpression */: + nodeStack.push({ node: node, child: child }); + break; + case 255 /* SourceFile */: + case 224 /* ModuleDeclaration */: + break loop; + default: + if (node === top || ts.isFunctionLikeKind(node.kind)) { + break loop; + } + break; + } + } + var nodes; + while (nodes = nodeStack.pop()) { + var node_1 = nodes.node, child = nodes.child; + switch (node_1.kind) { + case 202 /* IfStatement */: + // In a branch of an if statement, narrow based on controlling expression + if (child !== node_1.expression) { + type = narrowType(type, node_1.expression, /*assumeTrue*/ child === node_1.thenStatement); + } + break; + case 187 /* ConditionalExpression */: + // In a branch of a conditional expression, narrow based on controlling condition + if (child !== node_1.condition) { + type = narrowType(type, node_1.condition, /*assumeTrue*/ child === node_1.whenTrue); + } + break; + case 186 /* BinaryExpression */: + // In the right operand of an && or ||, narrow based on left operand + if (child === node_1.right) { + if (node_1.operatorToken.kind === 51 /* AmpersandAmpersandToken */) { + type = narrowType(type, node_1.left, /*assumeTrue*/ true); + } + else if (node_1.operatorToken.kind === 52 /* BarBarToken */) { + type = narrowType(type, node_1.left, /*assumeTrue*/ false); + } + } + break; + default: + ts.Debug.fail("Unreachable!"); + } + // Use original type if construct contains assignments to variable + if (type !== originalType && isAnyPartOfReferenceAssignedWithin(reference, node_1)) { + type = originalType; + } + } + // Preserve old top-level behavior - if the branch is really an empty set, revert to prior type + if (type === emptyUnionType) { + type = originalType; + } + return type; + function narrowTypeByTruthiness(type, expr, assumeTrue) { + return strictNullChecks && assumeTrue && isMatchingReference(expr, reference) ? getNonNullableType(type) : type; + } + function narrowTypeByBinaryExpression(type, expr, assumeTrue) { + switch (expr.operatorToken.kind) { + case 30 /* EqualsEqualsToken */: + case 31 /* ExclamationEqualsToken */: + case 32 /* EqualsEqualsEqualsToken */: + case 33 /* ExclamationEqualsEqualsToken */: + if (isNullOrUndefinedLiteral(expr.right)) { + return narrowTypeByNullCheck(type, expr, assumeTrue); + } + if (expr.left.kind === 181 /* TypeOfExpression */ && expr.right.kind === 9 /* StringLiteral */) { + return narrowTypeByTypeof(type, expr, assumeTrue); + } + break; + case 51 /* AmpersandAmpersandToken */: + return narrowTypeByAnd(type, expr, assumeTrue); + case 52 /* BarBarToken */: + return narrowTypeByOr(type, expr, assumeTrue); + case 91 /* InstanceOfKeyword */: + return narrowTypeByInstanceof(type, expr, assumeTrue); + } + return type; + } + function narrowTypeByNullCheck(type, expr, assumeTrue) { + // We have '==', '!=', '===', or '!==' operator with 'null' or 'undefined' on the right + var operator = expr.operatorToken.kind; + if (operator === 31 /* ExclamationEqualsToken */ || operator === 33 /* ExclamationEqualsEqualsToken */) { + assumeTrue = !assumeTrue; + } + if (!strictNullChecks || !isMatchingReference(expr.left, reference)) { + return type; + } + var doubleEquals = operator === 30 /* EqualsEqualsToken */ || operator === 31 /* ExclamationEqualsToken */; + var exprNullableKind = doubleEquals ? 96 /* Nullable */ : + expr.right.kind === 93 /* NullKeyword */ ? 64 /* Null */ : 32 /* Undefined */; + if (assumeTrue) { + var nullableKind = getNullableKind(type) & exprNullableKind; + return nullableKind ? getNullableTypeOfKind(nullableKind) : type; + } + return removeNullableKind(type, exprNullableKind); + } + function narrowTypeByTypeof(type, expr, assumeTrue) { + // We have '==', '!=', '====', or !==' operator with 'typeof xxx' on the left + // and string literal on the right var left = expr.left; var right = expr.right; - if (left.expression.kind !== 69 /* Identifier */ || getResolvedSymbol(left.expression) !== symbol) { + if (!isMatchingReference(left.expression, reference)) { return type; } - if (expr.operatorToken.kind === 33 /* ExclamationEqualsEqualsToken */) { + if (expr.operatorToken.kind === 31 /* ExclamationEqualsToken */ || + expr.operatorToken.kind === 33 /* ExclamationEqualsEqualsToken */) { assumeTrue = !assumeTrue; } var typeInfo = primitiveTypeInfo[right.text]; @@ -21172,7 +21921,7 @@ var ts; } function narrowTypeByInstanceof(type, expr, assumeTrue) { // Check that type is not any, assumed result is true, and we have variable symbol on the left - if (isTypeAny(type) || expr.left.kind !== 69 /* Identifier */ || getResolvedSymbol(expr.left) !== symbol) { + if (isTypeAny(type) || !isMatchingReference(expr.left, reference)) { return type; } // Check that right operand is a function type with a prototype property @@ -21222,7 +21971,8 @@ var ts; return getUnionType(assignableConstituents); } } - if (isTypeAssignableTo(narrowedTypeCandidate, originalType)) { + var targetType = originalType.flags & 512 /* TypeParameter */ ? getApparentType(originalType) : originalType; + if (isTypeAssignableTo(narrowedTypeCandidate, targetType)) { // Narrow to the target type if it's assignable to the current type return narrowedTypeCandidate; } @@ -21238,59 +21988,38 @@ var ts; return type; } if (ts.isIdentifierTypePredicate(predicate)) { - if (callExpression.arguments[predicate.parameterIndex] && - getSymbolAtTypePredicatePosition(callExpression.arguments[predicate.parameterIndex]) === symbol) { + var predicateArgument = callExpression.arguments[predicate.parameterIndex]; + if (predicateArgument && isMatchingReference(predicateArgument, reference)) { return getNarrowedType(type, predicate.type, assumeTrue); } } else { var invokedExpression = skipParenthesizedNodes(callExpression.expression); - return narrowTypeByThisTypePredicate(type, predicate, invokedExpression, assumeTrue); - } - return type; - } - function narrowTypeByThisTypePredicate(type, predicate, invokedExpression, assumeTrue) { - if (invokedExpression.kind === 171 /* ElementAccessExpression */ || invokedExpression.kind === 170 /* PropertyAccessExpression */) { - var accessExpression = invokedExpression; - var possibleIdentifier = skipParenthesizedNodes(accessExpression.expression); - if (possibleIdentifier.kind === 69 /* Identifier */ && getSymbolAtTypePredicatePosition(possibleIdentifier) === symbol) { - return getNarrowedType(type, predicate.type, assumeTrue); + if (invokedExpression.kind === 172 /* ElementAccessExpression */ || invokedExpression.kind === 171 /* PropertyAccessExpression */) { + var accessExpression = invokedExpression; + var possibleReference = skipParenthesizedNodes(accessExpression.expression); + if (isMatchingReference(possibleReference, reference)) { + return getNarrowedType(type, predicate.type, assumeTrue); + } } } return type; } - function getSymbolAtTypePredicatePosition(expr) { - expr = skipParenthesizedNodes(expr); - switch (expr.kind) { - case 69 /* Identifier */: - case 170 /* PropertyAccessExpression */: - return getSymbolOfEntityNameOrPropertyAccessExpression(expr); - } - } // Narrow the given type based on the given expression having the assumed boolean value. The returned type // will be a subtype or the same type as the argument. function narrowType(type, expr, assumeTrue) { switch (expr.kind) { - case 172 /* CallExpression */: + case 69 /* Identifier */: + case 97 /* ThisKeyword */: + case 171 /* PropertyAccessExpression */: + return narrowTypeByTruthiness(type, expr, assumeTrue); + case 173 /* CallExpression */: return narrowTypeByTypePredicate(type, expr, assumeTrue); - case 176 /* ParenthesizedExpression */: + case 177 /* ParenthesizedExpression */: return narrowType(type, expr.expression, assumeTrue); - case 185 /* BinaryExpression */: - var operator = expr.operatorToken.kind; - if (operator === 32 /* EqualsEqualsEqualsToken */ || operator === 33 /* ExclamationEqualsEqualsToken */) { - return narrowTypeByEquality(type, expr, assumeTrue); - } - else if (operator === 51 /* AmpersandAmpersandToken */) { - return narrowTypeByAnd(type, expr, assumeTrue); - } - else if (operator === 52 /* BarBarToken */) { - return narrowTypeByOr(type, expr, assumeTrue); - } - else if (operator === 91 /* InstanceOfKeyword */) { - return narrowTypeByInstanceof(type, expr, assumeTrue); - } - break; - case 183 /* PrefixUnaryExpression */: + case 186 /* BinaryExpression */: + return narrowTypeByBinaryExpression(type, expr, assumeTrue); + case 184 /* PrefixUnaryExpression */: if (expr.operator === 49 /* ExclamationToken */) { return narrowType(type, expr.operand, !assumeTrue); } @@ -21299,12 +22028,124 @@ var ts; return type; } } + function getTypeOfSymbolAtLocation(symbol, location) { + // The language service will always care about the narrowed type of a symbol, because that is + // the type the language says the symbol should have. + var type = getTypeOfSymbol(symbol); + if (location.kind === 69 /* Identifier */) { + if (ts.isRightSideOfQualifiedNameOrPropertyAccess(location)) { + location = location.parent; + } + // If location is an identifier or property access that references the given + // symbol, use the location as the reference with respect to which we narrow. + if (ts.isExpression(location)) { + checkExpression(location); + if (getNodeLinks(location).resolvedSymbol === symbol) { + return getNarrowedTypeOfReference(type, location); + } + } + } + // The location isn't a reference to the given symbol, meaning we're being asked + // a hypothetical question of what type the symbol would have if there was a reference + // to it at the given location. To answer that question we manufacture a transient + // identifier at the location and narrow with respect to that identifier. + return getNarrowedTypeOfReference(type, createTransientIdentifier(symbol, location)); + } function skipParenthesizedNodes(expression) { - while (expression.kind === 176 /* ParenthesizedExpression */) { + while (expression.kind === 177 /* ParenthesizedExpression */) { expression = expression.expression; } return expression; } + function findFirstAssignment(symbol, container) { + return visit(ts.isFunctionLike(container) ? container.body : container); + function visit(node) { + switch (node.kind) { + case 69 /* Identifier */: + var assignment = getAssignmentRoot(node); + return assignment && getResolvedSymbol(node) === symbol ? assignment : undefined; + case 186 /* BinaryExpression */: + case 217 /* VariableDeclaration */: + case 168 /* BindingElement */: + case 166 /* ObjectBindingPattern */: + case 167 /* ArrayBindingPattern */: + case 169 /* ArrayLiteralExpression */: + case 170 /* ObjectLiteralExpression */: + case 171 /* PropertyAccessExpression */: + case 172 /* ElementAccessExpression */: + case 173 /* CallExpression */: + case 174 /* NewExpression */: + case 176 /* TypeAssertionExpression */: + case 194 /* AsExpression */: + case 195 /* NonNullExpression */: + case 177 /* ParenthesizedExpression */: + case 184 /* PrefixUnaryExpression */: + case 180 /* DeleteExpression */: + case 183 /* AwaitExpression */: + case 181 /* TypeOfExpression */: + case 182 /* VoidExpression */: + case 185 /* PostfixUnaryExpression */: + case 189 /* YieldExpression */: + case 187 /* ConditionalExpression */: + case 190 /* SpreadElementExpression */: + case 199 /* VariableStatement */: + case 201 /* ExpressionStatement */: + case 202 /* IfStatement */: + case 203 /* DoStatement */: + case 204 /* WhileStatement */: + case 205 /* ForStatement */: + case 206 /* ForInStatement */: + case 207 /* ForOfStatement */: + case 210 /* ReturnStatement */: + case 211 /* WithStatement */: + case 212 /* SwitchStatement */: + case 226 /* CaseBlock */: + case 248 /* CaseClause */: + case 249 /* DefaultClause */: + case 213 /* LabeledStatement */: + case 214 /* ThrowStatement */: + case 215 /* TryStatement */: + case 251 /* CatchClause */: + case 240 /* JsxElement */: + case 241 /* JsxSelfClosingElement */: + case 245 /* JsxAttribute */: + case 246 /* JsxSpreadAttribute */: + case 242 /* JsxOpeningElement */: + case 247 /* JsxExpression */: + case 198 /* Block */: + case 255 /* SourceFile */: + return ts.forEachChild(node, visit); + } + return undefined; + } + } + function checkVariableAssignedBefore(symbol, reference) { + if (!(symbol.flags & 3 /* Variable */)) { + return; + } + var declaration = symbol.valueDeclaration; + if (!declaration || declaration.kind !== 217 /* VariableDeclaration */ || declaration.initializer || ts.isInAmbientContext(declaration)) { + return; + } + var parentParentKind = declaration.parent.parent.kind; + if (parentParentKind === 207 /* ForOfStatement */ || parentParentKind === 206 /* ForInStatement */) { + return; + } + var declarationContainer = ts.getContainingFunction(declaration) || ts.getSourceFileOfNode(declaration); + var referenceContainer = ts.getContainingFunction(reference) || ts.getSourceFileOfNode(reference); + if (declarationContainer !== referenceContainer) { + return; + } + var links = getSymbolLinks(symbol); + if (!links.firstAssignmentChecked) { + links.firstAssignmentChecked = true; + links.firstAssignment = findFirstAssignment(symbol, declarationContainer); + } + if (links.firstAssignment && links.firstAssignment.end <= reference.pos) { + return; + } + error(reference, ts.Diagnostics.Variable_0_is_used_before_being_assigned, symbolToString(symbol)); + } function checkIdentifier(node) { var symbol = getResolvedSymbol(node); // As noted in ECMAScript 6 language spec, arrow functions never have an arguments objects. @@ -21315,7 +22156,7 @@ var ts; // can explicitly bound arguments objects if (symbol === argumentsSymbol) { var container = ts.getContainingFunction(node); - if (container.kind === 178 /* ArrowFunction */) { + if (container.kind === 179 /* ArrowFunction */) { if (languageVersion < 2 /* ES6 */) { error(node, ts.Diagnostics.The_arguments_object_cannot_be_referenced_in_an_arrow_function_in_ES3_and_ES5_Consider_using_a_standard_function_expression); } @@ -21333,7 +22174,7 @@ var ts; // behavior of class names in ES6. if (languageVersion === 2 /* ES6 */ && localOrExportSymbol.flags & 32 /* Class */ - && localOrExportSymbol.valueDeclaration.kind === 218 /* ClassDeclaration */ + && localOrExportSymbol.valueDeclaration.kind === 220 /* ClassDeclaration */ && ts.nodeIsDecorated(localOrExportSymbol.valueDeclaration)) { var container = ts.getContainingClass(node); while (container !== undefined) { @@ -21348,7 +22189,11 @@ var ts; checkCollisionWithCapturedSuperVariable(node, node); checkCollisionWithCapturedThisVariable(node, node); checkNestedBlockScopedBinding(node, symbol); - return getNarrowedTypeOfSymbol(localOrExportSymbol, node); + var type = getTypeOfSymbol(localOrExportSymbol); + if (strictNullChecks && !isAssignmentTarget(node) && !(type.flags & 1 /* Any */) && !(getNullableKind(type) & 32 /* Undefined */)) { + checkVariableAssignedBefore(symbol, node); + } + return getNarrowedTypeOfReference(type, node); } function isInsideFunction(node, threshold) { var current = node; @@ -21363,7 +22208,7 @@ var ts; function checkNestedBlockScopedBinding(node, symbol) { if (languageVersion >= 2 /* ES6 */ || (symbol.flags & (2 /* BlockScopedVariable */ | 32 /* Class */)) === 0 || - symbol.valueDeclaration.parent.kind === 248 /* CatchClause */) { + symbol.valueDeclaration.parent.kind === 251 /* CatchClause */) { return; } // 1. walk from the use site up to the declaration and check @@ -21388,8 +22233,8 @@ var ts; } // mark variables that are declared in loop initializer and reassigned inside the body of ForStatement. // if body of ForStatement will be converted to function then we'll need a extra machinery to propagate reassigned values back. - if (container.kind === 203 /* ForStatement */ && - ts.getAncestor(symbol.valueDeclaration, 216 /* VariableDeclarationList */).parent === container && + if (container.kind === 205 /* ForStatement */ && + ts.getAncestor(symbol.valueDeclaration, 218 /* VariableDeclarationList */).parent === container && isAssignedInBodyOfForStatement(node, container)) { getNodeLinks(symbol.valueDeclaration).flags |= 2097152 /* NeedsLoopOutParameter */; } @@ -21403,15 +22248,15 @@ var ts; function isAssignedInBodyOfForStatement(node, container) { var current = node; // skip parenthesized nodes - while (current.parent.kind === 176 /* ParenthesizedExpression */) { + while (current.parent.kind === 177 /* ParenthesizedExpression */) { current = current.parent; } // check if node is used as LHS in some assignment expression var isAssigned = false; - if (current.parent.kind === 185 /* BinaryExpression */) { - isAssigned = current.parent.left === current && ts.isAssignmentOperator(current.parent.operatorToken.kind); + if (isAssignmentTarget(current)) { + isAssigned = true; } - if ((current.parent.kind === 183 /* PrefixUnaryExpression */ || current.parent.kind === 184 /* PostfixUnaryExpression */)) { + else if ((current.parent.kind === 184 /* PrefixUnaryExpression */ || current.parent.kind === 185 /* PostfixUnaryExpression */)) { var expr = current.parent; isAssigned = expr.operator === 41 /* PlusPlusToken */ || expr.operator === 42 /* MinusMinusToken */; } @@ -21432,7 +22277,7 @@ var ts; } function captureLexicalThis(node, container) { getNodeLinks(node).flags |= 2 /* LexicalThis */; - if (container.kind === 143 /* PropertyDeclaration */ || container.kind === 146 /* Constructor */) { + if (container.kind === 144 /* PropertyDeclaration */ || container.kind === 147 /* Constructor */) { var classNode = container.parent; getNodeLinks(classNode).flags |= 4 /* CaptureThis */; } @@ -21480,7 +22325,7 @@ var ts; // tell whether 'this' needs to be captured. var container = ts.getThisContainer(node, /* includeArrowFunctions */ true); var needToCaptureLexicalThis = false; - if (container.kind === 146 /* Constructor */) { + if (container.kind === 147 /* Constructor */) { var containingClassDecl = container.parent; var baseTypeNode = ts.getClassExtendsHeritageClauseElement(containingClassDecl); // If a containing class does not have extends clause or the class extends null @@ -21501,41 +22346,60 @@ var ts; } } // Now skip arrow functions to get the "real" owner of 'this'. - if (container.kind === 178 /* ArrowFunction */) { + if (container.kind === 179 /* ArrowFunction */) { container = ts.getThisContainer(container, /* includeArrowFunctions */ false); // When targeting es6, arrow function lexically bind "this" so we do not need to do the work of binding "this" in emitted code needToCaptureLexicalThis = (languageVersion < 2 /* ES6 */); } switch (container.kind) { - case 222 /* ModuleDeclaration */: + case 224 /* ModuleDeclaration */: error(node, ts.Diagnostics.this_cannot_be_referenced_in_a_module_or_namespace_body); // do not return here so in case if lexical this is captured - it will be reflected in flags on NodeLinks break; - case 221 /* EnumDeclaration */: + case 223 /* EnumDeclaration */: error(node, ts.Diagnostics.this_cannot_be_referenced_in_current_location); // do not return here so in case if lexical this is captured - it will be reflected in flags on NodeLinks break; - case 146 /* Constructor */: + case 147 /* Constructor */: if (isInConstructorArgumentInitializer(node, container)) { error(node, ts.Diagnostics.this_cannot_be_referenced_in_constructor_arguments); } break; - case 143 /* PropertyDeclaration */: - case 142 /* PropertySignature */: + case 144 /* PropertyDeclaration */: + case 143 /* PropertySignature */: if (container.flags & 32 /* Static */) { error(node, ts.Diagnostics.this_cannot_be_referenced_in_a_static_property_initializer); } break; - case 138 /* ComputedPropertyName */: + case 139 /* ComputedPropertyName */: error(node, ts.Diagnostics.this_cannot_be_referenced_in_a_computed_property_name); break; } if (needToCaptureLexicalThis) { captureLexicalThis(node, container); } + if (ts.isFunctionLike(container)) { + var type = getContextuallyTypedThisType(container); + if (type) { + return type; + } + var signature = getSignatureFromDeclaration(container); + if (signature.thisType) { + return signature.thisType; + } + if (container.parent && container.parent.kind === 170 /* ObjectLiteralExpression */) { + // Note: this works because object literal methods are deferred, + // which means that the type of the containing object literal is already known. + var type_1 = checkExpressionCached(container.parent); + if (type_1) { + return type_1; + } + } + } if (ts.isClassLike(container.parent)) { var symbol = getSymbolOfNode(container.parent); - return container.flags & 32 /* Static */ ? getTypeOfSymbol(symbol) : getDeclaredTypeOfSymbol(symbol).thisType; + var type = container.flags & 32 /* Static */ ? getTypeOfSymbol(symbol) : getDeclaredTypeOfSymbol(symbol).thisType; + return getNarrowedTypeOfReference(type, node); } if (ts.isInJavaScriptFile(node)) { var type = getTypeForThisExpressionFromJSDoc(container); @@ -21544,7 +22408,7 @@ var ts; } // If this is a function in a JS file, it might be a class method. Check if it's the RHS // of a x.prototype.y = function [name]() { .... } - if (container.kind === 177 /* FunctionExpression */) { + if (container.kind === 178 /* FunctionExpression */) { if (ts.getSpecialPropertyAssignmentKind(container.parent) === 3 /* PrototypeProperty */) { // Get the 'x' of 'x.prototype.y = f' (here, 'f' is 'container') var className = container.parent // x.prototype.y = f @@ -21558,32 +22422,36 @@ var ts; } } } + if (compilerOptions.noImplicitThis) { + // With noImplicitThis, functions may not reference 'this' if it has type 'any' + error(node, ts.Diagnostics.this_implicitly_has_type_any_because_it_does_not_have_a_type_annotation); + } return anyType; } function getTypeForThisExpressionFromJSDoc(node) { var typeTag = ts.getJSDocTypeTag(node); - if (typeTag && typeTag.typeExpression && typeTag.typeExpression.type && typeTag.typeExpression.type.kind === 265 /* JSDocFunctionType */) { + if (typeTag && typeTag.typeExpression && typeTag.typeExpression.type && typeTag.typeExpression.type.kind === 268 /* JSDocFunctionType */) { var jsDocFunctionType = typeTag.typeExpression.type; - if (jsDocFunctionType.parameters.length > 0 && jsDocFunctionType.parameters[0].type.kind === 268 /* JSDocThisType */) { + if (jsDocFunctionType.parameters.length > 0 && jsDocFunctionType.parameters[0].type.kind === 271 /* JSDocThisType */) { return getTypeFromTypeNode(jsDocFunctionType.parameters[0].type); } } } function isInConstructorArgumentInitializer(node, constructorDecl) { for (var n = node; n && n !== constructorDecl; n = n.parent) { - if (n.kind === 140 /* Parameter */) { + if (n.kind === 141 /* Parameter */) { return true; } } return false; } function checkSuperExpression(node) { - var isCallExpression = node.parent.kind === 172 /* CallExpression */ && node.parent.expression === node; + var isCallExpression = node.parent.kind === 173 /* CallExpression */ && node.parent.expression === node; var container = ts.getSuperContainer(node, /*stopOnFunctions*/ true); var needToCaptureLexicalThis = false; if (!isCallExpression) { // adjust the container reference in case if super is used inside arrow functions with arbitrary deep nesting - while (container && container.kind === 178 /* ArrowFunction */) { + while (container && container.kind === 179 /* ArrowFunction */) { container = ts.getSuperContainer(container, /*stopOnFunctions*/ true); needToCaptureLexicalThis = languageVersion < 2 /* ES6 */; } @@ -21597,16 +22465,16 @@ var ts; // [super.foo()]() {} // } var current = node; - while (current && current !== container && current.kind !== 138 /* ComputedPropertyName */) { + while (current && current !== container && current.kind !== 139 /* ComputedPropertyName */) { current = current.parent; } - if (current && current.kind === 138 /* ComputedPropertyName */) { + if (current && current.kind === 139 /* ComputedPropertyName */) { error(node, ts.Diagnostics.super_cannot_be_referenced_in_a_computed_property_name); } else if (isCallExpression) { error(node, ts.Diagnostics.Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors); } - else if (!container || !container.parent || !(ts.isClassLike(container.parent) || container.parent.kind === 169 /* ObjectLiteralExpression */)) { + else if (!container || !container.parent || !(ts.isClassLike(container.parent) || container.parent.kind === 170 /* ObjectLiteralExpression */)) { error(node, ts.Diagnostics.super_can_only_be_referenced_in_members_of_derived_classes_or_object_literal_expressions); } else { @@ -21677,7 +22545,7 @@ var ts; // This helper creates an object with a "value" property that wraps the `super` property or indexed access for both get and set. // This is required for destructuring assignments, as a call expression cannot be used as the target of a destructuring assignment // while a property access can. - if (container.kind === 145 /* MethodDeclaration */ && container.flags & 256 /* Async */) { + if (container.kind === 146 /* MethodDeclaration */ && container.flags & 256 /* Async */) { if (ts.isSuperPropertyOrElementAccess(node.parent) && isAssignmentTarget(node.parent)) { getNodeLinks(container).flags |= 4096 /* AsyncMethodWithSuperBinding */; } @@ -21691,7 +22559,7 @@ var ts; // in this case they should also use correct lexical this captureLexicalThis(node.parent, container); } - if (container.parent.kind === 169 /* ObjectLiteralExpression */) { + if (container.parent.kind === 170 /* ObjectLiteralExpression */) { if (languageVersion < 2 /* ES6 */) { error(node, ts.Diagnostics.super_is_only_allowed_in_members_of_object_literal_expressions_when_option_target_is_ES2015_or_higher); return unknownType; @@ -21711,7 +22579,7 @@ var ts; } return unknownType; } - if (container.kind === 146 /* Constructor */ && isInConstructorArgumentInitializer(node, container)) { + if (container.kind === 147 /* Constructor */ && isInConstructorArgumentInitializer(node, container)) { // issue custom error message for super property access in constructor arguments (to be aligned with old compiler) error(node, ts.Diagnostics.super_cannot_be_referenced_in_constructor_arguments); return unknownType; @@ -21726,7 +22594,7 @@ var ts; if (isCallExpression) { // TS 1.0 SPEC (April 2014): 4.8.1 // Super calls are only permitted in constructors of derived classes - return container.kind === 146 /* Constructor */; + return container.kind === 147 /* Constructor */; } else { // TS 1.0 SPEC (April 2014) @@ -21734,27 +22602,38 @@ var ts; // - In a constructor, instance member function, instance member accessor, or instance member variable initializer where this references a derived class instance // - In a static member function or static member accessor // topmost container must be something that is directly nested in the class declaration\object literal expression - if (ts.isClassLike(container.parent) || container.parent.kind === 169 /* ObjectLiteralExpression */) { + if (ts.isClassLike(container.parent) || container.parent.kind === 170 /* ObjectLiteralExpression */) { if (container.flags & 32 /* Static */) { - return container.kind === 145 /* MethodDeclaration */ || - container.kind === 144 /* MethodSignature */ || - container.kind === 147 /* GetAccessor */ || - container.kind === 148 /* SetAccessor */; + return container.kind === 146 /* MethodDeclaration */ || + container.kind === 145 /* MethodSignature */ || + container.kind === 148 /* GetAccessor */ || + container.kind === 149 /* SetAccessor */; } else { - return container.kind === 145 /* MethodDeclaration */ || - container.kind === 144 /* MethodSignature */ || - container.kind === 147 /* GetAccessor */ || - container.kind === 148 /* SetAccessor */ || - container.kind === 143 /* PropertyDeclaration */ || - container.kind === 142 /* PropertySignature */ || - container.kind === 146 /* Constructor */; + return container.kind === 146 /* MethodDeclaration */ || + container.kind === 145 /* MethodSignature */ || + container.kind === 148 /* GetAccessor */ || + container.kind === 149 /* SetAccessor */ || + container.kind === 144 /* PropertyDeclaration */ || + container.kind === 143 /* PropertySignature */ || + container.kind === 147 /* Constructor */; } } } return false; } } + function getContextuallyTypedThisType(func) { + if ((isFunctionExpressionOrArrowFunction(func) || ts.isObjectLiteralMethod(func)) && + isContextSensitive(func) && + func.kind !== 179 /* ArrowFunction */) { + var contextualSignature = getContextualSignature(func); + if (contextualSignature) { + return contextualSignature.thisType; + } + } + return undefined; + } // Return contextual type of parameter or undefined if no contextual type is available function getContextuallyTypedParameterType(parameter) { var func = parameter.parent; @@ -21779,18 +22658,21 @@ var ts; } return undefined; } - // In a variable, parameter or property declaration with a type annotation, the contextual type of an initializer - // expression is the type of the variable, parameter or property. Otherwise, in a parameter declaration of a - // contextually typed function expression, the contextual type of an initializer expression is the contextual type - // of the parameter. Otherwise, in a variable or parameter declaration with a binding pattern name, the contextual - // type of an initializer expression is the type implied by the binding pattern. + // In a variable, parameter or property declaration with a type annotation, + // the contextual type of an initializer expression is the type of the variable, parameter or property. + // Otherwise, in a parameter declaration of a contextually typed function expression, + // the contextual type of an initializer expression is the contextual type of the parameter. + // Otherwise, in a variable or parameter declaration with a binding pattern name, + // the contextual type of an initializer expression is the type implied by the binding pattern. + // Otherwise, in a binding pattern inside a variable or parameter declaration, + // the contextual type of an initializer expression is the type annotation of the containing declaration, if present. function getContextualTypeForInitializerExpression(node) { var declaration = node.parent; if (node === declaration.initializer) { if (declaration.type) { return getTypeFromTypeNode(declaration.type); } - if (declaration.kind === 140 /* Parameter */) { + if (declaration.kind === 141 /* Parameter */) { var type = getContextuallyTypedParameterType(declaration); if (type) { return type; @@ -21799,6 +22681,18 @@ var ts; if (ts.isBindingPattern(declaration.name)) { return getTypeFromBindingPattern(declaration.name, /*includePatternInType*/ true); } + if (ts.isBindingPattern(declaration.parent)) { + var parentDeclaration = declaration.parent.parent; + var name_11 = declaration.propertyName || declaration.name; + if (ts.isVariableLike(parentDeclaration) && + parentDeclaration.type && + !ts.isBindingPattern(name_11)) { + var text = getTextOfPropertyName(name_11); + if (text) { + return getTypeOfPropertyOfType(getTypeFromTypeNode(parentDeclaration.type), text); + } + } + } } return undefined; } @@ -21823,7 +22717,7 @@ var ts; } function isInParameterInitializerBeforeContainingFunction(node) { while (node.parent && !ts.isFunctionLike(node.parent)) { - if (node.parent.kind === 140 /* Parameter */ && node.parent.initializer === node) { + if (node.parent.kind === 141 /* Parameter */ && node.parent.initializer === node) { return true; } node = node.parent; @@ -21834,8 +22728,8 @@ var ts; // If the containing function has a return type annotation, is a constructor, or is a get accessor whose // corresponding set accessor has a type annotation, return statements in the function are contextually typed if (functionDecl.type || - functionDecl.kind === 146 /* Constructor */ || - functionDecl.kind === 147 /* GetAccessor */ && ts.getSetAccessorTypeAnnotationNode(ts.getDeclarationOfKind(functionDecl.symbol, 148 /* SetAccessor */))) { + functionDecl.kind === 147 /* Constructor */ || + functionDecl.kind === 148 /* GetAccessor */ && ts.getSetAccessorTypeAnnotationNode(ts.getDeclarationOfKind(functionDecl.symbol, 149 /* SetAccessor */))) { return getReturnTypeOfSignature(getSignatureFromDeclaration(functionDecl)); } // Otherwise, if the containing function is contextually typed by a function type with exactly one call signature @@ -21857,7 +22751,7 @@ var ts; return undefined; } function getContextualTypeForSubstitutionExpression(template, substitutionExpression) { - if (template.parent.kind === 174 /* TaggedTemplateExpression */) { + if (template.parent.kind === 175 /* TaggedTemplateExpression */) { return getContextualTypeForArgument(template.parent, substitutionExpression); } return undefined; @@ -21984,13 +22878,13 @@ var ts; var kind = attribute.kind; var jsxElement = attribute.parent; var attrsType = getJsxElementAttributesType(jsxElement); - if (attribute.kind === 242 /* JsxAttribute */) { + if (attribute.kind === 245 /* JsxAttribute */) { if (!attrsType || isTypeAny(attrsType)) { return undefined; } return getTypeOfPropertyOfType(attrsType, attribute.name.text); } - else if (attribute.kind === 243 /* JsxSpreadAttribute */) { + else if (attribute.kind === 246 /* JsxSpreadAttribute */) { return attrsType; } ts.Debug.fail("Expected JsxAttribute or JsxSpreadAttribute, got ts.SyntaxKind[" + kind + "]"); @@ -22028,40 +22922,40 @@ var ts; } var parent = node.parent; switch (parent.kind) { - case 215 /* VariableDeclaration */: - case 140 /* Parameter */: - case 143 /* PropertyDeclaration */: - case 142 /* PropertySignature */: - case 167 /* BindingElement */: + case 217 /* VariableDeclaration */: + case 141 /* Parameter */: + case 144 /* PropertyDeclaration */: + case 143 /* PropertySignature */: + case 168 /* BindingElement */: return getContextualTypeForInitializerExpression(node); - case 178 /* ArrowFunction */: - case 208 /* ReturnStatement */: + case 179 /* ArrowFunction */: + case 210 /* ReturnStatement */: return getContextualTypeForReturnExpression(node); - case 188 /* YieldExpression */: + case 189 /* YieldExpression */: return getContextualTypeForYieldOperand(parent); - case 172 /* CallExpression */: - case 173 /* NewExpression */: + case 173 /* CallExpression */: + case 174 /* NewExpression */: return getContextualTypeForArgument(parent, node); - case 175 /* TypeAssertionExpression */: - case 193 /* AsExpression */: + case 176 /* TypeAssertionExpression */: + case 194 /* AsExpression */: return getTypeFromTypeNode(parent.type); - case 185 /* BinaryExpression */: + case 186 /* BinaryExpression */: return getContextualTypeForBinaryOperand(node); - case 249 /* PropertyAssignment */: + case 252 /* PropertyAssignment */: return getContextualTypeForObjectLiteralElement(parent); - case 168 /* ArrayLiteralExpression */: + case 169 /* ArrayLiteralExpression */: return getContextualTypeForElementExpression(node); - case 186 /* ConditionalExpression */: + case 187 /* ConditionalExpression */: return getContextualTypeForConditionalOperand(node); - case 194 /* TemplateSpan */: - ts.Debug.assert(parent.parent.kind === 187 /* TemplateExpression */); + case 196 /* TemplateSpan */: + ts.Debug.assert(parent.parent.kind === 188 /* TemplateExpression */); return getContextualTypeForSubstitutionExpression(parent.parent, node); - case 176 /* ParenthesizedExpression */: + case 177 /* ParenthesizedExpression */: return getContextualType(parent); - case 244 /* JsxExpression */: + case 247 /* JsxExpression */: return getContextualType(parent); - case 242 /* JsxAttribute */: - case 243 /* JsxSpreadAttribute */: + case 245 /* JsxAttribute */: + case 246 /* JsxSpreadAttribute */: return getContextualTypeForJsxAttribute(parent); } return undefined; @@ -22078,7 +22972,7 @@ var ts; } } function isFunctionExpressionOrArrowFunction(node) { - return node.kind === 177 /* FunctionExpression */ || node.kind === 178 /* ArrowFunction */; + return node.kind === 178 /* FunctionExpression */ || node.kind === 179 /* ArrowFunction */; } function getContextualSignatureForFunctionLikeDeclaration(node) { // Only function expressions, arrow functions, and object literal methods are contextually typed. @@ -22092,7 +22986,7 @@ var ts; // all identical ignoring their return type, the result is same signature but with return type as // union type of return types from these signatures function getContextualSignature(node) { - ts.Debug.assert(node.kind !== 145 /* MethodDeclaration */ || ts.isObjectLiteralMethod(node)); + ts.Debug.assert(node.kind !== 146 /* MethodDeclaration */ || ts.isObjectLiteralMethod(node)); var type = ts.isObjectLiteralMethod(node) ? getContextualTypeForObjectLiteralMethod(node) : getApparentTypeOfContextualType(node); @@ -22112,7 +23006,7 @@ var ts; // This signature will contribute to contextual union signature signatureList = [signature]; } - else if (!compareSignaturesIdentical(signatureList[0], signature, /*partialMatch*/ false, /*ignoreReturnTypes*/ true, compareTypesIdentical)) { + else if (!compareSignaturesIdentical(signatureList[0], signature, /*partialMatch*/ false, /*ignoreThisTypes*/ true, /*ignoreReturnTypes*/ true, compareTypesIdentical)) { // Signatures aren't identical, do not use return undefined; } @@ -22150,19 +23044,38 @@ var ts; function isInferentialContext(mapper) { return mapper && mapper.context; } + // Return the root assignment node of an assignment target + function getAssignmentRoot(node) { + while (node.parent.kind === 177 /* ParenthesizedExpression */) { + node = node.parent; + } + while (true) { + if (node.parent.kind === 252 /* PropertyAssignment */) { + node = node.parent.parent; + } + else if (node.parent.kind === 169 /* ArrayLiteralExpression */) { + node = node.parent; + } + else { + break; + } + } + var parent = node.parent; + return parent.kind === 186 /* BinaryExpression */ && + parent.operatorToken.kind === 56 /* EqualsToken */ && + parent.left === node ? parent : undefined; + } // A node is an assignment target if it is on the left hand side of an '=' token, if it is parented by a property // assignment in an object literal that is an assignment target, or if it is parented by an array literal that is // an assignment target. Examples include 'a = xxx', '{ p: a } = xxx', '[{ p: a}] = xxx'. function isAssignmentTarget(node) { + return !!getAssignmentRoot(node); + } + function isCompoundAssignmentTarget(node) { var parent = node.parent; - if (parent.kind === 185 /* BinaryExpression */ && parent.operatorToken.kind === 56 /* EqualsToken */ && parent.left === node) { - return true; - } - if (parent.kind === 249 /* PropertyAssignment */) { - return isAssignmentTarget(parent.parent); - } - if (parent.kind === 168 /* ArrayLiteralExpression */) { - return isAssignmentTarget(parent); + if (parent.kind === 186 /* BinaryExpression */ && parent.left === node) { + var operator = parent.operatorToken.kind; + return operator >= 56 /* FirstAssignment */ && operator <= 68 /* LastAssignment */; } return false; } @@ -22177,8 +23090,8 @@ var ts; return checkIteratedTypeOrElementType(arrayOrIterableType, node.expression, /*allowStringInput*/ false); } function hasDefaultValue(node) { - return (node.kind === 167 /* BindingElement */ && !!node.initializer) || - (node.kind === 185 /* BinaryExpression */ && node.operatorToken.kind === 56 /* EqualsToken */); + return (node.kind === 168 /* BindingElement */ && !!node.initializer) || + (node.kind === 186 /* BinaryExpression */ && node.operatorToken.kind === 56 /* EqualsToken */); } function checkArrayLiteral(node, contextualMapper) { var elements = node.elements; @@ -22187,7 +23100,7 @@ var ts; var inDestructuringPattern = isAssignmentTarget(node); for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) { var e = elements_1[_i]; - if (inDestructuringPattern && e.kind === 189 /* SpreadElementExpression */) { + if (inDestructuringPattern && e.kind === 190 /* SpreadElementExpression */) { // Given the following situation: // var c: {}; // [...c] = ["", 0]; @@ -22211,7 +23124,7 @@ var ts; var type = checkExpression(e, contextualMapper); elementTypes.push(type); } - hasSpreadElement = hasSpreadElement || e.kind === 189 /* SpreadElementExpression */; + hasSpreadElement = hasSpreadElement || e.kind === 190 /* SpreadElementExpression */; } if (!hasSpreadElement) { // If array literal is actually a destructuring pattern, mark it as an implied type. We do this such @@ -22226,7 +23139,7 @@ var ts; var pattern = contextualType.pattern; // If array literal is contextually typed by a binding pattern or an assignment pattern, pad the resulting // tuple type with the corresponding binding or assignment element types to make the lengths equal. - if (pattern && (pattern.kind === 166 /* ArrayBindingPattern */ || pattern.kind === 168 /* ArrayLiteralExpression */)) { + if (pattern && (pattern.kind === 167 /* ArrayBindingPattern */ || pattern.kind === 169 /* ArrayLiteralExpression */)) { var patternElements = pattern.elements; for (var i = elementTypes.length; i < patternElements.length; i++) { var patternElement = patternElements[i]; @@ -22234,7 +23147,7 @@ var ts; elementTypes.push(contextualType.elementTypes[i]); } else { - if (patternElement.kind !== 191 /* OmittedExpression */) { + if (patternElement.kind !== 192 /* OmittedExpression */) { error(patternElement, ts.Diagnostics.Initializer_provides_no_value_for_this_binding_element_and_the_binding_element_has_no_default_value); } elementTypes.push(unknownType); @@ -22246,10 +23159,10 @@ var ts; } } } - return createArrayType(elementTypes.length ? getUnionType(elementTypes) : undefinedType); + return createArrayType(elementTypes.length ? getUnionType(elementTypes) : emptyArrayElementType); } function isNumericName(name) { - return name.kind === 138 /* ComputedPropertyName */ ? isNumericComputedName(name) : isNumericLiteralName(name.text); + return name.kind === 139 /* ComputedPropertyName */ ? isNumericComputedName(name) : isNumericLiteralName(name.text); } function isNumericComputedName(name) { // It seems odd to consider an expression of type Any to result in a numeric name, @@ -22316,7 +23229,7 @@ var ts; var propertiesArray = []; var contextualType = getApparentTypeOfContextualType(node); var contextualTypeHasPattern = contextualType && contextualType.pattern && - (contextualType.pattern.kind === 165 /* ObjectBindingPattern */ || contextualType.pattern.kind === 169 /* ObjectLiteralExpression */); + (contextualType.pattern.kind === 166 /* ObjectBindingPattern */ || contextualType.pattern.kind === 170 /* ObjectLiteralExpression */); var typeFlags = 0; var patternWithComputedProperties = false; var hasComputedStringProperty = false; @@ -22324,18 +23237,18 @@ var ts; for (var _i = 0, _a = node.properties; _i < _a.length; _i++) { var memberDecl = _a[_i]; var member = memberDecl.symbol; - if (memberDecl.kind === 249 /* PropertyAssignment */ || - memberDecl.kind === 250 /* ShorthandPropertyAssignment */ || + if (memberDecl.kind === 252 /* PropertyAssignment */ || + memberDecl.kind === 253 /* ShorthandPropertyAssignment */ || ts.isObjectLiteralMethod(memberDecl)) { var type = void 0; - if (memberDecl.kind === 249 /* PropertyAssignment */) { + if (memberDecl.kind === 252 /* PropertyAssignment */) { type = checkPropertyAssignment(memberDecl, contextualMapper); } - else if (memberDecl.kind === 145 /* MethodDeclaration */) { + else if (memberDecl.kind === 146 /* MethodDeclaration */) { type = checkObjectLiteralMethod(memberDecl, contextualMapper); } else { - ts.Debug.assert(memberDecl.kind === 250 /* ShorthandPropertyAssignment */); + ts.Debug.assert(memberDecl.kind === 253 /* ShorthandPropertyAssignment */); type = checkExpression(memberDecl.name, contextualMapper); } typeFlags |= type.flags; @@ -22343,8 +23256,8 @@ var ts; if (inDestructuringPattern) { // If object literal is an assignment pattern and if the assignment pattern specifies a default value // for the property, make the property optional. - var isOptional = (memberDecl.kind === 249 /* PropertyAssignment */ && hasDefaultValue(memberDecl.initializer)) || - (memberDecl.kind === 250 /* ShorthandPropertyAssignment */ && memberDecl.objectAssignmentInitializer); + var isOptional = (memberDecl.kind === 252 /* PropertyAssignment */ && hasDefaultValue(memberDecl.initializer)) || + (memberDecl.kind === 253 /* ShorthandPropertyAssignment */ && memberDecl.objectAssignmentInitializer); if (isOptional) { prop.flags |= 536870912 /* Optional */; } @@ -22378,7 +23291,7 @@ var ts; // an ordinary function declaration(section 6.1) with no parameters. // A set accessor declaration is processed in the same manner // as an ordinary function declaration with a single parameter and a Void return type. - ts.Debug.assert(memberDecl.kind === 147 /* GetAccessor */ || memberDecl.kind === 148 /* SetAccessor */); + ts.Debug.assert(memberDecl.kind === 148 /* GetAccessor */ || memberDecl.kind === 149 /* SetAccessor */); checkAccessorDeclaration(memberDecl); } if (ts.hasDynamicName(memberDecl)) { @@ -22426,18 +23339,23 @@ var ts; // Check attributes checkJsxOpeningLikeElement(node.openingElement); // Perform resolution on the closing tag so that rename/go to definition/etc work - getJsxTagSymbol(node.closingElement); + if (isJsxIntrinsicIdentifier(node.closingElement.tagName)) { + getIntrinsicTagSymbol(node.closingElement); + } + else { + checkExpression(node.closingElement.tagName); + } // Check children for (var _i = 0, _a = node.children; _i < _a.length; _i++) { var child = _a[_i]; switch (child.kind) { - case 244 /* JsxExpression */: + case 247 /* JsxExpression */: checkJsxExpression(child); break; - case 237 /* JsxElement */: + case 240 /* JsxElement */: checkJsxElement(child); break; - case 238 /* JsxSelfClosingElement */: + case 241 /* JsxSelfClosingElement */: checkJsxSelfClosingElement(child); break; } @@ -22455,7 +23373,7 @@ var ts; * Returns true iff React would emit this tag name as a string rather than an identifier or qualified name */ function isJsxIntrinsicIdentifier(tagName) { - if (tagName.kind === 137 /* QualifiedName */) { + if (tagName.kind === 138 /* QualifiedName */) { return false; } else { @@ -22525,14 +23443,6 @@ var ts; } return jsxTypes[name]; } - function getJsxTagSymbol(node) { - if (isJsxIntrinsicIdentifier(node.tagName)) { - return getIntrinsicTagSymbol(node); - } - else { - return checkExpression(node.tagName).symbol; - } - } /** * Looks up an intrinsic tag name and returns a symbol that either points to an intrinsic * property (in which case nodeLinks.jsxFlags will be IntrinsicNamedElement) or an intrinsic @@ -22648,18 +23558,20 @@ var ts; if (!elemClassType || !isTypeAssignableTo(elemInstanceType, elemClassType)) { // Is this is a stateless function component? See if its single signature's return type is // assignable to the JSX Element Type - var elemType = checkExpression(node.tagName); - var callSignatures = elemType && getSignaturesOfType(elemType, 0 /* Call */); - var callSignature = callSignatures && callSignatures.length > 0 && callSignatures[0]; - var callReturnType = callSignature && getReturnTypeOfSignature(callSignature); - var paramType = callReturnType && (callSignature.parameters.length === 0 ? emptyObjectType : getTypeOfSymbol(callSignature.parameters[0])); - if (callReturnType && isTypeAssignableTo(callReturnType, jsxElementType)) { - // Intersect in JSX.IntrinsicAttributes if it exists - var intrinsicAttributes = getJsxType(JsxNames.IntrinsicAttributes); - if (intrinsicAttributes !== unknownType) { - paramType = intersectTypes(intrinsicAttributes, paramType); + if (jsxElementType) { + var elemType = checkExpression(node.tagName); + var callSignatures = elemType && getSignaturesOfType(elemType, 0 /* Call */); + var callSignature = callSignatures && callSignatures.length > 0 && callSignatures[0]; + var callReturnType = callSignature && getReturnTypeOfSignature(callSignature); + var paramType = callReturnType && (callSignature.parameters.length === 0 ? emptyObjectType : getTypeOfSymbol(callSignature.parameters[0])); + if (callReturnType && isTypeAssignableTo(callReturnType, jsxElementType)) { + // Intersect in JSX.IntrinsicAttributes if it exists + var intrinsicAttributes = getJsxType(JsxNames.IntrinsicAttributes); + if (intrinsicAttributes !== unknownType) { + paramType = intersectTypes(intrinsicAttributes, paramType); + } + return links.resolvedJsxType = paramType; } - return links.resolvedJsxType = paramType; } } // Issue an error if this return type isn't assignable to JSX.ElementClass @@ -22770,11 +23682,11 @@ var ts; // thus should have their types ignored var sawSpreadedAny = false; for (var i = node.attributes.length - 1; i >= 0; i--) { - if (node.attributes[i].kind === 242 /* JsxAttribute */) { + if (node.attributes[i].kind === 245 /* JsxAttribute */) { checkJsxAttribute((node.attributes[i]), targetAttributesType, nameTable); } else { - ts.Debug.assert(node.attributes[i].kind === 243 /* JsxSpreadAttribute */); + ts.Debug.assert(node.attributes[i].kind === 246 /* JsxSpreadAttribute */); var spreadType = checkJsxSpreadAttribute((node.attributes[i]), targetAttributesType, nameTable); if (isTypeAny(spreadType)) { sawSpreadedAny = true; @@ -22804,7 +23716,7 @@ var ts; // If a symbol is a synthesized symbol with no value declaration, we assume it is a property. Example of this are the synthesized // '.prototype' property as well as synthesized tuple index properties. function getDeclarationKindFromSymbol(s) { - return s.valueDeclaration ? s.valueDeclaration.kind : 143 /* PropertyDeclaration */; + return s.valueDeclaration ? s.valueDeclaration.kind : 144 /* PropertyDeclaration */; } function getDeclarationFlagsFromSymbol(s) { return s.valueDeclaration ? ts.getCombinedNodeFlags(s.valueDeclaration) : s.flags & 134217728 /* Prototype */ ? 4 /* Public */ | 32 /* Static */ : 0; @@ -22820,10 +23732,10 @@ var ts; function checkClassPropertyAccess(node, left, type, prop) { var flags = getDeclarationFlagsFromSymbol(prop); var declaringClass = getDeclaredTypeOfSymbol(getParentOfSymbol(prop)); + var errorNode = node.kind === 171 /* PropertyAccessExpression */ || node.kind === 217 /* VariableDeclaration */ ? + node.name : + node.right; if (left.kind === 95 /* SuperKeyword */) { - var errorNode = node.kind === 170 /* PropertyAccessExpression */ ? - node.name : - node.right; // TS 1.0 spec (April 2014): 4.8.2 // - In a constructor, instance member function, instance member accessor, or // instance member variable initializer where this references a derived class instance, @@ -22831,7 +23743,7 @@ var ts; // - In a static member function or static member accessor // where this references the constructor function object of a derived class, // a super property access is permitted and must specify a public static member function of the base class. - if (languageVersion < 2 /* ES6 */ && getDeclarationKindFromSymbol(prop) !== 145 /* MethodDeclaration */) { + if (languageVersion < 2 /* ES6 */ && getDeclarationKindFromSymbol(prop) !== 146 /* MethodDeclaration */) { // `prop` refers to a *property* declared in the super class // rather than a *method*, so it does not satisfy the above criteria. error(errorNode, ts.Diagnostics.Only_public_and_protected_methods_of_the_base_class_are_accessible_via_the_super_keyword); @@ -22851,13 +23763,11 @@ var ts; return true; } // Property is known to be private or protected at this point - // Get the declaring and enclosing class instance types - var enclosingClassDeclaration = ts.getContainingClass(node); - var enclosingClass = enclosingClassDeclaration ? getDeclaredTypeOfSymbol(getSymbolOfNode(enclosingClassDeclaration)) : undefined; - // Private property is accessible if declaring and enclosing class are the same + // Private property is accessible if the property is within the declaring class if (flags & 8 /* Private */) { - if (declaringClass !== enclosingClass) { - error(node, ts.Diagnostics.Property_0_is_private_and_only_accessible_within_class_1, symbolToString(prop), typeToString(declaringClass)); + var declaringClassDeclaration = getClassLikeDeclarationOfSymbol(getParentOfSymbol(prop)); + if (!isNodeWithinClass(node, declaringClassDeclaration)) { + error(errorNode, ts.Diagnostics.Property_0_is_private_and_only_accessible_within_class_1, symbolToString(prop), typeToString(declaringClass)); return false; } return true; @@ -22867,9 +23777,14 @@ var ts; if (left.kind === 95 /* SuperKeyword */) { return true; } - // A protected property is accessible in the declaring class and classes derived from it - if (!enclosingClass || !hasBaseType(enclosingClass, declaringClass)) { - error(node, ts.Diagnostics.Property_0_is_protected_and_only_accessible_within_class_1_and_its_subclasses, symbolToString(prop), typeToString(declaringClass)); + // Get the enclosing class that has the declaring class as its base type + var enclosingClass = forEachEnclosingClass(node, function (enclosingDeclaration) { + var enclosingClass = getDeclaredTypeOfSymbol(getSymbolOfNode(enclosingDeclaration)); + return hasBaseType(enclosingClass, declaringClass) ? enclosingClass : undefined; + }); + // A protected property is accessible if the property is within the declaring class or classes derived from it + if (!enclosingClass) { + error(errorNode, ts.Diagnostics.Property_0_is_protected_and_only_accessible_within_class_1_and_its_subclasses, symbolToString(prop), typeToString(declaringClass)); return false; } // No further restrictions for static properties @@ -22883,11 +23798,19 @@ var ts; } // TODO: why is the first part of this check here? if (!(getTargetType(type).flags & (1024 /* Class */ | 2048 /* Interface */) && hasBaseType(type, enclosingClass))) { - error(node, ts.Diagnostics.Property_0_is_protected_and_only_accessible_through_an_instance_of_class_1, symbolToString(prop), typeToString(enclosingClass)); + error(errorNode, ts.Diagnostics.Property_0_is_protected_and_only_accessible_through_an_instance_of_class_1, symbolToString(prop), typeToString(enclosingClass)); return false; } return true; } + function checkNonNullExpression(node) { + var type = checkExpression(node); + if (strictNullChecks && getNullableKind(type)) { + error(node, ts.Diagnostics.Object_is_possibly_null_or_undefined); + return getNonNullableType(type); + } + return type; + } function checkPropertyAccessExpression(node) { return checkPropertyAccessExpressionOrQualifiedName(node, node.expression, node.name); } @@ -22895,7 +23818,7 @@ var ts; return checkPropertyAccessExpressionOrQualifiedName(node, node.left, node.right); } function checkPropertyAccessExpressionOrQualifiedName(node, left, right) { - var type = checkExpression(left); + var type = checkNonNullExpression(left); if (isTypeAny(type)) { return type; } @@ -22915,10 +23838,12 @@ var ts; if (prop.parent && prop.parent.flags & 32 /* Class */) { checkClassPropertyAccess(node, left, apparentType, prop); } - return getTypeOfSymbol(prop); + var propType = getTypeOfSymbol(prop); + return node.kind === 171 /* PropertyAccessExpression */ && prop.flags & 4 /* Property */ ? + getNarrowedTypeOfReference(propType, node) : propType; } function isValidPropertyAccess(node, propertyName) { - var left = node.kind === 170 /* PropertyAccessExpression */ + var left = node.kind === 171 /* PropertyAccessExpression */ ? node.expression : node.left; var type = checkExpression(left); @@ -22935,7 +23860,7 @@ var ts; */ function getForInVariableSymbol(node) { var initializer = node.initializer; - if (initializer.kind === 216 /* VariableDeclarationList */) { + if (initializer.kind === 218 /* VariableDeclarationList */) { var variable = initializer.declarations[0]; if (variable && !ts.isBindingPattern(variable.name)) { return getSymbolOfNode(variable); @@ -22964,7 +23889,7 @@ var ts; var child = expr; var node = expr.parent; while (node) { - if (node.kind === 204 /* ForInStatement */ && + if (node.kind === 206 /* ForInStatement */ && child === node.statement && getForInVariableSymbol(node) === symbol && hasNumericPropertyNames(checkExpression(node.expression))) { @@ -22981,7 +23906,7 @@ var ts; // Grammar checking if (!node.argumentExpression) { var sourceFile = ts.getSourceFileOfNode(node); - if (node.parent.kind === 173 /* NewExpression */ && node.parent.expression === node) { + if (node.parent.kind === 174 /* NewExpression */ && node.parent.expression === node) { var start = ts.skipTrivia(sourceFile.text, node.expression.end); var end = node.end; grammarErrorAtPos(sourceFile, start, end - start, ts.Diagnostics.new_T_cannot_be_used_to_create_an_array_Use_new_Array_T_instead); @@ -22993,7 +23918,7 @@ var ts; } } // Obtain base constraint such that we can bail out if the constraint is an unknown type - var objectType = getApparentType(checkExpression(node.expression)); + var objectType = getApparentType(checkNonNullExpression(node.expression)); var indexType = node.argumentExpression ? checkExpression(node.argumentExpression) : unknownType; if (objectType === unknownType) { return unknownType; @@ -23014,15 +23939,15 @@ var ts; // - Otherwise, if IndexExpr is of type Any, the String or Number primitive type, or an enum type, the property access is of type Any. // See if we can index as a property. if (node.argumentExpression) { - var name_11 = getPropertyNameForIndexedAccess(node.argumentExpression, indexType); - if (name_11 !== undefined) { - var prop = getPropertyOfType(objectType, name_11); + var name_12 = getPropertyNameForIndexedAccess(node.argumentExpression, indexType); + if (name_12 !== undefined) { + var prop = getPropertyOfType(objectType, name_12); if (prop) { getNodeLinks(node).resolvedSymbol = prop; return getTypeOfSymbol(prop); } else if (isConstEnum) { - error(node.argumentExpression, ts.Diagnostics.Property_0_does_not_exist_on_const_enum_1, name_11, symbolToString(objectType.symbol)); + error(node.argumentExpression, ts.Diagnostics.Property_0_does_not_exist_on_const_enum_1, name_12, symbolToString(objectType.symbol)); return unknownType; } } @@ -23066,7 +23991,7 @@ var ts; if (indexArgumentExpression.kind === 9 /* StringLiteral */ || indexArgumentExpression.kind === 8 /* NumericLiteral */) { return indexArgumentExpression.text; } - if (indexArgumentExpression.kind === 171 /* ElementAccessExpression */ || indexArgumentExpression.kind === 170 /* PropertyAccessExpression */) { + if (indexArgumentExpression.kind === 172 /* ElementAccessExpression */ || indexArgumentExpression.kind === 171 /* PropertyAccessExpression */) { var value = getConstantValue(indexArgumentExpression); if (value !== undefined) { return value.toString(); @@ -23121,10 +24046,10 @@ var ts; return true; } function resolveUntypedCall(node) { - if (node.kind === 174 /* TaggedTemplateExpression */) { + if (node.kind === 175 /* TaggedTemplateExpression */) { checkExpression(node.template); } - else if (node.kind !== 141 /* Decorator */) { + else if (node.kind !== 142 /* Decorator */) { ts.forEach(node.arguments, function (argument) { checkExpression(argument); }); @@ -23154,13 +24079,13 @@ var ts; for (var _i = 0, signatures_2 = signatures; _i < signatures_2.length; _i++) { var signature = signatures_2[_i]; var symbol = signature.declaration && getSymbolOfNode(signature.declaration); - var parent_6 = signature.declaration && signature.declaration.parent; + var parent_7 = signature.declaration && signature.declaration.parent; if (!lastSymbol || symbol === lastSymbol) { - if (lastParent && parent_6 === lastParent) { + if (lastParent && parent_7 === lastParent) { index++; } else { - lastParent = parent_6; + lastParent = parent_7; index = cutoffIndex; } } @@ -23168,7 +24093,7 @@ var ts; // current declaration belongs to a different symbol // set cutoffIndex so re-orderings in the future won't change result set from 0 to cutoffIndex index = cutoffIndex = result.length; - lastParent = parent_6; + lastParent = parent_7; } lastSymbol = symbol; // specialized signatures always need to be placed before non-specialized signatures regardless @@ -23190,7 +24115,7 @@ var ts; function getSpreadArgumentIndex(args) { for (var i = 0; i < args.length; i++) { var arg = args[i]; - if (arg && arg.kind === 189 /* SpreadElementExpression */) { + if (arg && arg.kind === 190 /* SpreadElementExpression */) { return i; } } @@ -23202,13 +24127,13 @@ var ts; var callIsIncomplete; // In incomplete call we want to be lenient when we have too few arguments var isDecorator; var spreadArgIndex = -1; - if (node.kind === 174 /* TaggedTemplateExpression */) { + if (node.kind === 175 /* TaggedTemplateExpression */) { var tagExpression = node; // Even if the call is incomplete, we'll have a missing expression as our last argument, // so we can say the count is just the arg list length adjustedArgCount = args.length; typeArguments = undefined; - if (tagExpression.template.kind === 187 /* TemplateExpression */) { + if (tagExpression.template.kind === 188 /* TemplateExpression */) { // If a tagged template expression lacks a tail literal, the call is incomplete. // Specifically, a template only can end in a TemplateTail or a Missing literal. var templateExpression = tagExpression.template; @@ -23225,7 +24150,7 @@ var ts; callIsIncomplete = !!templateLiteral.isUnterminated; } } - else if (node.kind === 141 /* Decorator */) { + else if (node.kind === 142 /* Decorator */) { isDecorator = true; typeArguments = undefined; adjustedArgCount = getEffectiveArgumentCount(node, /*args*/ undefined, signature); @@ -23234,7 +24159,7 @@ var ts; var callExpression = node; if (!callExpression.arguments) { // This only happens when we have something of the form: 'new C' - ts.Debug.assert(callExpression.kind === 173 /* NewExpression */); + ts.Debug.assert(callExpression.kind === 174 /* NewExpression */); return signature.minArgumentCount === 0; } // For IDE scenarios we may have an incomplete call, so a trailing comma is tantamount to adding another argument. @@ -23307,13 +24232,18 @@ var ts; if (context.failedTypeParameterIndex !== undefined && !context.inferences[context.failedTypeParameterIndex].isFixed) { context.failedTypeParameterIndex = undefined; } + if (signature.thisType) { + var thisArgumentNode = getThisArgumentOfCall(node); + var thisArgumentType = thisArgumentNode ? checkExpression(thisArgumentNode) : voidType; + inferTypes(context, thisArgumentType, signature.thisType); + } // We perform two passes over the arguments. In the first pass we infer from all arguments, but use // wildcards for all context sensitive function expressions. var argCount = getEffectiveArgumentCount(node, args, signature); for (var i = 0; i < argCount; i++) { var arg = getEffectiveArgument(node, args, i); // If the effective argument is 'undefined', then it is an argument that is present but is synthetic. - if (arg === undefined || arg.kind !== 191 /* OmittedExpression */) { + if (arg === undefined || arg.kind !== 192 /* OmittedExpression */) { var paramType = getTypeAtPosition(signature, i); var argType = getEffectiveArgumentType(node, i, arg); // If the effective argument type is 'undefined', there is no synthetic type @@ -23369,11 +24299,24 @@ var ts; return typeArgumentsAreAssignable; } function checkApplicableSignature(node, args, signature, relation, excludeArgument, reportErrors) { + if (signature.thisType && signature.thisType !== voidType && node.kind !== 174 /* NewExpression */) { + // If the called expression is not of the form `x.f` or `x["f"]`, then sourceType = voidType + // If the signature's 'this' type is voidType, then the check is skipped -- anything is compatible. + // If the expression is a new expression, then the check is skipped. + var thisArgumentNode = getThisArgumentOfCall(node); + var thisArgumentType = thisArgumentNode ? checkExpression(thisArgumentNode) : voidType; + var errorNode = reportErrors ? (thisArgumentNode || node) : undefined; + var headMessage_1 = ts.Diagnostics.The_this_context_of_type_0_is_not_assignable_to_method_s_this_of_type_1; + if (!checkTypeRelatedTo(thisArgumentType, signature.thisType, relation, errorNode, headMessage_1)) { + return false; + } + } + var headMessage = ts.Diagnostics.Argument_of_type_0_is_not_assignable_to_parameter_of_type_1; var argCount = getEffectiveArgumentCount(node, args, signature); for (var i = 0; i < argCount; i++) { var arg = getEffectiveArgument(node, args, i); // If the effective argument is 'undefined', then it is an argument that is present but is synthetic. - if (arg === undefined || arg.kind !== 191 /* OmittedExpression */) { + if (arg === undefined || arg.kind !== 192 /* OmittedExpression */) { // Check spread elements against rest type (from arity check we know spread argument corresponds to a rest parameter) var paramType = getTypeAtPosition(signature, i); var argType = getEffectiveArgumentType(node, i, arg); @@ -23386,7 +24329,6 @@ var ts; } // Use argument expression as error location when reporting errors var errorNode = reportErrors ? getEffectiveArgumentErrorNode(node, i, arg) : undefined; - var headMessage = ts.Diagnostics.Argument_of_type_0_is_not_assignable_to_parameter_of_type_1; if (!checkTypeRelatedTo(argType, paramType, relation, errorNode, headMessage)) { return false; } @@ -23394,6 +24336,20 @@ var ts; } return true; } + /** + * Returns the this argument in calls like x.f(...) and x[f](...). Undefined otherwise. + */ + function getThisArgumentOfCall(node) { + if (node.kind === 173 /* CallExpression */) { + var callee = node.expression; + if (callee.kind === 171 /* PropertyAccessExpression */) { + return callee.expression; + } + else if (callee.kind === 172 /* ElementAccessExpression */) { + return callee.expression; + } + } + } /** * Returns the effective arguments for an expression that works like a function invocation. * @@ -23405,16 +24361,16 @@ var ts; */ function getEffectiveCallArguments(node) { var args; - if (node.kind === 174 /* TaggedTemplateExpression */) { + if (node.kind === 175 /* TaggedTemplateExpression */) { var template = node.template; args = [undefined]; - if (template.kind === 187 /* TemplateExpression */) { + if (template.kind === 188 /* TemplateExpression */) { ts.forEach(template.templateSpans, function (span) { args.push(span.expression); }); } } - else if (node.kind === 141 /* Decorator */) { + else if (node.kind === 142 /* Decorator */) { // For a decorator, we return undefined as we will determine // the number and types of arguments for a decorator using // `getEffectiveArgumentCount` and `getEffectiveArgumentType` below. @@ -23439,19 +24395,19 @@ var ts; * Otherwise, the argument count is the length of the 'args' array. */ function getEffectiveArgumentCount(node, args, signature) { - if (node.kind === 141 /* Decorator */) { + if (node.kind === 142 /* Decorator */) { switch (node.parent.kind) { - case 218 /* ClassDeclaration */: - case 190 /* ClassExpression */: + case 220 /* ClassDeclaration */: + case 191 /* ClassExpression */: // A class decorator will have one argument (see `ClassDecorator` in core.d.ts) return 1; - case 143 /* PropertyDeclaration */: + case 144 /* PropertyDeclaration */: // A property declaration decorator will have two arguments (see // `PropertyDecorator` in core.d.ts) return 2; - case 145 /* MethodDeclaration */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: + case 146 /* MethodDeclaration */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: // A method or accessor declaration decorator will have two or three arguments (see // `PropertyDecorator` and `MethodDecorator` in core.d.ts) // If we are emitting decorators for ES3, we will only pass two arguments. @@ -23461,7 +24417,7 @@ var ts; // If the method decorator signature only accepts a target and a key, we will only // type check those arguments. return signature.parameters.length >= 3 ? 3 : 2; - case 140 /* Parameter */: + case 141 /* Parameter */: // A parameter declaration decorator will have three arguments (see // `ParameterDecorator` in core.d.ts) return 3; @@ -23485,25 +24441,25 @@ var ts; */ function getEffectiveDecoratorFirstArgumentType(node) { // The first argument to a decorator is its `target`. - if (node.kind === 218 /* ClassDeclaration */) { + if (node.kind === 220 /* ClassDeclaration */) { // For a class decorator, the `target` is the type of the class (e.g. the // "static" or "constructor" side of the class) var classSymbol = getSymbolOfNode(node); return getTypeOfSymbol(classSymbol); } - if (node.kind === 140 /* Parameter */) { + if (node.kind === 141 /* Parameter */) { // For a parameter decorator, the `target` is the parent type of the // parameter's containing method. node = node.parent; - if (node.kind === 146 /* Constructor */) { + if (node.kind === 147 /* Constructor */) { var classSymbol = getSymbolOfNode(node); return getTypeOfSymbol(classSymbol); } } - if (node.kind === 143 /* PropertyDeclaration */ || - node.kind === 145 /* MethodDeclaration */ || - node.kind === 147 /* GetAccessor */ || - node.kind === 148 /* SetAccessor */) { + if (node.kind === 144 /* PropertyDeclaration */ || + node.kind === 146 /* MethodDeclaration */ || + node.kind === 148 /* GetAccessor */ || + node.kind === 149 /* SetAccessor */) { // For a property or method decorator, the `target` is the // "static"-side type of the parent of the member if the member is // declared "static"; otherwise, it is the "instance"-side type of the @@ -23530,21 +24486,21 @@ var ts; */ function getEffectiveDecoratorSecondArgumentType(node) { // The second argument to a decorator is its `propertyKey` - if (node.kind === 218 /* ClassDeclaration */) { + if (node.kind === 220 /* ClassDeclaration */) { ts.Debug.fail("Class decorators should not have a second synthetic argument."); return unknownType; } - if (node.kind === 140 /* Parameter */) { + if (node.kind === 141 /* Parameter */) { node = node.parent; - if (node.kind === 146 /* Constructor */) { + if (node.kind === 147 /* Constructor */) { // For a constructor parameter decorator, the `propertyKey` will be `undefined`. return anyType; } } - if (node.kind === 143 /* PropertyDeclaration */ || - node.kind === 145 /* MethodDeclaration */ || - node.kind === 147 /* GetAccessor */ || - node.kind === 148 /* SetAccessor */) { + if (node.kind === 144 /* PropertyDeclaration */ || + node.kind === 146 /* MethodDeclaration */ || + node.kind === 148 /* GetAccessor */ || + node.kind === 149 /* SetAccessor */) { // The `propertyKey` for a property or method decorator will be a // string literal type if the member name is an identifier, number, or string; // otherwise, if the member name is a computed property name it will @@ -23555,7 +24511,7 @@ var ts; case 8 /* NumericLiteral */: case 9 /* StringLiteral */: return getStringLiteralTypeForText(element.name.text); - case 138 /* ComputedPropertyName */: + case 139 /* ComputedPropertyName */: var nameType = checkComputedPropertyName(element.name); if (isTypeOfKind(nameType, 16777216 /* ESSymbol */)) { return nameType; @@ -23581,21 +24537,21 @@ var ts; function getEffectiveDecoratorThirdArgumentType(node) { // The third argument to a decorator is either its `descriptor` for a method decorator // or its `parameterIndex` for a parameter decorator - if (node.kind === 218 /* ClassDeclaration */) { + if (node.kind === 220 /* ClassDeclaration */) { ts.Debug.fail("Class decorators should not have a third synthetic argument."); return unknownType; } - if (node.kind === 140 /* Parameter */) { + if (node.kind === 141 /* Parameter */) { // The `parameterIndex` for a parameter decorator is always a number return numberType; } - if (node.kind === 143 /* PropertyDeclaration */) { + if (node.kind === 144 /* PropertyDeclaration */) { ts.Debug.fail("Property decorators should not have a third synthetic argument."); return unknownType; } - if (node.kind === 145 /* MethodDeclaration */ || - node.kind === 147 /* GetAccessor */ || - node.kind === 148 /* SetAccessor */) { + if (node.kind === 146 /* MethodDeclaration */ || + node.kind === 148 /* GetAccessor */ || + node.kind === 149 /* SetAccessor */) { // The `descriptor` for a method decorator will be a `TypedPropertyDescriptor` // for the type of the member. var propertyType = getTypeOfNode(node); @@ -23627,11 +24583,11 @@ var ts; // Decorators provide special arguments, a tagged template expression provides // a special first argument, and string literals get string literal types // unless we're reporting errors - if (node.kind === 141 /* Decorator */) { + if (node.kind === 142 /* Decorator */) { return getEffectiveDecoratorArgumentType(node, argIndex); } - else if (argIndex === 0 && node.kind === 174 /* TaggedTemplateExpression */) { - return globalTemplateStringsArrayType; + else if (argIndex === 0 && node.kind === 175 /* TaggedTemplateExpression */) { + return getGlobalTemplateStringsArrayType(); } // This is not a synthetic argument, so we return 'undefined' // to signal that the caller needs to check the argument. @@ -23642,8 +24598,8 @@ var ts; */ function getEffectiveArgument(node, args, argIndex) { // For a decorator or the first argument of a tagged template expression we return undefined. - if (node.kind === 141 /* Decorator */ || - (argIndex === 0 && node.kind === 174 /* TaggedTemplateExpression */)) { + if (node.kind === 142 /* Decorator */ || + (argIndex === 0 && node.kind === 175 /* TaggedTemplateExpression */)) { return undefined; } return args[argIndex]; @@ -23652,11 +24608,11 @@ var ts; * Gets the error node to use when reporting errors for an effective argument. */ function getEffectiveArgumentErrorNode(node, argIndex, arg) { - if (node.kind === 141 /* Decorator */) { + if (node.kind === 142 /* Decorator */) { // For a decorator, we use the expression of the decorator for error reporting. return node.expression; } - else if (argIndex === 0 && node.kind === 174 /* TaggedTemplateExpression */) { + else if (argIndex === 0 && node.kind === 175 /* TaggedTemplateExpression */) { // For a the first argument of a tagged template expression, we use the template of the tag for error reporting. return node.template; } @@ -23665,8 +24621,8 @@ var ts; } } function resolveCall(node, signatures, candidatesOutArray, headMessage) { - var isTaggedTemplate = node.kind === 174 /* TaggedTemplateExpression */; - var isDecorator = node.kind === 141 /* Decorator */; + var isTaggedTemplate = node.kind === 175 /* TaggedTemplateExpression */; + var isDecorator = node.kind === 142 /* Decorator */; var typeArguments; if (!isTaggedTemplate && !isDecorator) { typeArguments = node.typeArguments; @@ -23892,7 +24848,7 @@ var ts; } return resolveUntypedCall(node); } - var funcType = checkExpression(node.expression); + var funcType = checkNonNullExpression(node.expression); var apparentType = getApparentType(funcType); if (apparentType === unknownType) { // Another error has already been reported @@ -23940,7 +24896,7 @@ var ts; error(node.arguments[spreadIndex], ts.Diagnostics.Spread_operator_in_new_expressions_is_only_available_when_targeting_ECMAScript_5_and_higher); } } - var expressionType = checkExpression(node.expression); + var expressionType = checkNonNullExpression(node.expression); // If expressionType's apparent type(section 3.8.1) is an object type with one or // more construct signatures, the expression is processed in the same manner as a // function call, but using the construct signatures as the initial set of candidate @@ -23983,13 +24939,16 @@ var ts; // If expressionType's apparent type is an object type with no construct signatures but // one or more call signatures, the expression is processed as a function call. A compile-time // error occurs if the result of the function call is not Void. The type of the result of the - // operation is Any. + // operation is Any. It is an error to have a Void this type. var callSignatures = getSignaturesOfType(expressionType, 0 /* Call */); if (callSignatures.length) { var signature = resolveCall(node, callSignatures, candidatesOutArray); if (getReturnTypeOfSignature(signature) !== voidType) { error(node, ts.Diagnostics.Only_a_void_function_can_be_called_with_the_new_keyword); } + if (signature.thisType === voidType) { + error(node, ts.Diagnostics.A_function_that_is_called_with_the_new_keyword_cannot_have_a_this_type_that_is_void); + } return signature; } error(node, ts.Diagnostics.Cannot_use_new_with_an_expression_whose_type_lacks_a_call_or_construct_signature); @@ -24041,16 +25000,16 @@ var ts; */ function getDiagnosticHeadMessageForDecoratorResolution(node) { switch (node.parent.kind) { - case 218 /* ClassDeclaration */: - case 190 /* ClassExpression */: + case 220 /* ClassDeclaration */: + case 191 /* ClassExpression */: return ts.Diagnostics.Unable_to_resolve_signature_of_class_decorator_when_called_as_an_expression; - case 140 /* Parameter */: + case 141 /* Parameter */: return ts.Diagnostics.Unable_to_resolve_signature_of_parameter_decorator_when_called_as_an_expression; - case 143 /* PropertyDeclaration */: + case 144 /* PropertyDeclaration */: return ts.Diagnostics.Unable_to_resolve_signature_of_property_decorator_when_called_as_an_expression; - case 145 /* MethodDeclaration */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: + case 146 /* MethodDeclaration */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: return ts.Diagnostics.Unable_to_resolve_signature_of_method_decorator_when_called_as_an_expression; } } @@ -24087,16 +25046,16 @@ var ts; // to correctly fill the candidatesOutArray. if (!links.resolvedSignature || candidatesOutArray) { links.resolvedSignature = anySignature; - if (node.kind === 172 /* CallExpression */) { + if (node.kind === 173 /* CallExpression */) { links.resolvedSignature = resolveCallExpression(node, candidatesOutArray); } - else if (node.kind === 173 /* NewExpression */) { + else if (node.kind === 174 /* NewExpression */) { links.resolvedSignature = resolveNewExpression(node, candidatesOutArray); } - else if (node.kind === 174 /* TaggedTemplateExpression */) { + else if (node.kind === 175 /* TaggedTemplateExpression */) { links.resolvedSignature = resolveTaggedTemplateExpression(node, candidatesOutArray); } - else if (node.kind === 141 /* Decorator */) { + else if (node.kind === 142 /* Decorator */) { links.resolvedSignature = resolveDecorator(node, candidatesOutArray); } else { @@ -24124,12 +25083,12 @@ var ts; if (node.expression.kind === 95 /* SuperKeyword */) { return voidType; } - if (node.kind === 173 /* NewExpression */) { + if (node.kind === 174 /* NewExpression */) { var declaration = signature.declaration; if (declaration && - declaration.kind !== 146 /* Constructor */ && - declaration.kind !== 150 /* ConstructSignature */ && - declaration.kind !== 155 /* ConstructorType */ && + declaration.kind !== 147 /* Constructor */ && + declaration.kind !== 151 /* ConstructSignature */ && + declaration.kind !== 156 /* ConstructorType */ && !ts.isJSDocConstructSignature(declaration)) { // When resolved signature is a call signature (and not a construct signature) the result type is any, unless // the declaring function had members created through 'x.prototype.y = expr' or 'this.y = expr' psuedodeclarations @@ -24158,19 +25117,29 @@ var ts; var targetType = getTypeFromTypeNode(node.type); if (produceDiagnostics && targetType !== unknownType) { var widenedType = getWidenedType(exprType); - // Permit 'number[] | "foo"' to be asserted to 'string'. - var bothAreStringLike = maybeTypeOfKind(targetType, 258 /* StringLike */) && - maybeTypeOfKind(widenedType, 258 /* StringLike */); - if (!bothAreStringLike && !(isTypeAssignableTo(targetType, widenedType))) { - checkTypeAssignableTo(exprType, targetType, node, ts.Diagnostics.Neither_type_0_nor_type_1_is_assignable_to_the_other); + if (!isTypeComparableTo(targetType, widenedType)) { + checkTypeComparableTo(exprType, targetType, node, ts.Diagnostics.Type_0_cannot_be_converted_to_type_1); } } return targetType; } + function checkNonNullAssertion(node) { + return getNonNullableType(checkExpression(node.expression)); + } + function getTypeOfParameter(symbol) { + var type = getTypeOfSymbol(symbol); + if (strictNullChecks) { + var declaration = symbol.valueDeclaration; + if (declaration && declaration.initializer) { + return addNullableKind(type, 32 /* Undefined */); + } + } + return type; + } function getTypeAtPosition(signature, pos) { return signature.hasRestParameter ? - pos < signature.parameters.length - 1 ? getTypeOfSymbol(signature.parameters[pos]) : getRestTypeOfSignature(signature) : - pos < signature.parameters.length ? getTypeOfSymbol(signature.parameters[pos]) : anyType; + pos < signature.parameters.length - 1 ? getTypeOfParameter(signature.parameters[pos]) : getRestTypeOfSignature(signature) : + pos < signature.parameters.length ? getTypeOfParameter(signature.parameters[pos]) : anyType; } function assignContextualParameterTypes(signature, context, mapper) { var len = signature.parameters.length - (signature.hasRestParameter ? 1 : 0); @@ -24191,7 +25160,7 @@ var ts; if (ts.isBindingPattern(node.name)) { for (var _i = 0, _a = node.name.elements; _i < _a.length; _i++) { var element = _a[_i]; - if (element.kind !== 191 /* OmittedExpression */) { + if (element.kind !== 192 /* OmittedExpression */) { if (element.name.kind === 69 /* Identifier */) { getSymbolLinks(getSymbolOfNode(element)).type = getTypeForBindingElement(element); } @@ -24263,7 +25232,7 @@ var ts; } var isAsync = ts.isAsyncFunctionLike(func); var type; - if (func.body.kind !== 196 /* Block */) { + if (func.body.kind !== 198 /* Block */) { type = checkExpressionCached(func.body, contextualMapper); if (isAsync) { // From within an async function you can return either a non-promise value or a promise. Any @@ -24287,7 +25256,8 @@ var ts; } } else { - types = checkAndAggregateReturnExpressionTypes(func.body, contextualMapper, isAsync); + var hasImplicitReturn = !!(func.flags & 32768 /* HasImplicitReturn */); + types = checkAndAggregateReturnExpressionTypes(func.body, contextualMapper, isAsync, hasImplicitReturn); if (types.length === 0) { if (isAsync) { // For an async function, the return type will not be void, but rather a Promise for void. @@ -24357,8 +25327,9 @@ var ts; }); return aggregatedTypes; } - function checkAndAggregateReturnExpressionTypes(body, contextualMapper, isAsync) { + function checkAndAggregateReturnExpressionTypes(body, contextualMapper, isAsync, hasImplicitReturn) { var aggregatedTypes = []; + var hasOmittedExpressions = false; ts.forEachReturnStatement(body, function (returnStatement) { var expr = returnStatement.expression; if (expr) { @@ -24374,7 +25345,15 @@ var ts; aggregatedTypes.push(type); } } + else { + hasOmittedExpressions = true; + } }); + if (strictNullChecks && aggregatedTypes.length && (hasOmittedExpressions || hasImplicitReturn)) { + if (!ts.contains(aggregatedTypes, undefinedType)) { + aggregatedTypes.push(undefinedType); + } + } return aggregatedTypes; } /** @@ -24396,7 +25375,7 @@ var ts; } // If all we have is a function signature, or an arrow function with an expression body, then there is nothing to check. // also if HasImplicitReturn flag is not set this means that all codepaths in function body end with return or throw - if (ts.nodeIsMissing(func.body) || func.body.kind !== 196 /* Block */ || !(func.flags & 32768 /* HasImplicitReturn */)) { + if (ts.nodeIsMissing(func.body) || func.body.kind !== 198 /* Block */ || !(func.flags & 32768 /* HasImplicitReturn */)) { return; } var hasExplicitReturn = func.flags & 65536 /* HasExplicitReturn */; @@ -24406,15 +25385,19 @@ var ts; // NOTE: having returnType !== undefined is a precondition for entering this branch so func.type will always be present error(func.type, ts.Diagnostics.A_function_whose_declared_type_is_neither_void_nor_any_must_return_a_value); } + else if (returnType && strictNullChecks && !isTypeAssignableTo(undefinedType, returnType)) { + error(func.type, ts.Diagnostics.Function_lacks_ending_return_statement_and_return_type_does_not_include_undefined); + } else if (compilerOptions.noImplicitReturns) { if (!returnType) { // If return type annotation is omitted check if function has any explicit return statements. // If it does not have any - its inferred return type is void - don't do any checks. // Otherwise get inferred return type from function body and report error only if it is not void / anytype - var inferredReturnType = hasExplicitReturn - ? getReturnTypeOfSignature(getSignatureFromDeclaration(func)) - : voidType; - if (inferredReturnType === voidType || isTypeAny(inferredReturnType)) { + if (!hasExplicitReturn) { + return; + } + var inferredReturnType = getReturnTypeOfSignature(getSignatureFromDeclaration(func)); + if (isUnwrappedReturnTypeVoidOrAny(func, inferredReturnType)) { return; } } @@ -24422,14 +25405,15 @@ var ts; } } function checkFunctionExpressionOrObjectLiteralMethod(node, contextualMapper) { - ts.Debug.assert(node.kind !== 145 /* MethodDeclaration */ || ts.isObjectLiteralMethod(node)); + ts.Debug.assert(node.kind !== 146 /* MethodDeclaration */ || ts.isObjectLiteralMethod(node)); // Grammar checking var hasGrammarError = checkGrammarFunctionLikeDeclaration(node); - if (!hasGrammarError && node.kind === 177 /* FunctionExpression */) { + if (!hasGrammarError && node.kind === 178 /* FunctionExpression */) { checkGrammarForGenerator(node); } // The identityMapper object is used to indicate that function expressions are wildcards if (contextualMapper === identityMapper && isContextSensitive(node)) { + checkNodeDeferred(node); return anyFunctionType; } var links = getNodeLinks(node); @@ -24465,14 +25449,14 @@ var ts; } } } - if (produceDiagnostics && node.kind !== 145 /* MethodDeclaration */ && node.kind !== 144 /* MethodSignature */) { + if (produceDiagnostics && node.kind !== 146 /* MethodDeclaration */ && node.kind !== 145 /* MethodSignature */) { checkCollisionWithCapturedSuperVariable(node, node.name); checkCollisionWithCapturedThisVariable(node, node.name); } return type; } function checkFunctionExpressionOrObjectLiteralMethodDeferred(node) { - ts.Debug.assert(node.kind !== 145 /* MethodDeclaration */ || ts.isObjectLiteralMethod(node)); + ts.Debug.assert(node.kind !== 146 /* MethodDeclaration */ || ts.isObjectLiteralMethod(node)); var isAsync = ts.isAsyncFunctionLike(node); var returnOrPromisedType = node.type && (isAsync ? checkAsyncFunctionReturnType(node) : getTypeFromTypeNode(node.type)); if (!node.asteriskToken) { @@ -24488,7 +25472,7 @@ var ts; // checkFunctionExpressionBodies). So it must be done now. getReturnTypeOfSignature(getSignatureFromDeclaration(node)); } - if (node.body.kind === 196 /* Block */) { + if (node.body.kind === 198 /* Block */) { checkSourceElement(node.body); } else { @@ -24532,23 +25516,23 @@ var ts; if (isReadonlySymbol(symbol)) { // Allow assignments to readonly properties within constructors of the same class declaration. if (symbol.flags & 4 /* Property */ && - (expr.kind === 170 /* PropertyAccessExpression */ || expr.kind === 171 /* ElementAccessExpression */) && + (expr.kind === 171 /* PropertyAccessExpression */ || expr.kind === 172 /* ElementAccessExpression */) && expr.expression.kind === 97 /* ThisKeyword */) { var func = ts.getContainingFunction(expr); - return !(func && func.kind === 146 /* Constructor */ && func.parent === symbol.valueDeclaration.parent); + return !(func && func.kind === 147 /* Constructor */ && func.parent === symbol.valueDeclaration.parent); } return true; } return false; } function isReferenceThroughNamespaceImport(expr) { - if (expr.kind === 170 /* PropertyAccessExpression */ || expr.kind === 171 /* ElementAccessExpression */) { + if (expr.kind === 171 /* PropertyAccessExpression */ || expr.kind === 172 /* ElementAccessExpression */) { var node = skipParenthesizedNodes(expr.expression); if (node.kind === 69 /* Identifier */) { var symbol = getNodeLinks(node).resolvedSymbol; if (symbol.flags & 8388608 /* Alias */) { var declaration = getDeclarationOfAliasSymbol(symbol); - return declaration && declaration.kind === 228 /* NamespaceImport */; + return declaration && declaration.kind === 231 /* NamespaceImport */; } } } @@ -24557,7 +25541,7 @@ var ts; function checkReferenceExpression(expr, invalidReferenceMessage, constantVariableMessage) { // References are combinations of identifiers, parentheses, and property accesses. var node = skipParenthesizedNodes(expr); - if (node.kind !== 69 /* Identifier */ && node.kind !== 170 /* PropertyAccessExpression */ && node.kind !== 171 /* ElementAccessExpression */) { + if (node.kind !== 69 /* Identifier */ && node.kind !== 171 /* PropertyAccessExpression */ && node.kind !== 172 /* ElementAccessExpression */) { error(expr, invalidReferenceMessage); return false; } @@ -24580,7 +25564,7 @@ var ts; } } } - else if (node.kind === 171 /* ElementAccessExpression */) { + else if (node.kind === 172 /* ElementAccessExpression */) { if (links.resolvedIndexInfo && links.resolvedIndexInfo.isReadonly) { error(expr, constantVariableMessage); return false; @@ -24627,7 +25611,7 @@ var ts; return booleanType; case 41 /* PlusPlusToken */: case 42 /* MinusMinusToken */: - var ok = checkArithmeticOperandType(node.operand, operandType, ts.Diagnostics.An_arithmetic_operand_must_be_of_type_any_number_or_an_enum_type); + var ok = checkArithmeticOperandType(node.operand, getNonNullableType(operandType), ts.Diagnostics.An_arithmetic_operand_must_be_of_type_any_number_or_an_enum_type); if (ok) { // run check only if former checks succeeded to avoid reporting cascading errors checkReferenceExpression(node.operand, ts.Diagnostics.The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_property_or_indexer, ts.Diagnostics.The_operand_of_an_increment_or_decrement_operator_cannot_be_a_constant_or_a_read_only_property); @@ -24638,7 +25622,7 @@ var ts; } function checkPostfixUnaryExpression(node) { var operandType = checkExpression(node.operand); - var ok = checkArithmeticOperandType(node.operand, operandType, ts.Diagnostics.An_arithmetic_operand_must_be_of_type_any_number_or_an_enum_type); + var ok = checkArithmeticOperandType(node.operand, getNonNullableType(operandType), ts.Diagnostics.An_arithmetic_operand_must_be_of_type_any_number_or_an_enum_type); if (ok) { // run check only if former checks succeeded to avoid reporting cascading errors checkReferenceExpression(node.operand, ts.Diagnostics.The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_property_or_indexer, ts.Diagnostics.The_operand_of_an_increment_or_decrement_operator_cannot_be_a_constant_or_a_read_only_property); @@ -24728,22 +25712,22 @@ var ts; var properties = node.properties; for (var _i = 0, properties_3 = properties; _i < properties_3.length; _i++) { var p = properties_3[_i]; - if (p.kind === 249 /* PropertyAssignment */ || p.kind === 250 /* ShorthandPropertyAssignment */) { - var name_12 = p.name; - if (name_12.kind === 138 /* ComputedPropertyName */) { - checkComputedPropertyName(name_12); + if (p.kind === 252 /* PropertyAssignment */ || p.kind === 253 /* ShorthandPropertyAssignment */) { + var name_13 = p.name; + if (name_13.kind === 139 /* ComputedPropertyName */) { + checkComputedPropertyName(name_13); } - if (isComputedNonLiteralName(name_12)) { + if (isComputedNonLiteralName(name_13)) { continue; } - var text = getTextOfPropertyName(name_12); + var text = getTextOfPropertyName(name_13); var type = isTypeAny(sourceType) ? sourceType : getTypeOfPropertyOfType(sourceType, text) || isNumericLiteralName(text) && getIndexTypeOfType(sourceType, 1 /* Number */) || getIndexTypeOfType(sourceType, 0 /* String */); if (type) { - if (p.kind === 250 /* ShorthandPropertyAssignment */) { + if (p.kind === 253 /* ShorthandPropertyAssignment */) { checkDestructuringAssignment(p, type); } else { @@ -24752,7 +25736,7 @@ var ts; } } else { - error(name_12, ts.Diagnostics.Type_0_has_no_property_1_and_no_string_index_signature, typeToString(sourceType), ts.declarationNameToString(name_12)); + error(name_13, ts.Diagnostics.Type_0_has_no_property_1_and_no_string_index_signature, typeToString(sourceType), ts.declarationNameToString(name_13)); } } else { @@ -24769,8 +25753,8 @@ var ts; var elements = node.elements; for (var i = 0; i < elements.length; i++) { var e = elements[i]; - if (e.kind !== 191 /* OmittedExpression */) { - if (e.kind !== 189 /* SpreadElementExpression */) { + if (e.kind !== 192 /* OmittedExpression */) { + if (e.kind !== 190 /* SpreadElementExpression */) { var propName = "" + i; var type = isTypeAny(sourceType) ? sourceType @@ -24795,7 +25779,7 @@ var ts; } else { var restExpression = e.expression; - if (restExpression.kind === 185 /* BinaryExpression */ && restExpression.operatorToken.kind === 56 /* EqualsToken */) { + if (restExpression.kind === 186 /* BinaryExpression */ && restExpression.operatorToken.kind === 56 /* EqualsToken */) { error(restExpression.operatorToken, ts.Diagnostics.A_rest_element_cannot_have_an_initializer); } else { @@ -24809,7 +25793,7 @@ var ts; } function checkDestructuringAssignment(exprOrAssignment, sourceType, contextualMapper) { var target; - if (exprOrAssignment.kind === 250 /* ShorthandPropertyAssignment */) { + if (exprOrAssignment.kind === 253 /* ShorthandPropertyAssignment */) { var prop = exprOrAssignment; if (prop.objectAssignmentInitializer) { checkBinaryLikeExpression(prop.name, prop.equalsToken, prop.objectAssignmentInitializer, contextualMapper); @@ -24819,14 +25803,14 @@ var ts; else { target = exprOrAssignment; } - if (target.kind === 185 /* BinaryExpression */ && target.operatorToken.kind === 56 /* EqualsToken */) { + if (target.kind === 186 /* BinaryExpression */ && target.operatorToken.kind === 56 /* EqualsToken */) { checkBinaryExpression(target, contextualMapper); target = target.left; } - if (target.kind === 169 /* ObjectLiteralExpression */) { + if (target.kind === 170 /* ObjectLiteralExpression */) { return checkObjectLiteralAssignment(target, sourceType, contextualMapper); } - if (target.kind === 168 /* ArrayLiteralExpression */) { + if (target.kind === 169 /* ArrayLiteralExpression */) { return checkArrayLiteralAssignment(target, sourceType, contextualMapper); } return checkReferenceAssignment(target, sourceType, contextualMapper); @@ -24843,7 +25827,7 @@ var ts; } function checkBinaryLikeExpression(left, operatorToken, right, contextualMapper, errorNode) { var operator = operatorToken.kind; - if (operator === 56 /* EqualsToken */ && (left.kind === 169 /* ObjectLiteralExpression */ || left.kind === 168 /* ArrayLiteralExpression */)) { + if (operator === 56 /* EqualsToken */ && (left.kind === 170 /* ObjectLiteralExpression */ || left.kind === 169 /* ArrayLiteralExpression */)) { return checkDestructuringAssignment(left, checkExpression(right, contextualMapper), contextualMapper); } var leftType = checkExpression(left, contextualMapper); @@ -24877,10 +25861,12 @@ var ts; // as having the primitive type Number. If one operand is the null or undefined value, // it is treated as having the type of the other operand. // The result is always of the Number primitive type. - if (leftType.flags & (32 /* Undefined */ | 64 /* Null */)) + if (leftType.flags & 96 /* Nullable */) leftType = rightType; - if (rightType.flags & (32 /* Undefined */ | 64 /* Null */)) + if (rightType.flags & 96 /* Nullable */) rightType = leftType; + leftType = getNonNullableType(leftType); + rightType = getNonNullableType(rightType); var suggestedOperator = void 0; // if a user tries to apply a bitwise operator to 2 boolean operands // try and return them a helpful suggestion @@ -24904,10 +25890,12 @@ var ts; // The binary + operator requires both operands to be of the Number primitive type or an enum type, // or at least one of the operands to be of type Any or the String primitive type. // If one operand is the null or undefined value, it is treated as having the type of the other operand. - if (leftType.flags & (32 /* Undefined */ | 64 /* Null */)) + if (leftType.flags & 96 /* Nullable */) leftType = rightType; - if (rightType.flags & (32 /* Undefined */ | 64 /* Null */)) + if (rightType.flags & 96 /* Nullable */) rightType = leftType; + leftType = getNonNullableType(leftType); + rightType = getNonNullableType(rightType); var resultType = void 0; if (isTypeOfKind(leftType, 132 /* NumberLike */) && isTypeOfKind(rightType, 132 /* NumberLike */)) { // Operands of an enum type are treated as having the primitive type Number. @@ -24949,11 +25937,7 @@ var ts; case 31 /* ExclamationEqualsToken */: case 32 /* EqualsEqualsEqualsToken */: case 33 /* ExclamationEqualsEqualsToken */: - // Permit 'number[] | "foo"' to be asserted to 'string'. - if (maybeTypeOfKind(leftType, 258 /* StringLike */) && maybeTypeOfKind(rightType, 258 /* StringLike */)) { - return booleanType; - } - if (!isTypeAssignableTo(leftType, rightType) && !isTypeAssignableTo(rightType, leftType)) { + if (!isTypeComparableTo(leftType, rightType) && !isTypeComparableTo(rightType, leftType)) { reportOperatorError(); } return booleanType; @@ -24962,9 +25946,9 @@ var ts; case 90 /* InKeyword */: return checkInExpression(left, right, leftType, rightType); case 51 /* AmpersandAmpersandToken */: - return rightType; + return addNullableKind(rightType, getNullableKind(leftType)); case 52 /* BarBarToken */: - return getUnionType([leftType, rightType]); + return getUnionType([getNonNullableType(leftType), rightType]); case 56 /* EqualsToken */: checkAssignmentOperator(rightType); return getRegularTypeOfObjectLiteral(rightType); @@ -25112,7 +26096,7 @@ var ts; // Do not use hasDynamicName here, because that returns false for well known symbols. // We want to perform checkComputedPropertyName for all computed properties, including // well known symbols. - if (node.name.kind === 138 /* ComputedPropertyName */) { + if (node.name.kind === 139 /* ComputedPropertyName */) { checkComputedPropertyName(node.name); } return checkExpression(node.initializer, contextualMapper); @@ -25123,7 +26107,7 @@ var ts; // Do not use hasDynamicName here, because that returns false for well known symbols. // We want to perform checkComputedPropertyName for all computed properties, including // well known symbols. - if (node.name.kind === 138 /* ComputedPropertyName */) { + if (node.name.kind === 139 /* ComputedPropertyName */) { checkComputedPropertyName(node.name); } var uninstantiatedType = checkFunctionExpressionOrObjectLiteralMethod(node, contextualMapper); @@ -25153,7 +26137,7 @@ var ts; // contextually typed function and arrow expressions in the initial phase. function checkExpression(node, contextualMapper) { var type; - if (node.kind === 137 /* QualifiedName */) { + if (node.kind === 138 /* QualifiedName */) { type = checkQualifiedName(node); } else { @@ -25165,9 +26149,9 @@ var ts; // - 'left' in property access // - 'object' in indexed access // - target in rhs of import statement - var ok = (node.parent.kind === 170 /* PropertyAccessExpression */ && node.parent.expression === node) || - (node.parent.kind === 171 /* ElementAccessExpression */ && node.parent.expression === node) || - ((node.kind === 69 /* Identifier */ || node.kind === 137 /* QualifiedName */) && isInRightSideOfImportOrExportAssignment(node)); + var ok = (node.parent.kind === 171 /* PropertyAccessExpression */ && node.parent.expression === node) || + (node.parent.kind === 172 /* ElementAccessExpression */ && node.parent.expression === node) || + ((node.kind === 69 /* Identifier */ || node.kind === 138 /* QualifiedName */) && isInRightSideOfImportOrExportAssignment(node)); if (!ok) { error(node, ts.Diagnostics.const_enums_can_only_be_used_in_property_or_index_access_expressions_or_the_right_hand_side_of_an_import_declaration_or_export_assignment); } @@ -25194,7 +26178,7 @@ var ts; return booleanType; case 8 /* NumericLiteral */: return checkNumericLiteral(node); - case 187 /* TemplateExpression */: + case 188 /* TemplateExpression */: return checkTemplateExpression(node); case 9 /* StringLiteral */: return checkStringLiteralExpression(node); @@ -25202,58 +26186,60 @@ var ts; return stringType; case 10 /* RegularExpressionLiteral */: return globalRegExpType; - case 168 /* ArrayLiteralExpression */: + case 169 /* ArrayLiteralExpression */: return checkArrayLiteral(node, contextualMapper); - case 169 /* ObjectLiteralExpression */: + case 170 /* ObjectLiteralExpression */: return checkObjectLiteral(node, contextualMapper); - case 170 /* PropertyAccessExpression */: + case 171 /* PropertyAccessExpression */: return checkPropertyAccessExpression(node); - case 171 /* ElementAccessExpression */: + case 172 /* ElementAccessExpression */: return checkIndexedAccess(node); - case 172 /* CallExpression */: - case 173 /* NewExpression */: + case 173 /* CallExpression */: + case 174 /* NewExpression */: return checkCallExpression(node); - case 174 /* TaggedTemplateExpression */: + case 175 /* TaggedTemplateExpression */: return checkTaggedTemplateExpression(node); - case 176 /* ParenthesizedExpression */: + case 177 /* ParenthesizedExpression */: return checkExpression(node.expression, contextualMapper); - case 190 /* ClassExpression */: + case 191 /* ClassExpression */: return checkClassExpression(node); - case 177 /* FunctionExpression */: - case 178 /* ArrowFunction */: + case 178 /* FunctionExpression */: + case 179 /* ArrowFunction */: return checkFunctionExpressionOrObjectLiteralMethod(node, contextualMapper); - case 180 /* TypeOfExpression */: + case 181 /* TypeOfExpression */: return checkTypeOfExpression(node); - case 175 /* TypeAssertionExpression */: - case 193 /* AsExpression */: + case 176 /* TypeAssertionExpression */: + case 194 /* AsExpression */: return checkAssertion(node); - case 179 /* DeleteExpression */: + case 195 /* NonNullExpression */: + return checkNonNullAssertion(node); + case 180 /* DeleteExpression */: return checkDeleteExpression(node); - case 181 /* VoidExpression */: + case 182 /* VoidExpression */: return checkVoidExpression(node); - case 182 /* AwaitExpression */: + case 183 /* AwaitExpression */: return checkAwaitExpression(node); - case 183 /* PrefixUnaryExpression */: + case 184 /* PrefixUnaryExpression */: return checkPrefixUnaryExpression(node); - case 184 /* PostfixUnaryExpression */: + case 185 /* PostfixUnaryExpression */: return checkPostfixUnaryExpression(node); - case 185 /* BinaryExpression */: + case 186 /* BinaryExpression */: return checkBinaryExpression(node, contextualMapper); - case 186 /* ConditionalExpression */: + case 187 /* ConditionalExpression */: return checkConditionalExpression(node, contextualMapper); - case 189 /* SpreadElementExpression */: + case 190 /* SpreadElementExpression */: return checkSpreadElementExpression(node, contextualMapper); - case 191 /* OmittedExpression */: + case 192 /* OmittedExpression */: return undefinedType; - case 188 /* YieldExpression */: + case 189 /* YieldExpression */: return checkYieldExpression(node); - case 244 /* JsxExpression */: + case 247 /* JsxExpression */: return checkJsxExpression(node); - case 237 /* JsxElement */: + case 240 /* JsxElement */: return checkJsxElement(node); - case 238 /* JsxSelfClosingElement */: + case 241 /* JsxSelfClosingElement */: return checkJsxSelfClosingElement(node); - case 239 /* JsxOpeningElement */: + case 242 /* JsxOpeningElement */: ts.Debug.fail("Shouldn't ever directly check a JsxOpeningElement"); } return unknownType; @@ -25281,13 +26267,24 @@ var ts; var func = ts.getContainingFunction(node); if (node.flags & 28 /* AccessibilityModifier */) { func = ts.getContainingFunction(node); - if (!(func.kind === 146 /* Constructor */ && ts.nodeIsPresent(func.body))) { + if (!(func.kind === 147 /* Constructor */ && ts.nodeIsPresent(func.body))) { error(node, ts.Diagnostics.A_parameter_property_is_only_allowed_in_a_constructor_implementation); } } if (node.questionToken && ts.isBindingPattern(node.name) && func.body) { error(node, ts.Diagnostics.A_binding_pattern_parameter_cannot_be_optional_in_an_implementation_signature); } + if (node.name.text === "this") { + if (ts.indexOf(func.parameters, node) !== 0) { + error(node, ts.Diagnostics.A_this_parameter_must_be_the_first_parameter); + } + if (func.kind === 147 /* Constructor */ || func.kind === 151 /* ConstructSignature */ || func.kind === 156 /* ConstructorType */) { + error(node, ts.Diagnostics.A_constructor_cannot_have_a_this_parameter); + } + if (func.kind === 149 /* SetAccessor */) { + error(node, ts.Diagnostics.A_setter_cannot_have_a_this_parameter); + } + } // Only check rest parameter type if it's not a binding pattern. Since binding patterns are // not allowed in a rest parameter, we already have an error from checkGrammarParameterList. if (node.dotDotDotToken && !ts.isBindingPattern(node.name) && !isArrayType(getTypeOfSymbol(node.symbol))) { @@ -25298,9 +26295,9 @@ var ts; if (!node.asteriskToken || !node.body) { return false; } - return node.kind === 145 /* MethodDeclaration */ || - node.kind === 217 /* FunctionDeclaration */ || - node.kind === 177 /* FunctionExpression */; + return node.kind === 146 /* MethodDeclaration */ || + node.kind === 219 /* FunctionDeclaration */ || + node.kind === 178 /* FunctionExpression */; } function getTypePredicateParameterIndex(parameterList, parameter) { if (parameterList) { @@ -25335,15 +26332,17 @@ var ts; error(parameterName, ts.Diagnostics.A_type_predicate_cannot_reference_a_rest_parameter); } else { - checkTypeAssignableTo(typePredicate.type, getTypeOfNode(parent.parameters[typePredicate.parameterIndex]), node.type); + var leadingError = ts.chainDiagnosticMessages(undefined, ts.Diagnostics.A_type_predicate_s_type_must_be_assignable_to_its_parameter_s_type); + checkTypeAssignableTo(typePredicate.type, getTypeOfNode(parent.parameters[typePredicate.parameterIndex]), node.type, + /*headMessage*/ undefined, leadingError); } } else if (parameterName) { var hasReportedError = false; for (var _i = 0, _a = parent.parameters; _i < _a.length; _i++) { - var name_13 = _a[_i].name; - if (ts.isBindingPattern(name_13) && - checkIfTypePredicateVariableIsDeclaredInBindingPattern(name_13, parameterName, typePredicate.parameterName)) { + var name_14 = _a[_i].name; + if (ts.isBindingPattern(name_14) && + checkIfTypePredicateVariableIsDeclaredInBindingPattern(name_14, parameterName, typePredicate.parameterName)) { hasReportedError = true; break; } @@ -25356,30 +26355,30 @@ var ts; } function getTypePredicateParent(node) { switch (node.parent.kind) { - case 178 /* ArrowFunction */: - case 149 /* CallSignature */: - case 217 /* FunctionDeclaration */: - case 177 /* FunctionExpression */: - case 154 /* FunctionType */: - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: - var parent_7 = node.parent; - if (node === parent_7.type) { - return parent_7; + case 179 /* ArrowFunction */: + case 150 /* CallSignature */: + case 219 /* FunctionDeclaration */: + case 178 /* FunctionExpression */: + case 155 /* FunctionType */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: + var parent_8 = node.parent; + if (node === parent_8.type) { + return parent_8; } } } function checkIfTypePredicateVariableIsDeclaredInBindingPattern(pattern, predicateVariableNode, predicateVariableName) { for (var _i = 0, _a = pattern.elements; _i < _a.length; _i++) { - var name_14 = _a[_i].name; - if (name_14.kind === 69 /* Identifier */ && - name_14.text === predicateVariableName) { + var name_15 = _a[_i].name; + if (name_15.kind === 69 /* Identifier */ && + name_15.text === predicateVariableName) { error(predicateVariableNode, ts.Diagnostics.A_type_predicate_cannot_reference_element_0_in_a_binding_pattern, predicateVariableName); return true; } - else if (name_14.kind === 166 /* ArrayBindingPattern */ || - name_14.kind === 165 /* ObjectBindingPattern */) { - if (checkIfTypePredicateVariableIsDeclaredInBindingPattern(name_14, predicateVariableNode, predicateVariableName)) { + else if (name_15.kind === 167 /* ArrayBindingPattern */ || + name_15.kind === 166 /* ObjectBindingPattern */) { + if (checkIfTypePredicateVariableIsDeclaredInBindingPattern(name_15, predicateVariableNode, predicateVariableName)) { return true; } } @@ -25387,12 +26386,12 @@ var ts; } function checkSignatureDeclaration(node) { // Grammar checking - if (node.kind === 151 /* IndexSignature */) { + if (node.kind === 152 /* IndexSignature */) { checkGrammarIndexSignature(node); } - else if (node.kind === 154 /* FunctionType */ || node.kind === 217 /* FunctionDeclaration */ || node.kind === 155 /* ConstructorType */ || - node.kind === 149 /* CallSignature */ || node.kind === 146 /* Constructor */ || - node.kind === 150 /* ConstructSignature */) { + else if (node.kind === 155 /* FunctionType */ || node.kind === 219 /* FunctionDeclaration */ || node.kind === 156 /* ConstructorType */ || + node.kind === 150 /* CallSignature */ || node.kind === 147 /* Constructor */ || + node.kind === 151 /* ConstructSignature */) { checkGrammarFunctionLikeDeclaration(node); } checkTypeParameters(node.typeParameters); @@ -25404,10 +26403,10 @@ var ts; checkCollisionWithArgumentsInGeneratedCode(node); if (compilerOptions.noImplicitAny && !node.type) { switch (node.kind) { - case 150 /* ConstructSignature */: + case 151 /* ConstructSignature */: error(node, ts.Diagnostics.Construct_signature_which_lacks_return_type_annotation_implicitly_has_an_any_return_type); break; - case 149 /* CallSignature */: + case 150 /* CallSignature */: error(node, ts.Diagnostics.Call_signature_which_lacks_return_type_annotation_implicitly_has_an_any_return_type); break; } @@ -25437,7 +26436,7 @@ var ts; } } function checkTypeForDuplicateIndexSignatures(node) { - if (node.kind === 219 /* InterfaceDeclaration */) { + if (node.kind === 221 /* InterfaceDeclaration */) { var nodeSymbol = getSymbolOfNode(node); // in case of merging interface declaration it is possible that we'll enter this check procedure several times for every declaration // to prevent this run check only for the first declaration of a given kind @@ -25532,12 +26531,12 @@ var ts; if (n.kind === 97 /* ThisKeyword */) { error(n, ts.Diagnostics.this_cannot_be_referenced_in_current_location); } - else if (n.kind !== 177 /* FunctionExpression */ && n.kind !== 217 /* FunctionDeclaration */) { + else if (n.kind !== 178 /* FunctionExpression */ && n.kind !== 219 /* FunctionDeclaration */) { ts.forEachChild(n, markThisReferencesAsErrors); } } function isInstancePropertyWithInitializer(n) { - return n.kind === 143 /* PropertyDeclaration */ && + return n.kind === 144 /* PropertyDeclaration */ && !(n.flags & 32 /* Static */) && !!n.initializer; } @@ -25566,7 +26565,7 @@ var ts; var superCallStatement = void 0; for (var _i = 0, statements_2 = statements; _i < statements_2.length; _i++) { var statement = statements_2[_i]; - if (statement.kind === 199 /* ExpressionStatement */ && ts.isSuperCallExpression(statement.expression)) { + if (statement.kind === 201 /* ExpressionStatement */ && ts.isSuperCallExpression(statement.expression)) { superCallStatement = statement; break; } @@ -25590,7 +26589,7 @@ var ts; checkGrammarFunctionLikeDeclaration(node) || checkGrammarAccessor(node) || checkGrammarComputedPropertyName(node.name); checkDecorators(node); checkSignatureDeclaration(node); - if (node.kind === 147 /* GetAccessor */) { + if (node.kind === 148 /* GetAccessor */) { if (!ts.isInAmbientContext(node) && ts.nodeIsPresent(node.body) && (node.flags & 32768 /* HasImplicitReturn */)) { if (node.flags & 65536 /* HasExplicitReturn */) { if (compilerOptions.noImplicitReturns) { @@ -25605,13 +26604,13 @@ var ts; // Do not use hasDynamicName here, because that returns false for well known symbols. // We want to perform checkComputedPropertyName for all computed properties, including // well known symbols. - if (node.name.kind === 138 /* ComputedPropertyName */) { + if (node.name.kind === 139 /* ComputedPropertyName */) { checkComputedPropertyName(node.name); } if (!ts.hasDynamicName(node)) { // TypeScript 1.0 spec (April 2014): 8.4.3 // Accessors for the same member name must specify the same accessibility. - var otherKind = node.kind === 147 /* GetAccessor */ ? 148 /* SetAccessor */ : 147 /* GetAccessor */; + var otherKind = node.kind === 148 /* GetAccessor */ ? 149 /* SetAccessor */ : 148 /* GetAccessor */; var otherAccessor = ts.getDeclarationOfKind(node.symbol, otherKind); if (otherAccessor) { if (((node.flags & 28 /* AccessibilityModifier */) !== (otherAccessor.flags & 28 /* AccessibilityModifier */))) { @@ -25633,7 +26632,7 @@ var ts; } getTypeOfAccessors(getSymbolOfNode(node)); } - if (node.parent.kind !== 169 /* ObjectLiteralExpression */) { + if (node.parent.kind !== 170 /* ObjectLiteralExpression */) { checkSourceElement(node.body); } else { @@ -25708,9 +26707,9 @@ var ts; var flags = ts.getCombinedNodeFlags(n); // children of classes (even ambient classes) should not be marked as ambient or export // because those flags have no useful semantics there. - if (n.parent.kind !== 219 /* InterfaceDeclaration */ && - n.parent.kind !== 218 /* ClassDeclaration */ && - n.parent.kind !== 190 /* ClassExpression */ && + if (n.parent.kind !== 221 /* InterfaceDeclaration */ && + n.parent.kind !== 220 /* ClassDeclaration */ && + n.parent.kind !== 191 /* ClassExpression */ && ts.isInAmbientContext(n)) { if (!(flags & 2 /* Ambient */)) { // It is nested in an ambient context, which means it is automatically exported @@ -25798,7 +26797,7 @@ var ts; var errorNode_1 = subsequentNode.name || subsequentNode; // TODO(jfreeman): These are methods, so handle computed name case if (node.name && subsequentNode.name && node.name.text === subsequentNode.name.text) { - var reportError = (node.kind === 145 /* MethodDeclaration */ || node.kind === 144 /* MethodSignature */) && + var reportError = (node.kind === 146 /* MethodDeclaration */ || node.kind === 145 /* MethodSignature */) && (node.flags & 32 /* Static */) !== (subsequentNode.flags & 32 /* Static */); // we can get here in two cases // 1. mixed static and instance class members @@ -25840,7 +26839,7 @@ var ts; var current = declarations_4[_i]; var node = current; var inAmbientContext = ts.isInAmbientContext(node); - var inAmbientContextOrInterface = node.parent.kind === 219 /* InterfaceDeclaration */ || node.parent.kind === 157 /* TypeLiteral */ || inAmbientContext; + var inAmbientContextOrInterface = node.parent.kind === 221 /* InterfaceDeclaration */ || node.parent.kind === 158 /* TypeLiteral */ || inAmbientContext; if (inAmbientContextOrInterface) { // check if declarations are consecutive only if they are non-ambient // 1. ambient declarations can be interleaved @@ -25851,7 +26850,7 @@ var ts; // 2. mixing ambient and non-ambient declarations is a separate error that will be reported - do not want to report an extra one previousDeclaration = undefined; } - if (node.kind === 217 /* FunctionDeclaration */ || node.kind === 145 /* MethodDeclaration */ || node.kind === 144 /* MethodSignature */ || node.kind === 146 /* Constructor */) { + if (node.kind === 219 /* FunctionDeclaration */ || node.kind === 146 /* MethodDeclaration */ || node.kind === 145 /* MethodSignature */ || node.kind === 147 /* Constructor */) { var currentNodeFlags = getEffectiveDeclarationFlags(node, flagsToCheck); someNodeFlags |= currentNodeFlags; allNodeFlags &= currentNodeFlags; @@ -25973,16 +26972,16 @@ var ts; } function getDeclarationSpaces(d) { switch (d.kind) { - case 219 /* InterfaceDeclaration */: + case 221 /* InterfaceDeclaration */: return 2097152 /* ExportType */; - case 222 /* ModuleDeclaration */: + case 224 /* ModuleDeclaration */: return ts.isAmbientModule(d) || ts.getModuleInstanceState(d) !== 0 /* NonInstantiated */ ? 4194304 /* ExportNamespace */ | 1048576 /* ExportValue */ : 4194304 /* ExportNamespace */; - case 218 /* ClassDeclaration */: - case 221 /* EnumDeclaration */: + case 220 /* ClassDeclaration */: + case 223 /* EnumDeclaration */: return 2097152 /* ExportType */ | 1048576 /* ExportValue */; - case 225 /* ImportEqualsDeclaration */: + case 228 /* ImportEqualsDeclaration */: var result_1 = 0; var target = resolveAlias(getSymbolOfNode(d)); ts.forEach(target.declarations, function (d) { result_1 |= getDeclarationSpaces(d); }); @@ -26094,7 +27093,7 @@ var ts; return checkNonThenableType(type, location, message); } else { - if (type.id === promisedType.id || awaitedTypeStack.indexOf(promisedType.id) >= 0) { + if (type.id === promisedType.id || ts.indexOf(awaitedTypeStack, promisedType.id) >= 0) { // We have a bad actor in the form of a promise whose promised type is // the same promise type, or a mutually recursive promise. Return the // unknown type as we cannot guess the shape. If this were the actual @@ -26263,22 +27262,22 @@ var ts; var headMessage = getDiagnosticHeadMessageForDecoratorResolution(node); var errorInfo; switch (node.parent.kind) { - case 218 /* ClassDeclaration */: + case 220 /* ClassDeclaration */: var classSymbol = getSymbolOfNode(node.parent); var classConstructorType = getTypeOfSymbol(classSymbol); expectedReturnType = getUnionType([classConstructorType, voidType]); break; - case 140 /* Parameter */: + case 141 /* Parameter */: expectedReturnType = voidType; errorInfo = ts.chainDiagnosticMessages(errorInfo, ts.Diagnostics.The_return_type_of_a_parameter_decorator_function_must_be_either_void_or_any); break; - case 143 /* PropertyDeclaration */: + case 144 /* PropertyDeclaration */: expectedReturnType = voidType; errorInfo = ts.chainDiagnosticMessages(errorInfo, ts.Diagnostics.The_return_type_of_a_property_decorator_function_must_be_either_void_or_any); break; - case 145 /* MethodDeclaration */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: + case 146 /* MethodDeclaration */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: var methodType = getTypeOfNode(node.parent); var descriptorType = createTypedPropertyDescriptorType(methodType); expectedReturnType = getUnionType([descriptorType, voidType]); @@ -26291,9 +27290,9 @@ var ts; // When we are emitting type metadata for decorators, we need to try to check the type // as if it were an expression so that we can emit the type in a value position when we // serialize the type metadata. - if (node && node.kind === 153 /* TypeReference */) { + if (node && node.kind === 154 /* TypeReference */) { var root = getFirstIdentifier(node.typeName); - var meaning = root.parent.kind === 153 /* TypeReference */ ? 793056 /* Type */ : 1536 /* Namespace */; + var meaning = root.parent.kind === 154 /* TypeReference */ ? 793056 /* Type */ : 1536 /* Namespace */; // Resolve type so we know which symbol is referenced var rootSymbol = resolveName(root, root.text, meaning | 8388608 /* Alias */, /*nameNotFoundMessage*/ undefined, /*nameArg*/ undefined); // Resolved symbol is alias @@ -26340,20 +27339,20 @@ var ts; if (compilerOptions.emitDecoratorMetadata) { // we only need to perform these checks if we are emitting serialized type metadata for the target of a decorator. switch (node.kind) { - case 218 /* ClassDeclaration */: + case 220 /* ClassDeclaration */: var constructor = ts.getFirstConstructorWithBody(node); if (constructor) { checkParameterTypeAnnotationsAsExpressions(constructor); } break; - case 145 /* MethodDeclaration */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: + case 146 /* MethodDeclaration */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: checkParameterTypeAnnotationsAsExpressions(node); checkReturnTypeAnnotationAsExpression(node); break; - case 143 /* PropertyDeclaration */: - case 140 /* Parameter */: + case 144 /* PropertyDeclaration */: + case 141 /* Parameter */: checkTypeAnnotationAsExpression(node); break; } @@ -26376,7 +27375,7 @@ var ts; // Do not use hasDynamicName here, because that returns false for well known symbols. // We want to perform checkComputedPropertyName for all computed properties, including // well known symbols. - if (node.name && node.name.kind === 138 /* ComputedPropertyName */) { + if (node.name && node.name.kind === 139 /* ComputedPropertyName */) { // This check will account for methods in class/interface declarations, // as well as accessors in classes/object literals checkComputedPropertyName(node.name); @@ -26427,7 +27426,7 @@ var ts; } function checkBlock(node) { // Grammar checking for SyntaxKind.Block - if (node.kind === 196 /* Block */) { + if (node.kind === 198 /* Block */) { checkGrammarStatementInAmbientContext(node); } ts.forEach(node.statements, checkSourceElement); @@ -26447,12 +27446,12 @@ var ts; if (!(identifier && identifier.text === name)) { return false; } - if (node.kind === 143 /* PropertyDeclaration */ || - node.kind === 142 /* PropertySignature */ || - node.kind === 145 /* MethodDeclaration */ || - node.kind === 144 /* MethodSignature */ || - node.kind === 147 /* GetAccessor */ || - node.kind === 148 /* SetAccessor */) { + if (node.kind === 144 /* PropertyDeclaration */ || + node.kind === 143 /* PropertySignature */ || + node.kind === 146 /* MethodDeclaration */ || + node.kind === 145 /* MethodSignature */ || + node.kind === 148 /* GetAccessor */ || + node.kind === 149 /* SetAccessor */) { // it is ok to have member named '_super' or '_this' - member access is always qualified return false; } @@ -26461,7 +27460,7 @@ var ts; return false; } var root = ts.getRootDeclaration(node); - if (root.kind === 140 /* Parameter */ && ts.nodeIsMissing(root.parent.body)) { + if (root.kind === 141 /* Parameter */ && ts.nodeIsMissing(root.parent.body)) { // just an overload - no codegen impact return false; } @@ -26514,12 +27513,12 @@ var ts; return; } // Uninstantiated modules shouldnt do this check - if (node.kind === 222 /* ModuleDeclaration */ && ts.getModuleInstanceState(node) !== 1 /* Instantiated */) { + if (node.kind === 224 /* ModuleDeclaration */ && ts.getModuleInstanceState(node) !== 1 /* Instantiated */) { return; } // In case of variable declaration, node.parent is variable statement so look at the variable statement's parent var parent = getDeclarationContainer(node); - if (parent.kind === 252 /* SourceFile */ && ts.isExternalOrCommonJsModule(parent)) { + if (parent.kind === 255 /* SourceFile */ && ts.isExternalOrCommonJsModule(parent)) { // If the declaration happens to be in external module, report error that require and exports are reserved keywords error(name, ts.Diagnostics.Duplicate_identifier_0_Compiler_reserves_name_1_in_top_level_scope_of_a_module, ts.declarationNameToString(name), ts.declarationNameToString(name)); } @@ -26529,12 +27528,12 @@ var ts; return; } // Uninstantiated modules shouldnt do this check - if (node.kind === 222 /* ModuleDeclaration */ && ts.getModuleInstanceState(node) !== 1 /* Instantiated */) { + if (node.kind === 224 /* ModuleDeclaration */ && ts.getModuleInstanceState(node) !== 1 /* Instantiated */) { return; } // In case of variable declaration, node.parent is variable statement so look at the variable statement's parent var parent = getDeclarationContainer(node); - if (parent.kind === 252 /* SourceFile */ && ts.isExternalOrCommonJsModule(parent) && parent.flags & 2097152 /* HasAsyncFunctions */) { + if (parent.kind === 255 /* SourceFile */ && ts.isExternalOrCommonJsModule(parent) && parent.flags & 2097152 /* HasAsyncFunctions */) { // If the declaration happens to be in external module, report error that Promise is a reserved identifier. error(name, ts.Diagnostics.Duplicate_identifier_0_Compiler_reserves_name_1_in_top_level_scope_of_a_module_containing_async_functions, ts.declarationNameToString(name), ts.declarationNameToString(name)); } @@ -26569,7 +27568,7 @@ var ts; // skip variable declarations that don't have initializers // NOTE: in ES6 spec initializer is required in variable declarations where name is binding pattern // so we'll always treat binding elements as initialized - if (node.kind === 215 /* VariableDeclaration */ && !node.initializer) { + if (node.kind === 217 /* VariableDeclaration */ && !node.initializer) { return; } var symbol = getSymbolOfNode(node); @@ -26579,24 +27578,24 @@ var ts; localDeclarationSymbol !== symbol && localDeclarationSymbol.flags & 2 /* BlockScopedVariable */) { if (getDeclarationFlagsFromSymbol(localDeclarationSymbol) & 3072 /* BlockScoped */) { - var varDeclList = ts.getAncestor(localDeclarationSymbol.valueDeclaration, 216 /* VariableDeclarationList */); - var container = varDeclList.parent.kind === 197 /* VariableStatement */ && varDeclList.parent.parent + var varDeclList = ts.getAncestor(localDeclarationSymbol.valueDeclaration, 218 /* VariableDeclarationList */); + var container = varDeclList.parent.kind === 199 /* VariableStatement */ && varDeclList.parent.parent ? varDeclList.parent.parent : undefined; // names of block-scoped and function scoped variables can collide only // if block scoped variable is defined in the function\module\source file scope (because of variable hoisting) var namesShareScope = container && - (container.kind === 196 /* Block */ && ts.isFunctionLike(container.parent) || - container.kind === 223 /* ModuleBlock */ || - container.kind === 222 /* ModuleDeclaration */ || - container.kind === 252 /* SourceFile */); + (container.kind === 198 /* Block */ && ts.isFunctionLike(container.parent) || + container.kind === 225 /* ModuleBlock */ || + container.kind === 224 /* ModuleDeclaration */ || + container.kind === 255 /* SourceFile */); // here we know that function scoped variable is shadowed by block scoped one // if they are defined in the same scope - binder has already reported redeclaration error // otherwise if variable has an initializer - show error that initialization will fail // since LHS will be block scoped name instead of function scoped if (!namesShareScope) { - var name_15 = symbolToString(localDeclarationSymbol); - error(node, ts.Diagnostics.Cannot_initialize_outer_scoped_variable_0_in_the_same_scope_as_block_scoped_declaration_1, name_15, name_15); + var name_16 = symbolToString(localDeclarationSymbol); + error(node, ts.Diagnostics.Cannot_initialize_outer_scoped_variable_0_in_the_same_scope_as_block_scoped_declaration_1, name_16, name_16); } } } @@ -26604,7 +27603,7 @@ var ts; } // Check that a parameter initializer contains no references to parameters declared to the right of itself function checkParameterInitializer(node) { - if (ts.getRootDeclaration(node).kind !== 140 /* Parameter */) { + if (ts.getRootDeclaration(node).kind !== 141 /* Parameter */) { return; } var func = ts.getContainingFunction(node); @@ -26615,7 +27614,7 @@ var ts; // check FunctionLikeDeclaration.locals (stores parameters\function local variable) // if it contains entry with a specified name and if this entry matches the resolved symbol if (referencedSymbol && referencedSymbol !== unknownSymbol && getSymbol(func.locals, referencedSymbol.name, 107455 /* Value */) === referencedSymbol) { - if (referencedSymbol.valueDeclaration.kind === 140 /* Parameter */) { + if (referencedSymbol.valueDeclaration.kind === 141 /* Parameter */) { if (referencedSymbol.valueDeclaration === node) { error(n, ts.Diagnostics.Parameter_0_cannot_be_referenced_in_its_initializer, ts.declarationNameToString(node.name)); return; @@ -26641,31 +27640,39 @@ var ts; // Do not use hasDynamicName here, because that returns false for well known symbols. // We want to perform checkComputedPropertyName for all computed properties, including // well known symbols. - if (node.name.kind === 138 /* ComputedPropertyName */) { + if (node.name.kind === 139 /* ComputedPropertyName */) { checkComputedPropertyName(node.name); if (node.initializer) { checkExpressionCached(node.initializer); } } - if (node.kind === 167 /* BindingElement */) { + if (node.kind === 168 /* BindingElement */) { // check computed properties inside property names of binding elements - if (node.propertyName && node.propertyName.kind === 138 /* ComputedPropertyName */) { + if (node.propertyName && node.propertyName.kind === 139 /* ComputedPropertyName */) { checkComputedPropertyName(node.propertyName); } + // check private/protected variable access + var parent_9 = node.parent.parent; + var parentType = getTypeForBindingElementParent(parent_9); + var name_17 = node.propertyName || node.name; + var property = getPropertyOfType(parentType, getTextOfPropertyName(name_17)); + if (parent_9.initializer && property && getParentOfSymbol(property)) { + checkClassPropertyAccess(parent_9, parent_9.initializer, parentType, property); + } } // For a binding pattern, check contained binding elements if (ts.isBindingPattern(node.name)) { ts.forEach(node.name.elements, checkSourceElement); } // For a parameter declaration with an initializer, error and exit if the containing function doesn't have a body - if (node.initializer && ts.getRootDeclaration(node).kind === 140 /* Parameter */ && ts.nodeIsMissing(ts.getContainingFunction(node).body)) { + if (node.initializer && ts.getRootDeclaration(node).kind === 141 /* Parameter */ && ts.nodeIsMissing(ts.getContainingFunction(node).body)) { error(node, ts.Diagnostics.A_parameter_initializer_is_only_allowed_in_a_function_or_constructor_implementation); return; } // For a binding pattern, validate the initializer and exit if (ts.isBindingPattern(node.name)) { // Don't validate for-in initializer as it is already an error - if (node.initializer && node.parent.parent.kind !== 204 /* ForInStatement */) { + if (node.initializer && node.parent.parent.kind !== 206 /* ForInStatement */) { checkTypeAssignableTo(checkExpressionCached(node.initializer), getWidenedTypeForVariableLikeDeclaration(node), node, /*headMessage*/ undefined); checkParameterInitializer(node); } @@ -26676,7 +27683,7 @@ var ts; if (node === symbol.valueDeclaration) { // Node is the primary declaration of the symbol, just validate the initializer // Don't validate for-in initializer as it is already an error - if (node.initializer && node.parent.parent.kind !== 204 /* ForInStatement */) { + if (node.initializer && node.parent.parent.kind !== 206 /* ForInStatement */) { checkTypeAssignableTo(checkExpressionCached(node.initializer), type, node, /*headMessage*/ undefined); checkParameterInitializer(node); } @@ -26692,10 +27699,10 @@ var ts; checkTypeAssignableTo(checkExpressionCached(node.initializer), declarationType, node, /*headMessage*/ undefined); } } - if (node.kind !== 143 /* PropertyDeclaration */ && node.kind !== 142 /* PropertySignature */) { + if (node.kind !== 144 /* PropertyDeclaration */ && node.kind !== 143 /* PropertySignature */) { // We know we don't have a binding pattern or computed name here checkExportsOnMergedDeclarations(node); - if (node.kind === 215 /* VariableDeclaration */ || node.kind === 167 /* BindingElement */) { + if (node.kind === 217 /* VariableDeclaration */ || node.kind === 168 /* BindingElement */) { checkVarDeclaredNamesNotShadowed(node); } checkCollisionWithCapturedSuperVariable(node, node.name); @@ -26719,7 +27726,7 @@ var ts; } function checkGrammarDisallowedModifiersOnObjectLiteralExpressionMethod(node) { // We only disallow modifier on a method declaration if it is a property of object-literal-expression - if (node.modifiers && node.parent.kind === 169 /* ObjectLiteralExpression */) { + if (node.modifiers && node.parent.kind === 170 /* ObjectLiteralExpression */) { if (ts.isAsyncFunctionLike(node)) { if (node.modifiers.length > 1) { return grammarErrorOnFirstToken(node, ts.Diagnostics.Modifiers_cannot_appear_here); @@ -26740,7 +27747,7 @@ var ts; checkGrammarStatementInAmbientContext(node); checkExpression(node.expression); checkSourceElement(node.thenStatement); - if (node.thenStatement.kind === 198 /* EmptyStatement */) { + if (node.thenStatement.kind === 200 /* EmptyStatement */) { error(node.thenStatement, ts.Diagnostics.The_body_of_an_if_statement_cannot_be_the_empty_statement); } checkSourceElement(node.elseStatement); @@ -26760,12 +27767,12 @@ var ts; function checkForStatement(node) { // Grammar checking if (!checkGrammarStatementInAmbientContext(node)) { - if (node.initializer && node.initializer.kind === 216 /* VariableDeclarationList */) { + if (node.initializer && node.initializer.kind === 218 /* VariableDeclarationList */) { checkGrammarVariableDeclarationList(node.initializer); } } if (node.initializer) { - if (node.initializer.kind === 216 /* VariableDeclarationList */) { + if (node.initializer.kind === 218 /* VariableDeclarationList */) { ts.forEach(node.initializer.declarations, checkVariableDeclaration); } else { @@ -26785,14 +27792,14 @@ var ts; // via checkRightHandSideOfForOf. // If the LHS is an expression, check the LHS, as a destructuring assignment or as a reference. // Then check that the RHS is assignable to it. - if (node.initializer.kind === 216 /* VariableDeclarationList */) { + if (node.initializer.kind === 218 /* VariableDeclarationList */) { checkForInOrForOfVariableDeclaration(node); } else { var varExpr = node.initializer; var iteratedType = checkRightHandSideOfForOf(node.expression); // There may be a destructuring assignment on the left side - if (varExpr.kind === 168 /* ArrayLiteralExpression */ || varExpr.kind === 169 /* ObjectLiteralExpression */) { + if (varExpr.kind === 169 /* ArrayLiteralExpression */ || varExpr.kind === 170 /* ObjectLiteralExpression */) { // iteratedType may be undefined. In this case, we still want to check the structure of // varExpr, in particular making sure it's a valid LeftHandSideExpression. But we'd like // to short circuit the type relation checking as much as possible, so we pass the unknownType. @@ -26821,7 +27828,7 @@ var ts; // for (let VarDecl in Expr) Statement // VarDecl must be a variable declaration without a type annotation that declares a variable of type Any, // and Expr must be an expression of type Any, an object type, or a type parameter type. - if (node.initializer.kind === 216 /* VariableDeclarationList */) { + if (node.initializer.kind === 218 /* VariableDeclarationList */) { var variable = node.initializer.declarations[0]; if (variable && ts.isBindingPattern(variable.name)) { error(variable.name, ts.Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_be_a_destructuring_pattern); @@ -26835,7 +27842,7 @@ var ts; // and Expr must be an expression of type Any, an object type, or a type parameter type. var varExpr = node.initializer; var leftType = checkExpression(varExpr); - if (varExpr.kind === 168 /* ArrayLiteralExpression */ || varExpr.kind === 169 /* ObjectLiteralExpression */) { + if (varExpr.kind === 169 /* ArrayLiteralExpression */ || varExpr.kind === 170 /* ObjectLiteralExpression */) { error(varExpr, ts.Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_be_a_destructuring_pattern); } else if (!isTypeAnyOrAllConstituentTypesHaveKind(leftType, 258 /* StringLike */)) { @@ -26846,7 +27853,7 @@ var ts; checkReferenceExpression(varExpr, ts.Diagnostics.Invalid_left_hand_side_in_for_in_statement, ts.Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_be_a_constant_or_a_read_only_property); } } - var rightType = checkExpression(node.expression); + var rightType = checkNonNullExpression(node.expression); // unknownType is returned i.e. if node.expression is identifier whose name cannot be resolved // in this case error about missing name is already reported - do not report extra one if (!isTypeAnyOrAllConstituentTypesHaveKind(rightType, 80896 /* ObjectType */ | 512 /* TypeParameter */)) { @@ -26863,7 +27870,7 @@ var ts; } } function checkRightHandSideOfForOf(rhsExpression) { - var expressionType = getTypeOfExpression(rhsExpression); + var expressionType = checkNonNullExpression(rhsExpression); return checkIteratedTypeOrElementType(expressionType, rhsExpression, /*allowStringInput*/ true); } function checkIteratedTypeOrElementType(inputType, errorNode, allowStringInput) { @@ -26926,7 +27933,7 @@ var ts; if (!typeAsIterable.iterableElementType) { // As an optimization, if the type is instantiated directly using the globalIterableType (Iterable), // then just grab its type argument. - if ((type.flags & 4096 /* Reference */) && type.target === globalIterableType) { + if ((type.flags & 4096 /* Reference */) && type.target === getGlobalIterableType()) { typeAsIterable.iterableElementType = type.typeArguments[0]; } else { @@ -26967,7 +27974,7 @@ var ts; if (!typeAsIterator.iteratorElementType) { // As an optimization, if the type is instantiated directly using the globalIteratorType (Iterator), // then just grab its type argument. - if ((type.flags & 4096 /* Reference */) && type.target === globalIteratorType) { + if ((type.flags & 4096 /* Reference */) && type.target === getGlobalIteratorType()) { typeAsIterator.iteratorElementType = type.typeArguments[0]; } else { @@ -27004,7 +28011,7 @@ var ts; } // As an optimization, if the type is instantiated directly using the globalIterableIteratorType (IterableIterator), // then just grab its type argument. - if ((type.flags & 4096 /* Reference */) && type.target === globalIterableIteratorType) { + if ((type.flags & 4096 /* Reference */) && type.target === getGlobalIterableIteratorType()) { return type.typeArguments[0]; } return getElementTypeOfIterable(type, /*errorNode*/ undefined) || @@ -27080,7 +28087,11 @@ var ts; // TODO: Check that target label is valid } function isGetAccessorWithAnnotatedSetAccessor(node) { - return !!(node.kind === 147 /* GetAccessor */ && ts.getSetAccessorTypeAnnotationNode(ts.getDeclarationOfKind(node.symbol, 148 /* SetAccessor */))); + return !!(node.kind === 148 /* GetAccessor */ && ts.getSetAccessorTypeAnnotationNode(ts.getDeclarationOfKind(node.symbol, 149 /* SetAccessor */))); + } + function isUnwrappedReturnTypeVoidOrAny(func, returnType) { + var unwrappedReturnType = ts.isAsyncFunctionLike(func) ? getPromisedType(returnType) : returnType; + return maybeTypeOfKind(unwrappedReturnType, 16 /* Void */ | 1 /* Any */); } function checkReturnStatement(node) { // Grammar checking @@ -27090,12 +28101,12 @@ var ts; grammarErrorOnFirstToken(node, ts.Diagnostics.A_return_statement_can_only_be_used_within_a_function_body); } } - if (node.expression) { - var func = ts.getContainingFunction(node); - if (func) { - var signature = getSignatureFromDeclaration(func); - var returnType = getReturnTypeOfSignature(signature); - var exprType = checkExpressionCached(node.expression); + var func = ts.getContainingFunction(node); + if (func) { + var signature = getSignatureFromDeclaration(func); + var returnType = getReturnTypeOfSignature(signature); + if (strictNullChecks || node.expression) { + var exprType = node.expression ? checkExpressionCached(node.expression) : undefinedType; if (func.asteriskToken) { // A generator does not need its return expressions checked against its return type. // Instead, the yield expressions are checked against the element type. @@ -27103,30 +28114,36 @@ var ts; // for generators. return; } - if (func.kind === 148 /* SetAccessor */) { - error(node.expression, ts.Diagnostics.Setters_cannot_return_a_value); + if (func.kind === 149 /* SetAccessor */) { + if (node.expression) { + error(node.expression, ts.Diagnostics.Setters_cannot_return_a_value); + } } - else if (func.kind === 146 /* Constructor */) { - if (!checkTypeAssignableTo(exprType, returnType, node.expression)) { + else if (func.kind === 147 /* Constructor */) { + if (node.expression && !checkTypeAssignableTo(exprType, returnType, node.expression)) { error(node.expression, ts.Diagnostics.Return_type_of_constructor_signature_must_be_assignable_to_the_instance_type_of_the_class); } } else if (func.type || isGetAccessorWithAnnotatedSetAccessor(func)) { if (ts.isAsyncFunctionLike(func)) { var promisedType = getPromisedType(returnType); - var awaitedType = checkAwaitedType(exprType, node.expression, ts.Diagnostics.Return_expression_in_async_function_does_not_have_a_valid_callable_then_member); + var awaitedType = checkAwaitedType(exprType, node.expression || node, ts.Diagnostics.Return_expression_in_async_function_does_not_have_a_valid_callable_then_member); if (promisedType) { // If the function has a return type, but promisedType is // undefined, an error will be reported in checkAsyncFunctionReturnType // so we don't need to report one here. - checkTypeAssignableTo(awaitedType, promisedType, node.expression); + checkTypeAssignableTo(awaitedType, promisedType, node.expression || node); } } else { - checkTypeAssignableTo(exprType, returnType, node.expression); + checkTypeAssignableTo(exprType, returnType, node.expression || node); } } } + else if (func.kind !== 147 /* Constructor */ && compilerOptions.noImplicitReturns && !isUnwrappedReturnTypeVoidOrAny(func, returnType)) { + // The function has a return type, but the return statement doesn't have an expression. + error(node, ts.Diagnostics.Not_all_code_paths_return_a_value); + } } } function checkWithStatement(node) { @@ -27145,10 +28162,9 @@ var ts; var firstDefaultClause; var hasDuplicateDefaultClause = false; var expressionType = checkExpression(node.expression); - var expressionTypeIsStringLike = maybeTypeOfKind(expressionType, 258 /* StringLike */); ts.forEach(node.caseBlock.clauses, function (clause) { // Grammar check for duplicate default clauses, skip if we already report duplicate default clause - if (clause.kind === 246 /* DefaultClause */ && !hasDuplicateDefaultClause) { + if (clause.kind === 249 /* DefaultClause */ && !hasDuplicateDefaultClause) { if (firstDefaultClause === undefined) { firstDefaultClause = clause; } @@ -27160,18 +28176,15 @@ var ts; hasDuplicateDefaultClause = true; } } - if (produceDiagnostics && clause.kind === 245 /* CaseClause */) { + if (produceDiagnostics && clause.kind === 248 /* CaseClause */) { var caseClause = clause; - // TypeScript 1.0 spec (April 2014):5.9 - // In a 'switch' statement, each 'case' expression must be of a type that is assignable to or from the type of the 'switch' expression. + // TypeScript 1.0 spec (April 2014): 5.9 + // In a 'switch' statement, each 'case' expression must be of a type that is comparable + // to or from the type of the 'switch' expression. var caseType = checkExpression(caseClause.expression); - var expressionTypeIsAssignableToCaseType = - // Permit 'number[] | "foo"' to be asserted to 'string'. - (expressionTypeIsStringLike && maybeTypeOfKind(caseType, 258 /* StringLike */)) || - isTypeAssignableTo(expressionType, caseType); - if (!expressionTypeIsAssignableToCaseType) { - // 'expressionType is not assignable to caseType', try the reversed check and report errors if it fails - checkTypeAssignableTo(caseType, expressionType, caseClause.expression, /*headMessage*/ undefined); + if (!isTypeComparableTo(expressionType, caseType)) { + // expressionType is not comparable to caseType, try the reversed check and report errors if it fails + checkTypeComparableTo(caseType, expressionType, caseClause.expression, /*headMessage*/ undefined); } } ts.forEach(clause.statements, checkSourceElement); @@ -27185,7 +28198,7 @@ var ts; if (ts.isFunctionLike(current)) { break; } - if (current.kind === 211 /* LabeledStatement */ && current.label.text === node.label.text) { + if (current.kind === 213 /* LabeledStatement */ && current.label.text === node.label.text) { var sourceFile = ts.getSourceFileOfNode(node); grammarErrorOnNode(node.label, ts.Diagnostics.Duplicate_label_0, ts.getTextOfNodeFromSourceText(sourceFile.text, node.label)); break; @@ -27290,7 +28303,7 @@ var ts; // perform property check if property or indexer is declared in 'type' // this allows to rule out cases when both property and indexer are inherited from the base class var errorNode; - if (prop.valueDeclaration.name.kind === 138 /* ComputedPropertyName */ || prop.parent === containingType.symbol) { + if (prop.valueDeclaration.name.kind === 139 /* ComputedPropertyName */ || prop.parent === containingType.symbol) { errorNode = prop.valueDeclaration; } else if (indexDeclaration) { @@ -27348,7 +28361,7 @@ var ts; var firstDecl; for (var _i = 0, _a = symbol.declarations; _i < _a.length; _i++) { var declaration = _a[_i]; - if (declaration.kind === 218 /* ClassDeclaration */ || declaration.kind === 219 /* InterfaceDeclaration */) { + if (declaration.kind === 220 /* ClassDeclaration */ || declaration.kind === 221 /* InterfaceDeclaration */) { if (!firstDecl) { firstDecl = declaration; } @@ -27504,7 +28517,7 @@ var ts; // If there is no declaration for the derived class (as in the case of class expressions), // then the class cannot be declared abstract. if (baseDeclarationFlags & 128 /* Abstract */ && (!derivedClassDecl || !(derivedClassDecl.flags & 128 /* Abstract */))) { - if (derivedClassDecl.kind === 190 /* ClassExpression */) { + if (derivedClassDecl.kind === 191 /* ClassExpression */) { error(derivedClassDecl, ts.Diagnostics.Non_abstract_class_expression_does_not_implement_inherited_abstract_member_0_from_class_1, symbolToString(baseProperty), typeToString(baseType)); } else { @@ -27552,7 +28565,7 @@ var ts; } } function isAccessor(kind) { - return kind === 147 /* GetAccessor */ || kind === 148 /* SetAccessor */; + return kind === 148 /* GetAccessor */ || kind === 149 /* SetAccessor */; } function areTypeParametersIdentical(list1, list2) { if (!list1 && !list2) { @@ -27624,7 +28637,7 @@ var ts; var symbol = getSymbolOfNode(node); checkTypeParameterListsIdentical(node, symbol); // Only check this symbol once - var firstInterfaceDecl = ts.getDeclarationOfKind(symbol, 219 /* InterfaceDeclaration */); + var firstInterfaceDecl = ts.getDeclarationOfKind(symbol, 221 /* InterfaceDeclaration */); if (node === firstInterfaceDecl) { var type = getDeclaredTypeOfSymbol(symbol); var typeWithThis = getTypeWithThisArgument(type); @@ -27728,7 +28741,7 @@ var ts; return value; function evalConstant(e) { switch (e.kind) { - case 183 /* PrefixUnaryExpression */: + case 184 /* PrefixUnaryExpression */: var value_1 = evalConstant(e.operand); if (value_1 === undefined) { return undefined; @@ -27739,7 +28752,7 @@ var ts; case 50 /* TildeToken */: return ~value_1; } return undefined; - case 185 /* BinaryExpression */: + case 186 /* BinaryExpression */: var left = evalConstant(e.left); if (left === undefined) { return undefined; @@ -27764,11 +28777,11 @@ var ts; return undefined; case 8 /* NumericLiteral */: return +e.text; - case 176 /* ParenthesizedExpression */: + case 177 /* ParenthesizedExpression */: return evalConstant(e.expression); case 69 /* Identifier */: - case 171 /* ElementAccessExpression */: - case 170 /* PropertyAccessExpression */: + case 172 /* ElementAccessExpression */: + case 171 /* PropertyAccessExpression */: var member = initializer.parent; var currentType = getTypeOfSymbol(getSymbolOfNode(member.parent)); var enumType_1; @@ -27781,7 +28794,7 @@ var ts; } else { var expression = void 0; - if (e.kind === 171 /* ElementAccessExpression */) { + if (e.kind === 172 /* ElementAccessExpression */) { if (e.argumentExpression === undefined || e.argumentExpression.kind !== 9 /* StringLiteral */) { return undefined; @@ -27799,7 +28812,7 @@ var ts; if (current.kind === 69 /* Identifier */) { break; } - else if (current.kind === 170 /* PropertyAccessExpression */) { + else if (current.kind === 171 /* PropertyAccessExpression */) { current = current.expression; } else { @@ -27871,7 +28884,7 @@ var ts; var seenEnumMissingInitialInitializer_1 = false; ts.forEach(enumSymbol.declarations, function (declaration) { // return true if we hit a violation of the rule, false otherwise - if (declaration.kind !== 221 /* EnumDeclaration */) { + if (declaration.kind !== 223 /* EnumDeclaration */) { return false; } var enumDeclaration = declaration; @@ -27894,8 +28907,8 @@ var ts; var declarations = symbol.declarations; for (var _i = 0, declarations_5 = declarations; _i < declarations_5.length; _i++) { var declaration = declarations_5[_i]; - if ((declaration.kind === 218 /* ClassDeclaration */ || - (declaration.kind === 217 /* FunctionDeclaration */ && ts.nodeIsPresent(declaration.body))) && + if ((declaration.kind === 220 /* ClassDeclaration */ || + (declaration.kind === 219 /* FunctionDeclaration */ && ts.nodeIsPresent(declaration.body))) && !ts.isInAmbientContext(declaration)) { return declaration; } @@ -27957,7 +28970,7 @@ var ts; } // if the module merges with a class declaration in the same lexical scope, // we need to track this to ensure the correct emit. - var mergedClass = ts.getDeclarationOfKind(symbol, 218 /* ClassDeclaration */); + var mergedClass = ts.getDeclarationOfKind(symbol, 220 /* ClassDeclaration */); if (mergedClass && inSameLexicalScope(node, mergedClass)) { getNodeLinks(node).flags |= 32768 /* LexicalModuleMergesWithClass */; @@ -28003,31 +29016,31 @@ var ts; } function checkModuleAugmentationElement(node, isGlobalAugmentation) { switch (node.kind) { - case 197 /* VariableStatement */: + case 199 /* VariableStatement */: // error each individual name in variable statement instead of marking the entire variable statement for (var _i = 0, _a = node.declarationList.declarations; _i < _a.length; _i++) { var decl = _a[_i]; checkModuleAugmentationElement(decl, isGlobalAugmentation); } break; - case 231 /* ExportAssignment */: - case 232 /* ExportDeclaration */: + case 234 /* ExportAssignment */: + case 235 /* ExportDeclaration */: grammarErrorOnFirstToken(node, ts.Diagnostics.Exports_and_export_assignments_are_not_permitted_in_module_augmentations); break; - case 225 /* ImportEqualsDeclaration */: + case 228 /* ImportEqualsDeclaration */: if (node.moduleReference.kind !== 9 /* StringLiteral */) { error(node.name, ts.Diagnostics.Module_augmentation_cannot_introduce_new_names_in_the_top_level_scope); break; } // fallthrough - case 226 /* ImportDeclaration */: + case 229 /* ImportDeclaration */: grammarErrorOnFirstToken(node, ts.Diagnostics.Imports_are_not_permitted_in_module_augmentations_Consider_moving_them_to_the_enclosing_external_module); break; - case 167 /* BindingElement */: - case 215 /* VariableDeclaration */: - var name_16 = node.name; - if (ts.isBindingPattern(name_16)) { - for (var _b = 0, _c = name_16.elements; _b < _c.length; _b++) { + case 168 /* BindingElement */: + case 217 /* VariableDeclaration */: + var name_18 = node.name; + if (ts.isBindingPattern(name_18)) { + for (var _b = 0, _c = name_18.elements; _b < _c.length; _b++) { var el = _c[_b]; // mark individual names in binding pattern checkModuleAugmentationElement(el, isGlobalAugmentation); @@ -28035,12 +29048,12 @@ var ts; break; } // fallthrough - case 218 /* ClassDeclaration */: - case 221 /* EnumDeclaration */: - case 217 /* FunctionDeclaration */: - case 219 /* InterfaceDeclaration */: - case 222 /* ModuleDeclaration */: - case 220 /* TypeAliasDeclaration */: + case 220 /* ClassDeclaration */: + case 223 /* EnumDeclaration */: + case 219 /* FunctionDeclaration */: + case 221 /* InterfaceDeclaration */: + case 224 /* ModuleDeclaration */: + case 222 /* TypeAliasDeclaration */: var symbol = getSymbolOfNode(node); if (symbol) { // module augmentations cannot introduce new names on the top level scope of the module @@ -28055,7 +29068,7 @@ var ts; } else { // symbol should not originate in augmentation - reportError = ts.isExternalModuleAugmentation(symbol.parent.valueDeclaration); + reportError = ts.isExternalModuleAugmentation(symbol.parent.declarations[0]); } } if (reportError) { @@ -28067,10 +29080,10 @@ var ts; } function getFirstIdentifier(node) { while (true) { - if (node.kind === 137 /* QualifiedName */) { + if (node.kind === 138 /* QualifiedName */) { node = node.left; } - else if (node.kind === 170 /* PropertyAccessExpression */) { + else if (node.kind === 171 /* PropertyAccessExpression */) { node = node.expression; } else { @@ -28086,9 +29099,9 @@ var ts; error(moduleName, ts.Diagnostics.String_literal_expected); return false; } - var inAmbientExternalModule = node.parent.kind === 223 /* ModuleBlock */ && ts.isAmbientModule(node.parent.parent); - if (node.parent.kind !== 252 /* SourceFile */ && !inAmbientExternalModule) { - error(moduleName, node.kind === 232 /* ExportDeclaration */ ? + var inAmbientExternalModule = node.parent.kind === 225 /* ModuleBlock */ && ts.isAmbientModule(node.parent.parent); + if (node.parent.kind !== 255 /* SourceFile */ && !inAmbientExternalModule) { + error(moduleName, node.kind === 235 /* ExportDeclaration */ ? ts.Diagnostics.Export_declarations_are_not_permitted_in_a_namespace : ts.Diagnostics.Import_declarations_in_a_namespace_cannot_reference_a_module); return false; @@ -28111,11 +29124,17 @@ var ts; var symbol = getSymbolOfNode(node); var target = resolveAlias(symbol); if (target !== unknownSymbol) { - var excludedMeanings = (symbol.flags & 107455 /* Value */ ? 107455 /* Value */ : 0) | + // For external modules symbol represent local symbol for an alias. + // This local symbol will merge any other local declarations (excluding other aliases) + // and symbol.flags will contains combined representation for all merged declaration. + // Based on symbol.flags we can compute a set of excluded meanings (meaning that resolved alias should not have, + // otherwise it will conflict with some local declaration). Note that in addition to normal flags we include matching SymbolFlags.Export* + // in order to prevent collisions with declarations that were exported from the current module (they still contribute to local names). + var excludedMeanings = (symbol.flags & (107455 /* Value */ | 1048576 /* ExportValue */) ? 107455 /* Value */ : 0) | (symbol.flags & 793056 /* Type */ ? 793056 /* Type */ : 0) | (symbol.flags & 1536 /* Namespace */ ? 1536 /* Namespace */ : 0); if (target.flags & excludedMeanings) { - var message = node.kind === 234 /* ExportSpecifier */ ? + var message = node.kind === 237 /* ExportSpecifier */ ? ts.Diagnostics.Export_declaration_conflicts_with_exported_declaration_of_0 : ts.Diagnostics.Import_declaration_conflicts_with_local_declaration_of_0; error(node, message, symbolToString(symbol)); @@ -28143,7 +29162,7 @@ var ts; checkImportBinding(importClause); } if (importClause.namedBindings) { - if (importClause.namedBindings.kind === 228 /* NamespaceImport */) { + if (importClause.namedBindings.kind === 231 /* NamespaceImport */) { checkImportBinding(importClause.namedBindings); } else { @@ -28200,8 +29219,8 @@ var ts; // export { x, y } // export { x, y } from "foo" ts.forEach(node.exportClause.elements, checkExportSpecifier); - var inAmbientExternalModule = node.parent.kind === 223 /* ModuleBlock */ && ts.isAmbientModule(node.parent.parent); - if (node.parent.kind !== 252 /* SourceFile */ && !inAmbientExternalModule) { + var inAmbientExternalModule = node.parent.kind === 225 /* ModuleBlock */ && ts.isAmbientModule(node.parent.parent); + if (node.parent.kind !== 255 /* SourceFile */ && !inAmbientExternalModule) { error(node, ts.Diagnostics.Export_declarations_are_not_permitted_in_a_namespace); } } @@ -28215,7 +29234,7 @@ var ts; } } function checkGrammarModuleElementContext(node, errorMessage) { - if (node.parent.kind !== 252 /* SourceFile */ && node.parent.kind !== 223 /* ModuleBlock */ && node.parent.kind !== 222 /* ModuleDeclaration */) { + if (node.parent.kind !== 255 /* SourceFile */ && node.parent.kind !== 225 /* ModuleBlock */ && node.parent.kind !== 224 /* ModuleDeclaration */) { return grammarErrorOnFirstToken(node, errorMessage); } } @@ -28239,8 +29258,8 @@ var ts; // If we hit an export assignment in an illegal context, just bail out to avoid cascading errors. return; } - var container = node.parent.kind === 252 /* SourceFile */ ? node.parent : node.parent.parent; - if (container.kind === 222 /* ModuleDeclaration */ && !ts.isAmbientModule(container)) { + var container = node.parent.kind === 255 /* SourceFile */ ? node.parent : node.parent.parent; + if (container.kind === 224 /* ModuleDeclaration */ && !ts.isAmbientModule(container)) { error(node, ts.Diagnostics.An_export_assignment_cannot_be_used_in_a_namespace); return; } @@ -28315,7 +29334,7 @@ var ts; links.exportsChecked = true; } function isNotOverload(declaration) { - return declaration.kind !== 217 /* FunctionDeclaration */ || !!declaration.body; + return declaration.kind !== 219 /* FunctionDeclaration */ || !!declaration.body; } } function checkSourceElement(node) { @@ -28327,118 +29346,118 @@ var ts; // Only bother checking on a few construct kinds. We don't want to be excessively // hitting the cancellation token on every node we check. switch (kind) { - case 222 /* ModuleDeclaration */: - case 218 /* ClassDeclaration */: - case 219 /* InterfaceDeclaration */: - case 217 /* FunctionDeclaration */: + case 224 /* ModuleDeclaration */: + case 220 /* ClassDeclaration */: + case 221 /* InterfaceDeclaration */: + case 219 /* FunctionDeclaration */: cancellationToken.throwIfCancellationRequested(); } } switch (kind) { - case 139 /* TypeParameter */: + case 140 /* TypeParameter */: return checkTypeParameter(node); - case 140 /* Parameter */: + case 141 /* Parameter */: return checkParameter(node); - case 143 /* PropertyDeclaration */: - case 142 /* PropertySignature */: + case 144 /* PropertyDeclaration */: + case 143 /* PropertySignature */: return checkPropertyDeclaration(node); - case 154 /* FunctionType */: - case 155 /* ConstructorType */: - case 149 /* CallSignature */: - case 150 /* ConstructSignature */: + case 155 /* FunctionType */: + case 156 /* ConstructorType */: + case 150 /* CallSignature */: + case 151 /* ConstructSignature */: return checkSignatureDeclaration(node); - case 151 /* IndexSignature */: + case 152 /* IndexSignature */: return checkSignatureDeclaration(node); - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: return checkMethodDeclaration(node); - case 146 /* Constructor */: + case 147 /* Constructor */: return checkConstructorDeclaration(node); - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: return checkAccessorDeclaration(node); - case 153 /* TypeReference */: + case 154 /* TypeReference */: return checkTypeReferenceNode(node); - case 152 /* TypePredicate */: + case 153 /* TypePredicate */: return checkTypePredicate(node); - case 156 /* TypeQuery */: + case 157 /* TypeQuery */: return checkTypeQuery(node); - case 157 /* TypeLiteral */: + case 158 /* TypeLiteral */: return checkTypeLiteral(node); - case 158 /* ArrayType */: + case 159 /* ArrayType */: return checkArrayType(node); - case 159 /* TupleType */: + case 160 /* TupleType */: return checkTupleType(node); - case 160 /* UnionType */: - case 161 /* IntersectionType */: + case 161 /* UnionType */: + case 162 /* IntersectionType */: return checkUnionOrIntersectionType(node); - case 162 /* ParenthesizedType */: + case 163 /* ParenthesizedType */: return checkSourceElement(node.type); - case 217 /* FunctionDeclaration */: + case 219 /* FunctionDeclaration */: return checkFunctionDeclaration(node); - case 196 /* Block */: - case 223 /* ModuleBlock */: + case 198 /* Block */: + case 225 /* ModuleBlock */: return checkBlock(node); - case 197 /* VariableStatement */: + case 199 /* VariableStatement */: return checkVariableStatement(node); - case 199 /* ExpressionStatement */: + case 201 /* ExpressionStatement */: return checkExpressionStatement(node); - case 200 /* IfStatement */: + case 202 /* IfStatement */: return checkIfStatement(node); - case 201 /* DoStatement */: + case 203 /* DoStatement */: return checkDoStatement(node); - case 202 /* WhileStatement */: + case 204 /* WhileStatement */: return checkWhileStatement(node); - case 203 /* ForStatement */: + case 205 /* ForStatement */: return checkForStatement(node); - case 204 /* ForInStatement */: + case 206 /* ForInStatement */: return checkForInStatement(node); - case 205 /* ForOfStatement */: + case 207 /* ForOfStatement */: return checkForOfStatement(node); - case 206 /* ContinueStatement */: - case 207 /* BreakStatement */: + case 208 /* ContinueStatement */: + case 209 /* BreakStatement */: return checkBreakOrContinueStatement(node); - case 208 /* ReturnStatement */: + case 210 /* ReturnStatement */: return checkReturnStatement(node); - case 209 /* WithStatement */: + case 211 /* WithStatement */: return checkWithStatement(node); - case 210 /* SwitchStatement */: + case 212 /* SwitchStatement */: return checkSwitchStatement(node); - case 211 /* LabeledStatement */: + case 213 /* LabeledStatement */: return checkLabeledStatement(node); - case 212 /* ThrowStatement */: + case 214 /* ThrowStatement */: return checkThrowStatement(node); - case 213 /* TryStatement */: + case 215 /* TryStatement */: return checkTryStatement(node); - case 215 /* VariableDeclaration */: + case 217 /* VariableDeclaration */: return checkVariableDeclaration(node); - case 167 /* BindingElement */: + case 168 /* BindingElement */: return checkBindingElement(node); - case 218 /* ClassDeclaration */: + case 220 /* ClassDeclaration */: return checkClassDeclaration(node); - case 219 /* InterfaceDeclaration */: + case 221 /* InterfaceDeclaration */: return checkInterfaceDeclaration(node); - case 220 /* TypeAliasDeclaration */: + case 222 /* TypeAliasDeclaration */: return checkTypeAliasDeclaration(node); - case 221 /* EnumDeclaration */: + case 223 /* EnumDeclaration */: return checkEnumDeclaration(node); - case 222 /* ModuleDeclaration */: + case 224 /* ModuleDeclaration */: return checkModuleDeclaration(node); - case 226 /* ImportDeclaration */: + case 229 /* ImportDeclaration */: return checkImportDeclaration(node); - case 225 /* ImportEqualsDeclaration */: + case 228 /* ImportEqualsDeclaration */: return checkImportEqualsDeclaration(node); - case 232 /* ExportDeclaration */: + case 235 /* ExportDeclaration */: return checkExportDeclaration(node); - case 231 /* ExportAssignment */: + case 234 /* ExportAssignment */: return checkExportAssignment(node); - case 198 /* EmptyStatement */: + case 200 /* EmptyStatement */: checkGrammarStatementInAmbientContext(node); return; - case 214 /* DebuggerStatement */: + case 216 /* DebuggerStatement */: checkGrammarStatementInAmbientContext(node); return; - case 235 /* MissingDeclaration */: + case 238 /* MissingDeclaration */: return checkMissingDeclaration(node); } } @@ -28460,17 +29479,17 @@ var ts; for (var _i = 0, deferredNodes_1 = deferredNodes; _i < deferredNodes_1.length; _i++) { var node = deferredNodes_1[_i]; switch (node.kind) { - case 177 /* FunctionExpression */: - case 178 /* ArrowFunction */: - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: + case 178 /* FunctionExpression */: + case 179 /* ArrowFunction */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: checkFunctionExpressionOrObjectLiteralMethodDeferred(node); break; - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: checkAccessorDeferred(node); break; - case 190 /* ClassExpression */: + case 191 /* ClassExpression */: checkClassExpressionDeferred(node); break; } @@ -28545,7 +29564,7 @@ var ts; function isInsideWithStatementBody(node) { if (node) { while (node.parent) { - if (node.parent.kind === 209 /* WithStatement */ && node.parent.statement === node) { + if (node.parent.kind === 211 /* WithStatement */ && node.parent.statement === node) { return true; } node = node.parent; @@ -28568,25 +29587,25 @@ var ts; copySymbols(location.locals, meaning); } switch (location.kind) { - case 252 /* SourceFile */: + case 255 /* SourceFile */: if (!ts.isExternalOrCommonJsModule(location)) { break; } - case 222 /* ModuleDeclaration */: + case 224 /* ModuleDeclaration */: copySymbols(getSymbolOfNode(location).exports, meaning & 8914931 /* ModuleMember */); break; - case 221 /* EnumDeclaration */: + case 223 /* EnumDeclaration */: copySymbols(getSymbolOfNode(location).exports, meaning & 8 /* EnumMember */); break; - case 190 /* ClassExpression */: + case 191 /* ClassExpression */: var className = location.name; if (className) { copySymbol(location.symbol, meaning); } // fall through; this fall-through is necessary because we would like to handle // type parameter inside class expression similar to how we handle it in classDeclaration and interface Declaration - case 218 /* ClassDeclaration */: - case 219 /* InterfaceDeclaration */: + case 220 /* ClassDeclaration */: + case 221 /* InterfaceDeclaration */: // If we didn't come from static member of class or interface, // add the type parameters into the symbol table // (type parameters of classDeclaration/classExpression and interface are in member property of the symbol. @@ -28595,7 +29614,7 @@ var ts; copySymbols(getSymbolOfNode(location).members, meaning & 793056 /* Type */); } break; - case 177 /* FunctionExpression */: + case 178 /* FunctionExpression */: var funcName = location.name; if (funcName) { copySymbol(location.symbol, meaning); @@ -28644,48 +29663,51 @@ var ts; } function isTypeDeclaration(node) { switch (node.kind) { - case 139 /* TypeParameter */: - case 218 /* ClassDeclaration */: - case 219 /* InterfaceDeclaration */: - case 220 /* TypeAliasDeclaration */: - case 221 /* EnumDeclaration */: + case 140 /* TypeParameter */: + case 220 /* ClassDeclaration */: + case 221 /* InterfaceDeclaration */: + case 222 /* TypeAliasDeclaration */: + case 223 /* EnumDeclaration */: return true; } } // True if the given identifier is part of a type reference function isTypeReferenceIdentifier(entityName) { var node = entityName; - while (node.parent && node.parent.kind === 137 /* QualifiedName */) { + while (node.parent && node.parent.kind === 138 /* QualifiedName */) { node = node.parent; } - return node.parent && node.parent.kind === 153 /* TypeReference */; + return node.parent && node.parent.kind === 154 /* TypeReference */; } function isHeritageClauseElementIdentifier(entityName) { var node = entityName; - while (node.parent && node.parent.kind === 170 /* PropertyAccessExpression */) { + while (node.parent && node.parent.kind === 171 /* PropertyAccessExpression */) { node = node.parent; } - return node.parent && node.parent.kind === 192 /* ExpressionWithTypeArguments */; + return node.parent && node.parent.kind === 193 /* ExpressionWithTypeArguments */; } - function isNodeWithinClass(node, classDeclaration) { + function forEachEnclosingClass(node, callback) { + var result; while (true) { node = ts.getContainingClass(node); - if (!node) { - return false; - } - if (node === classDeclaration) { - return true; - } + if (!node) + break; + if (result = callback(node)) + break; } + return result; + } + function isNodeWithinClass(node, classDeclaration) { + return !!forEachEnclosingClass(node, function (n) { return n === classDeclaration; }); } function getLeftSideOfImportEqualsOrExportAssignment(nodeOnRightSide) { - while (nodeOnRightSide.parent.kind === 137 /* QualifiedName */) { + while (nodeOnRightSide.parent.kind === 138 /* QualifiedName */) { nodeOnRightSide = nodeOnRightSide.parent; } - if (nodeOnRightSide.parent.kind === 225 /* ImportEqualsDeclaration */) { + if (nodeOnRightSide.parent.kind === 228 /* ImportEqualsDeclaration */) { return nodeOnRightSide.parent.moduleReference === nodeOnRightSide && nodeOnRightSide.parent; } - if (nodeOnRightSide.parent.kind === 231 /* ExportAssignment */) { + if (nodeOnRightSide.parent.kind === 234 /* ExportAssignment */) { return nodeOnRightSide.parent.expression === nodeOnRightSide && nodeOnRightSide.parent; } return undefined; @@ -28697,7 +29719,7 @@ var ts; if (ts.isDeclarationName(entityName)) { return getSymbolOfNode(entityName.parent); } - if (ts.isInJavaScriptFile(entityName) && entityName.parent.kind === 170 /* PropertyAccessExpression */) { + if (ts.isInJavaScriptFile(entityName) && entityName.parent.kind === 171 /* PropertyAccessExpression */) { var specialPropertyAssignmentKind = ts.getSpecialPropertyAssignmentKind(entityName.parent.parent); switch (specialPropertyAssignmentKind) { case 1 /* ExportsProperty */: @@ -28709,11 +29731,11 @@ var ts; default: } } - if (entityName.parent.kind === 231 /* ExportAssignment */) { + if (entityName.parent.kind === 234 /* ExportAssignment */) { return resolveEntityName(entityName, /*all meanings*/ 107455 /* Value */ | 793056 /* Type */ | 1536 /* Namespace */ | 8388608 /* Alias */); } - if (entityName.kind !== 170 /* PropertyAccessExpression */) { + if (entityName.kind !== 171 /* PropertyAccessExpression */) { if (isInRightSideOfImportOrExportAssignment(entityName)) { // Since we already checked for ExportAssignment, this really could only be an Import return getSymbolOfPartOfRightHandSideOfImportEquals(entityName); @@ -28725,7 +29747,7 @@ var ts; if (isHeritageClauseElementIdentifier(entityName)) { var meaning = 0 /* None */; // In an interface or class, we're definitely interested in a type. - if (entityName.parent.kind === 192 /* ExpressionWithTypeArguments */) { + if (entityName.parent.kind === 193 /* ExpressionWithTypeArguments */) { meaning = 793056 /* Type */; // In a class 'extends' clause we are also looking for a value. if (ts.isExpressionWithTypeArgumentsInClassExtendsClause(entityName.parent)) { @@ -28738,30 +29760,28 @@ var ts; meaning |= 8388608 /* Alias */; return resolveEntityName(entityName, meaning); } - else if ((entityName.parent.kind === 239 /* JsxOpeningElement */) || - (entityName.parent.kind === 238 /* JsxSelfClosingElement */) || - (entityName.parent.kind === 241 /* JsxClosingElement */)) { - return getJsxTagSymbol(entityName.parent); - } else if (ts.isExpression(entityName)) { if (ts.nodeIsMissing(entityName)) { // Missing entity name. return undefined; } if (entityName.kind === 69 /* Identifier */) { + if (ts.isJSXTagName(entityName) && isJsxIntrinsicIdentifier(entityName)) { + return getIntrinsicTagSymbol(entityName.parent); + } // Include aliases in the meaning, this ensures that we do not follow aliases to where they point and instead // return the alias symbol. var meaning = 107455 /* Value */ | 8388608 /* Alias */; return resolveEntityName(entityName, meaning); } - else if (entityName.kind === 170 /* PropertyAccessExpression */) { + else if (entityName.kind === 171 /* PropertyAccessExpression */) { var symbol = getNodeLinks(entityName).resolvedSymbol; if (!symbol) { checkPropertyAccessExpression(entityName); } return getNodeLinks(entityName).resolvedSymbol; } - else if (entityName.kind === 137 /* QualifiedName */) { + else if (entityName.kind === 138 /* QualifiedName */) { var symbol = getNodeLinks(entityName).resolvedSymbol; if (!symbol) { checkQualifiedName(entityName); @@ -28770,16 +29790,16 @@ var ts; } } else if (isTypeReferenceIdentifier(entityName)) { - var meaning = entityName.parent.kind === 153 /* TypeReference */ ? 793056 /* Type */ : 1536 /* Namespace */; + var meaning = entityName.parent.kind === 154 /* TypeReference */ ? 793056 /* Type */ : 1536 /* Namespace */; // Include aliases in the meaning, this ensures that we do not follow aliases to where they point and instead // return the alias symbol. meaning |= 8388608 /* Alias */; return resolveEntityName(entityName, meaning); } - else if (entityName.parent.kind === 242 /* JsxAttribute */) { + else if (entityName.parent.kind === 245 /* JsxAttribute */) { return getJsxAttributePropertySymbol(entityName.parent); } - if (entityName.parent.kind === 152 /* TypePredicate */) { + if (entityName.parent.kind === 153 /* TypePredicate */) { return resolveEntityName(entityName, /*meaning*/ 1 /* FunctionScopedVariable */); } // Do we want to return undefined here? @@ -28796,12 +29816,12 @@ var ts; } if (node.kind === 69 /* Identifier */) { if (isInRightSideOfImportOrExportAssignment(node)) { - return node.parent.kind === 231 /* ExportAssignment */ + return node.parent.kind === 234 /* ExportAssignment */ ? getSymbolOfEntityNameOrPropertyAccessExpression(node) : getSymbolOfPartOfRightHandSideOfImportEquals(node); } - else if (node.parent.kind === 167 /* BindingElement */ && - node.parent.parent.kind === 165 /* ObjectBindingPattern */ && + else if (node.parent.kind === 168 /* BindingElement */ && + node.parent.parent.kind === 166 /* ObjectBindingPattern */ && node === node.parent.propertyName) { var typeOfPattern = getTypeOfNode(node.parent.parent); var propertyDeclaration = typeOfPattern && getPropertyOfType(typeOfPattern, node.text); @@ -28812,19 +29832,19 @@ var ts; } switch (node.kind) { case 69 /* Identifier */: - case 170 /* PropertyAccessExpression */: - case 137 /* QualifiedName */: + case 171 /* PropertyAccessExpression */: + case 138 /* QualifiedName */: return getSymbolOfEntityNameOrPropertyAccessExpression(node); case 97 /* ThisKeyword */: case 95 /* SuperKeyword */: var type = ts.isExpression(node) ? checkExpression(node) : getTypeFromTypeNode(node); return type.symbol; - case 163 /* ThisType */: + case 164 /* ThisType */: return getTypeFromTypeNode(node).symbol; case 121 /* ConstructorKeyword */: // constructor keyword for an overload, should take us to the definition if it exist var constructorDeclaration = node.parent; - if (constructorDeclaration && constructorDeclaration.kind === 146 /* Constructor */) { + if (constructorDeclaration && constructorDeclaration.kind === 147 /* Constructor */) { return constructorDeclaration.parent.symbol; } return undefined; @@ -28832,14 +29852,14 @@ var ts; // External module name in an import declaration if ((ts.isExternalModuleImportEqualsDeclaration(node.parent.parent) && ts.getExternalModuleImportEqualsDeclarationExpression(node.parent.parent) === node) || - ((node.parent.kind === 226 /* ImportDeclaration */ || node.parent.kind === 232 /* ExportDeclaration */) && + ((node.parent.kind === 229 /* ImportDeclaration */ || node.parent.kind === 235 /* ExportDeclaration */) && node.parent.moduleSpecifier === node)) { return resolveExternalModuleName(node, node); } // Fall through case 8 /* NumericLiteral */: // index access - if (node.parent.kind === 171 /* ElementAccessExpression */ && node.parent.argumentExpression === node) { + if (node.parent.kind === 172 /* ElementAccessExpression */ && node.parent.argumentExpression === node) { var objectType = checkExpression(node.parent.expression); if (objectType === unknownType) return undefined; @@ -28856,7 +29876,7 @@ var ts; // The function returns a value symbol of an identifier in the short-hand property assignment. // This is necessary as an identifier in short-hand property assignment can contains two meaning: // property name and property value. - if (location && location.kind === 250 /* ShorthandPropertyAssignment */) { + if (location && location.kind === 253 /* ShorthandPropertyAssignment */) { return resolveEntityName(location.name, 107455 /* Value */ | 8388608 /* Alias */); } return undefined; @@ -28944,9 +29964,9 @@ var ts; function getRootSymbols(symbol) { if (symbol.flags & 268435456 /* SyntheticProperty */) { var symbols_3 = []; - var name_17 = symbol.name; + var name_19 = symbol.name; ts.forEach(getSymbolLinks(symbol).containingType.types, function (t) { - var symbol = getPropertyOfType(t, name_17); + var symbol = getPropertyOfType(t, name_19); if (symbol) { symbols_3.push(symbol); } @@ -29006,11 +30026,11 @@ var ts; } var parentSymbol = getParentOfSymbol(symbol); if (parentSymbol) { - if (parentSymbol.flags & 512 /* ValueModule */ && parentSymbol.valueDeclaration.kind === 252 /* SourceFile */) { + if (parentSymbol.flags & 512 /* ValueModule */ && parentSymbol.valueDeclaration.kind === 255 /* SourceFile */) { return parentSymbol.valueDeclaration; } for (var n = node.parent; n; n = n.parent) { - if ((n.kind === 222 /* ModuleDeclaration */ || n.kind === 221 /* EnumDeclaration */) && getSymbolOfNode(n) === parentSymbol) { + if ((n.kind === 224 /* ModuleDeclaration */ || n.kind === 223 /* EnumDeclaration */) && getSymbolOfNode(n) === parentSymbol) { return n; } } @@ -29052,7 +30072,7 @@ var ts; // they will not collide with anything var isDeclaredInLoop = nodeLinks_1.flags & 262144 /* BlockScopedBindingInLoop */; var inLoopInitializer = ts.isIterationStatement(container, /*lookInLabeledStatements*/ false); - var inLoopBodyBlock = container.kind === 196 /* Block */ && ts.isIterationStatement(container.parent, /*lookInLabeledStatements*/ false); + var inLoopBodyBlock = container.kind === 198 /* Block */ && ts.isIterationStatement(container.parent, /*lookInLabeledStatements*/ false); links.isDeclarationWithCollidingName = !ts.isBlockScopedContainerTopLevel(container) && (!isDeclaredInLoop || (!inLoopInitializer && !inLoopBodyBlock)); } else { @@ -29078,22 +30098,22 @@ var ts; } function isValueAliasDeclaration(node) { switch (node.kind) { - case 225 /* ImportEqualsDeclaration */: - case 227 /* ImportClause */: - case 228 /* NamespaceImport */: - case 230 /* ImportSpecifier */: - case 234 /* ExportSpecifier */: + case 228 /* ImportEqualsDeclaration */: + case 230 /* ImportClause */: + case 231 /* NamespaceImport */: + case 233 /* ImportSpecifier */: + case 237 /* ExportSpecifier */: return isAliasResolvedToValue(getSymbolOfNode(node)); - case 232 /* ExportDeclaration */: + case 235 /* ExportDeclaration */: var exportClause = node.exportClause; return exportClause && ts.forEach(exportClause.elements, isValueAliasDeclaration); - case 231 /* ExportAssignment */: + case 234 /* ExportAssignment */: return node.expression && node.expression.kind === 69 /* Identifier */ ? isAliasResolvedToValue(getSymbolOfNode(node)) : true; } return false; } function isTopLevelValueImportEqualsWithEntityName(node) { - if (node.parent.kind !== 252 /* SourceFile */ || !ts.isInternalModuleImportEqualsDeclaration(node)) { + if (node.parent.kind !== 255 /* SourceFile */ || !ts.isInternalModuleImportEqualsDeclaration(node)) { // parent is not source file or it is not reference to internal module return false; } @@ -29155,7 +30175,7 @@ var ts; return getNodeLinks(node).enumMemberValue; } function getConstantValue(node) { - if (node.kind === 251 /* EnumMember */) { + if (node.kind === 254 /* EnumMember */) { return getEnumMemberValue(node); } var symbol = getNodeLinks(node).resolvedSymbol; @@ -29231,9 +30251,15 @@ var ts; getSymbolDisplayBuilder().buildTypeDisplay(getReturnTypeOfSignature(signature), writer, enclosingDeclaration, flags); } function writeTypeOfExpression(expr, enclosingDeclaration, flags, writer) { - var type = getTypeOfExpression(expr); + var type = getWidenedType(getTypeOfExpression(expr)); getSymbolDisplayBuilder().buildTypeDisplay(type, writer, enclosingDeclaration, flags); } + function writeBaseConstructorTypeOfClass(node, enclosingDeclaration, flags, writer) { + var classType = getDeclaredTypeOfSymbol(getSymbolOfNode(node)); + resolveBaseTypesOfClass(classType); + var baseType = classType.resolvedBaseTypes.length ? classType.resolvedBaseTypes[0] : unknownType; + getSymbolDisplayBuilder().buildTypeDisplay(baseType, writer, enclosingDeclaration, flags); + } function hasGlobalName(name) { return ts.hasProperty(globals, name); } @@ -29263,6 +30289,7 @@ var ts; writeTypeOfDeclaration: writeTypeOfDeclaration, writeReturnTypeOfSignatureDeclaration: writeReturnTypeOfSignatureDeclaration, writeTypeOfExpression: writeTypeOfExpression, + writeBaseConstructorTypeOfClass: writeBaseConstructorTypeOfClass, isSymbolAccessible: isSymbolAccessible, isEntityNameVisible: isEntityNameVisible, getConstantValue: getConstantValue, @@ -29281,7 +30308,7 @@ var ts; if (!moduleSymbol) { return undefined; } - return ts.getDeclarationOfKind(moduleSymbol, 252 /* SourceFile */); + return ts.getDeclarationOfKind(moduleSymbol, 255 /* SourceFile */); } function initializeTypeChecker() { // Bind all source files and propagate errors @@ -29297,6 +30324,9 @@ var ts; if (file.moduleAugmentations.length) { (augmentations || (augmentations = [])).push(file.moduleAugmentations); } + if (file.wasReferenced && file.symbol && file.symbol.globalExports) { + mergeSymbolTable(globals, file.symbol.globalExports); + } }); if (augmentations) { // merge module augmentations. @@ -29328,6 +30358,7 @@ var ts; getGlobalMethodDecoratorType = ts.memoize(function () { return getGlobalType("MethodDecorator"); }); getGlobalParameterDecoratorType = ts.memoize(function () { return getGlobalType("ParameterDecorator"); }); getGlobalTypedPropertyDescriptorType = ts.memoize(function () { return getGlobalType("TypedPropertyDescriptor", /*arity*/ 1); }); + getGlobalESSymbolConstructorSymbol = ts.memoize(function () { return getGlobalValueSymbol("Symbol"); }); getGlobalPromiseType = ts.memoize(function () { return getGlobalType("Promise", /*arity*/ 1); }); tryGetGlobalPromiseType = ts.memoize(function () { return getGlobalSymbol("Promise", 793056 /* Type */, /*diagnostic*/ undefined) && getGlobalPromiseType(); }); getGlobalPromiseLikeType = ts.memoize(function () { return getGlobalType("PromiseLike", /*arity*/ 1); }); @@ -29335,26 +30366,18 @@ var ts; getGlobalPromiseConstructorSymbol = ts.memoize(function () { return getGlobalValueSymbol("Promise"); }); getGlobalPromiseConstructorLikeType = ts.memoize(function () { return getGlobalType("PromiseConstructorLike"); }); getGlobalThenableType = ts.memoize(createThenableType); - // If we're in ES6 mode, load the TemplateStringsArray. - // Otherwise, default to 'unknown' for the purposes of type checking in LS scenarios. + getGlobalTemplateStringsArrayType = ts.memoize(function () { return getGlobalType("TemplateStringsArray"); }); if (languageVersion >= 2 /* ES6 */) { - globalTemplateStringsArrayType = getGlobalType("TemplateStringsArray"); - globalESSymbolType = getGlobalType("Symbol"); - globalESSymbolConstructorSymbol = getGlobalValueSymbol("Symbol"); - globalIterableType = getGlobalType("Iterable", /*arity*/ 1); - globalIteratorType = getGlobalType("Iterator", /*arity*/ 1); - globalIterableIteratorType = getGlobalType("IterableIterator", /*arity*/ 1); + getGlobalESSymbolType = ts.memoize(function () { return getGlobalType("Symbol"); }); + getGlobalIterableType = ts.memoize(function () { return getGlobalType("Iterable", /*arity*/ 1); }); + getGlobalIteratorType = ts.memoize(function () { return getGlobalType("Iterator", /*arity*/ 1); }); + getGlobalIterableIteratorType = ts.memoize(function () { return getGlobalType("IterableIterator", /*arity*/ 1); }); } else { - globalTemplateStringsArrayType = unknownType; - // Consider putting Symbol interface in lib.d.ts. On the plus side, putting it in lib.d.ts would make it - // extensible for Polyfilling Symbols. But putting it into lib.d.ts could also break users that have - // a global Symbol already, particularly if it is a class. - globalESSymbolType = createAnonymousType(undefined, emptySymbols, emptyArray, emptyArray, undefined, undefined); - globalESSymbolConstructorSymbol = undefined; - globalIterableType = emptyGenericType; - globalIteratorType = emptyGenericType; - globalIterableIteratorType = emptyGenericType; + getGlobalESSymbolType = ts.memoize(function () { return emptyObjectType; }); + getGlobalIterableType = ts.memoize(function () { return emptyGenericType; }); + getGlobalIteratorType = ts.memoize(function () { return emptyGenericType; }); + getGlobalIterableIteratorType = ts.memoize(function () { return emptyGenericType; }); } anyArrayType = createArrayType(anyType); var symbol = getGlobalSymbol("ReadonlyArray", 793056 /* Type */, /*diagnostic*/ undefined); @@ -29385,14 +30408,14 @@ var ts; return false; } if (!ts.nodeCanBeDecorated(node)) { - if (node.kind === 145 /* MethodDeclaration */ && !ts.nodeIsPresent(node.body)) { + if (node.kind === 146 /* MethodDeclaration */ && !ts.nodeIsPresent(node.body)) { return grammarErrorOnFirstToken(node, ts.Diagnostics.A_decorator_can_only_decorate_a_method_implementation_not_an_overload); } else { return grammarErrorOnFirstToken(node, ts.Diagnostics.Decorators_are_not_valid_here); } } - else if (node.kind === 147 /* GetAccessor */ || node.kind === 148 /* SetAccessor */) { + else if (node.kind === 148 /* GetAccessor */ || node.kind === 149 /* SetAccessor */) { var accessors = ts.getAllAccessorDeclarations(node.parent.members, node); if (accessors.firstAccessor.decorators && node === accessors.secondAccessor) { return grammarErrorOnFirstToken(node, ts.Diagnostics.Decorators_cannot_be_applied_to_multiple_get_Slashset_accessors_of_the_same_name); @@ -29402,38 +30425,38 @@ var ts; } function checkGrammarModifiers(node) { switch (node.kind) { - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: - case 146 /* Constructor */: - case 143 /* PropertyDeclaration */: - case 142 /* PropertySignature */: - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: - case 151 /* IndexSignature */: - case 222 /* ModuleDeclaration */: - case 226 /* ImportDeclaration */: - case 225 /* ImportEqualsDeclaration */: - case 232 /* ExportDeclaration */: - case 231 /* ExportAssignment */: - case 140 /* Parameter */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: + case 147 /* Constructor */: + case 144 /* PropertyDeclaration */: + case 143 /* PropertySignature */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: + case 152 /* IndexSignature */: + case 224 /* ModuleDeclaration */: + case 229 /* ImportDeclaration */: + case 228 /* ImportEqualsDeclaration */: + case 235 /* ExportDeclaration */: + case 234 /* ExportAssignment */: + case 141 /* Parameter */: break; - case 217 /* FunctionDeclaration */: + case 219 /* FunctionDeclaration */: if (node.modifiers && (node.modifiers.length > 1 || node.modifiers[0].kind !== 118 /* AsyncKeyword */) && - node.parent.kind !== 223 /* ModuleBlock */ && node.parent.kind !== 252 /* SourceFile */) { + node.parent.kind !== 225 /* ModuleBlock */ && node.parent.kind !== 255 /* SourceFile */) { return grammarErrorOnFirstToken(node, ts.Diagnostics.Modifiers_cannot_appear_here); } break; - case 218 /* ClassDeclaration */: - case 219 /* InterfaceDeclaration */: - case 197 /* VariableStatement */: - case 220 /* TypeAliasDeclaration */: - if (node.modifiers && node.parent.kind !== 223 /* ModuleBlock */ && node.parent.kind !== 252 /* SourceFile */) { + case 220 /* ClassDeclaration */: + case 221 /* InterfaceDeclaration */: + case 199 /* VariableStatement */: + case 222 /* TypeAliasDeclaration */: + if (node.modifiers && node.parent.kind !== 225 /* ModuleBlock */ && node.parent.kind !== 255 /* SourceFile */) { return grammarErrorOnFirstToken(node, ts.Diagnostics.Modifiers_cannot_appear_here); } break; - case 221 /* EnumDeclaration */: + case 223 /* EnumDeclaration */: if (node.modifiers && (node.modifiers.length > 1 || node.modifiers[0].kind !== 74 /* ConstKeyword */) && - node.parent.kind !== 223 /* ModuleBlock */ && node.parent.kind !== 252 /* SourceFile */) { + node.parent.kind !== 225 /* ModuleBlock */ && node.parent.kind !== 255 /* SourceFile */) { return grammarErrorOnFirstToken(node, ts.Diagnostics.Modifiers_cannot_appear_here); } break; @@ -29448,16 +30471,16 @@ var ts; for (var _i = 0, _a = node.modifiers; _i < _a.length; _i++) { var modifier = _a[_i]; if (modifier.kind !== 127 /* ReadonlyKeyword */) { - if (node.kind === 142 /* PropertySignature */ || node.kind === 144 /* MethodSignature */) { + if (node.kind === 143 /* PropertySignature */ || node.kind === 145 /* MethodSignature */) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_type_member, ts.tokenToString(modifier.kind)); } - if (node.kind === 151 /* IndexSignature */) { + if (node.kind === 152 /* IndexSignature */) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_an_index_signature, ts.tokenToString(modifier.kind)); } } switch (modifier.kind) { case 74 /* ConstKeyword */: - if (node.kind !== 221 /* EnumDeclaration */ && node.parent.kind === 218 /* ClassDeclaration */) { + if (node.kind !== 223 /* EnumDeclaration */ && node.parent.kind === 220 /* ClassDeclaration */) { return grammarErrorOnNode(node, ts.Diagnostics.A_class_member_cannot_have_the_0_keyword, ts.tokenToString(74 /* ConstKeyword */)); } break; @@ -29483,7 +30506,7 @@ var ts; else if (flags & 256 /* Async */) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_must_precede_1_modifier, text, "async"); } - else if (node.parent.kind === 223 /* ModuleBlock */ || node.parent.kind === 252 /* SourceFile */) { + else if (node.parent.kind === 225 /* ModuleBlock */ || node.parent.kind === 255 /* SourceFile */) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_module_or_namespace_element, text); } else if (flags & 128 /* Abstract */) { @@ -29506,10 +30529,10 @@ var ts; else if (flags & 256 /* Async */) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_must_precede_1_modifier, "static", "async"); } - else if (node.parent.kind === 223 /* ModuleBlock */ || node.parent.kind === 252 /* SourceFile */) { + else if (node.parent.kind === 225 /* ModuleBlock */ || node.parent.kind === 255 /* SourceFile */) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_module_or_namespace_element, "static"); } - else if (node.kind === 140 /* Parameter */) { + else if (node.kind === 141 /* Parameter */) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_parameter, "static"); } else if (flags & 128 /* Abstract */) { @@ -29522,7 +30545,7 @@ var ts; if (flags & 64 /* Readonly */) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_already_seen, "readonly"); } - else if (node.kind !== 143 /* PropertyDeclaration */ && node.kind !== 142 /* PropertySignature */ && node.kind !== 151 /* IndexSignature */) { + else if (node.kind !== 144 /* PropertyDeclaration */ && node.kind !== 143 /* PropertySignature */ && node.kind !== 152 /* IndexSignature */) { return grammarErrorOnNode(modifier, ts.Diagnostics.readonly_modifier_can_only_appear_on_a_property_declaration_or_index_signature); } flags |= 64 /* Readonly */; @@ -29541,10 +30564,10 @@ var ts; else if (flags & 256 /* Async */) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_must_precede_1_modifier, "export", "async"); } - else if (node.parent.kind === 218 /* ClassDeclaration */) { + else if (node.parent.kind === 220 /* ClassDeclaration */) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_class_element, "export"); } - else if (node.kind === 140 /* Parameter */) { + else if (node.kind === 141 /* Parameter */) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_parameter, "export"); } flags |= 1 /* Export */; @@ -29556,13 +30579,13 @@ var ts; else if (flags & 256 /* Async */) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_be_used_in_an_ambient_context, "async"); } - else if (node.parent.kind === 218 /* ClassDeclaration */) { + else if (node.parent.kind === 220 /* ClassDeclaration */) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_class_element, "declare"); } - else if (node.kind === 140 /* Parameter */) { + else if (node.kind === 141 /* Parameter */) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_parameter, "declare"); } - else if (ts.isInAmbientContext(node.parent) && node.parent.kind === 223 /* ModuleBlock */) { + else if (ts.isInAmbientContext(node.parent) && node.parent.kind === 225 /* ModuleBlock */) { return grammarErrorOnNode(modifier, ts.Diagnostics.A_declare_modifier_cannot_be_used_in_an_already_ambient_context); } flags |= 2 /* Ambient */; @@ -29572,14 +30595,14 @@ var ts; if (flags & 128 /* Abstract */) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_already_seen, "abstract"); } - if (node.kind !== 218 /* ClassDeclaration */) { - if (node.kind !== 145 /* MethodDeclaration */ && - node.kind !== 143 /* PropertyDeclaration */ && - node.kind !== 147 /* GetAccessor */ && - node.kind !== 148 /* SetAccessor */) { + if (node.kind !== 220 /* ClassDeclaration */) { + if (node.kind !== 146 /* MethodDeclaration */ && + node.kind !== 144 /* PropertyDeclaration */ && + node.kind !== 148 /* GetAccessor */ && + node.kind !== 149 /* SetAccessor */) { return grammarErrorOnNode(modifier, ts.Diagnostics.abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration); } - if (!(node.parent.kind === 218 /* ClassDeclaration */ && node.parent.flags & 128 /* Abstract */)) { + if (!(node.parent.kind === 220 /* ClassDeclaration */ && node.parent.flags & 128 /* Abstract */)) { return grammarErrorOnNode(modifier, ts.Diagnostics.Abstract_methods_can_only_appear_within_an_abstract_class); } if (flags & 32 /* Static */) { @@ -29598,7 +30621,7 @@ var ts; else if (flags & 2 /* Ambient */ || ts.isInAmbientContext(node.parent)) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_be_used_in_an_ambient_context, "async"); } - else if (node.kind === 140 /* Parameter */) { + else if (node.kind === 141 /* Parameter */) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_parameter, "async"); } flags |= 256 /* Async */; @@ -29606,7 +30629,7 @@ var ts; break; } } - if (node.kind === 146 /* Constructor */) { + if (node.kind === 147 /* Constructor */) { if (flags & 32 /* Static */) { return grammarErrorOnNode(lastStatic, ts.Diagnostics._0_modifier_cannot_appear_on_a_constructor_declaration, "static"); } @@ -29621,10 +30644,10 @@ var ts; } return; } - else if ((node.kind === 226 /* ImportDeclaration */ || node.kind === 225 /* ImportEqualsDeclaration */) && flags & 2 /* Ambient */) { + else if ((node.kind === 229 /* ImportDeclaration */ || node.kind === 228 /* ImportEqualsDeclaration */) && flags & 2 /* Ambient */) { return grammarErrorOnNode(lastDeclare, ts.Diagnostics.A_0_modifier_cannot_be_used_with_an_import_declaration, "declare"); } - else if (node.kind === 140 /* Parameter */ && (flags & 28 /* AccessibilityModifier */) && ts.isBindingPattern(node.name)) { + else if (node.kind === 141 /* Parameter */ && (flags & 28 /* AccessibilityModifier */) && ts.isBindingPattern(node.name)) { return grammarErrorOnNode(node, ts.Diagnostics.A_parameter_property_may_not_be_a_binding_pattern); } if (flags & 256 /* Async */) { @@ -29636,10 +30659,10 @@ var ts; return grammarErrorOnNode(asyncModifier, ts.Diagnostics.Async_functions_are_only_available_when_targeting_ECMAScript_6_and_higher); } switch (node.kind) { - case 145 /* MethodDeclaration */: - case 217 /* FunctionDeclaration */: - case 177 /* FunctionExpression */: - case 178 /* ArrowFunction */: + case 146 /* MethodDeclaration */: + case 219 /* FunctionDeclaration */: + case 178 /* FunctionExpression */: + case 179 /* ArrowFunction */: if (!node.asteriskToken) { return false; } @@ -29705,7 +30728,7 @@ var ts; checkGrammarParameterList(node.parameters) || checkGrammarArrowFunction(node, file); } function checkGrammarArrowFunction(node, file) { - if (node.kind === 178 /* ArrowFunction */) { + if (node.kind === 179 /* ArrowFunction */) { var arrowFunction = node; var startLine = ts.getLineAndCharacterOfPosition(file, arrowFunction.equalsGreaterThanToken.pos).line; var endLine = ts.getLineAndCharacterOfPosition(file, arrowFunction.equalsGreaterThanToken.end).line; @@ -29768,7 +30791,7 @@ var ts; var sourceFile = ts.getSourceFileOfNode(node); for (var _i = 0, args_1 = args; _i < args_1.length; _i++) { var arg = args_1[_i]; - if (arg.kind === 191 /* OmittedExpression */) { + if (arg.kind === 192 /* OmittedExpression */) { return grammarErrorAtPos(sourceFile, arg.pos, 0, ts.Diagnostics.Argument_expression_expected); } } @@ -29842,19 +30865,19 @@ var ts; } function checkGrammarComputedPropertyName(node) { // If node is not a computedPropertyName, just skip the grammar checking - if (node.kind !== 138 /* ComputedPropertyName */) { + if (node.kind !== 139 /* ComputedPropertyName */) { return false; } var computedPropertyName = node; - if (computedPropertyName.expression.kind === 185 /* BinaryExpression */ && computedPropertyName.expression.operatorToken.kind === 24 /* CommaToken */) { + if (computedPropertyName.expression.kind === 186 /* BinaryExpression */ && computedPropertyName.expression.operatorToken.kind === 24 /* CommaToken */) { return grammarErrorOnNode(computedPropertyName.expression, ts.Diagnostics.A_comma_expression_is_not_allowed_in_a_computed_property_name); } } function checkGrammarForGenerator(node) { if (node.asteriskToken) { - ts.Debug.assert(node.kind === 217 /* FunctionDeclaration */ || - node.kind === 177 /* FunctionExpression */ || - node.kind === 145 /* MethodDeclaration */); + ts.Debug.assert(node.kind === 219 /* FunctionDeclaration */ || + node.kind === 178 /* FunctionExpression */ || + node.kind === 146 /* MethodDeclaration */); if (ts.isInAmbientContext(node)) { return grammarErrorOnNode(node.asteriskToken, ts.Diagnostics.Generators_are_not_allowed_in_an_ambient_context); } @@ -29878,21 +30901,21 @@ var ts; var SetAccessor = 4; var GetOrSetAccessor = GetAccessor | SetAccessor; var _loop_1 = function(prop) { - var name_18 = prop.name; - if (prop.kind === 191 /* OmittedExpression */ || - name_18.kind === 138 /* ComputedPropertyName */) { + var name_20 = prop.name; + if (prop.kind === 192 /* OmittedExpression */ || + name_20.kind === 139 /* ComputedPropertyName */) { // If the name is not a ComputedPropertyName, the grammar checking will skip it - checkGrammarComputedPropertyName(name_18); + checkGrammarComputedPropertyName(name_20); return "continue"; } - if (prop.kind === 250 /* ShorthandPropertyAssignment */ && !inDestructuring && prop.objectAssignmentInitializer) { + if (prop.kind === 253 /* ShorthandPropertyAssignment */ && !inDestructuring && prop.objectAssignmentInitializer) { // having objectAssignmentInitializer is only valid in ObjectAssignmentPattern // outside of destructuring it is a syntax error return { value: grammarErrorOnNode(prop.equalsToken, ts.Diagnostics.can_only_be_used_in_an_object_literal_property_inside_a_destructuring_assignment) }; } // Modifiers are never allowed on properties except for 'async' on a method declaration ts.forEach(prop.modifiers, function (mod) { - if (mod.kind !== 118 /* AsyncKeyword */ || prop.kind !== 145 /* MethodDeclaration */) { + if (mod.kind !== 118 /* AsyncKeyword */ || prop.kind !== 146 /* MethodDeclaration */) { grammarErrorOnNode(mod, ts.Diagnostics._0_modifier_cannot_be_used_here, ts.getTextOfNode(mod)); } }); @@ -29905,44 +30928,44 @@ var ts; // d.IsAccessorDescriptor(previous) is true and IsAccessorDescriptor(propId.descriptor) is true // and either both previous and propId.descriptor have[[Get]] fields or both previous and propId.descriptor have[[Set]] fields var currentKind = void 0; - if (prop.kind === 249 /* PropertyAssignment */ || prop.kind === 250 /* ShorthandPropertyAssignment */) { + if (prop.kind === 252 /* PropertyAssignment */ || prop.kind === 253 /* ShorthandPropertyAssignment */) { // Grammar checking for computedPropertyName and shorthandPropertyAssignment checkGrammarForInvalidQuestionMark(prop, prop.questionToken, ts.Diagnostics.An_object_member_cannot_be_declared_optional); - if (name_18.kind === 8 /* NumericLiteral */) { - checkGrammarNumericLiteral(name_18); + if (name_20.kind === 8 /* NumericLiteral */) { + checkGrammarNumericLiteral(name_20); } currentKind = Property; } - else if (prop.kind === 145 /* MethodDeclaration */) { + else if (prop.kind === 146 /* MethodDeclaration */) { currentKind = Property; } - else if (prop.kind === 147 /* GetAccessor */) { + else if (prop.kind === 148 /* GetAccessor */) { currentKind = GetAccessor; } - else if (prop.kind === 148 /* SetAccessor */) { + else if (prop.kind === 149 /* SetAccessor */) { currentKind = SetAccessor; } else { ts.Debug.fail("Unexpected syntax kind:" + prop.kind); } - if (!ts.hasProperty(seen, name_18.text)) { - seen[name_18.text] = currentKind; + if (!ts.hasProperty(seen, name_20.text)) { + seen[name_20.text] = currentKind; } else { - var existingKind = seen[name_18.text]; + var existingKind = seen[name_20.text]; if (currentKind === Property && existingKind === Property) { return "continue"; } else if ((currentKind & GetOrSetAccessor) && (existingKind & GetOrSetAccessor)) { if (existingKind !== GetOrSetAccessor && currentKind !== existingKind) { - seen[name_18.text] = currentKind | existingKind; + seen[name_20.text] = currentKind | existingKind; } else { - return { value: grammarErrorOnNode(name_18, ts.Diagnostics.An_object_literal_cannot_have_multiple_get_Slashset_accessors_with_the_same_name) }; + return { value: grammarErrorOnNode(name_20, ts.Diagnostics.An_object_literal_cannot_have_multiple_get_Slashset_accessors_with_the_same_name) }; } } else { - return { value: grammarErrorOnNode(name_18, ts.Diagnostics.An_object_literal_cannot_have_property_and_accessor_with_the_same_name) }; + return { value: grammarErrorOnNode(name_20, ts.Diagnostics.An_object_literal_cannot_have_property_and_accessor_with_the_same_name) }; } } }; @@ -29950,26 +30973,25 @@ var ts; var prop = _a[_i]; var state_2 = _loop_1(prop); if (typeof state_2 === "object") return state_2.value; - if (state_2 === "continue") continue; } } function checkGrammarJsxElement(node) { var seen = {}; for (var _i = 0, _a = node.attributes; _i < _a.length; _i++) { var attr = _a[_i]; - if (attr.kind === 243 /* JsxSpreadAttribute */) { + if (attr.kind === 246 /* JsxSpreadAttribute */) { continue; } var jsxAttr = attr; - var name_19 = jsxAttr.name; - if (!ts.hasProperty(seen, name_19.text)) { - seen[name_19.text] = true; + var name_21 = jsxAttr.name; + if (!ts.hasProperty(seen, name_21.text)) { + seen[name_21.text] = true; } else { - return grammarErrorOnNode(name_19, ts.Diagnostics.JSX_elements_cannot_have_multiple_attributes_with_the_same_name); + return grammarErrorOnNode(name_21, ts.Diagnostics.JSX_elements_cannot_have_multiple_attributes_with_the_same_name); } var initializer = jsxAttr.initializer; - if (initializer && initializer.kind === 244 /* JsxExpression */ && !initializer.expression) { + if (initializer && initializer.kind === 247 /* JsxExpression */ && !initializer.expression) { return grammarErrorOnNode(jsxAttr.initializer, ts.Diagnostics.JSX_attributes_must_only_be_assigned_a_non_empty_expression); } } @@ -29978,7 +31000,7 @@ var ts; if (checkGrammarStatementInAmbientContext(forInOrOfStatement)) { return true; } - if (forInOrOfStatement.initializer.kind === 216 /* VariableDeclarationList */) { + if (forInOrOfStatement.initializer.kind === 218 /* VariableDeclarationList */) { var variableList = forInOrOfStatement.initializer; if (!checkGrammarVariableDeclarationList(variableList)) { var declarations = variableList.declarations; @@ -29993,20 +31015,20 @@ var ts; return false; } if (declarations.length > 1) { - var diagnostic = forInOrOfStatement.kind === 204 /* ForInStatement */ + var diagnostic = forInOrOfStatement.kind === 206 /* ForInStatement */ ? ts.Diagnostics.Only_a_single_variable_declaration_is_allowed_in_a_for_in_statement : ts.Diagnostics.Only_a_single_variable_declaration_is_allowed_in_a_for_of_statement; return grammarErrorOnFirstToken(variableList.declarations[1], diagnostic); } var firstDeclaration = declarations[0]; if (firstDeclaration.initializer) { - var diagnostic = forInOrOfStatement.kind === 204 /* ForInStatement */ + var diagnostic = forInOrOfStatement.kind === 206 /* ForInStatement */ ? ts.Diagnostics.The_variable_declaration_of_a_for_in_statement_cannot_have_an_initializer : ts.Diagnostics.The_variable_declaration_of_a_for_of_statement_cannot_have_an_initializer; return grammarErrorOnNode(firstDeclaration.name, diagnostic); } if (firstDeclaration.type) { - var diagnostic = forInOrOfStatement.kind === 204 /* ForInStatement */ + var diagnostic = forInOrOfStatement.kind === 206 /* ForInStatement */ ? ts.Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_use_a_type_annotation : ts.Diagnostics.The_left_hand_side_of_a_for_of_statement_cannot_use_a_type_annotation; return grammarErrorOnNode(firstDeclaration, diagnostic); @@ -30029,10 +31051,10 @@ var ts; else if (accessor.typeParameters) { return grammarErrorOnNode(accessor.name, ts.Diagnostics.An_accessor_cannot_have_type_parameters); } - else if (kind === 147 /* GetAccessor */ && accessor.parameters.length) { + else if (kind === 148 /* GetAccessor */ && accessor.parameters.length) { return grammarErrorOnNode(accessor.name, ts.Diagnostics.A_get_accessor_cannot_have_parameters); } - else if (kind === 148 /* SetAccessor */) { + else if (kind === 149 /* SetAccessor */) { if (accessor.type) { return grammarErrorOnNode(accessor.name, ts.Diagnostics.A_set_accessor_cannot_have_a_return_type_annotation); } @@ -30067,7 +31089,7 @@ var ts; checkGrammarForGenerator(node)) { return true; } - if (node.parent.kind === 169 /* ObjectLiteralExpression */) { + if (node.parent.kind === 170 /* ObjectLiteralExpression */) { if (checkGrammarForInvalidQuestionMark(node, node.questionToken, ts.Diagnostics.A_class_member_cannot_be_declared_optional)) { return true; } @@ -30091,10 +31113,10 @@ var ts; return checkGrammarForNonSymbolComputedProperty(node.name, ts.Diagnostics.A_computed_property_name_in_a_method_overload_must_directly_refer_to_a_built_in_symbol); } } - else if (node.parent.kind === 219 /* InterfaceDeclaration */) { + else if (node.parent.kind === 221 /* InterfaceDeclaration */) { return checkGrammarForNonSymbolComputedProperty(node.name, ts.Diagnostics.A_computed_property_name_in_an_interface_must_directly_refer_to_a_built_in_symbol); } - else if (node.parent.kind === 157 /* TypeLiteral */) { + else if (node.parent.kind === 158 /* TypeLiteral */) { return checkGrammarForNonSymbolComputedProperty(node.name, ts.Diagnostics.A_computed_property_name_in_a_type_literal_must_directly_refer_to_a_built_in_symbol); } } @@ -30105,11 +31127,11 @@ var ts; return grammarErrorOnNode(node, ts.Diagnostics.Jump_target_cannot_cross_function_boundary); } switch (current.kind) { - case 211 /* LabeledStatement */: + case 213 /* LabeledStatement */: if (node.label && current.label.text === node.label.text) { // found matching label - verify that label usage is correct // continue can only target labels that are on iteration statements - var isMisplacedContinueLabel = node.kind === 206 /* ContinueStatement */ + var isMisplacedContinueLabel = node.kind === 208 /* ContinueStatement */ && !ts.isIterationStatement(current.statement, /*lookInLabeledStatement*/ true); if (isMisplacedContinueLabel) { return grammarErrorOnNode(node, ts.Diagnostics.A_continue_statement_can_only_jump_to_a_label_of_an_enclosing_iteration_statement); @@ -30117,8 +31139,8 @@ var ts; return false; } break; - case 210 /* SwitchStatement */: - if (node.kind === 207 /* BreakStatement */ && !node.label) { + case 212 /* SwitchStatement */: + if (node.kind === 209 /* BreakStatement */ && !node.label) { // unlabeled break within switch statement - ok return false; } @@ -30133,13 +31155,13 @@ var ts; current = current.parent; } if (node.label) { - var message = node.kind === 207 /* BreakStatement */ + var message = node.kind === 209 /* BreakStatement */ ? ts.Diagnostics.A_break_statement_can_only_jump_to_a_label_of_an_enclosing_statement : ts.Diagnostics.A_continue_statement_can_only_jump_to_a_label_of_an_enclosing_iteration_statement; return grammarErrorOnNode(node, message); } else { - var message = node.kind === 207 /* BreakStatement */ + var message = node.kind === 209 /* BreakStatement */ ? ts.Diagnostics.A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement : ts.Diagnostics.A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement; return grammarErrorOnNode(node, message); @@ -30151,7 +31173,7 @@ var ts; if (node !== ts.lastOrUndefined(elements)) { return grammarErrorOnNode(node, ts.Diagnostics.A_rest_element_must_be_last_in_an_array_destructuring_pattern); } - if (node.name.kind === 166 /* ArrayBindingPattern */ || node.name.kind === 165 /* ObjectBindingPattern */) { + if (node.name.kind === 167 /* ArrayBindingPattern */ || node.name.kind === 166 /* ObjectBindingPattern */) { return grammarErrorOnNode(node.name, ts.Diagnostics.A_rest_element_cannot_contain_a_binding_pattern); } if (node.initializer) { @@ -30161,7 +31183,7 @@ var ts; } } function checkGrammarVariableDeclaration(node) { - if (node.parent.parent.kind !== 204 /* ForInStatement */ && node.parent.parent.kind !== 205 /* ForOfStatement */) { + if (node.parent.parent.kind !== 206 /* ForInStatement */ && node.parent.parent.kind !== 207 /* ForOfStatement */) { if (ts.isInAmbientContext(node)) { if (node.initializer) { // Error on equals token which immediate precedes the initializer @@ -30197,7 +31219,7 @@ var ts; var elements = name.elements; for (var _i = 0, elements_2 = elements; _i < elements_2.length; _i++) { var element = elements_2[_i]; - if (element.kind !== 191 /* OmittedExpression */) { + if (element.kind !== 192 /* OmittedExpression */) { checkGrammarNameInLetOrConstDeclarations(element.name); } } @@ -30214,15 +31236,15 @@ var ts; } function allowLetAndConstDeclarations(parent) { switch (parent.kind) { - case 200 /* IfStatement */: - case 201 /* DoStatement */: - case 202 /* WhileStatement */: - case 209 /* WithStatement */: - case 203 /* ForStatement */: - case 204 /* ForInStatement */: - case 205 /* ForOfStatement */: + case 202 /* IfStatement */: + case 203 /* DoStatement */: + case 204 /* WhileStatement */: + case 211 /* WithStatement */: + case 205 /* ForStatement */: + case 206 /* ForInStatement */: + case 207 /* ForOfStatement */: return false; - case 211 /* LabeledStatement */: + case 213 /* LabeledStatement */: return allowLetAndConstDeclarations(parent.parent); } return true; @@ -30278,7 +31300,7 @@ var ts; return true; } } - else if (node.parent.kind === 219 /* InterfaceDeclaration */) { + else if (node.parent.kind === 221 /* InterfaceDeclaration */) { if (checkGrammarForNonSymbolComputedProperty(node.name, ts.Diagnostics.A_computed_property_name_in_an_interface_must_directly_refer_to_a_built_in_symbol)) { return true; } @@ -30286,7 +31308,7 @@ var ts; return grammarErrorOnNode(node.initializer, ts.Diagnostics.An_interface_property_cannot_have_an_initializer); } } - else if (node.parent.kind === 157 /* TypeLiteral */) { + else if (node.parent.kind === 158 /* TypeLiteral */) { if (checkGrammarForNonSymbolComputedProperty(node.name, ts.Diagnostics.A_computed_property_name_in_a_type_literal_must_directly_refer_to_a_built_in_symbol)) { return true; } @@ -30311,12 +31333,12 @@ var ts; // export_opt AmbientDeclaration // // TODO: The spec needs to be amended to reflect this grammar. - if (node.kind === 219 /* InterfaceDeclaration */ || - node.kind === 220 /* TypeAliasDeclaration */ || - node.kind === 226 /* ImportDeclaration */ || - node.kind === 225 /* ImportEqualsDeclaration */ || - node.kind === 232 /* ExportDeclaration */ || - node.kind === 231 /* ExportAssignment */ || + if (node.kind === 221 /* InterfaceDeclaration */ || + node.kind === 222 /* TypeAliasDeclaration */ || + node.kind === 229 /* ImportDeclaration */ || + node.kind === 228 /* ImportEqualsDeclaration */ || + node.kind === 235 /* ExportDeclaration */ || + node.kind === 234 /* ExportAssignment */ || (node.flags & 2 /* Ambient */) || (node.flags & (1 /* Export */ | 512 /* Default */))) { return false; @@ -30326,7 +31348,7 @@ var ts; function checkGrammarTopLevelElementsForRequiredDeclareModifier(file) { for (var _i = 0, _a = file.statements; _i < _a.length; _i++) { var decl = _a[_i]; - if (ts.isDeclaration(decl) || decl.kind === 197 /* VariableStatement */) { + if (ts.isDeclaration(decl) || decl.kind === 199 /* VariableStatement */) { if (checkGrammarTopLevelElementForRequiredDeclareModifier(decl)) { return true; } @@ -30352,7 +31374,7 @@ var ts; // to prevent noisiness. So use a bit on the block to indicate if // this has already been reported, and don't report if it has. // - if (node.parent.kind === 196 /* Block */ || node.parent.kind === 223 /* ModuleBlock */ || node.parent.kind === 252 /* SourceFile */) { + if (node.parent.kind === 198 /* Block */ || node.parent.kind === 225 /* ModuleBlock */ || node.parent.kind === 255 /* SourceFile */) { var links_1 = getNodeLinks(node.parent); // Check if the containing block ever report this error if (!links_1.hasReportedStatementInAmbientContext) { @@ -30708,7 +31730,7 @@ var ts; function getDeclarationDiagnostics(host, resolver, targetSourceFile) { var declarationDiagnostics = ts.createDiagnosticCollection(); ts.forEachExpectedEmitFile(host, getDeclarationDiagnosticsFromFile, targetSourceFile); - return declarationDiagnostics.getDiagnostics(targetSourceFile.fileName); + return declarationDiagnostics.getDiagnostics(targetSourceFile ? targetSourceFile.fileName : undefined); function getDeclarationDiagnosticsFromFile(_a, sources, isBundledEmit) { var declarationFilePath = _a.declarationFilePath; emitDeclarations(host, resolver, declarationDiagnostics, declarationFilePath, sources, isBundledEmit); @@ -30788,7 +31810,7 @@ var ts; var oldWriter = writer; ts.forEach(moduleElementDeclarationEmitInfo, function (aliasEmitInfo) { if (aliasEmitInfo.isVisible && !aliasEmitInfo.asynchronousOutput) { - ts.Debug.assert(aliasEmitInfo.node.kind === 226 /* ImportDeclaration */); + ts.Debug.assert(aliasEmitInfo.node.kind === 229 /* ImportDeclaration */); createAndSetNewTextWriterWithSymbolWriter(); ts.Debug.assert(aliasEmitInfo.indent === 0 || (aliasEmitInfo.indent === 1 && isBundledEmit)); for (var i = 0; i < aliasEmitInfo.indent; i++) { @@ -30857,10 +31879,10 @@ var ts; var oldWriter = writer; ts.forEach(nodes, function (declaration) { var nodeToCheck; - if (declaration.kind === 215 /* VariableDeclaration */) { + if (declaration.kind === 217 /* VariableDeclaration */) { nodeToCheck = declaration.parent.parent; } - else if (declaration.kind === 229 /* NamedImports */ || declaration.kind === 230 /* ImportSpecifier */ || declaration.kind === 227 /* ImportClause */) { + else if (declaration.kind === 232 /* NamedImports */ || declaration.kind === 233 /* ImportSpecifier */ || declaration.kind === 230 /* ImportClause */) { ts.Debug.fail("We should be getting ImportDeclaration instead to write"); } else { @@ -30878,7 +31900,7 @@ var ts; // Writing of function bar would mark alias declaration foo as visible but we haven't yet visited that declaration so do nothing, // we would write alias foo declaration when we visit it since it would now be marked as visible if (moduleElementEmitInfo) { - if (moduleElementEmitInfo.node.kind === 226 /* ImportDeclaration */) { + if (moduleElementEmitInfo.node.kind === 229 /* ImportDeclaration */) { // we have to create asynchronous output only after we have collected complete information // because it is possible to enable multiple bindings as asynchronously visible moduleElementEmitInfo.isVisible = true; @@ -30888,12 +31910,12 @@ var ts; for (var declarationIndent = moduleElementEmitInfo.indent; declarationIndent; declarationIndent--) { increaseIndent(); } - if (nodeToCheck.kind === 222 /* ModuleDeclaration */) { + if (nodeToCheck.kind === 224 /* ModuleDeclaration */) { ts.Debug.assert(asynchronousSubModuleDeclarationEmitInfo === undefined); asynchronousSubModuleDeclarationEmitInfo = []; } writeModuleElement(nodeToCheck); - if (nodeToCheck.kind === 222 /* ModuleDeclaration */) { + if (nodeToCheck.kind === 224 /* ModuleDeclaration */) { moduleElementEmitInfo.subModuleElementDeclarationEmitInfo = asynchronousSubModuleDeclarationEmitInfo; asynchronousSubModuleDeclarationEmitInfo = undefined; } @@ -31001,35 +32023,37 @@ var ts; case 120 /* BooleanKeyword */: case 132 /* SymbolKeyword */: case 103 /* VoidKeyword */: - case 163 /* ThisType */: - case 164 /* StringLiteralType */: + case 134 /* UndefinedKeyword */: + case 93 /* NullKeyword */: + case 164 /* ThisType */: + case 165 /* StringLiteralType */: return writeTextOfNode(currentText, type); - case 192 /* ExpressionWithTypeArguments */: + case 193 /* ExpressionWithTypeArguments */: return emitExpressionWithTypeArguments(type); - case 153 /* TypeReference */: + case 154 /* TypeReference */: return emitTypeReference(type); - case 156 /* TypeQuery */: + case 157 /* TypeQuery */: return emitTypeQuery(type); - case 158 /* ArrayType */: + case 159 /* ArrayType */: return emitArrayType(type); - case 159 /* TupleType */: + case 160 /* TupleType */: return emitTupleType(type); - case 160 /* UnionType */: + case 161 /* UnionType */: return emitUnionType(type); - case 161 /* IntersectionType */: + case 162 /* IntersectionType */: return emitIntersectionType(type); - case 162 /* ParenthesizedType */: + case 163 /* ParenthesizedType */: return emitParenType(type); - case 154 /* FunctionType */: - case 155 /* ConstructorType */: + case 155 /* FunctionType */: + case 156 /* ConstructorType */: return emitSignatureDeclarationWithJsDocComments(type); - case 157 /* TypeLiteral */: + case 158 /* TypeLiteral */: return emitTypeLiteral(type); case 69 /* Identifier */: return emitEntityName(type); - case 137 /* QualifiedName */: + case 138 /* QualifiedName */: return emitEntityName(type); - case 152 /* TypePredicate */: + case 153 /* TypePredicate */: return emitTypePredicate(type); } function writeEntityName(entityName) { @@ -31037,8 +32061,8 @@ var ts; writeTextOfNode(currentText, entityName); } else { - var left = entityName.kind === 137 /* QualifiedName */ ? entityName.left : entityName.expression; - var right = entityName.kind === 137 /* QualifiedName */ ? entityName.right : entityName.name; + var left = entityName.kind === 138 /* QualifiedName */ ? entityName.left : entityName.expression; + var right = entityName.kind === 138 /* QualifiedName */ ? entityName.right : entityName.name; writeEntityName(left); write("."); writeTextOfNode(currentText, right); @@ -31047,13 +32071,13 @@ var ts; function emitEntityName(entityName) { var visibilityResult = resolver.isEntityNameVisible(entityName, // Aliases can be written asynchronously so use correct enclosing declaration - entityName.parent.kind === 225 /* ImportEqualsDeclaration */ ? entityName.parent : enclosingDeclaration); + entityName.parent.kind === 228 /* ImportEqualsDeclaration */ ? entityName.parent : enclosingDeclaration); handleSymbolAccessibilityError(visibilityResult); writeEntityName(entityName); } function emitExpressionWithTypeArguments(node) { if (ts.isSupportedExpressionWithTypeArguments(node)) { - ts.Debug.assert(node.expression.kind === 69 /* Identifier */ || node.expression.kind === 170 /* PropertyAccessExpression */); + ts.Debug.assert(node.expression.kind === 69 /* Identifier */ || node.expression.kind === 171 /* PropertyAccessExpression */); emitEntityName(node.expression); if (node.typeArguments) { write("<"); @@ -31132,9 +32156,9 @@ var ts; var count = 0; while (true) { count++; - var name_20 = baseName + "_" + count; - if (!ts.hasProperty(currentIdentifiers, name_20)) { - return name_20; + var name_22 = baseName + "_" + count; + if (!ts.hasProperty(currentIdentifiers, name_22)) { + return name_22; } } } @@ -31146,7 +32170,10 @@ var ts; else { // Expression var tempVarName = getExportDefaultTempVariableName(); - write("declare var "); + if (!noDeclare) { + write("declare "); + } + write("var "); write(tempVarName); write(": "); writer.getSymbolAccessibilityDiagnostic = getDefaultExportAccessibilityDiagnostic; @@ -31178,10 +32205,10 @@ var ts; if (isModuleElementVisible) { writeModuleElement(node); } - else if (node.kind === 225 /* ImportEqualsDeclaration */ || - (node.parent.kind === 252 /* SourceFile */ && isCurrentFileExternalModule)) { + else if (node.kind === 228 /* ImportEqualsDeclaration */ || + (node.parent.kind === 255 /* SourceFile */ && isCurrentFileExternalModule)) { var isVisible = void 0; - if (asynchronousSubModuleDeclarationEmitInfo && node.parent.kind !== 252 /* SourceFile */) { + if (asynchronousSubModuleDeclarationEmitInfo && node.parent.kind !== 255 /* SourceFile */) { // Import declaration of another module that is visited async so lets put it in right spot asynchronousSubModuleDeclarationEmitInfo.push({ node: node, @@ -31191,7 +32218,7 @@ var ts; }); } else { - if (node.kind === 226 /* ImportDeclaration */) { + if (node.kind === 229 /* ImportDeclaration */) { var importDeclaration = node; if (importDeclaration.importClause) { isVisible = (importDeclaration.importClause.name && resolver.isDeclarationVisible(importDeclaration.importClause)) || @@ -31209,23 +32236,23 @@ var ts; } function writeModuleElement(node) { switch (node.kind) { - case 217 /* FunctionDeclaration */: + case 219 /* FunctionDeclaration */: return writeFunctionDeclaration(node); - case 197 /* VariableStatement */: + case 199 /* VariableStatement */: return writeVariableStatement(node); - case 219 /* InterfaceDeclaration */: + case 221 /* InterfaceDeclaration */: return writeInterfaceDeclaration(node); - case 218 /* ClassDeclaration */: + case 220 /* ClassDeclaration */: return writeClassDeclaration(node); - case 220 /* TypeAliasDeclaration */: + case 222 /* TypeAliasDeclaration */: return writeTypeAliasDeclaration(node); - case 221 /* EnumDeclaration */: + case 223 /* EnumDeclaration */: return writeEnumDeclaration(node); - case 222 /* ModuleDeclaration */: + case 224 /* ModuleDeclaration */: return writeModuleDeclaration(node); - case 225 /* ImportEqualsDeclaration */: + case 228 /* ImportEqualsDeclaration */: return writeImportEqualsDeclaration(node); - case 226 /* ImportDeclaration */: + case 229 /* ImportDeclaration */: return writeImportDeclaration(node); default: ts.Debug.fail("Unknown symbol kind"); @@ -31233,7 +32260,7 @@ var ts; } function emitModuleElementDeclarationFlags(node) { // If the node is parented in the current source file we need to emit export declare or just export - if (node.parent.kind === 252 /* SourceFile */) { + if (node.parent.kind === 255 /* SourceFile */) { // If the node is exported if (node.flags & 1 /* Export */) { write("export "); @@ -31241,7 +32268,7 @@ var ts; if (node.flags & 512 /* Default */) { write("default "); } - else if (node.kind !== 219 /* InterfaceDeclaration */ && !noDeclare) { + else if (node.kind !== 221 /* InterfaceDeclaration */ && !noDeclare) { write("declare "); } } @@ -31293,7 +32320,7 @@ var ts; } function isVisibleNamedBinding(namedBindings) { if (namedBindings) { - if (namedBindings.kind === 228 /* NamespaceImport */) { + if (namedBindings.kind === 231 /* NamespaceImport */) { return resolver.isDeclarationVisible(namedBindings); } else { @@ -31317,7 +32344,7 @@ var ts; // If the default binding was emitted, write the separated write(", "); } - if (node.importClause.namedBindings.kind === 228 /* NamespaceImport */) { + if (node.importClause.namedBindings.kind === 231 /* NamespaceImport */) { write("* as "); writeTextOfNode(currentText, node.importClause.namedBindings.name); } @@ -31338,13 +32365,13 @@ var ts; // the only case when it is not true is when we call it to emit correct name for module augmentation - d.ts files with just module augmentations are not considered // external modules since they are indistinguishable from script files with ambient modules. To fix this in such d.ts files we'll emit top level 'export {}' // so compiler will treat them as external modules. - resultHasExternalModuleIndicator = resultHasExternalModuleIndicator || parent.kind !== 222 /* ModuleDeclaration */; + resultHasExternalModuleIndicator = resultHasExternalModuleIndicator || parent.kind !== 224 /* ModuleDeclaration */; var moduleSpecifier; - if (parent.kind === 225 /* ImportEqualsDeclaration */) { + if (parent.kind === 228 /* ImportEqualsDeclaration */) { var node = parent; moduleSpecifier = ts.getExternalModuleImportEqualsDeclarationExpression(node); } - else if (parent.kind === 222 /* ModuleDeclaration */) { + else if (parent.kind === 224 /* ModuleDeclaration */) { moduleSpecifier = parent.name; } else { @@ -31354,9 +32381,9 @@ var ts; if (moduleSpecifier.kind === 9 /* StringLiteral */ && isBundledEmit && (compilerOptions.out || compilerOptions.outFile)) { var moduleName = ts.getExternalModuleNameFromDeclaration(host, resolver, parent); if (moduleName) { - write("\""); + write('"'); write(moduleName); - write("\""); + write('"'); return; } } @@ -31414,7 +32441,7 @@ var ts; writeTextOfNode(currentText, node.name); } } - while (node.body.kind !== 223 /* ModuleBlock */) { + while (node.body.kind !== 225 /* ModuleBlock */) { node = node.body; write("."); writeTextOfNode(currentText, node.name); @@ -31479,7 +32506,7 @@ var ts; writeLine(); } function isPrivateMethodTypeParameter(node) { - return node.parent.kind === 145 /* MethodDeclaration */ && (node.parent.flags & 8 /* Private */); + return node.parent.kind === 146 /* MethodDeclaration */ && (node.parent.flags & 8 /* Private */); } function emitTypeParameters(typeParameters) { function emitTypeParameter(node) { @@ -31490,15 +32517,15 @@ var ts; // If there is constraint present and this is not a type parameter of the private method emit the constraint if (node.constraint && !isPrivateMethodTypeParameter(node)) { write(" extends "); - if (node.parent.kind === 154 /* FunctionType */ || - node.parent.kind === 155 /* ConstructorType */ || - (node.parent.parent && node.parent.parent.kind === 157 /* TypeLiteral */)) { - ts.Debug.assert(node.parent.kind === 145 /* MethodDeclaration */ || - node.parent.kind === 144 /* MethodSignature */ || - node.parent.kind === 154 /* FunctionType */ || - node.parent.kind === 155 /* ConstructorType */ || - node.parent.kind === 149 /* CallSignature */ || - node.parent.kind === 150 /* ConstructSignature */); + if (node.parent.kind === 155 /* FunctionType */ || + node.parent.kind === 156 /* ConstructorType */ || + (node.parent.parent && node.parent.parent.kind === 158 /* TypeLiteral */)) { + ts.Debug.assert(node.parent.kind === 146 /* MethodDeclaration */ || + node.parent.kind === 145 /* MethodSignature */ || + node.parent.kind === 155 /* FunctionType */ || + node.parent.kind === 156 /* ConstructorType */ || + node.parent.kind === 150 /* CallSignature */ || + node.parent.kind === 151 /* ConstructSignature */); emitType(node.constraint); } else { @@ -31509,31 +32536,31 @@ var ts; // Type parameter constraints are named by user so we should always be able to name it var diagnosticMessage; switch (node.parent.kind) { - case 218 /* ClassDeclaration */: + case 220 /* ClassDeclaration */: diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_exported_class_has_or_is_using_private_name_1; break; - case 219 /* InterfaceDeclaration */: + case 221 /* InterfaceDeclaration */: diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_exported_interface_has_or_is_using_private_name_1; break; - case 150 /* ConstructSignature */: + case 151 /* ConstructSignature */: diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_1; break; - case 149 /* CallSignature */: + case 150 /* CallSignature */: diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_name_1; break; - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: if (node.parent.flags & 32 /* Static */) { diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1; } - else if (node.parent.parent.kind === 218 /* ClassDeclaration */) { + else if (node.parent.parent.kind === 220 /* ClassDeclaration */) { diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_public_method_from_exported_class_has_or_is_using_private_name_1; } else { diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1; } break; - case 217 /* FunctionDeclaration */: + case 219 /* FunctionDeclaration */: diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_exported_function_has_or_is_using_private_name_1; break; default: @@ -31564,10 +32591,14 @@ var ts; else if (!isImplementsList && node.expression.kind === 93 /* NullKeyword */) { write("null"); } + else { + writer.getSymbolAccessibilityDiagnostic = getHeritageClauseVisibilityError; + resolver.writeBaseConstructorTypeOfClass(enclosingDeclaration, enclosingDeclaration, 2 /* UseTypeOfFunction */, writer); + } function getHeritageClauseVisibilityError(symbolAccessibilityResult) { var diagnosticMessage; // Heritage clause is written by user so it can always be named - if (node.parent.parent.kind === 218 /* ClassDeclaration */) { + if (node.parent.parent.kind === 220 /* ClassDeclaration */) { // Class or Interface implemented/extended is inaccessible diagnosticMessage = isImplementsList ? ts.Diagnostics.Implements_clause_of_exported_class_0_has_or_is_using_private_name_1 : @@ -31651,7 +32682,7 @@ var ts; function emitVariableDeclaration(node) { // If we are emitting property it isn't moduleElement and hence we already know it needs to be emitted // so there is no check needed to see if declaration is visible - if (node.kind !== 215 /* VariableDeclaration */ || resolver.isDeclarationVisible(node)) { + if (node.kind !== 217 /* VariableDeclaration */ || resolver.isDeclarationVisible(node)) { if (ts.isBindingPattern(node.name)) { emitBindingPattern(node.name); } @@ -31661,10 +32692,10 @@ var ts; // what we want, namely the name expression enclosed in brackets. writeTextOfNode(currentText, node.name); // If optional property emit ? - if ((node.kind === 143 /* PropertyDeclaration */ || node.kind === 142 /* PropertySignature */) && ts.hasQuestionToken(node)) { + if ((node.kind === 144 /* PropertyDeclaration */ || node.kind === 143 /* PropertySignature */) && ts.hasQuestionToken(node)) { write("?"); } - if ((node.kind === 143 /* PropertyDeclaration */ || node.kind === 142 /* PropertySignature */) && node.parent.kind === 157 /* TypeLiteral */) { + if ((node.kind === 144 /* PropertyDeclaration */ || node.kind === 143 /* PropertySignature */) && node.parent.kind === 158 /* TypeLiteral */) { emitTypeOfVariableDeclarationFromTypeLiteral(node); } else if (!(node.flags & 8 /* Private */)) { @@ -31673,14 +32704,14 @@ var ts; } } function getVariableDeclarationTypeVisibilityDiagnosticMessage(symbolAccessibilityResult) { - if (node.kind === 215 /* VariableDeclaration */) { + if (node.kind === 217 /* VariableDeclaration */) { return symbolAccessibilityResult.errorModuleName ? symbolAccessibilityResult.accessibility === 2 /* CannotBeNamed */ ? ts.Diagnostics.Exported_variable_0_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : ts.Diagnostics.Exported_variable_0_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Exported_variable_0_has_or_is_using_private_name_1; } - else if (node.kind === 143 /* PropertyDeclaration */ || node.kind === 142 /* PropertySignature */) { + else if (node.kind === 144 /* PropertyDeclaration */ || node.kind === 143 /* PropertySignature */) { // TODO(jfreeman): Deal with computed properties in error reporting. if (node.flags & 32 /* Static */) { return symbolAccessibilityResult.errorModuleName ? @@ -31689,7 +32720,7 @@ var ts; ts.Diagnostics.Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Public_static_property_0_of_exported_class_has_or_is_using_private_name_1; } - else if (node.parent.kind === 218 /* ClassDeclaration */) { + else if (node.parent.kind === 220 /* ClassDeclaration */) { return symbolAccessibilityResult.errorModuleName ? symbolAccessibilityResult.accessibility === 2 /* CannotBeNamed */ ? ts.Diagnostics.Public_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : @@ -31721,7 +32752,7 @@ var ts; var elements = []; for (var _i = 0, _a = bindingPattern.elements; _i < _a.length; _i++) { var element = _a[_i]; - if (element.kind !== 191 /* OmittedExpression */) { + if (element.kind !== 192 /* OmittedExpression */) { elements.push(element); } } @@ -31791,7 +32822,7 @@ var ts; var type = getTypeAnnotationFromAccessor(node); if (!type) { // couldn't get type for the first accessor, try the another one - var anotherAccessor = node.kind === 147 /* GetAccessor */ ? accessors.setAccessor : accessors.getAccessor; + var anotherAccessor = node.kind === 148 /* GetAccessor */ ? accessors.setAccessor : accessors.getAccessor; type = getTypeAnnotationFromAccessor(anotherAccessor); if (type) { accessorWithTypeAnnotation = anotherAccessor; @@ -31804,7 +32835,7 @@ var ts; } function getTypeAnnotationFromAccessor(accessor) { if (accessor) { - return accessor.kind === 147 /* GetAccessor */ + return accessor.kind === 148 /* GetAccessor */ ? accessor.type // Getter - return type : accessor.parameters.length > 0 ? accessor.parameters[0].type // Setter parameter type @@ -31813,7 +32844,7 @@ var ts; } function getAccessorDeclarationTypeVisibilityError(symbolAccessibilityResult) { var diagnosticMessage; - if (accessorWithTypeAnnotation.kind === 148 /* SetAccessor */) { + if (accessorWithTypeAnnotation.kind === 149 /* SetAccessor */) { // Setters have to have type named and cannot infer it so, the type should always be named if (accessorWithTypeAnnotation.parent.flags & 32 /* Static */) { diagnosticMessage = symbolAccessibilityResult.errorModuleName ? @@ -31863,17 +32894,17 @@ var ts; // so no need to verify if the declaration is visible if (!resolver.isImplementationOfOverload(node)) { emitJsDocComments(node); - if (node.kind === 217 /* FunctionDeclaration */) { + if (node.kind === 219 /* FunctionDeclaration */) { emitModuleElementDeclarationFlags(node); } - else if (node.kind === 145 /* MethodDeclaration */ || node.kind === 146 /* Constructor */) { + else if (node.kind === 146 /* MethodDeclaration */ || node.kind === 147 /* Constructor */) { emitClassMemberDeclarationFlags(node.flags); } - if (node.kind === 217 /* FunctionDeclaration */) { + if (node.kind === 219 /* FunctionDeclaration */) { write("function "); writeTextOfNode(currentText, node.name); } - else if (node.kind === 146 /* Constructor */) { + else if (node.kind === 147 /* Constructor */) { write("constructor"); } else { @@ -31892,14 +32923,14 @@ var ts; function emitSignatureDeclaration(node) { var prevEnclosingDeclaration = enclosingDeclaration; enclosingDeclaration = node; - if (node.kind === 151 /* IndexSignature */) { + if (node.kind === 152 /* IndexSignature */) { // Index signature can have readonly modifier emitClassMemberDeclarationFlags(node.flags); write("["); } else { // Construct signature or constructor type write new Signature - if (node.kind === 150 /* ConstructSignature */ || node.kind === 155 /* ConstructorType */) { + if (node.kind === 151 /* ConstructSignature */ || node.kind === 156 /* ConstructorType */) { write("new "); } emitTypeParameters(node.typeParameters); @@ -31907,22 +32938,22 @@ var ts; } // Parameters emitCommaList(node.parameters, emitParameterDeclaration); - if (node.kind === 151 /* IndexSignature */) { + if (node.kind === 152 /* IndexSignature */) { write("]"); } else { write(")"); } // If this is not a constructor and is not private, emit the return type - var isFunctionTypeOrConstructorType = node.kind === 154 /* FunctionType */ || node.kind === 155 /* ConstructorType */; - if (isFunctionTypeOrConstructorType || node.parent.kind === 157 /* TypeLiteral */) { + var isFunctionTypeOrConstructorType = node.kind === 155 /* FunctionType */ || node.kind === 156 /* ConstructorType */; + if (isFunctionTypeOrConstructorType || node.parent.kind === 158 /* TypeLiteral */) { // Emit type literal signature return type only if specified if (node.type) { write(isFunctionTypeOrConstructorType ? " => " : ": "); emitType(node.type); } } - else if (node.kind !== 146 /* Constructor */ && !(node.flags & 8 /* Private */)) { + else if (node.kind !== 147 /* Constructor */ && !(node.flags & 8 /* Private */)) { writeReturnTypeAtSignature(node, getReturnTypeVisibilityError); } enclosingDeclaration = prevEnclosingDeclaration; @@ -31933,26 +32964,26 @@ var ts; function getReturnTypeVisibilityError(symbolAccessibilityResult) { var diagnosticMessage; switch (node.kind) { - case 150 /* ConstructSignature */: + case 151 /* ConstructSignature */: // Interfaces cannot have return types that cannot be named diagnosticMessage = symbolAccessibilityResult.errorModuleName ? ts.Diagnostics.Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1 : ts.Diagnostics.Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_0; break; - case 149 /* CallSignature */: + case 150 /* CallSignature */: // Interfaces cannot have return types that cannot be named diagnosticMessage = symbolAccessibilityResult.errorModuleName ? ts.Diagnostics.Return_type_of_call_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1 : ts.Diagnostics.Return_type_of_call_signature_from_exported_interface_has_or_is_using_private_name_0; break; - case 151 /* IndexSignature */: + case 152 /* IndexSignature */: // Interfaces cannot have return types that cannot be named diagnosticMessage = symbolAccessibilityResult.errorModuleName ? ts.Diagnostics.Return_type_of_index_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1 : ts.Diagnostics.Return_type_of_index_signature_from_exported_interface_has_or_is_using_private_name_0; break; - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: if (node.flags & 32 /* Static */) { diagnosticMessage = symbolAccessibilityResult.errorModuleName ? symbolAccessibilityResult.accessibility === 2 /* CannotBeNamed */ ? @@ -31960,7 +32991,7 @@ var ts; ts.Diagnostics.Return_type_of_public_static_method_from_exported_class_has_or_is_using_name_0_from_private_module_1 : ts.Diagnostics.Return_type_of_public_static_method_from_exported_class_has_or_is_using_private_name_0; } - else if (node.parent.kind === 218 /* ClassDeclaration */) { + else if (node.parent.kind === 220 /* ClassDeclaration */) { diagnosticMessage = symbolAccessibilityResult.errorModuleName ? symbolAccessibilityResult.accessibility === 2 /* CannotBeNamed */ ? ts.Diagnostics.Return_type_of_public_method_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named : @@ -31974,7 +33005,7 @@ var ts; ts.Diagnostics.Return_type_of_method_from_exported_interface_has_or_is_using_private_name_0; } break; - case 217 /* FunctionDeclaration */: + case 219 /* FunctionDeclaration */: diagnosticMessage = symbolAccessibilityResult.errorModuleName ? symbolAccessibilityResult.accessibility === 2 /* CannotBeNamed */ ? ts.Diagnostics.Return_type_of_exported_function_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named : @@ -32009,9 +33040,9 @@ var ts; write("?"); } decreaseIndent(); - if (node.parent.kind === 154 /* FunctionType */ || - node.parent.kind === 155 /* ConstructorType */ || - node.parent.parent.kind === 157 /* TypeLiteral */) { + if (node.parent.kind === 155 /* FunctionType */ || + node.parent.kind === 156 /* ConstructorType */ || + node.parent.parent.kind === 158 /* TypeLiteral */) { emitTypeOfVariableDeclarationFromTypeLiteral(node); } else if (!(node.parent.flags & 8 /* Private */)) { @@ -32027,24 +33058,24 @@ var ts; } function getParameterDeclarationTypeVisibilityDiagnosticMessage(symbolAccessibilityResult) { switch (node.parent.kind) { - case 146 /* Constructor */: + case 147 /* Constructor */: return symbolAccessibilityResult.errorModuleName ? symbolAccessibilityResult.accessibility === 2 /* CannotBeNamed */ ? ts.Diagnostics.Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : ts.Diagnostics.Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Parameter_0_of_constructor_from_exported_class_has_or_is_using_private_name_1; - case 150 /* ConstructSignature */: + case 151 /* ConstructSignature */: // Interfaces cannot have parameter types that cannot be named return symbolAccessibilityResult.errorModuleName ? ts.Diagnostics.Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_1; - case 149 /* CallSignature */: + case 150 /* CallSignature */: // Interfaces cannot have parameter types that cannot be named return symbolAccessibilityResult.errorModuleName ? ts.Diagnostics.Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_name_1; - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: if (node.parent.flags & 32 /* Static */) { return symbolAccessibilityResult.errorModuleName ? symbolAccessibilityResult.accessibility === 2 /* CannotBeNamed */ ? @@ -32052,7 +33083,7 @@ var ts; ts.Diagnostics.Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1; } - else if (node.parent.parent.kind === 218 /* ClassDeclaration */) { + else if (node.parent.parent.kind === 220 /* ClassDeclaration */) { return symbolAccessibilityResult.errorModuleName ? symbolAccessibilityResult.accessibility === 2 /* CannotBeNamed */ ? ts.Diagnostics.Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : @@ -32065,7 +33096,7 @@ var ts; ts.Diagnostics.Parameter_0_of_method_from_exported_interface_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1; } - case 217 /* FunctionDeclaration */: + case 219 /* FunctionDeclaration */: return symbolAccessibilityResult.errorModuleName ? symbolAccessibilityResult.accessibility === 2 /* CannotBeNamed */ ? ts.Diagnostics.Parameter_0_of_exported_function_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : @@ -32077,12 +33108,12 @@ var ts; } function emitBindingPattern(bindingPattern) { // We have to explicitly emit square bracket and bracket because these tokens are not store inside the node. - if (bindingPattern.kind === 165 /* ObjectBindingPattern */) { + if (bindingPattern.kind === 166 /* ObjectBindingPattern */) { write("{"); emitCommaList(bindingPattern.elements, emitBindingElement); write("}"); } - else if (bindingPattern.kind === 166 /* ArrayBindingPattern */) { + else if (bindingPattern.kind === 167 /* ArrayBindingPattern */) { write("["); var elements = bindingPattern.elements; emitCommaList(elements, emitBindingElement); @@ -32093,7 +33124,7 @@ var ts; } } function emitBindingElement(bindingElement) { - if (bindingElement.kind === 191 /* OmittedExpression */) { + if (bindingElement.kind === 192 /* OmittedExpression */) { // If bindingElement is an omittedExpression (i.e. containing elision), // we will emit blank space (although this may differ from users' original code, // it allows emitSeparatedList to write separator appropriately) @@ -32102,7 +33133,7 @@ var ts; // emit : function foo([ , x, , ]) {} write(" "); } - else if (bindingElement.kind === 167 /* BindingElement */) { + else if (bindingElement.kind === 168 /* BindingElement */) { if (bindingElement.propertyName) { // bindingElement has propertyName property in the following case: // { y: [a,b,c] ...} -> bindingPattern will have a property called propertyName for "y" @@ -32141,40 +33172,40 @@ var ts; } function emitNode(node) { switch (node.kind) { - case 217 /* FunctionDeclaration */: - case 222 /* ModuleDeclaration */: - case 225 /* ImportEqualsDeclaration */: - case 219 /* InterfaceDeclaration */: - case 218 /* ClassDeclaration */: - case 220 /* TypeAliasDeclaration */: - case 221 /* EnumDeclaration */: + case 219 /* FunctionDeclaration */: + case 224 /* ModuleDeclaration */: + case 228 /* ImportEqualsDeclaration */: + case 221 /* InterfaceDeclaration */: + case 220 /* ClassDeclaration */: + case 222 /* TypeAliasDeclaration */: + case 223 /* EnumDeclaration */: return emitModuleElement(node, isModuleElementVisible(node)); - case 197 /* VariableStatement */: + case 199 /* VariableStatement */: return emitModuleElement(node, isVariableStatementVisible(node)); - case 226 /* ImportDeclaration */: + case 229 /* ImportDeclaration */: // Import declaration without import clause is visible, otherwise it is not visible return emitModuleElement(node, /*isModuleElementVisible*/ !node.importClause); - case 232 /* ExportDeclaration */: + case 235 /* ExportDeclaration */: return emitExportDeclaration(node); - case 146 /* Constructor */: - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: + case 147 /* Constructor */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: return writeFunctionDeclaration(node); - case 150 /* ConstructSignature */: - case 149 /* CallSignature */: - case 151 /* IndexSignature */: + case 151 /* ConstructSignature */: + case 150 /* CallSignature */: + case 152 /* IndexSignature */: return emitSignatureDeclarationWithJsDocComments(node); - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: return emitAccessorDeclaration(node); - case 143 /* PropertyDeclaration */: - case 142 /* PropertySignature */: + case 144 /* PropertyDeclaration */: + case 143 /* PropertySignature */: return emitPropertyDeclaration(node); - case 251 /* EnumMember */: + case 254 /* EnumMember */: return emitEnumMemberDeclaration(node); - case 231 /* ExportAssignment */: + case 234 /* ExportAssignment */: return emitExportAssignment(node); - case 252 /* SourceFile */: + case 255 /* SourceFile */: return emitSourceFile(node); } } @@ -32197,7 +33228,7 @@ var ts; if (declFileName) { declFileName = ts.getRelativePathToDirectoryOrUrl(ts.getDirectoryPath(ts.normalizeSlashes(declarationFilePath)), declFileName, host.getCurrentDirectory(), host.getCanonicalFileName, /*isAbsolutePathAnUrl*/ false); - referencePathsOutput += "/// " + newLine; + referencePathsOutput += '/// ' + newLine; } return addedBundledEmitReference; function getDeclFileName(emitFileNames, sourceFiles, isBundledEmit) { @@ -32533,6 +33564,7 @@ var ts; function emitFiles(resolver, host, targetSourceFile) { // emit output for the __extends helper function var extendsHelper = "\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};"; + var assignHelper = "\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n};"; // emit output for the __decorate helper function var decorateHelper = "\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};"; // emit output for the __metadata helper function @@ -32544,6 +33576,7 @@ var ts; var languageVersion = ts.getEmitScriptTarget(compilerOptions); var modulekind = ts.getEmitModuleKind(compilerOptions); var sourceMapDataList = compilerOptions.sourceMap || compilerOptions.inlineSourceMap ? [] : undefined; + var emittedFilesList = compilerOptions.listEmittedFiles ? [] : undefined; var emitterDiagnostics = ts.createDiagnosticCollection(); var emitSkipped = false; var newLine = host.getNewLine(); @@ -32552,6 +33585,7 @@ var ts; return { emitSkipped: emitSkipped, diagnostics: emitterDiagnostics.getDiagnostics(), + emittedFiles: emittedFilesList, sourceMaps: sourceMapDataList }; function isUniqueLocalName(name, container) { @@ -32622,6 +33656,7 @@ var ts; var decoratedClassAliases; var convertedLoopState; var extendsEmitted; + var assignEmitted; var decorateEmitted; var paramEmitted; var awaiterEmitted; @@ -32674,7 +33709,7 @@ var ts; if (sourceMappingURL) { write("//# sourceMappingURL=" + sourceMappingURL); } - writeEmittedFiles(writer.getText(), jsFilePath, sourceMapFilePath, /*writeByteOrderMark*/ compilerOptions.emitBOM); + writeEmittedFiles(writer.getText(), jsFilePath, sourceMapFilePath, /*writeByteOrderMark*/ compilerOptions.emitBOM, sourceFiles); // reset the state sourceMap.reset(); writer.reset(); @@ -32692,6 +33727,7 @@ var ts; decorateEmitted = false; paramEmitted = false; awaiterEmitted = false; + assignEmitted = false; tempFlags = 0; tempVariables = undefined; tempParameters = undefined; @@ -32728,10 +33764,10 @@ var ts; // Note that names generated by makeTempVariableName and makeUniqueName will never conflict. function makeTempVariableName(flags) { if (flags && !(tempFlags & flags)) { - var name_21 = flags === 268435456 /* _i */ ? "_i" : "_n"; - if (isUniqueName(name_21)) { + var name_23 = flags === 268435456 /* _i */ ? "_i" : "_n"; + if (isUniqueName(name_23)) { tempFlags |= flags; - return name_21; + return name_23; } } while (true) { @@ -32739,9 +33775,9 @@ var ts; tempFlags++; // Skip over 'i' and 'n' if (count !== 8 && count !== 13) { - var name_22 = count < 26 ? "_" + String.fromCharCode(97 /* a */ + count) : "_" + (count - 26); - if (isUniqueName(name_22)) { - return name_22; + var name_24 = count < 26 ? "_" + String.fromCharCode(97 /* a */ + count) : "_" + (count - 26); + if (isUniqueName(name_24)) { + return name_24; } } } @@ -32785,17 +33821,17 @@ var ts; switch (node.kind) { case 69 /* Identifier */: return makeUniqueName(node.text); - case 222 /* ModuleDeclaration */: - case 221 /* EnumDeclaration */: + case 224 /* ModuleDeclaration */: + case 223 /* EnumDeclaration */: return generateNameForModuleOrEnum(node); - case 226 /* ImportDeclaration */: - case 232 /* ExportDeclaration */: + case 229 /* ImportDeclaration */: + case 235 /* ExportDeclaration */: return generateNameForImportOrExportDeclaration(node); - case 217 /* FunctionDeclaration */: - case 218 /* ClassDeclaration */: - case 231 /* ExportAssignment */: + case 219 /* FunctionDeclaration */: + case 220 /* ClassDeclaration */: + case 234 /* ExportAssignment */: return generateNameForExportDefault(); - case 190 /* ClassExpression */: + case 191 /* ClassExpression */: return generateNameForClassExpression(); } } @@ -32804,14 +33840,14 @@ var ts; return nodeToGeneratedName[id] || (nodeToGeneratedName[id] = ts.unescapeIdentifier(generateNameForNode(node))); } /** Write emitted output to disk */ - function writeEmittedFiles(emitOutput, jsFilePath, sourceMapFilePath, writeByteOrderMark) { + function writeEmittedFiles(emitOutput, jsFilePath, sourceMapFilePath, writeByteOrderMark, sourceFiles) { if (compilerOptions.sourceMap && !compilerOptions.inlineSourceMap) { - ts.writeFile(host, emitterDiagnostics, sourceMapFilePath, sourceMap.getText(), /*writeByteOrderMark*/ false); + ts.writeFile(host, emitterDiagnostics, sourceMapFilePath, sourceMap.getText(), /*writeByteOrderMark*/ false, sourceFiles); } if (sourceMapDataList) { sourceMapDataList.push(sourceMap.getSourceMapData()); } - ts.writeFile(host, emitterDiagnostics, jsFilePath, emitOutput, writeByteOrderMark); + ts.writeFile(host, emitterDiagnostics, jsFilePath, emitOutput, writeByteOrderMark, sourceFiles); } // Create a temporary variable with a unique unused name. function createTempVariable(flags) { @@ -32990,7 +34026,7 @@ var ts; // Any template literal or string literal with an extended escape // (e.g. "\u{0067}") will need to be downleveled as a escaped string literal. if (languageVersion < 2 /* ES6 */ && (ts.isTemplateLiteralKind(node.kind) || node.hasExtendedUnicodeEscape)) { - return getQuotedEscapedLiteralText("\"", node.text, "\""); + return getQuotedEscapedLiteralText('"', node.text, '"'); } // If we don't need to downlevel and we can reach the original source text using // the node's parent reference, then simply get the text as it was originally written. @@ -33001,7 +34037,7 @@ var ts; // or an escaped quoted form of the original text if it's string-like. switch (node.kind) { case 9 /* StringLiteral */: - return getQuotedEscapedLiteralText("\"", node.text, "\""); + return getQuotedEscapedLiteralText('"', node.text, '"'); case 11 /* NoSubstitutionTemplateLiteral */: return getQuotedEscapedLiteralText("`", node.text, "`"); case 12 /* TemplateHead */: @@ -33065,10 +34101,10 @@ var ts; write("("); emit(tempVariable); // Now we emit the expressions - if (node.template.kind === 187 /* TemplateExpression */) { + if (node.template.kind === 188 /* TemplateExpression */) { ts.forEach(node.template.templateSpans, function (templateSpan) { write(", "); - var needsParens = templateSpan.expression.kind === 185 /* BinaryExpression */ + var needsParens = templateSpan.expression.kind === 186 /* BinaryExpression */ && templateSpan.expression.operatorToken.kind === 24 /* CommaToken */; emitParenthesizedIf(templateSpan.expression, needsParens); }); @@ -33103,7 +34139,7 @@ var ts; // ("abc" + 1) << (2 + "") // rather than // "abc" + (1 << 2) + "" - var needsParens = templateSpan.expression.kind !== 176 /* ParenthesizedExpression */ + var needsParens = templateSpan.expression.kind !== 177 /* ParenthesizedExpression */ && comparePrecedenceToBinaryPlus(templateSpan.expression) !== 1 /* GreaterThan */; if (i > 0 || headEmitted) { // If this is the first span and the head was not emitted, then this templateSpan's @@ -33145,11 +34181,11 @@ var ts; } function templateNeedsParens(template, parent) { switch (parent.kind) { - case 172 /* CallExpression */: - case 173 /* NewExpression */: + case 173 /* CallExpression */: + case 174 /* NewExpression */: return parent.expression === template; - case 174 /* TaggedTemplateExpression */: - case 176 /* ParenthesizedExpression */: + case 175 /* TaggedTemplateExpression */: + case 177 /* ParenthesizedExpression */: return false; default: return comparePrecedenceToBinaryPlus(parent) !== -1 /* LessThan */; @@ -33170,7 +34206,7 @@ var ts; // TODO (drosen): Note that we need to account for the upcoming 'yield' and // spread ('...') unary operators that are anticipated for ES6. switch (expression.kind) { - case 185 /* BinaryExpression */: + case 186 /* BinaryExpression */: switch (expression.operatorToken.kind) { case 37 /* AsteriskToken */: case 39 /* SlashToken */: @@ -33182,8 +34218,8 @@ var ts; default: return -1 /* LessThan */; } - case 188 /* YieldExpression */: - case 186 /* ConditionalExpression */: + case 189 /* YieldExpression */: + case 187 /* ConditionalExpression */: return -1 /* LessThan */; default: return 1 /* GreaterThan */; @@ -33199,9 +34235,9 @@ var ts; /// 'Div' for upper-cased or dotted names function emitTagName(name) { if (name.kind === 69 /* Identifier */ && ts.isIntrinsicJsxName(name.text)) { - write("\""); + write('"'); emit(name); - write("\""); + write('"'); } else { emit(name); @@ -33215,9 +34251,9 @@ var ts; emit(name); } else { - write("\""); + write('"'); emit(name); - write("\""); + write('"'); } } /// Emit an name/value pair for an attribute (e.g. "x: 3") @@ -33248,14 +34284,13 @@ var ts; } else { // Either emit one big object literal (no spread attribs), or - // a call to React.__spread + // a call to the __assign helper var attrs = openingNode.attributes; - if (ts.forEach(attrs, function (attr) { return attr.kind === 243 /* JsxSpreadAttribute */; })) { - emitExpressionIdentifier(syntheticReactRef); - write(".__spread("); + if (ts.forEach(attrs, function (attr) { return attr.kind === 246 /* JsxSpreadAttribute */; })) { + write("__assign("); var haveOpenedObjectLiteral = false; for (var i = 0; i < attrs.length; i++) { - if (attrs[i].kind === 243 /* JsxSpreadAttribute */) { + if (attrs[i].kind === 246 /* JsxSpreadAttribute */) { // If this is the first argument, we need to emit a {} as the first argument if (i === 0) { write("{}, "); @@ -33270,7 +34305,7 @@ var ts; emit(attrs[i].expression); } else { - ts.Debug.assert(attrs[i].kind === 242 /* JsxAttribute */); + ts.Debug.assert(attrs[i].kind === 245 /* JsxAttribute */); if (haveOpenedObjectLiteral) { write(", "); } @@ -33331,7 +34366,7 @@ var ts; decreaseIndent(); } else if (firstChild) { - if (firstChild.kind !== 237 /* JsxElement */ && firstChild.kind !== 238 /* JsxSelfClosingElement */) { + if (firstChild.kind !== 240 /* JsxElement */ && firstChild.kind !== 241 /* JsxSelfClosingElement */) { emit(firstChild); } else { @@ -33348,11 +34383,11 @@ var ts; write(")"); // closes "React.createElement(" emitTrailingComments(openingNode); } - if (node.kind === 237 /* JsxElement */) { + if (node.kind === 240 /* JsxElement */) { emitJsxElement(node.openingElement, node.children); } else { - ts.Debug.assert(node.kind === 238 /* JsxSelfClosingElement */); + ts.Debug.assert(node.kind === 241 /* JsxSelfClosingElement */); emitJsxElement(node); } } @@ -33374,11 +34409,11 @@ var ts; if (i > 0) { write(" "); } - if (attribs[i].kind === 243 /* JsxSpreadAttribute */) { + if (attribs[i].kind === 246 /* JsxSpreadAttribute */) { emitJsxSpreadAttribute(attribs[i]); } else { - ts.Debug.assert(attribs[i].kind === 242 /* JsxAttribute */); + ts.Debug.assert(attribs[i].kind === 245 /* JsxAttribute */); emitJsxAttribute(attribs[i]); } } @@ -33386,11 +34421,11 @@ var ts; function emitJsxOpeningOrSelfClosingElement(node) { write("<"); emit(node.tagName); - if (node.attributes.length > 0 || (node.kind === 238 /* JsxSelfClosingElement */)) { + if (node.attributes.length > 0 || (node.kind === 241 /* JsxSelfClosingElement */)) { write(" "); } emitAttributes(node.attributes); - if (node.kind === 238 /* JsxSelfClosingElement */) { + if (node.kind === 241 /* JsxSelfClosingElement */) { write("/>"); } else { @@ -33409,11 +34444,11 @@ var ts; } emitJsxClosingElement(node.closingElement); } - if (node.kind === 237 /* JsxElement */) { + if (node.kind === 240 /* JsxElement */) { emitJsxElement(node); } else { - ts.Debug.assert(node.kind === 238 /* JsxSelfClosingElement */); + ts.Debug.assert(node.kind === 241 /* JsxSelfClosingElement */); emitJsxOpeningOrSelfClosingElement(node); } } @@ -33421,11 +34456,11 @@ var ts; // In a sense, it does not actually emit identifiers as much as it declares a name for a specific property. // For example, this is utilized when feeding in a result to Object.defineProperty. function emitExpressionForPropertyName(node) { - ts.Debug.assert(node.kind !== 167 /* BindingElement */); + ts.Debug.assert(node.kind !== 168 /* BindingElement */); if (node.kind === 9 /* StringLiteral */) { emitLiteral(node); } - else if (node.kind === 138 /* ComputedPropertyName */) { + else if (node.kind === 139 /* ComputedPropertyName */) { // if this is a decorated computed property, we will need to capture the result // of the property expression so that we can apply decorators later. This is to ensure // we don't introduce unintended side effects: @@ -33456,75 +34491,76 @@ var ts; emit(node.expression); } else { - write("\""); + write('"'); if (node.kind === 8 /* NumericLiteral */) { write(node.text); } else { writeTextOfNode(currentText, node); } - write("\""); + write('"'); } } function isExpressionIdentifier(node) { var parent = node.parent; switch (parent.kind) { - case 168 /* ArrayLiteralExpression */: - case 193 /* AsExpression */: - case 185 /* BinaryExpression */: - case 172 /* CallExpression */: - case 245 /* CaseClause */: - case 138 /* ComputedPropertyName */: - case 186 /* ConditionalExpression */: - case 141 /* Decorator */: - case 179 /* DeleteExpression */: - case 201 /* DoStatement */: - case 171 /* ElementAccessExpression */: - case 231 /* ExportAssignment */: - case 199 /* ExpressionStatement */: - case 192 /* ExpressionWithTypeArguments */: - case 203 /* ForStatement */: - case 204 /* ForInStatement */: - case 205 /* ForOfStatement */: - case 200 /* IfStatement */: - case 241 /* JsxClosingElement */: - case 238 /* JsxSelfClosingElement */: - case 239 /* JsxOpeningElement */: - case 243 /* JsxSpreadAttribute */: - case 244 /* JsxExpression */: - case 173 /* NewExpression */: - case 176 /* ParenthesizedExpression */: - case 184 /* PostfixUnaryExpression */: - case 183 /* PrefixUnaryExpression */: - case 208 /* ReturnStatement */: - case 250 /* ShorthandPropertyAssignment */: - case 189 /* SpreadElementExpression */: - case 210 /* SwitchStatement */: - case 174 /* TaggedTemplateExpression */: - case 194 /* TemplateSpan */: - case 212 /* ThrowStatement */: - case 175 /* TypeAssertionExpression */: - case 180 /* TypeOfExpression */: - case 181 /* VoidExpression */: - case 202 /* WhileStatement */: - case 209 /* WithStatement */: - case 188 /* YieldExpression */: + case 169 /* ArrayLiteralExpression */: + case 194 /* AsExpression */: + case 186 /* BinaryExpression */: + case 173 /* CallExpression */: + case 248 /* CaseClause */: + case 139 /* ComputedPropertyName */: + case 187 /* ConditionalExpression */: + case 142 /* Decorator */: + case 180 /* DeleteExpression */: + case 203 /* DoStatement */: + case 172 /* ElementAccessExpression */: + case 234 /* ExportAssignment */: + case 201 /* ExpressionStatement */: + case 193 /* ExpressionWithTypeArguments */: + case 205 /* ForStatement */: + case 206 /* ForInStatement */: + case 207 /* ForOfStatement */: + case 202 /* IfStatement */: + case 244 /* JsxClosingElement */: + case 241 /* JsxSelfClosingElement */: + case 242 /* JsxOpeningElement */: + case 246 /* JsxSpreadAttribute */: + case 247 /* JsxExpression */: + case 174 /* NewExpression */: + case 195 /* NonNullExpression */: + case 177 /* ParenthesizedExpression */: + case 185 /* PostfixUnaryExpression */: + case 184 /* PrefixUnaryExpression */: + case 210 /* ReturnStatement */: + case 253 /* ShorthandPropertyAssignment */: + case 190 /* SpreadElementExpression */: + case 212 /* SwitchStatement */: + case 175 /* TaggedTemplateExpression */: + case 196 /* TemplateSpan */: + case 214 /* ThrowStatement */: + case 176 /* TypeAssertionExpression */: + case 181 /* TypeOfExpression */: + case 182 /* VoidExpression */: + case 204 /* WhileStatement */: + case 211 /* WithStatement */: + case 189 /* YieldExpression */: return true; - case 167 /* BindingElement */: - case 251 /* EnumMember */: - case 140 /* Parameter */: - case 249 /* PropertyAssignment */: - case 143 /* PropertyDeclaration */: - case 215 /* VariableDeclaration */: + case 168 /* BindingElement */: + case 254 /* EnumMember */: + case 141 /* Parameter */: + case 252 /* PropertyAssignment */: + case 144 /* PropertyDeclaration */: + case 217 /* VariableDeclaration */: return parent.initializer === node; - case 170 /* PropertyAccessExpression */: + case 171 /* PropertyAccessExpression */: return parent.expression === node; - case 178 /* ArrowFunction */: - case 177 /* FunctionExpression */: + case 179 /* ArrowFunction */: + case 178 /* FunctionExpression */: return parent.body === node; - case 225 /* ImportEqualsDeclaration */: + case 228 /* ImportEqualsDeclaration */: return parent.moduleReference === node; - case 137 /* QualifiedName */: + case 138 /* QualifiedName */: return parent.left === node; } return false; @@ -33532,7 +34568,7 @@ var ts; function emitExpressionIdentifier(node) { var container = resolver.getReferencedExportContainer(node); if (container) { - if (container.kind === 252 /* SourceFile */) { + if (container.kind === 255 /* SourceFile */) { // Identifier references module export if (modulekind !== ts.ModuleKind.ES6 && modulekind !== ts.ModuleKind.System) { write("exports."); @@ -33548,19 +34584,19 @@ var ts; if (modulekind !== ts.ModuleKind.ES6) { var declaration = resolver.getReferencedImportDeclaration(node); if (declaration) { - if (declaration.kind === 227 /* ImportClause */) { + if (declaration.kind === 230 /* ImportClause */) { // Identifier references default import write(getGeneratedNameForNode(declaration.parent)); - write(languageVersion === 0 /* ES3 */ ? "[\"default\"]" : ".default"); + write(languageVersion === 0 /* ES3 */ ? '["default"]' : ".default"); return; } - else if (declaration.kind === 230 /* ImportSpecifier */) { + else if (declaration.kind === 233 /* ImportSpecifier */) { // Identifier references named import write(getGeneratedNameForNode(declaration.parent.parent.parent)); - var name_23 = declaration.propertyName || declaration.name; - var identifier = ts.getTextOfNodeFromSourceText(currentText, name_23); + var name_25 = declaration.propertyName || declaration.name; + var identifier = ts.getTextOfNodeFromSourceText(currentText, name_25); if (languageVersion === 0 /* ES3 */ && identifier === "default") { - write("[\"default\"]"); + write('["default"]'); } else { write("."); @@ -33600,13 +34636,13 @@ var ts; } function isNameOfNestedBlockScopedRedeclarationOrCapturedBinding(node) { if (languageVersion < 2 /* ES6 */) { - var parent_8 = node.parent; - switch (parent_8.kind) { - case 167 /* BindingElement */: - case 218 /* ClassDeclaration */: - case 221 /* EnumDeclaration */: - case 215 /* VariableDeclaration */: - return parent_8.name === node && resolver.isDeclarationWithCollidingName(parent_8); + var parent_10 = node.parent; + switch (parent_10.kind) { + case 168 /* BindingElement */: + case 220 /* ClassDeclaration */: + case 223 /* EnumDeclaration */: + case 217 /* VariableDeclaration */: + return parent_10.name === node && resolver.isDeclarationWithCollidingName(parent_10); } } return false; @@ -33615,8 +34651,8 @@ var ts; if (convertedLoopState) { if (node.text == "arguments" && resolver.isArgumentsLocalBinding(node)) { // in converted loop body arguments cannot be used directly. - var name_24 = convertedLoopState.argumentsName || (convertedLoopState.argumentsName = makeUniqueName("arguments")); - write(name_24); + var name_26 = convertedLoopState.argumentsName || (convertedLoopState.argumentsName = makeUniqueName("arguments")); + write(name_26); return; } } @@ -33716,10 +34752,10 @@ var ts; } } function needsParenthesisForAwaitExpressionAsYield(node) { - if (node.parent.kind === 185 /* BinaryExpression */ && !ts.isAssignmentOperator(node.parent.operatorToken.kind)) { + if (node.parent.kind === 186 /* BinaryExpression */ && !ts.isAssignmentOperator(node.parent.operatorToken.kind)) { return true; } - else if (node.parent.kind === 186 /* ConditionalExpression */ && node.parent.condition === node) { + else if (node.parent.kind === 187 /* ConditionalExpression */ && node.parent.condition === node) { return true; } return false; @@ -33727,11 +34763,11 @@ var ts; function needsParenthesisForPropertyAccessOrInvocation(node) { switch (node.kind) { case 69 /* Identifier */: - case 168 /* ArrayLiteralExpression */: - case 170 /* PropertyAccessExpression */: - case 171 /* ElementAccessExpression */: - case 172 /* CallExpression */: - case 176 /* ParenthesizedExpression */: + case 169 /* ArrayLiteralExpression */: + case 171 /* PropertyAccessExpression */: + case 172 /* ElementAccessExpression */: + case 173 /* CallExpression */: + case 177 /* ParenthesizedExpression */: // This list is not exhaustive and only includes those cases that are relevant // to the check in emitArrayLiteral. More cases can be added as needed. return false; @@ -33751,17 +34787,17 @@ var ts; write(", "); } var e = elements[pos]; - if (e.kind === 189 /* SpreadElementExpression */) { + if (e.kind === 190 /* SpreadElementExpression */) { e = e.expression; emitParenthesizedIf(e, /*parenthesized*/ group === 0 && needsParenthesisForPropertyAccessOrInvocation(e)); pos++; - if (pos === length && group === 0 && needsUniqueCopy && e.kind !== 168 /* ArrayLiteralExpression */) { + if (pos === length && group === 0 && needsUniqueCopy && e.kind !== 169 /* ArrayLiteralExpression */) { write(".slice()"); } } else { var i = pos; - while (i < length && elements[i].kind !== 189 /* SpreadElementExpression */) { + while (i < length && elements[i].kind !== 190 /* SpreadElementExpression */) { i++; } write("["); @@ -33784,7 +34820,7 @@ var ts; } } function isSpreadElementExpression(node) { - return node.kind === 189 /* SpreadElementExpression */; + return node.kind === 190 /* SpreadElementExpression */; } function emitArrayLiteral(node) { var elements = node.elements; @@ -33854,7 +34890,7 @@ var ts; writeComma(); var property = properties[i]; emitStart(property); - if (property.kind === 147 /* GetAccessor */ || property.kind === 148 /* SetAccessor */) { + if (property.kind === 148 /* GetAccessor */ || property.kind === 149 /* SetAccessor */) { // TODO (drosen): Reconcile with 'emitMemberFunctions'. var accessors = ts.getAllAccessorDeclarations(node.properties, property); if (property !== accessors.firstAccessor) { @@ -33906,13 +34942,13 @@ var ts; emitMemberAccessForPropertyName(property.name); emitEnd(property.name); write(" = "); - if (property.kind === 249 /* PropertyAssignment */) { + if (property.kind === 252 /* PropertyAssignment */) { emit(property.initializer); } - else if (property.kind === 250 /* ShorthandPropertyAssignment */) { + else if (property.kind === 253 /* ShorthandPropertyAssignment */) { emitExpressionIdentifier(property.name); } - else if (property.kind === 145 /* MethodDeclaration */) { + else if (property.kind === 146 /* MethodDeclaration */) { emitFunctionDeclaration(property); } else { @@ -33946,7 +34982,7 @@ var ts; // Everything until that point can be emitted as part of the initial object literal. var numInitialNonComputedProperties = numProperties; for (var i = 0, n = properties.length; i < n; i++) { - if (properties[i].name.kind === 138 /* ComputedPropertyName */) { + if (properties[i].name.kind === 139 /* ComputedPropertyName */) { numInitialNonComputedProperties = i; break; } @@ -33962,21 +34998,21 @@ var ts; emitObjectLiteralBody(node, properties.length); } function createBinaryExpression(left, operator, right, startsOnNewLine) { - var result = ts.createSynthesizedNode(185 /* BinaryExpression */, startsOnNewLine); + var result = ts.createSynthesizedNode(186 /* BinaryExpression */, startsOnNewLine); result.operatorToken = ts.createSynthesizedNode(operator); result.left = left; result.right = right; return result; } function createPropertyAccessExpression(expression, name) { - var result = ts.createSynthesizedNode(170 /* PropertyAccessExpression */); + var result = ts.createSynthesizedNode(171 /* PropertyAccessExpression */); result.expression = parenthesizeForAccess(expression); result.dotToken = ts.createSynthesizedNode(21 /* DotToken */); result.name = name; return result; } function createElementAccessExpression(expression, argumentExpression) { - var result = ts.createSynthesizedNode(171 /* ElementAccessExpression */); + var result = ts.createSynthesizedNode(172 /* ElementAccessExpression */); result.expression = parenthesizeForAccess(expression); result.argumentExpression = argumentExpression; return result; @@ -33984,7 +35020,9 @@ var ts; function parenthesizeForAccess(expr) { // When diagnosing whether the expression needs parentheses, the decision should be based // on the innermost expression in a chain of nested type assertions. - while (expr.kind === 175 /* TypeAssertionExpression */ || expr.kind === 193 /* AsExpression */) { + while (expr.kind === 176 /* TypeAssertionExpression */ || + expr.kind === 194 /* AsExpression */ || + expr.kind === 195 /* NonNullExpression */) { expr = expr.expression; } // isLeftHandSideExpression is almost the correct criterion for when it is not necessary @@ -33996,11 +35034,11 @@ var ts; // 1.x -> not the same as (1).x // if (ts.isLeftHandSideExpression(expr) && - expr.kind !== 173 /* NewExpression */ && + expr.kind !== 174 /* NewExpression */ && expr.kind !== 8 /* NumericLiteral */) { return expr; } - var node = ts.createSynthesizedNode(176 /* ParenthesizedExpression */); + var node = ts.createSynthesizedNode(177 /* ParenthesizedExpression */); node.expression = expr; return node; } @@ -34035,7 +35073,12 @@ var ts; // Return true if identifier resolves to an exported member of a namespace function isNamespaceExportReference(node) { var container = resolver.getReferencedExportContainer(node); - return container && container.kind !== 252 /* SourceFile */; + return container && container.kind !== 255 /* SourceFile */; + } + // Return true if identifier resolves to an imported identifier + function isImportedReference(node) { + var declaration = resolver.getReferencedImportDeclaration(node); + return declaration && (declaration.kind === 230 /* ImportClause */ || declaration.kind === 233 /* ImportSpecifier */); } function emitShorthandPropertyAssignment(node) { // The name property of a short-hand property assignment is considered an expression position, so here @@ -34050,7 +35093,18 @@ var ts; // let obj = { y }; // } // Here we need to emit obj = { y : m.y } regardless of the output target. - if (modulekind !== ts.ModuleKind.ES6 || isNamespaceExportReference(node.name)) { + // The same rules apply for imported identifiers when targeting module formats with indirect access to + // the imported identifiers. For example, when targeting CommonJS: + // + // import {foo} from './foo'; + // export const baz = { foo }; + // + // Must be transformed into: + // + // const foo_1 = require('./foo'); + // exports.baz = { foo: foo_1.foo }; + // + if (languageVersion < 2 /* ES6 */ || (modulekind !== ts.ModuleKind.ES6 && isImportedReference(node.name)) || isNamespaceExportReference(node.name)) { // Emit identifier as an identifier write(": "); emit(node.name); @@ -34065,7 +35119,7 @@ var ts; if (constantValue !== undefined) { write(constantValue.toString()); if (!compilerOptions.removeComments) { - var propertyName = node.kind === 170 /* PropertyAccessExpression */ ? ts.declarationNameToString(node.name) : ts.getTextOfNode(node.argumentExpression); + var propertyName = node.kind === 171 /* PropertyAccessExpression */ ? ts.declarationNameToString(node.name) : ts.getTextOfNode(node.argumentExpression); write(" /* " + propertyName + " */"); } return true; @@ -34076,7 +35130,7 @@ var ts; if (compilerOptions.isolatedModules) { return undefined; } - return node.kind === 170 /* PropertyAccessExpression */ || node.kind === 171 /* ElementAccessExpression */ + return node.kind === 171 /* PropertyAccessExpression */ || node.kind === 172 /* ElementAccessExpression */ ? resolver.getConstantValue(node) : undefined; } @@ -34106,9 +35160,9 @@ var ts; if (languageVersion === 2 /* ES6 */ && node.expression.kind === 95 /* SuperKeyword */ && isInAsyncMethodWithSuperInES6(node)) { - var name_25 = ts.createSynthesizedNode(9 /* StringLiteral */); - name_25.text = node.name.text; - emitSuperAccessInAsyncMethod(node.expression, name_25); + var name_27 = ts.createSynthesizedNode(9 /* StringLiteral */); + name_27.text = node.name.text; + emitSuperAccessInAsyncMethod(node.expression, name_27); return; } emit(node.expression); @@ -34173,7 +35227,7 @@ var ts; } emitExpressionIdentifier(node); break; - case 137 /* QualifiedName */: + case 138 /* QualifiedName */: emitQualifiedNameAsExpression(node, useFallback); break; default: @@ -34197,10 +35251,13 @@ var ts; write("]"); } function hasSpreadElement(elements) { - return ts.forEach(elements, function (e) { return e.kind === 189 /* SpreadElementExpression */; }); + return ts.forEach(elements, function (e) { return e.kind === 190 /* SpreadElementExpression */; }); } function skipParentheses(node) { - while (node.kind === 176 /* ParenthesizedExpression */ || node.kind === 175 /* TypeAssertionExpression */ || node.kind === 193 /* AsExpression */) { + while (node.kind === 177 /* ParenthesizedExpression */ || + node.kind === 176 /* TypeAssertionExpression */ || + node.kind === 194 /* AsExpression */ || + node.kind === 195 /* NonNullExpression */) { node = node.expression; } return node; @@ -34221,13 +35278,13 @@ var ts; function emitCallWithSpread(node) { var target; var expr = skipParentheses(node.expression); - if (expr.kind === 170 /* PropertyAccessExpression */) { + if (expr.kind === 171 /* PropertyAccessExpression */) { // Target will be emitted as "this" argument target = emitCallTarget(expr.expression); write("."); emit(expr.name); } - else if (expr.kind === 171 /* ElementAccessExpression */) { + else if (expr.kind === 172 /* ElementAccessExpression */) { // Target will be emitted as "this" argument target = emitCallTarget(expr.expression); write("["); @@ -34360,12 +35417,16 @@ var ts; // If the node is synthesized, it means the emitter put the parentheses there, // not the user. If we didn't want them, the emitter would not have put them // there. - if (!ts.nodeIsSynthesized(node) && node.parent.kind !== 178 /* ArrowFunction */) { - if (node.expression.kind === 175 /* TypeAssertionExpression */ || node.expression.kind === 193 /* AsExpression */) { + if (!ts.nodeIsSynthesized(node) && node.parent.kind !== 179 /* ArrowFunction */) { + if (node.expression.kind === 176 /* TypeAssertionExpression */ || + node.expression.kind === 194 /* AsExpression */ || + node.expression.kind === 195 /* NonNullExpression */) { var operand = node.expression.expression; // Make sure we consider all nested cast expressions, e.g.: // (-A).x; - while (operand.kind === 175 /* TypeAssertionExpression */ || operand.kind === 193 /* AsExpression */) { + while (operand.kind === 176 /* TypeAssertionExpression */ || + operand.kind === 194 /* AsExpression */ || + operand.kind === 195 /* NonNullExpression */) { operand = operand.expression; } // We have an expression of the form: (SubExpr) @@ -34376,15 +35437,15 @@ var ts; // (typeof A).toString() should be emitted as (typeof A).toString() and not typeof A.toString() // new (A()) should be emitted as new (A()) and not new A() // (function foo() { })() should be emitted as an IIF (function foo(){})() and not declaration function foo(){} () - if (operand.kind !== 183 /* PrefixUnaryExpression */ && - operand.kind !== 181 /* VoidExpression */ && - operand.kind !== 180 /* TypeOfExpression */ && - operand.kind !== 179 /* DeleteExpression */ && - operand.kind !== 184 /* PostfixUnaryExpression */ && - operand.kind !== 173 /* NewExpression */ && - !(operand.kind === 172 /* CallExpression */ && node.parent.kind === 173 /* NewExpression */) && - !(operand.kind === 177 /* FunctionExpression */ && node.parent.kind === 172 /* CallExpression */) && - !(operand.kind === 8 /* NumericLiteral */ && node.parent.kind === 170 /* PropertyAccessExpression */)) { + if (operand.kind !== 184 /* PrefixUnaryExpression */ && + operand.kind !== 182 /* VoidExpression */ && + operand.kind !== 181 /* TypeOfExpression */ && + operand.kind !== 180 /* DeleteExpression */ && + operand.kind !== 185 /* PostfixUnaryExpression */ && + operand.kind !== 174 /* NewExpression */ && + !(operand.kind === 173 /* CallExpression */ && node.parent.kind === 174 /* NewExpression */) && + !(operand.kind === 178 /* FunctionExpression */ && node.parent.kind === 173 /* CallExpression */) && + !(operand.kind === 8 /* NumericLiteral */ && node.parent.kind === 171 /* PropertyAccessExpression */)) { emit(operand); return; } @@ -34413,7 +35474,7 @@ var ts; if (!isCurrentFileSystemExternalModule() || node.kind !== 69 /* Identifier */ || ts.nodeIsSynthesized(node)) { return false; } - var isVariableDeclarationOrBindingElement = node.parent && (node.parent.kind === 215 /* VariableDeclaration */ || node.parent.kind === 167 /* BindingElement */); + var isVariableDeclarationOrBindingElement = node.parent && (node.parent.kind === 217 /* VariableDeclaration */ || node.parent.kind === 168 /* BindingElement */); var targetDeclaration = isVariableDeclarationOrBindingElement ? node.parent : resolver.getReferencedValueDeclaration(node); @@ -34444,7 +35505,7 @@ var ts; // the resulting expression a prefix increment operation. And in the second, it will make the resulting // expression a prefix increment whose operand is a plus expression - (++(+x)) // The same is true of minus of course. - if (node.operand.kind === 183 /* PrefixUnaryExpression */) { + if (node.operand.kind === 184 /* PrefixUnaryExpression */) { var operand = node.operand; if (node.operator === 35 /* PlusToken */ && (operand.operator === 35 /* PlusToken */ || operand.operator === 41 /* PlusPlusToken */)) { write(" "); @@ -34500,7 +35561,7 @@ var ts; } var current = ts.getRootDeclaration(node).parent; while (current) { - if (current.kind === 252 /* SourceFile */) { + if (current.kind === 255 /* SourceFile */) { return !isExported || ((ts.getCombinedNodeFlags(node) & 1 /* Export */) !== 0); } else if (ts.isDeclaration(current)) { @@ -34523,7 +35584,7 @@ var ts; if (ts.isElementAccessExpression(leftHandSideExpression)) { shouldEmitParentheses = true; write("("); - synthesizedLHS = ts.createSynthesizedNode(171 /* ElementAccessExpression */, /*startsOnNewLine*/ false); + synthesizedLHS = ts.createSynthesizedNode(172 /* ElementAccessExpression */, /*startsOnNewLine*/ false); var identifier = emitTempVariableAssignment(leftHandSideExpression.expression, /*canDefineTempVariablesInPlace*/ false, /*shouldEmitCommaBeforeAssignment*/ false); synthesizedLHS.expression = identifier; if (leftHandSideExpression.argumentExpression.kind !== 8 /* NumericLiteral */ && @@ -34540,7 +35601,7 @@ var ts; else if (ts.isPropertyAccessExpression(leftHandSideExpression)) { shouldEmitParentheses = true; write("("); - synthesizedLHS = ts.createSynthesizedNode(170 /* PropertyAccessExpression */, /*startsOnNewLine*/ false); + synthesizedLHS = ts.createSynthesizedNode(171 /* PropertyAccessExpression */, /*startsOnNewLine*/ false); var identifier = emitTempVariableAssignment(leftHandSideExpression.expression, /*canDefineTempVariablesInPlace*/ false, /*shouldEmitCommaBeforeAssignment*/ false); synthesizedLHS.expression = identifier; synthesizedLHS.dotToken = leftHandSideExpression.dotToken; @@ -34568,8 +35629,8 @@ var ts; } function emitBinaryExpression(node) { if (languageVersion < 2 /* ES6 */ && node.operatorToken.kind === 56 /* EqualsToken */ && - (node.left.kind === 169 /* ObjectLiteralExpression */ || node.left.kind === 168 /* ArrayLiteralExpression */)) { - emitDestructuring(node, node.parent.kind === 199 /* ExpressionStatement */); + (node.left.kind === 170 /* ObjectLiteralExpression */ || node.left.kind === 169 /* ArrayLiteralExpression */)) { + emitDestructuring(node, node.parent.kind === 201 /* ExpressionStatement */); } else { var exportChanged = node.operatorToken.kind >= 56 /* FirstAssignment */ && @@ -34634,7 +35695,7 @@ var ts; } } function isSingleLineEmptyBlock(node) { - if (node && node.kind === 196 /* Block */) { + if (node && node.kind === 198 /* Block */) { var block = node; return block.statements.length === 0 && nodeEndIsOnSameLineAsNodeStart(block, block); } @@ -34648,12 +35709,12 @@ var ts; } emitToken(15 /* OpenBraceToken */, node.pos); increaseIndent(); - if (node.kind === 223 /* ModuleBlock */) { - ts.Debug.assert(node.parent.kind === 222 /* ModuleDeclaration */); + if (node.kind === 225 /* ModuleBlock */) { + ts.Debug.assert(node.parent.kind === 224 /* ModuleDeclaration */); emitCaptureThisForNodeIfNecessary(node.parent); } emitLines(node.statements); - if (node.kind === 223 /* ModuleBlock */) { + if (node.kind === 225 /* ModuleBlock */) { emitTempDeclarations(/*newLine*/ true); } decreaseIndent(); @@ -34661,7 +35722,7 @@ var ts; emitToken(16 /* CloseBraceToken */, node.statements.end); } function emitEmbeddedStatement(node) { - if (node.kind === 196 /* Block */) { + if (node.kind === 198 /* Block */) { write(" "); emit(node); } @@ -34673,7 +35734,7 @@ var ts; } } function emitExpressionStatement(node) { - emitParenthesizedIf(node.expression, /*parenthesized*/ node.expression.kind === 178 /* ArrowFunction */); + emitParenthesizedIf(node.expression, /*parenthesized*/ node.expression.kind === 179 /* ArrowFunction */); write(";"); } function emitIfStatement(node) { @@ -34686,7 +35747,7 @@ var ts; if (node.elseStatement) { writeLine(); emitToken(80 /* ElseKeyword */, node.thenStatement.end); - if (node.elseStatement.kind === 200 /* IfStatement */) { + if (node.elseStatement.kind === 202 /* IfStatement */) { write(" "); emit(node.elseStatement); } @@ -34706,7 +35767,7 @@ var ts; else { emitNormalLoopBody(node, /*emitAsEmbeddedStatement*/ true); } - if (node.statement.kind === 196 /* Block */) { + if (node.statement.kind === 198 /* Block */) { write(" "); } else { @@ -34796,7 +35857,7 @@ var ts; } else { var loop = convertLoopBody(node); - if (node.parent.kind === 211 /* LabeledStatement */) { + if (node.parent.kind === 213 /* LabeledStatement */) { // if parent of the loop was labeled statement - attach the label to loop skipping converted loop body emitLabelAndColon(node.parent); } @@ -34807,11 +35868,11 @@ var ts; var functionName = makeUniqueName("_loop"); var loopInitializer; switch (node.kind) { - case 203 /* ForStatement */: - case 204 /* ForInStatement */: - case 205 /* ForOfStatement */: + case 205 /* ForStatement */: + case 206 /* ForInStatement */: + case 207 /* ForOfStatement */: var initializer = node.initializer; - if (initializer && initializer.kind === 216 /* VariableDeclarationList */) { + if (initializer && initializer.kind === 218 /* VariableDeclarationList */) { loopInitializer = node.initializer; } break; @@ -34826,7 +35887,7 @@ var ts; processVariableDeclaration(varDeclaration.name); } } - var bodyIsBlock = node.statement.kind === 196 /* Block */; + var bodyIsBlock = node.statement.kind === 198 /* Block */; var paramList = loopParameters ? loopParameters.join(", ") : ""; writeLine(); write("var " + functionName + " = function(" + paramList + ")"); @@ -34861,7 +35922,7 @@ var ts; emit(node.statement); } writeLine(); - // end of loop body -> copy out parameter + // end of loop body -> copy out parameter copyLoopOutParameters(convertedLoopState, 1 /* ToOutParameter */, /*emitAsStatements*/ true); decreaseIndent(); writeLine(); @@ -34968,7 +36029,7 @@ var ts; if (emitAsEmbeddedStatement) { emitEmbeddedStatement(node.statement); } - else if (node.statement.kind === 196 /* Block */) { + else if (node.statement.kind === 198 /* Block */) { emitLines(node.statement.statements); } else { @@ -35009,7 +36070,8 @@ var ts; } // loop is considered simple if it does not have any return statements or break\continue that transfer control outside of the loop // simple loops are emitted as just 'loop()'; - var isSimpleLoop = !loop.state.nonLocalJumps && + // NOTE: if loop uses only 'continue' it still will be emitted as simple loop + var isSimpleLoop = !(loop.state.nonLocalJumps & ~4 /* Continue */) && !loop.state.labeledNonLocalBreaks && !loop.state.labeledNonLocalContinues; var loopResult = makeUniqueName("state"); @@ -35044,10 +36106,6 @@ var ts; write("if (" + loopResult + " === \"break\") break;"); writeLine(); } - if (loop.state.nonLocalJumps & 4 /* Continue */) { - write("if (" + loopResult + " === \"continue\") continue;"); - writeLine(); - } // in case of labeled breaks emit code that either breaks to some known label inside outer loop or delegates jump decision to outer loop emitDispatchTableForLabeledJumps(loopResult, loop.state, convertedLoopState); } @@ -35102,7 +36160,7 @@ var ts; var endPos = emitToken(86 /* ForKeyword */, node.pos); write(" "); endPos = emitToken(17 /* OpenParenToken */, endPos); - if (node.initializer && node.initializer.kind === 216 /* VariableDeclarationList */) { + if (node.initializer && node.initializer.kind === 218 /* VariableDeclarationList */) { var variableDeclarationList = node.initializer; var startIsEmitted = tryEmitStartOfVariableDeclarationList(variableDeclarationList); if (startIsEmitted) { @@ -35128,7 +36186,7 @@ var ts; } } function emitForInOrForOfStatement(node) { - if (languageVersion < 2 /* ES6 */ && node.kind === 205 /* ForOfStatement */) { + if (languageVersion < 2 /* ES6 */ && node.kind === 207 /* ForOfStatement */) { emitLoop(node, emitDownLevelForOfStatementWorker); } else { @@ -35139,7 +36197,7 @@ var ts; var endPos = emitToken(86 /* ForKeyword */, node.pos); write(" "); endPos = emitToken(17 /* OpenParenToken */, endPos); - if (node.initializer.kind === 216 /* VariableDeclarationList */) { + if (node.initializer.kind === 218 /* VariableDeclarationList */) { var variableDeclarationList = node.initializer; if (variableDeclarationList.declarations.length >= 1) { tryEmitStartOfVariableDeclarationList(variableDeclarationList); @@ -35149,7 +36207,7 @@ var ts; else { emit(node.initializer); } - if (node.kind === 204 /* ForInStatement */) { + if (node.kind === 206 /* ForInStatement */) { write(" in "); } else { @@ -35239,7 +36297,7 @@ var ts; // let v = _a[_i]; var rhsIterationValue = createElementAccessExpression(rhsReference, counter); emitStart(node.initializer); - if (node.initializer.kind === 216 /* VariableDeclarationList */) { + if (node.initializer.kind === 218 /* VariableDeclarationList */) { write("var "); var variableDeclarationList = node.initializer; if (variableDeclarationList.declarations.length > 0) { @@ -35269,7 +36327,7 @@ var ts; // Initializer is an expression. Emit the expression in the body, so that it's // evaluated on every iteration. var assignmentExpression = createBinaryExpression(node.initializer, 56 /* EqualsToken */, rhsIterationValue, /*startsOnNewLine*/ false); - if (node.initializer.kind === 168 /* ArrayLiteralExpression */ || node.initializer.kind === 169 /* ObjectLiteralExpression */) { + if (node.initializer.kind === 169 /* ArrayLiteralExpression */ || node.initializer.kind === 170 /* ObjectLiteralExpression */) { // This is a destructuring pattern, so call emitDestructuring instead of emit. Calling emit will not work, because it will cause // the BinaryExpression to be passed in instead of the expression statement, which will cause emitDestructuring to crash. emitDestructuring(assignmentExpression, /*isAssignmentExpressionStatement*/ true, /*value*/ undefined); @@ -35297,7 +36355,7 @@ var ts; // it is possible if either // - break\continue is statement labeled and label is located inside the converted loop // - break\continue is non-labeled and located in non-converted loop\switch statement - var jump = node.kind === 207 /* BreakStatement */ ? 2 /* Break */ : 4 /* Continue */; + var jump = node.kind === 209 /* BreakStatement */ ? 2 /* Break */ : 4 /* Continue */; var canUseBreakOrContinue = (node.label && convertedLoopState.labels && convertedLoopState.labels[node.label.text]) || (!node.label && (convertedLoopState.allowedNonLabeledJumps & jump)); if (!canUseBreakOrContinue) { @@ -35305,18 +36363,19 @@ var ts; // explicit exit from loop -> copy out parameters copyLoopOutParameters(convertedLoopState, 1 /* ToOutParameter */, /*emitAsStatements*/ false); if (!node.label) { - if (node.kind === 207 /* BreakStatement */) { + if (node.kind === 209 /* BreakStatement */) { convertedLoopState.nonLocalJumps |= 2 /* Break */; write("\"break\";"); } else { convertedLoopState.nonLocalJumps |= 4 /* Continue */; + // note: return value is emitted only to simplify debugging, call to converted loop body does not do any dispatching on it. write("\"continue\";"); } } else { var labelMarker = void 0; - if (node.kind === 207 /* BreakStatement */) { + if (node.kind === 209 /* BreakStatement */) { labelMarker = "break-" + node.label.text; setLabeledJump(convertedLoopState, /*isBreak*/ true, node.label.text, labelMarker); } @@ -35329,7 +36388,7 @@ var ts; return; } } - emitToken(node.kind === 207 /* BreakStatement */ ? 70 /* BreakKeyword */ : 75 /* ContinueKeyword */, node.pos); + emitToken(node.kind === 209 /* BreakStatement */ ? 70 /* BreakKeyword */ : 75 /* ContinueKeyword */, node.pos); emitOptional(" ", node.label); write(";"); } @@ -35395,7 +36454,7 @@ var ts; ts.getLineOfLocalPositionFromLineMap(currentLineMap, ts.skipTrivia(currentText, node2.pos)); } function emitCaseOrDefaultClause(node) { - if (node.kind === 245 /* CaseClause */) { + if (node.kind === 248 /* CaseClause */) { write("case "); emit(node.expression); write(":"); @@ -35464,7 +36523,7 @@ var ts; function getContainingModule(node) { do { node = node.parent; - } while (node && node.kind !== 222 /* ModuleDeclaration */); + } while (node && node.kind !== 224 /* ModuleDeclaration */); return node; } function emitContainingModuleName(node) { @@ -35489,19 +36548,19 @@ var ts; function createVoidZero() { var zero = ts.createSynthesizedNode(8 /* NumericLiteral */); zero.text = "0"; - var result = ts.createSynthesizedNode(181 /* VoidExpression */); + var result = ts.createSynthesizedNode(182 /* VoidExpression */); result.expression = zero; return result; } function emitEs6ExportDefaultCompat(node) { - if (node.parent.kind === 252 /* SourceFile */) { - ts.Debug.assert(!!(node.flags & 512 /* Default */) || node.kind === 231 /* ExportAssignment */); + if (node.parent.kind === 255 /* SourceFile */) { + ts.Debug.assert(!!(node.flags & 512 /* Default */) || node.kind === 234 /* ExportAssignment */); // only allow export default at a source file level if (modulekind === ts.ModuleKind.CommonJS || modulekind === ts.ModuleKind.AMD || modulekind === ts.ModuleKind.UMD) { if (!isEs6Module) { if (languageVersion !== 0 /* ES3 */) { // default value of configurable, enumerable, writable are `false`. - write("Object.defineProperty(exports, \"__esModule\", { value: true });"); + write('Object.defineProperty(exports, "__esModule", { value: true });'); writeLine(); } else { @@ -35535,7 +36594,7 @@ var ts; if (node.flags & 512 /* Default */) { emitEs6ExportDefaultCompat(node); if (languageVersion === 0 /* ES3 */) { - write("exports[\"default\"]"); + write('exports["default"]'); } else { write("exports.default"); @@ -35601,7 +36660,7 @@ var ts; emitNodeWithCommentsAndWithoutSourcemap(name); write("\", "); } - var isVariableDeclarationOrBindingElement = name.parent && (name.parent.kind === 215 /* VariableDeclaration */ || name.parent.kind === 167 /* BindingElement */); + var isVariableDeclarationOrBindingElement = name.parent && (name.parent.kind === 217 /* VariableDeclaration */ || name.parent.kind === 168 /* BindingElement */); // If this is first var declaration, we need to start at var/let/const keyword instead // otherwise use nodeForSourceMap as the start position emitStart(isFirstVariableDeclaration(nodeForSourceMap) ? nodeForSourceMap.parent : nodeForSourceMap); @@ -35635,8 +36694,8 @@ var ts; return identifier; } function isFirstVariableDeclaration(root) { - return root.kind === 215 /* VariableDeclaration */ && - root.parent.kind === 216 /* VariableDeclarationList */ && + return root.kind === 217 /* VariableDeclaration */ && + root.parent.kind === 218 /* VariableDeclarationList */ && root.parent.declarations[0] === root; } function emitDestructuring(root, isAssignmentExpressionStatement, value) { @@ -35646,15 +36705,15 @@ var ts; // Also temporary variables should be explicitly allocated for source level declarations when module target is system // because actual variable declarations are hoisted var canDefineTempVariablesInPlace = false; - if (root.kind === 215 /* VariableDeclaration */) { + if (root.kind === 217 /* VariableDeclaration */) { var isExported = ts.getCombinedNodeFlags(root) & 1 /* Export */; var isSourceLevelForSystemModuleKind = shouldHoistDeclarationInSystemJsModule(root); canDefineTempVariablesInPlace = !isExported && !isSourceLevelForSystemModuleKind; } - else if (root.kind === 140 /* Parameter */) { + else if (root.kind === 141 /* Parameter */) { canDefineTempVariablesInPlace = true; } - if (root.kind === 185 /* BinaryExpression */) { + if (root.kind === 186 /* BinaryExpression */) { emitAssignmentExpression(root); } else { @@ -35689,14 +36748,14 @@ var ts; // If the temporary variable needs to be emitted use the source Map node for assignment of that statement value = ensureIdentifier(value, /*reuseIdentifierExpressions*/ true, sourceMapNode); // Return the expression 'value === void 0 ? defaultValue : value' - var equals = ts.createSynthesizedNode(185 /* BinaryExpression */); + var equals = ts.createSynthesizedNode(186 /* BinaryExpression */); equals.left = value; equals.operatorToken = ts.createSynthesizedNode(32 /* EqualsEqualsEqualsToken */); equals.right = createVoidZero(); return createConditionalExpression(equals, defaultValue, value); } function createConditionalExpression(condition, whenTrue, whenFalse) { - var cond = ts.createSynthesizedNode(186 /* ConditionalExpression */); + var cond = ts.createSynthesizedNode(187 /* ConditionalExpression */); cond.condition = condition; cond.questionToken = ts.createSynthesizedNode(53 /* QuestionToken */); cond.whenTrue = whenTrue; @@ -35711,7 +36770,7 @@ var ts; } function createPropertyAccessForDestructuringProperty(object, propName) { var index; - var nameIsComputed = propName.kind === 138 /* ComputedPropertyName */; + var nameIsComputed = propName.kind === 139 /* ComputedPropertyName */; if (nameIsComputed) { // TODO to handle when we look into sourcemaps for computed properties, for now use propName index = ensureIdentifier(propName.expression, /*reuseIdentifierExpressions*/ false, propName); @@ -35731,7 +36790,7 @@ var ts; : createElementAccessExpression(object, index); } function createSliceCall(value, sliceIndex) { - var call = ts.createSynthesizedNode(172 /* CallExpression */); + var call = ts.createSynthesizedNode(173 /* CallExpression */); var sliceIdentifier = ts.createSynthesizedNode(69 /* Identifier */); sliceIdentifier.text = "slice"; call.expression = createPropertyAccessExpression(value, sliceIdentifier); @@ -35749,9 +36808,9 @@ var ts; } for (var _a = 0, properties_5 = properties; _a < properties_5.length; _a++) { var p = properties_5[_a]; - if (p.kind === 249 /* PropertyAssignment */ || p.kind === 250 /* ShorthandPropertyAssignment */) { + if (p.kind === 252 /* PropertyAssignment */ || p.kind === 253 /* ShorthandPropertyAssignment */) { var propName = p.name; - var target_1 = p.kind === 250 /* ShorthandPropertyAssignment */ ? p : p.initializer || propName; + var target_1 = p.kind === 253 /* ShorthandPropertyAssignment */ ? p : p.initializer || propName; // Assignment for target = value.propName should highlight whole property, hence use p as source map node emitDestructuringAssignment(target_1, createPropertyAccessForDestructuringProperty(value, propName), p); } @@ -35767,9 +36826,9 @@ var ts; } for (var i = 0; i < elements.length; i++) { var e = elements[i]; - if (e.kind !== 191 /* OmittedExpression */) { + if (e.kind !== 192 /* OmittedExpression */) { // Assignment for target = value.propName should highlight whole property, hence use e as source map node - if (e.kind !== 189 /* SpreadElementExpression */) { + if (e.kind !== 190 /* SpreadElementExpression */) { emitDestructuringAssignment(e, createElementAccessExpression(value, createNumericLiteral(i)), e); } else if (i === elements.length - 1) { @@ -35780,20 +36839,20 @@ var ts; } function emitDestructuringAssignment(target, value, sourceMapNode) { // When emitting target = value use source map node to highlight, including any temporary assignments needed for this - if (target.kind === 250 /* ShorthandPropertyAssignment */) { + if (target.kind === 253 /* ShorthandPropertyAssignment */) { if (target.objectAssignmentInitializer) { value = createDefaultValueCheck(value, target.objectAssignmentInitializer, sourceMapNode); } target = target.name; } - else if (target.kind === 185 /* BinaryExpression */ && target.operatorToken.kind === 56 /* EqualsToken */) { + else if (target.kind === 186 /* BinaryExpression */ && target.operatorToken.kind === 56 /* EqualsToken */) { value = createDefaultValueCheck(value, target.right, sourceMapNode); target = target.left; } - if (target.kind === 169 /* ObjectLiteralExpression */) { + if (target.kind === 170 /* ObjectLiteralExpression */) { emitObjectLiteralAssignment(target, value, sourceMapNode); } - else if (target.kind === 168 /* ArrayLiteralExpression */) { + else if (target.kind === 169 /* ArrayLiteralExpression */) { emitArrayLiteralAssignment(target, value, sourceMapNode); } else { @@ -35815,7 +36874,7 @@ var ts; emitDestructuringAssignment(target, value, ts.nodeIsSynthesized(root) ? target : root); } else { - if (root.parent.kind !== 176 /* ParenthesizedExpression */) { + if (root.parent.kind !== 177 /* ParenthesizedExpression */) { write("("); } // Temporary assignment needed to emit root should highlight whole binary expression @@ -35824,7 +36883,7 @@ var ts; emitDestructuringAssignment(target, value, root); write(", "); emit(value); - if (root.parent.kind !== 176 /* ParenthesizedExpression */) { + if (root.parent.kind !== 177 /* ParenthesizedExpression */) { write(")"); } } @@ -35852,12 +36911,12 @@ var ts; } for (var i = 0; i < numElements; i++) { var element = elements[i]; - if (pattern.kind === 165 /* ObjectBindingPattern */) { + if (pattern.kind === 166 /* ObjectBindingPattern */) { // Rewrite element to a declaration with an initializer that fetches property var propName = element.propertyName || element.name; emitBindingElement(element, createPropertyAccessForDestructuringProperty(value, propName)); } - else if (element.kind !== 191 /* OmittedExpression */) { + else if (element.kind !== 192 /* OmittedExpression */) { if (!element.dotDotDotToken) { // Rewrite element to a declaration that accesses array element at index i emitBindingElement(element, createElementAccessExpression(value, createNumericLiteral(i))); @@ -35876,12 +36935,26 @@ var ts; } function emitVariableDeclaration(node) { if (ts.isBindingPattern(node.name)) { - if (languageVersion < 2 /* ES6 */) { - emitDestructuring(node, /*isAssignmentExpressionStatement*/ false); - } - else { + var isExported = ts.getCombinedNodeFlags(node) & 1 /* Export */; + if (languageVersion >= 2 /* ES6 */ && (!isExported || modulekind === ts.ModuleKind.ES6)) { + // emit ES6 destructuring only if target module is ES6 or variable is not exported + // exported variables in CJS/AMD are prefixed with 'exports.' so result javascript { exports.toString } = 1; is illegal + var isTopLevelDeclarationInSystemModule = modulekind === ts.ModuleKind.System && + shouldHoistVariable(node, /*checkIfSourceFileLevelDecl*/ true); + if (isTopLevelDeclarationInSystemModule) { + // In System modules top level variables are hoisted + // so variable declarations with destructuring are turned into destructuring assignments. + // As a result, they will need parentheses to disambiguate object binding assignments from blocks. + write("("); + } emit(node.name); emitOptional(" = ", node.initializer); + if (isTopLevelDeclarationInSystemModule) { + write(")"); + } + } + else { + emitDestructuring(node, /*isAssignmentExpressionStatement*/ false); } } else { @@ -35917,12 +36990,12 @@ var ts; var isCapturedInFunction = flags & 131072 /* CapturedBlockScopedBinding */; var isDeclaredInLoop = flags & 262144 /* BlockScopedBindingInLoop */; var emittedAsTopLevel = ts.isBlockScopedContainerTopLevel(container) || - (isCapturedInFunction && isDeclaredInLoop && container.kind === 196 /* Block */ && ts.isIterationStatement(container.parent, /*lookInLabeledStatements*/ false)); + (isCapturedInFunction && isDeclaredInLoop && container.kind === 198 /* Block */ && ts.isIterationStatement(container.parent, /*lookInLabeledStatements*/ false)); var emittedAsNestedLetDeclaration = ts.getCombinedNodeFlags(node) & 1024 /* Let */ && !emittedAsTopLevel; var emitExplicitInitializer = emittedAsNestedLetDeclaration && - container.kind !== 204 /* ForInStatement */ && - container.kind !== 205 /* ForOfStatement */ && + container.kind !== 206 /* ForInStatement */ && + container.kind !== 207 /* ForOfStatement */ && (!resolver.isDeclarationWithCollidingName(node) || (isDeclaredInLoop && !isCapturedInFunction && !ts.isIterationStatement(container, /*lookInLabeledStatements*/ false))); if (emitExplicitInitializer) { @@ -35943,7 +37016,7 @@ var ts; } } function emitExportVariableAssignments(node) { - if (node.kind === 191 /* OmittedExpression */) { + if (node.kind === 192 /* OmittedExpression */) { return; } var name = node.name; @@ -35957,7 +37030,7 @@ var ts; function isES6ExportedDeclaration(node) { return !!(node.flags & 1 /* Export */) && modulekind === ts.ModuleKind.ES6 && - node.parent.kind === 252 /* SourceFile */; + node.parent.kind === 255 /* SourceFile */; } function emitVariableStatement(node) { var startIsEmitted = false; @@ -36008,12 +37081,12 @@ var ts; function emitParameter(node) { if (languageVersion < 2 /* ES6 */) { if (ts.isBindingPattern(node.name)) { - var name_26 = createTempVariable(0 /* Auto */); + var name_28 = createTempVariable(0 /* Auto */); if (!tempParameters) { tempParameters = []; } - tempParameters.push(name_26); - emit(name_26); + tempParameters.push(name_28); + emit(name_28); } else { emit(node.name); @@ -36118,12 +37191,12 @@ var ts; } } function emitAccessor(node) { - write(node.kind === 147 /* GetAccessor */ ? "get " : "set "); + write(node.kind === 148 /* GetAccessor */ ? "get " : "set "); emit(node.name); emitSignatureAndBody(node); } function shouldEmitAsArrowFunction(node) { - return node.kind === 178 /* ArrowFunction */ && languageVersion >= 2 /* ES6 */; + return node.kind === 179 /* ArrowFunction */ && languageVersion >= 2 /* ES6 */; } function emitDeclarationName(node) { if (node.name) { @@ -36134,11 +37207,11 @@ var ts; } } function shouldEmitFunctionName(node) { - if (node.kind === 177 /* FunctionExpression */) { + if (node.kind === 178 /* FunctionExpression */) { // Emit name if one is present return !!node.name; } - if (node.kind === 217 /* FunctionDeclaration */) { + if (node.kind === 219 /* FunctionDeclaration */) { // Emit name if one is present, or emit generated name in down-level case (for export default case) return !!node.name || modulekind !== ts.ModuleKind.ES6; } @@ -36150,12 +37223,12 @@ var ts; // TODO (yuisu) : we should not have special cases to condition emitting comments // but have one place to fix check for these conditions. var kind = node.kind, parent = node.parent; - if (kind !== 145 /* MethodDeclaration */ && - kind !== 144 /* MethodSignature */ && + if (kind !== 146 /* MethodDeclaration */ && + kind !== 145 /* MethodSignature */ && parent && - parent.kind !== 249 /* PropertyAssignment */ && - parent.kind !== 172 /* CallExpression */ && - parent.kind !== 168 /* ArrayLiteralExpression */) { + parent.kind !== 252 /* PropertyAssignment */ && + parent.kind !== 173 /* CallExpression */ && + parent.kind !== 169 /* ArrayLiteralExpression */) { // 1. Methods will emit comments at their assignment declaration sites. // // 2. If the function is a property of object literal, emitting leading-comments @@ -36194,11 +37267,13 @@ var ts; emitDeclarationName(node); } emitSignatureAndBody(node); - if (modulekind !== ts.ModuleKind.ES6 && kind === 217 /* FunctionDeclaration */ && parent === currentSourceFile && node.name) { + if (modulekind !== ts.ModuleKind.ES6 && kind === 219 /* FunctionDeclaration */ && parent === currentSourceFile && node.name) { emitExportMemberAssignments(node.name); } emitEnd(node); - if (kind !== 145 /* MethodDeclaration */ && kind !== 144 /* MethodSignature */) { + if (kind !== 146 /* MethodDeclaration */ && + kind !== 145 /* MethodSignature */ && + kind !== 179 /* ArrowFunction */) { emitTrailingComments(node); } } @@ -36215,8 +37290,9 @@ var ts; write("("); if (node) { var parameters = node.parameters; + var skipCount = node.parameters.length && node.parameters[0].name.text === "this" ? 1 : 0; var omitCount = languageVersion < 2 /* ES6 */ && ts.hasRestParameter(node) ? 1 : 0; - emitList(parameters, 0, parameters.length - omitCount, /*multiLine*/ false, /*trailingComma*/ false); + emitList(parameters, skipCount, parameters.length - omitCount - skipCount, /*multiLine*/ false, /*trailingComma*/ false); } write(")"); decreaseIndent(); @@ -36231,7 +37307,7 @@ var ts; } function emitAsyncFunctionBodyForES6(node) { var promiseConstructor = ts.getEntityNameFromTypeNode(node.type); - var isArrowFunction = node.kind === 178 /* ArrowFunction */; + var isArrowFunction = node.kind === 179 /* ArrowFunction */; var hasLexicalArguments = (resolver.getNodeCheckFlags(node) & 8192 /* CaptureArguments */) !== 0; // An async function is emit as an outer function that calls an inner // generator function. To preserve lexical bindings, we pass the current @@ -36353,7 +37429,7 @@ var ts; write(" { }"); } else { - if (node.body.kind === 196 /* Block */) { + if (node.body.kind === 198 /* Block */) { emitBlockFunctionBody(node, node.body); } else { @@ -36412,10 +37488,10 @@ var ts; write(" "); // Unwrap all type assertions. var current = body; - while (current.kind === 175 /* TypeAssertionExpression */) { + while (current.kind === 176 /* TypeAssertionExpression */) { current = current.expression; } - emitParenthesizedIf(body, current.kind === 169 /* ObjectLiteralExpression */); + emitParenthesizedIf(body, current.kind === 170 /* ObjectLiteralExpression */); } function emitDownLevelExpressionFunctionBody(node, body) { write(" {"); @@ -36500,7 +37576,7 @@ var ts; return undefined; } var statement = statements[index]; - if (statement.kind === 199 /* ExpressionStatement */) { + if (statement.kind === 201 /* ExpressionStatement */) { return ts.isSuperCallExpression(statement.expression) ? statement : undefined; } } @@ -36529,7 +37605,7 @@ var ts; emitNodeWithCommentsAndWithoutSourcemap(memberName); write("]"); } - else if (memberName.kind === 138 /* ComputedPropertyName */) { + else if (memberName.kind === 139 /* ComputedPropertyName */) { emitComputedPropertyName(memberName); } else { @@ -36541,7 +37617,7 @@ var ts; var properties = []; for (var _a = 0, _b = node.members; _a < _b.length; _a++) { var member = _b[_a]; - if (member.kind === 143 /* PropertyDeclaration */ && isStatic === ((member.flags & 32 /* Static */) !== 0) && member.initializer) { + if (member.kind === 144 /* PropertyDeclaration */ && isStatic === ((member.flags & 32 /* Static */) !== 0) && member.initializer) { properties.push(member); } } @@ -36581,11 +37657,11 @@ var ts; } function emitMemberFunctionsForES5AndLower(node) { ts.forEach(node.members, function (member) { - if (member.kind === 195 /* SemicolonClassElement */) { + if (member.kind === 197 /* SemicolonClassElement */) { writeLine(); write(";"); } - else if (member.kind === 145 /* MethodDeclaration */ || node.kind === 144 /* MethodSignature */) { + else if (member.kind === 146 /* MethodDeclaration */ || node.kind === 145 /* MethodSignature */) { if (!member.body) { return emitCommentsOnNotEmittedNode(member); } @@ -36602,7 +37678,7 @@ var ts; write(";"); emitTrailingComments(member); } - else if (member.kind === 147 /* GetAccessor */ || member.kind === 148 /* SetAccessor */) { + else if (member.kind === 148 /* GetAccessor */ || member.kind === 149 /* SetAccessor */) { var accessors = ts.getAllAccessorDeclarations(node.members, member); if (member === accessors.firstAccessor) { writeLine(); @@ -36652,22 +37728,22 @@ var ts; function emitMemberFunctionsForES6AndHigher(node) { for (var _a = 0, _b = node.members; _a < _b.length; _a++) { var member = _b[_a]; - if ((member.kind === 145 /* MethodDeclaration */ || node.kind === 144 /* MethodSignature */) && !member.body) { + if ((member.kind === 146 /* MethodDeclaration */ || node.kind === 145 /* MethodSignature */) && !member.body) { emitCommentsOnNotEmittedNode(member); } - else if (member.kind === 145 /* MethodDeclaration */ || - member.kind === 147 /* GetAccessor */ || - member.kind === 148 /* SetAccessor */) { + else if (member.kind === 146 /* MethodDeclaration */ || + member.kind === 148 /* GetAccessor */ || + member.kind === 149 /* SetAccessor */) { writeLine(); emitLeadingComments(member); emitStart(member); if (member.flags & 32 /* Static */) { write("static "); } - if (member.kind === 147 /* GetAccessor */) { + if (member.kind === 148 /* GetAccessor */) { write("get "); } - else if (member.kind === 148 /* SetAccessor */) { + else if (member.kind === 149 /* SetAccessor */) { write("set "); } if (member.asteriskToken) { @@ -36678,7 +37754,7 @@ var ts; emitEnd(member); emitTrailingComments(member); } - else if (member.kind === 195 /* SemicolonClassElement */) { + else if (member.kind === 197 /* SemicolonClassElement */) { writeLine(); write(";"); } @@ -36707,11 +37783,11 @@ var ts; var hasInstancePropertyWithInitializer = false; // Emit the constructor overload pinned comments ts.forEach(node.members, function (member) { - if (member.kind === 146 /* Constructor */ && !member.body) { + if (member.kind === 147 /* Constructor */ && !member.body) { emitCommentsOnNotEmittedNode(member); } // Check if there is any non-static property assignment - if (member.kind === 143 /* PropertyDeclaration */ && member.initializer && (member.flags & 32 /* Static */) === 0) { + if (member.kind === 144 /* PropertyDeclaration */ && member.initializer && (member.flags & 32 /* Static */) === 0) { hasInstancePropertyWithInitializer = true; } }); @@ -36825,9 +37901,11 @@ var ts; } function emitClassLikeDeclarationForES6AndHigher(node) { var decoratedClassAlias; - var thisNodeIsDecorated = ts.nodeIsDecorated(node); - if (node.kind === 218 /* ClassDeclaration */) { - if (thisNodeIsDecorated) { + var isHoistedDeclarationInSystemModule = shouldHoistDeclarationInSystemJsModule(node); + var isDecorated = ts.nodeIsDecorated(node); + var rewriteAsClassExpression = isDecorated || isHoistedDeclarationInSystemModule; + if (node.kind === 220 /* ClassDeclaration */) { + if (rewriteAsClassExpression) { // When we emit an ES6 class that has a class decorator, we must tailor the // emit to certain specific cases. // @@ -36907,7 +37985,10 @@ var ts; // --------------------------------------------------------------------- // [Example 4] // - if (resolver.getNodeCheckFlags(node) & 524288 /* ClassWithBodyScopedClassBinding */) { + // NOTE: we reuse the same rewriting logic for cases when targeting ES6 and module kind is System. + // Because of hoisting top level class declaration need to be emitted as class expressions. + // Double bind case is only required if node is decorated. + if (isDecorated && resolver.getNodeCheckFlags(node) & 524288 /* ClassWithBodyScopedClassBinding */) { decoratedClassAlias = ts.unescapeIdentifier(makeUniqueName(node.name ? node.name.text : "default")); decoratedClassAliases[ts.getNodeId(node)] = decoratedClassAlias; write("let " + decoratedClassAlias + ";"); @@ -36916,7 +37997,9 @@ var ts; if (isES6ExportedDeclaration(node) && !(node.flags & 512 /* Default */)) { write("export "); } - write("let "); + if (!isHoistedDeclarationInSystemModule) { + write("let "); + } emitDeclarationName(node); if (decoratedClassAlias !== undefined) { write(" = " + decoratedClassAlias); @@ -36942,7 +38025,7 @@ var ts; // This keeps the expression as an expression, while ensuring that the static parts // of it have been initialized by the time it is used. var staticProperties = getInitializedProperties(node, /*isStatic*/ true); - var isClassExpressionWithStaticProperties = staticProperties.length > 0 && node.kind === 190 /* ClassExpression */; + var isClassExpressionWithStaticProperties = staticProperties.length > 0 && node.kind === 191 /* ClassExpression */; var tempVariable; if (isClassExpressionWithStaticProperties) { tempVariable = createAndRecordTempVariable(0 /* Auto */); @@ -36955,7 +38038,7 @@ var ts; // emit name if // - node has a name // - this is default export with static initializers - if (node.name || (node.flags & 512 /* Default */ && (staticProperties.length > 0 || modulekind !== ts.ModuleKind.ES6) && !thisNodeIsDecorated)) { + if (node.name || (node.flags & 512 /* Default */ && (staticProperties.length > 0 || modulekind !== ts.ModuleKind.ES6) && !rewriteAsClassExpression)) { write(" "); emitDeclarationName(node); } @@ -36972,7 +38055,7 @@ var ts; decreaseIndent(); writeLine(); emitToken(16 /* CloseBraceToken */, node.members.end); - if (thisNodeIsDecorated) { + if (rewriteAsClassExpression) { decoratedClassAliases[ts.getNodeId(node)] = undefined; write(";"); } @@ -37010,14 +38093,14 @@ var ts; // module), export it if (node.flags & 512 /* Default */) { // if this is a top level default export of decorated class, write the export after the declaration. - if (thisNodeIsDecorated) { + if (isDecorated) { writeLine(); write("export default "); emitDeclarationName(node); write(";"); } } - else if (node.parent.kind !== 252 /* SourceFile */) { + else if (node.parent.kind !== 255 /* SourceFile */) { writeLine(); emitStart(node); emitModuleMemberName(node); @@ -37029,7 +38112,7 @@ var ts; } } function emitClassLikeDeclarationBelowES6(node) { - if (node.kind === 218 /* ClassDeclaration */) { + if (node.kind === 220 /* ClassDeclaration */) { // source file level classes in system modules are hoisted so 'var's for them are already defined if (!shouldHoistDeclarationInSystemJsModule(node)) { write("var "); @@ -37090,11 +38173,11 @@ var ts; emit(baseTypeNode.expression); } write("))"); - if (node.kind === 218 /* ClassDeclaration */) { + if (node.kind === 220 /* ClassDeclaration */) { write(";"); } emitEnd(node); - if (node.kind === 218 /* ClassDeclaration */) { + if (node.kind === 220 /* ClassDeclaration */) { emitExportMemberAssignment(node); } } @@ -37181,7 +38264,7 @@ var ts; else { decorators = member.decorators; // we only decorate the parameters here if this is a method - if (member.kind === 145 /* MethodDeclaration */) { + if (member.kind === 146 /* MethodDeclaration */) { functionLikeMember = member; } } @@ -37238,7 +38321,7 @@ var ts; write(", "); emitExpressionForPropertyName(member.name); if (languageVersion > 0 /* ES3 */) { - if (member.kind !== 143 /* PropertyDeclaration */) { + if (member.kind !== 144 /* PropertyDeclaration */) { // We emit `null` here to indicate to `__decorate` that it can invoke `Object.getOwnPropertyDescriptor` directly. // We have this extra argument here so that we can inject an explicit property descriptor at a later date. write(", null"); @@ -37280,10 +38363,10 @@ var ts; // The caller should have already tested whether the node has decorators and whether the emitDecoratorMetadata // compiler option is set. switch (node.kind) { - case 145 /* MethodDeclaration */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: - case 143 /* PropertyDeclaration */: + case 146 /* MethodDeclaration */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: + case 144 /* PropertyDeclaration */: return true; } return false; @@ -37293,7 +38376,7 @@ var ts; // The caller should have already tested whether the node has decorators and whether the emitDecoratorMetadata // compiler option is set. switch (node.kind) { - case 145 /* MethodDeclaration */: + case 146 /* MethodDeclaration */: return true; } return false; @@ -37303,9 +38386,9 @@ var ts; // The caller should have already tested whether the node has decorators and whether the emitDecoratorMetadata // compiler option is set. switch (node.kind) { - case 218 /* ClassDeclaration */: - case 145 /* MethodDeclaration */: - case 148 /* SetAccessor */: + case 220 /* ClassDeclaration */: + case 146 /* MethodDeclaration */: + case 149 /* SetAccessor */: return true; } return false; @@ -37323,19 +38406,19 @@ var ts; // // For rules on serializing type annotations, see `serializeTypeNode`. switch (node.kind) { - case 218 /* ClassDeclaration */: + case 220 /* ClassDeclaration */: write("Function"); return; - case 143 /* PropertyDeclaration */: + case 144 /* PropertyDeclaration */: emitSerializedTypeNode(node.type); return; - case 140 /* Parameter */: + case 141 /* Parameter */: emitSerializedTypeNode(node.type); return; - case 147 /* GetAccessor */: + case 148 /* GetAccessor */: emitSerializedTypeNode(node.type); return; - case 148 /* SetAccessor */: + case 149 /* SetAccessor */: emitSerializedTypeNode(ts.getSetAccessorTypeAnnotationNode(node)); return; } @@ -37351,23 +38434,23 @@ var ts; case 103 /* VoidKeyword */: write("void 0"); return; - case 162 /* ParenthesizedType */: + case 163 /* ParenthesizedType */: emitSerializedTypeNode(node.type); return; - case 154 /* FunctionType */: - case 155 /* ConstructorType */: + case 155 /* FunctionType */: + case 156 /* ConstructorType */: write("Function"); return; - case 158 /* ArrayType */: - case 159 /* TupleType */: + case 159 /* ArrayType */: + case 160 /* TupleType */: write("Array"); return; - case 152 /* TypePredicate */: + case 153 /* TypePredicate */: case 120 /* BooleanKeyword */: write("Boolean"); return; case 131 /* StringKeyword */: - case 164 /* StringLiteralType */: + case 165 /* StringLiteralType */: write("String"); return; case 129 /* NumberKeyword */: @@ -37376,15 +38459,15 @@ var ts; case 132 /* SymbolKeyword */: write("Symbol"); return; - case 153 /* TypeReference */: + case 154 /* TypeReference */: emitSerializedTypeReferenceNode(node); return; - case 156 /* TypeQuery */: - case 157 /* TypeLiteral */: - case 160 /* UnionType */: - case 161 /* IntersectionType */: + case 157 /* TypeQuery */: + case 158 /* TypeLiteral */: + case 161 /* UnionType */: + case 162 /* IntersectionType */: case 117 /* AnyKeyword */: - case 163 /* ThisType */: + case 164 /* ThisType */: break; default: ts.Debug.fail("Cannot serialize unexpected type node."); @@ -37457,7 +38540,7 @@ var ts; // For the rules on serializing the type of each parameter declaration, see `serializeTypeOfDeclaration`. if (node) { var valueDeclaration = void 0; - if (node.kind === 218 /* ClassDeclaration */) { + if (node.kind === 220 /* ClassDeclaration */) { valueDeclaration = ts.getFirstConstructorWithBody(node); } else if (ts.isFunctionLike(node) && ts.nodeIsPresent(node.body)) { @@ -37473,10 +38556,10 @@ var ts; } if (parameters[i].dotDotDotToken) { var parameterType = parameters[i].type; - if (parameterType.kind === 158 /* ArrayType */) { + if (parameterType.kind === 159 /* ArrayType */) { parameterType = parameterType.elementType; } - else if (parameterType.kind === 153 /* TypeReference */ && parameterType.typeArguments && parameterType.typeArguments.length === 1) { + else if (parameterType.kind === 154 /* TypeReference */ && parameterType.typeArguments && parameterType.typeArguments.length === 1) { parameterType = parameterType.typeArguments[0]; } else { @@ -37553,7 +38636,7 @@ var ts; if (!shouldHoistDeclarationInSystemJsModule(node)) { // do not emit var if variable was already hoisted var isES6ExportedEnum = isES6ExportedDeclaration(node); - if (!(node.flags & 1 /* Export */) || (isES6ExportedEnum && isFirstDeclarationOfKind(node, node.symbol && node.symbol.declarations, 221 /* EnumDeclaration */))) { + if (!(node.flags & 1 /* Export */) || (isES6ExportedEnum && isFirstDeclarationOfKind(node, node.symbol && node.symbol.declarations, 223 /* EnumDeclaration */))) { emitStart(node); if (isES6ExportedEnum) { write("export "); @@ -37635,7 +38718,7 @@ var ts; } } function getInnerMostModuleDeclarationFromDottedModule(moduleDeclaration) { - if (moduleDeclaration.body.kind === 222 /* ModuleDeclaration */) { + if (moduleDeclaration.body.kind === 224 /* ModuleDeclaration */) { var recursiveInnerModule = getInnerMostModuleDeclarationFromDottedModule(moduleDeclaration.body); return recursiveInnerModule || moduleDeclaration.body; } @@ -37659,7 +38742,7 @@ var ts; var emitVarForModule = !hoistedInDeclarationScope && !isModuleMergedWithES6Class(node); if (emitVarForModule) { var isES6ExportedNamespace = isES6ExportedDeclaration(node); - if (!isES6ExportedNamespace || isFirstDeclarationOfKind(node, node.symbol && node.symbol.declarations, 222 /* ModuleDeclaration */)) { + if (!isES6ExportedNamespace || isFirstDeclarationOfKind(node, node.symbol && node.symbol.declarations, 224 /* ModuleDeclaration */)) { emitStart(node); if (isES6ExportedNamespace) { write("export "); @@ -37677,7 +38760,7 @@ var ts; write(getGeneratedNameForNode(node)); emitEnd(node.name); write(") "); - if (node.body.kind === 223 /* ModuleBlock */) { + if (node.body.kind === 225 /* ModuleBlock */) { var saveConvertedLoopState = convertedLoopState; var saveTempFlags = tempFlags; var saveTempVariables = tempVariables; @@ -37753,16 +38836,16 @@ var ts; } } function getNamespaceDeclarationNode(node) { - if (node.kind === 225 /* ImportEqualsDeclaration */) { + if (node.kind === 228 /* ImportEqualsDeclaration */) { return node; } var importClause = node.importClause; - if (importClause && importClause.namedBindings && importClause.namedBindings.kind === 228 /* NamespaceImport */) { + if (importClause && importClause.namedBindings && importClause.namedBindings.kind === 231 /* NamespaceImport */) { return importClause.namedBindings; } } function isDefaultImport(node) { - return node.kind === 226 /* ImportDeclaration */ && node.importClause && !!node.importClause.name; + return node.kind === 229 /* ImportDeclaration */ && node.importClause && !!node.importClause.name; } function emitExportImportAssignments(node) { if (ts.isAliasSymbolDeclaration(node) && resolver.isValueAliasDeclaration(node)) { @@ -37790,7 +38873,7 @@ var ts; if (shouldEmitNamedBindings) { emitLeadingComments(node.importClause.namedBindings); emitStart(node.importClause.namedBindings); - if (node.importClause.namedBindings.kind === 228 /* NamespaceImport */) { + if (node.importClause.namedBindings.kind === 231 /* NamespaceImport */) { write("* as "); emit(node.importClause.namedBindings.name); } @@ -37816,7 +38899,7 @@ var ts; } function emitExternalImportDeclaration(node) { if (ts.contains(externalImports, node)) { - var isExportedImport = node.kind === 225 /* ImportEqualsDeclaration */ && (node.flags & 1 /* Export */) !== 0; + var isExportedImport = node.kind === 228 /* ImportEqualsDeclaration */ && (node.flags & 1 /* Export */) !== 0; var namespaceDeclaration = getNamespaceDeclarationNode(node); var varOrConst = (languageVersion <= 1 /* ES5 */) ? "var " : "const "; if (modulekind !== ts.ModuleKind.AMD) { @@ -37838,7 +38921,7 @@ var ts; // import { x, y } from "foo" // import d, * as x from "foo" // import d, { x, y } from "foo" - var isNakedImport = 226 /* ImportDeclaration */ && !node.importClause; + var isNakedImport = 229 /* ImportDeclaration */ && !node.importClause; if (!isNakedImport) { write(varOrConst); write(getGeneratedNameForNode(node)); @@ -38017,8 +39100,8 @@ var ts; write("export default "); var expression = node.expression; emit(expression); - if (expression.kind !== 217 /* FunctionDeclaration */ && - expression.kind !== 218 /* ClassDeclaration */) { + if (expression.kind !== 219 /* FunctionDeclaration */ && + expression.kind !== 220 /* ClassDeclaration */) { write(";"); } emitEnd(node); @@ -38035,7 +39118,7 @@ var ts; emitEs6ExportDefaultCompat(node); emitContainingModuleName(node); if (languageVersion === 0 /* ES3 */) { - write("[\"default\"] = "); + write('["default"] = '); } else { write(".default = "); @@ -38055,7 +39138,7 @@ var ts; for (var _a = 0, _b = sourceFile.statements; _a < _b.length; _a++) { var node = _b[_a]; switch (node.kind) { - case 226 /* ImportDeclaration */: + case 229 /* ImportDeclaration */: if (!node.importClause || resolver.isReferencedAliasDeclaration(node.importClause, /*checkChildren*/ true)) { // import "mod" @@ -38065,13 +39148,13 @@ var ts; externalImports.push(node); } break; - case 225 /* ImportEqualsDeclaration */: - if (node.moduleReference.kind === 236 /* ExternalModuleReference */ && resolver.isReferencedAliasDeclaration(node)) { + case 228 /* ImportEqualsDeclaration */: + if (node.moduleReference.kind === 239 /* ExternalModuleReference */ && resolver.isReferencedAliasDeclaration(node)) { // import x = require("mod") where x is referenced externalImports.push(node); } break; - case 232 /* ExportDeclaration */: + case 235 /* ExportDeclaration */: if (node.moduleSpecifier) { if (!node.exportClause) { // export * from "mod" @@ -38089,12 +39172,12 @@ var ts; // export { x, y } for (var _c = 0, _d = node.exportClause.elements; _c < _d.length; _c++) { var specifier = _d[_c]; - var name_27 = (specifier.propertyName || specifier.name).text; - (exportSpecifiers[name_27] || (exportSpecifiers[name_27] = [])).push(specifier); + var name_29 = (specifier.propertyName || specifier.name).text; + (exportSpecifiers[name_29] || (exportSpecifiers[name_29] = [])).push(specifier); } } break; - case 231 /* ExportAssignment */: + case 234 /* ExportAssignment */: if (node.isExportEquals && !exportEquals) { // export = x exportEquals = node; @@ -38120,18 +39203,18 @@ var ts; if (namespaceDeclaration && !isDefaultImport(node)) { return ts.getTextOfNodeFromSourceText(currentText, namespaceDeclaration.name); } - if (node.kind === 226 /* ImportDeclaration */ && node.importClause) { + if (node.kind === 229 /* ImportDeclaration */ && node.importClause) { return getGeneratedNameForNode(node); } - if (node.kind === 232 /* ExportDeclaration */ && node.moduleSpecifier) { + if (node.kind === 235 /* ExportDeclaration */ && node.moduleSpecifier) { return getGeneratedNameForNode(node); } } function getExternalModuleNameText(importNode, emitRelativePathAsModuleName) { if (emitRelativePathAsModuleName) { - var name_28 = getExternalModuleNameFromDeclaration(host, resolver, importNode); - if (name_28) { - return "\"" + name_28 + "\""; + var name_30 = getExternalModuleNameFromDeclaration(host, resolver, importNode); + if (name_30) { + return "\"" + name_30 + "\""; } } var moduleName = ts.getExternalModuleName(importNode); @@ -38149,8 +39232,8 @@ var ts; for (var _a = 0, externalImports_1 = externalImports; _a < externalImports_1.length; _a++) { var importNode = externalImports_1[_a]; // do not create variable declaration for exports and imports that lack import clause - var skipNode = importNode.kind === 232 /* ExportDeclaration */ || - (importNode.kind === 226 /* ImportDeclaration */ && !importNode.importClause); + var skipNode = importNode.kind === 235 /* ExportDeclaration */ || + (importNode.kind === 229 /* ImportDeclaration */ && !importNode.importClause); if (skipNode) { continue; } @@ -38183,7 +39266,7 @@ var ts; var hasExportDeclarationWithExportClause = false; for (var _a = 0, externalImports_2 = externalImports; _a < externalImports_2.length; _a++) { var externalImport = externalImports_2[_a]; - if (externalImport.kind === 232 /* ExportDeclaration */ && externalImport.exportClause) { + if (externalImport.kind === 235 /* ExportDeclaration */ && externalImport.exportClause) { hasExportDeclarationWithExportClause = true; break; } @@ -38215,7 +39298,7 @@ var ts; } for (var _d = 0, externalImports_3 = externalImports; _d < externalImports_3.length; _d++) { var externalImport = externalImports_3[_d]; - if (externalImport.kind !== 232 /* ExportDeclaration */) { + if (externalImport.kind !== 235 /* ExportDeclaration */) { continue; } var exportDecl = externalImport; @@ -38303,12 +39386,12 @@ var ts; var seen = {}; for (var i = 0; i < hoistedVars.length; i++) { var local = hoistedVars[i]; - var name_29 = local.kind === 69 /* Identifier */ + var name_31 = local.kind === 69 /* Identifier */ ? local : local.name; - if (name_29) { + if (name_31) { // do not emit duplicate entries (in case of declaration merging) in the list of hoisted variables - var text = ts.unescapeIdentifier(name_29.text); + var text = ts.unescapeIdentifier(name_31.text); if (ts.hasProperty(seen, text)) { continue; } @@ -38319,7 +39402,7 @@ var ts; if (i !== 0) { write(", "); } - if (local.kind === 218 /* ClassDeclaration */ || local.kind === 222 /* ModuleDeclaration */ || local.kind === 221 /* EnumDeclaration */) { + if (local.kind === 220 /* ClassDeclaration */ || local.kind === 224 /* ModuleDeclaration */ || local.kind === 223 /* EnumDeclaration */) { emitDeclarationName(local); } else { @@ -38353,21 +39436,21 @@ var ts; if (node.flags & 2 /* Ambient */) { return; } - if (node.kind === 217 /* FunctionDeclaration */) { + if (node.kind === 219 /* FunctionDeclaration */) { if (!hoistedFunctionDeclarations) { hoistedFunctionDeclarations = []; } hoistedFunctionDeclarations.push(node); return; } - if (node.kind === 218 /* ClassDeclaration */) { + if (node.kind === 220 /* ClassDeclaration */) { if (!hoistedVars) { hoistedVars = []; } hoistedVars.push(node); return; } - if (node.kind === 221 /* EnumDeclaration */) { + if (node.kind === 223 /* EnumDeclaration */) { if (shouldEmitEnumDeclaration(node)) { if (!hoistedVars) { hoistedVars = []; @@ -38376,7 +39459,7 @@ var ts; } return; } - if (node.kind === 222 /* ModuleDeclaration */) { + if (node.kind === 224 /* ModuleDeclaration */) { if (shouldEmitModuleDeclaration(node)) { if (!hoistedVars) { hoistedVars = []; @@ -38385,17 +39468,17 @@ var ts; } return; } - if (node.kind === 215 /* VariableDeclaration */ || node.kind === 167 /* BindingElement */) { + if (node.kind === 217 /* VariableDeclaration */ || node.kind === 168 /* BindingElement */) { if (shouldHoistVariable(node, /*checkIfSourceFileLevelDecl*/ false)) { - var name_30 = node.name; - if (name_30.kind === 69 /* Identifier */) { + var name_32 = node.name; + if (name_32.kind === 69 /* Identifier */) { if (!hoistedVars) { hoistedVars = []; } - hoistedVars.push(name_30); + hoistedVars.push(name_32); } else { - ts.forEachChild(name_30, visit); + ts.forEachChild(name_32, visit); } } return; @@ -38426,7 +39509,7 @@ var ts; // if block scoped variables are nested in some another block then // no other functions can use them except ones that are defined at least in the same block return (ts.getCombinedNodeFlags(node) & 3072 /* BlockScoped */) === 0 || - ts.getEnclosingBlockScopeContainer(node).kind === 252 /* SourceFile */; + ts.getEnclosingBlockScopeContainer(node).kind === 255 /* SourceFile */; } function isCurrentFileSystemExternalModule() { return modulekind === ts.ModuleKind.System && isCurrentFileExternalModule; @@ -38501,21 +39584,21 @@ var ts; var entry = group_1[_a]; var importVariableName = getLocalNameForExternalImport(entry) || ""; switch (entry.kind) { - case 226 /* ImportDeclaration */: + case 229 /* ImportDeclaration */: if (!entry.importClause) { // 'import "..."' case // module is imported only for side-effects, no emit required break; } // fall-through - case 225 /* ImportEqualsDeclaration */: + case 228 /* ImportEqualsDeclaration */: ts.Debug.assert(importVariableName !== ""); writeLine(); // save import into the local write(importVariableName + " = " + parameterName + ";"); writeLine(); break; - case 232 /* ExportDeclaration */: + case 235 /* ExportDeclaration */: ts.Debug.assert(importVariableName !== ""); if (entry.exportClause) { // export {a, b as c} from 'foo' @@ -38574,10 +39657,10 @@ var ts; // - import declarations are not emitted since they are already handled in setters // - export declarations with module specifiers are not emitted since they were already written in setters // - export declarations without module specifiers are emitted preserving the order - case 217 /* FunctionDeclaration */: - case 226 /* ImportDeclaration */: + case 219 /* FunctionDeclaration */: + case 229 /* ImportDeclaration */: continue; - case 232 /* ExportDeclaration */: + case 235 /* ExportDeclaration */: if (!statement.moduleSpecifier) { for (var _a = 0, _b = statement.exportClause.elements; _a < _b.length; _a++) { var element = _b[_a]; @@ -38586,7 +39669,7 @@ var ts; } } continue; - case 225 /* ImportEqualsDeclaration */: + case 228 /* ImportEqualsDeclaration */: if (!ts.isInternalModuleImportEqualsDeclaration(statement)) { // - import equals declarations that import external modules are not emitted continue; @@ -38633,7 +39716,7 @@ var ts; continue; } // text should be quoted string - // for deduplication purposes in key remove leading and trailing quotes so 'a' and "a" will be considered the same + // for deduplication purposes in key remove leading and trailing quotes so 'a' and "a" will be considered the same var key = text.substr(1, text.length - 2); if (ts.hasProperty(groupIndices, key)) { // deduplicate/group entries in dependency list by the dependency name @@ -38676,11 +39759,11 @@ var ts; for (var _a = 0, _b = node.amdDependencies; _a < _b.length; _a++) { var amdDependency = _b[_a]; if (amdDependency.name) { - aliasedModuleNames.push("\"" + amdDependency.path + "\""); + aliasedModuleNames.push('"' + amdDependency.path + '"'); importAliasNames.push(amdDependency.name); } else { - unaliasedModuleNames.push("\"" + amdDependency.path + "\""); + unaliasedModuleNames.push('"' + amdDependency.path + '"'); } } for (var _c = 0, externalImports_4 = externalImports; _c < externalImports_4.length; _c++) { @@ -38718,7 +39801,7 @@ var ts; } function emitAMDDependencyList(_a) { var aliasedModuleNames = _a.aliasedModuleNames, unaliasedModuleNames = _a.unaliasedModuleNames; - write("[\"require\", \"exports\""); + write('["require", "exports"'); if (aliasedModuleNames.length) { write(", "); write(aliasedModuleNames.join(", ")); @@ -38750,8 +39833,8 @@ var ts; emitExportStarHelper(); emitCaptureThisForNodeIfNecessary(node); emitLinesStartingAt(node.statements, startIndex); - emitTempDeclarations(/*newLine*/ true); emitExportEquals(/*emitAsReturn*/ true); + emitTempDeclarations(/*newLine*/ true); decreaseIndent(); writeLine(); write("});"); @@ -38763,8 +39846,8 @@ var ts; emitExportStarHelper(); emitCaptureThisForNodeIfNecessary(node); emitLinesStartingAt(node.statements, startIndex); - emitTempDeclarations(/*newLine*/ true); emitExportEquals(/*emitAsReturn*/ false); + emitTempDeclarations(/*newLine*/ true); } function emitUMDModule(node) { emitEmitHelpers(node); @@ -38781,8 +39864,8 @@ var ts; emitExportStarHelper(); emitCaptureThisForNodeIfNecessary(node); emitLinesStartingAt(node.statements, startIndex); - emitTempDeclarations(/*newLine*/ true); emitExportEquals(/*emitAsReturn*/ true); + emitTempDeclarations(/*newLine*/ true); decreaseIndent(); writeLine(); write("});"); @@ -38856,7 +39939,7 @@ var ts; if (entities[m] !== undefined) { var ch = String.fromCharCode(entities[m]); // " needs to be escaped - return ch === "\"" ? "\\\"" : ch; + return ch === '"' ? "\\\"" : ch; } else { return s; @@ -38866,11 +39949,11 @@ var ts; return result; } function isJsxChildEmittable(child) { - if (child.kind === 244 /* JsxExpression */) { + if (child.kind === 247 /* JsxExpression */) { // Don't emit empty expressions return !!child.expression; } - else if (child.kind === 240 /* JsxText */) { + else if (child.kind === 243 /* JsxText */) { // Don't emit empty strings return !!getTextToEmit(child); } @@ -38895,9 +39978,9 @@ var ts; function emitJsxText(node) { switch (compilerOptions.jsx) { case 2 /* React */: - write("\""); + write('"'); write(trimReactWhitespaceAndApplyEntities(node)); - write("\""); + write('"'); break; case 1 /* Preserve */: default: @@ -38921,7 +40004,7 @@ var ts; } } function isUseStrictPrologue(node) { - return !!node.expression.text.match(/use strict/); + return node.expression.text === "use strict"; } function ensureUseStrictPrologue(startWithNewLine, writeUseStrict) { if (writeUseStrict) { @@ -38967,10 +40050,14 @@ var ts; if (!compilerOptions.noEmitHelpers) { // Only Emit __extends function when target ES5. // For target ES6 and above, we can emit classDeclaration as is. - if ((languageVersion < 2 /* ES6 */) && (!extendsEmitted && node.flags & 262144 /* HasClassExtends */)) { + if (languageVersion < 2 /* ES6 */ && !extendsEmitted && node.flags & 262144 /* HasClassExtends */) { writeLines(extendsHelper); extendsEmitted = true; } + if (compilerOptions.jsx !== 1 /* Preserve */ && !assignEmitted && (node.flags & 1073741824 /* HasJsxSpreadAttribute */)) { + writeLines(assignHelper); + assignEmitted = true; + } if (!decorateEmitted && node.flags & 524288 /* HasDecorators */) { writeLines(decorateHelper); if (compilerOptions.emitDecoratorMetadata) { @@ -39070,24 +40157,24 @@ var ts; switch (node.kind) { // All of these entities are emitted in a specialized fashion. As such, we allow // the specialized methods for each to handle the comments on the nodes. - case 219 /* InterfaceDeclaration */: - case 217 /* FunctionDeclaration */: - case 226 /* ImportDeclaration */: - case 225 /* ImportEqualsDeclaration */: - case 220 /* TypeAliasDeclaration */: - case 231 /* ExportAssignment */: + case 221 /* InterfaceDeclaration */: + case 219 /* FunctionDeclaration */: + case 229 /* ImportDeclaration */: + case 228 /* ImportEqualsDeclaration */: + case 222 /* TypeAliasDeclaration */: + case 234 /* ExportAssignment */: return true; } } function shouldEmitLeadingAndTrailingComments(node) { switch (node.kind) { - case 197 /* VariableStatement */: + case 199 /* VariableStatement */: return shouldEmitLeadingAndTrailingCommentsForVariableStatement(node); - case 222 /* ModuleDeclaration */: + case 224 /* ModuleDeclaration */: // Only emit the leading/trailing comments for a module if we're actually // emitting the module as well. return shouldEmitModuleDeclaration(node); - case 221 /* EnumDeclaration */: + case 223 /* EnumDeclaration */: // Only emit the leading/trailing comments for an enum if we're actually // emitting the module as well. return shouldEmitEnumDeclaration(node); @@ -39099,9 +40186,9 @@ var ts; // then we don't want to emit comments when we emit the body. It will have already // been taken care of when we emitted the 'return' statement for the function // expression body. - if (node.kind !== 196 /* Block */ && + if (node.kind !== 198 /* Block */ && node.parent && - node.parent.kind === 178 /* ArrowFunction */ && + node.parent.kind === 179 /* ArrowFunction */ && node.parent.body === node && compilerOptions.target <= 1 /* ES5 */) { return false; @@ -39114,13 +40201,13 @@ var ts; switch (node.kind) { case 69 /* Identifier */: return emitIdentifier(node); - case 140 /* Parameter */: + case 141 /* Parameter */: return emitParameter(node); - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: return emitMethod(node); - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: return emitAccessor(node); case 97 /* ThisKeyword */: return emitThis(node); @@ -39140,142 +40227,142 @@ var ts; case 13 /* TemplateMiddle */: case 14 /* TemplateTail */: return emitLiteral(node); - case 187 /* TemplateExpression */: + case 188 /* TemplateExpression */: return emitTemplateExpression(node); - case 194 /* TemplateSpan */: + case 196 /* TemplateSpan */: return emitTemplateSpan(node); - case 237 /* JsxElement */: - case 238 /* JsxSelfClosingElement */: + case 240 /* JsxElement */: + case 241 /* JsxSelfClosingElement */: return emitJsxElement(node); - case 240 /* JsxText */: + case 243 /* JsxText */: return emitJsxText(node); - case 244 /* JsxExpression */: + case 247 /* JsxExpression */: return emitJsxExpression(node); - case 137 /* QualifiedName */: + case 138 /* QualifiedName */: return emitQualifiedName(node); - case 165 /* ObjectBindingPattern */: + case 166 /* ObjectBindingPattern */: return emitObjectBindingPattern(node); - case 166 /* ArrayBindingPattern */: + case 167 /* ArrayBindingPattern */: return emitArrayBindingPattern(node); - case 167 /* BindingElement */: + case 168 /* BindingElement */: return emitBindingElement(node); - case 168 /* ArrayLiteralExpression */: + case 169 /* ArrayLiteralExpression */: return emitArrayLiteral(node); - case 169 /* ObjectLiteralExpression */: + case 170 /* ObjectLiteralExpression */: return emitObjectLiteral(node); - case 249 /* PropertyAssignment */: + case 252 /* PropertyAssignment */: return emitPropertyAssignment(node); - case 250 /* ShorthandPropertyAssignment */: + case 253 /* ShorthandPropertyAssignment */: return emitShorthandPropertyAssignment(node); - case 138 /* ComputedPropertyName */: + case 139 /* ComputedPropertyName */: return emitComputedPropertyName(node); - case 170 /* PropertyAccessExpression */: + case 171 /* PropertyAccessExpression */: return emitPropertyAccess(node); - case 171 /* ElementAccessExpression */: + case 172 /* ElementAccessExpression */: return emitIndexedAccess(node); - case 172 /* CallExpression */: + case 173 /* CallExpression */: return emitCallExpression(node); - case 173 /* NewExpression */: + case 174 /* NewExpression */: return emitNewExpression(node); - case 174 /* TaggedTemplateExpression */: + case 175 /* TaggedTemplateExpression */: return emitTaggedTemplateExpression(node); - case 175 /* TypeAssertionExpression */: + case 176 /* TypeAssertionExpression */: + case 194 /* AsExpression */: + case 195 /* NonNullExpression */: return emit(node.expression); - case 193 /* AsExpression */: - return emit(node.expression); - case 176 /* ParenthesizedExpression */: + case 177 /* ParenthesizedExpression */: return emitParenExpression(node); - case 217 /* FunctionDeclaration */: - case 177 /* FunctionExpression */: - case 178 /* ArrowFunction */: + case 219 /* FunctionDeclaration */: + case 178 /* FunctionExpression */: + case 179 /* ArrowFunction */: return emitFunctionDeclaration(node); - case 179 /* DeleteExpression */: + case 180 /* DeleteExpression */: return emitDeleteExpression(node); - case 180 /* TypeOfExpression */: + case 181 /* TypeOfExpression */: return emitTypeOfExpression(node); - case 181 /* VoidExpression */: + case 182 /* VoidExpression */: return emitVoidExpression(node); - case 182 /* AwaitExpression */: + case 183 /* AwaitExpression */: return emitAwaitExpression(node); - case 183 /* PrefixUnaryExpression */: + case 184 /* PrefixUnaryExpression */: return emitPrefixUnaryExpression(node); - case 184 /* PostfixUnaryExpression */: + case 185 /* PostfixUnaryExpression */: return emitPostfixUnaryExpression(node); - case 185 /* BinaryExpression */: + case 186 /* BinaryExpression */: return emitBinaryExpression(node); - case 186 /* ConditionalExpression */: + case 187 /* ConditionalExpression */: return emitConditionalExpression(node); - case 189 /* SpreadElementExpression */: + case 190 /* SpreadElementExpression */: return emitSpreadElementExpression(node); - case 188 /* YieldExpression */: + case 189 /* YieldExpression */: return emitYieldExpression(node); - case 191 /* OmittedExpression */: + case 192 /* OmittedExpression */: return; - case 196 /* Block */: - case 223 /* ModuleBlock */: + case 198 /* Block */: + case 225 /* ModuleBlock */: return emitBlock(node); - case 197 /* VariableStatement */: + case 199 /* VariableStatement */: return emitVariableStatement(node); - case 198 /* EmptyStatement */: + case 200 /* EmptyStatement */: return write(";"); - case 199 /* ExpressionStatement */: + case 201 /* ExpressionStatement */: return emitExpressionStatement(node); - case 200 /* IfStatement */: + case 202 /* IfStatement */: return emitIfStatement(node); - case 201 /* DoStatement */: + case 203 /* DoStatement */: return emitDoStatement(node); - case 202 /* WhileStatement */: + case 204 /* WhileStatement */: return emitWhileStatement(node); - case 203 /* ForStatement */: + case 205 /* ForStatement */: return emitForStatement(node); - case 205 /* ForOfStatement */: - case 204 /* ForInStatement */: + case 207 /* ForOfStatement */: + case 206 /* ForInStatement */: return emitForInOrForOfStatement(node); - case 206 /* ContinueStatement */: - case 207 /* BreakStatement */: + case 208 /* ContinueStatement */: + case 209 /* BreakStatement */: return emitBreakOrContinueStatement(node); - case 208 /* ReturnStatement */: + case 210 /* ReturnStatement */: return emitReturnStatement(node); - case 209 /* WithStatement */: + case 211 /* WithStatement */: return emitWithStatement(node); - case 210 /* SwitchStatement */: + case 212 /* SwitchStatement */: return emitSwitchStatement(node); - case 245 /* CaseClause */: - case 246 /* DefaultClause */: + case 248 /* CaseClause */: + case 249 /* DefaultClause */: return emitCaseOrDefaultClause(node); - case 211 /* LabeledStatement */: + case 213 /* LabeledStatement */: return emitLabeledStatement(node); - case 212 /* ThrowStatement */: + case 214 /* ThrowStatement */: return emitThrowStatement(node); - case 213 /* TryStatement */: + case 215 /* TryStatement */: return emitTryStatement(node); - case 248 /* CatchClause */: + case 251 /* CatchClause */: return emitCatchClause(node); - case 214 /* DebuggerStatement */: + case 216 /* DebuggerStatement */: return emitDebuggerStatement(node); - case 215 /* VariableDeclaration */: + case 217 /* VariableDeclaration */: return emitVariableDeclaration(node); - case 190 /* ClassExpression */: + case 191 /* ClassExpression */: return emitClassExpression(node); - case 218 /* ClassDeclaration */: + case 220 /* ClassDeclaration */: return emitClassDeclaration(node); - case 219 /* InterfaceDeclaration */: + case 221 /* InterfaceDeclaration */: return emitInterfaceDeclaration(node); - case 221 /* EnumDeclaration */: + case 223 /* EnumDeclaration */: return emitEnumDeclaration(node); - case 251 /* EnumMember */: + case 254 /* EnumMember */: return emitEnumMember(node); - case 222 /* ModuleDeclaration */: + case 224 /* ModuleDeclaration */: return emitModuleDeclaration(node); - case 226 /* ImportDeclaration */: + case 229 /* ImportDeclaration */: return emitImportDeclaration(node); - case 225 /* ImportEqualsDeclaration */: + case 228 /* ImportEqualsDeclaration */: return emitImportEqualsDeclaration(node); - case 232 /* ExportDeclaration */: + case 235 /* ExportDeclaration */: return emitExportDeclaration(node); - case 231 /* ExportAssignment */: + case 234 /* ExportAssignment */: return emitExportAssignment(node); - case 252 /* SourceFile */: + case 255 /* SourceFile */: return emitSourceFileNode(node); } } @@ -39314,7 +40401,7 @@ var ts; function getLeadingCommentsToEmit(node) { // Emit the leading comments only if the parent's pos doesn't match because parent should take care of emitting these comments if (node.parent) { - if (node.parent.kind === 252 /* SourceFile */ || node.pos !== node.parent.pos) { + if (node.parent.kind === 255 /* SourceFile */ || node.pos !== node.parent.pos) { if (hasDetachedComments(node.pos)) { // get comments without detached comments return getLeadingCommentsWithoutDetachedComments(); @@ -39329,7 +40416,7 @@ var ts; function getTrailingCommentsToEmit(node) { // Emit the trailing comments only if the parent's pos doesn't match because parent should take care of emitting these comments if (node.parent) { - if (node.parent.kind === 252 /* SourceFile */ || node.end !== node.parent.end) { + if (node.parent.kind === 255 /* SourceFile */ || node.end !== node.parent.end) { return ts.getTrailingCommentRanges(currentText, node.end); } } @@ -39444,6 +40531,15 @@ var ts; if (declarationFilePath) { emitSkipped = ts.writeDeclarationFile(declarationFilePath, sourceFiles, isBundledEmit, host, resolver, emitterDiagnostics) || emitSkipped; } + if (!emitSkipped && emittedFilesList) { + emittedFilesList.push(jsFilePath); + if (sourceMapFilePath) { + emittedFilesList.push(sourceMapFilePath); + } + if (declarationFilePath) { + emittedFilesList.push(declarationFilePath); + } + } } } ts.emitFiles = emitFiles; @@ -39459,10 +40555,15 @@ var ts; /* @internal */ ts.ioWriteTime = 0; /** The version of the TypeScript compiler release */ var emptyArray = []; + var defaultLibrarySearchPaths = [ + "types/", + "node_modules/", + "node_modules/@types/", + ]; ts.version = "1.9.0"; function findConfigFile(searchPath, fileExists) { - var fileName = "tsconfig.json"; while (true) { + var fileName = ts.combinePaths(searchPath, "tsconfig.json"); if (fileExists(fileName)) { return fileName; } @@ -39471,7 +40572,6 @@ var ts; break; } searchPath = parentPath; - fileName = "../" + fileName; } return undefined; } @@ -39482,18 +40582,49 @@ var ts; return ts.normalizePath(referencedFileName); } ts.resolveTripleslashReference = resolveTripleslashReference; + /* @internal */ + function computeCommonSourceDirectoryOfFilenames(fileNames, currentDirectory, getCanonicalFileName) { + var commonPathComponents; + var failed = ts.forEach(fileNames, function (sourceFile) { + // Each file contributes into common source file path + var sourcePathComponents = ts.getNormalizedPathComponents(sourceFile, currentDirectory); + sourcePathComponents.pop(); // The base file name is not part of the common directory path + if (!commonPathComponents) { + // first file + commonPathComponents = sourcePathComponents; + return; + } + for (var i = 0, n = Math.min(commonPathComponents.length, sourcePathComponents.length); i < n; i++) { + if (getCanonicalFileName(commonPathComponents[i]) !== getCanonicalFileName(sourcePathComponents[i])) { + if (i === 0) { + // Failed to find any common path component + return true; + } + // New common path found that is 0 -> i-1 + commonPathComponents.length = i; + break; + } + } + // If the sourcePathComponents was shorter than the commonPathComponents, truncate to the sourcePathComponents + if (sourcePathComponents.length < commonPathComponents.length) { + commonPathComponents.length = sourcePathComponents.length; + } + }); + // A common path can not be found when paths span multiple drives on windows, for example + if (failed) { + return ""; + } + if (!commonPathComponents) { + return currentDirectory; + } + return ts.getNormalizedPathFromPathComponents(commonPathComponents); + } + ts.computeCommonSourceDirectoryOfFilenames = computeCommonSourceDirectoryOfFilenames; function trace(host, message) { host.trace(ts.formatMessage.apply(undefined, arguments)); } function isTraceEnabled(compilerOptions, host) { - return compilerOptions.traceModuleResolution && host.trace !== undefined; - } - function startsWith(str, prefix) { - return str.lastIndexOf(prefix, 0) === 0; - } - function endsWith(str, suffix) { - var expectedPos = str.length - suffix.length; - return str.indexOf(suffix, expectedPos) === expectedPos; + return compilerOptions.traceResolution && host.trace !== undefined; } function hasZeroOrOneAsteriskCharacter(str) { var seenAsterisk = false; @@ -39521,6 +40652,150 @@ var ts; var startsWithDotSlashOrDotDotSlash = i === 0 || (i === 1 && moduleName.charCodeAt(0) === 46 /* dot */); return !startsWithDotSlashOrDotDotSlash; } + function tryReadTypesSection(packageJsonPath, baseDirectory, state) { + var jsonContent; + try { + var jsonText = state.host.readFile(packageJsonPath); + jsonContent = jsonText ? JSON.parse(jsonText) : {}; + } + catch (e) { + // gracefully handle if readFile fails or returns not JSON + jsonContent = {}; + } + var typesFile; + var fieldName; + // first try to read content of 'typings' section (backward compatibility) + if (jsonContent.typings) { + if (typeof jsonContent.typings === "string") { + fieldName = "typings"; + typesFile = jsonContent.typings; + } + else { + if (state.traceEnabled) { + trace(state.host, ts.Diagnostics.Expected_type_of_0_field_in_package_json_to_be_string_got_1, "typings", typeof jsonContent.typings); + } + } + } + // then read 'types' + if (!typesFile && jsonContent.types) { + if (typeof jsonContent.types === "string") { + fieldName = "types"; + typesFile = jsonContent.types; + } + else { + if (state.traceEnabled) { + trace(state.host, ts.Diagnostics.Expected_type_of_0_field_in_package_json_to_be_string_got_1, "types", typeof jsonContent.types); + } + } + } + if (typesFile) { + var typesFilePath = ts.normalizePath(ts.combinePaths(baseDirectory, typesFile)); + if (state.traceEnabled) { + trace(state.host, ts.Diagnostics.package_json_has_0_field_1_that_references_2, fieldName, typesFile, typesFilePath); + } + return typesFilePath; + } + return undefined; + } + var typeReferenceExtensions = [".d.ts"]; + /** + * @param {string | undefined} containingFile - file that contains type reference directive, can be undefined if containing file is unknown. + * This is possible in case if resolution is performed for directives specified via 'types' parameter. In this case initial path for secondary lookups + * is assumed to be the same as root directory of the project. + */ + function resolveTypeReferenceDirective(typeReferenceDirectiveName, containingFile, options, host) { + var traceEnabled = isTraceEnabled(options, host); + var moduleResolutionState = { + compilerOptions: options, + host: host, + skipTsx: true, + traceEnabled: traceEnabled + }; + // use typesRoot and fallback to directory that contains tsconfig if typesRoot is not set + var rootDir = options.typesRoot || (options.configFilePath ? ts.getDirectoryPath(options.configFilePath) : undefined); + if (traceEnabled) { + if (containingFile === undefined) { + if (rootDir === undefined) { + trace(host, ts.Diagnostics.Resolving_type_reference_directive_0_containing_file_not_set_root_directory_not_set, typeReferenceDirectiveName); + } + else { + trace(host, ts.Diagnostics.Resolving_type_reference_directive_0_containing_file_not_set_root_directory_1, typeReferenceDirectiveName, rootDir); + } + } + else { + if (rootDir === undefined) { + trace(host, ts.Diagnostics.Resolving_type_reference_directive_0_containing_file_1_root_directory_not_set, typeReferenceDirectiveName, containingFile); + } + else { + trace(host, ts.Diagnostics.Resolving_type_reference_directive_0_containing_file_1_root_directory_2, typeReferenceDirectiveName, containingFile, rootDir); + } + } + } + var failedLookupLocations = []; + // Check primary library paths + if (rootDir !== undefined) { + var effectivePrimarySearchPaths = options.typesSearchPaths || defaultLibrarySearchPaths; + for (var _i = 0, effectivePrimarySearchPaths_1 = effectivePrimarySearchPaths; _i < effectivePrimarySearchPaths_1.length; _i++) { + var searchPath = effectivePrimarySearchPaths_1[_i]; + var primaryPath = ts.combinePaths(rootDir, searchPath); + if (traceEnabled) { + trace(host, ts.Diagnostics.Resolving_with_primary_search_path_0, primaryPath); + } + var candidate = ts.combinePaths(primaryPath, typeReferenceDirectiveName); + var candidateDirectory = ts.getDirectoryPath(candidate); + var resolvedFile_1 = loadNodeModuleFromDirectory(typeReferenceExtensions, candidate, failedLookupLocations, !directoryProbablyExists(candidateDirectory, host), moduleResolutionState); + if (resolvedFile_1) { + if (traceEnabled) { + trace(host, ts.Diagnostics.Type_reference_directive_0_was_successfully_resolved_to_1_primary_Colon_2, typeReferenceDirectiveName, resolvedFile_1, true); + } + return { + resolvedTypeReferenceDirective: { primary: true, resolvedFileName: resolvedFile_1 }, + failedLookupLocations: failedLookupLocations + }; + } + } + } + else { + if (traceEnabled) { + trace(host, ts.Diagnostics.Root_directory_cannot_be_determined_skipping_primary_search_paths); + } + } + var resolvedFile; + var initialLocationForSecondaryLookup; + if (containingFile) { + initialLocationForSecondaryLookup = ts.getDirectoryPath(containingFile); + } + else { + initialLocationForSecondaryLookup = rootDir; + } + if (initialLocationForSecondaryLookup !== undefined) { + // check secondary locations + if (traceEnabled) { + trace(host, ts.Diagnostics.Looking_up_in_node_modules_folder_initial_location_0, initialLocationForSecondaryLookup); + } + resolvedFile = loadModuleFromNodeModules(typeReferenceDirectiveName, initialLocationForSecondaryLookup, failedLookupLocations, moduleResolutionState); + if (traceEnabled) { + if (resolvedFile) { + trace(host, ts.Diagnostics.Type_reference_directive_0_was_successfully_resolved_to_1_primary_Colon_2, typeReferenceDirectiveName, resolvedFile, false); + } + else { + trace(host, ts.Diagnostics.Type_reference_directive_0_was_not_resolved, typeReferenceDirectiveName); + } + } + } + else { + if (traceEnabled) { + trace(host, ts.Diagnostics.Containing_file_is_not_specified_and_root_directory_cannot_be_determined_skipping_lookup_in_node_modules_folder); + } + } + return { + resolvedTypeReferenceDirective: resolvedFile + ? { primary: false, resolvedFileName: resolvedFile } + : undefined, + failedLookupLocations: failedLookupLocations + }; + } + ts.resolveTypeReferenceDirective = resolveTypeReferenceDirective; function resolveModuleName(moduleName, containingFile, compilerOptions, host) { var traceEnabled = isTraceEnabled(compilerOptions, host); if (traceEnabled) { @@ -39642,10 +40917,10 @@ var ts; // in case of tsconfig.json this will happen automatically - compiler will expand relative names // using location of tsconfig.json as base location var normalizedRoot = ts.normalizePath(rootDir); - if (!endsWith(normalizedRoot, ts.directorySeparator)) { + if (!ts.endsWith(normalizedRoot, ts.directorySeparator)) { normalizedRoot += ts.directorySeparator; } - var isLongestMatchingPrefix = startsWith(candidate, normalizedRoot) && + var isLongestMatchingPrefix = ts.startsWith(candidate, normalizedRoot) && (matchedNormalizedPrefix === undefined || matchedNormalizedPrefix.length < normalizedRoot.length); if (state.traceEnabled) { trace(state.host, ts.Diagnostics.Checking_if_0_is_the_longest_matching_prefix_for_1_2, normalizedRoot, candidate, isLongestMatchingPrefix); @@ -39715,8 +40990,8 @@ var ts; var prefix = pattern.substr(0, indexOfStar); var suffix = pattern.substr(indexOfStar + 1); if (moduleName.length >= prefix.length + suffix.length && - startsWith(moduleName, prefix) && - endsWith(moduleName, suffix)) { + ts.startsWith(moduleName, prefix) && + ts.endsWith(moduleName, suffix)) { // use length of prefix as betterness criteria if (prefix.length > longestMatchPrefixLength) { longestMatchPrefixLength = prefix.length; @@ -39802,6 +41077,13 @@ var ts; * in cases when we know upfront that all load attempts will fail (because containing folder does not exists) however we still need to record all failed lookup locations. */ function loadModuleFromFile(candidate, extensions, failedLookupLocation, onlyRecordFailures, state) { + if (!onlyRecordFailures) { + // check if containig folder exists - if it doesn't then just record failures for all supported extensions without disk probing + var directory = ts.getDirectoryPath(candidate); + if (directory) { + onlyRecordFailures = !directoryProbablyExists(directory, state.host); + } + } return ts.forEach(extensions, tryLoad); function tryLoad(ext) { if (ext === ".tsx" && state.skipTsx) { @@ -39810,7 +41092,7 @@ var ts; var fileName = ts.fileExtensionIs(candidate, ext) ? candidate : candidate + ext; if (!onlyRecordFailures && state.host.fileExists(fileName)) { if (state.traceEnabled) { - trace(state.host, ts.Diagnostics.File_0_exist_use_it_as_a_module_resolution_result, fileName); + trace(state.host, ts.Diagnostics.File_0_exist_use_it_as_a_name_resolution_result, fileName); } return fileName; } @@ -39830,33 +41112,16 @@ var ts; if (state.traceEnabled) { trace(state.host, ts.Diagnostics.Found_package_json_at_0, packageJsonPath); } - var jsonContent = void 0; - try { - var jsonText = state.host.readFile(packageJsonPath); - jsonContent = jsonText ? JSON.parse(jsonText) : { typings: undefined }; - } - catch (e) { - // gracefully handle if readFile fails or returns not JSON - jsonContent = { typings: undefined }; - } - if (jsonContent.typings) { - if (typeof jsonContent.typings === "string") { - var typingsFile = ts.normalizePath(ts.combinePaths(candidate, jsonContent.typings)); - if (state.traceEnabled) { - trace(state.host, ts.Diagnostics.package_json_has_typings_field_0_that_references_1, jsonContent.typings, typingsFile); - } - var result = loadModuleFromFile(typingsFile, extensions, failedLookupLocation, !directoryProbablyExists(ts.getDirectoryPath(typingsFile), state.host), state); - if (result) { - return result; - } - } - else if (state.traceEnabled) { - trace(state.host, ts.Diagnostics.Expected_type_of_typings_field_in_package_json_to_be_string_got_0, typeof jsonContent.typings); + var typesFile = tryReadTypesSection(packageJsonPath, candidate, state); + if (typesFile) { + var result = loadModuleFromFile(typesFile, extensions, failedLookupLocation, !directoryProbablyExists(ts.getDirectoryPath(typesFile), state.host), state); + if (result) { + return result; } } else { if (state.traceEnabled) { - trace(state.host, ts.Diagnostics.package_json_does_not_have_typings_field); + trace(state.host, ts.Diagnostics.package_json_does_not_have_types_field); } } } @@ -39869,20 +41134,30 @@ var ts; } return loadModuleFromFile(ts.combinePaths(candidate, "index"), extensions, failedLookupLocation, !directoryExists, state); } + function loadModuleFromNodeModulesFolder(moduleName, directory, failedLookupLocations, state) { + var nodeModulesFolder = ts.combinePaths(directory, "node_modules"); + var nodeModulesFolderExists = directoryProbablyExists(nodeModulesFolder, state.host); + var candidate = ts.normalizePath(ts.combinePaths(nodeModulesFolder, moduleName)); + // Load only typescript files irrespective of allowJs option if loading from node modules + var result = loadModuleFromFile(candidate, ts.supportedTypeScriptExtensions, failedLookupLocations, !nodeModulesFolderExists, state); + if (result) { + return result; + } + result = loadNodeModuleFromDirectory(ts.supportedTypeScriptExtensions, candidate, failedLookupLocations, !nodeModulesFolderExists, state); + if (result) { + return result; + } + } function loadModuleFromNodeModules(moduleName, directory, failedLookupLocations, state) { directory = ts.normalizeSlashes(directory); while (true) { var baseName = ts.getBaseFileName(directory); if (baseName !== "node_modules") { - var nodeModulesFolder = ts.combinePaths(directory, "node_modules"); - var nodeModulesFolderExists = directoryProbablyExists(nodeModulesFolder, state.host); - var candidate = ts.normalizePath(ts.combinePaths(nodeModulesFolder, moduleName)); - // Load only typescript files irrespective of allowJs option if loading from node modules - var result = loadModuleFromFile(candidate, ts.supportedTypeScriptExtensions, failedLookupLocations, !nodeModulesFolderExists, state); - if (result) { - return result; - } - result = loadNodeModuleFromDirectory(ts.supportedTypeScriptExtensions, candidate, failedLookupLocations, !nodeModulesFolderExists, state); + var result = + // first: try to load module as-is + loadModuleFromNodeModulesFolder(moduleName, directory, failedLookupLocations, state) || + // second: try to load module from the scope '@types' + loadModuleFromNodeModulesFolder(ts.combinePaths("@types", moduleName), directory, failedLookupLocations, state); if (result) { return result; } @@ -39979,11 +41254,40 @@ var ts; ts.sys.createDirectory(directoryPath); } } + var outputFingerprints; + function writeFileIfUpdated(fileName, data, writeByteOrderMark) { + if (!outputFingerprints) { + outputFingerprints = {}; + } + var hash = ts.sys.createHash(data); + var mtimeBefore = ts.sys.getModifiedTime(fileName); + if (mtimeBefore && ts.hasProperty(outputFingerprints, fileName)) { + var fingerprint = outputFingerprints[fileName]; + // If output has not been changed, and the file has no external modification + if (fingerprint.byteOrderMark === writeByteOrderMark && + fingerprint.hash === hash && + fingerprint.mtime.getTime() === mtimeBefore.getTime()) { + return; + } + } + ts.sys.writeFile(fileName, data, writeByteOrderMark); + var mtimeAfter = ts.sys.getModifiedTime(fileName); + outputFingerprints[fileName] = { + hash: hash, + byteOrderMark: writeByteOrderMark, + mtime: mtimeAfter + }; + } function writeFile(fileName, data, writeByteOrderMark, onError) { try { var start = new Date().getTime(); ensureDirectoriesExist(ts.getDirectoryPath(ts.normalizePath(fileName))); - ts.sys.writeFile(fileName, data, writeByteOrderMark); + if (ts.isWatchSet(options) && ts.sys.createHash && ts.sys.getModifiedTime) { + writeFileIfUpdated(fileName, data, writeByteOrderMark); + } + else { + ts.sys.writeFile(fileName, data, writeByteOrderMark); + } ts.ioWriteTime += new Date().getTime() - start; } catch (e) { @@ -39992,10 +41296,14 @@ var ts; } } } + function getDefaultLibLocation() { + return ts.getDirectoryPath(ts.normalizePath(ts.sys.getExecutingFilePath())); + } var newLine = ts.getNewLineCharacter(options); return { getSourceFile: getSourceFile, - getDefaultLibFileName: function (options) { return ts.combinePaths(ts.getDirectoryPath(ts.normalizePath(ts.sys.getExecutingFilePath())), ts.getDefaultLibFileName(options)); }, + getDefaultLibLocation: getDefaultLibLocation, + getDefaultLibFileName: function (options) { return ts.combinePaths(getDefaultLibLocation(), ts.getDefaultLibFileName(options)); }, writeFile: writeFile, getCurrentDirectory: ts.memoize(function () { return ts.sys.getCurrentDirectory(); }), useCaseSensitiveFileNames: function () { return ts.sys.useCaseSensitiveFileNames; }, @@ -40039,68 +41347,88 @@ var ts; } } ts.flattenDiagnosticMessageText = flattenDiagnosticMessageText; + function loadWithLocalCache(names, containingFile, loader) { + if (names.length === 0) { + return []; + } + var resolutions = []; + var cache = {}; + for (var _i = 0, names_1 = names; _i < names_1.length; _i++) { + var name_33 = names_1[_i]; + var result = void 0; + if (ts.hasProperty(cache, name_33)) { + result = cache[name_33]; + } + else { + result = loader(name_33, containingFile); + cache[name_33] = result; + } + resolutions.push(result); + } + return resolutions; + } function createProgram(rootNames, options, host, oldProgram) { var program; var files = []; - var fileProcessingDiagnostics = ts.createDiagnosticCollection(); - var programDiagnostics = ts.createDiagnosticCollection(); var commonSourceDirectory; var diagnosticsProducingTypeChecker; var noDiagnosticsTypeChecker; var classifiableNames; - var skipDefaultLib = options.noLib; - var supportedExtensions = ts.getSupportedExtensions(options); + var resolvedTypeReferenceDirectives = {}; + var fileProcessingDiagnostics = ts.createDiagnosticCollection(); var start = new Date().getTime(); host = host || createCompilerHost(options); + var skipDefaultLib = options.noLib; + var programDiagnostics = ts.createDiagnosticCollection(); + var currentDirectory = host.getCurrentDirectory(); + var supportedExtensions = ts.getSupportedExtensions(options); // Map storing if there is emit blocking diagnostics for given input var hasEmitBlockingDiagnostics = ts.createFileMap(getCanonicalFileName); - var currentDirectory = host.getCurrentDirectory(); - var resolveModuleNamesWorker = host.resolveModuleNames - ? (function (moduleNames, containingFile) { return host.resolveModuleNames(moduleNames, containingFile); }) - : (function (moduleNames, containingFile) { - var resolvedModuleNames = []; - // resolveModuleName does not store any results between calls. - // lookup is a local cache to avoid resolving the same module name several times - var lookup = {}; - for (var _i = 0, moduleNames_1 = moduleNames; _i < moduleNames_1.length; _i++) { - var moduleName = moduleNames_1[_i]; - var resolvedName = void 0; - if (ts.hasProperty(lookup, moduleName)) { - resolvedName = lookup[moduleName]; - } - else { - resolvedName = resolveModuleName(moduleName, containingFile, options, host).resolvedModule; - lookup[moduleName] = resolvedName; - } - resolvedModuleNames.push(resolvedName); - } - return resolvedModuleNames; - }); + var resolveModuleNamesWorker; + if (host.resolveModuleNames) { + resolveModuleNamesWorker = function (moduleNames, containingFile) { return host.resolveModuleNames(moduleNames, containingFile); }; + } + else { + var loader_1 = function (moduleName, containingFile) { return resolveModuleName(moduleName, containingFile, options, host).resolvedModule; }; + resolveModuleNamesWorker = function (moduleNames, containingFile) { return loadWithLocalCache(moduleNames, containingFile, loader_1); }; + } + var resolveTypeReferenceDirectiveNamesWorker; + if (host.resolveTypeReferenceDirectives) { + resolveTypeReferenceDirectiveNamesWorker = function (typeDirectiveNames, containingFile) { return host.resolveTypeReferenceDirectives(typeDirectiveNames, containingFile); }; + } + else { + var loader_2 = function (typesRef, containingFile) { return resolveTypeReferenceDirective(typesRef, containingFile, options, host).resolvedTypeReferenceDirective; }; + resolveTypeReferenceDirectiveNamesWorker = function (typeReferenceDirectiveNames, containingFile) { return loadWithLocalCache(typeReferenceDirectiveNames, containingFile, loader_2); }; + } var filesByName = ts.createFileMap(); // stores 'filename -> file association' ignoring case // used to track cases when two file names differ only in casing var filesByNameIgnoreCase = host.useCaseSensitiveFileNames() ? ts.createFileMap(function (fileName) { return fileName.toLowerCase(); }) : undefined; - if (oldProgram) { - // check properties that can affect structure of the program or module resolution strategy - // if any of these properties has changed - structure cannot be reused - var oldOptions = oldProgram.getCompilerOptions(); - if ((oldOptions.module !== options.module) || - (oldOptions.noResolve !== options.noResolve) || - (oldOptions.target !== options.target) || - (oldOptions.noLib !== options.noLib) || - (oldOptions.jsx !== options.jsx) || - (oldOptions.allowJs !== options.allowJs)) { - oldProgram = undefined; - } - } if (!tryReuseStructureFromOldProgram()) { + // load type declarations specified via 'types' argument + if (options.types && options.types.length) { + var resolutions = resolveTypeReferenceDirectiveNamesWorker(options.types, /*containingFile*/ undefined); + for (var i = 0; i < options.types.length; i++) { + processTypeReferenceDirective(options.types[i], resolutions[i]); + } + } ts.forEach(rootNames, function (name) { return processRootFile(name, /*isDefaultLib*/ false); }); // Do not process the default library if: // - The '--noLib' flag is used. // - A 'no-default-lib' reference comment is encountered in // processing the root files. if (!skipDefaultLib) { - processRootFile(host.getDefaultLibFileName(options), /*isDefaultLib*/ true); + // If '--lib' is not specified, include default library file according to '--target' + // otherwise, using options specified in '--lib' instead of '--target' default library file + if (!options.lib) { + processRootFile(host.getDefaultLibFileName(options), /*isDefaultLib*/ true); + } + else { + var libDirectory_1 = host.getDefaultLibLocation ? host.getDefaultLibLocation() : ts.getDirectoryPath(host.getDefaultLibFileName(options)); + ts.forEach(options.lib, function (libFileName) { + processRootFile(ts.combinePaths(libDirectory_1, libFileName), /*isDefaultLib*/ true); + }); + } } } // unconditionally set oldProgram to undefined to prevent it from being captured in closure @@ -40125,7 +41453,8 @@ var ts; getIdentifierCount: function () { return getDiagnosticsProducingTypeChecker().getIdentifierCount(); }, getSymbolCount: function () { return getDiagnosticsProducingTypeChecker().getSymbolCount(); }, getTypeCount: function () { return getDiagnosticsProducingTypeChecker().getTypeCount(); }, - getFileProcessingDiagnostics: function () { return fileProcessingDiagnostics; } + getFileProcessingDiagnostics: function () { return fileProcessingDiagnostics; }, + resolvedTypeReferenceDirectives: resolvedTypeReferenceDirectives }; verifyCompilerOptions(); ts.programTime += new Date().getTime() - start; @@ -40164,12 +41493,29 @@ var ts; if (!oldProgram) { return false; } + // check properties that can affect structure of the program or module resolution strategy + // if any of these properties has changed - structure cannot be reused + var oldOptions = oldProgram.getCompilerOptions(); + if ((oldOptions.module !== options.module) || + (oldOptions.noResolve !== options.noResolve) || + (oldOptions.target !== options.target) || + (oldOptions.noLib !== options.noLib) || + (oldOptions.jsx !== options.jsx) || + (oldOptions.allowJs !== options.allowJs) || + (oldOptions.rootDir !== options.rootDir) || + (oldOptions.typesSearchPaths !== options.typesSearchPaths) || + (oldOptions.configFilePath !== options.configFilePath)) { + return false; + } ts.Debug.assert(!oldProgram.structureIsReused); // there is an old program, check if we can reuse its structure var oldRootNames = oldProgram.getRootFileNames(); if (!ts.arrayIsEqualTo(oldRootNames, rootNames)) { return false; } + if (!ts.arrayIsEqualTo(options.types, oldOptions.types)) { + return false; + } // check if program source files has changed in the way that can affect structure of the program var newSourceFiles = []; var filePaths = []; @@ -40203,25 +41549,32 @@ var ts; // moduleAugmentations has changed return false; } + if (!ts.arrayIsEqualTo(oldSourceFile.typeReferenceDirectives, newSourceFile.typeReferenceDirectives, fileReferenceIsEqualTo)) { + // 'types' references has changed + return false; + } + var newSourceFilePath = ts.getNormalizedAbsolutePath(newSourceFile.fileName, currentDirectory); if (resolveModuleNamesWorker) { var moduleNames = ts.map(ts.concatenate(newSourceFile.imports, newSourceFile.moduleAugmentations), getTextOfLiteral); - var resolutions = resolveModuleNamesWorker(moduleNames, ts.getNormalizedAbsolutePath(newSourceFile.fileName, currentDirectory)); + var resolutions = resolveModuleNamesWorker(moduleNames, newSourceFilePath); // ensure that module resolution results are still correct - for (var i = 0; i < moduleNames.length; i++) { - var newResolution = resolutions[i]; - var oldResolution = ts.getResolvedModule(oldSourceFile, moduleNames[i]); - var resolutionChanged = oldResolution - ? !newResolution || - oldResolution.resolvedFileName !== newResolution.resolvedFileName || - !!oldResolution.isExternalLibraryImport !== !!newResolution.isExternalLibraryImport - : newResolution; - if (resolutionChanged) { - return false; - } + var resolutionsChanged = ts.hasChangesInResolutions(moduleNames, resolutions, oldSourceFile.resolvedModules, ts.moduleResolutionIsEqualTo); + if (resolutionsChanged) { + return false; } } - // pass the cache of module resolutions from the old source file + if (resolveTypeReferenceDirectiveNamesWorker) { + var typesReferenceDirectives = ts.map(newSourceFile.typeReferenceDirectives, function (x) { return x.fileName; }); + var resolutions = resolveTypeReferenceDirectiveNamesWorker(typesReferenceDirectives, newSourceFilePath); + // ensure that types resolutions are still correct + var resolutionsChanged = ts.hasChangesInResolutions(typesReferenceDirectives, resolutions, oldSourceFile.resolvedTypeReferenceDirectiveNames, ts.typeDirectiveIsEqualTo); + if (resolutionsChanged) { + return false; + } + } + // pass the cache of module/types resolutions from the old source file newSourceFile.resolvedModules = oldSourceFile.resolvedModules; + newSourceFile.resolvedTypeReferenceDirectiveNames = oldSourceFile.resolvedTypeReferenceDirectiveNames; modifiedSourceFiles.push(newSourceFile); } else { @@ -40241,6 +41594,7 @@ var ts; var modifiedFile = modifiedSourceFiles_1[_b]; fileProcessingDiagnostics.reattachFileDiagnostics(modifiedFile); } + resolvedTypeReferenceDirectives = oldProgram.resolvedTypeReferenceDirectives; oldProgram.structureIsReused = true; return true; } @@ -40253,7 +41607,7 @@ var ts; getNewLine: function () { return host.getNewLine(); }, getSourceFile: program.getSourceFile, getSourceFiles: program.getSourceFiles, - writeFile: writeFileCallback || (function (fileName, data, writeByteOrderMark, onError) { return host.writeFile(fileName, data, writeByteOrderMark, onError); }), + writeFile: writeFileCallback || (function (fileName, data, writeByteOrderMark, onError, sourceFiles) { return host.writeFile(fileName, data, writeByteOrderMark, onError, sourceFiles); }), isEmitBlocked: isEmitBlocked }; } @@ -40273,7 +41627,7 @@ var ts; function emitWorker(program, sourceFile, writeFileCallback, cancellationToken) { var declarationDiagnostics = []; if (options.noEmit) { - return { diagnostics: declarationDiagnostics, sourceMaps: undefined, emitSkipped: true }; + return { diagnostics: declarationDiagnostics, sourceMaps: undefined, emittedFiles: undefined, emitSkipped: true }; } // If the noEmitOnError flag is set, then check if we have any errors so far. If so, // immediately bail out. Note that we pass 'undefined' for 'sourceFile' so that we @@ -40284,7 +41638,12 @@ var ts; declarationDiagnostics = program.getDeclarationDiagnostics(/*sourceFile*/ undefined, cancellationToken); } if (diagnostics.length > 0 || declarationDiagnostics.length > 0) { - return { diagnostics: diagnostics, sourceMaps: undefined, emitSkipped: true }; + return { + diagnostics: ts.concatenate(diagnostics, declarationDiagnostics), + sourceMaps: undefined, + emittedFiles: undefined, + emitSkipped: true + }; } } // Create the emit resolver outside of the "emitTime" tracking code below. That way @@ -40324,7 +41683,14 @@ var ts; return getDiagnosticsHelper(sourceFile, getSemanticDiagnosticsForFile, cancellationToken); } function getDeclarationDiagnostics(sourceFile, cancellationToken) { - return getDiagnosticsHelper(sourceFile, getDeclarationDiagnosticsForFile, cancellationToken); + var options = program.getCompilerOptions(); + // collect diagnostics from the program only once if either no source file was specified or out/outFile is set (bundled emit) + if (!sourceFile || options.out || options.outFile) { + return getDeclarationDiagnosticsWorker(sourceFile, cancellationToken); + } + else { + return getDiagnosticsHelper(sourceFile, getDeclarationDiagnosticsForFile, cancellationToken); + } } function getSyntacticDiagnosticsForFile(sourceFile, cancellationToken) { return sourceFile.parseDiagnostics; @@ -40376,47 +41742,47 @@ var ts; return false; } switch (node.kind) { - case 225 /* ImportEqualsDeclaration */: + case 228 /* ImportEqualsDeclaration */: diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.import_can_only_be_used_in_a_ts_file)); return true; - case 231 /* ExportAssignment */: + case 234 /* ExportAssignment */: if (node.isExportEquals) { diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.export_can_only_be_used_in_a_ts_file)); return true; } break; - case 218 /* ClassDeclaration */: + case 220 /* ClassDeclaration */: var classDeclaration = node; if (checkModifiers(classDeclaration.modifiers) || checkTypeParameters(classDeclaration.typeParameters)) { return true; } break; - case 247 /* HeritageClause */: + case 250 /* HeritageClause */: var heritageClause = node; if (heritageClause.token === 106 /* ImplementsKeyword */) { diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.implements_clauses_can_only_be_used_in_a_ts_file)); return true; } break; - case 219 /* InterfaceDeclaration */: + case 221 /* InterfaceDeclaration */: diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.interface_declarations_can_only_be_used_in_a_ts_file)); return true; - case 222 /* ModuleDeclaration */: + case 224 /* ModuleDeclaration */: diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.module_declarations_can_only_be_used_in_a_ts_file)); return true; - case 220 /* TypeAliasDeclaration */: + case 222 /* TypeAliasDeclaration */: diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.type_aliases_can_only_be_used_in_a_ts_file)); return true; - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: - case 146 /* Constructor */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: - case 177 /* FunctionExpression */: - case 217 /* FunctionDeclaration */: - case 178 /* ArrowFunction */: - case 217 /* FunctionDeclaration */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: + case 147 /* Constructor */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: + case 178 /* FunctionExpression */: + case 219 /* FunctionDeclaration */: + case 179 /* ArrowFunction */: + case 219 /* FunctionDeclaration */: var functionDeclaration = node; if (checkModifiers(functionDeclaration.modifiers) || checkTypeParameters(functionDeclaration.typeParameters) || @@ -40424,20 +41790,20 @@ var ts; return true; } break; - case 197 /* VariableStatement */: + case 199 /* VariableStatement */: var variableStatement = node; if (checkModifiers(variableStatement.modifiers)) { return true; } break; - case 215 /* VariableDeclaration */: + case 217 /* VariableDeclaration */: var variableDeclaration = node; if (checkTypeAnnotation(variableDeclaration.type)) { return true; } break; - case 172 /* CallExpression */: - case 173 /* NewExpression */: + case 173 /* CallExpression */: + case 174 /* NewExpression */: var expression = node; if (expression.typeArguments && expression.typeArguments.length > 0) { var start_2 = expression.typeArguments.pos; @@ -40445,7 +41811,7 @@ var ts; return true; } break; - case 140 /* Parameter */: + case 141 /* Parameter */: var parameter = node; if (parameter.modifiers) { var start_3 = parameter.modifiers.pos; @@ -40461,17 +41827,17 @@ var ts; return true; } break; - case 143 /* PropertyDeclaration */: + case 144 /* PropertyDeclaration */: diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.property_declarations_can_only_be_used_in_a_ts_file)); return true; - case 221 /* EnumDeclaration */: + case 223 /* EnumDeclaration */: diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.enum_declarations_can_only_be_used_in_a_ts_file)); return true; - case 175 /* TypeAssertionExpression */: + case 176 /* TypeAssertionExpression */: var typeAssertionExpression = node; diagnostics.push(ts.createDiagnosticForNode(typeAssertionExpression.type, ts.Diagnostics.type_assertion_expressions_can_only_be_used_in_a_ts_file)); return true; - case 141 /* Decorator */: + case 142 /* Decorator */: if (!options.experimentalDecorators) { diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.Experimental_support_for_decorators_is_a_feature_that_is_subject_to_change_in_a_future_release_Set_the_experimentalDecorators_option_to_remove_this_warning)); } @@ -40519,16 +41885,17 @@ var ts; } }); } - function getDeclarationDiagnosticsForFile(sourceFile, cancellationToken) { + function getDeclarationDiagnosticsWorker(sourceFile, cancellationToken) { return runWithCancellationToken(function () { - if (!ts.isDeclarationFile(sourceFile)) { - var resolver = getDiagnosticsProducingTypeChecker().getEmitResolver(sourceFile, cancellationToken); - // Don't actually write any files since we're just getting diagnostics. - var writeFile_1 = function () { }; - return ts.getDeclarationDiagnostics(getEmitHost(writeFile_1), resolver, sourceFile); - } + var resolver = getDiagnosticsProducingTypeChecker().getEmitResolver(sourceFile, cancellationToken); + // Don't actually write any files since we're just getting diagnostics. + var writeFile = function () { }; + return ts.getDeclarationDiagnostics(getEmitHost(writeFile), resolver, sourceFile); }); } + function getDeclarationDiagnosticsForFile(sourceFile, cancellationToken) { + return ts.isDeclarationFile(sourceFile) ? [] : getDeclarationDiagnosticsWorker(sourceFile, cancellationToken); + } function getOptionsDiagnostics() { var allDiagnostics = []; ts.addRange(allDiagnostics, fileProcessingDiagnostics.getGlobalDiagnostics()); @@ -40544,7 +41911,7 @@ var ts; return ts.getBaseFileName(fileName).indexOf(".") >= 0; } function processRootFile(fileName, isDefaultLib) { - processSourceFile(ts.normalizePath(fileName), isDefaultLib); + processSourceFile(ts.normalizePath(fileName), isDefaultLib, /*isReference*/ true); } function fileReferenceIsEqualTo(a, b) { return a.fileName === b.fileName; @@ -40575,9 +41942,9 @@ var ts; return; function collectModuleReferences(node, inAmbientModule) { switch (node.kind) { - case 226 /* ImportDeclaration */: - case 225 /* ImportEqualsDeclaration */: - case 232 /* ExportDeclaration */: + case 229 /* ImportDeclaration */: + case 228 /* ImportEqualsDeclaration */: + case 235 /* ExportDeclaration */: var moduleNameExpr = ts.getExternalModuleName(node); if (!moduleNameExpr || moduleNameExpr.kind !== 9 /* StringLiteral */) { break; @@ -40592,7 +41959,7 @@ var ts; (imports || (imports = [])).push(moduleNameExpr); } break; - case 222 /* ModuleDeclaration */: + case 224 /* ModuleDeclaration */: if (ts.isAmbientModule(node) && (inAmbientModule || node.flags & 2 /* Ambient */ || ts.isDeclarationFile(file))) { var moduleName = node.name; // Ambient module declarations can be interpreted as augmentations for some existing external modules. @@ -40626,7 +41993,10 @@ var ts; } } } - function processSourceFile(fileName, isDefaultLib, refFile, refPos, refEnd) { + /** + * 'isReference' indicates whether the file was brought in via a reference directive (rather than an import declaration) + */ + function processSourceFile(fileName, isDefaultLib, isReference, refFile, refPos, refEnd) { var diagnosticArgument; var diagnostic; if (hasExtension(fileName)) { @@ -40634,7 +42004,7 @@ var ts; diagnostic = ts.Diagnostics.File_0_has_unsupported_extension_The_only_supported_extensions_are_1; diagnosticArgument = [fileName, "'" + supportedExtensions.join("', '") + "'"]; } - else if (!findSourceFile(fileName, ts.toPath(fileName, currentDirectory, getCanonicalFileName), isDefaultLib, refFile, refPos, refEnd)) { + else if (!findSourceFile(fileName, ts.toPath(fileName, currentDirectory, getCanonicalFileName), isDefaultLib, isReference, refFile, refPos, refEnd)) { diagnostic = ts.Diagnostics.File_0_not_found; diagnosticArgument = [fileName]; } @@ -40644,13 +42014,13 @@ var ts; } } else { - var nonTsFile = options.allowNonTsExtensions && findSourceFile(fileName, ts.toPath(fileName, currentDirectory, getCanonicalFileName), isDefaultLib, refFile, refPos, refEnd); + var nonTsFile = options.allowNonTsExtensions && findSourceFile(fileName, ts.toPath(fileName, currentDirectory, getCanonicalFileName), isDefaultLib, isReference, refFile, refPos, refEnd); if (!nonTsFile) { if (options.allowNonTsExtensions) { diagnostic = ts.Diagnostics.File_0_not_found; diagnosticArgument = [fileName]; } - else if (!ts.forEach(supportedExtensions, function (extension) { return findSourceFile(fileName + extension, ts.toPath(fileName + extension, currentDirectory, getCanonicalFileName), isDefaultLib, refFile, refPos, refEnd); })) { + else if (!ts.forEach(supportedExtensions, function (extension) { return findSourceFile(fileName + extension, ts.toPath(fileName + extension, currentDirectory, getCanonicalFileName), isDefaultLib, isReference, refFile, refPos, refEnd); })) { diagnostic = ts.Diagnostics.File_0_not_found; fileName += ".ts"; diagnosticArgument = [fileName]; @@ -40675,7 +42045,7 @@ var ts; } } // Get source file from normalized fileName - function findSourceFile(fileName, path, isDefaultLib, refFile, refPos, refEnd) { + function findSourceFile(fileName, path, isDefaultLib, isReference, refFile, refPos, refEnd) { if (filesByName.contains(path)) { var file_1 = filesByName.get(path); // try to check if we've already seen this file but with a different casing in path @@ -40683,6 +42053,9 @@ 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) { + file_1.wasReferenced = file_1.wasReferenced || isReference; + } return file_1; } // We haven't looked for this file, do so now and cache result @@ -40696,6 +42069,7 @@ var ts; }); filesByName.set(path, file); if (file) { + file.wasReferenced = file.wasReferenced || isReference; file.path = path; if (host.useCaseSensitiveFileNames()) { // for case-sensitive file systems check if we've already seen some file with similar filename ignoring case @@ -40710,7 +42084,8 @@ var ts; skipDefaultLib = skipDefaultLib || file.hasNoDefaultLib; var basePath = ts.getDirectoryPath(fileName); if (!options.noResolve) { - processReferencedFiles(file, basePath); + processReferencedFiles(file, basePath, isDefaultLib); + processTypeReferenceDirectives(file); } // always process imported modules to record module name resolutions processImportedModules(file, basePath); @@ -40723,12 +42098,71 @@ var ts; } return file; } - function processReferencedFiles(file, basePath) { + function processReferencedFiles(file, basePath, isDefaultLib) { ts.forEach(file.referencedFiles, function (ref) { var referencedFileName = resolveTripleslashReference(ref.fileName, file.fileName); - processSourceFile(referencedFileName, /*isDefaultLib*/ false, file, ref.pos, ref.end); + processSourceFile(referencedFileName, isDefaultLib, /*isReference*/ true, file, ref.pos, ref.end); }); } + function processTypeReferenceDirectives(file) { + var typeDirectives = ts.map(file.typeReferenceDirectives, function (l) { return l.fileName; }); + var resolutions = resolveTypeReferenceDirectiveNamesWorker(typeDirectives, file.fileName); + for (var i = 0; i < typeDirectives.length; i++) { + var ref = file.typeReferenceDirectives[i]; + var resolvedTypeReferenceDirective = resolutions[i]; + // store resolved type directive on the file + ts.setResolvedTypeReferenceDirective(file, ref.fileName, resolvedTypeReferenceDirective); + processTypeReferenceDirective(ref.fileName, resolvedTypeReferenceDirective, file, ref.pos, ref.end); + } + } + function processTypeReferenceDirective(typeReferenceDirective, resolvedTypeReferenceDirective, refFile, refPos, refEnd) { + // If we already found this library as a primary reference - nothing to do + var previousResolution = resolvedTypeReferenceDirectives[typeReferenceDirective]; + if (previousResolution && previousResolution.primary) { + return; + } + var saveResolution = true; + if (resolvedTypeReferenceDirective) { + if (resolvedTypeReferenceDirective.primary) { + // resolved from the primary path + processSourceFile(resolvedTypeReferenceDirective.resolvedFileName, /*isDefaultLib*/ false, /*isReference*/ true, refFile, refPos, refEnd); + } + else { + // If we already resolved to this file, it must have been a secondary reference. Check file contents + // for sameness and possibly issue an error + if (previousResolution) { + var otherFileText = host.readFile(resolvedTypeReferenceDirective.resolvedFileName); + if (otherFileText !== getSourceFile(previousResolution.resolvedFileName).text) { + fileProcessingDiagnostics.add(createDiagnostic(refFile, refPos, refEnd, ts.Diagnostics.Conflicting_library_definitions_for_0_found_at_1_and_2_Copy_the_correct_file_to_the_typings_folder_to_resolve_this_conflict, typeReferenceDirective, resolvedTypeReferenceDirective.resolvedFileName, previousResolution.resolvedFileName)); + } + // don't overwrite previous resolution result + saveResolution = false; + } + else { + // First resolution of this library + processSourceFile(resolvedTypeReferenceDirective.resolvedFileName, /*isDefaultLib*/ false, /*isReference*/ true, refFile, refPos, refEnd); + } + } + } + else { + fileProcessingDiagnostics.add(createDiagnostic(refFile, refPos, refEnd, ts.Diagnostics.Cannot_find_name_0, typeReferenceDirective)); + } + if (saveResolution) { + resolvedTypeReferenceDirectives[typeReferenceDirective] = resolvedTypeReferenceDirective; + } + } + function createDiagnostic(refFile, refPos, refEnd, message) { + var args = []; + for (var _i = 4; _i < arguments.length; _i++) { + args[_i - 4] = arguments[_i]; + } + if (refFile === undefined || refPos === undefined || refEnd === undefined) { + return ts.createCompilerDiagnostic.apply(void 0, [message].concat(args)); + } + else { + return ts.createFileDiagnostic.apply(void 0, [refFile, refPos, refEnd - refPos, message].concat(args)); + } + } function getCanonicalFileName(fileName) { return host.getCanonicalFileName(fileName); } @@ -40749,7 +42183,7 @@ var ts; !options.noResolve && i < file.imports.length; if (shouldAddFile) { - var importedFile = findSourceFile(resolution.resolvedFileName, ts.toPath(resolution.resolvedFileName, currentDirectory, getCanonicalFileName), /*isDefaultLib*/ false, file, ts.skipTrivia(file.text, file.imports[i].pos), file.imports[i].end); + var importedFile = findSourceFile(resolution.resolvedFileName, ts.toPath(resolution.resolvedFileName, currentDirectory, getCanonicalFileName), /*isDefaultLib*/ false, /*isReference*/ false, file, ts.skipTrivia(file.text, file.imports[i].pos), file.imports[i].end); if (importedFile && resolution.isExternalLibraryImport) { // Since currently irrespective of allowJs, we only look for supportedTypeScript extension external module files, // this check is ok. Otherwise this would be never true for javascript file @@ -40772,50 +42206,21 @@ var ts; return; } function computeCommonSourceDirectory(sourceFiles) { - var commonPathComponents; - var failed = ts.forEach(files, function (sourceFile) { - // Each file contributes into common source file path - if (ts.isDeclarationFile(sourceFile)) { - return; + var fileNames = []; + for (var _i = 0, sourceFiles_2 = sourceFiles; _i < sourceFiles_2.length; _i++) { + var file = sourceFiles_2[_i]; + if (!file.isDeclarationFile) { + fileNames.push(file.fileName); } - var sourcePathComponents = ts.getNormalizedPathComponents(sourceFile.fileName, currentDirectory); - sourcePathComponents.pop(); // The base file name is not part of the common directory path - if (!commonPathComponents) { - // first file - commonPathComponents = sourcePathComponents; - return; - } - for (var i = 0, n = Math.min(commonPathComponents.length, sourcePathComponents.length); i < n; i++) { - if (getCanonicalFileName(commonPathComponents[i]) !== getCanonicalFileName(sourcePathComponents[i])) { - if (i === 0) { - // Failed to find any common path component - return true; - } - // New common path found that is 0 -> i-1 - commonPathComponents.length = i; - break; - } - } - // If the sourcePathComponents was shorter than the commonPathComponents, truncate to the sourcePathComponents - if (sourcePathComponents.length < commonPathComponents.length) { - commonPathComponents.length = sourcePathComponents.length; - } - }); - // A common path can not be found when paths span multiple drives on windows, for example - if (failed) { - return ""; } - if (!commonPathComponents) { - return currentDirectory; - } - return ts.getNormalizedPathFromPathComponents(commonPathComponents); + return computeCommonSourceDirectoryOfFilenames(fileNames, currentDirectory, getCanonicalFileName); } function checkSourceFilesBelongToPath(sourceFiles, rootDirectory) { var allFilesBelongToPath = true; if (sourceFiles) { var absoluteRootDirectoryPath = host.getCanonicalFileName(ts.getNormalizedAbsolutePath(rootDirectory, currentDirectory)); - for (var _i = 0, sourceFiles_2 = sourceFiles; _i < sourceFiles_2.length; _i++) { - var sourceFile = sourceFiles_2[_i]; + for (var _i = 0, sourceFiles_3 = sourceFiles; _i < sourceFiles_3.length; _i++) { + var sourceFile = sourceFiles_3[_i]; if (!ts.isDeclarationFile(sourceFile)) { var absoluteSourceFilePath = host.getCanonicalFileName(ts.getNormalizedAbsolutePath(sourceFile.fileName, currentDirectory)); if (absoluteSourceFilePath.indexOf(absoluteRootDirectoryPath) !== 0) { @@ -40889,6 +42294,17 @@ var ts; programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1, "sourceRoot", "sourceMap")); } } + if (options.declarationDir) { + if (!options.declaration) { + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1, "declarationDir", "declaration")); + } + if (options.out || options.outFile) { + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "declarationDir", options.out ? "out" : "outFile")); + } + } + if (options.lib && options.noLib) { + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "lib", "noLib")); + } var languageVersion = options.target || 0 /* ES3 */; var outFile = options.outFile || options.out; var firstExternalModuleSourceFile = ts.forEach(files, function (f) { return ts.isExternalModule(f) ? f : undefined; }); @@ -40927,21 +42343,7 @@ var ts; programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Cannot_find_the_common_subdirectory_path_for_the_input_files)); } } - if (options.noEmit) { - if (options.out) { - programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "out")); - } - if (options.outFile) { - programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "outFile")); - } - if (options.outDir) { - programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "outDir")); - } - if (options.declaration) { - programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "declaration")); - } - } - else if (options.allowJs && options.declaration) { + if (!options.noEmit && options.allowJs && options.declaration) { programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "allowJs", "declaration")); } if (options.emitDecoratorMetadata && @@ -41005,6 +42407,12 @@ var ts; type: "boolean", description: ts.Diagnostics.Generates_corresponding_d_ts_file }, + { + name: "declarationDir", + type: "string", + isFilePath: true, + paramType: ts.Diagnostics.DIRECTORY + }, { name: "diagnostics", type: "boolean" @@ -41039,13 +42447,12 @@ var ts; "react": 2 /* React */ }, paramType: ts.Diagnostics.KIND, - description: ts.Diagnostics.Specify_JSX_code_generation_Colon_preserve_or_react, - error: ts.Diagnostics.Argument_for_jsx_must_be_preserve_or_react + description: ts.Diagnostics.Specify_JSX_code_generation_Colon_preserve_or_react }, { name: "reactNamespace", type: "string", - description: ts.Diagnostics.Specifies_the_object_invoked_for_createElement_and_spread_when_targeting_react_JSX_emit + description: ts.Diagnostics.Specify_the_object_invoked_for_createElement_and_spread_when_targeting_react_JSX_emit }, { name: "listFiles", @@ -41059,7 +42466,7 @@ var ts; name: "mapRoot", type: "string", isFilePath: true, - description: ts.Diagnostics.Specifies_the_location_where_debugger_should_locate_map_files_instead_of_generated_locations, + description: ts.Diagnostics.Specify_the_location_where_debugger_should_locate_map_files_instead_of_generated_locations, paramType: ts.Diagnostics.LOCATION }, { @@ -41075,8 +42482,7 @@ var ts; "es2015": ts.ModuleKind.ES2015 }, description: ts.Diagnostics.Specify_module_code_generation_Colon_commonjs_amd_system_umd_or_es2015, - paramType: ts.Diagnostics.KIND, - error: ts.Diagnostics.Argument_for_module_option_must_be_commonjs_amd_system_umd_es2015_or_none + paramType: ts.Diagnostics.KIND }, { name: "newLine", @@ -41084,9 +42490,8 @@ var ts; "crlf": 0 /* CarriageReturnLineFeed */, "lf": 1 /* LineFeed */ }, - description: ts.Diagnostics.Specifies_the_end_of_line_sequence_to_be_used_when_emitting_files_Colon_CRLF_dos_or_LF_unix, - paramType: ts.Diagnostics.NEWLINE, - error: ts.Diagnostics.Argument_for_newLine_option_must_be_CRLF_or_LF + description: ts.Diagnostics.Specify_the_end_of_line_sequence_to_be_used_when_emitting_files_Colon_CRLF_dos_or_LF_unix, + paramType: ts.Diagnostics.NEWLINE }, { name: "noEmit", @@ -41107,6 +42512,11 @@ var ts; type: "boolean", description: ts.Diagnostics.Raise_error_on_expressions_and_declarations_with_an_implied_any_type }, + { + name: "noImplicitThis", + type: "boolean", + description: ts.Diagnostics.Raise_error_on_this_expressions_with_an_implied_any_type + }, { name: "noLib", type: "boolean" @@ -41147,7 +42557,6 @@ var ts; }, { name: "pretty", - paramType: ts.Diagnostics.KIND, description: ts.Diagnostics.Stylize_errors_and_messages_using_color_and_context_experimental, type: "boolean" }, @@ -41168,8 +42577,8 @@ var ts; name: "rootDir", type: "string", isFilePath: true, - description: ts.Diagnostics.Specifies_the_root_directory_of_input_files_Use_to_control_the_output_directory_structure_with_outDir, - paramType: ts.Diagnostics.LOCATION + paramType: ts.Diagnostics.LOCATION, + description: ts.Diagnostics.Specify_the_root_directory_of_input_files_Use_to_control_the_output_directory_structure_with_outDir }, { name: "isolatedModules", @@ -41184,7 +42593,7 @@ var ts; name: "sourceRoot", type: "string", isFilePath: true, - description: ts.Diagnostics.Specifies_the_location_where_debugger_should_locate_TypeScript_files_instead_of_source_locations, + description: ts.Diagnostics.Specify_the_location_where_debugger_should_locate_TypeScript_files_instead_of_source_locations, paramType: ts.Diagnostics.LOCATION }, { @@ -41213,9 +42622,8 @@ var ts; "es6": 2 /* ES6 */, "es2015": 2 /* ES2015 */ }, - description: ts.Diagnostics.Specify_ECMAScript_target_version_Colon_ES3_default_ES5_or_ES2015_experimental, - paramType: ts.Diagnostics.VERSION, - error: ts.Diagnostics.Argument_for_target_option_must_be_ES3_ES5_or_ES2015 + description: ts.Diagnostics.Specify_ECMAScript_target_version_Colon_ES3_default_ES5_or_ES2015, + paramType: ts.Diagnostics.VERSION }, { name: "version", @@ -41246,8 +42654,7 @@ var ts; "node": ts.ModuleResolutionKind.NodeJs, "classic": ts.ModuleResolutionKind.Classic }, - description: ts.Diagnostics.Specifies_module_resolution_strategy_Colon_node_Node_js_or_classic_TypeScript_pre_1_6, - error: ts.Diagnostics.Argument_for_moduleResolution_option_must_be_node_or_classic + description: ts.Diagnostics.Specify_module_resolution_strategy_Colon_node_Node_js_or_classic_TypeScript_pre_1_6 }, { name: "allowUnusedLabels", @@ -41291,14 +42698,41 @@ var ts; // this option can only be specified in tsconfig.json // use type = object to copy the value as-is name: "rootDirs", - type: "object", + type: "list", isTSConfigOnly: true, - isFilePath: true + element: { + name: "rootDirs", + type: "string", + isFilePath: true + } }, { - name: "traceModuleResolution", + name: "typesSearchPaths", + type: "list", + isTSConfigOnly: true, + element: { + name: "typesSearchPaths", + type: "string", + isFilePath: true + } + }, + { + name: "typesRoot", + type: "string" + }, + { + name: "types", + type: "list", + element: { + name: "types", + type: "string" + }, + description: ts.Diagnostics.Type_declaration_files_to_be_included_in_compilation + }, + { + name: "traceResolution", type: "boolean", - description: ts.Diagnostics.Enable_tracing_of_the_module_resolution_process + description: ts.Diagnostics.Enable_tracing_of_the_name_resolution_process }, { name: "allowJs", @@ -41314,6 +42748,69 @@ var ts; name: "noImplicitUseStrict", type: "boolean", description: ts.Diagnostics.Do_not_emit_use_strict_directives_in_module_output + }, + { + name: "listEmittedFiles", + type: "boolean" + }, + { + name: "lib", + type: "list", + element: { + name: "lib", + type: { + // JavaScript only + "es5": "lib.es5.d.ts", + "es6": "lib.es2015.d.ts", + "es2015": "lib.es2015.d.ts", + "es7": "lib.es2016.d.ts", + "es2016": "lib.es2016.d.ts", + // Host only + "dom": "lib.dom.d.ts", + "webworker": "lib.webworker.d.ts", + "scripthost": "lib.scripthost.d.ts", + // ES2015 Or ESNext By-feature options + "es2015.core": "lib.es2015.core.d.ts", + "es2015.collection": "lib.es2015.collection.d.ts", + "es2015.generator": "lib.es2015.generator.d.ts", + "es2015.iterable": "lib.es2015.iterable.d.ts", + "es2015.promise": "lib.es2015.promise.d.ts", + "es2015.proxy": "lib.es2015.proxy.d.ts", + "es2015.reflect": "lib.es2015.reflect.d.ts", + "es2015.symbol": "lib.es2015.symbol.d.ts", + "es2015.symbol.wellknown": "lib.es2015.symbol.wellknown.d.ts", + "es2016.array.include": "lib.es2016.array.include.d.ts" + } + }, + description: ts.Diagnostics.Specify_library_files_to_be_included_in_the_compilation_Colon + }, + { + name: "strictNullChecks", + type: "boolean", + description: ts.Diagnostics.Enable_strict_null_checks + } + ]; + /* @internal */ + ts.typingOptionDeclarations = [ + { + name: "enableAutoDiscovery", + type: "boolean" + }, + { + name: "include", + type: "list", + element: { + name: "include", + type: "string" + } + }, + { + name: "exclude", + type: "list", + element: { + name: "exclude", + type: "string" + } } ]; var optionNameMapCache; @@ -41334,6 +42831,41 @@ var ts; return optionNameMapCache; } ts.getOptionNameMap = getOptionNameMap; + /* @internal */ + function createCompilerDiagnosticForInvalidCustomType(opt) { + var namesOfType = []; + ts.forEachKey(opt.type, function (key) { + namesOfType.push(" '" + key + "'"); + }); + return ts.createCompilerDiagnostic(ts.Diagnostics.Argument_for_0_option_must_be_Colon_1, "--" + opt.name, namesOfType); + } + ts.createCompilerDiagnosticForInvalidCustomType = createCompilerDiagnosticForInvalidCustomType; + /* @internal */ + function parseCustomTypeOption(opt, value, errors) { + var key = (value || "").trim().toLowerCase(); + var map = opt.type; + if (ts.hasProperty(map, key)) { + return map[key]; + } + else { + errors.push(createCompilerDiagnosticForInvalidCustomType(opt)); + } + } + ts.parseCustomTypeOption = parseCustomTypeOption; + /* @internal */ + function parseListTypeOption(opt, value, errors) { + var values = (value || "").trim().split(","); + switch (opt.element.type) { + case "number": + return ts.map(values, parseInt); + case "string": + return ts.map(values, function (v) { return v || ""; }); + default: + return ts.filter(ts.map(values, function (v) { return parseCustomTypeOption(opt.element, v, errors); }), function (v) { return !!v; }); + } + } + ts.parseListTypeOption = parseListTypeOption; + /* @internal */ function parseCommandLine(commandLine, readFile) { var options = {}; var fileNames = []; @@ -41381,17 +42913,15 @@ var ts; options[opt.name] = args[i] || ""; i++; break; + case "list": + options[opt.name] = parseListTypeOption(opt, args[i], errors); + i++; + break; // If not a primitive, the possible types are specified in what is effectively a map of options. default: - var map_1 = opt.type; - var key = (args[i] || "").toLowerCase(); + options[opt.name] = parseCustomTypeOption(opt, args[i], errors); i++; - if (ts.hasProperty(map_1, key)) { - options[opt.name] = map_1[key]; - } - else { - errors.push(ts.createCompilerDiagnostic(opt.error)); - } + break; } } } @@ -41503,17 +43033,22 @@ var ts; */ function parseJsonConfigFileContent(json, host, basePath, existingOptions, configFileName) { if (existingOptions === void 0) { existingOptions = {}; } - var _a = convertCompilerOptionsFromJson(json["compilerOptions"], basePath, configFileName), optionsFromJsonConfigFile = _a.options, errors = _a.errors; - var options = ts.extend(existingOptions, optionsFromJsonConfigFile); + var errors = []; + var compilerOptions = convertCompilerOptionsFromJsonWorker(json["compilerOptions"], basePath, errors, configFileName); + var options = ts.extend(existingOptions, compilerOptions); + var typingOptions = convertTypingOptionsFromJsonWorker(json["typingOptions"], basePath, errors, configFileName); + options.configFilePath = configFileName; + var fileNames = getFileNames(errors); return { options: options, - fileNames: getFileNames(), + fileNames: fileNames, + typingOptions: typingOptions, errors: errors }; - function getFileNames() { + function getFileNames(errors) { var fileNames = []; if (ts.hasProperty(json, "files")) { - if (json["files"] instanceof Array) { + if (ts.isArray(json["files"])) { fileNames = ts.map(json["files"], function (s) { return ts.combinePaths(basePath, s); }); } else { @@ -41523,7 +43058,7 @@ var ts; else { var filesSeen = {}; var exclude = []; - if (json["exclude"] instanceof Array) { + if (ts.isArray(json["exclude"])) { exclude = json["exclude"]; } else { @@ -41565,86 +43100,88 @@ var ts; } } } + if (ts.hasProperty(json, "excludes") && !ts.hasProperty(json, "exclude")) { + errors.push(ts.createCompilerDiagnostic(ts.Diagnostics.Unknown_option_excludes_Did_you_mean_exclude)); + } return fileNames; } } ts.parseJsonConfigFileContent = parseJsonConfigFileContent; function convertCompilerOptionsFromJson(jsonOptions, basePath, configFileName) { - var options = {}; var errors = []; - if (configFileName && ts.getBaseFileName(configFileName) === "jsconfig.json") { - options.allowJs = true; - } - if (!jsonOptions) { - return { options: options, errors: errors }; - } - var optionNameMap = ts.arrayToMap(ts.optionDeclarations, function (opt) { return opt.name; }); - for (var id in jsonOptions) { - if (ts.hasProperty(optionNameMap, id)) { - var opt = optionNameMap[id]; - var optType = opt.type; - var value = jsonOptions[id]; - var expectedType = typeof optType === "string" ? optType : "string"; - if (typeof value === expectedType) { - if (typeof optType !== "string") { - var key = value.toLowerCase(); - if (ts.hasProperty(optType, key)) { - value = optType[key]; - } - else { - errors.push(ts.createCompilerDiagnostic(opt.error)); - value = 0; - } - } - if (opt.isFilePath) { - switch (typeof value) { - case "string": - value = ts.normalizePath(ts.combinePaths(basePath, value)); - break; - case "object": - // "object" options with 'isFilePath' = true expected to be string arrays - var paths = []; - var invalidOptionType = false; - if (!ts.isArray(value)) { - invalidOptionType = true; - } - else { - for (var _i = 0, _a = value; _i < _a.length; _i++) { - var element = _a[_i]; - if (typeof element === "string") { - paths.push(ts.normalizePath(ts.combinePaths(basePath, element))); - } - else { - invalidOptionType = true; - break; - } - } - } - if (invalidOptionType) { - errors.push(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_should_have_array_of_strings_as_a_value, opt.name)); - } - else { - value = paths; - } - break; - } - if (value === "") { - value = "."; - } - } - options[opt.name] = value; - } - else { - errors.push(ts.createCompilerDiagnostic(ts.Diagnostics.Compiler_option_0_requires_a_value_of_type_1, id, expectedType)); - } - } - else { - errors.push(ts.createCompilerDiagnostic(ts.Diagnostics.Unknown_compiler_option_0, id)); - } - } + var options = convertCompilerOptionsFromJsonWorker(jsonOptions, basePath, errors, configFileName); return { options: options, errors: errors }; } ts.convertCompilerOptionsFromJson = convertCompilerOptionsFromJson; + function convertTypingOptionsFromJson(jsonOptions, basePath, configFileName) { + var errors = []; + var options = convertTypingOptionsFromJsonWorker(jsonOptions, basePath, errors, configFileName); + return { options: options, errors: errors }; + } + ts.convertTypingOptionsFromJson = convertTypingOptionsFromJson; + function convertCompilerOptionsFromJsonWorker(jsonOptions, basePath, errors, configFileName) { + var options = ts.getBaseFileName(configFileName) === "jsconfig.json" ? { allowJs: true } : {}; + convertOptionsFromJson(ts.optionDeclarations, jsonOptions, basePath, options, ts.Diagnostics.Unknown_compiler_option_0, errors); + return options; + } + function convertTypingOptionsFromJsonWorker(jsonOptions, basePath, errors, configFileName) { + var options = ts.getBaseFileName(configFileName) === "jsconfig.json" + ? { enableAutoDiscovery: true, include: [], exclude: [] } + : { enableAutoDiscovery: false, include: [], exclude: [] }; + convertOptionsFromJson(ts.typingOptionDeclarations, jsonOptions, basePath, options, ts.Diagnostics.Unknown_typing_option_0, errors); + return options; + } + function convertOptionsFromJson(optionDeclarations, jsonOptions, basePath, defaultOptions, diagnosticMessage, errors) { + if (!jsonOptions) { + return; + } + var optionNameMap = ts.arrayToMap(optionDeclarations, function (opt) { return opt.name; }); + for (var id in jsonOptions) { + if (ts.hasProperty(optionNameMap, id)) { + var opt = optionNameMap[id]; + defaultOptions[opt.name] = convertJsonOption(opt, jsonOptions[id], basePath, errors); + } + else { + errors.push(ts.createCompilerDiagnostic(diagnosticMessage, id)); + } + } + } + function convertJsonOption(opt, value, basePath, errors) { + var optType = opt.type; + var expectedType = typeof optType === "string" ? optType : "string"; + if (optType === "list" && ts.isArray(value)) { + return convertJsonOptionOfListType(opt, value, basePath, errors); + } + else if (typeof value === expectedType) { + if (typeof optType !== "string") { + return convertJsonOptionOfCustomType(opt, value, errors); + } + else { + if (opt.isFilePath) { + value = ts.normalizePath(ts.combinePaths(basePath, value)); + if (value === "") { + value = "."; + } + } + } + return value; + } + else { + errors.push(ts.createCompilerDiagnostic(ts.Diagnostics.Compiler_option_0_requires_a_value_of_type_1, opt.name, expectedType)); + } + } + function convertJsonOptionOfCustomType(opt, value, errors) { + var key = value.toLowerCase(); + if (ts.hasProperty(opt.type, key)) { + return opt.type[key]; + } + else { + errors.push(createCompilerDiagnosticForInvalidCustomType(opt)); + } + } + function convertJsonOptionOfListType(option, values, basePath, errors) { + return ts.filter(ts.map(values, function (v) { return convertJsonOption(option.element, v, basePath, errors); }), function (v) { return !!v; }); + } })(ts || (ts = {})); /* @internal */ var ts; @@ -41718,7 +43255,7 @@ var ts; } } function autoCollapse(node) { - return ts.isFunctionBlock(node) && node.parent.kind !== 178 /* ArrowFunction */; + return ts.isFunctionBlock(node) && node.parent.kind !== 179 /* ArrowFunction */; } var depth = 0; var maxDepth = 20; @@ -41730,30 +43267,30 @@ var ts; addOutliningForLeadingCommentsForNode(n); } switch (n.kind) { - case 196 /* Block */: + case 198 /* Block */: if (!ts.isFunctionBlock(n)) { - var parent_9 = n.parent; + var parent_11 = n.parent; var openBrace = ts.findChildOfKind(n, 15 /* OpenBraceToken */, sourceFile); var closeBrace = ts.findChildOfKind(n, 16 /* CloseBraceToken */, sourceFile); // Check if the block is standalone, or 'attached' to some parent statement. - // If the latter, we want to collaps the block, but consider its hint span + // If the latter, we want to collapse the block, but consider its hint span // to be the entire span of the parent. - if (parent_9.kind === 201 /* DoStatement */ || - parent_9.kind === 204 /* ForInStatement */ || - parent_9.kind === 205 /* ForOfStatement */ || - parent_9.kind === 203 /* ForStatement */ || - parent_9.kind === 200 /* IfStatement */ || - parent_9.kind === 202 /* WhileStatement */ || - parent_9.kind === 209 /* WithStatement */ || - parent_9.kind === 248 /* CatchClause */) { - addOutliningSpan(parent_9, openBrace, closeBrace, autoCollapse(n)); + if (parent_11.kind === 203 /* DoStatement */ || + parent_11.kind === 206 /* ForInStatement */ || + parent_11.kind === 207 /* ForOfStatement */ || + parent_11.kind === 205 /* ForStatement */ || + parent_11.kind === 202 /* IfStatement */ || + parent_11.kind === 204 /* WhileStatement */ || + parent_11.kind === 211 /* WithStatement */ || + parent_11.kind === 251 /* CatchClause */) { + addOutliningSpan(parent_11, openBrace, closeBrace, autoCollapse(n)); break; } - if (parent_9.kind === 213 /* TryStatement */) { + if (parent_11.kind === 215 /* TryStatement */) { // Could be the try-block, or the finally-block. - var tryStatement = parent_9; + var tryStatement = parent_11; if (tryStatement.tryBlock === n) { - addOutliningSpan(parent_9, openBrace, closeBrace, autoCollapse(n)); + addOutliningSpan(parent_11, openBrace, closeBrace, autoCollapse(n)); break; } else if (tryStatement.finallyBlock === n) { @@ -41776,23 +43313,23 @@ var ts; break; } // Fallthrough. - case 223 /* ModuleBlock */: { + case 225 /* ModuleBlock */: { var openBrace = ts.findChildOfKind(n, 15 /* OpenBraceToken */, sourceFile); var closeBrace = ts.findChildOfKind(n, 16 /* CloseBraceToken */, sourceFile); addOutliningSpan(n.parent, openBrace, closeBrace, autoCollapse(n)); break; } - case 218 /* ClassDeclaration */: - case 219 /* InterfaceDeclaration */: - case 221 /* EnumDeclaration */: - case 169 /* ObjectLiteralExpression */: - case 224 /* CaseBlock */: { + case 220 /* ClassDeclaration */: + case 221 /* InterfaceDeclaration */: + case 223 /* EnumDeclaration */: + case 170 /* ObjectLiteralExpression */: + case 226 /* CaseBlock */: { var openBrace = ts.findChildOfKind(n, 15 /* OpenBraceToken */, sourceFile); var closeBrace = ts.findChildOfKind(n, 16 /* CloseBraceToken */, sourceFile); addOutliningSpan(n, openBrace, closeBrace, autoCollapse(n)); break; } - case 168 /* ArrayLiteralExpression */: + case 169 /* ArrayLiteralExpression */: var openBracket = ts.findChildOfKind(n, 19 /* OpenBracketToken */, sourceFile); var closeBracket = ts.findChildOfKind(n, 20 /* CloseBracketToken */, sourceFile); addOutliningSpan(n, openBracket, closeBracket, autoCollapse(n)); @@ -41822,12 +43359,12 @@ var ts; ts.forEach(program.getSourceFiles(), function (sourceFile) { cancellationToken.throwIfCancellationRequested(); var nameToDeclarations = sourceFile.getNamedDeclarations(); - for (var name_31 in nameToDeclarations) { - var declarations = ts.getProperty(nameToDeclarations, name_31); + for (var name_34 in nameToDeclarations) { + var declarations = ts.getProperty(nameToDeclarations, name_34); if (declarations) { // First do a quick check to see if the name of the declaration matches the // last portion of the (possibly) dotted name they're searching for. - var matches = patternMatcher.getMatchesForLastSegmentOfPattern(name_31); + var matches = patternMatcher.getMatchesForLastSegmentOfPattern(name_34); if (!matches) { continue; } @@ -41840,14 +43377,14 @@ var ts; if (!containers) { return undefined; } - matches = patternMatcher.getMatches(containers, name_31); + matches = patternMatcher.getMatches(containers, name_34); if (!matches) { continue; } } var fileName = sourceFile.fileName; var matchKind = bestMatchKind(matches); - rawItems.push({ name: name_31, fileName: fileName, matchKind: matchKind, isCaseSensitive: allMatchesAreCaseSensitive(matches), declaration: declaration }); + rawItems.push({ name: name_34, fileName: fileName, matchKind: matchKind, isCaseSensitive: allMatchesAreCaseSensitive(matches), declaration: declaration }); } } } @@ -41885,7 +43422,7 @@ var ts; if (text !== undefined) { containers.unshift(text); } - else if (declaration.name.kind === 138 /* ComputedPropertyName */) { + else if (declaration.name.kind === 139 /* ComputedPropertyName */) { return tryAddComputedPropertyName(declaration.name.expression, containers, /*includeLastPortion*/ true); } else { @@ -41906,7 +43443,7 @@ var ts; } return true; } - if (expression.kind === 170 /* PropertyAccessExpression */) { + if (expression.kind === 171 /* PropertyAccessExpression */) { var propertyAccess = expression; if (includeLastPortion) { containers.unshift(propertyAccess.name.text); @@ -41919,7 +43456,7 @@ var ts; var containers = []; // First, if we started with a computed property name, then add all but the last // portion into the container array. - if (declaration.name.kind === 138 /* ComputedPropertyName */) { + if (declaration.name.kind === 139 /* ComputedPropertyName */) { if (!tryAddComputedPropertyName(declaration.name.expression, containers, /*includeLastPortion*/ false)) { return undefined; } @@ -41982,6 +43519,11 @@ var ts; var NavigationBar; (function (NavigationBar) { function getNavigationBarItems(sourceFile, compilerOptions) { + // TODO: Handle JS files differently in 'navbar' calls for now, but ideally we should unify + // the 'navbar' and 'navto' logic for TypeScript and JavaScript. + if (ts.isSourceFileJavaScript(sourceFile)) { + return getJsNavigationBarItems(sourceFile, compilerOptions); + } // If the source file has any child items, then it included in the tree // and takes lexical ownership of all other top-level items. var hasGlobalNode = false; @@ -41993,17 +43535,17 @@ var ts; var current = node.parent; while (current) { switch (current.kind) { - case 222 /* ModuleDeclaration */: + case 224 /* ModuleDeclaration */: // If we have a module declared as A.B.C, it is more "intuitive" // to say it only has a single layer of depth do { current = current.parent; - } while (current.kind === 222 /* ModuleDeclaration */); + } while (current.kind === 224 /* ModuleDeclaration */); // fall through - case 218 /* ClassDeclaration */: - case 221 /* EnumDeclaration */: - case 219 /* InterfaceDeclaration */: - case 217 /* FunctionDeclaration */: + case 220 /* ClassDeclaration */: + case 223 /* EnumDeclaration */: + case 221 /* InterfaceDeclaration */: + case 219 /* FunctionDeclaration */: indent++; } current = current.parent; @@ -42014,21 +43556,21 @@ var ts; var childNodes = []; function visit(node) { switch (node.kind) { - case 197 /* VariableStatement */: + case 199 /* VariableStatement */: ts.forEach(node.declarationList.declarations, visit); break; - case 165 /* ObjectBindingPattern */: - case 166 /* ArrayBindingPattern */: + case 166 /* ObjectBindingPattern */: + case 167 /* ArrayBindingPattern */: ts.forEach(node.elements, visit); break; - case 232 /* ExportDeclaration */: + case 235 /* ExportDeclaration */: // Handle named exports case e.g.: // export {a, b as B} from "mod"; if (node.exportClause) { ts.forEach(node.exportClause.elements, visit); } break; - case 226 /* ImportDeclaration */: + case 229 /* ImportDeclaration */: var importClause = node.importClause; if (importClause) { // Handle default import case e.g.: @@ -42040,7 +43582,7 @@ var ts; // import * as NS from "mod"; // import {a, b as B} from "mod"; if (importClause.namedBindings) { - if (importClause.namedBindings.kind === 228 /* NamespaceImport */) { + if (importClause.namedBindings.kind === 231 /* NamespaceImport */) { childNodes.push(importClause.namedBindings); } else { @@ -42049,21 +43591,21 @@ var ts; } } break; - case 167 /* BindingElement */: - case 215 /* VariableDeclaration */: + case 168 /* BindingElement */: + case 217 /* VariableDeclaration */: if (ts.isBindingPattern(node.name)) { visit(node.name); break; } // Fall through - case 218 /* ClassDeclaration */: - case 221 /* EnumDeclaration */: - case 219 /* InterfaceDeclaration */: - case 222 /* ModuleDeclaration */: - case 217 /* FunctionDeclaration */: - case 225 /* ImportEqualsDeclaration */: - case 230 /* ImportSpecifier */: - case 234 /* ExportSpecifier */: + case 220 /* ClassDeclaration */: + case 223 /* EnumDeclaration */: + case 221 /* InterfaceDeclaration */: + case 224 /* ModuleDeclaration */: + case 219 /* FunctionDeclaration */: + case 228 /* ImportEqualsDeclaration */: + case 233 /* ImportSpecifier */: + case 237 /* ExportSpecifier */: childNodes.push(node); break; } @@ -42111,17 +43653,31 @@ var ts; for (var _i = 0, nodes_4 = nodes; _i < nodes_4.length; _i++) { var node = nodes_4[_i]; switch (node.kind) { - case 218 /* ClassDeclaration */: - case 221 /* EnumDeclaration */: - case 219 /* InterfaceDeclaration */: + case 220 /* ClassDeclaration */: + topLevelNodes.push(node); + for (var _a = 0, _b = node.members; _a < _b.length; _a++) { + var member = _b[_a]; + if (member.kind === 146 /* MethodDeclaration */ || member.kind === 147 /* Constructor */) { + if (member.body) { + // We do not include methods that does not have child functions in it, because of duplications. + if (hasNamedFunctionDeclarations(member.body.statements)) { + topLevelNodes.push(member); + } + addTopLevelNodes(member.body.statements, topLevelNodes); + } + } + } + break; + case 223 /* EnumDeclaration */: + case 221 /* InterfaceDeclaration */: topLevelNodes.push(node); break; - case 222 /* ModuleDeclaration */: + case 224 /* ModuleDeclaration */: var moduleDeclaration = node; topLevelNodes.push(node); addTopLevelNodes(getInnermostModule(moduleDeclaration).body.statements, topLevelNodes); break; - case 217 /* FunctionDeclaration */: + case 219 /* FunctionDeclaration */: var functionDeclaration = node; if (isTopLevelFunctionDeclaration(functionDeclaration)) { topLevelNodes.push(node); @@ -42131,20 +43687,36 @@ var ts; } } } + function hasNamedFunctionDeclarations(nodes) { + for (var _i = 0, nodes_5 = nodes; _i < nodes_5.length; _i++) { + var s = nodes_5[_i]; + if (s.kind === 219 /* FunctionDeclaration */ && !isEmpty(s.name.text)) { + return true; + } + } + return false; + } function isTopLevelFunctionDeclaration(functionDeclaration) { - if (functionDeclaration.kind === 217 /* FunctionDeclaration */) { - // A function declaration is 'top level' if it contains any function declarations - // within it. - if (functionDeclaration.body && functionDeclaration.body.kind === 196 /* Block */) { + if (functionDeclaration.kind === 219 /* FunctionDeclaration */) { + // A function declaration is 'top level' if it contains any function declarations + // within it. + if (functionDeclaration.body && functionDeclaration.body.kind === 198 /* Block */) { // Proper function declarations can only have identifier names - if (ts.forEach(functionDeclaration.body.statements, function (s) { return s.kind === 217 /* FunctionDeclaration */ && !isEmpty(s.name.text); })) { + if (hasNamedFunctionDeclarations(functionDeclaration.body.statements)) { return true; } - // Or if it is not parented by another function. i.e all functions - // at module scope are 'top level'. + // Or if it is not parented by another function. I.e all functions at module scope are 'top level'. if (!ts.isFunctionBlock(functionDeclaration.parent)) { return true; } + else { + // We have made sure that a grand parent node exists with 'isFunctionBlock()' above. + var grandParentKind = functionDeclaration.parent.parent.kind; + if (grandParentKind === 146 /* MethodDeclaration */ || + grandParentKind === 147 /* Constructor */) { + return true; + } + } } } return false; @@ -42152,8 +43724,8 @@ var ts; function getItemsWorker(nodes, createItem) { var items = []; var keyToItem = {}; - for (var _i = 0, nodes_5 = nodes; _i < nodes_5.length; _i++) { - var child = nodes_5[_i]; + for (var _i = 0, nodes_6 = nodes; _i < nodes_6.length; _i++) { + var child = nodes_6[_i]; var item = createItem(child); if (item !== undefined) { if (item.text.length > 0) { @@ -42197,7 +43769,7 @@ var ts; } function createChildItem(node) { switch (node.kind) { - case 140 /* Parameter */: + case 141 /* Parameter */: if (ts.isBindingPattern(node.name)) { break; } @@ -42205,36 +43777,36 @@ var ts; return undefined; } return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.memberVariableElement); - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.memberFunctionElement); - case 147 /* GetAccessor */: + case 148 /* GetAccessor */: return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.memberGetAccessorElement); - case 148 /* SetAccessor */: + case 149 /* SetAccessor */: return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.memberSetAccessorElement); - case 151 /* IndexSignature */: + case 152 /* IndexSignature */: return createItem(node, "[]", ts.ScriptElementKind.indexSignatureElement); - case 251 /* EnumMember */: + case 254 /* EnumMember */: return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.memberVariableElement); - case 149 /* CallSignature */: + case 150 /* CallSignature */: return createItem(node, "()", ts.ScriptElementKind.callSignatureElement); - case 150 /* ConstructSignature */: + case 151 /* ConstructSignature */: return createItem(node, "new()", ts.ScriptElementKind.constructSignatureElement); - case 143 /* PropertyDeclaration */: - case 142 /* PropertySignature */: + case 144 /* PropertyDeclaration */: + case 143 /* PropertySignature */: return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.memberVariableElement); - case 217 /* FunctionDeclaration */: + case 219 /* FunctionDeclaration */: return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.functionElement); - case 215 /* VariableDeclaration */: - case 167 /* BindingElement */: + case 217 /* VariableDeclaration */: + case 168 /* BindingElement */: var variableDeclarationNode = void 0; - var name_32; - if (node.kind === 167 /* BindingElement */) { - name_32 = node.name; + var name_35; + if (node.kind === 168 /* BindingElement */) { + name_35 = node.name; variableDeclarationNode = node; // binding elements are added only for variable declarations // bubble up to the containing variable declaration - while (variableDeclarationNode && variableDeclarationNode.kind !== 215 /* VariableDeclaration */) { + while (variableDeclarationNode && variableDeclarationNode.kind !== 217 /* VariableDeclaration */) { variableDeclarationNode = variableDeclarationNode.parent; } ts.Debug.assert(variableDeclarationNode !== undefined); @@ -42242,24 +43814,24 @@ var ts; else { ts.Debug.assert(!ts.isBindingPattern(node.name)); variableDeclarationNode = node; - name_32 = node.name; + name_35 = node.name; } if (ts.isConst(variableDeclarationNode)) { - return createItem(node, getTextOfNode(name_32), ts.ScriptElementKind.constElement); + return createItem(node, getTextOfNode(name_35), ts.ScriptElementKind.constElement); } else if (ts.isLet(variableDeclarationNode)) { - return createItem(node, getTextOfNode(name_32), ts.ScriptElementKind.letElement); + return createItem(node, getTextOfNode(name_35), ts.ScriptElementKind.letElement); } else { - return createItem(node, getTextOfNode(name_32), ts.ScriptElementKind.variableElement); + return createItem(node, getTextOfNode(name_35), ts.ScriptElementKind.variableElement); } - case 146 /* Constructor */: + case 147 /* Constructor */: return createItem(node, "constructor", ts.ScriptElementKind.constructorImplementationElement); - case 234 /* ExportSpecifier */: - case 230 /* ImportSpecifier */: - case 225 /* ImportEqualsDeclaration */: - case 227 /* ImportClause */: - case 228 /* NamespaceImport */: + case 237 /* ExportSpecifier */: + case 233 /* ImportSpecifier */: + case 228 /* ImportEqualsDeclaration */: + case 230 /* ImportClause */: + case 231 /* NamespaceImport */: return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.alias); } return undefined; @@ -42289,17 +43861,20 @@ var ts; } function createTopLevelItem(node) { switch (node.kind) { - case 252 /* SourceFile */: + case 255 /* SourceFile */: return createSourceFileItem(node); - case 218 /* ClassDeclaration */: + case 220 /* ClassDeclaration */: return createClassItem(node); - case 221 /* EnumDeclaration */: + case 146 /* MethodDeclaration */: + case 147 /* Constructor */: + return createMemberFunctionLikeItem(node); + case 223 /* EnumDeclaration */: return createEnumItem(node); - case 219 /* InterfaceDeclaration */: - return createIterfaceItem(node); - case 222 /* ModuleDeclaration */: + case 221 /* InterfaceDeclaration */: + return createInterfaceItem(node); + case 224 /* ModuleDeclaration */: return createModuleItem(node); - case 217 /* FunctionDeclaration */: + case 219 /* FunctionDeclaration */: return createFunctionItem(node); } return undefined; @@ -42311,7 +43886,7 @@ var ts; // Otherwise, we need to aggregate each identifier to build up the qualified name. var result = []; result.push(moduleDeclaration.name.text); - while (moduleDeclaration.body && moduleDeclaration.body.kind === 222 /* ModuleDeclaration */) { + while (moduleDeclaration.body && moduleDeclaration.body.kind === 224 /* ModuleDeclaration */) { moduleDeclaration = moduleDeclaration.body; result.push(moduleDeclaration.name.text); } @@ -42323,12 +43898,29 @@ var ts; return getNavigationBarItem(moduleName, ts.ScriptElementKind.moduleElement, ts.getNodeModifiers(node), [getNodeSpan(node)], childItems, getIndent(node)); } function createFunctionItem(node) { - if (node.body && node.body.kind === 196 /* Block */) { + if (node.body && node.body.kind === 198 /* Block */) { var childItems = getItemsWorker(sortNodes(node.body.statements), createChildItem); return getNavigationBarItem(!node.name ? "default" : node.name.text, ts.ScriptElementKind.functionElement, ts.getNodeModifiers(node), [getNodeSpan(node)], childItems, getIndent(node)); } return undefined; } + function createMemberFunctionLikeItem(node) { + if (node.body && node.body.kind === 198 /* Block */) { + var childItems = getItemsWorker(sortNodes(node.body.statements), createChildItem); + var scriptElementKind = void 0; + var memberFunctionName = void 0; + if (node.kind === 146 /* MethodDeclaration */) { + memberFunctionName = ts.getPropertyNameForPropertyNameNode(node.name); + scriptElementKind = ts.ScriptElementKind.memberFunctionElement; + } + else { + memberFunctionName = "constructor"; + scriptElementKind = ts.ScriptElementKind.constructorImplementationElement; + } + return getNavigationBarItem(memberFunctionName, scriptElementKind, ts.getNodeModifiers(node), [getNodeSpan(node)], childItems, getIndent(node)); + } + return undefined; + } function createSourceFileItem(node) { var childItems = getItemsWorker(getChildNodes(node.statements), createChildItem); if (childItems === undefined || childItems.length === 0) { @@ -42344,7 +43936,7 @@ var ts; var childItems; if (node.members) { var constructor = ts.forEach(node.members, function (member) { - return member.kind === 146 /* Constructor */ && member; + return member.kind === 147 /* Constructor */ && member; }); // Add the constructor parameters in as children of the class (for property parameters). // Note that *all non-binding pattern named* parameters will be added to the nodes array, but parameters that @@ -42362,13 +43954,13 @@ var ts; var childItems = getItemsWorker(sortNodes(removeComputedProperties(node)), createChildItem); return getNavigationBarItem(node.name.text, ts.ScriptElementKind.enumElement, ts.getNodeModifiers(node), [getNodeSpan(node)], childItems, getIndent(node)); } - function createIterfaceItem(node) { + function createInterfaceItem(node) { var childItems = getItemsWorker(sortNodes(removeDynamicallyNamedProperties(node)), createChildItem); return getNavigationBarItem(node.name.text, ts.ScriptElementKind.interfaceElement, ts.getNodeModifiers(node), [getNodeSpan(node)], childItems, getIndent(node)); } } function removeComputedProperties(node) { - return ts.filter(node.members, function (member) { return member.name === undefined || member.name.kind !== 138 /* ComputedPropertyName */; }); + return ts.filter(node.members, function (member) { return member.name === undefined || member.name.kind !== 139 /* ComputedPropertyName */; }); } /** * Like removeComputedProperties, but retains the properties with well known symbol names @@ -42377,13 +43969,13 @@ var ts; return ts.filter(node.members, function (member) { return !ts.hasDynamicName(member); }); } function getInnermostModule(node) { - while (node.body.kind === 222 /* ModuleDeclaration */) { + while (node.body.kind === 224 /* ModuleDeclaration */) { node = node.body; } return node; } function getNodeSpan(node) { - return node.kind === 252 /* SourceFile */ + return node.kind === 255 /* SourceFile */ ? ts.createTextSpanFromBounds(node.getFullStart(), node.getEnd()) : ts.createTextSpanFromBounds(node.getStart(), node.getEnd()); } @@ -42392,6 +43984,188 @@ var ts; } } NavigationBar.getNavigationBarItems = getNavigationBarItems; + function getJsNavigationBarItems(sourceFile, compilerOptions) { + var anonFnText = ""; + var anonClassText = ""; + var indent = 0; + var rootName = ts.isExternalModule(sourceFile) ? + "\"" + ts.escapeString(ts.getBaseFileName(ts.removeFileExtension(ts.normalizePath(sourceFile.fileName)))) + "\"" + : ""; + var sourceFileItem = getNavBarItem(rootName, ts.ScriptElementKind.moduleElement, [getNodeSpan(sourceFile)]); + var topItem = sourceFileItem; + // Walk the whole file, because we want to also find function expressions - which may be in variable initializer, + // call arguments, expressions, etc... + ts.forEachChild(sourceFile, visitNode); + function visitNode(node) { + var newItem = createNavBarItem(node); + if (newItem) { + topItem.childItems.push(newItem); + } + // Add a level if traversing into a container + if (newItem && (ts.isFunctionLike(node) || ts.isClassLike(node))) { + var lastTop = topItem; + indent++; + topItem = newItem; + ts.forEachChild(node, visitNode); + topItem = lastTop; + indent--; + // If the last item added was an anonymous function expression, and it had no children, discard it. + if (newItem && newItem.text === anonFnText && newItem.childItems.length === 0) { + topItem.childItems.pop(); + } + } + else { + ts.forEachChild(node, visitNode); + } + } + function createNavBarItem(node) { + switch (node.kind) { + case 217 /* VariableDeclaration */: + // Only add to the navbar if at the top-level of the file + // Note: "const" and "let" are also SyntaxKind.VariableDeclarations + if (node.parent /*VariableDeclarationList*/.parent /*VariableStatement*/ + .parent /*SourceFile*/.kind !== 255 /* SourceFile */) { + return undefined; + } + // If it is initialized with a function expression, handle it when we reach the function expression node + var varDecl = node; + if (varDecl.initializer && (varDecl.initializer.kind === 178 /* FunctionExpression */ || + varDecl.initializer.kind === 179 /* ArrowFunction */ || + varDecl.initializer.kind === 191 /* ClassExpression */)) { + return undefined; + } + // Fall through + case 219 /* FunctionDeclaration */: + case 220 /* ClassDeclaration */: + case 147 /* Constructor */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: + // "export default function().." looks just like a regular function/class declaration, except with the 'default' flag + var name_36 = node.flags && (node.flags & 512 /* Default */) && !node.name ? "default" : + node.kind === 147 /* Constructor */ ? "constructor" : + ts.declarationNameToString(node.name); + return getNavBarItem(name_36, getScriptKindForElementKind(node.kind), [getNodeSpan(node)]); + case 178 /* FunctionExpression */: + case 179 /* ArrowFunction */: + case 191 /* ClassExpression */: + return getDefineModuleItem(node) || getFunctionOrClassExpressionItem(node); + case 146 /* MethodDeclaration */: + var methodDecl = node; + return getNavBarItem(ts.declarationNameToString(methodDecl.name), ts.ScriptElementKind.memberFunctionElement, [getNodeSpan(node)]); + case 234 /* ExportAssignment */: + // e.g. "export default " + return getNavBarItem("default", ts.ScriptElementKind.variableElement, [getNodeSpan(node)]); + case 230 /* ImportClause */: + if (!node.name) { + // No default import (this node is still a parent of named & namespace imports, which are handled below) + return undefined; + } + // fall through + case 233 /* ImportSpecifier */: // e.g. 'id' in: import {id} from 'mod' (in NamedImports, in ImportClause) + case 231 /* NamespaceImport */: // e.g. '* as ns' in: import * as ns from 'mod' (in ImportClause) + case 237 /* ExportSpecifier */: + // Export specifiers are only interesting if they are reexports from another module, or renamed, else they are already globals + if (node.kind === 237 /* ExportSpecifier */) { + if (!node.parent.parent.moduleSpecifier && !node.propertyName) { + return undefined; + } + } + var decl = node; + if (!decl.name) { + return undefined; + } + var declName = ts.declarationNameToString(decl.name); + return getNavBarItem(declName, ts.ScriptElementKind.constElement, [getNodeSpan(node)]); + default: + return undefined; + } + } + function getNavBarItem(text, kind, spans, kindModifiers) { + if (kindModifiers === void 0) { kindModifiers = ts.ScriptElementKindModifier.none; } + return { + text: text, kind: kind, kindModifiers: kindModifiers, spans: spans, childItems: [], indent: indent, bolded: false, grayed: false + }; + } + function getDefineModuleItem(node) { + if (node.kind !== 178 /* FunctionExpression */ && node.kind !== 179 /* ArrowFunction */) { + return undefined; + } + // No match if this is not a call expression to an identifier named 'define' + if (node.parent.kind !== 173 /* CallExpression */) { + return undefined; + } + var callExpr = node.parent; + if (callExpr.expression.kind !== 69 /* Identifier */ || callExpr.expression.getText() !== 'define') { + return undefined; + } + // Return a module of either the given text in the first argument, or of the source file path + var defaultName = node.getSourceFile().fileName; + if (callExpr.arguments[0].kind === 9 /* StringLiteral */) { + defaultName = (callExpr.arguments[0]).text; + } + return getNavBarItem(defaultName, ts.ScriptElementKind.moduleElement, [getNodeSpan(node.parent)]); + } + function getFunctionOrClassExpressionItem(node) { + if (node.kind !== 178 /* FunctionExpression */ && + node.kind !== 179 /* ArrowFunction */ && + node.kind !== 191 /* ClassExpression */) { + return undefined; + } + var fnExpr = node; + var fnName; + if (fnExpr.name && ts.getFullWidth(fnExpr.name) > 0) { + // The expression has an identifier, so use that as the name + fnName = ts.declarationNameToString(fnExpr.name); + } + else { + // See if it is a var initializer. If so, use the var name. + if (fnExpr.parent.kind === 217 /* VariableDeclaration */) { + fnName = ts.declarationNameToString(fnExpr.parent.name); + } + else if (fnExpr.parent.kind === 186 /* BinaryExpression */ && + fnExpr.parent.operatorToken.kind === 56 /* EqualsToken */) { + fnName = fnExpr.parent.left.getText(); + if (fnName.length > 20) { + fnName = fnName.substring(0, 17) + "..."; + } + } + else if (fnExpr.parent.kind === 252 /* PropertyAssignment */ && + fnExpr.parent.name) { + fnName = fnExpr.parent.name.getText(); + } + else { + fnName = node.kind === 191 /* ClassExpression */ ? anonClassText : anonFnText; + } + } + var scriptKind = node.kind === 191 /* ClassExpression */ ? ts.ScriptElementKind.classElement : ts.ScriptElementKind.functionElement; + return getNavBarItem(fnName, scriptKind, [getNodeSpan(node)]); + } + function getNodeSpan(node) { + return node.kind === 255 /* SourceFile */ + ? ts.createTextSpanFromBounds(node.getFullStart(), node.getEnd()) + : ts.createTextSpanFromBounds(node.getStart(), node.getEnd()); + } + function getScriptKindForElementKind(kind) { + switch (kind) { + case 217 /* VariableDeclaration */: + return ts.ScriptElementKind.variableElement; + case 219 /* FunctionDeclaration */: + return ts.ScriptElementKind.functionElement; + case 220 /* ClassDeclaration */: + return ts.ScriptElementKind.classElement; + case 147 /* Constructor */: + return ts.ScriptElementKind.constructorImplementationElement; + case 148 /* GetAccessor */: + return ts.ScriptElementKind.memberGetAccessorElement; + case 149 /* SetAccessor */: + return ts.ScriptElementKind.memberSetAccessorElement; + default: + return "unknown"; + } + } + return sourceFileItem.childItems; + } + NavigationBar.getJsNavigationBarItems = getJsNavigationBarItems; })(NavigationBar = ts.NavigationBar || (ts.NavigationBar = {})); })(ts || (ts = {})); /* @internal */ @@ -43008,7 +44782,7 @@ var ts; // break; // case TypeScript.SyntaxKind.GreaterThanGreaterThanGreaterThanToken: // stack++; - // // Intentaion fall through + // // Intentional fall through // case TypeScript.SyntaxKind.GreaterThanToken: // stack++; // break; @@ -43028,7 +44802,7 @@ var ts; // } // break; // case TypeScript.SyntaxKind.EqualsGreaterThanToken: - // // This can be a function type or a constructor type. In either case, we want to skip the function defintion + // // This can be a function type or a constructor type. In either case, we want to skip the function definition // token = previousToken(token, /*includeSkippedTokens*/ true); // if (token && token.kind() === TypeScript.SyntaxKind.CloseParenToken) { // // Skip untill the matching open paren token @@ -43047,7 +44821,7 @@ var ts; // } // } // else { - // // This is not a funtion type. exit the main loop + // // This is not a function type. exit the main loop // break whileLoop; // } // break; @@ -43134,7 +44908,7 @@ var ts; } return createSignatureHelpItems(candidates, resolvedSignature, argumentInfo); function createJavaScriptSignatureHelpItems(argumentInfo) { - if (argumentInfo.invocation.kind !== 172 /* CallExpression */) { + if (argumentInfo.invocation.kind !== 173 /* CallExpression */) { return undefined; } // See if we can find some symbol with the call expression name that has call signatures. @@ -43142,7 +44916,7 @@ var ts; var expression = callExpression.expression; var name = expression.kind === 69 /* Identifier */ ? expression - : expression.kind === 170 /* PropertyAccessExpression */ + : expression.kind === 171 /* PropertyAccessExpression */ ? expression.name : undefined; if (!name || !name.text) { @@ -43175,7 +44949,7 @@ var ts; * in the argument of an invocation; returns undefined otherwise. */ function getImmediatelyContainingArgumentInfo(node) { - if (node.parent.kind === 172 /* CallExpression */ || node.parent.kind === 173 /* NewExpression */) { + if (node.parent.kind === 173 /* CallExpression */ || node.parent.kind === 174 /* NewExpression */) { var callExpression = node.parent; // There are 3 cases to handle: // 1. The token introduces a list, and should begin a sig help session @@ -43228,25 +45002,25 @@ var ts; }; } } - else if (node.kind === 11 /* NoSubstitutionTemplateLiteral */ && node.parent.kind === 174 /* TaggedTemplateExpression */) { + else if (node.kind === 11 /* NoSubstitutionTemplateLiteral */ && node.parent.kind === 175 /* TaggedTemplateExpression */) { // Check if we're actually inside the template; // otherwise we'll fall out and return undefined. if (ts.isInsideTemplateLiteral(node, position)) { return getArgumentListInfoForTemplate(node.parent, /*argumentIndex*/ 0); } } - else if (node.kind === 12 /* TemplateHead */ && node.parent.parent.kind === 174 /* TaggedTemplateExpression */) { + else if (node.kind === 12 /* TemplateHead */ && node.parent.parent.kind === 175 /* TaggedTemplateExpression */) { var templateExpression = node.parent; var tagExpression = templateExpression.parent; - ts.Debug.assert(templateExpression.kind === 187 /* TemplateExpression */); + ts.Debug.assert(templateExpression.kind === 188 /* TemplateExpression */); var argumentIndex = ts.isInsideTemplateLiteral(node, position) ? 0 : 1; return getArgumentListInfoForTemplate(tagExpression, argumentIndex); } - else if (node.parent.kind === 194 /* TemplateSpan */ && node.parent.parent.parent.kind === 174 /* TaggedTemplateExpression */) { + else if (node.parent.kind === 196 /* TemplateSpan */ && node.parent.parent.parent.kind === 175 /* TaggedTemplateExpression */) { var templateSpan = node.parent; var templateExpression = templateSpan.parent; var tagExpression = templateExpression.parent; - ts.Debug.assert(templateExpression.kind === 187 /* TemplateExpression */); + ts.Debug.assert(templateExpression.kind === 188 /* TemplateExpression */); // If we're just after a template tail, don't show signature help. if (node.kind === 14 /* TemplateTail */ && !ts.isInsideTemplateLiteral(node, position)) { return undefined; @@ -43364,7 +45138,7 @@ var ts; // // This is because a Missing node has no width. However, what we actually want is to include trivia // leading up to the next token in case the user is about to type in a TemplateMiddle or TemplateTail. - if (template.kind === 187 /* TemplateExpression */) { + if (template.kind === 188 /* TemplateExpression */) { var lastSpan = ts.lastOrUndefined(template.templateSpans); if (lastSpan.literal.getFullWidth() === 0) { applicableSpanEnd = ts.skipTrivia(sourceFile.text, applicableSpanEnd, /*stopAfterLineBreak*/ false); @@ -43373,7 +45147,7 @@ var ts; return ts.createTextSpan(applicableSpanStart, applicableSpanEnd - applicableSpanStart); } function getContainingArgumentInfo(node) { - for (var n = node; n.kind !== 252 /* SourceFile */; n = n.parent) { + for (var n = node; n.kind !== 255 /* SourceFile */; n = n.parent) { if (ts.isFunctionBlock(n)) { return undefined; } @@ -43438,7 +45212,7 @@ var ts; signatureHelpParameters = typeParameters && typeParameters.length > 0 ? ts.map(typeParameters, createSignatureHelpParameterForTypeParameter) : emptyArray; suffixDisplayParts.push(ts.punctuationPart(27 /* GreaterThanToken */)); var parameterParts = ts.mapToDisplayParts(function (writer) { - return typeChecker.getSymbolDisplayBuilder().buildDisplayForParametersAndDelimiters(candidateSignature.parameters, writer, invocation); + return typeChecker.getSymbolDisplayBuilder().buildDisplayForParametersAndDelimiters(candidateSignature.thisType, candidateSignature.parameters, writer, invocation); }); ts.addRange(suffixDisplayParts, parameterParts); } @@ -43511,31 +45285,6 @@ var ts; /* @internal */ var ts; (function (ts) { - function getEndLinePosition(line, sourceFile) { - ts.Debug.assert(line >= 0); - var lineStarts = sourceFile.getLineStarts(); - var lineIndex = line; - if (lineIndex + 1 === lineStarts.length) { - // last line - return EOF - return sourceFile.text.length - 1; - } - else { - // current line start - var start = lineStarts[lineIndex]; - // take the start position of the next line -1 = it should be some line break - var pos = lineStarts[lineIndex + 1] - 1; - ts.Debug.assert(ts.isLineBreak(sourceFile.text.charCodeAt(pos))); - // walk backwards skipping line breaks, stop the the beginning of current line. - // i.e: - // - // $ <- end of line for this position should match the start position - while (start <= pos && ts.isLineBreak(sourceFile.text.charCodeAt(pos))) { - pos--; - } - return pos; - } - } - ts.getEndLinePosition = getEndLinePosition; function getLineStartPositionForPosition(position, sourceFile) { var lineStarts = sourceFile.getLineStarts(); var line = sourceFile.getLineAndCharacterOfPosition(position).line; @@ -43573,40 +45322,40 @@ var ts; return false; } switch (n.kind) { - case 218 /* ClassDeclaration */: - case 219 /* InterfaceDeclaration */: - case 221 /* EnumDeclaration */: - case 169 /* ObjectLiteralExpression */: - case 165 /* ObjectBindingPattern */: - case 157 /* TypeLiteral */: - case 196 /* Block */: - case 223 /* ModuleBlock */: - case 224 /* CaseBlock */: + case 220 /* ClassDeclaration */: + case 221 /* InterfaceDeclaration */: + case 223 /* EnumDeclaration */: + case 170 /* ObjectLiteralExpression */: + case 166 /* ObjectBindingPattern */: + case 158 /* TypeLiteral */: + case 198 /* Block */: + case 225 /* ModuleBlock */: + case 226 /* CaseBlock */: return nodeEndsWith(n, 16 /* CloseBraceToken */, sourceFile); - case 248 /* CatchClause */: + case 251 /* CatchClause */: return isCompletedNode(n.block, sourceFile); - case 173 /* NewExpression */: + case 174 /* NewExpression */: if (!n.arguments) { return true; } // fall through - case 172 /* CallExpression */: - case 176 /* ParenthesizedExpression */: - case 162 /* ParenthesizedType */: + case 173 /* CallExpression */: + case 177 /* ParenthesizedExpression */: + case 163 /* ParenthesizedType */: return nodeEndsWith(n, 18 /* CloseParenToken */, sourceFile); - case 154 /* FunctionType */: - case 155 /* ConstructorType */: + case 155 /* FunctionType */: + case 156 /* ConstructorType */: return isCompletedNode(n.type, sourceFile); - case 146 /* Constructor */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: - case 217 /* FunctionDeclaration */: - case 177 /* FunctionExpression */: - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: - case 150 /* ConstructSignature */: - case 149 /* CallSignature */: - case 178 /* ArrowFunction */: + case 147 /* Constructor */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: + case 219 /* FunctionDeclaration */: + case 178 /* FunctionExpression */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: + case 151 /* ConstructSignature */: + case 150 /* CallSignature */: + case 179 /* ArrowFunction */: if (n.body) { return isCompletedNode(n.body, sourceFile); } @@ -43616,64 +45365,64 @@ var ts; // Even though type parameters can be unclosed, we can get away with // having at least a closing paren. return hasChildOfKind(n, 18 /* CloseParenToken */, sourceFile); - case 222 /* ModuleDeclaration */: + case 224 /* ModuleDeclaration */: return n.body && isCompletedNode(n.body, sourceFile); - case 200 /* IfStatement */: + case 202 /* IfStatement */: if (n.elseStatement) { return isCompletedNode(n.elseStatement, sourceFile); } return isCompletedNode(n.thenStatement, sourceFile); - case 199 /* ExpressionStatement */: + case 201 /* ExpressionStatement */: return isCompletedNode(n.expression, sourceFile) || hasChildOfKind(n, 23 /* SemicolonToken */); - case 168 /* ArrayLiteralExpression */: - case 166 /* ArrayBindingPattern */: - case 171 /* ElementAccessExpression */: - case 138 /* ComputedPropertyName */: - case 159 /* TupleType */: + case 169 /* ArrayLiteralExpression */: + case 167 /* ArrayBindingPattern */: + case 172 /* ElementAccessExpression */: + case 139 /* ComputedPropertyName */: + case 160 /* TupleType */: return nodeEndsWith(n, 20 /* CloseBracketToken */, sourceFile); - case 151 /* IndexSignature */: + case 152 /* IndexSignature */: if (n.type) { return isCompletedNode(n.type, sourceFile); } return hasChildOfKind(n, 20 /* CloseBracketToken */, sourceFile); - case 245 /* CaseClause */: - case 246 /* DefaultClause */: - // there is no such thing as terminator token for CaseClause/DefaultClause so for simplicitly always consider them non-completed + case 248 /* CaseClause */: + case 249 /* DefaultClause */: + // there is no such thing as terminator token for CaseClause/DefaultClause so for simplicity always consider them non-completed return false; - case 203 /* ForStatement */: - case 204 /* ForInStatement */: - case 205 /* ForOfStatement */: - case 202 /* WhileStatement */: + case 205 /* ForStatement */: + case 206 /* ForInStatement */: + case 207 /* ForOfStatement */: + case 204 /* WhileStatement */: return isCompletedNode(n.statement, sourceFile); - case 201 /* DoStatement */: + case 203 /* DoStatement */: // rough approximation: if DoStatement has While keyword - then if node is completed is checking the presence of ')'; var hasWhileKeyword = findChildOfKind(n, 104 /* WhileKeyword */, sourceFile); if (hasWhileKeyword) { return nodeEndsWith(n, 18 /* CloseParenToken */, sourceFile); } return isCompletedNode(n.statement, sourceFile); - case 156 /* TypeQuery */: + case 157 /* TypeQuery */: return isCompletedNode(n.exprName, sourceFile); - case 180 /* TypeOfExpression */: - case 179 /* DeleteExpression */: - case 181 /* VoidExpression */: - case 188 /* YieldExpression */: - case 189 /* SpreadElementExpression */: + case 181 /* TypeOfExpression */: + case 180 /* DeleteExpression */: + case 182 /* VoidExpression */: + case 189 /* YieldExpression */: + case 190 /* SpreadElementExpression */: var unaryWordExpression = n; return isCompletedNode(unaryWordExpression.expression, sourceFile); - case 174 /* TaggedTemplateExpression */: + case 175 /* TaggedTemplateExpression */: return isCompletedNode(n.template, sourceFile); - case 187 /* TemplateExpression */: + case 188 /* TemplateExpression */: var lastSpan = ts.lastOrUndefined(n.templateSpans); return isCompletedNode(lastSpan, sourceFile); - case 194 /* TemplateSpan */: + case 196 /* TemplateSpan */: return ts.nodeIsPresent(n.literal); - case 183 /* PrefixUnaryExpression */: + case 184 /* PrefixUnaryExpression */: return isCompletedNode(n.operand, sourceFile); - case 185 /* BinaryExpression */: + case 186 /* BinaryExpression */: return isCompletedNode(n.right, sourceFile); - case 186 /* ConditionalExpression */: + case 187 /* ConditionalExpression */: return isCompletedNode(n.whenFalse, sourceFile); default: return true; @@ -43729,7 +45478,7 @@ var ts; // for the position of the relevant node (or comma). var syntaxList = ts.forEach(node.parent.getChildren(), function (c) { // find syntax list that covers the span of the node - if (c.kind === 275 /* SyntaxList */ && c.pos <= node.pos && c.end >= node.end) { + if (c.kind === 278 /* SyntaxList */ && c.pos <= node.pos && c.end >= node.end) { return c; } }); @@ -43746,7 +45495,7 @@ var ts; } ts.getTouchingWord = getTouchingWord; /* Gets the token whose text has range [start, end) and position >= start - * and (position < end or (position === end && token is keyword or identifier or numeric\string litera)) + * and (position < end or (position === end && token is keyword or identifier or numeric/string literal)) */ function getTouchingPropertyName(sourceFile, position) { return getTouchingToken(sourceFile, position, function (n) { return isPropertyName(n.kind); }); @@ -43835,7 +45584,7 @@ var ts; function findPrecedingToken(position, sourceFile, startNode) { return find(startNode || sourceFile); function findRightmostToken(n) { - if (isToken(n) || n.kind === 240 /* JsxText */) { + if (isToken(n) || n.kind === 243 /* JsxText */) { return n; } var children = n.getChildren(); @@ -43843,7 +45592,7 @@ var ts; return candidate && findRightmostToken(candidate); } function find(n) { - if (isToken(n) || n.kind === 240 /* JsxText */) { + if (isToken(n) || n.kind === 243 /* JsxText */) { return n; } var children = n.getChildren(); @@ -43857,10 +45606,10 @@ var ts; // if no - position is in the node itself so we should recurse in it. // NOTE: JsxText is a weird kind of node that can contain only whitespaces (since they are not counted as trivia). // if this is the case - then we should assume that token in question is located in previous child. - if (position < child.end && (nodeHasTokens(child) || child.kind === 240 /* JsxText */)) { + if (position < child.end && (nodeHasTokens(child) || child.kind === 243 /* JsxText */)) { var start = child.getStart(sourceFile); var lookInPreviousChild = (start >= position) || - (child.kind === 240 /* JsxText */ && start === child.end); // whitespace only JsxText + (child.kind === 243 /* JsxText */ && start === child.end); // whitespace only JsxText if (lookInPreviousChild) { // actual start of the node is past the position - previous token should be at the end of previous child var candidate = findRightmostChildNodeWithTokens(children, /*exclusiveStartPosition*/ i); @@ -43872,7 +45621,7 @@ var ts; } } } - ts.Debug.assert(startNode !== undefined || n.kind === 252 /* SourceFile */); + ts.Debug.assert(startNode !== undefined || n.kind === 255 /* SourceFile */); // Here we know that none of child token nodes embrace the position, // the only known case is when position is at the end of the file. // Try to find the rightmost token in the file without filtering. @@ -43894,7 +45643,7 @@ var ts; ts.findPrecedingToken = findPrecedingToken; function isInString(sourceFile, position) { var token = getTokenAtPosition(sourceFile, position); - return token && (token.kind === 9 /* StringLiteral */ || token.kind === 164 /* StringLiteralType */) && position > token.getStart(); + return token && (token.kind === 9 /* StringLiteral */ || token.kind === 165 /* StringLiteralType */) && position > token.getStart(); } ts.isInString = isInString; function isInComment(sourceFile, position) { @@ -43998,17 +45747,17 @@ var ts; } ts.getNodeModifiers = getNodeModifiers; function getTypeArgumentOrTypeParameterList(node) { - if (node.kind === 153 /* TypeReference */ || node.kind === 172 /* CallExpression */) { + if (node.kind === 154 /* TypeReference */ || node.kind === 173 /* CallExpression */) { return node.typeArguments; } - if (ts.isFunctionLike(node) || node.kind === 218 /* ClassDeclaration */ || node.kind === 219 /* InterfaceDeclaration */) { + if (ts.isFunctionLike(node) || node.kind === 220 /* ClassDeclaration */ || node.kind === 221 /* InterfaceDeclaration */) { return node.typeParameters; } return undefined; } ts.getTypeArgumentOrTypeParameterList = getTypeArgumentOrTypeParameterList; function isToken(n) { - return n.kind >= 0 /* FirstToken */ && n.kind <= 136 /* LastToken */; + return n.kind >= 0 /* FirstToken */ && n.kind <= 137 /* LastToken */; } ts.isToken = isToken; function isWord(kind) { @@ -44024,7 +45773,7 @@ var ts; ts.isComment = isComment; function isStringOrRegularExpressionOrTemplateLiteral(kind) { if (kind === 9 /* StringLiteral */ - || kind === 164 /* StringLiteralType */ + || kind === 165 /* StringLiteralType */ || kind === 10 /* RegularExpressionLiteral */ || ts.isTemplateLiteralKind(kind)) { return true; @@ -44068,18 +45817,18 @@ var ts; } ts.compareDataObjects = compareDataObjects; function isArrayLiteralOrObjectLiteralDestructuringPattern(node) { - if (node.kind === 168 /* ArrayLiteralExpression */ || - node.kind === 169 /* ObjectLiteralExpression */) { + if (node.kind === 169 /* ArrayLiteralExpression */ || + node.kind === 170 /* ObjectLiteralExpression */) { // [a,b,c] from: // [a, b, c] = someExpression; - if (node.parent.kind === 185 /* BinaryExpression */ && + if (node.parent.kind === 186 /* BinaryExpression */ && node.parent.left === node && node.parent.operatorToken.kind === 56 /* EqualsToken */) { return true; } // [a, b, c] from: // for([a, b, c] of expression) - if (node.parent.kind === 205 /* ForOfStatement */ && + if (node.parent.kind === 207 /* ForOfStatement */ && node.parent.initializer === node) { return true; } @@ -44087,7 +45836,7 @@ var ts; // [x, [a, b, c] ] = someExpression // or // {x, a: {a, b, c} } = someExpression - if (isArrayLiteralOrObjectLiteralDestructuringPattern(node.parent.kind === 249 /* PropertyAssignment */ ? node.parent.parent : node.parent)) { + if (isArrayLiteralOrObjectLiteralDestructuringPattern(node.parent.kind === 252 /* PropertyAssignment */ ? node.parent.parent : node.parent)) { return true; } } @@ -44100,7 +45849,7 @@ var ts; var ts; (function (ts) { function isFirstDeclarationOfSymbolParameter(symbol) { - return symbol.declarations && symbol.declarations.length > 0 && symbol.declarations[0].kind === 140 /* Parameter */; + return symbol.declarations && symbol.declarations.length > 0 && symbol.declarations[0].kind === 141 /* Parameter */; } ts.isFirstDeclarationOfSymbolParameter = isFirstDeclarationOfSymbolParameter; var displayPartWriter = getDisplayPartWriter(); @@ -44288,7 +46037,7 @@ var ts; ts.getDeclaredName = getDeclaredName; function isImportOrExportSpecifierName(location) { return location.parent && - (location.parent.kind === 230 /* ImportSpecifier */ || location.parent.kind === 234 /* ExportSpecifier */) && + (location.parent.kind === 233 /* ImportSpecifier */ || location.parent.kind === 237 /* ExportSpecifier */) && location.parent.propertyName === location; } ts.isImportOrExportSpecifierName = isImportOrExportSpecifierName; @@ -44308,6 +46057,213 @@ var ts; return name; } ts.stripQuotes = stripQuotes; + function scriptKindIs(fileName, host) { + var scriptKinds = []; + for (var _i = 2; _i < arguments.length; _i++) { + scriptKinds[_i - 2] = arguments[_i]; + } + var scriptKind = getScriptKind(fileName, host); + return ts.forEach(scriptKinds, function (k) { return k === scriptKind; }); + } + ts.scriptKindIs = scriptKindIs; + function getScriptKind(fileName, host) { + // First check to see if the script kind can be determined from the file name + var scriptKind = ts.getScriptKindFromFileName(fileName); + if (scriptKind === 0 /* Unknown */ && host && host.getScriptKind) { + // Next check to see if the host can resolve the script kind + scriptKind = host.getScriptKind(fileName); + } + return ts.ensureScriptKind(fileName, scriptKind); + } + ts.getScriptKind = getScriptKind; +})(ts || (ts = {})); +// Copyright (c) Microsoft. All rights reserved. Licensed under the Apache License, Version 2.0. +// See LICENSE.txt in the project root for complete license information. +/// +/* @internal */ +var ts; +(function (ts) { + var JsTyping; + (function (JsTyping) { + ; + ; + // A map of loose file names to library names + // that we are confident require typings + var safeList; + /** + * @param host is the object providing I/O related operations. + * @param fileNames are the file names that belong to the same project + * @param projectRootPath is the path to the project root directory + * @param safeListPath is the path used to retrieve the safe list + * @param packageNameToTypingLocation is the map of package names to their cached typing locations + * @param typingOptions are used to customize the typing inference process + * @param compilerOptions are used as a source for typing inference + */ + function discoverTypings(host, fileNames, projectRootPath, safeListPath, packageNameToTypingLocation, typingOptions, compilerOptions) { + // A typing name to typing file path mapping + var inferredTypings = {}; + if (!typingOptions || !typingOptions.enableAutoDiscovery) { + return { cachedTypingPaths: [], newTypingNames: [], filesToWatch: [] }; + } + // Only infer typings for .js and .jsx files + fileNames = ts.filter(ts.map(fileNames, ts.normalizePath), function (f) { return ts.scriptKindIs(f, /*LanguageServiceHost*/ undefined, 1 /* JS */, 2 /* JSX */); }); + if (!safeList) { + var result = ts.readConfigFile(safeListPath, function (path) { return host.readFile(path); }); + if (result.config) { + safeList = result.config; + } + else { + safeList = {}; + } + ; + } + var filesToWatch = []; + // Directories to search for package.json, bower.json and other typing information + var searchDirs = []; + var exclude = []; + mergeTypings(typingOptions.include); + exclude = typingOptions.exclude || []; + var possibleSearchDirs = ts.map(fileNames, ts.getDirectoryPath); + if (projectRootPath !== undefined) { + possibleSearchDirs.push(projectRootPath); + } + searchDirs = ts.deduplicate(possibleSearchDirs); + for (var _i = 0, searchDirs_1 = searchDirs; _i < searchDirs_1.length; _i++) { + var searchDir = searchDirs_1[_i]; + var packageJsonPath = ts.combinePaths(searchDir, "package.json"); + getTypingNamesFromJson(packageJsonPath, filesToWatch); + var bowerJsonPath = ts.combinePaths(searchDir, "bower.json"); + getTypingNamesFromJson(bowerJsonPath, filesToWatch); + var nodeModulesPath = ts.combinePaths(searchDir, "node_modules"); + getTypingNamesFromNodeModuleFolder(nodeModulesPath); + } + getTypingNamesFromSourceFileNames(fileNames); + // Add the cached typing locations for inferred typings that are already installed + for (var name_37 in packageNameToTypingLocation) { + if (ts.hasProperty(inferredTypings, name_37) && !inferredTypings[name_37]) { + inferredTypings[name_37] = packageNameToTypingLocation[name_37]; + } + } + // Remove typings that the user has added to the exclude list + for (var _a = 0, exclude_1 = exclude; _a < exclude_1.length; _a++) { + var excludeTypingName = exclude_1[_a]; + delete inferredTypings[excludeTypingName]; + } + var newTypingNames = []; + var cachedTypingPaths = []; + for (var typing in inferredTypings) { + if (inferredTypings[typing] !== undefined) { + cachedTypingPaths.push(inferredTypings[typing]); + } + else { + newTypingNames.push(typing); + } + } + return { cachedTypingPaths: cachedTypingPaths, newTypingNames: newTypingNames, filesToWatch: filesToWatch }; + /** + * Merge a given list of typingNames to the inferredTypings map + */ + function mergeTypings(typingNames) { + if (!typingNames) { + return; + } + for (var _i = 0, typingNames_1 = typingNames; _i < typingNames_1.length; _i++) { + var typing = typingNames_1[_i]; + if (!ts.hasProperty(inferredTypings, typing)) { + inferredTypings[typing] = undefined; + } + } + } + /** + * Get the typing info from common package manager json files like package.json or bower.json + */ + function getTypingNamesFromJson(jsonPath, filesToWatch) { + var result = ts.readConfigFile(jsonPath, function (path) { return host.readFile(path); }); + if (result.config) { + var jsonConfig = result.config; + filesToWatch.push(jsonPath); + if (jsonConfig.dependencies) { + mergeTypings(ts.getKeys(jsonConfig.dependencies)); + } + if (jsonConfig.devDependencies) { + mergeTypings(ts.getKeys(jsonConfig.devDependencies)); + } + if (jsonConfig.optionalDependencies) { + mergeTypings(ts.getKeys(jsonConfig.optionalDependencies)); + } + if (jsonConfig.peerDependencies) { + mergeTypings(ts.getKeys(jsonConfig.peerDependencies)); + } + } + } + /** + * Infer typing names from given file names. For example, the file name "jquery-min.2.3.4.js" + * should be inferred to the 'jquery' typing name; and "angular-route.1.2.3.js" should be inferred + * to the 'angular-route' typing name. + * @param fileNames are the names for source files in the project + */ + function getTypingNamesFromSourceFileNames(fileNames) { + var jsFileNames = ts.filter(fileNames, ts.hasJavaScriptFileExtension); + var inferredTypingNames = ts.map(jsFileNames, function (f) { return ts.removeFileExtension(ts.getBaseFileName(f.toLowerCase())); }); + var cleanedTypingNames = ts.map(inferredTypingNames, function (f) { return f.replace(/((?:\.|-)min(?=\.|$))|((?:-|\.)\d+)/g, ""); }); + if (safeList === undefined) { + mergeTypings(cleanedTypingNames); + } + else { + mergeTypings(ts.filter(cleanedTypingNames, function (f) { return ts.hasProperty(safeList, f); })); + } + var hasJsxFile = ts.forEach(fileNames, function (f) { return ts.scriptKindIs(f, /*LanguageServiceHost*/ undefined, 2 /* JSX */); }); + if (hasJsxFile) { + mergeTypings(["react"]); + } + } + /** + * Infer typing names from node_module folder + * @param nodeModulesPath is the path to the "node_modules" folder + */ + function getTypingNamesFromNodeModuleFolder(nodeModulesPath) { + // Todo: add support for ModuleResolutionHost too + if (!host.directoryExists(nodeModulesPath)) { + return; + } + var typingNames = []; + var fileNames = host.readDirectory(nodeModulesPath, "*.json", /*exclude*/ undefined, /*depth*/ 2); + for (var _i = 0, fileNames_1 = fileNames; _i < fileNames_1.length; _i++) { + var fileName = fileNames_1[_i]; + var normalizedFileName = ts.normalizePath(fileName); + if (ts.getBaseFileName(normalizedFileName) !== "package.json") { + continue; + } + var result = ts.readConfigFile(normalizedFileName, function (path) { return host.readFile(path); }); + if (!result.config) { + continue; + } + var packageJson = result.config; + // npm 3's package.json contains a "_requiredBy" field + // we should include all the top level module names for npm 2, and only module names whose + // "_requiredBy" field starts with "#" or equals "/" for npm 3. + if (packageJson._requiredBy && + ts.filter(packageJson._requiredBy, function (r) { return r[0] === "#" || r === "/"; }).length === 0) { + continue; + } + // If the package has its own d.ts typings, those will take precedence. Otherwise the package name will be used + // to download d.ts files from DefinitelyTyped + if (!packageJson.name) { + continue; + } + if (packageJson.typings) { + var absolutePath = ts.getNormalizedAbsolutePath(packageJson.typings, ts.getDirectoryPath(normalizedFileName)); + inferredTypings[packageJson.name] = absolutePath; + } + else { + typingNames.push(packageJson.name); + } + } + mergeTypings(typingNames); + } + } + JsTyping.discoverTypings = discoverTypings; + })(JsTyping = ts.JsTyping || (ts.JsTyping = {})); })(ts || (ts = {})); /// /// @@ -44411,10 +46367,10 @@ var ts; function shouldRescanJsxIdentifier(node) { if (node.parent) { switch (node.parent.kind) { - case 242 /* JsxAttribute */: - case 239 /* JsxOpeningElement */: - case 241 /* JsxClosingElement */: - case 238 /* JsxSelfClosingElement */: + case 245 /* JsxAttribute */: + case 242 /* JsxOpeningElement */: + case 244 /* JsxClosingElement */: + case 241 /* JsxSelfClosingElement */: return node.kind === 69 /* Identifier */; } } @@ -44455,7 +46411,7 @@ var ts; // readTokenInfo was called before with the same expected scan action. // No need to re-scan text, return existing 'lastTokenInfo' // it is ok to call fixTokenKind here since it does not affect - // what portion of text is consumed. In opposize rescanning can change it, + // what portion of text is consumed. In contrast rescanning can change it, // i.e. for '>=' when originally scanner eats just one character // and rescanning forces it to consume more. return fixTokenKind(lastTokenInfo, n); @@ -45018,9 +46974,9 @@ var ts; } Rules.prototype.getRuleName = function (rule) { var o = this; - for (var name_33 in o) { - if (o[name_33] === rule) { - return name_33; + for (var name_38 in o) { + if (o[name_38] === rule) { + return name_38; } } throw new Error("Unknown rule"); @@ -45029,40 +46985,40 @@ var ts; /// Contexts /// Rules.IsForContext = function (context) { - return context.contextNode.kind === 203 /* ForStatement */; + return context.contextNode.kind === 205 /* ForStatement */; }; Rules.IsNotForContext = function (context) { return !Rules.IsForContext(context); }; Rules.IsBinaryOpContext = function (context) { switch (context.contextNode.kind) { - case 185 /* BinaryExpression */: - case 186 /* ConditionalExpression */: - case 193 /* AsExpression */: - case 152 /* TypePredicate */: - case 160 /* UnionType */: - case 161 /* IntersectionType */: + case 186 /* BinaryExpression */: + case 187 /* ConditionalExpression */: + case 194 /* AsExpression */: + case 153 /* TypePredicate */: + case 161 /* UnionType */: + case 162 /* IntersectionType */: return true; // equals in binding elements: function foo([[x, y] = [1, 2]]) - case 167 /* BindingElement */: + case 168 /* BindingElement */: // equals in type X = ... - case 220 /* TypeAliasDeclaration */: + case 222 /* TypeAliasDeclaration */: // equal in import a = module('a'); - case 225 /* ImportEqualsDeclaration */: + case 228 /* ImportEqualsDeclaration */: // equal in let a = 0; - case 215 /* VariableDeclaration */: + case 217 /* VariableDeclaration */: // equal in p = 0; - case 140 /* Parameter */: - case 251 /* EnumMember */: - case 143 /* PropertyDeclaration */: - case 142 /* PropertySignature */: + case 141 /* Parameter */: + case 254 /* EnumMember */: + case 144 /* PropertyDeclaration */: + case 143 /* PropertySignature */: return context.currentTokenSpan.kind === 56 /* EqualsToken */ || context.nextTokenSpan.kind === 56 /* EqualsToken */; // "in" keyword in for (let x in []) { } - case 204 /* ForInStatement */: + case 206 /* ForInStatement */: return context.currentTokenSpan.kind === 90 /* InKeyword */ || context.nextTokenSpan.kind === 90 /* InKeyword */; // Technically, "of" is not a binary operator, but format it the same way as "in" - case 205 /* ForOfStatement */: - return context.currentTokenSpan.kind === 136 /* OfKeyword */ || context.nextTokenSpan.kind === 136 /* OfKeyword */; + case 207 /* ForOfStatement */: + return context.currentTokenSpan.kind === 137 /* OfKeyword */ || context.nextTokenSpan.kind === 137 /* OfKeyword */; } return false; }; @@ -45070,7 +47026,7 @@ var ts; return !Rules.IsBinaryOpContext(context); }; Rules.IsConditionalOperatorContext = function (context) { - return context.contextNode.kind === 186 /* ConditionalExpression */; + return context.contextNode.kind === 187 /* ConditionalExpression */; }; Rules.IsSameLineTokenOrBeforeMultilineBlockContext = function (context) { //// This check is mainly used inside SpaceBeforeOpenBraceInControl and SpaceBeforeOpenBraceInFunction. @@ -45082,13 +47038,13 @@ var ts; //// Ex: //// if (1) //// { ... } - //// * ) and { are on differnet lines. We only need to format if the block is multiline context. So in this case we don't format. + //// * ) and { are on different lines. We only need to format if the block is multiline context. So in this case we don't format. //// //// Ex: //// if (1) //// { ... //// } - //// * ) and { are on differnet lines. We only need to format if the block is multiline context. So in this case we format. + //// * ) and { are on different lines. We only need to format if the block is multiline context. So in this case we format. return context.TokensAreOnSameLine() || Rules.IsBeforeMultilineBlockContext(context); }; // This check is done before an open brace in a control construct, a function, or a typescript block declaration @@ -45114,93 +47070,93 @@ var ts; return true; } switch (node.kind) { - case 196 /* Block */: - case 224 /* CaseBlock */: - case 169 /* ObjectLiteralExpression */: - case 223 /* ModuleBlock */: + case 198 /* Block */: + case 226 /* CaseBlock */: + case 170 /* ObjectLiteralExpression */: + case 225 /* ModuleBlock */: return true; } return false; }; Rules.IsFunctionDeclContext = function (context) { switch (context.contextNode.kind) { - case 217 /* FunctionDeclaration */: - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: + case 219 /* FunctionDeclaration */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: //case SyntaxKind.MemberFunctionDeclaration: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: ///case SyntaxKind.MethodSignature: - case 149 /* CallSignature */: - case 177 /* FunctionExpression */: - case 146 /* Constructor */: - case 178 /* ArrowFunction */: + case 150 /* CallSignature */: + case 178 /* FunctionExpression */: + case 147 /* Constructor */: + case 179 /* ArrowFunction */: //case SyntaxKind.ConstructorDeclaration: //case SyntaxKind.SimpleArrowFunctionExpression: //case SyntaxKind.ParenthesizedArrowFunctionExpression: - case 219 /* InterfaceDeclaration */: + case 221 /* InterfaceDeclaration */: return true; } return false; }; Rules.IsFunctionDeclarationOrFunctionExpressionContext = function (context) { - return context.contextNode.kind === 217 /* FunctionDeclaration */ || context.contextNode.kind === 177 /* FunctionExpression */; + return context.contextNode.kind === 219 /* FunctionDeclaration */ || context.contextNode.kind === 178 /* FunctionExpression */; }; Rules.IsTypeScriptDeclWithBlockContext = function (context) { return Rules.NodeIsTypeScriptDeclWithBlockContext(context.contextNode); }; Rules.NodeIsTypeScriptDeclWithBlockContext = function (node) { switch (node.kind) { - case 218 /* ClassDeclaration */: - case 190 /* ClassExpression */: - case 219 /* InterfaceDeclaration */: - case 221 /* EnumDeclaration */: - case 157 /* TypeLiteral */: - case 222 /* ModuleDeclaration */: + case 220 /* ClassDeclaration */: + case 191 /* ClassExpression */: + case 221 /* InterfaceDeclaration */: + case 223 /* EnumDeclaration */: + case 158 /* TypeLiteral */: + case 224 /* ModuleDeclaration */: return true; } return false; }; Rules.IsAfterCodeBlockContext = function (context) { switch (context.currentTokenParent.kind) { - case 218 /* ClassDeclaration */: - case 222 /* ModuleDeclaration */: - case 221 /* EnumDeclaration */: - case 196 /* Block */: - case 248 /* CatchClause */: - case 223 /* ModuleBlock */: - case 210 /* SwitchStatement */: + case 220 /* ClassDeclaration */: + case 224 /* ModuleDeclaration */: + case 223 /* EnumDeclaration */: + case 198 /* Block */: + case 251 /* CatchClause */: + case 225 /* ModuleBlock */: + case 212 /* SwitchStatement */: return true; } return false; }; Rules.IsControlDeclContext = function (context) { switch (context.contextNode.kind) { - case 200 /* IfStatement */: - case 210 /* SwitchStatement */: - case 203 /* ForStatement */: - case 204 /* ForInStatement */: - case 205 /* ForOfStatement */: - case 202 /* WhileStatement */: - case 213 /* TryStatement */: - case 201 /* DoStatement */: - case 209 /* WithStatement */: + case 202 /* IfStatement */: + case 212 /* SwitchStatement */: + case 205 /* ForStatement */: + case 206 /* ForInStatement */: + case 207 /* ForOfStatement */: + case 204 /* WhileStatement */: + case 215 /* TryStatement */: + case 203 /* DoStatement */: + case 211 /* WithStatement */: // TODO // case SyntaxKind.ElseClause: - case 248 /* CatchClause */: + case 251 /* CatchClause */: return true; default: return false; } }; Rules.IsObjectContext = function (context) { - return context.contextNode.kind === 169 /* ObjectLiteralExpression */; + return context.contextNode.kind === 170 /* ObjectLiteralExpression */; }; Rules.IsFunctionCallContext = function (context) { - return context.contextNode.kind === 172 /* CallExpression */; + return context.contextNode.kind === 173 /* CallExpression */; }; Rules.IsNewContext = function (context) { - return context.contextNode.kind === 173 /* NewExpression */; + return context.contextNode.kind === 174 /* NewExpression */; }; Rules.IsFunctionCallOrNewContext = function (context) { return Rules.IsFunctionCallContext(context) || Rules.IsNewContext(context); @@ -45212,10 +47168,10 @@ var ts; return context.nextTokenSpan.kind !== 20 /* CloseBracketToken */; }; Rules.IsArrowFunctionContext = function (context) { - return context.contextNode.kind === 178 /* ArrowFunction */; + return context.contextNode.kind === 179 /* ArrowFunction */; }; Rules.IsNonJsxSameLineTokenContext = function (context) { - return context.TokensAreOnSameLine() && context.contextNode.kind !== 240 /* JsxText */; + return context.TokensAreOnSameLine() && context.contextNode.kind !== 243 /* JsxText */; }; Rules.IsNotBeforeBlockInFunctionDeclarationContext = function (context) { return !Rules.IsFunctionDeclContext(context) && !Rules.IsBeforeBlockContext(context); @@ -45230,41 +47186,41 @@ var ts; while (ts.isExpression(node)) { node = node.parent; } - return node.kind === 141 /* Decorator */; + return node.kind === 142 /* Decorator */; }; Rules.IsStartOfVariableDeclarationList = function (context) { - return context.currentTokenParent.kind === 216 /* VariableDeclarationList */ && + return context.currentTokenParent.kind === 218 /* VariableDeclarationList */ && context.currentTokenParent.getStart(context.sourceFile) === context.currentTokenSpan.pos; }; Rules.IsNotFormatOnEnter = function (context) { return context.formattingRequestKind !== 2 /* FormatOnEnter */; }; Rules.IsModuleDeclContext = function (context) { - return context.contextNode.kind === 222 /* ModuleDeclaration */; + return context.contextNode.kind === 224 /* ModuleDeclaration */; }; Rules.IsObjectTypeContext = function (context) { - return context.contextNode.kind === 157 /* TypeLiteral */; // && context.contextNode.parent.kind !== SyntaxKind.InterfaceDeclaration; + return context.contextNode.kind === 158 /* TypeLiteral */; // && context.contextNode.parent.kind !== SyntaxKind.InterfaceDeclaration; }; Rules.IsTypeArgumentOrParameterOrAssertion = function (token, parent) { if (token.kind !== 25 /* LessThanToken */ && token.kind !== 27 /* GreaterThanToken */) { return false; } switch (parent.kind) { - case 153 /* TypeReference */: - case 175 /* TypeAssertionExpression */: - case 218 /* ClassDeclaration */: - case 190 /* ClassExpression */: - case 219 /* InterfaceDeclaration */: - case 217 /* FunctionDeclaration */: - case 177 /* FunctionExpression */: - case 178 /* ArrowFunction */: - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: - case 149 /* CallSignature */: - case 150 /* ConstructSignature */: - case 172 /* CallExpression */: - case 173 /* NewExpression */: - case 192 /* ExpressionWithTypeArguments */: + case 154 /* TypeReference */: + case 176 /* TypeAssertionExpression */: + case 220 /* ClassDeclaration */: + case 191 /* ClassExpression */: + case 221 /* InterfaceDeclaration */: + case 219 /* FunctionDeclaration */: + case 178 /* FunctionExpression */: + case 179 /* ArrowFunction */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: + case 150 /* CallSignature */: + case 151 /* ConstructSignature */: + case 173 /* CallExpression */: + case 174 /* NewExpression */: + case 193 /* ExpressionWithTypeArguments */: return true; default: return false; @@ -45275,13 +47231,13 @@ var ts; Rules.IsTypeArgumentOrParameterOrAssertion(context.nextTokenSpan, context.nextTokenParent); }; Rules.IsTypeAssertionContext = function (context) { - return context.contextNode.kind === 175 /* TypeAssertionExpression */; + return context.contextNode.kind === 176 /* TypeAssertionExpression */; }; Rules.IsVoidOpContext = function (context) { - return context.currentTokenSpan.kind === 103 /* VoidKeyword */ && context.currentTokenParent.kind === 181 /* VoidExpression */; + return context.currentTokenSpan.kind === 103 /* VoidKeyword */ && context.currentTokenParent.kind === 182 /* VoidExpression */; }; Rules.IsYieldOrYieldStarWithOperand = function (context) { - return context.contextNode.kind === 188 /* YieldExpression */ && context.contextNode.expression !== undefined; + return context.contextNode.kind === 189 /* YieldExpression */ && context.contextNode.expression !== undefined; }; return Rules; }()); @@ -45305,7 +47261,7 @@ var ts; return result; }; RulesMap.prototype.Initialize = function (rules) { - this.mapRowLength = 136 /* LastToken */ + 1; + this.mapRowLength = 137 /* LastToken */ + 1; this.map = new Array(this.mapRowLength * this.mapRowLength); //new Array(this.mapRowLength * this.mapRowLength); // This array is used only during construction of the rulesbucket in the map var rulesBucketConstructionStateList = new Array(this.map.length); //new Array(this.map.length); @@ -45500,7 +47456,7 @@ var ts; } TokenAllAccess.prototype.GetTokens = function () { var result = []; - for (var token = 0 /* FirstToken */; token <= 136 /* LastToken */; token++) { + for (var token = 0 /* FirstToken */; token <= 137 /* LastToken */; token++) { result.push(token); } return result; @@ -45542,9 +47498,9 @@ var ts; }; TokenRange.Any = TokenRange.AllTokens(); TokenRange.AnyIncludingMultilineComments = TokenRange.FromTokens(TokenRange.Any.GetTokens().concat([3 /* MultiLineCommentTrivia */])); - TokenRange.Keywords = TokenRange.FromRange(70 /* FirstKeyword */, 136 /* LastKeyword */); + TokenRange.Keywords = TokenRange.FromRange(70 /* FirstKeyword */, 137 /* LastKeyword */); TokenRange.BinaryOperators = TokenRange.FromRange(25 /* FirstBinaryOperator */, 68 /* LastBinaryOperator */); - TokenRange.BinaryKeywordOperators = TokenRange.FromTokens([90 /* InKeyword */, 91 /* InstanceOfKeyword */, 136 /* OfKeyword */, 116 /* AsKeyword */, 124 /* IsKeyword */]); + TokenRange.BinaryKeywordOperators = TokenRange.FromTokens([90 /* InKeyword */, 91 /* InstanceOfKeyword */, 137 /* OfKeyword */, 116 /* AsKeyword */, 124 /* IsKeyword */]); TokenRange.UnaryPrefixOperators = TokenRange.FromTokens([41 /* PlusPlusToken */, 42 /* MinusMinusToken */, 50 /* TildeToken */, 49 /* ExclamationToken */]); TokenRange.UnaryPrefixExpressions = TokenRange.FromTokens([8 /* NumericLiteral */, 69 /* Identifier */, 17 /* OpenParenToken */, 19 /* OpenBracketToken */, 15 /* OpenBraceToken */, 97 /* ThisKeyword */, 92 /* NewKeyword */]); TokenRange.UnaryPreincrementExpressions = TokenRange.FromTokens([69 /* Identifier */, 17 /* OpenParenToken */, 97 /* ThisKeyword */, 92 /* NewKeyword */]); @@ -45695,12 +47651,20 @@ var ts; if (line === 0) { return []; } - // get the span for the previous\current line + // After the enter key, the cursor is now at a new line. The new line may or may not contain non-whitespace characters. + // If the new line has only whitespaces, we won't want to format this line, because that would remove the indentation as + // trailing whitespaces. So the end of the formatting span should be the later one between: + // 1. the end of the previous line + // 2. the last non-whitespace character in the current line + var endOfFormatSpan = ts.getEndLinePosition(line, sourceFile); + while (ts.isWhiteSpace(sourceFile.text.charCodeAt(endOfFormatSpan)) && !ts.isLineBreak(sourceFile.text.charCodeAt(endOfFormatSpan))) { + endOfFormatSpan--; + } var span = { // get start position for the previous line pos: ts.getStartPositionOfLine(line - 1, sourceFile), - // get end position for the current line (end value is exclusive so add 1 to the result) - end: ts.getEndLinePosition(line, sourceFile) + 1 + // end value is exclusive so add 1 to the result + end: endOfFormatSpan + 1 }; return formatSpan(span, sourceFile, options, rulesProvider, 2 /* FormatOnEnter */); } @@ -45774,17 +47738,17 @@ var ts; // i.e. parent is class declaration with the list of members and node is one of members. function isListElement(parent, node) { switch (parent.kind) { - case 218 /* ClassDeclaration */: - case 219 /* InterfaceDeclaration */: + case 220 /* ClassDeclaration */: + case 221 /* InterfaceDeclaration */: return ts.rangeContainsRange(parent.members, node); - case 222 /* ModuleDeclaration */: + case 224 /* ModuleDeclaration */: var body = parent.body; - return body && body.kind === 196 /* Block */ && ts.rangeContainsRange(body.statements, node); - case 252 /* SourceFile */: - case 196 /* Block */: - case 223 /* ModuleBlock */: + return body && body.kind === 198 /* Block */ && ts.rangeContainsRange(body.statements, node); + case 255 /* SourceFile */: + case 198 /* Block */: + case 225 /* ModuleBlock */: return ts.rangeContainsRange(parent.statements, node); - case 248 /* CatchClause */: + case 251 /* CatchClause */: return ts.rangeContainsRange(parent.block.statements, node); } return false; @@ -45858,7 +47822,7 @@ var ts; // no preceding token found - start from the beginning of enclosing node return enclosingNode.pos; } - // preceding token ends after the start of original range (i.e when originaRange.pos falls in the middle of literal) + // preceding token ends after the start of original range (i.e when originalRange.pos falls in the middle of literal) // start from the beginning of enclosingNode to handle the entire 'originalRange' if (precedingToken.end >= originalRange.pos) { return enclosingNode.pos; @@ -45986,19 +47950,19 @@ var ts; return node.modifiers[0].kind; } switch (node.kind) { - case 218 /* ClassDeclaration */: return 73 /* ClassKeyword */; - case 219 /* InterfaceDeclaration */: return 107 /* InterfaceKeyword */; - case 217 /* FunctionDeclaration */: return 87 /* FunctionKeyword */; - case 221 /* EnumDeclaration */: return 221 /* EnumDeclaration */; - case 147 /* GetAccessor */: return 123 /* GetKeyword */; - case 148 /* SetAccessor */: return 130 /* SetKeyword */; - case 145 /* MethodDeclaration */: + case 220 /* ClassDeclaration */: return 73 /* ClassKeyword */; + case 221 /* InterfaceDeclaration */: return 107 /* InterfaceKeyword */; + case 219 /* FunctionDeclaration */: return 87 /* FunctionKeyword */; + case 223 /* EnumDeclaration */: return 223 /* EnumDeclaration */; + case 148 /* GetAccessor */: return 123 /* GetKeyword */; + case 149 /* SetAccessor */: return 130 /* SetKeyword */; + case 146 /* MethodDeclaration */: if (node.asteriskToken) { return 37 /* AsteriskToken */; } // fall-through - case 143 /* PropertyDeclaration */: - case 140 /* Parameter */: + case 144 /* PropertyDeclaration */: + case 141 /* Parameter */: return node.name.kind; } } @@ -46138,7 +48102,7 @@ var ts; consumeTokenAndAdvanceScanner(tokenInfo, node, parentDynamicIndentation, child); return inheritedIndentation; } - var effectiveParentStartLine = child.kind === 141 /* Decorator */ ? childStartLine : undecoratedParentStartLine; + var effectiveParentStartLine = child.kind === 142 /* Decorator */ ? childStartLine : undecoratedParentStartLine; var childIndentation = computeIndentation(child, childStartLine, childIndentationAmount, node, parentDynamicIndentation, effectiveParentStartLine); processNode(child, childContextNode, childStartLine, undecoratedChildStartLine, childIndentation.indentation, childIndentation.delta); childContextNode = node; @@ -46171,8 +48135,8 @@ var ts; } } var inheritedIndentation = -1 /* Unknown */; - for (var _i = 0, nodes_6 = nodes; _i < nodes_6.length; _i++) { - var child = nodes_6[_i]; + for (var _i = 0, nodes_7 = nodes; _i < nodes_7.length; _i++) { + var child = nodes_7[_i]; inheritedIndentation = processChildNode(child, inheritedIndentation, node, listDynamicIndentation, startLine, startLine, /*isListElement*/ true); } if (listEndToken !== 0 /* Unknown */) { @@ -46482,20 +48446,20 @@ var ts; } function isSomeBlock(kind) { switch (kind) { - case 196 /* Block */: - case 223 /* ModuleBlock */: + case 198 /* Block */: + case 225 /* ModuleBlock */: return true; } return false; } function getOpenTokenForList(node, list) { switch (node.kind) { - case 146 /* Constructor */: - case 217 /* FunctionDeclaration */: - case 177 /* FunctionExpression */: - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: - case 178 /* ArrowFunction */: + case 147 /* Constructor */: + case 219 /* FunctionDeclaration */: + case 178 /* FunctionExpression */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: + case 179 /* ArrowFunction */: if (node.typeParameters === list) { return 25 /* LessThanToken */; } @@ -46503,8 +48467,8 @@ var ts; return 17 /* OpenParenToken */; } break; - case 172 /* CallExpression */: - case 173 /* NewExpression */: + case 173 /* CallExpression */: + case 174 /* NewExpression */: if (node.typeArguments === list) { return 25 /* LessThanToken */; } @@ -46512,7 +48476,7 @@ var ts; return 17 /* OpenParenToken */; } break; - case 153 /* TypeReference */: + case 154 /* TypeReference */: if (node.typeArguments === list) { return 25 /* LessThanToken */; } @@ -46628,7 +48592,7 @@ var ts; var lineStart = ts.getLineStartPositionForPosition(current_1, sourceFile); return SmartIndenter.findFirstNonWhitespaceColumn(lineStart, current_1, sourceFile, options); } - if (precedingToken.kind === 24 /* CommaToken */ && precedingToken.parent.kind !== 185 /* BinaryExpression */) { + if (precedingToken.kind === 24 /* CommaToken */ && precedingToken.parent.kind !== 186 /* BinaryExpression */) { // previous token is comma that separates items in list - find the previous item and try to derive indentation from it var actualIndentation = getActualIndentationForListItemBeforeComma(precedingToken, sourceFile, options); if (actualIndentation !== -1 /* Unknown */) { @@ -46747,7 +48711,7 @@ var ts; // - parent is SourceFile - by default immediate children of SourceFile are not indented except when user indents them manually // - parent and child are not on the same line var useActualIndentation = (ts.isDeclaration(current) || ts.isStatement(current)) && - (parent.kind === 252 /* SourceFile */ || !parentAndChildShareLine); + (parent.kind === 255 /* SourceFile */ || !parentAndChildShareLine); if (!useActualIndentation) { return -1 /* Unknown */; } @@ -46780,7 +48744,7 @@ var ts; return sourceFile.getLineAndCharacterOfPosition(n.getStart(sourceFile)); } function childStartsOnTheSameLineWithElseInIfStatement(parent, child, childStartLine, sourceFile) { - if (parent.kind === 200 /* IfStatement */ && parent.elseStatement === child) { + if (parent.kind === 202 /* IfStatement */ && parent.elseStatement === child) { var elseKeyword = ts.findChildOfKind(parent, 80 /* ElseKeyword */, sourceFile); ts.Debug.assert(elseKeyword !== undefined); var elseKeywordStartLine = getStartLineAndCharacterForNode(elseKeyword, sourceFile).line; @@ -46792,23 +48756,23 @@ var ts; function getContainingList(node, sourceFile) { if (node.parent) { switch (node.parent.kind) { - case 153 /* TypeReference */: + case 154 /* TypeReference */: if (node.parent.typeArguments && ts.rangeContainsStartEnd(node.parent.typeArguments, node.getStart(sourceFile), node.getEnd())) { return node.parent.typeArguments; } break; - case 169 /* ObjectLiteralExpression */: + case 170 /* ObjectLiteralExpression */: return node.parent.properties; - case 168 /* ArrayLiteralExpression */: + case 169 /* ArrayLiteralExpression */: return node.parent.elements; - case 217 /* FunctionDeclaration */: - case 177 /* FunctionExpression */: - case 178 /* ArrowFunction */: - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: - case 149 /* CallSignature */: - case 150 /* ConstructSignature */: { + case 219 /* FunctionDeclaration */: + case 178 /* FunctionExpression */: + case 179 /* ArrowFunction */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: + case 150 /* CallSignature */: + case 151 /* ConstructSignature */: { var start = node.getStart(sourceFile); if (node.parent.typeParameters && ts.rangeContainsStartEnd(node.parent.typeParameters, start, node.getEnd())) { @@ -46819,8 +48783,8 @@ var ts; } break; } - case 173 /* NewExpression */: - case 172 /* CallExpression */: { + case 174 /* NewExpression */: + case 173 /* CallExpression */: { var start = node.getStart(sourceFile); if (node.parent.typeArguments && ts.rangeContainsStartEnd(node.parent.typeArguments, start, node.getEnd())) { @@ -46850,8 +48814,8 @@ var ts; if (node.kind === 18 /* CloseParenToken */) { return -1 /* Unknown */; } - if (node.parent && (node.parent.kind === 172 /* CallExpression */ || - node.parent.kind === 173 /* NewExpression */) && + if (node.parent && (node.parent.kind === 173 /* CallExpression */ || + node.parent.kind === 174 /* NewExpression */) && node.parent.expression !== node) { var fullCallOrNewExpression = node.parent.expression; var startingExpression = getStartingExpression(fullCallOrNewExpression); @@ -46869,10 +48833,10 @@ var ts; function getStartingExpression(node) { while (true) { switch (node.kind) { - case 172 /* CallExpression */: - case 173 /* NewExpression */: - case 170 /* PropertyAccessExpression */: - case 171 /* ElementAccessExpression */: + case 173 /* CallExpression */: + case 174 /* NewExpression */: + case 171 /* PropertyAccessExpression */: + case 172 /* ElementAccessExpression */: node = node.expression; break; default: @@ -46936,45 +48900,45 @@ var ts; SmartIndenter.findFirstNonWhitespaceColumn = findFirstNonWhitespaceColumn; function nodeContentIsAlwaysIndented(kind) { switch (kind) { - case 199 /* ExpressionStatement */: - case 218 /* ClassDeclaration */: - case 190 /* ClassExpression */: - case 219 /* InterfaceDeclaration */: - case 221 /* EnumDeclaration */: - case 220 /* TypeAliasDeclaration */: - case 168 /* ArrayLiteralExpression */: - case 196 /* Block */: - case 223 /* ModuleBlock */: - case 169 /* ObjectLiteralExpression */: - case 157 /* TypeLiteral */: - case 159 /* TupleType */: - case 224 /* CaseBlock */: - case 246 /* DefaultClause */: - case 245 /* CaseClause */: - case 176 /* ParenthesizedExpression */: - case 170 /* PropertyAccessExpression */: - case 172 /* CallExpression */: - case 173 /* NewExpression */: - case 197 /* VariableStatement */: - case 215 /* VariableDeclaration */: - case 231 /* ExportAssignment */: - case 208 /* ReturnStatement */: - case 186 /* ConditionalExpression */: - case 166 /* ArrayBindingPattern */: - case 165 /* ObjectBindingPattern */: - case 239 /* JsxOpeningElement */: - case 238 /* JsxSelfClosingElement */: - case 244 /* JsxExpression */: - case 144 /* MethodSignature */: - case 149 /* CallSignature */: - case 150 /* ConstructSignature */: - case 140 /* Parameter */: - case 154 /* FunctionType */: - case 155 /* ConstructorType */: - case 162 /* ParenthesizedType */: - case 174 /* TaggedTemplateExpression */: - case 182 /* AwaitExpression */: - case 229 /* NamedImports */: + case 201 /* ExpressionStatement */: + case 220 /* ClassDeclaration */: + case 191 /* ClassExpression */: + case 221 /* InterfaceDeclaration */: + case 223 /* EnumDeclaration */: + case 222 /* TypeAliasDeclaration */: + case 169 /* ArrayLiteralExpression */: + case 198 /* Block */: + case 225 /* ModuleBlock */: + case 170 /* ObjectLiteralExpression */: + case 158 /* TypeLiteral */: + case 160 /* TupleType */: + case 226 /* CaseBlock */: + case 249 /* DefaultClause */: + case 248 /* CaseClause */: + case 177 /* ParenthesizedExpression */: + case 171 /* PropertyAccessExpression */: + case 173 /* CallExpression */: + case 174 /* NewExpression */: + case 199 /* VariableStatement */: + case 217 /* VariableDeclaration */: + case 234 /* ExportAssignment */: + case 210 /* ReturnStatement */: + case 187 /* ConditionalExpression */: + case 167 /* ArrayBindingPattern */: + case 166 /* ObjectBindingPattern */: + case 242 /* JsxOpeningElement */: + case 241 /* JsxSelfClosingElement */: + case 247 /* JsxExpression */: + case 145 /* MethodSignature */: + case 150 /* CallSignature */: + case 151 /* ConstructSignature */: + case 141 /* Parameter */: + case 155 /* FunctionType */: + case 156 /* ConstructorType */: + case 163 /* ParenthesizedType */: + case 175 /* TaggedTemplateExpression */: + case 183 /* AwaitExpression */: + case 232 /* NamedImports */: return true; } return false; @@ -46983,22 +48947,22 @@ var ts; function nodeWillIndentChild(parent, child, indentByDefault) { var childKind = child ? child.kind : 0 /* Unknown */; switch (parent.kind) { - case 201 /* DoStatement */: - case 202 /* WhileStatement */: - case 204 /* ForInStatement */: - case 205 /* ForOfStatement */: - case 203 /* ForStatement */: - case 200 /* IfStatement */: - case 217 /* FunctionDeclaration */: - case 177 /* FunctionExpression */: - case 145 /* MethodDeclaration */: - case 178 /* ArrowFunction */: - case 146 /* Constructor */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: - return childKind !== 196 /* Block */; - case 237 /* JsxElement */: - return childKind !== 241 /* JsxClosingElement */; + case 203 /* DoStatement */: + case 204 /* WhileStatement */: + case 206 /* ForInStatement */: + case 207 /* ForOfStatement */: + case 205 /* ForStatement */: + case 202 /* IfStatement */: + case 219 /* FunctionDeclaration */: + case 178 /* FunctionExpression */: + case 146 /* MethodDeclaration */: + case 179 /* ArrowFunction */: + case 147 /* Constructor */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: + return childKind !== 198 /* Block */; + case 240 /* JsxElement */: + return childKind !== 244 /* JsxClosingElement */; } // No explicit rule for given nodes so the result will follow the default value argument return indentByDefault; @@ -47022,6 +48986,7 @@ var ts; /// /// /// +/// /// /// var ts; @@ -47145,11 +49110,11 @@ var ts; return pos; }; NodeObject.prototype.createSyntaxList = function (nodes) { - var list = createNode(275 /* SyntaxList */, nodes.pos, nodes.end, 0, this); + var list = createNode(278 /* SyntaxList */, nodes.pos, nodes.end, 0, this); list._children = []; var pos = nodes.pos; - for (var _i = 0, nodes_7 = nodes; _i < nodes_7.length; _i++) { - var node = nodes_7[_i]; + for (var _i = 0, nodes_8 = nodes; _i < nodes_8.length; _i++) { + var node = nodes_8[_i]; if (pos < node.pos) { pos = this.addSyntheticNodes(list._children, pos, node.pos); } @@ -47164,7 +49129,7 @@ var ts; NodeObject.prototype.createChildren = function (sourceFile) { var _this = this; var children; - if (this.kind >= 137 /* FirstNode */) { + if (this.kind >= 138 /* FirstNode */) { scanner.setText((sourceFile || this.getSourceFile()).text); children = []; var pos_3 = this.pos; @@ -47211,7 +49176,7 @@ var ts; return undefined; } var child = children[0]; - return child.kind < 137 /* FirstNode */ ? child : child.getFirstToken(sourceFile); + return child.kind < 138 /* FirstNode */ ? child : child.getFirstToken(sourceFile); }; NodeObject.prototype.getLastToken = function (sourceFile) { var children = this.getChildren(sourceFile); @@ -47219,7 +49184,7 @@ var ts; if (!child) { return undefined; } - return child.kind < 137 /* FirstNode */ ? child : child.getLastToken(sourceFile); + return child.kind < 138 /* FirstNode */ ? child : child.getLastToken(sourceFile); }; return NodeObject; }()); @@ -47268,7 +49233,7 @@ var ts; if (ts.indexOf(declarations, declaration) === indexOfDeclaration) { var sourceFileOfDeclaration_1 = ts.getSourceFileOfNode(declaration); // If it is parameter - try and get the jsDoc comment with @param tag from function declaration's jsDoc comments - if (canUseParsedParamTagComments && declaration.kind === 140 /* Parameter */) { + if (canUseParsedParamTagComments && declaration.kind === 141 /* Parameter */) { ts.forEach(getJsDocCommentTextRange(declaration.parent, sourceFileOfDeclaration_1), function (jsDocCommentTextRange) { var cleanedParamJsDocComment = getCleanedParamJsDocComment(jsDocCommentTextRange.pos, jsDocCommentTextRange.end, sourceFileOfDeclaration_1); if (cleanedParamJsDocComment) { @@ -47277,15 +49242,15 @@ var ts; }); } // If this is left side of dotted module declaration, there is no doc comments associated with this node - if (declaration.kind === 222 /* ModuleDeclaration */ && declaration.body.kind === 222 /* ModuleDeclaration */) { + if (declaration.kind === 224 /* ModuleDeclaration */ && declaration.body.kind === 224 /* ModuleDeclaration */) { return; } // If this is dotted module name, get the doc comments from the parent - while (declaration.kind === 222 /* ModuleDeclaration */ && declaration.parent.kind === 222 /* ModuleDeclaration */) { + while (declaration.kind === 224 /* ModuleDeclaration */ && declaration.parent.kind === 224 /* ModuleDeclaration */) { declaration = declaration.parent; } // Get the cleaned js doc comment text from the declaration - ts.forEach(getJsDocCommentTextRange(declaration.kind === 215 /* VariableDeclaration */ ? declaration.parent.parent : declaration, sourceFileOfDeclaration_1), function (jsDocCommentTextRange) { + ts.forEach(getJsDocCommentTextRange(declaration.kind === 217 /* VariableDeclaration */ ? declaration.parent.parent : declaration, sourceFileOfDeclaration_1), function (jsDocCommentTextRange) { var cleanedJsDocComment = getCleanedJsDocComment(jsDocCommentTextRange.pos, jsDocCommentTextRange.end, sourceFileOfDeclaration_1); if (cleanedJsDocComment) { ts.addRange(jsDocCommentParts, cleanedJsDocComment); @@ -47630,9 +49595,9 @@ var ts; if (result_2 !== undefined) { return result_2; } - if (declaration.name.kind === 138 /* ComputedPropertyName */) { + if (declaration.name.kind === 139 /* ComputedPropertyName */) { var expr = declaration.name.expression; - if (expr.kind === 170 /* PropertyAccessExpression */) { + if (expr.kind === 171 /* PropertyAccessExpression */) { return expr.name.text; } return getTextOfIdentifierOrLiteral(expr); @@ -47652,9 +49617,9 @@ var ts; } function visit(node) { switch (node.kind) { - case 217 /* FunctionDeclaration */: - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: + case 219 /* FunctionDeclaration */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: var functionDeclaration = node; var declarationName = getDeclarationName(functionDeclaration); if (declarationName) { @@ -47674,60 +49639,60 @@ var ts; ts.forEachChild(node, visit); } break; - case 218 /* ClassDeclaration */: - case 219 /* InterfaceDeclaration */: - case 220 /* TypeAliasDeclaration */: - case 221 /* EnumDeclaration */: - case 222 /* ModuleDeclaration */: - case 225 /* ImportEqualsDeclaration */: - case 234 /* ExportSpecifier */: - case 230 /* ImportSpecifier */: - case 225 /* ImportEqualsDeclaration */: - case 227 /* ImportClause */: - case 228 /* NamespaceImport */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: - case 157 /* TypeLiteral */: + case 220 /* ClassDeclaration */: + case 221 /* InterfaceDeclaration */: + case 222 /* TypeAliasDeclaration */: + case 223 /* EnumDeclaration */: + case 224 /* ModuleDeclaration */: + case 228 /* ImportEqualsDeclaration */: + case 237 /* ExportSpecifier */: + case 233 /* ImportSpecifier */: + case 228 /* ImportEqualsDeclaration */: + case 230 /* ImportClause */: + case 231 /* NamespaceImport */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: + case 158 /* TypeLiteral */: addDeclaration(node); // fall through - case 146 /* Constructor */: - case 197 /* VariableStatement */: - case 216 /* VariableDeclarationList */: - case 165 /* ObjectBindingPattern */: - case 166 /* ArrayBindingPattern */: - case 223 /* ModuleBlock */: + case 147 /* Constructor */: + case 199 /* VariableStatement */: + case 218 /* VariableDeclarationList */: + case 166 /* ObjectBindingPattern */: + case 167 /* ArrayBindingPattern */: + case 225 /* ModuleBlock */: ts.forEachChild(node, visit); break; - case 196 /* Block */: + case 198 /* Block */: if (ts.isFunctionBlock(node)) { ts.forEachChild(node, visit); } break; - case 140 /* Parameter */: + case 141 /* Parameter */: // Only consider properties defined as constructor parameters if (!(node.flags & 28 /* AccessibilityModifier */)) { break; } // fall through - case 215 /* VariableDeclaration */: - case 167 /* BindingElement */: + case 217 /* VariableDeclaration */: + case 168 /* BindingElement */: if (ts.isBindingPattern(node.name)) { ts.forEachChild(node.name, visit); break; } - case 251 /* EnumMember */: - case 143 /* PropertyDeclaration */: - case 142 /* PropertySignature */: + case 254 /* EnumMember */: + case 144 /* PropertyDeclaration */: + case 143 /* PropertySignature */: addDeclaration(node); break; - case 232 /* ExportDeclaration */: + case 235 /* ExportDeclaration */: // Handle named exports case e.g.: // export {a, b as B} from "mod"; if (node.exportClause) { ts.forEach(node.exportClause.elements, visit); } break; - case 226 /* ImportDeclaration */: + case 229 /* ImportDeclaration */: var importClause = node.importClause; if (importClause) { // Handle default import case e.g.: @@ -47739,7 +49704,7 @@ var ts; // import * as NS from "mod"; // import {a, b as B} from "mod"; if (importClause.namedBindings) { - if (importClause.namedBindings.kind === 228 /* NamespaceImport */) { + if (importClause.namedBindings.kind === 231 /* NamespaceImport */) { addDeclaration(importClause.namedBindings); } else { @@ -47961,16 +49926,16 @@ var ts; } return ts.forEach(symbol.declarations, function (declaration) { // Function expressions are local - if (declaration.kind === 177 /* FunctionExpression */) { + if (declaration.kind === 178 /* FunctionExpression */) { return true; } - if (declaration.kind !== 215 /* VariableDeclaration */ && declaration.kind !== 217 /* FunctionDeclaration */) { + if (declaration.kind !== 217 /* VariableDeclaration */ && declaration.kind !== 219 /* FunctionDeclaration */) { return false; } // If the parent is not sourceFile or module block it is local variable - for (var parent_10 = declaration.parent; !ts.isFunctionBlock(parent_10); parent_10 = parent_10.parent) { + for (var parent_12 = declaration.parent; !ts.isFunctionBlock(parent_12); parent_12 = parent_12.parent) { // Reached source file or module block - if (parent_10.kind === 252 /* SourceFile */ || parent_10.kind === 223 /* ModuleBlock */) { + if (parent_12.kind === 255 /* SourceFile */ || parent_12.kind === 225 /* ModuleBlock */) { return false; } } @@ -48010,14 +49975,13 @@ var ts; }; HostCache.prototype.createEntry = function (fileName, path) { var entry; - var scriptKind = this.host.getScriptKind ? this.host.getScriptKind(fileName) : 0 /* Unknown */; var scriptSnapshot = this.host.getScriptSnapshot(fileName); if (scriptSnapshot) { entry = { hostFileName: fileName, version: this.host.getScriptVersion(fileName), scriptSnapshot: scriptSnapshot, - scriptKind: scriptKind ? scriptKind : ts.getScriptKindFromFileName(fileName) + scriptKind: ts.getScriptKind(fileName, this.host) }; } this.fileNameToEntry.set(path, entry); @@ -48065,7 +50029,7 @@ var ts; // The host does not know about this file. throw new Error("Could not find file: '" + fileName + "'."); } - var scriptKind = this.host.getScriptKind ? this.host.getScriptKind(fileName) : 0 /* Unknown */; + var scriptKind = ts.getScriptKind(fileName, this.host); var version = this.host.getScriptVersion(fileName); var sourceFile; if (this.currentFileName !== fileName) { @@ -48326,9 +50290,24 @@ var ts; if (readImportFiles === void 0) { readImportFiles = true; } if (detectJavaScriptImports === void 0) { detectJavaScriptImports = false; } var referencedFiles = []; + var typeReferenceDirectives = []; var importedFiles = []; var ambientExternalModules; var isNoDefaultLib = false; + var braceNesting = 0; + // assume that text represent an external module if it contains at least one top level import/export + // ambient modules that are found inside external modules are interpreted as module augmentations + var externalModule = false; + function nextToken() { + var token = scanner.scan(); + if (token === 15 /* OpenBraceToken */) { + braceNesting++; + } + else if (token === 16 /* CloseBraceToken */) { + braceNesting--; + } + return token; + } function processTripleSlashDirectives() { var commentRanges = ts.getLeadingCommentRanges(sourceText, 0); ts.forEach(commentRanges, function (commentRange) { @@ -48338,25 +50317,37 @@ var ts; isNoDefaultLib = referencePathMatchResult.isNoDefaultLib; var fileReference = referencePathMatchResult.fileReference; if (fileReference) { - referencedFiles.push(fileReference); + var collection = referencePathMatchResult.isTypeReferenceDirective + ? typeReferenceDirectives + : referencedFiles; + collection.push(fileReference); } } }); } + function getFileReference() { + var file = scanner.getTokenValue(); + var pos = scanner.getTokenPos(); + return { + fileName: file, + pos: pos, + end: pos + file.length + }; + } function recordAmbientExternalModule() { if (!ambientExternalModules) { ambientExternalModules = []; } - ambientExternalModules.push(scanner.getTokenValue()); + ambientExternalModules.push({ ref: getFileReference(), depth: braceNesting }); } function recordModuleName() { - var importPath = scanner.getTokenValue(); - var pos = scanner.getTokenPos(); - importedFiles.push({ - fileName: importPath, - pos: pos, - end: pos + importPath.length - }); + importedFiles.push(getFileReference()); + markAsExternalModuleIfTopLevel(); + } + function markAsExternalModuleIfTopLevel() { + if (braceNesting === 0) { + externalModule = true; + } } /** * Returns true if at least one token was consumed from the stream @@ -48365,9 +50356,9 @@ var ts; var token = scanner.getToken(); if (token === 122 /* DeclareKeyword */) { // declare module "mod" - token = scanner.scan(); + token = nextToken(); if (token === 125 /* ModuleKeyword */) { - token = scanner.scan(); + token = nextToken(); if (token === 9 /* StringLiteral */) { recordAmbientExternalModule(); } @@ -48382,7 +50373,7 @@ var ts; function tryConsumeImport() { var token = scanner.getToken(); if (token === 89 /* ImportKeyword */) { - token = scanner.scan(); + token = nextToken(); if (token === 9 /* StringLiteral */) { // import "mod"; recordModuleName(); @@ -48390,9 +50381,9 @@ var ts; } else { if (token === 69 /* Identifier */ || ts.isKeyword(token)) { - token = scanner.scan(); - if (token === 134 /* FromKeyword */) { - token = scanner.scan(); + token = nextToken(); + if (token === 135 /* FromKeyword */) { + token = nextToken(); if (token === 9 /* StringLiteral */) { // import d from "mod"; recordModuleName(); @@ -48406,7 +50397,7 @@ var ts; } else if (token === 24 /* CommaToken */) { // consume comma and keep going - token = scanner.scan(); + token = nextToken(); } else { // unknown syntax @@ -48414,16 +50405,16 @@ var ts; } } if (token === 15 /* OpenBraceToken */) { - token = scanner.scan(); + token = nextToken(); // consume "{ a as B, c, d as D}" clauses // make sure that it stops on EOF while (token !== 16 /* CloseBraceToken */ && token !== 1 /* EndOfFileToken */) { - token = scanner.scan(); + token = nextToken(); } if (token === 16 /* CloseBraceToken */) { - token = scanner.scan(); - if (token === 134 /* FromKeyword */) { - token = scanner.scan(); + token = nextToken(); + if (token === 135 /* FromKeyword */) { + token = nextToken(); if (token === 9 /* StringLiteral */) { // import {a as A} from "mod"; // import d, {a, b as B} from "mod" @@ -48433,13 +50424,13 @@ var ts; } } else if (token === 37 /* AsteriskToken */) { - token = scanner.scan(); + token = nextToken(); if (token === 116 /* AsKeyword */) { - token = scanner.scan(); + token = nextToken(); if (token === 69 /* Identifier */ || ts.isKeyword(token)) { - token = scanner.scan(); - if (token === 134 /* FromKeyword */) { - token = scanner.scan(); + token = nextToken(); + if (token === 135 /* FromKeyword */) { + token = nextToken(); if (token === 9 /* StringLiteral */) { // import * as NS from "mod" // import d, * as NS from "mod" @@ -48457,18 +50448,19 @@ var ts; function tryConsumeExport() { var token = scanner.getToken(); if (token === 82 /* ExportKeyword */) { - token = scanner.scan(); + markAsExternalModuleIfTopLevel(); + token = nextToken(); if (token === 15 /* OpenBraceToken */) { - token = scanner.scan(); + token = nextToken(); // consume "{ a as B, c, d as D}" clauses // make sure it stops on EOF while (token !== 16 /* CloseBraceToken */ && token !== 1 /* EndOfFileToken */) { - token = scanner.scan(); + token = nextToken(); } if (token === 16 /* CloseBraceToken */) { - token = scanner.scan(); - if (token === 134 /* FromKeyword */) { - token = scanner.scan(); + token = nextToken(); + if (token === 135 /* FromKeyword */) { + token = nextToken(); if (token === 9 /* StringLiteral */) { // export {a as A} from "mod"; // export {a, b as B} from "mod" @@ -48478,9 +50470,9 @@ var ts; } } else if (token === 37 /* AsteriskToken */) { - token = scanner.scan(); - if (token === 134 /* FromKeyword */) { - token = scanner.scan(); + token = nextToken(); + if (token === 135 /* FromKeyword */) { + token = nextToken(); if (token === 9 /* StringLiteral */) { // export * from "mod" recordModuleName(); @@ -48488,9 +50480,9 @@ var ts; } } else if (token === 89 /* ImportKeyword */) { - token = scanner.scan(); + token = nextToken(); if (token === 69 /* Identifier */ || ts.isKeyword(token)) { - token = scanner.scan(); + token = nextToken(); if (token === 56 /* EqualsToken */) { if (tryConsumeRequireCall(/*skipCurrentToken*/ true)) { return true; @@ -48503,11 +50495,11 @@ var ts; return false; } function tryConsumeRequireCall(skipCurrentToken) { - var token = skipCurrentToken ? scanner.scan() : scanner.getToken(); + var token = skipCurrentToken ? nextToken() : scanner.getToken(); if (token === 128 /* RequireKeyword */) { - token = scanner.scan(); + token = nextToken(); if (token === 17 /* OpenParenToken */) { - token = scanner.scan(); + token = nextToken(); if (token === 9 /* StringLiteral */) { // require("mod"); recordModuleName(); @@ -48520,16 +50512,16 @@ var ts; function tryConsumeDefine() { var token = scanner.getToken(); if (token === 69 /* Identifier */ && scanner.getTokenValue() === "define") { - token = scanner.scan(); + token = nextToken(); if (token !== 17 /* OpenParenToken */) { return true; } - token = scanner.scan(); + token = nextToken(); if (token === 9 /* StringLiteral */) { // looks like define ("modname", ... - skip string literal and comma - token = scanner.scan(); + token = nextToken(); if (token === 24 /* CommaToken */) { - token = scanner.scan(); + token = nextToken(); } else { // unexpected token @@ -48541,7 +50533,7 @@ var ts; return true; } // skip open bracket - token = scanner.scan(); + token = nextToken(); var i = 0; // scan until ']' or EOF while (token !== 20 /* CloseBracketToken */ && token !== 1 /* EndOfFileToken */) { @@ -48550,7 +50542,7 @@ var ts; recordModuleName(); i++; } - token = scanner.scan(); + token = nextToken(); } return true; } @@ -48558,7 +50550,7 @@ var ts; } function processImports() { scanner.setText(sourceText); - scanner.scan(); + nextToken(); // Look for: // import "mod"; // import d from "mod" @@ -48583,7 +50575,7 @@ var ts; continue; } else { - scanner.scan(); + nextToken(); } } scanner.setText(undefined); @@ -48592,13 +50584,42 @@ var ts; processImports(); } processTripleSlashDirectives(); - return { referencedFiles: referencedFiles, importedFiles: importedFiles, isLibFile: isNoDefaultLib, ambientExternalModules: ambientExternalModules }; + if (externalModule) { + // for external modules module all nested ambient modules are augmentations + if (ambientExternalModules) { + // move all detected ambient modules to imported files since they need to be resolved + for (var _i = 0, ambientExternalModules_1 = ambientExternalModules; _i < ambientExternalModules_1.length; _i++) { + var decl = ambientExternalModules_1[_i]; + importedFiles.push(decl.ref); + } + } + return { referencedFiles: referencedFiles, typeReferenceDirectives: typeReferenceDirectives, importedFiles: importedFiles, isLibFile: isNoDefaultLib, ambientExternalModules: undefined }; + } + else { + // for global scripts ambient modules still can have augmentations - look for ambient modules with depth > 0 + var ambientModuleNames = void 0; + if (ambientExternalModules) { + for (var _a = 0, ambientExternalModules_2 = ambientExternalModules; _a < ambientExternalModules_2.length; _a++) { + var decl = ambientExternalModules_2[_a]; + if (decl.depth === 0) { + if (!ambientModuleNames) { + ambientModuleNames = []; + } + ambientModuleNames.push(decl.ref.fileName); + } + else { + importedFiles.push(decl.ref); + } + } + } + return { referencedFiles: referencedFiles, typeReferenceDirectives: typeReferenceDirectives, importedFiles: importedFiles, isLibFile: isNoDefaultLib, ambientExternalModules: ambientModuleNames }; + } } ts.preProcessFile = preProcessFile; /// Helpers function getTargetLabel(referenceNode, labelName) { while (referenceNode) { - if (referenceNode.kind === 211 /* LabeledStatement */ && referenceNode.label.text === labelName) { + if (referenceNode.kind === 213 /* LabeledStatement */ && referenceNode.label.text === labelName) { return referenceNode.label; } referenceNode = referenceNode.parent; @@ -48607,12 +50628,12 @@ var ts; } function isJumpStatementTarget(node) { return node.kind === 69 /* Identifier */ && - (node.parent.kind === 207 /* BreakStatement */ || node.parent.kind === 206 /* ContinueStatement */) && + (node.parent.kind === 209 /* BreakStatement */ || node.parent.kind === 208 /* ContinueStatement */) && node.parent.label === node; } function isLabelOfLabeledStatement(node) { return node.kind === 69 /* Identifier */ && - node.parent.kind === 211 /* LabeledStatement */ && + node.parent.kind === 213 /* LabeledStatement */ && node.parent.label === node; } /** @@ -48620,7 +50641,7 @@ var ts; * Note: 'node' cannot be a SourceFile. */ function isLabeledBy(node, labelName) { - for (var owner = node.parent; owner.kind === 211 /* LabeledStatement */; owner = owner.parent) { + for (var owner = node.parent; owner.kind === 213 /* LabeledStatement */; owner = owner.parent) { if (owner.label.text === labelName) { return true; } @@ -48631,25 +50652,25 @@ var ts; return isLabelOfLabeledStatement(node) || isJumpStatementTarget(node); } function isRightSideOfQualifiedName(node) { - return node.parent.kind === 137 /* QualifiedName */ && node.parent.right === node; + return node.parent.kind === 138 /* QualifiedName */ && node.parent.right === node; } function isRightSideOfPropertyAccess(node) { - return node && node.parent && node.parent.kind === 170 /* PropertyAccessExpression */ && node.parent.name === node; + return node && node.parent && node.parent.kind === 171 /* PropertyAccessExpression */ && node.parent.name === node; } function isCallExpressionTarget(node) { if (isRightSideOfPropertyAccess(node)) { node = node.parent; } - return node && node.parent && node.parent.kind === 172 /* CallExpression */ && node.parent.expression === node; + return node && node.parent && node.parent.kind === 173 /* CallExpression */ && node.parent.expression === node; } function isNewExpressionTarget(node) { if (isRightSideOfPropertyAccess(node)) { node = node.parent; } - return node && node.parent && node.parent.kind === 173 /* NewExpression */ && node.parent.expression === node; + return node && node.parent && node.parent.kind === 174 /* NewExpression */ && node.parent.expression === node; } function isNameOfModuleDeclaration(node) { - return node.parent.kind === 222 /* ModuleDeclaration */ && node.parent.name === node; + return node.parent.kind === 224 /* ModuleDeclaration */ && node.parent.name === node; } function isNameOfFunctionDeclaration(node) { return node.kind === 69 /* Identifier */ && @@ -48658,22 +50679,22 @@ var ts; /** Returns true if node is a name of an object literal property, e.g. "a" in x = { "a": 1 } */ function isNameOfPropertyAssignment(node) { return (node.kind === 69 /* Identifier */ || node.kind === 9 /* StringLiteral */ || node.kind === 8 /* NumericLiteral */) && - (node.parent.kind === 249 /* PropertyAssignment */ || node.parent.kind === 250 /* ShorthandPropertyAssignment */) && node.parent.name === node; + (node.parent.kind === 252 /* PropertyAssignment */ || node.parent.kind === 253 /* ShorthandPropertyAssignment */) && node.parent.name === node; } function isLiteralNameOfPropertyDeclarationOrIndexAccess(node) { if (node.kind === 9 /* StringLiteral */ || node.kind === 8 /* NumericLiteral */) { switch (node.parent.kind) { - case 143 /* PropertyDeclaration */: - case 142 /* PropertySignature */: - case 249 /* PropertyAssignment */: - case 251 /* EnumMember */: - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: - case 222 /* ModuleDeclaration */: + case 144 /* PropertyDeclaration */: + case 143 /* PropertySignature */: + case 252 /* PropertyAssignment */: + case 254 /* EnumMember */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: + case 224 /* ModuleDeclaration */: return node.parent.name === node; - case 171 /* ElementAccessExpression */: + case 172 /* ElementAccessExpression */: return node.parent.argumentExpression === node; } } @@ -48732,7 +50753,7 @@ var ts; })(BreakContinueSearchType || (BreakContinueSearchType = {})); // A cache of completion entries for keywords, these do not change between sessions var keywordCompletions = []; - for (var i = 70 /* FirstKeyword */; i <= 136 /* LastKeyword */; i++) { + for (var i = 70 /* FirstKeyword */; i <= 137 /* LastKeyword */; i++) { keywordCompletions.push({ name: ts.tokenToString(i), kind: ScriptElementKind.keyword, @@ -48747,17 +50768,17 @@ var ts; return undefined; } switch (node.kind) { - case 252 /* SourceFile */: - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: - case 217 /* FunctionDeclaration */: - case 177 /* FunctionExpression */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: - case 218 /* ClassDeclaration */: - case 219 /* InterfaceDeclaration */: - case 221 /* EnumDeclaration */: - case 222 /* ModuleDeclaration */: + case 255 /* SourceFile */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: + case 219 /* FunctionDeclaration */: + case 178 /* FunctionExpression */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: + case 220 /* ClassDeclaration */: + case 221 /* InterfaceDeclaration */: + case 223 /* EnumDeclaration */: + case 224 /* ModuleDeclaration */: return node; } } @@ -48765,38 +50786,38 @@ var ts; ts.getContainerNode = getContainerNode; /* @internal */ function getNodeKind(node) { switch (node.kind) { - case 222 /* ModuleDeclaration */: return ScriptElementKind.moduleElement; - case 218 /* ClassDeclaration */: return ScriptElementKind.classElement; - case 219 /* InterfaceDeclaration */: return ScriptElementKind.interfaceElement; - case 220 /* TypeAliasDeclaration */: return ScriptElementKind.typeElement; - case 221 /* EnumDeclaration */: return ScriptElementKind.enumElement; - case 215 /* VariableDeclaration */: + case 224 /* ModuleDeclaration */: return ScriptElementKind.moduleElement; + case 220 /* ClassDeclaration */: return ScriptElementKind.classElement; + case 221 /* InterfaceDeclaration */: return ScriptElementKind.interfaceElement; + case 222 /* TypeAliasDeclaration */: return ScriptElementKind.typeElement; + case 223 /* EnumDeclaration */: return ScriptElementKind.enumElement; + case 217 /* VariableDeclaration */: return ts.isConst(node) ? ScriptElementKind.constElement : ts.isLet(node) ? ScriptElementKind.letElement : ScriptElementKind.variableElement; - case 217 /* FunctionDeclaration */: return ScriptElementKind.functionElement; - case 147 /* GetAccessor */: return ScriptElementKind.memberGetAccessorElement; - case 148 /* SetAccessor */: return ScriptElementKind.memberSetAccessorElement; - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: + case 219 /* FunctionDeclaration */: return ScriptElementKind.functionElement; + case 148 /* GetAccessor */: return ScriptElementKind.memberGetAccessorElement; + case 149 /* SetAccessor */: return ScriptElementKind.memberSetAccessorElement; + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: return ScriptElementKind.memberFunctionElement; - case 143 /* PropertyDeclaration */: - case 142 /* PropertySignature */: + case 144 /* PropertyDeclaration */: + case 143 /* PropertySignature */: return ScriptElementKind.memberVariableElement; - case 151 /* IndexSignature */: return ScriptElementKind.indexSignatureElement; - case 150 /* ConstructSignature */: return ScriptElementKind.constructSignatureElement; - case 149 /* CallSignature */: return ScriptElementKind.callSignatureElement; - case 146 /* Constructor */: return ScriptElementKind.constructorImplementationElement; - case 139 /* TypeParameter */: return ScriptElementKind.typeParameterElement; - case 251 /* EnumMember */: return ScriptElementKind.variableElement; - case 140 /* Parameter */: return (node.flags & 28 /* AccessibilityModifier */) ? ScriptElementKind.memberVariableElement : ScriptElementKind.parameterElement; - case 225 /* ImportEqualsDeclaration */: - case 230 /* ImportSpecifier */: - case 227 /* ImportClause */: - case 234 /* ExportSpecifier */: - case 228 /* NamespaceImport */: + case 152 /* IndexSignature */: return ScriptElementKind.indexSignatureElement; + case 151 /* ConstructSignature */: return ScriptElementKind.constructSignatureElement; + case 150 /* CallSignature */: return ScriptElementKind.callSignatureElement; + case 147 /* Constructor */: return ScriptElementKind.constructorImplementationElement; + case 140 /* TypeParameter */: return ScriptElementKind.typeParameterElement; + case 254 /* EnumMember */: return ScriptElementKind.variableElement; + case 141 /* Parameter */: return (node.flags & 28 /* AccessibilityModifier */) ? ScriptElementKind.memberVariableElement : ScriptElementKind.parameterElement; + case 228 /* ImportEqualsDeclaration */: + case 233 /* ImportSpecifier */: + case 230 /* ImportClause */: + case 237 /* ExportSpecifier */: + case 231 /* NamespaceImport */: return ScriptElementKind.alias; } return ScriptElementKind.unknown; @@ -48892,7 +50913,7 @@ var ts; getCurrentDirectory: function () { return currentDirectory; }, fileExists: function (fileName) { // stub missing host functionality - ts.Debug.assert(!host.resolveModuleNames); + ts.Debug.assert(!host.resolveModuleNames || !host.resolveTypeReferenceDirectives); return hostCache.getOrCreateEntry(fileName) !== undefined; }, readFile: function (fileName) { @@ -48901,7 +50922,7 @@ var ts; return entry && entry.scriptSnapshot.getText(0, entry.scriptSnapshot.getLength()); }, directoryExists: function (directoryName) { - ts.Debug.assert(!host.resolveModuleNames); + ts.Debug.assert(!host.resolveModuleNames || !host.resolveTypeReferenceDirectives); return ts.directoryProbablyExists(directoryName, host); } }; @@ -48911,6 +50932,11 @@ var ts; if (host.resolveModuleNames) { compilerHost.resolveModuleNames = function (moduleNames, containingFile) { return host.resolveModuleNames(moduleNames, containingFile); }; } + if (host.resolveTypeReferenceDirectives) { + compilerHost.resolveTypeReferenceDirectives = function (typeReferenceDirectiveNames, containingFile) { + return host.resolveTypeReferenceDirectives(typeReferenceDirectiveNames, containingFile); + }; + } var newProgram = ts.createProgram(hostCache.getRootFileNames(), newSettings, compilerHost, program); // Release any files we have acquired in the old program but are // not part of the new program. @@ -49115,9 +51141,9 @@ var ts; isJsDocTagName = true; } switch (tag.kind) { - case 273 /* JSDocTypeTag */: - case 271 /* JSDocParameterTag */: - case 272 /* JSDocReturnTag */: + case 276 /* JSDocTypeTag */: + case 274 /* JSDocParameterTag */: + case 275 /* JSDocReturnTag */: var tagWithExpression = tag; if (tagWithExpression.typeExpression) { insideJsDocTagExpression = tagWithExpression.typeExpression.pos < position && position < tagWithExpression.typeExpression.end; @@ -49162,13 +51188,13 @@ var ts; log("Returning an empty list because completion was requested in an invalid position."); return undefined; } - var parent_11 = contextToken.parent, kind = contextToken.kind; + var parent_13 = contextToken.parent, kind = contextToken.kind; if (kind === 21 /* DotToken */) { - if (parent_11.kind === 170 /* PropertyAccessExpression */) { + if (parent_13.kind === 171 /* PropertyAccessExpression */) { node = contextToken.parent.expression; isRightOfDot = true; } - else if (parent_11.kind === 137 /* QualifiedName */) { + else if (parent_13.kind === 138 /* QualifiedName */) { node = contextToken.parent.left; isRightOfDot = true; } @@ -49183,7 +51209,7 @@ var ts; isRightOfOpenTag = true; location = contextToken; } - else if (kind === 39 /* SlashToken */ && contextToken.parent.kind === 241 /* JsxClosingElement */) { + else if (kind === 39 /* SlashToken */ && contextToken.parent.kind === 244 /* JsxClosingElement */) { isStartingCloseTag = true; location = contextToken; } @@ -49199,7 +51225,7 @@ var ts; else if (isRightOfOpenTag) { var tagSymbols = typeChecker.getJsxIntrinsicTagNames(); if (tryGetGlobalSymbols()) { - symbols = tagSymbols.concat(symbols.filter(function (s) { return !!(s.flags & 107455 /* Value */); })); + symbols = tagSymbols.concat(symbols.filter(function (s) { return !!(s.flags & (107455 /* Value */ | 8388608 /* Alias */)); })); } else { symbols = tagSymbols; @@ -49230,7 +51256,7 @@ var ts; // Right of dot member completion list isMemberCompletion = true; isNewIdentifierLocation = false; - if (node.kind === 69 /* Identifier */ || node.kind === 137 /* QualifiedName */ || node.kind === 170 /* PropertyAccessExpression */) { + if (node.kind === 69 /* Identifier */ || node.kind === 138 /* QualifiedName */ || node.kind === 171 /* PropertyAccessExpression */) { var symbol = typeChecker.getSymbolAtLocation(node); // This is an alias, follow what it aliases if (symbol && symbol.flags & 8388608 /* Alias */) { @@ -49286,7 +51312,7 @@ var ts; } if (jsxContainer = tryGetContainingJsxElement(contextToken)) { var attrsType = void 0; - if ((jsxContainer.kind === 238 /* JsxSelfClosingElement */) || (jsxContainer.kind === 239 /* JsxOpeningElement */)) { + if ((jsxContainer.kind === 241 /* JsxSelfClosingElement */) || (jsxContainer.kind === 242 /* JsxOpeningElement */)) { // Cursor is inside a JSX self-closing element or opening element attrsType = typeChecker.getJsxElementAttributesType(jsxContainer); if (attrsType) { @@ -49358,15 +51384,15 @@ var ts; return result; } function isInJsxText(contextToken) { - if (contextToken.kind === 240 /* JsxText */) { + if (contextToken.kind === 243 /* JsxText */) { return true; } if (contextToken.kind === 27 /* GreaterThanToken */ && contextToken.parent) { - if (contextToken.parent.kind === 239 /* JsxOpeningElement */) { + if (contextToken.parent.kind === 242 /* JsxOpeningElement */) { return true; } - if (contextToken.parent.kind === 241 /* JsxClosingElement */ || contextToken.parent.kind === 238 /* JsxSelfClosingElement */) { - return contextToken.parent.parent && contextToken.parent.parent.kind === 237 /* JsxElement */; + if (contextToken.parent.kind === 244 /* JsxClosingElement */ || contextToken.parent.kind === 241 /* JsxSelfClosingElement */) { + return contextToken.parent.parent && contextToken.parent.parent.kind === 240 /* JsxElement */; } } return false; @@ -49376,40 +51402,40 @@ var ts; var containingNodeKind = previousToken.parent.kind; switch (previousToken.kind) { case 24 /* CommaToken */: - return containingNodeKind === 172 /* CallExpression */ // func( a, | - || containingNodeKind === 146 /* Constructor */ // constructor( a, | /* public, protected, private keywords are allowed here, so show completion */ - || containingNodeKind === 173 /* NewExpression */ // new C(a, | - || containingNodeKind === 168 /* ArrayLiteralExpression */ // [a, | - || containingNodeKind === 185 /* BinaryExpression */ // const x = (a, | - || containingNodeKind === 154 /* FunctionType */; // var x: (s: string, list| + return containingNodeKind === 173 /* CallExpression */ // func( a, | + || containingNodeKind === 147 /* Constructor */ // constructor( a, | /* public, protected, private keywords are allowed here, so show completion */ + || containingNodeKind === 174 /* NewExpression */ // new C(a, | + || containingNodeKind === 169 /* ArrayLiteralExpression */ // [a, | + || containingNodeKind === 186 /* BinaryExpression */ // const x = (a, | + || containingNodeKind === 155 /* FunctionType */; // var x: (s: string, list| case 17 /* OpenParenToken */: - return containingNodeKind === 172 /* CallExpression */ // func( | - || containingNodeKind === 146 /* Constructor */ // constructor( | - || containingNodeKind === 173 /* NewExpression */ // new C(a| - || containingNodeKind === 176 /* ParenthesizedExpression */ // const x = (a| - || containingNodeKind === 162 /* ParenthesizedType */; // function F(pred: (a| /* this can become an arrow function, where 'a' is the argument */ + return containingNodeKind === 173 /* CallExpression */ // func( | + || containingNodeKind === 147 /* Constructor */ // constructor( | + || containingNodeKind === 174 /* NewExpression */ // new C(a| + || containingNodeKind === 177 /* ParenthesizedExpression */ // const x = (a| + || containingNodeKind === 163 /* ParenthesizedType */; // function F(pred: (a| /* this can become an arrow function, where 'a' is the argument */ case 19 /* OpenBracketToken */: - return containingNodeKind === 168 /* ArrayLiteralExpression */ // [ | - || containingNodeKind === 151 /* IndexSignature */ // [ | : string ] - || containingNodeKind === 138 /* ComputedPropertyName */; // [ | /* this can become an index signature */ + return containingNodeKind === 169 /* ArrayLiteralExpression */ // [ | + || containingNodeKind === 152 /* IndexSignature */ // [ | : string ] + || containingNodeKind === 139 /* ComputedPropertyName */; // [ | /* this can become an index signature */ case 125 /* ModuleKeyword */: // module | case 126 /* NamespaceKeyword */: return true; case 21 /* DotToken */: - return containingNodeKind === 222 /* ModuleDeclaration */; // module A.| + return containingNodeKind === 224 /* ModuleDeclaration */; // module A.| case 15 /* OpenBraceToken */: - return containingNodeKind === 218 /* ClassDeclaration */; // class A{ | + return containingNodeKind === 220 /* ClassDeclaration */; // class A{ | case 56 /* EqualsToken */: - return containingNodeKind === 215 /* VariableDeclaration */ // const x = a| - || containingNodeKind === 185 /* BinaryExpression */; // x = a| + return containingNodeKind === 217 /* VariableDeclaration */ // const x = a| + || containingNodeKind === 186 /* BinaryExpression */; // x = a| case 12 /* TemplateHead */: - return containingNodeKind === 187 /* TemplateExpression */; // `aa ${| + return containingNodeKind === 188 /* TemplateExpression */; // `aa ${| case 13 /* TemplateMiddle */: - return containingNodeKind === 194 /* TemplateSpan */; // `aa ${10} dd ${| + return containingNodeKind === 196 /* TemplateSpan */; // `aa ${10} dd ${| case 112 /* PublicKeyword */: case 110 /* PrivateKeyword */: case 111 /* ProtectedKeyword */: - return containingNodeKind === 143 /* PropertyDeclaration */; // class A{ public | + return containingNodeKind === 144 /* PropertyDeclaration */; // class A{ public | } // Previous token may have been a keyword that was converted to an identifier. switch (previousToken.getText()) { @@ -49423,7 +51449,7 @@ var ts; } function isInStringOrRegularExpressionOrTemplateLiteral(contextToken) { if (contextToken.kind === 9 /* StringLiteral */ - || contextToken.kind === 164 /* StringLiteralType */ + || contextToken.kind === 165 /* StringLiteralType */ || contextToken.kind === 10 /* RegularExpressionLiteral */ || ts.isTemplateLiteralKind(contextToken.kind)) { var start_7 = contextToken.getStart(); @@ -49453,14 +51479,14 @@ var ts; isMemberCompletion = true; var typeForObject; var existingMembers; - if (objectLikeContainer.kind === 169 /* ObjectLiteralExpression */) { + if (objectLikeContainer.kind === 170 /* ObjectLiteralExpression */) { // We are completing on contextual types, but may also include properties // other than those within the declared type. isNewIdentifierLocation = true; typeForObject = typeChecker.getContextualType(objectLikeContainer); existingMembers = objectLikeContainer.properties; } - else if (objectLikeContainer.kind === 165 /* ObjectBindingPattern */) { + else if (objectLikeContainer.kind === 166 /* ObjectBindingPattern */) { // We are *only* completing on properties from the type being destructured. isNewIdentifierLocation = false; var rootDeclaration = ts.getRootDeclaration(objectLikeContainer.parent); @@ -49468,7 +51494,18 @@ var ts; // We don't want to complete using the type acquired by the shape // of the binding pattern; we are only interested in types acquired // through type declaration or inference. - if (rootDeclaration.initializer || rootDeclaration.type) { + // Also proceed if rootDeclaration is parameter and if its containing function expression\arrow function is contextually typed - + // type of parameter will flow in from the contextual type of the function + var canGetType = !!(rootDeclaration.initializer || rootDeclaration.type); + if (!canGetType && rootDeclaration.kind === 141 /* Parameter */) { + if (ts.isExpression(rootDeclaration.parent)) { + canGetType = !!typeChecker.getContextualType(rootDeclaration.parent); + } + else if (rootDeclaration.parent.kind === 146 /* MethodDeclaration */ || rootDeclaration.parent.kind === 149 /* SetAccessor */) { + canGetType = ts.isExpression(rootDeclaration.parent.parent) && !!typeChecker.getContextualType(rootDeclaration.parent.parent); + } + } + if (canGetType) { typeForObject = typeChecker.getTypeAtLocation(objectLikeContainer); existingMembers = objectLikeContainer.elements; } @@ -49506,9 +51543,9 @@ var ts; * @returns true if 'symbols' was successfully populated; false otherwise. */ function tryGetImportOrExportClauseCompletionSymbols(namedImportsOrExports) { - var declarationKind = namedImportsOrExports.kind === 229 /* NamedImports */ ? - 226 /* ImportDeclaration */ : - 232 /* ExportDeclaration */; + var declarationKind = namedImportsOrExports.kind === 232 /* NamedImports */ ? + 229 /* ImportDeclaration */ : + 235 /* ExportDeclaration */; var importOrExportDeclaration = ts.getAncestor(namedImportsOrExports, declarationKind); var moduleSpecifier = importOrExportDeclaration.moduleSpecifier; if (!moduleSpecifier) { @@ -49533,9 +51570,9 @@ var ts; switch (contextToken.kind) { case 15 /* OpenBraceToken */: // const x = { | case 24 /* CommaToken */: - var parent_12 = contextToken.parent; - if (parent_12 && (parent_12.kind === 169 /* ObjectLiteralExpression */ || parent_12.kind === 165 /* ObjectBindingPattern */)) { - return parent_12; + var parent_14 = contextToken.parent; + if (parent_14 && (parent_14.kind === 170 /* ObjectLiteralExpression */ || parent_14.kind === 166 /* ObjectBindingPattern */)) { + return parent_14; } break; } @@ -49552,8 +51589,8 @@ var ts; case 15 /* OpenBraceToken */: // import { | case 24 /* CommaToken */: switch (contextToken.parent.kind) { - case 229 /* NamedImports */: - case 233 /* NamedExports */: + case 232 /* NamedImports */: + case 236 /* NamedExports */: return contextToken.parent; } } @@ -49562,37 +51599,37 @@ var ts; } function tryGetContainingJsxElement(contextToken) { if (contextToken) { - var parent_13 = contextToken.parent; + var parent_15 = contextToken.parent; switch (contextToken.kind) { case 26 /* LessThanSlashToken */: case 39 /* SlashToken */: case 69 /* Identifier */: - case 242 /* JsxAttribute */: - case 243 /* JsxSpreadAttribute */: - if (parent_13 && (parent_13.kind === 238 /* JsxSelfClosingElement */ || parent_13.kind === 239 /* JsxOpeningElement */)) { - return parent_13; + case 245 /* JsxAttribute */: + case 246 /* JsxSpreadAttribute */: + if (parent_15 && (parent_15.kind === 241 /* JsxSelfClosingElement */ || parent_15.kind === 242 /* JsxOpeningElement */)) { + return parent_15; } - else if (parent_13.kind === 242 /* JsxAttribute */) { - return parent_13.parent; + else if (parent_15.kind === 245 /* JsxAttribute */) { + return parent_15.parent; } break; // The context token is the closing } or " of an attribute, which means // its parent is a JsxExpression, whose parent is a JsxAttribute, // whose parent is a JsxOpeningLikeElement case 9 /* StringLiteral */: - if (parent_13 && ((parent_13.kind === 242 /* JsxAttribute */) || (parent_13.kind === 243 /* JsxSpreadAttribute */))) { - return parent_13.parent; + if (parent_15 && ((parent_15.kind === 245 /* JsxAttribute */) || (parent_15.kind === 246 /* JsxSpreadAttribute */))) { + return parent_15.parent; } break; case 16 /* CloseBraceToken */: - if (parent_13 && - parent_13.kind === 244 /* JsxExpression */ && - parent_13.parent && - (parent_13.parent.kind === 242 /* JsxAttribute */)) { - return parent_13.parent.parent; + if (parent_15 && + parent_15.kind === 247 /* JsxExpression */ && + parent_15.parent && + (parent_15.parent.kind === 245 /* JsxAttribute */)) { + return parent_15.parent.parent; } - if (parent_13 && parent_13.kind === 243 /* JsxSpreadAttribute */) { - return parent_13.parent; + if (parent_15 && parent_15.kind === 246 /* JsxSpreadAttribute */) { + return parent_15.parent; } break; } @@ -49601,16 +51638,16 @@ var ts; } function isFunction(kind) { switch (kind) { - case 177 /* FunctionExpression */: - case 178 /* ArrowFunction */: - case 217 /* FunctionDeclaration */: - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: - case 149 /* CallSignature */: - case 150 /* ConstructSignature */: - case 151 /* IndexSignature */: + case 178 /* FunctionExpression */: + case 179 /* ArrowFunction */: + case 219 /* FunctionDeclaration */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: + case 150 /* CallSignature */: + case 151 /* ConstructSignature */: + case 152 /* IndexSignature */: return true; } return false; @@ -49622,54 +51659,54 @@ var ts; var containingNodeKind = contextToken.parent.kind; switch (contextToken.kind) { case 24 /* CommaToken */: - return containingNodeKind === 215 /* VariableDeclaration */ || - containingNodeKind === 216 /* VariableDeclarationList */ || - containingNodeKind === 197 /* VariableStatement */ || - containingNodeKind === 221 /* EnumDeclaration */ || + return containingNodeKind === 217 /* VariableDeclaration */ || + containingNodeKind === 218 /* VariableDeclarationList */ || + containingNodeKind === 199 /* VariableStatement */ || + containingNodeKind === 223 /* EnumDeclaration */ || isFunction(containingNodeKind) || - containingNodeKind === 218 /* ClassDeclaration */ || - containingNodeKind === 190 /* ClassExpression */ || - containingNodeKind === 219 /* InterfaceDeclaration */ || - containingNodeKind === 166 /* ArrayBindingPattern */ || - containingNodeKind === 220 /* TypeAliasDeclaration */; // type Map, K, | + containingNodeKind === 220 /* ClassDeclaration */ || + containingNodeKind === 191 /* ClassExpression */ || + containingNodeKind === 221 /* InterfaceDeclaration */ || + containingNodeKind === 167 /* ArrayBindingPattern */ || + containingNodeKind === 222 /* TypeAliasDeclaration */; // type Map, K, | case 21 /* DotToken */: - return containingNodeKind === 166 /* ArrayBindingPattern */; // var [.| + return containingNodeKind === 167 /* ArrayBindingPattern */; // var [.| case 54 /* ColonToken */: - return containingNodeKind === 167 /* BindingElement */; // var {x :html| + return containingNodeKind === 168 /* BindingElement */; // var {x :html| case 19 /* OpenBracketToken */: - return containingNodeKind === 166 /* ArrayBindingPattern */; // var [x| + return containingNodeKind === 167 /* ArrayBindingPattern */; // var [x| case 17 /* OpenParenToken */: - return containingNodeKind === 248 /* CatchClause */ || + return containingNodeKind === 251 /* CatchClause */ || isFunction(containingNodeKind); case 15 /* OpenBraceToken */: - return containingNodeKind === 221 /* EnumDeclaration */ || - containingNodeKind === 219 /* InterfaceDeclaration */ || - containingNodeKind === 157 /* TypeLiteral */; // const x : { | + return containingNodeKind === 223 /* EnumDeclaration */ || + containingNodeKind === 221 /* InterfaceDeclaration */ || + containingNodeKind === 158 /* TypeLiteral */; // const x : { | case 23 /* SemicolonToken */: - return containingNodeKind === 142 /* PropertySignature */ && + return containingNodeKind === 143 /* PropertySignature */ && contextToken.parent && contextToken.parent.parent && - (contextToken.parent.parent.kind === 219 /* InterfaceDeclaration */ || - contextToken.parent.parent.kind === 157 /* TypeLiteral */); // const x : { a; | + (contextToken.parent.parent.kind === 221 /* InterfaceDeclaration */ || + contextToken.parent.parent.kind === 158 /* TypeLiteral */); // const x : { a; | case 25 /* LessThanToken */: - return containingNodeKind === 218 /* ClassDeclaration */ || - containingNodeKind === 190 /* ClassExpression */ || - containingNodeKind === 219 /* InterfaceDeclaration */ || - containingNodeKind === 220 /* TypeAliasDeclaration */ || + return containingNodeKind === 220 /* ClassDeclaration */ || + containingNodeKind === 191 /* ClassExpression */ || + containingNodeKind === 221 /* InterfaceDeclaration */ || + containingNodeKind === 222 /* TypeAliasDeclaration */ || isFunction(containingNodeKind); case 113 /* StaticKeyword */: - return containingNodeKind === 143 /* PropertyDeclaration */; + return containingNodeKind === 144 /* PropertyDeclaration */; case 22 /* DotDotDotToken */: - return containingNodeKind === 140 /* Parameter */ || + return containingNodeKind === 141 /* Parameter */ || (contextToken.parent && contextToken.parent.parent && - contextToken.parent.parent.kind === 166 /* ArrayBindingPattern */); // var [...z| + contextToken.parent.parent.kind === 167 /* ArrayBindingPattern */); // var [...z| case 112 /* PublicKeyword */: case 110 /* PrivateKeyword */: case 111 /* ProtectedKeyword */: - return containingNodeKind === 140 /* Parameter */; + return containingNodeKind === 141 /* Parameter */; case 116 /* AsKeyword */: - return containingNodeKind === 230 /* ImportSpecifier */ || - containingNodeKind === 234 /* ExportSpecifier */ || - containingNodeKind === 228 /* NamespaceImport */; + return containingNodeKind === 233 /* ImportSpecifier */ || + containingNodeKind === 237 /* ExportSpecifier */ || + containingNodeKind === 231 /* NamespaceImport */; case 73 /* ClassKeyword */: case 81 /* EnumKeyword */: case 107 /* InterfaceKeyword */: @@ -49729,8 +51766,8 @@ var ts; if (element.getStart() <= position && position <= element.getEnd()) { continue; } - var name_34 = element.propertyName || element.name; - existingImportsOrExports[name_34.text] = true; + var name_39 = element.propertyName || element.name; + existingImportsOrExports[name_39.text] = true; } if (ts.isEmpty(existingImportsOrExports)) { return exportsOfModule; @@ -49751,10 +51788,10 @@ var ts; for (var _i = 0, existingMembers_1 = existingMembers; _i < existingMembers_1.length; _i++) { var m = existingMembers_1[_i]; // Ignore omitted expressions for missing members - if (m.kind !== 249 /* PropertyAssignment */ && - m.kind !== 250 /* ShorthandPropertyAssignment */ && - m.kind !== 167 /* BindingElement */ && - m.kind !== 145 /* MethodDeclaration */) { + if (m.kind !== 252 /* PropertyAssignment */ && + m.kind !== 253 /* ShorthandPropertyAssignment */ && + m.kind !== 168 /* BindingElement */ && + m.kind !== 146 /* MethodDeclaration */) { continue; } // If this is the current item we are editing right now, do not filter it out @@ -49762,7 +51799,7 @@ var ts; continue; } var existingName = void 0; - if (m.kind === 167 /* BindingElement */ && m.propertyName) { + if (m.kind === 168 /* BindingElement */ && m.propertyName) { // include only identifiers in completion list if (m.propertyName.kind === 69 /* Identifier */) { existingName = m.propertyName.text; @@ -49792,7 +51829,7 @@ var ts; if (attr.getStart() <= position && position <= attr.getEnd()) { continue; } - if (attr.kind === 242 /* JsxAttribute */) { + if (attr.kind === 245 /* JsxAttribute */) { seenNames[attr.name.text] = true; } } @@ -49819,7 +51856,7 @@ var ts; else { if (!symbols || symbols.length === 0) { if (sourceFile.languageVariant === 1 /* JSX */ && - location.parent && location.parent.kind === 241 /* JsxClosingElement */) { + location.parent && location.parent.kind === 244 /* JsxClosingElement */) { // In the TypeScript JSX element, if such element is not defined. When users query for completion at closing tag, // instead of simply giving unknown value, the completion will return the tag-name of an associated opening-element. // For example: @@ -49847,14 +51884,14 @@ var ts; var entries = []; var target = program.getCompilerOptions().target; var nameTable = getNameTable(sourceFile); - for (var name_35 in nameTable) { + for (var name_40 in nameTable) { // Skip identifiers produced only from the current location - if (nameTable[name_35] === position) { + if (nameTable[name_40] === position) { continue; } - if (!uniqueNames[name_35]) { - uniqueNames[name_35] = name_35; - var displayName = getCompletionEntryDisplayName(name_35, target, /*performCharacterChecks*/ true); + if (!uniqueNames[name_40]) { + uniqueNames[name_40] = name_40; + var displayName = getCompletionEntryDisplayName(name_40, target, /*performCharacterChecks*/ true); if (displayName) { var entry = { name: displayName, @@ -49960,7 +51997,7 @@ var ts; function getSymbolKind(symbol, location) { var flags = symbol.getFlags(); if (flags & 32 /* Class */) - return ts.getDeclarationOfKind(symbol, 190 /* ClassExpression */) ? + return ts.getDeclarationOfKind(symbol, 191 /* ClassExpression */) ? ScriptElementKind.localClassElement : ScriptElementKind.classElement; if (flags & 384 /* Enum */) return ScriptElementKind.enumElement; @@ -49991,6 +52028,9 @@ var ts; if (typeChecker.isArgumentsSymbol(symbol)) { return ScriptElementKind.localVariableElement; } + if (location.kind === 97 /* ThisKeyword */ && ts.isExpression(location)) { + return ScriptElementKind.parameterElement; + } if (flags & 3 /* Variable */) { if (ts.isFirstDeclarationOfSymbolParameter(symbol)) { return ScriptElementKind.parameterElement; @@ -50052,6 +52092,7 @@ var ts; var symbolFlags = symbol.flags; var symbolKind = getSymbolKindOfConstructorPropertyMethodAccessorFunctionOrVar(symbol, symbolFlags, location); var hasAddedSymbolInfo; + var isThisExpression = location.kind === 97 /* ThisKeyword */ && ts.isExpression(location); var type; // Class at constructor site need to be shown as constructor apart from property,method, vars if (symbolKind !== ScriptElementKind.unknown || symbolFlags & 32 /* Class */ || symbolFlags & 8388608 /* Alias */) { @@ -50060,9 +52101,9 @@ var ts; symbolKind = ScriptElementKind.memberVariableElement; } var signature = void 0; - type = typeChecker.getTypeOfSymbolAtLocation(symbol, location); + type = isThisExpression ? typeChecker.getTypeAtLocation(location) : typeChecker.getTypeOfSymbolAtLocation(symbol, location); if (type) { - if (location.parent && location.parent.kind === 170 /* PropertyAccessExpression */) { + if (location.parent && location.parent.kind === 171 /* PropertyAccessExpression */) { var right = location.parent.name; // Either the location is on the right of a property access, or on the left and the right is missing if (right === location || (right && right.getFullWidth() === 0)) { @@ -50071,7 +52112,7 @@ var ts; } // try get the call/construct signature from the type if it matches var callExpression = void 0; - if (location.kind === 172 /* CallExpression */ || location.kind === 173 /* NewExpression */) { + if (location.kind === 173 /* CallExpression */ || location.kind === 174 /* NewExpression */) { callExpression = location; } else if (isCallExpressionTarget(location) || isNewExpressionTarget(location)) { @@ -50084,7 +52125,7 @@ var ts; // Use the first candidate: signature = candidateSignatures[0]; } - var useConstructSignatures = callExpression.kind === 173 /* NewExpression */ || callExpression.expression.kind === 95 /* SuperKeyword */; + var useConstructSignatures = callExpression.kind === 174 /* NewExpression */ || callExpression.expression.kind === 95 /* SuperKeyword */; var allSignatures = useConstructSignatures ? type.getConstructSignatures() : type.getCallSignatures(); if (!ts.contains(allSignatures, signature.target) && !ts.contains(allSignatures, signature)) { // Get the first signature if there is one -- allSignatures may contain @@ -50137,24 +52178,24 @@ var ts; } } else if ((isNameOfFunctionDeclaration(location) && !(symbol.flags & 98304 /* Accessor */)) || - (location.kind === 121 /* ConstructorKeyword */ && location.parent.kind === 146 /* Constructor */)) { + (location.kind === 121 /* ConstructorKeyword */ && location.parent.kind === 147 /* Constructor */)) { // get the signature from the declaration and write it var functionDeclaration = location.parent; - var allSignatures = functionDeclaration.kind === 146 /* Constructor */ ? type.getConstructSignatures() : type.getCallSignatures(); + var allSignatures = functionDeclaration.kind === 147 /* Constructor */ ? type.getConstructSignatures() : type.getCallSignatures(); if (!typeChecker.isImplementationOfOverload(functionDeclaration)) { signature = typeChecker.getSignatureFromDeclaration(functionDeclaration); } else { signature = allSignatures[0]; } - if (functionDeclaration.kind === 146 /* Constructor */) { + if (functionDeclaration.kind === 147 /* Constructor */) { // show (constructor) Type(...) signature symbolKind = ScriptElementKind.constructorImplementationElement; addPrefixForAnyFunctionOrVar(type.symbol, symbolKind); } else { // (function/method) symbol(..signature) - addPrefixForAnyFunctionOrVar(functionDeclaration.kind === 149 /* CallSignature */ && + addPrefixForAnyFunctionOrVar(functionDeclaration.kind === 150 /* CallSignature */ && !(type.symbol.flags & 2048 /* TypeLiteral */ || type.symbol.flags & 4096 /* ObjectLiteral */) ? type.symbol : symbol, symbolKind); } addSignatureDisplayParts(signature, allSignatures); @@ -50162,8 +52203,8 @@ var ts; } } } - if (symbolFlags & 32 /* Class */ && !hasAddedSymbolInfo) { - if (ts.getDeclarationOfKind(symbol, 190 /* ClassExpression */)) { + if (symbolFlags & 32 /* Class */ && !hasAddedSymbolInfo && !isThisExpression) { + if (ts.getDeclarationOfKind(symbol, 191 /* ClassExpression */)) { // Special case for class expressions because we would like to indicate that // the class name is local to the class body (similar to function expression) // (local class) class @@ -50207,7 +52248,7 @@ var ts; } if (symbolFlags & 1536 /* Module */) { addNewLineIfDisplayPartsExist(); - var declaration = ts.getDeclarationOfKind(symbol, 222 /* ModuleDeclaration */); + var declaration = ts.getDeclarationOfKind(symbol, 224 /* ModuleDeclaration */); var isNamespace = declaration && declaration.name && declaration.name.kind === 69 /* Identifier */; displayParts.push(ts.keywordPart(isNamespace ? 126 /* NamespaceKeyword */ : 125 /* ModuleKeyword */)); displayParts.push(ts.spacePart()); @@ -50230,17 +52271,17 @@ var ts; } else { // Method/function type parameter - var declaration = ts.getDeclarationOfKind(symbol, 139 /* TypeParameter */); + var declaration = ts.getDeclarationOfKind(symbol, 140 /* TypeParameter */); ts.Debug.assert(declaration !== undefined); declaration = declaration.parent; if (declaration) { if (ts.isFunctionLikeKind(declaration.kind)) { var signature = typeChecker.getSignatureFromDeclaration(declaration); - if (declaration.kind === 150 /* ConstructSignature */) { + if (declaration.kind === 151 /* ConstructSignature */) { displayParts.push(ts.keywordPart(92 /* NewKeyword */)); displayParts.push(ts.spacePart()); } - else if (declaration.kind !== 149 /* CallSignature */ && declaration.name) { + else if (declaration.kind !== 150 /* CallSignature */ && declaration.name) { addFullSymbolName(declaration.symbol); } ts.addRange(displayParts, ts.signatureToDisplayParts(typeChecker, signature, sourceFile, 32 /* WriteTypeArgumentsOfSignature */)); @@ -50260,7 +52301,7 @@ var ts; if (symbolFlags & 8 /* EnumMember */) { addPrefixForAnyFunctionOrVar(symbol, "enum member"); var declaration = symbol.declarations[0]; - if (declaration.kind === 251 /* EnumMember */) { + if (declaration.kind === 254 /* EnumMember */) { var constantValue = typeChecker.getConstantValue(declaration); if (constantValue !== undefined) { displayParts.push(ts.spacePart()); @@ -50276,7 +52317,7 @@ var ts; displayParts.push(ts.spacePart()); addFullSymbolName(symbol); ts.forEach(symbol.declarations, function (declaration) { - if (declaration.kind === 225 /* ImportEqualsDeclaration */) { + if (declaration.kind === 228 /* ImportEqualsDeclaration */) { var importEqualsDeclaration = declaration; if (ts.isExternalModuleImportEqualsDeclaration(importEqualsDeclaration)) { displayParts.push(ts.spacePart()); @@ -50303,11 +52344,18 @@ var ts; if (!hasAddedSymbolInfo) { if (symbolKind !== ScriptElementKind.unknown) { if (type) { - addPrefixForAnyFunctionOrVar(symbol, symbolKind); + if (isThisExpression) { + addNewLineIfDisplayPartsExist(); + displayParts.push(ts.keywordPart(97 /* ThisKeyword */)); + } + else { + addPrefixForAnyFunctionOrVar(symbol, symbolKind); + } // For properties, variables and local vars: show the type if (symbolKind === ScriptElementKind.memberVariableElement || symbolFlags & 3 /* Variable */ || - symbolKind === ScriptElementKind.localVariableElement) { + symbolKind === ScriptElementKind.localVariableElement || + isThisExpression) { displayParts.push(ts.punctuationPart(54 /* ColonToken */)); displayParts.push(ts.spacePart()); // If the type is type parameter, format it specially @@ -50409,10 +52457,10 @@ var ts; // Try getting just type at this position and show switch (node.kind) { case 69 /* Identifier */: - case 170 /* PropertyAccessExpression */: - case 137 /* QualifiedName */: + case 171 /* PropertyAccessExpression */: + case 138 /* QualifiedName */: case 97 /* ThisKeyword */: - case 163 /* ThisType */: + case 164 /* ThisType */: case 95 /* SuperKeyword */: // For the identifiers/this/super etc get the type at position var type = typeChecker.getTypeAtLocation(node); @@ -50491,8 +52539,8 @@ var ts; var declarations = []; var definition; ts.forEach(signatureDeclarations, function (d) { - if ((selectConstructors && d.kind === 146 /* Constructor */) || - (!selectConstructors && (d.kind === 217 /* FunctionDeclaration */ || d.kind === 145 /* MethodDeclaration */ || d.kind === 144 /* MethodSignature */))) { + if ((selectConstructors && d.kind === 147 /* Constructor */) || + (!selectConstructors && (d.kind === 219 /* FunctionDeclaration */ || d.kind === 146 /* MethodDeclaration */ || d.kind === 145 /* MethodSignature */))) { declarations.push(d); if (d.body) definition = d; @@ -50509,6 +52557,25 @@ var ts; return false; } } + function findReferenceInPosition(refs, pos) { + for (var _i = 0, refs_1 = refs; _i < refs_1.length; _i++) { + var ref = refs_1[_i]; + if (ref.pos <= pos && pos < ref.end) { + return ref; + } + } + return undefined; + } + function getDefinitionInfoForFileReference(name, targetFileName) { + return { + fileName: targetFileName, + textSpan: ts.createTextSpanFromBounds(0, 0), + kind: ScriptElementKind.scriptElement, + name: name, + containerName: undefined, + containerKind: undefined + }; + } /// Goto definition function getDefinitionAtPosition(fileName, position) { synchronizeHostData(); @@ -50524,18 +52591,20 @@ var ts; return label ? [createDefinitionInfo(label, ScriptElementKind.label, labelName, /*containerName*/ undefined)] : undefined; } /// Triple slash reference comments - var comment = ts.forEach(sourceFile.referencedFiles, function (r) { return (r.pos <= position && position < r.end) ? r : undefined; }); + var comment = findReferenceInPosition(sourceFile.referencedFiles, position); if (comment) { var referenceFile = ts.tryResolveScriptReference(program, sourceFile, comment); if (referenceFile) { - return [{ - fileName: referenceFile.fileName, - textSpan: ts.createTextSpanFromBounds(0, 0), - kind: ScriptElementKind.scriptElement, - name: comment.fileName, - containerName: undefined, - containerKind: undefined - }]; + return [getDefinitionInfoForFileReference(comment.fileName, referenceFile.fileName)]; + } + return undefined; + } + // Type reference directives + var typeReferenceDirective = findReferenceInPosition(sourceFile.typeReferenceDirectives, position); + if (typeReferenceDirective) { + var referenceFile = ts.lookUp(program.resolvedTypeReferenceDirectives, typeReferenceDirective.fileName); + if (referenceFile && referenceFile.resolvedFileName) { + return [getDefinitionInfoForFileReference(typeReferenceDirective.fileName, referenceFile.resolvedFileName)]; } return undefined; } @@ -50559,7 +52628,7 @@ var ts; // if (node.kind === 69 /* Identifier */ && (node.parent === declaration || - (declaration.kind === 230 /* ImportSpecifier */ && declaration.parent && declaration.parent.kind === 229 /* NamedImports */))) { + (declaration.kind === 233 /* ImportSpecifier */ && declaration.parent && declaration.parent.kind === 232 /* NamedImports */))) { symbol = typeChecker.getAliasedSymbol(symbol); } } @@ -50568,7 +52637,7 @@ var ts; // go to the declaration of the property name (in this case stay at the same position). However, if go-to-definition // is performed at the location of property access, we would like to go to definition of the property in the short-hand // assignment. This case and others are handled by the following code. - if (node.parent.kind === 250 /* ShorthandPropertyAssignment */) { + if (node.parent.kind === 253 /* ShorthandPropertyAssignment */) { var shorthandSymbol = typeChecker.getShorthandAssignmentValueSymbol(symbol.valueDeclaration); if (!shorthandSymbol) { return []; @@ -50644,7 +52713,7 @@ var ts; function getSemanticDocumentHighlights(node) { if (node.kind === 69 /* Identifier */ || node.kind === 97 /* ThisKeyword */ || - node.kind === 163 /* ThisType */ || + node.kind === 164 /* ThisType */ || node.kind === 95 /* SuperKeyword */ || isLiteralNameOfPropertyDeclarationOrIndexAccess(node) || isNameOfExternalModuleImportOrDeclaration(node)) { @@ -50698,75 +52767,75 @@ var ts; switch (node.kind) { case 88 /* IfKeyword */: case 80 /* ElseKeyword */: - if (hasKind(node.parent, 200 /* IfStatement */)) { + if (hasKind(node.parent, 202 /* IfStatement */)) { return getIfElseOccurrences(node.parent); } break; case 94 /* ReturnKeyword */: - if (hasKind(node.parent, 208 /* ReturnStatement */)) { + if (hasKind(node.parent, 210 /* ReturnStatement */)) { return getReturnOccurrences(node.parent); } break; case 98 /* ThrowKeyword */: - if (hasKind(node.parent, 212 /* ThrowStatement */)) { + if (hasKind(node.parent, 214 /* ThrowStatement */)) { return getThrowOccurrences(node.parent); } break; case 72 /* CatchKeyword */: - if (hasKind(parent(parent(node)), 213 /* TryStatement */)) { + if (hasKind(parent(parent(node)), 215 /* TryStatement */)) { return getTryCatchFinallyOccurrences(node.parent.parent); } break; case 100 /* TryKeyword */: case 85 /* FinallyKeyword */: - if (hasKind(parent(node), 213 /* TryStatement */)) { + if (hasKind(parent(node), 215 /* TryStatement */)) { return getTryCatchFinallyOccurrences(node.parent); } break; case 96 /* SwitchKeyword */: - if (hasKind(node.parent, 210 /* SwitchStatement */)) { + if (hasKind(node.parent, 212 /* SwitchStatement */)) { return getSwitchCaseDefaultOccurrences(node.parent); } break; case 71 /* CaseKeyword */: case 77 /* DefaultKeyword */: - if (hasKind(parent(parent(parent(node))), 210 /* SwitchStatement */)) { + if (hasKind(parent(parent(parent(node))), 212 /* SwitchStatement */)) { return getSwitchCaseDefaultOccurrences(node.parent.parent.parent); } break; case 70 /* BreakKeyword */: case 75 /* ContinueKeyword */: - if (hasKind(node.parent, 207 /* BreakStatement */) || hasKind(node.parent, 206 /* ContinueStatement */)) { + if (hasKind(node.parent, 209 /* BreakStatement */) || hasKind(node.parent, 208 /* ContinueStatement */)) { return getBreakOrContinueStatementOccurrences(node.parent); } break; case 86 /* ForKeyword */: - if (hasKind(node.parent, 203 /* ForStatement */) || - hasKind(node.parent, 204 /* ForInStatement */) || - hasKind(node.parent, 205 /* ForOfStatement */)) { + if (hasKind(node.parent, 205 /* ForStatement */) || + hasKind(node.parent, 206 /* ForInStatement */) || + hasKind(node.parent, 207 /* ForOfStatement */)) { return getLoopBreakContinueOccurrences(node.parent); } break; case 104 /* WhileKeyword */: case 79 /* DoKeyword */: - if (hasKind(node.parent, 202 /* WhileStatement */) || hasKind(node.parent, 201 /* DoStatement */)) { + if (hasKind(node.parent, 204 /* WhileStatement */) || hasKind(node.parent, 203 /* DoStatement */)) { return getLoopBreakContinueOccurrences(node.parent); } break; case 121 /* ConstructorKeyword */: - if (hasKind(node.parent, 146 /* Constructor */)) { + if (hasKind(node.parent, 147 /* Constructor */)) { return getConstructorOccurrences(node.parent); } break; case 123 /* GetKeyword */: case 130 /* SetKeyword */: - if (hasKind(node.parent, 147 /* GetAccessor */) || hasKind(node.parent, 148 /* SetAccessor */)) { + if (hasKind(node.parent, 148 /* GetAccessor */) || hasKind(node.parent, 149 /* SetAccessor */)) { return getGetAndSetOccurrences(node.parent); } break; default: if (ts.isModifierKind(node.kind) && node.parent && - (ts.isDeclaration(node.parent) || node.parent.kind === 197 /* VariableStatement */)) { + (ts.isDeclaration(node.parent) || node.parent.kind === 199 /* VariableStatement */)) { return getModifierOccurrences(node.kind, node.parent); } } @@ -50782,10 +52851,10 @@ var ts; aggregate(node); return statementAccumulator; function aggregate(node) { - if (node.kind === 212 /* ThrowStatement */) { + if (node.kind === 214 /* ThrowStatement */) { statementAccumulator.push(node); } - else if (node.kind === 213 /* TryStatement */) { + else if (node.kind === 215 /* TryStatement */) { var tryStatement = node; if (tryStatement.catchClause) { aggregate(tryStatement.catchClause); @@ -50812,19 +52881,19 @@ var ts; function getThrowStatementOwner(throwStatement) { var child = throwStatement; while (child.parent) { - var parent_14 = child.parent; - if (ts.isFunctionBlock(parent_14) || parent_14.kind === 252 /* SourceFile */) { - return parent_14; + var parent_16 = child.parent; + if (ts.isFunctionBlock(parent_16) || parent_16.kind === 255 /* SourceFile */) { + return parent_16; } // A throw-statement is only owned by a try-statement if the try-statement has // a catch clause, and if the throw-statement occurs within the try block. - if (parent_14.kind === 213 /* TryStatement */) { - var tryStatement = parent_14; + if (parent_16.kind === 215 /* TryStatement */) { + var tryStatement = parent_16; if (tryStatement.tryBlock === child && tryStatement.catchClause) { return child; } } - child = parent_14; + child = parent_16; } return undefined; } @@ -50833,7 +52902,7 @@ var ts; aggregate(node); return statementAccumulator; function aggregate(node) { - if (node.kind === 207 /* BreakStatement */ || node.kind === 206 /* ContinueStatement */) { + if (node.kind === 209 /* BreakStatement */ || node.kind === 208 /* ContinueStatement */) { statementAccumulator.push(node); } else if (!ts.isFunctionLike(node)) { @@ -50848,16 +52917,16 @@ var ts; function getBreakOrContinueOwner(statement) { for (var node_2 = statement.parent; node_2; node_2 = node_2.parent) { switch (node_2.kind) { - case 210 /* SwitchStatement */: - if (statement.kind === 206 /* ContinueStatement */) { + case 212 /* SwitchStatement */: + if (statement.kind === 208 /* ContinueStatement */) { continue; } // Fall through. - case 203 /* ForStatement */: - case 204 /* ForInStatement */: - case 205 /* ForOfStatement */: - case 202 /* WhileStatement */: - case 201 /* DoStatement */: + case 205 /* ForStatement */: + case 206 /* ForInStatement */: + case 207 /* ForOfStatement */: + case 204 /* WhileStatement */: + case 203 /* DoStatement */: if (!statement.label || isLabeledBy(node_2, statement.label.text)) { return node_2; } @@ -50876,24 +52945,24 @@ var ts; var container = declaration.parent; // Make sure we only highlight the keyword when it makes sense to do so. if (ts.isAccessibilityModifier(modifier)) { - if (!(container.kind === 218 /* ClassDeclaration */ || - container.kind === 190 /* ClassExpression */ || - (declaration.kind === 140 /* Parameter */ && hasKind(container, 146 /* Constructor */)))) { + if (!(container.kind === 220 /* ClassDeclaration */ || + container.kind === 191 /* ClassExpression */ || + (declaration.kind === 141 /* Parameter */ && hasKind(container, 147 /* Constructor */)))) { return undefined; } } else if (modifier === 113 /* StaticKeyword */) { - if (!(container.kind === 218 /* ClassDeclaration */ || container.kind === 190 /* ClassExpression */)) { + if (!(container.kind === 220 /* ClassDeclaration */ || container.kind === 191 /* ClassExpression */)) { return undefined; } } else if (modifier === 82 /* ExportKeyword */ || modifier === 122 /* DeclareKeyword */) { - if (!(container.kind === 223 /* ModuleBlock */ || container.kind === 252 /* SourceFile */)) { + if (!(container.kind === 225 /* ModuleBlock */ || container.kind === 255 /* SourceFile */)) { return undefined; } } else if (modifier === 115 /* AbstractKeyword */) { - if (!(container.kind === 218 /* ClassDeclaration */ || declaration.kind === 218 /* ClassDeclaration */)) { + if (!(container.kind === 220 /* ClassDeclaration */ || declaration.kind === 220 /* ClassDeclaration */)) { return undefined; } } @@ -50905,8 +52974,8 @@ var ts; var modifierFlag = getFlagFromModifier(modifier); var nodes; switch (container.kind) { - case 223 /* ModuleBlock */: - case 252 /* SourceFile */: + case 225 /* ModuleBlock */: + case 255 /* SourceFile */: // Container is either a class declaration or the declaration is a classDeclaration if (modifierFlag & 128 /* Abstract */) { nodes = declaration.members.concat(declaration); @@ -50915,17 +52984,17 @@ var ts; nodes = container.statements; } break; - case 146 /* Constructor */: + case 147 /* Constructor */: nodes = container.parameters.concat(container.parent.members); break; - case 218 /* ClassDeclaration */: - case 190 /* ClassExpression */: + case 220 /* ClassDeclaration */: + case 191 /* ClassExpression */: nodes = container.members; // If we're an accessibility modifier, we're in an instance member and should search // the constructor's parameter list for instance members as well. if (modifierFlag & 28 /* AccessibilityModifier */) { var constructor = ts.forEach(container.members, function (member) { - return member.kind === 146 /* Constructor */ && member; + return member.kind === 147 /* Constructor */ && member; }); if (constructor) { nodes = nodes.concat(constructor.parameters); @@ -50978,8 +53047,8 @@ var ts; } function getGetAndSetOccurrences(accessorDeclaration) { var keywords = []; - tryPushAccessorKeyword(accessorDeclaration.symbol, 147 /* GetAccessor */); - tryPushAccessorKeyword(accessorDeclaration.symbol, 148 /* SetAccessor */); + tryPushAccessorKeyword(accessorDeclaration.symbol, 148 /* GetAccessor */); + tryPushAccessorKeyword(accessorDeclaration.symbol, 149 /* SetAccessor */); return ts.map(keywords, getHighlightSpanForNode); function tryPushAccessorKeyword(accessorSymbol, accessorKind) { var accessor = ts.getDeclarationOfKind(accessorSymbol, accessorKind); @@ -51002,7 +53071,7 @@ var ts; var keywords = []; if (pushKeywordIf(keywords, loopNode.getFirstToken(), 86 /* ForKeyword */, 104 /* WhileKeyword */, 79 /* DoKeyword */)) { // If we succeeded and got a do-while loop, then start looking for a 'while' keyword. - if (loopNode.kind === 201 /* DoStatement */) { + if (loopNode.kind === 203 /* DoStatement */) { var loopTokens = loopNode.getChildren(); for (var i = loopTokens.length - 1; i >= 0; i--) { if (pushKeywordIf(keywords, loopTokens[i], 104 /* WhileKeyword */)) { @@ -51023,13 +53092,13 @@ var ts; var owner = getBreakOrContinueOwner(breakOrContinueStatement); if (owner) { switch (owner.kind) { - case 203 /* ForStatement */: - case 204 /* ForInStatement */: - case 205 /* ForOfStatement */: - case 201 /* DoStatement */: - case 202 /* WhileStatement */: + case 205 /* ForStatement */: + case 206 /* ForInStatement */: + case 207 /* ForOfStatement */: + case 203 /* DoStatement */: + case 204 /* WhileStatement */: return getLoopBreakContinueOccurrences(owner); - case 210 /* SwitchStatement */: + case 212 /* SwitchStatement */: return getSwitchCaseDefaultOccurrences(owner); } } @@ -51083,7 +53152,7 @@ var ts; function getReturnOccurrences(returnStatement) { var func = ts.getContainingFunction(returnStatement); // If we didn't find a containing function with a block body, bail out. - if (!(func && hasKind(func.body, 196 /* Block */))) { + if (!(func && hasKind(func.body, 198 /* Block */))) { return undefined; } var keywords = []; @@ -51099,7 +53168,7 @@ var ts; function getIfElseOccurrences(ifStatement) { var keywords = []; // Traverse upwards through all parent if-statements linked by their else-branches. - while (hasKind(ifStatement.parent, 200 /* IfStatement */) && ifStatement.parent.elseStatement === ifStatement) { + while (hasKind(ifStatement.parent, 202 /* IfStatement */) && ifStatement.parent.elseStatement === ifStatement) { ifStatement = ifStatement.parent; } // Now traverse back down through the else branches, aggregating if/else keywords of if-statements. @@ -51112,7 +53181,7 @@ var ts; break; } } - if (!hasKind(ifStatement.elseStatement, 200 /* IfStatement */)) { + if (!hasKind(ifStatement.elseStatement, 202 /* IfStatement */)) { break; } ifStatement = ifStatement.elseStatement; @@ -51229,7 +53298,7 @@ var ts; return getLabelReferencesInNode(node.parent, node); } } - if (node.kind === 97 /* ThisKeyword */ || node.kind === 163 /* ThisType */) { + if (node.kind === 97 /* ThisKeyword */ || node.kind === 164 /* ThisType */) { return getReferencesForThisKeyword(node, sourceFiles); } if (node.kind === 95 /* SuperKeyword */) { @@ -51263,8 +53332,8 @@ var ts; } else { var internedName = getInternedName(symbol, node, declarations); - for (var _i = 0, sourceFiles_3 = sourceFiles; _i < sourceFiles_3.length; _i++) { - var sourceFile = sourceFiles_3[_i]; + for (var _i = 0, sourceFiles_4 = sourceFiles; _i < sourceFiles_4.length; _i++) { + var sourceFile = sourceFiles_4[_i]; cancellationToken.throwIfCancellationRequested(); var nameTable = getNameTable(sourceFile); if (ts.lookUp(nameTable, internedName) !== undefined) { @@ -51291,7 +53360,7 @@ var ts; }; } function isImportSpecifierSymbol(symbol) { - return (symbol.flags & 8388608 /* Alias */) && !!ts.getDeclarationOfKind(symbol, 230 /* ImportSpecifier */); + return (symbol.flags & 8388608 /* Alias */) && !!ts.getDeclarationOfKind(symbol, 233 /* ImportSpecifier */); } function getInternedName(symbol, location, declarations) { // If this is an export or import specifier it could have been renamed using the 'as' syntax. @@ -51317,14 +53386,14 @@ var ts; // If this is the symbol of a named function expression or named class expression, // then named references are limited to its own scope. var valueDeclaration = symbol.valueDeclaration; - if (valueDeclaration && (valueDeclaration.kind === 177 /* FunctionExpression */ || valueDeclaration.kind === 190 /* ClassExpression */)) { + if (valueDeclaration && (valueDeclaration.kind === 178 /* FunctionExpression */ || valueDeclaration.kind === 191 /* ClassExpression */)) { return valueDeclaration; } // If this is private property or method, the scope is the containing class if (symbol.flags & (4 /* Property */ | 8192 /* Method */)) { var privateDeclaration = ts.forEach(symbol.getDeclarations(), function (d) { return (d.flags & 8 /* Private */) ? d : undefined; }); if (privateDeclaration) { - return ts.getAncestor(privateDeclaration, 218 /* ClassDeclaration */); + return ts.getAncestor(privateDeclaration, 220 /* ClassDeclaration */); } } // If the symbol is an import we would like to find it if we are looking for what it imports. @@ -51350,7 +53419,7 @@ var ts; // Different declarations have different containers, bail out return undefined; } - if (container.kind === 252 /* SourceFile */ && !ts.isExternalModule(container)) { + if (container.kind === 255 /* SourceFile */ && !ts.isExternalModule(container)) { // This is a global variable and not an external module, any declaration defined // within this scope is visible outside the file return undefined; @@ -51523,13 +53592,13 @@ var ts; // Whether 'super' occurs in a static context within a class. var staticFlag = 32 /* Static */; switch (searchSpaceNode.kind) { - case 143 /* PropertyDeclaration */: - case 142 /* PropertySignature */: - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: - case 146 /* Constructor */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: + case 144 /* PropertyDeclaration */: + case 143 /* PropertySignature */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: + case 147 /* Constructor */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: staticFlag &= searchSpaceNode.flags; searchSpaceNode = searchSpaceNode.parent; // re-assign to be the owning class break; @@ -51561,27 +53630,27 @@ var ts; // Whether 'this' occurs in a static context within a class. var staticFlag = 32 /* Static */; switch (searchSpaceNode.kind) { - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: if (ts.isObjectLiteralMethod(searchSpaceNode)) { break; } // fall through - case 143 /* PropertyDeclaration */: - case 142 /* PropertySignature */: - case 146 /* Constructor */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: + case 144 /* PropertyDeclaration */: + case 143 /* PropertySignature */: + case 147 /* Constructor */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: staticFlag &= searchSpaceNode.flags; searchSpaceNode = searchSpaceNode.parent; // re-assign to be the owning class break; - case 252 /* SourceFile */: + case 255 /* SourceFile */: if (ts.isExternalModule(searchSpaceNode)) { return undefined; } // Fall through - case 217 /* FunctionDeclaration */: - case 177 /* FunctionExpression */: + case 219 /* FunctionDeclaration */: + case 178 /* FunctionExpression */: break; // Computed properties in classes are not handled here because references to this are illegal, // so there is no point finding references to them. @@ -51590,7 +53659,7 @@ var ts; } var references = []; var possiblePositions; - if (searchSpaceNode.kind === 252 /* SourceFile */) { + if (searchSpaceNode.kind === 255 /* SourceFile */) { ts.forEach(sourceFiles, function (sourceFile) { possiblePositions = getPossibleSymbolReferencePositions(sourceFile, "this", sourceFile.getStart(), sourceFile.getEnd()); getThisReferencesInFile(sourceFile, sourceFile, possiblePositions, references); @@ -51616,33 +53685,33 @@ var ts; ts.forEach(possiblePositions, function (position) { cancellationToken.throwIfCancellationRequested(); var node = ts.getTouchingWord(sourceFile, position); - if (!node || (node.kind !== 97 /* ThisKeyword */ && node.kind !== 163 /* ThisType */)) { + if (!node || (node.kind !== 97 /* ThisKeyword */ && node.kind !== 164 /* ThisType */)) { return; } var container = ts.getThisContainer(node, /* includeArrowFunctions */ false); switch (searchSpaceNode.kind) { - case 177 /* FunctionExpression */: - case 217 /* FunctionDeclaration */: + case 178 /* FunctionExpression */: + case 219 /* FunctionDeclaration */: if (searchSpaceNode.symbol === container.symbol) { result.push(getReferenceEntryFromNode(node)); } break; - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: if (ts.isObjectLiteralMethod(searchSpaceNode) && searchSpaceNode.symbol === container.symbol) { result.push(getReferenceEntryFromNode(node)); } break; - case 190 /* ClassExpression */: - case 218 /* ClassDeclaration */: + case 191 /* ClassExpression */: + case 220 /* ClassDeclaration */: // Make sure the container belongs to the same class // and has the appropriate static modifier from the original container. if (container.parent && searchSpaceNode.symbol === container.parent.symbol && (container.flags & 32 /* Static */) === staticFlag) { result.push(getReferenceEntryFromNode(node)); } break; - case 252 /* SourceFile */: - if (container.kind === 252 /* SourceFile */ && !ts.isExternalModule(container)) { + case 255 /* SourceFile */: + if (container.kind === 255 /* SourceFile */ && !ts.isExternalModule(container)) { result.push(getReferenceEntryFromNode(node)); } break; @@ -51662,7 +53731,7 @@ var ts; // export {a as somethingElse} // We want the *local* declaration of 'a' as declared in the import, // *not* as declared within "mod" (or farther) - if (location.parent.kind === 234 /* ExportSpecifier */) { + if (location.parent.kind === 237 /* ExportSpecifier */) { result.push(typeChecker.getExportSpecifierLocalTargetSymbol(location.parent)); } // If the location is in a context sensitive location (i.e. in an object literal) try @@ -51692,7 +53761,7 @@ var ts; // we should include both parameter declaration symbol and property declaration symbol // Parameter Declaration symbol is only visible within function scope, so the symbol is stored in constructor.locals. // Property Declaration symbol is a member of the class, so the symbol is stored in its class Declaration.symbol.members - if (symbol.valueDeclaration && symbol.valueDeclaration.kind === 140 /* Parameter */ && + if (symbol.valueDeclaration && symbol.valueDeclaration.kind === 141 /* Parameter */ && ts.isParameterPropertyDeclaration(symbol.valueDeclaration)) { result = result.concat(typeChecker.getSymbolsOfParameterPropertyDeclaration(symbol.valueDeclaration, symbol.name)); } @@ -51737,11 +53806,11 @@ var ts; } if (symbol.flags & (32 /* Class */ | 64 /* Interface */)) { ts.forEach(symbol.getDeclarations(), function (declaration) { - if (declaration.kind === 218 /* ClassDeclaration */) { + if (declaration.kind === 220 /* ClassDeclaration */) { getPropertySymbolFromTypeReference(ts.getClassExtendsHeritageClauseElement(declaration)); ts.forEach(ts.getClassImplementsHeritageClauseElements(declaration), getPropertySymbolFromTypeReference); } - else if (declaration.kind === 219 /* InterfaceDeclaration */) { + else if (declaration.kind === 221 /* InterfaceDeclaration */) { ts.forEach(ts.getInterfaceBaseTypeNodes(declaration), getPropertySymbolFromTypeReference); } }); @@ -51778,7 +53847,7 @@ var ts; // import {a} from "mod"; // export {a as somethingElse} // We want the local target of the export (i.e. the import symbol) and not the final target (i.e. "mod".a) - if (referenceLocation.parent.kind === 234 /* ExportSpecifier */) { + if (referenceLocation.parent.kind === 237 /* ExportSpecifier */) { var aliasedSymbol = typeChecker.getExportSpecifierLocalTargetSymbol(referenceLocation.parent); if (searchSymbols.indexOf(aliasedSymbol) >= 0) { return aliasedSymbol; @@ -51813,19 +53882,19 @@ var ts; if (isNameOfPropertyAssignment(node)) { var objectLiteral = node.parent.parent; var contextualType = typeChecker.getContextualType(objectLiteral); - var name_36 = node.text; + var name_41 = node.text; if (contextualType) { if (contextualType.flags & 16384 /* Union */) { // This is a union type, first see if the property we are looking for is a union property (i.e. exists in all types) // if not, search the constituent types for the property - var unionProperty = contextualType.getProperty(name_36); + var unionProperty = contextualType.getProperty(name_41); if (unionProperty) { return [unionProperty]; } else { var result_5 = []; ts.forEach(contextualType.types, function (t) { - var symbol = t.getProperty(name_36); + var symbol = t.getProperty(name_41); if (symbol) { result_5.push(symbol); } @@ -51834,7 +53903,7 @@ var ts; } } else { - var symbol_1 = contextualType.getProperty(name_36); + var symbol_1 = contextualType.getProperty(name_41); if (symbol_1) { return [symbol_1]; } @@ -51892,10 +53961,10 @@ var ts; } var parent = node.parent; if (parent) { - if (parent.kind === 184 /* PostfixUnaryExpression */ || parent.kind === 183 /* PrefixUnaryExpression */) { + if (parent.kind === 185 /* PostfixUnaryExpression */ || parent.kind === 184 /* PrefixUnaryExpression */) { return true; } - else if (parent.kind === 185 /* BinaryExpression */ && parent.left === node) { + else if (parent.kind === 186 /* BinaryExpression */ && parent.left === node) { var operator = parent.operatorToken.kind; return 56 /* FirstAssignment */ <= operator && operator <= 68 /* LastAssignment */; } @@ -51926,33 +53995,33 @@ var ts; } function getMeaningFromDeclaration(node) { switch (node.kind) { - case 140 /* Parameter */: - case 215 /* VariableDeclaration */: - case 167 /* BindingElement */: - case 143 /* PropertyDeclaration */: - case 142 /* PropertySignature */: - case 249 /* PropertyAssignment */: - case 250 /* ShorthandPropertyAssignment */: - case 251 /* EnumMember */: - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: - case 146 /* Constructor */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: - case 217 /* FunctionDeclaration */: - case 177 /* FunctionExpression */: - case 178 /* ArrowFunction */: - case 248 /* CatchClause */: + case 141 /* Parameter */: + case 217 /* VariableDeclaration */: + case 168 /* BindingElement */: + case 144 /* PropertyDeclaration */: + case 143 /* PropertySignature */: + case 252 /* PropertyAssignment */: + case 253 /* ShorthandPropertyAssignment */: + case 254 /* EnumMember */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: + case 147 /* Constructor */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: + case 219 /* FunctionDeclaration */: + case 178 /* FunctionExpression */: + case 179 /* ArrowFunction */: + case 251 /* CatchClause */: return 1 /* Value */; - case 139 /* TypeParameter */: - case 219 /* InterfaceDeclaration */: - case 220 /* TypeAliasDeclaration */: - case 157 /* TypeLiteral */: + case 140 /* TypeParameter */: + case 221 /* InterfaceDeclaration */: + case 222 /* TypeAliasDeclaration */: + case 158 /* TypeLiteral */: return 2 /* Type */; - case 218 /* ClassDeclaration */: - case 221 /* EnumDeclaration */: + case 220 /* ClassDeclaration */: + case 223 /* EnumDeclaration */: return 1 /* Value */ | 2 /* Type */; - case 222 /* ModuleDeclaration */: + case 224 /* ModuleDeclaration */: if (ts.isAmbientModule(node)) { return 4 /* Namespace */ | 1 /* Value */; } @@ -51962,15 +54031,15 @@ var ts; else { return 4 /* Namespace */; } - case 229 /* NamedImports */: - case 230 /* ImportSpecifier */: - case 225 /* ImportEqualsDeclaration */: - case 226 /* ImportDeclaration */: - case 231 /* ExportAssignment */: - case 232 /* ExportDeclaration */: + case 232 /* NamedImports */: + case 233 /* ImportSpecifier */: + case 228 /* ImportEqualsDeclaration */: + case 229 /* ImportDeclaration */: + case 234 /* ExportAssignment */: + case 235 /* ExportDeclaration */: return 1 /* Value */ | 2 /* Type */ | 4 /* Namespace */; // An external module can be a Value - case 252 /* SourceFile */: + case 255 /* SourceFile */: return 4 /* Namespace */ | 1 /* Value */; } return 1 /* Value */ | 2 /* Type */ | 4 /* Namespace */; @@ -51979,10 +54048,10 @@ var ts; if (ts.isRightSideOfQualifiedNameOrPropertyAccess(node)) { node = node.parent; } - return node.parent.kind === 153 /* TypeReference */ || - (node.parent.kind === 192 /* ExpressionWithTypeArguments */ && !ts.isExpressionWithTypeArgumentsInClassExtendsClause(node.parent)) || + return node.parent.kind === 154 /* TypeReference */ || + (node.parent.kind === 193 /* ExpressionWithTypeArguments */ && !ts.isExpressionWithTypeArgumentsInClassExtendsClause(node.parent)) || (node.kind === 97 /* ThisKeyword */ && !ts.isExpression(node)) || - node.kind === 163 /* ThisType */; + node.kind === 164 /* ThisType */; } function isNamespaceReference(node) { return isQualifiedNameNamespaceReference(node) || isPropertyAccessNamespaceReference(node); @@ -51990,32 +54059,32 @@ var ts; function isPropertyAccessNamespaceReference(node) { var root = node; var isLastClause = true; - if (root.parent.kind === 170 /* PropertyAccessExpression */) { - while (root.parent && root.parent.kind === 170 /* PropertyAccessExpression */) { + if (root.parent.kind === 171 /* PropertyAccessExpression */) { + while (root.parent && root.parent.kind === 171 /* PropertyAccessExpression */) { root = root.parent; } isLastClause = root.name === node; } - if (!isLastClause && root.parent.kind === 192 /* ExpressionWithTypeArguments */ && root.parent.parent.kind === 247 /* HeritageClause */) { + if (!isLastClause && root.parent.kind === 193 /* ExpressionWithTypeArguments */ && root.parent.parent.kind === 250 /* HeritageClause */) { var decl = root.parent.parent.parent; - return (decl.kind === 218 /* ClassDeclaration */ && root.parent.parent.token === 106 /* ImplementsKeyword */) || - (decl.kind === 219 /* InterfaceDeclaration */ && root.parent.parent.token === 83 /* ExtendsKeyword */); + return (decl.kind === 220 /* ClassDeclaration */ && root.parent.parent.token === 106 /* ImplementsKeyword */) || + (decl.kind === 221 /* InterfaceDeclaration */ && root.parent.parent.token === 83 /* ExtendsKeyword */); } return false; } function isQualifiedNameNamespaceReference(node) { var root = node; var isLastClause = true; - if (root.parent.kind === 137 /* QualifiedName */) { - while (root.parent && root.parent.kind === 137 /* QualifiedName */) { + if (root.parent.kind === 138 /* QualifiedName */) { + while (root.parent && root.parent.kind === 138 /* QualifiedName */) { root = root.parent; } isLastClause = root.right === node; } - return root.parent.kind === 153 /* TypeReference */ && !isLastClause; + return root.parent.kind === 154 /* TypeReference */ && !isLastClause; } function isInRightSideOfImport(node) { - while (node.parent.kind === 137 /* QualifiedName */) { + while (node.parent.kind === 138 /* QualifiedName */) { node = node.parent; } return ts.isInternalModuleImportEqualsDeclaration(node.parent) && node.parent.moduleReference === node; @@ -52025,15 +54094,15 @@ var ts; // import a = |b|; // Namespace // import a = |b.c|; // Value, type, namespace // import a = |b.c|.d; // Namespace - if (node.parent.kind === 137 /* QualifiedName */ && + if (node.parent.kind === 138 /* QualifiedName */ && node.parent.right === node && - node.parent.parent.kind === 225 /* ImportEqualsDeclaration */) { + node.parent.parent.kind === 228 /* ImportEqualsDeclaration */) { return 1 /* Value */ | 2 /* Type */ | 4 /* Namespace */; } return 4 /* Namespace */; } function getMeaningFromLocation(node) { - if (node.parent.kind === 231 /* ExportAssignment */) { + if (node.parent.kind === 234 /* ExportAssignment */) { return 1 /* Value */ | 2 /* Type */ | 4 /* Namespace */; } else if (isInRightSideOfImport(node)) { @@ -52062,7 +54131,7 @@ var ts; return ts.SignatureHelp.getSignatureHelpItems(program, sourceFile, position, cancellationToken); } /// Syntactic features - function getSourceFile(fileName) { + function getNonBoundSourceFile(fileName) { return syntaxTreeCache.getCurrentSourceFile(fileName); } function getNameOrDottedNameSpan(fileName, startPos, endPos) { @@ -52073,16 +54142,16 @@ var ts; return; } switch (node.kind) { - case 170 /* PropertyAccessExpression */: - case 137 /* QualifiedName */: + case 171 /* PropertyAccessExpression */: + case 138 /* QualifiedName */: case 9 /* StringLiteral */: - case 164 /* StringLiteralType */: + case 165 /* StringLiteralType */: case 84 /* FalseKeyword */: case 99 /* TrueKeyword */: case 93 /* NullKeyword */: case 95 /* SuperKeyword */: case 97 /* ThisKeyword */: - case 163 /* ThisType */: + case 164 /* ThisType */: case 69 /* Identifier */: break; // Cant create the text span @@ -52099,7 +54168,7 @@ var ts; // If this is name of a module declarations, check if this is right side of dotted module name // If parent of the module declaration which is parent of this node is module declaration and its body is the module declaration that this node is name of // Then this name is name from dotted module - if (nodeForStartPos.parent.parent.kind === 222 /* ModuleDeclaration */ && + if (nodeForStartPos.parent.parent.kind === 224 /* ModuleDeclaration */ && nodeForStartPos.parent.parent.body === nodeForStartPos.parent) { // Use parent module declarations name for start pos nodeForStartPos = nodeForStartPos.parent.parent.name; @@ -52140,10 +54209,10 @@ var ts; // That means we're calling back into the host around every 1.2k of the file we process. // Lib.d.ts has similar numbers. switch (kind) { - case 222 /* ModuleDeclaration */: - case 218 /* ClassDeclaration */: - case 219 /* InterfaceDeclaration */: - case 217 /* FunctionDeclaration */: + case 224 /* ModuleDeclaration */: + case 220 /* ClassDeclaration */: + case 221 /* InterfaceDeclaration */: + case 219 /* FunctionDeclaration */: cancellationToken.throwIfCancellationRequested(); } } @@ -52197,7 +54266,7 @@ var ts; */ function hasValueSideModule(symbol) { return ts.forEach(symbol.declarations, function (declaration) { - return declaration.kind === 222 /* ModuleDeclaration */ && + return declaration.kind === 224 /* ModuleDeclaration */ && ts.getModuleInstanceState(declaration) === 1 /* Instantiated */; }); } @@ -52358,16 +54427,16 @@ var ts; pushClassification(tag.tagName.pos, tag.tagName.end - tag.tagName.pos, 18 /* docCommentTagName */); pos = tag.tagName.end; switch (tag.kind) { - case 271 /* JSDocParameterTag */: + case 274 /* JSDocParameterTag */: processJSDocParameterTag(tag); break; - case 274 /* JSDocTemplateTag */: + case 277 /* JSDocTemplateTag */: processJSDocTemplateTag(tag); break; - case 273 /* JSDocTypeTag */: + case 276 /* JSDocTypeTag */: processElement(tag.typeExpression); break; - case 272 /* JSDocReturnTag */: + case 275 /* JSDocReturnTag */: processElement(tag.typeExpression); break; } @@ -52434,10 +54503,10 @@ var ts; return true; } var classifiedElementName = tryClassifyJsxElementName(node); - if (!ts.isToken(node) && node.kind !== 240 /* JsxText */ && classifiedElementName === undefined) { + if (!ts.isToken(node) && node.kind !== 243 /* JsxText */ && classifiedElementName === undefined) { return false; } - var tokenStart = node.kind === 240 /* JsxText */ ? node.pos : classifyLeadingTriviaAndGetTokenStart(node); + var tokenStart = node.kind === 243 /* JsxText */ ? node.pos : classifyLeadingTriviaAndGetTokenStart(node); var tokenWidth = node.end - tokenStart; ts.Debug.assert(tokenWidth >= 0); if (tokenWidth > 0) { @@ -52450,22 +54519,22 @@ var ts; } function tryClassifyJsxElementName(token) { switch (token.parent && token.parent.kind) { - case 239 /* JsxOpeningElement */: + case 242 /* JsxOpeningElement */: if (token.parent.tagName === token) { return 19 /* jsxOpenTagName */; } break; - case 241 /* JsxClosingElement */: + case 244 /* JsxClosingElement */: if (token.parent.tagName === token) { return 20 /* jsxCloseTagName */; } break; - case 238 /* JsxSelfClosingElement */: + case 241 /* JsxSelfClosingElement */: if (token.parent.tagName === token) { return 21 /* jsxSelfClosingTagName */; } break; - case 242 /* JsxAttribute */: + case 245 /* JsxAttribute */: if (token.parent.name === token) { return 22 /* jsxAttribute */; } @@ -52493,17 +54562,17 @@ var ts; if (token) { if (tokenKind === 56 /* EqualsToken */) { // the '=' in a variable declaration is special cased here. - if (token.parent.kind === 215 /* VariableDeclaration */ || - token.parent.kind === 143 /* PropertyDeclaration */ || - token.parent.kind === 140 /* Parameter */ || - token.parent.kind === 242 /* JsxAttribute */) { + if (token.parent.kind === 217 /* VariableDeclaration */ || + token.parent.kind === 144 /* PropertyDeclaration */ || + token.parent.kind === 141 /* Parameter */ || + token.parent.kind === 245 /* JsxAttribute */) { return 5 /* operator */; } } - if (token.parent.kind === 185 /* BinaryExpression */ || - token.parent.kind === 183 /* PrefixUnaryExpression */ || - token.parent.kind === 184 /* PostfixUnaryExpression */ || - token.parent.kind === 186 /* ConditionalExpression */) { + if (token.parent.kind === 186 /* BinaryExpression */ || + token.parent.kind === 184 /* PrefixUnaryExpression */ || + token.parent.kind === 185 /* PostfixUnaryExpression */ || + token.parent.kind === 187 /* ConditionalExpression */) { return 5 /* operator */; } } @@ -52512,8 +54581,8 @@ var ts; else if (tokenKind === 8 /* NumericLiteral */) { return 4 /* numericLiteral */; } - else if (tokenKind === 9 /* StringLiteral */ || tokenKind === 164 /* StringLiteralType */) { - return token.parent.kind === 242 /* JsxAttribute */ ? 24 /* jsxAttributeStringLiteralValue */ : 6 /* stringLiteral */; + else if (tokenKind === 9 /* StringLiteral */ || tokenKind === 165 /* StringLiteralType */) { + return token.parent.kind === 245 /* JsxAttribute */ ? 24 /* jsxAttributeStringLiteralValue */ : 6 /* stringLiteral */; } else if (tokenKind === 10 /* RegularExpressionLiteral */) { // TODO: we should get another classification type for these literals. @@ -52523,38 +54592,38 @@ var ts; // TODO (drosen): we should *also* get another classification type for these literals. return 6 /* stringLiteral */; } - else if (tokenKind === 240 /* JsxText */) { + else if (tokenKind === 243 /* JsxText */) { return 23 /* jsxText */; } else if (tokenKind === 69 /* Identifier */) { if (token) { switch (token.parent.kind) { - case 218 /* ClassDeclaration */: + case 220 /* ClassDeclaration */: if (token.parent.name === token) { return 11 /* className */; } return; - case 139 /* TypeParameter */: + case 140 /* TypeParameter */: if (token.parent.name === token) { return 15 /* typeParameterName */; } return; - case 219 /* InterfaceDeclaration */: + case 221 /* InterfaceDeclaration */: if (token.parent.name === token) { return 13 /* interfaceName */; } return; - case 221 /* EnumDeclaration */: + case 223 /* EnumDeclaration */: if (token.parent.name === token) { return 12 /* enumName */; } return; - case 222 /* ModuleDeclaration */: + case 224 /* ModuleDeclaration */: if (token.parent.name === token) { return 14 /* moduleName */; } return; - case 140 /* Parameter */: + case 141 /* Parameter */: if (token.parent.name === token) { return 17 /* parameterName */; } @@ -52698,19 +54767,19 @@ var ts; var commentOwner; findOwner: for (commentOwner = tokenAtPos; commentOwner; commentOwner = commentOwner.parent) { switch (commentOwner.kind) { - case 217 /* FunctionDeclaration */: - case 145 /* MethodDeclaration */: - case 146 /* Constructor */: - case 218 /* ClassDeclaration */: - case 197 /* VariableStatement */: + case 219 /* FunctionDeclaration */: + case 146 /* MethodDeclaration */: + case 147 /* Constructor */: + case 220 /* ClassDeclaration */: + case 199 /* VariableStatement */: break findOwner; - case 252 /* SourceFile */: + case 255 /* SourceFile */: return undefined; - case 222 /* ModuleDeclaration */: + case 224 /* ModuleDeclaration */: // If in walking up the tree, we hit a a nested namespace declaration, // then we must be somewhere within a dotted namespace name; however we don't // want to give back a JSDoc template for the 'b' or 'c' in 'namespace a.b.c { }'. - if (commentOwner.parent.kind === 222 /* ModuleDeclaration */) { + if (commentOwner.parent.kind === 224 /* ModuleDeclaration */) { return undefined; } break findOwner; @@ -52751,7 +54820,7 @@ var ts; if (ts.isFunctionLike(commentOwner)) { return commentOwner.parameters; } - if (commentOwner.kind === 197 /* VariableStatement */) { + if (commentOwner.kind === 199 /* VariableStatement */) { var varStatement = commentOwner; var varDeclarations = varStatement.declarationList.declarations; if (varDeclarations.length === 1 && varDeclarations[0].initializer) { @@ -52769,17 +54838,17 @@ var ts; * @returns the parameters of a signature found on the RHS if one exists; otherwise 'emptyArray'. */ function getParametersFromRightHandSideOfAssignment(rightHandSide) { - while (rightHandSide.kind === 176 /* ParenthesizedExpression */) { + while (rightHandSide.kind === 177 /* ParenthesizedExpression */) { rightHandSide = rightHandSide.expression; } switch (rightHandSide.kind) { - case 177 /* FunctionExpression */: - case 178 /* ArrowFunction */: + case 178 /* FunctionExpression */: + case 179 /* ArrowFunction */: return rightHandSide.parameters; - case 190 /* ClassExpression */: + case 191 /* ClassExpression */: for (var _i = 0, _a = rightHandSide.members; _i < _a.length; _i++) { var member = _a[_i]; - if (member.kind === 146 /* Constructor */) { + if (member.kind === 147 /* Constructor */) { return member.parameters; } } @@ -53004,7 +55073,7 @@ var ts; getFormattingEditsAfterKeystroke: getFormattingEditsAfterKeystroke, getDocCommentTemplateAtPosition: getDocCommentTemplateAtPosition, getEmitOutput: getEmitOutput, - getSourceFile: getSourceFile, + getNonBoundSourceFile: getNonBoundSourceFile, getProgram: getProgram }; } @@ -53033,7 +55102,7 @@ var ts; // then we want 'something' to be in the name table. Similarly, if we have // "a['propname']" then we want to store "propname" in the name table. if (ts.isDeclarationName(node) || - node.parent.kind === 236 /* ExternalModuleReference */ || + node.parent.kind === 239 /* ExternalModuleReference */ || isArgumentOfElementAccessExpression(node)) { nameTable[node.text] = nameTable[node.text] === undefined ? node.pos : -1; } @@ -53046,7 +55115,7 @@ var ts; function isArgumentOfElementAccessExpression(node) { return node && node.parent && - node.parent.kind === 171 /* ElementAccessExpression */ && + node.parent.kind === 172 /* ElementAccessExpression */ && node.parent.argumentExpression === node; } /// Classifier @@ -53305,7 +55374,7 @@ var ts; var end = scanner.getTextPos(); addResult(start, end, classFromKind(token)); if (end >= text.length) { - if (token === 9 /* StringLiteral */ || token === 164 /* StringLiteralType */) { + if (token === 9 /* StringLiteral */ || token === 165 /* StringLiteralType */) { // Check to see if we finished up on a multiline string literal. var tokenText = scanner.getTokenText(); if (scanner.isUnterminated()) { @@ -53428,7 +55497,7 @@ var ts; } } function isKeyword(token) { - return token >= 70 /* FirstKeyword */ && token <= 136 /* LastKeyword */; + return token >= 70 /* FirstKeyword */ && token <= 137 /* LastKeyword */; } function classFromKind(token) { if (isKeyword(token)) { @@ -53444,7 +55513,7 @@ var ts; case 8 /* NumericLiteral */: return 4 /* numericLiteral */; case 9 /* StringLiteral */: - case 164 /* StringLiteralType */: + case 165 /* StringLiteralType */: return 6 /* stringLiteral */; case 10 /* RegularExpressionLiteral */: return 7 /* regularExpressionLiteral */; @@ -53556,113 +55625,113 @@ var ts; function spanInNode(node) { if (node) { switch (node.kind) { - case 197 /* VariableStatement */: + case 199 /* VariableStatement */: // Span on first variable declaration return spanInVariableDeclaration(node.declarationList.declarations[0]); - case 215 /* VariableDeclaration */: - case 143 /* PropertyDeclaration */: - case 142 /* PropertySignature */: + case 217 /* VariableDeclaration */: + case 144 /* PropertyDeclaration */: + case 143 /* PropertySignature */: return spanInVariableDeclaration(node); - case 140 /* Parameter */: + case 141 /* Parameter */: return spanInParameterDeclaration(node); - case 217 /* FunctionDeclaration */: - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: - case 146 /* Constructor */: - case 177 /* FunctionExpression */: - case 178 /* ArrowFunction */: + case 219 /* FunctionDeclaration */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: + case 147 /* Constructor */: + case 178 /* FunctionExpression */: + case 179 /* ArrowFunction */: return spanInFunctionDeclaration(node); - case 196 /* Block */: + case 198 /* Block */: if (ts.isFunctionBlock(node)) { return spanInFunctionBlock(node); } // Fall through - case 223 /* ModuleBlock */: + case 225 /* ModuleBlock */: return spanInBlock(node); - case 248 /* CatchClause */: + case 251 /* CatchClause */: return spanInBlock(node.block); - case 199 /* ExpressionStatement */: + case 201 /* ExpressionStatement */: // span on the expression return textSpan(node.expression); - case 208 /* ReturnStatement */: + case 210 /* ReturnStatement */: // span on return keyword and expression if present return textSpan(node.getChildAt(0), node.expression); - case 202 /* WhileStatement */: + case 204 /* WhileStatement */: // Span on while(...) return textSpanEndingAtNextToken(node, node.expression); - case 201 /* DoStatement */: + case 203 /* DoStatement */: // span in statement of the do statement return spanInNode(node.statement); - case 214 /* DebuggerStatement */: + case 216 /* DebuggerStatement */: // span on debugger keyword return textSpan(node.getChildAt(0)); - case 200 /* IfStatement */: + case 202 /* IfStatement */: // set on if(..) span return textSpanEndingAtNextToken(node, node.expression); - case 211 /* LabeledStatement */: + case 213 /* LabeledStatement */: // span in statement return spanInNode(node.statement); - case 207 /* BreakStatement */: - case 206 /* ContinueStatement */: + case 209 /* BreakStatement */: + case 208 /* ContinueStatement */: // On break or continue keyword and label if present return textSpan(node.getChildAt(0), node.label); - case 203 /* ForStatement */: + case 205 /* ForStatement */: return spanInForStatement(node); - case 204 /* ForInStatement */: + case 206 /* ForInStatement */: // span of for (a in ...) return textSpanEndingAtNextToken(node, node.expression); - case 205 /* ForOfStatement */: + case 207 /* ForOfStatement */: // span in initializer return spanInInitializerOfForLike(node); - case 210 /* SwitchStatement */: + case 212 /* SwitchStatement */: // span on switch(...) return textSpanEndingAtNextToken(node, node.expression); - case 245 /* CaseClause */: - case 246 /* DefaultClause */: + case 248 /* CaseClause */: + case 249 /* DefaultClause */: // span in first statement of the clause return spanInNode(node.statements[0]); - case 213 /* TryStatement */: + case 215 /* TryStatement */: // span in try block return spanInBlock(node.tryBlock); - case 212 /* ThrowStatement */: + case 214 /* ThrowStatement */: // span in throw ... return textSpan(node, node.expression); - case 231 /* ExportAssignment */: + case 234 /* ExportAssignment */: // span on export = id return textSpan(node, node.expression); - case 225 /* ImportEqualsDeclaration */: + case 228 /* ImportEqualsDeclaration */: // import statement without including semicolon return textSpan(node, node.moduleReference); - case 226 /* ImportDeclaration */: + case 229 /* ImportDeclaration */: // import statement without including semicolon return textSpan(node, node.moduleSpecifier); - case 232 /* ExportDeclaration */: + case 235 /* ExportDeclaration */: // import statement without including semicolon return textSpan(node, node.moduleSpecifier); - case 222 /* ModuleDeclaration */: + case 224 /* ModuleDeclaration */: // span on complete module if it is instantiated if (ts.getModuleInstanceState(node) !== 1 /* Instantiated */) { return undefined; } - case 218 /* ClassDeclaration */: - case 221 /* EnumDeclaration */: - case 251 /* EnumMember */: - case 167 /* BindingElement */: + case 220 /* ClassDeclaration */: + case 223 /* EnumDeclaration */: + case 254 /* EnumMember */: + case 168 /* BindingElement */: // span on complete node return textSpan(node); - case 209 /* WithStatement */: + case 211 /* WithStatement */: // span in statement return spanInNode(node.statement); - case 141 /* Decorator */: + case 142 /* Decorator */: return spanInNodeArray(node.parent.decorators); - case 165 /* ObjectBindingPattern */: - case 166 /* ArrayBindingPattern */: + case 166 /* ObjectBindingPattern */: + case 167 /* ArrayBindingPattern */: return spanInBindingPattern(node); // No breakpoint in interface, type alias - case 219 /* InterfaceDeclaration */: - case 220 /* TypeAliasDeclaration */: + case 221 /* InterfaceDeclaration */: + case 222 /* TypeAliasDeclaration */: return undefined; // Tokens: case 23 /* SemicolonToken */: @@ -53692,7 +55761,7 @@ var ts; case 72 /* CatchKeyword */: case 85 /* FinallyKeyword */: return spanInNextNode(node); - case 136 /* OfKeyword */: + case 137 /* OfKeyword */: return spanInOfKeyword(node); default: // Destructuring pattern in destructuring assignment @@ -53705,13 +55774,13 @@ var ts; // a or ...c or d: x from // [a, b, ...c] or { a, b } or { d: x } from destructuring pattern if ((node.kind === 69 /* Identifier */ || - node.kind == 189 /* SpreadElementExpression */ || - node.kind === 249 /* PropertyAssignment */ || - node.kind === 250 /* ShorthandPropertyAssignment */) && + node.kind == 190 /* SpreadElementExpression */ || + node.kind === 252 /* PropertyAssignment */ || + node.kind === 253 /* ShorthandPropertyAssignment */) && ts.isArrayLiteralOrObjectLiteralDestructuringPattern(node.parent)) { return textSpan(node); } - if (node.kind === 185 /* BinaryExpression */) { + if (node.kind === 186 /* BinaryExpression */) { var binaryExpression = node; // Set breakpoint in destructuring pattern if its destructuring assignment // [a, b, c] or {a, b, c} of @@ -53734,22 +55803,22 @@ var ts; } if (ts.isExpression(node)) { switch (node.parent.kind) { - case 201 /* DoStatement */: + case 203 /* DoStatement */: // Set span as if on while keyword return spanInPreviousNode(node); - case 141 /* Decorator */: + case 142 /* Decorator */: // Set breakpoint on the decorator emit return spanInNode(node.parent); - case 203 /* ForStatement */: - case 205 /* ForOfStatement */: + case 205 /* ForStatement */: + case 207 /* ForOfStatement */: return textSpan(node); - case 185 /* BinaryExpression */: + case 186 /* BinaryExpression */: if (node.parent.operatorToken.kind === 24 /* CommaToken */) { // if this is comma expression, the breakpoint is possible in this expression return textSpan(node); } break; - case 178 /* ArrowFunction */: + case 179 /* ArrowFunction */: if (node.parent.body === node) { // If this is body of arrow function, it is allowed to have the breakpoint return textSpan(node); @@ -53758,13 +55827,13 @@ var ts; } } // If this is name of property assignment, set breakpoint in the initializer - if (node.parent.kind === 249 /* PropertyAssignment */ && + if (node.parent.kind === 252 /* PropertyAssignment */ && node.parent.name === node && !ts.isArrayLiteralOrObjectLiteralDestructuringPattern(node.parent.parent)) { return spanInNode(node.parent.initializer); } // Breakpoint in type assertion goes to its operand - if (node.parent.kind === 175 /* TypeAssertionExpression */ && node.parent.type === node) { + if (node.parent.kind === 176 /* TypeAssertionExpression */ && node.parent.type === node) { return spanInNextNode(node.parent.type); } // return type of function go to previous token @@ -53772,8 +55841,8 @@ var ts; return spanInPreviousNode(node); } // initializer of variable/parameter declaration go to previous node - if ((node.parent.kind === 215 /* VariableDeclaration */ || - node.parent.kind === 140 /* Parameter */)) { + if ((node.parent.kind === 217 /* VariableDeclaration */ || + node.parent.kind === 141 /* Parameter */)) { var paramOrVarDecl = node.parent; if (paramOrVarDecl.initializer === node || paramOrVarDecl.type === node || @@ -53781,7 +55850,7 @@ var ts; return spanInPreviousNode(node); } } - if (node.parent.kind === 185 /* BinaryExpression */) { + if (node.parent.kind === 186 /* BinaryExpression */) { var binaryExpression = node.parent; if (ts.isArrayLiteralOrObjectLiteralDestructuringPattern(binaryExpression.left) && (binaryExpression.right === node || @@ -53807,7 +55876,7 @@ var ts; } function spanInVariableDeclaration(variableDeclaration) { // If declaration of for in statement, just set the span in parent - if (variableDeclaration.parent.parent.kind === 204 /* ForInStatement */) { + if (variableDeclaration.parent.parent.kind === 206 /* ForInStatement */) { return spanInNode(variableDeclaration.parent.parent); } // If this is a destructuring pattern set breakpoint in binding pattern @@ -53818,7 +55887,7 @@ var ts; // or its declaration from 'for of' if (variableDeclaration.initializer || (variableDeclaration.flags & 1 /* Export */) || - variableDeclaration.parent.parent.kind === 205 /* ForOfStatement */) { + variableDeclaration.parent.parent.kind === 207 /* ForOfStatement */) { return textSpanFromVariableDeclaration(variableDeclaration); } var declarations = variableDeclaration.parent.declarations; @@ -53858,7 +55927,7 @@ var ts; } function canFunctionHaveSpanInWholeDeclaration(functionDeclaration) { return !!(functionDeclaration.flags & 1 /* Export */) || - (functionDeclaration.parent.kind === 218 /* ClassDeclaration */ && functionDeclaration.kind !== 146 /* Constructor */); + (functionDeclaration.parent.kind === 220 /* ClassDeclaration */ && functionDeclaration.kind !== 147 /* Constructor */); } function spanInFunctionDeclaration(functionDeclaration) { // No breakpoints in the function signature @@ -53881,34 +55950,34 @@ var ts; } function spanInBlock(block) { switch (block.parent.kind) { - case 222 /* ModuleDeclaration */: + case 224 /* ModuleDeclaration */: if (ts.getModuleInstanceState(block.parent) !== 1 /* Instantiated */) { return undefined; } // Set on parent if on same line otherwise on first statement - case 202 /* WhileStatement */: - case 200 /* IfStatement */: - case 204 /* ForInStatement */: + case 204 /* WhileStatement */: + case 202 /* IfStatement */: + case 206 /* ForInStatement */: return spanInNodeIfStartsOnSameLine(block.parent, block.statements[0]); // Set span on previous token if it starts on same line otherwise on the first statement of the block - case 203 /* ForStatement */: - case 205 /* ForOfStatement */: + case 205 /* ForStatement */: + case 207 /* ForOfStatement */: return spanInNodeIfStartsOnSameLine(ts.findPrecedingToken(block.pos, sourceFile, block.parent), block.statements[0]); } // Default action is to set on first statement return spanInNode(block.statements[0]); } - function spanInInitializerOfForLike(forLikeStaement) { - if (forLikeStaement.initializer.kind === 216 /* VariableDeclarationList */) { + function spanInInitializerOfForLike(forLikeStatement) { + if (forLikeStatement.initializer.kind === 218 /* VariableDeclarationList */) { // declaration list, set breakpoint in first declaration - var variableDeclarationList = forLikeStaement.initializer; + var variableDeclarationList = forLikeStatement.initializer; if (variableDeclarationList.declarations.length > 0) { return spanInNode(variableDeclarationList.declarations[0]); } } else { // Expression - set breakpoint in it - return spanInNode(forLikeStaement.initializer); + return spanInNode(forLikeStatement.initializer); } } function spanInForStatement(forStatement) { @@ -53924,23 +55993,23 @@ var ts; } function spanInBindingPattern(bindingPattern) { // Set breakpoint in first binding element - var firstBindingElement = ts.forEach(bindingPattern.elements, function (element) { return element.kind !== 191 /* OmittedExpression */ ? element : undefined; }); + var firstBindingElement = ts.forEach(bindingPattern.elements, function (element) { return element.kind !== 192 /* OmittedExpression */ ? element : undefined; }); if (firstBindingElement) { return spanInNode(firstBindingElement); } // Empty binding pattern of binding element, set breakpoint on binding element - if (bindingPattern.parent.kind === 167 /* BindingElement */) { + if (bindingPattern.parent.kind === 168 /* BindingElement */) { return textSpan(bindingPattern.parent); } // Variable declaration is used as the span return textSpanFromVariableDeclaration(bindingPattern.parent); } function spanInArrayLiteralOrObjectLiteralDestructuringPattern(node) { - ts.Debug.assert(node.kind !== 166 /* ArrayBindingPattern */ && node.kind !== 165 /* ObjectBindingPattern */); - var elements = node.kind === 168 /* ArrayLiteralExpression */ ? + ts.Debug.assert(node.kind !== 167 /* ArrayBindingPattern */ && node.kind !== 166 /* ObjectBindingPattern */); + var elements = node.kind === 169 /* ArrayLiteralExpression */ ? node.elements : node.properties; - var firstBindingElement = ts.forEach(elements, function (element) { return element.kind !== 191 /* OmittedExpression */ ? element : undefined; }); + var firstBindingElement = ts.forEach(elements, function (element) { return element.kind !== 192 /* OmittedExpression */ ? element : undefined; }); if (firstBindingElement) { return spanInNode(firstBindingElement); } @@ -53948,18 +56017,18 @@ var ts; // just nested element in another destructuring assignment // set breakpoint on assignment when parent is destructuring assignment // Otherwise set breakpoint for this element - return textSpan(node.parent.kind === 185 /* BinaryExpression */ ? node.parent : node); + return textSpan(node.parent.kind === 186 /* BinaryExpression */ ? node.parent : node); } // Tokens: function spanInOpenBraceToken(node) { switch (node.parent.kind) { - case 221 /* EnumDeclaration */: + case 223 /* EnumDeclaration */: var enumDeclaration = node.parent; return spanInNodeIfStartsOnSameLine(ts.findPrecedingToken(node.pos, sourceFile, node.parent), enumDeclaration.members.length ? enumDeclaration.members[0] : enumDeclaration.getLastToken(sourceFile)); - case 218 /* ClassDeclaration */: + case 220 /* ClassDeclaration */: var classDeclaration = node.parent; return spanInNodeIfStartsOnSameLine(ts.findPrecedingToken(node.pos, sourceFile, node.parent), classDeclaration.members.length ? classDeclaration.members[0] : classDeclaration.getLastToken(sourceFile)); - case 224 /* CaseBlock */: + case 226 /* CaseBlock */: return spanInNodeIfStartsOnSameLine(node.parent.parent, node.parent.clauses[0]); } // Default to parent node @@ -53967,24 +56036,24 @@ var ts; } function spanInCloseBraceToken(node) { switch (node.parent.kind) { - case 223 /* ModuleBlock */: + case 225 /* ModuleBlock */: // If this is not instantiated module block no bp span if (ts.getModuleInstanceState(node.parent.parent) !== 1 /* Instantiated */) { return undefined; } - case 221 /* EnumDeclaration */: - case 218 /* ClassDeclaration */: + case 223 /* EnumDeclaration */: + case 220 /* ClassDeclaration */: // Span on close brace token return textSpan(node); - case 196 /* Block */: + case 198 /* Block */: if (ts.isFunctionBlock(node.parent)) { // Span on close brace token return textSpan(node); } // fall through. - case 248 /* CatchClause */: + case 251 /* CatchClause */: return spanInNode(ts.lastOrUndefined(node.parent.statements)); - case 224 /* CaseBlock */: + case 226 /* CaseBlock */: // breakpoint in last statement of the last clause var caseBlock = node.parent; var lastClause = ts.lastOrUndefined(caseBlock.clauses); @@ -53992,7 +56061,7 @@ var ts; return spanInNode(ts.lastOrUndefined(lastClause.statements)); } return undefined; - case 165 /* ObjectBindingPattern */: + case 166 /* ObjectBindingPattern */: // Breakpoint in last binding element or binding pattern if it contains no elements var bindingPattern = node.parent; return spanInNode(ts.lastOrUndefined(bindingPattern.elements) || bindingPattern); @@ -54008,7 +56077,7 @@ var ts; } function spanInCloseBracketToken(node) { switch (node.parent.kind) { - case 166 /* ArrayBindingPattern */: + case 167 /* ArrayBindingPattern */: // Breakpoint in last binding element or binding pattern if it contains no elements var bindingPattern = node.parent; return textSpan(ts.lastOrUndefined(bindingPattern.elements) || bindingPattern); @@ -54023,12 +56092,12 @@ var ts; } } function spanInOpenParenToken(node) { - if (node.parent.kind === 201 /* DoStatement */ || - node.parent.kind === 172 /* CallExpression */ || - node.parent.kind === 173 /* NewExpression */) { + if (node.parent.kind === 203 /* DoStatement */ || + node.parent.kind === 173 /* CallExpression */ || + node.parent.kind === 174 /* NewExpression */) { return spanInPreviousNode(node); } - if (node.parent.kind === 176 /* ParenthesizedExpression */) { + if (node.parent.kind === 177 /* ParenthesizedExpression */) { return spanInNextNode(node); } // Default to parent node @@ -54037,21 +56106,21 @@ var ts; function spanInCloseParenToken(node) { // Is this close paren token of parameter list, set span in previous token switch (node.parent.kind) { - case 177 /* FunctionExpression */: - case 217 /* FunctionDeclaration */: - case 178 /* ArrowFunction */: - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: - case 146 /* Constructor */: - case 202 /* WhileStatement */: - case 201 /* DoStatement */: - case 203 /* ForStatement */: - case 205 /* ForOfStatement */: - case 172 /* CallExpression */: - case 173 /* NewExpression */: - case 176 /* ParenthesizedExpression */: + case 178 /* FunctionExpression */: + case 219 /* FunctionDeclaration */: + case 179 /* ArrowFunction */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: + case 147 /* Constructor */: + case 204 /* WhileStatement */: + case 203 /* DoStatement */: + case 205 /* ForStatement */: + case 207 /* ForOfStatement */: + case 173 /* CallExpression */: + case 174 /* NewExpression */: + case 177 /* ParenthesizedExpression */: return spanInPreviousNode(node); // Default to parent node default: @@ -54061,20 +56130,20 @@ var ts; function spanInColonToken(node) { // Is this : specifying return annotation of the function declaration if (ts.isFunctionLike(node.parent) || - node.parent.kind === 249 /* PropertyAssignment */ || - node.parent.kind === 140 /* Parameter */) { + node.parent.kind === 252 /* PropertyAssignment */ || + node.parent.kind === 141 /* Parameter */) { return spanInPreviousNode(node); } return spanInNode(node.parent); } function spanInGreaterThanOrLessThanToken(node) { - if (node.parent.kind === 175 /* TypeAssertionExpression */) { + if (node.parent.kind === 176 /* TypeAssertionExpression */) { return spanInNextNode(node); } return spanInNode(node.parent); } function spanInWhileKeyword(node) { - if (node.parent.kind === 201 /* DoStatement */) { + if (node.parent.kind === 203 /* DoStatement */) { // Set span on while expression return textSpanEndingAtNextToken(node, node.parent.expression); } @@ -54082,7 +56151,7 @@ var ts; return spanInNode(node.parent); } function spanInOfKeyword(node) { - if (node.parent.kind === 205 /* ForOfStatement */) { + if (node.parent.kind === 207 /* ForOfStatement */) { // set using next token return spanInNextNode(node); } @@ -54171,6 +56240,12 @@ var ts; if ("directoryExists" in this.shimHost) { this.directoryExists = function (directoryName) { return _this.shimHost.directoryExists(directoryName); }; } + if ("getTypeReferenceDirectiveResolutionsForFile" in this.shimHost) { + this.resolveTypeReferenceDirectives = function (typeDirectiveNames, containingFile) { + var typeDirectivesForFile = JSON.parse(_this.shimHost.getTypeReferenceDirectiveResolutionsForFile(containingFile)); + return ts.map(typeDirectiveNames, function (name) { return ts.lookUp(typeDirectivesForFile, name); }); + }; + } } LanguageServiceShimHostAdapter.prototype.log = function (s) { if (this.loggingEnabled) { @@ -54277,8 +56352,16 @@ var ts; this.directoryExists = function (directoryName) { return _this.shimHost.directoryExists(directoryName); }; } } - CoreServicesShimHostAdapter.prototype.readDirectory = function (rootDir, extension, exclude) { - var encoded = this.shimHost.readDirectory(rootDir, extension, JSON.stringify(exclude)); + CoreServicesShimHostAdapter.prototype.readDirectory = function (rootDir, extension, exclude, depth) { + // Wrap the API changes for 2.0 release. This try/catch + // should be removed once TypeScript 2.0 has shipped. + var encoded; + try { + encoded = this.shimHost.readDirectory(rootDir, extension, JSON.stringify(exclude), depth); + } + catch (e) { + encoded = this.shimHost.readDirectory(rootDir, extension, JSON.stringify(exclude)); + } return JSON.parse(encoded); }; CoreServicesShimHostAdapter.prototype.fileExists = function (fileName) { @@ -54525,7 +56608,7 @@ var ts; var _this = this; return this.forwardJSONCall("getDocumentHighlights('" + fileName + "', " + position + ")", function () { var results = _this.languageService.getDocumentHighlights(fileName, position, JSON.parse(filesToSearch)); - // workaround for VS document higlighting issue - keep only items from the initial file + // workaround for VS document highlighting issue - keep only items from the initial file var normalizedName = ts.normalizeSlashes(fileName).toLowerCase(); return ts.filter(results, function (r) { return ts.normalizeSlashes(r.fileName).toLowerCase() === normalizedName; }); }); @@ -54646,33 +56729,47 @@ var ts; }; }); }; + CoreServicesShimObject.prototype.resolveTypeReferenceDirective = function (fileName, typeReferenceDirective, compilerOptionsJson) { + var _this = this; + return this.forwardJSONCall("resolveTypeReferenceDirective(" + fileName + ")", function () { + var compilerOptions = JSON.parse(compilerOptionsJson); + var result = ts.resolveTypeReferenceDirective(typeReferenceDirective, ts.normalizeSlashes(fileName), compilerOptions, _this.host); + return { + resolvedFileName: result.resolvedTypeReferenceDirective ? result.resolvedTypeReferenceDirective.resolvedFileName : undefined, + primary: result.resolvedTypeReferenceDirective ? result.resolvedTypeReferenceDirective.primary : true, + failedLookupLocations: result.failedLookupLocations + }; + }); + }; CoreServicesShimObject.prototype.getPreProcessedFileInfo = function (fileName, sourceTextSnapshot) { + var _this = this; return this.forwardJSONCall("getPreProcessedFileInfo('" + fileName + "')", function () { // for now treat files as JavaScript var result = ts.preProcessFile(sourceTextSnapshot.getText(0, sourceTextSnapshot.getLength()), /* readImportFiles */ true, /* detectJavaScriptImports */ true); - var convertResult = { - referencedFiles: [], - importedFiles: [], + return { + referencedFiles: _this.convertFileReferences(result.referencedFiles), + importedFiles: _this.convertFileReferences(result.importedFiles), ambientExternalModules: result.ambientExternalModules, - isLibFile: result.isLibFile + isLibFile: result.isLibFile, + typeReferenceDirectives: _this.convertFileReferences(result.typeReferenceDirectives) }; - ts.forEach(result.referencedFiles, function (refFile) { - convertResult.referencedFiles.push({ - path: ts.normalizePath(refFile.fileName), - position: refFile.pos, - length: refFile.end - refFile.pos - }); - }); - ts.forEach(result.importedFiles, function (importedFile) { - convertResult.importedFiles.push({ - path: ts.normalizeSlashes(importedFile.fileName), - position: importedFile.pos, - length: importedFile.end - importedFile.pos - }); - }); - return convertResult; }); }; + CoreServicesShimObject.prototype.convertFileReferences = function (refs) { + if (!refs) { + return undefined; + } + var result = []; + for (var _i = 0, refs_2 = refs; _i < refs_2.length; _i++) { + var ref = refs_2[_i]; + result.push({ + path: ts.normalizeSlashes(ref.fileName), + position: ref.pos, + length: ref.end - ref.pos + }); + } + return result; + }; CoreServicesShimObject.prototype.getTSConfigFileInfo = function (fileName, sourceTextSnapshot) { var _this = this; return this.forwardJSONCall("getTSConfigFileInfo('" + fileName + "')", function () { @@ -54681,6 +56778,7 @@ var ts; if (result.error) { return { options: {}, + typingOptions: {}, files: [], errors: [realizeDiagnostic(result.error, "\r\n")] }; @@ -54689,6 +56787,7 @@ var ts; var configFile = ts.parseJsonConfigFileContent(result.config, _this.host, ts.getDirectoryPath(normalizedFileName), /*existingOptions*/ {}, normalizedFileName); return { options: configFile.options, + typingOptions: configFile.typingOptions, files: configFile.fileNames, errors: realizeDiagnostics(configFile.errors, "\r\n") }; @@ -54697,6 +56796,14 @@ var ts; CoreServicesShimObject.prototype.getDefaultCompilationSettings = function () { return this.forwardJSONCall("getDefaultCompilationSettings()", function () { return ts.getDefaultCompilerOptions(); }); }; + CoreServicesShimObject.prototype.discoverTypings = function (discoverTypingsJson) { + var _this = this; + var getCanonicalFileName = ts.createGetCanonicalFileName(/*useCaseSensitivefileNames:*/ false); + return this.forwardJSONCall("discoverTypings()", function () { + var info = JSON.parse(discoverTypingsJson); + return ts.JsTyping.discoverTypings(_this.host, info.fileNames, ts.toPath(info.projectRootPath, info.projectRootPath, getCanonicalFileName), ts.toPath(info.safeListPath, info.safeListPath, getCanonicalFileName), info.packageNameToTypingLocation, info.typingOptions, info.compilerOptions); + }); + }; return CoreServicesShimObject; }(ShimBase)); var TypeScriptServicesFactory = (function () { diff --git a/lib/typescriptServices.d.ts b/lib/typescriptServices.d.ts index 2824742c63b..c5e72bdbbbf 100644 --- a/lib/typescriptServices.d.ts +++ b/lib/typescriptServices.d.ts @@ -167,163 +167,166 @@ declare namespace ts { StringKeyword = 131, SymbolKeyword = 132, TypeKeyword = 133, - FromKeyword = 134, - GlobalKeyword = 135, - OfKeyword = 136, - QualifiedName = 137, - ComputedPropertyName = 138, - TypeParameter = 139, - Parameter = 140, - Decorator = 141, - PropertySignature = 142, - PropertyDeclaration = 143, - MethodSignature = 144, - MethodDeclaration = 145, - Constructor = 146, - GetAccessor = 147, - SetAccessor = 148, - CallSignature = 149, - ConstructSignature = 150, - IndexSignature = 151, - TypePredicate = 152, - TypeReference = 153, - FunctionType = 154, - ConstructorType = 155, - TypeQuery = 156, - TypeLiteral = 157, - ArrayType = 158, - TupleType = 159, - UnionType = 160, - IntersectionType = 161, - ParenthesizedType = 162, - ThisType = 163, - StringLiteralType = 164, - ObjectBindingPattern = 165, - ArrayBindingPattern = 166, - BindingElement = 167, - ArrayLiteralExpression = 168, - ObjectLiteralExpression = 169, - PropertyAccessExpression = 170, - ElementAccessExpression = 171, - CallExpression = 172, - NewExpression = 173, - TaggedTemplateExpression = 174, - TypeAssertionExpression = 175, - ParenthesizedExpression = 176, - FunctionExpression = 177, - ArrowFunction = 178, - DeleteExpression = 179, - TypeOfExpression = 180, - VoidExpression = 181, - AwaitExpression = 182, - PrefixUnaryExpression = 183, - PostfixUnaryExpression = 184, - BinaryExpression = 185, - ConditionalExpression = 186, - TemplateExpression = 187, - YieldExpression = 188, - SpreadElementExpression = 189, - ClassExpression = 190, - OmittedExpression = 191, - ExpressionWithTypeArguments = 192, - AsExpression = 193, - TemplateSpan = 194, - SemicolonClassElement = 195, - Block = 196, - VariableStatement = 197, - EmptyStatement = 198, - ExpressionStatement = 199, - IfStatement = 200, - DoStatement = 201, - WhileStatement = 202, - ForStatement = 203, - ForInStatement = 204, - ForOfStatement = 205, - ContinueStatement = 206, - BreakStatement = 207, - ReturnStatement = 208, - WithStatement = 209, - SwitchStatement = 210, - LabeledStatement = 211, - ThrowStatement = 212, - TryStatement = 213, - DebuggerStatement = 214, - VariableDeclaration = 215, - VariableDeclarationList = 216, - FunctionDeclaration = 217, - ClassDeclaration = 218, - InterfaceDeclaration = 219, - TypeAliasDeclaration = 220, - EnumDeclaration = 221, - ModuleDeclaration = 222, - ModuleBlock = 223, - CaseBlock = 224, - ImportEqualsDeclaration = 225, - ImportDeclaration = 226, - ImportClause = 227, - NamespaceImport = 228, - NamedImports = 229, - ImportSpecifier = 230, - ExportAssignment = 231, - ExportDeclaration = 232, - NamedExports = 233, - ExportSpecifier = 234, - MissingDeclaration = 235, - ExternalModuleReference = 236, - JsxElement = 237, - JsxSelfClosingElement = 238, - JsxOpeningElement = 239, - JsxText = 240, - JsxClosingElement = 241, - JsxAttribute = 242, - JsxSpreadAttribute = 243, - JsxExpression = 244, - CaseClause = 245, - DefaultClause = 246, - HeritageClause = 247, - CatchClause = 248, - PropertyAssignment = 249, - ShorthandPropertyAssignment = 250, - EnumMember = 251, - SourceFile = 252, - JSDocTypeExpression = 253, - JSDocAllType = 254, - JSDocUnknownType = 255, - JSDocArrayType = 256, - JSDocUnionType = 257, - JSDocTupleType = 258, - JSDocNullableType = 259, - JSDocNonNullableType = 260, - JSDocRecordType = 261, - JSDocRecordMember = 262, - JSDocTypeReference = 263, - JSDocOptionalType = 264, - JSDocFunctionType = 265, - JSDocVariadicType = 266, - JSDocConstructorType = 267, - JSDocThisType = 268, - JSDocComment = 269, - JSDocTag = 270, - JSDocParameterTag = 271, - JSDocReturnTag = 272, - JSDocTypeTag = 273, - JSDocTemplateTag = 274, - SyntaxList = 275, - Count = 276, + UndefinedKeyword = 134, + FromKeyword = 135, + GlobalKeyword = 136, + OfKeyword = 137, + QualifiedName = 138, + ComputedPropertyName = 139, + TypeParameter = 140, + Parameter = 141, + Decorator = 142, + PropertySignature = 143, + PropertyDeclaration = 144, + MethodSignature = 145, + MethodDeclaration = 146, + Constructor = 147, + GetAccessor = 148, + SetAccessor = 149, + CallSignature = 150, + ConstructSignature = 151, + IndexSignature = 152, + TypePredicate = 153, + TypeReference = 154, + FunctionType = 155, + ConstructorType = 156, + TypeQuery = 157, + TypeLiteral = 158, + ArrayType = 159, + TupleType = 160, + UnionType = 161, + IntersectionType = 162, + ParenthesizedType = 163, + ThisType = 164, + StringLiteralType = 165, + ObjectBindingPattern = 166, + ArrayBindingPattern = 167, + BindingElement = 168, + ArrayLiteralExpression = 169, + ObjectLiteralExpression = 170, + PropertyAccessExpression = 171, + ElementAccessExpression = 172, + CallExpression = 173, + NewExpression = 174, + TaggedTemplateExpression = 175, + TypeAssertionExpression = 176, + ParenthesizedExpression = 177, + FunctionExpression = 178, + ArrowFunction = 179, + DeleteExpression = 180, + TypeOfExpression = 181, + VoidExpression = 182, + AwaitExpression = 183, + PrefixUnaryExpression = 184, + PostfixUnaryExpression = 185, + BinaryExpression = 186, + ConditionalExpression = 187, + TemplateExpression = 188, + YieldExpression = 189, + SpreadElementExpression = 190, + ClassExpression = 191, + OmittedExpression = 192, + ExpressionWithTypeArguments = 193, + AsExpression = 194, + NonNullExpression = 195, + TemplateSpan = 196, + SemicolonClassElement = 197, + Block = 198, + VariableStatement = 199, + EmptyStatement = 200, + ExpressionStatement = 201, + IfStatement = 202, + DoStatement = 203, + WhileStatement = 204, + ForStatement = 205, + ForInStatement = 206, + ForOfStatement = 207, + ContinueStatement = 208, + BreakStatement = 209, + ReturnStatement = 210, + WithStatement = 211, + SwitchStatement = 212, + LabeledStatement = 213, + ThrowStatement = 214, + TryStatement = 215, + DebuggerStatement = 216, + VariableDeclaration = 217, + VariableDeclarationList = 218, + FunctionDeclaration = 219, + ClassDeclaration = 220, + InterfaceDeclaration = 221, + TypeAliasDeclaration = 222, + EnumDeclaration = 223, + ModuleDeclaration = 224, + ModuleBlock = 225, + CaseBlock = 226, + GlobalModuleExportDeclaration = 227, + ImportEqualsDeclaration = 228, + ImportDeclaration = 229, + ImportClause = 230, + NamespaceImport = 231, + NamedImports = 232, + ImportSpecifier = 233, + ExportAssignment = 234, + ExportDeclaration = 235, + NamedExports = 236, + ExportSpecifier = 237, + MissingDeclaration = 238, + ExternalModuleReference = 239, + JsxElement = 240, + JsxSelfClosingElement = 241, + JsxOpeningElement = 242, + JsxText = 243, + JsxClosingElement = 244, + JsxAttribute = 245, + JsxSpreadAttribute = 246, + JsxExpression = 247, + CaseClause = 248, + DefaultClause = 249, + HeritageClause = 250, + CatchClause = 251, + PropertyAssignment = 252, + ShorthandPropertyAssignment = 253, + EnumMember = 254, + SourceFile = 255, + JSDocTypeExpression = 256, + JSDocAllType = 257, + JSDocUnknownType = 258, + JSDocArrayType = 259, + JSDocUnionType = 260, + JSDocTupleType = 261, + JSDocNullableType = 262, + JSDocNonNullableType = 263, + JSDocRecordType = 264, + JSDocRecordMember = 265, + JSDocTypeReference = 266, + JSDocOptionalType = 267, + JSDocFunctionType = 268, + JSDocVariadicType = 269, + JSDocConstructorType = 270, + JSDocThisType = 271, + JSDocComment = 272, + JSDocTag = 273, + JSDocParameterTag = 274, + JSDocReturnTag = 275, + JSDocTypeTag = 276, + JSDocTemplateTag = 277, + SyntaxList = 278, + Count = 279, FirstAssignment = 56, LastAssignment = 68, FirstReservedWord = 70, LastReservedWord = 105, FirstKeyword = 70, - LastKeyword = 136, + LastKeyword = 137, FirstFutureReservedWord = 106, LastFutureReservedWord = 114, - FirstTypeNode = 152, - LastTypeNode = 164, + FirstTypeNode = 153, + LastTypeNode = 165, FirstPunctuation = 15, LastPunctuation = 68, FirstToken = 0, - LastToken = 136, + LastToken = 137, FirstTriviaToken = 2, LastTriviaToken = 7, FirstLiteralToken = 8, @@ -332,7 +335,7 @@ declare namespace ts { LastTemplateToken = 14, FirstBinaryOperator = 25, LastBinaryOperator = 68, - FirstNode = 137, + FirstNode = 138, } enum NodeFlags { None = 0, @@ -366,12 +369,13 @@ declare namespace ts { JavaScriptFile = 134217728, ThisNodeOrAnySubNodesHasError = 268435456, HasAggregatedChildData = 536870912, + HasJsxSpreadAttribute = 1073741824, Modifier = 959, AccessibilityModifier = 28, BlockScoped = 3072, ReachabilityCheckFlags = 98304, EmitHelperFlags = 3932160, - ContextFlags = 62914560, + ContextFlags = 197132288, TypeExcludesFlags = 41943040, } enum JsxFlags { @@ -401,6 +405,9 @@ declare namespace ts { text: string; originalKeywordKind?: SyntaxKind; } + interface TransientIdentifier extends Identifier { + resolvedSymbol: Symbol; + } interface QualifiedName extends Node { left: EntityName; right: Identifier; @@ -702,6 +709,7 @@ declare namespace ts { dotToken: Node; name: Identifier; } + type IdentifierOrPropertyAccess = Identifier | PropertyAccessExpression; interface ElementAccessExpression extends MemberExpression { expression: LeftHandSideExpression; argumentExpression?: Expression; @@ -731,6 +739,9 @@ declare namespace ts { expression: UnaryExpression; } type AssertionExpression = TypeAssertion | AsExpression; + interface NonNullExpression extends LeftHandSideExpression { + expression: Expression; + } interface JsxElement extends PrimaryExpression { openingElement: JsxOpeningElement; children: NodeArray; @@ -854,6 +865,7 @@ declare namespace ts { variableDeclaration: VariableDeclaration; block: Block; } + type DeclarationWithTypeParameters = SignatureDeclaration | ClassLikeDeclaration | InterfaceDeclaration | TypeAliasDeclaration; interface ClassLikeDeclaration extends Declaration { name?: Identifier; typeParameters?: NodeArray; @@ -923,6 +935,10 @@ declare namespace ts { interface NamespaceImport extends Declaration { name: Identifier; } + interface GlobalModuleExportDeclaration extends DeclarationStatement { + name: Identifier; + moduleReference: LiteralLikeNode; + } interface ExportDeclaration extends DeclarationStatement { exportClause?: NamedExports; moduleSpecifier?: Expression; @@ -1044,6 +1060,7 @@ declare namespace ts { amdDependencies: AmdDependency[]; moduleName: string; referencedFiles: FileReference[]; + typeReferenceDirectives: FileReference[]; languageVariant: LanguageVariant; isDeclarationFile: boolean; /** @@ -1066,7 +1083,7 @@ declare namespace ts { readDirectory(rootDir: string, extension: string, exclude: string[]): string[]; } interface WriteFileCallback { - (fileName: string, data: string, writeByteOrderMark: boolean, onError?: (message: string) => void): void; + (fileName: string, data: string, writeByteOrderMark: boolean, onError?: (message: string) => void, sourceFiles?: SourceFile[]): void; } class OperationCanceledException { } @@ -1141,6 +1158,7 @@ declare namespace ts { emitSkipped: boolean; /** Contains declaration emit diagnostics */ diagnostics: Diagnostic[]; + emittedFiles: string[]; } interface TypeChecker { getTypeOfSymbolAtLocation(symbol: Symbol, node: Node): Type; @@ -1186,7 +1204,7 @@ declare namespace ts { buildTypeParameterDisplay(tp: TypeParameter, writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags): void; buildTypePredicateDisplay(predicate: TypePredicate, writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags): void; buildTypeParameterDisplayFromSymbol(symbol: Symbol, writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags): void; - buildDisplayForParametersAndDelimiters(parameters: Symbol[], writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags): void; + buildDisplayForParametersAndDelimiters(thisType: Type, parameters: Symbol[], writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags): void; buildDisplayForTypeParametersAndDelimiters(typeParameters: TypeParameter[], writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags): void; buildReturnTypeDisplay(signature: Signature, writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags): void; } @@ -1310,6 +1328,7 @@ declare namespace ts { valueDeclaration?: Declaration; members?: SymbolTable; exports?: SymbolTable; + globalExports?: SymbolTable; } interface SymbolTable { [index: string]: Symbol; @@ -1394,6 +1413,7 @@ declare namespace ts { declaration: SignatureDeclaration; typeParameters: TypeParameter[]; parameters: Symbol[]; + thisType?: Type; } enum IndexKind { String = 0, @@ -1442,10 +1462,12 @@ declare namespace ts { type RootPaths = string[]; type PathSubstitutions = Map; type TsConfigOnlyOptions = RootPaths | PathSubstitutions; + type CompilerOptionsValue = string | number | boolean | (string | number)[] | TsConfigOnlyOptions; interface CompilerOptions { allowNonTsExtensions?: boolean; charset?: string; declaration?: boolean; + declarationDir?: string; diagnostics?: boolean; emitBOM?: boolean; help?: boolean; @@ -1455,6 +1477,7 @@ declare namespace ts { jsx?: JsxEmit; reactNamespace?: string; listFiles?: boolean; + typesSearchPaths?: string[]; locale?: string; mapRoot?: string; module?: ModuleKind; @@ -1464,6 +1487,7 @@ declare namespace ts { noEmitOnError?: boolean; noErrorTruncation?: boolean; noImplicitAny?: boolean; + noImplicitThis?: boolean; noLib?: boolean; noResolve?: boolean; out?: string; @@ -1492,11 +1516,30 @@ declare namespace ts { baseUrl?: string; paths?: PathSubstitutions; rootDirs?: RootPaths; - traceModuleResolution?: boolean; + traceResolution?: boolean; allowSyntheticDefaultImports?: boolean; allowJs?: boolean; noImplicitUseStrict?: boolean; - [option: string]: string | number | boolean | TsConfigOnlyOptions; + strictNullChecks?: boolean; + listEmittedFiles?: boolean; + lib?: string[]; + types?: string[]; + list?: string[]; + [option: string]: CompilerOptionsValue; + } + interface TypingOptions { + enableAutoDiscovery?: boolean; + include?: string[]; + exclude?: string[]; + [option: string]: string[] | boolean; + } + interface DiscoverTypingsInfo { + fileNames: string[]; + projectRootPath: string; + safeListPath: string; + packageNameToTypingLocation: Map; + typingOptions: TypingOptions; + compilerOptions: CompilerOptions; } enum ModuleKind { None = 0, @@ -1540,6 +1583,7 @@ declare namespace ts { } interface ParsedCommandLine { options: CompilerOptions; + typingOptions?: TypingOptions; fileNames: string[]; errors: Diagnostic[]; } @@ -1557,16 +1601,29 @@ declare namespace ts { resolvedModule: ResolvedModule; failedLookupLocations: string[]; } + interface ResolvedTypeReferenceDirective { + primary: boolean; + resolvedFileName?: string; + } + interface ResolvedTypeReferenceDirectiveWithFailedLookupLocations { + resolvedTypeReferenceDirective: ResolvedTypeReferenceDirective; + failedLookupLocations: string[]; + } interface CompilerHost extends ModuleResolutionHost { getSourceFile(fileName: string, languageVersion: ScriptTarget, onError?: (message: string) => void): SourceFile; getCancellationToken?(): CancellationToken; getDefaultLibFileName(options: CompilerOptions): string; + getDefaultLibLocation?(): string; writeFile: WriteFileCallback; getCurrentDirectory(): string; getCanonicalFileName(fileName: string): string; useCaseSensitiveFileNames(): boolean; getNewLine(): string; resolveModuleNames?(moduleNames: string[], containingFile: string): ResolvedModule[]; + /** + * This method is a companion for 'resolveModuleNames' and is used to resolve 'types' references to actual type declaration files + */ + resolveTypeReferenceDirectives?(typeReferenceDirectiveNames: string[], containingFile: string): ResolvedTypeReferenceDirective[]; } interface TextSpan { start: number; @@ -1578,8 +1635,8 @@ declare namespace ts { } } declare namespace ts { - type FileWatcherCallback = (path: string, removed?: boolean) => void; - type DirectoryWatcherCallback = (path: string) => void; + type FileWatcherCallback = (fileName: string, removed?: boolean) => void; + type DirectoryWatcherCallback = (directoryName: string) => void; interface System { args: string[]; newLine: string; @@ -1587,7 +1644,7 @@ declare namespace ts { write(s: string): void; readFile(path: string, encoding?: string): string; writeFile(path: string, data: string, writeByteOrderMark?: boolean): void; - watchFile?(path: Path, callback: FileWatcherCallback): FileWatcher; + watchFile?(path: string, callback: FileWatcherCallback): FileWatcher; watchDirectory?(path: string, callback: DirectoryWatcherCallback, recursive?: boolean): FileWatcher; resolvePath(path: string): string; fileExists(path: string): boolean; @@ -1596,6 +1653,8 @@ declare namespace ts { getExecutingFilePath(): string; getCurrentDirectory(): string; readDirectory(path: string, extension?: string, exclude?: string[]): string[]; + getModifiedTime?(path: string): Date; + createHash?(data: string): string; getMemoryUsage?(): number; exit(exitCode?: number): void; } @@ -1603,7 +1662,7 @@ declare namespace ts { close(): void; } interface DirectoryWatcher extends FileWatcher { - directoryPath: Path; + directoryName: string; referenceCount: number; } var sys: System; @@ -1685,17 +1744,26 @@ declare namespace ts { function collapseTextChangeRangesAcrossMultipleVersions(changes: TextChangeRange[]): TextChangeRange; function getTypeParameterOwner(d: Declaration): Declaration; function isParameterPropertyDeclaration(node: ParameterDeclaration): boolean; + function startsWith(str: string, prefix: string): boolean; + function endsWith(str: string, suffix: string): boolean; } declare namespace ts { function createNode(kind: SyntaxKind, pos?: number, end?: number): Node; function forEachChild(node: Node, cbNode: (node: Node) => T, cbNodeArray?: (nodes: Node[]) => T): T; function createSourceFile(fileName: string, sourceText: string, languageVersion: ScriptTarget, setParentNodes?: boolean, scriptKind?: ScriptKind): SourceFile; + function isExternalModule(file: SourceFile): boolean; function updateSourceFile(sourceFile: SourceFile, newText: string, textChangeRange: TextChangeRange, aggressiveChecks?: boolean): SourceFile; } declare namespace ts { const version: string; function findConfigFile(searchPath: string, fileExists: (fileName: string) => boolean): string; function resolveTripleslashReference(moduleName: string, containingFile: string): string; + /** + * @param {string | undefined} containingFile - file that contains type reference directive, can be undefined if containing file is unknown. + * This is possible in case if resolution is performed for directives specified via 'types' parameter. In this case initial path for secondary lookups + * is assumed to be the same as root directory of the project. + */ + function resolveTypeReferenceDirective(typeReferenceDirectiveName: string, containingFile: string, options: CompilerOptions, host: ModuleResolutionHost): ResolvedTypeReferenceDirectiveWithFailedLookupLocations; function resolveModuleName(moduleName: string, containingFile: string, compilerOptions: CompilerOptions, host: ModuleResolutionHost): ResolvedModuleWithFailedLookupLocations; function nodeModuleNameResolver(moduleName: string, containingFile: string, compilerOptions: CompilerOptions, host: ModuleResolutionHost): ResolvedModuleWithFailedLookupLocations; function classicNameResolver(moduleName: string, containingFile: string, compilerOptions: CompilerOptions, host: ModuleResolutionHost): ResolvedModuleWithFailedLookupLocations; @@ -1705,7 +1773,6 @@ declare namespace ts { function createProgram(rootNames: string[], options: CompilerOptions, host?: CompilerHost, oldProgram?: Program): Program; } declare namespace ts { - function parseCommandLine(commandLine: string[], readFile?: (path: string) => string): ParsedCommandLine; /** * Read tsconfig.json file * @param fileName The path to the config file @@ -1735,6 +1802,10 @@ declare namespace ts { options: CompilerOptions; errors: Diagnostic[]; }; + function convertTypingOptionsFromJson(jsonOptions: any, basePath: string, configFileName?: string): { + options: CompilerOptions; + errors: Diagnostic[]; + }; } declare namespace ts { /** The version of the language service API */ @@ -1812,6 +1883,7 @@ declare namespace ts { } interface PreProcessedFileInfo { referencedFiles: FileReference[]; + typeReferenceDirectives: FileReference[]; importedFiles: FileReference[]; ambientExternalModules: string[]; isLibFile: boolean; @@ -1836,6 +1908,7 @@ declare namespace ts { error?(s: string): void; useCaseSensitiveFileNames?(): boolean; resolveModuleNames?(moduleNames: string[], containingFile: string): ResolvedModule[]; + resolveTypeReferenceDirectives?(typeDirectiveNames: string[], containingFile: string): ResolvedTypeReferenceDirective[]; directoryExists?(directoryName: string): boolean; } interface LanguageService { @@ -1880,7 +1953,6 @@ declare namespace ts { getDocCommentTemplateAtPosition(fileName: string, position: number): TextInsertion; getEmitOutput(fileName: string): EmitOutput; getProgram(): Program; - getSourceFile(fileName: string): SourceFile; dispose(): void; } interface Classifications { diff --git a/lib/typescriptServices.js b/lib/typescriptServices.js index 8dafad54257..f8b128defd8 100644 --- a/lib/typescriptServices.js +++ b/lib/typescriptServices.js @@ -168,184 +168,187 @@ var ts; SyntaxKind[SyntaxKind["StringKeyword"] = 131] = "StringKeyword"; SyntaxKind[SyntaxKind["SymbolKeyword"] = 132] = "SymbolKeyword"; SyntaxKind[SyntaxKind["TypeKeyword"] = 133] = "TypeKeyword"; - SyntaxKind[SyntaxKind["FromKeyword"] = 134] = "FromKeyword"; - SyntaxKind[SyntaxKind["GlobalKeyword"] = 135] = "GlobalKeyword"; - SyntaxKind[SyntaxKind["OfKeyword"] = 136] = "OfKeyword"; + SyntaxKind[SyntaxKind["UndefinedKeyword"] = 134] = "UndefinedKeyword"; + SyntaxKind[SyntaxKind["FromKeyword"] = 135] = "FromKeyword"; + SyntaxKind[SyntaxKind["GlobalKeyword"] = 136] = "GlobalKeyword"; + SyntaxKind[SyntaxKind["OfKeyword"] = 137] = "OfKeyword"; // Parse tree nodes // Names - SyntaxKind[SyntaxKind["QualifiedName"] = 137] = "QualifiedName"; - SyntaxKind[SyntaxKind["ComputedPropertyName"] = 138] = "ComputedPropertyName"; + SyntaxKind[SyntaxKind["QualifiedName"] = 138] = "QualifiedName"; + SyntaxKind[SyntaxKind["ComputedPropertyName"] = 139] = "ComputedPropertyName"; // Signature elements - SyntaxKind[SyntaxKind["TypeParameter"] = 139] = "TypeParameter"; - SyntaxKind[SyntaxKind["Parameter"] = 140] = "Parameter"; - SyntaxKind[SyntaxKind["Decorator"] = 141] = "Decorator"; + SyntaxKind[SyntaxKind["TypeParameter"] = 140] = "TypeParameter"; + SyntaxKind[SyntaxKind["Parameter"] = 141] = "Parameter"; + SyntaxKind[SyntaxKind["Decorator"] = 142] = "Decorator"; // TypeMember - SyntaxKind[SyntaxKind["PropertySignature"] = 142] = "PropertySignature"; - SyntaxKind[SyntaxKind["PropertyDeclaration"] = 143] = "PropertyDeclaration"; - SyntaxKind[SyntaxKind["MethodSignature"] = 144] = "MethodSignature"; - SyntaxKind[SyntaxKind["MethodDeclaration"] = 145] = "MethodDeclaration"; - SyntaxKind[SyntaxKind["Constructor"] = 146] = "Constructor"; - SyntaxKind[SyntaxKind["GetAccessor"] = 147] = "GetAccessor"; - SyntaxKind[SyntaxKind["SetAccessor"] = 148] = "SetAccessor"; - SyntaxKind[SyntaxKind["CallSignature"] = 149] = "CallSignature"; - SyntaxKind[SyntaxKind["ConstructSignature"] = 150] = "ConstructSignature"; - SyntaxKind[SyntaxKind["IndexSignature"] = 151] = "IndexSignature"; + SyntaxKind[SyntaxKind["PropertySignature"] = 143] = "PropertySignature"; + SyntaxKind[SyntaxKind["PropertyDeclaration"] = 144] = "PropertyDeclaration"; + SyntaxKind[SyntaxKind["MethodSignature"] = 145] = "MethodSignature"; + SyntaxKind[SyntaxKind["MethodDeclaration"] = 146] = "MethodDeclaration"; + SyntaxKind[SyntaxKind["Constructor"] = 147] = "Constructor"; + SyntaxKind[SyntaxKind["GetAccessor"] = 148] = "GetAccessor"; + SyntaxKind[SyntaxKind["SetAccessor"] = 149] = "SetAccessor"; + SyntaxKind[SyntaxKind["CallSignature"] = 150] = "CallSignature"; + SyntaxKind[SyntaxKind["ConstructSignature"] = 151] = "ConstructSignature"; + SyntaxKind[SyntaxKind["IndexSignature"] = 152] = "IndexSignature"; // Type - SyntaxKind[SyntaxKind["TypePredicate"] = 152] = "TypePredicate"; - SyntaxKind[SyntaxKind["TypeReference"] = 153] = "TypeReference"; - SyntaxKind[SyntaxKind["FunctionType"] = 154] = "FunctionType"; - SyntaxKind[SyntaxKind["ConstructorType"] = 155] = "ConstructorType"; - SyntaxKind[SyntaxKind["TypeQuery"] = 156] = "TypeQuery"; - SyntaxKind[SyntaxKind["TypeLiteral"] = 157] = "TypeLiteral"; - SyntaxKind[SyntaxKind["ArrayType"] = 158] = "ArrayType"; - SyntaxKind[SyntaxKind["TupleType"] = 159] = "TupleType"; - SyntaxKind[SyntaxKind["UnionType"] = 160] = "UnionType"; - SyntaxKind[SyntaxKind["IntersectionType"] = 161] = "IntersectionType"; - SyntaxKind[SyntaxKind["ParenthesizedType"] = 162] = "ParenthesizedType"; - SyntaxKind[SyntaxKind["ThisType"] = 163] = "ThisType"; - SyntaxKind[SyntaxKind["StringLiteralType"] = 164] = "StringLiteralType"; + SyntaxKind[SyntaxKind["TypePredicate"] = 153] = "TypePredicate"; + SyntaxKind[SyntaxKind["TypeReference"] = 154] = "TypeReference"; + SyntaxKind[SyntaxKind["FunctionType"] = 155] = "FunctionType"; + SyntaxKind[SyntaxKind["ConstructorType"] = 156] = "ConstructorType"; + SyntaxKind[SyntaxKind["TypeQuery"] = 157] = "TypeQuery"; + SyntaxKind[SyntaxKind["TypeLiteral"] = 158] = "TypeLiteral"; + SyntaxKind[SyntaxKind["ArrayType"] = 159] = "ArrayType"; + SyntaxKind[SyntaxKind["TupleType"] = 160] = "TupleType"; + SyntaxKind[SyntaxKind["UnionType"] = 161] = "UnionType"; + SyntaxKind[SyntaxKind["IntersectionType"] = 162] = "IntersectionType"; + SyntaxKind[SyntaxKind["ParenthesizedType"] = 163] = "ParenthesizedType"; + SyntaxKind[SyntaxKind["ThisType"] = 164] = "ThisType"; + SyntaxKind[SyntaxKind["StringLiteralType"] = 165] = "StringLiteralType"; // Binding patterns - SyntaxKind[SyntaxKind["ObjectBindingPattern"] = 165] = "ObjectBindingPattern"; - SyntaxKind[SyntaxKind["ArrayBindingPattern"] = 166] = "ArrayBindingPattern"; - SyntaxKind[SyntaxKind["BindingElement"] = 167] = "BindingElement"; + SyntaxKind[SyntaxKind["ObjectBindingPattern"] = 166] = "ObjectBindingPattern"; + SyntaxKind[SyntaxKind["ArrayBindingPattern"] = 167] = "ArrayBindingPattern"; + SyntaxKind[SyntaxKind["BindingElement"] = 168] = "BindingElement"; // Expression - SyntaxKind[SyntaxKind["ArrayLiteralExpression"] = 168] = "ArrayLiteralExpression"; - SyntaxKind[SyntaxKind["ObjectLiteralExpression"] = 169] = "ObjectLiteralExpression"; - SyntaxKind[SyntaxKind["PropertyAccessExpression"] = 170] = "PropertyAccessExpression"; - SyntaxKind[SyntaxKind["ElementAccessExpression"] = 171] = "ElementAccessExpression"; - SyntaxKind[SyntaxKind["CallExpression"] = 172] = "CallExpression"; - SyntaxKind[SyntaxKind["NewExpression"] = 173] = "NewExpression"; - SyntaxKind[SyntaxKind["TaggedTemplateExpression"] = 174] = "TaggedTemplateExpression"; - SyntaxKind[SyntaxKind["TypeAssertionExpression"] = 175] = "TypeAssertionExpression"; - SyntaxKind[SyntaxKind["ParenthesizedExpression"] = 176] = "ParenthesizedExpression"; - SyntaxKind[SyntaxKind["FunctionExpression"] = 177] = "FunctionExpression"; - SyntaxKind[SyntaxKind["ArrowFunction"] = 178] = "ArrowFunction"; - SyntaxKind[SyntaxKind["DeleteExpression"] = 179] = "DeleteExpression"; - SyntaxKind[SyntaxKind["TypeOfExpression"] = 180] = "TypeOfExpression"; - SyntaxKind[SyntaxKind["VoidExpression"] = 181] = "VoidExpression"; - SyntaxKind[SyntaxKind["AwaitExpression"] = 182] = "AwaitExpression"; - SyntaxKind[SyntaxKind["PrefixUnaryExpression"] = 183] = "PrefixUnaryExpression"; - SyntaxKind[SyntaxKind["PostfixUnaryExpression"] = 184] = "PostfixUnaryExpression"; - SyntaxKind[SyntaxKind["BinaryExpression"] = 185] = "BinaryExpression"; - SyntaxKind[SyntaxKind["ConditionalExpression"] = 186] = "ConditionalExpression"; - SyntaxKind[SyntaxKind["TemplateExpression"] = 187] = "TemplateExpression"; - SyntaxKind[SyntaxKind["YieldExpression"] = 188] = "YieldExpression"; - SyntaxKind[SyntaxKind["SpreadElementExpression"] = 189] = "SpreadElementExpression"; - SyntaxKind[SyntaxKind["ClassExpression"] = 190] = "ClassExpression"; - SyntaxKind[SyntaxKind["OmittedExpression"] = 191] = "OmittedExpression"; - SyntaxKind[SyntaxKind["ExpressionWithTypeArguments"] = 192] = "ExpressionWithTypeArguments"; - SyntaxKind[SyntaxKind["AsExpression"] = 193] = "AsExpression"; + SyntaxKind[SyntaxKind["ArrayLiteralExpression"] = 169] = "ArrayLiteralExpression"; + SyntaxKind[SyntaxKind["ObjectLiteralExpression"] = 170] = "ObjectLiteralExpression"; + SyntaxKind[SyntaxKind["PropertyAccessExpression"] = 171] = "PropertyAccessExpression"; + SyntaxKind[SyntaxKind["ElementAccessExpression"] = 172] = "ElementAccessExpression"; + SyntaxKind[SyntaxKind["CallExpression"] = 173] = "CallExpression"; + SyntaxKind[SyntaxKind["NewExpression"] = 174] = "NewExpression"; + SyntaxKind[SyntaxKind["TaggedTemplateExpression"] = 175] = "TaggedTemplateExpression"; + SyntaxKind[SyntaxKind["TypeAssertionExpression"] = 176] = "TypeAssertionExpression"; + SyntaxKind[SyntaxKind["ParenthesizedExpression"] = 177] = "ParenthesizedExpression"; + SyntaxKind[SyntaxKind["FunctionExpression"] = 178] = "FunctionExpression"; + SyntaxKind[SyntaxKind["ArrowFunction"] = 179] = "ArrowFunction"; + SyntaxKind[SyntaxKind["DeleteExpression"] = 180] = "DeleteExpression"; + SyntaxKind[SyntaxKind["TypeOfExpression"] = 181] = "TypeOfExpression"; + SyntaxKind[SyntaxKind["VoidExpression"] = 182] = "VoidExpression"; + SyntaxKind[SyntaxKind["AwaitExpression"] = 183] = "AwaitExpression"; + SyntaxKind[SyntaxKind["PrefixUnaryExpression"] = 184] = "PrefixUnaryExpression"; + SyntaxKind[SyntaxKind["PostfixUnaryExpression"] = 185] = "PostfixUnaryExpression"; + SyntaxKind[SyntaxKind["BinaryExpression"] = 186] = "BinaryExpression"; + SyntaxKind[SyntaxKind["ConditionalExpression"] = 187] = "ConditionalExpression"; + SyntaxKind[SyntaxKind["TemplateExpression"] = 188] = "TemplateExpression"; + SyntaxKind[SyntaxKind["YieldExpression"] = 189] = "YieldExpression"; + SyntaxKind[SyntaxKind["SpreadElementExpression"] = 190] = "SpreadElementExpression"; + SyntaxKind[SyntaxKind["ClassExpression"] = 191] = "ClassExpression"; + SyntaxKind[SyntaxKind["OmittedExpression"] = 192] = "OmittedExpression"; + SyntaxKind[SyntaxKind["ExpressionWithTypeArguments"] = 193] = "ExpressionWithTypeArguments"; + SyntaxKind[SyntaxKind["AsExpression"] = 194] = "AsExpression"; + SyntaxKind[SyntaxKind["NonNullExpression"] = 195] = "NonNullExpression"; // Misc - SyntaxKind[SyntaxKind["TemplateSpan"] = 194] = "TemplateSpan"; - SyntaxKind[SyntaxKind["SemicolonClassElement"] = 195] = "SemicolonClassElement"; + SyntaxKind[SyntaxKind["TemplateSpan"] = 196] = "TemplateSpan"; + SyntaxKind[SyntaxKind["SemicolonClassElement"] = 197] = "SemicolonClassElement"; // Element - SyntaxKind[SyntaxKind["Block"] = 196] = "Block"; - SyntaxKind[SyntaxKind["VariableStatement"] = 197] = "VariableStatement"; - SyntaxKind[SyntaxKind["EmptyStatement"] = 198] = "EmptyStatement"; - SyntaxKind[SyntaxKind["ExpressionStatement"] = 199] = "ExpressionStatement"; - SyntaxKind[SyntaxKind["IfStatement"] = 200] = "IfStatement"; - SyntaxKind[SyntaxKind["DoStatement"] = 201] = "DoStatement"; - SyntaxKind[SyntaxKind["WhileStatement"] = 202] = "WhileStatement"; - SyntaxKind[SyntaxKind["ForStatement"] = 203] = "ForStatement"; - SyntaxKind[SyntaxKind["ForInStatement"] = 204] = "ForInStatement"; - SyntaxKind[SyntaxKind["ForOfStatement"] = 205] = "ForOfStatement"; - SyntaxKind[SyntaxKind["ContinueStatement"] = 206] = "ContinueStatement"; - SyntaxKind[SyntaxKind["BreakStatement"] = 207] = "BreakStatement"; - SyntaxKind[SyntaxKind["ReturnStatement"] = 208] = "ReturnStatement"; - SyntaxKind[SyntaxKind["WithStatement"] = 209] = "WithStatement"; - SyntaxKind[SyntaxKind["SwitchStatement"] = 210] = "SwitchStatement"; - SyntaxKind[SyntaxKind["LabeledStatement"] = 211] = "LabeledStatement"; - SyntaxKind[SyntaxKind["ThrowStatement"] = 212] = "ThrowStatement"; - SyntaxKind[SyntaxKind["TryStatement"] = 213] = "TryStatement"; - SyntaxKind[SyntaxKind["DebuggerStatement"] = 214] = "DebuggerStatement"; - SyntaxKind[SyntaxKind["VariableDeclaration"] = 215] = "VariableDeclaration"; - SyntaxKind[SyntaxKind["VariableDeclarationList"] = 216] = "VariableDeclarationList"; - SyntaxKind[SyntaxKind["FunctionDeclaration"] = 217] = "FunctionDeclaration"; - SyntaxKind[SyntaxKind["ClassDeclaration"] = 218] = "ClassDeclaration"; - SyntaxKind[SyntaxKind["InterfaceDeclaration"] = 219] = "InterfaceDeclaration"; - SyntaxKind[SyntaxKind["TypeAliasDeclaration"] = 220] = "TypeAliasDeclaration"; - SyntaxKind[SyntaxKind["EnumDeclaration"] = 221] = "EnumDeclaration"; - SyntaxKind[SyntaxKind["ModuleDeclaration"] = 222] = "ModuleDeclaration"; - SyntaxKind[SyntaxKind["ModuleBlock"] = 223] = "ModuleBlock"; - SyntaxKind[SyntaxKind["CaseBlock"] = 224] = "CaseBlock"; - SyntaxKind[SyntaxKind["ImportEqualsDeclaration"] = 225] = "ImportEqualsDeclaration"; - SyntaxKind[SyntaxKind["ImportDeclaration"] = 226] = "ImportDeclaration"; - SyntaxKind[SyntaxKind["ImportClause"] = 227] = "ImportClause"; - SyntaxKind[SyntaxKind["NamespaceImport"] = 228] = "NamespaceImport"; - SyntaxKind[SyntaxKind["NamedImports"] = 229] = "NamedImports"; - SyntaxKind[SyntaxKind["ImportSpecifier"] = 230] = "ImportSpecifier"; - SyntaxKind[SyntaxKind["ExportAssignment"] = 231] = "ExportAssignment"; - SyntaxKind[SyntaxKind["ExportDeclaration"] = 232] = "ExportDeclaration"; - SyntaxKind[SyntaxKind["NamedExports"] = 233] = "NamedExports"; - SyntaxKind[SyntaxKind["ExportSpecifier"] = 234] = "ExportSpecifier"; - SyntaxKind[SyntaxKind["MissingDeclaration"] = 235] = "MissingDeclaration"; + SyntaxKind[SyntaxKind["Block"] = 198] = "Block"; + SyntaxKind[SyntaxKind["VariableStatement"] = 199] = "VariableStatement"; + SyntaxKind[SyntaxKind["EmptyStatement"] = 200] = "EmptyStatement"; + SyntaxKind[SyntaxKind["ExpressionStatement"] = 201] = "ExpressionStatement"; + SyntaxKind[SyntaxKind["IfStatement"] = 202] = "IfStatement"; + SyntaxKind[SyntaxKind["DoStatement"] = 203] = "DoStatement"; + SyntaxKind[SyntaxKind["WhileStatement"] = 204] = "WhileStatement"; + SyntaxKind[SyntaxKind["ForStatement"] = 205] = "ForStatement"; + SyntaxKind[SyntaxKind["ForInStatement"] = 206] = "ForInStatement"; + SyntaxKind[SyntaxKind["ForOfStatement"] = 207] = "ForOfStatement"; + SyntaxKind[SyntaxKind["ContinueStatement"] = 208] = "ContinueStatement"; + SyntaxKind[SyntaxKind["BreakStatement"] = 209] = "BreakStatement"; + SyntaxKind[SyntaxKind["ReturnStatement"] = 210] = "ReturnStatement"; + SyntaxKind[SyntaxKind["WithStatement"] = 211] = "WithStatement"; + SyntaxKind[SyntaxKind["SwitchStatement"] = 212] = "SwitchStatement"; + SyntaxKind[SyntaxKind["LabeledStatement"] = 213] = "LabeledStatement"; + SyntaxKind[SyntaxKind["ThrowStatement"] = 214] = "ThrowStatement"; + SyntaxKind[SyntaxKind["TryStatement"] = 215] = "TryStatement"; + SyntaxKind[SyntaxKind["DebuggerStatement"] = 216] = "DebuggerStatement"; + SyntaxKind[SyntaxKind["VariableDeclaration"] = 217] = "VariableDeclaration"; + SyntaxKind[SyntaxKind["VariableDeclarationList"] = 218] = "VariableDeclarationList"; + SyntaxKind[SyntaxKind["FunctionDeclaration"] = 219] = "FunctionDeclaration"; + SyntaxKind[SyntaxKind["ClassDeclaration"] = 220] = "ClassDeclaration"; + SyntaxKind[SyntaxKind["InterfaceDeclaration"] = 221] = "InterfaceDeclaration"; + SyntaxKind[SyntaxKind["TypeAliasDeclaration"] = 222] = "TypeAliasDeclaration"; + SyntaxKind[SyntaxKind["EnumDeclaration"] = 223] = "EnumDeclaration"; + SyntaxKind[SyntaxKind["ModuleDeclaration"] = 224] = "ModuleDeclaration"; + SyntaxKind[SyntaxKind["ModuleBlock"] = 225] = "ModuleBlock"; + SyntaxKind[SyntaxKind["CaseBlock"] = 226] = "CaseBlock"; + SyntaxKind[SyntaxKind["GlobalModuleExportDeclaration"] = 227] = "GlobalModuleExportDeclaration"; + SyntaxKind[SyntaxKind["ImportEqualsDeclaration"] = 228] = "ImportEqualsDeclaration"; + SyntaxKind[SyntaxKind["ImportDeclaration"] = 229] = "ImportDeclaration"; + SyntaxKind[SyntaxKind["ImportClause"] = 230] = "ImportClause"; + SyntaxKind[SyntaxKind["NamespaceImport"] = 231] = "NamespaceImport"; + SyntaxKind[SyntaxKind["NamedImports"] = 232] = "NamedImports"; + SyntaxKind[SyntaxKind["ImportSpecifier"] = 233] = "ImportSpecifier"; + SyntaxKind[SyntaxKind["ExportAssignment"] = 234] = "ExportAssignment"; + SyntaxKind[SyntaxKind["ExportDeclaration"] = 235] = "ExportDeclaration"; + SyntaxKind[SyntaxKind["NamedExports"] = 236] = "NamedExports"; + SyntaxKind[SyntaxKind["ExportSpecifier"] = 237] = "ExportSpecifier"; + SyntaxKind[SyntaxKind["MissingDeclaration"] = 238] = "MissingDeclaration"; // Module references - SyntaxKind[SyntaxKind["ExternalModuleReference"] = 236] = "ExternalModuleReference"; + SyntaxKind[SyntaxKind["ExternalModuleReference"] = 239] = "ExternalModuleReference"; // JSX - SyntaxKind[SyntaxKind["JsxElement"] = 237] = "JsxElement"; - SyntaxKind[SyntaxKind["JsxSelfClosingElement"] = 238] = "JsxSelfClosingElement"; - SyntaxKind[SyntaxKind["JsxOpeningElement"] = 239] = "JsxOpeningElement"; - SyntaxKind[SyntaxKind["JsxText"] = 240] = "JsxText"; - SyntaxKind[SyntaxKind["JsxClosingElement"] = 241] = "JsxClosingElement"; - SyntaxKind[SyntaxKind["JsxAttribute"] = 242] = "JsxAttribute"; - SyntaxKind[SyntaxKind["JsxSpreadAttribute"] = 243] = "JsxSpreadAttribute"; - SyntaxKind[SyntaxKind["JsxExpression"] = 244] = "JsxExpression"; + SyntaxKind[SyntaxKind["JsxElement"] = 240] = "JsxElement"; + SyntaxKind[SyntaxKind["JsxSelfClosingElement"] = 241] = "JsxSelfClosingElement"; + SyntaxKind[SyntaxKind["JsxOpeningElement"] = 242] = "JsxOpeningElement"; + SyntaxKind[SyntaxKind["JsxText"] = 243] = "JsxText"; + SyntaxKind[SyntaxKind["JsxClosingElement"] = 244] = "JsxClosingElement"; + SyntaxKind[SyntaxKind["JsxAttribute"] = 245] = "JsxAttribute"; + SyntaxKind[SyntaxKind["JsxSpreadAttribute"] = 246] = "JsxSpreadAttribute"; + SyntaxKind[SyntaxKind["JsxExpression"] = 247] = "JsxExpression"; // Clauses - SyntaxKind[SyntaxKind["CaseClause"] = 245] = "CaseClause"; - SyntaxKind[SyntaxKind["DefaultClause"] = 246] = "DefaultClause"; - SyntaxKind[SyntaxKind["HeritageClause"] = 247] = "HeritageClause"; - SyntaxKind[SyntaxKind["CatchClause"] = 248] = "CatchClause"; + SyntaxKind[SyntaxKind["CaseClause"] = 248] = "CaseClause"; + SyntaxKind[SyntaxKind["DefaultClause"] = 249] = "DefaultClause"; + SyntaxKind[SyntaxKind["HeritageClause"] = 250] = "HeritageClause"; + SyntaxKind[SyntaxKind["CatchClause"] = 251] = "CatchClause"; // Property assignments - SyntaxKind[SyntaxKind["PropertyAssignment"] = 249] = "PropertyAssignment"; - SyntaxKind[SyntaxKind["ShorthandPropertyAssignment"] = 250] = "ShorthandPropertyAssignment"; + SyntaxKind[SyntaxKind["PropertyAssignment"] = 252] = "PropertyAssignment"; + SyntaxKind[SyntaxKind["ShorthandPropertyAssignment"] = 253] = "ShorthandPropertyAssignment"; // Enum - SyntaxKind[SyntaxKind["EnumMember"] = 251] = "EnumMember"; + SyntaxKind[SyntaxKind["EnumMember"] = 254] = "EnumMember"; // Top-level nodes - SyntaxKind[SyntaxKind["SourceFile"] = 252] = "SourceFile"; + SyntaxKind[SyntaxKind["SourceFile"] = 255] = "SourceFile"; // JSDoc nodes - SyntaxKind[SyntaxKind["JSDocTypeExpression"] = 253] = "JSDocTypeExpression"; + SyntaxKind[SyntaxKind["JSDocTypeExpression"] = 256] = "JSDocTypeExpression"; // The * type - SyntaxKind[SyntaxKind["JSDocAllType"] = 254] = "JSDocAllType"; + SyntaxKind[SyntaxKind["JSDocAllType"] = 257] = "JSDocAllType"; // The ? type - SyntaxKind[SyntaxKind["JSDocUnknownType"] = 255] = "JSDocUnknownType"; - SyntaxKind[SyntaxKind["JSDocArrayType"] = 256] = "JSDocArrayType"; - SyntaxKind[SyntaxKind["JSDocUnionType"] = 257] = "JSDocUnionType"; - SyntaxKind[SyntaxKind["JSDocTupleType"] = 258] = "JSDocTupleType"; - SyntaxKind[SyntaxKind["JSDocNullableType"] = 259] = "JSDocNullableType"; - SyntaxKind[SyntaxKind["JSDocNonNullableType"] = 260] = "JSDocNonNullableType"; - SyntaxKind[SyntaxKind["JSDocRecordType"] = 261] = "JSDocRecordType"; - SyntaxKind[SyntaxKind["JSDocRecordMember"] = 262] = "JSDocRecordMember"; - SyntaxKind[SyntaxKind["JSDocTypeReference"] = 263] = "JSDocTypeReference"; - SyntaxKind[SyntaxKind["JSDocOptionalType"] = 264] = "JSDocOptionalType"; - SyntaxKind[SyntaxKind["JSDocFunctionType"] = 265] = "JSDocFunctionType"; - SyntaxKind[SyntaxKind["JSDocVariadicType"] = 266] = "JSDocVariadicType"; - SyntaxKind[SyntaxKind["JSDocConstructorType"] = 267] = "JSDocConstructorType"; - SyntaxKind[SyntaxKind["JSDocThisType"] = 268] = "JSDocThisType"; - SyntaxKind[SyntaxKind["JSDocComment"] = 269] = "JSDocComment"; - SyntaxKind[SyntaxKind["JSDocTag"] = 270] = "JSDocTag"; - SyntaxKind[SyntaxKind["JSDocParameterTag"] = 271] = "JSDocParameterTag"; - SyntaxKind[SyntaxKind["JSDocReturnTag"] = 272] = "JSDocReturnTag"; - SyntaxKind[SyntaxKind["JSDocTypeTag"] = 273] = "JSDocTypeTag"; - SyntaxKind[SyntaxKind["JSDocTemplateTag"] = 274] = "JSDocTemplateTag"; + SyntaxKind[SyntaxKind["JSDocUnknownType"] = 258] = "JSDocUnknownType"; + SyntaxKind[SyntaxKind["JSDocArrayType"] = 259] = "JSDocArrayType"; + SyntaxKind[SyntaxKind["JSDocUnionType"] = 260] = "JSDocUnionType"; + SyntaxKind[SyntaxKind["JSDocTupleType"] = 261] = "JSDocTupleType"; + SyntaxKind[SyntaxKind["JSDocNullableType"] = 262] = "JSDocNullableType"; + SyntaxKind[SyntaxKind["JSDocNonNullableType"] = 263] = "JSDocNonNullableType"; + SyntaxKind[SyntaxKind["JSDocRecordType"] = 264] = "JSDocRecordType"; + SyntaxKind[SyntaxKind["JSDocRecordMember"] = 265] = "JSDocRecordMember"; + SyntaxKind[SyntaxKind["JSDocTypeReference"] = 266] = "JSDocTypeReference"; + SyntaxKind[SyntaxKind["JSDocOptionalType"] = 267] = "JSDocOptionalType"; + SyntaxKind[SyntaxKind["JSDocFunctionType"] = 268] = "JSDocFunctionType"; + SyntaxKind[SyntaxKind["JSDocVariadicType"] = 269] = "JSDocVariadicType"; + SyntaxKind[SyntaxKind["JSDocConstructorType"] = 270] = "JSDocConstructorType"; + SyntaxKind[SyntaxKind["JSDocThisType"] = 271] = "JSDocThisType"; + SyntaxKind[SyntaxKind["JSDocComment"] = 272] = "JSDocComment"; + SyntaxKind[SyntaxKind["JSDocTag"] = 273] = "JSDocTag"; + SyntaxKind[SyntaxKind["JSDocParameterTag"] = 274] = "JSDocParameterTag"; + SyntaxKind[SyntaxKind["JSDocReturnTag"] = 275] = "JSDocReturnTag"; + SyntaxKind[SyntaxKind["JSDocTypeTag"] = 276] = "JSDocTypeTag"; + SyntaxKind[SyntaxKind["JSDocTemplateTag"] = 277] = "JSDocTemplateTag"; // Synthesized list - SyntaxKind[SyntaxKind["SyntaxList"] = 275] = "SyntaxList"; + SyntaxKind[SyntaxKind["SyntaxList"] = 278] = "SyntaxList"; // Enum value count - SyntaxKind[SyntaxKind["Count"] = 276] = "Count"; + SyntaxKind[SyntaxKind["Count"] = 279] = "Count"; // Markers SyntaxKind[SyntaxKind["FirstAssignment"] = 56] = "FirstAssignment"; SyntaxKind[SyntaxKind["LastAssignment"] = 68] = "LastAssignment"; SyntaxKind[SyntaxKind["FirstReservedWord"] = 70] = "FirstReservedWord"; SyntaxKind[SyntaxKind["LastReservedWord"] = 105] = "LastReservedWord"; SyntaxKind[SyntaxKind["FirstKeyword"] = 70] = "FirstKeyword"; - SyntaxKind[SyntaxKind["LastKeyword"] = 136] = "LastKeyword"; + SyntaxKind[SyntaxKind["LastKeyword"] = 137] = "LastKeyword"; SyntaxKind[SyntaxKind["FirstFutureReservedWord"] = 106] = "FirstFutureReservedWord"; SyntaxKind[SyntaxKind["LastFutureReservedWord"] = 114] = "LastFutureReservedWord"; - SyntaxKind[SyntaxKind["FirstTypeNode"] = 152] = "FirstTypeNode"; - SyntaxKind[SyntaxKind["LastTypeNode"] = 164] = "LastTypeNode"; + SyntaxKind[SyntaxKind["FirstTypeNode"] = 153] = "FirstTypeNode"; + SyntaxKind[SyntaxKind["LastTypeNode"] = 165] = "LastTypeNode"; SyntaxKind[SyntaxKind["FirstPunctuation"] = 15] = "FirstPunctuation"; SyntaxKind[SyntaxKind["LastPunctuation"] = 68] = "LastPunctuation"; SyntaxKind[SyntaxKind["FirstToken"] = 0] = "FirstToken"; - SyntaxKind[SyntaxKind["LastToken"] = 136] = "LastToken"; + SyntaxKind[SyntaxKind["LastToken"] = 137] = "LastToken"; SyntaxKind[SyntaxKind["FirstTriviaToken"] = 2] = "FirstTriviaToken"; SyntaxKind[SyntaxKind["LastTriviaToken"] = 7] = "LastTriviaToken"; SyntaxKind[SyntaxKind["FirstLiteralToken"] = 8] = "FirstLiteralToken"; @@ -354,7 +357,7 @@ var ts; SyntaxKind[SyntaxKind["LastTemplateToken"] = 14] = "LastTemplateToken"; SyntaxKind[SyntaxKind["FirstBinaryOperator"] = 25] = "FirstBinaryOperator"; SyntaxKind[SyntaxKind["LastBinaryOperator"] = 68] = "LastBinaryOperator"; - SyntaxKind[SyntaxKind["FirstNode"] = 137] = "FirstNode"; + SyntaxKind[SyntaxKind["FirstNode"] = 138] = "FirstNode"; })(ts.SyntaxKind || (ts.SyntaxKind = {})); var SyntaxKind = ts.SyntaxKind; (function (NodeFlags) { @@ -389,13 +392,14 @@ var ts; NodeFlags[NodeFlags["JavaScriptFile"] = 134217728] = "JavaScriptFile"; NodeFlags[NodeFlags["ThisNodeOrAnySubNodesHasError"] = 268435456] = "ThisNodeOrAnySubNodesHasError"; NodeFlags[NodeFlags["HasAggregatedChildData"] = 536870912] = "HasAggregatedChildData"; + NodeFlags[NodeFlags["HasJsxSpreadAttribute"] = 1073741824] = "HasJsxSpreadAttribute"; NodeFlags[NodeFlags["Modifier"] = 959] = "Modifier"; NodeFlags[NodeFlags["AccessibilityModifier"] = 28] = "AccessibilityModifier"; NodeFlags[NodeFlags["BlockScoped"] = 3072] = "BlockScoped"; NodeFlags[NodeFlags["ReachabilityCheckFlags"] = 98304] = "ReachabilityCheckFlags"; NodeFlags[NodeFlags["EmitHelperFlags"] = 3932160] = "EmitHelperFlags"; // Parsing context flags - NodeFlags[NodeFlags["ContextFlags"] = 62914560] = "ContextFlags"; + NodeFlags[NodeFlags["ContextFlags"] = 197132288] = "ContextFlags"; // Exclude these flags when parsing a Type NodeFlags[NodeFlags["TypeExcludesFlags"] = 41943040] = "TypeExcludesFlags"; })(ts.NodeFlags || (ts.NodeFlags = {})); @@ -622,6 +626,8 @@ var ts; TypeFlags[TypeFlags["ThisType"] = 33554432] = "ThisType"; TypeFlags[TypeFlags["ObjectLiteralPatternWithComputedProperties"] = 67108864] = "ObjectLiteralPatternWithComputedProperties"; /* @internal */ + TypeFlags[TypeFlags["Nullable"] = 96] = "Nullable"; + /* @internal */ TypeFlags[TypeFlags["Intrinsic"] = 16777343] = "Intrinsic"; /* @internal */ TypeFlags[TypeFlags["Primitive"] = 16777726] = "Primitive"; @@ -1087,8 +1093,14 @@ var ts; var count = array.length; if (count > 0) { var pos = 0; - var result = arguments.length <= 2 ? array[pos] : initial; - pos++; + var result = void 0; + if (arguments.length <= 2) { + result = array[pos]; + pos++; + } + else { + result = initial; + } while (pos < count) { result = f(result, array[pos]); pos++; @@ -1103,8 +1115,14 @@ var ts; if (array) { var pos = array.length - 1; if (pos >= 0) { - var result = arguments.length <= 2 ? array[pos] : initial; - pos--; + var result = void 0; + if (arguments.length <= 2) { + result = array[pos]; + pos--; + } + else { + result = initial; + } while (pos >= 0) { result = f(result, array[pos]); pos--; @@ -1120,6 +1138,14 @@ var ts; return hasOwnProperty.call(map, key); } ts.hasProperty = hasProperty; + function getKeys(map) { + var keys = []; + for (var key in map) { + keys.push(key); + } + return keys; + } + ts.getKeys = getKeys; function getProperty(map, key) { return hasOwnProperty.call(map, key) ? map[key] : undefined; } @@ -1586,6 +1612,32 @@ var ts; return pathLen > extLen && path.substr(pathLen - extLen, extLen) === extension; } ts.fileExtensionIs = fileExtensionIs; + function ensureScriptKind(fileName, scriptKind) { + // Using scriptKind as a condition handles both: + // - 'scriptKind' is unspecified and thus it is `undefined` + // - 'scriptKind' is set and it is `Unknown` (0) + // If the 'scriptKind' is 'undefined' or 'Unknown' then we attempt + // to get the ScriptKind from the file name. If it cannot be resolved + // from the file name then the default 'TS' script kind is returned. + return (scriptKind || getScriptKindFromFileName(fileName)) || 3 /* TS */; + } + ts.ensureScriptKind = ensureScriptKind; + function getScriptKindFromFileName(fileName) { + var ext = fileName.substr(fileName.lastIndexOf(".")); + switch (ext.toLowerCase()) { + case ".js": + return 1 /* JS */; + case ".jsx": + return 2 /* JSX */; + case ".ts": + return 3 /* TS */; + case ".tsx": + return 4 /* TSX */; + default: + return 0 /* Unknown */; + } + } + ts.getScriptKindFromFileName = getScriptKindFromFileName; /** * List of supported extensions in order of file resolution precedence. */ @@ -1837,6 +1889,7 @@ var ts; var _fs = require("fs"); var _path = require("path"); var _os = require("os"); + var _crypto = require("crypto"); // average async stat takes about 30 microseconds // set chunk size to do 30 files in < 1 millisecond function createPollingWatchedFileSet(interval, chunkSize) { @@ -1853,13 +1906,13 @@ var ts; if (!watchedFile) { return; } - _fs.stat(watchedFile.filePath, function (err, stats) { + _fs.stat(watchedFile.fileName, function (err, stats) { if (err) { - watchedFile.callback(watchedFile.filePath); + watchedFile.callback(watchedFile.fileName); } else if (watchedFile.mtime.getTime() !== stats.mtime.getTime()) { - watchedFile.mtime = getModifiedTime(watchedFile.filePath); - watchedFile.callback(watchedFile.filePath, watchedFile.mtime.getTime() === 0); + watchedFile.mtime = getModifiedTime(watchedFile.fileName); + watchedFile.callback(watchedFile.fileName, watchedFile.mtime.getTime() === 0); } }); } @@ -1885,11 +1938,11 @@ var ts; nextFileToCheck = nextToCheck; }, interval); } - function addFile(filePath, callback) { + function addFile(fileName, callback) { var file = { - filePath: filePath, + fileName: fileName, callback: callback, - mtime: getModifiedTime(filePath) + mtime: getModifiedTime(fileName) }; watchedFiles.push(file); if (watchedFiles.length === 1) { @@ -1909,70 +1962,70 @@ var ts; }; } function createWatchedFileSet() { - var dirWatchers = ts.createFileMap(); + var dirWatchers = {}; // One file can have multiple watchers - var fileWatcherCallbacks = ts.createFileMap(); + var fileWatcherCallbacks = {}; return { addFile: addFile, removeFile: removeFile }; - function reduceDirWatcherRefCountForFile(filePath) { - var dirPath = ts.getDirectoryPath(filePath); - if (dirWatchers.contains(dirPath)) { - var watcher = dirWatchers.get(dirPath); + function reduceDirWatcherRefCountForFile(fileName) { + var dirName = ts.getDirectoryPath(fileName); + if (ts.hasProperty(dirWatchers, dirName)) { + var watcher = dirWatchers[dirName]; watcher.referenceCount -= 1; if (watcher.referenceCount <= 0) { watcher.close(); - dirWatchers.remove(dirPath); + delete dirWatchers[dirName]; } } } function addDirWatcher(dirPath) { - if (dirWatchers.contains(dirPath)) { - var watcher_1 = dirWatchers.get(dirPath); + if (ts.hasProperty(dirWatchers, dirPath)) { + var watcher_1 = dirWatchers[dirPath]; watcher_1.referenceCount += 1; return; } var watcher = _fs.watch(dirPath, { persistent: true }, function (eventName, relativeFileName) { return fileEventHandler(eventName, relativeFileName, dirPath); }); watcher.referenceCount = 1; - dirWatchers.set(dirPath, watcher); + dirWatchers[dirPath] = watcher; return; } function addFileWatcherCallback(filePath, callback) { - if (fileWatcherCallbacks.contains(filePath)) { - fileWatcherCallbacks.get(filePath).push(callback); + if (ts.hasProperty(fileWatcherCallbacks, filePath)) { + fileWatcherCallbacks[filePath].push(callback); } else { - fileWatcherCallbacks.set(filePath, [callback]); + fileWatcherCallbacks[filePath] = [callback]; } } - function addFile(filePath, callback) { - addFileWatcherCallback(filePath, callback); - addDirWatcher(ts.getDirectoryPath(filePath)); - return { filePath: filePath, callback: callback }; + function addFile(fileName, callback) { + addFileWatcherCallback(fileName, callback); + addDirWatcher(ts.getDirectoryPath(fileName)); + return { fileName: fileName, callback: callback }; } function removeFile(watchedFile) { - removeFileWatcherCallback(watchedFile.filePath, watchedFile.callback); - reduceDirWatcherRefCountForFile(watchedFile.filePath); + removeFileWatcherCallback(watchedFile.fileName, watchedFile.callback); + reduceDirWatcherRefCountForFile(watchedFile.fileName); } function removeFileWatcherCallback(filePath, callback) { - if (fileWatcherCallbacks.contains(filePath)) { - var newCallbacks = ts.copyListRemovingItem(callback, fileWatcherCallbacks.get(filePath)); + if (ts.hasProperty(fileWatcherCallbacks, filePath)) { + var newCallbacks = ts.copyListRemovingItem(callback, fileWatcherCallbacks[filePath]); if (newCallbacks.length === 0) { - fileWatcherCallbacks.remove(filePath); + delete fileWatcherCallbacks[filePath]; } else { - fileWatcherCallbacks.set(filePath, newCallbacks); + fileWatcherCallbacks[filePath] = newCallbacks; } } } function fileEventHandler(eventName, relativeFileName, baseDirPath) { // When files are deleted from disk, the triggered "rename" event would have a relativefileName of "undefined" - var filePath = typeof relativeFileName !== "string" + var fileName = typeof relativeFileName !== "string" ? undefined - : ts.toPath(relativeFileName, baseDirPath, ts.createGetCanonicalFileName(ts.sys.useCaseSensitiveFileNames)); + : ts.getNormalizedAbsolutePath(relativeFileName, baseDirPath); // Some applications save a working file via rename operations - if ((eventName === "change" || eventName === "rename") && fileWatcherCallbacks.contains(filePath)) { - for (var _i = 0, _a = fileWatcherCallbacks.get(filePath); _i < _a.length; _i++) { + if ((eventName === "change" || eventName === "rename") && ts.hasProperty(fileWatcherCallbacks, fileName)) { + for (var _i = 0, _a = fileWatcherCallbacks[fileName]; _i < _a.length; _i++) { var fileCallback = _a[_i]; - fileCallback(filePath); + fileCallback(fileName); } } } @@ -2078,6 +2131,11 @@ var ts; var directories = []; for (var _i = 0, files_2 = files; _i < files_2.length; _i++) { var current = files_2[_i]; + // This is necessary because on some file system node fails to exclude + // "." and "..". See https://github.com/nodejs/node/issues/4002 + if (current === "." || current === "..") { + continue; + } var name_3 = ts.combinePaths(path, current); if (!ts.contains(exclude, getCanonicalPath(name_3))) { var stat = _fs.statSync(name_3); @@ -2106,18 +2164,18 @@ var ts; }, readFile: readFile, writeFile: writeFile, - watchFile: function (filePath, callback) { + watchFile: function (fileName, callback) { // Node 4.0 stabilized the `fs.watch` function on Windows which avoids polling // and is more efficient than `fs.watchFile` (ref: https://github.com/nodejs/node/pull/2649 // and https://github.com/Microsoft/TypeScript/issues/4643), therefore // if the current node.js version is newer than 4, use `fs.watch` instead. var watchSet = isNode4OrLater() ? watchedFileSet : pollingWatchedFileSet; - var watchedFile = watchSet.addFile(filePath, callback); + var watchedFile = watchSet.addFile(fileName, callback); return { close: function () { return watchSet.removeFile(watchedFile); } }; }, - watchDirectory: function (path, callback, recursive) { + watchDirectory: function (directoryName, callback, recursive) { // Node 4.0 `fs.watch` function supports the "recursive" option on both OSX and Windows // (ref: https://github.com/nodejs/node/pull/2649 and https://github.com/Microsoft/TypeScript/issues/4643) var options; @@ -2127,13 +2185,13 @@ var ts; else { options = { persistent: true }; } - return _fs.watch(path, options, function (eventName, relativeFileName) { + return _fs.watch(directoryName, options, function (eventName, relativeFileName) { // In watchDirectory we only care about adding and removing files (when event name is // "rename"); changes made within files are handled by corresponding fileWatchers (when // event name is "change") if (eventName === "rename") { // When deleting a file, the passed baseFileName is null - callback(!relativeFileName ? relativeFileName : ts.normalizePath(ts.combinePaths(path, relativeFileName))); + callback(!relativeFileName ? relativeFileName : ts.normalizePath(ts.combinePaths(directoryName, relativeFileName))); } ; }); @@ -2155,6 +2213,19 @@ var ts; return process.cwd(); }, readDirectory: readDirectory, + getModifiedTime: function (path) { + try { + return _fs.statSync(path).mtime; + } + catch (e) { + return undefined; + } + }, + createHash: function (data) { + var hash = _crypto.createHash("md5"); + hash.update(data); + return hash.digest("hex"); + }, getMemoryUsage: function () { if (global.gc) { global.gc(); @@ -2423,6 +2494,9 @@ var ts; Async_functions_are_only_available_when_targeting_ECMAScript_6_and_higher: { code: 1311, category: ts.DiagnosticCategory.Error, key: "Async_functions_are_only_available_when_targeting_ECMAScript_6_and_higher_1311", message: "Async functions are only available when targeting ECMAScript 6 and higher." }, can_only_be_used_in_an_object_literal_property_inside_a_destructuring_assignment: { code: 1312, category: ts.DiagnosticCategory.Error, key: "can_only_be_used_in_an_object_literal_property_inside_a_destructuring_assignment_1312", message: "'=' can only be used in an object literal property inside a destructuring assignment." }, The_body_of_an_if_statement_cannot_be_the_empty_statement: { code: 1313, category: ts.DiagnosticCategory.Error, key: "The_body_of_an_if_statement_cannot_be_the_empty_statement_1313", message: "The body of an 'if' statement cannot be the empty statement." }, + Global_module_exports_may_only_appear_in_module_files: { code: 1314, category: ts.DiagnosticCategory.Error, key: "Global_module_exports_may_only_appear_in_module_files_1314", message: "Global module exports may only appear in module files." }, + Global_module_exports_may_only_appear_in_declaration_files: { code: 1315, category: ts.DiagnosticCategory.Error, key: "Global_module_exports_may_only_appear_in_declaration_files_1315", message: "Global module exports may only appear in declaration files." }, + Global_module_exports_may_only_appear_at_top_level: { code: 1316, category: ts.DiagnosticCategory.Error, key: "Global_module_exports_may_only_appear_at_top_level_1316", message: "Global module exports may only appear at top level." }, Duplicate_identifier_0: { code: 2300, category: ts.DiagnosticCategory.Error, key: "Duplicate_identifier_0_2300", message: "Duplicate identifier '{0}'." }, Initializer_of_instance_member_variable_0_cannot_reference_identifier_1_declared_in_the_constructor: { code: 2301, category: ts.DiagnosticCategory.Error, key: "Initializer_of_instance_member_variable_0_cannot_reference_identifier_1_declared_in_the_constructor_2301", message: "Initializer of instance member variable '{0}' cannot reference identifier '{1}' declared in the constructor." }, Static_members_cannot_reference_class_type_parameters: { code: 2302, category: ts.DiagnosticCategory.Error, key: "Static_members_cannot_reference_class_type_parameters_2302", message: "Static members cannot reference class type parameters." }, @@ -2474,7 +2548,7 @@ var ts; Cannot_invoke_an_expression_whose_type_lacks_a_call_signature: { code: 2349, category: ts.DiagnosticCategory.Error, key: "Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_2349", message: "Cannot invoke an expression whose type lacks a call signature." }, Only_a_void_function_can_be_called_with_the_new_keyword: { code: 2350, category: ts.DiagnosticCategory.Error, key: "Only_a_void_function_can_be_called_with_the_new_keyword_2350", message: "Only a void function can be called with the 'new' keyword." }, Cannot_use_new_with_an_expression_whose_type_lacks_a_call_or_construct_signature: { code: 2351, category: ts.DiagnosticCategory.Error, key: "Cannot_use_new_with_an_expression_whose_type_lacks_a_call_or_construct_signature_2351", message: "Cannot use 'new' with an expression whose type lacks a call or construct signature." }, - Neither_type_0_nor_type_1_is_assignable_to_the_other: { code: 2352, category: ts.DiagnosticCategory.Error, key: "Neither_type_0_nor_type_1_is_assignable_to_the_other_2352", message: "Neither type '{0}' nor type '{1}' is assignable to the other." }, + Type_0_cannot_be_converted_to_type_1: { code: 2352, category: ts.DiagnosticCategory.Error, key: "Type_0_cannot_be_converted_to_type_1_2352", message: "Type '{0}' cannot be converted to type '{1}'." }, Object_literal_may_only_specify_known_properties_and_0_does_not_exist_in_type_1: { code: 2353, category: ts.DiagnosticCategory.Error, key: "Object_literal_may_only_specify_known_properties_and_0_does_not_exist_in_type_1_2353", message: "Object literal may only specify known properties, and '{0}' does not exist in type '{1}'." }, No_best_common_type_exists_among_return_expressions: { code: 2354, category: ts.DiagnosticCategory.Error, key: "No_best_common_type_exists_among_return_expressions_2354", message: "No best common type exists among return expressions." }, A_function_whose_declared_type_is_neither_void_nor_any_must_return_a_value: { code: 2355, category: ts.DiagnosticCategory.Error, key: "A_function_whose_declared_type_is_neither_void_nor_any_must_return_a_value_2355", message: "A function whose declared type is neither 'void' nor 'any' must return a value." }, @@ -2488,6 +2562,7 @@ var ts; The_right_hand_side_of_an_arithmetic_operation_must_be_of_type_any_number_or_an_enum_type: { code: 2363, category: ts.DiagnosticCategory.Error, key: "The_right_hand_side_of_an_arithmetic_operation_must_be_of_type_any_number_or_an_enum_type_2363", message: "The right-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type." }, Invalid_left_hand_side_of_assignment_expression: { code: 2364, category: ts.DiagnosticCategory.Error, key: "Invalid_left_hand_side_of_assignment_expression_2364", message: "Invalid left-hand side of assignment expression." }, Operator_0_cannot_be_applied_to_types_1_and_2: { code: 2365, category: ts.DiagnosticCategory.Error, key: "Operator_0_cannot_be_applied_to_types_1_and_2_2365", message: "Operator '{0}' cannot be applied to types '{1}' and '{2}'." }, + Function_lacks_ending_return_statement_and_return_type_does_not_include_undefined: { code: 2366, category: ts.DiagnosticCategory.Error, key: "Function_lacks_ending_return_statement_and_return_type_does_not_include_undefined_2366", message: "Function lacks ending return statement and return type does not include 'undefined'." }, Type_parameter_name_cannot_be_0: { code: 2368, category: ts.DiagnosticCategory.Error, key: "Type_parameter_name_cannot_be_0_2368", message: "Type parameter name cannot be '{0}'" }, A_parameter_property_is_only_allowed_in_a_constructor_implementation: { code: 2369, category: ts.DiagnosticCategory.Error, key: "A_parameter_property_is_only_allowed_in_a_constructor_implementation_2369", message: "A parameter property is only allowed in a constructor implementation." }, A_rest_parameter_must_be_of_an_array_type: { code: 2370, category: ts.DiagnosticCategory.Error, key: "A_rest_parameter_must_be_of_an_array_type_2370", message: "A rest parameter must be of an array type." }, @@ -2568,6 +2643,7 @@ var ts; Cannot_redeclare_block_scoped_variable_0: { code: 2451, category: ts.DiagnosticCategory.Error, key: "Cannot_redeclare_block_scoped_variable_0_2451", message: "Cannot redeclare block-scoped variable '{0}'." }, An_enum_member_cannot_have_a_numeric_name: { code: 2452, category: ts.DiagnosticCategory.Error, key: "An_enum_member_cannot_have_a_numeric_name_2452", message: "An enum member cannot have a numeric name." }, The_type_argument_for_type_parameter_0_cannot_be_inferred_from_the_usage_Consider_specifying_the_type_arguments_explicitly: { code: 2453, category: ts.DiagnosticCategory.Error, key: "The_type_argument_for_type_parameter_0_cannot_be_inferred_from_the_usage_Consider_specifying_the_typ_2453", message: "The type argument for type parameter '{0}' cannot be inferred from the usage. Consider specifying the type arguments explicitly." }, + Variable_0_is_used_before_being_assigned: { code: 2454, category: ts.DiagnosticCategory.Error, key: "Variable_0_is_used_before_being_assigned_2454", message: "Variable '{0}' is used before being assigned." }, Type_argument_candidate_1_is_not_a_valid_type_argument_because_it_is_not_a_supertype_of_candidate_0: { code: 2455, category: ts.DiagnosticCategory.Error, key: "Type_argument_candidate_1_is_not_a_valid_type_argument_because_it_is_not_a_supertype_of_candidate_0_2455", message: "Type argument candidate '{1}' is not a valid type argument because it is not a supertype of candidate '{0}'." }, Type_alias_0_circularly_references_itself: { code: 2456, category: ts.DiagnosticCategory.Error, key: "Type_alias_0_circularly_references_itself_2456", message: "Type alias '{0}' circularly references itself." }, Type_alias_name_cannot_be_0: { code: 2457, category: ts.DiagnosticCategory.Error, key: "Type_alias_name_cannot_be_0_2457", message: "Type alias name cannot be '{0}'" }, @@ -2642,6 +2718,7 @@ var ts; A_module_cannot_have_multiple_default_exports: { code: 2528, category: ts.DiagnosticCategory.Error, key: "A_module_cannot_have_multiple_default_exports_2528", message: "A module cannot have multiple default exports." }, Duplicate_identifier_0_Compiler_reserves_name_1_in_top_level_scope_of_a_module_containing_async_functions: { code: 2529, category: ts.DiagnosticCategory.Error, key: "Duplicate_identifier_0_Compiler_reserves_name_1_in_top_level_scope_of_a_module_containing_async_func_2529", message: "Duplicate identifier '{0}'. Compiler reserves name '{1}' in top level scope of a module containing async functions." }, Property_0_is_incompatible_with_index_signature: { code: 2530, category: ts.DiagnosticCategory.Error, key: "Property_0_is_incompatible_with_index_signature_2530", message: "Property '{0}' is incompatible with index signature." }, + Object_is_possibly_null_or_undefined: { code: 2531, category: ts.DiagnosticCategory.Error, key: "Object_is_possibly_null_or_undefined_2531", message: "Object is possibly 'null' or 'undefined'." }, JSX_element_attributes_type_0_may_not_be_a_union_type: { code: 2600, category: ts.DiagnosticCategory.Error, key: "JSX_element_attributes_type_0_may_not_be_a_union_type_2600", message: "JSX element attributes type '{0}' may not be a union type." }, The_return_type_of_a_JSX_element_constructor_must_return_an_object_type: { code: 2601, category: ts.DiagnosticCategory.Error, key: "The_return_type_of_a_JSX_element_constructor_must_return_an_object_type_2601", message: "The return type of a JSX element constructor must return an object type." }, JSX_element_implicitly_has_type_any_because_the_global_type_JSX_Element_does_not_exist: { code: 2602, category: ts.DiagnosticCategory.Error, key: "JSX_element_implicitly_has_type_any_because_the_global_type_JSX_Element_does_not_exist_2602", message: "JSX element implicitly has type 'any' because the global type 'JSX.Element' does not exist." }, @@ -2677,6 +2754,15 @@ var ts; Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration: { code: 2674, category: ts.DiagnosticCategory.Error, key: "Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration_2674", message: "Constructor of class '{0}' is protected and only accessible within the class declaration." }, Cannot_extend_a_class_0_Class_constructor_is_marked_as_private: { code: 2675, category: ts.DiagnosticCategory.Error, key: "Cannot_extend_a_class_0_Class_constructor_is_marked_as_private_2675", message: "Cannot extend a class '{0}'. Class constructor is marked as private." }, Accessors_must_both_be_abstract_or_non_abstract: { code: 2676, category: ts.DiagnosticCategory.Error, key: "Accessors_must_both_be_abstract_or_non_abstract_2676", message: "Accessors must both be abstract or non-abstract." }, + A_type_predicate_s_type_must_be_assignable_to_its_parameter_s_type: { code: 2677, category: ts.DiagnosticCategory.Error, key: "A_type_predicate_s_type_must_be_assignable_to_its_parameter_s_type_2677", message: "A type predicate's type must be assignable to its parameter's type." }, + Type_0_is_not_comparable_to_type_1: { code: 2678, category: ts.DiagnosticCategory.Error, key: "Type_0_is_not_comparable_to_type_1_2678", message: "Type '{0}' is not comparable to type '{1}'." }, + A_function_that_is_called_with_the_new_keyword_cannot_have_a_this_type_that_is_void: { code: 2679, category: ts.DiagnosticCategory.Error, key: "A_function_that_is_called_with_the_new_keyword_cannot_have_a_this_type_that_is_void_2679", message: "A function that is called with the 'new' keyword cannot have a 'this' type that is 'void'." }, + A_this_parameter_must_be_the_first_parameter: { code: 2680, category: ts.DiagnosticCategory.Error, key: "A_this_parameter_must_be_the_first_parameter_2680", message: "A 'this' parameter must be the first parameter." }, + A_constructor_cannot_have_a_this_parameter: { code: 2681, category: ts.DiagnosticCategory.Error, key: "A_constructor_cannot_have_a_this_parameter_2681", message: "A constructor cannot have a 'this' parameter." }, + A_setter_cannot_have_a_this_parameter: { code: 2682, category: ts.DiagnosticCategory.Error, key: "A_setter_cannot_have_a_this_parameter_2682", message: "A setter cannot have a 'this' parameter." }, + this_implicitly_has_type_any_because_it_does_not_have_a_type_annotation: { code: 2683, category: ts.DiagnosticCategory.Error, key: "this_implicitly_has_type_any_because_it_does_not_have_a_type_annotation_2683", message: "'this' implicitly has type 'any' because it does not have a type annotation." }, + The_this_context_of_type_0_is_not_assignable_to_method_s_this_of_type_1: { code: 2684, category: ts.DiagnosticCategory.Error, key: "The_this_context_of_type_0_is_not_assignable_to_method_s_this_of_type_1_2684", message: "The 'this' context of type '{0}' is not assignable to method's 'this' of type '{1}'." }, + The_this_types_of_each_signature_are_incompatible: { code: 2685, category: ts.DiagnosticCategory.Error, key: "The_this_types_of_each_signature_are_incompatible_2685", message: "The 'this' types of each signature are incompatible." }, Import_declaration_0_is_using_private_name_1: { code: 4000, category: ts.DiagnosticCategory.Error, key: "Import_declaration_0_is_using_private_name_1_4000", message: "Import declaration '{0}' is using private name '{1}'." }, Type_parameter_0_of_exported_class_has_or_is_using_private_name_1: { code: 4002, category: ts.DiagnosticCategory.Error, key: "Type_parameter_0_of_exported_class_has_or_is_using_private_name_1_4002", message: "Type parameter '{0}' of exported class has or is using private name '{1}'." }, Type_parameter_0_of_exported_interface_has_or_is_using_private_name_1: { code: 4004, category: ts.DiagnosticCategory.Error, key: "Type_parameter_0_of_exported_interface_has_or_is_using_private_name_1_4004", message: "Type parameter '{0}' of exported interface has or is using private name '{1}'." }, @@ -2747,6 +2833,7 @@ var ts; Parameter_0_of_exported_function_has_or_is_using_private_name_1: { code: 4078, category: ts.DiagnosticCategory.Error, key: "Parameter_0_of_exported_function_has_or_is_using_private_name_1_4078", message: "Parameter '{0}' of exported function has or is using private name '{1}'." }, Exported_type_alias_0_has_or_is_using_private_name_1: { code: 4081, category: ts.DiagnosticCategory.Error, key: "Exported_type_alias_0_has_or_is_using_private_name_1_4081", message: "Exported type alias '{0}' has or is using private name '{1}'." }, Default_export_of_the_module_has_or_is_using_private_name_0: { code: 4082, category: ts.DiagnosticCategory.Error, key: "Default_export_of_the_module_has_or_is_using_private_name_0_4082", message: "Default export of the module has or is using private name '{0}'." }, + Conflicting_library_definitions_for_0_found_at_1_and_2_Copy_the_correct_file_to_the_typings_folder_to_resolve_this_conflict: { code: 4090, category: ts.DiagnosticCategory.Message, key: "Conflicting_library_definitions_for_0_found_at_1_and_2_Copy_the_correct_file_to_the_typings_folder_t_4090", message: "Conflicting library definitions for '{0}' found at '{1}' and '{2}'. Copy the correct file to the 'typings' folder to resolve this conflict." }, The_current_host_does_not_support_the_0_option: { code: 5001, category: ts.DiagnosticCategory.Error, key: "The_current_host_does_not_support_the_0_option_5001", message: "The current host does not support the '{0}' option." }, Cannot_find_the_common_subdirectory_path_for_the_input_files: { code: 5009, category: ts.DiagnosticCategory.Error, key: "Cannot_find_the_common_subdirectory_path_for_the_input_files_5009", message: "Cannot find the common subdirectory path for the input files." }, Cannot_read_file_0_Colon_1: { code: 5012, category: ts.DiagnosticCategory.Error, key: "Cannot_read_file_0_Colon_1_5012", message: "Cannot read file '{0}': {1}" }, @@ -2771,8 +2858,8 @@ 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" }, 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." }, - Specifies_the_location_where_debugger_should_locate_map_files_instead_of_generated_locations: { code: 6003, category: ts.DiagnosticCategory.Message, key: "Specifies_the_location_where_debugger_should_locate_map_files_instead_of_generated_locations_6003", message: "Specifies the location where debugger should locate map files instead of generated locations." }, - Specifies_the_location_where_debugger_should_locate_TypeScript_files_instead_of_source_locations: { code: 6004, category: ts.DiagnosticCategory.Message, key: "Specifies_the_location_where_debugger_should_locate_TypeScript_files_instead_of_source_locations_6004", message: "Specifies the location where debugger should locate TypeScript files instead of source locations." }, + 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." }, + Specify_the_location_where_debugger_should_locate_TypeScript_files_instead_of_source_locations: { code: 6004, category: ts.DiagnosticCategory.Message, key: "Specify_the_location_where_debugger_should_locate_TypeScript_files_instead_of_source_locations_6004", message: "Specify the location where debugger should locate TypeScript files instead of source locations." }, Watch_input_files: { code: 6005, category: ts.DiagnosticCategory.Message, key: "Watch_input_files_6005", message: "Watch input files." }, Redirect_output_structure_to_the_directory: { code: 6006, category: ts.DiagnosticCategory.Message, key: "Redirect_output_structure_to_the_directory_6006", message: "Redirect output structure to the directory." }, Do_not_erase_const_enum_declarations_in_generated_code: { code: 6007, category: ts.DiagnosticCategory.Message, key: "Do_not_erase_const_enum_declarations_in_generated_code_6007", message: "Do not erase const enum declarations in generated code." }, @@ -2780,7 +2867,7 @@ var ts; Do_not_emit_comments_to_output: { code: 6009, category: ts.DiagnosticCategory.Message, key: "Do_not_emit_comments_to_output_6009", message: "Do not emit comments to output." }, Do_not_emit_outputs: { code: 6010, category: ts.DiagnosticCategory.Message, key: "Do_not_emit_outputs_6010", message: "Do not emit outputs." }, Allow_default_imports_from_modules_with_no_default_export_This_does_not_affect_code_emit_just_typechecking: { code: 6011, category: ts.DiagnosticCategory.Message, key: "Allow_default_imports_from_modules_with_no_default_export_This_does_not_affect_code_emit_just_typech_6011", message: "Allow default imports from modules with no default export. This does not affect code emit, just typechecking." }, - Specify_ECMAScript_target_version_Colon_ES3_default_ES5_or_ES2015_experimental: { code: 6015, category: ts.DiagnosticCategory.Message, key: "Specify_ECMAScript_target_version_Colon_ES3_default_ES5_or_ES2015_experimental_6015", message: "Specify ECMAScript target version: 'ES3' (default), 'ES5', or 'ES2015' (experimental)" }, + Specify_ECMAScript_target_version_Colon_ES3_default_ES5_or_ES2015: { code: 6015, category: ts.DiagnosticCategory.Message, key: "Specify_ECMAScript_target_version_Colon_ES3_default_ES5_or_ES2015_6015", message: "Specify ECMAScript target version: 'ES3' (default), 'ES5', or 'ES2015'" }, Specify_module_code_generation_Colon_commonjs_amd_system_umd_or_es2015: { code: 6016, category: ts.DiagnosticCategory.Message, key: "Specify_module_code_generation_Colon_commonjs_amd_system_umd_or_es2015_6016", message: "Specify module code generation: 'commonjs', 'amd', 'system', 'umd' or 'es2015'" }, Print_this_message: { code: 6017, category: ts.DiagnosticCategory.Message, key: "Print_this_message_6017", message: "Print this message." }, Print_the_compiler_s_version: { code: 6019, category: ts.DiagnosticCategory.Message, key: "Print_the_compiler_s_version_6019", message: "Print the compiler's version." }, @@ -2802,8 +2889,7 @@ var ts; Generates_corresponding_map_file: { code: 6043, category: ts.DiagnosticCategory.Message, key: "Generates_corresponding_map_file_6043", message: "Generates corresponding '.map' file." }, Compiler_option_0_expects_an_argument: { code: 6044, category: ts.DiagnosticCategory.Error, key: "Compiler_option_0_expects_an_argument_6044", message: "Compiler option '{0}' expects an argument." }, Unterminated_quoted_string_in_response_file_0: { code: 6045, category: ts.DiagnosticCategory.Error, key: "Unterminated_quoted_string_in_response_file_0_6045", message: "Unterminated quoted string in response file '{0}'." }, - Argument_for_module_option_must_be_commonjs_amd_system_umd_es2015_or_none: { code: 6046, category: ts.DiagnosticCategory.Error, key: "Argument_for_module_option_must_be_commonjs_amd_system_umd_es2015_or_none_6046", message: "Argument for '--module' option must be 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'none'." }, - Argument_for_target_option_must_be_ES3_ES5_or_ES2015: { code: 6047, category: ts.DiagnosticCategory.Error, key: "Argument_for_target_option_must_be_ES3_ES5_or_ES2015_6047", message: "Argument for '--target' option must be 'ES3', 'ES5', or 'ES2015'." }, + Argument_for_0_option_must_be_Colon_1: { code: 6046, category: ts.DiagnosticCategory.Error, key: "Argument_for_0_option_must_be_Colon_1_6046", message: "Argument for '{0}' option must be: {1}" }, Locale_must_be_of_the_form_language_or_language_territory_For_example_0_or_1: { code: 6048, category: ts.DiagnosticCategory.Error, key: "Locale_must_be_of_the_form_language_or_language_territory_For_example_0_or_1_6048", message: "Locale must be of the form or -. For example '{0}' or '{1}'." }, Unsupported_locale_0: { code: 6049, category: ts.DiagnosticCategory.Error, key: "Unsupported_locale_0_6049", message: "Unsupported locale '{0}'." }, Unable_to_open_file_0: { code: 6050, category: ts.DiagnosticCategory.Error, key: "Unable_to_open_file_0_6050", message: "Unable to open file '{0}'." }, @@ -2813,17 +2899,15 @@ var ts; File_0_has_unsupported_extension_The_only_supported_extensions_are_1: { code: 6054, category: ts.DiagnosticCategory.Error, key: "File_0_has_unsupported_extension_The_only_supported_extensions_are_1_6054", message: "File '{0}' has unsupported extension. The only supported extensions are {1}." }, Suppress_noImplicitAny_errors_for_indexing_objects_lacking_index_signatures: { code: 6055, category: ts.DiagnosticCategory.Message, key: "Suppress_noImplicitAny_errors_for_indexing_objects_lacking_index_signatures_6055", message: "Suppress noImplicitAny errors for indexing objects lacking index signatures." }, Do_not_emit_declarations_for_code_that_has_an_internal_annotation: { code: 6056, category: ts.DiagnosticCategory.Message, key: "Do_not_emit_declarations_for_code_that_has_an_internal_annotation_6056", message: "Do not emit declarations for code that has an '@internal' annotation." }, - Specifies_the_root_directory_of_input_files_Use_to_control_the_output_directory_structure_with_outDir: { code: 6058, category: ts.DiagnosticCategory.Message, key: "Specifies_the_root_directory_of_input_files_Use_to_control_the_output_directory_structure_with_outDi_6058", message: "Specifies the root directory of input files. Use to control the output directory structure with --outDir." }, + Specify_the_root_directory_of_input_files_Use_to_control_the_output_directory_structure_with_outDir: { code: 6058, category: ts.DiagnosticCategory.Message, key: "Specify_the_root_directory_of_input_files_Use_to_control_the_output_directory_structure_with_outDir_6058", message: "Specify the root directory of input files. Use to control the output directory structure with --outDir." }, File_0_is_not_under_rootDir_1_rootDir_is_expected_to_contain_all_source_files: { code: 6059, category: ts.DiagnosticCategory.Error, key: "File_0_is_not_under_rootDir_1_rootDir_is_expected_to_contain_all_source_files_6059", message: "File '{0}' is not under 'rootDir' '{1}'. 'rootDir' is expected to contain all source files." }, - Specifies_the_end_of_line_sequence_to_be_used_when_emitting_files_Colon_CRLF_dos_or_LF_unix: { code: 6060, category: ts.DiagnosticCategory.Message, key: "Specifies_the_end_of_line_sequence_to_be_used_when_emitting_files_Colon_CRLF_dos_or_LF_unix_6060", message: "Specifies the end of line sequence to be used when emitting files: 'CRLF' (dos) or 'LF' (unix)." }, + Specify_the_end_of_line_sequence_to_be_used_when_emitting_files_Colon_CRLF_dos_or_LF_unix: { code: 6060, category: ts.DiagnosticCategory.Message, key: "Specify_the_end_of_line_sequence_to_be_used_when_emitting_files_Colon_CRLF_dos_or_LF_unix_6060", message: "Specify the end of line sequence to be used when emitting files: 'CRLF' (dos) or 'LF' (unix)." }, NEWLINE: { code: 6061, category: ts.DiagnosticCategory.Message, key: "NEWLINE_6061", message: "NEWLINE" }, - Argument_for_newLine_option_must_be_CRLF_or_LF: { code: 6062, category: ts.DiagnosticCategory.Error, key: "Argument_for_newLine_option_must_be_CRLF_or_LF_6062", message: "Argument for '--newLine' option must be 'CRLF' or 'LF'." }, - Argument_for_moduleResolution_option_must_be_node_or_classic: { code: 6063, category: ts.DiagnosticCategory.Error, key: "Argument_for_moduleResolution_option_must_be_node_or_classic_6063", message: "Argument for '--moduleResolution' option must be 'node' or 'classic'." }, Option_0_can_only_be_specified_in_tsconfig_json_file: { code: 6064, category: ts.DiagnosticCategory.Error, key: "Option_0_can_only_be_specified_in_tsconfig_json_file_6064", message: "Option '{0}' can only be specified in 'tsconfig.json' file." }, Enables_experimental_support_for_ES7_decorators: { code: 6065, category: ts.DiagnosticCategory.Message, key: "Enables_experimental_support_for_ES7_decorators_6065", message: "Enables experimental support for ES7 decorators." }, Enables_experimental_support_for_emitting_type_metadata_for_decorators: { code: 6066, category: ts.DiagnosticCategory.Message, key: "Enables_experimental_support_for_emitting_type_metadata_for_decorators_6066", message: "Enables experimental support for emitting type metadata for decorators." }, Enables_experimental_support_for_ES7_async_functions: { code: 6068, category: ts.DiagnosticCategory.Message, key: "Enables_experimental_support_for_ES7_async_functions_6068", message: "Enables experimental support for ES7 async functions." }, - Specifies_module_resolution_strategy_Colon_node_Node_js_or_classic_TypeScript_pre_1_6: { code: 6069, category: ts.DiagnosticCategory.Message, key: "Specifies_module_resolution_strategy_Colon_node_Node_js_or_classic_TypeScript_pre_1_6_6069", message: "Specifies module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6)." }, + Specify_module_resolution_strategy_Colon_node_Node_js_or_classic_TypeScript_pre_1_6: { code: 6069, category: ts.DiagnosticCategory.Message, key: "Specify_module_resolution_strategy_Colon_node_Node_js_or_classic_TypeScript_pre_1_6_6069", message: "Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6)." }, Initializes_a_TypeScript_project_and_creates_a_tsconfig_json_file: { code: 6070, category: ts.DiagnosticCategory.Message, key: "Initializes_a_TypeScript_project_and_creates_a_tsconfig_json_file_6070", message: "Initializes a TypeScript project and creates a tsconfig.json file." }, Successfully_created_a_tsconfig_json_file: { code: 6071, category: ts.DiagnosticCategory.Message, key: "Successfully_created_a_tsconfig_json_file_6071", message: "Successfully created a tsconfig.json file." }, Suppress_excess_property_checks_for_object_literals: { code: 6072, category: ts.DiagnosticCategory.Message, key: "Suppress_excess_property_checks_for_object_literals_6072", message: "Suppress excess property checks for object literals." }, @@ -2833,12 +2917,12 @@ var ts; Report_errors_for_fallthrough_cases_in_switch_statement: { code: 6076, category: ts.DiagnosticCategory.Message, key: "Report_errors_for_fallthrough_cases_in_switch_statement_6076", message: "Report errors for fallthrough cases in switch statement." }, Do_not_report_errors_on_unreachable_code: { code: 6077, category: ts.DiagnosticCategory.Message, key: "Do_not_report_errors_on_unreachable_code_6077", message: "Do not report errors on unreachable code." }, Disallow_inconsistently_cased_references_to_the_same_file: { code: 6078, category: ts.DiagnosticCategory.Message, key: "Disallow_inconsistently_cased_references_to_the_same_file_6078", message: "Disallow inconsistently-cased references to the same file." }, + Specify_library_files_to_be_included_in_the_compilation_Colon: { code: 6079, category: ts.DiagnosticCategory.Message, key: "Specify_library_files_to_be_included_in_the_compilation_Colon_6079", message: "Specify library files to be included in the compilation: " }, Specify_JSX_code_generation_Colon_preserve_or_react: { code: 6080, category: ts.DiagnosticCategory.Message, key: "Specify_JSX_code_generation_Colon_preserve_or_react_6080", message: "Specify JSX code generation: 'preserve' or 'react'" }, - Argument_for_jsx_must_be_preserve_or_react: { code: 6081, category: ts.DiagnosticCategory.Message, key: "Argument_for_jsx_must_be_preserve_or_react_6081", message: "Argument for '--jsx' must be 'preserve' or 'react'." }, Only_amd_and_system_modules_are_supported_alongside_0: { code: 6082, category: ts.DiagnosticCategory.Error, key: "Only_amd_and_system_modules_are_supported_alongside_0_6082", message: "Only 'amd' and 'system' modules are supported alongside --{0}." }, Base_directory_to_resolve_non_absolute_module_names: { code: 6083, category: ts.DiagnosticCategory.Message, key: "Base_directory_to_resolve_non_absolute_module_names_6083", message: "Base directory to resolve non-absolute module names." }, - Specifies_the_object_invoked_for_createElement_and_spread_when_targeting_react_JSX_emit: { code: 6084, category: ts.DiagnosticCategory.Message, key: "Specifies_the_object_invoked_for_createElement_and_spread_when_targeting_react_JSX_emit_6084", message: "Specifies the object invoked for createElement and __spread when targeting 'react' JSX emit" }, - Enable_tracing_of_the_module_resolution_process: { code: 6085, category: ts.DiagnosticCategory.Message, key: "Enable_tracing_of_the_module_resolution_process_6085", message: "Enable tracing of the module resolution process." }, + Specify_the_object_invoked_for_createElement_and_spread_when_targeting_react_JSX_emit: { code: 6084, category: ts.DiagnosticCategory.Message, key: "Specify_the_object_invoked_for_createElement_and_spread_when_targeting_react_JSX_emit_6084", message: "Specify the object invoked for createElement and __spread when targeting 'react' JSX emit" }, + Enable_tracing_of_the_name_resolution_process: { code: 6085, category: ts.DiagnosticCategory.Message, key: "Enable_tracing_of_the_name_resolution_process_6085", message: "Enable tracing of the name resolution process." }, Resolving_module_0_from_1: { code: 6086, category: ts.DiagnosticCategory.Message, key: "Resolving_module_0_from_1_6086", message: "======== Resolving module '{0}' from '{1}'. ========" }, Explicitly_specified_module_resolution_kind_Colon_0: { code: 6087, category: ts.DiagnosticCategory.Message, key: "Explicitly_specified_module_resolution_kind_Colon_0_6087", message: "Explicitly specified module resolution kind: '{0}'." }, Module_resolution_kind_is_not_specified_using_0: { code: 6088, category: ts.DiagnosticCategory.Message, key: "Module_resolution_kind_is_not_specified_using_0_6088", message: "Module resolution kind is not specified, using '{0}'." }, @@ -2850,15 +2934,15 @@ var ts; Resolving_module_name_0_relative_to_base_url_1_2: { code: 6094, category: ts.DiagnosticCategory.Message, key: "Resolving_module_name_0_relative_to_base_url_1_2_6094", message: "Resolving module name '{0}' relative to base url '{1}' - '{2}'." }, Loading_module_as_file_Slash_folder_candidate_module_location_0: { code: 6095, category: ts.DiagnosticCategory.Message, key: "Loading_module_as_file_Slash_folder_candidate_module_location_0_6095", message: "Loading module as file / folder, candidate module location '{0}'." }, File_0_does_not_exist: { code: 6096, category: ts.DiagnosticCategory.Message, key: "File_0_does_not_exist_6096", message: "File '{0}' does not exist." }, - File_0_exist_use_it_as_a_module_resolution_result: { code: 6097, category: ts.DiagnosticCategory.Message, key: "File_0_exist_use_it_as_a_module_resolution_result_6097", message: "File '{0}' exist - use it as a module resolution result." }, + File_0_exist_use_it_as_a_name_resolution_result: { code: 6097, category: ts.DiagnosticCategory.Message, key: "File_0_exist_use_it_as_a_name_resolution_result_6097", message: "File '{0}' exist - use it as a name resolution result." }, Loading_module_0_from_node_modules_folder: { code: 6098, category: ts.DiagnosticCategory.Message, key: "Loading_module_0_from_node_modules_folder_6098", message: "Loading module '{0}' from 'node_modules' folder." }, Found_package_json_at_0: { code: 6099, category: ts.DiagnosticCategory.Message, key: "Found_package_json_at_0_6099", message: "Found 'package.json' at '{0}'." }, - package_json_does_not_have_typings_field: { code: 6100, category: ts.DiagnosticCategory.Message, key: "package_json_does_not_have_typings_field_6100", message: "'package.json' does not have 'typings' field." }, - package_json_has_typings_field_0_that_references_1: { code: 6101, category: ts.DiagnosticCategory.Message, key: "package_json_has_typings_field_0_that_references_1_6101", message: "'package.json' has 'typings' field '{0}' that references '{1}'." }, + package_json_does_not_have_types_field: { code: 6100, category: ts.DiagnosticCategory.Message, key: "package_json_does_not_have_types_field_6100", message: "'package.json' does not have 'types' field." }, + package_json_has_0_field_1_that_references_2: { code: 6101, category: ts.DiagnosticCategory.Message, key: "package_json_has_0_field_1_that_references_2_6101", message: "'package.json' has '{0}' field '{1}' that references '{2}'." }, Allow_javascript_files_to_be_compiled: { code: 6102, category: ts.DiagnosticCategory.Message, key: "Allow_javascript_files_to_be_compiled_6102", message: "Allow javascript files to be compiled." }, Option_0_should_have_array_of_strings_as_a_value: { code: 6103, category: ts.DiagnosticCategory.Error, key: "Option_0_should_have_array_of_strings_as_a_value_6103", message: "Option '{0}' should have array of strings as a value." }, Checking_if_0_is_the_longest_matching_prefix_for_1_2: { code: 6104, category: ts.DiagnosticCategory.Message, key: "Checking_if_0_is_the_longest_matching_prefix_for_1_2_6104", message: "Checking if '{0}' is the longest matching prefix for '{1}' - '{2}'." }, - Expected_type_of_typings_field_in_package_json_to_be_string_got_0: { code: 6105, category: ts.DiagnosticCategory.Message, key: "Expected_type_of_typings_field_in_package_json_to_be_string_got_0_6105", message: "Expected type of 'typings' field in 'package.json' to be 'string', got '{0}'." }, + Expected_type_of_0_field_in_package_json_to_be_string_got_1: { code: 6105, category: ts.DiagnosticCategory.Message, key: "Expected_type_of_0_field_in_package_json_to_be_string_got_1_6105", message: "Expected type of '{0}' field in 'package.json' to be 'string', got '{1}'." }, baseUrl_option_is_set_to_0_using_this_value_to_resolve_non_relative_module_name_1: { code: 6106, category: ts.DiagnosticCategory.Message, key: "baseUrl_option_is_set_to_0_using_this_value_to_resolve_non_relative_module_name_1_6106", message: "'baseUrl' option is set to '{0}', using this value to resolve non-relative module name '{1}'" }, rootDirs_option_is_set_using_it_to_resolve_relative_module_name_0: { code: 6107, category: ts.DiagnosticCategory.Message, key: "rootDirs_option_is_set_using_it_to_resolve_relative_module_name_0_6107", message: "'rootDirs' option is set, using it to resolve relative module name '{0}'" }, Longest_matching_prefix_for_0_is_1: { code: 6108, category: ts.DiagnosticCategory.Message, key: "Longest_matching_prefix_for_0_is_1_6108", message: "Longest matching prefix for '{0}' is '{1}'" }, @@ -2866,6 +2950,22 @@ var ts; Trying_other_entries_in_rootDirs: { code: 6110, category: ts.DiagnosticCategory.Message, key: "Trying_other_entries_in_rootDirs_6110", message: "Trying other entries in 'rootDirs'" }, Module_resolution_using_rootDirs_has_failed: { code: 6111, category: ts.DiagnosticCategory.Message, key: "Module_resolution_using_rootDirs_has_failed_6111", message: "Module resolution using 'rootDirs' has failed" }, Do_not_emit_use_strict_directives_in_module_output: { code: 6112, category: ts.DiagnosticCategory.Message, key: "Do_not_emit_use_strict_directives_in_module_output_6112", message: "Do not emit 'use strict' directives in module output." }, + Enable_strict_null_checks: { code: 6113, category: ts.DiagnosticCategory.Message, key: "Enable_strict_null_checks_6113", message: "Enable strict null checks." }, + Unknown_option_excludes_Did_you_mean_exclude: { code: 6114, category: ts.DiagnosticCategory.Error, key: "Unknown_option_excludes_Did_you_mean_exclude_6114", message: "Unknown option 'excludes'. Did you mean 'exclude'?" }, + Raise_error_on_this_expressions_with_an_implied_any_type: { code: 6115, category: ts.DiagnosticCategory.Message, key: "Raise_error_on_this_expressions_with_an_implied_any_type_6115", message: "Raise error on 'this' expressions with an implied 'any' type." }, + Resolving_type_reference_directive_0_containing_file_1_root_directory_2: { code: 6116, category: ts.DiagnosticCategory.Message, key: "Resolving_type_reference_directive_0_containing_file_1_root_directory_2_6116", message: "======== Resolving type reference directive '{0}', containing file '{1}', root directory '{2}'. ========" }, + Resolving_using_primary_search_paths: { code: 6117, category: ts.DiagnosticCategory.Message, key: "Resolving_using_primary_search_paths_6117", message: "Resolving using primary search paths..." }, + Resolving_from_node_modules_folder: { code: 6118, category: ts.DiagnosticCategory.Message, key: "Resolving_from_node_modules_folder_6118", message: "Resolving from node_modules folder..." }, + Type_reference_directive_0_was_successfully_resolved_to_1_primary_Colon_2: { code: 6119, category: ts.DiagnosticCategory.Message, key: "Type_reference_directive_0_was_successfully_resolved_to_1_primary_Colon_2_6119", message: "======== Type reference directive '{0}' was successfully resolved to '{1}', primary: {2}. ========" }, + Type_reference_directive_0_was_not_resolved: { code: 6120, category: ts.DiagnosticCategory.Message, key: "Type_reference_directive_0_was_not_resolved_6120", message: "======== Type reference directive '{0}' was not resolved. ========" }, + Resolving_with_primary_search_path_0: { code: 6121, category: ts.DiagnosticCategory.Message, key: "Resolving_with_primary_search_path_0_6121", message: "Resolving with primary search path '{0}'" }, + Root_directory_cannot_be_determined_skipping_primary_search_paths: { code: 6122, category: ts.DiagnosticCategory.Message, key: "Root_directory_cannot_be_determined_skipping_primary_search_paths_6122", message: "Root directory cannot be determined, skipping primary search paths." }, + Resolving_type_reference_directive_0_containing_file_1_root_directory_not_set: { code: 6123, category: ts.DiagnosticCategory.Message, key: "Resolving_type_reference_directive_0_containing_file_1_root_directory_not_set_6123", message: "======== Resolving type reference directive '{0}', containing file '{1}', root directory not set. ========" }, + Type_declaration_files_to_be_included_in_compilation: { code: 6124, category: ts.DiagnosticCategory.Message, key: "Type_declaration_files_to_be_included_in_compilation_6124", message: "Type declaration files to be included in compilation." }, + Looking_up_in_node_modules_folder_initial_location_0: { code: 6125, category: ts.DiagnosticCategory.Message, key: "Looking_up_in_node_modules_folder_initial_location_0_6125", message: "Looking up in 'node_modules' folder, initial location '{0}'" }, + Containing_file_is_not_specified_and_root_directory_cannot_be_determined_skipping_lookup_in_node_modules_folder: { code: 6126, category: ts.DiagnosticCategory.Message, key: "Containing_file_is_not_specified_and_root_directory_cannot_be_determined_skipping_lookup_in_node_mod_6126", message: "Containing file is not specified and root directory cannot be determined, skipping lookup in 'node_modules' folder." }, + Resolving_type_reference_directive_0_containing_file_not_set_root_directory_1: { code: 6127, category: ts.DiagnosticCategory.Message, key: "Resolving_type_reference_directive_0_containing_file_not_set_root_directory_1_6127", message: "======== Resolving type reference directive '{0}', containing file not set, root directory '{1}'. ========" }, + Resolving_type_reference_directive_0_containing_file_not_set_root_directory_not_set: { code: 6128, category: ts.DiagnosticCategory.Message, key: "Resolving_type_reference_directive_0_containing_file_not_set_root_directory_not_set_6128", message: "======== Resolving type reference directive '{0}', containing file not set, root directory not set. ========" }, 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." }, @@ -2888,6 +2988,7 @@ var ts; Unused_label: { code: 7028, category: ts.DiagnosticCategory.Error, key: "Unused_label_7028", message: "Unused label." }, Fallthrough_case_in_switch: { code: 7029, category: ts.DiagnosticCategory.Error, key: "Fallthrough_case_in_switch_7029", message: "Fallthrough case in switch." }, Not_all_code_paths_return_a_value: { code: 7030, category: ts.DiagnosticCategory.Error, key: "Not_all_code_paths_return_a_value_7030", message: "Not all code paths return a value." }, + Binding_element_0_implicitly_has_an_1_type: { code: 7031, category: ts.DiagnosticCategory.Error, key: "Binding_element_0_implicitly_has_an_1_type_7031", message: "Binding element '{0}' implicitly has an '{1}' type." }, You_cannot_rename_this_element: { code: 8000, category: ts.DiagnosticCategory.Error, key: "You_cannot_rename_this_element_8000", message: "You cannot rename this element." }, You_cannot_rename_elements_that_are_defined_in_the_standard_TypeScript_library: { code: 8001, category: ts.DiagnosticCategory.Error, key: "You_cannot_rename_elements_that_are_defined_in_the_standard_TypeScript_library_8001", message: "You cannot rename elements that are defined in the standard TypeScript library." }, import_can_only_be_used_in_a_ts_file: { code: 8002, category: ts.DiagnosticCategory.Error, key: "import_can_only_be_used_in_a_ts_file_8002", message: "'import ... =' can only be used in a .ts file." }, @@ -2915,7 +3016,8 @@ var ts; An_unary_expression_with_the_0_operator_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_expression_Consider_enclosing_the_expression_in_parentheses: { code: 17006, category: ts.DiagnosticCategory.Error, key: "An_unary_expression_with_the_0_operator_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_ex_17006", message: "An unary expression with the '{0}' operator is not allowed in the left-hand side of an exponentiation expression. Consider enclosing the expression in parentheses." }, A_type_assertion_expression_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_expression_Consider_enclosing_the_expression_in_parentheses: { code: 17007, category: ts.DiagnosticCategory.Error, key: "A_type_assertion_expression_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_expression_Con_17007", message: "A type assertion expression is not allowed in the left-hand side of an exponentiation expression. Consider enclosing the expression in parentheses." }, JSX_element_0_has_no_corresponding_closing_tag: { code: 17008, category: ts.DiagnosticCategory.Error, key: "JSX_element_0_has_no_corresponding_closing_tag_17008", message: "JSX element '{0}' has no corresponding closing tag." }, - super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class: { code: 17009, category: ts.DiagnosticCategory.Error, key: "super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class_17009", message: "'super' must be called before accessing 'this' in the constructor of a derived class." } + super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class: { code: 17009, category: ts.DiagnosticCategory.Error, key: "super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class_17009", message: "'super' must be called before accessing 'this' in the constructor of a derived class." }, + Unknown_typing_option_0: { code: 17010, category: ts.DiagnosticCategory.Error, key: "Unknown_typing_option_0_17010", message: "Unknown typing option '{0}'." } }; })(ts || (ts = {})); /// @@ -2951,7 +3053,7 @@ var ts; "false": 84 /* FalseKeyword */, "finally": 85 /* FinallyKeyword */, "for": 86 /* ForKeyword */, - "from": 134 /* FromKeyword */, + "from": 135 /* FromKeyword */, "function": 87 /* FunctionKeyword */, "get": 123 /* GetKeyword */, "if": 88 /* IfKeyword */, @@ -2973,7 +3075,7 @@ var ts; "public": 112 /* PublicKeyword */, "readonly": 127 /* ReadonlyKeyword */, "require": 128 /* RequireKeyword */, - "global": 135 /* GlobalKeyword */, + "global": 136 /* GlobalKeyword */, "return": 94 /* ReturnKeyword */, "set": 130 /* SetKeyword */, "static": 113 /* StaticKeyword */, @@ -2987,6 +3089,7 @@ var ts; "try": 100 /* TryKeyword */, "type": 133 /* TypeKeyword */, "typeof": 101 /* TypeOfKeyword */, + "undefined": 134 /* UndefinedKeyword */, "var": 102 /* VarKeyword */, "void": 103 /* VoidKeyword */, "while": 104 /* WhileKeyword */, @@ -2994,7 +3097,7 @@ var ts; "yield": 114 /* YieldKeyword */, "async": 118 /* AsyncKeyword */, "await": 119 /* AwaitKeyword */, - "of": 136 /* OfKeyword */, + "of": 137 /* OfKeyword */, "{": 15 /* OpenBraceToken */, "}": 16 /* CloseBraceToken */, "(": 17 /* OpenParenToken */, @@ -4412,7 +4515,7 @@ var ts; break; } } - return token = 240 /* JsxText */; + return token = 243 /* JsxText */; } // Scans a JSX identifier; these differ from normal identifiers in that // they allow dashes @@ -4643,6 +4746,41 @@ var ts; sourceFile.resolvedModules[moduleNameText] = resolvedModule; } ts.setResolvedModule = setResolvedModule; + function setResolvedTypeReferenceDirective(sourceFile, typeReferenceDirectiveName, resolvedTypeReferenceDirective) { + if (!sourceFile.resolvedTypeReferenceDirectiveNames) { + sourceFile.resolvedTypeReferenceDirectiveNames = {}; + } + sourceFile.resolvedTypeReferenceDirectiveNames[typeReferenceDirectiveName] = resolvedTypeReferenceDirective; + } + ts.setResolvedTypeReferenceDirective = setResolvedTypeReferenceDirective; + /* @internal */ + function moduleResolutionIsEqualTo(oldResolution, newResolution) { + return oldResolution.resolvedFileName === newResolution.resolvedFileName && oldResolution.isExternalLibraryImport === newResolution.isExternalLibraryImport; + } + ts.moduleResolutionIsEqualTo = moduleResolutionIsEqualTo; + /* @internal */ + function typeDirectiveIsEqualTo(oldResolution, newResolution) { + return oldResolution.resolvedFileName === newResolution.resolvedFileName && oldResolution.primary === newResolution.primary; + } + ts.typeDirectiveIsEqualTo = typeDirectiveIsEqualTo; + /* @internal */ + function hasChangesInResolutions(names, newResolutions, oldResolutions, comparer) { + if (names.length !== newResolutions.length) { + return false; + } + for (var i = 0; i < names.length; i++) { + var newResolution = newResolutions[i]; + var oldResolution = oldResolutions && ts.hasProperty(oldResolutions, names[i]) ? oldResolutions[names[i]] : undefined; + var changed = oldResolution + ? !newResolution || !comparer(oldResolution, newResolution) + : newResolution; + if (changed) { + return true; + } + } + return false; + } + ts.hasChangesInResolutions = hasChangesInResolutions; // Returns true if this node contains a parse error anywhere underneath it. function containsParseError(node) { aggregateChildData(node); @@ -4667,7 +4805,7 @@ var ts; } } function getSourceFileOfNode(node) { - while (node && node.kind !== 252 /* SourceFile */) { + while (node && node.kind !== 255 /* SourceFile */) { node = node.parent; } return node; @@ -4675,11 +4813,11 @@ var ts; ts.getSourceFileOfNode = getSourceFileOfNode; function isStatementWithLocals(node) { switch (node.kind) { - case 196 /* Block */: - case 224 /* CaseBlock */: - case 203 /* ForStatement */: - case 204 /* ForInStatement */: - case 205 /* ForOfStatement */: + case 198 /* Block */: + case 226 /* CaseBlock */: + case 205 /* ForStatement */: + case 206 /* ForInStatement */: + case 207 /* ForOfStatement */: return true; } return false; @@ -4701,6 +4839,32 @@ var ts; return node.pos; } ts.getStartPosOfNode = getStartPosOfNode; + function getEndLinePosition(line, sourceFile) { + ts.Debug.assert(line >= 0); + var lineStarts = ts.getLineStarts(sourceFile); + var lineIndex = line; + var sourceText = sourceFile.text; + if (lineIndex + 1 === lineStarts.length) { + // last line - return EOF + return sourceText.length - 1; + } + else { + // current line start + var start = lineStarts[lineIndex]; + // take the start position of the next line - 1 = it should be some line break + var pos = lineStarts[lineIndex + 1] - 1; + ts.Debug.assert(ts.isLineBreak(sourceText.charCodeAt(pos))); + // walk backwards skipping line breaks, stop the the beginning of current line. + // i.e: + // + // $ <- end of line for this position should match the start position + while (start <= pos && ts.isLineBreak(sourceText.charCodeAt(pos))) { + pos--; + } + return pos; + } + } + ts.getEndLinePosition = getEndLinePosition; // Returns true if this node is missing from the actual source code. A 'missing' node is different // from 'undefined/defined'. When a node is undefined (which can happen for optional nodes // in the tree), it is definitely missing. However, a node may be defined, but still be @@ -4783,13 +4947,13 @@ var ts; } ts.isBlockOrCatchScoped = isBlockOrCatchScoped; function isAmbientModule(node) { - return node && node.kind === 222 /* ModuleDeclaration */ && + return node && node.kind === 224 /* ModuleDeclaration */ && (node.name.kind === 9 /* StringLiteral */ || isGlobalScopeAugmentation(node)); } ts.isAmbientModule = isAmbientModule; function isBlockScopedContainerTopLevel(node) { - return node.kind === 252 /* SourceFile */ || - node.kind === 222 /* ModuleDeclaration */ || + return node.kind === 255 /* SourceFile */ || + node.kind === 224 /* ModuleDeclaration */ || isFunctionLike(node) || isFunctionBlock(node); } @@ -4806,10 +4970,10 @@ var ts; return false; } switch (node.parent.kind) { - case 252 /* SourceFile */: - return isExternalModule(node.parent); - case 223 /* ModuleBlock */: - return isAmbientModule(node.parent.parent) && !isExternalModule(node.parent.parent.parent); + case 255 /* SourceFile */: + return ts.isExternalModule(node.parent); + case 225 /* ModuleBlock */: + return isAmbientModule(node.parent.parent) && !ts.isExternalModule(node.parent.parent.parent); } return false; } @@ -4823,15 +4987,15 @@ var ts; return current; } switch (current.kind) { - case 252 /* SourceFile */: - case 224 /* CaseBlock */: - case 248 /* CatchClause */: - case 222 /* ModuleDeclaration */: - case 203 /* ForStatement */: - case 204 /* ForInStatement */: - case 205 /* ForOfStatement */: + case 255 /* SourceFile */: + case 226 /* CaseBlock */: + case 251 /* CatchClause */: + case 224 /* ModuleDeclaration */: + case 205 /* ForStatement */: + case 206 /* ForInStatement */: + case 207 /* ForOfStatement */: return current; - case 196 /* Block */: + case 198 /* Block */: // function block is not considered block-scope container // see comment in binder.ts: bind(...), case for SyntaxKind.Block if (!isFunctionLike(current.parent)) { @@ -4844,9 +5008,9 @@ var ts; ts.getEnclosingBlockScopeContainer = getEnclosingBlockScopeContainer; function isCatchClauseVariableDeclaration(declaration) { return declaration && - declaration.kind === 215 /* VariableDeclaration */ && + declaration.kind === 217 /* VariableDeclaration */ && declaration.parent && - declaration.parent.kind === 248 /* CatchClause */; + declaration.parent.kind === 251 /* CatchClause */; } ts.isCatchClauseVariableDeclaration = isCatchClauseVariableDeclaration; // Return display name of an identifier @@ -4882,10 +5046,23 @@ var ts; return ts.createTextSpanFromBounds(start, scanner.getTextPos()); } ts.getSpanOfTokenAtPosition = getSpanOfTokenAtPosition; + function getErrorSpanForArrowFunction(sourceFile, node) { + var pos = ts.skipTrivia(sourceFile.text, node.pos); + if (node.body && node.body.kind === 198 /* Block */) { + var startLine = ts.getLineAndCharacterOfPosition(sourceFile, node.body.pos).line; + var endLine = ts.getLineAndCharacterOfPosition(sourceFile, node.body.end).line; + if (startLine < endLine) { + // The arrow function spans multiple lines, + // make the error span be the first line, inclusive. + return ts.createTextSpan(pos, getEndLinePosition(startLine, sourceFile) - pos + 1); + } + } + return ts.createTextSpanFromBounds(pos, node.end); + } function getErrorSpanForNode(sourceFile, node) { var errorNode = node; switch (node.kind) { - case 252 /* SourceFile */: + case 255 /* SourceFile */: var pos_1 = ts.skipTrivia(sourceFile.text, 0, /*stopAfterLineBreak*/ false); if (pos_1 === sourceFile.text.length) { // file is empty - return span for the beginning of the file @@ -4894,22 +5071,24 @@ var ts; return getSpanOfTokenAtPosition(sourceFile, pos_1); // This list is a work in progress. Add missing node kinds to improve their error // spans. - case 215 /* VariableDeclaration */: - case 167 /* BindingElement */: - case 218 /* ClassDeclaration */: - case 190 /* ClassExpression */: - case 219 /* InterfaceDeclaration */: - case 222 /* ModuleDeclaration */: - case 221 /* EnumDeclaration */: - case 251 /* EnumMember */: - case 217 /* FunctionDeclaration */: - case 177 /* FunctionExpression */: - case 145 /* MethodDeclaration */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: - case 220 /* TypeAliasDeclaration */: + case 217 /* VariableDeclaration */: + case 168 /* BindingElement */: + case 220 /* ClassDeclaration */: + case 191 /* ClassExpression */: + case 221 /* InterfaceDeclaration */: + case 224 /* ModuleDeclaration */: + case 223 /* EnumDeclaration */: + case 254 /* EnumMember */: + case 219 /* FunctionDeclaration */: + case 178 /* FunctionExpression */: + case 146 /* MethodDeclaration */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: + case 222 /* TypeAliasDeclaration */: errorNode = node.name; break; + case 179 /* ArrowFunction */: + return getErrorSpanForArrowFunction(sourceFile, node); } if (errorNode === undefined) { // If we don't have a better node, then just set the error on the first token of @@ -4922,10 +5101,6 @@ var ts; return ts.createTextSpanFromBounds(pos, errorNode.end); } ts.getErrorSpanForNode = getErrorSpanForNode; - function isExternalModule(file) { - return file.externalModuleIndicator !== undefined; - } - ts.isExternalModule = isExternalModule; function isExternalOrCommonJsModule(file) { return (file.externalModuleIndicator || file.commonJsModuleIndicator) !== undefined; } @@ -4935,11 +5110,11 @@ var ts; } ts.isDeclarationFile = isDeclarationFile; function isConstEnumDeclaration(node) { - return node.kind === 221 /* EnumDeclaration */ && isConst(node); + return node.kind === 223 /* EnumDeclaration */ && isConst(node); } ts.isConstEnumDeclaration = isConstEnumDeclaration; function walkUpBindingElementsAndPatterns(node) { - while (node && (node.kind === 167 /* BindingElement */ || isBindingPattern(node))) { + while (node && (node.kind === 168 /* BindingElement */ || isBindingPattern(node))) { node = node.parent; } return node; @@ -4954,14 +5129,14 @@ var ts; function getCombinedNodeFlags(node) { node = walkUpBindingElementsAndPatterns(node); var flags = node.flags; - if (node.kind === 215 /* VariableDeclaration */) { + if (node.kind === 217 /* VariableDeclaration */) { node = node.parent; } - if (node && node.kind === 216 /* VariableDeclarationList */) { + if (node && node.kind === 218 /* VariableDeclarationList */) { flags |= node.flags; node = node.parent; } - if (node && node.kind === 197 /* VariableStatement */) { + if (node && node.kind === 199 /* VariableStatement */) { flags |= node.flags; } return flags; @@ -4976,11 +5151,11 @@ var ts; } ts.isLet = isLet; function isSuperCallExpression(n) { - return n.kind === 172 /* CallExpression */ && n.expression.kind === 95 /* SuperKeyword */; + return n.kind === 173 /* CallExpression */ && n.expression.kind === 95 /* SuperKeyword */; } ts.isSuperCallExpression = isSuperCallExpression; function isPrologueDirective(node) { - return node.kind === 199 /* ExpressionStatement */ && node.expression.kind === 9 /* StringLiteral */; + return node.kind === 201 /* ExpressionStatement */ && node.expression.kind === 9 /* StringLiteral */; } ts.isPrologueDirective = isPrologueDirective; function getLeadingCommentRangesOfNode(node, sourceFileOfNode) { @@ -4996,7 +5171,7 @@ var ts; } ts.getJsDocComments = getJsDocComments; function getJsDocCommentsFromText(node, text) { - var commentRanges = (node.kind === 140 /* Parameter */ || node.kind === 139 /* TypeParameter */) ? + var commentRanges = (node.kind === 141 /* Parameter */ || node.kind === 140 /* TypeParameter */) ? ts.concatenate(ts.getTrailingCommentRanges(text, node.pos), ts.getLeadingCommentRanges(text, node.pos)) : getLeadingCommentRangesOfNodeFromText(node, text); return ts.filter(commentRanges, isJsDocComment); @@ -5009,9 +5184,10 @@ var ts; } ts.getJsDocCommentsFromText = getJsDocCommentsFromText; ts.fullTripleSlashReferencePathRegEx = /^(\/\/\/\s*/; + ts.fullTripleSlashReferenceTypeReferenceDirectiveRegEx = /^(\/\/\/\s*/; ts.fullTripleSlashAMDReferencePathRegEx = /^(\/\/\/\s*/; function isTypeNode(node) { - if (152 /* FirstTypeNode */ <= node.kind && node.kind <= 164 /* LastTypeNode */) { + if (153 /* FirstTypeNode */ <= node.kind && node.kind <= 165 /* LastTypeNode */) { return true; } switch (node.kind) { @@ -5020,28 +5196,29 @@ var ts; case 131 /* StringKeyword */: case 120 /* BooleanKeyword */: case 132 /* SymbolKeyword */: + case 134 /* UndefinedKeyword */: return true; case 103 /* VoidKeyword */: - return node.parent.kind !== 181 /* VoidExpression */; - case 192 /* ExpressionWithTypeArguments */: + return node.parent.kind !== 182 /* VoidExpression */; + case 193 /* ExpressionWithTypeArguments */: return !isExpressionWithTypeArgumentsInClassExtendsClause(node); // Identifiers and qualified names may be type nodes, depending on their context. Climb // above them to find the lowest container case 69 /* Identifier */: // If the identifier is the RHS of a qualified name, then it's a type iff its parent is. - if (node.parent.kind === 137 /* QualifiedName */ && node.parent.right === node) { + if (node.parent.kind === 138 /* QualifiedName */ && node.parent.right === node) { node = node.parent; } - else if (node.parent.kind === 170 /* PropertyAccessExpression */ && node.parent.name === node) { + else if (node.parent.kind === 171 /* PropertyAccessExpression */ && node.parent.name === node) { node = node.parent; } // At this point, node is either a qualified name or an identifier - ts.Debug.assert(node.kind === 69 /* Identifier */ || node.kind === 137 /* QualifiedName */ || node.kind === 170 /* PropertyAccessExpression */, "'node' was expected to be a qualified name, identifier or property access in 'isTypeNode'."); - case 137 /* QualifiedName */: - case 170 /* PropertyAccessExpression */: + ts.Debug.assert(node.kind === 69 /* Identifier */ || node.kind === 138 /* QualifiedName */ || node.kind === 171 /* PropertyAccessExpression */, "'node' was expected to be a qualified name, identifier or property access in 'isTypeNode'."); + case 138 /* QualifiedName */: + case 171 /* PropertyAccessExpression */: case 97 /* ThisKeyword */: var parent_1 = node.parent; - if (parent_1.kind === 156 /* TypeQuery */) { + if (parent_1.kind === 157 /* TypeQuery */) { return false; } // Do not recursively call isTypeNode on the parent. In the example: @@ -5050,38 +5227,38 @@ var ts; // // Calling isTypeNode would consider the qualified name A.B a type node. Only C or // A.B.C is a type node. - if (152 /* FirstTypeNode */ <= parent_1.kind && parent_1.kind <= 164 /* LastTypeNode */) { + if (153 /* FirstTypeNode */ <= parent_1.kind && parent_1.kind <= 165 /* LastTypeNode */) { return true; } switch (parent_1.kind) { - case 192 /* ExpressionWithTypeArguments */: + case 193 /* ExpressionWithTypeArguments */: return !isExpressionWithTypeArgumentsInClassExtendsClause(parent_1); - case 139 /* TypeParameter */: + case 140 /* TypeParameter */: return node === parent_1.constraint; - case 143 /* PropertyDeclaration */: - case 142 /* PropertySignature */: - case 140 /* Parameter */: - case 215 /* VariableDeclaration */: + case 144 /* PropertyDeclaration */: + case 143 /* PropertySignature */: + case 141 /* Parameter */: + case 217 /* VariableDeclaration */: return node === parent_1.type; - case 217 /* FunctionDeclaration */: - case 177 /* FunctionExpression */: - case 178 /* ArrowFunction */: - case 146 /* Constructor */: - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: + case 219 /* FunctionDeclaration */: + case 178 /* FunctionExpression */: + case 179 /* ArrowFunction */: + case 147 /* Constructor */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: return node === parent_1.type; - case 149 /* CallSignature */: - case 150 /* ConstructSignature */: - case 151 /* IndexSignature */: + case 150 /* CallSignature */: + case 151 /* ConstructSignature */: + case 152 /* IndexSignature */: return node === parent_1.type; - case 175 /* TypeAssertionExpression */: + case 176 /* TypeAssertionExpression */: return node === parent_1.type; - case 172 /* CallExpression */: - case 173 /* NewExpression */: + case 173 /* CallExpression */: + case 174 /* NewExpression */: return parent_1.typeArguments && ts.indexOf(parent_1.typeArguments, node) >= 0; - case 174 /* TaggedTemplateExpression */: + case 175 /* TaggedTemplateExpression */: // TODO (drosen): TaggedTemplateExpressions may eventually support type arguments. return false; } @@ -5095,23 +5272,23 @@ var ts; return traverse(body); function traverse(node) { switch (node.kind) { - case 208 /* ReturnStatement */: + case 210 /* ReturnStatement */: return visitor(node); - case 224 /* CaseBlock */: - case 196 /* Block */: - case 200 /* IfStatement */: - case 201 /* DoStatement */: - case 202 /* WhileStatement */: - case 203 /* ForStatement */: - case 204 /* ForInStatement */: - case 205 /* ForOfStatement */: - case 209 /* WithStatement */: - case 210 /* SwitchStatement */: - case 245 /* CaseClause */: - case 246 /* DefaultClause */: - case 211 /* LabeledStatement */: - case 213 /* TryStatement */: - case 248 /* CatchClause */: + case 226 /* CaseBlock */: + case 198 /* Block */: + case 202 /* IfStatement */: + case 203 /* DoStatement */: + case 204 /* WhileStatement */: + case 205 /* ForStatement */: + case 206 /* ForInStatement */: + case 207 /* ForOfStatement */: + case 211 /* WithStatement */: + case 212 /* SwitchStatement */: + case 248 /* CaseClause */: + case 249 /* DefaultClause */: + case 213 /* LabeledStatement */: + case 215 /* TryStatement */: + case 251 /* CatchClause */: return ts.forEachChild(node, traverse); } } @@ -5121,18 +5298,18 @@ var ts; return traverse(body); function traverse(node) { switch (node.kind) { - case 188 /* YieldExpression */: + case 189 /* YieldExpression */: visitor(node); var operand = node.expression; if (operand) { traverse(operand); } - case 221 /* EnumDeclaration */: - case 219 /* InterfaceDeclaration */: - case 222 /* ModuleDeclaration */: - case 220 /* TypeAliasDeclaration */: - case 218 /* ClassDeclaration */: - case 190 /* ClassExpression */: + case 223 /* EnumDeclaration */: + case 221 /* InterfaceDeclaration */: + case 224 /* ModuleDeclaration */: + case 222 /* TypeAliasDeclaration */: + case 220 /* ClassDeclaration */: + case 191 /* ClassExpression */: // These are not allowed inside a generator now, but eventually they may be allowed // as local types. Regardless, any yield statements contained within them should be // skipped in this traversal. @@ -5140,7 +5317,7 @@ var ts; default: if (isFunctionLike(node)) { var name_5 = node.name; - if (name_5 && name_5.kind === 138 /* ComputedPropertyName */) { + if (name_5 && name_5.kind === 139 /* ComputedPropertyName */) { // Note that we will not include methods/accessors of a class because they would require // first descending into the class. This is by design. traverse(name_5.expression); @@ -5159,14 +5336,14 @@ var ts; function isVariableLike(node) { if (node) { switch (node.kind) { - case 167 /* BindingElement */: - case 251 /* EnumMember */: - case 140 /* Parameter */: - case 249 /* PropertyAssignment */: - case 143 /* PropertyDeclaration */: - case 142 /* PropertySignature */: - case 250 /* ShorthandPropertyAssignment */: - case 215 /* VariableDeclaration */: + case 168 /* BindingElement */: + case 254 /* EnumMember */: + case 141 /* Parameter */: + case 252 /* PropertyAssignment */: + case 144 /* PropertyDeclaration */: + case 143 /* PropertySignature */: + case 253 /* ShorthandPropertyAssignment */: + case 217 /* VariableDeclaration */: return true; } } @@ -5174,11 +5351,11 @@ var ts; } ts.isVariableLike = isVariableLike; function isAccessor(node) { - return node && (node.kind === 147 /* GetAccessor */ || node.kind === 148 /* SetAccessor */); + return node && (node.kind === 148 /* GetAccessor */ || node.kind === 149 /* SetAccessor */); } ts.isAccessor = isAccessor; function isClassLike(node) { - return node && (node.kind === 218 /* ClassDeclaration */ || node.kind === 190 /* ClassExpression */); + return node && (node.kind === 220 /* ClassDeclaration */ || node.kind === 191 /* ClassExpression */); } ts.isClassLike = isClassLike; function isFunctionLike(node) { @@ -5187,32 +5364,32 @@ var ts; ts.isFunctionLike = isFunctionLike; function isFunctionLikeKind(kind) { switch (kind) { - case 146 /* Constructor */: - case 177 /* FunctionExpression */: - case 217 /* FunctionDeclaration */: - case 178 /* ArrowFunction */: - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: - case 149 /* CallSignature */: - case 150 /* ConstructSignature */: - case 151 /* IndexSignature */: - case 154 /* FunctionType */: - case 155 /* ConstructorType */: + case 147 /* Constructor */: + case 178 /* FunctionExpression */: + case 219 /* FunctionDeclaration */: + case 179 /* ArrowFunction */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: + case 150 /* CallSignature */: + case 151 /* ConstructSignature */: + case 152 /* IndexSignature */: + case 155 /* FunctionType */: + case 156 /* ConstructorType */: return true; } } ts.isFunctionLikeKind = isFunctionLikeKind; function introducesArgumentsExoticObject(node) { switch (node.kind) { - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: - case 146 /* Constructor */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: - case 217 /* FunctionDeclaration */: - case 177 /* FunctionExpression */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: + case 147 /* Constructor */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: + case 219 /* FunctionDeclaration */: + case 178 /* FunctionExpression */: return true; } return false; @@ -5220,24 +5397,24 @@ var ts; ts.introducesArgumentsExoticObject = introducesArgumentsExoticObject; function isIterationStatement(node, lookInLabeledStatements) { switch (node.kind) { - case 203 /* ForStatement */: - case 204 /* ForInStatement */: - case 205 /* ForOfStatement */: - case 201 /* DoStatement */: - case 202 /* WhileStatement */: + case 205 /* ForStatement */: + case 206 /* ForInStatement */: + case 207 /* ForOfStatement */: + case 203 /* DoStatement */: + case 204 /* WhileStatement */: return true; - case 211 /* LabeledStatement */: + case 213 /* LabeledStatement */: return lookInLabeledStatements && isIterationStatement(node.statement, lookInLabeledStatements); } return false; } ts.isIterationStatement = isIterationStatement; function isFunctionBlock(node) { - return node && node.kind === 196 /* Block */ && isFunctionLike(node.parent); + return node && node.kind === 198 /* Block */ && isFunctionLike(node.parent); } ts.isFunctionBlock = isFunctionBlock; function isObjectLiteralMethod(node) { - return node && node.kind === 145 /* MethodDeclaration */ && node.parent.kind === 169 /* ObjectLiteralExpression */; + return node && node.kind === 146 /* MethodDeclaration */ && node.parent.kind === 170 /* ObjectLiteralExpression */; } ts.isObjectLiteralMethod = isObjectLiteralMethod; function isIdentifierTypePredicate(predicate) { @@ -5273,7 +5450,7 @@ var ts; return undefined; } switch (node.kind) { - case 138 /* ComputedPropertyName */: + case 139 /* ComputedPropertyName */: // If the grandparent node is an object literal (as opposed to a class), // then the computed property is not a 'this' container. // A computed property name in a class needs to be a this container @@ -5288,9 +5465,9 @@ var ts; // the *body* of the container. node = node.parent; break; - case 141 /* Decorator */: + case 142 /* Decorator */: // Decorators are always applied outside of the body of a class or method. - if (node.parent.kind === 140 /* Parameter */ && isClassElement(node.parent.parent)) { + if (node.parent.kind === 141 /* Parameter */ && isClassElement(node.parent.parent)) { // If the decorator's parent is a Parameter, we resolve the this container from // the grandparent class declaration. node = node.parent.parent; @@ -5301,26 +5478,26 @@ var ts; node = node.parent; } break; - case 178 /* ArrowFunction */: + case 179 /* ArrowFunction */: if (!includeArrowFunctions) { continue; } // Fall through - case 217 /* FunctionDeclaration */: - case 177 /* FunctionExpression */: - case 222 /* ModuleDeclaration */: - case 143 /* PropertyDeclaration */: - case 142 /* PropertySignature */: - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: - case 146 /* Constructor */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: - case 149 /* CallSignature */: - case 150 /* ConstructSignature */: - case 151 /* IndexSignature */: - case 221 /* EnumDeclaration */: - case 252 /* SourceFile */: + case 219 /* FunctionDeclaration */: + case 178 /* FunctionExpression */: + case 224 /* ModuleDeclaration */: + case 144 /* PropertyDeclaration */: + case 143 /* PropertySignature */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: + case 147 /* Constructor */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: + case 150 /* CallSignature */: + case 151 /* ConstructSignature */: + case 152 /* IndexSignature */: + case 223 /* EnumDeclaration */: + case 255 /* SourceFile */: return node; } } @@ -5341,26 +5518,26 @@ var ts; return node; } switch (node.kind) { - case 138 /* ComputedPropertyName */: + case 139 /* ComputedPropertyName */: node = node.parent; break; - case 217 /* FunctionDeclaration */: - case 177 /* FunctionExpression */: - case 178 /* ArrowFunction */: + case 219 /* FunctionDeclaration */: + case 178 /* FunctionExpression */: + case 179 /* ArrowFunction */: if (!stopOnFunctions) { continue; } - case 143 /* PropertyDeclaration */: - case 142 /* PropertySignature */: - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: - case 146 /* Constructor */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: + case 144 /* PropertyDeclaration */: + case 143 /* PropertySignature */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: + case 147 /* Constructor */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: return node; - case 141 /* Decorator */: + case 142 /* Decorator */: // Decorators are always applied outside of the body of a class or method. - if (node.parent.kind === 140 /* Parameter */ && isClassElement(node.parent.parent)) { + if (node.parent.kind === 141 /* Parameter */ && isClassElement(node.parent.parent)) { // If the decorator's parent is a Parameter, we resolve the this container from // the grandparent class declaration. node = node.parent.parent; @@ -5379,20 +5556,20 @@ var ts; * Determines whether a node is a property or element access expression for super. */ function isSuperPropertyOrElementAccess(node) { - return (node.kind === 170 /* PropertyAccessExpression */ - || node.kind === 171 /* ElementAccessExpression */) + return (node.kind === 171 /* PropertyAccessExpression */ + || node.kind === 172 /* ElementAccessExpression */) && node.expression.kind === 95 /* SuperKeyword */; } ts.isSuperPropertyOrElementAccess = isSuperPropertyOrElementAccess; function getEntityNameFromTypeNode(node) { if (node) { switch (node.kind) { - case 153 /* TypeReference */: + case 154 /* TypeReference */: return node.typeName; - case 192 /* ExpressionWithTypeArguments */: + case 193 /* ExpressionWithTypeArguments */: return node.expression; case 69 /* Identifier */: - case 137 /* QualifiedName */: + case 138 /* QualifiedName */: return node; } } @@ -5400,7 +5577,7 @@ var ts; } ts.getEntityNameFromTypeNode = getEntityNameFromTypeNode; function getInvokedExpression(node) { - if (node.kind === 174 /* TaggedTemplateExpression */) { + if (node.kind === 175 /* TaggedTemplateExpression */) { return node.tag; } // Will either be a CallExpression, NewExpression, or Decorator. @@ -5409,25 +5586,25 @@ var ts; ts.getInvokedExpression = getInvokedExpression; function nodeCanBeDecorated(node) { switch (node.kind) { - case 218 /* ClassDeclaration */: + case 220 /* ClassDeclaration */: // classes are valid targets return true; - case 143 /* PropertyDeclaration */: + case 144 /* PropertyDeclaration */: // property declarations are valid if their parent is a class declaration. - return node.parent.kind === 218 /* ClassDeclaration */; - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: - case 145 /* MethodDeclaration */: + return node.parent.kind === 220 /* ClassDeclaration */; + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: + case 146 /* MethodDeclaration */: // if this method has a body and its parent is a class declaration, this is a valid target. return node.body !== undefined - && node.parent.kind === 218 /* ClassDeclaration */; - case 140 /* Parameter */: + && node.parent.kind === 220 /* ClassDeclaration */; + case 141 /* Parameter */: // if the parameter's parent has a body and its grandparent is a class declaration, this is a valid target; return node.parent.body !== undefined - && (node.parent.kind === 146 /* Constructor */ - || node.parent.kind === 145 /* MethodDeclaration */ - || node.parent.kind === 148 /* SetAccessor */) - && node.parent.parent.kind === 218 /* ClassDeclaration */; + && (node.parent.kind === 147 /* Constructor */ + || node.parent.kind === 146 /* MethodDeclaration */ + || node.parent.kind === 149 /* SetAccessor */) + && node.parent.parent.kind === 220 /* ClassDeclaration */; } return false; } @@ -5438,13 +5615,23 @@ var ts; } ts.nodeIsDecorated = nodeIsDecorated; function isPropertyAccessExpression(node) { - return node.kind === 170 /* PropertyAccessExpression */; + return node.kind === 171 /* PropertyAccessExpression */; } ts.isPropertyAccessExpression = isPropertyAccessExpression; function isElementAccessExpression(node) { - return node.kind === 171 /* ElementAccessExpression */; + return node.kind === 172 /* ElementAccessExpression */; } ts.isElementAccessExpression = isElementAccessExpression; + function isJSXTagName(node) { + var parent = node.parent; + if (parent.kind === 242 /* JsxOpeningElement */ || + parent.kind === 241 /* JsxSelfClosingElement */ || + parent.kind === 244 /* JsxClosingElement */) { + return parent.tagName === node; + } + return false; + } + ts.isJSXTagName = isJSXTagName; function isExpression(node) { switch (node.kind) { case 95 /* SuperKeyword */: @@ -5452,42 +5639,43 @@ var ts; case 99 /* TrueKeyword */: case 84 /* FalseKeyword */: case 10 /* RegularExpressionLiteral */: - case 168 /* ArrayLiteralExpression */: - case 169 /* ObjectLiteralExpression */: - case 170 /* PropertyAccessExpression */: - case 171 /* ElementAccessExpression */: - case 172 /* CallExpression */: - case 173 /* NewExpression */: - case 174 /* TaggedTemplateExpression */: - case 193 /* AsExpression */: - case 175 /* TypeAssertionExpression */: - case 176 /* ParenthesizedExpression */: - case 177 /* FunctionExpression */: - case 190 /* ClassExpression */: - case 178 /* ArrowFunction */: - case 181 /* VoidExpression */: - case 179 /* DeleteExpression */: - case 180 /* TypeOfExpression */: - case 183 /* PrefixUnaryExpression */: - case 184 /* PostfixUnaryExpression */: - case 185 /* BinaryExpression */: - case 186 /* ConditionalExpression */: - case 189 /* SpreadElementExpression */: - case 187 /* TemplateExpression */: + case 169 /* ArrayLiteralExpression */: + case 170 /* ObjectLiteralExpression */: + case 171 /* PropertyAccessExpression */: + case 172 /* ElementAccessExpression */: + case 173 /* CallExpression */: + case 174 /* NewExpression */: + case 175 /* TaggedTemplateExpression */: + case 194 /* AsExpression */: + case 176 /* TypeAssertionExpression */: + case 195 /* NonNullExpression */: + case 177 /* ParenthesizedExpression */: + case 178 /* FunctionExpression */: + case 191 /* ClassExpression */: + case 179 /* ArrowFunction */: + case 182 /* VoidExpression */: + case 180 /* DeleteExpression */: + case 181 /* TypeOfExpression */: + case 184 /* PrefixUnaryExpression */: + case 185 /* PostfixUnaryExpression */: + case 186 /* BinaryExpression */: + case 187 /* ConditionalExpression */: + case 190 /* SpreadElementExpression */: + case 188 /* TemplateExpression */: case 11 /* NoSubstitutionTemplateLiteral */: - case 191 /* OmittedExpression */: - case 237 /* JsxElement */: - case 238 /* JsxSelfClosingElement */: - case 188 /* YieldExpression */: - case 182 /* AwaitExpression */: + case 192 /* OmittedExpression */: + case 240 /* JsxElement */: + case 241 /* JsxSelfClosingElement */: + case 189 /* YieldExpression */: + case 183 /* AwaitExpression */: return true; - case 137 /* QualifiedName */: - while (node.parent.kind === 137 /* QualifiedName */) { + case 138 /* QualifiedName */: + while (node.parent.kind === 138 /* QualifiedName */) { node = node.parent; } - return node.parent.kind === 156 /* TypeQuery */; + return node.parent.kind === 157 /* TypeQuery */ || isJSXTagName(node); case 69 /* Identifier */: - if (node.parent.kind === 156 /* TypeQuery */) { + if (node.parent.kind === 157 /* TypeQuery */ || isJSXTagName(node)) { return true; } // fall through @@ -5496,47 +5684,47 @@ var ts; case 97 /* ThisKeyword */: var parent_2 = node.parent; switch (parent_2.kind) { - case 215 /* VariableDeclaration */: - case 140 /* Parameter */: - case 143 /* PropertyDeclaration */: - case 142 /* PropertySignature */: - case 251 /* EnumMember */: - case 249 /* PropertyAssignment */: - case 167 /* BindingElement */: + case 217 /* VariableDeclaration */: + case 141 /* Parameter */: + case 144 /* PropertyDeclaration */: + case 143 /* PropertySignature */: + case 254 /* EnumMember */: + case 252 /* PropertyAssignment */: + case 168 /* BindingElement */: return parent_2.initializer === node; - case 199 /* ExpressionStatement */: - case 200 /* IfStatement */: - case 201 /* DoStatement */: - case 202 /* WhileStatement */: - case 208 /* ReturnStatement */: - case 209 /* WithStatement */: - case 210 /* SwitchStatement */: - case 245 /* CaseClause */: - case 212 /* ThrowStatement */: - case 210 /* SwitchStatement */: + case 201 /* ExpressionStatement */: + case 202 /* IfStatement */: + case 203 /* DoStatement */: + case 204 /* WhileStatement */: + case 210 /* ReturnStatement */: + case 211 /* WithStatement */: + case 212 /* SwitchStatement */: + case 248 /* CaseClause */: + case 214 /* ThrowStatement */: + case 212 /* SwitchStatement */: return parent_2.expression === node; - case 203 /* ForStatement */: + case 205 /* ForStatement */: var forStatement = parent_2; - return (forStatement.initializer === node && forStatement.initializer.kind !== 216 /* VariableDeclarationList */) || + return (forStatement.initializer === node && forStatement.initializer.kind !== 218 /* VariableDeclarationList */) || forStatement.condition === node || forStatement.incrementor === node; - case 204 /* ForInStatement */: - case 205 /* ForOfStatement */: + case 206 /* ForInStatement */: + case 207 /* ForOfStatement */: var forInStatement = parent_2; - return (forInStatement.initializer === node && forInStatement.initializer.kind !== 216 /* VariableDeclarationList */) || + return (forInStatement.initializer === node && forInStatement.initializer.kind !== 218 /* VariableDeclarationList */) || forInStatement.expression === node; - case 175 /* TypeAssertionExpression */: - case 193 /* AsExpression */: + case 176 /* TypeAssertionExpression */: + case 194 /* AsExpression */: return node === parent_2.expression; - case 194 /* TemplateSpan */: + case 196 /* TemplateSpan */: return node === parent_2.expression; - case 138 /* ComputedPropertyName */: + case 139 /* ComputedPropertyName */: return node === parent_2.expression; - case 141 /* Decorator */: - case 244 /* JsxExpression */: - case 243 /* JsxSpreadAttribute */: + case 142 /* Decorator */: + case 247 /* JsxExpression */: + case 246 /* JsxSpreadAttribute */: return true; - case 192 /* ExpressionWithTypeArguments */: + case 193 /* ExpressionWithTypeArguments */: return parent_2.expression === node && isExpressionWithTypeArgumentsInClassExtendsClause(parent_2); default: if (isExpression(parent_2)) { @@ -5560,7 +5748,7 @@ var ts; } ts.isInstantiatedModule = isInstantiatedModule; function isExternalModuleImportEqualsDeclaration(node) { - return node.kind === 225 /* ImportEqualsDeclaration */ && node.moduleReference.kind === 236 /* ExternalModuleReference */; + return node.kind === 228 /* ImportEqualsDeclaration */ && node.moduleReference.kind === 239 /* ExternalModuleReference */; } ts.isExternalModuleImportEqualsDeclaration = isExternalModuleImportEqualsDeclaration; function getExternalModuleImportEqualsDeclarationExpression(node) { @@ -5569,7 +5757,7 @@ var ts; } ts.getExternalModuleImportEqualsDeclarationExpression = getExternalModuleImportEqualsDeclarationExpression; function isInternalModuleImportEqualsDeclaration(node) { - return node.kind === 225 /* ImportEqualsDeclaration */ && node.moduleReference.kind !== 236 /* ExternalModuleReference */; + return node.kind === 228 /* ImportEqualsDeclaration */ && node.moduleReference.kind !== 239 /* ExternalModuleReference */; } ts.isInternalModuleImportEqualsDeclaration = isInternalModuleImportEqualsDeclaration; function isSourceFileJavaScript(file) { @@ -5587,7 +5775,7 @@ var ts; */ function isRequireCall(expression, checkArgumentIsStringLiteral) { // of the form 'require("name")' - var isRequire = expression.kind === 172 /* CallExpression */ && + var isRequire = expression.kind === 173 /* CallExpression */ && expression.expression.kind === 69 /* Identifier */ && expression.expression.text === "require" && expression.arguments.length === 1; @@ -5597,11 +5785,14 @@ var ts; /// Given a BinaryExpression, returns SpecialPropertyAssignmentKind for the various kinds of property /// assignments we treat as special in the binder function getSpecialPropertyAssignmentKind(expression) { - if (expression.kind !== 185 /* BinaryExpression */) { + if (!isInJavaScriptFile(expression)) { + return 0 /* None */; + } + if (expression.kind !== 186 /* BinaryExpression */) { return 0 /* None */; } var expr = expression; - if (expr.operatorToken.kind !== 56 /* EqualsToken */ || expr.left.kind !== 170 /* PropertyAccessExpression */) { + if (expr.operatorToken.kind !== 56 /* EqualsToken */ || expr.left.kind !== 171 /* PropertyAccessExpression */) { return 0 /* None */; } var lhs = expr.left; @@ -5619,7 +5810,7 @@ var ts; else if (lhs.expression.kind === 97 /* ThisKeyword */) { return 4 /* ThisProperty */; } - else if (lhs.expression.kind === 170 /* PropertyAccessExpression */) { + else if (lhs.expression.kind === 171 /* PropertyAccessExpression */) { // chained dot, e.g. x.y.z = expr; this var is the 'x.y' part var innerPropertyAccess = lhs.expression; if (innerPropertyAccess.expression.kind === 69 /* Identifier */ && innerPropertyAccess.name.text === "prototype") { @@ -5630,19 +5821,19 @@ var ts; } ts.getSpecialPropertyAssignmentKind = getSpecialPropertyAssignmentKind; function getExternalModuleName(node) { - if (node.kind === 226 /* ImportDeclaration */) { + if (node.kind === 229 /* ImportDeclaration */) { return node.moduleSpecifier; } - if (node.kind === 225 /* ImportEqualsDeclaration */) { + if (node.kind === 228 /* ImportEqualsDeclaration */) { var reference = node.moduleReference; - if (reference.kind === 236 /* ExternalModuleReference */) { + if (reference.kind === 239 /* ExternalModuleReference */) { return reference.expression; } } - if (node.kind === 232 /* ExportDeclaration */) { + if (node.kind === 235 /* ExportDeclaration */) { return node.moduleSpecifier; } - if (node.kind === 222 /* ModuleDeclaration */ && node.name.kind === 9 /* StringLiteral */) { + if (node.kind === 224 /* ModuleDeclaration */ && node.name.kind === 9 /* StringLiteral */) { return node.name; } } @@ -5650,13 +5841,13 @@ var ts; function hasQuestionToken(node) { if (node) { switch (node.kind) { - case 140 /* Parameter */: - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: - case 250 /* ShorthandPropertyAssignment */: - case 249 /* PropertyAssignment */: - case 143 /* PropertyDeclaration */: - case 142 /* PropertySignature */: + case 141 /* Parameter */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: + case 253 /* ShorthandPropertyAssignment */: + case 252 /* PropertyAssignment */: + case 144 /* PropertyDeclaration */: + case 143 /* PropertySignature */: return node.questionToken !== undefined; } } @@ -5664,9 +5855,9 @@ var ts; } ts.hasQuestionToken = hasQuestionToken; function isJSDocConstructSignature(node) { - return node.kind === 265 /* JSDocFunctionType */ && + return node.kind === 268 /* JSDocFunctionType */ && node.parameters.length > 0 && - node.parameters[0].type.kind === 267 /* JSDocConstructorType */; + node.parameters[0].type.kind === 270 /* JSDocConstructorType */; } ts.isJSDocConstructSignature = isJSDocConstructSignature; function getJSDocTag(node, kind, checkParentVariableStatement) { @@ -5695,9 +5886,9 @@ var ts; // */ // var x = function(name) { return name.length; } if (checkParentVariableStatement) { - var isInitializerOfVariableDeclarationInStatement = node.parent.kind === 215 /* VariableDeclaration */ && + var isInitializerOfVariableDeclarationInStatement = node.parent.kind === 217 /* VariableDeclaration */ && node.parent.initializer === node && - node.parent.parent.parent.kind === 197 /* VariableStatement */; + node.parent.parent.parent.kind === 199 /* VariableStatement */; var variableStatementNode = isInitializerOfVariableDeclarationInStatement ? node.parent.parent.parent : undefined; if (variableStatementNode) { return variableStatementNode.jsDocComment; @@ -5705,13 +5896,13 @@ var ts; // Also recognize when the node is the RHS of an assignment expression var parent_3 = node.parent; var isSourceOfAssignmentExpressionStatement = parent_3 && parent_3.parent && - parent_3.kind === 185 /* BinaryExpression */ && + parent_3.kind === 186 /* BinaryExpression */ && parent_3.operatorToken.kind === 56 /* EqualsToken */ && - parent_3.parent.kind === 199 /* ExpressionStatement */; + parent_3.parent.kind === 201 /* ExpressionStatement */; if (isSourceOfAssignmentExpressionStatement) { return parent_3.parent.jsDocComment; } - var isPropertyAssignmentExpression = parent_3 && parent_3.kind === 249 /* PropertyAssignment */; + var isPropertyAssignmentExpression = parent_3 && parent_3.kind === 252 /* PropertyAssignment */; if (isPropertyAssignmentExpression) { return parent_3.jsDocComment; } @@ -5719,15 +5910,15 @@ var ts; return undefined; } function getJSDocTypeTag(node) { - return getJSDocTag(node, 273 /* JSDocTypeTag */, /*checkParentVariableStatement*/ false); + return getJSDocTag(node, 276 /* JSDocTypeTag */, /*checkParentVariableStatement*/ false); } ts.getJSDocTypeTag = getJSDocTypeTag; function getJSDocReturnTag(node) { - return getJSDocTag(node, 272 /* JSDocReturnTag */, /*checkParentVariableStatement*/ true); + return getJSDocTag(node, 275 /* JSDocReturnTag */, /*checkParentVariableStatement*/ true); } ts.getJSDocReturnTag = getJSDocReturnTag; function getJSDocTemplateTag(node) { - return getJSDocTag(node, 274 /* JSDocTemplateTag */, /*checkParentVariableStatement*/ false); + return getJSDocTag(node, 277 /* JSDocTemplateTag */, /*checkParentVariableStatement*/ false); } ts.getJSDocTemplateTag = getJSDocTemplateTag; function getCorrespondingJSDocParameterTag(parameter) { @@ -5739,7 +5930,7 @@ var ts; if (jsDocComment) { for (var _i = 0, _a = jsDocComment.tags; _i < _a.length; _i++) { var tag = _a[_i]; - if (tag.kind === 271 /* JSDocParameterTag */) { + if (tag.kind === 274 /* JSDocParameterTag */) { var parameterTag = tag; var name_6 = parameterTag.preParameterName || parameterTag.postParameterName; if (name_6.text === parameterName) { @@ -5759,12 +5950,12 @@ var ts; function isRestParameter(node) { if (node) { if (node.flags & 134217728 /* JavaScriptFile */) { - if (node.type && node.type.kind === 266 /* JSDocVariadicType */) { + if (node.type && node.type.kind === 269 /* JSDocVariadicType */) { return true; } var paramTag = getCorrespondingJSDocParameterTag(node); if (paramTag && paramTag.typeExpression) { - return paramTag.typeExpression.type.kind === 266 /* JSDocVariadicType */; + return paramTag.typeExpression.type.kind === 269 /* JSDocVariadicType */; } } return node.dotDotDotToken !== undefined; @@ -5785,7 +5976,7 @@ var ts; } ts.isTemplateLiteralKind = isTemplateLiteralKind; function isBindingPattern(node) { - return !!node && (node.kind === 166 /* ArrayBindingPattern */ || node.kind === 165 /* ObjectBindingPattern */); + return !!node && (node.kind === 167 /* ArrayBindingPattern */ || node.kind === 166 /* ObjectBindingPattern */); } ts.isBindingPattern = isBindingPattern; function isNodeDescendentOf(node, ancestor) { @@ -5799,7 +5990,7 @@ var ts; ts.isNodeDescendentOf = isNodeDescendentOf; function isInAmbientContext(node) { while (node) { - if (node.flags & 2 /* Ambient */ || (node.kind === 252 /* SourceFile */ && node.isDeclarationFile)) { + if (node.flags & 2 /* Ambient */ || (node.kind === 255 /* SourceFile */ && node.isDeclarationFile)) { return true; } node = node.parent; @@ -5809,34 +6000,34 @@ var ts; ts.isInAmbientContext = isInAmbientContext; function isDeclaration(node) { switch (node.kind) { - case 178 /* ArrowFunction */: - case 167 /* BindingElement */: - case 218 /* ClassDeclaration */: - case 190 /* ClassExpression */: - case 146 /* Constructor */: - case 221 /* EnumDeclaration */: - case 251 /* EnumMember */: - case 234 /* ExportSpecifier */: - case 217 /* FunctionDeclaration */: - case 177 /* FunctionExpression */: - case 147 /* GetAccessor */: - case 227 /* ImportClause */: - case 225 /* ImportEqualsDeclaration */: - case 230 /* ImportSpecifier */: - case 219 /* InterfaceDeclaration */: - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: - case 222 /* ModuleDeclaration */: - case 228 /* NamespaceImport */: - case 140 /* Parameter */: - case 249 /* PropertyAssignment */: - case 143 /* PropertyDeclaration */: - case 142 /* PropertySignature */: - case 148 /* SetAccessor */: - case 250 /* ShorthandPropertyAssignment */: - case 220 /* TypeAliasDeclaration */: - case 139 /* TypeParameter */: - case 215 /* VariableDeclaration */: + case 179 /* ArrowFunction */: + case 168 /* BindingElement */: + case 220 /* ClassDeclaration */: + case 191 /* ClassExpression */: + case 147 /* Constructor */: + case 223 /* EnumDeclaration */: + case 254 /* EnumMember */: + case 237 /* ExportSpecifier */: + case 219 /* FunctionDeclaration */: + case 178 /* FunctionExpression */: + case 148 /* GetAccessor */: + case 230 /* ImportClause */: + case 228 /* ImportEqualsDeclaration */: + case 233 /* ImportSpecifier */: + case 221 /* InterfaceDeclaration */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: + case 224 /* ModuleDeclaration */: + case 231 /* NamespaceImport */: + case 141 /* Parameter */: + case 252 /* PropertyAssignment */: + case 144 /* PropertyDeclaration */: + case 143 /* PropertySignature */: + case 149 /* SetAccessor */: + case 253 /* ShorthandPropertyAssignment */: + case 222 /* TypeAliasDeclaration */: + case 140 /* TypeParameter */: + case 217 /* VariableDeclaration */: return true; } return false; @@ -5844,25 +6035,25 @@ var ts; ts.isDeclaration = isDeclaration; function isStatement(n) { switch (n.kind) { - case 207 /* BreakStatement */: - case 206 /* ContinueStatement */: - case 214 /* DebuggerStatement */: - case 201 /* DoStatement */: - case 199 /* ExpressionStatement */: - case 198 /* EmptyStatement */: - case 204 /* ForInStatement */: - case 205 /* ForOfStatement */: - case 203 /* ForStatement */: - case 200 /* IfStatement */: - case 211 /* LabeledStatement */: - case 208 /* ReturnStatement */: - case 210 /* SwitchStatement */: - case 212 /* ThrowStatement */: - case 213 /* TryStatement */: - case 197 /* VariableStatement */: - case 202 /* WhileStatement */: - case 209 /* WithStatement */: - case 231 /* ExportAssignment */: + case 209 /* BreakStatement */: + case 208 /* ContinueStatement */: + case 216 /* DebuggerStatement */: + case 203 /* DoStatement */: + case 201 /* ExpressionStatement */: + case 200 /* EmptyStatement */: + case 206 /* ForInStatement */: + case 207 /* ForOfStatement */: + case 205 /* ForStatement */: + case 202 /* IfStatement */: + case 213 /* LabeledStatement */: + case 210 /* ReturnStatement */: + case 212 /* SwitchStatement */: + case 214 /* ThrowStatement */: + case 215 /* TryStatement */: + case 199 /* VariableStatement */: + case 204 /* WhileStatement */: + case 211 /* WithStatement */: + case 234 /* ExportAssignment */: return true; default: return false; @@ -5871,13 +6062,13 @@ var ts; ts.isStatement = isStatement; function isClassElement(n) { switch (n.kind) { - case 146 /* Constructor */: - case 143 /* PropertyDeclaration */: - case 145 /* MethodDeclaration */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: - case 144 /* MethodSignature */: - case 151 /* IndexSignature */: + case 147 /* Constructor */: + case 144 /* PropertyDeclaration */: + case 146 /* MethodDeclaration */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: + case 145 /* MethodSignature */: + case 152 /* IndexSignature */: return true; default: return false; @@ -5890,7 +6081,7 @@ var ts; return false; } var parent = name.parent; - if (parent.kind === 230 /* ImportSpecifier */ || parent.kind === 234 /* ExportSpecifier */) { + if (parent.kind === 233 /* ImportSpecifier */ || parent.kind === 237 /* ExportSpecifier */) { if (parent.propertyName) { return true; } @@ -5905,31 +6096,31 @@ var ts; function isIdentifierName(node) { var parent = node.parent; switch (parent.kind) { - case 143 /* PropertyDeclaration */: - case 142 /* PropertySignature */: - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: - case 251 /* EnumMember */: - case 249 /* PropertyAssignment */: - case 170 /* PropertyAccessExpression */: + case 144 /* PropertyDeclaration */: + case 143 /* PropertySignature */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: + case 254 /* EnumMember */: + case 252 /* PropertyAssignment */: + case 171 /* PropertyAccessExpression */: // Name in member declaration or property name in property access return parent.name === node; - case 137 /* QualifiedName */: + case 138 /* QualifiedName */: // Name on right hand side of dot in a type query if (parent.right === node) { - while (parent.kind === 137 /* QualifiedName */) { + while (parent.kind === 138 /* QualifiedName */) { parent = parent.parent; } - return parent.kind === 156 /* TypeQuery */; + return parent.kind === 157 /* TypeQuery */; } return false; - case 167 /* BindingElement */: - case 230 /* ImportSpecifier */: + case 168 /* BindingElement */: + case 233 /* ImportSpecifier */: // Property name in binding element or import specifier return parent.propertyName === node; - case 234 /* ExportSpecifier */: + case 237 /* ExportSpecifier */: // Any name in an export specifier return true; } @@ -5945,12 +6136,13 @@ var ts; // export = ... // export default ... function isAliasSymbolDeclaration(node) { - return node.kind === 225 /* ImportEqualsDeclaration */ || - node.kind === 227 /* ImportClause */ && !!node.name || - node.kind === 228 /* NamespaceImport */ || - node.kind === 230 /* ImportSpecifier */ || - node.kind === 234 /* ExportSpecifier */ || - node.kind === 231 /* ExportAssignment */ && node.expression.kind === 69 /* Identifier */; + return node.kind === 228 /* ImportEqualsDeclaration */ || + node.kind === 227 /* GlobalModuleExportDeclaration */ || + node.kind === 230 /* ImportClause */ && !!node.name || + node.kind === 231 /* NamespaceImport */ || + node.kind === 233 /* ImportSpecifier */ || + node.kind === 237 /* ExportSpecifier */ || + node.kind === 234 /* ExportAssignment */ && node.expression.kind === 69 /* Identifier */; } ts.isAliasSymbolDeclaration = isAliasSymbolDeclaration; function getClassExtendsHeritageClauseElement(node) { @@ -6007,32 +6199,32 @@ var ts; }; } else { - var matchResult = ts.fullTripleSlashReferencePathRegEx.exec(comment); - if (matchResult) { + var refMatchResult = ts.fullTripleSlashReferencePathRegEx.exec(comment); + var refLibResult = !refMatchResult && ts.fullTripleSlashReferenceTypeReferenceDirectiveRegEx.exec(comment); + if (refMatchResult || refLibResult) { var start = commentRange.pos; var end = commentRange.end; return { fileReference: { pos: start, end: end, - fileName: matchResult[3] + fileName: (refMatchResult || refLibResult)[3] }, - isNoDefaultLib: false - }; - } - else { - return { - diagnosticMessage: ts.Diagnostics.Invalid_reference_directive_syntax, - isNoDefaultLib: false + isNoDefaultLib: false, + isTypeReferenceDirective: !!refLibResult }; } + return { + diagnosticMessage: ts.Diagnostics.Invalid_reference_directive_syntax, + isNoDefaultLib: false + }; } } return undefined; } ts.getFileReferenceFromReferencePath = getFileReferenceFromReferencePath; function isKeyword(token) { - return 70 /* FirstKeyword */ <= token && token <= 136 /* LastKeyword */; + return 70 /* FirstKeyword */ <= token && token <= 137 /* LastKeyword */; } ts.isKeyword = isKeyword; function isTrivia(token) { @@ -6059,7 +6251,7 @@ var ts; } ts.hasDynamicName = hasDynamicName; function isDynamicName(name) { - return name.kind === 138 /* ComputedPropertyName */ && + return name.kind === 139 /* ComputedPropertyName */ && !isStringOrNumericLiteral(name.expression.kind) && !isWellKnownSymbolSyntactically(name.expression); } @@ -6077,7 +6269,7 @@ var ts; if (name.kind === 69 /* Identifier */ || name.kind === 9 /* StringLiteral */ || name.kind === 8 /* NumericLiteral */) { return name.text; } - if (name.kind === 138 /* ComputedPropertyName */) { + if (name.kind === 139 /* ComputedPropertyName */) { var nameExpression = name.expression; if (isWellKnownSymbolSyntactically(nameExpression)) { var rightHandSideName = nameExpression.name.text; @@ -6118,18 +6310,18 @@ var ts; ts.isModifierKind = isModifierKind; function isParameterDeclaration(node) { var root = getRootDeclaration(node); - return root.kind === 140 /* Parameter */; + return root.kind === 141 /* Parameter */; } ts.isParameterDeclaration = isParameterDeclaration; function getRootDeclaration(node) { - while (node.kind === 167 /* BindingElement */) { + while (node.kind === 168 /* BindingElement */) { node = node.parent.parent; } return node; } ts.getRootDeclaration = getRootDeclaration; function nodeStartsNewLexicalEnvironment(n) { - return isFunctionLike(n) || n.kind === 222 /* ModuleDeclaration */ || n.kind === 252 /* SourceFile */; + return isFunctionLike(n) || n.kind === 224 /* ModuleDeclaration */ || n.kind === 255 /* SourceFile */; } ts.nodeStartsNewLexicalEnvironment = nodeStartsNewLexicalEnvironment; /** @@ -6179,7 +6371,7 @@ var ts; } ts.cloneEntityName = cloneEntityName; function isQualifiedName(node) { - return node.kind === 137 /* QualifiedName */; + return node.kind === 138 /* QualifiedName */; } ts.isQualifiedName = isQualifiedName; function nodeIsSynthesized(node) { @@ -6430,6 +6622,17 @@ var ts; return emitOutputFilePathWithoutExtension + extension; } ts.getOwnEmitOutputFilePath = getOwnEmitOutputFilePath; + function getDeclarationEmitOutputFilePath(sourceFile, host) { + var options = host.getCompilerOptions(); + var outputDir = options.declarationDir || options.outDir; // Prefer declaration folder if specified + if (options.declaration) { + var path = outputDir + ? getSourceFilePathInNewDir(sourceFile, host, outputDir) + : sourceFile.fileName; + return ts.removeFileExtension(path) + ".d.ts"; + } + } + ts.getDeclarationEmitOutputFilePath = getDeclarationEmitOutputFilePath; function getEmitScriptTarget(compilerOptions) { return compilerOptions.target || 0 /* ES3 */; } @@ -6475,21 +6678,22 @@ var ts; var emitFileNames = { jsFilePath: jsFilePath, sourceMapFilePath: getSourceMapFilePath(jsFilePath, options), - declarationFilePath: !isSourceFileJavaScript(sourceFile) ? getDeclarationEmitFilePath(jsFilePath, options) : undefined + declarationFilePath: !isSourceFileJavaScript(sourceFile) ? getDeclarationEmitOutputFilePath(sourceFile, host) : undefined }; action(emitFileNames, [sourceFile], /*isBundledEmit*/ false); } function onBundledEmit(host) { // Can emit only sources that are not declaration file and are either non module code or module with --module or --target es6 specified - var bundledSources = ts.filter(host.getSourceFiles(), function (sourceFile) { return !isDeclarationFile(sourceFile) && - (!isExternalModule(sourceFile) || - (getEmitModuleKind(options) && isExternalModule(sourceFile))); }); // module that can emit - note falsy value from getEmitModuleKind means the module kind that shouldn't be emitted + var bundledSources = ts.filter(host.getSourceFiles(), function (sourceFile) { + return !isDeclarationFile(sourceFile) // Not a declaration file + && (!ts.isExternalModule(sourceFile) || !!getEmitModuleKind(options)); + }); // and not a module, unless module emit enabled if (bundledSources.length) { var jsFilePath = options.outFile || options.out; var emitFileNames = { jsFilePath: jsFilePath, sourceMapFilePath: getSourceMapFilePath(jsFilePath, options), - declarationFilePath: getDeclarationEmitFilePath(jsFilePath, options) + declarationFilePath: options.declaration ? ts.removeFileExtension(jsFilePath) + ".d.ts" : undefined }; action(emitFileNames, bundledSources, /*isBundledEmit*/ true); } @@ -6497,9 +6701,6 @@ var ts; function getSourceMapFilePath(jsFilePath, options) { return options.sourceMap ? jsFilePath + ".map" : undefined; } - function getDeclarationEmitFilePath(jsFilePath, options) { - return options.declaration ? ts.removeFileExtension(jsFilePath) + ".d.ts" : undefined; - } } ts.forEachExpectedEmitFile = forEachExpectedEmitFile; function getSourceFilePathInNewDir(sourceFile, host, newDirPath) { @@ -6508,10 +6709,10 @@ var ts; return ts.combinePaths(newDirPath, sourceFilePath); } ts.getSourceFilePathInNewDir = getSourceFilePathInNewDir; - function writeFile(host, diagnostics, fileName, data, writeByteOrderMark) { + function writeFile(host, diagnostics, fileName, data, writeByteOrderMark, sourceFiles) { host.writeFile(fileName, data, writeByteOrderMark, function (hostErrorMessage) { diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Could_not_write_file_0_Colon_1, fileName, hostErrorMessage)); - }); + }, sourceFiles); } ts.writeFile = writeFile; function getLineOfLocalPosition(currentSourceFile, pos) { @@ -6524,7 +6725,7 @@ var ts; ts.getLineOfLocalPositionFromLineMap = getLineOfLocalPositionFromLineMap; function getFirstConstructorWithBody(node) { return ts.forEach(node.members, function (member) { - if (member.kind === 146 /* Constructor */ && nodeIsPresent(member.body)) { + if (member.kind === 147 /* Constructor */ && nodeIsPresent(member.body)) { return member; } }); @@ -6541,10 +6742,10 @@ var ts; var setAccessor; if (hasDynamicName(accessor)) { firstAccessor = accessor; - if (accessor.kind === 147 /* GetAccessor */) { + if (accessor.kind === 148 /* GetAccessor */) { getAccessor = accessor; } - else if (accessor.kind === 148 /* SetAccessor */) { + else if (accessor.kind === 149 /* SetAccessor */) { setAccessor = accessor; } else { @@ -6553,7 +6754,7 @@ var ts; } else { ts.forEach(declarations, function (member) { - if ((member.kind === 147 /* GetAccessor */ || member.kind === 148 /* SetAccessor */) + if ((member.kind === 148 /* GetAccessor */ || member.kind === 149 /* SetAccessor */) && (member.flags & 32 /* Static */) === (accessor.flags & 32 /* Static */)) { var memberName = getPropertyNameForPropertyNameNode(member.name); var accessorName = getPropertyNameForPropertyNameNode(accessor.name); @@ -6564,10 +6765,10 @@ var ts; else if (!secondAccessor) { secondAccessor = member; } - if (member.kind === 147 /* GetAccessor */ && !getAccessor) { + if (member.kind === 148 /* GetAccessor */ && !getAccessor) { getAccessor = member; } - if (member.kind === 148 /* SetAccessor */ && !setAccessor) { + if (member.kind === 149 /* SetAccessor */ && !setAccessor) { setAccessor = member; } } @@ -6778,24 +6979,25 @@ var ts; function isLeftHandSideExpression(expr) { if (expr) { switch (expr.kind) { - case 170 /* PropertyAccessExpression */: - case 171 /* ElementAccessExpression */: - case 173 /* NewExpression */: - case 172 /* CallExpression */: - case 237 /* JsxElement */: - case 238 /* JsxSelfClosingElement */: - case 174 /* TaggedTemplateExpression */: - case 168 /* ArrayLiteralExpression */: - case 176 /* ParenthesizedExpression */: - case 169 /* ObjectLiteralExpression */: - case 190 /* ClassExpression */: - case 177 /* FunctionExpression */: + case 171 /* PropertyAccessExpression */: + case 172 /* ElementAccessExpression */: + case 174 /* NewExpression */: + case 173 /* CallExpression */: + case 195 /* NonNullExpression */: + case 240 /* JsxElement */: + case 241 /* JsxSelfClosingElement */: + case 175 /* TaggedTemplateExpression */: + case 169 /* ArrayLiteralExpression */: + case 177 /* ParenthesizedExpression */: + case 170 /* ObjectLiteralExpression */: + case 191 /* ClassExpression */: + case 178 /* FunctionExpression */: case 69 /* Identifier */: case 10 /* RegularExpressionLiteral */: case 8 /* NumericLiteral */: case 9 /* StringLiteral */: case 11 /* NoSubstitutionTemplateLiteral */: - case 187 /* TemplateExpression */: + case 188 /* TemplateExpression */: case 84 /* FalseKeyword */: case 93 /* NullKeyword */: case 97 /* ThisKeyword */: @@ -6812,7 +7014,7 @@ var ts; } ts.isAssignmentOperator = isAssignmentOperator; function isExpressionWithTypeArgumentsInClassExtendsClause(node) { - return node.kind === 192 /* ExpressionWithTypeArguments */ && + return node.kind === 193 /* ExpressionWithTypeArguments */ && node.parent.token === 83 /* ExtendsKeyword */ && isClassLike(node.parent.parent); } @@ -6835,16 +7037,16 @@ var ts; } } function isRightSideOfQualifiedNameOrPropertyAccess(node) { - return (node.parent.kind === 137 /* QualifiedName */ && node.parent.right === node) || - (node.parent.kind === 170 /* PropertyAccessExpression */ && node.parent.name === node); + return (node.parent.kind === 138 /* QualifiedName */ && node.parent.right === node) || + (node.parent.kind === 171 /* PropertyAccessExpression */ && node.parent.name === node); } ts.isRightSideOfQualifiedNameOrPropertyAccess = isRightSideOfQualifiedNameOrPropertyAccess; function isEmptyObjectLiteralOrArrayLiteral(expression) { var kind = expression.kind; - if (kind === 169 /* ObjectLiteralExpression */) { + if (kind === 170 /* ObjectLiteralExpression */) { return expression.properties.length === 0; } - if (kind === 168 /* ArrayLiteralExpression */) { + if (kind === 169 /* ArrayLiteralExpression */) { return expression.elements.length === 0; } return false; @@ -6986,6 +7188,11 @@ var ts; return carriageReturnLineFeed; } ts.getNewLineCharacter = getNewLineCharacter; + function isWatchSet(options) { + // Firefox has Object.prototype.watch + return options.watch && options.hasOwnProperty("watch"); + } + ts.isWatchSet = isWatchSet; })(ts || (ts = {})); var ts; (function (ts) { @@ -7199,9 +7406,9 @@ var ts; } ts.collapseTextChangeRangesAcrossMultipleVersions = collapseTextChangeRangesAcrossMultipleVersions; function getTypeParameterOwner(d) { - if (d && d.kind === 139 /* TypeParameter */) { + if (d && d.kind === 140 /* TypeParameter */) { for (var current = d; current; current = current.parent) { - if (ts.isFunctionLike(current) || ts.isClassLike(current) || current.kind === 219 /* InterfaceDeclaration */) { + if (ts.isFunctionLike(current) || ts.isClassLike(current) || current.kind === 221 /* InterfaceDeclaration */) { return current; } } @@ -7209,9 +7416,18 @@ var ts; } ts.getTypeParameterOwner = getTypeParameterOwner; function isParameterPropertyDeclaration(node) { - return node.flags & 28 /* AccessibilityModifier */ && node.parent.kind === 146 /* Constructor */ && ts.isClassLike(node.parent.parent); + return node.flags & 28 /* AccessibilityModifier */ && node.parent.kind === 147 /* Constructor */ && ts.isClassLike(node.parent.parent); } ts.isParameterPropertyDeclaration = isParameterPropertyDeclaration; + function startsWith(str, prefix) { + return str.lastIndexOf(prefix, 0) === 0; + } + ts.startsWith = startsWith; + function endsWith(str, suffix) { + var expectedPos = str.length - suffix.length; + return str.indexOf(suffix, expectedPos) === expectedPos; + } + ts.endsWith = endsWith; })(ts || (ts = {})); /// /// @@ -7221,7 +7437,7 @@ var ts; var NodeConstructor; var SourceFileConstructor; function createNode(kind, pos, end) { - if (kind === 252 /* SourceFile */) { + if (kind === 255 /* SourceFile */) { return new (SourceFileConstructor || (SourceFileConstructor = ts.objectAllocator.getSourceFileConstructor()))(kind, pos, end); } else { @@ -7264,26 +7480,26 @@ var ts; var visitNodes = cbNodeArray ? visitNodeArray : visitEachNode; var cbNodes = cbNodeArray || cbNode; switch (node.kind) { - case 137 /* QualifiedName */: + case 138 /* QualifiedName */: return visitNode(cbNode, node.left) || visitNode(cbNode, node.right); - case 139 /* TypeParameter */: + case 140 /* TypeParameter */: return visitNode(cbNode, node.name) || visitNode(cbNode, node.constraint) || visitNode(cbNode, node.expression); - case 250 /* ShorthandPropertyAssignment */: + case 253 /* ShorthandPropertyAssignment */: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || visitNode(cbNode, node.questionToken) || visitNode(cbNode, node.equalsToken) || visitNode(cbNode, node.objectAssignmentInitializer); - case 140 /* Parameter */: - case 143 /* PropertyDeclaration */: - case 142 /* PropertySignature */: - case 249 /* PropertyAssignment */: - case 215 /* VariableDeclaration */: - case 167 /* BindingElement */: + case 141 /* Parameter */: + case 144 /* PropertyDeclaration */: + case 143 /* PropertySignature */: + case 252 /* PropertyAssignment */: + case 217 /* VariableDeclaration */: + case 168 /* BindingElement */: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.propertyName) || @@ -7292,24 +7508,24 @@ var ts; visitNode(cbNode, node.questionToken) || visitNode(cbNode, node.type) || visitNode(cbNode, node.initializer); - case 154 /* FunctionType */: - case 155 /* ConstructorType */: - case 149 /* CallSignature */: - case 150 /* ConstructSignature */: - case 151 /* IndexSignature */: + case 155 /* FunctionType */: + case 156 /* ConstructorType */: + case 150 /* CallSignature */: + case 151 /* ConstructSignature */: + case 152 /* IndexSignature */: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNodes(cbNodes, node.typeParameters) || visitNodes(cbNodes, node.parameters) || visitNode(cbNode, node.type); - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: - case 146 /* Constructor */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: - case 177 /* FunctionExpression */: - case 217 /* FunctionDeclaration */: - case 178 /* ArrowFunction */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: + case 147 /* Constructor */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: + case 178 /* FunctionExpression */: + case 219 /* FunctionDeclaration */: + case 179 /* ArrowFunction */: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.asteriskToken) || @@ -7320,290 +7536,294 @@ var ts; visitNode(cbNode, node.type) || visitNode(cbNode, node.equalsGreaterThanToken) || visitNode(cbNode, node.body); - case 153 /* TypeReference */: + case 154 /* TypeReference */: return visitNode(cbNode, node.typeName) || visitNodes(cbNodes, node.typeArguments); - case 152 /* TypePredicate */: + case 153 /* TypePredicate */: return visitNode(cbNode, node.parameterName) || visitNode(cbNode, node.type); - case 156 /* TypeQuery */: + case 157 /* TypeQuery */: return visitNode(cbNode, node.exprName); - case 157 /* TypeLiteral */: + case 158 /* TypeLiteral */: return visitNodes(cbNodes, node.members); - case 158 /* ArrayType */: + case 159 /* ArrayType */: return visitNode(cbNode, node.elementType); - case 159 /* TupleType */: + case 160 /* TupleType */: return visitNodes(cbNodes, node.elementTypes); - case 160 /* UnionType */: - case 161 /* IntersectionType */: + case 161 /* UnionType */: + case 162 /* IntersectionType */: return visitNodes(cbNodes, node.types); - case 162 /* ParenthesizedType */: + case 163 /* ParenthesizedType */: return visitNode(cbNode, node.type); - case 165 /* ObjectBindingPattern */: - case 166 /* ArrayBindingPattern */: + case 166 /* ObjectBindingPattern */: + case 167 /* ArrayBindingPattern */: return visitNodes(cbNodes, node.elements); - case 168 /* ArrayLiteralExpression */: + case 169 /* ArrayLiteralExpression */: return visitNodes(cbNodes, node.elements); - case 169 /* ObjectLiteralExpression */: + case 170 /* ObjectLiteralExpression */: return visitNodes(cbNodes, node.properties); - case 170 /* PropertyAccessExpression */: + case 171 /* PropertyAccessExpression */: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.dotToken) || visitNode(cbNode, node.name); - case 171 /* ElementAccessExpression */: + case 172 /* ElementAccessExpression */: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.argumentExpression); - case 172 /* CallExpression */: - case 173 /* NewExpression */: + case 173 /* CallExpression */: + case 174 /* NewExpression */: return visitNode(cbNode, node.expression) || visitNodes(cbNodes, node.typeArguments) || visitNodes(cbNodes, node.arguments); - case 174 /* TaggedTemplateExpression */: + case 175 /* TaggedTemplateExpression */: return visitNode(cbNode, node.tag) || visitNode(cbNode, node.template); - case 175 /* TypeAssertionExpression */: + case 176 /* TypeAssertionExpression */: return visitNode(cbNode, node.type) || visitNode(cbNode, node.expression); - case 176 /* ParenthesizedExpression */: + case 177 /* ParenthesizedExpression */: return visitNode(cbNode, node.expression); - case 179 /* DeleteExpression */: + case 180 /* DeleteExpression */: return visitNode(cbNode, node.expression); - case 180 /* TypeOfExpression */: + case 181 /* TypeOfExpression */: return visitNode(cbNode, node.expression); - case 181 /* VoidExpression */: + case 182 /* VoidExpression */: return visitNode(cbNode, node.expression); - case 183 /* PrefixUnaryExpression */: + case 184 /* PrefixUnaryExpression */: return visitNode(cbNode, node.operand); - case 188 /* YieldExpression */: + case 189 /* YieldExpression */: return visitNode(cbNode, node.asteriskToken) || visitNode(cbNode, node.expression); - case 182 /* AwaitExpression */: + case 183 /* AwaitExpression */: return visitNode(cbNode, node.expression); - case 184 /* PostfixUnaryExpression */: + case 185 /* PostfixUnaryExpression */: return visitNode(cbNode, node.operand); - case 185 /* BinaryExpression */: + case 186 /* BinaryExpression */: return visitNode(cbNode, node.left) || visitNode(cbNode, node.operatorToken) || visitNode(cbNode, node.right); - case 193 /* AsExpression */: + case 194 /* AsExpression */: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.type); - case 186 /* ConditionalExpression */: + case 195 /* NonNullExpression */: + return visitNode(cbNode, node.expression); + case 187 /* ConditionalExpression */: return visitNode(cbNode, node.condition) || visitNode(cbNode, node.questionToken) || visitNode(cbNode, node.whenTrue) || visitNode(cbNode, node.colonToken) || visitNode(cbNode, node.whenFalse); - case 189 /* SpreadElementExpression */: + case 190 /* SpreadElementExpression */: return visitNode(cbNode, node.expression); - case 196 /* Block */: - case 223 /* ModuleBlock */: + case 198 /* Block */: + case 225 /* ModuleBlock */: return visitNodes(cbNodes, node.statements); - case 252 /* SourceFile */: + case 255 /* SourceFile */: return visitNodes(cbNodes, node.statements) || visitNode(cbNode, node.endOfFileToken); - case 197 /* VariableStatement */: + case 199 /* VariableStatement */: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.declarationList); - case 216 /* VariableDeclarationList */: + case 218 /* VariableDeclarationList */: return visitNodes(cbNodes, node.declarations); - case 199 /* ExpressionStatement */: + case 201 /* ExpressionStatement */: return visitNode(cbNode, node.expression); - case 200 /* IfStatement */: + case 202 /* IfStatement */: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.thenStatement) || visitNode(cbNode, node.elseStatement); - case 201 /* DoStatement */: + case 203 /* DoStatement */: return visitNode(cbNode, node.statement) || visitNode(cbNode, node.expression); - case 202 /* WhileStatement */: + case 204 /* WhileStatement */: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.statement); - case 203 /* ForStatement */: + case 205 /* ForStatement */: return visitNode(cbNode, node.initializer) || visitNode(cbNode, node.condition) || visitNode(cbNode, node.incrementor) || visitNode(cbNode, node.statement); - case 204 /* ForInStatement */: + case 206 /* ForInStatement */: return visitNode(cbNode, node.initializer) || visitNode(cbNode, node.expression) || visitNode(cbNode, node.statement); - case 205 /* ForOfStatement */: + case 207 /* ForOfStatement */: return visitNode(cbNode, node.initializer) || visitNode(cbNode, node.expression) || visitNode(cbNode, node.statement); - case 206 /* ContinueStatement */: - case 207 /* BreakStatement */: + case 208 /* ContinueStatement */: + case 209 /* BreakStatement */: return visitNode(cbNode, node.label); - case 208 /* ReturnStatement */: + case 210 /* ReturnStatement */: return visitNode(cbNode, node.expression); - case 209 /* WithStatement */: + case 211 /* WithStatement */: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.statement); - case 210 /* SwitchStatement */: + case 212 /* SwitchStatement */: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.caseBlock); - case 224 /* CaseBlock */: + case 226 /* CaseBlock */: return visitNodes(cbNodes, node.clauses); - case 245 /* CaseClause */: + case 248 /* CaseClause */: return visitNode(cbNode, node.expression) || visitNodes(cbNodes, node.statements); - case 246 /* DefaultClause */: + case 249 /* DefaultClause */: return visitNodes(cbNodes, node.statements); - case 211 /* LabeledStatement */: + case 213 /* LabeledStatement */: return visitNode(cbNode, node.label) || visitNode(cbNode, node.statement); - case 212 /* ThrowStatement */: + case 214 /* ThrowStatement */: return visitNode(cbNode, node.expression); - case 213 /* TryStatement */: + case 215 /* TryStatement */: return visitNode(cbNode, node.tryBlock) || visitNode(cbNode, node.catchClause) || visitNode(cbNode, node.finallyBlock); - case 248 /* CatchClause */: + case 251 /* CatchClause */: return visitNode(cbNode, node.variableDeclaration) || visitNode(cbNode, node.block); - case 141 /* Decorator */: + case 142 /* Decorator */: return visitNode(cbNode, node.expression); - case 218 /* ClassDeclaration */: - case 190 /* ClassExpression */: + case 220 /* ClassDeclaration */: + case 191 /* ClassExpression */: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || visitNodes(cbNodes, node.typeParameters) || visitNodes(cbNodes, node.heritageClauses) || visitNodes(cbNodes, node.members); - case 219 /* InterfaceDeclaration */: + case 221 /* InterfaceDeclaration */: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || visitNodes(cbNodes, node.typeParameters) || visitNodes(cbNodes, node.heritageClauses) || visitNodes(cbNodes, node.members); - case 220 /* TypeAliasDeclaration */: + case 222 /* TypeAliasDeclaration */: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || visitNodes(cbNodes, node.typeParameters) || visitNode(cbNode, node.type); - case 221 /* EnumDeclaration */: + case 223 /* EnumDeclaration */: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || visitNodes(cbNodes, node.members); - case 251 /* EnumMember */: + case 254 /* EnumMember */: return visitNode(cbNode, node.name) || visitNode(cbNode, node.initializer); - case 222 /* ModuleDeclaration */: + case 224 /* ModuleDeclaration */: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || visitNode(cbNode, node.body); - case 225 /* ImportEqualsDeclaration */: + case 228 /* ImportEqualsDeclaration */: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || visitNode(cbNode, node.moduleReference); - case 226 /* ImportDeclaration */: + case 229 /* ImportDeclaration */: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.importClause) || visitNode(cbNode, node.moduleSpecifier); - case 227 /* ImportClause */: + case 230 /* ImportClause */: return visitNode(cbNode, node.name) || visitNode(cbNode, node.namedBindings); - case 228 /* NamespaceImport */: + case 227 /* GlobalModuleExportDeclaration */: return visitNode(cbNode, node.name); - case 229 /* NamedImports */: - case 233 /* NamedExports */: + case 231 /* NamespaceImport */: + return visitNode(cbNode, node.name); + case 232 /* NamedImports */: + case 236 /* NamedExports */: return visitNodes(cbNodes, node.elements); - case 232 /* ExportDeclaration */: + case 235 /* ExportDeclaration */: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.exportClause) || visitNode(cbNode, node.moduleSpecifier); - case 230 /* ImportSpecifier */: - case 234 /* ExportSpecifier */: + case 233 /* ImportSpecifier */: + case 237 /* ExportSpecifier */: return visitNode(cbNode, node.propertyName) || visitNode(cbNode, node.name); - case 231 /* ExportAssignment */: + case 234 /* ExportAssignment */: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.expression); - case 187 /* TemplateExpression */: + case 188 /* TemplateExpression */: return visitNode(cbNode, node.head) || visitNodes(cbNodes, node.templateSpans); - case 194 /* TemplateSpan */: + case 196 /* TemplateSpan */: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.literal); - case 138 /* ComputedPropertyName */: + case 139 /* ComputedPropertyName */: return visitNode(cbNode, node.expression); - case 247 /* HeritageClause */: + case 250 /* HeritageClause */: return visitNodes(cbNodes, node.types); - case 192 /* ExpressionWithTypeArguments */: + case 193 /* ExpressionWithTypeArguments */: return visitNode(cbNode, node.expression) || visitNodes(cbNodes, node.typeArguments); - case 236 /* ExternalModuleReference */: + case 239 /* ExternalModuleReference */: return visitNode(cbNode, node.expression); - case 235 /* MissingDeclaration */: + case 238 /* MissingDeclaration */: return visitNodes(cbNodes, node.decorators); - case 237 /* JsxElement */: + case 240 /* JsxElement */: return visitNode(cbNode, node.openingElement) || visitNodes(cbNodes, node.children) || visitNode(cbNode, node.closingElement); - case 238 /* JsxSelfClosingElement */: - case 239 /* JsxOpeningElement */: + case 241 /* JsxSelfClosingElement */: + case 242 /* JsxOpeningElement */: return visitNode(cbNode, node.tagName) || visitNodes(cbNodes, node.attributes); - case 242 /* JsxAttribute */: + case 245 /* JsxAttribute */: return visitNode(cbNode, node.name) || visitNode(cbNode, node.initializer); - case 243 /* JsxSpreadAttribute */: + case 246 /* JsxSpreadAttribute */: return visitNode(cbNode, node.expression); - case 244 /* JsxExpression */: + case 247 /* JsxExpression */: return visitNode(cbNode, node.expression); - case 241 /* JsxClosingElement */: + case 244 /* JsxClosingElement */: return visitNode(cbNode, node.tagName); - case 253 /* JSDocTypeExpression */: + case 256 /* JSDocTypeExpression */: return visitNode(cbNode, node.type); - case 257 /* JSDocUnionType */: + case 260 /* JSDocUnionType */: return visitNodes(cbNodes, node.types); - case 258 /* JSDocTupleType */: + case 261 /* JSDocTupleType */: return visitNodes(cbNodes, node.types); - case 256 /* JSDocArrayType */: + case 259 /* JSDocArrayType */: return visitNode(cbNode, node.elementType); - case 260 /* JSDocNonNullableType */: + case 263 /* JSDocNonNullableType */: return visitNode(cbNode, node.type); - case 259 /* JSDocNullableType */: + case 262 /* JSDocNullableType */: return visitNode(cbNode, node.type); - case 261 /* JSDocRecordType */: + case 264 /* JSDocRecordType */: return visitNodes(cbNodes, node.members); - case 263 /* JSDocTypeReference */: + case 266 /* JSDocTypeReference */: return visitNode(cbNode, node.name) || visitNodes(cbNodes, node.typeArguments); - case 264 /* JSDocOptionalType */: + case 267 /* JSDocOptionalType */: return visitNode(cbNode, node.type); - case 265 /* JSDocFunctionType */: + case 268 /* JSDocFunctionType */: return visitNodes(cbNodes, node.parameters) || visitNode(cbNode, node.type); - case 266 /* JSDocVariadicType */: + case 269 /* JSDocVariadicType */: return visitNode(cbNode, node.type); - case 267 /* JSDocConstructorType */: + case 270 /* JSDocConstructorType */: return visitNode(cbNode, node.type); - case 268 /* JSDocThisType */: + case 271 /* JSDocThisType */: return visitNode(cbNode, node.type); - case 262 /* JSDocRecordMember */: + case 265 /* JSDocRecordMember */: return visitNode(cbNode, node.name) || visitNode(cbNode, node.type); - case 269 /* JSDocComment */: + case 272 /* JSDocComment */: return visitNodes(cbNodes, node.tags); - case 271 /* JSDocParameterTag */: + case 274 /* JSDocParameterTag */: return visitNode(cbNode, node.preParameterName) || visitNode(cbNode, node.typeExpression) || visitNode(cbNode, node.postParameterName); - case 272 /* JSDocReturnTag */: + case 275 /* JSDocReturnTag */: return visitNode(cbNode, node.typeExpression); - case 273 /* JSDocTypeTag */: + case 276 /* JSDocTypeTag */: return visitNode(cbNode, node.typeExpression); - case 274 /* JSDocTemplateTag */: + case 277 /* JSDocTemplateTag */: return visitNodes(cbNodes, node.typeParameters); } } @@ -7616,23 +7836,10 @@ var ts; return result; } ts.createSourceFile = createSourceFile; - /* @internal */ - function getScriptKindFromFileName(fileName) { - var ext = fileName.substr(fileName.lastIndexOf(".")); - switch (ext.toLowerCase()) { - case ".js": - return 1 /* JS */; - case ".jsx": - return 2 /* JSX */; - case ".ts": - return 3 /* TS */; - case ".tsx": - return 4 /* TSX */; - default: - return 3 /* TS */; - } + function isExternalModule(file) { + return file.externalModuleIndicator !== undefined; } - ts.getScriptKindFromFileName = getScriptKindFromFileName; + ts.isExternalModule = isExternalModule; // Produces a new SourceFile for the 'newText' provided. The 'textChangeRange' parameter // indicates what changed between the 'text' that this SourceFile has and the 'newText'. // The SourceFile will be created with the compiler attempting to reuse as many nodes from @@ -7754,12 +7961,7 @@ var ts; // attached to the EOF token. var parseErrorBeforeNextFinishedNode = false; function parseSourceFile(fileName, _sourceText, languageVersion, _syntaxCursor, setParentNodes, scriptKind) { - // Using scriptKind as a condition handles both: - // - 'scriptKind' is unspecified and thus it is `undefined` - // - 'scriptKind' is set and it is `Unknown` (0) - // If the 'scriptKind' is 'undefined' or 'Unknown' then attempt - // to get the ScriptKind from the file name. - scriptKind = scriptKind ? scriptKind : getScriptKindFromFileName(fileName); + scriptKind = ts.ensureScriptKind(fileName, scriptKind); initializeState(fileName, _sourceText, languageVersion, _syntaxCursor, scriptKind); var result = parseSourceFileWorker(fileName, languageVersion, setParentNodes, scriptKind); clearState(); @@ -7858,7 +8060,7 @@ var ts; function createSourceFile(fileName, languageVersion, scriptKind) { // code from createNode is inlined here so createNode won't have to deal with special case of creating source files // this is quite rare comparing to other nodes and createNode should be as fast as possible - var sourceFile = new SourceFileConstructor(252 /* SourceFile */, /*pos*/ 0, /* end */ sourceText.length); + var sourceFile = new SourceFileConstructor(255 /* SourceFile */, /*pos*/ 0, /* end */ sourceText.length); nodeCount++; sourceFile.text = sourceText; sourceFile.bindDiagnostics = []; @@ -8211,7 +8413,7 @@ var ts; // PropertyName [Yield]: // LiteralPropertyName // ComputedPropertyName[?Yield] - var node = createNode(138 /* ComputedPropertyName */); + var node = createNode(139 /* ComputedPropertyName */); parseExpected(19 /* OpenBracketToken */); // We parse any expression (including a comma expression). But the grammar // says that only an assignment expression is allowed, so the grammar checker @@ -8240,7 +8442,7 @@ var ts; if (token === 77 /* DefaultKeyword */) { return lookAhead(nextTokenIsClassOrFunction); } - return token !== 37 /* AsteriskToken */ && token !== 15 /* OpenBraceToken */ && canFollowModifier(); + return token !== 37 /* AsteriskToken */ && token !== 116 /* AsKeyword */ && token !== 15 /* OpenBraceToken */ && canFollowModifier(); } if (token === 77 /* DefaultKeyword */) { return nextTokenIsClassOrFunction(); @@ -8532,7 +8734,7 @@ var ts; // differently depending on what mode it is in. // // This also applies to all our other context flags as well. - var nodeContextFlags = node.flags & 62914560 /* ContextFlags */; + var nodeContextFlags = node.flags & 197132288 /* ContextFlags */; if (nodeContextFlags !== contextFlags) { return undefined; } @@ -8612,14 +8814,14 @@ var ts; function isReusableClassMember(node) { if (node) { switch (node.kind) { - case 146 /* Constructor */: - case 151 /* IndexSignature */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: - case 143 /* PropertyDeclaration */: - case 195 /* SemicolonClassElement */: + case 147 /* Constructor */: + case 152 /* IndexSignature */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: + case 144 /* PropertyDeclaration */: + case 197 /* SemicolonClassElement */: return true; - case 145 /* MethodDeclaration */: + case 146 /* MethodDeclaration */: // Method declarations are not necessarily reusable. An object-literal // may have a method calls "constructor(...)" and we must reparse that // into an actual .ConstructorDeclaration. @@ -8634,8 +8836,8 @@ var ts; function isReusableSwitchClause(node) { if (node) { switch (node.kind) { - case 245 /* CaseClause */: - case 246 /* DefaultClause */: + case 248 /* CaseClause */: + case 249 /* DefaultClause */: return true; } } @@ -8644,58 +8846,58 @@ var ts; function isReusableStatement(node) { if (node) { switch (node.kind) { - case 217 /* FunctionDeclaration */: - case 197 /* VariableStatement */: - case 196 /* Block */: - case 200 /* IfStatement */: - case 199 /* ExpressionStatement */: - case 212 /* ThrowStatement */: - case 208 /* ReturnStatement */: - case 210 /* SwitchStatement */: - case 207 /* BreakStatement */: - case 206 /* ContinueStatement */: - case 204 /* ForInStatement */: - case 205 /* ForOfStatement */: - case 203 /* ForStatement */: - case 202 /* WhileStatement */: - case 209 /* WithStatement */: - case 198 /* EmptyStatement */: - case 213 /* TryStatement */: - case 211 /* LabeledStatement */: - case 201 /* DoStatement */: - case 214 /* DebuggerStatement */: - case 226 /* ImportDeclaration */: - case 225 /* ImportEqualsDeclaration */: - case 232 /* ExportDeclaration */: - case 231 /* ExportAssignment */: - case 222 /* ModuleDeclaration */: - case 218 /* ClassDeclaration */: - case 219 /* InterfaceDeclaration */: - case 221 /* EnumDeclaration */: - case 220 /* TypeAliasDeclaration */: + case 219 /* FunctionDeclaration */: + case 199 /* VariableStatement */: + case 198 /* Block */: + case 202 /* IfStatement */: + case 201 /* ExpressionStatement */: + case 214 /* ThrowStatement */: + case 210 /* ReturnStatement */: + case 212 /* SwitchStatement */: + case 209 /* BreakStatement */: + case 208 /* ContinueStatement */: + case 206 /* ForInStatement */: + case 207 /* ForOfStatement */: + case 205 /* ForStatement */: + case 204 /* WhileStatement */: + case 211 /* WithStatement */: + case 200 /* EmptyStatement */: + case 215 /* TryStatement */: + case 213 /* LabeledStatement */: + case 203 /* DoStatement */: + case 216 /* DebuggerStatement */: + case 229 /* ImportDeclaration */: + case 228 /* ImportEqualsDeclaration */: + case 235 /* ExportDeclaration */: + case 234 /* ExportAssignment */: + case 224 /* ModuleDeclaration */: + case 220 /* ClassDeclaration */: + case 221 /* InterfaceDeclaration */: + case 223 /* EnumDeclaration */: + case 222 /* TypeAliasDeclaration */: return true; } } return false; } function isReusableEnumMember(node) { - return node.kind === 251 /* EnumMember */; + return node.kind === 254 /* EnumMember */; } function isReusableTypeMember(node) { if (node) { switch (node.kind) { - case 150 /* ConstructSignature */: - case 144 /* MethodSignature */: - case 151 /* IndexSignature */: - case 142 /* PropertySignature */: - case 149 /* CallSignature */: + case 151 /* ConstructSignature */: + case 145 /* MethodSignature */: + case 152 /* IndexSignature */: + case 143 /* PropertySignature */: + case 150 /* CallSignature */: return true; } } return false; } function isReusableVariableDeclaration(node) { - if (node.kind !== 215 /* VariableDeclaration */) { + if (node.kind !== 217 /* VariableDeclaration */) { return false; } // Very subtle incremental parsing bug. Consider the following code: @@ -8716,7 +8918,7 @@ var ts; return variableDeclarator.initializer === undefined; } function isReusableParameter(node) { - if (node.kind !== 140 /* Parameter */) { + if (node.kind !== 141 /* Parameter */) { return false; } // See the comment in isReusableVariableDeclaration for why we do this. @@ -8833,7 +9035,7 @@ var ts; function parseEntityName(allowReservedWords, diagnosticMessage) { var entity = parseIdentifier(diagnosticMessage); while (parseOptional(21 /* DotToken */)) { - var node = createNode(137 /* QualifiedName */, entity.pos); + var node = createNode(138 /* QualifiedName */, entity.pos); node.left = entity; node.right = parseRightSideOfDot(allowReservedWords); entity = finishNode(node); @@ -8872,7 +9074,7 @@ var ts; return allowIdentifierNames ? parseIdentifierName() : parseIdentifier(); } function parseTemplateExpression() { - var template = createNode(187 /* TemplateExpression */); + var template = createNode(188 /* TemplateExpression */); template.head = parseTemplateLiteralFragment(); ts.Debug.assert(template.head.kind === 12 /* TemplateHead */, "Template head has wrong token kind"); var templateSpans = []; @@ -8885,7 +9087,7 @@ var ts; return finishNode(template); } function parseTemplateSpan() { - var span = createNode(194 /* TemplateSpan */); + var span = createNode(196 /* TemplateSpan */); span.expression = allowInAnd(parseExpression); var literal; if (token === 16 /* CloseBraceToken */) { @@ -8899,7 +9101,7 @@ var ts; return finishNode(span); } function parseStringLiteralTypeNode() { - return parseLiteralLikeNode(164 /* StringLiteralType */, /*internName*/ true); + return parseLiteralLikeNode(165 /* StringLiteralType */, /*internName*/ true); } function parseLiteralNode(internName) { return parseLiteralLikeNode(token, internName); @@ -8936,7 +9138,7 @@ var ts; // TYPES function parseTypeReference() { var typeName = parseEntityName(/*allowReservedWords*/ false, ts.Diagnostics.Type_expected); - var node = createNode(153 /* TypeReference */, typeName.pos); + var node = createNode(154 /* TypeReference */, typeName.pos); node.typeName = typeName; if (!scanner.hasPrecedingLineBreak() && token === 25 /* LessThanToken */) { node.typeArguments = parseBracketedList(18 /* TypeArguments */, parseType, 25 /* LessThanToken */, 27 /* GreaterThanToken */); @@ -8945,24 +9147,24 @@ var ts; } function parseThisTypePredicate(lhs) { nextToken(); - var node = createNode(152 /* TypePredicate */, lhs.pos); + var node = createNode(153 /* TypePredicate */, lhs.pos); node.parameterName = lhs; node.type = parseType(); return finishNode(node); } function parseThisTypeNode() { - var node = createNode(163 /* ThisType */); + var node = createNode(164 /* ThisType */); nextToken(); return finishNode(node); } function parseTypeQuery() { - var node = createNode(156 /* TypeQuery */); + var node = createNode(157 /* TypeQuery */); parseExpected(101 /* TypeOfKeyword */); node.exprName = parseEntityName(/*allowReservedWords*/ true); return finishNode(node); } function parseTypeParameter() { - var node = createNode(139 /* TypeParameter */); + var node = createNode(140 /* TypeParameter */); node.name = parseIdentifier(); if (parseOptional(83 /* ExtendsKeyword */)) { // It's not uncommon for people to write improper constraints to a generic. If the @@ -8997,7 +9199,7 @@ var ts; return undefined; } function isStartOfParameter() { - return token === 22 /* DotDotDotToken */ || isIdentifierOrPattern() || ts.isModifierKind(token) || token === 55 /* AtToken */; + return token === 22 /* DotDotDotToken */ || isIdentifierOrPattern() || ts.isModifierKind(token) || token === 55 /* AtToken */ || token === 97 /* ThisKeyword */; } function setModifiers(node, modifiers) { if (modifiers) { @@ -9006,7 +9208,12 @@ var ts; } } function parseParameter() { - var node = createNode(140 /* Parameter */); + var node = createNode(141 /* Parameter */); + if (token === 97 /* ThisKeyword */) { + node.name = createIdentifier(/*isIdentifier*/ true, undefined); + node.type = parseParameterType(); + return finishNode(node); + } node.decorators = parseDecorators(); setModifiers(node, parseModifiers()); node.dotDotDotToken = parseOptionalToken(22 /* DotDotDotToken */); @@ -9100,7 +9307,7 @@ var ts; } function parseSignatureMember(kind) { var node = createNode(kind); - if (kind === 150 /* ConstructSignature */) { + if (kind === 151 /* ConstructSignature */) { parseExpected(92 /* NewKeyword */); } fillSignature(54 /* ColonToken */, /*yieldContext*/ false, /*awaitContext*/ false, /*requireCompleteParameterList*/ false, node); @@ -9164,7 +9371,7 @@ var ts; return token === 54 /* ColonToken */ || token === 24 /* CommaToken */ || token === 20 /* CloseBracketToken */; } function parseIndexSignatureDeclaration(fullStart, decorators, modifiers) { - var node = createNode(151 /* IndexSignature */, fullStart); + var node = createNode(152 /* IndexSignature */, fullStart); node.decorators = decorators; setModifiers(node, modifiers); node.parameters = parseBracketedList(16 /* Parameters */, parseParameter, 19 /* OpenBracketToken */, 20 /* CloseBracketToken */); @@ -9176,7 +9383,7 @@ var ts; var name = parsePropertyName(); var questionToken = parseOptionalToken(53 /* QuestionToken */); if (token === 17 /* OpenParenToken */ || token === 25 /* LessThanToken */) { - var method = createNode(144 /* MethodSignature */, fullStart); + var method = createNode(145 /* MethodSignature */, fullStart); setModifiers(method, modifiers); method.name = name; method.questionToken = questionToken; @@ -9187,7 +9394,7 @@ var ts; return finishNode(method); } else { - var property = createNode(142 /* PropertySignature */, fullStart); + var property = createNode(143 /* PropertySignature */, fullStart); setModifiers(property, modifiers); property.name = name; property.questionToken = questionToken; @@ -9235,10 +9442,10 @@ var ts; } function parseTypeMember() { if (token === 17 /* OpenParenToken */ || token === 25 /* LessThanToken */) { - return parseSignatureMember(149 /* CallSignature */); + return parseSignatureMember(150 /* CallSignature */); } if (token === 92 /* NewKeyword */ && lookAhead(isStartOfConstructSignature)) { - return parseSignatureMember(150 /* ConstructSignature */); + return parseSignatureMember(151 /* ConstructSignature */); } var fullStart = getNodePos(); var modifiers = parseModifiers(); @@ -9252,7 +9459,7 @@ var ts; return token === 17 /* OpenParenToken */ || token === 25 /* LessThanToken */; } function parseTypeLiteral() { - var node = createNode(157 /* TypeLiteral */); + var node = createNode(158 /* TypeLiteral */); node.members = parseObjectTypeMembers(); return finishNode(node); } @@ -9268,12 +9475,12 @@ var ts; return members; } function parseTupleType() { - var node = createNode(159 /* TupleType */); + var node = createNode(160 /* TupleType */); node.elementTypes = parseBracketedList(19 /* TupleElementTypes */, parseType, 19 /* OpenBracketToken */, 20 /* CloseBracketToken */); return finishNode(node); } function parseParenthesizedType() { - var node = createNode(162 /* ParenthesizedType */); + var node = createNode(163 /* ParenthesizedType */); parseExpected(17 /* OpenParenToken */); node.type = parseType(); parseExpected(18 /* CloseParenToken */); @@ -9281,7 +9488,7 @@ var ts; } function parseFunctionOrConstructorType(kind) { var node = createNode(kind); - if (kind === 155 /* ConstructorType */) { + if (kind === 156 /* ConstructorType */) { parseExpected(92 /* NewKeyword */); } fillSignature(34 /* EqualsGreaterThanToken */, /*yieldContext*/ false, /*awaitContext*/ false, /*requireCompleteParameterList*/ false, node); @@ -9298,12 +9505,14 @@ var ts; case 129 /* NumberKeyword */: case 120 /* BooleanKeyword */: case 132 /* SymbolKeyword */: + case 134 /* UndefinedKeyword */: // If these are followed by a dot, then parse these out as a dotted type reference instead. var node = tryParse(parseKeywordAndNoDot); return node || parseTypeReference(); case 9 /* StringLiteral */: return parseStringLiteralTypeNode(); case 103 /* VoidKeyword */: + case 93 /* NullKeyword */: return parseTokenNode(); case 97 /* ThisKeyword */: { var thisKeyword = parseThisTypeNode(); @@ -9334,6 +9543,8 @@ var ts; case 120 /* BooleanKeyword */: case 132 /* SymbolKeyword */: case 103 /* VoidKeyword */: + case 134 /* UndefinedKeyword */: + case 93 /* NullKeyword */: case 97 /* ThisKeyword */: case 101 /* TypeOfKeyword */: case 15 /* OpenBraceToken */: @@ -9358,7 +9569,7 @@ var ts; var type = parseNonArrayType(); while (!scanner.hasPrecedingLineBreak() && parseOptional(19 /* OpenBracketToken */)) { parseExpected(20 /* CloseBracketToken */); - var node = createNode(158 /* ArrayType */, type.pos); + var node = createNode(159 /* ArrayType */, type.pos); node.elementType = type; type = finishNode(node); } @@ -9380,10 +9591,10 @@ var ts; return type; } function parseIntersectionTypeOrHigher() { - return parseUnionOrIntersectionType(161 /* IntersectionType */, parseArrayTypeOrHigher, 46 /* AmpersandToken */); + return parseUnionOrIntersectionType(162 /* IntersectionType */, parseArrayTypeOrHigher, 46 /* AmpersandToken */); } function parseUnionTypeOrHigher() { - return parseUnionOrIntersectionType(160 /* UnionType */, parseIntersectionTypeOrHigher, 47 /* BarToken */); + return parseUnionOrIntersectionType(161 /* UnionType */, parseIntersectionTypeOrHigher, 47 /* BarToken */); } function isStartOfFunctionType() { if (token === 25 /* LessThanToken */) { @@ -9396,7 +9607,7 @@ var ts; // Skip modifiers parseModifiers(); } - if (isIdentifier()) { + if (isIdentifier() || token === 97 /* ThisKeyword */) { nextToken(); return true; } @@ -9440,7 +9651,7 @@ var ts; var typePredicateVariable = isIdentifier() && tryParse(parseTypePredicatePrefix); var type = parseType(); if (typePredicateVariable) { - var node = createNode(152 /* TypePredicate */, typePredicateVariable.pos); + var node = createNode(153 /* TypePredicate */, typePredicateVariable.pos); node.parameterName = typePredicateVariable; node.type = type; return finishNode(node); @@ -9463,10 +9674,10 @@ var ts; } function parseTypeWorker() { if (isStartOfFunctionType()) { - return parseFunctionOrConstructorType(154 /* FunctionType */); + return parseFunctionOrConstructorType(155 /* FunctionType */); } if (token === 92 /* NewKeyword */) { - return parseFunctionOrConstructorType(155 /* ConstructorType */); + return parseFunctionOrConstructorType(156 /* ConstructorType */); } return parseUnionTypeOrHigher(); } @@ -9659,7 +9870,7 @@ var ts; return !scanner.hasPrecedingLineBreak() && isIdentifier(); } function parseYieldExpression() { - var node = createNode(188 /* YieldExpression */); + var node = createNode(189 /* YieldExpression */); // YieldExpression[In] : // yield // yield [no LineTerminator here] [Lexical goal InputElementRegExp]AssignmentExpression[?In, Yield] @@ -9679,8 +9890,8 @@ var ts; } function parseSimpleArrowFunctionExpression(identifier) { ts.Debug.assert(token === 34 /* EqualsGreaterThanToken */, "parseSimpleArrowFunctionExpression should only have been called if we had a =>"); - var node = createNode(178 /* ArrowFunction */, identifier.pos); - var parameter = createNode(140 /* Parameter */, identifier.pos); + var node = createNode(179 /* ArrowFunction */, identifier.pos); + var parameter = createNode(141 /* Parameter */, identifier.pos); parameter.name = identifier; finishNode(parameter); node.parameters = [parameter]; @@ -9832,7 +10043,7 @@ var ts; return parseParenthesizedArrowFunctionExpressionHead(/*allowAmbiguity*/ false); } function parseParenthesizedArrowFunctionExpressionHead(allowAmbiguity) { - var node = createNode(178 /* ArrowFunction */); + var node = createNode(179 /* ArrowFunction */); setModifiers(node, parseModifiersForArrowFunction()); var isAsync = !!(node.flags & 256 /* Async */); // Arrow functions are never generators. @@ -9898,7 +10109,7 @@ var ts; } // Note: we explicitly 'allowIn' in the whenTrue part of the condition expression, and // we do not that for the 'whenFalse' part. - var node = createNode(186 /* ConditionalExpression */, leftOperand.pos); + var node = createNode(187 /* ConditionalExpression */, leftOperand.pos); node.condition = leftOperand; node.questionToken = questionToken; node.whenTrue = doOutsideOfContext(disallowInAndDecoratorContext, parseAssignmentExpressionOrHigher); @@ -9911,7 +10122,7 @@ var ts; return parseBinaryExpressionRest(precedence, leftOperand); } function isInOrOfKeyword(t) { - return t === 90 /* InKeyword */ || t === 136 /* OfKeyword */; + return t === 90 /* InKeyword */ || t === 137 /* OfKeyword */; } function parseBinaryExpressionRest(precedence, leftOperand) { while (true) { @@ -10019,39 +10230,39 @@ var ts; return -1; } function makeBinaryExpression(left, operatorToken, right) { - var node = createNode(185 /* BinaryExpression */, left.pos); + var node = createNode(186 /* BinaryExpression */, left.pos); node.left = left; node.operatorToken = operatorToken; node.right = right; return finishNode(node); } function makeAsExpression(left, right) { - var node = createNode(193 /* AsExpression */, left.pos); + var node = createNode(194 /* AsExpression */, left.pos); node.expression = left; node.type = right; return finishNode(node); } function parsePrefixUnaryExpression() { - var node = createNode(183 /* PrefixUnaryExpression */); + var node = createNode(184 /* PrefixUnaryExpression */); node.operator = token; nextToken(); node.operand = parseSimpleUnaryExpression(); return finishNode(node); } function parseDeleteExpression() { - var node = createNode(179 /* DeleteExpression */); + var node = createNode(180 /* DeleteExpression */); nextToken(); node.expression = parseSimpleUnaryExpression(); return finishNode(node); } function parseTypeOfExpression() { - var node = createNode(180 /* TypeOfExpression */); + var node = createNode(181 /* TypeOfExpression */); nextToken(); node.expression = parseSimpleUnaryExpression(); return finishNode(node); } function parseVoidExpression() { - var node = createNode(181 /* VoidExpression */); + var node = createNode(182 /* VoidExpression */); nextToken(); node.expression = parseSimpleUnaryExpression(); return finishNode(node); @@ -10067,7 +10278,7 @@ var ts; return false; } function parseAwaitExpression() { - var node = createNode(182 /* AwaitExpression */); + var node = createNode(183 /* AwaitExpression */); nextToken(); node.expression = parseSimpleUnaryExpression(); return finishNode(node); @@ -10093,7 +10304,7 @@ var ts; var simpleUnaryExpression = parseSimpleUnaryExpression(); if (token === 38 /* AsteriskAsteriskToken */) { var start = ts.skipTrivia(sourceText, simpleUnaryExpression.pos); - if (simpleUnaryExpression.kind === 175 /* TypeAssertionExpression */) { + if (simpleUnaryExpression.kind === 176 /* TypeAssertionExpression */) { parseErrorAtPosition(start, simpleUnaryExpression.end - start, ts.Diagnostics.A_type_assertion_expression_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_expression_Consider_enclosing_the_expression_in_parentheses); } else { @@ -10183,7 +10394,7 @@ var ts; */ function parseIncrementExpression() { if (token === 41 /* PlusPlusToken */ || token === 42 /* MinusMinusToken */) { - var node = createNode(183 /* PrefixUnaryExpression */); + var node = createNode(184 /* PrefixUnaryExpression */); node.operator = token; nextToken(); node.operand = parseLeftHandSideExpressionOrHigher(); @@ -10196,7 +10407,7 @@ var ts; var expression = parseLeftHandSideExpressionOrHigher(); ts.Debug.assert(ts.isLeftHandSideExpression(expression)); if ((token === 41 /* PlusPlusToken */ || token === 42 /* MinusMinusToken */) && !scanner.hasPrecedingLineBreak()) { - var node = createNode(184 /* PostfixUnaryExpression */, expression.pos); + var node = createNode(185 /* PostfixUnaryExpression */, expression.pos); node.operand = expression; node.operator = token; nextToken(); @@ -10300,7 +10511,7 @@ var ts; } // If we have seen "super" it must be followed by '(' or '.'. // If it wasn't then just try to parse out a '.' and report an error. - var node = createNode(170 /* PropertyAccessExpression */, expression.pos); + var node = createNode(171 /* PropertyAccessExpression */, expression.pos); node.expression = expression; node.dotToken = parseExpectedToken(21 /* DotToken */, /*reportAtCurrentPosition*/ false, ts.Diagnostics.super_must_be_followed_by_an_argument_list_or_member_access); node.name = parseRightSideOfDot(/*allowIdentifierNames*/ true); @@ -10319,8 +10530,8 @@ var ts; function parseJsxElementOrSelfClosingElement(inExpressionContext) { var opening = parseJsxOpeningOrSelfClosingElement(inExpressionContext); var result; - if (opening.kind === 239 /* JsxOpeningElement */) { - var node = createNode(237 /* JsxElement */, opening.pos); + if (opening.kind === 242 /* JsxOpeningElement */) { + var node = createNode(240 /* JsxElement */, opening.pos); node.openingElement = opening; node.children = parseJsxChildren(node.openingElement.tagName); node.closingElement = parseJsxClosingElement(inExpressionContext); @@ -10330,7 +10541,7 @@ var ts; result = finishNode(node); } else { - ts.Debug.assert(opening.kind === 238 /* JsxSelfClosingElement */); + ts.Debug.assert(opening.kind === 241 /* JsxSelfClosingElement */); // Nothing else to do for self-closing elements result = opening; } @@ -10345,7 +10556,7 @@ var ts; var invalidElement = tryParse(function () { return parseJsxElementOrSelfClosingElement(/*inExpressionContext*/ true); }); if (invalidElement) { parseErrorAtCurrentToken(ts.Diagnostics.JSX_expressions_must_have_one_parent_element); - var badNode = createNode(185 /* BinaryExpression */, result.pos); + var badNode = createNode(186 /* BinaryExpression */, result.pos); badNode.end = invalidElement.end; badNode.left = result; badNode.right = invalidElement; @@ -10357,13 +10568,13 @@ var ts; return result; } function parseJsxText() { - var node = createNode(240 /* JsxText */, scanner.getStartPos()); + var node = createNode(243 /* JsxText */, scanner.getStartPos()); token = scanner.scanJsxToken(); return finishNode(node); } function parseJsxChild() { switch (token) { - case 240 /* JsxText */: + case 243 /* JsxText */: return parseJsxText(); case 15 /* OpenBraceToken */: return parseJsxExpression(/*inExpressionContext*/ false); @@ -10405,7 +10616,7 @@ var ts; // Closing tag, so scan the immediately-following text with the JSX scanning instead // of regular scanning to avoid treating illegal characters (e.g. '#') as immediate // scanning errors - node = createNode(239 /* JsxOpeningElement */, fullStart); + node = createNode(242 /* JsxOpeningElement */, fullStart); scanJsxText(); } else { @@ -10417,7 +10628,7 @@ var ts; parseExpected(27 /* GreaterThanToken */, /*diagnostic*/ undefined, /*shouldAdvance*/ false); scanJsxText(); } - node = createNode(238 /* JsxSelfClosingElement */, fullStart); + node = createNode(241 /* JsxSelfClosingElement */, fullStart); } node.tagName = tagName; node.attributes = attributes; @@ -10428,7 +10639,7 @@ var ts; var elementName = parseIdentifierName(); while (parseOptional(21 /* DotToken */)) { scanJsxIdentifier(); - var node = createNode(137 /* QualifiedName */, elementName.pos); + var node = createNode(138 /* QualifiedName */, elementName.pos); node.left = elementName; node.right = parseIdentifierName(); elementName = finishNode(node); @@ -10436,7 +10647,7 @@ var ts; return elementName; } function parseJsxExpression(inExpressionContext) { - var node = createNode(244 /* JsxExpression */); + var node = createNode(247 /* JsxExpression */); parseExpected(15 /* OpenBraceToken */); if (token !== 16 /* CloseBraceToken */) { node.expression = parseAssignmentExpressionOrHigher(); @@ -10455,7 +10666,7 @@ var ts; return parseJsxSpreadAttribute(); } scanJsxIdentifier(); - var node = createNode(242 /* JsxAttribute */); + var node = createNode(245 /* JsxAttribute */); node.name = parseIdentifierName(); if (parseOptional(56 /* EqualsToken */)) { switch (token) { @@ -10470,7 +10681,7 @@ var ts; return finishNode(node); } function parseJsxSpreadAttribute() { - var node = createNode(243 /* JsxSpreadAttribute */); + var node = createNode(246 /* JsxSpreadAttribute */); parseExpected(15 /* OpenBraceToken */); parseExpected(22 /* DotDotDotToken */); node.expression = parseExpression(); @@ -10478,7 +10689,7 @@ var ts; return finishNode(node); } function parseJsxClosingElement(inExpressionContext) { - var node = createNode(241 /* JsxClosingElement */); + var node = createNode(244 /* JsxClosingElement */); parseExpected(26 /* LessThanSlashToken */); node.tagName = parseJsxElementName(); if (inExpressionContext) { @@ -10491,7 +10702,7 @@ var ts; return finishNode(node); } function parseTypeAssertion() { - var node = createNode(175 /* TypeAssertionExpression */); + var node = createNode(176 /* TypeAssertionExpression */); parseExpected(25 /* LessThanToken */); node.type = parseType(); parseExpected(27 /* GreaterThanToken */); @@ -10502,16 +10713,23 @@ var ts; while (true) { var dotToken = parseOptionalToken(21 /* DotToken */); if (dotToken) { - var propertyAccess = createNode(170 /* PropertyAccessExpression */, expression.pos); + var propertyAccess = createNode(171 /* PropertyAccessExpression */, expression.pos); propertyAccess.expression = expression; propertyAccess.dotToken = dotToken; propertyAccess.name = parseRightSideOfDot(/*allowIdentifierNames*/ true); expression = finishNode(propertyAccess); continue; } + if (token === 49 /* ExclamationToken */ && !scanner.hasPrecedingLineBreak()) { + nextToken(); + var nonNullExpression = createNode(195 /* NonNullExpression */, expression.pos); + nonNullExpression.expression = expression; + expression = finishNode(nonNullExpression); + continue; + } // when in the [Decorator] context, we do not parse ElementAccess as it could be part of a ComputedPropertyName if (!inDecoratorContext() && parseOptional(19 /* OpenBracketToken */)) { - var indexedAccess = createNode(171 /* ElementAccessExpression */, expression.pos); + var indexedAccess = createNode(172 /* ElementAccessExpression */, expression.pos); indexedAccess.expression = expression; // It's not uncommon for a user to write: "new Type[]". // Check for that common pattern and report a better error message. @@ -10527,7 +10745,7 @@ var ts; continue; } if (token === 11 /* NoSubstitutionTemplateLiteral */ || token === 12 /* TemplateHead */) { - var tagExpression = createNode(174 /* TaggedTemplateExpression */, expression.pos); + var tagExpression = createNode(175 /* TaggedTemplateExpression */, expression.pos); tagExpression.tag = expression; tagExpression.template = token === 11 /* NoSubstitutionTemplateLiteral */ ? parseLiteralNode() @@ -10550,7 +10768,7 @@ var ts; if (!typeArguments) { return expression; } - var callExpr = createNode(172 /* CallExpression */, expression.pos); + var callExpr = createNode(173 /* CallExpression */, expression.pos); callExpr.expression = expression; callExpr.typeArguments = typeArguments; callExpr.arguments = parseArgumentList(); @@ -10558,7 +10776,7 @@ var ts; continue; } else if (token === 17 /* OpenParenToken */) { - var callExpr = createNode(172 /* CallExpression */, expression.pos); + var callExpr = createNode(173 /* CallExpression */, expression.pos); callExpr.expression = expression; callExpr.arguments = parseArgumentList(); expression = finishNode(callExpr); @@ -10668,28 +10886,28 @@ var ts; return parseIdentifier(ts.Diagnostics.Expression_expected); } function parseParenthesizedExpression() { - var node = createNode(176 /* ParenthesizedExpression */); + var node = createNode(177 /* ParenthesizedExpression */); parseExpected(17 /* OpenParenToken */); node.expression = allowInAnd(parseExpression); parseExpected(18 /* CloseParenToken */); return finishNode(node); } function parseSpreadElement() { - var node = createNode(189 /* SpreadElementExpression */); + var node = createNode(190 /* SpreadElementExpression */); parseExpected(22 /* DotDotDotToken */); node.expression = parseAssignmentExpressionOrHigher(); return finishNode(node); } function parseArgumentOrArrayLiteralElement() { return token === 22 /* DotDotDotToken */ ? parseSpreadElement() : - token === 24 /* CommaToken */ ? createNode(191 /* OmittedExpression */) : + token === 24 /* CommaToken */ ? createNode(192 /* OmittedExpression */) : parseAssignmentExpressionOrHigher(); } function parseArgumentExpression() { return doOutsideOfContext(disallowInAndDecoratorContext, parseArgumentOrArrayLiteralElement); } function parseArrayLiteralExpression() { - var node = createNode(168 /* ArrayLiteralExpression */); + var node = createNode(169 /* ArrayLiteralExpression */); parseExpected(19 /* OpenBracketToken */); if (scanner.hasPrecedingLineBreak()) { node.multiLine = true; @@ -10700,10 +10918,10 @@ var ts; } function tryParseAccessorDeclaration(fullStart, decorators, modifiers) { if (parseContextualModifier(123 /* GetKeyword */)) { - return parseAccessorDeclaration(147 /* GetAccessor */, fullStart, decorators, modifiers); + return addJSDocComment(parseAccessorDeclaration(148 /* GetAccessor */, fullStart, decorators, modifiers)); } else if (parseContextualModifier(130 /* SetKeyword */)) { - return parseAccessorDeclaration(148 /* SetAccessor */, fullStart, decorators, modifiers); + return parseAccessorDeclaration(149 /* SetAccessor */, fullStart, decorators, modifiers); } return undefined; } @@ -10730,7 +10948,7 @@ var ts; // this is necessary because ObjectLiteral productions are also used to cover grammar for ObjectAssignmentPattern var isShorthandPropertyAssignment = tokenIsIdentifier && (token === 24 /* CommaToken */ || token === 16 /* CloseBraceToken */ || token === 56 /* EqualsToken */); if (isShorthandPropertyAssignment) { - var shorthandDeclaration = createNode(250 /* ShorthandPropertyAssignment */, fullStart); + var shorthandDeclaration = createNode(253 /* ShorthandPropertyAssignment */, fullStart); shorthandDeclaration.name = propertyName; shorthandDeclaration.questionToken = questionToken; var equalsToken = parseOptionalToken(56 /* EqualsToken */); @@ -10741,7 +10959,7 @@ var ts; return addJSDocComment(finishNode(shorthandDeclaration)); } else { - var propertyAssignment = createNode(249 /* PropertyAssignment */, fullStart); + var propertyAssignment = createNode(252 /* PropertyAssignment */, fullStart); propertyAssignment.modifiers = modifiers; propertyAssignment.name = propertyName; propertyAssignment.questionToken = questionToken; @@ -10751,7 +10969,7 @@ var ts; } } function parseObjectLiteralExpression() { - var node = createNode(169 /* ObjectLiteralExpression */); + var node = createNode(170 /* ObjectLiteralExpression */); parseExpected(15 /* OpenBraceToken */); if (scanner.hasPrecedingLineBreak()) { node.multiLine = true; @@ -10770,7 +10988,7 @@ var ts; if (saveDecoratorContext) { setDecoratorContext(/*val*/ false); } - var node = createNode(177 /* FunctionExpression */); + var node = createNode(178 /* FunctionExpression */); setModifiers(node, parseModifiers()); parseExpected(87 /* FunctionKeyword */); node.asteriskToken = parseOptionalToken(37 /* AsteriskToken */); @@ -10792,7 +11010,7 @@ var ts; return isIdentifier() ? parseIdentifier() : undefined; } function parseNewExpression() { - var node = createNode(173 /* NewExpression */); + var node = createNode(174 /* NewExpression */); parseExpected(92 /* NewKeyword */); node.expression = parseMemberExpressionOrHigher(); node.typeArguments = tryParse(parseTypeArgumentsInExpression); @@ -10803,7 +11021,7 @@ var ts; } // STATEMENTS function parseBlock(ignoreMissingOpenBrace, diagnosticMessage) { - var node = createNode(196 /* Block */); + var node = createNode(198 /* Block */); if (parseExpected(15 /* OpenBraceToken */, diagnosticMessage) || ignoreMissingOpenBrace) { node.statements = parseList(1 /* BlockStatements */, parseStatement); parseExpected(16 /* CloseBraceToken */); @@ -10833,12 +11051,12 @@ var ts; return block; } function parseEmptyStatement() { - var node = createNode(198 /* EmptyStatement */); + var node = createNode(200 /* EmptyStatement */); parseExpected(23 /* SemicolonToken */); return finishNode(node); } function parseIfStatement() { - var node = createNode(200 /* IfStatement */); + var node = createNode(202 /* IfStatement */); parseExpected(88 /* IfKeyword */); parseExpected(17 /* OpenParenToken */); node.expression = allowInAnd(parseExpression); @@ -10848,7 +11066,7 @@ var ts; return finishNode(node); } function parseDoStatement() { - var node = createNode(201 /* DoStatement */); + var node = createNode(203 /* DoStatement */); parseExpected(79 /* DoKeyword */); node.statement = parseStatement(); parseExpected(104 /* WhileKeyword */); @@ -10863,7 +11081,7 @@ var ts; return finishNode(node); } function parseWhileStatement() { - var node = createNode(202 /* WhileStatement */); + var node = createNode(204 /* WhileStatement */); parseExpected(104 /* WhileKeyword */); parseExpected(17 /* OpenParenToken */); node.expression = allowInAnd(parseExpression); @@ -10886,21 +11104,21 @@ var ts; } var forOrForInOrForOfStatement; if (parseOptional(90 /* InKeyword */)) { - var forInStatement = createNode(204 /* ForInStatement */, pos); + var forInStatement = createNode(206 /* ForInStatement */, pos); forInStatement.initializer = initializer; forInStatement.expression = allowInAnd(parseExpression); parseExpected(18 /* CloseParenToken */); forOrForInOrForOfStatement = forInStatement; } - else if (parseOptional(136 /* OfKeyword */)) { - var forOfStatement = createNode(205 /* ForOfStatement */, pos); + else if (parseOptional(137 /* OfKeyword */)) { + var forOfStatement = createNode(207 /* ForOfStatement */, pos); forOfStatement.initializer = initializer; forOfStatement.expression = allowInAnd(parseAssignmentExpressionOrHigher); parseExpected(18 /* CloseParenToken */); forOrForInOrForOfStatement = forOfStatement; } else { - var forStatement = createNode(203 /* ForStatement */, pos); + var forStatement = createNode(205 /* ForStatement */, pos); forStatement.initializer = initializer; parseExpected(23 /* SemicolonToken */); if (token !== 23 /* SemicolonToken */ && token !== 18 /* CloseParenToken */) { @@ -10918,7 +11136,7 @@ var ts; } function parseBreakOrContinueStatement(kind) { var node = createNode(kind); - parseExpected(kind === 207 /* BreakStatement */ ? 70 /* BreakKeyword */ : 75 /* ContinueKeyword */); + parseExpected(kind === 209 /* BreakStatement */ ? 70 /* BreakKeyword */ : 75 /* ContinueKeyword */); if (!canParseSemicolon()) { node.label = parseIdentifier(); } @@ -10926,7 +11144,7 @@ var ts; return finishNode(node); } function parseReturnStatement() { - var node = createNode(208 /* ReturnStatement */); + var node = createNode(210 /* ReturnStatement */); parseExpected(94 /* ReturnKeyword */); if (!canParseSemicolon()) { node.expression = allowInAnd(parseExpression); @@ -10935,7 +11153,7 @@ var ts; return finishNode(node); } function parseWithStatement() { - var node = createNode(209 /* WithStatement */); + var node = createNode(211 /* WithStatement */); parseExpected(105 /* WithKeyword */); parseExpected(17 /* OpenParenToken */); node.expression = allowInAnd(parseExpression); @@ -10944,7 +11162,7 @@ var ts; return finishNode(node); } function parseCaseClause() { - var node = createNode(245 /* CaseClause */); + var node = createNode(248 /* CaseClause */); parseExpected(71 /* CaseKeyword */); node.expression = allowInAnd(parseExpression); parseExpected(54 /* ColonToken */); @@ -10952,7 +11170,7 @@ var ts; return finishNode(node); } function parseDefaultClause() { - var node = createNode(246 /* DefaultClause */); + var node = createNode(249 /* DefaultClause */); parseExpected(77 /* DefaultKeyword */); parseExpected(54 /* ColonToken */); node.statements = parseList(3 /* SwitchClauseStatements */, parseStatement); @@ -10962,12 +11180,12 @@ var ts; return token === 71 /* CaseKeyword */ ? parseCaseClause() : parseDefaultClause(); } function parseSwitchStatement() { - var node = createNode(210 /* SwitchStatement */); + var node = createNode(212 /* SwitchStatement */); parseExpected(96 /* SwitchKeyword */); parseExpected(17 /* OpenParenToken */); node.expression = allowInAnd(parseExpression); parseExpected(18 /* CloseParenToken */); - var caseBlock = createNode(224 /* CaseBlock */, scanner.getStartPos()); + var caseBlock = createNode(226 /* CaseBlock */, scanner.getStartPos()); parseExpected(15 /* OpenBraceToken */); caseBlock.clauses = parseList(2 /* SwitchClauses */, parseCaseOrDefaultClause); parseExpected(16 /* CloseBraceToken */); @@ -10982,7 +11200,7 @@ var ts; // directly as that might consume an expression on the following line. // We just return 'undefined' in that case. The actual error will be reported in the // grammar walker. - var node = createNode(212 /* ThrowStatement */); + var node = createNode(214 /* ThrowStatement */); parseExpected(98 /* ThrowKeyword */); node.expression = scanner.hasPrecedingLineBreak() ? undefined : allowInAnd(parseExpression); parseSemicolon(); @@ -10990,7 +11208,7 @@ var ts; } // TODO: Review for error recovery function parseTryStatement() { - var node = createNode(213 /* TryStatement */); + var node = createNode(215 /* TryStatement */); parseExpected(100 /* TryKeyword */); node.tryBlock = parseBlock(/*ignoreMissingOpenBrace*/ false); node.catchClause = token === 72 /* CatchKeyword */ ? parseCatchClause() : undefined; @@ -11003,7 +11221,7 @@ var ts; return finishNode(node); } function parseCatchClause() { - var result = createNode(248 /* CatchClause */); + var result = createNode(251 /* CatchClause */); parseExpected(72 /* CatchKeyword */); if (parseExpected(17 /* OpenParenToken */)) { result.variableDeclaration = parseVariableDeclaration(); @@ -11013,7 +11231,7 @@ var ts; return finishNode(result); } function parseDebuggerStatement() { - var node = createNode(214 /* DebuggerStatement */); + var node = createNode(216 /* DebuggerStatement */); parseExpected(76 /* DebuggerKeyword */); parseSemicolon(); return finishNode(node); @@ -11025,13 +11243,13 @@ var ts; var fullStart = scanner.getStartPos(); var expression = allowInAnd(parseExpression); if (expression.kind === 69 /* Identifier */ && parseOptional(54 /* ColonToken */)) { - var labeledStatement = createNode(211 /* LabeledStatement */, fullStart); + var labeledStatement = createNode(213 /* LabeledStatement */, fullStart); labeledStatement.label = expression; labeledStatement.statement = parseStatement(); return addJSDocComment(finishNode(labeledStatement)); } else { - var expressionStatement = createNode(199 /* ExpressionStatement */, fullStart); + var expressionStatement = createNode(201 /* ExpressionStatement */, fullStart); expressionStatement.expression = expression; parseSemicolon(); return addJSDocComment(finishNode(expressionStatement)); @@ -11099,8 +11317,9 @@ var ts; return false; } continue; - case 135 /* GlobalKeyword */: - return nextToken() === 15 /* OpenBraceToken */; + case 136 /* GlobalKeyword */: + nextToken(); + return token === 15 /* OpenBraceToken */ || token === 69 /* Identifier */ || token === 82 /* ExportKeyword */; case 89 /* ImportKeyword */: nextToken(); return token === 9 /* StringLiteral */ || token === 37 /* AsteriskToken */ || @@ -11108,7 +11327,8 @@ var ts; case 82 /* ExportKeyword */: nextToken(); if (token === 56 /* EqualsToken */ || token === 37 /* AsteriskToken */ || - token === 15 /* OpenBraceToken */ || token === 77 /* DefaultKeyword */) { + token === 15 /* OpenBraceToken */ || token === 77 /* DefaultKeyword */ || + token === 116 /* AsKeyword */) { return true; } continue; @@ -11160,7 +11380,7 @@ var ts; case 125 /* ModuleKeyword */: case 126 /* NamespaceKeyword */: case 133 /* TypeKeyword */: - case 135 /* GlobalKeyword */: + case 136 /* GlobalKeyword */: // When these don't start a declaration, they're an identifier in an expression statement return true; case 112 /* PublicKeyword */: @@ -11210,9 +11430,9 @@ var ts; case 86 /* ForKeyword */: return parseForOrForInOrForOfStatement(); case 75 /* ContinueKeyword */: - return parseBreakOrContinueStatement(206 /* ContinueStatement */); + return parseBreakOrContinueStatement(208 /* ContinueStatement */); case 70 /* BreakKeyword */: - return parseBreakOrContinueStatement(207 /* BreakStatement */); + return parseBreakOrContinueStatement(209 /* BreakStatement */); case 94 /* ReturnKeyword */: return parseReturnStatement(); case 105 /* WithKeyword */: @@ -11246,7 +11466,7 @@ var ts; case 115 /* AbstractKeyword */: case 113 /* StaticKeyword */: case 127 /* ReadonlyKeyword */: - case 135 /* GlobalKeyword */: + case 136 /* GlobalKeyword */: if (isStartOfDeclaration()) { return parseDeclaration(); } @@ -11273,7 +11493,7 @@ var ts; return parseTypeAliasDeclaration(fullStart, decorators, modifiers); case 81 /* EnumKeyword */: return parseEnumDeclaration(fullStart, decorators, modifiers); - case 135 /* GlobalKeyword */: + case 136 /* GlobalKeyword */: case 125 /* ModuleKeyword */: case 126 /* NamespaceKeyword */: return parseModuleDeclaration(fullStart, decorators, modifiers); @@ -11281,14 +11501,20 @@ var ts; return parseImportDeclarationOrImportEqualsDeclaration(fullStart, decorators, modifiers); case 82 /* ExportKeyword */: nextToken(); - return token === 77 /* DefaultKeyword */ || token === 56 /* EqualsToken */ ? - parseExportAssignment(fullStart, decorators, modifiers) : - parseExportDeclaration(fullStart, decorators, modifiers); + switch (token) { + case 77 /* DefaultKeyword */: + case 56 /* EqualsToken */: + return parseExportAssignment(fullStart, decorators, modifiers); + case 116 /* AsKeyword */: + return parseGlobalModuleExportDeclaration(fullStart, decorators, modifiers); + default: + return parseExportDeclaration(fullStart, decorators, modifiers); + } default: if (decorators || modifiers) { // We reached this point because we encountered decorators and/or modifiers and assumed a declaration // would follow. For recovery and error reporting purposes, return an incomplete declaration. - var node = createMissingNode(235 /* MissingDeclaration */, /*reportAtCurrentPosition*/ true, ts.Diagnostics.Declaration_expected); + var node = createMissingNode(238 /* MissingDeclaration */, /*reportAtCurrentPosition*/ true, ts.Diagnostics.Declaration_expected); node.pos = fullStart; node.decorators = decorators; setModifiers(node, modifiers); @@ -11310,16 +11536,16 @@ var ts; // DECLARATIONS function parseArrayBindingElement() { if (token === 24 /* CommaToken */) { - return createNode(191 /* OmittedExpression */); + return createNode(192 /* OmittedExpression */); } - var node = createNode(167 /* BindingElement */); + var node = createNode(168 /* BindingElement */); node.dotDotDotToken = parseOptionalToken(22 /* DotDotDotToken */); node.name = parseIdentifierOrPattern(); node.initializer = parseBindingElementInitializer(/*inParameter*/ false); return finishNode(node); } function parseObjectBindingElement() { - var node = createNode(167 /* BindingElement */); + var node = createNode(168 /* BindingElement */); var tokenIsIdentifier = isIdentifier(); var propertyName = parsePropertyName(); if (tokenIsIdentifier && token !== 54 /* ColonToken */) { @@ -11334,14 +11560,14 @@ var ts; return finishNode(node); } function parseObjectBindingPattern() { - var node = createNode(165 /* ObjectBindingPattern */); + var node = createNode(166 /* ObjectBindingPattern */); parseExpected(15 /* OpenBraceToken */); node.elements = parseDelimitedList(9 /* ObjectBindingElements */, parseObjectBindingElement); parseExpected(16 /* CloseBraceToken */); return finishNode(node); } function parseArrayBindingPattern() { - var node = createNode(166 /* ArrayBindingPattern */); + var node = createNode(167 /* ArrayBindingPattern */); parseExpected(19 /* OpenBracketToken */); node.elements = parseDelimitedList(10 /* ArrayBindingElements */, parseArrayBindingElement); parseExpected(20 /* CloseBracketToken */); @@ -11360,7 +11586,7 @@ var ts; return parseIdentifier(); } function parseVariableDeclaration() { - var node = createNode(215 /* VariableDeclaration */); + var node = createNode(217 /* VariableDeclaration */); node.name = parseIdentifierOrPattern(); node.type = parseTypeAnnotation(); if (!isInOrOfKeyword(token)) { @@ -11369,7 +11595,7 @@ var ts; return finishNode(node); } function parseVariableDeclarationList(inForStatementInitializer) { - var node = createNode(216 /* VariableDeclarationList */); + var node = createNode(218 /* VariableDeclarationList */); switch (token) { case 102 /* VarKeyword */: break; @@ -11392,7 +11618,7 @@ var ts; // So we need to look ahead to determine if 'of' should be treated as a keyword in // this context. // The checker will then give an error that there is an empty declaration list. - if (token === 136 /* OfKeyword */ && lookAhead(canFollowContextualOfKeyword)) { + if (token === 137 /* OfKeyword */ && lookAhead(canFollowContextualOfKeyword)) { node.declarations = createMissingList(); } else { @@ -11407,7 +11633,7 @@ var ts; return nextTokenIsIdentifier() && nextToken() === 18 /* CloseParenToken */; } function parseVariableStatement(fullStart, decorators, modifiers) { - var node = createNode(197 /* VariableStatement */, fullStart); + var node = createNode(199 /* VariableStatement */, fullStart); node.decorators = decorators; setModifiers(node, modifiers); node.declarationList = parseVariableDeclarationList(/*inForStatementInitializer*/ false); @@ -11415,7 +11641,7 @@ var ts; return addJSDocComment(finishNode(node)); } function parseFunctionDeclaration(fullStart, decorators, modifiers) { - var node = createNode(217 /* FunctionDeclaration */, fullStart); + var node = createNode(219 /* FunctionDeclaration */, fullStart); node.decorators = decorators; setModifiers(node, modifiers); parseExpected(87 /* FunctionKeyword */); @@ -11428,7 +11654,7 @@ var ts; return addJSDocComment(finishNode(node)); } function parseConstructorDeclaration(pos, decorators, modifiers) { - var node = createNode(146 /* Constructor */, pos); + var node = createNode(147 /* Constructor */, pos); node.decorators = decorators; setModifiers(node, modifiers); parseExpected(121 /* ConstructorKeyword */); @@ -11437,7 +11663,7 @@ var ts; return addJSDocComment(finishNode(node)); } function parseMethodDeclaration(fullStart, decorators, modifiers, asteriskToken, name, questionToken, diagnosticMessage) { - var method = createNode(145 /* MethodDeclaration */, fullStart); + var method = createNode(146 /* MethodDeclaration */, fullStart); method.decorators = decorators; setModifiers(method, modifiers); method.asteriskToken = asteriskToken; @@ -11450,7 +11676,7 @@ var ts; return addJSDocComment(finishNode(method)); } function parsePropertyDeclaration(fullStart, decorators, modifiers, name, questionToken) { - var property = createNode(143 /* PropertyDeclaration */, fullStart); + var property = createNode(144 /* PropertyDeclaration */, fullStart); property.decorators = decorators; setModifiers(property, modifiers); property.name = name; @@ -11577,7 +11803,7 @@ var ts; decorators = []; decorators.pos = decoratorStart; } - var decorator = createNode(141 /* Decorator */, decoratorStart); + var decorator = createNode(142 /* Decorator */, decoratorStart); decorator.expression = doInDecoratorContext(parseLeftHandSideExpressionOrHigher); decorators.push(finishNode(decorator)); } @@ -11642,7 +11868,7 @@ var ts; } function parseClassElement() { if (token === 23 /* SemicolonToken */) { - var result = createNode(195 /* SemicolonClassElement */); + var result = createNode(197 /* SemicolonClassElement */); nextToken(); return finishNode(result); } @@ -11680,10 +11906,10 @@ var ts; return parseClassDeclarationOrExpression( /*fullStart*/ scanner.getStartPos(), /*decorators*/ undefined, - /*modifiers*/ undefined, 190 /* ClassExpression */); + /*modifiers*/ undefined, 191 /* ClassExpression */); } function parseClassDeclaration(fullStart, decorators, modifiers) { - return parseClassDeclarationOrExpression(fullStart, decorators, modifiers, 218 /* ClassDeclaration */); + return parseClassDeclarationOrExpression(fullStart, decorators, modifiers, 220 /* ClassDeclaration */); } function parseClassDeclarationOrExpression(fullStart, decorators, modifiers, kind) { var node = createNode(kind, fullStart); @@ -11727,7 +11953,7 @@ var ts; } function parseHeritageClause() { if (token === 83 /* ExtendsKeyword */ || token === 106 /* ImplementsKeyword */) { - var node = createNode(247 /* HeritageClause */); + var node = createNode(250 /* HeritageClause */); node.token = token; nextToken(); node.types = parseDelimitedList(7 /* HeritageClauseElement */, parseExpressionWithTypeArguments); @@ -11736,7 +11962,7 @@ var ts; return undefined; } function parseExpressionWithTypeArguments() { - var node = createNode(192 /* ExpressionWithTypeArguments */); + var node = createNode(193 /* ExpressionWithTypeArguments */); node.expression = parseLeftHandSideExpressionOrHigher(); if (token === 25 /* LessThanToken */) { node.typeArguments = parseBracketedList(18 /* TypeArguments */, parseType, 25 /* LessThanToken */, 27 /* GreaterThanToken */); @@ -11750,7 +11976,7 @@ var ts; return parseList(5 /* ClassMembers */, parseClassElement); } function parseInterfaceDeclaration(fullStart, decorators, modifiers) { - var node = createNode(219 /* InterfaceDeclaration */, fullStart); + var node = createNode(221 /* InterfaceDeclaration */, fullStart); node.decorators = decorators; setModifiers(node, modifiers); parseExpected(107 /* InterfaceKeyword */); @@ -11761,7 +11987,7 @@ var ts; return finishNode(node); } function parseTypeAliasDeclaration(fullStart, decorators, modifiers) { - var node = createNode(220 /* TypeAliasDeclaration */, fullStart); + var node = createNode(222 /* TypeAliasDeclaration */, fullStart); node.decorators = decorators; setModifiers(node, modifiers); parseExpected(133 /* TypeKeyword */); @@ -11777,13 +12003,13 @@ var ts; // ConstantEnumMemberSection, which starts at the beginning of an enum declaration // or any time an integer literal initializer is encountered. function parseEnumMember() { - var node = createNode(251 /* EnumMember */, scanner.getStartPos()); + var node = createNode(254 /* EnumMember */, scanner.getStartPos()); node.name = parsePropertyName(); node.initializer = allowInAnd(parseNonParameterInitializer); return finishNode(node); } function parseEnumDeclaration(fullStart, decorators, modifiers) { - var node = createNode(221 /* EnumDeclaration */, fullStart); + var node = createNode(223 /* EnumDeclaration */, fullStart); node.decorators = decorators; setModifiers(node, modifiers); parseExpected(81 /* EnumKeyword */); @@ -11798,7 +12024,7 @@ var ts; return finishNode(node); } function parseModuleBlock() { - var node = createNode(223 /* ModuleBlock */, scanner.getStartPos()); + var node = createNode(225 /* ModuleBlock */, scanner.getStartPos()); if (parseExpected(15 /* OpenBraceToken */)) { node.statements = parseList(1 /* BlockStatements */, parseStatement); parseExpected(16 /* CloseBraceToken */); @@ -11809,7 +12035,7 @@ var ts; return finishNode(node); } function parseModuleOrNamespaceDeclaration(fullStart, decorators, modifiers, flags) { - var node = createNode(222 /* ModuleDeclaration */, fullStart); + var node = createNode(224 /* ModuleDeclaration */, fullStart); // If we are parsing a dotted namespace name, we want to // propagate the 'Namespace' flag across the names if set. var namespaceFlag = flags & 4096 /* Namespace */; @@ -11823,10 +12049,10 @@ var ts; return finishNode(node); } function parseAmbientExternalModuleDeclaration(fullStart, decorators, modifiers) { - var node = createNode(222 /* ModuleDeclaration */, fullStart); + var node = createNode(224 /* ModuleDeclaration */, fullStart); node.decorators = decorators; setModifiers(node, modifiers); - if (token === 135 /* GlobalKeyword */) { + if (token === 136 /* GlobalKeyword */) { // parse 'global' as name of global scope augmentation node.name = parseIdentifier(); node.flags |= 131072 /* GlobalAugmentation */; @@ -11839,7 +12065,7 @@ var ts; } function parseModuleDeclaration(fullStart, decorators, modifiers) { var flags = modifiers ? modifiers.flags : 0; - if (token === 135 /* GlobalKeyword */) { + if (token === 136 /* GlobalKeyword */) { // global augmentation return parseAmbientExternalModuleDeclaration(fullStart, decorators, modifiers); } @@ -11864,17 +12090,27 @@ var ts; function nextTokenIsSlash() { return nextToken() === 39 /* SlashToken */; } + function parseGlobalModuleExportDeclaration(fullStart, decorators, modifiers) { + var exportDeclaration = createNode(227 /* GlobalModuleExportDeclaration */, fullStart); + exportDeclaration.decorators = decorators; + exportDeclaration.modifiers = modifiers; + parseExpected(116 /* AsKeyword */); + parseExpected(126 /* NamespaceKeyword */); + exportDeclaration.name = parseIdentifier(); + parseExpected(23 /* SemicolonToken */); + return finishNode(exportDeclaration); + } function parseImportDeclarationOrImportEqualsDeclaration(fullStart, decorators, modifiers) { parseExpected(89 /* ImportKeyword */); var afterImportPos = scanner.getStartPos(); var identifier; if (isIdentifier()) { identifier = parseIdentifier(); - if (token !== 24 /* CommaToken */ && token !== 134 /* FromKeyword */) { + if (token !== 24 /* CommaToken */ && token !== 135 /* FromKeyword */) { // ImportEquals declaration of type: // import x = require("mod"); or // import x = M.x; - var importEqualsDeclaration = createNode(225 /* ImportEqualsDeclaration */, fullStart); + var importEqualsDeclaration = createNode(228 /* ImportEqualsDeclaration */, fullStart); importEqualsDeclaration.decorators = decorators; setModifiers(importEqualsDeclaration, modifiers); importEqualsDeclaration.name = identifier; @@ -11885,7 +12121,7 @@ var ts; } } // Import statement - var importDeclaration = createNode(226 /* ImportDeclaration */, fullStart); + var importDeclaration = createNode(229 /* ImportDeclaration */, fullStart); importDeclaration.decorators = decorators; setModifiers(importDeclaration, modifiers); // ImportDeclaration: @@ -11895,7 +12131,7 @@ var ts; token === 37 /* AsteriskToken */ || token === 15 /* OpenBraceToken */) { importDeclaration.importClause = parseImportClause(identifier, afterImportPos); - parseExpected(134 /* FromKeyword */); + parseExpected(135 /* FromKeyword */); } importDeclaration.moduleSpecifier = parseModuleSpecifier(); parseSemicolon(); @@ -11908,7 +12144,7 @@ var ts; // NamedImports // ImportedDefaultBinding, NameSpaceImport // ImportedDefaultBinding, NamedImports - var importClause = createNode(227 /* ImportClause */, fullStart); + var importClause = createNode(230 /* ImportClause */, fullStart); if (identifier) { // ImportedDefaultBinding: // ImportedBinding @@ -11918,7 +12154,7 @@ var ts; // parse namespace or named imports if (!importClause.name || parseOptional(24 /* CommaToken */)) { - importClause.namedBindings = token === 37 /* AsteriskToken */ ? parseNamespaceImport() : parseNamedImportsOrExports(229 /* NamedImports */); + importClause.namedBindings = token === 37 /* AsteriskToken */ ? parseNamespaceImport() : parseNamedImportsOrExports(232 /* NamedImports */); } return finishNode(importClause); } @@ -11928,7 +12164,7 @@ var ts; : parseEntityName(/*allowReservedWords*/ false); } function parseExternalModuleReference() { - var node = createNode(236 /* ExternalModuleReference */); + var node = createNode(239 /* ExternalModuleReference */); parseExpected(128 /* RequireKeyword */); parseExpected(17 /* OpenParenToken */); node.expression = parseModuleSpecifier(); @@ -11951,7 +12187,7 @@ var ts; function parseNamespaceImport() { // NameSpaceImport: // * as ImportedBinding - var namespaceImport = createNode(228 /* NamespaceImport */); + var namespaceImport = createNode(231 /* NamespaceImport */); parseExpected(37 /* AsteriskToken */); parseExpected(116 /* AsKeyword */); namespaceImport.name = parseIdentifier(); @@ -11966,14 +12202,14 @@ var ts; // ImportsList: // ImportSpecifier // ImportsList, ImportSpecifier - node.elements = parseBracketedList(21 /* ImportOrExportSpecifiers */, kind === 229 /* NamedImports */ ? parseImportSpecifier : parseExportSpecifier, 15 /* OpenBraceToken */, 16 /* CloseBraceToken */); + node.elements = parseBracketedList(21 /* ImportOrExportSpecifiers */, kind === 232 /* NamedImports */ ? parseImportSpecifier : parseExportSpecifier, 15 /* OpenBraceToken */, 16 /* CloseBraceToken */); return finishNode(node); } function parseExportSpecifier() { - return parseImportOrExportSpecifier(234 /* ExportSpecifier */); + return parseImportOrExportSpecifier(237 /* ExportSpecifier */); } function parseImportSpecifier() { - return parseImportOrExportSpecifier(230 /* ImportSpecifier */); + return parseImportOrExportSpecifier(233 /* ImportSpecifier */); } function parseImportOrExportSpecifier(kind) { var node = createNode(kind); @@ -11998,27 +12234,27 @@ var ts; else { node.name = identifierName; } - if (kind === 230 /* ImportSpecifier */ && checkIdentifierIsKeyword) { + if (kind === 233 /* ImportSpecifier */ && checkIdentifierIsKeyword) { // Report error identifier expected parseErrorAtPosition(checkIdentifierStart, checkIdentifierEnd - checkIdentifierStart, ts.Diagnostics.Identifier_expected); } return finishNode(node); } function parseExportDeclaration(fullStart, decorators, modifiers) { - var node = createNode(232 /* ExportDeclaration */, fullStart); + var node = createNode(235 /* ExportDeclaration */, fullStart); node.decorators = decorators; setModifiers(node, modifiers); if (parseOptional(37 /* AsteriskToken */)) { - parseExpected(134 /* FromKeyword */); + parseExpected(135 /* FromKeyword */); node.moduleSpecifier = parseModuleSpecifier(); } else { - node.exportClause = parseNamedImportsOrExports(233 /* NamedExports */); + node.exportClause = parseNamedImportsOrExports(236 /* NamedExports */); // It is not uncommon to accidentally omit the 'from' keyword. Additionally, in editing scenarios, // the 'from' keyword can be parsed as a named export when the export clause is unterminated (i.e. `export { from "moduleName";`) // If we don't have a 'from' keyword, see if we have a string literal such that ASI won't take effect. - if (token === 134 /* FromKeyword */ || (token === 9 /* StringLiteral */ && !scanner.hasPrecedingLineBreak())) { - parseExpected(134 /* FromKeyword */); + if (token === 135 /* FromKeyword */ || (token === 9 /* StringLiteral */ && !scanner.hasPrecedingLineBreak())) { + parseExpected(135 /* FromKeyword */); node.moduleSpecifier = parseModuleSpecifier(); } } @@ -12026,7 +12262,7 @@ var ts; return finishNode(node); } function parseExportAssignment(fullStart, decorators, modifiers) { - var node = createNode(231 /* ExportAssignment */, fullStart); + var node = createNode(234 /* ExportAssignment */, fullStart); node.decorators = decorators; setModifiers(node, modifiers); if (parseOptional(56 /* EqualsToken */)) { @@ -12042,6 +12278,7 @@ var ts; function processReferenceComments(sourceFile) { var triviaScanner = ts.createScanner(sourceFile.languageVersion, /*skipTrivia*/ false, 0 /* Standard */, sourceText); var referencedFiles = []; + var typeReferenceDirectives = []; var amdDependencies = []; var amdModuleName; // Keep scanning all the leading trivia in the file until we get to something that @@ -12065,7 +12302,12 @@ var ts; sourceFile.hasNoDefaultLib = referencePathMatchResult.isNoDefaultLib; var diagnosticMessage = referencePathMatchResult.diagnosticMessage; if (fileReference) { - referencedFiles.push(fileReference); + if (referencePathMatchResult.isTypeReferenceDirective) { + typeReferenceDirectives.push(fileReference); + } + else { + referencedFiles.push(fileReference); + } } if (diagnosticMessage) { parseDiagnostics.push(ts.createFileDiagnostic(sourceFile, range.pos, range.end - range.pos, diagnosticMessage)); @@ -12095,16 +12337,17 @@ var ts; } } sourceFile.referencedFiles = referencedFiles; + sourceFile.typeReferenceDirectives = typeReferenceDirectives; sourceFile.amdDependencies = amdDependencies; sourceFile.moduleName = amdModuleName; } function setExternalModuleIndicator(sourceFile) { sourceFile.externalModuleIndicator = ts.forEach(sourceFile.statements, function (node) { return node.flags & 1 /* Export */ - || node.kind === 225 /* ImportEqualsDeclaration */ && node.moduleReference.kind === 236 /* ExternalModuleReference */ - || node.kind === 226 /* ImportDeclaration */ - || node.kind === 231 /* ExportAssignment */ - || node.kind === 232 /* ExportDeclaration */ + || node.kind === 228 /* ImportEqualsDeclaration */ && node.moduleReference.kind === 239 /* ExternalModuleReference */ + || node.kind === 229 /* ImportDeclaration */ + || node.kind === 234 /* ExportAssignment */ + || node.kind === 235 /* ExportDeclaration */ ? node : undefined; }); @@ -12177,7 +12420,7 @@ var ts; // Parses out a JSDoc type expression. /* @internal */ function parseJSDocTypeExpression() { - var result = createNode(253 /* JSDocTypeExpression */, scanner.getTokenPos()); + var result = createNode(256 /* JSDocTypeExpression */, scanner.getTokenPos()); parseExpected(15 /* OpenBraceToken */); result.type = parseJSDocTopLevelType(); parseExpected(16 /* CloseBraceToken */); @@ -12188,12 +12431,12 @@ var ts; function parseJSDocTopLevelType() { var type = parseJSDocType(); if (token === 47 /* BarToken */) { - var unionType = createNode(257 /* JSDocUnionType */, type.pos); + var unionType = createNode(260 /* JSDocUnionType */, type.pos); unionType.types = parseJSDocTypeList(type); type = finishNode(unionType); } if (token === 56 /* EqualsToken */) { - var optionalType = createNode(264 /* JSDocOptionalType */, type.pos); + var optionalType = createNode(267 /* JSDocOptionalType */, type.pos); nextToken(); optionalType.type = type; type = finishNode(optionalType); @@ -12204,20 +12447,20 @@ var ts; var type = parseBasicTypeExpression(); while (true) { if (token === 19 /* OpenBracketToken */) { - var arrayType = createNode(256 /* JSDocArrayType */, type.pos); + var arrayType = createNode(259 /* JSDocArrayType */, type.pos); arrayType.elementType = type; nextToken(); parseExpected(20 /* CloseBracketToken */); type = finishNode(arrayType); } else if (token === 53 /* QuestionToken */) { - var nullableType = createNode(259 /* JSDocNullableType */, type.pos); + var nullableType = createNode(262 /* JSDocNullableType */, type.pos); nullableType.type = type; nextToken(); type = finishNode(nullableType); } else if (token === 49 /* ExclamationToken */) { - var nonNullableType = createNode(260 /* JSDocNonNullableType */, type.pos); + var nonNullableType = createNode(263 /* JSDocNonNullableType */, type.pos); nonNullableType.type = type; nextToken(); type = finishNode(nonNullableType); @@ -12262,27 +12505,27 @@ var ts; return parseJSDocTypeReference(); } function parseJSDocThisType() { - var result = createNode(268 /* JSDocThisType */); + var result = createNode(271 /* JSDocThisType */); nextToken(); parseExpected(54 /* ColonToken */); result.type = parseJSDocType(); return finishNode(result); } function parseJSDocConstructorType() { - var result = createNode(267 /* JSDocConstructorType */); + var result = createNode(270 /* JSDocConstructorType */); nextToken(); parseExpected(54 /* ColonToken */); result.type = parseJSDocType(); return finishNode(result); } function parseJSDocVariadicType() { - var result = createNode(266 /* JSDocVariadicType */); + var result = createNode(269 /* JSDocVariadicType */); nextToken(); result.type = parseJSDocType(); return finishNode(result); } function parseJSDocFunctionType() { - var result = createNode(265 /* JSDocFunctionType */); + var result = createNode(268 /* JSDocFunctionType */); nextToken(); parseExpected(17 /* OpenParenToken */); result.parameters = parseDelimitedList(22 /* JSDocFunctionParameters */, parseJSDocParameter); @@ -12295,7 +12538,7 @@ var ts; return finishNode(result); } function parseJSDocParameter() { - var parameter = createNode(140 /* Parameter */); + var parameter = createNode(141 /* Parameter */); parameter.type = parseJSDocType(); if (parseOptional(56 /* EqualsToken */)) { parameter.questionToken = createNode(56 /* EqualsToken */); @@ -12303,7 +12546,7 @@ var ts; return finishNode(parameter); } function parseJSDocTypeReference() { - var result = createNode(263 /* JSDocTypeReference */); + var result = createNode(266 /* JSDocTypeReference */); result.name = parseSimplePropertyName(); if (token === 25 /* LessThanToken */) { result.typeArguments = parseTypeArguments(); @@ -12338,13 +12581,13 @@ var ts; } } function parseQualifiedName(left) { - var result = createNode(137 /* QualifiedName */, left.pos); + var result = createNode(138 /* QualifiedName */, left.pos); result.left = left; result.right = parseIdentifierName(); return finishNode(result); } function parseJSDocRecordType() { - var result = createNode(261 /* JSDocRecordType */); + var result = createNode(264 /* JSDocRecordType */); nextToken(); result.members = parseDelimitedList(24 /* JSDocRecordMembers */, parseJSDocRecordMember); checkForTrailingComma(result.members); @@ -12352,7 +12595,7 @@ var ts; return finishNode(result); } function parseJSDocRecordMember() { - var result = createNode(262 /* JSDocRecordMember */); + var result = createNode(265 /* JSDocRecordMember */); result.name = parseSimplePropertyName(); if (token === 54 /* ColonToken */) { nextToken(); @@ -12361,13 +12604,13 @@ var ts; return finishNode(result); } function parseJSDocNonNullableType() { - var result = createNode(260 /* JSDocNonNullableType */); + var result = createNode(263 /* JSDocNonNullableType */); nextToken(); result.type = parseJSDocType(); return finishNode(result); } function parseJSDocTupleType() { - var result = createNode(258 /* JSDocTupleType */); + var result = createNode(261 /* JSDocTupleType */); nextToken(); result.types = parseDelimitedList(25 /* JSDocTupleTypes */, parseJSDocType); checkForTrailingComma(result.types); @@ -12381,7 +12624,7 @@ var ts; } } function parseJSDocUnionType() { - var result = createNode(257 /* JSDocUnionType */); + var result = createNode(260 /* JSDocUnionType */); nextToken(); result.types = parseJSDocTypeList(parseJSDocType()); parseExpected(18 /* CloseParenToken */); @@ -12399,7 +12642,7 @@ var ts; return types; } function parseJSDocAllType() { - var result = createNode(254 /* JSDocAllType */); + var result = createNode(257 /* JSDocAllType */); nextToken(); return finishNode(result); } @@ -12422,11 +12665,11 @@ var ts; token === 27 /* GreaterThanToken */ || token === 56 /* EqualsToken */ || token === 47 /* BarToken */) { - var result = createNode(255 /* JSDocUnknownType */, pos); + var result = createNode(258 /* JSDocUnknownType */, pos); return finishNode(result); } else { - var result = createNode(259 /* JSDocNullableType */, pos); + var result = createNode(262 /* JSDocNullableType */, pos); result.type = parseJSDocType(); return finishNode(result); } @@ -12517,7 +12760,7 @@ var ts; if (!tags) { return undefined; } - var result = createNode(269 /* JSDocComment */, start); + var result = createNode(272 /* JSDocComment */, start); result.tags = tags; return finishNode(result, end); } @@ -12555,7 +12798,7 @@ var ts; return undefined; } function handleUnknownTag(atToken, tagName) { - var result = createNode(270 /* JSDocTag */, atToken.pos); + var result = createNode(273 /* JSDocTag */, atToken.pos); result.atToken = atToken; result.tagName = tagName; return finishNode(result); @@ -12609,7 +12852,7 @@ var ts; if (!typeExpression) { typeExpression = tryParseTypeExpression(); } - var result = createNode(271 /* JSDocParameterTag */, atToken.pos); + var result = createNode(274 /* JSDocParameterTag */, atToken.pos); result.atToken = atToken; result.tagName = tagName; result.preParameterName = preName; @@ -12619,27 +12862,27 @@ var ts; return finishNode(result); } function handleReturnTag(atToken, tagName) { - if (ts.forEach(tags, function (t) { return t.kind === 272 /* JSDocReturnTag */; })) { + if (ts.forEach(tags, function (t) { return t.kind === 275 /* JSDocReturnTag */; })) { parseErrorAtPosition(tagName.pos, scanner.getTokenPos() - tagName.pos, ts.Diagnostics._0_tag_already_specified, tagName.text); } - var result = createNode(272 /* JSDocReturnTag */, atToken.pos); + var result = createNode(275 /* JSDocReturnTag */, atToken.pos); result.atToken = atToken; result.tagName = tagName; result.typeExpression = tryParseTypeExpression(); return finishNode(result); } function handleTypeTag(atToken, tagName) { - if (ts.forEach(tags, function (t) { return t.kind === 273 /* JSDocTypeTag */; })) { + if (ts.forEach(tags, function (t) { return t.kind === 276 /* JSDocTypeTag */; })) { parseErrorAtPosition(tagName.pos, scanner.getTokenPos() - tagName.pos, ts.Diagnostics._0_tag_already_specified, tagName.text); } - var result = createNode(273 /* JSDocTypeTag */, atToken.pos); + var result = createNode(276 /* JSDocTypeTag */, atToken.pos); result.atToken = atToken; result.tagName = tagName; result.typeExpression = tryParseTypeExpression(); return finishNode(result); } function handleTemplateTag(atToken, tagName) { - if (ts.forEach(tags, function (t) { return t.kind === 274 /* JSDocTemplateTag */; })) { + if (ts.forEach(tags, function (t) { return t.kind === 277 /* JSDocTemplateTag */; })) { parseErrorAtPosition(tagName.pos, scanner.getTokenPos() - tagName.pos, ts.Diagnostics._0_tag_already_specified, tagName.text); } // Type parameter list looks like '@template T,U,V' @@ -12651,7 +12894,7 @@ var ts; parseErrorAtPosition(scanner.getStartPos(), 0, ts.Diagnostics.Identifier_expected); return undefined; } - var typeParameter = createNode(139 /* TypeParameter */, name_8.pos); + var typeParameter = createNode(140 /* TypeParameter */, name_8.pos); typeParameter.name = name_8; finishNode(typeParameter); typeParameters.push(typeParameter); @@ -12662,7 +12905,7 @@ var ts; break; } } - var result = createNode(274 /* JSDocTemplateTag */, atToken.pos); + var result = createNode(277 /* JSDocTemplateTag */, atToken.pos); result.atToken = atToken; result.tagName = tagName; result.typeParameters = typeParameters; @@ -13191,16 +13434,16 @@ var ts; function getModuleInstanceState(node) { // A module is uninstantiated if it contains only // 1. interface declarations, type alias declarations - if (node.kind === 219 /* InterfaceDeclaration */ || node.kind === 220 /* TypeAliasDeclaration */) { + if (node.kind === 221 /* InterfaceDeclaration */ || node.kind === 222 /* TypeAliasDeclaration */) { return 0 /* NonInstantiated */; } else if (ts.isConstEnumDeclaration(node)) { return 2 /* ConstEnumOnly */; } - else if ((node.kind === 226 /* ImportDeclaration */ || node.kind === 225 /* ImportEqualsDeclaration */) && !(node.flags & 1 /* Export */)) { + else if ((node.kind === 229 /* ImportDeclaration */ || node.kind === 228 /* ImportEqualsDeclaration */) && !(node.flags & 1 /* Export */)) { return 0 /* NonInstantiated */; } - else if (node.kind === 223 /* ModuleBlock */) { + else if (node.kind === 225 /* ModuleBlock */) { var state_1 = 0 /* NonInstantiated */; ts.forEachChild(node, function (n) { switch (getModuleInstanceState(n)) { @@ -13219,7 +13462,7 @@ var ts; }); return state_1; } - else if (node.kind === 222 /* ModuleDeclaration */) { + else if (node.kind === 224 /* ModuleDeclaration */) { return getModuleInstanceState(node.body); } else { @@ -13274,6 +13517,7 @@ var ts; var hasAsyncFunctions; var hasDecorators; var hasParameterDecorators; + var hasJsxSpreadAttribute; // If this file is an external module, then it is automatically in strict-mode according to // ES6. If it is not an external module, then we'll determine if it is in strict mode or // not depending on if we see "use strict" in certain places (or if we hit a class/namespace). @@ -13307,6 +13551,7 @@ var ts; hasAsyncFunctions = false; hasDecorators = false; hasParameterDecorators = false; + hasJsxSpreadAttribute = false; } return bindSourceFile; function createSymbol(flags, name) { @@ -13329,7 +13574,7 @@ var ts; if (symbolFlags & 107455 /* Value */) { var valueDeclaration = symbol.valueDeclaration; if (!valueDeclaration || - (valueDeclaration.kind !== node.kind && valueDeclaration.kind === 222 /* ModuleDeclaration */)) { + (valueDeclaration.kind !== node.kind && valueDeclaration.kind === 224 /* ModuleDeclaration */)) { // other kinds of value declarations take precedence over modules symbol.valueDeclaration = node; } @@ -13342,7 +13587,7 @@ var ts; if (ts.isAmbientModule(node)) { return ts.isGlobalScopeAugmentation(node) ? "__global" : "\"" + node.name.text + "\""; } - if (node.name.kind === 138 /* ComputedPropertyName */) { + if (node.name.kind === 139 /* ComputedPropertyName */) { var nameExpression = node.name.expression; // treat computed property names where expression is string/numeric literal as just string/numeric literal if (ts.isStringOrNumericLiteral(nameExpression.kind)) { @@ -13354,21 +13599,21 @@ var ts; return node.name.text; } switch (node.kind) { - case 146 /* Constructor */: + case 147 /* Constructor */: return "__constructor"; - case 154 /* FunctionType */: - case 149 /* CallSignature */: + case 155 /* FunctionType */: + case 150 /* CallSignature */: return "__call"; - case 155 /* ConstructorType */: - case 150 /* ConstructSignature */: + case 156 /* ConstructorType */: + case 151 /* ConstructSignature */: return "__new"; - case 151 /* IndexSignature */: + case 152 /* IndexSignature */: return "__index"; - case 232 /* ExportDeclaration */: + case 235 /* ExportDeclaration */: return "__export"; - case 231 /* ExportAssignment */: + case 234 /* ExportAssignment */: return node.isExportEquals ? "export=" : "default"; - case 185 /* BinaryExpression */: + case 186 /* BinaryExpression */: switch (ts.getSpecialPropertyAssignmentKind(node)) { case 2 /* ModuleExports */: // module.exports = ... @@ -13383,15 +13628,15 @@ var ts; } ts.Debug.fail("Unknown binary declaration kind"); break; - case 217 /* FunctionDeclaration */: - case 218 /* ClassDeclaration */: + case 219 /* FunctionDeclaration */: + case 220 /* ClassDeclaration */: return node.flags & 512 /* Default */ ? "default" : undefined; - case 265 /* JSDocFunctionType */: + case 268 /* JSDocFunctionType */: return ts.isJSDocConstructSignature(node) ? "__new" : "__call"; - case 140 /* Parameter */: + case 141 /* Parameter */: // Parameters with names are handled at the top of this function. Parameters // without names can only come from JSDocFunctionTypes. - ts.Debug.assert(node.parent.kind === 265 /* JSDocFunctionType */); + ts.Debug.assert(node.parent.kind === 268 /* JSDocFunctionType */); var functionType = node.parent; var index = ts.indexOf(functionType.parameters, node); return "p" + index; @@ -13470,7 +13715,7 @@ var ts; function declareModuleMember(node, symbolFlags, symbolExcludes) { var hasExportModifier = ts.getCombinedNodeFlags(node) & 1 /* Export */; if (symbolFlags & 8388608 /* Alias */) { - if (node.kind === 234 /* ExportSpecifier */ || (node.kind === 225 /* ImportEqualsDeclaration */ && hasExportModifier)) { + if (node.kind === 237 /* ExportSpecifier */ || (node.kind === 228 /* ImportEqualsDeclaration */ && hasExportModifier)) { return declareSymbol(container.symbol.exports, container.symbol, node, symbolFlags, symbolExcludes); } else { @@ -13559,10 +13804,10 @@ var ts; flags &= ~98304 /* ReachabilityCheckFlags */; // reset all emit helper flags on node (for incremental scenarios) flags &= ~3932160 /* EmitHelperFlags */; - if (kind === 219 /* InterfaceDeclaration */) { + if (kind === 221 /* InterfaceDeclaration */) { seenThisKeyword = false; } - var saveState = kind === 252 /* SourceFile */ || kind === 223 /* ModuleBlock */ || ts.isFunctionLikeKind(kind); + var saveState = kind === 255 /* SourceFile */ || kind === 225 /* ModuleBlock */ || ts.isFunctionLikeKind(kind); if (saveState) { savedReachabilityState = currentReachabilityState; savedLabelStack = labelStack; @@ -13583,10 +13828,10 @@ var ts; flags |= 65536 /* HasExplicitReturn */; } } - if (kind === 219 /* InterfaceDeclaration */) { + if (kind === 221 /* InterfaceDeclaration */) { flags = seenThisKeyword ? flags | 16384 /* ContainsThis */ : flags & ~16384 /* ContainsThis */; } - if (kind === 252 /* SourceFile */) { + if (kind === 255 /* SourceFile */) { if (hasClassExtends) { flags |= 262144 /* HasClassExtends */; } @@ -13599,6 +13844,9 @@ var ts; if (hasAsyncFunctions) { flags |= 2097152 /* HasAsyncFunctions */; } + if (hasJsxSpreadAttribute) { + flags |= 1073741824 /* HasJsxSpreadAttribute */; + } } node.flags = flags; if (saveState) { @@ -13622,40 +13870,40 @@ var ts; return; } switch (node.kind) { - case 202 /* WhileStatement */: + case 204 /* WhileStatement */: bindWhileStatement(node); break; - case 201 /* DoStatement */: + case 203 /* DoStatement */: bindDoStatement(node); break; - case 203 /* ForStatement */: + case 205 /* ForStatement */: bindForStatement(node); break; - case 204 /* ForInStatement */: - case 205 /* ForOfStatement */: + case 206 /* ForInStatement */: + case 207 /* ForOfStatement */: bindForInOrForOfStatement(node); break; - case 200 /* IfStatement */: + case 202 /* IfStatement */: bindIfStatement(node); break; - case 208 /* ReturnStatement */: - case 212 /* ThrowStatement */: + case 210 /* ReturnStatement */: + case 214 /* ThrowStatement */: bindReturnOrThrow(node); break; - case 207 /* BreakStatement */: - case 206 /* ContinueStatement */: + case 209 /* BreakStatement */: + case 208 /* ContinueStatement */: bindBreakOrContinueStatement(node); break; - case 213 /* TryStatement */: + case 215 /* TryStatement */: bindTryStatement(node); break; - case 210 /* SwitchStatement */: + case 212 /* SwitchStatement */: bindSwitchStatement(node); break; - case 224 /* CaseBlock */: + case 226 /* CaseBlock */: bindCaseBlock(node); break; - case 211 /* LabeledStatement */: + case 213 /* LabeledStatement */: bindLabeledStatement(node); break; default: @@ -13730,7 +13978,7 @@ var ts; function bindReturnOrThrow(n) { // bind expression (don't affect reachability) bind(n.expression); - if (n.kind === 208 /* ReturnStatement */) { + if (n.kind === 210 /* ReturnStatement */) { hasExplicitReturn = true; } currentReachabilityState = 4 /* Unreachable */; @@ -13739,7 +13987,7 @@ var ts; // call bind on label (don't affect reachability) bind(n.label); // for continue case touch label so it will be marked a used - var isValidJump = jumpToLabel(n.label, n.kind === 207 /* BreakStatement */ ? currentReachabilityState : 4 /* Unreachable */); + var isValidJump = jumpToLabel(n.label, n.kind === 209 /* BreakStatement */ ? currentReachabilityState : 4 /* Unreachable */); if (isValidJump) { currentReachabilityState = 4 /* Unreachable */; } @@ -13757,7 +14005,7 @@ var ts; // post catch/finally state is reachable if // - post try state is reachable - control flow can fall out of try block // - post catch state is reachable - control flow can fall out of catch block - currentReachabilityState = or(postTryState, postCatchState); + currentReachabilityState = n.catchClause ? or(postTryState, postCatchState) : postTryState; } function bindSwitchStatement(n) { var preSwitchState = currentReachabilityState; @@ -13765,18 +14013,21 @@ var ts; // bind expression (don't affect reachability) bind(n.expression); bind(n.caseBlock); - var hasDefault = ts.forEach(n.caseBlock.clauses, function (c) { return c.kind === 246 /* DefaultClause */; }); + var hasDefault = ts.forEach(n.caseBlock.clauses, function (c) { return c.kind === 249 /* DefaultClause */; }); // post switch state is unreachable if switch is exhaustive (has a default case ) and does not have fallthrough from the last case var postSwitchState = hasDefault && currentReachabilityState !== 2 /* Reachable */ ? 4 /* Unreachable */ : preSwitchState; popImplicitLabel(postSwitchLabel, postSwitchState); } function bindCaseBlock(n) { var startState = currentReachabilityState; - for (var _i = 0, _a = n.clauses; _i < _a.length; _i++) { - var clause = _a[_i]; + for (var i = 0; i < n.clauses.length; i++) { + var clause = n.clauses[i]; currentReachabilityState = startState; bind(clause); - if (clause.statements.length && currentReachabilityState === 2 /* Reachable */ && options.noFallthroughCasesInSwitch) { + if (clause.statements.length && + i !== n.clauses.length - 1 && + currentReachabilityState === 2 /* Reachable */ && + options.noFallthroughCasesInSwitch) { errorOnFirstToken(clause, ts.Diagnostics.Fallthrough_case_in_switch); } } @@ -13792,38 +14043,39 @@ var ts; } function getContainerFlags(node) { switch (node.kind) { - case 190 /* ClassExpression */: - case 218 /* ClassDeclaration */: - case 219 /* InterfaceDeclaration */: - case 221 /* EnumDeclaration */: - case 169 /* ObjectLiteralExpression */: - case 157 /* TypeLiteral */: - case 261 /* JSDocRecordType */: + case 191 /* ClassExpression */: + case 220 /* ClassDeclaration */: + case 221 /* InterfaceDeclaration */: + case 223 /* EnumDeclaration */: + case 170 /* ObjectLiteralExpression */: + case 158 /* TypeLiteral */: + case 264 /* JSDocRecordType */: return 1 /* IsContainer */; - case 149 /* CallSignature */: - case 150 /* ConstructSignature */: - case 151 /* IndexSignature */: - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: - case 217 /* FunctionDeclaration */: - case 146 /* Constructor */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: - case 154 /* FunctionType */: - case 155 /* ConstructorType */: - case 177 /* FunctionExpression */: - case 178 /* ArrowFunction */: - case 222 /* ModuleDeclaration */: - case 252 /* SourceFile */: - case 220 /* TypeAliasDeclaration */: + case 150 /* CallSignature */: + case 151 /* ConstructSignature */: + case 152 /* IndexSignature */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: + case 219 /* FunctionDeclaration */: + case 147 /* Constructor */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: + case 155 /* FunctionType */: + case 268 /* JSDocFunctionType */: + case 156 /* ConstructorType */: + case 178 /* FunctionExpression */: + case 179 /* ArrowFunction */: + case 224 /* ModuleDeclaration */: + case 255 /* SourceFile */: + case 222 /* TypeAliasDeclaration */: return 5 /* IsContainerWithLocals */; - case 248 /* CatchClause */: - case 203 /* ForStatement */: - case 204 /* ForInStatement */: - case 205 /* ForOfStatement */: - case 224 /* CaseBlock */: + case 251 /* CatchClause */: + case 205 /* ForStatement */: + case 206 /* ForInStatement */: + case 207 /* ForOfStatement */: + case 226 /* CaseBlock */: return 2 /* IsBlockScopedContainer */; - case 196 /* Block */: + case 198 /* Block */: // do not treat blocks directly inside a function as a block-scoped-container. // Locals that reside in this block should go to the function locals. Otherwise 'x' // would not appear to be a redeclaration of a block scoped local in the following @@ -13860,40 +14112,40 @@ var ts; // members are declared (for example, a member of a class will go into a specific // symbol table depending on if it is static or not). We defer to specialized // handlers to take care of declaring these child members. - case 222 /* ModuleDeclaration */: + case 224 /* ModuleDeclaration */: return declareModuleMember(node, symbolFlags, symbolExcludes); - case 252 /* SourceFile */: + case 255 /* SourceFile */: return declareSourceFileMember(node, symbolFlags, symbolExcludes); - case 190 /* ClassExpression */: - case 218 /* ClassDeclaration */: + case 191 /* ClassExpression */: + case 220 /* ClassDeclaration */: return declareClassMember(node, symbolFlags, symbolExcludes); - case 221 /* EnumDeclaration */: + case 223 /* EnumDeclaration */: return declareSymbol(container.symbol.exports, container.symbol, node, symbolFlags, symbolExcludes); - case 157 /* TypeLiteral */: - case 169 /* ObjectLiteralExpression */: - case 219 /* InterfaceDeclaration */: - case 261 /* JSDocRecordType */: + case 158 /* TypeLiteral */: + case 170 /* ObjectLiteralExpression */: + case 221 /* InterfaceDeclaration */: + case 264 /* JSDocRecordType */: // Interface/Object-types always have their children added to the 'members' of // their container. They are only accessible through an instance of their // container, and are never in scope otherwise (even inside the body of the // object / type / interface declaring them). An exception is type parameters, // which are in scope without qualification (similar to 'locals'). return declareSymbol(container.symbol.members, container.symbol, node, symbolFlags, symbolExcludes); - case 154 /* FunctionType */: - case 155 /* ConstructorType */: - case 149 /* CallSignature */: - case 150 /* ConstructSignature */: - case 151 /* IndexSignature */: - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: - case 146 /* Constructor */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: - case 217 /* FunctionDeclaration */: - case 177 /* FunctionExpression */: - case 178 /* ArrowFunction */: - case 265 /* JSDocFunctionType */: - case 220 /* TypeAliasDeclaration */: + case 155 /* FunctionType */: + case 156 /* ConstructorType */: + case 150 /* CallSignature */: + case 151 /* ConstructSignature */: + case 152 /* IndexSignature */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: + case 147 /* Constructor */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: + case 219 /* FunctionDeclaration */: + case 178 /* FunctionExpression */: + case 179 /* ArrowFunction */: + case 268 /* JSDocFunctionType */: + case 222 /* TypeAliasDeclaration */: // All the children of these container types are never visible through another // symbol (i.e. through another symbol's 'exports' or 'members'). Instead, // they're only accessed 'lexically' (i.e. from code that exists underneath @@ -13914,11 +14166,11 @@ var ts; : declareSymbol(file.locals, undefined, node, symbolFlags, symbolExcludes); } function hasExportDeclarations(node) { - var body = node.kind === 252 /* SourceFile */ ? node : node.body; - if (body.kind === 252 /* SourceFile */ || body.kind === 223 /* ModuleBlock */) { + var body = node.kind === 255 /* SourceFile */ ? node : node.body; + if (body.kind === 255 /* SourceFile */ || body.kind === 225 /* ModuleBlock */) { for (var _i = 0, _a = body.statements; _i < _a.length; _i++) { var stat = _a[_i]; - if (stat.kind === 232 /* ExportDeclaration */ || stat.kind === 231 /* ExportAssignment */) { + if (stat.kind === 235 /* ExportDeclaration */ || stat.kind === 234 /* ExportAssignment */) { return true; } } @@ -13941,7 +14193,12 @@ var ts; if (node.flags & 1 /* Export */) { errorOnFirstToken(node, ts.Diagnostics.export_modifier_cannot_be_applied_to_ambient_modules_and_module_augmentations_since_they_are_always_visible); } - declareSymbolAndAddToSymbolTable(node, 512 /* ValueModule */, 106639 /* ValueModuleExcludes */); + if (ts.isExternalModuleAugmentation(node)) { + declareSymbolAndAddToSymbolTable(node, 1024 /* NamespaceModule */, 0 /* NamespaceModuleExcludes */); + } + else { + declareSymbolAndAddToSymbolTable(node, 512 /* ValueModule */, 106639 /* ValueModuleExcludes */); + } } else { var state = getModuleInstanceState(node); @@ -14005,7 +14262,7 @@ var ts; // c.IsAccessorDescriptor(previous) is true and IsDataDescriptor(propId.descriptor) is true. // d.IsAccessorDescriptor(previous) is true and IsAccessorDescriptor(propId.descriptor) is true // and either both previous and propId.descriptor have[[Get]] fields or both previous and propId.descriptor have[[Set]] fields - var currentKind = prop.kind === 249 /* PropertyAssignment */ || prop.kind === 250 /* ShorthandPropertyAssignment */ || prop.kind === 145 /* MethodDeclaration */ + var currentKind = prop.kind === 252 /* PropertyAssignment */ || prop.kind === 253 /* ShorthandPropertyAssignment */ || prop.kind === 146 /* MethodDeclaration */ ? 1 /* Property */ : 2 /* Accessor */; var existingKind = seen[identifier.text]; @@ -14027,10 +14284,10 @@ var ts; } function bindBlockScopedDeclaration(node, symbolFlags, symbolExcludes) { switch (blockScopeContainer.kind) { - case 222 /* ModuleDeclaration */: + case 224 /* ModuleDeclaration */: declareModuleMember(node, symbolFlags, symbolExcludes); break; - case 252 /* SourceFile */: + case 255 /* SourceFile */: if (ts.isExternalModule(container)) { declareModuleMember(node, symbolFlags, symbolExcludes); break; @@ -14190,17 +14447,17 @@ var ts; } function updateStrictMode(node) { switch (node.kind) { - case 252 /* SourceFile */: - case 223 /* ModuleBlock */: + case 255 /* SourceFile */: + case 225 /* ModuleBlock */: updateStrictModeStatementList(node.statements); return; - case 196 /* Block */: + case 198 /* Block */: if (ts.isFunctionLike(node.parent)) { updateStrictModeStatementList(node.statements); } return; - case 218 /* ClassDeclaration */: - case 190 /* ClassExpression */: + case 220 /* ClassDeclaration */: + case 191 /* ClassExpression */: // All classes are automatically in strict mode in ES6. inStrictMode = true; return; @@ -14223,14 +14480,14 @@ var ts; var nodeText = ts.getTextOfNodeFromSourceText(file.text, node.expression); // Note: the node text must be exactly "use strict" or 'use strict'. It is not ok for the // string to contain unicode escapes (as per ES5). - return nodeText === "\"use strict\"" || nodeText === "'use strict'"; + return nodeText === '"use strict"' || nodeText === "'use strict'"; } function bindWorker(node) { switch (node.kind) { /* Strict mode checks */ case 69 /* Identifier */: return checkStrictModeIdentifier(node); - case 185 /* BinaryExpression */: + case 186 /* BinaryExpression */: if (ts.isInJavaScriptFile(node)) { var specialKind = ts.getSpecialPropertyAssignmentKind(node); switch (specialKind) { @@ -14254,100 +14511,105 @@ var ts; } } return checkStrictModeBinaryExpression(node); - case 248 /* CatchClause */: + case 251 /* CatchClause */: return checkStrictModeCatchClause(node); - case 179 /* DeleteExpression */: + case 180 /* DeleteExpression */: return checkStrictModeDeleteExpression(node); case 8 /* NumericLiteral */: return checkStrictModeNumericLiteral(node); - case 184 /* PostfixUnaryExpression */: + case 185 /* PostfixUnaryExpression */: return checkStrictModePostfixUnaryExpression(node); - case 183 /* PrefixUnaryExpression */: + case 184 /* PrefixUnaryExpression */: return checkStrictModePrefixUnaryExpression(node); - case 209 /* WithStatement */: + case 211 /* WithStatement */: return checkStrictModeWithStatement(node); - case 163 /* ThisType */: + case 164 /* ThisType */: seenThisKeyword = true; return; - case 152 /* TypePredicate */: + case 153 /* TypePredicate */: return checkTypePredicate(node); - case 139 /* TypeParameter */: + case 140 /* TypeParameter */: return declareSymbolAndAddToSymbolTable(node, 262144 /* TypeParameter */, 530912 /* TypeParameterExcludes */); - case 140 /* Parameter */: + case 141 /* Parameter */: return bindParameter(node); - case 215 /* VariableDeclaration */: - case 167 /* BindingElement */: + case 217 /* VariableDeclaration */: + case 168 /* BindingElement */: return bindVariableDeclarationOrBindingElement(node); - case 143 /* PropertyDeclaration */: - case 142 /* PropertySignature */: - case 262 /* JSDocRecordMember */: + case 144 /* PropertyDeclaration */: + case 143 /* PropertySignature */: + case 265 /* JSDocRecordMember */: return bindPropertyOrMethodOrAccessor(node, 4 /* Property */ | (node.questionToken ? 536870912 /* Optional */ : 0 /* None */), 107455 /* PropertyExcludes */); - case 249 /* PropertyAssignment */: - case 250 /* ShorthandPropertyAssignment */: + case 252 /* PropertyAssignment */: + case 253 /* ShorthandPropertyAssignment */: return bindPropertyOrMethodOrAccessor(node, 4 /* Property */, 107455 /* PropertyExcludes */); - case 251 /* EnumMember */: + case 254 /* EnumMember */: return bindPropertyOrMethodOrAccessor(node, 8 /* EnumMember */, 107455 /* EnumMemberExcludes */); - case 149 /* CallSignature */: - case 150 /* ConstructSignature */: - case 151 /* IndexSignature */: + case 246 /* JsxSpreadAttribute */: + hasJsxSpreadAttribute = true; + return; + case 150 /* CallSignature */: + case 151 /* ConstructSignature */: + case 152 /* IndexSignature */: return declareSymbolAndAddToSymbolTable(node, 131072 /* Signature */, 0 /* None */); - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: // If this is an ObjectLiteralExpression method, then it sits in the same space // as other properties in the object literal. So we use SymbolFlags.PropertyExcludes // so that it will conflict with any other object literal members with the same // name. return bindPropertyOrMethodOrAccessor(node, 8192 /* Method */ | (node.questionToken ? 536870912 /* Optional */ : 0 /* None */), ts.isObjectLiteralMethod(node) ? 107455 /* PropertyExcludes */ : 99263 /* MethodExcludes */); - case 217 /* FunctionDeclaration */: + case 219 /* FunctionDeclaration */: return bindFunctionDeclaration(node); - case 146 /* Constructor */: + case 147 /* Constructor */: return declareSymbolAndAddToSymbolTable(node, 16384 /* Constructor */, /*symbolExcludes:*/ 0 /* None */); - case 147 /* GetAccessor */: + case 148 /* GetAccessor */: return bindPropertyOrMethodOrAccessor(node, 32768 /* GetAccessor */, 41919 /* GetAccessorExcludes */); - case 148 /* SetAccessor */: + case 149 /* SetAccessor */: return bindPropertyOrMethodOrAccessor(node, 65536 /* SetAccessor */, 74687 /* SetAccessorExcludes */); - case 154 /* FunctionType */: - case 155 /* ConstructorType */: - case 265 /* JSDocFunctionType */: + case 155 /* FunctionType */: + case 156 /* ConstructorType */: + case 268 /* JSDocFunctionType */: return bindFunctionOrConstructorType(node); - case 157 /* TypeLiteral */: - case 261 /* JSDocRecordType */: + case 158 /* TypeLiteral */: + case 264 /* JSDocRecordType */: return bindAnonymousDeclaration(node, 2048 /* TypeLiteral */, "__type"); - case 169 /* ObjectLiteralExpression */: + case 170 /* ObjectLiteralExpression */: return bindObjectLiteralExpression(node); - case 177 /* FunctionExpression */: - case 178 /* ArrowFunction */: + case 178 /* FunctionExpression */: + case 179 /* ArrowFunction */: return bindFunctionExpression(node); - case 172 /* CallExpression */: + case 173 /* CallExpression */: if (ts.isInJavaScriptFile(node)) { bindCallExpression(node); } break; // Members of classes, interfaces, and modules - case 190 /* ClassExpression */: - case 218 /* ClassDeclaration */: + case 191 /* ClassExpression */: + case 220 /* ClassDeclaration */: return bindClassLikeDeclaration(node); - case 219 /* InterfaceDeclaration */: + case 221 /* InterfaceDeclaration */: return bindBlockScopedDeclaration(node, 64 /* Interface */, 792960 /* InterfaceExcludes */); - case 220 /* TypeAliasDeclaration */: + case 222 /* TypeAliasDeclaration */: return bindBlockScopedDeclaration(node, 524288 /* TypeAlias */, 793056 /* TypeAliasExcludes */); - case 221 /* EnumDeclaration */: + case 223 /* EnumDeclaration */: return bindEnumDeclaration(node); - case 222 /* ModuleDeclaration */: + case 224 /* ModuleDeclaration */: return bindModuleDeclaration(node); // Imports and exports - case 225 /* ImportEqualsDeclaration */: - case 228 /* NamespaceImport */: - case 230 /* ImportSpecifier */: - case 234 /* ExportSpecifier */: + case 228 /* ImportEqualsDeclaration */: + case 231 /* NamespaceImport */: + case 233 /* ImportSpecifier */: + case 237 /* ExportSpecifier */: return declareSymbolAndAddToSymbolTable(node, 8388608 /* Alias */, 8388608 /* AliasExcludes */); - case 227 /* ImportClause */: + case 227 /* GlobalModuleExportDeclaration */: + return bindGlobalModuleExportDeclaration(node); + case 230 /* ImportClause */: return bindImportClause(node); - case 232 /* ExportDeclaration */: + case 235 /* ExportDeclaration */: return bindExportDeclaration(node); - case 231 /* ExportAssignment */: + case 234 /* ExportAssignment */: return bindExportAssignment(node); - case 252 /* SourceFile */: + case 255 /* SourceFile */: return bindSourceFileIfExternalModule(); } } @@ -14356,7 +14618,7 @@ var ts; if (parameterName && parameterName.kind === 69 /* Identifier */) { checkStrictModeIdentifier(parameterName); } - if (parameterName && parameterName.kind === 163 /* ThisType */) { + if (parameterName && parameterName.kind === 164 /* ThisType */) { seenThisKeyword = true; } bind(type); @@ -14371,12 +14633,12 @@ var ts; bindAnonymousDeclaration(file, 512 /* ValueModule */, "\"" + ts.removeFileExtension(file.fileName) + "\""); } function bindExportAssignment(node) { - var boundExpression = node.kind === 231 /* ExportAssignment */ ? node.expression : node.right; + var boundExpression = node.kind === 234 /* ExportAssignment */ ? node.expression : node.right; if (!container.symbol || !container.symbol.exports) { // Export assignment in some sort of block construct bindAnonymousDeclaration(node, 8388608 /* Alias */, getDeclarationName(node)); } - else if (boundExpression.kind === 69 /* Identifier */ && node.kind === 231 /* ExportAssignment */) { + else if (boundExpression.kind === 69 /* Identifier */ && node.kind === 234 /* ExportAssignment */) { // An export default clause with an identifier exports all meanings of that identifier declareSymbol(container.symbol.exports, container.symbol, node, 8388608 /* Alias */, 107455 /* PropertyExcludes */ | 8388608 /* AliasExcludes */); } @@ -14385,6 +14647,28 @@ var ts; declareSymbol(container.symbol.exports, container.symbol, node, 4 /* Property */, 107455 /* PropertyExcludes */ | 8388608 /* AliasExcludes */); } } + function bindGlobalModuleExportDeclaration(node) { + if (node.modifiers && node.modifiers.length) { + file.bindDiagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.Modifiers_cannot_appear_here)); + } + if (node.parent.kind !== 255 /* SourceFile */) { + file.bindDiagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.Global_module_exports_may_only_appear_at_top_level)); + return; + } + else { + var parent_4 = node.parent; + if (!ts.isExternalModule(parent_4)) { + file.bindDiagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.Global_module_exports_may_only_appear_in_module_files)); + return; + } + if (!parent_4.isDeclarationFile) { + file.bindDiagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.Global_module_exports_may_only_appear_in_declaration_files)); + return; + } + } + file.symbol.globalExports = file.symbol.globalExports || {}; + declareSymbol(file.symbol.globalExports, file.symbol, node, 8388608 /* Alias */, 8388608 /* AliasExcludes */); + } function bindExportDeclaration(node) { if (!container.symbol || !container.symbol.exports) { // Export * in some sort of block construct @@ -14415,11 +14699,11 @@ var ts; function bindModuleExportsAssignment(node) { // 'module.exports = expr' assignment setCommonJsModuleIndicator(node); - bindExportAssignment(node); + declareSymbol(file.symbol.exports, file.symbol, node, 4 /* Property */ | 7340032 /* Export */ | 512 /* ValueModule */, 0 /* None */); } function bindThisPropertyAssignment(node) { // Declare a 'member' in case it turns out the container was an ES5 class - if (container.kind === 177 /* FunctionExpression */ || container.kind === 217 /* FunctionDeclaration */) { + if (container.kind === 178 /* FunctionExpression */ || container.kind === 219 /* FunctionDeclaration */) { container.symbol.members = container.symbol.members || {}; // It's acceptable for multiple 'this' assignments of the same identifier to occur declareSymbol(container.symbol.members, container.symbol, node, 4 /* Property */, 107455 /* PropertyExcludes */ & ~4 /* Property */); @@ -14463,7 +14747,7 @@ var ts; hasDecorators = true; } } - if (node.kind === 218 /* ClassDeclaration */) { + if (node.kind === 220 /* ClassDeclaration */) { bindBlockScopedDeclaration(node, 32 /* Class */, 899519 /* ClassExcludes */); } else { @@ -14641,13 +14925,13 @@ var ts; case 4 /* Unreachable */: var reportError = // report error on all statements except empty ones - (ts.isStatement(node) && node.kind !== 198 /* EmptyStatement */) || + (ts.isStatement(node) && node.kind !== 200 /* EmptyStatement */) || // report error on class declarations - node.kind === 218 /* ClassDeclaration */ || + node.kind === 220 /* ClassDeclaration */ || // report error on instantiated modules or const-enums only modules if preserveConstEnums is set - (node.kind === 222 /* ModuleDeclaration */ && shouldReportErrorOnModuleDeclaration(node)) || + (node.kind === 224 /* ModuleDeclaration */ && shouldReportErrorOnModuleDeclaration(node)) || // report error on regular enums and const enums if preserveConstEnums is set - (node.kind === 221 /* EnumDeclaration */ && (!ts.isConstEnumDeclaration(node) || options.preserveConstEnums)); + (node.kind === 223 /* EnumDeclaration */ && (!ts.isConstEnumDeclaration(node) || options.preserveConstEnums)); if (reportError) { currentReachabilityState = 8 /* ReportedUnreachable */; // unreachable code is reported if @@ -14661,7 +14945,7 @@ var ts; // On the other side we do want to report errors on non-initialized 'lets' because of TDZ var reportUnreachableCode = !options.allowUnreachableCode && !ts.isInAmbientContext(node) && - (node.kind !== 197 /* VariableStatement */ || + (node.kind !== 199 /* VariableStatement */ || ts.getCombinedNodeFlags(node.declarationList) & 3072 /* BlockScoped */ || ts.forEach(node.declarationList.declarations, function (d) { return d.initializer; })); if (reportUnreachableCode) { @@ -14735,6 +15019,7 @@ var ts; var languageVersion = compilerOptions.target || 0 /* ES3 */; var modulekind = ts.getEmitModuleKind(compilerOptions); var allowSyntheticDefaultImports = typeof compilerOptions.allowSyntheticDefaultImports !== "undefined" ? compilerOptions.allowSyntheticDefaultImports : modulekind === ts.ModuleKind.System; + var strictNullChecks = compilerOptions.strictNullChecks; var emitResolver = createResolver(); var undefinedSymbol = createSymbol(4 /* Property */ | 67108864 /* Transient */, "undefined"); undefinedSymbol.declarations = []; @@ -14749,9 +15034,7 @@ var ts; isUnknownSymbol: function (symbol) { return symbol === unknownSymbol; }, getDiagnostics: getDiagnostics, getGlobalDiagnostics: getGlobalDiagnostics, - // The language service will always care about the narrowed type of a symbol, because that is - // the type the language says the symbol should have. - getTypeOfSymbolAtLocation: getNarrowedTypeOfSymbol, + getTypeOfSymbolAtLocation: getTypeOfSymbolAtLocation, getSymbolsOfParameterPropertyDeclaration: getSymbolsOfParameterPropertyDeclaration, getDeclaredTypeOfSymbol: getDeclaredTypeOfSymbol, getPropertiesOfType: getPropertiesOfType, @@ -14786,14 +15069,16 @@ var ts; }; var unknownSymbol = createSymbol(4 /* Property */ | 67108864 /* Transient */, "unknown"); var resolvingSymbol = createSymbol(67108864 /* Transient */, "__resolving__"); + var nullableWideningFlags = strictNullChecks ? 0 : 2097152 /* ContainsUndefinedOrNull */; var anyType = createIntrinsicType(1 /* Any */, "any"); var stringType = createIntrinsicType(2 /* String */, "string"); var numberType = createIntrinsicType(4 /* Number */, "number"); var booleanType = createIntrinsicType(8 /* Boolean */, "boolean"); var esSymbolType = createIntrinsicType(16777216 /* ESSymbol */, "symbol"); var voidType = createIntrinsicType(16 /* Void */, "void"); - var undefinedType = createIntrinsicType(32 /* Undefined */ | 2097152 /* ContainsUndefinedOrNull */, "undefined"); - var nullType = createIntrinsicType(64 /* Null */ | 2097152 /* ContainsUndefinedOrNull */, "null"); + var undefinedType = createIntrinsicType(32 /* Undefined */ | nullableWideningFlags, "undefined"); + var nullType = createIntrinsicType(64 /* Null */ | nullableWideningFlags, "null"); + var emptyArrayElementType = createIntrinsicType(32 /* Undefined */ | 2097152 /* ContainsUndefinedOrNull */, "undefined"); var unknownType = createIntrinsicType(1 /* Any */, "unknown"); var emptyObjectType = createAnonymousType(undefined, emptySymbols, emptyArray, emptyArray, undefined, undefined); var emptyUnionType = emptyObjectType; @@ -14804,11 +15089,11 @@ var ts; // in getPropagatingFlagsOfTypes, and it is checked in inferFromTypes. anyFunctionType.flags |= 8388608 /* ContainsAnyFunctionType */; var noConstraintType = createAnonymousType(undefined, emptySymbols, emptyArray, emptyArray, undefined, undefined); - var anySignature = createSignature(undefined, undefined, emptyArray, anyType, /*typePredicate*/ undefined, 0, /*hasRestParameter*/ false, /*hasStringLiterals*/ false); - var unknownSignature = createSignature(undefined, undefined, emptyArray, unknownType, /*typePredicate*/ undefined, 0, /*hasRestParameter*/ false, /*hasStringLiterals*/ false); + var anySignature = createSignature(undefined, undefined, undefined, emptyArray, anyType, /*typePredicate*/ undefined, 0, /*hasRestParameter*/ false, /*hasStringLiterals*/ false); + var unknownSignature = createSignature(undefined, undefined, undefined, emptyArray, unknownType, /*typePredicate*/ undefined, 0, /*hasRestParameter*/ false, /*hasStringLiterals*/ false); var enumNumberIndexInfo = createIndexInfo(stringType, /*isReadonly*/ true); var globals = {}; - var globalESSymbolConstructorSymbol; + var getGlobalESSymbolConstructorSymbol; var getGlobalPromiseConstructorSymbol; var globalObjectType; var globalFunctionType; @@ -14818,13 +15103,16 @@ var ts; var globalNumberType; var globalBooleanType; var globalRegExpType; - var globalTemplateStringsArrayType; - var globalESSymbolType; - var globalIterableType; - var globalIteratorType; - var globalIterableIteratorType; var anyArrayType; var anyReadonlyArrayType; + // The library files are only loaded when the feature is used. + // This allows users to just specify library files they want to used through --lib + // and they will not get an error from not having unrelated library files + var getGlobalTemplateStringsArrayType; + var getGlobalESSymbolType; + var getGlobalIterableType; + var getGlobalIteratorType; + var getGlobalIterableIteratorType; var getGlobalClassDecoratorType; var getGlobalParameterDecoratorType; var getGlobalPropertyDecoratorType; @@ -14887,6 +15175,7 @@ var ts; }; var subtypeRelation = {}; var assignableRelation = {}; + var comparableRelation = {}; var identityRelation = {}; // This is for caching the result of getSymbolDisplayBuilder. Do not access directly. var _displayBuilder; @@ -14986,7 +15275,7 @@ var ts; target.flags |= source.flags; if (source.valueDeclaration && (!target.valueDeclaration || - (target.valueDeclaration.kind === 222 /* ModuleDeclaration */ && source.valueDeclaration.kind !== 222 /* ModuleDeclaration */))) { + (target.valueDeclaration.kind === 224 /* ModuleDeclaration */ && source.valueDeclaration.kind !== 224 /* ModuleDeclaration */))) { // other kinds of value declarations take precedence over modules target.valueDeclaration = source.valueDeclaration; } @@ -15043,7 +15332,7 @@ var ts; } function mergeModuleAugmentation(moduleName) { var moduleAugmentation = moduleName.parent; - if (moduleAugmentation.symbol.valueDeclaration !== moduleAugmentation) { + if (moduleAugmentation.symbol.declarations[0] !== moduleAugmentation) { // this is a combined symbol for multiple augmentations within the same file. // its symbol already has accumulated information for all declarations // so we need to add it just once - do the work only for first declaration @@ -15099,7 +15388,7 @@ var ts; return nodeLinks[nodeId] || (nodeLinks[nodeId] = {}); } function isGlobalSourceFile(node) { - return node.kind === 252 /* SourceFile */ && !ts.isExternalOrCommonJsModule(node); + return node.kind === 255 /* SourceFile */ && !ts.isExternalOrCommonJsModule(node); } function getSymbol(symbols, name, meaning) { if (meaning && ts.hasProperty(symbols, name)) { @@ -15148,7 +15437,7 @@ var ts; if (declaration.pos <= usage.pos) { // declaration is before usage // still might be illegal if usage is in the initializer of the variable declaration - return declaration.kind !== 215 /* VariableDeclaration */ || + return declaration.kind !== 217 /* VariableDeclaration */ || !isImmediatelyUsedInInitializerOfBlockScopedVariable(declaration, usage); } // declaration is after usage @@ -15156,14 +15445,14 @@ var ts; return isUsedInFunctionOrNonStaticProperty(declaration, usage); function isImmediatelyUsedInInitializerOfBlockScopedVariable(declaration, usage) { var container = ts.getEnclosingBlockScopeContainer(declaration); - if (declaration.parent.parent.kind === 197 /* VariableStatement */ || - declaration.parent.parent.kind === 203 /* ForStatement */) { + if (declaration.parent.parent.kind === 199 /* VariableStatement */ || + declaration.parent.parent.kind === 205 /* ForStatement */) { // variable statement/for statement case, // use site should not be inside variable declaration (initializer of declaration or binding element) return isSameScopeDescendentOf(usage, declaration, container); } - else if (declaration.parent.parent.kind === 205 /* ForOfStatement */ || - declaration.parent.parent.kind === 204 /* ForInStatement */) { + else if (declaration.parent.parent.kind === 207 /* ForOfStatement */ || + declaration.parent.parent.kind === 206 /* ForInStatement */) { // ForIn/ForOf case - use site should not be used in expression part var expression = declaration.parent.parent.expression; return isSameScopeDescendentOf(usage, expression, container); @@ -15180,7 +15469,7 @@ var ts; return true; } var initializerOfNonStaticProperty = current.parent && - current.parent.kind === 143 /* PropertyDeclaration */ && + current.parent.kind === 144 /* PropertyDeclaration */ && (current.parent.flags & 32 /* Static */) === 0 && current.parent.initializer === current; if (initializerOfNonStaticProperty) { @@ -15212,11 +15501,11 @@ var ts; // - parameters are only in the scope of function body // This restriction does not apply to JSDoc comment types because they are parented // at a higher level than type parameters would normally be - if (meaning & result.flags & 793056 /* Type */ && lastLocation.kind !== 269 /* JSDocComment */) { + if (meaning & result.flags & 793056 /* Type */ && lastLocation.kind !== 272 /* JSDocComment */) { useResult = result.flags & 262144 /* TypeParameter */ ? lastLocation === location.type || - lastLocation.kind === 140 /* Parameter */ || - lastLocation.kind === 139 /* TypeParameter */ + lastLocation.kind === 141 /* Parameter */ || + lastLocation.kind === 140 /* TypeParameter */ : false; } if (meaning & 107455 /* Value */ && result.flags & 1 /* FunctionScopedVariable */) { @@ -15225,9 +15514,9 @@ var ts; // however it is detected separately when checking initializers of parameters // to make sure that they reference no variables declared after them. useResult = - lastLocation.kind === 140 /* Parameter */ || + lastLocation.kind === 141 /* Parameter */ || (lastLocation === location.type && - result.valueDeclaration.kind === 140 /* Parameter */); + result.valueDeclaration.kind === 141 /* Parameter */); } } if (useResult) { @@ -15239,12 +15528,12 @@ var ts; } } switch (location.kind) { - case 252 /* SourceFile */: + case 255 /* SourceFile */: if (!ts.isExternalOrCommonJsModule(location)) break; - case 222 /* ModuleDeclaration */: + case 224 /* ModuleDeclaration */: var moduleExports = getSymbolOfNode(location).exports; - if (location.kind === 252 /* SourceFile */ || ts.isAmbientModule(location)) { + if (location.kind === 255 /* SourceFile */ || ts.isAmbientModule(location)) { // It's an external module. First see if the module has an export default and if the local // name of that export default matches. if (result = moduleExports["default"]) { @@ -15267,7 +15556,7 @@ var ts; // which is not the desired behavior. if (ts.hasProperty(moduleExports, name) && moduleExports[name].flags === 8388608 /* Alias */ && - ts.getDeclarationOfKind(moduleExports[name], 234 /* ExportSpecifier */)) { + ts.getDeclarationOfKind(moduleExports[name], 237 /* ExportSpecifier */)) { break; } } @@ -15275,13 +15564,13 @@ var ts; break loop; } break; - case 221 /* EnumDeclaration */: + case 223 /* EnumDeclaration */: if (result = getSymbol(getSymbolOfNode(location).exports, name, meaning & 8 /* EnumMember */)) { break loop; } break; - case 143 /* PropertyDeclaration */: - case 142 /* PropertySignature */: + case 144 /* PropertyDeclaration */: + case 143 /* PropertySignature */: // TypeScript 1.0 spec (April 2014): 8.4.1 // Initializer expressions for instance member variables are evaluated in the scope // of the class constructor body but are not permitted to reference parameters or @@ -15298,9 +15587,9 @@ var ts; } } break; - case 218 /* ClassDeclaration */: - case 190 /* ClassExpression */: - case 219 /* InterfaceDeclaration */: + case 220 /* ClassDeclaration */: + case 191 /* ClassExpression */: + case 221 /* InterfaceDeclaration */: if (result = getSymbol(getSymbolOfNode(location).members, name, meaning & 793056 /* Type */)) { if (lastLocation && lastLocation.flags & 32 /* Static */) { // TypeScript 1.0 spec (April 2014): 3.4.1 @@ -15311,7 +15600,7 @@ var ts; } break loop; } - if (location.kind === 190 /* ClassExpression */ && meaning & 32 /* Class */) { + if (location.kind === 191 /* ClassExpression */ && meaning & 32 /* Class */) { var className = location.name; if (className && name === className.text) { result = location.symbol; @@ -15327,9 +15616,9 @@ var ts; // [foo()]() { } // <-- Reference to T from class's own computed property // } // - case 138 /* ComputedPropertyName */: + case 139 /* ComputedPropertyName */: grandparent = location.parent.parent; - if (ts.isClassLike(grandparent) || grandparent.kind === 219 /* InterfaceDeclaration */) { + if (ts.isClassLike(grandparent) || grandparent.kind === 221 /* InterfaceDeclaration */) { // A reference to this grandparent's type parameters would be an error if (result = getSymbol(getSymbolOfNode(grandparent).members, name, meaning & 793056 /* Type */)) { error(errorLocation, ts.Diagnostics.A_computed_property_name_cannot_reference_a_type_parameter_from_its_containing_type); @@ -15337,19 +15626,19 @@ var ts; } } break; - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: - case 146 /* Constructor */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: - case 217 /* FunctionDeclaration */: - case 178 /* ArrowFunction */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: + case 147 /* Constructor */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: + case 219 /* FunctionDeclaration */: + case 179 /* ArrowFunction */: if (meaning & 3 /* Variable */ && name === "arguments") { result = argumentsSymbol; break loop; } break; - case 177 /* FunctionExpression */: + case 178 /* FunctionExpression */: if (meaning & 3 /* Variable */ && name === "arguments") { result = argumentsSymbol; break loop; @@ -15362,7 +15651,7 @@ var ts; } } break; - case 141 /* Decorator */: + case 142 /* Decorator */: // Decorators are resolved at the class declaration. Resolving at the parameter // or member would result in looking up locals in the method. // @@ -15371,7 +15660,7 @@ var ts; // method(@y x, y) {} // <-- decorator y should be resolved at the class declaration, not the parameter. // } // - if (location.parent && location.parent.kind === 140 /* Parameter */) { + if (location.parent && location.parent.kind === 141 /* Parameter */) { location = location.parent; } // @@ -15465,7 +15754,7 @@ var ts; // Block-scoped variables cannot be used before their definition var declaration = ts.forEach(result.declarations, function (d) { return ts.isBlockOrCatchScoped(d) ? d : undefined; }); ts.Debug.assert(declaration !== undefined, "Block-scoped variable declaration is undefined"); - if (!isBlockScopedNameDeclaredBeforeUse(ts.getAncestor(declaration, 215 /* VariableDeclaration */), errorLocation)) { + if (!isBlockScopedNameDeclaredBeforeUse(ts.getAncestor(declaration, 217 /* VariableDeclaration */), errorLocation)) { error(errorLocation, ts.Diagnostics.Block_scoped_variable_0_used_before_its_declaration, ts.declarationNameToString(declaration.name)); } } @@ -15486,10 +15775,10 @@ var ts; } function getAnyImportSyntax(node) { if (ts.isAliasSymbolDeclaration(node)) { - if (node.kind === 225 /* ImportEqualsDeclaration */) { + if (node.kind === 228 /* ImportEqualsDeclaration */) { return node; } - while (node && node.kind !== 226 /* ImportDeclaration */) { + while (node && node.kind !== 229 /* ImportDeclaration */) { node = node.parent; } return node; @@ -15499,7 +15788,7 @@ var ts; return ts.forEach(symbol.declarations, function (d) { return ts.isAliasSymbolDeclaration(d) ? d : undefined; }); } function getTargetOfImportEqualsDeclaration(node) { - if (node.moduleReference.kind === 236 /* ExternalModuleReference */) { + if (node.moduleReference.kind === 239 /* ExternalModuleReference */) { return resolveExternalModuleSymbol(resolveExternalModuleName(node, ts.getExternalModuleImportEqualsDeclarationExpression(node))); } return getSymbolOfPartOfRightHandSideOfImportEquals(node.moduleReference, node); @@ -15507,7 +15796,9 @@ var ts; function getTargetOfImportClause(node) { var moduleSymbol = resolveExternalModuleName(node, node.parent.moduleSpecifier); if (moduleSymbol) { - var exportDefaultSymbol = resolveSymbol(moduleSymbol.exports["default"]); + var exportDefaultSymbol = moduleSymbol.exports["export="] ? + getPropertyOfType(getTypeOfSymbol(moduleSymbol.exports["export="]), "default") : + resolveSymbol(moduleSymbol.exports["default"]); if (!exportDefaultSymbol && !allowSyntheticDefaultImports) { error(node.name, ts.Diagnostics.Module_0_has_no_default_export, symbolToString(moduleSymbol)); } @@ -15576,8 +15867,15 @@ var ts; if (targetSymbol) { var name_9 = specifier.propertyName || specifier.name; if (name_9.text) { + var symbolFromVariable = void 0; + // First check if module was specified with "export=". If so, get the member from the resolved type + if (moduleSymbol && moduleSymbol.exports && moduleSymbol.exports["export="]) { + symbolFromVariable = getPropertyOfType(getTypeOfSymbol(targetSymbol), name_9.text); + } + else { + symbolFromVariable = getPropertyOfVariable(targetSymbol, name_9.text); + } var symbolFromModule = getExportOfModule(targetSymbol, name_9.text); - var symbolFromVariable = getPropertyOfVariable(targetSymbol, name_9.text); var symbol = symbolFromModule && symbolFromVariable ? combineValueAndTypeSymbols(symbolFromVariable, symbolFromModule) : symbolFromModule || symbolFromVariable; @@ -15591,6 +15889,9 @@ var ts; function getTargetOfImportSpecifier(node) { return getExternalModuleMember(node.parent.parent.parent, node); } + function getTargetOfGlobalModuleExportDeclaration(node) { + return resolveExternalModuleSymbol(node.parent.symbol); + } function getTargetOfExportSpecifier(node) { return node.parent.parent.moduleSpecifier ? getExternalModuleMember(node.parent.parent, node) : @@ -15601,18 +15902,20 @@ var ts; } function getTargetOfAliasDeclaration(node) { switch (node.kind) { - case 225 /* ImportEqualsDeclaration */: + case 228 /* ImportEqualsDeclaration */: return getTargetOfImportEqualsDeclaration(node); - case 227 /* ImportClause */: + case 230 /* ImportClause */: return getTargetOfImportClause(node); - case 228 /* NamespaceImport */: + case 231 /* NamespaceImport */: return getTargetOfNamespaceImport(node); - case 230 /* ImportSpecifier */: + case 233 /* ImportSpecifier */: return getTargetOfImportSpecifier(node); - case 234 /* ExportSpecifier */: + case 237 /* ExportSpecifier */: return getTargetOfExportSpecifier(node); - case 231 /* ExportAssignment */: + case 234 /* ExportAssignment */: return getTargetOfExportAssignment(node); + case 227 /* GlobalModuleExportDeclaration */: + return getTargetOfGlobalModuleExportDeclaration(node); } } function resolveSymbol(symbol) { @@ -15656,11 +15959,11 @@ var ts; if (!links.referenced) { links.referenced = true; var node = getDeclarationOfAliasSymbol(symbol); - if (node.kind === 231 /* ExportAssignment */) { + if (node.kind === 234 /* ExportAssignment */) { // export default checkExpressionCached(node.expression); } - else if (node.kind === 234 /* ExportSpecifier */) { + else if (node.kind === 237 /* ExportSpecifier */) { // export { } or export { as foo } checkExpressionCached(node.propertyName || node.name); } @@ -15673,7 +15976,7 @@ var ts; // This function is only for imports with entity names function getSymbolOfPartOfRightHandSideOfImportEquals(entityName, importDeclaration) { if (!importDeclaration) { - importDeclaration = ts.getAncestor(entityName, 225 /* ImportEqualsDeclaration */); + importDeclaration = ts.getAncestor(entityName, 228 /* ImportEqualsDeclaration */); ts.Debug.assert(importDeclaration !== undefined); } // There are three things we might try to look for. In the following examples, @@ -15686,13 +15989,13 @@ var ts; entityName = entityName.parent; } // Check for case 1 and 3 in the above example - if (entityName.kind === 69 /* Identifier */ || entityName.parent.kind === 137 /* QualifiedName */) { + if (entityName.kind === 69 /* Identifier */ || entityName.parent.kind === 138 /* QualifiedName */) { return resolveEntityName(entityName, 1536 /* Namespace */); } else { // Case 2 in above example // entityName.kind could be a QualifiedName or a Missing identifier - ts.Debug.assert(entityName.parent.kind === 225 /* ImportEqualsDeclaration */); + ts.Debug.assert(entityName.parent.kind === 228 /* ImportEqualsDeclaration */); return resolveEntityName(entityName, 107455 /* Value */ | 793056 /* Type */ | 1536 /* Namespace */); } } @@ -15712,9 +16015,9 @@ var ts; return undefined; } } - else if (name.kind === 137 /* QualifiedName */ || name.kind === 170 /* PropertyAccessExpression */) { - var left = name.kind === 137 /* QualifiedName */ ? name.left : name.expression; - var right = name.kind === 137 /* QualifiedName */ ? name.right : name.name; + else if (name.kind === 138 /* QualifiedName */ || name.kind === 171 /* PropertyAccessExpression */) { + var left = name.kind === 138 /* QualifiedName */ ? name.left : name.expression; + var right = name.kind === 138 /* QualifiedName */ ? name.right : name.name; var namespace = resolveEntityName(left, 1536 /* Namespace */, ignoreErrors); if (!namespace || namespace === unknownSymbol || ts.nodeIsMissing(right)) { return undefined; @@ -15749,7 +16052,7 @@ var ts; } var isRelative = ts.isExternalModuleNameRelative(moduleName); if (!isRelative) { - var symbol = getSymbol(globals, "\"" + moduleName + "\"", 512 /* ValueModule */); + var symbol = getSymbol(globals, '"' + moduleName + '"', 512 /* ValueModule */); if (symbol) { // merged symbol is module declaration symbol combined with all augmentations return getMergedSymbol(symbol); @@ -15900,7 +16203,7 @@ var ts; var members = node.members; for (var _i = 0, members_1 = members; _i < members_1.length; _i++) { var member = members_1[_i]; - if (member.kind === 146 /* Constructor */ && ts.nodeIsPresent(member.body)) { + if (member.kind === 147 /* Constructor */ && ts.nodeIsPresent(member.body)) { return member; } } @@ -15971,21 +16274,15 @@ var ts; } } switch (location_1.kind) { - case 252 /* SourceFile */: + case 255 /* SourceFile */: if (!ts.isExternalOrCommonJsModule(location_1)) { break; } - case 222 /* ModuleDeclaration */: + case 224 /* ModuleDeclaration */: if (result = callback(getSymbolOfNode(location_1).exports)) { return result; } break; - case 218 /* ClassDeclaration */: - case 219 /* InterfaceDeclaration */: - if (result = callback(getSymbolOfNode(location_1).members)) { - return result; - } - break; } } return callback(globals); @@ -16022,7 +16319,7 @@ var ts; return ts.forEachValue(symbols, function (symbolFromSymbolTable) { if (symbolFromSymbolTable.flags & 8388608 /* Alias */ && symbolFromSymbolTable.name !== "export=" - && !ts.getDeclarationOfKind(symbolFromSymbolTable, 234 /* ExportSpecifier */)) { + && !ts.getDeclarationOfKind(symbolFromSymbolTable, 237 /* ExportSpecifier */)) { if (!useOnlyExternalAliasing || // Is this external alias, then use it to name ts.forEach(symbolFromSymbolTable.declarations, ts.isExternalModuleImportEqualsDeclaration)) { @@ -16041,7 +16338,9 @@ var ts; }); } if (symbol) { - return forEachSymbolTableInScope(enclosingDeclaration, getAccessibleSymbolChainFromSymbolTable); + if (!(isPropertyOrMethodDeclarationSymbol(symbol))) { + return forEachSymbolTableInScope(enclosingDeclaration, getAccessibleSymbolChainFromSymbolTable); + } } } function needsQualification(symbol, enclosingDeclaration, meaning) { @@ -16059,7 +16358,7 @@ var ts; return true; } // Qualify if the symbol from symbol table has same meaning as expected - symbolFromSymbolTable = (symbolFromSymbolTable.flags & 8388608 /* Alias */ && !ts.getDeclarationOfKind(symbolFromSymbolTable, 234 /* ExportSpecifier */)) ? resolveAlias(symbolFromSymbolTable) : symbolFromSymbolTable; + symbolFromSymbolTable = (symbolFromSymbolTable.flags & 8388608 /* Alias */ && !ts.getDeclarationOfKind(symbolFromSymbolTable, 237 /* ExportSpecifier */)) ? resolveAlias(symbolFromSymbolTable) : symbolFromSymbolTable; if (symbolFromSymbolTable.flags & meaning) { qualify = true; return true; @@ -16069,6 +16368,24 @@ var ts; }); return qualify; } + function isPropertyOrMethodDeclarationSymbol(symbol) { + if (symbol.declarations && symbol.declarations.length) { + for (var _i = 0, _a = symbol.declarations; _i < _a.length; _i++) { + var declaration = _a[_i]; + switch (declaration.kind) { + case 144 /* PropertyDeclaration */: + case 146 /* MethodDeclaration */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: + continue; + default: + return false; + } + } + return true; + } + return false; + } function isSymbolAccessible(symbol, enclosingDeclaration, meaning) { if (symbol && enclosingDeclaration && !(symbol.flags & 262144 /* TypeParameter */)) { var initialSymbol = symbol; @@ -16132,7 +16449,7 @@ var ts; } } function hasExternalModuleSymbol(declaration) { - return ts.isAmbientModule(declaration) || (declaration.kind === 252 /* SourceFile */ && ts.isExternalOrCommonJsModule(declaration)); + return ts.isAmbientModule(declaration) || (declaration.kind === 255 /* SourceFile */ && ts.isExternalOrCommonJsModule(declaration)); } function hasVisibleDeclarations(symbol) { var aliasesToMakeVisible; @@ -16168,12 +16485,12 @@ var ts; function isEntityNameVisible(entityName, enclosingDeclaration) { // get symbol of the first identifier of the entityName var meaning; - if (entityName.parent.kind === 156 /* TypeQuery */) { + if (entityName.parent.kind === 157 /* TypeQuery */ || ts.isExpressionWithTypeArgumentsInClassExtendsClause(entityName.parent)) { // Typeof value meaning = 107455 /* Value */ | 1048576 /* ExportValue */; } - else if (entityName.kind === 137 /* QualifiedName */ || entityName.kind === 170 /* PropertyAccessExpression */ || - entityName.parent.kind === 225 /* ImportEqualsDeclaration */) { + else if (entityName.kind === 138 /* QualifiedName */ || entityName.kind === 171 /* PropertyAccessExpression */ || + entityName.parent.kind === 228 /* ImportEqualsDeclaration */) { // Left identifier from type reference or TypeAlias // Entity name of the import declaration meaning = 1536 /* Namespace */; @@ -16244,10 +16561,10 @@ var ts; function getTypeAliasForTypeLiteral(type) { if (type.symbol && type.symbol.flags & 2048 /* TypeLiteral */) { var node = type.symbol.declarations[0].parent; - while (node.kind === 162 /* ParenthesizedType */) { + while (node.kind === 163 /* ParenthesizedType */) { node = node.parent; } - if (node.kind === 220 /* TypeAliasDeclaration */) { + if (node.kind === 222 /* TypeAliasDeclaration */) { return getSymbolOfNode(node); } } @@ -16255,7 +16572,7 @@ var ts; } function isTopLevelInExternalModuleAugmentation(node) { return node && node.parent && - node.parent.kind === 223 /* ModuleBlock */ && + node.parent.kind === 225 /* ModuleBlock */ && ts.isExternalModuleAugmentation(node.parent.parent); } function getSymbolDisplayBuilder() { @@ -16266,10 +16583,10 @@ var ts; return ts.declarationNameToString(declaration.name); } switch (declaration.kind) { - case 190 /* ClassExpression */: + case 191 /* ClassExpression */: return "(Anonymous class)"; - case 177 /* FunctionExpression */: - case 178 /* ArrowFunction */: + case 178 /* FunctionExpression */: + case 179 /* ArrowFunction */: return "(Anonymous function)"; } } @@ -16445,14 +16762,14 @@ var ts; while (i < length_1) { // Find group of type arguments for type parameters with the same declaring container. var start = i; - var parent_4 = getParentSymbolOfTypeParameter(outerTypeParameters[i]); + var parent_5 = getParentSymbolOfTypeParameter(outerTypeParameters[i]); do { i++; - } while (i < length_1 && getParentSymbolOfTypeParameter(outerTypeParameters[i]) === parent_4); + } while (i < length_1 && getParentSymbolOfTypeParameter(outerTypeParameters[i]) === parent_5); // When type parameters are their own type arguments for the whole group (i.e. we have // the default outer type arguments), we don't show the group. if (!ts.rangeEquals(outerTypeParameters, typeArguments, start, i)) { - writeSymbolTypeReference(parent_4, typeArguments, start, i, flags); + writeSymbolTypeReference(parent_5, typeArguments, start, i, flags); writePunctuation(writer, 21 /* DotToken */); } } @@ -16518,7 +16835,7 @@ var ts; var isNonLocalFunctionSymbol = !!(symbol.flags & 16 /* Function */) && (symbol.parent || ts.forEach(symbol.declarations, function (declaration) { - return declaration.parent.kind === 252 /* SourceFile */ || declaration.parent.kind === 223 /* ModuleBlock */; + return declaration.parent.kind === 255 /* SourceFile */ || declaration.parent.kind === 225 /* ModuleBlock */; })); if (isStaticMethodSymbol || isNonLocalFunctionSymbol) { // typeof is allowed only for static/non local functions @@ -16659,7 +16976,12 @@ var ts; if (ts.isRestParameter(parameterNode)) { writePunctuation(writer, 22 /* DotDotDotToken */); } - appendSymbolNameOnly(p, writer); + if (ts.isBindingPattern(parameterNode.name)) { + buildBindingPatternDisplay(parameterNode.name, writer, enclosingDeclaration, flags, symbolStack); + } + else { + appendSymbolNameOnly(p, writer); + } if (isOptionalParameter(parameterNode)) { writePunctuation(writer, 53 /* QuestionToken */); } @@ -16667,19 +16989,59 @@ var ts; writeSpace(writer); buildTypeDisplay(getTypeOfSymbol(p), writer, enclosingDeclaration, flags, symbolStack); } + function buildBindingPatternDisplay(bindingPattern, writer, enclosingDeclaration, flags, symbolStack) { + // We have to explicitly emit square bracket and bracket because these tokens are not stored inside the node. + if (bindingPattern.kind === 166 /* ObjectBindingPattern */) { + writePunctuation(writer, 15 /* OpenBraceToken */); + buildDisplayForCommaSeparatedList(bindingPattern.elements, writer, function (e) { return buildBindingElementDisplay(e, writer, enclosingDeclaration, flags, symbolStack); }); + writePunctuation(writer, 16 /* CloseBraceToken */); + } + else if (bindingPattern.kind === 167 /* ArrayBindingPattern */) { + writePunctuation(writer, 19 /* OpenBracketToken */); + var elements = bindingPattern.elements; + buildDisplayForCommaSeparatedList(elements, writer, function (e) { return buildBindingElementDisplay(e, writer, enclosingDeclaration, flags, symbolStack); }); + if (elements && elements.hasTrailingComma) { + writePunctuation(writer, 24 /* CommaToken */); + } + writePunctuation(writer, 20 /* CloseBracketToken */); + } + } + function buildBindingElementDisplay(bindingElement, writer, enclosingDeclaration, flags, symbolStack) { + if (bindingElement.kind === 192 /* OmittedExpression */) { + return; + } + ts.Debug.assert(bindingElement.kind === 168 /* BindingElement */); + if (bindingElement.propertyName) { + writer.writeSymbol(ts.getTextOfNode(bindingElement.propertyName), bindingElement.symbol); + writePunctuation(writer, 54 /* ColonToken */); + writeSpace(writer); + } + if (ts.isBindingPattern(bindingElement.name)) { + buildBindingPatternDisplay(bindingElement.name, writer, enclosingDeclaration, flags, symbolStack); + } + else { + if (bindingElement.dotDotDotToken) { + writePunctuation(writer, 22 /* DotDotDotToken */); + } + appendSymbolNameOnly(bindingElement.symbol, writer); + } + } function buildDisplayForTypeParametersAndDelimiters(typeParameters, writer, enclosingDeclaration, flags, symbolStack) { if (typeParameters && typeParameters.length) { writePunctuation(writer, 25 /* LessThanToken */); - for (var i = 0; i < typeParameters.length; i++) { - if (i > 0) { - writePunctuation(writer, 24 /* CommaToken */); - writeSpace(writer); - } - buildTypeParameterDisplay(typeParameters[i], writer, enclosingDeclaration, flags, symbolStack); - } + buildDisplayForCommaSeparatedList(typeParameters, writer, function (p) { return buildTypeParameterDisplay(p, writer, enclosingDeclaration, flags, symbolStack); }); writePunctuation(writer, 27 /* GreaterThanToken */); } } + function buildDisplayForCommaSeparatedList(list, writer, action) { + for (var i = 0; i < list.length; i++) { + if (i > 0) { + writePunctuation(writer, 24 /* CommaToken */); + writeSpace(writer); + } + action(list[i]); + } + } function buildDisplayForTypeArgumentsAndDelimiters(typeParameters, mapper, writer, enclosingDeclaration, flags, symbolStack) { if (typeParameters && typeParameters.length) { writePunctuation(writer, 25 /* LessThanToken */); @@ -16693,10 +17055,16 @@ var ts; writePunctuation(writer, 27 /* GreaterThanToken */); } } - function buildDisplayForParametersAndDelimiters(parameters, writer, enclosingDeclaration, flags, symbolStack) { + function buildDisplayForParametersAndDelimiters(thisType, parameters, writer, enclosingDeclaration, flags, symbolStack) { writePunctuation(writer, 17 /* OpenParenToken */); + if (thisType) { + writeKeyword(writer, 97 /* ThisKeyword */); + writePunctuation(writer, 54 /* ColonToken */); + writeSpace(writer); + buildTypeDisplay(thisType, writer, enclosingDeclaration, flags, symbolStack); + } for (var i = 0; i < parameters.length; i++) { - if (i > 0) { + if (i > 0 || thisType) { writePunctuation(writer, 24 /* CommaToken */); writeSpace(writer); } @@ -16746,7 +17114,7 @@ var ts; else { buildDisplayForTypeParametersAndDelimiters(signature.typeParameters, writer, enclosingDeclaration, flags, symbolStack); } - buildDisplayForParametersAndDelimiters(signature.parameters, writer, enclosingDeclaration, flags, symbolStack); + buildDisplayForParametersAndDelimiters(signature.thisType, signature.parameters, writer, enclosingDeclaration, flags, symbolStack); buildReturnTypeDisplay(signature, writer, enclosingDeclaration, flags, symbolStack); } return _displayBuilder || (_displayBuilder = { @@ -16773,86 +17141,86 @@ var ts; return false; function determineIfDeclarationIsVisible() { switch (node.kind) { - case 167 /* BindingElement */: + case 168 /* BindingElement */: return isDeclarationVisible(node.parent.parent); - case 215 /* VariableDeclaration */: + case 217 /* VariableDeclaration */: if (ts.isBindingPattern(node.name) && !node.name.elements.length) { // If the binding pattern is empty, this variable declaration is not visible return false; } // Otherwise fall through - case 222 /* ModuleDeclaration */: - case 218 /* ClassDeclaration */: - case 219 /* InterfaceDeclaration */: - case 220 /* TypeAliasDeclaration */: - case 217 /* FunctionDeclaration */: - case 221 /* EnumDeclaration */: - case 225 /* ImportEqualsDeclaration */: + case 224 /* ModuleDeclaration */: + case 220 /* ClassDeclaration */: + case 221 /* InterfaceDeclaration */: + case 222 /* TypeAliasDeclaration */: + case 219 /* FunctionDeclaration */: + case 223 /* EnumDeclaration */: + case 228 /* ImportEqualsDeclaration */: // external module augmentation is always visible if (ts.isExternalModuleAugmentation(node)) { return true; } - var parent_5 = getDeclarationContainer(node); + var parent_6 = getDeclarationContainer(node); // If the node is not exported or it is not ambient module element (except import declaration) if (!(ts.getCombinedNodeFlags(node) & 1 /* Export */) && - !(node.kind !== 225 /* ImportEqualsDeclaration */ && parent_5.kind !== 252 /* SourceFile */ && ts.isInAmbientContext(parent_5))) { - return isGlobalSourceFile(parent_5); + !(node.kind !== 228 /* ImportEqualsDeclaration */ && parent_6.kind !== 255 /* SourceFile */ && ts.isInAmbientContext(parent_6))) { + return isGlobalSourceFile(parent_6); } // Exported members/ambient module elements (exception import declaration) are visible if parent is visible - return isDeclarationVisible(parent_5); - case 143 /* PropertyDeclaration */: - case 142 /* PropertySignature */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: + return isDeclarationVisible(parent_6); + case 144 /* PropertyDeclaration */: + case 143 /* PropertySignature */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: if (node.flags & (8 /* Private */ | 16 /* Protected */)) { // Private/protected properties/methods are not visible return false; } // Public properties/methods are visible if its parents are visible, so const it fall into next case statement - case 146 /* Constructor */: - case 150 /* ConstructSignature */: - case 149 /* CallSignature */: - case 151 /* IndexSignature */: - case 140 /* Parameter */: - case 223 /* ModuleBlock */: - case 154 /* FunctionType */: - case 155 /* ConstructorType */: - case 157 /* TypeLiteral */: - case 153 /* TypeReference */: - case 158 /* ArrayType */: - case 159 /* TupleType */: - case 160 /* UnionType */: - case 161 /* IntersectionType */: - case 162 /* ParenthesizedType */: + case 147 /* Constructor */: + case 151 /* ConstructSignature */: + case 150 /* CallSignature */: + case 152 /* IndexSignature */: + case 141 /* Parameter */: + case 225 /* ModuleBlock */: + case 155 /* FunctionType */: + case 156 /* ConstructorType */: + case 158 /* TypeLiteral */: + case 154 /* TypeReference */: + case 159 /* ArrayType */: + case 160 /* TupleType */: + case 161 /* UnionType */: + case 162 /* IntersectionType */: + case 163 /* ParenthesizedType */: return isDeclarationVisible(node.parent); // Default binding, import specifier and namespace import is visible // only on demand so by default it is not visible - case 227 /* ImportClause */: - case 228 /* NamespaceImport */: - case 230 /* ImportSpecifier */: + case 230 /* ImportClause */: + case 231 /* NamespaceImport */: + case 233 /* ImportSpecifier */: return false; // Type parameters are always visible - case 139 /* TypeParameter */: + case 140 /* TypeParameter */: // Source file is always visible - case 252 /* SourceFile */: + case 255 /* SourceFile */: return true; // Export assignments do not create name bindings outside the module - case 231 /* ExportAssignment */: + case 234 /* ExportAssignment */: return false; default: - ts.Debug.fail("isDeclarationVisible unknown: SyntaxKind: " + node.kind); + return false; } } } function collectLinkedAliases(node) { var exportSymbol; - if (node.parent && node.parent.kind === 231 /* ExportAssignment */) { + if (node.parent && node.parent.kind === 234 /* ExportAssignment */) { exportSymbol = resolveName(node.parent, node.text, 107455 /* Value */ | 793056 /* Type */ | 1536 /* Namespace */ | 8388608 /* Alias */, ts.Diagnostics.Cannot_find_name_0, node); } - else if (node.parent.kind === 234 /* ExportSpecifier */) { + else if (node.parent.kind === 237 /* ExportSpecifier */) { var exportSpecifier = node.parent; exportSymbol = exportSpecifier.parent.parent.moduleSpecifier ? getExternalModuleMember(exportSpecifier.parent.parent, exportSpecifier) : @@ -16946,12 +17314,12 @@ var ts; node = ts.getRootDeclaration(node); while (node) { switch (node.kind) { - case 215 /* VariableDeclaration */: - case 216 /* VariableDeclarationList */: - case 230 /* ImportSpecifier */: - case 229 /* NamedImports */: - case 228 /* NamespaceImport */: - case 227 /* ImportClause */: + case 217 /* VariableDeclaration */: + case 218 /* VariableDeclarationList */: + case 233 /* ImportSpecifier */: + case 232 /* NamedImports */: + case 231 /* NamespaceImport */: + case 230 /* ImportClause */: node = node.parent; break; default: @@ -16988,7 +17356,7 @@ var ts; case 9 /* StringLiteral */: case 8 /* NumericLiteral */: return name.text; - case 138 /* ComputedPropertyName */: + case 139 /* ComputedPropertyName */: if (ts.isStringOrNumericLiteral(name.expression.kind)) { return name.expression.text; } @@ -16996,9 +17364,9 @@ var ts; return undefined; } function isComputedNonLiteralName(name) { - return name.kind === 138 /* ComputedPropertyName */ && !ts.isStringOrNumericLiteral(name.expression.kind); + return name.kind === 139 /* ComputedPropertyName */ && !ts.isStringOrNumericLiteral(name.expression.kind); } - // Return the inferred type for a binding element + /** Return the inferred type for a binding element */ function getTypeForBindingElement(declaration) { var pattern = declaration.parent; var parentType = getTypeForBindingElementParent(pattern.parent); @@ -17016,13 +17384,16 @@ var ts; return parentType; } var type; - if (pattern.kind === 165 /* ObjectBindingPattern */) { + if (pattern.kind === 166 /* ObjectBindingPattern */) { // Use explicitly specified property name ({ p: xxx } form), or otherwise the implied name ({ p } form) var name_10 = declaration.propertyName || declaration.name; if (isComputedNonLiteralName(name_10)) { // computed properties with non-literal names are treated as 'any' return anyType; } + if (declaration.initializer) { + getContextualType(declaration.initializer); + } // Use type of the specified property, or otherwise, for a numeric name, the type of the numeric index signature, // or otherwise the type of the string index signature. var text = getTextOfPropertyName(name_10); @@ -17060,6 +17431,11 @@ var ts; type = createArrayType(elementType); } } + // In strict null checking mode, if a default value of a non-undefined type is specified, remove + // undefined from the final type. + if (strictNullChecks && declaration.initializer && !(getNullableKind(checkExpressionCached(declaration.initializer)) & 32 /* Undefined */)) { + type = removeNullableKind(type, 32 /* Undefined */); + } return type; } function getTypeForVariableLikeDeclarationFromJSDocComment(declaration) { @@ -17074,16 +17450,16 @@ var ts; if (typeTag && typeTag.typeExpression) { return typeTag.typeExpression.type; } - if (declaration.kind === 215 /* VariableDeclaration */ && - declaration.parent.kind === 216 /* VariableDeclarationList */ && - declaration.parent.parent.kind === 197 /* VariableStatement */) { + if (declaration.kind === 217 /* VariableDeclaration */ && + declaration.parent.kind === 218 /* VariableDeclarationList */ && + declaration.parent.parent.kind === 199 /* VariableStatement */) { // @type annotation might have been on the variable statement, try that instead. var annotation = ts.getJSDocTypeTag(declaration.parent.parent); if (annotation && annotation.typeExpression) { return annotation.typeExpression.type; } } - else if (declaration.kind === 140 /* Parameter */) { + else if (declaration.kind === 141 /* Parameter */) { // If it's a parameter, see if the parent has a jsdoc comment with an @param // annotation. var paramTag = ts.getCorrespondingJSDocParameterTag(declaration); @@ -17105,10 +17481,10 @@ var ts; } } // A variable declared in a for..in statement is always of type string - if (declaration.parent.parent.kind === 204 /* ForInStatement */) { + if (declaration.parent.parent.kind === 206 /* ForInStatement */) { return stringType; } - if (declaration.parent.parent.kind === 205 /* ForOfStatement */) { + if (declaration.parent.parent.kind === 207 /* ForOfStatement */) { // checkRightHandSideOfForOf will return undefined if the for-of expression type was // missing properties/signatures required to get its iteratedType (like // [Symbol.iterator] or next). This may be because we accessed properties from anyType, @@ -17120,21 +17496,24 @@ var ts; } // Use type from type annotation if one is present if (declaration.type) { - return getTypeFromTypeNode(declaration.type); + var type = getTypeFromTypeNode(declaration.type); + return strictNullChecks && declaration.questionToken ? addNullableKind(type, 32 /* Undefined */) : type; } - if (declaration.kind === 140 /* Parameter */) { + if (declaration.kind === 141 /* Parameter */) { var func = declaration.parent; // For a parameter of a set accessor, use the type of the get accessor if one is present - if (func.kind === 148 /* SetAccessor */ && !ts.hasDynamicName(func)) { - var getter = ts.getDeclarationOfKind(declaration.parent.symbol, 147 /* GetAccessor */); + if (func.kind === 149 /* SetAccessor */ && !ts.hasDynamicName(func)) { + var getter = ts.getDeclarationOfKind(declaration.parent.symbol, 148 /* GetAccessor */); if (getter) { return getReturnTypeOfSignature(getSignatureFromDeclaration(getter)); } } // Use contextual parameter type if one is available - var type = getContextuallyTypedParameterType(declaration); + var type = declaration.symbol.name === "this" + ? getContextuallyTypedThisType(func) + : getContextuallyTypedParameterType(declaration); if (type) { - return type; + return strictNullChecks && declaration.questionToken ? addNullableKind(type, 32 /* Undefined */) : type; } } // Use the type of the initializer expression if one is present @@ -17142,7 +17521,7 @@ var ts; return checkExpressionCached(declaration.initializer); } // If it is a short-hand property assignment, use the type of the identifier - if (declaration.kind === 250 /* ShorthandPropertyAssignment */) { + if (declaration.kind === 253 /* ShorthandPropertyAssignment */) { return checkIdentifier(declaration.name); } // If the declaration specifies a binding pattern, use the type implied by the binding pattern @@ -17157,11 +17536,16 @@ var ts; // pattern. Otherwise, it is the type any. function getTypeFromBindingElement(element, includePatternInType) { if (element.initializer) { - return getWidenedType(checkExpressionCached(element.initializer)); + var type = checkExpressionCached(element.initializer); + reportErrorsFromWidening(element, type); + return getWidenedType(type); } if (ts.isBindingPattern(element.name)) { return getTypeFromBindingPattern(element.name, includePatternInType); } + if (compilerOptions.noImplicitAny) { + reportImplicitAnyError(element, anyType); + } return anyType; } // Return the type implied by an object binding pattern @@ -17198,7 +17582,7 @@ var ts; return languageVersion >= 2 /* ES6 */ ? createIterableType(anyType) : anyArrayType; } // If the pattern has at least one element, and no rest element, then it should imply a tuple type. - var elementTypes = ts.map(elements, function (e) { return e.kind === 191 /* OmittedExpression */ ? anyType : getTypeFromBindingElement(e, includePatternInType); }); + var elementTypes = ts.map(elements, function (e) { return e.kind === 192 /* OmittedExpression */ ? anyType : getTypeFromBindingElement(e, includePatternInType); }); if (includePatternInType) { var result = createNewTupleType(elementTypes); result.pattern = pattern; @@ -17214,7 +17598,7 @@ var ts; // parameter with no type annotation or initializer, the type implied by the binding pattern becomes the type of // the parameter. function getTypeFromBindingPattern(pattern, includePatternInType) { - return pattern.kind === 165 /* ObjectBindingPattern */ + return pattern.kind === 166 /* ObjectBindingPattern */ ? getTypeFromObjectBindingPattern(pattern, includePatternInType) : getTypeFromArrayBindingPattern(pattern, includePatternInType); } @@ -17236,7 +17620,7 @@ var ts; // During a normal type check we'll never get to here with a property assignment (the check of the containing // object literal uses a different path). We exclude widening only so that language services and type verification // tools see the actual type. - if (declaration.kind === 249 /* PropertyAssignment */) { + if (declaration.kind === 252 /* PropertyAssignment */) { return type; } return getWidenedType(type); @@ -17246,7 +17630,7 @@ var ts; // Report implicit any errors unless this is a private property within an ambient declaration if (reportErrors && compilerOptions.noImplicitAny) { var root = ts.getRootDeclaration(declaration); - if (!isPrivateWithinAmbient(root) && !(root.kind === 140 /* Parameter */ && isPrivateWithinAmbient(root.parent))) { + if (!isPrivateWithinAmbient(root) && !(root.kind === 141 /* Parameter */ && isPrivateWithinAmbient(root.parent))) { reportImplicitAnyError(declaration, type); } } @@ -17261,21 +17645,21 @@ var ts; } // Handle catch clause variables var declaration = symbol.valueDeclaration; - if (declaration.parent.kind === 248 /* CatchClause */) { + if (declaration.parent.kind === 251 /* CatchClause */) { return links.type = anyType; } // Handle export default expressions - if (declaration.kind === 231 /* ExportAssignment */) { + if (declaration.kind === 234 /* ExportAssignment */) { return links.type = checkExpression(declaration.expression); } // Handle module.exports = expr - if (declaration.kind === 185 /* BinaryExpression */) { + if (declaration.kind === 186 /* BinaryExpression */) { return links.type = getUnionType(ts.map(symbol.declarations, function (decl) { return checkExpressionCached(decl.right); })); } - if (declaration.kind === 170 /* PropertyAccessExpression */) { + if (declaration.kind === 171 /* PropertyAccessExpression */) { // Declarations only exist for property access expressions for certain // special assignment kinds - if (declaration.parent.kind === 185 /* BinaryExpression */) { + if (declaration.parent.kind === 186 /* BinaryExpression */) { // Handle exports.p = expr or this.p = expr or className.prototype.method = expr return links.type = checkExpressionCached(declaration.parent.right); } @@ -17305,7 +17689,7 @@ var ts; } function getAnnotatedAccessorType(accessor) { if (accessor) { - if (accessor.kind === 147 /* GetAccessor */) { + if (accessor.kind === 148 /* GetAccessor */) { return accessor.type && getTypeFromTypeNode(accessor.type); } else { @@ -17318,11 +17702,17 @@ var ts; function getTypeOfAccessors(symbol) { var links = getSymbolLinks(symbol); if (!links.type) { + var getter = ts.getDeclarationOfKind(symbol, 148 /* GetAccessor */); + var setter = ts.getDeclarationOfKind(symbol, 149 /* SetAccessor */); + if (getter && getter.flags & 134217728 /* JavaScriptFile */) { + var jsDocType = getTypeForVariableLikeDeclarationFromJSDocComment(getter); + if (jsDocType) { + return links.type = jsDocType; + } + } if (!pushTypeResolution(symbol, 0 /* Type */)) { return unknownType; } - var getter = ts.getDeclarationOfKind(symbol, 147 /* GetAccessor */); - var setter = ts.getDeclarationOfKind(symbol, 148 /* SetAccessor */); var type = void 0; // First try to see if the user specified a return type on the get-accessor. var getterReturnType = getAnnotatedAccessorType(getter); @@ -17351,7 +17741,7 @@ var ts; if (!popTypeResolution()) { type = anyType; if (compilerOptions.noImplicitAny) { - var getter_1 = ts.getDeclarationOfKind(symbol, 147 /* GetAccessor */); + var getter_1 = ts.getDeclarationOfKind(symbol, 148 /* GetAccessor */); error(getter_1, ts.Diagnostics._0_implicitly_has_return_type_any_because_it_does_not_have_a_return_type_annotation_and_is_referenced_directly_or_indirectly_in_one_of_its_return_expressions, symbolToString(symbol)); } } @@ -17451,9 +17841,9 @@ var ts; if (!node) { return typeParameters; } - if (node.kind === 218 /* ClassDeclaration */ || node.kind === 190 /* ClassExpression */ || - node.kind === 217 /* FunctionDeclaration */ || node.kind === 177 /* FunctionExpression */ || - node.kind === 145 /* MethodDeclaration */ || node.kind === 178 /* ArrowFunction */) { + if (node.kind === 220 /* ClassDeclaration */ || node.kind === 191 /* ClassExpression */ || + node.kind === 219 /* FunctionDeclaration */ || node.kind === 178 /* FunctionExpression */ || + node.kind === 146 /* MethodDeclaration */ || node.kind === 179 /* ArrowFunction */) { var declarations = node.typeParameters; if (declarations) { return appendTypeParameters(appendOuterTypeParameters(typeParameters, node), declarations); @@ -17463,7 +17853,7 @@ var ts; } // The outer type parameters are those defined by enclosing generic classes, methods, or functions. function getOuterTypeParametersOfClassOrInterface(symbol) { - var declaration = symbol.flags & 32 /* Class */ ? symbol.valueDeclaration : ts.getDeclarationOfKind(symbol, 219 /* InterfaceDeclaration */); + var declaration = symbol.flags & 32 /* Class */ ? symbol.valueDeclaration : ts.getDeclarationOfKind(symbol, 221 /* InterfaceDeclaration */); return appendOuterTypeParameters(undefined, declaration); } // The local type parameters are the combined set of type parameters from all declarations of the class, @@ -17472,8 +17862,8 @@ var ts; var result; for (var _i = 0, _a = symbol.declarations; _i < _a.length; _i++) { var node = _a[_i]; - if (node.kind === 219 /* InterfaceDeclaration */ || node.kind === 218 /* ClassDeclaration */ || - node.kind === 190 /* ClassExpression */ || node.kind === 220 /* TypeAliasDeclaration */) { + if (node.kind === 221 /* InterfaceDeclaration */ || node.kind === 220 /* ClassDeclaration */ || + node.kind === 191 /* ClassExpression */ || node.kind === 222 /* TypeAliasDeclaration */) { var declaration = node; if (declaration.typeParameters) { result = appendTypeParameters(result, declaration.typeParameters); @@ -17613,7 +18003,7 @@ var ts; type.resolvedBaseTypes = type.resolvedBaseTypes || emptyArray; for (var _i = 0, _a = type.symbol.declarations; _i < _a.length; _i++) { var declaration = _a[_i]; - if (declaration.kind === 219 /* InterfaceDeclaration */ && ts.getInterfaceBaseTypeNodes(declaration)) { + if (declaration.kind === 221 /* InterfaceDeclaration */ && ts.getInterfaceBaseTypeNodes(declaration)) { for (var _b = 0, _c = ts.getInterfaceBaseTypeNodes(declaration); _b < _c.length; _b++) { var node = _c[_b]; var baseType = getTypeFromTypeNode(node); @@ -17645,7 +18035,7 @@ var ts; function isIndependentInterface(symbol) { for (var _i = 0, _a = symbol.declarations; _i < _a.length; _i++) { var declaration = _a[_i]; - if (declaration.kind === 219 /* InterfaceDeclaration */) { + if (declaration.kind === 221 /* InterfaceDeclaration */) { if (declaration.flags & 16384 /* ContainsThis */) { return false; } @@ -17701,7 +18091,7 @@ var ts; if (!pushTypeResolution(symbol, 2 /* DeclaredType */)) { return unknownType; } - var declaration = ts.getDeclarationOfKind(symbol, 220 /* TypeAliasDeclaration */); + var declaration = ts.getDeclarationOfKind(symbol, 222 /* TypeAliasDeclaration */); var type = getTypeFromTypeNode(declaration.type); if (popTypeResolution()) { links.typeParameters = getLocalTypeParametersOfClassOrInterfaceOrTypeAlias(symbol); @@ -17734,7 +18124,7 @@ var ts; if (!links.declaredType) { var type = createType(512 /* TypeParameter */); type.symbol = symbol; - if (!ts.getDeclarationOfKind(symbol, 139 /* TypeParameter */).constraint) { + if (!ts.getDeclarationOfKind(symbol, 140 /* TypeParameter */).constraint) { type.constraint = noConstraintType; } links.declaredType = type; @@ -17790,11 +18180,13 @@ var ts; case 120 /* BooleanKeyword */: case 132 /* SymbolKeyword */: case 103 /* VoidKeyword */: - case 164 /* StringLiteralType */: + case 134 /* UndefinedKeyword */: + case 93 /* NullKeyword */: + case 165 /* StringLiteralType */: return true; - case 158 /* ArrayType */: + case 159 /* ArrayType */: return isIndependentType(node.elementType); - case 153 /* TypeReference */: + case 154 /* TypeReference */: return isIndependentTypeReference(node); } return false; @@ -17807,7 +18199,7 @@ var ts; // A function-like declaration is considered independent (free of this references) if it has a return type // annotation that is considered independent and if each parameter is considered independent. function isIndependentFunctionLikeDeclaration(node) { - if (node.kind !== 146 /* Constructor */ && (!node.type || !isIndependentType(node.type))) { + if (node.kind !== 147 /* Constructor */ && (!node.type || !isIndependentType(node.type))) { return false; } for (var _i = 0, _a = node.parameters; _i < _a.length; _i++) { @@ -17828,12 +18220,12 @@ var ts; var declaration = symbol.declarations[0]; if (declaration) { switch (declaration.kind) { - case 143 /* PropertyDeclaration */: - case 142 /* PropertySignature */: + case 144 /* PropertyDeclaration */: + case 143 /* PropertySignature */: return isIndependentVariableLikeDeclaration(declaration); - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: - case 146 /* Constructor */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: + case 147 /* Constructor */: return isIndependentFunctionLikeDeclaration(declaration); } } @@ -17926,11 +18318,12 @@ var ts; type.typeArguments : ts.concatenate(type.typeArguments, [type]); resolveObjectTypeMembers(type, source, typeParameters, typeArguments); } - function createSignature(declaration, typeParameters, parameters, resolvedReturnType, typePredicate, minArgumentCount, hasRestParameter, hasStringLiterals) { + function createSignature(declaration, typeParameters, thisType, parameters, resolvedReturnType, typePredicate, minArgumentCount, hasRestParameter, hasStringLiterals) { var sig = new Signature(checker); sig.declaration = declaration; sig.typeParameters = typeParameters; sig.parameters = parameters; + sig.thisType = thisType; sig.resolvedReturnType = resolvedReturnType; sig.typePredicate = typePredicate; sig.minArgumentCount = minArgumentCount; @@ -17939,13 +18332,13 @@ var ts; return sig; } function cloneSignature(sig) { - return createSignature(sig.declaration, sig.typeParameters, sig.parameters, sig.resolvedReturnType, sig.typePredicate, sig.minArgumentCount, sig.hasRestParameter, sig.hasStringLiterals); + return createSignature(sig.declaration, sig.typeParameters, sig.thisType, sig.parameters, sig.resolvedReturnType, sig.typePredicate, sig.minArgumentCount, sig.hasRestParameter, sig.hasStringLiterals); } function getDefaultConstructSignatures(classType) { var baseConstructorType = getBaseConstructorTypeOfClass(classType); var baseSignatures = getSignaturesOfType(baseConstructorType, 1 /* Construct */); if (baseSignatures.length === 0) { - return [createSignature(undefined, classType.localTypeParameters, emptyArray, classType, /*typePredicate*/ undefined, 0, /*hasRestParameter*/ false, /*hasStringLiterals*/ false)]; + return [createSignature(undefined, classType.localTypeParameters, undefined, emptyArray, classType, /*typePredicate*/ undefined, 0, /*hasRestParameter*/ false, /*hasStringLiterals*/ false)]; } var baseTypeNode = getBaseTypeNodeOfClass(classType); var typeArguments = ts.map(baseTypeNode.typeArguments, getTypeFromTypeNode); @@ -17980,10 +18373,10 @@ var ts; addInheritedMembers(members, arrayType.properties); setObjectTypeMembers(type, members, arrayType.callSignatures, arrayType.constructSignatures, arrayType.stringIndexInfo, arrayType.numberIndexInfo); } - function findMatchingSignature(signatureList, signature, partialMatch, ignoreReturnTypes) { + function findMatchingSignature(signatureList, signature, partialMatch, ignoreThisTypes, ignoreReturnTypes) { for (var _i = 0, signatureList_1 = signatureList; _i < signatureList_1.length; _i++) { var s = signatureList_1[_i]; - if (compareSignaturesIdentical(s, signature, partialMatch, ignoreReturnTypes, compareTypesIdentical)) { + if (compareSignaturesIdentical(s, signature, partialMatch, ignoreThisTypes, ignoreReturnTypes, compareTypesIdentical)) { return s; } } @@ -17996,7 +18389,7 @@ var ts; return undefined; } for (var i = 1; i < signatureLists.length; i++) { - if (!findMatchingSignature(signatureLists[i], signature, /*partialMatch*/ false, /*ignoreReturnTypes*/ false)) { + if (!findMatchingSignature(signatureLists[i], signature, /*partialMatch*/ false, /*ignoreThisTypes*/ false, /*ignoreReturnTypes*/ false)) { return undefined; } } @@ -18005,7 +18398,7 @@ var ts; var result = undefined; for (var i = 0; i < signatureLists.length; i++) { // Allow matching non-generic signatures to have excess parameters and different return types - var match = i === listIndex ? signature : findMatchingSignature(signatureLists[i], signature, /*partialMatch*/ true, /*ignoreReturnTypes*/ true); + var match = i === listIndex ? signature : findMatchingSignature(signatureLists[i], signature, /*partialMatch*/ true, /*ignoreThisTypes*/ true, /*ignoreReturnTypes*/ true); if (!match) { return undefined; } @@ -18026,13 +18419,16 @@ var ts; for (var _i = 0, _a = signatureLists[i]; _i < _a.length; _i++) { var signature = _a[_i]; // Only process signatures with parameter lists that aren't already in the result list - if (!result || !findMatchingSignature(result, signature, /*partialMatch*/ false, /*ignoreReturnTypes*/ true)) { + if (!result || !findMatchingSignature(result, signature, /*partialMatch*/ false, /*ignoreThisTypes*/ true, /*ignoreReturnTypes*/ true)) { var unionSignatures = findMatchingSignatures(signatureLists, signature, i); if (unionSignatures) { var s = signature; // Union the result types when more than one signature matches if (unionSignatures.length > 1) { s = cloneSignature(signature); + if (ts.forEach(unionSignatures, function (sig) { return sig.thisType; })) { + s.thisType = getUnionType(ts.map(unionSignatures, function (sig) { return sig.thisType || anyType; })); + } // Clear resolved return type we possibly got from cloneSignature s.resolvedReturnType = undefined; s.unionSignatures = unionSignatures; @@ -18232,7 +18628,7 @@ var ts; type = globalBooleanType; } else if (type.flags & 16777216 /* ESSymbol */) { - type = globalESSymbolType; + type = getGlobalESSymbolType(); } return type; } @@ -18401,7 +18797,7 @@ var ts; } function isOptionalParameter(node) { if (node.flags & 134217728 /* JavaScriptFile */) { - if (node.type && node.type.kind === 264 /* JSDocOptionalType */) { + if (node.type && node.type.kind === 267 /* JSDocOptionalType */) { return true; } var paramTag = ts.getCorrespondingJSDocParameterTag(node); @@ -18410,7 +18806,7 @@ var ts; return true; } if (paramTag.typeExpression) { - return paramTag.typeExpression.type.kind === 264 /* JSDocOptionalType */; + return paramTag.typeExpression.type.kind === 267 /* JSDocOptionalType */; } } } @@ -18446,7 +18842,7 @@ var ts; function getSignatureFromDeclaration(declaration) { var links = getNodeLinks(declaration); if (!links.resolvedSignature) { - var classType = declaration.kind === 146 /* Constructor */ ? + var classType = declaration.kind === 147 /* Constructor */ ? getDeclaredTypeOfClassOrInterface(getMergedSymbol(declaration.parent.symbol)) : undefined; var typeParameters = classType ? classType.localTypeParameters : @@ -18455,6 +18851,8 @@ var ts; var parameters = []; var hasStringLiterals = false; var minArgumentCount = -1; + var thisType = undefined; + var hasThisParameter = void 0; var isJSConstructSignature = ts.isJSDocConstructSignature(declaration); var returnType = undefined; var typePredicate = undefined; @@ -18469,13 +18867,19 @@ var ts; var resolvedSymbol = resolveName(param, paramSymbol.name, 107455 /* Value */, undefined, undefined); paramSymbol = resolvedSymbol; } - parameters.push(paramSymbol); - if (param.type && param.type.kind === 164 /* StringLiteralType */) { + if (i === 0 && paramSymbol.name === "this") { + hasThisParameter = true; + thisType = param.type ? getTypeFromTypeNode(param.type) : unknownType; + } + else { + parameters.push(paramSymbol); + } + if (param.type && param.type.kind === 165 /* StringLiteralType */) { hasStringLiterals = true; } if (param.initializer || param.questionToken || param.dotDotDotToken) { if (minArgumentCount < 0) { - minArgumentCount = i; + minArgumentCount = i - (hasThisParameter ? 1 : 0); } } else { @@ -18484,7 +18888,7 @@ var ts; } } if (minArgumentCount < 0) { - minArgumentCount = declaration.parameters.length; + minArgumentCount = declaration.parameters.length - (hasThisParameter ? 1 : 0); } if (isJSConstructSignature) { minArgumentCount--; @@ -18495,7 +18899,7 @@ var ts; } else if (declaration.type) { returnType = getTypeFromTypeNode(declaration.type); - if (declaration.type.kind === 152 /* TypePredicate */) { + if (declaration.type.kind === 153 /* TypePredicate */) { typePredicate = createTypePredicateFromTypePredicateNode(declaration.type); } } @@ -18508,15 +18912,15 @@ var ts; } // TypeScript 1.0 spec (April 2014): // If only one accessor includes a type annotation, the other behaves as if it had the same type annotation. - if (declaration.kind === 147 /* GetAccessor */ && !ts.hasDynamicName(declaration)) { - var setter = ts.getDeclarationOfKind(declaration.symbol, 148 /* SetAccessor */); + if (declaration.kind === 148 /* GetAccessor */ && !ts.hasDynamicName(declaration)) { + var setter = ts.getDeclarationOfKind(declaration.symbol, 149 /* SetAccessor */); returnType = getAnnotatedAccessorType(setter); } if (!returnType && ts.nodeIsMissing(declaration.body)) { returnType = anyType; } } - links.resolvedSignature = createSignature(declaration, typeParameters, parameters, returnType, typePredicate, minArgumentCount, ts.hasRestParameter(declaration), hasStringLiterals); + links.resolvedSignature = createSignature(declaration, typeParameters, thisType, parameters, returnType, typePredicate, minArgumentCount, ts.hasRestParameter(declaration), hasStringLiterals); } return links.resolvedSignature; } @@ -18527,20 +18931,20 @@ var ts; for (var i = 0, len = symbol.declarations.length; i < len; i++) { var node = symbol.declarations[i]; switch (node.kind) { - case 154 /* FunctionType */: - case 155 /* ConstructorType */: - case 217 /* FunctionDeclaration */: - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: - case 146 /* Constructor */: - case 149 /* CallSignature */: - case 150 /* ConstructSignature */: - case 151 /* IndexSignature */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: - case 177 /* FunctionExpression */: - case 178 /* ArrowFunction */: - case 265 /* JSDocFunctionType */: + case 155 /* FunctionType */: + case 156 /* ConstructorType */: + case 219 /* FunctionDeclaration */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: + case 147 /* Constructor */: + case 150 /* CallSignature */: + case 151 /* ConstructSignature */: + case 152 /* IndexSignature */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: + case 178 /* FunctionExpression */: + case 179 /* ArrowFunction */: + case 268 /* JSDocFunctionType */: // Don't include signature if node is the implementation of an overloaded function. A node is considered // an implementation node if it has a body and the previous node is of the same kind and immediately // precedes the implementation node (i.e. has the same parent and ends where the implementation starts). @@ -18627,7 +19031,7 @@ var ts; // object type literal or interface (using the new keyword). Each way of declaring a constructor // will result in a different declaration kind. if (!signature.isolatedSignatureType) { - var isConstructor = signature.declaration.kind === 146 /* Constructor */ || signature.declaration.kind === 150 /* ConstructSignature */; + var isConstructor = signature.declaration.kind === 147 /* Constructor */ || signature.declaration.kind === 151 /* ConstructSignature */; var type = createObjectType(65536 /* Anonymous */ | 262144 /* FromSignature */); type.members = emptySymbols; type.properties = emptyArray; @@ -18668,7 +19072,7 @@ var ts; return undefined; } function getConstraintDeclaration(type) { - return ts.getDeclarationOfKind(type.symbol, 139 /* TypeParameter */).constraint; + return ts.getDeclarationOfKind(type.symbol, 140 /* TypeParameter */).constraint; } function hasConstraintReferenceTo(type, target) { var checked; @@ -18701,7 +19105,7 @@ var ts; return typeParameter.constraint === noConstraintType ? undefined : typeParameter.constraint; } function getParentSymbolOfTypeParameter(typeParameter) { - return getSymbolOfNode(ts.getDeclarationOfKind(typeParameter.symbol, 139 /* TypeParameter */).parent); + return getSymbolOfNode(ts.getDeclarationOfKind(typeParameter.symbol, 140 /* TypeParameter */).parent); } function getTypeListId(types) { if (types) { @@ -18727,11 +19131,13 @@ var ts; // It is only necessary to do so if a constituent type might be the undefined type, the null type, the type // of an object literal or the anyFunctionType. This is because there are operations in the type checker // that care about the presence of such types at arbitrary depth in a containing type. - function getPropagatingFlagsOfTypes(types) { + function getPropagatingFlagsOfTypes(types, excludeKinds) { var result = 0; for (var _i = 0, types_3 = types; _i < types_3.length; _i++) { var type = types_3[_i]; - result |= type.flags; + if (!(type.flags & excludeKinds)) { + result |= type.flags; + } } return result & 14680064 /* PropagatingFlags */; } @@ -18739,7 +19145,8 @@ var ts; var id = getTypeListId(typeArguments); var type = target.instantiations[id]; if (!type) { - var flags = 4096 /* Reference */ | (typeArguments ? getPropagatingFlagsOfTypes(typeArguments) : 0); + var propagatedFlags = typeArguments ? getPropagatingFlagsOfTypes(typeArguments, /*excludeKinds*/ 0) : 0; + var flags = 4096 /* Reference */ | propagatedFlags; type = target.instantiations[id] = createObjectType(flags, target.symbol); type.target = target; type.typeArguments = typeArguments; @@ -18748,7 +19155,7 @@ var ts; } // Get type from reference to class or interface function getTypeFromClassOrInterfaceReference(node, symbol) { - var type = getDeclaredTypeOfSymbol(symbol); + var type = getDeclaredTypeOfSymbol(getMergedSymbol(symbol)); var typeParameters = type.localTypeParameters; if (typeParameters) { if (!node.typeArguments || node.typeArguments.length !== typeParameters.length) { @@ -18798,11 +19205,11 @@ var ts; } function getTypeReferenceName(node) { switch (node.kind) { - case 153 /* TypeReference */: + case 154 /* TypeReference */: return node.typeName; - case 263 /* JSDocTypeReference */: + case 266 /* JSDocTypeReference */: return node.name; - case 192 /* ExpressionWithTypeArguments */: + case 193 /* ExpressionWithTypeArguments */: // We only support expressions that are simple qualified names. For other // expressions this produces undefined. if (ts.isSupportedExpressionWithTypeArguments(node)) { @@ -18827,7 +19234,7 @@ var ts; if (symbol.flags & 524288 /* TypeAlias */) { return getTypeFromTypeAliasReference(node, symbol); } - if (symbol.flags & 107455 /* Value */ && node.kind === 263 /* JSDocTypeReference */) { + if (symbol.flags & 107455 /* Value */ && node.kind === 266 /* JSDocTypeReference */) { // A JSDocTypeReference may have resolved to a value (as opposed to a type). In // that case, the type of this reference is just the type of the value we resolved // to. @@ -18840,7 +19247,7 @@ var ts; if (!links.resolvedType) { var symbol = void 0; var type = void 0; - if (node.kind === 263 /* JSDocTypeReference */) { + if (node.kind === 266 /* JSDocTypeReference */) { var typeReferenceName = getTypeReferenceName(node); symbol = resolveTypeReferenceName(node, typeReferenceName); type = getTypeReferenceType(node, symbol); @@ -18849,7 +19256,7 @@ var ts; } else { // We only support expressions that are simple qualified names. For other expressions this produces undefined. - var typeNameOrExpression = node.kind === 153 /* TypeReference */ ? node.typeName : + var typeNameOrExpression = node.kind === 154 /* TypeReference */ ? node.typeName : ts.isSupportedExpressionWithTypeArguments(node) ? node.expression : undefined; symbol = typeNameOrExpression && resolveEntityName(typeNameOrExpression, 793056 /* Type */) || unknownSymbol; @@ -18882,9 +19289,9 @@ var ts; for (var _i = 0, declarations_3 = declarations; _i < declarations_3.length; _i++) { var declaration = declarations_3[_i]; switch (declaration.kind) { - case 218 /* ClassDeclaration */: - case 219 /* InterfaceDeclaration */: - case 221 /* EnumDeclaration */: + case 220 /* ClassDeclaration */: + case 221 /* InterfaceDeclaration */: + case 223 /* EnumDeclaration */: return declaration; } } @@ -18925,9 +19332,6 @@ var ts; var typeSymbol = namespaceSymbol && getSymbol(namespaceSymbol.exports, name, 793056 /* Type */); return typeSymbol && getDeclaredTypeOfSymbol(typeSymbol); } - function getGlobalESSymbolConstructorSymbol() { - return globalESSymbolConstructorSymbol || (globalESSymbolConstructorSymbol = getGlobalValueSymbol("Symbol")); - } /** * Creates a TypeReference for a generic `TypedPropertyDescriptor`. */ @@ -18944,10 +19348,10 @@ var ts; return genericGlobalType !== emptyGenericType ? createTypeReference(genericGlobalType, typeArguments) : emptyObjectType; } function createIterableType(elementType) { - return createTypeFromGenericGlobalType(globalIterableType, [elementType]); + return createTypeFromGenericGlobalType(getGlobalIterableType(), [elementType]); } function createIterableIteratorType(elementType) { - return createTypeFromGenericGlobalType(globalIterableIteratorType, [elementType]); + return createTypeFromGenericGlobalType(getGlobalIterableIteratorType(), [elementType]); } function createArrayType(elementType) { return createTypeFromGenericGlobalType(globalArrayType, [elementType]); @@ -18964,7 +19368,8 @@ var ts; return tupleTypes[id] || (tupleTypes[id] = createNewTupleType(elementTypes)); } function createNewTupleType(elementTypes) { - var type = createObjectType(8192 /* Tuple */ | getPropagatingFlagsOfTypes(elementTypes)); + var propagatedFlags = getPropagatingFlagsOfTypes(elementTypes, /*excludeKinds*/ 0); + var type = createObjectType(8192 /* Tuple */ | propagatedFlags); type.elementTypes = elementTypes; return type; } @@ -18979,6 +19384,14 @@ var ts; if (type.flags & typeSetKind) { addTypesToSet(typeSet, type.types, typeSetKind); } + else if (type.flags & (1 /* Any */ | 32 /* Undefined */ | 64 /* Null */)) { + if (type.flags & 1 /* Any */) + typeSet.containsAny = true; + if (type.flags & 32 /* Undefined */) + typeSet.containsUndefined = true; + if (type.flags & 64 /* Null */) + typeSet.containsNull = true; + } else if (!ts.contains(typeSet, type)) { typeSet.push(type); } @@ -19008,24 +19421,6 @@ var ts; } } } - function containsTypeAny(types) { - for (var _i = 0, types_5 = types; _i < types_5.length; _i++) { - var type = types_5[_i]; - if (isTypeAny(type)) { - return true; - } - } - return false; - } - function removeAllButLast(types, typeToRemove) { - var i = types.length; - while (i > 0 && types.length > 1) { - i--; - if (types[i] === typeToRemove) { - types.splice(i, 1); - } - } - } // We reduce the constituent type set to only include types that aren't subtypes of other types, unless // the noSubtypeReduction flag is specified, in which case we perform a simple deduplication based on // object identity. Subtype reduction is possible only when union types are known not to circularly @@ -19039,23 +19434,29 @@ var ts; } var typeSet = []; addTypesToSet(typeSet, types, 16384 /* Union */); - if (containsTypeAny(typeSet)) { + if (typeSet.containsAny) { return anyType; } - if (noSubtypeReduction) { - removeAllButLast(typeSet, undefinedType); - removeAllButLast(typeSet, nullType); + if (strictNullChecks) { + if (typeSet.containsNull) + typeSet.push(nullType); + if (typeSet.containsUndefined) + typeSet.push(undefinedType); } - else { + if (!noSubtypeReduction) { removeSubtypes(typeSet); } - if (typeSet.length === 1) { + if (typeSet.length === 0) { + return typeSet.containsNull ? nullType : undefinedType; + } + else if (typeSet.length === 1) { return typeSet[0]; } var id = getTypeListId(typeSet); var type = unionTypes[id]; if (!type) { - type = unionTypes[id] = createObjectType(16384 /* Union */ | getPropagatingFlagsOfTypes(typeSet)); + var propagatedFlags = getPropagatingFlagsOfTypes(typeSet, /*excludeKinds*/ 96 /* Nullable */); + type = unionTypes[id] = createObjectType(16384 /* Union */ | propagatedFlags); type.types = typeSet; } return type; @@ -19078,16 +19479,23 @@ var ts; } var typeSet = []; addTypesToSet(typeSet, types, 32768 /* Intersection */); - if (containsTypeAny(typeSet)) { + if (typeSet.containsAny) { return anyType; } + if (strictNullChecks) { + if (typeSet.containsNull) + typeSet.push(nullType); + if (typeSet.containsUndefined) + typeSet.push(undefinedType); + } if (typeSet.length === 1) { return typeSet[0]; } var id = getTypeListId(typeSet); var type = intersectionTypes[id]; if (!type) { - type = intersectionTypes[id] = createObjectType(32768 /* Intersection */ | getPropagatingFlagsOfTypes(typeSet)); + var propagatedFlags = getPropagatingFlagsOfTypes(typeSet, /*excludeKinds*/ 96 /* Nullable */); + type = intersectionTypes[id] = createObjectType(32768 /* Intersection */ | propagatedFlags); type.types = typeSet; } return type; @@ -19141,9 +19549,9 @@ var ts; function getThisType(node) { var container = ts.getThisContainer(node, /*includeArrowFunctions*/ false); var parent = container && container.parent; - if (parent && (ts.isClassLike(parent) || parent.kind === 219 /* InterfaceDeclaration */)) { + if (parent && (ts.isClassLike(parent) || parent.kind === 221 /* InterfaceDeclaration */)) { if (!(container.flags & 32 /* Static */) && - (container.kind !== 146 /* Constructor */ || ts.isNodeDescendentOf(node, container.body))) { + (container.kind !== 147 /* Constructor */ || ts.isNodeDescendentOf(node, container.body))) { return getDeclaredTypeOfClassOrInterface(getSymbolOfNode(parent)).thisType; } } @@ -19160,8 +19568,8 @@ var ts; function getTypeFromTypeNode(node) { switch (node.kind) { case 117 /* AnyKeyword */: - case 254 /* JSDocAllType */: - case 255 /* JSDocUnknownType */: + case 257 /* JSDocAllType */: + case 258 /* JSDocUnknownType */: return anyType; case 131 /* StringKeyword */: return stringType; @@ -19173,51 +19581,55 @@ var ts; return esSymbolType; case 103 /* VoidKeyword */: return voidType; - case 163 /* ThisType */: + case 134 /* UndefinedKeyword */: + return undefinedType; + case 93 /* NullKeyword */: + return nullType; + case 164 /* ThisType */: return getTypeFromThisTypeNode(node); - case 164 /* StringLiteralType */: + case 165 /* StringLiteralType */: return getTypeFromStringLiteralTypeNode(node); - case 153 /* TypeReference */: - case 263 /* JSDocTypeReference */: + case 154 /* TypeReference */: + case 266 /* JSDocTypeReference */: return getTypeFromTypeReference(node); - case 152 /* TypePredicate */: + case 153 /* TypePredicate */: return booleanType; - case 192 /* ExpressionWithTypeArguments */: + case 193 /* ExpressionWithTypeArguments */: return getTypeFromTypeReference(node); - case 156 /* TypeQuery */: + case 157 /* TypeQuery */: return getTypeFromTypeQueryNode(node); - case 158 /* ArrayType */: - case 256 /* JSDocArrayType */: + case 159 /* ArrayType */: + case 259 /* JSDocArrayType */: return getTypeFromArrayTypeNode(node); - case 159 /* TupleType */: + case 160 /* TupleType */: return getTypeFromTupleTypeNode(node); - case 160 /* UnionType */: - case 257 /* JSDocUnionType */: + case 161 /* UnionType */: + case 260 /* JSDocUnionType */: return getTypeFromUnionTypeNode(node); - case 161 /* IntersectionType */: + case 162 /* IntersectionType */: return getTypeFromIntersectionTypeNode(node); - case 162 /* ParenthesizedType */: - case 259 /* JSDocNullableType */: - case 260 /* JSDocNonNullableType */: - case 267 /* JSDocConstructorType */: - case 268 /* JSDocThisType */: - case 264 /* JSDocOptionalType */: + case 163 /* ParenthesizedType */: + case 262 /* JSDocNullableType */: + case 263 /* JSDocNonNullableType */: + case 270 /* JSDocConstructorType */: + case 271 /* JSDocThisType */: + case 267 /* JSDocOptionalType */: return getTypeFromTypeNode(node.type); - case 154 /* FunctionType */: - case 155 /* ConstructorType */: - case 157 /* TypeLiteral */: - case 265 /* JSDocFunctionType */: - case 261 /* JSDocRecordType */: + case 155 /* FunctionType */: + case 156 /* ConstructorType */: + case 158 /* TypeLiteral */: + case 268 /* JSDocFunctionType */: + case 264 /* JSDocRecordType */: return getTypeFromTypeLiteralOrFunctionOrConstructorTypeNode(node); // This function assumes that an identifier or qualified name is a type expression // Callers should first ensure this by calling isTypeNode case 69 /* Identifier */: - case 137 /* QualifiedName */: + case 138 /* QualifiedName */: var symbol = getSymbolAtLocation(node); return symbol && getDeclaredTypeOfSymbol(symbol); - case 258 /* JSDocTupleType */: + case 261 /* JSDocTupleType */: return getTypeFromJSDocTupleType(node); - case 266 /* JSDocVariadicType */: + case 269 /* JSDocVariadicType */: return getTypeFromJSDocVariadicType(node); default: return unknownType; @@ -19240,40 +19652,26 @@ var ts; function createBinaryTypeMapper(source1, target1, source2, target2) { return function (t) { return t === source1 ? target1 : t === source2 ? target2 : t; }; } - function createTypeMapper(sources, targets) { - switch (sources.length) { - case 1: return createUnaryTypeMapper(sources[0], targets[0]); - case 2: return createBinaryTypeMapper(sources[0], targets[0], sources[1], targets[1]); - } + function createArrayTypeMapper(sources, targets) { return function (t) { for (var i = 0; i < sources.length; i++) { if (t === sources[i]) { - return targets[i]; + return targets ? targets[i] : anyType; } } return t; }; } - function createUnaryTypeEraser(source) { - return function (t) { return t === source ? anyType : t; }; - } - function createBinaryTypeEraser(source1, source2) { - return function (t) { return t === source1 || t === source2 ? anyType : t; }; + function createTypeMapper(sources, targets) { + var count = sources.length; + var mapper = count == 1 ? createUnaryTypeMapper(sources[0], targets ? targets[0] : anyType) : + count == 2 ? createBinaryTypeMapper(sources[0], targets ? targets[0] : anyType, sources[1], targets ? targets[1] : anyType) : + createArrayTypeMapper(sources, targets); + mapper.mappedTypes = sources; + return mapper; } function createTypeEraser(sources) { - switch (sources.length) { - case 1: return createUnaryTypeEraser(sources[0]); - case 2: return createBinaryTypeEraser(sources[0], sources[1]); - } - return function (t) { - for (var _i = 0, sources_1 = sources; _i < sources_1.length; _i++) { - var source = sources_1[_i]; - if (t === source) { - return anyType; - } - } - return t; - }; + return createTypeMapper(sources, undefined); } function getInferenceMapper(context) { if (!context.mapper) { @@ -19287,6 +19685,7 @@ var ts; } return t; }; + mapper.mappedTypes = context.typeParameters; mapper.context = context; context.mapper = mapper; } @@ -19296,7 +19695,9 @@ var ts; return type; } function combineTypeMappers(mapper1, mapper2) { - return function (t) { return instantiateType(mapper1(t), mapper2); }; + var mapper = function (t) { return instantiateType(mapper1(t), mapper2); }; + mapper.mappedTypes = mapper1.mappedTypes; + return mapper; } function cloneTypeParameter(typeParameter) { var result = createType(512 /* TypeParameter */); @@ -19337,7 +19738,7 @@ var ts; if (signature.typePredicate) { freshTypePredicate = cloneTypePredicate(signature.typePredicate, mapper); } - var result = createSignature(signature.declaration, freshTypeParameters, instantiateList(signature.parameters, mapper, instantiateSymbol), instantiateType(signature.resolvedReturnType, mapper), freshTypePredicate, signature.minArgumentCount, signature.hasRestParameter, signature.hasStringLiterals); + var result = createSignature(signature.declaration, freshTypeParameters, signature.thisType && instantiateType(signature.thisType, mapper), instantiateList(signature.parameters, mapper, instantiateSymbol), instantiateType(signature.resolvedReturnType, mapper), freshTypePredicate, signature.minArgumentCount, signature.hasRestParameter, signature.hasStringLiterals); result.target = signature; result.mapper = mapper; return result; @@ -19380,13 +19781,70 @@ var ts; mapper.instantiations[type.id] = result; return result; } + function isSymbolInScopeOfMappedTypeParameter(symbol, mapper) { + var mappedTypes = mapper.mappedTypes; + // Starting with the parent of the symbol's declaration, check if the mapper maps any of + // the type parameters introduced by enclosing declarations. We just pick the first + // declaration since multiple declarations will all have the same parent anyway. + var node = symbol.declarations[0].parent; + while (node) { + switch (node.kind) { + case 155 /* FunctionType */: + case 156 /* ConstructorType */: + case 219 /* FunctionDeclaration */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: + case 147 /* Constructor */: + case 150 /* CallSignature */: + case 151 /* ConstructSignature */: + case 152 /* IndexSignature */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: + case 178 /* FunctionExpression */: + case 179 /* ArrowFunction */: + case 220 /* ClassDeclaration */: + case 191 /* ClassExpression */: + case 221 /* InterfaceDeclaration */: + case 222 /* TypeAliasDeclaration */: + var declaration = node; + if (declaration.typeParameters) { + for (var _i = 0, _a = declaration.typeParameters; _i < _a.length; _i++) { + var d = _a[_i]; + if (ts.contains(mappedTypes, getDeclaredTypeOfTypeParameter(d.symbol))) { + return true; + } + } + } + if (ts.isClassLike(node) || node.kind === 221 /* InterfaceDeclaration */) { + var thisType = getDeclaredTypeOfClassOrInterface(getSymbolOfNode(node)).thisType; + if (thisType && ts.contains(mappedTypes, thisType)) { + return true; + } + } + break; + case 224 /* ModuleDeclaration */: + case 255 /* SourceFile */: + return false; + } + node = node.parent; + } + return false; + } function instantiateType(type, mapper) { if (type && mapper !== identityMapper) { if (type.flags & 512 /* TypeParameter */) { return mapper(type); } if (type.flags & 65536 /* Anonymous */) { - return type.symbol && type.symbol.flags & (16 /* Function */ | 8192 /* Method */ | 32 /* Class */ | 2048 /* TypeLiteral */ | 4096 /* ObjectLiteral */) ? + // If the anonymous type originates in a declaration of a function, method, class, or + // interface, in an object type literal, or in an object literal expression, we may need + // to instantiate the type because it might reference a type parameter. We skip instantiation + // if none of the type parameters that are in scope in the type's declaration are mapped by + // the given mapper, however we can only do that analysis if the type isn't itself an + // instantiation. + return type.symbol && + type.symbol.flags & (16 /* Function */ | 8192 /* Method */ | 32 /* Class */ | 2048 /* TypeLiteral */ | 4096 /* ObjectLiteral */) && + (type.flags & 131072 /* Instantiated */ || isSymbolInScopeOfMappedTypeParameter(type.symbol, mapper)) ? instantiateAnonymousType(type, mapper) : type; } if (type.flags & 4096 /* Reference */) { @@ -19410,33 +19868,35 @@ var ts; // Returns true if the given expression contains (at any level of nesting) a function or arrow expression // that is subject to contextual typing. function isContextSensitive(node) { - ts.Debug.assert(node.kind !== 145 /* MethodDeclaration */ || ts.isObjectLiteralMethod(node)); + ts.Debug.assert(node.kind !== 146 /* MethodDeclaration */ || ts.isObjectLiteralMethod(node)); switch (node.kind) { - case 177 /* FunctionExpression */: - case 178 /* ArrowFunction */: + case 178 /* FunctionExpression */: + case 179 /* ArrowFunction */: return isContextSensitiveFunctionLikeDeclaration(node); - case 169 /* ObjectLiteralExpression */: + case 170 /* ObjectLiteralExpression */: return ts.forEach(node.properties, isContextSensitive); - case 168 /* ArrayLiteralExpression */: + case 169 /* ArrayLiteralExpression */: return ts.forEach(node.elements, isContextSensitive); - case 186 /* ConditionalExpression */: + case 187 /* ConditionalExpression */: return isContextSensitive(node.whenTrue) || isContextSensitive(node.whenFalse); - case 185 /* BinaryExpression */: + case 186 /* BinaryExpression */: return node.operatorToken.kind === 52 /* BarBarToken */ && (isContextSensitive(node.left) || isContextSensitive(node.right)); - case 249 /* PropertyAssignment */: + case 252 /* PropertyAssignment */: return isContextSensitive(node.initializer); - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: return isContextSensitiveFunctionLikeDeclaration(node); - case 176 /* ParenthesizedExpression */: + case 177 /* ParenthesizedExpression */: return isContextSensitive(node.expression); } return false; } function isContextSensitiveFunctionLikeDeclaration(node) { - return !node.typeParameters && node.parameters.length && !ts.forEach(node.parameters, function (p) { return p.type; }); + var areAllParametersUntyped = !ts.forEach(node.parameters, function (p) { return p.type; }); + var isNullaryArrow = node.kind === 179 /* ArrowFunction */ && !node.parameters.length; + return !node.typeParameters && areAllParametersUntyped && !isNullaryArrow; } function getTypeWithoutSignatures(type) { if (type.flags & 80896 /* ObjectType */) { @@ -19468,12 +19928,26 @@ var ts; function isTypeAssignableTo(source, target) { return checkTypeAssignableTo(source, target, /*errorNode*/ undefined); } + /** + * This is *not* a bi-directional relationship. + * If one needs to check both directions for comparability, use a second call to this function or 'checkTypeComparableTo'. + */ + function isTypeComparableTo(source, target) { + return checkTypeComparableTo(source, target, /*errorNode*/ undefined); + } function checkTypeSubtypeOf(source, target, errorNode, headMessage, containingMessageChain) { return checkTypeRelatedTo(source, target, subtypeRelation, errorNode, headMessage, containingMessageChain); } function checkTypeAssignableTo(source, target, errorNode, headMessage, containingMessageChain) { return checkTypeRelatedTo(source, target, assignableRelation, errorNode, headMessage, containingMessageChain); } + /** + * This is *not* a bi-directional relationship. + * If one needs to check both directions for comparability, use a second call to this function or 'isTypeComparableTo'. + */ + function checkTypeComparableTo(source, target, errorNode, headMessage, containingMessageChain) { + return checkTypeRelatedTo(source, target, comparableRelation, errorNode, headMessage, containingMessageChain); + } function isSignatureAssignableTo(source, target, ignoreReturnTypes) { return compareSignaturesRelated(source, target, ignoreReturnTypes, /*reportErrors*/ false, /*errorReporter*/ undefined, compareTypesAssignable) !== 0 /* False */; } @@ -19493,15 +19967,27 @@ var ts; source = getErasedSignature(source); target = getErasedSignature(target); var result = -1 /* True */; + if (source.thisType && target.thisType && source.thisType !== voidType) { + // void sources are assignable to anything. + var related = compareTypes(source.thisType, target.thisType, /*reportErrors*/ false) + || compareTypes(target.thisType, source.thisType, reportErrors); + if (!related) { + if (reportErrors) { + errorReporter(ts.Diagnostics.The_this_types_of_each_signature_are_incompatible); + } + return 0 /* False */; + } + result &= related; + } var sourceMax = getNumNonRestParameters(source); var targetMax = getNumNonRestParameters(target); var checkCount = getNumParametersToCheckForSignatureRelatability(source, sourceMax, target, targetMax); var sourceParams = source.parameters; var targetParams = target.parameters; for (var i = 0; i < checkCount; i++) { - var s = i < sourceMax ? getTypeOfSymbol(sourceParams[i]) : getRestTypeOfSignature(source); - var t = i < targetMax ? getTypeOfSymbol(targetParams[i]) : getRestTypeOfSignature(target); - var related = compareTypes(t, s, /*reportErrors*/ false) || compareTypes(s, t, reportErrors); + var s = i < sourceMax ? getTypeOfParameter(sourceParams[i]) : getRestTypeOfSignature(source); + var t = i < targetMax ? getTypeOfParameter(targetParams[i]) : getRestTypeOfSignature(target); + var related = compareTypes(s, t, /*reportErrors*/ false) || compareTypes(t, s, reportErrors); if (!related) { if (reportErrors) { errorReporter(ts.Diagnostics.Types_of_parameters_0_and_1_are_incompatible, sourceParams[i < sourceMax ? i : sourceMax].name, targetParams[i < targetMax ? i : targetMax].name); @@ -19600,7 +20086,7 @@ var ts; * Checks if 'source' is related to 'target' (e.g.: is a assignable to). * @param source The left-hand-side of the relation. * @param target The right-hand-side of the relation. - * @param relation The relation considered. One of 'identityRelation', 'assignableRelation', or 'subTypeRelation'. + * @param relation The relation considered. One of 'identityRelation', 'subtypeRelation', 'assignableRelation', or 'comparableRelation'. * Used as both to determine which checks are performed and as a cache of previously computed results. * @param errorNode The suggested node upon which all errors will be reported, if defined. This may or may not be the actual node used. * @param headMessage If the error chain should be prepended by a head message, then headMessage will be used. @@ -19637,7 +20123,12 @@ var ts; sourceType = typeToString(source, /*enclosingDeclaration*/ undefined, 128 /* UseFullyQualifiedType */); targetType = typeToString(target, /*enclosingDeclaration*/ undefined, 128 /* UseFullyQualifiedType */); } - reportError(message || ts.Diagnostics.Type_0_is_not_assignable_to_type_1, sourceType, targetType); + if (!message) { + message = relation === comparableRelation ? + ts.Diagnostics.Type_0_is_not_comparable_to_type_1 : + ts.Diagnostics.Type_0_is_not_assignable_to_type_1; + } + reportError(message, sourceType, targetType); } // Compare two types and return // Ternary.True if they are related with no assumptions, @@ -19653,20 +20144,24 @@ var ts; } if (isTypeAny(target)) return -1 /* True */; - if (source === undefinedType) - return -1 /* True */; - if (source === nullType && target !== undefinedType) - return -1 /* True */; + if (source.flags & 32 /* Undefined */) { + if (!strictNullChecks || target.flags & (32 /* Undefined */ | 16 /* Void */) || source === emptyArrayElementType) + return -1 /* True */; + } + if (source.flags & 64 /* Null */) { + if (!strictNullChecks || target.flags & 64 /* Null */) + return -1 /* True */; + } if (source.flags & 128 /* Enum */ && target === numberType) return -1 /* True */; if (source.flags & 128 /* Enum */ && target.flags & 128 /* Enum */) { - if (result = enumRelatedTo(source, target)) { + if (result = enumRelatedTo(source, target, reportErrors)) { return result; } } if (source.flags & 256 /* StringLiteral */ && target === stringType) return -1 /* True */; - if (relation === assignableRelation) { + if (relation === assignableRelation || relation === comparableRelation) { if (isTypeAny(source)) return -1 /* True */; if (source === numberType && target.flags & 128 /* Enum */) @@ -19691,29 +20186,48 @@ var ts; } } var saveErrorInfo = errorInfo; - // Note that the "each" checks must precede the "some" checks to produce the correct results + // Note that these checks are specifically ordered to produce correct results. if (source.flags & 16384 /* Union */) { - if (result = eachTypeRelatedToType(source, target, reportErrors)) { + if (relation === comparableRelation) { + result = someTypeRelatedToType(source, target, reportErrors); + } + else { + result = eachTypeRelatedToType(source, target, reportErrors); + } + if (result) { return result; } } else if (target.flags & 32768 /* Intersection */) { - if (result = typeRelatedToEachType(source, target, reportErrors)) { + result = typeRelatedToEachType(source, target, reportErrors); + if (result) { return result; } } else { - // It is necessary to try "some" checks on both sides because there may be nested "each" checks + // It is necessary to try these "some" checks on both sides because there may be nested "each" checks // on either side that need to be prioritized. For example, A | B = (A | B) & (C | D) or // A & B = (A & B) | (C & D). if (source.flags & 32768 /* Intersection */) { - // If target is a union type the following check will report errors so we suppress them here - if (result = someTypeRelatedToType(source, target, reportErrors && !(target.flags & 16384 /* Union */))) { + // Check to see if any constituents of the intersection are immediately related to the target. + // + // Don't report errors though. Checking whether a constituent is related to the source is not actually + // useful and leads to some confusing error messages. Instead it is better to let the below checks + // take care of this, or to not elaborate at all. For instance, + // + // - For an object type (such as 'C = A & B'), users are usually more interested in structural errors. + // + // - For a union type (such as '(A | B) = (C & D)'), it's better to hold onto the whole intersection + // than to report that 'D' is not assignable to 'A' or 'B'. + // + // - For a primitive type or type parameter (such as 'number = A & B') there is no point in + // breaking the intersection apart. + if (result = someTypeRelatedToType(source, target, /*reportErrors*/ false)) { return result; } } if (target.flags & 16384 /* Union */) { - if (result = typeRelatedToSomeType(source, target, reportErrors)) { + if (result = typeRelatedToSomeType(source, target, reportErrors && !(source.flags & 16777726 /* Primitive */))) { return result; } } @@ -19770,8 +20284,8 @@ var ts; } if (source.flags & 16384 /* Union */ && target.flags & 16384 /* Union */ || source.flags & 32768 /* Intersection */ && target.flags & 32768 /* Intersection */) { - if (result = eachTypeRelatedToSomeType(source, target)) { - if (result &= eachTypeRelatedToSomeType(target, source)) { + if (result = eachTypeRelatedToSomeType(source, target, /*reportErrors*/ false)) { + if (result &= eachTypeRelatedToSomeType(target, source, /*reportErrors*/ false)) { return result; } } @@ -19785,7 +20299,8 @@ var ts; function isKnownProperty(type, name) { if (type.flags & 80896 /* ObjectType */) { var resolved = resolveStructuredTypeMembers(type); - if (relation === assignableRelation && (type === globalObjectType || resolved.properties.length === 0) || + if ((relation === assignableRelation || relation === comparableRelation) && + (type === globalObjectType || resolved.properties.length === 0) || resolved.stringIndexInfo || resolved.numberIndexInfo || getPropertyOfType(type, name)) { return true; } @@ -19819,7 +20334,7 @@ var ts; } return false; } - function eachTypeRelatedToSomeType(source, target) { + function eachTypeRelatedToSomeType(source, target, reportErrors) { var result = -1 /* True */; var sourceTypes = source.types; for (var _i = 0, sourceTypes_1 = sourceTypes; _i < sourceTypes_1.length; _i++) { @@ -19834,7 +20349,19 @@ var ts; } function typeRelatedToSomeType(source, target, reportErrors) { var targetTypes = target.types; - for (var i = 0, len = targetTypes.length; i < len; i++) { + var len = targetTypes.length; + // The null and undefined types are guaranteed to be at the end of the constituent type list. In order + // to produce the best possible errors we first check the nullable types, such that the last type we + // check and report errors from is a non-nullable type if one is present. + while (len >= 2 && targetTypes[len - 1].flags & 96 /* Nullable */) { + var related = isRelatedTo(source, targetTypes[len - 1], /*reportErrors*/ false); + if (related) { + return related; + } + len--; + } + // Now check the non-nullable types and report errors on the last one. + for (var i = 0; i < len; i++) { var related = isRelatedTo(source, targetTypes[i], reportErrors && i === len - 1); if (related) { return related; @@ -19857,7 +20384,19 @@ var ts; } function someTypeRelatedToType(source, target, reportErrors) { var sourceTypes = source.types; - for (var i = 0, len = sourceTypes.length; i < len; i++) { + var len = sourceTypes.length; + // The null and undefined types are guaranteed to be at the end of the constituent type list. In order + // to produce the best possible errors we first check the nullable types, such that the last type we + // check and report errors from is a non-nullable type if one is present. + while (len >= 2 && sourceTypes[len - 1].flags & 96 /* Nullable */) { + var related = isRelatedTo(sourceTypes[len - 1], target, /*reportErrors*/ false); + if (related) { + return related; + } + len--; + } + // Now check the non-nullable types and report errors on the last one. + for (var i = 0; i < len; i++) { var related = isRelatedTo(sourceTypes[i], target, reportErrors && i === len - 1); if (related) { return related; @@ -20141,7 +20680,7 @@ var ts; } var result = -1 /* True */; for (var i = 0, len = sourceSignatures.length; i < len; i++) { - var related = compareSignaturesIdentical(sourceSignatures[i], targetSignatures[i], /*partialMatch*/ false, /*ignoreReturnTypes*/ false, isRelatedTo); + var related = compareSignaturesIdentical(sourceSignatures[i], targetSignatures[i], /*partialMatch*/ false, /*ignoreThisTypes*/ false, /*ignoreReturnTypes*/ false, isRelatedTo); if (!related) { return 0 /* False */; } @@ -20216,7 +20755,7 @@ var ts; } return 0 /* False */; } - function enumRelatedTo(source, target) { + function enumRelatedTo(source, target, reportErrors) { if (source.symbol.name !== target.symbol.name || source.symbol.flags & 128 /* ConstEnum */ || target.symbol.flags & 128 /* ConstEnum */) { @@ -20228,7 +20767,9 @@ var ts; if (property.flags & 8 /* EnumMember */) { var targetProperty = getPropertyOfType(targetEnumType, property.name); if (!targetProperty || !(targetProperty.flags & 8 /* EnumMember */)) { - reportError(ts.Diagnostics.Property_0_is_missing_in_type_1, property.name, typeToString(target, /*enclosingDeclaration*/ undefined, 128 /* UseFullyQualifiedType */)); + if (reportErrors) { + reportError(ts.Diagnostics.Property_0_is_missing_in_type_1, property.name, typeToString(target, /*enclosingDeclaration*/ undefined, 128 /* UseFullyQualifiedType */)); + } return 0 /* False */; } } @@ -20343,7 +20884,7 @@ var ts; /** * See signatureRelatedTo, compareSignaturesIdentical */ - function compareSignaturesIdentical(source, target, partialMatch, ignoreReturnTypes, compareTypes) { + function compareSignaturesIdentical(source, target, partialMatch, ignoreThisTypes, ignoreReturnTypes, compareTypes) { // TODO (drosen): De-duplicate code between related functions. if (source === target) { return -1 /* True */; @@ -20364,10 +20905,17 @@ var ts; source = getErasedSignature(source); target = getErasedSignature(target); var result = -1 /* True */; + if (!ignoreThisTypes && source.thisType && target.thisType) { + var related = compareTypes(source.thisType, target.thisType); + if (!related) { + return 0 /* False */; + } + result &= related; + } var targetLen = target.parameters.length; for (var i = 0; i < targetLen; i++) { - var s = isRestParameterIndex(source, i) ? getRestTypeOfSignature(source) : getTypeOfSymbol(source.parameters[i]); - var t = isRestParameterIndex(target, i) ? getRestTypeOfSignature(target) : getTypeOfSymbol(target.parameters[i]); + var s = isRestParameterIndex(source, i) ? getRestTypeOfSignature(source) : getTypeOfParameter(source.parameters[i]); + var t = isRestParameterIndex(target, i) ? getRestTypeOfSignature(target) : getTypeOfParameter(target.parameters[i]); var related = compareTypes(s, t); if (!related) { return 0 /* False */; @@ -20383,15 +20931,31 @@ var ts; return signature.hasRestParameter && parameterIndex >= signature.parameters.length - 1; } function isSupertypeOfEach(candidate, types) { - for (var _i = 0, types_6 = types; _i < types_6.length; _i++) { - var type = types_6[_i]; - if (candidate !== type && !isTypeSubtypeOf(type, candidate)) + for (var _i = 0, types_5 = types; _i < types_5.length; _i++) { + var t = types_5[_i]; + if (candidate !== t && !isTypeSubtypeOf(t, candidate)) return false; } return true; } + function getCombinedFlagsOfTypes(types) { + var flags = 0; + for (var _i = 0, types_6 = types; _i < types_6.length; _i++) { + var t = types_6[_i]; + flags |= t.flags; + } + return flags; + } function getCommonSupertype(types) { - return ts.forEach(types, function (t) { return isSupertypeOfEach(t, types) ? t : undefined; }); + if (!strictNullChecks) { + return ts.forEach(types, function (t) { return isSupertypeOfEach(t, types) ? t : undefined; }); + } + var primaryTypes = ts.filter(types, function (t) { return !(t.flags & 96 /* Nullable */); }); + if (!primaryTypes.length) { + return getUnionType(types); + } + var supertype = ts.forEach(primaryTypes, function (t) { return isSupertypeOfEach(t, primaryTypes) ? t : undefined; }); + return supertype && addNullableKind(supertype, getCombinedFlagsOfTypes(types) & 96 /* Nullable */); } function reportNoCommonSupertypeError(types, errorLocation, errorMessageChainHead) { // The downfallType/bestSupertypeDownfallType is the first type that caused a particular candidate @@ -20433,7 +20997,7 @@ var ts; // A type is array-like if it is a reference to the global Array or global ReadonlyArray type, // or if it is not the undefined or null type and if it is assignable to ReadonlyArray return type.flags & 4096 /* Reference */ && (type.target === globalArrayType || type.target === globalReadonlyArrayType) || - !(type.flags & (32 /* Undefined */ | 64 /* Null */)) && isTypeAssignableTo(type, anyReadonlyArrayType); + !(type.flags & 96 /* Nullable */) && isTypeAssignableTo(type, anyReadonlyArrayType); } function isTupleLikeType(type) { return !!getPropertyOfType(type, "0"); @@ -20448,6 +21012,60 @@ var ts; function isTupleType(type) { return !!(type.flags & 8192 /* Tuple */); } + function getNullableKind(type) { + var flags = type.flags; + if (flags & 16384 /* Union */) { + for (var _i = 0, _a = type.types; _i < _a.length; _i++) { + var t = _a[_i]; + flags |= t.flags; + } + } + return flags & 96 /* Nullable */; + } + function getNullableTypeOfKind(kind) { + return kind & 64 /* Null */ ? kind & 32 /* Undefined */ ? + getUnionType([nullType, undefinedType]) : nullType : undefinedType; + } + function addNullableKind(type, kind) { + if ((getNullableKind(type) & kind) !== kind) { + var types = [type]; + if (kind & 32 /* Undefined */) { + types.push(undefinedType); + } + if (kind & 64 /* Null */) { + types.push(nullType); + } + type = getUnionType(types); + } + return type; + } + function removeNullableKind(type, kind) { + if (type.flags & 16384 /* Union */ && getNullableKind(type) & kind) { + var firstType = void 0; + var types = void 0; + for (var _i = 0, _a = type.types; _i < _a.length; _i++) { + var t = _a[_i]; + if (!(t.flags & kind)) { + if (!firstType) { + firstType = t; + } + else { + if (!types) { + types = [firstType]; + } + types.push(t); + } + } + } + if (firstType) { + type = types ? getUnionType(types) : firstType; + } + } + return type; + } + function getNonNullableType(type) { + return strictNullChecks ? removeNullableKind(type, 96 /* Nullable */) : type; + } /** * Return true if type was inferred from an object literal or written as an object type literal * with no call or construct signatures. @@ -20497,16 +21115,19 @@ var ts; var numberIndexInfo = getIndexInfoOfType(type, 1 /* Number */); return createAnonymousType(type.symbol, members, emptyArray, emptyArray, stringIndexInfo && createIndexInfo(getWidenedType(stringIndexInfo.type), stringIndexInfo.isReadonly), numberIndexInfo && createIndexInfo(getWidenedType(numberIndexInfo.type), numberIndexInfo.isReadonly)); } + function getWidenedConstituentType(type) { + return type.flags & 96 /* Nullable */ ? type : getWidenedType(type); + } function getWidenedType(type) { if (type.flags & 6291456 /* RequiresWidening */) { - if (type.flags & (32 /* Undefined */ | 64 /* Null */)) { + if (type.flags & 96 /* Nullable */) { return anyType; } if (type.flags & 524288 /* ObjectLiteral */) { return getWidenedTypeOfObjectLiteral(type); } if (type.flags & 16384 /* Union */) { - return getUnionType(ts.map(type.types, getWidenedType), /*noSubtypeReduction*/ true); + return getUnionType(ts.map(type.types, getWidenedConstituentType), /*noSubtypeReduction*/ true); } if (isArrayType(type)) { return createArrayType(getWidenedType(type.typeArguments[0])); @@ -20567,22 +21188,25 @@ var ts; var typeAsString = typeToString(getWidenedType(type)); var diagnostic; switch (declaration.kind) { - case 143 /* PropertyDeclaration */: - case 142 /* PropertySignature */: + case 144 /* PropertyDeclaration */: + case 143 /* PropertySignature */: diagnostic = ts.Diagnostics.Member_0_implicitly_has_an_1_type; break; - case 140 /* Parameter */: + case 141 /* Parameter */: diagnostic = declaration.dotDotDotToken ? ts.Diagnostics.Rest_parameter_0_implicitly_has_an_any_type : ts.Diagnostics.Parameter_0_implicitly_has_an_1_type; break; - case 217 /* FunctionDeclaration */: - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: - case 177 /* FunctionExpression */: - case 178 /* ArrowFunction */: + case 168 /* BindingElement */: + diagnostic = ts.Diagnostics.Binding_element_0_implicitly_has_an_1_type; + break; + case 219 /* FunctionDeclaration */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: + case 178 /* FunctionExpression */: + case 179 /* ArrowFunction */: if (!declaration.name) { error(declaration, ts.Diagnostics.Function_expression_which_lacks_return_type_annotation_implicitly_has_an_0_return_type, typeAsString); return; @@ -20607,25 +21231,19 @@ var ts; var targetMax = target.parameters.length; var count; if (source.hasRestParameter && target.hasRestParameter) { - count = sourceMax > targetMax ? sourceMax : targetMax; - sourceMax--; - targetMax--; + count = Math.max(sourceMax, targetMax); } else if (source.hasRestParameter) { - sourceMax--; count = targetMax; } else if (target.hasRestParameter) { - targetMax--; count = sourceMax; } else { - count = sourceMax < targetMax ? sourceMax : targetMax; + count = Math.min(sourceMax, targetMax); } for (var i = 0; i < count; i++) { - var s = i < sourceMax ? getTypeOfSymbol(source.parameters[i]) : getRestTypeOfSignature(source); - var t = i < targetMax ? getTypeOfSymbol(target.parameters[i]) : getRestTypeOfSignature(target); - callback(s, t); + callback(getTypeAtPosition(source, i), getTypeAtPosition(target, i)); } } function createInferenceContext(typeParameters, inferUnionTypes) { @@ -20920,10 +21538,21 @@ var ts; return context.inferredTypes; } // EXPRESSION TYPE CHECKING + function createTransientIdentifier(symbol, location) { + var result = ts.createNode(69 /* Identifier */); + result.text = symbol.name; + result.resolvedSymbol = symbol; + result.parent = location; + result.id = -1; + return result; + } function getResolvedSymbol(node) { + if (node.id === -1) { + return node.resolvedSymbol; + } var links = getNodeLinks(node); if (!links.resolvedSymbol) { - links.resolvedSymbol = (!ts.nodeIsMissing(node) && resolveName(node, node.text, 107455 /* Value */ | 1048576 /* ExportValue */, ts.Diagnostics.Cannot_find_name_0, node)) || unknownSymbol; + links.resolvedSymbol = !ts.nodeIsMissing(node) && resolveName(node, node.text, 107455 /* Value */ | 1048576 /* ExportValue */, ts.Diagnostics.Cannot_find_name_0, node) || unknownSymbol; } return links.resolvedSymbol; } @@ -20933,10 +21562,10 @@ var ts; // The expression is restricted to a single identifier or a sequence of identifiers separated by periods while (node) { switch (node.kind) { - case 156 /* TypeQuery */: + case 157 /* TypeQuery */: return true; case 69 /* Identifier */: - case 137 /* QualifiedName */: + case 138 /* QualifiedName */: node = node.parent; continue; default: @@ -20945,174 +21574,294 @@ var ts; } ts.Debug.fail("should not get here"); } + // Return the assignment key for a "dotted name" (i.e. a sequence of identifiers + // separated by dots). The key consists of the id of the symbol referenced by the + // leftmost identifier followed by zero or more property names separated by dots. + // The result is undefined if the reference isn't a dotted name. + function getAssignmentKey(node) { + if (node.kind === 69 /* Identifier */) { + var symbol = getResolvedSymbol(node); + return symbol !== unknownSymbol ? "" + getSymbolId(symbol) : undefined; + } + if (node.kind === 97 /* ThisKeyword */) { + return "0"; + } + if (node.kind === 171 /* PropertyAccessExpression */) { + var key = getAssignmentKey(node.expression); + return key && key + "." + node.name.text; + } + return undefined; + } function hasInitializer(node) { return !!(node.initializer || ts.isBindingPattern(node.parent) && hasInitializer(node.parent.parent)); } - // Check if a given variable is assigned within a given syntax node - function isVariableAssignedWithin(symbol, node) { - var links = getNodeLinks(node); - if (links.assignmentChecks) { - var cachedResult = links.assignmentChecks[symbol.id]; - if (cachedResult !== undefined) { - return cachedResult; - } - } - else { - links.assignmentChecks = {}; - } - return links.assignmentChecks[symbol.id] = isAssignedIn(node); - function isAssignedInBinaryExpression(node) { - if (node.operatorToken.kind >= 56 /* FirstAssignment */ && node.operatorToken.kind <= 68 /* LastAssignment */) { - var n = skipParenthesizedNodes(node.left); - if (n.kind === 69 /* Identifier */ && getResolvedSymbol(n) === symbol) { - return true; + // For a given node compute a map of which dotted names are assigned within + // the node. + function getAssignmentMap(node) { + var assignmentMap = {}; + visit(node); + return assignmentMap; + function visitReference(node) { + if (isAssignmentTarget(node) || isCompoundAssignmentTarget(node)) { + var key = getAssignmentKey(node); + if (key) { + assignmentMap[key] = true; } } - return ts.forEachChild(node, isAssignedIn); + ts.forEachChild(node, visit); } - function isAssignedInVariableDeclaration(node) { - if (!ts.isBindingPattern(node.name) && getSymbolOfNode(node) === symbol && hasInitializer(node)) { - return true; + function visitVariableDeclaration(node) { + if (!ts.isBindingPattern(node.name) && hasInitializer(node)) { + assignmentMap[getSymbolId(getSymbolOfNode(node))] = true; } - return ts.forEachChild(node, isAssignedIn); + ts.forEachChild(node, visit); } - function isAssignedIn(node) { + function visit(node) { switch (node.kind) { - case 185 /* BinaryExpression */: - return isAssignedInBinaryExpression(node); - case 215 /* VariableDeclaration */: - case 167 /* BindingElement */: - return isAssignedInVariableDeclaration(node); - case 165 /* ObjectBindingPattern */: - case 166 /* ArrayBindingPattern */: - case 168 /* ArrayLiteralExpression */: - case 169 /* ObjectLiteralExpression */: - case 170 /* PropertyAccessExpression */: - case 171 /* ElementAccessExpression */: - case 172 /* CallExpression */: - case 173 /* NewExpression */: - case 175 /* TypeAssertionExpression */: - case 193 /* AsExpression */: - case 176 /* ParenthesizedExpression */: - case 183 /* PrefixUnaryExpression */: - case 179 /* DeleteExpression */: - case 182 /* AwaitExpression */: - case 180 /* TypeOfExpression */: - case 181 /* VoidExpression */: - case 184 /* PostfixUnaryExpression */: - case 188 /* YieldExpression */: - case 186 /* ConditionalExpression */: - case 189 /* SpreadElementExpression */: - case 196 /* Block */: - case 197 /* VariableStatement */: - case 199 /* ExpressionStatement */: - case 200 /* IfStatement */: - case 201 /* DoStatement */: - case 202 /* WhileStatement */: - case 203 /* ForStatement */: - case 204 /* ForInStatement */: - case 205 /* ForOfStatement */: - case 208 /* ReturnStatement */: - case 209 /* WithStatement */: - case 210 /* SwitchStatement */: - case 245 /* CaseClause */: - case 246 /* DefaultClause */: - case 211 /* LabeledStatement */: - case 212 /* ThrowStatement */: - case 213 /* TryStatement */: - case 248 /* CatchClause */: - case 237 /* JsxElement */: - case 238 /* JsxSelfClosingElement */: - case 242 /* JsxAttribute */: - case 243 /* JsxSpreadAttribute */: - case 239 /* JsxOpeningElement */: - case 244 /* JsxExpression */: - return ts.forEachChild(node, isAssignedIn); + case 69 /* Identifier */: + case 171 /* PropertyAccessExpression */: + visitReference(node); + break; + case 217 /* VariableDeclaration */: + case 168 /* BindingElement */: + visitVariableDeclaration(node); + break; + case 186 /* BinaryExpression */: + case 166 /* ObjectBindingPattern */: + case 167 /* ArrayBindingPattern */: + case 169 /* ArrayLiteralExpression */: + case 170 /* ObjectLiteralExpression */: + case 172 /* ElementAccessExpression */: + case 173 /* CallExpression */: + case 174 /* NewExpression */: + case 176 /* TypeAssertionExpression */: + case 194 /* AsExpression */: + case 195 /* NonNullExpression */: + case 177 /* ParenthesizedExpression */: + case 184 /* PrefixUnaryExpression */: + case 180 /* DeleteExpression */: + case 183 /* AwaitExpression */: + case 181 /* TypeOfExpression */: + case 182 /* VoidExpression */: + case 185 /* PostfixUnaryExpression */: + case 189 /* YieldExpression */: + case 187 /* ConditionalExpression */: + case 190 /* SpreadElementExpression */: + case 198 /* Block */: + case 199 /* VariableStatement */: + case 201 /* ExpressionStatement */: + case 202 /* IfStatement */: + case 203 /* DoStatement */: + case 204 /* WhileStatement */: + case 205 /* ForStatement */: + case 206 /* ForInStatement */: + case 207 /* ForOfStatement */: + case 210 /* ReturnStatement */: + case 211 /* WithStatement */: + case 212 /* SwitchStatement */: + case 226 /* CaseBlock */: + case 248 /* CaseClause */: + case 249 /* DefaultClause */: + case 213 /* LabeledStatement */: + case 214 /* ThrowStatement */: + case 215 /* TryStatement */: + case 251 /* CatchClause */: + case 240 /* JsxElement */: + case 241 /* JsxSelfClosingElement */: + case 245 /* JsxAttribute */: + case 246 /* JsxSpreadAttribute */: + case 242 /* JsxOpeningElement */: + case 247 /* JsxExpression */: + ts.forEachChild(node, visit); + break; } - return false; } } - // Get the narrowed type of a given symbol at a given location - function getNarrowedTypeOfSymbol(symbol, node) { - var type = getTypeOfSymbol(symbol); - // Only narrow when symbol is variable of type any or an object, union, or type parameter type - if (node && symbol.flags & 3 /* Variable */) { - if (isTypeAny(type) || type.flags & (80896 /* ObjectType */ | 16384 /* Union */ | 512 /* TypeParameter */)) { - var declaration = ts.getDeclarationOfKind(symbol, 215 /* VariableDeclaration */); - var top_1 = declaration && getDeclarationContainer(declaration); - var originalType = type; - var nodeStack = []; - loop: while (node.parent) { - var child = node; - node = node.parent; - switch (node.kind) { - case 200 /* IfStatement */: - case 186 /* ConditionalExpression */: - case 185 /* BinaryExpression */: - nodeStack.push({ node: node, child: child }); - break; - case 252 /* SourceFile */: - case 222 /* ModuleDeclaration */: - // Stop at the first containing file or module declaration - break loop; - } - if (node === top_1) { - break; - } - } - var nodes = void 0; - while (nodes = nodeStack.pop()) { - var node_1 = nodes.node, child = nodes.child; - switch (node_1.kind) { - case 200 /* IfStatement */: - // In a branch of an if statement, narrow based on controlling expression - if (child !== node_1.expression) { - type = narrowType(type, node_1.expression, /*assumeTrue*/ child === node_1.thenStatement); - } - break; - case 186 /* ConditionalExpression */: - // In a branch of a conditional expression, narrow based on controlling condition - if (child !== node_1.condition) { - type = narrowType(type, node_1.condition, /*assumeTrue*/ child === node_1.whenTrue); - } - break; - case 185 /* BinaryExpression */: - // In the right operand of an && or ||, narrow based on left operand - if (child === node_1.right) { - if (node_1.operatorToken.kind === 51 /* AmpersandAmpersandToken */) { - type = narrowType(type, node_1.left, /*assumeTrue*/ true); - } - else if (node_1.operatorToken.kind === 52 /* BarBarToken */) { - type = narrowType(type, node_1.left, /*assumeTrue*/ false); - } - } - break; - default: - ts.Debug.fail("Unreachable!"); - } - // Use original type if construct contains assignments to variable - if (type !== originalType && isVariableAssignedWithin(symbol, node_1)) { - type = originalType; - } - } - // Preserve old top-level behavior - if the branch is really an empty set, revert to prior type - if (type === emptyUnionType) { - type = originalType; - } + function isReferenceAssignedWithin(reference, node) { + if (reference.kind !== 97 /* ThisKeyword */) { + var key = getAssignmentKey(reference); + if (key) { + var links = getNodeLinks(node); + return (links.assignmentMap || (links.assignmentMap = getAssignmentMap(node)))[key]; } } - return type; - function narrowTypeByEquality(type, expr, assumeTrue) { - // Check that we have 'typeof ' on the left and string literal on the right - if (expr.left.kind !== 180 /* TypeOfExpression */ || expr.right.kind !== 9 /* StringLiteral */) { + return false; + } + function isAnyPartOfReferenceAssignedWithin(reference, node) { + while (true) { + if (isReferenceAssignedWithin(reference, node)) { + return true; + } + if (reference.kind !== 171 /* PropertyAccessExpression */) { + return false; + } + reference = reference.expression; + } + } + function isNullOrUndefinedLiteral(node) { + return node.kind === 93 /* NullKeyword */ || + node.kind === 69 /* Identifier */ && getResolvedSymbol(node) === undefinedSymbol; + } + function getLeftmostIdentifierOrThis(node) { + switch (node.kind) { + case 69 /* Identifier */: + case 97 /* ThisKeyword */: + return node; + case 171 /* PropertyAccessExpression */: + return getLeftmostIdentifierOrThis(node.expression); + } + return undefined; + } + function isMatchingReference(source, target) { + if (source.kind === target.kind) { + switch (source.kind) { + case 69 /* Identifier */: + return getResolvedSymbol(source) === getResolvedSymbol(target); + case 97 /* ThisKeyword */: + return true; + case 171 /* PropertyAccessExpression */: + return source.name.text === target.name.text && + isMatchingReference(source.expression, target.expression); + } + } + return false; + } + // Get the narrowed type of a given symbol at a given location + function getNarrowedTypeOfReference(type, reference) { + if (!(type.flags & (1 /* Any */ | 80896 /* ObjectType */ | 16384 /* Union */ | 512 /* TypeParameter */))) { + return type; + } + var leftmostNode = getLeftmostIdentifierOrThis(reference); + if (!leftmostNode) { + return type; + } + var top; + if (leftmostNode.kind === 69 /* Identifier */) { + var leftmostSymbol = getExportSymbolOfValueSymbolIfExported(getResolvedSymbol(leftmostNode)); + if (!leftmostSymbol) { return type; } + var declaration = leftmostSymbol.valueDeclaration; + if (!declaration || declaration.kind !== 217 /* VariableDeclaration */ && declaration.kind !== 141 /* Parameter */ && declaration.kind !== 168 /* BindingElement */) { + return type; + } + top = getDeclarationContainer(declaration); + } + var originalType = type; + var nodeStack = []; + var node = reference; + loop: while (node.parent) { + var child = node; + node = node.parent; + switch (node.kind) { + case 202 /* IfStatement */: + case 187 /* ConditionalExpression */: + case 186 /* BinaryExpression */: + nodeStack.push({ node: node, child: child }); + break; + case 255 /* SourceFile */: + case 224 /* ModuleDeclaration */: + break loop; + default: + if (node === top || ts.isFunctionLikeKind(node.kind)) { + break loop; + } + break; + } + } + var nodes; + while (nodes = nodeStack.pop()) { + var node_1 = nodes.node, child = nodes.child; + switch (node_1.kind) { + case 202 /* IfStatement */: + // In a branch of an if statement, narrow based on controlling expression + if (child !== node_1.expression) { + type = narrowType(type, node_1.expression, /*assumeTrue*/ child === node_1.thenStatement); + } + break; + case 187 /* ConditionalExpression */: + // In a branch of a conditional expression, narrow based on controlling condition + if (child !== node_1.condition) { + type = narrowType(type, node_1.condition, /*assumeTrue*/ child === node_1.whenTrue); + } + break; + case 186 /* BinaryExpression */: + // In the right operand of an && or ||, narrow based on left operand + if (child === node_1.right) { + if (node_1.operatorToken.kind === 51 /* AmpersandAmpersandToken */) { + type = narrowType(type, node_1.left, /*assumeTrue*/ true); + } + else if (node_1.operatorToken.kind === 52 /* BarBarToken */) { + type = narrowType(type, node_1.left, /*assumeTrue*/ false); + } + } + break; + default: + ts.Debug.fail("Unreachable!"); + } + // Use original type if construct contains assignments to variable + if (type !== originalType && isAnyPartOfReferenceAssignedWithin(reference, node_1)) { + type = originalType; + } + } + // Preserve old top-level behavior - if the branch is really an empty set, revert to prior type + if (type === emptyUnionType) { + type = originalType; + } + return type; + function narrowTypeByTruthiness(type, expr, assumeTrue) { + return strictNullChecks && assumeTrue && isMatchingReference(expr, reference) ? getNonNullableType(type) : type; + } + function narrowTypeByBinaryExpression(type, expr, assumeTrue) { + switch (expr.operatorToken.kind) { + case 30 /* EqualsEqualsToken */: + case 31 /* ExclamationEqualsToken */: + case 32 /* EqualsEqualsEqualsToken */: + case 33 /* ExclamationEqualsEqualsToken */: + if (isNullOrUndefinedLiteral(expr.right)) { + return narrowTypeByNullCheck(type, expr, assumeTrue); + } + if (expr.left.kind === 181 /* TypeOfExpression */ && expr.right.kind === 9 /* StringLiteral */) { + return narrowTypeByTypeof(type, expr, assumeTrue); + } + break; + case 51 /* AmpersandAmpersandToken */: + return narrowTypeByAnd(type, expr, assumeTrue); + case 52 /* BarBarToken */: + return narrowTypeByOr(type, expr, assumeTrue); + case 91 /* InstanceOfKeyword */: + return narrowTypeByInstanceof(type, expr, assumeTrue); + } + return type; + } + function narrowTypeByNullCheck(type, expr, assumeTrue) { + // We have '==', '!=', '===', or '!==' operator with 'null' or 'undefined' on the right + var operator = expr.operatorToken.kind; + if (operator === 31 /* ExclamationEqualsToken */ || operator === 33 /* ExclamationEqualsEqualsToken */) { + assumeTrue = !assumeTrue; + } + if (!strictNullChecks || !isMatchingReference(expr.left, reference)) { + return type; + } + var doubleEquals = operator === 30 /* EqualsEqualsToken */ || operator === 31 /* ExclamationEqualsToken */; + var exprNullableKind = doubleEquals ? 96 /* Nullable */ : + expr.right.kind === 93 /* NullKeyword */ ? 64 /* Null */ : 32 /* Undefined */; + if (assumeTrue) { + var nullableKind = getNullableKind(type) & exprNullableKind; + return nullableKind ? getNullableTypeOfKind(nullableKind) : type; + } + return removeNullableKind(type, exprNullableKind); + } + function narrowTypeByTypeof(type, expr, assumeTrue) { + // We have '==', '!=', '====', or !==' operator with 'typeof xxx' on the left + // and string literal on the right var left = expr.left; var right = expr.right; - if (left.expression.kind !== 69 /* Identifier */ || getResolvedSymbol(left.expression) !== symbol) { + if (!isMatchingReference(left.expression, reference)) { return type; } - if (expr.operatorToken.kind === 33 /* ExclamationEqualsEqualsToken */) { + if (expr.operatorToken.kind === 31 /* ExclamationEqualsToken */ || + expr.operatorToken.kind === 33 /* ExclamationEqualsEqualsToken */) { assumeTrue = !assumeTrue; } var typeInfo = primitiveTypeInfo[right.text]; @@ -21172,7 +21921,7 @@ var ts; } function narrowTypeByInstanceof(type, expr, assumeTrue) { // Check that type is not any, assumed result is true, and we have variable symbol on the left - if (isTypeAny(type) || expr.left.kind !== 69 /* Identifier */ || getResolvedSymbol(expr.left) !== symbol) { + if (isTypeAny(type) || !isMatchingReference(expr.left, reference)) { return type; } // Check that right operand is a function type with a prototype property @@ -21222,7 +21971,8 @@ var ts; return getUnionType(assignableConstituents); } } - if (isTypeAssignableTo(narrowedTypeCandidate, originalType)) { + var targetType = originalType.flags & 512 /* TypeParameter */ ? getApparentType(originalType) : originalType; + if (isTypeAssignableTo(narrowedTypeCandidate, targetType)) { // Narrow to the target type if it's assignable to the current type return narrowedTypeCandidate; } @@ -21238,59 +21988,38 @@ var ts; return type; } if (ts.isIdentifierTypePredicate(predicate)) { - if (callExpression.arguments[predicate.parameterIndex] && - getSymbolAtTypePredicatePosition(callExpression.arguments[predicate.parameterIndex]) === symbol) { + var predicateArgument = callExpression.arguments[predicate.parameterIndex]; + if (predicateArgument && isMatchingReference(predicateArgument, reference)) { return getNarrowedType(type, predicate.type, assumeTrue); } } else { var invokedExpression = skipParenthesizedNodes(callExpression.expression); - return narrowTypeByThisTypePredicate(type, predicate, invokedExpression, assumeTrue); - } - return type; - } - function narrowTypeByThisTypePredicate(type, predicate, invokedExpression, assumeTrue) { - if (invokedExpression.kind === 171 /* ElementAccessExpression */ || invokedExpression.kind === 170 /* PropertyAccessExpression */) { - var accessExpression = invokedExpression; - var possibleIdentifier = skipParenthesizedNodes(accessExpression.expression); - if (possibleIdentifier.kind === 69 /* Identifier */ && getSymbolAtTypePredicatePosition(possibleIdentifier) === symbol) { - return getNarrowedType(type, predicate.type, assumeTrue); + if (invokedExpression.kind === 172 /* ElementAccessExpression */ || invokedExpression.kind === 171 /* PropertyAccessExpression */) { + var accessExpression = invokedExpression; + var possibleReference = skipParenthesizedNodes(accessExpression.expression); + if (isMatchingReference(possibleReference, reference)) { + return getNarrowedType(type, predicate.type, assumeTrue); + } } } return type; } - function getSymbolAtTypePredicatePosition(expr) { - expr = skipParenthesizedNodes(expr); - switch (expr.kind) { - case 69 /* Identifier */: - case 170 /* PropertyAccessExpression */: - return getSymbolOfEntityNameOrPropertyAccessExpression(expr); - } - } // Narrow the given type based on the given expression having the assumed boolean value. The returned type // will be a subtype or the same type as the argument. function narrowType(type, expr, assumeTrue) { switch (expr.kind) { - case 172 /* CallExpression */: + case 69 /* Identifier */: + case 97 /* ThisKeyword */: + case 171 /* PropertyAccessExpression */: + return narrowTypeByTruthiness(type, expr, assumeTrue); + case 173 /* CallExpression */: return narrowTypeByTypePredicate(type, expr, assumeTrue); - case 176 /* ParenthesizedExpression */: + case 177 /* ParenthesizedExpression */: return narrowType(type, expr.expression, assumeTrue); - case 185 /* BinaryExpression */: - var operator = expr.operatorToken.kind; - if (operator === 32 /* EqualsEqualsEqualsToken */ || operator === 33 /* ExclamationEqualsEqualsToken */) { - return narrowTypeByEquality(type, expr, assumeTrue); - } - else if (operator === 51 /* AmpersandAmpersandToken */) { - return narrowTypeByAnd(type, expr, assumeTrue); - } - else if (operator === 52 /* BarBarToken */) { - return narrowTypeByOr(type, expr, assumeTrue); - } - else if (operator === 91 /* InstanceOfKeyword */) { - return narrowTypeByInstanceof(type, expr, assumeTrue); - } - break; - case 183 /* PrefixUnaryExpression */: + case 186 /* BinaryExpression */: + return narrowTypeByBinaryExpression(type, expr, assumeTrue); + case 184 /* PrefixUnaryExpression */: if (expr.operator === 49 /* ExclamationToken */) { return narrowType(type, expr.operand, !assumeTrue); } @@ -21299,12 +22028,124 @@ var ts; return type; } } + function getTypeOfSymbolAtLocation(symbol, location) { + // The language service will always care about the narrowed type of a symbol, because that is + // the type the language says the symbol should have. + var type = getTypeOfSymbol(symbol); + if (location.kind === 69 /* Identifier */) { + if (ts.isRightSideOfQualifiedNameOrPropertyAccess(location)) { + location = location.parent; + } + // If location is an identifier or property access that references the given + // symbol, use the location as the reference with respect to which we narrow. + if (ts.isExpression(location)) { + checkExpression(location); + if (getNodeLinks(location).resolvedSymbol === symbol) { + return getNarrowedTypeOfReference(type, location); + } + } + } + // The location isn't a reference to the given symbol, meaning we're being asked + // a hypothetical question of what type the symbol would have if there was a reference + // to it at the given location. To answer that question we manufacture a transient + // identifier at the location and narrow with respect to that identifier. + return getNarrowedTypeOfReference(type, createTransientIdentifier(symbol, location)); + } function skipParenthesizedNodes(expression) { - while (expression.kind === 176 /* ParenthesizedExpression */) { + while (expression.kind === 177 /* ParenthesizedExpression */) { expression = expression.expression; } return expression; } + function findFirstAssignment(symbol, container) { + return visit(ts.isFunctionLike(container) ? container.body : container); + function visit(node) { + switch (node.kind) { + case 69 /* Identifier */: + var assignment = getAssignmentRoot(node); + return assignment && getResolvedSymbol(node) === symbol ? assignment : undefined; + case 186 /* BinaryExpression */: + case 217 /* VariableDeclaration */: + case 168 /* BindingElement */: + case 166 /* ObjectBindingPattern */: + case 167 /* ArrayBindingPattern */: + case 169 /* ArrayLiteralExpression */: + case 170 /* ObjectLiteralExpression */: + case 171 /* PropertyAccessExpression */: + case 172 /* ElementAccessExpression */: + case 173 /* CallExpression */: + case 174 /* NewExpression */: + case 176 /* TypeAssertionExpression */: + case 194 /* AsExpression */: + case 195 /* NonNullExpression */: + case 177 /* ParenthesizedExpression */: + case 184 /* PrefixUnaryExpression */: + case 180 /* DeleteExpression */: + case 183 /* AwaitExpression */: + case 181 /* TypeOfExpression */: + case 182 /* VoidExpression */: + case 185 /* PostfixUnaryExpression */: + case 189 /* YieldExpression */: + case 187 /* ConditionalExpression */: + case 190 /* SpreadElementExpression */: + case 199 /* VariableStatement */: + case 201 /* ExpressionStatement */: + case 202 /* IfStatement */: + case 203 /* DoStatement */: + case 204 /* WhileStatement */: + case 205 /* ForStatement */: + case 206 /* ForInStatement */: + case 207 /* ForOfStatement */: + case 210 /* ReturnStatement */: + case 211 /* WithStatement */: + case 212 /* SwitchStatement */: + case 226 /* CaseBlock */: + case 248 /* CaseClause */: + case 249 /* DefaultClause */: + case 213 /* LabeledStatement */: + case 214 /* ThrowStatement */: + case 215 /* TryStatement */: + case 251 /* CatchClause */: + case 240 /* JsxElement */: + case 241 /* JsxSelfClosingElement */: + case 245 /* JsxAttribute */: + case 246 /* JsxSpreadAttribute */: + case 242 /* JsxOpeningElement */: + case 247 /* JsxExpression */: + case 198 /* Block */: + case 255 /* SourceFile */: + return ts.forEachChild(node, visit); + } + return undefined; + } + } + function checkVariableAssignedBefore(symbol, reference) { + if (!(symbol.flags & 3 /* Variable */)) { + return; + } + var declaration = symbol.valueDeclaration; + if (!declaration || declaration.kind !== 217 /* VariableDeclaration */ || declaration.initializer || ts.isInAmbientContext(declaration)) { + return; + } + var parentParentKind = declaration.parent.parent.kind; + if (parentParentKind === 207 /* ForOfStatement */ || parentParentKind === 206 /* ForInStatement */) { + return; + } + var declarationContainer = ts.getContainingFunction(declaration) || ts.getSourceFileOfNode(declaration); + var referenceContainer = ts.getContainingFunction(reference) || ts.getSourceFileOfNode(reference); + if (declarationContainer !== referenceContainer) { + return; + } + var links = getSymbolLinks(symbol); + if (!links.firstAssignmentChecked) { + links.firstAssignmentChecked = true; + links.firstAssignment = findFirstAssignment(symbol, declarationContainer); + } + if (links.firstAssignment && links.firstAssignment.end <= reference.pos) { + return; + } + error(reference, ts.Diagnostics.Variable_0_is_used_before_being_assigned, symbolToString(symbol)); + } function checkIdentifier(node) { var symbol = getResolvedSymbol(node); // As noted in ECMAScript 6 language spec, arrow functions never have an arguments objects. @@ -21315,7 +22156,7 @@ var ts; // can explicitly bound arguments objects if (symbol === argumentsSymbol) { var container = ts.getContainingFunction(node); - if (container.kind === 178 /* ArrowFunction */) { + if (container.kind === 179 /* ArrowFunction */) { if (languageVersion < 2 /* ES6 */) { error(node, ts.Diagnostics.The_arguments_object_cannot_be_referenced_in_an_arrow_function_in_ES3_and_ES5_Consider_using_a_standard_function_expression); } @@ -21333,7 +22174,7 @@ var ts; // behavior of class names in ES6. if (languageVersion === 2 /* ES6 */ && localOrExportSymbol.flags & 32 /* Class */ - && localOrExportSymbol.valueDeclaration.kind === 218 /* ClassDeclaration */ + && localOrExportSymbol.valueDeclaration.kind === 220 /* ClassDeclaration */ && ts.nodeIsDecorated(localOrExportSymbol.valueDeclaration)) { var container = ts.getContainingClass(node); while (container !== undefined) { @@ -21348,7 +22189,11 @@ var ts; checkCollisionWithCapturedSuperVariable(node, node); checkCollisionWithCapturedThisVariable(node, node); checkNestedBlockScopedBinding(node, symbol); - return getNarrowedTypeOfSymbol(localOrExportSymbol, node); + var type = getTypeOfSymbol(localOrExportSymbol); + if (strictNullChecks && !isAssignmentTarget(node) && !(type.flags & 1 /* Any */) && !(getNullableKind(type) & 32 /* Undefined */)) { + checkVariableAssignedBefore(symbol, node); + } + return getNarrowedTypeOfReference(type, node); } function isInsideFunction(node, threshold) { var current = node; @@ -21363,7 +22208,7 @@ var ts; function checkNestedBlockScopedBinding(node, symbol) { if (languageVersion >= 2 /* ES6 */ || (symbol.flags & (2 /* BlockScopedVariable */ | 32 /* Class */)) === 0 || - symbol.valueDeclaration.parent.kind === 248 /* CatchClause */) { + symbol.valueDeclaration.parent.kind === 251 /* CatchClause */) { return; } // 1. walk from the use site up to the declaration and check @@ -21388,8 +22233,8 @@ var ts; } // mark variables that are declared in loop initializer and reassigned inside the body of ForStatement. // if body of ForStatement will be converted to function then we'll need a extra machinery to propagate reassigned values back. - if (container.kind === 203 /* ForStatement */ && - ts.getAncestor(symbol.valueDeclaration, 216 /* VariableDeclarationList */).parent === container && + if (container.kind === 205 /* ForStatement */ && + ts.getAncestor(symbol.valueDeclaration, 218 /* VariableDeclarationList */).parent === container && isAssignedInBodyOfForStatement(node, container)) { getNodeLinks(symbol.valueDeclaration).flags |= 2097152 /* NeedsLoopOutParameter */; } @@ -21403,15 +22248,15 @@ var ts; function isAssignedInBodyOfForStatement(node, container) { var current = node; // skip parenthesized nodes - while (current.parent.kind === 176 /* ParenthesizedExpression */) { + while (current.parent.kind === 177 /* ParenthesizedExpression */) { current = current.parent; } // check if node is used as LHS in some assignment expression var isAssigned = false; - if (current.parent.kind === 185 /* BinaryExpression */) { - isAssigned = current.parent.left === current && ts.isAssignmentOperator(current.parent.operatorToken.kind); + if (isAssignmentTarget(current)) { + isAssigned = true; } - if ((current.parent.kind === 183 /* PrefixUnaryExpression */ || current.parent.kind === 184 /* PostfixUnaryExpression */)) { + else if ((current.parent.kind === 184 /* PrefixUnaryExpression */ || current.parent.kind === 185 /* PostfixUnaryExpression */)) { var expr = current.parent; isAssigned = expr.operator === 41 /* PlusPlusToken */ || expr.operator === 42 /* MinusMinusToken */; } @@ -21432,7 +22277,7 @@ var ts; } function captureLexicalThis(node, container) { getNodeLinks(node).flags |= 2 /* LexicalThis */; - if (container.kind === 143 /* PropertyDeclaration */ || container.kind === 146 /* Constructor */) { + if (container.kind === 144 /* PropertyDeclaration */ || container.kind === 147 /* Constructor */) { var classNode = container.parent; getNodeLinks(classNode).flags |= 4 /* CaptureThis */; } @@ -21480,7 +22325,7 @@ var ts; // tell whether 'this' needs to be captured. var container = ts.getThisContainer(node, /* includeArrowFunctions */ true); var needToCaptureLexicalThis = false; - if (container.kind === 146 /* Constructor */) { + if (container.kind === 147 /* Constructor */) { var containingClassDecl = container.parent; var baseTypeNode = ts.getClassExtendsHeritageClauseElement(containingClassDecl); // If a containing class does not have extends clause or the class extends null @@ -21501,41 +22346,60 @@ var ts; } } // Now skip arrow functions to get the "real" owner of 'this'. - if (container.kind === 178 /* ArrowFunction */) { + if (container.kind === 179 /* ArrowFunction */) { container = ts.getThisContainer(container, /* includeArrowFunctions */ false); // When targeting es6, arrow function lexically bind "this" so we do not need to do the work of binding "this" in emitted code needToCaptureLexicalThis = (languageVersion < 2 /* ES6 */); } switch (container.kind) { - case 222 /* ModuleDeclaration */: + case 224 /* ModuleDeclaration */: error(node, ts.Diagnostics.this_cannot_be_referenced_in_a_module_or_namespace_body); // do not return here so in case if lexical this is captured - it will be reflected in flags on NodeLinks break; - case 221 /* EnumDeclaration */: + case 223 /* EnumDeclaration */: error(node, ts.Diagnostics.this_cannot_be_referenced_in_current_location); // do not return here so in case if lexical this is captured - it will be reflected in flags on NodeLinks break; - case 146 /* Constructor */: + case 147 /* Constructor */: if (isInConstructorArgumentInitializer(node, container)) { error(node, ts.Diagnostics.this_cannot_be_referenced_in_constructor_arguments); } break; - case 143 /* PropertyDeclaration */: - case 142 /* PropertySignature */: + case 144 /* PropertyDeclaration */: + case 143 /* PropertySignature */: if (container.flags & 32 /* Static */) { error(node, ts.Diagnostics.this_cannot_be_referenced_in_a_static_property_initializer); } break; - case 138 /* ComputedPropertyName */: + case 139 /* ComputedPropertyName */: error(node, ts.Diagnostics.this_cannot_be_referenced_in_a_computed_property_name); break; } if (needToCaptureLexicalThis) { captureLexicalThis(node, container); } + if (ts.isFunctionLike(container)) { + var type = getContextuallyTypedThisType(container); + if (type) { + return type; + } + var signature = getSignatureFromDeclaration(container); + if (signature.thisType) { + return signature.thisType; + } + if (container.parent && container.parent.kind === 170 /* ObjectLiteralExpression */) { + // Note: this works because object literal methods are deferred, + // which means that the type of the containing object literal is already known. + var type_1 = checkExpressionCached(container.parent); + if (type_1) { + return type_1; + } + } + } if (ts.isClassLike(container.parent)) { var symbol = getSymbolOfNode(container.parent); - return container.flags & 32 /* Static */ ? getTypeOfSymbol(symbol) : getDeclaredTypeOfSymbol(symbol).thisType; + var type = container.flags & 32 /* Static */ ? getTypeOfSymbol(symbol) : getDeclaredTypeOfSymbol(symbol).thisType; + return getNarrowedTypeOfReference(type, node); } if (ts.isInJavaScriptFile(node)) { var type = getTypeForThisExpressionFromJSDoc(container); @@ -21544,7 +22408,7 @@ var ts; } // If this is a function in a JS file, it might be a class method. Check if it's the RHS // of a x.prototype.y = function [name]() { .... } - if (container.kind === 177 /* FunctionExpression */) { + if (container.kind === 178 /* FunctionExpression */) { if (ts.getSpecialPropertyAssignmentKind(container.parent) === 3 /* PrototypeProperty */) { // Get the 'x' of 'x.prototype.y = f' (here, 'f' is 'container') var className = container.parent // x.prototype.y = f @@ -21558,32 +22422,36 @@ var ts; } } } + if (compilerOptions.noImplicitThis) { + // With noImplicitThis, functions may not reference 'this' if it has type 'any' + error(node, ts.Diagnostics.this_implicitly_has_type_any_because_it_does_not_have_a_type_annotation); + } return anyType; } function getTypeForThisExpressionFromJSDoc(node) { var typeTag = ts.getJSDocTypeTag(node); - if (typeTag && typeTag.typeExpression && typeTag.typeExpression.type && typeTag.typeExpression.type.kind === 265 /* JSDocFunctionType */) { + if (typeTag && typeTag.typeExpression && typeTag.typeExpression.type && typeTag.typeExpression.type.kind === 268 /* JSDocFunctionType */) { var jsDocFunctionType = typeTag.typeExpression.type; - if (jsDocFunctionType.parameters.length > 0 && jsDocFunctionType.parameters[0].type.kind === 268 /* JSDocThisType */) { + if (jsDocFunctionType.parameters.length > 0 && jsDocFunctionType.parameters[0].type.kind === 271 /* JSDocThisType */) { return getTypeFromTypeNode(jsDocFunctionType.parameters[0].type); } } } function isInConstructorArgumentInitializer(node, constructorDecl) { for (var n = node; n && n !== constructorDecl; n = n.parent) { - if (n.kind === 140 /* Parameter */) { + if (n.kind === 141 /* Parameter */) { return true; } } return false; } function checkSuperExpression(node) { - var isCallExpression = node.parent.kind === 172 /* CallExpression */ && node.parent.expression === node; + var isCallExpression = node.parent.kind === 173 /* CallExpression */ && node.parent.expression === node; var container = ts.getSuperContainer(node, /*stopOnFunctions*/ true); var needToCaptureLexicalThis = false; if (!isCallExpression) { // adjust the container reference in case if super is used inside arrow functions with arbitrary deep nesting - while (container && container.kind === 178 /* ArrowFunction */) { + while (container && container.kind === 179 /* ArrowFunction */) { container = ts.getSuperContainer(container, /*stopOnFunctions*/ true); needToCaptureLexicalThis = languageVersion < 2 /* ES6 */; } @@ -21597,16 +22465,16 @@ var ts; // [super.foo()]() {} // } var current = node; - while (current && current !== container && current.kind !== 138 /* ComputedPropertyName */) { + while (current && current !== container && current.kind !== 139 /* ComputedPropertyName */) { current = current.parent; } - if (current && current.kind === 138 /* ComputedPropertyName */) { + if (current && current.kind === 139 /* ComputedPropertyName */) { error(node, ts.Diagnostics.super_cannot_be_referenced_in_a_computed_property_name); } else if (isCallExpression) { error(node, ts.Diagnostics.Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors); } - else if (!container || !container.parent || !(ts.isClassLike(container.parent) || container.parent.kind === 169 /* ObjectLiteralExpression */)) { + else if (!container || !container.parent || !(ts.isClassLike(container.parent) || container.parent.kind === 170 /* ObjectLiteralExpression */)) { error(node, ts.Diagnostics.super_can_only_be_referenced_in_members_of_derived_classes_or_object_literal_expressions); } else { @@ -21677,7 +22545,7 @@ var ts; // This helper creates an object with a "value" property that wraps the `super` property or indexed access for both get and set. // This is required for destructuring assignments, as a call expression cannot be used as the target of a destructuring assignment // while a property access can. - if (container.kind === 145 /* MethodDeclaration */ && container.flags & 256 /* Async */) { + if (container.kind === 146 /* MethodDeclaration */ && container.flags & 256 /* Async */) { if (ts.isSuperPropertyOrElementAccess(node.parent) && isAssignmentTarget(node.parent)) { getNodeLinks(container).flags |= 4096 /* AsyncMethodWithSuperBinding */; } @@ -21691,7 +22559,7 @@ var ts; // in this case they should also use correct lexical this captureLexicalThis(node.parent, container); } - if (container.parent.kind === 169 /* ObjectLiteralExpression */) { + if (container.parent.kind === 170 /* ObjectLiteralExpression */) { if (languageVersion < 2 /* ES6 */) { error(node, ts.Diagnostics.super_is_only_allowed_in_members_of_object_literal_expressions_when_option_target_is_ES2015_or_higher); return unknownType; @@ -21711,7 +22579,7 @@ var ts; } return unknownType; } - if (container.kind === 146 /* Constructor */ && isInConstructorArgumentInitializer(node, container)) { + if (container.kind === 147 /* Constructor */ && isInConstructorArgumentInitializer(node, container)) { // issue custom error message for super property access in constructor arguments (to be aligned with old compiler) error(node, ts.Diagnostics.super_cannot_be_referenced_in_constructor_arguments); return unknownType; @@ -21726,7 +22594,7 @@ var ts; if (isCallExpression) { // TS 1.0 SPEC (April 2014): 4.8.1 // Super calls are only permitted in constructors of derived classes - return container.kind === 146 /* Constructor */; + return container.kind === 147 /* Constructor */; } else { // TS 1.0 SPEC (April 2014) @@ -21734,27 +22602,38 @@ var ts; // - In a constructor, instance member function, instance member accessor, or instance member variable initializer where this references a derived class instance // - In a static member function or static member accessor // topmost container must be something that is directly nested in the class declaration\object literal expression - if (ts.isClassLike(container.parent) || container.parent.kind === 169 /* ObjectLiteralExpression */) { + if (ts.isClassLike(container.parent) || container.parent.kind === 170 /* ObjectLiteralExpression */) { if (container.flags & 32 /* Static */) { - return container.kind === 145 /* MethodDeclaration */ || - container.kind === 144 /* MethodSignature */ || - container.kind === 147 /* GetAccessor */ || - container.kind === 148 /* SetAccessor */; + return container.kind === 146 /* MethodDeclaration */ || + container.kind === 145 /* MethodSignature */ || + container.kind === 148 /* GetAccessor */ || + container.kind === 149 /* SetAccessor */; } else { - return container.kind === 145 /* MethodDeclaration */ || - container.kind === 144 /* MethodSignature */ || - container.kind === 147 /* GetAccessor */ || - container.kind === 148 /* SetAccessor */ || - container.kind === 143 /* PropertyDeclaration */ || - container.kind === 142 /* PropertySignature */ || - container.kind === 146 /* Constructor */; + return container.kind === 146 /* MethodDeclaration */ || + container.kind === 145 /* MethodSignature */ || + container.kind === 148 /* GetAccessor */ || + container.kind === 149 /* SetAccessor */ || + container.kind === 144 /* PropertyDeclaration */ || + container.kind === 143 /* PropertySignature */ || + container.kind === 147 /* Constructor */; } } } return false; } } + function getContextuallyTypedThisType(func) { + if ((isFunctionExpressionOrArrowFunction(func) || ts.isObjectLiteralMethod(func)) && + isContextSensitive(func) && + func.kind !== 179 /* ArrowFunction */) { + var contextualSignature = getContextualSignature(func); + if (contextualSignature) { + return contextualSignature.thisType; + } + } + return undefined; + } // Return contextual type of parameter or undefined if no contextual type is available function getContextuallyTypedParameterType(parameter) { var func = parameter.parent; @@ -21779,18 +22658,21 @@ var ts; } return undefined; } - // In a variable, parameter or property declaration with a type annotation, the contextual type of an initializer - // expression is the type of the variable, parameter or property. Otherwise, in a parameter declaration of a - // contextually typed function expression, the contextual type of an initializer expression is the contextual type - // of the parameter. Otherwise, in a variable or parameter declaration with a binding pattern name, the contextual - // type of an initializer expression is the type implied by the binding pattern. + // In a variable, parameter or property declaration with a type annotation, + // the contextual type of an initializer expression is the type of the variable, parameter or property. + // Otherwise, in a parameter declaration of a contextually typed function expression, + // the contextual type of an initializer expression is the contextual type of the parameter. + // Otherwise, in a variable or parameter declaration with a binding pattern name, + // the contextual type of an initializer expression is the type implied by the binding pattern. + // Otherwise, in a binding pattern inside a variable or parameter declaration, + // the contextual type of an initializer expression is the type annotation of the containing declaration, if present. function getContextualTypeForInitializerExpression(node) { var declaration = node.parent; if (node === declaration.initializer) { if (declaration.type) { return getTypeFromTypeNode(declaration.type); } - if (declaration.kind === 140 /* Parameter */) { + if (declaration.kind === 141 /* Parameter */) { var type = getContextuallyTypedParameterType(declaration); if (type) { return type; @@ -21799,6 +22681,18 @@ var ts; if (ts.isBindingPattern(declaration.name)) { return getTypeFromBindingPattern(declaration.name, /*includePatternInType*/ true); } + if (ts.isBindingPattern(declaration.parent)) { + var parentDeclaration = declaration.parent.parent; + var name_11 = declaration.propertyName || declaration.name; + if (ts.isVariableLike(parentDeclaration) && + parentDeclaration.type && + !ts.isBindingPattern(name_11)) { + var text = getTextOfPropertyName(name_11); + if (text) { + return getTypeOfPropertyOfType(getTypeFromTypeNode(parentDeclaration.type), text); + } + } + } } return undefined; } @@ -21823,7 +22717,7 @@ var ts; } function isInParameterInitializerBeforeContainingFunction(node) { while (node.parent && !ts.isFunctionLike(node.parent)) { - if (node.parent.kind === 140 /* Parameter */ && node.parent.initializer === node) { + if (node.parent.kind === 141 /* Parameter */ && node.parent.initializer === node) { return true; } node = node.parent; @@ -21834,8 +22728,8 @@ var ts; // If the containing function has a return type annotation, is a constructor, or is a get accessor whose // corresponding set accessor has a type annotation, return statements in the function are contextually typed if (functionDecl.type || - functionDecl.kind === 146 /* Constructor */ || - functionDecl.kind === 147 /* GetAccessor */ && ts.getSetAccessorTypeAnnotationNode(ts.getDeclarationOfKind(functionDecl.symbol, 148 /* SetAccessor */))) { + functionDecl.kind === 147 /* Constructor */ || + functionDecl.kind === 148 /* GetAccessor */ && ts.getSetAccessorTypeAnnotationNode(ts.getDeclarationOfKind(functionDecl.symbol, 149 /* SetAccessor */))) { return getReturnTypeOfSignature(getSignatureFromDeclaration(functionDecl)); } // Otherwise, if the containing function is contextually typed by a function type with exactly one call signature @@ -21857,7 +22751,7 @@ var ts; return undefined; } function getContextualTypeForSubstitutionExpression(template, substitutionExpression) { - if (template.parent.kind === 174 /* TaggedTemplateExpression */) { + if (template.parent.kind === 175 /* TaggedTemplateExpression */) { return getContextualTypeForArgument(template.parent, substitutionExpression); } return undefined; @@ -21984,13 +22878,13 @@ var ts; var kind = attribute.kind; var jsxElement = attribute.parent; var attrsType = getJsxElementAttributesType(jsxElement); - if (attribute.kind === 242 /* JsxAttribute */) { + if (attribute.kind === 245 /* JsxAttribute */) { if (!attrsType || isTypeAny(attrsType)) { return undefined; } return getTypeOfPropertyOfType(attrsType, attribute.name.text); } - else if (attribute.kind === 243 /* JsxSpreadAttribute */) { + else if (attribute.kind === 246 /* JsxSpreadAttribute */) { return attrsType; } ts.Debug.fail("Expected JsxAttribute or JsxSpreadAttribute, got ts.SyntaxKind[" + kind + "]"); @@ -22028,40 +22922,40 @@ var ts; } var parent = node.parent; switch (parent.kind) { - case 215 /* VariableDeclaration */: - case 140 /* Parameter */: - case 143 /* PropertyDeclaration */: - case 142 /* PropertySignature */: - case 167 /* BindingElement */: + case 217 /* VariableDeclaration */: + case 141 /* Parameter */: + case 144 /* PropertyDeclaration */: + case 143 /* PropertySignature */: + case 168 /* BindingElement */: return getContextualTypeForInitializerExpression(node); - case 178 /* ArrowFunction */: - case 208 /* ReturnStatement */: + case 179 /* ArrowFunction */: + case 210 /* ReturnStatement */: return getContextualTypeForReturnExpression(node); - case 188 /* YieldExpression */: + case 189 /* YieldExpression */: return getContextualTypeForYieldOperand(parent); - case 172 /* CallExpression */: - case 173 /* NewExpression */: + case 173 /* CallExpression */: + case 174 /* NewExpression */: return getContextualTypeForArgument(parent, node); - case 175 /* TypeAssertionExpression */: - case 193 /* AsExpression */: + case 176 /* TypeAssertionExpression */: + case 194 /* AsExpression */: return getTypeFromTypeNode(parent.type); - case 185 /* BinaryExpression */: + case 186 /* BinaryExpression */: return getContextualTypeForBinaryOperand(node); - case 249 /* PropertyAssignment */: + case 252 /* PropertyAssignment */: return getContextualTypeForObjectLiteralElement(parent); - case 168 /* ArrayLiteralExpression */: + case 169 /* ArrayLiteralExpression */: return getContextualTypeForElementExpression(node); - case 186 /* ConditionalExpression */: + case 187 /* ConditionalExpression */: return getContextualTypeForConditionalOperand(node); - case 194 /* TemplateSpan */: - ts.Debug.assert(parent.parent.kind === 187 /* TemplateExpression */); + case 196 /* TemplateSpan */: + ts.Debug.assert(parent.parent.kind === 188 /* TemplateExpression */); return getContextualTypeForSubstitutionExpression(parent.parent, node); - case 176 /* ParenthesizedExpression */: + case 177 /* ParenthesizedExpression */: return getContextualType(parent); - case 244 /* JsxExpression */: + case 247 /* JsxExpression */: return getContextualType(parent); - case 242 /* JsxAttribute */: - case 243 /* JsxSpreadAttribute */: + case 245 /* JsxAttribute */: + case 246 /* JsxSpreadAttribute */: return getContextualTypeForJsxAttribute(parent); } return undefined; @@ -22078,7 +22972,7 @@ var ts; } } function isFunctionExpressionOrArrowFunction(node) { - return node.kind === 177 /* FunctionExpression */ || node.kind === 178 /* ArrowFunction */; + return node.kind === 178 /* FunctionExpression */ || node.kind === 179 /* ArrowFunction */; } function getContextualSignatureForFunctionLikeDeclaration(node) { // Only function expressions, arrow functions, and object literal methods are contextually typed. @@ -22092,7 +22986,7 @@ var ts; // all identical ignoring their return type, the result is same signature but with return type as // union type of return types from these signatures function getContextualSignature(node) { - ts.Debug.assert(node.kind !== 145 /* MethodDeclaration */ || ts.isObjectLiteralMethod(node)); + ts.Debug.assert(node.kind !== 146 /* MethodDeclaration */ || ts.isObjectLiteralMethod(node)); var type = ts.isObjectLiteralMethod(node) ? getContextualTypeForObjectLiteralMethod(node) : getApparentTypeOfContextualType(node); @@ -22112,7 +23006,7 @@ var ts; // This signature will contribute to contextual union signature signatureList = [signature]; } - else if (!compareSignaturesIdentical(signatureList[0], signature, /*partialMatch*/ false, /*ignoreReturnTypes*/ true, compareTypesIdentical)) { + else if (!compareSignaturesIdentical(signatureList[0], signature, /*partialMatch*/ false, /*ignoreThisTypes*/ true, /*ignoreReturnTypes*/ true, compareTypesIdentical)) { // Signatures aren't identical, do not use return undefined; } @@ -22150,19 +23044,38 @@ var ts; function isInferentialContext(mapper) { return mapper && mapper.context; } + // Return the root assignment node of an assignment target + function getAssignmentRoot(node) { + while (node.parent.kind === 177 /* ParenthesizedExpression */) { + node = node.parent; + } + while (true) { + if (node.parent.kind === 252 /* PropertyAssignment */) { + node = node.parent.parent; + } + else if (node.parent.kind === 169 /* ArrayLiteralExpression */) { + node = node.parent; + } + else { + break; + } + } + var parent = node.parent; + return parent.kind === 186 /* BinaryExpression */ && + parent.operatorToken.kind === 56 /* EqualsToken */ && + parent.left === node ? parent : undefined; + } // A node is an assignment target if it is on the left hand side of an '=' token, if it is parented by a property // assignment in an object literal that is an assignment target, or if it is parented by an array literal that is // an assignment target. Examples include 'a = xxx', '{ p: a } = xxx', '[{ p: a}] = xxx'. function isAssignmentTarget(node) { + return !!getAssignmentRoot(node); + } + function isCompoundAssignmentTarget(node) { var parent = node.parent; - if (parent.kind === 185 /* BinaryExpression */ && parent.operatorToken.kind === 56 /* EqualsToken */ && parent.left === node) { - return true; - } - if (parent.kind === 249 /* PropertyAssignment */) { - return isAssignmentTarget(parent.parent); - } - if (parent.kind === 168 /* ArrayLiteralExpression */) { - return isAssignmentTarget(parent); + if (parent.kind === 186 /* BinaryExpression */ && parent.left === node) { + var operator = parent.operatorToken.kind; + return operator >= 56 /* FirstAssignment */ && operator <= 68 /* LastAssignment */; } return false; } @@ -22177,8 +23090,8 @@ var ts; return checkIteratedTypeOrElementType(arrayOrIterableType, node.expression, /*allowStringInput*/ false); } function hasDefaultValue(node) { - return (node.kind === 167 /* BindingElement */ && !!node.initializer) || - (node.kind === 185 /* BinaryExpression */ && node.operatorToken.kind === 56 /* EqualsToken */); + return (node.kind === 168 /* BindingElement */ && !!node.initializer) || + (node.kind === 186 /* BinaryExpression */ && node.operatorToken.kind === 56 /* EqualsToken */); } function checkArrayLiteral(node, contextualMapper) { var elements = node.elements; @@ -22187,7 +23100,7 @@ var ts; var inDestructuringPattern = isAssignmentTarget(node); for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) { var e = elements_1[_i]; - if (inDestructuringPattern && e.kind === 189 /* SpreadElementExpression */) { + if (inDestructuringPattern && e.kind === 190 /* SpreadElementExpression */) { // Given the following situation: // var c: {}; // [...c] = ["", 0]; @@ -22211,7 +23124,7 @@ var ts; var type = checkExpression(e, contextualMapper); elementTypes.push(type); } - hasSpreadElement = hasSpreadElement || e.kind === 189 /* SpreadElementExpression */; + hasSpreadElement = hasSpreadElement || e.kind === 190 /* SpreadElementExpression */; } if (!hasSpreadElement) { // If array literal is actually a destructuring pattern, mark it as an implied type. We do this such @@ -22226,7 +23139,7 @@ var ts; var pattern = contextualType.pattern; // If array literal is contextually typed by a binding pattern or an assignment pattern, pad the resulting // tuple type with the corresponding binding or assignment element types to make the lengths equal. - if (pattern && (pattern.kind === 166 /* ArrayBindingPattern */ || pattern.kind === 168 /* ArrayLiteralExpression */)) { + if (pattern && (pattern.kind === 167 /* ArrayBindingPattern */ || pattern.kind === 169 /* ArrayLiteralExpression */)) { var patternElements = pattern.elements; for (var i = elementTypes.length; i < patternElements.length; i++) { var patternElement = patternElements[i]; @@ -22234,7 +23147,7 @@ var ts; elementTypes.push(contextualType.elementTypes[i]); } else { - if (patternElement.kind !== 191 /* OmittedExpression */) { + if (patternElement.kind !== 192 /* OmittedExpression */) { error(patternElement, ts.Diagnostics.Initializer_provides_no_value_for_this_binding_element_and_the_binding_element_has_no_default_value); } elementTypes.push(unknownType); @@ -22246,10 +23159,10 @@ var ts; } } } - return createArrayType(elementTypes.length ? getUnionType(elementTypes) : undefinedType); + return createArrayType(elementTypes.length ? getUnionType(elementTypes) : emptyArrayElementType); } function isNumericName(name) { - return name.kind === 138 /* ComputedPropertyName */ ? isNumericComputedName(name) : isNumericLiteralName(name.text); + return name.kind === 139 /* ComputedPropertyName */ ? isNumericComputedName(name) : isNumericLiteralName(name.text); } function isNumericComputedName(name) { // It seems odd to consider an expression of type Any to result in a numeric name, @@ -22316,7 +23229,7 @@ var ts; var propertiesArray = []; var contextualType = getApparentTypeOfContextualType(node); var contextualTypeHasPattern = contextualType && contextualType.pattern && - (contextualType.pattern.kind === 165 /* ObjectBindingPattern */ || contextualType.pattern.kind === 169 /* ObjectLiteralExpression */); + (contextualType.pattern.kind === 166 /* ObjectBindingPattern */ || contextualType.pattern.kind === 170 /* ObjectLiteralExpression */); var typeFlags = 0; var patternWithComputedProperties = false; var hasComputedStringProperty = false; @@ -22324,18 +23237,18 @@ var ts; for (var _i = 0, _a = node.properties; _i < _a.length; _i++) { var memberDecl = _a[_i]; var member = memberDecl.symbol; - if (memberDecl.kind === 249 /* PropertyAssignment */ || - memberDecl.kind === 250 /* ShorthandPropertyAssignment */ || + if (memberDecl.kind === 252 /* PropertyAssignment */ || + memberDecl.kind === 253 /* ShorthandPropertyAssignment */ || ts.isObjectLiteralMethod(memberDecl)) { var type = void 0; - if (memberDecl.kind === 249 /* PropertyAssignment */) { + if (memberDecl.kind === 252 /* PropertyAssignment */) { type = checkPropertyAssignment(memberDecl, contextualMapper); } - else if (memberDecl.kind === 145 /* MethodDeclaration */) { + else if (memberDecl.kind === 146 /* MethodDeclaration */) { type = checkObjectLiteralMethod(memberDecl, contextualMapper); } else { - ts.Debug.assert(memberDecl.kind === 250 /* ShorthandPropertyAssignment */); + ts.Debug.assert(memberDecl.kind === 253 /* ShorthandPropertyAssignment */); type = checkExpression(memberDecl.name, contextualMapper); } typeFlags |= type.flags; @@ -22343,8 +23256,8 @@ var ts; if (inDestructuringPattern) { // If object literal is an assignment pattern and if the assignment pattern specifies a default value // for the property, make the property optional. - var isOptional = (memberDecl.kind === 249 /* PropertyAssignment */ && hasDefaultValue(memberDecl.initializer)) || - (memberDecl.kind === 250 /* ShorthandPropertyAssignment */ && memberDecl.objectAssignmentInitializer); + var isOptional = (memberDecl.kind === 252 /* PropertyAssignment */ && hasDefaultValue(memberDecl.initializer)) || + (memberDecl.kind === 253 /* ShorthandPropertyAssignment */ && memberDecl.objectAssignmentInitializer); if (isOptional) { prop.flags |= 536870912 /* Optional */; } @@ -22378,7 +23291,7 @@ var ts; // an ordinary function declaration(section 6.1) with no parameters. // A set accessor declaration is processed in the same manner // as an ordinary function declaration with a single parameter and a Void return type. - ts.Debug.assert(memberDecl.kind === 147 /* GetAccessor */ || memberDecl.kind === 148 /* SetAccessor */); + ts.Debug.assert(memberDecl.kind === 148 /* GetAccessor */ || memberDecl.kind === 149 /* SetAccessor */); checkAccessorDeclaration(memberDecl); } if (ts.hasDynamicName(memberDecl)) { @@ -22426,18 +23339,23 @@ var ts; // Check attributes checkJsxOpeningLikeElement(node.openingElement); // Perform resolution on the closing tag so that rename/go to definition/etc work - getJsxTagSymbol(node.closingElement); + if (isJsxIntrinsicIdentifier(node.closingElement.tagName)) { + getIntrinsicTagSymbol(node.closingElement); + } + else { + checkExpression(node.closingElement.tagName); + } // Check children for (var _i = 0, _a = node.children; _i < _a.length; _i++) { var child = _a[_i]; switch (child.kind) { - case 244 /* JsxExpression */: + case 247 /* JsxExpression */: checkJsxExpression(child); break; - case 237 /* JsxElement */: + case 240 /* JsxElement */: checkJsxElement(child); break; - case 238 /* JsxSelfClosingElement */: + case 241 /* JsxSelfClosingElement */: checkJsxSelfClosingElement(child); break; } @@ -22455,7 +23373,7 @@ var ts; * Returns true iff React would emit this tag name as a string rather than an identifier or qualified name */ function isJsxIntrinsicIdentifier(tagName) { - if (tagName.kind === 137 /* QualifiedName */) { + if (tagName.kind === 138 /* QualifiedName */) { return false; } else { @@ -22525,14 +23443,6 @@ var ts; } return jsxTypes[name]; } - function getJsxTagSymbol(node) { - if (isJsxIntrinsicIdentifier(node.tagName)) { - return getIntrinsicTagSymbol(node); - } - else { - return checkExpression(node.tagName).symbol; - } - } /** * Looks up an intrinsic tag name and returns a symbol that either points to an intrinsic * property (in which case nodeLinks.jsxFlags will be IntrinsicNamedElement) or an intrinsic @@ -22648,18 +23558,20 @@ var ts; if (!elemClassType || !isTypeAssignableTo(elemInstanceType, elemClassType)) { // Is this is a stateless function component? See if its single signature's return type is // assignable to the JSX Element Type - var elemType = checkExpression(node.tagName); - var callSignatures = elemType && getSignaturesOfType(elemType, 0 /* Call */); - var callSignature = callSignatures && callSignatures.length > 0 && callSignatures[0]; - var callReturnType = callSignature && getReturnTypeOfSignature(callSignature); - var paramType = callReturnType && (callSignature.parameters.length === 0 ? emptyObjectType : getTypeOfSymbol(callSignature.parameters[0])); - if (callReturnType && isTypeAssignableTo(callReturnType, jsxElementType)) { - // Intersect in JSX.IntrinsicAttributes if it exists - var intrinsicAttributes = getJsxType(JsxNames.IntrinsicAttributes); - if (intrinsicAttributes !== unknownType) { - paramType = intersectTypes(intrinsicAttributes, paramType); + if (jsxElementType) { + var elemType = checkExpression(node.tagName); + var callSignatures = elemType && getSignaturesOfType(elemType, 0 /* Call */); + var callSignature = callSignatures && callSignatures.length > 0 && callSignatures[0]; + var callReturnType = callSignature && getReturnTypeOfSignature(callSignature); + var paramType = callReturnType && (callSignature.parameters.length === 0 ? emptyObjectType : getTypeOfSymbol(callSignature.parameters[0])); + if (callReturnType && isTypeAssignableTo(callReturnType, jsxElementType)) { + // Intersect in JSX.IntrinsicAttributes if it exists + var intrinsicAttributes = getJsxType(JsxNames.IntrinsicAttributes); + if (intrinsicAttributes !== unknownType) { + paramType = intersectTypes(intrinsicAttributes, paramType); + } + return links.resolvedJsxType = paramType; } - return links.resolvedJsxType = paramType; } } // Issue an error if this return type isn't assignable to JSX.ElementClass @@ -22770,11 +23682,11 @@ var ts; // thus should have their types ignored var sawSpreadedAny = false; for (var i = node.attributes.length - 1; i >= 0; i--) { - if (node.attributes[i].kind === 242 /* JsxAttribute */) { + if (node.attributes[i].kind === 245 /* JsxAttribute */) { checkJsxAttribute((node.attributes[i]), targetAttributesType, nameTable); } else { - ts.Debug.assert(node.attributes[i].kind === 243 /* JsxSpreadAttribute */); + ts.Debug.assert(node.attributes[i].kind === 246 /* JsxSpreadAttribute */); var spreadType = checkJsxSpreadAttribute((node.attributes[i]), targetAttributesType, nameTable); if (isTypeAny(spreadType)) { sawSpreadedAny = true; @@ -22804,7 +23716,7 @@ var ts; // If a symbol is a synthesized symbol with no value declaration, we assume it is a property. Example of this are the synthesized // '.prototype' property as well as synthesized tuple index properties. function getDeclarationKindFromSymbol(s) { - return s.valueDeclaration ? s.valueDeclaration.kind : 143 /* PropertyDeclaration */; + return s.valueDeclaration ? s.valueDeclaration.kind : 144 /* PropertyDeclaration */; } function getDeclarationFlagsFromSymbol(s) { return s.valueDeclaration ? ts.getCombinedNodeFlags(s.valueDeclaration) : s.flags & 134217728 /* Prototype */ ? 4 /* Public */ | 32 /* Static */ : 0; @@ -22820,10 +23732,10 @@ var ts; function checkClassPropertyAccess(node, left, type, prop) { var flags = getDeclarationFlagsFromSymbol(prop); var declaringClass = getDeclaredTypeOfSymbol(getParentOfSymbol(prop)); + var errorNode = node.kind === 171 /* PropertyAccessExpression */ || node.kind === 217 /* VariableDeclaration */ ? + node.name : + node.right; if (left.kind === 95 /* SuperKeyword */) { - var errorNode = node.kind === 170 /* PropertyAccessExpression */ ? - node.name : - node.right; // TS 1.0 spec (April 2014): 4.8.2 // - In a constructor, instance member function, instance member accessor, or // instance member variable initializer where this references a derived class instance, @@ -22831,7 +23743,7 @@ var ts; // - In a static member function or static member accessor // where this references the constructor function object of a derived class, // a super property access is permitted and must specify a public static member function of the base class. - if (languageVersion < 2 /* ES6 */ && getDeclarationKindFromSymbol(prop) !== 145 /* MethodDeclaration */) { + if (languageVersion < 2 /* ES6 */ && getDeclarationKindFromSymbol(prop) !== 146 /* MethodDeclaration */) { // `prop` refers to a *property* declared in the super class // rather than a *method*, so it does not satisfy the above criteria. error(errorNode, ts.Diagnostics.Only_public_and_protected_methods_of_the_base_class_are_accessible_via_the_super_keyword); @@ -22851,13 +23763,11 @@ var ts; return true; } // Property is known to be private or protected at this point - // Get the declaring and enclosing class instance types - var enclosingClassDeclaration = ts.getContainingClass(node); - var enclosingClass = enclosingClassDeclaration ? getDeclaredTypeOfSymbol(getSymbolOfNode(enclosingClassDeclaration)) : undefined; - // Private property is accessible if declaring and enclosing class are the same + // Private property is accessible if the property is within the declaring class if (flags & 8 /* Private */) { - if (declaringClass !== enclosingClass) { - error(node, ts.Diagnostics.Property_0_is_private_and_only_accessible_within_class_1, symbolToString(prop), typeToString(declaringClass)); + var declaringClassDeclaration = getClassLikeDeclarationOfSymbol(getParentOfSymbol(prop)); + if (!isNodeWithinClass(node, declaringClassDeclaration)) { + error(errorNode, ts.Diagnostics.Property_0_is_private_and_only_accessible_within_class_1, symbolToString(prop), typeToString(declaringClass)); return false; } return true; @@ -22867,9 +23777,14 @@ var ts; if (left.kind === 95 /* SuperKeyword */) { return true; } - // A protected property is accessible in the declaring class and classes derived from it - if (!enclosingClass || !hasBaseType(enclosingClass, declaringClass)) { - error(node, ts.Diagnostics.Property_0_is_protected_and_only_accessible_within_class_1_and_its_subclasses, symbolToString(prop), typeToString(declaringClass)); + // Get the enclosing class that has the declaring class as its base type + var enclosingClass = forEachEnclosingClass(node, function (enclosingDeclaration) { + var enclosingClass = getDeclaredTypeOfSymbol(getSymbolOfNode(enclosingDeclaration)); + return hasBaseType(enclosingClass, declaringClass) ? enclosingClass : undefined; + }); + // A protected property is accessible if the property is within the declaring class or classes derived from it + if (!enclosingClass) { + error(errorNode, ts.Diagnostics.Property_0_is_protected_and_only_accessible_within_class_1_and_its_subclasses, symbolToString(prop), typeToString(declaringClass)); return false; } // No further restrictions for static properties @@ -22883,11 +23798,19 @@ var ts; } // TODO: why is the first part of this check here? if (!(getTargetType(type).flags & (1024 /* Class */ | 2048 /* Interface */) && hasBaseType(type, enclosingClass))) { - error(node, ts.Diagnostics.Property_0_is_protected_and_only_accessible_through_an_instance_of_class_1, symbolToString(prop), typeToString(enclosingClass)); + error(errorNode, ts.Diagnostics.Property_0_is_protected_and_only_accessible_through_an_instance_of_class_1, symbolToString(prop), typeToString(enclosingClass)); return false; } return true; } + function checkNonNullExpression(node) { + var type = checkExpression(node); + if (strictNullChecks && getNullableKind(type)) { + error(node, ts.Diagnostics.Object_is_possibly_null_or_undefined); + return getNonNullableType(type); + } + return type; + } function checkPropertyAccessExpression(node) { return checkPropertyAccessExpressionOrQualifiedName(node, node.expression, node.name); } @@ -22895,7 +23818,7 @@ var ts; return checkPropertyAccessExpressionOrQualifiedName(node, node.left, node.right); } function checkPropertyAccessExpressionOrQualifiedName(node, left, right) { - var type = checkExpression(left); + var type = checkNonNullExpression(left); if (isTypeAny(type)) { return type; } @@ -22915,10 +23838,12 @@ var ts; if (prop.parent && prop.parent.flags & 32 /* Class */) { checkClassPropertyAccess(node, left, apparentType, prop); } - return getTypeOfSymbol(prop); + var propType = getTypeOfSymbol(prop); + return node.kind === 171 /* PropertyAccessExpression */ && prop.flags & 4 /* Property */ ? + getNarrowedTypeOfReference(propType, node) : propType; } function isValidPropertyAccess(node, propertyName) { - var left = node.kind === 170 /* PropertyAccessExpression */ + var left = node.kind === 171 /* PropertyAccessExpression */ ? node.expression : node.left; var type = checkExpression(left); @@ -22935,7 +23860,7 @@ var ts; */ function getForInVariableSymbol(node) { var initializer = node.initializer; - if (initializer.kind === 216 /* VariableDeclarationList */) { + if (initializer.kind === 218 /* VariableDeclarationList */) { var variable = initializer.declarations[0]; if (variable && !ts.isBindingPattern(variable.name)) { return getSymbolOfNode(variable); @@ -22964,7 +23889,7 @@ var ts; var child = expr; var node = expr.parent; while (node) { - if (node.kind === 204 /* ForInStatement */ && + if (node.kind === 206 /* ForInStatement */ && child === node.statement && getForInVariableSymbol(node) === symbol && hasNumericPropertyNames(checkExpression(node.expression))) { @@ -22981,7 +23906,7 @@ var ts; // Grammar checking if (!node.argumentExpression) { var sourceFile = ts.getSourceFileOfNode(node); - if (node.parent.kind === 173 /* NewExpression */ && node.parent.expression === node) { + if (node.parent.kind === 174 /* NewExpression */ && node.parent.expression === node) { var start = ts.skipTrivia(sourceFile.text, node.expression.end); var end = node.end; grammarErrorAtPos(sourceFile, start, end - start, ts.Diagnostics.new_T_cannot_be_used_to_create_an_array_Use_new_Array_T_instead); @@ -22993,7 +23918,7 @@ var ts; } } // Obtain base constraint such that we can bail out if the constraint is an unknown type - var objectType = getApparentType(checkExpression(node.expression)); + var objectType = getApparentType(checkNonNullExpression(node.expression)); var indexType = node.argumentExpression ? checkExpression(node.argumentExpression) : unknownType; if (objectType === unknownType) { return unknownType; @@ -23014,15 +23939,15 @@ var ts; // - Otherwise, if IndexExpr is of type Any, the String or Number primitive type, or an enum type, the property access is of type Any. // See if we can index as a property. if (node.argumentExpression) { - var name_11 = getPropertyNameForIndexedAccess(node.argumentExpression, indexType); - if (name_11 !== undefined) { - var prop = getPropertyOfType(objectType, name_11); + var name_12 = getPropertyNameForIndexedAccess(node.argumentExpression, indexType); + if (name_12 !== undefined) { + var prop = getPropertyOfType(objectType, name_12); if (prop) { getNodeLinks(node).resolvedSymbol = prop; return getTypeOfSymbol(prop); } else if (isConstEnum) { - error(node.argumentExpression, ts.Diagnostics.Property_0_does_not_exist_on_const_enum_1, name_11, symbolToString(objectType.symbol)); + error(node.argumentExpression, ts.Diagnostics.Property_0_does_not_exist_on_const_enum_1, name_12, symbolToString(objectType.symbol)); return unknownType; } } @@ -23066,7 +23991,7 @@ var ts; if (indexArgumentExpression.kind === 9 /* StringLiteral */ || indexArgumentExpression.kind === 8 /* NumericLiteral */) { return indexArgumentExpression.text; } - if (indexArgumentExpression.kind === 171 /* ElementAccessExpression */ || indexArgumentExpression.kind === 170 /* PropertyAccessExpression */) { + if (indexArgumentExpression.kind === 172 /* ElementAccessExpression */ || indexArgumentExpression.kind === 171 /* PropertyAccessExpression */) { var value = getConstantValue(indexArgumentExpression); if (value !== undefined) { return value.toString(); @@ -23121,10 +24046,10 @@ var ts; return true; } function resolveUntypedCall(node) { - if (node.kind === 174 /* TaggedTemplateExpression */) { + if (node.kind === 175 /* TaggedTemplateExpression */) { checkExpression(node.template); } - else if (node.kind !== 141 /* Decorator */) { + else if (node.kind !== 142 /* Decorator */) { ts.forEach(node.arguments, function (argument) { checkExpression(argument); }); @@ -23154,13 +24079,13 @@ var ts; for (var _i = 0, signatures_2 = signatures; _i < signatures_2.length; _i++) { var signature = signatures_2[_i]; var symbol = signature.declaration && getSymbolOfNode(signature.declaration); - var parent_6 = signature.declaration && signature.declaration.parent; + var parent_7 = signature.declaration && signature.declaration.parent; if (!lastSymbol || symbol === lastSymbol) { - if (lastParent && parent_6 === lastParent) { + if (lastParent && parent_7 === lastParent) { index++; } else { - lastParent = parent_6; + lastParent = parent_7; index = cutoffIndex; } } @@ -23168,7 +24093,7 @@ var ts; // current declaration belongs to a different symbol // set cutoffIndex so re-orderings in the future won't change result set from 0 to cutoffIndex index = cutoffIndex = result.length; - lastParent = parent_6; + lastParent = parent_7; } lastSymbol = symbol; // specialized signatures always need to be placed before non-specialized signatures regardless @@ -23190,7 +24115,7 @@ var ts; function getSpreadArgumentIndex(args) { for (var i = 0; i < args.length; i++) { var arg = args[i]; - if (arg && arg.kind === 189 /* SpreadElementExpression */) { + if (arg && arg.kind === 190 /* SpreadElementExpression */) { return i; } } @@ -23202,13 +24127,13 @@ var ts; var callIsIncomplete; // In incomplete call we want to be lenient when we have too few arguments var isDecorator; var spreadArgIndex = -1; - if (node.kind === 174 /* TaggedTemplateExpression */) { + if (node.kind === 175 /* TaggedTemplateExpression */) { var tagExpression = node; // Even if the call is incomplete, we'll have a missing expression as our last argument, // so we can say the count is just the arg list length adjustedArgCount = args.length; typeArguments = undefined; - if (tagExpression.template.kind === 187 /* TemplateExpression */) { + if (tagExpression.template.kind === 188 /* TemplateExpression */) { // If a tagged template expression lacks a tail literal, the call is incomplete. // Specifically, a template only can end in a TemplateTail or a Missing literal. var templateExpression = tagExpression.template; @@ -23225,7 +24150,7 @@ var ts; callIsIncomplete = !!templateLiteral.isUnterminated; } } - else if (node.kind === 141 /* Decorator */) { + else if (node.kind === 142 /* Decorator */) { isDecorator = true; typeArguments = undefined; adjustedArgCount = getEffectiveArgumentCount(node, /*args*/ undefined, signature); @@ -23234,7 +24159,7 @@ var ts; var callExpression = node; if (!callExpression.arguments) { // This only happens when we have something of the form: 'new C' - ts.Debug.assert(callExpression.kind === 173 /* NewExpression */); + ts.Debug.assert(callExpression.kind === 174 /* NewExpression */); return signature.minArgumentCount === 0; } // For IDE scenarios we may have an incomplete call, so a trailing comma is tantamount to adding another argument. @@ -23307,13 +24232,18 @@ var ts; if (context.failedTypeParameterIndex !== undefined && !context.inferences[context.failedTypeParameterIndex].isFixed) { context.failedTypeParameterIndex = undefined; } + if (signature.thisType) { + var thisArgumentNode = getThisArgumentOfCall(node); + var thisArgumentType = thisArgumentNode ? checkExpression(thisArgumentNode) : voidType; + inferTypes(context, thisArgumentType, signature.thisType); + } // We perform two passes over the arguments. In the first pass we infer from all arguments, but use // wildcards for all context sensitive function expressions. var argCount = getEffectiveArgumentCount(node, args, signature); for (var i = 0; i < argCount; i++) { var arg = getEffectiveArgument(node, args, i); // If the effective argument is 'undefined', then it is an argument that is present but is synthetic. - if (arg === undefined || arg.kind !== 191 /* OmittedExpression */) { + if (arg === undefined || arg.kind !== 192 /* OmittedExpression */) { var paramType = getTypeAtPosition(signature, i); var argType = getEffectiveArgumentType(node, i, arg); // If the effective argument type is 'undefined', there is no synthetic type @@ -23369,11 +24299,24 @@ var ts; return typeArgumentsAreAssignable; } function checkApplicableSignature(node, args, signature, relation, excludeArgument, reportErrors) { + if (signature.thisType && signature.thisType !== voidType && node.kind !== 174 /* NewExpression */) { + // If the called expression is not of the form `x.f` or `x["f"]`, then sourceType = voidType + // If the signature's 'this' type is voidType, then the check is skipped -- anything is compatible. + // If the expression is a new expression, then the check is skipped. + var thisArgumentNode = getThisArgumentOfCall(node); + var thisArgumentType = thisArgumentNode ? checkExpression(thisArgumentNode) : voidType; + var errorNode = reportErrors ? (thisArgumentNode || node) : undefined; + var headMessage_1 = ts.Diagnostics.The_this_context_of_type_0_is_not_assignable_to_method_s_this_of_type_1; + if (!checkTypeRelatedTo(thisArgumentType, signature.thisType, relation, errorNode, headMessage_1)) { + return false; + } + } + var headMessage = ts.Diagnostics.Argument_of_type_0_is_not_assignable_to_parameter_of_type_1; var argCount = getEffectiveArgumentCount(node, args, signature); for (var i = 0; i < argCount; i++) { var arg = getEffectiveArgument(node, args, i); // If the effective argument is 'undefined', then it is an argument that is present but is synthetic. - if (arg === undefined || arg.kind !== 191 /* OmittedExpression */) { + if (arg === undefined || arg.kind !== 192 /* OmittedExpression */) { // Check spread elements against rest type (from arity check we know spread argument corresponds to a rest parameter) var paramType = getTypeAtPosition(signature, i); var argType = getEffectiveArgumentType(node, i, arg); @@ -23386,7 +24329,6 @@ var ts; } // Use argument expression as error location when reporting errors var errorNode = reportErrors ? getEffectiveArgumentErrorNode(node, i, arg) : undefined; - var headMessage = ts.Diagnostics.Argument_of_type_0_is_not_assignable_to_parameter_of_type_1; if (!checkTypeRelatedTo(argType, paramType, relation, errorNode, headMessage)) { return false; } @@ -23394,6 +24336,20 @@ var ts; } return true; } + /** + * Returns the this argument in calls like x.f(...) and x[f](...). Undefined otherwise. + */ + function getThisArgumentOfCall(node) { + if (node.kind === 173 /* CallExpression */) { + var callee = node.expression; + if (callee.kind === 171 /* PropertyAccessExpression */) { + return callee.expression; + } + else if (callee.kind === 172 /* ElementAccessExpression */) { + return callee.expression; + } + } + } /** * Returns the effective arguments for an expression that works like a function invocation. * @@ -23405,16 +24361,16 @@ var ts; */ function getEffectiveCallArguments(node) { var args; - if (node.kind === 174 /* TaggedTemplateExpression */) { + if (node.kind === 175 /* TaggedTemplateExpression */) { var template = node.template; args = [undefined]; - if (template.kind === 187 /* TemplateExpression */) { + if (template.kind === 188 /* TemplateExpression */) { ts.forEach(template.templateSpans, function (span) { args.push(span.expression); }); } } - else if (node.kind === 141 /* Decorator */) { + else if (node.kind === 142 /* Decorator */) { // For a decorator, we return undefined as we will determine // the number and types of arguments for a decorator using // `getEffectiveArgumentCount` and `getEffectiveArgumentType` below. @@ -23439,19 +24395,19 @@ var ts; * Otherwise, the argument count is the length of the 'args' array. */ function getEffectiveArgumentCount(node, args, signature) { - if (node.kind === 141 /* Decorator */) { + if (node.kind === 142 /* Decorator */) { switch (node.parent.kind) { - case 218 /* ClassDeclaration */: - case 190 /* ClassExpression */: + case 220 /* ClassDeclaration */: + case 191 /* ClassExpression */: // A class decorator will have one argument (see `ClassDecorator` in core.d.ts) return 1; - case 143 /* PropertyDeclaration */: + case 144 /* PropertyDeclaration */: // A property declaration decorator will have two arguments (see // `PropertyDecorator` in core.d.ts) return 2; - case 145 /* MethodDeclaration */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: + case 146 /* MethodDeclaration */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: // A method or accessor declaration decorator will have two or three arguments (see // `PropertyDecorator` and `MethodDecorator` in core.d.ts) // If we are emitting decorators for ES3, we will only pass two arguments. @@ -23461,7 +24417,7 @@ var ts; // If the method decorator signature only accepts a target and a key, we will only // type check those arguments. return signature.parameters.length >= 3 ? 3 : 2; - case 140 /* Parameter */: + case 141 /* Parameter */: // A parameter declaration decorator will have three arguments (see // `ParameterDecorator` in core.d.ts) return 3; @@ -23485,25 +24441,25 @@ var ts; */ function getEffectiveDecoratorFirstArgumentType(node) { // The first argument to a decorator is its `target`. - if (node.kind === 218 /* ClassDeclaration */) { + if (node.kind === 220 /* ClassDeclaration */) { // For a class decorator, the `target` is the type of the class (e.g. the // "static" or "constructor" side of the class) var classSymbol = getSymbolOfNode(node); return getTypeOfSymbol(classSymbol); } - if (node.kind === 140 /* Parameter */) { + if (node.kind === 141 /* Parameter */) { // For a parameter decorator, the `target` is the parent type of the // parameter's containing method. node = node.parent; - if (node.kind === 146 /* Constructor */) { + if (node.kind === 147 /* Constructor */) { var classSymbol = getSymbolOfNode(node); return getTypeOfSymbol(classSymbol); } } - if (node.kind === 143 /* PropertyDeclaration */ || - node.kind === 145 /* MethodDeclaration */ || - node.kind === 147 /* GetAccessor */ || - node.kind === 148 /* SetAccessor */) { + if (node.kind === 144 /* PropertyDeclaration */ || + node.kind === 146 /* MethodDeclaration */ || + node.kind === 148 /* GetAccessor */ || + node.kind === 149 /* SetAccessor */) { // For a property or method decorator, the `target` is the // "static"-side type of the parent of the member if the member is // declared "static"; otherwise, it is the "instance"-side type of the @@ -23530,21 +24486,21 @@ var ts; */ function getEffectiveDecoratorSecondArgumentType(node) { // The second argument to a decorator is its `propertyKey` - if (node.kind === 218 /* ClassDeclaration */) { + if (node.kind === 220 /* ClassDeclaration */) { ts.Debug.fail("Class decorators should not have a second synthetic argument."); return unknownType; } - if (node.kind === 140 /* Parameter */) { + if (node.kind === 141 /* Parameter */) { node = node.parent; - if (node.kind === 146 /* Constructor */) { + if (node.kind === 147 /* Constructor */) { // For a constructor parameter decorator, the `propertyKey` will be `undefined`. return anyType; } } - if (node.kind === 143 /* PropertyDeclaration */ || - node.kind === 145 /* MethodDeclaration */ || - node.kind === 147 /* GetAccessor */ || - node.kind === 148 /* SetAccessor */) { + if (node.kind === 144 /* PropertyDeclaration */ || + node.kind === 146 /* MethodDeclaration */ || + node.kind === 148 /* GetAccessor */ || + node.kind === 149 /* SetAccessor */) { // The `propertyKey` for a property or method decorator will be a // string literal type if the member name is an identifier, number, or string; // otherwise, if the member name is a computed property name it will @@ -23555,7 +24511,7 @@ var ts; case 8 /* NumericLiteral */: case 9 /* StringLiteral */: return getStringLiteralTypeForText(element.name.text); - case 138 /* ComputedPropertyName */: + case 139 /* ComputedPropertyName */: var nameType = checkComputedPropertyName(element.name); if (isTypeOfKind(nameType, 16777216 /* ESSymbol */)) { return nameType; @@ -23581,21 +24537,21 @@ var ts; function getEffectiveDecoratorThirdArgumentType(node) { // The third argument to a decorator is either its `descriptor` for a method decorator // or its `parameterIndex` for a parameter decorator - if (node.kind === 218 /* ClassDeclaration */) { + if (node.kind === 220 /* ClassDeclaration */) { ts.Debug.fail("Class decorators should not have a third synthetic argument."); return unknownType; } - if (node.kind === 140 /* Parameter */) { + if (node.kind === 141 /* Parameter */) { // The `parameterIndex` for a parameter decorator is always a number return numberType; } - if (node.kind === 143 /* PropertyDeclaration */) { + if (node.kind === 144 /* PropertyDeclaration */) { ts.Debug.fail("Property decorators should not have a third synthetic argument."); return unknownType; } - if (node.kind === 145 /* MethodDeclaration */ || - node.kind === 147 /* GetAccessor */ || - node.kind === 148 /* SetAccessor */) { + if (node.kind === 146 /* MethodDeclaration */ || + node.kind === 148 /* GetAccessor */ || + node.kind === 149 /* SetAccessor */) { // The `descriptor` for a method decorator will be a `TypedPropertyDescriptor` // for the type of the member. var propertyType = getTypeOfNode(node); @@ -23627,11 +24583,11 @@ var ts; // Decorators provide special arguments, a tagged template expression provides // a special first argument, and string literals get string literal types // unless we're reporting errors - if (node.kind === 141 /* Decorator */) { + if (node.kind === 142 /* Decorator */) { return getEffectiveDecoratorArgumentType(node, argIndex); } - else if (argIndex === 0 && node.kind === 174 /* TaggedTemplateExpression */) { - return globalTemplateStringsArrayType; + else if (argIndex === 0 && node.kind === 175 /* TaggedTemplateExpression */) { + return getGlobalTemplateStringsArrayType(); } // This is not a synthetic argument, so we return 'undefined' // to signal that the caller needs to check the argument. @@ -23642,8 +24598,8 @@ var ts; */ function getEffectiveArgument(node, args, argIndex) { // For a decorator or the first argument of a tagged template expression we return undefined. - if (node.kind === 141 /* Decorator */ || - (argIndex === 0 && node.kind === 174 /* TaggedTemplateExpression */)) { + if (node.kind === 142 /* Decorator */ || + (argIndex === 0 && node.kind === 175 /* TaggedTemplateExpression */)) { return undefined; } return args[argIndex]; @@ -23652,11 +24608,11 @@ var ts; * Gets the error node to use when reporting errors for an effective argument. */ function getEffectiveArgumentErrorNode(node, argIndex, arg) { - if (node.kind === 141 /* Decorator */) { + if (node.kind === 142 /* Decorator */) { // For a decorator, we use the expression of the decorator for error reporting. return node.expression; } - else if (argIndex === 0 && node.kind === 174 /* TaggedTemplateExpression */) { + else if (argIndex === 0 && node.kind === 175 /* TaggedTemplateExpression */) { // For a the first argument of a tagged template expression, we use the template of the tag for error reporting. return node.template; } @@ -23665,8 +24621,8 @@ var ts; } } function resolveCall(node, signatures, candidatesOutArray, headMessage) { - var isTaggedTemplate = node.kind === 174 /* TaggedTemplateExpression */; - var isDecorator = node.kind === 141 /* Decorator */; + var isTaggedTemplate = node.kind === 175 /* TaggedTemplateExpression */; + var isDecorator = node.kind === 142 /* Decorator */; var typeArguments; if (!isTaggedTemplate && !isDecorator) { typeArguments = node.typeArguments; @@ -23892,7 +24848,7 @@ var ts; } return resolveUntypedCall(node); } - var funcType = checkExpression(node.expression); + var funcType = checkNonNullExpression(node.expression); var apparentType = getApparentType(funcType); if (apparentType === unknownType) { // Another error has already been reported @@ -23940,7 +24896,7 @@ var ts; error(node.arguments[spreadIndex], ts.Diagnostics.Spread_operator_in_new_expressions_is_only_available_when_targeting_ECMAScript_5_and_higher); } } - var expressionType = checkExpression(node.expression); + var expressionType = checkNonNullExpression(node.expression); // If expressionType's apparent type(section 3.8.1) is an object type with one or // more construct signatures, the expression is processed in the same manner as a // function call, but using the construct signatures as the initial set of candidate @@ -23983,13 +24939,16 @@ var ts; // If expressionType's apparent type is an object type with no construct signatures but // one or more call signatures, the expression is processed as a function call. A compile-time // error occurs if the result of the function call is not Void. The type of the result of the - // operation is Any. + // operation is Any. It is an error to have a Void this type. var callSignatures = getSignaturesOfType(expressionType, 0 /* Call */); if (callSignatures.length) { var signature = resolveCall(node, callSignatures, candidatesOutArray); if (getReturnTypeOfSignature(signature) !== voidType) { error(node, ts.Diagnostics.Only_a_void_function_can_be_called_with_the_new_keyword); } + if (signature.thisType === voidType) { + error(node, ts.Diagnostics.A_function_that_is_called_with_the_new_keyword_cannot_have_a_this_type_that_is_void); + } return signature; } error(node, ts.Diagnostics.Cannot_use_new_with_an_expression_whose_type_lacks_a_call_or_construct_signature); @@ -24041,16 +25000,16 @@ var ts; */ function getDiagnosticHeadMessageForDecoratorResolution(node) { switch (node.parent.kind) { - case 218 /* ClassDeclaration */: - case 190 /* ClassExpression */: + case 220 /* ClassDeclaration */: + case 191 /* ClassExpression */: return ts.Diagnostics.Unable_to_resolve_signature_of_class_decorator_when_called_as_an_expression; - case 140 /* Parameter */: + case 141 /* Parameter */: return ts.Diagnostics.Unable_to_resolve_signature_of_parameter_decorator_when_called_as_an_expression; - case 143 /* PropertyDeclaration */: + case 144 /* PropertyDeclaration */: return ts.Diagnostics.Unable_to_resolve_signature_of_property_decorator_when_called_as_an_expression; - case 145 /* MethodDeclaration */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: + case 146 /* MethodDeclaration */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: return ts.Diagnostics.Unable_to_resolve_signature_of_method_decorator_when_called_as_an_expression; } } @@ -24087,16 +25046,16 @@ var ts; // to correctly fill the candidatesOutArray. if (!links.resolvedSignature || candidatesOutArray) { links.resolvedSignature = anySignature; - if (node.kind === 172 /* CallExpression */) { + if (node.kind === 173 /* CallExpression */) { links.resolvedSignature = resolveCallExpression(node, candidatesOutArray); } - else if (node.kind === 173 /* NewExpression */) { + else if (node.kind === 174 /* NewExpression */) { links.resolvedSignature = resolveNewExpression(node, candidatesOutArray); } - else if (node.kind === 174 /* TaggedTemplateExpression */) { + else if (node.kind === 175 /* TaggedTemplateExpression */) { links.resolvedSignature = resolveTaggedTemplateExpression(node, candidatesOutArray); } - else if (node.kind === 141 /* Decorator */) { + else if (node.kind === 142 /* Decorator */) { links.resolvedSignature = resolveDecorator(node, candidatesOutArray); } else { @@ -24124,12 +25083,12 @@ var ts; if (node.expression.kind === 95 /* SuperKeyword */) { return voidType; } - if (node.kind === 173 /* NewExpression */) { + if (node.kind === 174 /* NewExpression */) { var declaration = signature.declaration; if (declaration && - declaration.kind !== 146 /* Constructor */ && - declaration.kind !== 150 /* ConstructSignature */ && - declaration.kind !== 155 /* ConstructorType */ && + declaration.kind !== 147 /* Constructor */ && + declaration.kind !== 151 /* ConstructSignature */ && + declaration.kind !== 156 /* ConstructorType */ && !ts.isJSDocConstructSignature(declaration)) { // When resolved signature is a call signature (and not a construct signature) the result type is any, unless // the declaring function had members created through 'x.prototype.y = expr' or 'this.y = expr' psuedodeclarations @@ -24158,19 +25117,29 @@ var ts; var targetType = getTypeFromTypeNode(node.type); if (produceDiagnostics && targetType !== unknownType) { var widenedType = getWidenedType(exprType); - // Permit 'number[] | "foo"' to be asserted to 'string'. - var bothAreStringLike = maybeTypeOfKind(targetType, 258 /* StringLike */) && - maybeTypeOfKind(widenedType, 258 /* StringLike */); - if (!bothAreStringLike && !(isTypeAssignableTo(targetType, widenedType))) { - checkTypeAssignableTo(exprType, targetType, node, ts.Diagnostics.Neither_type_0_nor_type_1_is_assignable_to_the_other); + if (!isTypeComparableTo(targetType, widenedType)) { + checkTypeComparableTo(exprType, targetType, node, ts.Diagnostics.Type_0_cannot_be_converted_to_type_1); } } return targetType; } + function checkNonNullAssertion(node) { + return getNonNullableType(checkExpression(node.expression)); + } + function getTypeOfParameter(symbol) { + var type = getTypeOfSymbol(symbol); + if (strictNullChecks) { + var declaration = symbol.valueDeclaration; + if (declaration && declaration.initializer) { + return addNullableKind(type, 32 /* Undefined */); + } + } + return type; + } function getTypeAtPosition(signature, pos) { return signature.hasRestParameter ? - pos < signature.parameters.length - 1 ? getTypeOfSymbol(signature.parameters[pos]) : getRestTypeOfSignature(signature) : - pos < signature.parameters.length ? getTypeOfSymbol(signature.parameters[pos]) : anyType; + pos < signature.parameters.length - 1 ? getTypeOfParameter(signature.parameters[pos]) : getRestTypeOfSignature(signature) : + pos < signature.parameters.length ? getTypeOfParameter(signature.parameters[pos]) : anyType; } function assignContextualParameterTypes(signature, context, mapper) { var len = signature.parameters.length - (signature.hasRestParameter ? 1 : 0); @@ -24191,7 +25160,7 @@ var ts; if (ts.isBindingPattern(node.name)) { for (var _i = 0, _a = node.name.elements; _i < _a.length; _i++) { var element = _a[_i]; - if (element.kind !== 191 /* OmittedExpression */) { + if (element.kind !== 192 /* OmittedExpression */) { if (element.name.kind === 69 /* Identifier */) { getSymbolLinks(getSymbolOfNode(element)).type = getTypeForBindingElement(element); } @@ -24263,7 +25232,7 @@ var ts; } var isAsync = ts.isAsyncFunctionLike(func); var type; - if (func.body.kind !== 196 /* Block */) { + if (func.body.kind !== 198 /* Block */) { type = checkExpressionCached(func.body, contextualMapper); if (isAsync) { // From within an async function you can return either a non-promise value or a promise. Any @@ -24287,7 +25256,8 @@ var ts; } } else { - types = checkAndAggregateReturnExpressionTypes(func.body, contextualMapper, isAsync); + var hasImplicitReturn = !!(func.flags & 32768 /* HasImplicitReturn */); + types = checkAndAggregateReturnExpressionTypes(func.body, contextualMapper, isAsync, hasImplicitReturn); if (types.length === 0) { if (isAsync) { // For an async function, the return type will not be void, but rather a Promise for void. @@ -24357,8 +25327,9 @@ var ts; }); return aggregatedTypes; } - function checkAndAggregateReturnExpressionTypes(body, contextualMapper, isAsync) { + function checkAndAggregateReturnExpressionTypes(body, contextualMapper, isAsync, hasImplicitReturn) { var aggregatedTypes = []; + var hasOmittedExpressions = false; ts.forEachReturnStatement(body, function (returnStatement) { var expr = returnStatement.expression; if (expr) { @@ -24374,7 +25345,15 @@ var ts; aggregatedTypes.push(type); } } + else { + hasOmittedExpressions = true; + } }); + if (strictNullChecks && aggregatedTypes.length && (hasOmittedExpressions || hasImplicitReturn)) { + if (!ts.contains(aggregatedTypes, undefinedType)) { + aggregatedTypes.push(undefinedType); + } + } return aggregatedTypes; } /** @@ -24396,7 +25375,7 @@ var ts; } // If all we have is a function signature, or an arrow function with an expression body, then there is nothing to check. // also if HasImplicitReturn flag is not set this means that all codepaths in function body end with return or throw - if (ts.nodeIsMissing(func.body) || func.body.kind !== 196 /* Block */ || !(func.flags & 32768 /* HasImplicitReturn */)) { + if (ts.nodeIsMissing(func.body) || func.body.kind !== 198 /* Block */ || !(func.flags & 32768 /* HasImplicitReturn */)) { return; } var hasExplicitReturn = func.flags & 65536 /* HasExplicitReturn */; @@ -24406,15 +25385,19 @@ var ts; // NOTE: having returnType !== undefined is a precondition for entering this branch so func.type will always be present error(func.type, ts.Diagnostics.A_function_whose_declared_type_is_neither_void_nor_any_must_return_a_value); } + else if (returnType && strictNullChecks && !isTypeAssignableTo(undefinedType, returnType)) { + error(func.type, ts.Diagnostics.Function_lacks_ending_return_statement_and_return_type_does_not_include_undefined); + } else if (compilerOptions.noImplicitReturns) { if (!returnType) { // If return type annotation is omitted check if function has any explicit return statements. // If it does not have any - its inferred return type is void - don't do any checks. // Otherwise get inferred return type from function body and report error only if it is not void / anytype - var inferredReturnType = hasExplicitReturn - ? getReturnTypeOfSignature(getSignatureFromDeclaration(func)) - : voidType; - if (inferredReturnType === voidType || isTypeAny(inferredReturnType)) { + if (!hasExplicitReturn) { + return; + } + var inferredReturnType = getReturnTypeOfSignature(getSignatureFromDeclaration(func)); + if (isUnwrappedReturnTypeVoidOrAny(func, inferredReturnType)) { return; } } @@ -24422,14 +25405,15 @@ var ts; } } function checkFunctionExpressionOrObjectLiteralMethod(node, contextualMapper) { - ts.Debug.assert(node.kind !== 145 /* MethodDeclaration */ || ts.isObjectLiteralMethod(node)); + ts.Debug.assert(node.kind !== 146 /* MethodDeclaration */ || ts.isObjectLiteralMethod(node)); // Grammar checking var hasGrammarError = checkGrammarFunctionLikeDeclaration(node); - if (!hasGrammarError && node.kind === 177 /* FunctionExpression */) { + if (!hasGrammarError && node.kind === 178 /* FunctionExpression */) { checkGrammarForGenerator(node); } // The identityMapper object is used to indicate that function expressions are wildcards if (contextualMapper === identityMapper && isContextSensitive(node)) { + checkNodeDeferred(node); return anyFunctionType; } var links = getNodeLinks(node); @@ -24465,14 +25449,14 @@ var ts; } } } - if (produceDiagnostics && node.kind !== 145 /* MethodDeclaration */ && node.kind !== 144 /* MethodSignature */) { + if (produceDiagnostics && node.kind !== 146 /* MethodDeclaration */ && node.kind !== 145 /* MethodSignature */) { checkCollisionWithCapturedSuperVariable(node, node.name); checkCollisionWithCapturedThisVariable(node, node.name); } return type; } function checkFunctionExpressionOrObjectLiteralMethodDeferred(node) { - ts.Debug.assert(node.kind !== 145 /* MethodDeclaration */ || ts.isObjectLiteralMethod(node)); + ts.Debug.assert(node.kind !== 146 /* MethodDeclaration */ || ts.isObjectLiteralMethod(node)); var isAsync = ts.isAsyncFunctionLike(node); var returnOrPromisedType = node.type && (isAsync ? checkAsyncFunctionReturnType(node) : getTypeFromTypeNode(node.type)); if (!node.asteriskToken) { @@ -24488,7 +25472,7 @@ var ts; // checkFunctionExpressionBodies). So it must be done now. getReturnTypeOfSignature(getSignatureFromDeclaration(node)); } - if (node.body.kind === 196 /* Block */) { + if (node.body.kind === 198 /* Block */) { checkSourceElement(node.body); } else { @@ -24532,23 +25516,23 @@ var ts; if (isReadonlySymbol(symbol)) { // Allow assignments to readonly properties within constructors of the same class declaration. if (symbol.flags & 4 /* Property */ && - (expr.kind === 170 /* PropertyAccessExpression */ || expr.kind === 171 /* ElementAccessExpression */) && + (expr.kind === 171 /* PropertyAccessExpression */ || expr.kind === 172 /* ElementAccessExpression */) && expr.expression.kind === 97 /* ThisKeyword */) { var func = ts.getContainingFunction(expr); - return !(func && func.kind === 146 /* Constructor */ && func.parent === symbol.valueDeclaration.parent); + return !(func && func.kind === 147 /* Constructor */ && func.parent === symbol.valueDeclaration.parent); } return true; } return false; } function isReferenceThroughNamespaceImport(expr) { - if (expr.kind === 170 /* PropertyAccessExpression */ || expr.kind === 171 /* ElementAccessExpression */) { + if (expr.kind === 171 /* PropertyAccessExpression */ || expr.kind === 172 /* ElementAccessExpression */) { var node = skipParenthesizedNodes(expr.expression); if (node.kind === 69 /* Identifier */) { var symbol = getNodeLinks(node).resolvedSymbol; if (symbol.flags & 8388608 /* Alias */) { var declaration = getDeclarationOfAliasSymbol(symbol); - return declaration && declaration.kind === 228 /* NamespaceImport */; + return declaration && declaration.kind === 231 /* NamespaceImport */; } } } @@ -24557,7 +25541,7 @@ var ts; function checkReferenceExpression(expr, invalidReferenceMessage, constantVariableMessage) { // References are combinations of identifiers, parentheses, and property accesses. var node = skipParenthesizedNodes(expr); - if (node.kind !== 69 /* Identifier */ && node.kind !== 170 /* PropertyAccessExpression */ && node.kind !== 171 /* ElementAccessExpression */) { + if (node.kind !== 69 /* Identifier */ && node.kind !== 171 /* PropertyAccessExpression */ && node.kind !== 172 /* ElementAccessExpression */) { error(expr, invalidReferenceMessage); return false; } @@ -24580,7 +25564,7 @@ var ts; } } } - else if (node.kind === 171 /* ElementAccessExpression */) { + else if (node.kind === 172 /* ElementAccessExpression */) { if (links.resolvedIndexInfo && links.resolvedIndexInfo.isReadonly) { error(expr, constantVariableMessage); return false; @@ -24627,7 +25611,7 @@ var ts; return booleanType; case 41 /* PlusPlusToken */: case 42 /* MinusMinusToken */: - var ok = checkArithmeticOperandType(node.operand, operandType, ts.Diagnostics.An_arithmetic_operand_must_be_of_type_any_number_or_an_enum_type); + var ok = checkArithmeticOperandType(node.operand, getNonNullableType(operandType), ts.Diagnostics.An_arithmetic_operand_must_be_of_type_any_number_or_an_enum_type); if (ok) { // run check only if former checks succeeded to avoid reporting cascading errors checkReferenceExpression(node.operand, ts.Diagnostics.The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_property_or_indexer, ts.Diagnostics.The_operand_of_an_increment_or_decrement_operator_cannot_be_a_constant_or_a_read_only_property); @@ -24638,7 +25622,7 @@ var ts; } function checkPostfixUnaryExpression(node) { var operandType = checkExpression(node.operand); - var ok = checkArithmeticOperandType(node.operand, operandType, ts.Diagnostics.An_arithmetic_operand_must_be_of_type_any_number_or_an_enum_type); + var ok = checkArithmeticOperandType(node.operand, getNonNullableType(operandType), ts.Diagnostics.An_arithmetic_operand_must_be_of_type_any_number_or_an_enum_type); if (ok) { // run check only if former checks succeeded to avoid reporting cascading errors checkReferenceExpression(node.operand, ts.Diagnostics.The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_property_or_indexer, ts.Diagnostics.The_operand_of_an_increment_or_decrement_operator_cannot_be_a_constant_or_a_read_only_property); @@ -24728,22 +25712,22 @@ var ts; var properties = node.properties; for (var _i = 0, properties_3 = properties; _i < properties_3.length; _i++) { var p = properties_3[_i]; - if (p.kind === 249 /* PropertyAssignment */ || p.kind === 250 /* ShorthandPropertyAssignment */) { - var name_12 = p.name; - if (name_12.kind === 138 /* ComputedPropertyName */) { - checkComputedPropertyName(name_12); + if (p.kind === 252 /* PropertyAssignment */ || p.kind === 253 /* ShorthandPropertyAssignment */) { + var name_13 = p.name; + if (name_13.kind === 139 /* ComputedPropertyName */) { + checkComputedPropertyName(name_13); } - if (isComputedNonLiteralName(name_12)) { + if (isComputedNonLiteralName(name_13)) { continue; } - var text = getTextOfPropertyName(name_12); + var text = getTextOfPropertyName(name_13); var type = isTypeAny(sourceType) ? sourceType : getTypeOfPropertyOfType(sourceType, text) || isNumericLiteralName(text) && getIndexTypeOfType(sourceType, 1 /* Number */) || getIndexTypeOfType(sourceType, 0 /* String */); if (type) { - if (p.kind === 250 /* ShorthandPropertyAssignment */) { + if (p.kind === 253 /* ShorthandPropertyAssignment */) { checkDestructuringAssignment(p, type); } else { @@ -24752,7 +25736,7 @@ var ts; } } else { - error(name_12, ts.Diagnostics.Type_0_has_no_property_1_and_no_string_index_signature, typeToString(sourceType), ts.declarationNameToString(name_12)); + error(name_13, ts.Diagnostics.Type_0_has_no_property_1_and_no_string_index_signature, typeToString(sourceType), ts.declarationNameToString(name_13)); } } else { @@ -24769,8 +25753,8 @@ var ts; var elements = node.elements; for (var i = 0; i < elements.length; i++) { var e = elements[i]; - if (e.kind !== 191 /* OmittedExpression */) { - if (e.kind !== 189 /* SpreadElementExpression */) { + if (e.kind !== 192 /* OmittedExpression */) { + if (e.kind !== 190 /* SpreadElementExpression */) { var propName = "" + i; var type = isTypeAny(sourceType) ? sourceType @@ -24795,7 +25779,7 @@ var ts; } else { var restExpression = e.expression; - if (restExpression.kind === 185 /* BinaryExpression */ && restExpression.operatorToken.kind === 56 /* EqualsToken */) { + if (restExpression.kind === 186 /* BinaryExpression */ && restExpression.operatorToken.kind === 56 /* EqualsToken */) { error(restExpression.operatorToken, ts.Diagnostics.A_rest_element_cannot_have_an_initializer); } else { @@ -24809,7 +25793,7 @@ var ts; } function checkDestructuringAssignment(exprOrAssignment, sourceType, contextualMapper) { var target; - if (exprOrAssignment.kind === 250 /* ShorthandPropertyAssignment */) { + if (exprOrAssignment.kind === 253 /* ShorthandPropertyAssignment */) { var prop = exprOrAssignment; if (prop.objectAssignmentInitializer) { checkBinaryLikeExpression(prop.name, prop.equalsToken, prop.objectAssignmentInitializer, contextualMapper); @@ -24819,14 +25803,14 @@ var ts; else { target = exprOrAssignment; } - if (target.kind === 185 /* BinaryExpression */ && target.operatorToken.kind === 56 /* EqualsToken */) { + if (target.kind === 186 /* BinaryExpression */ && target.operatorToken.kind === 56 /* EqualsToken */) { checkBinaryExpression(target, contextualMapper); target = target.left; } - if (target.kind === 169 /* ObjectLiteralExpression */) { + if (target.kind === 170 /* ObjectLiteralExpression */) { return checkObjectLiteralAssignment(target, sourceType, contextualMapper); } - if (target.kind === 168 /* ArrayLiteralExpression */) { + if (target.kind === 169 /* ArrayLiteralExpression */) { return checkArrayLiteralAssignment(target, sourceType, contextualMapper); } return checkReferenceAssignment(target, sourceType, contextualMapper); @@ -24843,7 +25827,7 @@ var ts; } function checkBinaryLikeExpression(left, operatorToken, right, contextualMapper, errorNode) { var operator = operatorToken.kind; - if (operator === 56 /* EqualsToken */ && (left.kind === 169 /* ObjectLiteralExpression */ || left.kind === 168 /* ArrayLiteralExpression */)) { + if (operator === 56 /* EqualsToken */ && (left.kind === 170 /* ObjectLiteralExpression */ || left.kind === 169 /* ArrayLiteralExpression */)) { return checkDestructuringAssignment(left, checkExpression(right, contextualMapper), contextualMapper); } var leftType = checkExpression(left, contextualMapper); @@ -24877,10 +25861,12 @@ var ts; // as having the primitive type Number. If one operand is the null or undefined value, // it is treated as having the type of the other operand. // The result is always of the Number primitive type. - if (leftType.flags & (32 /* Undefined */ | 64 /* Null */)) + if (leftType.flags & 96 /* Nullable */) leftType = rightType; - if (rightType.flags & (32 /* Undefined */ | 64 /* Null */)) + if (rightType.flags & 96 /* Nullable */) rightType = leftType; + leftType = getNonNullableType(leftType); + rightType = getNonNullableType(rightType); var suggestedOperator = void 0; // if a user tries to apply a bitwise operator to 2 boolean operands // try and return them a helpful suggestion @@ -24904,10 +25890,12 @@ var ts; // The binary + operator requires both operands to be of the Number primitive type or an enum type, // or at least one of the operands to be of type Any or the String primitive type. // If one operand is the null or undefined value, it is treated as having the type of the other operand. - if (leftType.flags & (32 /* Undefined */ | 64 /* Null */)) + if (leftType.flags & 96 /* Nullable */) leftType = rightType; - if (rightType.flags & (32 /* Undefined */ | 64 /* Null */)) + if (rightType.flags & 96 /* Nullable */) rightType = leftType; + leftType = getNonNullableType(leftType); + rightType = getNonNullableType(rightType); var resultType = void 0; if (isTypeOfKind(leftType, 132 /* NumberLike */) && isTypeOfKind(rightType, 132 /* NumberLike */)) { // Operands of an enum type are treated as having the primitive type Number. @@ -24949,11 +25937,7 @@ var ts; case 31 /* ExclamationEqualsToken */: case 32 /* EqualsEqualsEqualsToken */: case 33 /* ExclamationEqualsEqualsToken */: - // Permit 'number[] | "foo"' to be asserted to 'string'. - if (maybeTypeOfKind(leftType, 258 /* StringLike */) && maybeTypeOfKind(rightType, 258 /* StringLike */)) { - return booleanType; - } - if (!isTypeAssignableTo(leftType, rightType) && !isTypeAssignableTo(rightType, leftType)) { + if (!isTypeComparableTo(leftType, rightType) && !isTypeComparableTo(rightType, leftType)) { reportOperatorError(); } return booleanType; @@ -24962,9 +25946,9 @@ var ts; case 90 /* InKeyword */: return checkInExpression(left, right, leftType, rightType); case 51 /* AmpersandAmpersandToken */: - return rightType; + return addNullableKind(rightType, getNullableKind(leftType)); case 52 /* BarBarToken */: - return getUnionType([leftType, rightType]); + return getUnionType([getNonNullableType(leftType), rightType]); case 56 /* EqualsToken */: checkAssignmentOperator(rightType); return getRegularTypeOfObjectLiteral(rightType); @@ -25112,7 +26096,7 @@ var ts; // Do not use hasDynamicName here, because that returns false for well known symbols. // We want to perform checkComputedPropertyName for all computed properties, including // well known symbols. - if (node.name.kind === 138 /* ComputedPropertyName */) { + if (node.name.kind === 139 /* ComputedPropertyName */) { checkComputedPropertyName(node.name); } return checkExpression(node.initializer, contextualMapper); @@ -25123,7 +26107,7 @@ var ts; // Do not use hasDynamicName here, because that returns false for well known symbols. // We want to perform checkComputedPropertyName for all computed properties, including // well known symbols. - if (node.name.kind === 138 /* ComputedPropertyName */) { + if (node.name.kind === 139 /* ComputedPropertyName */) { checkComputedPropertyName(node.name); } var uninstantiatedType = checkFunctionExpressionOrObjectLiteralMethod(node, contextualMapper); @@ -25153,7 +26137,7 @@ var ts; // contextually typed function and arrow expressions in the initial phase. function checkExpression(node, contextualMapper) { var type; - if (node.kind === 137 /* QualifiedName */) { + if (node.kind === 138 /* QualifiedName */) { type = checkQualifiedName(node); } else { @@ -25165,9 +26149,9 @@ var ts; // - 'left' in property access // - 'object' in indexed access // - target in rhs of import statement - var ok = (node.parent.kind === 170 /* PropertyAccessExpression */ && node.parent.expression === node) || - (node.parent.kind === 171 /* ElementAccessExpression */ && node.parent.expression === node) || - ((node.kind === 69 /* Identifier */ || node.kind === 137 /* QualifiedName */) && isInRightSideOfImportOrExportAssignment(node)); + var ok = (node.parent.kind === 171 /* PropertyAccessExpression */ && node.parent.expression === node) || + (node.parent.kind === 172 /* ElementAccessExpression */ && node.parent.expression === node) || + ((node.kind === 69 /* Identifier */ || node.kind === 138 /* QualifiedName */) && isInRightSideOfImportOrExportAssignment(node)); if (!ok) { error(node, ts.Diagnostics.const_enums_can_only_be_used_in_property_or_index_access_expressions_or_the_right_hand_side_of_an_import_declaration_or_export_assignment); } @@ -25194,7 +26178,7 @@ var ts; return booleanType; case 8 /* NumericLiteral */: return checkNumericLiteral(node); - case 187 /* TemplateExpression */: + case 188 /* TemplateExpression */: return checkTemplateExpression(node); case 9 /* StringLiteral */: return checkStringLiteralExpression(node); @@ -25202,58 +26186,60 @@ var ts; return stringType; case 10 /* RegularExpressionLiteral */: return globalRegExpType; - case 168 /* ArrayLiteralExpression */: + case 169 /* ArrayLiteralExpression */: return checkArrayLiteral(node, contextualMapper); - case 169 /* ObjectLiteralExpression */: + case 170 /* ObjectLiteralExpression */: return checkObjectLiteral(node, contextualMapper); - case 170 /* PropertyAccessExpression */: + case 171 /* PropertyAccessExpression */: return checkPropertyAccessExpression(node); - case 171 /* ElementAccessExpression */: + case 172 /* ElementAccessExpression */: return checkIndexedAccess(node); - case 172 /* CallExpression */: - case 173 /* NewExpression */: + case 173 /* CallExpression */: + case 174 /* NewExpression */: return checkCallExpression(node); - case 174 /* TaggedTemplateExpression */: + case 175 /* TaggedTemplateExpression */: return checkTaggedTemplateExpression(node); - case 176 /* ParenthesizedExpression */: + case 177 /* ParenthesizedExpression */: return checkExpression(node.expression, contextualMapper); - case 190 /* ClassExpression */: + case 191 /* ClassExpression */: return checkClassExpression(node); - case 177 /* FunctionExpression */: - case 178 /* ArrowFunction */: + case 178 /* FunctionExpression */: + case 179 /* ArrowFunction */: return checkFunctionExpressionOrObjectLiteralMethod(node, contextualMapper); - case 180 /* TypeOfExpression */: + case 181 /* TypeOfExpression */: return checkTypeOfExpression(node); - case 175 /* TypeAssertionExpression */: - case 193 /* AsExpression */: + case 176 /* TypeAssertionExpression */: + case 194 /* AsExpression */: return checkAssertion(node); - case 179 /* DeleteExpression */: + case 195 /* NonNullExpression */: + return checkNonNullAssertion(node); + case 180 /* DeleteExpression */: return checkDeleteExpression(node); - case 181 /* VoidExpression */: + case 182 /* VoidExpression */: return checkVoidExpression(node); - case 182 /* AwaitExpression */: + case 183 /* AwaitExpression */: return checkAwaitExpression(node); - case 183 /* PrefixUnaryExpression */: + case 184 /* PrefixUnaryExpression */: return checkPrefixUnaryExpression(node); - case 184 /* PostfixUnaryExpression */: + case 185 /* PostfixUnaryExpression */: return checkPostfixUnaryExpression(node); - case 185 /* BinaryExpression */: + case 186 /* BinaryExpression */: return checkBinaryExpression(node, contextualMapper); - case 186 /* ConditionalExpression */: + case 187 /* ConditionalExpression */: return checkConditionalExpression(node, contextualMapper); - case 189 /* SpreadElementExpression */: + case 190 /* SpreadElementExpression */: return checkSpreadElementExpression(node, contextualMapper); - case 191 /* OmittedExpression */: + case 192 /* OmittedExpression */: return undefinedType; - case 188 /* YieldExpression */: + case 189 /* YieldExpression */: return checkYieldExpression(node); - case 244 /* JsxExpression */: + case 247 /* JsxExpression */: return checkJsxExpression(node); - case 237 /* JsxElement */: + case 240 /* JsxElement */: return checkJsxElement(node); - case 238 /* JsxSelfClosingElement */: + case 241 /* JsxSelfClosingElement */: return checkJsxSelfClosingElement(node); - case 239 /* JsxOpeningElement */: + case 242 /* JsxOpeningElement */: ts.Debug.fail("Shouldn't ever directly check a JsxOpeningElement"); } return unknownType; @@ -25281,13 +26267,24 @@ var ts; var func = ts.getContainingFunction(node); if (node.flags & 28 /* AccessibilityModifier */) { func = ts.getContainingFunction(node); - if (!(func.kind === 146 /* Constructor */ && ts.nodeIsPresent(func.body))) { + if (!(func.kind === 147 /* Constructor */ && ts.nodeIsPresent(func.body))) { error(node, ts.Diagnostics.A_parameter_property_is_only_allowed_in_a_constructor_implementation); } } if (node.questionToken && ts.isBindingPattern(node.name) && func.body) { error(node, ts.Diagnostics.A_binding_pattern_parameter_cannot_be_optional_in_an_implementation_signature); } + if (node.name.text === "this") { + if (ts.indexOf(func.parameters, node) !== 0) { + error(node, ts.Diagnostics.A_this_parameter_must_be_the_first_parameter); + } + if (func.kind === 147 /* Constructor */ || func.kind === 151 /* ConstructSignature */ || func.kind === 156 /* ConstructorType */) { + error(node, ts.Diagnostics.A_constructor_cannot_have_a_this_parameter); + } + if (func.kind === 149 /* SetAccessor */) { + error(node, ts.Diagnostics.A_setter_cannot_have_a_this_parameter); + } + } // Only check rest parameter type if it's not a binding pattern. Since binding patterns are // not allowed in a rest parameter, we already have an error from checkGrammarParameterList. if (node.dotDotDotToken && !ts.isBindingPattern(node.name) && !isArrayType(getTypeOfSymbol(node.symbol))) { @@ -25298,9 +26295,9 @@ var ts; if (!node.asteriskToken || !node.body) { return false; } - return node.kind === 145 /* MethodDeclaration */ || - node.kind === 217 /* FunctionDeclaration */ || - node.kind === 177 /* FunctionExpression */; + return node.kind === 146 /* MethodDeclaration */ || + node.kind === 219 /* FunctionDeclaration */ || + node.kind === 178 /* FunctionExpression */; } function getTypePredicateParameterIndex(parameterList, parameter) { if (parameterList) { @@ -25335,15 +26332,17 @@ var ts; error(parameterName, ts.Diagnostics.A_type_predicate_cannot_reference_a_rest_parameter); } else { - checkTypeAssignableTo(typePredicate.type, getTypeOfNode(parent.parameters[typePredicate.parameterIndex]), node.type); + var leadingError = ts.chainDiagnosticMessages(undefined, ts.Diagnostics.A_type_predicate_s_type_must_be_assignable_to_its_parameter_s_type); + checkTypeAssignableTo(typePredicate.type, getTypeOfNode(parent.parameters[typePredicate.parameterIndex]), node.type, + /*headMessage*/ undefined, leadingError); } } else if (parameterName) { var hasReportedError = false; for (var _i = 0, _a = parent.parameters; _i < _a.length; _i++) { - var name_13 = _a[_i].name; - if (ts.isBindingPattern(name_13) && - checkIfTypePredicateVariableIsDeclaredInBindingPattern(name_13, parameterName, typePredicate.parameterName)) { + var name_14 = _a[_i].name; + if (ts.isBindingPattern(name_14) && + checkIfTypePredicateVariableIsDeclaredInBindingPattern(name_14, parameterName, typePredicate.parameterName)) { hasReportedError = true; break; } @@ -25356,30 +26355,30 @@ var ts; } function getTypePredicateParent(node) { switch (node.parent.kind) { - case 178 /* ArrowFunction */: - case 149 /* CallSignature */: - case 217 /* FunctionDeclaration */: - case 177 /* FunctionExpression */: - case 154 /* FunctionType */: - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: - var parent_7 = node.parent; - if (node === parent_7.type) { - return parent_7; + case 179 /* ArrowFunction */: + case 150 /* CallSignature */: + case 219 /* FunctionDeclaration */: + case 178 /* FunctionExpression */: + case 155 /* FunctionType */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: + var parent_8 = node.parent; + if (node === parent_8.type) { + return parent_8; } } } function checkIfTypePredicateVariableIsDeclaredInBindingPattern(pattern, predicateVariableNode, predicateVariableName) { for (var _i = 0, _a = pattern.elements; _i < _a.length; _i++) { - var name_14 = _a[_i].name; - if (name_14.kind === 69 /* Identifier */ && - name_14.text === predicateVariableName) { + var name_15 = _a[_i].name; + if (name_15.kind === 69 /* Identifier */ && + name_15.text === predicateVariableName) { error(predicateVariableNode, ts.Diagnostics.A_type_predicate_cannot_reference_element_0_in_a_binding_pattern, predicateVariableName); return true; } - else if (name_14.kind === 166 /* ArrayBindingPattern */ || - name_14.kind === 165 /* ObjectBindingPattern */) { - if (checkIfTypePredicateVariableIsDeclaredInBindingPattern(name_14, predicateVariableNode, predicateVariableName)) { + else if (name_15.kind === 167 /* ArrayBindingPattern */ || + name_15.kind === 166 /* ObjectBindingPattern */) { + if (checkIfTypePredicateVariableIsDeclaredInBindingPattern(name_15, predicateVariableNode, predicateVariableName)) { return true; } } @@ -25387,12 +26386,12 @@ var ts; } function checkSignatureDeclaration(node) { // Grammar checking - if (node.kind === 151 /* IndexSignature */) { + if (node.kind === 152 /* IndexSignature */) { checkGrammarIndexSignature(node); } - else if (node.kind === 154 /* FunctionType */ || node.kind === 217 /* FunctionDeclaration */ || node.kind === 155 /* ConstructorType */ || - node.kind === 149 /* CallSignature */ || node.kind === 146 /* Constructor */ || - node.kind === 150 /* ConstructSignature */) { + else if (node.kind === 155 /* FunctionType */ || node.kind === 219 /* FunctionDeclaration */ || node.kind === 156 /* ConstructorType */ || + node.kind === 150 /* CallSignature */ || node.kind === 147 /* Constructor */ || + node.kind === 151 /* ConstructSignature */) { checkGrammarFunctionLikeDeclaration(node); } checkTypeParameters(node.typeParameters); @@ -25404,10 +26403,10 @@ var ts; checkCollisionWithArgumentsInGeneratedCode(node); if (compilerOptions.noImplicitAny && !node.type) { switch (node.kind) { - case 150 /* ConstructSignature */: + case 151 /* ConstructSignature */: error(node, ts.Diagnostics.Construct_signature_which_lacks_return_type_annotation_implicitly_has_an_any_return_type); break; - case 149 /* CallSignature */: + case 150 /* CallSignature */: error(node, ts.Diagnostics.Call_signature_which_lacks_return_type_annotation_implicitly_has_an_any_return_type); break; } @@ -25437,7 +26436,7 @@ var ts; } } function checkTypeForDuplicateIndexSignatures(node) { - if (node.kind === 219 /* InterfaceDeclaration */) { + if (node.kind === 221 /* InterfaceDeclaration */) { var nodeSymbol = getSymbolOfNode(node); // in case of merging interface declaration it is possible that we'll enter this check procedure several times for every declaration // to prevent this run check only for the first declaration of a given kind @@ -25532,12 +26531,12 @@ var ts; if (n.kind === 97 /* ThisKeyword */) { error(n, ts.Diagnostics.this_cannot_be_referenced_in_current_location); } - else if (n.kind !== 177 /* FunctionExpression */ && n.kind !== 217 /* FunctionDeclaration */) { + else if (n.kind !== 178 /* FunctionExpression */ && n.kind !== 219 /* FunctionDeclaration */) { ts.forEachChild(n, markThisReferencesAsErrors); } } function isInstancePropertyWithInitializer(n) { - return n.kind === 143 /* PropertyDeclaration */ && + return n.kind === 144 /* PropertyDeclaration */ && !(n.flags & 32 /* Static */) && !!n.initializer; } @@ -25566,7 +26565,7 @@ var ts; var superCallStatement = void 0; for (var _i = 0, statements_2 = statements; _i < statements_2.length; _i++) { var statement = statements_2[_i]; - if (statement.kind === 199 /* ExpressionStatement */ && ts.isSuperCallExpression(statement.expression)) { + if (statement.kind === 201 /* ExpressionStatement */ && ts.isSuperCallExpression(statement.expression)) { superCallStatement = statement; break; } @@ -25590,7 +26589,7 @@ var ts; checkGrammarFunctionLikeDeclaration(node) || checkGrammarAccessor(node) || checkGrammarComputedPropertyName(node.name); checkDecorators(node); checkSignatureDeclaration(node); - if (node.kind === 147 /* GetAccessor */) { + if (node.kind === 148 /* GetAccessor */) { if (!ts.isInAmbientContext(node) && ts.nodeIsPresent(node.body) && (node.flags & 32768 /* HasImplicitReturn */)) { if (node.flags & 65536 /* HasExplicitReturn */) { if (compilerOptions.noImplicitReturns) { @@ -25605,13 +26604,13 @@ var ts; // Do not use hasDynamicName here, because that returns false for well known symbols. // We want to perform checkComputedPropertyName for all computed properties, including // well known symbols. - if (node.name.kind === 138 /* ComputedPropertyName */) { + if (node.name.kind === 139 /* ComputedPropertyName */) { checkComputedPropertyName(node.name); } if (!ts.hasDynamicName(node)) { // TypeScript 1.0 spec (April 2014): 8.4.3 // Accessors for the same member name must specify the same accessibility. - var otherKind = node.kind === 147 /* GetAccessor */ ? 148 /* SetAccessor */ : 147 /* GetAccessor */; + var otherKind = node.kind === 148 /* GetAccessor */ ? 149 /* SetAccessor */ : 148 /* GetAccessor */; var otherAccessor = ts.getDeclarationOfKind(node.symbol, otherKind); if (otherAccessor) { if (((node.flags & 28 /* AccessibilityModifier */) !== (otherAccessor.flags & 28 /* AccessibilityModifier */))) { @@ -25633,7 +26632,7 @@ var ts; } getTypeOfAccessors(getSymbolOfNode(node)); } - if (node.parent.kind !== 169 /* ObjectLiteralExpression */) { + if (node.parent.kind !== 170 /* ObjectLiteralExpression */) { checkSourceElement(node.body); } else { @@ -25708,9 +26707,9 @@ var ts; var flags = ts.getCombinedNodeFlags(n); // children of classes (even ambient classes) should not be marked as ambient or export // because those flags have no useful semantics there. - if (n.parent.kind !== 219 /* InterfaceDeclaration */ && - n.parent.kind !== 218 /* ClassDeclaration */ && - n.parent.kind !== 190 /* ClassExpression */ && + if (n.parent.kind !== 221 /* InterfaceDeclaration */ && + n.parent.kind !== 220 /* ClassDeclaration */ && + n.parent.kind !== 191 /* ClassExpression */ && ts.isInAmbientContext(n)) { if (!(flags & 2 /* Ambient */)) { // It is nested in an ambient context, which means it is automatically exported @@ -25798,7 +26797,7 @@ var ts; var errorNode_1 = subsequentNode.name || subsequentNode; // TODO(jfreeman): These are methods, so handle computed name case if (node.name && subsequentNode.name && node.name.text === subsequentNode.name.text) { - var reportError = (node.kind === 145 /* MethodDeclaration */ || node.kind === 144 /* MethodSignature */) && + var reportError = (node.kind === 146 /* MethodDeclaration */ || node.kind === 145 /* MethodSignature */) && (node.flags & 32 /* Static */) !== (subsequentNode.flags & 32 /* Static */); // we can get here in two cases // 1. mixed static and instance class members @@ -25840,7 +26839,7 @@ var ts; var current = declarations_4[_i]; var node = current; var inAmbientContext = ts.isInAmbientContext(node); - var inAmbientContextOrInterface = node.parent.kind === 219 /* InterfaceDeclaration */ || node.parent.kind === 157 /* TypeLiteral */ || inAmbientContext; + var inAmbientContextOrInterface = node.parent.kind === 221 /* InterfaceDeclaration */ || node.parent.kind === 158 /* TypeLiteral */ || inAmbientContext; if (inAmbientContextOrInterface) { // check if declarations are consecutive only if they are non-ambient // 1. ambient declarations can be interleaved @@ -25851,7 +26850,7 @@ var ts; // 2. mixing ambient and non-ambient declarations is a separate error that will be reported - do not want to report an extra one previousDeclaration = undefined; } - if (node.kind === 217 /* FunctionDeclaration */ || node.kind === 145 /* MethodDeclaration */ || node.kind === 144 /* MethodSignature */ || node.kind === 146 /* Constructor */) { + if (node.kind === 219 /* FunctionDeclaration */ || node.kind === 146 /* MethodDeclaration */ || node.kind === 145 /* MethodSignature */ || node.kind === 147 /* Constructor */) { var currentNodeFlags = getEffectiveDeclarationFlags(node, flagsToCheck); someNodeFlags |= currentNodeFlags; allNodeFlags &= currentNodeFlags; @@ -25973,16 +26972,16 @@ var ts; } function getDeclarationSpaces(d) { switch (d.kind) { - case 219 /* InterfaceDeclaration */: + case 221 /* InterfaceDeclaration */: return 2097152 /* ExportType */; - case 222 /* ModuleDeclaration */: + case 224 /* ModuleDeclaration */: return ts.isAmbientModule(d) || ts.getModuleInstanceState(d) !== 0 /* NonInstantiated */ ? 4194304 /* ExportNamespace */ | 1048576 /* ExportValue */ : 4194304 /* ExportNamespace */; - case 218 /* ClassDeclaration */: - case 221 /* EnumDeclaration */: + case 220 /* ClassDeclaration */: + case 223 /* EnumDeclaration */: return 2097152 /* ExportType */ | 1048576 /* ExportValue */; - case 225 /* ImportEqualsDeclaration */: + case 228 /* ImportEqualsDeclaration */: var result_1 = 0; var target = resolveAlias(getSymbolOfNode(d)); ts.forEach(target.declarations, function (d) { result_1 |= getDeclarationSpaces(d); }); @@ -26094,7 +27093,7 @@ var ts; return checkNonThenableType(type, location, message); } else { - if (type.id === promisedType.id || awaitedTypeStack.indexOf(promisedType.id) >= 0) { + if (type.id === promisedType.id || ts.indexOf(awaitedTypeStack, promisedType.id) >= 0) { // We have a bad actor in the form of a promise whose promised type is // the same promise type, or a mutually recursive promise. Return the // unknown type as we cannot guess the shape. If this were the actual @@ -26263,22 +27262,22 @@ var ts; var headMessage = getDiagnosticHeadMessageForDecoratorResolution(node); var errorInfo; switch (node.parent.kind) { - case 218 /* ClassDeclaration */: + case 220 /* ClassDeclaration */: var classSymbol = getSymbolOfNode(node.parent); var classConstructorType = getTypeOfSymbol(classSymbol); expectedReturnType = getUnionType([classConstructorType, voidType]); break; - case 140 /* Parameter */: + case 141 /* Parameter */: expectedReturnType = voidType; errorInfo = ts.chainDiagnosticMessages(errorInfo, ts.Diagnostics.The_return_type_of_a_parameter_decorator_function_must_be_either_void_or_any); break; - case 143 /* PropertyDeclaration */: + case 144 /* PropertyDeclaration */: expectedReturnType = voidType; errorInfo = ts.chainDiagnosticMessages(errorInfo, ts.Diagnostics.The_return_type_of_a_property_decorator_function_must_be_either_void_or_any); break; - case 145 /* MethodDeclaration */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: + case 146 /* MethodDeclaration */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: var methodType = getTypeOfNode(node.parent); var descriptorType = createTypedPropertyDescriptorType(methodType); expectedReturnType = getUnionType([descriptorType, voidType]); @@ -26291,9 +27290,9 @@ var ts; // When we are emitting type metadata for decorators, we need to try to check the type // as if it were an expression so that we can emit the type in a value position when we // serialize the type metadata. - if (node && node.kind === 153 /* TypeReference */) { + if (node && node.kind === 154 /* TypeReference */) { var root = getFirstIdentifier(node.typeName); - var meaning = root.parent.kind === 153 /* TypeReference */ ? 793056 /* Type */ : 1536 /* Namespace */; + var meaning = root.parent.kind === 154 /* TypeReference */ ? 793056 /* Type */ : 1536 /* Namespace */; // Resolve type so we know which symbol is referenced var rootSymbol = resolveName(root, root.text, meaning | 8388608 /* Alias */, /*nameNotFoundMessage*/ undefined, /*nameArg*/ undefined); // Resolved symbol is alias @@ -26340,20 +27339,20 @@ var ts; if (compilerOptions.emitDecoratorMetadata) { // we only need to perform these checks if we are emitting serialized type metadata for the target of a decorator. switch (node.kind) { - case 218 /* ClassDeclaration */: + case 220 /* ClassDeclaration */: var constructor = ts.getFirstConstructorWithBody(node); if (constructor) { checkParameterTypeAnnotationsAsExpressions(constructor); } break; - case 145 /* MethodDeclaration */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: + case 146 /* MethodDeclaration */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: checkParameterTypeAnnotationsAsExpressions(node); checkReturnTypeAnnotationAsExpression(node); break; - case 143 /* PropertyDeclaration */: - case 140 /* Parameter */: + case 144 /* PropertyDeclaration */: + case 141 /* Parameter */: checkTypeAnnotationAsExpression(node); break; } @@ -26376,7 +27375,7 @@ var ts; // Do not use hasDynamicName here, because that returns false for well known symbols. // We want to perform checkComputedPropertyName for all computed properties, including // well known symbols. - if (node.name && node.name.kind === 138 /* ComputedPropertyName */) { + if (node.name && node.name.kind === 139 /* ComputedPropertyName */) { // This check will account for methods in class/interface declarations, // as well as accessors in classes/object literals checkComputedPropertyName(node.name); @@ -26427,7 +27426,7 @@ var ts; } function checkBlock(node) { // Grammar checking for SyntaxKind.Block - if (node.kind === 196 /* Block */) { + if (node.kind === 198 /* Block */) { checkGrammarStatementInAmbientContext(node); } ts.forEach(node.statements, checkSourceElement); @@ -26447,12 +27446,12 @@ var ts; if (!(identifier && identifier.text === name)) { return false; } - if (node.kind === 143 /* PropertyDeclaration */ || - node.kind === 142 /* PropertySignature */ || - node.kind === 145 /* MethodDeclaration */ || - node.kind === 144 /* MethodSignature */ || - node.kind === 147 /* GetAccessor */ || - node.kind === 148 /* SetAccessor */) { + if (node.kind === 144 /* PropertyDeclaration */ || + node.kind === 143 /* PropertySignature */ || + node.kind === 146 /* MethodDeclaration */ || + node.kind === 145 /* MethodSignature */ || + node.kind === 148 /* GetAccessor */ || + node.kind === 149 /* SetAccessor */) { // it is ok to have member named '_super' or '_this' - member access is always qualified return false; } @@ -26461,7 +27460,7 @@ var ts; return false; } var root = ts.getRootDeclaration(node); - if (root.kind === 140 /* Parameter */ && ts.nodeIsMissing(root.parent.body)) { + if (root.kind === 141 /* Parameter */ && ts.nodeIsMissing(root.parent.body)) { // just an overload - no codegen impact return false; } @@ -26514,12 +27513,12 @@ var ts; return; } // Uninstantiated modules shouldnt do this check - if (node.kind === 222 /* ModuleDeclaration */ && ts.getModuleInstanceState(node) !== 1 /* Instantiated */) { + if (node.kind === 224 /* ModuleDeclaration */ && ts.getModuleInstanceState(node) !== 1 /* Instantiated */) { return; } // In case of variable declaration, node.parent is variable statement so look at the variable statement's parent var parent = getDeclarationContainer(node); - if (parent.kind === 252 /* SourceFile */ && ts.isExternalOrCommonJsModule(parent)) { + if (parent.kind === 255 /* SourceFile */ && ts.isExternalOrCommonJsModule(parent)) { // If the declaration happens to be in external module, report error that require and exports are reserved keywords error(name, ts.Diagnostics.Duplicate_identifier_0_Compiler_reserves_name_1_in_top_level_scope_of_a_module, ts.declarationNameToString(name), ts.declarationNameToString(name)); } @@ -26529,12 +27528,12 @@ var ts; return; } // Uninstantiated modules shouldnt do this check - if (node.kind === 222 /* ModuleDeclaration */ && ts.getModuleInstanceState(node) !== 1 /* Instantiated */) { + if (node.kind === 224 /* ModuleDeclaration */ && ts.getModuleInstanceState(node) !== 1 /* Instantiated */) { return; } // In case of variable declaration, node.parent is variable statement so look at the variable statement's parent var parent = getDeclarationContainer(node); - if (parent.kind === 252 /* SourceFile */ && ts.isExternalOrCommonJsModule(parent) && parent.flags & 2097152 /* HasAsyncFunctions */) { + if (parent.kind === 255 /* SourceFile */ && ts.isExternalOrCommonJsModule(parent) && parent.flags & 2097152 /* HasAsyncFunctions */) { // If the declaration happens to be in external module, report error that Promise is a reserved identifier. error(name, ts.Diagnostics.Duplicate_identifier_0_Compiler_reserves_name_1_in_top_level_scope_of_a_module_containing_async_functions, ts.declarationNameToString(name), ts.declarationNameToString(name)); } @@ -26569,7 +27568,7 @@ var ts; // skip variable declarations that don't have initializers // NOTE: in ES6 spec initializer is required in variable declarations where name is binding pattern // so we'll always treat binding elements as initialized - if (node.kind === 215 /* VariableDeclaration */ && !node.initializer) { + if (node.kind === 217 /* VariableDeclaration */ && !node.initializer) { return; } var symbol = getSymbolOfNode(node); @@ -26579,24 +27578,24 @@ var ts; localDeclarationSymbol !== symbol && localDeclarationSymbol.flags & 2 /* BlockScopedVariable */) { if (getDeclarationFlagsFromSymbol(localDeclarationSymbol) & 3072 /* BlockScoped */) { - var varDeclList = ts.getAncestor(localDeclarationSymbol.valueDeclaration, 216 /* VariableDeclarationList */); - var container = varDeclList.parent.kind === 197 /* VariableStatement */ && varDeclList.parent.parent + var varDeclList = ts.getAncestor(localDeclarationSymbol.valueDeclaration, 218 /* VariableDeclarationList */); + var container = varDeclList.parent.kind === 199 /* VariableStatement */ && varDeclList.parent.parent ? varDeclList.parent.parent : undefined; // names of block-scoped and function scoped variables can collide only // if block scoped variable is defined in the function\module\source file scope (because of variable hoisting) var namesShareScope = container && - (container.kind === 196 /* Block */ && ts.isFunctionLike(container.parent) || - container.kind === 223 /* ModuleBlock */ || - container.kind === 222 /* ModuleDeclaration */ || - container.kind === 252 /* SourceFile */); + (container.kind === 198 /* Block */ && ts.isFunctionLike(container.parent) || + container.kind === 225 /* ModuleBlock */ || + container.kind === 224 /* ModuleDeclaration */ || + container.kind === 255 /* SourceFile */); // here we know that function scoped variable is shadowed by block scoped one // if they are defined in the same scope - binder has already reported redeclaration error // otherwise if variable has an initializer - show error that initialization will fail // since LHS will be block scoped name instead of function scoped if (!namesShareScope) { - var name_15 = symbolToString(localDeclarationSymbol); - error(node, ts.Diagnostics.Cannot_initialize_outer_scoped_variable_0_in_the_same_scope_as_block_scoped_declaration_1, name_15, name_15); + var name_16 = symbolToString(localDeclarationSymbol); + error(node, ts.Diagnostics.Cannot_initialize_outer_scoped_variable_0_in_the_same_scope_as_block_scoped_declaration_1, name_16, name_16); } } } @@ -26604,7 +27603,7 @@ var ts; } // Check that a parameter initializer contains no references to parameters declared to the right of itself function checkParameterInitializer(node) { - if (ts.getRootDeclaration(node).kind !== 140 /* Parameter */) { + if (ts.getRootDeclaration(node).kind !== 141 /* Parameter */) { return; } var func = ts.getContainingFunction(node); @@ -26615,7 +27614,7 @@ var ts; // check FunctionLikeDeclaration.locals (stores parameters\function local variable) // if it contains entry with a specified name and if this entry matches the resolved symbol if (referencedSymbol && referencedSymbol !== unknownSymbol && getSymbol(func.locals, referencedSymbol.name, 107455 /* Value */) === referencedSymbol) { - if (referencedSymbol.valueDeclaration.kind === 140 /* Parameter */) { + if (referencedSymbol.valueDeclaration.kind === 141 /* Parameter */) { if (referencedSymbol.valueDeclaration === node) { error(n, ts.Diagnostics.Parameter_0_cannot_be_referenced_in_its_initializer, ts.declarationNameToString(node.name)); return; @@ -26641,31 +27640,39 @@ var ts; // Do not use hasDynamicName here, because that returns false for well known symbols. // We want to perform checkComputedPropertyName for all computed properties, including // well known symbols. - if (node.name.kind === 138 /* ComputedPropertyName */) { + if (node.name.kind === 139 /* ComputedPropertyName */) { checkComputedPropertyName(node.name); if (node.initializer) { checkExpressionCached(node.initializer); } } - if (node.kind === 167 /* BindingElement */) { + if (node.kind === 168 /* BindingElement */) { // check computed properties inside property names of binding elements - if (node.propertyName && node.propertyName.kind === 138 /* ComputedPropertyName */) { + if (node.propertyName && node.propertyName.kind === 139 /* ComputedPropertyName */) { checkComputedPropertyName(node.propertyName); } + // check private/protected variable access + var parent_9 = node.parent.parent; + var parentType = getTypeForBindingElementParent(parent_9); + var name_17 = node.propertyName || node.name; + var property = getPropertyOfType(parentType, getTextOfPropertyName(name_17)); + if (parent_9.initializer && property && getParentOfSymbol(property)) { + checkClassPropertyAccess(parent_9, parent_9.initializer, parentType, property); + } } // For a binding pattern, check contained binding elements if (ts.isBindingPattern(node.name)) { ts.forEach(node.name.elements, checkSourceElement); } // For a parameter declaration with an initializer, error and exit if the containing function doesn't have a body - if (node.initializer && ts.getRootDeclaration(node).kind === 140 /* Parameter */ && ts.nodeIsMissing(ts.getContainingFunction(node).body)) { + if (node.initializer && ts.getRootDeclaration(node).kind === 141 /* Parameter */ && ts.nodeIsMissing(ts.getContainingFunction(node).body)) { error(node, ts.Diagnostics.A_parameter_initializer_is_only_allowed_in_a_function_or_constructor_implementation); return; } // For a binding pattern, validate the initializer and exit if (ts.isBindingPattern(node.name)) { // Don't validate for-in initializer as it is already an error - if (node.initializer && node.parent.parent.kind !== 204 /* ForInStatement */) { + if (node.initializer && node.parent.parent.kind !== 206 /* ForInStatement */) { checkTypeAssignableTo(checkExpressionCached(node.initializer), getWidenedTypeForVariableLikeDeclaration(node), node, /*headMessage*/ undefined); checkParameterInitializer(node); } @@ -26676,7 +27683,7 @@ var ts; if (node === symbol.valueDeclaration) { // Node is the primary declaration of the symbol, just validate the initializer // Don't validate for-in initializer as it is already an error - if (node.initializer && node.parent.parent.kind !== 204 /* ForInStatement */) { + if (node.initializer && node.parent.parent.kind !== 206 /* ForInStatement */) { checkTypeAssignableTo(checkExpressionCached(node.initializer), type, node, /*headMessage*/ undefined); checkParameterInitializer(node); } @@ -26692,10 +27699,10 @@ var ts; checkTypeAssignableTo(checkExpressionCached(node.initializer), declarationType, node, /*headMessage*/ undefined); } } - if (node.kind !== 143 /* PropertyDeclaration */ && node.kind !== 142 /* PropertySignature */) { + if (node.kind !== 144 /* PropertyDeclaration */ && node.kind !== 143 /* PropertySignature */) { // We know we don't have a binding pattern or computed name here checkExportsOnMergedDeclarations(node); - if (node.kind === 215 /* VariableDeclaration */ || node.kind === 167 /* BindingElement */) { + if (node.kind === 217 /* VariableDeclaration */ || node.kind === 168 /* BindingElement */) { checkVarDeclaredNamesNotShadowed(node); } checkCollisionWithCapturedSuperVariable(node, node.name); @@ -26719,7 +27726,7 @@ var ts; } function checkGrammarDisallowedModifiersOnObjectLiteralExpressionMethod(node) { // We only disallow modifier on a method declaration if it is a property of object-literal-expression - if (node.modifiers && node.parent.kind === 169 /* ObjectLiteralExpression */) { + if (node.modifiers && node.parent.kind === 170 /* ObjectLiteralExpression */) { if (ts.isAsyncFunctionLike(node)) { if (node.modifiers.length > 1) { return grammarErrorOnFirstToken(node, ts.Diagnostics.Modifiers_cannot_appear_here); @@ -26740,7 +27747,7 @@ var ts; checkGrammarStatementInAmbientContext(node); checkExpression(node.expression); checkSourceElement(node.thenStatement); - if (node.thenStatement.kind === 198 /* EmptyStatement */) { + if (node.thenStatement.kind === 200 /* EmptyStatement */) { error(node.thenStatement, ts.Diagnostics.The_body_of_an_if_statement_cannot_be_the_empty_statement); } checkSourceElement(node.elseStatement); @@ -26760,12 +27767,12 @@ var ts; function checkForStatement(node) { // Grammar checking if (!checkGrammarStatementInAmbientContext(node)) { - if (node.initializer && node.initializer.kind === 216 /* VariableDeclarationList */) { + if (node.initializer && node.initializer.kind === 218 /* VariableDeclarationList */) { checkGrammarVariableDeclarationList(node.initializer); } } if (node.initializer) { - if (node.initializer.kind === 216 /* VariableDeclarationList */) { + if (node.initializer.kind === 218 /* VariableDeclarationList */) { ts.forEach(node.initializer.declarations, checkVariableDeclaration); } else { @@ -26785,14 +27792,14 @@ var ts; // via checkRightHandSideOfForOf. // If the LHS is an expression, check the LHS, as a destructuring assignment or as a reference. // Then check that the RHS is assignable to it. - if (node.initializer.kind === 216 /* VariableDeclarationList */) { + if (node.initializer.kind === 218 /* VariableDeclarationList */) { checkForInOrForOfVariableDeclaration(node); } else { var varExpr = node.initializer; var iteratedType = checkRightHandSideOfForOf(node.expression); // There may be a destructuring assignment on the left side - if (varExpr.kind === 168 /* ArrayLiteralExpression */ || varExpr.kind === 169 /* ObjectLiteralExpression */) { + if (varExpr.kind === 169 /* ArrayLiteralExpression */ || varExpr.kind === 170 /* ObjectLiteralExpression */) { // iteratedType may be undefined. In this case, we still want to check the structure of // varExpr, in particular making sure it's a valid LeftHandSideExpression. But we'd like // to short circuit the type relation checking as much as possible, so we pass the unknownType. @@ -26821,7 +27828,7 @@ var ts; // for (let VarDecl in Expr) Statement // VarDecl must be a variable declaration without a type annotation that declares a variable of type Any, // and Expr must be an expression of type Any, an object type, or a type parameter type. - if (node.initializer.kind === 216 /* VariableDeclarationList */) { + if (node.initializer.kind === 218 /* VariableDeclarationList */) { var variable = node.initializer.declarations[0]; if (variable && ts.isBindingPattern(variable.name)) { error(variable.name, ts.Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_be_a_destructuring_pattern); @@ -26835,7 +27842,7 @@ var ts; // and Expr must be an expression of type Any, an object type, or a type parameter type. var varExpr = node.initializer; var leftType = checkExpression(varExpr); - if (varExpr.kind === 168 /* ArrayLiteralExpression */ || varExpr.kind === 169 /* ObjectLiteralExpression */) { + if (varExpr.kind === 169 /* ArrayLiteralExpression */ || varExpr.kind === 170 /* ObjectLiteralExpression */) { error(varExpr, ts.Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_be_a_destructuring_pattern); } else if (!isTypeAnyOrAllConstituentTypesHaveKind(leftType, 258 /* StringLike */)) { @@ -26846,7 +27853,7 @@ var ts; checkReferenceExpression(varExpr, ts.Diagnostics.Invalid_left_hand_side_in_for_in_statement, ts.Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_be_a_constant_or_a_read_only_property); } } - var rightType = checkExpression(node.expression); + var rightType = checkNonNullExpression(node.expression); // unknownType is returned i.e. if node.expression is identifier whose name cannot be resolved // in this case error about missing name is already reported - do not report extra one if (!isTypeAnyOrAllConstituentTypesHaveKind(rightType, 80896 /* ObjectType */ | 512 /* TypeParameter */)) { @@ -26863,7 +27870,7 @@ var ts; } } function checkRightHandSideOfForOf(rhsExpression) { - var expressionType = getTypeOfExpression(rhsExpression); + var expressionType = checkNonNullExpression(rhsExpression); return checkIteratedTypeOrElementType(expressionType, rhsExpression, /*allowStringInput*/ true); } function checkIteratedTypeOrElementType(inputType, errorNode, allowStringInput) { @@ -26926,7 +27933,7 @@ var ts; if (!typeAsIterable.iterableElementType) { // As an optimization, if the type is instantiated directly using the globalIterableType (Iterable), // then just grab its type argument. - if ((type.flags & 4096 /* Reference */) && type.target === globalIterableType) { + if ((type.flags & 4096 /* Reference */) && type.target === getGlobalIterableType()) { typeAsIterable.iterableElementType = type.typeArguments[0]; } else { @@ -26967,7 +27974,7 @@ var ts; if (!typeAsIterator.iteratorElementType) { // As an optimization, if the type is instantiated directly using the globalIteratorType (Iterator), // then just grab its type argument. - if ((type.flags & 4096 /* Reference */) && type.target === globalIteratorType) { + if ((type.flags & 4096 /* Reference */) && type.target === getGlobalIteratorType()) { typeAsIterator.iteratorElementType = type.typeArguments[0]; } else { @@ -27004,7 +28011,7 @@ var ts; } // As an optimization, if the type is instantiated directly using the globalIterableIteratorType (IterableIterator), // then just grab its type argument. - if ((type.flags & 4096 /* Reference */) && type.target === globalIterableIteratorType) { + if ((type.flags & 4096 /* Reference */) && type.target === getGlobalIterableIteratorType()) { return type.typeArguments[0]; } return getElementTypeOfIterable(type, /*errorNode*/ undefined) || @@ -27080,7 +28087,11 @@ var ts; // TODO: Check that target label is valid } function isGetAccessorWithAnnotatedSetAccessor(node) { - return !!(node.kind === 147 /* GetAccessor */ && ts.getSetAccessorTypeAnnotationNode(ts.getDeclarationOfKind(node.symbol, 148 /* SetAccessor */))); + return !!(node.kind === 148 /* GetAccessor */ && ts.getSetAccessorTypeAnnotationNode(ts.getDeclarationOfKind(node.symbol, 149 /* SetAccessor */))); + } + function isUnwrappedReturnTypeVoidOrAny(func, returnType) { + var unwrappedReturnType = ts.isAsyncFunctionLike(func) ? getPromisedType(returnType) : returnType; + return maybeTypeOfKind(unwrappedReturnType, 16 /* Void */ | 1 /* Any */); } function checkReturnStatement(node) { // Grammar checking @@ -27090,12 +28101,12 @@ var ts; grammarErrorOnFirstToken(node, ts.Diagnostics.A_return_statement_can_only_be_used_within_a_function_body); } } - if (node.expression) { - var func = ts.getContainingFunction(node); - if (func) { - var signature = getSignatureFromDeclaration(func); - var returnType = getReturnTypeOfSignature(signature); - var exprType = checkExpressionCached(node.expression); + var func = ts.getContainingFunction(node); + if (func) { + var signature = getSignatureFromDeclaration(func); + var returnType = getReturnTypeOfSignature(signature); + if (strictNullChecks || node.expression) { + var exprType = node.expression ? checkExpressionCached(node.expression) : undefinedType; if (func.asteriskToken) { // A generator does not need its return expressions checked against its return type. // Instead, the yield expressions are checked against the element type. @@ -27103,30 +28114,36 @@ var ts; // for generators. return; } - if (func.kind === 148 /* SetAccessor */) { - error(node.expression, ts.Diagnostics.Setters_cannot_return_a_value); + if (func.kind === 149 /* SetAccessor */) { + if (node.expression) { + error(node.expression, ts.Diagnostics.Setters_cannot_return_a_value); + } } - else if (func.kind === 146 /* Constructor */) { - if (!checkTypeAssignableTo(exprType, returnType, node.expression)) { + else if (func.kind === 147 /* Constructor */) { + if (node.expression && !checkTypeAssignableTo(exprType, returnType, node.expression)) { error(node.expression, ts.Diagnostics.Return_type_of_constructor_signature_must_be_assignable_to_the_instance_type_of_the_class); } } else if (func.type || isGetAccessorWithAnnotatedSetAccessor(func)) { if (ts.isAsyncFunctionLike(func)) { var promisedType = getPromisedType(returnType); - var awaitedType = checkAwaitedType(exprType, node.expression, ts.Diagnostics.Return_expression_in_async_function_does_not_have_a_valid_callable_then_member); + var awaitedType = checkAwaitedType(exprType, node.expression || node, ts.Diagnostics.Return_expression_in_async_function_does_not_have_a_valid_callable_then_member); if (promisedType) { // If the function has a return type, but promisedType is // undefined, an error will be reported in checkAsyncFunctionReturnType // so we don't need to report one here. - checkTypeAssignableTo(awaitedType, promisedType, node.expression); + checkTypeAssignableTo(awaitedType, promisedType, node.expression || node); } } else { - checkTypeAssignableTo(exprType, returnType, node.expression); + checkTypeAssignableTo(exprType, returnType, node.expression || node); } } } + else if (func.kind !== 147 /* Constructor */ && compilerOptions.noImplicitReturns && !isUnwrappedReturnTypeVoidOrAny(func, returnType)) { + // The function has a return type, but the return statement doesn't have an expression. + error(node, ts.Diagnostics.Not_all_code_paths_return_a_value); + } } } function checkWithStatement(node) { @@ -27145,10 +28162,9 @@ var ts; var firstDefaultClause; var hasDuplicateDefaultClause = false; var expressionType = checkExpression(node.expression); - var expressionTypeIsStringLike = maybeTypeOfKind(expressionType, 258 /* StringLike */); ts.forEach(node.caseBlock.clauses, function (clause) { // Grammar check for duplicate default clauses, skip if we already report duplicate default clause - if (clause.kind === 246 /* DefaultClause */ && !hasDuplicateDefaultClause) { + if (clause.kind === 249 /* DefaultClause */ && !hasDuplicateDefaultClause) { if (firstDefaultClause === undefined) { firstDefaultClause = clause; } @@ -27160,18 +28176,15 @@ var ts; hasDuplicateDefaultClause = true; } } - if (produceDiagnostics && clause.kind === 245 /* CaseClause */) { + if (produceDiagnostics && clause.kind === 248 /* CaseClause */) { var caseClause = clause; - // TypeScript 1.0 spec (April 2014):5.9 - // In a 'switch' statement, each 'case' expression must be of a type that is assignable to or from the type of the 'switch' expression. + // TypeScript 1.0 spec (April 2014): 5.9 + // In a 'switch' statement, each 'case' expression must be of a type that is comparable + // to or from the type of the 'switch' expression. var caseType = checkExpression(caseClause.expression); - var expressionTypeIsAssignableToCaseType = - // Permit 'number[] | "foo"' to be asserted to 'string'. - (expressionTypeIsStringLike && maybeTypeOfKind(caseType, 258 /* StringLike */)) || - isTypeAssignableTo(expressionType, caseType); - if (!expressionTypeIsAssignableToCaseType) { - // 'expressionType is not assignable to caseType', try the reversed check and report errors if it fails - checkTypeAssignableTo(caseType, expressionType, caseClause.expression, /*headMessage*/ undefined); + if (!isTypeComparableTo(expressionType, caseType)) { + // expressionType is not comparable to caseType, try the reversed check and report errors if it fails + checkTypeComparableTo(caseType, expressionType, caseClause.expression, /*headMessage*/ undefined); } } ts.forEach(clause.statements, checkSourceElement); @@ -27185,7 +28198,7 @@ var ts; if (ts.isFunctionLike(current)) { break; } - if (current.kind === 211 /* LabeledStatement */ && current.label.text === node.label.text) { + if (current.kind === 213 /* LabeledStatement */ && current.label.text === node.label.text) { var sourceFile = ts.getSourceFileOfNode(node); grammarErrorOnNode(node.label, ts.Diagnostics.Duplicate_label_0, ts.getTextOfNodeFromSourceText(sourceFile.text, node.label)); break; @@ -27290,7 +28303,7 @@ var ts; // perform property check if property or indexer is declared in 'type' // this allows to rule out cases when both property and indexer are inherited from the base class var errorNode; - if (prop.valueDeclaration.name.kind === 138 /* ComputedPropertyName */ || prop.parent === containingType.symbol) { + if (prop.valueDeclaration.name.kind === 139 /* ComputedPropertyName */ || prop.parent === containingType.symbol) { errorNode = prop.valueDeclaration; } else if (indexDeclaration) { @@ -27348,7 +28361,7 @@ var ts; var firstDecl; for (var _i = 0, _a = symbol.declarations; _i < _a.length; _i++) { var declaration = _a[_i]; - if (declaration.kind === 218 /* ClassDeclaration */ || declaration.kind === 219 /* InterfaceDeclaration */) { + if (declaration.kind === 220 /* ClassDeclaration */ || declaration.kind === 221 /* InterfaceDeclaration */) { if (!firstDecl) { firstDecl = declaration; } @@ -27504,7 +28517,7 @@ var ts; // If there is no declaration for the derived class (as in the case of class expressions), // then the class cannot be declared abstract. if (baseDeclarationFlags & 128 /* Abstract */ && (!derivedClassDecl || !(derivedClassDecl.flags & 128 /* Abstract */))) { - if (derivedClassDecl.kind === 190 /* ClassExpression */) { + if (derivedClassDecl.kind === 191 /* ClassExpression */) { error(derivedClassDecl, ts.Diagnostics.Non_abstract_class_expression_does_not_implement_inherited_abstract_member_0_from_class_1, symbolToString(baseProperty), typeToString(baseType)); } else { @@ -27552,7 +28565,7 @@ var ts; } } function isAccessor(kind) { - return kind === 147 /* GetAccessor */ || kind === 148 /* SetAccessor */; + return kind === 148 /* GetAccessor */ || kind === 149 /* SetAccessor */; } function areTypeParametersIdentical(list1, list2) { if (!list1 && !list2) { @@ -27624,7 +28637,7 @@ var ts; var symbol = getSymbolOfNode(node); checkTypeParameterListsIdentical(node, symbol); // Only check this symbol once - var firstInterfaceDecl = ts.getDeclarationOfKind(symbol, 219 /* InterfaceDeclaration */); + var firstInterfaceDecl = ts.getDeclarationOfKind(symbol, 221 /* InterfaceDeclaration */); if (node === firstInterfaceDecl) { var type = getDeclaredTypeOfSymbol(symbol); var typeWithThis = getTypeWithThisArgument(type); @@ -27728,7 +28741,7 @@ var ts; return value; function evalConstant(e) { switch (e.kind) { - case 183 /* PrefixUnaryExpression */: + case 184 /* PrefixUnaryExpression */: var value_1 = evalConstant(e.operand); if (value_1 === undefined) { return undefined; @@ -27739,7 +28752,7 @@ var ts; case 50 /* TildeToken */: return ~value_1; } return undefined; - case 185 /* BinaryExpression */: + case 186 /* BinaryExpression */: var left = evalConstant(e.left); if (left === undefined) { return undefined; @@ -27764,11 +28777,11 @@ var ts; return undefined; case 8 /* NumericLiteral */: return +e.text; - case 176 /* ParenthesizedExpression */: + case 177 /* ParenthesizedExpression */: return evalConstant(e.expression); case 69 /* Identifier */: - case 171 /* ElementAccessExpression */: - case 170 /* PropertyAccessExpression */: + case 172 /* ElementAccessExpression */: + case 171 /* PropertyAccessExpression */: var member = initializer.parent; var currentType = getTypeOfSymbol(getSymbolOfNode(member.parent)); var enumType_1; @@ -27781,7 +28794,7 @@ var ts; } else { var expression = void 0; - if (e.kind === 171 /* ElementAccessExpression */) { + if (e.kind === 172 /* ElementAccessExpression */) { if (e.argumentExpression === undefined || e.argumentExpression.kind !== 9 /* StringLiteral */) { return undefined; @@ -27799,7 +28812,7 @@ var ts; if (current.kind === 69 /* Identifier */) { break; } - else if (current.kind === 170 /* PropertyAccessExpression */) { + else if (current.kind === 171 /* PropertyAccessExpression */) { current = current.expression; } else { @@ -27871,7 +28884,7 @@ var ts; var seenEnumMissingInitialInitializer_1 = false; ts.forEach(enumSymbol.declarations, function (declaration) { // return true if we hit a violation of the rule, false otherwise - if (declaration.kind !== 221 /* EnumDeclaration */) { + if (declaration.kind !== 223 /* EnumDeclaration */) { return false; } var enumDeclaration = declaration; @@ -27894,8 +28907,8 @@ var ts; var declarations = symbol.declarations; for (var _i = 0, declarations_5 = declarations; _i < declarations_5.length; _i++) { var declaration = declarations_5[_i]; - if ((declaration.kind === 218 /* ClassDeclaration */ || - (declaration.kind === 217 /* FunctionDeclaration */ && ts.nodeIsPresent(declaration.body))) && + if ((declaration.kind === 220 /* ClassDeclaration */ || + (declaration.kind === 219 /* FunctionDeclaration */ && ts.nodeIsPresent(declaration.body))) && !ts.isInAmbientContext(declaration)) { return declaration; } @@ -27957,7 +28970,7 @@ var ts; } // if the module merges with a class declaration in the same lexical scope, // we need to track this to ensure the correct emit. - var mergedClass = ts.getDeclarationOfKind(symbol, 218 /* ClassDeclaration */); + var mergedClass = ts.getDeclarationOfKind(symbol, 220 /* ClassDeclaration */); if (mergedClass && inSameLexicalScope(node, mergedClass)) { getNodeLinks(node).flags |= 32768 /* LexicalModuleMergesWithClass */; @@ -28003,31 +29016,31 @@ var ts; } function checkModuleAugmentationElement(node, isGlobalAugmentation) { switch (node.kind) { - case 197 /* VariableStatement */: + case 199 /* VariableStatement */: // error each individual name in variable statement instead of marking the entire variable statement for (var _i = 0, _a = node.declarationList.declarations; _i < _a.length; _i++) { var decl = _a[_i]; checkModuleAugmentationElement(decl, isGlobalAugmentation); } break; - case 231 /* ExportAssignment */: - case 232 /* ExportDeclaration */: + case 234 /* ExportAssignment */: + case 235 /* ExportDeclaration */: grammarErrorOnFirstToken(node, ts.Diagnostics.Exports_and_export_assignments_are_not_permitted_in_module_augmentations); break; - case 225 /* ImportEqualsDeclaration */: + case 228 /* ImportEqualsDeclaration */: if (node.moduleReference.kind !== 9 /* StringLiteral */) { error(node.name, ts.Diagnostics.Module_augmentation_cannot_introduce_new_names_in_the_top_level_scope); break; } // fallthrough - case 226 /* ImportDeclaration */: + case 229 /* ImportDeclaration */: grammarErrorOnFirstToken(node, ts.Diagnostics.Imports_are_not_permitted_in_module_augmentations_Consider_moving_them_to_the_enclosing_external_module); break; - case 167 /* BindingElement */: - case 215 /* VariableDeclaration */: - var name_16 = node.name; - if (ts.isBindingPattern(name_16)) { - for (var _b = 0, _c = name_16.elements; _b < _c.length; _b++) { + case 168 /* BindingElement */: + case 217 /* VariableDeclaration */: + var name_18 = node.name; + if (ts.isBindingPattern(name_18)) { + for (var _b = 0, _c = name_18.elements; _b < _c.length; _b++) { var el = _c[_b]; // mark individual names in binding pattern checkModuleAugmentationElement(el, isGlobalAugmentation); @@ -28035,12 +29048,12 @@ var ts; break; } // fallthrough - case 218 /* ClassDeclaration */: - case 221 /* EnumDeclaration */: - case 217 /* FunctionDeclaration */: - case 219 /* InterfaceDeclaration */: - case 222 /* ModuleDeclaration */: - case 220 /* TypeAliasDeclaration */: + case 220 /* ClassDeclaration */: + case 223 /* EnumDeclaration */: + case 219 /* FunctionDeclaration */: + case 221 /* InterfaceDeclaration */: + case 224 /* ModuleDeclaration */: + case 222 /* TypeAliasDeclaration */: var symbol = getSymbolOfNode(node); if (symbol) { // module augmentations cannot introduce new names on the top level scope of the module @@ -28055,7 +29068,7 @@ var ts; } else { // symbol should not originate in augmentation - reportError = ts.isExternalModuleAugmentation(symbol.parent.valueDeclaration); + reportError = ts.isExternalModuleAugmentation(symbol.parent.declarations[0]); } } if (reportError) { @@ -28067,10 +29080,10 @@ var ts; } function getFirstIdentifier(node) { while (true) { - if (node.kind === 137 /* QualifiedName */) { + if (node.kind === 138 /* QualifiedName */) { node = node.left; } - else if (node.kind === 170 /* PropertyAccessExpression */) { + else if (node.kind === 171 /* PropertyAccessExpression */) { node = node.expression; } else { @@ -28086,9 +29099,9 @@ var ts; error(moduleName, ts.Diagnostics.String_literal_expected); return false; } - var inAmbientExternalModule = node.parent.kind === 223 /* ModuleBlock */ && ts.isAmbientModule(node.parent.parent); - if (node.parent.kind !== 252 /* SourceFile */ && !inAmbientExternalModule) { - error(moduleName, node.kind === 232 /* ExportDeclaration */ ? + var inAmbientExternalModule = node.parent.kind === 225 /* ModuleBlock */ && ts.isAmbientModule(node.parent.parent); + if (node.parent.kind !== 255 /* SourceFile */ && !inAmbientExternalModule) { + error(moduleName, node.kind === 235 /* ExportDeclaration */ ? ts.Diagnostics.Export_declarations_are_not_permitted_in_a_namespace : ts.Diagnostics.Import_declarations_in_a_namespace_cannot_reference_a_module); return false; @@ -28111,11 +29124,17 @@ var ts; var symbol = getSymbolOfNode(node); var target = resolveAlias(symbol); if (target !== unknownSymbol) { - var excludedMeanings = (symbol.flags & 107455 /* Value */ ? 107455 /* Value */ : 0) | + // For external modules symbol represent local symbol for an alias. + // This local symbol will merge any other local declarations (excluding other aliases) + // and symbol.flags will contains combined representation for all merged declaration. + // Based on symbol.flags we can compute a set of excluded meanings (meaning that resolved alias should not have, + // otherwise it will conflict with some local declaration). Note that in addition to normal flags we include matching SymbolFlags.Export* + // in order to prevent collisions with declarations that were exported from the current module (they still contribute to local names). + var excludedMeanings = (symbol.flags & (107455 /* Value */ | 1048576 /* ExportValue */) ? 107455 /* Value */ : 0) | (symbol.flags & 793056 /* Type */ ? 793056 /* Type */ : 0) | (symbol.flags & 1536 /* Namespace */ ? 1536 /* Namespace */ : 0); if (target.flags & excludedMeanings) { - var message = node.kind === 234 /* ExportSpecifier */ ? + var message = node.kind === 237 /* ExportSpecifier */ ? ts.Diagnostics.Export_declaration_conflicts_with_exported_declaration_of_0 : ts.Diagnostics.Import_declaration_conflicts_with_local_declaration_of_0; error(node, message, symbolToString(symbol)); @@ -28143,7 +29162,7 @@ var ts; checkImportBinding(importClause); } if (importClause.namedBindings) { - if (importClause.namedBindings.kind === 228 /* NamespaceImport */) { + if (importClause.namedBindings.kind === 231 /* NamespaceImport */) { checkImportBinding(importClause.namedBindings); } else { @@ -28200,8 +29219,8 @@ var ts; // export { x, y } // export { x, y } from "foo" ts.forEach(node.exportClause.elements, checkExportSpecifier); - var inAmbientExternalModule = node.parent.kind === 223 /* ModuleBlock */ && ts.isAmbientModule(node.parent.parent); - if (node.parent.kind !== 252 /* SourceFile */ && !inAmbientExternalModule) { + var inAmbientExternalModule = node.parent.kind === 225 /* ModuleBlock */ && ts.isAmbientModule(node.parent.parent); + if (node.parent.kind !== 255 /* SourceFile */ && !inAmbientExternalModule) { error(node, ts.Diagnostics.Export_declarations_are_not_permitted_in_a_namespace); } } @@ -28215,7 +29234,7 @@ var ts; } } function checkGrammarModuleElementContext(node, errorMessage) { - if (node.parent.kind !== 252 /* SourceFile */ && node.parent.kind !== 223 /* ModuleBlock */ && node.parent.kind !== 222 /* ModuleDeclaration */) { + if (node.parent.kind !== 255 /* SourceFile */ && node.parent.kind !== 225 /* ModuleBlock */ && node.parent.kind !== 224 /* ModuleDeclaration */) { return grammarErrorOnFirstToken(node, errorMessage); } } @@ -28239,8 +29258,8 @@ var ts; // If we hit an export assignment in an illegal context, just bail out to avoid cascading errors. return; } - var container = node.parent.kind === 252 /* SourceFile */ ? node.parent : node.parent.parent; - if (container.kind === 222 /* ModuleDeclaration */ && !ts.isAmbientModule(container)) { + var container = node.parent.kind === 255 /* SourceFile */ ? node.parent : node.parent.parent; + if (container.kind === 224 /* ModuleDeclaration */ && !ts.isAmbientModule(container)) { error(node, ts.Diagnostics.An_export_assignment_cannot_be_used_in_a_namespace); return; } @@ -28315,7 +29334,7 @@ var ts; links.exportsChecked = true; } function isNotOverload(declaration) { - return declaration.kind !== 217 /* FunctionDeclaration */ || !!declaration.body; + return declaration.kind !== 219 /* FunctionDeclaration */ || !!declaration.body; } } function checkSourceElement(node) { @@ -28327,118 +29346,118 @@ var ts; // Only bother checking on a few construct kinds. We don't want to be excessively // hitting the cancellation token on every node we check. switch (kind) { - case 222 /* ModuleDeclaration */: - case 218 /* ClassDeclaration */: - case 219 /* InterfaceDeclaration */: - case 217 /* FunctionDeclaration */: + case 224 /* ModuleDeclaration */: + case 220 /* ClassDeclaration */: + case 221 /* InterfaceDeclaration */: + case 219 /* FunctionDeclaration */: cancellationToken.throwIfCancellationRequested(); } } switch (kind) { - case 139 /* TypeParameter */: + case 140 /* TypeParameter */: return checkTypeParameter(node); - case 140 /* Parameter */: + case 141 /* Parameter */: return checkParameter(node); - case 143 /* PropertyDeclaration */: - case 142 /* PropertySignature */: + case 144 /* PropertyDeclaration */: + case 143 /* PropertySignature */: return checkPropertyDeclaration(node); - case 154 /* FunctionType */: - case 155 /* ConstructorType */: - case 149 /* CallSignature */: - case 150 /* ConstructSignature */: + case 155 /* FunctionType */: + case 156 /* ConstructorType */: + case 150 /* CallSignature */: + case 151 /* ConstructSignature */: return checkSignatureDeclaration(node); - case 151 /* IndexSignature */: + case 152 /* IndexSignature */: return checkSignatureDeclaration(node); - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: return checkMethodDeclaration(node); - case 146 /* Constructor */: + case 147 /* Constructor */: return checkConstructorDeclaration(node); - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: return checkAccessorDeclaration(node); - case 153 /* TypeReference */: + case 154 /* TypeReference */: return checkTypeReferenceNode(node); - case 152 /* TypePredicate */: + case 153 /* TypePredicate */: return checkTypePredicate(node); - case 156 /* TypeQuery */: + case 157 /* TypeQuery */: return checkTypeQuery(node); - case 157 /* TypeLiteral */: + case 158 /* TypeLiteral */: return checkTypeLiteral(node); - case 158 /* ArrayType */: + case 159 /* ArrayType */: return checkArrayType(node); - case 159 /* TupleType */: + case 160 /* TupleType */: return checkTupleType(node); - case 160 /* UnionType */: - case 161 /* IntersectionType */: + case 161 /* UnionType */: + case 162 /* IntersectionType */: return checkUnionOrIntersectionType(node); - case 162 /* ParenthesizedType */: + case 163 /* ParenthesizedType */: return checkSourceElement(node.type); - case 217 /* FunctionDeclaration */: + case 219 /* FunctionDeclaration */: return checkFunctionDeclaration(node); - case 196 /* Block */: - case 223 /* ModuleBlock */: + case 198 /* Block */: + case 225 /* ModuleBlock */: return checkBlock(node); - case 197 /* VariableStatement */: + case 199 /* VariableStatement */: return checkVariableStatement(node); - case 199 /* ExpressionStatement */: + case 201 /* ExpressionStatement */: return checkExpressionStatement(node); - case 200 /* IfStatement */: + case 202 /* IfStatement */: return checkIfStatement(node); - case 201 /* DoStatement */: + case 203 /* DoStatement */: return checkDoStatement(node); - case 202 /* WhileStatement */: + case 204 /* WhileStatement */: return checkWhileStatement(node); - case 203 /* ForStatement */: + case 205 /* ForStatement */: return checkForStatement(node); - case 204 /* ForInStatement */: + case 206 /* ForInStatement */: return checkForInStatement(node); - case 205 /* ForOfStatement */: + case 207 /* ForOfStatement */: return checkForOfStatement(node); - case 206 /* ContinueStatement */: - case 207 /* BreakStatement */: + case 208 /* ContinueStatement */: + case 209 /* BreakStatement */: return checkBreakOrContinueStatement(node); - case 208 /* ReturnStatement */: + case 210 /* ReturnStatement */: return checkReturnStatement(node); - case 209 /* WithStatement */: + case 211 /* WithStatement */: return checkWithStatement(node); - case 210 /* SwitchStatement */: + case 212 /* SwitchStatement */: return checkSwitchStatement(node); - case 211 /* LabeledStatement */: + case 213 /* LabeledStatement */: return checkLabeledStatement(node); - case 212 /* ThrowStatement */: + case 214 /* ThrowStatement */: return checkThrowStatement(node); - case 213 /* TryStatement */: + case 215 /* TryStatement */: return checkTryStatement(node); - case 215 /* VariableDeclaration */: + case 217 /* VariableDeclaration */: return checkVariableDeclaration(node); - case 167 /* BindingElement */: + case 168 /* BindingElement */: return checkBindingElement(node); - case 218 /* ClassDeclaration */: + case 220 /* ClassDeclaration */: return checkClassDeclaration(node); - case 219 /* InterfaceDeclaration */: + case 221 /* InterfaceDeclaration */: return checkInterfaceDeclaration(node); - case 220 /* TypeAliasDeclaration */: + case 222 /* TypeAliasDeclaration */: return checkTypeAliasDeclaration(node); - case 221 /* EnumDeclaration */: + case 223 /* EnumDeclaration */: return checkEnumDeclaration(node); - case 222 /* ModuleDeclaration */: + case 224 /* ModuleDeclaration */: return checkModuleDeclaration(node); - case 226 /* ImportDeclaration */: + case 229 /* ImportDeclaration */: return checkImportDeclaration(node); - case 225 /* ImportEqualsDeclaration */: + case 228 /* ImportEqualsDeclaration */: return checkImportEqualsDeclaration(node); - case 232 /* ExportDeclaration */: + case 235 /* ExportDeclaration */: return checkExportDeclaration(node); - case 231 /* ExportAssignment */: + case 234 /* ExportAssignment */: return checkExportAssignment(node); - case 198 /* EmptyStatement */: + case 200 /* EmptyStatement */: checkGrammarStatementInAmbientContext(node); return; - case 214 /* DebuggerStatement */: + case 216 /* DebuggerStatement */: checkGrammarStatementInAmbientContext(node); return; - case 235 /* MissingDeclaration */: + case 238 /* MissingDeclaration */: return checkMissingDeclaration(node); } } @@ -28460,17 +29479,17 @@ var ts; for (var _i = 0, deferredNodes_1 = deferredNodes; _i < deferredNodes_1.length; _i++) { var node = deferredNodes_1[_i]; switch (node.kind) { - case 177 /* FunctionExpression */: - case 178 /* ArrowFunction */: - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: + case 178 /* FunctionExpression */: + case 179 /* ArrowFunction */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: checkFunctionExpressionOrObjectLiteralMethodDeferred(node); break; - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: checkAccessorDeferred(node); break; - case 190 /* ClassExpression */: + case 191 /* ClassExpression */: checkClassExpressionDeferred(node); break; } @@ -28545,7 +29564,7 @@ var ts; function isInsideWithStatementBody(node) { if (node) { while (node.parent) { - if (node.parent.kind === 209 /* WithStatement */ && node.parent.statement === node) { + if (node.parent.kind === 211 /* WithStatement */ && node.parent.statement === node) { return true; } node = node.parent; @@ -28568,25 +29587,25 @@ var ts; copySymbols(location.locals, meaning); } switch (location.kind) { - case 252 /* SourceFile */: + case 255 /* SourceFile */: if (!ts.isExternalOrCommonJsModule(location)) { break; } - case 222 /* ModuleDeclaration */: + case 224 /* ModuleDeclaration */: copySymbols(getSymbolOfNode(location).exports, meaning & 8914931 /* ModuleMember */); break; - case 221 /* EnumDeclaration */: + case 223 /* EnumDeclaration */: copySymbols(getSymbolOfNode(location).exports, meaning & 8 /* EnumMember */); break; - case 190 /* ClassExpression */: + case 191 /* ClassExpression */: var className = location.name; if (className) { copySymbol(location.symbol, meaning); } // fall through; this fall-through is necessary because we would like to handle // type parameter inside class expression similar to how we handle it in classDeclaration and interface Declaration - case 218 /* ClassDeclaration */: - case 219 /* InterfaceDeclaration */: + case 220 /* ClassDeclaration */: + case 221 /* InterfaceDeclaration */: // If we didn't come from static member of class or interface, // add the type parameters into the symbol table // (type parameters of classDeclaration/classExpression and interface are in member property of the symbol. @@ -28595,7 +29614,7 @@ var ts; copySymbols(getSymbolOfNode(location).members, meaning & 793056 /* Type */); } break; - case 177 /* FunctionExpression */: + case 178 /* FunctionExpression */: var funcName = location.name; if (funcName) { copySymbol(location.symbol, meaning); @@ -28644,48 +29663,51 @@ var ts; } function isTypeDeclaration(node) { switch (node.kind) { - case 139 /* TypeParameter */: - case 218 /* ClassDeclaration */: - case 219 /* InterfaceDeclaration */: - case 220 /* TypeAliasDeclaration */: - case 221 /* EnumDeclaration */: + case 140 /* TypeParameter */: + case 220 /* ClassDeclaration */: + case 221 /* InterfaceDeclaration */: + case 222 /* TypeAliasDeclaration */: + case 223 /* EnumDeclaration */: return true; } } // True if the given identifier is part of a type reference function isTypeReferenceIdentifier(entityName) { var node = entityName; - while (node.parent && node.parent.kind === 137 /* QualifiedName */) { + while (node.parent && node.parent.kind === 138 /* QualifiedName */) { node = node.parent; } - return node.parent && node.parent.kind === 153 /* TypeReference */; + return node.parent && node.parent.kind === 154 /* TypeReference */; } function isHeritageClauseElementIdentifier(entityName) { var node = entityName; - while (node.parent && node.parent.kind === 170 /* PropertyAccessExpression */) { + while (node.parent && node.parent.kind === 171 /* PropertyAccessExpression */) { node = node.parent; } - return node.parent && node.parent.kind === 192 /* ExpressionWithTypeArguments */; + return node.parent && node.parent.kind === 193 /* ExpressionWithTypeArguments */; } - function isNodeWithinClass(node, classDeclaration) { + function forEachEnclosingClass(node, callback) { + var result; while (true) { node = ts.getContainingClass(node); - if (!node) { - return false; - } - if (node === classDeclaration) { - return true; - } + if (!node) + break; + if (result = callback(node)) + break; } + return result; + } + function isNodeWithinClass(node, classDeclaration) { + return !!forEachEnclosingClass(node, function (n) { return n === classDeclaration; }); } function getLeftSideOfImportEqualsOrExportAssignment(nodeOnRightSide) { - while (nodeOnRightSide.parent.kind === 137 /* QualifiedName */) { + while (nodeOnRightSide.parent.kind === 138 /* QualifiedName */) { nodeOnRightSide = nodeOnRightSide.parent; } - if (nodeOnRightSide.parent.kind === 225 /* ImportEqualsDeclaration */) { + if (nodeOnRightSide.parent.kind === 228 /* ImportEqualsDeclaration */) { return nodeOnRightSide.parent.moduleReference === nodeOnRightSide && nodeOnRightSide.parent; } - if (nodeOnRightSide.parent.kind === 231 /* ExportAssignment */) { + if (nodeOnRightSide.parent.kind === 234 /* ExportAssignment */) { return nodeOnRightSide.parent.expression === nodeOnRightSide && nodeOnRightSide.parent; } return undefined; @@ -28697,7 +29719,7 @@ var ts; if (ts.isDeclarationName(entityName)) { return getSymbolOfNode(entityName.parent); } - if (ts.isInJavaScriptFile(entityName) && entityName.parent.kind === 170 /* PropertyAccessExpression */) { + if (ts.isInJavaScriptFile(entityName) && entityName.parent.kind === 171 /* PropertyAccessExpression */) { var specialPropertyAssignmentKind = ts.getSpecialPropertyAssignmentKind(entityName.parent.parent); switch (specialPropertyAssignmentKind) { case 1 /* ExportsProperty */: @@ -28709,11 +29731,11 @@ var ts; default: } } - if (entityName.parent.kind === 231 /* ExportAssignment */) { + if (entityName.parent.kind === 234 /* ExportAssignment */) { return resolveEntityName(entityName, /*all meanings*/ 107455 /* Value */ | 793056 /* Type */ | 1536 /* Namespace */ | 8388608 /* Alias */); } - if (entityName.kind !== 170 /* PropertyAccessExpression */) { + if (entityName.kind !== 171 /* PropertyAccessExpression */) { if (isInRightSideOfImportOrExportAssignment(entityName)) { // Since we already checked for ExportAssignment, this really could only be an Import return getSymbolOfPartOfRightHandSideOfImportEquals(entityName); @@ -28725,7 +29747,7 @@ var ts; if (isHeritageClauseElementIdentifier(entityName)) { var meaning = 0 /* None */; // In an interface or class, we're definitely interested in a type. - if (entityName.parent.kind === 192 /* ExpressionWithTypeArguments */) { + if (entityName.parent.kind === 193 /* ExpressionWithTypeArguments */) { meaning = 793056 /* Type */; // In a class 'extends' clause we are also looking for a value. if (ts.isExpressionWithTypeArgumentsInClassExtendsClause(entityName.parent)) { @@ -28738,30 +29760,28 @@ var ts; meaning |= 8388608 /* Alias */; return resolveEntityName(entityName, meaning); } - else if ((entityName.parent.kind === 239 /* JsxOpeningElement */) || - (entityName.parent.kind === 238 /* JsxSelfClosingElement */) || - (entityName.parent.kind === 241 /* JsxClosingElement */)) { - return getJsxTagSymbol(entityName.parent); - } else if (ts.isExpression(entityName)) { if (ts.nodeIsMissing(entityName)) { // Missing entity name. return undefined; } if (entityName.kind === 69 /* Identifier */) { + if (ts.isJSXTagName(entityName) && isJsxIntrinsicIdentifier(entityName)) { + return getIntrinsicTagSymbol(entityName.parent); + } // Include aliases in the meaning, this ensures that we do not follow aliases to where they point and instead // return the alias symbol. var meaning = 107455 /* Value */ | 8388608 /* Alias */; return resolveEntityName(entityName, meaning); } - else if (entityName.kind === 170 /* PropertyAccessExpression */) { + else if (entityName.kind === 171 /* PropertyAccessExpression */) { var symbol = getNodeLinks(entityName).resolvedSymbol; if (!symbol) { checkPropertyAccessExpression(entityName); } return getNodeLinks(entityName).resolvedSymbol; } - else if (entityName.kind === 137 /* QualifiedName */) { + else if (entityName.kind === 138 /* QualifiedName */) { var symbol = getNodeLinks(entityName).resolvedSymbol; if (!symbol) { checkQualifiedName(entityName); @@ -28770,16 +29790,16 @@ var ts; } } else if (isTypeReferenceIdentifier(entityName)) { - var meaning = entityName.parent.kind === 153 /* TypeReference */ ? 793056 /* Type */ : 1536 /* Namespace */; + var meaning = entityName.parent.kind === 154 /* TypeReference */ ? 793056 /* Type */ : 1536 /* Namespace */; // Include aliases in the meaning, this ensures that we do not follow aliases to where they point and instead // return the alias symbol. meaning |= 8388608 /* Alias */; return resolveEntityName(entityName, meaning); } - else if (entityName.parent.kind === 242 /* JsxAttribute */) { + else if (entityName.parent.kind === 245 /* JsxAttribute */) { return getJsxAttributePropertySymbol(entityName.parent); } - if (entityName.parent.kind === 152 /* TypePredicate */) { + if (entityName.parent.kind === 153 /* TypePredicate */) { return resolveEntityName(entityName, /*meaning*/ 1 /* FunctionScopedVariable */); } // Do we want to return undefined here? @@ -28796,12 +29816,12 @@ var ts; } if (node.kind === 69 /* Identifier */) { if (isInRightSideOfImportOrExportAssignment(node)) { - return node.parent.kind === 231 /* ExportAssignment */ + return node.parent.kind === 234 /* ExportAssignment */ ? getSymbolOfEntityNameOrPropertyAccessExpression(node) : getSymbolOfPartOfRightHandSideOfImportEquals(node); } - else if (node.parent.kind === 167 /* BindingElement */ && - node.parent.parent.kind === 165 /* ObjectBindingPattern */ && + else if (node.parent.kind === 168 /* BindingElement */ && + node.parent.parent.kind === 166 /* ObjectBindingPattern */ && node === node.parent.propertyName) { var typeOfPattern = getTypeOfNode(node.parent.parent); var propertyDeclaration = typeOfPattern && getPropertyOfType(typeOfPattern, node.text); @@ -28812,19 +29832,19 @@ var ts; } switch (node.kind) { case 69 /* Identifier */: - case 170 /* PropertyAccessExpression */: - case 137 /* QualifiedName */: + case 171 /* PropertyAccessExpression */: + case 138 /* QualifiedName */: return getSymbolOfEntityNameOrPropertyAccessExpression(node); case 97 /* ThisKeyword */: case 95 /* SuperKeyword */: var type = ts.isExpression(node) ? checkExpression(node) : getTypeFromTypeNode(node); return type.symbol; - case 163 /* ThisType */: + case 164 /* ThisType */: return getTypeFromTypeNode(node).symbol; case 121 /* ConstructorKeyword */: // constructor keyword for an overload, should take us to the definition if it exist var constructorDeclaration = node.parent; - if (constructorDeclaration && constructorDeclaration.kind === 146 /* Constructor */) { + if (constructorDeclaration && constructorDeclaration.kind === 147 /* Constructor */) { return constructorDeclaration.parent.symbol; } return undefined; @@ -28832,14 +29852,14 @@ var ts; // External module name in an import declaration if ((ts.isExternalModuleImportEqualsDeclaration(node.parent.parent) && ts.getExternalModuleImportEqualsDeclarationExpression(node.parent.parent) === node) || - ((node.parent.kind === 226 /* ImportDeclaration */ || node.parent.kind === 232 /* ExportDeclaration */) && + ((node.parent.kind === 229 /* ImportDeclaration */ || node.parent.kind === 235 /* ExportDeclaration */) && node.parent.moduleSpecifier === node)) { return resolveExternalModuleName(node, node); } // Fall through case 8 /* NumericLiteral */: // index access - if (node.parent.kind === 171 /* ElementAccessExpression */ && node.parent.argumentExpression === node) { + if (node.parent.kind === 172 /* ElementAccessExpression */ && node.parent.argumentExpression === node) { var objectType = checkExpression(node.parent.expression); if (objectType === unknownType) return undefined; @@ -28856,7 +29876,7 @@ var ts; // The function returns a value symbol of an identifier in the short-hand property assignment. // This is necessary as an identifier in short-hand property assignment can contains two meaning: // property name and property value. - if (location && location.kind === 250 /* ShorthandPropertyAssignment */) { + if (location && location.kind === 253 /* ShorthandPropertyAssignment */) { return resolveEntityName(location.name, 107455 /* Value */ | 8388608 /* Alias */); } return undefined; @@ -28944,9 +29964,9 @@ var ts; function getRootSymbols(symbol) { if (symbol.flags & 268435456 /* SyntheticProperty */) { var symbols_3 = []; - var name_17 = symbol.name; + var name_19 = symbol.name; ts.forEach(getSymbolLinks(symbol).containingType.types, function (t) { - var symbol = getPropertyOfType(t, name_17); + var symbol = getPropertyOfType(t, name_19); if (symbol) { symbols_3.push(symbol); } @@ -29006,11 +30026,11 @@ var ts; } var parentSymbol = getParentOfSymbol(symbol); if (parentSymbol) { - if (parentSymbol.flags & 512 /* ValueModule */ && parentSymbol.valueDeclaration.kind === 252 /* SourceFile */) { + if (parentSymbol.flags & 512 /* ValueModule */ && parentSymbol.valueDeclaration.kind === 255 /* SourceFile */) { return parentSymbol.valueDeclaration; } for (var n = node.parent; n; n = n.parent) { - if ((n.kind === 222 /* ModuleDeclaration */ || n.kind === 221 /* EnumDeclaration */) && getSymbolOfNode(n) === parentSymbol) { + if ((n.kind === 224 /* ModuleDeclaration */ || n.kind === 223 /* EnumDeclaration */) && getSymbolOfNode(n) === parentSymbol) { return n; } } @@ -29052,7 +30072,7 @@ var ts; // they will not collide with anything var isDeclaredInLoop = nodeLinks_1.flags & 262144 /* BlockScopedBindingInLoop */; var inLoopInitializer = ts.isIterationStatement(container, /*lookInLabeledStatements*/ false); - var inLoopBodyBlock = container.kind === 196 /* Block */ && ts.isIterationStatement(container.parent, /*lookInLabeledStatements*/ false); + var inLoopBodyBlock = container.kind === 198 /* Block */ && ts.isIterationStatement(container.parent, /*lookInLabeledStatements*/ false); links.isDeclarationWithCollidingName = !ts.isBlockScopedContainerTopLevel(container) && (!isDeclaredInLoop || (!inLoopInitializer && !inLoopBodyBlock)); } else { @@ -29078,22 +30098,22 @@ var ts; } function isValueAliasDeclaration(node) { switch (node.kind) { - case 225 /* ImportEqualsDeclaration */: - case 227 /* ImportClause */: - case 228 /* NamespaceImport */: - case 230 /* ImportSpecifier */: - case 234 /* ExportSpecifier */: + case 228 /* ImportEqualsDeclaration */: + case 230 /* ImportClause */: + case 231 /* NamespaceImport */: + case 233 /* ImportSpecifier */: + case 237 /* ExportSpecifier */: return isAliasResolvedToValue(getSymbolOfNode(node)); - case 232 /* ExportDeclaration */: + case 235 /* ExportDeclaration */: var exportClause = node.exportClause; return exportClause && ts.forEach(exportClause.elements, isValueAliasDeclaration); - case 231 /* ExportAssignment */: + case 234 /* ExportAssignment */: return node.expression && node.expression.kind === 69 /* Identifier */ ? isAliasResolvedToValue(getSymbolOfNode(node)) : true; } return false; } function isTopLevelValueImportEqualsWithEntityName(node) { - if (node.parent.kind !== 252 /* SourceFile */ || !ts.isInternalModuleImportEqualsDeclaration(node)) { + if (node.parent.kind !== 255 /* SourceFile */ || !ts.isInternalModuleImportEqualsDeclaration(node)) { // parent is not source file or it is not reference to internal module return false; } @@ -29155,7 +30175,7 @@ var ts; return getNodeLinks(node).enumMemberValue; } function getConstantValue(node) { - if (node.kind === 251 /* EnumMember */) { + if (node.kind === 254 /* EnumMember */) { return getEnumMemberValue(node); } var symbol = getNodeLinks(node).resolvedSymbol; @@ -29231,9 +30251,15 @@ var ts; getSymbolDisplayBuilder().buildTypeDisplay(getReturnTypeOfSignature(signature), writer, enclosingDeclaration, flags); } function writeTypeOfExpression(expr, enclosingDeclaration, flags, writer) { - var type = getTypeOfExpression(expr); + var type = getWidenedType(getTypeOfExpression(expr)); getSymbolDisplayBuilder().buildTypeDisplay(type, writer, enclosingDeclaration, flags); } + function writeBaseConstructorTypeOfClass(node, enclosingDeclaration, flags, writer) { + var classType = getDeclaredTypeOfSymbol(getSymbolOfNode(node)); + resolveBaseTypesOfClass(classType); + var baseType = classType.resolvedBaseTypes.length ? classType.resolvedBaseTypes[0] : unknownType; + getSymbolDisplayBuilder().buildTypeDisplay(baseType, writer, enclosingDeclaration, flags); + } function hasGlobalName(name) { return ts.hasProperty(globals, name); } @@ -29263,6 +30289,7 @@ var ts; writeTypeOfDeclaration: writeTypeOfDeclaration, writeReturnTypeOfSignatureDeclaration: writeReturnTypeOfSignatureDeclaration, writeTypeOfExpression: writeTypeOfExpression, + writeBaseConstructorTypeOfClass: writeBaseConstructorTypeOfClass, isSymbolAccessible: isSymbolAccessible, isEntityNameVisible: isEntityNameVisible, getConstantValue: getConstantValue, @@ -29281,7 +30308,7 @@ var ts; if (!moduleSymbol) { return undefined; } - return ts.getDeclarationOfKind(moduleSymbol, 252 /* SourceFile */); + return ts.getDeclarationOfKind(moduleSymbol, 255 /* SourceFile */); } function initializeTypeChecker() { // Bind all source files and propagate errors @@ -29297,6 +30324,9 @@ var ts; if (file.moduleAugmentations.length) { (augmentations || (augmentations = [])).push(file.moduleAugmentations); } + if (file.wasReferenced && file.symbol && file.symbol.globalExports) { + mergeSymbolTable(globals, file.symbol.globalExports); + } }); if (augmentations) { // merge module augmentations. @@ -29328,6 +30358,7 @@ var ts; getGlobalMethodDecoratorType = ts.memoize(function () { return getGlobalType("MethodDecorator"); }); getGlobalParameterDecoratorType = ts.memoize(function () { return getGlobalType("ParameterDecorator"); }); getGlobalTypedPropertyDescriptorType = ts.memoize(function () { return getGlobalType("TypedPropertyDescriptor", /*arity*/ 1); }); + getGlobalESSymbolConstructorSymbol = ts.memoize(function () { return getGlobalValueSymbol("Symbol"); }); getGlobalPromiseType = ts.memoize(function () { return getGlobalType("Promise", /*arity*/ 1); }); tryGetGlobalPromiseType = ts.memoize(function () { return getGlobalSymbol("Promise", 793056 /* Type */, /*diagnostic*/ undefined) && getGlobalPromiseType(); }); getGlobalPromiseLikeType = ts.memoize(function () { return getGlobalType("PromiseLike", /*arity*/ 1); }); @@ -29335,26 +30366,18 @@ var ts; getGlobalPromiseConstructorSymbol = ts.memoize(function () { return getGlobalValueSymbol("Promise"); }); getGlobalPromiseConstructorLikeType = ts.memoize(function () { return getGlobalType("PromiseConstructorLike"); }); getGlobalThenableType = ts.memoize(createThenableType); - // If we're in ES6 mode, load the TemplateStringsArray. - // Otherwise, default to 'unknown' for the purposes of type checking in LS scenarios. + getGlobalTemplateStringsArrayType = ts.memoize(function () { return getGlobalType("TemplateStringsArray"); }); if (languageVersion >= 2 /* ES6 */) { - globalTemplateStringsArrayType = getGlobalType("TemplateStringsArray"); - globalESSymbolType = getGlobalType("Symbol"); - globalESSymbolConstructorSymbol = getGlobalValueSymbol("Symbol"); - globalIterableType = getGlobalType("Iterable", /*arity*/ 1); - globalIteratorType = getGlobalType("Iterator", /*arity*/ 1); - globalIterableIteratorType = getGlobalType("IterableIterator", /*arity*/ 1); + getGlobalESSymbolType = ts.memoize(function () { return getGlobalType("Symbol"); }); + getGlobalIterableType = ts.memoize(function () { return getGlobalType("Iterable", /*arity*/ 1); }); + getGlobalIteratorType = ts.memoize(function () { return getGlobalType("Iterator", /*arity*/ 1); }); + getGlobalIterableIteratorType = ts.memoize(function () { return getGlobalType("IterableIterator", /*arity*/ 1); }); } else { - globalTemplateStringsArrayType = unknownType; - // Consider putting Symbol interface in lib.d.ts. On the plus side, putting it in lib.d.ts would make it - // extensible for Polyfilling Symbols. But putting it into lib.d.ts could also break users that have - // a global Symbol already, particularly if it is a class. - globalESSymbolType = createAnonymousType(undefined, emptySymbols, emptyArray, emptyArray, undefined, undefined); - globalESSymbolConstructorSymbol = undefined; - globalIterableType = emptyGenericType; - globalIteratorType = emptyGenericType; - globalIterableIteratorType = emptyGenericType; + getGlobalESSymbolType = ts.memoize(function () { return emptyObjectType; }); + getGlobalIterableType = ts.memoize(function () { return emptyGenericType; }); + getGlobalIteratorType = ts.memoize(function () { return emptyGenericType; }); + getGlobalIterableIteratorType = ts.memoize(function () { return emptyGenericType; }); } anyArrayType = createArrayType(anyType); var symbol = getGlobalSymbol("ReadonlyArray", 793056 /* Type */, /*diagnostic*/ undefined); @@ -29385,14 +30408,14 @@ var ts; return false; } if (!ts.nodeCanBeDecorated(node)) { - if (node.kind === 145 /* MethodDeclaration */ && !ts.nodeIsPresent(node.body)) { + if (node.kind === 146 /* MethodDeclaration */ && !ts.nodeIsPresent(node.body)) { return grammarErrorOnFirstToken(node, ts.Diagnostics.A_decorator_can_only_decorate_a_method_implementation_not_an_overload); } else { return grammarErrorOnFirstToken(node, ts.Diagnostics.Decorators_are_not_valid_here); } } - else if (node.kind === 147 /* GetAccessor */ || node.kind === 148 /* SetAccessor */) { + else if (node.kind === 148 /* GetAccessor */ || node.kind === 149 /* SetAccessor */) { var accessors = ts.getAllAccessorDeclarations(node.parent.members, node); if (accessors.firstAccessor.decorators && node === accessors.secondAccessor) { return grammarErrorOnFirstToken(node, ts.Diagnostics.Decorators_cannot_be_applied_to_multiple_get_Slashset_accessors_of_the_same_name); @@ -29402,38 +30425,38 @@ var ts; } function checkGrammarModifiers(node) { switch (node.kind) { - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: - case 146 /* Constructor */: - case 143 /* PropertyDeclaration */: - case 142 /* PropertySignature */: - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: - case 151 /* IndexSignature */: - case 222 /* ModuleDeclaration */: - case 226 /* ImportDeclaration */: - case 225 /* ImportEqualsDeclaration */: - case 232 /* ExportDeclaration */: - case 231 /* ExportAssignment */: - case 140 /* Parameter */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: + case 147 /* Constructor */: + case 144 /* PropertyDeclaration */: + case 143 /* PropertySignature */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: + case 152 /* IndexSignature */: + case 224 /* ModuleDeclaration */: + case 229 /* ImportDeclaration */: + case 228 /* ImportEqualsDeclaration */: + case 235 /* ExportDeclaration */: + case 234 /* ExportAssignment */: + case 141 /* Parameter */: break; - case 217 /* FunctionDeclaration */: + case 219 /* FunctionDeclaration */: if (node.modifiers && (node.modifiers.length > 1 || node.modifiers[0].kind !== 118 /* AsyncKeyword */) && - node.parent.kind !== 223 /* ModuleBlock */ && node.parent.kind !== 252 /* SourceFile */) { + node.parent.kind !== 225 /* ModuleBlock */ && node.parent.kind !== 255 /* SourceFile */) { return grammarErrorOnFirstToken(node, ts.Diagnostics.Modifiers_cannot_appear_here); } break; - case 218 /* ClassDeclaration */: - case 219 /* InterfaceDeclaration */: - case 197 /* VariableStatement */: - case 220 /* TypeAliasDeclaration */: - if (node.modifiers && node.parent.kind !== 223 /* ModuleBlock */ && node.parent.kind !== 252 /* SourceFile */) { + case 220 /* ClassDeclaration */: + case 221 /* InterfaceDeclaration */: + case 199 /* VariableStatement */: + case 222 /* TypeAliasDeclaration */: + if (node.modifiers && node.parent.kind !== 225 /* ModuleBlock */ && node.parent.kind !== 255 /* SourceFile */) { return grammarErrorOnFirstToken(node, ts.Diagnostics.Modifiers_cannot_appear_here); } break; - case 221 /* EnumDeclaration */: + case 223 /* EnumDeclaration */: if (node.modifiers && (node.modifiers.length > 1 || node.modifiers[0].kind !== 74 /* ConstKeyword */) && - node.parent.kind !== 223 /* ModuleBlock */ && node.parent.kind !== 252 /* SourceFile */) { + node.parent.kind !== 225 /* ModuleBlock */ && node.parent.kind !== 255 /* SourceFile */) { return grammarErrorOnFirstToken(node, ts.Diagnostics.Modifiers_cannot_appear_here); } break; @@ -29448,16 +30471,16 @@ var ts; for (var _i = 0, _a = node.modifiers; _i < _a.length; _i++) { var modifier = _a[_i]; if (modifier.kind !== 127 /* ReadonlyKeyword */) { - if (node.kind === 142 /* PropertySignature */ || node.kind === 144 /* MethodSignature */) { + if (node.kind === 143 /* PropertySignature */ || node.kind === 145 /* MethodSignature */) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_type_member, ts.tokenToString(modifier.kind)); } - if (node.kind === 151 /* IndexSignature */) { + if (node.kind === 152 /* IndexSignature */) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_an_index_signature, ts.tokenToString(modifier.kind)); } } switch (modifier.kind) { case 74 /* ConstKeyword */: - if (node.kind !== 221 /* EnumDeclaration */ && node.parent.kind === 218 /* ClassDeclaration */) { + if (node.kind !== 223 /* EnumDeclaration */ && node.parent.kind === 220 /* ClassDeclaration */) { return grammarErrorOnNode(node, ts.Diagnostics.A_class_member_cannot_have_the_0_keyword, ts.tokenToString(74 /* ConstKeyword */)); } break; @@ -29483,7 +30506,7 @@ var ts; else if (flags & 256 /* Async */) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_must_precede_1_modifier, text, "async"); } - else if (node.parent.kind === 223 /* ModuleBlock */ || node.parent.kind === 252 /* SourceFile */) { + else if (node.parent.kind === 225 /* ModuleBlock */ || node.parent.kind === 255 /* SourceFile */) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_module_or_namespace_element, text); } else if (flags & 128 /* Abstract */) { @@ -29506,10 +30529,10 @@ var ts; else if (flags & 256 /* Async */) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_must_precede_1_modifier, "static", "async"); } - else if (node.parent.kind === 223 /* ModuleBlock */ || node.parent.kind === 252 /* SourceFile */) { + else if (node.parent.kind === 225 /* ModuleBlock */ || node.parent.kind === 255 /* SourceFile */) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_module_or_namespace_element, "static"); } - else if (node.kind === 140 /* Parameter */) { + else if (node.kind === 141 /* Parameter */) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_parameter, "static"); } else if (flags & 128 /* Abstract */) { @@ -29522,7 +30545,7 @@ var ts; if (flags & 64 /* Readonly */) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_already_seen, "readonly"); } - else if (node.kind !== 143 /* PropertyDeclaration */ && node.kind !== 142 /* PropertySignature */ && node.kind !== 151 /* IndexSignature */) { + else if (node.kind !== 144 /* PropertyDeclaration */ && node.kind !== 143 /* PropertySignature */ && node.kind !== 152 /* IndexSignature */) { return grammarErrorOnNode(modifier, ts.Diagnostics.readonly_modifier_can_only_appear_on_a_property_declaration_or_index_signature); } flags |= 64 /* Readonly */; @@ -29541,10 +30564,10 @@ var ts; else if (flags & 256 /* Async */) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_must_precede_1_modifier, "export", "async"); } - else if (node.parent.kind === 218 /* ClassDeclaration */) { + else if (node.parent.kind === 220 /* ClassDeclaration */) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_class_element, "export"); } - else if (node.kind === 140 /* Parameter */) { + else if (node.kind === 141 /* Parameter */) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_parameter, "export"); } flags |= 1 /* Export */; @@ -29556,13 +30579,13 @@ var ts; else if (flags & 256 /* Async */) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_be_used_in_an_ambient_context, "async"); } - else if (node.parent.kind === 218 /* ClassDeclaration */) { + else if (node.parent.kind === 220 /* ClassDeclaration */) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_class_element, "declare"); } - else if (node.kind === 140 /* Parameter */) { + else if (node.kind === 141 /* Parameter */) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_parameter, "declare"); } - else if (ts.isInAmbientContext(node.parent) && node.parent.kind === 223 /* ModuleBlock */) { + else if (ts.isInAmbientContext(node.parent) && node.parent.kind === 225 /* ModuleBlock */) { return grammarErrorOnNode(modifier, ts.Diagnostics.A_declare_modifier_cannot_be_used_in_an_already_ambient_context); } flags |= 2 /* Ambient */; @@ -29572,14 +30595,14 @@ var ts; if (flags & 128 /* Abstract */) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_already_seen, "abstract"); } - if (node.kind !== 218 /* ClassDeclaration */) { - if (node.kind !== 145 /* MethodDeclaration */ && - node.kind !== 143 /* PropertyDeclaration */ && - node.kind !== 147 /* GetAccessor */ && - node.kind !== 148 /* SetAccessor */) { + if (node.kind !== 220 /* ClassDeclaration */) { + if (node.kind !== 146 /* MethodDeclaration */ && + node.kind !== 144 /* PropertyDeclaration */ && + node.kind !== 148 /* GetAccessor */ && + node.kind !== 149 /* SetAccessor */) { return grammarErrorOnNode(modifier, ts.Diagnostics.abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration); } - if (!(node.parent.kind === 218 /* ClassDeclaration */ && node.parent.flags & 128 /* Abstract */)) { + if (!(node.parent.kind === 220 /* ClassDeclaration */ && node.parent.flags & 128 /* Abstract */)) { return grammarErrorOnNode(modifier, ts.Diagnostics.Abstract_methods_can_only_appear_within_an_abstract_class); } if (flags & 32 /* Static */) { @@ -29598,7 +30621,7 @@ var ts; else if (flags & 2 /* Ambient */ || ts.isInAmbientContext(node.parent)) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_be_used_in_an_ambient_context, "async"); } - else if (node.kind === 140 /* Parameter */) { + else if (node.kind === 141 /* Parameter */) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_parameter, "async"); } flags |= 256 /* Async */; @@ -29606,7 +30629,7 @@ var ts; break; } } - if (node.kind === 146 /* Constructor */) { + if (node.kind === 147 /* Constructor */) { if (flags & 32 /* Static */) { return grammarErrorOnNode(lastStatic, ts.Diagnostics._0_modifier_cannot_appear_on_a_constructor_declaration, "static"); } @@ -29621,10 +30644,10 @@ var ts; } return; } - else if ((node.kind === 226 /* ImportDeclaration */ || node.kind === 225 /* ImportEqualsDeclaration */) && flags & 2 /* Ambient */) { + else if ((node.kind === 229 /* ImportDeclaration */ || node.kind === 228 /* ImportEqualsDeclaration */) && flags & 2 /* Ambient */) { return grammarErrorOnNode(lastDeclare, ts.Diagnostics.A_0_modifier_cannot_be_used_with_an_import_declaration, "declare"); } - else if (node.kind === 140 /* Parameter */ && (flags & 28 /* AccessibilityModifier */) && ts.isBindingPattern(node.name)) { + else if (node.kind === 141 /* Parameter */ && (flags & 28 /* AccessibilityModifier */) && ts.isBindingPattern(node.name)) { return grammarErrorOnNode(node, ts.Diagnostics.A_parameter_property_may_not_be_a_binding_pattern); } if (flags & 256 /* Async */) { @@ -29636,10 +30659,10 @@ var ts; return grammarErrorOnNode(asyncModifier, ts.Diagnostics.Async_functions_are_only_available_when_targeting_ECMAScript_6_and_higher); } switch (node.kind) { - case 145 /* MethodDeclaration */: - case 217 /* FunctionDeclaration */: - case 177 /* FunctionExpression */: - case 178 /* ArrowFunction */: + case 146 /* MethodDeclaration */: + case 219 /* FunctionDeclaration */: + case 178 /* FunctionExpression */: + case 179 /* ArrowFunction */: if (!node.asteriskToken) { return false; } @@ -29705,7 +30728,7 @@ var ts; checkGrammarParameterList(node.parameters) || checkGrammarArrowFunction(node, file); } function checkGrammarArrowFunction(node, file) { - if (node.kind === 178 /* ArrowFunction */) { + if (node.kind === 179 /* ArrowFunction */) { var arrowFunction = node; var startLine = ts.getLineAndCharacterOfPosition(file, arrowFunction.equalsGreaterThanToken.pos).line; var endLine = ts.getLineAndCharacterOfPosition(file, arrowFunction.equalsGreaterThanToken.end).line; @@ -29768,7 +30791,7 @@ var ts; var sourceFile = ts.getSourceFileOfNode(node); for (var _i = 0, args_1 = args; _i < args_1.length; _i++) { var arg = args_1[_i]; - if (arg.kind === 191 /* OmittedExpression */) { + if (arg.kind === 192 /* OmittedExpression */) { return grammarErrorAtPos(sourceFile, arg.pos, 0, ts.Diagnostics.Argument_expression_expected); } } @@ -29842,19 +30865,19 @@ var ts; } function checkGrammarComputedPropertyName(node) { // If node is not a computedPropertyName, just skip the grammar checking - if (node.kind !== 138 /* ComputedPropertyName */) { + if (node.kind !== 139 /* ComputedPropertyName */) { return false; } var computedPropertyName = node; - if (computedPropertyName.expression.kind === 185 /* BinaryExpression */ && computedPropertyName.expression.operatorToken.kind === 24 /* CommaToken */) { + if (computedPropertyName.expression.kind === 186 /* BinaryExpression */ && computedPropertyName.expression.operatorToken.kind === 24 /* CommaToken */) { return grammarErrorOnNode(computedPropertyName.expression, ts.Diagnostics.A_comma_expression_is_not_allowed_in_a_computed_property_name); } } function checkGrammarForGenerator(node) { if (node.asteriskToken) { - ts.Debug.assert(node.kind === 217 /* FunctionDeclaration */ || - node.kind === 177 /* FunctionExpression */ || - node.kind === 145 /* MethodDeclaration */); + ts.Debug.assert(node.kind === 219 /* FunctionDeclaration */ || + node.kind === 178 /* FunctionExpression */ || + node.kind === 146 /* MethodDeclaration */); if (ts.isInAmbientContext(node)) { return grammarErrorOnNode(node.asteriskToken, ts.Diagnostics.Generators_are_not_allowed_in_an_ambient_context); } @@ -29878,21 +30901,21 @@ var ts; var SetAccessor = 4; var GetOrSetAccessor = GetAccessor | SetAccessor; var _loop_1 = function(prop) { - var name_18 = prop.name; - if (prop.kind === 191 /* OmittedExpression */ || - name_18.kind === 138 /* ComputedPropertyName */) { + var name_20 = prop.name; + if (prop.kind === 192 /* OmittedExpression */ || + name_20.kind === 139 /* ComputedPropertyName */) { // If the name is not a ComputedPropertyName, the grammar checking will skip it - checkGrammarComputedPropertyName(name_18); + checkGrammarComputedPropertyName(name_20); return "continue"; } - if (prop.kind === 250 /* ShorthandPropertyAssignment */ && !inDestructuring && prop.objectAssignmentInitializer) { + if (prop.kind === 253 /* ShorthandPropertyAssignment */ && !inDestructuring && prop.objectAssignmentInitializer) { // having objectAssignmentInitializer is only valid in ObjectAssignmentPattern // outside of destructuring it is a syntax error return { value: grammarErrorOnNode(prop.equalsToken, ts.Diagnostics.can_only_be_used_in_an_object_literal_property_inside_a_destructuring_assignment) }; } // Modifiers are never allowed on properties except for 'async' on a method declaration ts.forEach(prop.modifiers, function (mod) { - if (mod.kind !== 118 /* AsyncKeyword */ || prop.kind !== 145 /* MethodDeclaration */) { + if (mod.kind !== 118 /* AsyncKeyword */ || prop.kind !== 146 /* MethodDeclaration */) { grammarErrorOnNode(mod, ts.Diagnostics._0_modifier_cannot_be_used_here, ts.getTextOfNode(mod)); } }); @@ -29905,44 +30928,44 @@ var ts; // d.IsAccessorDescriptor(previous) is true and IsAccessorDescriptor(propId.descriptor) is true // and either both previous and propId.descriptor have[[Get]] fields or both previous and propId.descriptor have[[Set]] fields var currentKind = void 0; - if (prop.kind === 249 /* PropertyAssignment */ || prop.kind === 250 /* ShorthandPropertyAssignment */) { + if (prop.kind === 252 /* PropertyAssignment */ || prop.kind === 253 /* ShorthandPropertyAssignment */) { // Grammar checking for computedPropertyName and shorthandPropertyAssignment checkGrammarForInvalidQuestionMark(prop, prop.questionToken, ts.Diagnostics.An_object_member_cannot_be_declared_optional); - if (name_18.kind === 8 /* NumericLiteral */) { - checkGrammarNumericLiteral(name_18); + if (name_20.kind === 8 /* NumericLiteral */) { + checkGrammarNumericLiteral(name_20); } currentKind = Property; } - else if (prop.kind === 145 /* MethodDeclaration */) { + else if (prop.kind === 146 /* MethodDeclaration */) { currentKind = Property; } - else if (prop.kind === 147 /* GetAccessor */) { + else if (prop.kind === 148 /* GetAccessor */) { currentKind = GetAccessor; } - else if (prop.kind === 148 /* SetAccessor */) { + else if (prop.kind === 149 /* SetAccessor */) { currentKind = SetAccessor; } else { ts.Debug.fail("Unexpected syntax kind:" + prop.kind); } - if (!ts.hasProperty(seen, name_18.text)) { - seen[name_18.text] = currentKind; + if (!ts.hasProperty(seen, name_20.text)) { + seen[name_20.text] = currentKind; } else { - var existingKind = seen[name_18.text]; + var existingKind = seen[name_20.text]; if (currentKind === Property && existingKind === Property) { return "continue"; } else if ((currentKind & GetOrSetAccessor) && (existingKind & GetOrSetAccessor)) { if (existingKind !== GetOrSetAccessor && currentKind !== existingKind) { - seen[name_18.text] = currentKind | existingKind; + seen[name_20.text] = currentKind | existingKind; } else { - return { value: grammarErrorOnNode(name_18, ts.Diagnostics.An_object_literal_cannot_have_multiple_get_Slashset_accessors_with_the_same_name) }; + return { value: grammarErrorOnNode(name_20, ts.Diagnostics.An_object_literal_cannot_have_multiple_get_Slashset_accessors_with_the_same_name) }; } } else { - return { value: grammarErrorOnNode(name_18, ts.Diagnostics.An_object_literal_cannot_have_property_and_accessor_with_the_same_name) }; + return { value: grammarErrorOnNode(name_20, ts.Diagnostics.An_object_literal_cannot_have_property_and_accessor_with_the_same_name) }; } } }; @@ -29950,26 +30973,25 @@ var ts; var prop = _a[_i]; var state_2 = _loop_1(prop); if (typeof state_2 === "object") return state_2.value; - if (state_2 === "continue") continue; } } function checkGrammarJsxElement(node) { var seen = {}; for (var _i = 0, _a = node.attributes; _i < _a.length; _i++) { var attr = _a[_i]; - if (attr.kind === 243 /* JsxSpreadAttribute */) { + if (attr.kind === 246 /* JsxSpreadAttribute */) { continue; } var jsxAttr = attr; - var name_19 = jsxAttr.name; - if (!ts.hasProperty(seen, name_19.text)) { - seen[name_19.text] = true; + var name_21 = jsxAttr.name; + if (!ts.hasProperty(seen, name_21.text)) { + seen[name_21.text] = true; } else { - return grammarErrorOnNode(name_19, ts.Diagnostics.JSX_elements_cannot_have_multiple_attributes_with_the_same_name); + return grammarErrorOnNode(name_21, ts.Diagnostics.JSX_elements_cannot_have_multiple_attributes_with_the_same_name); } var initializer = jsxAttr.initializer; - if (initializer && initializer.kind === 244 /* JsxExpression */ && !initializer.expression) { + if (initializer && initializer.kind === 247 /* JsxExpression */ && !initializer.expression) { return grammarErrorOnNode(jsxAttr.initializer, ts.Diagnostics.JSX_attributes_must_only_be_assigned_a_non_empty_expression); } } @@ -29978,7 +31000,7 @@ var ts; if (checkGrammarStatementInAmbientContext(forInOrOfStatement)) { return true; } - if (forInOrOfStatement.initializer.kind === 216 /* VariableDeclarationList */) { + if (forInOrOfStatement.initializer.kind === 218 /* VariableDeclarationList */) { var variableList = forInOrOfStatement.initializer; if (!checkGrammarVariableDeclarationList(variableList)) { var declarations = variableList.declarations; @@ -29993,20 +31015,20 @@ var ts; return false; } if (declarations.length > 1) { - var diagnostic = forInOrOfStatement.kind === 204 /* ForInStatement */ + var diagnostic = forInOrOfStatement.kind === 206 /* ForInStatement */ ? ts.Diagnostics.Only_a_single_variable_declaration_is_allowed_in_a_for_in_statement : ts.Diagnostics.Only_a_single_variable_declaration_is_allowed_in_a_for_of_statement; return grammarErrorOnFirstToken(variableList.declarations[1], diagnostic); } var firstDeclaration = declarations[0]; if (firstDeclaration.initializer) { - var diagnostic = forInOrOfStatement.kind === 204 /* ForInStatement */ + var diagnostic = forInOrOfStatement.kind === 206 /* ForInStatement */ ? ts.Diagnostics.The_variable_declaration_of_a_for_in_statement_cannot_have_an_initializer : ts.Diagnostics.The_variable_declaration_of_a_for_of_statement_cannot_have_an_initializer; return grammarErrorOnNode(firstDeclaration.name, diagnostic); } if (firstDeclaration.type) { - var diagnostic = forInOrOfStatement.kind === 204 /* ForInStatement */ + var diagnostic = forInOrOfStatement.kind === 206 /* ForInStatement */ ? ts.Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_use_a_type_annotation : ts.Diagnostics.The_left_hand_side_of_a_for_of_statement_cannot_use_a_type_annotation; return grammarErrorOnNode(firstDeclaration, diagnostic); @@ -30029,10 +31051,10 @@ var ts; else if (accessor.typeParameters) { return grammarErrorOnNode(accessor.name, ts.Diagnostics.An_accessor_cannot_have_type_parameters); } - else if (kind === 147 /* GetAccessor */ && accessor.parameters.length) { + else if (kind === 148 /* GetAccessor */ && accessor.parameters.length) { return grammarErrorOnNode(accessor.name, ts.Diagnostics.A_get_accessor_cannot_have_parameters); } - else if (kind === 148 /* SetAccessor */) { + else if (kind === 149 /* SetAccessor */) { if (accessor.type) { return grammarErrorOnNode(accessor.name, ts.Diagnostics.A_set_accessor_cannot_have_a_return_type_annotation); } @@ -30067,7 +31089,7 @@ var ts; checkGrammarForGenerator(node)) { return true; } - if (node.parent.kind === 169 /* ObjectLiteralExpression */) { + if (node.parent.kind === 170 /* ObjectLiteralExpression */) { if (checkGrammarForInvalidQuestionMark(node, node.questionToken, ts.Diagnostics.A_class_member_cannot_be_declared_optional)) { return true; } @@ -30091,10 +31113,10 @@ var ts; return checkGrammarForNonSymbolComputedProperty(node.name, ts.Diagnostics.A_computed_property_name_in_a_method_overload_must_directly_refer_to_a_built_in_symbol); } } - else if (node.parent.kind === 219 /* InterfaceDeclaration */) { + else if (node.parent.kind === 221 /* InterfaceDeclaration */) { return checkGrammarForNonSymbolComputedProperty(node.name, ts.Diagnostics.A_computed_property_name_in_an_interface_must_directly_refer_to_a_built_in_symbol); } - else if (node.parent.kind === 157 /* TypeLiteral */) { + else if (node.parent.kind === 158 /* TypeLiteral */) { return checkGrammarForNonSymbolComputedProperty(node.name, ts.Diagnostics.A_computed_property_name_in_a_type_literal_must_directly_refer_to_a_built_in_symbol); } } @@ -30105,11 +31127,11 @@ var ts; return grammarErrorOnNode(node, ts.Diagnostics.Jump_target_cannot_cross_function_boundary); } switch (current.kind) { - case 211 /* LabeledStatement */: + case 213 /* LabeledStatement */: if (node.label && current.label.text === node.label.text) { // found matching label - verify that label usage is correct // continue can only target labels that are on iteration statements - var isMisplacedContinueLabel = node.kind === 206 /* ContinueStatement */ + var isMisplacedContinueLabel = node.kind === 208 /* ContinueStatement */ && !ts.isIterationStatement(current.statement, /*lookInLabeledStatement*/ true); if (isMisplacedContinueLabel) { return grammarErrorOnNode(node, ts.Diagnostics.A_continue_statement_can_only_jump_to_a_label_of_an_enclosing_iteration_statement); @@ -30117,8 +31139,8 @@ var ts; return false; } break; - case 210 /* SwitchStatement */: - if (node.kind === 207 /* BreakStatement */ && !node.label) { + case 212 /* SwitchStatement */: + if (node.kind === 209 /* BreakStatement */ && !node.label) { // unlabeled break within switch statement - ok return false; } @@ -30133,13 +31155,13 @@ var ts; current = current.parent; } if (node.label) { - var message = node.kind === 207 /* BreakStatement */ + var message = node.kind === 209 /* BreakStatement */ ? ts.Diagnostics.A_break_statement_can_only_jump_to_a_label_of_an_enclosing_statement : ts.Diagnostics.A_continue_statement_can_only_jump_to_a_label_of_an_enclosing_iteration_statement; return grammarErrorOnNode(node, message); } else { - var message = node.kind === 207 /* BreakStatement */ + var message = node.kind === 209 /* BreakStatement */ ? ts.Diagnostics.A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement : ts.Diagnostics.A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement; return grammarErrorOnNode(node, message); @@ -30151,7 +31173,7 @@ var ts; if (node !== ts.lastOrUndefined(elements)) { return grammarErrorOnNode(node, ts.Diagnostics.A_rest_element_must_be_last_in_an_array_destructuring_pattern); } - if (node.name.kind === 166 /* ArrayBindingPattern */ || node.name.kind === 165 /* ObjectBindingPattern */) { + if (node.name.kind === 167 /* ArrayBindingPattern */ || node.name.kind === 166 /* ObjectBindingPattern */) { return grammarErrorOnNode(node.name, ts.Diagnostics.A_rest_element_cannot_contain_a_binding_pattern); } if (node.initializer) { @@ -30161,7 +31183,7 @@ var ts; } } function checkGrammarVariableDeclaration(node) { - if (node.parent.parent.kind !== 204 /* ForInStatement */ && node.parent.parent.kind !== 205 /* ForOfStatement */) { + if (node.parent.parent.kind !== 206 /* ForInStatement */ && node.parent.parent.kind !== 207 /* ForOfStatement */) { if (ts.isInAmbientContext(node)) { if (node.initializer) { // Error on equals token which immediate precedes the initializer @@ -30197,7 +31219,7 @@ var ts; var elements = name.elements; for (var _i = 0, elements_2 = elements; _i < elements_2.length; _i++) { var element = elements_2[_i]; - if (element.kind !== 191 /* OmittedExpression */) { + if (element.kind !== 192 /* OmittedExpression */) { checkGrammarNameInLetOrConstDeclarations(element.name); } } @@ -30214,15 +31236,15 @@ var ts; } function allowLetAndConstDeclarations(parent) { switch (parent.kind) { - case 200 /* IfStatement */: - case 201 /* DoStatement */: - case 202 /* WhileStatement */: - case 209 /* WithStatement */: - case 203 /* ForStatement */: - case 204 /* ForInStatement */: - case 205 /* ForOfStatement */: + case 202 /* IfStatement */: + case 203 /* DoStatement */: + case 204 /* WhileStatement */: + case 211 /* WithStatement */: + case 205 /* ForStatement */: + case 206 /* ForInStatement */: + case 207 /* ForOfStatement */: return false; - case 211 /* LabeledStatement */: + case 213 /* LabeledStatement */: return allowLetAndConstDeclarations(parent.parent); } return true; @@ -30278,7 +31300,7 @@ var ts; return true; } } - else if (node.parent.kind === 219 /* InterfaceDeclaration */) { + else if (node.parent.kind === 221 /* InterfaceDeclaration */) { if (checkGrammarForNonSymbolComputedProperty(node.name, ts.Diagnostics.A_computed_property_name_in_an_interface_must_directly_refer_to_a_built_in_symbol)) { return true; } @@ -30286,7 +31308,7 @@ var ts; return grammarErrorOnNode(node.initializer, ts.Diagnostics.An_interface_property_cannot_have_an_initializer); } } - else if (node.parent.kind === 157 /* TypeLiteral */) { + else if (node.parent.kind === 158 /* TypeLiteral */) { if (checkGrammarForNonSymbolComputedProperty(node.name, ts.Diagnostics.A_computed_property_name_in_a_type_literal_must_directly_refer_to_a_built_in_symbol)) { return true; } @@ -30311,12 +31333,12 @@ var ts; // export_opt AmbientDeclaration // // TODO: The spec needs to be amended to reflect this grammar. - if (node.kind === 219 /* InterfaceDeclaration */ || - node.kind === 220 /* TypeAliasDeclaration */ || - node.kind === 226 /* ImportDeclaration */ || - node.kind === 225 /* ImportEqualsDeclaration */ || - node.kind === 232 /* ExportDeclaration */ || - node.kind === 231 /* ExportAssignment */ || + if (node.kind === 221 /* InterfaceDeclaration */ || + node.kind === 222 /* TypeAliasDeclaration */ || + node.kind === 229 /* ImportDeclaration */ || + node.kind === 228 /* ImportEqualsDeclaration */ || + node.kind === 235 /* ExportDeclaration */ || + node.kind === 234 /* ExportAssignment */ || (node.flags & 2 /* Ambient */) || (node.flags & (1 /* Export */ | 512 /* Default */))) { return false; @@ -30326,7 +31348,7 @@ var ts; function checkGrammarTopLevelElementsForRequiredDeclareModifier(file) { for (var _i = 0, _a = file.statements; _i < _a.length; _i++) { var decl = _a[_i]; - if (ts.isDeclaration(decl) || decl.kind === 197 /* VariableStatement */) { + if (ts.isDeclaration(decl) || decl.kind === 199 /* VariableStatement */) { if (checkGrammarTopLevelElementForRequiredDeclareModifier(decl)) { return true; } @@ -30352,7 +31374,7 @@ var ts; // to prevent noisiness. So use a bit on the block to indicate if // this has already been reported, and don't report if it has. // - if (node.parent.kind === 196 /* Block */ || node.parent.kind === 223 /* ModuleBlock */ || node.parent.kind === 252 /* SourceFile */) { + if (node.parent.kind === 198 /* Block */ || node.parent.kind === 225 /* ModuleBlock */ || node.parent.kind === 255 /* SourceFile */) { var links_1 = getNodeLinks(node.parent); // Check if the containing block ever report this error if (!links_1.hasReportedStatementInAmbientContext) { @@ -30708,7 +31730,7 @@ var ts; function getDeclarationDiagnostics(host, resolver, targetSourceFile) { var declarationDiagnostics = ts.createDiagnosticCollection(); ts.forEachExpectedEmitFile(host, getDeclarationDiagnosticsFromFile, targetSourceFile); - return declarationDiagnostics.getDiagnostics(targetSourceFile.fileName); + return declarationDiagnostics.getDiagnostics(targetSourceFile ? targetSourceFile.fileName : undefined); function getDeclarationDiagnosticsFromFile(_a, sources, isBundledEmit) { var declarationFilePath = _a.declarationFilePath; emitDeclarations(host, resolver, declarationDiagnostics, declarationFilePath, sources, isBundledEmit); @@ -30788,7 +31810,7 @@ var ts; var oldWriter = writer; ts.forEach(moduleElementDeclarationEmitInfo, function (aliasEmitInfo) { if (aliasEmitInfo.isVisible && !aliasEmitInfo.asynchronousOutput) { - ts.Debug.assert(aliasEmitInfo.node.kind === 226 /* ImportDeclaration */); + ts.Debug.assert(aliasEmitInfo.node.kind === 229 /* ImportDeclaration */); createAndSetNewTextWriterWithSymbolWriter(); ts.Debug.assert(aliasEmitInfo.indent === 0 || (aliasEmitInfo.indent === 1 && isBundledEmit)); for (var i = 0; i < aliasEmitInfo.indent; i++) { @@ -30857,10 +31879,10 @@ var ts; var oldWriter = writer; ts.forEach(nodes, function (declaration) { var nodeToCheck; - if (declaration.kind === 215 /* VariableDeclaration */) { + if (declaration.kind === 217 /* VariableDeclaration */) { nodeToCheck = declaration.parent.parent; } - else if (declaration.kind === 229 /* NamedImports */ || declaration.kind === 230 /* ImportSpecifier */ || declaration.kind === 227 /* ImportClause */) { + else if (declaration.kind === 232 /* NamedImports */ || declaration.kind === 233 /* ImportSpecifier */ || declaration.kind === 230 /* ImportClause */) { ts.Debug.fail("We should be getting ImportDeclaration instead to write"); } else { @@ -30878,7 +31900,7 @@ var ts; // Writing of function bar would mark alias declaration foo as visible but we haven't yet visited that declaration so do nothing, // we would write alias foo declaration when we visit it since it would now be marked as visible if (moduleElementEmitInfo) { - if (moduleElementEmitInfo.node.kind === 226 /* ImportDeclaration */) { + if (moduleElementEmitInfo.node.kind === 229 /* ImportDeclaration */) { // we have to create asynchronous output only after we have collected complete information // because it is possible to enable multiple bindings as asynchronously visible moduleElementEmitInfo.isVisible = true; @@ -30888,12 +31910,12 @@ var ts; for (var declarationIndent = moduleElementEmitInfo.indent; declarationIndent; declarationIndent--) { increaseIndent(); } - if (nodeToCheck.kind === 222 /* ModuleDeclaration */) { + if (nodeToCheck.kind === 224 /* ModuleDeclaration */) { ts.Debug.assert(asynchronousSubModuleDeclarationEmitInfo === undefined); asynchronousSubModuleDeclarationEmitInfo = []; } writeModuleElement(nodeToCheck); - if (nodeToCheck.kind === 222 /* ModuleDeclaration */) { + if (nodeToCheck.kind === 224 /* ModuleDeclaration */) { moduleElementEmitInfo.subModuleElementDeclarationEmitInfo = asynchronousSubModuleDeclarationEmitInfo; asynchronousSubModuleDeclarationEmitInfo = undefined; } @@ -31001,35 +32023,37 @@ var ts; case 120 /* BooleanKeyword */: case 132 /* SymbolKeyword */: case 103 /* VoidKeyword */: - case 163 /* ThisType */: - case 164 /* StringLiteralType */: + case 134 /* UndefinedKeyword */: + case 93 /* NullKeyword */: + case 164 /* ThisType */: + case 165 /* StringLiteralType */: return writeTextOfNode(currentText, type); - case 192 /* ExpressionWithTypeArguments */: + case 193 /* ExpressionWithTypeArguments */: return emitExpressionWithTypeArguments(type); - case 153 /* TypeReference */: + case 154 /* TypeReference */: return emitTypeReference(type); - case 156 /* TypeQuery */: + case 157 /* TypeQuery */: return emitTypeQuery(type); - case 158 /* ArrayType */: + case 159 /* ArrayType */: return emitArrayType(type); - case 159 /* TupleType */: + case 160 /* TupleType */: return emitTupleType(type); - case 160 /* UnionType */: + case 161 /* UnionType */: return emitUnionType(type); - case 161 /* IntersectionType */: + case 162 /* IntersectionType */: return emitIntersectionType(type); - case 162 /* ParenthesizedType */: + case 163 /* ParenthesizedType */: return emitParenType(type); - case 154 /* FunctionType */: - case 155 /* ConstructorType */: + case 155 /* FunctionType */: + case 156 /* ConstructorType */: return emitSignatureDeclarationWithJsDocComments(type); - case 157 /* TypeLiteral */: + case 158 /* TypeLiteral */: return emitTypeLiteral(type); case 69 /* Identifier */: return emitEntityName(type); - case 137 /* QualifiedName */: + case 138 /* QualifiedName */: return emitEntityName(type); - case 152 /* TypePredicate */: + case 153 /* TypePredicate */: return emitTypePredicate(type); } function writeEntityName(entityName) { @@ -31037,8 +32061,8 @@ var ts; writeTextOfNode(currentText, entityName); } else { - var left = entityName.kind === 137 /* QualifiedName */ ? entityName.left : entityName.expression; - var right = entityName.kind === 137 /* QualifiedName */ ? entityName.right : entityName.name; + var left = entityName.kind === 138 /* QualifiedName */ ? entityName.left : entityName.expression; + var right = entityName.kind === 138 /* QualifiedName */ ? entityName.right : entityName.name; writeEntityName(left); write("."); writeTextOfNode(currentText, right); @@ -31047,13 +32071,13 @@ var ts; function emitEntityName(entityName) { var visibilityResult = resolver.isEntityNameVisible(entityName, // Aliases can be written asynchronously so use correct enclosing declaration - entityName.parent.kind === 225 /* ImportEqualsDeclaration */ ? entityName.parent : enclosingDeclaration); + entityName.parent.kind === 228 /* ImportEqualsDeclaration */ ? entityName.parent : enclosingDeclaration); handleSymbolAccessibilityError(visibilityResult); writeEntityName(entityName); } function emitExpressionWithTypeArguments(node) { if (ts.isSupportedExpressionWithTypeArguments(node)) { - ts.Debug.assert(node.expression.kind === 69 /* Identifier */ || node.expression.kind === 170 /* PropertyAccessExpression */); + ts.Debug.assert(node.expression.kind === 69 /* Identifier */ || node.expression.kind === 171 /* PropertyAccessExpression */); emitEntityName(node.expression); if (node.typeArguments) { write("<"); @@ -31132,9 +32156,9 @@ var ts; var count = 0; while (true) { count++; - var name_20 = baseName + "_" + count; - if (!ts.hasProperty(currentIdentifiers, name_20)) { - return name_20; + var name_22 = baseName + "_" + count; + if (!ts.hasProperty(currentIdentifiers, name_22)) { + return name_22; } } } @@ -31146,7 +32170,10 @@ var ts; else { // Expression var tempVarName = getExportDefaultTempVariableName(); - write("declare var "); + if (!noDeclare) { + write("declare "); + } + write("var "); write(tempVarName); write(": "); writer.getSymbolAccessibilityDiagnostic = getDefaultExportAccessibilityDiagnostic; @@ -31178,10 +32205,10 @@ var ts; if (isModuleElementVisible) { writeModuleElement(node); } - else if (node.kind === 225 /* ImportEqualsDeclaration */ || - (node.parent.kind === 252 /* SourceFile */ && isCurrentFileExternalModule)) { + else if (node.kind === 228 /* ImportEqualsDeclaration */ || + (node.parent.kind === 255 /* SourceFile */ && isCurrentFileExternalModule)) { var isVisible = void 0; - if (asynchronousSubModuleDeclarationEmitInfo && node.parent.kind !== 252 /* SourceFile */) { + if (asynchronousSubModuleDeclarationEmitInfo && node.parent.kind !== 255 /* SourceFile */) { // Import declaration of another module that is visited async so lets put it in right spot asynchronousSubModuleDeclarationEmitInfo.push({ node: node, @@ -31191,7 +32218,7 @@ var ts; }); } else { - if (node.kind === 226 /* ImportDeclaration */) { + if (node.kind === 229 /* ImportDeclaration */) { var importDeclaration = node; if (importDeclaration.importClause) { isVisible = (importDeclaration.importClause.name && resolver.isDeclarationVisible(importDeclaration.importClause)) || @@ -31209,23 +32236,23 @@ var ts; } function writeModuleElement(node) { switch (node.kind) { - case 217 /* FunctionDeclaration */: + case 219 /* FunctionDeclaration */: return writeFunctionDeclaration(node); - case 197 /* VariableStatement */: + case 199 /* VariableStatement */: return writeVariableStatement(node); - case 219 /* InterfaceDeclaration */: + case 221 /* InterfaceDeclaration */: return writeInterfaceDeclaration(node); - case 218 /* ClassDeclaration */: + case 220 /* ClassDeclaration */: return writeClassDeclaration(node); - case 220 /* TypeAliasDeclaration */: + case 222 /* TypeAliasDeclaration */: return writeTypeAliasDeclaration(node); - case 221 /* EnumDeclaration */: + case 223 /* EnumDeclaration */: return writeEnumDeclaration(node); - case 222 /* ModuleDeclaration */: + case 224 /* ModuleDeclaration */: return writeModuleDeclaration(node); - case 225 /* ImportEqualsDeclaration */: + case 228 /* ImportEqualsDeclaration */: return writeImportEqualsDeclaration(node); - case 226 /* ImportDeclaration */: + case 229 /* ImportDeclaration */: return writeImportDeclaration(node); default: ts.Debug.fail("Unknown symbol kind"); @@ -31233,7 +32260,7 @@ var ts; } function emitModuleElementDeclarationFlags(node) { // If the node is parented in the current source file we need to emit export declare or just export - if (node.parent.kind === 252 /* SourceFile */) { + if (node.parent.kind === 255 /* SourceFile */) { // If the node is exported if (node.flags & 1 /* Export */) { write("export "); @@ -31241,7 +32268,7 @@ var ts; if (node.flags & 512 /* Default */) { write("default "); } - else if (node.kind !== 219 /* InterfaceDeclaration */ && !noDeclare) { + else if (node.kind !== 221 /* InterfaceDeclaration */ && !noDeclare) { write("declare "); } } @@ -31293,7 +32320,7 @@ var ts; } function isVisibleNamedBinding(namedBindings) { if (namedBindings) { - if (namedBindings.kind === 228 /* NamespaceImport */) { + if (namedBindings.kind === 231 /* NamespaceImport */) { return resolver.isDeclarationVisible(namedBindings); } else { @@ -31317,7 +32344,7 @@ var ts; // If the default binding was emitted, write the separated write(", "); } - if (node.importClause.namedBindings.kind === 228 /* NamespaceImport */) { + if (node.importClause.namedBindings.kind === 231 /* NamespaceImport */) { write("* as "); writeTextOfNode(currentText, node.importClause.namedBindings.name); } @@ -31338,13 +32365,13 @@ var ts; // the only case when it is not true is when we call it to emit correct name for module augmentation - d.ts files with just module augmentations are not considered // external modules since they are indistinguishable from script files with ambient modules. To fix this in such d.ts files we'll emit top level 'export {}' // so compiler will treat them as external modules. - resultHasExternalModuleIndicator = resultHasExternalModuleIndicator || parent.kind !== 222 /* ModuleDeclaration */; + resultHasExternalModuleIndicator = resultHasExternalModuleIndicator || parent.kind !== 224 /* ModuleDeclaration */; var moduleSpecifier; - if (parent.kind === 225 /* ImportEqualsDeclaration */) { + if (parent.kind === 228 /* ImportEqualsDeclaration */) { var node = parent; moduleSpecifier = ts.getExternalModuleImportEqualsDeclarationExpression(node); } - else if (parent.kind === 222 /* ModuleDeclaration */) { + else if (parent.kind === 224 /* ModuleDeclaration */) { moduleSpecifier = parent.name; } else { @@ -31354,9 +32381,9 @@ var ts; if (moduleSpecifier.kind === 9 /* StringLiteral */ && isBundledEmit && (compilerOptions.out || compilerOptions.outFile)) { var moduleName = ts.getExternalModuleNameFromDeclaration(host, resolver, parent); if (moduleName) { - write("\""); + write('"'); write(moduleName); - write("\""); + write('"'); return; } } @@ -31414,7 +32441,7 @@ var ts; writeTextOfNode(currentText, node.name); } } - while (node.body.kind !== 223 /* ModuleBlock */) { + while (node.body.kind !== 225 /* ModuleBlock */) { node = node.body; write("."); writeTextOfNode(currentText, node.name); @@ -31479,7 +32506,7 @@ var ts; writeLine(); } function isPrivateMethodTypeParameter(node) { - return node.parent.kind === 145 /* MethodDeclaration */ && (node.parent.flags & 8 /* Private */); + return node.parent.kind === 146 /* MethodDeclaration */ && (node.parent.flags & 8 /* Private */); } function emitTypeParameters(typeParameters) { function emitTypeParameter(node) { @@ -31490,15 +32517,15 @@ var ts; // If there is constraint present and this is not a type parameter of the private method emit the constraint if (node.constraint && !isPrivateMethodTypeParameter(node)) { write(" extends "); - if (node.parent.kind === 154 /* FunctionType */ || - node.parent.kind === 155 /* ConstructorType */ || - (node.parent.parent && node.parent.parent.kind === 157 /* TypeLiteral */)) { - ts.Debug.assert(node.parent.kind === 145 /* MethodDeclaration */ || - node.parent.kind === 144 /* MethodSignature */ || - node.parent.kind === 154 /* FunctionType */ || - node.parent.kind === 155 /* ConstructorType */ || - node.parent.kind === 149 /* CallSignature */ || - node.parent.kind === 150 /* ConstructSignature */); + if (node.parent.kind === 155 /* FunctionType */ || + node.parent.kind === 156 /* ConstructorType */ || + (node.parent.parent && node.parent.parent.kind === 158 /* TypeLiteral */)) { + ts.Debug.assert(node.parent.kind === 146 /* MethodDeclaration */ || + node.parent.kind === 145 /* MethodSignature */ || + node.parent.kind === 155 /* FunctionType */ || + node.parent.kind === 156 /* ConstructorType */ || + node.parent.kind === 150 /* CallSignature */ || + node.parent.kind === 151 /* ConstructSignature */); emitType(node.constraint); } else { @@ -31509,31 +32536,31 @@ var ts; // Type parameter constraints are named by user so we should always be able to name it var diagnosticMessage; switch (node.parent.kind) { - case 218 /* ClassDeclaration */: + case 220 /* ClassDeclaration */: diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_exported_class_has_or_is_using_private_name_1; break; - case 219 /* InterfaceDeclaration */: + case 221 /* InterfaceDeclaration */: diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_exported_interface_has_or_is_using_private_name_1; break; - case 150 /* ConstructSignature */: + case 151 /* ConstructSignature */: diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_1; break; - case 149 /* CallSignature */: + case 150 /* CallSignature */: diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_name_1; break; - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: if (node.parent.flags & 32 /* Static */) { diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1; } - else if (node.parent.parent.kind === 218 /* ClassDeclaration */) { + else if (node.parent.parent.kind === 220 /* ClassDeclaration */) { diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_public_method_from_exported_class_has_or_is_using_private_name_1; } else { diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1; } break; - case 217 /* FunctionDeclaration */: + case 219 /* FunctionDeclaration */: diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_exported_function_has_or_is_using_private_name_1; break; default: @@ -31564,10 +32591,14 @@ var ts; else if (!isImplementsList && node.expression.kind === 93 /* NullKeyword */) { write("null"); } + else { + writer.getSymbolAccessibilityDiagnostic = getHeritageClauseVisibilityError; + resolver.writeBaseConstructorTypeOfClass(enclosingDeclaration, enclosingDeclaration, 2 /* UseTypeOfFunction */, writer); + } function getHeritageClauseVisibilityError(symbolAccessibilityResult) { var diagnosticMessage; // Heritage clause is written by user so it can always be named - if (node.parent.parent.kind === 218 /* ClassDeclaration */) { + if (node.parent.parent.kind === 220 /* ClassDeclaration */) { // Class or Interface implemented/extended is inaccessible diagnosticMessage = isImplementsList ? ts.Diagnostics.Implements_clause_of_exported_class_0_has_or_is_using_private_name_1 : @@ -31651,7 +32682,7 @@ var ts; function emitVariableDeclaration(node) { // If we are emitting property it isn't moduleElement and hence we already know it needs to be emitted // so there is no check needed to see if declaration is visible - if (node.kind !== 215 /* VariableDeclaration */ || resolver.isDeclarationVisible(node)) { + if (node.kind !== 217 /* VariableDeclaration */ || resolver.isDeclarationVisible(node)) { if (ts.isBindingPattern(node.name)) { emitBindingPattern(node.name); } @@ -31661,10 +32692,10 @@ var ts; // what we want, namely the name expression enclosed in brackets. writeTextOfNode(currentText, node.name); // If optional property emit ? - if ((node.kind === 143 /* PropertyDeclaration */ || node.kind === 142 /* PropertySignature */) && ts.hasQuestionToken(node)) { + if ((node.kind === 144 /* PropertyDeclaration */ || node.kind === 143 /* PropertySignature */) && ts.hasQuestionToken(node)) { write("?"); } - if ((node.kind === 143 /* PropertyDeclaration */ || node.kind === 142 /* PropertySignature */) && node.parent.kind === 157 /* TypeLiteral */) { + if ((node.kind === 144 /* PropertyDeclaration */ || node.kind === 143 /* PropertySignature */) && node.parent.kind === 158 /* TypeLiteral */) { emitTypeOfVariableDeclarationFromTypeLiteral(node); } else if (!(node.flags & 8 /* Private */)) { @@ -31673,14 +32704,14 @@ var ts; } } function getVariableDeclarationTypeVisibilityDiagnosticMessage(symbolAccessibilityResult) { - if (node.kind === 215 /* VariableDeclaration */) { + if (node.kind === 217 /* VariableDeclaration */) { return symbolAccessibilityResult.errorModuleName ? symbolAccessibilityResult.accessibility === 2 /* CannotBeNamed */ ? ts.Diagnostics.Exported_variable_0_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : ts.Diagnostics.Exported_variable_0_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Exported_variable_0_has_or_is_using_private_name_1; } - else if (node.kind === 143 /* PropertyDeclaration */ || node.kind === 142 /* PropertySignature */) { + else if (node.kind === 144 /* PropertyDeclaration */ || node.kind === 143 /* PropertySignature */) { // TODO(jfreeman): Deal with computed properties in error reporting. if (node.flags & 32 /* Static */) { return symbolAccessibilityResult.errorModuleName ? @@ -31689,7 +32720,7 @@ var ts; ts.Diagnostics.Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Public_static_property_0_of_exported_class_has_or_is_using_private_name_1; } - else if (node.parent.kind === 218 /* ClassDeclaration */) { + else if (node.parent.kind === 220 /* ClassDeclaration */) { return symbolAccessibilityResult.errorModuleName ? symbolAccessibilityResult.accessibility === 2 /* CannotBeNamed */ ? ts.Diagnostics.Public_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : @@ -31721,7 +32752,7 @@ var ts; var elements = []; for (var _i = 0, _a = bindingPattern.elements; _i < _a.length; _i++) { var element = _a[_i]; - if (element.kind !== 191 /* OmittedExpression */) { + if (element.kind !== 192 /* OmittedExpression */) { elements.push(element); } } @@ -31791,7 +32822,7 @@ var ts; var type = getTypeAnnotationFromAccessor(node); if (!type) { // couldn't get type for the first accessor, try the another one - var anotherAccessor = node.kind === 147 /* GetAccessor */ ? accessors.setAccessor : accessors.getAccessor; + var anotherAccessor = node.kind === 148 /* GetAccessor */ ? accessors.setAccessor : accessors.getAccessor; type = getTypeAnnotationFromAccessor(anotherAccessor); if (type) { accessorWithTypeAnnotation = anotherAccessor; @@ -31804,7 +32835,7 @@ var ts; } function getTypeAnnotationFromAccessor(accessor) { if (accessor) { - return accessor.kind === 147 /* GetAccessor */ + return accessor.kind === 148 /* GetAccessor */ ? accessor.type // Getter - return type : accessor.parameters.length > 0 ? accessor.parameters[0].type // Setter parameter type @@ -31813,7 +32844,7 @@ var ts; } function getAccessorDeclarationTypeVisibilityError(symbolAccessibilityResult) { var diagnosticMessage; - if (accessorWithTypeAnnotation.kind === 148 /* SetAccessor */) { + if (accessorWithTypeAnnotation.kind === 149 /* SetAccessor */) { // Setters have to have type named and cannot infer it so, the type should always be named if (accessorWithTypeAnnotation.parent.flags & 32 /* Static */) { diagnosticMessage = symbolAccessibilityResult.errorModuleName ? @@ -31863,17 +32894,17 @@ var ts; // so no need to verify if the declaration is visible if (!resolver.isImplementationOfOverload(node)) { emitJsDocComments(node); - if (node.kind === 217 /* FunctionDeclaration */) { + if (node.kind === 219 /* FunctionDeclaration */) { emitModuleElementDeclarationFlags(node); } - else if (node.kind === 145 /* MethodDeclaration */ || node.kind === 146 /* Constructor */) { + else if (node.kind === 146 /* MethodDeclaration */ || node.kind === 147 /* Constructor */) { emitClassMemberDeclarationFlags(node.flags); } - if (node.kind === 217 /* FunctionDeclaration */) { + if (node.kind === 219 /* FunctionDeclaration */) { write("function "); writeTextOfNode(currentText, node.name); } - else if (node.kind === 146 /* Constructor */) { + else if (node.kind === 147 /* Constructor */) { write("constructor"); } else { @@ -31892,14 +32923,14 @@ var ts; function emitSignatureDeclaration(node) { var prevEnclosingDeclaration = enclosingDeclaration; enclosingDeclaration = node; - if (node.kind === 151 /* IndexSignature */) { + if (node.kind === 152 /* IndexSignature */) { // Index signature can have readonly modifier emitClassMemberDeclarationFlags(node.flags); write("["); } else { // Construct signature or constructor type write new Signature - if (node.kind === 150 /* ConstructSignature */ || node.kind === 155 /* ConstructorType */) { + if (node.kind === 151 /* ConstructSignature */ || node.kind === 156 /* ConstructorType */) { write("new "); } emitTypeParameters(node.typeParameters); @@ -31907,22 +32938,22 @@ var ts; } // Parameters emitCommaList(node.parameters, emitParameterDeclaration); - if (node.kind === 151 /* IndexSignature */) { + if (node.kind === 152 /* IndexSignature */) { write("]"); } else { write(")"); } // If this is not a constructor and is not private, emit the return type - var isFunctionTypeOrConstructorType = node.kind === 154 /* FunctionType */ || node.kind === 155 /* ConstructorType */; - if (isFunctionTypeOrConstructorType || node.parent.kind === 157 /* TypeLiteral */) { + var isFunctionTypeOrConstructorType = node.kind === 155 /* FunctionType */ || node.kind === 156 /* ConstructorType */; + if (isFunctionTypeOrConstructorType || node.parent.kind === 158 /* TypeLiteral */) { // Emit type literal signature return type only if specified if (node.type) { write(isFunctionTypeOrConstructorType ? " => " : ": "); emitType(node.type); } } - else if (node.kind !== 146 /* Constructor */ && !(node.flags & 8 /* Private */)) { + else if (node.kind !== 147 /* Constructor */ && !(node.flags & 8 /* Private */)) { writeReturnTypeAtSignature(node, getReturnTypeVisibilityError); } enclosingDeclaration = prevEnclosingDeclaration; @@ -31933,26 +32964,26 @@ var ts; function getReturnTypeVisibilityError(symbolAccessibilityResult) { var diagnosticMessage; switch (node.kind) { - case 150 /* ConstructSignature */: + case 151 /* ConstructSignature */: // Interfaces cannot have return types that cannot be named diagnosticMessage = symbolAccessibilityResult.errorModuleName ? ts.Diagnostics.Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1 : ts.Diagnostics.Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_0; break; - case 149 /* CallSignature */: + case 150 /* CallSignature */: // Interfaces cannot have return types that cannot be named diagnosticMessage = symbolAccessibilityResult.errorModuleName ? ts.Diagnostics.Return_type_of_call_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1 : ts.Diagnostics.Return_type_of_call_signature_from_exported_interface_has_or_is_using_private_name_0; break; - case 151 /* IndexSignature */: + case 152 /* IndexSignature */: // Interfaces cannot have return types that cannot be named diagnosticMessage = symbolAccessibilityResult.errorModuleName ? ts.Diagnostics.Return_type_of_index_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1 : ts.Diagnostics.Return_type_of_index_signature_from_exported_interface_has_or_is_using_private_name_0; break; - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: if (node.flags & 32 /* Static */) { diagnosticMessage = symbolAccessibilityResult.errorModuleName ? symbolAccessibilityResult.accessibility === 2 /* CannotBeNamed */ ? @@ -31960,7 +32991,7 @@ var ts; ts.Diagnostics.Return_type_of_public_static_method_from_exported_class_has_or_is_using_name_0_from_private_module_1 : ts.Diagnostics.Return_type_of_public_static_method_from_exported_class_has_or_is_using_private_name_0; } - else if (node.parent.kind === 218 /* ClassDeclaration */) { + else if (node.parent.kind === 220 /* ClassDeclaration */) { diagnosticMessage = symbolAccessibilityResult.errorModuleName ? symbolAccessibilityResult.accessibility === 2 /* CannotBeNamed */ ? ts.Diagnostics.Return_type_of_public_method_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named : @@ -31974,7 +33005,7 @@ var ts; ts.Diagnostics.Return_type_of_method_from_exported_interface_has_or_is_using_private_name_0; } break; - case 217 /* FunctionDeclaration */: + case 219 /* FunctionDeclaration */: diagnosticMessage = symbolAccessibilityResult.errorModuleName ? symbolAccessibilityResult.accessibility === 2 /* CannotBeNamed */ ? ts.Diagnostics.Return_type_of_exported_function_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named : @@ -32009,9 +33040,9 @@ var ts; write("?"); } decreaseIndent(); - if (node.parent.kind === 154 /* FunctionType */ || - node.parent.kind === 155 /* ConstructorType */ || - node.parent.parent.kind === 157 /* TypeLiteral */) { + if (node.parent.kind === 155 /* FunctionType */ || + node.parent.kind === 156 /* ConstructorType */ || + node.parent.parent.kind === 158 /* TypeLiteral */) { emitTypeOfVariableDeclarationFromTypeLiteral(node); } else if (!(node.parent.flags & 8 /* Private */)) { @@ -32027,24 +33058,24 @@ var ts; } function getParameterDeclarationTypeVisibilityDiagnosticMessage(symbolAccessibilityResult) { switch (node.parent.kind) { - case 146 /* Constructor */: + case 147 /* Constructor */: return symbolAccessibilityResult.errorModuleName ? symbolAccessibilityResult.accessibility === 2 /* CannotBeNamed */ ? ts.Diagnostics.Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : ts.Diagnostics.Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Parameter_0_of_constructor_from_exported_class_has_or_is_using_private_name_1; - case 150 /* ConstructSignature */: + case 151 /* ConstructSignature */: // Interfaces cannot have parameter types that cannot be named return symbolAccessibilityResult.errorModuleName ? ts.Diagnostics.Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_1; - case 149 /* CallSignature */: + case 150 /* CallSignature */: // Interfaces cannot have parameter types that cannot be named return symbolAccessibilityResult.errorModuleName ? ts.Diagnostics.Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_name_1; - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: if (node.parent.flags & 32 /* Static */) { return symbolAccessibilityResult.errorModuleName ? symbolAccessibilityResult.accessibility === 2 /* CannotBeNamed */ ? @@ -32052,7 +33083,7 @@ var ts; ts.Diagnostics.Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1; } - else if (node.parent.parent.kind === 218 /* ClassDeclaration */) { + else if (node.parent.parent.kind === 220 /* ClassDeclaration */) { return symbolAccessibilityResult.errorModuleName ? symbolAccessibilityResult.accessibility === 2 /* CannotBeNamed */ ? ts.Diagnostics.Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : @@ -32065,7 +33096,7 @@ var ts; ts.Diagnostics.Parameter_0_of_method_from_exported_interface_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1; } - case 217 /* FunctionDeclaration */: + case 219 /* FunctionDeclaration */: return symbolAccessibilityResult.errorModuleName ? symbolAccessibilityResult.accessibility === 2 /* CannotBeNamed */ ? ts.Diagnostics.Parameter_0_of_exported_function_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : @@ -32077,12 +33108,12 @@ var ts; } function emitBindingPattern(bindingPattern) { // We have to explicitly emit square bracket and bracket because these tokens are not store inside the node. - if (bindingPattern.kind === 165 /* ObjectBindingPattern */) { + if (bindingPattern.kind === 166 /* ObjectBindingPattern */) { write("{"); emitCommaList(bindingPattern.elements, emitBindingElement); write("}"); } - else if (bindingPattern.kind === 166 /* ArrayBindingPattern */) { + else if (bindingPattern.kind === 167 /* ArrayBindingPattern */) { write("["); var elements = bindingPattern.elements; emitCommaList(elements, emitBindingElement); @@ -32093,7 +33124,7 @@ var ts; } } function emitBindingElement(bindingElement) { - if (bindingElement.kind === 191 /* OmittedExpression */) { + if (bindingElement.kind === 192 /* OmittedExpression */) { // If bindingElement is an omittedExpression (i.e. containing elision), // we will emit blank space (although this may differ from users' original code, // it allows emitSeparatedList to write separator appropriately) @@ -32102,7 +33133,7 @@ var ts; // emit : function foo([ , x, , ]) {} write(" "); } - else if (bindingElement.kind === 167 /* BindingElement */) { + else if (bindingElement.kind === 168 /* BindingElement */) { if (bindingElement.propertyName) { // bindingElement has propertyName property in the following case: // { y: [a,b,c] ...} -> bindingPattern will have a property called propertyName for "y" @@ -32141,40 +33172,40 @@ var ts; } function emitNode(node) { switch (node.kind) { - case 217 /* FunctionDeclaration */: - case 222 /* ModuleDeclaration */: - case 225 /* ImportEqualsDeclaration */: - case 219 /* InterfaceDeclaration */: - case 218 /* ClassDeclaration */: - case 220 /* TypeAliasDeclaration */: - case 221 /* EnumDeclaration */: + case 219 /* FunctionDeclaration */: + case 224 /* ModuleDeclaration */: + case 228 /* ImportEqualsDeclaration */: + case 221 /* InterfaceDeclaration */: + case 220 /* ClassDeclaration */: + case 222 /* TypeAliasDeclaration */: + case 223 /* EnumDeclaration */: return emitModuleElement(node, isModuleElementVisible(node)); - case 197 /* VariableStatement */: + case 199 /* VariableStatement */: return emitModuleElement(node, isVariableStatementVisible(node)); - case 226 /* ImportDeclaration */: + case 229 /* ImportDeclaration */: // Import declaration without import clause is visible, otherwise it is not visible return emitModuleElement(node, /*isModuleElementVisible*/ !node.importClause); - case 232 /* ExportDeclaration */: + case 235 /* ExportDeclaration */: return emitExportDeclaration(node); - case 146 /* Constructor */: - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: + case 147 /* Constructor */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: return writeFunctionDeclaration(node); - case 150 /* ConstructSignature */: - case 149 /* CallSignature */: - case 151 /* IndexSignature */: + case 151 /* ConstructSignature */: + case 150 /* CallSignature */: + case 152 /* IndexSignature */: return emitSignatureDeclarationWithJsDocComments(node); - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: return emitAccessorDeclaration(node); - case 143 /* PropertyDeclaration */: - case 142 /* PropertySignature */: + case 144 /* PropertyDeclaration */: + case 143 /* PropertySignature */: return emitPropertyDeclaration(node); - case 251 /* EnumMember */: + case 254 /* EnumMember */: return emitEnumMemberDeclaration(node); - case 231 /* ExportAssignment */: + case 234 /* ExportAssignment */: return emitExportAssignment(node); - case 252 /* SourceFile */: + case 255 /* SourceFile */: return emitSourceFile(node); } } @@ -32197,7 +33228,7 @@ var ts; if (declFileName) { declFileName = ts.getRelativePathToDirectoryOrUrl(ts.getDirectoryPath(ts.normalizeSlashes(declarationFilePath)), declFileName, host.getCurrentDirectory(), host.getCanonicalFileName, /*isAbsolutePathAnUrl*/ false); - referencePathsOutput += "/// " + newLine; + referencePathsOutput += '/// ' + newLine; } return addedBundledEmitReference; function getDeclFileName(emitFileNames, sourceFiles, isBundledEmit) { @@ -32533,6 +33564,7 @@ var ts; function emitFiles(resolver, host, targetSourceFile) { // emit output for the __extends helper function var extendsHelper = "\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};"; + var assignHelper = "\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n};"; // emit output for the __decorate helper function var decorateHelper = "\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};"; // emit output for the __metadata helper function @@ -32544,6 +33576,7 @@ var ts; var languageVersion = ts.getEmitScriptTarget(compilerOptions); var modulekind = ts.getEmitModuleKind(compilerOptions); var sourceMapDataList = compilerOptions.sourceMap || compilerOptions.inlineSourceMap ? [] : undefined; + var emittedFilesList = compilerOptions.listEmittedFiles ? [] : undefined; var emitterDiagnostics = ts.createDiagnosticCollection(); var emitSkipped = false; var newLine = host.getNewLine(); @@ -32552,6 +33585,7 @@ var ts; return { emitSkipped: emitSkipped, diagnostics: emitterDiagnostics.getDiagnostics(), + emittedFiles: emittedFilesList, sourceMaps: sourceMapDataList }; function isUniqueLocalName(name, container) { @@ -32622,6 +33656,7 @@ var ts; var decoratedClassAliases; var convertedLoopState; var extendsEmitted; + var assignEmitted; var decorateEmitted; var paramEmitted; var awaiterEmitted; @@ -32674,7 +33709,7 @@ var ts; if (sourceMappingURL) { write("//# sourceMappingURL=" + sourceMappingURL); } - writeEmittedFiles(writer.getText(), jsFilePath, sourceMapFilePath, /*writeByteOrderMark*/ compilerOptions.emitBOM); + writeEmittedFiles(writer.getText(), jsFilePath, sourceMapFilePath, /*writeByteOrderMark*/ compilerOptions.emitBOM, sourceFiles); // reset the state sourceMap.reset(); writer.reset(); @@ -32692,6 +33727,7 @@ var ts; decorateEmitted = false; paramEmitted = false; awaiterEmitted = false; + assignEmitted = false; tempFlags = 0; tempVariables = undefined; tempParameters = undefined; @@ -32728,10 +33764,10 @@ var ts; // Note that names generated by makeTempVariableName and makeUniqueName will never conflict. function makeTempVariableName(flags) { if (flags && !(tempFlags & flags)) { - var name_21 = flags === 268435456 /* _i */ ? "_i" : "_n"; - if (isUniqueName(name_21)) { + var name_23 = flags === 268435456 /* _i */ ? "_i" : "_n"; + if (isUniqueName(name_23)) { tempFlags |= flags; - return name_21; + return name_23; } } while (true) { @@ -32739,9 +33775,9 @@ var ts; tempFlags++; // Skip over 'i' and 'n' if (count !== 8 && count !== 13) { - var name_22 = count < 26 ? "_" + String.fromCharCode(97 /* a */ + count) : "_" + (count - 26); - if (isUniqueName(name_22)) { - return name_22; + var name_24 = count < 26 ? "_" + String.fromCharCode(97 /* a */ + count) : "_" + (count - 26); + if (isUniqueName(name_24)) { + return name_24; } } } @@ -32785,17 +33821,17 @@ var ts; switch (node.kind) { case 69 /* Identifier */: return makeUniqueName(node.text); - case 222 /* ModuleDeclaration */: - case 221 /* EnumDeclaration */: + case 224 /* ModuleDeclaration */: + case 223 /* EnumDeclaration */: return generateNameForModuleOrEnum(node); - case 226 /* ImportDeclaration */: - case 232 /* ExportDeclaration */: + case 229 /* ImportDeclaration */: + case 235 /* ExportDeclaration */: return generateNameForImportOrExportDeclaration(node); - case 217 /* FunctionDeclaration */: - case 218 /* ClassDeclaration */: - case 231 /* ExportAssignment */: + case 219 /* FunctionDeclaration */: + case 220 /* ClassDeclaration */: + case 234 /* ExportAssignment */: return generateNameForExportDefault(); - case 190 /* ClassExpression */: + case 191 /* ClassExpression */: return generateNameForClassExpression(); } } @@ -32804,14 +33840,14 @@ var ts; return nodeToGeneratedName[id] || (nodeToGeneratedName[id] = ts.unescapeIdentifier(generateNameForNode(node))); } /** Write emitted output to disk */ - function writeEmittedFiles(emitOutput, jsFilePath, sourceMapFilePath, writeByteOrderMark) { + function writeEmittedFiles(emitOutput, jsFilePath, sourceMapFilePath, writeByteOrderMark, sourceFiles) { if (compilerOptions.sourceMap && !compilerOptions.inlineSourceMap) { - ts.writeFile(host, emitterDiagnostics, sourceMapFilePath, sourceMap.getText(), /*writeByteOrderMark*/ false); + ts.writeFile(host, emitterDiagnostics, sourceMapFilePath, sourceMap.getText(), /*writeByteOrderMark*/ false, sourceFiles); } if (sourceMapDataList) { sourceMapDataList.push(sourceMap.getSourceMapData()); } - ts.writeFile(host, emitterDiagnostics, jsFilePath, emitOutput, writeByteOrderMark); + ts.writeFile(host, emitterDiagnostics, jsFilePath, emitOutput, writeByteOrderMark, sourceFiles); } // Create a temporary variable with a unique unused name. function createTempVariable(flags) { @@ -32990,7 +34026,7 @@ var ts; // Any template literal or string literal with an extended escape // (e.g. "\u{0067}") will need to be downleveled as a escaped string literal. if (languageVersion < 2 /* ES6 */ && (ts.isTemplateLiteralKind(node.kind) || node.hasExtendedUnicodeEscape)) { - return getQuotedEscapedLiteralText("\"", node.text, "\""); + return getQuotedEscapedLiteralText('"', node.text, '"'); } // If we don't need to downlevel and we can reach the original source text using // the node's parent reference, then simply get the text as it was originally written. @@ -33001,7 +34037,7 @@ var ts; // or an escaped quoted form of the original text if it's string-like. switch (node.kind) { case 9 /* StringLiteral */: - return getQuotedEscapedLiteralText("\"", node.text, "\""); + return getQuotedEscapedLiteralText('"', node.text, '"'); case 11 /* NoSubstitutionTemplateLiteral */: return getQuotedEscapedLiteralText("`", node.text, "`"); case 12 /* TemplateHead */: @@ -33065,10 +34101,10 @@ var ts; write("("); emit(tempVariable); // Now we emit the expressions - if (node.template.kind === 187 /* TemplateExpression */) { + if (node.template.kind === 188 /* TemplateExpression */) { ts.forEach(node.template.templateSpans, function (templateSpan) { write(", "); - var needsParens = templateSpan.expression.kind === 185 /* BinaryExpression */ + var needsParens = templateSpan.expression.kind === 186 /* BinaryExpression */ && templateSpan.expression.operatorToken.kind === 24 /* CommaToken */; emitParenthesizedIf(templateSpan.expression, needsParens); }); @@ -33103,7 +34139,7 @@ var ts; // ("abc" + 1) << (2 + "") // rather than // "abc" + (1 << 2) + "" - var needsParens = templateSpan.expression.kind !== 176 /* ParenthesizedExpression */ + var needsParens = templateSpan.expression.kind !== 177 /* ParenthesizedExpression */ && comparePrecedenceToBinaryPlus(templateSpan.expression) !== 1 /* GreaterThan */; if (i > 0 || headEmitted) { // If this is the first span and the head was not emitted, then this templateSpan's @@ -33145,11 +34181,11 @@ var ts; } function templateNeedsParens(template, parent) { switch (parent.kind) { - case 172 /* CallExpression */: - case 173 /* NewExpression */: + case 173 /* CallExpression */: + case 174 /* NewExpression */: return parent.expression === template; - case 174 /* TaggedTemplateExpression */: - case 176 /* ParenthesizedExpression */: + case 175 /* TaggedTemplateExpression */: + case 177 /* ParenthesizedExpression */: return false; default: return comparePrecedenceToBinaryPlus(parent) !== -1 /* LessThan */; @@ -33170,7 +34206,7 @@ var ts; // TODO (drosen): Note that we need to account for the upcoming 'yield' and // spread ('...') unary operators that are anticipated for ES6. switch (expression.kind) { - case 185 /* BinaryExpression */: + case 186 /* BinaryExpression */: switch (expression.operatorToken.kind) { case 37 /* AsteriskToken */: case 39 /* SlashToken */: @@ -33182,8 +34218,8 @@ var ts; default: return -1 /* LessThan */; } - case 188 /* YieldExpression */: - case 186 /* ConditionalExpression */: + case 189 /* YieldExpression */: + case 187 /* ConditionalExpression */: return -1 /* LessThan */; default: return 1 /* GreaterThan */; @@ -33199,9 +34235,9 @@ var ts; /// 'Div' for upper-cased or dotted names function emitTagName(name) { if (name.kind === 69 /* Identifier */ && ts.isIntrinsicJsxName(name.text)) { - write("\""); + write('"'); emit(name); - write("\""); + write('"'); } else { emit(name); @@ -33215,9 +34251,9 @@ var ts; emit(name); } else { - write("\""); + write('"'); emit(name); - write("\""); + write('"'); } } /// Emit an name/value pair for an attribute (e.g. "x: 3") @@ -33248,14 +34284,13 @@ var ts; } else { // Either emit one big object literal (no spread attribs), or - // a call to React.__spread + // a call to the __assign helper var attrs = openingNode.attributes; - if (ts.forEach(attrs, function (attr) { return attr.kind === 243 /* JsxSpreadAttribute */; })) { - emitExpressionIdentifier(syntheticReactRef); - write(".__spread("); + if (ts.forEach(attrs, function (attr) { return attr.kind === 246 /* JsxSpreadAttribute */; })) { + write("__assign("); var haveOpenedObjectLiteral = false; for (var i = 0; i < attrs.length; i++) { - if (attrs[i].kind === 243 /* JsxSpreadAttribute */) { + if (attrs[i].kind === 246 /* JsxSpreadAttribute */) { // If this is the first argument, we need to emit a {} as the first argument if (i === 0) { write("{}, "); @@ -33270,7 +34305,7 @@ var ts; emit(attrs[i].expression); } else { - ts.Debug.assert(attrs[i].kind === 242 /* JsxAttribute */); + ts.Debug.assert(attrs[i].kind === 245 /* JsxAttribute */); if (haveOpenedObjectLiteral) { write(", "); } @@ -33331,7 +34366,7 @@ var ts; decreaseIndent(); } else if (firstChild) { - if (firstChild.kind !== 237 /* JsxElement */ && firstChild.kind !== 238 /* JsxSelfClosingElement */) { + if (firstChild.kind !== 240 /* JsxElement */ && firstChild.kind !== 241 /* JsxSelfClosingElement */) { emit(firstChild); } else { @@ -33348,11 +34383,11 @@ var ts; write(")"); // closes "React.createElement(" emitTrailingComments(openingNode); } - if (node.kind === 237 /* JsxElement */) { + if (node.kind === 240 /* JsxElement */) { emitJsxElement(node.openingElement, node.children); } else { - ts.Debug.assert(node.kind === 238 /* JsxSelfClosingElement */); + ts.Debug.assert(node.kind === 241 /* JsxSelfClosingElement */); emitJsxElement(node); } } @@ -33374,11 +34409,11 @@ var ts; if (i > 0) { write(" "); } - if (attribs[i].kind === 243 /* JsxSpreadAttribute */) { + if (attribs[i].kind === 246 /* JsxSpreadAttribute */) { emitJsxSpreadAttribute(attribs[i]); } else { - ts.Debug.assert(attribs[i].kind === 242 /* JsxAttribute */); + ts.Debug.assert(attribs[i].kind === 245 /* JsxAttribute */); emitJsxAttribute(attribs[i]); } } @@ -33386,11 +34421,11 @@ var ts; function emitJsxOpeningOrSelfClosingElement(node) { write("<"); emit(node.tagName); - if (node.attributes.length > 0 || (node.kind === 238 /* JsxSelfClosingElement */)) { + if (node.attributes.length > 0 || (node.kind === 241 /* JsxSelfClosingElement */)) { write(" "); } emitAttributes(node.attributes); - if (node.kind === 238 /* JsxSelfClosingElement */) { + if (node.kind === 241 /* JsxSelfClosingElement */) { write("/>"); } else { @@ -33409,11 +34444,11 @@ var ts; } emitJsxClosingElement(node.closingElement); } - if (node.kind === 237 /* JsxElement */) { + if (node.kind === 240 /* JsxElement */) { emitJsxElement(node); } else { - ts.Debug.assert(node.kind === 238 /* JsxSelfClosingElement */); + ts.Debug.assert(node.kind === 241 /* JsxSelfClosingElement */); emitJsxOpeningOrSelfClosingElement(node); } } @@ -33421,11 +34456,11 @@ var ts; // In a sense, it does not actually emit identifiers as much as it declares a name for a specific property. // For example, this is utilized when feeding in a result to Object.defineProperty. function emitExpressionForPropertyName(node) { - ts.Debug.assert(node.kind !== 167 /* BindingElement */); + ts.Debug.assert(node.kind !== 168 /* BindingElement */); if (node.kind === 9 /* StringLiteral */) { emitLiteral(node); } - else if (node.kind === 138 /* ComputedPropertyName */) { + else if (node.kind === 139 /* ComputedPropertyName */) { // if this is a decorated computed property, we will need to capture the result // of the property expression so that we can apply decorators later. This is to ensure // we don't introduce unintended side effects: @@ -33456,75 +34491,76 @@ var ts; emit(node.expression); } else { - write("\""); + write('"'); if (node.kind === 8 /* NumericLiteral */) { write(node.text); } else { writeTextOfNode(currentText, node); } - write("\""); + write('"'); } } function isExpressionIdentifier(node) { var parent = node.parent; switch (parent.kind) { - case 168 /* ArrayLiteralExpression */: - case 193 /* AsExpression */: - case 185 /* BinaryExpression */: - case 172 /* CallExpression */: - case 245 /* CaseClause */: - case 138 /* ComputedPropertyName */: - case 186 /* ConditionalExpression */: - case 141 /* Decorator */: - case 179 /* DeleteExpression */: - case 201 /* DoStatement */: - case 171 /* ElementAccessExpression */: - case 231 /* ExportAssignment */: - case 199 /* ExpressionStatement */: - case 192 /* ExpressionWithTypeArguments */: - case 203 /* ForStatement */: - case 204 /* ForInStatement */: - case 205 /* ForOfStatement */: - case 200 /* IfStatement */: - case 241 /* JsxClosingElement */: - case 238 /* JsxSelfClosingElement */: - case 239 /* JsxOpeningElement */: - case 243 /* JsxSpreadAttribute */: - case 244 /* JsxExpression */: - case 173 /* NewExpression */: - case 176 /* ParenthesizedExpression */: - case 184 /* PostfixUnaryExpression */: - case 183 /* PrefixUnaryExpression */: - case 208 /* ReturnStatement */: - case 250 /* ShorthandPropertyAssignment */: - case 189 /* SpreadElementExpression */: - case 210 /* SwitchStatement */: - case 174 /* TaggedTemplateExpression */: - case 194 /* TemplateSpan */: - case 212 /* ThrowStatement */: - case 175 /* TypeAssertionExpression */: - case 180 /* TypeOfExpression */: - case 181 /* VoidExpression */: - case 202 /* WhileStatement */: - case 209 /* WithStatement */: - case 188 /* YieldExpression */: + case 169 /* ArrayLiteralExpression */: + case 194 /* AsExpression */: + case 186 /* BinaryExpression */: + case 173 /* CallExpression */: + case 248 /* CaseClause */: + case 139 /* ComputedPropertyName */: + case 187 /* ConditionalExpression */: + case 142 /* Decorator */: + case 180 /* DeleteExpression */: + case 203 /* DoStatement */: + case 172 /* ElementAccessExpression */: + case 234 /* ExportAssignment */: + case 201 /* ExpressionStatement */: + case 193 /* ExpressionWithTypeArguments */: + case 205 /* ForStatement */: + case 206 /* ForInStatement */: + case 207 /* ForOfStatement */: + case 202 /* IfStatement */: + case 244 /* JsxClosingElement */: + case 241 /* JsxSelfClosingElement */: + case 242 /* JsxOpeningElement */: + case 246 /* JsxSpreadAttribute */: + case 247 /* JsxExpression */: + case 174 /* NewExpression */: + case 195 /* NonNullExpression */: + case 177 /* ParenthesizedExpression */: + case 185 /* PostfixUnaryExpression */: + case 184 /* PrefixUnaryExpression */: + case 210 /* ReturnStatement */: + case 253 /* ShorthandPropertyAssignment */: + case 190 /* SpreadElementExpression */: + case 212 /* SwitchStatement */: + case 175 /* TaggedTemplateExpression */: + case 196 /* TemplateSpan */: + case 214 /* ThrowStatement */: + case 176 /* TypeAssertionExpression */: + case 181 /* TypeOfExpression */: + case 182 /* VoidExpression */: + case 204 /* WhileStatement */: + case 211 /* WithStatement */: + case 189 /* YieldExpression */: return true; - case 167 /* BindingElement */: - case 251 /* EnumMember */: - case 140 /* Parameter */: - case 249 /* PropertyAssignment */: - case 143 /* PropertyDeclaration */: - case 215 /* VariableDeclaration */: + case 168 /* BindingElement */: + case 254 /* EnumMember */: + case 141 /* Parameter */: + case 252 /* PropertyAssignment */: + case 144 /* PropertyDeclaration */: + case 217 /* VariableDeclaration */: return parent.initializer === node; - case 170 /* PropertyAccessExpression */: + case 171 /* PropertyAccessExpression */: return parent.expression === node; - case 178 /* ArrowFunction */: - case 177 /* FunctionExpression */: + case 179 /* ArrowFunction */: + case 178 /* FunctionExpression */: return parent.body === node; - case 225 /* ImportEqualsDeclaration */: + case 228 /* ImportEqualsDeclaration */: return parent.moduleReference === node; - case 137 /* QualifiedName */: + case 138 /* QualifiedName */: return parent.left === node; } return false; @@ -33532,7 +34568,7 @@ var ts; function emitExpressionIdentifier(node) { var container = resolver.getReferencedExportContainer(node); if (container) { - if (container.kind === 252 /* SourceFile */) { + if (container.kind === 255 /* SourceFile */) { // Identifier references module export if (modulekind !== ts.ModuleKind.ES6 && modulekind !== ts.ModuleKind.System) { write("exports."); @@ -33548,19 +34584,19 @@ var ts; if (modulekind !== ts.ModuleKind.ES6) { var declaration = resolver.getReferencedImportDeclaration(node); if (declaration) { - if (declaration.kind === 227 /* ImportClause */) { + if (declaration.kind === 230 /* ImportClause */) { // Identifier references default import write(getGeneratedNameForNode(declaration.parent)); - write(languageVersion === 0 /* ES3 */ ? "[\"default\"]" : ".default"); + write(languageVersion === 0 /* ES3 */ ? '["default"]' : ".default"); return; } - else if (declaration.kind === 230 /* ImportSpecifier */) { + else if (declaration.kind === 233 /* ImportSpecifier */) { // Identifier references named import write(getGeneratedNameForNode(declaration.parent.parent.parent)); - var name_23 = declaration.propertyName || declaration.name; - var identifier = ts.getTextOfNodeFromSourceText(currentText, name_23); + var name_25 = declaration.propertyName || declaration.name; + var identifier = ts.getTextOfNodeFromSourceText(currentText, name_25); if (languageVersion === 0 /* ES3 */ && identifier === "default") { - write("[\"default\"]"); + write('["default"]'); } else { write("."); @@ -33600,13 +34636,13 @@ var ts; } function isNameOfNestedBlockScopedRedeclarationOrCapturedBinding(node) { if (languageVersion < 2 /* ES6 */) { - var parent_8 = node.parent; - switch (parent_8.kind) { - case 167 /* BindingElement */: - case 218 /* ClassDeclaration */: - case 221 /* EnumDeclaration */: - case 215 /* VariableDeclaration */: - return parent_8.name === node && resolver.isDeclarationWithCollidingName(parent_8); + var parent_10 = node.parent; + switch (parent_10.kind) { + case 168 /* BindingElement */: + case 220 /* ClassDeclaration */: + case 223 /* EnumDeclaration */: + case 217 /* VariableDeclaration */: + return parent_10.name === node && resolver.isDeclarationWithCollidingName(parent_10); } } return false; @@ -33615,8 +34651,8 @@ var ts; if (convertedLoopState) { if (node.text == "arguments" && resolver.isArgumentsLocalBinding(node)) { // in converted loop body arguments cannot be used directly. - var name_24 = convertedLoopState.argumentsName || (convertedLoopState.argumentsName = makeUniqueName("arguments")); - write(name_24); + var name_26 = convertedLoopState.argumentsName || (convertedLoopState.argumentsName = makeUniqueName("arguments")); + write(name_26); return; } } @@ -33716,10 +34752,10 @@ var ts; } } function needsParenthesisForAwaitExpressionAsYield(node) { - if (node.parent.kind === 185 /* BinaryExpression */ && !ts.isAssignmentOperator(node.parent.operatorToken.kind)) { + if (node.parent.kind === 186 /* BinaryExpression */ && !ts.isAssignmentOperator(node.parent.operatorToken.kind)) { return true; } - else if (node.parent.kind === 186 /* ConditionalExpression */ && node.parent.condition === node) { + else if (node.parent.kind === 187 /* ConditionalExpression */ && node.parent.condition === node) { return true; } return false; @@ -33727,11 +34763,11 @@ var ts; function needsParenthesisForPropertyAccessOrInvocation(node) { switch (node.kind) { case 69 /* Identifier */: - case 168 /* ArrayLiteralExpression */: - case 170 /* PropertyAccessExpression */: - case 171 /* ElementAccessExpression */: - case 172 /* CallExpression */: - case 176 /* ParenthesizedExpression */: + case 169 /* ArrayLiteralExpression */: + case 171 /* PropertyAccessExpression */: + case 172 /* ElementAccessExpression */: + case 173 /* CallExpression */: + case 177 /* ParenthesizedExpression */: // This list is not exhaustive and only includes those cases that are relevant // to the check in emitArrayLiteral. More cases can be added as needed. return false; @@ -33751,17 +34787,17 @@ var ts; write(", "); } var e = elements[pos]; - if (e.kind === 189 /* SpreadElementExpression */) { + if (e.kind === 190 /* SpreadElementExpression */) { e = e.expression; emitParenthesizedIf(e, /*parenthesized*/ group === 0 && needsParenthesisForPropertyAccessOrInvocation(e)); pos++; - if (pos === length && group === 0 && needsUniqueCopy && e.kind !== 168 /* ArrayLiteralExpression */) { + if (pos === length && group === 0 && needsUniqueCopy && e.kind !== 169 /* ArrayLiteralExpression */) { write(".slice()"); } } else { var i = pos; - while (i < length && elements[i].kind !== 189 /* SpreadElementExpression */) { + while (i < length && elements[i].kind !== 190 /* SpreadElementExpression */) { i++; } write("["); @@ -33784,7 +34820,7 @@ var ts; } } function isSpreadElementExpression(node) { - return node.kind === 189 /* SpreadElementExpression */; + return node.kind === 190 /* SpreadElementExpression */; } function emitArrayLiteral(node) { var elements = node.elements; @@ -33854,7 +34890,7 @@ var ts; writeComma(); var property = properties[i]; emitStart(property); - if (property.kind === 147 /* GetAccessor */ || property.kind === 148 /* SetAccessor */) { + if (property.kind === 148 /* GetAccessor */ || property.kind === 149 /* SetAccessor */) { // TODO (drosen): Reconcile with 'emitMemberFunctions'. var accessors = ts.getAllAccessorDeclarations(node.properties, property); if (property !== accessors.firstAccessor) { @@ -33906,13 +34942,13 @@ var ts; emitMemberAccessForPropertyName(property.name); emitEnd(property.name); write(" = "); - if (property.kind === 249 /* PropertyAssignment */) { + if (property.kind === 252 /* PropertyAssignment */) { emit(property.initializer); } - else if (property.kind === 250 /* ShorthandPropertyAssignment */) { + else if (property.kind === 253 /* ShorthandPropertyAssignment */) { emitExpressionIdentifier(property.name); } - else if (property.kind === 145 /* MethodDeclaration */) { + else if (property.kind === 146 /* MethodDeclaration */) { emitFunctionDeclaration(property); } else { @@ -33946,7 +34982,7 @@ var ts; // Everything until that point can be emitted as part of the initial object literal. var numInitialNonComputedProperties = numProperties; for (var i = 0, n = properties.length; i < n; i++) { - if (properties[i].name.kind === 138 /* ComputedPropertyName */) { + if (properties[i].name.kind === 139 /* ComputedPropertyName */) { numInitialNonComputedProperties = i; break; } @@ -33962,21 +34998,21 @@ var ts; emitObjectLiteralBody(node, properties.length); } function createBinaryExpression(left, operator, right, startsOnNewLine) { - var result = ts.createSynthesizedNode(185 /* BinaryExpression */, startsOnNewLine); + var result = ts.createSynthesizedNode(186 /* BinaryExpression */, startsOnNewLine); result.operatorToken = ts.createSynthesizedNode(operator); result.left = left; result.right = right; return result; } function createPropertyAccessExpression(expression, name) { - var result = ts.createSynthesizedNode(170 /* PropertyAccessExpression */); + var result = ts.createSynthesizedNode(171 /* PropertyAccessExpression */); result.expression = parenthesizeForAccess(expression); result.dotToken = ts.createSynthesizedNode(21 /* DotToken */); result.name = name; return result; } function createElementAccessExpression(expression, argumentExpression) { - var result = ts.createSynthesizedNode(171 /* ElementAccessExpression */); + var result = ts.createSynthesizedNode(172 /* ElementAccessExpression */); result.expression = parenthesizeForAccess(expression); result.argumentExpression = argumentExpression; return result; @@ -33984,7 +35020,9 @@ var ts; function parenthesizeForAccess(expr) { // When diagnosing whether the expression needs parentheses, the decision should be based // on the innermost expression in a chain of nested type assertions. - while (expr.kind === 175 /* TypeAssertionExpression */ || expr.kind === 193 /* AsExpression */) { + while (expr.kind === 176 /* TypeAssertionExpression */ || + expr.kind === 194 /* AsExpression */ || + expr.kind === 195 /* NonNullExpression */) { expr = expr.expression; } // isLeftHandSideExpression is almost the correct criterion for when it is not necessary @@ -33996,11 +35034,11 @@ var ts; // 1.x -> not the same as (1).x // if (ts.isLeftHandSideExpression(expr) && - expr.kind !== 173 /* NewExpression */ && + expr.kind !== 174 /* NewExpression */ && expr.kind !== 8 /* NumericLiteral */) { return expr; } - var node = ts.createSynthesizedNode(176 /* ParenthesizedExpression */); + var node = ts.createSynthesizedNode(177 /* ParenthesizedExpression */); node.expression = expr; return node; } @@ -34035,7 +35073,12 @@ var ts; // Return true if identifier resolves to an exported member of a namespace function isNamespaceExportReference(node) { var container = resolver.getReferencedExportContainer(node); - return container && container.kind !== 252 /* SourceFile */; + return container && container.kind !== 255 /* SourceFile */; + } + // Return true if identifier resolves to an imported identifier + function isImportedReference(node) { + var declaration = resolver.getReferencedImportDeclaration(node); + return declaration && (declaration.kind === 230 /* ImportClause */ || declaration.kind === 233 /* ImportSpecifier */); } function emitShorthandPropertyAssignment(node) { // The name property of a short-hand property assignment is considered an expression position, so here @@ -34050,7 +35093,18 @@ var ts; // let obj = { y }; // } // Here we need to emit obj = { y : m.y } regardless of the output target. - if (modulekind !== ts.ModuleKind.ES6 || isNamespaceExportReference(node.name)) { + // The same rules apply for imported identifiers when targeting module formats with indirect access to + // the imported identifiers. For example, when targeting CommonJS: + // + // import {foo} from './foo'; + // export const baz = { foo }; + // + // Must be transformed into: + // + // const foo_1 = require('./foo'); + // exports.baz = { foo: foo_1.foo }; + // + if (languageVersion < 2 /* ES6 */ || (modulekind !== ts.ModuleKind.ES6 && isImportedReference(node.name)) || isNamespaceExportReference(node.name)) { // Emit identifier as an identifier write(": "); emit(node.name); @@ -34065,7 +35119,7 @@ var ts; if (constantValue !== undefined) { write(constantValue.toString()); if (!compilerOptions.removeComments) { - var propertyName = node.kind === 170 /* PropertyAccessExpression */ ? ts.declarationNameToString(node.name) : ts.getTextOfNode(node.argumentExpression); + var propertyName = node.kind === 171 /* PropertyAccessExpression */ ? ts.declarationNameToString(node.name) : ts.getTextOfNode(node.argumentExpression); write(" /* " + propertyName + " */"); } return true; @@ -34076,7 +35130,7 @@ var ts; if (compilerOptions.isolatedModules) { return undefined; } - return node.kind === 170 /* PropertyAccessExpression */ || node.kind === 171 /* ElementAccessExpression */ + return node.kind === 171 /* PropertyAccessExpression */ || node.kind === 172 /* ElementAccessExpression */ ? resolver.getConstantValue(node) : undefined; } @@ -34106,9 +35160,9 @@ var ts; if (languageVersion === 2 /* ES6 */ && node.expression.kind === 95 /* SuperKeyword */ && isInAsyncMethodWithSuperInES6(node)) { - var name_25 = ts.createSynthesizedNode(9 /* StringLiteral */); - name_25.text = node.name.text; - emitSuperAccessInAsyncMethod(node.expression, name_25); + var name_27 = ts.createSynthesizedNode(9 /* StringLiteral */); + name_27.text = node.name.text; + emitSuperAccessInAsyncMethod(node.expression, name_27); return; } emit(node.expression); @@ -34173,7 +35227,7 @@ var ts; } emitExpressionIdentifier(node); break; - case 137 /* QualifiedName */: + case 138 /* QualifiedName */: emitQualifiedNameAsExpression(node, useFallback); break; default: @@ -34197,10 +35251,13 @@ var ts; write("]"); } function hasSpreadElement(elements) { - return ts.forEach(elements, function (e) { return e.kind === 189 /* SpreadElementExpression */; }); + return ts.forEach(elements, function (e) { return e.kind === 190 /* SpreadElementExpression */; }); } function skipParentheses(node) { - while (node.kind === 176 /* ParenthesizedExpression */ || node.kind === 175 /* TypeAssertionExpression */ || node.kind === 193 /* AsExpression */) { + while (node.kind === 177 /* ParenthesizedExpression */ || + node.kind === 176 /* TypeAssertionExpression */ || + node.kind === 194 /* AsExpression */ || + node.kind === 195 /* NonNullExpression */) { node = node.expression; } return node; @@ -34221,13 +35278,13 @@ var ts; function emitCallWithSpread(node) { var target; var expr = skipParentheses(node.expression); - if (expr.kind === 170 /* PropertyAccessExpression */) { + if (expr.kind === 171 /* PropertyAccessExpression */) { // Target will be emitted as "this" argument target = emitCallTarget(expr.expression); write("."); emit(expr.name); } - else if (expr.kind === 171 /* ElementAccessExpression */) { + else if (expr.kind === 172 /* ElementAccessExpression */) { // Target will be emitted as "this" argument target = emitCallTarget(expr.expression); write("["); @@ -34360,12 +35417,16 @@ var ts; // If the node is synthesized, it means the emitter put the parentheses there, // not the user. If we didn't want them, the emitter would not have put them // there. - if (!ts.nodeIsSynthesized(node) && node.parent.kind !== 178 /* ArrowFunction */) { - if (node.expression.kind === 175 /* TypeAssertionExpression */ || node.expression.kind === 193 /* AsExpression */) { + if (!ts.nodeIsSynthesized(node) && node.parent.kind !== 179 /* ArrowFunction */) { + if (node.expression.kind === 176 /* TypeAssertionExpression */ || + node.expression.kind === 194 /* AsExpression */ || + node.expression.kind === 195 /* NonNullExpression */) { var operand = node.expression.expression; // Make sure we consider all nested cast expressions, e.g.: // (-A).x; - while (operand.kind === 175 /* TypeAssertionExpression */ || operand.kind === 193 /* AsExpression */) { + while (operand.kind === 176 /* TypeAssertionExpression */ || + operand.kind === 194 /* AsExpression */ || + operand.kind === 195 /* NonNullExpression */) { operand = operand.expression; } // We have an expression of the form: (SubExpr) @@ -34376,15 +35437,15 @@ var ts; // (typeof A).toString() should be emitted as (typeof A).toString() and not typeof A.toString() // new (A()) should be emitted as new (A()) and not new A() // (function foo() { })() should be emitted as an IIF (function foo(){})() and not declaration function foo(){} () - if (operand.kind !== 183 /* PrefixUnaryExpression */ && - operand.kind !== 181 /* VoidExpression */ && - operand.kind !== 180 /* TypeOfExpression */ && - operand.kind !== 179 /* DeleteExpression */ && - operand.kind !== 184 /* PostfixUnaryExpression */ && - operand.kind !== 173 /* NewExpression */ && - !(operand.kind === 172 /* CallExpression */ && node.parent.kind === 173 /* NewExpression */) && - !(operand.kind === 177 /* FunctionExpression */ && node.parent.kind === 172 /* CallExpression */) && - !(operand.kind === 8 /* NumericLiteral */ && node.parent.kind === 170 /* PropertyAccessExpression */)) { + if (operand.kind !== 184 /* PrefixUnaryExpression */ && + operand.kind !== 182 /* VoidExpression */ && + operand.kind !== 181 /* TypeOfExpression */ && + operand.kind !== 180 /* DeleteExpression */ && + operand.kind !== 185 /* PostfixUnaryExpression */ && + operand.kind !== 174 /* NewExpression */ && + !(operand.kind === 173 /* CallExpression */ && node.parent.kind === 174 /* NewExpression */) && + !(operand.kind === 178 /* FunctionExpression */ && node.parent.kind === 173 /* CallExpression */) && + !(operand.kind === 8 /* NumericLiteral */ && node.parent.kind === 171 /* PropertyAccessExpression */)) { emit(operand); return; } @@ -34413,7 +35474,7 @@ var ts; if (!isCurrentFileSystemExternalModule() || node.kind !== 69 /* Identifier */ || ts.nodeIsSynthesized(node)) { return false; } - var isVariableDeclarationOrBindingElement = node.parent && (node.parent.kind === 215 /* VariableDeclaration */ || node.parent.kind === 167 /* BindingElement */); + var isVariableDeclarationOrBindingElement = node.parent && (node.parent.kind === 217 /* VariableDeclaration */ || node.parent.kind === 168 /* BindingElement */); var targetDeclaration = isVariableDeclarationOrBindingElement ? node.parent : resolver.getReferencedValueDeclaration(node); @@ -34444,7 +35505,7 @@ var ts; // the resulting expression a prefix increment operation. And in the second, it will make the resulting // expression a prefix increment whose operand is a plus expression - (++(+x)) // The same is true of minus of course. - if (node.operand.kind === 183 /* PrefixUnaryExpression */) { + if (node.operand.kind === 184 /* PrefixUnaryExpression */) { var operand = node.operand; if (node.operator === 35 /* PlusToken */ && (operand.operator === 35 /* PlusToken */ || operand.operator === 41 /* PlusPlusToken */)) { write(" "); @@ -34500,7 +35561,7 @@ var ts; } var current = ts.getRootDeclaration(node).parent; while (current) { - if (current.kind === 252 /* SourceFile */) { + if (current.kind === 255 /* SourceFile */) { return !isExported || ((ts.getCombinedNodeFlags(node) & 1 /* Export */) !== 0); } else if (ts.isDeclaration(current)) { @@ -34523,7 +35584,7 @@ var ts; if (ts.isElementAccessExpression(leftHandSideExpression)) { shouldEmitParentheses = true; write("("); - synthesizedLHS = ts.createSynthesizedNode(171 /* ElementAccessExpression */, /*startsOnNewLine*/ false); + synthesizedLHS = ts.createSynthesizedNode(172 /* ElementAccessExpression */, /*startsOnNewLine*/ false); var identifier = emitTempVariableAssignment(leftHandSideExpression.expression, /*canDefineTempVariablesInPlace*/ false, /*shouldEmitCommaBeforeAssignment*/ false); synthesizedLHS.expression = identifier; if (leftHandSideExpression.argumentExpression.kind !== 8 /* NumericLiteral */ && @@ -34540,7 +35601,7 @@ var ts; else if (ts.isPropertyAccessExpression(leftHandSideExpression)) { shouldEmitParentheses = true; write("("); - synthesizedLHS = ts.createSynthesizedNode(170 /* PropertyAccessExpression */, /*startsOnNewLine*/ false); + synthesizedLHS = ts.createSynthesizedNode(171 /* PropertyAccessExpression */, /*startsOnNewLine*/ false); var identifier = emitTempVariableAssignment(leftHandSideExpression.expression, /*canDefineTempVariablesInPlace*/ false, /*shouldEmitCommaBeforeAssignment*/ false); synthesizedLHS.expression = identifier; synthesizedLHS.dotToken = leftHandSideExpression.dotToken; @@ -34568,8 +35629,8 @@ var ts; } function emitBinaryExpression(node) { if (languageVersion < 2 /* ES6 */ && node.operatorToken.kind === 56 /* EqualsToken */ && - (node.left.kind === 169 /* ObjectLiteralExpression */ || node.left.kind === 168 /* ArrayLiteralExpression */)) { - emitDestructuring(node, node.parent.kind === 199 /* ExpressionStatement */); + (node.left.kind === 170 /* ObjectLiteralExpression */ || node.left.kind === 169 /* ArrayLiteralExpression */)) { + emitDestructuring(node, node.parent.kind === 201 /* ExpressionStatement */); } else { var exportChanged = node.operatorToken.kind >= 56 /* FirstAssignment */ && @@ -34634,7 +35695,7 @@ var ts; } } function isSingleLineEmptyBlock(node) { - if (node && node.kind === 196 /* Block */) { + if (node && node.kind === 198 /* Block */) { var block = node; return block.statements.length === 0 && nodeEndIsOnSameLineAsNodeStart(block, block); } @@ -34648,12 +35709,12 @@ var ts; } emitToken(15 /* OpenBraceToken */, node.pos); increaseIndent(); - if (node.kind === 223 /* ModuleBlock */) { - ts.Debug.assert(node.parent.kind === 222 /* ModuleDeclaration */); + if (node.kind === 225 /* ModuleBlock */) { + ts.Debug.assert(node.parent.kind === 224 /* ModuleDeclaration */); emitCaptureThisForNodeIfNecessary(node.parent); } emitLines(node.statements); - if (node.kind === 223 /* ModuleBlock */) { + if (node.kind === 225 /* ModuleBlock */) { emitTempDeclarations(/*newLine*/ true); } decreaseIndent(); @@ -34661,7 +35722,7 @@ var ts; emitToken(16 /* CloseBraceToken */, node.statements.end); } function emitEmbeddedStatement(node) { - if (node.kind === 196 /* Block */) { + if (node.kind === 198 /* Block */) { write(" "); emit(node); } @@ -34673,7 +35734,7 @@ var ts; } } function emitExpressionStatement(node) { - emitParenthesizedIf(node.expression, /*parenthesized*/ node.expression.kind === 178 /* ArrowFunction */); + emitParenthesizedIf(node.expression, /*parenthesized*/ node.expression.kind === 179 /* ArrowFunction */); write(";"); } function emitIfStatement(node) { @@ -34686,7 +35747,7 @@ var ts; if (node.elseStatement) { writeLine(); emitToken(80 /* ElseKeyword */, node.thenStatement.end); - if (node.elseStatement.kind === 200 /* IfStatement */) { + if (node.elseStatement.kind === 202 /* IfStatement */) { write(" "); emit(node.elseStatement); } @@ -34706,7 +35767,7 @@ var ts; else { emitNormalLoopBody(node, /*emitAsEmbeddedStatement*/ true); } - if (node.statement.kind === 196 /* Block */) { + if (node.statement.kind === 198 /* Block */) { write(" "); } else { @@ -34796,7 +35857,7 @@ var ts; } else { var loop = convertLoopBody(node); - if (node.parent.kind === 211 /* LabeledStatement */) { + if (node.parent.kind === 213 /* LabeledStatement */) { // if parent of the loop was labeled statement - attach the label to loop skipping converted loop body emitLabelAndColon(node.parent); } @@ -34807,11 +35868,11 @@ var ts; var functionName = makeUniqueName("_loop"); var loopInitializer; switch (node.kind) { - case 203 /* ForStatement */: - case 204 /* ForInStatement */: - case 205 /* ForOfStatement */: + case 205 /* ForStatement */: + case 206 /* ForInStatement */: + case 207 /* ForOfStatement */: var initializer = node.initializer; - if (initializer && initializer.kind === 216 /* VariableDeclarationList */) { + if (initializer && initializer.kind === 218 /* VariableDeclarationList */) { loopInitializer = node.initializer; } break; @@ -34826,7 +35887,7 @@ var ts; processVariableDeclaration(varDeclaration.name); } } - var bodyIsBlock = node.statement.kind === 196 /* Block */; + var bodyIsBlock = node.statement.kind === 198 /* Block */; var paramList = loopParameters ? loopParameters.join(", ") : ""; writeLine(); write("var " + functionName + " = function(" + paramList + ")"); @@ -34861,7 +35922,7 @@ var ts; emit(node.statement); } writeLine(); - // end of loop body -> copy out parameter + // end of loop body -> copy out parameter copyLoopOutParameters(convertedLoopState, 1 /* ToOutParameter */, /*emitAsStatements*/ true); decreaseIndent(); writeLine(); @@ -34968,7 +36029,7 @@ var ts; if (emitAsEmbeddedStatement) { emitEmbeddedStatement(node.statement); } - else if (node.statement.kind === 196 /* Block */) { + else if (node.statement.kind === 198 /* Block */) { emitLines(node.statement.statements); } else { @@ -35009,7 +36070,8 @@ var ts; } // loop is considered simple if it does not have any return statements or break\continue that transfer control outside of the loop // simple loops are emitted as just 'loop()'; - var isSimpleLoop = !loop.state.nonLocalJumps && + // NOTE: if loop uses only 'continue' it still will be emitted as simple loop + var isSimpleLoop = !(loop.state.nonLocalJumps & ~4 /* Continue */) && !loop.state.labeledNonLocalBreaks && !loop.state.labeledNonLocalContinues; var loopResult = makeUniqueName("state"); @@ -35044,10 +36106,6 @@ var ts; write("if (" + loopResult + " === \"break\") break;"); writeLine(); } - if (loop.state.nonLocalJumps & 4 /* Continue */) { - write("if (" + loopResult + " === \"continue\") continue;"); - writeLine(); - } // in case of labeled breaks emit code that either breaks to some known label inside outer loop or delegates jump decision to outer loop emitDispatchTableForLabeledJumps(loopResult, loop.state, convertedLoopState); } @@ -35102,7 +36160,7 @@ var ts; var endPos = emitToken(86 /* ForKeyword */, node.pos); write(" "); endPos = emitToken(17 /* OpenParenToken */, endPos); - if (node.initializer && node.initializer.kind === 216 /* VariableDeclarationList */) { + if (node.initializer && node.initializer.kind === 218 /* VariableDeclarationList */) { var variableDeclarationList = node.initializer; var startIsEmitted = tryEmitStartOfVariableDeclarationList(variableDeclarationList); if (startIsEmitted) { @@ -35128,7 +36186,7 @@ var ts; } } function emitForInOrForOfStatement(node) { - if (languageVersion < 2 /* ES6 */ && node.kind === 205 /* ForOfStatement */) { + if (languageVersion < 2 /* ES6 */ && node.kind === 207 /* ForOfStatement */) { emitLoop(node, emitDownLevelForOfStatementWorker); } else { @@ -35139,7 +36197,7 @@ var ts; var endPos = emitToken(86 /* ForKeyword */, node.pos); write(" "); endPos = emitToken(17 /* OpenParenToken */, endPos); - if (node.initializer.kind === 216 /* VariableDeclarationList */) { + if (node.initializer.kind === 218 /* VariableDeclarationList */) { var variableDeclarationList = node.initializer; if (variableDeclarationList.declarations.length >= 1) { tryEmitStartOfVariableDeclarationList(variableDeclarationList); @@ -35149,7 +36207,7 @@ var ts; else { emit(node.initializer); } - if (node.kind === 204 /* ForInStatement */) { + if (node.kind === 206 /* ForInStatement */) { write(" in "); } else { @@ -35239,7 +36297,7 @@ var ts; // let v = _a[_i]; var rhsIterationValue = createElementAccessExpression(rhsReference, counter); emitStart(node.initializer); - if (node.initializer.kind === 216 /* VariableDeclarationList */) { + if (node.initializer.kind === 218 /* VariableDeclarationList */) { write("var "); var variableDeclarationList = node.initializer; if (variableDeclarationList.declarations.length > 0) { @@ -35269,7 +36327,7 @@ var ts; // Initializer is an expression. Emit the expression in the body, so that it's // evaluated on every iteration. var assignmentExpression = createBinaryExpression(node.initializer, 56 /* EqualsToken */, rhsIterationValue, /*startsOnNewLine*/ false); - if (node.initializer.kind === 168 /* ArrayLiteralExpression */ || node.initializer.kind === 169 /* ObjectLiteralExpression */) { + if (node.initializer.kind === 169 /* ArrayLiteralExpression */ || node.initializer.kind === 170 /* ObjectLiteralExpression */) { // This is a destructuring pattern, so call emitDestructuring instead of emit. Calling emit will not work, because it will cause // the BinaryExpression to be passed in instead of the expression statement, which will cause emitDestructuring to crash. emitDestructuring(assignmentExpression, /*isAssignmentExpressionStatement*/ true, /*value*/ undefined); @@ -35297,7 +36355,7 @@ var ts; // it is possible if either // - break\continue is statement labeled and label is located inside the converted loop // - break\continue is non-labeled and located in non-converted loop\switch statement - var jump = node.kind === 207 /* BreakStatement */ ? 2 /* Break */ : 4 /* Continue */; + var jump = node.kind === 209 /* BreakStatement */ ? 2 /* Break */ : 4 /* Continue */; var canUseBreakOrContinue = (node.label && convertedLoopState.labels && convertedLoopState.labels[node.label.text]) || (!node.label && (convertedLoopState.allowedNonLabeledJumps & jump)); if (!canUseBreakOrContinue) { @@ -35305,18 +36363,19 @@ var ts; // explicit exit from loop -> copy out parameters copyLoopOutParameters(convertedLoopState, 1 /* ToOutParameter */, /*emitAsStatements*/ false); if (!node.label) { - if (node.kind === 207 /* BreakStatement */) { + if (node.kind === 209 /* BreakStatement */) { convertedLoopState.nonLocalJumps |= 2 /* Break */; write("\"break\";"); } else { convertedLoopState.nonLocalJumps |= 4 /* Continue */; + // note: return value is emitted only to simplify debugging, call to converted loop body does not do any dispatching on it. write("\"continue\";"); } } else { var labelMarker = void 0; - if (node.kind === 207 /* BreakStatement */) { + if (node.kind === 209 /* BreakStatement */) { labelMarker = "break-" + node.label.text; setLabeledJump(convertedLoopState, /*isBreak*/ true, node.label.text, labelMarker); } @@ -35329,7 +36388,7 @@ var ts; return; } } - emitToken(node.kind === 207 /* BreakStatement */ ? 70 /* BreakKeyword */ : 75 /* ContinueKeyword */, node.pos); + emitToken(node.kind === 209 /* BreakStatement */ ? 70 /* BreakKeyword */ : 75 /* ContinueKeyword */, node.pos); emitOptional(" ", node.label); write(";"); } @@ -35395,7 +36454,7 @@ var ts; ts.getLineOfLocalPositionFromLineMap(currentLineMap, ts.skipTrivia(currentText, node2.pos)); } function emitCaseOrDefaultClause(node) { - if (node.kind === 245 /* CaseClause */) { + if (node.kind === 248 /* CaseClause */) { write("case "); emit(node.expression); write(":"); @@ -35464,7 +36523,7 @@ var ts; function getContainingModule(node) { do { node = node.parent; - } while (node && node.kind !== 222 /* ModuleDeclaration */); + } while (node && node.kind !== 224 /* ModuleDeclaration */); return node; } function emitContainingModuleName(node) { @@ -35489,19 +36548,19 @@ var ts; function createVoidZero() { var zero = ts.createSynthesizedNode(8 /* NumericLiteral */); zero.text = "0"; - var result = ts.createSynthesizedNode(181 /* VoidExpression */); + var result = ts.createSynthesizedNode(182 /* VoidExpression */); result.expression = zero; return result; } function emitEs6ExportDefaultCompat(node) { - if (node.parent.kind === 252 /* SourceFile */) { - ts.Debug.assert(!!(node.flags & 512 /* Default */) || node.kind === 231 /* ExportAssignment */); + if (node.parent.kind === 255 /* SourceFile */) { + ts.Debug.assert(!!(node.flags & 512 /* Default */) || node.kind === 234 /* ExportAssignment */); // only allow export default at a source file level if (modulekind === ts.ModuleKind.CommonJS || modulekind === ts.ModuleKind.AMD || modulekind === ts.ModuleKind.UMD) { if (!isEs6Module) { if (languageVersion !== 0 /* ES3 */) { // default value of configurable, enumerable, writable are `false`. - write("Object.defineProperty(exports, \"__esModule\", { value: true });"); + write('Object.defineProperty(exports, "__esModule", { value: true });'); writeLine(); } else { @@ -35535,7 +36594,7 @@ var ts; if (node.flags & 512 /* Default */) { emitEs6ExportDefaultCompat(node); if (languageVersion === 0 /* ES3 */) { - write("exports[\"default\"]"); + write('exports["default"]'); } else { write("exports.default"); @@ -35601,7 +36660,7 @@ var ts; emitNodeWithCommentsAndWithoutSourcemap(name); write("\", "); } - var isVariableDeclarationOrBindingElement = name.parent && (name.parent.kind === 215 /* VariableDeclaration */ || name.parent.kind === 167 /* BindingElement */); + var isVariableDeclarationOrBindingElement = name.parent && (name.parent.kind === 217 /* VariableDeclaration */ || name.parent.kind === 168 /* BindingElement */); // If this is first var declaration, we need to start at var/let/const keyword instead // otherwise use nodeForSourceMap as the start position emitStart(isFirstVariableDeclaration(nodeForSourceMap) ? nodeForSourceMap.parent : nodeForSourceMap); @@ -35635,8 +36694,8 @@ var ts; return identifier; } function isFirstVariableDeclaration(root) { - return root.kind === 215 /* VariableDeclaration */ && - root.parent.kind === 216 /* VariableDeclarationList */ && + return root.kind === 217 /* VariableDeclaration */ && + root.parent.kind === 218 /* VariableDeclarationList */ && root.parent.declarations[0] === root; } function emitDestructuring(root, isAssignmentExpressionStatement, value) { @@ -35646,15 +36705,15 @@ var ts; // Also temporary variables should be explicitly allocated for source level declarations when module target is system // because actual variable declarations are hoisted var canDefineTempVariablesInPlace = false; - if (root.kind === 215 /* VariableDeclaration */) { + if (root.kind === 217 /* VariableDeclaration */) { var isExported = ts.getCombinedNodeFlags(root) & 1 /* Export */; var isSourceLevelForSystemModuleKind = shouldHoistDeclarationInSystemJsModule(root); canDefineTempVariablesInPlace = !isExported && !isSourceLevelForSystemModuleKind; } - else if (root.kind === 140 /* Parameter */) { + else if (root.kind === 141 /* Parameter */) { canDefineTempVariablesInPlace = true; } - if (root.kind === 185 /* BinaryExpression */) { + if (root.kind === 186 /* BinaryExpression */) { emitAssignmentExpression(root); } else { @@ -35689,14 +36748,14 @@ var ts; // If the temporary variable needs to be emitted use the source Map node for assignment of that statement value = ensureIdentifier(value, /*reuseIdentifierExpressions*/ true, sourceMapNode); // Return the expression 'value === void 0 ? defaultValue : value' - var equals = ts.createSynthesizedNode(185 /* BinaryExpression */); + var equals = ts.createSynthesizedNode(186 /* BinaryExpression */); equals.left = value; equals.operatorToken = ts.createSynthesizedNode(32 /* EqualsEqualsEqualsToken */); equals.right = createVoidZero(); return createConditionalExpression(equals, defaultValue, value); } function createConditionalExpression(condition, whenTrue, whenFalse) { - var cond = ts.createSynthesizedNode(186 /* ConditionalExpression */); + var cond = ts.createSynthesizedNode(187 /* ConditionalExpression */); cond.condition = condition; cond.questionToken = ts.createSynthesizedNode(53 /* QuestionToken */); cond.whenTrue = whenTrue; @@ -35711,7 +36770,7 @@ var ts; } function createPropertyAccessForDestructuringProperty(object, propName) { var index; - var nameIsComputed = propName.kind === 138 /* ComputedPropertyName */; + var nameIsComputed = propName.kind === 139 /* ComputedPropertyName */; if (nameIsComputed) { // TODO to handle when we look into sourcemaps for computed properties, for now use propName index = ensureIdentifier(propName.expression, /*reuseIdentifierExpressions*/ false, propName); @@ -35731,7 +36790,7 @@ var ts; : createElementAccessExpression(object, index); } function createSliceCall(value, sliceIndex) { - var call = ts.createSynthesizedNode(172 /* CallExpression */); + var call = ts.createSynthesizedNode(173 /* CallExpression */); var sliceIdentifier = ts.createSynthesizedNode(69 /* Identifier */); sliceIdentifier.text = "slice"; call.expression = createPropertyAccessExpression(value, sliceIdentifier); @@ -35749,9 +36808,9 @@ var ts; } for (var _a = 0, properties_5 = properties; _a < properties_5.length; _a++) { var p = properties_5[_a]; - if (p.kind === 249 /* PropertyAssignment */ || p.kind === 250 /* ShorthandPropertyAssignment */) { + if (p.kind === 252 /* PropertyAssignment */ || p.kind === 253 /* ShorthandPropertyAssignment */) { var propName = p.name; - var target_1 = p.kind === 250 /* ShorthandPropertyAssignment */ ? p : p.initializer || propName; + var target_1 = p.kind === 253 /* ShorthandPropertyAssignment */ ? p : p.initializer || propName; // Assignment for target = value.propName should highlight whole property, hence use p as source map node emitDestructuringAssignment(target_1, createPropertyAccessForDestructuringProperty(value, propName), p); } @@ -35767,9 +36826,9 @@ var ts; } for (var i = 0; i < elements.length; i++) { var e = elements[i]; - if (e.kind !== 191 /* OmittedExpression */) { + if (e.kind !== 192 /* OmittedExpression */) { // Assignment for target = value.propName should highlight whole property, hence use e as source map node - if (e.kind !== 189 /* SpreadElementExpression */) { + if (e.kind !== 190 /* SpreadElementExpression */) { emitDestructuringAssignment(e, createElementAccessExpression(value, createNumericLiteral(i)), e); } else if (i === elements.length - 1) { @@ -35780,20 +36839,20 @@ var ts; } function emitDestructuringAssignment(target, value, sourceMapNode) { // When emitting target = value use source map node to highlight, including any temporary assignments needed for this - if (target.kind === 250 /* ShorthandPropertyAssignment */) { + if (target.kind === 253 /* ShorthandPropertyAssignment */) { if (target.objectAssignmentInitializer) { value = createDefaultValueCheck(value, target.objectAssignmentInitializer, sourceMapNode); } target = target.name; } - else if (target.kind === 185 /* BinaryExpression */ && target.operatorToken.kind === 56 /* EqualsToken */) { + else if (target.kind === 186 /* BinaryExpression */ && target.operatorToken.kind === 56 /* EqualsToken */) { value = createDefaultValueCheck(value, target.right, sourceMapNode); target = target.left; } - if (target.kind === 169 /* ObjectLiteralExpression */) { + if (target.kind === 170 /* ObjectLiteralExpression */) { emitObjectLiteralAssignment(target, value, sourceMapNode); } - else if (target.kind === 168 /* ArrayLiteralExpression */) { + else if (target.kind === 169 /* ArrayLiteralExpression */) { emitArrayLiteralAssignment(target, value, sourceMapNode); } else { @@ -35815,7 +36874,7 @@ var ts; emitDestructuringAssignment(target, value, ts.nodeIsSynthesized(root) ? target : root); } else { - if (root.parent.kind !== 176 /* ParenthesizedExpression */) { + if (root.parent.kind !== 177 /* ParenthesizedExpression */) { write("("); } // Temporary assignment needed to emit root should highlight whole binary expression @@ -35824,7 +36883,7 @@ var ts; emitDestructuringAssignment(target, value, root); write(", "); emit(value); - if (root.parent.kind !== 176 /* ParenthesizedExpression */) { + if (root.parent.kind !== 177 /* ParenthesizedExpression */) { write(")"); } } @@ -35852,12 +36911,12 @@ var ts; } for (var i = 0; i < numElements; i++) { var element = elements[i]; - if (pattern.kind === 165 /* ObjectBindingPattern */) { + if (pattern.kind === 166 /* ObjectBindingPattern */) { // Rewrite element to a declaration with an initializer that fetches property var propName = element.propertyName || element.name; emitBindingElement(element, createPropertyAccessForDestructuringProperty(value, propName)); } - else if (element.kind !== 191 /* OmittedExpression */) { + else if (element.kind !== 192 /* OmittedExpression */) { if (!element.dotDotDotToken) { // Rewrite element to a declaration that accesses array element at index i emitBindingElement(element, createElementAccessExpression(value, createNumericLiteral(i))); @@ -35876,12 +36935,26 @@ var ts; } function emitVariableDeclaration(node) { if (ts.isBindingPattern(node.name)) { - if (languageVersion < 2 /* ES6 */) { - emitDestructuring(node, /*isAssignmentExpressionStatement*/ false); - } - else { + var isExported = ts.getCombinedNodeFlags(node) & 1 /* Export */; + if (languageVersion >= 2 /* ES6 */ && (!isExported || modulekind === ts.ModuleKind.ES6)) { + // emit ES6 destructuring only if target module is ES6 or variable is not exported + // exported variables in CJS/AMD are prefixed with 'exports.' so result javascript { exports.toString } = 1; is illegal + var isTopLevelDeclarationInSystemModule = modulekind === ts.ModuleKind.System && + shouldHoistVariable(node, /*checkIfSourceFileLevelDecl*/ true); + if (isTopLevelDeclarationInSystemModule) { + // In System modules top level variables are hoisted + // so variable declarations with destructuring are turned into destructuring assignments. + // As a result, they will need parentheses to disambiguate object binding assignments from blocks. + write("("); + } emit(node.name); emitOptional(" = ", node.initializer); + if (isTopLevelDeclarationInSystemModule) { + write(")"); + } + } + else { + emitDestructuring(node, /*isAssignmentExpressionStatement*/ false); } } else { @@ -35917,12 +36990,12 @@ var ts; var isCapturedInFunction = flags & 131072 /* CapturedBlockScopedBinding */; var isDeclaredInLoop = flags & 262144 /* BlockScopedBindingInLoop */; var emittedAsTopLevel = ts.isBlockScopedContainerTopLevel(container) || - (isCapturedInFunction && isDeclaredInLoop && container.kind === 196 /* Block */ && ts.isIterationStatement(container.parent, /*lookInLabeledStatements*/ false)); + (isCapturedInFunction && isDeclaredInLoop && container.kind === 198 /* Block */ && ts.isIterationStatement(container.parent, /*lookInLabeledStatements*/ false)); var emittedAsNestedLetDeclaration = ts.getCombinedNodeFlags(node) & 1024 /* Let */ && !emittedAsTopLevel; var emitExplicitInitializer = emittedAsNestedLetDeclaration && - container.kind !== 204 /* ForInStatement */ && - container.kind !== 205 /* ForOfStatement */ && + container.kind !== 206 /* ForInStatement */ && + container.kind !== 207 /* ForOfStatement */ && (!resolver.isDeclarationWithCollidingName(node) || (isDeclaredInLoop && !isCapturedInFunction && !ts.isIterationStatement(container, /*lookInLabeledStatements*/ false))); if (emitExplicitInitializer) { @@ -35943,7 +37016,7 @@ var ts; } } function emitExportVariableAssignments(node) { - if (node.kind === 191 /* OmittedExpression */) { + if (node.kind === 192 /* OmittedExpression */) { return; } var name = node.name; @@ -35957,7 +37030,7 @@ var ts; function isES6ExportedDeclaration(node) { return !!(node.flags & 1 /* Export */) && modulekind === ts.ModuleKind.ES6 && - node.parent.kind === 252 /* SourceFile */; + node.parent.kind === 255 /* SourceFile */; } function emitVariableStatement(node) { var startIsEmitted = false; @@ -36008,12 +37081,12 @@ var ts; function emitParameter(node) { if (languageVersion < 2 /* ES6 */) { if (ts.isBindingPattern(node.name)) { - var name_26 = createTempVariable(0 /* Auto */); + var name_28 = createTempVariable(0 /* Auto */); if (!tempParameters) { tempParameters = []; } - tempParameters.push(name_26); - emit(name_26); + tempParameters.push(name_28); + emit(name_28); } else { emit(node.name); @@ -36118,12 +37191,12 @@ var ts; } } function emitAccessor(node) { - write(node.kind === 147 /* GetAccessor */ ? "get " : "set "); + write(node.kind === 148 /* GetAccessor */ ? "get " : "set "); emit(node.name); emitSignatureAndBody(node); } function shouldEmitAsArrowFunction(node) { - return node.kind === 178 /* ArrowFunction */ && languageVersion >= 2 /* ES6 */; + return node.kind === 179 /* ArrowFunction */ && languageVersion >= 2 /* ES6 */; } function emitDeclarationName(node) { if (node.name) { @@ -36134,11 +37207,11 @@ var ts; } } function shouldEmitFunctionName(node) { - if (node.kind === 177 /* FunctionExpression */) { + if (node.kind === 178 /* FunctionExpression */) { // Emit name if one is present return !!node.name; } - if (node.kind === 217 /* FunctionDeclaration */) { + if (node.kind === 219 /* FunctionDeclaration */) { // Emit name if one is present, or emit generated name in down-level case (for export default case) return !!node.name || modulekind !== ts.ModuleKind.ES6; } @@ -36150,12 +37223,12 @@ var ts; // TODO (yuisu) : we should not have special cases to condition emitting comments // but have one place to fix check for these conditions. var kind = node.kind, parent = node.parent; - if (kind !== 145 /* MethodDeclaration */ && - kind !== 144 /* MethodSignature */ && + if (kind !== 146 /* MethodDeclaration */ && + kind !== 145 /* MethodSignature */ && parent && - parent.kind !== 249 /* PropertyAssignment */ && - parent.kind !== 172 /* CallExpression */ && - parent.kind !== 168 /* ArrayLiteralExpression */) { + parent.kind !== 252 /* PropertyAssignment */ && + parent.kind !== 173 /* CallExpression */ && + parent.kind !== 169 /* ArrayLiteralExpression */) { // 1. Methods will emit comments at their assignment declaration sites. // // 2. If the function is a property of object literal, emitting leading-comments @@ -36194,11 +37267,13 @@ var ts; emitDeclarationName(node); } emitSignatureAndBody(node); - if (modulekind !== ts.ModuleKind.ES6 && kind === 217 /* FunctionDeclaration */ && parent === currentSourceFile && node.name) { + if (modulekind !== ts.ModuleKind.ES6 && kind === 219 /* FunctionDeclaration */ && parent === currentSourceFile && node.name) { emitExportMemberAssignments(node.name); } emitEnd(node); - if (kind !== 145 /* MethodDeclaration */ && kind !== 144 /* MethodSignature */) { + if (kind !== 146 /* MethodDeclaration */ && + kind !== 145 /* MethodSignature */ && + kind !== 179 /* ArrowFunction */) { emitTrailingComments(node); } } @@ -36215,8 +37290,9 @@ var ts; write("("); if (node) { var parameters = node.parameters; + var skipCount = node.parameters.length && node.parameters[0].name.text === "this" ? 1 : 0; var omitCount = languageVersion < 2 /* ES6 */ && ts.hasRestParameter(node) ? 1 : 0; - emitList(parameters, 0, parameters.length - omitCount, /*multiLine*/ false, /*trailingComma*/ false); + emitList(parameters, skipCount, parameters.length - omitCount - skipCount, /*multiLine*/ false, /*trailingComma*/ false); } write(")"); decreaseIndent(); @@ -36231,7 +37307,7 @@ var ts; } function emitAsyncFunctionBodyForES6(node) { var promiseConstructor = ts.getEntityNameFromTypeNode(node.type); - var isArrowFunction = node.kind === 178 /* ArrowFunction */; + var isArrowFunction = node.kind === 179 /* ArrowFunction */; var hasLexicalArguments = (resolver.getNodeCheckFlags(node) & 8192 /* CaptureArguments */) !== 0; // An async function is emit as an outer function that calls an inner // generator function. To preserve lexical bindings, we pass the current @@ -36353,7 +37429,7 @@ var ts; write(" { }"); } else { - if (node.body.kind === 196 /* Block */) { + if (node.body.kind === 198 /* Block */) { emitBlockFunctionBody(node, node.body); } else { @@ -36412,10 +37488,10 @@ var ts; write(" "); // Unwrap all type assertions. var current = body; - while (current.kind === 175 /* TypeAssertionExpression */) { + while (current.kind === 176 /* TypeAssertionExpression */) { current = current.expression; } - emitParenthesizedIf(body, current.kind === 169 /* ObjectLiteralExpression */); + emitParenthesizedIf(body, current.kind === 170 /* ObjectLiteralExpression */); } function emitDownLevelExpressionFunctionBody(node, body) { write(" {"); @@ -36500,7 +37576,7 @@ var ts; return undefined; } var statement = statements[index]; - if (statement.kind === 199 /* ExpressionStatement */) { + if (statement.kind === 201 /* ExpressionStatement */) { return ts.isSuperCallExpression(statement.expression) ? statement : undefined; } } @@ -36529,7 +37605,7 @@ var ts; emitNodeWithCommentsAndWithoutSourcemap(memberName); write("]"); } - else if (memberName.kind === 138 /* ComputedPropertyName */) { + else if (memberName.kind === 139 /* ComputedPropertyName */) { emitComputedPropertyName(memberName); } else { @@ -36541,7 +37617,7 @@ var ts; var properties = []; for (var _a = 0, _b = node.members; _a < _b.length; _a++) { var member = _b[_a]; - if (member.kind === 143 /* PropertyDeclaration */ && isStatic === ((member.flags & 32 /* Static */) !== 0) && member.initializer) { + if (member.kind === 144 /* PropertyDeclaration */ && isStatic === ((member.flags & 32 /* Static */) !== 0) && member.initializer) { properties.push(member); } } @@ -36581,11 +37657,11 @@ var ts; } function emitMemberFunctionsForES5AndLower(node) { ts.forEach(node.members, function (member) { - if (member.kind === 195 /* SemicolonClassElement */) { + if (member.kind === 197 /* SemicolonClassElement */) { writeLine(); write(";"); } - else if (member.kind === 145 /* MethodDeclaration */ || node.kind === 144 /* MethodSignature */) { + else if (member.kind === 146 /* MethodDeclaration */ || node.kind === 145 /* MethodSignature */) { if (!member.body) { return emitCommentsOnNotEmittedNode(member); } @@ -36602,7 +37678,7 @@ var ts; write(";"); emitTrailingComments(member); } - else if (member.kind === 147 /* GetAccessor */ || member.kind === 148 /* SetAccessor */) { + else if (member.kind === 148 /* GetAccessor */ || member.kind === 149 /* SetAccessor */) { var accessors = ts.getAllAccessorDeclarations(node.members, member); if (member === accessors.firstAccessor) { writeLine(); @@ -36652,22 +37728,22 @@ var ts; function emitMemberFunctionsForES6AndHigher(node) { for (var _a = 0, _b = node.members; _a < _b.length; _a++) { var member = _b[_a]; - if ((member.kind === 145 /* MethodDeclaration */ || node.kind === 144 /* MethodSignature */) && !member.body) { + if ((member.kind === 146 /* MethodDeclaration */ || node.kind === 145 /* MethodSignature */) && !member.body) { emitCommentsOnNotEmittedNode(member); } - else if (member.kind === 145 /* MethodDeclaration */ || - member.kind === 147 /* GetAccessor */ || - member.kind === 148 /* SetAccessor */) { + else if (member.kind === 146 /* MethodDeclaration */ || + member.kind === 148 /* GetAccessor */ || + member.kind === 149 /* SetAccessor */) { writeLine(); emitLeadingComments(member); emitStart(member); if (member.flags & 32 /* Static */) { write("static "); } - if (member.kind === 147 /* GetAccessor */) { + if (member.kind === 148 /* GetAccessor */) { write("get "); } - else if (member.kind === 148 /* SetAccessor */) { + else if (member.kind === 149 /* SetAccessor */) { write("set "); } if (member.asteriskToken) { @@ -36678,7 +37754,7 @@ var ts; emitEnd(member); emitTrailingComments(member); } - else if (member.kind === 195 /* SemicolonClassElement */) { + else if (member.kind === 197 /* SemicolonClassElement */) { writeLine(); write(";"); } @@ -36707,11 +37783,11 @@ var ts; var hasInstancePropertyWithInitializer = false; // Emit the constructor overload pinned comments ts.forEach(node.members, function (member) { - if (member.kind === 146 /* Constructor */ && !member.body) { + if (member.kind === 147 /* Constructor */ && !member.body) { emitCommentsOnNotEmittedNode(member); } // Check if there is any non-static property assignment - if (member.kind === 143 /* PropertyDeclaration */ && member.initializer && (member.flags & 32 /* Static */) === 0) { + if (member.kind === 144 /* PropertyDeclaration */ && member.initializer && (member.flags & 32 /* Static */) === 0) { hasInstancePropertyWithInitializer = true; } }); @@ -36825,9 +37901,11 @@ var ts; } function emitClassLikeDeclarationForES6AndHigher(node) { var decoratedClassAlias; - var thisNodeIsDecorated = ts.nodeIsDecorated(node); - if (node.kind === 218 /* ClassDeclaration */) { - if (thisNodeIsDecorated) { + var isHoistedDeclarationInSystemModule = shouldHoistDeclarationInSystemJsModule(node); + var isDecorated = ts.nodeIsDecorated(node); + var rewriteAsClassExpression = isDecorated || isHoistedDeclarationInSystemModule; + if (node.kind === 220 /* ClassDeclaration */) { + if (rewriteAsClassExpression) { // When we emit an ES6 class that has a class decorator, we must tailor the // emit to certain specific cases. // @@ -36907,7 +37985,10 @@ var ts; // --------------------------------------------------------------------- // [Example 4] // - if (resolver.getNodeCheckFlags(node) & 524288 /* ClassWithBodyScopedClassBinding */) { + // NOTE: we reuse the same rewriting logic for cases when targeting ES6 and module kind is System. + // Because of hoisting top level class declaration need to be emitted as class expressions. + // Double bind case is only required if node is decorated. + if (isDecorated && resolver.getNodeCheckFlags(node) & 524288 /* ClassWithBodyScopedClassBinding */) { decoratedClassAlias = ts.unescapeIdentifier(makeUniqueName(node.name ? node.name.text : "default")); decoratedClassAliases[ts.getNodeId(node)] = decoratedClassAlias; write("let " + decoratedClassAlias + ";"); @@ -36916,7 +37997,9 @@ var ts; if (isES6ExportedDeclaration(node) && !(node.flags & 512 /* Default */)) { write("export "); } - write("let "); + if (!isHoistedDeclarationInSystemModule) { + write("let "); + } emitDeclarationName(node); if (decoratedClassAlias !== undefined) { write(" = " + decoratedClassAlias); @@ -36942,7 +38025,7 @@ var ts; // This keeps the expression as an expression, while ensuring that the static parts // of it have been initialized by the time it is used. var staticProperties = getInitializedProperties(node, /*isStatic*/ true); - var isClassExpressionWithStaticProperties = staticProperties.length > 0 && node.kind === 190 /* ClassExpression */; + var isClassExpressionWithStaticProperties = staticProperties.length > 0 && node.kind === 191 /* ClassExpression */; var tempVariable; if (isClassExpressionWithStaticProperties) { tempVariable = createAndRecordTempVariable(0 /* Auto */); @@ -36955,7 +38038,7 @@ var ts; // emit name if // - node has a name // - this is default export with static initializers - if (node.name || (node.flags & 512 /* Default */ && (staticProperties.length > 0 || modulekind !== ts.ModuleKind.ES6) && !thisNodeIsDecorated)) { + if (node.name || (node.flags & 512 /* Default */ && (staticProperties.length > 0 || modulekind !== ts.ModuleKind.ES6) && !rewriteAsClassExpression)) { write(" "); emitDeclarationName(node); } @@ -36972,7 +38055,7 @@ var ts; decreaseIndent(); writeLine(); emitToken(16 /* CloseBraceToken */, node.members.end); - if (thisNodeIsDecorated) { + if (rewriteAsClassExpression) { decoratedClassAliases[ts.getNodeId(node)] = undefined; write(";"); } @@ -37010,14 +38093,14 @@ var ts; // module), export it if (node.flags & 512 /* Default */) { // if this is a top level default export of decorated class, write the export after the declaration. - if (thisNodeIsDecorated) { + if (isDecorated) { writeLine(); write("export default "); emitDeclarationName(node); write(";"); } } - else if (node.parent.kind !== 252 /* SourceFile */) { + else if (node.parent.kind !== 255 /* SourceFile */) { writeLine(); emitStart(node); emitModuleMemberName(node); @@ -37029,7 +38112,7 @@ var ts; } } function emitClassLikeDeclarationBelowES6(node) { - if (node.kind === 218 /* ClassDeclaration */) { + if (node.kind === 220 /* ClassDeclaration */) { // source file level classes in system modules are hoisted so 'var's for them are already defined if (!shouldHoistDeclarationInSystemJsModule(node)) { write("var "); @@ -37090,11 +38173,11 @@ var ts; emit(baseTypeNode.expression); } write("))"); - if (node.kind === 218 /* ClassDeclaration */) { + if (node.kind === 220 /* ClassDeclaration */) { write(";"); } emitEnd(node); - if (node.kind === 218 /* ClassDeclaration */) { + if (node.kind === 220 /* ClassDeclaration */) { emitExportMemberAssignment(node); } } @@ -37181,7 +38264,7 @@ var ts; else { decorators = member.decorators; // we only decorate the parameters here if this is a method - if (member.kind === 145 /* MethodDeclaration */) { + if (member.kind === 146 /* MethodDeclaration */) { functionLikeMember = member; } } @@ -37238,7 +38321,7 @@ var ts; write(", "); emitExpressionForPropertyName(member.name); if (languageVersion > 0 /* ES3 */) { - if (member.kind !== 143 /* PropertyDeclaration */) { + if (member.kind !== 144 /* PropertyDeclaration */) { // We emit `null` here to indicate to `__decorate` that it can invoke `Object.getOwnPropertyDescriptor` directly. // We have this extra argument here so that we can inject an explicit property descriptor at a later date. write(", null"); @@ -37280,10 +38363,10 @@ var ts; // The caller should have already tested whether the node has decorators and whether the emitDecoratorMetadata // compiler option is set. switch (node.kind) { - case 145 /* MethodDeclaration */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: - case 143 /* PropertyDeclaration */: + case 146 /* MethodDeclaration */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: + case 144 /* PropertyDeclaration */: return true; } return false; @@ -37293,7 +38376,7 @@ var ts; // The caller should have already tested whether the node has decorators and whether the emitDecoratorMetadata // compiler option is set. switch (node.kind) { - case 145 /* MethodDeclaration */: + case 146 /* MethodDeclaration */: return true; } return false; @@ -37303,9 +38386,9 @@ var ts; // The caller should have already tested whether the node has decorators and whether the emitDecoratorMetadata // compiler option is set. switch (node.kind) { - case 218 /* ClassDeclaration */: - case 145 /* MethodDeclaration */: - case 148 /* SetAccessor */: + case 220 /* ClassDeclaration */: + case 146 /* MethodDeclaration */: + case 149 /* SetAccessor */: return true; } return false; @@ -37323,19 +38406,19 @@ var ts; // // For rules on serializing type annotations, see `serializeTypeNode`. switch (node.kind) { - case 218 /* ClassDeclaration */: + case 220 /* ClassDeclaration */: write("Function"); return; - case 143 /* PropertyDeclaration */: + case 144 /* PropertyDeclaration */: emitSerializedTypeNode(node.type); return; - case 140 /* Parameter */: + case 141 /* Parameter */: emitSerializedTypeNode(node.type); return; - case 147 /* GetAccessor */: + case 148 /* GetAccessor */: emitSerializedTypeNode(node.type); return; - case 148 /* SetAccessor */: + case 149 /* SetAccessor */: emitSerializedTypeNode(ts.getSetAccessorTypeAnnotationNode(node)); return; } @@ -37351,23 +38434,23 @@ var ts; case 103 /* VoidKeyword */: write("void 0"); return; - case 162 /* ParenthesizedType */: + case 163 /* ParenthesizedType */: emitSerializedTypeNode(node.type); return; - case 154 /* FunctionType */: - case 155 /* ConstructorType */: + case 155 /* FunctionType */: + case 156 /* ConstructorType */: write("Function"); return; - case 158 /* ArrayType */: - case 159 /* TupleType */: + case 159 /* ArrayType */: + case 160 /* TupleType */: write("Array"); return; - case 152 /* TypePredicate */: + case 153 /* TypePredicate */: case 120 /* BooleanKeyword */: write("Boolean"); return; case 131 /* StringKeyword */: - case 164 /* StringLiteralType */: + case 165 /* StringLiteralType */: write("String"); return; case 129 /* NumberKeyword */: @@ -37376,15 +38459,15 @@ var ts; case 132 /* SymbolKeyword */: write("Symbol"); return; - case 153 /* TypeReference */: + case 154 /* TypeReference */: emitSerializedTypeReferenceNode(node); return; - case 156 /* TypeQuery */: - case 157 /* TypeLiteral */: - case 160 /* UnionType */: - case 161 /* IntersectionType */: + case 157 /* TypeQuery */: + case 158 /* TypeLiteral */: + case 161 /* UnionType */: + case 162 /* IntersectionType */: case 117 /* AnyKeyword */: - case 163 /* ThisType */: + case 164 /* ThisType */: break; default: ts.Debug.fail("Cannot serialize unexpected type node."); @@ -37457,7 +38540,7 @@ var ts; // For the rules on serializing the type of each parameter declaration, see `serializeTypeOfDeclaration`. if (node) { var valueDeclaration = void 0; - if (node.kind === 218 /* ClassDeclaration */) { + if (node.kind === 220 /* ClassDeclaration */) { valueDeclaration = ts.getFirstConstructorWithBody(node); } else if (ts.isFunctionLike(node) && ts.nodeIsPresent(node.body)) { @@ -37473,10 +38556,10 @@ var ts; } if (parameters[i].dotDotDotToken) { var parameterType = parameters[i].type; - if (parameterType.kind === 158 /* ArrayType */) { + if (parameterType.kind === 159 /* ArrayType */) { parameterType = parameterType.elementType; } - else if (parameterType.kind === 153 /* TypeReference */ && parameterType.typeArguments && parameterType.typeArguments.length === 1) { + else if (parameterType.kind === 154 /* TypeReference */ && parameterType.typeArguments && parameterType.typeArguments.length === 1) { parameterType = parameterType.typeArguments[0]; } else { @@ -37553,7 +38636,7 @@ var ts; if (!shouldHoistDeclarationInSystemJsModule(node)) { // do not emit var if variable was already hoisted var isES6ExportedEnum = isES6ExportedDeclaration(node); - if (!(node.flags & 1 /* Export */) || (isES6ExportedEnum && isFirstDeclarationOfKind(node, node.symbol && node.symbol.declarations, 221 /* EnumDeclaration */))) { + if (!(node.flags & 1 /* Export */) || (isES6ExportedEnum && isFirstDeclarationOfKind(node, node.symbol && node.symbol.declarations, 223 /* EnumDeclaration */))) { emitStart(node); if (isES6ExportedEnum) { write("export "); @@ -37635,7 +38718,7 @@ var ts; } } function getInnerMostModuleDeclarationFromDottedModule(moduleDeclaration) { - if (moduleDeclaration.body.kind === 222 /* ModuleDeclaration */) { + if (moduleDeclaration.body.kind === 224 /* ModuleDeclaration */) { var recursiveInnerModule = getInnerMostModuleDeclarationFromDottedModule(moduleDeclaration.body); return recursiveInnerModule || moduleDeclaration.body; } @@ -37659,7 +38742,7 @@ var ts; var emitVarForModule = !hoistedInDeclarationScope && !isModuleMergedWithES6Class(node); if (emitVarForModule) { var isES6ExportedNamespace = isES6ExportedDeclaration(node); - if (!isES6ExportedNamespace || isFirstDeclarationOfKind(node, node.symbol && node.symbol.declarations, 222 /* ModuleDeclaration */)) { + if (!isES6ExportedNamespace || isFirstDeclarationOfKind(node, node.symbol && node.symbol.declarations, 224 /* ModuleDeclaration */)) { emitStart(node); if (isES6ExportedNamespace) { write("export "); @@ -37677,7 +38760,7 @@ var ts; write(getGeneratedNameForNode(node)); emitEnd(node.name); write(") "); - if (node.body.kind === 223 /* ModuleBlock */) { + if (node.body.kind === 225 /* ModuleBlock */) { var saveConvertedLoopState = convertedLoopState; var saveTempFlags = tempFlags; var saveTempVariables = tempVariables; @@ -37753,16 +38836,16 @@ var ts; } } function getNamespaceDeclarationNode(node) { - if (node.kind === 225 /* ImportEqualsDeclaration */) { + if (node.kind === 228 /* ImportEqualsDeclaration */) { return node; } var importClause = node.importClause; - if (importClause && importClause.namedBindings && importClause.namedBindings.kind === 228 /* NamespaceImport */) { + if (importClause && importClause.namedBindings && importClause.namedBindings.kind === 231 /* NamespaceImport */) { return importClause.namedBindings; } } function isDefaultImport(node) { - return node.kind === 226 /* ImportDeclaration */ && node.importClause && !!node.importClause.name; + return node.kind === 229 /* ImportDeclaration */ && node.importClause && !!node.importClause.name; } function emitExportImportAssignments(node) { if (ts.isAliasSymbolDeclaration(node) && resolver.isValueAliasDeclaration(node)) { @@ -37790,7 +38873,7 @@ var ts; if (shouldEmitNamedBindings) { emitLeadingComments(node.importClause.namedBindings); emitStart(node.importClause.namedBindings); - if (node.importClause.namedBindings.kind === 228 /* NamespaceImport */) { + if (node.importClause.namedBindings.kind === 231 /* NamespaceImport */) { write("* as "); emit(node.importClause.namedBindings.name); } @@ -37816,7 +38899,7 @@ var ts; } function emitExternalImportDeclaration(node) { if (ts.contains(externalImports, node)) { - var isExportedImport = node.kind === 225 /* ImportEqualsDeclaration */ && (node.flags & 1 /* Export */) !== 0; + var isExportedImport = node.kind === 228 /* ImportEqualsDeclaration */ && (node.flags & 1 /* Export */) !== 0; var namespaceDeclaration = getNamespaceDeclarationNode(node); var varOrConst = (languageVersion <= 1 /* ES5 */) ? "var " : "const "; if (modulekind !== ts.ModuleKind.AMD) { @@ -37838,7 +38921,7 @@ var ts; // import { x, y } from "foo" // import d, * as x from "foo" // import d, { x, y } from "foo" - var isNakedImport = 226 /* ImportDeclaration */ && !node.importClause; + var isNakedImport = 229 /* ImportDeclaration */ && !node.importClause; if (!isNakedImport) { write(varOrConst); write(getGeneratedNameForNode(node)); @@ -38017,8 +39100,8 @@ var ts; write("export default "); var expression = node.expression; emit(expression); - if (expression.kind !== 217 /* FunctionDeclaration */ && - expression.kind !== 218 /* ClassDeclaration */) { + if (expression.kind !== 219 /* FunctionDeclaration */ && + expression.kind !== 220 /* ClassDeclaration */) { write(";"); } emitEnd(node); @@ -38035,7 +39118,7 @@ var ts; emitEs6ExportDefaultCompat(node); emitContainingModuleName(node); if (languageVersion === 0 /* ES3 */) { - write("[\"default\"] = "); + write('["default"] = '); } else { write(".default = "); @@ -38055,7 +39138,7 @@ var ts; for (var _a = 0, _b = sourceFile.statements; _a < _b.length; _a++) { var node = _b[_a]; switch (node.kind) { - case 226 /* ImportDeclaration */: + case 229 /* ImportDeclaration */: if (!node.importClause || resolver.isReferencedAliasDeclaration(node.importClause, /*checkChildren*/ true)) { // import "mod" @@ -38065,13 +39148,13 @@ var ts; externalImports.push(node); } break; - case 225 /* ImportEqualsDeclaration */: - if (node.moduleReference.kind === 236 /* ExternalModuleReference */ && resolver.isReferencedAliasDeclaration(node)) { + case 228 /* ImportEqualsDeclaration */: + if (node.moduleReference.kind === 239 /* ExternalModuleReference */ && resolver.isReferencedAliasDeclaration(node)) { // import x = require("mod") where x is referenced externalImports.push(node); } break; - case 232 /* ExportDeclaration */: + case 235 /* ExportDeclaration */: if (node.moduleSpecifier) { if (!node.exportClause) { // export * from "mod" @@ -38089,12 +39172,12 @@ var ts; // export { x, y } for (var _c = 0, _d = node.exportClause.elements; _c < _d.length; _c++) { var specifier = _d[_c]; - var name_27 = (specifier.propertyName || specifier.name).text; - (exportSpecifiers[name_27] || (exportSpecifiers[name_27] = [])).push(specifier); + var name_29 = (specifier.propertyName || specifier.name).text; + (exportSpecifiers[name_29] || (exportSpecifiers[name_29] = [])).push(specifier); } } break; - case 231 /* ExportAssignment */: + case 234 /* ExportAssignment */: if (node.isExportEquals && !exportEquals) { // export = x exportEquals = node; @@ -38120,18 +39203,18 @@ var ts; if (namespaceDeclaration && !isDefaultImport(node)) { return ts.getTextOfNodeFromSourceText(currentText, namespaceDeclaration.name); } - if (node.kind === 226 /* ImportDeclaration */ && node.importClause) { + if (node.kind === 229 /* ImportDeclaration */ && node.importClause) { return getGeneratedNameForNode(node); } - if (node.kind === 232 /* ExportDeclaration */ && node.moduleSpecifier) { + if (node.kind === 235 /* ExportDeclaration */ && node.moduleSpecifier) { return getGeneratedNameForNode(node); } } function getExternalModuleNameText(importNode, emitRelativePathAsModuleName) { if (emitRelativePathAsModuleName) { - var name_28 = getExternalModuleNameFromDeclaration(host, resolver, importNode); - if (name_28) { - return "\"" + name_28 + "\""; + var name_30 = getExternalModuleNameFromDeclaration(host, resolver, importNode); + if (name_30) { + return "\"" + name_30 + "\""; } } var moduleName = ts.getExternalModuleName(importNode); @@ -38149,8 +39232,8 @@ var ts; for (var _a = 0, externalImports_1 = externalImports; _a < externalImports_1.length; _a++) { var importNode = externalImports_1[_a]; // do not create variable declaration for exports and imports that lack import clause - var skipNode = importNode.kind === 232 /* ExportDeclaration */ || - (importNode.kind === 226 /* ImportDeclaration */ && !importNode.importClause); + var skipNode = importNode.kind === 235 /* ExportDeclaration */ || + (importNode.kind === 229 /* ImportDeclaration */ && !importNode.importClause); if (skipNode) { continue; } @@ -38183,7 +39266,7 @@ var ts; var hasExportDeclarationWithExportClause = false; for (var _a = 0, externalImports_2 = externalImports; _a < externalImports_2.length; _a++) { var externalImport = externalImports_2[_a]; - if (externalImport.kind === 232 /* ExportDeclaration */ && externalImport.exportClause) { + if (externalImport.kind === 235 /* ExportDeclaration */ && externalImport.exportClause) { hasExportDeclarationWithExportClause = true; break; } @@ -38215,7 +39298,7 @@ var ts; } for (var _d = 0, externalImports_3 = externalImports; _d < externalImports_3.length; _d++) { var externalImport = externalImports_3[_d]; - if (externalImport.kind !== 232 /* ExportDeclaration */) { + if (externalImport.kind !== 235 /* ExportDeclaration */) { continue; } var exportDecl = externalImport; @@ -38303,12 +39386,12 @@ var ts; var seen = {}; for (var i = 0; i < hoistedVars.length; i++) { var local = hoistedVars[i]; - var name_29 = local.kind === 69 /* Identifier */ + var name_31 = local.kind === 69 /* Identifier */ ? local : local.name; - if (name_29) { + if (name_31) { // do not emit duplicate entries (in case of declaration merging) in the list of hoisted variables - var text = ts.unescapeIdentifier(name_29.text); + var text = ts.unescapeIdentifier(name_31.text); if (ts.hasProperty(seen, text)) { continue; } @@ -38319,7 +39402,7 @@ var ts; if (i !== 0) { write(", "); } - if (local.kind === 218 /* ClassDeclaration */ || local.kind === 222 /* ModuleDeclaration */ || local.kind === 221 /* EnumDeclaration */) { + if (local.kind === 220 /* ClassDeclaration */ || local.kind === 224 /* ModuleDeclaration */ || local.kind === 223 /* EnumDeclaration */) { emitDeclarationName(local); } else { @@ -38353,21 +39436,21 @@ var ts; if (node.flags & 2 /* Ambient */) { return; } - if (node.kind === 217 /* FunctionDeclaration */) { + if (node.kind === 219 /* FunctionDeclaration */) { if (!hoistedFunctionDeclarations) { hoistedFunctionDeclarations = []; } hoistedFunctionDeclarations.push(node); return; } - if (node.kind === 218 /* ClassDeclaration */) { + if (node.kind === 220 /* ClassDeclaration */) { if (!hoistedVars) { hoistedVars = []; } hoistedVars.push(node); return; } - if (node.kind === 221 /* EnumDeclaration */) { + if (node.kind === 223 /* EnumDeclaration */) { if (shouldEmitEnumDeclaration(node)) { if (!hoistedVars) { hoistedVars = []; @@ -38376,7 +39459,7 @@ var ts; } return; } - if (node.kind === 222 /* ModuleDeclaration */) { + if (node.kind === 224 /* ModuleDeclaration */) { if (shouldEmitModuleDeclaration(node)) { if (!hoistedVars) { hoistedVars = []; @@ -38385,17 +39468,17 @@ var ts; } return; } - if (node.kind === 215 /* VariableDeclaration */ || node.kind === 167 /* BindingElement */) { + if (node.kind === 217 /* VariableDeclaration */ || node.kind === 168 /* BindingElement */) { if (shouldHoistVariable(node, /*checkIfSourceFileLevelDecl*/ false)) { - var name_30 = node.name; - if (name_30.kind === 69 /* Identifier */) { + var name_32 = node.name; + if (name_32.kind === 69 /* Identifier */) { if (!hoistedVars) { hoistedVars = []; } - hoistedVars.push(name_30); + hoistedVars.push(name_32); } else { - ts.forEachChild(name_30, visit); + ts.forEachChild(name_32, visit); } } return; @@ -38426,7 +39509,7 @@ var ts; // if block scoped variables are nested in some another block then // no other functions can use them except ones that are defined at least in the same block return (ts.getCombinedNodeFlags(node) & 3072 /* BlockScoped */) === 0 || - ts.getEnclosingBlockScopeContainer(node).kind === 252 /* SourceFile */; + ts.getEnclosingBlockScopeContainer(node).kind === 255 /* SourceFile */; } function isCurrentFileSystemExternalModule() { return modulekind === ts.ModuleKind.System && isCurrentFileExternalModule; @@ -38501,21 +39584,21 @@ var ts; var entry = group_1[_a]; var importVariableName = getLocalNameForExternalImport(entry) || ""; switch (entry.kind) { - case 226 /* ImportDeclaration */: + case 229 /* ImportDeclaration */: if (!entry.importClause) { // 'import "..."' case // module is imported only for side-effects, no emit required break; } // fall-through - case 225 /* ImportEqualsDeclaration */: + case 228 /* ImportEqualsDeclaration */: ts.Debug.assert(importVariableName !== ""); writeLine(); // save import into the local write(importVariableName + " = " + parameterName + ";"); writeLine(); break; - case 232 /* ExportDeclaration */: + case 235 /* ExportDeclaration */: ts.Debug.assert(importVariableName !== ""); if (entry.exportClause) { // export {a, b as c} from 'foo' @@ -38574,10 +39657,10 @@ var ts; // - import declarations are not emitted since they are already handled in setters // - export declarations with module specifiers are not emitted since they were already written in setters // - export declarations without module specifiers are emitted preserving the order - case 217 /* FunctionDeclaration */: - case 226 /* ImportDeclaration */: + case 219 /* FunctionDeclaration */: + case 229 /* ImportDeclaration */: continue; - case 232 /* ExportDeclaration */: + case 235 /* ExportDeclaration */: if (!statement.moduleSpecifier) { for (var _a = 0, _b = statement.exportClause.elements; _a < _b.length; _a++) { var element = _b[_a]; @@ -38586,7 +39669,7 @@ var ts; } } continue; - case 225 /* ImportEqualsDeclaration */: + case 228 /* ImportEqualsDeclaration */: if (!ts.isInternalModuleImportEqualsDeclaration(statement)) { // - import equals declarations that import external modules are not emitted continue; @@ -38633,7 +39716,7 @@ var ts; continue; } // text should be quoted string - // for deduplication purposes in key remove leading and trailing quotes so 'a' and "a" will be considered the same + // for deduplication purposes in key remove leading and trailing quotes so 'a' and "a" will be considered the same var key = text.substr(1, text.length - 2); if (ts.hasProperty(groupIndices, key)) { // deduplicate/group entries in dependency list by the dependency name @@ -38676,11 +39759,11 @@ var ts; for (var _a = 0, _b = node.amdDependencies; _a < _b.length; _a++) { var amdDependency = _b[_a]; if (amdDependency.name) { - aliasedModuleNames.push("\"" + amdDependency.path + "\""); + aliasedModuleNames.push('"' + amdDependency.path + '"'); importAliasNames.push(amdDependency.name); } else { - unaliasedModuleNames.push("\"" + amdDependency.path + "\""); + unaliasedModuleNames.push('"' + amdDependency.path + '"'); } } for (var _c = 0, externalImports_4 = externalImports; _c < externalImports_4.length; _c++) { @@ -38718,7 +39801,7 @@ var ts; } function emitAMDDependencyList(_a) { var aliasedModuleNames = _a.aliasedModuleNames, unaliasedModuleNames = _a.unaliasedModuleNames; - write("[\"require\", \"exports\""); + write('["require", "exports"'); if (aliasedModuleNames.length) { write(", "); write(aliasedModuleNames.join(", ")); @@ -38750,8 +39833,8 @@ var ts; emitExportStarHelper(); emitCaptureThisForNodeIfNecessary(node); emitLinesStartingAt(node.statements, startIndex); - emitTempDeclarations(/*newLine*/ true); emitExportEquals(/*emitAsReturn*/ true); + emitTempDeclarations(/*newLine*/ true); decreaseIndent(); writeLine(); write("});"); @@ -38763,8 +39846,8 @@ var ts; emitExportStarHelper(); emitCaptureThisForNodeIfNecessary(node); emitLinesStartingAt(node.statements, startIndex); - emitTempDeclarations(/*newLine*/ true); emitExportEquals(/*emitAsReturn*/ false); + emitTempDeclarations(/*newLine*/ true); } function emitUMDModule(node) { emitEmitHelpers(node); @@ -38781,8 +39864,8 @@ var ts; emitExportStarHelper(); emitCaptureThisForNodeIfNecessary(node); emitLinesStartingAt(node.statements, startIndex); - emitTempDeclarations(/*newLine*/ true); emitExportEquals(/*emitAsReturn*/ true); + emitTempDeclarations(/*newLine*/ true); decreaseIndent(); writeLine(); write("});"); @@ -38856,7 +39939,7 @@ var ts; if (entities[m] !== undefined) { var ch = String.fromCharCode(entities[m]); // " needs to be escaped - return ch === "\"" ? "\\\"" : ch; + return ch === '"' ? "\\\"" : ch; } else { return s; @@ -38866,11 +39949,11 @@ var ts; return result; } function isJsxChildEmittable(child) { - if (child.kind === 244 /* JsxExpression */) { + if (child.kind === 247 /* JsxExpression */) { // Don't emit empty expressions return !!child.expression; } - else if (child.kind === 240 /* JsxText */) { + else if (child.kind === 243 /* JsxText */) { // Don't emit empty strings return !!getTextToEmit(child); } @@ -38895,9 +39978,9 @@ var ts; function emitJsxText(node) { switch (compilerOptions.jsx) { case 2 /* React */: - write("\""); + write('"'); write(trimReactWhitespaceAndApplyEntities(node)); - write("\""); + write('"'); break; case 1 /* Preserve */: default: @@ -38921,7 +40004,7 @@ var ts; } } function isUseStrictPrologue(node) { - return !!node.expression.text.match(/use strict/); + return node.expression.text === "use strict"; } function ensureUseStrictPrologue(startWithNewLine, writeUseStrict) { if (writeUseStrict) { @@ -38967,10 +40050,14 @@ var ts; if (!compilerOptions.noEmitHelpers) { // Only Emit __extends function when target ES5. // For target ES6 and above, we can emit classDeclaration as is. - if ((languageVersion < 2 /* ES6 */) && (!extendsEmitted && node.flags & 262144 /* HasClassExtends */)) { + if (languageVersion < 2 /* ES6 */ && !extendsEmitted && node.flags & 262144 /* HasClassExtends */) { writeLines(extendsHelper); extendsEmitted = true; } + if (compilerOptions.jsx !== 1 /* Preserve */ && !assignEmitted && (node.flags & 1073741824 /* HasJsxSpreadAttribute */)) { + writeLines(assignHelper); + assignEmitted = true; + } if (!decorateEmitted && node.flags & 524288 /* HasDecorators */) { writeLines(decorateHelper); if (compilerOptions.emitDecoratorMetadata) { @@ -39070,24 +40157,24 @@ var ts; switch (node.kind) { // All of these entities are emitted in a specialized fashion. As such, we allow // the specialized methods for each to handle the comments on the nodes. - case 219 /* InterfaceDeclaration */: - case 217 /* FunctionDeclaration */: - case 226 /* ImportDeclaration */: - case 225 /* ImportEqualsDeclaration */: - case 220 /* TypeAliasDeclaration */: - case 231 /* ExportAssignment */: + case 221 /* InterfaceDeclaration */: + case 219 /* FunctionDeclaration */: + case 229 /* ImportDeclaration */: + case 228 /* ImportEqualsDeclaration */: + case 222 /* TypeAliasDeclaration */: + case 234 /* ExportAssignment */: return true; } } function shouldEmitLeadingAndTrailingComments(node) { switch (node.kind) { - case 197 /* VariableStatement */: + case 199 /* VariableStatement */: return shouldEmitLeadingAndTrailingCommentsForVariableStatement(node); - case 222 /* ModuleDeclaration */: + case 224 /* ModuleDeclaration */: // Only emit the leading/trailing comments for a module if we're actually // emitting the module as well. return shouldEmitModuleDeclaration(node); - case 221 /* EnumDeclaration */: + case 223 /* EnumDeclaration */: // Only emit the leading/trailing comments for an enum if we're actually // emitting the module as well. return shouldEmitEnumDeclaration(node); @@ -39099,9 +40186,9 @@ var ts; // then we don't want to emit comments when we emit the body. It will have already // been taken care of when we emitted the 'return' statement for the function // expression body. - if (node.kind !== 196 /* Block */ && + if (node.kind !== 198 /* Block */ && node.parent && - node.parent.kind === 178 /* ArrowFunction */ && + node.parent.kind === 179 /* ArrowFunction */ && node.parent.body === node && compilerOptions.target <= 1 /* ES5 */) { return false; @@ -39114,13 +40201,13 @@ var ts; switch (node.kind) { case 69 /* Identifier */: return emitIdentifier(node); - case 140 /* Parameter */: + case 141 /* Parameter */: return emitParameter(node); - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: return emitMethod(node); - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: return emitAccessor(node); case 97 /* ThisKeyword */: return emitThis(node); @@ -39140,142 +40227,142 @@ var ts; case 13 /* TemplateMiddle */: case 14 /* TemplateTail */: return emitLiteral(node); - case 187 /* TemplateExpression */: + case 188 /* TemplateExpression */: return emitTemplateExpression(node); - case 194 /* TemplateSpan */: + case 196 /* TemplateSpan */: return emitTemplateSpan(node); - case 237 /* JsxElement */: - case 238 /* JsxSelfClosingElement */: + case 240 /* JsxElement */: + case 241 /* JsxSelfClosingElement */: return emitJsxElement(node); - case 240 /* JsxText */: + case 243 /* JsxText */: return emitJsxText(node); - case 244 /* JsxExpression */: + case 247 /* JsxExpression */: return emitJsxExpression(node); - case 137 /* QualifiedName */: + case 138 /* QualifiedName */: return emitQualifiedName(node); - case 165 /* ObjectBindingPattern */: + case 166 /* ObjectBindingPattern */: return emitObjectBindingPattern(node); - case 166 /* ArrayBindingPattern */: + case 167 /* ArrayBindingPattern */: return emitArrayBindingPattern(node); - case 167 /* BindingElement */: + case 168 /* BindingElement */: return emitBindingElement(node); - case 168 /* ArrayLiteralExpression */: + case 169 /* ArrayLiteralExpression */: return emitArrayLiteral(node); - case 169 /* ObjectLiteralExpression */: + case 170 /* ObjectLiteralExpression */: return emitObjectLiteral(node); - case 249 /* PropertyAssignment */: + case 252 /* PropertyAssignment */: return emitPropertyAssignment(node); - case 250 /* ShorthandPropertyAssignment */: + case 253 /* ShorthandPropertyAssignment */: return emitShorthandPropertyAssignment(node); - case 138 /* ComputedPropertyName */: + case 139 /* ComputedPropertyName */: return emitComputedPropertyName(node); - case 170 /* PropertyAccessExpression */: + case 171 /* PropertyAccessExpression */: return emitPropertyAccess(node); - case 171 /* ElementAccessExpression */: + case 172 /* ElementAccessExpression */: return emitIndexedAccess(node); - case 172 /* CallExpression */: + case 173 /* CallExpression */: return emitCallExpression(node); - case 173 /* NewExpression */: + case 174 /* NewExpression */: return emitNewExpression(node); - case 174 /* TaggedTemplateExpression */: + case 175 /* TaggedTemplateExpression */: return emitTaggedTemplateExpression(node); - case 175 /* TypeAssertionExpression */: + case 176 /* TypeAssertionExpression */: + case 194 /* AsExpression */: + case 195 /* NonNullExpression */: return emit(node.expression); - case 193 /* AsExpression */: - return emit(node.expression); - case 176 /* ParenthesizedExpression */: + case 177 /* ParenthesizedExpression */: return emitParenExpression(node); - case 217 /* FunctionDeclaration */: - case 177 /* FunctionExpression */: - case 178 /* ArrowFunction */: + case 219 /* FunctionDeclaration */: + case 178 /* FunctionExpression */: + case 179 /* ArrowFunction */: return emitFunctionDeclaration(node); - case 179 /* DeleteExpression */: + case 180 /* DeleteExpression */: return emitDeleteExpression(node); - case 180 /* TypeOfExpression */: + case 181 /* TypeOfExpression */: return emitTypeOfExpression(node); - case 181 /* VoidExpression */: + case 182 /* VoidExpression */: return emitVoidExpression(node); - case 182 /* AwaitExpression */: + case 183 /* AwaitExpression */: return emitAwaitExpression(node); - case 183 /* PrefixUnaryExpression */: + case 184 /* PrefixUnaryExpression */: return emitPrefixUnaryExpression(node); - case 184 /* PostfixUnaryExpression */: + case 185 /* PostfixUnaryExpression */: return emitPostfixUnaryExpression(node); - case 185 /* BinaryExpression */: + case 186 /* BinaryExpression */: return emitBinaryExpression(node); - case 186 /* ConditionalExpression */: + case 187 /* ConditionalExpression */: return emitConditionalExpression(node); - case 189 /* SpreadElementExpression */: + case 190 /* SpreadElementExpression */: return emitSpreadElementExpression(node); - case 188 /* YieldExpression */: + case 189 /* YieldExpression */: return emitYieldExpression(node); - case 191 /* OmittedExpression */: + case 192 /* OmittedExpression */: return; - case 196 /* Block */: - case 223 /* ModuleBlock */: + case 198 /* Block */: + case 225 /* ModuleBlock */: return emitBlock(node); - case 197 /* VariableStatement */: + case 199 /* VariableStatement */: return emitVariableStatement(node); - case 198 /* EmptyStatement */: + case 200 /* EmptyStatement */: return write(";"); - case 199 /* ExpressionStatement */: + case 201 /* ExpressionStatement */: return emitExpressionStatement(node); - case 200 /* IfStatement */: + case 202 /* IfStatement */: return emitIfStatement(node); - case 201 /* DoStatement */: + case 203 /* DoStatement */: return emitDoStatement(node); - case 202 /* WhileStatement */: + case 204 /* WhileStatement */: return emitWhileStatement(node); - case 203 /* ForStatement */: + case 205 /* ForStatement */: return emitForStatement(node); - case 205 /* ForOfStatement */: - case 204 /* ForInStatement */: + case 207 /* ForOfStatement */: + case 206 /* ForInStatement */: return emitForInOrForOfStatement(node); - case 206 /* ContinueStatement */: - case 207 /* BreakStatement */: + case 208 /* ContinueStatement */: + case 209 /* BreakStatement */: return emitBreakOrContinueStatement(node); - case 208 /* ReturnStatement */: + case 210 /* ReturnStatement */: return emitReturnStatement(node); - case 209 /* WithStatement */: + case 211 /* WithStatement */: return emitWithStatement(node); - case 210 /* SwitchStatement */: + case 212 /* SwitchStatement */: return emitSwitchStatement(node); - case 245 /* CaseClause */: - case 246 /* DefaultClause */: + case 248 /* CaseClause */: + case 249 /* DefaultClause */: return emitCaseOrDefaultClause(node); - case 211 /* LabeledStatement */: + case 213 /* LabeledStatement */: return emitLabeledStatement(node); - case 212 /* ThrowStatement */: + case 214 /* ThrowStatement */: return emitThrowStatement(node); - case 213 /* TryStatement */: + case 215 /* TryStatement */: return emitTryStatement(node); - case 248 /* CatchClause */: + case 251 /* CatchClause */: return emitCatchClause(node); - case 214 /* DebuggerStatement */: + case 216 /* DebuggerStatement */: return emitDebuggerStatement(node); - case 215 /* VariableDeclaration */: + case 217 /* VariableDeclaration */: return emitVariableDeclaration(node); - case 190 /* ClassExpression */: + case 191 /* ClassExpression */: return emitClassExpression(node); - case 218 /* ClassDeclaration */: + case 220 /* ClassDeclaration */: return emitClassDeclaration(node); - case 219 /* InterfaceDeclaration */: + case 221 /* InterfaceDeclaration */: return emitInterfaceDeclaration(node); - case 221 /* EnumDeclaration */: + case 223 /* EnumDeclaration */: return emitEnumDeclaration(node); - case 251 /* EnumMember */: + case 254 /* EnumMember */: return emitEnumMember(node); - case 222 /* ModuleDeclaration */: + case 224 /* ModuleDeclaration */: return emitModuleDeclaration(node); - case 226 /* ImportDeclaration */: + case 229 /* ImportDeclaration */: return emitImportDeclaration(node); - case 225 /* ImportEqualsDeclaration */: + case 228 /* ImportEqualsDeclaration */: return emitImportEqualsDeclaration(node); - case 232 /* ExportDeclaration */: + case 235 /* ExportDeclaration */: return emitExportDeclaration(node); - case 231 /* ExportAssignment */: + case 234 /* ExportAssignment */: return emitExportAssignment(node); - case 252 /* SourceFile */: + case 255 /* SourceFile */: return emitSourceFileNode(node); } } @@ -39314,7 +40401,7 @@ var ts; function getLeadingCommentsToEmit(node) { // Emit the leading comments only if the parent's pos doesn't match because parent should take care of emitting these comments if (node.parent) { - if (node.parent.kind === 252 /* SourceFile */ || node.pos !== node.parent.pos) { + if (node.parent.kind === 255 /* SourceFile */ || node.pos !== node.parent.pos) { if (hasDetachedComments(node.pos)) { // get comments without detached comments return getLeadingCommentsWithoutDetachedComments(); @@ -39329,7 +40416,7 @@ var ts; function getTrailingCommentsToEmit(node) { // Emit the trailing comments only if the parent's pos doesn't match because parent should take care of emitting these comments if (node.parent) { - if (node.parent.kind === 252 /* SourceFile */ || node.end !== node.parent.end) { + if (node.parent.kind === 255 /* SourceFile */ || node.end !== node.parent.end) { return ts.getTrailingCommentRanges(currentText, node.end); } } @@ -39444,6 +40531,15 @@ var ts; if (declarationFilePath) { emitSkipped = ts.writeDeclarationFile(declarationFilePath, sourceFiles, isBundledEmit, host, resolver, emitterDiagnostics) || emitSkipped; } + if (!emitSkipped && emittedFilesList) { + emittedFilesList.push(jsFilePath); + if (sourceMapFilePath) { + emittedFilesList.push(sourceMapFilePath); + } + if (declarationFilePath) { + emittedFilesList.push(declarationFilePath); + } + } } } ts.emitFiles = emitFiles; @@ -39459,10 +40555,15 @@ var ts; /* @internal */ ts.ioWriteTime = 0; /** The version of the TypeScript compiler release */ var emptyArray = []; + var defaultLibrarySearchPaths = [ + "types/", + "node_modules/", + "node_modules/@types/", + ]; ts.version = "1.9.0"; function findConfigFile(searchPath, fileExists) { - var fileName = "tsconfig.json"; while (true) { + var fileName = ts.combinePaths(searchPath, "tsconfig.json"); if (fileExists(fileName)) { return fileName; } @@ -39471,7 +40572,6 @@ var ts; break; } searchPath = parentPath; - fileName = "../" + fileName; } return undefined; } @@ -39482,18 +40582,49 @@ var ts; return ts.normalizePath(referencedFileName); } ts.resolveTripleslashReference = resolveTripleslashReference; + /* @internal */ + function computeCommonSourceDirectoryOfFilenames(fileNames, currentDirectory, getCanonicalFileName) { + var commonPathComponents; + var failed = ts.forEach(fileNames, function (sourceFile) { + // Each file contributes into common source file path + var sourcePathComponents = ts.getNormalizedPathComponents(sourceFile, currentDirectory); + sourcePathComponents.pop(); // The base file name is not part of the common directory path + if (!commonPathComponents) { + // first file + commonPathComponents = sourcePathComponents; + return; + } + for (var i = 0, n = Math.min(commonPathComponents.length, sourcePathComponents.length); i < n; i++) { + if (getCanonicalFileName(commonPathComponents[i]) !== getCanonicalFileName(sourcePathComponents[i])) { + if (i === 0) { + // Failed to find any common path component + return true; + } + // New common path found that is 0 -> i-1 + commonPathComponents.length = i; + break; + } + } + // If the sourcePathComponents was shorter than the commonPathComponents, truncate to the sourcePathComponents + if (sourcePathComponents.length < commonPathComponents.length) { + commonPathComponents.length = sourcePathComponents.length; + } + }); + // A common path can not be found when paths span multiple drives on windows, for example + if (failed) { + return ""; + } + if (!commonPathComponents) { + return currentDirectory; + } + return ts.getNormalizedPathFromPathComponents(commonPathComponents); + } + ts.computeCommonSourceDirectoryOfFilenames = computeCommonSourceDirectoryOfFilenames; function trace(host, message) { host.trace(ts.formatMessage.apply(undefined, arguments)); } function isTraceEnabled(compilerOptions, host) { - return compilerOptions.traceModuleResolution && host.trace !== undefined; - } - function startsWith(str, prefix) { - return str.lastIndexOf(prefix, 0) === 0; - } - function endsWith(str, suffix) { - var expectedPos = str.length - suffix.length; - return str.indexOf(suffix, expectedPos) === expectedPos; + return compilerOptions.traceResolution && host.trace !== undefined; } function hasZeroOrOneAsteriskCharacter(str) { var seenAsterisk = false; @@ -39521,6 +40652,150 @@ var ts; var startsWithDotSlashOrDotDotSlash = i === 0 || (i === 1 && moduleName.charCodeAt(0) === 46 /* dot */); return !startsWithDotSlashOrDotDotSlash; } + function tryReadTypesSection(packageJsonPath, baseDirectory, state) { + var jsonContent; + try { + var jsonText = state.host.readFile(packageJsonPath); + jsonContent = jsonText ? JSON.parse(jsonText) : {}; + } + catch (e) { + // gracefully handle if readFile fails or returns not JSON + jsonContent = {}; + } + var typesFile; + var fieldName; + // first try to read content of 'typings' section (backward compatibility) + if (jsonContent.typings) { + if (typeof jsonContent.typings === "string") { + fieldName = "typings"; + typesFile = jsonContent.typings; + } + else { + if (state.traceEnabled) { + trace(state.host, ts.Diagnostics.Expected_type_of_0_field_in_package_json_to_be_string_got_1, "typings", typeof jsonContent.typings); + } + } + } + // then read 'types' + if (!typesFile && jsonContent.types) { + if (typeof jsonContent.types === "string") { + fieldName = "types"; + typesFile = jsonContent.types; + } + else { + if (state.traceEnabled) { + trace(state.host, ts.Diagnostics.Expected_type_of_0_field_in_package_json_to_be_string_got_1, "types", typeof jsonContent.types); + } + } + } + if (typesFile) { + var typesFilePath = ts.normalizePath(ts.combinePaths(baseDirectory, typesFile)); + if (state.traceEnabled) { + trace(state.host, ts.Diagnostics.package_json_has_0_field_1_that_references_2, fieldName, typesFile, typesFilePath); + } + return typesFilePath; + } + return undefined; + } + var typeReferenceExtensions = [".d.ts"]; + /** + * @param {string | undefined} containingFile - file that contains type reference directive, can be undefined if containing file is unknown. + * This is possible in case if resolution is performed for directives specified via 'types' parameter. In this case initial path for secondary lookups + * is assumed to be the same as root directory of the project. + */ + function resolveTypeReferenceDirective(typeReferenceDirectiveName, containingFile, options, host) { + var traceEnabled = isTraceEnabled(options, host); + var moduleResolutionState = { + compilerOptions: options, + host: host, + skipTsx: true, + traceEnabled: traceEnabled + }; + // use typesRoot and fallback to directory that contains tsconfig if typesRoot is not set + var rootDir = options.typesRoot || (options.configFilePath ? ts.getDirectoryPath(options.configFilePath) : undefined); + if (traceEnabled) { + if (containingFile === undefined) { + if (rootDir === undefined) { + trace(host, ts.Diagnostics.Resolving_type_reference_directive_0_containing_file_not_set_root_directory_not_set, typeReferenceDirectiveName); + } + else { + trace(host, ts.Diagnostics.Resolving_type_reference_directive_0_containing_file_not_set_root_directory_1, typeReferenceDirectiveName, rootDir); + } + } + else { + if (rootDir === undefined) { + trace(host, ts.Diagnostics.Resolving_type_reference_directive_0_containing_file_1_root_directory_not_set, typeReferenceDirectiveName, containingFile); + } + else { + trace(host, ts.Diagnostics.Resolving_type_reference_directive_0_containing_file_1_root_directory_2, typeReferenceDirectiveName, containingFile, rootDir); + } + } + } + var failedLookupLocations = []; + // Check primary library paths + if (rootDir !== undefined) { + var effectivePrimarySearchPaths = options.typesSearchPaths || defaultLibrarySearchPaths; + for (var _i = 0, effectivePrimarySearchPaths_1 = effectivePrimarySearchPaths; _i < effectivePrimarySearchPaths_1.length; _i++) { + var searchPath = effectivePrimarySearchPaths_1[_i]; + var primaryPath = ts.combinePaths(rootDir, searchPath); + if (traceEnabled) { + trace(host, ts.Diagnostics.Resolving_with_primary_search_path_0, primaryPath); + } + var candidate = ts.combinePaths(primaryPath, typeReferenceDirectiveName); + var candidateDirectory = ts.getDirectoryPath(candidate); + var resolvedFile_1 = loadNodeModuleFromDirectory(typeReferenceExtensions, candidate, failedLookupLocations, !directoryProbablyExists(candidateDirectory, host), moduleResolutionState); + if (resolvedFile_1) { + if (traceEnabled) { + trace(host, ts.Diagnostics.Type_reference_directive_0_was_successfully_resolved_to_1_primary_Colon_2, typeReferenceDirectiveName, resolvedFile_1, true); + } + return { + resolvedTypeReferenceDirective: { primary: true, resolvedFileName: resolvedFile_1 }, + failedLookupLocations: failedLookupLocations + }; + } + } + } + else { + if (traceEnabled) { + trace(host, ts.Diagnostics.Root_directory_cannot_be_determined_skipping_primary_search_paths); + } + } + var resolvedFile; + var initialLocationForSecondaryLookup; + if (containingFile) { + initialLocationForSecondaryLookup = ts.getDirectoryPath(containingFile); + } + else { + initialLocationForSecondaryLookup = rootDir; + } + if (initialLocationForSecondaryLookup !== undefined) { + // check secondary locations + if (traceEnabled) { + trace(host, ts.Diagnostics.Looking_up_in_node_modules_folder_initial_location_0, initialLocationForSecondaryLookup); + } + resolvedFile = loadModuleFromNodeModules(typeReferenceDirectiveName, initialLocationForSecondaryLookup, failedLookupLocations, moduleResolutionState); + if (traceEnabled) { + if (resolvedFile) { + trace(host, ts.Diagnostics.Type_reference_directive_0_was_successfully_resolved_to_1_primary_Colon_2, typeReferenceDirectiveName, resolvedFile, false); + } + else { + trace(host, ts.Diagnostics.Type_reference_directive_0_was_not_resolved, typeReferenceDirectiveName); + } + } + } + else { + if (traceEnabled) { + trace(host, ts.Diagnostics.Containing_file_is_not_specified_and_root_directory_cannot_be_determined_skipping_lookup_in_node_modules_folder); + } + } + return { + resolvedTypeReferenceDirective: resolvedFile + ? { primary: false, resolvedFileName: resolvedFile } + : undefined, + failedLookupLocations: failedLookupLocations + }; + } + ts.resolveTypeReferenceDirective = resolveTypeReferenceDirective; function resolveModuleName(moduleName, containingFile, compilerOptions, host) { var traceEnabled = isTraceEnabled(compilerOptions, host); if (traceEnabled) { @@ -39642,10 +40917,10 @@ var ts; // in case of tsconfig.json this will happen automatically - compiler will expand relative names // using location of tsconfig.json as base location var normalizedRoot = ts.normalizePath(rootDir); - if (!endsWith(normalizedRoot, ts.directorySeparator)) { + if (!ts.endsWith(normalizedRoot, ts.directorySeparator)) { normalizedRoot += ts.directorySeparator; } - var isLongestMatchingPrefix = startsWith(candidate, normalizedRoot) && + var isLongestMatchingPrefix = ts.startsWith(candidate, normalizedRoot) && (matchedNormalizedPrefix === undefined || matchedNormalizedPrefix.length < normalizedRoot.length); if (state.traceEnabled) { trace(state.host, ts.Diagnostics.Checking_if_0_is_the_longest_matching_prefix_for_1_2, normalizedRoot, candidate, isLongestMatchingPrefix); @@ -39715,8 +40990,8 @@ var ts; var prefix = pattern.substr(0, indexOfStar); var suffix = pattern.substr(indexOfStar + 1); if (moduleName.length >= prefix.length + suffix.length && - startsWith(moduleName, prefix) && - endsWith(moduleName, suffix)) { + ts.startsWith(moduleName, prefix) && + ts.endsWith(moduleName, suffix)) { // use length of prefix as betterness criteria if (prefix.length > longestMatchPrefixLength) { longestMatchPrefixLength = prefix.length; @@ -39802,6 +41077,13 @@ var ts; * in cases when we know upfront that all load attempts will fail (because containing folder does not exists) however we still need to record all failed lookup locations. */ function loadModuleFromFile(candidate, extensions, failedLookupLocation, onlyRecordFailures, state) { + if (!onlyRecordFailures) { + // check if containig folder exists - if it doesn't then just record failures for all supported extensions without disk probing + var directory = ts.getDirectoryPath(candidate); + if (directory) { + onlyRecordFailures = !directoryProbablyExists(directory, state.host); + } + } return ts.forEach(extensions, tryLoad); function tryLoad(ext) { if (ext === ".tsx" && state.skipTsx) { @@ -39810,7 +41092,7 @@ var ts; var fileName = ts.fileExtensionIs(candidate, ext) ? candidate : candidate + ext; if (!onlyRecordFailures && state.host.fileExists(fileName)) { if (state.traceEnabled) { - trace(state.host, ts.Diagnostics.File_0_exist_use_it_as_a_module_resolution_result, fileName); + trace(state.host, ts.Diagnostics.File_0_exist_use_it_as_a_name_resolution_result, fileName); } return fileName; } @@ -39830,33 +41112,16 @@ var ts; if (state.traceEnabled) { trace(state.host, ts.Diagnostics.Found_package_json_at_0, packageJsonPath); } - var jsonContent = void 0; - try { - var jsonText = state.host.readFile(packageJsonPath); - jsonContent = jsonText ? JSON.parse(jsonText) : { typings: undefined }; - } - catch (e) { - // gracefully handle if readFile fails or returns not JSON - jsonContent = { typings: undefined }; - } - if (jsonContent.typings) { - if (typeof jsonContent.typings === "string") { - var typingsFile = ts.normalizePath(ts.combinePaths(candidate, jsonContent.typings)); - if (state.traceEnabled) { - trace(state.host, ts.Diagnostics.package_json_has_typings_field_0_that_references_1, jsonContent.typings, typingsFile); - } - var result = loadModuleFromFile(typingsFile, extensions, failedLookupLocation, !directoryProbablyExists(ts.getDirectoryPath(typingsFile), state.host), state); - if (result) { - return result; - } - } - else if (state.traceEnabled) { - trace(state.host, ts.Diagnostics.Expected_type_of_typings_field_in_package_json_to_be_string_got_0, typeof jsonContent.typings); + var typesFile = tryReadTypesSection(packageJsonPath, candidate, state); + if (typesFile) { + var result = loadModuleFromFile(typesFile, extensions, failedLookupLocation, !directoryProbablyExists(ts.getDirectoryPath(typesFile), state.host), state); + if (result) { + return result; } } else { if (state.traceEnabled) { - trace(state.host, ts.Diagnostics.package_json_does_not_have_typings_field); + trace(state.host, ts.Diagnostics.package_json_does_not_have_types_field); } } } @@ -39869,20 +41134,30 @@ var ts; } return loadModuleFromFile(ts.combinePaths(candidate, "index"), extensions, failedLookupLocation, !directoryExists, state); } + function loadModuleFromNodeModulesFolder(moduleName, directory, failedLookupLocations, state) { + var nodeModulesFolder = ts.combinePaths(directory, "node_modules"); + var nodeModulesFolderExists = directoryProbablyExists(nodeModulesFolder, state.host); + var candidate = ts.normalizePath(ts.combinePaths(nodeModulesFolder, moduleName)); + // Load only typescript files irrespective of allowJs option if loading from node modules + var result = loadModuleFromFile(candidate, ts.supportedTypeScriptExtensions, failedLookupLocations, !nodeModulesFolderExists, state); + if (result) { + return result; + } + result = loadNodeModuleFromDirectory(ts.supportedTypeScriptExtensions, candidate, failedLookupLocations, !nodeModulesFolderExists, state); + if (result) { + return result; + } + } function loadModuleFromNodeModules(moduleName, directory, failedLookupLocations, state) { directory = ts.normalizeSlashes(directory); while (true) { var baseName = ts.getBaseFileName(directory); if (baseName !== "node_modules") { - var nodeModulesFolder = ts.combinePaths(directory, "node_modules"); - var nodeModulesFolderExists = directoryProbablyExists(nodeModulesFolder, state.host); - var candidate = ts.normalizePath(ts.combinePaths(nodeModulesFolder, moduleName)); - // Load only typescript files irrespective of allowJs option if loading from node modules - var result = loadModuleFromFile(candidate, ts.supportedTypeScriptExtensions, failedLookupLocations, !nodeModulesFolderExists, state); - if (result) { - return result; - } - result = loadNodeModuleFromDirectory(ts.supportedTypeScriptExtensions, candidate, failedLookupLocations, !nodeModulesFolderExists, state); + var result = + // first: try to load module as-is + loadModuleFromNodeModulesFolder(moduleName, directory, failedLookupLocations, state) || + // second: try to load module from the scope '@types' + loadModuleFromNodeModulesFolder(ts.combinePaths("@types", moduleName), directory, failedLookupLocations, state); if (result) { return result; } @@ -39979,11 +41254,40 @@ var ts; ts.sys.createDirectory(directoryPath); } } + var outputFingerprints; + function writeFileIfUpdated(fileName, data, writeByteOrderMark) { + if (!outputFingerprints) { + outputFingerprints = {}; + } + var hash = ts.sys.createHash(data); + var mtimeBefore = ts.sys.getModifiedTime(fileName); + if (mtimeBefore && ts.hasProperty(outputFingerprints, fileName)) { + var fingerprint = outputFingerprints[fileName]; + // If output has not been changed, and the file has no external modification + if (fingerprint.byteOrderMark === writeByteOrderMark && + fingerprint.hash === hash && + fingerprint.mtime.getTime() === mtimeBefore.getTime()) { + return; + } + } + ts.sys.writeFile(fileName, data, writeByteOrderMark); + var mtimeAfter = ts.sys.getModifiedTime(fileName); + outputFingerprints[fileName] = { + hash: hash, + byteOrderMark: writeByteOrderMark, + mtime: mtimeAfter + }; + } function writeFile(fileName, data, writeByteOrderMark, onError) { try { var start = new Date().getTime(); ensureDirectoriesExist(ts.getDirectoryPath(ts.normalizePath(fileName))); - ts.sys.writeFile(fileName, data, writeByteOrderMark); + if (ts.isWatchSet(options) && ts.sys.createHash && ts.sys.getModifiedTime) { + writeFileIfUpdated(fileName, data, writeByteOrderMark); + } + else { + ts.sys.writeFile(fileName, data, writeByteOrderMark); + } ts.ioWriteTime += new Date().getTime() - start; } catch (e) { @@ -39992,10 +41296,14 @@ var ts; } } } + function getDefaultLibLocation() { + return ts.getDirectoryPath(ts.normalizePath(ts.sys.getExecutingFilePath())); + } var newLine = ts.getNewLineCharacter(options); return { getSourceFile: getSourceFile, - getDefaultLibFileName: function (options) { return ts.combinePaths(ts.getDirectoryPath(ts.normalizePath(ts.sys.getExecutingFilePath())), ts.getDefaultLibFileName(options)); }, + getDefaultLibLocation: getDefaultLibLocation, + getDefaultLibFileName: function (options) { return ts.combinePaths(getDefaultLibLocation(), ts.getDefaultLibFileName(options)); }, writeFile: writeFile, getCurrentDirectory: ts.memoize(function () { return ts.sys.getCurrentDirectory(); }), useCaseSensitiveFileNames: function () { return ts.sys.useCaseSensitiveFileNames; }, @@ -40039,68 +41347,88 @@ var ts; } } ts.flattenDiagnosticMessageText = flattenDiagnosticMessageText; + function loadWithLocalCache(names, containingFile, loader) { + if (names.length === 0) { + return []; + } + var resolutions = []; + var cache = {}; + for (var _i = 0, names_1 = names; _i < names_1.length; _i++) { + var name_33 = names_1[_i]; + var result = void 0; + if (ts.hasProperty(cache, name_33)) { + result = cache[name_33]; + } + else { + result = loader(name_33, containingFile); + cache[name_33] = result; + } + resolutions.push(result); + } + return resolutions; + } function createProgram(rootNames, options, host, oldProgram) { var program; var files = []; - var fileProcessingDiagnostics = ts.createDiagnosticCollection(); - var programDiagnostics = ts.createDiagnosticCollection(); var commonSourceDirectory; var diagnosticsProducingTypeChecker; var noDiagnosticsTypeChecker; var classifiableNames; - var skipDefaultLib = options.noLib; - var supportedExtensions = ts.getSupportedExtensions(options); + var resolvedTypeReferenceDirectives = {}; + var fileProcessingDiagnostics = ts.createDiagnosticCollection(); var start = new Date().getTime(); host = host || createCompilerHost(options); + var skipDefaultLib = options.noLib; + var programDiagnostics = ts.createDiagnosticCollection(); + var currentDirectory = host.getCurrentDirectory(); + var supportedExtensions = ts.getSupportedExtensions(options); // Map storing if there is emit blocking diagnostics for given input var hasEmitBlockingDiagnostics = ts.createFileMap(getCanonicalFileName); - var currentDirectory = host.getCurrentDirectory(); - var resolveModuleNamesWorker = host.resolveModuleNames - ? (function (moduleNames, containingFile) { return host.resolveModuleNames(moduleNames, containingFile); }) - : (function (moduleNames, containingFile) { - var resolvedModuleNames = []; - // resolveModuleName does not store any results between calls. - // lookup is a local cache to avoid resolving the same module name several times - var lookup = {}; - for (var _i = 0, moduleNames_1 = moduleNames; _i < moduleNames_1.length; _i++) { - var moduleName = moduleNames_1[_i]; - var resolvedName = void 0; - if (ts.hasProperty(lookup, moduleName)) { - resolvedName = lookup[moduleName]; - } - else { - resolvedName = resolveModuleName(moduleName, containingFile, options, host).resolvedModule; - lookup[moduleName] = resolvedName; - } - resolvedModuleNames.push(resolvedName); - } - return resolvedModuleNames; - }); + var resolveModuleNamesWorker; + if (host.resolveModuleNames) { + resolveModuleNamesWorker = function (moduleNames, containingFile) { return host.resolveModuleNames(moduleNames, containingFile); }; + } + else { + var loader_1 = function (moduleName, containingFile) { return resolveModuleName(moduleName, containingFile, options, host).resolvedModule; }; + resolveModuleNamesWorker = function (moduleNames, containingFile) { return loadWithLocalCache(moduleNames, containingFile, loader_1); }; + } + var resolveTypeReferenceDirectiveNamesWorker; + if (host.resolveTypeReferenceDirectives) { + resolveTypeReferenceDirectiveNamesWorker = function (typeDirectiveNames, containingFile) { return host.resolveTypeReferenceDirectives(typeDirectiveNames, containingFile); }; + } + else { + var loader_2 = function (typesRef, containingFile) { return resolveTypeReferenceDirective(typesRef, containingFile, options, host).resolvedTypeReferenceDirective; }; + resolveTypeReferenceDirectiveNamesWorker = function (typeReferenceDirectiveNames, containingFile) { return loadWithLocalCache(typeReferenceDirectiveNames, containingFile, loader_2); }; + } var filesByName = ts.createFileMap(); // stores 'filename -> file association' ignoring case // used to track cases when two file names differ only in casing var filesByNameIgnoreCase = host.useCaseSensitiveFileNames() ? ts.createFileMap(function (fileName) { return fileName.toLowerCase(); }) : undefined; - if (oldProgram) { - // check properties that can affect structure of the program or module resolution strategy - // if any of these properties has changed - structure cannot be reused - var oldOptions = oldProgram.getCompilerOptions(); - if ((oldOptions.module !== options.module) || - (oldOptions.noResolve !== options.noResolve) || - (oldOptions.target !== options.target) || - (oldOptions.noLib !== options.noLib) || - (oldOptions.jsx !== options.jsx) || - (oldOptions.allowJs !== options.allowJs)) { - oldProgram = undefined; - } - } if (!tryReuseStructureFromOldProgram()) { + // load type declarations specified via 'types' argument + if (options.types && options.types.length) { + var resolutions = resolveTypeReferenceDirectiveNamesWorker(options.types, /*containingFile*/ undefined); + for (var i = 0; i < options.types.length; i++) { + processTypeReferenceDirective(options.types[i], resolutions[i]); + } + } ts.forEach(rootNames, function (name) { return processRootFile(name, /*isDefaultLib*/ false); }); // Do not process the default library if: // - The '--noLib' flag is used. // - A 'no-default-lib' reference comment is encountered in // processing the root files. if (!skipDefaultLib) { - processRootFile(host.getDefaultLibFileName(options), /*isDefaultLib*/ true); + // If '--lib' is not specified, include default library file according to '--target' + // otherwise, using options specified in '--lib' instead of '--target' default library file + if (!options.lib) { + processRootFile(host.getDefaultLibFileName(options), /*isDefaultLib*/ true); + } + else { + var libDirectory_1 = host.getDefaultLibLocation ? host.getDefaultLibLocation() : ts.getDirectoryPath(host.getDefaultLibFileName(options)); + ts.forEach(options.lib, function (libFileName) { + processRootFile(ts.combinePaths(libDirectory_1, libFileName), /*isDefaultLib*/ true); + }); + } } } // unconditionally set oldProgram to undefined to prevent it from being captured in closure @@ -40125,7 +41453,8 @@ var ts; getIdentifierCount: function () { return getDiagnosticsProducingTypeChecker().getIdentifierCount(); }, getSymbolCount: function () { return getDiagnosticsProducingTypeChecker().getSymbolCount(); }, getTypeCount: function () { return getDiagnosticsProducingTypeChecker().getTypeCount(); }, - getFileProcessingDiagnostics: function () { return fileProcessingDiagnostics; } + getFileProcessingDiagnostics: function () { return fileProcessingDiagnostics; }, + resolvedTypeReferenceDirectives: resolvedTypeReferenceDirectives }; verifyCompilerOptions(); ts.programTime += new Date().getTime() - start; @@ -40164,12 +41493,29 @@ var ts; if (!oldProgram) { return false; } + // check properties that can affect structure of the program or module resolution strategy + // if any of these properties has changed - structure cannot be reused + var oldOptions = oldProgram.getCompilerOptions(); + if ((oldOptions.module !== options.module) || + (oldOptions.noResolve !== options.noResolve) || + (oldOptions.target !== options.target) || + (oldOptions.noLib !== options.noLib) || + (oldOptions.jsx !== options.jsx) || + (oldOptions.allowJs !== options.allowJs) || + (oldOptions.rootDir !== options.rootDir) || + (oldOptions.typesSearchPaths !== options.typesSearchPaths) || + (oldOptions.configFilePath !== options.configFilePath)) { + return false; + } ts.Debug.assert(!oldProgram.structureIsReused); // there is an old program, check if we can reuse its structure var oldRootNames = oldProgram.getRootFileNames(); if (!ts.arrayIsEqualTo(oldRootNames, rootNames)) { return false; } + if (!ts.arrayIsEqualTo(options.types, oldOptions.types)) { + return false; + } // check if program source files has changed in the way that can affect structure of the program var newSourceFiles = []; var filePaths = []; @@ -40203,25 +41549,32 @@ var ts; // moduleAugmentations has changed return false; } + if (!ts.arrayIsEqualTo(oldSourceFile.typeReferenceDirectives, newSourceFile.typeReferenceDirectives, fileReferenceIsEqualTo)) { + // 'types' references has changed + return false; + } + var newSourceFilePath = ts.getNormalizedAbsolutePath(newSourceFile.fileName, currentDirectory); if (resolveModuleNamesWorker) { var moduleNames = ts.map(ts.concatenate(newSourceFile.imports, newSourceFile.moduleAugmentations), getTextOfLiteral); - var resolutions = resolveModuleNamesWorker(moduleNames, ts.getNormalizedAbsolutePath(newSourceFile.fileName, currentDirectory)); + var resolutions = resolveModuleNamesWorker(moduleNames, newSourceFilePath); // ensure that module resolution results are still correct - for (var i = 0; i < moduleNames.length; i++) { - var newResolution = resolutions[i]; - var oldResolution = ts.getResolvedModule(oldSourceFile, moduleNames[i]); - var resolutionChanged = oldResolution - ? !newResolution || - oldResolution.resolvedFileName !== newResolution.resolvedFileName || - !!oldResolution.isExternalLibraryImport !== !!newResolution.isExternalLibraryImport - : newResolution; - if (resolutionChanged) { - return false; - } + var resolutionsChanged = ts.hasChangesInResolutions(moduleNames, resolutions, oldSourceFile.resolvedModules, ts.moduleResolutionIsEqualTo); + if (resolutionsChanged) { + return false; } } - // pass the cache of module resolutions from the old source file + if (resolveTypeReferenceDirectiveNamesWorker) { + var typesReferenceDirectives = ts.map(newSourceFile.typeReferenceDirectives, function (x) { return x.fileName; }); + var resolutions = resolveTypeReferenceDirectiveNamesWorker(typesReferenceDirectives, newSourceFilePath); + // ensure that types resolutions are still correct + var resolutionsChanged = ts.hasChangesInResolutions(typesReferenceDirectives, resolutions, oldSourceFile.resolvedTypeReferenceDirectiveNames, ts.typeDirectiveIsEqualTo); + if (resolutionsChanged) { + return false; + } + } + // pass the cache of module/types resolutions from the old source file newSourceFile.resolvedModules = oldSourceFile.resolvedModules; + newSourceFile.resolvedTypeReferenceDirectiveNames = oldSourceFile.resolvedTypeReferenceDirectiveNames; modifiedSourceFiles.push(newSourceFile); } else { @@ -40241,6 +41594,7 @@ var ts; var modifiedFile = modifiedSourceFiles_1[_b]; fileProcessingDiagnostics.reattachFileDiagnostics(modifiedFile); } + resolvedTypeReferenceDirectives = oldProgram.resolvedTypeReferenceDirectives; oldProgram.structureIsReused = true; return true; } @@ -40253,7 +41607,7 @@ var ts; getNewLine: function () { return host.getNewLine(); }, getSourceFile: program.getSourceFile, getSourceFiles: program.getSourceFiles, - writeFile: writeFileCallback || (function (fileName, data, writeByteOrderMark, onError) { return host.writeFile(fileName, data, writeByteOrderMark, onError); }), + writeFile: writeFileCallback || (function (fileName, data, writeByteOrderMark, onError, sourceFiles) { return host.writeFile(fileName, data, writeByteOrderMark, onError, sourceFiles); }), isEmitBlocked: isEmitBlocked }; } @@ -40273,7 +41627,7 @@ var ts; function emitWorker(program, sourceFile, writeFileCallback, cancellationToken) { var declarationDiagnostics = []; if (options.noEmit) { - return { diagnostics: declarationDiagnostics, sourceMaps: undefined, emitSkipped: true }; + return { diagnostics: declarationDiagnostics, sourceMaps: undefined, emittedFiles: undefined, emitSkipped: true }; } // If the noEmitOnError flag is set, then check if we have any errors so far. If so, // immediately bail out. Note that we pass 'undefined' for 'sourceFile' so that we @@ -40284,7 +41638,12 @@ var ts; declarationDiagnostics = program.getDeclarationDiagnostics(/*sourceFile*/ undefined, cancellationToken); } if (diagnostics.length > 0 || declarationDiagnostics.length > 0) { - return { diagnostics: diagnostics, sourceMaps: undefined, emitSkipped: true }; + return { + diagnostics: ts.concatenate(diagnostics, declarationDiagnostics), + sourceMaps: undefined, + emittedFiles: undefined, + emitSkipped: true + }; } } // Create the emit resolver outside of the "emitTime" tracking code below. That way @@ -40324,7 +41683,14 @@ var ts; return getDiagnosticsHelper(sourceFile, getSemanticDiagnosticsForFile, cancellationToken); } function getDeclarationDiagnostics(sourceFile, cancellationToken) { - return getDiagnosticsHelper(sourceFile, getDeclarationDiagnosticsForFile, cancellationToken); + var options = program.getCompilerOptions(); + // collect diagnostics from the program only once if either no source file was specified or out/outFile is set (bundled emit) + if (!sourceFile || options.out || options.outFile) { + return getDeclarationDiagnosticsWorker(sourceFile, cancellationToken); + } + else { + return getDiagnosticsHelper(sourceFile, getDeclarationDiagnosticsForFile, cancellationToken); + } } function getSyntacticDiagnosticsForFile(sourceFile, cancellationToken) { return sourceFile.parseDiagnostics; @@ -40376,47 +41742,47 @@ var ts; return false; } switch (node.kind) { - case 225 /* ImportEqualsDeclaration */: + case 228 /* ImportEqualsDeclaration */: diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.import_can_only_be_used_in_a_ts_file)); return true; - case 231 /* ExportAssignment */: + case 234 /* ExportAssignment */: if (node.isExportEquals) { diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.export_can_only_be_used_in_a_ts_file)); return true; } break; - case 218 /* ClassDeclaration */: + case 220 /* ClassDeclaration */: var classDeclaration = node; if (checkModifiers(classDeclaration.modifiers) || checkTypeParameters(classDeclaration.typeParameters)) { return true; } break; - case 247 /* HeritageClause */: + case 250 /* HeritageClause */: var heritageClause = node; if (heritageClause.token === 106 /* ImplementsKeyword */) { diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.implements_clauses_can_only_be_used_in_a_ts_file)); return true; } break; - case 219 /* InterfaceDeclaration */: + case 221 /* InterfaceDeclaration */: diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.interface_declarations_can_only_be_used_in_a_ts_file)); return true; - case 222 /* ModuleDeclaration */: + case 224 /* ModuleDeclaration */: diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.module_declarations_can_only_be_used_in_a_ts_file)); return true; - case 220 /* TypeAliasDeclaration */: + case 222 /* TypeAliasDeclaration */: diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.type_aliases_can_only_be_used_in_a_ts_file)); return true; - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: - case 146 /* Constructor */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: - case 177 /* FunctionExpression */: - case 217 /* FunctionDeclaration */: - case 178 /* ArrowFunction */: - case 217 /* FunctionDeclaration */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: + case 147 /* Constructor */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: + case 178 /* FunctionExpression */: + case 219 /* FunctionDeclaration */: + case 179 /* ArrowFunction */: + case 219 /* FunctionDeclaration */: var functionDeclaration = node; if (checkModifiers(functionDeclaration.modifiers) || checkTypeParameters(functionDeclaration.typeParameters) || @@ -40424,20 +41790,20 @@ var ts; return true; } break; - case 197 /* VariableStatement */: + case 199 /* VariableStatement */: var variableStatement = node; if (checkModifiers(variableStatement.modifiers)) { return true; } break; - case 215 /* VariableDeclaration */: + case 217 /* VariableDeclaration */: var variableDeclaration = node; if (checkTypeAnnotation(variableDeclaration.type)) { return true; } break; - case 172 /* CallExpression */: - case 173 /* NewExpression */: + case 173 /* CallExpression */: + case 174 /* NewExpression */: var expression = node; if (expression.typeArguments && expression.typeArguments.length > 0) { var start_2 = expression.typeArguments.pos; @@ -40445,7 +41811,7 @@ var ts; return true; } break; - case 140 /* Parameter */: + case 141 /* Parameter */: var parameter = node; if (parameter.modifiers) { var start_3 = parameter.modifiers.pos; @@ -40461,17 +41827,17 @@ var ts; return true; } break; - case 143 /* PropertyDeclaration */: + case 144 /* PropertyDeclaration */: diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.property_declarations_can_only_be_used_in_a_ts_file)); return true; - case 221 /* EnumDeclaration */: + case 223 /* EnumDeclaration */: diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.enum_declarations_can_only_be_used_in_a_ts_file)); return true; - case 175 /* TypeAssertionExpression */: + case 176 /* TypeAssertionExpression */: var typeAssertionExpression = node; diagnostics.push(ts.createDiagnosticForNode(typeAssertionExpression.type, ts.Diagnostics.type_assertion_expressions_can_only_be_used_in_a_ts_file)); return true; - case 141 /* Decorator */: + case 142 /* Decorator */: if (!options.experimentalDecorators) { diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.Experimental_support_for_decorators_is_a_feature_that_is_subject_to_change_in_a_future_release_Set_the_experimentalDecorators_option_to_remove_this_warning)); } @@ -40519,16 +41885,17 @@ var ts; } }); } - function getDeclarationDiagnosticsForFile(sourceFile, cancellationToken) { + function getDeclarationDiagnosticsWorker(sourceFile, cancellationToken) { return runWithCancellationToken(function () { - if (!ts.isDeclarationFile(sourceFile)) { - var resolver = getDiagnosticsProducingTypeChecker().getEmitResolver(sourceFile, cancellationToken); - // Don't actually write any files since we're just getting diagnostics. - var writeFile_1 = function () { }; - return ts.getDeclarationDiagnostics(getEmitHost(writeFile_1), resolver, sourceFile); - } + var resolver = getDiagnosticsProducingTypeChecker().getEmitResolver(sourceFile, cancellationToken); + // Don't actually write any files since we're just getting diagnostics. + var writeFile = function () { }; + return ts.getDeclarationDiagnostics(getEmitHost(writeFile), resolver, sourceFile); }); } + function getDeclarationDiagnosticsForFile(sourceFile, cancellationToken) { + return ts.isDeclarationFile(sourceFile) ? [] : getDeclarationDiagnosticsWorker(sourceFile, cancellationToken); + } function getOptionsDiagnostics() { var allDiagnostics = []; ts.addRange(allDiagnostics, fileProcessingDiagnostics.getGlobalDiagnostics()); @@ -40544,7 +41911,7 @@ var ts; return ts.getBaseFileName(fileName).indexOf(".") >= 0; } function processRootFile(fileName, isDefaultLib) { - processSourceFile(ts.normalizePath(fileName), isDefaultLib); + processSourceFile(ts.normalizePath(fileName), isDefaultLib, /*isReference*/ true); } function fileReferenceIsEqualTo(a, b) { return a.fileName === b.fileName; @@ -40575,9 +41942,9 @@ var ts; return; function collectModuleReferences(node, inAmbientModule) { switch (node.kind) { - case 226 /* ImportDeclaration */: - case 225 /* ImportEqualsDeclaration */: - case 232 /* ExportDeclaration */: + case 229 /* ImportDeclaration */: + case 228 /* ImportEqualsDeclaration */: + case 235 /* ExportDeclaration */: var moduleNameExpr = ts.getExternalModuleName(node); if (!moduleNameExpr || moduleNameExpr.kind !== 9 /* StringLiteral */) { break; @@ -40592,7 +41959,7 @@ var ts; (imports || (imports = [])).push(moduleNameExpr); } break; - case 222 /* ModuleDeclaration */: + case 224 /* ModuleDeclaration */: if (ts.isAmbientModule(node) && (inAmbientModule || node.flags & 2 /* Ambient */ || ts.isDeclarationFile(file))) { var moduleName = node.name; // Ambient module declarations can be interpreted as augmentations for some existing external modules. @@ -40626,7 +41993,10 @@ var ts; } } } - function processSourceFile(fileName, isDefaultLib, refFile, refPos, refEnd) { + /** + * 'isReference' indicates whether the file was brought in via a reference directive (rather than an import declaration) + */ + function processSourceFile(fileName, isDefaultLib, isReference, refFile, refPos, refEnd) { var diagnosticArgument; var diagnostic; if (hasExtension(fileName)) { @@ -40634,7 +42004,7 @@ var ts; diagnostic = ts.Diagnostics.File_0_has_unsupported_extension_The_only_supported_extensions_are_1; diagnosticArgument = [fileName, "'" + supportedExtensions.join("', '") + "'"]; } - else if (!findSourceFile(fileName, ts.toPath(fileName, currentDirectory, getCanonicalFileName), isDefaultLib, refFile, refPos, refEnd)) { + else if (!findSourceFile(fileName, ts.toPath(fileName, currentDirectory, getCanonicalFileName), isDefaultLib, isReference, refFile, refPos, refEnd)) { diagnostic = ts.Diagnostics.File_0_not_found; diagnosticArgument = [fileName]; } @@ -40644,13 +42014,13 @@ var ts; } } else { - var nonTsFile = options.allowNonTsExtensions && findSourceFile(fileName, ts.toPath(fileName, currentDirectory, getCanonicalFileName), isDefaultLib, refFile, refPos, refEnd); + var nonTsFile = options.allowNonTsExtensions && findSourceFile(fileName, ts.toPath(fileName, currentDirectory, getCanonicalFileName), isDefaultLib, isReference, refFile, refPos, refEnd); if (!nonTsFile) { if (options.allowNonTsExtensions) { diagnostic = ts.Diagnostics.File_0_not_found; diagnosticArgument = [fileName]; } - else if (!ts.forEach(supportedExtensions, function (extension) { return findSourceFile(fileName + extension, ts.toPath(fileName + extension, currentDirectory, getCanonicalFileName), isDefaultLib, refFile, refPos, refEnd); })) { + else if (!ts.forEach(supportedExtensions, function (extension) { return findSourceFile(fileName + extension, ts.toPath(fileName + extension, currentDirectory, getCanonicalFileName), isDefaultLib, isReference, refFile, refPos, refEnd); })) { diagnostic = ts.Diagnostics.File_0_not_found; fileName += ".ts"; diagnosticArgument = [fileName]; @@ -40675,7 +42045,7 @@ var ts; } } // Get source file from normalized fileName - function findSourceFile(fileName, path, isDefaultLib, refFile, refPos, refEnd) { + function findSourceFile(fileName, path, isDefaultLib, isReference, refFile, refPos, refEnd) { if (filesByName.contains(path)) { var file_1 = filesByName.get(path); // try to check if we've already seen this file but with a different casing in path @@ -40683,6 +42053,9 @@ 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) { + file_1.wasReferenced = file_1.wasReferenced || isReference; + } return file_1; } // We haven't looked for this file, do so now and cache result @@ -40696,6 +42069,7 @@ var ts; }); filesByName.set(path, file); if (file) { + file.wasReferenced = file.wasReferenced || isReference; file.path = path; if (host.useCaseSensitiveFileNames()) { // for case-sensitive file systems check if we've already seen some file with similar filename ignoring case @@ -40710,7 +42084,8 @@ var ts; skipDefaultLib = skipDefaultLib || file.hasNoDefaultLib; var basePath = ts.getDirectoryPath(fileName); if (!options.noResolve) { - processReferencedFiles(file, basePath); + processReferencedFiles(file, basePath, isDefaultLib); + processTypeReferenceDirectives(file); } // always process imported modules to record module name resolutions processImportedModules(file, basePath); @@ -40723,12 +42098,71 @@ var ts; } return file; } - function processReferencedFiles(file, basePath) { + function processReferencedFiles(file, basePath, isDefaultLib) { ts.forEach(file.referencedFiles, function (ref) { var referencedFileName = resolveTripleslashReference(ref.fileName, file.fileName); - processSourceFile(referencedFileName, /*isDefaultLib*/ false, file, ref.pos, ref.end); + processSourceFile(referencedFileName, isDefaultLib, /*isReference*/ true, file, ref.pos, ref.end); }); } + function processTypeReferenceDirectives(file) { + var typeDirectives = ts.map(file.typeReferenceDirectives, function (l) { return l.fileName; }); + var resolutions = resolveTypeReferenceDirectiveNamesWorker(typeDirectives, file.fileName); + for (var i = 0; i < typeDirectives.length; i++) { + var ref = file.typeReferenceDirectives[i]; + var resolvedTypeReferenceDirective = resolutions[i]; + // store resolved type directive on the file + ts.setResolvedTypeReferenceDirective(file, ref.fileName, resolvedTypeReferenceDirective); + processTypeReferenceDirective(ref.fileName, resolvedTypeReferenceDirective, file, ref.pos, ref.end); + } + } + function processTypeReferenceDirective(typeReferenceDirective, resolvedTypeReferenceDirective, refFile, refPos, refEnd) { + // If we already found this library as a primary reference - nothing to do + var previousResolution = resolvedTypeReferenceDirectives[typeReferenceDirective]; + if (previousResolution && previousResolution.primary) { + return; + } + var saveResolution = true; + if (resolvedTypeReferenceDirective) { + if (resolvedTypeReferenceDirective.primary) { + // resolved from the primary path + processSourceFile(resolvedTypeReferenceDirective.resolvedFileName, /*isDefaultLib*/ false, /*isReference*/ true, refFile, refPos, refEnd); + } + else { + // If we already resolved to this file, it must have been a secondary reference. Check file contents + // for sameness and possibly issue an error + if (previousResolution) { + var otherFileText = host.readFile(resolvedTypeReferenceDirective.resolvedFileName); + if (otherFileText !== getSourceFile(previousResolution.resolvedFileName).text) { + fileProcessingDiagnostics.add(createDiagnostic(refFile, refPos, refEnd, ts.Diagnostics.Conflicting_library_definitions_for_0_found_at_1_and_2_Copy_the_correct_file_to_the_typings_folder_to_resolve_this_conflict, typeReferenceDirective, resolvedTypeReferenceDirective.resolvedFileName, previousResolution.resolvedFileName)); + } + // don't overwrite previous resolution result + saveResolution = false; + } + else { + // First resolution of this library + processSourceFile(resolvedTypeReferenceDirective.resolvedFileName, /*isDefaultLib*/ false, /*isReference*/ true, refFile, refPos, refEnd); + } + } + } + else { + fileProcessingDiagnostics.add(createDiagnostic(refFile, refPos, refEnd, ts.Diagnostics.Cannot_find_name_0, typeReferenceDirective)); + } + if (saveResolution) { + resolvedTypeReferenceDirectives[typeReferenceDirective] = resolvedTypeReferenceDirective; + } + } + function createDiagnostic(refFile, refPos, refEnd, message) { + var args = []; + for (var _i = 4; _i < arguments.length; _i++) { + args[_i - 4] = arguments[_i]; + } + if (refFile === undefined || refPos === undefined || refEnd === undefined) { + return ts.createCompilerDiagnostic.apply(void 0, [message].concat(args)); + } + else { + return ts.createFileDiagnostic.apply(void 0, [refFile, refPos, refEnd - refPos, message].concat(args)); + } + } function getCanonicalFileName(fileName) { return host.getCanonicalFileName(fileName); } @@ -40749,7 +42183,7 @@ var ts; !options.noResolve && i < file.imports.length; if (shouldAddFile) { - var importedFile = findSourceFile(resolution.resolvedFileName, ts.toPath(resolution.resolvedFileName, currentDirectory, getCanonicalFileName), /*isDefaultLib*/ false, file, ts.skipTrivia(file.text, file.imports[i].pos), file.imports[i].end); + var importedFile = findSourceFile(resolution.resolvedFileName, ts.toPath(resolution.resolvedFileName, currentDirectory, getCanonicalFileName), /*isDefaultLib*/ false, /*isReference*/ false, file, ts.skipTrivia(file.text, file.imports[i].pos), file.imports[i].end); if (importedFile && resolution.isExternalLibraryImport) { // Since currently irrespective of allowJs, we only look for supportedTypeScript extension external module files, // this check is ok. Otherwise this would be never true for javascript file @@ -40772,50 +42206,21 @@ var ts; return; } function computeCommonSourceDirectory(sourceFiles) { - var commonPathComponents; - var failed = ts.forEach(files, function (sourceFile) { - // Each file contributes into common source file path - if (ts.isDeclarationFile(sourceFile)) { - return; + var fileNames = []; + for (var _i = 0, sourceFiles_2 = sourceFiles; _i < sourceFiles_2.length; _i++) { + var file = sourceFiles_2[_i]; + if (!file.isDeclarationFile) { + fileNames.push(file.fileName); } - var sourcePathComponents = ts.getNormalizedPathComponents(sourceFile.fileName, currentDirectory); - sourcePathComponents.pop(); // The base file name is not part of the common directory path - if (!commonPathComponents) { - // first file - commonPathComponents = sourcePathComponents; - return; - } - for (var i = 0, n = Math.min(commonPathComponents.length, sourcePathComponents.length); i < n; i++) { - if (getCanonicalFileName(commonPathComponents[i]) !== getCanonicalFileName(sourcePathComponents[i])) { - if (i === 0) { - // Failed to find any common path component - return true; - } - // New common path found that is 0 -> i-1 - commonPathComponents.length = i; - break; - } - } - // If the sourcePathComponents was shorter than the commonPathComponents, truncate to the sourcePathComponents - if (sourcePathComponents.length < commonPathComponents.length) { - commonPathComponents.length = sourcePathComponents.length; - } - }); - // A common path can not be found when paths span multiple drives on windows, for example - if (failed) { - return ""; } - if (!commonPathComponents) { - return currentDirectory; - } - return ts.getNormalizedPathFromPathComponents(commonPathComponents); + return computeCommonSourceDirectoryOfFilenames(fileNames, currentDirectory, getCanonicalFileName); } function checkSourceFilesBelongToPath(sourceFiles, rootDirectory) { var allFilesBelongToPath = true; if (sourceFiles) { var absoluteRootDirectoryPath = host.getCanonicalFileName(ts.getNormalizedAbsolutePath(rootDirectory, currentDirectory)); - for (var _i = 0, sourceFiles_2 = sourceFiles; _i < sourceFiles_2.length; _i++) { - var sourceFile = sourceFiles_2[_i]; + for (var _i = 0, sourceFiles_3 = sourceFiles; _i < sourceFiles_3.length; _i++) { + var sourceFile = sourceFiles_3[_i]; if (!ts.isDeclarationFile(sourceFile)) { var absoluteSourceFilePath = host.getCanonicalFileName(ts.getNormalizedAbsolutePath(sourceFile.fileName, currentDirectory)); if (absoluteSourceFilePath.indexOf(absoluteRootDirectoryPath) !== 0) { @@ -40889,6 +42294,17 @@ var ts; programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1, "sourceRoot", "sourceMap")); } } + if (options.declarationDir) { + if (!options.declaration) { + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1, "declarationDir", "declaration")); + } + if (options.out || options.outFile) { + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "declarationDir", options.out ? "out" : "outFile")); + } + } + if (options.lib && options.noLib) { + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "lib", "noLib")); + } var languageVersion = options.target || 0 /* ES3 */; var outFile = options.outFile || options.out; var firstExternalModuleSourceFile = ts.forEach(files, function (f) { return ts.isExternalModule(f) ? f : undefined; }); @@ -40927,21 +42343,7 @@ var ts; programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Cannot_find_the_common_subdirectory_path_for_the_input_files)); } } - if (options.noEmit) { - if (options.out) { - programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "out")); - } - if (options.outFile) { - programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "outFile")); - } - if (options.outDir) { - programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "outDir")); - } - if (options.declaration) { - programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "declaration")); - } - } - else if (options.allowJs && options.declaration) { + if (!options.noEmit && options.allowJs && options.declaration) { programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "allowJs", "declaration")); } if (options.emitDecoratorMetadata && @@ -41005,6 +42407,12 @@ var ts; type: "boolean", description: ts.Diagnostics.Generates_corresponding_d_ts_file }, + { + name: "declarationDir", + type: "string", + isFilePath: true, + paramType: ts.Diagnostics.DIRECTORY + }, { name: "diagnostics", type: "boolean" @@ -41039,13 +42447,12 @@ var ts; "react": 2 /* React */ }, paramType: ts.Diagnostics.KIND, - description: ts.Diagnostics.Specify_JSX_code_generation_Colon_preserve_or_react, - error: ts.Diagnostics.Argument_for_jsx_must_be_preserve_or_react + description: ts.Diagnostics.Specify_JSX_code_generation_Colon_preserve_or_react }, { name: "reactNamespace", type: "string", - description: ts.Diagnostics.Specifies_the_object_invoked_for_createElement_and_spread_when_targeting_react_JSX_emit + description: ts.Diagnostics.Specify_the_object_invoked_for_createElement_and_spread_when_targeting_react_JSX_emit }, { name: "listFiles", @@ -41059,7 +42466,7 @@ var ts; name: "mapRoot", type: "string", isFilePath: true, - description: ts.Diagnostics.Specifies_the_location_where_debugger_should_locate_map_files_instead_of_generated_locations, + description: ts.Diagnostics.Specify_the_location_where_debugger_should_locate_map_files_instead_of_generated_locations, paramType: ts.Diagnostics.LOCATION }, { @@ -41075,8 +42482,7 @@ var ts; "es2015": ts.ModuleKind.ES2015 }, description: ts.Diagnostics.Specify_module_code_generation_Colon_commonjs_amd_system_umd_or_es2015, - paramType: ts.Diagnostics.KIND, - error: ts.Diagnostics.Argument_for_module_option_must_be_commonjs_amd_system_umd_es2015_or_none + paramType: ts.Diagnostics.KIND }, { name: "newLine", @@ -41084,9 +42490,8 @@ var ts; "crlf": 0 /* CarriageReturnLineFeed */, "lf": 1 /* LineFeed */ }, - description: ts.Diagnostics.Specifies_the_end_of_line_sequence_to_be_used_when_emitting_files_Colon_CRLF_dos_or_LF_unix, - paramType: ts.Diagnostics.NEWLINE, - error: ts.Diagnostics.Argument_for_newLine_option_must_be_CRLF_or_LF + description: ts.Diagnostics.Specify_the_end_of_line_sequence_to_be_used_when_emitting_files_Colon_CRLF_dos_or_LF_unix, + paramType: ts.Diagnostics.NEWLINE }, { name: "noEmit", @@ -41107,6 +42512,11 @@ var ts; type: "boolean", description: ts.Diagnostics.Raise_error_on_expressions_and_declarations_with_an_implied_any_type }, + { + name: "noImplicitThis", + type: "boolean", + description: ts.Diagnostics.Raise_error_on_this_expressions_with_an_implied_any_type + }, { name: "noLib", type: "boolean" @@ -41147,7 +42557,6 @@ var ts; }, { name: "pretty", - paramType: ts.Diagnostics.KIND, description: ts.Diagnostics.Stylize_errors_and_messages_using_color_and_context_experimental, type: "boolean" }, @@ -41168,8 +42577,8 @@ var ts; name: "rootDir", type: "string", isFilePath: true, - description: ts.Diagnostics.Specifies_the_root_directory_of_input_files_Use_to_control_the_output_directory_structure_with_outDir, - paramType: ts.Diagnostics.LOCATION + paramType: ts.Diagnostics.LOCATION, + description: ts.Diagnostics.Specify_the_root_directory_of_input_files_Use_to_control_the_output_directory_structure_with_outDir }, { name: "isolatedModules", @@ -41184,7 +42593,7 @@ var ts; name: "sourceRoot", type: "string", isFilePath: true, - description: ts.Diagnostics.Specifies_the_location_where_debugger_should_locate_TypeScript_files_instead_of_source_locations, + description: ts.Diagnostics.Specify_the_location_where_debugger_should_locate_TypeScript_files_instead_of_source_locations, paramType: ts.Diagnostics.LOCATION }, { @@ -41213,9 +42622,8 @@ var ts; "es6": 2 /* ES6 */, "es2015": 2 /* ES2015 */ }, - description: ts.Diagnostics.Specify_ECMAScript_target_version_Colon_ES3_default_ES5_or_ES2015_experimental, - paramType: ts.Diagnostics.VERSION, - error: ts.Diagnostics.Argument_for_target_option_must_be_ES3_ES5_or_ES2015 + description: ts.Diagnostics.Specify_ECMAScript_target_version_Colon_ES3_default_ES5_or_ES2015, + paramType: ts.Diagnostics.VERSION }, { name: "version", @@ -41246,8 +42654,7 @@ var ts; "node": ts.ModuleResolutionKind.NodeJs, "classic": ts.ModuleResolutionKind.Classic }, - description: ts.Diagnostics.Specifies_module_resolution_strategy_Colon_node_Node_js_or_classic_TypeScript_pre_1_6, - error: ts.Diagnostics.Argument_for_moduleResolution_option_must_be_node_or_classic + description: ts.Diagnostics.Specify_module_resolution_strategy_Colon_node_Node_js_or_classic_TypeScript_pre_1_6 }, { name: "allowUnusedLabels", @@ -41291,14 +42698,41 @@ var ts; // this option can only be specified in tsconfig.json // use type = object to copy the value as-is name: "rootDirs", - type: "object", + type: "list", isTSConfigOnly: true, - isFilePath: true + element: { + name: "rootDirs", + type: "string", + isFilePath: true + } }, { - name: "traceModuleResolution", + name: "typesSearchPaths", + type: "list", + isTSConfigOnly: true, + element: { + name: "typesSearchPaths", + type: "string", + isFilePath: true + } + }, + { + name: "typesRoot", + type: "string" + }, + { + name: "types", + type: "list", + element: { + name: "types", + type: "string" + }, + description: ts.Diagnostics.Type_declaration_files_to_be_included_in_compilation + }, + { + name: "traceResolution", type: "boolean", - description: ts.Diagnostics.Enable_tracing_of_the_module_resolution_process + description: ts.Diagnostics.Enable_tracing_of_the_name_resolution_process }, { name: "allowJs", @@ -41314,6 +42748,69 @@ var ts; name: "noImplicitUseStrict", type: "boolean", description: ts.Diagnostics.Do_not_emit_use_strict_directives_in_module_output + }, + { + name: "listEmittedFiles", + type: "boolean" + }, + { + name: "lib", + type: "list", + element: { + name: "lib", + type: { + // JavaScript only + "es5": "lib.es5.d.ts", + "es6": "lib.es2015.d.ts", + "es2015": "lib.es2015.d.ts", + "es7": "lib.es2016.d.ts", + "es2016": "lib.es2016.d.ts", + // Host only + "dom": "lib.dom.d.ts", + "webworker": "lib.webworker.d.ts", + "scripthost": "lib.scripthost.d.ts", + // ES2015 Or ESNext By-feature options + "es2015.core": "lib.es2015.core.d.ts", + "es2015.collection": "lib.es2015.collection.d.ts", + "es2015.generator": "lib.es2015.generator.d.ts", + "es2015.iterable": "lib.es2015.iterable.d.ts", + "es2015.promise": "lib.es2015.promise.d.ts", + "es2015.proxy": "lib.es2015.proxy.d.ts", + "es2015.reflect": "lib.es2015.reflect.d.ts", + "es2015.symbol": "lib.es2015.symbol.d.ts", + "es2015.symbol.wellknown": "lib.es2015.symbol.wellknown.d.ts", + "es2016.array.include": "lib.es2016.array.include.d.ts" + } + }, + description: ts.Diagnostics.Specify_library_files_to_be_included_in_the_compilation_Colon + }, + { + name: "strictNullChecks", + type: "boolean", + description: ts.Diagnostics.Enable_strict_null_checks + } + ]; + /* @internal */ + ts.typingOptionDeclarations = [ + { + name: "enableAutoDiscovery", + type: "boolean" + }, + { + name: "include", + type: "list", + element: { + name: "include", + type: "string" + } + }, + { + name: "exclude", + type: "list", + element: { + name: "exclude", + type: "string" + } } ]; var optionNameMapCache; @@ -41334,6 +42831,41 @@ var ts; return optionNameMapCache; } ts.getOptionNameMap = getOptionNameMap; + /* @internal */ + function createCompilerDiagnosticForInvalidCustomType(opt) { + var namesOfType = []; + ts.forEachKey(opt.type, function (key) { + namesOfType.push(" '" + key + "'"); + }); + return ts.createCompilerDiagnostic(ts.Diagnostics.Argument_for_0_option_must_be_Colon_1, "--" + opt.name, namesOfType); + } + ts.createCompilerDiagnosticForInvalidCustomType = createCompilerDiagnosticForInvalidCustomType; + /* @internal */ + function parseCustomTypeOption(opt, value, errors) { + var key = (value || "").trim().toLowerCase(); + var map = opt.type; + if (ts.hasProperty(map, key)) { + return map[key]; + } + else { + errors.push(createCompilerDiagnosticForInvalidCustomType(opt)); + } + } + ts.parseCustomTypeOption = parseCustomTypeOption; + /* @internal */ + function parseListTypeOption(opt, value, errors) { + var values = (value || "").trim().split(","); + switch (opt.element.type) { + case "number": + return ts.map(values, parseInt); + case "string": + return ts.map(values, function (v) { return v || ""; }); + default: + return ts.filter(ts.map(values, function (v) { return parseCustomTypeOption(opt.element, v, errors); }), function (v) { return !!v; }); + } + } + ts.parseListTypeOption = parseListTypeOption; + /* @internal */ function parseCommandLine(commandLine, readFile) { var options = {}; var fileNames = []; @@ -41381,17 +42913,15 @@ var ts; options[opt.name] = args[i] || ""; i++; break; + case "list": + options[opt.name] = parseListTypeOption(opt, args[i], errors); + i++; + break; // If not a primitive, the possible types are specified in what is effectively a map of options. default: - var map_1 = opt.type; - var key = (args[i] || "").toLowerCase(); + options[opt.name] = parseCustomTypeOption(opt, args[i], errors); i++; - if (ts.hasProperty(map_1, key)) { - options[opt.name] = map_1[key]; - } - else { - errors.push(ts.createCompilerDiagnostic(opt.error)); - } + break; } } } @@ -41503,17 +43033,22 @@ var ts; */ function parseJsonConfigFileContent(json, host, basePath, existingOptions, configFileName) { if (existingOptions === void 0) { existingOptions = {}; } - var _a = convertCompilerOptionsFromJson(json["compilerOptions"], basePath, configFileName), optionsFromJsonConfigFile = _a.options, errors = _a.errors; - var options = ts.extend(existingOptions, optionsFromJsonConfigFile); + var errors = []; + var compilerOptions = convertCompilerOptionsFromJsonWorker(json["compilerOptions"], basePath, errors, configFileName); + var options = ts.extend(existingOptions, compilerOptions); + var typingOptions = convertTypingOptionsFromJsonWorker(json["typingOptions"], basePath, errors, configFileName); + options.configFilePath = configFileName; + var fileNames = getFileNames(errors); return { options: options, - fileNames: getFileNames(), + fileNames: fileNames, + typingOptions: typingOptions, errors: errors }; - function getFileNames() { + function getFileNames(errors) { var fileNames = []; if (ts.hasProperty(json, "files")) { - if (json["files"] instanceof Array) { + if (ts.isArray(json["files"])) { fileNames = ts.map(json["files"], function (s) { return ts.combinePaths(basePath, s); }); } else { @@ -41523,7 +43058,7 @@ var ts; else { var filesSeen = {}; var exclude = []; - if (json["exclude"] instanceof Array) { + if (ts.isArray(json["exclude"])) { exclude = json["exclude"]; } else { @@ -41565,86 +43100,88 @@ var ts; } } } + if (ts.hasProperty(json, "excludes") && !ts.hasProperty(json, "exclude")) { + errors.push(ts.createCompilerDiagnostic(ts.Diagnostics.Unknown_option_excludes_Did_you_mean_exclude)); + } return fileNames; } } ts.parseJsonConfigFileContent = parseJsonConfigFileContent; function convertCompilerOptionsFromJson(jsonOptions, basePath, configFileName) { - var options = {}; var errors = []; - if (configFileName && ts.getBaseFileName(configFileName) === "jsconfig.json") { - options.allowJs = true; - } - if (!jsonOptions) { - return { options: options, errors: errors }; - } - var optionNameMap = ts.arrayToMap(ts.optionDeclarations, function (opt) { return opt.name; }); - for (var id in jsonOptions) { - if (ts.hasProperty(optionNameMap, id)) { - var opt = optionNameMap[id]; - var optType = opt.type; - var value = jsonOptions[id]; - var expectedType = typeof optType === "string" ? optType : "string"; - if (typeof value === expectedType) { - if (typeof optType !== "string") { - var key = value.toLowerCase(); - if (ts.hasProperty(optType, key)) { - value = optType[key]; - } - else { - errors.push(ts.createCompilerDiagnostic(opt.error)); - value = 0; - } - } - if (opt.isFilePath) { - switch (typeof value) { - case "string": - value = ts.normalizePath(ts.combinePaths(basePath, value)); - break; - case "object": - // "object" options with 'isFilePath' = true expected to be string arrays - var paths = []; - var invalidOptionType = false; - if (!ts.isArray(value)) { - invalidOptionType = true; - } - else { - for (var _i = 0, _a = value; _i < _a.length; _i++) { - var element = _a[_i]; - if (typeof element === "string") { - paths.push(ts.normalizePath(ts.combinePaths(basePath, element))); - } - else { - invalidOptionType = true; - break; - } - } - } - if (invalidOptionType) { - errors.push(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_should_have_array_of_strings_as_a_value, opt.name)); - } - else { - value = paths; - } - break; - } - if (value === "") { - value = "."; - } - } - options[opt.name] = value; - } - else { - errors.push(ts.createCompilerDiagnostic(ts.Diagnostics.Compiler_option_0_requires_a_value_of_type_1, id, expectedType)); - } - } - else { - errors.push(ts.createCompilerDiagnostic(ts.Diagnostics.Unknown_compiler_option_0, id)); - } - } + var options = convertCompilerOptionsFromJsonWorker(jsonOptions, basePath, errors, configFileName); return { options: options, errors: errors }; } ts.convertCompilerOptionsFromJson = convertCompilerOptionsFromJson; + function convertTypingOptionsFromJson(jsonOptions, basePath, configFileName) { + var errors = []; + var options = convertTypingOptionsFromJsonWorker(jsonOptions, basePath, errors, configFileName); + return { options: options, errors: errors }; + } + ts.convertTypingOptionsFromJson = convertTypingOptionsFromJson; + function convertCompilerOptionsFromJsonWorker(jsonOptions, basePath, errors, configFileName) { + var options = ts.getBaseFileName(configFileName) === "jsconfig.json" ? { allowJs: true } : {}; + convertOptionsFromJson(ts.optionDeclarations, jsonOptions, basePath, options, ts.Diagnostics.Unknown_compiler_option_0, errors); + return options; + } + function convertTypingOptionsFromJsonWorker(jsonOptions, basePath, errors, configFileName) { + var options = ts.getBaseFileName(configFileName) === "jsconfig.json" + ? { enableAutoDiscovery: true, include: [], exclude: [] } + : { enableAutoDiscovery: false, include: [], exclude: [] }; + convertOptionsFromJson(ts.typingOptionDeclarations, jsonOptions, basePath, options, ts.Diagnostics.Unknown_typing_option_0, errors); + return options; + } + function convertOptionsFromJson(optionDeclarations, jsonOptions, basePath, defaultOptions, diagnosticMessage, errors) { + if (!jsonOptions) { + return; + } + var optionNameMap = ts.arrayToMap(optionDeclarations, function (opt) { return opt.name; }); + for (var id in jsonOptions) { + if (ts.hasProperty(optionNameMap, id)) { + var opt = optionNameMap[id]; + defaultOptions[opt.name] = convertJsonOption(opt, jsonOptions[id], basePath, errors); + } + else { + errors.push(ts.createCompilerDiagnostic(diagnosticMessage, id)); + } + } + } + function convertJsonOption(opt, value, basePath, errors) { + var optType = opt.type; + var expectedType = typeof optType === "string" ? optType : "string"; + if (optType === "list" && ts.isArray(value)) { + return convertJsonOptionOfListType(opt, value, basePath, errors); + } + else if (typeof value === expectedType) { + if (typeof optType !== "string") { + return convertJsonOptionOfCustomType(opt, value, errors); + } + else { + if (opt.isFilePath) { + value = ts.normalizePath(ts.combinePaths(basePath, value)); + if (value === "") { + value = "."; + } + } + } + return value; + } + else { + errors.push(ts.createCompilerDiagnostic(ts.Diagnostics.Compiler_option_0_requires_a_value_of_type_1, opt.name, expectedType)); + } + } + function convertJsonOptionOfCustomType(opt, value, errors) { + var key = value.toLowerCase(); + if (ts.hasProperty(opt.type, key)) { + return opt.type[key]; + } + else { + errors.push(createCompilerDiagnosticForInvalidCustomType(opt)); + } + } + function convertJsonOptionOfListType(option, values, basePath, errors) { + return ts.filter(ts.map(values, function (v) { return convertJsonOption(option.element, v, basePath, errors); }), function (v) { return !!v; }); + } })(ts || (ts = {})); /* @internal */ var ts; @@ -41718,7 +43255,7 @@ var ts; } } function autoCollapse(node) { - return ts.isFunctionBlock(node) && node.parent.kind !== 178 /* ArrowFunction */; + return ts.isFunctionBlock(node) && node.parent.kind !== 179 /* ArrowFunction */; } var depth = 0; var maxDepth = 20; @@ -41730,30 +43267,30 @@ var ts; addOutliningForLeadingCommentsForNode(n); } switch (n.kind) { - case 196 /* Block */: + case 198 /* Block */: if (!ts.isFunctionBlock(n)) { - var parent_9 = n.parent; + var parent_11 = n.parent; var openBrace = ts.findChildOfKind(n, 15 /* OpenBraceToken */, sourceFile); var closeBrace = ts.findChildOfKind(n, 16 /* CloseBraceToken */, sourceFile); // Check if the block is standalone, or 'attached' to some parent statement. - // If the latter, we want to collaps the block, but consider its hint span + // If the latter, we want to collapse the block, but consider its hint span // to be the entire span of the parent. - if (parent_9.kind === 201 /* DoStatement */ || - parent_9.kind === 204 /* ForInStatement */ || - parent_9.kind === 205 /* ForOfStatement */ || - parent_9.kind === 203 /* ForStatement */ || - parent_9.kind === 200 /* IfStatement */ || - parent_9.kind === 202 /* WhileStatement */ || - parent_9.kind === 209 /* WithStatement */ || - parent_9.kind === 248 /* CatchClause */) { - addOutliningSpan(parent_9, openBrace, closeBrace, autoCollapse(n)); + if (parent_11.kind === 203 /* DoStatement */ || + parent_11.kind === 206 /* ForInStatement */ || + parent_11.kind === 207 /* ForOfStatement */ || + parent_11.kind === 205 /* ForStatement */ || + parent_11.kind === 202 /* IfStatement */ || + parent_11.kind === 204 /* WhileStatement */ || + parent_11.kind === 211 /* WithStatement */ || + parent_11.kind === 251 /* CatchClause */) { + addOutliningSpan(parent_11, openBrace, closeBrace, autoCollapse(n)); break; } - if (parent_9.kind === 213 /* TryStatement */) { + if (parent_11.kind === 215 /* TryStatement */) { // Could be the try-block, or the finally-block. - var tryStatement = parent_9; + var tryStatement = parent_11; if (tryStatement.tryBlock === n) { - addOutliningSpan(parent_9, openBrace, closeBrace, autoCollapse(n)); + addOutliningSpan(parent_11, openBrace, closeBrace, autoCollapse(n)); break; } else if (tryStatement.finallyBlock === n) { @@ -41776,23 +43313,23 @@ var ts; break; } // Fallthrough. - case 223 /* ModuleBlock */: { + case 225 /* ModuleBlock */: { var openBrace = ts.findChildOfKind(n, 15 /* OpenBraceToken */, sourceFile); var closeBrace = ts.findChildOfKind(n, 16 /* CloseBraceToken */, sourceFile); addOutliningSpan(n.parent, openBrace, closeBrace, autoCollapse(n)); break; } - case 218 /* ClassDeclaration */: - case 219 /* InterfaceDeclaration */: - case 221 /* EnumDeclaration */: - case 169 /* ObjectLiteralExpression */: - case 224 /* CaseBlock */: { + case 220 /* ClassDeclaration */: + case 221 /* InterfaceDeclaration */: + case 223 /* EnumDeclaration */: + case 170 /* ObjectLiteralExpression */: + case 226 /* CaseBlock */: { var openBrace = ts.findChildOfKind(n, 15 /* OpenBraceToken */, sourceFile); var closeBrace = ts.findChildOfKind(n, 16 /* CloseBraceToken */, sourceFile); addOutliningSpan(n, openBrace, closeBrace, autoCollapse(n)); break; } - case 168 /* ArrayLiteralExpression */: + case 169 /* ArrayLiteralExpression */: var openBracket = ts.findChildOfKind(n, 19 /* OpenBracketToken */, sourceFile); var closeBracket = ts.findChildOfKind(n, 20 /* CloseBracketToken */, sourceFile); addOutliningSpan(n, openBracket, closeBracket, autoCollapse(n)); @@ -41822,12 +43359,12 @@ var ts; ts.forEach(program.getSourceFiles(), function (sourceFile) { cancellationToken.throwIfCancellationRequested(); var nameToDeclarations = sourceFile.getNamedDeclarations(); - for (var name_31 in nameToDeclarations) { - var declarations = ts.getProperty(nameToDeclarations, name_31); + for (var name_34 in nameToDeclarations) { + var declarations = ts.getProperty(nameToDeclarations, name_34); if (declarations) { // First do a quick check to see if the name of the declaration matches the // last portion of the (possibly) dotted name they're searching for. - var matches = patternMatcher.getMatchesForLastSegmentOfPattern(name_31); + var matches = patternMatcher.getMatchesForLastSegmentOfPattern(name_34); if (!matches) { continue; } @@ -41840,14 +43377,14 @@ var ts; if (!containers) { return undefined; } - matches = patternMatcher.getMatches(containers, name_31); + matches = patternMatcher.getMatches(containers, name_34); if (!matches) { continue; } } var fileName = sourceFile.fileName; var matchKind = bestMatchKind(matches); - rawItems.push({ name: name_31, fileName: fileName, matchKind: matchKind, isCaseSensitive: allMatchesAreCaseSensitive(matches), declaration: declaration }); + rawItems.push({ name: name_34, fileName: fileName, matchKind: matchKind, isCaseSensitive: allMatchesAreCaseSensitive(matches), declaration: declaration }); } } } @@ -41885,7 +43422,7 @@ var ts; if (text !== undefined) { containers.unshift(text); } - else if (declaration.name.kind === 138 /* ComputedPropertyName */) { + else if (declaration.name.kind === 139 /* ComputedPropertyName */) { return tryAddComputedPropertyName(declaration.name.expression, containers, /*includeLastPortion*/ true); } else { @@ -41906,7 +43443,7 @@ var ts; } return true; } - if (expression.kind === 170 /* PropertyAccessExpression */) { + if (expression.kind === 171 /* PropertyAccessExpression */) { var propertyAccess = expression; if (includeLastPortion) { containers.unshift(propertyAccess.name.text); @@ -41919,7 +43456,7 @@ var ts; var containers = []; // First, if we started with a computed property name, then add all but the last // portion into the container array. - if (declaration.name.kind === 138 /* ComputedPropertyName */) { + if (declaration.name.kind === 139 /* ComputedPropertyName */) { if (!tryAddComputedPropertyName(declaration.name.expression, containers, /*includeLastPortion*/ false)) { return undefined; } @@ -41982,6 +43519,11 @@ var ts; var NavigationBar; (function (NavigationBar) { function getNavigationBarItems(sourceFile, compilerOptions) { + // TODO: Handle JS files differently in 'navbar' calls for now, but ideally we should unify + // the 'navbar' and 'navto' logic for TypeScript and JavaScript. + if (ts.isSourceFileJavaScript(sourceFile)) { + return getJsNavigationBarItems(sourceFile, compilerOptions); + } // If the source file has any child items, then it included in the tree // and takes lexical ownership of all other top-level items. var hasGlobalNode = false; @@ -41993,17 +43535,17 @@ var ts; var current = node.parent; while (current) { switch (current.kind) { - case 222 /* ModuleDeclaration */: + case 224 /* ModuleDeclaration */: // If we have a module declared as A.B.C, it is more "intuitive" // to say it only has a single layer of depth do { current = current.parent; - } while (current.kind === 222 /* ModuleDeclaration */); + } while (current.kind === 224 /* ModuleDeclaration */); // fall through - case 218 /* ClassDeclaration */: - case 221 /* EnumDeclaration */: - case 219 /* InterfaceDeclaration */: - case 217 /* FunctionDeclaration */: + case 220 /* ClassDeclaration */: + case 223 /* EnumDeclaration */: + case 221 /* InterfaceDeclaration */: + case 219 /* FunctionDeclaration */: indent++; } current = current.parent; @@ -42014,21 +43556,21 @@ var ts; var childNodes = []; function visit(node) { switch (node.kind) { - case 197 /* VariableStatement */: + case 199 /* VariableStatement */: ts.forEach(node.declarationList.declarations, visit); break; - case 165 /* ObjectBindingPattern */: - case 166 /* ArrayBindingPattern */: + case 166 /* ObjectBindingPattern */: + case 167 /* ArrayBindingPattern */: ts.forEach(node.elements, visit); break; - case 232 /* ExportDeclaration */: + case 235 /* ExportDeclaration */: // Handle named exports case e.g.: // export {a, b as B} from "mod"; if (node.exportClause) { ts.forEach(node.exportClause.elements, visit); } break; - case 226 /* ImportDeclaration */: + case 229 /* ImportDeclaration */: var importClause = node.importClause; if (importClause) { // Handle default import case e.g.: @@ -42040,7 +43582,7 @@ var ts; // import * as NS from "mod"; // import {a, b as B} from "mod"; if (importClause.namedBindings) { - if (importClause.namedBindings.kind === 228 /* NamespaceImport */) { + if (importClause.namedBindings.kind === 231 /* NamespaceImport */) { childNodes.push(importClause.namedBindings); } else { @@ -42049,21 +43591,21 @@ var ts; } } break; - case 167 /* BindingElement */: - case 215 /* VariableDeclaration */: + case 168 /* BindingElement */: + case 217 /* VariableDeclaration */: if (ts.isBindingPattern(node.name)) { visit(node.name); break; } // Fall through - case 218 /* ClassDeclaration */: - case 221 /* EnumDeclaration */: - case 219 /* InterfaceDeclaration */: - case 222 /* ModuleDeclaration */: - case 217 /* FunctionDeclaration */: - case 225 /* ImportEqualsDeclaration */: - case 230 /* ImportSpecifier */: - case 234 /* ExportSpecifier */: + case 220 /* ClassDeclaration */: + case 223 /* EnumDeclaration */: + case 221 /* InterfaceDeclaration */: + case 224 /* ModuleDeclaration */: + case 219 /* FunctionDeclaration */: + case 228 /* ImportEqualsDeclaration */: + case 233 /* ImportSpecifier */: + case 237 /* ExportSpecifier */: childNodes.push(node); break; } @@ -42111,17 +43653,31 @@ var ts; for (var _i = 0, nodes_4 = nodes; _i < nodes_4.length; _i++) { var node = nodes_4[_i]; switch (node.kind) { - case 218 /* ClassDeclaration */: - case 221 /* EnumDeclaration */: - case 219 /* InterfaceDeclaration */: + case 220 /* ClassDeclaration */: + topLevelNodes.push(node); + for (var _a = 0, _b = node.members; _a < _b.length; _a++) { + var member = _b[_a]; + if (member.kind === 146 /* MethodDeclaration */ || member.kind === 147 /* Constructor */) { + if (member.body) { + // We do not include methods that does not have child functions in it, because of duplications. + if (hasNamedFunctionDeclarations(member.body.statements)) { + topLevelNodes.push(member); + } + addTopLevelNodes(member.body.statements, topLevelNodes); + } + } + } + break; + case 223 /* EnumDeclaration */: + case 221 /* InterfaceDeclaration */: topLevelNodes.push(node); break; - case 222 /* ModuleDeclaration */: + case 224 /* ModuleDeclaration */: var moduleDeclaration = node; topLevelNodes.push(node); addTopLevelNodes(getInnermostModule(moduleDeclaration).body.statements, topLevelNodes); break; - case 217 /* FunctionDeclaration */: + case 219 /* FunctionDeclaration */: var functionDeclaration = node; if (isTopLevelFunctionDeclaration(functionDeclaration)) { topLevelNodes.push(node); @@ -42131,20 +43687,36 @@ var ts; } } } + function hasNamedFunctionDeclarations(nodes) { + for (var _i = 0, nodes_5 = nodes; _i < nodes_5.length; _i++) { + var s = nodes_5[_i]; + if (s.kind === 219 /* FunctionDeclaration */ && !isEmpty(s.name.text)) { + return true; + } + } + return false; + } function isTopLevelFunctionDeclaration(functionDeclaration) { - if (functionDeclaration.kind === 217 /* FunctionDeclaration */) { - // A function declaration is 'top level' if it contains any function declarations - // within it. - if (functionDeclaration.body && functionDeclaration.body.kind === 196 /* Block */) { + if (functionDeclaration.kind === 219 /* FunctionDeclaration */) { + // A function declaration is 'top level' if it contains any function declarations + // within it. + if (functionDeclaration.body && functionDeclaration.body.kind === 198 /* Block */) { // Proper function declarations can only have identifier names - if (ts.forEach(functionDeclaration.body.statements, function (s) { return s.kind === 217 /* FunctionDeclaration */ && !isEmpty(s.name.text); })) { + if (hasNamedFunctionDeclarations(functionDeclaration.body.statements)) { return true; } - // Or if it is not parented by another function. i.e all functions - // at module scope are 'top level'. + // Or if it is not parented by another function. I.e all functions at module scope are 'top level'. if (!ts.isFunctionBlock(functionDeclaration.parent)) { return true; } + else { + // We have made sure that a grand parent node exists with 'isFunctionBlock()' above. + var grandParentKind = functionDeclaration.parent.parent.kind; + if (grandParentKind === 146 /* MethodDeclaration */ || + grandParentKind === 147 /* Constructor */) { + return true; + } + } } } return false; @@ -42152,8 +43724,8 @@ var ts; function getItemsWorker(nodes, createItem) { var items = []; var keyToItem = {}; - for (var _i = 0, nodes_5 = nodes; _i < nodes_5.length; _i++) { - var child = nodes_5[_i]; + for (var _i = 0, nodes_6 = nodes; _i < nodes_6.length; _i++) { + var child = nodes_6[_i]; var item = createItem(child); if (item !== undefined) { if (item.text.length > 0) { @@ -42197,7 +43769,7 @@ var ts; } function createChildItem(node) { switch (node.kind) { - case 140 /* Parameter */: + case 141 /* Parameter */: if (ts.isBindingPattern(node.name)) { break; } @@ -42205,36 +43777,36 @@ var ts; return undefined; } return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.memberVariableElement); - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.memberFunctionElement); - case 147 /* GetAccessor */: + case 148 /* GetAccessor */: return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.memberGetAccessorElement); - case 148 /* SetAccessor */: + case 149 /* SetAccessor */: return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.memberSetAccessorElement); - case 151 /* IndexSignature */: + case 152 /* IndexSignature */: return createItem(node, "[]", ts.ScriptElementKind.indexSignatureElement); - case 251 /* EnumMember */: + case 254 /* EnumMember */: return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.memberVariableElement); - case 149 /* CallSignature */: + case 150 /* CallSignature */: return createItem(node, "()", ts.ScriptElementKind.callSignatureElement); - case 150 /* ConstructSignature */: + case 151 /* ConstructSignature */: return createItem(node, "new()", ts.ScriptElementKind.constructSignatureElement); - case 143 /* PropertyDeclaration */: - case 142 /* PropertySignature */: + case 144 /* PropertyDeclaration */: + case 143 /* PropertySignature */: return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.memberVariableElement); - case 217 /* FunctionDeclaration */: + case 219 /* FunctionDeclaration */: return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.functionElement); - case 215 /* VariableDeclaration */: - case 167 /* BindingElement */: + case 217 /* VariableDeclaration */: + case 168 /* BindingElement */: var variableDeclarationNode = void 0; - var name_32; - if (node.kind === 167 /* BindingElement */) { - name_32 = node.name; + var name_35; + if (node.kind === 168 /* BindingElement */) { + name_35 = node.name; variableDeclarationNode = node; // binding elements are added only for variable declarations // bubble up to the containing variable declaration - while (variableDeclarationNode && variableDeclarationNode.kind !== 215 /* VariableDeclaration */) { + while (variableDeclarationNode && variableDeclarationNode.kind !== 217 /* VariableDeclaration */) { variableDeclarationNode = variableDeclarationNode.parent; } ts.Debug.assert(variableDeclarationNode !== undefined); @@ -42242,24 +43814,24 @@ var ts; else { ts.Debug.assert(!ts.isBindingPattern(node.name)); variableDeclarationNode = node; - name_32 = node.name; + name_35 = node.name; } if (ts.isConst(variableDeclarationNode)) { - return createItem(node, getTextOfNode(name_32), ts.ScriptElementKind.constElement); + return createItem(node, getTextOfNode(name_35), ts.ScriptElementKind.constElement); } else if (ts.isLet(variableDeclarationNode)) { - return createItem(node, getTextOfNode(name_32), ts.ScriptElementKind.letElement); + return createItem(node, getTextOfNode(name_35), ts.ScriptElementKind.letElement); } else { - return createItem(node, getTextOfNode(name_32), ts.ScriptElementKind.variableElement); + return createItem(node, getTextOfNode(name_35), ts.ScriptElementKind.variableElement); } - case 146 /* Constructor */: + case 147 /* Constructor */: return createItem(node, "constructor", ts.ScriptElementKind.constructorImplementationElement); - case 234 /* ExportSpecifier */: - case 230 /* ImportSpecifier */: - case 225 /* ImportEqualsDeclaration */: - case 227 /* ImportClause */: - case 228 /* NamespaceImport */: + case 237 /* ExportSpecifier */: + case 233 /* ImportSpecifier */: + case 228 /* ImportEqualsDeclaration */: + case 230 /* ImportClause */: + case 231 /* NamespaceImport */: return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.alias); } return undefined; @@ -42289,17 +43861,20 @@ var ts; } function createTopLevelItem(node) { switch (node.kind) { - case 252 /* SourceFile */: + case 255 /* SourceFile */: return createSourceFileItem(node); - case 218 /* ClassDeclaration */: + case 220 /* ClassDeclaration */: return createClassItem(node); - case 221 /* EnumDeclaration */: + case 146 /* MethodDeclaration */: + case 147 /* Constructor */: + return createMemberFunctionLikeItem(node); + case 223 /* EnumDeclaration */: return createEnumItem(node); - case 219 /* InterfaceDeclaration */: - return createIterfaceItem(node); - case 222 /* ModuleDeclaration */: + case 221 /* InterfaceDeclaration */: + return createInterfaceItem(node); + case 224 /* ModuleDeclaration */: return createModuleItem(node); - case 217 /* FunctionDeclaration */: + case 219 /* FunctionDeclaration */: return createFunctionItem(node); } return undefined; @@ -42311,7 +43886,7 @@ var ts; // Otherwise, we need to aggregate each identifier to build up the qualified name. var result = []; result.push(moduleDeclaration.name.text); - while (moduleDeclaration.body && moduleDeclaration.body.kind === 222 /* ModuleDeclaration */) { + while (moduleDeclaration.body && moduleDeclaration.body.kind === 224 /* ModuleDeclaration */) { moduleDeclaration = moduleDeclaration.body; result.push(moduleDeclaration.name.text); } @@ -42323,12 +43898,29 @@ var ts; return getNavigationBarItem(moduleName, ts.ScriptElementKind.moduleElement, ts.getNodeModifiers(node), [getNodeSpan(node)], childItems, getIndent(node)); } function createFunctionItem(node) { - if (node.body && node.body.kind === 196 /* Block */) { + if (node.body && node.body.kind === 198 /* Block */) { var childItems = getItemsWorker(sortNodes(node.body.statements), createChildItem); return getNavigationBarItem(!node.name ? "default" : node.name.text, ts.ScriptElementKind.functionElement, ts.getNodeModifiers(node), [getNodeSpan(node)], childItems, getIndent(node)); } return undefined; } + function createMemberFunctionLikeItem(node) { + if (node.body && node.body.kind === 198 /* Block */) { + var childItems = getItemsWorker(sortNodes(node.body.statements), createChildItem); + var scriptElementKind = void 0; + var memberFunctionName = void 0; + if (node.kind === 146 /* MethodDeclaration */) { + memberFunctionName = ts.getPropertyNameForPropertyNameNode(node.name); + scriptElementKind = ts.ScriptElementKind.memberFunctionElement; + } + else { + memberFunctionName = "constructor"; + scriptElementKind = ts.ScriptElementKind.constructorImplementationElement; + } + return getNavigationBarItem(memberFunctionName, scriptElementKind, ts.getNodeModifiers(node), [getNodeSpan(node)], childItems, getIndent(node)); + } + return undefined; + } function createSourceFileItem(node) { var childItems = getItemsWorker(getChildNodes(node.statements), createChildItem); if (childItems === undefined || childItems.length === 0) { @@ -42344,7 +43936,7 @@ var ts; var childItems; if (node.members) { var constructor = ts.forEach(node.members, function (member) { - return member.kind === 146 /* Constructor */ && member; + return member.kind === 147 /* Constructor */ && member; }); // Add the constructor parameters in as children of the class (for property parameters). // Note that *all non-binding pattern named* parameters will be added to the nodes array, but parameters that @@ -42362,13 +43954,13 @@ var ts; var childItems = getItemsWorker(sortNodes(removeComputedProperties(node)), createChildItem); return getNavigationBarItem(node.name.text, ts.ScriptElementKind.enumElement, ts.getNodeModifiers(node), [getNodeSpan(node)], childItems, getIndent(node)); } - function createIterfaceItem(node) { + function createInterfaceItem(node) { var childItems = getItemsWorker(sortNodes(removeDynamicallyNamedProperties(node)), createChildItem); return getNavigationBarItem(node.name.text, ts.ScriptElementKind.interfaceElement, ts.getNodeModifiers(node), [getNodeSpan(node)], childItems, getIndent(node)); } } function removeComputedProperties(node) { - return ts.filter(node.members, function (member) { return member.name === undefined || member.name.kind !== 138 /* ComputedPropertyName */; }); + return ts.filter(node.members, function (member) { return member.name === undefined || member.name.kind !== 139 /* ComputedPropertyName */; }); } /** * Like removeComputedProperties, but retains the properties with well known symbol names @@ -42377,13 +43969,13 @@ var ts; return ts.filter(node.members, function (member) { return !ts.hasDynamicName(member); }); } function getInnermostModule(node) { - while (node.body.kind === 222 /* ModuleDeclaration */) { + while (node.body.kind === 224 /* ModuleDeclaration */) { node = node.body; } return node; } function getNodeSpan(node) { - return node.kind === 252 /* SourceFile */ + return node.kind === 255 /* SourceFile */ ? ts.createTextSpanFromBounds(node.getFullStart(), node.getEnd()) : ts.createTextSpanFromBounds(node.getStart(), node.getEnd()); } @@ -42392,6 +43984,188 @@ var ts; } } NavigationBar.getNavigationBarItems = getNavigationBarItems; + function getJsNavigationBarItems(sourceFile, compilerOptions) { + var anonFnText = ""; + var anonClassText = ""; + var indent = 0; + var rootName = ts.isExternalModule(sourceFile) ? + "\"" + ts.escapeString(ts.getBaseFileName(ts.removeFileExtension(ts.normalizePath(sourceFile.fileName)))) + "\"" + : ""; + var sourceFileItem = getNavBarItem(rootName, ts.ScriptElementKind.moduleElement, [getNodeSpan(sourceFile)]); + var topItem = sourceFileItem; + // Walk the whole file, because we want to also find function expressions - which may be in variable initializer, + // call arguments, expressions, etc... + ts.forEachChild(sourceFile, visitNode); + function visitNode(node) { + var newItem = createNavBarItem(node); + if (newItem) { + topItem.childItems.push(newItem); + } + // Add a level if traversing into a container + if (newItem && (ts.isFunctionLike(node) || ts.isClassLike(node))) { + var lastTop = topItem; + indent++; + topItem = newItem; + ts.forEachChild(node, visitNode); + topItem = lastTop; + indent--; + // If the last item added was an anonymous function expression, and it had no children, discard it. + if (newItem && newItem.text === anonFnText && newItem.childItems.length === 0) { + topItem.childItems.pop(); + } + } + else { + ts.forEachChild(node, visitNode); + } + } + function createNavBarItem(node) { + switch (node.kind) { + case 217 /* VariableDeclaration */: + // Only add to the navbar if at the top-level of the file + // Note: "const" and "let" are also SyntaxKind.VariableDeclarations + if (node.parent /*VariableDeclarationList*/.parent /*VariableStatement*/ + .parent /*SourceFile*/.kind !== 255 /* SourceFile */) { + return undefined; + } + // If it is initialized with a function expression, handle it when we reach the function expression node + var varDecl = node; + if (varDecl.initializer && (varDecl.initializer.kind === 178 /* FunctionExpression */ || + varDecl.initializer.kind === 179 /* ArrowFunction */ || + varDecl.initializer.kind === 191 /* ClassExpression */)) { + return undefined; + } + // Fall through + case 219 /* FunctionDeclaration */: + case 220 /* ClassDeclaration */: + case 147 /* Constructor */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: + // "export default function().." looks just like a regular function/class declaration, except with the 'default' flag + var name_36 = node.flags && (node.flags & 512 /* Default */) && !node.name ? "default" : + node.kind === 147 /* Constructor */ ? "constructor" : + ts.declarationNameToString(node.name); + return getNavBarItem(name_36, getScriptKindForElementKind(node.kind), [getNodeSpan(node)]); + case 178 /* FunctionExpression */: + case 179 /* ArrowFunction */: + case 191 /* ClassExpression */: + return getDefineModuleItem(node) || getFunctionOrClassExpressionItem(node); + case 146 /* MethodDeclaration */: + var methodDecl = node; + return getNavBarItem(ts.declarationNameToString(methodDecl.name), ts.ScriptElementKind.memberFunctionElement, [getNodeSpan(node)]); + case 234 /* ExportAssignment */: + // e.g. "export default " + return getNavBarItem("default", ts.ScriptElementKind.variableElement, [getNodeSpan(node)]); + case 230 /* ImportClause */: + if (!node.name) { + // No default import (this node is still a parent of named & namespace imports, which are handled below) + return undefined; + } + // fall through + case 233 /* ImportSpecifier */: // e.g. 'id' in: import {id} from 'mod' (in NamedImports, in ImportClause) + case 231 /* NamespaceImport */: // e.g. '* as ns' in: import * as ns from 'mod' (in ImportClause) + case 237 /* ExportSpecifier */: + // Export specifiers are only interesting if they are reexports from another module, or renamed, else they are already globals + if (node.kind === 237 /* ExportSpecifier */) { + if (!node.parent.parent.moduleSpecifier && !node.propertyName) { + return undefined; + } + } + var decl = node; + if (!decl.name) { + return undefined; + } + var declName = ts.declarationNameToString(decl.name); + return getNavBarItem(declName, ts.ScriptElementKind.constElement, [getNodeSpan(node)]); + default: + return undefined; + } + } + function getNavBarItem(text, kind, spans, kindModifiers) { + if (kindModifiers === void 0) { kindModifiers = ts.ScriptElementKindModifier.none; } + return { + text: text, kind: kind, kindModifiers: kindModifiers, spans: spans, childItems: [], indent: indent, bolded: false, grayed: false + }; + } + function getDefineModuleItem(node) { + if (node.kind !== 178 /* FunctionExpression */ && node.kind !== 179 /* ArrowFunction */) { + return undefined; + } + // No match if this is not a call expression to an identifier named 'define' + if (node.parent.kind !== 173 /* CallExpression */) { + return undefined; + } + var callExpr = node.parent; + if (callExpr.expression.kind !== 69 /* Identifier */ || callExpr.expression.getText() !== 'define') { + return undefined; + } + // Return a module of either the given text in the first argument, or of the source file path + var defaultName = node.getSourceFile().fileName; + if (callExpr.arguments[0].kind === 9 /* StringLiteral */) { + defaultName = (callExpr.arguments[0]).text; + } + return getNavBarItem(defaultName, ts.ScriptElementKind.moduleElement, [getNodeSpan(node.parent)]); + } + function getFunctionOrClassExpressionItem(node) { + if (node.kind !== 178 /* FunctionExpression */ && + node.kind !== 179 /* ArrowFunction */ && + node.kind !== 191 /* ClassExpression */) { + return undefined; + } + var fnExpr = node; + var fnName; + if (fnExpr.name && ts.getFullWidth(fnExpr.name) > 0) { + // The expression has an identifier, so use that as the name + fnName = ts.declarationNameToString(fnExpr.name); + } + else { + // See if it is a var initializer. If so, use the var name. + if (fnExpr.parent.kind === 217 /* VariableDeclaration */) { + fnName = ts.declarationNameToString(fnExpr.parent.name); + } + else if (fnExpr.parent.kind === 186 /* BinaryExpression */ && + fnExpr.parent.operatorToken.kind === 56 /* EqualsToken */) { + fnName = fnExpr.parent.left.getText(); + if (fnName.length > 20) { + fnName = fnName.substring(0, 17) + "..."; + } + } + else if (fnExpr.parent.kind === 252 /* PropertyAssignment */ && + fnExpr.parent.name) { + fnName = fnExpr.parent.name.getText(); + } + else { + fnName = node.kind === 191 /* ClassExpression */ ? anonClassText : anonFnText; + } + } + var scriptKind = node.kind === 191 /* ClassExpression */ ? ts.ScriptElementKind.classElement : ts.ScriptElementKind.functionElement; + return getNavBarItem(fnName, scriptKind, [getNodeSpan(node)]); + } + function getNodeSpan(node) { + return node.kind === 255 /* SourceFile */ + ? ts.createTextSpanFromBounds(node.getFullStart(), node.getEnd()) + : ts.createTextSpanFromBounds(node.getStart(), node.getEnd()); + } + function getScriptKindForElementKind(kind) { + switch (kind) { + case 217 /* VariableDeclaration */: + return ts.ScriptElementKind.variableElement; + case 219 /* FunctionDeclaration */: + return ts.ScriptElementKind.functionElement; + case 220 /* ClassDeclaration */: + return ts.ScriptElementKind.classElement; + case 147 /* Constructor */: + return ts.ScriptElementKind.constructorImplementationElement; + case 148 /* GetAccessor */: + return ts.ScriptElementKind.memberGetAccessorElement; + case 149 /* SetAccessor */: + return ts.ScriptElementKind.memberSetAccessorElement; + default: + return "unknown"; + } + } + return sourceFileItem.childItems; + } + NavigationBar.getJsNavigationBarItems = getJsNavigationBarItems; })(NavigationBar = ts.NavigationBar || (ts.NavigationBar = {})); })(ts || (ts = {})); /* @internal */ @@ -43008,7 +44782,7 @@ var ts; // break; // case TypeScript.SyntaxKind.GreaterThanGreaterThanGreaterThanToken: // stack++; - // // Intentaion fall through + // // Intentional fall through // case TypeScript.SyntaxKind.GreaterThanToken: // stack++; // break; @@ -43028,7 +44802,7 @@ var ts; // } // break; // case TypeScript.SyntaxKind.EqualsGreaterThanToken: - // // This can be a function type or a constructor type. In either case, we want to skip the function defintion + // // This can be a function type or a constructor type. In either case, we want to skip the function definition // token = previousToken(token, /*includeSkippedTokens*/ true); // if (token && token.kind() === TypeScript.SyntaxKind.CloseParenToken) { // // Skip untill the matching open paren token @@ -43047,7 +44821,7 @@ var ts; // } // } // else { - // // This is not a funtion type. exit the main loop + // // This is not a function type. exit the main loop // break whileLoop; // } // break; @@ -43134,7 +44908,7 @@ var ts; } return createSignatureHelpItems(candidates, resolvedSignature, argumentInfo); function createJavaScriptSignatureHelpItems(argumentInfo) { - if (argumentInfo.invocation.kind !== 172 /* CallExpression */) { + if (argumentInfo.invocation.kind !== 173 /* CallExpression */) { return undefined; } // See if we can find some symbol with the call expression name that has call signatures. @@ -43142,7 +44916,7 @@ var ts; var expression = callExpression.expression; var name = expression.kind === 69 /* Identifier */ ? expression - : expression.kind === 170 /* PropertyAccessExpression */ + : expression.kind === 171 /* PropertyAccessExpression */ ? expression.name : undefined; if (!name || !name.text) { @@ -43175,7 +44949,7 @@ var ts; * in the argument of an invocation; returns undefined otherwise. */ function getImmediatelyContainingArgumentInfo(node) { - if (node.parent.kind === 172 /* CallExpression */ || node.parent.kind === 173 /* NewExpression */) { + if (node.parent.kind === 173 /* CallExpression */ || node.parent.kind === 174 /* NewExpression */) { var callExpression = node.parent; // There are 3 cases to handle: // 1. The token introduces a list, and should begin a sig help session @@ -43228,25 +45002,25 @@ var ts; }; } } - else if (node.kind === 11 /* NoSubstitutionTemplateLiteral */ && node.parent.kind === 174 /* TaggedTemplateExpression */) { + else if (node.kind === 11 /* NoSubstitutionTemplateLiteral */ && node.parent.kind === 175 /* TaggedTemplateExpression */) { // Check if we're actually inside the template; // otherwise we'll fall out and return undefined. if (ts.isInsideTemplateLiteral(node, position)) { return getArgumentListInfoForTemplate(node.parent, /*argumentIndex*/ 0); } } - else if (node.kind === 12 /* TemplateHead */ && node.parent.parent.kind === 174 /* TaggedTemplateExpression */) { + else if (node.kind === 12 /* TemplateHead */ && node.parent.parent.kind === 175 /* TaggedTemplateExpression */) { var templateExpression = node.parent; var tagExpression = templateExpression.parent; - ts.Debug.assert(templateExpression.kind === 187 /* TemplateExpression */); + ts.Debug.assert(templateExpression.kind === 188 /* TemplateExpression */); var argumentIndex = ts.isInsideTemplateLiteral(node, position) ? 0 : 1; return getArgumentListInfoForTemplate(tagExpression, argumentIndex); } - else if (node.parent.kind === 194 /* TemplateSpan */ && node.parent.parent.parent.kind === 174 /* TaggedTemplateExpression */) { + else if (node.parent.kind === 196 /* TemplateSpan */ && node.parent.parent.parent.kind === 175 /* TaggedTemplateExpression */) { var templateSpan = node.parent; var templateExpression = templateSpan.parent; var tagExpression = templateExpression.parent; - ts.Debug.assert(templateExpression.kind === 187 /* TemplateExpression */); + ts.Debug.assert(templateExpression.kind === 188 /* TemplateExpression */); // If we're just after a template tail, don't show signature help. if (node.kind === 14 /* TemplateTail */ && !ts.isInsideTemplateLiteral(node, position)) { return undefined; @@ -43364,7 +45138,7 @@ var ts; // // This is because a Missing node has no width. However, what we actually want is to include trivia // leading up to the next token in case the user is about to type in a TemplateMiddle or TemplateTail. - if (template.kind === 187 /* TemplateExpression */) { + if (template.kind === 188 /* TemplateExpression */) { var lastSpan = ts.lastOrUndefined(template.templateSpans); if (lastSpan.literal.getFullWidth() === 0) { applicableSpanEnd = ts.skipTrivia(sourceFile.text, applicableSpanEnd, /*stopAfterLineBreak*/ false); @@ -43373,7 +45147,7 @@ var ts; return ts.createTextSpan(applicableSpanStart, applicableSpanEnd - applicableSpanStart); } function getContainingArgumentInfo(node) { - for (var n = node; n.kind !== 252 /* SourceFile */; n = n.parent) { + for (var n = node; n.kind !== 255 /* SourceFile */; n = n.parent) { if (ts.isFunctionBlock(n)) { return undefined; } @@ -43438,7 +45212,7 @@ var ts; signatureHelpParameters = typeParameters && typeParameters.length > 0 ? ts.map(typeParameters, createSignatureHelpParameterForTypeParameter) : emptyArray; suffixDisplayParts.push(ts.punctuationPart(27 /* GreaterThanToken */)); var parameterParts = ts.mapToDisplayParts(function (writer) { - return typeChecker.getSymbolDisplayBuilder().buildDisplayForParametersAndDelimiters(candidateSignature.parameters, writer, invocation); + return typeChecker.getSymbolDisplayBuilder().buildDisplayForParametersAndDelimiters(candidateSignature.thisType, candidateSignature.parameters, writer, invocation); }); ts.addRange(suffixDisplayParts, parameterParts); } @@ -43511,31 +45285,6 @@ var ts; /* @internal */ var ts; (function (ts) { - function getEndLinePosition(line, sourceFile) { - ts.Debug.assert(line >= 0); - var lineStarts = sourceFile.getLineStarts(); - var lineIndex = line; - if (lineIndex + 1 === lineStarts.length) { - // last line - return EOF - return sourceFile.text.length - 1; - } - else { - // current line start - var start = lineStarts[lineIndex]; - // take the start position of the next line -1 = it should be some line break - var pos = lineStarts[lineIndex + 1] - 1; - ts.Debug.assert(ts.isLineBreak(sourceFile.text.charCodeAt(pos))); - // walk backwards skipping line breaks, stop the the beginning of current line. - // i.e: - // - // $ <- end of line for this position should match the start position - while (start <= pos && ts.isLineBreak(sourceFile.text.charCodeAt(pos))) { - pos--; - } - return pos; - } - } - ts.getEndLinePosition = getEndLinePosition; function getLineStartPositionForPosition(position, sourceFile) { var lineStarts = sourceFile.getLineStarts(); var line = sourceFile.getLineAndCharacterOfPosition(position).line; @@ -43573,40 +45322,40 @@ var ts; return false; } switch (n.kind) { - case 218 /* ClassDeclaration */: - case 219 /* InterfaceDeclaration */: - case 221 /* EnumDeclaration */: - case 169 /* ObjectLiteralExpression */: - case 165 /* ObjectBindingPattern */: - case 157 /* TypeLiteral */: - case 196 /* Block */: - case 223 /* ModuleBlock */: - case 224 /* CaseBlock */: + case 220 /* ClassDeclaration */: + case 221 /* InterfaceDeclaration */: + case 223 /* EnumDeclaration */: + case 170 /* ObjectLiteralExpression */: + case 166 /* ObjectBindingPattern */: + case 158 /* TypeLiteral */: + case 198 /* Block */: + case 225 /* ModuleBlock */: + case 226 /* CaseBlock */: return nodeEndsWith(n, 16 /* CloseBraceToken */, sourceFile); - case 248 /* CatchClause */: + case 251 /* CatchClause */: return isCompletedNode(n.block, sourceFile); - case 173 /* NewExpression */: + case 174 /* NewExpression */: if (!n.arguments) { return true; } // fall through - case 172 /* CallExpression */: - case 176 /* ParenthesizedExpression */: - case 162 /* ParenthesizedType */: + case 173 /* CallExpression */: + case 177 /* ParenthesizedExpression */: + case 163 /* ParenthesizedType */: return nodeEndsWith(n, 18 /* CloseParenToken */, sourceFile); - case 154 /* FunctionType */: - case 155 /* ConstructorType */: + case 155 /* FunctionType */: + case 156 /* ConstructorType */: return isCompletedNode(n.type, sourceFile); - case 146 /* Constructor */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: - case 217 /* FunctionDeclaration */: - case 177 /* FunctionExpression */: - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: - case 150 /* ConstructSignature */: - case 149 /* CallSignature */: - case 178 /* ArrowFunction */: + case 147 /* Constructor */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: + case 219 /* FunctionDeclaration */: + case 178 /* FunctionExpression */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: + case 151 /* ConstructSignature */: + case 150 /* CallSignature */: + case 179 /* ArrowFunction */: if (n.body) { return isCompletedNode(n.body, sourceFile); } @@ -43616,64 +45365,64 @@ var ts; // Even though type parameters can be unclosed, we can get away with // having at least a closing paren. return hasChildOfKind(n, 18 /* CloseParenToken */, sourceFile); - case 222 /* ModuleDeclaration */: + case 224 /* ModuleDeclaration */: return n.body && isCompletedNode(n.body, sourceFile); - case 200 /* IfStatement */: + case 202 /* IfStatement */: if (n.elseStatement) { return isCompletedNode(n.elseStatement, sourceFile); } return isCompletedNode(n.thenStatement, sourceFile); - case 199 /* ExpressionStatement */: + case 201 /* ExpressionStatement */: return isCompletedNode(n.expression, sourceFile) || hasChildOfKind(n, 23 /* SemicolonToken */); - case 168 /* ArrayLiteralExpression */: - case 166 /* ArrayBindingPattern */: - case 171 /* ElementAccessExpression */: - case 138 /* ComputedPropertyName */: - case 159 /* TupleType */: + case 169 /* ArrayLiteralExpression */: + case 167 /* ArrayBindingPattern */: + case 172 /* ElementAccessExpression */: + case 139 /* ComputedPropertyName */: + case 160 /* TupleType */: return nodeEndsWith(n, 20 /* CloseBracketToken */, sourceFile); - case 151 /* IndexSignature */: + case 152 /* IndexSignature */: if (n.type) { return isCompletedNode(n.type, sourceFile); } return hasChildOfKind(n, 20 /* CloseBracketToken */, sourceFile); - case 245 /* CaseClause */: - case 246 /* DefaultClause */: - // there is no such thing as terminator token for CaseClause/DefaultClause so for simplicitly always consider them non-completed + case 248 /* CaseClause */: + case 249 /* DefaultClause */: + // there is no such thing as terminator token for CaseClause/DefaultClause so for simplicity always consider them non-completed return false; - case 203 /* ForStatement */: - case 204 /* ForInStatement */: - case 205 /* ForOfStatement */: - case 202 /* WhileStatement */: + case 205 /* ForStatement */: + case 206 /* ForInStatement */: + case 207 /* ForOfStatement */: + case 204 /* WhileStatement */: return isCompletedNode(n.statement, sourceFile); - case 201 /* DoStatement */: + case 203 /* DoStatement */: // rough approximation: if DoStatement has While keyword - then if node is completed is checking the presence of ')'; var hasWhileKeyword = findChildOfKind(n, 104 /* WhileKeyword */, sourceFile); if (hasWhileKeyword) { return nodeEndsWith(n, 18 /* CloseParenToken */, sourceFile); } return isCompletedNode(n.statement, sourceFile); - case 156 /* TypeQuery */: + case 157 /* TypeQuery */: return isCompletedNode(n.exprName, sourceFile); - case 180 /* TypeOfExpression */: - case 179 /* DeleteExpression */: - case 181 /* VoidExpression */: - case 188 /* YieldExpression */: - case 189 /* SpreadElementExpression */: + case 181 /* TypeOfExpression */: + case 180 /* DeleteExpression */: + case 182 /* VoidExpression */: + case 189 /* YieldExpression */: + case 190 /* SpreadElementExpression */: var unaryWordExpression = n; return isCompletedNode(unaryWordExpression.expression, sourceFile); - case 174 /* TaggedTemplateExpression */: + case 175 /* TaggedTemplateExpression */: return isCompletedNode(n.template, sourceFile); - case 187 /* TemplateExpression */: + case 188 /* TemplateExpression */: var lastSpan = ts.lastOrUndefined(n.templateSpans); return isCompletedNode(lastSpan, sourceFile); - case 194 /* TemplateSpan */: + case 196 /* TemplateSpan */: return ts.nodeIsPresent(n.literal); - case 183 /* PrefixUnaryExpression */: + case 184 /* PrefixUnaryExpression */: return isCompletedNode(n.operand, sourceFile); - case 185 /* BinaryExpression */: + case 186 /* BinaryExpression */: return isCompletedNode(n.right, sourceFile); - case 186 /* ConditionalExpression */: + case 187 /* ConditionalExpression */: return isCompletedNode(n.whenFalse, sourceFile); default: return true; @@ -43729,7 +45478,7 @@ var ts; // for the position of the relevant node (or comma). var syntaxList = ts.forEach(node.parent.getChildren(), function (c) { // find syntax list that covers the span of the node - if (c.kind === 275 /* SyntaxList */ && c.pos <= node.pos && c.end >= node.end) { + if (c.kind === 278 /* SyntaxList */ && c.pos <= node.pos && c.end >= node.end) { return c; } }); @@ -43746,7 +45495,7 @@ var ts; } ts.getTouchingWord = getTouchingWord; /* Gets the token whose text has range [start, end) and position >= start - * and (position < end or (position === end && token is keyword or identifier or numeric\string litera)) + * and (position < end or (position === end && token is keyword or identifier or numeric/string literal)) */ function getTouchingPropertyName(sourceFile, position) { return getTouchingToken(sourceFile, position, function (n) { return isPropertyName(n.kind); }); @@ -43835,7 +45584,7 @@ var ts; function findPrecedingToken(position, sourceFile, startNode) { return find(startNode || sourceFile); function findRightmostToken(n) { - if (isToken(n) || n.kind === 240 /* JsxText */) { + if (isToken(n) || n.kind === 243 /* JsxText */) { return n; } var children = n.getChildren(); @@ -43843,7 +45592,7 @@ var ts; return candidate && findRightmostToken(candidate); } function find(n) { - if (isToken(n) || n.kind === 240 /* JsxText */) { + if (isToken(n) || n.kind === 243 /* JsxText */) { return n; } var children = n.getChildren(); @@ -43857,10 +45606,10 @@ var ts; // if no - position is in the node itself so we should recurse in it. // NOTE: JsxText is a weird kind of node that can contain only whitespaces (since they are not counted as trivia). // if this is the case - then we should assume that token in question is located in previous child. - if (position < child.end && (nodeHasTokens(child) || child.kind === 240 /* JsxText */)) { + if (position < child.end && (nodeHasTokens(child) || child.kind === 243 /* JsxText */)) { var start = child.getStart(sourceFile); var lookInPreviousChild = (start >= position) || - (child.kind === 240 /* JsxText */ && start === child.end); // whitespace only JsxText + (child.kind === 243 /* JsxText */ && start === child.end); // whitespace only JsxText if (lookInPreviousChild) { // actual start of the node is past the position - previous token should be at the end of previous child var candidate = findRightmostChildNodeWithTokens(children, /*exclusiveStartPosition*/ i); @@ -43872,7 +45621,7 @@ var ts; } } } - ts.Debug.assert(startNode !== undefined || n.kind === 252 /* SourceFile */); + ts.Debug.assert(startNode !== undefined || n.kind === 255 /* SourceFile */); // Here we know that none of child token nodes embrace the position, // the only known case is when position is at the end of the file. // Try to find the rightmost token in the file without filtering. @@ -43894,7 +45643,7 @@ var ts; ts.findPrecedingToken = findPrecedingToken; function isInString(sourceFile, position) { var token = getTokenAtPosition(sourceFile, position); - return token && (token.kind === 9 /* StringLiteral */ || token.kind === 164 /* StringLiteralType */) && position > token.getStart(); + return token && (token.kind === 9 /* StringLiteral */ || token.kind === 165 /* StringLiteralType */) && position > token.getStart(); } ts.isInString = isInString; function isInComment(sourceFile, position) { @@ -43998,17 +45747,17 @@ var ts; } ts.getNodeModifiers = getNodeModifiers; function getTypeArgumentOrTypeParameterList(node) { - if (node.kind === 153 /* TypeReference */ || node.kind === 172 /* CallExpression */) { + if (node.kind === 154 /* TypeReference */ || node.kind === 173 /* CallExpression */) { return node.typeArguments; } - if (ts.isFunctionLike(node) || node.kind === 218 /* ClassDeclaration */ || node.kind === 219 /* InterfaceDeclaration */) { + if (ts.isFunctionLike(node) || node.kind === 220 /* ClassDeclaration */ || node.kind === 221 /* InterfaceDeclaration */) { return node.typeParameters; } return undefined; } ts.getTypeArgumentOrTypeParameterList = getTypeArgumentOrTypeParameterList; function isToken(n) { - return n.kind >= 0 /* FirstToken */ && n.kind <= 136 /* LastToken */; + return n.kind >= 0 /* FirstToken */ && n.kind <= 137 /* LastToken */; } ts.isToken = isToken; function isWord(kind) { @@ -44024,7 +45773,7 @@ var ts; ts.isComment = isComment; function isStringOrRegularExpressionOrTemplateLiteral(kind) { if (kind === 9 /* StringLiteral */ - || kind === 164 /* StringLiteralType */ + || kind === 165 /* StringLiteralType */ || kind === 10 /* RegularExpressionLiteral */ || ts.isTemplateLiteralKind(kind)) { return true; @@ -44068,18 +45817,18 @@ var ts; } ts.compareDataObjects = compareDataObjects; function isArrayLiteralOrObjectLiteralDestructuringPattern(node) { - if (node.kind === 168 /* ArrayLiteralExpression */ || - node.kind === 169 /* ObjectLiteralExpression */) { + if (node.kind === 169 /* ArrayLiteralExpression */ || + node.kind === 170 /* ObjectLiteralExpression */) { // [a,b,c] from: // [a, b, c] = someExpression; - if (node.parent.kind === 185 /* BinaryExpression */ && + if (node.parent.kind === 186 /* BinaryExpression */ && node.parent.left === node && node.parent.operatorToken.kind === 56 /* EqualsToken */) { return true; } // [a, b, c] from: // for([a, b, c] of expression) - if (node.parent.kind === 205 /* ForOfStatement */ && + if (node.parent.kind === 207 /* ForOfStatement */ && node.parent.initializer === node) { return true; } @@ -44087,7 +45836,7 @@ var ts; // [x, [a, b, c] ] = someExpression // or // {x, a: {a, b, c} } = someExpression - if (isArrayLiteralOrObjectLiteralDestructuringPattern(node.parent.kind === 249 /* PropertyAssignment */ ? node.parent.parent : node.parent)) { + if (isArrayLiteralOrObjectLiteralDestructuringPattern(node.parent.kind === 252 /* PropertyAssignment */ ? node.parent.parent : node.parent)) { return true; } } @@ -44100,7 +45849,7 @@ var ts; var ts; (function (ts) { function isFirstDeclarationOfSymbolParameter(symbol) { - return symbol.declarations && symbol.declarations.length > 0 && symbol.declarations[0].kind === 140 /* Parameter */; + return symbol.declarations && symbol.declarations.length > 0 && symbol.declarations[0].kind === 141 /* Parameter */; } ts.isFirstDeclarationOfSymbolParameter = isFirstDeclarationOfSymbolParameter; var displayPartWriter = getDisplayPartWriter(); @@ -44288,7 +46037,7 @@ var ts; ts.getDeclaredName = getDeclaredName; function isImportOrExportSpecifierName(location) { return location.parent && - (location.parent.kind === 230 /* ImportSpecifier */ || location.parent.kind === 234 /* ExportSpecifier */) && + (location.parent.kind === 233 /* ImportSpecifier */ || location.parent.kind === 237 /* ExportSpecifier */) && location.parent.propertyName === location; } ts.isImportOrExportSpecifierName = isImportOrExportSpecifierName; @@ -44308,6 +46057,213 @@ var ts; return name; } ts.stripQuotes = stripQuotes; + function scriptKindIs(fileName, host) { + var scriptKinds = []; + for (var _i = 2; _i < arguments.length; _i++) { + scriptKinds[_i - 2] = arguments[_i]; + } + var scriptKind = getScriptKind(fileName, host); + return ts.forEach(scriptKinds, function (k) { return k === scriptKind; }); + } + ts.scriptKindIs = scriptKindIs; + function getScriptKind(fileName, host) { + // First check to see if the script kind can be determined from the file name + var scriptKind = ts.getScriptKindFromFileName(fileName); + if (scriptKind === 0 /* Unknown */ && host && host.getScriptKind) { + // Next check to see if the host can resolve the script kind + scriptKind = host.getScriptKind(fileName); + } + return ts.ensureScriptKind(fileName, scriptKind); + } + ts.getScriptKind = getScriptKind; +})(ts || (ts = {})); +// Copyright (c) Microsoft. All rights reserved. Licensed under the Apache License, Version 2.0. +// See LICENSE.txt in the project root for complete license information. +/// +/* @internal */ +var ts; +(function (ts) { + var JsTyping; + (function (JsTyping) { + ; + ; + // A map of loose file names to library names + // that we are confident require typings + var safeList; + /** + * @param host is the object providing I/O related operations. + * @param fileNames are the file names that belong to the same project + * @param projectRootPath is the path to the project root directory + * @param safeListPath is the path used to retrieve the safe list + * @param packageNameToTypingLocation is the map of package names to their cached typing locations + * @param typingOptions are used to customize the typing inference process + * @param compilerOptions are used as a source for typing inference + */ + function discoverTypings(host, fileNames, projectRootPath, safeListPath, packageNameToTypingLocation, typingOptions, compilerOptions) { + // A typing name to typing file path mapping + var inferredTypings = {}; + if (!typingOptions || !typingOptions.enableAutoDiscovery) { + return { cachedTypingPaths: [], newTypingNames: [], filesToWatch: [] }; + } + // Only infer typings for .js and .jsx files + fileNames = ts.filter(ts.map(fileNames, ts.normalizePath), function (f) { return ts.scriptKindIs(f, /*LanguageServiceHost*/ undefined, 1 /* JS */, 2 /* JSX */); }); + if (!safeList) { + var result = ts.readConfigFile(safeListPath, function (path) { return host.readFile(path); }); + if (result.config) { + safeList = result.config; + } + else { + safeList = {}; + } + ; + } + var filesToWatch = []; + // Directories to search for package.json, bower.json and other typing information + var searchDirs = []; + var exclude = []; + mergeTypings(typingOptions.include); + exclude = typingOptions.exclude || []; + var possibleSearchDirs = ts.map(fileNames, ts.getDirectoryPath); + if (projectRootPath !== undefined) { + possibleSearchDirs.push(projectRootPath); + } + searchDirs = ts.deduplicate(possibleSearchDirs); + for (var _i = 0, searchDirs_1 = searchDirs; _i < searchDirs_1.length; _i++) { + var searchDir = searchDirs_1[_i]; + var packageJsonPath = ts.combinePaths(searchDir, "package.json"); + getTypingNamesFromJson(packageJsonPath, filesToWatch); + var bowerJsonPath = ts.combinePaths(searchDir, "bower.json"); + getTypingNamesFromJson(bowerJsonPath, filesToWatch); + var nodeModulesPath = ts.combinePaths(searchDir, "node_modules"); + getTypingNamesFromNodeModuleFolder(nodeModulesPath); + } + getTypingNamesFromSourceFileNames(fileNames); + // Add the cached typing locations for inferred typings that are already installed + for (var name_37 in packageNameToTypingLocation) { + if (ts.hasProperty(inferredTypings, name_37) && !inferredTypings[name_37]) { + inferredTypings[name_37] = packageNameToTypingLocation[name_37]; + } + } + // Remove typings that the user has added to the exclude list + for (var _a = 0, exclude_1 = exclude; _a < exclude_1.length; _a++) { + var excludeTypingName = exclude_1[_a]; + delete inferredTypings[excludeTypingName]; + } + var newTypingNames = []; + var cachedTypingPaths = []; + for (var typing in inferredTypings) { + if (inferredTypings[typing] !== undefined) { + cachedTypingPaths.push(inferredTypings[typing]); + } + else { + newTypingNames.push(typing); + } + } + return { cachedTypingPaths: cachedTypingPaths, newTypingNames: newTypingNames, filesToWatch: filesToWatch }; + /** + * Merge a given list of typingNames to the inferredTypings map + */ + function mergeTypings(typingNames) { + if (!typingNames) { + return; + } + for (var _i = 0, typingNames_1 = typingNames; _i < typingNames_1.length; _i++) { + var typing = typingNames_1[_i]; + if (!ts.hasProperty(inferredTypings, typing)) { + inferredTypings[typing] = undefined; + } + } + } + /** + * Get the typing info from common package manager json files like package.json or bower.json + */ + function getTypingNamesFromJson(jsonPath, filesToWatch) { + var result = ts.readConfigFile(jsonPath, function (path) { return host.readFile(path); }); + if (result.config) { + var jsonConfig = result.config; + filesToWatch.push(jsonPath); + if (jsonConfig.dependencies) { + mergeTypings(ts.getKeys(jsonConfig.dependencies)); + } + if (jsonConfig.devDependencies) { + mergeTypings(ts.getKeys(jsonConfig.devDependencies)); + } + if (jsonConfig.optionalDependencies) { + mergeTypings(ts.getKeys(jsonConfig.optionalDependencies)); + } + if (jsonConfig.peerDependencies) { + mergeTypings(ts.getKeys(jsonConfig.peerDependencies)); + } + } + } + /** + * Infer typing names from given file names. For example, the file name "jquery-min.2.3.4.js" + * should be inferred to the 'jquery' typing name; and "angular-route.1.2.3.js" should be inferred + * to the 'angular-route' typing name. + * @param fileNames are the names for source files in the project + */ + function getTypingNamesFromSourceFileNames(fileNames) { + var jsFileNames = ts.filter(fileNames, ts.hasJavaScriptFileExtension); + var inferredTypingNames = ts.map(jsFileNames, function (f) { return ts.removeFileExtension(ts.getBaseFileName(f.toLowerCase())); }); + var cleanedTypingNames = ts.map(inferredTypingNames, function (f) { return f.replace(/((?:\.|-)min(?=\.|$))|((?:-|\.)\d+)/g, ""); }); + if (safeList === undefined) { + mergeTypings(cleanedTypingNames); + } + else { + mergeTypings(ts.filter(cleanedTypingNames, function (f) { return ts.hasProperty(safeList, f); })); + } + var hasJsxFile = ts.forEach(fileNames, function (f) { return ts.scriptKindIs(f, /*LanguageServiceHost*/ undefined, 2 /* JSX */); }); + if (hasJsxFile) { + mergeTypings(["react"]); + } + } + /** + * Infer typing names from node_module folder + * @param nodeModulesPath is the path to the "node_modules" folder + */ + function getTypingNamesFromNodeModuleFolder(nodeModulesPath) { + // Todo: add support for ModuleResolutionHost too + if (!host.directoryExists(nodeModulesPath)) { + return; + } + var typingNames = []; + var fileNames = host.readDirectory(nodeModulesPath, "*.json", /*exclude*/ undefined, /*depth*/ 2); + for (var _i = 0, fileNames_1 = fileNames; _i < fileNames_1.length; _i++) { + var fileName = fileNames_1[_i]; + var normalizedFileName = ts.normalizePath(fileName); + if (ts.getBaseFileName(normalizedFileName) !== "package.json") { + continue; + } + var result = ts.readConfigFile(normalizedFileName, function (path) { return host.readFile(path); }); + if (!result.config) { + continue; + } + var packageJson = result.config; + // npm 3's package.json contains a "_requiredBy" field + // we should include all the top level module names for npm 2, and only module names whose + // "_requiredBy" field starts with "#" or equals "/" for npm 3. + if (packageJson._requiredBy && + ts.filter(packageJson._requiredBy, function (r) { return r[0] === "#" || r === "/"; }).length === 0) { + continue; + } + // If the package has its own d.ts typings, those will take precedence. Otherwise the package name will be used + // to download d.ts files from DefinitelyTyped + if (!packageJson.name) { + continue; + } + if (packageJson.typings) { + var absolutePath = ts.getNormalizedAbsolutePath(packageJson.typings, ts.getDirectoryPath(normalizedFileName)); + inferredTypings[packageJson.name] = absolutePath; + } + else { + typingNames.push(packageJson.name); + } + } + mergeTypings(typingNames); + } + } + JsTyping.discoverTypings = discoverTypings; + })(JsTyping = ts.JsTyping || (ts.JsTyping = {})); })(ts || (ts = {})); /// /// @@ -44411,10 +46367,10 @@ var ts; function shouldRescanJsxIdentifier(node) { if (node.parent) { switch (node.parent.kind) { - case 242 /* JsxAttribute */: - case 239 /* JsxOpeningElement */: - case 241 /* JsxClosingElement */: - case 238 /* JsxSelfClosingElement */: + case 245 /* JsxAttribute */: + case 242 /* JsxOpeningElement */: + case 244 /* JsxClosingElement */: + case 241 /* JsxSelfClosingElement */: return node.kind === 69 /* Identifier */; } } @@ -44455,7 +46411,7 @@ var ts; // readTokenInfo was called before with the same expected scan action. // No need to re-scan text, return existing 'lastTokenInfo' // it is ok to call fixTokenKind here since it does not affect - // what portion of text is consumed. In opposize rescanning can change it, + // what portion of text is consumed. In contrast rescanning can change it, // i.e. for '>=' when originally scanner eats just one character // and rescanning forces it to consume more. return fixTokenKind(lastTokenInfo, n); @@ -45018,9 +46974,9 @@ var ts; } Rules.prototype.getRuleName = function (rule) { var o = this; - for (var name_33 in o) { - if (o[name_33] === rule) { - return name_33; + for (var name_38 in o) { + if (o[name_38] === rule) { + return name_38; } } throw new Error("Unknown rule"); @@ -45029,40 +46985,40 @@ var ts; /// Contexts /// Rules.IsForContext = function (context) { - return context.contextNode.kind === 203 /* ForStatement */; + return context.contextNode.kind === 205 /* ForStatement */; }; Rules.IsNotForContext = function (context) { return !Rules.IsForContext(context); }; Rules.IsBinaryOpContext = function (context) { switch (context.contextNode.kind) { - case 185 /* BinaryExpression */: - case 186 /* ConditionalExpression */: - case 193 /* AsExpression */: - case 152 /* TypePredicate */: - case 160 /* UnionType */: - case 161 /* IntersectionType */: + case 186 /* BinaryExpression */: + case 187 /* ConditionalExpression */: + case 194 /* AsExpression */: + case 153 /* TypePredicate */: + case 161 /* UnionType */: + case 162 /* IntersectionType */: return true; // equals in binding elements: function foo([[x, y] = [1, 2]]) - case 167 /* BindingElement */: + case 168 /* BindingElement */: // equals in type X = ... - case 220 /* TypeAliasDeclaration */: + case 222 /* TypeAliasDeclaration */: // equal in import a = module('a'); - case 225 /* ImportEqualsDeclaration */: + case 228 /* ImportEqualsDeclaration */: // equal in let a = 0; - case 215 /* VariableDeclaration */: + case 217 /* VariableDeclaration */: // equal in p = 0; - case 140 /* Parameter */: - case 251 /* EnumMember */: - case 143 /* PropertyDeclaration */: - case 142 /* PropertySignature */: + case 141 /* Parameter */: + case 254 /* EnumMember */: + case 144 /* PropertyDeclaration */: + case 143 /* PropertySignature */: return context.currentTokenSpan.kind === 56 /* EqualsToken */ || context.nextTokenSpan.kind === 56 /* EqualsToken */; // "in" keyword in for (let x in []) { } - case 204 /* ForInStatement */: + case 206 /* ForInStatement */: return context.currentTokenSpan.kind === 90 /* InKeyword */ || context.nextTokenSpan.kind === 90 /* InKeyword */; // Technically, "of" is not a binary operator, but format it the same way as "in" - case 205 /* ForOfStatement */: - return context.currentTokenSpan.kind === 136 /* OfKeyword */ || context.nextTokenSpan.kind === 136 /* OfKeyword */; + case 207 /* ForOfStatement */: + return context.currentTokenSpan.kind === 137 /* OfKeyword */ || context.nextTokenSpan.kind === 137 /* OfKeyword */; } return false; }; @@ -45070,7 +47026,7 @@ var ts; return !Rules.IsBinaryOpContext(context); }; Rules.IsConditionalOperatorContext = function (context) { - return context.contextNode.kind === 186 /* ConditionalExpression */; + return context.contextNode.kind === 187 /* ConditionalExpression */; }; Rules.IsSameLineTokenOrBeforeMultilineBlockContext = function (context) { //// This check is mainly used inside SpaceBeforeOpenBraceInControl and SpaceBeforeOpenBraceInFunction. @@ -45082,13 +47038,13 @@ var ts; //// Ex: //// if (1) //// { ... } - //// * ) and { are on differnet lines. We only need to format if the block is multiline context. So in this case we don't format. + //// * ) and { are on different lines. We only need to format if the block is multiline context. So in this case we don't format. //// //// Ex: //// if (1) //// { ... //// } - //// * ) and { are on differnet lines. We only need to format if the block is multiline context. So in this case we format. + //// * ) and { are on different lines. We only need to format if the block is multiline context. So in this case we format. return context.TokensAreOnSameLine() || Rules.IsBeforeMultilineBlockContext(context); }; // This check is done before an open brace in a control construct, a function, or a typescript block declaration @@ -45114,93 +47070,93 @@ var ts; return true; } switch (node.kind) { - case 196 /* Block */: - case 224 /* CaseBlock */: - case 169 /* ObjectLiteralExpression */: - case 223 /* ModuleBlock */: + case 198 /* Block */: + case 226 /* CaseBlock */: + case 170 /* ObjectLiteralExpression */: + case 225 /* ModuleBlock */: return true; } return false; }; Rules.IsFunctionDeclContext = function (context) { switch (context.contextNode.kind) { - case 217 /* FunctionDeclaration */: - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: + case 219 /* FunctionDeclaration */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: //case SyntaxKind.MemberFunctionDeclaration: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: ///case SyntaxKind.MethodSignature: - case 149 /* CallSignature */: - case 177 /* FunctionExpression */: - case 146 /* Constructor */: - case 178 /* ArrowFunction */: + case 150 /* CallSignature */: + case 178 /* FunctionExpression */: + case 147 /* Constructor */: + case 179 /* ArrowFunction */: //case SyntaxKind.ConstructorDeclaration: //case SyntaxKind.SimpleArrowFunctionExpression: //case SyntaxKind.ParenthesizedArrowFunctionExpression: - case 219 /* InterfaceDeclaration */: + case 221 /* InterfaceDeclaration */: return true; } return false; }; Rules.IsFunctionDeclarationOrFunctionExpressionContext = function (context) { - return context.contextNode.kind === 217 /* FunctionDeclaration */ || context.contextNode.kind === 177 /* FunctionExpression */; + return context.contextNode.kind === 219 /* FunctionDeclaration */ || context.contextNode.kind === 178 /* FunctionExpression */; }; Rules.IsTypeScriptDeclWithBlockContext = function (context) { return Rules.NodeIsTypeScriptDeclWithBlockContext(context.contextNode); }; Rules.NodeIsTypeScriptDeclWithBlockContext = function (node) { switch (node.kind) { - case 218 /* ClassDeclaration */: - case 190 /* ClassExpression */: - case 219 /* InterfaceDeclaration */: - case 221 /* EnumDeclaration */: - case 157 /* TypeLiteral */: - case 222 /* ModuleDeclaration */: + case 220 /* ClassDeclaration */: + case 191 /* ClassExpression */: + case 221 /* InterfaceDeclaration */: + case 223 /* EnumDeclaration */: + case 158 /* TypeLiteral */: + case 224 /* ModuleDeclaration */: return true; } return false; }; Rules.IsAfterCodeBlockContext = function (context) { switch (context.currentTokenParent.kind) { - case 218 /* ClassDeclaration */: - case 222 /* ModuleDeclaration */: - case 221 /* EnumDeclaration */: - case 196 /* Block */: - case 248 /* CatchClause */: - case 223 /* ModuleBlock */: - case 210 /* SwitchStatement */: + case 220 /* ClassDeclaration */: + case 224 /* ModuleDeclaration */: + case 223 /* EnumDeclaration */: + case 198 /* Block */: + case 251 /* CatchClause */: + case 225 /* ModuleBlock */: + case 212 /* SwitchStatement */: return true; } return false; }; Rules.IsControlDeclContext = function (context) { switch (context.contextNode.kind) { - case 200 /* IfStatement */: - case 210 /* SwitchStatement */: - case 203 /* ForStatement */: - case 204 /* ForInStatement */: - case 205 /* ForOfStatement */: - case 202 /* WhileStatement */: - case 213 /* TryStatement */: - case 201 /* DoStatement */: - case 209 /* WithStatement */: + case 202 /* IfStatement */: + case 212 /* SwitchStatement */: + case 205 /* ForStatement */: + case 206 /* ForInStatement */: + case 207 /* ForOfStatement */: + case 204 /* WhileStatement */: + case 215 /* TryStatement */: + case 203 /* DoStatement */: + case 211 /* WithStatement */: // TODO // case SyntaxKind.ElseClause: - case 248 /* CatchClause */: + case 251 /* CatchClause */: return true; default: return false; } }; Rules.IsObjectContext = function (context) { - return context.contextNode.kind === 169 /* ObjectLiteralExpression */; + return context.contextNode.kind === 170 /* ObjectLiteralExpression */; }; Rules.IsFunctionCallContext = function (context) { - return context.contextNode.kind === 172 /* CallExpression */; + return context.contextNode.kind === 173 /* CallExpression */; }; Rules.IsNewContext = function (context) { - return context.contextNode.kind === 173 /* NewExpression */; + return context.contextNode.kind === 174 /* NewExpression */; }; Rules.IsFunctionCallOrNewContext = function (context) { return Rules.IsFunctionCallContext(context) || Rules.IsNewContext(context); @@ -45212,10 +47168,10 @@ var ts; return context.nextTokenSpan.kind !== 20 /* CloseBracketToken */; }; Rules.IsArrowFunctionContext = function (context) { - return context.contextNode.kind === 178 /* ArrowFunction */; + return context.contextNode.kind === 179 /* ArrowFunction */; }; Rules.IsNonJsxSameLineTokenContext = function (context) { - return context.TokensAreOnSameLine() && context.contextNode.kind !== 240 /* JsxText */; + return context.TokensAreOnSameLine() && context.contextNode.kind !== 243 /* JsxText */; }; Rules.IsNotBeforeBlockInFunctionDeclarationContext = function (context) { return !Rules.IsFunctionDeclContext(context) && !Rules.IsBeforeBlockContext(context); @@ -45230,41 +47186,41 @@ var ts; while (ts.isExpression(node)) { node = node.parent; } - return node.kind === 141 /* Decorator */; + return node.kind === 142 /* Decorator */; }; Rules.IsStartOfVariableDeclarationList = function (context) { - return context.currentTokenParent.kind === 216 /* VariableDeclarationList */ && + return context.currentTokenParent.kind === 218 /* VariableDeclarationList */ && context.currentTokenParent.getStart(context.sourceFile) === context.currentTokenSpan.pos; }; Rules.IsNotFormatOnEnter = function (context) { return context.formattingRequestKind !== 2 /* FormatOnEnter */; }; Rules.IsModuleDeclContext = function (context) { - return context.contextNode.kind === 222 /* ModuleDeclaration */; + return context.contextNode.kind === 224 /* ModuleDeclaration */; }; Rules.IsObjectTypeContext = function (context) { - return context.contextNode.kind === 157 /* TypeLiteral */; // && context.contextNode.parent.kind !== SyntaxKind.InterfaceDeclaration; + return context.contextNode.kind === 158 /* TypeLiteral */; // && context.contextNode.parent.kind !== SyntaxKind.InterfaceDeclaration; }; Rules.IsTypeArgumentOrParameterOrAssertion = function (token, parent) { if (token.kind !== 25 /* LessThanToken */ && token.kind !== 27 /* GreaterThanToken */) { return false; } switch (parent.kind) { - case 153 /* TypeReference */: - case 175 /* TypeAssertionExpression */: - case 218 /* ClassDeclaration */: - case 190 /* ClassExpression */: - case 219 /* InterfaceDeclaration */: - case 217 /* FunctionDeclaration */: - case 177 /* FunctionExpression */: - case 178 /* ArrowFunction */: - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: - case 149 /* CallSignature */: - case 150 /* ConstructSignature */: - case 172 /* CallExpression */: - case 173 /* NewExpression */: - case 192 /* ExpressionWithTypeArguments */: + case 154 /* TypeReference */: + case 176 /* TypeAssertionExpression */: + case 220 /* ClassDeclaration */: + case 191 /* ClassExpression */: + case 221 /* InterfaceDeclaration */: + case 219 /* FunctionDeclaration */: + case 178 /* FunctionExpression */: + case 179 /* ArrowFunction */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: + case 150 /* CallSignature */: + case 151 /* ConstructSignature */: + case 173 /* CallExpression */: + case 174 /* NewExpression */: + case 193 /* ExpressionWithTypeArguments */: return true; default: return false; @@ -45275,13 +47231,13 @@ var ts; Rules.IsTypeArgumentOrParameterOrAssertion(context.nextTokenSpan, context.nextTokenParent); }; Rules.IsTypeAssertionContext = function (context) { - return context.contextNode.kind === 175 /* TypeAssertionExpression */; + return context.contextNode.kind === 176 /* TypeAssertionExpression */; }; Rules.IsVoidOpContext = function (context) { - return context.currentTokenSpan.kind === 103 /* VoidKeyword */ && context.currentTokenParent.kind === 181 /* VoidExpression */; + return context.currentTokenSpan.kind === 103 /* VoidKeyword */ && context.currentTokenParent.kind === 182 /* VoidExpression */; }; Rules.IsYieldOrYieldStarWithOperand = function (context) { - return context.contextNode.kind === 188 /* YieldExpression */ && context.contextNode.expression !== undefined; + return context.contextNode.kind === 189 /* YieldExpression */ && context.contextNode.expression !== undefined; }; return Rules; }()); @@ -45305,7 +47261,7 @@ var ts; return result; }; RulesMap.prototype.Initialize = function (rules) { - this.mapRowLength = 136 /* LastToken */ + 1; + this.mapRowLength = 137 /* LastToken */ + 1; this.map = new Array(this.mapRowLength * this.mapRowLength); //new Array(this.mapRowLength * this.mapRowLength); // This array is used only during construction of the rulesbucket in the map var rulesBucketConstructionStateList = new Array(this.map.length); //new Array(this.map.length); @@ -45500,7 +47456,7 @@ var ts; } TokenAllAccess.prototype.GetTokens = function () { var result = []; - for (var token = 0 /* FirstToken */; token <= 136 /* LastToken */; token++) { + for (var token = 0 /* FirstToken */; token <= 137 /* LastToken */; token++) { result.push(token); } return result; @@ -45542,9 +47498,9 @@ var ts; }; TokenRange.Any = TokenRange.AllTokens(); TokenRange.AnyIncludingMultilineComments = TokenRange.FromTokens(TokenRange.Any.GetTokens().concat([3 /* MultiLineCommentTrivia */])); - TokenRange.Keywords = TokenRange.FromRange(70 /* FirstKeyword */, 136 /* LastKeyword */); + TokenRange.Keywords = TokenRange.FromRange(70 /* FirstKeyword */, 137 /* LastKeyword */); TokenRange.BinaryOperators = TokenRange.FromRange(25 /* FirstBinaryOperator */, 68 /* LastBinaryOperator */); - TokenRange.BinaryKeywordOperators = TokenRange.FromTokens([90 /* InKeyword */, 91 /* InstanceOfKeyword */, 136 /* OfKeyword */, 116 /* AsKeyword */, 124 /* IsKeyword */]); + TokenRange.BinaryKeywordOperators = TokenRange.FromTokens([90 /* InKeyword */, 91 /* InstanceOfKeyword */, 137 /* OfKeyword */, 116 /* AsKeyword */, 124 /* IsKeyword */]); TokenRange.UnaryPrefixOperators = TokenRange.FromTokens([41 /* PlusPlusToken */, 42 /* MinusMinusToken */, 50 /* TildeToken */, 49 /* ExclamationToken */]); TokenRange.UnaryPrefixExpressions = TokenRange.FromTokens([8 /* NumericLiteral */, 69 /* Identifier */, 17 /* OpenParenToken */, 19 /* OpenBracketToken */, 15 /* OpenBraceToken */, 97 /* ThisKeyword */, 92 /* NewKeyword */]); TokenRange.UnaryPreincrementExpressions = TokenRange.FromTokens([69 /* Identifier */, 17 /* OpenParenToken */, 97 /* ThisKeyword */, 92 /* NewKeyword */]); @@ -45695,12 +47651,20 @@ var ts; if (line === 0) { return []; } - // get the span for the previous\current line + // After the enter key, the cursor is now at a new line. The new line may or may not contain non-whitespace characters. + // If the new line has only whitespaces, we won't want to format this line, because that would remove the indentation as + // trailing whitespaces. So the end of the formatting span should be the later one between: + // 1. the end of the previous line + // 2. the last non-whitespace character in the current line + var endOfFormatSpan = ts.getEndLinePosition(line, sourceFile); + while (ts.isWhiteSpace(sourceFile.text.charCodeAt(endOfFormatSpan)) && !ts.isLineBreak(sourceFile.text.charCodeAt(endOfFormatSpan))) { + endOfFormatSpan--; + } var span = { // get start position for the previous line pos: ts.getStartPositionOfLine(line - 1, sourceFile), - // get end position for the current line (end value is exclusive so add 1 to the result) - end: ts.getEndLinePosition(line, sourceFile) + 1 + // end value is exclusive so add 1 to the result + end: endOfFormatSpan + 1 }; return formatSpan(span, sourceFile, options, rulesProvider, 2 /* FormatOnEnter */); } @@ -45774,17 +47738,17 @@ var ts; // i.e. parent is class declaration with the list of members and node is one of members. function isListElement(parent, node) { switch (parent.kind) { - case 218 /* ClassDeclaration */: - case 219 /* InterfaceDeclaration */: + case 220 /* ClassDeclaration */: + case 221 /* InterfaceDeclaration */: return ts.rangeContainsRange(parent.members, node); - case 222 /* ModuleDeclaration */: + case 224 /* ModuleDeclaration */: var body = parent.body; - return body && body.kind === 196 /* Block */ && ts.rangeContainsRange(body.statements, node); - case 252 /* SourceFile */: - case 196 /* Block */: - case 223 /* ModuleBlock */: + return body && body.kind === 198 /* Block */ && ts.rangeContainsRange(body.statements, node); + case 255 /* SourceFile */: + case 198 /* Block */: + case 225 /* ModuleBlock */: return ts.rangeContainsRange(parent.statements, node); - case 248 /* CatchClause */: + case 251 /* CatchClause */: return ts.rangeContainsRange(parent.block.statements, node); } return false; @@ -45858,7 +47822,7 @@ var ts; // no preceding token found - start from the beginning of enclosing node return enclosingNode.pos; } - // preceding token ends after the start of original range (i.e when originaRange.pos falls in the middle of literal) + // preceding token ends after the start of original range (i.e when originalRange.pos falls in the middle of literal) // start from the beginning of enclosingNode to handle the entire 'originalRange' if (precedingToken.end >= originalRange.pos) { return enclosingNode.pos; @@ -45986,19 +47950,19 @@ var ts; return node.modifiers[0].kind; } switch (node.kind) { - case 218 /* ClassDeclaration */: return 73 /* ClassKeyword */; - case 219 /* InterfaceDeclaration */: return 107 /* InterfaceKeyword */; - case 217 /* FunctionDeclaration */: return 87 /* FunctionKeyword */; - case 221 /* EnumDeclaration */: return 221 /* EnumDeclaration */; - case 147 /* GetAccessor */: return 123 /* GetKeyword */; - case 148 /* SetAccessor */: return 130 /* SetKeyword */; - case 145 /* MethodDeclaration */: + case 220 /* ClassDeclaration */: return 73 /* ClassKeyword */; + case 221 /* InterfaceDeclaration */: return 107 /* InterfaceKeyword */; + case 219 /* FunctionDeclaration */: return 87 /* FunctionKeyword */; + case 223 /* EnumDeclaration */: return 223 /* EnumDeclaration */; + case 148 /* GetAccessor */: return 123 /* GetKeyword */; + case 149 /* SetAccessor */: return 130 /* SetKeyword */; + case 146 /* MethodDeclaration */: if (node.asteriskToken) { return 37 /* AsteriskToken */; } // fall-through - case 143 /* PropertyDeclaration */: - case 140 /* Parameter */: + case 144 /* PropertyDeclaration */: + case 141 /* Parameter */: return node.name.kind; } } @@ -46138,7 +48102,7 @@ var ts; consumeTokenAndAdvanceScanner(tokenInfo, node, parentDynamicIndentation, child); return inheritedIndentation; } - var effectiveParentStartLine = child.kind === 141 /* Decorator */ ? childStartLine : undecoratedParentStartLine; + var effectiveParentStartLine = child.kind === 142 /* Decorator */ ? childStartLine : undecoratedParentStartLine; var childIndentation = computeIndentation(child, childStartLine, childIndentationAmount, node, parentDynamicIndentation, effectiveParentStartLine); processNode(child, childContextNode, childStartLine, undecoratedChildStartLine, childIndentation.indentation, childIndentation.delta); childContextNode = node; @@ -46171,8 +48135,8 @@ var ts; } } var inheritedIndentation = -1 /* Unknown */; - for (var _i = 0, nodes_6 = nodes; _i < nodes_6.length; _i++) { - var child = nodes_6[_i]; + for (var _i = 0, nodes_7 = nodes; _i < nodes_7.length; _i++) { + var child = nodes_7[_i]; inheritedIndentation = processChildNode(child, inheritedIndentation, node, listDynamicIndentation, startLine, startLine, /*isListElement*/ true); } if (listEndToken !== 0 /* Unknown */) { @@ -46482,20 +48446,20 @@ var ts; } function isSomeBlock(kind) { switch (kind) { - case 196 /* Block */: - case 223 /* ModuleBlock */: + case 198 /* Block */: + case 225 /* ModuleBlock */: return true; } return false; } function getOpenTokenForList(node, list) { switch (node.kind) { - case 146 /* Constructor */: - case 217 /* FunctionDeclaration */: - case 177 /* FunctionExpression */: - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: - case 178 /* ArrowFunction */: + case 147 /* Constructor */: + case 219 /* FunctionDeclaration */: + case 178 /* FunctionExpression */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: + case 179 /* ArrowFunction */: if (node.typeParameters === list) { return 25 /* LessThanToken */; } @@ -46503,8 +48467,8 @@ var ts; return 17 /* OpenParenToken */; } break; - case 172 /* CallExpression */: - case 173 /* NewExpression */: + case 173 /* CallExpression */: + case 174 /* NewExpression */: if (node.typeArguments === list) { return 25 /* LessThanToken */; } @@ -46512,7 +48476,7 @@ var ts; return 17 /* OpenParenToken */; } break; - case 153 /* TypeReference */: + case 154 /* TypeReference */: if (node.typeArguments === list) { return 25 /* LessThanToken */; } @@ -46628,7 +48592,7 @@ var ts; var lineStart = ts.getLineStartPositionForPosition(current_1, sourceFile); return SmartIndenter.findFirstNonWhitespaceColumn(lineStart, current_1, sourceFile, options); } - if (precedingToken.kind === 24 /* CommaToken */ && precedingToken.parent.kind !== 185 /* BinaryExpression */) { + if (precedingToken.kind === 24 /* CommaToken */ && precedingToken.parent.kind !== 186 /* BinaryExpression */) { // previous token is comma that separates items in list - find the previous item and try to derive indentation from it var actualIndentation = getActualIndentationForListItemBeforeComma(precedingToken, sourceFile, options); if (actualIndentation !== -1 /* Unknown */) { @@ -46747,7 +48711,7 @@ var ts; // - parent is SourceFile - by default immediate children of SourceFile are not indented except when user indents them manually // - parent and child are not on the same line var useActualIndentation = (ts.isDeclaration(current) || ts.isStatement(current)) && - (parent.kind === 252 /* SourceFile */ || !parentAndChildShareLine); + (parent.kind === 255 /* SourceFile */ || !parentAndChildShareLine); if (!useActualIndentation) { return -1 /* Unknown */; } @@ -46780,7 +48744,7 @@ var ts; return sourceFile.getLineAndCharacterOfPosition(n.getStart(sourceFile)); } function childStartsOnTheSameLineWithElseInIfStatement(parent, child, childStartLine, sourceFile) { - if (parent.kind === 200 /* IfStatement */ && parent.elseStatement === child) { + if (parent.kind === 202 /* IfStatement */ && parent.elseStatement === child) { var elseKeyword = ts.findChildOfKind(parent, 80 /* ElseKeyword */, sourceFile); ts.Debug.assert(elseKeyword !== undefined); var elseKeywordStartLine = getStartLineAndCharacterForNode(elseKeyword, sourceFile).line; @@ -46792,23 +48756,23 @@ var ts; function getContainingList(node, sourceFile) { if (node.parent) { switch (node.parent.kind) { - case 153 /* TypeReference */: + case 154 /* TypeReference */: if (node.parent.typeArguments && ts.rangeContainsStartEnd(node.parent.typeArguments, node.getStart(sourceFile), node.getEnd())) { return node.parent.typeArguments; } break; - case 169 /* ObjectLiteralExpression */: + case 170 /* ObjectLiteralExpression */: return node.parent.properties; - case 168 /* ArrayLiteralExpression */: + case 169 /* ArrayLiteralExpression */: return node.parent.elements; - case 217 /* FunctionDeclaration */: - case 177 /* FunctionExpression */: - case 178 /* ArrowFunction */: - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: - case 149 /* CallSignature */: - case 150 /* ConstructSignature */: { + case 219 /* FunctionDeclaration */: + case 178 /* FunctionExpression */: + case 179 /* ArrowFunction */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: + case 150 /* CallSignature */: + case 151 /* ConstructSignature */: { var start = node.getStart(sourceFile); if (node.parent.typeParameters && ts.rangeContainsStartEnd(node.parent.typeParameters, start, node.getEnd())) { @@ -46819,8 +48783,8 @@ var ts; } break; } - case 173 /* NewExpression */: - case 172 /* CallExpression */: { + case 174 /* NewExpression */: + case 173 /* CallExpression */: { var start = node.getStart(sourceFile); if (node.parent.typeArguments && ts.rangeContainsStartEnd(node.parent.typeArguments, start, node.getEnd())) { @@ -46850,8 +48814,8 @@ var ts; if (node.kind === 18 /* CloseParenToken */) { return -1 /* Unknown */; } - if (node.parent && (node.parent.kind === 172 /* CallExpression */ || - node.parent.kind === 173 /* NewExpression */) && + if (node.parent && (node.parent.kind === 173 /* CallExpression */ || + node.parent.kind === 174 /* NewExpression */) && node.parent.expression !== node) { var fullCallOrNewExpression = node.parent.expression; var startingExpression = getStartingExpression(fullCallOrNewExpression); @@ -46869,10 +48833,10 @@ var ts; function getStartingExpression(node) { while (true) { switch (node.kind) { - case 172 /* CallExpression */: - case 173 /* NewExpression */: - case 170 /* PropertyAccessExpression */: - case 171 /* ElementAccessExpression */: + case 173 /* CallExpression */: + case 174 /* NewExpression */: + case 171 /* PropertyAccessExpression */: + case 172 /* ElementAccessExpression */: node = node.expression; break; default: @@ -46936,45 +48900,45 @@ var ts; SmartIndenter.findFirstNonWhitespaceColumn = findFirstNonWhitespaceColumn; function nodeContentIsAlwaysIndented(kind) { switch (kind) { - case 199 /* ExpressionStatement */: - case 218 /* ClassDeclaration */: - case 190 /* ClassExpression */: - case 219 /* InterfaceDeclaration */: - case 221 /* EnumDeclaration */: - case 220 /* TypeAliasDeclaration */: - case 168 /* ArrayLiteralExpression */: - case 196 /* Block */: - case 223 /* ModuleBlock */: - case 169 /* ObjectLiteralExpression */: - case 157 /* TypeLiteral */: - case 159 /* TupleType */: - case 224 /* CaseBlock */: - case 246 /* DefaultClause */: - case 245 /* CaseClause */: - case 176 /* ParenthesizedExpression */: - case 170 /* PropertyAccessExpression */: - case 172 /* CallExpression */: - case 173 /* NewExpression */: - case 197 /* VariableStatement */: - case 215 /* VariableDeclaration */: - case 231 /* ExportAssignment */: - case 208 /* ReturnStatement */: - case 186 /* ConditionalExpression */: - case 166 /* ArrayBindingPattern */: - case 165 /* ObjectBindingPattern */: - case 239 /* JsxOpeningElement */: - case 238 /* JsxSelfClosingElement */: - case 244 /* JsxExpression */: - case 144 /* MethodSignature */: - case 149 /* CallSignature */: - case 150 /* ConstructSignature */: - case 140 /* Parameter */: - case 154 /* FunctionType */: - case 155 /* ConstructorType */: - case 162 /* ParenthesizedType */: - case 174 /* TaggedTemplateExpression */: - case 182 /* AwaitExpression */: - case 229 /* NamedImports */: + case 201 /* ExpressionStatement */: + case 220 /* ClassDeclaration */: + case 191 /* ClassExpression */: + case 221 /* InterfaceDeclaration */: + case 223 /* EnumDeclaration */: + case 222 /* TypeAliasDeclaration */: + case 169 /* ArrayLiteralExpression */: + case 198 /* Block */: + case 225 /* ModuleBlock */: + case 170 /* ObjectLiteralExpression */: + case 158 /* TypeLiteral */: + case 160 /* TupleType */: + case 226 /* CaseBlock */: + case 249 /* DefaultClause */: + case 248 /* CaseClause */: + case 177 /* ParenthesizedExpression */: + case 171 /* PropertyAccessExpression */: + case 173 /* CallExpression */: + case 174 /* NewExpression */: + case 199 /* VariableStatement */: + case 217 /* VariableDeclaration */: + case 234 /* ExportAssignment */: + case 210 /* ReturnStatement */: + case 187 /* ConditionalExpression */: + case 167 /* ArrayBindingPattern */: + case 166 /* ObjectBindingPattern */: + case 242 /* JsxOpeningElement */: + case 241 /* JsxSelfClosingElement */: + case 247 /* JsxExpression */: + case 145 /* MethodSignature */: + case 150 /* CallSignature */: + case 151 /* ConstructSignature */: + case 141 /* Parameter */: + case 155 /* FunctionType */: + case 156 /* ConstructorType */: + case 163 /* ParenthesizedType */: + case 175 /* TaggedTemplateExpression */: + case 183 /* AwaitExpression */: + case 232 /* NamedImports */: return true; } return false; @@ -46983,22 +48947,22 @@ var ts; function nodeWillIndentChild(parent, child, indentByDefault) { var childKind = child ? child.kind : 0 /* Unknown */; switch (parent.kind) { - case 201 /* DoStatement */: - case 202 /* WhileStatement */: - case 204 /* ForInStatement */: - case 205 /* ForOfStatement */: - case 203 /* ForStatement */: - case 200 /* IfStatement */: - case 217 /* FunctionDeclaration */: - case 177 /* FunctionExpression */: - case 145 /* MethodDeclaration */: - case 178 /* ArrowFunction */: - case 146 /* Constructor */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: - return childKind !== 196 /* Block */; - case 237 /* JsxElement */: - return childKind !== 241 /* JsxClosingElement */; + case 203 /* DoStatement */: + case 204 /* WhileStatement */: + case 206 /* ForInStatement */: + case 207 /* ForOfStatement */: + case 205 /* ForStatement */: + case 202 /* IfStatement */: + case 219 /* FunctionDeclaration */: + case 178 /* FunctionExpression */: + case 146 /* MethodDeclaration */: + case 179 /* ArrowFunction */: + case 147 /* Constructor */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: + return childKind !== 198 /* Block */; + case 240 /* JsxElement */: + return childKind !== 244 /* JsxClosingElement */; } // No explicit rule for given nodes so the result will follow the default value argument return indentByDefault; @@ -47022,6 +48986,7 @@ var ts; /// /// /// +/// /// /// var ts; @@ -47145,11 +49110,11 @@ var ts; return pos; }; NodeObject.prototype.createSyntaxList = function (nodes) { - var list = createNode(275 /* SyntaxList */, nodes.pos, nodes.end, 0, this); + var list = createNode(278 /* SyntaxList */, nodes.pos, nodes.end, 0, this); list._children = []; var pos = nodes.pos; - for (var _i = 0, nodes_7 = nodes; _i < nodes_7.length; _i++) { - var node = nodes_7[_i]; + for (var _i = 0, nodes_8 = nodes; _i < nodes_8.length; _i++) { + var node = nodes_8[_i]; if (pos < node.pos) { pos = this.addSyntheticNodes(list._children, pos, node.pos); } @@ -47164,7 +49129,7 @@ var ts; NodeObject.prototype.createChildren = function (sourceFile) { var _this = this; var children; - if (this.kind >= 137 /* FirstNode */) { + if (this.kind >= 138 /* FirstNode */) { scanner.setText((sourceFile || this.getSourceFile()).text); children = []; var pos_3 = this.pos; @@ -47211,7 +49176,7 @@ var ts; return undefined; } var child = children[0]; - return child.kind < 137 /* FirstNode */ ? child : child.getFirstToken(sourceFile); + return child.kind < 138 /* FirstNode */ ? child : child.getFirstToken(sourceFile); }; NodeObject.prototype.getLastToken = function (sourceFile) { var children = this.getChildren(sourceFile); @@ -47219,7 +49184,7 @@ var ts; if (!child) { return undefined; } - return child.kind < 137 /* FirstNode */ ? child : child.getLastToken(sourceFile); + return child.kind < 138 /* FirstNode */ ? child : child.getLastToken(sourceFile); }; return NodeObject; }()); @@ -47268,7 +49233,7 @@ var ts; if (ts.indexOf(declarations, declaration) === indexOfDeclaration) { var sourceFileOfDeclaration_1 = ts.getSourceFileOfNode(declaration); // If it is parameter - try and get the jsDoc comment with @param tag from function declaration's jsDoc comments - if (canUseParsedParamTagComments && declaration.kind === 140 /* Parameter */) { + if (canUseParsedParamTagComments && declaration.kind === 141 /* Parameter */) { ts.forEach(getJsDocCommentTextRange(declaration.parent, sourceFileOfDeclaration_1), function (jsDocCommentTextRange) { var cleanedParamJsDocComment = getCleanedParamJsDocComment(jsDocCommentTextRange.pos, jsDocCommentTextRange.end, sourceFileOfDeclaration_1); if (cleanedParamJsDocComment) { @@ -47277,15 +49242,15 @@ var ts; }); } // If this is left side of dotted module declaration, there is no doc comments associated with this node - if (declaration.kind === 222 /* ModuleDeclaration */ && declaration.body.kind === 222 /* ModuleDeclaration */) { + if (declaration.kind === 224 /* ModuleDeclaration */ && declaration.body.kind === 224 /* ModuleDeclaration */) { return; } // If this is dotted module name, get the doc comments from the parent - while (declaration.kind === 222 /* ModuleDeclaration */ && declaration.parent.kind === 222 /* ModuleDeclaration */) { + while (declaration.kind === 224 /* ModuleDeclaration */ && declaration.parent.kind === 224 /* ModuleDeclaration */) { declaration = declaration.parent; } // Get the cleaned js doc comment text from the declaration - ts.forEach(getJsDocCommentTextRange(declaration.kind === 215 /* VariableDeclaration */ ? declaration.parent.parent : declaration, sourceFileOfDeclaration_1), function (jsDocCommentTextRange) { + ts.forEach(getJsDocCommentTextRange(declaration.kind === 217 /* VariableDeclaration */ ? declaration.parent.parent : declaration, sourceFileOfDeclaration_1), function (jsDocCommentTextRange) { var cleanedJsDocComment = getCleanedJsDocComment(jsDocCommentTextRange.pos, jsDocCommentTextRange.end, sourceFileOfDeclaration_1); if (cleanedJsDocComment) { ts.addRange(jsDocCommentParts, cleanedJsDocComment); @@ -47630,9 +49595,9 @@ var ts; if (result_2 !== undefined) { return result_2; } - if (declaration.name.kind === 138 /* ComputedPropertyName */) { + if (declaration.name.kind === 139 /* ComputedPropertyName */) { var expr = declaration.name.expression; - if (expr.kind === 170 /* PropertyAccessExpression */) { + if (expr.kind === 171 /* PropertyAccessExpression */) { return expr.name.text; } return getTextOfIdentifierOrLiteral(expr); @@ -47652,9 +49617,9 @@ var ts; } function visit(node) { switch (node.kind) { - case 217 /* FunctionDeclaration */: - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: + case 219 /* FunctionDeclaration */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: var functionDeclaration = node; var declarationName = getDeclarationName(functionDeclaration); if (declarationName) { @@ -47674,60 +49639,60 @@ var ts; ts.forEachChild(node, visit); } break; - case 218 /* ClassDeclaration */: - case 219 /* InterfaceDeclaration */: - case 220 /* TypeAliasDeclaration */: - case 221 /* EnumDeclaration */: - case 222 /* ModuleDeclaration */: - case 225 /* ImportEqualsDeclaration */: - case 234 /* ExportSpecifier */: - case 230 /* ImportSpecifier */: - case 225 /* ImportEqualsDeclaration */: - case 227 /* ImportClause */: - case 228 /* NamespaceImport */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: - case 157 /* TypeLiteral */: + case 220 /* ClassDeclaration */: + case 221 /* InterfaceDeclaration */: + case 222 /* TypeAliasDeclaration */: + case 223 /* EnumDeclaration */: + case 224 /* ModuleDeclaration */: + case 228 /* ImportEqualsDeclaration */: + case 237 /* ExportSpecifier */: + case 233 /* ImportSpecifier */: + case 228 /* ImportEqualsDeclaration */: + case 230 /* ImportClause */: + case 231 /* NamespaceImport */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: + case 158 /* TypeLiteral */: addDeclaration(node); // fall through - case 146 /* Constructor */: - case 197 /* VariableStatement */: - case 216 /* VariableDeclarationList */: - case 165 /* ObjectBindingPattern */: - case 166 /* ArrayBindingPattern */: - case 223 /* ModuleBlock */: + case 147 /* Constructor */: + case 199 /* VariableStatement */: + case 218 /* VariableDeclarationList */: + case 166 /* ObjectBindingPattern */: + case 167 /* ArrayBindingPattern */: + case 225 /* ModuleBlock */: ts.forEachChild(node, visit); break; - case 196 /* Block */: + case 198 /* Block */: if (ts.isFunctionBlock(node)) { ts.forEachChild(node, visit); } break; - case 140 /* Parameter */: + case 141 /* Parameter */: // Only consider properties defined as constructor parameters if (!(node.flags & 28 /* AccessibilityModifier */)) { break; } // fall through - case 215 /* VariableDeclaration */: - case 167 /* BindingElement */: + case 217 /* VariableDeclaration */: + case 168 /* BindingElement */: if (ts.isBindingPattern(node.name)) { ts.forEachChild(node.name, visit); break; } - case 251 /* EnumMember */: - case 143 /* PropertyDeclaration */: - case 142 /* PropertySignature */: + case 254 /* EnumMember */: + case 144 /* PropertyDeclaration */: + case 143 /* PropertySignature */: addDeclaration(node); break; - case 232 /* ExportDeclaration */: + case 235 /* ExportDeclaration */: // Handle named exports case e.g.: // export {a, b as B} from "mod"; if (node.exportClause) { ts.forEach(node.exportClause.elements, visit); } break; - case 226 /* ImportDeclaration */: + case 229 /* ImportDeclaration */: var importClause = node.importClause; if (importClause) { // Handle default import case e.g.: @@ -47739,7 +49704,7 @@ var ts; // import * as NS from "mod"; // import {a, b as B} from "mod"; if (importClause.namedBindings) { - if (importClause.namedBindings.kind === 228 /* NamespaceImport */) { + if (importClause.namedBindings.kind === 231 /* NamespaceImport */) { addDeclaration(importClause.namedBindings); } else { @@ -47961,16 +49926,16 @@ var ts; } return ts.forEach(symbol.declarations, function (declaration) { // Function expressions are local - if (declaration.kind === 177 /* FunctionExpression */) { + if (declaration.kind === 178 /* FunctionExpression */) { return true; } - if (declaration.kind !== 215 /* VariableDeclaration */ && declaration.kind !== 217 /* FunctionDeclaration */) { + if (declaration.kind !== 217 /* VariableDeclaration */ && declaration.kind !== 219 /* FunctionDeclaration */) { return false; } // If the parent is not sourceFile or module block it is local variable - for (var parent_10 = declaration.parent; !ts.isFunctionBlock(parent_10); parent_10 = parent_10.parent) { + for (var parent_12 = declaration.parent; !ts.isFunctionBlock(parent_12); parent_12 = parent_12.parent) { // Reached source file or module block - if (parent_10.kind === 252 /* SourceFile */ || parent_10.kind === 223 /* ModuleBlock */) { + if (parent_12.kind === 255 /* SourceFile */ || parent_12.kind === 225 /* ModuleBlock */) { return false; } } @@ -48010,14 +49975,13 @@ var ts; }; HostCache.prototype.createEntry = function (fileName, path) { var entry; - var scriptKind = this.host.getScriptKind ? this.host.getScriptKind(fileName) : 0 /* Unknown */; var scriptSnapshot = this.host.getScriptSnapshot(fileName); if (scriptSnapshot) { entry = { hostFileName: fileName, version: this.host.getScriptVersion(fileName), scriptSnapshot: scriptSnapshot, - scriptKind: scriptKind ? scriptKind : ts.getScriptKindFromFileName(fileName) + scriptKind: ts.getScriptKind(fileName, this.host) }; } this.fileNameToEntry.set(path, entry); @@ -48065,7 +50029,7 @@ var ts; // The host does not know about this file. throw new Error("Could not find file: '" + fileName + "'."); } - var scriptKind = this.host.getScriptKind ? this.host.getScriptKind(fileName) : 0 /* Unknown */; + var scriptKind = ts.getScriptKind(fileName, this.host); var version = this.host.getScriptVersion(fileName); var sourceFile; if (this.currentFileName !== fileName) { @@ -48326,9 +50290,24 @@ var ts; if (readImportFiles === void 0) { readImportFiles = true; } if (detectJavaScriptImports === void 0) { detectJavaScriptImports = false; } var referencedFiles = []; + var typeReferenceDirectives = []; var importedFiles = []; var ambientExternalModules; var isNoDefaultLib = false; + var braceNesting = 0; + // assume that text represent an external module if it contains at least one top level import/export + // ambient modules that are found inside external modules are interpreted as module augmentations + var externalModule = false; + function nextToken() { + var token = scanner.scan(); + if (token === 15 /* OpenBraceToken */) { + braceNesting++; + } + else if (token === 16 /* CloseBraceToken */) { + braceNesting--; + } + return token; + } function processTripleSlashDirectives() { var commentRanges = ts.getLeadingCommentRanges(sourceText, 0); ts.forEach(commentRanges, function (commentRange) { @@ -48338,25 +50317,37 @@ var ts; isNoDefaultLib = referencePathMatchResult.isNoDefaultLib; var fileReference = referencePathMatchResult.fileReference; if (fileReference) { - referencedFiles.push(fileReference); + var collection = referencePathMatchResult.isTypeReferenceDirective + ? typeReferenceDirectives + : referencedFiles; + collection.push(fileReference); } } }); } + function getFileReference() { + var file = scanner.getTokenValue(); + var pos = scanner.getTokenPos(); + return { + fileName: file, + pos: pos, + end: pos + file.length + }; + } function recordAmbientExternalModule() { if (!ambientExternalModules) { ambientExternalModules = []; } - ambientExternalModules.push(scanner.getTokenValue()); + ambientExternalModules.push({ ref: getFileReference(), depth: braceNesting }); } function recordModuleName() { - var importPath = scanner.getTokenValue(); - var pos = scanner.getTokenPos(); - importedFiles.push({ - fileName: importPath, - pos: pos, - end: pos + importPath.length - }); + importedFiles.push(getFileReference()); + markAsExternalModuleIfTopLevel(); + } + function markAsExternalModuleIfTopLevel() { + if (braceNesting === 0) { + externalModule = true; + } } /** * Returns true if at least one token was consumed from the stream @@ -48365,9 +50356,9 @@ var ts; var token = scanner.getToken(); if (token === 122 /* DeclareKeyword */) { // declare module "mod" - token = scanner.scan(); + token = nextToken(); if (token === 125 /* ModuleKeyword */) { - token = scanner.scan(); + token = nextToken(); if (token === 9 /* StringLiteral */) { recordAmbientExternalModule(); } @@ -48382,7 +50373,7 @@ var ts; function tryConsumeImport() { var token = scanner.getToken(); if (token === 89 /* ImportKeyword */) { - token = scanner.scan(); + token = nextToken(); if (token === 9 /* StringLiteral */) { // import "mod"; recordModuleName(); @@ -48390,9 +50381,9 @@ var ts; } else { if (token === 69 /* Identifier */ || ts.isKeyword(token)) { - token = scanner.scan(); - if (token === 134 /* FromKeyword */) { - token = scanner.scan(); + token = nextToken(); + if (token === 135 /* FromKeyword */) { + token = nextToken(); if (token === 9 /* StringLiteral */) { // import d from "mod"; recordModuleName(); @@ -48406,7 +50397,7 @@ var ts; } else if (token === 24 /* CommaToken */) { // consume comma and keep going - token = scanner.scan(); + token = nextToken(); } else { // unknown syntax @@ -48414,16 +50405,16 @@ var ts; } } if (token === 15 /* OpenBraceToken */) { - token = scanner.scan(); + token = nextToken(); // consume "{ a as B, c, d as D}" clauses // make sure that it stops on EOF while (token !== 16 /* CloseBraceToken */ && token !== 1 /* EndOfFileToken */) { - token = scanner.scan(); + token = nextToken(); } if (token === 16 /* CloseBraceToken */) { - token = scanner.scan(); - if (token === 134 /* FromKeyword */) { - token = scanner.scan(); + token = nextToken(); + if (token === 135 /* FromKeyword */) { + token = nextToken(); if (token === 9 /* StringLiteral */) { // import {a as A} from "mod"; // import d, {a, b as B} from "mod" @@ -48433,13 +50424,13 @@ var ts; } } else if (token === 37 /* AsteriskToken */) { - token = scanner.scan(); + token = nextToken(); if (token === 116 /* AsKeyword */) { - token = scanner.scan(); + token = nextToken(); if (token === 69 /* Identifier */ || ts.isKeyword(token)) { - token = scanner.scan(); - if (token === 134 /* FromKeyword */) { - token = scanner.scan(); + token = nextToken(); + if (token === 135 /* FromKeyword */) { + token = nextToken(); if (token === 9 /* StringLiteral */) { // import * as NS from "mod" // import d, * as NS from "mod" @@ -48457,18 +50448,19 @@ var ts; function tryConsumeExport() { var token = scanner.getToken(); if (token === 82 /* ExportKeyword */) { - token = scanner.scan(); + markAsExternalModuleIfTopLevel(); + token = nextToken(); if (token === 15 /* OpenBraceToken */) { - token = scanner.scan(); + token = nextToken(); // consume "{ a as B, c, d as D}" clauses // make sure it stops on EOF while (token !== 16 /* CloseBraceToken */ && token !== 1 /* EndOfFileToken */) { - token = scanner.scan(); + token = nextToken(); } if (token === 16 /* CloseBraceToken */) { - token = scanner.scan(); - if (token === 134 /* FromKeyword */) { - token = scanner.scan(); + token = nextToken(); + if (token === 135 /* FromKeyword */) { + token = nextToken(); if (token === 9 /* StringLiteral */) { // export {a as A} from "mod"; // export {a, b as B} from "mod" @@ -48478,9 +50470,9 @@ var ts; } } else if (token === 37 /* AsteriskToken */) { - token = scanner.scan(); - if (token === 134 /* FromKeyword */) { - token = scanner.scan(); + token = nextToken(); + if (token === 135 /* FromKeyword */) { + token = nextToken(); if (token === 9 /* StringLiteral */) { // export * from "mod" recordModuleName(); @@ -48488,9 +50480,9 @@ var ts; } } else if (token === 89 /* ImportKeyword */) { - token = scanner.scan(); + token = nextToken(); if (token === 69 /* Identifier */ || ts.isKeyword(token)) { - token = scanner.scan(); + token = nextToken(); if (token === 56 /* EqualsToken */) { if (tryConsumeRequireCall(/*skipCurrentToken*/ true)) { return true; @@ -48503,11 +50495,11 @@ var ts; return false; } function tryConsumeRequireCall(skipCurrentToken) { - var token = skipCurrentToken ? scanner.scan() : scanner.getToken(); + var token = skipCurrentToken ? nextToken() : scanner.getToken(); if (token === 128 /* RequireKeyword */) { - token = scanner.scan(); + token = nextToken(); if (token === 17 /* OpenParenToken */) { - token = scanner.scan(); + token = nextToken(); if (token === 9 /* StringLiteral */) { // require("mod"); recordModuleName(); @@ -48520,16 +50512,16 @@ var ts; function tryConsumeDefine() { var token = scanner.getToken(); if (token === 69 /* Identifier */ && scanner.getTokenValue() === "define") { - token = scanner.scan(); + token = nextToken(); if (token !== 17 /* OpenParenToken */) { return true; } - token = scanner.scan(); + token = nextToken(); if (token === 9 /* StringLiteral */) { // looks like define ("modname", ... - skip string literal and comma - token = scanner.scan(); + token = nextToken(); if (token === 24 /* CommaToken */) { - token = scanner.scan(); + token = nextToken(); } else { // unexpected token @@ -48541,7 +50533,7 @@ var ts; return true; } // skip open bracket - token = scanner.scan(); + token = nextToken(); var i = 0; // scan until ']' or EOF while (token !== 20 /* CloseBracketToken */ && token !== 1 /* EndOfFileToken */) { @@ -48550,7 +50542,7 @@ var ts; recordModuleName(); i++; } - token = scanner.scan(); + token = nextToken(); } return true; } @@ -48558,7 +50550,7 @@ var ts; } function processImports() { scanner.setText(sourceText); - scanner.scan(); + nextToken(); // Look for: // import "mod"; // import d from "mod" @@ -48583,7 +50575,7 @@ var ts; continue; } else { - scanner.scan(); + nextToken(); } } scanner.setText(undefined); @@ -48592,13 +50584,42 @@ var ts; processImports(); } processTripleSlashDirectives(); - return { referencedFiles: referencedFiles, importedFiles: importedFiles, isLibFile: isNoDefaultLib, ambientExternalModules: ambientExternalModules }; + if (externalModule) { + // for external modules module all nested ambient modules are augmentations + if (ambientExternalModules) { + // move all detected ambient modules to imported files since they need to be resolved + for (var _i = 0, ambientExternalModules_1 = ambientExternalModules; _i < ambientExternalModules_1.length; _i++) { + var decl = ambientExternalModules_1[_i]; + importedFiles.push(decl.ref); + } + } + return { referencedFiles: referencedFiles, typeReferenceDirectives: typeReferenceDirectives, importedFiles: importedFiles, isLibFile: isNoDefaultLib, ambientExternalModules: undefined }; + } + else { + // for global scripts ambient modules still can have augmentations - look for ambient modules with depth > 0 + var ambientModuleNames = void 0; + if (ambientExternalModules) { + for (var _a = 0, ambientExternalModules_2 = ambientExternalModules; _a < ambientExternalModules_2.length; _a++) { + var decl = ambientExternalModules_2[_a]; + if (decl.depth === 0) { + if (!ambientModuleNames) { + ambientModuleNames = []; + } + ambientModuleNames.push(decl.ref.fileName); + } + else { + importedFiles.push(decl.ref); + } + } + } + return { referencedFiles: referencedFiles, typeReferenceDirectives: typeReferenceDirectives, importedFiles: importedFiles, isLibFile: isNoDefaultLib, ambientExternalModules: ambientModuleNames }; + } } ts.preProcessFile = preProcessFile; /// Helpers function getTargetLabel(referenceNode, labelName) { while (referenceNode) { - if (referenceNode.kind === 211 /* LabeledStatement */ && referenceNode.label.text === labelName) { + if (referenceNode.kind === 213 /* LabeledStatement */ && referenceNode.label.text === labelName) { return referenceNode.label; } referenceNode = referenceNode.parent; @@ -48607,12 +50628,12 @@ var ts; } function isJumpStatementTarget(node) { return node.kind === 69 /* Identifier */ && - (node.parent.kind === 207 /* BreakStatement */ || node.parent.kind === 206 /* ContinueStatement */) && + (node.parent.kind === 209 /* BreakStatement */ || node.parent.kind === 208 /* ContinueStatement */) && node.parent.label === node; } function isLabelOfLabeledStatement(node) { return node.kind === 69 /* Identifier */ && - node.parent.kind === 211 /* LabeledStatement */ && + node.parent.kind === 213 /* LabeledStatement */ && node.parent.label === node; } /** @@ -48620,7 +50641,7 @@ var ts; * Note: 'node' cannot be a SourceFile. */ function isLabeledBy(node, labelName) { - for (var owner = node.parent; owner.kind === 211 /* LabeledStatement */; owner = owner.parent) { + for (var owner = node.parent; owner.kind === 213 /* LabeledStatement */; owner = owner.parent) { if (owner.label.text === labelName) { return true; } @@ -48631,25 +50652,25 @@ var ts; return isLabelOfLabeledStatement(node) || isJumpStatementTarget(node); } function isRightSideOfQualifiedName(node) { - return node.parent.kind === 137 /* QualifiedName */ && node.parent.right === node; + return node.parent.kind === 138 /* QualifiedName */ && node.parent.right === node; } function isRightSideOfPropertyAccess(node) { - return node && node.parent && node.parent.kind === 170 /* PropertyAccessExpression */ && node.parent.name === node; + return node && node.parent && node.parent.kind === 171 /* PropertyAccessExpression */ && node.parent.name === node; } function isCallExpressionTarget(node) { if (isRightSideOfPropertyAccess(node)) { node = node.parent; } - return node && node.parent && node.parent.kind === 172 /* CallExpression */ && node.parent.expression === node; + return node && node.parent && node.parent.kind === 173 /* CallExpression */ && node.parent.expression === node; } function isNewExpressionTarget(node) { if (isRightSideOfPropertyAccess(node)) { node = node.parent; } - return node && node.parent && node.parent.kind === 173 /* NewExpression */ && node.parent.expression === node; + return node && node.parent && node.parent.kind === 174 /* NewExpression */ && node.parent.expression === node; } function isNameOfModuleDeclaration(node) { - return node.parent.kind === 222 /* ModuleDeclaration */ && node.parent.name === node; + return node.parent.kind === 224 /* ModuleDeclaration */ && node.parent.name === node; } function isNameOfFunctionDeclaration(node) { return node.kind === 69 /* Identifier */ && @@ -48658,22 +50679,22 @@ var ts; /** Returns true if node is a name of an object literal property, e.g. "a" in x = { "a": 1 } */ function isNameOfPropertyAssignment(node) { return (node.kind === 69 /* Identifier */ || node.kind === 9 /* StringLiteral */ || node.kind === 8 /* NumericLiteral */) && - (node.parent.kind === 249 /* PropertyAssignment */ || node.parent.kind === 250 /* ShorthandPropertyAssignment */) && node.parent.name === node; + (node.parent.kind === 252 /* PropertyAssignment */ || node.parent.kind === 253 /* ShorthandPropertyAssignment */) && node.parent.name === node; } function isLiteralNameOfPropertyDeclarationOrIndexAccess(node) { if (node.kind === 9 /* StringLiteral */ || node.kind === 8 /* NumericLiteral */) { switch (node.parent.kind) { - case 143 /* PropertyDeclaration */: - case 142 /* PropertySignature */: - case 249 /* PropertyAssignment */: - case 251 /* EnumMember */: - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: - case 222 /* ModuleDeclaration */: + case 144 /* PropertyDeclaration */: + case 143 /* PropertySignature */: + case 252 /* PropertyAssignment */: + case 254 /* EnumMember */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: + case 224 /* ModuleDeclaration */: return node.parent.name === node; - case 171 /* ElementAccessExpression */: + case 172 /* ElementAccessExpression */: return node.parent.argumentExpression === node; } } @@ -48732,7 +50753,7 @@ var ts; })(BreakContinueSearchType || (BreakContinueSearchType = {})); // A cache of completion entries for keywords, these do not change between sessions var keywordCompletions = []; - for (var i = 70 /* FirstKeyword */; i <= 136 /* LastKeyword */; i++) { + for (var i = 70 /* FirstKeyword */; i <= 137 /* LastKeyword */; i++) { keywordCompletions.push({ name: ts.tokenToString(i), kind: ScriptElementKind.keyword, @@ -48747,17 +50768,17 @@ var ts; return undefined; } switch (node.kind) { - case 252 /* SourceFile */: - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: - case 217 /* FunctionDeclaration */: - case 177 /* FunctionExpression */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: - case 218 /* ClassDeclaration */: - case 219 /* InterfaceDeclaration */: - case 221 /* EnumDeclaration */: - case 222 /* ModuleDeclaration */: + case 255 /* SourceFile */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: + case 219 /* FunctionDeclaration */: + case 178 /* FunctionExpression */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: + case 220 /* ClassDeclaration */: + case 221 /* InterfaceDeclaration */: + case 223 /* EnumDeclaration */: + case 224 /* ModuleDeclaration */: return node; } } @@ -48765,38 +50786,38 @@ var ts; ts.getContainerNode = getContainerNode; /* @internal */ function getNodeKind(node) { switch (node.kind) { - case 222 /* ModuleDeclaration */: return ScriptElementKind.moduleElement; - case 218 /* ClassDeclaration */: return ScriptElementKind.classElement; - case 219 /* InterfaceDeclaration */: return ScriptElementKind.interfaceElement; - case 220 /* TypeAliasDeclaration */: return ScriptElementKind.typeElement; - case 221 /* EnumDeclaration */: return ScriptElementKind.enumElement; - case 215 /* VariableDeclaration */: + case 224 /* ModuleDeclaration */: return ScriptElementKind.moduleElement; + case 220 /* ClassDeclaration */: return ScriptElementKind.classElement; + case 221 /* InterfaceDeclaration */: return ScriptElementKind.interfaceElement; + case 222 /* TypeAliasDeclaration */: return ScriptElementKind.typeElement; + case 223 /* EnumDeclaration */: return ScriptElementKind.enumElement; + case 217 /* VariableDeclaration */: return ts.isConst(node) ? ScriptElementKind.constElement : ts.isLet(node) ? ScriptElementKind.letElement : ScriptElementKind.variableElement; - case 217 /* FunctionDeclaration */: return ScriptElementKind.functionElement; - case 147 /* GetAccessor */: return ScriptElementKind.memberGetAccessorElement; - case 148 /* SetAccessor */: return ScriptElementKind.memberSetAccessorElement; - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: + case 219 /* FunctionDeclaration */: return ScriptElementKind.functionElement; + case 148 /* GetAccessor */: return ScriptElementKind.memberGetAccessorElement; + case 149 /* SetAccessor */: return ScriptElementKind.memberSetAccessorElement; + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: return ScriptElementKind.memberFunctionElement; - case 143 /* PropertyDeclaration */: - case 142 /* PropertySignature */: + case 144 /* PropertyDeclaration */: + case 143 /* PropertySignature */: return ScriptElementKind.memberVariableElement; - case 151 /* IndexSignature */: return ScriptElementKind.indexSignatureElement; - case 150 /* ConstructSignature */: return ScriptElementKind.constructSignatureElement; - case 149 /* CallSignature */: return ScriptElementKind.callSignatureElement; - case 146 /* Constructor */: return ScriptElementKind.constructorImplementationElement; - case 139 /* TypeParameter */: return ScriptElementKind.typeParameterElement; - case 251 /* EnumMember */: return ScriptElementKind.variableElement; - case 140 /* Parameter */: return (node.flags & 28 /* AccessibilityModifier */) ? ScriptElementKind.memberVariableElement : ScriptElementKind.parameterElement; - case 225 /* ImportEqualsDeclaration */: - case 230 /* ImportSpecifier */: - case 227 /* ImportClause */: - case 234 /* ExportSpecifier */: - case 228 /* NamespaceImport */: + case 152 /* IndexSignature */: return ScriptElementKind.indexSignatureElement; + case 151 /* ConstructSignature */: return ScriptElementKind.constructSignatureElement; + case 150 /* CallSignature */: return ScriptElementKind.callSignatureElement; + case 147 /* Constructor */: return ScriptElementKind.constructorImplementationElement; + case 140 /* TypeParameter */: return ScriptElementKind.typeParameterElement; + case 254 /* EnumMember */: return ScriptElementKind.variableElement; + case 141 /* Parameter */: return (node.flags & 28 /* AccessibilityModifier */) ? ScriptElementKind.memberVariableElement : ScriptElementKind.parameterElement; + case 228 /* ImportEqualsDeclaration */: + case 233 /* ImportSpecifier */: + case 230 /* ImportClause */: + case 237 /* ExportSpecifier */: + case 231 /* NamespaceImport */: return ScriptElementKind.alias; } return ScriptElementKind.unknown; @@ -48892,7 +50913,7 @@ var ts; getCurrentDirectory: function () { return currentDirectory; }, fileExists: function (fileName) { // stub missing host functionality - ts.Debug.assert(!host.resolveModuleNames); + ts.Debug.assert(!host.resolveModuleNames || !host.resolveTypeReferenceDirectives); return hostCache.getOrCreateEntry(fileName) !== undefined; }, readFile: function (fileName) { @@ -48901,7 +50922,7 @@ var ts; return entry && entry.scriptSnapshot.getText(0, entry.scriptSnapshot.getLength()); }, directoryExists: function (directoryName) { - ts.Debug.assert(!host.resolveModuleNames); + ts.Debug.assert(!host.resolveModuleNames || !host.resolveTypeReferenceDirectives); return ts.directoryProbablyExists(directoryName, host); } }; @@ -48911,6 +50932,11 @@ var ts; if (host.resolveModuleNames) { compilerHost.resolveModuleNames = function (moduleNames, containingFile) { return host.resolveModuleNames(moduleNames, containingFile); }; } + if (host.resolveTypeReferenceDirectives) { + compilerHost.resolveTypeReferenceDirectives = function (typeReferenceDirectiveNames, containingFile) { + return host.resolveTypeReferenceDirectives(typeReferenceDirectiveNames, containingFile); + }; + } var newProgram = ts.createProgram(hostCache.getRootFileNames(), newSettings, compilerHost, program); // Release any files we have acquired in the old program but are // not part of the new program. @@ -49115,9 +51141,9 @@ var ts; isJsDocTagName = true; } switch (tag.kind) { - case 273 /* JSDocTypeTag */: - case 271 /* JSDocParameterTag */: - case 272 /* JSDocReturnTag */: + case 276 /* JSDocTypeTag */: + case 274 /* JSDocParameterTag */: + case 275 /* JSDocReturnTag */: var tagWithExpression = tag; if (tagWithExpression.typeExpression) { insideJsDocTagExpression = tagWithExpression.typeExpression.pos < position && position < tagWithExpression.typeExpression.end; @@ -49162,13 +51188,13 @@ var ts; log("Returning an empty list because completion was requested in an invalid position."); return undefined; } - var parent_11 = contextToken.parent, kind = contextToken.kind; + var parent_13 = contextToken.parent, kind = contextToken.kind; if (kind === 21 /* DotToken */) { - if (parent_11.kind === 170 /* PropertyAccessExpression */) { + if (parent_13.kind === 171 /* PropertyAccessExpression */) { node = contextToken.parent.expression; isRightOfDot = true; } - else if (parent_11.kind === 137 /* QualifiedName */) { + else if (parent_13.kind === 138 /* QualifiedName */) { node = contextToken.parent.left; isRightOfDot = true; } @@ -49183,7 +51209,7 @@ var ts; isRightOfOpenTag = true; location = contextToken; } - else if (kind === 39 /* SlashToken */ && contextToken.parent.kind === 241 /* JsxClosingElement */) { + else if (kind === 39 /* SlashToken */ && contextToken.parent.kind === 244 /* JsxClosingElement */) { isStartingCloseTag = true; location = contextToken; } @@ -49199,7 +51225,7 @@ var ts; else if (isRightOfOpenTag) { var tagSymbols = typeChecker.getJsxIntrinsicTagNames(); if (tryGetGlobalSymbols()) { - symbols = tagSymbols.concat(symbols.filter(function (s) { return !!(s.flags & 107455 /* Value */); })); + symbols = tagSymbols.concat(symbols.filter(function (s) { return !!(s.flags & (107455 /* Value */ | 8388608 /* Alias */)); })); } else { symbols = tagSymbols; @@ -49230,7 +51256,7 @@ var ts; // Right of dot member completion list isMemberCompletion = true; isNewIdentifierLocation = false; - if (node.kind === 69 /* Identifier */ || node.kind === 137 /* QualifiedName */ || node.kind === 170 /* PropertyAccessExpression */) { + if (node.kind === 69 /* Identifier */ || node.kind === 138 /* QualifiedName */ || node.kind === 171 /* PropertyAccessExpression */) { var symbol = typeChecker.getSymbolAtLocation(node); // This is an alias, follow what it aliases if (symbol && symbol.flags & 8388608 /* Alias */) { @@ -49286,7 +51312,7 @@ var ts; } if (jsxContainer = tryGetContainingJsxElement(contextToken)) { var attrsType = void 0; - if ((jsxContainer.kind === 238 /* JsxSelfClosingElement */) || (jsxContainer.kind === 239 /* JsxOpeningElement */)) { + if ((jsxContainer.kind === 241 /* JsxSelfClosingElement */) || (jsxContainer.kind === 242 /* JsxOpeningElement */)) { // Cursor is inside a JSX self-closing element or opening element attrsType = typeChecker.getJsxElementAttributesType(jsxContainer); if (attrsType) { @@ -49358,15 +51384,15 @@ var ts; return result; } function isInJsxText(contextToken) { - if (contextToken.kind === 240 /* JsxText */) { + if (contextToken.kind === 243 /* JsxText */) { return true; } if (contextToken.kind === 27 /* GreaterThanToken */ && contextToken.parent) { - if (contextToken.parent.kind === 239 /* JsxOpeningElement */) { + if (contextToken.parent.kind === 242 /* JsxOpeningElement */) { return true; } - if (contextToken.parent.kind === 241 /* JsxClosingElement */ || contextToken.parent.kind === 238 /* JsxSelfClosingElement */) { - return contextToken.parent.parent && contextToken.parent.parent.kind === 237 /* JsxElement */; + if (contextToken.parent.kind === 244 /* JsxClosingElement */ || contextToken.parent.kind === 241 /* JsxSelfClosingElement */) { + return contextToken.parent.parent && contextToken.parent.parent.kind === 240 /* JsxElement */; } } return false; @@ -49376,40 +51402,40 @@ var ts; var containingNodeKind = previousToken.parent.kind; switch (previousToken.kind) { case 24 /* CommaToken */: - return containingNodeKind === 172 /* CallExpression */ // func( a, | - || containingNodeKind === 146 /* Constructor */ // constructor( a, | /* public, protected, private keywords are allowed here, so show completion */ - || containingNodeKind === 173 /* NewExpression */ // new C(a, | - || containingNodeKind === 168 /* ArrayLiteralExpression */ // [a, | - || containingNodeKind === 185 /* BinaryExpression */ // const x = (a, | - || containingNodeKind === 154 /* FunctionType */; // var x: (s: string, list| + return containingNodeKind === 173 /* CallExpression */ // func( a, | + || containingNodeKind === 147 /* Constructor */ // constructor( a, | /* public, protected, private keywords are allowed here, so show completion */ + || containingNodeKind === 174 /* NewExpression */ // new C(a, | + || containingNodeKind === 169 /* ArrayLiteralExpression */ // [a, | + || containingNodeKind === 186 /* BinaryExpression */ // const x = (a, | + || containingNodeKind === 155 /* FunctionType */; // var x: (s: string, list| case 17 /* OpenParenToken */: - return containingNodeKind === 172 /* CallExpression */ // func( | - || containingNodeKind === 146 /* Constructor */ // constructor( | - || containingNodeKind === 173 /* NewExpression */ // new C(a| - || containingNodeKind === 176 /* ParenthesizedExpression */ // const x = (a| - || containingNodeKind === 162 /* ParenthesizedType */; // function F(pred: (a| /* this can become an arrow function, where 'a' is the argument */ + return containingNodeKind === 173 /* CallExpression */ // func( | + || containingNodeKind === 147 /* Constructor */ // constructor( | + || containingNodeKind === 174 /* NewExpression */ // new C(a| + || containingNodeKind === 177 /* ParenthesizedExpression */ // const x = (a| + || containingNodeKind === 163 /* ParenthesizedType */; // function F(pred: (a| /* this can become an arrow function, where 'a' is the argument */ case 19 /* OpenBracketToken */: - return containingNodeKind === 168 /* ArrayLiteralExpression */ // [ | - || containingNodeKind === 151 /* IndexSignature */ // [ | : string ] - || containingNodeKind === 138 /* ComputedPropertyName */; // [ | /* this can become an index signature */ + return containingNodeKind === 169 /* ArrayLiteralExpression */ // [ | + || containingNodeKind === 152 /* IndexSignature */ // [ | : string ] + || containingNodeKind === 139 /* ComputedPropertyName */; // [ | /* this can become an index signature */ case 125 /* ModuleKeyword */: // module | case 126 /* NamespaceKeyword */: return true; case 21 /* DotToken */: - return containingNodeKind === 222 /* ModuleDeclaration */; // module A.| + return containingNodeKind === 224 /* ModuleDeclaration */; // module A.| case 15 /* OpenBraceToken */: - return containingNodeKind === 218 /* ClassDeclaration */; // class A{ | + return containingNodeKind === 220 /* ClassDeclaration */; // class A{ | case 56 /* EqualsToken */: - return containingNodeKind === 215 /* VariableDeclaration */ // const x = a| - || containingNodeKind === 185 /* BinaryExpression */; // x = a| + return containingNodeKind === 217 /* VariableDeclaration */ // const x = a| + || containingNodeKind === 186 /* BinaryExpression */; // x = a| case 12 /* TemplateHead */: - return containingNodeKind === 187 /* TemplateExpression */; // `aa ${| + return containingNodeKind === 188 /* TemplateExpression */; // `aa ${| case 13 /* TemplateMiddle */: - return containingNodeKind === 194 /* TemplateSpan */; // `aa ${10} dd ${| + return containingNodeKind === 196 /* TemplateSpan */; // `aa ${10} dd ${| case 112 /* PublicKeyword */: case 110 /* PrivateKeyword */: case 111 /* ProtectedKeyword */: - return containingNodeKind === 143 /* PropertyDeclaration */; // class A{ public | + return containingNodeKind === 144 /* PropertyDeclaration */; // class A{ public | } // Previous token may have been a keyword that was converted to an identifier. switch (previousToken.getText()) { @@ -49423,7 +51449,7 @@ var ts; } function isInStringOrRegularExpressionOrTemplateLiteral(contextToken) { if (contextToken.kind === 9 /* StringLiteral */ - || contextToken.kind === 164 /* StringLiteralType */ + || contextToken.kind === 165 /* StringLiteralType */ || contextToken.kind === 10 /* RegularExpressionLiteral */ || ts.isTemplateLiteralKind(contextToken.kind)) { var start_7 = contextToken.getStart(); @@ -49453,14 +51479,14 @@ var ts; isMemberCompletion = true; var typeForObject; var existingMembers; - if (objectLikeContainer.kind === 169 /* ObjectLiteralExpression */) { + if (objectLikeContainer.kind === 170 /* ObjectLiteralExpression */) { // We are completing on contextual types, but may also include properties // other than those within the declared type. isNewIdentifierLocation = true; typeForObject = typeChecker.getContextualType(objectLikeContainer); existingMembers = objectLikeContainer.properties; } - else if (objectLikeContainer.kind === 165 /* ObjectBindingPattern */) { + else if (objectLikeContainer.kind === 166 /* ObjectBindingPattern */) { // We are *only* completing on properties from the type being destructured. isNewIdentifierLocation = false; var rootDeclaration = ts.getRootDeclaration(objectLikeContainer.parent); @@ -49468,7 +51494,18 @@ var ts; // We don't want to complete using the type acquired by the shape // of the binding pattern; we are only interested in types acquired // through type declaration or inference. - if (rootDeclaration.initializer || rootDeclaration.type) { + // Also proceed if rootDeclaration is parameter and if its containing function expression\arrow function is contextually typed - + // type of parameter will flow in from the contextual type of the function + var canGetType = !!(rootDeclaration.initializer || rootDeclaration.type); + if (!canGetType && rootDeclaration.kind === 141 /* Parameter */) { + if (ts.isExpression(rootDeclaration.parent)) { + canGetType = !!typeChecker.getContextualType(rootDeclaration.parent); + } + else if (rootDeclaration.parent.kind === 146 /* MethodDeclaration */ || rootDeclaration.parent.kind === 149 /* SetAccessor */) { + canGetType = ts.isExpression(rootDeclaration.parent.parent) && !!typeChecker.getContextualType(rootDeclaration.parent.parent); + } + } + if (canGetType) { typeForObject = typeChecker.getTypeAtLocation(objectLikeContainer); existingMembers = objectLikeContainer.elements; } @@ -49506,9 +51543,9 @@ var ts; * @returns true if 'symbols' was successfully populated; false otherwise. */ function tryGetImportOrExportClauseCompletionSymbols(namedImportsOrExports) { - var declarationKind = namedImportsOrExports.kind === 229 /* NamedImports */ ? - 226 /* ImportDeclaration */ : - 232 /* ExportDeclaration */; + var declarationKind = namedImportsOrExports.kind === 232 /* NamedImports */ ? + 229 /* ImportDeclaration */ : + 235 /* ExportDeclaration */; var importOrExportDeclaration = ts.getAncestor(namedImportsOrExports, declarationKind); var moduleSpecifier = importOrExportDeclaration.moduleSpecifier; if (!moduleSpecifier) { @@ -49533,9 +51570,9 @@ var ts; switch (contextToken.kind) { case 15 /* OpenBraceToken */: // const x = { | case 24 /* CommaToken */: - var parent_12 = contextToken.parent; - if (parent_12 && (parent_12.kind === 169 /* ObjectLiteralExpression */ || parent_12.kind === 165 /* ObjectBindingPattern */)) { - return parent_12; + var parent_14 = contextToken.parent; + if (parent_14 && (parent_14.kind === 170 /* ObjectLiteralExpression */ || parent_14.kind === 166 /* ObjectBindingPattern */)) { + return parent_14; } break; } @@ -49552,8 +51589,8 @@ var ts; case 15 /* OpenBraceToken */: // import { | case 24 /* CommaToken */: switch (contextToken.parent.kind) { - case 229 /* NamedImports */: - case 233 /* NamedExports */: + case 232 /* NamedImports */: + case 236 /* NamedExports */: return contextToken.parent; } } @@ -49562,37 +51599,37 @@ var ts; } function tryGetContainingJsxElement(contextToken) { if (contextToken) { - var parent_13 = contextToken.parent; + var parent_15 = contextToken.parent; switch (contextToken.kind) { case 26 /* LessThanSlashToken */: case 39 /* SlashToken */: case 69 /* Identifier */: - case 242 /* JsxAttribute */: - case 243 /* JsxSpreadAttribute */: - if (parent_13 && (parent_13.kind === 238 /* JsxSelfClosingElement */ || parent_13.kind === 239 /* JsxOpeningElement */)) { - return parent_13; + case 245 /* JsxAttribute */: + case 246 /* JsxSpreadAttribute */: + if (parent_15 && (parent_15.kind === 241 /* JsxSelfClosingElement */ || parent_15.kind === 242 /* JsxOpeningElement */)) { + return parent_15; } - else if (parent_13.kind === 242 /* JsxAttribute */) { - return parent_13.parent; + else if (parent_15.kind === 245 /* JsxAttribute */) { + return parent_15.parent; } break; // The context token is the closing } or " of an attribute, which means // its parent is a JsxExpression, whose parent is a JsxAttribute, // whose parent is a JsxOpeningLikeElement case 9 /* StringLiteral */: - if (parent_13 && ((parent_13.kind === 242 /* JsxAttribute */) || (parent_13.kind === 243 /* JsxSpreadAttribute */))) { - return parent_13.parent; + if (parent_15 && ((parent_15.kind === 245 /* JsxAttribute */) || (parent_15.kind === 246 /* JsxSpreadAttribute */))) { + return parent_15.parent; } break; case 16 /* CloseBraceToken */: - if (parent_13 && - parent_13.kind === 244 /* JsxExpression */ && - parent_13.parent && - (parent_13.parent.kind === 242 /* JsxAttribute */)) { - return parent_13.parent.parent; + if (parent_15 && + parent_15.kind === 247 /* JsxExpression */ && + parent_15.parent && + (parent_15.parent.kind === 245 /* JsxAttribute */)) { + return parent_15.parent.parent; } - if (parent_13 && parent_13.kind === 243 /* JsxSpreadAttribute */) { - return parent_13.parent; + if (parent_15 && parent_15.kind === 246 /* JsxSpreadAttribute */) { + return parent_15.parent; } break; } @@ -49601,16 +51638,16 @@ var ts; } function isFunction(kind) { switch (kind) { - case 177 /* FunctionExpression */: - case 178 /* ArrowFunction */: - case 217 /* FunctionDeclaration */: - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: - case 149 /* CallSignature */: - case 150 /* ConstructSignature */: - case 151 /* IndexSignature */: + case 178 /* FunctionExpression */: + case 179 /* ArrowFunction */: + case 219 /* FunctionDeclaration */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: + case 150 /* CallSignature */: + case 151 /* ConstructSignature */: + case 152 /* IndexSignature */: return true; } return false; @@ -49622,54 +51659,54 @@ var ts; var containingNodeKind = contextToken.parent.kind; switch (contextToken.kind) { case 24 /* CommaToken */: - return containingNodeKind === 215 /* VariableDeclaration */ || - containingNodeKind === 216 /* VariableDeclarationList */ || - containingNodeKind === 197 /* VariableStatement */ || - containingNodeKind === 221 /* EnumDeclaration */ || + return containingNodeKind === 217 /* VariableDeclaration */ || + containingNodeKind === 218 /* VariableDeclarationList */ || + containingNodeKind === 199 /* VariableStatement */ || + containingNodeKind === 223 /* EnumDeclaration */ || isFunction(containingNodeKind) || - containingNodeKind === 218 /* ClassDeclaration */ || - containingNodeKind === 190 /* ClassExpression */ || - containingNodeKind === 219 /* InterfaceDeclaration */ || - containingNodeKind === 166 /* ArrayBindingPattern */ || - containingNodeKind === 220 /* TypeAliasDeclaration */; // type Map, K, | + containingNodeKind === 220 /* ClassDeclaration */ || + containingNodeKind === 191 /* ClassExpression */ || + containingNodeKind === 221 /* InterfaceDeclaration */ || + containingNodeKind === 167 /* ArrayBindingPattern */ || + containingNodeKind === 222 /* TypeAliasDeclaration */; // type Map, K, | case 21 /* DotToken */: - return containingNodeKind === 166 /* ArrayBindingPattern */; // var [.| + return containingNodeKind === 167 /* ArrayBindingPattern */; // var [.| case 54 /* ColonToken */: - return containingNodeKind === 167 /* BindingElement */; // var {x :html| + return containingNodeKind === 168 /* BindingElement */; // var {x :html| case 19 /* OpenBracketToken */: - return containingNodeKind === 166 /* ArrayBindingPattern */; // var [x| + return containingNodeKind === 167 /* ArrayBindingPattern */; // var [x| case 17 /* OpenParenToken */: - return containingNodeKind === 248 /* CatchClause */ || + return containingNodeKind === 251 /* CatchClause */ || isFunction(containingNodeKind); case 15 /* OpenBraceToken */: - return containingNodeKind === 221 /* EnumDeclaration */ || - containingNodeKind === 219 /* InterfaceDeclaration */ || - containingNodeKind === 157 /* TypeLiteral */; // const x : { | + return containingNodeKind === 223 /* EnumDeclaration */ || + containingNodeKind === 221 /* InterfaceDeclaration */ || + containingNodeKind === 158 /* TypeLiteral */; // const x : { | case 23 /* SemicolonToken */: - return containingNodeKind === 142 /* PropertySignature */ && + return containingNodeKind === 143 /* PropertySignature */ && contextToken.parent && contextToken.parent.parent && - (contextToken.parent.parent.kind === 219 /* InterfaceDeclaration */ || - contextToken.parent.parent.kind === 157 /* TypeLiteral */); // const x : { a; | + (contextToken.parent.parent.kind === 221 /* InterfaceDeclaration */ || + contextToken.parent.parent.kind === 158 /* TypeLiteral */); // const x : { a; | case 25 /* LessThanToken */: - return containingNodeKind === 218 /* ClassDeclaration */ || - containingNodeKind === 190 /* ClassExpression */ || - containingNodeKind === 219 /* InterfaceDeclaration */ || - containingNodeKind === 220 /* TypeAliasDeclaration */ || + return containingNodeKind === 220 /* ClassDeclaration */ || + containingNodeKind === 191 /* ClassExpression */ || + containingNodeKind === 221 /* InterfaceDeclaration */ || + containingNodeKind === 222 /* TypeAliasDeclaration */ || isFunction(containingNodeKind); case 113 /* StaticKeyword */: - return containingNodeKind === 143 /* PropertyDeclaration */; + return containingNodeKind === 144 /* PropertyDeclaration */; case 22 /* DotDotDotToken */: - return containingNodeKind === 140 /* Parameter */ || + return containingNodeKind === 141 /* Parameter */ || (contextToken.parent && contextToken.parent.parent && - contextToken.parent.parent.kind === 166 /* ArrayBindingPattern */); // var [...z| + contextToken.parent.parent.kind === 167 /* ArrayBindingPattern */); // var [...z| case 112 /* PublicKeyword */: case 110 /* PrivateKeyword */: case 111 /* ProtectedKeyword */: - return containingNodeKind === 140 /* Parameter */; + return containingNodeKind === 141 /* Parameter */; case 116 /* AsKeyword */: - return containingNodeKind === 230 /* ImportSpecifier */ || - containingNodeKind === 234 /* ExportSpecifier */ || - containingNodeKind === 228 /* NamespaceImport */; + return containingNodeKind === 233 /* ImportSpecifier */ || + containingNodeKind === 237 /* ExportSpecifier */ || + containingNodeKind === 231 /* NamespaceImport */; case 73 /* ClassKeyword */: case 81 /* EnumKeyword */: case 107 /* InterfaceKeyword */: @@ -49729,8 +51766,8 @@ var ts; if (element.getStart() <= position && position <= element.getEnd()) { continue; } - var name_34 = element.propertyName || element.name; - existingImportsOrExports[name_34.text] = true; + var name_39 = element.propertyName || element.name; + existingImportsOrExports[name_39.text] = true; } if (ts.isEmpty(existingImportsOrExports)) { return exportsOfModule; @@ -49751,10 +51788,10 @@ var ts; for (var _i = 0, existingMembers_1 = existingMembers; _i < existingMembers_1.length; _i++) { var m = existingMembers_1[_i]; // Ignore omitted expressions for missing members - if (m.kind !== 249 /* PropertyAssignment */ && - m.kind !== 250 /* ShorthandPropertyAssignment */ && - m.kind !== 167 /* BindingElement */ && - m.kind !== 145 /* MethodDeclaration */) { + if (m.kind !== 252 /* PropertyAssignment */ && + m.kind !== 253 /* ShorthandPropertyAssignment */ && + m.kind !== 168 /* BindingElement */ && + m.kind !== 146 /* MethodDeclaration */) { continue; } // If this is the current item we are editing right now, do not filter it out @@ -49762,7 +51799,7 @@ var ts; continue; } var existingName = void 0; - if (m.kind === 167 /* BindingElement */ && m.propertyName) { + if (m.kind === 168 /* BindingElement */ && m.propertyName) { // include only identifiers in completion list if (m.propertyName.kind === 69 /* Identifier */) { existingName = m.propertyName.text; @@ -49792,7 +51829,7 @@ var ts; if (attr.getStart() <= position && position <= attr.getEnd()) { continue; } - if (attr.kind === 242 /* JsxAttribute */) { + if (attr.kind === 245 /* JsxAttribute */) { seenNames[attr.name.text] = true; } } @@ -49819,7 +51856,7 @@ var ts; else { if (!symbols || symbols.length === 0) { if (sourceFile.languageVariant === 1 /* JSX */ && - location.parent && location.parent.kind === 241 /* JsxClosingElement */) { + location.parent && location.parent.kind === 244 /* JsxClosingElement */) { // In the TypeScript JSX element, if such element is not defined. When users query for completion at closing tag, // instead of simply giving unknown value, the completion will return the tag-name of an associated opening-element. // For example: @@ -49847,14 +51884,14 @@ var ts; var entries = []; var target = program.getCompilerOptions().target; var nameTable = getNameTable(sourceFile); - for (var name_35 in nameTable) { + for (var name_40 in nameTable) { // Skip identifiers produced only from the current location - if (nameTable[name_35] === position) { + if (nameTable[name_40] === position) { continue; } - if (!uniqueNames[name_35]) { - uniqueNames[name_35] = name_35; - var displayName = getCompletionEntryDisplayName(name_35, target, /*performCharacterChecks*/ true); + if (!uniqueNames[name_40]) { + uniqueNames[name_40] = name_40; + var displayName = getCompletionEntryDisplayName(name_40, target, /*performCharacterChecks*/ true); if (displayName) { var entry = { name: displayName, @@ -49960,7 +51997,7 @@ var ts; function getSymbolKind(symbol, location) { var flags = symbol.getFlags(); if (flags & 32 /* Class */) - return ts.getDeclarationOfKind(symbol, 190 /* ClassExpression */) ? + return ts.getDeclarationOfKind(symbol, 191 /* ClassExpression */) ? ScriptElementKind.localClassElement : ScriptElementKind.classElement; if (flags & 384 /* Enum */) return ScriptElementKind.enumElement; @@ -49991,6 +52028,9 @@ var ts; if (typeChecker.isArgumentsSymbol(symbol)) { return ScriptElementKind.localVariableElement; } + if (location.kind === 97 /* ThisKeyword */ && ts.isExpression(location)) { + return ScriptElementKind.parameterElement; + } if (flags & 3 /* Variable */) { if (ts.isFirstDeclarationOfSymbolParameter(symbol)) { return ScriptElementKind.parameterElement; @@ -50052,6 +52092,7 @@ var ts; var symbolFlags = symbol.flags; var symbolKind = getSymbolKindOfConstructorPropertyMethodAccessorFunctionOrVar(symbol, symbolFlags, location); var hasAddedSymbolInfo; + var isThisExpression = location.kind === 97 /* ThisKeyword */ && ts.isExpression(location); var type; // Class at constructor site need to be shown as constructor apart from property,method, vars if (symbolKind !== ScriptElementKind.unknown || symbolFlags & 32 /* Class */ || symbolFlags & 8388608 /* Alias */) { @@ -50060,9 +52101,9 @@ var ts; symbolKind = ScriptElementKind.memberVariableElement; } var signature = void 0; - type = typeChecker.getTypeOfSymbolAtLocation(symbol, location); + type = isThisExpression ? typeChecker.getTypeAtLocation(location) : typeChecker.getTypeOfSymbolAtLocation(symbol, location); if (type) { - if (location.parent && location.parent.kind === 170 /* PropertyAccessExpression */) { + if (location.parent && location.parent.kind === 171 /* PropertyAccessExpression */) { var right = location.parent.name; // Either the location is on the right of a property access, or on the left and the right is missing if (right === location || (right && right.getFullWidth() === 0)) { @@ -50071,7 +52112,7 @@ var ts; } // try get the call/construct signature from the type if it matches var callExpression = void 0; - if (location.kind === 172 /* CallExpression */ || location.kind === 173 /* NewExpression */) { + if (location.kind === 173 /* CallExpression */ || location.kind === 174 /* NewExpression */) { callExpression = location; } else if (isCallExpressionTarget(location) || isNewExpressionTarget(location)) { @@ -50084,7 +52125,7 @@ var ts; // Use the first candidate: signature = candidateSignatures[0]; } - var useConstructSignatures = callExpression.kind === 173 /* NewExpression */ || callExpression.expression.kind === 95 /* SuperKeyword */; + var useConstructSignatures = callExpression.kind === 174 /* NewExpression */ || callExpression.expression.kind === 95 /* SuperKeyword */; var allSignatures = useConstructSignatures ? type.getConstructSignatures() : type.getCallSignatures(); if (!ts.contains(allSignatures, signature.target) && !ts.contains(allSignatures, signature)) { // Get the first signature if there is one -- allSignatures may contain @@ -50137,24 +52178,24 @@ var ts; } } else if ((isNameOfFunctionDeclaration(location) && !(symbol.flags & 98304 /* Accessor */)) || - (location.kind === 121 /* ConstructorKeyword */ && location.parent.kind === 146 /* Constructor */)) { + (location.kind === 121 /* ConstructorKeyword */ && location.parent.kind === 147 /* Constructor */)) { // get the signature from the declaration and write it var functionDeclaration = location.parent; - var allSignatures = functionDeclaration.kind === 146 /* Constructor */ ? type.getConstructSignatures() : type.getCallSignatures(); + var allSignatures = functionDeclaration.kind === 147 /* Constructor */ ? type.getConstructSignatures() : type.getCallSignatures(); if (!typeChecker.isImplementationOfOverload(functionDeclaration)) { signature = typeChecker.getSignatureFromDeclaration(functionDeclaration); } else { signature = allSignatures[0]; } - if (functionDeclaration.kind === 146 /* Constructor */) { + if (functionDeclaration.kind === 147 /* Constructor */) { // show (constructor) Type(...) signature symbolKind = ScriptElementKind.constructorImplementationElement; addPrefixForAnyFunctionOrVar(type.symbol, symbolKind); } else { // (function/method) symbol(..signature) - addPrefixForAnyFunctionOrVar(functionDeclaration.kind === 149 /* CallSignature */ && + addPrefixForAnyFunctionOrVar(functionDeclaration.kind === 150 /* CallSignature */ && !(type.symbol.flags & 2048 /* TypeLiteral */ || type.symbol.flags & 4096 /* ObjectLiteral */) ? type.symbol : symbol, symbolKind); } addSignatureDisplayParts(signature, allSignatures); @@ -50162,8 +52203,8 @@ var ts; } } } - if (symbolFlags & 32 /* Class */ && !hasAddedSymbolInfo) { - if (ts.getDeclarationOfKind(symbol, 190 /* ClassExpression */)) { + if (symbolFlags & 32 /* Class */ && !hasAddedSymbolInfo && !isThisExpression) { + if (ts.getDeclarationOfKind(symbol, 191 /* ClassExpression */)) { // Special case for class expressions because we would like to indicate that // the class name is local to the class body (similar to function expression) // (local class) class @@ -50207,7 +52248,7 @@ var ts; } if (symbolFlags & 1536 /* Module */) { addNewLineIfDisplayPartsExist(); - var declaration = ts.getDeclarationOfKind(symbol, 222 /* ModuleDeclaration */); + var declaration = ts.getDeclarationOfKind(symbol, 224 /* ModuleDeclaration */); var isNamespace = declaration && declaration.name && declaration.name.kind === 69 /* Identifier */; displayParts.push(ts.keywordPart(isNamespace ? 126 /* NamespaceKeyword */ : 125 /* ModuleKeyword */)); displayParts.push(ts.spacePart()); @@ -50230,17 +52271,17 @@ var ts; } else { // Method/function type parameter - var declaration = ts.getDeclarationOfKind(symbol, 139 /* TypeParameter */); + var declaration = ts.getDeclarationOfKind(symbol, 140 /* TypeParameter */); ts.Debug.assert(declaration !== undefined); declaration = declaration.parent; if (declaration) { if (ts.isFunctionLikeKind(declaration.kind)) { var signature = typeChecker.getSignatureFromDeclaration(declaration); - if (declaration.kind === 150 /* ConstructSignature */) { + if (declaration.kind === 151 /* ConstructSignature */) { displayParts.push(ts.keywordPart(92 /* NewKeyword */)); displayParts.push(ts.spacePart()); } - else if (declaration.kind !== 149 /* CallSignature */ && declaration.name) { + else if (declaration.kind !== 150 /* CallSignature */ && declaration.name) { addFullSymbolName(declaration.symbol); } ts.addRange(displayParts, ts.signatureToDisplayParts(typeChecker, signature, sourceFile, 32 /* WriteTypeArgumentsOfSignature */)); @@ -50260,7 +52301,7 @@ var ts; if (symbolFlags & 8 /* EnumMember */) { addPrefixForAnyFunctionOrVar(symbol, "enum member"); var declaration = symbol.declarations[0]; - if (declaration.kind === 251 /* EnumMember */) { + if (declaration.kind === 254 /* EnumMember */) { var constantValue = typeChecker.getConstantValue(declaration); if (constantValue !== undefined) { displayParts.push(ts.spacePart()); @@ -50276,7 +52317,7 @@ var ts; displayParts.push(ts.spacePart()); addFullSymbolName(symbol); ts.forEach(symbol.declarations, function (declaration) { - if (declaration.kind === 225 /* ImportEqualsDeclaration */) { + if (declaration.kind === 228 /* ImportEqualsDeclaration */) { var importEqualsDeclaration = declaration; if (ts.isExternalModuleImportEqualsDeclaration(importEqualsDeclaration)) { displayParts.push(ts.spacePart()); @@ -50303,11 +52344,18 @@ var ts; if (!hasAddedSymbolInfo) { if (symbolKind !== ScriptElementKind.unknown) { if (type) { - addPrefixForAnyFunctionOrVar(symbol, symbolKind); + if (isThisExpression) { + addNewLineIfDisplayPartsExist(); + displayParts.push(ts.keywordPart(97 /* ThisKeyword */)); + } + else { + addPrefixForAnyFunctionOrVar(symbol, symbolKind); + } // For properties, variables and local vars: show the type if (symbolKind === ScriptElementKind.memberVariableElement || symbolFlags & 3 /* Variable */ || - symbolKind === ScriptElementKind.localVariableElement) { + symbolKind === ScriptElementKind.localVariableElement || + isThisExpression) { displayParts.push(ts.punctuationPart(54 /* ColonToken */)); displayParts.push(ts.spacePart()); // If the type is type parameter, format it specially @@ -50409,10 +52457,10 @@ var ts; // Try getting just type at this position and show switch (node.kind) { case 69 /* Identifier */: - case 170 /* PropertyAccessExpression */: - case 137 /* QualifiedName */: + case 171 /* PropertyAccessExpression */: + case 138 /* QualifiedName */: case 97 /* ThisKeyword */: - case 163 /* ThisType */: + case 164 /* ThisType */: case 95 /* SuperKeyword */: // For the identifiers/this/super etc get the type at position var type = typeChecker.getTypeAtLocation(node); @@ -50491,8 +52539,8 @@ var ts; var declarations = []; var definition; ts.forEach(signatureDeclarations, function (d) { - if ((selectConstructors && d.kind === 146 /* Constructor */) || - (!selectConstructors && (d.kind === 217 /* FunctionDeclaration */ || d.kind === 145 /* MethodDeclaration */ || d.kind === 144 /* MethodSignature */))) { + if ((selectConstructors && d.kind === 147 /* Constructor */) || + (!selectConstructors && (d.kind === 219 /* FunctionDeclaration */ || d.kind === 146 /* MethodDeclaration */ || d.kind === 145 /* MethodSignature */))) { declarations.push(d); if (d.body) definition = d; @@ -50509,6 +52557,25 @@ var ts; return false; } } + function findReferenceInPosition(refs, pos) { + for (var _i = 0, refs_1 = refs; _i < refs_1.length; _i++) { + var ref = refs_1[_i]; + if (ref.pos <= pos && pos < ref.end) { + return ref; + } + } + return undefined; + } + function getDefinitionInfoForFileReference(name, targetFileName) { + return { + fileName: targetFileName, + textSpan: ts.createTextSpanFromBounds(0, 0), + kind: ScriptElementKind.scriptElement, + name: name, + containerName: undefined, + containerKind: undefined + }; + } /// Goto definition function getDefinitionAtPosition(fileName, position) { synchronizeHostData(); @@ -50524,18 +52591,20 @@ var ts; return label ? [createDefinitionInfo(label, ScriptElementKind.label, labelName, /*containerName*/ undefined)] : undefined; } /// Triple slash reference comments - var comment = ts.forEach(sourceFile.referencedFiles, function (r) { return (r.pos <= position && position < r.end) ? r : undefined; }); + var comment = findReferenceInPosition(sourceFile.referencedFiles, position); if (comment) { var referenceFile = ts.tryResolveScriptReference(program, sourceFile, comment); if (referenceFile) { - return [{ - fileName: referenceFile.fileName, - textSpan: ts.createTextSpanFromBounds(0, 0), - kind: ScriptElementKind.scriptElement, - name: comment.fileName, - containerName: undefined, - containerKind: undefined - }]; + return [getDefinitionInfoForFileReference(comment.fileName, referenceFile.fileName)]; + } + return undefined; + } + // Type reference directives + var typeReferenceDirective = findReferenceInPosition(sourceFile.typeReferenceDirectives, position); + if (typeReferenceDirective) { + var referenceFile = ts.lookUp(program.resolvedTypeReferenceDirectives, typeReferenceDirective.fileName); + if (referenceFile && referenceFile.resolvedFileName) { + return [getDefinitionInfoForFileReference(typeReferenceDirective.fileName, referenceFile.resolvedFileName)]; } return undefined; } @@ -50559,7 +52628,7 @@ var ts; // if (node.kind === 69 /* Identifier */ && (node.parent === declaration || - (declaration.kind === 230 /* ImportSpecifier */ && declaration.parent && declaration.parent.kind === 229 /* NamedImports */))) { + (declaration.kind === 233 /* ImportSpecifier */ && declaration.parent && declaration.parent.kind === 232 /* NamedImports */))) { symbol = typeChecker.getAliasedSymbol(symbol); } } @@ -50568,7 +52637,7 @@ var ts; // go to the declaration of the property name (in this case stay at the same position). However, if go-to-definition // is performed at the location of property access, we would like to go to definition of the property in the short-hand // assignment. This case and others are handled by the following code. - if (node.parent.kind === 250 /* ShorthandPropertyAssignment */) { + if (node.parent.kind === 253 /* ShorthandPropertyAssignment */) { var shorthandSymbol = typeChecker.getShorthandAssignmentValueSymbol(symbol.valueDeclaration); if (!shorthandSymbol) { return []; @@ -50644,7 +52713,7 @@ var ts; function getSemanticDocumentHighlights(node) { if (node.kind === 69 /* Identifier */ || node.kind === 97 /* ThisKeyword */ || - node.kind === 163 /* ThisType */ || + node.kind === 164 /* ThisType */ || node.kind === 95 /* SuperKeyword */ || isLiteralNameOfPropertyDeclarationOrIndexAccess(node) || isNameOfExternalModuleImportOrDeclaration(node)) { @@ -50698,75 +52767,75 @@ var ts; switch (node.kind) { case 88 /* IfKeyword */: case 80 /* ElseKeyword */: - if (hasKind(node.parent, 200 /* IfStatement */)) { + if (hasKind(node.parent, 202 /* IfStatement */)) { return getIfElseOccurrences(node.parent); } break; case 94 /* ReturnKeyword */: - if (hasKind(node.parent, 208 /* ReturnStatement */)) { + if (hasKind(node.parent, 210 /* ReturnStatement */)) { return getReturnOccurrences(node.parent); } break; case 98 /* ThrowKeyword */: - if (hasKind(node.parent, 212 /* ThrowStatement */)) { + if (hasKind(node.parent, 214 /* ThrowStatement */)) { return getThrowOccurrences(node.parent); } break; case 72 /* CatchKeyword */: - if (hasKind(parent(parent(node)), 213 /* TryStatement */)) { + if (hasKind(parent(parent(node)), 215 /* TryStatement */)) { return getTryCatchFinallyOccurrences(node.parent.parent); } break; case 100 /* TryKeyword */: case 85 /* FinallyKeyword */: - if (hasKind(parent(node), 213 /* TryStatement */)) { + if (hasKind(parent(node), 215 /* TryStatement */)) { return getTryCatchFinallyOccurrences(node.parent); } break; case 96 /* SwitchKeyword */: - if (hasKind(node.parent, 210 /* SwitchStatement */)) { + if (hasKind(node.parent, 212 /* SwitchStatement */)) { return getSwitchCaseDefaultOccurrences(node.parent); } break; case 71 /* CaseKeyword */: case 77 /* DefaultKeyword */: - if (hasKind(parent(parent(parent(node))), 210 /* SwitchStatement */)) { + if (hasKind(parent(parent(parent(node))), 212 /* SwitchStatement */)) { return getSwitchCaseDefaultOccurrences(node.parent.parent.parent); } break; case 70 /* BreakKeyword */: case 75 /* ContinueKeyword */: - if (hasKind(node.parent, 207 /* BreakStatement */) || hasKind(node.parent, 206 /* ContinueStatement */)) { + if (hasKind(node.parent, 209 /* BreakStatement */) || hasKind(node.parent, 208 /* ContinueStatement */)) { return getBreakOrContinueStatementOccurrences(node.parent); } break; case 86 /* ForKeyword */: - if (hasKind(node.parent, 203 /* ForStatement */) || - hasKind(node.parent, 204 /* ForInStatement */) || - hasKind(node.parent, 205 /* ForOfStatement */)) { + if (hasKind(node.parent, 205 /* ForStatement */) || + hasKind(node.parent, 206 /* ForInStatement */) || + hasKind(node.parent, 207 /* ForOfStatement */)) { return getLoopBreakContinueOccurrences(node.parent); } break; case 104 /* WhileKeyword */: case 79 /* DoKeyword */: - if (hasKind(node.parent, 202 /* WhileStatement */) || hasKind(node.parent, 201 /* DoStatement */)) { + if (hasKind(node.parent, 204 /* WhileStatement */) || hasKind(node.parent, 203 /* DoStatement */)) { return getLoopBreakContinueOccurrences(node.parent); } break; case 121 /* ConstructorKeyword */: - if (hasKind(node.parent, 146 /* Constructor */)) { + if (hasKind(node.parent, 147 /* Constructor */)) { return getConstructorOccurrences(node.parent); } break; case 123 /* GetKeyword */: case 130 /* SetKeyword */: - if (hasKind(node.parent, 147 /* GetAccessor */) || hasKind(node.parent, 148 /* SetAccessor */)) { + if (hasKind(node.parent, 148 /* GetAccessor */) || hasKind(node.parent, 149 /* SetAccessor */)) { return getGetAndSetOccurrences(node.parent); } break; default: if (ts.isModifierKind(node.kind) && node.parent && - (ts.isDeclaration(node.parent) || node.parent.kind === 197 /* VariableStatement */)) { + (ts.isDeclaration(node.parent) || node.parent.kind === 199 /* VariableStatement */)) { return getModifierOccurrences(node.kind, node.parent); } } @@ -50782,10 +52851,10 @@ var ts; aggregate(node); return statementAccumulator; function aggregate(node) { - if (node.kind === 212 /* ThrowStatement */) { + if (node.kind === 214 /* ThrowStatement */) { statementAccumulator.push(node); } - else if (node.kind === 213 /* TryStatement */) { + else if (node.kind === 215 /* TryStatement */) { var tryStatement = node; if (tryStatement.catchClause) { aggregate(tryStatement.catchClause); @@ -50812,19 +52881,19 @@ var ts; function getThrowStatementOwner(throwStatement) { var child = throwStatement; while (child.parent) { - var parent_14 = child.parent; - if (ts.isFunctionBlock(parent_14) || parent_14.kind === 252 /* SourceFile */) { - return parent_14; + var parent_16 = child.parent; + if (ts.isFunctionBlock(parent_16) || parent_16.kind === 255 /* SourceFile */) { + return parent_16; } // A throw-statement is only owned by a try-statement if the try-statement has // a catch clause, and if the throw-statement occurs within the try block. - if (parent_14.kind === 213 /* TryStatement */) { - var tryStatement = parent_14; + if (parent_16.kind === 215 /* TryStatement */) { + var tryStatement = parent_16; if (tryStatement.tryBlock === child && tryStatement.catchClause) { return child; } } - child = parent_14; + child = parent_16; } return undefined; } @@ -50833,7 +52902,7 @@ var ts; aggregate(node); return statementAccumulator; function aggregate(node) { - if (node.kind === 207 /* BreakStatement */ || node.kind === 206 /* ContinueStatement */) { + if (node.kind === 209 /* BreakStatement */ || node.kind === 208 /* ContinueStatement */) { statementAccumulator.push(node); } else if (!ts.isFunctionLike(node)) { @@ -50848,16 +52917,16 @@ var ts; function getBreakOrContinueOwner(statement) { for (var node_2 = statement.parent; node_2; node_2 = node_2.parent) { switch (node_2.kind) { - case 210 /* SwitchStatement */: - if (statement.kind === 206 /* ContinueStatement */) { + case 212 /* SwitchStatement */: + if (statement.kind === 208 /* ContinueStatement */) { continue; } // Fall through. - case 203 /* ForStatement */: - case 204 /* ForInStatement */: - case 205 /* ForOfStatement */: - case 202 /* WhileStatement */: - case 201 /* DoStatement */: + case 205 /* ForStatement */: + case 206 /* ForInStatement */: + case 207 /* ForOfStatement */: + case 204 /* WhileStatement */: + case 203 /* DoStatement */: if (!statement.label || isLabeledBy(node_2, statement.label.text)) { return node_2; } @@ -50876,24 +52945,24 @@ var ts; var container = declaration.parent; // Make sure we only highlight the keyword when it makes sense to do so. if (ts.isAccessibilityModifier(modifier)) { - if (!(container.kind === 218 /* ClassDeclaration */ || - container.kind === 190 /* ClassExpression */ || - (declaration.kind === 140 /* Parameter */ && hasKind(container, 146 /* Constructor */)))) { + if (!(container.kind === 220 /* ClassDeclaration */ || + container.kind === 191 /* ClassExpression */ || + (declaration.kind === 141 /* Parameter */ && hasKind(container, 147 /* Constructor */)))) { return undefined; } } else if (modifier === 113 /* StaticKeyword */) { - if (!(container.kind === 218 /* ClassDeclaration */ || container.kind === 190 /* ClassExpression */)) { + if (!(container.kind === 220 /* ClassDeclaration */ || container.kind === 191 /* ClassExpression */)) { return undefined; } } else if (modifier === 82 /* ExportKeyword */ || modifier === 122 /* DeclareKeyword */) { - if (!(container.kind === 223 /* ModuleBlock */ || container.kind === 252 /* SourceFile */)) { + if (!(container.kind === 225 /* ModuleBlock */ || container.kind === 255 /* SourceFile */)) { return undefined; } } else if (modifier === 115 /* AbstractKeyword */) { - if (!(container.kind === 218 /* ClassDeclaration */ || declaration.kind === 218 /* ClassDeclaration */)) { + if (!(container.kind === 220 /* ClassDeclaration */ || declaration.kind === 220 /* ClassDeclaration */)) { return undefined; } } @@ -50905,8 +52974,8 @@ var ts; var modifierFlag = getFlagFromModifier(modifier); var nodes; switch (container.kind) { - case 223 /* ModuleBlock */: - case 252 /* SourceFile */: + case 225 /* ModuleBlock */: + case 255 /* SourceFile */: // Container is either a class declaration or the declaration is a classDeclaration if (modifierFlag & 128 /* Abstract */) { nodes = declaration.members.concat(declaration); @@ -50915,17 +52984,17 @@ var ts; nodes = container.statements; } break; - case 146 /* Constructor */: + case 147 /* Constructor */: nodes = container.parameters.concat(container.parent.members); break; - case 218 /* ClassDeclaration */: - case 190 /* ClassExpression */: + case 220 /* ClassDeclaration */: + case 191 /* ClassExpression */: nodes = container.members; // If we're an accessibility modifier, we're in an instance member and should search // the constructor's parameter list for instance members as well. if (modifierFlag & 28 /* AccessibilityModifier */) { var constructor = ts.forEach(container.members, function (member) { - return member.kind === 146 /* Constructor */ && member; + return member.kind === 147 /* Constructor */ && member; }); if (constructor) { nodes = nodes.concat(constructor.parameters); @@ -50978,8 +53047,8 @@ var ts; } function getGetAndSetOccurrences(accessorDeclaration) { var keywords = []; - tryPushAccessorKeyword(accessorDeclaration.symbol, 147 /* GetAccessor */); - tryPushAccessorKeyword(accessorDeclaration.symbol, 148 /* SetAccessor */); + tryPushAccessorKeyword(accessorDeclaration.symbol, 148 /* GetAccessor */); + tryPushAccessorKeyword(accessorDeclaration.symbol, 149 /* SetAccessor */); return ts.map(keywords, getHighlightSpanForNode); function tryPushAccessorKeyword(accessorSymbol, accessorKind) { var accessor = ts.getDeclarationOfKind(accessorSymbol, accessorKind); @@ -51002,7 +53071,7 @@ var ts; var keywords = []; if (pushKeywordIf(keywords, loopNode.getFirstToken(), 86 /* ForKeyword */, 104 /* WhileKeyword */, 79 /* DoKeyword */)) { // If we succeeded and got a do-while loop, then start looking for a 'while' keyword. - if (loopNode.kind === 201 /* DoStatement */) { + if (loopNode.kind === 203 /* DoStatement */) { var loopTokens = loopNode.getChildren(); for (var i = loopTokens.length - 1; i >= 0; i--) { if (pushKeywordIf(keywords, loopTokens[i], 104 /* WhileKeyword */)) { @@ -51023,13 +53092,13 @@ var ts; var owner = getBreakOrContinueOwner(breakOrContinueStatement); if (owner) { switch (owner.kind) { - case 203 /* ForStatement */: - case 204 /* ForInStatement */: - case 205 /* ForOfStatement */: - case 201 /* DoStatement */: - case 202 /* WhileStatement */: + case 205 /* ForStatement */: + case 206 /* ForInStatement */: + case 207 /* ForOfStatement */: + case 203 /* DoStatement */: + case 204 /* WhileStatement */: return getLoopBreakContinueOccurrences(owner); - case 210 /* SwitchStatement */: + case 212 /* SwitchStatement */: return getSwitchCaseDefaultOccurrences(owner); } } @@ -51083,7 +53152,7 @@ var ts; function getReturnOccurrences(returnStatement) { var func = ts.getContainingFunction(returnStatement); // If we didn't find a containing function with a block body, bail out. - if (!(func && hasKind(func.body, 196 /* Block */))) { + if (!(func && hasKind(func.body, 198 /* Block */))) { return undefined; } var keywords = []; @@ -51099,7 +53168,7 @@ var ts; function getIfElseOccurrences(ifStatement) { var keywords = []; // Traverse upwards through all parent if-statements linked by their else-branches. - while (hasKind(ifStatement.parent, 200 /* IfStatement */) && ifStatement.parent.elseStatement === ifStatement) { + while (hasKind(ifStatement.parent, 202 /* IfStatement */) && ifStatement.parent.elseStatement === ifStatement) { ifStatement = ifStatement.parent; } // Now traverse back down through the else branches, aggregating if/else keywords of if-statements. @@ -51112,7 +53181,7 @@ var ts; break; } } - if (!hasKind(ifStatement.elseStatement, 200 /* IfStatement */)) { + if (!hasKind(ifStatement.elseStatement, 202 /* IfStatement */)) { break; } ifStatement = ifStatement.elseStatement; @@ -51229,7 +53298,7 @@ var ts; return getLabelReferencesInNode(node.parent, node); } } - if (node.kind === 97 /* ThisKeyword */ || node.kind === 163 /* ThisType */) { + if (node.kind === 97 /* ThisKeyword */ || node.kind === 164 /* ThisType */) { return getReferencesForThisKeyword(node, sourceFiles); } if (node.kind === 95 /* SuperKeyword */) { @@ -51263,8 +53332,8 @@ var ts; } else { var internedName = getInternedName(symbol, node, declarations); - for (var _i = 0, sourceFiles_3 = sourceFiles; _i < sourceFiles_3.length; _i++) { - var sourceFile = sourceFiles_3[_i]; + for (var _i = 0, sourceFiles_4 = sourceFiles; _i < sourceFiles_4.length; _i++) { + var sourceFile = sourceFiles_4[_i]; cancellationToken.throwIfCancellationRequested(); var nameTable = getNameTable(sourceFile); if (ts.lookUp(nameTable, internedName) !== undefined) { @@ -51291,7 +53360,7 @@ var ts; }; } function isImportSpecifierSymbol(symbol) { - return (symbol.flags & 8388608 /* Alias */) && !!ts.getDeclarationOfKind(symbol, 230 /* ImportSpecifier */); + return (symbol.flags & 8388608 /* Alias */) && !!ts.getDeclarationOfKind(symbol, 233 /* ImportSpecifier */); } function getInternedName(symbol, location, declarations) { // If this is an export or import specifier it could have been renamed using the 'as' syntax. @@ -51317,14 +53386,14 @@ var ts; // If this is the symbol of a named function expression or named class expression, // then named references are limited to its own scope. var valueDeclaration = symbol.valueDeclaration; - if (valueDeclaration && (valueDeclaration.kind === 177 /* FunctionExpression */ || valueDeclaration.kind === 190 /* ClassExpression */)) { + if (valueDeclaration && (valueDeclaration.kind === 178 /* FunctionExpression */ || valueDeclaration.kind === 191 /* ClassExpression */)) { return valueDeclaration; } // If this is private property or method, the scope is the containing class if (symbol.flags & (4 /* Property */ | 8192 /* Method */)) { var privateDeclaration = ts.forEach(symbol.getDeclarations(), function (d) { return (d.flags & 8 /* Private */) ? d : undefined; }); if (privateDeclaration) { - return ts.getAncestor(privateDeclaration, 218 /* ClassDeclaration */); + return ts.getAncestor(privateDeclaration, 220 /* ClassDeclaration */); } } // If the symbol is an import we would like to find it if we are looking for what it imports. @@ -51350,7 +53419,7 @@ var ts; // Different declarations have different containers, bail out return undefined; } - if (container.kind === 252 /* SourceFile */ && !ts.isExternalModule(container)) { + if (container.kind === 255 /* SourceFile */ && !ts.isExternalModule(container)) { // This is a global variable and not an external module, any declaration defined // within this scope is visible outside the file return undefined; @@ -51523,13 +53592,13 @@ var ts; // Whether 'super' occurs in a static context within a class. var staticFlag = 32 /* Static */; switch (searchSpaceNode.kind) { - case 143 /* PropertyDeclaration */: - case 142 /* PropertySignature */: - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: - case 146 /* Constructor */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: + case 144 /* PropertyDeclaration */: + case 143 /* PropertySignature */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: + case 147 /* Constructor */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: staticFlag &= searchSpaceNode.flags; searchSpaceNode = searchSpaceNode.parent; // re-assign to be the owning class break; @@ -51561,27 +53630,27 @@ var ts; // Whether 'this' occurs in a static context within a class. var staticFlag = 32 /* Static */; switch (searchSpaceNode.kind) { - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: if (ts.isObjectLiteralMethod(searchSpaceNode)) { break; } // fall through - case 143 /* PropertyDeclaration */: - case 142 /* PropertySignature */: - case 146 /* Constructor */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: + case 144 /* PropertyDeclaration */: + case 143 /* PropertySignature */: + case 147 /* Constructor */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: staticFlag &= searchSpaceNode.flags; searchSpaceNode = searchSpaceNode.parent; // re-assign to be the owning class break; - case 252 /* SourceFile */: + case 255 /* SourceFile */: if (ts.isExternalModule(searchSpaceNode)) { return undefined; } // Fall through - case 217 /* FunctionDeclaration */: - case 177 /* FunctionExpression */: + case 219 /* FunctionDeclaration */: + case 178 /* FunctionExpression */: break; // Computed properties in classes are not handled here because references to this are illegal, // so there is no point finding references to them. @@ -51590,7 +53659,7 @@ var ts; } var references = []; var possiblePositions; - if (searchSpaceNode.kind === 252 /* SourceFile */) { + if (searchSpaceNode.kind === 255 /* SourceFile */) { ts.forEach(sourceFiles, function (sourceFile) { possiblePositions = getPossibleSymbolReferencePositions(sourceFile, "this", sourceFile.getStart(), sourceFile.getEnd()); getThisReferencesInFile(sourceFile, sourceFile, possiblePositions, references); @@ -51616,33 +53685,33 @@ var ts; ts.forEach(possiblePositions, function (position) { cancellationToken.throwIfCancellationRequested(); var node = ts.getTouchingWord(sourceFile, position); - if (!node || (node.kind !== 97 /* ThisKeyword */ && node.kind !== 163 /* ThisType */)) { + if (!node || (node.kind !== 97 /* ThisKeyword */ && node.kind !== 164 /* ThisType */)) { return; } var container = ts.getThisContainer(node, /* includeArrowFunctions */ false); switch (searchSpaceNode.kind) { - case 177 /* FunctionExpression */: - case 217 /* FunctionDeclaration */: + case 178 /* FunctionExpression */: + case 219 /* FunctionDeclaration */: if (searchSpaceNode.symbol === container.symbol) { result.push(getReferenceEntryFromNode(node)); } break; - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: if (ts.isObjectLiteralMethod(searchSpaceNode) && searchSpaceNode.symbol === container.symbol) { result.push(getReferenceEntryFromNode(node)); } break; - case 190 /* ClassExpression */: - case 218 /* ClassDeclaration */: + case 191 /* ClassExpression */: + case 220 /* ClassDeclaration */: // Make sure the container belongs to the same class // and has the appropriate static modifier from the original container. if (container.parent && searchSpaceNode.symbol === container.parent.symbol && (container.flags & 32 /* Static */) === staticFlag) { result.push(getReferenceEntryFromNode(node)); } break; - case 252 /* SourceFile */: - if (container.kind === 252 /* SourceFile */ && !ts.isExternalModule(container)) { + case 255 /* SourceFile */: + if (container.kind === 255 /* SourceFile */ && !ts.isExternalModule(container)) { result.push(getReferenceEntryFromNode(node)); } break; @@ -51662,7 +53731,7 @@ var ts; // export {a as somethingElse} // We want the *local* declaration of 'a' as declared in the import, // *not* as declared within "mod" (or farther) - if (location.parent.kind === 234 /* ExportSpecifier */) { + if (location.parent.kind === 237 /* ExportSpecifier */) { result.push(typeChecker.getExportSpecifierLocalTargetSymbol(location.parent)); } // If the location is in a context sensitive location (i.e. in an object literal) try @@ -51692,7 +53761,7 @@ var ts; // we should include both parameter declaration symbol and property declaration symbol // Parameter Declaration symbol is only visible within function scope, so the symbol is stored in constructor.locals. // Property Declaration symbol is a member of the class, so the symbol is stored in its class Declaration.symbol.members - if (symbol.valueDeclaration && symbol.valueDeclaration.kind === 140 /* Parameter */ && + if (symbol.valueDeclaration && symbol.valueDeclaration.kind === 141 /* Parameter */ && ts.isParameterPropertyDeclaration(symbol.valueDeclaration)) { result = result.concat(typeChecker.getSymbolsOfParameterPropertyDeclaration(symbol.valueDeclaration, symbol.name)); } @@ -51737,11 +53806,11 @@ var ts; } if (symbol.flags & (32 /* Class */ | 64 /* Interface */)) { ts.forEach(symbol.getDeclarations(), function (declaration) { - if (declaration.kind === 218 /* ClassDeclaration */) { + if (declaration.kind === 220 /* ClassDeclaration */) { getPropertySymbolFromTypeReference(ts.getClassExtendsHeritageClauseElement(declaration)); ts.forEach(ts.getClassImplementsHeritageClauseElements(declaration), getPropertySymbolFromTypeReference); } - else if (declaration.kind === 219 /* InterfaceDeclaration */) { + else if (declaration.kind === 221 /* InterfaceDeclaration */) { ts.forEach(ts.getInterfaceBaseTypeNodes(declaration), getPropertySymbolFromTypeReference); } }); @@ -51778,7 +53847,7 @@ var ts; // import {a} from "mod"; // export {a as somethingElse} // We want the local target of the export (i.e. the import symbol) and not the final target (i.e. "mod".a) - if (referenceLocation.parent.kind === 234 /* ExportSpecifier */) { + if (referenceLocation.parent.kind === 237 /* ExportSpecifier */) { var aliasedSymbol = typeChecker.getExportSpecifierLocalTargetSymbol(referenceLocation.parent); if (searchSymbols.indexOf(aliasedSymbol) >= 0) { return aliasedSymbol; @@ -51813,19 +53882,19 @@ var ts; if (isNameOfPropertyAssignment(node)) { var objectLiteral = node.parent.parent; var contextualType = typeChecker.getContextualType(objectLiteral); - var name_36 = node.text; + var name_41 = node.text; if (contextualType) { if (contextualType.flags & 16384 /* Union */) { // This is a union type, first see if the property we are looking for is a union property (i.e. exists in all types) // if not, search the constituent types for the property - var unionProperty = contextualType.getProperty(name_36); + var unionProperty = contextualType.getProperty(name_41); if (unionProperty) { return [unionProperty]; } else { var result_5 = []; ts.forEach(contextualType.types, function (t) { - var symbol = t.getProperty(name_36); + var symbol = t.getProperty(name_41); if (symbol) { result_5.push(symbol); } @@ -51834,7 +53903,7 @@ var ts; } } else { - var symbol_1 = contextualType.getProperty(name_36); + var symbol_1 = contextualType.getProperty(name_41); if (symbol_1) { return [symbol_1]; } @@ -51892,10 +53961,10 @@ var ts; } var parent = node.parent; if (parent) { - if (parent.kind === 184 /* PostfixUnaryExpression */ || parent.kind === 183 /* PrefixUnaryExpression */) { + if (parent.kind === 185 /* PostfixUnaryExpression */ || parent.kind === 184 /* PrefixUnaryExpression */) { return true; } - else if (parent.kind === 185 /* BinaryExpression */ && parent.left === node) { + else if (parent.kind === 186 /* BinaryExpression */ && parent.left === node) { var operator = parent.operatorToken.kind; return 56 /* FirstAssignment */ <= operator && operator <= 68 /* LastAssignment */; } @@ -51926,33 +53995,33 @@ var ts; } function getMeaningFromDeclaration(node) { switch (node.kind) { - case 140 /* Parameter */: - case 215 /* VariableDeclaration */: - case 167 /* BindingElement */: - case 143 /* PropertyDeclaration */: - case 142 /* PropertySignature */: - case 249 /* PropertyAssignment */: - case 250 /* ShorthandPropertyAssignment */: - case 251 /* EnumMember */: - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: - case 146 /* Constructor */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: - case 217 /* FunctionDeclaration */: - case 177 /* FunctionExpression */: - case 178 /* ArrowFunction */: - case 248 /* CatchClause */: + case 141 /* Parameter */: + case 217 /* VariableDeclaration */: + case 168 /* BindingElement */: + case 144 /* PropertyDeclaration */: + case 143 /* PropertySignature */: + case 252 /* PropertyAssignment */: + case 253 /* ShorthandPropertyAssignment */: + case 254 /* EnumMember */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: + case 147 /* Constructor */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: + case 219 /* FunctionDeclaration */: + case 178 /* FunctionExpression */: + case 179 /* ArrowFunction */: + case 251 /* CatchClause */: return 1 /* Value */; - case 139 /* TypeParameter */: - case 219 /* InterfaceDeclaration */: - case 220 /* TypeAliasDeclaration */: - case 157 /* TypeLiteral */: + case 140 /* TypeParameter */: + case 221 /* InterfaceDeclaration */: + case 222 /* TypeAliasDeclaration */: + case 158 /* TypeLiteral */: return 2 /* Type */; - case 218 /* ClassDeclaration */: - case 221 /* EnumDeclaration */: + case 220 /* ClassDeclaration */: + case 223 /* EnumDeclaration */: return 1 /* Value */ | 2 /* Type */; - case 222 /* ModuleDeclaration */: + case 224 /* ModuleDeclaration */: if (ts.isAmbientModule(node)) { return 4 /* Namespace */ | 1 /* Value */; } @@ -51962,15 +54031,15 @@ var ts; else { return 4 /* Namespace */; } - case 229 /* NamedImports */: - case 230 /* ImportSpecifier */: - case 225 /* ImportEqualsDeclaration */: - case 226 /* ImportDeclaration */: - case 231 /* ExportAssignment */: - case 232 /* ExportDeclaration */: + case 232 /* NamedImports */: + case 233 /* ImportSpecifier */: + case 228 /* ImportEqualsDeclaration */: + case 229 /* ImportDeclaration */: + case 234 /* ExportAssignment */: + case 235 /* ExportDeclaration */: return 1 /* Value */ | 2 /* Type */ | 4 /* Namespace */; // An external module can be a Value - case 252 /* SourceFile */: + case 255 /* SourceFile */: return 4 /* Namespace */ | 1 /* Value */; } return 1 /* Value */ | 2 /* Type */ | 4 /* Namespace */; @@ -51979,10 +54048,10 @@ var ts; if (ts.isRightSideOfQualifiedNameOrPropertyAccess(node)) { node = node.parent; } - return node.parent.kind === 153 /* TypeReference */ || - (node.parent.kind === 192 /* ExpressionWithTypeArguments */ && !ts.isExpressionWithTypeArgumentsInClassExtendsClause(node.parent)) || + return node.parent.kind === 154 /* TypeReference */ || + (node.parent.kind === 193 /* ExpressionWithTypeArguments */ && !ts.isExpressionWithTypeArgumentsInClassExtendsClause(node.parent)) || (node.kind === 97 /* ThisKeyword */ && !ts.isExpression(node)) || - node.kind === 163 /* ThisType */; + node.kind === 164 /* ThisType */; } function isNamespaceReference(node) { return isQualifiedNameNamespaceReference(node) || isPropertyAccessNamespaceReference(node); @@ -51990,32 +54059,32 @@ var ts; function isPropertyAccessNamespaceReference(node) { var root = node; var isLastClause = true; - if (root.parent.kind === 170 /* PropertyAccessExpression */) { - while (root.parent && root.parent.kind === 170 /* PropertyAccessExpression */) { + if (root.parent.kind === 171 /* PropertyAccessExpression */) { + while (root.parent && root.parent.kind === 171 /* PropertyAccessExpression */) { root = root.parent; } isLastClause = root.name === node; } - if (!isLastClause && root.parent.kind === 192 /* ExpressionWithTypeArguments */ && root.parent.parent.kind === 247 /* HeritageClause */) { + if (!isLastClause && root.parent.kind === 193 /* ExpressionWithTypeArguments */ && root.parent.parent.kind === 250 /* HeritageClause */) { var decl = root.parent.parent.parent; - return (decl.kind === 218 /* ClassDeclaration */ && root.parent.parent.token === 106 /* ImplementsKeyword */) || - (decl.kind === 219 /* InterfaceDeclaration */ && root.parent.parent.token === 83 /* ExtendsKeyword */); + return (decl.kind === 220 /* ClassDeclaration */ && root.parent.parent.token === 106 /* ImplementsKeyword */) || + (decl.kind === 221 /* InterfaceDeclaration */ && root.parent.parent.token === 83 /* ExtendsKeyword */); } return false; } function isQualifiedNameNamespaceReference(node) { var root = node; var isLastClause = true; - if (root.parent.kind === 137 /* QualifiedName */) { - while (root.parent && root.parent.kind === 137 /* QualifiedName */) { + if (root.parent.kind === 138 /* QualifiedName */) { + while (root.parent && root.parent.kind === 138 /* QualifiedName */) { root = root.parent; } isLastClause = root.right === node; } - return root.parent.kind === 153 /* TypeReference */ && !isLastClause; + return root.parent.kind === 154 /* TypeReference */ && !isLastClause; } function isInRightSideOfImport(node) { - while (node.parent.kind === 137 /* QualifiedName */) { + while (node.parent.kind === 138 /* QualifiedName */) { node = node.parent; } return ts.isInternalModuleImportEqualsDeclaration(node.parent) && node.parent.moduleReference === node; @@ -52025,15 +54094,15 @@ var ts; // import a = |b|; // Namespace // import a = |b.c|; // Value, type, namespace // import a = |b.c|.d; // Namespace - if (node.parent.kind === 137 /* QualifiedName */ && + if (node.parent.kind === 138 /* QualifiedName */ && node.parent.right === node && - node.parent.parent.kind === 225 /* ImportEqualsDeclaration */) { + node.parent.parent.kind === 228 /* ImportEqualsDeclaration */) { return 1 /* Value */ | 2 /* Type */ | 4 /* Namespace */; } return 4 /* Namespace */; } function getMeaningFromLocation(node) { - if (node.parent.kind === 231 /* ExportAssignment */) { + if (node.parent.kind === 234 /* ExportAssignment */) { return 1 /* Value */ | 2 /* Type */ | 4 /* Namespace */; } else if (isInRightSideOfImport(node)) { @@ -52062,7 +54131,7 @@ var ts; return ts.SignatureHelp.getSignatureHelpItems(program, sourceFile, position, cancellationToken); } /// Syntactic features - function getSourceFile(fileName) { + function getNonBoundSourceFile(fileName) { return syntaxTreeCache.getCurrentSourceFile(fileName); } function getNameOrDottedNameSpan(fileName, startPos, endPos) { @@ -52073,16 +54142,16 @@ var ts; return; } switch (node.kind) { - case 170 /* PropertyAccessExpression */: - case 137 /* QualifiedName */: + case 171 /* PropertyAccessExpression */: + case 138 /* QualifiedName */: case 9 /* StringLiteral */: - case 164 /* StringLiteralType */: + case 165 /* StringLiteralType */: case 84 /* FalseKeyword */: case 99 /* TrueKeyword */: case 93 /* NullKeyword */: case 95 /* SuperKeyword */: case 97 /* ThisKeyword */: - case 163 /* ThisType */: + case 164 /* ThisType */: case 69 /* Identifier */: break; // Cant create the text span @@ -52099,7 +54168,7 @@ var ts; // If this is name of a module declarations, check if this is right side of dotted module name // If parent of the module declaration which is parent of this node is module declaration and its body is the module declaration that this node is name of // Then this name is name from dotted module - if (nodeForStartPos.parent.parent.kind === 222 /* ModuleDeclaration */ && + if (nodeForStartPos.parent.parent.kind === 224 /* ModuleDeclaration */ && nodeForStartPos.parent.parent.body === nodeForStartPos.parent) { // Use parent module declarations name for start pos nodeForStartPos = nodeForStartPos.parent.parent.name; @@ -52140,10 +54209,10 @@ var ts; // That means we're calling back into the host around every 1.2k of the file we process. // Lib.d.ts has similar numbers. switch (kind) { - case 222 /* ModuleDeclaration */: - case 218 /* ClassDeclaration */: - case 219 /* InterfaceDeclaration */: - case 217 /* FunctionDeclaration */: + case 224 /* ModuleDeclaration */: + case 220 /* ClassDeclaration */: + case 221 /* InterfaceDeclaration */: + case 219 /* FunctionDeclaration */: cancellationToken.throwIfCancellationRequested(); } } @@ -52197,7 +54266,7 @@ var ts; */ function hasValueSideModule(symbol) { return ts.forEach(symbol.declarations, function (declaration) { - return declaration.kind === 222 /* ModuleDeclaration */ && + return declaration.kind === 224 /* ModuleDeclaration */ && ts.getModuleInstanceState(declaration) === 1 /* Instantiated */; }); } @@ -52358,16 +54427,16 @@ var ts; pushClassification(tag.tagName.pos, tag.tagName.end - tag.tagName.pos, 18 /* docCommentTagName */); pos = tag.tagName.end; switch (tag.kind) { - case 271 /* JSDocParameterTag */: + case 274 /* JSDocParameterTag */: processJSDocParameterTag(tag); break; - case 274 /* JSDocTemplateTag */: + case 277 /* JSDocTemplateTag */: processJSDocTemplateTag(tag); break; - case 273 /* JSDocTypeTag */: + case 276 /* JSDocTypeTag */: processElement(tag.typeExpression); break; - case 272 /* JSDocReturnTag */: + case 275 /* JSDocReturnTag */: processElement(tag.typeExpression); break; } @@ -52434,10 +54503,10 @@ var ts; return true; } var classifiedElementName = tryClassifyJsxElementName(node); - if (!ts.isToken(node) && node.kind !== 240 /* JsxText */ && classifiedElementName === undefined) { + if (!ts.isToken(node) && node.kind !== 243 /* JsxText */ && classifiedElementName === undefined) { return false; } - var tokenStart = node.kind === 240 /* JsxText */ ? node.pos : classifyLeadingTriviaAndGetTokenStart(node); + var tokenStart = node.kind === 243 /* JsxText */ ? node.pos : classifyLeadingTriviaAndGetTokenStart(node); var tokenWidth = node.end - tokenStart; ts.Debug.assert(tokenWidth >= 0); if (tokenWidth > 0) { @@ -52450,22 +54519,22 @@ var ts; } function tryClassifyJsxElementName(token) { switch (token.parent && token.parent.kind) { - case 239 /* JsxOpeningElement */: + case 242 /* JsxOpeningElement */: if (token.parent.tagName === token) { return 19 /* jsxOpenTagName */; } break; - case 241 /* JsxClosingElement */: + case 244 /* JsxClosingElement */: if (token.parent.tagName === token) { return 20 /* jsxCloseTagName */; } break; - case 238 /* JsxSelfClosingElement */: + case 241 /* JsxSelfClosingElement */: if (token.parent.tagName === token) { return 21 /* jsxSelfClosingTagName */; } break; - case 242 /* JsxAttribute */: + case 245 /* JsxAttribute */: if (token.parent.name === token) { return 22 /* jsxAttribute */; } @@ -52493,17 +54562,17 @@ var ts; if (token) { if (tokenKind === 56 /* EqualsToken */) { // the '=' in a variable declaration is special cased here. - if (token.parent.kind === 215 /* VariableDeclaration */ || - token.parent.kind === 143 /* PropertyDeclaration */ || - token.parent.kind === 140 /* Parameter */ || - token.parent.kind === 242 /* JsxAttribute */) { + if (token.parent.kind === 217 /* VariableDeclaration */ || + token.parent.kind === 144 /* PropertyDeclaration */ || + token.parent.kind === 141 /* Parameter */ || + token.parent.kind === 245 /* JsxAttribute */) { return 5 /* operator */; } } - if (token.parent.kind === 185 /* BinaryExpression */ || - token.parent.kind === 183 /* PrefixUnaryExpression */ || - token.parent.kind === 184 /* PostfixUnaryExpression */ || - token.parent.kind === 186 /* ConditionalExpression */) { + if (token.parent.kind === 186 /* BinaryExpression */ || + token.parent.kind === 184 /* PrefixUnaryExpression */ || + token.parent.kind === 185 /* PostfixUnaryExpression */ || + token.parent.kind === 187 /* ConditionalExpression */) { return 5 /* operator */; } } @@ -52512,8 +54581,8 @@ var ts; else if (tokenKind === 8 /* NumericLiteral */) { return 4 /* numericLiteral */; } - else if (tokenKind === 9 /* StringLiteral */ || tokenKind === 164 /* StringLiteralType */) { - return token.parent.kind === 242 /* JsxAttribute */ ? 24 /* jsxAttributeStringLiteralValue */ : 6 /* stringLiteral */; + else if (tokenKind === 9 /* StringLiteral */ || tokenKind === 165 /* StringLiteralType */) { + return token.parent.kind === 245 /* JsxAttribute */ ? 24 /* jsxAttributeStringLiteralValue */ : 6 /* stringLiteral */; } else if (tokenKind === 10 /* RegularExpressionLiteral */) { // TODO: we should get another classification type for these literals. @@ -52523,38 +54592,38 @@ var ts; // TODO (drosen): we should *also* get another classification type for these literals. return 6 /* stringLiteral */; } - else if (tokenKind === 240 /* JsxText */) { + else if (tokenKind === 243 /* JsxText */) { return 23 /* jsxText */; } else if (tokenKind === 69 /* Identifier */) { if (token) { switch (token.parent.kind) { - case 218 /* ClassDeclaration */: + case 220 /* ClassDeclaration */: if (token.parent.name === token) { return 11 /* className */; } return; - case 139 /* TypeParameter */: + case 140 /* TypeParameter */: if (token.parent.name === token) { return 15 /* typeParameterName */; } return; - case 219 /* InterfaceDeclaration */: + case 221 /* InterfaceDeclaration */: if (token.parent.name === token) { return 13 /* interfaceName */; } return; - case 221 /* EnumDeclaration */: + case 223 /* EnumDeclaration */: if (token.parent.name === token) { return 12 /* enumName */; } return; - case 222 /* ModuleDeclaration */: + case 224 /* ModuleDeclaration */: if (token.parent.name === token) { return 14 /* moduleName */; } return; - case 140 /* Parameter */: + case 141 /* Parameter */: if (token.parent.name === token) { return 17 /* parameterName */; } @@ -52698,19 +54767,19 @@ var ts; var commentOwner; findOwner: for (commentOwner = tokenAtPos; commentOwner; commentOwner = commentOwner.parent) { switch (commentOwner.kind) { - case 217 /* FunctionDeclaration */: - case 145 /* MethodDeclaration */: - case 146 /* Constructor */: - case 218 /* ClassDeclaration */: - case 197 /* VariableStatement */: + case 219 /* FunctionDeclaration */: + case 146 /* MethodDeclaration */: + case 147 /* Constructor */: + case 220 /* ClassDeclaration */: + case 199 /* VariableStatement */: break findOwner; - case 252 /* SourceFile */: + case 255 /* SourceFile */: return undefined; - case 222 /* ModuleDeclaration */: + case 224 /* ModuleDeclaration */: // If in walking up the tree, we hit a a nested namespace declaration, // then we must be somewhere within a dotted namespace name; however we don't // want to give back a JSDoc template for the 'b' or 'c' in 'namespace a.b.c { }'. - if (commentOwner.parent.kind === 222 /* ModuleDeclaration */) { + if (commentOwner.parent.kind === 224 /* ModuleDeclaration */) { return undefined; } break findOwner; @@ -52751,7 +54820,7 @@ var ts; if (ts.isFunctionLike(commentOwner)) { return commentOwner.parameters; } - if (commentOwner.kind === 197 /* VariableStatement */) { + if (commentOwner.kind === 199 /* VariableStatement */) { var varStatement = commentOwner; var varDeclarations = varStatement.declarationList.declarations; if (varDeclarations.length === 1 && varDeclarations[0].initializer) { @@ -52769,17 +54838,17 @@ var ts; * @returns the parameters of a signature found on the RHS if one exists; otherwise 'emptyArray'. */ function getParametersFromRightHandSideOfAssignment(rightHandSide) { - while (rightHandSide.kind === 176 /* ParenthesizedExpression */) { + while (rightHandSide.kind === 177 /* ParenthesizedExpression */) { rightHandSide = rightHandSide.expression; } switch (rightHandSide.kind) { - case 177 /* FunctionExpression */: - case 178 /* ArrowFunction */: + case 178 /* FunctionExpression */: + case 179 /* ArrowFunction */: return rightHandSide.parameters; - case 190 /* ClassExpression */: + case 191 /* ClassExpression */: for (var _i = 0, _a = rightHandSide.members; _i < _a.length; _i++) { var member = _a[_i]; - if (member.kind === 146 /* Constructor */) { + if (member.kind === 147 /* Constructor */) { return member.parameters; } } @@ -53004,7 +55073,7 @@ var ts; getFormattingEditsAfterKeystroke: getFormattingEditsAfterKeystroke, getDocCommentTemplateAtPosition: getDocCommentTemplateAtPosition, getEmitOutput: getEmitOutput, - getSourceFile: getSourceFile, + getNonBoundSourceFile: getNonBoundSourceFile, getProgram: getProgram }; } @@ -53033,7 +55102,7 @@ var ts; // then we want 'something' to be in the name table. Similarly, if we have // "a['propname']" then we want to store "propname" in the name table. if (ts.isDeclarationName(node) || - node.parent.kind === 236 /* ExternalModuleReference */ || + node.parent.kind === 239 /* ExternalModuleReference */ || isArgumentOfElementAccessExpression(node)) { nameTable[node.text] = nameTable[node.text] === undefined ? node.pos : -1; } @@ -53046,7 +55115,7 @@ var ts; function isArgumentOfElementAccessExpression(node) { return node && node.parent && - node.parent.kind === 171 /* ElementAccessExpression */ && + node.parent.kind === 172 /* ElementAccessExpression */ && node.parent.argumentExpression === node; } /// Classifier @@ -53305,7 +55374,7 @@ var ts; var end = scanner.getTextPos(); addResult(start, end, classFromKind(token)); if (end >= text.length) { - if (token === 9 /* StringLiteral */ || token === 164 /* StringLiteralType */) { + if (token === 9 /* StringLiteral */ || token === 165 /* StringLiteralType */) { // Check to see if we finished up on a multiline string literal. var tokenText = scanner.getTokenText(); if (scanner.isUnterminated()) { @@ -53428,7 +55497,7 @@ var ts; } } function isKeyword(token) { - return token >= 70 /* FirstKeyword */ && token <= 136 /* LastKeyword */; + return token >= 70 /* FirstKeyword */ && token <= 137 /* LastKeyword */; } function classFromKind(token) { if (isKeyword(token)) { @@ -53444,7 +55513,7 @@ var ts; case 8 /* NumericLiteral */: return 4 /* numericLiteral */; case 9 /* StringLiteral */: - case 164 /* StringLiteralType */: + case 165 /* StringLiteralType */: return 6 /* stringLiteral */; case 10 /* RegularExpressionLiteral */: return 7 /* regularExpressionLiteral */; @@ -53556,113 +55625,113 @@ var ts; function spanInNode(node) { if (node) { switch (node.kind) { - case 197 /* VariableStatement */: + case 199 /* VariableStatement */: // Span on first variable declaration return spanInVariableDeclaration(node.declarationList.declarations[0]); - case 215 /* VariableDeclaration */: - case 143 /* PropertyDeclaration */: - case 142 /* PropertySignature */: + case 217 /* VariableDeclaration */: + case 144 /* PropertyDeclaration */: + case 143 /* PropertySignature */: return spanInVariableDeclaration(node); - case 140 /* Parameter */: + case 141 /* Parameter */: return spanInParameterDeclaration(node); - case 217 /* FunctionDeclaration */: - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: - case 146 /* Constructor */: - case 177 /* FunctionExpression */: - case 178 /* ArrowFunction */: + case 219 /* FunctionDeclaration */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: + case 147 /* Constructor */: + case 178 /* FunctionExpression */: + case 179 /* ArrowFunction */: return spanInFunctionDeclaration(node); - case 196 /* Block */: + case 198 /* Block */: if (ts.isFunctionBlock(node)) { return spanInFunctionBlock(node); } // Fall through - case 223 /* ModuleBlock */: + case 225 /* ModuleBlock */: return spanInBlock(node); - case 248 /* CatchClause */: + case 251 /* CatchClause */: return spanInBlock(node.block); - case 199 /* ExpressionStatement */: + case 201 /* ExpressionStatement */: // span on the expression return textSpan(node.expression); - case 208 /* ReturnStatement */: + case 210 /* ReturnStatement */: // span on return keyword and expression if present return textSpan(node.getChildAt(0), node.expression); - case 202 /* WhileStatement */: + case 204 /* WhileStatement */: // Span on while(...) return textSpanEndingAtNextToken(node, node.expression); - case 201 /* DoStatement */: + case 203 /* DoStatement */: // span in statement of the do statement return spanInNode(node.statement); - case 214 /* DebuggerStatement */: + case 216 /* DebuggerStatement */: // span on debugger keyword return textSpan(node.getChildAt(0)); - case 200 /* IfStatement */: + case 202 /* IfStatement */: // set on if(..) span return textSpanEndingAtNextToken(node, node.expression); - case 211 /* LabeledStatement */: + case 213 /* LabeledStatement */: // span in statement return spanInNode(node.statement); - case 207 /* BreakStatement */: - case 206 /* ContinueStatement */: + case 209 /* BreakStatement */: + case 208 /* ContinueStatement */: // On break or continue keyword and label if present return textSpan(node.getChildAt(0), node.label); - case 203 /* ForStatement */: + case 205 /* ForStatement */: return spanInForStatement(node); - case 204 /* ForInStatement */: + case 206 /* ForInStatement */: // span of for (a in ...) return textSpanEndingAtNextToken(node, node.expression); - case 205 /* ForOfStatement */: + case 207 /* ForOfStatement */: // span in initializer return spanInInitializerOfForLike(node); - case 210 /* SwitchStatement */: + case 212 /* SwitchStatement */: // span on switch(...) return textSpanEndingAtNextToken(node, node.expression); - case 245 /* CaseClause */: - case 246 /* DefaultClause */: + case 248 /* CaseClause */: + case 249 /* DefaultClause */: // span in first statement of the clause return spanInNode(node.statements[0]); - case 213 /* TryStatement */: + case 215 /* TryStatement */: // span in try block return spanInBlock(node.tryBlock); - case 212 /* ThrowStatement */: + case 214 /* ThrowStatement */: // span in throw ... return textSpan(node, node.expression); - case 231 /* ExportAssignment */: + case 234 /* ExportAssignment */: // span on export = id return textSpan(node, node.expression); - case 225 /* ImportEqualsDeclaration */: + case 228 /* ImportEqualsDeclaration */: // import statement without including semicolon return textSpan(node, node.moduleReference); - case 226 /* ImportDeclaration */: + case 229 /* ImportDeclaration */: // import statement without including semicolon return textSpan(node, node.moduleSpecifier); - case 232 /* ExportDeclaration */: + case 235 /* ExportDeclaration */: // import statement without including semicolon return textSpan(node, node.moduleSpecifier); - case 222 /* ModuleDeclaration */: + case 224 /* ModuleDeclaration */: // span on complete module if it is instantiated if (ts.getModuleInstanceState(node) !== 1 /* Instantiated */) { return undefined; } - case 218 /* ClassDeclaration */: - case 221 /* EnumDeclaration */: - case 251 /* EnumMember */: - case 167 /* BindingElement */: + case 220 /* ClassDeclaration */: + case 223 /* EnumDeclaration */: + case 254 /* EnumMember */: + case 168 /* BindingElement */: // span on complete node return textSpan(node); - case 209 /* WithStatement */: + case 211 /* WithStatement */: // span in statement return spanInNode(node.statement); - case 141 /* Decorator */: + case 142 /* Decorator */: return spanInNodeArray(node.parent.decorators); - case 165 /* ObjectBindingPattern */: - case 166 /* ArrayBindingPattern */: + case 166 /* ObjectBindingPattern */: + case 167 /* ArrayBindingPattern */: return spanInBindingPattern(node); // No breakpoint in interface, type alias - case 219 /* InterfaceDeclaration */: - case 220 /* TypeAliasDeclaration */: + case 221 /* InterfaceDeclaration */: + case 222 /* TypeAliasDeclaration */: return undefined; // Tokens: case 23 /* SemicolonToken */: @@ -53692,7 +55761,7 @@ var ts; case 72 /* CatchKeyword */: case 85 /* FinallyKeyword */: return spanInNextNode(node); - case 136 /* OfKeyword */: + case 137 /* OfKeyword */: return spanInOfKeyword(node); default: // Destructuring pattern in destructuring assignment @@ -53705,13 +55774,13 @@ var ts; // a or ...c or d: x from // [a, b, ...c] or { a, b } or { d: x } from destructuring pattern if ((node.kind === 69 /* Identifier */ || - node.kind == 189 /* SpreadElementExpression */ || - node.kind === 249 /* PropertyAssignment */ || - node.kind === 250 /* ShorthandPropertyAssignment */) && + node.kind == 190 /* SpreadElementExpression */ || + node.kind === 252 /* PropertyAssignment */ || + node.kind === 253 /* ShorthandPropertyAssignment */) && ts.isArrayLiteralOrObjectLiteralDestructuringPattern(node.parent)) { return textSpan(node); } - if (node.kind === 185 /* BinaryExpression */) { + if (node.kind === 186 /* BinaryExpression */) { var binaryExpression = node; // Set breakpoint in destructuring pattern if its destructuring assignment // [a, b, c] or {a, b, c} of @@ -53734,22 +55803,22 @@ var ts; } if (ts.isExpression(node)) { switch (node.parent.kind) { - case 201 /* DoStatement */: + case 203 /* DoStatement */: // Set span as if on while keyword return spanInPreviousNode(node); - case 141 /* Decorator */: + case 142 /* Decorator */: // Set breakpoint on the decorator emit return spanInNode(node.parent); - case 203 /* ForStatement */: - case 205 /* ForOfStatement */: + case 205 /* ForStatement */: + case 207 /* ForOfStatement */: return textSpan(node); - case 185 /* BinaryExpression */: + case 186 /* BinaryExpression */: if (node.parent.operatorToken.kind === 24 /* CommaToken */) { // if this is comma expression, the breakpoint is possible in this expression return textSpan(node); } break; - case 178 /* ArrowFunction */: + case 179 /* ArrowFunction */: if (node.parent.body === node) { // If this is body of arrow function, it is allowed to have the breakpoint return textSpan(node); @@ -53758,13 +55827,13 @@ var ts; } } // If this is name of property assignment, set breakpoint in the initializer - if (node.parent.kind === 249 /* PropertyAssignment */ && + if (node.parent.kind === 252 /* PropertyAssignment */ && node.parent.name === node && !ts.isArrayLiteralOrObjectLiteralDestructuringPattern(node.parent.parent)) { return spanInNode(node.parent.initializer); } // Breakpoint in type assertion goes to its operand - if (node.parent.kind === 175 /* TypeAssertionExpression */ && node.parent.type === node) { + if (node.parent.kind === 176 /* TypeAssertionExpression */ && node.parent.type === node) { return spanInNextNode(node.parent.type); } // return type of function go to previous token @@ -53772,8 +55841,8 @@ var ts; return spanInPreviousNode(node); } // initializer of variable/parameter declaration go to previous node - if ((node.parent.kind === 215 /* VariableDeclaration */ || - node.parent.kind === 140 /* Parameter */)) { + if ((node.parent.kind === 217 /* VariableDeclaration */ || + node.parent.kind === 141 /* Parameter */)) { var paramOrVarDecl = node.parent; if (paramOrVarDecl.initializer === node || paramOrVarDecl.type === node || @@ -53781,7 +55850,7 @@ var ts; return spanInPreviousNode(node); } } - if (node.parent.kind === 185 /* BinaryExpression */) { + if (node.parent.kind === 186 /* BinaryExpression */) { var binaryExpression = node.parent; if (ts.isArrayLiteralOrObjectLiteralDestructuringPattern(binaryExpression.left) && (binaryExpression.right === node || @@ -53807,7 +55876,7 @@ var ts; } function spanInVariableDeclaration(variableDeclaration) { // If declaration of for in statement, just set the span in parent - if (variableDeclaration.parent.parent.kind === 204 /* ForInStatement */) { + if (variableDeclaration.parent.parent.kind === 206 /* ForInStatement */) { return spanInNode(variableDeclaration.parent.parent); } // If this is a destructuring pattern set breakpoint in binding pattern @@ -53818,7 +55887,7 @@ var ts; // or its declaration from 'for of' if (variableDeclaration.initializer || (variableDeclaration.flags & 1 /* Export */) || - variableDeclaration.parent.parent.kind === 205 /* ForOfStatement */) { + variableDeclaration.parent.parent.kind === 207 /* ForOfStatement */) { return textSpanFromVariableDeclaration(variableDeclaration); } var declarations = variableDeclaration.parent.declarations; @@ -53858,7 +55927,7 @@ var ts; } function canFunctionHaveSpanInWholeDeclaration(functionDeclaration) { return !!(functionDeclaration.flags & 1 /* Export */) || - (functionDeclaration.parent.kind === 218 /* ClassDeclaration */ && functionDeclaration.kind !== 146 /* Constructor */); + (functionDeclaration.parent.kind === 220 /* ClassDeclaration */ && functionDeclaration.kind !== 147 /* Constructor */); } function spanInFunctionDeclaration(functionDeclaration) { // No breakpoints in the function signature @@ -53881,34 +55950,34 @@ var ts; } function spanInBlock(block) { switch (block.parent.kind) { - case 222 /* ModuleDeclaration */: + case 224 /* ModuleDeclaration */: if (ts.getModuleInstanceState(block.parent) !== 1 /* Instantiated */) { return undefined; } // Set on parent if on same line otherwise on first statement - case 202 /* WhileStatement */: - case 200 /* IfStatement */: - case 204 /* ForInStatement */: + case 204 /* WhileStatement */: + case 202 /* IfStatement */: + case 206 /* ForInStatement */: return spanInNodeIfStartsOnSameLine(block.parent, block.statements[0]); // Set span on previous token if it starts on same line otherwise on the first statement of the block - case 203 /* ForStatement */: - case 205 /* ForOfStatement */: + case 205 /* ForStatement */: + case 207 /* ForOfStatement */: return spanInNodeIfStartsOnSameLine(ts.findPrecedingToken(block.pos, sourceFile, block.parent), block.statements[0]); } // Default action is to set on first statement return spanInNode(block.statements[0]); } - function spanInInitializerOfForLike(forLikeStaement) { - if (forLikeStaement.initializer.kind === 216 /* VariableDeclarationList */) { + function spanInInitializerOfForLike(forLikeStatement) { + if (forLikeStatement.initializer.kind === 218 /* VariableDeclarationList */) { // declaration list, set breakpoint in first declaration - var variableDeclarationList = forLikeStaement.initializer; + var variableDeclarationList = forLikeStatement.initializer; if (variableDeclarationList.declarations.length > 0) { return spanInNode(variableDeclarationList.declarations[0]); } } else { // Expression - set breakpoint in it - return spanInNode(forLikeStaement.initializer); + return spanInNode(forLikeStatement.initializer); } } function spanInForStatement(forStatement) { @@ -53924,23 +55993,23 @@ var ts; } function spanInBindingPattern(bindingPattern) { // Set breakpoint in first binding element - var firstBindingElement = ts.forEach(bindingPattern.elements, function (element) { return element.kind !== 191 /* OmittedExpression */ ? element : undefined; }); + var firstBindingElement = ts.forEach(bindingPattern.elements, function (element) { return element.kind !== 192 /* OmittedExpression */ ? element : undefined; }); if (firstBindingElement) { return spanInNode(firstBindingElement); } // Empty binding pattern of binding element, set breakpoint on binding element - if (bindingPattern.parent.kind === 167 /* BindingElement */) { + if (bindingPattern.parent.kind === 168 /* BindingElement */) { return textSpan(bindingPattern.parent); } // Variable declaration is used as the span return textSpanFromVariableDeclaration(bindingPattern.parent); } function spanInArrayLiteralOrObjectLiteralDestructuringPattern(node) { - ts.Debug.assert(node.kind !== 166 /* ArrayBindingPattern */ && node.kind !== 165 /* ObjectBindingPattern */); - var elements = node.kind === 168 /* ArrayLiteralExpression */ ? + ts.Debug.assert(node.kind !== 167 /* ArrayBindingPattern */ && node.kind !== 166 /* ObjectBindingPattern */); + var elements = node.kind === 169 /* ArrayLiteralExpression */ ? node.elements : node.properties; - var firstBindingElement = ts.forEach(elements, function (element) { return element.kind !== 191 /* OmittedExpression */ ? element : undefined; }); + var firstBindingElement = ts.forEach(elements, function (element) { return element.kind !== 192 /* OmittedExpression */ ? element : undefined; }); if (firstBindingElement) { return spanInNode(firstBindingElement); } @@ -53948,18 +56017,18 @@ var ts; // just nested element in another destructuring assignment // set breakpoint on assignment when parent is destructuring assignment // Otherwise set breakpoint for this element - return textSpan(node.parent.kind === 185 /* BinaryExpression */ ? node.parent : node); + return textSpan(node.parent.kind === 186 /* BinaryExpression */ ? node.parent : node); } // Tokens: function spanInOpenBraceToken(node) { switch (node.parent.kind) { - case 221 /* EnumDeclaration */: + case 223 /* EnumDeclaration */: var enumDeclaration = node.parent; return spanInNodeIfStartsOnSameLine(ts.findPrecedingToken(node.pos, sourceFile, node.parent), enumDeclaration.members.length ? enumDeclaration.members[0] : enumDeclaration.getLastToken(sourceFile)); - case 218 /* ClassDeclaration */: + case 220 /* ClassDeclaration */: var classDeclaration = node.parent; return spanInNodeIfStartsOnSameLine(ts.findPrecedingToken(node.pos, sourceFile, node.parent), classDeclaration.members.length ? classDeclaration.members[0] : classDeclaration.getLastToken(sourceFile)); - case 224 /* CaseBlock */: + case 226 /* CaseBlock */: return spanInNodeIfStartsOnSameLine(node.parent.parent, node.parent.clauses[0]); } // Default to parent node @@ -53967,24 +56036,24 @@ var ts; } function spanInCloseBraceToken(node) { switch (node.parent.kind) { - case 223 /* ModuleBlock */: + case 225 /* ModuleBlock */: // If this is not instantiated module block no bp span if (ts.getModuleInstanceState(node.parent.parent) !== 1 /* Instantiated */) { return undefined; } - case 221 /* EnumDeclaration */: - case 218 /* ClassDeclaration */: + case 223 /* EnumDeclaration */: + case 220 /* ClassDeclaration */: // Span on close brace token return textSpan(node); - case 196 /* Block */: + case 198 /* Block */: if (ts.isFunctionBlock(node.parent)) { // Span on close brace token return textSpan(node); } // fall through. - case 248 /* CatchClause */: + case 251 /* CatchClause */: return spanInNode(ts.lastOrUndefined(node.parent.statements)); - case 224 /* CaseBlock */: + case 226 /* CaseBlock */: // breakpoint in last statement of the last clause var caseBlock = node.parent; var lastClause = ts.lastOrUndefined(caseBlock.clauses); @@ -53992,7 +56061,7 @@ var ts; return spanInNode(ts.lastOrUndefined(lastClause.statements)); } return undefined; - case 165 /* ObjectBindingPattern */: + case 166 /* ObjectBindingPattern */: // Breakpoint in last binding element or binding pattern if it contains no elements var bindingPattern = node.parent; return spanInNode(ts.lastOrUndefined(bindingPattern.elements) || bindingPattern); @@ -54008,7 +56077,7 @@ var ts; } function spanInCloseBracketToken(node) { switch (node.parent.kind) { - case 166 /* ArrayBindingPattern */: + case 167 /* ArrayBindingPattern */: // Breakpoint in last binding element or binding pattern if it contains no elements var bindingPattern = node.parent; return textSpan(ts.lastOrUndefined(bindingPattern.elements) || bindingPattern); @@ -54023,12 +56092,12 @@ var ts; } } function spanInOpenParenToken(node) { - if (node.parent.kind === 201 /* DoStatement */ || - node.parent.kind === 172 /* CallExpression */ || - node.parent.kind === 173 /* NewExpression */) { + if (node.parent.kind === 203 /* DoStatement */ || + node.parent.kind === 173 /* CallExpression */ || + node.parent.kind === 174 /* NewExpression */) { return spanInPreviousNode(node); } - if (node.parent.kind === 176 /* ParenthesizedExpression */) { + if (node.parent.kind === 177 /* ParenthesizedExpression */) { return spanInNextNode(node); } // Default to parent node @@ -54037,21 +56106,21 @@ var ts; function spanInCloseParenToken(node) { // Is this close paren token of parameter list, set span in previous token switch (node.parent.kind) { - case 177 /* FunctionExpression */: - case 217 /* FunctionDeclaration */: - case 178 /* ArrowFunction */: - case 145 /* MethodDeclaration */: - case 144 /* MethodSignature */: - case 147 /* GetAccessor */: - case 148 /* SetAccessor */: - case 146 /* Constructor */: - case 202 /* WhileStatement */: - case 201 /* DoStatement */: - case 203 /* ForStatement */: - case 205 /* ForOfStatement */: - case 172 /* CallExpression */: - case 173 /* NewExpression */: - case 176 /* ParenthesizedExpression */: + case 178 /* FunctionExpression */: + case 219 /* FunctionDeclaration */: + case 179 /* ArrowFunction */: + case 146 /* MethodDeclaration */: + case 145 /* MethodSignature */: + case 148 /* GetAccessor */: + case 149 /* SetAccessor */: + case 147 /* Constructor */: + case 204 /* WhileStatement */: + case 203 /* DoStatement */: + case 205 /* ForStatement */: + case 207 /* ForOfStatement */: + case 173 /* CallExpression */: + case 174 /* NewExpression */: + case 177 /* ParenthesizedExpression */: return spanInPreviousNode(node); // Default to parent node default: @@ -54061,20 +56130,20 @@ var ts; function spanInColonToken(node) { // Is this : specifying return annotation of the function declaration if (ts.isFunctionLike(node.parent) || - node.parent.kind === 249 /* PropertyAssignment */ || - node.parent.kind === 140 /* Parameter */) { + node.parent.kind === 252 /* PropertyAssignment */ || + node.parent.kind === 141 /* Parameter */) { return spanInPreviousNode(node); } return spanInNode(node.parent); } function spanInGreaterThanOrLessThanToken(node) { - if (node.parent.kind === 175 /* TypeAssertionExpression */) { + if (node.parent.kind === 176 /* TypeAssertionExpression */) { return spanInNextNode(node); } return spanInNode(node.parent); } function spanInWhileKeyword(node) { - if (node.parent.kind === 201 /* DoStatement */) { + if (node.parent.kind === 203 /* DoStatement */) { // Set span on while expression return textSpanEndingAtNextToken(node, node.parent.expression); } @@ -54082,7 +56151,7 @@ var ts; return spanInNode(node.parent); } function spanInOfKeyword(node) { - if (node.parent.kind === 205 /* ForOfStatement */) { + if (node.parent.kind === 207 /* ForOfStatement */) { // set using next token return spanInNextNode(node); } @@ -54171,6 +56240,12 @@ var ts; if ("directoryExists" in this.shimHost) { this.directoryExists = function (directoryName) { return _this.shimHost.directoryExists(directoryName); }; } + if ("getTypeReferenceDirectiveResolutionsForFile" in this.shimHost) { + this.resolveTypeReferenceDirectives = function (typeDirectiveNames, containingFile) { + var typeDirectivesForFile = JSON.parse(_this.shimHost.getTypeReferenceDirectiveResolutionsForFile(containingFile)); + return ts.map(typeDirectiveNames, function (name) { return ts.lookUp(typeDirectivesForFile, name); }); + }; + } } LanguageServiceShimHostAdapter.prototype.log = function (s) { if (this.loggingEnabled) { @@ -54277,8 +56352,16 @@ var ts; this.directoryExists = function (directoryName) { return _this.shimHost.directoryExists(directoryName); }; } } - CoreServicesShimHostAdapter.prototype.readDirectory = function (rootDir, extension, exclude) { - var encoded = this.shimHost.readDirectory(rootDir, extension, JSON.stringify(exclude)); + CoreServicesShimHostAdapter.prototype.readDirectory = function (rootDir, extension, exclude, depth) { + // Wrap the API changes for 2.0 release. This try/catch + // should be removed once TypeScript 2.0 has shipped. + var encoded; + try { + encoded = this.shimHost.readDirectory(rootDir, extension, JSON.stringify(exclude), depth); + } + catch (e) { + encoded = this.shimHost.readDirectory(rootDir, extension, JSON.stringify(exclude)); + } return JSON.parse(encoded); }; CoreServicesShimHostAdapter.prototype.fileExists = function (fileName) { @@ -54525,7 +56608,7 @@ var ts; var _this = this; return this.forwardJSONCall("getDocumentHighlights('" + fileName + "', " + position + ")", function () { var results = _this.languageService.getDocumentHighlights(fileName, position, JSON.parse(filesToSearch)); - // workaround for VS document higlighting issue - keep only items from the initial file + // workaround for VS document highlighting issue - keep only items from the initial file var normalizedName = ts.normalizeSlashes(fileName).toLowerCase(); return ts.filter(results, function (r) { return ts.normalizeSlashes(r.fileName).toLowerCase() === normalizedName; }); }); @@ -54646,33 +56729,47 @@ var ts; }; }); }; + CoreServicesShimObject.prototype.resolveTypeReferenceDirective = function (fileName, typeReferenceDirective, compilerOptionsJson) { + var _this = this; + return this.forwardJSONCall("resolveTypeReferenceDirective(" + fileName + ")", function () { + var compilerOptions = JSON.parse(compilerOptionsJson); + var result = ts.resolveTypeReferenceDirective(typeReferenceDirective, ts.normalizeSlashes(fileName), compilerOptions, _this.host); + return { + resolvedFileName: result.resolvedTypeReferenceDirective ? result.resolvedTypeReferenceDirective.resolvedFileName : undefined, + primary: result.resolvedTypeReferenceDirective ? result.resolvedTypeReferenceDirective.primary : true, + failedLookupLocations: result.failedLookupLocations + }; + }); + }; CoreServicesShimObject.prototype.getPreProcessedFileInfo = function (fileName, sourceTextSnapshot) { + var _this = this; return this.forwardJSONCall("getPreProcessedFileInfo('" + fileName + "')", function () { // for now treat files as JavaScript var result = ts.preProcessFile(sourceTextSnapshot.getText(0, sourceTextSnapshot.getLength()), /* readImportFiles */ true, /* detectJavaScriptImports */ true); - var convertResult = { - referencedFiles: [], - importedFiles: [], + return { + referencedFiles: _this.convertFileReferences(result.referencedFiles), + importedFiles: _this.convertFileReferences(result.importedFiles), ambientExternalModules: result.ambientExternalModules, - isLibFile: result.isLibFile + isLibFile: result.isLibFile, + typeReferenceDirectives: _this.convertFileReferences(result.typeReferenceDirectives) }; - ts.forEach(result.referencedFiles, function (refFile) { - convertResult.referencedFiles.push({ - path: ts.normalizePath(refFile.fileName), - position: refFile.pos, - length: refFile.end - refFile.pos - }); - }); - ts.forEach(result.importedFiles, function (importedFile) { - convertResult.importedFiles.push({ - path: ts.normalizeSlashes(importedFile.fileName), - position: importedFile.pos, - length: importedFile.end - importedFile.pos - }); - }); - return convertResult; }); }; + CoreServicesShimObject.prototype.convertFileReferences = function (refs) { + if (!refs) { + return undefined; + } + var result = []; + for (var _i = 0, refs_2 = refs; _i < refs_2.length; _i++) { + var ref = refs_2[_i]; + result.push({ + path: ts.normalizeSlashes(ref.fileName), + position: ref.pos, + length: ref.end - ref.pos + }); + } + return result; + }; CoreServicesShimObject.prototype.getTSConfigFileInfo = function (fileName, sourceTextSnapshot) { var _this = this; return this.forwardJSONCall("getTSConfigFileInfo('" + fileName + "')", function () { @@ -54681,6 +56778,7 @@ var ts; if (result.error) { return { options: {}, + typingOptions: {}, files: [], errors: [realizeDiagnostic(result.error, "\r\n")] }; @@ -54689,6 +56787,7 @@ var ts; var configFile = ts.parseJsonConfigFileContent(result.config, _this.host, ts.getDirectoryPath(normalizedFileName), /*existingOptions*/ {}, normalizedFileName); return { options: configFile.options, + typingOptions: configFile.typingOptions, files: configFile.fileNames, errors: realizeDiagnostics(configFile.errors, "\r\n") }; @@ -54697,6 +56796,14 @@ var ts; CoreServicesShimObject.prototype.getDefaultCompilationSettings = function () { return this.forwardJSONCall("getDefaultCompilationSettings()", function () { return ts.getDefaultCompilerOptions(); }); }; + CoreServicesShimObject.prototype.discoverTypings = function (discoverTypingsJson) { + var _this = this; + var getCanonicalFileName = ts.createGetCanonicalFileName(/*useCaseSensitivefileNames:*/ false); + return this.forwardJSONCall("discoverTypings()", function () { + var info = JSON.parse(discoverTypingsJson); + return ts.JsTyping.discoverTypings(_this.host, info.fileNames, ts.toPath(info.projectRootPath, info.projectRootPath, getCanonicalFileName), ts.toPath(info.safeListPath, info.safeListPath, getCanonicalFileName), info.packageNameToTypingLocation, info.typingOptions, info.compilerOptions); + }); + }; return CoreServicesShimObject; }(ShimBase)); var TypeScriptServicesFactory = (function () { diff --git a/package.json b/package.json index cc74bf2c27c..bb476070286 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,7 @@ "build": "npm run build:compiler && npm run build:tests", "build:compiler": "jake local", "build:tests": "jake tests", + "start": "node lib/tsc", "clean": "jake clean", "jake": "jake", "lint": "jake lint", diff --git a/scripts/ior.ts b/scripts/ior.ts index f0c142a266c..eb67e62a275 100644 --- a/scripts/ior.ts +++ b/scripts/ior.ts @@ -76,8 +76,11 @@ module Commands { fs.mkdirSync(directoryPath); } } + function normalizeSlashes(path: string): string { + return path.replace(/\\/g, "/"); + } function transalatePath(outputFolder:string, path: string): string { - return outputFolder + directorySeparator + path.replace(":", ""); + return normalizeSlashes(outputFolder + directorySeparator + path.replace(":", "")); } function fileExists(path: string): boolean { return fs.existsSync(path); @@ -86,7 +89,7 @@ module Commands { var filename = transalatePath(outputFolder, f.path); ensureDirectoriesExist(getDirectoryPath(filename)); console.log("writing filename: " + filename); - fs.writeFile(filename, f.result.contents, (err) => { }); + fs.writeFileSync(filename, f.result.contents); }); console.log("Command: tsc "); diff --git a/scripts/tslint/noNullRule.ts b/scripts/tslint/noNullRule.ts deleted file mode 100644 index 8e9deca996b..00000000000 --- a/scripts/tslint/noNullRule.ts +++ /dev/null @@ -1,20 +0,0 @@ -import * as Lint from "tslint/lib/lint"; -import * as ts from "typescript"; - - -export class Rule extends Lint.Rules.AbstractRule { - public static FAILURE_STRING = "Don't use the 'null' keyword - use 'undefined' for missing values instead"; - - public apply(sourceFile: ts.SourceFile): Lint.RuleFailure[] { - return this.applyWithWalker(new NullWalker(sourceFile, this.getOptions())); - } -} - -class NullWalker extends Lint.RuleWalker { - visitNode(node: ts.Node) { - super.visitNode(node); - if (node.kind === ts.SyntaxKind.NullKeyword) { - this.addFailure(this.createFailure(node.getStart(), node.getWidth(), Rule.FAILURE_STRING)); - } - } -} diff --git a/src/compiler/binder.ts b/src/compiler/binder.ts index 26f16c730fb..bbc4f5990de 100644 --- a/src/compiler/binder.ts +++ b/src/compiler/binder.ts @@ -11,19 +11,11 @@ namespace ts { ConstEnumOnly = 2 } - const enum Reachability { - Uninitialized = 1 << 0, - Reachable = 1 << 1, - Unreachable = 1 << 2, - ReportedUnreachable = 1 << 3 - } - - function or(state1: Reachability, state2: Reachability): Reachability { - return (state1 | state2) & Reachability.Reachable - ? Reachability.Reachable - : (state1 & state2) & Reachability.ReportedUnreachable - ? Reachability.ReportedUnreachable - : Reachability.Unreachable; + interface ActiveLabel { + name: string; + breakTarget: FlowLabel; + continueTarget: FlowLabel; + referenced: boolean; } export function getModuleInstanceState(node: Node): ModuleInstanceState { @@ -104,6 +96,7 @@ namespace ts { function createBinder(): (file: SourceFile, options: CompilerOptions) => void { let file: SourceFile; let options: CompilerOptions; + let languageVersion: ScriptTarget; let parent: Node; let container: Node; let blockScopeContainer: Node; @@ -112,16 +105,20 @@ namespace ts { // state used by reachability checks let hasExplicitReturn: boolean; - let currentReachabilityState: Reachability; - let labelStack: Reachability[]; - let labelIndexMap: Map; - let implicitLabels: number[]; + let currentFlow: FlowNode; + let currentBreakTarget: FlowLabel; + let currentContinueTarget: FlowLabel; + let currentTrueTarget: FlowLabel; + let currentFalseTarget: FlowLabel; + let preSwitchCaseFlow: FlowNode; + let activeLabels: ActiveLabel[]; // state used for emit helpers let hasClassExtends: boolean; let hasAsyncFunctions: boolean; let hasDecorators: boolean; let hasParameterDecorators: boolean; + let hasJsxSpreadAttribute: boolean; // If this file is an external module, then it is automatically in strict-mode according to // ES6. If it is not an external module, then we'll determine if it is in strict mode or @@ -132,9 +129,13 @@ namespace ts { let Symbol: { new (flags: SymbolFlags, name: string): Symbol }; let classifiableNames: Map; + const unreachableFlow: FlowNode = { kind: FlowKind.Unreachable }; + const reportedUnreachableFlow: FlowNode = { kind: FlowKind.Unreachable }; + function bindSourceFile(f: SourceFile, opts: CompilerOptions) { file = f; options = opts; + languageVersion = getEmitScriptTarget(options); inStrictMode = !!file.externalModuleIndicator; classifiableNames = {}; @@ -148,19 +149,24 @@ namespace ts { file = undefined; options = undefined; + languageVersion = undefined; parent = undefined; container = undefined; blockScopeContainer = undefined; lastContainer = undefined; seenThisKeyword = false; hasExplicitReturn = false; - labelStack = undefined; - labelIndexMap = undefined; - implicitLabels = undefined; + currentFlow = undefined; + currentBreakTarget = undefined; + currentContinueTarget = undefined; + currentTrueTarget = undefined; + currentFalseTarget = undefined; + activeLabels = undefined; hasClassExtends = false; hasAsyncFunctions = false; hasDecorators = false; hasParameterDecorators = false; + hasJsxSpreadAttribute = false; } return bindSourceFile; @@ -279,6 +285,7 @@ namespace ts { Debug.assert(!hasDynamicName(node)); const isDefaultExport = node.flags & NodeFlags.Default; + // The exported symbol for an export default function/class node is always named "default" const name = isDefaultExport && parent ? "default" : getDeclarationName(node); @@ -435,11 +442,11 @@ namespace ts { blockScopeContainer.locals = undefined; } - let savedReachabilityState: Reachability; - let savedLabelStack: Reachability[]; - let savedLabels: Map; - let savedImplicitLabels: number[]; let savedHasExplicitReturn: boolean; + let savedCurrentFlow: FlowNode; + let savedBreakTarget: FlowLabel; + let savedContinueTarget: FlowLabel; + let savedActiveLabels: ActiveLabel[]; const kind = node.kind; let flags = node.flags; @@ -456,15 +463,17 @@ namespace ts { const saveState = kind === SyntaxKind.SourceFile || kind === SyntaxKind.ModuleBlock || isFunctionLikeKind(kind); if (saveState) { - savedReachabilityState = currentReachabilityState; - savedLabelStack = labelStack; - savedLabels = labelIndexMap; - savedImplicitLabels = implicitLabels; savedHasExplicitReturn = hasExplicitReturn; + savedCurrentFlow = currentFlow; + savedBreakTarget = currentBreakTarget; + savedContinueTarget = currentContinueTarget; + savedActiveLabels = activeLabels; - currentReachabilityState = Reachability.Reachable; hasExplicitReturn = false; - labelStack = labelIndexMap = implicitLabels = undefined; + currentFlow = { kind: FlowKind.Start }; + currentBreakTarget = undefined; + currentContinueTarget = undefined; + activeLabels = undefined; } if (isInJavaScriptFile(node) && node.jsDocComment) { @@ -473,7 +482,7 @@ namespace ts { bindReachableStatement(node); - if (currentReachabilityState === Reachability.Reachable && isFunctionLikeKind(kind) && nodeIsPresent((node).body)) { + if (currentFlow.kind !== FlowKind.Unreachable && isFunctionLikeKind(kind) && nodeIsPresent((node).body)) { flags |= NodeFlags.HasImplicitReturn; if (hasExplicitReturn) { flags |= NodeFlags.HasExplicitReturn; @@ -497,16 +506,19 @@ namespace ts { if (hasAsyncFunctions) { flags |= NodeFlags.HasAsyncFunctions; } + if (hasJsxSpreadAttribute) { + flags |= NodeFlags.HasJsxSpreadAttribute; + } } node.flags = flags; if (saveState) { hasExplicitReturn = savedHasExplicitReturn; - currentReachabilityState = savedReachabilityState; - labelStack = savedLabelStack; - labelIndexMap = savedLabels; - implicitLabels = savedImplicitLabels; + currentFlow = savedCurrentFlow; + currentBreakTarget = savedBreakTarget; + currentContinueTarget = savedContinueTarget; + activeLabels = savedActiveLabels; } container = saveContainer; @@ -561,170 +573,509 @@ namespace ts { case SyntaxKind.LabeledStatement: bindLabeledStatement(node); break; + case SyntaxKind.PrefixUnaryExpression: + bindPrefixUnaryExpressionFlow(node); + break; + case SyntaxKind.BinaryExpression: + bindBinaryExpressionFlow(node); + break; + case SyntaxKind.ConditionalExpression: + bindConditionalExpressionFlow(node); + break; + case SyntaxKind.VariableDeclaration: + bindVariableDeclarationFlow(node); + break; default: forEachChild(node, bind); break; } } - function bindWhileStatement(n: WhileStatement): void { - const preWhileState = - n.expression.kind === SyntaxKind.FalseKeyword ? Reachability.Unreachable : currentReachabilityState; - const postWhileState = - n.expression.kind === SyntaxKind.TrueKeyword ? Reachability.Unreachable : currentReachabilityState; - - // bind expressions (don't affect reachability) - bind(n.expression); - - currentReachabilityState = preWhileState; - const postWhileLabel = pushImplicitLabel(); - bind(n.statement); - popImplicitLabel(postWhileLabel, postWhileState); + function isNarrowableReference(expr: Expression): boolean { + return expr.kind === SyntaxKind.Identifier || + expr.kind === SyntaxKind.ThisKeyword || + expr.kind === SyntaxKind.PropertyAccessExpression && isNarrowableReference((expr).expression); } - function bindDoStatement(n: DoStatement): void { - const preDoState = currentReachabilityState; - - const postDoLabel = pushImplicitLabel(); - bind(n.statement); - const postDoState = n.expression.kind === SyntaxKind.TrueKeyword ? Reachability.Unreachable : preDoState; - popImplicitLabel(postDoLabel, postDoState); - - // bind expressions (don't affect reachability) - bind(n.expression); - } - - function bindForStatement(n: ForStatement): void { - const preForState = currentReachabilityState; - const postForLabel = pushImplicitLabel(); - - // bind expressions (don't affect reachability) - bind(n.initializer); - bind(n.condition); - bind(n.incrementor); - - bind(n.statement); - - // for statement is considered infinite when it condition is either omitted or is true keyword - // - for(..;;..) - // - for(..;true;..) - const isInfiniteLoop = (!n.condition || n.condition.kind === SyntaxKind.TrueKeyword); - const postForState = isInfiniteLoop ? Reachability.Unreachable : preForState; - popImplicitLabel(postForLabel, postForState); - } - - function bindForInOrForOfStatement(n: ForInStatement | ForOfStatement): void { - const preStatementState = currentReachabilityState; - const postStatementLabel = pushImplicitLabel(); - - // bind expressions (don't affect reachability) - bind(n.initializer); - bind(n.expression); - - bind(n.statement); - popImplicitLabel(postStatementLabel, preStatementState); - } - - function bindIfStatement(n: IfStatement): void { - // denotes reachability state when entering 'thenStatement' part of the if statement: - // i.e. if condition is false then thenStatement is unreachable - const ifTrueState = n.expression.kind === SyntaxKind.FalseKeyword ? Reachability.Unreachable : currentReachabilityState; - // denotes reachability state when entering 'elseStatement': - // i.e. if condition is true then elseStatement is unreachable - const ifFalseState = n.expression.kind === SyntaxKind.TrueKeyword ? Reachability.Unreachable : currentReachabilityState; - - currentReachabilityState = ifTrueState; - - // bind expression (don't affect reachability) - bind(n.expression); - - bind(n.thenStatement); - if (n.elseStatement) { - const preElseState = currentReachabilityState; - currentReachabilityState = ifFalseState; - bind(n.elseStatement); - currentReachabilityState = or(currentReachabilityState, preElseState); + function isNarrowingExpression(expr: Expression): boolean { + switch (expr.kind) { + case SyntaxKind.Identifier: + case SyntaxKind.ThisKeyword: + case SyntaxKind.PropertyAccessExpression: + return isNarrowableReference(expr); + case SyntaxKind.CallExpression: + return true; + case SyntaxKind.ParenthesizedExpression: + return isNarrowingExpression((expr).expression); + case SyntaxKind.BinaryExpression: + return isNarrowingBinaryExpression(expr); + case SyntaxKind.PrefixUnaryExpression: + return (expr).operator === SyntaxKind.ExclamationToken && isNarrowingExpression((expr).operand); } - else { - currentReachabilityState = or(currentReachabilityState, ifFalseState); + return false; + } + + function isNarrowingBinaryExpression(expr: BinaryExpression) { + switch (expr.operatorToken.kind) { + case SyntaxKind.EqualsToken: + return isNarrowableReference(expr.left); + case SyntaxKind.EqualsEqualsToken: + case SyntaxKind.ExclamationEqualsToken: + case SyntaxKind.EqualsEqualsEqualsToken: + case SyntaxKind.ExclamationEqualsEqualsToken: + if (isNarrowingExpression(expr.left) && (expr.right.kind === SyntaxKind.NullKeyword || expr.right.kind === SyntaxKind.Identifier)) { + return true; + } + if (expr.left.kind === SyntaxKind.TypeOfExpression && isNarrowingExpression((expr.left).expression) && expr.right.kind === SyntaxKind.StringLiteral) { + return true; + } + return false; + case SyntaxKind.InstanceOfKeyword: + return isNarrowingExpression(expr.left); + case SyntaxKind.CommaToken: + return isNarrowingExpression(expr.right); + } + return false; + } + + function createFlowLabel(): FlowLabel { + return { + kind: FlowKind.Label, + antecedents: undefined + }; + } + + function createFlowLoopLabel(): FlowLabel { + return { + kind: FlowKind.LoopLabel, + antecedents: undefined + }; + } + + function addAntecedent(label: FlowLabel, antecedent: FlowNode): void { + if (antecedent.kind !== FlowKind.Unreachable && !contains(label.antecedents, antecedent)) { + (label.antecedents || (label.antecedents = [])).push(antecedent); } } - function bindReturnOrThrow(n: ReturnStatement | ThrowStatement): void { - // bind expression (don't affect reachability) - bind(n.expression); - if (n.kind === SyntaxKind.ReturnStatement) { - hasExplicitReturn = true; + function createFlowCondition(antecedent: FlowNode, expression: Expression, assumeTrue: boolean): FlowNode { + if (antecedent.kind === FlowKind.Unreachable) { + return antecedent; } - currentReachabilityState = Reachability.Unreachable; - } - - function bindBreakOrContinueStatement(n: BreakOrContinueStatement): void { - // call bind on label (don't affect reachability) - bind(n.label); - // for continue case touch label so it will be marked a used - const isValidJump = jumpToLabel(n.label, n.kind === SyntaxKind.BreakStatement ? currentReachabilityState : Reachability.Unreachable); - if (isValidJump) { - currentReachabilityState = Reachability.Unreachable; + if (!expression) { + return assumeTrue ? antecedent : unreachableFlow; } + if (expression.kind === SyntaxKind.TrueKeyword && !assumeTrue || expression.kind === SyntaxKind.FalseKeyword && assumeTrue) { + return unreachableFlow; + } + if (!isNarrowingExpression(expression)) { + return antecedent; + } + return { + kind: FlowKind.Condition, + antecedent, + expression, + assumeTrue + }; } - function bindTryStatement(n: TryStatement): void { - // catch\finally blocks has the same reachability as try block - const preTryState = currentReachabilityState; - bind(n.tryBlock); - const postTryState = currentReachabilityState; - - currentReachabilityState = preTryState; - bind(n.catchClause); - const postCatchState = currentReachabilityState; - - currentReachabilityState = preTryState; - bind(n.finallyBlock); - - // post catch/finally state is reachable if - // - post try state is reachable - control flow can fall out of try block - // - post catch state is reachable - control flow can fall out of catch block - currentReachabilityState = n.catchClause ? or(postTryState, postCatchState) : postTryState; + function createFlowAssignment(antecedent: FlowNode, node: Expression | VariableDeclaration | BindingElement): FlowNode { + return { + kind: FlowKind.Assignment, + antecedent, + node + }; } - function bindSwitchStatement(n: SwitchStatement): void { - const preSwitchState = currentReachabilityState; - const postSwitchLabel = pushImplicitLabel(); - - // bind expression (don't affect reachability) - bind(n.expression); - - bind(n.caseBlock); - - const hasDefault = forEach(n.caseBlock.clauses, c => c.kind === SyntaxKind.DefaultClause); - - // post switch state is unreachable if switch is exhaustive (has a default case ) and does not have fallthrough from the last case - const postSwitchState = hasDefault && currentReachabilityState !== Reachability.Reachable ? Reachability.Unreachable : preSwitchState; - - popImplicitLabel(postSwitchLabel, postSwitchState); + function finishFlowLabel(flow: FlowLabel): FlowNode { + const antecedents = flow.antecedents; + if (!antecedents) { + return unreachableFlow; + } + if (antecedents.length === 1) { + return antecedents[0]; + } + return flow; } - function bindCaseBlock(n: CaseBlock): void { - const startState = currentReachabilityState; + function isStatementCondition(node: Node) { + const parent = node.parent; + switch (parent.kind) { + case SyntaxKind.IfStatement: + case SyntaxKind.WhileStatement: + case SyntaxKind.DoStatement: + return (parent).expression === node; + case SyntaxKind.ForStatement: + case SyntaxKind.ConditionalExpression: + return (parent).condition === node; + } + return false; + } - for (const clause of n.clauses) { - currentReachabilityState = startState; - bind(clause); - if (clause.statements.length && currentReachabilityState === Reachability.Reachable && options.noFallthroughCasesInSwitch) { - errorOnFirstToken(clause, Diagnostics.Fallthrough_case_in_switch); + function isLogicalExpression(node: Node) { + while (true) { + if (node.kind === SyntaxKind.ParenthesizedExpression) { + node = (node).expression; + } + else if (node.kind === SyntaxKind.PrefixUnaryExpression && (node).operator === SyntaxKind.ExclamationToken) { + node = (node).operand; + } + else { + return node.kind === SyntaxKind.BinaryExpression && ( + (node).operatorToken.kind === SyntaxKind.AmpersandAmpersandToken || + (node).operatorToken.kind === SyntaxKind.BarBarToken); } } } - function bindLabeledStatement(n: LabeledStatement): void { - // call bind on label (don't affect reachability) - bind(n.label); + function isTopLevelLogicalExpression(node: Node): boolean { + while (node.parent.kind === SyntaxKind.ParenthesizedExpression || + node.parent.kind === SyntaxKind.PrefixUnaryExpression && + (node.parent).operator === SyntaxKind.ExclamationToken) { + node = node.parent; + } + return !isStatementCondition(node) && !isLogicalExpression(node.parent); + } - const ok = pushNamedLabel(n.label); - bind(n.statement); - if (ok) { - popNamedLabel(n.label, currentReachabilityState); + function bindCondition(node: Expression, trueTarget: FlowLabel, falseTarget: FlowLabel) { + const saveTrueTarget = currentTrueTarget; + const saveFalseTarget = currentFalseTarget; + currentTrueTarget = trueTarget; + currentFalseTarget = falseTarget; + bind(node); + currentTrueTarget = saveTrueTarget; + currentFalseTarget = saveFalseTarget; + if (!node || !isLogicalExpression(node)) { + addAntecedent(trueTarget, createFlowCondition(currentFlow, node, /*assumeTrue*/ true)); + addAntecedent(falseTarget, createFlowCondition(currentFlow, node, /*assumeTrue*/ false)); + } + } + + function bindIterativeStatement(node: Statement, breakTarget: FlowLabel, continueTarget: FlowLabel): void { + const saveBreakTarget = currentBreakTarget; + const saveContinueTarget = currentContinueTarget; + currentBreakTarget = breakTarget; + currentContinueTarget = continueTarget; + bind(node); + currentBreakTarget = saveBreakTarget; + currentContinueTarget = saveContinueTarget; + } + + function bindWhileStatement(node: WhileStatement): void { + const preWhileLabel = createFlowLoopLabel(); + const preBodyLabel = createFlowLabel(); + const postWhileLabel = createFlowLabel(); + addAntecedent(preWhileLabel, currentFlow); + currentFlow = preWhileLabel; + bindCondition(node.expression, preBodyLabel, postWhileLabel); + currentFlow = finishFlowLabel(preBodyLabel); + bindIterativeStatement(node.statement, postWhileLabel, preWhileLabel); + addAntecedent(preWhileLabel, currentFlow); + currentFlow = finishFlowLabel(postWhileLabel); + } + + function bindDoStatement(node: DoStatement): void { + const preDoLabel = createFlowLoopLabel(); + const preConditionLabel = createFlowLabel(); + const postDoLabel = createFlowLabel(); + addAntecedent(preDoLabel, currentFlow); + currentFlow = preDoLabel; + bindIterativeStatement(node.statement, postDoLabel, preConditionLabel); + addAntecedent(preConditionLabel, currentFlow); + currentFlow = finishFlowLabel(preConditionLabel); + bindCondition(node.expression, preDoLabel, postDoLabel); + currentFlow = finishFlowLabel(postDoLabel); + } + + function bindForStatement(node: ForStatement): void { + const preLoopLabel = createFlowLoopLabel(); + const preBodyLabel = createFlowLabel(); + const postLoopLabel = createFlowLabel(); + bind(node.initializer); + addAntecedent(preLoopLabel, currentFlow); + currentFlow = preLoopLabel; + bindCondition(node.condition, preBodyLabel, postLoopLabel); + currentFlow = finishFlowLabel(preBodyLabel); + bindIterativeStatement(node.statement, postLoopLabel, preLoopLabel); + bind(node.incrementor); + addAntecedent(preLoopLabel, currentFlow); + currentFlow = finishFlowLabel(postLoopLabel); + } + + function bindForInOrForOfStatement(node: ForInStatement | ForOfStatement): void { + const preLoopLabel = createFlowLoopLabel(); + const postLoopLabel = createFlowLabel(); + addAntecedent(preLoopLabel, currentFlow); + currentFlow = preLoopLabel; + bind(node.expression); + addAntecedent(postLoopLabel, currentFlow); + bind(node.initializer); + if (node.initializer.kind !== SyntaxKind.VariableDeclarationList) { + bindAssignmentTargetFlow(node.initializer); + } + bindIterativeStatement(node.statement, postLoopLabel, preLoopLabel); + addAntecedent(preLoopLabel, currentFlow); + currentFlow = finishFlowLabel(postLoopLabel); + } + + function bindIfStatement(node: IfStatement): void { + const thenLabel = createFlowLabel(); + const elseLabel = createFlowLabel(); + const postIfLabel = createFlowLabel(); + bindCondition(node.expression, thenLabel, elseLabel); + currentFlow = finishFlowLabel(thenLabel); + bind(node.thenStatement); + addAntecedent(postIfLabel, currentFlow); + currentFlow = finishFlowLabel(elseLabel); + bind(node.elseStatement); + addAntecedent(postIfLabel, currentFlow); + currentFlow = finishFlowLabel(postIfLabel); + } + + function bindReturnOrThrow(node: ReturnStatement | ThrowStatement): void { + bind(node.expression); + if (node.kind === SyntaxKind.ReturnStatement) { + hasExplicitReturn = true; + } + currentFlow = unreachableFlow; + } + + function findActiveLabel(name: string) { + if (activeLabels) { + for (const label of activeLabels) { + if (label.name === name) { + return label; + } + } + } + return undefined; + } + + function bindbreakOrContinueFlow(node: BreakOrContinueStatement, breakTarget: FlowLabel, continueTarget: FlowLabel) { + const flowLabel = node.kind === SyntaxKind.BreakStatement ? breakTarget : continueTarget; + if (flowLabel) { + addAntecedent(flowLabel, currentFlow); + currentFlow = unreachableFlow; + } + } + + function bindBreakOrContinueStatement(node: BreakOrContinueStatement): void { + bind(node.label); + if (node.label) { + const activeLabel = findActiveLabel(node.label.text); + if (activeLabel) { + activeLabel.referenced = true; + bindbreakOrContinueFlow(node, activeLabel.breakTarget, activeLabel.continueTarget); + } + } + else { + bindbreakOrContinueFlow(node, currentBreakTarget, currentContinueTarget); + } + } + + function bindTryStatement(node: TryStatement): void { + const postFinallyLabel = createFlowLabel(); + const preTryFlow = currentFlow; + // TODO: Every statement in try block is potentially an exit point! + bind(node.tryBlock); + addAntecedent(postFinallyLabel, currentFlow); + if (node.catchClause) { + currentFlow = preTryFlow; + bind(node.catchClause); + addAntecedent(postFinallyLabel, currentFlow); + } + if (node.finallyBlock) { + currentFlow = preTryFlow; + bind(node.finallyBlock); + } + currentFlow = finishFlowLabel(postFinallyLabel); + } + + function bindSwitchStatement(node: SwitchStatement): void { + const postSwitchLabel = createFlowLabel(); + bind(node.expression); + const saveBreakTarget = currentBreakTarget; + const savePreSwitchCaseFlow = preSwitchCaseFlow; + currentBreakTarget = postSwitchLabel; + preSwitchCaseFlow = currentFlow; + bind(node.caseBlock); + addAntecedent(postSwitchLabel, currentFlow); + const hasDefault = forEach(node.caseBlock.clauses, c => c.kind === SyntaxKind.DefaultClause); + if (!hasDefault) { + addAntecedent(postSwitchLabel, preSwitchCaseFlow); + } + currentBreakTarget = saveBreakTarget; + preSwitchCaseFlow = savePreSwitchCaseFlow; + currentFlow = finishFlowLabel(postSwitchLabel); + } + + function bindCaseBlock(node: CaseBlock): void { + const clauses = node.clauses; + for (let i = 0; i < clauses.length; i++) { + const clause = clauses[i]; + if (clause.statements.length) { + if (currentFlow.kind === FlowKind.Unreachable) { + currentFlow = preSwitchCaseFlow; + } + else { + const preCaseLabel = createFlowLabel(); + addAntecedent(preCaseLabel, preSwitchCaseFlow); + addAntecedent(preCaseLabel, currentFlow); + currentFlow = finishFlowLabel(preCaseLabel); + } + bind(clause); + if (currentFlow.kind !== FlowKind.Unreachable && i !== clauses.length - 1 && options.noFallthroughCasesInSwitch) { + errorOnFirstToken(clause, Diagnostics.Fallthrough_case_in_switch); + } + } + else { + bind(clause); + } + } + } + + function pushActiveLabel(name: string, breakTarget: FlowLabel, continueTarget: FlowLabel): ActiveLabel { + const activeLabel = { + name, + breakTarget, + continueTarget, + referenced: false + }; + (activeLabels || (activeLabels = [])).push(activeLabel); + return activeLabel; + } + + function popActiveLabel() { + activeLabels.pop(); + } + + function bindLabeledStatement(node: LabeledStatement): void { + const preStatementLabel = createFlowLoopLabel(); + const postStatementLabel = createFlowLabel(); + bind(node.label); + addAntecedent(preStatementLabel, currentFlow); + const activeLabel = pushActiveLabel(node.label.text, postStatementLabel, preStatementLabel); + bind(node.statement); + popActiveLabel(); + if (!activeLabel.referenced && !options.allowUnusedLabels) { + file.bindDiagnostics.push(createDiagnosticForNode(node.label, Diagnostics.Unused_label)); + } + addAntecedent(postStatementLabel, currentFlow); + currentFlow = finishFlowLabel(postStatementLabel); + } + + function bindDestructuringTargetFlow(node: Expression) { + if (node.kind === SyntaxKind.BinaryExpression && (node).operatorToken.kind === SyntaxKind.EqualsToken) { + bindAssignmentTargetFlow((node).left); + } + else { + bindAssignmentTargetFlow(node); + } + } + + function bindAssignmentTargetFlow(node: Expression) { + if (isNarrowableReference(node)) { + currentFlow = createFlowAssignment(currentFlow, node); + } + else if (node.kind === SyntaxKind.ArrayLiteralExpression) { + for (const e of (node).elements) { + if (e.kind === SyntaxKind.SpreadElementExpression) { + bindAssignmentTargetFlow((e).expression); + } + else { + bindDestructuringTargetFlow(e); + } + } + } + else if (node.kind === SyntaxKind.ObjectLiteralExpression) { + for (const p of (node).properties) { + if (p.kind === SyntaxKind.PropertyAssignment) { + bindDestructuringTargetFlow((p).initializer); + } + else if (p.kind === SyntaxKind.ShorthandPropertyAssignment) { + bindAssignmentTargetFlow((p).name); + } + } + } + } + + function bindLogicalExpression(node: BinaryExpression, trueTarget: FlowLabel, falseTarget: FlowLabel) { + const preRightLabel = createFlowLabel(); + if (node.operatorToken.kind === SyntaxKind.AmpersandAmpersandToken) { + bindCondition(node.left, preRightLabel, falseTarget); + } + else { + bindCondition(node.left, trueTarget, preRightLabel); + } + currentFlow = finishFlowLabel(preRightLabel); + bind(node.operatorToken); + bindCondition(node.right, trueTarget, falseTarget); + } + + function bindPrefixUnaryExpressionFlow(node: PrefixUnaryExpression) { + if (node.operator === SyntaxKind.ExclamationToken) { + const saveTrueTarget = currentTrueTarget; + currentTrueTarget = currentFalseTarget; + currentFalseTarget = saveTrueTarget; + forEachChild(node, bind); + currentFalseTarget = currentTrueTarget; + currentTrueTarget = saveTrueTarget; + } + else { + forEachChild(node, bind); + } + } + + function bindBinaryExpressionFlow(node: BinaryExpression) { + const operator = node.operatorToken.kind; + if (operator === SyntaxKind.AmpersandAmpersandToken || operator === SyntaxKind.BarBarToken) { + if (isTopLevelLogicalExpression(node)) { + const postExpressionLabel = createFlowLabel(); + bindLogicalExpression(node, postExpressionLabel, postExpressionLabel); + currentFlow = finishFlowLabel(postExpressionLabel); + } + else { + bindLogicalExpression(node, currentTrueTarget, currentFalseTarget); + } + } + else { + forEachChild(node, bind); + if (operator === SyntaxKind.EqualsToken && !isAssignmentTarget(node)) { + bindAssignmentTargetFlow(node.left); + } + } + } + + function bindConditionalExpressionFlow(node: ConditionalExpression) { + const trueLabel = createFlowLabel(); + const falseLabel = createFlowLabel(); + const postExpressionLabel = createFlowLabel(); + bindCondition(node.condition, trueLabel, falseLabel); + currentFlow = finishFlowLabel(trueLabel); + bind(node.whenTrue); + addAntecedent(postExpressionLabel, currentFlow); + currentFlow = finishFlowLabel(falseLabel); + bind(node.whenFalse); + addAntecedent(postExpressionLabel, currentFlow); + currentFlow = finishFlowLabel(postExpressionLabel); + } + + function bindInitializedVariableFlow(node: VariableDeclaration | BindingElement) { + const name = node.name; + if (isBindingPattern(name)) { + for (const child of name.elements) { + bindInitializedVariableFlow(child); + } + } + else { + currentFlow = createFlowAssignment(currentFlow, node); + } + } + + function bindVariableDeclarationFlow(node: VariableDeclaration) { + forEachChild(node, bind); + if (node.initializer || node.parent.parent.kind === SyntaxKind.ForInStatement || node.parent.parent.kind === SyntaxKind.ForOfStatement) { + bindInitializedVariableFlow(node); } } @@ -749,6 +1100,7 @@ namespace ts { case SyntaxKind.GetAccessor: case SyntaxKind.SetAccessor: case SyntaxKind.FunctionType: + case SyntaxKind.JSDocFunctionType: case SyntaxKind.ConstructorType: case SyntaxKind.FunctionExpression: case SyntaxKind.ArrowFunction: @@ -896,7 +1248,12 @@ namespace ts { if (node.flags & NodeFlags.Export) { errorOnFirstToken(node, Diagnostics.export_modifier_cannot_be_applied_to_ambient_modules_and_module_augmentations_since_they_are_always_visible); } - declareSymbolAndAddToSymbolTable(node, SymbolFlags.ValueModule, SymbolFlags.ValueModuleExcludes); + if (isExternalModuleAugmentation(node)) { + declareSymbolAndAddToSymbolTable(node, SymbolFlags.NamespaceModule, SymbolFlags.NamespaceModuleExcludes); + } + else { + declareSymbolAndAddToSymbolTable(node, SymbolFlags.ValueModule, SymbolFlags.ValueModuleExcludes); + } } else { const state = getModuleInstanceState(node); @@ -1020,7 +1377,8 @@ namespace ts { if (inStrictMode && node.originalKeywordKind >= SyntaxKind.FirstFutureReservedWord && node.originalKeywordKind <= SyntaxKind.LastFutureReservedWord && - !isIdentifierName(node)) { + !isIdentifierName(node) && + !isInAmbientContext(node)) { // Report error only if there are no parse errors in file if (!file.parseDiagnostics.length) { @@ -1109,6 +1467,35 @@ namespace ts { } } + function getStrictModeBlockScopeFunctionDeclarationMessage(node: Node) { + // Provide specialized messages to help the user understand why we think they're in + // strict mode. + if (getContainingClass(node)) { + return Diagnostics.Function_declarations_are_not_allowed_inside_blocks_in_strict_mode_when_targeting_ES3_or_ES5_Class_definitions_are_automatically_in_strict_mode; + } + + if (file.externalModuleIndicator) { + return Diagnostics.Function_declarations_are_not_allowed_inside_blocks_in_strict_mode_when_targeting_ES3_or_ES5_Modules_are_automatically_in_strict_mode; + } + + return Diagnostics.Function_declarations_are_not_allowed_inside_blocks_in_strict_mode_when_targeting_ES3_or_ES5; + } + + function checkStrictModeFunctionDeclaration(node: FunctionDeclaration) { + if (languageVersion < ScriptTarget.ES6) { + // Report error if function is not top level function declaration + if (blockScopeContainer.kind !== SyntaxKind.SourceFile && + blockScopeContainer.kind !== SyntaxKind.ModuleDeclaration && + !isFunctionLike(blockScopeContainer)) { + // We check first if the name is inside class declaration or class expression; if so give explicit message + // otherwise report generic error message. + const errorSpan = getErrorSpanForNode(file, node); + file.bindDiagnostics.push(createFileDiagnostic(file, errorSpan.start, errorSpan.length, + getStrictModeBlockScopeFunctionDeclarationMessage(node))); + } + } + } + function checkStrictModeNumericLiteral(node: LiteralExpression) { if (inStrictMode && node.isOctalLiteral) { file.bindDiagnostics.push(createDiagnosticForNode(node, Diagnostics.Octal_literals_are_not_allowed_in_strict_mode)); @@ -1221,14 +1608,23 @@ namespace ts { // Note: the node text must be exactly "use strict" or 'use strict'. It is not ok for the // string to contain unicode escapes (as per ES5). - return nodeText === "\"use strict\"" || nodeText === "'use strict'"; + return nodeText === '"use strict"' || nodeText === "'use strict'"; } function bindWorker(node: Node) { switch (node.kind) { /* Strict mode checks */ case SyntaxKind.Identifier: + case SyntaxKind.ThisKeyword: + if (currentFlow && (isExpression(node) || parent.kind === SyntaxKind.ShorthandPropertyAssignment)) { + node.flowNode = currentFlow; + } return checkStrictModeIdentifier(node); + case SyntaxKind.PropertyAccessExpression: + if (currentFlow && isNarrowableReference(node)) { + node.flowNode = currentFlow; + } + break; case SyntaxKind.BinaryExpression: if (isInJavaScriptFile(node)) { const specialKind = getSpecialPropertyAssignmentKind(node); @@ -1287,6 +1683,10 @@ namespace ts { case SyntaxKind.EnumMember: return bindPropertyOrMethodOrAccessor(node, SymbolFlags.EnumMember, SymbolFlags.EnumMemberExcludes); + case SyntaxKind.JsxSpreadAttribute: + hasJsxSpreadAttribute = true; + return; + case SyntaxKind.CallSignature: case SyntaxKind.ConstructSignature: case SyntaxKind.IndexSignature: @@ -1345,6 +1745,8 @@ namespace ts { case SyntaxKind.ImportSpecifier: case SyntaxKind.ExportSpecifier: return declareSymbolAndAddToSymbolTable(node, SymbolFlags.Alias, SymbolFlags.AliasExcludes); + case SyntaxKind.GlobalModuleExportDeclaration: + return bindGlobalModuleExportDeclaration(node); case SyntaxKind.ImportClause: return bindImportClause(node); case SyntaxKind.ExportDeclaration: @@ -1394,6 +1796,33 @@ namespace ts { } } + function bindGlobalModuleExportDeclaration(node: GlobalModuleExportDeclaration) { + if (node.modifiers && node.modifiers.length) { + file.bindDiagnostics.push(createDiagnosticForNode(node, Diagnostics.Modifiers_cannot_appear_here)); + } + + if (node.parent.kind !== SyntaxKind.SourceFile) { + file.bindDiagnostics.push(createDiagnosticForNode(node, Diagnostics.Global_module_exports_may_only_appear_at_top_level)); + return; + } + else { + const parent = node.parent as SourceFile; + + if (!isExternalModule(parent)) { + file.bindDiagnostics.push(createDiagnosticForNode(node, Diagnostics.Global_module_exports_may_only_appear_in_module_files)); + return; + } + + if (!parent.isDeclarationFile) { + file.bindDiagnostics.push(createDiagnosticForNode(node, Diagnostics.Global_module_exports_may_only_appear_in_declaration_files)); + return; + } + } + + file.symbol.globalExports = file.symbol.globalExports || {}; + declareSymbol(file.symbol.globalExports, file.symbol, node, SymbolFlags.Alias, SymbolFlags.AliasExcludes); + } + function bindExportDeclaration(node: ExportDeclaration) { if (!container.symbol || !container.symbol.exports) { // Export * in some sort of block construct @@ -1428,7 +1857,7 @@ namespace ts { function bindModuleExportsAssignment(node: BinaryExpression) { // 'module.exports = expr' assignment setCommonJsModuleIndicator(node); - bindExportAssignment(node); + declareSymbol(file.symbol.exports, file.symbol, node, SymbolFlags.Property | SymbolFlags.Export | SymbolFlags.ValueModule, SymbolFlags.None); } function bindThisPropertyAssignment(node: BinaryExpression) { @@ -1591,7 +2020,13 @@ namespace ts { } checkStrictModeFunctionName(node); - return declareSymbolAndAddToSymbolTable(node, SymbolFlags.Function, SymbolFlags.FunctionExcludes); + if (inStrictMode) { + checkStrictModeFunctionDeclaration(node); + return bindBlockScopedDeclaration(node, SymbolFlags.Function, SymbolFlags.FunctionExcludes); + } + else { + return declareSymbolAndAddToSymbolTable(node, SymbolFlags.Function, SymbolFlags.FunctionExcludes); + } } function bindFunctionExpression(node: FunctionExpression) { @@ -1623,132 +2058,53 @@ namespace ts { // reachability checks - function pushNamedLabel(name: Identifier): boolean { - initializeReachabilityStateIfNecessary(); - - if (hasProperty(labelIndexMap, name.text)) { - return false; - } - labelIndexMap[name.text] = labelStack.push(Reachability.Uninitialized) - 1; - return true; - } - - function pushImplicitLabel(): number { - initializeReachabilityStateIfNecessary(); - - const index = labelStack.push(Reachability.Uninitialized) - 1; - implicitLabels.push(index); - return index; - } - - function popNamedLabel(label: Identifier, outerState: Reachability): void { - const index = labelIndexMap[label.text]; - Debug.assert(index !== undefined); - Debug.assert(labelStack.length == index + 1); - - labelIndexMap[label.text] = undefined; - - setCurrentStateAtLabel(labelStack.pop(), outerState, label); - } - - function popImplicitLabel(implicitLabelIndex: number, outerState: Reachability): void { - if (labelStack.length !== implicitLabelIndex + 1) { - Debug.assert(false, `Label stack: ${labelStack.length}, index:${implicitLabelIndex}`); - } - - const i = implicitLabels.pop(); - - if (implicitLabelIndex !== i) { - Debug.assert(false, `i: ${i}, index: ${implicitLabelIndex}`); - } - - setCurrentStateAtLabel(labelStack.pop(), outerState, /*name*/ undefined); - } - - function setCurrentStateAtLabel(innerMergedState: Reachability, outerState: Reachability, label: Identifier): void { - if (innerMergedState === Reachability.Uninitialized) { - if (label && !options.allowUnusedLabels) { - file.bindDiagnostics.push(createDiagnosticForNode(label, Diagnostics.Unused_label)); - } - currentReachabilityState = outerState; - } - else { - currentReachabilityState = or(innerMergedState, outerState); - } - } - - function jumpToLabel(label: Identifier, outerState: Reachability): boolean { - initializeReachabilityStateIfNecessary(); - - const index = label ? labelIndexMap[label.text] : lastOrUndefined(implicitLabels); - if (index === undefined) { - // reference to unknown label or - // break/continue used outside of loops - return false; - } - const stateAtLabel = labelStack[index]; - labelStack[index] = stateAtLabel === Reachability.Uninitialized ? outerState : or(stateAtLabel, outerState); - return true; + function shouldReportErrorOnModuleDeclaration(node: ModuleDeclaration): boolean { + const instanceState = getModuleInstanceState(node); + return instanceState === ModuleInstanceState.Instantiated || (instanceState === ModuleInstanceState.ConstEnumOnly && options.preserveConstEnums); } function checkUnreachable(node: Node): boolean { - switch (currentReachabilityState) { - case Reachability.Unreachable: - const reportError = - // report error on all statements except empty ones - (isStatement(node) && node.kind !== SyntaxKind.EmptyStatement) || - // report error on class declarations - node.kind === SyntaxKind.ClassDeclaration || - // report error on instantiated modules or const-enums only modules if preserveConstEnums is set - (node.kind === SyntaxKind.ModuleDeclaration && shouldReportErrorOnModuleDeclaration(node)) || - // report error on regular enums and const enums if preserveConstEnums is set - (node.kind === SyntaxKind.EnumDeclaration && (!isConstEnumDeclaration(node) || options.preserveConstEnums)); + if (currentFlow.kind !== FlowKind.Unreachable) { + return false; + } + if (currentFlow === unreachableFlow) { + const reportError = + // report error on all statements except empty ones + (isStatement(node) && node.kind !== SyntaxKind.EmptyStatement) || + // report error on class declarations + node.kind === SyntaxKind.ClassDeclaration || + // report error on instantiated modules or const-enums only modules if preserveConstEnums is set + (node.kind === SyntaxKind.ModuleDeclaration && shouldReportErrorOnModuleDeclaration(node)) || + // report error on regular enums and const enums if preserveConstEnums is set + (node.kind === SyntaxKind.EnumDeclaration && (!isConstEnumDeclaration(node) || options.preserveConstEnums)); - if (reportError) { - currentReachabilityState = Reachability.ReportedUnreachable; + if (reportError) { + currentFlow = reportedUnreachableFlow; - // unreachable code is reported if - // - user has explicitly asked about it AND - // - statement is in not ambient context (statements in ambient context is already an error - // so we should not report extras) AND - // - node is not variable statement OR - // - node is block scoped variable statement OR - // - node is not block scoped variable statement and at least one variable declaration has initializer - // Rationale: we don't want to report errors on non-initialized var's since they are hoisted - // On the other side we do want to report errors on non-initialized 'lets' because of TDZ - const reportUnreachableCode = - !options.allowUnreachableCode && - !isInAmbientContext(node) && - ( - node.kind !== SyntaxKind.VariableStatement || - getCombinedNodeFlags((node).declarationList) & NodeFlags.BlockScoped || - forEach((node).declarationList.declarations, d => d.initializer) - ); + // unreachable code is reported if + // - user has explicitly asked about it AND + // - statement is in not ambient context (statements in ambient context is already an error + // so we should not report extras) AND + // - node is not variable statement OR + // - node is block scoped variable statement OR + // - node is not block scoped variable statement and at least one variable declaration has initializer + // Rationale: we don't want to report errors on non-initialized var's since they are hoisted + // On the other side we do want to report errors on non-initialized 'lets' because of TDZ + const reportUnreachableCode = + !options.allowUnreachableCode && + !isInAmbientContext(node) && + ( + node.kind !== SyntaxKind.VariableStatement || + getCombinedNodeFlags((node).declarationList) & NodeFlags.BlockScoped || + forEach((node).declarationList.declarations, d => d.initializer) + ); - if (reportUnreachableCode) { - errorOnFirstToken(node, Diagnostics.Unreachable_code_detected); - } + if (reportUnreachableCode) { + errorOnFirstToken(node, Diagnostics.Unreachable_code_detected); } - case Reachability.ReportedUnreachable: - return true; - default: - return false; + } } - - function shouldReportErrorOnModuleDeclaration(node: ModuleDeclaration): boolean { - const instanceState = getModuleInstanceState(node); - return instanceState === ModuleInstanceState.Instantiated || (instanceState === ModuleInstanceState.ConstEnumOnly && options.preserveConstEnums); - } - } - - function initializeReachabilityStateIfNecessary(): void { - if (labelIndexMap) { - return; - } - currentReachabilityState = Reachability.Reachable; - labelIndexMap = {}; - labelStack = []; - implicitLabels = []; + return true; } } } diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index b5526e204ca..ef53b6e7d61 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -5,6 +5,7 @@ namespace ts { let nextSymbolId = 1; let nextNodeId = 1; let nextMergeId = 1; + let nextFlowId = 1; export function getNodeId(node: Node): number { if (!node.id) { @@ -51,6 +52,7 @@ namespace ts { const languageVersion = compilerOptions.target || ScriptTarget.ES3; const modulekind = getEmitModuleKind(compilerOptions); const allowSyntheticDefaultImports = typeof compilerOptions.allowSyntheticDefaultImports !== "undefined" ? compilerOptions.allowSyntheticDefaultImports : modulekind === ModuleKind.System; + const strictNullChecks = compilerOptions.strictNullChecks; const emitResolver = createResolver(); @@ -68,10 +70,7 @@ namespace ts { isUnknownSymbol: symbol => symbol === unknownSymbol, getDiagnostics, getGlobalDiagnostics, - - // The language service will always care about the narrowed type of a symbol, because that is - // the type the language says the symbol should have. - getTypeOfSymbolAtLocation: getNarrowedTypeOfSymbol, + getTypeOfSymbolAtLocation, getSymbolsOfParameterPropertyDeclaration, getDeclaredTypeOfSymbol, getPropertiesOfType, @@ -85,6 +84,7 @@ namespace ts { getShorthandAssignmentValueSymbol, getExportSpecifierLocalTargetSymbol, getTypeAtLocation: getTypeOfNode, + getPropertySymbolOfDestructuringAssignment, typeToString, getSymbolDisplayBuilder, symbolToString, @@ -109,18 +109,20 @@ namespace ts { const unknownSymbol = createSymbol(SymbolFlags.Property | SymbolFlags.Transient, "unknown"); const resolvingSymbol = createSymbol(SymbolFlags.Transient, "__resolving__"); + const nullableWideningFlags = strictNullChecks ? 0 : TypeFlags.ContainsUndefinedOrNull; const anyType = createIntrinsicType(TypeFlags.Any, "any"); const stringType = createIntrinsicType(TypeFlags.String, "string"); const numberType = createIntrinsicType(TypeFlags.Number, "number"); const booleanType = createIntrinsicType(TypeFlags.Boolean, "boolean"); const esSymbolType = createIntrinsicType(TypeFlags.ESSymbol, "symbol"); const voidType = createIntrinsicType(TypeFlags.Void, "void"); - const undefinedType = createIntrinsicType(TypeFlags.Undefined | TypeFlags.ContainsUndefinedOrNull, "undefined"); - const nullType = createIntrinsicType(TypeFlags.Null | TypeFlags.ContainsUndefinedOrNull, "null"); + const undefinedType = createIntrinsicType(TypeFlags.Undefined | nullableWideningFlags, "undefined"); + const nullType = createIntrinsicType(TypeFlags.Null | nullableWideningFlags, "null"); + const emptyArrayElementType = createIntrinsicType(TypeFlags.Undefined | TypeFlags.ContainsUndefinedOrNull, "undefined"); const unknownType = createIntrinsicType(TypeFlags.Any, "unknown"); const emptyObjectType = createAnonymousType(undefined, emptySymbols, emptyArray, emptyArray, undefined, undefined); - const emptyUnionType = emptyObjectType; + const emptyUnionType = createAnonymousType(undefined, emptySymbols, emptyArray, emptyArray, undefined, undefined); const emptyGenericType = createAnonymousType(undefined, emptySymbols, emptyArray, emptyArray, undefined, undefined); emptyGenericType.instantiations = {}; @@ -131,14 +133,14 @@ namespace ts { const noConstraintType = createAnonymousType(undefined, emptySymbols, emptyArray, emptyArray, undefined, undefined); - const anySignature = createSignature(undefined, undefined, emptyArray, anyType, /*typePredicate*/ undefined, 0, /*hasRestParameter*/ false, /*hasStringLiterals*/ false); - const unknownSignature = createSignature(undefined, undefined, emptyArray, unknownType, /*typePredicate*/ undefined, 0, /*hasRestParameter*/ false, /*hasStringLiterals*/ false); + const anySignature = createSignature(undefined, undefined, undefined, emptyArray, anyType, /*typePredicate*/ undefined, 0, /*hasRestParameter*/ false, /*hasStringLiterals*/ false); + const unknownSignature = createSignature(undefined, undefined, undefined, emptyArray, unknownType, /*typePredicate*/ undefined, 0, /*hasRestParameter*/ false, /*hasStringLiterals*/ false); const enumNumberIndexInfo = createIndexInfo(stringType, /*isReadonly*/ true); const globals: SymbolTable = {}; - let globalESSymbolConstructorSymbol: Symbol; + let getGlobalESSymbolConstructorSymbol: () => Symbol; let getGlobalPromiseConstructorSymbol: () => Symbol; @@ -150,14 +152,19 @@ namespace ts { let globalNumberType: ObjectType; let globalBooleanType: ObjectType; let globalRegExpType: ObjectType; - let globalTemplateStringsArrayType: ObjectType; - let globalESSymbolType: ObjectType; - let globalIterableType: GenericType; - let globalIteratorType: GenericType; - let globalIterableIteratorType: GenericType; - let anyArrayType: Type; let anyReadonlyArrayType: Type; + + // The library files are only loaded when the feature is used. + // This allows users to just specify library files they want to used through --lib + // and they will not get an error from not having unrelated library files + let getGlobalTemplateStringsArrayType: () => ObjectType; + + let getGlobalESSymbolType: () => ObjectType; + let getGlobalIterableType: () => GenericType; + let getGlobalIteratorType: () => GenericType; + let getGlobalIterableIteratorType: () => GenericType; + let getGlobalClassDecoratorType: () => ObjectType; let getGlobalParameterDecoratorType: () => ObjectType; let getGlobalPropertyDecoratorType: () => ObjectType; @@ -174,6 +181,9 @@ namespace ts { let deferredNodes: Node[]; + let flowStackStart = 0; + let flowStackCount = 0; + const tupleTypes: Map = {}; const unionTypes: Map = {}; const intersectionTypes: Map = {}; @@ -186,32 +196,84 @@ namespace ts { const mergedSymbols: Symbol[] = []; const symbolLinks: SymbolLinks[] = []; const nodeLinks: NodeLinks[] = []; + const flowTypeCaches: Map[] = []; + const flowStackNodes: FlowNode[] = []; + const flowStackCacheKeys: string[] = []; const potentialThisCollisions: Node[] = []; const awaitedTypeStack: number[] = []; const diagnostics = createDiagnosticCollection(); - const primitiveTypeInfo: Map<{ type: Type; flags: TypeFlags }> = { - "string": { - type: stringType, - flags: TypeFlags.StringLike - }, - "number": { - type: numberType, - flags: TypeFlags.NumberLike - }, - "boolean": { - type: booleanType, - flags: TypeFlags.Boolean - }, - "symbol": { - type: esSymbolType, - flags: TypeFlags.ESSymbol - }, - "undefined": { - type: undefinedType, - flags: TypeFlags.ContainsUndefinedOrNull - } + const enum TypeFacts { + None = 0, + TypeofEQString = 1 << 0, // typeof x === "string" + TypeofEQNumber = 1 << 1, // typeof x === "number" + TypeofEQBoolean = 1 << 2, // typeof x === "boolean" + TypeofEQSymbol = 1 << 3, // typeof x === "symbol" + TypeofEQObject = 1 << 4, // typeof x === "object" + TypeofEQFunction = 1 << 5, // typeof x === "function" + TypeofEQHostObject = 1 << 6, // typeof x === "xxx" + TypeofNEString = 1 << 7, // typeof x !== "string" + TypeofNENumber = 1 << 8, // typeof x !== "number" + TypeofNEBoolean = 1 << 9, // typeof x !== "boolean" + TypeofNESymbol = 1 << 10, // typeof x !== "symbol" + TypeofNEObject = 1 << 11, // typeof x !== "object" + TypeofNEFunction = 1 << 12, // typeof x !== "function" + TypeofNEHostObject = 1 << 13, // typeof x !== "xxx" + EQUndefined = 1 << 14, // x === undefined + EQNull = 1 << 15, // x === null + EQUndefinedOrNull = 1 << 16, // x == undefined / x == null + NEUndefined = 1 << 17, // x !== undefined + NENull = 1 << 18, // x !== null + NEUndefinedOrNull = 1 << 19, // x != undefined / x != null + Truthy = 1 << 20, // x + Falsy = 1 << 21, // !x + All = (1 << 22) - 1, + // The following members encode facts about particular kinds of types for use in the getTypeFacts function. + // The presence of a particular fact means that the given test is true for some (and possibly all) values + // of that kind of type. + StringStrictFacts = TypeofEQString | TypeofNENumber | TypeofNEBoolean | TypeofNESymbol | TypeofNEObject | TypeofNEFunction | TypeofNEHostObject | NEUndefined | NENull | NEUndefinedOrNull | Truthy | Falsy, + StringFacts = StringStrictFacts | EQUndefined | EQNull | EQUndefinedOrNull, + NumberStrictFacts = TypeofEQNumber | TypeofNEString | TypeofNEBoolean | TypeofNESymbol | TypeofNEObject | TypeofNEFunction | TypeofNEHostObject | NEUndefined | NENull | NEUndefinedOrNull | Truthy | Falsy, + NumberFacts = NumberStrictFacts | EQUndefined | EQNull | EQUndefinedOrNull, + BooleanStrictFacts = TypeofEQBoolean | TypeofNEString | TypeofNENumber | TypeofNESymbol | TypeofNEObject | TypeofNEFunction | TypeofNEHostObject | NEUndefined | NENull | NEUndefinedOrNull | Truthy | Falsy, + BooleanFacts = BooleanStrictFacts | EQUndefined | EQNull | EQUndefinedOrNull, + SymbolStrictFacts = TypeofEQSymbol | TypeofNEString | TypeofNENumber | TypeofNEBoolean | TypeofNEObject | TypeofNEFunction | TypeofNEHostObject | NEUndefined | NENull | NEUndefinedOrNull | Truthy, + SymbolFacts = SymbolStrictFacts | EQUndefined | EQNull | EQUndefinedOrNull | Falsy, + ObjectStrictFacts = TypeofEQObject | TypeofEQHostObject | TypeofNEString | TypeofNENumber | TypeofNEBoolean | TypeofNESymbol | TypeofNEFunction | NEUndefined | NENull | NEUndefinedOrNull | Truthy, + ObjectFacts = ObjectStrictFacts | EQUndefined | EQNull | EQUndefinedOrNull | Falsy, + FunctionStrictFacts = TypeofEQFunction | TypeofEQHostObject | TypeofNEString | TypeofNENumber | TypeofNEBoolean | TypeofNESymbol | TypeofNEObject | NEUndefined | NENull | NEUndefinedOrNull | Truthy, + FunctionFacts = FunctionStrictFacts | EQUndefined | EQNull | EQUndefinedOrNull | Falsy, + UndefinedFacts = TypeofNEString | TypeofNENumber | TypeofNEBoolean | TypeofNESymbol | TypeofNEObject | TypeofNEFunction | TypeofNEHostObject | EQUndefined | EQUndefinedOrNull | NENull | Falsy, + NullFacts = TypeofEQObject | TypeofNEString | TypeofNENumber | TypeofNEBoolean | TypeofNESymbol | TypeofNEFunction | TypeofNEHostObject | EQNull | EQUndefinedOrNull | NEUndefined | Falsy, + } + + const typeofEQFacts: Map = { + "string": TypeFacts.TypeofEQString, + "number": TypeFacts.TypeofEQNumber, + "boolean": TypeFacts.TypeofEQBoolean, + "symbol": TypeFacts.TypeofEQSymbol, + "undefined": TypeFacts.EQUndefined, + "object": TypeFacts.TypeofEQObject, + "function": TypeFacts.TypeofEQFunction + }; + + const typeofNEFacts: Map = { + "string": TypeFacts.TypeofNEString, + "number": TypeFacts.TypeofNENumber, + "boolean": TypeFacts.TypeofNEBoolean, + "symbol": TypeFacts.TypeofNESymbol, + "undefined": TypeFacts.NEUndefined, + "object": TypeFacts.TypeofNEObject, + "function": TypeFacts.TypeofNEFunction + }; + + const typeofTypesByName: Map = { + "string": stringType, + "number": numberType, + "boolean": booleanType, + "symbol": esSymbolType, + "undefined": undefinedType }; let jsxElementType: ObjectType; @@ -229,6 +291,7 @@ namespace ts { const subtypeRelation: Map = {}; const assignableRelation: Map = {}; + const comparableRelation: Map = {}; const identityRelation: Map = {}; // This is for caching the result of getSymbolDisplayBuilder. Do not access directly. @@ -378,7 +441,7 @@ namespace ts { function mergeModuleAugmentation(moduleName: LiteralExpression): void { const moduleAugmentation = moduleName.parent; - if (moduleAugmentation.symbol.valueDeclaration !== moduleAugmentation) { + if (moduleAugmentation.symbol.declarations[0] !== moduleAugmentation) { // this is a combined symbol for multiple augmentations within the same file. // its symbol already has accumulated information for all declarations // so we need to add it just once - do the work only for first declaration @@ -391,7 +454,11 @@ namespace ts { } else { // find a module that about to be augmented - let mainModule = resolveExternalModuleNameWorker(moduleName, moduleName, Diagnostics.Invalid_module_name_in_augmentation_module_0_cannot_be_found); + // do not validate names of augmentations that are defined in ambient context + const moduleNotFoundError = !isInAmbientContext(moduleName.parent.parent) + ? Diagnostics.Invalid_module_name_in_augmentation_module_0_cannot_be_found + : undefined; + let mainModule = resolveExternalModuleNameWorker(moduleName, moduleName, moduleNotFoundError); if (!mainModule) { return; } @@ -892,8 +959,12 @@ namespace ts { function getTargetOfImportClause(node: ImportClause): Symbol { const moduleSymbol = resolveExternalModuleName(node, (node.parent).moduleSpecifier); + if (moduleSymbol) { - const exportDefaultSymbol = resolveSymbol(moduleSymbol.exports["default"]); + const exportDefaultSymbol = moduleSymbol.exports["export="] ? + getPropertyOfType(getTypeOfSymbol(moduleSymbol.exports["export="]), "default") : + resolveSymbol(moduleSymbol.exports["default"]); + if (!exportDefaultSymbol && !allowSyntheticDefaultImports) { error(node.name, Diagnostics.Module_0_has_no_default_export, symbolToString(moduleSymbol)); } @@ -964,8 +1035,15 @@ namespace ts { if (targetSymbol) { const name = specifier.propertyName || specifier.name; if (name.text) { + let symbolFromVariable: Symbol; + // First check if module was specified with "export=". If so, get the member from the resolved type + if (moduleSymbol && moduleSymbol.exports && moduleSymbol.exports["export="]) { + symbolFromVariable = getPropertyOfType(getTypeOfSymbol(targetSymbol), name.text); + } + else { + symbolFromVariable = getPropertyOfVariable(targetSymbol, name.text); + } const symbolFromModule = getExportOfModule(targetSymbol, name.text); - const symbolFromVariable = getPropertyOfVariable(targetSymbol, name.text); const symbol = symbolFromModule && symbolFromVariable ? combineValueAndTypeSymbols(symbolFromVariable, symbolFromModule) : symbolFromModule || symbolFromVariable; @@ -981,6 +1059,10 @@ namespace ts { return getExternalModuleMember(node.parent.parent.parent, node); } + function getTargetOfGlobalModuleExportDeclaration(node: GlobalModuleExportDeclaration): Symbol { + return resolveExternalModuleSymbol(node.parent.symbol); + } + function getTargetOfExportSpecifier(node: ExportSpecifier): Symbol { return (node.parent.parent).moduleSpecifier ? getExternalModuleMember(node.parent.parent, node) : @@ -1005,6 +1087,8 @@ namespace ts { return getTargetOfExportSpecifier(node); case SyntaxKind.ExportAssignment: return getTargetOfExportAssignment(node); + case SyntaxKind.GlobalModuleExportDeclaration: + return getTargetOfGlobalModuleExportDeclaration(node); } } @@ -1159,7 +1243,7 @@ namespace ts { const isRelative = isExternalModuleNameRelative(moduleName); if (!isRelative) { - const symbol = getSymbol(globals, "\"" + moduleName + "\"", SymbolFlags.ValueModule); + const symbol = getSymbol(globals, '"' + moduleName + '"', SymbolFlags.ValueModule); if (symbol) { // merged symbol is module declaration symbol combined with all augmentations return getMergedSymbol(symbol); @@ -1427,12 +1511,6 @@ namespace ts { return result; } break; - case SyntaxKind.ClassDeclaration: - case SyntaxKind.InterfaceDeclaration: - if (result = callback(getSymbolOfNode(location).members)) { - return result; - } - break; } } @@ -1498,7 +1576,9 @@ namespace ts { } if (symbol) { - return forEachSymbolTableInScope(enclosingDeclaration, getAccessibleSymbolChainFromSymbolTable); + if (!(isPropertyOrMethodDeclarationSymbol(symbol))) { + return forEachSymbolTableInScope(enclosingDeclaration, getAccessibleSymbolChainFromSymbolTable); + } } } @@ -1531,6 +1611,24 @@ namespace ts { return qualify; } + function isPropertyOrMethodDeclarationSymbol(symbol: Symbol) { + if (symbol.declarations && symbol.declarations.length) { + for (const declaration of symbol.declarations) { + switch (declaration.kind) { + case SyntaxKind.PropertyDeclaration: + case SyntaxKind.MethodDeclaration: + case SyntaxKind.GetAccessor: + case SyntaxKind.SetAccessor: + continue; + default: + return false; + } + } + return true; + } + return false; + } + function isSymbolAccessible(symbol: Symbol, enclosingDeclaration: Node, meaning: SymbolFlags): SymbolAccessibilityResult { if (symbol && enclosingDeclaration && !(symbol.flags & SymbolFlags.TypeParameter)) { const initialSymbol = symbol; @@ -1642,7 +1740,7 @@ namespace ts { function isEntityNameVisible(entityName: EntityName | Expression, enclosingDeclaration: Node): SymbolVisibilityResult { // get symbol of the first identifier of the entityName let meaning: SymbolFlags; - if (entityName.parent.kind === SyntaxKind.TypeQuery) { + if (entityName.parent.kind === SyntaxKind.TypeQuery || isExpressionWithTypeArgumentsInClassExtendsClause(entityName.parent)) { // Typeof value meaning = SymbolFlags.Value | SymbolFlags.ExportValue; } @@ -1770,12 +1868,38 @@ namespace ts { /** * Writes only the name of the symbol out to the writer. Uses the original source text - * for the name of the symbol if it is available to match how the user inputted the name. + * for the name of the symbol if it is available to match how the user wrote the name. */ function appendSymbolNameOnly(symbol: Symbol, writer: SymbolWriter): void { writer.writeSymbol(getNameOfSymbol(symbol), symbol); } + /** + * Writes a property access or element access with the name of the symbol out to the writer. + * Uses the original source text for the name of the symbol if it is available to match how the user wrote the name, + * ensuring that any names written with literals use element accesses. + */ + function appendPropertyOrElementAccessForSymbol(symbol: Symbol, writer: SymbolWriter): void { + const symbolName = getNameOfSymbol(symbol); + const firstChar = symbolName.charCodeAt(0); + const needsElementAccess = !isIdentifierStart(firstChar, languageVersion); + + if (needsElementAccess) { + writePunctuation(writer, SyntaxKind.OpenBracketToken); + if (isSingleOrDoubleQuote(firstChar)) { + writer.writeStringLiteral(symbolName); + } + else { + writer.writeSymbol(symbolName, symbol); + } + writePunctuation(writer, SyntaxKind.CloseBracketToken); + } + else { + writePunctuation(writer, SyntaxKind.DotToken); + writer.writeSymbol(symbolName, symbol); + } + } + /** * Enclosing declaration is optional when we don't want to get qualified name in the enclosing declaration scope * Meaning needs to be specified if the enclosing declaration is given @@ -1794,10 +1918,12 @@ namespace ts { buildTypeParameterDisplayFromSymbol(parentSymbol, writer, enclosingDeclaration); } } - writePunctuation(writer, SyntaxKind.DotToken); + appendPropertyOrElementAccessForSymbol(symbol, writer); + } + else { + appendSymbolNameOnly(symbol, writer); } parentSymbol = symbol; - appendSymbolNameOnly(symbol, writer); } // const the writer know we just wrote out a symbol. The declaration emitter writer uses @@ -1888,7 +2014,12 @@ namespace ts { writeUnionOrIntersectionType(type, flags); } else if (type.flags & TypeFlags.Anonymous) { - writeAnonymousType(type, flags); + if (type === emptyUnionType) { + writer.writeKeyword("nothing"); + } + else { + writeAnonymousType(type, flags); + } } else if (type.flags & TypeFlags.StringLiteral) { writer.writeStringLiteral(`"${escapeString((type).text)}"`); @@ -1924,7 +2055,7 @@ namespace ts { } if (pos < end) { writePunctuation(writer, SyntaxKind.LessThanToken); - writeType(typeArguments[pos], TypeFormatFlags.None); + writeType(typeArguments[pos], TypeFormatFlags.InFirstTypeArgument); pos++; while (pos < end) { writePunctuation(writer, SyntaxKind.CommaToken); @@ -1992,10 +2123,10 @@ namespace ts { if (symbol) { // Always use 'typeof T' for type of class, enum, and module objects if (symbol.flags & (SymbolFlags.Class | SymbolFlags.Enum | SymbolFlags.ValueModule)) { - writeTypeofSymbol(type, flags); + writeTypeOfSymbol(type, flags); } else if (shouldWriteTypeOfFunctionSymbol()) { - writeTypeofSymbol(type, flags); + writeTypeOfSymbol(type, flags); } else if (contains(symbolStack, symbol)) { // If type is an anonymous type literal in a type alias declaration, use type alias name @@ -2040,7 +2171,7 @@ namespace ts { } } - function writeTypeofSymbol(type: ObjectType, typeFormatFlags?: TypeFormatFlags) { + function writeTypeOfSymbol(type: ObjectType, typeFormatFlags?: TypeFormatFlags) { writeKeyword(writer, SyntaxKind.TypeOfKeyword); writeSpace(writer); buildSymbolDisplay(type.symbol, writer, enclosingDeclaration, SymbolFlags.Value, SymbolFormatFlags.None, typeFormatFlags); @@ -2077,6 +2208,19 @@ namespace ts { } } + function shouldAddParenthesisAroundFunctionType(callSignature: Signature, flags: TypeFormatFlags) { + if (flags & TypeFormatFlags.InElementType) { + return true; + } + else if (flags & TypeFormatFlags.InFirstTypeArgument) { + // Add parenthesis around function type for the first type argument to avoid ambiguity + const typeParameters = callSignature.target && (flags & TypeFormatFlags.WriteTypeArgumentsOfSignature) ? + callSignature.target.typeParameters : callSignature.typeParameters; + return typeParameters && typeParameters.length !== 0; + } + return false; + } + function writeLiteralType(type: ObjectType, flags: TypeFormatFlags) { const resolved = resolveStructuredTypeMembers(type); if (!resolved.properties.length && !resolved.stringIndexInfo && !resolved.numberIndexInfo) { @@ -2087,11 +2231,12 @@ namespace ts { } if (resolved.callSignatures.length === 1 && !resolved.constructSignatures.length) { - if (flags & TypeFormatFlags.InElementType) { + const parenthesizeSignature = shouldAddParenthesisAroundFunctionType(resolved.callSignatures[0], flags); + if (parenthesizeSignature) { writePunctuation(writer, SyntaxKind.OpenParenToken); } buildSignatureDisplay(resolved.callSignatures[0], writer, enclosingDeclaration, globalFlagsToPass | TypeFormatFlags.WriteArrowStyleSignature, /*kind*/ undefined, symbolStack); - if (flags & TypeFormatFlags.InElementType) { + if (parenthesizeSignature) { writePunctuation(writer, SyntaxKind.CloseParenToken); } return; @@ -2251,21 +2396,29 @@ namespace ts { function buildDisplayForTypeArgumentsAndDelimiters(typeParameters: TypeParameter[], mapper: TypeMapper, writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags, symbolStack?: Symbol[]) { if (typeParameters && typeParameters.length) { writePunctuation(writer, SyntaxKind.LessThanToken); + let flags = TypeFormatFlags.InFirstTypeArgument; for (let i = 0; i < typeParameters.length; i++) { if (i > 0) { writePunctuation(writer, SyntaxKind.CommaToken); writeSpace(writer); + flags = TypeFormatFlags.None; } - buildTypeDisplay(mapper(typeParameters[i]), writer, enclosingDeclaration, TypeFormatFlags.None); + buildTypeDisplay(mapper(typeParameters[i]), writer, enclosingDeclaration, flags); } writePunctuation(writer, SyntaxKind.GreaterThanToken); } } - function buildDisplayForParametersAndDelimiters(parameters: Symbol[], writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags, symbolStack?: Symbol[]) { + function buildDisplayForParametersAndDelimiters(thisType: Type, parameters: Symbol[], writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags, symbolStack?: Symbol[]) { writePunctuation(writer, SyntaxKind.OpenParenToken); + if (thisType) { + writeKeyword(writer, SyntaxKind.ThisKeyword); + writePunctuation(writer, SyntaxKind.ColonToken); + writeSpace(writer); + buildTypeDisplay(thisType, writer, enclosingDeclaration, flags, symbolStack); + } for (let i = 0; i < parameters.length; i++) { - if (i > 0) { + if (i > 0 || thisType) { writePunctuation(writer, SyntaxKind.CommaToken); writeSpace(writer); } @@ -2321,7 +2474,7 @@ namespace ts { buildDisplayForTypeParametersAndDelimiters(signature.typeParameters, writer, enclosingDeclaration, flags, symbolStack); } - buildDisplayForParametersAndDelimiters(signature.parameters, writer, enclosingDeclaration, flags, symbolStack); + buildDisplayForParametersAndDelimiters(signature.thisType, signature.parameters, writer, enclosingDeclaration, flags, symbolStack); buildReturnTypeDisplay(signature, writer, enclosingDeclaration, flags, symbolStack); } @@ -2429,7 +2582,7 @@ namespace ts { return false; default: - Debug.fail("isDeclarationVisible unknown: SyntaxKind: " + node.kind); + return false; } } } @@ -2604,7 +2757,7 @@ namespace ts { return name.kind === SyntaxKind.ComputedPropertyName && !isStringOrNumericLiteral((name).expression.kind); } - // Return the inferred type for a binding element + /** Return the inferred type for a binding element */ function getTypeForBindingElement(declaration: BindingElement): Type { const pattern = declaration.parent; const parentType = getTypeForBindingElementParent(pattern.parent); @@ -2630,6 +2783,9 @@ namespace ts { // computed properties with non-literal names are treated as 'any' return anyType; } + if (declaration.initializer) { + getContextualType(declaration.initializer); + } // Use type of the specified property, or otherwise, for a numeric name, the type of the numeric index signature, // or otherwise the type of the string index signature. @@ -2669,6 +2825,11 @@ namespace ts { type = createArrayType(elementType); } } + // In strict null checking mode, if a default value of a non-undefined type is specified, remove + // undefined from the final type. + if (strictNullChecks && declaration.initializer && !(getNullableKind(checkExpressionCached(declaration.initializer)) & TypeFlags.Undefined)) { + type = getTypeWithFacts(type, TypeFacts.NEUndefined); + } return type; } @@ -2739,7 +2900,8 @@ namespace ts { // Use type from type annotation if one is present if (declaration.type) { - return getTypeFromTypeNode(declaration.type); + const type = getTypeFromTypeNode(declaration.type); + return strictNullChecks && declaration.questionToken ? addNullableKind(type, TypeFlags.Undefined) : type; } if (declaration.kind === SyntaxKind.Parameter) { @@ -2752,9 +2914,11 @@ namespace ts { } } // Use contextual parameter type if one is available - const type = getContextuallyTypedParameterType(declaration); + const type = declaration.symbol.name === "this" + ? getContextuallyTypedThisType(func) + : getContextuallyTypedParameterType(declaration); if (type) { - return type; + return strictNullChecks && declaration.questionToken ? addNullableKind(type, TypeFlags.Undefined) : type; } } @@ -2782,11 +2946,16 @@ namespace ts { // pattern. Otherwise, it is the type any. function getTypeFromBindingElement(element: BindingElement, includePatternInType?: boolean): Type { if (element.initializer) { - return getWidenedType(checkExpressionCached(element.initializer)); + const type = checkExpressionCached(element.initializer); + reportErrorsFromWidening(element, type); + return getWidenedType(type); } if (isBindingPattern(element.name)) { return getTypeFromBindingPattern(element.name, includePatternInType); } + if (compilerOptions.noImplicitAny && !declarationBelongsToPrivateAmbientMember(element)) { + reportImplicitAnyError(element, anyType); + } return anyType; } @@ -2877,14 +3046,19 @@ namespace ts { // Report implicit any errors unless this is a private property within an ambient declaration if (reportErrors && compilerOptions.noImplicitAny) { - const root = getRootDeclaration(declaration); - if (!isPrivateWithinAmbient(root) && !(root.kind === SyntaxKind.Parameter && isPrivateWithinAmbient(root.parent))) { + if (!declarationBelongsToPrivateAmbientMember(declaration)) { reportImplicitAnyError(declaration, type); } } return type; } + function declarationBelongsToPrivateAmbientMember(declaration: VariableLikeDeclaration) { + const root = getRootDeclaration(declaration); + const memberDeclaration = root.kind === SyntaxKind.Parameter ? root.parent : root; + return isPrivateWithinAmbient(memberDeclaration); + } + function getTypeOfVariableOrParameterOrProperty(symbol: Symbol): Type { const links = getSymbolLinks(symbol); if (!links.type) { @@ -2955,12 +3129,22 @@ namespace ts { function getTypeOfAccessors(symbol: Symbol): Type { const links = getSymbolLinks(symbol); if (!links.type) { + const getter = getDeclarationOfKind(symbol, SyntaxKind.GetAccessor); + const setter = getDeclarationOfKind(symbol, SyntaxKind.SetAccessor); + + if (getter && getter.flags & NodeFlags.JavaScriptFile) { + const jsDocType = getTypeForVariableLikeDeclarationFromJSDocComment(getter); + if (jsDocType) { + return links.type = jsDocType; + } + } + if (!pushTypeResolution(symbol, TypeSystemPropertyName.Type)) { return unknownType; } - const getter = getDeclarationOfKind(symbol, SyntaxKind.GetAccessor); - const setter = getDeclarationOfKind(symbol, SyntaxKind.SetAccessor); + let type: Type; + // First try to see if the user specified a return type on the get-accessor. const getterReturnType = getAnnotatedAccessorType(getter); if (getterReturnType) { @@ -3454,6 +3638,8 @@ namespace ts { case SyntaxKind.BooleanKeyword: case SyntaxKind.SymbolKeyword: case SyntaxKind.VoidKeyword: + case SyntaxKind.UndefinedKeyword: + case SyntaxKind.NullKeyword: case SyntaxKind.StringLiteralType: return true; case SyntaxKind.ArrayType: @@ -3598,12 +3784,13 @@ namespace ts { resolveObjectTypeMembers(type, source, typeParameters, typeArguments); } - function createSignature(declaration: SignatureDeclaration, typeParameters: TypeParameter[], parameters: Symbol[], + function createSignature(declaration: SignatureDeclaration, typeParameters: TypeParameter[], thisType: Type, parameters: Symbol[], resolvedReturnType: Type, typePredicate: TypePredicate, minArgumentCount: number, hasRestParameter: boolean, hasStringLiterals: boolean): Signature { const sig = new Signature(checker); sig.declaration = declaration; sig.typeParameters = typeParameters; sig.parameters = parameters; + sig.thisType = thisType; sig.resolvedReturnType = resolvedReturnType; sig.typePredicate = typePredicate; sig.minArgumentCount = minArgumentCount; @@ -3613,7 +3800,7 @@ namespace ts { } function cloneSignature(sig: Signature): Signature { - return createSignature(sig.declaration, sig.typeParameters, sig.parameters, sig.resolvedReturnType, + return createSignature(sig.declaration, sig.typeParameters, sig.thisType, sig.parameters, sig.resolvedReturnType, sig.typePredicate, sig.minArgumentCount, sig.hasRestParameter, sig.hasStringLiterals); } @@ -3621,7 +3808,7 @@ namespace ts { const baseConstructorType = getBaseConstructorTypeOfClass(classType); const baseSignatures = getSignaturesOfType(baseConstructorType, SignatureKind.Construct); if (baseSignatures.length === 0) { - return [createSignature(undefined, classType.localTypeParameters, emptyArray, classType, /*typePredicate*/ undefined, 0, /*hasRestParameter*/ false, /*hasStringLiterals*/ false)]; + return [createSignature(undefined, classType.localTypeParameters, undefined, emptyArray, classType, /*typePredicate*/ undefined, 0, /*hasRestParameter*/ false, /*hasStringLiterals*/ false)]; } const baseTypeNode = getBaseTypeNodeOfClass(classType); const typeArguments = map(baseTypeNode.typeArguments, getTypeFromTypeNode); @@ -3658,9 +3845,9 @@ namespace ts { setObjectTypeMembers(type, members, arrayType.callSignatures, arrayType.constructSignatures, arrayType.stringIndexInfo, arrayType.numberIndexInfo); } - function findMatchingSignature(signatureList: Signature[], signature: Signature, partialMatch: boolean, ignoreReturnTypes: boolean): Signature { + function findMatchingSignature(signatureList: Signature[], signature: Signature, partialMatch: boolean, ignoreThisTypes: boolean, ignoreReturnTypes: boolean): Signature { for (const s of signatureList) { - if (compareSignaturesIdentical(s, signature, partialMatch, ignoreReturnTypes, compareTypesIdentical)) { + if (compareSignaturesIdentical(s, signature, partialMatch, ignoreThisTypes, ignoreReturnTypes, compareTypesIdentical)) { return s; } } @@ -3674,7 +3861,7 @@ namespace ts { return undefined; } for (let i = 1; i < signatureLists.length; i++) { - if (!findMatchingSignature(signatureLists[i], signature, /*partialMatch*/ false, /*ignoreReturnTypes*/ false)) { + if (!findMatchingSignature(signatureLists[i], signature, /*partialMatch*/ false, /*ignoreThisTypes*/ false, /*ignoreReturnTypes*/ false)) { return undefined; } } @@ -3683,7 +3870,7 @@ namespace ts { let result: Signature[] = undefined; for (let i = 0; i < signatureLists.length; i++) { // Allow matching non-generic signatures to have excess parameters and different return types - const match = i === listIndex ? signature : findMatchingSignature(signatureLists[i], signature, /*partialMatch*/ true, /*ignoreReturnTypes*/ true); + const match = i === listIndex ? signature : findMatchingSignature(signatureLists[i], signature, /*partialMatch*/ true, /*ignoreThisTypes*/ true, /*ignoreReturnTypes*/ true); if (!match) { return undefined; } @@ -3704,13 +3891,16 @@ namespace ts { for (let i = 0; i < signatureLists.length; i++) { for (const signature of signatureLists[i]) { // Only process signatures with parameter lists that aren't already in the result list - if (!result || !findMatchingSignature(result, signature, /*partialMatch*/ false, /*ignoreReturnTypes*/ true)) { + if (!result || !findMatchingSignature(result, signature, /*partialMatch*/ false, /*ignoreThisTypes*/ true, /*ignoreReturnTypes*/ true)) { const unionSignatures = findMatchingSignatures(signatureLists, signature, i); if (unionSignatures) { let s = signature; // Union the result types when more than one signature matches if (unionSignatures.length > 1) { s = cloneSignature(signature); + if (forEach(unionSignatures, sig => sig.thisType)) { + s.thisType = getUnionType(map(unionSignatures, sig => sig.thisType || anyType)); + } // Clear resolved return type we possibly got from cloneSignature s.resolvedReturnType = undefined; s.unionSignatures = unionSignatures; @@ -3920,7 +4110,7 @@ namespace ts { type = globalBooleanType; } else if (type.flags & TypeFlags.ESSymbol) { - type = globalESSymbolType; + type = getGlobalESSymbolType(); } return type; } @@ -4062,7 +4252,9 @@ namespace ts { propTypes.push(getTypeOfSymbol(prop)); } } - return getUnionType(propTypes); + if (propTypes.length) { + return getUnionType(propTypes); + } } return undefined; } @@ -4164,6 +4356,8 @@ namespace ts { const parameters: Symbol[] = []; let hasStringLiterals = false; let minArgumentCount = -1; + let thisType: Type = undefined; + let hasThisParameter: boolean; const isJSConstructSignature = isJSDocConstructSignature(declaration); let returnType: Type = undefined; let typePredicate: TypePredicate = undefined; @@ -4180,7 +4374,13 @@ namespace ts { const resolvedSymbol = resolveName(param, paramSymbol.name, SymbolFlags.Value, undefined, undefined); paramSymbol = resolvedSymbol; } - parameters.push(paramSymbol); + if (i === 0 && paramSymbol.name === "this") { + hasThisParameter = true; + thisType = param.type ? getTypeFromTypeNode(param.type) : unknownType; + } + else { + parameters.push(paramSymbol); + } if (param.type && param.type.kind === SyntaxKind.StringLiteralType) { hasStringLiterals = true; @@ -4188,7 +4388,7 @@ namespace ts { if (param.initializer || param.questionToken || param.dotDotDotToken) { if (minArgumentCount < 0) { - minArgumentCount = i; + minArgumentCount = i - (hasThisParameter ? 1 : 0); } } else { @@ -4198,7 +4398,7 @@ namespace ts { } if (minArgumentCount < 0) { - minArgumentCount = declaration.parameters.length; + minArgumentCount = declaration.parameters.length - (hasThisParameter ? 1 : 0); } if (isJSConstructSignature) { @@ -4234,7 +4434,7 @@ namespace ts { } } - links.resolvedSignature = createSignature(declaration, typeParameters, parameters, returnType, typePredicate, minArgumentCount, hasRestParameter(declaration), hasStringLiterals); + links.resolvedSignature = createSignature(declaration, typeParameters, thisType, parameters, returnType, typePredicate, minArgumentCount, hasRestParameter(declaration), hasStringLiterals); } return links.resolvedSignature; } @@ -4463,10 +4663,12 @@ namespace ts { // It is only necessary to do so if a constituent type might be the undefined type, the null type, the type // of an object literal or the anyFunctionType. This is because there are operations in the type checker // that care about the presence of such types at arbitrary depth in a containing type. - function getPropagatingFlagsOfTypes(types: Type[]): TypeFlags { + function getPropagatingFlagsOfTypes(types: Type[], excludeKinds: TypeFlags): TypeFlags { let result: TypeFlags = 0; for (const type of types) { - result |= type.flags; + if (!(type.flags & excludeKinds)) { + result |= type.flags; + } } return result & TypeFlags.PropagatingFlags; } @@ -4475,7 +4677,8 @@ namespace ts { const id = getTypeListId(typeArguments); let type = target.instantiations[id]; if (!type) { - const flags = TypeFlags.Reference | (typeArguments ? getPropagatingFlagsOfTypes(typeArguments) : 0); + const propagatedFlags = typeArguments ? getPropagatingFlagsOfTypes(typeArguments, /*excludeKinds*/ 0) : 0; + const flags = TypeFlags.Reference | propagatedFlags; type = target.instantiations[id] = createObjectType(flags, target.symbol); type.target = target; type.typeArguments = typeArguments; @@ -4485,7 +4688,7 @@ namespace ts { // Get type from reference to class or interface function getTypeFromClassOrInterfaceReference(node: TypeReferenceNode | ExpressionWithTypeArguments | JSDocTypeReference, symbol: Symbol): Type { - const type = getDeclaredTypeOfSymbol(symbol); + const type = getDeclaredTypeOfSymbol(getMergedSymbol(symbol)); const typeParameters = type.localTypeParameters; if (typeParameters) { if (!node.typeArguments || node.typeArguments.length !== typeParameters.length) { @@ -4688,10 +4891,6 @@ namespace ts { return typeSymbol && getDeclaredTypeOfSymbol(typeSymbol); } - function getGlobalESSymbolConstructorSymbol() { - return globalESSymbolConstructorSymbol || (globalESSymbolConstructorSymbol = getGlobalValueSymbol("Symbol")); - } - /** * Creates a TypeReference for a generic `TypedPropertyDescriptor`. */ @@ -4710,11 +4909,11 @@ namespace ts { } function createIterableType(elementType: Type): Type { - return createTypeFromGenericGlobalType(globalIterableType, [elementType]); + return createTypeFromGenericGlobalType(getGlobalIterableType(), [elementType]); } function createIterableIteratorType(elementType: Type): Type { - return createTypeFromGenericGlobalType(globalIterableIteratorType, [elementType]); + return createTypeFromGenericGlobalType(getGlobalIterableIteratorType(), [elementType]); } function createArrayType(elementType: Type): Type { @@ -4735,7 +4934,8 @@ namespace ts { } function createNewTupleType(elementTypes: Type[]) { - const type = createObjectType(TypeFlags.Tuple | getPropagatingFlagsOfTypes(elementTypes)); + const propagatedFlags = getPropagatingFlagsOfTypes(elementTypes, /*excludeKinds*/ 0); + const type = createObjectType(TypeFlags.Tuple | propagatedFlags); type.elementTypes = elementTypes; return type; } @@ -4748,18 +4948,29 @@ namespace ts { return links.resolvedType; } - function addTypeToSet(typeSet: Type[], type: Type, typeSetKind: TypeFlags) { + interface TypeSet extends Array { + containsAny?: boolean; + containsUndefined?: boolean; + containsNull?: boolean; + } + + function addTypeToSet(typeSet: TypeSet, type: Type, typeSetKind: TypeFlags) { if (type.flags & typeSetKind) { addTypesToSet(typeSet, (type).types, typeSetKind); } - else if (!contains(typeSet, type)) { + else if (type.flags & (TypeFlags.Any | TypeFlags.Undefined | TypeFlags.Null)) { + if (type.flags & TypeFlags.Any) typeSet.containsAny = true; + if (type.flags & TypeFlags.Undefined) typeSet.containsUndefined = true; + if (type.flags & TypeFlags.Null) typeSet.containsNull = true; + } + else if (type !== emptyUnionType && !contains(typeSet, type)) { typeSet.push(type); } } // Add the given types to the given type set. Order is preserved, duplicates are removed, // and nested types of the given kind are flattened into the set. - function addTypesToSet(typeSet: Type[], types: Type[], typeSetKind: TypeFlags) { + function addTypesToSet(typeSet: TypeSet, types: Type[], typeSetKind: TypeFlags) { for (const type of types) { addTypeToSet(typeSet, type, typeSetKind); } @@ -4784,25 +4995,6 @@ namespace ts { } } - function containsTypeAny(types: Type[]): boolean { - for (const type of types) { - if (isTypeAny(type)) { - return true; - } - } - return false; - } - - function removeAllButLast(types: Type[], typeToRemove: Type) { - let i = types.length; - while (i > 0 && types.length > 1) { - i--; - if (types[i] === typeToRemove) { - types.splice(i, 1); - } - } - } - // We reduce the constituent type set to only include types that aren't subtypes of other types, unless // the noSubtypeReduction flag is specified, in which case we perform a simple deduplication based on // object identity. Subtype reduction is possible only when union types are known not to circularly @@ -4814,25 +5006,31 @@ namespace ts { if (types.length === 0) { return emptyUnionType; } - const typeSet: Type[] = []; + const typeSet = [] as TypeSet; addTypesToSet(typeSet, types, TypeFlags.Union); - if (containsTypeAny(typeSet)) { + if (typeSet.containsAny) { return anyType; } - if (noSubtypeReduction) { - removeAllButLast(typeSet, undefinedType); - removeAllButLast(typeSet, nullType); + if (strictNullChecks) { + if (typeSet.containsNull) typeSet.push(nullType); + if (typeSet.containsUndefined) typeSet.push(undefinedType); } - else { + if (!noSubtypeReduction) { removeSubtypes(typeSet); } - if (typeSet.length === 1) { + if (typeSet.length === 0) { + return typeSet.containsNull ? nullType : + typeSet.containsUndefined ? undefinedType : + emptyUnionType; + } + else if (typeSet.length === 1) { return typeSet[0]; } const id = getTypeListId(typeSet); let type = unionTypes[id]; if (!type) { - type = unionTypes[id] = createObjectType(TypeFlags.Union | getPropagatingFlagsOfTypes(typeSet)); + const propagatedFlags = getPropagatingFlagsOfTypes(typeSet, /*excludeKinds*/ TypeFlags.Nullable); + type = unionTypes[id] = createObjectType(TypeFlags.Union | propagatedFlags); type.types = typeSet; } return type; @@ -4855,18 +5053,23 @@ namespace ts { if (types.length === 0) { return emptyObjectType; } - const typeSet: Type[] = []; + const typeSet = [] as TypeSet; addTypesToSet(typeSet, types, TypeFlags.Intersection); - if (containsTypeAny(typeSet)) { + if (typeSet.containsAny) { return anyType; } + if (strictNullChecks) { + if (typeSet.containsNull) typeSet.push(nullType); + if (typeSet.containsUndefined) typeSet.push(undefinedType); + } if (typeSet.length === 1) { return typeSet[0]; } const id = getTypeListId(typeSet); let type = intersectionTypes[id]; if (!type) { - type = intersectionTypes[id] = createObjectType(TypeFlags.Intersection | getPropagatingFlagsOfTypes(typeSet)); + const propagatedFlags = getPropagatingFlagsOfTypes(typeSet, /*excludeKinds*/ TypeFlags.Nullable); + type = intersectionTypes[id] = createObjectType(TypeFlags.Intersection | propagatedFlags); type.types = typeSet; } return type; @@ -4925,7 +5128,7 @@ namespace ts { return links.resolvedType; } - function getThisType(node: TypeNode): Type { + function getThisType(node: Node): Type { const container = getThisContainer(node, /*includeArrowFunctions*/ false); const parent = container && container.parent; if (parent && (isClassLike(parent) || parent.kind === SyntaxKind.InterfaceDeclaration)) { @@ -4962,6 +5165,10 @@ namespace ts { return esSymbolType; case SyntaxKind.VoidKeyword: return voidType; + case SyntaxKind.UndefinedKeyword: + return undefinedType; + case SyntaxKind.NullKeyword: + return nullType; case SyntaxKind.ThisType: return getTypeFromThisTypeNode(node); case SyntaxKind.StringLiteralType: @@ -5032,42 +5239,29 @@ namespace ts { return t => t === source1 ? target1 : t === source2 ? target2 : t; } - function createTypeMapper(sources: Type[], targets: Type[]): TypeMapper { - switch (sources.length) { - case 1: return createUnaryTypeMapper(sources[0], targets[0]); - case 2: return createBinaryTypeMapper(sources[0], targets[0], sources[1], targets[1]); - } + function createArrayTypeMapper(sources: Type[], targets: Type[]): TypeMapper { return t => { for (let i = 0; i < sources.length; i++) { if (t === sources[i]) { - return targets[i]; + return targets ? targets[i] : anyType; } } return t; }; } - function createUnaryTypeEraser(source: Type): TypeMapper { - return t => t === source ? anyType : t; - } - - function createBinaryTypeEraser(source1: Type, source2: Type): TypeMapper { - return t => t === source1 || t === source2 ? anyType : t; + function createTypeMapper(sources: Type[], targets: Type[]): TypeMapper { + const count = sources.length; + const mapper: TypeMapper = + count == 1 ? createUnaryTypeMapper(sources[0], targets ? targets[0] : anyType) : + count == 2 ? createBinaryTypeMapper(sources[0], targets ? targets[0] : anyType, sources[1], targets ? targets[1] : anyType) : + createArrayTypeMapper(sources, targets); + mapper.mappedTypes = sources; + return mapper; } function createTypeEraser(sources: Type[]): TypeMapper { - switch (sources.length) { - case 1: return createUnaryTypeEraser(sources[0]); - case 2: return createBinaryTypeEraser(sources[0], sources[1]); - } - return t => { - for (const source of sources) { - if (t === source) { - return anyType; - } - } - return t; - }; + return createTypeMapper(sources, undefined); } function getInferenceMapper(context: InferenceContext): TypeMapper { @@ -5082,6 +5276,7 @@ namespace ts { } return t; }; + mapper.mappedTypes = context.typeParameters; mapper.context = context; context.mapper = mapper; } @@ -5093,7 +5288,9 @@ namespace ts { } function combineTypeMappers(mapper1: TypeMapper, mapper2: TypeMapper): TypeMapper { - return t => instantiateType(mapper1(t), mapper2); + const mapper: TypeMapper = t => instantiateType(mapper1(t), mapper2); + mapper.mappedTypes = mapper1.mappedTypes; + return mapper; } function cloneTypeParameter(typeParameter: TypeParameter): TypeParameter { @@ -5137,6 +5334,7 @@ namespace ts { freshTypePredicate = cloneTypePredicate(signature.typePredicate, mapper); } const result = createSignature(signature.declaration, freshTypeParameters, + signature.thisType && instantiateType(signature.thisType, mapper), instantiateList(signature.parameters, mapper, instantiateSymbol), instantiateType(signature.resolvedReturnType, mapper), freshTypePredicate, @@ -5188,13 +5386,70 @@ namespace ts { return result; } + function isSymbolInScopeOfMappedTypeParameter(symbol: Symbol, mapper: TypeMapper) { + const mappedTypes = mapper.mappedTypes; + // Starting with the parent of the symbol's declaration, check if the mapper maps any of + // the type parameters introduced by enclosing declarations. We just pick the first + // declaration since multiple declarations will all have the same parent anyway. + let node = symbol.declarations[0].parent; + while (node) { + switch (node.kind) { + case SyntaxKind.FunctionType: + case SyntaxKind.ConstructorType: + case SyntaxKind.FunctionDeclaration: + case SyntaxKind.MethodDeclaration: + case SyntaxKind.MethodSignature: + case SyntaxKind.Constructor: + case SyntaxKind.CallSignature: + case SyntaxKind.ConstructSignature: + case SyntaxKind.IndexSignature: + case SyntaxKind.GetAccessor: + case SyntaxKind.SetAccessor: + case SyntaxKind.FunctionExpression: + case SyntaxKind.ArrowFunction: + case SyntaxKind.ClassDeclaration: + case SyntaxKind.ClassExpression: + case SyntaxKind.InterfaceDeclaration: + case SyntaxKind.TypeAliasDeclaration: + const declaration = node; + if (declaration.typeParameters) { + for (const d of declaration.typeParameters) { + if (contains(mappedTypes, getDeclaredTypeOfTypeParameter(d.symbol))) { + return true; + } + } + } + if (isClassLike(node) || node.kind === SyntaxKind.InterfaceDeclaration) { + const thisType = getDeclaredTypeOfClassOrInterface(getSymbolOfNode(node)).thisType; + if (thisType && contains(mappedTypes, thisType)) { + return true; + } + } + break; + case SyntaxKind.ModuleDeclaration: + case SyntaxKind.SourceFile: + return false; + } + node = node.parent; + } + return false; + } + function instantiateType(type: Type, mapper: TypeMapper): Type { if (type && mapper !== identityMapper) { if (type.flags & TypeFlags.TypeParameter) { return mapper(type); } if (type.flags & TypeFlags.Anonymous) { - return type.symbol && type.symbol.flags & (SymbolFlags.Function | SymbolFlags.Method | SymbolFlags.Class | SymbolFlags.TypeLiteral | SymbolFlags.ObjectLiteral) ? + // If the anonymous type originates in a declaration of a function, method, class, or + // interface, in an object type literal, or in an object literal expression, we may need + // to instantiate the type because it might reference a type parameter. We skip instantiation + // if none of the type parameters that are in scope in the type's declaration are mapped by + // the given mapper, however we can only do that analysis if the type isn't itself an + // instantiation. + return type.symbol && + type.symbol.flags & (SymbolFlags.Function | SymbolFlags.Method | SymbolFlags.Class | SymbolFlags.TypeLiteral | SymbolFlags.ObjectLiteral) && + (type.flags & TypeFlags.Instantiated || isSymbolInScopeOfMappedTypeParameter(type.symbol, mapper)) ? instantiateAnonymousType(type, mapper) : type; } if (type.flags & TypeFlags.Reference) { @@ -5248,7 +5503,13 @@ namespace ts { } function isContextSensitiveFunctionLikeDeclaration(node: FunctionLikeDeclaration) { - return !node.typeParameters && node.parameters.length && !forEach(node.parameters, p => p.type); + const areAllParametersUntyped = !forEach(node.parameters, p => p.type); + const isNullaryArrow = node.kind === SyntaxKind.ArrowFunction && !node.parameters.length; + return !node.typeParameters && areAllParametersUntyped && !isNullaryArrow; + } + + function isContextSensitiveFunctionOrObjectLiteralMethod(func: Node): func is FunctionExpression | MethodDeclaration { + return (isFunctionExpressionOrArrowFunction(func) || isObjectLiteralMethod(func)) && isContextSensitiveFunctionLikeDeclaration(func); } function getTypeWithoutSignatures(type: Type): Type { @@ -5288,6 +5549,14 @@ namespace ts { return checkTypeAssignableTo(source, target, /*errorNode*/ undefined); } + /** + * This is *not* a bi-directional relationship. + * If one needs to check both directions for comparability, use a second call to this function or 'checkTypeComparableTo'. + */ + function isTypeComparableTo(source: Type, target: Type): boolean { + return checkTypeComparableTo(source, target, /*errorNode*/ undefined); + } + function checkTypeSubtypeOf(source: Type, target: Type, errorNode: Node, headMessage?: DiagnosticMessage, containingMessageChain?: DiagnosticMessageChain): boolean { return checkTypeRelatedTo(source, target, subtypeRelation, errorNode, headMessage, containingMessageChain); } @@ -5296,6 +5565,14 @@ namespace ts { return checkTypeRelatedTo(source, target, assignableRelation, errorNode, headMessage, containingMessageChain); } + /** + * This is *not* a bi-directional relationship. + * If one needs to check both directions for comparability, use a second call to this function or 'isTypeComparableTo'. + */ + function checkTypeComparableTo(source: Type, target: Type, errorNode: Node, headMessage?: DiagnosticMessage, containingMessageChain?: DiagnosticMessageChain): boolean { + return checkTypeRelatedTo(source, target, comparableRelation, errorNode, headMessage, containingMessageChain); + } + function isSignatureAssignableTo(source: Signature, target: Signature, ignoreReturnTypes: boolean): boolean { @@ -5325,6 +5602,18 @@ namespace ts { target = getErasedSignature(target); let result = Ternary.True; + if (source.thisType && target.thisType && source.thisType !== voidType) { + // void sources are assignable to anything. + const related = compareTypes(source.thisType, target.thisType, /*reportErrors*/ false) + || compareTypes(target.thisType, source.thisType, reportErrors); + if (!related) { + if (reportErrors) { + errorReporter(Diagnostics.The_this_types_of_each_signature_are_incompatible); + } + return Ternary.False; + } + result &= related; + } const sourceMax = getNumNonRestParameters(source); const targetMax = getNumNonRestParameters(target); @@ -5332,9 +5621,9 @@ namespace ts { const sourceParams = source.parameters; const targetParams = target.parameters; for (let i = 0; i < checkCount; i++) { - const s = i < sourceMax ? getTypeOfSymbol(sourceParams[i]) : getRestTypeOfSignature(source); - const t = i < targetMax ? getTypeOfSymbol(targetParams[i]) : getRestTypeOfSignature(target); - const related = compareTypes(t, s, /*reportErrors*/ false) || compareTypes(s, t, reportErrors); + const s = i < sourceMax ? getTypeOfParameter(sourceParams[i]) : getRestTypeOfSignature(source); + const t = i < targetMax ? getTypeOfParameter(targetParams[i]) : getRestTypeOfSignature(target); + const related = compareTypes(s, t, /*reportErrors*/ false) || compareTypes(t, s, reportErrors); if (!related) { if (reportErrors) { errorReporter(Diagnostics.Types_of_parameters_0_and_1_are_incompatible, @@ -5453,7 +5742,7 @@ namespace ts { * Checks if 'source' is related to 'target' (e.g.: is a assignable to). * @param source The left-hand-side of the relation. * @param target The right-hand-side of the relation. - * @param relation The relation considered. One of 'identityRelation', 'assignableRelation', or 'subTypeRelation'. + * @param relation The relation considered. One of 'identityRelation', 'subtypeRelation', 'assignableRelation', or 'comparableRelation'. * Used as both to determine which checks are performed and as a cache of previously computed results. * @param errorNode The suggested node upon which all errors will be reported, if defined. This may or may not be the actual node used. * @param headMessage If the error chain should be prepended by a head message, then headMessage will be used. @@ -5502,7 +5791,14 @@ namespace ts { sourceType = typeToString(source, /*enclosingDeclaration*/ undefined, TypeFormatFlags.UseFullyQualifiedType); targetType = typeToString(target, /*enclosingDeclaration*/ undefined, TypeFormatFlags.UseFullyQualifiedType); } - reportError(message || Diagnostics.Type_0_is_not_assignable_to_type_1, sourceType, targetType); + + if (!message) { + message = relation === comparableRelation ? + Diagnostics.Type_0_is_not_comparable_to_type_1 : + Diagnostics.Type_0_is_not_assignable_to_type_1; + } + + reportError(message, sourceType, targetType); } // Compare two types and return @@ -5517,20 +5813,26 @@ namespace ts { return isIdenticalTo(source, target); } - if (isTypeAny(target)) return Ternary.True; - if (source === undefinedType) return Ternary.True; - if (source === nullType && target !== undefinedType) return Ternary.True; + if (target.flags & TypeFlags.Any) return Ternary.True; + if (source.flags & TypeFlags.Undefined) { + if (!strictNullChecks || target.flags & (TypeFlags.Undefined | TypeFlags.Void) || source === emptyArrayElementType) return Ternary.True; + } + if (source.flags & TypeFlags.Null) { + if (!strictNullChecks || target.flags & TypeFlags.Null) return Ternary.True; + } if (source.flags & TypeFlags.Enum && target === numberType) return Ternary.True; if (source.flags & TypeFlags.Enum && target.flags & TypeFlags.Enum) { - if (result = enumRelatedTo(source, target)) { + if (result = enumRelatedTo(source, target, reportErrors)) { return result; } } if (source.flags & TypeFlags.StringLiteral && target === stringType) return Ternary.True; - if (relation === assignableRelation) { + + if (relation === assignableRelation || relation === comparableRelation) { if (isTypeAny(source)) return Ternary.True; if (source === numberType && target.flags & TypeFlags.Enum) return Ternary.True; } + if (source.flags & TypeFlags.Boolean && target.flags & TypeFlags.Boolean) { return Ternary.True; } @@ -5553,19 +5855,28 @@ namespace ts { const saveErrorInfo = errorInfo; - // Note that the "each" checks must precede the "some" checks to produce the correct results + // Note that these checks are specifically ordered to produce correct results. if (source.flags & TypeFlags.Union) { - if (result = eachTypeRelatedToType(source, target, reportErrors)) { + if (relation === comparableRelation) { + result = someTypeRelatedToType(source as UnionType, target, reportErrors); + } + else { + result = eachTypeRelatedToType(source as UnionType, target, reportErrors); + } + + if (result) { return result; } } else if (target.flags & TypeFlags.Intersection) { - if (result = typeRelatedToEachType(source, target, reportErrors)) { + result = typeRelatedToEachType(source, target as IntersectionType, reportErrors); + + if (result) { return result; } } else { - // It is necessary to try "some" checks on both sides because there may be nested "each" checks + // It is necessary to try these "some" checks on both sides because there may be nested "each" checks // on either side that need to be prioritized. For example, A | B = (A | B) & (C | D) or // A & B = (A & B) | (C & D). if (source.flags & TypeFlags.Intersection) { @@ -5587,7 +5898,7 @@ namespace ts { } } if (target.flags & TypeFlags.Union) { - if (result = typeRelatedToSomeType(source, target, reportErrors)) { + if (result = typeRelatedToSomeType(source, target, reportErrors && !(source.flags & TypeFlags.Primitive))) { return result; } } @@ -5652,8 +5963,8 @@ namespace ts { } if (source.flags & TypeFlags.Union && target.flags & TypeFlags.Union || source.flags & TypeFlags.Intersection && target.flags & TypeFlags.Intersection) { - if (result = eachTypeRelatedToSomeType(source, target)) { - if (result &= eachTypeRelatedToSomeType(target, source)) { + if (result = eachTypeRelatedToSomeType(source, target, /*reportErrors*/ false)) { + if (result &= eachTypeRelatedToSomeType(target, source, /*reportErrors*/ false)) { return result; } } @@ -5668,7 +5979,8 @@ namespace ts { function isKnownProperty(type: Type, name: string): boolean { if (type.flags & TypeFlags.ObjectType) { const resolved = resolveStructuredTypeMembers(type); - if (relation === assignableRelation && (type === globalObjectType || resolved.properties.length === 0) || + if ((relation === assignableRelation || relation === comparableRelation) && + (type === globalObjectType || resolved.properties.length === 0) || resolved.stringIndexInfo || resolved.numberIndexInfo || getPropertyOfType(type, name)) { return true; } @@ -5703,7 +6015,7 @@ namespace ts { return false; } - function eachTypeRelatedToSomeType(source: UnionOrIntersectionType, target: UnionOrIntersectionType): Ternary { + function eachTypeRelatedToSomeType(source: UnionOrIntersectionType, target: UnionOrIntersectionType, reportErrors: boolean): Ternary { let result = Ternary.True; const sourceTypes = source.types; for (const sourceType of sourceTypes) { @@ -5718,7 +6030,19 @@ namespace ts { function typeRelatedToSomeType(source: Type, target: UnionOrIntersectionType, reportErrors: boolean): Ternary { const targetTypes = target.types; - for (let i = 0, len = targetTypes.length; i < len; i++) { + let len = targetTypes.length; + // The null and undefined types are guaranteed to be at the end of the constituent type list. In order + // to produce the best possible errors we first check the nullable types, such that the last type we + // check and report errors from is a non-nullable type if one is present. + while (len >= 2 && targetTypes[len - 1].flags & TypeFlags.Nullable) { + const related = isRelatedTo(source, targetTypes[len - 1], /*reportErrors*/ false); + if (related) { + return related; + } + len--; + } + // Now check the non-nullable types and report errors on the last one. + for (let i = 0; i < len; i++) { const related = isRelatedTo(source, targetTypes[i], reportErrors && i === len - 1); if (related) { return related; @@ -5742,7 +6066,19 @@ namespace ts { function someTypeRelatedToType(source: UnionOrIntersectionType, target: Type, reportErrors: boolean): Ternary { const sourceTypes = source.types; - for (let i = 0, len = sourceTypes.length; i < len; i++) { + let len = sourceTypes.length; + // The null and undefined types are guaranteed to be at the end of the constituent type list. In order + // to produce the best possible errors we first check the nullable types, such that the last type we + // check and report errors from is a non-nullable type if one is present. + while (len >= 2 && sourceTypes[len - 1].flags & TypeFlags.Nullable) { + const related = isRelatedTo(sourceTypes[len - 1], target, /*reportErrors*/ false); + if (related) { + return related; + } + len--; + } + // Now check the non-nullable types and report errors on the last one. + for (let i = 0; i < len; i++) { const related = isRelatedTo(sourceTypes[i], target, reportErrors && i === len - 1); if (related) { return related; @@ -6039,7 +6375,7 @@ namespace ts { } let result = Ternary.True; for (let i = 0, len = sourceSignatures.length; i < len; i++) { - const related = compareSignaturesIdentical(sourceSignatures[i], targetSignatures[i], /*partialMatch*/ false, /*ignoreReturnTypes*/ false, isRelatedTo); + const related = compareSignaturesIdentical(sourceSignatures[i], targetSignatures[i], /*partialMatch*/ false, /*ignoreThisTypes*/ false, /*ignoreReturnTypes*/ false, isRelatedTo); if (!related) { return Ternary.False; } @@ -6118,7 +6454,7 @@ namespace ts { return Ternary.False; } - function enumRelatedTo(source: Type, target: Type) { + function enumRelatedTo(source: Type, target: Type, reportErrors?: boolean) { if (source.symbol.name !== target.symbol.name || source.symbol.flags & SymbolFlags.ConstEnum || target.symbol.flags & SymbolFlags.ConstEnum) { @@ -6129,9 +6465,11 @@ namespace ts { if (property.flags & SymbolFlags.EnumMember) { const targetProperty = getPropertyOfType(targetEnumType, property.name); if (!targetProperty || !(targetProperty.flags & SymbolFlags.EnumMember)) { - reportError(Diagnostics.Property_0_is_missing_in_type_1, - property.name, - typeToString(target, /*enclosingDeclaration*/ undefined, TypeFormatFlags.UseFullyQualifiedType)); + if (reportErrors) { + reportError(Diagnostics.Property_0_is_missing_in_type_1, + property.name, + typeToString(target, /*enclosingDeclaration*/ undefined, TypeFormatFlags.UseFullyQualifiedType)); + } return Ternary.False; } } @@ -6259,7 +6597,7 @@ namespace ts { /** * See signatureRelatedTo, compareSignaturesIdentical */ - function compareSignaturesIdentical(source: Signature, target: Signature, partialMatch: boolean, ignoreReturnTypes: boolean, compareTypes: (s: Type, t: Type) => Ternary): Ternary { + function compareSignaturesIdentical(source: Signature, target: Signature, partialMatch: boolean, ignoreThisTypes: boolean, ignoreReturnTypes: boolean, compareTypes: (s: Type, t: Type) => Ternary): Ternary { // TODO (drosen): De-duplicate code between related functions. if (source === target) { return Ternary.True; @@ -6280,10 +6618,17 @@ namespace ts { source = getErasedSignature(source); target = getErasedSignature(target); let result = Ternary.True; + if (!ignoreThisTypes && source.thisType && target.thisType) { + const related = compareTypes(source.thisType, target.thisType); + if (!related) { + return Ternary.False; + } + result &= related; + } const targetLen = target.parameters.length; for (let i = 0; i < targetLen; i++) { - const s = isRestParameterIndex(source, i) ? getRestTypeOfSignature(source) : getTypeOfSymbol(source.parameters[i]); - const t = isRestParameterIndex(target, i) ? getRestTypeOfSignature(target) : getTypeOfSymbol(target.parameters[i]); + const s = isRestParameterIndex(source, i) ? getRestTypeOfSignature(source) : getTypeOfParameter(source.parameters[i]); + const t = isRestParameterIndex(target, i) ? getRestTypeOfSignature(target) : getTypeOfParameter(target.parameters[i]); const related = compareTypes(s, t); if (!related) { return Ternary.False; @@ -6301,14 +6646,30 @@ namespace ts { } function isSupertypeOfEach(candidate: Type, types: Type[]): boolean { - for (const type of types) { - if (candidate !== type && !isTypeSubtypeOf(type, candidate)) return false; + for (const t of types) { + if (candidate !== t && !isTypeSubtypeOf(t, candidate)) return false; } return true; } + function getCombinedFlagsOfTypes(types: Type[]) { + let flags: TypeFlags = 0; + for (const t of types) { + flags |= t.flags; + } + return flags; + } + function getCommonSupertype(types: Type[]): Type { - return forEach(types, t => isSupertypeOfEach(t, types) ? t : undefined); + if (!strictNullChecks) { + return forEach(types, t => isSupertypeOfEach(t, types) ? t : undefined); + } + const primaryTypes = filter(types, t => !(t.flags & TypeFlags.Nullable)); + if (!primaryTypes.length) { + return getUnionType(types); + } + const supertype = forEach(primaryTypes, t => isSupertypeOfEach(t, primaryTypes) ? t : undefined); + return supertype && addNullableKind(supertype, getCombinedFlagsOfTypes(types) & TypeFlags.Nullable); } function reportNoCommonSupertypeError(types: Type[], errorLocation: Node, errorMessageChainHead: DiagnosticMessageChain): void { @@ -6360,7 +6721,7 @@ namespace ts { // A type is array-like if it is a reference to the global Array or global ReadonlyArray type, // or if it is not the undefined or null type and if it is assignable to ReadonlyArray return type.flags & TypeFlags.Reference && ((type).target === globalArrayType || (type).target === globalReadonlyArrayType) || - !(type.flags & (TypeFlags.Undefined | TypeFlags.Null)) && isTypeAssignableTo(type, anyReadonlyArrayType); + !(type.flags & TypeFlags.Nullable) && isTypeAssignableTo(type, anyReadonlyArrayType); } function isTupleLikeType(type: Type): boolean { @@ -6379,6 +6740,34 @@ namespace ts { return !!(type.flags & TypeFlags.Tuple); } + function getNullableKind(type: Type): TypeFlags { + let flags = type.flags; + if (flags & TypeFlags.Union) { + for (const t of (type as UnionType).types) { + flags |= t.flags; + } + } + return flags & TypeFlags.Nullable; + } + + function addNullableKind(type: Type, kind: TypeFlags): Type { + if ((getNullableKind(type) & kind) !== kind) { + const types = [type]; + if (kind & TypeFlags.Undefined) { + types.push(undefinedType); + } + if (kind & TypeFlags.Null) { + types.push(nullType); + } + type = getUnionType(types); + } + return type; + } + + function getNonNullableType(type: Type): Type { + return strictNullChecks ? getTypeWithFacts(type, TypeFacts.NEUndefinedOrNull) : type; + } + /** * Return true if type was inferred from an object literal or written as an object type literal * with no call or construct signatures. @@ -6432,16 +6821,20 @@ namespace ts { numberIndexInfo && createIndexInfo(getWidenedType(numberIndexInfo.type), numberIndexInfo.isReadonly)); } + function getWidenedConstituentType(type: Type): Type { + return type.flags & TypeFlags.Nullable ? type : getWidenedType(type); + } + function getWidenedType(type: Type): Type { if (type.flags & TypeFlags.RequiresWidening) { - if (type.flags & (TypeFlags.Undefined | TypeFlags.Null)) { + if (type.flags & TypeFlags.Nullable) { return anyType; } if (type.flags & TypeFlags.ObjectLiteral) { return getWidenedTypeOfObjectLiteral(type); } if (type.flags & TypeFlags.Union) { - return getUnionType(map((type).types, getWidenedType), /*noSubtypeReduction*/ true); + return getUnionType(map((type).types, getWidenedConstituentType), /*noSubtypeReduction*/ true); } if (isArrayType(type)) { return createArrayType(getWidenedType((type).typeArguments[0])); @@ -6510,6 +6903,9 @@ namespace ts { Diagnostics.Rest_parameter_0_implicitly_has_an_any_type : Diagnostics.Parameter_0_implicitly_has_an_1_type; break; + case SyntaxKind.BindingElement: + diagnostic = Diagnostics.Binding_element_0_implicitly_has_an_1_type; + break; case SyntaxKind.FunctionDeclaration: case SyntaxKind.MethodDeclaration: case SyntaxKind.MethodSignature: @@ -6539,29 +6935,23 @@ namespace ts { } function forEachMatchingParameterType(source: Signature, target: Signature, callback: (s: Type, t: Type) => void) { - let sourceMax = source.parameters.length; - let targetMax = target.parameters.length; + const sourceMax = source.parameters.length; + const targetMax = target.parameters.length; let count: number; if (source.hasRestParameter && target.hasRestParameter) { - count = sourceMax > targetMax ? sourceMax : targetMax; - sourceMax--; - targetMax--; + count = Math.max(sourceMax, targetMax); } else if (source.hasRestParameter) { - sourceMax--; count = targetMax; } else if (target.hasRestParameter) { - targetMax--; count = sourceMax; } else { - count = sourceMax < targetMax ? sourceMax : targetMax; + count = Math.min(sourceMax, targetMax); } for (let i = 0; i < count; i++) { - const s = i < sourceMax ? getTypeOfSymbol(source.parameters[i]) : getRestTypeOfSignature(source); - const t = i < targetMax ? getTypeOfSymbol(target.parameters[i]) : getRestTypeOfSignature(target); - callback(s, t); + callback(getTypeAtPosition(source, i), getTypeAtPosition(target, i)); } } @@ -6875,7 +7265,7 @@ namespace ts { function getResolvedSymbol(node: Identifier): Symbol { const links = getNodeLinks(node); if (!links.resolvedSymbol) { - links.resolvedSymbol = (!nodeIsMissing(node) && resolveName(node, node.text, SymbolFlags.Value | SymbolFlags.ExportValue, Diagnostics.Cannot_find_name_0, node)) || unknownSymbol; + links.resolvedSymbol = !nodeIsMissing(node) && resolveName(node, node.text, SymbolFlags.Value | SymbolFlags.ExportValue, Diagnostics.Cannot_find_name_0, node) || unknownSymbol; } return links.resolvedSymbol; } @@ -6899,248 +7289,492 @@ namespace ts { Debug.fail("should not get here"); } - function hasInitializer(node: VariableLikeDeclaration): boolean { - return !!(node.initializer || isBindingPattern(node.parent) && hasInitializer(node.parent.parent)); + // Return the flow cache key for a "dotted name" (i.e. a sequence of identifiers + // separated by dots). The key consists of the id of the symbol referenced by the + // leftmost identifier followed by zero or more property names separated by dots. + // The result is undefined if the reference isn't a dotted name. + function getFlowCacheKey(node: Node): string { + if (node.kind === SyntaxKind.Identifier) { + const symbol = getResolvedSymbol(node); + return symbol !== unknownSymbol ? "" + getSymbolId(symbol) : undefined; + } + if (node.kind === SyntaxKind.ThisKeyword) { + return "0"; + } + if (node.kind === SyntaxKind.PropertyAccessExpression) { + const key = getFlowCacheKey((node).expression); + return key && key + "." + (node).name.text; + } + return undefined; } - // Check if a given variable is assigned within a given syntax node - function isVariableAssignedWithin(symbol: Symbol, node: Node): boolean { - const links = getNodeLinks(node); - if (links.assignmentChecks) { - const cachedResult = links.assignmentChecks[symbol.id]; - if (cachedResult !== undefined) { - return cachedResult; + function isNullOrUndefinedLiteral(node: Expression) { + return node.kind === SyntaxKind.NullKeyword || + node.kind === SyntaxKind.Identifier && getResolvedSymbol(node) === undefinedSymbol; + } + + function getLeftmostIdentifierOrThis(node: Node): Node { + switch (node.kind) { + case SyntaxKind.Identifier: + case SyntaxKind.ThisKeyword: + return node; + case SyntaxKind.PropertyAccessExpression: + return getLeftmostIdentifierOrThis((node).expression); + } + return undefined; + } + + function isMatchingReference(source: Node, target: Node): boolean { + if (source.kind === target.kind) { + switch (source.kind) { + case SyntaxKind.Identifier: + return getResolvedSymbol(source) === getResolvedSymbol(target); + case SyntaxKind.ThisKeyword: + return true; + case SyntaxKind.PropertyAccessExpression: + return (source).name.text === (target).name.text && + isMatchingReference((source).expression, (target).expression); } } - else { - links.assignmentChecks = {}; - } - return links.assignmentChecks[symbol.id] = isAssignedIn(node); + return false; + } - function isAssignedInBinaryExpression(node: BinaryExpression) { - if (node.operatorToken.kind >= SyntaxKind.FirstAssignment && node.operatorToken.kind <= SyntaxKind.LastAssignment) { - const n = skipParenthesizedNodes(node.left); - if (n.kind === SyntaxKind.Identifier && getResolvedSymbol(n) === symbol) { + function containsMatchingReference(source: Node, target: Node) { + while (source.kind === SyntaxKind.PropertyAccessExpression) { + source = (source).expression; + if (isMatchingReference(source, target)) { + return true; + } + } + return false; + } + + function isOrContainsMatchingReference(source: Node, target: Node) { + return isMatchingReference(source, target) || containsMatchingReference(source, target); + } + + function hasMatchingArgument(callExpression: CallExpression, reference: Node) { + if (callExpression.arguments) { + for (const argument of callExpression.arguments) { + if (isOrContainsMatchingReference(reference, argument)) { return true; } } - return forEachChild(node, isAssignedIn); } - - function isAssignedInVariableDeclaration(node: VariableLikeDeclaration) { - if (!isBindingPattern(node.name) && getSymbolOfNode(node) === symbol && hasInitializer(node)) { - return true; - } - return forEachChild(node, isAssignedIn); - } - - function isAssignedIn(node: Node): boolean { - switch (node.kind) { - case SyntaxKind.BinaryExpression: - return isAssignedInBinaryExpression(node); - case SyntaxKind.VariableDeclaration: - case SyntaxKind.BindingElement: - return isAssignedInVariableDeclaration(node); - case SyntaxKind.ObjectBindingPattern: - case SyntaxKind.ArrayBindingPattern: - case SyntaxKind.ArrayLiteralExpression: - case SyntaxKind.ObjectLiteralExpression: - case SyntaxKind.PropertyAccessExpression: - case SyntaxKind.ElementAccessExpression: - case SyntaxKind.CallExpression: - case SyntaxKind.NewExpression: - case SyntaxKind.TypeAssertionExpression: - case SyntaxKind.AsExpression: - case SyntaxKind.ParenthesizedExpression: - case SyntaxKind.PrefixUnaryExpression: - case SyntaxKind.DeleteExpression: - case SyntaxKind.AwaitExpression: - case SyntaxKind.TypeOfExpression: - case SyntaxKind.VoidExpression: - case SyntaxKind.PostfixUnaryExpression: - case SyntaxKind.YieldExpression: - case SyntaxKind.ConditionalExpression: - case SyntaxKind.SpreadElementExpression: - case SyntaxKind.Block: - case SyntaxKind.VariableStatement: - case SyntaxKind.ExpressionStatement: - case SyntaxKind.IfStatement: - case SyntaxKind.DoStatement: - case SyntaxKind.WhileStatement: - case SyntaxKind.ForStatement: - case SyntaxKind.ForInStatement: - case SyntaxKind.ForOfStatement: - case SyntaxKind.ReturnStatement: - case SyntaxKind.WithStatement: - case SyntaxKind.SwitchStatement: - case SyntaxKind.CaseClause: - case SyntaxKind.DefaultClause: - case SyntaxKind.LabeledStatement: - case SyntaxKind.ThrowStatement: - case SyntaxKind.TryStatement: - case SyntaxKind.CatchClause: - case SyntaxKind.JsxElement: - case SyntaxKind.JsxSelfClosingElement: - case SyntaxKind.JsxAttribute: - case SyntaxKind.JsxSpreadAttribute: - case SyntaxKind.JsxOpeningElement: - case SyntaxKind.JsxExpression: - return forEachChild(node, isAssignedIn); - } - return false; + if (callExpression.expression.kind === SyntaxKind.PropertyAccessExpression && + isOrContainsMatchingReference(reference, (callExpression.expression).expression)) { + return true; } + return false; } - // Get the narrowed type of a given symbol at a given location - function getNarrowedTypeOfSymbol(symbol: Symbol, node: Node) { - let type = getTypeOfSymbol(symbol); - // Only narrow when symbol is variable of type any or an object, union, or type parameter type - if (node && symbol.flags & SymbolFlags.Variable) { - if (isTypeAny(type) || type.flags & (TypeFlags.ObjectType | TypeFlags.Union | TypeFlags.TypeParameter)) { - const declaration = getDeclarationOfKind(symbol, SyntaxKind.VariableDeclaration); - const top = declaration && getDeclarationContainer(declaration); - const originalType = type; - const nodeStack: {node: Node, child: Node}[] = []; - loop: while (node.parent) { - const child = node; - node = node.parent; - switch (node.kind) { - case SyntaxKind.IfStatement: - case SyntaxKind.ConditionalExpression: - case SyntaxKind.BinaryExpression: - nodeStack.push({node, child}); - break; - case SyntaxKind.SourceFile: - case SyntaxKind.ModuleDeclaration: - // Stop at the first containing file or module declaration - break loop; - } - if (node === top) { - break; - } + function getFlowTypeCache(flow: FlowNode): Map { + if (!flow.id) { + flow.id = nextFlowId; + nextFlowId++; + } + return flowTypeCaches[flow.id] || (flowTypeCaches[flow.id] = {}); + } + + function typeMaybeAssignableTo(source: Type, target: Type) { + if (!(source.flags & TypeFlags.Union)) { + return isTypeAssignableTo(source, target); + } + for (const t of (source).types) { + if (isTypeAssignableTo(t, target)) { + return true; + } + } + return false; + } + + // Remove those constituent types of declaredType to which no constituent type of assignedType is assignable. + // For example, when a variable of type number | string | boolean is assigned a value of type number | boolean, + // we remove type string. + function getAssignmentReducedType(declaredType: UnionType, assignedType: Type) { + if (declaredType !== assignedType && declaredType.flags & TypeFlags.Union) { + const reducedTypes = filter(declaredType.types, t => typeMaybeAssignableTo(assignedType, t)); + if (reducedTypes.length) { + return reducedTypes.length === 1 ? reducedTypes[0] : getUnionType(reducedTypes); + } + } + return declaredType; + } + + function getTypeFacts(type: Type): TypeFacts { + const flags = type.flags; + if (flags & TypeFlags.StringLike) { + return strictNullChecks ? TypeFacts.StringStrictFacts : TypeFacts.StringFacts; + } + if (flags & TypeFlags.NumberLike) { + return strictNullChecks ? TypeFacts.NumberStrictFacts : TypeFacts.NumberFacts; + } + if (flags & TypeFlags.Boolean) { + return strictNullChecks ? TypeFacts.BooleanStrictFacts : TypeFacts.BooleanFacts; + } + if (flags & TypeFlags.ObjectType) { + const resolved = resolveStructuredTypeMembers(type); + return resolved.callSignatures.length || resolved.constructSignatures.length || isTypeSubtypeOf(type, globalFunctionType) ? + strictNullChecks ? TypeFacts.FunctionStrictFacts : TypeFacts.FunctionFacts : + strictNullChecks ? TypeFacts.ObjectStrictFacts : TypeFacts.ObjectFacts; + } + if (flags & (TypeFlags.Void | TypeFlags.Undefined)) { + return TypeFacts.UndefinedFacts; + } + if (flags & TypeFlags.Null) { + return TypeFacts.NullFacts; + } + if (flags & TypeFlags.ESSymbol) { + return strictNullChecks ? TypeFacts.SymbolStrictFacts : TypeFacts.SymbolFacts; + } + if (flags & TypeFlags.TypeParameter) { + const constraint = getConstraintOfTypeParameter(type); + return constraint ? getTypeFacts(constraint) : TypeFacts.All; + } + if (flags & TypeFlags.Intersection) { + return reduceLeft((type).types, (flags, type) => flags |= getTypeFacts(type), TypeFacts.None); + } + return TypeFacts.All; + } + + function getTypeWithFacts(type: Type, include: TypeFacts) { + if (!(type.flags & TypeFlags.Union)) { + return getTypeFacts(type) & include ? type : emptyUnionType; + } + let firstType: Type; + let types: Type[]; + for (const t of (type as UnionType).types) { + if (getTypeFacts(t) & include) { + if (!firstType) { + firstType = t; } - - let nodes: {node: Node, child: Node}; - while (nodes = nodeStack.pop()) { - const {node, child} = nodes; - switch (node.kind) { - case SyntaxKind.IfStatement: - // In a branch of an if statement, narrow based on controlling expression - if (child !== (node).expression) { - type = narrowType(type, (node).expression, /*assumeTrue*/ child === (node).thenStatement); - } - break; - case SyntaxKind.ConditionalExpression: - // In a branch of a conditional expression, narrow based on controlling condition - if (child !== (node).condition) { - type = narrowType(type, (node).condition, /*assumeTrue*/ child === (node).whenTrue); - } - break; - case SyntaxKind.BinaryExpression: - // In the right operand of an && or ||, narrow based on left operand - if (child === (node).right) { - if ((node).operatorToken.kind === SyntaxKind.AmpersandAmpersandToken) { - type = narrowType(type, (node).left, /*assumeTrue*/ true); - } - else if ((node).operatorToken.kind === SyntaxKind.BarBarToken) { - type = narrowType(type, (node).left, /*assumeTrue*/ false); - } - } - break; - default: - Debug.fail("Unreachable!"); + else { + if (!types) { + types = [firstType]; } - - // Use original type if construct contains assignments to variable - if (type !== originalType && isVariableAssignedWithin(symbol, node)) { - type = originalType; - } - } - - // Preserve old top-level behavior - if the branch is really an empty set, revert to prior type - if (type === emptyUnionType) { - type = originalType; + types.push(t); } } } + return firstType ? types ? getUnionType(types, /*noSubtypeReduction*/ true) : firstType : emptyUnionType; + } + function getTypeWithDefault(type: Type, defaultExpression: Expression) { + if (defaultExpression) { + const defaultType = checkExpression(defaultExpression); + return getUnionType([getTypeWithFacts(type, TypeFacts.NEUndefined), defaultType]); + } return type; + } - function narrowTypeByEquality(type: Type, expr: BinaryExpression, assumeTrue: boolean): Type { - // Check that we have 'typeof ' on the left and string literal on the right - if (expr.left.kind !== SyntaxKind.TypeOfExpression || expr.right.kind !== SyntaxKind.StringLiteral) { + function getTypeOfDestructuredProperty(type: Type, name: Identifier | LiteralExpression | ComputedPropertyName) { + const text = getTextOfPropertyName(name); + return getTypeOfPropertyOfType(type, text) || + isNumericLiteralName(text) && getIndexTypeOfType(type, IndexKind.Number) || + getIndexTypeOfType(type, IndexKind.String) || + unknownType; + } + + function getTypeOfDestructuredArrayElement(type: Type, index: number) { + return isTupleLikeType(type) && getTypeOfPropertyOfType(type, "" + index) || + checkIteratedTypeOrElementType(type, /*errorNode*/ undefined, /*allowStringInput*/ false) || + unknownType; + } + + function getTypeOfDestructuredSpreadElement(type: Type) { + return createArrayType(checkIteratedTypeOrElementType(type, /*errorNode*/ undefined, /*allowStringInput*/ false) || unknownType); + } + + function getAssignedTypeOfBinaryExpression(node: BinaryExpression): Type { + return node.parent.kind === SyntaxKind.ArrayLiteralExpression || node.parent.kind === SyntaxKind.PropertyAssignment ? + getTypeWithDefault(getAssignedType(node), node.right) : + checkExpression(node.right); + } + + function getAssignedTypeOfArrayLiteralElement(node: ArrayLiteralExpression, element: Expression): Type { + return getTypeOfDestructuredArrayElement(getAssignedType(node), indexOf(node.elements, element)); + } + + function getAssignedTypeOfSpreadElement(node: SpreadElementExpression): Type { + return getTypeOfDestructuredSpreadElement(getAssignedType(node.parent)); + } + + function getAssignedTypeOfPropertyAssignment(node: PropertyAssignment | ShorthandPropertyAssignment): Type { + return getTypeOfDestructuredProperty(getAssignedType(node.parent), node.name); + } + + function getAssignedTypeOfShorthandPropertyAssignment(node: ShorthandPropertyAssignment): Type { + return getTypeWithDefault(getAssignedTypeOfPropertyAssignment(node), node.objectAssignmentInitializer); + } + + function getAssignedType(node: Expression): Type { + const parent = node.parent; + switch (parent.kind) { + case SyntaxKind.ForInStatement: + return stringType; + case SyntaxKind.ForOfStatement: + return checkRightHandSideOfForOf((parent).expression) || unknownType; + case SyntaxKind.BinaryExpression: + return getAssignedTypeOfBinaryExpression(parent); + case SyntaxKind.ArrayLiteralExpression: + return getAssignedTypeOfArrayLiteralElement(parent, node); + case SyntaxKind.SpreadElementExpression: + return getAssignedTypeOfSpreadElement(parent); + case SyntaxKind.PropertyAssignment: + return getAssignedTypeOfPropertyAssignment(parent); + case SyntaxKind.ShorthandPropertyAssignment: + return getAssignedTypeOfShorthandPropertyAssignment(parent); + } + return unknownType; + } + + function getInitialTypeOfBindingElement(node: BindingElement): Type { + const pattern = node.parent; + const parentType = getInitialType(pattern.parent); + const type = pattern.kind === SyntaxKind.ObjectBindingPattern ? + getTypeOfDestructuredProperty(parentType, node.propertyName || node.name) : + !node.dotDotDotToken ? + getTypeOfDestructuredArrayElement(parentType, indexOf(pattern.elements, node)) : + getTypeOfDestructuredSpreadElement(parentType); + return getTypeWithDefault(type, node.initializer); + } + + function getTypeOfInitializer(node: Expression) { + // Return the cached type if one is available. If the type of the variable was inferred + // from its initializer, we'll already have cached the type. Otherwise we compute it now + // without caching such that transient types are reflected. + const links = getNodeLinks(node); + return links.resolvedType || checkExpression(node); + } + + function getInitialTypeOfVariableDeclaration(node: VariableDeclaration) { + if (node.initializer) { + return getTypeOfInitializer(node.initializer); + } + if (node.parent.parent.kind === SyntaxKind.ForInStatement) { + return stringType; + } + if (node.parent.parent.kind === SyntaxKind.ForOfStatement) { + return checkRightHandSideOfForOf((node.parent.parent).expression) || unknownType; + } + return unknownType; + } + + function getInitialType(node: VariableDeclaration | BindingElement) { + return node.kind === SyntaxKind.VariableDeclaration ? + getInitialTypeOfVariableDeclaration(node) : + getInitialTypeOfBindingElement(node); + } + + function getFlowTypeOfReference(reference: Node, declaredType: Type, initialType: Type) { + let key: string; + if (!reference.flowNode || declaredType === initialType && !(declaredType.flags & TypeFlags.Narrowable)) { + return declaredType; + } + return getTypeAtFlowNode(reference.flowNode); + + function getTypeAtFlowNode(flow: FlowNode): Type { + while (true) { + switch (flow.kind) { + case FlowKind.Assignment: + const type = getTypeAtFlowAssignment(flow); + if (!type) { + flow = (flow).antecedent; + continue; + } + return type; + case FlowKind.Condition: + return getTypeAtFlowCondition(flow); + case FlowKind.Label: + case FlowKind.LoopLabel: + if ((flow).antecedents.length === 1) { + flow = (flow).antecedents[0]; + continue; + } + return getTypeAtFlowLabel(flow); + case FlowKind.Unreachable: + // Unreachable code errors are reported in the binding phase. Here we + // simply return the declared type to reduce follow-on errors. + return declaredType; + } + // At the top of the flow we have the initial type + return initialType; + } + } + + function getTypeAtFlowAssignment(flow: FlowAssignment) { + const node = flow.node; + // Assignments only narrow the computed type if the declared type is a union type. Thus, we + // only need to evaluate the assigned type if the declared type is a union type. + if ((node.kind === SyntaxKind.VariableDeclaration || node.kind === SyntaxKind.BindingElement) && + reference.kind === SyntaxKind.Identifier && + getExportSymbolOfValueSymbolIfExported(getResolvedSymbol(reference)) === getSymbolOfNode(node)) { + return declaredType.flags & TypeFlags.Union ? + getAssignmentReducedType(declaredType, getInitialType(node)) : + declaredType; + } + // If the node is not a variable declaration or binding element, it is an identifier + // or a dotted name that is the target of an assignment. If we have a match, reduce + // the declared type by the assigned type. + if (isMatchingReference(reference, node)) { + return declaredType.flags & TypeFlags.Union ? + getAssignmentReducedType(declaredType, getAssignedType(node)) : + declaredType; + } + // We didn't have a direct match. However, if the reference is a dotted name, this + // may be an assignment to a left hand part of the reference. For example, for a + // reference 'x.y.z', we may be at an assignment to 'x.y' or 'x'. In that case, + // return the declared type. + if (containsMatchingReference(reference, node)) { + return declaredType; + } + // Assignment doesn't affect reference + return undefined; + } + + function getTypeAtFlowCondition(flow: FlowCondition) { + const type = getTypeAtFlowNode(flow.antecedent); + return type && narrowType(type, flow.expression, flow.assumeTrue); + } + + function getTypeAtFlowNodeCached(flow: FlowNode) { + const cache = getFlowTypeCache(flow); + if (!key) { + key = getFlowCacheKey(reference); + } + const cached = cache[key]; + if (cached) { + return cached; + } + // Return undefined if we're already processing the given node. + for (let i = flowStackStart; i < flowStackCount; i++) { + if (flowStackNodes[i] === flow && flowStackCacheKeys[i] === key) { + return undefined; + } + } + // Record node and key on stack of nodes being processed. + flowStackNodes[flowStackCount] = flow; + flowStackCacheKeys[flowStackCount] = key; + flowStackCount++; + const type = getTypeAtFlowNode(flow); + flowStackCount--; + // Record the result only if the cache is still empty. If checkExpressionCached was called + // during processing it is possible we've already recorded a result. + return cache[key] || type && (cache[key] = type); + } + + function getTypeAtFlowLabel(flow: FlowLabel) { + const antecedentTypes: Type[] = []; + for (const antecedent of flow.antecedents) { + const type = flow.kind === FlowKind.LoopLabel ? + getTypeAtFlowNodeCached(antecedent) : + getTypeAtFlowNode(antecedent); + if (type) { + // If the type at a particular antecedent path is the declared type and the + // reference is known to always be assigned (i.e. when declared and initial types + // are the same), there is no reason to process more antecedents since the only + // possible outcome is subtypes that will be removed in the final union type anyway. + if (type === declaredType && declaredType === initialType) { + return type; + } + if (!contains(antecedentTypes, type)) { + antecedentTypes.push(type); + } + } + } + return antecedentTypes.length === 0 ? undefined : + antecedentTypes.length === 1 ? antecedentTypes[0] : + getUnionType(antecedentTypes); + } + + function narrowTypeByTruthiness(type: Type, expr: Expression, assumeTrue: boolean): Type { + return isMatchingReference(reference, expr) ? getTypeWithFacts(type, assumeTrue ? TypeFacts.Truthy : TypeFacts.Falsy) : type; + } + + function narrowTypeByBinaryExpression(type: Type, expr: BinaryExpression, assumeTrue: boolean): Type { + switch (expr.operatorToken.kind) { + case SyntaxKind.EqualsToken: + return narrowTypeByTruthiness(type, expr.left, assumeTrue); + case SyntaxKind.EqualsEqualsToken: + case SyntaxKind.ExclamationEqualsToken: + case SyntaxKind.EqualsEqualsEqualsToken: + case SyntaxKind.ExclamationEqualsEqualsToken: + if (isNullOrUndefinedLiteral(expr.right)) { + return narrowTypeByNullCheck(type, expr, assumeTrue); + } + if (expr.left.kind === SyntaxKind.TypeOfExpression && expr.right.kind === SyntaxKind.StringLiteral) { + return narrowTypeByTypeof(type, expr, assumeTrue); + } + break; + case SyntaxKind.InstanceOfKeyword: + return narrowTypeByInstanceof(type, expr, assumeTrue); + case SyntaxKind.CommaToken: + return narrowType(type, expr.right, assumeTrue); + } + return type; + } + + function narrowTypeByNullCheck(type: Type, expr: BinaryExpression, assumeTrue: boolean): Type { + // We have '==', '!=', '===', or '!==' operator with 'null' or 'undefined' on the right + const operator = expr.operatorToken.kind; + if (operator === SyntaxKind.ExclamationEqualsToken || operator === SyntaxKind.ExclamationEqualsEqualsToken) { + assumeTrue = !assumeTrue; + } + if (!strictNullChecks || !isMatchingReference(reference, expr.left)) { return type; } + const doubleEquals = operator === SyntaxKind.EqualsEqualsToken || operator === SyntaxKind.ExclamationEqualsToken; + const facts = doubleEquals ? + assumeTrue ? TypeFacts.EQUndefinedOrNull : TypeFacts.NEUndefinedOrNull : + expr.right.kind === SyntaxKind.NullKeyword ? + assumeTrue ? TypeFacts.EQNull : TypeFacts.NENull : + assumeTrue ? TypeFacts.EQUndefined : TypeFacts.NEUndefined; + return getTypeWithFacts(type, facts); + } + + function narrowTypeByTypeof(type: Type, expr: BinaryExpression, assumeTrue: boolean): Type { + // We have '==', '!=', '====', or !==' operator with 'typeof xxx' on the left + // and string literal on the right const left = expr.left; const right = expr.right; - if (left.expression.kind !== SyntaxKind.Identifier || getResolvedSymbol(left.expression) !== symbol) { - return type; - } - if (expr.operatorToken.kind === SyntaxKind.ExclamationEqualsEqualsToken) { - assumeTrue = !assumeTrue; - } - const typeInfo = primitiveTypeInfo[right.text]; - // Don't narrow `undefined` - if (typeInfo && typeInfo.type === undefinedType) { - return type; - } - let flags: TypeFlags; - if (typeInfo) { - flags = typeInfo.flags; - } - else { - assumeTrue = !assumeTrue; - flags = TypeFlags.NumberLike | TypeFlags.StringLike | TypeFlags.ESSymbol | TypeFlags.Boolean; - } - // At this point we can bail if it's not a union - if (!(type.flags & TypeFlags.Union)) { - // If we're on the true branch and the type is a subtype, we should return the primitive type - if (assumeTrue && typeInfo && isTypeSubtypeOf(typeInfo.type, type)) { - return typeInfo.type; + if (!isMatchingReference(reference, left.expression)) { + // For a reference of the form 'x.y', a 'typeof x === ...' type guard resets the + // narrowed type of 'y' to its declared type. + if (containsMatchingReference(reference, left.expression)) { + return declaredType; } - // If the active non-union type would be removed from a union by this type guard, return an empty union - return filterUnion(type) ? type : emptyUnionType; + return type; } - return getUnionType(filter((type as UnionType).types, filterUnion), /*noSubtypeReduction*/ true); - - function filterUnion(type: Type) { - return assumeTrue === !!(type.flags & flags); + if (expr.operatorToken.kind === SyntaxKind.ExclamationEqualsToken || + expr.operatorToken.kind === SyntaxKind.ExclamationEqualsEqualsToken) { + assumeTrue = !assumeTrue; } - } - - function narrowTypeByAnd(type: Type, expr: BinaryExpression, assumeTrue: boolean): Type { - if (assumeTrue) { - // The assumed result is true, therefore we narrow assuming each operand to be true. - return narrowType(narrowType(type, expr.left, /*assumeTrue*/ true), expr.right, /*assumeTrue*/ true); - } - else { - // The assumed result is false. This means either the first operand was false, or the first operand was true - // and the second operand was false. We narrow with those assumptions and union the two resulting types. - return getUnionType([ - narrowType(type, expr.left, /*assumeTrue*/ false), - narrowType(type, expr.right, /*assumeTrue*/ false) - ]); - } - } - - function narrowTypeByOr(type: Type, expr: BinaryExpression, assumeTrue: boolean): Type { - if (assumeTrue) { - // The assumed result is true. This means either the first operand was true, or the first operand was false - // and the second operand was true. We narrow with those assumptions and union the two resulting types. - return getUnionType([ - narrowType(type, expr.left, /*assumeTrue*/ true), - narrowType(type, expr.right, /*assumeTrue*/ true) - ]); - } - else { - // The assumed result is false, therefore we narrow assuming each operand to be false. - return narrowType(narrowType(type, expr.left, /*assumeTrue*/ false), expr.right, /*assumeTrue*/ false); + if (assumeTrue && !(type.flags & TypeFlags.Union)) { + // We narrow a non-union type to an exact primitive type if the non-union type + // is a supertype of that primtive type. For example, type 'any' can be narrowed + // to one of the primitive types. + const targetType = getProperty(typeofTypesByName, right.text); + if (targetType && isTypeSubtypeOf(targetType, type)) { + return targetType; + } } + const facts = assumeTrue ? + getProperty(typeofEQFacts, right.text) || TypeFacts.TypeofEQHostObject : + getProperty(typeofNEFacts, right.text) || TypeFacts.TypeofNEHostObject; + return getTypeWithFacts(type, facts); } function narrowTypeByInstanceof(type: Type, expr: BinaryExpression, assumeTrue: boolean): Type { - // Check that type is not any, assumed result is true, and we have variable symbol on the left - if (isTypeAny(type) || expr.left.kind !== SyntaxKind.Identifier || getResolvedSymbol(expr.left) !== symbol) { + if (!isMatchingReference(reference, expr.left)) { + // For a reference of the form 'x.y', an 'x instanceof T' type guard resets the + // narrowed type of 'y' to its declared type. + if (containsMatchingReference(reference, expr.left)) { + return declaredType; + } + return type; + } + // We never narrow type any in an instanceof guard + if (isTypeAny(type)) { return type; } @@ -7181,98 +7815,79 @@ namespace ts { return type; } - function getNarrowedType(originalType: Type, narrowedTypeCandidate: Type, assumeTrue: boolean) { + function getNarrowedType(type: Type, candidate: Type, assumeTrue: boolean) { if (!assumeTrue) { - if (originalType.flags & TypeFlags.Union) { - return getUnionType(filter((originalType).types, t => !isTypeSubtypeOf(t, narrowedTypeCandidate))); - } - return originalType; + return type.flags & TypeFlags.Union ? + getUnionType(filter((type).types, t => !isTypeSubtypeOf(t, candidate))) : + type; } - - // If the current type is a union type, remove all constituents that aren't assignable to target. If that produces - // 0 candidates, fall back to the assignability check - if (originalType.flags & TypeFlags.Union) { - const assignableConstituents = filter((originalType).types, t => isTypeAssignableTo(t, narrowedTypeCandidate)); + // If the current type is a union type, remove all constituents that aren't assignable to + // the candidate type. If one or more constituents remain, return a union of those. + if (type.flags & TypeFlags.Union) { + const assignableConstituents = filter((type).types, t => isTypeAssignableTo(t, candidate)); if (assignableConstituents.length) { return getUnionType(assignableConstituents); } } - - if (isTypeAssignableTo(narrowedTypeCandidate, originalType)) { - // Narrow to the target type if it's assignable to the current type - return narrowedTypeCandidate; - } - - return originalType; + // If the candidate type is assignable to the target type, narrow to the candidate type. + // Otherwise, if the current type is assignable to the candidate, keep the current type. + // Otherwise, the types are completely unrelated, so narrow to the empty type. + const targetType = type.flags & TypeFlags.TypeParameter ? getApparentType(type) : type; + return isTypeAssignableTo(candidate, targetType) ? candidate : + isTypeAssignableTo(type, candidate) ? type : + emptyUnionType; } function narrowTypeByTypePredicate(type: Type, callExpression: CallExpression, assumeTrue: boolean): Type { - if (type.flags & TypeFlags.Any) { + if (type.flags & TypeFlags.Any || !hasMatchingArgument(callExpression, reference)) { return type; } const signature = getResolvedSignature(callExpression); - const predicate = signature.typePredicate; if (!predicate) { return type; } - if (isIdentifierTypePredicate(predicate)) { - if (callExpression.arguments[predicate.parameterIndex] && - getSymbolAtTypePredicatePosition(callExpression.arguments[predicate.parameterIndex]) === symbol) { - return getNarrowedType(type, predicate.type, assumeTrue); + const predicateArgument = callExpression.arguments[predicate.parameterIndex]; + if (predicateArgument) { + if (isMatchingReference(reference, predicateArgument)) { + return getNarrowedType(type, predicate.type, assumeTrue); + } + if (containsMatchingReference(reference, predicateArgument)) { + return declaredType; + } } } else { const invokedExpression = skipParenthesizedNodes(callExpression.expression); - return narrowTypeByThisTypePredicate(type, predicate, invokedExpression, assumeTrue); - } - return type; - } - - function narrowTypeByThisTypePredicate(type: Type, predicate: ThisTypePredicate, invokedExpression: Expression, assumeTrue: boolean): Type { - if (invokedExpression.kind === SyntaxKind.ElementAccessExpression || invokedExpression.kind === SyntaxKind.PropertyAccessExpression) { - const accessExpression = invokedExpression as ElementAccessExpression | PropertyAccessExpression; - const possibleIdentifier = skipParenthesizedNodes(accessExpression.expression); - if (possibleIdentifier.kind === SyntaxKind.Identifier && getSymbolAtTypePredicatePosition(possibleIdentifier) === symbol) { - return getNarrowedType(type, predicate.type, assumeTrue); + if (invokedExpression.kind === SyntaxKind.ElementAccessExpression || invokedExpression.kind === SyntaxKind.PropertyAccessExpression) { + const accessExpression = invokedExpression as ElementAccessExpression | PropertyAccessExpression; + const possibleReference = skipParenthesizedNodes(accessExpression.expression); + if (isMatchingReference(reference, possibleReference)) { + return getNarrowedType(type, predicate.type, assumeTrue); + } + if (containsMatchingReference(reference, possibleReference)) { + return declaredType; + } } } return type; } - function getSymbolAtTypePredicatePosition(expr: Expression): Symbol { - expr = skipParenthesizedNodes(expr); - switch (expr.kind) { - case SyntaxKind.Identifier: - case SyntaxKind.PropertyAccessExpression: - return getSymbolOfEntityNameOrPropertyAccessExpression(expr as (Identifier | PropertyAccessExpression)); - } - } - // Narrow the given type based on the given expression having the assumed boolean value. The returned type // will be a subtype or the same type as the argument. function narrowType(type: Type, expr: Expression, assumeTrue: boolean): Type { switch (expr.kind) { + case SyntaxKind.Identifier: + case SyntaxKind.ThisKeyword: + case SyntaxKind.PropertyAccessExpression: + return narrowTypeByTruthiness(type, expr, assumeTrue); case SyntaxKind.CallExpression: return narrowTypeByTypePredicate(type, expr, assumeTrue); case SyntaxKind.ParenthesizedExpression: return narrowType(type, (expr).expression, assumeTrue); case SyntaxKind.BinaryExpression: - const operator = (expr).operatorToken.kind; - if (operator === SyntaxKind.EqualsEqualsEqualsToken || operator === SyntaxKind.ExclamationEqualsEqualsToken) { - return narrowTypeByEquality(type, expr, assumeTrue); - } - else if (operator === SyntaxKind.AmpersandAmpersandToken) { - return narrowTypeByAnd(type, expr, assumeTrue); - } - else if (operator === SyntaxKind.BarBarToken) { - return narrowTypeByOr(type, expr, assumeTrue); - } - else if (operator === SyntaxKind.InstanceOfKeyword) { - return narrowTypeByInstanceof(type, expr, assumeTrue); - } - break; + return narrowTypeByBinaryExpression(type, expr, assumeTrue); case SyntaxKind.PrefixUnaryExpression: if ((expr).operator === SyntaxKind.ExclamationToken) { return narrowType(type, (expr).operand, !assumeTrue); @@ -7283,6 +7898,30 @@ namespace ts { } } + function getTypeOfSymbolAtLocation(symbol: Symbol, location: Node) { + // If we have an identifier or a property access at the given location, if the location is + // an dotted name expression, and if the location is not an assignment target, obtain the type + // of the expression (which will reflect control flow analysis). If the expression indeed + // resolved to the given symbol, return the narrowed type. + if (location.kind === SyntaxKind.Identifier) { + if (isRightSideOfQualifiedNameOrPropertyAccess(location)) { + location = location.parent; + } + if (isExpression(location) && !isAssignmentTarget(location)) { + const type = checkExpression(location); + if (getExportSymbolOfValueSymbolIfExported(getNodeLinks(location).resolvedSymbol) === symbol) { + return type; + } + } + } + // The location isn't a reference to the given symbol, meaning we're being asked + // a hypothetical question of what type the symbol would have if there was a reference + // to it at the given location. Since we have no control flow information for the + // hypotherical reference (control flow information is created and attached by the + // binder), we simply return the declared type of the symbol. + return getTypeOfSymbol(symbol); + } + function skipParenthesizedNodes(expression: Expression): Expression { while (expression.kind === SyntaxKind.ParenthesizedExpression) { expression = (expression as ParenthesizedExpression).expression; @@ -7341,7 +7980,21 @@ namespace ts { checkCollisionWithCapturedThisVariable(node, node); checkNestedBlockScopedBinding(node, symbol); - return getNarrowedTypeOfSymbol(localOrExportSymbol, node); + const type = getTypeOfSymbol(localOrExportSymbol); + if (!(localOrExportSymbol.flags & SymbolFlags.Variable) || isAssignmentTarget(node)) { + return type; + } + const declaration = localOrExportSymbol.valueDeclaration; + const defaultsToDeclaredType = !strictNullChecks || type.flags & TypeFlags.Any || !declaration || + getRootDeclaration(declaration).kind === SyntaxKind.Parameter || isInAmbientContext(declaration) || + getContainingFunctionOrModule(declaration) !== getContainingFunctionOrModule(node); + const flowType = getFlowTypeOfReference(node, type, defaultsToDeclaredType ? type : undefinedType); + if (strictNullChecks && !(type.flags & TypeFlags.Any) && !(getNullableKind(type) & TypeFlags.Undefined) && getNullableKind(flowType) & TypeFlags.Undefined) { + error(node, Diagnostics.Variable_0_is_used_before_being_assigned, symbolToString(symbol)); + // Return the declared type to reduce follow-on errors + return type; + } + return flowType; } function isInsideFunction(node: Node, threshold: Node): boolean { @@ -7413,11 +8066,10 @@ namespace ts { // check if node is used as LHS in some assignment expression let isAssigned = false; - if (current.parent.kind === SyntaxKind.BinaryExpression) { - isAssigned = (current.parent).left === current && isAssignmentOperator((current.parent).operatorToken.kind); + if (isAssignmentTarget(current)) { + isAssigned = true; } - - if ((current.parent.kind === SyntaxKind.PrefixUnaryExpression || current.parent.kind === SyntaxKind.PostfixUnaryExpression)) { + else if ((current.parent.kind === SyntaxKind.PrefixUnaryExpression || current.parent.kind === SyntaxKind.PostfixUnaryExpression)) { const expr = current.parent; isAssigned = expr.operator === SyntaxKind.PlusPlusToken || expr.operator === SyntaxKind.MinusMinusToken; } @@ -7557,10 +8209,35 @@ namespace ts { if (needToCaptureLexicalThis) { captureLexicalThis(node, container); } - + if (isFunctionLike(container)) { + // If this is a function in a JS file, it might be a class method. Check if it's the RHS + // of a x.prototype.y = function [name]() { .... } + if (container.kind === SyntaxKind.FunctionExpression && + isInJavaScriptFile(container.parent) && + getSpecialPropertyAssignmentKind(container.parent) === SpecialPropertyAssignmentKind.PrototypeProperty) { + // Get the 'x' of 'x.prototype.y = f' (here, 'f' is 'container') + const className = (((container.parent as BinaryExpression) // x.prototype.y = f + .left as PropertyAccessExpression) // x.prototype.y + .expression as PropertyAccessExpression) // x.prototype + .expression; // x + const classSymbol = checkExpression(className).symbol; + if (classSymbol && classSymbol.members && (classSymbol.flags & SymbolFlags.Function)) { + return getInferredClassType(classSymbol); + } + } + const type = getContextuallyTypedThisType(container); + if (type) { + return type; + } + const signature = getSignatureFromDeclaration(container); + if (signature.thisType) { + return signature.thisType; + } + } if (isClassLike(container.parent)) { const symbol = getSymbolOfNode(container.parent); - return container.flags & NodeFlags.Static ? getTypeOfSymbol(symbol) : (getDeclaredTypeOfSymbol(symbol)).thisType; + const type = container.flags & NodeFlags.Static ? getTypeOfSymbol(symbol) : (getDeclaredTypeOfSymbol(symbol)).thisType; + return getFlowTypeOfReference(node, type, type); } if (isInJavaScriptFile(node)) { @@ -7568,24 +8245,12 @@ namespace ts { if (type && type !== unknownType) { return type; } - - // If this is a function in a JS file, it might be a class method. Check if it's the RHS - // of a x.prototype.y = function [name]() { .... } - if (container.kind === SyntaxKind.FunctionExpression) { - if (getSpecialPropertyAssignmentKind(container.parent) === SpecialPropertyAssignmentKind.PrototypeProperty) { - // Get the 'x' of 'x.prototype.y = f' (here, 'f' is 'container') - const className = (((container.parent as BinaryExpression) // x.prototype.y = f - .left as PropertyAccessExpression) // x.prototype.y - .expression as PropertyAccessExpression) // x.prototype - .expression; // x - const classSymbol = checkExpression(className).symbol; - if (classSymbol && classSymbol.members && (classSymbol.flags & SymbolFlags.Function)) { - return getInferredClassType(classSymbol); - } - } - } } + if (compilerOptions.noImplicitThis) { + // With noImplicitThis, functions may not reference 'this' if it has type 'any' + error(node, Diagnostics.this_implicitly_has_type_any_because_it_does_not_have_a_type_annotation); + } return anyType; } @@ -7803,38 +8468,49 @@ namespace ts { } } + function getContextuallyTypedThisType(func: FunctionLikeDeclaration): Type { + if (isContextSensitiveFunctionOrObjectLiteralMethod(func) && func.kind !== SyntaxKind.ArrowFunction) { + const contextualSignature = getContextualSignature(func); + if (contextualSignature) { + return contextualSignature.thisType; + } + } + + return undefined; + } + // Return contextual type of parameter or undefined if no contextual type is available function getContextuallyTypedParameterType(parameter: ParameterDeclaration): Type { const func = parameter.parent; - if (isFunctionExpressionOrArrowFunction(func) || isObjectLiteralMethod(func)) { - if (isContextSensitive(func)) { - const contextualSignature = getContextualSignature(func); - if (contextualSignature) { + if (isContextSensitiveFunctionOrObjectLiteralMethod(func)) { + const contextualSignature = getContextualSignature(func); + if (contextualSignature) { + const funcHasRestParameters = hasRestParameter(func); + const len = func.parameters.length - (funcHasRestParameters ? 1 : 0); + const indexOfParameter = indexOf(func.parameters, parameter); + if (indexOfParameter < len) { + return getTypeAtPosition(contextualSignature, indexOfParameter); + } - const funcHasRestParameters = hasRestParameter(func); - const len = func.parameters.length - (funcHasRestParameters ? 1 : 0); - const indexOfParameter = indexOf(func.parameters, parameter); - if (indexOfParameter < len) { - return getTypeAtPosition(contextualSignature, indexOfParameter); - } - - // If last parameter is contextually rest parameter get its type - if (funcHasRestParameters && - indexOfParameter === (func.parameters.length - 1) && - isRestParameterIndex(contextualSignature, func.parameters.length - 1)) { - return getTypeOfSymbol(lastOrUndefined(contextualSignature.parameters)); - } + // If last parameter is contextually rest parameter get its type + if (funcHasRestParameters && + indexOfParameter === (func.parameters.length - 1) && + isRestParameterIndex(contextualSignature, func.parameters.length - 1)) { + return getTypeOfSymbol(lastOrUndefined(contextualSignature.parameters)); } } } return undefined; } - // In a variable, parameter or property declaration with a type annotation, the contextual type of an initializer - // expression is the type of the variable, parameter or property. Otherwise, in a parameter declaration of a - // contextually typed function expression, the contextual type of an initializer expression is the contextual type - // of the parameter. Otherwise, in a variable or parameter declaration with a binding pattern name, the contextual - // type of an initializer expression is the type implied by the binding pattern. + // In a variable, parameter or property declaration with a type annotation, + // the contextual type of an initializer expression is the type of the variable, parameter or property. + // Otherwise, in a parameter declaration of a contextually typed function expression, + // the contextual type of an initializer expression is the contextual type of the parameter. + // Otherwise, in a variable or parameter declaration with a binding pattern name, + // the contextual type of an initializer expression is the type implied by the binding pattern. + // Otherwise, in a binding pattern inside a variable or parameter declaration, + // the contextual type of an initializer expression is the type annotation of the containing declaration, if present. function getContextualTypeForInitializerExpression(node: Expression): Type { const declaration = node.parent; if (node === declaration.initializer) { @@ -7850,6 +8526,18 @@ namespace ts { if (isBindingPattern(declaration.name)) { return getTypeFromBindingPattern(declaration.name, /*includePatternInType*/ true); } + if (isBindingPattern(declaration.parent)) { + const parentDeclaration = declaration.parent.parent; + const name = declaration.propertyName || declaration.name; + if (isVariableLike(parentDeclaration) && + parentDeclaration.type && + !isBindingPattern(name)) { + const text = getTextOfPropertyName(name); + if (text) { + return getTypeOfPropertyOfType(getTypeFromTypeNode(parentDeclaration.type), text); + } + } + } } return undefined; } @@ -7913,7 +8601,7 @@ namespace ts { const args = getEffectiveCallArguments(callTarget); const argIndex = indexOf(args, arg); if (argIndex >= 0) { - const signature = getResolvedSignature(callTarget); + const signature = getResolvedOrAnySignature(callTarget); return getTypeAtPosition(signature, argIndex); } return undefined; @@ -8172,6 +8860,12 @@ namespace ts { : undefined; } + function getContextualTypeForFunctionLikeDeclaration(node: FunctionExpression | MethodDeclaration) { + return isObjectLiteralMethod(node) + ? getContextualTypeForObjectLiteralMethod(node) + : getApparentTypeOfContextualType(node); + } + // Return the contextual signature for a given expression node. A contextual type provides a // contextual signature if it has a single call signature and if that call signature is non-generic. // If the contextual type is a union type, get the signature from each type possible and if they are @@ -8179,9 +8873,7 @@ namespace ts { // union type of return types from these signatures function getContextualSignature(node: FunctionExpression | MethodDeclaration): Signature { Debug.assert(node.kind !== SyntaxKind.MethodDeclaration || isObjectLiteralMethod(node)); - const type = isObjectLiteralMethod(node) - ? getContextualTypeForObjectLiteralMethod(node) - : getApparentTypeOfContextualType(node); + const type = getContextualTypeForFunctionLikeDeclaration(node); if (!type) { return undefined; } @@ -8197,7 +8889,7 @@ namespace ts { // This signature will contribute to contextual union signature signatureList = [signature]; } - else if (!compareSignaturesIdentical(signatureList[0], signature, /*partialMatch*/ false, /*ignoreReturnTypes*/ true, compareTypesIdentical)) { + else if (!compareSignaturesIdentical(signatureList[0], signature, /*partialMatch*/ false, /*ignoreThisTypes*/ true, /*ignoreReturnTypes*/ true, compareTypesIdentical)) { // Signatures aren't identical, do not use return undefined; } @@ -8238,23 +8930,6 @@ namespace ts { return mapper && mapper.context; } - // A node is an assignment target if it is on the left hand side of an '=' token, if it is parented by a property - // assignment in an object literal that is an assignment target, or if it is parented by an array literal that is - // an assignment target. Examples include 'a = xxx', '{ p: a } = xxx', '[{ p: a}] = xxx'. - function isAssignmentTarget(node: Node): boolean { - const parent = node.parent; - if (parent.kind === SyntaxKind.BinaryExpression && (parent).operatorToken.kind === SyntaxKind.EqualsToken && (parent).left === node) { - return true; - } - if (parent.kind === SyntaxKind.PropertyAssignment) { - return isAssignmentTarget(parent.parent); - } - if (parent.kind === SyntaxKind.ArrayLiteralExpression) { - return isAssignmentTarget(parent); - } - return false; - } - function checkSpreadElementExpression(node: SpreadElementExpression, contextualMapper?: TypeMapper): Type { // It is usually not safe to call checkExpressionCached if we can be contextually typing. // You can tell that we are contextually typing because of the contextualMapper parameter. @@ -8336,7 +9011,7 @@ namespace ts { } } } - return createArrayType(elementTypes.length ? getUnionType(elementTypes) : undefinedType); + return createArrayType(elementTypes.length ? getUnionType(elementTypes) : emptyArrayElementType); } function isNumericName(name: DeclarationName): boolean { @@ -8535,7 +9210,12 @@ namespace ts { checkJsxOpeningLikeElement(node.openingElement); // Perform resolution on the closing tag so that rename/go to definition/etc work - getJsxTagSymbol(node.closingElement); + if (isJsxIntrinsicIdentifier(node.closingElement.tagName)) { + getIntrinsicTagSymbol(node.closingElement); + } + else { + checkExpression(node.closingElement.tagName); + } // Check children for (const child of node.children) { @@ -8645,15 +9325,6 @@ namespace ts { return jsxTypes[name]; } - function getJsxTagSymbol(node: JsxOpeningLikeElement | JsxClosingElement): Symbol { - if (isJsxIntrinsicIdentifier(node.tagName)) { - return getIntrinsicTagSymbol(node); - } - else { - return checkExpression(node.tagName).symbol; - } - } - /** * Looks up an intrinsic tag name and returns a symbol that either points to an intrinsic * property (in which case nodeLinks.jsxFlags will be IntrinsicNamedElement) or an intrinsic @@ -8784,18 +9455,20 @@ namespace ts { if (!elemClassType || !isTypeAssignableTo(elemInstanceType, elemClassType)) { // Is this is a stateless function component? See if its single signature's return type is // assignable to the JSX Element Type - const elemType = checkExpression(node.tagName); - const callSignatures = elemType && getSignaturesOfType(elemType, SignatureKind.Call); - const callSignature = callSignatures && callSignatures.length > 0 && callSignatures[0]; - const callReturnType = callSignature && getReturnTypeOfSignature(callSignature); - let paramType = callReturnType && (callSignature.parameters.length === 0 ? emptyObjectType : getTypeOfSymbol(callSignature.parameters[0])); - if (callReturnType && isTypeAssignableTo(callReturnType, jsxElementType)) { - // Intersect in JSX.IntrinsicAttributes if it exists - const intrinsicAttributes = getJsxType(JsxNames.IntrinsicAttributes); - if (intrinsicAttributes !== unknownType) { - paramType = intersectTypes(intrinsicAttributes, paramType); + if (jsxElementType) { + const elemType = checkExpression(node.tagName); + const callSignatures = elemType && getSignaturesOfType(elemType, SignatureKind.Call); + const callSignature = callSignatures && callSignatures.length > 0 && callSignatures[0]; + const callReturnType = callSignature && getReturnTypeOfSignature(callSignature); + let paramType = callReturnType && (callSignature.parameters.length === 0 ? emptyObjectType : getTypeOfSymbol(callSignature.parameters[0])); + if (callReturnType && isTypeAssignableTo(callReturnType, jsxElementType)) { + // Intersect in JSX.IntrinsicAttributes if it exists + const intrinsicAttributes = getJsxType(JsxNames.IntrinsicAttributes); + if (intrinsicAttributes !== unknownType) { + paramType = intersectTypes(intrinsicAttributes, paramType); + } + return links.resolvedJsxType = paramType; } - return links.resolvedJsxType = paramType; } } @@ -9015,14 +9688,11 @@ namespace ts { } // Property is known to be private or protected at this point - // Get the declaring and enclosing class instance types - const enclosingClassDeclaration = getContainingClass(node); - const enclosingClass = enclosingClassDeclaration ? getDeclaredTypeOfSymbol(getSymbolOfNode(enclosingClassDeclaration)) : undefined; - - // Private property is accessible if declaring and enclosing class are the same + // Private property is accessible if the property is within the declaring class if (flags & NodeFlags.Private) { - if (declaringClass !== enclosingClass) { + const declaringClassDeclaration = getClassLikeDeclarationOfSymbol(getParentOfSymbol(prop)); + if (!isNodeWithinClass(node, declaringClassDeclaration)) { error(errorNode, Diagnostics.Property_0_is_private_and_only_accessible_within_class_1, symbolToString(prop), typeToString(declaringClass)); return false; } @@ -9035,8 +9705,15 @@ namespace ts { if (left.kind === SyntaxKind.SuperKeyword) { return true; } - // A protected property is accessible in the declaring class and classes derived from it - if (!enclosingClass || !hasBaseType(enclosingClass, declaringClass)) { + + // Get the enclosing class that has the declaring class as its base type + const enclosingClass = forEachEnclosingClass(node, enclosingDeclaration => { + const enclosingClass = getDeclaredTypeOfSymbol(getSymbolOfNode(enclosingDeclaration)); + return hasBaseType(enclosingClass, declaringClass) ? enclosingClass : undefined; + }); + + // A protected property is accessible if the property is within the declaring class or classes derived from it + if (!enclosingClass) { error(errorNode, Diagnostics.Property_0_is_protected_and_only_accessible_within_class_1_and_its_subclasses, symbolToString(prop), typeToString(declaringClass)); return false; } @@ -9058,6 +9735,21 @@ namespace ts { return true; } + function checkNonNullExpression(node: Expression | QualifiedName) { + const type = checkExpression(node); + if (strictNullChecks) { + const kind = getNullableKind(type); + if (kind) { + error(node, kind & TypeFlags.Undefined ? kind & TypeFlags.Null ? + Diagnostics.Object_is_possibly_null_or_undefined : + Diagnostics.Object_is_possibly_undefined : + Diagnostics.Object_is_possibly_null); + } + return getNonNullableType(type); + } + return type; + } + function checkPropertyAccessExpression(node: PropertyAccessExpression) { return checkPropertyAccessExpressionOrQualifiedName(node, node.expression, node.name); } @@ -9067,7 +9759,7 @@ namespace ts { } function checkPropertyAccessExpressionOrQualifiedName(node: PropertyAccessExpression | QualifiedName, left: Expression | QualifiedName, right: Identifier) { - const type = checkExpression(left); + const type = checkNonNullExpression(left); if (isTypeAny(type)) { return type; } @@ -9090,7 +9782,26 @@ namespace ts { if (prop.parent && prop.parent.flags & SymbolFlags.Class) { checkClassPropertyAccess(node, left, apparentType, prop); } - return getTypeOfSymbol(prop); + + const propType = getTypeOfSymbol(prop); + if (node.kind !== SyntaxKind.PropertyAccessExpression || !(prop.flags & (SymbolFlags.Variable | SymbolFlags.Property)) || isAssignmentTarget(node)) { + return propType; + } + const leftmostNode = getLeftmostIdentifierOrThis(node); + if (!leftmostNode) { + return propType; + } + if (leftmostNode.kind === SyntaxKind.Identifier) { + const leftmostSymbol = getExportSymbolOfValueSymbolIfExported(getResolvedSymbol(leftmostNode)); + if (!leftmostSymbol) { + return propType; + } + const declaration = leftmostSymbol.valueDeclaration; + if (!declaration || declaration.kind !== SyntaxKind.VariableDeclaration && declaration.kind !== SyntaxKind.Parameter && declaration.kind !== SyntaxKind.BindingElement) { + return propType; + } + } + return getFlowTypeOfReference(node, propType, propType); } function isValidPropertyAccess(node: PropertyAccessExpression | QualifiedName, propertyName: string): boolean { @@ -9175,7 +9886,7 @@ namespace ts { } // Obtain base constraint such that we can bail out if the constraint is an unknown type - const objectType = getApparentType(checkExpression(node.expression)); + const objectType = getApparentType(checkNonNullExpression(node.expression)); const indexType = node.argumentExpression ? checkExpression(node.argumentExpression) : unknownType; if (objectType === unknownType) { @@ -9532,6 +10243,12 @@ namespace ts { context.failedTypeParameterIndex = undefined; } + if (signature.thisType) { + const thisArgumentNode = getThisArgumentOfCall(node); + const thisArgumentType = thisArgumentNode ? checkExpression(thisArgumentNode) : voidType; + inferTypes(context, thisArgumentType, signature.thisType); + } + // We perform two passes over the arguments. In the first pass we infer from all arguments, but use // wildcards for all context sensitive function expressions. const argCount = getEffectiveArgumentCount(node, args, signature); @@ -9605,6 +10322,20 @@ namespace ts { } function checkApplicableSignature(node: CallLikeExpression, args: Expression[], signature: Signature, relation: Map, excludeArgument: boolean[], reportErrors: boolean) { + + if (signature.thisType && signature.thisType !== voidType && node.kind !== SyntaxKind.NewExpression) { + // If the called expression is not of the form `x.f` or `x["f"]`, then sourceType = voidType + // If the signature's 'this' type is voidType, then the check is skipped -- anything is compatible. + // If the expression is a new expression, then the check is skipped. + const thisArgumentNode = getThisArgumentOfCall(node); + const thisArgumentType = thisArgumentNode ? checkExpression(thisArgumentNode) : voidType; + const errorNode = reportErrors ? (thisArgumentNode || node) : undefined; + const headMessage = Diagnostics.The_this_context_of_type_0_is_not_assignable_to_method_s_this_of_type_1; + if (!checkTypeRelatedTo(thisArgumentType, signature.thisType, relation, errorNode, headMessage)) { + return false; + } + } + const headMessage = Diagnostics.Argument_of_type_0_is_not_assignable_to_parameter_of_type_1; const argCount = getEffectiveArgumentCount(node, args, signature); for (let i = 0; i < argCount; i++) { const arg = getEffectiveArgument(node, args, i); @@ -9624,7 +10355,6 @@ namespace ts { // Use argument expression as error location when reporting errors const errorNode = reportErrors ? getEffectiveArgumentErrorNode(node, i, arg) : undefined; - const headMessage = Diagnostics.Argument_of_type_0_is_not_assignable_to_parameter_of_type_1; if (!checkTypeRelatedTo(argType, paramType, relation, errorNode, headMessage)) { return false; } @@ -9634,6 +10364,21 @@ namespace ts { return true; } + /** + * Returns the this argument in calls like x.f(...) and x[f](...). Undefined otherwise. + */ + function getThisArgumentOfCall(node: CallLikeExpression): LeftHandSideExpression { + if (node.kind === SyntaxKind.CallExpression) { + const callee = (node).expression; + if (callee.kind === SyntaxKind.PropertyAccessExpression) { + return (callee as PropertyAccessExpression).expression; + } + else if (callee.kind === SyntaxKind.ElementAccessExpression) { + return (callee as ElementAccessExpression).expression; + } + } + } + /** * Returns the effective arguments for an expression that works like a function invocation. * @@ -9901,7 +10646,7 @@ namespace ts { return getEffectiveDecoratorArgumentType(node, argIndex); } else if (argIndex === 0 && node.kind === SyntaxKind.TaggedTemplateExpression) { - return globalTemplateStringsArrayType; + return getGlobalTemplateStringsArrayType(); } // This is not a synthetic argument, so we return 'undefined' @@ -10190,7 +10935,7 @@ namespace ts { return resolveUntypedCall(node); } - const funcType = checkExpression(node.expression); + const funcType = checkNonNullExpression(node.expression); const apparentType = getApparentType(funcType); if (apparentType === unknownType) { @@ -10243,7 +10988,7 @@ namespace ts { } } - let expressionType = checkExpression(node.expression); + let expressionType = checkNonNullExpression(node.expression); // If expressionType's apparent type(section 3.8.1) is an object type with one or // more construct signatures, the expression is processed in the same manner as a @@ -10291,13 +11036,16 @@ namespace ts { // If expressionType's apparent type is an object type with no construct signatures but // one or more call signatures, the expression is processed as a function call. A compile-time // error occurs if the result of the function call is not Void. The type of the result of the - // operation is Any. + // operation is Any. It is an error to have a Void this type. const callSignatures = getSignaturesOfType(expressionType, SignatureKind.Call); if (callSignatures.length) { const signature = resolveCall(node, callSignatures, candidatesOutArray); if (getReturnTypeOfSignature(signature) !== voidType) { error(node, Diagnostics.Only_a_void_function_can_be_called_with_the_new_keyword); } + if (signature.thisType === voidType) { + error(node, Diagnostics.A_function_that_is_called_with_the_new_keyword_cannot_have_a_this_type_that_is_void); + } return signature; } @@ -10407,6 +11155,20 @@ namespace ts { return resolveCall(node, callSignatures, candidatesOutArray, headMessage); } + function resolveSignature(node: CallLikeExpression, candidatesOutArray?: Signature[]): Signature { + switch (node.kind) { + case SyntaxKind.CallExpression: + return resolveCallExpression(node, candidatesOutArray); + case SyntaxKind.NewExpression: + return resolveNewExpression(node, candidatesOutArray); + case SyntaxKind.TaggedTemplateExpression: + return resolveTaggedTemplateExpression(node, candidatesOutArray); + case SyntaxKind.Decorator: + return resolveDecorator(node, candidatesOutArray); + } + Debug.fail("Branch in 'resolveSignature' should be unreachable."); + } + // candidatesOutArray is passed by signature help in the language service, and collectCandidates // must fill it up with the appropriate candidate signatures function getResolvedSignature(node: CallLikeExpression, candidatesOutArray?: Signature[]): Signature { @@ -10415,26 +11177,23 @@ namespace ts { // However, it is possible that either candidatesOutArray was not passed in the first time, // or that a different candidatesOutArray was passed in. Therefore, we need to redo the work // to correctly fill the candidatesOutArray. - if (!links.resolvedSignature || candidatesOutArray) { - links.resolvedSignature = anySignature; - - if (node.kind === SyntaxKind.CallExpression) { - links.resolvedSignature = resolveCallExpression(node, candidatesOutArray); - } - else if (node.kind === SyntaxKind.NewExpression) { - links.resolvedSignature = resolveNewExpression(node, candidatesOutArray); - } - else if (node.kind === SyntaxKind.TaggedTemplateExpression) { - links.resolvedSignature = resolveTaggedTemplateExpression(node, candidatesOutArray); - } - else if (node.kind === SyntaxKind.Decorator) { - links.resolvedSignature = resolveDecorator(node, candidatesOutArray); - } - else { - Debug.fail("Branch in 'getResolvedSignature' should be unreachable."); - } + const cached = links.resolvedSignature; + if (cached && cached !== anySignature && !candidatesOutArray) { + return cached; } - return links.resolvedSignature; + links.resolvedSignature = anySignature; + const result = resolveSignature(node, candidatesOutArray); + // If signature resolution originated in control flow type analysis (for example to compute the + // assigned type in a flow assignment) we don't cache the result as it may be based on temporary + // types from the control flow analysis. + links.resolvedSignature = flowStackStart === flowStackCount ? result : cached; + return result; + } + + function getResolvedOrAnySignature(node: CallLikeExpression) { + // If we're already in the process of resolving the given signature, don't resolve again as + // that could cause infinite recursion. Instead, return anySignature. + return getNodeLinks(node).resolvedSignature === anySignature ? anySignature : getResolvedSignature(node); } function getInferredClassType(symbol: Symbol) { @@ -10500,21 +11259,32 @@ namespace ts { const targetType = getTypeFromTypeNode(node.type); if (produceDiagnostics && targetType !== unknownType) { const widenedType = getWidenedType(exprType); - - // Permit 'number[] | "foo"' to be asserted to 'string'. - const bothAreStringLike = maybeTypeOfKind(targetType, TypeFlags.StringLike) && - maybeTypeOfKind(widenedType, TypeFlags.StringLike); - if (!bothAreStringLike && !(isTypeAssignableTo(targetType, widenedType))) { - checkTypeAssignableTo(exprType, targetType, node, Diagnostics.Neither_type_0_nor_type_1_is_assignable_to_the_other); + if (!isTypeComparableTo(targetType, widenedType)) { + checkTypeComparableTo(exprType, targetType, node, Diagnostics.Type_0_cannot_be_converted_to_type_1); } } return targetType; } + function checkNonNullAssertion(node: NonNullExpression) { + return getNonNullableType(checkExpression(node.expression)); + } + + function getTypeOfParameter(symbol: Symbol) { + const type = getTypeOfSymbol(symbol); + if (strictNullChecks) { + const declaration = symbol.valueDeclaration; + if (declaration && (declaration).initializer) { + return addNullableKind(type, TypeFlags.Undefined); + } + } + return type; + } + function getTypeAtPosition(signature: Signature, pos: number): Type { return signature.hasRestParameter ? - pos < signature.parameters.length - 1 ? getTypeOfSymbol(signature.parameters[pos]) : getRestTypeOfSignature(signature) : - pos < signature.parameters.length ? getTypeOfSymbol(signature.parameters[pos]) : anyType; + pos < signature.parameters.length - 1 ? getTypeOfParameter(signature.parameters[pos]) : getRestTypeOfSignature(signature) : + pos < signature.parameters.length ? getTypeOfParameter(signature.parameters[pos]) : anyType; } function assignContextualParameterTypes(signature: Signature, context: Signature, mapper: TypeMapper) { @@ -10640,7 +11410,8 @@ namespace ts { } } else { - types = checkAndAggregateReturnExpressionTypes(func.body, contextualMapper, isAsync); + const hasImplicitReturn = !!(func.flags & NodeFlags.HasImplicitReturn); + types = checkAndAggregateReturnExpressionTypes(func.body, contextualMapper, isAsync, hasImplicitReturn); if (types.length === 0) { if (isAsync) { // For an async function, the return type will not be void, but rather a Promise for void. @@ -10720,9 +11491,9 @@ namespace ts { return aggregatedTypes; } - function checkAndAggregateReturnExpressionTypes(body: Block, contextualMapper?: TypeMapper, isAsync?: boolean): Type[] { + function checkAndAggregateReturnExpressionTypes(body: Block, contextualMapper: TypeMapper, isAsync: boolean, hasImplicitReturn: boolean): Type[] { const aggregatedTypes: Type[] = []; - + let hasOmittedExpressions = false; forEachReturnStatement(body, returnStatement => { const expr = returnStatement.expression; if (expr) { @@ -10734,13 +11505,19 @@ namespace ts { // the native Promise type by the caller. type = checkAwaitedType(type, body.parent, Diagnostics.Return_expression_in_async_function_does_not_have_a_valid_callable_then_member); } - if (!contains(aggregatedTypes, type)) { aggregatedTypes.push(type); } } + else { + hasOmittedExpressions = true; + } }); - + if (strictNullChecks && aggregatedTypes.length && (hasOmittedExpressions || hasImplicitReturn)) { + if (!contains(aggregatedTypes, undefinedType)) { + aggregatedTypes.push(undefinedType); + } + } return aggregatedTypes; } @@ -10777,16 +11554,19 @@ namespace ts { // NOTE: having returnType !== undefined is a precondition for entering this branch so func.type will always be present error(func.type, Diagnostics.A_function_whose_declared_type_is_neither_void_nor_any_must_return_a_value); } + else if (returnType && strictNullChecks && !isTypeAssignableTo(undefinedType, returnType)) { + error(func.type, Diagnostics.Function_lacks_ending_return_statement_and_return_type_does_not_include_undefined); + } else if (compilerOptions.noImplicitReturns) { if (!returnType) { // If return type annotation is omitted check if function has any explicit return statements. // If it does not have any - its inferred return type is void - don't do any checks. // Otherwise get inferred return type from function body and report error only if it is not void / anytype - const inferredReturnType = hasExplicitReturn - ? getReturnTypeOfSignature(getSignatureFromDeclaration(func)) - : voidType; - - if (inferredReturnType === voidType || isTypeAny(inferredReturnType)) { + if (!hasExplicitReturn) { + return; + } + const inferredReturnType = getReturnTypeOfSignature(getSignatureFromDeclaration(func)); + if (isUnwrappedReturnTypeVoidOrAny(func, inferredReturnType)) { return; } } @@ -11024,7 +11804,8 @@ namespace ts { return booleanType; case SyntaxKind.PlusPlusToken: case SyntaxKind.MinusMinusToken: - const ok = checkArithmeticOperandType(node.operand, operandType, Diagnostics.An_arithmetic_operand_must_be_of_type_any_number_or_an_enum_type); + const ok = checkArithmeticOperandType(node.operand, getNonNullableType(operandType), + Diagnostics.An_arithmetic_operand_must_be_of_type_any_number_or_an_enum_type); if (ok) { // run check only if former checks succeeded to avoid reporting cascading errors checkReferenceExpression(node.operand, @@ -11038,7 +11819,8 @@ namespace ts { function checkPostfixUnaryExpression(node: PostfixUnaryExpression): Type { const operandType = checkExpression(node.operand); - const ok = checkArithmeticOperandType(node.operand, operandType, Diagnostics.An_arithmetic_operand_must_be_of_type_any_number_or_an_enum_type); + const ok = checkArithmeticOperandType(node.operand, getNonNullableType(operandType), + Diagnostics.An_arithmetic_operand_must_be_of_type_any_number_or_an_enum_type); if (ok) { // run check only if former checks succeeded to avoid reporting cascading errors checkReferenceExpression(node.operand, @@ -11133,39 +11915,43 @@ namespace ts { function checkObjectLiteralAssignment(node: ObjectLiteralExpression, sourceType: Type, contextualMapper?: TypeMapper): Type { const properties = node.properties; for (const p of properties) { - if (p.kind === SyntaxKind.PropertyAssignment || p.kind === SyntaxKind.ShorthandPropertyAssignment) { - const name = (p).name; - if (name.kind === SyntaxKind.ComputedPropertyName) { - checkComputedPropertyName(name); - } - if (isComputedNonLiteralName(name)) { - continue; - } + checkObjectLiteralDestructuringPropertyAssignment(sourceType, p, contextualMapper); + } + return sourceType; + } - const text = getTextOfPropertyName(name); - const type = isTypeAny(sourceType) - ? sourceType - : getTypeOfPropertyOfType(sourceType, text) || - isNumericLiteralName(text) && getIndexTypeOfType(sourceType, IndexKind.Number) || - getIndexTypeOfType(sourceType, IndexKind.String); - if (type) { - if (p.kind === SyntaxKind.ShorthandPropertyAssignment) { - checkDestructuringAssignment(p, type); - } - else { - // non-shorthand property assignments should always have initializers - checkDestructuringAssignment((p).initializer, type); - } + function checkObjectLiteralDestructuringPropertyAssignment(objectLiteralType: Type, property: ObjectLiteralElement, contextualMapper?: TypeMapper) { + if (property.kind === SyntaxKind.PropertyAssignment || property.kind === SyntaxKind.ShorthandPropertyAssignment) { + const name = (property).name; + if (name.kind === SyntaxKind.ComputedPropertyName) { + checkComputedPropertyName(name); + } + if (isComputedNonLiteralName(name)) { + return undefined; + } + + const text = getTextOfPropertyName(name); + const type = isTypeAny(objectLiteralType) + ? objectLiteralType + : getTypeOfPropertyOfType(objectLiteralType, text) || + isNumericLiteralName(text) && getIndexTypeOfType(objectLiteralType, IndexKind.Number) || + getIndexTypeOfType(objectLiteralType, IndexKind.String); + if (type) { + if (property.kind === SyntaxKind.ShorthandPropertyAssignment) { + return checkDestructuringAssignment(property, type); } else { - error(name, Diagnostics.Type_0_has_no_property_1_and_no_string_index_signature, typeToString(sourceType), declarationNameToString(name)); + // non-shorthand property assignments should always have initializers + return checkDestructuringAssignment((property).initializer, type); } } else { - error(p, Diagnostics.Property_assignment_expected); + error(name, Diagnostics.Type_0_has_no_property_1_and_no_string_index_signature, typeToString(objectLiteralType), declarationNameToString(name)); } } - return sourceType; + else { + error(property, Diagnostics.Property_assignment_expected); + } } function checkArrayLiteralAssignment(node: ArrayLiteralExpression, sourceType: Type, contextualMapper?: TypeMapper): Type { @@ -11175,44 +11961,51 @@ namespace ts { const elementType = checkIteratedTypeOrElementType(sourceType, node, /*allowStringInput*/ false) || unknownType; const elements = node.elements; for (let i = 0; i < elements.length; i++) { - const e = elements[i]; - if (e.kind !== SyntaxKind.OmittedExpression) { - if (e.kind !== SyntaxKind.SpreadElementExpression) { - const propName = "" + i; - const type = isTypeAny(sourceType) - ? sourceType - : isTupleLikeType(sourceType) - ? getTypeOfPropertyOfType(sourceType, propName) - : elementType; - if (type) { - checkDestructuringAssignment(e, type, contextualMapper); - } - else { - if (isTupleType(sourceType)) { - error(e, Diagnostics.Tuple_type_0_with_length_1_cannot_be_assigned_to_tuple_with_length_2, typeToString(sourceType), (sourceType).elementTypes.length, elements.length); - } - else { - error(e, Diagnostics.Type_0_has_no_property_1, typeToString(sourceType), propName); - } - } + checkArrayLiteralDestructuringElementAssignment(node, sourceType, i, elementType, contextualMapper); + } + return sourceType; + } + + function checkArrayLiteralDestructuringElementAssignment(node: ArrayLiteralExpression, sourceType: Type, + elementIndex: number, elementType: Type, contextualMapper?: TypeMapper) { + const elements = node.elements; + const element = elements[elementIndex]; + if (element.kind !== SyntaxKind.OmittedExpression) { + if (element.kind !== SyntaxKind.SpreadElementExpression) { + const propName = "" + elementIndex; + const type = isTypeAny(sourceType) + ? sourceType + : isTupleLikeType(sourceType) + ? getTypeOfPropertyOfType(sourceType, propName) + : elementType; + if (type) { + return checkDestructuringAssignment(element, type, contextualMapper); } else { - if (i < elements.length - 1) { - error(e, Diagnostics.A_rest_element_must_be_last_in_an_array_destructuring_pattern); + if (isTupleType(sourceType)) { + error(element, Diagnostics.Tuple_type_0_with_length_1_cannot_be_assigned_to_tuple_with_length_2, typeToString(sourceType), (sourceType).elementTypes.length, elements.length); } else { - const restExpression = (e).expression; - if (restExpression.kind === SyntaxKind.BinaryExpression && (restExpression).operatorToken.kind === SyntaxKind.EqualsToken) { - error((restExpression).operatorToken, Diagnostics.A_rest_element_cannot_have_an_initializer); - } - else { - checkDestructuringAssignment(restExpression, createArrayType(elementType), contextualMapper); - } + error(element, Diagnostics.Type_0_has_no_property_1, typeToString(sourceType), propName); + } + } + } + else { + if (elementIndex < elements.length - 1) { + error(element, Diagnostics.A_rest_element_must_be_last_in_an_array_destructuring_pattern); + } + else { + const restExpression = (element).expression; + if (restExpression.kind === SyntaxKind.BinaryExpression && (restExpression).operatorToken.kind === SyntaxKind.EqualsToken) { + error((restExpression).operatorToken, Diagnostics.A_rest_element_cannot_have_an_initializer); + } + else { + return checkDestructuringAssignment(restExpression, createArrayType(elementType), contextualMapper); } } } } - return sourceType; + return undefined; } function checkDestructuringAssignment(exprOrAssignment: Expression | ShorthandPropertyAssignment, sourceType: Type, contextualMapper?: TypeMapper): Type { @@ -11289,8 +12082,11 @@ namespace ts { // as having the primitive type Number. If one operand is the null or undefined value, // it is treated as having the type of the other operand. // The result is always of the Number primitive type. - if (leftType.flags & (TypeFlags.Undefined | TypeFlags.Null)) leftType = rightType; - if (rightType.flags & (TypeFlags.Undefined | TypeFlags.Null)) rightType = leftType; + if (leftType.flags & TypeFlags.Nullable) leftType = rightType; + if (rightType.flags & TypeFlags.Nullable) rightType = leftType; + + leftType = getNonNullableType(leftType); + rightType = getNonNullableType(rightType); let suggestedOperator: SyntaxKind; // if a user tries to apply a bitwise operator to 2 boolean operands @@ -11317,8 +12113,11 @@ namespace ts { // or at least one of the operands to be of type Any or the String primitive type. // If one operand is the null or undefined value, it is treated as having the type of the other operand. - if (leftType.flags & (TypeFlags.Undefined | TypeFlags.Null)) leftType = rightType; - if (rightType.flags & (TypeFlags.Undefined | TypeFlags.Null)) rightType = leftType; + if (leftType.flags & TypeFlags.Nullable) leftType = rightType; + if (rightType.flags & TypeFlags.Nullable) rightType = leftType; + + leftType = getNonNullableType(leftType); + rightType = getNonNullableType(rightType); let resultType: Type; if (isTypeOfKind(leftType, TypeFlags.NumberLike) && isTypeOfKind(rightType, TypeFlags.NumberLike)) { @@ -11364,11 +12163,7 @@ namespace ts { case SyntaxKind.ExclamationEqualsToken: case SyntaxKind.EqualsEqualsEqualsToken: case SyntaxKind.ExclamationEqualsEqualsToken: - // Permit 'number[] | "foo"' to be asserted to 'string'. - if (maybeTypeOfKind(leftType, TypeFlags.StringLike) && maybeTypeOfKind(rightType, TypeFlags.StringLike)) { - return booleanType; - } - if (!isTypeAssignableTo(leftType, rightType) && !isTypeAssignableTo(rightType, leftType)) { + if (!isTypeComparableTo(leftType, rightType) && !isTypeComparableTo(rightType, leftType)) { reportOperatorError(); } return booleanType; @@ -11377,9 +12172,9 @@ namespace ts { case SyntaxKind.InKeyword: return checkInExpression(left, right, leftType, rightType); case SyntaxKind.AmpersandAmpersandToken: - return rightType; + return addNullableKind(rightType, getNullableKind(leftType)); case SyntaxKind.BarBarToken: - return getUnionType([leftType, rightType]); + return getUnionType([getNonNullableType(leftType), rightType]); case SyntaxKind.EqualsToken: checkAssignmentOperator(rightType); return getRegularTypeOfObjectLiteral(rightType); @@ -11541,7 +12336,13 @@ namespace ts { function checkExpressionCached(node: Expression, contextualMapper?: TypeMapper): Type { const links = getNodeLinks(node); if (!links.resolvedType) { + // When computing a type that we're going to cache, we need to ignore any ongoing control flow + // analysis because variables may have transient types in indeterminable states. Moving flowStackStart + // to the top of the stack ensures all transient types are computed from a known point. + const saveFlowStackStart = flowStackStart; + flowStackStart = flowStackCount; links.resolvedType = checkExpression(node, contextualMapper); + flowStackStart = saveFlowStackStart; } return links.resolvedType; } @@ -11677,6 +12478,8 @@ namespace ts { case SyntaxKind.TypeAssertionExpression: case SyntaxKind.AsExpression: return checkAssertion(node); + case SyntaxKind.NonNullExpression: + return checkNonNullAssertion(node); case SyntaxKind.DeleteExpression: return checkDeleteExpression(node); case SyntaxKind.VoidExpression: @@ -11744,6 +12547,17 @@ namespace ts { if (node.questionToken && isBindingPattern(node.name) && func.body) { error(node, Diagnostics.A_binding_pattern_parameter_cannot_be_optional_in_an_implementation_signature); } + if ((node.name).text === "this") { + if (indexOf(func.parameters, node) !== 0) { + error(node, Diagnostics.A_this_parameter_must_be_the_first_parameter); + } + if (func.kind === SyntaxKind.Constructor || func.kind === SyntaxKind.ConstructSignature || func.kind === SyntaxKind.ConstructorType) { + error(node, Diagnostics.A_constructor_cannot_have_a_this_parameter); + } + if (func.kind === SyntaxKind.SetAccessor) { + error(node, Diagnostics.A_setter_cannot_have_a_this_parameter); + } + } // Only check rest parameter type if it's not a binding pattern. Since binding patterns are // not allowed in a rest parameter, we already have an error from checkGrammarParameterList. @@ -11800,9 +12614,12 @@ namespace ts { Diagnostics.A_type_predicate_cannot_reference_a_rest_parameter); } else { + const leadingError = chainDiagnosticMessages(undefined, Diagnostics.A_type_predicate_s_type_must_be_assignable_to_its_parameter_s_type); checkTypeAssignableTo(typePredicate.type, getTypeOfNode(parent.parameters[typePredicate.parameterIndex]), - node.type); + node.type, + /*headMessage*/ undefined, + leadingError); } } else if (parameterName) { @@ -12662,7 +13479,7 @@ namespace ts { return checkNonThenableType(type, location, message); } else { - if (type.id === promisedType.id || awaitedTypeStack.indexOf(promisedType.id) >= 0) { + if (type.id === promisedType.id || indexOf(awaitedTypeStack, promisedType.id) >= 0) { // We have a bad actor in the form of a promise whose promised type is // the same promise type, or a mutually recursive promise. Return the // unknown type as we cannot guess the shape. If this were the actual @@ -13060,7 +13877,7 @@ namespace ts { function checkCollisionWithArgumentsInGeneratedCode(node: SignatureDeclaration) { // no rest parameters \ declaration context \ overload - no codegen impact - if (!hasRestParameter(node) || isInAmbientContext(node) || nodeIsMissing((node).body)) { + if (!hasDeclaredRestParameter(node) || isInAmbientContext(node) || nodeIsMissing((node).body)) { return; } @@ -13543,7 +14360,7 @@ namespace ts { } } - const rightType = checkExpression(node.expression); + const rightType = checkNonNullExpression(node.expression); // unknownType is returned i.e. if node.expression is identifier whose name cannot be resolved // in this case error about missing name is already reported - do not report extra one if (!isTypeAnyOrAllConstituentTypesHaveKind(rightType, TypeFlags.ObjectType | TypeFlags.TypeParameter)) { @@ -13563,7 +14380,7 @@ namespace ts { } function checkRightHandSideOfForOf(rhsExpression: Expression): Type { - const expressionType = getTypeOfExpression(rhsExpression); + const expressionType = checkNonNullExpression(rhsExpression); return checkIteratedTypeOrElementType(expressionType, rhsExpression, /*allowStringInput*/ true); } @@ -13571,23 +14388,21 @@ namespace ts { if (isTypeAny(inputType)) { return inputType; } - if (languageVersion >= ScriptTarget.ES6) { return checkElementTypeOfIterable(inputType, errorNode); } - if (allowStringInput) { return checkElementTypeOfArrayOrString(inputType, errorNode); } - if (isArrayLikeType(inputType)) { const indexType = getIndexTypeOfType(inputType, IndexKind.Number); if (indexType) { return indexType; } } - - error(errorNode, Diagnostics.Type_0_is_not_an_array_type, typeToString(inputType)); + if (errorNode) { + error(errorNode, Diagnostics.Type_0_is_not_an_array_type, typeToString(inputType)); + } return unknownType; } @@ -13635,7 +14450,7 @@ namespace ts { if (!typeAsIterable.iterableElementType) { // As an optimization, if the type is instantiated directly using the globalIterableType (Iterable), // then just grab its type argument. - if ((type.flags & TypeFlags.Reference) && (type).target === globalIterableType) { + if ((type.flags & TypeFlags.Reference) && (type).target === getGlobalIterableType()) { typeAsIterable.iterableElementType = (type).typeArguments[0]; } else { @@ -13681,7 +14496,7 @@ namespace ts { if (!typeAsIterator.iteratorElementType) { // As an optimization, if the type is instantiated directly using the globalIteratorType (Iterator), // then just grab its type argument. - if ((type.flags & TypeFlags.Reference) && (type).target === globalIteratorType) { + if ((type.flags & TypeFlags.Reference) && (type).target === getGlobalIteratorType()) { typeAsIterator.iteratorElementType = (type).typeArguments[0]; } else { @@ -13725,7 +14540,7 @@ namespace ts { // As an optimization, if the type is instantiated directly using the globalIterableIteratorType (IterableIterator), // then just grab its type argument. - if ((type.flags & TypeFlags.Reference) && (type).target === globalIterableIteratorType) { + if ((type.flags & TypeFlags.Reference) && (type).target === getGlobalIterableIteratorType()) { return (type).typeArguments[0]; } @@ -13772,7 +14587,7 @@ namespace ts { // Now that we've removed all the StringLike types, if no constituents remain, then the entire // arrayOrStringType was a string. - if (arrayType === emptyObjectType) { + if (arrayType === emptyUnionType) { return stringType; } } @@ -13815,6 +14630,11 @@ namespace ts { return !!(node.kind === SyntaxKind.GetAccessor && getSetAccessorTypeAnnotationNode(getDeclarationOfKind(node.symbol, SyntaxKind.SetAccessor))); } + function isUnwrappedReturnTypeVoidOrAny(func: FunctionLikeDeclaration, returnType: Type): boolean { + const unwrappedReturnType = isAsyncFunctionLike(func) ? getPromisedType(returnType) : returnType; + return maybeTypeOfKind(unwrappedReturnType, TypeFlags.Void | TypeFlags.Any); + } + function checkReturnStatement(node: ReturnStatement) { // Grammar checking if (!checkGrammarStatementInAmbientContext(node)) { @@ -13824,12 +14644,12 @@ namespace ts { } } - if (node.expression) { - const func = getContainingFunction(node); - if (func) { - const signature = getSignatureFromDeclaration(func); - const returnType = getReturnTypeOfSignature(signature); - const exprType = checkExpressionCached(node.expression); + const func = getContainingFunction(node); + if (func) { + const signature = getSignatureFromDeclaration(func); + const returnType = getReturnTypeOfSignature(signature); + if (strictNullChecks || node.expression) { + const exprType = node.expression ? checkExpressionCached(node.expression) : undefinedType; if (func.asteriskToken) { // A generator does not need its return expressions checked against its return type. @@ -13840,29 +14660,35 @@ namespace ts { } if (func.kind === SyntaxKind.SetAccessor) { - error(node.expression, Diagnostics.Setters_cannot_return_a_value); + if (node.expression) { + error(node.expression, Diagnostics.Setters_cannot_return_a_value); + } } else if (func.kind === SyntaxKind.Constructor) { - if (!checkTypeAssignableTo(exprType, returnType, node.expression)) { + if (node.expression && !checkTypeAssignableTo(exprType, returnType, node.expression)) { error(node.expression, Diagnostics.Return_type_of_constructor_signature_must_be_assignable_to_the_instance_type_of_the_class); } } else if (func.type || isGetAccessorWithAnnotatedSetAccessor(func)) { if (isAsyncFunctionLike(func)) { const promisedType = getPromisedType(returnType); - const awaitedType = checkAwaitedType(exprType, node.expression, Diagnostics.Return_expression_in_async_function_does_not_have_a_valid_callable_then_member); + const awaitedType = checkAwaitedType(exprType, node.expression || node, Diagnostics.Return_expression_in_async_function_does_not_have_a_valid_callable_then_member); if (promisedType) { // If the function has a return type, but promisedType is // undefined, an error will be reported in checkAsyncFunctionReturnType // so we don't need to report one here. - checkTypeAssignableTo(awaitedType, promisedType, node.expression); + checkTypeAssignableTo(awaitedType, promisedType, node.expression || node); } } else { - checkTypeAssignableTo(exprType, returnType, node.expression); + checkTypeAssignableTo(exprType, returnType, node.expression || node); } } } + else if (func.kind !== SyntaxKind.Constructor && compilerOptions.noImplicitReturns && !isUnwrappedReturnTypeVoidOrAny(func, returnType)) { + // The function has a return type, but the return statement doesn't have an expression. + error(node, Diagnostics.Not_all_code_paths_return_a_value); + } } } @@ -13886,7 +14712,6 @@ namespace ts { let hasDuplicateDefaultClause = false; const expressionType = checkExpression(node.expression); - const expressionTypeIsStringLike = maybeTypeOfKind(expressionType, TypeFlags.StringLike); forEach(node.caseBlock.clauses, clause => { // Grammar check for duplicate default clauses, skip if we already report duplicate default clause if (clause.kind === SyntaxKind.DefaultClause && !hasDuplicateDefaultClause) { @@ -13904,18 +14729,13 @@ namespace ts { if (produceDiagnostics && clause.kind === SyntaxKind.CaseClause) { const caseClause = clause; - // TypeScript 1.0 spec (April 2014):5.9 - // In a 'switch' statement, each 'case' expression must be of a type that is assignable to or from the type of the 'switch' expression. + // TypeScript 1.0 spec (April 2014): 5.9 + // In a 'switch' statement, each 'case' expression must be of a type that is comparable + // to or from the type of the 'switch' expression. const caseType = checkExpression(caseClause.expression); - - const expressionTypeIsAssignableToCaseType = - // Permit 'number[] | "foo"' to be asserted to 'string'. - (expressionTypeIsStringLike && maybeTypeOfKind(caseType, TypeFlags.StringLike)) || - isTypeAssignableTo(expressionType, caseType); - - if (!expressionTypeIsAssignableToCaseType) { - // 'expressionType is not assignable to caseType', try the reversed check and report errors if it fails - checkTypeAssignableTo(caseType, expressionType, caseClause.expression, /*headMessage*/ undefined); + if (!isTypeComparableTo(expressionType, caseType)) { + // expressionType is not comparable to caseType, try the reversed check and report errors if it fails + checkTypeComparableTo(caseType, expressionType, caseClause.expression, /*headMessage*/ undefined); } } forEach(clause.statements, checkSourceElement); @@ -14860,7 +15680,9 @@ namespace ts { break; case SyntaxKind.ImportEqualsDeclaration: if ((node).moduleReference.kind !== SyntaxKind.StringLiteral) { - error((node).name, Diagnostics.Module_augmentation_cannot_introduce_new_names_in_the_top_level_scope); + if (!isGlobalAugmentation) { + error((node).name, Diagnostics.Module_augmentation_cannot_introduce_new_names_in_the_top_level_scope); + } break; } // fallthrough @@ -14884,6 +15706,9 @@ namespace ts { case SyntaxKind.InterfaceDeclaration: case SyntaxKind.ModuleDeclaration: case SyntaxKind.TypeAliasDeclaration: + if (isGlobalAugmentation) { + return; + } const symbol = getSymbolOfNode(node); if (symbol) { // module augmentations cannot introduce new names on the top level scope of the module @@ -14892,14 +15717,8 @@ namespace ts { // 2. main check - report error if value declaration of the parent symbol is module augmentation) let reportError = !(symbol.flags & SymbolFlags.Merged); if (!reportError) { - if (isGlobalAugmentation) { - // global symbol should not have parent since it is not explicitly exported - reportError = symbol.parent !== undefined; - } - else { - // symbol should not originate in augmentation - reportError = isExternalModuleAugmentation(symbol.parent.valueDeclaration); - } + // symbol should not originate in augmentation + reportError = isExternalModuleAugmentation(symbol.parent.declarations[0]); } if (reportError) { error(node, Diagnostics.Module_augmentation_cannot_introduce_new_names_in_the_top_level_scope); @@ -14957,8 +15776,14 @@ namespace ts { const symbol = getSymbolOfNode(node); const target = resolveAlias(symbol); if (target !== unknownSymbol) { + // For external modules symbol represent local symbol for an alias. + // This local symbol will merge any other local declarations (excluding other aliases) + // and symbol.flags will contains combined representation for all merged declaration. + // Based on symbol.flags we can compute a set of excluded meanings (meaning that resolved alias should not have, + // otherwise it will conflict with some local declaration). Note that in addition to normal flags we include matching SymbolFlags.Export* + // in order to prevent collisions with declarations that were exported from the current module (they still contribute to local names). const excludedMeanings = - (symbol.flags & SymbolFlags.Value ? SymbolFlags.Value : 0) | + (symbol.flags & (SymbolFlags.Value | SymbolFlags.ExportValue) ? SymbolFlags.Value : 0) | (symbol.flags & SymbolFlags.Type ? SymbolFlags.Type : 0) | (symbol.flags & SymbolFlags.Namespace ? SymbolFlags.Namespace : 0); if (target.flags & excludedMeanings) { @@ -15084,7 +15909,7 @@ namespace ts { const symbol = resolveName(exportedName, exportedName.text, SymbolFlags.Value | SymbolFlags.Type | SymbolFlags.Namespace | SymbolFlags.Alias, /*nameNotFoundMessage*/ undefined, /*nameArg*/ undefined); if (symbol && (symbol === undefinedSymbol || isGlobalSourceFile(getDeclarationContainer(symbol.declarations[0])))) { - error(exportedName, Diagnostics.Cannot_re_export_name_that_is_not_defined_in_the_module); + error(exportedName, Diagnostics.Cannot_export_0_Only_local_declarations_can_be_exported_from_a_module, exportedName.text); } else { markExportAsReferenced(node); @@ -15182,7 +16007,6 @@ namespace ts { } } - function checkSourceElement(node: Node): void { if (!node) { return; @@ -15570,16 +16394,20 @@ namespace ts { return node.parent && node.parent.kind === SyntaxKind.ExpressionWithTypeArguments; } - function isNodeWithinClass(node: Node, classDeclaration: ClassLikeDeclaration) { + function forEachEnclosingClass(node: Node, callback: (node: Node) => T): T { + let result: T; + while (true) { node = getContainingClass(node); - if (!node) { - return false; - } - if (node === classDeclaration) { - return true; - } + if (!node) break; + if (result = callback(node)) break; } + + return result; + } + + function isNodeWithinClass(node: Node, classDeclaration: ClassLikeDeclaration) { + return !!forEachEnclosingClass(node, n => n === classDeclaration); } function getLeftSideOfImportEqualsOrExportAssignment(nodeOnRightSide: EntityName): ImportEqualsDeclaration | ExportAssignment { @@ -15656,12 +16484,6 @@ namespace ts { meaning |= SymbolFlags.Alias; return resolveEntityName(entityName, meaning); } - else if ((entityName.parent.kind === SyntaxKind.JsxOpeningElement) || - (entityName.parent.kind === SyntaxKind.JsxSelfClosingElement) || - (entityName.parent.kind === SyntaxKind.JsxClosingElement)) { - - return getJsxTagSymbol(entityName.parent); - } else if (isExpression(entityName)) { if (nodeIsMissing(entityName)) { // Missing entity name. @@ -15669,6 +16491,10 @@ namespace ts { } if (entityName.kind === SyntaxKind.Identifier) { + if (isJSXTagName(entityName) && isJsxIntrinsicIdentifier(entityName)) { + return getIntrinsicTagSymbol(entityName.parent); + } + // Include aliases in the meaning, this ensures that we do not follow aliases to where they point and instead // return the alias symbol. const meaning: SymbolFlags = SymbolFlags.Value | SymbolFlags.Alias; @@ -15855,6 +16681,53 @@ namespace ts { return unknownType; } + // Gets the type of object literal or array literal of destructuring assignment. + // { a } from + // for ( { a } of elems) { + // } + // [ a ] from + // [a] = [ some array ...] + function getTypeOfArrayLiteralOrObjectLiteralDestructuringAssignment(expr: Expression): Type { + Debug.assert(expr.kind === SyntaxKind.ObjectLiteralExpression || expr.kind === SyntaxKind.ArrayLiteralExpression); + // If this is from "for of" + // for ( { a } of elems) { + // } + if (expr.parent.kind === SyntaxKind.ForOfStatement) { + const iteratedType = checkRightHandSideOfForOf((expr.parent).expression); + return checkDestructuringAssignment(expr, iteratedType || unknownType); + } + // If this is from "for" initializer + // for ({a } = elems[0];.....) { } + if (expr.parent.kind === SyntaxKind.BinaryExpression) { + const iteratedType = checkExpression((expr.parent).right); + return checkDestructuringAssignment(expr, iteratedType || unknownType); + } + // If this is from nested object binding pattern + // for ({ skills: { primary, secondary } } = multiRobot, i = 0; i < 1; i++) { + if (expr.parent.kind === SyntaxKind.PropertyAssignment) { + const typeOfParentObjectLiteral = getTypeOfArrayLiteralOrObjectLiteralDestructuringAssignment(expr.parent.parent); + return checkObjectLiteralDestructuringPropertyAssignment(typeOfParentObjectLiteral || unknownType, expr.parent); + } + // Array literal assignment - array destructuring pattern + Debug.assert(expr.parent.kind === SyntaxKind.ArrayLiteralExpression); + // [{ property1: p1, property2 }] = elems; + const typeOfArrayLiteral = getTypeOfArrayLiteralOrObjectLiteralDestructuringAssignment(expr.parent); + const elementType = checkIteratedTypeOrElementType(typeOfArrayLiteral || unknownType, expr.parent, /*allowStringInput*/ false) || unknownType; + return checkArrayLiteralDestructuringElementAssignment(expr.parent, typeOfArrayLiteral, + indexOf((expr.parent).elements, expr), elementType || unknownType); + } + + // Gets the property symbol corresponding to the property in destructuring assignment + // 'property1' from + // for ( { property1: a } of elems) { + // } + // 'property1' at location 'a' from: + // [a] = [ property1, property2 ] + function getPropertySymbolOfDestructuringAssignment(location: Identifier) { + // Get the type of the object or array literal and then look for property of given name in the type + const typeOfObjectLiteral = getTypeOfArrayLiteralOrObjectLiteralDestructuringAssignment(location.parent.parent); + return typeOfObjectLiteral && getPropertyOfType(typeOfObjectLiteral, location.text); + } function getTypeOfExpression(expr: Expression): Type { if (isRightSideOfQualifiedNameOrPropertyAccess(expr)) { @@ -16212,10 +17085,17 @@ namespace ts { } function writeTypeOfExpression(expr: Expression, enclosingDeclaration: Node, flags: TypeFormatFlags, writer: SymbolWriter) { - const type = getTypeOfExpression(expr); + const type = getWidenedType(getTypeOfExpression(expr)); getSymbolDisplayBuilder().buildTypeDisplay(type, writer, enclosingDeclaration, flags); } + function writeBaseConstructorTypeOfClass(node: ClassLikeDeclaration, enclosingDeclaration: Node, flags: TypeFormatFlags, writer: SymbolWriter) { + const classType = getDeclaredTypeOfSymbol(getSymbolOfNode(node)); + resolveBaseTypesOfClass(classType); + const baseType = classType.resolvedBaseTypes.length ? classType.resolvedBaseTypes[0] : unknownType; + getSymbolDisplayBuilder().buildTypeDisplay(baseType, writer, enclosingDeclaration, flags); + } + function hasGlobalName(name: string): boolean { return hasProperty(globals, name); } @@ -16233,6 +17113,25 @@ namespace ts { } function createResolver(): EmitResolver { + // this variable and functions that use it are deliberately moved here from the outer scope + // to avoid scope pollution + const resolvedTypeReferenceDirectives = host.getResolvedTypeReferenceDirectives(); + let fileToDirective: FileMap; + if (resolvedTypeReferenceDirectives) { + // populate reverse mapping: file path -> type reference directive that was resolved to this file + fileToDirective = createFileMap(); + for (const key in resolvedTypeReferenceDirectives) { + if (!hasProperty(resolvedTypeReferenceDirectives, key)) { + continue; + } + const resolvedDirective = resolvedTypeReferenceDirectives[key]; + if (!resolvedDirective) { + continue; + } + const file = host.getSourceFile(resolvedDirective.resolvedFileName); + fileToDirective.set(file.path, key); + } + } return { getReferencedExportContainer, getReferencedImportDeclaration, @@ -16248,6 +17147,7 @@ namespace ts { writeTypeOfDeclaration, writeReturnTypeOfSignatureDeclaration, writeTypeOfExpression, + writeBaseConstructorTypeOfClass, isSymbolAccessible, isEntityNameVisible, getConstantValue, @@ -16257,8 +17157,84 @@ namespace ts { isOptionalParameter, moduleExportsSomeValue, isArgumentsLocalBinding, - getExternalModuleFileFromDeclaration + getExternalModuleFileFromDeclaration, + getTypeReferenceDirectivesForEntityName, + getTypeReferenceDirectivesForSymbol }; + + // defined here to avoid outer scope pollution + function getTypeReferenceDirectivesForEntityName(node: EntityName | PropertyAccessExpression): string[] { + // program does not have any files with type reference directives - bail out + if (!fileToDirective) { + return undefined; + } + // property access can only be used as values + // qualified names can only be used as types\namespaces + // identifiers are treated as values only if they appear in type queries + const meaning = (node.kind === SyntaxKind.PropertyAccessExpression) || (node.kind === SyntaxKind.Identifier && isInTypeQuery(node)) + ? SymbolFlags.Value | SymbolFlags.ExportValue + : SymbolFlags.Type | SymbolFlags.Namespace; + + const symbol = resolveEntityName(node, meaning, /*ignoreErrors*/true); + return symbol && symbol !== unknownSymbol ? getTypeReferenceDirectivesForSymbol(symbol, meaning) : undefined; + } + + // defined here to avoid outer scope pollution + function getTypeReferenceDirectivesForSymbol(symbol: Symbol, meaning?: SymbolFlags): string[] { + // program does not have any files with type reference directives - bail out + if (!fileToDirective) { + return undefined; + } + if (!isSymbolFromTypeDeclarationFile(symbol)) { + return undefined; + } + // check what declarations in the symbol can contribute to the target meaning + let typeReferenceDirectives: string[]; + for (const decl of symbol.declarations) { + // check meaning of the local symbol to see if declaration needs to be analyzed further + if (decl.symbol && decl.symbol.flags & meaning) { + const file = getSourceFileOfNode(decl); + const typeReferenceDirective = fileToDirective.get(file.path); + if (typeReferenceDirective) { + (typeReferenceDirectives || (typeReferenceDirectives = [])).push(typeReferenceDirective); + } + } + } + return typeReferenceDirectives; + } + + function isSymbolFromTypeDeclarationFile(symbol: Symbol): boolean { + // bail out if symbol does not have associated declarations (i.e. this is transient symbol created for property in binding pattern) + if (!symbol.declarations) { + return false; + } + + // walk the parent chain for symbols to make sure that top level parent symbol is in the global scope + // external modules cannot define or contribute to type declaration files + let current = symbol; + while (true) { + const parent = getParentOfSymbol(current); + if (parent) { + current = parent; + } + else { + break; + } + } + + if (current.valueDeclaration && current.valueDeclaration.kind === SyntaxKind.SourceFile && current.flags & SymbolFlags.ValueModule) { + return false; + } + + // check that at least one declaration of top level symbol originates from type declaration file + for (const decl of symbol.declarations) { + const file = getSourceFileOfNode(decl); + if (fileToDirective.contains(file.path)) { + return true; + } + } + return false; + } } function getExternalModuleFileFromDeclaration(declaration: ImportEqualsDeclaration | ImportDeclaration | ExportDeclaration | ModuleDeclaration): SourceFile { @@ -16285,6 +17261,9 @@ namespace ts { if (file.moduleAugmentations.length) { (augmentations || (augmentations = [])).push(file.moduleAugmentations); } + if (file.wasReferenced && file.symbol && file.symbol.globalExports) { + mergeSymbolTable(globals, file.symbol.globalExports); + } }); if (augmentations) { @@ -16312,12 +17291,14 @@ namespace ts { globalNumberType = getGlobalType("Number"); globalBooleanType = getGlobalType("Boolean"); globalRegExpType = getGlobalType("RegExp"); + jsxElementType = getExportedTypeFromNamespace("JSX", JsxNames.Element); getGlobalClassDecoratorType = memoize(() => getGlobalType("ClassDecorator")); getGlobalPropertyDecoratorType = memoize(() => getGlobalType("PropertyDecorator")); getGlobalMethodDecoratorType = memoize(() => getGlobalType("MethodDecorator")); getGlobalParameterDecoratorType = memoize(() => getGlobalType("ParameterDecorator")); getGlobalTypedPropertyDescriptorType = memoize(() => getGlobalType("TypedPropertyDescriptor", /*arity*/ 1)); + getGlobalESSymbolConstructorSymbol = memoize(() => getGlobalValueSymbol("Symbol")); getGlobalPromiseType = memoize(() => getGlobalType("Promise", /*arity*/ 1)); tryGetGlobalPromiseType = memoize(() => getGlobalSymbol("Promise", SymbolFlags.Type, /*diagnostic*/ undefined) && getGlobalPromiseType()); getGlobalPromiseLikeType = memoize(() => getGlobalType("PromiseLike", /*arity*/ 1)); @@ -16326,27 +17307,19 @@ namespace ts { getGlobalPromiseConstructorLikeType = memoize(() => getGlobalType("PromiseConstructorLike")); getGlobalThenableType = memoize(createThenableType); - // If we're in ES6 mode, load the TemplateStringsArray. - // Otherwise, default to 'unknown' for the purposes of type checking in LS scenarios. + getGlobalTemplateStringsArrayType = memoize(() => getGlobalType("TemplateStringsArray")); + if (languageVersion >= ScriptTarget.ES6) { - globalTemplateStringsArrayType = getGlobalType("TemplateStringsArray"); - globalESSymbolType = getGlobalType("Symbol"); - globalESSymbolConstructorSymbol = getGlobalValueSymbol("Symbol"); - globalIterableType = getGlobalType("Iterable", /*arity*/ 1); - globalIteratorType = getGlobalType("Iterator", /*arity*/ 1); - globalIterableIteratorType = getGlobalType("IterableIterator", /*arity*/ 1); + getGlobalESSymbolType = memoize(() => getGlobalType("Symbol")); + getGlobalIterableType = memoize(() => getGlobalType("Iterable", /*arity*/ 1)); + getGlobalIteratorType = memoize(() => getGlobalType("Iterator", /*arity*/ 1)); + getGlobalIterableIteratorType = memoize(() => getGlobalType("IterableIterator", /*arity*/ 1)); } else { - globalTemplateStringsArrayType = unknownType; - - // Consider putting Symbol interface in lib.d.ts. On the plus side, putting it in lib.d.ts would make it - // extensible for Polyfilling Symbols. But putting it into lib.d.ts could also break users that have - // a global Symbol already, particularly if it is a class. - globalESSymbolType = createAnonymousType(undefined, emptySymbols, emptyArray, emptyArray, undefined, undefined); - globalESSymbolConstructorSymbol = undefined; - globalIterableType = emptyGenericType; - globalIteratorType = emptyGenericType; - globalIterableIteratorType = emptyGenericType; + getGlobalESSymbolType = memoize(() => emptyObjectType); + getGlobalIterableType = memoize(() => emptyGenericType); + getGlobalIteratorType = memoize(() => emptyGenericType); + getGlobalIterableIteratorType = memoize(() => emptyGenericType); } anyArrayType = createArrayType(anyType); diff --git a/src/compiler/commandLineParser.ts b/src/compiler/commandLineParser.ts index d29a287b950..bd9373e2d3f 100644 --- a/src/compiler/commandLineParser.ts +++ b/src/compiler/commandLineParser.ts @@ -58,12 +58,11 @@ namespace ts { }, paramType: Diagnostics.KIND, description: Diagnostics.Specify_JSX_code_generation_Colon_preserve_or_react, - error: Diagnostics.Argument_for_jsx_must_be_preserve_or_react }, { name: "reactNamespace", type: "string", - description: Diagnostics.Specifies_the_object_invoked_for_createElement_and_spread_when_targeting_react_JSX_emit + description: Diagnostics.Specify_the_object_invoked_for_createElement_and_spread_when_targeting_react_JSX_emit }, { name: "listFiles", @@ -77,7 +76,7 @@ namespace ts { name: "mapRoot", type: "string", isFilePath: true, - description: Diagnostics.Specifies_the_location_where_debugger_should_locate_map_files_instead_of_generated_locations, + description: Diagnostics.Specify_the_location_where_debugger_should_locate_map_files_instead_of_generated_locations, paramType: Diagnostics.LOCATION, }, { @@ -94,7 +93,6 @@ namespace ts { }, description: Diagnostics.Specify_module_code_generation_Colon_commonjs_amd_system_umd_or_es2015, paramType: Diagnostics.KIND, - error: Diagnostics.Argument_for_module_option_must_be_commonjs_amd_system_umd_es2015_or_none }, { name: "newLine", @@ -102,9 +100,8 @@ namespace ts { "crlf": NewLineKind.CarriageReturnLineFeed, "lf": NewLineKind.LineFeed }, - description: Diagnostics.Specifies_the_end_of_line_sequence_to_be_used_when_emitting_files_Colon_CRLF_dos_or_LF_unix, + description: Diagnostics.Specify_the_end_of_line_sequence_to_be_used_when_emitting_files_Colon_CRLF_dos_or_LF_unix, paramType: Diagnostics.NEWLINE, - error: Diagnostics.Argument_for_newLine_option_must_be_CRLF_or_LF }, { name: "noEmit", @@ -125,6 +122,11 @@ namespace ts { type: "boolean", description: Diagnostics.Raise_error_on_expressions_and_declarations_with_an_implied_any_type, }, + { + name: "noImplicitThis", + type: "boolean", + description: Diagnostics.Raise_error_on_this_expressions_with_an_implied_any_type, + }, { name: "noLib", type: "boolean", @@ -165,7 +167,6 @@ namespace ts { }, { name: "pretty", - paramType: Diagnostics.KIND, description: Diagnostics.Stylize_errors_and_messages_using_color_and_context_experimental, type: "boolean" }, @@ -186,8 +187,8 @@ namespace ts { name: "rootDir", type: "string", isFilePath: true, - description: Diagnostics.Specifies_the_root_directory_of_input_files_Use_to_control_the_output_directory_structure_with_outDir, paramType: Diagnostics.LOCATION, + description: Diagnostics.Specify_the_root_directory_of_input_files_Use_to_control_the_output_directory_structure_with_outDir, }, { name: "isolatedModules", @@ -202,7 +203,7 @@ namespace ts { name: "sourceRoot", type: "string", isFilePath: true, - description: Diagnostics.Specifies_the_location_where_debugger_should_locate_TypeScript_files_instead_of_source_locations, + description: Diagnostics.Specify_the_location_where_debugger_should_locate_TypeScript_files_instead_of_source_locations, paramType: Diagnostics.LOCATION, }, { @@ -231,9 +232,8 @@ namespace ts { "es6": ScriptTarget.ES6, "es2015": ScriptTarget.ES2015, }, - description: Diagnostics.Specify_ECMAScript_target_version_Colon_ES3_default_ES5_or_ES2015_experimental, + description: Diagnostics.Specify_ECMAScript_target_version_Colon_ES3_default_ES5_or_ES2015, paramType: Diagnostics.VERSION, - error: Diagnostics.Argument_for_target_option_must_be_ES3_ES5_or_ES2015 }, { name: "version", @@ -264,8 +264,7 @@ namespace ts { "node": ModuleResolutionKind.NodeJs, "classic": ModuleResolutionKind.Classic, }, - description: Diagnostics.Specifies_module_resolution_strategy_Colon_node_Node_js_or_classic_TypeScript_pre_1_6, - error: Diagnostics.Argument_for_moduleResolution_option_must_be_node_or_classic, + description: Diagnostics.Specify_module_resolution_strategy_Colon_node_Node_js_or_classic_TypeScript_pre_1_6, }, { name: "allowUnusedLabels", @@ -309,14 +308,41 @@ namespace ts { // this option can only be specified in tsconfig.json // use type = object to copy the value as-is name: "rootDirs", - type: "object", + type: "list", isTSConfigOnly: true, - isFilePath: true + element: { + name: "rootDirs", + type: "string", + isFilePath: true + } }, { - name: "traceModuleResolution", + name: "typesSearchPaths", + type: "list", + isTSConfigOnly: true, + element: { + name: "typesSearchPaths", + type: "string", + isFilePath: true + } + }, + { + name: "typesRoot", + type: "string" + }, + { + name: "types", + type: "list", + element: { + name: "types", + type: "string" + }, + description: Diagnostics.Type_declaration_files_to_be_included_in_compilation + }, + { + name: "traceResolution", type: "boolean", - description: Diagnostics.Enable_tracing_of_the_module_resolution_process + description: Diagnostics.Enable_tracing_of_the_name_resolution_process }, { name: "allowJs", @@ -332,6 +358,70 @@ namespace ts { name: "noImplicitUseStrict", type: "boolean", description: Diagnostics.Do_not_emit_use_strict_directives_in_module_output + }, + { + name: "listEmittedFiles", + type: "boolean" + }, + { + name: "lib", + type: "list", + element: { + name: "lib", + type: { + // JavaScript only + "es5": "lib.es5.d.ts", + "es6": "lib.es2015.d.ts", + "es2015": "lib.es2015.d.ts", + "es7": "lib.es2016.d.ts", + "es2016": "lib.es2016.d.ts", + // Host only + "dom": "lib.dom.d.ts", + "webworker": "lib.webworker.d.ts", + "scripthost": "lib.scripthost.d.ts", + // ES2015 Or ESNext By-feature options + "es2015.core": "lib.es2015.core.d.ts", + "es2015.collection": "lib.es2015.collection.d.ts", + "es2015.generator": "lib.es2015.generator.d.ts", + "es2015.iterable": "lib.es2015.iterable.d.ts", + "es2015.promise": "lib.es2015.promise.d.ts", + "es2015.proxy": "lib.es2015.proxy.d.ts", + "es2015.reflect": "lib.es2015.reflect.d.ts", + "es2015.symbol": "lib.es2015.symbol.d.ts", + "es2015.symbol.wellknown": "lib.es2015.symbol.wellknown.d.ts", + "es2016.array.include": "lib.es2016.array.include.d.ts" + }, + }, + description: Diagnostics.Specify_library_files_to_be_included_in_the_compilation_Colon + }, + { + name: "strictNullChecks", + type: "boolean", + description: Diagnostics.Enable_strict_null_checks + } + ]; + + /* @internal */ + export let typingOptionDeclarations: CommandLineOption[] = [ + { + name: "enableAutoDiscovery", + type: "boolean", + }, + { + name: "include", + type: "list", + element: { + name: "include", + type: "string" + } + }, + { + name: "exclude", + type: "list", + element: { + name: "exclude", + type: "string" + } } ]; @@ -342,6 +432,7 @@ namespace ts { } let optionNameMapCache: OptionNameMap; + /* @internal */ export function getOptionNameMap(): OptionNameMap { if (optionNameMapCache) { @@ -361,6 +452,42 @@ namespace ts { return optionNameMapCache; } + /* @internal */ + export function createCompilerDiagnosticForInvalidCustomType(opt: CommandLineOptionOfCustomType): Diagnostic { + const namesOfType: string[] = []; + forEachKey(opt.type, key => { + namesOfType.push(` '${key}'`); + }); + + return createCompilerDiagnostic(Diagnostics.Argument_for_0_option_must_be_Colon_1, `--${opt.name}`, namesOfType); + } + + /* @internal */ + export function parseCustomTypeOption(opt: CommandLineOptionOfCustomType, value: string, errors: Diagnostic[]) { + const key = (value || "").trim().toLowerCase(); + const map = opt.type; + if (hasProperty(map, key)) { + return map[key]; + } + else { + errors.push(createCompilerDiagnosticForInvalidCustomType(opt)); + } + } + + /* @internal */ + export function parseListTypeOption(opt: CommandLineOptionOfListType, value: string, errors: Diagnostic[]): (string | number)[] { + const values = (value || "").trim().split(","); + switch (opt.element.type) { + case "number": + return ts.map(values, parseInt); + case "string": + return ts.map(values, v => v || ""); + default: + return filter(map(values, v => parseCustomTypeOption(opt.element, v, errors)), v => !!v); + } + } + + /* @internal */ export function parseCommandLine(commandLine: string[], readFile?: (path: string) => string): ParsedCommandLine { const options: CompilerOptions = {}; const fileNames: string[] = []; @@ -414,17 +541,15 @@ namespace ts { options[opt.name] = args[i] || ""; i++; break; + case "list": + options[opt.name] = parseListTypeOption(opt, args[i], errors); + i++; + break; // If not a primitive, the possible types are specified in what is effectively a map of options. default: - let map = >opt.type; - let key = (args[i] || "").toLowerCase(); + options[opt.name] = parseCustomTypeOption(opt, args[i], errors); i++; - if (hasProperty(map, key)) { - options[opt.name] = map[key]; - } - else { - errors.push(createCompilerDiagnostic((opt).error)); - } + break; } } } @@ -502,7 +627,6 @@ namespace ts { } } - /** * Remove the comments from a json like text. * Comments can be single line comments (starting with # or //) or multiline comments using / * * / @@ -536,20 +660,25 @@ namespace ts { * file to. e.g. outDir */ export function parseJsonConfigFileContent(json: any, host: ParseConfigHost, basePath: string, existingOptions: CompilerOptions = {}, configFileName?: string): ParsedCommandLine { - const { options: optionsFromJsonConfigFile, errors } = convertCompilerOptionsFromJson(json["compilerOptions"], basePath, configFileName); + const errors: Diagnostic[] = []; + const compilerOptions: CompilerOptions = convertCompilerOptionsFromJsonWorker(json["compilerOptions"], basePath, errors, configFileName); + const options = extend(existingOptions, compilerOptions); + const typingOptions: TypingOptions = convertTypingOptionsFromJsonWorker(json["typingOptions"], basePath, errors, configFileName); + options.configFilePath = configFileName; - const options = extend(existingOptions, optionsFromJsonConfigFile); + const fileNames = getFileNames(errors); return { options, - fileNames: getFileNames(), + fileNames, + typingOptions, errors }; - function getFileNames(): string[] { + function getFileNames(errors: Diagnostic[]): string[] { let fileNames: string[] = []; if (hasProperty(json, "files")) { - if (json["files"] instanceof Array) { + if (isArray(json["files"])) { fileNames = map(json["files"], s => combinePaths(basePath, s)); } else { @@ -560,7 +689,7 @@ namespace ts { const filesSeen: Map = {}; let exclude: string[] = []; - if (json["exclude"] instanceof Array) { + if (isArray(json["exclude"])) { exclude = json["exclude"]; } else { @@ -605,20 +734,48 @@ namespace ts { } } } + if (hasProperty(json, "excludes") && !hasProperty(json, "exclude")) { + errors.push(createCompilerDiagnostic(Diagnostics.Unknown_option_excludes_Did_you_mean_exclude)); + } return fileNames; } } export function convertCompilerOptionsFromJson(jsonOptions: any, basePath: string, configFileName?: string): { options: CompilerOptions, errors: Diagnostic[] } { - const options: CompilerOptions = {}; const errors: Diagnostic[] = []; + const options = convertCompilerOptionsFromJsonWorker(jsonOptions, basePath, errors, configFileName); + return { options, errors }; + } - if (configFileName && getBaseFileName(configFileName) === "jsconfig.json") { - options.allowJs = true; - } + export function convertTypingOptionsFromJson(jsonOptions: any, basePath: string, configFileName?: string): { options: CompilerOptions, errors: Diagnostic[] } { + const errors: Diagnostic[] = []; + const options = convertTypingOptionsFromJsonWorker(jsonOptions, basePath, errors, configFileName); + return { options, errors }; + } + + function convertCompilerOptionsFromJsonWorker(jsonOptions: any, + basePath: string, errors: Diagnostic[], configFileName?: string): CompilerOptions { + + const options: CompilerOptions = getBaseFileName(configFileName) === "jsconfig.json" ? { allowJs: true } : {}; + convertOptionsFromJson(optionDeclarations, jsonOptions, basePath, options, Diagnostics.Unknown_compiler_option_0, errors); + return options; + } + + function convertTypingOptionsFromJsonWorker(jsonOptions: any, + basePath: string, errors: Diagnostic[], configFileName?: string): TypingOptions { + + const options: TypingOptions = getBaseFileName(configFileName) === "jsconfig.json" + ? { enableAutoDiscovery: true, include: [], exclude: [] } + : { enableAutoDiscovery: false, include: [], exclude: [] }; + convertOptionsFromJson(typingOptionDeclarations, jsonOptions, basePath, options, Diagnostics.Unknown_typing_option_0, errors); + return options; + } + + function convertOptionsFromJson(optionDeclarations: CommandLineOption[], jsonOptions: any, basePath: string, + defaultOptions: CompilerOptions | TypingOptions, diagnosticMessage: DiagnosticMessage, errors: Diagnostic[]) { if (!jsonOptions) { - return { options, errors }; + return ; } const optionNameMap = arrayToMap(optionDeclarations, opt => opt.name); @@ -626,66 +783,50 @@ namespace ts { for (const id in jsonOptions) { if (hasProperty(optionNameMap, id)) { const opt = optionNameMap[id]; - const optType = opt.type; - let value = jsonOptions[id]; - const expectedType = typeof optType === "string" ? optType : "string"; - if (typeof value === expectedType) { - if (typeof optType !== "string") { - const key = value.toLowerCase(); - if (hasProperty(optType, key)) { - value = optType[key]; - } - else { - errors.push(createCompilerDiagnostic((opt).error)); - value = 0; - } - } - if (opt.isFilePath) { - switch (typeof value) { - case "string": - value = normalizePath(combinePaths(basePath, value)); - break; - case "object": - // "object" options with 'isFilePath' = true expected to be string arrays - let paths: string[] = []; - let invalidOptionType = false; - if (!isArray(value)) { - invalidOptionType = true; - } - else { - for (const element of value) { - if (typeof element === "string") { - paths.push(normalizePath(combinePaths(basePath, element))); - } - else { - invalidOptionType = true; - break; - } - } - } - if (invalidOptionType) { - errors.push(createCompilerDiagnostic(Diagnostics.Option_0_should_have_array_of_strings_as_a_value, opt.name)); - } - else { - value = paths; - } - break; - } - if (value === "") { - value = "."; - } - } - options[opt.name] = value; - } - else { - errors.push(createCompilerDiagnostic(Diagnostics.Compiler_option_0_requires_a_value_of_type_1, id, expectedType)); - } + defaultOptions[opt.name] = convertJsonOption(opt, jsonOptions[id], basePath, errors); } else { - errors.push(createCompilerDiagnostic(Diagnostics.Unknown_compiler_option_0, id)); + errors.push(createCompilerDiagnostic(diagnosticMessage, id)); } } + } - return { options, errors }; + function convertJsonOption(opt: CommandLineOption, value: any, basePath: string, errors: Diagnostic[]): CompilerOptionsValue { + const optType = opt.type; + const expectedType = typeof optType === "string" ? optType : "string"; + if (optType === "list" && isArray(value)) { + return convertJsonOptionOfListType(opt, value, basePath, errors); + } + else if (typeof value === expectedType) { + if (typeof optType !== "string") { + return convertJsonOptionOfCustomType(opt, value, errors); + } + else { + if (opt.isFilePath) { + value = normalizePath(combinePaths(basePath, value)); + if (value === "") { + value = "."; + } + } + } + return value; + } + else { + errors.push(createCompilerDiagnostic(Diagnostics.Compiler_option_0_requires_a_value_of_type_1, opt.name, expectedType)); + } + } + + function convertJsonOptionOfCustomType(opt: CommandLineOptionOfCustomType, value: string, errors: Diagnostic[]) { + const key = value.toLowerCase(); + if (hasProperty(opt.type, key)) { + return opt.type[key]; + } + else { + errors.push(createCompilerDiagnosticForInvalidCustomType(opt)); + } + } + + function convertJsonOptionOfListType(option: CommandLineOptionOfListType, values: any[], basePath: string, errors: Diagnostic[]): any[] { + return filter(map(values, v => convertJsonOption(option.element, v, basePath, errors)), v => !!v); } } diff --git a/src/compiler/core.ts b/src/compiler/core.ts index 702ded96a3f..79b6249539d 100644 --- a/src/compiler/core.ts +++ b/src/compiler/core.ts @@ -91,10 +91,10 @@ namespace ts { return undefined; } - export function contains(array: T[], value: T): boolean { + export function contains(array: T[], value: T, areEqual?: (a: T, b: T) => boolean): boolean { if (array) { for (const v of array) { - if (v === value) { + if (areEqual ? areEqual(v, value) : v === value) { return true; } } @@ -156,12 +156,12 @@ namespace ts { return array1.concat(array2); } - export function deduplicate(array: T[]): T[] { + export function deduplicate(array: T[], areEqual?: (a: T, b: T) => boolean): T[] { let result: T[]; if (array) { result = []; for (const item of array) { - if (!contains(result, item)) { + if (!contains(result, item, areEqual)) { result.push(item); } } @@ -242,8 +242,14 @@ namespace ts { const count = array.length; if (count > 0) { let pos = 0; - let result = arguments.length <= 2 ? array[pos] : initial; - pos++; + let result: T | U; + if (arguments.length <= 2) { + result = array[pos]; + pos++; + } + else { + result = initial; + } while (pos < count) { result = f(result, array[pos]); pos++; @@ -260,8 +266,14 @@ namespace ts { if (array) { let pos = array.length - 1; if (pos >= 0) { - let result = arguments.length <= 2 ? array[pos] : initial; - pos--; + let result: T | U; + if (arguments.length <= 2) { + result = array[pos]; + pos--; + } + else { + result = initial; + } while (pos >= 0) { result = f(result, array[pos]); pos--; @@ -278,6 +290,14 @@ namespace ts { return hasOwnProperty.call(map, key); } + export function getKeys(map: Map): string[] { + const keys: string[] = []; + for (const key in map) { + keys.push(key); + } + return keys; + } + export function getProperty(map: Map, key: string): T { return hasOwnProperty.call(map, key) ? map[key] : undefined; } @@ -778,6 +798,32 @@ namespace ts { return pathLen > extLen && path.substr(pathLen - extLen, extLen) === extension; } + export function ensureScriptKind(fileName: string, scriptKind?: ScriptKind): ScriptKind { + // Using scriptKind as a condition handles both: + // - 'scriptKind' is unspecified and thus it is `undefined` + // - 'scriptKind' is set and it is `Unknown` (0) + // If the 'scriptKind' is 'undefined' or 'Unknown' then we attempt + // to get the ScriptKind from the file name. If it cannot be resolved + // from the file name then the default 'TS' script kind is returned. + return (scriptKind || getScriptKindFromFileName(fileName)) || ScriptKind.TS; + } + + export function getScriptKindFromFileName(fileName: string): ScriptKind { + const ext = fileName.substr(fileName.lastIndexOf(".")); + switch (ext.toLowerCase()) { + case ".js": + return ScriptKind.JS; + case ".jsx": + return ScriptKind.JSX; + case ".ts": + return ScriptKind.TS; + case ".tsx": + return ScriptKind.TSX; + default: + return ScriptKind.Unknown; + } + } + /** * List of supported extensions in order of file resolution precedence. */ diff --git a/src/compiler/declarationEmitter.ts b/src/compiler/declarationEmitter.ts index 0c7fa5e8dda..aceec933227 100644 --- a/src/compiler/declarationEmitter.ts +++ b/src/compiler/declarationEmitter.ts @@ -15,7 +15,7 @@ namespace ts { reportedDeclarationError: boolean; moduleElementDeclarationEmitInfo: ModuleElementDeclarationEmitInfo[]; synchronousDeclarationOutput: string; - referencePathsOutput: string; + referencesOutput: string; } type GetSymbolAccessibilityDiagnostic = (symbolAccessibilityResult: SymbolAccessibilityResult) => SymbolAccessibilityDiagnostic; @@ -35,7 +35,7 @@ namespace ts { forEachExpectedEmitFile(host, getDeclarationDiagnosticsFromFile, targetSourceFile); return declarationDiagnostics.getDiagnostics(targetSourceFile ? targetSourceFile.fileName : undefined); - function getDeclarationDiagnosticsFromFile({ declarationFilePath }, sources: SourceFile[], isBundledEmit: boolean) { + function getDeclarationDiagnosticsFromFile({ declarationFilePath }: EmitFileNames, sources: SourceFile[], isBundledEmit: boolean) { emitDeclarations(host, resolver, declarationDiagnostics, declarationFilePath, sources, isBundledEmit); } } @@ -73,7 +73,9 @@ namespace ts { // Contains the reference paths that needs to go in the declaration file. // Collecting this separately because reference paths need to be first thing in the declaration file // and we could be collecting these paths from multiple files into single one with --out option - let referencePathsOutput = ""; + let referencesOutput = ""; + + let usedTypeDirectiveReferences: Map; // Emit references corresponding to each file const emittedReferencedFiles: SourceFile[] = []; @@ -153,11 +155,19 @@ namespace ts { } }); + if (usedTypeDirectiveReferences) { + for (const directive in usedTypeDirectiveReferences) { + if (hasProperty(usedTypeDirectiveReferences, directive)) { + referencesOutput += `/// ${newLine}`; + } + } + } + return { reportedDeclarationError, moduleElementDeclarationEmitInfo: allSourcesModuleElementDeclarationEmitInfo, synchronousDeclarationOutput: writer.getText(), - referencePathsOutput, + referencesOutput, }; function hasInternalAnnotation(range: CommentRange) { @@ -253,6 +263,21 @@ namespace ts { setWriter(oldWriter); } + function recordTypeReferenceDirectivesIfNecessary(typeReferenceDirectives: string[]): void { + if (!typeReferenceDirectives) { + return; + } + + if (!usedTypeDirectiveReferences) { + usedTypeDirectiveReferences = {}; + } + for (const directive of typeReferenceDirectives) { + if (!hasProperty(usedTypeDirectiveReferences, directive)) { + usedTypeDirectiveReferences[directive] = directive; + } + } + } + function handleSymbolAccessibilityError(symbolAccessibilityResult: SymbolAccessibilityResult) { if (symbolAccessibilityResult.accessibility === SymbolAccessibility.Accessible) { // write the aliases @@ -284,6 +309,7 @@ namespace ts { function trackSymbol(symbol: Symbol, enclosingDeclaration?: Node, meaning?: SymbolFlags) { handleSymbolAccessibilityError(resolver.isSymbolAccessible(symbol, enclosingDeclaration, meaning)); + recordTypeReferenceDirectivesIfNecessary(resolver.getTypeReferenceDirectivesForSymbol(symbol, meaning)); } function reportInaccessibleThisError() { @@ -367,6 +393,8 @@ namespace ts { case SyntaxKind.BooleanKeyword: case SyntaxKind.SymbolKeyword: case SyntaxKind.VoidKeyword: + case SyntaxKind.UndefinedKeyword: + case SyntaxKind.NullKeyword: case SyntaxKind.ThisType: case SyntaxKind.StringLiteralType: return writeTextOfNode(currentText, type); @@ -418,6 +446,7 @@ namespace ts { entityName.parent.kind === SyntaxKind.ImportEqualsDeclaration ? entityName.parent : enclosingDeclaration); handleSymbolAccessibilityError(visibilityResult); + recordTypeReferenceDirectivesIfNecessary(resolver.getTypeReferenceDirectivesForEntityName(entityName)); writeEntityName(entityName); } @@ -528,7 +557,10 @@ namespace ts { else { // Expression const tempVarName = getExportDefaultTempVariableName(); - write("declare var "); + if (!noDeclare) { + write("declare "); + } + write("var "); write(tempVarName); write(": "); writer.getSymbolAccessibilityDiagnostic = getDefaultExportAccessibilityDiagnostic; @@ -753,9 +785,9 @@ namespace ts { if (moduleSpecifier.kind === SyntaxKind.StringLiteral && isBundledEmit && (compilerOptions.out || compilerOptions.outFile)) { const moduleName = getExternalModuleNameFromDeclaration(host, resolver, parent); if (moduleName) { - write("\""); + write('"'); write(moduleName); - write("\""); + write('"'); return; } } @@ -987,6 +1019,10 @@ namespace ts { else if (!isImplementsList && node.expression.kind === SyntaxKind.NullKeyword) { write("null"); } + else { + writer.getSymbolAccessibilityDiagnostic = getHeritageClauseVisibilityError; + resolver.writeBaseConstructorTypeOfClass(enclosingDeclaration, enclosingDeclaration, TypeFormatFlags.UseTypeOfFunction, writer); + } function getHeritageClauseVisibilityError(symbolAccessibilityResult: SymbolAccessibilityResult): SymbolAccessibilityDiagnostic { let diagnosticMessage: DiagnosticMessage; @@ -1341,6 +1377,7 @@ namespace ts { function emitSignatureDeclaration(node: SignatureDeclaration) { const prevEnclosingDeclaration = enclosingDeclaration; enclosingDeclaration = node; + let closeParenthesizedFunctionType = false; if (node.kind === SyntaxKind.IndexSignature) { // Index signature can have readonly modifier @@ -1352,6 +1389,16 @@ namespace ts { if (node.kind === SyntaxKind.ConstructSignature || node.kind === SyntaxKind.ConstructorType) { write("new "); } + else if (node.kind === SyntaxKind.FunctionType) { + const currentOutput = writer.getText(); + // Do not generate incorrect type when function type with type parameters is type argument + // This could happen if user used space between two '<' making it error free + // e.g var x: A< (a: Tany)=>Tany>; + if (node.typeParameters && currentOutput.charAt(currentOutput.length - 1) === "<") { + closeParenthesizedFunctionType = true; + write("("); + } + } emitTypeParameters(node.typeParameters); write("("); } @@ -1385,6 +1432,9 @@ namespace ts { write(";"); writeLine(); } + else if (closeParenthesizedFunctionType) { + write(")"); + } function getReturnTypeVisibilityError(symbolAccessibilityResult: SymbolAccessibilityResult): SymbolAccessibilityDiagnostic { let diagnosticMessage: DiagnosticMessage; @@ -1679,7 +1729,7 @@ namespace ts { host.getCanonicalFileName, /*isAbsolutePathAnUrl*/ false); - referencePathsOutput += "/// " + newLine; + referencesOutput += `/// ${newLine}`; } return addedBundledEmitReference; @@ -1701,9 +1751,9 @@ namespace ts { const emitDeclarationResult = emitDeclarations(host, resolver, emitterDiagnostics, declarationFilePath, sourceFiles, isBundledEmit); const emitSkipped = emitDeclarationResult.reportedDeclarationError || host.isEmitBlocked(declarationFilePath) || host.getCompilerOptions().noEmit; if (!emitSkipped) { - const declarationOutput = emitDeclarationResult.referencePathsOutput + const declarationOutput = emitDeclarationResult.referencesOutput + getDeclarationOutput(emitDeclarationResult.synchronousDeclarationOutput, emitDeclarationResult.moduleElementDeclarationEmitInfo); - writeFile(host, emitterDiagnostics, declarationFilePath, declarationOutput, host.getCompilerOptions().emitBOM); + writeFile(host, emitterDiagnostics, declarationFilePath, declarationOutput, host.getCompilerOptions().emitBOM, sourceFiles); } return emitSkipped; diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index f2da96b133b..4988e2091b6 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -811,6 +811,18 @@ "category": "Error", "code": 1249 }, + "Function declarations are not allowed inside blocks in strict mode when targeting 'ES3' or 'ES5'.": { + "category": "Error", + "code": 1250 + }, + "Function declarations are not allowed inside blocks in strict mode when targeting 'ES3' or 'ES5'. Class definitions are automatically in strict mode.": { + "category": "Error", + "code": 1251 + }, + "Function declarations are not allowed inside blocks in strict mode when targeting 'ES3' or 'ES5'. Modules are automatically in strict mode.": { + "category": "Error", + "code": 1252 + }, "'with' statements are not allowed in an async function block.": { "category": "Error", "code": 1300 @@ -831,6 +843,18 @@ "category": "Error", "code": 1313 }, + "Global module exports may only appear in module files.": { + "category": "Error", + "code": 1314 + }, + "Global module exports may only appear in declaration files.": { + "category": "Error", + "code": 1315 + }, + "Global module exports may only appear at top level.": { + "category": "Error", + "code": 1316 + }, "Duplicate identifier '{0}'.": { "category": "Error", "code": 2300 @@ -1035,7 +1059,7 @@ "category": "Error", "code": 2351 }, - "Neither type '{0}' nor type '{1}' is assignable to the other.": { + "Type '{0}' cannot be converted to type '{1}'.": { "category": "Error", "code": 2352 }, @@ -1091,6 +1115,10 @@ "category": "Error", "code": 2365 }, + "Function lacks ending return statement and return type does not include 'undefined'.": { + "category": "Error", + "code": 2366 + }, "Type parameter name cannot be '{0}'": { "category": "Error", "code": 2368 @@ -1411,6 +1439,10 @@ "category": "Error", "code": 2453 }, + "Variable '{0}' is used before being assigned.": { + "category": "Error", + "code": 2454 + }, "Type argument candidate '{1}' is not a valid type argument because it is not a supertype of candidate '{0}'.": { "category": "Error", "code": 2455 @@ -1707,6 +1739,18 @@ "category": "Error", "code": 2530 }, + "Object is possibly 'null'.": { + "category": "Error", + "code": 2531 + }, + "Object is possibly 'undefined'.": { + "category": "Error", + "code": 2532 + }, + "Object is possibly 'null' or 'undefined'.": { + "category": "Error", + "code": 2533 + }, "JSX element attributes type '{0}' may not be a union type.": { "category": "Error", "code": 2600 @@ -1783,7 +1827,7 @@ "category": "Error", "code": 2660 }, - "Cannot re-export name that is not defined in the module.": { + "Cannot export '{0}'. Only local declarations can be exported from a module.": { "category": "Error", "code": 2661 }, @@ -1847,6 +1891,42 @@ "category": "Error", "code": 2676 }, + "A type predicate's type must be assignable to its parameter's type.": { + "category": "Error", + "code": 2677 + }, + "Type '{0}' is not comparable to type '{1}'.": { + "category": "Error", + "code": 2678 + }, + "A function that is called with the 'new' keyword cannot have a 'this' type that is 'void'.": { + "category": "Error", + "code": 2679 + }, + "A 'this' parameter must be the first parameter.": { + "category": "Error", + "code": 2680 + }, + "A constructor cannot have a 'this' parameter.": { + "category": "Error", + "code": 2681 + }, + "A setter cannot have a 'this' parameter.": { + "category": "Error", + "code": 2682 + }, + "'this' implicitly has type 'any' because it does not have a type annotation.": { + "category": "Error", + "code": 2683 + }, + "The 'this' context of type '{0}' is not assignable to method's 'this' of type '{1}'.": { + "category": "Error", + "code": 2684 + }, + "The 'this' types of each signature are incompatible.": { + "category": "Error", + "code": 2685 + }, "Import declaration '{0}' is using private name '{1}'.": { "category": "Error", "code": 4000 @@ -2127,6 +2207,11 @@ "category": "Error", "code": 4082 }, + "Conflicting library definitions for '{0}' found at '{1}' and '{2}'. Copy the correct file to the 'typings' folder to resolve this conflict.": { + "category": "Message", + "code": 4090 + }, + "The current host does not support the '{0}' option.": { "category": "Error", "code": 5001 @@ -2215,7 +2300,14 @@ "category": "Error", "code": 5062 }, - + "Substututions for pattern '{0}' should be an array.": { + "category": "Error", + "code": 5063 + }, + "Substitution '{0}' for pattern '{1}' has incorrect type, expected 'string', got '{2}'.": { + "category": "Error", + "code": 5064 + }, "Concatenate and emit output to single file.": { "category": "Message", "code": 6001 @@ -2224,11 +2316,11 @@ "category": "Message", "code": 6002 }, - "Specifies the location where debugger should locate map files instead of generated locations.": { + "Specify the location where debugger should locate map files instead of generated locations.": { "category": "Message", "code": 6003 }, - "Specifies the location where debugger should locate TypeScript files instead of source locations.": { + "Specify the location where debugger should locate TypeScript files instead of source locations.": { "category": "Message", "code": 6004 }, @@ -2260,7 +2352,7 @@ "category": "Message", "code": 6011 }, - "Specify ECMAScript target version: 'ES3' (default), 'ES5', or 'ES2015' (experimental)": { + "Specify ECMAScript target version: 'ES3' (default), 'ES5', or 'ES2015'": { "category": "Message", "code": 6015 }, @@ -2348,14 +2440,10 @@ "category": "Error", "code": 6045 }, - "Argument for '--module' option must be 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'none'.": { + "Argument for '{0}' option must be: {1}": { "category": "Error", "code": 6046 }, - "Argument for '--target' option must be 'ES3', 'ES5', or 'ES2015'.": { - "category": "Error", - "code": 6047 - }, "Locale must be of the form or -. For example '{0}' or '{1}'.": { "category": "Error", "code": 6048 @@ -2392,7 +2480,7 @@ "category": "Message", "code": 6056 }, - "Specifies the root directory of input files. Use to control the output directory structure with --outDir.": { + "Specify the root directory of input files. Use to control the output directory structure with --outDir.": { "category": "Message", "code": 6058 }, @@ -2400,7 +2488,7 @@ "category": "Error", "code": 6059 }, - "Specifies the end of line sequence to be used when emitting files: 'CRLF' (dos) or 'LF' (unix).": { + "Specify the end of line sequence to be used when emitting files: 'CRLF' (dos) or 'LF' (unix).": { "category": "Message", "code": 6060 }, @@ -2408,14 +2496,6 @@ "category": "Message", "code": 6061 }, - "Argument for '--newLine' option must be 'CRLF' or 'LF'.": { - "category": "Error", - "code": 6062 - }, - "Argument for '--moduleResolution' option must be 'node' or 'classic'.": { - "category": "Error", - "code": 6063 - }, "Option '{0}' can only be specified in 'tsconfig.json' file.": { "category": "Error", "code": 6064 @@ -2432,7 +2512,7 @@ "category": "Message", "code": 6068 }, - "Specifies module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6).": { + "Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6).": { "category": "Message", "code": 6069 }, @@ -2472,14 +2552,14 @@ "category": "Message", "code": 6078 }, + "Specify library files to be included in the compilation: ": { + "category": "Message", + "code": 6079 + }, "Specify JSX code generation: 'preserve' or 'react'": { "category": "Message", "code": 6080 }, - "Argument for '--jsx' must be 'preserve' or 'react'.": { - "category": "Message", - "code": 6081 - }, "Only 'amd' and 'system' modules are supported alongside --{0}.": { "category": "Error", "code": 6082 @@ -2488,11 +2568,11 @@ "category": "Message", "code": 6083 }, - "Specifies the object invoked for createElement and __spread when targeting 'react' JSX emit": { + "Specify the object invoked for createElement and __spread when targeting 'react' JSX emit": { "category": "Message", "code": 6084 }, - "Enable tracing of the module resolution process.": { + "Enable tracing of the name resolution process.": { "category": "Message", "code": 6085 }, @@ -2540,7 +2620,7 @@ "category": "Message", "code": 6096 }, - "File '{0}' exist - use it as a module resolution result.": { + "File '{0}' exist - use it as a name resolution result.": { "category": "Message", "code": 6097 }, @@ -2552,11 +2632,11 @@ "category": "Message", "code": 6099 }, - "'package.json' does not have 'typings' field.": { + "'package.json' does not have 'types' field.": { "category": "Message", "code": 6100 }, - "'package.json' has 'typings' field '{0}' that references '{1}'.": { + "'package.json' has '{0}' field '{1}' that references '{2}'.": { "category": "Message", "code": 6101 }, @@ -2572,7 +2652,7 @@ "category": "Message", "code": 6104 }, - "Expected type of 'typings' field in 'package.json' to be 'string', got '{0}'.": { + "Expected type of '{0}' field in 'package.json' to be 'string', got '{1}'.": { "category": "Message", "code": 6105 }, @@ -2604,7 +2684,70 @@ "category": "Message", "code": 6112 }, - + "Enable strict null checks.": { + "category": "Message", + "code": 6113 + }, + "Unknown option 'excludes'. Did you mean 'exclude'?": { + "category": "Error", + "code": 6114 + }, + "Raise error on 'this' expressions with an implied 'any' type.": { + "category": "Message", + "code": 6115 + }, + "======== Resolving type reference directive '{0}', containing file '{1}', root directory '{2}'. ========": { + "category": "Message", + "code": 6116 + }, + "Resolving using primary search paths...": { + "category": "Message", + "code": 6117 + }, + "Resolving from node_modules folder...": { + "category": "Message", + "code": 6118 + }, + "======== Type reference directive '{0}' was successfully resolved to '{1}', primary: {2}. ========": { + "category": "Message", + "code": 6119 + }, + "======== Type reference directive '{0}' was not resolved. ========": { + "category": "Message", + "code": 6120 + }, + "Resolving with primary search path '{0}'": { + "category": "Message", + "code": 6121 + }, + "Root directory cannot be determined, skipping primary search paths.": { + "category": "Message", + "code": 6122 + }, + "======== Resolving type reference directive '{0}', containing file '{1}', root directory not set. ========": { + "category": "Message", + "code": 6123 + }, + "Type declaration files to be included in compilation.": { + "category": "Message", + "code": 6124 + }, + "Looking up in 'node_modules' folder, initial location '{0}'": { + "category": "Message", + "code": 6125 + }, + "Containing file is not specified and root directory cannot be determined, skipping lookup in 'node_modules' folder.": { + "category": "Message", + "code": 6126 + }, + "======== Resolving type reference directive '{0}', containing file not set, root directory '{1}'. ========": { + "category": "Message", + "code": 6127 + }, + "======== Resolving type reference directive '{0}', containing file not set, root directory not set. ========": { + "category": "Message", + "code": 6128 + }, "Variable '{0}' implicitly has an '{1}' type.": { "category": "Error", "code": 7005 @@ -2693,6 +2836,10 @@ "category": "Error", "code": 7030 }, + "Binding element '{0}' implicitly has an '{1}' type.": { + "category": "Error", + "code": 7031 + }, "You cannot rename this element.": { "category": "Error", "code": 8000 @@ -2804,5 +2951,9 @@ "'super' must be called before accessing 'this' in the constructor of a derived class.": { "category": "Error", "code": 17009 + }, + "Unknown typing option '{0}'.": { + "category": "Error", + "code": 17010 } } diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index c826cd77441..a1f02f520d8 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -296,11 +296,11 @@ namespace ts { * If loop contains block scoped binding captured in some function then loop body is converted to a function. * Lexical bindings declared in loop initializer will be passed into the loop body function as parameters, * however if this binding is modified inside the body - this new value should be propagated back to the original binding. - * This is done by declaring new variable (out parameter holder) outside of the loop for every binding that is reassigned inside the body. + * This is done by declaring new variable (out parameter holder) outside of the loop for every binding that is reassigned inside the body. * On every iteration this variable is initialized with value of corresponding binding. * At every point where control flow leaves the loop either explicitly (break/continue) or implicitly (at the end of loop body) * we copy the value inside the loop to the out parameter holder. - * + * * for (let x;;) { * let a = 1; * let b = () => a; @@ -308,9 +308,9 @@ namespace ts { * if (...) break; * ... * } - * + * * will be converted to - * + * * var out_x; * var loop = function(x) { * var a = 1; @@ -326,7 +326,7 @@ namespace ts { * x = out_x; * if (state === "break") break; * } - * + * * NOTE: values to out parameters are not copies if loop is abrupted with 'return' - in this case this will end the entire enclosing function * so nobody can observe this new value. */ @@ -345,6 +345,16 @@ var __extends = (this && this.__extends) || function (d, b) { d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); };`; + const assignHelper = ` +var __assign = (this && this.__assign) || Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; +};`; + // emit output for the __decorate helper function const decorateHelper = ` var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { @@ -380,6 +390,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge const languageVersion = getEmitScriptTarget(compilerOptions); const modulekind = getEmitModuleKind(compilerOptions); const sourceMapDataList: SourceMapData[] = compilerOptions.sourceMap || compilerOptions.inlineSourceMap ? [] : undefined; + const emittedFilesList: string[] = compilerOptions.listEmittedFiles ? [] : undefined; const emitterDiagnostics = createDiagnosticCollection(); let emitSkipped = false; const newLine = host.getNewLine(); @@ -390,6 +401,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge return { emitSkipped, diagnostics: emitterDiagnostics.getDiagnostics(), + emittedFiles: emittedFilesList, sourceMaps: sourceMapDataList }; @@ -540,6 +552,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge let convertedLoopState: ConvertedLoopState; let extendsEmitted: boolean; + let assignEmitted: boolean; let decorateEmitted: boolean; let paramEmitted: boolean; let awaiterEmitted: boolean; @@ -604,7 +617,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge write(`//# sourceMappingURL=${sourceMappingURL}`); } - writeEmittedFiles(writer.getText(), jsFilePath, sourceMapFilePath, /*writeByteOrderMark*/ compilerOptions.emitBOM); + writeEmittedFiles(writer.getText(), jsFilePath, sourceMapFilePath, /*writeByteOrderMark*/ compilerOptions.emitBOM, sourceFiles); // reset the state sourceMap.reset(); @@ -623,6 +636,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge decorateEmitted = false; paramEmitted = false; awaiterEmitted = false; + assignEmitted = false; tempFlags = 0; tempVariables = undefined; tempParameters = undefined; @@ -748,16 +762,16 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge } /** Write emitted output to disk */ - function writeEmittedFiles(emitOutput: string, jsFilePath: string, sourceMapFilePath: string, writeByteOrderMark: boolean) { + function writeEmittedFiles(emitOutput: string, jsFilePath: string, sourceMapFilePath: string, writeByteOrderMark: boolean, sourceFiles: SourceFile[]) { if (compilerOptions.sourceMap && !compilerOptions.inlineSourceMap) { - writeFile(host, emitterDiagnostics, sourceMapFilePath, sourceMap.getText(), /*writeByteOrderMark*/ false); + writeFile(host, emitterDiagnostics, sourceMapFilePath, sourceMap.getText(), /*writeByteOrderMark*/ false, sourceFiles); } if (sourceMapDataList) { sourceMapDataList.push(sourceMap.getSourceMapData()); } - writeFile(host, emitterDiagnostics, jsFilePath, emitOutput, writeByteOrderMark); + writeFile(host, emitterDiagnostics, jsFilePath, emitOutput, writeByteOrderMark, sourceFiles); } // Create a temporary variable with a unique unused name. @@ -966,7 +980,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge // Any template literal or string literal with an extended escape // (e.g. "\u{0067}") will need to be downleveled as a escaped string literal. if (languageVersion < ScriptTarget.ES6 && (isTemplateLiteralKind(node.kind) || node.hasExtendedUnicodeEscape)) { - return getQuotedEscapedLiteralText("\"", node.text, "\""); + return getQuotedEscapedLiteralText('"', node.text, '"'); } // If we don't need to downlevel and we can reach the original source text using @@ -979,7 +993,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge // or an escaped quoted form of the original text if it's string-like. switch (node.kind) { case SyntaxKind.StringLiteral: - return getQuotedEscapedLiteralText("\"", node.text, "\""); + return getQuotedEscapedLiteralText('"', node.text, '"'); case SyntaxKind.NoSubstitutionTemplateLiteral: return getQuotedEscapedLiteralText("`", node.text, "`"); case SyntaxKind.TemplateHead: @@ -1205,9 +1219,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge /// 'Div' for upper-cased or dotted names function emitTagName(name: Identifier | QualifiedName) { if (name.kind === SyntaxKind.Identifier && isIntrinsicJsxName((name).text)) { - write("\""); + write('"'); emit(name); - write("\""); + write('"'); } else { emit(name); @@ -1222,9 +1236,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge emit(name); } else { - write("\""); + write('"'); emit(name); - write("\""); + write('"'); } } @@ -1259,11 +1273,10 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge } else { // Either emit one big object literal (no spread attribs), or - // a call to React.__spread + // a call to the __assign helper const attrs = openingNode.attributes; if (forEach(attrs, attr => attr.kind === SyntaxKind.JsxSpreadAttribute)) { - emitExpressionIdentifier(syntheticReactRef); - write(".__spread("); + write("__assign("); let haveOpenedObjectLiteral = false; for (let i = 0; i < attrs.length; i++) { @@ -1493,7 +1506,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge emit((node).expression); } else { - write("\""); + write('"'); if (node.kind === SyntaxKind.NumericLiteral) { write((node).text); @@ -1502,7 +1515,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge writeTextOfNode(currentText, node); } - write("\""); + write('"'); } } @@ -1511,6 +1524,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge switch (parent.kind) { case SyntaxKind.ArrayLiteralExpression: case SyntaxKind.AsExpression: + case SyntaxKind.AwaitExpression: case SyntaxKind.BinaryExpression: case SyntaxKind.CallExpression: case SyntaxKind.CaseClause: @@ -1533,6 +1547,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge case SyntaxKind.JsxSpreadAttribute: case SyntaxKind.JsxExpression: case SyntaxKind.NewExpression: + case SyntaxKind.NonNullExpression: case SyntaxKind.ParenthesizedExpression: case SyntaxKind.PostfixUnaryExpression: case SyntaxKind.PrefixUnaryExpression: @@ -1592,7 +1607,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge if (declaration.kind === SyntaxKind.ImportClause) { // Identifier references default import write(getGeneratedNameForNode(declaration.parent)); - write(languageVersion === ScriptTarget.ES3 ? "[\"default\"]" : ".default"); + write(languageVersion === ScriptTarget.ES3 ? '["default"]' : ".default"); return; } else if (declaration.kind === SyntaxKind.ImportSpecifier) { @@ -1601,7 +1616,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge const name = (declaration).propertyName || (declaration).name; const identifier = getTextOfNodeFromSourceText(currentText, name); if (languageVersion === ScriptTarget.ES3 && identifier === "default") { - write(`["default"]`); + write('["default"]'); } else { write("."); @@ -2077,8 +2092,10 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge function parenthesizeForAccess(expr: Expression): LeftHandSideExpression { // When diagnosing whether the expression needs parentheses, the decision should be based // on the innermost expression in a chain of nested type assertions. - while (expr.kind === SyntaxKind.TypeAssertionExpression || expr.kind === SyntaxKind.AsExpression) { - expr = (expr).expression; + while (expr.kind === SyntaxKind.TypeAssertionExpression || + expr.kind === SyntaxKind.AsExpression || + expr.kind === SyntaxKind.NonNullExpression) { + expr = (expr).expression; } // isLeftHandSideExpression is almost the correct criterion for when it is not necessary @@ -2138,6 +2155,12 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge return container && container.kind !== SyntaxKind.SourceFile; } + // Return true if identifier resolves to an imported identifier + function isImportedReference(node: Identifier) { + const declaration = resolver.getReferencedImportDeclaration(node); + return declaration && (declaration.kind === SyntaxKind.ImportClause || declaration.kind === SyntaxKind.ImportSpecifier); + } + function emitShorthandPropertyAssignment(node: ShorthandPropertyAssignment) { // The name property of a short-hand property assignment is considered an expression position, so here // we manually emit the identifier to avoid rewriting. @@ -2151,7 +2174,18 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge // let obj = { y }; // } // Here we need to emit obj = { y : m.y } regardless of the output target. - if (modulekind !== ModuleKind.ES6 || isNamespaceExportReference(node.name)) { + // The same rules apply for imported identifiers when targeting module formats with indirect access to + // the imported identifiers. For example, when targeting CommonJS: + // + // import {foo} from './foo'; + // export const baz = { foo }; + // + // Must be transformed into: + // + // const foo_1 = require('./foo'); + // exports.baz = { foo: foo_1.foo }; + // + if (languageVersion < ScriptTarget.ES6 || (modulekind !== ModuleKind.ES6 && isImportedReference(node.name)) || isNamespaceExportReference(node.name) ) { // Emit identifier as an identifier write(": "); emit(node.name); @@ -2326,8 +2360,11 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge } function skipParentheses(node: Expression): Expression { - while (node.kind === SyntaxKind.ParenthesizedExpression || node.kind === SyntaxKind.TypeAssertionExpression || node.kind === SyntaxKind.AsExpression) { - node = (node).expression; + while (node.kind === SyntaxKind.ParenthesizedExpression || + node.kind === SyntaxKind.TypeAssertionExpression || + node.kind === SyntaxKind.AsExpression || + node.kind === SyntaxKind.NonNullExpression) { + node = (node).expression; } return node; } @@ -2501,13 +2538,17 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge // not the user. If we didn't want them, the emitter would not have put them // there. if (!nodeIsSynthesized(node) && node.parent.kind !== SyntaxKind.ArrowFunction) { - if (node.expression.kind === SyntaxKind.TypeAssertionExpression || node.expression.kind === SyntaxKind.AsExpression) { - let operand = (node.expression).expression; + if (node.expression.kind === SyntaxKind.TypeAssertionExpression || + node.expression.kind === SyntaxKind.AsExpression || + node.expression.kind === SyntaxKind.NonNullExpression) { + let operand = (node.expression).expression; // Make sure we consider all nested cast expressions, e.g.: // (-A).x; - while (operand.kind === SyntaxKind.TypeAssertionExpression || operand.kind === SyntaxKind.AsExpression) { - operand = (operand).expression; + while (operand.kind === SyntaxKind.TypeAssertionExpression || + operand.kind === SyntaxKind.AsExpression || + operand.kind === SyntaxKind.NonNullExpression) { + operand = (operand).expression; } // We have an expression of the form: (SubExpr) @@ -3073,7 +3114,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge } writeLine(); - // end of loop body -> copy out parameter + // end of loop body -> copy out parameter copyLoopOutParameters(convertedLoopState, CopyDirection.ToOutParameter, /*emitAsStatements*/true); decreaseIndent(); @@ -3232,8 +3273,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge // loop is considered simple if it does not have any return statements or break\continue that transfer control outside of the loop // simple loops are emitted as just 'loop()'; + // NOTE: if loop uses only 'continue' it still will be emitted as simple loop const isSimpleLoop = - !loop.state.nonLocalJumps && + !(loop.state.nonLocalJumps & ~Jump.Continue) && !loop.state.labeledNonLocalBreaks && !loop.state.labeledNonLocalContinues; @@ -3274,13 +3316,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge writeLine(); } - if (loop.state.nonLocalJumps & Jump.Continue) { - write(`if (${loopResult} === "continue") continue;`); - writeLine(); - } - // in case of labeled breaks emit code that either breaks to some known label inside outer loop or delegates jump decision to outer loop emitDispatchTableForLabeledJumps(loopResult, loop.state, convertedLoopState); + // in case of 'continue' we'll just fallthough here } if (emitAsBlock) { @@ -3575,6 +3613,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge } else { convertedLoopState.nonLocalJumps |= Jump.Continue; + // note: return value is emitted only to simplify debugging, call to converted loop body does not do any dispatching on it. write(`"continue";`); } } @@ -3792,7 +3831,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge if (!isEs6Module) { if (languageVersion !== ScriptTarget.ES3) { // default value of configurable, enumerable, writable are `false`. - write("Object.defineProperty(exports, \"__esModule\", { value: true });"); + write('Object.defineProperty(exports, "__esModule", { value: true });'); writeLine(); } else { @@ -3828,7 +3867,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge if (node.flags & NodeFlags.Default) { emitEs6ExportDefaultCompat(node); if (languageVersion === ScriptTarget.ES3) { - write("exports[\"default\"]"); + write('exports["default"]'); } else { write("exports.default"); @@ -4203,12 +4242,31 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge function emitVariableDeclaration(node: VariableDeclaration) { if (isBindingPattern(node.name)) { - if (languageVersion < ScriptTarget.ES6) { - emitDestructuring(node, /*isAssignmentExpressionStatement*/ false); - } - else { + const isExported = getCombinedNodeFlags(node) & NodeFlags.Export; + if (languageVersion >= ScriptTarget.ES6 && (!isExported || modulekind === ModuleKind.ES6)) { + // emit ES6 destructuring only if target module is ES6 or variable is not exported + // exported variables in CJS/AMD are prefixed with 'exports.' so result javascript { exports.toString } = 1; is illegal + + const isTopLevelDeclarationInSystemModule = + modulekind === ModuleKind.System && + shouldHoistVariable(node, /*checkIfSourceFileLevelDecl*/true); + + if (isTopLevelDeclarationInSystemModule) { + // In System modules top level variables are hoisted + // so variable declarations with destructuring are turned into destructuring assignments. + // As a result, they will need parentheses to disambiguate object binding assignments from blocks. + write("("); + } + emit(node.name); emitOptional(" = ", node.initializer); + + if (isTopLevelDeclarationInSystemModule) { + write(")"); + } + } + else { + emitDestructuring(node, /*isAssignmentExpressionStatement*/ false); } } else { @@ -4430,7 +4488,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge } function emitRestParameter(node: FunctionLikeDeclaration) { - if (languageVersion < ScriptTarget.ES6 && hasRestParameter(node)) { + if (languageVersion < ScriptTarget.ES6 && hasDeclaredRestParameter(node)) { const restIndex = node.parameters.length - 1; const restParam = node.parameters[restIndex]; @@ -4565,7 +4623,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge } emitEnd(node); - if (kind !== SyntaxKind.MethodDeclaration && kind !== SyntaxKind.MethodSignature) { + if (kind !== SyntaxKind.MethodDeclaration && + kind !== SyntaxKind.MethodSignature && + kind !== SyntaxKind.ArrowFunction) { emitTrailingComments(node); } } @@ -4584,8 +4644,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge write("("); if (node) { const parameters = node.parameters; - const omitCount = languageVersion < ScriptTarget.ES6 && hasRestParameter(node) ? 1 : 0; - emitList(parameters, 0, parameters.length - omitCount, /*multiLine*/ false, /*trailingComma*/ false); + const skipCount = node.parameters.length && (node.parameters[0].name).text === "this" ? 1 : 0; + const omitCount = languageVersion < ScriptTarget.ES6 && hasDeclaredRestParameter(node) ? 1 : 0; + emitList(parameters, skipCount, parameters.length - omitCount - skipCount, /*multiLine*/ false, /*trailingComma*/ false); } write(")"); decreaseIndent(); @@ -5263,9 +5324,11 @@ const _super = (function (geti, seti) { function emitClassLikeDeclarationForES6AndHigher(node: ClassLikeDeclaration) { let decoratedClassAlias: string; - const thisNodeIsDecorated = nodeIsDecorated(node); + const isHoistedDeclarationInSystemModule = shouldHoistDeclarationInSystemJsModule(node); + const isDecorated = nodeIsDecorated(node); + const rewriteAsClassExpression = isDecorated || isHoistedDeclarationInSystemModule; if (node.kind === SyntaxKind.ClassDeclaration) { - if (thisNodeIsDecorated) { + if (rewriteAsClassExpression) { // When we emit an ES6 class that has a class decorator, we must tailor the // emit to certain specific cases. // @@ -5346,7 +5409,10 @@ const _super = (function (geti, seti) { // [Example 4] // - if (resolver.getNodeCheckFlags(node) & NodeCheckFlags.ClassWithBodyScopedClassBinding) { + // NOTE: we reuse the same rewriting logic for cases when targeting ES6 and module kind is System. + // Because of hoisting top level class declaration need to be emitted as class expressions. + // Double bind case is only required if node is decorated. + if (isDecorated && resolver.getNodeCheckFlags(node) & NodeCheckFlags.ClassWithBodyScopedClassBinding) { decoratedClassAlias = unescapeIdentifier(makeUniqueName(node.name ? node.name.text : "default")); decoratedClassAliases[getNodeId(node)] = decoratedClassAlias; write(`let ${decoratedClassAlias};`); @@ -5357,7 +5423,9 @@ const _super = (function (geti, seti) { write("export "); } - write("let "); + if (!isHoistedDeclarationInSystemModule) { + write("let "); + } emitDeclarationName(node); if (decoratedClassAlias !== undefined) { write(` = ${decoratedClassAlias}`); @@ -5401,7 +5469,7 @@ const _super = (function (geti, seti) { // emit name if // - node has a name // - this is default export with static initializers - if (node.name || (node.flags & NodeFlags.Default && (staticProperties.length > 0 || modulekind !== ModuleKind.ES6) && !thisNodeIsDecorated)) { + if (node.name || (node.flags & NodeFlags.Default && (staticProperties.length > 0 || modulekind !== ModuleKind.ES6) && !rewriteAsClassExpression)) { write(" "); emitDeclarationName(node); } @@ -5421,7 +5489,7 @@ const _super = (function (geti, seti) { writeLine(); emitToken(SyntaxKind.CloseBraceToken, node.members.end); - if (thisNodeIsDecorated) { + if (rewriteAsClassExpression) { decoratedClassAliases[getNodeId(node)] = undefined; write(";"); } @@ -5461,7 +5529,7 @@ const _super = (function (geti, seti) { // module), export it if (node.flags & NodeFlags.Default) { // if this is a top level default export of decorated class, write the export after the declaration. - if (thisNodeIsDecorated) { + if (isDecorated) { writeLine(); write("export default "); emitDeclarationName(node); @@ -6600,7 +6668,7 @@ const _super = (function (geti, seti) { emitEs6ExportDefaultCompat(node); emitContainingModuleName(node); if (languageVersion === ScriptTarget.ES3) { - write("[\"default\"] = "); + write('["default"] = '); } else { write(".default = "); @@ -7269,7 +7337,7 @@ const _super = (function (geti, seti) { } // text should be quoted string - // for deduplication purposes in key remove leading and trailing quotes so 'a' and "a" will be considered the same + // for deduplication purposes in key remove leading and trailing quotes so 'a' and "a" will be considered the same const key = text.substr(1, text.length - 2); if (hasProperty(groupIndices, key)) { @@ -7322,11 +7390,11 @@ const _super = (function (geti, seti) { // Fill in amd-dependency tags for (const amdDependency of node.amdDependencies) { if (amdDependency.name) { - aliasedModuleNames.push("\"" + amdDependency.path + "\""); + aliasedModuleNames.push('"' + amdDependency.path + '"'); importAliasNames.push(amdDependency.name); } else { - unaliasedModuleNames.push("\"" + amdDependency.path + "\""); + unaliasedModuleNames.push('"' + amdDependency.path + '"'); } } @@ -7368,7 +7436,7 @@ const _super = (function (geti, seti) { } function emitAMDDependencyList({ aliasedModuleNames, unaliasedModuleNames }: AMDDependencyNames) { - write("[\"require\", \"exports\""); + write('["require", "exports"'); if (aliasedModuleNames.length) { write(", "); write(aliasedModuleNames.join(", ")); @@ -7502,7 +7570,7 @@ const _super = (function (geti, seti) { if (isLineBreak(c)) { if (firstNonWhitespace !== -1 && (lastNonWhitespace - firstNonWhitespace + 1 > 0)) { const part = text.substr(firstNonWhitespace, lastNonWhitespace - firstNonWhitespace + 1); - result = (result ? result + "\" + ' ' + \"" : "") + escapeString(part); + result = (result ? result + `" + ' ' + "` : "") + escapeString(part); } firstNonWhitespace = -1; } @@ -7525,7 +7593,7 @@ const _super = (function (geti, seti) { if (entities[m] !== undefined) { const ch = String.fromCharCode(entities[m]); // " needs to be escaped - return ch === "\"" ? "\\\"" : ch; + return ch === '"' ? "\\\"" : ch; } else { return s; @@ -7569,9 +7637,9 @@ const _super = (function (geti, seti) { function emitJsxText(node: JsxText) { switch (compilerOptions.jsx) { case JsxEmit.React: - write("\""); + write('"'); write(trimReactWhitespaceAndApplyEntities(node)); - write("\""); + write('"'); break; case JsxEmit.Preserve: @@ -7598,7 +7666,7 @@ const _super = (function (geti, seti) { } function isUseStrictPrologue(node: ExpressionStatement): boolean { - return !!(node.expression as StringLiteral).text.match(/use strict/); + return (node.expression as StringLiteral).text === "use strict"; } function ensureUseStrictPrologue(startWithNewLine: boolean, writeUseStrict: boolean) { @@ -7648,11 +7716,16 @@ const _super = (function (geti, seti) { if (!compilerOptions.noEmitHelpers) { // Only Emit __extends function when target ES5. // For target ES6 and above, we can emit classDeclaration as is. - if ((languageVersion < ScriptTarget.ES6) && (!extendsEmitted && node.flags & NodeFlags.HasClassExtends)) { + if (languageVersion < ScriptTarget.ES6 && !extendsEmitted && node.flags & NodeFlags.HasClassExtends) { writeLines(extendsHelper); extendsEmitted = true; } + if (compilerOptions.jsx !== JsxEmit.Preserve && !assignEmitted && (node.flags & NodeFlags.HasJsxSpreadAttribute)) { + writeLines(assignHelper); + assignEmitted = true; + } + if (!decorateEmitted && node.flags & NodeFlags.HasDecorators) { writeLines(decorateHelper); if (compilerOptions.emitDecoratorMetadata) { @@ -7807,7 +7880,7 @@ const _super = (function (geti, seti) { node.parent && node.parent.kind === SyntaxKind.ArrowFunction && (node.parent).body === node && - compilerOptions.target <= ScriptTarget.ES5) { + languageVersion <= ScriptTarget.ES5) { return false; } @@ -7887,9 +7960,9 @@ const _super = (function (geti, seti) { case SyntaxKind.TaggedTemplateExpression: return emitTaggedTemplateExpression(node); case SyntaxKind.TypeAssertionExpression: - return emit((node).expression); case SyntaxKind.AsExpression: - return emit((node).expression); + case SyntaxKind.NonNullExpression: + return emit((node).expression); case SyntaxKind.ParenthesizedExpression: return emitParenExpression(node); case SyntaxKind.FunctionDeclaration: @@ -8179,6 +8252,16 @@ const _super = (function (geti, seti) { if (declarationFilePath) { emitSkipped = writeDeclarationFile(declarationFilePath, sourceFiles, isBundledEmit, host, resolver, emitterDiagnostics) || emitSkipped; } + + if (!emitSkipped && emittedFilesList) { + emittedFilesList.push(jsFilePath); + if (sourceMapFilePath) { + emittedFilesList.push(sourceMapFilePath); + } + if (declarationFilePath) { + emittedFilesList.push(declarationFilePath); + } + } } } } diff --git a/src/compiler/parser.ts b/src/compiler/parser.ts index db9639156a5..89e1404e43a 100644 --- a/src/compiler/parser.ts +++ b/src/compiler/parser.ts @@ -177,6 +177,8 @@ namespace ts { case SyntaxKind.AsExpression: return visitNode(cbNode, (node).expression) || visitNode(cbNode, (node).type); + case SyntaxKind.NonNullExpression: + return visitNode(cbNode, (node).expression); case SyntaxKind.ConditionalExpression: return visitNode(cbNode, (node).condition) || visitNode(cbNode, (node).questionToken) || @@ -301,6 +303,9 @@ namespace ts { case SyntaxKind.ImportClause: return visitNode(cbNode, (node).name) || visitNode(cbNode, (node).namedBindings); + case SyntaxKind.GlobalModuleExportDeclaration: + return visitNode(cbNode, (node).name); + case SyntaxKind.NamespaceImport: return visitNode(cbNode, (node).name); case SyntaxKind.NamedImports: @@ -407,21 +412,8 @@ namespace ts { return result; } - /* @internal */ - export function getScriptKindFromFileName(fileName: string): ScriptKind { - const ext = fileName.substr(fileName.lastIndexOf(".")); - switch (ext.toLowerCase()) { - case ".js": - return ScriptKind.JS; - case ".jsx": - return ScriptKind.JSX; - case ".ts": - return ScriptKind.TS; - case ".tsx": - return ScriptKind.TSX; - default: - return ScriptKind.TS; - } + export function isExternalModule(file: SourceFile): boolean { + return file.externalModuleIndicator !== undefined; } // Produces a new SourceFile for the 'newText' provided. The 'textChangeRange' parameter @@ -551,12 +543,7 @@ namespace ts { let parseErrorBeforeNextFinishedNode = false; export function parseSourceFile(fileName: string, _sourceText: string, languageVersion: ScriptTarget, _syntaxCursor: IncrementalParser.SyntaxCursor, setParentNodes?: boolean, scriptKind?: ScriptKind): SourceFile { - // Using scriptKind as a condition handles both: - // - 'scriptKind' is unspecified and thus it is `undefined` - // - 'scriptKind' is set and it is `Unknown` (0) - // If the 'scriptKind' is 'undefined' or 'Unknown' then attempt - // to get the ScriptKind from the file name. - scriptKind = scriptKind ? scriptKind : getScriptKindFromFileName(fileName); + scriptKind = ensureScriptKind(fileName, scriptKind); initializeState(fileName, _sourceText, languageVersion, _syntaxCursor, scriptKind); @@ -899,7 +886,7 @@ namespace ts { /** Invokes the provided callback then unconditionally restores the parser to the state it * was in immediately prior to invoking the callback. The result of invoking the callback - * is returned from this function. + * is returned from this function. */ function lookAhead(callback: () => T): T { return speculationHelper(callback, /*isLookAhead*/ true); @@ -1143,7 +1130,7 @@ namespace ts { if (token === SyntaxKind.DefaultKeyword) { return lookAhead(nextTokenIsClassOrFunction); } - return token !== SyntaxKind.AsteriskToken && token !== SyntaxKind.OpenBraceToken && canFollowModifier(); + return token !== SyntaxKind.AsteriskToken && token !== SyntaxKind.AsKeyword && token !== SyntaxKind.OpenBraceToken && canFollowModifier(); } if (token === SyntaxKind.DefaultKeyword) { return nextTokenIsClassOrFunction(); @@ -1824,7 +1811,7 @@ namespace ts { function parseEntityName(allowReservedWords: boolean, diagnosticMessage?: DiagnosticMessage): EntityName { let entity: EntityName = parseIdentifier(diagnosticMessage); while (parseOptional(SyntaxKind.DotToken)) { - const node = createNode(SyntaxKind.QualifiedName, entity.pos); + const node: QualifiedName = createNode(SyntaxKind.QualifiedName, entity.pos); // !!! node.left = entity; node.right = parseRightSideOfDot(allowReservedWords); entity = finishNode(node); @@ -2023,7 +2010,7 @@ namespace ts { } function isStartOfParameter(): boolean { - return token === SyntaxKind.DotDotDotToken || isIdentifierOrPattern() || isModifierKind(token) || token === SyntaxKind.AtToken; + return token === SyntaxKind.DotDotDotToken || isIdentifierOrPattern() || isModifierKind(token) || token === SyntaxKind.AtToken || token === SyntaxKind.ThisKeyword; } function setModifiers(node: Node, modifiers: ModifiersArray) { @@ -2035,15 +2022,19 @@ namespace ts { function parseParameter(): ParameterDeclaration { const node = createNode(SyntaxKind.Parameter); + if (token === SyntaxKind.ThisKeyword) { + node.name = createIdentifier(/*isIdentifier*/true, undefined); + node.type = parseParameterType(); + return finishNode(node); + } + node.decorators = parseDecorators(); setModifiers(node, parseModifiers()); node.dotDotDotToken = parseOptionalToken(SyntaxKind.DotDotDotToken); // FormalParameter [Yield,Await]: // BindingElement[?Yield,?Await] - node.name = parseIdentifierOrPattern(); - if (getFullWidth(node.name) === 0 && node.flags === 0 && isModifierKind(token)) { // in cases like // 'use strict' @@ -2081,11 +2072,11 @@ namespace ts { } function fillSignature( - returnToken: SyntaxKind, - yieldContext: boolean, - awaitContext: boolean, - requireCompleteParameterList: boolean, - signature: SignatureDeclaration): void { + returnToken: SyntaxKind, + yieldContext: boolean, + awaitContext: boolean, + requireCompleteParameterList: boolean, + signature: SignatureDeclaration): void { const returnTokenRequired = returnToken === SyntaxKind.EqualsGreaterThanToken; signature.typeParameters = parseTypeParameters(); @@ -2376,12 +2367,14 @@ namespace ts { case SyntaxKind.NumberKeyword: case SyntaxKind.BooleanKeyword: case SyntaxKind.SymbolKeyword: + case SyntaxKind.UndefinedKeyword: // If these are followed by a dot, then parse these out as a dotted type reference instead. const node = tryParse(parseKeywordAndNoDot); return node || parseTypeReference(); case SyntaxKind.StringLiteral: return parseStringLiteralTypeNode(); case SyntaxKind.VoidKeyword: + case SyntaxKind.NullKeyword: return parseTokenNode(); case SyntaxKind.ThisKeyword: { const thisKeyword = parseThisTypeNode(); @@ -2413,6 +2406,8 @@ namespace ts { case SyntaxKind.BooleanKeyword: case SyntaxKind.SymbolKeyword: case SyntaxKind.VoidKeyword: + case SyntaxKind.UndefinedKeyword: + case SyntaxKind.NullKeyword: case SyntaxKind.ThisKeyword: case SyntaxKind.TypeOfKeyword: case SyntaxKind.OpenBraceToken: @@ -2482,7 +2477,7 @@ namespace ts { // Skip modifiers parseModifiers(); } - if (isIdentifier()) { + if (isIdentifier() || token === SyntaxKind.ThisKeyword) { nextToken(); return true; } @@ -3648,7 +3643,7 @@ namespace ts { let elementName: EntityName = parseIdentifierName(); while (parseOptional(SyntaxKind.DotToken)) { scanJsxIdentifier(); - const node = createNode(SyntaxKind.QualifiedName, elementName.pos); + const node: QualifiedName = createNode(SyntaxKind.QualifiedName, elementName.pos); // !!! node.left = elementName; node.right = parseIdentifierName(); elementName = finishNode(node); @@ -3739,6 +3734,14 @@ namespace ts { continue; } + if (token === SyntaxKind.ExclamationToken && !scanner.hasPrecedingLineBreak()) { + nextToken(); + const nonNullExpression = createNode(SyntaxKind.NonNullExpression, expression.pos); + nonNullExpression.expression = expression; + expression = finishNode(nonNullExpression); + continue; + } + // when in the [Decorator] context, we do not parse ElementAccess as it could be part of a ComputedPropertyName if (!inDecoratorContext() && parseOptional(SyntaxKind.OpenBracketToken)) { const indexedAccess = createNode(SyntaxKind.ElementAccessExpression, expression.pos); @@ -3954,7 +3957,7 @@ namespace ts { function tryParseAccessorDeclaration(fullStart: number, decorators: NodeArray, modifiers: ModifiersArray): AccessorDeclaration { if (parseContextualModifier(SyntaxKind.GetKeyword)) { - return parseAccessorDeclaration(SyntaxKind.GetAccessor, fullStart, decorators, modifiers); + return addJSDocComment(parseAccessorDeclaration(SyntaxKind.GetAccessor, fullStart, decorators, modifiers)); } else if (parseContextualModifier(SyntaxKind.SetKeyword)) { return parseAccessorDeclaration(SyntaxKind.SetAccessor, fullStart, decorators, modifiers); @@ -4418,7 +4421,8 @@ namespace ts { continue; case SyntaxKind.GlobalKeyword: - return nextToken() === SyntaxKind.OpenBraceToken; + nextToken(); + return token === SyntaxKind.OpenBraceToken || token === SyntaxKind.Identifier || token === SyntaxKind.ExportKeyword; case SyntaxKind.ImportKeyword: nextToken(); @@ -4427,7 +4431,8 @@ namespace ts { case SyntaxKind.ExportKeyword: nextToken(); if (token === SyntaxKind.EqualsToken || token === SyntaxKind.AsteriskToken || - token === SyntaxKind.OpenBraceToken || token === SyntaxKind.DefaultKeyword) { + token === SyntaxKind.OpenBraceToken || token === SyntaxKind.DefaultKeyword || + token === SyntaxKind.AsKeyword) { return true; } continue; @@ -4611,9 +4616,15 @@ namespace ts { return parseImportDeclarationOrImportEqualsDeclaration(fullStart, decorators, modifiers); case SyntaxKind.ExportKeyword: nextToken(); - return token === SyntaxKind.DefaultKeyword || token === SyntaxKind.EqualsToken ? - parseExportAssignment(fullStart, decorators, modifiers) : - parseExportDeclaration(fullStart, decorators, modifiers); + switch (token) { + case SyntaxKind.DefaultKeyword: + case SyntaxKind.EqualsToken: + return parseExportAssignment(fullStart, decorators, modifiers); + case SyntaxKind.AsKeyword: + return parseGlobalModuleExportDeclaration(fullStart, decorators, modifiers); + default: + return parseExportDeclaration(fullStart, decorators, modifiers); + } default: if (decorators || modifiers) { // We reached this point because we encountered decorators and/or modifiers and assumed a declaration @@ -4977,7 +4988,7 @@ namespace ts { if (token === SyntaxKind.ConstKeyword && permitInvalidConstAsModifier) { // We need to ensure that any subsequent modifiers appear on the same line - // so that when 'const' is a standalone declaration, we don't issue an error. + // so that when 'const' is a standalone declaration, we don't issue an error. if (!tryParse(nextTokenIsOnSameLineAndCanFollowModifier)) { break; } @@ -5240,7 +5251,7 @@ namespace ts { node.decorators = decorators; setModifiers(node, modifiers); if (token === SyntaxKind.GlobalKeyword) { - // parse 'global' as name of global scope augmentation + // parse 'global' as name of global scope augmentation node.name = parseIdentifier(); node.flags |= NodeFlags.GlobalAugmentation; } @@ -5282,6 +5293,20 @@ namespace ts { return nextToken() === SyntaxKind.SlashToken; } + function parseGlobalModuleExportDeclaration(fullStart: number, decorators: NodeArray, modifiers: ModifiersArray): GlobalModuleExportDeclaration { + const exportDeclaration = createNode(SyntaxKind.GlobalModuleExportDeclaration, fullStart); + exportDeclaration.decorators = decorators; + exportDeclaration.modifiers = modifiers; + parseExpected(SyntaxKind.AsKeyword); + parseExpected(SyntaxKind.NamespaceKeyword); + + exportDeclaration.name = parseIdentifier(); + + parseExpected(SyntaxKind.SemicolonToken); + + return finishNode(exportDeclaration); + } + function parseImportDeclarationOrImportEqualsDeclaration(fullStart: number, decorators: NodeArray, modifiers: ModifiersArray): ImportEqualsDeclaration | ImportDeclaration { parseExpected(SyntaxKind.ImportKeyword); const afterImportPos = scanner.getStartPos(); @@ -5484,6 +5509,7 @@ namespace ts { function processReferenceComments(sourceFile: SourceFile): void { const triviaScanner = createScanner(sourceFile.languageVersion, /*skipTrivia*/false, LanguageVariant.Standard, sourceText); const referencedFiles: FileReference[] = []; + const typeReferenceDirectives: FileReference[] = []; const amdDependencies: { path: string; name: string }[] = []; let amdModuleName: string; @@ -5510,7 +5536,12 @@ namespace ts { sourceFile.hasNoDefaultLib = referencePathMatchResult.isNoDefaultLib; const diagnosticMessage = referencePathMatchResult.diagnosticMessage; if (fileReference) { - referencedFiles.push(fileReference); + if (referencePathMatchResult.isTypeReferenceDirective) { + typeReferenceDirectives.push(fileReference); + } + else { + referencedFiles.push(fileReference); + } } if (diagnosticMessage) { parseDiagnostics.push(createFileDiagnostic(sourceFile, range.pos, range.end - range.pos, diagnosticMessage)); @@ -5542,6 +5573,7 @@ namespace ts { } sourceFile.referencedFiles = referencedFiles; + sourceFile.typeReferenceDirectives = typeReferenceDirectives; sourceFile.amdDependencies = amdDependencies; sourceFile.moduleName = amdModuleName; } @@ -6055,7 +6087,7 @@ namespace ts { atToken.end = scanner.getTextPos(); nextJSDocToken(); - const tagName = parseJSDocIdentifier(); + const tagName = parseJSDocIdentifierName(); if (!tagName) { return; } @@ -6118,7 +6150,7 @@ namespace ts { let isBracketed: boolean; // Looking for something like '[foo]' or 'foo' if (parseOptionalToken(SyntaxKind.OpenBracketToken)) { - name = parseJSDocIdentifier(); + name = parseJSDocIdentifierName(); isBracketed = true; // May have an optional default, e.g. '[foo = 42]' @@ -6128,8 +6160,8 @@ namespace ts { parseExpected(SyntaxKind.CloseBracketToken); } - else if (token === SyntaxKind.Identifier) { - name = parseJSDocIdentifier(); + else if (tokenIsIdentifierOrKeyword(token)) { + name = parseJSDocIdentifierName(); } if (!name) { @@ -6193,7 +6225,7 @@ namespace ts { typeParameters.pos = scanner.getStartPos(); while (true) { - const name = parseJSDocIdentifier(); + const name = parseJSDocIdentifierName(); if (!name) { parseErrorAtPosition(scanner.getStartPos(), 0, Diagnostics.Identifier_expected); return undefined; @@ -6226,8 +6258,12 @@ namespace ts { return token = scanner.scanJSDocToken(); } - function parseJSDocIdentifier(): Identifier { - if (token !== SyntaxKind.Identifier) { + function parseJSDocIdentifierName(): Identifier { + return createJSDocIdentifier(tokenIsIdentifierOrKeyword(token)); + } + + function createJSDocIdentifier(isIdentifier: boolean): Identifier { + if (!isIdentifier) { parseErrorAtCurrentToken(Diagnostics.Identifier_expected); return undefined; } diff --git a/src/compiler/program.ts b/src/compiler/program.ts index b051c0f5bcc..658d6946a39 100644 --- a/src/compiler/program.ts +++ b/src/compiler/program.ts @@ -12,11 +12,17 @@ namespace ts { const emptyArray: any[] = []; + const defaultLibrarySearchPaths = [ + "types/", + "node_modules/", + "node_modules/@types/", + ]; + export const version = "1.9.0"; export function findConfigFile(searchPath: string, fileExists: (fileName: string) => boolean): string { - let fileName = "tsconfig.json"; while (true) { + const fileName = combinePaths(searchPath, "tsconfig.json"); if (fileExists(fileName)) { return fileName; } @@ -25,7 +31,6 @@ namespace ts { break; } searchPath = parentPath; - fileName = "../" + fileName; } return undefined; } @@ -36,22 +41,58 @@ namespace ts { return normalizePath(referencedFileName); } + /* @internal */ + export function computeCommonSourceDirectoryOfFilenames(fileNames: string[], currentDirectory: string, getCanonicalFileName: (fileName: string) => string): string { + let commonPathComponents: string[]; + const failed = forEach(fileNames, sourceFile => { + // Each file contributes into common source file path + const sourcePathComponents = getNormalizedPathComponents(sourceFile, currentDirectory); + sourcePathComponents.pop(); // The base file name is not part of the common directory path + + if (!commonPathComponents) { + // first file + commonPathComponents = sourcePathComponents; + return; + } + + for (let i = 0, n = Math.min(commonPathComponents.length, sourcePathComponents.length); i < n; i++) { + if (getCanonicalFileName(commonPathComponents[i]) !== getCanonicalFileName(sourcePathComponents[i])) { + if (i === 0) { + // Failed to find any common path component + return true; + } + + // New common path found that is 0 -> i-1 + commonPathComponents.length = i; + break; + } + } + + // If the sourcePathComponents was shorter than the commonPathComponents, truncate to the sourcePathComponents + if (sourcePathComponents.length < commonPathComponents.length) { + commonPathComponents.length = sourcePathComponents.length; + } + }); + + // A common path can not be found when paths span multiple drives on windows, for example + if (failed) { + return ""; + } + + if (!commonPathComponents) { // Can happen when all input files are .d.ts files + return currentDirectory; + } + + return getNormalizedPathFromPathComponents(commonPathComponents); + } + function trace(host: ModuleResolutionHost, message: DiagnosticMessage, ...args: any[]): void; function trace(host: ModuleResolutionHost, message: DiagnosticMessage): void { host.trace(formatMessage.apply(undefined, arguments)); } function isTraceEnabled(compilerOptions: CompilerOptions, host: ModuleResolutionHost): boolean { - return compilerOptions.traceModuleResolution && host.trace !== undefined; - } - - function startsWith(str: string, prefix: string): boolean { - return str.lastIndexOf(prefix, 0) === 0; - } - - function endsWith(str: string, suffix: string): boolean { - const expectedPos = str.length - suffix.length; - return str.indexOf(suffix, expectedPos) === expectedPos; + return compilerOptions.traceResolution && host.trace !== undefined; } function hasZeroOrOneAsteriskCharacter(str: string): boolean { @@ -92,6 +133,160 @@ namespace ts { skipTsx: boolean; } + function tryReadTypesSection(packageJsonPath: string, baseDirectory: string, state: ModuleResolutionState): string { + let jsonContent: { typings?: string, types?: string }; + try { + const jsonText = state.host.readFile(packageJsonPath); + jsonContent = jsonText ? <{ typings?: string, types?: string }>JSON.parse(jsonText) : {}; + } + catch (e) { + // gracefully handle if readFile fails or returns not JSON + jsonContent = {}; + } + + let typesFile: string; + let fieldName: string; + // first try to read content of 'typings' section (backward compatibility) + if (jsonContent.typings) { + if (typeof jsonContent.typings === "string") { + fieldName = "typings"; + typesFile = jsonContent.typings; + } + else { + if (state.traceEnabled) { + trace(state.host, Diagnostics.Expected_type_of_0_field_in_package_json_to_be_string_got_1, "typings", typeof jsonContent.typings); + } + } + } + // then read 'types' + if (!typesFile && jsonContent.types) { + if (typeof jsonContent.types === "string") { + fieldName = "types"; + typesFile = jsonContent.types; + } + else { + if (state.traceEnabled) { + trace(state.host, Diagnostics.Expected_type_of_0_field_in_package_json_to_be_string_got_1, "types", typeof jsonContent.types); + } + } + } + if (typesFile) { + const typesFilePath = normalizePath(combinePaths(baseDirectory, typesFile)); + if (state.traceEnabled) { + trace(state.host, Diagnostics.package_json_has_0_field_1_that_references_2, fieldName, typesFile, typesFilePath); + } + return typesFilePath; + } + return undefined; + } + + const typeReferenceExtensions = [".d.ts"]; + + /** + * @param {string | undefined} containingFile - file that contains type reference directive, can be undefined if containing file is unknown. + * This is possible in case if resolution is performed for directives specified via 'types' parameter. In this case initial path for secondary lookups + * is assumed to be the same as root directory of the project. + */ + export function resolveTypeReferenceDirective(typeReferenceDirectiveName: string, containingFile: string, options: CompilerOptions, host: ModuleResolutionHost): ResolvedTypeReferenceDirectiveWithFailedLookupLocations { + const traceEnabled = isTraceEnabled(options, host); + const moduleResolutionState: ModuleResolutionState = { + compilerOptions: options, + host: host, + skipTsx: true, + traceEnabled + }; + + // use typesRoot and fallback to directory that contains tsconfig if typesRoot is not set + const rootDir = options.typesRoot || (options.configFilePath ? getDirectoryPath(options.configFilePath) : undefined); + + if (traceEnabled) { + if (containingFile === undefined) { + if (rootDir === undefined) { + trace(host, Diagnostics.Resolving_type_reference_directive_0_containing_file_not_set_root_directory_not_set, typeReferenceDirectiveName); + } + else { + trace(host, Diagnostics.Resolving_type_reference_directive_0_containing_file_not_set_root_directory_1, typeReferenceDirectiveName, rootDir); + } + } + else { + if (rootDir === undefined) { + trace(host, Diagnostics.Resolving_type_reference_directive_0_containing_file_1_root_directory_not_set, typeReferenceDirectiveName, containingFile); + } + else { + trace(host, Diagnostics.Resolving_type_reference_directive_0_containing_file_1_root_directory_2, typeReferenceDirectiveName, containingFile, rootDir); + } + } + } + + const failedLookupLocations: string[] = []; + + // Check primary library paths + if (rootDir !== undefined) { + const effectivePrimarySearchPaths = options.typesSearchPaths || defaultLibrarySearchPaths; + for (const searchPath of effectivePrimarySearchPaths) { + const primaryPath = combinePaths(rootDir, searchPath); + if (traceEnabled) { + trace(host, Diagnostics.Resolving_with_primary_search_path_0, primaryPath); + } + const candidate = combinePaths(primaryPath, typeReferenceDirectiveName); + const candidateDirectory = getDirectoryPath(candidate); + const resolvedFile = loadNodeModuleFromDirectory(typeReferenceExtensions, candidate, failedLookupLocations, + !directoryProbablyExists(candidateDirectory, host), moduleResolutionState); + + if (resolvedFile) { + if (traceEnabled) { + trace(host, Diagnostics.Type_reference_directive_0_was_successfully_resolved_to_1_primary_Colon_2, typeReferenceDirectiveName, resolvedFile, true); + } + return { + resolvedTypeReferenceDirective: { primary: true, resolvedFileName: resolvedFile }, + failedLookupLocations + }; + } + } + } + else { + if (traceEnabled) { + trace(host, Diagnostics.Root_directory_cannot_be_determined_skipping_primary_search_paths); + } + } + + let resolvedFile: string; + let initialLocationForSecondaryLookup: string; + if (containingFile) { + initialLocationForSecondaryLookup = getDirectoryPath(containingFile); + } + else { + initialLocationForSecondaryLookup = rootDir; + } + + if (initialLocationForSecondaryLookup !== undefined) { + // check secondary locations + if (traceEnabled) { + trace(host, Diagnostics.Looking_up_in_node_modules_folder_initial_location_0, initialLocationForSecondaryLookup); + } + resolvedFile = loadModuleFromNodeModules(typeReferenceDirectiveName, initialLocationForSecondaryLookup, failedLookupLocations, moduleResolutionState); + if (traceEnabled) { + if (resolvedFile) { + trace(host, Diagnostics.Type_reference_directive_0_was_successfully_resolved_to_1_primary_Colon_2, typeReferenceDirectiveName, resolvedFile, false); + } + else { + trace(host, Diagnostics.Type_reference_directive_0_was_not_resolved, typeReferenceDirectiveName); + } + } + } + else { + if (traceEnabled) { + trace(host, Diagnostics.Containing_file_is_not_specified_and_root_directory_cannot_be_determined_skipping_lookup_in_node_modules_folder); + } + } + return { + resolvedTypeReferenceDirective: resolvedFile + ? { primary: false, resolvedFileName: resolvedFile } + : undefined, + failedLookupLocations + }; + } + export function resolveModuleName(moduleName: string, containingFile: string, compilerOptions: CompilerOptions, host: ModuleResolutionHost): ResolvedModuleWithFailedLookupLocations { const traceEnabled = isTraceEnabled(compilerOptions, host); if (traceEnabled) { @@ -371,7 +566,7 @@ namespace ts { const traceEnabled = isTraceEnabled(compilerOptions, host); const failedLookupLocations: string[] = []; - const state = {compilerOptions, host, traceEnabled, skipTsx: false}; + const state = { compilerOptions, host, traceEnabled, skipTsx: false }; let resolvedFileName = tryLoadModuleUsingOptionalResolutionSettings(moduleName, containingDirectory, nodeLoadModuleByRelativeName, failedLookupLocations, supportedExtensions, state); @@ -407,7 +602,7 @@ namespace ts { } /* @internal */ - export function directoryProbablyExists(directoryName: string, host: { directoryExists?: (directoryName: string) => boolean } ): boolean { + export function directoryProbablyExists(directoryName: string, host: { directoryExists?: (directoryName: string) => boolean }): boolean { // if host does not support 'directoryExists' assume that directory will exist return !host.directoryExists || host.directoryExists(directoryName); } @@ -417,6 +612,13 @@ namespace ts { * in cases when we know upfront that all load attempts will fail (because containing folder does not exists) however we still need to record all failed lookup locations. */ function loadModuleFromFile(candidate: string, extensions: string[], failedLookupLocation: string[], onlyRecordFailures: boolean, state: ModuleResolutionState): string { + if (!onlyRecordFailures) { + // check if containig folder exists - if it doesn't then just record failures for all supported extensions without disk probing + const directory = getDirectoryPath(candidate); + if (directory) { + onlyRecordFailures = !directoryProbablyExists(directory, state.host); + } + } return forEach(extensions, tryLoad); function tryLoad(ext: string): string { @@ -426,7 +628,7 @@ namespace ts { const fileName = fileExtensionIs(candidate, ext) ? candidate : candidate + ext; if (!onlyRecordFailures && state.host.fileExists(fileName)) { if (state.traceEnabled) { - trace(state.host, Diagnostics.File_0_exist_use_it_as_a_module_resolution_result, fileName); + trace(state.host, Diagnostics.File_0_exist_use_it_as_a_name_resolution_result, fileName); } return fileName; } @@ -447,36 +649,16 @@ namespace ts { if (state.traceEnabled) { trace(state.host, Diagnostics.Found_package_json_at_0, packageJsonPath); } - - let jsonContent: { typings?: string }; - - try { - const jsonText = state.host.readFile(packageJsonPath); - jsonContent = jsonText ? <{ typings?: string }>JSON.parse(jsonText) : { typings: undefined }; - } - catch (e) { - // gracefully handle if readFile fails or returns not JSON - jsonContent = { typings: undefined }; - } - - if (jsonContent.typings) { - if (typeof jsonContent.typings === "string") { - const typingsFile = normalizePath(combinePaths(candidate, jsonContent.typings)); - if (state.traceEnabled) { - trace(state.host, Diagnostics.package_json_has_typings_field_0_that_references_1, jsonContent.typings, typingsFile); - } - const result = loadModuleFromFile(typingsFile, extensions, failedLookupLocation, !directoryProbablyExists(getDirectoryPath(typingsFile), state.host), state); - if (result) { - return result; - } - } - else if (state.traceEnabled) { - trace(state.host, Diagnostics.Expected_type_of_typings_field_in_package_json_to_be_string_got_0, typeof jsonContent.typings); + const typesFile = tryReadTypesSection(packageJsonPath, candidate, state); + if (typesFile) { + const result = loadModuleFromFile(typesFile, extensions, failedLookupLocation, !directoryProbablyExists(getDirectoryPath(typesFile), state.host), state); + if (result) { + return result; } } else { if (state.traceEnabled) { - trace(state.host, Diagnostics.package_json_does_not_have_typings_field); + trace(state.host, Diagnostics.package_json_does_not_have_types_field); } } } @@ -491,20 +673,31 @@ namespace ts { return loadModuleFromFile(combinePaths(candidate, "index"), extensions, failedLookupLocation, !directoryExists, state); } + function loadModuleFromNodeModulesFolder(moduleName: string, directory: string, failedLookupLocations: string[], state: ModuleResolutionState): string { + const nodeModulesFolder = combinePaths(directory, "node_modules"); + const nodeModulesFolderExists = directoryProbablyExists(nodeModulesFolder, state.host); + const candidate = normalizePath(combinePaths(nodeModulesFolder, moduleName)); + // Load only typescript files irrespective of allowJs option if loading from node modules + let result = loadModuleFromFile(candidate, supportedTypeScriptExtensions, failedLookupLocations, !nodeModulesFolderExists, state); + if (result) { + return result; + } + result = loadNodeModuleFromDirectory(supportedTypeScriptExtensions, candidate, failedLookupLocations, !nodeModulesFolderExists, state); + if (result) { + return result; + } + } + function loadModuleFromNodeModules(moduleName: string, directory: string, failedLookupLocations: string[], state: ModuleResolutionState): string { directory = normalizeSlashes(directory); while (true) { const baseName = getBaseFileName(directory); if (baseName !== "node_modules") { - const nodeModulesFolder = combinePaths(directory, "node_modules"); - const nodeModulesFolderExists = directoryProbablyExists(nodeModulesFolder, state.host); - const candidate = normalizePath(combinePaths(nodeModulesFolder, moduleName)); - // Load only typescript files irrespective of allowJs option if loading from node modules - let result = loadModuleFromFile(candidate, supportedTypeScriptExtensions, failedLookupLocations, !nodeModulesFolderExists, state); - if (result) { - return result; - } - result = loadNodeModuleFromDirectory(supportedTypeScriptExtensions, candidate, failedLookupLocations, !nodeModulesFolderExists, state); + const result = + // first: try to load module as-is + loadModuleFromNodeModulesFolder(moduleName, directory, failedLookupLocations, state) || + // second: try to load module from the scope '@types' + loadModuleFromNodeModulesFolder(combinePaths("@types", moduleName), directory, failedLookupLocations, state); if (result) { return result; } @@ -554,7 +747,7 @@ namespace ts { return referencedSourceFile - ? { resolvedModule: { resolvedFileName: referencedSourceFile }, failedLookupLocations } + ? { resolvedModule: { resolvedFileName: referencedSourceFile }, failedLookupLocations } : { resolvedModule: undefined, failedLookupLocations }; } @@ -566,6 +759,12 @@ namespace ts { sourceMap: false, }; + interface OutputFingerprint { + hash: string; + byteOrderMark: boolean; + mtime: Date; + } + export function createCompilerHost(options: CompilerOptions, setParentNodes?: boolean): CompilerHost { const existingDirectories: Map = {}; @@ -616,11 +815,50 @@ namespace ts { } } + let outputFingerprints: Map; + + function writeFileIfUpdated(fileName: string, data: string, writeByteOrderMark: boolean): void { + if (!outputFingerprints) { + outputFingerprints = {}; + } + + const hash = sys.createHash(data); + const mtimeBefore = sys.getModifiedTime(fileName); + + if (mtimeBefore && hasProperty(outputFingerprints, fileName)) { + const fingerprint = outputFingerprints[fileName]; + + // If output has not been changed, and the file has no external modification + if (fingerprint.byteOrderMark === writeByteOrderMark && + fingerprint.hash === hash && + fingerprint.mtime.getTime() === mtimeBefore.getTime()) { + return; + } + } + + sys.writeFile(fileName, data, writeByteOrderMark); + + const mtimeAfter = sys.getModifiedTime(fileName); + + outputFingerprints[fileName] = { + hash, + byteOrderMark: writeByteOrderMark, + mtime: mtimeAfter + }; + } + function writeFile(fileName: string, data: string, writeByteOrderMark: boolean, onError?: (message: string) => void) { try { const start = new Date().getTime(); ensureDirectoriesExist(getDirectoryPath(normalizePath(fileName))); - sys.writeFile(fileName, data, writeByteOrderMark); + + if (isWatchSet(options) && sys.createHash && sys.getModifiedTime) { + writeFileIfUpdated(fileName, data, writeByteOrderMark); + } + else { + sys.writeFile(fileName, data, writeByteOrderMark); + } + ioWriteTime += new Date().getTime() - start; } catch (e) { @@ -630,11 +868,16 @@ namespace ts { } } + function getDefaultLibLocation(): string { + return getDirectoryPath(normalizePath(sys.getExecutingFilePath())); + } + const newLine = getNewLineCharacter(options); return { getSourceFile, - getDefaultLibFileName: options => combinePaths(getDirectoryPath(normalizePath(sys.getExecutingFilePath())), getDefaultLibFileName(options)), + getDefaultLibLocation, + getDefaultLibFileName: options => combinePaths(getDefaultLibLocation(), getDefaultLibFileName(options)), writeFile, getCurrentDirectory: memoize(() => sys.getCurrentDirectory()), useCaseSensitiveFileNames: () => sys.useCaseSensitiveFileNames, @@ -649,9 +892,9 @@ namespace ts { export function getPreEmitDiagnostics(program: Program, sourceFile?: SourceFile, cancellationToken?: CancellationToken): Diagnostic[] { let diagnostics = program.getOptionsDiagnostics(cancellationToken).concat( - program.getSyntacticDiagnostics(sourceFile, cancellationToken), - program.getGlobalDiagnostics(cancellationToken), - program.getSemanticDiagnostics(sourceFile, cancellationToken)); + program.getSyntacticDiagnostics(sourceFile, cancellationToken), + program.getGlobalDiagnostics(cancellationToken), + program.getSemanticDiagnostics(sourceFile, cancellationToken)); if (program.getCompilerOptions().declaration) { diagnostics = diagnostics.concat(program.getDeclarationDiagnostics(sourceFile, cancellationToken)); @@ -686,75 +929,98 @@ namespace ts { } } + function loadWithLocalCache(names: string[], containingFile: string, loader: (name: string, containingFile: string) => T): T[] { + if (names.length === 0) { + return []; + } + const resolutions: T[] = []; + const cache: Map = {}; + for (const name of names) { + let result: T; + if (hasProperty(cache, name)) { + result = cache[name]; + } + else { + result = loader(name, containingFile); + cache[name] = result; + } + resolutions.push(result); + } + return resolutions; + } + export function createProgram(rootNames: string[], options: CompilerOptions, host?: CompilerHost, oldProgram?: Program): Program { let program: Program; let files: SourceFile[] = []; - let fileProcessingDiagnostics = createDiagnosticCollection(); - const programDiagnostics = createDiagnosticCollection(); - let commonSourceDirectory: string; let diagnosticsProducingTypeChecker: TypeChecker; let noDiagnosticsTypeChecker: TypeChecker; let classifiableNames: Map; - let skipDefaultLib = options.noLib; - const supportedExtensions = getSupportedExtensions(options); + let resolvedTypeReferenceDirectives: Map = {}; + let fileProcessingDiagnostics = createDiagnosticCollection(); const start = new Date().getTime(); host = host || createCompilerHost(options); + + let skipDefaultLib = options.noLib; + const programDiagnostics = createDiagnosticCollection(); + const currentDirectory = host.getCurrentDirectory(); + const supportedExtensions = getSupportedExtensions(options); + // Map storing if there is emit blocking diagnostics for given input const hasEmitBlockingDiagnostics = createFileMap(getCanonicalFileName); - const currentDirectory = host.getCurrentDirectory(); - const resolveModuleNamesWorker = host.resolveModuleNames - ? ((moduleNames: string[], containingFile: string) => host.resolveModuleNames(moduleNames, containingFile)) - : ((moduleNames: string[], containingFile: string) => { - const resolvedModuleNames: ResolvedModule[] = []; - // resolveModuleName does not store any results between calls. - // lookup is a local cache to avoid resolving the same module name several times - const lookup: Map = {}; - for (const moduleName of moduleNames) { - let resolvedName: ResolvedModule; - if (hasProperty(lookup, moduleName)) { - resolvedName = lookup[moduleName]; - } - else { - resolvedName = resolveModuleName(moduleName, containingFile, options, host).resolvedModule; - lookup[moduleName] = resolvedName; - } - resolvedModuleNames.push(resolvedName); - } - return resolvedModuleNames; - }); + let resolveModuleNamesWorker: (moduleNames: string[], containingFile: string) => ResolvedModule[]; + if (host.resolveModuleNames) { + resolveModuleNamesWorker = (moduleNames, containingFile) => host.resolveModuleNames(moduleNames, containingFile); + } + else { + const loader = (moduleName: string, containingFile: string) => resolveModuleName(moduleName, containingFile, options, host).resolvedModule; + resolveModuleNamesWorker = (moduleNames, containingFile) => loadWithLocalCache(moduleNames, containingFile, loader); + } + + let resolveTypeReferenceDirectiveNamesWorker: (typeDirectiveNames: string[], containingFile: string) => ResolvedTypeReferenceDirective[]; + if (host.resolveTypeReferenceDirectives) { + resolveTypeReferenceDirectiveNamesWorker = (typeDirectiveNames, containingFile) => host.resolveTypeReferenceDirectives(typeDirectiveNames, containingFile); + } + else { + const loader = (typesRef: string, containingFile: string) => resolveTypeReferenceDirective(typesRef, containingFile, options, host).resolvedTypeReferenceDirective; + resolveTypeReferenceDirectiveNamesWorker = (typeReferenceDirectiveNames, containingFile) => loadWithLocalCache(typeReferenceDirectiveNames, containingFile, loader); + } const filesByName = createFileMap(); // stores 'filename -> file association' ignoring case // used to track cases when two file names differ only in casing const filesByNameIgnoreCase = host.useCaseSensitiveFileNames() ? createFileMap(fileName => fileName.toLowerCase()) : undefined; - if (oldProgram) { - // check properties that can affect structure of the program or module resolution strategy - // if any of these properties has changed - structure cannot be reused - const oldOptions = oldProgram.getCompilerOptions(); - if ((oldOptions.module !== options.module) || - (oldOptions.noResolve !== options.noResolve) || - (oldOptions.target !== options.target) || - (oldOptions.noLib !== options.noLib) || - (oldOptions.jsx !== options.jsx) || - (oldOptions.allowJs !== options.allowJs)) { - oldProgram = undefined; - } - } - if (!tryReuseStructureFromOldProgram()) { + // load type declarations specified via 'types' argument + if (options.types && options.types.length) { + const resolutions = resolveTypeReferenceDirectiveNamesWorker(options.types, /*containingFile*/ undefined); + for (let i = 0; i < options.types.length; i++) { + processTypeReferenceDirective(options.types[i], resolutions[i]); + } + } + forEach(rootNames, name => processRootFile(name, /*isDefaultLib*/ false)); // Do not process the default library if: // - The '--noLib' flag is used. // - A 'no-default-lib' reference comment is encountered in // processing the root files. if (!skipDefaultLib) { - processRootFile(host.getDefaultLibFileName(options), /*isDefaultLib*/ true); + // If '--lib' is not specified, include default library file according to '--target' + // otherwise, using options specified in '--lib' instead of '--target' default library file + if (!options.lib) { + processRootFile(host.getDefaultLibFileName(options), /*isDefaultLib*/ true); + } + else { + const libDirectory = host.getDefaultLibLocation ? host.getDefaultLibLocation() : getDirectoryPath(host.getDefaultLibFileName(options)); + forEach(options.lib, libFileName => { + processRootFile(combinePaths(libDirectory, libFileName), /*isDefaultLib*/ true); + }); + } } } @@ -781,7 +1047,8 @@ namespace ts { getIdentifierCount: () => getDiagnosticsProducingTypeChecker().getIdentifierCount(), getSymbolCount: () => getDiagnosticsProducingTypeChecker().getSymbolCount(), getTypeCount: () => getDiagnosticsProducingTypeChecker().getTypeCount(), - getFileProcessingDiagnostics: () => fileProcessingDiagnostics + getFileProcessingDiagnostics: () => fileProcessingDiagnostics, + getResolvedTypeReferenceDirectives: () => resolvedTypeReferenceDirectives }; verifyCompilerOptions(); @@ -828,6 +1095,21 @@ namespace ts { return false; } + // check properties that can affect structure of the program or module resolution strategy + // if any of these properties has changed - structure cannot be reused + const oldOptions = oldProgram.getCompilerOptions(); + if ((oldOptions.module !== options.module) || + (oldOptions.noResolve !== options.noResolve) || + (oldOptions.target !== options.target) || + (oldOptions.noLib !== options.noLib) || + (oldOptions.jsx !== options.jsx) || + (oldOptions.allowJs !== options.allowJs) || + (oldOptions.rootDir !== options.rootDir) || + (oldOptions.typesSearchPaths !== options.typesSearchPaths) || + (oldOptions.configFilePath !== options.configFilePath)) { + return false; + } + Debug.assert(!oldProgram.structureIsReused); // there is an old program, check if we can reuse its structure @@ -836,6 +1118,10 @@ namespace ts { return false; } + if (!arrayIsEqualTo(options.types, oldOptions.types)) { + return false; + } + // check if program source files has changed in the way that can affect structure of the program const newSourceFiles: SourceFile[] = []; const filePaths: Path[] = []; @@ -874,26 +1160,33 @@ namespace ts { return false; } + if (!arrayIsEqualTo(oldSourceFile.typeReferenceDirectives, newSourceFile.typeReferenceDirectives, fileReferenceIsEqualTo)) { + // 'types' references has changed + return false; + } + + const newSourceFilePath = getNormalizedAbsolutePath(newSourceFile.fileName, currentDirectory); if (resolveModuleNamesWorker) { const moduleNames = map(concatenate(newSourceFile.imports, newSourceFile.moduleAugmentations), getTextOfLiteral); - const resolutions = resolveModuleNamesWorker(moduleNames, getNormalizedAbsolutePath(newSourceFile.fileName, currentDirectory)); + const resolutions = resolveModuleNamesWorker(moduleNames, newSourceFilePath); // ensure that module resolution results are still correct - for (let i = 0; i < moduleNames.length; i++) { - const newResolution = resolutions[i]; - const oldResolution = getResolvedModule(oldSourceFile, moduleNames[i]); - const resolutionChanged = oldResolution - ? !newResolution || - oldResolution.resolvedFileName !== newResolution.resolvedFileName || - !!oldResolution.isExternalLibraryImport !== !!newResolution.isExternalLibraryImport - : newResolution; - - if (resolutionChanged) { - return false; - } + const resolutionsChanged = hasChangesInResolutions(moduleNames, resolutions, oldSourceFile.resolvedModules, moduleResolutionIsEqualTo); + if (resolutionsChanged) { + return false; } } - // pass the cache of module resolutions from the old source file + if (resolveTypeReferenceDirectiveNamesWorker) { + const typesReferenceDirectives = map(newSourceFile.typeReferenceDirectives, x => x.fileName); + const resolutions = resolveTypeReferenceDirectiveNamesWorker(typesReferenceDirectives, newSourceFilePath); + // ensure that types resolutions are still correct + const resolutionsChanged = hasChangesInResolutions(typesReferenceDirectives, resolutions, oldSourceFile.resolvedTypeReferenceDirectiveNames, typeDirectiveIsEqualTo); + if (resolutionsChanged) { + return false; + } + } + // pass the cache of module/types resolutions from the old source file newSourceFile.resolvedModules = oldSourceFile.resolvedModules; + newSourceFile.resolvedTypeReferenceDirectiveNames = oldSourceFile.resolvedTypeReferenceDirectiveNames; modifiedSourceFiles.push(newSourceFile); } else { @@ -916,6 +1209,7 @@ namespace ts { for (const modifiedFile of modifiedSourceFiles) { fileProcessingDiagnostics.reattachFileDiagnostics(modifiedFile); } + resolvedTypeReferenceDirectives = oldProgram.getResolvedTypeReferenceDirectives(); oldProgram.structureIsReused = true; return true; @@ -931,7 +1225,7 @@ namespace ts { getSourceFile: program.getSourceFile, getSourceFiles: program.getSourceFiles, writeFile: writeFileCallback || ( - (fileName, data, writeByteOrderMark, onError) => host.writeFile(fileName, data, writeByteOrderMark, onError)), + (fileName, data, writeByteOrderMark, onError, sourceFiles) => host.writeFile(fileName, data, writeByteOrderMark, onError, sourceFiles)), isEmitBlocked, }; } @@ -956,7 +1250,7 @@ namespace ts { let declarationDiagnostics: Diagnostic[] = []; if (options.noEmit) { - return { diagnostics: declarationDiagnostics, sourceMaps: undefined, emitSkipped: true }; + return { diagnostics: declarationDiagnostics, sourceMaps: undefined, emittedFiles: undefined, emitSkipped: true }; } // If the noEmitOnError flag is set, then check if we have any errors so far. If so, @@ -973,7 +1267,12 @@ namespace ts { } if (diagnostics.length > 0 || declarationDiagnostics.length > 0) { - return { diagnostics, sourceMaps: undefined, emitSkipped: true }; + return { + diagnostics: concatenate(diagnostics, declarationDiagnostics), + sourceMaps: undefined, + emittedFiles: undefined, + emitSkipped: true + }; } } @@ -1003,9 +1302,9 @@ namespace ts { } function getDiagnosticsHelper( - sourceFile: SourceFile, - getDiagnostics: (sourceFile: SourceFile, cancellationToken: CancellationToken) => Diagnostic[], - cancellationToken: CancellationToken): Diagnostic[] { + sourceFile: SourceFile, + getDiagnostics: (sourceFile: SourceFile, cancellationToken: CancellationToken) => Diagnostic[], + cancellationToken: CancellationToken): Diagnostic[] { if (sourceFile) { return getDiagnostics(sourceFile, cancellationToken); } @@ -1282,7 +1581,7 @@ namespace ts { } function processRootFile(fileName: string, isDefaultLib: boolean) { - processSourceFile(normalizePath(fileName), isDefaultLib); + processSourceFile(normalizePath(fileName), isDefaultLib, /*isReference*/ true); } function fileReferenceIsEqualTo(a: FileReference, b: FileReference): boolean { @@ -1376,7 +1675,10 @@ namespace ts { } } - function processSourceFile(fileName: string, isDefaultLib: boolean, refFile?: SourceFile, refPos?: number, refEnd?: number) { + /** + * 'isReference' indicates whether the file was brought in via a reference directive (rather than an import declaration) + */ + function processSourceFile(fileName: string, isDefaultLib: boolean, isReference: boolean, refFile?: SourceFile, refPos?: number, refEnd?: number) { let diagnosticArgument: string[]; let diagnostic: DiagnosticMessage; if (hasExtension(fileName)) { @@ -1384,7 +1686,7 @@ namespace ts { diagnostic = Diagnostics.File_0_has_unsupported_extension_The_only_supported_extensions_are_1; diagnosticArgument = [fileName, "'" + supportedExtensions.join("', '") + "'"]; } - else if (!findSourceFile(fileName, toPath(fileName, currentDirectory, getCanonicalFileName), isDefaultLib, refFile, refPos, refEnd)) { + else if (!findSourceFile(fileName, toPath(fileName, currentDirectory, getCanonicalFileName), isDefaultLib, isReference, refFile, refPos, refEnd)) { diagnostic = Diagnostics.File_0_not_found; diagnosticArgument = [fileName]; } @@ -1394,13 +1696,13 @@ namespace ts { } } else { - const nonTsFile: SourceFile = options.allowNonTsExtensions && findSourceFile(fileName, toPath(fileName, currentDirectory, getCanonicalFileName), isDefaultLib, refFile, refPos, refEnd); + const nonTsFile: SourceFile = options.allowNonTsExtensions && findSourceFile(fileName, toPath(fileName, currentDirectory, getCanonicalFileName), isDefaultLib, isReference, refFile, refPos, refEnd); if (!nonTsFile) { if (options.allowNonTsExtensions) { diagnostic = Diagnostics.File_0_not_found; diagnosticArgument = [fileName]; } - else if (!forEach(supportedExtensions, extension => findSourceFile(fileName + extension, toPath(fileName + extension, currentDirectory, getCanonicalFileName), isDefaultLib, refFile, refPos, refEnd))) { + else if (!forEach(supportedExtensions, extension => findSourceFile(fileName + extension, toPath(fileName + extension, currentDirectory, getCanonicalFileName), isDefaultLib, isReference, refFile, refPos, refEnd))) { diagnostic = Diagnostics.File_0_not_found; fileName += ".ts"; diagnosticArgument = [fileName]; @@ -1429,7 +1731,7 @@ namespace ts { } // Get source file from normalized fileName - function findSourceFile(fileName: string, path: Path, isDefaultLib: boolean, refFile?: SourceFile, refPos?: number, refEnd?: number): SourceFile { + function findSourceFile(fileName: string, path: Path, isDefaultLib: boolean, isReference: boolean, refFile?: SourceFile, refPos?: number, refEnd?: number): SourceFile { if (filesByName.contains(path)) { const file = filesByName.get(path); // try to check if we've already seen this file but with a different casing in path @@ -1438,6 +1740,10 @@ namespace ts { reportFileNamesDifferOnlyInCasingError(fileName, file.fileName, refFile, refPos, refEnd); } + if (file) { + file.wasReferenced = file.wasReferenced || isReference; + } + return file; } @@ -1454,6 +1760,7 @@ namespace ts { filesByName.set(path, file); if (file) { + file.wasReferenced = file.wasReferenced || isReference; file.path = path; if (host.useCaseSensitiveFileNames()) { @@ -1471,7 +1778,8 @@ namespace ts { const basePath = getDirectoryPath(fileName); if (!options.noResolve) { - processReferencedFiles(file, basePath); + processReferencedFiles(file, basePath, isDefaultLib); + processTypeReferenceDirectives(file); } // always process imported modules to record module name resolutions @@ -1488,13 +1796,80 @@ namespace ts { return file; } - function processReferencedFiles(file: SourceFile, basePath: string) { + function processReferencedFiles(file: SourceFile, basePath: string, isDefaultLib: boolean) { forEach(file.referencedFiles, ref => { const referencedFileName = resolveTripleslashReference(ref.fileName, file.fileName); - processSourceFile(referencedFileName, /*isDefaultLib*/ false, file, ref.pos, ref.end); + processSourceFile(referencedFileName, isDefaultLib, /*isReference*/ true, file, ref.pos, ref.end); }); } + function processTypeReferenceDirectives(file: SourceFile) { + const typeDirectives = map(file.typeReferenceDirectives, l => l.fileName); + const resolutions = resolveTypeReferenceDirectiveNamesWorker(typeDirectives, file.fileName); + + for (let i = 0; i < typeDirectives.length; i++) { + const ref = file.typeReferenceDirectives[i]; + const resolvedTypeReferenceDirective = resolutions[i]; + // store resolved type directive on the file + setResolvedTypeReferenceDirective(file, ref.fileName, resolvedTypeReferenceDirective); + processTypeReferenceDirective(ref.fileName, resolvedTypeReferenceDirective, file, ref.pos, ref.end); + } + } + + function processTypeReferenceDirective(typeReferenceDirective: string, resolvedTypeReferenceDirective: ResolvedTypeReferenceDirective, + refFile?: SourceFile, refPos?: number, refEnd?: number): void { + + // If we already found this library as a primary reference - nothing to do + const previousResolution = resolvedTypeReferenceDirectives[typeReferenceDirective]; + if (previousResolution && previousResolution.primary) { + return; + } + let saveResolution = true; + if (resolvedTypeReferenceDirective) { + if (resolvedTypeReferenceDirective.primary) { + // resolved from the primary path + processSourceFile(resolvedTypeReferenceDirective.resolvedFileName, /*isDefaultLib*/ false, /*isReference*/ true, refFile, refPos, refEnd); + } + else { + // If we already resolved to this file, it must have been a secondary reference. Check file contents + // for sameness and possibly issue an error + if (previousResolution) { + const otherFileText = host.readFile(resolvedTypeReferenceDirective.resolvedFileName); + if (otherFileText !== getSourceFile(previousResolution.resolvedFileName).text) { + fileProcessingDiagnostics.add(createDiagnostic(refFile, refPos, refEnd, + Diagnostics.Conflicting_library_definitions_for_0_found_at_1_and_2_Copy_the_correct_file_to_the_typings_folder_to_resolve_this_conflict, + typeReferenceDirective, + resolvedTypeReferenceDirective.resolvedFileName, + previousResolution.resolvedFileName + )); + } + // don't overwrite previous resolution result + saveResolution = false; + } + else { + // First resolution of this library + processSourceFile(resolvedTypeReferenceDirective.resolvedFileName, /*isDefaultLib*/ false, /*isReference*/ true, refFile, refPos, refEnd); + } + } + } + else { + fileProcessingDiagnostics.add(createDiagnostic(refFile, refPos, refEnd, Diagnostics.Cannot_find_name_0, typeReferenceDirective)); + } + + if (saveResolution) { + resolvedTypeReferenceDirectives[typeReferenceDirective] = resolvedTypeReferenceDirective; + } + } + + function createDiagnostic(refFile: SourceFile, refPos: number, refEnd: number, message: DiagnosticMessage, ...args: any[]): Diagnostic { + if (refFile === undefined || refPos === undefined || refEnd === undefined) { + return createCompilerDiagnostic(message, ...args); + } + else { + return createFileDiagnostic(refFile, refPos, refEnd - refPos, message, ...args); + } + } + function getCanonicalFileName(fileName: string): string { return host.getCanonicalFileName(fileName); } @@ -1517,7 +1892,7 @@ namespace ts { i < file.imports.length; if (shouldAddFile) { - const importedFile = findSourceFile(resolution.resolvedFileName, toPath(resolution.resolvedFileName, currentDirectory, getCanonicalFileName), /*isDefaultLib*/ false, file, skipTrivia(file.text, file.imports[i].pos), file.imports[i].end); + const importedFile = findSourceFile(resolution.resolvedFileName, toPath(resolution.resolvedFileName, currentDirectory, getCanonicalFileName), /*isDefaultLib*/ false, /*isReference*/ false, file, skipTrivia(file.text, file.imports[i].pos), file.imports[i].end); if (importedFile && resolution.isExternalLibraryImport) { // Since currently irrespective of allowJs, we only look for supportedTypeScript extension external module files, @@ -1542,51 +1917,13 @@ namespace ts { } function computeCommonSourceDirectory(sourceFiles: SourceFile[]): string { - let commonPathComponents: string[]; - const failed = forEach(files, sourceFile => { - // Each file contributes into common source file path - if (isDeclarationFile(sourceFile)) { - return; + const fileNames: string[] = []; + for (const file of sourceFiles) { + if (!file.isDeclarationFile) { + fileNames.push(file.fileName); } - - const sourcePathComponents = getNormalizedPathComponents(sourceFile.fileName, currentDirectory); - sourcePathComponents.pop(); // The base file name is not part of the common directory path - - if (!commonPathComponents) { - // first file - commonPathComponents = sourcePathComponents; - return; - } - - for (let i = 0, n = Math.min(commonPathComponents.length, sourcePathComponents.length); i < n; i++) { - if (getCanonicalFileName(commonPathComponents[i]) !== getCanonicalFileName(sourcePathComponents[i])) { - if (i === 0) { - // Failed to find any common path component - return true; - } - - // New common path found that is 0 -> i-1 - commonPathComponents.length = i; - break; - } - } - - // If the sourcePathComponents was shorter than the commonPathComponents, truncate to the sourcePathComponents - if (sourcePathComponents.length < commonPathComponents.length) { - commonPathComponents.length = sourcePathComponents.length; - } - }); - - // A common path can not be found when paths span multiple drives on windows, for example - if (failed) { - return ""; } - - if (!commonPathComponents) { // Can happen when all input files are .d.ts files - return currentDirectory; - } - - return getNormalizedPathFromPathComponents(commonPathComponents); + return computeCommonSourceDirectoryOfFilenames(fileNames, currentDirectory, getCanonicalFileName); } function checkSourceFilesBelongToPath(sourceFiles: SourceFile[], rootDirectory: string): boolean { @@ -1648,11 +1985,22 @@ namespace ts { if (!hasZeroOrOneAsteriskCharacter(key)) { programDiagnostics.add(createCompilerDiagnostic(Diagnostics.Pattern_0_can_have_at_most_one_Asterisk_character, key)); } - for (const subst of options.paths[key]) { - if (!hasZeroOrOneAsteriskCharacter(subst)) { - programDiagnostics.add(createCompilerDiagnostic(Diagnostics.Substitution_0_in_pattern_1_in_can_have_at_most_one_Asterisk_character, subst, key)); + if (isArray(options.paths[key])) { + for (const subst of options.paths[key]) { + const typeOfSubst = typeof subst; + if (typeOfSubst === "string") { + if (!hasZeroOrOneAsteriskCharacter(subst)) { + programDiagnostics.add(createCompilerDiagnostic(Diagnostics.Substitution_0_in_pattern_1_in_can_have_at_most_one_Asterisk_character, subst, key)); + } + } + else { + programDiagnostics.add(createCompilerDiagnostic(Diagnostics.Substitution_0_for_pattern_1_has_incorrect_type_expected_string_got_2, subst, key, typeOfSubst)); + } } } + else { + programDiagnostics.add(createCompilerDiagnostic(Diagnostics.Substututions_for_pattern_0_should_be_an_array, key)); + } } } @@ -1688,6 +2036,10 @@ namespace ts { } } + if (options.lib && options.noLib) { + programDiagnostics.add(createCompilerDiagnostic(Diagnostics.Option_0_cannot_be_specified_with_option_1, "lib", "noLib")); + } + const languageVersion = options.target || ScriptTarget.ES3; const outFile = options.outFile || options.out; @@ -1730,28 +2082,11 @@ namespace ts { // If we failed to find a good common directory, but outDir is specified and at least one of our files is on a windows drive/URL/other resource, add a failure if (options.outDir && dir === "" && forEach(files, file => getRootLength(file.fileName) > 1)) { - programDiagnostics.add(createCompilerDiagnostic(Diagnostics.Cannot_find_the_common_subdirectory_path_for_the_input_files)); + programDiagnostics.add(createCompilerDiagnostic(Diagnostics.Cannot_find_the_common_subdirectory_path_for_the_input_files)); } } - if (options.noEmit) { - if (options.out) { - programDiagnostics.add(createCompilerDiagnostic(Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "out")); - } - - if (options.outFile) { - programDiagnostics.add(createCompilerDiagnostic(Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "outFile")); - } - - if (options.outDir) { - programDiagnostics.add(createCompilerDiagnostic(Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "outDir")); - } - - if (options.declaration) { - programDiagnostics.add(createCompilerDiagnostic(Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "declaration")); - } - } - else if (options.allowJs && options.declaration) { + if (!options.noEmit && options.allowJs && options.declaration) { programDiagnostics.add(createCompilerDiagnostic(Diagnostics.Option_0_cannot_be_specified_with_option_1, "allowJs", "declaration")); } diff --git a/src/compiler/scanner.ts b/src/compiler/scanner.ts index 64747fc638c..8979814a7a2 100644 --- a/src/compiler/scanner.ts +++ b/src/compiler/scanner.ts @@ -114,6 +114,7 @@ namespace ts { "try": SyntaxKind.TryKeyword, "type": SyntaxKind.TypeKeyword, "typeof": SyntaxKind.TypeOfKeyword, + "undefined": SyntaxKind.UndefinedKeyword, "var": SyntaxKind.VarKeyword, "void": SyntaxKind.VoidKeyword, "while": SyntaxKind.WhileKeyword, diff --git a/src/compiler/sys.ts b/src/compiler/sys.ts index 4cf94655b35..2550ca78877 100644 --- a/src/compiler/sys.ts +++ b/src/compiler/sys.ts @@ -1,8 +1,13 @@ /// namespace ts { - export type FileWatcherCallback = (path: string, removed?: boolean) => void; - export type DirectoryWatcherCallback = (path: string) => void; + export type FileWatcherCallback = (fileName: string, removed?: boolean) => void; + export type DirectoryWatcherCallback = (directoryName: string) => void; + export interface WatchedFile { + fileName: string; + callback: FileWatcherCallback; + mtime?: Date; + } export interface System { args: string[]; @@ -11,7 +16,7 @@ namespace ts { write(s: string): void; readFile(path: string, encoding?: string): string; writeFile(path: string, data: string, writeByteOrderMark?: boolean): void; - watchFile?(path: Path, callback: FileWatcherCallback): FileWatcher; + watchFile?(path: string, callback: FileWatcherCallback): FileWatcher; watchDirectory?(path: string, callback: DirectoryWatcherCallback, recursive?: boolean): FileWatcher; resolvePath(path: string): string; fileExists(path: string): boolean; @@ -20,22 +25,18 @@ namespace ts { getExecutingFilePath(): string; getCurrentDirectory(): string; readDirectory(path: string, extension?: string, exclude?: string[]): string[]; + getModifiedTime?(path: string): Date; + createHash?(data: string): string; getMemoryUsage?(): number; exit(exitCode?: number): void; } - interface WatchedFile { - filePath: Path; - callback: FileWatcherCallback; - mtime?: Date; - } - export interface FileWatcher { close(): void; } export interface DirectoryWatcher extends FileWatcher { - directoryPath: Path; + directoryName: string; referenceCount: number; } @@ -226,106 +227,31 @@ namespace ts { const _fs = require("fs"); const _path = require("path"); const _os = require("os"); + const _crypto = require("crypto"); - // average async stat takes about 30 microseconds - // set chunk size to do 30 files in < 1 millisecond - function createPollingWatchedFileSet(interval = 2500, chunkSize = 30) { - let watchedFiles: WatchedFile[] = []; - let nextFileToCheck = 0; - let watchTimer: any; - - function getModifiedTime(fileName: string): Date { - return _fs.statSync(fileName).mtime; - } - - function poll(checkedIndex: number) { - const watchedFile = watchedFiles[checkedIndex]; - if (!watchedFile) { - return; - } - - _fs.stat(watchedFile.filePath, (err: any, stats: any) => { - if (err) { - watchedFile.callback(watchedFile.filePath); - } - else if (watchedFile.mtime.getTime() !== stats.mtime.getTime()) { - watchedFile.mtime = getModifiedTime(watchedFile.filePath); - watchedFile.callback(watchedFile.filePath, watchedFile.mtime.getTime() === 0); - } - }); - } - - // this implementation uses polling and - // stat due to inconsistencies of fs.watch - // and efficiency of stat on modern filesystems - function startWatchTimer() { - watchTimer = setInterval(() => { - let count = 0; - let nextToCheck = nextFileToCheck; - let firstCheck = -1; - while ((count < chunkSize) && (nextToCheck !== firstCheck)) { - poll(nextToCheck); - if (firstCheck < 0) { - firstCheck = nextToCheck; - } - nextToCheck++; - if (nextToCheck === watchedFiles.length) { - nextToCheck = 0; - } - count++; - } - nextFileToCheck = nextToCheck; - }, interval); - } - - function addFile(filePath: Path, callback: FileWatcherCallback): WatchedFile { - const file: WatchedFile = { - filePath, - callback, - mtime: getModifiedTime(filePath) - }; - - watchedFiles.push(file); - if (watchedFiles.length === 1) { - startWatchTimer(); - } - return file; - } - - function removeFile(file: WatchedFile) { - watchedFiles = copyListRemovingItem(file, watchedFiles); - } - - return { - getModifiedTime: getModifiedTime, - poll: poll, - startWatchTimer: startWatchTimer, - addFile: addFile, - removeFile: removeFile - }; - } + const useNonPollingWatchers = process.env["TSC_NONPOLLING_WATCHER"]; function createWatchedFileSet() { - const dirWatchers = createFileMap(); + const dirWatchers: Map = {}; // One file can have multiple watchers - const fileWatcherCallbacks = createFileMap(); + const fileWatcherCallbacks: Map = {}; return { addFile, removeFile }; - function reduceDirWatcherRefCountForFile(filePath: Path) { - const dirPath = getDirectoryPath(filePath); - if (dirWatchers.contains(dirPath)) { - const watcher = dirWatchers.get(dirPath); + function reduceDirWatcherRefCountForFile(fileName: string) { + const dirName = getDirectoryPath(fileName); + if (hasProperty(dirWatchers, dirName)) { + const watcher = dirWatchers[dirName]; watcher.referenceCount -= 1; if (watcher.referenceCount <= 0) { watcher.close(); - dirWatchers.remove(dirPath); + delete dirWatchers[dirName]; } } } - function addDirWatcher(dirPath: Path): void { - if (dirWatchers.contains(dirPath)) { - const watcher = dirWatchers.get(dirPath); + function addDirWatcher(dirPath: string): void { + if (hasProperty(dirWatchers, dirPath)) { + const watcher = dirWatchers[dirPath]; watcher.referenceCount += 1; return; } @@ -336,76 +262,61 @@ namespace ts { (eventName: string, relativeFileName: string) => fileEventHandler(eventName, relativeFileName, dirPath) ); watcher.referenceCount = 1; - dirWatchers.set(dirPath, watcher); + dirWatchers[dirPath] = watcher; return; } - function addFileWatcherCallback(filePath: Path, callback: FileWatcherCallback): void { - if (fileWatcherCallbacks.contains(filePath)) { - fileWatcherCallbacks.get(filePath).push(callback); + function addFileWatcherCallback(filePath: string, callback: FileWatcherCallback): void { + if (hasProperty(fileWatcherCallbacks, filePath)) { + fileWatcherCallbacks[filePath].push(callback); } else { - fileWatcherCallbacks.set(filePath, [callback]); + fileWatcherCallbacks[filePath] = [callback]; } } - function addFile(filePath: Path, callback: FileWatcherCallback): WatchedFile { - addFileWatcherCallback(filePath, callback); - addDirWatcher(getDirectoryPath(filePath)); + function addFile(fileName: string, callback: FileWatcherCallback): WatchedFile { + addFileWatcherCallback(fileName, callback); + addDirWatcher(getDirectoryPath(fileName)); - return { filePath, callback }; + return { fileName, callback }; } function removeFile(watchedFile: WatchedFile) { - removeFileWatcherCallback(watchedFile.filePath, watchedFile.callback); - reduceDirWatcherRefCountForFile(watchedFile.filePath); + removeFileWatcherCallback(watchedFile.fileName, watchedFile.callback); + reduceDirWatcherRefCountForFile(watchedFile.fileName); } - function removeFileWatcherCallback(filePath: Path, callback: FileWatcherCallback) { - if (fileWatcherCallbacks.contains(filePath)) { - const newCallbacks = copyListRemovingItem(callback, fileWatcherCallbacks.get(filePath)); + function removeFileWatcherCallback(filePath: string, callback: FileWatcherCallback) { + if (hasProperty(fileWatcherCallbacks, filePath)) { + const newCallbacks = copyListRemovingItem(callback, fileWatcherCallbacks[filePath]); if (newCallbacks.length === 0) { - fileWatcherCallbacks.remove(filePath); + delete fileWatcherCallbacks[filePath]; } else { - fileWatcherCallbacks.set(filePath, newCallbacks); + fileWatcherCallbacks[filePath] = newCallbacks; } } } - function fileEventHandler(eventName: string, relativeFileName: string, baseDirPath: Path) { + function fileEventHandler(eventName: string, relativeFileName: string, baseDirPath: string) { // When files are deleted from disk, the triggered "rename" event would have a relativefileName of "undefined" - const filePath = typeof relativeFileName !== "string" + const fileName = typeof relativeFileName !== "string" ? undefined - : toPath(relativeFileName, baseDirPath, createGetCanonicalFileName(sys.useCaseSensitiveFileNames)); + : ts.getNormalizedAbsolutePath(relativeFileName, baseDirPath); // Some applications save a working file via rename operations - if ((eventName === "change" || eventName === "rename") && fileWatcherCallbacks.contains(filePath)) { - for (const fileCallback of fileWatcherCallbacks.get(filePath)) { - fileCallback(filePath); + if ((eventName === "change" || eventName === "rename") && hasProperty(fileWatcherCallbacks, fileName)) { + for (const fileCallback of fileWatcherCallbacks[fileName]) { + fileCallback(fileName); } } } } - - // REVIEW: for now this implementation uses polling. - // The advantage of polling is that it works reliably - // on all os and with network mounted files. - // For 90 referenced files, the average time to detect - // changes is 2*msInterval (by default 5 seconds). - // The overhead of this is .04 percent (1/2500) with - // average pause of < 1 millisecond (and max - // pause less than 1.5 milliseconds); question is - // do we anticipate reference sets in the 100s and - // do we care about waiting 10-20 seconds to detect - // changes for large reference sets? If so, do we want - // to increase the chunk size or decrease the interval - // time dynamically to match the large reference set? - const pollingWatchedFileSet = createPollingWatchedFileSet(); const watchedFileSet = createWatchedFileSet(); function isNode4OrLater(): boolean { - return parseInt(process.version.charAt(1)) >= 4; - } + return parseInt(process.version.charAt(1)) >= 4; + } const platform: string = _os.platform(); // win32\win64 are case insensitive platforms, MacOS (darwin) by default is also case insensitive @@ -498,6 +409,11 @@ namespace ts { const files = _fs.readdirSync(path || ".").sort(); const directories: string[] = []; for (const current of files) { + // This is necessary because on some file system node fails to exclude + // "." and "..". See https://github.com/nodejs/node/issues/4002 + if (current === "." || current === "..") { + continue; + } const name = combinePaths(path, current); if (!contains(exclude, getCanonicalPath(name))) { const stat = _fs.statSync(name); @@ -526,18 +442,29 @@ namespace ts { }, readFile, writeFile, - watchFile: (filePath, callback) => { - // Node 4.0 stabilized the `fs.watch` function on Windows which avoids polling - // and is more efficient than `fs.watchFile` (ref: https://github.com/nodejs/node/pull/2649 - // and https://github.com/Microsoft/TypeScript/issues/4643), therefore - // if the current node.js version is newer than 4, use `fs.watch` instead. - const watchSet = isNode4OrLater() ? watchedFileSet : pollingWatchedFileSet; - const watchedFile = watchSet.addFile(filePath, callback); - return { - close: () => watchSet.removeFile(watchedFile) - }; + watchFile: (fileName, callback) => { + if (useNonPollingWatchers) { + const watchedFile = watchedFileSet.addFile(fileName, callback); + return { + close: () => watchedFileSet.removeFile(watchedFile) + }; + } + else { + _fs.watchFile(fileName, { persistent: true, interval: 250 }, fileChanged); + return { + close: () => _fs.unwatchFile(fileName, fileChanged) + }; + } + + function fileChanged(curr: any, prev: any) { + if (+curr.mtime <= +prev.mtime) { + return; + } + + callback(fileName); + } }, - watchDirectory: (path, callback, recursive) => { + watchDirectory: (directoryName, callback, recursive) => { // Node 4.0 `fs.watch` function supports the "recursive" option on both OSX and Windows // (ref: https://github.com/nodejs/node/pull/2649 and https://github.com/Microsoft/TypeScript/issues/4643) let options: any; @@ -549,7 +476,7 @@ namespace ts { } return _fs.watch( - path, + directoryName, options, (eventName: string, relativeFileName: string) => { // In watchDirectory we only care about adding and removing files (when event name is @@ -557,7 +484,7 @@ namespace ts { // event name is "change") if (eventName === "rename") { // When deleting a file, the passed baseFileName is null - callback(!relativeFileName ? relativeFileName : normalizePath(combinePaths(path, relativeFileName))); + callback(!relativeFileName ? relativeFileName : normalizePath(combinePaths(directoryName, relativeFileName))); }; } ); @@ -579,6 +506,19 @@ namespace ts { return process.cwd(); }, readDirectory, + getModifiedTime(path) { + try { + return _fs.statSync(path).mtime; + } + catch (e) { + return undefined; + } + }, + createHash(data) { + const hash = _crypto.createHash("md5"); + hash.update(data); + return hash.digest("hex"); + }, getMemoryUsage() { if (global.gc) { global.gc(); @@ -621,7 +561,10 @@ namespace ts { }; } - if (typeof WScript !== "undefined" && typeof ActiveXObject === "function") { + if (typeof ChakraHost !== "undefined") { + return getChakraSystem(); + } + else if (typeof WScript !== "undefined" && typeof ActiveXObject === "function") { return getWScriptSystem(); } else if (typeof process !== "undefined" && process.nextTick && !process.browser && typeof require !== "undefined") { @@ -629,9 +572,6 @@ namespace ts { // process.browser check excludes webpack and browserify return getNodeSystem(); } - else if (typeof ChakraHost !== "undefined") { - return getChakraSystem(); - } else { return undefined; // Unsupported host } diff --git a/src/compiler/tsc.ts b/src/compiler/tsc.ts index 706d4da92f7..e25ae37e21f 100644 --- a/src/compiler/tsc.ts +++ b/src/compiler/tsc.ts @@ -14,6 +14,20 @@ namespace ts { } } + function reportEmittedFiles(files: string[], host: CompilerHost): void { + if (!files || files.length == 0) { + return; + } + + const currentDir = sys.getCurrentDirectory(); + + for (const file of files) { + const filepath = getNormalizedAbsolutePath(file, currentDir); + + sys.write(`TSFILE: ${filepath}${sys.newLine}`); + } + } + /** * Checks to see if the locale is in the appropriate format, * and if it is, attempts to set the appropriate language. @@ -30,11 +44,9 @@ namespace ts { const territory = matchResult[3]; // First try the entire locale, then fall back to just language if that's all we have. - if (!trySetLanguageAndTerritory(language, territory, errors) && - !trySetLanguageAndTerritory(language, undefined, errors)) { - - errors.push(createCompilerDiagnostic(Diagnostics.Unsupported_locale_0, locale)); - return false; + // Either ways do not fail, and fallback to the English diagnostic strings. + if (!trySetLanguageAndTerritory(language, territory, errors)) { + trySetLanguageAndTerritory(language, undefined, errors); } return true; @@ -108,7 +120,6 @@ namespace ts { sys.write(output); } - const redForegroundEscapeSequence = "\u001b[91m"; const yellowForegroundEscapeSequence = "\u001b[93m"; const blueForegroundEscapeSequence = "\u001b[93m"; @@ -240,11 +251,6 @@ namespace ts { return typeof JSON === "object" && typeof JSON.parse === "function"; } - function isWatchSet(options: CompilerOptions) { - // Firefox has Object.prototype.watch - return options.watch && options.hasOwnProperty("watch"); - } - export function executeCommandLine(args: string[]): void { const commandLine = parseCommandLine(args); let configFileName: string; // Configuration file name (if any) @@ -338,8 +344,7 @@ namespace ts { return sys.exit(ExitStatus.DiagnosticsPresent_OutputsSkipped); } if (configFileName) { - const configFilePath = toPath(configFileName, sys.getCurrentDirectory(), createGetCanonicalFileName(sys.useCaseSensitiveFileNames)); - configFileWatcher = sys.watchFile(configFilePath, configFileChanged); + configFileWatcher = sys.watchFile(configFileName, configFileChanged); } if (sys.watchDirectory && configFileName) { const directory = ts.getDirectoryPath(configFileName); @@ -386,6 +391,22 @@ namespace ts { sys.exit(ExitStatus.DiagnosticsPresent_OutputsSkipped); return; } + if (isWatchSet(configParseResult.options)) { + if (!sys.watchFile) { + reportDiagnostic(createCompilerDiagnostic(Diagnostics.The_current_host_does_not_support_the_0_option, "--watch"), /* compilerHost */ undefined); + sys.exit(ExitStatus.DiagnosticsPresent_OutputsSkipped); + } + + if (!directoryWatcher && sys.watchDirectory && configFileName) { + const directory = ts.getDirectoryPath(configFileName); + directoryWatcher = sys.watchDirectory( + // When the configFileName is just "tsconfig.json", the watched directory should be + // the current directory; if there is a given "project" parameter, then the configFileName + // is an absolute file name. + directory == "" ? "." : directory, + watchedDirectoryChanged, /*recursive*/ true); + }; + } return configParseResult; } @@ -445,10 +466,9 @@ namespace ts { } // Use default host function const sourceFile = hostGetSourceFile(fileName, languageVersion, onError); - if (sourceFile && isWatchSet(compilerOptions)) { + if (sourceFile && isWatchSet(compilerOptions) && sys.watchFile) { // Attach a file watcher - const filePath = toPath(sourceFile.fileName, sys.getCurrentDirectory(), createGetCanonicalFileName(sys.useCaseSensitiveFileNames)); - sourceFile.fileWatcher = sys.watchFile(filePath, (fileName: string, removed?: boolean) => sourceFileChanged(sourceFile, removed)); + sourceFile.fileWatcher = sys.watchFile(sourceFile.fileName, (fileName: string, removed?: boolean) => sourceFileChanged(sourceFile, removed)); } return sourceFile; } @@ -600,6 +620,8 @@ namespace ts { reportDiagnostics(sortAndDeduplicateDiagnostics(diagnostics), compilerHost); + reportEmittedFiles(emitOutput.emittedFiles, compilerHost); + if (emitOutput.emitSkipped && diagnostics.length > 0) { // If the emitter didn't emit anything, then pass that value along. return ExitStatus.DiagnosticsPresent_OutputsSkipped; @@ -651,6 +673,8 @@ namespace ts { const usageColumn: string[] = []; // Things like "-d, --declaration" go in here. const descriptionColumn: string[] = []; + const optionsDescriptionMap: Map = {}; // Map between option.description and list of option.type if it is a kind + for (let i = 0; i < optsList.length; i++) { const option = optsList[i]; @@ -671,7 +695,22 @@ namespace ts { usageText += getParamType(option); usageColumn.push(usageText); - descriptionColumn.push(getDiagnosticText(option.description)); + let description: string; + + if (option.name === "lib") { + description = getDiagnosticText(option.description); + const options: string[] = []; + const element = (option).element; + forEachKey(>element.type, key => { + options.push(`'${key}'`); + }); + optionsDescriptionMap[description] = options; + } + else { + description = getDiagnosticText(option.description); + } + + descriptionColumn.push(description); // Set the new margin for the description column if necessary. marginLength = Math.max(usageText.length, marginLength); @@ -687,7 +726,16 @@ namespace ts { for (let i = 0; i < usageColumn.length; i++) { const usage = usageColumn[i]; const description = descriptionColumn[i]; + const kindsList = optionsDescriptionMap[description]; output += usage + makePadding(marginLength - usage.length + 2) + description + sys.newLine; + + if (kindsList) { + output += makePadding(marginLength + 4); + for (const kind of kindsList) { + output += kind + " "; + } + output += sys.newLine; + } } sys.write(output); diff --git a/src/compiler/types.ts b/src/compiler/types.ts index c065478a20a..d0d411a710e 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -171,6 +171,7 @@ namespace ts { StringKeyword, SymbolKeyword, TypeKeyword, + UndefinedKeyword, FromKeyword, GlobalKeyword, OfKeyword, // LastKeyword and LastToken @@ -240,6 +241,7 @@ namespace ts { OmittedExpression, ExpressionWithTypeArguments, AsExpression, + NonNullExpression, // Misc TemplateSpan, @@ -274,6 +276,7 @@ namespace ts { ModuleDeclaration, ModuleBlock, CaseBlock, + GlobalModuleExportDeclaration, ImportEqualsDeclaration, ImportDeclaration, ImportClause, @@ -402,6 +405,7 @@ namespace ts { JavaScriptFile = 1 << 27, // If node was parsed in a JavaScript ThisNodeOrAnySubNodesHasError = 1 << 28, // If this node or any of its children had an error HasAggregatedChildData = 1 << 29, // If we've computed data from children and cached it in this node + HasJsxSpreadAttribute = 1 << 30, Modifier = Export | Ambient | Public | Private | Protected | Static | Abstract | Default | Async, AccessibilityModifier = Public | Private | Protected, @@ -411,7 +415,7 @@ namespace ts { EmitHelperFlags = HasClassExtends | HasDecorators | HasParamDecorators | HasAsyncFunctions, // Parsing context flags - ContextFlags = DisallowInContext | YieldContext | DecoratorContext | AwaitContext, + ContextFlags = DisallowInContext | YieldContext | DecoratorContext | AwaitContext | JavaScriptFile, // Exclude these flags when parsing a Type TypeExcludesFlags = YieldContext | AwaitContext, @@ -446,6 +450,7 @@ namespace ts { /* @internal */ locals?: SymbolTable; // Locals associated with node (initialized by binding) /* @internal */ nextContainer?: Node; // Next container in declaration order (initialized by binding) /* @internal */ localSymbol?: Symbol; // Local symbol declared by node (initialized by binding only for exported nodes) + /* @internal */ flowNode?: FlowNode; // Associated FlowNode (initialized by binding) } export interface NodeArray extends Array, TextRange { @@ -967,6 +972,8 @@ namespace ts { name: Identifier; } + export type IdentifierOrPropertyAccess = Identifier | PropertyAccessExpression; + // @kind(SyntaxKind.ElementAccessExpression) export interface ElementAccessExpression extends MemberExpression { expression: LeftHandSideExpression; @@ -1011,6 +1018,11 @@ namespace ts { export type AssertionExpression = TypeAssertion | AsExpression; + // @kind(SyntaxKind.NonNullExpression) + export interface NonNullExpression extends LeftHandSideExpression { + expression: Expression; + } + /// A JSX expression of the form ... // @kind(SyntaxKind.JsxElement) export interface JsxElement extends PrimaryExpression { @@ -1208,6 +1220,8 @@ namespace ts { block: Block; } + export type DeclarationWithTypeParameters = SignatureDeclaration | ClassLikeDeclaration | InterfaceDeclaration | TypeAliasDeclaration; + export interface ClassLikeDeclaration extends Declaration { name?: Identifier; typeParameters?: NodeArray; @@ -1324,6 +1338,12 @@ namespace ts { name: Identifier; } + // @kind(SyntaxKind.GlobalModuleImport) + export interface GlobalModuleExportDeclaration extends DeclarationStatement { + name: Identifier; + moduleReference: LiteralLikeNode; + } + // @kind(SyntaxKind.ExportDeclaration) export interface ExportDeclaration extends DeclarationStatement { exportClause?: NamedExports; @@ -1495,6 +1515,40 @@ namespace ts { isBracketed: boolean; } + export const enum FlowKind { + Unreachable, + Start, + Label, + LoopLabel, + Assignment, + Condition + } + + export interface FlowNode { + kind: FlowKind; // Node kind + id?: number; // Node id used by flow type cache in checker + } + + // FlowLabel represents a junction with multiple possible preceding control flows. + export interface FlowLabel extends FlowNode { + antecedents: FlowNode[]; + } + + // FlowAssignment represents a node that assigns a value to a narrowable reference, + // i.e. an identifier or a dotted name that starts with an identifier or 'this'. + export interface FlowAssignment extends FlowNode { + node: Expression | VariableDeclaration | BindingElement; + antecedent: FlowNode; + } + + // FlowCondition represents a condition that is known to be true or false at the + // node's location in the control flow. + export interface FlowCondition extends FlowNode { + expression: Expression; + assumeTrue: boolean; + antecedent: FlowNode; + } + export interface AmdDependency { path: string; name: string; @@ -1513,6 +1567,7 @@ namespace ts { amdDependencies: AmdDependency[]; moduleName: string; referencedFiles: FileReference[]; + typeReferenceDirectives: FileReference[]; languageVariant: LanguageVariant; isDeclarationFile: boolean; @@ -1537,6 +1592,8 @@ namespace ts { /* @internal */ externalModuleIndicator: Node; // The first node that causes this file to be a CommonJS module /* @internal */ commonJsModuleIndicator: Node; + // True if the file was a root file in a compilation or a /// reference targets + /* @internal */ wasReferenced?: boolean; /* @internal */ identifiers: Map; /* @internal */ nodeCount: number; @@ -1558,6 +1615,7 @@ namespace ts { // It is used to resolve module names in the checker. // Content of this field should never be used directly - use getResolvedModuleFileName/setResolvedModuleFileName functions instead /* @internal */ resolvedModules: Map; + /* @internal */ resolvedTypeReferenceDirectiveNames: Map; /* @internal */ imports: LiteralExpression[]; /* @internal */ moduleAugmentations: LiteralExpression[]; } @@ -1573,7 +1631,7 @@ namespace ts { } export interface WriteFileCallback { - (fileName: string, data: string, writeByteOrderMark: boolean, onError?: (message: string) => void): void; + (fileName: string, data: string, writeByteOrderMark: boolean, onError?: (message: string) => void, sourceFiles?: SourceFile[]): void; } export class OperationCanceledException { } @@ -1634,6 +1692,7 @@ namespace ts { /* @internal */ getTypeCount(): number; /* @internal */ getFileProcessingDiagnostics(): DiagnosticCollection; + /* @internal */ getResolvedTypeReferenceDirectives(): Map; // For testing purposes only. /* @internal */ structureIsReused?: boolean; } @@ -1684,6 +1743,7 @@ namespace ts { emitSkipped: boolean; /** Contains declaration emit diagnostics */ diagnostics: Diagnostic[]; + emittedFiles: string[]; // Array of files the compiler wrote to disk /* @internal */ sourceMaps: SourceMapData[]; // Array of sourceMapData if compiler emitted sourcemaps } @@ -1693,6 +1753,7 @@ namespace ts { getSourceFiles(): SourceFile[]; getSourceFile(fileName: string): SourceFile; + getResolvedTypeReferenceDirectives(): Map; } export interface TypeChecker { @@ -1710,6 +1771,7 @@ namespace ts { getSymbolsOfParameterPropertyDeclaration(parameter: ParameterDeclaration, parameterName: string): Symbol[]; getShorthandAssignmentValueSymbol(location: Node): Symbol; getExportSpecifierLocalTargetSymbol(location: ExportSpecifier): Symbol; + getPropertySymbolOfDestructuringAssignment(location: Identifier): Symbol; getTypeAtLocation(node: Node): Type; typeToString(type: Type, enclosingDeclaration?: Node, flags?: TypeFormatFlags): string; symbolToString(symbol: Symbol, enclosingDeclaration?: Node, meaning?: SymbolFlags): string; @@ -1753,7 +1815,7 @@ namespace ts { buildTypeParameterDisplay(tp: TypeParameter, writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags): void; buildTypePredicateDisplay(predicate: TypePredicate, writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags): void; buildTypeParameterDisplayFromSymbol(symbol: Symbol, writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags): void; - buildDisplayForParametersAndDelimiters(parameters: Symbol[], writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags): void; + buildDisplayForParametersAndDelimiters(thisType: Type, parameters: Symbol[], writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags): void; buildDisplayForTypeParametersAndDelimiters(typeParameters: TypeParameter[], writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags): void; buildReturnTypeDisplay(signature: Signature, writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags): void; } @@ -1788,6 +1850,7 @@ namespace ts { WriteTypeArgumentsOfSignature = 0x00000020, // Write the type arguments instead of type parameters of the signature InElementType = 0x00000040, // Writing an array or union element type UseFullyQualifiedType = 0x00000080, // Write out the fully qualified type name (eg. Module.Type, instead of Type) + InFirstTypeArgument = 0x00000100, // Writing first type argument of the instantiated type } export const enum SymbolFormatFlags { @@ -1889,6 +1952,7 @@ namespace ts { writeTypeOfDeclaration(declaration: AccessorDeclaration | VariableLikeDeclaration, enclosingDeclaration: Node, flags: TypeFormatFlags, writer: SymbolWriter): void; writeReturnTypeOfSignatureDeclaration(signatureDeclaration: SignatureDeclaration, enclosingDeclaration: Node, flags: TypeFormatFlags, writer: SymbolWriter): void; writeTypeOfExpression(expr: Expression, enclosingDeclaration: Node, flags: TypeFormatFlags, writer: SymbolWriter): void; + writeBaseConstructorTypeOfClass(node: ClassLikeDeclaration, enclosingDeclaration: Node, flags: TypeFormatFlags, writer: SymbolWriter): void; isSymbolAccessible(symbol: Symbol, enclosingDeclaration: Node, meaning: SymbolFlags): SymbolAccessibilityResult; isEntityNameVisible(entityName: EntityName | Expression, enclosingDeclaration: Node): SymbolVisibilityResult; // Returns the constant value this property access resolves to, or 'undefined' for a non-constant @@ -1899,6 +1963,8 @@ namespace ts { moduleExportsSomeValue(moduleReferenceExpression: Expression): boolean; isArgumentsLocalBinding(node: Identifier): boolean; getExternalModuleFileFromDeclaration(declaration: ImportEqualsDeclaration | ImportDeclaration | ExportDeclaration | ModuleDeclaration): SourceFile; + getTypeReferenceDirectivesForEntityName(name: EntityName | PropertyAccessExpression): string[]; + getTypeReferenceDirectivesForSymbol(symbol: Symbol, meaning?: SymbolFlags): string[]; } export const enum SymbolFlags { @@ -1994,6 +2060,7 @@ namespace ts { members?: SymbolTable; // Class, interface or literal instance members exports?: SymbolTable; // Module exports + globalExports?: SymbolTable; // Conditional global UMD exports /* @internal */ id?: number; // Unique id (used to look up SymbolLinks) /* @internal */ mergeId?: number; // Merge id (used to look up merged symbol) /* @internal */ parent?: Symbol; // Parent symbol @@ -2016,7 +2083,7 @@ namespace ts { exportsChecked?: boolean; // True if exports of external module have been checked isDeclarationWithCollidingName?: boolean; // True if symbol is block scoped redeclaration bindingElement?: BindingElement; // Binding element associated with property symbol - exportsSomeValue?: boolean; // true if module exports some value (not just types) + exportsSomeValue?: boolean; // True if module exports some value (not just types) } /* @internal */ @@ -2050,22 +2117,17 @@ namespace ts { /* @internal */ export interface NodeLinks { resolvedType?: Type; // Cached type of type node - resolvedAwaitedType?: Type; // Cached awaited type of type node resolvedSignature?: Signature; // Cached signature of signature node or call expression resolvedSymbol?: Symbol; // Cached name resolution result resolvedIndexInfo?: IndexInfo; // Cached indexing info resolution result flags?: NodeCheckFlags; // Set of flags specific to Node enumMemberValue?: number; // Constant value of enum member isVisible?: boolean; // Is this node visible - generatedName?: string; // Generated name for module, enum, or import declaration - generatedNames?: Map; // Generated names table for source file - assignmentChecks?: Map; // Cache of assignment checks hasReportedStatementInAmbientContext?: boolean; // Cache boolean if we report statements in ambient context - importOnRightSide?: Symbol; // for import declarations - import that appear on the right side jsxFlags?: JsxFlags; // flags for knowing what kind of element/attributes we're dealing with resolvedJsxType?: Type; // resolved element attributes type of a JSX openinglike element hasSuperCall?: boolean; // recorded result when we try to find super-call. We only try to find one if this flag is undefined, indicating that we haven't made an attempt. - superCall?: ExpressionStatement; // Cached first super-call found in the constructor. Used in checking whether super is called before this-accessing + superCall?: ExpressionStatement; // Cached first super-call found in the constructor. Used in checking whether super is called before this-accessing } export const enum TypeFlags { @@ -2093,7 +2155,7 @@ namespace ts { /* @internal */ FreshObjectLiteral = 0x00100000, // Fresh object literal type /* @internal */ - ContainsUndefinedOrNull = 0x00200000, // Type is or contains Undefined or Null type + ContainsUndefinedOrNull = 0x00200000, // Type is or contains undefined or null type /* @internal */ ContainsObjectLiteral = 0x00400000, // Type is or contains object literal type /* @internal */ @@ -2102,6 +2164,8 @@ namespace ts { ThisType = 0x02000000, // This type ObjectLiteralPatternWithComputedProperties = 0x04000000, // Object literal type implied by binding pattern has computed properties + /* @internal */ + Nullable = Undefined | Null, /* @internal */ Intrinsic = Any | String | Number | Boolean | ESSymbol | Void | Undefined | Null, /* @internal */ @@ -2111,6 +2175,7 @@ namespace ts { ObjectType = Class | Interface | Reference | Tuple | Anonymous, UnionOrIntersection = Union | Intersection, StructuredType = ObjectType | Union | Intersection, + Narrowable = Any | ObjectType | Union | TypeParameter, /* @internal */ RequiresWidening = ContainsUndefinedOrNull | ContainsObjectLiteral, /* @internal */ @@ -2249,6 +2314,7 @@ namespace ts { declaration: SignatureDeclaration; // Originating declaration typeParameters: TypeParameter[]; // Type parameters (undefined if non-generic) parameters: Symbol[]; // Parameters + thisType?: Type; // type of this-type /* @internal */ resolvedReturnType: Type; // Resolved return type /* @internal */ @@ -2285,6 +2351,7 @@ namespace ts { /* @internal */ export interface TypeMapper { (t: TypeParameter): Type; + mappedTypes?: Type[]; // Types mapped by this mapper instantiations?: Type[]; // Cache of instantiations created using this type mapper. context?: InferenceContext; // The inference context this mapper was created from. // Only inference mappers have this set (in createInferenceMapper). @@ -2367,6 +2434,8 @@ namespace ts { export type PathSubstitutions = Map; export type TsConfigOnlyOptions = RootPaths | PathSubstitutions; + export type CompilerOptionsValue = string | number | boolean | (string | number)[] | TsConfigOnlyOptions; + export interface CompilerOptions { allowNonTsExtensions?: boolean; charset?: string; @@ -2381,6 +2450,7 @@ namespace ts { jsx?: JsxEmit; reactNamespace?: string; listFiles?: boolean; + typesSearchPaths?: string[]; locale?: string; mapRoot?: string; module?: ModuleKind; @@ -2390,6 +2460,7 @@ namespace ts { noEmitOnError?: boolean; noErrorTruncation?: boolean; noImplicitAny?: boolean; + noImplicitThis?: boolean; noLib?: boolean; noResolve?: boolean; out?: string; @@ -2419,10 +2490,13 @@ namespace ts { baseUrl?: string; paths?: PathSubstitutions; rootDirs?: RootPaths; - traceModuleResolution?: boolean; + traceResolution?: boolean; allowSyntheticDefaultImports?: boolean; allowJs?: boolean; noImplicitUseStrict?: boolean; + strictNullChecks?: boolean; + listEmittedFiles?: boolean; + lib?: string[]; /* @internal */ stripInternal?: boolean; // Skip checking lib.d.ts to help speed up tests. @@ -2430,7 +2504,32 @@ namespace ts { // Do not perform validation of output file name in transpile scenarios /* @internal */ suppressOutputPathCheck?: boolean; - [option: string]: string | number | boolean | TsConfigOnlyOptions; + /* @internal */ + // When options come from a config file, its path is recorded here + configFilePath?: string; + /* @internal */ + // Path used to used to compute primary search locations + typesRoot?: string; + types?: string[]; + + list?: string[]; + [option: string]: CompilerOptionsValue | undefined; + } + + export interface TypingOptions { + enableAutoDiscovery?: boolean; + include?: string[]; + exclude?: string[]; + [option: string]: string[] | boolean | undefined; + } + + export interface DiscoverTypingsInfo { + fileNames: string[]; // The file names that belong to the same project. + projectRootPath: string; // The path to the project root directory + safeListPath: string; // The path used to retrieve the safe list + packageNameToTypingLocation: Map; // The map of package names to their cached typing locations + typingOptions: TypingOptions; // Used to customize the typing inference process + compilerOptions: CompilerOptions; // Used as a source for typing inference } export enum ModuleKind { @@ -2491,6 +2590,7 @@ namespace ts { export interface ParsedCommandLine { options: CompilerOptions; + typingOptions?: TypingOptions; fileNames: string[]; errors: Diagnostic[]; } @@ -2498,7 +2598,7 @@ namespace ts { /* @internal */ export interface CommandLineOptionBase { name: string; - type: "string" | "number" | "boolean" | "object" | Map; // a value of a primitive type, or an object literal mapping named values to actual values + type: "string" | "number" | "boolean" | "object" | "list" | Map; // a value of a primitive type, or an object literal mapping named values to actual values isFilePath?: boolean; // True if option value is a path or fileName shortName?: string; // A short mnemonic for convenience - for instance, 'h' can be used in place of 'help' description?: DiagnosticMessage; // The message describing what the command line switch does @@ -2514,8 +2614,7 @@ namespace ts { /* @internal */ export interface CommandLineOptionOfCustomType extends CommandLineOptionBase { - type: Map; // an object literal mapping named values to actual values - error: DiagnosticMessage; // The error given when the argument does not fit a customized 'type' + type: Map; // an object literal mapping named values to actual values } /* @internal */ @@ -2524,7 +2623,13 @@ namespace ts { } /* @internal */ - export type CommandLineOption = CommandLineOptionOfCustomType | CommandLineOptionOfPrimitiveType | TsConfigOnlyOption; + export interface CommandLineOptionOfListType extends CommandLineOptionBase { + type: "list"; + element: CommandLineOptionOfCustomType | CommandLineOptionOfPrimitiveType; + } + + /* @internal */ + export type CommandLineOption = CommandLineOptionOfCustomType | CommandLineOptionOfPrimitiveType | TsConfigOnlyOption | CommandLineOptionOfListType; /* @internal */ export const enum CharacterCodes { @@ -2688,10 +2793,23 @@ namespace ts { failedLookupLocations: string[]; } + export interface ResolvedTypeReferenceDirective { + // True if the type declaration file was found in a primary lookup location + primary: boolean; + // The location of the .d.ts file we located, or undefined if resolution failed + resolvedFileName?: string; + } + + export interface ResolvedTypeReferenceDirectiveWithFailedLookupLocations { + resolvedTypeReferenceDirective: ResolvedTypeReferenceDirective; + failedLookupLocations: string[]; + } + export interface CompilerHost extends ModuleResolutionHost { getSourceFile(fileName: string, languageVersion: ScriptTarget, onError?: (message: string) => void): SourceFile; getCancellationToken?(): CancellationToken; getDefaultLibFileName(options: CompilerOptions): string; + getDefaultLibLocation?(): string; writeFile: WriteFileCallback; getCurrentDirectory(): string; getCanonicalFileName(fileName: string): string; @@ -2706,6 +2824,10 @@ namespace ts { * 'throw new Error("NotImplemented")' */ resolveModuleNames?(moduleNames: string[], containingFile: string): ResolvedModule[]; + /** + * This method is a companion for 'resolveModuleNames' and is used to resolve 'types' references to actual type declaration files + */ + resolveTypeReferenceDirectives?(typeReferenceDirectiveNames: string[], containingFile: string): ResolvedTypeReferenceDirective[]; } export interface TextSpan { diff --git a/src/compiler/utilities.ts b/src/compiler/utilities.ts index 9c598da9069..b6c681e5f03 100644 --- a/src/compiler/utilities.ts +++ b/src/compiler/utilities.ts @@ -6,6 +6,7 @@ namespace ts { fileReference?: FileReference; diagnosticMessage?: DiagnosticMessage; isNoDefaultLib?: boolean; + isTypeReferenceDirective?: boolean; } export interface SynthesizedNode extends Node { @@ -118,6 +119,43 @@ namespace ts { sourceFile.resolvedModules[moduleNameText] = resolvedModule; } + export function setResolvedTypeReferenceDirective(sourceFile: SourceFile, typeReferenceDirectiveName: string, resolvedTypeReferenceDirective: ResolvedTypeReferenceDirective): void { + if (!sourceFile.resolvedTypeReferenceDirectiveNames) { + sourceFile.resolvedTypeReferenceDirectiveNames = {}; + } + + sourceFile.resolvedTypeReferenceDirectiveNames[typeReferenceDirectiveName] = resolvedTypeReferenceDirective; + } + + /* @internal */ + export function moduleResolutionIsEqualTo(oldResolution: ResolvedModule, newResolution: ResolvedModule): boolean { + return oldResolution.resolvedFileName === newResolution.resolvedFileName && oldResolution.isExternalLibraryImport === newResolution.isExternalLibraryImport; + } + + /* @internal */ + export function typeDirectiveIsEqualTo(oldResolution: ResolvedTypeReferenceDirective, newResolution: ResolvedTypeReferenceDirective): boolean { + return oldResolution.resolvedFileName === newResolution.resolvedFileName && oldResolution.primary === newResolution.primary; + } + + /* @internal */ + export function hasChangesInResolutions(names: string[], newResolutions: T[], oldResolutions: Map, comparer: (oldResolution: T, newResolution: T) => boolean): boolean { + if (names.length !== newResolutions.length) { + return false; + } + for (let i = 0; i < names.length; i++) { + const newResolution = newResolutions[i]; + const oldResolution = oldResolutions && hasProperty(oldResolutions, names[i]) ? oldResolutions[names[i]] : undefined; + const changed = + oldResolution + ? !newResolution || !comparer(oldResolution, newResolution) + : newResolution; + if (changed) { + return true; + } + } + return false; + } + // Returns true if this node contains a parse error anywhere underneath it. export function containsParseError(node: Node): boolean { aggregateChildData(node); @@ -179,6 +217,33 @@ namespace ts { return node.pos; } + export function getEndLinePosition(line: number, sourceFile: SourceFile): number { + Debug.assert(line >= 0); + const lineStarts = getLineStarts(sourceFile); + + const lineIndex = line; + const sourceText = sourceFile.text; + if (lineIndex + 1 === lineStarts.length) { + // last line - return EOF + return sourceText.length - 1; + } + else { + // current line start + const start = lineStarts[lineIndex]; + // take the start position of the next line - 1 = it should be some line break + let pos = lineStarts[lineIndex + 1] - 1; + Debug.assert(isLineBreak(sourceText.charCodeAt(pos))); + // walk backwards skipping line breaks, stop the the beginning of current line. + // i.e: + // + // $ <- end of line for this position should match the start position + while (start <= pos && isLineBreak(sourceText.charCodeAt(pos))) { + pos--; + } + return pos; + } + } + // Returns true if this node is missing from the actual source code. A 'missing' node is different // from 'undefined/defined'. When a node is undefined (which can happen for optional nodes // in the tree), it is definitely missing. However, a node may be defined, but still be @@ -364,6 +429,20 @@ namespace ts { return createTextSpanFromBounds(start, scanner.getTextPos()); } + function getErrorSpanForArrowFunction(sourceFile: SourceFile, node: ArrowFunction): TextSpan { + const pos = skipTrivia(sourceFile.text, node.pos); + if (node.body && node.body.kind === SyntaxKind.Block) { + const { line: startLine } = getLineAndCharacterOfPosition(sourceFile, node.body.pos); + const { line: endLine } = getLineAndCharacterOfPosition(sourceFile, node.body.end); + if (startLine < endLine) { + // The arrow function spans multiple lines, + // make the error span be the first line, inclusive. + return createTextSpan(pos, getEndLinePosition(startLine, sourceFile) - pos + 1); + } + } + return createTextSpanFromBounds(pos, node.end); + } + export function getErrorSpanForNode(sourceFile: SourceFile, node: Node): TextSpan { let errorNode = node; switch (node.kind) { @@ -392,6 +471,8 @@ namespace ts { case SyntaxKind.TypeAliasDeclaration: errorNode = (node).name; break; + case SyntaxKind.ArrowFunction: + return getErrorSpanForArrowFunction(sourceFile, node); } if (errorNode === undefined) { @@ -407,10 +488,6 @@ namespace ts { return createTextSpanFromBounds(pos, errorNode.end); } - export function isExternalModule(file: SourceFile): boolean { - return file.externalModuleIndicator !== undefined; - } - export function isExternalOrCommonJsModule(file: SourceFile): boolean { return (file.externalModuleIndicator || file.commonJsModuleIndicator) !== undefined; } @@ -502,6 +579,7 @@ namespace ts { } export let fullTripleSlashReferencePathRegEx = /^(\/\/\/\s*/; + export let fullTripleSlashReferenceTypeReferenceDirectiveRegEx = /^(\/\/\/\s*/; export let fullTripleSlashAMDReferencePathRegEx = /^(\/\/\/\s*/; export function isTypeNode(node: Node): boolean { @@ -515,6 +593,7 @@ namespace ts { case SyntaxKind.StringKeyword: case SyntaxKind.BooleanKeyword: case SyntaxKind.SymbolKeyword: + case SyntaxKind.UndefinedKeyword: return true; case SyntaxKind.VoidKeyword: return node.parent.kind !== SyntaxKind.VoidExpression; @@ -761,6 +840,15 @@ namespace ts { } } + export function getContainingFunctionOrModule(node: Node): Node { + while (true) { + node = node.parent; + if (isFunctionLike(node) || node.kind === SyntaxKind.ModuleDeclaration || node.kind === SyntaxKind.SourceFile) { + return node; + } + } + } + export function getContainingClass(node: Node): ClassLikeDeclaration { while (true) { node = node.parent; @@ -956,6 +1044,16 @@ namespace ts { return node.kind === SyntaxKind.ElementAccessExpression; } + export function isJSXTagName(node: Node) { + const parent = node.parent; + if (parent.kind === SyntaxKind.JsxOpeningElement || + parent.kind === SyntaxKind.JsxSelfClosingElement || + parent.kind === SyntaxKind.JsxClosingElement) { + return (parent).tagName === node; + } + return false; + } + export function isExpression(node: Node): boolean { switch (node.kind) { case SyntaxKind.SuperKeyword: @@ -972,6 +1070,7 @@ namespace ts { case SyntaxKind.TaggedTemplateExpression: case SyntaxKind.AsExpression: case SyntaxKind.TypeAssertionExpression: + case SyntaxKind.NonNullExpression: case SyntaxKind.ParenthesizedExpression: case SyntaxKind.FunctionExpression: case SyntaxKind.ClassExpression: @@ -996,9 +1095,9 @@ namespace ts { while (node.parent.kind === SyntaxKind.QualifiedName) { node = node.parent; } - return node.parent.kind === SyntaxKind.TypeQuery; + return node.parent.kind === SyntaxKind.TypeQuery || isJSXTagName(node); case SyntaxKind.Identifier: - if (node.parent.kind === SyntaxKind.TypeQuery) { + if (node.parent.kind === SyntaxKind.TypeQuery || isJSXTagName(node)) { return true; } // fall through @@ -1106,9 +1205,16 @@ namespace ts { return isRequire && (!checkArgumentIsStringLiteral || (expression).arguments[0].kind === SyntaxKind.StringLiteral); } + export function isSingleOrDoubleQuote(charCode: number) { + return charCode === CharacterCodes.singleQuote || charCode === CharacterCodes.doubleQuote; + } + /// Given a BinaryExpression, returns SpecialPropertyAssignmentKind for the various kinds of property /// assignments we treat as special in the binder export function getSpecialPropertyAssignmentKind(expression: Node): SpecialPropertyAssignmentKind { + if (!isInJavaScriptFile(expression)) { + return SpecialPropertyAssignmentKind.None; + } if (expression.kind !== SyntaxKind.BinaryExpression) { return SpecialPropertyAssignmentKind.None; } @@ -1204,10 +1310,10 @@ namespace ts { if (node.jsDocComment) { return node.jsDocComment; } - // Try to recognize this pattern when node is initializer of variable declaration and JSDoc comments are on containing variable statement. - // /** + // Try to recognize this pattern when node is initializer of variable declaration and JSDoc comments are on containing variable statement. + // /** // * @param {number} name - // * @returns {number} + // * @returns {number} // */ // var x = function(name) { return name.length; } if (checkParentVariableStatement) { @@ -1280,23 +1386,26 @@ namespace ts { return isRestParameter(lastOrUndefined(s.parameters)); } - export function isRestParameter(node: ParameterDeclaration) { - if (node) { - if (node.flags & NodeFlags.JavaScriptFile) { - if (node.type && node.type.kind === SyntaxKind.JSDocVariadicType) { - return true; - } + export function hasDeclaredRestParameter(s: SignatureDeclaration): boolean { + return isDeclaredRestParam(lastOrUndefined(s.parameters)); + } - const paramTag = getCorrespondingJSDocParameterTag(node); - if (paramTag && paramTag.typeExpression) { - return paramTag.typeExpression.type.kind === SyntaxKind.JSDocVariadicType; - } + export function isRestParameter(node: ParameterDeclaration) { + if (node && (node.flags & NodeFlags.JavaScriptFile)) { + if (node.type && node.type.kind === SyntaxKind.JSDocVariadicType) { + return true; } - return node.dotDotDotToken !== undefined; + const paramTag = getCorrespondingJSDocParameterTag(node); + if (paramTag && paramTag.typeExpression) { + return paramTag.typeExpression.type.kind === SyntaxKind.JSDocVariadicType; + } } + return isDeclaredRestParam(node); + } - return false; + export function isDeclaredRestParam(node: ParameterDeclaration) { + return node && node.dotDotDotToken !== undefined; } export function isLiteralKind(kind: SyntaxKind): boolean { @@ -1315,6 +1424,31 @@ namespace ts { return !!node && (node.kind === SyntaxKind.ArrayBindingPattern || node.kind === SyntaxKind.ObjectBindingPattern); } + // A node is an assignment target if it is on the left hand side of an '=' token, if it is parented by a property + // assignment in an object literal that is an assignment target, or if it is parented by an array literal that is + // an assignment target. Examples include 'a = xxx', '{ p: a } = xxx', '[{ p: a}] = xxx'. + export function isAssignmentTarget(node: Node): boolean { + while (node.parent.kind === SyntaxKind.ParenthesizedExpression) { + node = node.parent; + } + while (true) { + const parent = node.parent; + if (parent.kind === SyntaxKind.ArrayLiteralExpression || parent.kind === SyntaxKind.SpreadElementExpression) { + node = parent; + continue; + } + if (parent.kind === SyntaxKind.PropertyAssignment || parent.kind === SyntaxKind.ShorthandPropertyAssignment) { + node = parent.parent; + continue; + } + return parent.kind === SyntaxKind.BinaryExpression && + (parent).operatorToken.kind === SyntaxKind.EqualsToken && + (parent).left === node || + (parent.kind === SyntaxKind.ForInStatement || parent.kind === SyntaxKind.ForOfStatement) && + (parent).initializer === node; + } + } + export function isNodeDescendentOf(node: Node, ancestor: Node): boolean { while (node) { if (node === ancestor) return true; @@ -1411,7 +1545,7 @@ namespace ts { } // True if the given identifier, string literal, or number literal is the name of a declaration node - export function isDeclarationName(name: Node): name is Identifier | StringLiteral | LiteralExpression { + export function isDeclarationName(name: Node): boolean { if (name.kind !== SyntaxKind.Identifier && name.kind !== SyntaxKind.StringLiteral && name.kind !== SyntaxKind.NumericLiteral) { return false; } @@ -1475,6 +1609,7 @@ namespace ts { // export default ... export function isAliasSymbolDeclaration(node: Node): boolean { return node.kind === SyntaxKind.ImportEqualsDeclaration || + node.kind === SyntaxKind.GlobalModuleExportDeclaration || node.kind === SyntaxKind.ImportClause && !!(node).name || node.kind === SyntaxKind.NamespaceImport || node.kind === SyntaxKind.ImportSpecifier || @@ -1536,25 +1671,26 @@ namespace ts { }; } else { - const matchResult = fullTripleSlashReferencePathRegEx.exec(comment); - if (matchResult) { + const refMatchResult = fullTripleSlashReferencePathRegEx.exec(comment); + const refLibResult = !refMatchResult && fullTripleSlashReferenceTypeReferenceDirectiveRegEx.exec(comment); + if (refMatchResult || refLibResult) { const start = commentRange.pos; const end = commentRange.end; return { fileReference: { pos: start, end: end, - fileName: matchResult[3] + fileName: (refMatchResult || refLibResult)[3] }, - isNoDefaultLib: false - }; - } - else { - return { - diagnosticMessage: Diagnostics.Invalid_reference_directive_syntax, - isNoDefaultLib: false + isNoDefaultLib: false, + isTypeReferenceDirective: !!refLibResult }; } + + return { + diagnosticMessage: Diagnostics.Invalid_reference_directive_syntax, + isNoDefaultLib: false + }; } } @@ -2110,10 +2246,10 @@ namespace ts { return combinePaths(newDirPath, sourceFilePath); } - export function writeFile(host: EmitHost, diagnostics: DiagnosticCollection, fileName: string, data: string, writeByteOrderMark: boolean) { + export function writeFile(host: EmitHost, diagnostics: DiagnosticCollection, fileName: string, data: string, writeByteOrderMark: boolean, sourceFiles?: SourceFile[]) { host.writeFile(fileName, data, writeByteOrderMark, hostErrorMessage => { diagnostics.add(createCompilerDiagnostic(Diagnostics.Could_not_write_file_0_Colon_1, fileName, hostErrorMessage)); - }); + }, sourceFiles); } export function getLineOfLocalPosition(currentSourceFile: SourceFile, pos: number) { @@ -2406,6 +2542,7 @@ namespace ts { case SyntaxKind.ElementAccessExpression: case SyntaxKind.NewExpression: case SyntaxKind.CallExpression: + case SyntaxKind.NonNullExpression: case SyntaxKind.JsxElement: case SyntaxKind.JsxSelfClosingElement: case SyntaxKind.TaggedTemplateExpression: @@ -2629,6 +2766,11 @@ namespace ts { } return carriageReturnLineFeed; } + + export function isWatchSet(options: CompilerOptions) { + // Firefox has Object.prototype.watch + return options.watch && options.hasOwnProperty("watch"); + } } namespace ts { @@ -2866,4 +3008,13 @@ namespace ts { export function isParameterPropertyDeclaration(node: ParameterDeclaration): boolean { return node.flags & NodeFlags.AccessibilityModifier && node.parent.kind === SyntaxKind.Constructor && isClassLike(node.parent.parent); } + + export function startsWith(str: string, prefix: string): boolean { + return str.lastIndexOf(prefix, 0) === 0; + } + + export function endsWith(str: string, suffix: string): boolean { + const expectedPos = str.length - suffix.length; + return str.indexOf(suffix, expectedPos) === expectedPos; + } } diff --git a/src/harness/compilerRunner.ts b/src/harness/compilerRunner.ts index 473840d69cc..4842fd5a723 100644 --- a/src/harness/compilerRunner.ts +++ b/src/harness/compilerRunner.ts @@ -1,7 +1,7 @@ /// /// /// -/* tslint:disable:no-null */ +/* tslint:disable:no-null-keyword */ const enum CompilerTestType { Conformance, @@ -88,7 +88,7 @@ class CompilerBaselineRunner extends RunnerBase { toBeCompiled = []; otherFiles = []; - if (/require\(/.test(lastUnit.content) || /reference\spath/.test(lastUnit.content)) { + if (testCaseContent.settings["noImplicitReferences"] || /require\(/.test(lastUnit.content) || /reference\spath/.test(lastUnit.content)) { toBeCompiled.push({ unitName: this.makeUnitName(lastUnit.name, rootDir), content: lastUnit.content }); units.forEach(unit => { if (unit.name !== lastUnit.name) { @@ -102,6 +102,10 @@ class CompilerBaselineRunner extends RunnerBase { }); } + if (tsConfigOptions && tsConfigOptions.configFilePath !== undefined) { + tsConfigOptions.configFilePath = ts.combinePaths(rootDir, tsConfigOptions.configFilePath); + } + const output = Harness.Compiler.compileFiles( toBeCompiled, otherFiles, harnessSettings, /*options*/ tsConfigOptions, /*currentDirectory*/ undefined); @@ -140,7 +144,7 @@ class CompilerBaselineRunner extends RunnerBase { }); it (`Correct module resolution tracing for ${fileName}`, () => { - if (options.traceModuleResolution) { + if (options.traceResolution) { Harness.Baseline.runBaseline("Correct sourcemap content for " + fileName, justName.replace(/\.tsx?$/, ".trace.json"), () => { return JSON.stringify(result.traceResults || [], undefined, 4); }); @@ -252,125 +256,128 @@ class CompilerBaselineRunner extends RunnerBase { } // NEWTODO: Type baselines - if (result.errors.length === 0) { - // The full walker simulates the types that you would get from doing a full - // compile. The pull walker simulates the types you get when you just do - // a type query for a random node (like how the LS would do it). Most of the - // time, these will be the same. However, occasionally, they can be different. - // Specifically, when the compiler internally depends on symbol IDs to order - // things, then we may see different results because symbols can be created in a - // different order with 'pull' operations, and thus can produce slightly differing - // output. - // - // For example, with a full type check, we may see a type displayed as: number | string - // But with a pull type check, we may see it as: string | number - // - // These types are equivalent, but depend on what order the compiler observed - // certain parts of the program. - - const program = result.program; - const allFiles = toBeCompiled.concat(otherFiles).filter(file => !!program.getSourceFile(file.unitName)); - - const fullWalker = new TypeWriterWalker(program, /*fullTypeCheck*/ true); - - const fullResults: ts.Map = {}; - const pullResults: ts.Map = {}; - - for (const sourceFile of allFiles) { - fullResults[sourceFile.unitName] = fullWalker.getTypeAndSymbols(sourceFile.unitName); - pullResults[sourceFile.unitName] = fullWalker.getTypeAndSymbols(sourceFile.unitName); - } - - // Produce baselines. The first gives the types for all expressions. - // The second gives symbols for all identifiers. - let e1: Error, e2: Error; - try { - checkBaseLines(/*isSymbolBaseLine*/ false); - } - catch (e) { - e1 = e; - } - - try { - checkBaseLines(/*isSymbolBaseLine*/ true); - } - catch (e) { - e2 = e; - } - - if (e1 || e2) { - throw e1 || e2; - } - + if (result.errors.length !== 0) { return; + } - function checkBaseLines(isSymbolBaseLine: boolean) { - const fullBaseLine = generateBaseLine(fullResults, isSymbolBaseLine); - const pullBaseLine = generateBaseLine(pullResults, isSymbolBaseLine); + // The full walker simulates the types that you would get from doing a full + // compile. The pull walker simulates the types you get when you just do + // a type query for a random node (like how the LS would do it). Most of the + // time, these will be the same. However, occasionally, they can be different. + // Specifically, when the compiler internally depends on symbol IDs to order + // things, then we may see different results because symbols can be created in a + // different order with 'pull' operations, and thus can produce slightly differing + // output. + // + // For example, with a full type check, we may see a type displayed as: number | string + // But with a pull type check, we may see it as: string | number + // + // These types are equivalent, but depend on what order the compiler observed + // certain parts of the program. - const fullExtension = isSymbolBaseLine ? ".symbols" : ".types"; - const pullExtension = isSymbolBaseLine ? ".symbols.pull" : ".types.pull"; + const program = result.program; + const allFiles = toBeCompiled.concat(otherFiles).filter(file => !!program.getSourceFile(file.unitName)); - if (fullBaseLine !== pullBaseLine) { - Harness.Baseline.runBaseline("Correct full information for " + fileName, justName.replace(/\.tsx?/, fullExtension), () => fullBaseLine); - Harness.Baseline.runBaseline("Correct pull information for " + fileName, justName.replace(/\.tsx?/, pullExtension), () => pullBaseLine); - } - else { - Harness.Baseline.runBaseline("Correct information for " + fileName, justName.replace(/\.tsx?/, fullExtension), () => fullBaseLine); - } + const fullWalker = new TypeWriterWalker(program, /*fullTypeCheck*/ true); + + const fullResults: ts.Map = {}; + const pullResults: ts.Map = {}; + + for (const sourceFile of allFiles) { + fullResults[sourceFile.unitName] = fullWalker.getTypeAndSymbols(sourceFile.unitName); + pullResults[sourceFile.unitName] = fullWalker.getTypeAndSymbols(sourceFile.unitName); + } + + // Produce baselines. The first gives the types for all expressions. + // The second gives symbols for all identifiers. + let e1: Error, e2: Error; + try { + checkBaseLines(/*isSymbolBaseLine*/ false); + } + catch (e) { + e1 = e; + } + + try { + checkBaseLines(/*isSymbolBaseLine*/ true); + } + catch (e) { + e2 = e; + } + + if (e1 || e2) { + throw e1 || e2; + } + + return; + + function checkBaseLines(isSymbolBaseLine: boolean) { + const fullBaseLine = generateBaseLine(fullResults, isSymbolBaseLine); + const pullBaseLine = generateBaseLine(pullResults, isSymbolBaseLine); + + const fullExtension = isSymbolBaseLine ? ".symbols" : ".types"; + const pullExtension = isSymbolBaseLine ? ".symbols.pull" : ".types.pull"; + + if (fullBaseLine !== pullBaseLine) { + Harness.Baseline.runBaseline("Correct full information for " + fileName, justName.replace(/\.tsx?/, fullExtension), () => fullBaseLine); + Harness.Baseline.runBaseline("Correct pull information for " + fileName, justName.replace(/\.tsx?/, pullExtension), () => pullBaseLine); } - - function generateBaseLine(typeWriterResults: ts.Map, isSymbolBaseline: boolean): string { - const typeLines: string[] = []; - const typeMap: { [fileName: string]: { [lineNum: number]: string[]; } } = {}; - - allFiles.forEach(file => { - const codeLines = file.content.split("\n"); - typeWriterResults[file.unitName].forEach(result => { - if (isSymbolBaseline && !result.symbol) { - return; - } - - const typeOrSymbolString = isSymbolBaseline ? result.symbol : result.type; - const formattedLine = result.sourceText.replace(/\r?\n/g, "") + " : " + typeOrSymbolString; - if (!typeMap[file.unitName]) { - typeMap[file.unitName] = {}; - } - - let typeInfo = [formattedLine]; - const existingTypeInfo = typeMap[file.unitName][result.line]; - if (existingTypeInfo) { - typeInfo = existingTypeInfo.concat(typeInfo); - } - typeMap[file.unitName][result.line] = typeInfo; - }); - - typeLines.push("=== " + file.unitName + " ===\r\n"); - for (let i = 0; i < codeLines.length; i++) { - const currentCodeLine = codeLines[i]; - typeLines.push(currentCodeLine + "\r\n"); - if (typeMap[file.unitName]) { - const typeInfo = typeMap[file.unitName][i]; - if (typeInfo) { - typeInfo.forEach(ty => { - typeLines.push(">" + ty + "\r\n"); - }); - if (i + 1 < codeLines.length && (codeLines[i + 1].match(/^\s*[{|}]\s*$/) || codeLines[i + 1].trim() === "")) { - } - else { - typeLines.push("\r\n"); - } - } - } - else { - typeLines.push("No type information for this code."); - } - } - }); - - return typeLines.join(""); + else { + Harness.Baseline.runBaseline("Correct information for " + fileName, justName.replace(/\.tsx?/, fullExtension), () => fullBaseLine); } } + + function generateBaseLine(typeWriterResults: ts.Map, isSymbolBaseline: boolean): string { + const typeLines: string[] = []; + const typeMap: { [fileName: string]: { [lineNum: number]: string[]; } } = {}; + + allFiles.forEach(file => { + const codeLines = file.content.split("\n"); + typeWriterResults[file.unitName].forEach(result => { + if (isSymbolBaseline && !result.symbol) { + return; + } + + const typeOrSymbolString = isSymbolBaseline ? result.symbol : result.type; + const formattedLine = result.sourceText.replace(/\r?\n/g, "") + " : " + typeOrSymbolString; + if (!typeMap[file.unitName]) { + typeMap[file.unitName] = {}; + } + + let typeInfo = [formattedLine]; + const existingTypeInfo = typeMap[file.unitName][result.line]; + if (existingTypeInfo) { + typeInfo = existingTypeInfo.concat(typeInfo); + } + typeMap[file.unitName][result.line] = typeInfo; + }); + + typeLines.push("=== " + file.unitName + " ===\r\n"); + for (let i = 0; i < codeLines.length; i++) { + const currentCodeLine = codeLines[i]; + typeLines.push(currentCodeLine + "\r\n"); + if (typeMap[file.unitName]) { + const typeInfo = typeMap[file.unitName][i]; + if (typeInfo) { + typeInfo.forEach(ty => { + typeLines.push(">" + ty + "\r\n"); + }); + if (i + 1 < codeLines.length && (codeLines[i + 1].match(/^\s*[{|}]\s*$/) || codeLines[i + 1].trim() === "")) { + } + else { + typeLines.push("\r\n"); + } + } + } + else { + typeLines.push("No type information for this code."); + } + } + }); + + return typeLines.join(""); + } + }); }); } diff --git a/src/harness/fourslash.ts b/src/harness/fourslash.ts index ba7a5f20dae..d6035aaa026 100644 --- a/src/harness/fourslash.ts +++ b/src/harness/fourslash.ts @@ -18,7 +18,7 @@ /// /// /// -/* tslint:disable:no-null */ +/* tslint:disable:no-null-keyword */ namespace FourSlash { ts.disableIncrementalParsing = false; @@ -221,8 +221,8 @@ namespace FourSlash { function tryAdd(path: string) { const inputFile = inputFiles[path]; - if (inputFile && !Harness.isLibraryFile(path)) { - languageServiceAdapterHost.addScript(path, inputFile); + if (inputFile && !Harness.isDefaultLibraryFile(path)) { + languageServiceAdapterHost.addScript(path, inputFile, /*isRootFile*/ true); return true; } } @@ -247,6 +247,10 @@ namespace FourSlash { // Create a new Services Adapter this.cancellationToken = new TestCancellationToken(); const compilationOptions = convertGlobalOptionsToCompilerOptions(this.testData.globalOptions); + if (compilationOptions.typesRoot) { + compilationOptions.typesRoot = ts.getNormalizedAbsolutePath(compilationOptions.typesRoot, this.basePath); + } + const languageServiceAdapter = this.getLanguageServiceAdapter(testType, this.cancellationToken, compilationOptions); this.languageServiceAdapterHost = languageServiceAdapter.getHost(); this.languageService = languageServiceAdapter.getLanguageService(); @@ -268,7 +272,7 @@ namespace FourSlash { if (startResolveFileRef) { // Add the entry-point file itself into the languageServiceShimHost - this.languageServiceAdapterHost.addScript(startResolveFileRef.fileName, startResolveFileRef.content); + this.languageServiceAdapterHost.addScript(startResolveFileRef.fileName, startResolveFileRef.content, /*isRootFile*/ true); const resolvedResult = languageServiceAdapter.getPreProcessedFileInfo(startResolveFileRef.fileName, startResolveFileRef.content); const referencedFiles: ts.FileReference[] = resolvedResult.referencedFiles; @@ -291,17 +295,19 @@ namespace FourSlash { // Check if no-default-lib flag is false and if so add default library if (!resolvedResult.isLibFile) { - this.languageServiceAdapterHost.addScript(Harness.Compiler.defaultLibFileName, Harness.Compiler.defaultLibSourceFile.text); + this.languageServiceAdapterHost.addScript(Harness.Compiler.defaultLibFileName, + Harness.Compiler.getDefaultLibrarySourceFile().text, /*isRootFile*/ false); } } else { // resolveReference file-option is not specified then do not resolve any files and include all inputFiles ts.forEachKey(this.inputFiles, fileName => { - if (!Harness.isLibraryFile(fileName)) { - this.languageServiceAdapterHost.addScript(fileName, this.inputFiles[fileName]); + if (!Harness.isDefaultLibraryFile(fileName)) { + this.languageServiceAdapterHost.addScript(fileName, this.inputFiles[fileName], /*isRootFile*/ true); } }); - this.languageServiceAdapterHost.addScript(Harness.Compiler.defaultLibFileName, Harness.Compiler.defaultLibSourceFile.text); + this.languageServiceAdapterHost.addScript(Harness.Compiler.defaultLibFileName, + Harness.Compiler.getDefaultLibrarySourceFile().text, /*isRootFile*/ false); } this.formatCodeOptions = { @@ -356,14 +362,14 @@ namespace FourSlash { } // Opens a file given its 0-based index or fileName - public openFile(index: number, content?: string): void; - public openFile(name: string, content?: string): void; - public openFile(indexOrName: any, content?: string) { + public openFile(index: number, content?: string, scriptKindName?: string): void; + public openFile(name: string, content?: string, scriptKindName?: string): void; + public openFile(indexOrName: any, content?: string, scriptKindName?: string) { const fileToOpen: FourSlashFile = this.findFile(indexOrName); fileToOpen.fileName = ts.normalizeSlashes(fileToOpen.fileName); this.activeFile = fileToOpen; // Let the host know that this file is now open - this.languageServiceAdapterHost.openFile(fileToOpen.fileName, content); + this.languageServiceAdapterHost.openFile(fileToOpen.fileName, content, scriptKindName); } public verifyErrorExistsBetweenMarkers(startMarkerName: string, endMarkerName: string, negative: boolean) { @@ -649,7 +655,7 @@ namespace FourSlash { this.assertItemInCompletionList(completions.entries, symbol, text, documentation, kind); } else { - this.raiseError(`No completions at position '${ this.currentCaretPosition }' when looking for '${ symbol }'.`); + this.raiseError(`No completions at position '${this.currentCaretPosition}' when looking for '${symbol}'.`); } } @@ -741,7 +747,7 @@ namespace FourSlash { } const missingItem = { fileName: fileName, start: start, end: end, isWriteAccess: isWriteAccess }; - this.raiseError(`verifyReferencesAtPositionListContains failed - could not find the item: ${JSON.stringify(missingItem)} in the returned list: (${JSON.stringify(references)})`); + this.raiseError(`verifyReferencesAtPositionListContains failed - could not find the item: ${JSON.stringify(missingItem, undefined, 2)} in the returned list: (${JSON.stringify(references, undefined, 2)})`); } public verifyReferencesCountIs(count: number, localFilesOnly = true) { @@ -795,7 +801,7 @@ namespace FourSlash { private testDiagnostics(expected: string, diagnostics: ts.Diagnostic[]) { const realized = ts.realizeDiagnostics(diagnostics, "\r\n"); - const actual = JSON.stringify(realized, null, " "); + const actual = JSON.stringify(realized, undefined, 2); assert.equal(actual, expected); } @@ -870,7 +876,7 @@ namespace FourSlash { } if (ranges.length !== references.length) { - this.raiseError("Rename location count does not match result.\n\nExpected: " + JSON.stringify(ranges) + "\n\nActual:" + JSON.stringify(references)); + this.raiseError("Rename location count does not match result.\n\nExpected: " + JSON.stringify(ranges, undefined, 2) + "\n\nActual:" + JSON.stringify(references, undefined, 2)); } ranges = ranges.sort((r1, r2) => r1.start - r2.start); @@ -883,7 +889,7 @@ namespace FourSlash { if (reference.textSpan.start !== range.start || ts.textSpanEnd(reference.textSpan) !== range.end) { - this.raiseError("Rename location results do not match.\n\nExpected: " + JSON.stringify(ranges) + "\n\nActual:" + JSON.stringify(references)); + this.raiseError("Rename location results do not match.\n\nExpected: " + JSON.stringify(ranges, undefined, 2) + "\n\nActual:" + JSON.stringify(references, undefined, 2)); } } } @@ -967,7 +973,7 @@ namespace FourSlash { } else { if (actual) { - this.raiseError(`Expected no signature help, but got "${JSON.stringify(actual)}"`); + this.raiseError(`Expected no signature help, but got "${JSON.stringify(actual, undefined, 2)}"`); } } } @@ -1179,7 +1185,7 @@ namespace FourSlash { public printCurrentParameterHelp() { const help = this.languageService.getSignatureHelpItems(this.activeFile.fileName, this.currentCaretPosition); - Harness.IO.log(JSON.stringify(help)); + Harness.IO.log(JSON.stringify(help, undefined, 2)); } public printCurrentQuickInfo() { @@ -1221,7 +1227,7 @@ namespace FourSlash { public printCurrentSignatureHelp() { const sigHelp = this.getActiveSignatureHelpItem(); - Harness.IO.log(JSON.stringify(sigHelp)); + Harness.IO.log(JSON.stringify(sigHelp, undefined, 2)); } public printMemberListMembers() { @@ -1251,7 +1257,7 @@ namespace FourSlash { public printReferences() { const references = this.getReferencesAtCaret(); ts.forEach(references, entry => { - Harness.IO.log(JSON.stringify(entry)); + Harness.IO.log(JSON.stringify(entry, undefined, 2)); }); } @@ -1414,7 +1420,7 @@ namespace FourSlash { return; } - const incrementalSourceFile = this.languageService.getSourceFile(this.activeFile.fileName); + const incrementalSourceFile = this.languageService.getNonBoundSourceFile(this.activeFile.fileName); Utils.assertInvariants(incrementalSourceFile, /*parent:*/ undefined); const incrementalSyntaxDiagnostics = incrementalSourceFile.parseDiagnostics; @@ -1742,8 +1748,8 @@ namespace FourSlash { function jsonMismatchString() { return Harness.IO.newLine() + - "expected: '" + Harness.IO.newLine() + JSON.stringify(expected, (k, v) => v, 2) + "'" + Harness.IO.newLine() + - "actual: '" + Harness.IO.newLine() + JSON.stringify(actual, (k, v) => v, 2) + "'"; + "expected: '" + Harness.IO.newLine() + JSON.stringify(expected, undefined, 2) + "'" + Harness.IO.newLine() + + "actual: '" + Harness.IO.newLine() + JSON.stringify(actual, undefined, 2) + "'"; } } @@ -1752,13 +1758,13 @@ namespace FourSlash { const actual = (this.languageService).getProjectInfo( this.activeFile.fileName, /* needFileNameList */ true - ); + ); assert.equal( expected.join(","), - actual.fileNames.map( file => { + actual.fileNames.map(file => { return file.replace(this.basePath + "/", ""); - }).join(",") - ); + }).join(",") + ); } } @@ -1844,6 +1850,37 @@ namespace FourSlash { }); } + public verifyBraceCompletionAtPostion(negative: boolean, openingBrace: string) { + + const openBraceMap: ts.Map = { + "(": ts.CharacterCodes.openParen, + "{": ts.CharacterCodes.openBrace, + "[": ts.CharacterCodes.openBracket, + "'": ts.CharacterCodes.singleQuote, + '"': ts.CharacterCodes.doubleQuote, + "`": ts.CharacterCodes.backtick, + "<": ts.CharacterCodes.lessThan + }; + + const charCode = openBraceMap[openingBrace]; + + if (!charCode) { + this.raiseError(`Invalid openingBrace '${openingBrace}' specified.`); + } + + const position = this.currentCaretPosition; + + const validBraceCompletion = this.languageService.isValidBraceCompletionAtPostion(this.activeFile.fileName, position, charCode); + + if (!negative && !validBraceCompletion) { + this.raiseError(`${position} is not a valid brace completion position for ${openingBrace}`); + } + + if (negative && validBraceCompletion) { + this.raiseError(`${position} is a valid brace completion position for ${openingBrace}`); + } + } + public verifyMatchingBracePosition(bracePosition: number, expectedMatchPosition: number) { const actual = this.languageService.getBraceMatchingAtPosition(this.activeFile.fileName, bracePosition); @@ -1927,7 +1964,7 @@ namespace FourSlash { // if there was an explicit match kind specified, then it should be validated. if (matchKind !== undefined) { const missingItem = { name: name, kind: kind, searchValue: searchValue, matchKind: matchKind, fileName: fileName, parentName: parentName }; - this.raiseError(`verifyNavigationItemsListContains failed - could not find the item: ${JSON.stringify(missingItem)} in the returned list: (${JSON.stringify(items)})`); + this.raiseError(`verifyNavigationItemsListContains failed - could not find the item: ${JSON.stringify(missingItem, undefined, 2)} in the returned list: (${JSON.stringify(items, undefined, 2)})`); } } @@ -1964,7 +2001,7 @@ namespace FourSlash { } const missingItem = { name: name, kind: kind }; - this.raiseError(`verifyGetScriptLexicalStructureListContains failed - could not find the item: ${JSON.stringify(missingItem)} in the returned list: (${JSON.stringify(items, null, " ")})`); + this.raiseError(`verifyGetScriptLexicalStructureListContains failed - could not find the item: ${JSON.stringify(missingItem, undefined, 2)} in the returned list: (${JSON.stringify(items, undefined, 2)})`); } private navigationBarItemsContains(items: ts.NavigationBarItem[], name: string, kind: string) { @@ -2029,7 +2066,7 @@ namespace FourSlash { } const missingItem = { fileName: fileName, start: start, end: end, isWriteAccess: isWriteAccess }; - this.raiseError(`verifyOccurrencesAtPositionListContains failed - could not find the item: ${JSON.stringify(missingItem)} in the returned list: (${JSON.stringify(occurrences)})`); + this.raiseError(`verifyOccurrencesAtPositionListContains failed - could not find the item: ${JSON.stringify(missingItem, undefined, 2)} in the returned list: (${JSON.stringify(occurrences, undefined, 2)})`); } public verifyOccurrencesAtPositionListCount(expectedCount: number) { @@ -2068,7 +2105,7 @@ namespace FourSlash { } const missingItem = { fileName: fileName, start: start, end: end, kind: kind }; - this.raiseError(`verifyDocumentHighlightsAtPositionListContains failed - could not find the item: ${JSON.stringify(missingItem)} in the returned list: (${JSON.stringify(documentHighlights)})`); + this.raiseError(`verifyDocumentHighlightsAtPositionListContains failed - could not find the item: ${JSON.stringify(missingItem, undefined, 2)} in the returned list: (${JSON.stringify(documentHighlights, undefined, 2)})`); } public verifyDocumentHighlightsAtPositionListCount(expectedCount: number, fileNamesToSearch: string[]) { @@ -2134,9 +2171,9 @@ namespace FourSlash { } } - const itemsString = items.map((item) => JSON.stringify({ name: item.name, kind: item.kind })).join(",\n"); + const itemsString = items.map((item) => JSON.stringify({ name: item.name, kind: item.kind }, undefined, 2)).join(",\n"); - this.raiseError(`Expected "${JSON.stringify({ name, text, documentation, kind })}" to be in list [${itemsString}]`); + this.raiseError(`Expected "${JSON.stringify({ name, text, documentation, kind }, undefined, 2)}" to be in list [${itemsString}]`); } private findFile(indexOrName: any) { @@ -2233,7 +2270,7 @@ namespace FourSlash { }; const host = Harness.Compiler.createCompilerHost( - [ fourslashFile, testFile ], + [fourslashFile, testFile], (fn, contents) => result = contents, ts.ScriptTarget.Latest, Harness.IO.useCaseSensitiveFileNames(), @@ -2258,7 +2295,7 @@ namespace FourSlash { function runCode(code: string, state: TestState): void { // Compile and execute the test const wrappedCode = -`(function(test, goTo, verify, edit, debug, format, cancellation, classification, verifyOperationIsCancelled) { + `(function(test, goTo, verify, edit, debug, format, cancellation, classification, verifyOperationIsCancelled) { ${code} })`; try { @@ -2372,7 +2409,7 @@ ${code} } } } - // TODO: should be '==='? + // TODO: should be '==='? } else if (line == "" || lineLength === 0) { // Previously blank lines between fourslash content caused it to be considered as 2 files, @@ -2753,10 +2790,10 @@ namespace FourSlashInterface { // Opens a file, given either its index as it // appears in the test source, or its filename // as specified in the test metadata - public file(index: number, content?: string): void; - public file(name: string, content?: string): void; - public file(indexOrName: any, content?: string): void { - this.state.openFile(indexOrName, content); + public file(index: number, content?: string, scriptKindName?: string): void; + public file(name: string, content?: string, scriptKindName?: string): void; + public file(indexOrName: any, content?: string, scriptKindName?: string): void { + this.state.openFile(indexOrName, content, scriptKindName); } } @@ -2864,6 +2901,10 @@ namespace FourSlashInterface { public verifyDefinitionsName(name: string, containerName: string) { this.state.verifyDefinitionsName(this.negative, name, containerName); } + + public isValidBraceCompletionAtPostion(openingBrace: string) { + this.state.verifyBraceCompletionAtPostion(this.negative, openingBrace); + } } export class Verify extends VerifyNegatable { @@ -3082,7 +3123,7 @@ namespace FourSlashInterface { this.state.getSemanticDiagnostics(expected); } - public ProjectInfo(expected: string []) { + public ProjectInfo(expected: string[]) { this.state.verifyProjectInfo(expected); } } diff --git a/src/harness/fourslashRunner.ts b/src/harness/fourslashRunner.ts index 84e352359c4..386bd9e340c 100644 --- a/src/harness/fourslashRunner.ts +++ b/src/harness/fourslashRunner.ts @@ -1,7 +1,7 @@ /// /// /// -/* tslint:disable:no-null */ +/* tslint:disable:no-null-keyword */ const enum FourSlashTestType { Native, diff --git a/src/harness/harness.ts b/src/harness/harness.ts index df64cf61277..5fdd6ecddb9 100644 --- a/src/harness/harness.ts +++ b/src/harness/harness.ts @@ -23,7 +23,7 @@ /// /// /// -/* tslint:disable:no-null */ +/* tslint:disable:no-null-keyword */ // Block scoped definitions work poorly for global variables, temporarily enable var /* tslint:disable:no-var-keyword */ @@ -65,6 +65,11 @@ namespace Utils { return Buffer ? (new Buffer(s)).toString("utf8") : s; } + export function byteLength(s: string, encoding?: string): number { + // stub implementation if Buffer is not available (in-browser case) + return Buffer ? Buffer.byteLength(s, encoding) : s.length; + } + export function evalFile(fileContents: string, fileName: string, nodeContext?: any) { const environment = getExecutionEnvironment(); switch (environment) { @@ -809,15 +814,33 @@ namespace Harness { const lineFeed = "\n"; export const defaultLibFileName = "lib.d.ts"; - export const defaultLibSourceFile = createSourceFileAndAssertInvariants(defaultLibFileName, IO.readFile(libFolder + "lib.core.d.ts"), /*languageVersion*/ ts.ScriptTarget.Latest); - export const defaultES6LibSourceFile = createSourceFileAndAssertInvariants(defaultLibFileName, IO.readFile(libFolder + "lib.core.es6.d.ts"), /*languageVersion*/ ts.ScriptTarget.Latest); + export const es2015DefaultLibFileName = "lib.es2015.d.ts"; + + const libFileNameSourceFileMap: ts.Map = { + [defaultLibFileName]: createSourceFileAndAssertInvariants(defaultLibFileName, IO.readFile(libFolder + "lib.es5.d.ts"), /*languageVersion*/ ts.ScriptTarget.Latest) + }; + + export function getDefaultLibrarySourceFile(fileName = defaultLibFileName): ts.SourceFile { + if (!isDefaultLibraryFile(fileName)) { + return undefined; + } + + if (!libFileNameSourceFileMap[fileName]) { + libFileNameSourceFileMap[fileName] = createSourceFileAndAssertInvariants(fileName, IO.readFile(libFolder + fileName), ts.ScriptTarget.Latest); + } + return libFileNameSourceFileMap[fileName]; + } + + export function getDefaultLibFileName(options: ts.CompilerOptions): string { + return options.target === ts.ScriptTarget.ES6 ? es2015DefaultLibFileName : defaultLibFileName; + } // Cache these between executions so we don't have to re-parse them for every test export const fourslashFileName = "fourslash.ts"; export let fourslashSourceFile: ts.SourceFile; export function getCanonicalFileName(fileName: string): string { - return Harness.IO.useCaseSensitiveFileNames() ? fileName : fileName.toLowerCase(); + return fileName; } export function createCompilerHost( @@ -842,23 +865,21 @@ namespace Harness { } } - function getSourceFile(fn: string, languageVersion: ts.ScriptTarget) { - fn = ts.normalizePath(fn); - const path = ts.toPath(fn, currentDirectory, getCanonicalFileName); + function getSourceFile(fileName: string, languageVersion: ts.ScriptTarget) { + fileName = ts.normalizePath(fileName); + const path = ts.toPath(fileName, currentDirectory, getCanonicalFileName); if (fileMap.contains(path)) { return fileMap.get(path); } - else if (fn === fourslashFileName) { + else if (fileName === fourslashFileName) { const tsFn = "tests/cases/fourslash/" + fourslashFileName; fourslashSourceFile = fourslashSourceFile || createSourceFileAndAssertInvariants(tsFn, Harness.IO.readFile(tsFn), scriptTarget); return fourslashSourceFile; } else { - if (fn === defaultLibFileName) { - return languageVersion === ts.ScriptTarget.ES6 ? defaultES6LibSourceFile : defaultLibSourceFile; - } // Don't throw here -- the compiler might be looking for a test that actually doesn't exist as part of the TC - return undefined; + // Return if it is other library file, otherwise return undefined + return getDefaultLibrarySourceFile(fileName); } } @@ -867,16 +888,21 @@ namespace Harness { newLineKind === ts.NewLineKind.LineFeed ? lineFeed : Harness.IO.newLine(); + return { getCurrentDirectory: () => currentDirectory, getSourceFile, - getDefaultLibFileName: options => defaultLibFileName, + getDefaultLibFileName, writeFile, getCanonicalFileName, useCaseSensitiveFileNames: () => useCaseSensitiveFileNames, getNewLine: () => newLine, - fileExists: fileName => getSourceFile(fileName, ts.ScriptTarget.ES5) !== undefined, - readFile: (fileName: string): string => { throw new Error("NotYetImplemented"); } + fileExists: fileName => { + return fileMap.contains(ts.toPath(fileName, currentDirectory, getCanonicalFileName)); + }, + readFile: (fileName: string): string => { + return fileMap.get(ts.toPath(fileName, currentDirectory, getCanonicalFileName)).getText(); + } }; } @@ -896,7 +922,8 @@ namespace Harness { { name: "fileName", type: "string" }, { name: "libFiles", type: "string" }, { name: "noErrorTruncation", type: "boolean" }, - { name: "suppressOutputPathCheck", type: "boolean" } + { name: "suppressOutputPathCheck", type: "boolean" }, + { name: "noImplicitReferences", type: "boolean" } ]; let optionsIndex: ts.Map; @@ -920,6 +947,7 @@ namespace Harness { } const option = getCommandLineOption(name); if (option) { + const errors: ts.Diagnostic[] = []; switch (option.type) { case "boolean": options[option.name] = value.toLowerCase() === "true"; @@ -928,15 +956,16 @@ namespace Harness { options[option.name] = value; break; // If not a primitive, the possible types are specified in what is effectively a map of options. + case "list": + options[option.name] = ts.parseListTypeOption(option, value, errors); + break; default: - let map = >option.type; - let key = value.toLowerCase(); - if (ts.hasProperty(map, key)) { - options[option.name] = map[key]; - } - else { - throw new Error(`Unknown value '${value}' for compiler option '${name}'.`); - } + options[option.name] = ts.parseCustomTypeOption(option, value, errors); + break; + } + + if (errors.length > 0) { + throw new Error(`Unknown value '${value}' for compiler option '${name}'.`); } } else { @@ -963,7 +992,6 @@ namespace Harness { compilerOptions: ts.CompilerOptions, // Current directory is needed for rwcRunner to be able to use currentDirectory defined in json file currentDirectory: string): CompilationOutput { - const options: ts.CompilerOptions & HarnessOptions = compilerOptions ? ts.clone(compilerOptions) : { noResolve: false }; options.target = options.target || ts.ScriptTarget.ES3; options.newLine = options.newLine || ts.NewLineKind.CarriageReturnLineFeed; @@ -1015,7 +1043,7 @@ namespace Harness { options.newLine); let traceResults: string[]; - if (options.traceModuleResolution) { + if (options.traceResolution) { traceResults = []; compilerHost.trace = text => traceResults.push(text); } @@ -1138,7 +1166,7 @@ namespace Harness { // then they will be added twice thus triggering 'total errors' assertion with condition // 'totalErrorsReportedInNonLibraryFiles + numLibraryDiagnostics + numTest262HarnessDiagnostics, diagnostics.length - if (!error.file || !isLibraryFile(error.file.fileName)) { + if (!error.file || !isDefaultLibraryFile(error.file.fileName)) { totalErrorsReportedInNonLibraryFiles++; } } @@ -1217,7 +1245,7 @@ namespace Harness { }); const numLibraryDiagnostics = ts.countWhere(diagnostics, diagnostic => { - return diagnostic.file && (isLibraryFile(diagnostic.file.fileName) || isBuiltFile(diagnostic.file.fileName)); + return diagnostic.file && (isDefaultLibraryFile(diagnostic.file.fileName) || isBuiltFile(diagnostic.file.fileName)); }); const numTest262HarnessDiagnostics = ts.countWhere(diagnostics, diagnostic => { @@ -1461,6 +1489,7 @@ namespace Harness { baseDir = ts.getNormalizedAbsolutePath(baseDir, rootDir); } tsConfig = ts.parseJsonConfigFileContent(configJson.config, parseConfigHost, baseDir); + tsConfig.options.configFilePath = data.name; // delete entry from the list testUnitData.splice(i, 1); @@ -1604,8 +1633,10 @@ namespace Harness { } } - export function isLibraryFile(filePath: string): boolean { - return (Path.getFileName(filePath) === "lib.d.ts") || (Path.getFileName(filePath) === "lib.core.d.ts"); + export function isDefaultLibraryFile(filePath: string): boolean { + // We need to make sure that the filePath is prefixed with "lib." not just containing "lib." and end with ".d.ts" + const fileName = Path.getFileName(filePath); + return ts.startsWith(fileName, "lib.") && ts.endsWith(fileName, ".d.ts"); } export function isBuiltFile(filePath: string): boolean { @@ -1613,7 +1644,7 @@ namespace Harness { } export function getDefaultLibraryFile(io: Harness.IO): Harness.Compiler.TestFile { - const libFile = Harness.userSpecifiedRoot + Harness.libFolder + "lib.d.ts"; + const libFile = Harness.userSpecifiedRoot + Harness.libFolder + Harness.Compiler.defaultLibFileName; return { unitName: libFile, content: io.readFile(libFile) }; } diff --git a/src/harness/harnessLanguageService.ts b/src/harness/harnessLanguageService.ts index 2a6ed85f9cd..8aaff65febc 100644 --- a/src/harness/harnessLanguageService.ts +++ b/src/harness/harnessLanguageService.ts @@ -9,7 +9,7 @@ namespace Harness.LanguageService { public editRanges: { length: number; textChangeRange: ts.TextChangeRange; }[] = []; private lineMap: number[] = undefined; - constructor(public fileName: string, public content: string) { + constructor(public fileName: string, public content: string, public isRootFile: boolean) { this.setContent(content); } @@ -135,7 +135,13 @@ namespace Harness.LanguageService { public getFilenames(): string[] { const fileNames: string[] = []; - ts.forEachKey(this.fileNameToScript, (fileName) => { fileNames.push(fileName); }); + ts.forEachValue(this.fileNameToScript, (scriptInfo) => { + if (scriptInfo.isRootFile) { + // only include root files here + // usually it means that we won't include lib.d.ts in the list of root files so it won't mess the computation of compilation root dir. + fileNames.push(scriptInfo.fileName); + } + }); return fileNames; } @@ -143,8 +149,8 @@ namespace Harness.LanguageService { return ts.lookUp(this.fileNameToScript, fileName); } - public addScript(fileName: string, content: string): void { - this.fileNameToScript[fileName] = new ScriptInfo(fileName, content); + public addScript(fileName: string, content: string, isRootFile: boolean): void { + this.fileNameToScript[fileName] = new ScriptInfo(fileName, content, isRootFile); } public editScript(fileName: string, start: number, end: number, newText: string) { @@ -157,7 +163,7 @@ namespace Harness.LanguageService { throw new Error("No script with name '" + fileName + "'"); } - public openFile(fileName: string, content?: string): void { + public openFile(fileName: string, content?: string, scriptKindName?: string): void { } /** @@ -177,7 +183,7 @@ namespace Harness.LanguageService { getCompilationSettings() { return this.settings; } getCancellationToken() { return this.cancellationToken; } getCurrentDirectory(): string { return ""; } - getDefaultLibFileName(): string { return ""; } + getDefaultLibFileName(): string { return Harness.Compiler.defaultLibFileName; } getScriptFileNames(): string[] { return this.getFilenames(); } getScriptSnapshot(fileName: string): ts.IScriptSnapshot { const script = this.getScriptInfo(fileName); @@ -210,6 +216,7 @@ namespace Harness.LanguageService { private nativeHost: NativeLanguageServiceHost; public getModuleResolutionsForFile: (fileName: string) => string; + public getTypeReferenceDirectiveResolutionsForFile: (fileName: string) => string; constructor(preprocessToResolve: boolean, cancellationToken?: ts.HostCancellationToken, options?: ts.CompilerOptions) { super(cancellationToken, options); @@ -236,12 +243,25 @@ namespace Harness.LanguageService { } return JSON.stringify(imports); }; + this.getTypeReferenceDirectiveResolutionsForFile = (fileName) => { + const scriptInfo = this.getScriptInfo(fileName); + const preprocessInfo = ts.preProcessFile(scriptInfo.content, /*readImportFiles*/ false); + const resolutions: ts.Map = {}; + const settings = this.nativeHost.getCompilationSettings(); + for (const typeReferenceDirective of preprocessInfo.typeReferenceDirectives) { + const resolutionInfo = ts.resolveTypeReferenceDirective(typeReferenceDirective.fileName, fileName, settings, moduleResolutionHost); + if (resolutionInfo.resolvedTypeReferenceDirective.resolvedFileName) { + resolutions[typeReferenceDirective.fileName] = resolutionInfo.resolvedTypeReferenceDirective; + } + } + return JSON.stringify(resolutions); + }; } } getFilenames(): string[] { return this.nativeHost.getFilenames(); } getScriptInfo(fileName: string): ScriptInfo { return this.nativeHost.getScriptInfo(fileName); } - addScript(fileName: string, content: string): void { this.nativeHost.addScript(fileName, content); } + addScript(fileName: string, content: string, isRootFile: boolean): void { this.nativeHost.addScript(fileName, content, isRootFile); } editScript(fileName: string, start: number, end: number, newText: string): void { this.nativeHost.editScript(fileName, start, end, newText); } positionToLineAndCharacter(fileName: string, position: number): ts.LineAndCharacter { return this.nativeHost.positionToLineAndCharacter(fileName, position); } @@ -417,13 +437,16 @@ namespace Harness.LanguageService { getDocCommentTemplateAtPosition(fileName: string, position: number): ts.TextInsertion { return unwrapJSONCallResult(this.shim.getDocCommentTemplateAtPosition(fileName, position)); } + isValidBraceCompletionAtPostion(fileName: string, position: number, openingBrace: number): boolean { + return unwrapJSONCallResult(this.shim.isValidBraceCompletionAtPostion(fileName, position, openingBrace)); + } getEmitOutput(fileName: string): ts.EmitOutput { return unwrapJSONCallResult(this.shim.getEmitOutput(fileName)); } getProgram(): ts.Program { throw new Error("Program can not be marshaled across the shim layer."); } - getSourceFile(fileName: string): ts.SourceFile { + getNonBoundSourceFile(fileName: string): ts.SourceFile { throw new Error("SourceFile can not be marshaled across the shim layer."); } dispose(): void { this.shim.dispose({}); } @@ -442,6 +465,7 @@ namespace Harness.LanguageService { getPreProcessedFileInfo(fileName: string, fileContents: string): ts.PreProcessedFileInfo { let shimResult: { referencedFiles: ts.IFileReference[]; + typeReferenceDirectives: ts.IFileReference[]; importedFiles: ts.IFileReference[]; isLibFile: boolean; }; @@ -453,7 +477,8 @@ namespace Harness.LanguageService { referencedFiles: [], importedFiles: [], ambientExternalModules: [], - isLibFile: shimResult.isLibFile + isLibFile: shimResult.isLibFile, + typeReferenceDirectives: [] }; ts.forEach(shimResult.referencedFiles, refFile => { @@ -472,6 +497,13 @@ namespace Harness.LanguageService { }); }); + ts.forEach(shimResult.typeReferenceDirectives, typeRefDirective => { + convertResult.importedFiles.push({ + fileName: typeRefDirective.path, + pos: typeRefDirective.position, + end: typeRefDirective.position + typeRefDirective.length + }); + }); return convertResult; } } @@ -496,9 +528,9 @@ namespace Harness.LanguageService { this.client = client; } - openFile(fileName: string, content?: string): void { - super.openFile(fileName, content); - this.client.openFile(fileName, content); + openFile(fileName: string, content?: string, scriptKindName?: "TS" | "JS" | "TSX" | "JSX"): void { + super.openFile(fileName, content, scriptKindName); + this.client.openFile(fileName, content, scriptKindName); } editScript(fileName: string, start: number, end: number, newText: string) { diff --git a/src/harness/loggedIO.ts b/src/harness/loggedIO.ts index 2c4d019d45b..d468b371fbe 100644 --- a/src/harness/loggedIO.ts +++ b/src/harness/loggedIO.ts @@ -1,7 +1,7 @@ /// /// /// -/* tslint:disable:no-null */ +/* tslint:disable:no-null-keyword */ interface FileInformation { contents: string; @@ -149,7 +149,7 @@ namespace Playback { recordLog = createEmptyLog(); if (typeof underlying.args !== "function") { - recordLog.arguments = underlying.args; + recordLog.arguments = underlying.args; } }; @@ -237,8 +237,8 @@ namespace Playback { ), path)); wrapper.writeFile = recordReplay(wrapper.writeFile, underlying)( - (path, contents) => callAndRecord(underlying.writeFile(path, contents), recordLog.filesWritten, { path, contents, bom: false }), - (path, contents) => noOpReplay("writeFile")); + (path: string, contents: string) => callAndRecord(underlying.writeFile(path, contents), recordLog.filesWritten, { path, contents, bom: false }), + (path: string, contents: string) => noOpReplay("writeFile")); wrapper.exit = (exitCode) => { if (recordLog !== undefined) { diff --git a/src/harness/projectsRunner.ts b/src/harness/projectsRunner.ts index f5df92bedbf..9ee4359d8d3 100644 --- a/src/harness/projectsRunner.ts +++ b/src/harness/projectsRunner.ts @@ -1,6 +1,6 @@ /// /// -/* tslint:disable:no-null */ +/* tslint:disable:no-null-keyword */ // Test case is json of below type in tests/cases/project/ interface ProjectRunnerTestCase { @@ -156,7 +156,7 @@ class ProjectRunner extends RunnerBase { function getSourceFile(fileName: string, languageVersion: ts.ScriptTarget): ts.SourceFile { let sourceFile: ts.SourceFile = undefined; if (fileName === Harness.Compiler.defaultLibFileName) { - sourceFile = languageVersion === ts.ScriptTarget.ES6 ? Harness.Compiler.defaultES6LibSourceFile : Harness.Compiler.defaultLibSourceFile; + sourceFile = Harness.Compiler.getDefaultLibrarySourceFile(Harness.Compiler.getDefaultLibFileName(compilerOptions)); } else { const text = getSourceFileText(fileName); @@ -412,7 +412,7 @@ class ProjectRunner extends RunnerBase { function getErrorsBaseline(compilerResult: CompileProjectFilesResult) { const inputFiles = compilerResult.program ? ts.map(ts.filter(compilerResult.program.getSourceFiles(), - sourceFile => sourceFile.fileName !== "lib.d.ts"), + sourceFile => !Harness.isDefaultLibraryFile(sourceFile.fileName)), sourceFile => { return { unitName: ts.isRootedDiskPath(sourceFile.fileName) ? diff --git a/src/harness/runner.ts b/src/harness/runner.ts index ec8e1105c2f..bb3cafea0a8 100644 --- a/src/harness/runner.ts +++ b/src/harness/runner.ts @@ -20,7 +20,7 @@ /// /// -/* tslint:disable:no-null */ +/* tslint:disable:no-null-keyword */ let runners: RunnerBase[] = []; let iterations = 1; diff --git a/src/harness/rwcRunner.ts b/src/harness/rwcRunner.ts index ce570a7d6ad..39231435bf5 100644 --- a/src/harness/rwcRunner.ts +++ b/src/harness/rwcRunner.ts @@ -2,7 +2,7 @@ /// /// /// -/* tslint:disable:no-null */ +/* tslint:disable:no-null-keyword */ namespace RWC { function runWithIOLog(ioLog: IOLog, fn: (oldIO: Harness.IO) => void) { @@ -31,22 +31,20 @@ namespace RWC { let otherFiles: Harness.Compiler.TestFile[] = []; let compilerResult: Harness.Compiler.CompilerResult; let compilerOptions: ts.CompilerOptions; - let baselineOpts: Harness.Baseline.BaselineOptions = { + const baselineOpts: Harness.Baseline.BaselineOptions = { Subfolder: "rwc", Baselinefolder: "internal/baselines" }; - let baseName = /(.*)\/(.*).json/.exec(ts.normalizeSlashes(jsonPath))[2]; + const baseName = /(.*)\/(.*).json/.exec(ts.normalizeSlashes(jsonPath))[2]; let currentDirectory: string; let useCustomLibraryFile: boolean; after(() => { // Mocha holds onto the closure environment of the describe callback even after the test is done. // Therefore we have to clean out large objects after the test is done. - inputFiles = undefined; - otherFiles = undefined; + inputFiles = []; + otherFiles = []; compilerResult = undefined; compilerOptions = undefined; - baselineOpts = undefined; - baseName = undefined; currentDirectory = undefined; // useCustomLibraryFile is a flag specified in the json object to indicate whether to use built/local/lib.d.ts // or to use lib.d.ts inside the json object. If the flag is true, use the lib.d.ts inside json file @@ -97,13 +95,13 @@ namespace RWC { continue; } - if (!Harness.isLibraryFile(fileRead.path)) { + if (!Harness.isDefaultLibraryFile(fileRead.path)) { if (inInputList) { continue; } otherFiles.push(getHarnessCompilerInputUnit(fileRead.path)); } - else if (!opts.options.noLib && Harness.isLibraryFile(fileRead.path)) { + else if (!opts.options.noLib && Harness.isDefaultLibraryFile(fileRead.path)) { if (!inInputList) { // If useCustomLibraryFile is true, we will use lib.d.ts from json object // otherwise use the lib.d.ts from built/local @@ -192,8 +190,9 @@ namespace RWC { if (compilerResult.errors.length === 0) { return null; } - - return Harness.Compiler.getErrorBaseline(inputFiles.concat(otherFiles), compilerResult.errors); + // Do not include the library in the baselines to avoid noise + const baselineFiles = inputFiles.concat(otherFiles).filter(f => !Harness.isDefaultLibraryFile(f.unitName)); + return Harness.Compiler.getErrorBaseline(baselineFiles, compilerResult.errors); }, false, baselineOpts); }); diff --git a/src/harness/test262Runner.ts b/src/harness/test262Runner.ts index 262145b4764..cc9957c1fac 100644 --- a/src/harness/test262Runner.ts +++ b/src/harness/test262Runner.ts @@ -1,6 +1,6 @@ /// /// -/* tslint:disable:no-null */ +/* tslint:disable:no-null-keyword */ class Test262BaselineRunner extends RunnerBase { private static basePath = "internal/cases/test262"; diff --git a/src/lib/dom.generated.d.ts b/src/lib/dom.generated.d.ts index ec71fa78e8d..5865e485754 100644 --- a/src/lib/dom.generated.d.ts +++ b/src/lib/dom.generated.d.ts @@ -12,11 +12,6 @@ interface AriaRequestEventInit extends EventInit { attributeValue?: string; } -interface ClipboardEventInit extends EventInit { - data?: string; - dataType?: string; -} - interface CommandEventInit extends EventInit { commandName?: string; detail?: string; @@ -30,6 +25,31 @@ interface ConfirmSiteSpecificExceptionsInformation extends ExceptionInformation arrayOfDomainStrings?: string[]; } +interface ConstrainBooleanParameters { + exact?: boolean; + ideal?: boolean; +} + +interface ConstrainDOMStringParameters { + exact?: string | string[]; + ideal?: string | string[]; +} + +interface ConstrainDoubleRange extends DoubleRange { + exact?: number; + ideal?: number; +} + +interface ConstrainLongRange extends LongRange { + exact?: number; + ideal?: number; +} + +interface ConstrainVideoFacingModeParameters { + exact?: string | string[]; + ideal?: string | string[]; +} + interface CustomEventInit extends EventInit { detail?: any; } @@ -40,17 +60,44 @@ interface DeviceAccelerationDict { z?: number; } +interface DeviceLightEventInit extends EventInit { + value?: number; +} + interface DeviceRotationRateDict { alpha?: number; beta?: number; gamma?: number; } +interface DoubleRange { + max?: number; + min?: number; +} + interface EventInit { bubbles?: boolean; cancelable?: boolean; } +interface EventModifierInit extends UIEventInit { + ctrlKey?: boolean; + shiftKey?: boolean; + altKey?: boolean; + metaKey?: boolean; + modifierAltGraph?: boolean; + modifierCapsLock?: boolean; + modifierFn?: boolean; + modifierFnLock?: boolean; + modifierHyper?: boolean; + modifierNumLock?: boolean; + modifierOS?: boolean; + modifierScrollLock?: boolean; + modifierSuper?: boolean; + modifierSymbol?: boolean; + modifierSymbolLock?: boolean; +} + interface ExceptionInformation { domain?: string; } @@ -64,17 +111,415 @@ interface HashChangeEventInit extends EventInit { oldURL?: string; } +interface IDBIndexParameters { + multiEntry?: boolean; + unique?: boolean; +} + +interface IDBObjectStoreParameters { + autoIncrement?: boolean; + keyPath?: IDBKeyPath; +} + interface KeyAlgorithm { name?: string; } -interface KeyboardEventInit extends SharedKeyboardAndMouseEventInit { +interface KeyboardEventInit extends EventModifierInit { key?: string; location?: number; repeat?: boolean; } -interface MouseEventInit extends SharedKeyboardAndMouseEventInit { +interface LongRange { + max?: number; + min?: number; +} + +interface MSAccountInfo { + rpDisplayName?: string; + userDisplayName?: string; + accountName?: string; + userId?: string; + accountImageUri?: string; +} + +interface MSAudioLocalClientEvent extends MSLocalClientEventBase { + networkSendQualityEventRatio?: number; + networkDelayEventRatio?: number; + cpuInsufficientEventRatio?: number; + deviceHalfDuplexAECEventRatio?: number; + deviceRenderNotFunctioningEventRatio?: number; + deviceCaptureNotFunctioningEventRatio?: number; + deviceGlitchesEventRatio?: number; + deviceLowSNREventRatio?: number; + deviceLowSpeechLevelEventRatio?: number; + deviceClippingEventRatio?: number; + deviceEchoEventRatio?: number; + deviceNearEndToEchoRatioEventRatio?: number; + deviceRenderZeroVolumeEventRatio?: number; + deviceRenderMuteEventRatio?: number; + deviceMultipleEndpointsEventCount?: number; + deviceHowlingEventCount?: number; +} + +interface MSAudioRecvPayload extends MSPayloadBase { + samplingRate?: number; + signal?: MSAudioRecvSignal; + packetReorderRatio?: number; + packetReorderDepthAvg?: number; + packetReorderDepthMax?: number; + burstLossLength1?: number; + burstLossLength2?: number; + burstLossLength3?: number; + burstLossLength4?: number; + burstLossLength5?: number; + burstLossLength6?: number; + burstLossLength7?: number; + burstLossLength8OrHigher?: number; + fecRecvDistance1?: number; + fecRecvDistance2?: number; + fecRecvDistance3?: number; + ratioConcealedSamplesAvg?: number; + ratioStretchedSamplesAvg?: number; + ratioCompressedSamplesAvg?: number; +} + +interface MSAudioRecvSignal { + initialSignalLevelRMS?: number; + recvSignalLevelCh1?: number; + recvNoiseLevelCh1?: number; + renderSignalLevel?: number; + renderNoiseLevel?: number; + renderLoopbackSignalLevel?: number; +} + +interface MSAudioSendPayload extends MSPayloadBase { + samplingRate?: number; + signal?: MSAudioSendSignal; + audioFECUsed?: boolean; + sendMutePercent?: number; +} + +interface MSAudioSendSignal { + noiseLevel?: number; + sendSignalLevelCh1?: number; + sendNoiseLevelCh1?: number; +} + +interface MSConnectivity { + iceType?: string; + iceWarningFlags?: MSIceWarningFlags; + relayAddress?: MSRelayAddress; +} + +interface MSCredentialFilter { + accept?: MSCredentialSpec[]; +} + +interface MSCredentialParameters { + type?: string; +} + +interface MSCredentialSpec { + type?: string; + id?: string; +} + +interface MSDelay { + roundTrip?: number; + roundTripMax?: number; +} + +interface MSDescription extends RTCStats { + connectivity?: MSConnectivity; + transport?: string; + networkconnectivity?: MSNetworkConnectivityInfo; + localAddr?: MSIPAddressInfo; + remoteAddr?: MSIPAddressInfo; + deviceDevName?: string; + reflexiveLocalIPAddr?: MSIPAddressInfo; +} + +interface MSFIDOCredentialParameters extends MSCredentialParameters { + algorithm?: string | Algorithm; + authenticators?: AAGUID[]; +} + +interface MSIPAddressInfo { + ipAddr?: string; + port?: number; + manufacturerMacAddrMask?: string; +} + +interface MSIceWarningFlags { + turnTcpTimedOut?: boolean; + turnUdpAllocateFailed?: boolean; + turnUdpSendFailed?: boolean; + turnTcpAllocateFailed?: boolean; + turnTcpSendFailed?: boolean; + udpLocalConnectivityFailed?: boolean; + udpNatConnectivityFailed?: boolean; + udpRelayConnectivityFailed?: boolean; + tcpNatConnectivityFailed?: boolean; + tcpRelayConnectivityFailed?: boolean; + connCheckMessageIntegrityFailed?: boolean; + allocationMessageIntegrityFailed?: boolean; + connCheckOtherError?: boolean; + turnAuthUnknownUsernameError?: boolean; + noRelayServersConfigured?: boolean; + multipleRelayServersAttempted?: boolean; + portRangeExhausted?: boolean; + alternateServerReceived?: boolean; + pseudoTLSFailure?: boolean; + turnTurnTcpConnectivityFailed?: boolean; + useCandidateChecksFailed?: boolean; + fipsAllocationFailure?: boolean; +} + +interface MSJitter { + interArrival?: number; + interArrivalMax?: number; + interArrivalSD?: number; +} + +interface MSLocalClientEventBase extends RTCStats { + networkReceiveQualityEventRatio?: number; + networkBandwidthLowEventRatio?: number; +} + +interface MSNetwork extends RTCStats { + jitter?: MSJitter; + delay?: MSDelay; + packetLoss?: MSPacketLoss; + utilization?: MSUtilization; +} + +interface MSNetworkConnectivityInfo { + vpn?: boolean; + linkspeed?: number; + networkConnectionDetails?: string; +} + +interface MSNetworkInterfaceType { + interfaceTypeEthernet?: boolean; + interfaceTypeWireless?: boolean; + interfaceTypePPP?: boolean; + interfaceTypeTunnel?: boolean; + interfaceTypeWWAN?: boolean; +} + +interface MSOutboundNetwork extends MSNetwork { + appliedBandwidthLimit?: number; +} + +interface MSPacketLoss { + lossRate?: number; + lossRateMax?: number; +} + +interface MSPayloadBase extends RTCStats { + payloadDescription?: string; +} + +interface MSRelayAddress { + relayAddress?: string; + port?: number; +} + +interface MSSignatureParameters { + userPrompt?: string; +} + +interface MSTransportDiagnosticsStats extends RTCStats { + baseAddress?: string; + localAddress?: string; + localSite?: string; + networkName?: string; + remoteAddress?: string; + remoteSite?: string; + localMR?: string; + remoteMR?: string; + iceWarningFlags?: MSIceWarningFlags; + portRangeMin?: number; + portRangeMax?: number; + localMRTCPPort?: number; + remoteMRTCPPort?: number; + stunVer?: number; + numConsentReqSent?: number; + numConsentReqReceived?: number; + numConsentRespSent?: number; + numConsentRespReceived?: number; + interfaces?: MSNetworkInterfaceType; + baseInterface?: MSNetworkInterfaceType; + protocol?: string; + localInterface?: MSNetworkInterfaceType; + localAddrType?: string; + remoteAddrType?: string; + iceRole?: string; + rtpRtcpMux?: boolean; + allocationTimeInMs?: number; + msRtcEngineVersion?: string; +} + +interface MSUtilization { + packets?: number; + bandwidthEstimation?: number; + bandwidthEstimationMin?: number; + bandwidthEstimationMax?: number; + bandwidthEstimationStdDev?: number; + bandwidthEstimationAvg?: number; +} + +interface MSVideoPayload extends MSPayloadBase { + resoluton?: string; + videoBitRateAvg?: number; + videoBitRateMax?: number; + videoFrameRateAvg?: number; + videoPacketLossRate?: number; + durationSeconds?: number; +} + +interface MSVideoRecvPayload extends MSVideoPayload { + videoFrameLossRate?: number; + recvCodecType?: string; + recvResolutionWidth?: number; + recvResolutionHeight?: number; + videoResolutions?: MSVideoResolutionDistribution; + recvFrameRateAverage?: number; + recvBitRateMaximum?: number; + recvBitRateAverage?: number; + recvVideoStreamsMax?: number; + recvVideoStreamsMin?: number; + recvVideoStreamsMode?: number; + videoPostFECPLR?: number; + lowBitRateCallPercent?: number; + lowFrameRateCallPercent?: number; + reorderBufferTotalPackets?: number; + recvReorderBufferReorderedPackets?: number; + recvReorderBufferPacketsDroppedDueToBufferExhaustion?: number; + recvReorderBufferMaxSuccessfullyOrderedExtent?: number; + recvReorderBufferMaxSuccessfullyOrderedLateTime?: number; + recvReorderBufferPacketsDroppedDueToTimeout?: number; + recvFpsHarmonicAverage?: number; + recvNumResSwitches?: number; +} + +interface MSVideoResolutionDistribution { + cifQuality?: number; + vgaQuality?: number; + h720Quality?: number; + h1080Quality?: number; + h1440Quality?: number; + h2160Quality?: number; +} + +interface MSVideoSendPayload extends MSVideoPayload { + sendFrameRateAverage?: number; + sendBitRateMaximum?: number; + sendBitRateAverage?: number; + sendVideoStreamsMax?: number; + sendResolutionWidth?: number; + sendResolutionHeight?: number; +} + +interface MediaEncryptedEventInit extends EventInit { + initDataType?: string; + initData?: ArrayBuffer; +} + +interface MediaKeyMessageEventInit extends EventInit { + messageType?: string; + message?: ArrayBuffer; +} + +interface MediaKeySystemConfiguration { + initDataTypes?: string[]; + audioCapabilities?: MediaKeySystemMediaCapability[]; + videoCapabilities?: MediaKeySystemMediaCapability[]; + distinctiveIdentifier?: string; + persistentState?: string; +} + +interface MediaKeySystemMediaCapability { + contentType?: string; + robustness?: string; +} + +interface MediaStreamConstraints { + video?: boolean | MediaTrackConstraints; + audio?: boolean | MediaTrackConstraints; +} + +interface MediaStreamErrorEventInit extends EventInit { + error?: MediaStreamError; +} + +interface MediaStreamTrackEventInit extends EventInit { + track?: MediaStreamTrack; +} + +interface MediaTrackCapabilities { + width?: number | LongRange; + height?: number | LongRange; + aspectRatio?: number | DoubleRange; + frameRate?: number | DoubleRange; + facingMode?: string; + volume?: number | DoubleRange; + sampleRate?: number | LongRange; + sampleSize?: number | LongRange; + echoCancellation?: boolean[]; + deviceId?: string; + groupId?: string; +} + +interface MediaTrackConstraintSet { + width?: number | ConstrainLongRange; + height?: number | ConstrainLongRange; + aspectRatio?: number | ConstrainDoubleRange; + frameRate?: number | ConstrainDoubleRange; + facingMode?: string | string[] | ConstrainDOMStringParameters; + volume?: number | ConstrainDoubleRange; + sampleRate?: number | ConstrainLongRange; + sampleSize?: number | ConstrainLongRange; + echoCancelation?: boolean | ConstrainBooleanParameters; + deviceId?: string | string[] | ConstrainDOMStringParameters; + groupId?: string | string[] | ConstrainDOMStringParameters; +} + +interface MediaTrackConstraints extends MediaTrackConstraintSet { + advanced?: MediaTrackConstraintSet[]; +} + +interface MediaTrackSettings { + width?: number; + height?: number; + aspectRatio?: number; + frameRate?: number; + facingMode?: string; + volume?: number; + sampleRate?: number; + sampleSize?: number; + echoCancellation?: boolean; + deviceId?: string; + groupId?: string; +} + +interface MediaTrackSupportedConstraints { + width?: boolean; + height?: boolean; + aspectRatio?: boolean; + frameRate?: boolean; + facingMode?: boolean; + volume?: boolean; + sampleRate?: boolean; + sampleSize?: boolean; + echoCancellation?: boolean; + deviceId?: boolean; + groupId?: boolean; +} + +interface MouseEventInit extends EventModifierInit { screenX?: number; screenY?: number; clientX?: number; @@ -107,6 +552,10 @@ interface ObjectURLOptions { oneTimeOnly?: boolean; } +interface PeriodicWaveConstraints { + disableNormalization?: boolean; +} + interface PointerEventInit extends MouseEventInit { pointerId?: number; width?: number; @@ -124,22 +573,266 @@ interface PositionOptions { maximumAge?: number; } -interface SharedKeyboardAndMouseEventInit extends UIEventInit { - ctrlKey?: boolean; - shiftKey?: boolean; - altKey?: boolean; - metaKey?: boolean; - keyModifierStateAltGraph?: boolean; - keyModifierStateCapsLock?: boolean; - keyModifierStateFn?: boolean; - keyModifierStateFnLock?: boolean; - keyModifierStateHyper?: boolean; - keyModifierStateNumLock?: boolean; - keyModifierStateOS?: boolean; - keyModifierStateScrollLock?: boolean; - keyModifierStateSuper?: boolean; - keyModifierStateSymbol?: boolean; - keyModifierStateSymbolLock?: boolean; +interface RTCDTMFToneChangeEventInit extends EventInit { + tone?: string; +} + +interface RTCDtlsFingerprint { + algorithm?: string; + value?: string; +} + +interface RTCDtlsParameters { + role?: string; + fingerprints?: RTCDtlsFingerprint[]; +} + +interface RTCIceCandidate { + foundation?: string; + priority?: number; + ip?: string; + protocol?: string; + port?: number; + type?: string; + tcpType?: string; + relatedAddress?: string; + relatedPort?: number; +} + +interface RTCIceCandidateAttributes extends RTCStats { + ipAddress?: string; + portNumber?: number; + transport?: string; + candidateType?: string; + priority?: number; + addressSourceUrl?: string; +} + +interface RTCIceCandidateComplete { +} + +interface RTCIceCandidatePair { + local?: RTCIceCandidate; + remote?: RTCIceCandidate; +} + +interface RTCIceCandidatePairStats extends RTCStats { + transportId?: string; + localCandidateId?: string; + remoteCandidateId?: string; + state?: string; + priority?: number; + nominated?: boolean; + writable?: boolean; + readable?: boolean; + bytesSent?: number; + bytesReceived?: number; + roundTripTime?: number; + availableOutgoingBitrate?: number; + availableIncomingBitrate?: number; +} + +interface RTCIceGatherOptions { + gatherPolicy?: string; + iceservers?: RTCIceServer[]; +} + +interface RTCIceParameters { + usernameFragment?: string; + password?: string; +} + +interface RTCIceServer { + urls?: any; + username?: string; + credential?: string; +} + +interface RTCInboundRTPStreamStats extends RTCRTPStreamStats { + packetsReceived?: number; + bytesReceived?: number; + packetsLost?: number; + jitter?: number; + fractionLost?: number; +} + +interface RTCMediaStreamTrackStats extends RTCStats { + trackIdentifier?: string; + remoteSource?: boolean; + ssrcIds?: string[]; + frameWidth?: number; + frameHeight?: number; + framesPerSecond?: number; + framesSent?: number; + framesReceived?: number; + framesDecoded?: number; + framesDropped?: number; + framesCorrupted?: number; + audioLevel?: number; + echoReturnLoss?: number; + echoReturnLossEnhancement?: number; +} + +interface RTCOutboundRTPStreamStats extends RTCRTPStreamStats { + packetsSent?: number; + bytesSent?: number; + targetBitrate?: number; + roundTripTime?: number; +} + +interface RTCRTPStreamStats extends RTCStats { + ssrc?: string; + associateStatsId?: string; + isRemote?: boolean; + mediaTrackId?: string; + transportId?: string; + codecId?: string; + firCount?: number; + pliCount?: number; + nackCount?: number; + sliCount?: number; +} + +interface RTCRtcpFeedback { + type?: string; + parameter?: string; +} + +interface RTCRtcpParameters { + ssrc?: number; + cname?: string; + reducedSize?: boolean; + mux?: boolean; +} + +interface RTCRtpCapabilities { + codecs?: RTCRtpCodecCapability[]; + headerExtensions?: RTCRtpHeaderExtension[]; + fecMechanisms?: string[]; +} + +interface RTCRtpCodecCapability { + name?: string; + kind?: string; + clockRate?: number; + preferredPayloadType?: number; + maxptime?: number; + numChannels?: number; + rtcpFeedback?: RTCRtcpFeedback[]; + parameters?: any; + options?: any; + maxTemporalLayers?: number; + maxSpatialLayers?: number; + svcMultiStreamSupport?: boolean; +} + +interface RTCRtpCodecParameters { + name?: string; + payloadType?: any; + clockRate?: number; + maxptime?: number; + numChannels?: number; + rtcpFeedback?: RTCRtcpFeedback[]; + parameters?: any; +} + +interface RTCRtpContributingSource { + timestamp?: number; + csrc?: number; + audioLevel?: number; +} + +interface RTCRtpEncodingParameters { + ssrc?: number; + codecPayloadType?: number; + fec?: RTCRtpFecParameters; + rtx?: RTCRtpRtxParameters; + priority?: number; + maxBitrate?: number; + minQuality?: number; + framerateBias?: number; + resolutionScale?: number; + framerateScale?: number; + active?: boolean; + encodingId?: string; + dependencyEncodingIds?: string[]; + ssrcRange?: RTCSsrcRange; +} + +interface RTCRtpFecParameters { + ssrc?: number; + mechanism?: string; +} + +interface RTCRtpHeaderExtension { + kind?: string; + uri?: string; + preferredId?: number; + preferredEncrypt?: boolean; +} + +interface RTCRtpHeaderExtensionParameters { + uri?: string; + id?: number; + encrypt?: boolean; +} + +interface RTCRtpParameters { + muxId?: string; + codecs?: RTCRtpCodecParameters[]; + headerExtensions?: RTCRtpHeaderExtensionParameters[]; + encodings?: RTCRtpEncodingParameters[]; + rtcp?: RTCRtcpParameters; +} + +interface RTCRtpRtxParameters { + ssrc?: number; +} + +interface RTCRtpUnhandled { + ssrc?: number; + payloadType?: number; + muxId?: string; +} + +interface RTCSrtpKeyParam { + keyMethod?: string; + keySalt?: string; + lifetime?: string; + mkiValue?: number; + mkiLength?: number; +} + +interface RTCSrtpSdesParameters { + tag?: number; + cryptoSuite?: string; + keyParams?: RTCSrtpKeyParam[]; + sessionParams?: string[]; +} + +interface RTCSsrcRange { + min?: number; + max?: number; +} + +interface RTCStats { + timestamp?: number; + type?: string; + id?: string; + msType?: string; +} + +interface RTCStatsReport { +} + +interface RTCTransportStats extends RTCStats { + bytesSent?: number; + bytesReceived?: number; + rtcpTransportStatsId?: string; + activeConnection?: boolean; + selectedCandidatePairId?: string; + localCertificateId?: string; + remoteCertificateId?: string; } interface StoreExceptionsInformation extends ExceptionInformation { @@ -185,18 +878,18 @@ interface ANGLE_instanced_arrays { drawArraysInstancedANGLE(mode: number, first: number, count: number, primcount: number): void; drawElementsInstancedANGLE(mode: number, count: number, type: number, offset: number, primcount: number): void; vertexAttribDivisorANGLE(index: number, divisor: number): void; - VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE: number; + readonly VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE: number; } declare var ANGLE_instanced_arrays: { prototype: ANGLE_instanced_arrays; new(): ANGLE_instanced_arrays; - VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE: number; + readonly VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE: number; } interface AnalyserNode extends AudioNode { fftSize: number; - frequencyBinCount: number; + readonly frequencyBinCount: number; maxDecibels: number; minDecibels: number; smoothingTimeConstant: number; @@ -212,8 +905,8 @@ declare var AnalyserNode: { } interface AnimationEvent extends Event { - animationName: string; - elapsedTime: number; + readonly animationName: string; + readonly elapsedTime: number; initAnimationEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, animationNameArg: string, elapsedTimeArg: number): void; } @@ -231,16 +924,16 @@ interface ApplicationCache extends EventTarget { onobsolete: (ev: Event) => any; onprogress: (ev: ProgressEvent) => any; onupdateready: (ev: Event) => any; - status: number; + readonly status: number; abort(): void; swapCache(): void; update(): void; - CHECKING: number; - DOWNLOADING: number; - IDLE: number; - OBSOLETE: number; - UNCACHED: number; - UPDATEREADY: number; + readonly CHECKING: number; + readonly DOWNLOADING: number; + readonly IDLE: number; + readonly OBSOLETE: number; + readonly UNCACHED: number; + readonly UPDATEREADY: number; addEventListener(type: "cached", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "checking", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "downloading", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -255,17 +948,17 @@ interface ApplicationCache extends EventTarget { declare var ApplicationCache: { prototype: ApplicationCache; new(): ApplicationCache; - CHECKING: number; - DOWNLOADING: number; - IDLE: number; - OBSOLETE: number; - UNCACHED: number; - UPDATEREADY: number; + readonly CHECKING: number; + readonly DOWNLOADING: number; + readonly IDLE: number; + readonly OBSOLETE: number; + readonly UNCACHED: number; + readonly UPDATEREADY: number; } interface AriaRequestEvent extends Event { - attributeName: string; - attributeValue: string; + readonly attributeName: string; + attributeValue: string | null; } declare var AriaRequestEvent: { @@ -274,9 +967,10 @@ declare var AriaRequestEvent: { } interface Attr extends Node { - name: string; - ownerElement: Element; - specified: boolean; + readonly name: string; + readonly ownerElement: Element; + readonly prefix: string | null; + readonly specified: boolean; value: string; } @@ -286,10 +980,12 @@ declare var Attr: { } interface AudioBuffer { - duration: number; - length: number; - numberOfChannels: number; - sampleRate: number; + readonly duration: number; + readonly length: number; + readonly numberOfChannels: number; + readonly sampleRate: number; + copyFromChannel(destination: Float32Array, channelNumber: number, startInChannel?: number): void; + copyToChannel(source: Float32Array, channelNumber: number, startInChannel?: number): void; getChannelData(channel: number): Float32Array; } @@ -299,15 +995,16 @@ declare var AudioBuffer: { } interface AudioBufferSourceNode extends AudioNode { - buffer: AudioBuffer; + buffer: AudioBuffer | null; + readonly detune: AudioParam; loop: boolean; loopEnd: number; loopStart: number; - onended: (ev: Event) => any; - playbackRate: AudioParam; + onended: (ev: MediaStreamErrorEvent) => any; + readonly playbackRate: AudioParam; start(when?: number, offset?: number, duration?: number): void; stop(when?: number): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "ended", listener: (ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -317,10 +1014,10 @@ declare var AudioBufferSourceNode: { } interface AudioContext extends EventTarget { - currentTime: number; - destination: AudioDestinationNode; - listener: AudioListener; - sampleRate: number; + readonly currentTime: number; + readonly destination: AudioDestinationNode; + readonly listener: AudioListener; + readonly sampleRate: number; state: string; createAnalyser(): AnalyserNode; createBiquadFilter(): BiquadFilterNode; @@ -333,13 +1030,14 @@ interface AudioContext extends EventTarget { createDynamicsCompressor(): DynamicsCompressorNode; createGain(): GainNode; createMediaElementSource(mediaElement: HTMLMediaElement): MediaElementAudioSourceNode; + createMediaStreamSource(mediaStream: MediaStream): MediaStreamAudioSourceNode; createOscillator(): OscillatorNode; createPanner(): PannerNode; - createPeriodicWave(real: Float32Array, imag: Float32Array): PeriodicWave; + createPeriodicWave(real: Float32Array, imag: Float32Array, constraints?: PeriodicWaveConstraints): PeriodicWave; createScriptProcessor(bufferSize?: number, numberOfInputChannels?: number, numberOfOutputChannels?: number): ScriptProcessorNode; createStereoPanner(): StereoPannerNode; createWaveShaper(): WaveShaperNode; - decodeAudioData(audioData: ArrayBuffer, successCallback: DecodeSuccessCallback, errorCallback?: DecodeErrorCallback): void; + decodeAudioData(audioData: ArrayBuffer, successCallback?: DecodeSuccessCallback, errorCallback?: DecodeErrorCallback): PromiseLike; } declare var AudioContext: { @@ -348,7 +1046,7 @@ declare var AudioContext: { } interface AudioDestinationNode extends AudioNode { - maxChannelCount: number; + readonly maxChannelCount: number; } declare var AudioDestinationNode: { @@ -373,9 +1071,9 @@ interface AudioNode extends EventTarget { channelCount: number; channelCountMode: string; channelInterpretation: string; - context: AudioContext; - numberOfInputs: number; - numberOfOutputs: number; + readonly context: AudioContext; + readonly numberOfInputs: number; + readonly numberOfOutputs: number; connect(destination: AudioNode, output?: number, input?: number): void; disconnect(output?: number): void; disconnect(destination: AudioNode, output?: number, input?: number): void; @@ -388,7 +1086,7 @@ declare var AudioNode: { } interface AudioParam { - defaultValue: number; + readonly defaultValue: number; value: number; cancelScheduledValues(startTime: number): void; exponentialRampToValueAtTime(value: number, endTime: number): void; @@ -404,9 +1102,9 @@ declare var AudioParam: { } interface AudioProcessingEvent extends Event { - inputBuffer: AudioBuffer; - outputBuffer: AudioBuffer; - playbackTime: number; + readonly inputBuffer: AudioBuffer; + readonly outputBuffer: AudioBuffer; + readonly playbackTime: number; } declare var AudioProcessingEvent: { @@ -416,11 +1114,11 @@ declare var AudioProcessingEvent: { interface AudioTrack { enabled: boolean; - id: string; + readonly id: string; kind: string; - label: string; + readonly label: string; language: string; - sourceBuffer: SourceBuffer; + readonly sourceBuffer: SourceBuffer; } declare var AudioTrack: { @@ -429,11 +1127,11 @@ declare var AudioTrack: { } interface AudioTrackList extends EventTarget { - length: number; + readonly length: number; onaddtrack: (ev: TrackEvent) => any; onchange: (ev: Event) => any; onremovetrack: (ev: TrackEvent) => any; - getTrackById(id: string): AudioTrack; + getTrackById(id: string): AudioTrack | null; item(index: number): AudioTrack; addEventListener(type: "addtrack", listener: (ev: TrackEvent) => any, useCapture?: boolean): void; addEventListener(type: "change", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -448,7 +1146,7 @@ declare var AudioTrackList: { } interface BarProp { - visible: boolean; + readonly visible: boolean; } declare var BarProp: { @@ -466,10 +1164,10 @@ declare var BeforeUnloadEvent: { } interface BiquadFilterNode extends AudioNode { - Q: AudioParam; - detune: AudioParam; - frequency: AudioParam; - gain: AudioParam; + readonly Q: AudioParam; + readonly detune: AudioParam; + readonly frequency: AudioParam; + readonly gain: AudioParam; type: string; getFrequencyResponse(frequencyHz: Float32Array, magResponse: Float32Array, phaseResponse: Float32Array): void; } @@ -480,8 +1178,8 @@ declare var BiquadFilterNode: { } interface Blob { - size: number; - type: string; + readonly size: number; + readonly type: string; msClose(): void; msDetachStream(): any; slice(start?: number, end?: number, contentType?: string): Blob; @@ -515,7 +1213,7 @@ declare var CSSConditionRule: { } interface CSSFontFaceRule extends CSSRule { - style: CSSStyleDeclaration; + readonly style: CSSStyleDeclaration; } declare var CSSFontFaceRule: { @@ -524,9 +1222,9 @@ declare var CSSFontFaceRule: { } interface CSSGroupingRule extends CSSRule { - cssRules: CSSRuleList; - deleteRule(index?: number): void; - insertRule(rule: string, index?: number): number; + readonly cssRules: CSSRuleList; + deleteRule(index: number): void; + insertRule(rule: string, index: number): number; } declare var CSSGroupingRule: { @@ -535,9 +1233,9 @@ declare var CSSGroupingRule: { } interface CSSImportRule extends CSSRule { - href: string; - media: MediaList; - styleSheet: CSSStyleSheet; + readonly href: string; + readonly media: MediaList; + readonly styleSheet: CSSStyleSheet; } declare var CSSImportRule: { @@ -547,7 +1245,7 @@ declare var CSSImportRule: { interface CSSKeyframeRule extends CSSRule { keyText: string; - style: CSSStyleDeclaration; + readonly style: CSSStyleDeclaration; } declare var CSSKeyframeRule: { @@ -556,7 +1254,7 @@ declare var CSSKeyframeRule: { } interface CSSKeyframesRule extends CSSRule { - cssRules: CSSRuleList; + readonly cssRules: CSSRuleList; name: string; appendRule(rule: string): void; deleteRule(rule: string): void; @@ -569,7 +1267,7 @@ declare var CSSKeyframesRule: { } interface CSSMediaRule extends CSSConditionRule { - media: MediaList; + readonly media: MediaList; } declare var CSSMediaRule: { @@ -578,8 +1276,8 @@ declare var CSSMediaRule: { } interface CSSNamespaceRule extends CSSRule { - namespaceURI: string; - prefix: string; + readonly namespaceURI: string; + readonly prefix: string; } declare var CSSNamespaceRule: { @@ -588,10 +1286,10 @@ declare var CSSNamespaceRule: { } interface CSSPageRule extends CSSRule { - pseudoClass: string; - selector: string; + readonly pseudoClass: string; + readonly selector: string; selectorText: string; - style: CSSStyleDeclaration; + readonly style: CSSStyleDeclaration; } declare var CSSPageRule: { @@ -601,42 +1299,42 @@ declare var CSSPageRule: { interface CSSRule { cssText: string; - parentRule: CSSRule; - parentStyleSheet: CSSStyleSheet; - type: number; - CHARSET_RULE: number; - FONT_FACE_RULE: number; - IMPORT_RULE: number; - KEYFRAMES_RULE: number; - KEYFRAME_RULE: number; - MEDIA_RULE: number; - NAMESPACE_RULE: number; - PAGE_RULE: number; - STYLE_RULE: number; - SUPPORTS_RULE: number; - UNKNOWN_RULE: number; - VIEWPORT_RULE: number; + readonly parentRule: CSSRule; + readonly parentStyleSheet: CSSStyleSheet; + readonly type: number; + readonly CHARSET_RULE: number; + readonly FONT_FACE_RULE: number; + readonly IMPORT_RULE: number; + readonly KEYFRAMES_RULE: number; + readonly KEYFRAME_RULE: number; + readonly MEDIA_RULE: number; + readonly NAMESPACE_RULE: number; + readonly PAGE_RULE: number; + readonly STYLE_RULE: number; + readonly SUPPORTS_RULE: number; + readonly UNKNOWN_RULE: number; + readonly VIEWPORT_RULE: number; } declare var CSSRule: { prototype: CSSRule; new(): CSSRule; - CHARSET_RULE: number; - FONT_FACE_RULE: number; - IMPORT_RULE: number; - KEYFRAMES_RULE: number; - KEYFRAME_RULE: number; - MEDIA_RULE: number; - NAMESPACE_RULE: number; - PAGE_RULE: number; - STYLE_RULE: number; - SUPPORTS_RULE: number; - UNKNOWN_RULE: number; - VIEWPORT_RULE: number; + readonly CHARSET_RULE: number; + readonly FONT_FACE_RULE: number; + readonly IMPORT_RULE: number; + readonly KEYFRAMES_RULE: number; + readonly KEYFRAME_RULE: number; + readonly MEDIA_RULE: number; + readonly NAMESPACE_RULE: number; + readonly PAGE_RULE: number; + readonly STYLE_RULE: number; + readonly SUPPORTS_RULE: number; + readonly UNKNOWN_RULE: number; + readonly VIEWPORT_RULE: number; } interface CSSRuleList { - length: number; + readonly length: number; item(index: number): CSSRule; [index: number]: CSSRule; } @@ -647,356 +1345,343 @@ declare var CSSRuleList: { } interface CSSStyleDeclaration { - alignContent: string; - alignItems: string; - alignSelf: string; - alignmentBaseline: string; - animation: string; - animationDelay: string; - animationDirection: string; - animationDuration: string; - animationFillMode: string; - animationIterationCount: string; - animationName: string; - animationPlayState: string; - animationTimingFunction: string; - backfaceVisibility: string; - background: string; - backgroundAttachment: string; - backgroundClip: string; - backgroundColor: string; - backgroundImage: string; - backgroundOrigin: string; - backgroundPosition: string; - backgroundPositionX: string; - backgroundPositionY: string; - backgroundRepeat: string; - backgroundSize: string; - baselineShift: string; - border: string; - borderBottom: string; - borderBottomColor: string; - borderBottomLeftRadius: string; - borderBottomRightRadius: string; - borderBottomStyle: string; - borderBottomWidth: string; - borderCollapse: string; - borderColor: string; - borderImage: string; - borderImageOutset: string; - borderImageRepeat: string; - borderImageSlice: string; - borderImageSource: string; - borderImageWidth: string; - borderLeft: string; - borderLeftColor: string; - borderLeftStyle: string; - borderLeftWidth: string; - borderRadius: string; - borderRight: string; - borderRightColor: string; - borderRightStyle: string; - borderRightWidth: string; - borderSpacing: string; - borderStyle: string; - borderTop: string; - borderTopColor: string; - borderTopLeftRadius: string; - borderTopRightRadius: string; - borderTopStyle: string; - borderTopWidth: string; - borderWidth: string; - bottom: string; - boxShadow: string; - boxSizing: string; - breakAfter: string; - breakBefore: string; - breakInside: string; - captionSide: string; - clear: string; - clip: string; - clipPath: string; - clipRule: string; - color: string; - colorInterpolationFilters: string; + alignContent: string | null; + alignItems: string | null; + alignSelf: string | null; + alignmentBaseline: string | null; + animation: string | null; + animationDelay: string | null; + animationDirection: string | null; + animationDuration: string | null; + animationFillMode: string | null; + animationIterationCount: string | null; + animationName: string | null; + animationPlayState: string | null; + animationTimingFunction: string | null; + backfaceVisibility: string | null; + background: string | null; + backgroundAttachment: string | null; + backgroundClip: string | null; + backgroundColor: string | null; + backgroundImage: string | null; + backgroundOrigin: string | null; + backgroundPosition: string | null; + backgroundPositionX: string | null; + backgroundPositionY: string | null; + backgroundRepeat: string | null; + backgroundSize: string | null; + baselineShift: string | null; + border: string | null; + borderBottom: string | null; + borderBottomColor: string | null; + borderBottomLeftRadius: string | null; + borderBottomRightRadius: string | null; + borderBottomStyle: string | null; + borderBottomWidth: string | null; + borderCollapse: string | null; + borderColor: string | null; + borderImage: string | null; + borderImageOutset: string | null; + borderImageRepeat: string | null; + borderImageSlice: string | null; + borderImageSource: string | null; + borderImageWidth: string | null; + borderLeft: string | null; + borderLeftColor: string | null; + borderLeftStyle: string | null; + borderLeftWidth: string | null; + borderRadius: string | null; + borderRight: string | null; + borderRightColor: string | null; + borderRightStyle: string | null; + borderRightWidth: string | null; + borderSpacing: string | null; + borderStyle: string | null; + borderTop: string | null; + borderTopColor: string | null; + borderTopLeftRadius: string | null; + borderTopRightRadius: string | null; + borderTopStyle: string | null; + borderTopWidth: string | null; + borderWidth: string | null; + bottom: string | null; + boxShadow: string | null; + boxSizing: string | null; + breakAfter: string | null; + breakBefore: string | null; + breakInside: string | null; + captionSide: string | null; + clear: string | null; + clip: string | null; + clipPath: string | null; + clipRule: string | null; + color: string | null; + colorInterpolationFilters: string | null; columnCount: any; - columnFill: string; + columnFill: string | null; columnGap: any; - columnRule: string; + columnRule: string | null; columnRuleColor: any; - columnRuleStyle: string; + columnRuleStyle: string | null; columnRuleWidth: any; - columnSpan: string; + columnSpan: string | null; columnWidth: any; - columns: string; - content: string; - counterIncrement: string; - counterReset: string; - cssFloat: string; + columns: string | null; + content: string | null; + counterIncrement: string | null; + counterReset: string | null; + cssFloat: string | null; cssText: string; - cursor: string; - direction: string; - display: string; - dominantBaseline: string; - emptyCells: string; - enableBackground: string; - fill: string; - fillOpacity: string; - fillRule: string; - filter: string; - flex: string; - flexBasis: string; - flexDirection: string; - flexFlow: string; - flexGrow: string; - flexShrink: string; - flexWrap: string; - floodColor: string; - floodOpacity: string; - font: string; - fontFamily: string; - fontFeatureSettings: string; - fontSize: string; - fontSizeAdjust: string; - fontStretch: string; - fontStyle: string; - fontVariant: string; - fontWeight: string; - glyphOrientationHorizontal: string; - glyphOrientationVertical: string; - height: string; - imeMode: string; - justifyContent: string; - kerning: string; - left: string; - length: number; - letterSpacing: string; - lightingColor: string; - lineHeight: string; - listStyle: string; - listStyleImage: string; - listStylePosition: string; - listStyleType: string; - margin: string; - marginBottom: string; - marginLeft: string; - marginRight: string; - marginTop: string; - marker: string; - markerEnd: string; - markerMid: string; - markerStart: string; - mask: string; - maxHeight: string; - maxWidth: string; - minHeight: string; - minWidth: string; - msContentZoomChaining: string; - msContentZoomLimit: string; + cursor: string | null; + direction: string | null; + display: string | null; + dominantBaseline: string | null; + emptyCells: string | null; + enableBackground: string | null; + fill: string | null; + fillOpacity: string | null; + fillRule: string | null; + filter: string | null; + flex: string | null; + flexBasis: string | null; + flexDirection: string | null; + flexFlow: string | null; + flexGrow: string | null; + flexShrink: string | null; + flexWrap: string | null; + floodColor: string | null; + floodOpacity: string | null; + font: string | null; + fontFamily: string | null; + fontFeatureSettings: string | null; + fontSize: string | null; + fontSizeAdjust: string | null; + fontStretch: string | null; + fontStyle: string | null; + fontVariant: string | null; + fontWeight: string | null; + glyphOrientationHorizontal: string | null; + glyphOrientationVertical: string | null; + height: string | null; + imeMode: string | null; + justifyContent: string | null; + kerning: string | null; + left: string | null; + readonly length: number; + letterSpacing: string | null; + lightingColor: string | null; + lineHeight: string | null; + listStyle: string | null; + listStyleImage: string | null; + listStylePosition: string | null; + listStyleType: string | null; + margin: string | null; + marginBottom: string | null; + marginLeft: string | null; + marginRight: string | null; + marginTop: string | null; + marker: string | null; + markerEnd: string | null; + markerMid: string | null; + markerStart: string | null; + mask: string | null; + maxHeight: string | null; + maxWidth: string | null; + minHeight: string | null; + minWidth: string | null; + msContentZoomChaining: string | null; + msContentZoomLimit: string | null; msContentZoomLimitMax: any; msContentZoomLimitMin: any; - msContentZoomSnap: string; - msContentZoomSnapPoints: string; - msContentZoomSnapType: string; - msContentZooming: string; - msFlowFrom: string; - msFlowInto: string; - msFontFeatureSettings: string; + msContentZoomSnap: string | null; + msContentZoomSnapPoints: string | null; + msContentZoomSnapType: string | null; + msContentZooming: string | null; + msFlowFrom: string | null; + msFlowInto: string | null; + msFontFeatureSettings: string | null; msGridColumn: any; - msGridColumnAlign: string; + msGridColumnAlign: string | null; msGridColumnSpan: any; - msGridColumns: string; + msGridColumns: string | null; msGridRow: any; - msGridRowAlign: string; + msGridRowAlign: string | null; msGridRowSpan: any; - msGridRows: string; - msHighContrastAdjust: string; - msHyphenateLimitChars: string; + msGridRows: string | null; + msHighContrastAdjust: string | null; + msHyphenateLimitChars: string | null; msHyphenateLimitLines: any; msHyphenateLimitZone: any; - msHyphens: string; - msImeAlign: string; - msOverflowStyle: string; - msScrollChaining: string; - msScrollLimit: string; + msHyphens: string | null; + msImeAlign: string | null; + msOverflowStyle: string | null; + msScrollChaining: string | null; + msScrollLimit: string | null; msScrollLimitXMax: any; msScrollLimitXMin: any; msScrollLimitYMax: any; msScrollLimitYMin: any; - msScrollRails: string; - msScrollSnapPointsX: string; - msScrollSnapPointsY: string; - msScrollSnapType: string; - msScrollSnapX: string; - msScrollSnapY: string; - msScrollTranslation: string; - msTextCombineHorizontal: string; + msScrollRails: string | null; + msScrollSnapPointsX: string | null; + msScrollSnapPointsY: string | null; + msScrollSnapType: string | null; + msScrollSnapX: string | null; + msScrollSnapY: string | null; + msScrollTranslation: string | null; + msTextCombineHorizontal: string | null; msTextSizeAdjust: any; - msTouchAction: string; - msTouchSelect: string; - msUserSelect: string; + msTouchAction: string | null; + msTouchSelect: string | null; + msUserSelect: string | null; msWrapFlow: string; msWrapMargin: any; msWrapThrough: string; - opacity: string; - order: string; - orphans: string; - outline: string; - outlineColor: string; - outlineStyle: string; - outlineWidth: string; - overflow: string; - overflowX: string; - overflowY: string; - padding: string; - paddingBottom: string; - paddingLeft: string; - paddingRight: string; - paddingTop: string; - pageBreakAfter: string; - pageBreakBefore: string; - pageBreakInside: string; - parentRule: CSSRule; - perspective: string; - perspectiveOrigin: string; - pointerEvents: string; - position: string; - quotes: string; - right: string; - rubyAlign: string; - rubyOverhang: string; - rubyPosition: string; - stopColor: string; - stopOpacity: string; - stroke: string; - strokeDasharray: string; - strokeDashoffset: string; - strokeLinecap: string; - strokeLinejoin: string; - strokeMiterlimit: string; - strokeOpacity: string; - strokeWidth: string; - tableLayout: string; - textAlign: string; - textAlignLast: string; - textAnchor: string; - textDecoration: string; - textFillColor: string; - textIndent: string; - textJustify: string; - textKashida: string; - textKashidaSpace: string; - textOverflow: string; - textShadow: string; - textTransform: string; - textUnderlinePosition: string; - top: string; - touchAction: string; - transform: string; - transformOrigin: string; - transformStyle: string; - transition: string; - transitionDelay: string; - transitionDuration: string; - transitionProperty: string; - transitionTimingFunction: string; - unicodeBidi: string; - verticalAlign: string; - visibility: string; - webkitAlignContent: string; - webkitAlignItems: string; - webkitAlignSelf: string; - webkitAnimation: string; - webkitAnimationDelay: string; - webkitAnimationDirection: string; - webkitAnimationDuration: string; - webkitAnimationFillMode: string; - webkitAnimationIterationCount: string; - webkitAnimationName: string; - webkitAnimationPlayState: string; - webkitAnimationTimingFunction: string; - webkitAppearance: string; - webkitBackfaceVisibility: string; - webkitBackground: string; - webkitBackgroundAttachment: string; - webkitBackgroundClip: string; - webkitBackgroundColor: string; - webkitBackgroundImage: string; - webkitBackgroundOrigin: string; - webkitBackgroundPosition: string; - webkitBackgroundPositionX: string; - webkitBackgroundPositionY: string; - webkitBackgroundRepeat: string; - webkitBackgroundSize: string; - webkitBorderBottomLeftRadius: string; - webkitBorderBottomRightRadius: string; - webkitBorderImage: string; - webkitBorderImageOutset: string; - webkitBorderImageRepeat: string; - webkitBorderImageSlice: string; - webkitBorderImageSource: string; - webkitBorderImageWidth: string; - webkitBorderRadius: string; - webkitBorderTopLeftRadius: string; - webkitBorderTopRightRadius: string; - webkitBoxAlign: string; - webkitBoxDirection: string; - webkitBoxFlex: string; - webkitBoxOrdinalGroup: string; - webkitBoxOrient: string; - webkitBoxPack: string; - webkitBoxSizing: string; - webkitColumnBreakAfter: string; - webkitColumnBreakBefore: string; - webkitColumnBreakInside: string; + opacity: string | null; + order: string | null; + orphans: string | null; + outline: string | null; + outlineColor: string | null; + outlineStyle: string | null; + outlineWidth: string | null; + overflow: string | null; + overflowX: string | null; + overflowY: string | null; + padding: string | null; + paddingBottom: string | null; + paddingLeft: string | null; + paddingRight: string | null; + paddingTop: string | null; + pageBreakAfter: string | null; + pageBreakBefore: string | null; + pageBreakInside: string | null; + readonly parentRule: CSSRule; + perspective: string | null; + perspectiveOrigin: string | null; + pointerEvents: string | null; + position: string | null; + quotes: string | null; + right: string | null; + rubyAlign: string | null; + rubyOverhang: string | null; + rubyPosition: string | null; + stopColor: string | null; + stopOpacity: string | null; + stroke: string | null; + strokeDasharray: string | null; + strokeDashoffset: string | null; + strokeLinecap: string | null; + strokeLinejoin: string | null; + strokeMiterlimit: string | null; + strokeOpacity: string | null; + strokeWidth: string | null; + tableLayout: string | null; + textAlign: string | null; + textAlignLast: string | null; + textAnchor: string | null; + textDecoration: string | null; + textIndent: string | null; + textJustify: string | null; + textKashida: string | null; + textKashidaSpace: string | null; + textOverflow: string | null; + textShadow: string | null; + textTransform: string | null; + textUnderlinePosition: string | null; + top: string | null; + touchAction: string | null; + transform: string | null; + transformOrigin: string | null; + transformStyle: string | null; + transition: string | null; + transitionDelay: string | null; + transitionDuration: string | null; + transitionProperty: string | null; + transitionTimingFunction: string | null; + unicodeBidi: string | null; + verticalAlign: string | null; + visibility: string | null; + webkitAlignContent: string | null; + webkitAlignItems: string | null; + webkitAlignSelf: string | null; + webkitAnimation: string | null; + webkitAnimationDelay: string | null; + webkitAnimationDirection: string | null; + webkitAnimationDuration: string | null; + webkitAnimationFillMode: string | null; + webkitAnimationIterationCount: string | null; + webkitAnimationName: string | null; + webkitAnimationPlayState: string | null; + webkitAnimationTimingFunction: string | null; + webkitAppearance: string | null; + webkitBackfaceVisibility: string | null; + webkitBackgroundClip: string | null; + webkitBackgroundOrigin: string | null; + webkitBackgroundSize: string | null; + webkitBorderBottomLeftRadius: string | null; + webkitBorderBottomRightRadius: string | null; + webkitBorderImage: string | null; + webkitBorderRadius: string | null; + webkitBorderTopLeftRadius: string | null; + webkitBorderTopRightRadius: string | null; + webkitBoxAlign: string | null; + webkitBoxDirection: string | null; + webkitBoxFlex: string | null; + webkitBoxOrdinalGroup: string | null; + webkitBoxOrient: string | null; + webkitBoxPack: string | null; + webkitBoxSizing: string | null; + webkitColumnBreakAfter: string | null; + webkitColumnBreakBefore: string | null; + webkitColumnBreakInside: string | null; webkitColumnCount: any; webkitColumnGap: any; - webkitColumnRule: string; + webkitColumnRule: string | null; webkitColumnRuleColor: any; - webkitColumnRuleStyle: string; + webkitColumnRuleStyle: string | null; webkitColumnRuleWidth: any; - webkitColumnSpan: string; + webkitColumnSpan: string | null; webkitColumnWidth: any; - webkitColumns: string; - webkitFilter: string; - webkitFlex: string; - webkitFlexBasis: string; - webkitFlexDirection: string; - webkitFlexFlow: string; - webkitFlexGrow: string; - webkitFlexShrink: string; - webkitFlexWrap: string; - webkitJustifyContent: string; - webkitOrder: string; - webkitPerspective: string; - webkitPerspectiveOrigin: string; - webkitTapHighlightColor: string; - webkitTextFillColor: string; + webkitColumns: string | null; + webkitFilter: string | null; + webkitFlex: string | null; + webkitFlexBasis: string | null; + webkitFlexDirection: string | null; + webkitFlexFlow: string | null; + webkitFlexGrow: string | null; + webkitFlexShrink: string | null; + webkitFlexWrap: string | null; + webkitJustifyContent: string | null; + webkitOrder: string | null; + webkitPerspective: string | null; + webkitPerspectiveOrigin: string | null; + webkitTapHighlightColor: string | null; + webkitTextFillColor: string | null; webkitTextSizeAdjust: any; - webkitTransform: string; - webkitTransformOrigin: string; - webkitTransformStyle: string; - webkitTransition: string; - webkitTransitionDelay: string; - webkitTransitionDuration: string; - webkitTransitionProperty: string; - webkitTransitionTimingFunction: string; - webkitUserSelect: string; - webkitWritingMode: string; - whiteSpace: string; - widows: string; - width: string; - wordBreak: string; - wordSpacing: string; - wordWrap: string; - writingMode: string; - zIndex: string; - zoom: string; + webkitTransform: string | null; + webkitTransformOrigin: string | null; + webkitTransformStyle: string | null; + webkitTransition: string | null; + webkitTransitionDelay: string | null; + webkitTransitionDuration: string | null; + webkitTransitionProperty: string | null; + webkitTransitionTimingFunction: string | null; + webkitUserModify: string | null; + webkitUserSelect: string | null; + webkitWritingMode: string | null; + whiteSpace: string | null; + widows: string | null; + width: string | null; + wordBreak: string | null; + wordSpacing: string | null; + wordWrap: string | null; + writingMode: string | null; + zIndex: string | null; + zoom: string | null; getPropertyPriority(propertyName: string): string; getPropertyValue(propertyName: string): string; item(index: number): string; removeProperty(propertyName: string): string; - setProperty(propertyName: string, value: string, priority?: string): void; + setProperty(propertyName: string, value: string | null, priority?: string): void; [index: number]: string; } @@ -1006,9 +1691,9 @@ declare var CSSStyleDeclaration: { } interface CSSStyleRule extends CSSRule { - readOnly: boolean; + readonly readOnly: boolean; selectorText: string; - style: CSSStyleDeclaration; + readonly style: CSSStyleDeclaration; } declare var CSSStyleRule: { @@ -1017,18 +1702,18 @@ declare var CSSStyleRule: { } interface CSSStyleSheet extends StyleSheet { - cssRules: CSSRuleList; + readonly cssRules: CSSRuleList; cssText: string; - href: string; - id: string; - imports: StyleSheetList; - isAlternate: boolean; - isPrefAlternate: boolean; - ownerRule: CSSRule; - owningElement: Element; - pages: StyleSheetPageList; - readOnly: boolean; - rules: CSSRuleList; + readonly href: string; + readonly id: string; + readonly imports: StyleSheetList; + readonly isAlternate: boolean; + readonly isPrefAlternate: boolean; + readonly ownerRule: CSSRule; + readonly owningElement: Element; + readonly pages: StyleSheetPageList; + readonly readOnly: boolean; + readonly rules: CSSRuleList; addImport(bstrURL: string, lIndex?: number): number; addPageRule(bstrSelector: string, bstrStyle: string, lIndex?: number): number; addRule(bstrSelector: string, bstrStyle?: string, lIndex?: number): number; @@ -1068,8 +1753,8 @@ declare var CanvasPattern: { new(): CanvasPattern; } -interface CanvasRenderingContext2D { - canvas: HTMLCanvasElement; +interface CanvasRenderingContext2D extends Object, CanvasPathMethods { + readonly canvas: HTMLCanvasElement; fillStyle: string | CanvasGradient | CanvasPattern; font: string; globalAlpha: number; @@ -1088,13 +1773,12 @@ interface CanvasRenderingContext2D { strokeStyle: string | CanvasGradient | CanvasPattern; textAlign: string; textBaseline: string; - arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, anticlockwise?: boolean): void; - arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): void; + mozImageSmoothingEnabled: boolean; + webkitImageSmoothingEnabled: boolean; + oImageSmoothingEnabled: boolean; beginPath(): void; - bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): void; clearRect(x: number, y: number, w: number, h: number): void; clip(fillRule?: string): void; - closePath(): void; createImageData(imageDataOrSw: number | ImageData, sh?: number): ImageData; createLinearGradient(x0: number, y0: number, x1: number, y1: number): CanvasGradient; createPattern(image: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement, repetition: string): CanvasPattern; @@ -1106,12 +1790,8 @@ interface CanvasRenderingContext2D { getImageData(sx: number, sy: number, sw: number, sh: number): ImageData; getLineDash(): number[]; isPointInPath(x: number, y: number, fillRule?: string): boolean; - lineTo(x: number, y: number): void; measureText(text: string): TextMetrics; - moveTo(x: number, y: number): void; putImageData(imagedata: ImageData, dx: number, dy: number, dirtyX?: number, dirtyY?: number, dirtyWidth?: number, dirtyHeight?: number): void; - quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void; - rect(x: number, y: number, w: number, h: number): void; restore(): void; rotate(angle: number): void; save(): void; @@ -1148,7 +1828,7 @@ declare var ChannelSplitterNode: { interface CharacterData extends Node, ChildNode { data: string; - length: number; + readonly length: number; appendData(arg: string): void; deleteData(offset: number, count: number): void; insertData(offset: number, arg: string): void; @@ -1164,11 +1844,11 @@ declare var CharacterData: { interface ClientRect { bottom: number; - height: number; + readonly height: number; left: number; right: number; top: number; - width: number; + readonly width: number; } declare var ClientRect: { @@ -1177,7 +1857,7 @@ declare var ClientRect: { } interface ClientRectList { - length: number; + readonly length: number; item(index: number): ClientRect; [index: number]: ClientRect; } @@ -1188,7 +1868,7 @@ declare var ClientRectList: { } interface ClipboardEvent extends Event { - clipboardData: DataTransfer; + readonly clipboardData: DataTransfer; } declare var ClipboardEvent: { @@ -1197,9 +1877,9 @@ declare var ClipboardEvent: { } interface CloseEvent extends Event { - code: number; - reason: string; - wasClean: boolean; + readonly code: number; + readonly reason: string; + readonly wasClean: boolean; initCloseEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, wasCleanArg: boolean, codeArg: number, reasonArg: string): void; } @@ -1209,8 +1889,8 @@ declare var CloseEvent: { } interface CommandEvent extends Event { - commandName: string; - detail: string; + readonly commandName: string; + readonly detail: string | null; } declare var CommandEvent: { @@ -1228,8 +1908,8 @@ declare var Comment: { } interface CompositionEvent extends UIEvent { - data: string; - locale: string; + readonly data: string; + readonly locale: string; initCompositionEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, dataArg: string, locale: string): void; } @@ -1246,6 +1926,7 @@ interface Console { dir(value?: any, ...optionalParams: any[]): void; dirxml(value: any): void; error(message?: any, ...optionalParams: any[]): void; + exception(message?: string, ...optionalParams: any[]): void; group(groupTitle?: string): void; groupCollapsed(groupTitle?: string): void; groupEnd(): void; @@ -1255,6 +1936,7 @@ interface Console { profile(reportName?: string): void; profileEnd(): void; select(element: Element): void; + table(...data: any[]): void; time(timerName?: string): void; timeEnd(timerName?: string): void; trace(message?: any, ...optionalParams: any[]): void; @@ -1267,7 +1949,7 @@ declare var Console: { } interface ConvolverNode extends AudioNode { - buffer: AudioBuffer; + buffer: AudioBuffer | null; normalize: boolean; } @@ -1277,13 +1959,13 @@ declare var ConvolverNode: { } interface Coordinates { - accuracy: number; - altitude: number; - altitudeAccuracy: number; - heading: number; - latitude: number; - longitude: number; - speed: number; + readonly accuracy: number; + readonly altitude: number | null; + readonly altitudeAccuracy: number | null; + readonly heading: number | null; + readonly latitude: number; + readonly longitude: number; + readonly speed: number | null; } declare var Coordinates: { @@ -1292,7 +1974,7 @@ declare var Coordinates: { } interface Crypto extends Object, RandomSource { - subtle: SubtleCrypto; + readonly subtle: SubtleCrypto; } declare var Crypto: { @@ -1301,10 +1983,10 @@ declare var Crypto: { } interface CryptoKey { - algorithm: KeyAlgorithm; - extractable: boolean; - type: string; - usages: string[]; + readonly algorithm: KeyAlgorithm; + readonly extractable: boolean; + readonly type: string; + readonly usages: string[]; } declare var CryptoKey: { @@ -1323,7 +2005,7 @@ declare var CryptoKeyPair: { } interface CustomEvent extends Event { - detail: any; + readonly detail: any; initCustomEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, detailArg: any): void; } @@ -1333,7 +2015,7 @@ declare var CustomEvent: { } interface DOMError { - name: string; + readonly name: string; toString(): string; } @@ -1343,76 +2025,76 @@ declare var DOMError: { } interface DOMException { - code: number; - message: string; - name: string; + readonly code: number; + readonly message: string; + readonly name: string; toString(): string; - ABORT_ERR: number; - DATA_CLONE_ERR: number; - DOMSTRING_SIZE_ERR: number; - HIERARCHY_REQUEST_ERR: number; - INDEX_SIZE_ERR: number; - INUSE_ATTRIBUTE_ERR: number; - INVALID_ACCESS_ERR: number; - INVALID_CHARACTER_ERR: number; - INVALID_MODIFICATION_ERR: number; - INVALID_NODE_TYPE_ERR: number; - INVALID_STATE_ERR: number; - NAMESPACE_ERR: number; - NETWORK_ERR: number; - NOT_FOUND_ERR: number; - NOT_SUPPORTED_ERR: number; - NO_DATA_ALLOWED_ERR: number; - NO_MODIFICATION_ALLOWED_ERR: number; - PARSE_ERR: number; - QUOTA_EXCEEDED_ERR: number; - SECURITY_ERR: number; - SERIALIZE_ERR: number; - SYNTAX_ERR: number; - TIMEOUT_ERR: number; - TYPE_MISMATCH_ERR: number; - URL_MISMATCH_ERR: number; - VALIDATION_ERR: number; - WRONG_DOCUMENT_ERR: number; + readonly ABORT_ERR: number; + readonly DATA_CLONE_ERR: number; + readonly DOMSTRING_SIZE_ERR: number; + readonly HIERARCHY_REQUEST_ERR: number; + readonly INDEX_SIZE_ERR: number; + readonly INUSE_ATTRIBUTE_ERR: number; + readonly INVALID_ACCESS_ERR: number; + readonly INVALID_CHARACTER_ERR: number; + readonly INVALID_MODIFICATION_ERR: number; + readonly INVALID_NODE_TYPE_ERR: number; + readonly INVALID_STATE_ERR: number; + readonly NAMESPACE_ERR: number; + readonly NETWORK_ERR: number; + readonly NOT_FOUND_ERR: number; + readonly NOT_SUPPORTED_ERR: number; + readonly NO_DATA_ALLOWED_ERR: number; + readonly NO_MODIFICATION_ALLOWED_ERR: number; + readonly PARSE_ERR: number; + readonly QUOTA_EXCEEDED_ERR: number; + readonly SECURITY_ERR: number; + readonly SERIALIZE_ERR: number; + readonly SYNTAX_ERR: number; + readonly TIMEOUT_ERR: number; + readonly TYPE_MISMATCH_ERR: number; + readonly URL_MISMATCH_ERR: number; + readonly VALIDATION_ERR: number; + readonly WRONG_DOCUMENT_ERR: number; } declare var DOMException: { prototype: DOMException; new(): DOMException; - ABORT_ERR: number; - DATA_CLONE_ERR: number; - DOMSTRING_SIZE_ERR: number; - HIERARCHY_REQUEST_ERR: number; - INDEX_SIZE_ERR: number; - INUSE_ATTRIBUTE_ERR: number; - INVALID_ACCESS_ERR: number; - INVALID_CHARACTER_ERR: number; - INVALID_MODIFICATION_ERR: number; - INVALID_NODE_TYPE_ERR: number; - INVALID_STATE_ERR: number; - NAMESPACE_ERR: number; - NETWORK_ERR: number; - NOT_FOUND_ERR: number; - NOT_SUPPORTED_ERR: number; - NO_DATA_ALLOWED_ERR: number; - NO_MODIFICATION_ALLOWED_ERR: number; - PARSE_ERR: number; - QUOTA_EXCEEDED_ERR: number; - SECURITY_ERR: number; - SERIALIZE_ERR: number; - SYNTAX_ERR: number; - TIMEOUT_ERR: number; - TYPE_MISMATCH_ERR: number; - URL_MISMATCH_ERR: number; - VALIDATION_ERR: number; - WRONG_DOCUMENT_ERR: number; + readonly ABORT_ERR: number; + readonly DATA_CLONE_ERR: number; + readonly DOMSTRING_SIZE_ERR: number; + readonly HIERARCHY_REQUEST_ERR: number; + readonly INDEX_SIZE_ERR: number; + readonly INUSE_ATTRIBUTE_ERR: number; + readonly INVALID_ACCESS_ERR: number; + readonly INVALID_CHARACTER_ERR: number; + readonly INVALID_MODIFICATION_ERR: number; + readonly INVALID_NODE_TYPE_ERR: number; + readonly INVALID_STATE_ERR: number; + readonly NAMESPACE_ERR: number; + readonly NETWORK_ERR: number; + readonly NOT_FOUND_ERR: number; + readonly NOT_SUPPORTED_ERR: number; + readonly NO_DATA_ALLOWED_ERR: number; + readonly NO_MODIFICATION_ALLOWED_ERR: number; + readonly PARSE_ERR: number; + readonly QUOTA_EXCEEDED_ERR: number; + readonly SECURITY_ERR: number; + readonly SERIALIZE_ERR: number; + readonly SYNTAX_ERR: number; + readonly TIMEOUT_ERR: number; + readonly TYPE_MISMATCH_ERR: number; + readonly URL_MISMATCH_ERR: number; + readonly VALIDATION_ERR: number; + readonly WRONG_DOCUMENT_ERR: number; } interface DOMImplementation { - createDocument(namespaceURI: string, qualifiedName: string, doctype: DocumentType): Document; - createDocumentType(qualifiedName: string, publicId: string, systemId: string): DocumentType; + createDocument(namespaceURI: string | null, qualifiedName: string | null, doctype: DocumentType): Document; + createDocumentType(qualifiedName: string, publicId: string | null, systemId: string | null): DocumentType; createHTMLDocument(title: string): Document; - hasFeature(feature: string, version: string): boolean; + hasFeature(feature: string | null, version: string | null): boolean; } declare var DOMImplementation: { @@ -1439,9 +2121,9 @@ declare var DOMSettableTokenList: { } interface DOMStringList { - length: number; + readonly length: number; contains(str: string): boolean; - item(index: number): string; + item(index: number): string | null; [index: number]: string; } @@ -1460,7 +2142,7 @@ declare var DOMStringMap: { } interface DOMTokenList { - length: number; + readonly length: number; add(...token: string[]): void; contains(token: string): boolean; item(index: number): string; @@ -1487,9 +2169,9 @@ declare var DataCue: { interface DataTransfer { dropEffect: string; effectAllowed: string; - files: FileList; - items: DataTransferItemList; - types: DOMStringList; + readonly files: FileList; + readonly items: DataTransferItemList; + readonly types: DOMStringList; clearData(format?: string): boolean; getData(format: string): string; setData(format: string, data: string): boolean; @@ -1501,10 +2183,10 @@ declare var DataTransfer: { } interface DataTransferItem { - kind: string; - type: string; - getAsFile(): File; - getAsString(_callback: FunctionStringCallback): void; + readonly kind: string; + readonly type: string; + getAsFile(): File | null; + getAsString(_callback: FunctionStringCallback | null): void; } declare var DataTransferItem: { @@ -1513,8 +2195,8 @@ declare var DataTransferItem: { } interface DataTransferItemList { - length: number; - add(data: File): DataTransferItem; + readonly length: number; + add(data: File): DataTransferItem | null; clear(): void; item(index: number): DataTransferItem; remove(index: number): void; @@ -1527,9 +2209,9 @@ declare var DataTransferItemList: { } interface DeferredPermissionRequest { - id: number; - type: string; - uri: string; + readonly id: number; + readonly type: string; + readonly uri: string; allow(): void; deny(): void; } @@ -1540,7 +2222,7 @@ declare var DeferredPermissionRequest: { } interface DelayNode extends AudioNode { - delayTime: AudioParam; + readonly delayTime: AudioParam; } declare var DelayNode: { @@ -1549,9 +2231,9 @@ declare var DelayNode: { } interface DeviceAcceleration { - x: number; - y: number; - z: number; + readonly x: number | null; + readonly y: number | null; + readonly z: number | null; } declare var DeviceAcceleration: { @@ -1559,12 +2241,21 @@ declare var DeviceAcceleration: { new(): DeviceAcceleration; } +interface DeviceLightEvent extends Event { + readonly value: number; +} + +declare var DeviceLightEvent: { + prototype: DeviceLightEvent; + new(type: string, eventInitDict?: DeviceLightEventInit): DeviceLightEvent; +} + interface DeviceMotionEvent extends Event { - acceleration: DeviceAcceleration; - accelerationIncludingGravity: DeviceAcceleration; - interval: number; - rotationRate: DeviceRotationRate; - initDeviceMotionEvent(type: string, bubbles: boolean, cancelable: boolean, acceleration: DeviceAccelerationDict, accelerationIncludingGravity: DeviceAccelerationDict, rotationRate: DeviceRotationRateDict, interval: number): void; + readonly acceleration: DeviceAcceleration | null; + readonly accelerationIncludingGravity: DeviceAcceleration | null; + readonly interval: number | null; + readonly rotationRate: DeviceRotationRate | null; + initDeviceMotionEvent(type: string, bubbles: boolean, cancelable: boolean, acceleration: DeviceAccelerationDict | null, accelerationIncludingGravity: DeviceAccelerationDict | null, rotationRate: DeviceRotationRateDict | null, interval: number | null): void; } declare var DeviceMotionEvent: { @@ -1573,11 +2264,11 @@ declare var DeviceMotionEvent: { } interface DeviceOrientationEvent extends Event { - absolute: boolean; - alpha: number; - beta: number; - gamma: number; - initDeviceOrientationEvent(type: string, bubbles: boolean, cancelable: boolean, alpha: number, beta: number, gamma: number, absolute: boolean): void; + readonly absolute: boolean; + readonly alpha: number | null; + readonly beta: number | null; + readonly gamma: number | null; + initDeviceOrientationEvent(type: string, bubbles: boolean, cancelable: boolean, alpha: number | null, beta: number | null, gamma: number | null, absolute: boolean): void; } declare var DeviceOrientationEvent: { @@ -1586,9 +2277,9 @@ declare var DeviceOrientationEvent: { } interface DeviceRotationRate { - alpha: number; - beta: number; - gamma: number; + readonly alpha: number | null; + readonly beta: number | null; + readonly gamma: number | null; } declare var DeviceRotationRate: { @@ -1600,15 +2291,15 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven /** * Sets or gets the URL for the current document. */ - URL: string; + readonly URL: string; /** * Gets the URL for the document, stripped of any character encoding. */ - URLUnencoded: string; + readonly URLUnencoded: string; /** * Gets the object that has the focus when the parent document has focus. */ - activeElement: Element; + readonly activeElement: Element; /** * Sets or gets the color of all active links in the document. */ @@ -1616,15 +2307,15 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven /** * Returns a reference to the collection of elements contained by the object. */ - all: HTMLCollection; + readonly all: HTMLAllCollection; /** * Retrieves a collection of all a objects that have a name and/or id property. Objects in this collection are in HTML source order. */ - anchors: HTMLCollection; + anchors: HTMLCollectionOf; /** * Retrieves a collection of all applet objects in the document. */ - applets: HTMLCollection; + applets: HTMLCollectionOf; /** * Deprecated. Sets or retrieves a value that indicates the background color behind the object. */ @@ -1633,7 +2324,7 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven * Specifies the beginning and end of the document body. */ body: HTMLElement; - characterSet: string; + readonly characterSet: string; /** * Gets or sets the character set used to encode the object. */ @@ -1641,13 +2332,14 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven /** * Gets a value that indicates whether standards-compliant mode is switched on for the object. */ - compatMode: string; + readonly compatMode: string; cookie: string; + readonly currentScript: HTMLScriptElement | SVGScriptElement; /** * Gets the default character set from the current regional language settings. */ - defaultCharset: string; - defaultView: Window; + readonly defaultCharset: string; + readonly defaultView: Window; /** * Sets or gets a value that indicates whether the document can be edited. */ @@ -1659,7 +2351,7 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven /** * Gets an object representing the document type declaration associated with the current document. */ - doctype: DocumentType; + readonly doctype: DocumentType; /** * Gets a reference to the root node of the document. */ @@ -1671,7 +2363,7 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven /** * Retrieves a collection of all embed objects in the document. */ - embeds: HTMLCollection; + embeds: HTMLCollectionOf; /** * Sets or gets the foreground (text) color of the document. */ @@ -1679,27 +2371,27 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven /** * Retrieves a collection, in source order, of all form objects in the document. */ - forms: HTMLCollection; - fullscreenElement: Element; - fullscreenEnabled: boolean; - head: HTMLHeadElement; - hidden: boolean; + forms: HTMLCollectionOf; + readonly fullscreenElement: Element | null; + readonly fullscreenEnabled: boolean; + readonly head: HTMLHeadElement; + readonly hidden: boolean; /** * Retrieves a collection, in source order, of img objects in the document. */ - images: HTMLCollection; + images: HTMLCollectionOf; /** * Gets the implementation object of the current document. */ - implementation: DOMImplementation; + readonly implementation: DOMImplementation; /** * Returns the character encoding used to create the webpage that is loaded into the document object. */ - inputEncoding: string; + readonly inputEncoding: string | null; /** * Gets the date that the page was last modified, if the page supplies one. */ - lastModified: string; + readonly lastModified: string; /** * Sets or gets the color of the document links. */ @@ -1707,16 +2399,13 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven /** * Retrieves a collection of all a objects that specify the href property and all area objects in the document. */ - links: HTMLCollection; + links: HTMLCollectionOf; /** * Contains information about the current URL. */ - location: Location; - media: string; + readonly location: Location; msCSSOMElementFloatMetrics: boolean; msCapsLockWarningOff: boolean; - msHidden: boolean; - msVisibilityState: string; /** * Fires when the user aborts the download. * @param ev The event. @@ -1818,7 +2507,7 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven * Occurs when the end of playback is reached. * @param ev The event */ - onended: (ev: Event) => any; + onended: (ev: MediaStreamErrorEvent) => any; /** * Fires when an error occurs during object loading. * @param ev The event. @@ -1832,6 +2521,7 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven onfullscreenchange: (ev: Event) => any; onfullscreenerror: (ev: Event) => any; oninput: (ev: Event) => any; + oninvalid: (ev: Event) => any; /** * Fires when the user presses a key. * @param ev The keyboard event @@ -1896,7 +2586,7 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven * Fires when the wheel button is rotated. * @param ev The mouse event */ - onmousewheel: (ev: MouseWheelEvent) => any; + onmousewheel: (ev: WheelEvent) => any; onmscontentzoom: (ev: UIEvent) => any; onmsgesturechange: (ev: MSGestureEvent) => any; onmsgesturedoubletap: (ev: MSGestureEvent) => any; @@ -1981,6 +2671,11 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven * @param ev The event. */ onselect: (ev: UIEvent) => any; + /** + * Fires when the selection state of a document changes. + * @param ev The event. + */ + onselectionchange: (ev: Event) => any; onselectstart: (ev: Event) => any; /** * Occurs when the download has stopped. @@ -2019,51 +2714,51 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven onwaiting: (ev: Event) => any; onwebkitfullscreenchange: (ev: Event) => any; onwebkitfullscreenerror: (ev: Event) => any; - plugins: HTMLCollection; - pointerLockElement: Element; + plugins: HTMLCollectionOf; + readonly pointerLockElement: Element; /** * Retrieves a value that indicates the current state of the object. */ - readyState: string; + readonly readyState: string; /** * Gets the URL of the location that referred the user to the current page. */ - referrer: string; + readonly referrer: string; /** * Gets the root svg element in the document hierarchy. */ - rootElement: SVGSVGElement; + readonly rootElement: SVGSVGElement; /** * Retrieves a collection of all script objects in the document. */ - scripts: HTMLCollection; - security: string; + scripts: HTMLCollectionOf; + readonly scrollingElement: Element | null; /** * Retrieves a collection of styleSheet objects representing the style sheets that correspond to each instance of a link or style object in the document. */ - styleSheets: StyleSheetList; + readonly styleSheets: StyleSheetList; /** * Contains the title of the document. */ title: string; - visibilityState: string; + readonly visibilityState: string; /** * Sets or gets the color of the links that the user has visited. */ vlinkColor: string; - webkitCurrentFullScreenElement: Element; - webkitFullscreenElement: Element; - webkitFullscreenEnabled: boolean; - webkitIsFullScreen: boolean; - xmlEncoding: string; + readonly webkitCurrentFullScreenElement: Element | null; + readonly webkitFullscreenElement: Element | null; + readonly webkitFullscreenEnabled: boolean; + readonly webkitIsFullScreen: boolean; + readonly xmlEncoding: string | null; xmlStandalone: boolean; /** * Gets or sets the version attribute specified in the declaration of an XML document. */ - xmlVersion: string; - currentScript: HTMLScriptElement; + xmlVersion: string | null; adoptNode(source: Node): Node; captureEvents(): void; + caretRangeFromPoint(x: number, y: number): Range; clear(): void; /** * Closes an output stream and forces the sent data to display. @@ -2074,7 +2769,7 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven * @param name String that sets the attribute object's name. */ createAttribute(name: string): Attr; - createAttributeNS(namespaceURI: string, qualifiedName: string): Attr; + createAttributeNS(namespaceURI: string | null, qualifiedName: string): Attr; createCDATASection(data: string): CDATASection; /** * Creates a comment object with the specified data. @@ -2090,37 +2785,24 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven * @param tagName The name of an element. */ createElement(tagName: "a"): HTMLAnchorElement; - createElement(tagName: "abbr"): HTMLPhraseElement; - createElement(tagName: "acronym"): HTMLPhraseElement; - createElement(tagName: "address"): HTMLBlockElement; createElement(tagName: "applet"): HTMLAppletElement; createElement(tagName: "area"): HTMLAreaElement; createElement(tagName: "audio"): HTMLAudioElement; - createElement(tagName: "b"): HTMLPhraseElement; createElement(tagName: "base"): HTMLBaseElement; createElement(tagName: "basefont"): HTMLBaseFontElement; - createElement(tagName: "bdo"): HTMLPhraseElement; - createElement(tagName: "big"): HTMLPhraseElement; - createElement(tagName: "blockquote"): HTMLBlockElement; + createElement(tagName: "blockquote"): HTMLQuoteElement; createElement(tagName: "body"): HTMLBodyElement; createElement(tagName: "br"): HTMLBRElement; createElement(tagName: "button"): HTMLButtonElement; createElement(tagName: "canvas"): HTMLCanvasElement; createElement(tagName: "caption"): HTMLTableCaptionElement; - createElement(tagName: "center"): HTMLBlockElement; - createElement(tagName: "cite"): HTMLPhraseElement; - createElement(tagName: "code"): HTMLPhraseElement; createElement(tagName: "col"): HTMLTableColElement; createElement(tagName: "colgroup"): HTMLTableColElement; createElement(tagName: "datalist"): HTMLDataListElement; - createElement(tagName: "dd"): HTMLDDElement; createElement(tagName: "del"): HTMLModElement; - createElement(tagName: "dfn"): HTMLPhraseElement; createElement(tagName: "dir"): HTMLDirectoryElement; createElement(tagName: "div"): HTMLDivElement; createElement(tagName: "dl"): HTMLDListElement; - createElement(tagName: "dt"): HTMLDTElement; - createElement(tagName: "em"): HTMLPhraseElement; createElement(tagName: "embed"): HTMLEmbedElement; createElement(tagName: "fieldset"): HTMLFieldSetElement; createElement(tagName: "font"): HTMLFontElement; @@ -2136,52 +2818,41 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven createElement(tagName: "head"): HTMLHeadElement; createElement(tagName: "hr"): HTMLHRElement; createElement(tagName: "html"): HTMLHtmlElement; - createElement(tagName: "i"): HTMLPhraseElement; createElement(tagName: "iframe"): HTMLIFrameElement; createElement(tagName: "img"): HTMLImageElement; createElement(tagName: "input"): HTMLInputElement; createElement(tagName: "ins"): HTMLModElement; - createElement(tagName: "isindex"): HTMLIsIndexElement; - createElement(tagName: "kbd"): HTMLPhraseElement; - createElement(tagName: "keygen"): HTMLBlockElement; + createElement(tagName: "isindex"): HTMLUnknownElement; createElement(tagName: "label"): HTMLLabelElement; createElement(tagName: "legend"): HTMLLegendElement; createElement(tagName: "li"): HTMLLIElement; createElement(tagName: "link"): HTMLLinkElement; - createElement(tagName: "listing"): HTMLBlockElement; + createElement(tagName: "listing"): HTMLPreElement; createElement(tagName: "map"): HTMLMapElement; createElement(tagName: "marquee"): HTMLMarqueeElement; createElement(tagName: "menu"): HTMLMenuElement; createElement(tagName: "meta"): HTMLMetaElement; - createElement(tagName: "nextid"): HTMLNextIdElement; - createElement(tagName: "nobr"): HTMLPhraseElement; + createElement(tagName: "meter"): HTMLMeterElement; + createElement(tagName: "nextid"): HTMLUnknownElement; createElement(tagName: "object"): HTMLObjectElement; createElement(tagName: "ol"): HTMLOListElement; createElement(tagName: "optgroup"): HTMLOptGroupElement; createElement(tagName: "option"): HTMLOptionElement; createElement(tagName: "p"): HTMLParagraphElement; createElement(tagName: "param"): HTMLParamElement; - createElement(tagName: "plaintext"): HTMLBlockElement; + createElement(tagName: "picture"): HTMLPictureElement; createElement(tagName: "pre"): HTMLPreElement; createElement(tagName: "progress"): HTMLProgressElement; createElement(tagName: "q"): HTMLQuoteElement; - createElement(tagName: "rt"): HTMLPhraseElement; - createElement(tagName: "ruby"): HTMLPhraseElement; - createElement(tagName: "s"): HTMLPhraseElement; - createElement(tagName: "samp"): HTMLPhraseElement; createElement(tagName: "script"): HTMLScriptElement; createElement(tagName: "select"): HTMLSelectElement; - createElement(tagName: "small"): HTMLPhraseElement; createElement(tagName: "source"): HTMLSourceElement; createElement(tagName: "span"): HTMLSpanElement; - createElement(tagName: "strike"): HTMLPhraseElement; - createElement(tagName: "strong"): HTMLPhraseElement; createElement(tagName: "style"): HTMLStyleElement; - createElement(tagName: "sub"): HTMLPhraseElement; - createElement(tagName: "sup"): HTMLPhraseElement; createElement(tagName: "table"): HTMLTableElement; createElement(tagName: "tbody"): HTMLTableSectionElement; createElement(tagName: "td"): HTMLTableDataCellElement; + createElement(tagName: "template"): HTMLTemplateElement; createElement(tagName: "textarea"): HTMLTextAreaElement; createElement(tagName: "tfoot"): HTMLTableSectionElement; createElement(tagName: "th"): HTMLTableHeaderCellElement; @@ -2189,14 +2860,12 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven createElement(tagName: "title"): HTMLTitleElement; createElement(tagName: "tr"): HTMLTableRowElement; createElement(tagName: "track"): HTMLTrackElement; - createElement(tagName: "tt"): HTMLPhraseElement; - createElement(tagName: "u"): HTMLPhraseElement; createElement(tagName: "ul"): HTMLUListElement; - createElement(tagName: "var"): HTMLPhraseElement; createElement(tagName: "video"): HTMLVideoElement; createElement(tagName: "x-ms-webview"): MSHTMLWebViewElement; - createElement(tagName: "xmp"): HTMLBlockElement; + createElement(tagName: "xmp"): HTMLPreElement; createElement(tagName: string): HTMLElement; + createElementNS(namespaceURI: "http://www.w3.org/1999/xhtml", qualifiedName: string): HTMLElement createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "a"): SVGAElement createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "circle"): SVGCircleElement createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "clipPath"): SVGClipPathElement @@ -2259,7 +2928,7 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "use"): SVGUseElement createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "view"): SVGViewElement createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: string): SVGElement - createElementNS(namespaceURI: string, qualifiedName: string): Element; + createElementNS(namespaceURI: string | null, qualifiedName: string): Element; createExpression(expression: string, resolver: XPathNSResolver): XPathExpression; createNSResolver(nodeResolver: Node): XPathNSResolver; /** @@ -2280,7 +2949,7 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven * @param data String that specifies the nodeValue property of the text node. */ createTextNode(data: string): Text; - createTouch(view: any, target: EventTarget, identifier: number, pageX: number, pageY: number, screenX: number, screenY: number): Touch; + createTouch(view: Window, target: EventTarget, identifier: number, pageX: number, pageY: number, screenX: number, screenY: number): Touch; createTouchList(...touches: Touch[]): TouchList; /** * Creates a TreeWalker object that you can use to traverse filtered lists of nodes or elements in a document. @@ -2320,55 +2989,55 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven * @param elementId String that specifies the ID value. Case-insensitive. */ getElementById(elementId: string): HTMLElement; - getElementsByClassName(classNames: string): NodeListOf; + getElementsByClassName(classNames: string): HTMLCollectionOf; /** * Gets a collection of objects based on the value of the NAME or ID attribute. * @param elementName Gets a collection of objects based on the value of the NAME or ID attribute. */ - getElementsByName(elementName: string): NodeListOf; + getElementsByName(elementName: string): NodeListOf; /** * Retrieves a collection of objects based on the specified element name. * @param name Specifies the name of an element. */ getElementsByTagName(tagname: "a"): NodeListOf; - getElementsByTagName(tagname: "abbr"): NodeListOf; - getElementsByTagName(tagname: "acronym"): NodeListOf; - getElementsByTagName(tagname: "address"): NodeListOf; + getElementsByTagName(tagname: "abbr"): NodeListOf; + getElementsByTagName(tagname: "acronym"): NodeListOf; + getElementsByTagName(tagname: "address"): NodeListOf; getElementsByTagName(tagname: "applet"): NodeListOf; getElementsByTagName(tagname: "area"): NodeListOf; getElementsByTagName(tagname: "article"): NodeListOf; getElementsByTagName(tagname: "aside"): NodeListOf; getElementsByTagName(tagname: "audio"): NodeListOf; - getElementsByTagName(tagname: "b"): NodeListOf; + getElementsByTagName(tagname: "b"): NodeListOf; getElementsByTagName(tagname: "base"): NodeListOf; getElementsByTagName(tagname: "basefont"): NodeListOf; - getElementsByTagName(tagname: "bdo"): NodeListOf; - getElementsByTagName(tagname: "big"): NodeListOf; - getElementsByTagName(tagname: "blockquote"): NodeListOf; + getElementsByTagName(tagname: "bdo"): NodeListOf; + getElementsByTagName(tagname: "big"): NodeListOf; + getElementsByTagName(tagname: "blockquote"): NodeListOf; getElementsByTagName(tagname: "body"): NodeListOf; getElementsByTagName(tagname: "br"): NodeListOf; getElementsByTagName(tagname: "button"): NodeListOf; getElementsByTagName(tagname: "canvas"): NodeListOf; getElementsByTagName(tagname: "caption"): NodeListOf; - getElementsByTagName(tagname: "center"): NodeListOf; + getElementsByTagName(tagname: "center"): NodeListOf; getElementsByTagName(tagname: "circle"): NodeListOf; - getElementsByTagName(tagname: "cite"): NodeListOf; + getElementsByTagName(tagname: "cite"): NodeListOf; getElementsByTagName(tagname: "clippath"): NodeListOf; - getElementsByTagName(tagname: "code"): NodeListOf; + getElementsByTagName(tagname: "code"): NodeListOf; getElementsByTagName(tagname: "col"): NodeListOf; getElementsByTagName(tagname: "colgroup"): NodeListOf; getElementsByTagName(tagname: "datalist"): NodeListOf; - getElementsByTagName(tagname: "dd"): NodeListOf; + getElementsByTagName(tagname: "dd"): NodeListOf; getElementsByTagName(tagname: "defs"): NodeListOf; getElementsByTagName(tagname: "del"): NodeListOf; getElementsByTagName(tagname: "desc"): NodeListOf; - getElementsByTagName(tagname: "dfn"): NodeListOf; + getElementsByTagName(tagname: "dfn"): NodeListOf; getElementsByTagName(tagname: "dir"): NodeListOf; getElementsByTagName(tagname: "div"): NodeListOf; getElementsByTagName(tagname: "dl"): NodeListOf; - getElementsByTagName(tagname: "dt"): NodeListOf; + getElementsByTagName(tagname: "dt"): NodeListOf; getElementsByTagName(tagname: "ellipse"): NodeListOf; - getElementsByTagName(tagname: "em"): NodeListOf; + getElementsByTagName(tagname: "em"): NodeListOf; getElementsByTagName(tagname: "embed"): NodeListOf; getElementsByTagName(tagname: "feblend"): NodeListOf; getElementsByTagName(tagname: "fecolormatrix"): NodeListOf; @@ -2416,22 +3085,22 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven getElementsByTagName(tagname: "hgroup"): NodeListOf; getElementsByTagName(tagname: "hr"): NodeListOf; getElementsByTagName(tagname: "html"): NodeListOf; - getElementsByTagName(tagname: "i"): NodeListOf; + getElementsByTagName(tagname: "i"): NodeListOf; getElementsByTagName(tagname: "iframe"): NodeListOf; getElementsByTagName(tagname: "image"): NodeListOf; getElementsByTagName(tagname: "img"): NodeListOf; getElementsByTagName(tagname: "input"): NodeListOf; getElementsByTagName(tagname: "ins"): NodeListOf; - getElementsByTagName(tagname: "isindex"): NodeListOf; - getElementsByTagName(tagname: "kbd"): NodeListOf; - getElementsByTagName(tagname: "keygen"): NodeListOf; + getElementsByTagName(tagname: "isindex"): NodeListOf; + getElementsByTagName(tagname: "kbd"): NodeListOf; + getElementsByTagName(tagname: "keygen"): NodeListOf; getElementsByTagName(tagname: "label"): NodeListOf; getElementsByTagName(tagname: "legend"): NodeListOf; getElementsByTagName(tagname: "li"): NodeListOf; getElementsByTagName(tagname: "line"): NodeListOf; getElementsByTagName(tagname: "lineargradient"): NodeListOf; getElementsByTagName(tagname: "link"): NodeListOf; - getElementsByTagName(tagname: "listing"): NodeListOf; + getElementsByTagName(tagname: "listing"): NodeListOf; getElementsByTagName(tagname: "map"): NodeListOf; getElementsByTagName(tagname: "mark"): NodeListOf; getElementsByTagName(tagname: "marker"): NodeListOf; @@ -2440,9 +3109,10 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven getElementsByTagName(tagname: "menu"): NodeListOf; getElementsByTagName(tagname: "meta"): NodeListOf; getElementsByTagName(tagname: "metadata"): NodeListOf; + getElementsByTagName(tagname: "meter"): NodeListOf; getElementsByTagName(tagname: "nav"): NodeListOf; - getElementsByTagName(tagname: "nextid"): NodeListOf; - getElementsByTagName(tagname: "nobr"): NodeListOf; + getElementsByTagName(tagname: "nextid"): NodeListOf; + getElementsByTagName(tagname: "nobr"): NodeListOf; getElementsByTagName(tagname: "noframes"): NodeListOf; getElementsByTagName(tagname: "noscript"): NodeListOf; getElementsByTagName(tagname: "object"): NodeListOf; @@ -2453,7 +3123,8 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven getElementsByTagName(tagname: "param"): NodeListOf; getElementsByTagName(tagname: "path"): NodeListOf; getElementsByTagName(tagname: "pattern"): NodeListOf; - getElementsByTagName(tagname: "plaintext"): NodeListOf; + getElementsByTagName(tagname: "picture"): NodeListOf; + getElementsByTagName(tagname: "plaintext"): NodeListOf; getElementsByTagName(tagname: "polygon"): NodeListOf; getElementsByTagName(tagname: "polyline"): NodeListOf; getElementsByTagName(tagname: "pre"): NodeListOf; @@ -2461,28 +3132,29 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven getElementsByTagName(tagname: "q"): NodeListOf; getElementsByTagName(tagname: "radialgradient"): NodeListOf; getElementsByTagName(tagname: "rect"): NodeListOf; - getElementsByTagName(tagname: "rt"): NodeListOf; - getElementsByTagName(tagname: "ruby"): NodeListOf; - getElementsByTagName(tagname: "s"): NodeListOf; - getElementsByTagName(tagname: "samp"): NodeListOf; + getElementsByTagName(tagname: "rt"): NodeListOf; + getElementsByTagName(tagname: "ruby"): NodeListOf; + getElementsByTagName(tagname: "s"): NodeListOf; + getElementsByTagName(tagname: "samp"): NodeListOf; getElementsByTagName(tagname: "script"): NodeListOf; getElementsByTagName(tagname: "section"): NodeListOf; getElementsByTagName(tagname: "select"): NodeListOf; - getElementsByTagName(tagname: "small"): NodeListOf; + getElementsByTagName(tagname: "small"): NodeListOf; getElementsByTagName(tagname: "source"): NodeListOf; getElementsByTagName(tagname: "span"): NodeListOf; getElementsByTagName(tagname: "stop"): NodeListOf; - getElementsByTagName(tagname: "strike"): NodeListOf; - getElementsByTagName(tagname: "strong"): NodeListOf; + getElementsByTagName(tagname: "strike"): NodeListOf; + getElementsByTagName(tagname: "strong"): NodeListOf; getElementsByTagName(tagname: "style"): NodeListOf; - getElementsByTagName(tagname: "sub"): NodeListOf; - getElementsByTagName(tagname: "sup"): NodeListOf; + getElementsByTagName(tagname: "sub"): NodeListOf; + getElementsByTagName(tagname: "sup"): NodeListOf; getElementsByTagName(tagname: "svg"): NodeListOf; getElementsByTagName(tagname: "switch"): NodeListOf; getElementsByTagName(tagname: "symbol"): NodeListOf; getElementsByTagName(tagname: "table"): NodeListOf; getElementsByTagName(tagname: "tbody"): NodeListOf; getElementsByTagName(tagname: "td"): NodeListOf; + getElementsByTagName(tagname: "template"): NodeListOf; getElementsByTagName(tagname: "text"): NodeListOf; getElementsByTagName(tagname: "textpath"): NodeListOf; getElementsByTagName(tagname: "textarea"): NodeListOf; @@ -2493,18 +3165,20 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven getElementsByTagName(tagname: "tr"): NodeListOf; getElementsByTagName(tagname: "track"): NodeListOf; getElementsByTagName(tagname: "tspan"): NodeListOf; - getElementsByTagName(tagname: "tt"): NodeListOf; - getElementsByTagName(tagname: "u"): NodeListOf; + getElementsByTagName(tagname: "tt"): NodeListOf; + getElementsByTagName(tagname: "u"): NodeListOf; getElementsByTagName(tagname: "ul"): NodeListOf; getElementsByTagName(tagname: "use"): NodeListOf; - getElementsByTagName(tagname: "var"): NodeListOf; + getElementsByTagName(tagname: "var"): NodeListOf; getElementsByTagName(tagname: "video"): NodeListOf; getElementsByTagName(tagname: "view"): NodeListOf; getElementsByTagName(tagname: "wbr"): NodeListOf; getElementsByTagName(tagname: "x-ms-webview"): NodeListOf; - getElementsByTagName(tagname: "xmp"): NodeListOf; + getElementsByTagName(tagname: "xmp"): NodeListOf; getElementsByTagName(tagname: string): NodeListOf; - getElementsByTagNameNS(namespaceURI: string, localName: string): NodeListOf; + getElementsByTagNameNS(namespaceURI: "http://www.w3.org/1999/xhtml", localName: string): HTMLCollectionOf; + getElementsByTagNameNS(namespaceURI: "http://www.w3.org/2000/svg", localName: string): HTMLCollectionOf; + getElementsByTagNameNS(namespaceURI: string, localName: string): HTMLCollectionOf; /** * Returns an object representing the current selection of the document that is loaded into the object displaying a webpage. */ @@ -2514,8 +3188,8 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven */ hasFocus(): boolean; importNode(importedNode: Node, deep: boolean): Node; - msElementsFromPoint(x: number, y: number): NodeList; - msElementsFromRect(left: number, top: number, width: number, height: number): NodeList; + msElementsFromPoint(x: number, y: number): NodeListOf; + msElementsFromRect(left: number, top: number, width: number, height: number): NodeListOf; /** * Opens a new window and loads a document specified by a given URL. Also, opens a new window that uses the url parameter and the name parameter to collect the output of the write method and the writeln method. * @param url Specifies a MIME type for the document. @@ -2571,8 +3245,6 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven * @param content The text and HTML tags to write. */ writeln(...content: string[]): void; - createElement(tagName: "picture"): HTMLPictureElement; - getElementsByTagName(tagname: "picture"): NodeListOf; addEventListener(type: "MSContentZoom", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; addEventListener(type: "MSGestureDoubleTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; @@ -2611,12 +3283,13 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "ended", listener: (ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; addEventListener(type: "fullscreenchange", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "fullscreenerror", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "invalid", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; @@ -2629,7 +3302,7 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousewheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; addEventListener(type: "mssitemodejumplistitemremoved", listener: (ev: MSSiteModeEvent) => any, useCapture?: boolean): void; addEventListener(type: "msthumbnailclick", listener: (ev: MSSiteModeEvent) => any, useCapture?: boolean): void; addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -2653,6 +3326,7 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven addEventListener(type: "seeked", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "seeking", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "select", listener: (ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "selectionchange", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "selectstart", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "stalled", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "stop", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -2686,12 +3360,12 @@ declare var DocumentFragment: { } interface DocumentType extends Node, ChildNode { - entities: NamedNodeMap; - internalSubset: string; - name: string; - notations: NamedNodeMap; - publicId: string; - systemId: string; + readonly entities: NamedNodeMap; + readonly internalSubset: string | null; + readonly name: string; + readonly notations: NamedNodeMap; + readonly publicId: string | null; + readonly systemId: string | null; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -2701,7 +3375,7 @@ declare var DocumentType: { } interface DragEvent extends MouseEvent { - dataTransfer: DataTransfer; + readonly dataTransfer: DataTransfer; initDragEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, screenXArg: number, screenYArg: number, clientXArg: number, clientYArg: number, ctrlKeyArg: boolean, altKeyArg: boolean, shiftKeyArg: boolean, metaKeyArg: boolean, buttonArg: number, relatedTargetArg: EventTarget, dataTransferArg: DataTransfer): void; msConvertURL(file: File, targetType: string, targetURL?: string): void; } @@ -2712,12 +3386,12 @@ declare var DragEvent: { } interface DynamicsCompressorNode extends AudioNode { - attack: AudioParam; - knee: AudioParam; - ratio: AudioParam; - reduction: AudioParam; - release: AudioParam; - threshold: AudioParam; + readonly attack: AudioParam; + readonly knee: AudioParam; + readonly ratio: AudioParam; + readonly reduction: AudioParam; + readonly release: AudioParam; + readonly threshold: AudioParam; } declare var DynamicsCompressorNode: { @@ -2725,26 +3399,36 @@ declare var DynamicsCompressorNode: { new(): DynamicsCompressorNode; } +interface EXT_frag_depth { +} + +declare var EXT_frag_depth: { + prototype: EXT_frag_depth; + new(): EXT_frag_depth; +} + interface EXT_texture_filter_anisotropic { - MAX_TEXTURE_MAX_ANISOTROPY_EXT: number; - TEXTURE_MAX_ANISOTROPY_EXT: number; + readonly MAX_TEXTURE_MAX_ANISOTROPY_EXT: number; + readonly TEXTURE_MAX_ANISOTROPY_EXT: number; } declare var EXT_texture_filter_anisotropic: { prototype: EXT_texture_filter_anisotropic; new(): EXT_texture_filter_anisotropic; - MAX_TEXTURE_MAX_ANISOTROPY_EXT: number; - TEXTURE_MAX_ANISOTROPY_EXT: number; + readonly MAX_TEXTURE_MAX_ANISOTROPY_EXT: number; + readonly TEXTURE_MAX_ANISOTROPY_EXT: number; } interface Element extends Node, GlobalEventHandlers, ElementTraversal, NodeSelector, ChildNode { - classList: DOMTokenList; - clientHeight: number; - clientLeft: number; - clientTop: number; - clientWidth: number; + readonly classList: DOMTokenList; + className: string; + readonly clientHeight: number; + readonly clientLeft: number; + readonly clientTop: number; + readonly clientWidth: number; + id: string; msContentZoomFactor: number; - msRegionOverflow: string; + readonly msRegionOverflow: string; onariarequest: (ev: AriaRequestEvent) => any; oncommand: (ev: CommandEvent) => any; ongotpointercapture: (ev: PointerEvent) => any; @@ -2772,59 +3456,58 @@ interface Element extends Node, GlobalEventHandlers, ElementTraversal, NodeSelec ontouchstart: (ev: TouchEvent) => any; onwebkitfullscreenchange: (ev: Event) => any; onwebkitfullscreenerror: (ev: Event) => any; - scrollHeight: number; + readonly prefix: string | null; + readonly scrollHeight: number; scrollLeft: number; scrollTop: number; - scrollWidth: number; - tagName: string; - id: string; - className: string; + readonly scrollWidth: number; + readonly tagName: string; innerHTML: string; - getAttribute(name?: string): string; + getAttribute(name?: string): string | null; getAttributeNS(namespaceURI: string, localName: string): string; getAttributeNode(name: string): Attr; getAttributeNodeNS(namespaceURI: string, localName: string): Attr; getBoundingClientRect(): ClientRect; getClientRects(): ClientRectList; getElementsByTagName(name: "a"): NodeListOf; - getElementsByTagName(name: "abbr"): NodeListOf; - getElementsByTagName(name: "acronym"): NodeListOf; - getElementsByTagName(name: "address"): NodeListOf; + getElementsByTagName(name: "abbr"): NodeListOf; + getElementsByTagName(name: "acronym"): NodeListOf; + getElementsByTagName(name: "address"): NodeListOf; getElementsByTagName(name: "applet"): NodeListOf; getElementsByTagName(name: "area"): NodeListOf; getElementsByTagName(name: "article"): NodeListOf; getElementsByTagName(name: "aside"): NodeListOf; getElementsByTagName(name: "audio"): NodeListOf; - getElementsByTagName(name: "b"): NodeListOf; + getElementsByTagName(name: "b"): NodeListOf; getElementsByTagName(name: "base"): NodeListOf; getElementsByTagName(name: "basefont"): NodeListOf; - getElementsByTagName(name: "bdo"): NodeListOf; - getElementsByTagName(name: "big"): NodeListOf; - getElementsByTagName(name: "blockquote"): NodeListOf; + getElementsByTagName(name: "bdo"): NodeListOf; + getElementsByTagName(name: "big"): NodeListOf; + getElementsByTagName(name: "blockquote"): NodeListOf; getElementsByTagName(name: "body"): NodeListOf; getElementsByTagName(name: "br"): NodeListOf; getElementsByTagName(name: "button"): NodeListOf; getElementsByTagName(name: "canvas"): NodeListOf; getElementsByTagName(name: "caption"): NodeListOf; - getElementsByTagName(name: "center"): NodeListOf; + getElementsByTagName(name: "center"): NodeListOf; getElementsByTagName(name: "circle"): NodeListOf; - getElementsByTagName(name: "cite"): NodeListOf; + getElementsByTagName(name: "cite"): NodeListOf; getElementsByTagName(name: "clippath"): NodeListOf; - getElementsByTagName(name: "code"): NodeListOf; + getElementsByTagName(name: "code"): NodeListOf; getElementsByTagName(name: "col"): NodeListOf; getElementsByTagName(name: "colgroup"): NodeListOf; getElementsByTagName(name: "datalist"): NodeListOf; - getElementsByTagName(name: "dd"): NodeListOf; + getElementsByTagName(name: "dd"): NodeListOf; getElementsByTagName(name: "defs"): NodeListOf; getElementsByTagName(name: "del"): NodeListOf; getElementsByTagName(name: "desc"): NodeListOf; - getElementsByTagName(name: "dfn"): NodeListOf; + getElementsByTagName(name: "dfn"): NodeListOf; getElementsByTagName(name: "dir"): NodeListOf; getElementsByTagName(name: "div"): NodeListOf; getElementsByTagName(name: "dl"): NodeListOf; - getElementsByTagName(name: "dt"): NodeListOf; + getElementsByTagName(name: "dt"): NodeListOf; getElementsByTagName(name: "ellipse"): NodeListOf; - getElementsByTagName(name: "em"): NodeListOf; + getElementsByTagName(name: "em"): NodeListOf; getElementsByTagName(name: "embed"): NodeListOf; getElementsByTagName(name: "feblend"): NodeListOf; getElementsByTagName(name: "fecolormatrix"): NodeListOf; @@ -2872,22 +3555,22 @@ interface Element extends Node, GlobalEventHandlers, ElementTraversal, NodeSelec getElementsByTagName(name: "hgroup"): NodeListOf; getElementsByTagName(name: "hr"): NodeListOf; getElementsByTagName(name: "html"): NodeListOf; - getElementsByTagName(name: "i"): NodeListOf; + getElementsByTagName(name: "i"): NodeListOf; getElementsByTagName(name: "iframe"): NodeListOf; getElementsByTagName(name: "image"): NodeListOf; getElementsByTagName(name: "img"): NodeListOf; getElementsByTagName(name: "input"): NodeListOf; getElementsByTagName(name: "ins"): NodeListOf; - getElementsByTagName(name: "isindex"): NodeListOf; - getElementsByTagName(name: "kbd"): NodeListOf; - getElementsByTagName(name: "keygen"): NodeListOf; + getElementsByTagName(name: "isindex"): NodeListOf; + getElementsByTagName(name: "kbd"): NodeListOf; + getElementsByTagName(name: "keygen"): NodeListOf; getElementsByTagName(name: "label"): NodeListOf; getElementsByTagName(name: "legend"): NodeListOf; getElementsByTagName(name: "li"): NodeListOf; getElementsByTagName(name: "line"): NodeListOf; getElementsByTagName(name: "lineargradient"): NodeListOf; getElementsByTagName(name: "link"): NodeListOf; - getElementsByTagName(name: "listing"): NodeListOf; + getElementsByTagName(name: "listing"): NodeListOf; getElementsByTagName(name: "map"): NodeListOf; getElementsByTagName(name: "mark"): NodeListOf; getElementsByTagName(name: "marker"): NodeListOf; @@ -2896,9 +3579,10 @@ interface Element extends Node, GlobalEventHandlers, ElementTraversal, NodeSelec getElementsByTagName(name: "menu"): NodeListOf; getElementsByTagName(name: "meta"): NodeListOf; getElementsByTagName(name: "metadata"): NodeListOf; + getElementsByTagName(name: "meter"): NodeListOf; getElementsByTagName(name: "nav"): NodeListOf; - getElementsByTagName(name: "nextid"): NodeListOf; - getElementsByTagName(name: "nobr"): NodeListOf; + getElementsByTagName(name: "nextid"): NodeListOf; + getElementsByTagName(name: "nobr"): NodeListOf; getElementsByTagName(name: "noframes"): NodeListOf; getElementsByTagName(name: "noscript"): NodeListOf; getElementsByTagName(name: "object"): NodeListOf; @@ -2909,7 +3593,8 @@ interface Element extends Node, GlobalEventHandlers, ElementTraversal, NodeSelec getElementsByTagName(name: "param"): NodeListOf; getElementsByTagName(name: "path"): NodeListOf; getElementsByTagName(name: "pattern"): NodeListOf; - getElementsByTagName(name: "plaintext"): NodeListOf; + getElementsByTagName(name: "picture"): NodeListOf; + getElementsByTagName(name: "plaintext"): NodeListOf; getElementsByTagName(name: "polygon"): NodeListOf; getElementsByTagName(name: "polyline"): NodeListOf; getElementsByTagName(name: "pre"): NodeListOf; @@ -2917,28 +3602,29 @@ interface Element extends Node, GlobalEventHandlers, ElementTraversal, NodeSelec getElementsByTagName(name: "q"): NodeListOf; getElementsByTagName(name: "radialgradient"): NodeListOf; getElementsByTagName(name: "rect"): NodeListOf; - getElementsByTagName(name: "rt"): NodeListOf; - getElementsByTagName(name: "ruby"): NodeListOf; - getElementsByTagName(name: "s"): NodeListOf; - getElementsByTagName(name: "samp"): NodeListOf; + getElementsByTagName(name: "rt"): NodeListOf; + getElementsByTagName(name: "ruby"): NodeListOf; + getElementsByTagName(name: "s"): NodeListOf; + getElementsByTagName(name: "samp"): NodeListOf; getElementsByTagName(name: "script"): NodeListOf; getElementsByTagName(name: "section"): NodeListOf; getElementsByTagName(name: "select"): NodeListOf; - getElementsByTagName(name: "small"): NodeListOf; + getElementsByTagName(name: "small"): NodeListOf; getElementsByTagName(name: "source"): NodeListOf; getElementsByTagName(name: "span"): NodeListOf; getElementsByTagName(name: "stop"): NodeListOf; - getElementsByTagName(name: "strike"): NodeListOf; - getElementsByTagName(name: "strong"): NodeListOf; + getElementsByTagName(name: "strike"): NodeListOf; + getElementsByTagName(name: "strong"): NodeListOf; getElementsByTagName(name: "style"): NodeListOf; - getElementsByTagName(name: "sub"): NodeListOf; - getElementsByTagName(name: "sup"): NodeListOf; + getElementsByTagName(name: "sub"): NodeListOf; + getElementsByTagName(name: "sup"): NodeListOf; getElementsByTagName(name: "svg"): NodeListOf; getElementsByTagName(name: "switch"): NodeListOf; getElementsByTagName(name: "symbol"): NodeListOf; getElementsByTagName(name: "table"): NodeListOf; getElementsByTagName(name: "tbody"): NodeListOf; getElementsByTagName(name: "td"): NodeListOf; + getElementsByTagName(name: "template"): NodeListOf; getElementsByTagName(name: "text"): NodeListOf; getElementsByTagName(name: "textpath"): NodeListOf; getElementsByTagName(name: "textarea"): NodeListOf; @@ -2949,18 +3635,20 @@ interface Element extends Node, GlobalEventHandlers, ElementTraversal, NodeSelec getElementsByTagName(name: "tr"): NodeListOf; getElementsByTagName(name: "track"): NodeListOf; getElementsByTagName(name: "tspan"): NodeListOf; - getElementsByTagName(name: "tt"): NodeListOf; - getElementsByTagName(name: "u"): NodeListOf; + getElementsByTagName(name: "tt"): NodeListOf; + getElementsByTagName(name: "u"): NodeListOf; getElementsByTagName(name: "ul"): NodeListOf; getElementsByTagName(name: "use"): NodeListOf; - getElementsByTagName(name: "var"): NodeListOf; + getElementsByTagName(name: "var"): NodeListOf; getElementsByTagName(name: "video"): NodeListOf; getElementsByTagName(name: "view"): NodeListOf; getElementsByTagName(name: "wbr"): NodeListOf; getElementsByTagName(name: "x-ms-webview"): NodeListOf; - getElementsByTagName(name: "xmp"): NodeListOf; + getElementsByTagName(name: "xmp"): NodeListOf; getElementsByTagName(name: string): NodeListOf; - getElementsByTagNameNS(namespaceURI: string, localName: string): NodeListOf; + getElementsByTagNameNS(namespaceURI: "http://www.w3.org/1999/xhtml", localName: string): HTMLCollectionOf; + getElementsByTagNameNS(namespaceURI: "http://www.w3.org/2000/svg", localName: string): HTMLCollectionOf; + getElementsByTagNameNS(namespaceURI: string, localName: string): HTMLCollectionOf; hasAttribute(name: string): boolean; hasAttributeNS(namespaceURI: string, localName: string): boolean; msGetRegionContent(): MSRangeCollection; @@ -2985,7 +3673,6 @@ interface Element extends Node, GlobalEventHandlers, ElementTraversal, NodeSelec webkitRequestFullscreen(): void; getElementsByClassName(classNames: string): NodeListOf; matches(selector: string): boolean; - getElementsByTagName(tagname: "picture"): NodeListOf; addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; addEventListener(type: "MSGestureDoubleTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; addEventListener(type: "MSGestureEnd", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; @@ -3031,11 +3718,11 @@ declare var Element: { } interface ErrorEvent extends Event { - colno: number; - error: any; - filename: string; - lineno: number; - message: string; + readonly colno: number; + readonly error: any; + readonly filename: string; + readonly lineno: number; + readonly message: string; initErrorEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, messageArg: string, filenameArg: string, linenoArg: number): void; } @@ -3045,39 +3732,39 @@ declare var ErrorEvent: { } interface Event { - bubbles: boolean; + readonly bubbles: boolean; cancelBubble: boolean; - cancelable: boolean; - currentTarget: EventTarget; - defaultPrevented: boolean; - eventPhase: number; - isTrusted: boolean; + readonly cancelable: boolean; + readonly currentTarget: EventTarget; + readonly defaultPrevented: boolean; + readonly eventPhase: number; + readonly isTrusted: boolean; returnValue: boolean; - srcElement: Element; - target: EventTarget; - timeStamp: number; - type: string; + readonly srcElement: Element | null; + readonly target: EventTarget; + readonly timeStamp: number; + readonly type: string; initEvent(eventTypeArg: string, canBubbleArg: boolean, cancelableArg: boolean): void; preventDefault(): void; stopImmediatePropagation(): void; stopPropagation(): void; - AT_TARGET: number; - BUBBLING_PHASE: number; - CAPTURING_PHASE: number; + readonly AT_TARGET: number; + readonly BUBBLING_PHASE: number; + readonly CAPTURING_PHASE: number; } declare var Event: { prototype: Event; new(type: string, eventInitDict?: EventInit): Event; - AT_TARGET: number; - BUBBLING_PHASE: number; - CAPTURING_PHASE: number; + readonly AT_TARGET: number; + readonly BUBBLING_PHASE: number; + readonly CAPTURING_PHASE: number; } interface EventTarget { - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; + addEventListener(type: string, listener?: EventListenerOrEventListenerObject, useCapture?: boolean): void; dispatchEvent(evt: Event): boolean; - removeEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; + removeEventListener(type: string, listener?: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var EventTarget: { @@ -3094,8 +3781,9 @@ declare var External: { } interface File extends Blob { - lastModifiedDate: any; - name: string; + readonly lastModifiedDate: any; + readonly name: string; + readonly webkitRelativePath: string; } declare var File: { @@ -3104,7 +3792,7 @@ declare var File: { } interface FileList { - length: number; + readonly length: number; item(index: number): File; [index: number]: File; } @@ -3115,7 +3803,7 @@ declare var FileList: { } interface FileReader extends EventTarget, MSBaseReader { - error: DOMError; + readonly error: DOMError; readAsArrayBuffer(blob: Blob): void; readAsBinaryString(blob: Blob): void; readAsDataURL(blob: Blob): void; @@ -3129,7 +3817,7 @@ declare var FileReader: { } interface FocusEvent extends UIEvent { - relatedTarget: EventTarget; + readonly relatedTarget: EventTarget; initFocusEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, relatedTargetArg: EventTarget): void; } @@ -3148,7 +3836,7 @@ declare var FormData: { } interface GainNode extends AudioNode { - gain: AudioParam; + readonly gain: AudioParam; } declare var GainNode: { @@ -3157,13 +3845,13 @@ declare var GainNode: { } interface Gamepad { - axes: number[]; - buttons: GamepadButton[]; - connected: boolean; - id: string; - index: number; - mapping: string; - timestamp: number; + readonly axes: number[]; + readonly buttons: GamepadButton[]; + readonly connected: boolean; + readonly id: string; + readonly index: number; + readonly mapping: string; + readonly timestamp: number; } declare var Gamepad: { @@ -3172,8 +3860,8 @@ declare var Gamepad: { } interface GamepadButton { - pressed: boolean; - value: number; + readonly pressed: boolean; + readonly value: number; } declare var GamepadButton: { @@ -3182,7 +3870,7 @@ declare var GamepadButton: { } interface GamepadEvent extends Event { - gamepad: Gamepad; + readonly gamepad: Gamepad; } declare var GamepadEvent: { @@ -3220,6 +3908,7 @@ interface HTMLAnchorElement extends HTMLElement { * Sets or retrieves the coordinates of the object. */ coords: string; + download: string; /** * Contains the anchor portion of the URL including the hash sign (#). */ @@ -3240,12 +3929,12 @@ interface HTMLAnchorElement extends HTMLElement { * Sets or retrieves the language code of the object. */ hreflang: string; - mimeType: string; + readonly mimeType: string; /** * Sets or retrieves the shape of the object. */ name: string; - nameProp: string; + readonly nameProp: string; /** * Contains the pathname of the URL. */ @@ -3258,7 +3947,7 @@ interface HTMLAnchorElement extends HTMLElement { * Contains the protocol of the URL. */ protocol: string; - protocolLong: string; + readonly protocolLong: string; /** * Sets or retrieves the relationship between the object and the destination of the link. */ @@ -3300,7 +3989,7 @@ interface HTMLAppletElement extends HTMLElement { /** * Retrieves a string of the URL where the object tag can be found. This is often the href of the document that the object is in, or the value set by a base element. */ - BaseHref: string; + readonly BaseHref: string; align: string; /** * Sets or retrieves a text alternative to the graphic. @@ -3327,7 +4016,7 @@ interface HTMLAppletElement extends HTMLElement { /** * Address of a pointer to the document this page or frame contains. If there is no document, then null will be returned. */ - contentDocument: Document; + readonly contentDocument: Document; /** * Sets or retrieves the URL that references the data of the object. */ @@ -3336,7 +4025,7 @@ interface HTMLAppletElement extends HTMLElement { * Sets or retrieves a character string that can be used to implement your own declare functionality for the object. */ declare: boolean; - form: HTMLFormElement; + readonly form: HTMLFormElement; /** * Sets or retrieves the height of the object. */ @@ -3346,7 +4035,7 @@ interface HTMLAppletElement extends HTMLElement { * Sets or retrieves the shape of the object. */ name: string; - object: string; + object: string | null; /** * Sets or retrieves a message to be displayed while an object is loading. */ @@ -3377,6 +4066,7 @@ interface HTMLAreaElement extends HTMLElement { * Sets or retrieves the coordinates of the object. */ coords: string; + download: string; /** * Sets or retrieves the subsection of the href property that follows the number sign (#). */ @@ -3502,23 +4192,6 @@ declare var HTMLBaseFontElement: { new(): HTMLBaseFontElement; } -interface HTMLBlockElement extends HTMLElement { - /** - * Sets or retrieves reference information about the object. - */ - cite: string; - clear: string; - /** - * Sets or retrieves the width of the object. - */ - width: number; -} - -declare var HTMLBlockElement: { - prototype: HTMLBlockElement; - new(): HTMLBlockElement; -} - interface HTMLBodyElement extends HTMLElement { aLink: any; background: string; @@ -3546,7 +4219,6 @@ interface HTMLBodyElement extends HTMLElement { onunload: (ev: Event) => any; text: any; vLink: any; - createTextRange(): TextRange; addEventListener(type: "MSContentZoom", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; addEventListener(type: "MSGestureDoubleTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; @@ -3571,10 +4243,10 @@ interface HTMLBodyElement extends HTMLElement { addEventListener(type: "afterprint", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecopy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecopy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforedeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforepaste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforepaste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforeprint", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "beforeunload", listener: (ev: BeforeUnloadEvent) => any, useCapture?: boolean): void; addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; @@ -3585,9 +4257,9 @@ interface HTMLBodyElement extends HTMLElement { addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void; addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "copy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "copy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "cuechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "cut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "cut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "deactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void; @@ -3599,7 +4271,7 @@ interface HTMLBodyElement extends HTMLElement { addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "ended", listener: (ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; @@ -3607,6 +4279,7 @@ interface HTMLBodyElement extends HTMLElement { addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; addEventListener(type: "hashchange", listener: (ev: HashChangeEvent) => any, useCapture?: boolean): void; addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "invalid", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; @@ -3624,13 +4297,13 @@ interface HTMLBodyElement extends HTMLElement { addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousewheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; addEventListener(type: "offline", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "online", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "orientationchange", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "pagehide", listener: (ev: PageTransitionEvent) => any, useCapture?: boolean): void; addEventListener(type: "pageshow", listener: (ev: PageTransitionEvent) => any, useCapture?: boolean): void; - addEventListener(type: "paste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "paste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -3684,7 +4357,7 @@ interface HTMLButtonElement extends HTMLElement { /** * Retrieves a reference to the form that the object is embedded in. */ - form: HTMLFormElement; + readonly form: HTMLFormElement; /** * Overrides the action attribute (where the data on a form is sent) on the parent form element. */ @@ -3717,11 +4390,11 @@ interface HTMLButtonElement extends HTMLElement { /** * Returns the error message that would be displayed if the user submits the form, or an empty string if no error message. It also triggers the standard error message, such as "this is a required field". The result is that the user sees validation messages without actually submitting. */ - validationMessage: string; + readonly validationMessage: string; /** * Returns a ValidityState object that represents the validity states of an element. */ - validity: ValidityState; + readonly validity: ValidityState; /** * Sets or retrieves the default or selected value of the control. */ @@ -3729,15 +4402,11 @@ interface HTMLButtonElement extends HTMLElement { /** * Returns whether an element will successfully validate based on forms validation rules and constraints. */ - willValidate: boolean; + readonly willValidate: boolean; /** * Returns whether a form will validate when it is submitted, without having to submit it. */ checkValidity(): boolean; - /** - * Creates a TextRange object for the element. - */ - createTextRange(): TextRange; /** * Sets a custom error message that is displayed when a form is submitted. * @param error Sets a custom error message that is displayed when a form is submitted. @@ -3787,11 +4456,11 @@ interface HTMLCollection { /** * Sets or retrieves the number of objects in a collection. */ - length: number; + readonly length: number; /** * Retrieves an object from various collections. */ - item(nameOrIndex?: any, optionalIndex?: any): Element; + item(index: number): Element; /** * Retrieves a select object or an object from an options collection. */ @@ -3804,18 +4473,6 @@ declare var HTMLCollection: { new(): HTMLCollection; } -interface HTMLDDElement extends HTMLElement { - /** - * Sets or retrieves whether the browser automatically performs wordwrap. - */ - noWrap: boolean; -} - -declare var HTMLDDElement: { - prototype: HTMLDDElement; - new(): HTMLDDElement; -} - interface HTMLDListElement extends HTMLElement { compact: boolean; } @@ -3825,20 +4482,8 @@ declare var HTMLDListElement: { new(): HTMLDListElement; } -interface HTMLDTElement extends HTMLElement { - /** - * Sets or retrieves whether the browser automatically performs wordwrap. - */ - noWrap: boolean; -} - -declare var HTMLDTElement: { - prototype: HTMLDTElement; - new(): HTMLDTElement; -} - interface HTMLDataListElement extends HTMLElement { - options: HTMLCollection; + options: HTMLCollectionOf; } declare var HTMLDataListElement: { @@ -3881,38 +4526,38 @@ declare var HTMLDocument: { interface HTMLElement extends Element { accessKey: string; - children: HTMLCollection; + readonly children: HTMLCollection; contentEditable: string; - dataset: DOMStringMap; + readonly dataset: DOMStringMap; dir: string; draggable: boolean; hidden: boolean; hideFocus: boolean; innerHTML: string; innerText: string; - isContentEditable: boolean; + readonly isContentEditable: boolean; lang: string; - offsetHeight: number; - offsetLeft: number; - offsetParent: Element; - offsetTop: number; - offsetWidth: number; + readonly offsetHeight: number; + readonly offsetLeft: number; + readonly offsetParent: Element; + readonly offsetTop: number; + readonly offsetWidth: number; onabort: (ev: Event) => any; onactivate: (ev: UIEvent) => any; onbeforeactivate: (ev: UIEvent) => any; - onbeforecopy: (ev: DragEvent) => any; - onbeforecut: (ev: DragEvent) => any; + onbeforecopy: (ev: ClipboardEvent) => any; + onbeforecut: (ev: ClipboardEvent) => any; onbeforedeactivate: (ev: UIEvent) => any; - onbeforepaste: (ev: DragEvent) => any; + onbeforepaste: (ev: ClipboardEvent) => any; onblur: (ev: FocusEvent) => any; oncanplay: (ev: Event) => any; oncanplaythrough: (ev: Event) => any; onchange: (ev: Event) => any; onclick: (ev: MouseEvent) => any; oncontextmenu: (ev: PointerEvent) => any; - oncopy: (ev: DragEvent) => any; + oncopy: (ev: ClipboardEvent) => any; oncuechange: (ev: Event) => any; - oncut: (ev: DragEvent) => any; + oncut: (ev: ClipboardEvent) => any; ondblclick: (ev: MouseEvent) => any; ondeactivate: (ev: UIEvent) => any; ondrag: (ev: DragEvent) => any; @@ -3924,10 +4569,11 @@ interface HTMLElement extends Element { ondrop: (ev: DragEvent) => any; ondurationchange: (ev: Event) => any; onemptied: (ev: Event) => any; - onended: (ev: Event) => any; + onended: (ev: MediaStreamErrorEvent) => any; onerror: (ev: Event) => any; onfocus: (ev: FocusEvent) => any; oninput: (ev: Event) => any; + oninvalid: (ev: Event) => any; onkeydown: (ev: KeyboardEvent) => any; onkeypress: (ev: KeyboardEvent) => any; onkeyup: (ev: KeyboardEvent) => any; @@ -3942,10 +4588,10 @@ interface HTMLElement extends Element { onmouseout: (ev: MouseEvent) => any; onmouseover: (ev: MouseEvent) => any; onmouseup: (ev: MouseEvent) => any; - onmousewheel: (ev: MouseWheelEvent) => any; + onmousewheel: (ev: WheelEvent) => any; onmscontentzoom: (ev: UIEvent) => any; onmsmanipulationstatechanged: (ev: MSManipulationEvent) => any; - onpaste: (ev: DragEvent) => any; + onpaste: (ev: ClipboardEvent) => any; onpause: (ev: Event) => any; onplay: (ev: Event) => any; onplaying: (ev: Event) => any; @@ -3966,7 +4612,7 @@ interface HTMLElement extends Element { outerHTML: string; outerText: string; spellcheck: boolean; - style: CSSStyleDeclaration; + readonly style: CSSStyleDeclaration; tabIndex: number; title: string; blur(): void; @@ -4002,10 +4648,10 @@ interface HTMLElement extends Element { addEventListener(type: "activate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecopy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecopy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforedeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforepaste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforepaste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; addEventListener(type: "canplay", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "canplaythrough", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -4013,9 +4659,9 @@ interface HTMLElement extends Element { addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void; addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "copy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "copy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "cuechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "cut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "cut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "deactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void; @@ -4027,11 +4673,12 @@ interface HTMLElement extends Element { addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "ended", listener: (ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "invalid", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; @@ -4047,8 +4694,8 @@ interface HTMLElement extends Element { addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; - addEventListener(type: "paste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousewheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; + addEventListener(type: "paste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -4110,7 +4757,7 @@ interface HTMLEmbedElement extends HTMLElement, GetSVGDocument { /** * Gets the source associated with the media element for use by the PlayToManager. */ - msPlayToSource: any; + readonly msPlayToSource: any; /** * Sets or retrieves the name of the object. */ @@ -4118,12 +4765,12 @@ interface HTMLEmbedElement extends HTMLElement, GetSVGDocument { /** * Retrieves the palette used for the embedded document. */ - palette: string; + readonly palette: string; /** * Retrieves the URL of the plug-in used to view an embedded document. */ - pluginspage: string; - readyState: string; + readonly pluginspage: string; + readonly readyState: string; /** * Sets or retrieves a URL to be loaded by the object. */ @@ -4153,19 +4800,19 @@ interface HTMLFieldSetElement extends HTMLElement { /** * Retrieves a reference to the form that the object is embedded in. */ - form: HTMLFormElement; + readonly form: HTMLFormElement; /** * Returns the error message that would be displayed if the user submits the form, or an empty string if no error message. It also triggers the standard error message, such as "this is a required field". The result is that the user sees validation messages without actually submitting. */ - validationMessage: string; + readonly validationMessage: string; /** * Returns a ValidityState object that represents the validity states of an element. */ - validity: ValidityState; + readonly validity: ValidityState; /** * Returns whether an element will successfully validate based on forms validation rules and constraints. */ - willValidate: boolean; + readonly willValidate: boolean; /** * Returns whether a form will validate when it is submitted, without having to submit it. */ @@ -4211,7 +4858,7 @@ interface HTMLFormElement extends HTMLElement { /** * Retrieves a collection, in source order, of all controls in a given form. */ - elements: HTMLCollection; + readonly elements: HTMLCollection; /** * Sets or retrieves the MIME encoding for the form. */ @@ -4223,7 +4870,7 @@ interface HTMLFormElement extends HTMLElement { /** * Sets or retrieves the number of objects in a collection. */ - length: number; + readonly length: number; /** * Sets or retrieves how to send the form data to the server. */ @@ -4282,11 +4929,11 @@ interface HTMLFrameElement extends HTMLElement, GetSVGDocument { /** * Retrieves the document object of the page or frame. */ - contentDocument: Document; + readonly contentDocument: Document; /** * Retrieves the object of the specified. */ - contentWindow: Window; + readonly contentWindow: Window; /** * Sets or retrieves whether to display a border for the frame. */ @@ -4327,10 +4974,6 @@ interface HTMLFrameElement extends HTMLElement, GetSVGDocument { * Sets or retrieves whether the frame can be scrolled. */ scrolling: string; - /** - * Sets the value indicating whether the source file of a frame or iframe has specific security restrictions applied. - */ - security: any; /** * Sets or retrieves a URL to be loaded by the object. */ @@ -4362,10 +5005,10 @@ interface HTMLFrameElement extends HTMLElement, GetSVGDocument { addEventListener(type: "activate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecopy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecopy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforedeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforepaste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforepaste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; addEventListener(type: "canplay", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "canplaythrough", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -4373,9 +5016,9 @@ interface HTMLFrameElement extends HTMLElement, GetSVGDocument { addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void; addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "copy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "copy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "cuechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "cut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "cut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "deactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void; @@ -4387,11 +5030,12 @@ interface HTMLFrameElement extends HTMLElement, GetSVGDocument { addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "ended", listener: (ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "invalid", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; @@ -4408,8 +5052,8 @@ interface HTMLFrameElement extends HTMLElement, GetSVGDocument { addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; - addEventListener(type: "paste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousewheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; + addEventListener(type: "paste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -4519,10 +5163,10 @@ interface HTMLFrameSetElement extends HTMLElement { addEventListener(type: "activate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecopy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecopy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforedeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforepaste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforepaste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforeprint", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "beforeunload", listener: (ev: BeforeUnloadEvent) => any, useCapture?: boolean): void; addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; @@ -4533,9 +5177,9 @@ interface HTMLFrameSetElement extends HTMLElement { addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void; addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "copy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "copy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "cuechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "cut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "cut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "deactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void; @@ -4547,7 +5191,7 @@ interface HTMLFrameSetElement extends HTMLElement { addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "ended", listener: (ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; @@ -4555,6 +5199,7 @@ interface HTMLFrameSetElement extends HTMLElement { addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; addEventListener(type: "hashchange", listener: (ev: HashChangeEvent) => any, useCapture?: boolean): void; addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "invalid", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; @@ -4572,13 +5217,13 @@ interface HTMLFrameSetElement extends HTMLElement { addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousewheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; addEventListener(type: "offline", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "online", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "orientationchange", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "pagehide", listener: (ev: PageTransitionEvent) => any, useCapture?: boolean): void; addEventListener(type: "pageshow", listener: (ev: PageTransitionEvent) => any, useCapture?: boolean): void; - addEventListener(type: "paste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "paste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -4657,7 +5302,6 @@ interface HTMLHeadingElement extends HTMLElement { * Sets or retrieves a value that indicates the table alignment. */ align: string; - clear: string; } declare var HTMLHeadingElement: { @@ -4690,11 +5334,11 @@ interface HTMLIFrameElement extends HTMLElement, GetSVGDocument { /** * Retrieves the document object of the page or frame. */ - contentDocument: Document; + readonly contentDocument: Document; /** * Retrieves the object of the specified. */ - contentWindow: Window; + readonly contentWindow: Window; /** * Sets or retrieves whether to display a border for the frame. */ @@ -4735,15 +5379,11 @@ interface HTMLIFrameElement extends HTMLElement, GetSVGDocument { * Raised when the object has been completely received from the server. */ onload: (ev: Event) => any; - sandbox: DOMSettableTokenList; + readonly sandbox: DOMSettableTokenList; /** * Sets or retrieves whether the frame can be scrolled. */ scrolling: string; - /** - * Sets the value indicating whether the source file of a frame or iframe has specific security restrictions applied. - */ - security: any; /** * Sets or retrieves a URL to be loaded by the object. */ @@ -4779,10 +5419,10 @@ interface HTMLIFrameElement extends HTMLElement, GetSVGDocument { addEventListener(type: "activate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecopy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecopy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforedeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforepaste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforepaste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; addEventListener(type: "canplay", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "canplaythrough", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -4790,9 +5430,9 @@ interface HTMLIFrameElement extends HTMLElement, GetSVGDocument { addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void; addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "copy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "copy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "cuechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "cut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "cut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "deactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void; @@ -4804,11 +5444,12 @@ interface HTMLIFrameElement extends HTMLElement, GetSVGDocument { addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "ended", listener: (ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "invalid", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; @@ -4825,8 +5466,8 @@ interface HTMLIFrameElement extends HTMLElement, GetSVGDocument { addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; - addEventListener(type: "paste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousewheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; + addEventListener(type: "paste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -4883,9 +5524,9 @@ interface HTMLImageElement extends HTMLElement { /** * Retrieves whether the object is fully loaded. */ - complete: boolean; + readonly complete: boolean; crossOrigin: string; - currentSrc: string; + readonly currentSrc: string; /** * Sets or retrieves the height of the object. */ @@ -4902,6 +5543,7 @@ interface HTMLImageElement extends HTMLElement { * Sets or retrieves a Uniform Resource Identifier (URI) to a long description of the object. */ longDesc: string; + lowsrc: string; /** * Gets or sets whether the DLNA PlayTo device is available. */ @@ -4914,7 +5556,7 @@ interface HTMLImageElement extends HTMLElement { /** * Gets the source associated with the media element for use by the PlayToManager. */ - msPlayToSource: any; + readonly msPlayToSource: any; /** * Sets or retrieves the name of the object. */ @@ -4922,11 +5564,12 @@ interface HTMLImageElement extends HTMLElement { /** * The original height of the image resource before sizing. */ - naturalHeight: number; + readonly naturalHeight: number; /** * The original width of the image resource before sizing. */ - naturalWidth: number; + readonly naturalWidth: number; + sizes: string; /** * The address or URL of the a media resource that is to be considered. */ @@ -4944,8 +5587,8 @@ interface HTMLImageElement extends HTMLElement { * Sets or retrieves the width of the object. */ width: number; - x: number; - y: number; + readonly x: number; + readonly y: number; msGetAsCastingSource(): any; } @@ -4987,7 +5630,7 @@ interface HTMLInputElement extends HTMLElement { /** * Retrieves whether the object is fully loaded. */ - complete: boolean; + readonly complete: boolean; /** * Sets or retrieves the state of the check box or radio button. */ @@ -5000,11 +5643,11 @@ interface HTMLInputElement extends HTMLElement { /** * Returns a FileList object on a file type input object. */ - files: FileList; + readonly files: FileList; /** * Retrieves a reference to the form that the object is embedded in. */ - form: HTMLFormElement; + readonly form: HTMLFormElement; /** * Overrides the action attribute (where the data on a form is sent) on the parent form element. */ @@ -5037,7 +5680,7 @@ interface HTMLInputElement extends HTMLElement { /** * Specifies the ID of a pre-defined datalist of options for an input element. */ - list: HTMLElement; + readonly list: HTMLElement; /** * Defines the maximum acceptable value for an input element with type="number".When used with the min and step attributes, lets you control the range and increment (such as only even numbers) that the user can enter into an input field. */ @@ -5071,6 +5714,7 @@ interface HTMLInputElement extends HTMLElement { * When present, marks an element that can't be submitted without a value. */ required: boolean; + selectionDirection: string; /** * Gets or sets the end position or offset of a text selection. */ @@ -5100,11 +5744,11 @@ interface HTMLInputElement extends HTMLElement { /** * Returns the error message that would be displayed if the user submits the form, or an empty string if no error message. It also triggers the standard error message, such as "this is a required field". The result is that the user sees validation messages without actually submitting. */ - validationMessage: string; + readonly validationMessage: string; /** * Returns a ValidityState object that represents the validity states of an element. */ - validity: ValidityState; + readonly validity: ValidityState; /** * Returns the value of the data at the cursor's current position. */ @@ -5118,6 +5762,7 @@ interface HTMLInputElement extends HTMLElement { * Sets or retrieves the vertical margin for the object. */ vspace: number; + webkitdirectory: boolean; /** * Sets or retrieves the width of the object. */ @@ -5125,15 +5770,12 @@ interface HTMLInputElement extends HTMLElement { /** * Returns whether an element will successfully validate based on forms validation rules and constraints. */ - willValidate: boolean; + readonly willValidate: boolean; + minLength: number; /** * Returns whether a form will validate when it is submitted, without having to submit it. */ checkValidity(): boolean; - /** - * Creates a TextRange object for the element. - */ - createTextRange(): TextRange; /** * Makes the selection equal to the current object. */ @@ -5148,7 +5790,7 @@ interface HTMLInputElement extends HTMLElement { * @param start The offset into the text field for the start of the selection. * @param end The offset into the text field for the end of the selection. */ - setSelectionRange(start: number, end: number): void; + setSelectionRange(start?: number, end?: number, direction?: string): void; /** * Decrements a range input control's value by the value given by the Step attribute. If the optional parameter is used, it will decrement the input control's step value multiplied by the parameter's value. * @param n Value to decrement the value by. @@ -5166,23 +5808,6 @@ declare var HTMLInputElement: { new(): HTMLInputElement; } -interface HTMLIsIndexElement extends HTMLElement { - /** - * Sets or retrieves the URL to which the form content is sent for processing. - */ - action: string; - /** - * Retrieves a reference to the form that the object is embedded in. - */ - form: HTMLFormElement; - prompt: string; -} - -declare var HTMLIsIndexElement: { - prototype: HTMLIsIndexElement; - new(): HTMLIsIndexElement; -} - interface HTMLLIElement extends HTMLElement { type: string; /** @@ -5200,7 +5825,7 @@ interface HTMLLabelElement extends HTMLElement { /** * Retrieves a reference to the form that the object is embedded in. */ - form: HTMLFormElement; + readonly form: HTMLFormElement; /** * Sets or retrieves the object to which the given label object is assigned. */ @@ -5220,7 +5845,7 @@ interface HTMLLegendElement extends HTMLElement { /** * Retrieves a reference to the form that the object is embedded in. */ - form: HTMLFormElement; + readonly form: HTMLFormElement; } declare var HTMLLegendElement: { @@ -5262,6 +5887,7 @@ interface HTMLLinkElement extends HTMLElement, LinkStyle { * Sets or retrieves the MIME type of the object. */ type: string; + import?: Document; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -5274,7 +5900,7 @@ interface HTMLMapElement extends HTMLElement { /** * Retrieves a collection of the area objects defined for the given map object. */ - areas: HTMLAreasCollection; + readonly areas: HTMLAreasCollection; /** * Sets or retrieves the name of the object. */ @@ -5326,10 +5952,10 @@ interface HTMLMarqueeElement extends HTMLElement { addEventListener(type: "activate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecopy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecopy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforedeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforepaste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforepaste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; addEventListener(type: "bounce", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "canplay", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -5338,9 +5964,9 @@ interface HTMLMarqueeElement extends HTMLElement { addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void; addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "copy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "copy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "cuechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "cut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "cut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "deactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void; @@ -5352,12 +5978,13 @@ interface HTMLMarqueeElement extends HTMLElement { addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "ended", listener: (ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "finish", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "invalid", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; @@ -5373,8 +6000,8 @@ interface HTMLMarqueeElement extends HTMLElement { addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; - addEventListener(type: "paste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousewheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; + addEventListener(type: "paste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -5420,7 +6047,7 @@ interface HTMLMediaElement extends HTMLElement { /** * Returns an AudioTrackList object with the audio tracks for a given video element. */ - audioTracks: AudioTrackList; + readonly audioTracks: AudioTrackList; /** * Gets or sets a value that indicates whether to start playing the media automatically. */ @@ -5428,15 +6055,16 @@ interface HTMLMediaElement extends HTMLElement { /** * Gets a collection of buffered time ranges. */ - buffered: TimeRanges; + readonly buffered: TimeRanges; /** * Gets or sets a flag that indicates whether the client provides a set of controls for the media (in case the developer does not include controls for the player). */ controls: boolean; + crossOrigin: string; /** * Gets the address or URL of the current media resource that is selected by IHTMLMediaElement. */ - currentSrc: string; + readonly currentSrc: string; /** * Gets or sets the current playback position, in seconds. */ @@ -5449,19 +6077,20 @@ interface HTMLMediaElement extends HTMLElement { /** * Returns the duration in seconds of the current media resource. A NaN value is returned if duration is not available, or Infinity if the media resource is streaming. */ - duration: number; + readonly duration: number; /** * Gets information about whether the playback has ended or not. */ - ended: boolean; + readonly ended: boolean; /** * Returns an object representing the current error state of the audio or video element. */ - error: MediaError; + readonly error: MediaError; /** * Gets or sets a flag to specify whether playback should restart after it completes. */ loop: boolean; + readonly mediaKeys: MediaKeys | null; /** * Specifies the purpose of the audio or video media, such as background audio or alerts. */ @@ -5470,11 +6099,11 @@ interface HTMLMediaElement extends HTMLElement { * Specifies the output device id that the audio will be sent to. */ msAudioDeviceType: string; - msGraphicsTrustStatus: MSGraphicsTrust; + readonly msGraphicsTrustStatus: MSGraphicsTrust; /** * Gets the MSMediaKeys object, which is used for decrypting media data, that is associated with this media element. */ - msKeys: MSMediaKeys; + readonly msKeys: MSMediaKeys; /** * Gets or sets whether the DLNA PlayTo device is available. */ @@ -5490,7 +6119,7 @@ interface HTMLMediaElement extends HTMLElement { /** * Gets the source associated with the media element for use by the PlayToManager. */ - msPlayToSource: any; + readonly msPlayToSource: any; /** * Specifies whether or not to enable low-latency playback on the media element. */ @@ -5502,12 +6131,13 @@ interface HTMLMediaElement extends HTMLElement { /** * Gets the current network activity for the element. */ - networkState: number; + readonly networkState: number; + onencrypted: (ev: MediaEncryptedEvent) => any; onmsneedkey: (ev: MSMediaKeyNeededEvent) => any; /** * Gets a flag that specifies whether playback is paused. */ - paused: boolean; + readonly paused: boolean; /** * Gets or sets the current rate of speed for the media resource to play. This speed is expressed as a multiple of the normal speed of the media resource. */ @@ -5515,7 +6145,7 @@ interface HTMLMediaElement extends HTMLElement { /** * Gets TimeRanges for the current media resource that has been played. */ - played: TimeRanges; + readonly played: TimeRanges; /** * Gets or sets the current playback position, in seconds. */ @@ -5524,17 +6154,18 @@ interface HTMLMediaElement extends HTMLElement { /** * Returns a TimeRanges object that represents the ranges of the current media resource that can be seeked. */ - seekable: TimeRanges; + readonly seekable: TimeRanges; /** * Gets a flag that indicates whether the the client is currently moving to a new playback position in the media resource. */ - seeking: boolean; + readonly seeking: boolean; /** * The address or URL of the a media resource that is to be considered. */ src: string; - textTracks: TextTrackList; - videoTracks: VideoTrackList; + srcObject: MediaStream | null; + readonly textTracks: TextTrackList; + readonly videoTracks: VideoTrackList; /** * Gets or sets the volume level for audio portions of the media element. */ @@ -5570,15 +6201,16 @@ interface HTMLMediaElement extends HTMLElement { * Loads and starts playback of a media resource. */ play(): void; - HAVE_CURRENT_DATA: number; - HAVE_ENOUGH_DATA: number; - HAVE_FUTURE_DATA: number; - HAVE_METADATA: number; - HAVE_NOTHING: number; - NETWORK_EMPTY: number; - NETWORK_IDLE: number; - NETWORK_LOADING: number; - NETWORK_NO_SOURCE: number; + setMediaKeys(mediaKeys: MediaKeys | null): PromiseLike; + readonly HAVE_CURRENT_DATA: number; + readonly HAVE_ENOUGH_DATA: number; + readonly HAVE_FUTURE_DATA: number; + readonly HAVE_METADATA: number; + readonly HAVE_NOTHING: number; + readonly NETWORK_EMPTY: number; + readonly NETWORK_IDLE: number; + readonly NETWORK_LOADING: number; + readonly NETWORK_NO_SOURCE: number; addEventListener(type: "MSContentZoom", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; addEventListener(type: "MSGestureDoubleTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; @@ -5602,10 +6234,10 @@ interface HTMLMediaElement extends HTMLElement { addEventListener(type: "activate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecopy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecopy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforedeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforepaste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforepaste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; addEventListener(type: "canplay", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "canplaythrough", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -5613,9 +6245,9 @@ interface HTMLMediaElement extends HTMLElement { addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void; addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "copy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "copy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "cuechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "cut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "cut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "deactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void; @@ -5627,11 +6259,13 @@ interface HTMLMediaElement extends HTMLElement { addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "encrypted", listener: (ev: MediaEncryptedEvent) => any, useCapture?: boolean): void; + addEventListener(type: "ended", listener: (ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "invalid", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; @@ -5647,9 +6281,9 @@ interface HTMLMediaElement extends HTMLElement { addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousewheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; addEventListener(type: "msneedkey", listener: (ev: MSMediaKeyNeededEvent) => any, useCapture?: boolean): void; - addEventListener(type: "paste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "paste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -5688,15 +6322,15 @@ interface HTMLMediaElement extends HTMLElement { declare var HTMLMediaElement: { prototype: HTMLMediaElement; new(): HTMLMediaElement; - HAVE_CURRENT_DATA: number; - HAVE_ENOUGH_DATA: number; - HAVE_FUTURE_DATA: number; - HAVE_METADATA: number; - HAVE_NOTHING: number; - NETWORK_EMPTY: number; - NETWORK_IDLE: number; - NETWORK_LOADING: number; - NETWORK_NO_SOURCE: number; + readonly HAVE_CURRENT_DATA: number; + readonly HAVE_ENOUGH_DATA: number; + readonly HAVE_FUTURE_DATA: number; + readonly HAVE_METADATA: number; + readonly HAVE_NOTHING: number; + readonly NETWORK_EMPTY: number; + readonly NETWORK_IDLE: number; + readonly NETWORK_LOADING: number; + readonly NETWORK_NO_SOURCE: number; } interface HTMLMenuElement extends HTMLElement { @@ -5741,6 +6375,20 @@ declare var HTMLMetaElement: { new(): HTMLMetaElement; } +interface HTMLMeterElement extends HTMLElement { + high: number; + low: number; + max: number; + min: number; + optimum: number; + value: number; +} + +declare var HTMLMeterElement: { + prototype: HTMLMeterElement; + new(): HTMLMeterElement; +} + interface HTMLModElement extends HTMLElement { /** * Sets or retrieves reference information about the object. @@ -5757,15 +6405,6 @@ declare var HTMLModElement: { new(): HTMLModElement; } -interface HTMLNextIdElement extends HTMLElement { - n: string; -} - -declare var HTMLNextIdElement: { - prototype: HTMLNextIdElement; - new(): HTMLNextIdElement; -} - interface HTMLOListElement extends HTMLElement { compact: boolean; /** @@ -5784,7 +6423,7 @@ interface HTMLObjectElement extends HTMLElement, GetSVGDocument { /** * Retrieves a string of the URL where the object tag can be found. This is often the href of the document that the object is in, or the value set by a base element. */ - BaseHref: string; + readonly BaseHref: string; align: string; /** * Sets or retrieves a text alternative to the graphic. @@ -5814,7 +6453,7 @@ interface HTMLObjectElement extends HTMLElement, GetSVGDocument { /** * Retrieves the document object of the page or frame. */ - contentDocument: Document; + readonly contentDocument: Document; /** * Sets or retrieves the URL that references the data of the object. */ @@ -5823,7 +6462,7 @@ interface HTMLObjectElement extends HTMLElement, GetSVGDocument { /** * Retrieves a reference to the form that the object is embedded in. */ - form: HTMLFormElement; + readonly form: HTMLFormElement; /** * Sets or retrieves the height of the object. */ @@ -5844,7 +6483,7 @@ interface HTMLObjectElement extends HTMLElement, GetSVGDocument { /** * Gets the source associated with the media element for use by the PlayToManager. */ - msPlayToSource: any; + readonly msPlayToSource: any; /** * Sets or retrieves the name of the object. */ @@ -5852,8 +6491,8 @@ interface HTMLObjectElement extends HTMLElement, GetSVGDocument { /** * Retrieves the contained object. */ - object: any; - readyState: number; + readonly object: any; + readonly readyState: number; /** * Sets or retrieves a message to be displayed while an object is loading. */ @@ -5869,11 +6508,11 @@ interface HTMLObjectElement extends HTMLElement, GetSVGDocument { /** * Returns the error message that would be displayed if the user submits the form, or an empty string if no error message. It also triggers the standard error message, such as "this is a required field". The result is that the user sees validation messages without actually submitting. */ - validationMessage: string; + readonly validationMessage: string; /** * Returns a ValidityState object that represents the validity states of an element. */ - validity: ValidityState; + readonly validity: ValidityState; vspace: number; /** * Sets or retrieves the width of the object. @@ -5882,7 +6521,7 @@ interface HTMLObjectElement extends HTMLElement, GetSVGDocument { /** * Returns whether an element will successfully validate based on forms validation rules and constraints. */ - willValidate: boolean; + readonly willValidate: boolean; /** * Returns whether a form will validate when it is submitted, without having to submit it. */ @@ -5909,11 +6548,11 @@ interface HTMLOptGroupElement extends HTMLElement { /** * Retrieves a reference to the form that the object is embedded in. */ - form: HTMLFormElement; + readonly form: HTMLFormElement; /** * Sets or retrieves the ordinal position of an option in a list box. */ - index: number; + readonly index: number; /** * Sets or retrieves a value that you can use to implement your own label functionality for the object. */ @@ -5925,7 +6564,7 @@ interface HTMLOptGroupElement extends HTMLElement { /** * Sets or retrieves the text string specified by the option tag. */ - text: string; + readonly text: string; /** * Sets or retrieves the value which is returned to the server when the form control is submitted. */ @@ -5946,11 +6585,11 @@ interface HTMLOptionElement extends HTMLElement { /** * Retrieves a reference to the form that the object is embedded in. */ - form: HTMLFormElement; + readonly form: HTMLFormElement; /** * Sets or retrieves the ordinal position of an option in a list box. */ - index: number; + readonly index: number; /** * Sets or retrieves a value that you can use to implement your own label functionality for the object. */ @@ -5975,6 +6614,18 @@ declare var HTMLOptionElement: { create(): HTMLOptionElement; } +interface HTMLOptionsCollection extends HTMLCollection { + length: number; + selectedIndex: number; + add(element: HTMLOptionElement | HTMLOptGroupElement, before?: HTMLElement | number): void; + remove(index: number): void; +} + +declare var HTMLOptionsCollection: { + prototype: HTMLOptionsCollection; + new(): HTMLOptionsCollection; +} + interface HTMLParagraphElement extends HTMLElement { /** * Sets or retrieves how the object is aligned with adjacent text. @@ -6012,28 +6663,15 @@ declare var HTMLParamElement: { new(): HTMLParamElement; } -interface HTMLPhraseElement extends HTMLElement { - /** - * Sets or retrieves reference information about the object. - */ - cite: string; - /** - * Sets or retrieves the date and time of a modification to the object. - */ - dateTime: string; +interface HTMLPictureElement extends HTMLElement { } -declare var HTMLPhraseElement: { - prototype: HTMLPhraseElement; - new(): HTMLPhraseElement; +declare var HTMLPictureElement: { + prototype: HTMLPictureElement; + new(): HTMLPictureElement; } interface HTMLPreElement extends HTMLElement { - /** - * Indicates a citation by rendering text in italic type. - */ - cite: string; - clear: string; /** * Sets or gets a value that you can use to implement your own width functionality for the object. */ @@ -6049,7 +6687,7 @@ interface HTMLProgressElement extends HTMLElement { /** * Retrieves a reference to the form that the object is embedded in. */ - form: HTMLFormElement; + readonly form: HTMLFormElement; /** * Defines the maximum, or "done" value for a progress element. */ @@ -6057,7 +6695,7 @@ interface HTMLProgressElement extends HTMLElement { /** * Returns the quotient of value/max when the value attribute is set (determinate progress bar), or -1 when the value attribute is missing (indeterminate progress bar). */ - position: number; + readonly position: number; /** * Sets or gets the current value of a progress element. The value must be a non-negative number between 0 and the max value. */ @@ -6074,10 +6712,6 @@ interface HTMLQuoteElement extends HTMLElement { * Sets or retrieves reference information about the object. */ cite: string; - /** - * Sets or retrieves the date and time of a modification to the object. - */ - dateTime: string; } declare var HTMLQuoteElement: { @@ -6131,7 +6765,7 @@ interface HTMLSelectElement extends HTMLElement { /** * Retrieves a reference to the form that the object is embedded in. */ - form: HTMLFormElement; + readonly form: HTMLFormElement; /** * Sets or retrieves the number of objects in a collection. */ @@ -6144,7 +6778,7 @@ interface HTMLSelectElement extends HTMLElement { * Sets or retrieves the name of the object. */ name: string; - options: HTMLCollection; + options: HTMLCollectionOf; /** * When present, marks an element that can't be submitted without a value. */ @@ -6153,6 +6787,7 @@ interface HTMLSelectElement extends HTMLElement { * Sets or retrieves the index of the selected option in a select object. */ selectedIndex: number; + selectedOptions: HTMLCollectionOf; /** * Sets or retrieves the number of rows in the list box. */ @@ -6160,15 +6795,15 @@ interface HTMLSelectElement extends HTMLElement { /** * Retrieves the type of select control based on the value of the MULTIPLE attribute. */ - type: string; + readonly type: string; /** * Returns the error message that would be displayed if the user submits the form, or an empty string if no error message. It also triggers the standard error message, such as "this is a required field". The result is that the user sees validation messages without actually submitting. */ - validationMessage: string; + readonly validationMessage: string; /** * Returns a ValidityState object that represents the validity states of an element. */ - validity: ValidityState; + readonly validity: ValidityState; /** * Sets or retrieves the value which is returned to the server when the form control is submitted. */ @@ -6176,8 +6811,7 @@ interface HTMLSelectElement extends HTMLElement { /** * Returns whether an element will successfully validate based on forms validation rules and constraints. */ - willValidate: boolean; - selectedOptions: HTMLCollection; + readonly willValidate: boolean; /** * Adds an element to the areas, controlRange, or options collection. * @param element Variant of type Number that specifies the index position in the collection where the element is placed. If no value is given, the method places the element at the end of the collection. @@ -6223,10 +6857,12 @@ interface HTMLSourceElement extends HTMLElement { */ media: string; msKeySystem: string; + sizes: string; /** * The address or URL of the a media resource that is to be considered. */ src: string; + srcset: string; /** * Gets or sets the MIME type of a media resource. */ @@ -6247,6 +6883,7 @@ declare var HTMLSpanElement: { } interface HTMLStyleElement extends HTMLElement, LinkStyle { + disabled: boolean; /** * Sets or retrieves the media type. */ @@ -6296,7 +6933,7 @@ interface HTMLTableCellElement extends HTMLElement, HTMLTableAlignment { /** * Retrieves the position of the object in the cells collection of a row. */ - cellIndex: number; + readonly cellIndex: number; /** * Sets or retrieves the number columns in the table that the object should span. */ @@ -6403,7 +7040,7 @@ interface HTMLTableElement extends HTMLElement { /** * Sets or retrieves the number of horizontal rows contained in the object. */ - rows: HTMLCollection; + rows: HTMLCollectionOf; /** * Sets or retrieves which dividing lines (inner borders) are displayed. */ @@ -6415,7 +7052,7 @@ interface HTMLTableElement extends HTMLElement { /** * Retrieves a collection of all tBody objects in the table. Objects in this collection are in source order. */ - tBodies: HTMLCollection; + tBodies: HTMLCollectionOf; /** * Retrieves the tFoot object of the table. */ @@ -6494,7 +7131,7 @@ interface HTMLTableRowElement extends HTMLElement, HTMLTableAlignment { /** * Retrieves a collection of all cells in the table row. */ - cells: HTMLCollection; + cells: HTMLCollectionOf; /** * Sets or retrieves the height of the object. */ @@ -6502,11 +7139,11 @@ interface HTMLTableRowElement extends HTMLElement, HTMLTableAlignment { /** * Retrieves the position of the object in the rows collection for the table. */ - rowIndex: number; + readonly rowIndex: number; /** * Retrieves the position of the object in the collection. */ - sectionRowIndex: number; + readonly sectionRowIndex: number; /** * Removes the specified cell from the table row, as well as from the cells collection. * @param index Number that specifies the zero-based position of the cell to remove from the table row. If no value is provided, the last cell in the cells collection is deleted. @@ -6516,7 +7153,7 @@ interface HTMLTableRowElement extends HTMLElement, HTMLTableAlignment { * Creates a new cell in the table row, and adds the cell to the cells collection. * @param index Number that specifies where to insert the cell in the tr. The default value is -1, which appends the new cell to the end of the cells collection. */ - insertCell(index?: number): HTMLTableCellElement; + insertCell(index?: number): HTMLTableDataCellElement; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -6533,7 +7170,7 @@ interface HTMLTableSectionElement extends HTMLElement, HTMLTableAlignment { /** * Sets or retrieves the number of horizontal rows contained in the object. */ - rows: HTMLCollection; + rows: HTMLCollectionOf; /** * Removes the specified row (tr) from the element and from the rows collection. * @param index Number that specifies the zero-based position in the rows collection of the row to remove. @@ -6552,6 +7189,15 @@ declare var HTMLTableSectionElement: { new(): HTMLTableSectionElement; } +interface HTMLTemplateElement extends HTMLElement { + readonly content: DocumentFragment; +} + +declare var HTMLTemplateElement: { + prototype: HTMLTemplateElement; + new(): HTMLTemplateElement; +} + interface HTMLTextAreaElement extends HTMLElement { /** * Provides a way to direct a user to a specific field when a document loads. This can provide both direction and convenience for a user, reducing the need to click or tab to a field when a page opens. This attribute is true when present on an element, and false when missing. @@ -6569,7 +7215,7 @@ interface HTMLTextAreaElement extends HTMLElement { /** * Retrieves a reference to the form that the object is embedded in. */ - form: HTMLFormElement; + readonly form: HTMLFormElement; /** * Sets or retrieves the maximum number of characters that the user can enter in a text control. */ @@ -6609,15 +7255,15 @@ interface HTMLTextAreaElement extends HTMLElement { /** * Retrieves the type of control. */ - type: string; + readonly type: string; /** * Returns the error message that would be displayed if the user submits the form, or an empty string if no error message. It also triggers the standard error message, such as "this is a required field". The result is that the user sees validation messages without actually submitting. */ - validationMessage: string; + readonly validationMessage: string; /** * Returns a ValidityState object that represents the validity states of an element. */ - validity: ValidityState; + readonly validity: ValidityState; /** * Retrieves or sets the text in the entry field of the textArea element. */ @@ -6625,19 +7271,16 @@ interface HTMLTextAreaElement extends HTMLElement { /** * Returns whether an element will successfully validate based on forms validation rules and constraints. */ - willValidate: boolean; + readonly willValidate: boolean; /** * Sets or retrieves how to handle wordwrapping in the object. */ wrap: string; + minLength: number; /** * Returns whether a form will validate when it is submitted, without having to submit it. */ checkValidity(): boolean; - /** - * Creates a TextRange object for the element. - */ - createTextRange(): TextRange; /** * Highlights the input area of a form element. */ @@ -6676,23 +7319,23 @@ interface HTMLTrackElement extends HTMLElement { default: boolean; kind: string; label: string; - readyState: number; + readonly readyState: number; src: string; srclang: string; - track: TextTrack; - ERROR: number; - LOADED: number; - LOADING: number; - NONE: number; + readonly track: TextTrack; + readonly ERROR: number; + readonly LOADED: number; + readonly LOADING: number; + readonly NONE: number; } declare var HTMLTrackElement: { prototype: HTMLTrackElement; new(): HTMLTrackElement; - ERROR: number; - LOADED: number; - LOADING: number; - NONE: number; + readonly ERROR: number; + readonly LOADED: number; + readonly LOADING: number; + readonly NONE: number; } interface HTMLUListElement extends HTMLElement { @@ -6719,8 +7362,8 @@ interface HTMLVideoElement extends HTMLMediaElement { */ height: number; msHorizontalMirror: boolean; - msIsLayoutOptimalForPlayback: boolean; - msIsStereo3D: boolean; + readonly msIsLayoutOptimalForPlayback: boolean; + readonly msIsStereo3D: boolean; msStereo3DPackingMode: string; msStereo3DRenderMode: string; msZoom: boolean; @@ -6734,13 +7377,13 @@ interface HTMLVideoElement extends HTMLMediaElement { /** * Gets the intrinsic height of a video in CSS pixels, or zero if the dimensions are not known. */ - videoHeight: number; + readonly videoHeight: number; /** * Gets the intrinsic width of a video in CSS pixels, or zero if the dimensions are not known. */ - videoWidth: number; - webkitDisplayingFullscreen: boolean; - webkitSupportsFullscreen: boolean; + readonly videoWidth: number; + readonly webkitDisplayingFullscreen: boolean; + readonly webkitSupportsFullscreen: boolean; /** * Gets or sets the width of the video element. */ @@ -6779,10 +7422,10 @@ interface HTMLVideoElement extends HTMLMediaElement { addEventListener(type: "activate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecopy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecopy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "beforedeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforepaste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforepaste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; addEventListener(type: "canplay", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "canplaythrough", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -6790,9 +7433,9 @@ interface HTMLVideoElement extends HTMLMediaElement { addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void; addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "copy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "copy", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "cuechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "cut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "cut", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "deactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void; @@ -6804,11 +7447,13 @@ interface HTMLVideoElement extends HTMLMediaElement { addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "encrypted", listener: (ev: MediaEncryptedEvent) => any, useCapture?: boolean): void; + addEventListener(type: "ended", listener: (ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "invalid", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; @@ -6824,9 +7469,9 @@ interface HTMLVideoElement extends HTMLMediaElement { addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousewheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; addEventListener(type: "msneedkey", listener: (ev: MSMediaKeyNeededEvent) => any, useCapture?: boolean): void; - addEventListener(type: "paste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "paste", listener: (ev: ClipboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -6868,8 +7513,8 @@ declare var HTMLVideoElement: { } interface HashChangeEvent extends Event { - newURL: string; - oldURL: string; + readonly newURL: string | null; + readonly oldURL: string | null; } declare var HashChangeEvent: { @@ -6878,8 +7523,8 @@ declare var HashChangeEvent: { } interface History { - length: number; - state: any; + readonly length: number; + readonly state: any; back(distance?: any): void; forward(distance?: any): void; go(delta?: any): void; @@ -6893,31 +7538,31 @@ declare var History: { } interface IDBCursor { - direction: string; - key: any; - primaryKey: any; + readonly direction: string; + key: IDBKeyRange | IDBValidKey; + readonly primaryKey: any; source: IDBObjectStore | IDBIndex; advance(count: number): void; - continue(key?: any): void; + continue(key?: IDBKeyRange | IDBValidKey): void; delete(): IDBRequest; update(value: any): IDBRequest; - NEXT: string; - NEXT_NO_DUPLICATE: string; - PREV: string; - PREV_NO_DUPLICATE: string; + readonly NEXT: string; + readonly NEXT_NO_DUPLICATE: string; + readonly PREV: string; + readonly PREV_NO_DUPLICATE: string; } declare var IDBCursor: { prototype: IDBCursor; new(): IDBCursor; - NEXT: string; - NEXT_NO_DUPLICATE: string; - PREV: string; - PREV_NO_DUPLICATE: string; + readonly NEXT: string; + readonly NEXT_NO_DUPLICATE: string; + readonly PREV: string; + readonly PREV_NO_DUPLICATE: string; } interface IDBCursorWithValue extends IDBCursor { - value: any; + readonly value: any; } declare var IDBCursorWithValue: { @@ -6926,15 +7571,17 @@ declare var IDBCursorWithValue: { } interface IDBDatabase extends EventTarget { - name: string; - objectStoreNames: DOMStringList; + readonly name: string; + readonly objectStoreNames: DOMStringList; onabort: (ev: Event) => any; onerror: (ev: Event) => any; version: number; + onversionchange: (ev: IDBVersionChangeEvent) => any; close(): void; createObjectStore(name: string, optionalParameters?: IDBObjectStoreParameters): IDBObjectStore; 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: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; @@ -6958,15 +7605,15 @@ declare var IDBFactory: { interface IDBIndex { keyPath: string | string[]; - name: string; - objectStore: IDBObjectStore; - unique: boolean; + readonly name: string; + readonly objectStore: IDBObjectStore; + readonly unique: boolean; multiEntry: boolean; - count(key?: any): IDBRequest; - get(key: any): IDBRequest; - getKey(key: any): IDBRequest; - openCursor(range?: IDBKeyRange, direction?: string): IDBRequest; - openKeyCursor(range?: IDBKeyRange, direction?: string): IDBRequest; + count(key?: IDBKeyRange | IDBValidKey): IDBRequest; + get(key: IDBKeyRange | IDBValidKey): IDBRequest; + getKey(key: IDBKeyRange | IDBValidKey): IDBRequest; + openCursor(range?: IDBKeyRange | IDBValidKey, direction?: string): IDBRequest; + openKeyCursor(range?: IDBKeyRange | IDBValidKey, direction?: string): IDBRequest; } declare var IDBIndex: { @@ -6975,37 +7622,37 @@ declare var IDBIndex: { } interface IDBKeyRange { - lower: any; - lowerOpen: boolean; - upper: any; - upperOpen: boolean; + readonly lower: any; + readonly lowerOpen: boolean; + readonly upper: any; + readonly upperOpen: boolean; } declare var IDBKeyRange: { prototype: IDBKeyRange; new(): IDBKeyRange; bound(lower: any, upper: any, lowerOpen?: boolean, upperOpen?: boolean): IDBKeyRange; - lowerBound(bound: any, open?: boolean): IDBKeyRange; + lowerBound(lower: any, open?: boolean): IDBKeyRange; only(value: any): IDBKeyRange; - upperBound(bound: any, open?: boolean): IDBKeyRange; + upperBound(upper: any, open?: boolean): IDBKeyRange; } interface IDBObjectStore { - indexNames: DOMStringList; + readonly indexNames: DOMStringList; keyPath: string | string[]; - name: string; - transaction: IDBTransaction; + readonly name: string; + readonly transaction: IDBTransaction; autoIncrement: boolean; - add(value: any, key?: any): IDBRequest; + add(value: any, key?: IDBKeyRange | IDBValidKey): IDBRequest; clear(): IDBRequest; - count(key?: any): IDBRequest; + count(key?: IDBKeyRange | IDBValidKey): IDBRequest; createIndex(name: string, keyPath: string | string[], optionalParameters?: IDBIndexParameters): IDBIndex; - delete(key: any): IDBRequest; + delete(key: IDBKeyRange | IDBValidKey): IDBRequest; deleteIndex(indexName: string): void; get(key: any): IDBRequest; index(name: string): IDBIndex; - openCursor(range?: any, direction?: string): IDBRequest; - put(value: any, key?: any): IDBRequest; + openCursor(range?: IDBKeyRange | IDBValidKey, direction?: string): IDBRequest; + put(value: any, key?: IDBKeyRange | IDBValidKey): IDBRequest; } declare var IDBObjectStore: { @@ -7029,13 +7676,13 @@ declare var IDBOpenDBRequest: { } interface IDBRequest extends EventTarget { - error: DOMError; + readonly error: DOMError; onerror: (ev: Event) => any; onsuccess: (ev: Event) => any; - readyState: string; - result: any; + readonly readyState: string; + readonly result: any; source: IDBObjectStore | IDBIndex | IDBCursor; - transaction: IDBTransaction; + 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: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; @@ -7047,17 +7694,17 @@ declare var IDBRequest: { } interface IDBTransaction extends EventTarget { - db: IDBDatabase; - error: DOMError; - mode: string; + readonly db: IDBDatabase; + readonly error: DOMError; + readonly mode: string; onabort: (ev: Event) => any; oncomplete: (ev: Event) => any; onerror: (ev: Event) => any; abort(): void; objectStore(name: string): IDBObjectStore; - READ_ONLY: string; - READ_WRITE: string; - VERSION_CHANGE: string; + 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; @@ -7067,14 +7714,14 @@ interface IDBTransaction extends EventTarget { declare var IDBTransaction: { prototype: IDBTransaction; new(): IDBTransaction; - READ_ONLY: string; - READ_WRITE: string; - VERSION_CHANGE: string; + readonly READ_ONLY: string; + readonly READ_WRITE: string; + readonly VERSION_CHANGE: string; } interface IDBVersionChangeEvent extends Event { - newVersion: number; - oldVersion: number; + readonly newVersion: number | null; + readonly oldVersion: number; } declare var IDBVersionChangeEvent: { @@ -7084,8 +7731,8 @@ declare var IDBVersionChangeEvent: { interface ImageData { data: Uint8ClampedArray; - height: number; - width: number; + readonly height: number; + readonly width: number; } declare var ImageData: { @@ -7095,37 +7742,47 @@ declare var ImageData: { } interface KeyboardEvent extends UIEvent { - altKey: boolean; - char: string; - charCode: number; - ctrlKey: boolean; - key: string; - keyCode: number; - locale: string; - location: number; - metaKey: boolean; - repeat: boolean; - shiftKey: boolean; - which: number; + readonly altKey: boolean; + readonly char: string | null; + readonly charCode: number; + readonly ctrlKey: boolean; + readonly key: string; + readonly keyCode: number; + readonly locale: string; + readonly location: number; + readonly metaKey: boolean; + readonly repeat: boolean; + readonly shiftKey: boolean; + readonly which: number; getModifierState(keyArg: string): boolean; initKeyboardEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, keyArg: string, locationArg: number, modifiersListArg: string, repeat: boolean, locale: string): void; - DOM_KEY_LOCATION_JOYSTICK: number; - DOM_KEY_LOCATION_LEFT: number; - DOM_KEY_LOCATION_MOBILE: number; - DOM_KEY_LOCATION_NUMPAD: number; - DOM_KEY_LOCATION_RIGHT: number; - DOM_KEY_LOCATION_STANDARD: number; + readonly DOM_KEY_LOCATION_JOYSTICK: number; + readonly DOM_KEY_LOCATION_LEFT: number; + readonly DOM_KEY_LOCATION_MOBILE: number; + readonly DOM_KEY_LOCATION_NUMPAD: number; + readonly DOM_KEY_LOCATION_RIGHT: number; + readonly DOM_KEY_LOCATION_STANDARD: number; } declare var KeyboardEvent: { prototype: KeyboardEvent; new(typeArg: string, eventInitDict?: KeyboardEventInit): KeyboardEvent; - DOM_KEY_LOCATION_JOYSTICK: number; - DOM_KEY_LOCATION_LEFT: number; - DOM_KEY_LOCATION_MOBILE: number; - DOM_KEY_LOCATION_NUMPAD: number; - DOM_KEY_LOCATION_RIGHT: number; - DOM_KEY_LOCATION_STANDARD: number; + readonly DOM_KEY_LOCATION_JOYSTICK: number; + readonly DOM_KEY_LOCATION_LEFT: number; + readonly DOM_KEY_LOCATION_MOBILE: number; + readonly DOM_KEY_LOCATION_NUMPAD: number; + readonly DOM_KEY_LOCATION_RIGHT: number; + readonly DOM_KEY_LOCATION_STANDARD: number; +} + +interface ListeningStateChangedEvent extends Event { + readonly label: string; + readonly state: string; +} + +declare var ListeningStateChangedEvent: { + prototype: ListeningStateChangedEvent; + new(): ListeningStateChangedEvent; } interface Location { @@ -7133,7 +7790,7 @@ interface Location { host: string; hostname: string; href: string; - origin: string; + readonly origin: string; pathname: string; port: string; protocol: string; @@ -7150,7 +7807,7 @@ declare var Location: { } interface LongRunningScriptDetectedEvent extends Event { - executionTime: number; + readonly executionTime: number; stopPageScriptExecution: boolean; } @@ -7169,29 +7826,29 @@ interface MSApp { execAsyncAtPriority(asynchronousCallback: MSExecAtPriorityFunctionCallback, priority: string, ...args: any[]): void; execAtPriority(synchronousCallback: MSExecAtPriorityFunctionCallback, priority: string, ...args: any[]): any; getCurrentPriority(): string; - getHtmlPrintDocumentSourceAsync(htmlDoc: any): any; + getHtmlPrintDocumentSourceAsync(htmlDoc: any): PromiseLike; getViewId(view: any): any; isTaskScheduledAtPriorityOrHigher(priority: string): boolean; pageHandlesAllApplicationActivations(enabled: boolean): void; suppressSubdownloadCredentialPrompts(suppress: boolean): void; terminateApp(exceptionObject: any): void; - CURRENT: string; - HIGH: string; - IDLE: string; - NORMAL: string; + readonly CURRENT: string; + readonly HIGH: string; + readonly IDLE: string; + readonly NORMAL: string; } declare var MSApp: MSApp; interface MSAppAsyncOperation extends EventTarget { - error: DOMError; + readonly error: DOMError; oncomplete: (ev: Event) => any; onerror: (ev: Event) => any; - readyState: number; - result: any; + readonly readyState: number; + readonly result: any; start(): void; - COMPLETED: number; - ERROR: number; - STARTED: number; + 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: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; @@ -7200,9 +7857,19 @@ interface MSAppAsyncOperation extends EventTarget { declare var MSAppAsyncOperation: { prototype: MSAppAsyncOperation; new(): MSAppAsyncOperation; - COMPLETED: number; - ERROR: number; - STARTED: number; + readonly COMPLETED: number; + readonly ERROR: number; + readonly STARTED: number; +} + +interface MSAssertion { + readonly id: string; + readonly type: string; +} + +declare var MSAssertion: { + prototype: MSAssertion; + new(): MSAssertion; } interface MSBlobBuilder { @@ -7215,44 +7882,46 @@ declare var MSBlobBuilder: { new(): MSBlobBuilder; } -interface MSCSSMatrix { - a: number; - b: number; - c: number; - d: number; - e: number; - f: number; - m11: number; - m12: number; - m13: number; - m14: number; - m21: number; - m22: number; - m23: number; - m24: number; - m31: number; - m32: number; - m33: number; - m34: number; - m41: number; - m42: number; - m43: number; - m44: number; - inverse(): MSCSSMatrix; - multiply(secondMatrix: MSCSSMatrix): MSCSSMatrix; - rotate(angleX: number, angleY?: number, angleZ?: number): MSCSSMatrix; - rotateAxisAngle(x: number, y: number, z: number, angle: number): MSCSSMatrix; - scale(scaleX: number, scaleY?: number, scaleZ?: number): MSCSSMatrix; - setMatrixValue(value: string): void; - skewX(angle: number): MSCSSMatrix; - skewY(angle: number): MSCSSMatrix; - toString(): string; - translate(x: number, y: number, z?: number): MSCSSMatrix; +interface MSCredentials { + getAssertion(challenge: string, filter?: MSCredentialFilter, params?: MSSignatureParameters): PromiseLike; + makeCredential(accountInfo: MSAccountInfo, params: MSCredentialParameters[], challenge?: string): PromiseLike; } -declare var MSCSSMatrix: { - prototype: MSCSSMatrix; - new(text?: string): MSCSSMatrix; +declare var MSCredentials: { + prototype: MSCredentials; + new(): MSCredentials; +} + +interface MSFIDOCredentialAssertion extends MSAssertion { + readonly algorithm: string | Algorithm; + readonly attestation: any; + readonly publicKey: string; + readonly transportHints: string[]; +} + +declare var MSFIDOCredentialAssertion: { + prototype: MSFIDOCredentialAssertion; + new(): MSFIDOCredentialAssertion; +} + +interface MSFIDOSignature { + readonly authnrData: string; + readonly clientData: string; + readonly signature: string; +} + +declare var MSFIDOSignature: { + prototype: MSFIDOSignature; + new(): MSFIDOSignature; +} + +interface MSFIDOSignatureAssertion extends MSAssertion { + readonly signature: MSFIDOSignature; +} + +declare var MSFIDOSignatureAssertion: { + prototype: MSFIDOSignatureAssertion; + new(): MSFIDOSignatureAssertion; } interface MSGesture { @@ -7267,44 +7936,44 @@ declare var MSGesture: { } interface MSGestureEvent extends UIEvent { - clientX: number; - clientY: number; - expansion: number; - gestureObject: any; - hwTimestamp: number; - offsetX: number; - offsetY: number; - rotation: number; - scale: number; - screenX: number; - screenY: number; - translationX: number; - translationY: number; - velocityAngular: number; - velocityExpansion: number; - velocityX: number; - velocityY: number; + readonly clientX: number; + readonly clientY: number; + readonly expansion: number; + readonly gestureObject: any; + readonly hwTimestamp: number; + readonly offsetX: number; + readonly offsetY: number; + readonly rotation: number; + readonly scale: number; + readonly screenX: number; + readonly screenY: number; + readonly translationX: number; + readonly translationY: number; + readonly velocityAngular: number; + readonly velocityExpansion: number; + readonly velocityX: number; + readonly velocityY: number; initGestureEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, screenXArg: number, screenYArg: number, clientXArg: number, clientYArg: number, offsetXArg: number, offsetYArg: number, translationXArg: number, translationYArg: number, scaleArg: number, expansionArg: number, rotationArg: number, velocityXArg: number, velocityYArg: number, velocityExpansionArg: number, velocityAngularArg: number, hwTimestampArg: number): void; - MSGESTURE_FLAG_BEGIN: number; - MSGESTURE_FLAG_CANCEL: number; - MSGESTURE_FLAG_END: number; - MSGESTURE_FLAG_INERTIA: number; - MSGESTURE_FLAG_NONE: number; + readonly MSGESTURE_FLAG_BEGIN: number; + readonly MSGESTURE_FLAG_CANCEL: number; + readonly MSGESTURE_FLAG_END: number; + readonly MSGESTURE_FLAG_INERTIA: number; + readonly MSGESTURE_FLAG_NONE: number; } declare var MSGestureEvent: { prototype: MSGestureEvent; new(): MSGestureEvent; - MSGESTURE_FLAG_BEGIN: number; - MSGESTURE_FLAG_CANCEL: number; - MSGESTURE_FLAG_END: number; - MSGESTURE_FLAG_INERTIA: number; - MSGESTURE_FLAG_NONE: number; + readonly MSGESTURE_FLAG_BEGIN: number; + readonly MSGESTURE_FLAG_CANCEL: number; + readonly MSGESTURE_FLAG_END: number; + readonly MSGESTURE_FLAG_INERTIA: number; + readonly MSGESTURE_FLAG_NONE: number; } interface MSGraphicsTrust { - constrictionActive: boolean; - status: string; + readonly constrictionActive: boolean; + readonly status: string; } declare var MSGraphicsTrust: { @@ -7313,12 +7982,12 @@ declare var MSGraphicsTrust: { } interface MSHTMLWebViewElement extends HTMLElement { - canGoBack: boolean; - canGoForward: boolean; - containsFullScreenElement: boolean; - documentTitle: string; + readonly canGoBack: boolean; + readonly canGoForward: boolean; + readonly containsFullScreenElement: boolean; + readonly documentTitle: string; height: number; - settings: MSWebViewSettings; + readonly settings: MSWebViewSettings; src: string; width: number; addWebAllowedObject(name: string, applicationObject: any): void; @@ -7344,12 +8013,12 @@ declare var MSHTMLWebViewElement: { } interface MSInputMethodContext extends EventTarget { - compositionEndOffset: number; - compositionStartOffset: number; + readonly compositionEndOffset: number; + readonly compositionStartOffset: number; oncandidatewindowhide: (ev: Event) => any; oncandidatewindowshow: (ev: Event) => any; oncandidatewindowupdate: (ev: Event) => any; - target: HTMLElement; + readonly target: HTMLElement; getCandidateWindowClientRect(): ClientRect; getCompositionAlternatives(): string[]; hasComposition(): boolean; @@ -7366,59 +8035,59 @@ declare var MSInputMethodContext: { } interface MSManipulationEvent extends UIEvent { - currentState: number; - inertiaDestinationX: number; - inertiaDestinationY: number; - lastState: number; + readonly currentState: number; + readonly inertiaDestinationX: number; + readonly inertiaDestinationY: number; + readonly lastState: number; initMSManipulationEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, lastState: number, currentState: number): void; - MS_MANIPULATION_STATE_ACTIVE: number; - MS_MANIPULATION_STATE_CANCELLED: number; - MS_MANIPULATION_STATE_COMMITTED: number; - MS_MANIPULATION_STATE_DRAGGING: number; - MS_MANIPULATION_STATE_INERTIA: number; - MS_MANIPULATION_STATE_PRESELECT: number; - MS_MANIPULATION_STATE_SELECTING: number; - MS_MANIPULATION_STATE_STOPPED: number; + readonly MS_MANIPULATION_STATE_ACTIVE: number; + readonly MS_MANIPULATION_STATE_CANCELLED: number; + readonly MS_MANIPULATION_STATE_COMMITTED: number; + readonly MS_MANIPULATION_STATE_DRAGGING: number; + readonly MS_MANIPULATION_STATE_INERTIA: number; + readonly MS_MANIPULATION_STATE_PRESELECT: number; + readonly MS_MANIPULATION_STATE_SELECTING: number; + readonly MS_MANIPULATION_STATE_STOPPED: number; } declare var MSManipulationEvent: { prototype: MSManipulationEvent; new(): MSManipulationEvent; - MS_MANIPULATION_STATE_ACTIVE: number; - MS_MANIPULATION_STATE_CANCELLED: number; - MS_MANIPULATION_STATE_COMMITTED: number; - MS_MANIPULATION_STATE_DRAGGING: number; - MS_MANIPULATION_STATE_INERTIA: number; - MS_MANIPULATION_STATE_PRESELECT: number; - MS_MANIPULATION_STATE_SELECTING: number; - MS_MANIPULATION_STATE_STOPPED: number; + readonly MS_MANIPULATION_STATE_ACTIVE: number; + readonly MS_MANIPULATION_STATE_CANCELLED: number; + readonly MS_MANIPULATION_STATE_COMMITTED: number; + readonly MS_MANIPULATION_STATE_DRAGGING: number; + readonly MS_MANIPULATION_STATE_INERTIA: number; + readonly MS_MANIPULATION_STATE_PRESELECT: number; + readonly MS_MANIPULATION_STATE_SELECTING: number; + readonly MS_MANIPULATION_STATE_STOPPED: number; } interface MSMediaKeyError { - code: number; - systemCode: number; - MS_MEDIA_KEYERR_CLIENT: number; - MS_MEDIA_KEYERR_DOMAIN: number; - MS_MEDIA_KEYERR_HARDWARECHANGE: number; - MS_MEDIA_KEYERR_OUTPUT: number; - MS_MEDIA_KEYERR_SERVICE: number; - MS_MEDIA_KEYERR_UNKNOWN: number; + readonly code: number; + readonly systemCode: number; + readonly MS_MEDIA_KEYERR_CLIENT: number; + readonly MS_MEDIA_KEYERR_DOMAIN: number; + readonly MS_MEDIA_KEYERR_HARDWARECHANGE: number; + readonly MS_MEDIA_KEYERR_OUTPUT: number; + readonly MS_MEDIA_KEYERR_SERVICE: number; + readonly MS_MEDIA_KEYERR_UNKNOWN: number; } declare var MSMediaKeyError: { prototype: MSMediaKeyError; new(): MSMediaKeyError; - MS_MEDIA_KEYERR_CLIENT: number; - MS_MEDIA_KEYERR_DOMAIN: number; - MS_MEDIA_KEYERR_HARDWARECHANGE: number; - MS_MEDIA_KEYERR_OUTPUT: number; - MS_MEDIA_KEYERR_SERVICE: number; - MS_MEDIA_KEYERR_UNKNOWN: number; + readonly MS_MEDIA_KEYERR_CLIENT: number; + readonly MS_MEDIA_KEYERR_DOMAIN: number; + readonly MS_MEDIA_KEYERR_HARDWARECHANGE: number; + readonly MS_MEDIA_KEYERR_OUTPUT: number; + readonly MS_MEDIA_KEYERR_SERVICE: number; + readonly MS_MEDIA_KEYERR_UNKNOWN: number; } interface MSMediaKeyMessageEvent extends Event { - destinationURL: string; - message: Uint8Array; + readonly destinationURL: string | null; + readonly message: Uint8Array; } declare var MSMediaKeyMessageEvent: { @@ -7427,7 +8096,7 @@ declare var MSMediaKeyMessageEvent: { } interface MSMediaKeyNeededEvent extends Event { - initData: Uint8Array; + readonly initData: Uint8Array | null; } declare var MSMediaKeyNeededEvent: { @@ -7436,9 +8105,9 @@ declare var MSMediaKeyNeededEvent: { } interface MSMediaKeySession extends EventTarget { - error: MSMediaKeyError; - keySystem: string; - sessionId: string; + readonly error: MSMediaKeyError | null; + readonly keySystem: string; + readonly sessionId: string; close(): void; update(key: Uint8Array): void; } @@ -7449,7 +8118,7 @@ declare var MSMediaKeySession: { } interface MSMediaKeys { - keySystem: string; + readonly keySystem: string; createSession(type: string, initData: Uint8Array, cdmData?: Uint8Array): MSMediaKeySession; } @@ -7457,40 +8126,22 @@ declare var MSMediaKeys: { prototype: MSMediaKeys; new(keySystem: string): MSMediaKeys; isTypeSupported(keySystem: string, type?: string): boolean; -} - -interface MSMimeTypesCollection { - length: number; -} - -declare var MSMimeTypesCollection: { - prototype: MSMimeTypesCollection; - new(): MSMimeTypesCollection; -} - -interface MSPluginsCollection { - length: number; - refresh(reload?: boolean): void; -} - -declare var MSPluginsCollection: { - prototype: MSPluginsCollection; - new(): MSPluginsCollection; + isTypeSupportedWithFeatures(keySystem: string, type?: string): string; } interface MSPointerEvent extends MouseEvent { - currentPoint: any; - height: number; - hwTimestamp: number; - intermediatePoints: any; - isPrimary: boolean; - pointerId: number; - pointerType: any; - pressure: number; - rotation: number; - tiltX: number; - tiltY: number; - width: number; + readonly currentPoint: any; + readonly height: number; + readonly hwTimestamp: number; + readonly intermediatePoints: any; + readonly isPrimary: boolean; + readonly pointerId: number; + readonly pointerType: any; + readonly pressure: number; + readonly rotation: number; + readonly tiltX: number; + readonly tiltY: number; + readonly width: number; getCurrentPoint(element: Element): void; getIntermediatePoints(element: Element): void; initPointerEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, screenXArg: number, screenYArg: number, clientXArg: number, clientYArg: number, ctrlKeyArg: boolean, altKeyArg: boolean, shiftKeyArg: boolean, metaKeyArg: boolean, buttonArg: number, relatedTargetArg: EventTarget, offsetXArg: number, offsetYArg: number, widthArg: number, heightArg: number, pressure: number, rotation: number, tiltX: number, tiltY: number, pointerIdArg: number, pointerType: any, hwTimestampArg: number, isPrimary: boolean): void; @@ -7502,7 +8153,7 @@ declare var MSPointerEvent: { } interface MSRangeCollection { - length: number; + readonly length: number; item(index: number): Range; [index: number]: Range; } @@ -7513,8 +8164,8 @@ declare var MSRangeCollection: { } interface MSSiteModeEvent extends Event { - actionURL: string; - buttonID: number; + readonly actionURL: string; + readonly buttonID: number; } declare var MSSiteModeEvent: { @@ -7523,7 +8174,7 @@ declare var MSSiteModeEvent: { } interface MSStream { - type: string; + readonly type: string; msClose(): void; msDetachStream(): any; } @@ -7534,7 +8185,7 @@ declare var MSStream: { } interface MSStreamReader extends EventTarget, MSBaseReader { - error: DOMError; + readonly error: DOMError; readAsArrayBuffer(stream: MSStream, size?: number): void; readAsBinaryString(stream: MSStream, size?: number): void; readAsBlob(stream: MSStream, size?: number): void; @@ -7549,20 +8200,20 @@ declare var MSStreamReader: { } interface MSWebViewAsyncOperation extends EventTarget { - error: DOMError; + readonly error: DOMError; oncomplete: (ev: Event) => any; onerror: (ev: Event) => any; - readyState: number; - result: any; - target: MSHTMLWebViewElement; - type: number; + readonly readyState: number; + readonly result: any; + readonly target: MSHTMLWebViewElement; + readonly type: number; start(): void; - COMPLETED: number; - ERROR: number; - STARTED: number; - TYPE_CAPTURE_PREVIEW_TO_RANDOM_ACCESS_STREAM: number; - TYPE_CREATE_DATA_PACKAGE_FROM_SELECTION: number; - TYPE_INVOKE_SCRIPT: number; + readonly COMPLETED: number; + readonly ERROR: number; + readonly STARTED: number; + readonly TYPE_CAPTURE_PREVIEW_TO_RANDOM_ACCESS_STREAM: number; + readonly TYPE_CREATE_DATA_PACKAGE_FROM_SELECTION: number; + readonly TYPE_INVOKE_SCRIPT: number; addEventListener(type: "complete", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; @@ -7571,12 +8222,12 @@ interface MSWebViewAsyncOperation extends EventTarget { declare var MSWebViewAsyncOperation: { prototype: MSWebViewAsyncOperation; new(): MSWebViewAsyncOperation; - COMPLETED: number; - ERROR: number; - STARTED: number; - TYPE_CAPTURE_PREVIEW_TO_RANDOM_ACCESS_STREAM: number; - TYPE_CREATE_DATA_PACKAGE_FROM_SELECTION: number; - TYPE_INVOKE_SCRIPT: number; + readonly COMPLETED: number; + readonly ERROR: number; + readonly STARTED: number; + readonly TYPE_CAPTURE_PREVIEW_TO_RANDOM_ACCESS_STREAM: number; + readonly TYPE_CREATE_DATA_PACKAGE_FROM_SELECTION: number; + readonly TYPE_INVOKE_SCRIPT: number; } interface MSWebViewSettings { @@ -7589,6 +8240,32 @@ declare var MSWebViewSettings: { new(): MSWebViewSettings; } +interface MediaDeviceInfo { + readonly deviceId: string; + readonly groupId: string; + readonly kind: string; + readonly label: string; +} + +declare var MediaDeviceInfo: { + prototype: MediaDeviceInfo; + new(): MediaDeviceInfo; +} + +interface MediaDevices extends EventTarget { + ondevicechange: (ev: Event) => any; + enumerateDevices(): any; + getSupportedConstraints(): MediaTrackSupportedConstraints; + getUserMedia(constraints: MediaStreamConstraints): PromiseLike; + addEventListener(type: "devicechange", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +} + +declare var MediaDevices: { + prototype: MediaDevices; + new(): MediaDevices; +} + interface MediaElementAudioSourceNode extends AudioNode { } @@ -7597,28 +8274,98 @@ declare var MediaElementAudioSourceNode: { new(): MediaElementAudioSourceNode; } +interface MediaEncryptedEvent extends Event { + readonly initData: ArrayBuffer | null; + readonly initDataType: string; +} + +declare var MediaEncryptedEvent: { + prototype: MediaEncryptedEvent; + new(type: string, eventInitDict?: MediaEncryptedEventInit): MediaEncryptedEvent; +} + interface MediaError { - code: number; - msExtendedCode: number; - MEDIA_ERR_ABORTED: number; - MEDIA_ERR_DECODE: number; - MEDIA_ERR_NETWORK: number; - MEDIA_ERR_SRC_NOT_SUPPORTED: number; - MS_MEDIA_ERR_ENCRYPTED: number; + readonly code: number; + readonly msExtendedCode: number; + readonly MEDIA_ERR_ABORTED: number; + readonly MEDIA_ERR_DECODE: number; + readonly MEDIA_ERR_NETWORK: number; + readonly MEDIA_ERR_SRC_NOT_SUPPORTED: number; + readonly MS_MEDIA_ERR_ENCRYPTED: number; } declare var MediaError: { prototype: MediaError; new(): MediaError; - MEDIA_ERR_ABORTED: number; - MEDIA_ERR_DECODE: number; - MEDIA_ERR_NETWORK: number; - MEDIA_ERR_SRC_NOT_SUPPORTED: number; - MS_MEDIA_ERR_ENCRYPTED: number; + readonly MEDIA_ERR_ABORTED: number; + readonly MEDIA_ERR_DECODE: number; + readonly MEDIA_ERR_NETWORK: number; + readonly MEDIA_ERR_SRC_NOT_SUPPORTED: number; + readonly MS_MEDIA_ERR_ENCRYPTED: number; +} + +interface MediaKeyMessageEvent extends Event { + readonly message: ArrayBuffer; + readonly messageType: string; +} + +declare var MediaKeyMessageEvent: { + prototype: MediaKeyMessageEvent; + new(type: string, eventInitDict?: MediaKeyMessageEventInit): MediaKeyMessageEvent; +} + +interface MediaKeySession extends EventTarget { + readonly closed: PromiseLike; + readonly expiration: number; + readonly keyStatuses: MediaKeyStatusMap; + readonly sessionId: string; + close(): PromiseLike; + generateRequest(initDataType: string, initData: any): PromiseLike; + load(sessionId: string): PromiseLike; + remove(): PromiseLike; + update(response: any): PromiseLike; +} + +declare var MediaKeySession: { + prototype: MediaKeySession; + new(): MediaKeySession; +} + +interface MediaKeyStatusMap { + readonly size: number; + forEach(callback: ForEachCallback): void; + get(keyId: any): string; + has(keyId: any): boolean; +} + +declare var MediaKeyStatusMap: { + prototype: MediaKeyStatusMap; + new(): MediaKeyStatusMap; +} + +interface MediaKeySystemAccess { + readonly keySystem: string; + createMediaKeys(): PromiseLike; + getConfiguration(): MediaKeySystemConfiguration; +} + +declare var MediaKeySystemAccess: { + prototype: MediaKeySystemAccess; + new(): MediaKeySystemAccess; +} + +interface MediaKeys { + createSession(sessionType?: string): MediaKeySession; + setServerCertificate(serverCertificate: any): PromiseLike; +} + +declare var MediaKeys: { + prototype: MediaKeys; + new(): MediaKeys; } interface MediaList { - length: number; + readonly length: number; mediaText: string; appendMedium(newMedium: string): void; deleteMedium(oldMedium: string): void; @@ -7633,8 +8380,8 @@ declare var MediaList: { } interface MediaQueryList { - matches: boolean; - media: string; + readonly matches: boolean; + readonly media: string; addListener(listener: MediaQueryListListener): void; removeListener(listener: MediaQueryListListener): void; } @@ -7645,10 +8392,10 @@ declare var MediaQueryList: { } interface MediaSource extends EventTarget { - activeSourceBuffers: SourceBufferList; + readonly activeSourceBuffers: SourceBufferList; duration: number; - readyState: string; - sourceBuffers: SourceBufferList; + readonly readyState: string; + readonly sourceBuffers: SourceBufferList; addSourceBuffer(type: string): SourceBuffer; endOfStream(error?: number): void; removeSourceBuffer(sourceBuffer: SourceBuffer): void; @@ -7660,9 +8407,104 @@ declare var MediaSource: { isTypeSupported(type: string): boolean; } +interface MediaStream extends EventTarget { + readonly active: boolean; + readonly id: string; + onactive: (ev: Event) => any; + onaddtrack: (ev: TrackEvent) => any; + oninactive: (ev: Event) => any; + onremovetrack: (ev: TrackEvent) => any; + addTrack(track: MediaStreamTrack): void; + clone(): MediaStream; + getAudioTracks(): MediaStreamTrack[]; + getTrackById(trackId: string): MediaStreamTrack | null; + getTracks(): MediaStreamTrack[]; + getVideoTracks(): MediaStreamTrack[]; + removeTrack(track: MediaStreamTrack): void; + stop(): void; + addEventListener(type: "active", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "addtrack", listener: (ev: TrackEvent) => any, useCapture?: boolean): void; + addEventListener(type: "inactive", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "removetrack", listener: (ev: TrackEvent) => any, useCapture?: boolean): void; + addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +} + +declare var MediaStream: { + prototype: MediaStream; + new(streamOrTracks?: MediaStream | MediaStreamTrack[]): MediaStream; +} + +interface MediaStreamAudioSourceNode extends AudioNode { +} + +declare var MediaStreamAudioSourceNode: { + prototype: MediaStreamAudioSourceNode; + new(): MediaStreamAudioSourceNode; +} + +interface MediaStreamError { + readonly constraintName: string | null; + readonly message: string | null; + readonly name: string; +} + +declare var MediaStreamError: { + prototype: MediaStreamError; + new(): MediaStreamError; +} + +interface MediaStreamErrorEvent extends Event { + readonly error: MediaStreamError | null; +} + +declare var MediaStreamErrorEvent: { + prototype: MediaStreamErrorEvent; + new(type: string, eventInitDict?: MediaStreamErrorEventInit): MediaStreamErrorEvent; +} + +interface MediaStreamTrack extends EventTarget { + enabled: boolean; + readonly id: string; + readonly kind: string; + readonly label: string; + readonly muted: boolean; + onended: (ev: MediaStreamErrorEvent) => any; + onmute: (ev: Event) => any; + onoverconstrained: (ev: MediaStreamErrorEvent) => any; + onunmute: (ev: Event) => any; + readonly readonly: boolean; + readonly readyState: string; + readonly remote: boolean; + applyConstraints(constraints: MediaTrackConstraints): PromiseLike; + clone(): MediaStreamTrack; + getCapabilities(): MediaTrackCapabilities; + getConstraints(): MediaTrackConstraints; + getSettings(): MediaTrackSettings; + stop(): void; + addEventListener(type: "ended", listener: (ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mute", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "overconstrained", listener: (ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: "unmute", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +} + +declare var MediaStreamTrack: { + prototype: MediaStreamTrack; + new(): MediaStreamTrack; +} + +interface MediaStreamTrackEvent extends Event { + readonly track: MediaStreamTrack; +} + +declare var MediaStreamTrackEvent: { + prototype: MediaStreamTrackEvent; + new(type: string, eventInitDict?: MediaStreamTrackEventInit): MediaStreamTrackEvent; +} + interface MessageChannel { - port1: MessagePort; - port2: MessagePort; + readonly port1: MessagePort; + readonly port2: MessagePort; } declare var MessageChannel: { @@ -7671,10 +8513,10 @@ declare var MessageChannel: { } interface MessageEvent extends Event { - data: any; - origin: string; - ports: any; - source: Window; + readonly data: any; + readonly origin: string; + readonly ports: any; + readonly source: Window; initMessageEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, dataArg: any, originArg: string, lastEventIdArg: string, sourceArg: Window): void; } @@ -7698,10 +8540,10 @@ declare var MessagePort: { } interface MimeType { - description: string; - enabledPlugin: Plugin; - suffixes: string; - type: string; + readonly description: string; + readonly enabledPlugin: Plugin; + readonly suffixes: string; + readonly type: string; } declare var MimeType: { @@ -7710,7 +8552,7 @@ declare var MimeType: { } interface MimeTypeArray { - length: number; + readonly length: number; item(index: number): Plugin; namedItem(type: string): Plugin; [index: number]: Plugin; @@ -7722,30 +8564,30 @@ declare var MimeTypeArray: { } interface MouseEvent extends UIEvent { - altKey: boolean; - button: number; - buttons: number; - clientX: number; - clientY: number; - ctrlKey: boolean; - fromElement: Element; - layerX: number; - layerY: number; - metaKey: boolean; - movementX: number; - movementY: number; - offsetX: number; - offsetY: number; - pageX: number; - pageY: number; - relatedTarget: EventTarget; - screenX: number; - screenY: number; - shiftKey: boolean; - toElement: Element; - which: number; - x: number; - y: number; + readonly altKey: boolean; + readonly button: number; + readonly buttons: number; + readonly clientX: number; + readonly clientY: number; + readonly ctrlKey: boolean; + readonly fromElement: Element; + readonly layerX: number; + readonly layerY: number; + readonly metaKey: boolean; + readonly movementX: number; + readonly movementY: number; + readonly offsetX: number; + readonly offsetY: number; + readonly pageX: number; + readonly pageY: number; + readonly relatedTarget: EventTarget; + readonly screenX: number; + readonly screenY: number; + readonly shiftKey: boolean; + readonly toElement: Element; + readonly which: number; + readonly x: number; + readonly y: number; getModifierState(keyArg: string): boolean; initMouseEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, screenXArg: number, screenYArg: number, clientXArg: number, clientYArg: number, ctrlKeyArg: boolean, altKeyArg: boolean, shiftKeyArg: boolean, metaKeyArg: boolean, buttonArg: number, relatedTargetArg: EventTarget): void; } @@ -7755,36 +8597,24 @@ declare var MouseEvent: { new(typeArg: string, eventInitDict?: MouseEventInit): MouseEvent; } -interface MouseWheelEvent extends MouseEvent { - wheelDelta: number; - wheelDeltaX: number; - wheelDeltaY: number; - initMouseWheelEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, screenXArg: number, screenYArg: number, clientXArg: number, clientYArg: number, buttonArg: number, relatedTargetArg: EventTarget, modifiersListArg: string, wheelDeltaArg: number): void; -} - -declare var MouseWheelEvent: { - prototype: MouseWheelEvent; - new(): MouseWheelEvent; -} - interface MutationEvent extends Event { - attrChange: number; - attrName: string; - newValue: string; - prevValue: string; - relatedNode: Node; + readonly attrChange: number; + readonly attrName: string; + readonly newValue: string; + readonly prevValue: string; + readonly relatedNode: Node; initMutationEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, relatedNodeArg: Node, prevValueArg: string, newValueArg: string, attrNameArg: string, attrChangeArg: number): void; - ADDITION: number; - MODIFICATION: number; - REMOVAL: number; + readonly ADDITION: number; + readonly MODIFICATION: number; + readonly REMOVAL: number; } declare var MutationEvent: { prototype: MutationEvent; new(): MutationEvent; - ADDITION: number; - MODIFICATION: number; - REMOVAL: number; + readonly ADDITION: number; + readonly MODIFICATION: number; + readonly REMOVAL: number; } interface MutationObserver { @@ -7799,15 +8629,15 @@ declare var MutationObserver: { } interface MutationRecord { - addedNodes: NodeList; - attributeName: string; - attributeNamespace: string; - nextSibling: Node; - oldValue: string; - previousSibling: Node; - removedNodes: NodeList; - target: Node; - type: string; + readonly addedNodes: NodeList; + readonly attributeName: string | null; + readonly attributeNamespace: string | null; + readonly nextSibling: Node | null; + readonly oldValue: string | null; + readonly previousSibling: Node | null; + readonly removedNodes: NodeList; + readonly target: Node; + readonly type: string; } declare var MutationRecord: { @@ -7816,12 +8646,12 @@ declare var MutationRecord: { } interface NamedNodeMap { - length: number; + readonly length: number; getNamedItem(name: string): Attr; - getNamedItemNS(namespaceURI: string, localName: string): Attr; + getNamedItemNS(namespaceURI: string | null, localName: string | null): Attr; item(index: number): Attr; removeNamedItem(name: string): Attr; - removeNamedItemNS(namespaceURI: string, localName: string): Attr; + removeNamedItemNS(namespaceURI: string | null, localName: string | null): Attr; setNamedItem(arg: Attr): Attr; setNamedItemNS(arg: Attr): Attr; [index: number]: Attr; @@ -7833,8 +8663,8 @@ declare var NamedNodeMap: { } interface NavigationCompletedEvent extends NavigationEvent { - isSuccess: boolean; - webErrorStatus: number; + readonly isSuccess: boolean; + readonly webErrorStatus: number; } declare var NavigationCompletedEvent: { @@ -7843,7 +8673,7 @@ declare var NavigationCompletedEvent: { } interface NavigationEvent extends Event { - uri: string; + readonly uri: string; } declare var NavigationEvent: { @@ -7852,7 +8682,7 @@ declare var NavigationEvent: { } interface NavigationEventWithReferrer extends NavigationEvent { - referer: string; + readonly referer: string; } declare var NavigationEventWithReferrer: { @@ -7860,27 +8690,22 @@ declare var NavigationEventWithReferrer: { new(): NavigationEventWithReferrer; } -interface Navigator extends Object, NavigatorID, NavigatorOnLine, NavigatorContentUtils, NavigatorStorageUtils, NavigatorGeolocation, MSNavigatorDoNotTrack, MSFileSaver { - appCodeName: string; - appMinorVersion: string; - browserLanguage: string; - connectionSpeed: number; - cookieEnabled: boolean; - cpuClass: string; - language: string; - maxTouchPoints: number; - mimeTypes: MSMimeTypesCollection; - msManipulationViewsEnabled: boolean; - msMaxTouchPoints: number; - msPointerEnabled: boolean; - plugins: MSPluginsCollection; - pointerEnabled: boolean; - systemLanguage: string; - userLanguage: string; - webdriver: boolean; +interface Navigator extends Object, NavigatorID, NavigatorOnLine, NavigatorContentUtils, NavigatorStorageUtils, NavigatorGeolocation, MSNavigatorDoNotTrack, MSFileSaver, NavigatorUserMedia { + readonly appCodeName: string; + readonly cookieEnabled: boolean; + readonly language: string; + readonly maxTouchPoints: number; + readonly mimeTypes: MimeTypeArray; + readonly msManipulationViewsEnabled: boolean; + readonly msMaxTouchPoints: number; + readonly msPointerEnabled: boolean; + readonly plugins: PluginArray; + readonly pointerEnabled: boolean; + readonly webdriver: boolean; getGamepads(): Gamepad[]; javaEnabled(): boolean; msLaunchUri(uri: string, successCallback?: MSLaunchUriCallback, noHandlerCallback?: MSLaunchUriCallback): void; + requestMediaKeySystemAccess(keySystem: string, supportedConfigurations: MediaKeySystemConfiguration[]): PromiseLike; vibrate(pattern: number | number[]): boolean; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -7891,79 +8716,79 @@ declare var Navigator: { } interface Node extends EventTarget { - attributes: NamedNodeMap; - baseURI: string; - childNodes: NodeList; - firstChild: Node; - lastChild: Node; - localName: string; - namespaceURI: string; - nextSibling: Node; - nodeName: string; - nodeType: number; - nodeValue: string; - ownerDocument: Document; - parentElement: HTMLElement; - parentNode: Node; - prefix: string; - previousSibling: Node; - textContent: string; + readonly attributes: NamedNodeMap; + readonly baseURI: string | null; + readonly childNodes: NodeList; + readonly firstChild: Node; + readonly lastChild: Node; + readonly localName: string | null; + readonly namespaceURI: string | null; + readonly nextSibling: Node; + readonly nodeName: string; + readonly nodeType: number; + nodeValue: string | null; + readonly ownerDocument: Document; + readonly parentElement: HTMLElement; + readonly parentNode: Node; + readonly previousSibling: Node; + textContent: string | null; appendChild(newChild: Node): Node; cloneNode(deep?: boolean): Node; compareDocumentPosition(other: Node): number; + contains(child: Node): boolean; hasAttributes(): boolean; hasChildNodes(): boolean; - insertBefore(newChild: Node, refChild?: Node): Node; - isDefaultNamespace(namespaceURI: string): boolean; + insertBefore(newChild: Node, refChild: Node): Node; + isDefaultNamespace(namespaceURI: string | null): boolean; isEqualNode(arg: Node): boolean; isSameNode(other: Node): boolean; - lookupNamespaceURI(prefix: string): string; - lookupPrefix(namespaceURI: string): string; + lookupNamespaceURI(prefix: string | null): string | null; + lookupPrefix(namespaceURI: string | null): string | null; normalize(): void; removeChild(oldChild: Node): Node; replaceChild(newChild: Node, oldChild: Node): Node; contains(node: Node): boolean; - ATTRIBUTE_NODE: number; - CDATA_SECTION_NODE: number; - COMMENT_NODE: number; - DOCUMENT_FRAGMENT_NODE: number; - DOCUMENT_NODE: number; - DOCUMENT_POSITION_CONTAINED_BY: number; - DOCUMENT_POSITION_CONTAINS: number; - DOCUMENT_POSITION_DISCONNECTED: number; - DOCUMENT_POSITION_FOLLOWING: number; - DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: number; - DOCUMENT_POSITION_PRECEDING: number; - DOCUMENT_TYPE_NODE: number; - ELEMENT_NODE: number; - ENTITY_NODE: number; - ENTITY_REFERENCE_NODE: number; - NOTATION_NODE: number; - PROCESSING_INSTRUCTION_NODE: number; - TEXT_NODE: number; + readonly ATTRIBUTE_NODE: number; + readonly CDATA_SECTION_NODE: number; + readonly COMMENT_NODE: number; + readonly DOCUMENT_FRAGMENT_NODE: number; + readonly DOCUMENT_NODE: number; + readonly DOCUMENT_POSITION_CONTAINED_BY: number; + readonly DOCUMENT_POSITION_CONTAINS: number; + readonly DOCUMENT_POSITION_DISCONNECTED: number; + readonly DOCUMENT_POSITION_FOLLOWING: number; + readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: number; + readonly DOCUMENT_POSITION_PRECEDING: number; + readonly DOCUMENT_TYPE_NODE: number; + readonly ELEMENT_NODE: number; + readonly ENTITY_NODE: number; + readonly ENTITY_REFERENCE_NODE: number; + readonly NOTATION_NODE: number; + readonly PROCESSING_INSTRUCTION_NODE: number; + readonly TEXT_NODE: number; } declare var Node: { prototype: Node; new(): Node; - ATTRIBUTE_NODE: number; - CDATA_SECTION_NODE: number; - COMMENT_NODE: number; - DOCUMENT_FRAGMENT_NODE: number; - DOCUMENT_NODE: number; - DOCUMENT_POSITION_CONTAINED_BY: number; - DOCUMENT_POSITION_CONTAINS: number; - DOCUMENT_POSITION_DISCONNECTED: number; - DOCUMENT_POSITION_FOLLOWING: number; - DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: number; - DOCUMENT_POSITION_PRECEDING: number; - DOCUMENT_TYPE_NODE: number; - ELEMENT_NODE: number; - ENTITY_NODE: number; - ENTITY_REFERENCE_NODE: number; - NOTATION_NODE: number; - PROCESSING_INSTRUCTION_NODE: number; - TEXT_NODE: number; + readonly ATTRIBUTE_NODE: number; + readonly CDATA_SECTION_NODE: number; + readonly COMMENT_NODE: number; + readonly DOCUMENT_FRAGMENT_NODE: number; + readonly DOCUMENT_NODE: number; + readonly DOCUMENT_POSITION_CONTAINED_BY: number; + readonly DOCUMENT_POSITION_CONTAINS: number; + readonly DOCUMENT_POSITION_DISCONNECTED: number; + readonly DOCUMENT_POSITION_FOLLOWING: number; + readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: number; + readonly DOCUMENT_POSITION_PRECEDING: number; + readonly DOCUMENT_TYPE_NODE: number; + readonly ELEMENT_NODE: number; + readonly ENTITY_NODE: number; + readonly ENTITY_REFERENCE_NODE: number; + readonly NOTATION_NODE: number; + readonly PROCESSING_INSTRUCTION_NODE: number; + readonly TEXT_NODE: number; } interface NodeFilter { @@ -7971,29 +8796,29 @@ interface NodeFilter { } declare var NodeFilter: { - FILTER_ACCEPT: number; - FILTER_REJECT: number; - FILTER_SKIP: number; - SHOW_ALL: number; - SHOW_ATTRIBUTE: number; - SHOW_CDATA_SECTION: number; - SHOW_COMMENT: number; - SHOW_DOCUMENT: number; - SHOW_DOCUMENT_FRAGMENT: number; - SHOW_DOCUMENT_TYPE: number; - SHOW_ELEMENT: number; - SHOW_ENTITY: number; - SHOW_ENTITY_REFERENCE: number; - SHOW_NOTATION: number; - SHOW_PROCESSING_INSTRUCTION: number; - SHOW_TEXT: number; + readonly FILTER_ACCEPT: number; + readonly FILTER_REJECT: number; + readonly FILTER_SKIP: number; + readonly SHOW_ALL: number; + readonly SHOW_ATTRIBUTE: number; + readonly SHOW_CDATA_SECTION: number; + readonly SHOW_COMMENT: number; + readonly SHOW_DOCUMENT: number; + readonly SHOW_DOCUMENT_FRAGMENT: number; + readonly SHOW_DOCUMENT_TYPE: number; + readonly SHOW_ELEMENT: number; + readonly SHOW_ENTITY: number; + readonly SHOW_ENTITY_REFERENCE: number; + readonly SHOW_NOTATION: number; + readonly SHOW_PROCESSING_INSTRUCTION: number; + readonly SHOW_TEXT: number; } interface NodeIterator { - expandEntityReferences: boolean; - filter: NodeFilter; - root: Node; - whatToShow: number; + readonly expandEntityReferences: boolean; + readonly filter: NodeFilter; + readonly root: Node; + readonly whatToShow: number; detach(): void; nextNode(): Node; previousNode(): Node; @@ -8005,7 +8830,7 @@ declare var NodeIterator: { } interface NodeList { - length: number; + readonly length: number; item(index: number): Node; [index: number]: Node; } @@ -8024,13 +8849,13 @@ declare var OES_element_index_uint: { } interface OES_standard_derivatives { - FRAGMENT_SHADER_DERIVATIVE_HINT_OES: number; + readonly FRAGMENT_SHADER_DERIVATIVE_HINT_OES: number; } declare var OES_standard_derivatives: { prototype: OES_standard_derivatives; new(): OES_standard_derivatives; - FRAGMENT_SHADER_DERIVATIVE_HINT_OES: number; + readonly FRAGMENT_SHADER_DERIVATIVE_HINT_OES: number; } interface OES_texture_float { @@ -8050,7 +8875,7 @@ declare var OES_texture_float_linear: { } interface OfflineAudioCompletionEvent extends Event { - renderedBuffer: AudioBuffer; + readonly renderedBuffer: AudioBuffer; } declare var OfflineAudioCompletionEvent: { @@ -8060,7 +8885,7 @@ declare var OfflineAudioCompletionEvent: { interface OfflineAudioContext extends AudioContext { oncomplete: (ev: Event) => any; - startRendering(): void; + startRendering(): PromiseLike; addEventListener(type: "complete", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -8071,14 +8896,14 @@ declare var OfflineAudioContext: { } interface OscillatorNode extends AudioNode { - detune: AudioParam; - frequency: AudioParam; - onended: (ev: Event) => any; + readonly detune: AudioParam; + readonly frequency: AudioParam; + onended: (ev: MediaStreamErrorEvent) => any; type: string; setPeriodicWave(periodicWave: PeriodicWave): void; start(when?: number): void; stop(when?: number): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "ended", listener: (ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -8087,8 +8912,25 @@ declare var OscillatorNode: { new(): OscillatorNode; } +interface OverflowEvent extends UIEvent { + readonly horizontalOverflow: boolean; + readonly orient: number; + readonly verticalOverflow: boolean; + readonly BOTH: number; + readonly HORIZONTAL: number; + readonly VERTICAL: number; +} + +declare var OverflowEvent: { + prototype: OverflowEvent; + new(): OverflowEvent; + readonly BOTH: number; + readonly HORIZONTAL: number; + readonly VERTICAL: number; +} + interface PageTransitionEvent extends Event { - persisted: boolean; + readonly persisted: boolean; } declare var PageTransitionEvent: { @@ -8116,24 +8958,24 @@ declare var PannerNode: { } interface PerfWidgetExternal { - activeNetworkRequestCount: number; - averageFrameTime: number; - averagePaintTime: number; - extraInformationEnabled: boolean; - independentRenderingEnabled: boolean; - irDisablingContentString: string; - irStatusAvailable: boolean; - maxCpuSpeed: number; - paintRequestsPerSecond: number; - performanceCounter: number; - performanceCounterFrequency: number; + readonly activeNetworkRequestCount: number; + readonly averageFrameTime: number; + readonly averagePaintTime: number; + readonly extraInformationEnabled: boolean; + readonly independentRenderingEnabled: boolean; + readonly irDisablingContentString: string; + readonly irStatusAvailable: boolean; + readonly maxCpuSpeed: number; + readonly paintRequestsPerSecond: number; + readonly performanceCounter: number; + readonly performanceCounterFrequency: number; addEventListener(eventType: string, callback: Function): void; getMemoryUsage(): number; getProcessCpuUsage(): number; - getRecentCpuUsage(last: number): any; - getRecentFrames(last: number): any; - getRecentMemoryUsage(last: number): any; - getRecentPaintRequests(last: number): any; + getRecentCpuUsage(last: number | null): any; + getRecentFrames(last: number | null): any; + getRecentMemoryUsage(last: number | null): any; + getRecentPaintRequests(last: number | null): any; removeEventListener(eventType: string, callback: Function): void; repositionWindow(x: number, y: number): void; resizeWindow(width: number, height: number): void; @@ -8145,8 +8987,8 @@ declare var PerfWidgetExternal: { } interface Performance { - navigation: PerformanceNavigation; - timing: PerformanceTiming; + readonly navigation: PerformanceNavigation; + readonly timing: PerformanceTiming; clearMarks(markName?: string): void; clearMeasures(measureName?: string): void; clearResourceTimings(): void; @@ -8168,10 +9010,10 @@ declare var Performance: { } interface PerformanceEntry { - duration: number; - entryType: string; - name: string; - startTime: number; + readonly duration: number; + readonly entryType: string; + readonly name: string; + readonly startTime: number; } declare var PerformanceEntry: { @@ -8196,47 +9038,47 @@ declare var PerformanceMeasure: { } interface PerformanceNavigation { - redirectCount: number; - type: number; + readonly redirectCount: number; + readonly type: number; toJSON(): any; - TYPE_BACK_FORWARD: number; - TYPE_NAVIGATE: number; - TYPE_RELOAD: number; - TYPE_RESERVED: number; + readonly TYPE_BACK_FORWARD: number; + readonly TYPE_NAVIGATE: number; + readonly TYPE_RELOAD: number; + readonly TYPE_RESERVED: number; } declare var PerformanceNavigation: { prototype: PerformanceNavigation; new(): PerformanceNavigation; - TYPE_BACK_FORWARD: number; - TYPE_NAVIGATE: number; - TYPE_RELOAD: number; - TYPE_RESERVED: number; + readonly TYPE_BACK_FORWARD: number; + readonly TYPE_NAVIGATE: number; + readonly TYPE_RELOAD: number; + readonly TYPE_RESERVED: number; } interface PerformanceNavigationTiming extends PerformanceEntry { - connectEnd: number; - connectStart: number; - domComplete: number; - domContentLoadedEventEnd: number; - domContentLoadedEventStart: number; - domInteractive: number; - domLoading: number; - domainLookupEnd: number; - domainLookupStart: number; - fetchStart: number; - loadEventEnd: number; - loadEventStart: number; - navigationStart: number; - redirectCount: number; - redirectEnd: number; - redirectStart: number; - requestStart: number; - responseEnd: number; - responseStart: number; - type: string; - unloadEventEnd: number; - unloadEventStart: number; + readonly connectEnd: number; + readonly connectStart: number; + readonly domComplete: number; + readonly domContentLoadedEventEnd: number; + readonly domContentLoadedEventStart: number; + readonly domInteractive: number; + readonly domLoading: number; + readonly domainLookupEnd: number; + readonly domainLookupStart: number; + readonly fetchStart: number; + readonly loadEventEnd: number; + readonly loadEventStart: number; + readonly navigationStart: number; + readonly redirectCount: number; + readonly redirectEnd: number; + readonly redirectStart: number; + readonly requestStart: number; + readonly responseEnd: number; + readonly responseStart: number; + readonly type: string; + readonly unloadEventEnd: number; + readonly unloadEventStart: number; } declare var PerformanceNavigationTiming: { @@ -8245,17 +9087,17 @@ declare var PerformanceNavigationTiming: { } interface PerformanceResourceTiming extends PerformanceEntry { - connectEnd: number; - connectStart: number; - domainLookupEnd: number; - domainLookupStart: number; - fetchStart: number; - initiatorType: string; - redirectEnd: number; - redirectStart: number; - requestStart: number; - responseEnd: number; - responseStart: number; + readonly connectEnd: number; + readonly connectStart: number; + readonly domainLookupEnd: number; + readonly domainLookupStart: number; + readonly fetchStart: number; + readonly initiatorType: string; + readonly redirectEnd: number; + readonly redirectStart: number; + readonly requestStart: number; + readonly responseEnd: number; + readonly responseStart: number; } declare var PerformanceResourceTiming: { @@ -8264,27 +9106,27 @@ declare var PerformanceResourceTiming: { } interface PerformanceTiming { - connectEnd: number; - connectStart: number; - domComplete: number; - domContentLoadedEventEnd: number; - domContentLoadedEventStart: number; - domInteractive: number; - domLoading: number; - domainLookupEnd: number; - domainLookupStart: number; - fetchStart: number; - loadEventEnd: number; - loadEventStart: number; - msFirstPaint: number; - navigationStart: number; - redirectEnd: number; - redirectStart: number; - requestStart: number; - responseEnd: number; - responseStart: number; - unloadEventEnd: number; - unloadEventStart: number; + readonly connectEnd: number; + readonly connectStart: number; + readonly domComplete: number; + readonly domContentLoadedEventEnd: number; + readonly domContentLoadedEventStart: number; + readonly domInteractive: number; + readonly domLoading: number; + readonly domainLookupEnd: number; + readonly domainLookupStart: number; + readonly fetchStart: number; + readonly loadEventEnd: number; + readonly loadEventStart: number; + readonly msFirstPaint: number; + readonly navigationStart: number; + readonly redirectEnd: number; + readonly redirectStart: number; + readonly requestStart: number; + readonly responseEnd: number; + readonly responseStart: number; + readonly unloadEventEnd: number; + readonly unloadEventStart: number; toJSON(): any; } @@ -8302,7 +9144,7 @@ declare var PeriodicWave: { } interface PermissionRequest extends DeferredPermissionRequest { - state: string; + readonly state: string; defer(): void; } @@ -8312,7 +9154,7 @@ declare var PermissionRequest: { } interface PermissionRequestedEvent extends Event { - permissionRequest: PermissionRequest; + readonly permissionRequest: PermissionRequest; } declare var PermissionRequestedEvent: { @@ -8321,11 +9163,11 @@ declare var PermissionRequestedEvent: { } interface Plugin { - description: string; - filename: string; - length: number; - name: string; - version: string; + readonly description: string; + readonly filename: string; + readonly length: number; + readonly name: string; + readonly version: string; item(index: number): MimeType; namedItem(type: string): MimeType; [index: number]: MimeType; @@ -8337,7 +9179,7 @@ declare var Plugin: { } interface PluginArray { - length: number; + readonly length: number; item(index: number): Plugin; namedItem(name: string): Plugin; refresh(reload?: boolean): void; @@ -8350,18 +9192,18 @@ declare var PluginArray: { } interface PointerEvent extends MouseEvent { - currentPoint: any; - height: number; - hwTimestamp: number; - intermediatePoints: any; - isPrimary: boolean; - pointerId: number; - pointerType: any; - pressure: number; - rotation: number; - tiltX: number; - tiltY: number; - width: number; + readonly currentPoint: any; + readonly height: number; + readonly hwTimestamp: number; + readonly intermediatePoints: any; + readonly isPrimary: boolean; + readonly pointerId: number; + readonly pointerType: any; + readonly pressure: number; + readonly rotation: number; + readonly tiltX: number; + readonly tiltY: number; + readonly width: number; getCurrentPoint(element: Element): void; getIntermediatePoints(element: Element): void; initPointerEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, screenXArg: number, screenYArg: number, clientXArg: number, clientYArg: number, ctrlKeyArg: boolean, altKeyArg: boolean, shiftKeyArg: boolean, metaKeyArg: boolean, buttonArg: number, relatedTargetArg: EventTarget, offsetXArg: number, offsetYArg: number, widthArg: number, heightArg: number, pressure: number, rotation: number, tiltX: number, tiltY: number, pointerIdArg: number, pointerType: any, hwTimestampArg: number, isPrimary: boolean): void; @@ -8373,7 +9215,7 @@ declare var PointerEvent: { } interface PopStateEvent extends Event { - state: any; + readonly state: any; initPopStateEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, stateArg: any): void; } @@ -8383,8 +9225,8 @@ declare var PopStateEvent: { } interface Position { - coords: Coordinates; - timestamp: number; + readonly coords: Coordinates; + readonly timestamp: number; } declare var Position: { @@ -8393,24 +9235,24 @@ declare var Position: { } interface PositionError { - code: number; - message: string; + readonly code: number; + readonly message: string; toString(): string; - PERMISSION_DENIED: number; - POSITION_UNAVAILABLE: number; - TIMEOUT: number; + readonly PERMISSION_DENIED: number; + readonly POSITION_UNAVAILABLE: number; + readonly TIMEOUT: number; } declare var PositionError: { prototype: PositionError; new(): PositionError; - PERMISSION_DENIED: number; - POSITION_UNAVAILABLE: number; - TIMEOUT: number; + readonly PERMISSION_DENIED: number; + readonly POSITION_UNAVAILABLE: number; + readonly TIMEOUT: number; } interface ProcessingInstruction extends CharacterData { - target: string; + readonly target: string; } declare var ProcessingInstruction: { @@ -8419,9 +9261,9 @@ declare var ProcessingInstruction: { } interface ProgressEvent extends Event { - lengthComputable: boolean; - loaded: number; - total: number; + readonly lengthComputable: boolean; + readonly loaded: number; + readonly total: number; initProgressEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, lengthComputableArg: boolean, loadedArg: number, totalArg: number): void; } @@ -8430,13 +9272,210 @@ declare var ProgressEvent: { new(type: string, eventInitDict?: ProgressEventInit): ProgressEvent; } +interface RTCDTMFToneChangeEvent extends Event { + readonly tone: string; +} + +declare var RTCDTMFToneChangeEvent: { + prototype: RTCDTMFToneChangeEvent; + new(type: string, eventInitDict: RTCDTMFToneChangeEventInit): RTCDTMFToneChangeEvent; +} + +interface RTCDtlsTransport extends RTCStatsProvider { + ondtlsstatechange: ((ev: RTCDtlsTransportStateChangedEvent) => any) | null; + onerror: ((ev: Event) => any) | null; + readonly state: string; + readonly transport: RTCIceTransport; + getLocalParameters(): RTCDtlsParameters; + getRemoteCertificates(): ArrayBuffer[]; + getRemoteParameters(): RTCDtlsParameters | null; + start(remoteParameters: RTCDtlsParameters): void; + stop(): void; + addEventListener(type: "dtlsstatechange", listener: (ev: RTCDtlsTransportStateChangedEvent) => any, useCapture?: boolean): void; + addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +} + +declare var RTCDtlsTransport: { + prototype: RTCDtlsTransport; + new(transport: RTCIceTransport): RTCDtlsTransport; +} + +interface RTCDtlsTransportStateChangedEvent extends Event { + readonly state: string; +} + +declare var RTCDtlsTransportStateChangedEvent: { + prototype: RTCDtlsTransportStateChangedEvent; + new(): RTCDtlsTransportStateChangedEvent; +} + +interface RTCDtmfSender extends EventTarget { + readonly canInsertDTMF: boolean; + readonly duration: number; + readonly interToneGap: number; + ontonechange: (ev: RTCDTMFToneChangeEvent) => any; + readonly sender: RTCRtpSender; + readonly toneBuffer: string; + insertDTMF(tones: string, duration?: number, interToneGap?: number): void; + addEventListener(type: "tonechange", listener: (ev: RTCDTMFToneChangeEvent) => any, useCapture?: boolean): void; + addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +} + +declare var RTCDtmfSender: { + prototype: RTCDtmfSender; + new(sender: RTCRtpSender): RTCDtmfSender; +} + +interface RTCIceCandidatePairChangedEvent extends Event { + readonly pair: RTCIceCandidatePair; +} + +declare var RTCIceCandidatePairChangedEvent: { + prototype: RTCIceCandidatePairChangedEvent; + new(): RTCIceCandidatePairChangedEvent; +} + +interface RTCIceGatherer extends RTCStatsProvider { + readonly component: string; + onerror: ((ev: Event) => any) | null; + onlocalcandidate: ((ev: RTCIceGathererEvent) => any) | null; + createAssociatedGatherer(): RTCIceGatherer; + getLocalCandidates(): RTCIceCandidate[]; + getLocalParameters(): RTCIceParameters; + addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: "localcandidate", listener: (ev: RTCIceGathererEvent) => any, useCapture?: boolean): void; + addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +} + +declare var RTCIceGatherer: { + prototype: RTCIceGatherer; + new(options: RTCIceGatherOptions): RTCIceGatherer; +} + +interface RTCIceGathererEvent extends Event { + readonly candidate: RTCIceCandidate | RTCIceCandidateComplete; +} + +declare var RTCIceGathererEvent: { + prototype: RTCIceGathererEvent; + new(): RTCIceGathererEvent; +} + +interface RTCIceTransport extends RTCStatsProvider { + readonly component: string; + readonly iceGatherer: RTCIceGatherer | null; + oncandidatepairchange: ((ev: RTCIceCandidatePairChangedEvent) => any) | null; + onicestatechange: ((ev: RTCIceTransportStateChangedEvent) => any) | null; + readonly role: string; + readonly state: string; + addRemoteCandidate(remoteCandidate: RTCIceCandidate | RTCIceCandidateComplete): void; + createAssociatedTransport(): RTCIceTransport; + getNominatedCandidatePair(): RTCIceCandidatePair | null; + getRemoteCandidates(): RTCIceCandidate[]; + getRemoteParameters(): RTCIceParameters | null; + setRemoteCandidates(remoteCandidates: RTCIceCandidate[]): void; + start(gatherer: RTCIceGatherer, remoteParameters: RTCIceParameters, role?: string): void; + stop(): void; + addEventListener(type: "candidatepairchange", listener: (ev: RTCIceCandidatePairChangedEvent) => any, useCapture?: boolean): void; + addEventListener(type: "icestatechange", listener: (ev: RTCIceTransportStateChangedEvent) => any, useCapture?: boolean): void; + addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +} + +declare var RTCIceTransport: { + prototype: RTCIceTransport; + new(): RTCIceTransport; +} + +interface RTCIceTransportStateChangedEvent extends Event { + readonly state: string; +} + +declare var RTCIceTransportStateChangedEvent: { + prototype: RTCIceTransportStateChangedEvent; + new(): RTCIceTransportStateChangedEvent; +} + +interface RTCRtpReceiver extends RTCStatsProvider { + onerror: ((ev: Event) => any) | null; + readonly rtcpTransport: RTCDtlsTransport; + readonly track: MediaStreamTrack | null; + readonly transport: RTCDtlsTransport | RTCSrtpSdesTransport; + getContributingSources(): RTCRtpContributingSource[]; + receive(parameters: RTCRtpParameters): void; + requestSendCSRC(csrc: number): void; + setTransport(transport: RTCDtlsTransport | RTCSrtpSdesTransport, rtcpTransport?: RTCDtlsTransport): void; + stop(): void; + addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +} + +declare var RTCRtpReceiver: { + prototype: RTCRtpReceiver; + new(transport: RTCDtlsTransport | RTCSrtpSdesTransport, kind: string, rtcpTransport?: RTCDtlsTransport): RTCRtpReceiver; + getCapabilities(kind?: string): RTCRtpCapabilities; +} + +interface RTCRtpSender extends RTCStatsProvider { + onerror: ((ev: Event) => any) | null; + onssrcconflict: ((ev: RTCSsrcConflictEvent) => any) | null; + readonly rtcpTransport: RTCDtlsTransport; + readonly track: MediaStreamTrack; + readonly transport: RTCDtlsTransport | RTCSrtpSdesTransport; + send(parameters: RTCRtpParameters): void; + setTrack(track: MediaStreamTrack): void; + setTransport(transport: RTCDtlsTransport | RTCSrtpSdesTransport, rtcpTransport?: RTCDtlsTransport): void; + stop(): void; + addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: "ssrcconflict", listener: (ev: RTCSsrcConflictEvent) => any, useCapture?: boolean): void; + addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +} + +declare var RTCRtpSender: { + prototype: RTCRtpSender; + new(track: MediaStreamTrack, transport: RTCDtlsTransport | RTCSrtpSdesTransport, rtcpTransport?: RTCDtlsTransport): RTCRtpSender; + getCapabilities(kind?: string): RTCRtpCapabilities; +} + +interface RTCSrtpSdesTransport extends EventTarget { + onerror: ((ev: Event) => any) | null; + readonly transport: RTCIceTransport; + addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +} + +declare var RTCSrtpSdesTransport: { + prototype: RTCSrtpSdesTransport; + new(transport: RTCIceTransport, encryptParameters: RTCSrtpSdesParameters, decryptParameters: RTCSrtpSdesParameters): RTCSrtpSdesTransport; + getLocalParameters(): RTCSrtpSdesParameters[]; +} + +interface RTCSsrcConflictEvent extends Event { + readonly ssrc: number; +} + +declare var RTCSsrcConflictEvent: { + prototype: RTCSsrcConflictEvent; + new(): RTCSsrcConflictEvent; +} + +interface RTCStatsProvider extends EventTarget { + getStats(): PromiseLike; + msGetStats(): PromiseLike; +} + +declare var RTCStatsProvider: { + prototype: RTCStatsProvider; + new(): RTCStatsProvider; +} + interface Range { - collapsed: boolean; - commonAncestorContainer: Node; - endContainer: Node; - endOffset: number; - startContainer: Node; - startOffset: number; + readonly collapsed: boolean; + readonly commonAncestorContainer: Node; + readonly endContainer: Node; + readonly endOffset: number; + readonly startContainer: Node; + readonly startOffset: number; cloneContents(): DocumentFragment; cloneRange(): Range; collapse(toStart: boolean): void; @@ -8459,23 +9498,23 @@ interface Range { setStartBefore(refNode: Node): void; surroundContents(newParent: Node): void; toString(): string; - END_TO_END: number; - END_TO_START: number; - START_TO_END: number; - START_TO_START: number; + readonly END_TO_END: number; + readonly END_TO_START: number; + readonly START_TO_END: number; + readonly START_TO_START: number; } declare var Range: { prototype: Range; new(): Range; - END_TO_END: number; - END_TO_START: number; - START_TO_END: number; - START_TO_START: number; + readonly END_TO_END: number; + readonly END_TO_START: number; + readonly START_TO_END: number; + readonly START_TO_START: number; } interface SVGAElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired, SVGURIReference { - target: SVGAnimatedString; + readonly target: SVGAnimatedString; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -8485,32 +9524,32 @@ declare var SVGAElement: { } interface SVGAngle { - unitType: number; + readonly unitType: number; value: number; valueAsString: string; valueInSpecifiedUnits: number; convertToSpecifiedUnits(unitType: number): void; newValueSpecifiedUnits(unitType: number, valueInSpecifiedUnits: number): void; - SVG_ANGLETYPE_DEG: number; - SVG_ANGLETYPE_GRAD: number; - SVG_ANGLETYPE_RAD: number; - SVG_ANGLETYPE_UNKNOWN: number; - SVG_ANGLETYPE_UNSPECIFIED: number; + readonly SVG_ANGLETYPE_DEG: number; + readonly SVG_ANGLETYPE_GRAD: number; + readonly SVG_ANGLETYPE_RAD: number; + readonly SVG_ANGLETYPE_UNKNOWN: number; + readonly SVG_ANGLETYPE_UNSPECIFIED: number; } declare var SVGAngle: { prototype: SVGAngle; new(): SVGAngle; - SVG_ANGLETYPE_DEG: number; - SVG_ANGLETYPE_GRAD: number; - SVG_ANGLETYPE_RAD: number; - SVG_ANGLETYPE_UNKNOWN: number; - SVG_ANGLETYPE_UNSPECIFIED: number; + readonly SVG_ANGLETYPE_DEG: number; + readonly SVG_ANGLETYPE_GRAD: number; + readonly SVG_ANGLETYPE_RAD: number; + readonly SVG_ANGLETYPE_UNKNOWN: number; + readonly SVG_ANGLETYPE_UNSPECIFIED: number; } interface SVGAnimatedAngle { - animVal: SVGAngle; - baseVal: SVGAngle; + readonly animVal: SVGAngle; + readonly baseVal: SVGAngle; } declare var SVGAnimatedAngle: { @@ -8519,7 +9558,7 @@ declare var SVGAnimatedAngle: { } interface SVGAnimatedBoolean { - animVal: boolean; + readonly animVal: boolean; baseVal: boolean; } @@ -8529,7 +9568,7 @@ declare var SVGAnimatedBoolean: { } interface SVGAnimatedEnumeration { - animVal: number; + readonly animVal: number; baseVal: number; } @@ -8539,7 +9578,7 @@ declare var SVGAnimatedEnumeration: { } interface SVGAnimatedInteger { - animVal: number; + readonly animVal: number; baseVal: number; } @@ -8549,8 +9588,8 @@ declare var SVGAnimatedInteger: { } interface SVGAnimatedLength { - animVal: SVGLength; - baseVal: SVGLength; + readonly animVal: SVGLength; + readonly baseVal: SVGLength; } declare var SVGAnimatedLength: { @@ -8559,8 +9598,8 @@ declare var SVGAnimatedLength: { } interface SVGAnimatedLengthList { - animVal: SVGLengthList; - baseVal: SVGLengthList; + readonly animVal: SVGLengthList; + readonly baseVal: SVGLengthList; } declare var SVGAnimatedLengthList: { @@ -8569,7 +9608,7 @@ declare var SVGAnimatedLengthList: { } interface SVGAnimatedNumber { - animVal: number; + readonly animVal: number; baseVal: number; } @@ -8579,8 +9618,8 @@ declare var SVGAnimatedNumber: { } interface SVGAnimatedNumberList { - animVal: SVGNumberList; - baseVal: SVGNumberList; + readonly animVal: SVGNumberList; + readonly baseVal: SVGNumberList; } declare var SVGAnimatedNumberList: { @@ -8589,8 +9628,8 @@ declare var SVGAnimatedNumberList: { } interface SVGAnimatedPreserveAspectRatio { - animVal: SVGPreserveAspectRatio; - baseVal: SVGPreserveAspectRatio; + readonly animVal: SVGPreserveAspectRatio; + readonly baseVal: SVGPreserveAspectRatio; } declare var SVGAnimatedPreserveAspectRatio: { @@ -8599,8 +9638,8 @@ declare var SVGAnimatedPreserveAspectRatio: { } interface SVGAnimatedRect { - animVal: SVGRect; - baseVal: SVGRect; + readonly animVal: SVGRect; + readonly baseVal: SVGRect; } declare var SVGAnimatedRect: { @@ -8609,7 +9648,7 @@ declare var SVGAnimatedRect: { } interface SVGAnimatedString { - animVal: string; + readonly animVal: string; baseVal: string; } @@ -8619,8 +9658,8 @@ declare var SVGAnimatedString: { } interface SVGAnimatedTransformList { - animVal: SVGTransformList; - baseVal: SVGTransformList; + readonly animVal: SVGTransformList; + readonly baseVal: SVGTransformList; } declare var SVGAnimatedTransformList: { @@ -8629,9 +9668,9 @@ declare var SVGAnimatedTransformList: { } interface SVGCircleElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired { - cx: SVGAnimatedLength; - cy: SVGAnimatedLength; - r: SVGAnimatedLength; + readonly cx: SVGAnimatedLength; + readonly cy: SVGAnimatedLength; + readonly r: SVGAnimatedLength; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -8641,7 +9680,7 @@ declare var SVGCircleElement: { } interface SVGClipPathElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired, SVGUnitTypes { - clipPathUnits: SVGAnimatedEnumeration; + readonly clipPathUnits: SVGAnimatedEnumeration; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -8651,30 +9690,30 @@ declare var SVGClipPathElement: { } interface SVGComponentTransferFunctionElement extends SVGElement { - amplitude: SVGAnimatedNumber; - exponent: SVGAnimatedNumber; - intercept: SVGAnimatedNumber; - offset: SVGAnimatedNumber; - slope: SVGAnimatedNumber; - tableValues: SVGAnimatedNumberList; - type: SVGAnimatedEnumeration; - SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE: number; - SVG_FECOMPONENTTRANSFER_TYPE_GAMMA: number; - SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY: number; - SVG_FECOMPONENTTRANSFER_TYPE_LINEAR: number; - SVG_FECOMPONENTTRANSFER_TYPE_TABLE: number; - SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN: number; + readonly amplitude: SVGAnimatedNumber; + readonly exponent: SVGAnimatedNumber; + readonly intercept: SVGAnimatedNumber; + readonly offset: SVGAnimatedNumber; + readonly slope: SVGAnimatedNumber; + readonly tableValues: SVGAnimatedNumberList; + readonly type: SVGAnimatedEnumeration; + readonly SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE: number; + readonly SVG_FECOMPONENTTRANSFER_TYPE_GAMMA: number; + readonly SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY: number; + readonly SVG_FECOMPONENTTRANSFER_TYPE_LINEAR: number; + readonly SVG_FECOMPONENTTRANSFER_TYPE_TABLE: number; + readonly SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN: number; } declare var SVGComponentTransferFunctionElement: { prototype: SVGComponentTransferFunctionElement; new(): SVGComponentTransferFunctionElement; - SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE: number; - SVG_FECOMPONENTTRANSFER_TYPE_GAMMA: number; - SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY: number; - SVG_FECOMPONENTTRANSFER_TYPE_LINEAR: number; - SVG_FECOMPONENTTRANSFER_TYPE_TABLE: number; - SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN: number; + readonly SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE: number; + readonly SVG_FECOMPONENTTRANSFER_TYPE_GAMMA: number; + readonly SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY: number; + readonly SVG_FECOMPONENTTRANSFER_TYPE_LINEAR: number; + readonly SVG_FECOMPONENTTRANSFER_TYPE_TABLE: number; + readonly SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN: number; } interface SVGDefsElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired { @@ -8696,7 +9735,6 @@ declare var SVGDescElement: { } interface SVGElement extends Element { - id: string; onclick: (ev: MouseEvent) => any; ondblclick: (ev: MouseEvent) => any; onfocusin: (ev: FocusEvent) => any; @@ -8707,8 +9745,8 @@ interface SVGElement extends Element { onmouseout: (ev: MouseEvent) => any; onmouseover: (ev: MouseEvent) => any; onmouseup: (ev: MouseEvent) => any; - ownerSVGElement: SVGSVGElement; - viewportElement: SVGElement; + readonly ownerSVGElement: SVGSVGElement; + readonly viewportElement: SVGElement; xmlbase: string; className: any; addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; @@ -8766,14 +9804,14 @@ declare var SVGElement: { } interface SVGElementInstance extends EventTarget { - childNodes: SVGElementInstanceList; - correspondingElement: SVGElement; - correspondingUseElement: SVGUseElement; - firstChild: SVGElementInstance; - lastChild: SVGElementInstance; - nextSibling: SVGElementInstance; - parentNode: SVGElementInstance; - previousSibling: SVGElementInstance; + readonly childNodes: SVGElementInstanceList; + readonly correspondingElement: SVGElement; + readonly correspondingUseElement: SVGUseElement; + readonly firstChild: SVGElementInstance; + readonly lastChild: SVGElementInstance; + readonly nextSibling: SVGElementInstance; + readonly parentNode: SVGElementInstance; + readonly previousSibling: SVGElementInstance; } declare var SVGElementInstance: { @@ -8782,7 +9820,7 @@ declare var SVGElementInstance: { } interface SVGElementInstanceList { - length: number; + readonly length: number; item(index: number): SVGElementInstance; } @@ -8792,10 +9830,10 @@ declare var SVGElementInstanceList: { } interface SVGEllipseElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired { - cx: SVGAnimatedLength; - cy: SVGAnimatedLength; - rx: SVGAnimatedLength; - ry: SVGAnimatedLength; + readonly cx: SVGAnimatedLength; + readonly cy: SVGAnimatedLength; + readonly rx: SVGAnimatedLength; + readonly ry: SVGAnimatedLength; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -8805,75 +9843,75 @@ declare var SVGEllipseElement: { } interface SVGFEBlendElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - in1: SVGAnimatedString; - in2: SVGAnimatedString; - mode: SVGAnimatedEnumeration; - SVG_FEBLEND_MODE_COLOR: number; - SVG_FEBLEND_MODE_COLOR_BURN: number; - SVG_FEBLEND_MODE_COLOR_DODGE: number; - SVG_FEBLEND_MODE_DARKEN: number; - SVG_FEBLEND_MODE_DIFFERENCE: number; - SVG_FEBLEND_MODE_EXCLUSION: number; - SVG_FEBLEND_MODE_HARD_LIGHT: number; - SVG_FEBLEND_MODE_HUE: number; - SVG_FEBLEND_MODE_LIGHTEN: number; - SVG_FEBLEND_MODE_LUMINOSITY: number; - SVG_FEBLEND_MODE_MULTIPLY: number; - SVG_FEBLEND_MODE_NORMAL: number; - SVG_FEBLEND_MODE_OVERLAY: number; - SVG_FEBLEND_MODE_SATURATION: number; - SVG_FEBLEND_MODE_SCREEN: number; - SVG_FEBLEND_MODE_SOFT_LIGHT: number; - SVG_FEBLEND_MODE_UNKNOWN: number; + readonly in1: SVGAnimatedString; + readonly in2: SVGAnimatedString; + readonly mode: SVGAnimatedEnumeration; + readonly SVG_FEBLEND_MODE_COLOR: number; + readonly SVG_FEBLEND_MODE_COLOR_BURN: number; + readonly SVG_FEBLEND_MODE_COLOR_DODGE: number; + readonly SVG_FEBLEND_MODE_DARKEN: number; + readonly SVG_FEBLEND_MODE_DIFFERENCE: number; + readonly SVG_FEBLEND_MODE_EXCLUSION: number; + readonly SVG_FEBLEND_MODE_HARD_LIGHT: number; + readonly SVG_FEBLEND_MODE_HUE: number; + readonly SVG_FEBLEND_MODE_LIGHTEN: number; + readonly SVG_FEBLEND_MODE_LUMINOSITY: number; + readonly SVG_FEBLEND_MODE_MULTIPLY: number; + readonly SVG_FEBLEND_MODE_NORMAL: number; + readonly SVG_FEBLEND_MODE_OVERLAY: number; + readonly SVG_FEBLEND_MODE_SATURATION: number; + readonly SVG_FEBLEND_MODE_SCREEN: number; + readonly SVG_FEBLEND_MODE_SOFT_LIGHT: number; + readonly SVG_FEBLEND_MODE_UNKNOWN: number; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var SVGFEBlendElement: { prototype: SVGFEBlendElement; new(): SVGFEBlendElement; - SVG_FEBLEND_MODE_COLOR: number; - SVG_FEBLEND_MODE_COLOR_BURN: number; - SVG_FEBLEND_MODE_COLOR_DODGE: number; - SVG_FEBLEND_MODE_DARKEN: number; - SVG_FEBLEND_MODE_DIFFERENCE: number; - SVG_FEBLEND_MODE_EXCLUSION: number; - SVG_FEBLEND_MODE_HARD_LIGHT: number; - SVG_FEBLEND_MODE_HUE: number; - SVG_FEBLEND_MODE_LIGHTEN: number; - SVG_FEBLEND_MODE_LUMINOSITY: number; - SVG_FEBLEND_MODE_MULTIPLY: number; - SVG_FEBLEND_MODE_NORMAL: number; - SVG_FEBLEND_MODE_OVERLAY: number; - SVG_FEBLEND_MODE_SATURATION: number; - SVG_FEBLEND_MODE_SCREEN: number; - SVG_FEBLEND_MODE_SOFT_LIGHT: number; - SVG_FEBLEND_MODE_UNKNOWN: number; + readonly SVG_FEBLEND_MODE_COLOR: number; + readonly SVG_FEBLEND_MODE_COLOR_BURN: number; + readonly SVG_FEBLEND_MODE_COLOR_DODGE: number; + readonly SVG_FEBLEND_MODE_DARKEN: number; + readonly SVG_FEBLEND_MODE_DIFFERENCE: number; + readonly SVG_FEBLEND_MODE_EXCLUSION: number; + readonly SVG_FEBLEND_MODE_HARD_LIGHT: number; + readonly SVG_FEBLEND_MODE_HUE: number; + readonly SVG_FEBLEND_MODE_LIGHTEN: number; + readonly SVG_FEBLEND_MODE_LUMINOSITY: number; + readonly SVG_FEBLEND_MODE_MULTIPLY: number; + readonly SVG_FEBLEND_MODE_NORMAL: number; + readonly SVG_FEBLEND_MODE_OVERLAY: number; + readonly SVG_FEBLEND_MODE_SATURATION: number; + readonly SVG_FEBLEND_MODE_SCREEN: number; + readonly SVG_FEBLEND_MODE_SOFT_LIGHT: number; + readonly SVG_FEBLEND_MODE_UNKNOWN: number; } interface SVGFEColorMatrixElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - in1: SVGAnimatedString; - type: SVGAnimatedEnumeration; - values: SVGAnimatedNumberList; - SVG_FECOLORMATRIX_TYPE_HUEROTATE: number; - SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA: number; - SVG_FECOLORMATRIX_TYPE_MATRIX: number; - SVG_FECOLORMATRIX_TYPE_SATURATE: number; - SVG_FECOLORMATRIX_TYPE_UNKNOWN: number; + readonly in1: SVGAnimatedString; + readonly type: SVGAnimatedEnumeration; + readonly values: SVGAnimatedNumberList; + readonly SVG_FECOLORMATRIX_TYPE_HUEROTATE: number; + readonly SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA: number; + readonly SVG_FECOLORMATRIX_TYPE_MATRIX: number; + readonly SVG_FECOLORMATRIX_TYPE_SATURATE: number; + readonly SVG_FECOLORMATRIX_TYPE_UNKNOWN: number; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var SVGFEColorMatrixElement: { prototype: SVGFEColorMatrixElement; new(): SVGFEColorMatrixElement; - SVG_FECOLORMATRIX_TYPE_HUEROTATE: number; - SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA: number; - SVG_FECOLORMATRIX_TYPE_MATRIX: number; - SVG_FECOLORMATRIX_TYPE_SATURATE: number; - SVG_FECOLORMATRIX_TYPE_UNKNOWN: number; + readonly SVG_FECOLORMATRIX_TYPE_HUEROTATE: number; + readonly SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA: number; + readonly SVG_FECOLORMATRIX_TYPE_MATRIX: number; + readonly SVG_FECOLORMATRIX_TYPE_SATURATE: number; + readonly SVG_FECOLORMATRIX_TYPE_UNKNOWN: number; } interface SVGFEComponentTransferElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - in1: SVGAnimatedString; + readonly in1: SVGAnimatedString; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -8883,70 +9921,70 @@ declare var SVGFEComponentTransferElement: { } interface SVGFECompositeElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - in1: SVGAnimatedString; - in2: SVGAnimatedString; - k1: SVGAnimatedNumber; - k2: SVGAnimatedNumber; - k3: SVGAnimatedNumber; - k4: SVGAnimatedNumber; - operator: SVGAnimatedEnumeration; - SVG_FECOMPOSITE_OPERATOR_ARITHMETIC: number; - SVG_FECOMPOSITE_OPERATOR_ATOP: number; - SVG_FECOMPOSITE_OPERATOR_IN: number; - SVG_FECOMPOSITE_OPERATOR_OUT: number; - SVG_FECOMPOSITE_OPERATOR_OVER: number; - SVG_FECOMPOSITE_OPERATOR_UNKNOWN: number; - SVG_FECOMPOSITE_OPERATOR_XOR: number; + readonly in1: SVGAnimatedString; + readonly in2: SVGAnimatedString; + readonly k1: SVGAnimatedNumber; + readonly k2: SVGAnimatedNumber; + readonly k3: SVGAnimatedNumber; + readonly k4: SVGAnimatedNumber; + readonly operator: SVGAnimatedEnumeration; + readonly SVG_FECOMPOSITE_OPERATOR_ARITHMETIC: number; + readonly SVG_FECOMPOSITE_OPERATOR_ATOP: number; + readonly SVG_FECOMPOSITE_OPERATOR_IN: number; + readonly SVG_FECOMPOSITE_OPERATOR_OUT: number; + readonly SVG_FECOMPOSITE_OPERATOR_OVER: number; + readonly SVG_FECOMPOSITE_OPERATOR_UNKNOWN: number; + readonly SVG_FECOMPOSITE_OPERATOR_XOR: number; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var SVGFECompositeElement: { prototype: SVGFECompositeElement; new(): SVGFECompositeElement; - SVG_FECOMPOSITE_OPERATOR_ARITHMETIC: number; - SVG_FECOMPOSITE_OPERATOR_ATOP: number; - SVG_FECOMPOSITE_OPERATOR_IN: number; - SVG_FECOMPOSITE_OPERATOR_OUT: number; - SVG_FECOMPOSITE_OPERATOR_OVER: number; - SVG_FECOMPOSITE_OPERATOR_UNKNOWN: number; - SVG_FECOMPOSITE_OPERATOR_XOR: number; + readonly SVG_FECOMPOSITE_OPERATOR_ARITHMETIC: number; + readonly SVG_FECOMPOSITE_OPERATOR_ATOP: number; + readonly SVG_FECOMPOSITE_OPERATOR_IN: number; + readonly SVG_FECOMPOSITE_OPERATOR_OUT: number; + readonly SVG_FECOMPOSITE_OPERATOR_OVER: number; + readonly SVG_FECOMPOSITE_OPERATOR_UNKNOWN: number; + readonly SVG_FECOMPOSITE_OPERATOR_XOR: number; } interface SVGFEConvolveMatrixElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - bias: SVGAnimatedNumber; - divisor: SVGAnimatedNumber; - edgeMode: SVGAnimatedEnumeration; - in1: SVGAnimatedString; - kernelMatrix: SVGAnimatedNumberList; - kernelUnitLengthX: SVGAnimatedNumber; - kernelUnitLengthY: SVGAnimatedNumber; - orderX: SVGAnimatedInteger; - orderY: SVGAnimatedInteger; - preserveAlpha: SVGAnimatedBoolean; - targetX: SVGAnimatedInteger; - targetY: SVGAnimatedInteger; - SVG_EDGEMODE_DUPLICATE: number; - SVG_EDGEMODE_NONE: number; - SVG_EDGEMODE_UNKNOWN: number; - SVG_EDGEMODE_WRAP: number; + readonly bias: SVGAnimatedNumber; + readonly divisor: SVGAnimatedNumber; + readonly edgeMode: SVGAnimatedEnumeration; + readonly in1: SVGAnimatedString; + readonly kernelMatrix: SVGAnimatedNumberList; + readonly kernelUnitLengthX: SVGAnimatedNumber; + readonly kernelUnitLengthY: SVGAnimatedNumber; + readonly orderX: SVGAnimatedInteger; + readonly orderY: SVGAnimatedInteger; + readonly preserveAlpha: SVGAnimatedBoolean; + readonly targetX: SVGAnimatedInteger; + readonly targetY: SVGAnimatedInteger; + readonly SVG_EDGEMODE_DUPLICATE: number; + readonly SVG_EDGEMODE_NONE: number; + readonly SVG_EDGEMODE_UNKNOWN: number; + readonly SVG_EDGEMODE_WRAP: number; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var SVGFEConvolveMatrixElement: { prototype: SVGFEConvolveMatrixElement; new(): SVGFEConvolveMatrixElement; - SVG_EDGEMODE_DUPLICATE: number; - SVG_EDGEMODE_NONE: number; - SVG_EDGEMODE_UNKNOWN: number; - SVG_EDGEMODE_WRAP: number; + readonly SVG_EDGEMODE_DUPLICATE: number; + readonly SVG_EDGEMODE_NONE: number; + readonly SVG_EDGEMODE_UNKNOWN: number; + readonly SVG_EDGEMODE_WRAP: number; } interface SVGFEDiffuseLightingElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - diffuseConstant: SVGAnimatedNumber; - in1: SVGAnimatedString; - kernelUnitLengthX: SVGAnimatedNumber; - kernelUnitLengthY: SVGAnimatedNumber; - surfaceScale: SVGAnimatedNumber; + readonly diffuseConstant: SVGAnimatedNumber; + readonly in1: SVGAnimatedString; + readonly kernelUnitLengthX: SVGAnimatedNumber; + readonly kernelUnitLengthY: SVGAnimatedNumber; + readonly surfaceScale: SVGAnimatedNumber; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -8956,32 +9994,32 @@ declare var SVGFEDiffuseLightingElement: { } interface SVGFEDisplacementMapElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - in1: SVGAnimatedString; - in2: SVGAnimatedString; - scale: SVGAnimatedNumber; - xChannelSelector: SVGAnimatedEnumeration; - yChannelSelector: SVGAnimatedEnumeration; - SVG_CHANNEL_A: number; - SVG_CHANNEL_B: number; - SVG_CHANNEL_G: number; - SVG_CHANNEL_R: number; - SVG_CHANNEL_UNKNOWN: number; + readonly in1: SVGAnimatedString; + readonly in2: SVGAnimatedString; + readonly scale: SVGAnimatedNumber; + readonly xChannelSelector: SVGAnimatedEnumeration; + readonly yChannelSelector: SVGAnimatedEnumeration; + readonly SVG_CHANNEL_A: number; + readonly SVG_CHANNEL_B: number; + readonly SVG_CHANNEL_G: number; + readonly SVG_CHANNEL_R: number; + readonly SVG_CHANNEL_UNKNOWN: number; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var SVGFEDisplacementMapElement: { prototype: SVGFEDisplacementMapElement; new(): SVGFEDisplacementMapElement; - SVG_CHANNEL_A: number; - SVG_CHANNEL_B: number; - SVG_CHANNEL_G: number; - SVG_CHANNEL_R: number; - SVG_CHANNEL_UNKNOWN: number; + readonly SVG_CHANNEL_A: number; + readonly SVG_CHANNEL_B: number; + readonly SVG_CHANNEL_G: number; + readonly SVG_CHANNEL_R: number; + readonly SVG_CHANNEL_UNKNOWN: number; } interface SVGFEDistantLightElement extends SVGElement { - azimuth: SVGAnimatedNumber; - elevation: SVGAnimatedNumber; + readonly azimuth: SVGAnimatedNumber; + readonly elevation: SVGAnimatedNumber; } declare var SVGFEDistantLightElement: { @@ -9031,9 +10069,9 @@ declare var SVGFEFuncRElement: { } interface SVGFEGaussianBlurElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - in1: SVGAnimatedString; - stdDeviationX: SVGAnimatedNumber; - stdDeviationY: SVGAnimatedNumber; + readonly in1: SVGAnimatedString; + readonly stdDeviationX: SVGAnimatedNumber; + readonly stdDeviationY: SVGAnimatedNumber; setStdDeviation(stdDeviationX: number, stdDeviationY: number): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -9044,7 +10082,7 @@ declare var SVGFEGaussianBlurElement: { } interface SVGFEImageElement extends SVGElement, SVGFilterPrimitiveStandardAttributes, SVGLangSpace, SVGURIReference, SVGExternalResourcesRequired { - preserveAspectRatio: SVGAnimatedPreserveAspectRatio; + readonly preserveAspectRatio: SVGAnimatedPreserveAspectRatio; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -9063,7 +10101,7 @@ declare var SVGFEMergeElement: { } interface SVGFEMergeNodeElement extends SVGElement { - in1: SVGAnimatedString; + readonly in1: SVGAnimatedString; } declare var SVGFEMergeNodeElement: { @@ -9072,28 +10110,28 @@ declare var SVGFEMergeNodeElement: { } interface SVGFEMorphologyElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - in1: SVGAnimatedString; - operator: SVGAnimatedEnumeration; - radiusX: SVGAnimatedNumber; - radiusY: SVGAnimatedNumber; - SVG_MORPHOLOGY_OPERATOR_DILATE: number; - SVG_MORPHOLOGY_OPERATOR_ERODE: number; - SVG_MORPHOLOGY_OPERATOR_UNKNOWN: number; + readonly in1: SVGAnimatedString; + readonly operator: SVGAnimatedEnumeration; + readonly radiusX: SVGAnimatedNumber; + readonly radiusY: SVGAnimatedNumber; + readonly SVG_MORPHOLOGY_OPERATOR_DILATE: number; + readonly SVG_MORPHOLOGY_OPERATOR_ERODE: number; + readonly SVG_MORPHOLOGY_OPERATOR_UNKNOWN: number; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var SVGFEMorphologyElement: { prototype: SVGFEMorphologyElement; new(): SVGFEMorphologyElement; - SVG_MORPHOLOGY_OPERATOR_DILATE: number; - SVG_MORPHOLOGY_OPERATOR_ERODE: number; - SVG_MORPHOLOGY_OPERATOR_UNKNOWN: number; + readonly SVG_MORPHOLOGY_OPERATOR_DILATE: number; + readonly SVG_MORPHOLOGY_OPERATOR_ERODE: number; + readonly SVG_MORPHOLOGY_OPERATOR_UNKNOWN: number; } interface SVGFEOffsetElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - dx: SVGAnimatedNumber; - dy: SVGAnimatedNumber; - in1: SVGAnimatedString; + readonly dx: SVGAnimatedNumber; + readonly dy: SVGAnimatedNumber; + readonly in1: SVGAnimatedString; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -9103,9 +10141,9 @@ declare var SVGFEOffsetElement: { } interface SVGFEPointLightElement extends SVGElement { - x: SVGAnimatedNumber; - y: SVGAnimatedNumber; - z: SVGAnimatedNumber; + readonly x: SVGAnimatedNumber; + readonly y: SVGAnimatedNumber; + readonly z: SVGAnimatedNumber; } declare var SVGFEPointLightElement: { @@ -9114,12 +10152,12 @@ declare var SVGFEPointLightElement: { } interface SVGFESpecularLightingElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - in1: SVGAnimatedString; - kernelUnitLengthX: SVGAnimatedNumber; - kernelUnitLengthY: SVGAnimatedNumber; - specularConstant: SVGAnimatedNumber; - specularExponent: SVGAnimatedNumber; - surfaceScale: SVGAnimatedNumber; + readonly in1: SVGAnimatedString; + readonly kernelUnitLengthX: SVGAnimatedNumber; + readonly kernelUnitLengthY: SVGAnimatedNumber; + readonly specularConstant: SVGAnimatedNumber; + readonly specularExponent: SVGAnimatedNumber; + readonly surfaceScale: SVGAnimatedNumber; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -9129,14 +10167,14 @@ declare var SVGFESpecularLightingElement: { } interface SVGFESpotLightElement extends SVGElement { - limitingConeAngle: SVGAnimatedNumber; - pointsAtX: SVGAnimatedNumber; - pointsAtY: SVGAnimatedNumber; - pointsAtZ: SVGAnimatedNumber; - specularExponent: SVGAnimatedNumber; - x: SVGAnimatedNumber; - y: SVGAnimatedNumber; - z: SVGAnimatedNumber; + readonly limitingConeAngle: SVGAnimatedNumber; + readonly pointsAtX: SVGAnimatedNumber; + readonly pointsAtY: SVGAnimatedNumber; + readonly pointsAtZ: SVGAnimatedNumber; + readonly specularExponent: SVGAnimatedNumber; + readonly x: SVGAnimatedNumber; + readonly y: SVGAnimatedNumber; + readonly z: SVGAnimatedNumber; } declare var SVGFESpotLightElement: { @@ -9145,7 +10183,7 @@ declare var SVGFESpotLightElement: { } interface SVGFETileElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - in1: SVGAnimatedString; + readonly in1: SVGAnimatedString; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -9155,41 +10193,41 @@ declare var SVGFETileElement: { } interface SVGFETurbulenceElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - baseFrequencyX: SVGAnimatedNumber; - baseFrequencyY: SVGAnimatedNumber; - numOctaves: SVGAnimatedInteger; - seed: SVGAnimatedNumber; - stitchTiles: SVGAnimatedEnumeration; - type: SVGAnimatedEnumeration; - SVG_STITCHTYPE_NOSTITCH: number; - SVG_STITCHTYPE_STITCH: number; - SVG_STITCHTYPE_UNKNOWN: number; - SVG_TURBULENCE_TYPE_FRACTALNOISE: number; - SVG_TURBULENCE_TYPE_TURBULENCE: number; - SVG_TURBULENCE_TYPE_UNKNOWN: number; + readonly baseFrequencyX: SVGAnimatedNumber; + readonly baseFrequencyY: SVGAnimatedNumber; + readonly numOctaves: SVGAnimatedInteger; + readonly seed: SVGAnimatedNumber; + readonly stitchTiles: SVGAnimatedEnumeration; + readonly type: SVGAnimatedEnumeration; + readonly SVG_STITCHTYPE_NOSTITCH: number; + readonly SVG_STITCHTYPE_STITCH: number; + readonly SVG_STITCHTYPE_UNKNOWN: number; + readonly SVG_TURBULENCE_TYPE_FRACTALNOISE: number; + readonly SVG_TURBULENCE_TYPE_TURBULENCE: number; + readonly SVG_TURBULENCE_TYPE_UNKNOWN: number; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var SVGFETurbulenceElement: { prototype: SVGFETurbulenceElement; new(): SVGFETurbulenceElement; - SVG_STITCHTYPE_NOSTITCH: number; - SVG_STITCHTYPE_STITCH: number; - SVG_STITCHTYPE_UNKNOWN: number; - SVG_TURBULENCE_TYPE_FRACTALNOISE: number; - SVG_TURBULENCE_TYPE_TURBULENCE: number; - SVG_TURBULENCE_TYPE_UNKNOWN: number; + readonly SVG_STITCHTYPE_NOSTITCH: number; + readonly SVG_STITCHTYPE_STITCH: number; + readonly SVG_STITCHTYPE_UNKNOWN: number; + readonly SVG_TURBULENCE_TYPE_FRACTALNOISE: number; + readonly SVG_TURBULENCE_TYPE_TURBULENCE: number; + readonly SVG_TURBULENCE_TYPE_UNKNOWN: number; } interface SVGFilterElement extends SVGElement, SVGUnitTypes, SVGStylable, SVGLangSpace, SVGURIReference, SVGExternalResourcesRequired { - filterResX: SVGAnimatedInteger; - filterResY: SVGAnimatedInteger; - filterUnits: SVGAnimatedEnumeration; - height: SVGAnimatedLength; - primitiveUnits: SVGAnimatedEnumeration; - width: SVGAnimatedLength; - x: SVGAnimatedLength; - y: SVGAnimatedLength; + readonly filterResX: SVGAnimatedInteger; + readonly filterResY: SVGAnimatedInteger; + readonly filterUnits: SVGAnimatedEnumeration; + readonly height: SVGAnimatedLength; + readonly primitiveUnits: SVGAnimatedEnumeration; + readonly width: SVGAnimatedLength; + readonly x: SVGAnimatedLength; + readonly y: SVGAnimatedLength; setFilterRes(filterResX: number, filterResY: number): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -9200,10 +10238,10 @@ declare var SVGFilterElement: { } interface SVGForeignObjectElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired { - height: SVGAnimatedLength; - width: SVGAnimatedLength; - x: SVGAnimatedLength; - y: SVGAnimatedLength; + readonly height: SVGAnimatedLength; + readonly width: SVGAnimatedLength; + readonly x: SVGAnimatedLength; + readonly y: SVGAnimatedLength; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -9222,31 +10260,31 @@ declare var SVGGElement: { } interface SVGGradientElement extends SVGElement, SVGStylable, SVGExternalResourcesRequired, SVGURIReference, SVGUnitTypes { - gradientTransform: SVGAnimatedTransformList; - gradientUnits: SVGAnimatedEnumeration; - spreadMethod: SVGAnimatedEnumeration; - SVG_SPREADMETHOD_PAD: number; - SVG_SPREADMETHOD_REFLECT: number; - SVG_SPREADMETHOD_REPEAT: number; - SVG_SPREADMETHOD_UNKNOWN: number; + readonly gradientTransform: SVGAnimatedTransformList; + readonly gradientUnits: SVGAnimatedEnumeration; + readonly spreadMethod: SVGAnimatedEnumeration; + readonly SVG_SPREADMETHOD_PAD: number; + readonly SVG_SPREADMETHOD_REFLECT: number; + readonly SVG_SPREADMETHOD_REPEAT: number; + readonly SVG_SPREADMETHOD_UNKNOWN: number; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var SVGGradientElement: { prototype: SVGGradientElement; new(): SVGGradientElement; - SVG_SPREADMETHOD_PAD: number; - SVG_SPREADMETHOD_REFLECT: number; - SVG_SPREADMETHOD_REPEAT: number; - SVG_SPREADMETHOD_UNKNOWN: number; + readonly SVG_SPREADMETHOD_PAD: number; + readonly SVG_SPREADMETHOD_REFLECT: number; + readonly SVG_SPREADMETHOD_REPEAT: number; + readonly SVG_SPREADMETHOD_UNKNOWN: number; } interface SVGImageElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired, SVGURIReference { - height: SVGAnimatedLength; - preserveAspectRatio: SVGAnimatedPreserveAspectRatio; - width: SVGAnimatedLength; - x: SVGAnimatedLength; - y: SVGAnimatedLength; + readonly height: SVGAnimatedLength; + readonly preserveAspectRatio: SVGAnimatedPreserveAspectRatio; + readonly width: SVGAnimatedLength; + readonly x: SVGAnimatedLength; + readonly y: SVGAnimatedLength; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -9256,43 +10294,43 @@ declare var SVGImageElement: { } interface SVGLength { - unitType: number; + readonly unitType: number; value: number; valueAsString: string; valueInSpecifiedUnits: number; convertToSpecifiedUnits(unitType: number): void; newValueSpecifiedUnits(unitType: number, valueInSpecifiedUnits: number): void; - SVG_LENGTHTYPE_CM: number; - SVG_LENGTHTYPE_EMS: number; - SVG_LENGTHTYPE_EXS: number; - SVG_LENGTHTYPE_IN: number; - SVG_LENGTHTYPE_MM: number; - SVG_LENGTHTYPE_NUMBER: number; - SVG_LENGTHTYPE_PC: number; - SVG_LENGTHTYPE_PERCENTAGE: number; - SVG_LENGTHTYPE_PT: number; - SVG_LENGTHTYPE_PX: number; - SVG_LENGTHTYPE_UNKNOWN: number; + readonly SVG_LENGTHTYPE_CM: number; + readonly SVG_LENGTHTYPE_EMS: number; + readonly SVG_LENGTHTYPE_EXS: number; + readonly SVG_LENGTHTYPE_IN: number; + readonly SVG_LENGTHTYPE_MM: number; + readonly SVG_LENGTHTYPE_NUMBER: number; + readonly SVG_LENGTHTYPE_PC: number; + readonly SVG_LENGTHTYPE_PERCENTAGE: number; + readonly SVG_LENGTHTYPE_PT: number; + readonly SVG_LENGTHTYPE_PX: number; + readonly SVG_LENGTHTYPE_UNKNOWN: number; } declare var SVGLength: { prototype: SVGLength; new(): SVGLength; - SVG_LENGTHTYPE_CM: number; - SVG_LENGTHTYPE_EMS: number; - SVG_LENGTHTYPE_EXS: number; - SVG_LENGTHTYPE_IN: number; - SVG_LENGTHTYPE_MM: number; - SVG_LENGTHTYPE_NUMBER: number; - SVG_LENGTHTYPE_PC: number; - SVG_LENGTHTYPE_PERCENTAGE: number; - SVG_LENGTHTYPE_PT: number; - SVG_LENGTHTYPE_PX: number; - SVG_LENGTHTYPE_UNKNOWN: number; + readonly SVG_LENGTHTYPE_CM: number; + readonly SVG_LENGTHTYPE_EMS: number; + readonly SVG_LENGTHTYPE_EXS: number; + readonly SVG_LENGTHTYPE_IN: number; + readonly SVG_LENGTHTYPE_MM: number; + readonly SVG_LENGTHTYPE_NUMBER: number; + readonly SVG_LENGTHTYPE_PC: number; + readonly SVG_LENGTHTYPE_PERCENTAGE: number; + readonly SVG_LENGTHTYPE_PT: number; + readonly SVG_LENGTHTYPE_PX: number; + readonly SVG_LENGTHTYPE_UNKNOWN: number; } interface SVGLengthList { - numberOfItems: number; + readonly numberOfItems: number; appendItem(newItem: SVGLength): SVGLength; clear(): void; getItem(index: number): SVGLength; @@ -9308,10 +10346,10 @@ declare var SVGLengthList: { } interface SVGLineElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired { - x1: SVGAnimatedLength; - x2: SVGAnimatedLength; - y1: SVGAnimatedLength; - y2: SVGAnimatedLength; + readonly x1: SVGAnimatedLength; + readonly x2: SVGAnimatedLength; + readonly y1: SVGAnimatedLength; + readonly y2: SVGAnimatedLength; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -9321,10 +10359,10 @@ declare var SVGLineElement: { } interface SVGLinearGradientElement extends SVGGradientElement { - x1: SVGAnimatedLength; - x2: SVGAnimatedLength; - y1: SVGAnimatedLength; - y2: SVGAnimatedLength; + readonly x1: SVGAnimatedLength; + readonly x2: SVGAnimatedLength; + readonly y1: SVGAnimatedLength; + readonly y2: SVGAnimatedLength; } declare var SVGLinearGradientElement: { @@ -9333,42 +10371,42 @@ declare var SVGLinearGradientElement: { } interface SVGMarkerElement extends SVGElement, SVGStylable, SVGLangSpace, SVGExternalResourcesRequired, SVGFitToViewBox { - markerHeight: SVGAnimatedLength; - markerUnits: SVGAnimatedEnumeration; - markerWidth: SVGAnimatedLength; - orientAngle: SVGAnimatedAngle; - orientType: SVGAnimatedEnumeration; - refX: SVGAnimatedLength; - refY: SVGAnimatedLength; + readonly markerHeight: SVGAnimatedLength; + readonly markerUnits: SVGAnimatedEnumeration; + readonly markerWidth: SVGAnimatedLength; + readonly orientAngle: SVGAnimatedAngle; + readonly orientType: SVGAnimatedEnumeration; + readonly refX: SVGAnimatedLength; + readonly refY: SVGAnimatedLength; setOrientToAngle(angle: SVGAngle): void; setOrientToAuto(): void; - SVG_MARKERUNITS_STROKEWIDTH: number; - SVG_MARKERUNITS_UNKNOWN: number; - SVG_MARKERUNITS_USERSPACEONUSE: number; - SVG_MARKER_ORIENT_ANGLE: number; - SVG_MARKER_ORIENT_AUTO: number; - SVG_MARKER_ORIENT_UNKNOWN: number; + readonly SVG_MARKERUNITS_STROKEWIDTH: number; + readonly SVG_MARKERUNITS_UNKNOWN: number; + readonly SVG_MARKERUNITS_USERSPACEONUSE: number; + readonly SVG_MARKER_ORIENT_ANGLE: number; + readonly SVG_MARKER_ORIENT_AUTO: number; + readonly SVG_MARKER_ORIENT_UNKNOWN: number; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var SVGMarkerElement: { prototype: SVGMarkerElement; new(): SVGMarkerElement; - SVG_MARKERUNITS_STROKEWIDTH: number; - SVG_MARKERUNITS_UNKNOWN: number; - SVG_MARKERUNITS_USERSPACEONUSE: number; - SVG_MARKER_ORIENT_ANGLE: number; - SVG_MARKER_ORIENT_AUTO: number; - SVG_MARKER_ORIENT_UNKNOWN: number; + readonly SVG_MARKERUNITS_STROKEWIDTH: number; + readonly SVG_MARKERUNITS_UNKNOWN: number; + readonly SVG_MARKERUNITS_USERSPACEONUSE: number; + readonly SVG_MARKER_ORIENT_ANGLE: number; + readonly SVG_MARKER_ORIENT_AUTO: number; + readonly SVG_MARKER_ORIENT_UNKNOWN: number; } interface SVGMaskElement extends SVGElement, SVGStylable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired, SVGUnitTypes { - height: SVGAnimatedLength; - maskContentUnits: SVGAnimatedEnumeration; - maskUnits: SVGAnimatedEnumeration; - width: SVGAnimatedLength; - x: SVGAnimatedLength; - y: SVGAnimatedLength; + readonly height: SVGAnimatedLength; + readonly maskContentUnits: SVGAnimatedEnumeration; + readonly maskUnits: SVGAnimatedEnumeration; + readonly width: SVGAnimatedLength; + readonly x: SVGAnimatedLength; + readonly y: SVGAnimatedLength; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -9420,7 +10458,7 @@ declare var SVGNumber: { } interface SVGNumberList { - numberOfItems: number; + readonly numberOfItems: number; appendItem(newItem: SVGNumber): SVGNumber; clear(): void; getItem(index: number): SVGNumber; @@ -9467,53 +10505,53 @@ declare var SVGPathElement: { } interface SVGPathSeg { - pathSegType: number; - pathSegTypeAsLetter: string; - PATHSEG_ARC_ABS: number; - PATHSEG_ARC_REL: number; - PATHSEG_CLOSEPATH: number; - PATHSEG_CURVETO_CUBIC_ABS: number; - PATHSEG_CURVETO_CUBIC_REL: number; - PATHSEG_CURVETO_CUBIC_SMOOTH_ABS: number; - PATHSEG_CURVETO_CUBIC_SMOOTH_REL: number; - PATHSEG_CURVETO_QUADRATIC_ABS: number; - PATHSEG_CURVETO_QUADRATIC_REL: number; - PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS: number; - PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL: number; - PATHSEG_LINETO_ABS: number; - PATHSEG_LINETO_HORIZONTAL_ABS: number; - PATHSEG_LINETO_HORIZONTAL_REL: number; - PATHSEG_LINETO_REL: number; - PATHSEG_LINETO_VERTICAL_ABS: number; - PATHSEG_LINETO_VERTICAL_REL: number; - PATHSEG_MOVETO_ABS: number; - PATHSEG_MOVETO_REL: number; - PATHSEG_UNKNOWN: number; + readonly pathSegType: number; + readonly pathSegTypeAsLetter: string; + readonly PATHSEG_ARC_ABS: number; + readonly PATHSEG_ARC_REL: number; + readonly PATHSEG_CLOSEPATH: number; + readonly PATHSEG_CURVETO_CUBIC_ABS: number; + readonly PATHSEG_CURVETO_CUBIC_REL: number; + readonly PATHSEG_CURVETO_CUBIC_SMOOTH_ABS: number; + readonly PATHSEG_CURVETO_CUBIC_SMOOTH_REL: number; + readonly PATHSEG_CURVETO_QUADRATIC_ABS: number; + readonly PATHSEG_CURVETO_QUADRATIC_REL: number; + readonly PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS: number; + readonly PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL: number; + readonly PATHSEG_LINETO_ABS: number; + readonly PATHSEG_LINETO_HORIZONTAL_ABS: number; + readonly PATHSEG_LINETO_HORIZONTAL_REL: number; + readonly PATHSEG_LINETO_REL: number; + readonly PATHSEG_LINETO_VERTICAL_ABS: number; + readonly PATHSEG_LINETO_VERTICAL_REL: number; + readonly PATHSEG_MOVETO_ABS: number; + readonly PATHSEG_MOVETO_REL: number; + readonly PATHSEG_UNKNOWN: number; } declare var SVGPathSeg: { prototype: SVGPathSeg; new(): SVGPathSeg; - PATHSEG_ARC_ABS: number; - PATHSEG_ARC_REL: number; - PATHSEG_CLOSEPATH: number; - PATHSEG_CURVETO_CUBIC_ABS: number; - PATHSEG_CURVETO_CUBIC_REL: number; - PATHSEG_CURVETO_CUBIC_SMOOTH_ABS: number; - PATHSEG_CURVETO_CUBIC_SMOOTH_REL: number; - PATHSEG_CURVETO_QUADRATIC_ABS: number; - PATHSEG_CURVETO_QUADRATIC_REL: number; - PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS: number; - PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL: number; - PATHSEG_LINETO_ABS: number; - PATHSEG_LINETO_HORIZONTAL_ABS: number; - PATHSEG_LINETO_HORIZONTAL_REL: number; - PATHSEG_LINETO_REL: number; - PATHSEG_LINETO_VERTICAL_ABS: number; - PATHSEG_LINETO_VERTICAL_REL: number; - PATHSEG_MOVETO_ABS: number; - PATHSEG_MOVETO_REL: number; - PATHSEG_UNKNOWN: number; + readonly PATHSEG_ARC_ABS: number; + readonly PATHSEG_ARC_REL: number; + readonly PATHSEG_CLOSEPATH: number; + readonly PATHSEG_CURVETO_CUBIC_ABS: number; + readonly PATHSEG_CURVETO_CUBIC_REL: number; + readonly PATHSEG_CURVETO_CUBIC_SMOOTH_ABS: number; + readonly PATHSEG_CURVETO_CUBIC_SMOOTH_REL: number; + readonly PATHSEG_CURVETO_QUADRATIC_ABS: number; + readonly PATHSEG_CURVETO_QUADRATIC_REL: number; + readonly PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS: number; + readonly PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL: number; + readonly PATHSEG_LINETO_ABS: number; + readonly PATHSEG_LINETO_HORIZONTAL_ABS: number; + readonly PATHSEG_LINETO_HORIZONTAL_REL: number; + readonly PATHSEG_LINETO_REL: number; + readonly PATHSEG_LINETO_VERTICAL_ABS: number; + readonly PATHSEG_LINETO_VERTICAL_REL: number; + readonly PATHSEG_MOVETO_ABS: number; + readonly PATHSEG_MOVETO_REL: number; + readonly PATHSEG_UNKNOWN: number; } interface SVGPathSegArcAbs extends SVGPathSeg { @@ -9707,7 +10745,7 @@ declare var SVGPathSegLinetoVerticalRel: { } interface SVGPathSegList { - numberOfItems: number; + readonly numberOfItems: number; appendItem(newItem: SVGPathSeg): SVGPathSeg; clear(): void; getItem(index: number): SVGPathSeg; @@ -9743,13 +10781,13 @@ declare var SVGPathSegMovetoRel: { } interface SVGPatternElement extends SVGElement, SVGStylable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired, SVGFitToViewBox, SVGURIReference, SVGUnitTypes { - height: SVGAnimatedLength; - patternContentUnits: SVGAnimatedEnumeration; - patternTransform: SVGAnimatedTransformList; - patternUnits: SVGAnimatedEnumeration; - width: SVGAnimatedLength; - x: SVGAnimatedLength; - y: SVGAnimatedLength; + readonly height: SVGAnimatedLength; + readonly patternContentUnits: SVGAnimatedEnumeration; + readonly patternTransform: SVGAnimatedTransformList; + readonly patternUnits: SVGAnimatedEnumeration; + readonly width: SVGAnimatedLength; + readonly x: SVGAnimatedLength; + readonly y: SVGAnimatedLength; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -9770,7 +10808,7 @@ declare var SVGPoint: { } interface SVGPointList { - numberOfItems: number; + readonly numberOfItems: number; appendItem(newItem: SVGPoint): SVGPoint; clear(): void; getItem(index: number): SVGPoint; @@ -9806,47 +10844,47 @@ declare var SVGPolylineElement: { interface SVGPreserveAspectRatio { align: number; meetOrSlice: number; - SVG_MEETORSLICE_MEET: number; - SVG_MEETORSLICE_SLICE: number; - SVG_MEETORSLICE_UNKNOWN: number; - SVG_PRESERVEASPECTRATIO_NONE: number; - SVG_PRESERVEASPECTRATIO_UNKNOWN: number; - SVG_PRESERVEASPECTRATIO_XMAXYMAX: number; - SVG_PRESERVEASPECTRATIO_XMAXYMID: number; - SVG_PRESERVEASPECTRATIO_XMAXYMIN: number; - SVG_PRESERVEASPECTRATIO_XMIDYMAX: number; - SVG_PRESERVEASPECTRATIO_XMIDYMID: number; - SVG_PRESERVEASPECTRATIO_XMIDYMIN: number; - SVG_PRESERVEASPECTRATIO_XMINYMAX: number; - SVG_PRESERVEASPECTRATIO_XMINYMID: number; - SVG_PRESERVEASPECTRATIO_XMINYMIN: number; + readonly SVG_MEETORSLICE_MEET: number; + readonly SVG_MEETORSLICE_SLICE: number; + readonly SVG_MEETORSLICE_UNKNOWN: number; + readonly SVG_PRESERVEASPECTRATIO_NONE: number; + readonly SVG_PRESERVEASPECTRATIO_UNKNOWN: number; + readonly SVG_PRESERVEASPECTRATIO_XMAXYMAX: number; + readonly SVG_PRESERVEASPECTRATIO_XMAXYMID: number; + readonly SVG_PRESERVEASPECTRATIO_XMAXYMIN: number; + readonly SVG_PRESERVEASPECTRATIO_XMIDYMAX: number; + readonly SVG_PRESERVEASPECTRATIO_XMIDYMID: number; + readonly SVG_PRESERVEASPECTRATIO_XMIDYMIN: number; + readonly SVG_PRESERVEASPECTRATIO_XMINYMAX: number; + readonly SVG_PRESERVEASPECTRATIO_XMINYMID: number; + readonly SVG_PRESERVEASPECTRATIO_XMINYMIN: number; } declare var SVGPreserveAspectRatio: { prototype: SVGPreserveAspectRatio; new(): SVGPreserveAspectRatio; - SVG_MEETORSLICE_MEET: number; - SVG_MEETORSLICE_SLICE: number; - SVG_MEETORSLICE_UNKNOWN: number; - SVG_PRESERVEASPECTRATIO_NONE: number; - SVG_PRESERVEASPECTRATIO_UNKNOWN: number; - SVG_PRESERVEASPECTRATIO_XMAXYMAX: number; - SVG_PRESERVEASPECTRATIO_XMAXYMID: number; - SVG_PRESERVEASPECTRATIO_XMAXYMIN: number; - SVG_PRESERVEASPECTRATIO_XMIDYMAX: number; - SVG_PRESERVEASPECTRATIO_XMIDYMID: number; - SVG_PRESERVEASPECTRATIO_XMIDYMIN: number; - SVG_PRESERVEASPECTRATIO_XMINYMAX: number; - SVG_PRESERVEASPECTRATIO_XMINYMID: number; - SVG_PRESERVEASPECTRATIO_XMINYMIN: number; + readonly SVG_MEETORSLICE_MEET: number; + readonly SVG_MEETORSLICE_SLICE: number; + readonly SVG_MEETORSLICE_UNKNOWN: number; + readonly SVG_PRESERVEASPECTRATIO_NONE: number; + readonly SVG_PRESERVEASPECTRATIO_UNKNOWN: number; + readonly SVG_PRESERVEASPECTRATIO_XMAXYMAX: number; + readonly SVG_PRESERVEASPECTRATIO_XMAXYMID: number; + readonly SVG_PRESERVEASPECTRATIO_XMAXYMIN: number; + readonly SVG_PRESERVEASPECTRATIO_XMIDYMAX: number; + readonly SVG_PRESERVEASPECTRATIO_XMIDYMID: number; + readonly SVG_PRESERVEASPECTRATIO_XMIDYMIN: number; + readonly SVG_PRESERVEASPECTRATIO_XMINYMAX: number; + readonly SVG_PRESERVEASPECTRATIO_XMINYMID: number; + readonly SVG_PRESERVEASPECTRATIO_XMINYMIN: number; } interface SVGRadialGradientElement extends SVGGradientElement { - cx: SVGAnimatedLength; - cy: SVGAnimatedLength; - fx: SVGAnimatedLength; - fy: SVGAnimatedLength; - r: SVGAnimatedLength; + readonly cx: SVGAnimatedLength; + readonly cy: SVGAnimatedLength; + readonly fx: SVGAnimatedLength; + readonly fy: SVGAnimatedLength; + readonly r: SVGAnimatedLength; } declare var SVGRadialGradientElement: { @@ -9867,12 +10905,12 @@ declare var SVGRect: { } interface SVGRectElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired { - height: SVGAnimatedLength; - rx: SVGAnimatedLength; - ry: SVGAnimatedLength; - width: SVGAnimatedLength; - x: SVGAnimatedLength; - y: SVGAnimatedLength; + readonly height: SVGAnimatedLength; + readonly rx: SVGAnimatedLength; + readonly ry: SVGAnimatedLength; + readonly width: SVGAnimatedLength; + readonly x: SVGAnimatedLength; + readonly y: SVGAnimatedLength; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -9885,22 +10923,22 @@ interface SVGSVGElement extends SVGElement, DocumentEvent, SVGLocatable, SVGTest contentScriptType: string; contentStyleType: string; currentScale: number; - currentTranslate: SVGPoint; - height: SVGAnimatedLength; + readonly currentTranslate: SVGPoint; + readonly height: SVGAnimatedLength; onabort: (ev: Event) => any; onerror: (ev: Event) => any; onresize: (ev: UIEvent) => any; onscroll: (ev: UIEvent) => any; onunload: (ev: Event) => any; onzoom: (ev: SVGZoomEvent) => any; - pixelUnitToMillimeterX: number; - pixelUnitToMillimeterY: number; - screenPixelToMillimeterX: number; - screenPixelToMillimeterY: number; - viewport: SVGRect; - width: SVGAnimatedLength; - x: SVGAnimatedLength; - y: SVGAnimatedLength; + readonly pixelUnitToMillimeterX: number; + readonly pixelUnitToMillimeterY: number; + readonly screenPixelToMillimeterX: number; + readonly screenPixelToMillimeterY: number; + readonly viewport: SVGRect; + readonly width: SVGAnimatedLength; + readonly x: SVGAnimatedLength; + readonly y: SVGAnimatedLength; checkEnclosure(element: SVGElement, rect: SVGRect): boolean; checkIntersection(element: SVGElement, rect: SVGRect): boolean; createSVGAngle(): SVGAngle; @@ -9916,8 +10954,8 @@ interface SVGSVGElement extends SVGElement, DocumentEvent, SVGLocatable, SVGTest getComputedStyle(elt: Element, pseudoElt?: string): CSSStyleDeclaration; getCurrentTime(): number; getElementById(elementId: string): Element; - getEnclosureList(rect: SVGRect, referenceElement: SVGElement): NodeList; - getIntersectionList(rect: SVGRect, referenceElement: SVGElement): NodeList; + getEnclosureList(rect: SVGRect, referenceElement: SVGElement): NodeListOf; + getIntersectionList(rect: SVGRect, referenceElement: SVGElement): NodeListOf; pauseAnimations(): void; setCurrentTime(seconds: number): void; suspendRedraw(maxWaitMilliseconds: number): number; @@ -9995,7 +11033,7 @@ declare var SVGScriptElement: { } interface SVGStopElement extends SVGElement, SVGStylable { - offset: SVGAnimatedNumber; + readonly offset: SVGAnimatedNumber; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -10005,7 +11043,7 @@ declare var SVGStopElement: { } interface SVGStringList { - numberOfItems: number; + readonly numberOfItems: number; appendItem(newItem: string): string; clear(): void; getItem(index: number): string; @@ -10021,6 +11059,7 @@ declare var SVGStringList: { } interface SVGStyleElement extends SVGElement, SVGLangSpace { + disabled: boolean; media: string; title: string; type: string; @@ -10059,8 +11098,8 @@ declare var SVGTSpanElement: { } interface SVGTextContentElement extends SVGElement, SVGStylable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired { - lengthAdjust: SVGAnimatedEnumeration; - textLength: SVGAnimatedLength; + readonly lengthAdjust: SVGAnimatedEnumeration; + readonly textLength: SVGAnimatedLength; getCharNumAtPosition(point: SVGPoint): number; getComputedTextLength(): number; getEndPositionOfChar(charnum: number): SVGPoint; @@ -10070,18 +11109,18 @@ interface SVGTextContentElement extends SVGElement, SVGStylable, SVGTests, SVGLa getStartPositionOfChar(charnum: number): SVGPoint; getSubStringLength(charnum: number, nchars: number): number; selectSubString(charnum: number, nchars: number): void; - LENGTHADJUST_SPACING: number; - LENGTHADJUST_SPACINGANDGLYPHS: number; - LENGTHADJUST_UNKNOWN: number; + readonly LENGTHADJUST_SPACING: number; + readonly LENGTHADJUST_SPACINGANDGLYPHS: number; + readonly LENGTHADJUST_UNKNOWN: number; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var SVGTextContentElement: { prototype: SVGTextContentElement; new(): SVGTextContentElement; - LENGTHADJUST_SPACING: number; - LENGTHADJUST_SPACINGANDGLYPHS: number; - LENGTHADJUST_UNKNOWN: number; + readonly LENGTHADJUST_SPACING: number; + readonly LENGTHADJUST_SPACINGANDGLYPHS: number; + readonly LENGTHADJUST_UNKNOWN: number; } interface SVGTextElement extends SVGTextPositioningElement, SVGTransformable { @@ -10094,35 +11133,35 @@ declare var SVGTextElement: { } interface SVGTextPathElement extends SVGTextContentElement, SVGURIReference { - method: SVGAnimatedEnumeration; - spacing: SVGAnimatedEnumeration; - startOffset: SVGAnimatedLength; - TEXTPATH_METHODTYPE_ALIGN: number; - TEXTPATH_METHODTYPE_STRETCH: number; - TEXTPATH_METHODTYPE_UNKNOWN: number; - TEXTPATH_SPACINGTYPE_AUTO: number; - TEXTPATH_SPACINGTYPE_EXACT: number; - TEXTPATH_SPACINGTYPE_UNKNOWN: number; + readonly method: SVGAnimatedEnumeration; + readonly spacing: SVGAnimatedEnumeration; + readonly startOffset: SVGAnimatedLength; + readonly TEXTPATH_METHODTYPE_ALIGN: number; + readonly TEXTPATH_METHODTYPE_STRETCH: number; + readonly TEXTPATH_METHODTYPE_UNKNOWN: number; + readonly TEXTPATH_SPACINGTYPE_AUTO: number; + readonly TEXTPATH_SPACINGTYPE_EXACT: number; + readonly TEXTPATH_SPACINGTYPE_UNKNOWN: number; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var SVGTextPathElement: { prototype: SVGTextPathElement; new(): SVGTextPathElement; - TEXTPATH_METHODTYPE_ALIGN: number; - TEXTPATH_METHODTYPE_STRETCH: number; - TEXTPATH_METHODTYPE_UNKNOWN: number; - TEXTPATH_SPACINGTYPE_AUTO: number; - TEXTPATH_SPACINGTYPE_EXACT: number; - TEXTPATH_SPACINGTYPE_UNKNOWN: number; + readonly TEXTPATH_METHODTYPE_ALIGN: number; + readonly TEXTPATH_METHODTYPE_STRETCH: number; + readonly TEXTPATH_METHODTYPE_UNKNOWN: number; + readonly TEXTPATH_SPACINGTYPE_AUTO: number; + readonly TEXTPATH_SPACINGTYPE_EXACT: number; + readonly TEXTPATH_SPACINGTYPE_UNKNOWN: number; } interface SVGTextPositioningElement extends SVGTextContentElement { - dx: SVGAnimatedLengthList; - dy: SVGAnimatedLengthList; - rotate: SVGAnimatedNumberList; - x: SVGAnimatedLengthList; - y: SVGAnimatedLengthList; + readonly dx: SVGAnimatedLengthList; + readonly dy: SVGAnimatedLengthList; + readonly rotate: SVGAnimatedNumberList; + readonly x: SVGAnimatedLengthList; + readonly y: SVGAnimatedLengthList; } declare var SVGTextPositioningElement: { @@ -10140,38 +11179,38 @@ declare var SVGTitleElement: { } interface SVGTransform { - angle: number; - matrix: SVGMatrix; - type: number; + readonly angle: number; + readonly matrix: SVGMatrix; + readonly type: number; setMatrix(matrix: SVGMatrix): void; setRotate(angle: number, cx: number, cy: number): void; setScale(sx: number, sy: number): void; setSkewX(angle: number): void; setSkewY(angle: number): void; setTranslate(tx: number, ty: number): void; - SVG_TRANSFORM_MATRIX: number; - SVG_TRANSFORM_ROTATE: number; - SVG_TRANSFORM_SCALE: number; - SVG_TRANSFORM_SKEWX: number; - SVG_TRANSFORM_SKEWY: number; - SVG_TRANSFORM_TRANSLATE: number; - SVG_TRANSFORM_UNKNOWN: number; + readonly SVG_TRANSFORM_MATRIX: number; + readonly SVG_TRANSFORM_ROTATE: number; + readonly SVG_TRANSFORM_SCALE: number; + readonly SVG_TRANSFORM_SKEWX: number; + readonly SVG_TRANSFORM_SKEWY: number; + readonly SVG_TRANSFORM_TRANSLATE: number; + readonly SVG_TRANSFORM_UNKNOWN: number; } declare var SVGTransform: { prototype: SVGTransform; new(): SVGTransform; - SVG_TRANSFORM_MATRIX: number; - SVG_TRANSFORM_ROTATE: number; - SVG_TRANSFORM_SCALE: number; - SVG_TRANSFORM_SKEWX: number; - SVG_TRANSFORM_SKEWY: number; - SVG_TRANSFORM_TRANSLATE: number; - SVG_TRANSFORM_UNKNOWN: number; + readonly SVG_TRANSFORM_MATRIX: number; + readonly SVG_TRANSFORM_ROTATE: number; + readonly SVG_TRANSFORM_SCALE: number; + readonly SVG_TRANSFORM_SKEWX: number; + readonly SVG_TRANSFORM_SKEWY: number; + readonly SVG_TRANSFORM_TRANSLATE: number; + readonly SVG_TRANSFORM_UNKNOWN: number; } interface SVGTransformList { - numberOfItems: number; + readonly numberOfItems: number; appendItem(newItem: SVGTransform): SVGTransform; clear(): void; consolidate(): SVGTransform; @@ -10189,19 +11228,19 @@ declare var SVGTransformList: { } interface SVGUnitTypes { - SVG_UNIT_TYPE_OBJECTBOUNDINGBOX: number; - SVG_UNIT_TYPE_UNKNOWN: number; - SVG_UNIT_TYPE_USERSPACEONUSE: number; + readonly SVG_UNIT_TYPE_OBJECTBOUNDINGBOX: number; + readonly SVG_UNIT_TYPE_UNKNOWN: number; + readonly SVG_UNIT_TYPE_USERSPACEONUSE: number; } declare var SVGUnitTypes: SVGUnitTypes; interface SVGUseElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired, SVGURIReference { - animatedInstanceRoot: SVGElementInstance; - height: SVGAnimatedLength; - instanceRoot: SVGElementInstance; - width: SVGAnimatedLength; - x: SVGAnimatedLength; - y: SVGAnimatedLength; + readonly animatedInstanceRoot: SVGElementInstance; + readonly height: SVGAnimatedLength; + readonly instanceRoot: SVGElementInstance; + readonly width: SVGAnimatedLength; + readonly x: SVGAnimatedLength; + readonly y: SVGAnimatedLength; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -10211,7 +11250,7 @@ declare var SVGUseElement: { } interface SVGViewElement extends SVGElement, SVGExternalResourcesRequired, SVGFitToViewBox, SVGZoomAndPan { - viewTarget: SVGStringList; + readonly viewTarget: SVGStringList; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -10221,21 +11260,21 @@ declare var SVGViewElement: { } interface SVGZoomAndPan { - zoomAndPan: number; + readonly zoomAndPan: number; } declare var SVGZoomAndPan: { - SVG_ZOOMANDPAN_DISABLE: number; - SVG_ZOOMANDPAN_MAGNIFY: number; - SVG_ZOOMANDPAN_UNKNOWN: number; + readonly SVG_ZOOMANDPAN_DISABLE: number; + readonly SVG_ZOOMANDPAN_MAGNIFY: number; + readonly SVG_ZOOMANDPAN_UNKNOWN: number; } interface SVGZoomEvent extends UIEvent { - newScale: number; - newTranslate: SVGPoint; - previousScale: number; - previousTranslate: SVGPoint; - zoomRectScreen: SVGRect; + readonly newScale: number; + readonly newTranslate: SVGPoint; + readonly previousScale: number; + readonly previousTranslate: SVGPoint; + readonly zoomRectScreen: SVGRect; } declare var SVGZoomEvent: { @@ -10244,22 +11283,22 @@ declare var SVGZoomEvent: { } interface Screen extends EventTarget { - availHeight: number; - availWidth: number; + readonly availHeight: number; + readonly availWidth: number; bufferDepth: number; - colorDepth: number; - deviceXDPI: number; - deviceYDPI: number; - fontSmoothingEnabled: boolean; - height: number; - logicalXDPI: number; - logicalYDPI: number; - msOrientation: string; + readonly colorDepth: number; + readonly deviceXDPI: number; + readonly deviceYDPI: number; + readonly fontSmoothingEnabled: boolean; + readonly height: number; + readonly logicalXDPI: number; + readonly logicalYDPI: number; + readonly msOrientation: string; onmsorientationchange: (ev: Event) => any; - pixelDepth: number; - systemXDPI: number; - systemYDPI: number; - width: number; + readonly pixelDepth: number; + readonly systemXDPI: number; + readonly systemYDPI: number; + readonly width: number; msLockOrientation(orientations: string | string[]): boolean; msUnlockOrientation(): void; addEventListener(type: "MSOrientationChange", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -10272,8 +11311,8 @@ declare var Screen: { } interface ScriptNotifyEvent extends Event { - callingUri: string; - value: string; + readonly callingUri: string; + readonly value: string; } declare var ScriptNotifyEvent: { @@ -10282,7 +11321,7 @@ declare var ScriptNotifyEvent: { } interface ScriptProcessorNode extends AudioNode { - bufferSize: number; + readonly bufferSize: number; onaudioprocess: (ev: AudioProcessingEvent) => any; addEventListener(type: "audioprocess", listener: (ev: AudioProcessingEvent) => any, useCapture?: boolean): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; @@ -10294,13 +11333,13 @@ declare var ScriptProcessorNode: { } interface Selection { - anchorNode: Node; - anchorOffset: number; - focusNode: Node; - focusOffset: number; - isCollapsed: boolean; - rangeCount: number; - type: string; + readonly anchorNode: Node; + readonly anchorOffset: number; + readonly focusNode: Node; + readonly focusOffset: number; + readonly isCollapsed: boolean; + readonly rangeCount: number; + readonly type: string; addRange(range: Range): void; collapse(parentNode: Node, offset: number): void; collapseToEnd(): void; @@ -10325,12 +11364,12 @@ declare var Selection: { interface SourceBuffer extends EventTarget { appendWindowEnd: number; appendWindowStart: number; - audioTracks: AudioTrackList; - buffered: TimeRanges; + readonly audioTracks: AudioTrackList; + readonly buffered: TimeRanges; mode: string; timestampOffset: number; - updating: boolean; - videoTracks: VideoTrackList; + readonly updating: boolean; + readonly videoTracks: VideoTrackList; abort(): void; appendBuffer(data: ArrayBuffer | ArrayBufferView): void; appendStream(stream: MSStream, maxSize?: number): void; @@ -10343,7 +11382,7 @@ declare var SourceBuffer: { } interface SourceBufferList extends EventTarget { - length: number; + readonly length: number; item(index: number): SourceBuffer; [index: number]: SourceBuffer; } @@ -10354,7 +11393,7 @@ declare var SourceBufferList: { } interface StereoPannerNode extends AudioNode { - pan: AudioParam; + readonly pan: AudioParam; } declare var StereoPannerNode: { @@ -10363,9 +11402,9 @@ declare var StereoPannerNode: { } interface Storage { - length: number; + readonly length: number; clear(): void; - getItem(key: string): any; + getItem(key: string): string; key(index: number): string; removeItem(key: string): void; setItem(key: string, data: string): void; @@ -10379,7 +11418,7 @@ declare var Storage: { } interface StorageEvent extends Event { - url: string; + readonly url: string; key?: string; oldValue?: string; newValue?: string; @@ -10392,7 +11431,7 @@ declare var StorageEvent: { } interface StyleMedia { - type: string; + readonly type: string; matchMedium(mediaquery: string): boolean; } @@ -10403,12 +11442,12 @@ declare var StyleMedia: { interface StyleSheet { disabled: boolean; - href: string; - media: MediaList; - ownerNode: Node; - parentStyleSheet: StyleSheet; - title: string; - type: string; + readonly href: string; + readonly media: MediaList; + readonly ownerNode: Node; + readonly parentStyleSheet: StyleSheet; + readonly title: string; + readonly type: string; } declare var StyleSheet: { @@ -10417,7 +11456,7 @@ declare var StyleSheet: { } interface StyleSheetList { - length: number; + readonly length: number; item(index?: number): StyleSheet; [index: number]: StyleSheet; } @@ -10428,7 +11467,7 @@ declare var StyleSheetList: { } interface StyleSheetPageList { - length: number; + readonly length: number; item(index: number): CSSPageRule; [index: number]: CSSPageRule; } @@ -10439,18 +11478,18 @@ declare var StyleSheetPageList: { } interface SubtleCrypto { - decrypt(algorithm: string | Algorithm, key: CryptoKey, data: ArrayBufferView): any; - deriveBits(algorithm: string | Algorithm, baseKey: CryptoKey, length: number): any; - deriveKey(algorithm: string | Algorithm, baseKey: CryptoKey, derivedKeyType: string | Algorithm, extractable: boolean, keyUsages: string[]): any; - digest(algorithm: string | Algorithm, data: ArrayBufferView): any; - encrypt(algorithm: string | Algorithm, key: CryptoKey, data: ArrayBufferView): any; - exportKey(format: string, key: CryptoKey): any; - generateKey(algorithm: string | Algorithm, extractable: boolean, keyUsages: string[]): any; - importKey(format: string, keyData: ArrayBufferView, algorithm: string | Algorithm, extractable: boolean, keyUsages: string[]): any; - sign(algorithm: string | Algorithm, key: CryptoKey, data: ArrayBufferView): any; - unwrapKey(format: string, wrappedKey: ArrayBufferView, unwrappingKey: CryptoKey, unwrapAlgorithm: string | Algorithm, unwrappedKeyAlgorithm: string | Algorithm, extractable: boolean, keyUsages: string[]): any; - verify(algorithm: string | Algorithm, key: CryptoKey, signature: ArrayBufferView, data: ArrayBufferView): any; - wrapKey(format: string, key: CryptoKey, wrappingKey: CryptoKey, wrapAlgorithm: string | Algorithm): any; + decrypt(algorithm: string | Algorithm, key: CryptoKey, data: ArrayBufferView): PromiseLike; + deriveBits(algorithm: string | Algorithm, baseKey: CryptoKey, length: number): PromiseLike; + deriveKey(algorithm: string | Algorithm, baseKey: CryptoKey, derivedKeyType: string | Algorithm, extractable: boolean, keyUsages: string[]): PromiseLike; + digest(algorithm: string | Algorithm, data: ArrayBufferView): PromiseLike; + encrypt(algorithm: string | Algorithm, key: CryptoKey, data: ArrayBufferView): PromiseLike; + exportKey(format: string, key: CryptoKey): PromiseLike; + generateKey(algorithm: string | Algorithm, extractable: boolean, keyUsages: string[]): PromiseLike; + importKey(format: string, keyData: ArrayBufferView, algorithm: string | Algorithm | null, extractable: boolean, keyUsages: string[]): PromiseLike; + sign(algorithm: string | Algorithm, key: CryptoKey, data: ArrayBufferView): PromiseLike; + unwrapKey(format: string, wrappedKey: ArrayBufferView, unwrappingKey: CryptoKey, unwrapAlgorithm: string | Algorithm, unwrappedKeyAlgorithm: string | Algorithm | null, extractable: boolean, keyUsages: string[]): PromiseLike; + verify(algorithm: string | Algorithm, key: CryptoKey, signature: ArrayBufferView, data: ArrayBufferView): PromiseLike; + wrapKey(format: string, key: CryptoKey, wrappingKey: CryptoKey, wrapAlgorithm: string | Algorithm): PromiseLike; } declare var SubtleCrypto: { @@ -10459,8 +11498,7 @@ declare var SubtleCrypto: { } interface Text extends CharacterData { - wholeText: string; - replaceWholeText(content: string): Text; + readonly wholeText: string; splitText(offset: number): Text; } @@ -10470,39 +11508,39 @@ declare var Text: { } interface TextEvent extends UIEvent { - data: string; - inputMethod: number; - locale: string; + readonly data: string; + readonly inputMethod: number; + readonly locale: string; initTextEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, dataArg: string, inputMethod: number, locale: string): void; - DOM_INPUT_METHOD_DROP: number; - DOM_INPUT_METHOD_HANDWRITING: number; - DOM_INPUT_METHOD_IME: number; - DOM_INPUT_METHOD_KEYBOARD: number; - DOM_INPUT_METHOD_MULTIMODAL: number; - DOM_INPUT_METHOD_OPTION: number; - DOM_INPUT_METHOD_PASTE: number; - DOM_INPUT_METHOD_SCRIPT: number; - DOM_INPUT_METHOD_UNKNOWN: number; - DOM_INPUT_METHOD_VOICE: number; + readonly DOM_INPUT_METHOD_DROP: number; + readonly DOM_INPUT_METHOD_HANDWRITING: number; + readonly DOM_INPUT_METHOD_IME: number; + readonly DOM_INPUT_METHOD_KEYBOARD: number; + readonly DOM_INPUT_METHOD_MULTIMODAL: number; + readonly DOM_INPUT_METHOD_OPTION: number; + readonly DOM_INPUT_METHOD_PASTE: number; + readonly DOM_INPUT_METHOD_SCRIPT: number; + readonly DOM_INPUT_METHOD_UNKNOWN: number; + readonly DOM_INPUT_METHOD_VOICE: number; } declare var TextEvent: { prototype: TextEvent; new(): TextEvent; - DOM_INPUT_METHOD_DROP: number; - DOM_INPUT_METHOD_HANDWRITING: number; - DOM_INPUT_METHOD_IME: number; - DOM_INPUT_METHOD_KEYBOARD: number; - DOM_INPUT_METHOD_MULTIMODAL: number; - DOM_INPUT_METHOD_OPTION: number; - DOM_INPUT_METHOD_PASTE: number; - DOM_INPUT_METHOD_SCRIPT: number; - DOM_INPUT_METHOD_UNKNOWN: number; - DOM_INPUT_METHOD_VOICE: number; + readonly DOM_INPUT_METHOD_DROP: number; + readonly DOM_INPUT_METHOD_HANDWRITING: number; + readonly DOM_INPUT_METHOD_IME: number; + readonly DOM_INPUT_METHOD_KEYBOARD: number; + readonly DOM_INPUT_METHOD_MULTIMODAL: number; + readonly DOM_INPUT_METHOD_OPTION: number; + readonly DOM_INPUT_METHOD_PASTE: number; + readonly DOM_INPUT_METHOD_SCRIPT: number; + readonly DOM_INPUT_METHOD_UNKNOWN: number; + readonly DOM_INPUT_METHOD_VOICE: number; } interface TextMetrics { - width: number; + readonly width: number; } declare var TextMetrics: { @@ -10510,83 +11548,27 @@ declare var TextMetrics: { new(): TextMetrics; } -interface TextRange { - boundingHeight: number; - boundingLeft: number; - boundingTop: number; - boundingWidth: number; - htmlText: string; - offsetLeft: number; - offsetTop: number; - text: string; - collapse(start?: boolean): void; - compareEndPoints(how: string, sourceRange: TextRange): number; - duplicate(): TextRange; - execCommand(cmdID: string, showUI?: boolean, value?: any): boolean; - execCommandShowHelp(cmdID: string): boolean; - expand(Unit: string): boolean; - findText(string: string, count?: number, flags?: number): boolean; - getBookmark(): string; - getBoundingClientRect(): ClientRect; - getClientRects(): ClientRectList; - inRange(range: TextRange): boolean; - isEqual(range: TextRange): boolean; - move(unit: string, count?: number): number; - moveEnd(unit: string, count?: number): number; - moveStart(unit: string, count?: number): number; - moveToBookmark(bookmark: string): boolean; - moveToElementText(element: Element): void; - moveToPoint(x: number, y: number): void; - parentElement(): Element; - pasteHTML(html: string): void; - queryCommandEnabled(cmdID: string): boolean; - queryCommandIndeterm(cmdID: string): boolean; - queryCommandState(cmdID: string): boolean; - queryCommandSupported(cmdID: string): boolean; - queryCommandText(cmdID: string): string; - queryCommandValue(cmdID: string): any; - scrollIntoView(fStart?: boolean): void; - select(): void; - setEndPoint(how: string, SourceRange: TextRange): void; -} - -declare var TextRange: { - prototype: TextRange; - new(): TextRange; -} - -interface TextRangeCollection { - length: number; - item(index: number): TextRange; - [index: number]: TextRange; -} - -declare var TextRangeCollection: { - prototype: TextRangeCollection; - new(): TextRangeCollection; -} - interface TextTrack extends EventTarget { - activeCues: TextTrackCueList; - cues: TextTrackCueList; - inBandMetadataTrackDispatchType: string; - kind: string; - label: string; - language: string; + readonly activeCues: TextTrackCueList; + readonly cues: TextTrackCueList; + readonly inBandMetadataTrackDispatchType: string; + readonly kind: string; + readonly label: string; + readonly language: string; mode: any; oncuechange: (ev: Event) => any; onerror: (ev: Event) => any; onload: (ev: Event) => any; - readyState: number; + readonly readyState: number; addCue(cue: TextTrackCue): void; removeCue(cue: TextTrackCue): void; - DISABLED: number; - ERROR: number; - HIDDEN: number; - LOADED: number; - LOADING: number; - NONE: number; - SHOWING: number; + readonly DISABLED: number; + readonly ERROR: number; + readonly HIDDEN: number; + readonly LOADED: number; + readonly LOADING: number; + readonly NONE: number; + readonly SHOWING: number; addEventListener(type: "cuechange", 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; @@ -10596,13 +11578,13 @@ interface TextTrack extends EventTarget { declare var TextTrack: { prototype: TextTrack; new(): TextTrack; - DISABLED: number; - ERROR: number; - HIDDEN: number; - LOADED: number; - LOADING: number; - NONE: number; - SHOWING: number; + readonly DISABLED: number; + readonly ERROR: number; + readonly HIDDEN: number; + readonly LOADED: number; + readonly LOADING: number; + readonly NONE: number; + readonly SHOWING: number; } interface TextTrackCue extends EventTarget { @@ -10613,7 +11595,7 @@ interface TextTrackCue extends EventTarget { pauseOnExit: boolean; startTime: number; text: string; - track: TextTrack; + readonly track: TextTrack; getCueAsHTML(): DocumentFragment; addEventListener(type: "enter", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "exit", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -10626,7 +11608,7 @@ declare var TextTrackCue: { } interface TextTrackCueList { - length: number; + readonly length: number; getCueById(id: string): TextTrackCue; item(index: number): TextTrackCue; [index: number]: TextTrackCue; @@ -10638,8 +11620,8 @@ declare var TextTrackCueList: { } interface TextTrackList extends EventTarget { - length: number; - onaddtrack: (ev: TrackEvent) => any; + readonly length: number; + onaddtrack: ((ev: TrackEvent) => any) | null; item(index: number): TextTrack; addEventListener(type: "addtrack", listener: (ev: TrackEvent) => any, useCapture?: boolean): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; @@ -10652,7 +11634,7 @@ declare var TextTrackList: { } interface TimeRanges { - length: number; + readonly length: number; end(index: number): number; start(index: number): number; } @@ -10663,14 +11645,14 @@ declare var TimeRanges: { } interface Touch { - clientX: number; - clientY: number; - identifier: number; - pageX: number; - pageY: number; - screenX: number; - screenY: number; - target: EventTarget; + readonly clientX: number; + readonly clientY: number; + readonly identifier: number; + readonly pageX: number; + readonly pageY: number; + readonly screenX: number; + readonly screenY: number; + readonly target: EventTarget; } declare var Touch: { @@ -10679,13 +11661,13 @@ declare var Touch: { } interface TouchEvent extends UIEvent { - altKey: boolean; - changedTouches: TouchList; - ctrlKey: boolean; - metaKey: boolean; - shiftKey: boolean; - targetTouches: TouchList; - touches: TouchList; + readonly altKey: boolean; + readonly changedTouches: TouchList; + readonly ctrlKey: boolean; + readonly metaKey: boolean; + readonly shiftKey: boolean; + readonly targetTouches: TouchList; + readonly touches: TouchList; } declare var TouchEvent: { @@ -10694,8 +11676,8 @@ declare var TouchEvent: { } interface TouchList { - length: number; - item(index: number): Touch; + readonly length: number; + item(index: number): Touch | null; [index: number]: Touch; } @@ -10705,7 +11687,7 @@ declare var TouchList: { } interface TrackEvent extends Event { - track: any; + readonly track: any; } declare var TrackEvent: { @@ -10714,8 +11696,8 @@ declare var TrackEvent: { } interface TransitionEvent extends Event { - elapsedTime: number; - propertyName: string; + readonly elapsedTime: number; + readonly propertyName: string; initTransitionEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, propertyNameArg: string, elapsedTimeArg: number): void; } @@ -10726,10 +11708,10 @@ declare var TransitionEvent: { interface TreeWalker { currentNode: Node; - expandEntityReferences: boolean; - filter: NodeFilter; - root: Node; - whatToShow: number; + readonly expandEntityReferences: boolean; + readonly filter: NodeFilter; + readonly root: Node; + readonly whatToShow: number; firstChild(): Node; lastChild(): Node; nextNode(): Node; @@ -10745,8 +11727,8 @@ declare var TreeWalker: { } interface UIEvent extends Event { - detail: number; - view: Window; + readonly detail: number; + readonly view: Window; initUIEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number): void; } @@ -10756,13 +11738,29 @@ declare var UIEvent: { } interface URL { + hash: string; + host: string; + hostname: string; + href: string; + readonly origin: string; + password: string; + pathname: string; + port: string; + protocol: string; + search: string; + username: string; + toString(): string; +} + +declare var URL: { + prototype: URL; + new(url: string, base?: string): URL; createObjectURL(object: any, options?: ObjectURLOptions): string; revokeObjectURL(url: string): void; } -declare var URL: URL; interface UnviewableContentIdentifiedEvent extends NavigationEventWithReferrer { - mediaType: string; + readonly mediaType: string; } declare var UnviewableContentIdentifiedEvent: { @@ -10771,16 +11769,16 @@ declare var UnviewableContentIdentifiedEvent: { } interface ValidityState { - badInput: boolean; - customError: boolean; - patternMismatch: boolean; - rangeOverflow: boolean; - rangeUnderflow: boolean; - stepMismatch: boolean; - tooLong: boolean; - typeMismatch: boolean; - valid: boolean; - valueMissing: boolean; + readonly badInput: boolean; + readonly customError: boolean; + readonly patternMismatch: boolean; + readonly rangeOverflow: boolean; + readonly rangeUnderflow: boolean; + readonly stepMismatch: boolean; + readonly tooLong: boolean; + readonly typeMismatch: boolean; + readonly valid: boolean; + readonly valueMissing: boolean; } declare var ValidityState: { @@ -10789,11 +11787,11 @@ declare var ValidityState: { } interface VideoPlaybackQuality { - corruptedVideoFrames: number; - creationTime: number; - droppedVideoFrames: number; - totalFrameDelay: number; - totalVideoFrames: number; + readonly corruptedVideoFrames: number; + readonly creationTime: number; + readonly droppedVideoFrames: number; + readonly totalFrameDelay: number; + readonly totalVideoFrames: number; } declare var VideoPlaybackQuality: { @@ -10802,12 +11800,12 @@ declare var VideoPlaybackQuality: { } interface VideoTrack { - id: string; + readonly id: string; kind: string; - label: string; + readonly label: string; language: string; selected: boolean; - sourceBuffer: SourceBuffer; + readonly sourceBuffer: SourceBuffer; } declare var VideoTrack: { @@ -10816,12 +11814,12 @@ declare var VideoTrack: { } interface VideoTrackList extends EventTarget { - length: number; + readonly length: number; onaddtrack: (ev: TrackEvent) => any; onchange: (ev: Event) => any; onremovetrack: (ev: TrackEvent) => any; - selectedIndex: number; - getTrackById(id: string): VideoTrack; + readonly selectedIndex: number; + getTrackById(id: string): VideoTrack | null; item(index: number): VideoTrack; addEventListener(type: "addtrack", listener: (ev: TrackEvent) => any, useCapture?: boolean): void; addEventListener(type: "change", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -10836,45 +11834,45 @@ declare var VideoTrackList: { } interface WEBGL_compressed_texture_s3tc { - COMPRESSED_RGBA_S3TC_DXT1_EXT: number; - COMPRESSED_RGBA_S3TC_DXT3_EXT: number; - COMPRESSED_RGBA_S3TC_DXT5_EXT: number; - COMPRESSED_RGB_S3TC_DXT1_EXT: number; + readonly COMPRESSED_RGBA_S3TC_DXT1_EXT: number; + readonly COMPRESSED_RGBA_S3TC_DXT3_EXT: number; + readonly COMPRESSED_RGBA_S3TC_DXT5_EXT: number; + readonly COMPRESSED_RGB_S3TC_DXT1_EXT: number; } declare var WEBGL_compressed_texture_s3tc: { prototype: WEBGL_compressed_texture_s3tc; new(): WEBGL_compressed_texture_s3tc; - COMPRESSED_RGBA_S3TC_DXT1_EXT: number; - COMPRESSED_RGBA_S3TC_DXT3_EXT: number; - COMPRESSED_RGBA_S3TC_DXT5_EXT: number; - COMPRESSED_RGB_S3TC_DXT1_EXT: number; + readonly COMPRESSED_RGBA_S3TC_DXT1_EXT: number; + readonly COMPRESSED_RGBA_S3TC_DXT3_EXT: number; + readonly COMPRESSED_RGBA_S3TC_DXT5_EXT: number; + readonly COMPRESSED_RGB_S3TC_DXT1_EXT: number; } interface WEBGL_debug_renderer_info { - UNMASKED_RENDERER_WEBGL: number; - UNMASKED_VENDOR_WEBGL: number; + readonly UNMASKED_RENDERER_WEBGL: number; + readonly UNMASKED_VENDOR_WEBGL: number; } declare var WEBGL_debug_renderer_info: { prototype: WEBGL_debug_renderer_info; new(): WEBGL_debug_renderer_info; - UNMASKED_RENDERER_WEBGL: number; - UNMASKED_VENDOR_WEBGL: number; + readonly UNMASKED_RENDERER_WEBGL: number; + readonly UNMASKED_VENDOR_WEBGL: number; } interface WEBGL_depth_texture { - UNSIGNED_INT_24_8_WEBGL: number; + readonly UNSIGNED_INT_24_8_WEBGL: number; } declare var WEBGL_depth_texture: { prototype: WEBGL_depth_texture; new(): WEBGL_depth_texture; - UNSIGNED_INT_24_8_WEBGL: number; + readonly UNSIGNED_INT_24_8_WEBGL: number; } interface WaveShaperNode extends AudioNode { - curve: Float32Array; + curve: Float32Array | null; oversample: string; } @@ -10884,9 +11882,9 @@ declare var WaveShaperNode: { } interface WebGLActiveInfo { - name: string; - size: number; - type: number; + readonly name: string; + readonly size: number; + readonly type: number; } declare var WebGLActiveInfo: { @@ -10903,12 +11901,12 @@ declare var WebGLBuffer: { } interface WebGLContextEvent extends Event { - statusMessage: string; + readonly statusMessage: string; } declare var WebGLContextEvent: { prototype: WebGLContextEvent; - new(): WebGLContextEvent; + new(type: string, eventInitDict?: WebGLContextEventInit): WebGLContextEvent; } interface WebGLFramebuffer extends WebGLObject { @@ -10944,16 +11942,16 @@ declare var WebGLRenderbuffer: { } interface WebGLRenderingContext { - canvas: HTMLCanvasElement; - drawingBufferHeight: number; - drawingBufferWidth: number; + readonly canvas: HTMLCanvasElement; + readonly drawingBufferHeight: number; + readonly drawingBufferWidth: number; activeTexture(texture: number): void; - attachShader(program: WebGLProgram, shader: WebGLShader): void; - bindAttribLocation(program: WebGLProgram, index: number, name: string): void; - bindBuffer(target: number, buffer: WebGLBuffer): void; - bindFramebuffer(target: number, framebuffer: WebGLFramebuffer): void; - bindRenderbuffer(target: number, renderbuffer: WebGLRenderbuffer): void; - bindTexture(target: number, texture: WebGLTexture): void; + attachShader(program: WebGLProgram | null, shader: WebGLShader | null): void; + bindAttribLocation(program: WebGLProgram | null, index: number, name: string): void; + bindBuffer(target: number, buffer: WebGLBuffer | null): void; + bindFramebuffer(target: number, framebuffer: WebGLFramebuffer | null): void; + bindRenderbuffer(target: number, renderbuffer: WebGLRenderbuffer | null): void; + bindTexture(target: number, texture: WebGLTexture | null): void; blendColor(red: number, green: number, blue: number, alpha: number): void; blendEquation(mode: number): void; blendEquationSeparate(modeRGB: number, modeAlpha: number): void; @@ -10967,28 +11965,28 @@ interface WebGLRenderingContext { clearDepth(depth: number): void; clearStencil(s: number): void; colorMask(red: boolean, green: boolean, blue: boolean, alpha: boolean): void; - compileShader(shader: WebGLShader): void; + compileShader(shader: WebGLShader | null): void; compressedTexImage2D(target: number, level: number, internalformat: number, width: number, height: number, border: number, data: ArrayBufferView): void; compressedTexSubImage2D(target: number, level: number, xoffset: number, yoffset: number, width: number, height: number, format: number, data: ArrayBufferView): void; copyTexImage2D(target: number, level: number, internalformat: number, x: number, y: number, width: number, height: number, border: number): void; copyTexSubImage2D(target: number, level: number, xoffset: number, yoffset: number, x: number, y: number, width: number, height: number): void; - createBuffer(): WebGLBuffer; - createFramebuffer(): WebGLFramebuffer; - createProgram(): WebGLProgram; - createRenderbuffer(): WebGLRenderbuffer; - createShader(type: number): WebGLShader; - createTexture(): WebGLTexture; + createBuffer(): WebGLBuffer | null; + createFramebuffer(): WebGLFramebuffer | null; + createProgram(): WebGLProgram | null; + createRenderbuffer(): WebGLRenderbuffer | null; + createShader(type: number): WebGLShader | null; + createTexture(): WebGLTexture | null; cullFace(mode: number): void; - deleteBuffer(buffer: WebGLBuffer): void; - deleteFramebuffer(framebuffer: WebGLFramebuffer): void; - deleteProgram(program: WebGLProgram): void; - deleteRenderbuffer(renderbuffer: WebGLRenderbuffer): void; - deleteShader(shader: WebGLShader): void; - deleteTexture(texture: WebGLTexture): void; + deleteBuffer(buffer: WebGLBuffer | null): void; + deleteFramebuffer(framebuffer: WebGLFramebuffer | null): void; + deleteProgram(program: WebGLProgram | null): void; + deleteRenderbuffer(renderbuffer: WebGLRenderbuffer | null): void; + deleteShader(shader: WebGLShader | null): void; + deleteTexture(texture: WebGLTexture | null): void; depthFunc(func: number): void; depthMask(flag: boolean): void; depthRange(zNear: number, zFar: number): void; - detachShader(program: WebGLProgram, shader: WebGLShader): void; + detachShader(program: WebGLProgram | null, shader: WebGLShader | null): void; disable(cap: number): void; disableVertexAttribArray(index: number): void; drawArrays(mode: number, first: number, count: number): void; @@ -10997,51 +11995,51 @@ interface WebGLRenderingContext { enableVertexAttribArray(index: number): void; finish(): void; flush(): void; - framebufferRenderbuffer(target: number, attachment: number, renderbuffertarget: number, renderbuffer: WebGLRenderbuffer): void; - framebufferTexture2D(target: number, attachment: number, textarget: number, texture: WebGLTexture, level: number): void; + framebufferRenderbuffer(target: number, attachment: number, renderbuffertarget: number, renderbuffer: WebGLRenderbuffer | null): void; + framebufferTexture2D(target: number, attachment: number, textarget: number, texture: WebGLTexture | null, level: number): void; frontFace(mode: number): void; generateMipmap(target: number): void; - getActiveAttrib(program: WebGLProgram, index: number): WebGLActiveInfo; - getActiveUniform(program: WebGLProgram, index: number): WebGLActiveInfo; - getAttachedShaders(program: WebGLProgram): WebGLShader[]; - getAttribLocation(program: WebGLProgram, name: string): number; + getActiveAttrib(program: WebGLProgram | null, index: number): WebGLActiveInfo | null; + getActiveUniform(program: WebGLProgram | null, index: number): WebGLActiveInfo | null; + getAttachedShaders(program: WebGLProgram | null): WebGLShader[] | null; + getAttribLocation(program: WebGLProgram | null, name: string): number; getBufferParameter(target: number, pname: number): any; getContextAttributes(): WebGLContextAttributes; getError(): number; getExtension(name: string): any; getFramebufferAttachmentParameter(target: number, attachment: number, pname: number): any; getParameter(pname: number): any; - getProgramInfoLog(program: WebGLProgram): string; - getProgramParameter(program: WebGLProgram, pname: number): any; + getProgramInfoLog(program: WebGLProgram | null): string | null; + getProgramParameter(program: WebGLProgram | null, pname: number): any; getRenderbufferParameter(target: number, pname: number): any; - getShaderInfoLog(shader: WebGLShader): string; - getShaderParameter(shader: WebGLShader, pname: number): any; - getShaderPrecisionFormat(shadertype: number, precisiontype: number): WebGLShaderPrecisionFormat; - getShaderSource(shader: WebGLShader): string; - getSupportedExtensions(): string[]; + getShaderInfoLog(shader: WebGLShader | null): string | null; + getShaderParameter(shader: WebGLShader | null, pname: number): any; + getShaderPrecisionFormat(shadertype: number, precisiontype: number): WebGLShaderPrecisionFormat | null; + getShaderSource(shader: WebGLShader | null): string | null; + getSupportedExtensions(): string[] | null; getTexParameter(target: number, pname: number): any; - getUniform(program: WebGLProgram, location: WebGLUniformLocation): any; - getUniformLocation(program: WebGLProgram, name: string): WebGLUniformLocation; + getUniform(program: WebGLProgram | null, location: WebGLUniformLocation | null): any; + getUniformLocation(program: WebGLProgram | null, name: string): WebGLUniformLocation | null; getVertexAttrib(index: number, pname: number): any; getVertexAttribOffset(index: number, pname: number): number; hint(target: number, mode: number): void; - isBuffer(buffer: WebGLBuffer): boolean; + isBuffer(buffer: WebGLBuffer | null): boolean; isContextLost(): boolean; isEnabled(cap: number): boolean; - isFramebuffer(framebuffer: WebGLFramebuffer): boolean; - isProgram(program: WebGLProgram): boolean; - isRenderbuffer(renderbuffer: WebGLRenderbuffer): boolean; - isShader(shader: WebGLShader): boolean; - isTexture(texture: WebGLTexture): boolean; + isFramebuffer(framebuffer: WebGLFramebuffer | null): boolean; + isProgram(program: WebGLProgram | null): boolean; + isRenderbuffer(renderbuffer: WebGLRenderbuffer | null): boolean; + isShader(shader: WebGLShader | null): boolean; + isTexture(texture: WebGLTexture | null): boolean; lineWidth(width: number): void; - linkProgram(program: WebGLProgram): void; + linkProgram(program: WebGLProgram | null): void; pixelStorei(pname: number, param: number): void; polygonOffset(factor: number, units: number): void; - readPixels(x: number, y: number, width: number, height: number, format: number, type: number, pixels: ArrayBufferView): void; + readPixels(x: number, y: number, width: number, height: number, format: number, type: number, pixels: ArrayBufferView | null): void; renderbufferStorage(target: number, internalformat: number, width: number, height: number): void; sampleCoverage(value: number, invert: boolean): void; scissor(x: number, y: number, width: number, height: number): void; - shaderSource(shader: WebGLShader, source: string): void; + shaderSource(shader: WebGLShader | null, source: string): void; stencilFunc(func: number, ref: number, mask: number): void; stencilFuncSeparate(face: number, func: number, ref: number, mask: number): void; stencilMask(mask: number): void; @@ -11060,636 +12058,636 @@ interface WebGLRenderingContext { texSubImage2D(target: number, level: number, xoffset: number, yoffset: number, format: number, type: number, canvas: HTMLCanvasElement): void; texSubImage2D(target: number, level: number, xoffset: number, yoffset: number, format: number, type: number, video: HTMLVideoElement): void; texSubImage2D(target: number, level: number, xoffset: number, yoffset: number, format: number, type: number, pixels: ImageData): void; - uniform1f(location: WebGLUniformLocation, x: number): void; - uniform1fv(location: WebGLUniformLocation, v: Float32Array): void; - uniform1i(location: WebGLUniformLocation, x: number): void; - uniform1iv(location: WebGLUniformLocation, v: Int32Array): void; - uniform2f(location: WebGLUniformLocation, x: number, y: number): void; - uniform2fv(location: WebGLUniformLocation, v: Float32Array): void; - uniform2i(location: WebGLUniformLocation, x: number, y: number): void; - uniform2iv(location: WebGLUniformLocation, v: Int32Array): void; - uniform3f(location: WebGLUniformLocation, x: number, y: number, z: number): void; - uniform3fv(location: WebGLUniformLocation, v: Float32Array): void; - uniform3i(location: WebGLUniformLocation, x: number, y: number, z: number): void; - uniform3iv(location: WebGLUniformLocation, v: Int32Array): void; - uniform4f(location: WebGLUniformLocation, x: number, y: number, z: number, w: number): void; - uniform4fv(location: WebGLUniformLocation, v: Float32Array): void; - uniform4i(location: WebGLUniformLocation, x: number, y: number, z: number, w: number): void; - uniform4iv(location: WebGLUniformLocation, v: Int32Array): void; - uniformMatrix2fv(location: WebGLUniformLocation, transpose: boolean, value: Float32Array): void; - uniformMatrix3fv(location: WebGLUniformLocation, transpose: boolean, value: Float32Array): void; - uniformMatrix4fv(location: WebGLUniformLocation, transpose: boolean, value: Float32Array): void; - useProgram(program: WebGLProgram): void; - validateProgram(program: WebGLProgram): void; + uniform1f(location: WebGLUniformLocation | null, x: number): void; + uniform1fv(location: WebGLUniformLocation, v: Float32Array | number[]): void; + uniform1i(location: WebGLUniformLocation | null, x: number): void; + uniform1iv(location: WebGLUniformLocation, v: Int32Array | number[]): void; + uniform2f(location: WebGLUniformLocation | null, x: number, y: number): void; + uniform2fv(location: WebGLUniformLocation, v: Float32Array | number[]): void; + uniform2i(location: WebGLUniformLocation | null, x: number, y: number): void; + uniform2iv(location: WebGLUniformLocation, v: Int32Array | number[]): void; + uniform3f(location: WebGLUniformLocation | null, x: number, y: number, z: number): void; + uniform3fv(location: WebGLUniformLocation, v: Float32Array | number[]): void; + uniform3i(location: WebGLUniformLocation | null, x: number, y: number, z: number): void; + uniform3iv(location: WebGLUniformLocation, v: Int32Array | number[]): void; + uniform4f(location: WebGLUniformLocation | null, x: number, y: number, z: number, w: number): void; + uniform4fv(location: WebGLUniformLocation, v: Float32Array | number[]): void; + uniform4i(location: WebGLUniformLocation | null, x: number, y: number, z: number, w: number): void; + uniform4iv(location: WebGLUniformLocation, v: Int32Array | number[]): void; + uniformMatrix2fv(location: WebGLUniformLocation, transpose: boolean, value: Float32Array | number[]): void; + uniformMatrix3fv(location: WebGLUniformLocation, transpose: boolean, value: Float32Array | number[]): void; + uniformMatrix4fv(location: WebGLUniformLocation, transpose: boolean, value: Float32Array | number[]): void; + useProgram(program: WebGLProgram | null): void; + validateProgram(program: WebGLProgram | null): void; vertexAttrib1f(indx: number, x: number): void; - vertexAttrib1fv(indx: number, values: Float32Array): void; + vertexAttrib1fv(indx: number, values: Float32Array | number[]): void; vertexAttrib2f(indx: number, x: number, y: number): void; - vertexAttrib2fv(indx: number, values: Float32Array): void; + vertexAttrib2fv(indx: number, values: Float32Array | number[]): void; vertexAttrib3f(indx: number, x: number, y: number, z: number): void; - vertexAttrib3fv(indx: number, values: Float32Array): void; + vertexAttrib3fv(indx: number, values: Float32Array | number[]): void; vertexAttrib4f(indx: number, x: number, y: number, z: number, w: number): void; - vertexAttrib4fv(indx: number, values: Float32Array): void; + vertexAttrib4fv(indx: number, values: Float32Array | number[]): void; vertexAttribPointer(indx: number, size: number, type: number, normalized: boolean, stride: number, offset: number): void; viewport(x: number, y: number, width: number, height: number): void; - ACTIVE_ATTRIBUTES: number; - ACTIVE_TEXTURE: number; - ACTIVE_UNIFORMS: number; - ALIASED_LINE_WIDTH_RANGE: number; - ALIASED_POINT_SIZE_RANGE: number; - ALPHA: number; - ALPHA_BITS: number; - ALWAYS: number; - ARRAY_BUFFER: number; - ARRAY_BUFFER_BINDING: number; - ATTACHED_SHADERS: number; - BACK: number; - BLEND: number; - BLEND_COLOR: number; - BLEND_DST_ALPHA: number; - BLEND_DST_RGB: number; - BLEND_EQUATION: number; - BLEND_EQUATION_ALPHA: number; - BLEND_EQUATION_RGB: number; - BLEND_SRC_ALPHA: number; - BLEND_SRC_RGB: number; - BLUE_BITS: number; - BOOL: number; - BOOL_VEC2: number; - BOOL_VEC3: number; - BOOL_VEC4: number; - BROWSER_DEFAULT_WEBGL: number; - BUFFER_SIZE: number; - BUFFER_USAGE: number; - BYTE: number; - CCW: number; - CLAMP_TO_EDGE: number; - COLOR_ATTACHMENT0: number; - COLOR_BUFFER_BIT: number; - COLOR_CLEAR_VALUE: number; - COLOR_WRITEMASK: number; - COMPILE_STATUS: number; - COMPRESSED_TEXTURE_FORMATS: number; - CONSTANT_ALPHA: number; - CONSTANT_COLOR: number; - CONTEXT_LOST_WEBGL: number; - CULL_FACE: number; - CULL_FACE_MODE: number; - CURRENT_PROGRAM: number; - CURRENT_VERTEX_ATTRIB: number; - CW: number; - DECR: number; - DECR_WRAP: number; - DELETE_STATUS: number; - DEPTH_ATTACHMENT: number; - DEPTH_BITS: number; - DEPTH_BUFFER_BIT: number; - DEPTH_CLEAR_VALUE: number; - DEPTH_COMPONENT: number; - DEPTH_COMPONENT16: number; - DEPTH_FUNC: number; - DEPTH_RANGE: number; - DEPTH_STENCIL: number; - DEPTH_STENCIL_ATTACHMENT: number; - DEPTH_TEST: number; - DEPTH_WRITEMASK: number; - DITHER: number; - DONT_CARE: number; - DST_ALPHA: number; - DST_COLOR: number; - DYNAMIC_DRAW: number; - ELEMENT_ARRAY_BUFFER: number; - ELEMENT_ARRAY_BUFFER_BINDING: number; - EQUAL: number; - FASTEST: number; - FLOAT: number; - FLOAT_MAT2: number; - FLOAT_MAT3: number; - FLOAT_MAT4: number; - FLOAT_VEC2: number; - FLOAT_VEC3: number; - FLOAT_VEC4: number; - FRAGMENT_SHADER: number; - FRAMEBUFFER: number; - FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: number; - FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: number; - FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: number; - FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: number; - FRAMEBUFFER_BINDING: number; - FRAMEBUFFER_COMPLETE: number; - FRAMEBUFFER_INCOMPLETE_ATTACHMENT: number; - FRAMEBUFFER_INCOMPLETE_DIMENSIONS: number; - FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: number; - FRAMEBUFFER_UNSUPPORTED: number; - FRONT: number; - FRONT_AND_BACK: number; - FRONT_FACE: number; - FUNC_ADD: number; - FUNC_REVERSE_SUBTRACT: number; - FUNC_SUBTRACT: number; - GENERATE_MIPMAP_HINT: number; - GEQUAL: number; - GREATER: number; - GREEN_BITS: number; - HIGH_FLOAT: number; - HIGH_INT: number; - IMPLEMENTATION_COLOR_READ_FORMAT: number; - IMPLEMENTATION_COLOR_READ_TYPE: number; - INCR: number; - INCR_WRAP: number; - INT: number; - INT_VEC2: number; - INT_VEC3: number; - INT_VEC4: number; - INVALID_ENUM: number; - INVALID_FRAMEBUFFER_OPERATION: number; - INVALID_OPERATION: number; - INVALID_VALUE: number; - INVERT: number; - KEEP: number; - LEQUAL: number; - LESS: number; - LINEAR: number; - LINEAR_MIPMAP_LINEAR: number; - LINEAR_MIPMAP_NEAREST: number; - LINES: number; - LINE_LOOP: number; - LINE_STRIP: number; - LINE_WIDTH: number; - LINK_STATUS: number; - LOW_FLOAT: number; - LOW_INT: number; - LUMINANCE: number; - LUMINANCE_ALPHA: number; - MAX_COMBINED_TEXTURE_IMAGE_UNITS: number; - MAX_CUBE_MAP_TEXTURE_SIZE: number; - MAX_FRAGMENT_UNIFORM_VECTORS: number; - MAX_RENDERBUFFER_SIZE: number; - MAX_TEXTURE_IMAGE_UNITS: number; - MAX_TEXTURE_SIZE: number; - MAX_VARYING_VECTORS: number; - MAX_VERTEX_ATTRIBS: number; - MAX_VERTEX_TEXTURE_IMAGE_UNITS: number; - MAX_VERTEX_UNIFORM_VECTORS: number; - MAX_VIEWPORT_DIMS: number; - MEDIUM_FLOAT: number; - MEDIUM_INT: number; - MIRRORED_REPEAT: number; - NEAREST: number; - NEAREST_MIPMAP_LINEAR: number; - NEAREST_MIPMAP_NEAREST: number; - NEVER: number; - NICEST: number; - NONE: number; - NOTEQUAL: number; - NO_ERROR: number; - ONE: number; - ONE_MINUS_CONSTANT_ALPHA: number; - ONE_MINUS_CONSTANT_COLOR: number; - ONE_MINUS_DST_ALPHA: number; - ONE_MINUS_DST_COLOR: number; - ONE_MINUS_SRC_ALPHA: number; - ONE_MINUS_SRC_COLOR: number; - OUT_OF_MEMORY: number; - PACK_ALIGNMENT: number; - POINTS: number; - POLYGON_OFFSET_FACTOR: number; - POLYGON_OFFSET_FILL: number; - POLYGON_OFFSET_UNITS: number; - RED_BITS: number; - RENDERBUFFER: number; - RENDERBUFFER_ALPHA_SIZE: number; - RENDERBUFFER_BINDING: number; - RENDERBUFFER_BLUE_SIZE: number; - RENDERBUFFER_DEPTH_SIZE: number; - RENDERBUFFER_GREEN_SIZE: number; - RENDERBUFFER_HEIGHT: number; - RENDERBUFFER_INTERNAL_FORMAT: number; - RENDERBUFFER_RED_SIZE: number; - RENDERBUFFER_STENCIL_SIZE: number; - RENDERBUFFER_WIDTH: number; - RENDERER: number; - REPEAT: number; - REPLACE: number; - RGB: number; - RGB565: number; - RGB5_A1: number; - RGBA: number; - RGBA4: number; - SAMPLER_2D: number; - SAMPLER_CUBE: number; - SAMPLES: number; - SAMPLE_ALPHA_TO_COVERAGE: number; - SAMPLE_BUFFERS: number; - SAMPLE_COVERAGE: number; - SAMPLE_COVERAGE_INVERT: number; - SAMPLE_COVERAGE_VALUE: number; - SCISSOR_BOX: number; - SCISSOR_TEST: number; - SHADER_TYPE: number; - SHADING_LANGUAGE_VERSION: number; - SHORT: number; - SRC_ALPHA: number; - SRC_ALPHA_SATURATE: number; - SRC_COLOR: number; - STATIC_DRAW: number; - STENCIL_ATTACHMENT: number; - STENCIL_BACK_FAIL: number; - STENCIL_BACK_FUNC: number; - STENCIL_BACK_PASS_DEPTH_FAIL: number; - STENCIL_BACK_PASS_DEPTH_PASS: number; - STENCIL_BACK_REF: number; - STENCIL_BACK_VALUE_MASK: number; - STENCIL_BACK_WRITEMASK: number; - STENCIL_BITS: number; - STENCIL_BUFFER_BIT: number; - STENCIL_CLEAR_VALUE: number; - STENCIL_FAIL: number; - STENCIL_FUNC: number; - STENCIL_INDEX: number; - STENCIL_INDEX8: number; - STENCIL_PASS_DEPTH_FAIL: number; - STENCIL_PASS_DEPTH_PASS: number; - STENCIL_REF: number; - STENCIL_TEST: number; - STENCIL_VALUE_MASK: number; - STENCIL_WRITEMASK: number; - STREAM_DRAW: number; - SUBPIXEL_BITS: number; - TEXTURE: number; - TEXTURE0: number; - TEXTURE1: number; - TEXTURE10: number; - TEXTURE11: number; - TEXTURE12: number; - TEXTURE13: number; - TEXTURE14: number; - TEXTURE15: number; - TEXTURE16: number; - TEXTURE17: number; - TEXTURE18: number; - TEXTURE19: number; - TEXTURE2: number; - TEXTURE20: number; - TEXTURE21: number; - TEXTURE22: number; - TEXTURE23: number; - TEXTURE24: number; - TEXTURE25: number; - TEXTURE26: number; - TEXTURE27: number; - TEXTURE28: number; - TEXTURE29: number; - TEXTURE3: number; - TEXTURE30: number; - TEXTURE31: number; - TEXTURE4: number; - TEXTURE5: number; - TEXTURE6: number; - TEXTURE7: number; - TEXTURE8: number; - TEXTURE9: number; - TEXTURE_2D: number; - TEXTURE_BINDING_2D: number; - TEXTURE_BINDING_CUBE_MAP: number; - TEXTURE_CUBE_MAP: number; - TEXTURE_CUBE_MAP_NEGATIVE_X: number; - TEXTURE_CUBE_MAP_NEGATIVE_Y: number; - TEXTURE_CUBE_MAP_NEGATIVE_Z: number; - TEXTURE_CUBE_MAP_POSITIVE_X: number; - TEXTURE_CUBE_MAP_POSITIVE_Y: number; - TEXTURE_CUBE_MAP_POSITIVE_Z: number; - TEXTURE_MAG_FILTER: number; - TEXTURE_MIN_FILTER: number; - TEXTURE_WRAP_S: number; - TEXTURE_WRAP_T: number; - TRIANGLES: number; - TRIANGLE_FAN: number; - TRIANGLE_STRIP: number; - UNPACK_ALIGNMENT: number; - UNPACK_COLORSPACE_CONVERSION_WEBGL: number; - UNPACK_FLIP_Y_WEBGL: number; - UNPACK_PREMULTIPLY_ALPHA_WEBGL: number; - UNSIGNED_BYTE: number; - UNSIGNED_INT: number; - UNSIGNED_SHORT: number; - UNSIGNED_SHORT_4_4_4_4: number; - UNSIGNED_SHORT_5_5_5_1: number; - UNSIGNED_SHORT_5_6_5: number; - VALIDATE_STATUS: number; - VENDOR: number; - VERSION: number; - VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: number; - VERTEX_ATTRIB_ARRAY_ENABLED: number; - VERTEX_ATTRIB_ARRAY_NORMALIZED: number; - VERTEX_ATTRIB_ARRAY_POINTER: number; - VERTEX_ATTRIB_ARRAY_SIZE: number; - VERTEX_ATTRIB_ARRAY_STRIDE: number; - VERTEX_ATTRIB_ARRAY_TYPE: number; - VERTEX_SHADER: number; - VIEWPORT: number; - ZERO: number; + readonly ACTIVE_ATTRIBUTES: number; + readonly ACTIVE_TEXTURE: number; + readonly ACTIVE_UNIFORMS: number; + readonly ALIASED_LINE_WIDTH_RANGE: number; + readonly ALIASED_POINT_SIZE_RANGE: number; + readonly ALPHA: number; + readonly ALPHA_BITS: number; + readonly ALWAYS: number; + readonly ARRAY_BUFFER: number; + readonly ARRAY_BUFFER_BINDING: number; + readonly ATTACHED_SHADERS: number; + readonly BACK: number; + readonly BLEND: number; + readonly BLEND_COLOR: number; + readonly BLEND_DST_ALPHA: number; + readonly BLEND_DST_RGB: number; + readonly BLEND_EQUATION: number; + readonly BLEND_EQUATION_ALPHA: number; + readonly BLEND_EQUATION_RGB: number; + readonly BLEND_SRC_ALPHA: number; + readonly BLEND_SRC_RGB: number; + readonly BLUE_BITS: number; + readonly BOOL: number; + readonly BOOL_VEC2: number; + readonly BOOL_VEC3: number; + readonly BOOL_VEC4: number; + readonly BROWSER_DEFAULT_WEBGL: number; + readonly BUFFER_SIZE: number; + readonly BUFFER_USAGE: number; + readonly BYTE: number; + readonly CCW: number; + readonly CLAMP_TO_EDGE: number; + readonly COLOR_ATTACHMENT0: number; + readonly COLOR_BUFFER_BIT: number; + readonly COLOR_CLEAR_VALUE: number; + readonly COLOR_WRITEMASK: number; + readonly COMPILE_STATUS: number; + readonly COMPRESSED_TEXTURE_FORMATS: number; + readonly CONSTANT_ALPHA: number; + readonly CONSTANT_COLOR: number; + readonly CONTEXT_LOST_WEBGL: number; + readonly CULL_FACE: number; + readonly CULL_FACE_MODE: number; + readonly CURRENT_PROGRAM: number; + readonly CURRENT_VERTEX_ATTRIB: number; + readonly CW: number; + readonly DECR: number; + readonly DECR_WRAP: number; + readonly DELETE_STATUS: number; + readonly DEPTH_ATTACHMENT: number; + readonly DEPTH_BITS: number; + readonly DEPTH_BUFFER_BIT: number; + readonly DEPTH_CLEAR_VALUE: number; + readonly DEPTH_COMPONENT: number; + readonly DEPTH_COMPONENT16: number; + readonly DEPTH_FUNC: number; + readonly DEPTH_RANGE: number; + readonly DEPTH_STENCIL: number; + readonly DEPTH_STENCIL_ATTACHMENT: number; + readonly DEPTH_TEST: number; + readonly DEPTH_WRITEMASK: number; + readonly DITHER: number; + readonly DONT_CARE: number; + readonly DST_ALPHA: number; + readonly DST_COLOR: number; + readonly DYNAMIC_DRAW: number; + readonly ELEMENT_ARRAY_BUFFER: number; + readonly ELEMENT_ARRAY_BUFFER_BINDING: number; + readonly EQUAL: number; + readonly FASTEST: number; + readonly FLOAT: number; + readonly FLOAT_MAT2: number; + readonly FLOAT_MAT3: number; + readonly FLOAT_MAT4: number; + readonly FLOAT_VEC2: number; + readonly FLOAT_VEC3: number; + readonly FLOAT_VEC4: number; + readonly FRAGMENT_SHADER: number; + readonly FRAMEBUFFER: number; + readonly FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: number; + readonly FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: number; + readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: number; + readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: number; + readonly FRAMEBUFFER_BINDING: number; + readonly FRAMEBUFFER_COMPLETE: number; + readonly FRAMEBUFFER_INCOMPLETE_ATTACHMENT: number; + readonly FRAMEBUFFER_INCOMPLETE_DIMENSIONS: number; + readonly FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: number; + readonly FRAMEBUFFER_UNSUPPORTED: number; + readonly FRONT: number; + readonly FRONT_AND_BACK: number; + readonly FRONT_FACE: number; + readonly FUNC_ADD: number; + readonly FUNC_REVERSE_SUBTRACT: number; + readonly FUNC_SUBTRACT: number; + readonly GENERATE_MIPMAP_HINT: number; + readonly GEQUAL: number; + readonly GREATER: number; + readonly GREEN_BITS: number; + readonly HIGH_FLOAT: number; + readonly HIGH_INT: number; + readonly IMPLEMENTATION_COLOR_READ_FORMAT: number; + readonly IMPLEMENTATION_COLOR_READ_TYPE: number; + readonly INCR: number; + readonly INCR_WRAP: number; + readonly INT: number; + readonly INT_VEC2: number; + readonly INT_VEC3: number; + readonly INT_VEC4: number; + readonly INVALID_ENUM: number; + readonly INVALID_FRAMEBUFFER_OPERATION: number; + readonly INVALID_OPERATION: number; + readonly INVALID_VALUE: number; + readonly INVERT: number; + readonly KEEP: number; + readonly LEQUAL: number; + readonly LESS: number; + readonly LINEAR: number; + readonly LINEAR_MIPMAP_LINEAR: number; + readonly LINEAR_MIPMAP_NEAREST: number; + readonly LINES: number; + readonly LINE_LOOP: number; + readonly LINE_STRIP: number; + readonly LINE_WIDTH: number; + readonly LINK_STATUS: number; + readonly LOW_FLOAT: number; + readonly LOW_INT: number; + readonly LUMINANCE: number; + readonly LUMINANCE_ALPHA: number; + readonly MAX_COMBINED_TEXTURE_IMAGE_UNITS: number; + readonly MAX_CUBE_MAP_TEXTURE_SIZE: number; + readonly MAX_FRAGMENT_UNIFORM_VECTORS: number; + readonly MAX_RENDERBUFFER_SIZE: number; + readonly MAX_TEXTURE_IMAGE_UNITS: number; + readonly MAX_TEXTURE_SIZE: number; + readonly MAX_VARYING_VECTORS: number; + readonly MAX_VERTEX_ATTRIBS: number; + readonly MAX_VERTEX_TEXTURE_IMAGE_UNITS: number; + readonly MAX_VERTEX_UNIFORM_VECTORS: number; + readonly MAX_VIEWPORT_DIMS: number; + readonly MEDIUM_FLOAT: number; + readonly MEDIUM_INT: number; + readonly MIRRORED_REPEAT: number; + readonly NEAREST: number; + readonly NEAREST_MIPMAP_LINEAR: number; + readonly NEAREST_MIPMAP_NEAREST: number; + readonly NEVER: number; + readonly NICEST: number; + readonly NONE: number; + readonly NOTEQUAL: number; + readonly NO_ERROR: number; + readonly ONE: number; + readonly ONE_MINUS_CONSTANT_ALPHA: number; + readonly ONE_MINUS_CONSTANT_COLOR: number; + readonly ONE_MINUS_DST_ALPHA: number; + readonly ONE_MINUS_DST_COLOR: number; + readonly ONE_MINUS_SRC_ALPHA: number; + readonly ONE_MINUS_SRC_COLOR: number; + readonly OUT_OF_MEMORY: number; + readonly PACK_ALIGNMENT: number; + readonly POINTS: number; + readonly POLYGON_OFFSET_FACTOR: number; + readonly POLYGON_OFFSET_FILL: number; + readonly POLYGON_OFFSET_UNITS: number; + readonly RED_BITS: number; + readonly RENDERBUFFER: number; + readonly RENDERBUFFER_ALPHA_SIZE: number; + readonly RENDERBUFFER_BINDING: number; + readonly RENDERBUFFER_BLUE_SIZE: number; + readonly RENDERBUFFER_DEPTH_SIZE: number; + readonly RENDERBUFFER_GREEN_SIZE: number; + readonly RENDERBUFFER_HEIGHT: number; + readonly RENDERBUFFER_INTERNAL_FORMAT: number; + readonly RENDERBUFFER_RED_SIZE: number; + readonly RENDERBUFFER_STENCIL_SIZE: number; + readonly RENDERBUFFER_WIDTH: number; + readonly RENDERER: number; + readonly REPEAT: number; + readonly REPLACE: number; + readonly RGB: number; + readonly RGB565: number; + readonly RGB5_A1: number; + readonly RGBA: number; + readonly RGBA4: number; + readonly SAMPLER_2D: number; + readonly SAMPLER_CUBE: number; + readonly SAMPLES: number; + readonly SAMPLE_ALPHA_TO_COVERAGE: number; + readonly SAMPLE_BUFFERS: number; + readonly SAMPLE_COVERAGE: number; + readonly SAMPLE_COVERAGE_INVERT: number; + readonly SAMPLE_COVERAGE_VALUE: number; + readonly SCISSOR_BOX: number; + readonly SCISSOR_TEST: number; + readonly SHADER_TYPE: number; + readonly SHADING_LANGUAGE_VERSION: number; + readonly SHORT: number; + readonly SRC_ALPHA: number; + readonly SRC_ALPHA_SATURATE: number; + readonly SRC_COLOR: number; + readonly STATIC_DRAW: number; + readonly STENCIL_ATTACHMENT: number; + readonly STENCIL_BACK_FAIL: number; + readonly STENCIL_BACK_FUNC: number; + readonly STENCIL_BACK_PASS_DEPTH_FAIL: number; + readonly STENCIL_BACK_PASS_DEPTH_PASS: number; + readonly STENCIL_BACK_REF: number; + readonly STENCIL_BACK_VALUE_MASK: number; + readonly STENCIL_BACK_WRITEMASK: number; + readonly STENCIL_BITS: number; + readonly STENCIL_BUFFER_BIT: number; + readonly STENCIL_CLEAR_VALUE: number; + readonly STENCIL_FAIL: number; + readonly STENCIL_FUNC: number; + readonly STENCIL_INDEX: number; + readonly STENCIL_INDEX8: number; + readonly STENCIL_PASS_DEPTH_FAIL: number; + readonly STENCIL_PASS_DEPTH_PASS: number; + readonly STENCIL_REF: number; + readonly STENCIL_TEST: number; + readonly STENCIL_VALUE_MASK: number; + readonly STENCIL_WRITEMASK: number; + readonly STREAM_DRAW: number; + readonly SUBPIXEL_BITS: number; + readonly TEXTURE: number; + readonly TEXTURE0: number; + readonly TEXTURE1: number; + readonly TEXTURE10: number; + readonly TEXTURE11: number; + readonly TEXTURE12: number; + readonly TEXTURE13: number; + readonly TEXTURE14: number; + readonly TEXTURE15: number; + readonly TEXTURE16: number; + readonly TEXTURE17: number; + readonly TEXTURE18: number; + readonly TEXTURE19: number; + readonly TEXTURE2: number; + readonly TEXTURE20: number; + readonly TEXTURE21: number; + readonly TEXTURE22: number; + readonly TEXTURE23: number; + readonly TEXTURE24: number; + readonly TEXTURE25: number; + readonly TEXTURE26: number; + readonly TEXTURE27: number; + readonly TEXTURE28: number; + readonly TEXTURE29: number; + readonly TEXTURE3: number; + readonly TEXTURE30: number; + readonly TEXTURE31: number; + readonly TEXTURE4: number; + readonly TEXTURE5: number; + readonly TEXTURE6: number; + readonly TEXTURE7: number; + readonly TEXTURE8: number; + readonly TEXTURE9: number; + readonly TEXTURE_2D: number; + readonly TEXTURE_BINDING_2D: number; + readonly TEXTURE_BINDING_CUBE_MAP: number; + readonly TEXTURE_CUBE_MAP: number; + readonly TEXTURE_CUBE_MAP_NEGATIVE_X: number; + readonly TEXTURE_CUBE_MAP_NEGATIVE_Y: number; + readonly TEXTURE_CUBE_MAP_NEGATIVE_Z: number; + readonly TEXTURE_CUBE_MAP_POSITIVE_X: number; + readonly TEXTURE_CUBE_MAP_POSITIVE_Y: number; + readonly TEXTURE_CUBE_MAP_POSITIVE_Z: number; + readonly TEXTURE_MAG_FILTER: number; + readonly TEXTURE_MIN_FILTER: number; + readonly TEXTURE_WRAP_S: number; + readonly TEXTURE_WRAP_T: number; + readonly TRIANGLES: number; + readonly TRIANGLE_FAN: number; + readonly TRIANGLE_STRIP: number; + readonly UNPACK_ALIGNMENT: number; + readonly UNPACK_COLORSPACE_CONVERSION_WEBGL: number; + readonly UNPACK_FLIP_Y_WEBGL: number; + readonly UNPACK_PREMULTIPLY_ALPHA_WEBGL: number; + readonly UNSIGNED_BYTE: number; + readonly UNSIGNED_INT: number; + readonly UNSIGNED_SHORT: number; + readonly UNSIGNED_SHORT_4_4_4_4: number; + readonly UNSIGNED_SHORT_5_5_5_1: number; + readonly UNSIGNED_SHORT_5_6_5: number; + readonly VALIDATE_STATUS: number; + readonly VENDOR: number; + readonly VERSION: number; + readonly VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: number; + readonly VERTEX_ATTRIB_ARRAY_ENABLED: number; + readonly VERTEX_ATTRIB_ARRAY_NORMALIZED: number; + readonly VERTEX_ATTRIB_ARRAY_POINTER: number; + readonly VERTEX_ATTRIB_ARRAY_SIZE: number; + readonly VERTEX_ATTRIB_ARRAY_STRIDE: number; + readonly VERTEX_ATTRIB_ARRAY_TYPE: number; + readonly VERTEX_SHADER: number; + readonly VIEWPORT: number; + readonly ZERO: number; } declare var WebGLRenderingContext: { prototype: WebGLRenderingContext; new(): WebGLRenderingContext; - ACTIVE_ATTRIBUTES: number; - ACTIVE_TEXTURE: number; - ACTIVE_UNIFORMS: number; - ALIASED_LINE_WIDTH_RANGE: number; - ALIASED_POINT_SIZE_RANGE: number; - ALPHA: number; - ALPHA_BITS: number; - ALWAYS: number; - ARRAY_BUFFER: number; - ARRAY_BUFFER_BINDING: number; - ATTACHED_SHADERS: number; - BACK: number; - BLEND: number; - BLEND_COLOR: number; - BLEND_DST_ALPHA: number; - BLEND_DST_RGB: number; - BLEND_EQUATION: number; - BLEND_EQUATION_ALPHA: number; - BLEND_EQUATION_RGB: number; - BLEND_SRC_ALPHA: number; - BLEND_SRC_RGB: number; - BLUE_BITS: number; - BOOL: number; - BOOL_VEC2: number; - BOOL_VEC3: number; - BOOL_VEC4: number; - BROWSER_DEFAULT_WEBGL: number; - BUFFER_SIZE: number; - BUFFER_USAGE: number; - BYTE: number; - CCW: number; - CLAMP_TO_EDGE: number; - COLOR_ATTACHMENT0: number; - COLOR_BUFFER_BIT: number; - COLOR_CLEAR_VALUE: number; - COLOR_WRITEMASK: number; - COMPILE_STATUS: number; - COMPRESSED_TEXTURE_FORMATS: number; - CONSTANT_ALPHA: number; - CONSTANT_COLOR: number; - CONTEXT_LOST_WEBGL: number; - CULL_FACE: number; - CULL_FACE_MODE: number; - CURRENT_PROGRAM: number; - CURRENT_VERTEX_ATTRIB: number; - CW: number; - DECR: number; - DECR_WRAP: number; - DELETE_STATUS: number; - DEPTH_ATTACHMENT: number; - DEPTH_BITS: number; - DEPTH_BUFFER_BIT: number; - DEPTH_CLEAR_VALUE: number; - DEPTH_COMPONENT: number; - DEPTH_COMPONENT16: number; - DEPTH_FUNC: number; - DEPTH_RANGE: number; - DEPTH_STENCIL: number; - DEPTH_STENCIL_ATTACHMENT: number; - DEPTH_TEST: number; - DEPTH_WRITEMASK: number; - DITHER: number; - DONT_CARE: number; - DST_ALPHA: number; - DST_COLOR: number; - DYNAMIC_DRAW: number; - ELEMENT_ARRAY_BUFFER: number; - ELEMENT_ARRAY_BUFFER_BINDING: number; - EQUAL: number; - FASTEST: number; - FLOAT: number; - FLOAT_MAT2: number; - FLOAT_MAT3: number; - FLOAT_MAT4: number; - FLOAT_VEC2: number; - FLOAT_VEC3: number; - FLOAT_VEC4: number; - FRAGMENT_SHADER: number; - FRAMEBUFFER: number; - FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: number; - FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: number; - FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: number; - FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: number; - FRAMEBUFFER_BINDING: number; - FRAMEBUFFER_COMPLETE: number; - FRAMEBUFFER_INCOMPLETE_ATTACHMENT: number; - FRAMEBUFFER_INCOMPLETE_DIMENSIONS: number; - FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: number; - FRAMEBUFFER_UNSUPPORTED: number; - FRONT: number; - FRONT_AND_BACK: number; - FRONT_FACE: number; - FUNC_ADD: number; - FUNC_REVERSE_SUBTRACT: number; - FUNC_SUBTRACT: number; - GENERATE_MIPMAP_HINT: number; - GEQUAL: number; - GREATER: number; - GREEN_BITS: number; - HIGH_FLOAT: number; - HIGH_INT: number; - IMPLEMENTATION_COLOR_READ_FORMAT: number; - IMPLEMENTATION_COLOR_READ_TYPE: number; - INCR: number; - INCR_WRAP: number; - INT: number; - INT_VEC2: number; - INT_VEC3: number; - INT_VEC4: number; - INVALID_ENUM: number; - INVALID_FRAMEBUFFER_OPERATION: number; - INVALID_OPERATION: number; - INVALID_VALUE: number; - INVERT: number; - KEEP: number; - LEQUAL: number; - LESS: number; - LINEAR: number; - LINEAR_MIPMAP_LINEAR: number; - LINEAR_MIPMAP_NEAREST: number; - LINES: number; - LINE_LOOP: number; - LINE_STRIP: number; - LINE_WIDTH: number; - LINK_STATUS: number; - LOW_FLOAT: number; - LOW_INT: number; - LUMINANCE: number; - LUMINANCE_ALPHA: number; - MAX_COMBINED_TEXTURE_IMAGE_UNITS: number; - MAX_CUBE_MAP_TEXTURE_SIZE: number; - MAX_FRAGMENT_UNIFORM_VECTORS: number; - MAX_RENDERBUFFER_SIZE: number; - MAX_TEXTURE_IMAGE_UNITS: number; - MAX_TEXTURE_SIZE: number; - MAX_VARYING_VECTORS: number; - MAX_VERTEX_ATTRIBS: number; - MAX_VERTEX_TEXTURE_IMAGE_UNITS: number; - MAX_VERTEX_UNIFORM_VECTORS: number; - MAX_VIEWPORT_DIMS: number; - MEDIUM_FLOAT: number; - MEDIUM_INT: number; - MIRRORED_REPEAT: number; - NEAREST: number; - NEAREST_MIPMAP_LINEAR: number; - NEAREST_MIPMAP_NEAREST: number; - NEVER: number; - NICEST: number; - NONE: number; - NOTEQUAL: number; - NO_ERROR: number; - ONE: number; - ONE_MINUS_CONSTANT_ALPHA: number; - ONE_MINUS_CONSTANT_COLOR: number; - ONE_MINUS_DST_ALPHA: number; - ONE_MINUS_DST_COLOR: number; - ONE_MINUS_SRC_ALPHA: number; - ONE_MINUS_SRC_COLOR: number; - OUT_OF_MEMORY: number; - PACK_ALIGNMENT: number; - POINTS: number; - POLYGON_OFFSET_FACTOR: number; - POLYGON_OFFSET_FILL: number; - POLYGON_OFFSET_UNITS: number; - RED_BITS: number; - RENDERBUFFER: number; - RENDERBUFFER_ALPHA_SIZE: number; - RENDERBUFFER_BINDING: number; - RENDERBUFFER_BLUE_SIZE: number; - RENDERBUFFER_DEPTH_SIZE: number; - RENDERBUFFER_GREEN_SIZE: number; - RENDERBUFFER_HEIGHT: number; - RENDERBUFFER_INTERNAL_FORMAT: number; - RENDERBUFFER_RED_SIZE: number; - RENDERBUFFER_STENCIL_SIZE: number; - RENDERBUFFER_WIDTH: number; - RENDERER: number; - REPEAT: number; - REPLACE: number; - RGB: number; - RGB565: number; - RGB5_A1: number; - RGBA: number; - RGBA4: number; - SAMPLER_2D: number; - SAMPLER_CUBE: number; - SAMPLES: number; - SAMPLE_ALPHA_TO_COVERAGE: number; - SAMPLE_BUFFERS: number; - SAMPLE_COVERAGE: number; - SAMPLE_COVERAGE_INVERT: number; - SAMPLE_COVERAGE_VALUE: number; - SCISSOR_BOX: number; - SCISSOR_TEST: number; - SHADER_TYPE: number; - SHADING_LANGUAGE_VERSION: number; - SHORT: number; - SRC_ALPHA: number; - SRC_ALPHA_SATURATE: number; - SRC_COLOR: number; - STATIC_DRAW: number; - STENCIL_ATTACHMENT: number; - STENCIL_BACK_FAIL: number; - STENCIL_BACK_FUNC: number; - STENCIL_BACK_PASS_DEPTH_FAIL: number; - STENCIL_BACK_PASS_DEPTH_PASS: number; - STENCIL_BACK_REF: number; - STENCIL_BACK_VALUE_MASK: number; - STENCIL_BACK_WRITEMASK: number; - STENCIL_BITS: number; - STENCIL_BUFFER_BIT: number; - STENCIL_CLEAR_VALUE: number; - STENCIL_FAIL: number; - STENCIL_FUNC: number; - STENCIL_INDEX: number; - STENCIL_INDEX8: number; - STENCIL_PASS_DEPTH_FAIL: number; - STENCIL_PASS_DEPTH_PASS: number; - STENCIL_REF: number; - STENCIL_TEST: number; - STENCIL_VALUE_MASK: number; - STENCIL_WRITEMASK: number; - STREAM_DRAW: number; - SUBPIXEL_BITS: number; - TEXTURE: number; - TEXTURE0: number; - TEXTURE1: number; - TEXTURE10: number; - TEXTURE11: number; - TEXTURE12: number; - TEXTURE13: number; - TEXTURE14: number; - TEXTURE15: number; - TEXTURE16: number; - TEXTURE17: number; - TEXTURE18: number; - TEXTURE19: number; - TEXTURE2: number; - TEXTURE20: number; - TEXTURE21: number; - TEXTURE22: number; - TEXTURE23: number; - TEXTURE24: number; - TEXTURE25: number; - TEXTURE26: number; - TEXTURE27: number; - TEXTURE28: number; - TEXTURE29: number; - TEXTURE3: number; - TEXTURE30: number; - TEXTURE31: number; - TEXTURE4: number; - TEXTURE5: number; - TEXTURE6: number; - TEXTURE7: number; - TEXTURE8: number; - TEXTURE9: number; - TEXTURE_2D: number; - TEXTURE_BINDING_2D: number; - TEXTURE_BINDING_CUBE_MAP: number; - TEXTURE_CUBE_MAP: number; - TEXTURE_CUBE_MAP_NEGATIVE_X: number; - TEXTURE_CUBE_MAP_NEGATIVE_Y: number; - TEXTURE_CUBE_MAP_NEGATIVE_Z: number; - TEXTURE_CUBE_MAP_POSITIVE_X: number; - TEXTURE_CUBE_MAP_POSITIVE_Y: number; - TEXTURE_CUBE_MAP_POSITIVE_Z: number; - TEXTURE_MAG_FILTER: number; - TEXTURE_MIN_FILTER: number; - TEXTURE_WRAP_S: number; - TEXTURE_WRAP_T: number; - TRIANGLES: number; - TRIANGLE_FAN: number; - TRIANGLE_STRIP: number; - UNPACK_ALIGNMENT: number; - UNPACK_COLORSPACE_CONVERSION_WEBGL: number; - UNPACK_FLIP_Y_WEBGL: number; - UNPACK_PREMULTIPLY_ALPHA_WEBGL: number; - UNSIGNED_BYTE: number; - UNSIGNED_INT: number; - UNSIGNED_SHORT: number; - UNSIGNED_SHORT_4_4_4_4: number; - UNSIGNED_SHORT_5_5_5_1: number; - UNSIGNED_SHORT_5_6_5: number; - VALIDATE_STATUS: number; - VENDOR: number; - VERSION: number; - VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: number; - VERTEX_ATTRIB_ARRAY_ENABLED: number; - VERTEX_ATTRIB_ARRAY_NORMALIZED: number; - VERTEX_ATTRIB_ARRAY_POINTER: number; - VERTEX_ATTRIB_ARRAY_SIZE: number; - VERTEX_ATTRIB_ARRAY_STRIDE: number; - VERTEX_ATTRIB_ARRAY_TYPE: number; - VERTEX_SHADER: number; - VIEWPORT: number; - ZERO: number; + readonly ACTIVE_ATTRIBUTES: number; + readonly ACTIVE_TEXTURE: number; + readonly ACTIVE_UNIFORMS: number; + readonly ALIASED_LINE_WIDTH_RANGE: number; + readonly ALIASED_POINT_SIZE_RANGE: number; + readonly ALPHA: number; + readonly ALPHA_BITS: number; + readonly ALWAYS: number; + readonly ARRAY_BUFFER: number; + readonly ARRAY_BUFFER_BINDING: number; + readonly ATTACHED_SHADERS: number; + readonly BACK: number; + readonly BLEND: number; + readonly BLEND_COLOR: number; + readonly BLEND_DST_ALPHA: number; + readonly BLEND_DST_RGB: number; + readonly BLEND_EQUATION: number; + readonly BLEND_EQUATION_ALPHA: number; + readonly BLEND_EQUATION_RGB: number; + readonly BLEND_SRC_ALPHA: number; + readonly BLEND_SRC_RGB: number; + readonly BLUE_BITS: number; + readonly BOOL: number; + readonly BOOL_VEC2: number; + readonly BOOL_VEC3: number; + readonly BOOL_VEC4: number; + readonly BROWSER_DEFAULT_WEBGL: number; + readonly BUFFER_SIZE: number; + readonly BUFFER_USAGE: number; + readonly BYTE: number; + readonly CCW: number; + readonly CLAMP_TO_EDGE: number; + readonly COLOR_ATTACHMENT0: number; + readonly COLOR_BUFFER_BIT: number; + readonly COLOR_CLEAR_VALUE: number; + readonly COLOR_WRITEMASK: number; + readonly COMPILE_STATUS: number; + readonly COMPRESSED_TEXTURE_FORMATS: number; + readonly CONSTANT_ALPHA: number; + readonly CONSTANT_COLOR: number; + readonly CONTEXT_LOST_WEBGL: number; + readonly CULL_FACE: number; + readonly CULL_FACE_MODE: number; + readonly CURRENT_PROGRAM: number; + readonly CURRENT_VERTEX_ATTRIB: number; + readonly CW: number; + readonly DECR: number; + readonly DECR_WRAP: number; + readonly DELETE_STATUS: number; + readonly DEPTH_ATTACHMENT: number; + readonly DEPTH_BITS: number; + readonly DEPTH_BUFFER_BIT: number; + readonly DEPTH_CLEAR_VALUE: number; + readonly DEPTH_COMPONENT: number; + readonly DEPTH_COMPONENT16: number; + readonly DEPTH_FUNC: number; + readonly DEPTH_RANGE: number; + readonly DEPTH_STENCIL: number; + readonly DEPTH_STENCIL_ATTACHMENT: number; + readonly DEPTH_TEST: number; + readonly DEPTH_WRITEMASK: number; + readonly DITHER: number; + readonly DONT_CARE: number; + readonly DST_ALPHA: number; + readonly DST_COLOR: number; + readonly DYNAMIC_DRAW: number; + readonly ELEMENT_ARRAY_BUFFER: number; + readonly ELEMENT_ARRAY_BUFFER_BINDING: number; + readonly EQUAL: number; + readonly FASTEST: number; + readonly FLOAT: number; + readonly FLOAT_MAT2: number; + readonly FLOAT_MAT3: number; + readonly FLOAT_MAT4: number; + readonly FLOAT_VEC2: number; + readonly FLOAT_VEC3: number; + readonly FLOAT_VEC4: number; + readonly FRAGMENT_SHADER: number; + readonly FRAMEBUFFER: number; + readonly FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: number; + readonly FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: number; + readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: number; + readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: number; + readonly FRAMEBUFFER_BINDING: number; + readonly FRAMEBUFFER_COMPLETE: number; + readonly FRAMEBUFFER_INCOMPLETE_ATTACHMENT: number; + readonly FRAMEBUFFER_INCOMPLETE_DIMENSIONS: number; + readonly FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: number; + readonly FRAMEBUFFER_UNSUPPORTED: number; + readonly FRONT: number; + readonly FRONT_AND_BACK: number; + readonly FRONT_FACE: number; + readonly FUNC_ADD: number; + readonly FUNC_REVERSE_SUBTRACT: number; + readonly FUNC_SUBTRACT: number; + readonly GENERATE_MIPMAP_HINT: number; + readonly GEQUAL: number; + readonly GREATER: number; + readonly GREEN_BITS: number; + readonly HIGH_FLOAT: number; + readonly HIGH_INT: number; + readonly IMPLEMENTATION_COLOR_READ_FORMAT: number; + readonly IMPLEMENTATION_COLOR_READ_TYPE: number; + readonly INCR: number; + readonly INCR_WRAP: number; + readonly INT: number; + readonly INT_VEC2: number; + readonly INT_VEC3: number; + readonly INT_VEC4: number; + readonly INVALID_ENUM: number; + readonly INVALID_FRAMEBUFFER_OPERATION: number; + readonly INVALID_OPERATION: number; + readonly INVALID_VALUE: number; + readonly INVERT: number; + readonly KEEP: number; + readonly LEQUAL: number; + readonly LESS: number; + readonly LINEAR: number; + readonly LINEAR_MIPMAP_LINEAR: number; + readonly LINEAR_MIPMAP_NEAREST: number; + readonly LINES: number; + readonly LINE_LOOP: number; + readonly LINE_STRIP: number; + readonly LINE_WIDTH: number; + readonly LINK_STATUS: number; + readonly LOW_FLOAT: number; + readonly LOW_INT: number; + readonly LUMINANCE: number; + readonly LUMINANCE_ALPHA: number; + readonly MAX_COMBINED_TEXTURE_IMAGE_UNITS: number; + readonly MAX_CUBE_MAP_TEXTURE_SIZE: number; + readonly MAX_FRAGMENT_UNIFORM_VECTORS: number; + readonly MAX_RENDERBUFFER_SIZE: number; + readonly MAX_TEXTURE_IMAGE_UNITS: number; + readonly MAX_TEXTURE_SIZE: number; + readonly MAX_VARYING_VECTORS: number; + readonly MAX_VERTEX_ATTRIBS: number; + readonly MAX_VERTEX_TEXTURE_IMAGE_UNITS: number; + readonly MAX_VERTEX_UNIFORM_VECTORS: number; + readonly MAX_VIEWPORT_DIMS: number; + readonly MEDIUM_FLOAT: number; + readonly MEDIUM_INT: number; + readonly MIRRORED_REPEAT: number; + readonly NEAREST: number; + readonly NEAREST_MIPMAP_LINEAR: number; + readonly NEAREST_MIPMAP_NEAREST: number; + readonly NEVER: number; + readonly NICEST: number; + readonly NONE: number; + readonly NOTEQUAL: number; + readonly NO_ERROR: number; + readonly ONE: number; + readonly ONE_MINUS_CONSTANT_ALPHA: number; + readonly ONE_MINUS_CONSTANT_COLOR: number; + readonly ONE_MINUS_DST_ALPHA: number; + readonly ONE_MINUS_DST_COLOR: number; + readonly ONE_MINUS_SRC_ALPHA: number; + readonly ONE_MINUS_SRC_COLOR: number; + readonly OUT_OF_MEMORY: number; + readonly PACK_ALIGNMENT: number; + readonly POINTS: number; + readonly POLYGON_OFFSET_FACTOR: number; + readonly POLYGON_OFFSET_FILL: number; + readonly POLYGON_OFFSET_UNITS: number; + readonly RED_BITS: number; + readonly RENDERBUFFER: number; + readonly RENDERBUFFER_ALPHA_SIZE: number; + readonly RENDERBUFFER_BINDING: number; + readonly RENDERBUFFER_BLUE_SIZE: number; + readonly RENDERBUFFER_DEPTH_SIZE: number; + readonly RENDERBUFFER_GREEN_SIZE: number; + readonly RENDERBUFFER_HEIGHT: number; + readonly RENDERBUFFER_INTERNAL_FORMAT: number; + readonly RENDERBUFFER_RED_SIZE: number; + readonly RENDERBUFFER_STENCIL_SIZE: number; + readonly RENDERBUFFER_WIDTH: number; + readonly RENDERER: number; + readonly REPEAT: number; + readonly REPLACE: number; + readonly RGB: number; + readonly RGB565: number; + readonly RGB5_A1: number; + readonly RGBA: number; + readonly RGBA4: number; + readonly SAMPLER_2D: number; + readonly SAMPLER_CUBE: number; + readonly SAMPLES: number; + readonly SAMPLE_ALPHA_TO_COVERAGE: number; + readonly SAMPLE_BUFFERS: number; + readonly SAMPLE_COVERAGE: number; + readonly SAMPLE_COVERAGE_INVERT: number; + readonly SAMPLE_COVERAGE_VALUE: number; + readonly SCISSOR_BOX: number; + readonly SCISSOR_TEST: number; + readonly SHADER_TYPE: number; + readonly SHADING_LANGUAGE_VERSION: number; + readonly SHORT: number; + readonly SRC_ALPHA: number; + readonly SRC_ALPHA_SATURATE: number; + readonly SRC_COLOR: number; + readonly STATIC_DRAW: number; + readonly STENCIL_ATTACHMENT: number; + readonly STENCIL_BACK_FAIL: number; + readonly STENCIL_BACK_FUNC: number; + readonly STENCIL_BACK_PASS_DEPTH_FAIL: number; + readonly STENCIL_BACK_PASS_DEPTH_PASS: number; + readonly STENCIL_BACK_REF: number; + readonly STENCIL_BACK_VALUE_MASK: number; + readonly STENCIL_BACK_WRITEMASK: number; + readonly STENCIL_BITS: number; + readonly STENCIL_BUFFER_BIT: number; + readonly STENCIL_CLEAR_VALUE: number; + readonly STENCIL_FAIL: number; + readonly STENCIL_FUNC: number; + readonly STENCIL_INDEX: number; + readonly STENCIL_INDEX8: number; + readonly STENCIL_PASS_DEPTH_FAIL: number; + readonly STENCIL_PASS_DEPTH_PASS: number; + readonly STENCIL_REF: number; + readonly STENCIL_TEST: number; + readonly STENCIL_VALUE_MASK: number; + readonly STENCIL_WRITEMASK: number; + readonly STREAM_DRAW: number; + readonly SUBPIXEL_BITS: number; + readonly TEXTURE: number; + readonly TEXTURE0: number; + readonly TEXTURE1: number; + readonly TEXTURE10: number; + readonly TEXTURE11: number; + readonly TEXTURE12: number; + readonly TEXTURE13: number; + readonly TEXTURE14: number; + readonly TEXTURE15: number; + readonly TEXTURE16: number; + readonly TEXTURE17: number; + readonly TEXTURE18: number; + readonly TEXTURE19: number; + readonly TEXTURE2: number; + readonly TEXTURE20: number; + readonly TEXTURE21: number; + readonly TEXTURE22: number; + readonly TEXTURE23: number; + readonly TEXTURE24: number; + readonly TEXTURE25: number; + readonly TEXTURE26: number; + readonly TEXTURE27: number; + readonly TEXTURE28: number; + readonly TEXTURE29: number; + readonly TEXTURE3: number; + readonly TEXTURE30: number; + readonly TEXTURE31: number; + readonly TEXTURE4: number; + readonly TEXTURE5: number; + readonly TEXTURE6: number; + readonly TEXTURE7: number; + readonly TEXTURE8: number; + readonly TEXTURE9: number; + readonly TEXTURE_2D: number; + readonly TEXTURE_BINDING_2D: number; + readonly TEXTURE_BINDING_CUBE_MAP: number; + readonly TEXTURE_CUBE_MAP: number; + readonly TEXTURE_CUBE_MAP_NEGATIVE_X: number; + readonly TEXTURE_CUBE_MAP_NEGATIVE_Y: number; + readonly TEXTURE_CUBE_MAP_NEGATIVE_Z: number; + readonly TEXTURE_CUBE_MAP_POSITIVE_X: number; + readonly TEXTURE_CUBE_MAP_POSITIVE_Y: number; + readonly TEXTURE_CUBE_MAP_POSITIVE_Z: number; + readonly TEXTURE_MAG_FILTER: number; + readonly TEXTURE_MIN_FILTER: number; + readonly TEXTURE_WRAP_S: number; + readonly TEXTURE_WRAP_T: number; + readonly TRIANGLES: number; + readonly TRIANGLE_FAN: number; + readonly TRIANGLE_STRIP: number; + readonly UNPACK_ALIGNMENT: number; + readonly UNPACK_COLORSPACE_CONVERSION_WEBGL: number; + readonly UNPACK_FLIP_Y_WEBGL: number; + readonly UNPACK_PREMULTIPLY_ALPHA_WEBGL: number; + readonly UNSIGNED_BYTE: number; + readonly UNSIGNED_INT: number; + readonly UNSIGNED_SHORT: number; + readonly UNSIGNED_SHORT_4_4_4_4: number; + readonly UNSIGNED_SHORT_5_5_5_1: number; + readonly UNSIGNED_SHORT_5_6_5: number; + readonly VALIDATE_STATUS: number; + readonly VENDOR: number; + readonly VERSION: number; + readonly VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: number; + readonly VERTEX_ATTRIB_ARRAY_ENABLED: number; + readonly VERTEX_ATTRIB_ARRAY_NORMALIZED: number; + readonly VERTEX_ATTRIB_ARRAY_POINTER: number; + readonly VERTEX_ATTRIB_ARRAY_SIZE: number; + readonly VERTEX_ATTRIB_ARRAY_STRIDE: number; + readonly VERTEX_ATTRIB_ARRAY_TYPE: number; + readonly VERTEX_SHADER: number; + readonly VIEWPORT: number; + readonly ZERO: number; } interface WebGLShader extends WebGLObject { @@ -11701,9 +12699,9 @@ declare var WebGLShader: { } interface WebGLShaderPrecisionFormat { - precision: number; - rangeMax: number; - rangeMin: number; + readonly precision: number; + readonly rangeMax: number; + readonly rangeMin: number; } declare var WebGLShaderPrecisionFormat: { @@ -11779,21 +12777,21 @@ declare var WebKitPoint: { interface WebSocket extends EventTarget { binaryType: string; - bufferedAmount: number; - extensions: string; + readonly bufferedAmount: number; + readonly extensions: string; onclose: (ev: CloseEvent) => any; onerror: (ev: Event) => any; onmessage: (ev: MessageEvent) => any; onopen: (ev: Event) => any; - protocol: string; - readyState: number; - url: string; + readonly protocol: string; + readonly readyState: number; + readonly url: string; close(code?: number, reason?: string): void; send(data: any): void; - CLOSED: number; - CLOSING: number; - CONNECTING: number; - OPEN: number; + readonly CLOSED: number; + 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; @@ -11804,56 +12802,58 @@ interface WebSocket extends EventTarget { declare var WebSocket: { prototype: WebSocket; new(url: string, protocols?: string | string[]): WebSocket; - CLOSED: number; - CLOSING: number; - CONNECTING: number; - OPEN: number; + readonly CLOSED: number; + readonly CLOSING: number; + readonly CONNECTING: number; + readonly OPEN: number; } interface WheelEvent extends MouseEvent { - deltaMode: number; - deltaX: number; - deltaY: number; - deltaZ: number; + readonly deltaMode: number; + readonly deltaX: number; + readonly deltaY: number; + readonly deltaZ: number; + readonly wheelDelta: number; + readonly wheelDeltaX: number; + readonly wheelDeltaY: number; getCurrentPoint(element: Element): void; initWheelEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, screenXArg: number, screenYArg: number, clientXArg: number, clientYArg: number, buttonArg: number, relatedTargetArg: EventTarget, modifiersListArg: string, deltaXArg: number, deltaYArg: number, deltaZArg: number, deltaMode: number): void; - DOM_DELTA_LINE: number; - DOM_DELTA_PAGE: number; - DOM_DELTA_PIXEL: number; + readonly DOM_DELTA_LINE: number; + readonly DOM_DELTA_PAGE: number; + readonly DOM_DELTA_PIXEL: number; } declare var WheelEvent: { prototype: WheelEvent; new(typeArg: string, eventInitDict?: WheelEventInit): WheelEvent; - DOM_DELTA_LINE: number; - DOM_DELTA_PAGE: number; - DOM_DELTA_PIXEL: number; + readonly DOM_DELTA_LINE: number; + readonly DOM_DELTA_PAGE: number; + readonly DOM_DELTA_PIXEL: number; } interface Window extends EventTarget, WindowTimers, WindowSessionStorage, WindowLocalStorage, WindowConsole, GlobalEventHandlers, IDBEnvironment, WindowBase64 { - animationStartTime: number; - applicationCache: ApplicationCache; - clientInformation: Navigator; - closed: boolean; - crypto: Crypto; + readonly applicationCache: ApplicationCache; + readonly clientInformation: Navigator; + readonly closed: boolean; + readonly crypto: Crypto; defaultStatus: string; - devicePixelRatio: number; - doNotTrack: string; - document: Document; + readonly devicePixelRatio: number; + readonly doNotTrack: string; + readonly document: Document; event: Event; - external: External; - frameElement: Element; - frames: Window; - history: History; - innerHeight: number; - innerWidth: number; - length: number; - location: Location; - locationbar: BarProp; - menubar: BarProp; - msAnimationStartTime: number; + readonly external: External; + readonly frameElement: Element; + readonly frames: Window; + readonly history: History; + readonly innerHeight: number; + readonly innerWidth: number; + readonly length: number; + readonly location: Location; + readonly locationbar: BarProp; + readonly menubar: BarProp; + readonly msCredentials: MSCredentials; name: string; - navigator: Navigator; + readonly navigator: Navigator; offscreenBuffering: string | boolean; onabort: (ev: Event) => any; onafterprint: (ev: Event) => any; @@ -11867,6 +12867,7 @@ interface Window extends EventTarget, WindowTimers, WindowSessionStorage, Window oncompassneedscalibration: (ev: Event) => any; oncontextmenu: (ev: PointerEvent) => any; ondblclick: (ev: MouseEvent) => any; + ondevicelight: (ev: DeviceLightEvent) => any; ondevicemotion: (ev: DeviceMotionEvent) => any; ondeviceorientation: (ev: DeviceOrientationEvent) => any; ondrag: (ev: DragEvent) => any; @@ -11878,11 +12879,12 @@ interface Window extends EventTarget, WindowTimers, WindowSessionStorage, Window ondrop: (ev: DragEvent) => any; ondurationchange: (ev: Event) => any; onemptied: (ev: Event) => any; - onended: (ev: Event) => any; + onended: (ev: MediaStreamErrorEvent) => any; onerror: ErrorEventHandler; onfocus: (ev: FocusEvent) => any; onhashchange: (ev: HashChangeEvent) => any; oninput: (ev: Event) => any; + oninvalid: (ev: Event) => any; onkeydown: (ev: KeyboardEvent) => any; onkeypress: (ev: KeyboardEvent) => any; onkeyup: (ev: KeyboardEvent) => any; @@ -11898,7 +12900,7 @@ interface Window extends EventTarget, WindowTimers, WindowSessionStorage, Window onmouseout: (ev: MouseEvent) => any; onmouseover: (ev: MouseEvent) => any; onmouseup: (ev: MouseEvent) => any; - onmousewheel: (ev: MouseWheelEvent) => any; + onmousewheel: (ev: WheelEvent) => any; onmsgesturechange: (ev: MSGestureEvent) => any; onmsgesturedoubletap: (ev: MSGestureEvent) => any; onmsgestureend: (ev: MSGestureEvent) => any; @@ -11937,38 +12939,38 @@ interface Window extends EventTarget, WindowTimers, WindowSessionStorage, Window onsubmit: (ev: Event) => any; onsuspend: (ev: Event) => any; ontimeupdate: (ev: Event) => any; - ontouchcancel: any; - ontouchend: any; - ontouchmove: any; - ontouchstart: any; + ontouchcancel: (ev: TouchEvent) => any; + ontouchend: (ev: TouchEvent) => any; + ontouchmove: (ev: TouchEvent) => any; + ontouchstart: (ev: TouchEvent) => any; onunload: (ev: Event) => any; onvolumechange: (ev: Event) => any; onwaiting: (ev: Event) => any; - opener: Window; + readonly opener: Window; orientation: string | number; - outerHeight: number; - outerWidth: number; - pageXOffset: number; - pageYOffset: number; - parent: Window; - performance: Performance; - personalbar: BarProp; - screen: Screen; - screenLeft: number; - screenTop: number; - screenX: number; - screenY: number; - scrollX: number; - scrollY: number; - scrollbars: BarProp; - self: Window; + readonly outerHeight: number; + readonly outerWidth: number; + readonly pageXOffset: number; + readonly pageYOffset: number; + readonly parent: Window; + readonly performance: Performance; + readonly personalbar: BarProp; + readonly screen: Screen; + readonly screenLeft: number; + readonly screenTop: number; + readonly screenX: number; + readonly screenY: number; + readonly scrollX: number; + readonly scrollY: number; + readonly scrollbars: BarProp; + readonly self: Window; status: string; - statusbar: BarProp; - styleMedia: StyleMedia; - toolbar: BarProp; - top: Window; - window: Window; - URL: URL; + readonly statusbar: BarProp; + readonly styleMedia: StyleMedia; + readonly toolbar: BarProp; + readonly top: Window; + readonly window: Window; + URL: typeof URL; alert(message?: any): void; blur(): void; cancelAnimationFrame(handle: number): void; @@ -11982,14 +12984,11 @@ interface Window extends EventTarget, WindowTimers, WindowSessionStorage, Window matchMedia(mediaQuery: string): MediaQueryList; moveBy(x?: number, y?: number): void; moveTo(x?: number, y?: number): void; - msCancelRequestAnimationFrame(handle: number): void; - msMatchMedia(mediaQuery: string): MediaQueryList; - msRequestAnimationFrame(callback: FrameRequestCallback): number; msWriteProfilerMark(profilerMarkName: string): void; open(url?: string, target?: string, features?: string, replace?: boolean): Window; - postMessage(message: any, targetOrigin: string, ports?: any): void; + postMessage(message: any, targetOrigin: string, transfer?: any[]): void; print(): void; - prompt(message?: string, _default?: string): string; + prompt(message?: string, _default?: string): string | null; releaseEvents(): void; requestAnimationFrame(callback: FrameRequestCallback): number; resizeBy(x?: number, y?: number): void; @@ -11997,8 +12996,10 @@ interface Window extends EventTarget, WindowTimers, WindowSessionStorage, Window scroll(x?: number, y?: number): void; scrollBy(x?: number, y?: number): void; scrollTo(x?: number, y?: number): void; + webkitCancelAnimationFrame(handle: number): void; webkitConvertPointFromNodeToPage(node: Node, pt: WebKitPoint): WebKitPoint; webkitConvertPointFromPageToNode(node: Node, pt: WebKitPoint): WebKitPoint; + webkitRequestAnimationFrame(callback: FrameRequestCallback): number; addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; addEventListener(type: "MSGestureDoubleTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; addEventListener(type: "MSGestureEnd", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; @@ -12026,6 +13027,7 @@ interface Window extends EventTarget, WindowTimers, WindowSessionStorage, Window addEventListener(type: "compassneedscalibration", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "devicelight", listener: (ev: DeviceLightEvent) => any, useCapture?: boolean): void; addEventListener(type: "devicemotion", listener: (ev: DeviceMotionEvent) => any, useCapture?: boolean): void; addEventListener(type: "deviceorientation", listener: (ev: DeviceOrientationEvent) => any, useCapture?: boolean): void; addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void; @@ -12037,10 +13039,11 @@ interface Window extends EventTarget, WindowTimers, WindowSessionStorage, Window addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "ended", listener: (ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; addEventListener(type: "hashchange", listener: (ev: HashChangeEvent) => any, useCapture?: boolean): void; addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "invalid", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; @@ -12056,7 +13059,7 @@ interface Window extends EventTarget, WindowTimers, WindowSessionStorage, Window addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousewheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; addEventListener(type: "offline", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "online", listener: (ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "orientationchange", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -12126,20 +13129,19 @@ declare var XMLDocument: { interface XMLHttpRequest extends EventTarget, XMLHttpRequestEventTarget { msCaching: string; onreadystatechange: (ev: ProgressEvent) => any; - readyState: number; - response: any; - responseBody: any; - responseText: string; + readonly readyState: number; + readonly response: any; + readonly responseText: string; responseType: string; - responseXML: any; - status: number; - statusText: string; + readonly responseXML: any; + readonly status: number; + readonly statusText: string; timeout: number; - upload: XMLHttpRequestUpload; + readonly upload: XMLHttpRequestUpload; withCredentials: boolean; abort(): void; getAllResponseHeaders(): string; - getResponseHeader(header: string): string; + getResponseHeader(header: string): string | null; msCachingEnabled(): boolean; open(method: string, url: string, async?: boolean, user?: string, password?: string): void; overrideMimeType(mime: string): void; @@ -12147,11 +13149,11 @@ interface XMLHttpRequest extends EventTarget, XMLHttpRequestEventTarget { send(data?: string): void; send(data?: any): void; setRequestHeader(header: string, value: string): void; - DONE: number; - HEADERS_RECEIVED: number; - LOADING: number; - OPENED: number; - UNSENT: number; + readonly DONE: number; + readonly HEADERS_RECEIVED: number; + 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; @@ -12166,11 +13168,11 @@ interface XMLHttpRequest extends EventTarget, XMLHttpRequestEventTarget { declare var XMLHttpRequest: { prototype: XMLHttpRequest; new(): XMLHttpRequest; - DONE: number; - HEADERS_RECEIVED: number; - LOADING: number; - OPENED: number; - UNSENT: number; + readonly DONE: number; + readonly HEADERS_RECEIVED: number; + readonly LOADING: number; + readonly OPENED: number; + readonly UNSENT: number; create(): XMLHttpRequest; } @@ -12222,40 +13224,40 @@ declare var XPathNSResolver: { } interface XPathResult { - booleanValue: boolean; - invalidIteratorState: boolean; - numberValue: number; - resultType: number; - singleNodeValue: Node; - snapshotLength: number; - stringValue: string; + readonly booleanValue: boolean; + readonly invalidIteratorState: boolean; + readonly numberValue: number; + readonly resultType: number; + readonly singleNodeValue: Node; + readonly snapshotLength: number; + readonly stringValue: string; iterateNext(): Node; snapshotItem(index: number): Node; - ANY_TYPE: number; - ANY_UNORDERED_NODE_TYPE: number; - BOOLEAN_TYPE: number; - FIRST_ORDERED_NODE_TYPE: number; - NUMBER_TYPE: number; - ORDERED_NODE_ITERATOR_TYPE: number; - ORDERED_NODE_SNAPSHOT_TYPE: number; - STRING_TYPE: number; - UNORDERED_NODE_ITERATOR_TYPE: number; - UNORDERED_NODE_SNAPSHOT_TYPE: number; + readonly ANY_TYPE: number; + readonly ANY_UNORDERED_NODE_TYPE: number; + readonly BOOLEAN_TYPE: number; + readonly FIRST_ORDERED_NODE_TYPE: number; + readonly NUMBER_TYPE: number; + readonly ORDERED_NODE_ITERATOR_TYPE: number; + readonly ORDERED_NODE_SNAPSHOT_TYPE: number; + readonly STRING_TYPE: number; + readonly UNORDERED_NODE_ITERATOR_TYPE: number; + readonly UNORDERED_NODE_SNAPSHOT_TYPE: number; } declare var XPathResult: { prototype: XPathResult; new(): XPathResult; - ANY_TYPE: number; - ANY_UNORDERED_NODE_TYPE: number; - BOOLEAN_TYPE: number; - FIRST_ORDERED_NODE_TYPE: number; - NUMBER_TYPE: number; - ORDERED_NODE_ITERATOR_TYPE: number; - ORDERED_NODE_SNAPSHOT_TYPE: number; - STRING_TYPE: number; - UNORDERED_NODE_ITERATOR_TYPE: number; - UNORDERED_NODE_SNAPSHOT_TYPE: number; + readonly ANY_TYPE: number; + readonly ANY_UNORDERED_NODE_TYPE: number; + readonly BOOLEAN_TYPE: number; + readonly FIRST_ORDERED_NODE_TYPE: number; + readonly NUMBER_TYPE: number; + readonly ORDERED_NODE_ITERATOR_TYPE: number; + readonly ORDERED_NODE_SNAPSHOT_TYPE: number; + readonly STRING_TYPE: number; + readonly UNORDERED_NODE_ITERATOR_TYPE: number; + readonly UNORDERED_NODE_SNAPSHOT_TYPE: number; } interface XSLTProcessor { @@ -12280,6 +13282,18 @@ interface AbstractWorker { addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } +interface CanvasPathMethods { + arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, anticlockwise?: boolean): void; + arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): void; + bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): void; + closePath(): void; + ellipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number, startAngle: number, endAngle: number, anticlockwise?: boolean): void; + lineTo(x: number, y: number): void; + moveTo(x: number, y: number): void; + quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void; + rect(x: number, y: number, w: number, h: number): void; +} + interface ChildNode { remove(): void; } @@ -12302,6 +13316,7 @@ interface DocumentEvent { createEvent(eventInterface:"CommandEvent"): CommandEvent; createEvent(eventInterface:"CompositionEvent"): CompositionEvent; createEvent(eventInterface:"CustomEvent"): CustomEvent; + createEvent(eventInterface:"DeviceLightEvent"): DeviceLightEvent; createEvent(eventInterface:"DeviceMotionEvent"): DeviceMotionEvent; createEvent(eventInterface:"DeviceOrientationEvent"): DeviceOrientationEvent; createEvent(eventInterface:"DragEvent"): DragEvent; @@ -12313,6 +13328,7 @@ interface DocumentEvent { createEvent(eventInterface:"HashChangeEvent"): HashChangeEvent; createEvent(eventInterface:"IDBVersionChangeEvent"): IDBVersionChangeEvent; createEvent(eventInterface:"KeyboardEvent"): KeyboardEvent; + createEvent(eventInterface:"ListeningStateChangedEvent"): ListeningStateChangedEvent; createEvent(eventInterface:"LongRunningScriptDetectedEvent"): LongRunningScriptDetectedEvent; createEvent(eventInterface:"MSGestureEvent"): MSGestureEvent; createEvent(eventInterface:"MSManipulationEvent"): MSManipulationEvent; @@ -12320,21 +13336,31 @@ interface DocumentEvent { createEvent(eventInterface:"MSMediaKeyNeededEvent"): MSMediaKeyNeededEvent; createEvent(eventInterface:"MSPointerEvent"): MSPointerEvent; createEvent(eventInterface:"MSSiteModeEvent"): MSSiteModeEvent; + createEvent(eventInterface:"MediaEncryptedEvent"): MediaEncryptedEvent; + createEvent(eventInterface:"MediaKeyMessageEvent"): MediaKeyMessageEvent; + createEvent(eventInterface:"MediaStreamErrorEvent"): MediaStreamErrorEvent; + createEvent(eventInterface:"MediaStreamTrackEvent"): MediaStreamTrackEvent; createEvent(eventInterface:"MessageEvent"): MessageEvent; createEvent(eventInterface:"MouseEvent"): MouseEvent; createEvent(eventInterface:"MouseEvents"): MouseEvent; - createEvent(eventInterface:"MouseWheelEvent"): MouseWheelEvent; createEvent(eventInterface:"MutationEvent"): MutationEvent; createEvent(eventInterface:"MutationEvents"): MutationEvent; createEvent(eventInterface:"NavigationCompletedEvent"): NavigationCompletedEvent; createEvent(eventInterface:"NavigationEvent"): NavigationEvent; createEvent(eventInterface:"NavigationEventWithReferrer"): NavigationEventWithReferrer; createEvent(eventInterface:"OfflineAudioCompletionEvent"): OfflineAudioCompletionEvent; + createEvent(eventInterface:"OverflowEvent"): OverflowEvent; createEvent(eventInterface:"PageTransitionEvent"): PageTransitionEvent; createEvent(eventInterface:"PermissionRequestedEvent"): PermissionRequestedEvent; createEvent(eventInterface:"PointerEvent"): PointerEvent; createEvent(eventInterface:"PopStateEvent"): PopStateEvent; createEvent(eventInterface:"ProgressEvent"): ProgressEvent; + createEvent(eventInterface:"RTCDTMFToneChangeEvent"): RTCDTMFToneChangeEvent; + createEvent(eventInterface:"RTCDtlsTransportStateChangedEvent"): RTCDtlsTransportStateChangedEvent; + createEvent(eventInterface:"RTCIceCandidatePairChangedEvent"): RTCIceCandidatePairChangedEvent; + createEvent(eventInterface:"RTCIceGathererEvent"): RTCIceGathererEvent; + createEvent(eventInterface:"RTCIceTransportStateChangedEvent"): RTCIceTransportStateChangedEvent; + createEvent(eventInterface:"RTCSsrcConflictEvent"): RTCSsrcConflictEvent; createEvent(eventInterface:"SVGZoomEvent"): SVGZoomEvent; createEvent(eventInterface:"SVGZoomEvents"): SVGZoomEvent; createEvent(eventInterface:"ScriptNotifyEvent"): ScriptNotifyEvent; @@ -12352,11 +13378,11 @@ interface DocumentEvent { } interface ElementTraversal { - childElementCount: number; - firstElementChild: Element; - lastElementChild: Element; - nextElementSibling: Element; - previousElementSibling: Element; + readonly childElementCount: number; + readonly firstElementChild: Element; + readonly lastElementChild: Element; + readonly nextElementSibling: Element; + readonly previousElementSibling: Element; } interface GetSVGDocument { @@ -12401,12 +13427,11 @@ interface HTMLTableAlignment { } interface IDBEnvironment { - indexedDB: IDBFactory; - msIndexedDB: IDBFactory; + readonly indexedDB: IDBFactory; } interface LinkStyle { - sheet: StyleSheet; + readonly sheet: StyleSheet; } interface MSBaseReader { @@ -12416,12 +13441,12 @@ interface MSBaseReader { onloadend: (ev: ProgressEvent) => any; onloadstart: (ev: Event) => any; onprogress: (ev: ProgressEvent) => any; - readyState: number; - result: any; + readonly readyState: number; + readonly result: any; abort(): void; - DONE: number; - EMPTY: number; - LOADING: number; + 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; @@ -12449,27 +13474,32 @@ interface NavigatorContentUtils { } interface NavigatorGeolocation { - geolocation: Geolocation; + readonly geolocation: Geolocation; } interface NavigatorID { - appName: string; - appVersion: string; - platform: string; - product: string; - productSub: string; - userAgent: string; - vendor: string; - vendorSub: string; + readonly appName: string; + readonly appVersion: string; + readonly platform: string; + readonly product: string; + readonly productSub: string; + readonly userAgent: string; + readonly vendor: string; + readonly vendorSub: string; } interface NavigatorOnLine { - onLine: boolean; + readonly onLine: boolean; } interface NavigatorStorageUtils { } +interface NavigatorUserMedia { + readonly mediaDevices: MediaDevices; + getUserMedia(constraints: MediaStreamConstraints, successCallback: NavigatorUserMediaSuccessCallback, errorCallback: NavigatorUserMediaErrorCallback): void; +} + interface NodeSelector { querySelector(selectors: string): Element; querySelectorAll(selectors: string): NodeListOf; @@ -12480,29 +13510,29 @@ interface RandomSource { } interface SVGAnimatedPathData { - pathSegList: SVGPathSegList; + readonly pathSegList: SVGPathSegList; } interface SVGAnimatedPoints { - animatedPoints: SVGPointList; - points: SVGPointList; + readonly animatedPoints: SVGPointList; + readonly points: SVGPointList; } interface SVGExternalResourcesRequired { - externalResourcesRequired: SVGAnimatedBoolean; + readonly externalResourcesRequired: SVGAnimatedBoolean; } interface SVGFilterPrimitiveStandardAttributes extends SVGStylable { - height: SVGAnimatedLength; - result: SVGAnimatedString; - width: SVGAnimatedLength; - x: SVGAnimatedLength; - y: SVGAnimatedLength; + readonly height: SVGAnimatedLength; + readonly result: SVGAnimatedString; + readonly width: SVGAnimatedLength; + readonly x: SVGAnimatedLength; + readonly y: SVGAnimatedLength; } interface SVGFitToViewBox { - preserveAspectRatio: SVGAnimatedPreserveAspectRatio; - viewBox: SVGAnimatedRect; + readonly preserveAspectRatio: SVGAnimatedPreserveAspectRatio; + readonly viewBox: SVGAnimatedRect; } interface SVGLangSpace { @@ -12511,8 +13541,8 @@ interface SVGLangSpace { } interface SVGLocatable { - farthestViewportElement: SVGElement; - nearestViewportElement: SVGElement; + readonly farthestViewportElement: SVGElement; + readonly nearestViewportElement: SVGElement; getBBox(): SVGRect; getCTM(): SVGMatrix; getScreenCTM(): SVGMatrix; @@ -12521,22 +13551,22 @@ interface SVGLocatable { interface SVGStylable { className: any; - style: CSSStyleDeclaration; + readonly style: CSSStyleDeclaration; } interface SVGTests { - requiredExtensions: SVGStringList; - requiredFeatures: SVGStringList; - systemLanguage: SVGStringList; + readonly requiredExtensions: SVGStringList; + readonly requiredFeatures: SVGStringList; + readonly systemLanguage: SVGStringList; hasExtension(extension: string): boolean; } interface SVGTransformable extends SVGLocatable { - transform: SVGAnimatedTransformList; + readonly transform: SVGAnimatedTransformList; } interface SVGURIReference { - href: SVGAnimatedString; + readonly href: SVGAnimatedString; } interface WindowBase64 { @@ -12545,15 +13575,15 @@ interface WindowBase64 { } interface WindowConsole { - console: Console; + readonly console: Console; } interface WindowLocalStorage { - localStorage: Storage; + readonly localStorage: Storage; } interface WindowSessionStorage { - sessionStorage: Storage; + readonly sessionStorage: Storage; } interface WindowTimers extends Object, WindowTimersExtension { @@ -12565,8 +13595,6 @@ interface WindowTimers extends Object, WindowTimersExtension { interface WindowTimersExtension { clearImmediate(handle: number): void; - msClearImmediate(handle: number): void; - msSetImmediate(expression: any, ...args: any[]): number; setImmediate(expression: any, ...args: any[]): number; } @@ -12596,22 +13624,18 @@ interface StorageEventInit extends EventInit { storageArea?: Storage; } -interface IDBObjectStoreParameters { - keyPath?: string | string[]; - autoIncrement?: boolean; -} - -interface IDBIndexParameters { - unique?: boolean; - multiEntry?: boolean; -} - interface NodeListOf extends NodeList { length: number; item(index: number): TNode; [index: number]: TNode; } +interface HTMLCollectionOf extends HTMLCollection { + item(index: number): T; + namedItem(name: string): T; + [index: number]: T; +} + interface BlobPropertyBag { type?: string; endings?: string; @@ -12641,21 +13665,12 @@ interface ProgressEventInit extends EventInit { total?: number; } -interface HTMLTemplateElement extends HTMLElement { - content: DocumentFragment; +interface ClipboardEventInit extends EventInit { + data?: string; + dataType?: string; } -declare var HTMLTemplateElement: { - prototype: HTMLTemplateElement; - new(): HTMLTemplateElement; -} - -interface HTMLPictureElement extends HTMLElement { -} - -declare var HTMLPictureElement: { - prototype: HTMLPictureElement; - new(): HTMLPictureElement; +interface IDBArrayKey extends Array { } declare type EventListenerOrEventListenerObject = EventListener | EventListenerObject; @@ -12696,10 +13711,18 @@ interface DecodeErrorCallback { interface FunctionStringCallback { (data: string): void; } +interface NavigatorUserMediaSuccessCallback { + (stream: MediaStream): void; +} +interface NavigatorUserMediaErrorCallback { + (error: MediaStreamError): void; +} +interface ForEachCallback { + (keyId: any, status: string): void; +} declare var Audio: {new(src?: string): HTMLAudioElement; }; declare var Image: {new(width?: number, height?: number): HTMLImageElement; }; declare var Option: {new(text?: string, value?: string, defaultSelected?: boolean, selected?: boolean): HTMLOptionElement; }; -declare var animationStartTime: number; declare var applicationCache: ApplicationCache; declare var clientInformation: Navigator; declare var closed: boolean; @@ -12719,7 +13742,7 @@ declare var length: number; declare var location: Location; declare var locationbar: BarProp; declare var menubar: BarProp; -declare var msAnimationStartTime: number; +declare var msCredentials: MSCredentials; declare var name: string; declare var navigator: Navigator; declare var offscreenBuffering: string | boolean; @@ -12735,6 +13758,7 @@ declare var onclick: (ev: MouseEvent) => any; declare var oncompassneedscalibration: (ev: Event) => any; declare var oncontextmenu: (ev: PointerEvent) => any; declare var ondblclick: (ev: MouseEvent) => any; +declare var ondevicelight: (ev: DeviceLightEvent) => any; declare var ondevicemotion: (ev: DeviceMotionEvent) => any; declare var ondeviceorientation: (ev: DeviceOrientationEvent) => any; declare var ondrag: (ev: DragEvent) => any; @@ -12746,11 +13770,12 @@ declare var ondragstart: (ev: DragEvent) => any; declare var ondrop: (ev: DragEvent) => any; declare var ondurationchange: (ev: Event) => any; declare var onemptied: (ev: Event) => any; -declare var onended: (ev: Event) => any; +declare var onended: (ev: MediaStreamErrorEvent) => any; declare var onerror: ErrorEventHandler; declare var onfocus: (ev: FocusEvent) => any; declare var onhashchange: (ev: HashChangeEvent) => any; declare var oninput: (ev: Event) => any; +declare var oninvalid: (ev: Event) => any; declare var onkeydown: (ev: KeyboardEvent) => any; declare var onkeypress: (ev: KeyboardEvent) => any; declare var onkeyup: (ev: KeyboardEvent) => any; @@ -12766,7 +13791,7 @@ declare var onmousemove: (ev: MouseEvent) => any; declare var onmouseout: (ev: MouseEvent) => any; declare var onmouseover: (ev: MouseEvent) => any; declare var onmouseup: (ev: MouseEvent) => any; -declare var onmousewheel: (ev: MouseWheelEvent) => any; +declare var onmousewheel: (ev: WheelEvent) => any; declare var onmsgesturechange: (ev: MSGestureEvent) => any; declare var onmsgesturedoubletap: (ev: MSGestureEvent) => any; declare var onmsgestureend: (ev: MSGestureEvent) => any; @@ -12805,10 +13830,10 @@ declare var onstorage: (ev: StorageEvent) => any; declare var onsubmit: (ev: Event) => any; declare var onsuspend: (ev: Event) => any; declare var ontimeupdate: (ev: Event) => any; -declare var ontouchcancel: any; -declare var ontouchend: any; -declare var ontouchmove: any; -declare var ontouchstart: any; +declare var ontouchcancel: (ev: TouchEvent) => any; +declare var ontouchend: (ev: TouchEvent) => any; +declare var ontouchmove: (ev: TouchEvent) => any; +declare var ontouchstart: (ev: TouchEvent) => any; declare var onunload: (ev: Event) => any; declare var onvolumechange: (ev: Event) => any; declare var onwaiting: (ev: Event) => any; @@ -12836,7 +13861,6 @@ declare var styleMedia: StyleMedia; declare var toolbar: BarProp; declare var top: Window; declare var window: Window; -declare var URL: URL; declare function alert(message?: any): void; declare function blur(): void; declare function cancelAnimationFrame(handle: number): void; @@ -12850,14 +13874,11 @@ declare function getSelection(): Selection; declare function matchMedia(mediaQuery: string): MediaQueryList; declare function moveBy(x?: number, y?: number): void; declare function moveTo(x?: number, y?: number): void; -declare function msCancelRequestAnimationFrame(handle: number): void; -declare function msMatchMedia(mediaQuery: string): MediaQueryList; -declare function msRequestAnimationFrame(callback: FrameRequestCallback): number; declare function msWriteProfilerMark(profilerMarkName: string): void; declare function open(url?: string, target?: string, features?: string, replace?: boolean): Window; -declare function postMessage(message: any, targetOrigin: string, ports?: any): void; +declare function postMessage(message: any, targetOrigin: string, transfer?: any[]): void; declare function print(): void; -declare function prompt(message?: string, _default?: string): string; +declare function prompt(message?: string, _default?: string): string | null; declare function releaseEvents(): void; declare function requestAnimationFrame(callback: FrameRequestCallback): number; declare function resizeBy(x?: number, y?: number): void; @@ -12865,19 +13886,19 @@ declare function resizeTo(x?: number, y?: number): void; declare function scroll(x?: number, y?: number): void; declare function scrollBy(x?: number, y?: number): void; declare function scrollTo(x?: number, y?: number): void; +declare function webkitCancelAnimationFrame(handle: number): void; declare function webkitConvertPointFromNodeToPage(node: Node, pt: WebKitPoint): WebKitPoint; declare function webkitConvertPointFromPageToNode(node: Node, pt: WebKitPoint): WebKitPoint; +declare function webkitRequestAnimationFrame(callback: FrameRequestCallback): number; declare function toString(): string; -declare function addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +declare function addEventListener(type: string, listener?: EventListenerOrEventListenerObject, useCapture?: boolean): void; declare function dispatchEvent(evt: Event): boolean; -declare function removeEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +declare function removeEventListener(type: string, listener?: EventListenerOrEventListenerObject, useCapture?: boolean): void; declare function clearInterval(handle: number): void; declare function clearTimeout(handle: number): void; declare function setInterval(handler: any, timeout?: any, ...args: any[]): number; declare function setTimeout(handler: any, timeout?: any, ...args: any[]): number; declare function clearImmediate(handle: number): void; -declare function msClearImmediate(handle: number): void; -declare function msSetImmediate(expression: any, ...args: any[]): number; declare function setImmediate(expression: any, ...args: any[]): number; declare var sessionStorage: Storage; declare var localStorage: Storage; @@ -12892,7 +13913,6 @@ declare var onpointerover: (ev: PointerEvent) => any; declare var onpointerup: (ev: PointerEvent) => any; declare var onwheel: (ev: WheelEvent) => any; declare var indexedDB: IDBFactory; -declare var msIndexedDB: IDBFactory; declare function atob(encodedString: string): string; declare function btoa(rawString: string): string; declare function addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; @@ -12922,6 +13942,7 @@ declare function addEventListener(type: "click", listener: (ev: MouseEvent) => a declare function addEventListener(type: "compassneedscalibration", listener: (ev: Event) => any, useCapture?: boolean): void; declare function addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; declare function addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "devicelight", listener: (ev: DeviceLightEvent) => any, useCapture?: boolean): void; declare function addEventListener(type: "devicemotion", listener: (ev: DeviceMotionEvent) => any, useCapture?: boolean): void; declare function addEventListener(type: "deviceorientation", listener: (ev: DeviceOrientationEvent) => any, useCapture?: boolean): void; declare function addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void; @@ -12933,10 +13954,11 @@ declare function addEventListener(type: "dragstart", listener: (ev: DragEvent) = declare function addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; declare function addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; declare function addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; +declare function addEventListener(type: "ended", listener: (ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; declare function addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; declare function addEventListener(type: "hashchange", listener: (ev: HashChangeEvent) => any, useCapture?: boolean): void; declare function addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; +declare function addEventListener(type: "invalid", listener: (ev: Event) => any, useCapture?: boolean): void; declare function addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; declare function addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; declare function addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; @@ -12952,7 +13974,7 @@ declare function addEventListener(type: "mousemove", listener: (ev: MouseEvent) declare function addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; declare function addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; declare function addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "mousewheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; declare function addEventListener(type: "offline", listener: (ev: Event) => any, useCapture?: boolean): void; declare function addEventListener(type: "online", listener: (ev: Event) => any, useCapture?: boolean): void; declare function addEventListener(type: "orientationchange", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -12988,4 +14010,36 @@ declare function addEventListener(type: "unload", listener: (ev: Event) => any, declare function addEventListener(type: "volumechange", listener: (ev: Event) => any, useCapture?: boolean): void; declare function addEventListener(type: "waiting", listener: (ev: Event) => any, useCapture?: boolean): void; declare function addEventListener(type: "wheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; \ No newline at end of file +declare function addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +type AAGUID = string; +type AlgorithmIdentifier = string | Algorithm; +type ConstrainBoolean = boolean | ConstrainBooleanParameters; +type ConstrainDOMString = string | string[] | ConstrainDOMStringParameters; +type ConstrainDouble = number | ConstrainDoubleRange; +type ConstrainLong = number | ConstrainLongRange; +type CryptoOperationData = ArrayBufferView; +type GLbitfield = number; +type GLboolean = boolean; +type GLbyte = number; +type GLclampf = number; +type GLenum = number; +type GLfloat = number; +type GLint = number; +type GLintptr = number; +type GLshort = number; +type GLsizei = number; +type GLsizeiptr = number; +type GLubyte = number; +type GLuint = number; +type GLushort = number; +type IDBKeyPath = string; +type KeyFormat = string; +type KeyType = string; +type KeyUsage = string; +type MSInboundPayload = MSVideoRecvPayload | MSAudioRecvPayload; +type MSLocalClientEvent = MSLocalClientEventBase | MSAudioLocalClientEvent; +type MSOutboundPayload = MSVideoSendPayload | MSAudioSendPayload; +type RTCIceGatherCandidate = RTCIceCandidate | RTCIceCandidateComplete; +type RTCTransport = RTCDtlsTransport | RTCSrtpSdesTransport; +type payloadtype = number; +type IDBValidKey = number | string | Date | IDBArrayKey; \ No newline at end of file diff --git a/src/lib/dom.es6.d.ts b/src/lib/dom.iterable.d.ts similarity index 79% rename from src/lib/dom.es6.d.ts rename to src/lib/dom.iterable.d.ts index e83b8531011..4f6378f038e 100644 --- a/src/lib/dom.es6.d.ts +++ b/src/lib/dom.iterable.d.ts @@ -1,3 +1,5 @@ +/// + interface DOMTokenList { [Symbol.iterator](): IterableIterator; } diff --git a/src/lib/es2015.collection.d.ts b/src/lib/es2015.collection.d.ts new file mode 100644 index 00000000000..717c9bb9c04 --- /dev/null +++ b/src/lib/es2015.collection.d.ts @@ -0,0 +1,70 @@ +interface Map { + clear(): void; + delete(key: K): boolean; + forEach(callbackfn: (value: V, index: K, map: Map) => void, thisArg?: any): void; + get(key: K): V | undefined; + has(key: K): boolean; + set(key: K, value?: V): Map; + readonly size: number; +} + +interface MapConstructor { + new (): Map; + new (): Map; + readonly prototype: Map; +} +declare var Map: MapConstructor; + +interface WeakMap { + clear(): void; + delete(key: K): boolean; + get(key: K): V | undefined; + has(key: K): boolean; + set(key: K, value?: V): WeakMap; + +} + +interface WeakMapConstructor { + new (): WeakMap; + new (): WeakMap; + readonly prototype: WeakMap; +} +declare var WeakMap: WeakMapConstructor; + +interface Set { + add(value: T): Set; + clear(): void; + delete(value: T): boolean; + entries(): IterableIterator<[T, T]>; + forEach(callbackfn: (value: T, index: T, set: Set) => void, thisArg?: any): void; + has(value: T): boolean; + keys(): IterableIterator; + readonly size: number; + values(): IterableIterator; + [Symbol.iterator]():IterableIterator; + readonly [Symbol.toStringTag]: "Set"; +} + +interface SetConstructor { + new (): Set; + new (): Set; + new (iterable: Iterable): Set; + readonly prototype: Set; +} +declare var Set: SetConstructor; + +interface WeakSet { + add(value: T): WeakSet; + clear(): void; + delete(value: T): boolean; + has(value: T): boolean; + readonly [Symbol.toStringTag]: "WeakSet"; +} + +interface WeakSetConstructor { + new (): WeakSet; + new (): WeakSet; + new (iterable: Iterable): WeakSet; + readonly prototype: WeakSet; +} +declare var WeakSet: WeakSetConstructor; diff --git a/src/lib/es2015.core.d.ts b/src/lib/es2015.core.d.ts new file mode 100644 index 00000000000..fc93847f8af --- /dev/null +++ b/src/lib/es2015.core.d.ts @@ -0,0 +1,483 @@ +declare type PropertyKey = string | number | symbol; + +interface Array { + /** + * Returns the value of the first element in the array where predicate is true, and undefined + * otherwise. + * @param predicate find calls predicate once for each element of the array, in ascending + * order, until it finds one where predicate returns true. If such an element is found, find + * immediately returns that element value. Otherwise, find returns undefined. + * @param thisArg If provided, it will be used as the this value for each invocation of + * predicate. If it is not provided, undefined is used instead. + */ + find(predicate: (value: T, index: number, obj: Array) => boolean, thisArg?: any): T | undefined; + + /** + * Returns the index of the first element in the array where predicate is true, and undefined + * otherwise. + * @param predicate find calls predicate once for each element of the array, in ascending + * order, until it finds one where predicate returns true. If such an element is found, find + * immediately returns that element value. Otherwise, find returns undefined. + * @param thisArg If provided, it will be used as the this value for each invocation of + * predicate. If it is not provided, undefined is used instead. + */ + findIndex(predicate: (value: T) => boolean, thisArg?: any): number | undefined; + + /** + * Returns the this object after filling the section identified by start and end with value + * @param value value to fill array section with + * @param start index to start filling the array at. If start is negative, it is treated as + * length+start where length is the length of the array. + * @param end index to stop filling the array at. If end is negative, it is treated as + * length+end. + */ + fill(value: T, start?: number, end?: number): T[]; + + /** + * Returns the this object after copying a section of the array identified by start and end + * to the same array starting at position target + * @param target If target is negative, it is treated as length+target where length is the + * length of the array. + * @param start If start is negative, it is treated as length+start. If end is negative, it + * is treated as length+end. + * @param end If not specified, length of the this object is used as its default value. + */ + copyWithin(target: number, start: number, end?: number): T[]; +} + +interface ArrayConstructor { + /** + * Creates an array from an array-like object. + * @param arrayLike An array-like object to convert to an array. + * @param mapfn A mapping function to call on every element of the array. + * @param thisArg Value of 'this' used to invoke the mapfn. + */ + from(arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): Array; + + + /** + * Creates an array from an array-like object. + * @param arrayLike An array-like object to convert to an array. + */ + from(arrayLike: ArrayLike): Array; + + /** + * Returns a new array from a set of elements. + * @param items A set of elements to include in the new array object. + */ + of(...items: T[]): Array; +} + +interface Function { + /** + * Returns the name of the function. Function names are read-only and can not be changed. + */ + readonly name: string; +} + +interface Math { + /** + * Returns the number of leading zero bits in the 32-bit binary representation of a number. + * @param x A numeric expression. + */ + clz32(x: number): number; + + /** + * Returns the result of 32-bit multiplication of two numbers. + * @param x First number + * @param y Second number + */ + imul(x: number, y: number): number; + + /** + * Returns the sign of the x, indicating whether x is positive, negative or zero. + * @param x The numeric expression to test + */ + sign(x: number): number; + + /** + * Returns the base 10 logarithm of a number. + * @param x A numeric expression. + */ + log10(x: number): number; + + /** + * Returns the base 2 logarithm of a number. + * @param x A numeric expression. + */ + log2(x: number): number; + + /** + * Returns the natural logarithm of 1 + x. + * @param x A numeric expression. + */ + log1p(x: number): number; + + /** + * Returns the result of (e^x - 1) of x (e raised to the power of x, where e is the base of + * the natural logarithms). + * @param x A numeric expression. + */ + expm1(x: number): number; + + /** + * Returns the hyperbolic cosine of a number. + * @param x A numeric expression that contains an angle measured in radians. + */ + cosh(x: number): number; + + /** + * Returns the hyperbolic sine of a number. + * @param x A numeric expression that contains an angle measured in radians. + */ + sinh(x: number): number; + + /** + * Returns the hyperbolic tangent of a number. + * @param x A numeric expression that contains an angle measured in radians. + */ + tanh(x: number): number; + + /** + * Returns the inverse hyperbolic cosine of a number. + * @param x A numeric expression that contains an angle measured in radians. + */ + acosh(x: number): number; + + /** + * Returns the inverse hyperbolic sine of a number. + * @param x A numeric expression that contains an angle measured in radians. + */ + asinh(x: number): number; + + /** + * Returns the inverse hyperbolic tangent of a number. + * @param x A numeric expression that contains an angle measured in radians. + */ + atanh(x: number): number; + + /** + * Returns the square root of the sum of squares of its arguments. + * @param values Values to compute the square root for. + * If no arguments are passed, the result is +0. + * If there is only one argument, the result is the absolute value. + * If any argument is +Infinity or -Infinity, the result is +Infinity. + * If any argument is NaN, the result is NaN. + * If all arguments are either +0 or −0, the result is +0. + */ + hypot(...values: number[] ): number; + + /** + * Returns the integral part of the a numeric expression, x, removing any fractional digits. + * If x is already an integer, the result is x. + * @param x A numeric expression. + */ + trunc(x: number): number; + + /** + * Returns the nearest single precision float representation of a number. + * @param x A numeric expression. + */ + fround(x: number): number; + + /** + * Returns an implementation-dependent approximation to the cube root of number. + * @param x A numeric expression. + */ + cbrt(x: number): number; +} + +interface NumberConstructor { + /** + * The value of Number.EPSILON is the difference between 1 and the smallest value greater than 1 + * that is representable as a Number value, which is approximately: + * 2.2204460492503130808472633361816 x 10‍−‍16. + */ + readonly EPSILON: number; + + /** + * Returns true if passed value is finite. + * Unlike the global isFininte, Number.isFinite doesn't forcibly convert the parameter to a + * number. Only finite values of the type number, result in true. + * @param number A numeric value. + */ + isFinite(number: number): boolean; + + /** + * Returns true if the value passed is an integer, false otherwise. + * @param number A numeric value. + */ + isInteger(number: number): boolean; + + /** + * Returns a Boolean value that indicates whether a value is the reserved value NaN (not a + * number). Unlike the global isNaN(), Number.isNaN() doesn't forcefully convert the parameter + * to a number. Only values of the type number, that are also NaN, result in true. + * @param number A numeric value. + */ + isNaN(number: number): boolean; + + /** + * Returns true if the value passed is a safe integer. + * @param number A numeric value. + */ + isSafeInteger(number: number): boolean; + + /** + * The value of the largest integer n such that n and n + 1 are both exactly representable as + * a Number value. + * The value of Number.MIN_SAFE_INTEGER is 9007199254740991 2^53 − 1. + */ + readonly MAX_SAFE_INTEGER: number; + + /** + * The value of the smallest integer n such that n and n − 1 are both exactly representable as + * a Number value. + * The value of Number.MIN_SAFE_INTEGER is −9007199254740991 (−(2^53 − 1)). + */ + readonly MIN_SAFE_INTEGER: number; + + /** + * Converts a string to a floating-point number. + * @param string A string that contains a floating-point number. + */ + parseFloat(string: string): number; + + /** + * Converts A string to an integer. + * @param s A string to convert into a number. + * @param radix A value between 2 and 36 that specifies the base of the number in numString. + * If this argument is not supplied, strings with a prefix of '0x' are considered hexadecimal. + * All other strings are considered decimal. + */ + parseInt(string: string, radix?: number): number; +} + +interface Object { + /** + * Determines whether an object has a property with the specified name. + * @param v A property name. + */ + hasOwnProperty(v: PropertyKey): boolean + + /** + * Determines whether a specified property is enumerable. + * @param v A property name. + */ + propertyIsEnumerable(v: PropertyKey): boolean; +} + +interface ObjectConstructor { + /** + * Copy the values of all of the enumerable own properties from one or more source objects to a + * target object. Returns the target object. + * @param target The target object to copy to. + * @param source The source object from which to copy properties. + */ + assign(target: T, source: U): T & U; + + /** + * Copy the values of all of the enumerable own properties from one or more source objects to a + * target object. Returns the target object. + * @param target The target object to copy to. + * @param source1 The first source object from which to copy properties. + * @param source2 The second source object from which to copy properties. + */ + assign(target: T, source1: U, source2: V): T & U & V; + + /** + * Copy the values of all of the enumerable own properties from one or more source objects to a + * target object. Returns the target object. + * @param target The target object to copy to. + * @param source1 The first source object from which to copy properties. + * @param source2 The second source object from which to copy properties. + * @param source3 The third source object from which to copy properties. + */ + assign(target: T, source1: U, source2: V, source3: W): T & U & V & W; + + /** + * Copy the values of all of the enumerable own properties from one or more source objects to a + * target object. Returns the target object. + * @param target The target object to copy to. + * @param sources One or more source objects from which to copy properties + */ + assign(target: any, ...sources: any[]): any; + + /** + * Returns an array of all symbol properties found directly on object o. + * @param o Object to retrieve the symbols from. + */ + getOwnPropertySymbols(o: any): symbol[]; + + /** + * Returns true if the values are the same value, false otherwise. + * @param value1 The first value. + * @param value2 The second value. + */ + is(value1: any, value2: any): boolean; + + /** + * Sets the prototype of a specified object o to object proto or null. Returns the object o. + * @param o The object to change its prototype. + * @param proto The value of the new prototype or null. + */ + setPrototypeOf(o: any, proto: any): any; + + /** + * Gets the own property descriptor of the specified object. + * An own property descriptor is one that is defined directly on the object and is not + * inherited from the object's prototype. + * @param o Object that contains the property. + * @param p Name of the property. + */ + getOwnPropertyDescriptor(o: any, propertyKey: PropertyKey): PropertyDescriptor; + + /** + * Adds a property to an object, or modifies attributes of an existing property. + * @param o Object on which to add or modify the property. This can be a native JavaScript + * object (that is, a user-defined object or a built in object) or a DOM object. + * @param p The property name. + * @param attributes Descriptor for the property. It can be for a data property or an accessor + * property. + */ + defineProperty(o: any, propertyKey: PropertyKey, attributes: PropertyDescriptor): any; +} + +interface RegExp { + /** + * Returns a string indicating the flags of the regular expression in question. This field is read-only. + * The characters in this string are sequenced and concatenated in the following order: + * + * - "g" for global + * - "i" for ignoreCase + * - "m" for multiline + * - "u" for unicode + * - "y" for sticky + * + * If no flags are set, the value is the empty string. + */ + readonly flags: string; + + /** + * Returns a Boolean value indicating the state of the sticky flag (y) used with a regular + * expression. Default is false. Read-only. + */ + readonly sticky: boolean; + + /** + * Returns a Boolean value indicating the state of the Unicode flag (u) used with a regular + * expression. Default is false. Read-only. + */ + readonly unicode: boolean; +} + +interface String { + /** + * Returns a nonnegative integer Number less than 1114112 (0x110000) that is the code point + * value of the UTF-16 encoded code point starting at the string element at position pos in + * the String resulting from converting this object to a String. + * If there is no element at that position, the result is undefined. + * If a valid UTF-16 surrogate pair does not begin at pos, the result is the code unit at pos. + */ + codePointAt(pos: number): number | undefined; + + /** + * Returns true if searchString appears as a substring of the result of converting this + * object to a String, at one or more positions that are + * greater than or equal to position; otherwise, returns false. + * @param searchString search string + * @param position If position is undefined, 0 is assumed, so as to search all of the String. + */ + includes(searchString: string, position?: number): boolean; + + /** + * Returns true if the sequence of elements of searchString converted to a String is the + * same as the corresponding elements of this object (converted to a String) starting at + * endPosition – length(this). Otherwise returns false. + */ + endsWith(searchString: string, endPosition?: number): boolean; + + /** + * Returns the String value result of normalizing the string into the normalization form + * named by form as specified in Unicode Standard Annex #15, Unicode Normalization Forms. + * @param form Applicable values: "NFC", "NFD", "NFKC", or "NFKD", If not specified default + * is "NFC" + */ + normalize(form?: string): string; + + /** + * Returns a String value that is made from count copies appended together. If count is 0, + * T is the empty String is returned. + * @param count number of copies to append + */ + repeat(count: number): string; + + /** + * Returns true if the sequence of elements of searchString converted to a String is the + * same as the corresponding elements of this object (converted to a String) starting at + * position. Otherwise returns false. + */ + startsWith(searchString: string, position?: number): boolean; + + /** + * Returns an HTML anchor element and sets the name attribute to the text value + * @param name + */ + anchor(name: string): string; + + /** Returns a HTML element */ + big(): string; + + /** Returns a HTML element */ + blink(): string; + + /** Returns a HTML element */ + bold(): string; + + /** Returns a HTML element */ + fixed(): string + + /** Returns a HTML element and sets the color attribute value */ + fontcolor(color: string): string + + /** Returns a HTML element and sets the size attribute value */ + fontsize(size: number): string; + + /** Returns a HTML element and sets the size attribute value */ + fontsize(size: string): string; + + /** Returns an HTML element */ + italics(): string; + + /** Returns an HTML element and sets the href attribute value */ + link(url: string): string; + + /** Returns a HTML element */ + small(): string; + + /** Returns a HTML element */ + strike(): string; + + /** Returns a HTML element */ + sub(): string; + + /** Returns a HTML element */ + sup(): string; +} + +interface StringConstructor { + /** + * Return the String value whose elements are, in order, the elements in the List elements. + * If length is 0, the empty string is returned. + */ + fromCodePoint(...codePoints: number[]): string; + + /** + * String.raw is intended for use as a tag function of a Tagged Template String. When called + * as such the first argument will be a well formed template call site object and the rest + * parameter will contain the substitution values. + * @param template A well-formed template string call site representation. + * @param substitutions A set of substitution values. + */ + raw(template: TemplateStringsArray, ...substitutions: any[]): string; +} \ No newline at end of file diff --git a/src/lib/es2015.d.ts b/src/lib/es2015.d.ts new file mode 100644 index 00000000000..ba30ea74669 --- /dev/null +++ b/src/lib/es2015.d.ts @@ -0,0 +1,10 @@ +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// \ No newline at end of file diff --git a/src/lib/es2015.generator.d.ts b/src/lib/es2015.generator.d.ts new file mode 100644 index 00000000000..2f522ad8770 --- /dev/null +++ b/src/lib/es2015.generator.d.ts @@ -0,0 +1,12 @@ +interface GeneratorFunction extends Function { } + +interface GeneratorFunctionConstructor { + /** + * Creates a new Generator function. + * @param args A list of arguments the function accepts. + */ + new (...args: string[]): GeneratorFunction; + (...args: string[]): GeneratorFunction; + readonly prototype: GeneratorFunction; +} +declare var GeneratorFunction: GeneratorFunctionConstructor; diff --git a/src/lib/es2015.iterable.d.ts b/src/lib/es2015.iterable.d.ts new file mode 100644 index 00000000000..85c95a73bb0 --- /dev/null +++ b/src/lib/es2015.iterable.d.ts @@ -0,0 +1,373 @@ +/// + +interface IteratorResult { + done: boolean; + value?: T; +} + +interface Iterator { + next(value?: any): IteratorResult; + return?(value?: any): IteratorResult; + throw?(e?: any): IteratorResult; +} + +interface Iterable { } + +interface IterableIterator extends Iterator { } + +interface Array { + /** + * Returns an array of key, value pairs for every entry in the array + */ + entries(): IterableIterator<[number, T]>; + + /** + * Returns an list of keys in the array + */ + keys(): IterableIterator; + + /** + * Returns an list of values in the array + */ + values(): IterableIterator; +} + +interface ArrayConstructor { + /** + * Creates an array from an iterable object. + * @param iterable An iterable object to convert to an array. + * @param mapfn A mapping function to call on every element of the array. + * @param thisArg Value of 'this' used to invoke the mapfn. + */ + from(iterable: Iterable, mapfn: (v: T, k: number) => U, thisArg?: any): Array; + + /** + * Creates an array from an iterable object. + * @param iterable An iterable object to convert to an array. + */ + from(iterable: Iterable): Array; +} + +interface Map { + entries(): IterableIterator<[K, V]>; + keys(): IterableIterator; + values(): IterableIterator; +} + +interface MapConstructor { + new (iterable: Iterable<[K, V]>): Map; +} + +interface WeakMap { } + +interface WeakMapConstructor { + new (iterable: Iterable<[K, V]>): WeakMap; +} + +interface Promise { } + +interface PromiseConstructor { + /** + * Creates a Promise that is resolved with an array of results when all of the provided Promises + * resolve, or rejected when any Promise is rejected. + * @param values An array of Promises. + * @returns A new Promise. + */ + all(values: Iterable>): Promise; + + /** + * Creates a Promise that is resolved or rejected when any of the provided Promises are resolved + * or rejected. + * @param values An array of Promises. + * @returns A new Promise. + */ + race(values: Iterable>): Promise; +} + +declare namespace Reflect { + function enumerate(target: any): IterableIterator; +} + +/** + * A typed array of 8-bit integer values. The contents are initialized to 0. If the requested + * number of bytes could not be allocated an exception is raised. + */ +interface Int8Array { + /** + * Returns an array of key, value pairs for every entry in the array + */ + entries(): IterableIterator<[number, number]>; + /** + * Returns an list of keys in the array + */ + keys(): IterableIterator; + /** + * Returns an list of values in the array + */ + values(): IterableIterator; +} + +interface Int8ArrayConstructor { + new (elements: Iterable): Int8Array; + + /** + * Creates an array from an array-like or iterable object. + * @param arrayLike An array-like or iterable object to convert to an array. + * @param mapfn A mapping function to call on every element of the array. + * @param thisArg Value of 'this' used to invoke the mapfn. + */ + from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Int8Array; +} + +/** + * A typed array of 8-bit unsigned integer values. The contents are initialized to 0. If the + * requested number of bytes could not be allocated an exception is raised. + */ +interface Uint8Array { + /** + * Returns an array of key, value pairs for every entry in the array + */ + entries(): IterableIterator<[number, number]>; + /** + * Returns an list of keys in the array + */ + keys(): IterableIterator; + /** + * Returns an list of values in the array + */ + values(): IterableIterator; +} + +interface Uint8ArrayConstructor { + new (elements: Iterable): Uint8Array; + + /** + * Creates an array from an array-like or iterable object. + * @param arrayLike An array-like or iterable object to convert to an array. + * @param mapfn A mapping function to call on every element of the array. + * @param thisArg Value of 'this' used to invoke the mapfn. + */ + from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint8Array; +} + +/** + * A typed array of 8-bit unsigned integer (clamped) values. The contents are initialized to 0. + * If the requested number of bytes could not be allocated an exception is raised. + */ +interface Uint8ClampedArray { + /** + * Returns an array of key, value pairs for every entry in the array + */ + entries(): IterableIterator<[number, number]>; + + /** + * Returns an list of keys in the array + */ + keys(): IterableIterator; + + /** + * Returns an list of values in the array + */ + values(): IterableIterator; +} + +interface Uint8ClampedArrayConstructor { + new (elements: Iterable): Uint8ClampedArray; + + + /** + * Creates an array from an array-like or iterable object. + * @param arrayLike An array-like or iterable object to convert to an array. + * @param mapfn A mapping function to call on every element of the array. + * @param thisArg Value of 'this' used to invoke the mapfn. + */ + from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint8ClampedArray; +} + +/** + * A typed array of 16-bit signed integer values. The contents are initialized to 0. If the + * requested number of bytes could not be allocated an exception is raised. + */ +interface Int16Array { + /** + * Returns an array of key, value pairs for every entry in the array + */ + entries(): IterableIterator<[number, number]>; + + /** + * Returns an list of keys in the array + */ + keys(): IterableIterator; + + /** + * Returns an list of values in the array + */ + values(): IterableIterator; +} + +interface Int16ArrayConstructor { + new (elements: Iterable): Int16Array; + + /** + * Creates an array from an array-like or iterable object. + * @param arrayLike An array-like or iterable object to convert to an array. + * @param mapfn A mapping function to call on every element of the array. + * @param thisArg Value of 'this' used to invoke the mapfn. + */ + from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Int16Array; +} + +/** + * A typed array of 16-bit unsigned integer values. The contents are initialized to 0. If the + * requested number of bytes could not be allocated an exception is raised. + */ +interface Uint16Array { + /** + * Returns an array of key, value pairs for every entry in the array + */ + entries(): IterableIterator<[number, number]>; + /** + * Returns an list of keys in the array + */ + keys(): IterableIterator; + /** + * Returns an list of values in the array + */ + values(): IterableIterator; +} + +interface Uint16ArrayConstructor { + new (elements: Iterable): Uint16Array; + + /** + * Creates an array from an array-like or iterable object. + * @param arrayLike An array-like or iterable object to convert to an array. + * @param mapfn A mapping function to call on every element of the array. + * @param thisArg Value of 'this' used to invoke the mapfn. + */ + from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint16Array; +} + +/** + * A typed array of 32-bit signed integer values. The contents are initialized to 0. If the + * requested number of bytes could not be allocated an exception is raised. + */ +interface Int32Array { + /** + * Returns an array of key, value pairs for every entry in the array + */ + entries(): IterableIterator<[number, number]>; + /** + * Returns an list of keys in the array + */ + keys(): IterableIterator; + /** + * Returns an list of values in the array + */ + values(): IterableIterator; +} + +interface Int32ArrayConstructor { + new (elements: Iterable): Int32Array; + + /** + * Creates an array from an array-like or iterable object. + * @param arrayLike An array-like or iterable object to convert to an array. + * @param mapfn A mapping function to call on every element of the array. + * @param thisArg Value of 'this' used to invoke the mapfn. + */ + from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Int32Array; +} + +/** + * A typed array of 32-bit unsigned integer values. The contents are initialized to 0. If the + * requested number of bytes could not be allocated an exception is raised. + */ +interface Uint32Array { + /** + * Returns an array of key, value pairs for every entry in the array + */ + entries(): IterableIterator<[number, number]>; + /** + * Returns an list of keys in the array + */ + keys(): IterableIterator; + /** + * Returns an list of values in the array + */ + values(): IterableIterator; +} + +interface Uint32ArrayConstructor { + new (elements: Iterable): Uint32Array; + + /** + * Creates an array from an array-like or iterable object. + * @param arrayLike An array-like or iterable object to convert to an array. + * @param mapfn A mapping function to call on every element of the array. + * @param thisArg Value of 'this' used to invoke the mapfn. + */ + from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint32Array; +} + +/** + * A typed array of 32-bit float values. The contents are initialized to 0. If the requested number + * of bytes could not be allocated an exception is raised. + */ +interface Float32Array { + /** + * Returns an array of key, value pairs for every entry in the array + */ + entries(): IterableIterator<[number, number]>; + /** + * Returns an list of keys in the array + */ + keys(): IterableIterator; + /** + * Returns an list of values in the array + */ + values(): IterableIterator; +} + +interface Float32ArrayConstructor { + new (elements: Iterable): Float32Array; + + /** + * Creates an array from an array-like or iterable object. + * @param arrayLike An array-like or iterable object to convert to an array. + * @param mapfn A mapping function to call on every element of the array. + * @param thisArg Value of 'this' used to invoke the mapfn. + */ + from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Float32Array; +} + +/** + * A typed array of 64-bit float values. The contents are initialized to 0. If the requested + * number of bytes could not be allocated an exception is raised. + */ +interface Float64Array { + /** + * Returns an array of key, value pairs for every entry in the array + */ + entries(): IterableIterator<[number, number]>; + /** + * Returns an list of keys in the array + */ + keys(): IterableIterator; + /** + * Returns an list of values in the array + */ + values(): IterableIterator; +} + +interface Float64ArrayConstructor { + new (elements: Iterable): Float64Array; + + /** + * Creates an array from an array-like or iterable object. + * @param arrayLike An array-like or iterable object to convert to an array. + * @param mapfn A mapping function to call on every element of the array. + * @param thisArg Value of 'this' used to invoke the mapfn. + */ + from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Float64Array; +} \ No newline at end of file diff --git a/src/lib/es2015.promise.d.ts b/src/lib/es2015.promise.d.ts new file mode 100644 index 00000000000..6ade205dc42 --- /dev/null +++ b/src/lib/es2015.promise.d.ts @@ -0,0 +1,81 @@ +/** + * Represents the completion of an asynchronous operation + */ +interface Promise { + /** + * 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(onfulfilled?: (value: T) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): Promise; + then(onfulfilled?: (value: T) => TResult | PromiseLike, onrejected?: (reason: any) => void): Promise; + + /** + * Attaches a callback for only the rejection of the Promise. + * @param onrejected The callback to execute when the Promise is rejected. + * @returns A Promise for the completion of the callback. + */ + catch(onrejected?: (reason: any) => T | PromiseLike): Promise; + catch(onrejected?: (reason: any) => void): Promise; +} + +interface PromiseConstructor { + /** + * A reference to the prototype. + */ + readonly prototype: Promise; + + /** + * Creates a new Promise. + * @param executor A callback used to initialize the promise. This callback is passed two arguments: + * a resolve callback used resolve the promise with a value or the result of another promise, + * and a reject callback used to reject the promise with a provided reason or error. + */ + new (executor: (resolve: (value?: T | PromiseLike) => void, reject: (reason?: any) => void) => void): Promise; + + /** + * Creates a Promise that is resolved with an array of results when all of the provided Promises + * resolve, or rejected when any Promise is rejected. + * @param values An array of Promises. + * @returns A new Promise. + */ + all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike, T9 | PromiseLike, T10 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]>; + all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike, T9 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9]>; + all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8]>; + all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7]>; + all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6]>; + all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike]): Promise<[T1, T2, T3, T4, T5]>; + all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike ]): Promise<[T1, T2, T3, T4]>; + all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike]): Promise<[T1, T2, T3]>; + all(values: [T1 | PromiseLike, T2 | PromiseLike]): Promise<[T1, T2]>; + + /** + * Creates a new rejected promise for the provided reason. + * @param reason The reason the promise was rejected. + * @returns A new rejected Promise. + */ + reject(reason: any): Promise; + + /** + * Creates a new rejected promise for the provided reason. + * @param reason The reason the promise was rejected. + * @returns A new rejected Promise. + */ + reject(reason: any): Promise; + + /** + * Creates a new resolved promise for the provided value. + * @param value A promise. + * @returns A promise whose internal state matches the provided promise. + */ + resolve(value: T | PromiseLike): Promise; + + /** + * Creates a new resolved promise . + * @returns A resolved promise. + */ + resolve(): Promise; +} + +declare var Promise: PromiseConstructor; \ No newline at end of file diff --git a/src/lib/es2015.proxy.d.ts b/src/lib/es2015.proxy.d.ts new file mode 100644 index 00000000000..c37e8fb0f59 --- /dev/null +++ b/src/lib/es2015.proxy.d.ts @@ -0,0 +1,22 @@ +interface ProxyHandler { + getPrototypeOf? (target: T): any; + setPrototypeOf? (target: T, v: any): boolean; + isExtensible? (target: T): boolean; + preventExtensions? (target: T): boolean; + getOwnPropertyDescriptor? (target: T, p: PropertyKey): PropertyDescriptor; + has? (target: T, p: PropertyKey): boolean; + get? (target: T, p: PropertyKey, receiver: any): any; + set? (target: T, p: PropertyKey, value: any, receiver: any): boolean; + deleteProperty? (target: T, p: PropertyKey): boolean; + defineProperty? (target: T, p: PropertyKey, attributes: PropertyDescriptor): boolean; + enumerate? (target: T): PropertyKey[]; + ownKeys? (target: T): PropertyKey[]; + apply? (target: T, thisArg: any, argArray?: any): any; + construct? (target: T, thisArg: any, argArray?: any): any; +} + +interface ProxyConstructor { + revocable(target: T, handler: ProxyHandler): { proxy: T; revoke: () => void; }; + new (target: T, handler: ProxyHandler): T +} +declare var Proxy: ProxyConstructor; \ No newline at end of file diff --git a/src/lib/es2015.reflect.d.ts b/src/lib/es2015.reflect.d.ts new file mode 100644 index 00000000000..eda8d352263 --- /dev/null +++ b/src/lib/es2015.reflect.d.ts @@ -0,0 +1,16 @@ +declare namespace Reflect { + function apply(target: Function, thisArgument: any, argumentsList: ArrayLike): any; + function construct(target: Function, argumentsList: ArrayLike, newTarget?: any): any; + function defineProperty(target: any, propertyKey: PropertyKey, attributes: PropertyDescriptor): boolean; + function deleteProperty(target: any, propertyKey: PropertyKey): boolean; + function get(target: any, propertyKey: PropertyKey, receiver?: any): any; + function getOwnPropertyDescriptor(target: any, propertyKey: PropertyKey): PropertyDescriptor; + function getPrototypeOf(target: any): any; + function has(target: any, propertyKey: string): boolean; + function has(target: any, propertyKey: symbol): boolean; + function isExtensible(target: any): boolean; + function ownKeys(target: any): Array; + function preventExtensions(target: any): boolean; + function set(target: any, propertyKey: PropertyKey, value: any, receiver?: any): boolean; + function setPrototypeOf(target: any, proto: any): boolean; +} \ No newline at end of file diff --git a/src/lib/es2015.symbol.d.ts b/src/lib/es2015.symbol.d.ts new file mode 100644 index 00000000000..cd7e45595f0 --- /dev/null +++ b/src/lib/es2015.symbol.d.ts @@ -0,0 +1,36 @@ +interface Symbol { + /** Returns a string representation of an object. */ + toString(): string; + + /** Returns the primitive value of the specified object. */ + valueOf(): Object; +} + +interface SymbolConstructor { + /** + * A reference to the prototype. + */ + readonly prototype: Symbol; + + /** + * Returns a new unique Symbol value. + * @param description Description of the new Symbol object. + */ + (description?: string|number): symbol; + + /** + * Returns a Symbol object from the global symbol registry matching the given key if found. + * Otherwise, returns a new symbol with this key. + * @param key key to search for. + */ + for(key: string): symbol; + + /** + * Returns a key from the global symbol registry matching the given Symbol if found. + * Otherwise, returns a undefined. + * @param sym Symbol to find the key for. + */ + keyFor(sym: symbol): string | undefined; +} + +declare var Symbol: SymbolConstructor; \ No newline at end of file diff --git a/src/lib/es2015.symbol.wellknown.d.ts b/src/lib/es2015.symbol.wellknown.d.ts new file mode 100644 index 00000000000..110657e78b1 --- /dev/null +++ b/src/lib/es2015.symbol.wellknown.d.ts @@ -0,0 +1,356 @@ +/// + +interface SymbolConstructor { + /** + * A method that determines if a constructor object recognizes an object as one of the + * constructor’s instances. Called by the semantics of the instanceof operator. + */ + readonly hasInstance: symbol; + + /** + * A Boolean value that if true indicates that an object should flatten to its array elements + * by Array.prototype.concat. + */ + readonly isConcatSpreadable: symbol; + + /** + * A method that returns the default iterator for an object. Called by the semantics of the + * for-of statement. + */ + readonly iterator: symbol; + + /** + * A regular expression method that matches the regular expression against a string. Called + * by the String.prototype.match method. + */ + readonly match: symbol; + + /** + * A regular expression method that replaces matched substrings of a string. Called by the + * String.prototype.replace method. + */ + readonly replace: symbol; + + /** + * A regular expression method that returns the index within a string that matches the + * regular expression. Called by the String.prototype.search method. + */ + readonly search: symbol; + + /** + * A function valued property that is the constructor function that is used to create + * derived objects. + */ + readonly species: symbol; + + /** + * A regular expression method that splits a string at the indices that match the regular + * expression. Called by the String.prototype.split method. + */ + readonly split: symbol; + + /** + * A method that converts an object to a corresponding primitive value. + * Called by the ToPrimitive abstract operation. + */ + readonly toPrimitive: symbol; + + /** + * A String value that is used in the creation of the default string description of an object. + * Called by the built-in method Object.prototype.toString. + */ + readonly toStringTag: symbol; + + /** + * An Object whose own property names are property names that are excluded from the 'with' + * environment bindings of the associated objects. + */ + readonly unscopables: symbol; +} + +interface Symbol { + readonly [Symbol.toStringTag]: "Symbol"; +} + +interface Array { + /** Iterator */ + [Symbol.iterator](): IterableIterator; + + /** + * Returns an object whose properties have the value 'true' + * when they will be absent when used in a 'with' statement. + */ + [Symbol.unscopables](): { + copyWithin: boolean; + entries: boolean; + fill: boolean; + find: boolean; + findIndex: boolean; + keys: boolean; + values: boolean; + }; +} + +interface Date { + /** + * Converts a Date object to a string. + */ + [Symbol.toPrimitive](hint: "default"): string; + /** + * Converts a Date object to a string. + */ + [Symbol.toPrimitive](hint: "string"): string; + /** + * Converts a Date object to a number. + */ + [Symbol.toPrimitive](hint: "number"): number; + /** + * Converts a Date object to a string or number. + * + * @param hint The strings "number", "string", or "default" to specify what primitive to return. + * + * @throws {TypeError} If 'hint' was given something other than "number", "string", or "default". + * @returns A number if 'hint' was "number", a string if 'hint' was "string" or "default". + */ + [Symbol.toPrimitive](hint: string): string | number; +} + +interface Map { + [Symbol.iterator]():IterableIterator<[K,V]>; + readonly [Symbol.toStringTag]: "Map"; +} + +interface WeakMap{ + readonly [Symbol.toStringTag]: "WeakMap"; +} + +interface JSON { + readonly [Symbol.toStringTag]: "JSON"; +} + +interface Function { + /** + * Determines whether the given value inherits from this function if this function was used + * as a constructor function. + * + * A constructor function can control which objects are recognized as its instances by + * 'instanceof' by overriding this method. + */ + [Symbol.hasInstance](value: any): boolean; +} + +interface GeneratorFunction extends Function { + readonly [Symbol.toStringTag]: "GeneratorFunction"; +} + +interface IArguments { + /** Iterator */ + [Symbol.iterator](): IterableIterator; +} + +interface Iterator { } + +interface Iterable { + [Symbol.iterator](): Iterator; +} + +interface IterableIterator extends Iterator { + [Symbol.iterator](): IterableIterator; +} + +interface Math { + readonly [Symbol.toStringTag]: "Math"; +} + +interface Promise { + readonly [Symbol.toStringTag]: "Promise"; +} + +interface PromiseConstructor { + readonly [Symbol.species]: Function; +} + +interface RegExp { + /** + * Matches a string with this regular expression, and returns an array containing the results of + * that search. + * @param string A string to search within. + */ + [Symbol.match](string: string): RegExpMatchArray | null; + + /** + * Replaces text in a string, using this regular expression. + * @param string A String object or string literal whose contents matching against + * this regular expression will be replaced + * @param replaceValue A String object or string literal containing the text to replace for every + * successful match of this regular expression. + */ + [Symbol.replace](string: string, replaceValue: string): string; + + /** + * Replaces text in a string, using this regular expression. + * @param string A String object or string literal whose contents matching against + * this regular expression will be replaced + * @param replacer A function that returns the replacement text. + */ + [Symbol.replace](string: string, replacer: (substring: string, ...args: any[]) => string): string; + + /** + * Finds the position beginning first substring match in a regular expression search + * using this regular expression. + * + * @param string The string to search within. + */ + [Symbol.search](string: string): number; + + /** + * Returns an array of substrings that were delimited by strings in the original input that + * match against this regular expression. + * + * If the regular expression contains capturing parentheses, then each time this + * regular expression matches, the results (including any undefined results) of the + * capturing parentheses are spliced. + * + * @param string string value to split + * @param limit if not undefined, the output array is truncated so that it contains no more + * than 'limit' elements. + */ + [Symbol.split](string: string, limit?: number): string[]; +} + +interface RegExpConstructor { + [Symbol.species](): RegExpConstructor; +} + +interface String { + /** Iterator */ + [Symbol.iterator](): IterableIterator; + + /** + * Matches a string an object that supports being matched against, and returns an array containing the results of that search. + * @param matcher An object that supports being matched against. + */ + match(matcher: { [Symbol.match](string: string): RegExpMatchArray | null; }): RegExpMatchArray | null; + + /** + * Replaces text in a string, using an object that supports replacement within a string. + * @param searchValue A object can search for and replace matches within a string. + * @param replaceValue A string containing the text to replace for every successful match of searchValue in this string. + */ + replace(searchValue: { [Symbol.replace](string: string, replaceValue: string): string; }, replaceValue: string): string; + + /** + * Replaces text in a string, using an object that supports replacement within a string. + * @param searchValue A object can search for and replace matches within a string. + * @param replacer A function that returns the replacement text. + */ + replace(searchValue: { [Symbol.replace](string: string, replacer: (substring: string, ...args: any[]) => string): string; }, replacer: (substring: string, ...args: any[]) => string): string; + + /** + * Finds the first substring match in a regular expression search. + * @param searcher An object which supports searching within a string. + */ + search(searcher: { [Symbol.search](string: string): number; }): number; + + /** + * Split a string into substrings using the specified separator and return them as an array. + * @param splitter An object that can split a string. + * @param limit A value used to limit the number of elements returned in the array. + */ + split(splitter: { [Symbol.split](string: string, limit?: number): string[]; }, limit?: number): string[]; +} + +/** + * Represents a raw buffer of binary data, which is used to store data for the + * different typed arrays. ArrayBuffers cannot be read from or written to directly, + * but can be passed to a typed array or DataView Object to interpret the raw + * buffer as needed. + */ +interface ArrayBuffer { + readonly [Symbol.toStringTag]: "ArrayBuffer"; +} + +interface DataView { + readonly [Symbol.toStringTag]: "DataView"; +} + +/** + * A typed array of 8-bit integer values. The contents are initialized to 0. If the requested + * number of bytes could not be allocated an exception is raised. + */ +interface Int8Array { + [Symbol.iterator](): IterableIterator; + readonly [Symbol.toStringTag]: "Int8Array"; +} + +/** + * A typed array of 8-bit unsigned integer values. The contents are initialized to 0. If the + * requested number of bytes could not be allocated an exception is raised. + */ +interface Uint8Array { + [Symbol.iterator](): IterableIterator; + readonly [Symbol.toStringTag]: "UInt8Array"; +} + +/** + * A typed array of 8-bit unsigned integer (clamped) values. The contents are initialized to 0. + * If the requested number of bytes could not be allocated an exception is raised. + */ +interface Uint8ClampedArray { + [Symbol.iterator](): IterableIterator; + readonly [Symbol.toStringTag]: "Uint8ClampedArray"; +} + +/** + * A typed array of 16-bit signed integer values. The contents are initialized to 0. If the + * requested number of bytes could not be allocated an exception is raised. + */ +interface Int16Array { + [Symbol.iterator](): IterableIterator; + readonly [Symbol.toStringTag]: "Int16Array"; +} + +/** + * A typed array of 16-bit unsigned integer values. The contents are initialized to 0. If the + * requested number of bytes could not be allocated an exception is raised. + */ +interface Uint16Array { + [Symbol.iterator](): IterableIterator; + readonly [Symbol.toStringTag]: "Uint16Array"; +} + +/** + * A typed array of 32-bit signed integer values. The contents are initialized to 0. If the + * requested number of bytes could not be allocated an exception is raised. + */ +interface Int32Array { + [Symbol.iterator](): IterableIterator; + readonly [Symbol.toStringTag]: "Int32Array"; +} + +/** + * A typed array of 32-bit unsigned integer values. The contents are initialized to 0. If the + * requested number of bytes could not be allocated an exception is raised. + */ +interface Uint32Array { + [Symbol.iterator](): IterableIterator; + readonly [Symbol.toStringTag]: "Uint32Array"; +} + +/** + * A typed array of 32-bit float values. The contents are initialized to 0. If the requested number + * of bytes could not be allocated an exception is raised. + */ +interface Float32Array { + [Symbol.iterator](): IterableIterator; + readonly [Symbol.toStringTag]: "Float32Array"; +} + +/** + * A typed array of 64-bit float values. The contents are initialized to 0. If the requested + * number of bytes could not be allocated an exception is raised. + */ +interface Float64Array { + [Symbol.iterator](): IterableIterator; + readonly [Symbol.toStringTag]: "Float64Array"; +} \ No newline at end of file diff --git a/src/lib/es7.d.ts b/src/lib/es2016.array.include.d.ts similarity index 100% rename from src/lib/es7.d.ts rename to src/lib/es2016.array.include.d.ts diff --git a/src/lib/es2016.d.ts b/src/lib/es2016.d.ts new file mode 100644 index 00000000000..34f833d621b --- /dev/null +++ b/src/lib/es2016.d.ts @@ -0,0 +1,2 @@ +/// +/// \ No newline at end of file diff --git a/src/lib/core.d.ts b/src/lib/es5.d.ts similarity index 92% rename from src/lib/core.d.ts rename to src/lib/es5.d.ts index cc30bdd4adb..967aeb42aaf 100644 --- a/src/lib/core.d.ts +++ b/src/lib/es5.d.ts @@ -215,14 +215,14 @@ interface Function { * @param thisArg The object to be used as the this object. * @param argArray A set of arguments to be passed to the function. */ - apply(thisArg: any, argArray?: any): any; + apply(this: Function, thisArg: any, argArray?: any): any; /** * Calls a method of an object, substituting another object for the current object. * @param thisArg The object to be used as the current object. * @param argArray A list of arguments to be passed to the method. */ - call(thisArg: any, ...argArray: any[]): any; + call(this: Function, thisArg: any, ...argArray: any[]): any; /** * For a given function, creates a bound function that has the same body as the original function. @@ -230,7 +230,7 @@ interface Function { * @param thisArg An object to which the this keyword can refer inside the new function. * @param argArray A list of arguments to be passed to the new function. */ - bind(thisArg: any, ...argArray: any[]): any; + bind(this: Function, thisArg: any, ...argArray: any[]): any; prototype: any; readonly length: number; @@ -304,13 +304,13 @@ interface String { * Matches a string with a regular expression, and returns an array containing the results of that search. * @param regexp A variable name or string literal containing the regular expression pattern and flags. */ - match(regexp: string): RegExpMatchArray; + match(regexp: string): RegExpMatchArray | null; /** * Matches a string with a regular expression, and returns an array containing the results of that search. * @param regexp A regular expression object that contains the regular expression pattern and applicable flags. */ - match(regexp: RegExp): RegExpMatchArray; + match(regexp: RegExp): RegExpMatchArray | null; /** * Replaces text in a string, using a regular expression or search string. @@ -813,7 +813,7 @@ interface RegExp { * Executes a search on a string using a regular expression pattern, and returns an array containing the results of that search. * @param string The String object or string literal on which to perform the search. */ - exec(string: string): RegExpExecArray; + exec(string: string): RegExpExecArray | null; /** * Returns a Boolean value that indicates whether or not a pattern exists in a searched string. @@ -836,7 +836,7 @@ interface RegExp { lastIndex: number; // Non-standard extensions - compile(): RegExp; + compile(): this; } interface RegExpConstructor { @@ -1061,7 +1061,7 @@ interface ReadonlyArray { * @param callbackfn A function that accepts up to three arguments. The filter method calls the callbackfn function one time for each element in the array. * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value. */ - filter(callbackfn: (value: T, index: number, array: ReadonlyArray) => boolean, thisArg?: any): T[]; + filter(callbackfn: (value: T, index: number, array: ReadonlyArray) => any, thisArg?: any): T[]; /** * Calls the specified callback function for all the elements in an array. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function. * @param callbackfn A function that accepts up to four arguments. The reduce method calls the callbackfn function one time for each element in the array. @@ -1108,7 +1108,7 @@ interface Array { /** * Removes the last element from an array and returns it. */ - pop(): T; + pop(): T | undefined; /** * Combines two or more arrays. * @param items Additional items to add to the end of array1. @@ -1126,7 +1126,7 @@ interface Array { /** * Removes the first element from an array and returns it. */ - shift(): T; + shift(): T | undefined; /** * Returns a section of an array. * @param start The beginning of the specified portion of the array. @@ -1196,7 +1196,7 @@ interface Array { * @param callbackfn A function that accepts up to three arguments. The filter method calls the callbackfn function one time for each element in the array. * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value. */ - filter(callbackfn: (value: T, index: number, array: T[]) => boolean, thisArg?: any): T[]; + filter(callbackfn: (value: T, index: number, array: T[]) => any, thisArg?: any): T[]; /** * Calls the specified callback function for all the elements in an array. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function. * @param callbackfn A function that accepts up to four arguments. The reduce method calls the callbackfn function one time for each element in the array. @@ -1508,7 +1508,7 @@ interface Int8Array { * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. */ - filter(callbackfn: (value: number, index: number, array: Int8Array) => boolean, thisArg?: any): Int8Array; + filter(callbackfn: (value: number, index: number, array: Int8Array) => any, thisArg?: any): Int8Array; /** * Returns the value of the first element in the array where predicate is true, and undefined @@ -1519,7 +1519,7 @@ interface Int8Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; + find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number | undefined; /** * Returns the index of the first element in the array where predicate is true, and undefined @@ -1530,7 +1530,7 @@ interface Int8Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; + findIndex(predicate: (value: number) => boolean, thisArg?: any): number | undefined; /** * Performs the specified action for each element in an array. @@ -1781,7 +1781,7 @@ interface Uint8Array { * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. */ - filter(callbackfn: (value: number, index: number, array: Uint8Array) => boolean, thisArg?: any): Uint8Array; + filter(callbackfn: (value: number, index: number, array: Uint8Array) => any, thisArg?: any): Uint8Array; /** * Returns the value of the first element in the array where predicate is true, and undefined @@ -1792,7 +1792,7 @@ interface Uint8Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; + find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number | undefined; /** * Returns the index of the first element in the array where predicate is true, and undefined @@ -1803,7 +1803,7 @@ interface Uint8Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; + findIndex(predicate: (value: number) => boolean, thisArg?: any): number | undefined; /** * Performs the specified action for each element in an array. @@ -2055,7 +2055,7 @@ interface Uint8ClampedArray { * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. */ - filter(callbackfn: (value: number, index: number, array: Uint8ClampedArray) => boolean, thisArg?: any): Uint8ClampedArray; + filter(callbackfn: (value: number, index: number, array: Uint8ClampedArray) => any, thisArg?: any): Uint8ClampedArray; /** * Returns the value of the first element in the array where predicate is true, and undefined @@ -2066,7 +2066,7 @@ interface Uint8ClampedArray { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; + find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number | undefined; /** * Returns the index of the first element in the array where predicate is true, and undefined @@ -2077,7 +2077,7 @@ interface Uint8ClampedArray { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; + findIndex(predicate: (value: number) => boolean, thisArg?: any): number | undefined; /** * Performs the specified action for each element in an array. @@ -2328,7 +2328,7 @@ interface Int16Array { * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. */ - filter(callbackfn: (value: number, index: number, array: Int16Array) => boolean, thisArg?: any): Int16Array; + filter(callbackfn: (value: number, index: number, array: Int16Array) => any, thisArg?: any): Int16Array; /** * Returns the value of the first element in the array where predicate is true, and undefined @@ -2339,7 +2339,7 @@ interface Int16Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; + find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number | undefined; /** * Returns the index of the first element in the array where predicate is true, and undefined @@ -2350,7 +2350,7 @@ interface Int16Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; + findIndex(predicate: (value: number) => boolean, thisArg?: any): number | undefined; /** * Performs the specified action for each element in an array. @@ -2602,7 +2602,7 @@ interface Uint16Array { * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. */ - filter(callbackfn: (value: number, index: number, array: Uint16Array) => boolean, thisArg?: any): Uint16Array; + filter(callbackfn: (value: number, index: number, array: Uint16Array) => any, thisArg?: any): Uint16Array; /** * Returns the value of the first element in the array where predicate is true, and undefined @@ -2613,7 +2613,7 @@ interface Uint16Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; + find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number | undefined; /** * Returns the index of the first element in the array where predicate is true, and undefined @@ -2624,7 +2624,7 @@ interface Uint16Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; + findIndex(predicate: (value: number) => boolean, thisArg?: any): number | undefined; /** * Performs the specified action for each element in an array. @@ -2875,7 +2875,7 @@ interface Int32Array { * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. */ - filter(callbackfn: (value: number, index: number, array: Int32Array) => boolean, thisArg?: any): Int32Array; + filter(callbackfn: (value: number, index: number, array: Int32Array) => any, thisArg?: any): Int32Array; /** * Returns the value of the first element in the array where predicate is true, and undefined @@ -2886,7 +2886,7 @@ interface Int32Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; + find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number | undefined; /** * Returns the index of the first element in the array where predicate is true, and undefined @@ -2897,7 +2897,7 @@ interface Int32Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; + findIndex(predicate: (value: number) => boolean, thisArg?: any): number | undefined; /** * Performs the specified action for each element in an array. @@ -3148,7 +3148,7 @@ interface Uint32Array { * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. */ - filter(callbackfn: (value: number, index: number, array: Uint32Array) => boolean, thisArg?: any): Uint32Array; + filter(callbackfn: (value: number, index: number, array: Uint32Array) => any, thisArg?: any): Uint32Array; /** * Returns the value of the first element in the array where predicate is true, and undefined @@ -3159,7 +3159,7 @@ interface Uint32Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; + find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number | undefined; /** * Returns the index of the first element in the array where predicate is true, and undefined @@ -3170,7 +3170,7 @@ interface Uint32Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; + findIndex(predicate: (value: number) => boolean, thisArg?: any): number | undefined; /** * Performs the specified action for each element in an array. @@ -3421,7 +3421,7 @@ interface Float32Array { * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. */ - filter(callbackfn: (value: number, index: number, array: Float32Array) => boolean, thisArg?: any): Float32Array; + filter(callbackfn: (value: number, index: number, array: Float32Array) => any, thisArg?: any): Float32Array; /** * Returns the value of the first element in the array where predicate is true, and undefined @@ -3432,7 +3432,7 @@ interface Float32Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; + find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number | undefined; /** * Returns the index of the first element in the array where predicate is true, and undefined @@ -3443,7 +3443,7 @@ interface Float32Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; + findIndex(predicate: (value: number) => boolean, thisArg?: any): number | undefined; /** * Performs the specified action for each element in an array. @@ -3695,7 +3695,7 @@ interface Float64Array { * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. */ - filter(callbackfn: (value: number, index: number, array: Float64Array) => boolean, thisArg?: any): Float64Array; + filter(callbackfn: (value: number, index: number, array: Float64Array) => any, thisArg?: any): Float64Array; /** * Returns the value of the first element in the array where predicate is true, and undefined @@ -3706,7 +3706,7 @@ interface Float64Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; + find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number | undefined; /** * Returns the index of the first element in the array where predicate is true, and undefined @@ -3717,7 +3717,7 @@ interface Float64Array { * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ - findIndex(predicate: (value: number) => boolean, thisArg?: any): number; + findIndex(predicate: (value: number) => boolean, thisArg?: any): number | undefined; /** * Performs the specified action for each element in an array. @@ -3904,3 +3904,204 @@ interface Float64ArrayConstructor { from(arrayLike: ArrayLike, mapfn?: (v: number, k: number) => number, thisArg?: any): Float64Array; } declare const Float64Array: Float64ArrayConstructor; + +///////////////////////////// +/// ECMAScript Internationalization API +///////////////////////////// + +declare module Intl { + interface CollatorOptions { + usage?: string; + localeMatcher?: string; + numeric?: boolean; + caseFirst?: string; + sensitivity?: string; + ignorePunctuation?: boolean; + } + + interface ResolvedCollatorOptions { + locale: string; + usage: string; + sensitivity: string; + ignorePunctuation: boolean; + collation: string; + caseFirst: string; + numeric: boolean; + } + + interface Collator { + compare(x: string, y: string): number; + resolvedOptions(): ResolvedCollatorOptions; + } + var Collator: { + new (locales?: string[], options?: CollatorOptions): Collator; + new (locale?: string, options?: CollatorOptions): Collator; + (locales?: string[], options?: CollatorOptions): Collator; + (locale?: string, options?: CollatorOptions): Collator; + supportedLocalesOf(locales: string[], options?: CollatorOptions): string[]; + supportedLocalesOf(locale: string, options?: CollatorOptions): string[]; + } + + interface NumberFormatOptions { + localeMatcher?: string; + style?: string; + currency?: string; + currencyDisplay?: string; + useGrouping?: boolean; + minimumIntegerDigits?: number; + minimumFractionDigits?: number; + maximumFractionDigits?: number; + minimumSignificantDigits?: number; + maximumSignificantDigits?: number; + } + + interface ResolvedNumberFormatOptions { + locale: string; + numberingSystem: string; + style: string; + currency?: string; + currencyDisplay?: string; + minimumIntegerDigits: number; + minimumFractionDigits: number; + maximumFractionDigits: number; + minimumSignificantDigits?: number; + maximumSignificantDigits?: number; + useGrouping: boolean; + } + + interface NumberFormat { + format(value: number): string; + resolvedOptions(): ResolvedNumberFormatOptions; + } + var NumberFormat: { + new (locales?: string[], options?: NumberFormatOptions): NumberFormat; + new (locale?: string, options?: NumberFormatOptions): NumberFormat; + (locales?: string[], options?: NumberFormatOptions): NumberFormat; + (locale?: string, options?: NumberFormatOptions): NumberFormat; + supportedLocalesOf(locales: string[], options?: NumberFormatOptions): string[]; + supportedLocalesOf(locale: string, options?: NumberFormatOptions): string[]; + } + + interface DateTimeFormatOptions { + localeMatcher?: string; + weekday?: string; + era?: string; + year?: string; + month?: string; + day?: string; + hour?: string; + minute?: string; + second?: string; + timeZoneName?: string; + formatMatcher?: string; + hour12?: boolean; + timeZone?: string; + } + + interface ResolvedDateTimeFormatOptions { + locale: string; + calendar: string; + numberingSystem: string; + timeZone: string; + hour12?: boolean; + weekday?: string; + era?: string; + year?: string; + month?: string; + day?: string; + hour?: string; + minute?: string; + second?: string; + timeZoneName?: string; + } + + interface DateTimeFormat { + format(date?: Date | number): string; + resolvedOptions(): ResolvedDateTimeFormatOptions; + } + var DateTimeFormat: { + new (locales?: string[], options?: DateTimeFormatOptions): DateTimeFormat; + new (locale?: string, options?: DateTimeFormatOptions): DateTimeFormat; + (locales?: string[], options?: DateTimeFormatOptions): DateTimeFormat; + (locale?: string, options?: DateTimeFormatOptions): DateTimeFormat; + supportedLocalesOf(locales: string[], options?: DateTimeFormatOptions): string[]; + supportedLocalesOf(locale: string, options?: DateTimeFormatOptions): string[]; + } +} + +interface String { + /** + * Determines whether two strings are equivalent in the current locale. + * @param that String to compare to target string + * @param locales An array of locale strings that contain one or more language or locale tags. If you include more than one locale string, list them in descending order of priority so that the first entry is the preferred locale. If you omit this parameter, the default locale of the JavaScript runtime is used. This parameter must conform to BCP 47 standards; see the Intl.Collator object for details. + * @param options An object that contains one or more properties that specify comparison options. see the Intl.Collator object for details. + */ + localeCompare(that: string, locales: string[], options?: Intl.CollatorOptions): number; + + /** + * Determines whether two strings are equivalent in the current locale. + * @param that String to compare to target string + * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used. This parameter must conform to BCP 47 standards; see the Intl.Collator object for details. + * @param options An object that contains one or more properties that specify comparison options. see the Intl.Collator object for details. + */ + localeCompare(that: string, locale: string, options?: Intl.CollatorOptions): number; +} + +interface Number { + /** + * Converts a number to a string by using the current or specified locale. + * @param locales An array of locale strings that contain one or more language or locale tags. If you include more than one locale string, list them in descending order of priority so that the first entry is the preferred locale. If you omit this parameter, the default locale of the JavaScript runtime is used. + * @param options An object that contains one or more properties that specify comparison options. + */ + toLocaleString(locales?: string[], options?: Intl.NumberFormatOptions): string; + + /** + * Converts a number to a string by using the current or specified locale. + * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used. + * @param options An object that contains one or more properties that specify comparison options. + */ + toLocaleString(locale?: string, options?: Intl.NumberFormatOptions): string; +} + +interface Date { + /** + * Converts a date and time to a string by using the current or specified locale. + * @param locales An array of locale strings that contain one or more language or locale tags. If you include more than one locale string, list them in descending order of priority so that the first entry is the preferred locale. If you omit this parameter, the default locale of the JavaScript runtime is used. + * @param options An object that contains one or more properties that specify comparison options. + */ + toLocaleString(locales?: string[], options?: Intl.DateTimeFormatOptions): string; + /** + * Converts a date to a string by using the current or specified locale. + * @param locales An array of locale strings that contain one or more language or locale tags. If you include more than one locale string, list them in descending order of priority so that the first entry is the preferred locale. If you omit this parameter, the default locale of the JavaScript runtime is used. + * @param options An object that contains one or more properties that specify comparison options. + */ + toLocaleDateString(locales?: string[], options?: Intl.DateTimeFormatOptions): string; + + /** + * Converts a time to a string by using the current or specified locale. + * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used. + * @param options An object that contains one or more properties that specify comparison options. + */ + toLocaleTimeString(locale?: string[], options?: Intl.DateTimeFormatOptions): string; + + /** + * Converts a date and time to a string by using the current or specified locale. + * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used. + * @param options An object that contains one or more properties that specify comparison options. + */ + toLocaleString(locale?: string, options?: Intl.DateTimeFormatOptions): string; + + /** + * Converts a date to a string by using the current or specified locale. + * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used. + * @param options An object that contains one or more properties that specify comparison options. + */ + toLocaleDateString(locale?: string, options?: Intl.DateTimeFormatOptions): string; + + /** + * Converts a time to a string by using the current or specified locale. + * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used. + * @param options An object that contains one or more properties that specify comparison options. + */ + toLocaleTimeString(locale?: string, options?: Intl.DateTimeFormatOptions): string; +} diff --git a/src/lib/es6.d.ts b/src/lib/es6.d.ts deleted file mode 100644 index 5a0812aad77..00000000000 --- a/src/lib/es6.d.ts +++ /dev/null @@ -1,1333 +0,0 @@ -declare type PropertyKey = string | number | symbol; - -interface Symbol { - /** Returns a string representation of an object. */ - toString(): string; - - /** Returns the primitive value of the specified object. */ - valueOf(): Object; - - readonly [Symbol.toStringTag]: "Symbol"; -} - -interface SymbolConstructor { - /** - * A reference to the prototype. - */ - readonly prototype: Symbol; - - /** - * Returns a new unique Symbol value. - * @param description Description of the new Symbol object. - */ - (description?: string|number): symbol; - - /** - * Returns a Symbol object from the global symbol registry matching the given key if found. - * Otherwise, returns a new symbol with this key. - * @param key key to search for. - */ - for(key: string): symbol; - - /** - * Returns a key from the global symbol registry matching the given Symbol if found. - * Otherwise, returns a undefined. - * @param sym Symbol to find the key for. - */ - keyFor(sym: symbol): string; - - // Well-known Symbols - - /** - * A method that determines if a constructor object recognizes an object as one of the - * constructor’s instances. Called by the semantics of the instanceof operator. - */ - readonly hasInstance: symbol; - - /** - * A Boolean value that if true indicates that an object should flatten to its array elements - * by Array.prototype.concat. - */ - readonly isConcatSpreadable: symbol; - - /** - * A method that returns the default iterator for an object. Called by the semantics of the - * for-of statement. - */ - readonly iterator: symbol; - - /** - * A regular expression method that matches the regular expression against a string. Called - * by the String.prototype.match method. - */ - readonly match: symbol; - - /** - * A regular expression method that replaces matched substrings of a string. Called by the - * String.prototype.replace method. - */ - readonly replace: symbol; - - /** - * A regular expression method that returns the index within a string that matches the - * regular expression. Called by the String.prototype.search method. - */ - readonly search: symbol; - - /** - * A function valued property that is the constructor function that is used to create - * derived objects. - */ - readonly species: symbol; - - /** - * A regular expression method that splits a string at the indices that match the regular - * expression. Called by the String.prototype.split method. - */ - readonly split: symbol; - - /** - * A method that converts an object to a corresponding primitive value. - * Called by the ToPrimitive abstract operation. - */ - readonly toPrimitive: symbol; - - /** - * A String value that is used in the creation of the default string description of an object. - * Called by the built-in method Object.prototype.toString. - */ - readonly toStringTag: symbol; - - /** - * An Object whose own property names are property names that are excluded from the 'with' - * environment bindings of the associated objects. - */ - readonly unscopables: symbol; -} -declare var Symbol: SymbolConstructor; - -interface Object { - /** - * Determines whether an object has a property with the specified name. - * @param v A property name. - */ - hasOwnProperty(v: PropertyKey): boolean; - - /** - * Determines whether a specified property is enumerable. - * @param v A property name. - */ - propertyIsEnumerable(v: PropertyKey): boolean; -} - -interface ObjectConstructor { - /** - * Copy the values of all of the enumerable own properties from one or more source objects to a - * target object. Returns the target object. - * @param target The target object to copy to. - * @param source The source object from which to copy properties. - */ - assign(target: T, source: U): T & U; - - /** - * Copy the values of all of the enumerable own properties from one or more source objects to a - * target object. Returns the target object. - * @param target The target object to copy to. - * @param source1 The first source object from which to copy properties. - * @param source2 The second source object from which to copy properties. - */ - assign(target: T, source1: U, source2: V): T & U & V; - - /** - * Copy the values of all of the enumerable own properties from one or more source objects to a - * target object. Returns the target object. - * @param target The target object to copy to. - * @param source1 The first source object from which to copy properties. - * @param source2 The second source object from which to copy properties. - * @param source3 The third source object from which to copy properties. - */ - assign(target: T, source1: U, source2: V, source3: W): T & U & V & W; - - /** - * Copy the values of all of the enumerable own properties from one or more source objects to a - * target object. Returns the target object. - * @param target The target object to copy to. - * @param sources One or more source objects from which to copy properties - */ - assign(target: any, ...sources: any[]): any; - - /** - * Returns an array of all symbol properties found directly on object o. - * @param o Object to retrieve the symbols from. - */ - getOwnPropertySymbols(o: any): symbol[]; - - /** - * Returns true if the values are the same value, false otherwise. - * @param value1 The first value. - * @param value2 The second value. - */ - is(value1: any, value2: any): boolean; - - /** - * Sets the prototype of a specified object o to object proto or null. Returns the object o. - * @param o The object to change its prototype. - * @param proto The value of the new prototype or null. - */ - setPrototypeOf(o: any, proto: any): any; - - /** - * Gets the own property descriptor of the specified object. - * An own property descriptor is one that is defined directly on the object and is not - * inherited from the object's prototype. - * @param o Object that contains the property. - * @param p Name of the property. - */ - getOwnPropertyDescriptor(o: any, propertyKey: PropertyKey): PropertyDescriptor; - - /** - * Adds a property to an object, or modifies attributes of an existing property. - * @param o Object on which to add or modify the property. This can be a native JavaScript - * object (that is, a user-defined object or a built in object) or a DOM object. - * @param p The property name. - * @param attributes Descriptor for the property. It can be for a data property or an accessor - * property. - */ - defineProperty(o: any, propertyKey: PropertyKey, attributes: PropertyDescriptor): any; -} - -interface Function { - /** - * Returns the name of the function. Function names are read-only and can not be changed. - */ - readonly name: string; - - /** - * Determines whether the given value inherits from this function if this function was used - * as a constructor function. - * - * A constructor function can control which objects are recognized as its instances by - * 'instanceof' by overriding this method. - */ - [Symbol.hasInstance](value: any): boolean; -} - -interface NumberConstructor { - /** - * The value of Number.EPSILON is the difference between 1 and the smallest value greater than 1 - * that is representable as a Number value, which is approximately: - * 2.2204460492503130808472633361816 x 10‍−‍16. - */ - readonly EPSILON: number; - - /** - * Returns true if passed value is finite. - * Unlike the global isFinite, Number.isFinite doesn't forcibly convert the parameter to a - * number. Only finite values of the type number, result in true. - * @param number A numeric value. - */ - isFinite(number: number): boolean; - - /** - * Returns true if the value passed is an integer, false otherwise. - * @param number A numeric value. - */ - isInteger(number: number): boolean; - - /** - * Returns a Boolean value that indicates whether a value is the reserved value NaN (not a - * number). Unlike the global isNaN(), Number.isNaN() doesn't forcefully convert the parameter - * to a number. Only values of the type number, that are also NaN, result in true. - * @param number A numeric value. - */ - isNaN(number: number): boolean; - - /** - * Returns true if the value passed is a safe integer. - * @param number A numeric value. - */ - isSafeInteger(number: number): boolean; - - /** - * The value of the largest integer n such that n and n + 1 are both exactly representable as - * a Number value. - * The value of Number.MIN_SAFE_INTEGER is 9007199254740991 2^53 − 1. - */ - readonly MAX_SAFE_INTEGER: number; - - /** - * The value of the smallest integer n such that n and n − 1 are both exactly representable as - * a Number value. - * The value of Number.MIN_SAFE_INTEGER is −9007199254740991 (−(2^53 − 1)). - */ - readonly MIN_SAFE_INTEGER: number; - - /** - * Converts a string to a floating-point number. - * @param string A string that contains a floating-point number. - */ - parseFloat(string: string): number; - - /** - * Converts A string to an integer. - * @param s A string to convert into a number. - * @param radix A value between 2 and 36 that specifies the base of the number in numString. - * If this argument is not supplied, strings with a prefix of '0x' are considered hexadecimal. - * All other strings are considered decimal. - */ - parseInt(string: string, radix?: number): number; -} - -interface Array { - /** Iterator */ - [Symbol.iterator](): IterableIterator; - - /** - * Returns an object whose properties have the value 'true' - * when they will be absent when used in a 'with' statement. - */ - [Symbol.unscopables](): { - copyWithin: boolean; - entries: boolean; - fill: boolean; - find: boolean; - findIndex: boolean; - keys: boolean; - values: boolean; - }; - - /** - * Returns an array of key, value pairs for every entry in the array - */ - entries(): IterableIterator<[number, T]>; - - /** - * Returns an list of keys in the array - */ - keys(): IterableIterator; - - /** - * Returns an list of values in the array - */ - values(): IterableIterator; - - /** - * Returns the value of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - find(predicate: (value: T, index: number, obj: Array) => boolean, thisArg?: any): T; - - /** - * Returns the index of the first element in the array where predicate is true, and undefined - * otherwise. - * @param predicate find calls predicate once for each element of the array, in ascending - * order, until it finds one where predicate returns true. If such an element is found, find - * immediately returns that element value. Otherwise, find returns undefined. - * @param thisArg If provided, it will be used as the this value for each invocation of - * predicate. If it is not provided, undefined is used instead. - */ - findIndex(predicate: (value: T) => boolean, thisArg?: any): number; - - /** - * Returns the this object after filling the section identified by start and end with value - * @param value value to fill array section with - * @param start index to start filling the array at. If start is negative, it is treated as - * length+start where length is the length of the array. - * @param end index to stop filling the array at. If end is negative, it is treated as - * length+end. - */ - fill(value: T, start?: number, end?: number): T[]; - - /** - * Returns the this object after copying a section of the array identified by start and end - * to the same array starting at position target - * @param target If target is negative, it is treated as length+target where length is the - * length of the array. - * @param start If start is negative, it is treated as length+start. If end is negative, it - * is treated as length+end. - * @param end If not specified, length of the this object is used as its default value. - */ - copyWithin(target: number, start: number, end?: number): T[]; -} - -interface IArguments { - /** Iterator */ - [Symbol.iterator](): IterableIterator; -} - -interface ArrayConstructor { - /** - * Creates an array from an array-like object. - * @param arrayLike An array-like object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): Array; - - /** - * Creates an array from an iterable object. - * @param iterable An iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(iterable: Iterable, mapfn: (v: T, k: number) => U, thisArg?: any): Array; - - /** - * Creates an array from an array-like object. - * @param arrayLike An array-like object to convert to an array. - */ - from(arrayLike: ArrayLike): Array; - - /** - * Creates an array from an iterable object. - * @param iterable An iterable object to convert to an array. - */ - from(iterable: Iterable): Array; - - /** - * Returns a new array from a set of elements. - * @param items A set of elements to include in the new array object. - */ - of(...items: T[]): Array; -} - -interface String { - /** Iterator */ - [Symbol.iterator](): IterableIterator; - - /** - * Returns a nonnegative integer Number less than 1114112 (0x110000) that is the code point - * value of the UTF-16 encoded code point starting at the string element at position pos in - * the String resulting from converting this object to a String. - * If there is no element at that position, the result is undefined. - * If a valid UTF-16 surrogate pair does not begin at pos, the result is the code unit at pos. - */ - codePointAt(pos: number): number; - - /** - * Returns true if searchString appears as a substring of the result of converting this - * object to a String, at one or more positions that are - * greater than or equal to position; otherwise, returns false. - * @param searchString search string - * @param position If position is undefined, 0 is assumed, so as to search all of the String. - */ - includes(searchString: string, position?: number): boolean; - - /** - * Returns true if the sequence of elements of searchString converted to a String is the - * same as the corresponding elements of this object (converted to a String) starting at - * endPosition – length(this). Otherwise returns false. - */ - endsWith(searchString: string, endPosition?: number): boolean; - - /** - * Returns the String value result of normalizing the string into the normalization form - * named by form as specified in Unicode Standard Annex #15, Unicode Normalization Forms. - * @param form Applicable values: "NFC", "NFD", "NFKC", or "NFKD", If not specified default - * is "NFC" - */ - normalize(form?: string): string; - - /** - * Returns a String value that is made from count copies appended together. If count is 0, - * T is the empty String is returned. - * @param count number of copies to append - */ - repeat(count: number): string; - - /** - * Returns true if the sequence of elements of searchString converted to a String is the - * same as the corresponding elements of this object (converted to a String) starting at - * position. Otherwise returns false. - */ - startsWith(searchString: string, position?: number): boolean; - - // Overloads for objects with methods of well-known symbols. - - /** - * Matches a string an object that supports being matched against, and returns an array containing the results of that search. - * @param matcher An object that supports being matched against. - */ - match(matcher: { [Symbol.match](string: string): RegExpMatchArray; }): RegExpMatchArray; - - /** - * Replaces text in a string, using an object that supports replacement within a string. - * @param searchValue A object can search for and replace matches within a string. - * @param replaceValue A string containing the text to replace for every successful match of searchValue in this string. - */ - replace(searchValue: { [Symbol.replace](string: string, replaceValue: string): string; }, replaceValue: string): string; - - /** - * Replaces text in a string, using an object that supports replacement within a string. - * @param searchValue A object can search for and replace matches within a string. - * @param replacer A function that returns the replacement text. - */ - replace(searchValue: { [Symbol.replace](string: string, replacer: (substring: string, ...args: any[]) => string): string; }, replacer: (substring: string, ...args: any[]) => string): string; - - /** - * Finds the first substring match in a regular expression search. - * @param searcher An object which supports searching within a string. - */ - search(searcher: { [Symbol.search](string: string): number; }): number; - - /** - * Split a string into substrings using the specified separator and return them as an array. - * @param splitter An object that can split a string. - * @param limit A value used to limit the number of elements returned in the array. - */ - split(splitter: { [Symbol.split](string: string, limit?: number): string[]; }, limit?: number): string[]; - - /** - * Returns an HTML anchor element and sets the name attribute to the text value - * @param name - */ - anchor(name: string): string; - - /** Returns a HTML element */ - big(): string; - - /** Returns a HTML element */ - blink(): string; - - /** Returns a HTML element */ - bold(): string; - - /** Returns a HTML element */ - fixed(): string - - /** Returns a HTML element and sets the color attribute value */ - fontcolor(color: string): string - - /** Returns a HTML element and sets the size attribute value */ - fontsize(size: number): string; - - /** Returns a HTML element and sets the size attribute value */ - fontsize(size: string): string; - - /** Returns an HTML element */ - italics(): string; - - /** Returns an HTML element and sets the href attribute value */ - link(url: string): string; - - /** Returns a HTML element */ - small(): string; - - /** Returns a HTML element */ - strike(): string; - - /** Returns a HTML element */ - sub(): string; - - /** Returns a HTML element */ - sup(): string; -} - -interface StringConstructor { - /** - * Return the String value whose elements are, in order, the elements in the List elements. - * If length is 0, the empty string is returned. - */ - fromCodePoint(...codePoints: number[]): string; - - /** - * String.raw is intended for use as a tag function of a Tagged Template String. When called - * as such the first argument will be a well formed template call site object and the rest - * parameter will contain the substitution values. - * @param template A well-formed template string call site representation. - * @param substitutions A set of substitution values. - */ - raw(template: TemplateStringsArray, ...substitutions: any[]): string; -} - -interface IteratorResult { - done: boolean; - value?: T; -} - -interface Iterator { - next(value?: any): IteratorResult; - return?(value?: any): IteratorResult; - throw?(e?: any): IteratorResult; -} - -interface Iterable { - [Symbol.iterator](): Iterator; -} - -interface IterableIterator extends Iterator { - [Symbol.iterator](): IterableIterator; -} - -interface GeneratorFunction extends Function { - readonly [Symbol.toStringTag]: "GeneratorFunction"; -} - -interface GeneratorFunctionConstructor { - /** - * Creates a new Generator function. - * @param args A list of arguments the function accepts. - */ - new (...args: string[]): GeneratorFunction; - (...args: string[]): GeneratorFunction; - readonly prototype: GeneratorFunction; -} -declare var GeneratorFunction: GeneratorFunctionConstructor; - -interface Math { - /** - * Returns the number of leading zero bits in the 32-bit binary representation of a number. - * @param x A numeric expression. - */ - clz32(x: number): number; - - /** - * Returns the result of 32-bit multiplication of two numbers. - * @param x First number - * @param y Second number - */ - imul(x: number, y: number): number; - - /** - * Returns the sign of the x, indicating whether x is positive, negative or zero. - * @param x The numeric expression to test - */ - sign(x: number): number; - - /** - * Returns the base 10 logarithm of a number. - * @param x A numeric expression. - */ - log10(x: number): number; - - /** - * Returns the base 2 logarithm of a number. - * @param x A numeric expression. - */ - log2(x: number): number; - - /** - * Returns the natural logarithm of 1 + x. - * @param x A numeric expression. - */ - log1p(x: number): number; - - /** - * Returns the result of (e^x - 1) of x (e raised to the power of x, where e is the base of - * the natural logarithms). - * @param x A numeric expression. - */ - expm1(x: number): number; - - /** - * Returns the hyperbolic cosine of a number. - * @param x A numeric expression that contains an angle measured in radians. - */ - cosh(x: number): number; - - /** - * Returns the hyperbolic sine of a number. - * @param x A numeric expression that contains an angle measured in radians. - */ - sinh(x: number): number; - - /** - * Returns the hyperbolic tangent of a number. - * @param x A numeric expression that contains an angle measured in radians. - */ - tanh(x: number): number; - - /** - * Returns the inverse hyperbolic cosine of a number. - * @param x A numeric expression that contains an angle measured in radians. - */ - acosh(x: number): number; - - /** - * Returns the inverse hyperbolic sine of a number. - * @param x A numeric expression that contains an angle measured in radians. - */ - asinh(x: number): number; - - /** - * Returns the inverse hyperbolic tangent of a number. - * @param x A numeric expression that contains an angle measured in radians. - */ - atanh(x: number): number; - - /** - * Returns the square root of the sum of squares of its arguments. - * @param values Values to compute the square root for. - * If no arguments are passed, the result is +0. - * If there is only one argument, the result is the absolute value. - * If any argument is +Infinity or -Infinity, the result is +Infinity. - * If any argument is NaN, the result is NaN. - * If all arguments are either +0 or −0, the result is +0. - */ - hypot(...values: number[] ): number; - - /** - * Returns the integral part of the a numeric expression, x, removing any fractional digits. - * If x is already an integer, the result is x. - * @param x A numeric expression. - */ - trunc(x: number): number; - - /** - * Returns the nearest single precision float representation of a number. - * @param x A numeric expression. - */ - fround(x: number): number; - - /** - * Returns an implementation-dependent approximation to the cube root of number. - * @param x A numeric expression. - */ - cbrt(x: number): number; - - readonly [Symbol.toStringTag]: "Math"; -} - -interface Date { - /** - * Converts a Date object to a string. - */ - [Symbol.toPrimitive](hint: "default"): string; - /** - * Converts a Date object to a string. - */ - [Symbol.toPrimitive](hint: "string"): string; - /** - * Converts a Date object to a number. - */ - [Symbol.toPrimitive](hint: "number"): number; - /** - * Converts a Date object to a string or number. - * - * @param hint The strings "number", "string", or "default" to specify what primitive to return. - * - * @throws {TypeError} If 'hint' was given something other than "number", "string", or "default". - * @returns A number if 'hint' was "number", a string if 'hint' was "string" or "default". - */ - [Symbol.toPrimitive](hint: string): string | number; -} - -interface RegExp { - /** - * Matches a string with this regular expression, and returns an array containing the results of - * that search. - * @param string A string to search within. - */ - [Symbol.match](string: string): RegExpMatchArray; - - /** - * Replaces text in a string, using this regular expression. - * @param string A String object or string literal whose contents matching against - * this regular expression will be replaced - * @param replaceValue A String object or string literal containing the text to replace for every - * successful match of this regular expression. - */ - [Symbol.replace](string: string, replaceValue: string): string; - - /** - * Replaces text in a string, using this regular expression. - * @param string A String object or string literal whose contents matching against - * this regular expression will be replaced - * @param replacer A function that returns the replacement text. - */ - [Symbol.replace](string: string, replacer: (substring: string, ...args: any[]) => string): string; - - /** - * Finds the position beginning first substring match in a regular expression search - * using this regular expression. - * - * @param string The string to search within. - */ - [Symbol.search](string: string): number; - - /** - * Returns an array of substrings that were delimited by strings in the original input that - * match against this regular expression. - * - * If the regular expression contains capturing parentheses, then each time this - * regular expression matches, the results (including any undefined results) of the - * capturing parentheses are spliced. - * - * @param string string value to split - * @param limit if not undefined, the output array is truncated so that it contains no more - * than 'limit' elements. - */ - [Symbol.split](string: string, limit?: number): string[]; - - /** - * Returns a string indicating the flags of the regular expression in question. This field is read-only. - * The characters in this string are sequenced and concatenated in the following order: - * - * - "g" for global - * - "i" for ignoreCase - * - "m" for multiline - * - "u" for unicode - * - "y" for sticky - * - * If no flags are set, the value is the empty string. - */ - readonly flags: string; - - /** - * Returns a Boolean value indicating the state of the sticky flag (y) used with a regular - * expression. Default is false. Read-only. - */ - readonly sticky: boolean; - - /** - * Returns a Boolean value indicating the state of the Unicode flag (u) used with a regular - * expression. Default is false. Read-only. - */ - readonly unicode: boolean; -} - -interface RegExpConstructor { - [Symbol.species](): RegExpConstructor; -} - -interface Map { - clear(): void; - delete(key: K): boolean; - entries(): IterableIterator<[K, V]>; - forEach(callbackfn: (value: V, index: K, map: Map) => void, thisArg?: any): void; - get(key: K): V; - has(key: K): boolean; - keys(): IterableIterator; - set(key: K, value?: V): Map; - readonly size: number; - values(): IterableIterator; - [Symbol.iterator]():IterableIterator<[K,V]>; - readonly [Symbol.toStringTag]: "Map"; -} - -interface MapConstructor { - new (): Map; - new (): Map; - new (iterable: Iterable<[K, V]>): Map; - readonly prototype: Map; -} -declare var Map: MapConstructor; - -interface WeakMap { - clear(): void; - delete(key: K): boolean; - get(key: K): V; - has(key: K): boolean; - set(key: K, value?: V): WeakMap; - readonly [Symbol.toStringTag]: "WeakMap"; -} - -interface WeakMapConstructor { - new (): WeakMap; - new (): WeakMap; - new (iterable: Iterable<[K, V]>): WeakMap; - readonly prototype: WeakMap; -} -declare var WeakMap: WeakMapConstructor; - -interface Set { - add(value: T): Set; - clear(): void; - delete(value: T): boolean; - entries(): IterableIterator<[T, T]>; - forEach(callbackfn: (value: T, index: T, set: Set) => void, thisArg?: any): void; - has(value: T): boolean; - keys(): IterableIterator; - readonly size: number; - values(): IterableIterator; - [Symbol.iterator]():IterableIterator; - readonly [Symbol.toStringTag]: "Set"; -} - -interface SetConstructor { - new (): Set; - new (): Set; - new (iterable: Iterable): Set; - readonly prototype: Set; -} -declare var Set: SetConstructor; - -interface WeakSet { - add(value: T): WeakSet; - clear(): void; - delete(value: T): boolean; - has(value: T): boolean; - readonly [Symbol.toStringTag]: "WeakSet"; -} - -interface WeakSetConstructor { - new (): WeakSet; - new (): WeakSet; - new (iterable: Iterable): WeakSet; - readonly prototype: WeakSet; -} -declare var WeakSet: WeakSetConstructor; - -interface JSON { - readonly [Symbol.toStringTag]: "JSON"; -} - -/** - * Represents a raw buffer of binary data, which is used to store data for the - * different typed arrays. ArrayBuffers cannot be read from or written to directly, - * but can be passed to a typed array or DataView Object to interpret the raw - * buffer as needed. - */ -interface ArrayBuffer { - readonly [Symbol.toStringTag]: "ArrayBuffer"; -} - -interface DataView { - readonly [Symbol.toStringTag]: "DataView"; -} - -/** - * A typed array of 8-bit integer values. The contents are initialized to 0. If the requested - * number of bytes could not be allocated an exception is raised. - */ -interface Int8Array { - /** - * Returns an array of key, value pairs for every entry in the array - */ - entries(): IterableIterator<[number, number]>; - /** - * Returns an list of keys in the array - */ - keys(): IterableIterator; - /** - * Returns an list of values in the array - */ - values(): IterableIterator; - [Symbol.iterator](): IterableIterator; - readonly [Symbol.toStringTag]: "Int8Array"; -} - -interface Int8ArrayConstructor { - new (elements: Iterable): Int8Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Int8Array; -} - -/** - * A typed array of 8-bit unsigned integer values. The contents are initialized to 0. If the - * requested number of bytes could not be allocated an exception is raised. - */ -interface Uint8Array { - /** - * Returns an array of key, value pairs for every entry in the array - */ - entries(): IterableIterator<[number, number]>; - /** - * Returns an list of keys in the array - */ - keys(): IterableIterator; - /** - * Returns an list of values in the array - */ - values(): IterableIterator; - [Symbol.iterator](): IterableIterator; - readonly [Symbol.toStringTag]: "UInt8Array"; -} - -interface Uint8ArrayConstructor { - new (elements: Iterable): Uint8Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint8Array; -} - -/** - * A typed array of 8-bit unsigned integer (clamped) values. The contents are initialized to 0. - * If the requested number of bytes could not be allocated an exception is raised. - */ -interface Uint8ClampedArray { - /** - * Returns an array of key, value pairs for every entry in the array - */ - entries(): IterableIterator<[number, number]>; - - /** - * Returns an list of keys in the array - */ - keys(): IterableIterator; - - /** - * Returns an list of values in the array - */ - values(): IterableIterator; - - [Symbol.iterator](): IterableIterator; - readonly [Symbol.toStringTag]: "Uint8ClampedArray"; -} - -interface Uint8ClampedArrayConstructor { - new (elements: Iterable): Uint8ClampedArray; - - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint8ClampedArray; -} - -/** - * A typed array of 16-bit signed integer values. The contents are initialized to 0. If the - * requested number of bytes could not be allocated an exception is raised. - */ -interface Int16Array { - /** - * Returns an array of key, value pairs for every entry in the array - */ - entries(): IterableIterator<[number, number]>; - - /** - * Returns an list of keys in the array - */ - keys(): IterableIterator; - - /** - * Returns an list of values in the array - */ - values(): IterableIterator; - - - [Symbol.iterator](): IterableIterator; - readonly [Symbol.toStringTag]: "Int16Array"; -} - -interface Int16ArrayConstructor { - new (elements: Iterable): Int16Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Int16Array; -} - -/** - * A typed array of 16-bit unsigned integer values. The contents are initialized to 0. If the - * requested number of bytes could not be allocated an exception is raised. - */ -interface Uint16Array { - /** - * Returns an array of key, value pairs for every entry in the array - */ - entries(): IterableIterator<[number, number]>; - /** - * Returns an list of keys in the array - */ - keys(): IterableIterator; - /** - * Returns an list of values in the array - */ - values(): IterableIterator; - [Symbol.iterator](): IterableIterator; - readonly [Symbol.toStringTag]: "Uint16Array"; -} - -interface Uint16ArrayConstructor { - new (elements: Iterable): Uint16Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint16Array; -} - -/** - * A typed array of 32-bit signed integer values. The contents are initialized to 0. If the - * requested number of bytes could not be allocated an exception is raised. - */ -interface Int32Array { - /** - * Returns an array of key, value pairs for every entry in the array - */ - entries(): IterableIterator<[number, number]>; - /** - * Returns an list of keys in the array - */ - keys(): IterableIterator; - /** - * Returns an list of values in the array - */ - values(): IterableIterator; - [Symbol.iterator](): IterableIterator; - readonly [Symbol.toStringTag]: "Int32Array"; -} - -interface Int32ArrayConstructor { - new (elements: Iterable): Int32Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Int32Array; -} - -/** - * A typed array of 32-bit unsigned integer values. The contents are initialized to 0. If the - * requested number of bytes could not be allocated an exception is raised. - */ -interface Uint32Array { - /** - * Returns an array of key, value pairs for every entry in the array - */ - entries(): IterableIterator<[number, number]>; - /** - * Returns an list of keys in the array - */ - keys(): IterableIterator; - /** - * Returns an list of values in the array - */ - values(): IterableIterator; - [Symbol.iterator](): IterableIterator; - readonly [Symbol.toStringTag]: "Uint32Array"; -} - -interface Uint32ArrayConstructor { - new (elements: Iterable): Uint32Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint32Array; -} - -/** - * A typed array of 32-bit float values. The contents are initialized to 0. If the requested number - * of bytes could not be allocated an exception is raised. - */ -interface Float32Array { - /** - * Returns an array of key, value pairs for every entry in the array - */ - entries(): IterableIterator<[number, number]>; - /** - * Returns an list of keys in the array - */ - keys(): IterableIterator; - /** - * Returns an list of values in the array - */ - values(): IterableIterator; - [Symbol.iterator](): IterableIterator; - readonly [Symbol.toStringTag]: "Float32Array"; -} - -interface Float32ArrayConstructor { - new (elements: Iterable): Float32Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Float32Array; -} - -/** - * A typed array of 64-bit float values. The contents are initialized to 0. If the requested - * number of bytes could not be allocated an exception is raised. - */ -interface Float64Array { - /** - * Returns an array of key, value pairs for every entry in the array - */ - entries(): IterableIterator<[number, number]>; - /** - * Returns an list of keys in the array - */ - keys(): IterableIterator; - /** - * Returns an list of values in the array - */ - values(): IterableIterator; - [Symbol.iterator](): IterableIterator; - readonly [Symbol.toStringTag]: "Float64Array"; -} - -interface Float64ArrayConstructor { - new (elements: Iterable): Float64Array; - - /** - * Creates an array from an array-like or iterable object. - * @param arrayLike An array-like or iterable object to convert to an array. - * @param mapfn A mapping function to call on every element of the array. - * @param thisArg Value of 'this' used to invoke the mapfn. - */ - from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Float64Array; -} - -interface ProxyHandler { - getPrototypeOf? (target: T): any; - setPrototypeOf? (target: T, v: any): boolean; - isExtensible? (target: T): boolean; - preventExtensions? (target: T): boolean; - getOwnPropertyDescriptor? (target: T, p: PropertyKey): PropertyDescriptor; - has? (target: T, p: PropertyKey): boolean; - get? (target: T, p: PropertyKey, receiver: any): any; - set? (target: T, p: PropertyKey, value: any, receiver: any): boolean; - deleteProperty? (target: T, p: PropertyKey): boolean; - defineProperty? (target: T, p: PropertyKey, attributes: PropertyDescriptor): boolean; - enumerate? (target: T): PropertyKey[]; - ownKeys? (target: T): PropertyKey[]; - apply? (target: T, thisArg: any, argArray?: any): any; - construct? (target: T, thisArg: any, argArray?: any): any; -} - -interface ProxyConstructor { - revocable(target: T, handler: ProxyHandler): { proxy: T; revoke: () => void; }; - new (target: T, handler: ProxyHandler): T -} -declare var Proxy: ProxyConstructor; - -declare namespace Reflect { - function apply(target: Function, thisArgument: any, argumentsList: ArrayLike): any; - function construct(target: Function, argumentsList: ArrayLike, newTarget?: any): any; - function defineProperty(target: any, propertyKey: PropertyKey, attributes: PropertyDescriptor): boolean; - function deleteProperty(target: any, propertyKey: PropertyKey): boolean; - function enumerate(target: any): IterableIterator; - function get(target: any, propertyKey: PropertyKey, receiver?: any): any; - function getOwnPropertyDescriptor(target: any, propertyKey: PropertyKey): PropertyDescriptor; - function getPrototypeOf(target: any): any; - function has(target: any, propertyKey: string): boolean; - function has(target: any, propertyKey: symbol): boolean; - function isExtensible(target: any): boolean; - function ownKeys(target: any): Array; - function preventExtensions(target: any): boolean; - function set(target: any, propertyKey: PropertyKey, value: any, receiver?: any): boolean; - function setPrototypeOf(target: any, proto: any): boolean; -} - -/** - * Represents the completion of an asynchronous operation - */ -interface Promise { - /** - * 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(onfulfilled?: (value: T) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): Promise; - then(onfulfilled?: (value: T) => TResult | PromiseLike, onrejected?: (reason: any) => void): Promise; - - /** - * Attaches a callback for only the rejection of the Promise. - * @param onrejected The callback to execute when the Promise is rejected. - * @returns A Promise for the completion of the callback. - */ - catch(onrejected?: (reason: any) => T | PromiseLike): Promise; - catch(onrejected?: (reason: any) => void): Promise; - - readonly [Symbol.toStringTag]: "Promise"; -} - -interface PromiseConstructor { - /** - * A reference to the prototype. - */ - readonly prototype: Promise; - - /** - * Creates a new Promise. - * @param executor A callback used to initialize the promise. This callback is passed two arguments: - * a resolve callback used resolve the promise with a value or the result of another promise, - * and a reject callback used to reject the promise with a provided reason or error. - */ - new (executor: (resolve: (value?: T | PromiseLike) => void, reject: (reason?: any) => void) => void): Promise; - - /** - * Creates a Promise that is resolved with an array of results when all of the provided Promises - * resolve, or rejected when any Promise is rejected. - * @param values An array of Promises. - * @returns A new Promise. - */ - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike, T9 | PromiseLike, T10 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]>; - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike, T9 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9]>; - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8]>; - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7]>; - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6]>; - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike]): Promise<[T1, T2, T3, T4, T5]>; - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike ]): Promise<[T1, T2, T3, T4]>; - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike]): Promise<[T1, T2, T3]>; - all(values: [T1 | PromiseLike, T2 | PromiseLike]): Promise<[T1, T2]>; - all(values: Iterable>): Promise; - - /** - * Creates a Promise that is resolved or rejected when any of the provided Promises are resolved - * or rejected. - * @param values An array of Promises. - * @returns A new Promise. - */ - race(values: Iterable>): Promise; - - /** - * Creates a new rejected promise for the provided reason. - * @param reason The reason the promise was rejected. - * @returns A new rejected Promise. - */ - reject(reason: any): Promise; - - /** - * Creates a new rejected promise for the provided reason. - * @param reason The reason the promise was rejected. - * @returns A new rejected Promise. - */ - reject(reason: any): Promise; - - /** - * Creates a new resolved promise for the provided value. - * @param value A promise. - * @returns A promise whose internal state matches the provided promise. - */ - resolve(value: T | PromiseLike): Promise; - - /** - * Creates a new resolved promise . - * @returns A resolved promise. - */ - resolve(): Promise; - - readonly [Symbol.species]: Function; -} - -declare var Promise: PromiseConstructor; diff --git a/src/lib/importcore.d.ts b/src/lib/importcore.d.ts deleted file mode 100644 index 94e599fb842..00000000000 --- a/src/lib/importcore.d.ts +++ /dev/null @@ -1 +0,0 @@ -/// diff --git a/src/lib/importes5.d.ts b/src/lib/importes5.d.ts new file mode 100644 index 00000000000..872bf0a1bed --- /dev/null +++ b/src/lib/importes5.d.ts @@ -0,0 +1 @@ +/// diff --git a/src/lib/intl.d.ts b/src/lib/intl.d.ts deleted file mode 100644 index 53894587259..00000000000 --- a/src/lib/intl.d.ts +++ /dev/null @@ -1,201 +0,0 @@ -///////////////////////////// -/// ECMAScript Internationalization API -///////////////////////////// - -declare module Intl { - interface CollatorOptions { - usage?: string; - localeMatcher?: string; - numeric?: boolean; - caseFirst?: string; - sensitivity?: string; - ignorePunctuation?: boolean; - } - - interface ResolvedCollatorOptions { - locale: string; - usage: string; - sensitivity: string; - ignorePunctuation: boolean; - collation: string; - caseFirst: string; - numeric: boolean; - } - - interface Collator { - compare(x: string, y: string): number; - resolvedOptions(): ResolvedCollatorOptions; - } - var Collator: { - new (locales?: string[], options?: CollatorOptions): Collator; - new (locale?: string, options?: CollatorOptions): Collator; - (locales?: string[], options?: CollatorOptions): Collator; - (locale?: string, options?: CollatorOptions): Collator; - supportedLocalesOf(locales: string[], options?: CollatorOptions): string[]; - supportedLocalesOf(locale: string, options?: CollatorOptions): string[]; - } - - interface NumberFormatOptions { - localeMatcher?: string; - style?: string; - currency?: string; - currencyDisplay?: string; - useGrouping?: boolean; - minimumIntegerDigits?: number; - minimumFractionDigits?: number; - maximumFractionDigits?: number; - minimumSignificantDigits?: number; - maximumSignificantDigits?: number; - } - - interface ResolvedNumberFormatOptions { - locale: string; - numberingSystem: string; - style: string; - currency?: string; - currencyDisplay?: string; - minimumIntegerDigits: number; - minimumFractionDigits: number; - maximumFractionDigits: number; - minimumSignificantDigits?: number; - maximumSignificantDigits?: number; - useGrouping: boolean; - } - - interface NumberFormat { - format(value: number): string; - resolvedOptions(): ResolvedNumberFormatOptions; - } - var NumberFormat: { - new (locales?: string[], options?: NumberFormatOptions): NumberFormat; - new (locale?: string, options?: NumberFormatOptions): NumberFormat; - (locales?: string[], options?: NumberFormatOptions): NumberFormat; - (locale?: string, options?: NumberFormatOptions): NumberFormat; - supportedLocalesOf(locales: string[], options?: NumberFormatOptions): string[]; - supportedLocalesOf(locale: string, options?: NumberFormatOptions): string[]; - } - - interface DateTimeFormatOptions { - localeMatcher?: string; - weekday?: string; - era?: string; - year?: string; - month?: string; - day?: string; - hour?: string; - minute?: string; - second?: string; - timeZoneName?: string; - formatMatcher?: string; - hour12?: boolean; - timeZone?: string; - } - - interface ResolvedDateTimeFormatOptions { - locale: string; - calendar: string; - numberingSystem: string; - timeZone: string; - hour12?: boolean; - weekday?: string; - era?: string; - year?: string; - month?: string; - day?: string; - hour?: string; - minute?: string; - second?: string; - timeZoneName?: string; - } - - interface DateTimeFormat { - format(date?: Date | number): string; - resolvedOptions(): ResolvedDateTimeFormatOptions; - } - var DateTimeFormat: { - new (locales?: string[], options?: DateTimeFormatOptions): DateTimeFormat; - new (locale?: string, options?: DateTimeFormatOptions): DateTimeFormat; - (locales?: string[], options?: DateTimeFormatOptions): DateTimeFormat; - (locale?: string, options?: DateTimeFormatOptions): DateTimeFormat; - supportedLocalesOf(locales: string[], options?: DateTimeFormatOptions): string[]; - supportedLocalesOf(locale: string, options?: DateTimeFormatOptions): string[]; - } -} - -interface String { - /** - * Determines whether two strings are equivalent in the current locale. - * @param that String to compare to target string - * @param locales An array of locale strings that contain one or more language or locale tags. If you include more than one locale string, list them in descending order of priority so that the first entry is the preferred locale. If you omit this parameter, the default locale of the JavaScript runtime is used. This parameter must conform to BCP 47 standards; see the Intl.Collator object for details. - * @param options An object that contains one or more properties that specify comparison options. see the Intl.Collator object for details. - */ - localeCompare(that: string, locales: string[], options?: Intl.CollatorOptions): number; - - /** - * Determines whether two strings are equivalent in the current locale. - * @param that String to compare to target string - * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used. This parameter must conform to BCP 47 standards; see the Intl.Collator object for details. - * @param options An object that contains one or more properties that specify comparison options. see the Intl.Collator object for details. - */ - localeCompare(that: string, locale: string, options?: Intl.CollatorOptions): number; -} - -interface Number { - /** - * Converts a number to a string by using the current or specified locale. - * @param locales An array of locale strings that contain one or more language or locale tags. If you include more than one locale string, list them in descending order of priority so that the first entry is the preferred locale. If you omit this parameter, the default locale of the JavaScript runtime is used. - * @param options An object that contains one or more properties that specify comparison options. - */ - toLocaleString(locales?: string[], options?: Intl.NumberFormatOptions): string; - - /** - * Converts a number to a string by using the current or specified locale. - * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used. - * @param options An object that contains one or more properties that specify comparison options. - */ - toLocaleString(locale?: string, options?: Intl.NumberFormatOptions): string; -} - -interface Date { - /** - * Converts a date and time to a string by using the current or specified locale. - * @param locales An array of locale strings that contain one or more language or locale tags. If you include more than one locale string, list them in descending order of priority so that the first entry is the preferred locale. If you omit this parameter, the default locale of the JavaScript runtime is used. - * @param options An object that contains one or more properties that specify comparison options. - */ - toLocaleString(locales?: string[], options?: Intl.DateTimeFormatOptions): string; - /** - * Converts a date to a string by using the current or specified locale. - * @param locales An array of locale strings that contain one or more language or locale tags. If you include more than one locale string, list them in descending order of priority so that the first entry is the preferred locale. If you omit this parameter, the default locale of the JavaScript runtime is used. - * @param options An object that contains one or more properties that specify comparison options. - */ - toLocaleDateString(locales?: string[], options?: Intl.DateTimeFormatOptions): string; - - /** - * Converts a time to a string by using the current or specified locale. - * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used. - * @param options An object that contains one or more properties that specify comparison options. - */ - toLocaleTimeString(locale?: string[], options?: Intl.DateTimeFormatOptions): string; - - /** - * Converts a date and time to a string by using the current or specified locale. - * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used. - * @param options An object that contains one or more properties that specify comparison options. - */ - toLocaleString(locale?: string, options?: Intl.DateTimeFormatOptions): string; - - /** - * Converts a date to a string by using the current or specified locale. - * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used. - * @param options An object that contains one or more properties that specify comparison options. - */ - toLocaleDateString(locale?: string, options?: Intl.DateTimeFormatOptions): string; - - /** - * Converts a time to a string by using the current or specified locale. - * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used. - * @param options An object that contains one or more properties that specify comparison options. - */ - toLocaleTimeString(locale?: string, options?: Intl.DateTimeFormatOptions): string; -} - diff --git a/src/lib/scriptHost.d.ts b/src/lib/scripthost.d.ts similarity index 100% rename from src/lib/scriptHost.d.ts rename to src/lib/scripthost.d.ts diff --git a/src/lib/webworker.generated.d.ts b/src/lib/webworker.generated.d.ts index cd49a565f12..f5c77b8594d 100644 --- a/src/lib/webworker.generated.d.ts +++ b/src/lib/webworker.generated.d.ts @@ -8,15 +8,27 @@ interface EventInit { cancelable?: boolean; } +interface IDBIndexParameters { + multiEntry?: boolean; + unique?: boolean; +} + +interface IDBObjectStoreParameters { + autoIncrement?: boolean; + keyPath?: IDBKeyPath; +} + interface EventListener { (evt: Event): void; } interface AudioBuffer { - duration: number; - length: number; - numberOfChannels: number; - sampleRate: number; + readonly duration: number; + readonly length: number; + readonly numberOfChannels: number; + readonly sampleRate: number; + copyFromChannel(destination: Float32Array, channelNumber: number, startInChannel?: number): void; + copyToChannel(source: Float32Array, channelNumber: number, startInChannel?: number): void; getChannelData(channel: number): Float32Array; } @@ -26,8 +38,8 @@ declare var AudioBuffer: { } interface Blob { - size: number; - type: string; + readonly size: number; + readonly type: string; msClose(): void; msDetachStream(): any; slice(start?: number, end?: number, contentType?: string): Blob; @@ -39,9 +51,9 @@ declare var Blob: { } interface CloseEvent extends Event { - code: number; - reason: string; - wasClean: boolean; + readonly code: number; + readonly reason: string; + readonly wasClean: boolean; initCloseEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, wasCleanArg: boolean, codeArg: number, reasonArg: string): void; } @@ -58,6 +70,7 @@ interface Console { dir(value?: any, ...optionalParams: any[]): void; dirxml(value: any): void; error(message?: any, ...optionalParams: any[]): void; + exception(message?: string, ...optionalParams: any[]): void; group(groupTitle?: string): void; groupCollapsed(groupTitle?: string): void; groupEnd(): void; @@ -67,6 +80,7 @@ interface Console { profile(reportName?: string): void; profileEnd(): void; select(element: any): void; + table(...data: any[]): void; time(timerName?: string): void; timeEnd(timerName?: string): void; trace(message?: any, ...optionalParams: any[]): void; @@ -79,13 +93,13 @@ declare var Console: { } interface Coordinates { - accuracy: number; - altitude: number; - altitudeAccuracy: number; - heading: number; - latitude: number; - longitude: number; - speed: number; + readonly accuracy: number; + readonly altitude: number | null; + readonly altitudeAccuracy: number | null; + readonly heading: number | null; + readonly latitude: number; + readonly longitude: number; + readonly speed: number | null; } declare var Coordinates: { @@ -94,7 +108,7 @@ declare var Coordinates: { } interface DOMError { - name: string; + readonly name: string; toString(): string; } @@ -104,75 +118,75 @@ declare var DOMError: { } interface DOMException { - code: number; - message: string; - name: string; + readonly code: number; + readonly message: string; + readonly name: string; toString(): string; - ABORT_ERR: number; - DATA_CLONE_ERR: number; - DOMSTRING_SIZE_ERR: number; - HIERARCHY_REQUEST_ERR: number; - INDEX_SIZE_ERR: number; - INUSE_ATTRIBUTE_ERR: number; - INVALID_ACCESS_ERR: number; - INVALID_CHARACTER_ERR: number; - INVALID_MODIFICATION_ERR: number; - INVALID_NODE_TYPE_ERR: number; - INVALID_STATE_ERR: number; - NAMESPACE_ERR: number; - NETWORK_ERR: number; - NOT_FOUND_ERR: number; - NOT_SUPPORTED_ERR: number; - NO_DATA_ALLOWED_ERR: number; - NO_MODIFICATION_ALLOWED_ERR: number; - PARSE_ERR: number; - QUOTA_EXCEEDED_ERR: number; - SECURITY_ERR: number; - SERIALIZE_ERR: number; - SYNTAX_ERR: number; - TIMEOUT_ERR: number; - TYPE_MISMATCH_ERR: number; - URL_MISMATCH_ERR: number; - VALIDATION_ERR: number; - WRONG_DOCUMENT_ERR: number; + readonly ABORT_ERR: number; + readonly DATA_CLONE_ERR: number; + readonly DOMSTRING_SIZE_ERR: number; + readonly HIERARCHY_REQUEST_ERR: number; + readonly INDEX_SIZE_ERR: number; + readonly INUSE_ATTRIBUTE_ERR: number; + readonly INVALID_ACCESS_ERR: number; + readonly INVALID_CHARACTER_ERR: number; + readonly INVALID_MODIFICATION_ERR: number; + readonly INVALID_NODE_TYPE_ERR: number; + readonly INVALID_STATE_ERR: number; + readonly NAMESPACE_ERR: number; + readonly NETWORK_ERR: number; + readonly NOT_FOUND_ERR: number; + readonly NOT_SUPPORTED_ERR: number; + readonly NO_DATA_ALLOWED_ERR: number; + readonly NO_MODIFICATION_ALLOWED_ERR: number; + readonly PARSE_ERR: number; + readonly QUOTA_EXCEEDED_ERR: number; + readonly SECURITY_ERR: number; + readonly SERIALIZE_ERR: number; + readonly SYNTAX_ERR: number; + readonly TIMEOUT_ERR: number; + readonly TYPE_MISMATCH_ERR: number; + readonly URL_MISMATCH_ERR: number; + readonly VALIDATION_ERR: number; + readonly WRONG_DOCUMENT_ERR: number; } declare var DOMException: { prototype: DOMException; new(): DOMException; - ABORT_ERR: number; - DATA_CLONE_ERR: number; - DOMSTRING_SIZE_ERR: number; - HIERARCHY_REQUEST_ERR: number; - INDEX_SIZE_ERR: number; - INUSE_ATTRIBUTE_ERR: number; - INVALID_ACCESS_ERR: number; - INVALID_CHARACTER_ERR: number; - INVALID_MODIFICATION_ERR: number; - INVALID_NODE_TYPE_ERR: number; - INVALID_STATE_ERR: number; - NAMESPACE_ERR: number; - NETWORK_ERR: number; - NOT_FOUND_ERR: number; - NOT_SUPPORTED_ERR: number; - NO_DATA_ALLOWED_ERR: number; - NO_MODIFICATION_ALLOWED_ERR: number; - PARSE_ERR: number; - QUOTA_EXCEEDED_ERR: number; - SECURITY_ERR: number; - SERIALIZE_ERR: number; - SYNTAX_ERR: number; - TIMEOUT_ERR: number; - TYPE_MISMATCH_ERR: number; - URL_MISMATCH_ERR: number; - VALIDATION_ERR: number; - WRONG_DOCUMENT_ERR: number; + readonly ABORT_ERR: number; + readonly DATA_CLONE_ERR: number; + readonly DOMSTRING_SIZE_ERR: number; + readonly HIERARCHY_REQUEST_ERR: number; + readonly INDEX_SIZE_ERR: number; + readonly INUSE_ATTRIBUTE_ERR: number; + readonly INVALID_ACCESS_ERR: number; + readonly INVALID_CHARACTER_ERR: number; + readonly INVALID_MODIFICATION_ERR: number; + readonly INVALID_NODE_TYPE_ERR: number; + readonly INVALID_STATE_ERR: number; + readonly NAMESPACE_ERR: number; + readonly NETWORK_ERR: number; + readonly NOT_FOUND_ERR: number; + readonly NOT_SUPPORTED_ERR: number; + readonly NO_DATA_ALLOWED_ERR: number; + readonly NO_MODIFICATION_ALLOWED_ERR: number; + readonly PARSE_ERR: number; + readonly QUOTA_EXCEEDED_ERR: number; + readonly SECURITY_ERR: number; + readonly SERIALIZE_ERR: number; + readonly SYNTAX_ERR: number; + readonly TIMEOUT_ERR: number; + readonly TYPE_MISMATCH_ERR: number; + readonly URL_MISMATCH_ERR: number; + readonly VALIDATION_ERR: number; + readonly WRONG_DOCUMENT_ERR: number; } interface DOMStringList { - length: number; + readonly length: number; contains(str: string): boolean; - item(index: number): string; + item(index: number): string | null; [index: number]: string; } @@ -182,11 +196,11 @@ declare var DOMStringList: { } interface ErrorEvent extends Event { - colno: number; - error: any; - filename: string; - lineno: number; - message: string; + readonly colno: number; + readonly error: any; + readonly filename: string; + readonly lineno: number; + readonly message: string; initErrorEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, messageArg: string, filenameArg: string, linenoArg: number): void; } @@ -196,39 +210,39 @@ declare var ErrorEvent: { } interface Event { - bubbles: boolean; + readonly bubbles: boolean; cancelBubble: boolean; - cancelable: boolean; - currentTarget: EventTarget; - defaultPrevented: boolean; - eventPhase: number; - isTrusted: boolean; + readonly cancelable: boolean; + readonly currentTarget: EventTarget; + readonly defaultPrevented: boolean; + readonly eventPhase: number; + readonly isTrusted: boolean; returnValue: boolean; - srcElement: any; - target: EventTarget; - timeStamp: number; - type: string; + readonly srcElement: any; + readonly target: EventTarget; + readonly timeStamp: number; + readonly type: string; initEvent(eventTypeArg: string, canBubbleArg: boolean, cancelableArg: boolean): void; preventDefault(): void; stopImmediatePropagation(): void; stopPropagation(): void; - AT_TARGET: number; - BUBBLING_PHASE: number; - CAPTURING_PHASE: number; + readonly AT_TARGET: number; + readonly BUBBLING_PHASE: number; + readonly CAPTURING_PHASE: number; } declare var Event: { prototype: Event; new(type: string, eventInitDict?: EventInit): Event; - AT_TARGET: number; - BUBBLING_PHASE: number; - CAPTURING_PHASE: number; + readonly AT_TARGET: number; + readonly BUBBLING_PHASE: number; + readonly CAPTURING_PHASE: number; } interface EventTarget { - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; + addEventListener(type: string, listener?: EventListenerOrEventListenerObject, useCapture?: boolean): void; dispatchEvent(evt: Event): boolean; - removeEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; + removeEventListener(type: string, listener?: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var EventTarget: { @@ -237,8 +251,9 @@ declare var EventTarget: { } interface File extends Blob { - lastModifiedDate: any; - name: string; + readonly lastModifiedDate: any; + readonly name: string; + readonly webkitRelativePath: string; } declare var File: { @@ -247,7 +262,7 @@ declare var File: { } interface FileList { - length: number; + readonly length: number; item(index: number): File; [index: number]: File; } @@ -258,7 +273,7 @@ declare var FileList: { } interface FileReader extends EventTarget, MSBaseReader { - error: DOMError; + readonly error: DOMError; readAsArrayBuffer(blob: Blob): void; readAsBinaryString(blob: Blob): void; readAsDataURL(blob: Blob): void; @@ -272,31 +287,31 @@ declare var FileReader: { } interface IDBCursor { - direction: string; - key: any; - primaryKey: any; + readonly direction: string; + key: IDBKeyRange | IDBValidKey; + readonly primaryKey: any; source: IDBObjectStore | IDBIndex; advance(count: number): void; - continue(key?: any): void; + continue(key?: IDBKeyRange | IDBValidKey): void; delete(): IDBRequest; update(value: any): IDBRequest; - NEXT: string; - NEXT_NO_DUPLICATE: string; - PREV: string; - PREV_NO_DUPLICATE: string; + readonly NEXT: string; + readonly NEXT_NO_DUPLICATE: string; + readonly PREV: string; + readonly PREV_NO_DUPLICATE: string; } declare var IDBCursor: { prototype: IDBCursor; new(): IDBCursor; - NEXT: string; - NEXT_NO_DUPLICATE: string; - PREV: string; - PREV_NO_DUPLICATE: string; + readonly NEXT: string; + readonly NEXT_NO_DUPLICATE: string; + readonly PREV: string; + readonly PREV_NO_DUPLICATE: string; } interface IDBCursorWithValue extends IDBCursor { - value: any; + readonly value: any; } declare var IDBCursorWithValue: { @@ -305,15 +320,17 @@ declare var IDBCursorWithValue: { } interface IDBDatabase extends EventTarget { - name: string; - objectStoreNames: DOMStringList; + readonly name: string; + readonly objectStoreNames: DOMStringList; onabort: (ev: Event) => any; onerror: (ev: Event) => any; version: number; + onversionchange: (ev: IDBVersionChangeEvent) => any; close(): void; createObjectStore(name: string, optionalParameters?: IDBObjectStoreParameters): IDBObjectStore; 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: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; @@ -337,15 +354,15 @@ declare var IDBFactory: { interface IDBIndex { keyPath: string | string[]; - name: string; - objectStore: IDBObjectStore; - unique: boolean; + readonly name: string; + readonly objectStore: IDBObjectStore; + readonly unique: boolean; multiEntry: boolean; - count(key?: any): IDBRequest; - get(key: any): IDBRequest; - getKey(key: any): IDBRequest; - openCursor(range?: IDBKeyRange, direction?: string): IDBRequest; - openKeyCursor(range?: IDBKeyRange, direction?: string): IDBRequest; + count(key?: IDBKeyRange | IDBValidKey): IDBRequest; + get(key: IDBKeyRange | IDBValidKey): IDBRequest; + getKey(key: IDBKeyRange | IDBValidKey): IDBRequest; + openCursor(range?: IDBKeyRange | IDBValidKey, direction?: string): IDBRequest; + openKeyCursor(range?: IDBKeyRange | IDBValidKey, direction?: string): IDBRequest; } declare var IDBIndex: { @@ -354,37 +371,37 @@ declare var IDBIndex: { } interface IDBKeyRange { - lower: any; - lowerOpen: boolean; - upper: any; - upperOpen: boolean; + readonly lower: any; + readonly lowerOpen: boolean; + readonly upper: any; + readonly upperOpen: boolean; } declare var IDBKeyRange: { prototype: IDBKeyRange; new(): IDBKeyRange; bound(lower: any, upper: any, lowerOpen?: boolean, upperOpen?: boolean): IDBKeyRange; - lowerBound(bound: any, open?: boolean): IDBKeyRange; + lowerBound(lower: any, open?: boolean): IDBKeyRange; only(value: any): IDBKeyRange; - upperBound(bound: any, open?: boolean): IDBKeyRange; + upperBound(upper: any, open?: boolean): IDBKeyRange; } interface IDBObjectStore { - indexNames: DOMStringList; + readonly indexNames: DOMStringList; keyPath: string | string[]; - name: string; - transaction: IDBTransaction; + readonly name: string; + readonly transaction: IDBTransaction; autoIncrement: boolean; - add(value: any, key?: any): IDBRequest; + add(value: any, key?: IDBKeyRange | IDBValidKey): IDBRequest; clear(): IDBRequest; - count(key?: any): IDBRequest; + count(key?: IDBKeyRange | IDBValidKey): IDBRequest; createIndex(name: string, keyPath: string | string[], optionalParameters?: IDBIndexParameters): IDBIndex; - delete(key: any): IDBRequest; + delete(key: IDBKeyRange | IDBValidKey): IDBRequest; deleteIndex(indexName: string): void; get(key: any): IDBRequest; index(name: string): IDBIndex; - openCursor(range?: any, direction?: string): IDBRequest; - put(value: any, key?: any): IDBRequest; + openCursor(range?: IDBKeyRange | IDBValidKey, direction?: string): IDBRequest; + put(value: any, key?: IDBKeyRange | IDBValidKey): IDBRequest; } declare var IDBObjectStore: { @@ -408,13 +425,13 @@ declare var IDBOpenDBRequest: { } interface IDBRequest extends EventTarget { - error: DOMError; + readonly error: DOMError; onerror: (ev: Event) => any; onsuccess: (ev: Event) => any; - readyState: string; - result: any; + readonly readyState: string; + readonly result: any; source: IDBObjectStore | IDBIndex | IDBCursor; - transaction: IDBTransaction; + 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: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; @@ -426,17 +443,17 @@ declare var IDBRequest: { } interface IDBTransaction extends EventTarget { - db: IDBDatabase; - error: DOMError; - mode: string; + readonly db: IDBDatabase; + readonly error: DOMError; + readonly mode: string; onabort: (ev: Event) => any; oncomplete: (ev: Event) => any; onerror: (ev: Event) => any; abort(): void; objectStore(name: string): IDBObjectStore; - READ_ONLY: string; - READ_WRITE: string; - VERSION_CHANGE: string; + 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; @@ -446,14 +463,14 @@ interface IDBTransaction extends EventTarget { declare var IDBTransaction: { prototype: IDBTransaction; new(): IDBTransaction; - READ_ONLY: string; - READ_WRITE: string; - VERSION_CHANGE: string; + readonly READ_ONLY: string; + readonly READ_WRITE: string; + readonly VERSION_CHANGE: string; } interface IDBVersionChangeEvent extends Event { - newVersion: number; - oldVersion: number; + readonly newVersion: number | null; + readonly oldVersion: number; } declare var IDBVersionChangeEvent: { @@ -463,8 +480,8 @@ declare var IDBVersionChangeEvent: { interface ImageData { data: Uint8ClampedArray; - height: number; - width: number; + readonly height: number; + readonly width: number; } declare var ImageData: { @@ -483,29 +500,29 @@ interface MSApp { execAsyncAtPriority(asynchronousCallback: MSExecAtPriorityFunctionCallback, priority: string, ...args: any[]): void; execAtPriority(synchronousCallback: MSExecAtPriorityFunctionCallback, priority: string, ...args: any[]): any; getCurrentPriority(): string; - getHtmlPrintDocumentSourceAsync(htmlDoc: any): any; + getHtmlPrintDocumentSourceAsync(htmlDoc: any): PromiseLike; getViewId(view: any): any; isTaskScheduledAtPriorityOrHigher(priority: string): boolean; pageHandlesAllApplicationActivations(enabled: boolean): void; suppressSubdownloadCredentialPrompts(suppress: boolean): void; terminateApp(exceptionObject: any): void; - CURRENT: string; - HIGH: string; - IDLE: string; - NORMAL: string; + readonly CURRENT: string; + readonly HIGH: string; + readonly IDLE: string; + readonly NORMAL: string; } declare var MSApp: MSApp; interface MSAppAsyncOperation extends EventTarget { - error: DOMError; + readonly error: DOMError; oncomplete: (ev: Event) => any; onerror: (ev: Event) => any; - readyState: number; - result: any; + readonly readyState: number; + readonly result: any; start(): void; - COMPLETED: number; - ERROR: number; - STARTED: number; + 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: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; @@ -514,9 +531,9 @@ interface MSAppAsyncOperation extends EventTarget { declare var MSAppAsyncOperation: { prototype: MSAppAsyncOperation; new(): MSAppAsyncOperation; - COMPLETED: number; - ERROR: number; - STARTED: number; + readonly COMPLETED: number; + readonly ERROR: number; + readonly STARTED: number; } interface MSBlobBuilder { @@ -530,7 +547,7 @@ declare var MSBlobBuilder: { } interface MSStream { - type: string; + readonly type: string; msClose(): void; msDetachStream(): any; } @@ -541,7 +558,7 @@ declare var MSStream: { } interface MSStreamReader extends EventTarget, MSBaseReader { - error: DOMError; + readonly error: DOMError; readAsArrayBuffer(stream: MSStream, size?: number): void; readAsBinaryString(stream: MSStream, size?: number): void; readAsBlob(stream: MSStream, size?: number): void; @@ -556,8 +573,8 @@ declare var MSStreamReader: { } interface MediaQueryList { - matches: boolean; - media: string; + readonly matches: boolean; + readonly media: string; addListener(listener: MediaQueryListListener): void; removeListener(listener: MediaQueryListListener): void; } @@ -568,8 +585,8 @@ declare var MediaQueryList: { } interface MessageChannel { - port1: MessagePort; - port2: MessagePort; + readonly port1: MessagePort; + readonly port2: MessagePort; } declare var MessageChannel: { @@ -578,10 +595,10 @@ declare var MessageChannel: { } interface MessageEvent extends Event { - data: any; - origin: string; - ports: any; - source: any; + readonly data: any; + readonly origin: string; + readonly ports: any; + readonly source: any; initMessageEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, dataArg: any, originArg: string, lastEventIdArg: string, sourceArg: any): void; } @@ -605,8 +622,8 @@ declare var MessagePort: { } interface Position { - coords: Coordinates; - timestamp: number; + readonly coords: Coordinates; + readonly timestamp: number; } declare var Position: { @@ -615,26 +632,26 @@ declare var Position: { } interface PositionError { - code: number; - message: string; + readonly code: number; + readonly message: string; toString(): string; - PERMISSION_DENIED: number; - POSITION_UNAVAILABLE: number; - TIMEOUT: number; + readonly PERMISSION_DENIED: number; + readonly POSITION_UNAVAILABLE: number; + readonly TIMEOUT: number; } declare var PositionError: { prototype: PositionError; new(): PositionError; - PERMISSION_DENIED: number; - POSITION_UNAVAILABLE: number; - TIMEOUT: number; + readonly PERMISSION_DENIED: number; + readonly POSITION_UNAVAILABLE: number; + readonly TIMEOUT: number; } interface ProgressEvent extends Event { - lengthComputable: boolean; - loaded: number; - total: number; + readonly lengthComputable: boolean; + readonly loaded: number; + readonly total: number; initProgressEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, lengthComputableArg: boolean, loadedArg: number, totalArg: number): void; } @@ -645,21 +662,21 @@ declare var ProgressEvent: { interface WebSocket extends EventTarget { binaryType: string; - bufferedAmount: number; - extensions: string; + readonly bufferedAmount: number; + readonly extensions: string; onclose: (ev: CloseEvent) => any; onerror: (ev: Event) => any; onmessage: (ev: MessageEvent) => any; onopen: (ev: Event) => any; - protocol: string; - readyState: number; - url: string; + readonly protocol: string; + readonly readyState: number; + readonly url: string; close(code?: number, reason?: string): void; send(data: any): void; - CLOSED: number; - CLOSING: number; - CONNECTING: number; - OPEN: number; + readonly CLOSED: number; + 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; @@ -670,10 +687,10 @@ interface WebSocket extends EventTarget { declare var WebSocket: { prototype: WebSocket; new(url: string, protocols?: string | string[]): WebSocket; - CLOSED: number; - CLOSING: number; - CONNECTING: number; - OPEN: number; + readonly CLOSED: number; + readonly CLOSING: number; + readonly CONNECTING: number; + readonly OPEN: number; } interface Worker extends EventTarget, AbstractWorker { @@ -693,31 +710,30 @@ declare var Worker: { interface XMLHttpRequest extends EventTarget, XMLHttpRequestEventTarget { msCaching: string; onreadystatechange: (ev: ProgressEvent) => any; - readyState: number; - response: any; - responseBody: any; - responseText: string; + readonly readyState: number; + readonly response: any; + readonly responseText: string; responseType: string; - responseXML: any; - status: number; - statusText: string; + readonly responseXML: any; + readonly status: number; + readonly statusText: string; timeout: number; - upload: XMLHttpRequestUpload; + readonly upload: XMLHttpRequestUpload; withCredentials: boolean; abort(): void; getAllResponseHeaders(): string; - getResponseHeader(header: string): string; + getResponseHeader(header: string): string | null; msCachingEnabled(): boolean; open(method: string, url: string, async?: boolean, user?: string, password?: string): void; overrideMimeType(mime: string): void; send(data?: string): void; send(data?: any): void; setRequestHeader(header: string, value: string): void; - DONE: number; - HEADERS_RECEIVED: number; - LOADING: number; - OPENED: number; - UNSENT: number; + readonly DONE: number; + readonly HEADERS_RECEIVED: number; + 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; @@ -732,11 +748,11 @@ interface XMLHttpRequest extends EventTarget, XMLHttpRequestEventTarget { declare var XMLHttpRequest: { prototype: XMLHttpRequest; new(): XMLHttpRequest; - DONE: number; - HEADERS_RECEIVED: number; - LOADING: number; - OPENED: number; - UNSENT: number; + readonly DONE: number; + readonly HEADERS_RECEIVED: number; + readonly LOADING: number; + readonly OPENED: number; + readonly UNSENT: number; create(): XMLHttpRequest; } @@ -762,12 +778,12 @@ interface MSBaseReader { onloadend: (ev: ProgressEvent) => any; onloadstart: (ev: Event) => any; onprogress: (ev: ProgressEvent) => any; - readyState: number; - result: any; + readonly readyState: number; + readonly result: any; abort(): void; - DONE: number; - EMPTY: number; - LOADING: number; + 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; @@ -778,18 +794,18 @@ interface MSBaseReader { } interface NavigatorID { - appName: string; - appVersion: string; - platform: string; - product: string; - productSub: string; - userAgent: string; - vendor: string; - vendorSub: string; + readonly appName: string; + readonly appVersion: string; + readonly platform: string; + readonly product: string; + readonly productSub: string; + readonly userAgent: string; + readonly vendor: string; + readonly vendorSub: string; } interface NavigatorOnLine { - onLine: boolean; + readonly onLine: boolean; } interface WindowBase64 { @@ -798,7 +814,7 @@ interface WindowBase64 { } interface WindowConsole { - console: Console; + readonly console: Console; } interface XMLHttpRequestEventTarget { @@ -832,9 +848,9 @@ declare var FileReaderSync: { } interface WorkerGlobalScope extends EventTarget, WorkerUtils, DedicatedWorkerGlobalScope, WindowConsole { - location: WorkerLocation; + readonly location: WorkerLocation; onerror: (ev: Event) => any; - self: WorkerGlobalScope; + readonly self: WorkerGlobalScope; close(): void; msWriteProfilerMark(profilerMarkName: string): void; toString(): string; @@ -849,14 +865,14 @@ declare var WorkerGlobalScope: { } interface WorkerLocation { - hash: string; - host: string; - hostname: string; - href: string; - pathname: string; - port: string; - protocol: string; - search: string; + readonly hash: string; + readonly host: string; + readonly hostname: string; + readonly href: string; + readonly pathname: string; + readonly port: string; + readonly protocol: string; + readonly search: string; toString(): string; } @@ -882,9 +898,9 @@ interface DedicatedWorkerGlobalScope { } interface WorkerUtils extends Object, WindowBase64 { - indexedDB: IDBFactory; - msIndexedDB: IDBFactory; - navigator: WorkerNavigator; + readonly indexedDB: IDBFactory; + readonly msIndexedDB: IDBFactory; + readonly navigator: WorkerNavigator; clearImmediate(handle: number): void; clearInterval(handle: number): void; clearTimeout(handle: number): void; @@ -894,16 +910,6 @@ interface WorkerUtils extends Object, WindowBase64 { setTimeout(handler: any, timeout?: any, ...args: any[]): number; } -interface IDBObjectStoreParameters { - keyPath?: string | string[]; - autoIncrement?: boolean; -} - -interface IDBIndexParameters { - unique?: boolean; - multiEntry?: boolean; -} - interface BlobPropertyBag { type?: string; endings?: string; @@ -933,6 +939,9 @@ interface ProgressEventInit extends EventInit { total?: number; } +interface IDBArrayKey extends Array { +} + declare type EventListenerOrEventListenerObject = EventListener | EventListenerObject; interface ErrorEventHandler { @@ -971,9 +980,9 @@ declare var self: WorkerGlobalScope; declare function close(): void; declare function msWriteProfilerMark(profilerMarkName: string): void; declare function toString(): string; -declare function addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +declare function addEventListener(type: string, listener?: EventListenerOrEventListenerObject, useCapture?: boolean): void; declare function dispatchEvent(evt: Event): boolean; -declare function removeEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +declare function removeEventListener(type: string, listener?: EventListenerOrEventListenerObject, useCapture?: boolean): void; declare var indexedDB: IDBFactory; declare var msIndexedDB: IDBFactory; declare var navigator: WorkerNavigator; @@ -991,4 +1000,6 @@ 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: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; \ No newline at end of file +declare function addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +type IDBKeyPath = string; +type IDBValidKey = number | string | Date | IDBArrayKey; \ No newline at end of file diff --git a/src/server/client.ts b/src/server/client.ts index 8731c52cc72..caeab6e3f3c 100644 --- a/src/server/client.ts +++ b/src/server/client.ts @@ -120,8 +120,8 @@ namespace ts.server { return response; } - openFile(fileName: string, content?: string): void { - var args: protocol.OpenRequestArgs = { file: fileName, fileContent: content }; + openFile(fileName: string, content?: string, scriptKindName?: "TS" | "JS" | "TSX" | "JSX"): void { + var args: protocol.OpenRequestArgs = { file: fileName, fileContent: content, scriptKindName }; this.processRequest(CommandNames.Open, args); } @@ -568,6 +568,10 @@ namespace ts.server { throw new Error("Not Implemented Yet."); } + isValidBraceCompletionAtPostion(fileName: string, position: number, openingBrace: number): boolean { + throw new Error("Not Implemented Yet."); + } + getBraceMatchingAtPosition(fileName: string, position: number): TextSpan[] { var lineOffset = this.positionToOneBasedLineOffset(fileName, position); var args: protocol.FileLocationRequestArgs = { @@ -613,7 +617,7 @@ namespace ts.server { throw new Error("SourceFile objects are not serializable through the server protocol."); } - getSourceFile(fileName: string): SourceFile { + getNonBoundSourceFile(fileName: string): SourceFile { throw new Error("SourceFile objects are not serializable through the server protocol."); } diff --git a/src/server/editorServices.ts b/src/server/editorServices.ts index 71907735b91..02fe374471b 100644 --- a/src/server/editorServices.ts +++ b/src/server/editorServices.ts @@ -34,6 +34,7 @@ namespace ts.server { fileWatcher: FileWatcher; formatCodeOptions = ts.clone(CompilerService.defaultFormatCodeOptions); path: Path; + scriptKind: ScriptKind; constructor(private host: ServerHost, public fileName: string, public content: string, public isOpen = false) { this.path = toPath(fileName, host.getCurrentDirectory(), createGetCanonicalFileName(host.useCaseSensitiveFileNames)); @@ -81,8 +82,14 @@ namespace ts.server { } } - interface TimestampedResolvedModule extends ResolvedModuleWithFailedLookupLocations { - lastCheckTime: number; + interface Timestamped { + lastCheckTime?: number; + } + + interface TimestampedResolvedModule extends ResolvedModuleWithFailedLookupLocations, Timestamped { + } + + interface TimestampedResolvedTypeReferenceDirective extends ResolvedTypeReferenceDirectiveWithFailedLookupLocations, Timestamped { } export class LSHost implements ts.LanguageServiceHost { @@ -90,13 +97,16 @@ namespace ts.server { compilationSettings: ts.CompilerOptions; filenameToScript: ts.FileMap; roots: ScriptInfo[] = []; + private resolvedModuleNames: ts.FileMap>; + private resolvedTypeReferenceDirectives: ts.FileMap>; private moduleResolutionHost: ts.ModuleResolutionHost; private getCanonicalFileName: (fileName: string) => string; constructor(public host: ServerHost, public project: Project) { this.getCanonicalFileName = createGetCanonicalFileName(host.useCaseSensitiveFileNames); this.resolvedModuleNames = createFileMap>(); + this.resolvedTypeReferenceDirectives = createFileMap>(); this.filenameToScript = createFileMap(); this.moduleResolutionHost = { fileExists: fileName => this.fileExists(fileName), @@ -105,46 +115,51 @@ namespace ts.server { }; } - resolveModuleNames(moduleNames: string[], containingFile: string): ResolvedModule[] { + private resolveNamesWithLocalCache( + names: string[], + containingFile: string, + cache: ts.FileMap>, + loader: (name: string, containingFile: string, options: CompilerOptions, host: ModuleResolutionHost) => T, + getResult: (s: T) => R): R[] { + const path = toPath(containingFile, this.host.getCurrentDirectory(), this.getCanonicalFileName); - const currentResolutionsInFile = this.resolvedModuleNames.get(path); - - const newResolutions: Map = {}; - const resolvedModules: ResolvedModule[] = []; + const currentResolutionsInFile = cache.get(path); + const newResolutions: Map = {}; + const resolvedModules: R[] = []; const compilerOptions = this.getCompilationSettings(); - for (const moduleName of moduleNames) { + for (const name of names) { // check if this is a duplicate entry in the list - let resolution = lookUp(newResolutions, moduleName); + let resolution = lookUp(newResolutions, name); if (!resolution) { - const existingResolution = currentResolutionsInFile && ts.lookUp(currentResolutionsInFile, moduleName); + const existingResolution = currentResolutionsInFile && ts.lookUp(currentResolutionsInFile, name); if (moduleResolutionIsValid(existingResolution)) { - // ok, it is safe to use existing module resolution results + // ok, it is safe to use existing name resolution results resolution = existingResolution; } else { - resolution = resolveModuleName(moduleName, containingFile, compilerOptions, this.moduleResolutionHost); + resolution = loader(name, containingFile, compilerOptions, this.moduleResolutionHost); resolution.lastCheckTime = Date.now(); - newResolutions[moduleName] = resolution; + newResolutions[name] = resolution; } } ts.Debug.assert(resolution !== undefined); - resolvedModules.push(resolution.resolvedModule); + resolvedModules.push(getResult(resolution)); } // replace old results with a new one - this.resolvedModuleNames.set(path, newResolutions); + cache.set(path, newResolutions); return resolvedModules; - function moduleResolutionIsValid(resolution: TimestampedResolvedModule): boolean { + function moduleResolutionIsValid(resolution: T): boolean { if (!resolution) { return false; } - if (resolution.resolvedModule) { + if (getResult(resolution)) { // TODO: consider checking failedLookupLocations // TODO: use lastCheckTime to track expiration for module name resolution return true; @@ -156,6 +171,14 @@ namespace ts.server { } } + resolveTypeReferenceDirectives(typeDirectiveNames: string[], containingFile: string): ResolvedTypeReferenceDirective[] { + return this.resolveNamesWithLocalCache(typeDirectiveNames, containingFile, this.resolvedTypeReferenceDirectives, resolveTypeReferenceDirective, m => m.resolvedTypeReferenceDirective); + } + + resolveModuleNames(moduleNames: string[], containingFile: string): ResolvedModule[] { + return this.resolveNamesWithLocalCache(moduleNames, containingFile, this.resolvedModuleNames, resolveModuleName, m => m.resolvedModule); + } + getDefaultLibFileName() { const nodeModuleBinDir = ts.getDirectoryPath(ts.normalizePath(this.host.getExecutingFilePath())); return ts.combinePaths(nodeModuleBinDir, ts.getDefaultLibFileName(this.compilationSettings)); @@ -172,6 +195,7 @@ namespace ts.server { this.compilationSettings = opt; // conservatively assume that changing compiler options might affect module resolution strategy this.resolvedModuleNames.clear(); + this.resolvedTypeReferenceDirectives.clear(); } lineAffectsRefs(filename: string, line: number) { @@ -192,8 +216,16 @@ namespace ts.server { return this.roots.map(root => root.fileName); } - getScriptKind() { - return ScriptKind.Unknown; + getScriptKind(fileName: string) { + const info = this.getScriptInfo(fileName); + if (!info) { + return undefined; + } + + if (!info.scriptKind) { + info.scriptKind = getScriptKindFromFileName(fileName); + } + return info.scriptKind; } getScriptVersion(filename: string) { @@ -212,6 +244,7 @@ namespace ts.server { if (!info.isOpen) { this.filenameToScript.remove(info.path); this.resolvedModuleNames.remove(info.path); + this.resolvedTypeReferenceDirectives.remove(info.path); } } @@ -239,6 +272,7 @@ namespace ts.server { this.filenameToScript.remove(info.path); this.roots = copyListRemovingItem(info, this.roots); this.resolvedModuleNames.remove(info.path); + this.resolvedTypeReferenceDirectives.remove(info.path); } } @@ -464,6 +498,14 @@ namespace ts.server { return copiedList; } + /** + * This helper funciton processes a list of projects and return the concatenated, sortd and deduplicated output of processing each project. + */ + export function combineProjectOutput(projects: Project[], action: (project: Project) => T[], comparer?: (a: T, b: T) => number, areEqual?: (a: T, b: T) => boolean) { + const result = projects.reduce((previous, current) => concatenate(previous, action(current)), []).sort(comparer); + return projects.length > 1 ? deduplicate(result, areEqual) : result; + } + export interface ProjectServiceEventHandler { (eventName: string, project: Project, fileName: string): void; } @@ -877,6 +919,7 @@ namespace ts.server { configuredProject.updateGraph(); if (configuredProject.getSourceFile(info)) { info.defaultProject = configuredProject; + referencingProjects.push(configuredProject); } } return referencingProjects; @@ -988,7 +1031,7 @@ namespace ts.server { * @param filename is absolute pathname * @param fileContent is a known version of the file content that is more up to date than the one on disk */ - openFile(fileName: string, openedByClient: boolean, fileContent?: string) { + openFile(fileName: string, openedByClient: boolean, fileContent?: string, scriptKind?: ScriptKind) { fileName = ts.normalizePath(fileName); let info = ts.lookUp(this.filenameToScriptInfo, fileName); if (!info) { @@ -1003,12 +1046,11 @@ namespace ts.server { } if (content !== undefined) { info = new ScriptInfo(this.host, fileName, content, openedByClient); + info.scriptKind = scriptKind; info.setFormatOptions(this.getFormatCodeOptions()); this.filenameToScriptInfo[fileName] = info; if (!info.isOpen) { - info.fileWatcher = this.host.watchFile( - toPath(fileName, fileName, createGetCanonicalFileName(sys.useCaseSensitiveFileNames)), - _ => { this.watchedFileChanged(fileName); }); + info.fileWatcher = this.host.watchFile(fileName, _ => { this.watchedFileChanged(fileName); }); } } } @@ -1054,9 +1096,9 @@ namespace ts.server { * @param filename is absolute pathname * @param fileContent is a known version of the file content that is more up to date than the one on disk */ - openClientFile(fileName: string, fileContent?: string) { + openClientFile(fileName: string, fileContent?: string, scriptKind?: ScriptKind) { this.openOrUpdateConfiguredProjectForFile(fileName); - const info = this.openFile(fileName, /*openedByClient*/ true, fileContent); + const info = this.openFile(fileName, /*openedByClient*/ true, fileContent, scriptKind); this.addOpenFile(info); this.printProjects(); return info; @@ -1227,9 +1269,7 @@ namespace ts.server { } } project.finishGraph(); - project.projectFileWatcher = this.host.watchFile( - toPath(configFilename, configFilename, createGetCanonicalFileName(sys.useCaseSensitiveFileNames)), - _ => this.watchedProjectConfigFileChanged(project)); + project.projectFileWatcher = this.host.watchFile(configFilename, _ => this.watchedProjectConfigFileChanged(project)); this.log("Add recursive watcher for: " + ts.getDirectoryPath(configFilename)); project.directoryWatcher = this.host.watchDirectory( ts.getDirectoryPath(configFilename), @@ -1317,6 +1357,7 @@ namespace ts.server { else { const defaultOpts = ts.getDefaultCompilerOptions(); defaultOpts.allowNonTsExtensions = true; + defaultOpts.allowJs = true; this.setCompilerOptions(defaultOpts); } this.languageService = ts.createLanguageService(this.host, this.documentRegistry); @@ -1329,7 +1370,7 @@ namespace ts.server { } isExternalModule(filename: string): boolean { - const sourceFile = this.languageService.getSourceFile(filename); + const sourceFile = this.languageService.getNonBoundSourceFile(filename); return ts.isExternalModule(sourceFile); } @@ -1644,7 +1685,12 @@ namespace ts.server { } reloadFromFile(filename: string, cb?: () => any) { - const content = this.host.readFile(filename); + let content = this.host.readFile(filename); + // If the file doesn't exist or cannot be read, we should + // wipe out its cached content on the server to avoid side effects. + if (!content) { + content = ""; + } this.reload(content); if (cb) cb(); diff --git a/src/server/protocol.d.ts b/src/server/protocol.d.ts index 5ed227ebaa7..10cebb2ddb7 100644 --- a/src/server/protocol.d.ts +++ b/src/server/protocol.d.ts @@ -518,6 +518,11 @@ declare namespace ts.server.protocol { * Then the known content will be used upon opening instead of the disk copy */ fileContent?: string; + /** + * Used to specify the script kind of the file explicitly. It could be one of the following: + * "TS", "JS", "TSX", "JSX" + */ + scriptKindName?: "TS" | "JS" | "TSX" | "JSX"; } /** diff --git a/src/server/server.ts b/src/server/server.ts index d9f078ac0eb..ec83f8cc716 100644 --- a/src/server/server.ts +++ b/src/server/server.ts @@ -1,7 +1,7 @@ /// /// // used in fs.writeSync -/* tslint:disable:no-null */ +/* tslint:disable:no-null-keyword */ namespace ts.server { const readline: NodeJS.ReadLine = require("readline"); @@ -153,6 +153,98 @@ namespace ts.server { // This places log file in the directory containing editorServices.js // TODO: check that this location is writable + // average async stat takes about 30 microseconds + // set chunk size to do 30 files in < 1 millisecond + function createPollingWatchedFileSet(interval = 2500, chunkSize = 30) { + let watchedFiles: WatchedFile[] = []; + let nextFileToCheck = 0; + let watchTimer: any; + + function getModifiedTime(fileName: string): Date { + return fs.statSync(fileName).mtime; + } + + function poll(checkedIndex: number) { + const watchedFile = watchedFiles[checkedIndex]; + if (!watchedFile) { + return; + } + + fs.stat(watchedFile.fileName, (err: any, stats: any) => { + if (err) { + watchedFile.callback(watchedFile.fileName); + } + else if (watchedFile.mtime.getTime() !== stats.mtime.getTime()) { + watchedFile.mtime = getModifiedTime(watchedFile.fileName); + watchedFile.callback(watchedFile.fileName, watchedFile.mtime.getTime() === 0); + } + }); + } + + // this implementation uses polling and + // stat due to inconsistencies of fs.watch + // and efficiency of stat on modern filesystems + function startWatchTimer() { + watchTimer = setInterval(() => { + let count = 0; + let nextToCheck = nextFileToCheck; + let firstCheck = -1; + while ((count < chunkSize) && (nextToCheck !== firstCheck)) { + poll(nextToCheck); + if (firstCheck < 0) { + firstCheck = nextToCheck; + } + nextToCheck++; + if (nextToCheck === watchedFiles.length) { + nextToCheck = 0; + } + count++; + } + nextFileToCheck = nextToCheck; + }, interval); + } + + function addFile(fileName: string, callback: FileWatcherCallback): WatchedFile { + const file: WatchedFile = { + fileName, + callback, + mtime: getModifiedTime(fileName) + }; + + watchedFiles.push(file); + if (watchedFiles.length === 1) { + startWatchTimer(); + } + return file; + } + + function removeFile(file: WatchedFile) { + watchedFiles = copyListRemovingItem(file, watchedFiles); + } + + return { + getModifiedTime: getModifiedTime, + poll: poll, + startWatchTimer: startWatchTimer, + addFile: addFile, + removeFile: removeFile + }; + } + + // REVIEW: for now this implementation uses polling. + // The advantage of polling is that it works reliably + // on all os and with network mounted files. + // For 90 referenced files, the average time to detect + // changes is 2*msInterval (by default 5 seconds). + // The overhead of this is .04 percent (1/2500) with + // average pause of < 1 millisecond (and max + // pause less than 1.5 milliseconds); question is + // do we anticipate reference sets in the 100s and + // do we care about waiting 10-20 seconds to detect + // changes for large reference sets? If so, do we want + // to increase the chunk size or decrease the interval + // time dynamically to match the large reference set? + const pollingWatchedFileSet = createPollingWatchedFileSet(); const logger = createLoggerFromEnv(); const pending: string[] = []; @@ -176,6 +268,12 @@ namespace ts.server { // Override sys.write because fs.writeSync is not reliable on Node 4 ts.sys.write = (s: string) => writeMessage(s); + ts.sys.watchFile = (fileName, callback) => { + const watchedFile = pollingWatchedFileSet.addFile(fileName, callback); + return { + close: () => pollingWatchedFileSet.removeFile(watchedFile) + }; + }; const ioSession = new IOSession(ts.sys, logger); process.on("uncaughtException", function(err: Error) { diff --git a/src/server/session.ts b/src/server/session.ts index f0975a3f947..e043fff2246 100644 --- a/src/server/session.ts +++ b/src/server/session.ts @@ -141,8 +141,8 @@ namespace ts.server { ) { this.projectService = new ProjectService(host, logger, (eventName, project, fileName) => { - this.handleEvent(eventName, project, fileName); - }); + this.handleEvent(eventName, project, fileName); + }); } private handleEvent(eventName: string, project: Project, fileName: string) { @@ -412,14 +412,17 @@ namespace ts.server { private getRenameLocations(line: number, offset: number, fileName: string, findInComments: boolean, findInStrings: boolean): protocol.RenameResponseBody { const file = ts.normalizePath(fileName); - const project = this.projectService.getProjectForFile(file); - if (!project) { + const info = this.projectService.getScriptInfo(file); + const projects = this.projectService.findReferencingProjects(info); + if (!projects.length) { throw Errors.NoProject; } - const compilerService = project.compilerService; - const position = compilerService.host.lineOffsetToPosition(file, line, offset); - const renameInfo = compilerService.languageService.getRenameInfo(file, position); + const defaultProject = projects[0]; + // The rename info should be the same for every project + const defaultProjectCompilerService = defaultProject.compilerService; + const position = defaultProjectCompilerService.host.lineOffsetToPosition(file, line, offset); + const renameInfo = defaultProjectCompilerService.languageService.getRenameInfo(file, position); if (!renameInfo) { return undefined; } @@ -431,16 +434,43 @@ namespace ts.server { }; } - const renameLocations = compilerService.languageService.findRenameLocations(file, position, findInStrings, findInComments); - if (!renameLocations) { - return undefined; - } + const fileSpans = combineProjectOutput( + projects, + (project: Project) => { + const compilerService = project.compilerService; + const renameLocations = compilerService.languageService.findRenameLocations(file, position, findInStrings, findInComments); + if (!renameLocations) { + return []; + } - const bakedRenameLocs = renameLocations.map(location => ({ - file: location.fileName, - start: compilerService.host.positionToLineOffset(location.fileName, location.textSpan.start), - end: compilerService.host.positionToLineOffset(location.fileName, ts.textSpanEnd(location.textSpan)), - })).sort((a, b) => { + return renameLocations.map(location => ({ + file: location.fileName, + start: compilerService.host.positionToLineOffset(location.fileName, location.textSpan.start), + end: compilerService.host.positionToLineOffset(location.fileName, ts.textSpanEnd(location.textSpan)), + })); + }, + compareRenameLocation, + (a, b) => a.file === b.file && a.start.line === b.start.line && a.start.offset === b.start.offset + ); + const locs = fileSpans.reduce((accum, cur) => { + let curFileAccum: protocol.SpanGroup; + if (accum.length > 0) { + curFileAccum = accum[accum.length - 1]; + if (curFileAccum.file !== cur.file) { + curFileAccum = undefined; + } + } + if (!curFileAccum) { + curFileAccum = { file: cur.file, locs: [] }; + accum.push(curFileAccum); + } + curFileAccum.locs.push({ start: cur.start, end: cur.end }); + return accum; + }, []); + + return { info: renameInfo, locs }; + + function compareRenameLocation(a: protocol.FileSpan, b: protocol.FileSpan) { if (a.file < b.file) { return -1; } @@ -459,79 +489,79 @@ namespace ts.server { return b.start.offset - a.start.offset; } } - }).reduce((accum: protocol.SpanGroup[], cur: protocol.FileSpan) => { - let curFileAccum: protocol.SpanGroup; - if (accum.length > 0) { - curFileAccum = accum[accum.length - 1]; - if (curFileAccum.file != cur.file) { - curFileAccum = undefined; - } - } - if (!curFileAccum) { - curFileAccum = { file: cur.file, locs: [] }; - accum.push(curFileAccum); - } - curFileAccum.locs.push({ start: cur.start, end: cur.end }); - return accum; - }, []); - - return { info: renameInfo, locs: bakedRenameLocs }; + } } private getReferences(line: number, offset: number, fileName: string): protocol.ReferencesResponseBody { - // TODO: get all projects for this file; report refs for all projects deleting duplicates - // can avoid duplicates by eliminating same ref file from subsequent projects const file = ts.normalizePath(fileName); - const project = this.projectService.getProjectForFile(file); - if (!project) { + const info = this.projectService.getScriptInfo(file); + const projects = this.projectService.findReferencingProjects(info); + if (!projects.length) { throw Errors.NoProject; } - const compilerService = project.compilerService; - const position = compilerService.host.lineOffsetToPosition(file, line, offset); - - const references = compilerService.languageService.getReferencesAtPosition(file, position); - if (!references) { - return undefined; - } - - const nameInfo = compilerService.languageService.getQuickInfoAtPosition(file, position); + const defaultProject = projects[0]; + const position = defaultProject.compilerService.host.lineOffsetToPosition(file, line, offset); + const nameInfo = defaultProject.compilerService.languageService.getQuickInfoAtPosition(file, position); if (!nameInfo) { return undefined; } const displayString = ts.displayPartsToString(nameInfo.displayParts); const nameSpan = nameInfo.textSpan; - const nameColStart = compilerService.host.positionToLineOffset(file, nameSpan.start).offset; - const nameText = compilerService.host.getScriptSnapshot(file).getText(nameSpan.start, ts.textSpanEnd(nameSpan)); - const bakedRefs: protocol.ReferencesResponseItem[] = references.map(ref => { - const start = compilerService.host.positionToLineOffset(ref.fileName, ref.textSpan.start); - const refLineSpan = compilerService.host.lineToTextSpan(ref.fileName, start.line - 1); - const snap = compilerService.host.getScriptSnapshot(ref.fileName); - const lineText = snap.getText(refLineSpan.start, ts.textSpanEnd(refLineSpan)).replace(/\r|\n/g, ""); - return { - file: ref.fileName, - start: start, - lineText: lineText, - end: compilerService.host.positionToLineOffset(ref.fileName, ts.textSpanEnd(ref.textSpan)), - isWriteAccess: ref.isWriteAccess - }; - }).sort(compareFileStart); + const nameColStart = defaultProject.compilerService.host.positionToLineOffset(file, nameSpan.start).offset; + const nameText = defaultProject.compilerService.host.getScriptSnapshot(file).getText(nameSpan.start, ts.textSpanEnd(nameSpan)); + const refs = combineProjectOutput( + projects, + (project: Project) => { + const compilerService = project.compilerService; + const references = compilerService.languageService.getReferencesAtPosition(file, position); + if (!references) { + return []; + } + + return references.map(ref => { + const start = compilerService.host.positionToLineOffset(ref.fileName, ref.textSpan.start); + const refLineSpan = compilerService.host.lineToTextSpan(ref.fileName, start.line - 1); + const snap = compilerService.host.getScriptSnapshot(ref.fileName); + const lineText = snap.getText(refLineSpan.start, ts.textSpanEnd(refLineSpan)).replace(/\r|\n/g, ""); + return { + file: ref.fileName, + start: start, + lineText: lineText, + end: compilerService.host.positionToLineOffset(ref.fileName, ts.textSpanEnd(ref.textSpan)), + isWriteAccess: ref.isWriteAccess + }; + }); + }, + compareFileStart, + areReferencesResponseItemsForTheSameLocation + ); + return { - refs: bakedRefs, + refs, symbolName: nameText, symbolStartOffset: nameColStart, symbolDisplayString: displayString }; + + function areReferencesResponseItemsForTheSameLocation(a: protocol.ReferencesResponseItem, b: protocol.ReferencesResponseItem) { + if (a && b) { + return a.file === b.file && + a.start === b.start && + a.end === b.end; + } + return false; + } } /** * @param fileName is the name of the file to be opened * @param fileContent is a version of the file content that is known to be more up to date than the one on disk */ - private openClientFile(fileName: string, fileContent?: string) { + private openClientFile(fileName: string, fileContent?: string, scriptKind?: ScriptKind) { const file = ts.normalizePath(fileName); - this.projectService.openClientFile(file, fileContent); + this.projectService.openClientFile(file, fileContent, scriptKind); } private getQuickInfo(line: number, offset: number, fileName: string): protocol.QuickInfoResponseBody { @@ -617,7 +647,7 @@ namespace ts.server { const editorOptions: ts.EditorOptions = { IndentSize: formatOptions.IndentSize, TabSize: formatOptions.TabSize, - NewLineCharacter: "\n", + NewLineCharacter: formatOptions.NewLineCharacter, ConvertTabsToSpaces: formatOptions.ConvertTabsToSpaces, IndentStyle: ts.IndentStyle.Smart, }; @@ -836,41 +866,60 @@ namespace ts.server { private getNavigateToItems(searchValue: string, fileName: string, maxResultCount?: number): protocol.NavtoItem[] { const file = ts.normalizePath(fileName); - const project = this.projectService.getProjectForFile(file); - if (!project) { + const info = this.projectService.getScriptInfo(file); + const projects = this.projectService.findReferencingProjects(info); + const defaultProject = projects[0]; + if (!defaultProject) { throw Errors.NoProject; } - const compilerService = project.compilerService; - const navItems = compilerService.languageService.getNavigateToItems(searchValue, maxResultCount); - if (!navItems) { - return undefined; - } + const allNavToItems = combineProjectOutput( + projects, + (project: Project) => { + const compilerService = project.compilerService; + const navItems = compilerService.languageService.getNavigateToItems(searchValue, maxResultCount); + if (!navItems) { + return []; + } - return navItems.map((navItem) => { - const start = compilerService.host.positionToLineOffset(navItem.fileName, navItem.textSpan.start); - const end = compilerService.host.positionToLineOffset(navItem.fileName, ts.textSpanEnd(navItem.textSpan)); - const bakedItem: protocol.NavtoItem = { - name: navItem.name, - kind: navItem.kind, - file: navItem.fileName, - start: start, - end: end, - }; - if (navItem.kindModifiers && (navItem.kindModifiers != "")) { - bakedItem.kindModifiers = navItem.kindModifiers; + return navItems.map((navItem) => { + const start = compilerService.host.positionToLineOffset(navItem.fileName, navItem.textSpan.start); + const end = compilerService.host.positionToLineOffset(navItem.fileName, ts.textSpanEnd(navItem.textSpan)); + const bakedItem: protocol.NavtoItem = { + name: navItem.name, + kind: navItem.kind, + file: navItem.fileName, + start: start, + end: end, + }; + if (navItem.kindModifiers && (navItem.kindModifiers !== "")) { + bakedItem.kindModifiers = navItem.kindModifiers; + } + if (navItem.matchKind !== "none") { + bakedItem.matchKind = navItem.matchKind; + } + if (navItem.containerName && (navItem.containerName.length > 0)) { + bakedItem.containerName = navItem.containerName; + } + if (navItem.containerKind && (navItem.containerKind.length > 0)) { + bakedItem.containerKind = navItem.containerKind; + } + return bakedItem; + }); + }, + /*comparer*/ undefined, + areNavToItemsForTheSameLocation + ); + return allNavToItems; + + function areNavToItemsForTheSameLocation(a: protocol.NavtoItem, b: protocol.NavtoItem) { + if (a && b) { + return a.file === b.file && + a.start === b.start && + a.end === b.end; } - if (navItem.matchKind !== "none") { - bakedItem.matchKind = navItem.matchKind; - } - if (navItem.containerName && (navItem.containerName.length > 0)) { - bakedItem.containerName = navItem.containerName; - } - if (navItem.containerKind && (navItem.containerKind.length > 0)) { - bakedItem.containerKind = navItem.containerKind; - } - return bakedItem; - }); + return false; + } } private getBraceMatching(line: number, offset: number, fileName: string): protocol.TextSpan[] { @@ -944,129 +993,146 @@ namespace ts.server { exit() { } - private handlers: Map<(request: protocol.Request) => {response?: any, responseRequired?: boolean}> = { + private handlers: Map<(request: protocol.Request) => { response?: any, responseRequired?: boolean }> = { [CommandNames.Exit]: () => { this.exit(); - return { responseRequired: false}; + return { responseRequired: false }; }, [CommandNames.Definition]: (request: protocol.Request) => { const defArgs = request.arguments; - return {response: this.getDefinition(defArgs.line, defArgs.offset, defArgs.file), responseRequired: true}; + return { response: this.getDefinition(defArgs.line, defArgs.offset, defArgs.file), responseRequired: true }; }, [CommandNames.TypeDefinition]: (request: protocol.Request) => { const defArgs = request.arguments; - return {response: this.getTypeDefinition(defArgs.line, defArgs.offset, defArgs.file), responseRequired: true}; + return { response: this.getTypeDefinition(defArgs.line, defArgs.offset, defArgs.file), responseRequired: true }; }, [CommandNames.References]: (request: protocol.Request) => { const defArgs = request.arguments; - return {response: this.getReferences(defArgs.line, defArgs.offset, defArgs.file), responseRequired: true}; + return { response: this.getReferences(defArgs.line, defArgs.offset, defArgs.file), responseRequired: true }; }, [CommandNames.Rename]: (request: protocol.Request) => { const renameArgs = request.arguments; - return {response: this.getRenameLocations(renameArgs.line, renameArgs.offset, renameArgs.file, renameArgs.findInComments, renameArgs.findInStrings), responseRequired: true}; + return { response: this.getRenameLocations(renameArgs.line, renameArgs.offset, renameArgs.file, renameArgs.findInComments, renameArgs.findInStrings), responseRequired: true }; }, [CommandNames.Open]: (request: protocol.Request) => { const openArgs = request.arguments; - this.openClientFile(openArgs.file, openArgs.fileContent); - return {responseRequired: false}; + let scriptKind: ScriptKind; + switch (openArgs.scriptKindName) { + case "TS": + scriptKind = ScriptKind.TS; + break; + case "JS": + scriptKind = ScriptKind.JS; + break; + case "TSX": + scriptKind = ScriptKind.TSX; + break; + case "JSX": + scriptKind = ScriptKind.JSX; + break; + } + this.openClientFile(openArgs.file, openArgs.fileContent, scriptKind); + return { responseRequired: false }; }, [CommandNames.Quickinfo]: (request: protocol.Request) => { const quickinfoArgs = request.arguments; - return {response: this.getQuickInfo(quickinfoArgs.line, quickinfoArgs.offset, quickinfoArgs.file), responseRequired: true}; + return { response: this.getQuickInfo(quickinfoArgs.line, quickinfoArgs.offset, quickinfoArgs.file), responseRequired: true }; }, [CommandNames.Format]: (request: protocol.Request) => { const formatArgs = request.arguments; - return {response: this.getFormattingEditsForRange(formatArgs.line, formatArgs.offset, formatArgs.endLine, formatArgs.endOffset, formatArgs.file), responseRequired: true}; + return { response: this.getFormattingEditsForRange(formatArgs.line, formatArgs.offset, formatArgs.endLine, formatArgs.endOffset, formatArgs.file), responseRequired: true }; }, [CommandNames.Formatonkey]: (request: protocol.Request) => { const formatOnKeyArgs = request.arguments; - return {response: this.getFormattingEditsAfterKeystroke(formatOnKeyArgs.line, formatOnKeyArgs.offset, formatOnKeyArgs.key, formatOnKeyArgs.file), responseRequired: true}; + return { response: this.getFormattingEditsAfterKeystroke(formatOnKeyArgs.line, formatOnKeyArgs.offset, formatOnKeyArgs.key, formatOnKeyArgs.file), responseRequired: true }; }, [CommandNames.Completions]: (request: protocol.Request) => { const completionsArgs = request.arguments; - return {response: this.getCompletions(completionsArgs.line, completionsArgs.offset, completionsArgs.prefix, completionsArgs.file), responseRequired: true}; + return { response: this.getCompletions(completionsArgs.line, completionsArgs.offset, completionsArgs.prefix, completionsArgs.file), responseRequired: true }; }, [CommandNames.CompletionDetails]: (request: protocol.Request) => { const completionDetailsArgs = request.arguments; - return {response: this.getCompletionEntryDetails(completionDetailsArgs.line, completionDetailsArgs.offset, - completionDetailsArgs.entryNames, completionDetailsArgs.file), responseRequired: true}; + return { + response: this.getCompletionEntryDetails(completionDetailsArgs.line, completionDetailsArgs.offset, + completionDetailsArgs.entryNames, completionDetailsArgs.file), responseRequired: true + }; }, [CommandNames.SignatureHelp]: (request: protocol.Request) => { const signatureHelpArgs = request.arguments; - return {response: this.getSignatureHelpItems(signatureHelpArgs.line, signatureHelpArgs.offset, signatureHelpArgs.file), responseRequired: true}; + return { response: this.getSignatureHelpItems(signatureHelpArgs.line, signatureHelpArgs.offset, signatureHelpArgs.file), responseRequired: true }; }, [CommandNames.Geterr]: (request: protocol.Request) => { const geterrArgs = request.arguments; - return {response: this.getDiagnostics(geterrArgs.delay, geterrArgs.files), responseRequired: false}; + return { response: this.getDiagnostics(geterrArgs.delay, geterrArgs.files), responseRequired: false }; }, [CommandNames.GeterrForProject]: (request: protocol.Request) => { const { file, delay } = request.arguments; - return {response: this.getDiagnosticsForProject(delay, file), responseRequired: false}; + return { response: this.getDiagnosticsForProject(delay, file), responseRequired: false }; }, [CommandNames.Change]: (request: protocol.Request) => { const changeArgs = request.arguments; this.change(changeArgs.line, changeArgs.offset, changeArgs.endLine, changeArgs.endOffset, - changeArgs.insertString, changeArgs.file); - return {responseRequired: false}; + changeArgs.insertString, changeArgs.file); + return { responseRequired: false }; }, [CommandNames.Configure]: (request: protocol.Request) => { const configureArgs = request.arguments; this.projectService.setHostConfiguration(configureArgs); this.output(undefined, CommandNames.Configure, request.seq); - return {responseRequired: false}; + return { responseRequired: false }; }, [CommandNames.Reload]: (request: protocol.Request) => { const reloadArgs = request.arguments; this.reload(reloadArgs.file, reloadArgs.tmpfile, request.seq); - return {responseRequired: false}; + return {response: { reloadFinished: true }, responseRequired: true}; }, [CommandNames.Saveto]: (request: protocol.Request) => { const savetoArgs = request.arguments; this.saveToTmp(savetoArgs.file, savetoArgs.tmpfile); - return {responseRequired: false}; + return { responseRequired: false }; }, [CommandNames.Close]: (request: protocol.Request) => { const closeArgs = request.arguments; this.closeClientFile(closeArgs.file); - return {responseRequired: false}; + return { responseRequired: false }; }, [CommandNames.Navto]: (request: protocol.Request) => { const navtoArgs = request.arguments; - return {response: this.getNavigateToItems(navtoArgs.searchValue, navtoArgs.file, navtoArgs.maxResultCount), responseRequired: true}; + return { response: this.getNavigateToItems(navtoArgs.searchValue, navtoArgs.file, navtoArgs.maxResultCount), responseRequired: true }; }, [CommandNames.Brace]: (request: protocol.Request) => { const braceArguments = request.arguments; - return {response: this.getBraceMatching(braceArguments.line, braceArguments.offset, braceArguments.file), responseRequired: true}; + return { response: this.getBraceMatching(braceArguments.line, braceArguments.offset, braceArguments.file), responseRequired: true }; }, [CommandNames.NavBar]: (request: protocol.Request) => { const navBarArgs = request.arguments; - return {response: this.getNavigationBarItems(navBarArgs.file), responseRequired: true}; + return { response: this.getNavigationBarItems(navBarArgs.file), responseRequired: true }; }, [CommandNames.Occurrences]: (request: protocol.Request) => { const { line, offset, file: fileName } = request.arguments; - return {response: this.getOccurrences(line, offset, fileName), responseRequired: true}; + return { response: this.getOccurrences(line, offset, fileName), responseRequired: true }; }, [CommandNames.DocumentHighlights]: (request: protocol.Request) => { const { line, offset, file: fileName, filesToSearch } = request.arguments; - return {response: this.getDocumentHighlights(line, offset, fileName, filesToSearch), responseRequired: true}; + return { response: this.getDocumentHighlights(line, offset, fileName, filesToSearch), responseRequired: true }; }, [CommandNames.ProjectInfo]: (request: protocol.Request) => { const { file, needFileNameList } = request.arguments; - return {response: this.getProjectInfo(file, needFileNameList), responseRequired: true}; + return { response: this.getProjectInfo(file, needFileNameList), responseRequired: true }; }, [CommandNames.ReloadProjects]: (request: protocol.ReloadProjectsRequest) => { this.reloadProjects(); - return {responseRequired: false}; + return { responseRequired: false }; } }; - public addProtocolHandler(command: string, handler: (request: protocol.Request) => {response?: any, responseRequired: boolean}) { + public addProtocolHandler(command: string, handler: (request: protocol.Request) => { response?: any, responseRequired: boolean }) { if (this.handlers[command]) { throw new Error(`Protocol handler already exists for command "${command}"`); } this.handlers[command] = handler; } - public executeCommand(request: protocol.Request): {response?: any, responseRequired?: boolean} { + public executeCommand(request: protocol.Request): { response?: any, responseRequired?: boolean } { const handler = this.handlers[request.command]; if (handler) { return handler(request); @@ -1074,7 +1140,7 @@ namespace ts.server { else { this.projectService.log("Unrecognized JSON command: " + JSON.stringify(request)); this.output(undefined, CommandNames.Unknown, request.seq, "Unrecognized JSON command: " + request.command); - return {responseRequired: false}; + return { responseRequired: false }; } } diff --git a/src/services/formatting/formatting.ts b/src/services/formatting/formatting.ts index 78d225be845..58e3ed1b356 100644 --- a/src/services/formatting/formatting.ts +++ b/src/services/formatting/formatting.ts @@ -72,12 +72,20 @@ namespace ts.formatting { if (line === 0) { return []; } - // get the span for the previous\current line + // After the enter key, the cursor is now at a new line. The new line may or may not contain non-whitespace characters. + // If the new line has only whitespaces, we won't want to format this line, because that would remove the indentation as + // trailing whitespaces. So the end of the formatting span should be the later one between: + // 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))) { + endOfFormatSpan--; + } let span = { // get start position for the previous line pos: getStartPositionOfLine(line - 1, sourceFile), - // get end position for the current line (end value is exclusive so add 1 to the result) - end: getEndLinePosition(line, sourceFile) + 1 + // end value is exclusive so add 1 to the result + end: endOfFormatSpan + 1 } return formatSpan(span, sourceFile, options, rulesProvider, FormattingRequestKind.FormatOnEnter); } @@ -720,25 +728,24 @@ namespace ts.formatting { dynamicIndentation.getIndentationForToken(tokenStart.line, currentTokenInfo.token.kind, container) : Constants.Unknown; + let indentNextTokenOrTrivia = true; if (currentTokenInfo.leadingTrivia) { let commentIndentation = dynamicIndentation.getIndentationForComment(currentTokenInfo.token.kind, tokenIndentation, container); - let indentNextTokenOrTrivia = true; for (let triviaItem of currentTokenInfo.leadingTrivia) { - if (!rangeContainsRange(originalRange, triviaItem)) { - continue; - } - + const triviaInRange = rangeContainsRange(originalRange, triviaItem); switch (triviaItem.kind) { case SyntaxKind.MultiLineCommentTrivia: - indentMultilineComment(triviaItem, commentIndentation, /*firstLineIsIndented*/ !indentNextTokenOrTrivia); + if (triviaInRange) { + indentMultilineComment(triviaItem, commentIndentation, /*firstLineIsIndented*/ !indentNextTokenOrTrivia); + } indentNextTokenOrTrivia = false; break; case SyntaxKind.SingleLineCommentTrivia: - if (indentNextTokenOrTrivia) { + if (indentNextTokenOrTrivia && triviaInRange) { insertIndentation(triviaItem.pos, commentIndentation, /*lineAdded*/ false); - indentNextTokenOrTrivia = false; } + indentNextTokenOrTrivia = false; break; case SyntaxKind.NewLineTrivia: indentNextTokenOrTrivia = true; @@ -748,7 +755,7 @@ namespace ts.formatting { } // indent token only if is it is in target range and does not overlap with any error ranges - if (tokenIndentation !== Constants.Unknown) { + if (tokenIndentation !== Constants.Unknown && indentNextTokenOrTrivia) { insertIndentation(currentTokenInfo.token.pos, tokenIndentation, lineAdded); lastIndentedLine = tokenStart.line; diff --git a/src/services/jsTyping.ts b/src/services/jsTyping.ts new file mode 100644 index 00000000000..943693bf52e --- /dev/null +++ b/src/services/jsTyping.ts @@ -0,0 +1,227 @@ +// Copyright (c) Microsoft. All rights reserved. Licensed under the Apache License, Version 2.0. +// See LICENSE.txt in the project root for complete license information. + +/// + +/* @internal */ +namespace ts.JsTyping { + + export interface TypingResolutionHost { + directoryExists: (path: string) => boolean; + fileExists: (fileName: string) => boolean; + readFile: (path: string, encoding?: string) => string; + readDirectory: (path: string, extension?: string, exclude?: string[], depth?: number) => string[]; + }; + + interface PackageJson { + _requiredBy?: string[]; + dependencies?: Map; + devDependencies?: Map; + name?: string; + optionalDependencies?: Map; + peerDependencies?: Map; + typings?: string; + }; + + // A map of loose file names to library names + // that we are confident require typings + let safeList: Map; + + /** + * @param host is the object providing I/O related operations. + * @param fileNames are the file names that belong to the same project + * @param projectRootPath is the path to the project root directory + * @param safeListPath is the path used to retrieve the safe list + * @param packageNameToTypingLocation is the map of package names to their cached typing locations + * @param typingOptions are used to customize the typing inference process + * @param compilerOptions are used as a source for typing inference + */ + export function discoverTypings( + host: TypingResolutionHost, + fileNames: string[], + projectRootPath: Path, + safeListPath: Path, + packageNameToTypingLocation: Map, + typingOptions: TypingOptions, + compilerOptions: CompilerOptions): + { cachedTypingPaths: string[], newTypingNames: string[], filesToWatch: string[] } { + + // A typing name to typing file path mapping + const inferredTypings: Map = {}; + + if (!typingOptions || !typingOptions.enableAutoDiscovery) { + return { cachedTypingPaths: [], newTypingNames: [], filesToWatch: [] }; + } + + // Only infer typings for .js and .jsx files + fileNames = filter(map(fileNames, normalizePath), f => scriptKindIs(f, /*LanguageServiceHost*/ undefined, ScriptKind.JS, ScriptKind.JSX)); + + if (!safeList) { + const result = readConfigFile(safeListPath, (path: string) => host.readFile(path)); + if (result.config) { + safeList = result.config; + } + else { + safeList = {}; + }; + } + + const filesToWatch: string[] = []; + // Directories to search for package.json, bower.json and other typing information + let searchDirs: string[] = []; + let exclude: string[] = []; + + mergeTypings(typingOptions.include); + exclude = typingOptions.exclude || []; + + const possibleSearchDirs = map(fileNames, getDirectoryPath); + if (projectRootPath !== undefined) { + possibleSearchDirs.push(projectRootPath); + } + searchDirs = deduplicate(possibleSearchDirs); + for (const searchDir of searchDirs) { + const packageJsonPath = combinePaths(searchDir, "package.json"); + getTypingNamesFromJson(packageJsonPath, filesToWatch); + + const bowerJsonPath = combinePaths(searchDir, "bower.json"); + getTypingNamesFromJson(bowerJsonPath, filesToWatch); + + const nodeModulesPath = combinePaths(searchDir, "node_modules"); + getTypingNamesFromNodeModuleFolder(nodeModulesPath); + } + getTypingNamesFromSourceFileNames(fileNames); + + // Add the cached typing locations for inferred typings that are already installed + for (const name in packageNameToTypingLocation) { + if (hasProperty(inferredTypings, name) && !inferredTypings[name]) { + inferredTypings[name] = packageNameToTypingLocation[name]; + } + } + + // Remove typings that the user has added to the exclude list + for (const excludeTypingName of exclude) { + delete inferredTypings[excludeTypingName]; + } + + const newTypingNames: string[] = []; + const cachedTypingPaths: string[] = []; + for (const typing in inferredTypings) { + if (inferredTypings[typing] !== undefined) { + cachedTypingPaths.push(inferredTypings[typing]); + } + else { + newTypingNames.push(typing); + } + } + return { cachedTypingPaths, newTypingNames, filesToWatch }; + + /** + * Merge a given list of typingNames to the inferredTypings map + */ + function mergeTypings(typingNames: string[]) { + if (!typingNames) { + return; + } + + for (const typing of typingNames) { + if (!hasProperty(inferredTypings, typing)) { + inferredTypings[typing] = undefined; + } + } + } + + /** + * Get the typing info from common package manager json files like package.json or bower.json + */ + function getTypingNamesFromJson(jsonPath: string, filesToWatch: string[]) { + const result = readConfigFile(jsonPath, (path: string) => host.readFile(path)); + if (result.config) { + const jsonConfig: PackageJson = result.config; + filesToWatch.push(jsonPath); + if (jsonConfig.dependencies) { + mergeTypings(getKeys(jsonConfig.dependencies)); + } + if (jsonConfig.devDependencies) { + mergeTypings(getKeys(jsonConfig.devDependencies)); + } + if (jsonConfig.optionalDependencies) { + mergeTypings(getKeys(jsonConfig.optionalDependencies)); + } + if (jsonConfig.peerDependencies) { + mergeTypings(getKeys(jsonConfig.peerDependencies)); + } + } + } + + /** + * Infer typing names from given file names. For example, the file name "jquery-min.2.3.4.js" + * should be inferred to the 'jquery' typing name; and "angular-route.1.2.3.js" should be inferred + * to the 'angular-route' typing name. + * @param fileNames are the names for source files in the project + */ + function getTypingNamesFromSourceFileNames(fileNames: string[]) { + const jsFileNames = filter(fileNames, hasJavaScriptFileExtension); + const inferredTypingNames = map(jsFileNames, f => removeFileExtension(getBaseFileName(f.toLowerCase()))); + const cleanedTypingNames = map(inferredTypingNames, f => f.replace(/((?:\.|-)min(?=\.|$))|((?:-|\.)\d+)/g, "")); + if (safeList === undefined) { + mergeTypings(cleanedTypingNames); + } + else { + mergeTypings(filter(cleanedTypingNames, f => hasProperty(safeList, f))); + } + + const hasJsxFile = forEach(fileNames, f => scriptKindIs(f, /*LanguageServiceHost*/ undefined, ScriptKind.JSX)); + if (hasJsxFile) { + mergeTypings(["react"]); + } + } + + /** + * Infer typing names from node_module folder + * @param nodeModulesPath is the path to the "node_modules" folder + */ + function getTypingNamesFromNodeModuleFolder(nodeModulesPath: string) { + // Todo: add support for ModuleResolutionHost too + if (!host.directoryExists(nodeModulesPath)) { + return; + } + + const typingNames: string[] = []; + const fileNames = host.readDirectory(nodeModulesPath, "*.json", /*exclude*/ undefined, /*depth*/ 2); + for (const fileName of fileNames) { + const normalizedFileName = normalizePath(fileName); + if (getBaseFileName(normalizedFileName) !== "package.json") { + continue; + } + const result = readConfigFile(normalizedFileName, (path: string) => host.readFile(path)); + if (!result.config) { + continue; + } + const packageJson: PackageJson = result.config; + + // npm 3's package.json contains a "_requiredBy" field + // we should include all the top level module names for npm 2, and only module names whose + // "_requiredBy" field starts with "#" or equals "/" for npm 3. + if (packageJson._requiredBy && + filter(packageJson._requiredBy, (r: string) => r[0] === "#" || r === "/").length === 0) { + continue; + } + + // If the package has its own d.ts typings, those will take precedence. Otherwise the package name will be used + // to download d.ts files from DefinitelyTyped + if (!packageJson.name) { + continue; + } + if (packageJson.typings) { + const absolutePath = getNormalizedAbsolutePath(packageJson.typings, getDirectoryPath(normalizedFileName)); + inferredTypings[packageJson.name] = absolutePath; + } + else { + typingNames.push(packageJson.name); + } + } + mergeTypings(typingNames); + } + + } +} diff --git a/src/services/navigationBar.ts b/src/services/navigationBar.ts index f2e77fa69d3..d83d0738ec8 100644 --- a/src/services/navigationBar.ts +++ b/src/services/navigationBar.ts @@ -3,6 +3,12 @@ /* @internal */ namespace ts.NavigationBar { export function getNavigationBarItems(sourceFile: SourceFile, compilerOptions: CompilerOptions): ts.NavigationBarItem[] { + // TODO: Handle JS files differently in 'navbar' calls for now, but ideally we should unify + // the 'navbar' and 'navto' logic for TypeScript and JavaScript. + if (isSourceFileJavaScript(sourceFile)) { + return getJsNavigationBarItems(sourceFile, compilerOptions); + } + // If the source file has any child items, then it included in the tree // and takes lexical ownership of all other top-level items. let hasGlobalNode = false; @@ -130,7 +136,7 @@ namespace ts.NavigationBar { return topLevelNodes; } - + function sortNodes(nodes: Node[]): Node[] { return nodes.slice(0).sort((n1: Declaration, n2: Declaration) => { if (n1.name && n2.name) { @@ -147,13 +153,27 @@ namespace ts.NavigationBar { } }); } - + function addTopLevelNodes(nodes: Node[], topLevelNodes: Node[]): void { nodes = sortNodes(nodes); for (let node of nodes) { switch (node.kind) { case SyntaxKind.ClassDeclaration: + topLevelNodes.push(node); + for (const member of (node).members) { + if (member.kind === SyntaxKind.MethodDeclaration || member.kind === SyntaxKind.Constructor) { + type FunctionLikeMember = MethodDeclaration | ConstructorDeclaration; + if ((member).body) { + // We do not include methods that does not have child functions in it, because of duplications. + if (hasNamedFunctionDeclarations(((member).body).statements)) { + topLevelNodes.push(member); + } + addTopLevelNodes(((member).body).statements, topLevelNodes); + } + } + } + break; case SyntaxKind.EnumDeclaration: case SyntaxKind.InterfaceDeclaration: topLevelNodes.push(node); @@ -176,29 +196,46 @@ namespace ts.NavigationBar { } } - function isTopLevelFunctionDeclaration(functionDeclaration: FunctionLikeDeclaration) { + function hasNamedFunctionDeclarations(nodes: NodeArray): boolean { + for (let s of nodes) { + if (s.kind === SyntaxKind.FunctionDeclaration && !isEmpty((s).name.text)) { + return true; + } + } + return false; + } + + function isTopLevelFunctionDeclaration(functionDeclaration: FunctionLikeDeclaration): boolean { if (functionDeclaration.kind === SyntaxKind.FunctionDeclaration) { - // A function declaration is 'top level' if it contains any function declarations - // within it. + // A function declaration is 'top level' if it contains any function declarations + // within it. if (functionDeclaration.body && functionDeclaration.body.kind === SyntaxKind.Block) { // Proper function declarations can only have identifier names - if (forEach((functionDeclaration.body).statements, - s => s.kind === SyntaxKind.FunctionDeclaration && !isEmpty((s).name.text))) { - + if (hasNamedFunctionDeclarations((functionDeclaration.body).statements)) { return true; } - // Or if it is not parented by another function. i.e all functions - // at module scope are 'top level'. + // Or if it is not parented by another function. I.e all functions at module scope are 'top level'. if (!isFunctionBlock(functionDeclaration.parent)) { return true; } + + // Or if it is nested inside class methods and constructors. + else { + // We have made sure that a grand parent node exists with 'isFunctionBlock()' above. + const grandParentKind = functionDeclaration.parent.parent.kind; + if (grandParentKind === SyntaxKind.MethodDeclaration || + grandParentKind === SyntaxKind.Constructor) { + + return true; + } + } } } return false; } - + function getItemsWorker(nodes: Node[], createItem: (n: Node) => ts.NavigationBarItem): ts.NavigationBarItem[] { let items: ts.NavigationBarItem[] = []; @@ -370,6 +407,10 @@ namespace ts.NavigationBar { case SyntaxKind.ClassDeclaration: return createClassItem(node); + case SyntaxKind.MethodDeclaration: + case SyntaxKind.Constructor: + return createMemberFunctionLikeItem(node); + case SyntaxKind.EnumDeclaration: return createEnumItem(node); @@ -395,19 +436,19 @@ namespace ts.NavigationBar { let result: string[] = []; result.push(moduleDeclaration.name.text); - + while (moduleDeclaration.body && moduleDeclaration.body.kind === SyntaxKind.ModuleDeclaration) { moduleDeclaration = moduleDeclaration.body; result.push(moduleDeclaration.name.text); - } + } return result.join("."); } function createModuleItem(node: ModuleDeclaration): NavigationBarItem { let moduleName = getModuleName(node); - + let childItems = getItemsWorker(getChildNodes((getInnermostModule(node).body).statements), createChildItem); return getNavigationBarItem(moduleName, @@ -418,11 +459,11 @@ namespace ts.NavigationBar { getIndent(node)); } - function createFunctionItem(node: FunctionDeclaration) { + function createFunctionItem(node: FunctionDeclaration): ts.NavigationBarItem { if (node.body && node.body.kind === SyntaxKind.Block) { let childItems = getItemsWorker(sortNodes((node.body).statements), createChildItem); - return getNavigationBarItem(!node.name ? "default": node.name.text , + return getNavigationBarItem(!node.name ? "default": node.name.text, ts.ScriptElementKind.functionElement, getNodeModifiers(node), [getNodeSpan(node)], @@ -433,6 +474,31 @@ namespace ts.NavigationBar { return undefined; } + function createMemberFunctionLikeItem(node: MethodDeclaration | ConstructorDeclaration): ts.NavigationBarItem { + if (node.body && node.body.kind === SyntaxKind.Block) { + let childItems = getItemsWorker(sortNodes((node.body).statements), createChildItem); + let scriptElementKind: string; + let memberFunctionName: string; + if (node.kind === SyntaxKind.MethodDeclaration) { + memberFunctionName = getPropertyNameForPropertyNameNode(node.name); + scriptElementKind = ts.ScriptElementKind.memberFunctionElement; + } + else { + memberFunctionName = "constructor"; + scriptElementKind = ts.ScriptElementKind.constructorImplementationElement; + } + + return getNavigationBarItem(memberFunctionName, + scriptElementKind, + getNodeModifiers(node), + [getNodeSpan(node)], + childItems, + getIndent(node)); + } + + return undefined; + } + function createSourceFileItem(node: SourceFile): ts.NavigationBarItem { let childItems = getItemsWorker(getChildNodes(node.statements), createChildItem); @@ -534,4 +600,203 @@ namespace ts.NavigationBar { return getTextOfNodeFromSourceText(sourceFile.text, node); } } -} \ No newline at end of file + + export function getJsNavigationBarItems(sourceFile: SourceFile, compilerOptions: CompilerOptions): NavigationBarItem[] { + const anonFnText = ""; + const anonClassText = ""; + let indent = 0; + + let rootName = isExternalModule(sourceFile) ? + "\"" + escapeString(getBaseFileName(removeFileExtension(normalizePath(sourceFile.fileName)))) + "\"" + : ""; + + let sourceFileItem = getNavBarItem(rootName, ScriptElementKind.moduleElement, [getNodeSpan(sourceFile)]); + let topItem = sourceFileItem; + + // Walk the whole file, because we want to also find function expressions - which may be in variable initializer, + // call arguments, expressions, etc... + forEachChild(sourceFile, visitNode); + + function visitNode(node: Node) { + const newItem = createNavBarItem(node); + + if (newItem) { + topItem.childItems.push(newItem); + } + + // Add a level if traversing into a container + if (newItem && (isFunctionLike(node) || isClassLike(node))) { + const lastTop = topItem; + indent++; + topItem = newItem; + forEachChild(node, visitNode); + topItem = lastTop; + indent--; + + // If the last item added was an anonymous function expression, and it had no children, discard it. + if (newItem && newItem.text === anonFnText && newItem.childItems.length === 0) { + topItem.childItems.pop(); + } + } + else { + forEachChild(node, visitNode); + } + } + + function createNavBarItem(node: Node) : NavigationBarItem { + switch (node.kind) { + case SyntaxKind.VariableDeclaration: + // Only add to the navbar if at the top-level of the file + // Note: "const" and "let" are also SyntaxKind.VariableDeclarations + if(node.parent/*VariableDeclarationList*/.parent/*VariableStatement*/ + .parent/*SourceFile*/.kind !== SyntaxKind.SourceFile) { + return undefined; + } + // If it is initialized with a function expression, handle it when we reach the function expression node + const varDecl = node as VariableDeclaration; + if (varDecl.initializer && (varDecl.initializer.kind === SyntaxKind.FunctionExpression || + varDecl.initializer.kind === SyntaxKind.ArrowFunction || + varDecl.initializer.kind === SyntaxKind.ClassExpression)) { + return undefined; + } + // Fall through + case SyntaxKind.FunctionDeclaration: + case SyntaxKind.ClassDeclaration: + case SyntaxKind.Constructor: + case SyntaxKind.GetAccessor: + case SyntaxKind.SetAccessor: + // "export default function().." looks just like a regular function/class declaration, except with the 'default' flag + const name = node.flags && (node.flags & NodeFlags.Default) && !(node as (Declaration)).name ? "default" : + node.kind === SyntaxKind.Constructor ? "constructor" : + declarationNameToString((node as (Declaration)).name); + return getNavBarItem(name, getScriptKindForElementKind(node.kind), [getNodeSpan(node)]); + case SyntaxKind.FunctionExpression: + case SyntaxKind.ArrowFunction: + case SyntaxKind.ClassExpression: + return getDefineModuleItem(node) || getFunctionOrClassExpressionItem(node); + case SyntaxKind.MethodDeclaration: + const methodDecl = node as MethodDeclaration; + return getNavBarItem(declarationNameToString(methodDecl.name), + ScriptElementKind.memberFunctionElement, + [getNodeSpan(node)]); + case SyntaxKind.ExportAssignment: + // e.g. "export default " + return getNavBarItem("default", ScriptElementKind.variableElement, [getNodeSpan(node)]); + case SyntaxKind.ImportClause: // e.g. 'def' in: import def from 'mod' (in ImportDeclaration) + if (!(node as ImportClause).name) { + // No default import (this node is still a parent of named & namespace imports, which are handled below) + return undefined; + } + // fall through + case SyntaxKind.ImportSpecifier: // e.g. 'id' in: import {id} from 'mod' (in NamedImports, in ImportClause) + case SyntaxKind.NamespaceImport: // e.g. '* as ns' in: import * as ns from 'mod' (in ImportClause) + case SyntaxKind.ExportSpecifier: // e.g. 'a' or 'b' in: export {a, foo as b} from 'mod' + // Export specifiers are only interesting if they are reexports from another module, or renamed, else they are already globals + if (node.kind === SyntaxKind.ExportSpecifier) { + if (!(node.parent.parent as ExportDeclaration).moduleSpecifier && !(node as ExportSpecifier).propertyName) { + return undefined; + } + } + const decl = node as (ImportSpecifier | ImportClause | NamespaceImport | ExportSpecifier); + if (!decl.name) { + return undefined; + } + const declName = declarationNameToString(decl.name); + return getNavBarItem(declName, ScriptElementKind.constElement, [getNodeSpan(node)]); + default: + return undefined; + } + } + + function getNavBarItem(text: string, kind: string, spans: TextSpan[], kindModifiers = ScriptElementKindModifier.none): NavigationBarItem { + return { + text, kind, kindModifiers, spans, childItems: [], indent, bolded: false, grayed: false + } + } + + function getDefineModuleItem(node: Node): NavigationBarItem { + if (node.kind !== SyntaxKind.FunctionExpression && node.kind !== SyntaxKind.ArrowFunction) { + return undefined; + } + + // No match if this is not a call expression to an identifier named 'define' + if (node.parent.kind !== SyntaxKind.CallExpression) { + return undefined; + } + const callExpr = node.parent as CallExpression; + if (callExpr.expression.kind !== SyntaxKind.Identifier || callExpr.expression.getText() !== 'define') { + return undefined; + } + + // Return a module of either the given text in the first argument, or of the source file path + let defaultName = node.getSourceFile().fileName; + if (callExpr.arguments[0].kind === SyntaxKind.StringLiteral) { + defaultName = ((callExpr.arguments[0]) as StringLiteral).text; + } + return getNavBarItem(defaultName, ScriptElementKind.moduleElement, [getNodeSpan(node.parent)]); + } + + function getFunctionOrClassExpressionItem(node: Node): NavigationBarItem { + if (node.kind !== SyntaxKind.FunctionExpression && + node.kind !== SyntaxKind.ArrowFunction && + node.kind !== SyntaxKind.ClassExpression) { + return undefined; + } + + const fnExpr = node as FunctionExpression | ArrowFunction | ClassExpression; + let fnName: string; + if (fnExpr.name && getFullWidth(fnExpr.name) > 0) { + // The expression has an identifier, so use that as the name + fnName = declarationNameToString(fnExpr.name); + } + else { + // See if it is a var initializer. If so, use the var name. + if (fnExpr.parent.kind === SyntaxKind.VariableDeclaration) { + fnName = declarationNameToString((fnExpr.parent as VariableDeclaration).name); + } + // See if it is of the form " = function(){...}". If so, use the text from the left-hand side. + else if (fnExpr.parent.kind === SyntaxKind.BinaryExpression && + (fnExpr.parent as BinaryExpression).operatorToken.kind === SyntaxKind.EqualsToken) { + fnName = (fnExpr.parent as BinaryExpression).left.getText(); + } + // See if it is a property assignment, and if so use the property name + else if (fnExpr.parent.kind === SyntaxKind.PropertyAssignment && + (fnExpr.parent as PropertyAssignment).name) { + fnName = (fnExpr.parent as PropertyAssignment).name.getText(); + } + else { + fnName = node.kind === SyntaxKind.ClassExpression ? anonClassText : anonFnText; + } + } + const scriptKind = node.kind === SyntaxKind.ClassExpression ? ScriptElementKind.classElement : ScriptElementKind.functionElement; + return getNavBarItem(fnName, scriptKind, [getNodeSpan(node)]); + } + + function getNodeSpan(node: Node) { + return node.kind === SyntaxKind.SourceFile + ? createTextSpanFromBounds(node.getFullStart(), node.getEnd()) + : createTextSpanFromBounds(node.getStart(), node.getEnd()); + } + + function getScriptKindForElementKind(kind: SyntaxKind) { + switch (kind) { + case SyntaxKind.VariableDeclaration: + return ScriptElementKind.variableElement; + case SyntaxKind.FunctionDeclaration: + return ScriptElementKind.functionElement; + case SyntaxKind.ClassDeclaration: + return ScriptElementKind.classElement; + case SyntaxKind.Constructor: + return ScriptElementKind.constructorImplementationElement; + case SyntaxKind.GetAccessor: + return ScriptElementKind.memberGetAccessorElement; + case SyntaxKind.SetAccessor: + return ScriptElementKind.memberSetAccessorElement; + default: + return "unknown"; + } + } + + return sourceFileItem.childItems; + } +} diff --git a/src/services/services.ts b/src/services/services.ts index 65a6bd1362c..670a83d50fc 100644 --- a/src/services/services.ts +++ b/src/services/services.ts @@ -7,12 +7,13 @@ /// /// /// +/// /// /// namespace ts { /** The version of the language service API */ - export const servicesVersion = "0.4"; + export const servicesVersion = "0.5"; export interface Node { getSourceFile(): SourceFile; @@ -124,6 +125,7 @@ namespace ts { } export interface PreProcessedFileInfo { referencedFiles: FileReference[]; + typeReferenceDirectives: FileReference[]; importedFiles: FileReference[]; ambientExternalModules: string[]; isLibFile: boolean; @@ -740,6 +742,7 @@ namespace ts { declaration: SignatureDeclaration; typeParameters: TypeParameter[]; parameters: Symbol[]; + thisType: Type; resolvedReturnType: Type; minArgumentCount: number; hasRestParameter: boolean; @@ -791,6 +794,7 @@ namespace ts { public amdDependencies: { name: string; path: string }[]; public moduleName: string; public referencedFiles: FileReference[]; + public typeReferenceDirectives: FileReference[]; public syntacticDiagnostics: Diagnostic[]; public referenceDiagnostics: Diagnostic[]; @@ -812,6 +816,7 @@ namespace ts { public identifiers: Map; public nameTable: Map; public resolvedModules: Map; + public resolvedTypeReferenceDirectiveNames: Map; public imports: LiteralExpression[]; public moduleAugmentations: LiteralExpression[]; private namedDeclarations: Map; @@ -1022,7 +1027,7 @@ namespace ts { getScriptFileNames(): string[]; getScriptKind?(fileName: string): ScriptKind; getScriptVersion(fileName: string): string; - getScriptSnapshot(fileName: string): IScriptSnapshot; + getScriptSnapshot(fileName: string): IScriptSnapshot | undefined; getLocalizedDiagnosticMessages?(): any; getCancellationToken?(): HostCancellationToken; getCurrentDirectory(): string; @@ -1038,6 +1043,7 @@ namespace ts { * host specific questions using 'getScriptSnapshot'. */ resolveModuleNames?(moduleNames: string[], containingFile: string): ResolvedModule[]; + resolveTypeReferenceDirectives?(typeDirectiveNames: string[], containingFile: string): ResolvedTypeReferenceDirective[]; directoryExists?(directoryName: string): boolean; } @@ -1107,11 +1113,13 @@ namespace ts { getDocCommentTemplateAtPosition(fileName: string, position: number): TextInsertion; + isValidBraceCompletionAtPostion(fileName: string, position: number, openingBrace: number): boolean; + getEmitOutput(fileName: string): EmitOutput; getProgram(): Program; - getSourceFile(fileName: string): SourceFile; + /* @internal */ getNonBoundSourceFile(fileName: string): SourceFile; dispose(): void; } @@ -1751,14 +1759,13 @@ namespace ts { private createEntry(fileName: string, path: Path) { let entry: HostFileInformation; - const scriptKind = this.host.getScriptKind ? this.host.getScriptKind(fileName) : ScriptKind.Unknown; const scriptSnapshot = this.host.getScriptSnapshot(fileName); if (scriptSnapshot) { entry = { hostFileName: fileName, version: this.host.getScriptVersion(fileName), scriptSnapshot: scriptSnapshot, - scriptKind: scriptKind ? scriptKind : getScriptKindFromFileName(fileName) + scriptKind: getScriptKind(fileName, this.host) }; } @@ -1824,7 +1831,7 @@ namespace ts { throw new Error("Could not find file: '" + fileName + "'."); } - const scriptKind = this.host.getScriptKind ? this.host.getScriptKind(fileName) : ScriptKind.Unknown; + const scriptKind = getScriptKind(fileName, this.host); const version = this.host.getScriptVersion(fileName); let sourceFile: SourceFile; @@ -1883,7 +1890,7 @@ namespace ts { options.isolatedModules = true; - // transpileModule does not write anything to disk so there is no need to verify that there are no conflicts between input and output paths. + // transpileModule does not write anything to disk so there is no need to verify that there are no conflicts between input and output paths. options.suppressOutputPathCheck = true; // Filename can be non-ts file. @@ -2146,9 +2153,25 @@ namespace ts { export function preProcessFile(sourceText: string, readImportFiles = true, detectJavaScriptImports = false): PreProcessedFileInfo { const referencedFiles: FileReference[] = []; + const typeReferenceDirectives: FileReference[] = []; const importedFiles: FileReference[] = []; - let ambientExternalModules: string[]; + let ambientExternalModules: { ref: FileReference, depth: number }[]; let isNoDefaultLib = false; + let braceNesting = 0; + // assume that text represent an external module if it contains at least one top level import/export + // ambient modules that are found inside external modules are interpreted as module augmentations + let externalModule = false; + + function nextToken() { + const token = scanner.scan(); + if (token === SyntaxKind.OpenBraceToken) { + braceNesting++; + } + else if (token === SyntaxKind.CloseBraceToken) { + braceNesting--; + } + return token; + } function processTripleSlashDirectives(): void { const commentRanges = getLeadingCommentRanges(sourceText, 0); @@ -2159,27 +2182,43 @@ namespace ts { isNoDefaultLib = referencePathMatchResult.isNoDefaultLib; const fileReference = referencePathMatchResult.fileReference; if (fileReference) { - referencedFiles.push(fileReference); + const collection = referencePathMatchResult.isTypeReferenceDirective + ? typeReferenceDirectives + : referencedFiles; + + collection.push(fileReference); } } }); } + function getFileReference() { + const file = scanner.getTokenValue(); + const pos = scanner.getTokenPos(); + return { + fileName: file, + pos: pos, + end: pos + file.length + }; + } + function recordAmbientExternalModule(): void { if (!ambientExternalModules) { ambientExternalModules = []; } - ambientExternalModules.push(scanner.getTokenValue()); + ambientExternalModules.push({ ref: getFileReference(), depth: braceNesting }); } function recordModuleName() { - const importPath = scanner.getTokenValue(); - const pos = scanner.getTokenPos(); - importedFiles.push({ - fileName: importPath, - pos: pos, - end: pos + importPath.length - }); + importedFiles.push(getFileReference()); + + markAsExternalModuleIfTopLevel(); + } + + function markAsExternalModuleIfTopLevel() { + if (braceNesting === 0) { + externalModule = true; + } } /** @@ -2189,9 +2228,9 @@ namespace ts { let token = scanner.getToken(); if (token === SyntaxKind.DeclareKeyword) { // declare module "mod" - token = scanner.scan(); + token = nextToken(); if (token === SyntaxKind.ModuleKeyword) { - token = scanner.scan(); + token = nextToken(); if (token === SyntaxKind.StringLiteral) { recordAmbientExternalModule(); } @@ -2208,7 +2247,8 @@ namespace ts { function tryConsumeImport(): boolean { let token = scanner.getToken(); if (token === SyntaxKind.ImportKeyword) { - token = scanner.scan(); + + token = nextToken(); if (token === SyntaxKind.StringLiteral) { // import "mod"; recordModuleName(); @@ -2216,9 +2256,9 @@ namespace ts { } else { if (token === SyntaxKind.Identifier || isKeyword(token)) { - token = scanner.scan(); + token = nextToken(); if (token === SyntaxKind.FromKeyword) { - token = scanner.scan(); + token = nextToken(); if (token === SyntaxKind.StringLiteral) { // import d from "mod"; recordModuleName(); @@ -2232,7 +2272,7 @@ namespace ts { } else if (token === SyntaxKind.CommaToken) { // consume comma and keep going - token = scanner.scan(); + token = nextToken(); } else { // unknown syntax @@ -2241,17 +2281,17 @@ namespace ts { } if (token === SyntaxKind.OpenBraceToken) { - token = scanner.scan(); + token = nextToken(); // consume "{ a as B, c, d as D}" clauses // make sure that it stops on EOF while (token !== SyntaxKind.CloseBraceToken && token !== SyntaxKind.EndOfFileToken) { - token = scanner.scan(); + token = nextToken(); } if (token === SyntaxKind.CloseBraceToken) { - token = scanner.scan(); + token = nextToken(); if (token === SyntaxKind.FromKeyword) { - token = scanner.scan(); + token = nextToken(); if (token === SyntaxKind.StringLiteral) { // import {a as A} from "mod"; // import d, {a, b as B} from "mod" @@ -2261,13 +2301,13 @@ namespace ts { } } else if (token === SyntaxKind.AsteriskToken) { - token = scanner.scan(); + token = nextToken(); if (token === SyntaxKind.AsKeyword) { - token = scanner.scan(); + token = nextToken(); if (token === SyntaxKind.Identifier || isKeyword(token)) { - token = scanner.scan(); + token = nextToken(); if (token === SyntaxKind.FromKeyword) { - token = scanner.scan(); + token = nextToken(); if (token === SyntaxKind.StringLiteral) { // import * as NS from "mod" // import d, * as NS from "mod" @@ -2288,19 +2328,20 @@ namespace ts { function tryConsumeExport(): boolean { let token = scanner.getToken(); if (token === SyntaxKind.ExportKeyword) { - token = scanner.scan(); + markAsExternalModuleIfTopLevel(); + token = nextToken(); if (token === SyntaxKind.OpenBraceToken) { - token = scanner.scan(); + token = nextToken(); // consume "{ a as B, c, d as D}" clauses // make sure it stops on EOF while (token !== SyntaxKind.CloseBraceToken && token !== SyntaxKind.EndOfFileToken) { - token = scanner.scan(); + token = nextToken(); } if (token === SyntaxKind.CloseBraceToken) { - token = scanner.scan(); + token = nextToken(); if (token === SyntaxKind.FromKeyword) { - token = scanner.scan(); + token = nextToken(); if (token === SyntaxKind.StringLiteral) { // export {a as A} from "mod"; // export {a, b as B} from "mod" @@ -2310,9 +2351,9 @@ namespace ts { } } else if (token === SyntaxKind.AsteriskToken) { - token = scanner.scan(); + token = nextToken(); if (token === SyntaxKind.FromKeyword) { - token = scanner.scan(); + token = nextToken(); if (token === SyntaxKind.StringLiteral) { // export * from "mod" recordModuleName(); @@ -2320,9 +2361,9 @@ namespace ts { } } else if (token === SyntaxKind.ImportKeyword) { - token = scanner.scan(); + token = nextToken(); if (token === SyntaxKind.Identifier || isKeyword(token)) { - token = scanner.scan(); + token = nextToken(); if (token === SyntaxKind.EqualsToken) { if (tryConsumeRequireCall(/*skipCurrentToken*/ true)) { return true; @@ -2338,11 +2379,11 @@ namespace ts { } function tryConsumeRequireCall(skipCurrentToken: boolean): boolean { - let token = skipCurrentToken ? scanner.scan() : scanner.getToken(); + let token = skipCurrentToken ? nextToken() : scanner.getToken(); if (token === SyntaxKind.RequireKeyword) { - token = scanner.scan(); + token = nextToken(); if (token === SyntaxKind.OpenParenToken) { - token = scanner.scan(); + token = nextToken(); if (token === SyntaxKind.StringLiteral) { // require("mod"); recordModuleName(); @@ -2356,17 +2397,17 @@ namespace ts { function tryConsumeDefine(): boolean { let token = scanner.getToken(); if (token === SyntaxKind.Identifier && scanner.getTokenValue() === "define") { - token = scanner.scan(); + token = nextToken(); if (token !== SyntaxKind.OpenParenToken) { return true; } - token = scanner.scan(); + token = nextToken(); if (token === SyntaxKind.StringLiteral) { // looks like define ("modname", ... - skip string literal and comma - token = scanner.scan(); + token = nextToken(); if (token === SyntaxKind.CommaToken) { - token = scanner.scan(); + token = nextToken(); } else { // unexpected token @@ -2380,7 +2421,7 @@ namespace ts { } // skip open bracket - token = scanner.scan(); + token = nextToken(); let i = 0; // scan until ']' or EOF while (token !== SyntaxKind.CloseBracketToken && token !== SyntaxKind.EndOfFileToken) { @@ -2390,7 +2431,7 @@ namespace ts { i++; } - token = scanner.scan(); + token = nextToken(); } return true; @@ -2400,7 +2441,7 @@ namespace ts { function processImports(): void { scanner.setText(sourceText); - scanner.scan(); + nextToken(); // Look for: // import "mod"; // import d from "mod" @@ -2427,7 +2468,7 @@ namespace ts { continue; } else { - scanner.scan(); + nextToken(); } } @@ -2438,7 +2479,34 @@ namespace ts { processImports(); } processTripleSlashDirectives(); - return { referencedFiles, importedFiles, isLibFile: isNoDefaultLib, ambientExternalModules }; + if (externalModule) { + // for external modules module all nested ambient modules are augmentations + if (ambientExternalModules) { + // move all detected ambient modules to imported files since they need to be resolved + for (const decl of ambientExternalModules) { + importedFiles.push(decl.ref); + } + } + return { referencedFiles, typeReferenceDirectives, importedFiles, isLibFile: isNoDefaultLib, ambientExternalModules: undefined }; + } + else { + // for global scripts ambient modules still can have augmentations - look for ambient modules with depth > 0 + let ambientModuleNames: string[]; + if (ambientExternalModules) { + for (const decl of ambientExternalModules) { + if (decl.depth === 0) { + if (!ambientModuleNames) { + ambientModuleNames = []; + } + ambientModuleNames.push(decl.ref.fileName); + } + else { + importedFiles.push(decl.ref); + } + } + } + return { referencedFiles, typeReferenceDirectives, importedFiles, isLibFile: isNoDefaultLib, ambientExternalModules: ambientModuleNames }; + } } /// Helpers @@ -2774,7 +2842,7 @@ namespace ts { getCurrentDirectory: () => currentDirectory, fileExists: (fileName): boolean => { // stub missing host functionality - Debug.assert(!host.resolveModuleNames); + Debug.assert(!host.resolveModuleNames || !host.resolveTypeReferenceDirectives); return hostCache.getOrCreateEntry(fileName) !== undefined; }, readFile: (fileName): string => { @@ -2783,7 +2851,7 @@ namespace ts { return entry && entry.scriptSnapshot.getText(0, entry.scriptSnapshot.getLength()); }, directoryExists: directoryName => { - Debug.assert(!host.resolveModuleNames); + Debug.assert(!host.resolveModuleNames || !host.resolveTypeReferenceDirectives); return directoryProbablyExists(directoryName, host); } }; @@ -2794,6 +2862,11 @@ namespace ts { if (host.resolveModuleNames) { compilerHost.resolveModuleNames = (moduleNames, containingFile) => host.resolveModuleNames(moduleNames, containingFile); } + if (host.resolveTypeReferenceDirectives) { + compilerHost.resolveTypeReferenceDirectives = (typeReferenceDirectiveNames, containingFile) => { + return host.resolveTypeReferenceDirectives(typeReferenceDirectiveNames, containingFile); + }; + } const newProgram = createProgram(hostCache.getRootFileNames(), newSettings, compilerHost, program); @@ -3134,7 +3207,7 @@ namespace ts { else if (isRightOfOpenTag) { const tagSymbols = typeChecker.getJsxIntrinsicTagNames(); if (tryGetGlobalSymbols()) { - symbols = tagSymbols.concat(symbols.filter(s => !!(s.flags & SymbolFlags.Value))); + symbols = tagSymbols.concat(symbols.filter(s => !!(s.flags & (SymbolFlags.Value | SymbolFlags.Alias)))); } else { symbols = tagSymbols; @@ -3448,7 +3521,18 @@ namespace ts { // We don't want to complete using the type acquired by the shape // of the binding pattern; we are only interested in types acquired // through type declaration or inference. - if (rootDeclaration.initializer || rootDeclaration.type) { + // Also proceed if rootDeclaration is parameter and if its containing function expression\arrow function is contextually typed - + // type of parameter will flow in from the contextual type of the function + let canGetType = !!(rootDeclaration.initializer || rootDeclaration.type); + if (!canGetType && rootDeclaration.kind === SyntaxKind.Parameter) { + if (isExpression(rootDeclaration.parent)) { + canGetType = !!typeChecker.getContextualType(rootDeclaration.parent); + } + else if (rootDeclaration.parent.kind === SyntaxKind.MethodDeclaration || rootDeclaration.parent.kind === SyntaxKind.SetAccessor) { + canGetType = isExpression(rootDeclaration.parent.parent) && !!typeChecker.getContextualType(rootDeclaration.parent.parent); + } + } + if (canGetType) { typeForObject = typeChecker.getTypeAtLocation(objectLikeContainer); existingMembers = (objectLikeContainer).elements; } @@ -3752,10 +3836,10 @@ namespace ts { } if (isEmpty(existingImportsOrExports)) { - return exportsOfModule; + return filter(exportsOfModule, e => e.name !== "default"); } - return filter(exportsOfModule, e => !lookUp(existingImportsOrExports, e.name)); + return filter(exportsOfModule, e => e.name !== "default" && !lookUp(existingImportsOrExports, e.name)); } /** @@ -4042,6 +4126,9 @@ namespace ts { if (typeChecker.isArgumentsSymbol(symbol)) { return ScriptElementKind.localVariableElement; } + if (location.kind === SyntaxKind.ThisKeyword && isExpression(location)) { + return ScriptElementKind.parameterElement; + } if (flags & SymbolFlags.Variable) { if (isFirstDeclarationOfSymbolParameter(symbol)) { return ScriptElementKind.parameterElement; @@ -4104,6 +4191,7 @@ namespace ts { const symbolFlags = symbol.flags; let symbolKind = getSymbolKindOfConstructorPropertyMethodAccessorFunctionOrVar(symbol, symbolFlags, location); let hasAddedSymbolInfo: boolean; + const isThisExpression: boolean = location.kind === SyntaxKind.ThisKeyword && isExpression(location); let type: Type; // Class at constructor site need to be shown as constructor apart from property,method, vars @@ -4114,7 +4202,7 @@ namespace ts { } let signature: Signature; - type = typeChecker.getTypeOfSymbolAtLocation(symbol, location); + type = isThisExpression ? typeChecker.getTypeAtLocation(location) : typeChecker.getTypeOfSymbolAtLocation(symbol, location); if (type) { if (location.parent && location.parent.kind === SyntaxKind.PropertyAccessExpression) { const right = (location.parent).name; @@ -4225,7 +4313,7 @@ namespace ts { } } } - if (symbolFlags & SymbolFlags.Class && !hasAddedSymbolInfo) { + if (symbolFlags & SymbolFlags.Class && !hasAddedSymbolInfo && !isThisExpression) { if (getDeclarationOfKind(symbol, SyntaxKind.ClassExpression)) { // Special case for class expressions because we would like to indicate that // the class name is local to the class body (similar to function expression) @@ -4367,11 +4455,19 @@ namespace ts { if (!hasAddedSymbolInfo) { if (symbolKind !== ScriptElementKind.unknown) { if (type) { - addPrefixForAnyFunctionOrVar(symbol, symbolKind); + if (isThisExpression) { + addNewLineIfDisplayPartsExist(); + displayParts.push(keywordPart(SyntaxKind.ThisKeyword)); + } + else { + addPrefixForAnyFunctionOrVar(symbol, symbolKind); + } + // For properties, variables and local vars: show the type if (symbolKind === ScriptElementKind.memberVariableElement || symbolFlags & SymbolFlags.Variable || - symbolKind === ScriptElementKind.localVariableElement) { + symbolKind === ScriptElementKind.localVariableElement || + isThisExpression) { displayParts.push(punctuationPart(SyntaxKind.ColonToken)); displayParts.push(spacePart()); // If the type is type parameter, format it specially @@ -4603,6 +4699,26 @@ namespace ts { } } + function findReferenceInPosition(refs: FileReference[], pos: number): FileReference { + for (const ref of refs) { + if (ref.pos <= pos && pos < ref.end) { + return ref; + } + } + return undefined; + } + + function getDefinitionInfoForFileReference(name: string, targetFileName: string): DefinitionInfo { + return { + fileName: targetFileName, + textSpan: createTextSpanFromBounds(0, 0), + kind: ScriptElementKind.scriptElement, + name: name, + containerName: undefined, + containerKind: undefined + }; + } + /// Goto definition function getDefinitionAtPosition(fileName: string, position: number): DefinitionInfo[] { synchronizeHostData(); @@ -4622,18 +4738,20 @@ namespace ts { } /// Triple slash reference comments - const comment = forEach(sourceFile.referencedFiles, r => (r.pos <= position && position < r.end) ? r : undefined); + const comment = findReferenceInPosition(sourceFile.referencedFiles, position); if (comment) { const referenceFile = tryResolveScriptReference(program, sourceFile, comment); if (referenceFile) { - return [{ - fileName: referenceFile.fileName, - textSpan: createTextSpanFromBounds(0, 0), - kind: ScriptElementKind.scriptElement, - name: comment.fileName, - containerName: undefined, - containerKind: undefined - }]; + return [getDefinitionInfoForFileReference(comment.fileName, referenceFile.fileName)]; + } + return undefined; + } + // Type reference directives + const typeReferenceDirective = findReferenceInPosition(sourceFile.typeReferenceDirectives, position); + if (typeReferenceDirective) { + const referenceFile = lookUp(program.getResolvedTypeReferenceDirectives(), typeReferenceDirective.fileName); + if (referenceFile && referenceFile.resolvedFileName) { + return [getDefinitionInfoForFileReference(typeReferenceDirective.fileName, referenceFile.resolvedFileName)]; } return undefined; } @@ -5544,8 +5662,51 @@ namespace ts { }; } - function isImportSpecifierSymbol(symbol: Symbol) { - return (symbol.flags & SymbolFlags.Alias) && !!getDeclarationOfKind(symbol, SyntaxKind.ImportSpecifier); + function getAliasSymbolForPropertyNameSymbol(symbol: Symbol, location: Node): Symbol { + if (symbol.flags & SymbolFlags.Alias) { + // Default import get alias + const defaultImport = getDeclarationOfKind(symbol, SyntaxKind.ImportClause); + if (defaultImport) { + return typeChecker.getAliasedSymbol(symbol); + } + + const importOrExportSpecifier = forEach(symbol.declarations, + declaration => (declaration.kind === SyntaxKind.ImportSpecifier || + declaration.kind === SyntaxKind.ExportSpecifier) ? declaration : undefined); + if (importOrExportSpecifier && + // export { a } + (!importOrExportSpecifier.propertyName || + // export {a as class } where a is location + importOrExportSpecifier.propertyName === location)) { + // If Import specifier -> get alias + // else Export specifier -> get local target + return importOrExportSpecifier.kind === SyntaxKind.ImportSpecifier ? + typeChecker.getAliasedSymbol(symbol) : + typeChecker.getExportSpecifierLocalTargetSymbol(importOrExportSpecifier); + } + } + return undefined; + } + + function getPropertySymbolOfDestructuringAssignment(location: Node) { + return isArrayLiteralOrObjectLiteralDestructuringPattern(location.parent.parent) && + typeChecker.getPropertySymbolOfDestructuringAssignment(location); + } + + function isObjectBindingPatternElementWithoutPropertyName(symbol: Symbol) { + const bindingElement = getDeclarationOfKind(symbol, SyntaxKind.BindingElement); + return bindingElement && + bindingElement.parent.kind === SyntaxKind.ObjectBindingPattern && + !bindingElement.propertyName; + } + + function getPropertySymbolOfObjectBindingPatternWithoutPropertyName(symbol: Symbol) { + if (isObjectBindingPatternElementWithoutPropertyName(symbol)) { + const bindingElement = getDeclarationOfKind(symbol, SyntaxKind.BindingElement); + const typeOfPattern = typeChecker.getTypeAtLocation(bindingElement.parent); + return typeOfPattern && typeChecker.getPropertyOfType(typeOfPattern, (bindingElement.name).text); + } + return undefined; } function getInternedName(symbol: Symbol, location: Node, declarations: Declaration[]): string { @@ -5593,6 +5754,12 @@ namespace ts { return undefined; } + // If symbol is of object binding pattern element without property name we would want to + // look for property too and that could be anywhere + if (isObjectBindingPatternElementWithoutPropertyName(symbol)) { + return undefined; + } + // if this symbol is visible from its parent container, e.g. exported, then bail out // if symbol correspond to the union property - bail out if (symbol.parent || (symbol.flags & SymbolFlags.SyntheticProperty)) { @@ -5988,18 +6155,30 @@ namespace ts { // The search set contains at least the current symbol let result = [symbol]; - // If the symbol is an alias, add what it aliases to the list - if (isImportSpecifierSymbol(symbol)) { - result.push(typeChecker.getAliasedSymbol(symbol)); + // If the location is name of property symbol from object literal destructuring pattern + // Search the property symbol + // for ( { property: p2 } of elems) { } + if (isNameOfPropertyAssignment(location) && location.parent.kind !== SyntaxKind.ShorthandPropertyAssignment) { + const propertySymbol = getPropertySymbolOfDestructuringAssignment(location); + if (propertySymbol) { + result.push(propertySymbol); + } } - // For export specifiers, the exported name can be referring to a local symbol, e.g.: + // If the symbol is an alias, add what it aliases to the list // import {a} from "mod"; - // export {a as somethingElse} - // We want the *local* declaration of 'a' as declared in the import, - // *not* as declared within "mod" (or farther) - if (location.parent.kind === SyntaxKind.ExportSpecifier) { - result.push(typeChecker.getExportSpecifierLocalTargetSymbol(location.parent)); + // export {a} + // If the symbol is an alias to default declaration, add what it aliases to the list + // declare "mod" { export default class B { } } + // import B from "mod"; + //// For export specifiers, the exported name can be referring to a local symbol, e.g.: + //// import {a} from "mod"; + //// export {a as somethingElse} + //// We want the *local* declaration of 'a' as declared in the import, + //// *not* as declared within "mod" (or farther) + const aliasSymbol = getAliasSymbolForPropertyNameSymbol(symbol, location); + if (aliasSymbol) { + result = result.concat(populateSearchSymbolSet(aliasSymbol, location)); } // If the location is in a context sensitive location (i.e. in an object literal) try @@ -6036,6 +6215,13 @@ namespace ts { result = result.concat(typeChecker.getSymbolsOfParameterPropertyDeclaration(symbol.valueDeclaration, symbol.name)); } + // If this is symbol of binding element without propertyName declaration in Object binding pattern + // Include the property in the search + const bindingElementPropertySymbol = getPropertySymbolOfObjectBindingPatternWithoutPropertyName(symbol); + if (bindingElementPropertySymbol) { + result.push(bindingElementPropertySymbol); + } + // If this is a union property, add all the symbols from all its source symbols in all unioned types. // If the symbol is an instantiation from a another symbol (e.g. widened symbol) , add the root the list forEach(typeChecker.getRootSymbols(symbol), rootSymbol => { @@ -6083,7 +6269,7 @@ namespace ts { if (symbol.flags & (SymbolFlags.Class | SymbolFlags.Interface)) { forEach(symbol.getDeclarations(), declaration => { - if (declaration.kind === SyntaxKind.ClassDeclaration) { + if (isClassLike(declaration)) { getPropertySymbolFromTypeReference(getClassExtendsHeritageClauseElement(declaration)); forEach(getClassImplementsHeritageClauseElements(declaration), getPropertySymbolFromTypeReference); } @@ -6100,7 +6286,7 @@ namespace ts { if (type) { const propertySymbol = typeChecker.getPropertyOfType(type, propertyName); if (propertySymbol) { - result.push(propertySymbol); + result.push(...typeChecker.getRootSymbols(propertySymbol)); } // Visit the typeReference as well to see if it directly or indirectly use that property @@ -6117,32 +6303,40 @@ namespace ts { } // If the reference symbol is an alias, check if what it is aliasing is one of the search - // symbols. - if (isImportSpecifierSymbol(referenceSymbol)) { - const aliasedSymbol = typeChecker.getAliasedSymbol(referenceSymbol); - if (searchSymbols.indexOf(aliasedSymbol) >= 0) { - return aliasedSymbol; - } - } - - // For export specifiers, it can be a local symbol, e.g. - // import {a} from "mod"; - // export {a as somethingElse} - // We want the local target of the export (i.e. the import symbol) and not the final target (i.e. "mod".a) - if (referenceLocation.parent.kind === SyntaxKind.ExportSpecifier) { - const aliasedSymbol = typeChecker.getExportSpecifierLocalTargetSymbol(referenceLocation.parent); - if (searchSymbols.indexOf(aliasedSymbol) >= 0) { - return aliasedSymbol; - } + // symbols but by looking up for related symbol of this alias so it can handle multiple level of indirectness. + const aliasSymbol = getAliasSymbolForPropertyNameSymbol(referenceSymbol, referenceLocation); + if (aliasSymbol) { + return getRelatedSymbol(searchSymbols, aliasSymbol, referenceLocation); } // If the reference location is in an object literal, try to get the contextual type for the // object literal, lookup the property symbol in the contextual type, and use this symbol to // compare to our searchSymbol if (isNameOfPropertyAssignment(referenceLocation)) { - return forEach(getPropertySymbolsFromContextualType(referenceLocation), contextualSymbol => { + const contextualSymbol = forEach(getPropertySymbolsFromContextualType(referenceLocation), contextualSymbol => { return forEach(typeChecker.getRootSymbols(contextualSymbol), s => searchSymbols.indexOf(s) >= 0 ? s : undefined); }); + + if (contextualSymbol) { + return contextualSymbol; + } + + // If the reference location is the name of property from object literal destructuring pattern + // Get the property symbol from the object literal's type and look if thats the search symbol + // In below eg. get 'property' from type of elems iterating type + // for ( { property: p2 } of elems) { } + const propertySymbol = getPropertySymbolOfDestructuringAssignment(referenceLocation); + if (propertySymbol && searchSymbols.indexOf(propertySymbol) >= 0) { + return propertySymbol; + } + } + + // If the reference location is the binding element and doesn't have property name + // then include the binding element in the related symbols + // let { a } : { a }; + const bindingElementPropertySymbol = getPropertySymbolOfObjectBindingPatternWithoutPropertyName(referenceSymbol); + if (bindingElementPropertySymbol && searchSymbols.indexOf(bindingElementPropertySymbol) >= 0) { + return bindingElementPropertySymbol; } // Unwrap symbols to get to the root (e.g. transient symbols as a result of widening) @@ -6461,7 +6655,7 @@ namespace ts { } /// Syntactic features - function getSourceFile(fileName: string): SourceFile { + function getNonBoundSourceFile(fileName: string): SourceFile { return syntaxTreeCache.getCurrentSourceFile(fileName); } @@ -7254,6 +7448,36 @@ namespace ts { return { newText: result, caretOffset: preamble.length }; } + function isValidBraceCompletionAtPostion(fileName: string, position: number, openingBrace: number): boolean { + + // '<' is currently not supported, figuring out if we're in a Generic Type vs. a comparison is too + // expensive to do during typing scenarios + // i.e. whether we're dealing with: + // var x = new foo<| ( with class foo{} ) + // or + // var y = 3 <| + if (openingBrace === CharacterCodes.lessThan) { + return false; + } + + const sourceFile = syntaxTreeCache.getCurrentSourceFile(fileName); + + // Check if in a context where we don't want to perform any insertion + if (isInString(sourceFile, position) || isInComment(sourceFile, position)) { + return false; + } + + if (isInsideJsxElementOrAttribute(sourceFile, position)) { + return openingBrace === CharacterCodes.openBrace; + } + + if (isInTemplateString(sourceFile, position)) { + return false; + } + + return true; + } + function getParametersForJsDocOwningNode(commentOwner: Node): ParameterDeclaration[] { if (isFunctionLike(commentOwner)) { return commentOwner.parameters; @@ -7548,8 +7772,9 @@ namespace ts { getFormattingEditsForDocument, getFormattingEditsAfterKeystroke, getDocCommentTemplateAtPosition, + isValidBraceCompletionAtPostion, getEmitOutput, - getSourceFile, + getNonBoundSourceFile, getProgram }; } diff --git a/src/services/shims.ts b/src/services/shims.ts index 57e8d68f5f4..b849407ebab 100644 --- a/src/services/shims.ts +++ b/src/services/shims.ts @@ -19,7 +19,7 @@ let debugObjectHost = (this); // We need to use 'null' to interface with the managed side. -/* tslint:disable:no-null */ +/* tslint:disable:no-null-keyword */ /* tslint:disable:no-in-operator */ /* @internal */ @@ -67,6 +67,7 @@ namespace ts { useCaseSensitiveFileNames?(): boolean; getModuleResolutionsForFile?(fileName: string): string; + getTypeReferenceDirectiveResolutionsForFile?(fileName: string): string; directoryExists(directoryName: string): boolean; } @@ -78,7 +79,7 @@ namespace ts { * @param exclude A JSON encoded string[] containing the paths to exclude * when enumerating the directory. */ - readDirectory(rootDir: string, extension: string, exclude?: string): string; + readDirectory(rootDir: string, extension: string, exclude?: string, depth?: number): string; trace(s: string): void; } @@ -220,6 +221,13 @@ namespace ts { */ getDocCommentTemplateAtPosition(fileName: string, position: number): string; + /** + * Returns JSON-encoded boolean to indicate whether we should support brace location + * at the current position. + * E.g. we don't want brace completion inside string-literals, comments, etc. + */ + isValidBraceCompletionAtPostion(fileName: string, position: number, openingBrace: number): string; + getEmitOutput(fileName: string): string; } @@ -232,6 +240,7 @@ namespace ts { getPreProcessedFileInfo(fileName: string, sourceText: IScriptSnapshot): string; getTSConfigFileInfo(fileName: string, sourceText: IScriptSnapshot): string; getDefaultCompilationSettings(): string; + discoverTypings(discoverTypingsJson: string): string; } function logInternalError(logger: Logger, err: Error) { @@ -280,6 +289,7 @@ namespace ts { private tracingEnabled = false; public resolveModuleNames: (moduleName: string[], containingFile: string) => ResolvedModule[]; + public resolveTypeReferenceDirectives: (typeDirectiveNames: string[], containingFile: string) => ResolvedTypeReferenceDirective[]; public directoryExists: (directoryName: string) => boolean; constructor(private shimHost: LanguageServiceShimHost) { @@ -297,6 +307,12 @@ namespace ts { if ("directoryExists" in this.shimHost) { this.directoryExists = directoryName => this.shimHost.directoryExists(directoryName); } + if ("getTypeReferenceDirectiveResolutionsForFile" in this.shimHost) { + this.resolveTypeReferenceDirectives = (typeDirectiveNames: string[], containingFile: string) => { + const typeDirectivesForFile = >JSON.parse(this.shimHost.getTypeReferenceDirectiveResolutionsForFile(containingFile)); + return map(typeDirectiveNames, name => lookUp(typeDirectivesForFile, name)); + }; + } } public log(s: string): void { @@ -422,8 +438,16 @@ namespace ts { } } - public readDirectory(rootDir: string, extension: string, exclude: string[]): string[] { - const encoded = this.shimHost.readDirectory(rootDir, extension, JSON.stringify(exclude)); + public readDirectory(rootDir: string, extension: string, exclude: string[], depth?: number): string[] { + // Wrap the API changes for 2.0 release. This try/catch + // should be removed once TypeScript 2.0 has shipped. + let encoded: string; + try { + encoded = this.shimHost.readDirectory(rootDir, extension, JSON.stringify(exclude), depth); + } + catch (e) { + encoded = this.shimHost.readDirectory(rootDir, extension, JSON.stringify(exclude)); + } return JSON.parse(encoded); } @@ -716,6 +740,13 @@ namespace ts { ); } + public isValidBraceCompletionAtPostion(fileName: string, position: number, openingBrace: number): string { + return this.forwardJSONCall( + `isValidBraceCompletionAtPostion('${fileName}', ${position}, ${openingBrace})`, + () => this.languageService.isValidBraceCompletionAtPostion(fileName, position, openingBrace) + ); + } + /// GET SMART INDENT public getIndentationAtPosition(fileName: string, position: number, options: string /*Services.EditorOptions*/): string { return this.forwardJSONCall( @@ -910,38 +941,49 @@ namespace ts { }); } + public resolveTypeReferenceDirective(fileName: string, typeReferenceDirective: string, compilerOptionsJson: string): string { + return this.forwardJSONCall(`resolveTypeReferenceDirective(${fileName})`, () => { + const compilerOptions = JSON.parse(compilerOptionsJson); + const result = resolveTypeReferenceDirective(typeReferenceDirective, normalizeSlashes(fileName), compilerOptions, this.host); + return { + resolvedFileName: result.resolvedTypeReferenceDirective ? result.resolvedTypeReferenceDirective.resolvedFileName : undefined, + primary: result.resolvedTypeReferenceDirective ? result.resolvedTypeReferenceDirective.primary : true, + failedLookupLocations: result.failedLookupLocations + }; + }); + } + public getPreProcessedFileInfo(fileName: string, sourceTextSnapshot: IScriptSnapshot): string { return this.forwardJSONCall( "getPreProcessedFileInfo('" + fileName + "')", () => { // for now treat files as JavaScript const result = preProcessFile(sourceTextSnapshot.getText(0, sourceTextSnapshot.getLength()), /* readImportFiles */ true, /* detectJavaScriptImports */ true); - const convertResult = { - referencedFiles: [], - importedFiles: [], + return { + referencedFiles: this.convertFileReferences(result.referencedFiles), + importedFiles: this.convertFileReferences(result.importedFiles), ambientExternalModules: result.ambientExternalModules, - isLibFile: result.isLibFile + isLibFile: result.isLibFile, + typeReferenceDirectives: this.convertFileReferences(result.typeReferenceDirectives) }; - - forEach(result.referencedFiles, refFile => { - convertResult.referencedFiles.push({ - path: normalizePath(refFile.fileName), - position: refFile.pos, - length: refFile.end - refFile.pos - }); - }); - - forEach(result.importedFiles, importedFile => { - convertResult.importedFiles.push({ - path: normalizeSlashes(importedFile.fileName), - position: importedFile.pos, - length: importedFile.end - importedFile.pos - }); - }); - return convertResult; }); } + private convertFileReferences(refs: FileReference[]): IFileReference[] { + if (!refs) { + return undefined; + } + const result: IFileReference[] = []; + for (const ref of refs) { + result.push({ + path: normalizeSlashes(ref.fileName), + position: ref.pos, + length: ref.end - ref.pos + }); + } + return result; + } + public getTSConfigFileInfo(fileName: string, sourceTextSnapshot: IScriptSnapshot): string { return this.forwardJSONCall( `getTSConfigFileInfo('${fileName}')`, @@ -953,6 +995,7 @@ namespace ts { if (result.error) { return { options: {}, + typingOptions: {}, files: [], errors: [realizeDiagnostic(result.error, "\r\n")] }; @@ -963,6 +1006,7 @@ namespace ts { return { options: configFile.options, + typingOptions: configFile.typingOptions, files: configFile.fileNames, errors: realizeDiagnostics(configFile.errors, "\r\n") }; @@ -975,6 +1019,21 @@ namespace ts { () => getDefaultCompilerOptions() ); } + + public discoverTypings(discoverTypingsJson: string): string { + const getCanonicalFileName = createGetCanonicalFileName(/*useCaseSensitivefileNames:*/ false); + return this.forwardJSONCall("discoverTypings()", () => { + const info = JSON.parse(discoverTypingsJson); + return ts.JsTyping.discoverTypings( + this.host, + info.fileNames, + toPath(info.projectRootPath, info.projectRootPath, getCanonicalFileName), + toPath(info.safeListPath, info.safeListPath, getCanonicalFileName), + info.packageNameToTypingLocation, + info.typingOptions, + info.compilerOptions); + }); + } } export class TypeScriptServicesFactory implements ShimFactory { diff --git a/src/services/signatureHelp.ts b/src/services/signatureHelp.ts index e1e493b2634..9e8a2f14ed8 100644 --- a/src/services/signatureHelp.ts +++ b/src/services/signatureHelp.ts @@ -559,7 +559,7 @@ namespace ts.SignatureHelp { signatureHelpParameters = typeParameters && typeParameters.length > 0 ? map(typeParameters, createSignatureHelpParameterForTypeParameter) : emptyArray; suffixDisplayParts.push(punctuationPart(SyntaxKind.GreaterThanToken)); let parameterParts = mapToDisplayParts(writer => - typeChecker.getSymbolDisplayBuilder().buildDisplayForParametersAndDelimiters(candidateSignature.parameters, writer, invocation)); + typeChecker.getSymbolDisplayBuilder().buildDisplayForParametersAndDelimiters(candidateSignature.thisType, candidateSignature.parameters, writer, invocation)); addRange(suffixDisplayParts, parameterParts); } else { diff --git a/src/services/tsconfig.json b/src/services/tsconfig.json index 001071ed88d..6aa7e61391b 100644 --- a/src/services/tsconfig.json +++ b/src/services/tsconfig.json @@ -29,6 +29,7 @@ "shims.ts", "signatureHelp.ts", "utilities.ts", + "jsTyping.ts", "formatting/formatting.ts", "formatting/formattingContext.ts", "formatting/formattingRequestKind.ts", diff --git a/src/services/utilities.ts b/src/services/utilities.ts index 3e6711c1e8b..270c7d85d45 100644 --- a/src/services/utilities.ts +++ b/src/services/utilities.ts @@ -6,32 +6,6 @@ namespace ts { list: Node; } - export function getEndLinePosition(line: number, sourceFile: SourceFile): number { - Debug.assert(line >= 0); - let lineStarts = sourceFile.getLineStarts(); - - let lineIndex = line; - if (lineIndex + 1 === lineStarts.length) { - // last line - return EOF - return sourceFile.text.length - 1; - } - else { - // current line start - let start = lineStarts[lineIndex]; - // take the start position of the next line -1 = it should be some line break - let pos = lineStarts[lineIndex + 1] - 1; - Debug.assert(isLineBreak(sourceFile.text.charCodeAt(pos))); - // walk backwards skipping line breaks, stop the the beginning of current line. - // i.e: - // - // $ <- end of line for this position should match the start position - while (start <= pos && isLineBreak(sourceFile.text.charCodeAt(pos))) { - pos--; - } - return pos; - } - } - export function getLineStartPositionForPosition(position: number, sourceFile: SourceFile): number { let lineStarts = sourceFile.getLineStarts(); let line = sourceFile.getLineAndCharacterOfPosition(position).line; @@ -429,13 +403,53 @@ namespace ts { export function isInString(sourceFile: SourceFile, position: number) { let token = getTokenAtPosition(sourceFile, position); - return token && (token.kind === SyntaxKind.StringLiteral || token.kind === SyntaxKind.StringLiteralType) && position > token.getStart(); + return token && (token.kind === SyntaxKind.StringLiteral || token.kind === SyntaxKind.StringLiteralType) && position > token.getStart(sourceFile); } export function isInComment(sourceFile: SourceFile, position: number) { return isInCommentHelper(sourceFile, position, /*predicate*/ undefined); } + /** + * returns true if the position is in between the open and close elements of an JSX expression. + */ + export function isInsideJsxElementOrAttribute(sourceFile: SourceFile, position: number) { + let token = getTokenAtPosition(sourceFile, position); + + if (!token) { + return false; + } + + //
Hello |
+ if (token.kind === SyntaxKind.LessThanToken && token.parent.kind === SyntaxKind.JsxText) { + return true; + } + + //
{ |
or
+ if (token.kind === SyntaxKind.LessThanToken && token.parent.kind === SyntaxKind.JsxExpression) { + return true; + } + + //
{ + // | + // } < /div> + if (token && token.kind === SyntaxKind.CloseBraceToken && token.parent.kind === SyntaxKind.JsxExpression) { + return true; + } + + //
|
+ if (token.kind === SyntaxKind.LessThanToken && token.parent.kind === SyntaxKind.JsxClosingElement) { + return true; + } + + return false; + } + + export function isInTemplateString(sourceFile: SourceFile, position: number) { + let token = getTokenAtPosition(sourceFile, position); + return isTemplateLiteralKind(token.kind) && position > token.getStart(sourceFile); + } + /** * Returns true if the cursor at position in sourceFile is within a comment that additionally * satisfies predicate, and false otherwise. @@ -443,7 +457,7 @@ namespace ts { export function isInCommentHelper(sourceFile: SourceFile, position: number, predicate?: (c: CommentRange) => boolean): boolean { let token = getTokenAtPosition(sourceFile, position); - if (token && position <= token.getStart()) { + if (token && position <= token.getStart(sourceFile)) { let commentRanges = getLeadingCommentRanges(sourceFile.text, token.pos); // The end marker of a single-line comment does not include the newline character. @@ -837,4 +851,22 @@ namespace ts { }; return name; } + + export function scriptKindIs(fileName: string, host: LanguageServiceHost, ...scriptKinds: ScriptKind[]): boolean { + const scriptKind = getScriptKind(fileName, host); + return forEach(scriptKinds, k => k === scriptKind); + } + + export function getScriptKind(fileName: string, host?: LanguageServiceHost): ScriptKind { + // First check to see if the script kind was specified by the host. Chances are the host + // may override the default script kind for the file extension. + let scriptKind: ScriptKind; + if (host && host.getScriptKind) { + scriptKind = host.getScriptKind(fileName); + } + if (!scriptKind || scriptKind === ScriptKind.Unknown) { + scriptKind = getScriptKindFromFileName(fileName); + } + return ensureScriptKind(fileName, scriptKind); + } } \ No newline at end of file diff --git a/tests/baselines/reference/1.0lib-noErrors.symbols b/tests/baselines/reference/1.0lib-noErrors.symbols index 789018598d1..adedbdb9aa2 100644 --- a/tests/baselines/reference/1.0lib-noErrors.symbols +++ b/tests/baselines/reference/1.0lib-noErrors.symbols @@ -106,22 +106,22 @@ interface PropertyDescriptor { >PropertyDescriptor : Symbol(PropertyDescriptor, Decl(1.0lib-noErrors.ts, 79, 66)) configurable?: boolean; ->configurable : Symbol(configurable, Decl(1.0lib-noErrors.ts, 81, 30)) +>configurable : Symbol(PropertyDescriptor.configurable, Decl(1.0lib-noErrors.ts, 81, 30)) enumerable?: boolean; ->enumerable : Symbol(enumerable, Decl(1.0lib-noErrors.ts, 82, 27)) +>enumerable : Symbol(PropertyDescriptor.enumerable, Decl(1.0lib-noErrors.ts, 82, 27)) value?: any; ->value : Symbol(value, Decl(1.0lib-noErrors.ts, 83, 25)) +>value : Symbol(PropertyDescriptor.value, Decl(1.0lib-noErrors.ts, 83, 25)) writable?: boolean; ->writable : Symbol(writable, Decl(1.0lib-noErrors.ts, 84, 16)) +>writable : Symbol(PropertyDescriptor.writable, Decl(1.0lib-noErrors.ts, 84, 16)) get?(): any; ->get : Symbol(get, Decl(1.0lib-noErrors.ts, 85, 23)) +>get : Symbol(PropertyDescriptor.get, Decl(1.0lib-noErrors.ts, 85, 23)) set?(v: any): void; ->set : Symbol(set, Decl(1.0lib-noErrors.ts, 86, 16)) +>set : Symbol(PropertyDescriptor.set, Decl(1.0lib-noErrors.ts, 86, 16)) >v : Symbol(v, Decl(1.0lib-noErrors.ts, 87, 9)) } @@ -138,20 +138,20 @@ interface Object { /** The initial value of Object.prototype.constructor is the standard built-in Object constructor. */ constructor: Function; ->constructor : Symbol(constructor, Decl(1.0lib-noErrors.ts, 94, 18)) +>constructor : Symbol(Object.constructor, Decl(1.0lib-noErrors.ts, 94, 18)) >Function : Symbol(Function, Decl(1.0lib-noErrors.ts, 221, 1), Decl(1.0lib-noErrors.ts, 257, 11)) /** Returns a string representation of an object. */ toString(): string; ->toString : Symbol(toString, Decl(1.0lib-noErrors.ts, 96, 26)) +>toString : Symbol(Object.toString, Decl(1.0lib-noErrors.ts, 96, 26)) /** Returns a date converted to a string using the current locale. */ toLocaleString(): string; ->toLocaleString : Symbol(toLocaleString, Decl(1.0lib-noErrors.ts, 99, 23)) +>toLocaleString : Symbol(Object.toLocaleString, Decl(1.0lib-noErrors.ts, 99, 23)) /** Returns the primitive value of the specified object. */ valueOf(): Object; ->valueOf : Symbol(valueOf, Decl(1.0lib-noErrors.ts, 102, 29)) +>valueOf : Symbol(Object.valueOf, Decl(1.0lib-noErrors.ts, 102, 29)) >Object : Symbol(Object, Decl(1.0lib-noErrors.ts, 92, 1), Decl(1.0lib-noErrors.ts, 129, 11)) /** @@ -159,7 +159,7 @@ interface Object { * @param v A property name. */ hasOwnProperty(v: string): boolean; ->hasOwnProperty : Symbol(hasOwnProperty, Decl(1.0lib-noErrors.ts, 105, 22)) +>hasOwnProperty : Symbol(Object.hasOwnProperty, Decl(1.0lib-noErrors.ts, 105, 22)) >v : Symbol(v, Decl(1.0lib-noErrors.ts, 111, 19)) /** @@ -167,7 +167,7 @@ interface Object { * @param v Another object whose prototype chain is to be checked. */ isPrototypeOf(v: Object): boolean; ->isPrototypeOf : Symbol(isPrototypeOf, Decl(1.0lib-noErrors.ts, 111, 39)) +>isPrototypeOf : Symbol(Object.isPrototypeOf, Decl(1.0lib-noErrors.ts, 111, 39)) >v : Symbol(v, Decl(1.0lib-noErrors.ts, 117, 18)) >Object : Symbol(Object, Decl(1.0lib-noErrors.ts, 92, 1), Decl(1.0lib-noErrors.ts, 129, 11)) @@ -176,7 +176,7 @@ interface Object { * @param v A property name. */ propertyIsEnumerable(v: string): boolean; ->propertyIsEnumerable : Symbol(propertyIsEnumerable, Decl(1.0lib-noErrors.ts, 117, 38)) +>propertyIsEnumerable : Symbol(Object.propertyIsEnumerable, Decl(1.0lib-noErrors.ts, 117, 38)) >v : Symbol(v, Decl(1.0lib-noErrors.ts, 123, 25)) } @@ -332,7 +332,7 @@ interface Function { * @param argArray A set of arguments to be passed to the function. */ apply(thisArg: any, argArray?: any): any; ->apply : Symbol(apply, Decl(1.0lib-noErrors.ts, 226, 20)) +>apply : Symbol(Function.apply, Decl(1.0lib-noErrors.ts, 226, 20)) >thisArg : Symbol(thisArg, Decl(1.0lib-noErrors.ts, 232, 10)) >argArray : Symbol(argArray, Decl(1.0lib-noErrors.ts, 232, 23)) @@ -342,7 +342,7 @@ interface Function { * @param argArray A list of arguments to be passed to the method. */ call(thisArg: any, ...argArray: any[]): any; ->call : Symbol(call, Decl(1.0lib-noErrors.ts, 232, 45)) +>call : Symbol(Function.call, Decl(1.0lib-noErrors.ts, 232, 45)) >thisArg : Symbol(thisArg, Decl(1.0lib-noErrors.ts, 239, 9)) >argArray : Symbol(argArray, Decl(1.0lib-noErrors.ts, 239, 22)) @@ -353,22 +353,22 @@ interface Function { * @param argArray A list of arguments to be passed to the new function. */ bind(thisArg: any, ...argArray: any[]): any; ->bind : Symbol(bind, Decl(1.0lib-noErrors.ts, 239, 48)) +>bind : Symbol(Function.bind, Decl(1.0lib-noErrors.ts, 239, 48)) >thisArg : Symbol(thisArg, Decl(1.0lib-noErrors.ts, 247, 9)) >argArray : Symbol(argArray, Decl(1.0lib-noErrors.ts, 247, 22)) prototype: any; ->prototype : Symbol(prototype, Decl(1.0lib-noErrors.ts, 247, 48)) +>prototype : Symbol(Function.prototype, Decl(1.0lib-noErrors.ts, 247, 48)) length: number; ->length : Symbol(length, Decl(1.0lib-noErrors.ts, 249, 19)) +>length : Symbol(Function.length, Decl(1.0lib-noErrors.ts, 249, 19)) // Non-standard extensions arguments: any; ->arguments : Symbol(arguments, Decl(1.0lib-noErrors.ts, 250, 19)) +>arguments : Symbol(Function.arguments, Decl(1.0lib-noErrors.ts, 250, 19)) caller: Function; ->caller : Symbol(caller, Decl(1.0lib-noErrors.ts, 253, 19)) +>caller : Symbol(Function.caller, Decl(1.0lib-noErrors.ts, 253, 19)) >Function : Symbol(Function, Decl(1.0lib-noErrors.ts, 221, 1), Decl(1.0lib-noErrors.ts, 257, 11)) } @@ -399,10 +399,10 @@ interface IArguments { >index : Symbol(index, Decl(1.0lib-noErrors.ts, 268, 5)) length: number; ->length : Symbol(length, Decl(1.0lib-noErrors.ts, 268, 25)) +>length : Symbol(IArguments.length, Decl(1.0lib-noErrors.ts, 268, 25)) callee: Function; ->callee : Symbol(callee, Decl(1.0lib-noErrors.ts, 269, 19)) +>callee : Symbol(IArguments.callee, Decl(1.0lib-noErrors.ts, 269, 19)) >Function : Symbol(Function, Decl(1.0lib-noErrors.ts, 221, 1), Decl(1.0lib-noErrors.ts, 257, 11)) } @@ -411,14 +411,14 @@ interface String { /** Returns a string representation of a string. */ toString(): string; ->toString : Symbol(toString, Decl(1.0lib-noErrors.ts, 273, 18)) +>toString : Symbol(String.toString, Decl(1.0lib-noErrors.ts, 273, 18)) /** * Returns the character at the specified index. * @param pos The zero-based index of the desired character. */ charAt(pos: number): string; ->charAt : Symbol(charAt, Decl(1.0lib-noErrors.ts, 275, 23)) +>charAt : Symbol(String.charAt, Decl(1.0lib-noErrors.ts, 275, 23)) >pos : Symbol(pos, Decl(1.0lib-noErrors.ts, 281, 11)) /** @@ -426,7 +426,7 @@ interface String { * @param index The zero-based index of the desired character. If there is no character at the specified index, NaN is returned. */ charCodeAt(index: number): number; ->charCodeAt : Symbol(charCodeAt, Decl(1.0lib-noErrors.ts, 281, 32)) +>charCodeAt : Symbol(String.charCodeAt, Decl(1.0lib-noErrors.ts, 281, 32)) >index : Symbol(index, Decl(1.0lib-noErrors.ts, 287, 15)) /** @@ -434,7 +434,7 @@ interface String { * @param strings The strings to append to the end of the string. */ concat(...strings: string[]): string; ->concat : Symbol(concat, Decl(1.0lib-noErrors.ts, 287, 38)) +>concat : Symbol(String.concat, Decl(1.0lib-noErrors.ts, 287, 38)) >strings : Symbol(strings, Decl(1.0lib-noErrors.ts, 293, 11)) /** @@ -443,7 +443,7 @@ interface String { * @param position The index at which to begin searching the String object. If omitted, search starts at the beginning of the string. */ indexOf(searchString: string, position?: number): number; ->indexOf : Symbol(indexOf, Decl(1.0lib-noErrors.ts, 293, 41)) +>indexOf : Symbol(String.indexOf, Decl(1.0lib-noErrors.ts, 293, 41)) >searchString : Symbol(searchString, Decl(1.0lib-noErrors.ts, 300, 12)) >position : Symbol(position, Decl(1.0lib-noErrors.ts, 300, 33)) @@ -453,7 +453,7 @@ interface String { * @param position The index at which to begin searching. If omitted, the search begins at the end of the string. */ lastIndexOf(searchString: string, position?: number): number; ->lastIndexOf : Symbol(lastIndexOf, Decl(1.0lib-noErrors.ts, 300, 61)) +>lastIndexOf : Symbol(String.lastIndexOf, Decl(1.0lib-noErrors.ts, 300, 61)) >searchString : Symbol(searchString, Decl(1.0lib-noErrors.ts, 307, 16)) >position : Symbol(position, Decl(1.0lib-noErrors.ts, 307, 37)) @@ -462,7 +462,7 @@ interface String { * @param that String to compare to target string */ localeCompare(that: string): number; ->localeCompare : Symbol(localeCompare, Decl(1.0lib-noErrors.ts, 307, 65)) +>localeCompare : Symbol(String.localeCompare, Decl(1.0lib-noErrors.ts, 307, 65)) >that : Symbol(that, Decl(1.0lib-noErrors.ts, 313, 18)) /** @@ -470,7 +470,7 @@ interface String { * @param regexp A variable name or string literal containing the regular expression pattern and flags. */ match(regexp: string): string[]; ->match : Symbol(match, Decl(1.0lib-noErrors.ts, 313, 40), Decl(1.0lib-noErrors.ts, 319, 36)) +>match : Symbol(String.match, Decl(1.0lib-noErrors.ts, 313, 40), Decl(1.0lib-noErrors.ts, 319, 36)) >regexp : Symbol(regexp, Decl(1.0lib-noErrors.ts, 319, 10)) /** @@ -478,7 +478,7 @@ interface String { * @param regexp A regular expression object that contains the regular expression pattern and applicable flags. */ match(regexp: RegExp): string[]; ->match : Symbol(match, Decl(1.0lib-noErrors.ts, 313, 40), Decl(1.0lib-noErrors.ts, 319, 36)) +>match : Symbol(String.match, Decl(1.0lib-noErrors.ts, 313, 40), Decl(1.0lib-noErrors.ts, 319, 36)) >regexp : Symbol(regexp, Decl(1.0lib-noErrors.ts, 325, 10)) >RegExp : Symbol(RegExp, Decl(1.0lib-noErrors.ts, 822, 1), Decl(1.0lib-noErrors.ts, 855, 11)) @@ -488,7 +488,7 @@ interface String { * @param replaceValue A String object or string literal containing the text to replace for every successful match of rgExp in stringObj. */ replace(searchValue: string, replaceValue: string): string; ->replace : Symbol(replace, Decl(1.0lib-noErrors.ts, 325, 36), Decl(1.0lib-noErrors.ts, 332, 63), Decl(1.0lib-noErrors.ts, 339, 102), Decl(1.0lib-noErrors.ts, 346, 63)) +>replace : Symbol(String.replace, Decl(1.0lib-noErrors.ts, 325, 36), Decl(1.0lib-noErrors.ts, 332, 63), Decl(1.0lib-noErrors.ts, 339, 102), Decl(1.0lib-noErrors.ts, 346, 63)) >searchValue : Symbol(searchValue, Decl(1.0lib-noErrors.ts, 332, 12)) >replaceValue : Symbol(replaceValue, Decl(1.0lib-noErrors.ts, 332, 32)) @@ -498,7 +498,7 @@ interface String { * @param replaceValue A function that returns the replacement text. */ replace(searchValue: string, replaceValue: (substring: string, ...args: any[]) => string): string; ->replace : Symbol(replace, Decl(1.0lib-noErrors.ts, 325, 36), Decl(1.0lib-noErrors.ts, 332, 63), Decl(1.0lib-noErrors.ts, 339, 102), Decl(1.0lib-noErrors.ts, 346, 63)) +>replace : Symbol(String.replace, Decl(1.0lib-noErrors.ts, 325, 36), Decl(1.0lib-noErrors.ts, 332, 63), Decl(1.0lib-noErrors.ts, 339, 102), Decl(1.0lib-noErrors.ts, 346, 63)) >searchValue : Symbol(searchValue, Decl(1.0lib-noErrors.ts, 339, 12)) >replaceValue : Symbol(replaceValue, Decl(1.0lib-noErrors.ts, 339, 32)) >substring : Symbol(substring, Decl(1.0lib-noErrors.ts, 339, 48)) @@ -510,7 +510,7 @@ interface String { * @param replaceValue A String object or string literal containing the text to replace for every successful match of rgExp in stringObj. */ replace(searchValue: RegExp, replaceValue: string): string; ->replace : Symbol(replace, Decl(1.0lib-noErrors.ts, 325, 36), Decl(1.0lib-noErrors.ts, 332, 63), Decl(1.0lib-noErrors.ts, 339, 102), Decl(1.0lib-noErrors.ts, 346, 63)) +>replace : Symbol(String.replace, Decl(1.0lib-noErrors.ts, 325, 36), Decl(1.0lib-noErrors.ts, 332, 63), Decl(1.0lib-noErrors.ts, 339, 102), Decl(1.0lib-noErrors.ts, 346, 63)) >searchValue : Symbol(searchValue, Decl(1.0lib-noErrors.ts, 346, 12)) >RegExp : Symbol(RegExp, Decl(1.0lib-noErrors.ts, 822, 1), Decl(1.0lib-noErrors.ts, 855, 11)) >replaceValue : Symbol(replaceValue, Decl(1.0lib-noErrors.ts, 346, 32)) @@ -521,7 +521,7 @@ interface String { * @param replaceValue A function that returns the replacement text. */ replace(searchValue: RegExp, replaceValue: (substring: string, ...args: any[]) => string): string; ->replace : Symbol(replace, Decl(1.0lib-noErrors.ts, 325, 36), Decl(1.0lib-noErrors.ts, 332, 63), Decl(1.0lib-noErrors.ts, 339, 102), Decl(1.0lib-noErrors.ts, 346, 63)) +>replace : Symbol(String.replace, Decl(1.0lib-noErrors.ts, 325, 36), Decl(1.0lib-noErrors.ts, 332, 63), Decl(1.0lib-noErrors.ts, 339, 102), Decl(1.0lib-noErrors.ts, 346, 63)) >searchValue : Symbol(searchValue, Decl(1.0lib-noErrors.ts, 353, 12)) >RegExp : Symbol(RegExp, Decl(1.0lib-noErrors.ts, 822, 1), Decl(1.0lib-noErrors.ts, 855, 11)) >replaceValue : Symbol(replaceValue, Decl(1.0lib-noErrors.ts, 353, 32)) @@ -533,7 +533,7 @@ interface String { * @param regexp The regular expression pattern and applicable flags. */ search(regexp: string): number; ->search : Symbol(search, Decl(1.0lib-noErrors.ts, 353, 102), Decl(1.0lib-noErrors.ts, 359, 35)) +>search : Symbol(String.search, Decl(1.0lib-noErrors.ts, 353, 102), Decl(1.0lib-noErrors.ts, 359, 35)) >regexp : Symbol(regexp, Decl(1.0lib-noErrors.ts, 359, 11)) /** @@ -541,7 +541,7 @@ interface String { * @param regexp The regular expression pattern and applicable flags. */ search(regexp: RegExp): number; ->search : Symbol(search, Decl(1.0lib-noErrors.ts, 353, 102), Decl(1.0lib-noErrors.ts, 359, 35)) +>search : Symbol(String.search, Decl(1.0lib-noErrors.ts, 353, 102), Decl(1.0lib-noErrors.ts, 359, 35)) >regexp : Symbol(regexp, Decl(1.0lib-noErrors.ts, 365, 11)) >RegExp : Symbol(RegExp, Decl(1.0lib-noErrors.ts, 822, 1), Decl(1.0lib-noErrors.ts, 855, 11)) @@ -552,7 +552,7 @@ interface String { * If this value is not specified, the substring continues to the end of stringObj. */ slice(start?: number, end?: number): string; ->slice : Symbol(slice, Decl(1.0lib-noErrors.ts, 365, 35)) +>slice : Symbol(String.slice, Decl(1.0lib-noErrors.ts, 365, 35)) >start : Symbol(start, Decl(1.0lib-noErrors.ts, 373, 10)) >end : Symbol(end, Decl(1.0lib-noErrors.ts, 373, 25)) @@ -562,7 +562,7 @@ interface String { * @param limit A value used to limit the number of elements returned in the array. */ split(separator: string, limit?: number): string[]; ->split : Symbol(split, Decl(1.0lib-noErrors.ts, 373, 48), Decl(1.0lib-noErrors.ts, 380, 55)) +>split : Symbol(String.split, Decl(1.0lib-noErrors.ts, 373, 48), Decl(1.0lib-noErrors.ts, 380, 55)) >separator : Symbol(separator, Decl(1.0lib-noErrors.ts, 380, 10)) >limit : Symbol(limit, Decl(1.0lib-noErrors.ts, 380, 28)) @@ -572,7 +572,7 @@ interface String { * @param limit A value used to limit the number of elements returned in the array. */ split(separator: RegExp, limit?: number): string[]; ->split : Symbol(split, Decl(1.0lib-noErrors.ts, 373, 48), Decl(1.0lib-noErrors.ts, 380, 55)) +>split : Symbol(String.split, Decl(1.0lib-noErrors.ts, 373, 48), Decl(1.0lib-noErrors.ts, 380, 55)) >separator : Symbol(separator, Decl(1.0lib-noErrors.ts, 387, 10)) >RegExp : Symbol(RegExp, Decl(1.0lib-noErrors.ts, 822, 1), Decl(1.0lib-noErrors.ts, 855, 11)) >limit : Symbol(limit, Decl(1.0lib-noErrors.ts, 387, 28)) @@ -584,33 +584,33 @@ interface String { * If end is omitted, the characters from start through the end of the original string are returned. */ substring(start: number, end?: number): string; ->substring : Symbol(substring, Decl(1.0lib-noErrors.ts, 387, 55)) +>substring : Symbol(String.substring, Decl(1.0lib-noErrors.ts, 387, 55)) >start : Symbol(start, Decl(1.0lib-noErrors.ts, 395, 14)) >end : Symbol(end, Decl(1.0lib-noErrors.ts, 395, 28)) /** Converts all the alphabetic characters in a string to lowercase. */ toLowerCase(): string; ->toLowerCase : Symbol(toLowerCase, Decl(1.0lib-noErrors.ts, 395, 51)) +>toLowerCase : Symbol(String.toLowerCase, Decl(1.0lib-noErrors.ts, 395, 51)) /** Converts all alphabetic characters to lowercase, taking into account the host environment's current locale. */ toLocaleLowerCase(): string; ->toLocaleLowerCase : Symbol(toLocaleLowerCase, Decl(1.0lib-noErrors.ts, 398, 26)) +>toLocaleLowerCase : Symbol(String.toLocaleLowerCase, Decl(1.0lib-noErrors.ts, 398, 26)) /** Converts all the alphabetic characters in a string to uppercase. */ toUpperCase(): string; ->toUpperCase : Symbol(toUpperCase, Decl(1.0lib-noErrors.ts, 401, 32)) +>toUpperCase : Symbol(String.toUpperCase, Decl(1.0lib-noErrors.ts, 401, 32)) /** Returns a string where all alphabetic characters have been converted to uppercase, taking into account the host environment's current locale. */ toLocaleUpperCase(): string; ->toLocaleUpperCase : Symbol(toLocaleUpperCase, Decl(1.0lib-noErrors.ts, 404, 26)) +>toLocaleUpperCase : Symbol(String.toLocaleUpperCase, Decl(1.0lib-noErrors.ts, 404, 26)) /** Removes the leading and trailing white space and line terminator characters from a string. */ trim(): string; ->trim : Symbol(trim, Decl(1.0lib-noErrors.ts, 407, 32)) +>trim : Symbol(String.trim, Decl(1.0lib-noErrors.ts, 407, 32)) /** Returns the length of a String object. */ length: number; ->length : Symbol(length, Decl(1.0lib-noErrors.ts, 410, 19)) +>length : Symbol(String.length, Decl(1.0lib-noErrors.ts, 410, 19)) // IE extensions /** @@ -619,7 +619,7 @@ interface String { * @param length The number of characters to include in the returned substring. */ substr(from: number, length?: number): string; ->substr : Symbol(substr, Decl(1.0lib-noErrors.ts, 413, 19)) +>substr : Symbol(String.substr, Decl(1.0lib-noErrors.ts, 413, 19)) >from : Symbol(from, Decl(1.0lib-noErrors.ts, 421, 11)) >length : Symbol(length, Decl(1.0lib-noErrors.ts, 421, 24)) @@ -675,7 +675,7 @@ interface Number { * @param radix Specifies a radix for converting numeric values to strings. This value is only used for numbers. */ toString(radix?: number): string; ->toString : Symbol(toString, Decl(1.0lib-noErrors.ts, 444, 18)) +>toString : Symbol(Number.toString, Decl(1.0lib-noErrors.ts, 444, 18)) >radix : Symbol(radix, Decl(1.0lib-noErrors.ts, 449, 13)) /** @@ -683,7 +683,7 @@ interface Number { * @param fractionDigits Number of digits after the decimal point. Must be in the range 0 - 20, inclusive. */ toFixed(fractionDigits?: number): string; ->toFixed : Symbol(toFixed, Decl(1.0lib-noErrors.ts, 449, 37)) +>toFixed : Symbol(Number.toFixed, Decl(1.0lib-noErrors.ts, 449, 37)) >fractionDigits : Symbol(fractionDigits, Decl(1.0lib-noErrors.ts, 455, 12)) /** @@ -691,7 +691,7 @@ interface Number { * @param fractionDigits Number of digits after the decimal point. Must be in the range 0 - 20, inclusive. */ toExponential(fractionDigits?: number): string; ->toExponential : Symbol(toExponential, Decl(1.0lib-noErrors.ts, 455, 45)) +>toExponential : Symbol(Number.toExponential, Decl(1.0lib-noErrors.ts, 455, 45)) >fractionDigits : Symbol(fractionDigits, Decl(1.0lib-noErrors.ts, 461, 18)) /** @@ -699,7 +699,7 @@ interface Number { * @param precision Number of significant digits. Must be in the range 1 - 21, inclusive. */ toPrecision(precision?: number): string; ->toPrecision : Symbol(toPrecision, Decl(1.0lib-noErrors.ts, 461, 51)) +>toPrecision : Symbol(Number.toPrecision, Decl(1.0lib-noErrors.ts, 461, 51)) >precision : Symbol(precision, Decl(1.0lib-noErrors.ts, 467, 16)) } @@ -753,35 +753,35 @@ interface Math { /** The mathematical constant e. This is Euler's number, the base of natural logarithms. */ E: number; ->E : Symbol(E, Decl(1.0lib-noErrors.ts, 501, 16)) +>E : Symbol(Math.E, Decl(1.0lib-noErrors.ts, 501, 16)) /** The natural logarithm of 10. */ LN10: number; ->LN10 : Symbol(LN10, Decl(1.0lib-noErrors.ts, 503, 14)) +>LN10 : Symbol(Math.LN10, Decl(1.0lib-noErrors.ts, 503, 14)) /** The natural logarithm of 2. */ LN2: number; ->LN2 : Symbol(LN2, Decl(1.0lib-noErrors.ts, 505, 17)) +>LN2 : Symbol(Math.LN2, Decl(1.0lib-noErrors.ts, 505, 17)) /** The base-2 logarithm of e. */ LOG2E: number; ->LOG2E : Symbol(LOG2E, Decl(1.0lib-noErrors.ts, 507, 16)) +>LOG2E : Symbol(Math.LOG2E, Decl(1.0lib-noErrors.ts, 507, 16)) /** The base-10 logarithm of e. */ LOG10E: number; ->LOG10E : Symbol(LOG10E, Decl(1.0lib-noErrors.ts, 509, 18)) +>LOG10E : Symbol(Math.LOG10E, Decl(1.0lib-noErrors.ts, 509, 18)) /** Pi. This is the ratio of the circumference of a circle to its diameter. */ PI: number; ->PI : Symbol(PI, Decl(1.0lib-noErrors.ts, 511, 19)) +>PI : Symbol(Math.PI, Decl(1.0lib-noErrors.ts, 511, 19)) /** The square root of 0.5, or, equivalently, one divided by the square root of 2. */ SQRT1_2: number; ->SQRT1_2 : Symbol(SQRT1_2, Decl(1.0lib-noErrors.ts, 513, 15)) +>SQRT1_2 : Symbol(Math.SQRT1_2, Decl(1.0lib-noErrors.ts, 513, 15)) /** The square root of 2. */ SQRT2: number; ->SQRT2 : Symbol(SQRT2, Decl(1.0lib-noErrors.ts, 515, 20)) +>SQRT2 : Symbol(Math.SQRT2, Decl(1.0lib-noErrors.ts, 515, 20)) /** * Returns the absolute value of a number (the value without regard to whether it is positive or negative). @@ -789,7 +789,7 @@ interface Math { * @param x A numeric expression for which the absolute value is needed. */ abs(x: number): number; ->abs : Symbol(abs, Decl(1.0lib-noErrors.ts, 517, 18)) +>abs : Symbol(Math.abs, Decl(1.0lib-noErrors.ts, 517, 18)) >x : Symbol(x, Decl(1.0lib-noErrors.ts, 523, 8)) /** @@ -797,7 +797,7 @@ interface Math { * @param x A numeric expression. */ acos(x: number): number; ->acos : Symbol(acos, Decl(1.0lib-noErrors.ts, 523, 27)) +>acos : Symbol(Math.acos, Decl(1.0lib-noErrors.ts, 523, 27)) >x : Symbol(x, Decl(1.0lib-noErrors.ts, 528, 9)) /** @@ -805,7 +805,7 @@ interface Math { * @param x A numeric expression. */ asin(x: number): number; ->asin : Symbol(asin, Decl(1.0lib-noErrors.ts, 528, 28)) +>asin : Symbol(Math.asin, Decl(1.0lib-noErrors.ts, 528, 28)) >x : Symbol(x, Decl(1.0lib-noErrors.ts, 533, 9)) /** @@ -813,7 +813,7 @@ interface Math { * @param x A numeric expression for which the arctangent is needed. */ atan(x: number): number; ->atan : Symbol(atan, Decl(1.0lib-noErrors.ts, 533, 28)) +>atan : Symbol(Math.atan, Decl(1.0lib-noErrors.ts, 533, 28)) >x : Symbol(x, Decl(1.0lib-noErrors.ts, 538, 9)) /** @@ -822,7 +822,7 @@ interface Math { * @param x A numeric expression representing the cartesian x-coordinate. */ atan2(y: number, x: number): number; ->atan2 : Symbol(atan2, Decl(1.0lib-noErrors.ts, 538, 28)) +>atan2 : Symbol(Math.atan2, Decl(1.0lib-noErrors.ts, 538, 28)) >y : Symbol(y, Decl(1.0lib-noErrors.ts, 544, 10)) >x : Symbol(x, Decl(1.0lib-noErrors.ts, 544, 20)) @@ -831,7 +831,7 @@ interface Math { * @param x A numeric expression. */ ceil(x: number): number; ->ceil : Symbol(ceil, Decl(1.0lib-noErrors.ts, 544, 40)) +>ceil : Symbol(Math.ceil, Decl(1.0lib-noErrors.ts, 544, 40)) >x : Symbol(x, Decl(1.0lib-noErrors.ts, 549, 9)) /** @@ -839,7 +839,7 @@ interface Math { * @param x A numeric expression that contains an angle measured in radians. */ cos(x: number): number; ->cos : Symbol(cos, Decl(1.0lib-noErrors.ts, 549, 28)) +>cos : Symbol(Math.cos, Decl(1.0lib-noErrors.ts, 549, 28)) >x : Symbol(x, Decl(1.0lib-noErrors.ts, 554, 8)) /** @@ -847,7 +847,7 @@ interface Math { * @param x A numeric expression representing the power of e. */ exp(x: number): number; ->exp : Symbol(exp, Decl(1.0lib-noErrors.ts, 554, 27)) +>exp : Symbol(Math.exp, Decl(1.0lib-noErrors.ts, 554, 27)) >x : Symbol(x, Decl(1.0lib-noErrors.ts, 559, 8)) /** @@ -855,7 +855,7 @@ interface Math { * @param x A numeric expression. */ floor(x: number): number; ->floor : Symbol(floor, Decl(1.0lib-noErrors.ts, 559, 27)) +>floor : Symbol(Math.floor, Decl(1.0lib-noErrors.ts, 559, 27)) >x : Symbol(x, Decl(1.0lib-noErrors.ts, 564, 10)) /** @@ -863,7 +863,7 @@ interface Math { * @param x A numeric expression. */ log(x: number): number; ->log : Symbol(log, Decl(1.0lib-noErrors.ts, 564, 29)) +>log : Symbol(Math.log, Decl(1.0lib-noErrors.ts, 564, 29)) >x : Symbol(x, Decl(1.0lib-noErrors.ts, 569, 8)) /** @@ -871,7 +871,7 @@ interface Math { * @param values Numeric expressions to be evaluated. */ max(...values: number[]): number; ->max : Symbol(max, Decl(1.0lib-noErrors.ts, 569, 27)) +>max : Symbol(Math.max, Decl(1.0lib-noErrors.ts, 569, 27)) >values : Symbol(values, Decl(1.0lib-noErrors.ts, 574, 8)) /** @@ -879,7 +879,7 @@ interface Math { * @param values Numeric expressions to be evaluated. */ min(...values: number[]): number; ->min : Symbol(min, Decl(1.0lib-noErrors.ts, 574, 37)) +>min : Symbol(Math.min, Decl(1.0lib-noErrors.ts, 574, 37)) >values : Symbol(values, Decl(1.0lib-noErrors.ts, 579, 8)) /** @@ -888,20 +888,20 @@ interface Math { * @param y The exponent value of the expression. */ pow(x: number, y: number): number; ->pow : Symbol(pow, Decl(1.0lib-noErrors.ts, 579, 37)) +>pow : Symbol(Math.pow, Decl(1.0lib-noErrors.ts, 579, 37)) >x : Symbol(x, Decl(1.0lib-noErrors.ts, 585, 8)) >y : Symbol(y, Decl(1.0lib-noErrors.ts, 585, 18)) /** Returns a pseudorandom number between 0 and 1. */ random(): number; ->random : Symbol(random, Decl(1.0lib-noErrors.ts, 585, 38)) +>random : Symbol(Math.random, Decl(1.0lib-noErrors.ts, 585, 38)) /** * Returns a supplied numeric expression rounded to the nearest number. * @param x The value to be rounded to the nearest number. */ round(x: number): number; ->round : Symbol(round, Decl(1.0lib-noErrors.ts, 587, 21)) +>round : Symbol(Math.round, Decl(1.0lib-noErrors.ts, 587, 21)) >x : Symbol(x, Decl(1.0lib-noErrors.ts, 592, 10)) /** @@ -909,7 +909,7 @@ interface Math { * @param x A numeric expression that contains an angle measured in radians. */ sin(x: number): number; ->sin : Symbol(sin, Decl(1.0lib-noErrors.ts, 592, 29)) +>sin : Symbol(Math.sin, Decl(1.0lib-noErrors.ts, 592, 29)) >x : Symbol(x, Decl(1.0lib-noErrors.ts, 597, 8)) /** @@ -917,7 +917,7 @@ interface Math { * @param x A numeric expression. */ sqrt(x: number): number; ->sqrt : Symbol(sqrt, Decl(1.0lib-noErrors.ts, 597, 27)) +>sqrt : Symbol(Math.sqrt, Decl(1.0lib-noErrors.ts, 597, 27)) >x : Symbol(x, Decl(1.0lib-noErrors.ts, 602, 9)) /** @@ -925,7 +925,7 @@ interface Math { * @param x A numeric expression that contains an angle measured in radians. */ tan(x: number): number; ->tan : Symbol(tan, Decl(1.0lib-noErrors.ts, 602, 28)) +>tan : Symbol(Math.tan, Decl(1.0lib-noErrors.ts, 602, 28)) >x : Symbol(x, Decl(1.0lib-noErrors.ts, 607, 8)) } /** An intrinsic object that provides basic mathematics functionality and constants. */ @@ -939,110 +939,110 @@ interface Date { /** Returns a string representation of a date. The format of the string depends on the locale. */ toString(): string; ->toString : Symbol(toString, Decl(1.0lib-noErrors.ts, 613, 16)) +>toString : Symbol(Date.toString, Decl(1.0lib-noErrors.ts, 613, 16)) /** Returns a date as a string value. */ toDateString(): string; ->toDateString : Symbol(toDateString, Decl(1.0lib-noErrors.ts, 615, 23)) +>toDateString : Symbol(Date.toDateString, Decl(1.0lib-noErrors.ts, 615, 23)) /** Returns a time as a string value. */ toTimeString(): string; ->toTimeString : Symbol(toTimeString, Decl(1.0lib-noErrors.ts, 617, 27)) +>toTimeString : Symbol(Date.toTimeString, Decl(1.0lib-noErrors.ts, 617, 27)) /** Returns a value as a string value appropriate to the host environment's current locale. */ toLocaleString(): string; ->toLocaleString : Symbol(toLocaleString, Decl(1.0lib-noErrors.ts, 619, 27)) +>toLocaleString : Symbol(Date.toLocaleString, Decl(1.0lib-noErrors.ts, 619, 27)) /** Returns a date as a string value appropriate to the host environment's current locale. */ toLocaleDateString(): string; ->toLocaleDateString : Symbol(toLocaleDateString, Decl(1.0lib-noErrors.ts, 621, 29)) +>toLocaleDateString : Symbol(Date.toLocaleDateString, Decl(1.0lib-noErrors.ts, 621, 29)) /** Returns a time as a string value appropriate to the host environment's current locale. */ toLocaleTimeString(): string; ->toLocaleTimeString : Symbol(toLocaleTimeString, Decl(1.0lib-noErrors.ts, 623, 33)) +>toLocaleTimeString : Symbol(Date.toLocaleTimeString, Decl(1.0lib-noErrors.ts, 623, 33)) /** Returns the stored time value in milliseconds since midnight, January 1, 1970 UTC. */ valueOf(): number; ->valueOf : Symbol(valueOf, Decl(1.0lib-noErrors.ts, 625, 33)) +>valueOf : Symbol(Date.valueOf, Decl(1.0lib-noErrors.ts, 625, 33)) /** Gets the time value in milliseconds. */ getTime(): number; ->getTime : Symbol(getTime, Decl(1.0lib-noErrors.ts, 627, 22)) +>getTime : Symbol(Date.getTime, Decl(1.0lib-noErrors.ts, 627, 22)) /** Gets the year, using local time. */ getFullYear(): number; ->getFullYear : Symbol(getFullYear, Decl(1.0lib-noErrors.ts, 629, 22)) +>getFullYear : Symbol(Date.getFullYear, Decl(1.0lib-noErrors.ts, 629, 22)) /** Gets the year using Universal Coordinated Time (UTC). */ getUTCFullYear(): number; ->getUTCFullYear : Symbol(getUTCFullYear, Decl(1.0lib-noErrors.ts, 631, 26)) +>getUTCFullYear : Symbol(Date.getUTCFullYear, Decl(1.0lib-noErrors.ts, 631, 26)) /** Gets the month, using local time. */ getMonth(): number; ->getMonth : Symbol(getMonth, Decl(1.0lib-noErrors.ts, 633, 29)) +>getMonth : Symbol(Date.getMonth, Decl(1.0lib-noErrors.ts, 633, 29)) /** Gets the month of a Date object using Universal Coordinated Time (UTC). */ getUTCMonth(): number; ->getUTCMonth : Symbol(getUTCMonth, Decl(1.0lib-noErrors.ts, 635, 23)) +>getUTCMonth : Symbol(Date.getUTCMonth, Decl(1.0lib-noErrors.ts, 635, 23)) /** Gets the day-of-the-month, using local time. */ getDate(): number; ->getDate : Symbol(getDate, Decl(1.0lib-noErrors.ts, 637, 26)) +>getDate : Symbol(Date.getDate, Decl(1.0lib-noErrors.ts, 637, 26)) /** Gets the day-of-the-month, using Universal Coordinated Time (UTC). */ getUTCDate(): number; ->getUTCDate : Symbol(getUTCDate, Decl(1.0lib-noErrors.ts, 639, 22)) +>getUTCDate : Symbol(Date.getUTCDate, Decl(1.0lib-noErrors.ts, 639, 22)) /** Gets the day of the week, using local time. */ getDay(): number; ->getDay : Symbol(getDay, Decl(1.0lib-noErrors.ts, 641, 25)) +>getDay : Symbol(Date.getDay, Decl(1.0lib-noErrors.ts, 641, 25)) /** Gets the day of the week using Universal Coordinated Time (UTC). */ getUTCDay(): number; ->getUTCDay : Symbol(getUTCDay, Decl(1.0lib-noErrors.ts, 643, 21)) +>getUTCDay : Symbol(Date.getUTCDay, Decl(1.0lib-noErrors.ts, 643, 21)) /** Gets the hours in a date, using local time. */ getHours(): number; ->getHours : Symbol(getHours, Decl(1.0lib-noErrors.ts, 645, 24)) +>getHours : Symbol(Date.getHours, Decl(1.0lib-noErrors.ts, 645, 24)) /** Gets the hours value in a Date object using Universal Coordinated Time (UTC). */ getUTCHours(): number; ->getUTCHours : Symbol(getUTCHours, Decl(1.0lib-noErrors.ts, 647, 23)) +>getUTCHours : Symbol(Date.getUTCHours, Decl(1.0lib-noErrors.ts, 647, 23)) /** Gets the minutes of a Date object, using local time. */ getMinutes(): number; ->getMinutes : Symbol(getMinutes, Decl(1.0lib-noErrors.ts, 649, 26)) +>getMinutes : Symbol(Date.getMinutes, Decl(1.0lib-noErrors.ts, 649, 26)) /** Gets the minutes of a Date object using Universal Coordinated Time (UTC). */ getUTCMinutes(): number; ->getUTCMinutes : Symbol(getUTCMinutes, Decl(1.0lib-noErrors.ts, 651, 25)) +>getUTCMinutes : Symbol(Date.getUTCMinutes, Decl(1.0lib-noErrors.ts, 651, 25)) /** Gets the seconds of a Date object, using local time. */ getSeconds(): number; ->getSeconds : Symbol(getSeconds, Decl(1.0lib-noErrors.ts, 653, 28)) +>getSeconds : Symbol(Date.getSeconds, Decl(1.0lib-noErrors.ts, 653, 28)) /** Gets the seconds of a Date object using Universal Coordinated Time (UTC). */ getUTCSeconds(): number; ->getUTCSeconds : Symbol(getUTCSeconds, Decl(1.0lib-noErrors.ts, 655, 25)) +>getUTCSeconds : Symbol(Date.getUTCSeconds, Decl(1.0lib-noErrors.ts, 655, 25)) /** Gets the milliseconds of a Date, using local time. */ getMilliseconds(): number; ->getMilliseconds : Symbol(getMilliseconds, Decl(1.0lib-noErrors.ts, 657, 28)) +>getMilliseconds : Symbol(Date.getMilliseconds, Decl(1.0lib-noErrors.ts, 657, 28)) /** Gets the milliseconds of a Date object using Universal Coordinated Time (UTC). */ getUTCMilliseconds(): number; ->getUTCMilliseconds : Symbol(getUTCMilliseconds, Decl(1.0lib-noErrors.ts, 659, 30)) +>getUTCMilliseconds : Symbol(Date.getUTCMilliseconds, Decl(1.0lib-noErrors.ts, 659, 30)) /** Gets the difference in minutes between the time on the local computer and Universal Coordinated Time (UTC). */ getTimezoneOffset(): number; ->getTimezoneOffset : Symbol(getTimezoneOffset, Decl(1.0lib-noErrors.ts, 661, 33)) +>getTimezoneOffset : Symbol(Date.getTimezoneOffset, Decl(1.0lib-noErrors.ts, 661, 33)) /** * Sets the date and time value in the Date object. * @param time A numeric value representing the number of elapsed milliseconds since midnight, January 1, 1970 GMT. */ setTime(time: number): number; ->setTime : Symbol(setTime, Decl(1.0lib-noErrors.ts, 663, 32)) +>setTime : Symbol(Date.setTime, Decl(1.0lib-noErrors.ts, 663, 32)) >time : Symbol(time, Decl(1.0lib-noErrors.ts, 668, 12)) /** @@ -1050,7 +1050,7 @@ interface Date { * @param ms A numeric value equal to the millisecond value. */ setMilliseconds(ms: number): number; ->setMilliseconds : Symbol(setMilliseconds, Decl(1.0lib-noErrors.ts, 668, 34)) +>setMilliseconds : Symbol(Date.setMilliseconds, Decl(1.0lib-noErrors.ts, 668, 34)) >ms : Symbol(ms, Decl(1.0lib-noErrors.ts, 673, 20)) /** @@ -1058,7 +1058,7 @@ interface Date { * @param ms A numeric value equal to the millisecond value. */ setUTCMilliseconds(ms: number): number; ->setUTCMilliseconds : Symbol(setUTCMilliseconds, Decl(1.0lib-noErrors.ts, 673, 40)) +>setUTCMilliseconds : Symbol(Date.setUTCMilliseconds, Decl(1.0lib-noErrors.ts, 673, 40)) >ms : Symbol(ms, Decl(1.0lib-noErrors.ts, 678, 23)) /** @@ -1067,7 +1067,7 @@ interface Date { * @param ms A numeric value equal to the milliseconds value. */ setSeconds(sec: number, ms?: number): number; ->setSeconds : Symbol(setSeconds, Decl(1.0lib-noErrors.ts, 678, 43)) +>setSeconds : Symbol(Date.setSeconds, Decl(1.0lib-noErrors.ts, 678, 43)) >sec : Symbol(sec, Decl(1.0lib-noErrors.ts, 685, 15)) >ms : Symbol(ms, Decl(1.0lib-noErrors.ts, 685, 27)) @@ -1077,7 +1077,7 @@ interface Date { * @param ms A numeric value equal to the milliseconds value. */ setUTCSeconds(sec: number, ms?: number): number; ->setUTCSeconds : Symbol(setUTCSeconds, Decl(1.0lib-noErrors.ts, 685, 49)) +>setUTCSeconds : Symbol(Date.setUTCSeconds, Decl(1.0lib-noErrors.ts, 685, 49)) >sec : Symbol(sec, Decl(1.0lib-noErrors.ts, 691, 18)) >ms : Symbol(ms, Decl(1.0lib-noErrors.ts, 691, 30)) @@ -1088,7 +1088,7 @@ interface Date { * @param ms A numeric value equal to the milliseconds value. */ setMinutes(min: number, sec?: number, ms?: number): number; ->setMinutes : Symbol(setMinutes, Decl(1.0lib-noErrors.ts, 691, 52)) +>setMinutes : Symbol(Date.setMinutes, Decl(1.0lib-noErrors.ts, 691, 52)) >min : Symbol(min, Decl(1.0lib-noErrors.ts, 698, 15)) >sec : Symbol(sec, Decl(1.0lib-noErrors.ts, 698, 27)) >ms : Symbol(ms, Decl(1.0lib-noErrors.ts, 698, 41)) @@ -1100,7 +1100,7 @@ interface Date { * @param ms A numeric value equal to the milliseconds value. */ setUTCMinutes(min: number, sec?: number, ms?: number): number; ->setUTCMinutes : Symbol(setUTCMinutes, Decl(1.0lib-noErrors.ts, 698, 63)) +>setUTCMinutes : Symbol(Date.setUTCMinutes, Decl(1.0lib-noErrors.ts, 698, 63)) >min : Symbol(min, Decl(1.0lib-noErrors.ts, 705, 18)) >sec : Symbol(sec, Decl(1.0lib-noErrors.ts, 705, 30)) >ms : Symbol(ms, Decl(1.0lib-noErrors.ts, 705, 44)) @@ -1113,7 +1113,7 @@ interface Date { * @param ms A numeric value equal to the milliseconds value. */ setHours(hours: number, min?: number, sec?: number, ms?: number): number; ->setHours : Symbol(setHours, Decl(1.0lib-noErrors.ts, 705, 66)) +>setHours : Symbol(Date.setHours, Decl(1.0lib-noErrors.ts, 705, 66)) >hours : Symbol(hours, Decl(1.0lib-noErrors.ts, 713, 13)) >min : Symbol(min, Decl(1.0lib-noErrors.ts, 713, 27)) >sec : Symbol(sec, Decl(1.0lib-noErrors.ts, 713, 41)) @@ -1127,7 +1127,7 @@ interface Date { * @param ms A numeric value equal to the milliseconds value. */ setUTCHours(hours: number, min?: number, sec?: number, ms?: number): number; ->setUTCHours : Symbol(setUTCHours, Decl(1.0lib-noErrors.ts, 713, 77)) +>setUTCHours : Symbol(Date.setUTCHours, Decl(1.0lib-noErrors.ts, 713, 77)) >hours : Symbol(hours, Decl(1.0lib-noErrors.ts, 721, 16)) >min : Symbol(min, Decl(1.0lib-noErrors.ts, 721, 30)) >sec : Symbol(sec, Decl(1.0lib-noErrors.ts, 721, 44)) @@ -1138,7 +1138,7 @@ interface Date { * @param date A numeric value equal to the day of the month. */ setDate(date: number): number; ->setDate : Symbol(setDate, Decl(1.0lib-noErrors.ts, 721, 80)) +>setDate : Symbol(Date.setDate, Decl(1.0lib-noErrors.ts, 721, 80)) >date : Symbol(date, Decl(1.0lib-noErrors.ts, 726, 12)) /** @@ -1146,7 +1146,7 @@ interface Date { * @param date A numeric value equal to the day of the month. */ setUTCDate(date: number): number; ->setUTCDate : Symbol(setUTCDate, Decl(1.0lib-noErrors.ts, 726, 34)) +>setUTCDate : Symbol(Date.setUTCDate, Decl(1.0lib-noErrors.ts, 726, 34)) >date : Symbol(date, Decl(1.0lib-noErrors.ts, 731, 15)) /** @@ -1155,7 +1155,7 @@ interface Date { * @param date A numeric value representing the day of the month. If this value is not supplied, the value from a call to the getDate method is used. */ setMonth(month: number, date?: number): number; ->setMonth : Symbol(setMonth, Decl(1.0lib-noErrors.ts, 731, 37)) +>setMonth : Symbol(Date.setMonth, Decl(1.0lib-noErrors.ts, 731, 37)) >month : Symbol(month, Decl(1.0lib-noErrors.ts, 737, 13)) >date : Symbol(date, Decl(1.0lib-noErrors.ts, 737, 27)) @@ -1165,7 +1165,7 @@ interface Date { * @param date A numeric value representing the day of the month. If it is not supplied, the value from a call to the getUTCDate method is used. */ setUTCMonth(month: number, date?: number): number; ->setUTCMonth : Symbol(setUTCMonth, Decl(1.0lib-noErrors.ts, 737, 51)) +>setUTCMonth : Symbol(Date.setUTCMonth, Decl(1.0lib-noErrors.ts, 737, 51)) >month : Symbol(month, Decl(1.0lib-noErrors.ts, 743, 16)) >date : Symbol(date, Decl(1.0lib-noErrors.ts, 743, 30)) @@ -1176,7 +1176,7 @@ interface Date { * @param date A numeric value equal for the day of the month. */ setFullYear(year: number, month?: number, date?: number): number; ->setFullYear : Symbol(setFullYear, Decl(1.0lib-noErrors.ts, 743, 54)) +>setFullYear : Symbol(Date.setFullYear, Decl(1.0lib-noErrors.ts, 743, 54)) >year : Symbol(year, Decl(1.0lib-noErrors.ts, 750, 16)) >month : Symbol(month, Decl(1.0lib-noErrors.ts, 750, 29)) >date : Symbol(date, Decl(1.0lib-noErrors.ts, 750, 45)) @@ -1188,22 +1188,22 @@ interface Date { * @param date A numeric value equal to the day of the month. */ setUTCFullYear(year: number, month?: number, date?: number): number; ->setUTCFullYear : Symbol(setUTCFullYear, Decl(1.0lib-noErrors.ts, 750, 69)) +>setUTCFullYear : Symbol(Date.setUTCFullYear, Decl(1.0lib-noErrors.ts, 750, 69)) >year : Symbol(year, Decl(1.0lib-noErrors.ts, 757, 19)) >month : Symbol(month, Decl(1.0lib-noErrors.ts, 757, 32)) >date : Symbol(date, Decl(1.0lib-noErrors.ts, 757, 48)) /** Returns a date converted to a string using Universal Coordinated Time (UTC). */ toUTCString(): string; ->toUTCString : Symbol(toUTCString, Decl(1.0lib-noErrors.ts, 757, 72)) +>toUTCString : Symbol(Date.toUTCString, Decl(1.0lib-noErrors.ts, 757, 72)) /** Returns a date as a string value in ISO format. */ toISOString(): string; ->toISOString : Symbol(toISOString, Decl(1.0lib-noErrors.ts, 759, 26)) +>toISOString : Symbol(Date.toISOString, Decl(1.0lib-noErrors.ts, 759, 26)) /** Used by the JSON.stringify method to enable the transformation of an object's data for JavaScript Object Notation (JSON) serialization. */ toJSON(key?: any): string; ->toJSON : Symbol(toJSON, Decl(1.0lib-noErrors.ts, 761, 26)) +>toJSON : Symbol(Date.toJSON, Decl(1.0lib-noErrors.ts, 761, 26)) >key : Symbol(key, Decl(1.0lib-noErrors.ts, 763, 11)) } @@ -1275,78 +1275,78 @@ interface RegExpExecArray { >index : Symbol(index, Decl(1.0lib-noErrors.ts, 793, 5)) length: number; ->length : Symbol(length, Decl(1.0lib-noErrors.ts, 793, 28)) +>length : Symbol(RegExpExecArray.length, Decl(1.0lib-noErrors.ts, 793, 28)) index: number; ->index : Symbol(index, Decl(1.0lib-noErrors.ts, 794, 19)) +>index : Symbol(RegExpExecArray.index, Decl(1.0lib-noErrors.ts, 794, 19)) input: string; ->input : Symbol(input, Decl(1.0lib-noErrors.ts, 796, 18)) +>input : Symbol(RegExpExecArray.input, Decl(1.0lib-noErrors.ts, 796, 18)) toString(): string; ->toString : Symbol(toString, Decl(1.0lib-noErrors.ts, 797, 18)) +>toString : Symbol(RegExpExecArray.toString, Decl(1.0lib-noErrors.ts, 797, 18)) toLocaleString(): string; ->toLocaleString : Symbol(toLocaleString, Decl(1.0lib-noErrors.ts, 799, 23)) +>toLocaleString : Symbol(RegExpExecArray.toLocaleString, Decl(1.0lib-noErrors.ts, 799, 23)) concat(...items: string[][]): string[]; ->concat : Symbol(concat, Decl(1.0lib-noErrors.ts, 800, 29)) +>concat : Symbol(RegExpExecArray.concat, Decl(1.0lib-noErrors.ts, 800, 29)) >items : Symbol(items, Decl(1.0lib-noErrors.ts, 801, 11)) join(separator?: string): string; ->join : Symbol(join, Decl(1.0lib-noErrors.ts, 801, 43)) +>join : Symbol(RegExpExecArray.join, Decl(1.0lib-noErrors.ts, 801, 43)) >separator : Symbol(separator, Decl(1.0lib-noErrors.ts, 802, 9)) pop(): string; ->pop : Symbol(pop, Decl(1.0lib-noErrors.ts, 802, 37)) +>pop : Symbol(RegExpExecArray.pop, Decl(1.0lib-noErrors.ts, 802, 37)) push(...items: string[]): number; ->push : Symbol(push, Decl(1.0lib-noErrors.ts, 803, 18)) +>push : Symbol(RegExpExecArray.push, Decl(1.0lib-noErrors.ts, 803, 18)) >items : Symbol(items, Decl(1.0lib-noErrors.ts, 804, 9)) reverse(): string[]; ->reverse : Symbol(reverse, Decl(1.0lib-noErrors.ts, 804, 37)) +>reverse : Symbol(RegExpExecArray.reverse, Decl(1.0lib-noErrors.ts, 804, 37)) shift(): string; ->shift : Symbol(shift, Decl(1.0lib-noErrors.ts, 805, 24)) +>shift : Symbol(RegExpExecArray.shift, Decl(1.0lib-noErrors.ts, 805, 24)) slice(start?: number, end?: number): string[]; ->slice : Symbol(slice, Decl(1.0lib-noErrors.ts, 806, 20)) +>slice : Symbol(RegExpExecArray.slice, Decl(1.0lib-noErrors.ts, 806, 20)) >start : Symbol(start, Decl(1.0lib-noErrors.ts, 807, 10)) >end : Symbol(end, Decl(1.0lib-noErrors.ts, 807, 25)) sort(compareFn?: (a: string, b: string) => number): string[]; ->sort : Symbol(sort, Decl(1.0lib-noErrors.ts, 807, 50)) +>sort : Symbol(RegExpExecArray.sort, Decl(1.0lib-noErrors.ts, 807, 50)) >compareFn : Symbol(compareFn, Decl(1.0lib-noErrors.ts, 808, 9)) >a : Symbol(a, Decl(1.0lib-noErrors.ts, 808, 22)) >b : Symbol(b, Decl(1.0lib-noErrors.ts, 808, 32)) splice(start: number): string[]; ->splice : Symbol(splice, Decl(1.0lib-noErrors.ts, 808, 65), Decl(1.0lib-noErrors.ts, 809, 36)) +>splice : Symbol(RegExpExecArray.splice, Decl(1.0lib-noErrors.ts, 808, 65), Decl(1.0lib-noErrors.ts, 809, 36)) >start : Symbol(start, Decl(1.0lib-noErrors.ts, 809, 11)) splice(start: number, deleteCount: number, ...items: string[]): string[]; ->splice : Symbol(splice, Decl(1.0lib-noErrors.ts, 808, 65), Decl(1.0lib-noErrors.ts, 809, 36)) +>splice : Symbol(RegExpExecArray.splice, Decl(1.0lib-noErrors.ts, 808, 65), Decl(1.0lib-noErrors.ts, 809, 36)) >start : Symbol(start, Decl(1.0lib-noErrors.ts, 810, 11)) >deleteCount : Symbol(deleteCount, Decl(1.0lib-noErrors.ts, 810, 25)) >items : Symbol(items, Decl(1.0lib-noErrors.ts, 810, 46)) unshift(...items: string[]): number; ->unshift : Symbol(unshift, Decl(1.0lib-noErrors.ts, 810, 77)) +>unshift : Symbol(RegExpExecArray.unshift, Decl(1.0lib-noErrors.ts, 810, 77)) >items : Symbol(items, Decl(1.0lib-noErrors.ts, 811, 12)) indexOf(searchElement: string, fromIndex?: number): number; ->indexOf : Symbol(indexOf, Decl(1.0lib-noErrors.ts, 811, 40)) +>indexOf : Symbol(RegExpExecArray.indexOf, Decl(1.0lib-noErrors.ts, 811, 40)) >searchElement : Symbol(searchElement, Decl(1.0lib-noErrors.ts, 813, 12)) >fromIndex : Symbol(fromIndex, Decl(1.0lib-noErrors.ts, 813, 34)) lastIndexOf(searchElement: string, fromIndex?: number): number; ->lastIndexOf : Symbol(lastIndexOf, Decl(1.0lib-noErrors.ts, 813, 63)) +>lastIndexOf : Symbol(RegExpExecArray.lastIndexOf, Decl(1.0lib-noErrors.ts, 813, 63)) >searchElement : Symbol(searchElement, Decl(1.0lib-noErrors.ts, 814, 16)) >fromIndex : Symbol(fromIndex, Decl(1.0lib-noErrors.ts, 814, 38)) every(callbackfn: (value: string, index: number, array: string[]) => boolean, thisArg?: any): boolean; ->every : Symbol(every, Decl(1.0lib-noErrors.ts, 814, 67)) +>every : Symbol(RegExpExecArray.every, Decl(1.0lib-noErrors.ts, 814, 67)) >callbackfn : Symbol(callbackfn, Decl(1.0lib-noErrors.ts, 815, 10)) >value : Symbol(value, Decl(1.0lib-noErrors.ts, 815, 23)) >index : Symbol(index, Decl(1.0lib-noErrors.ts, 815, 37)) @@ -1354,7 +1354,7 @@ interface RegExpExecArray { >thisArg : Symbol(thisArg, Decl(1.0lib-noErrors.ts, 815, 81)) some(callbackfn: (value: string, index: number, array: string[]) => boolean, thisArg?: any): boolean; ->some : Symbol(some, Decl(1.0lib-noErrors.ts, 815, 106)) +>some : Symbol(RegExpExecArray.some, Decl(1.0lib-noErrors.ts, 815, 106)) >callbackfn : Symbol(callbackfn, Decl(1.0lib-noErrors.ts, 816, 9)) >value : Symbol(value, Decl(1.0lib-noErrors.ts, 816, 22)) >index : Symbol(index, Decl(1.0lib-noErrors.ts, 816, 36)) @@ -1362,7 +1362,7 @@ interface RegExpExecArray { >thisArg : Symbol(thisArg, Decl(1.0lib-noErrors.ts, 816, 80)) forEach(callbackfn: (value: string, index: number, array: string[]) => void, thisArg?: any): void; ->forEach : Symbol(forEach, Decl(1.0lib-noErrors.ts, 816, 105)) +>forEach : Symbol(RegExpExecArray.forEach, Decl(1.0lib-noErrors.ts, 816, 105)) >callbackfn : Symbol(callbackfn, Decl(1.0lib-noErrors.ts, 817, 12)) >value : Symbol(value, Decl(1.0lib-noErrors.ts, 817, 25)) >index : Symbol(index, Decl(1.0lib-noErrors.ts, 817, 39)) @@ -1370,7 +1370,7 @@ interface RegExpExecArray { >thisArg : Symbol(thisArg, Decl(1.0lib-noErrors.ts, 817, 80)) map(callbackfn: (value: string, index: number, array: string[]) => any, thisArg?: any): any[]; ->map : Symbol(map, Decl(1.0lib-noErrors.ts, 817, 102)) +>map : Symbol(RegExpExecArray.map, Decl(1.0lib-noErrors.ts, 817, 102)) >callbackfn : Symbol(callbackfn, Decl(1.0lib-noErrors.ts, 818, 8)) >value : Symbol(value, Decl(1.0lib-noErrors.ts, 818, 21)) >index : Symbol(index, Decl(1.0lib-noErrors.ts, 818, 35)) @@ -1378,7 +1378,7 @@ interface RegExpExecArray { >thisArg : Symbol(thisArg, Decl(1.0lib-noErrors.ts, 818, 75)) filter(callbackfn: (value: string, index: number, array: string[]) => boolean, thisArg?: any): string[]; ->filter : Symbol(filter, Decl(1.0lib-noErrors.ts, 818, 98)) +>filter : Symbol(RegExpExecArray.filter, Decl(1.0lib-noErrors.ts, 818, 98)) >callbackfn : Symbol(callbackfn, Decl(1.0lib-noErrors.ts, 819, 11)) >value : Symbol(value, Decl(1.0lib-noErrors.ts, 819, 24)) >index : Symbol(index, Decl(1.0lib-noErrors.ts, 819, 38)) @@ -1386,7 +1386,7 @@ interface RegExpExecArray { >thisArg : Symbol(thisArg, Decl(1.0lib-noErrors.ts, 819, 82)) reduce(callbackfn: (previousValue: any, currentValue: any, currentIndex: number, array: string[]) => any, initialValue?: any): any; ->reduce : Symbol(reduce, Decl(1.0lib-noErrors.ts, 819, 108)) +>reduce : Symbol(RegExpExecArray.reduce, Decl(1.0lib-noErrors.ts, 819, 108)) >callbackfn : Symbol(callbackfn, Decl(1.0lib-noErrors.ts, 820, 11)) >previousValue : Symbol(previousValue, Decl(1.0lib-noErrors.ts, 820, 24)) >currentValue : Symbol(currentValue, Decl(1.0lib-noErrors.ts, 820, 43)) @@ -1395,7 +1395,7 @@ interface RegExpExecArray { >initialValue : Symbol(initialValue, Decl(1.0lib-noErrors.ts, 820, 109)) reduceRight(callbackfn: (previousValue: any, currentValue: any, currentIndex: number, array: string[]) => any, initialValue?: any): any; ->reduceRight : Symbol(reduceRight, Decl(1.0lib-noErrors.ts, 820, 135)) +>reduceRight : Symbol(RegExpExecArray.reduceRight, Decl(1.0lib-noErrors.ts, 820, 135)) >callbackfn : Symbol(callbackfn, Decl(1.0lib-noErrors.ts, 821, 16)) >previousValue : Symbol(previousValue, Decl(1.0lib-noErrors.ts, 821, 29)) >currentValue : Symbol(currentValue, Decl(1.0lib-noErrors.ts, 821, 48)) @@ -1413,7 +1413,7 @@ interface RegExp { * @param string The String object or string literal on which to perform the search. */ exec(string: string): RegExpExecArray; ->exec : Symbol(exec, Decl(1.0lib-noErrors.ts, 825, 18)) +>exec : Symbol(RegExp.exec, Decl(1.0lib-noErrors.ts, 825, 18)) >string : Symbol(string, Decl(1.0lib-noErrors.ts, 830, 9)) >RegExpExecArray : Symbol(RegExpExecArray, Decl(1.0lib-noErrors.ts, 790, 1)) @@ -1422,31 +1422,31 @@ interface RegExp { * @param string String on which to perform the search. */ test(string: string): boolean; ->test : Symbol(test, Decl(1.0lib-noErrors.ts, 830, 42)) +>test : Symbol(RegExp.test, Decl(1.0lib-noErrors.ts, 830, 42)) >string : Symbol(string, Decl(1.0lib-noErrors.ts, 836, 9)) /** Returns a copy of the text of the regular expression pattern. Read-only. The rgExp argument is a Regular expression object. It can be a variable name or a literal. */ source: string; ->source : Symbol(source, Decl(1.0lib-noErrors.ts, 836, 34)) +>source : Symbol(RegExp.source, Decl(1.0lib-noErrors.ts, 836, 34)) /** Returns a Boolean value indicating the state of the global flag (g) used with a regular expression. Default is false. Read-only. */ global: boolean; ->global : Symbol(global, Decl(1.0lib-noErrors.ts, 839, 19)) +>global : Symbol(RegExp.global, Decl(1.0lib-noErrors.ts, 839, 19)) /** Returns a Boolean value indicating the state of the ignoreCase flag (i) used with a regular expression. Default is false. Read-only. */ ignoreCase: boolean; ->ignoreCase : Symbol(ignoreCase, Decl(1.0lib-noErrors.ts, 842, 20)) +>ignoreCase : Symbol(RegExp.ignoreCase, Decl(1.0lib-noErrors.ts, 842, 20)) /** Returns a Boolean value indicating the state of the multiline flag (m) used with a regular expression. Default is false. Read-only. */ multiline: boolean; ->multiline : Symbol(multiline, Decl(1.0lib-noErrors.ts, 845, 24)) +>multiline : Symbol(RegExp.multiline, Decl(1.0lib-noErrors.ts, 845, 24)) lastIndex: number; ->lastIndex : Symbol(lastIndex, Decl(1.0lib-noErrors.ts, 848, 23)) +>lastIndex : Symbol(RegExp.lastIndex, Decl(1.0lib-noErrors.ts, 848, 23)) // Non-standard extensions compile(): RegExp; ->compile : Symbol(compile, Decl(1.0lib-noErrors.ts, 850, 22)) +>compile : Symbol(RegExp.compile, Decl(1.0lib-noErrors.ts, 850, 22)) >RegExp : Symbol(RegExp, Decl(1.0lib-noErrors.ts, 822, 1), Decl(1.0lib-noErrors.ts, 855, 11)) } declare var RegExp: { @@ -1498,10 +1498,10 @@ interface Error { >Error : Symbol(Error, Decl(1.0lib-noErrors.ts, 870, 1), Decl(1.0lib-noErrors.ts, 876, 11)) name: string; ->name : Symbol(name, Decl(1.0lib-noErrors.ts, 872, 17)) +>name : Symbol(Error.name, Decl(1.0lib-noErrors.ts, 872, 17)) message: string; ->message : Symbol(message, Decl(1.0lib-noErrors.ts, 873, 17)) +>message : Symbol(Error.message, Decl(1.0lib-noErrors.ts, 873, 17)) } declare var Error: { >Error : Symbol(Error, Decl(1.0lib-noErrors.ts, 870, 1), Decl(1.0lib-noErrors.ts, 876, 11)) @@ -1649,7 +1649,7 @@ interface JSON { * If a member contains nested objects, the nested objects are transformed before the parent object is. */ parse(text: string, reviver?: (key: any, value: any) => any): any; ->parse : Symbol(parse, Decl(1.0lib-noErrors.ts, 930, 16)) +>parse : Symbol(JSON.parse, Decl(1.0lib-noErrors.ts, 930, 16)) >text : Symbol(text, Decl(1.0lib-noErrors.ts, 937, 10)) >reviver : Symbol(reviver, Decl(1.0lib-noErrors.ts, 937, 23)) >key : Symbol(key, Decl(1.0lib-noErrors.ts, 937, 35)) @@ -1660,7 +1660,7 @@ interface JSON { * @param value A JavaScript value, usually an object or array, to be converted. */ stringify(value: any): string; ->stringify : Symbol(stringify, Decl(1.0lib-noErrors.ts, 937, 70), Decl(1.0lib-noErrors.ts, 942, 34), Decl(1.0lib-noErrors.ts, 948, 78), Decl(1.0lib-noErrors.ts, 954, 51), Decl(1.0lib-noErrors.ts, 961, 90)) +>stringify : Symbol(JSON.stringify, Decl(1.0lib-noErrors.ts, 937, 70), Decl(1.0lib-noErrors.ts, 942, 34), Decl(1.0lib-noErrors.ts, 948, 78), Decl(1.0lib-noErrors.ts, 954, 51), Decl(1.0lib-noErrors.ts, 961, 90)) >value : Symbol(value, Decl(1.0lib-noErrors.ts, 942, 14)) /** @@ -1669,7 +1669,7 @@ interface JSON { * @param replacer A function that transforms the results. */ stringify(value: any, replacer: (key: string, value: any) => any): string; ->stringify : Symbol(stringify, Decl(1.0lib-noErrors.ts, 937, 70), Decl(1.0lib-noErrors.ts, 942, 34), Decl(1.0lib-noErrors.ts, 948, 78), Decl(1.0lib-noErrors.ts, 954, 51), Decl(1.0lib-noErrors.ts, 961, 90)) +>stringify : Symbol(JSON.stringify, Decl(1.0lib-noErrors.ts, 937, 70), Decl(1.0lib-noErrors.ts, 942, 34), Decl(1.0lib-noErrors.ts, 948, 78), Decl(1.0lib-noErrors.ts, 954, 51), Decl(1.0lib-noErrors.ts, 961, 90)) >value : Symbol(value, Decl(1.0lib-noErrors.ts, 948, 14)) >replacer : Symbol(replacer, Decl(1.0lib-noErrors.ts, 948, 25)) >key : Symbol(key, Decl(1.0lib-noErrors.ts, 948, 37)) @@ -1681,7 +1681,7 @@ interface JSON { * @param replacer Array that transforms the results. */ stringify(value: any, replacer: any[]): string; ->stringify : Symbol(stringify, Decl(1.0lib-noErrors.ts, 937, 70), Decl(1.0lib-noErrors.ts, 942, 34), Decl(1.0lib-noErrors.ts, 948, 78), Decl(1.0lib-noErrors.ts, 954, 51), Decl(1.0lib-noErrors.ts, 961, 90)) +>stringify : Symbol(JSON.stringify, Decl(1.0lib-noErrors.ts, 937, 70), Decl(1.0lib-noErrors.ts, 942, 34), Decl(1.0lib-noErrors.ts, 948, 78), Decl(1.0lib-noErrors.ts, 954, 51), Decl(1.0lib-noErrors.ts, 961, 90)) >value : Symbol(value, Decl(1.0lib-noErrors.ts, 954, 14)) >replacer : Symbol(replacer, Decl(1.0lib-noErrors.ts, 954, 25)) @@ -1692,7 +1692,7 @@ interface JSON { * @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: (key: string, value: any) => any, space: any): string; ->stringify : Symbol(stringify, Decl(1.0lib-noErrors.ts, 937, 70), Decl(1.0lib-noErrors.ts, 942, 34), Decl(1.0lib-noErrors.ts, 948, 78), Decl(1.0lib-noErrors.ts, 954, 51), Decl(1.0lib-noErrors.ts, 961, 90)) +>stringify : Symbol(JSON.stringify, Decl(1.0lib-noErrors.ts, 937, 70), Decl(1.0lib-noErrors.ts, 942, 34), Decl(1.0lib-noErrors.ts, 948, 78), Decl(1.0lib-noErrors.ts, 954, 51), Decl(1.0lib-noErrors.ts, 961, 90)) >value : Symbol(value, Decl(1.0lib-noErrors.ts, 961, 14)) >replacer : Symbol(replacer, Decl(1.0lib-noErrors.ts, 961, 25)) >key : Symbol(key, Decl(1.0lib-noErrors.ts, 961, 37)) @@ -1706,7 +1706,7 @@ interface JSON { * @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: any[], space: any): string; ->stringify : Symbol(stringify, Decl(1.0lib-noErrors.ts, 937, 70), Decl(1.0lib-noErrors.ts, 942, 34), Decl(1.0lib-noErrors.ts, 948, 78), Decl(1.0lib-noErrors.ts, 954, 51), Decl(1.0lib-noErrors.ts, 961, 90)) +>stringify : Symbol(JSON.stringify, Decl(1.0lib-noErrors.ts, 937, 70), Decl(1.0lib-noErrors.ts, 942, 34), Decl(1.0lib-noErrors.ts, 948, 78), Decl(1.0lib-noErrors.ts, 954, 51), Decl(1.0lib-noErrors.ts, 961, 90)) >value : Symbol(value, Decl(1.0lib-noErrors.ts, 968, 14)) >replacer : Symbol(replacer, Decl(1.0lib-noErrors.ts, 968, 25)) >space : Symbol(space, Decl(1.0lib-noErrors.ts, 968, 42)) @@ -1731,17 +1731,17 @@ interface Array { * Returns a string representation of an array. */ toString(): string; ->toString : Symbol(toString, Decl(1.0lib-noErrors.ts, 980, 20)) +>toString : Symbol(Array.toString, Decl(1.0lib-noErrors.ts, 980, 20)) toLocaleString(): string; ->toLocaleString : Symbol(toLocaleString, Decl(1.0lib-noErrors.ts, 984, 23)) +>toLocaleString : Symbol(Array.toLocaleString, Decl(1.0lib-noErrors.ts, 984, 23)) /** * Combines two or more arrays. * @param items Additional items to add to the end of array1. */ concat(...items: U[]): T[]; ->concat : Symbol(concat, Decl(1.0lib-noErrors.ts, 985, 29), Decl(1.0lib-noErrors.ts, 990, 46)) +>concat : Symbol(Array.concat, Decl(1.0lib-noErrors.ts, 985, 29), Decl(1.0lib-noErrors.ts, 990, 46)) >U : Symbol(U, Decl(1.0lib-noErrors.ts, 990, 11)) >T : Symbol(T, Decl(1.0lib-noErrors.ts, 980, 16)) >items : Symbol(items, Decl(1.0lib-noErrors.ts, 990, 26)) @@ -1753,7 +1753,7 @@ interface Array { * @param items Additional items to add to the end of array1. */ concat(...items: T[]): T[]; ->concat : Symbol(concat, Decl(1.0lib-noErrors.ts, 985, 29), Decl(1.0lib-noErrors.ts, 990, 46)) +>concat : Symbol(Array.concat, Decl(1.0lib-noErrors.ts, 985, 29), Decl(1.0lib-noErrors.ts, 990, 46)) >items : Symbol(items, Decl(1.0lib-noErrors.ts, 995, 11)) >T : Symbol(T, Decl(1.0lib-noErrors.ts, 980, 16)) >T : Symbol(T, Decl(1.0lib-noErrors.ts, 980, 16)) @@ -1763,14 +1763,14 @@ interface Array { * @param separator A string used to separate one element of an array from the next in the resulting String. If omitted, the array elements are separated with a comma. */ join(separator?: string): string; ->join : Symbol(join, Decl(1.0lib-noErrors.ts, 995, 31)) +>join : Symbol(Array.join, Decl(1.0lib-noErrors.ts, 995, 31)) >separator : Symbol(separator, Decl(1.0lib-noErrors.ts, 1000, 9)) /** * Removes the last element from an array and returns it. */ pop(): T; ->pop : Symbol(pop, Decl(1.0lib-noErrors.ts, 1000, 37)) +>pop : Symbol(Array.pop, Decl(1.0lib-noErrors.ts, 1000, 37)) >T : Symbol(T, Decl(1.0lib-noErrors.ts, 980, 16)) /** @@ -1778,7 +1778,7 @@ interface Array { * @param items New elements of the Array. */ push(...items: T[]): number; ->push : Symbol(push, Decl(1.0lib-noErrors.ts, 1004, 13)) +>push : Symbol(Array.push, Decl(1.0lib-noErrors.ts, 1004, 13)) >items : Symbol(items, Decl(1.0lib-noErrors.ts, 1009, 9)) >T : Symbol(T, Decl(1.0lib-noErrors.ts, 980, 16)) @@ -1786,14 +1786,14 @@ interface Array { * Reverses the elements in an Array. */ reverse(): T[]; ->reverse : Symbol(reverse, Decl(1.0lib-noErrors.ts, 1009, 32)) +>reverse : Symbol(Array.reverse, Decl(1.0lib-noErrors.ts, 1009, 32)) >T : Symbol(T, Decl(1.0lib-noErrors.ts, 980, 16)) /** * Removes the first element from an array and returns it. */ shift(): T; ->shift : Symbol(shift, Decl(1.0lib-noErrors.ts, 1013, 19)) +>shift : Symbol(Array.shift, Decl(1.0lib-noErrors.ts, 1013, 19)) >T : Symbol(T, Decl(1.0lib-noErrors.ts, 980, 16)) /** @@ -1802,7 +1802,7 @@ interface Array { * @param end The end of the specified portion of the array. */ slice(start?: number, end?: number): T[]; ->slice : Symbol(slice, Decl(1.0lib-noErrors.ts, 1017, 15)) +>slice : Symbol(Array.slice, Decl(1.0lib-noErrors.ts, 1017, 15)) >start : Symbol(start, Decl(1.0lib-noErrors.ts, 1023, 10)) >end : Symbol(end, Decl(1.0lib-noErrors.ts, 1023, 25)) >T : Symbol(T, Decl(1.0lib-noErrors.ts, 980, 16)) @@ -1812,7 +1812,7 @@ interface Array { * @param compareFn The name of the function used to determine the order of the elements. If omitted, the elements are sorted in ascending, ASCII character order. */ sort(compareFn?: (a: T, b: T) => number): T[]; ->sort : Symbol(sort, Decl(1.0lib-noErrors.ts, 1023, 45)) +>sort : Symbol(Array.sort, Decl(1.0lib-noErrors.ts, 1023, 45)) >compareFn : Symbol(compareFn, Decl(1.0lib-noErrors.ts, 1029, 9)) >a : Symbol(a, Decl(1.0lib-noErrors.ts, 1029, 22)) >T : Symbol(T, Decl(1.0lib-noErrors.ts, 980, 16)) @@ -1825,7 +1825,7 @@ interface Array { * @param start The zero-based location in the array from which to start removing elements. */ splice(start: number): T[]; ->splice : Symbol(splice, Decl(1.0lib-noErrors.ts, 1029, 50), Decl(1.0lib-noErrors.ts, 1035, 31)) +>splice : Symbol(Array.splice, Decl(1.0lib-noErrors.ts, 1029, 50), Decl(1.0lib-noErrors.ts, 1035, 31)) >start : Symbol(start, Decl(1.0lib-noErrors.ts, 1035, 11)) >T : Symbol(T, Decl(1.0lib-noErrors.ts, 980, 16)) @@ -1836,7 +1836,7 @@ interface Array { * @param items Elements to insert into the array in place of the deleted elements. */ splice(start: number, deleteCount: number, ...items: T[]): T[]; ->splice : Symbol(splice, Decl(1.0lib-noErrors.ts, 1029, 50), Decl(1.0lib-noErrors.ts, 1035, 31)) +>splice : Symbol(Array.splice, Decl(1.0lib-noErrors.ts, 1029, 50), Decl(1.0lib-noErrors.ts, 1035, 31)) >start : Symbol(start, Decl(1.0lib-noErrors.ts, 1043, 11)) >deleteCount : Symbol(deleteCount, Decl(1.0lib-noErrors.ts, 1043, 25)) >items : Symbol(items, Decl(1.0lib-noErrors.ts, 1043, 46)) @@ -1848,7 +1848,7 @@ interface Array { * @param items Elements to insert at the start of the Array. */ unshift(...items: T[]): number; ->unshift : Symbol(unshift, Decl(1.0lib-noErrors.ts, 1043, 67)) +>unshift : Symbol(Array.unshift, Decl(1.0lib-noErrors.ts, 1043, 67)) >items : Symbol(items, Decl(1.0lib-noErrors.ts, 1049, 12)) >T : Symbol(T, Decl(1.0lib-noErrors.ts, 980, 16)) @@ -1858,7 +1858,7 @@ interface Array { * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the search starts at index 0. */ indexOf(searchElement: T, fromIndex?: number): number; ->indexOf : Symbol(indexOf, Decl(1.0lib-noErrors.ts, 1049, 35)) +>indexOf : Symbol(Array.indexOf, Decl(1.0lib-noErrors.ts, 1049, 35)) >searchElement : Symbol(searchElement, Decl(1.0lib-noErrors.ts, 1056, 12)) >T : Symbol(T, Decl(1.0lib-noErrors.ts, 980, 16)) >fromIndex : Symbol(fromIndex, Decl(1.0lib-noErrors.ts, 1056, 29)) @@ -1869,7 +1869,7 @@ interface Array { * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the search starts at the last index in the array. */ lastIndexOf(searchElement: T, fromIndex?: number): number; ->lastIndexOf : Symbol(lastIndexOf, Decl(1.0lib-noErrors.ts, 1056, 58)) +>lastIndexOf : Symbol(Array.lastIndexOf, Decl(1.0lib-noErrors.ts, 1056, 58)) >searchElement : Symbol(searchElement, Decl(1.0lib-noErrors.ts, 1063, 16)) >T : Symbol(T, Decl(1.0lib-noErrors.ts, 980, 16)) >fromIndex : Symbol(fromIndex, Decl(1.0lib-noErrors.ts, 1063, 33)) @@ -1880,7 +1880,7 @@ interface Array { * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value. */ every(callbackfn: (value: T, index: number, array: T[]) => boolean, thisArg?: any): boolean; ->every : Symbol(every, Decl(1.0lib-noErrors.ts, 1063, 62)) +>every : Symbol(Array.every, Decl(1.0lib-noErrors.ts, 1063, 62)) >callbackfn : Symbol(callbackfn, Decl(1.0lib-noErrors.ts, 1070, 10)) >value : Symbol(value, Decl(1.0lib-noErrors.ts, 1070, 23)) >T : Symbol(T, Decl(1.0lib-noErrors.ts, 980, 16)) @@ -1895,7 +1895,7 @@ interface Array { * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value. */ some(callbackfn: (value: T, index: number, array: T[]) => boolean, thisArg?: any): boolean; ->some : Symbol(some, Decl(1.0lib-noErrors.ts, 1070, 96)) +>some : Symbol(Array.some, Decl(1.0lib-noErrors.ts, 1070, 96)) >callbackfn : Symbol(callbackfn, Decl(1.0lib-noErrors.ts, 1077, 9)) >value : Symbol(value, Decl(1.0lib-noErrors.ts, 1077, 22)) >T : Symbol(T, Decl(1.0lib-noErrors.ts, 980, 16)) @@ -1910,7 +1910,7 @@ interface Array { * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value. */ forEach(callbackfn: (value: T, index: number, array: T[]) => void, thisArg?: any): void; ->forEach : Symbol(forEach, Decl(1.0lib-noErrors.ts, 1077, 95)) +>forEach : Symbol(Array.forEach, Decl(1.0lib-noErrors.ts, 1077, 95)) >callbackfn : Symbol(callbackfn, Decl(1.0lib-noErrors.ts, 1084, 12)) >value : Symbol(value, Decl(1.0lib-noErrors.ts, 1084, 25)) >T : Symbol(T, Decl(1.0lib-noErrors.ts, 980, 16)) @@ -1925,7 +1925,7 @@ interface Array { * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value. */ map(callbackfn: (value: T, index: number, array: T[]) => U, thisArg?: any): U[]; ->map : Symbol(map, Decl(1.0lib-noErrors.ts, 1084, 92)) +>map : Symbol(Array.map, Decl(1.0lib-noErrors.ts, 1084, 92)) >U : Symbol(U, Decl(1.0lib-noErrors.ts, 1091, 8)) >callbackfn : Symbol(callbackfn, Decl(1.0lib-noErrors.ts, 1091, 11)) >value : Symbol(value, Decl(1.0lib-noErrors.ts, 1091, 24)) @@ -1943,7 +1943,7 @@ interface Array { * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value. */ filter(callbackfn: (value: T, index: number, array: T[]) => boolean, thisArg?: any): T[]; ->filter : Symbol(filter, Decl(1.0lib-noErrors.ts, 1091, 87)) +>filter : Symbol(Array.filter, Decl(1.0lib-noErrors.ts, 1091, 87)) >callbackfn : Symbol(callbackfn, Decl(1.0lib-noErrors.ts, 1098, 11)) >value : Symbol(value, Decl(1.0lib-noErrors.ts, 1098, 24)) >T : Symbol(T, Decl(1.0lib-noErrors.ts, 980, 16)) @@ -1959,7 +1959,7 @@ interface Array { * @param initialValue If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value. */ reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue?: T): T; ->reduce : Symbol(reduce, Decl(1.0lib-noErrors.ts, 1098, 93), Decl(1.0lib-noErrors.ts, 1105, 120)) +>reduce : Symbol(Array.reduce, Decl(1.0lib-noErrors.ts, 1098, 93), Decl(1.0lib-noErrors.ts, 1105, 120)) >callbackfn : Symbol(callbackfn, Decl(1.0lib-noErrors.ts, 1105, 11)) >previousValue : Symbol(previousValue, Decl(1.0lib-noErrors.ts, 1105, 24)) >T : Symbol(T, Decl(1.0lib-noErrors.ts, 980, 16)) @@ -1979,7 +1979,7 @@ interface Array { * @param initialValue If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value. */ reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; ->reduce : Symbol(reduce, Decl(1.0lib-noErrors.ts, 1098, 93), Decl(1.0lib-noErrors.ts, 1105, 120)) +>reduce : Symbol(Array.reduce, Decl(1.0lib-noErrors.ts, 1098, 93), Decl(1.0lib-noErrors.ts, 1105, 120)) >U : Symbol(U, Decl(1.0lib-noErrors.ts, 1111, 11)) >callbackfn : Symbol(callbackfn, Decl(1.0lib-noErrors.ts, 1111, 14)) >previousValue : Symbol(previousValue, Decl(1.0lib-noErrors.ts, 1111, 27)) @@ -2000,7 +2000,7 @@ interface Array { * @param initialValue If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value. */ reduceRight(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue?: T): T; ->reduceRight : Symbol(reduceRight, Decl(1.0lib-noErrors.ts, 1111, 122), Decl(1.0lib-noErrors.ts, 1118, 125)) +>reduceRight : Symbol(Array.reduceRight, Decl(1.0lib-noErrors.ts, 1111, 122), Decl(1.0lib-noErrors.ts, 1118, 125)) >callbackfn : Symbol(callbackfn, Decl(1.0lib-noErrors.ts, 1118, 16)) >previousValue : Symbol(previousValue, Decl(1.0lib-noErrors.ts, 1118, 29)) >T : Symbol(T, Decl(1.0lib-noErrors.ts, 980, 16)) @@ -2020,7 +2020,7 @@ interface Array { * @param initialValue If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value. */ reduceRight(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; ->reduceRight : Symbol(reduceRight, Decl(1.0lib-noErrors.ts, 1111, 122), Decl(1.0lib-noErrors.ts, 1118, 125)) +>reduceRight : Symbol(Array.reduceRight, Decl(1.0lib-noErrors.ts, 1111, 122), Decl(1.0lib-noErrors.ts, 1118, 125)) >U : Symbol(U, Decl(1.0lib-noErrors.ts, 1124, 16)) >callbackfn : Symbol(callbackfn, Decl(1.0lib-noErrors.ts, 1124, 19)) >previousValue : Symbol(previousValue, Decl(1.0lib-noErrors.ts, 1124, 32)) @@ -2039,7 +2039,7 @@ interface Array { * Gets or sets the length of the array. This is a number one higher than the highest element defined in an array. */ length: number; ->length : Symbol(length, Decl(1.0lib-noErrors.ts, 1124, 127)) +>length : Symbol(Array.length, Decl(1.0lib-noErrors.ts, 1124, 127)) [n: number]: T; >n : Symbol(n, Decl(1.0lib-noErrors.ts, 1131, 5)) diff --git a/tests/baselines/reference/2dArrays.symbols b/tests/baselines/reference/2dArrays.symbols index a42a40e2b6b..8d6b6b167e6 100644 --- a/tests/baselines/reference/2dArrays.symbols +++ b/tests/baselines/reference/2dArrays.symbols @@ -7,28 +7,28 @@ class Ship { >Ship : Symbol(Ship, Decl(2dArrays.ts, 1, 1)) isSunk: boolean; ->isSunk : Symbol(isSunk, Decl(2dArrays.ts, 3, 12)) +>isSunk : Symbol(Ship.isSunk, Decl(2dArrays.ts, 3, 12)) } class Board { >Board : Symbol(Board, Decl(2dArrays.ts, 5, 1)) ships: Ship[]; ->ships : Symbol(ships, Decl(2dArrays.ts, 7, 13)) +>ships : Symbol(Board.ships, Decl(2dArrays.ts, 7, 13)) >Ship : Symbol(Ship, Decl(2dArrays.ts, 1, 1)) cells: Cell[]; ->cells : Symbol(cells, Decl(2dArrays.ts, 8, 18)) +>cells : Symbol(Board.cells, Decl(2dArrays.ts, 8, 18)) >Cell : Symbol(Cell, Decl(2dArrays.ts, 0, 0)) private allShipsSunk() { ->allShipsSunk : Symbol(allShipsSunk, Decl(2dArrays.ts, 9, 18)) +>allShipsSunk : Symbol(Board.allShipsSunk, Decl(2dArrays.ts, 9, 18)) return this.ships.every(function (val) { return val.isSunk; }); >this.ships.every : Symbol(Array.every, Decl(lib.d.ts, --, --)) ->this.ships : Symbol(ships, Decl(2dArrays.ts, 7, 13)) +>this.ships : Symbol(Board.ships, Decl(2dArrays.ts, 7, 13)) >this : Symbol(Board, Decl(2dArrays.ts, 5, 1)) ->ships : Symbol(ships, Decl(2dArrays.ts, 7, 13)) +>ships : Symbol(Board.ships, Decl(2dArrays.ts, 7, 13)) >every : Symbol(Array.every, Decl(lib.d.ts, --, --)) >val : Symbol(val, Decl(2dArrays.ts, 12, 42)) >val.isSunk : Symbol(Ship.isSunk, Decl(2dArrays.ts, 3, 12)) diff --git a/tests/baselines/reference/APISample_linter.js b/tests/baselines/reference/APISample_linter.js index 62b201976cd..4e563c7cac3 100644 --- a/tests/baselines/reference/APISample_linter.js +++ b/tests/baselines/reference/APISample_linter.js @@ -55,7 +55,7 @@ export function delint(sourceFile: ts.SourceFile) { } } -const fileNames = process.argv.slice(2); +const fileNames: string[] = process.argv.slice(2); fileNames.forEach(fileName => { // Parse a file let sourceFile = ts.createSourceFile(fileName, readFileSync(fileName).toString(), ts.ScriptTarget.ES6, /*setParentNodes */ true); diff --git a/tests/baselines/reference/APISample_parseConfig.js b/tests/baselines/reference/APISample_parseConfig.js new file mode 100644 index 00000000000..75ab80d3f23 --- /dev/null +++ b/tests/baselines/reference/APISample_parseConfig.js @@ -0,0 +1,70 @@ +//// [APISample_parseConfig.ts] + +/* + * Note: This test is a public API sample. The sample sources can be found + at: https://github.com/Microsoft/TypeScript/wiki/Using-the-Compiler-API#a-minimal-compiler + * Please log a "breaking change" issue for any API breaking change affecting this issue + */ + +declare var process: any; +declare var console: any; +declare var os: any; + +import ts = require("typescript"); + +function printError(error: ts.Diagnostic): void { + if (!error) { + return; + } + console.log(`${error.file && error.file.fileName}: ${error.messageText}`); +} + +export function createProgram(rootFiles: string[], compilerOptionsJson: string): ts.Program | undefined { + const { config, error } = ts.parseConfigFileTextToJson("tsconfig.json", compilerOptionsJson) + if (error) { + printError(error); + return undefined; + } + const basePath: string = process.cwd(); + const settings = ts.convertCompilerOptionsFromJson(config.config["compilerOptions"], basePath); + if (!settings.options) { + for (const err of settings.errors) { + printError(err); + } + return undefined; + } + return ts.createProgram(rootFiles, settings.options); +} + +//// [APISample_parseConfig.js] +/* + * Note: This test is a public API sample. The sample sources can be found + at: https://github.com/Microsoft/TypeScript/wiki/Using-the-Compiler-API#a-minimal-compiler + * Please log a "breaking change" issue for any API breaking change affecting this issue + */ +"use strict"; +var ts = require("typescript"); +function printError(error) { + if (!error) { + return; + } + console.log((error.file && error.file.fileName) + ": " + error.messageText); +} +function createProgram(rootFiles, compilerOptionsJson) { + var _a = ts.parseConfigFileTextToJson("tsconfig.json", compilerOptionsJson), config = _a.config, error = _a.error; + if (error) { + printError(error); + return undefined; + } + var basePath = process.cwd(); + var settings = ts.convertCompilerOptionsFromJson(config.config["compilerOptions"], basePath); + if (!settings.options) { + for (var _i = 0, _b = settings.errors; _i < _b.length; _i++) { + var err = _b[_i]; + printError(err); + } + return undefined; + } + return ts.createProgram(rootFiles, settings.options); +} +exports.createProgram = createProgram; diff --git a/tests/baselines/reference/APISample_watcher.js b/tests/baselines/reference/APISample_watcher.js index 1b6d52255fb..7573f2ba99e 100644 --- a/tests/baselines/reference/APISample_watcher.js +++ b/tests/baselines/reference/APISample_watcher.js @@ -8,7 +8,13 @@ declare var process: any; declare var console: any; -declare var fs: any; +declare var fs: { + existsSync(path: string): boolean; + readdirSync(path: string): string[]; + readFileSync(filename: string, encoding?: string): string; + writeFileSync(filename: string, data: any, options?: { encoding?: string; mode?: number; flag?: string; }): void; + watchFile(filename: string, options: { persistent?: boolean; interval?: number; }, listener: (curr: { mtime: Date }, prev: { mtime: Date }) => void): void; +}; declare var path: any; import * as ts from "typescript"; diff --git a/tests/baselines/reference/AmbientModuleAndAmbientWithSameNameAndCommonRoot.symbols b/tests/baselines/reference/AmbientModuleAndAmbientWithSameNameAndCommonRoot.symbols index 2a24e5df919..3db6d644d98 100644 --- a/tests/baselines/reference/AmbientModuleAndAmbientWithSameNameAndCommonRoot.symbols +++ b/tests/baselines/reference/AmbientModuleAndAmbientWithSameNameAndCommonRoot.symbols @@ -29,10 +29,10 @@ declare module A { >y : Symbol(y, Decl(class.d.ts, 2, 30)) x: number; ->x : Symbol(x, Decl(class.d.ts, 2, 42)) +>x : Symbol(Point.x, Decl(class.d.ts, 2, 42)) y: number; ->y : Symbol(y, Decl(class.d.ts, 3, 18)) +>y : Symbol(Point.y, Decl(class.d.ts, 3, 18)) } } diff --git a/tests/baselines/reference/AmbientModuleAndNonAmbientClassWithSameNameAndCommonRoot.symbols b/tests/baselines/reference/AmbientModuleAndNonAmbientClassWithSameNameAndCommonRoot.symbols index 09762fd1406..8a776358b4c 100644 --- a/tests/baselines/reference/AmbientModuleAndNonAmbientClassWithSameNameAndCommonRoot.symbols +++ b/tests/baselines/reference/AmbientModuleAndNonAmbientClassWithSameNameAndCommonRoot.symbols @@ -25,8 +25,8 @@ module A { >Point : Symbol(Point, Decl(module.d.ts, 0, 18), Decl(classPoint.ts, 0, 10)) constructor(public x: number, public y: number) { } ->x : Symbol(x, Decl(classPoint.ts, 2, 20)) ->y : Symbol(y, Decl(classPoint.ts, 2, 37)) +>x : Symbol(Point.x, Decl(classPoint.ts, 2, 20)) +>y : Symbol(Point.y, Decl(classPoint.ts, 2, 37)) } } diff --git a/tests/baselines/reference/ClassAndModuleThatMergeWithStaticFunctionAndNonExportedFunctionThatShareAName.symbols b/tests/baselines/reference/ClassAndModuleThatMergeWithStaticFunctionAndNonExportedFunctionThatShareAName.symbols index 1c75c33a278..14e9ebf6124 100644 --- a/tests/baselines/reference/ClassAndModuleThatMergeWithStaticFunctionAndNonExportedFunctionThatShareAName.symbols +++ b/tests/baselines/reference/ClassAndModuleThatMergeWithStaticFunctionAndNonExportedFunctionThatShareAName.symbols @@ -3,8 +3,8 @@ class Point { >Point : Symbol(Point, Decl(ClassAndModuleThatMergeWithStaticFunctionAndNonExportedFunctionThatShareAName.ts, 0, 0), Decl(ClassAndModuleThatMergeWithStaticFunctionAndNonExportedFunctionThatShareAName.ts, 4, 1)) constructor(public x: number, public y: number) { } ->x : Symbol(x, Decl(ClassAndModuleThatMergeWithStaticFunctionAndNonExportedFunctionThatShareAName.ts, 1, 16)) ->y : Symbol(y, Decl(ClassAndModuleThatMergeWithStaticFunctionAndNonExportedFunctionThatShareAName.ts, 1, 33)) +>x : Symbol(Point.x, Decl(ClassAndModuleThatMergeWithStaticFunctionAndNonExportedFunctionThatShareAName.ts, 1, 16)) +>y : Symbol(Point.y, Decl(ClassAndModuleThatMergeWithStaticFunctionAndNonExportedFunctionThatShareAName.ts, 1, 33)) static Origin(): Point { return { x: 0, y: 0 }; } >Origin : Symbol(Point.Origin, Decl(ClassAndModuleThatMergeWithStaticFunctionAndNonExportedFunctionThatShareAName.ts, 1, 55)) @@ -28,8 +28,8 @@ module A { >Point : Symbol(Point, Decl(ClassAndModuleThatMergeWithStaticFunctionAndNonExportedFunctionThatShareAName.ts, 11, 10), Decl(ClassAndModuleThatMergeWithStaticFunctionAndNonExportedFunctionThatShareAName.ts, 16, 5)) constructor(public x: number, public y: number) { } ->x : Symbol(x, Decl(ClassAndModuleThatMergeWithStaticFunctionAndNonExportedFunctionThatShareAName.ts, 13, 20)) ->y : Symbol(y, Decl(ClassAndModuleThatMergeWithStaticFunctionAndNonExportedFunctionThatShareAName.ts, 13, 37)) +>x : Symbol(Point.x, Decl(ClassAndModuleThatMergeWithStaticFunctionAndNonExportedFunctionThatShareAName.ts, 13, 20)) +>y : Symbol(Point.y, Decl(ClassAndModuleThatMergeWithStaticFunctionAndNonExportedFunctionThatShareAName.ts, 13, 37)) static Origin(): Point { return { x: 0, y: 0 }; } >Origin : Symbol(Point.Origin, Decl(ClassAndModuleThatMergeWithStaticFunctionAndNonExportedFunctionThatShareAName.ts, 13, 59)) diff --git a/tests/baselines/reference/ClassAndModuleThatMergeWithStaticVariableAndNonExportedVarThatShareAName.symbols b/tests/baselines/reference/ClassAndModuleThatMergeWithStaticVariableAndNonExportedVarThatShareAName.symbols index 046b92fd6ee..b995c02929f 100644 --- a/tests/baselines/reference/ClassAndModuleThatMergeWithStaticVariableAndNonExportedVarThatShareAName.symbols +++ b/tests/baselines/reference/ClassAndModuleThatMergeWithStaticVariableAndNonExportedVarThatShareAName.symbols @@ -3,8 +3,8 @@ class Point { >Point : Symbol(Point, Decl(ClassAndModuleThatMergeWithStaticVariableAndNonExportedVarThatShareAName.ts, 0, 0), Decl(ClassAndModuleThatMergeWithStaticVariableAndNonExportedVarThatShareAName.ts, 4, 1)) constructor(public x: number, public y: number) { } ->x : Symbol(x, Decl(ClassAndModuleThatMergeWithStaticVariableAndNonExportedVarThatShareAName.ts, 1, 16)) ->y : Symbol(y, Decl(ClassAndModuleThatMergeWithStaticVariableAndNonExportedVarThatShareAName.ts, 1, 33)) +>x : Symbol(Point.x, Decl(ClassAndModuleThatMergeWithStaticVariableAndNonExportedVarThatShareAName.ts, 1, 16)) +>y : Symbol(Point.y, Decl(ClassAndModuleThatMergeWithStaticVariableAndNonExportedVarThatShareAName.ts, 1, 33)) static Origin: Point = { x: 0, y: 0 }; >Origin : Symbol(Point.Origin, Decl(ClassAndModuleThatMergeWithStaticVariableAndNonExportedVarThatShareAName.ts, 1, 55)) @@ -28,8 +28,8 @@ module A { >Point : Symbol(Point, Decl(ClassAndModuleThatMergeWithStaticVariableAndNonExportedVarThatShareAName.ts, 11, 10), Decl(ClassAndModuleThatMergeWithStaticVariableAndNonExportedVarThatShareAName.ts, 16, 5)) constructor(public x: number, public y: number) { } ->x : Symbol(x, Decl(ClassAndModuleThatMergeWithStaticVariableAndNonExportedVarThatShareAName.ts, 13, 20)) ->y : Symbol(y, Decl(ClassAndModuleThatMergeWithStaticVariableAndNonExportedVarThatShareAName.ts, 13, 37)) +>x : Symbol(Point.x, Decl(ClassAndModuleThatMergeWithStaticVariableAndNonExportedVarThatShareAName.ts, 13, 20)) +>y : Symbol(Point.y, Decl(ClassAndModuleThatMergeWithStaticVariableAndNonExportedVarThatShareAName.ts, 13, 37)) static Origin: Point = { x: 0, y: 0 }; >Origin : Symbol(Point.Origin, Decl(ClassAndModuleThatMergeWithStaticVariableAndNonExportedVarThatShareAName.ts, 13, 59)) diff --git a/tests/baselines/reference/ClassDeclarationWithInvalidConstOnPropertyDeclaration2.symbols b/tests/baselines/reference/ClassDeclarationWithInvalidConstOnPropertyDeclaration2.symbols index ce0ab000017..69f0d0520e6 100644 --- a/tests/baselines/reference/ClassDeclarationWithInvalidConstOnPropertyDeclaration2.symbols +++ b/tests/baselines/reference/ClassDeclarationWithInvalidConstOnPropertyDeclaration2.symbols @@ -3,8 +3,8 @@ class C { >C : Symbol(C, Decl(ClassDeclarationWithInvalidConstOnPropertyDeclaration2.ts, 0, 0)) const ->const : Symbol(const, Decl(ClassDeclarationWithInvalidConstOnPropertyDeclaration2.ts, 0, 9)) +>const : Symbol(C.const, Decl(ClassDeclarationWithInvalidConstOnPropertyDeclaration2.ts, 0, 9)) x = 10; ->x : Symbol(x, Decl(ClassDeclarationWithInvalidConstOnPropertyDeclaration2.ts, 1, 9)) +>x : Symbol(C.x, Decl(ClassDeclarationWithInvalidConstOnPropertyDeclaration2.ts, 1, 9)) } diff --git a/tests/baselines/reference/EnumAndModuleWithSameNameAndCommonRoot.symbols b/tests/baselines/reference/EnumAndModuleWithSameNameAndCommonRoot.symbols index dc97960f71e..30eca163cda 100644 --- a/tests/baselines/reference/EnumAndModuleWithSameNameAndCommonRoot.symbols +++ b/tests/baselines/reference/EnumAndModuleWithSameNameAndCommonRoot.symbols @@ -14,8 +14,8 @@ module enumdule { >Point : Symbol(Point, Decl(EnumAndModuleWithSameNameAndCommonRoot.ts, 4, 17)) constructor(public x: number, public y: number) { } ->x : Symbol(x, Decl(EnumAndModuleWithSameNameAndCommonRoot.ts, 7, 20)) ->y : Symbol(y, Decl(EnumAndModuleWithSameNameAndCommonRoot.ts, 7, 37)) +>x : Symbol(Point.x, Decl(EnumAndModuleWithSameNameAndCommonRoot.ts, 7, 20)) +>y : Symbol(Point.y, Decl(EnumAndModuleWithSameNameAndCommonRoot.ts, 7, 37)) } } diff --git a/tests/baselines/reference/ExportClassWhichExtendsInterfaceWithInaccessibleType.symbols b/tests/baselines/reference/ExportClassWhichExtendsInterfaceWithInaccessibleType.symbols index 8346888d81f..0ff8e694fd5 100644 --- a/tests/baselines/reference/ExportClassWhichExtendsInterfaceWithInaccessibleType.symbols +++ b/tests/baselines/reference/ExportClassWhichExtendsInterfaceWithInaccessibleType.symbols @@ -6,13 +6,13 @@ module A { >Point : Symbol(Point, Decl(ExportClassWhichExtendsInterfaceWithInaccessibleType.ts, 0, 10)) x: number; ->x : Symbol(x, Decl(ExportClassWhichExtendsInterfaceWithInaccessibleType.ts, 2, 21)) +>x : Symbol(Point.x, Decl(ExportClassWhichExtendsInterfaceWithInaccessibleType.ts, 2, 21)) y: number; ->y : Symbol(y, Decl(ExportClassWhichExtendsInterfaceWithInaccessibleType.ts, 3, 18)) +>y : Symbol(Point.y, Decl(ExportClassWhichExtendsInterfaceWithInaccessibleType.ts, 3, 18)) fromOrigin(p: Point): number; ->fromOrigin : Symbol(fromOrigin, Decl(ExportClassWhichExtendsInterfaceWithInaccessibleType.ts, 4, 18)) +>fromOrigin : Symbol(Point.fromOrigin, Decl(ExportClassWhichExtendsInterfaceWithInaccessibleType.ts, 4, 18)) >p : Symbol(p, Decl(ExportClassWhichExtendsInterfaceWithInaccessibleType.ts, 6, 19)) >Point : Symbol(Point, Decl(ExportClassWhichExtendsInterfaceWithInaccessibleType.ts, 0, 10)) } @@ -22,11 +22,11 @@ module A { >Point : Symbol(Point, Decl(ExportClassWhichExtendsInterfaceWithInaccessibleType.ts, 0, 10)) constructor(public x: number, public y: number) { } ->x : Symbol(x, Decl(ExportClassWhichExtendsInterfaceWithInaccessibleType.ts, 10, 20)) ->y : Symbol(y, Decl(ExportClassWhichExtendsInterfaceWithInaccessibleType.ts, 10, 37)) +>x : Symbol(Point2d.x, Decl(ExportClassWhichExtendsInterfaceWithInaccessibleType.ts, 10, 20)) +>y : Symbol(Point2d.y, Decl(ExportClassWhichExtendsInterfaceWithInaccessibleType.ts, 10, 37)) fromOrigin(p: Point) { ->fromOrigin : Symbol(fromOrigin, Decl(ExportClassWhichExtendsInterfaceWithInaccessibleType.ts, 10, 59)) +>fromOrigin : Symbol(Point2d.fromOrigin, Decl(ExportClassWhichExtendsInterfaceWithInaccessibleType.ts, 10, 59)) >p : Symbol(p, Decl(ExportClassWhichExtendsInterfaceWithInaccessibleType.ts, 12, 19)) >Point : Symbol(Point, Decl(ExportClassWhichExtendsInterfaceWithInaccessibleType.ts, 0, 10)) diff --git a/tests/baselines/reference/ExportClassWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.symbols b/tests/baselines/reference/ExportClassWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.symbols index 2802e6aa392..371c740d967 100644 --- a/tests/baselines/reference/ExportClassWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.symbols +++ b/tests/baselines/reference/ExportClassWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.symbols @@ -6,10 +6,10 @@ module A { >Point : Symbol(Point, Decl(ExportClassWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 0, 10)) x: number; ->x : Symbol(x, Decl(ExportClassWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 2, 24)) +>x : Symbol(Point.x, Decl(ExportClassWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 2, 24)) y: number; ->y : Symbol(y, Decl(ExportClassWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 3, 18)) +>y : Symbol(Point.y, Decl(ExportClassWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 3, 18)) } export var Origin: Point = { x: 0, y: 0 }; @@ -23,7 +23,7 @@ module A { >Point : Symbol(Point, Decl(ExportClassWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 0, 10)) z: number; ->z : Symbol(z, Decl(ExportClassWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 9, 40)) +>z : Symbol(Point3d.z, Decl(ExportClassWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 9, 40)) } export var Origin3d: Point3d = { x: 0, y: 0, z: 0 }; @@ -39,9 +39,9 @@ module A { >Point : Symbol(Point, Decl(ExportClassWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 0, 10)) constructor(public start: TPoint, public end: TPoint) { } ->start : Symbol(start, Decl(ExportClassWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 16, 20)) +>start : Symbol(Line.start, Decl(ExportClassWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 16, 20)) >TPoint : Symbol(TPoint, Decl(ExportClassWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 15, 22)) ->end : Symbol(end, Decl(ExportClassWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 16, 41)) +>end : Symbol(Line.end, Decl(ExportClassWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 16, 41)) >TPoint : Symbol(TPoint, Decl(ExportClassWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 15, 22)) } } diff --git a/tests/baselines/reference/ExportClassWithInaccessibleTypeInIndexerTypeAnnotations.symbols b/tests/baselines/reference/ExportClassWithInaccessibleTypeInIndexerTypeAnnotations.symbols index e1e433a8921..b42f561ccf3 100644 --- a/tests/baselines/reference/ExportClassWithInaccessibleTypeInIndexerTypeAnnotations.symbols +++ b/tests/baselines/reference/ExportClassWithInaccessibleTypeInIndexerTypeAnnotations.symbols @@ -6,10 +6,10 @@ module A { >Point : Symbol(Point, Decl(ExportClassWithInaccessibleTypeInIndexerTypeAnnotations.ts, 0, 10)) x: number; ->x : Symbol(x, Decl(ExportClassWithInaccessibleTypeInIndexerTypeAnnotations.ts, 2, 17)) +>x : Symbol(Point.x, Decl(ExportClassWithInaccessibleTypeInIndexerTypeAnnotations.ts, 2, 17)) y: number; ->y : Symbol(y, Decl(ExportClassWithInaccessibleTypeInIndexerTypeAnnotations.ts, 3, 18)) +>y : Symbol(Point.y, Decl(ExportClassWithInaccessibleTypeInIndexerTypeAnnotations.ts, 3, 18)) } export class points { diff --git a/tests/baselines/reference/ExportClassWithInaccessibleTypeInTypeParameterConstraint.symbols b/tests/baselines/reference/ExportClassWithInaccessibleTypeInTypeParameterConstraint.symbols index e1044bd2442..38c97a7e54a 100644 --- a/tests/baselines/reference/ExportClassWithInaccessibleTypeInTypeParameterConstraint.symbols +++ b/tests/baselines/reference/ExportClassWithInaccessibleTypeInTypeParameterConstraint.symbols @@ -6,10 +6,10 @@ module A { >Point : Symbol(Point, Decl(ExportClassWithInaccessibleTypeInTypeParameterConstraint.ts, 0, 10)) x: number; ->x : Symbol(x, Decl(ExportClassWithInaccessibleTypeInTypeParameterConstraint.ts, 2, 17)) +>x : Symbol(Point.x, Decl(ExportClassWithInaccessibleTypeInTypeParameterConstraint.ts, 2, 17)) y: number; ->y : Symbol(y, Decl(ExportClassWithInaccessibleTypeInTypeParameterConstraint.ts, 3, 18)) +>y : Symbol(Point.y, Decl(ExportClassWithInaccessibleTypeInTypeParameterConstraint.ts, 3, 18)) } export var Origin: Point = { x: 0, y: 0 }; @@ -23,7 +23,7 @@ module A { >Point : Symbol(Point, Decl(ExportClassWithInaccessibleTypeInTypeParameterConstraint.ts, 0, 10)) z: number; ->z : Symbol(z, Decl(ExportClassWithInaccessibleTypeInTypeParameterConstraint.ts, 9, 40)) +>z : Symbol(Point3d.z, Decl(ExportClassWithInaccessibleTypeInTypeParameterConstraint.ts, 9, 40)) } export var Origin3d: Point3d = { x: 0, y: 0, z: 0 }; @@ -39,9 +39,9 @@ module A { >Point : Symbol(Point, Decl(ExportClassWithInaccessibleTypeInTypeParameterConstraint.ts, 0, 10)) constructor(public start: TPoint, public end: TPoint) { } ->start : Symbol(start, Decl(ExportClassWithInaccessibleTypeInTypeParameterConstraint.ts, 16, 20)) +>start : Symbol(Line.start, Decl(ExportClassWithInaccessibleTypeInTypeParameterConstraint.ts, 16, 20)) >TPoint : Symbol(TPoint, Decl(ExportClassWithInaccessibleTypeInTypeParameterConstraint.ts, 15, 22)) ->end : Symbol(end, Decl(ExportClassWithInaccessibleTypeInTypeParameterConstraint.ts, 16, 41)) +>end : Symbol(Line.end, Decl(ExportClassWithInaccessibleTypeInTypeParameterConstraint.ts, 16, 41)) >TPoint : Symbol(TPoint, Decl(ExportClassWithInaccessibleTypeInTypeParameterConstraint.ts, 15, 22)) static fromorigin2d(p: Point): Line{ diff --git a/tests/baselines/reference/ExportFunctionWithAccessibleTypesInParameterAndReturnTypeAnnotation.symbols b/tests/baselines/reference/ExportFunctionWithAccessibleTypesInParameterAndReturnTypeAnnotation.symbols index 37b6da18c37..4903398db6a 100644 --- a/tests/baselines/reference/ExportFunctionWithAccessibleTypesInParameterAndReturnTypeAnnotation.symbols +++ b/tests/baselines/reference/ExportFunctionWithAccessibleTypesInParameterAndReturnTypeAnnotation.symbols @@ -6,19 +6,19 @@ module A { >Point : Symbol(Point, Decl(ExportFunctionWithAccessibleTypesInParameterAndReturnTypeAnnotation.ts, 0, 10)) x: number; ->x : Symbol(x, Decl(ExportFunctionWithAccessibleTypesInParameterAndReturnTypeAnnotation.ts, 2, 24)) +>x : Symbol(Point.x, Decl(ExportFunctionWithAccessibleTypesInParameterAndReturnTypeAnnotation.ts, 2, 24)) y: number; ->y : Symbol(y, Decl(ExportFunctionWithAccessibleTypesInParameterAndReturnTypeAnnotation.ts, 3, 18)) +>y : Symbol(Point.y, Decl(ExportFunctionWithAccessibleTypesInParameterAndReturnTypeAnnotation.ts, 3, 18)) } export class Line { >Line : Symbol(Line, Decl(ExportFunctionWithAccessibleTypesInParameterAndReturnTypeAnnotation.ts, 5, 5)) constructor(public start: Point, public end: Point) { } ->start : Symbol(start, Decl(ExportFunctionWithAccessibleTypesInParameterAndReturnTypeAnnotation.ts, 8, 20)) +>start : Symbol(Line.start, Decl(ExportFunctionWithAccessibleTypesInParameterAndReturnTypeAnnotation.ts, 8, 20)) >Point : Symbol(Point, Decl(ExportFunctionWithAccessibleTypesInParameterAndReturnTypeAnnotation.ts, 0, 10)) ->end : Symbol(end, Decl(ExportFunctionWithAccessibleTypesInParameterAndReturnTypeAnnotation.ts, 8, 40)) +>end : Symbol(Line.end, Decl(ExportFunctionWithAccessibleTypesInParameterAndReturnTypeAnnotation.ts, 8, 40)) >Point : Symbol(Point, Decl(ExportFunctionWithAccessibleTypesInParameterAndReturnTypeAnnotation.ts, 0, 10)) } diff --git a/tests/baselines/reference/ExportFunctionWithInaccessibleTypesInParameterTypeAnnotation.symbols b/tests/baselines/reference/ExportFunctionWithInaccessibleTypesInParameterTypeAnnotation.symbols index 41993ebf48f..2583ddc1163 100644 --- a/tests/baselines/reference/ExportFunctionWithInaccessibleTypesInParameterTypeAnnotation.symbols +++ b/tests/baselines/reference/ExportFunctionWithInaccessibleTypesInParameterTypeAnnotation.symbols @@ -6,19 +6,19 @@ module A { >Point : Symbol(Point, Decl(ExportFunctionWithInaccessibleTypesInParameterTypeAnnotation.ts, 0, 10)) x: number; ->x : Symbol(x, Decl(ExportFunctionWithInaccessibleTypesInParameterTypeAnnotation.ts, 2, 17)) +>x : Symbol(Point.x, Decl(ExportFunctionWithInaccessibleTypesInParameterTypeAnnotation.ts, 2, 17)) y: number; ->y : Symbol(y, Decl(ExportFunctionWithInaccessibleTypesInParameterTypeAnnotation.ts, 3, 18)) +>y : Symbol(Point.y, Decl(ExportFunctionWithInaccessibleTypesInParameterTypeAnnotation.ts, 3, 18)) } export class Line { >Line : Symbol(Line, Decl(ExportFunctionWithInaccessibleTypesInParameterTypeAnnotation.ts, 5, 5)) constructor(public start: Point, public end: Point) { } ->start : Symbol(start, Decl(ExportFunctionWithInaccessibleTypesInParameterTypeAnnotation.ts, 8, 20)) +>start : Symbol(Line.start, Decl(ExportFunctionWithInaccessibleTypesInParameterTypeAnnotation.ts, 8, 20)) >Point : Symbol(Point, Decl(ExportFunctionWithInaccessibleTypesInParameterTypeAnnotation.ts, 0, 10)) ->end : Symbol(end, Decl(ExportFunctionWithInaccessibleTypesInParameterTypeAnnotation.ts, 8, 40)) +>end : Symbol(Line.end, Decl(ExportFunctionWithInaccessibleTypesInParameterTypeAnnotation.ts, 8, 40)) >Point : Symbol(Point, Decl(ExportFunctionWithInaccessibleTypesInParameterTypeAnnotation.ts, 0, 10)) } diff --git a/tests/baselines/reference/ExportFunctionWithInaccessibleTypesInReturnTypeAnnotation.symbols b/tests/baselines/reference/ExportFunctionWithInaccessibleTypesInReturnTypeAnnotation.symbols index 77d57215795..b39abaf7305 100644 --- a/tests/baselines/reference/ExportFunctionWithInaccessibleTypesInReturnTypeAnnotation.symbols +++ b/tests/baselines/reference/ExportFunctionWithInaccessibleTypesInReturnTypeAnnotation.symbols @@ -6,19 +6,19 @@ module A { >Point : Symbol(Point, Decl(ExportFunctionWithInaccessibleTypesInReturnTypeAnnotation.ts, 0, 10)) x: number; ->x : Symbol(x, Decl(ExportFunctionWithInaccessibleTypesInReturnTypeAnnotation.ts, 2, 24)) +>x : Symbol(Point.x, Decl(ExportFunctionWithInaccessibleTypesInReturnTypeAnnotation.ts, 2, 24)) y: number; ->y : Symbol(y, Decl(ExportFunctionWithInaccessibleTypesInReturnTypeAnnotation.ts, 3, 18)) +>y : Symbol(Point.y, Decl(ExportFunctionWithInaccessibleTypesInReturnTypeAnnotation.ts, 3, 18)) } class Line { >Line : Symbol(Line, Decl(ExportFunctionWithInaccessibleTypesInReturnTypeAnnotation.ts, 5, 5)) constructor(public start: Point, public end: Point) { } ->start : Symbol(start, Decl(ExportFunctionWithInaccessibleTypesInReturnTypeAnnotation.ts, 8, 20)) +>start : Symbol(Line.start, Decl(ExportFunctionWithInaccessibleTypesInReturnTypeAnnotation.ts, 8, 20)) >Point : Symbol(Point, Decl(ExportFunctionWithInaccessibleTypesInReturnTypeAnnotation.ts, 0, 10)) ->end : Symbol(end, Decl(ExportFunctionWithInaccessibleTypesInReturnTypeAnnotation.ts, 8, 40)) +>end : Symbol(Line.end, Decl(ExportFunctionWithInaccessibleTypesInReturnTypeAnnotation.ts, 8, 40)) >Point : Symbol(Point, Decl(ExportFunctionWithInaccessibleTypesInReturnTypeAnnotation.ts, 0, 10)) } diff --git a/tests/baselines/reference/ExportInterfaceWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.symbols b/tests/baselines/reference/ExportInterfaceWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.symbols index 31b978c85f9..d03c7a4f58f 100644 --- a/tests/baselines/reference/ExportInterfaceWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.symbols +++ b/tests/baselines/reference/ExportInterfaceWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.symbols @@ -6,10 +6,10 @@ module A { >Point : Symbol(Point, Decl(ExportInterfaceWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 0, 10)) x: number; ->x : Symbol(x, Decl(ExportInterfaceWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 2, 28)) +>x : Symbol(Point.x, Decl(ExportInterfaceWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 2, 28)) y: number; ->y : Symbol(y, Decl(ExportInterfaceWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 3, 18)) +>y : Symbol(Point.y, Decl(ExportInterfaceWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 3, 18)) } export var Origin: Point = { x: 0, y: 0 }; @@ -23,7 +23,7 @@ module A { >Point : Symbol(Point, Decl(ExportInterfaceWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 0, 10)) z: number; ->z : Symbol(z, Decl(ExportInterfaceWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 9, 44)) +>z : Symbol(Point3d.z, Decl(ExportInterfaceWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 9, 44)) } export var Origin3d: Point3d = { x: 0, y: 0, z: 0 }; @@ -45,11 +45,11 @@ module A { >TPoint : Symbol(TPoint, Decl(ExportInterfaceWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 15, 26)) start: TPoint; ->start : Symbol(start, Decl(ExportInterfaceWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 16, 41)) +>start : Symbol(Line.start, Decl(ExportInterfaceWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 16, 41)) >TPoint : Symbol(TPoint, Decl(ExportInterfaceWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 15, 26)) end: TPoint; ->end : Symbol(end, Decl(ExportInterfaceWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 17, 22)) +>end : Symbol(Line.end, Decl(ExportInterfaceWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 17, 22)) >TPoint : Symbol(TPoint, Decl(ExportInterfaceWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.ts, 15, 26)) } } diff --git a/tests/baselines/reference/ExportInterfaceWithInaccessibleTypeInIndexerTypeAnnotations.symbols b/tests/baselines/reference/ExportInterfaceWithInaccessibleTypeInIndexerTypeAnnotations.symbols index 00f9025aa8c..d92f5ea5366 100644 --- a/tests/baselines/reference/ExportInterfaceWithInaccessibleTypeInIndexerTypeAnnotations.symbols +++ b/tests/baselines/reference/ExportInterfaceWithInaccessibleTypeInIndexerTypeAnnotations.symbols @@ -6,10 +6,10 @@ module A { >Point : Symbol(Point, Decl(ExportInterfaceWithInaccessibleTypeInIndexerTypeAnnotations.ts, 0, 10)) x: number; ->x : Symbol(x, Decl(ExportInterfaceWithInaccessibleTypeInIndexerTypeAnnotations.ts, 2, 21)) +>x : Symbol(Point.x, Decl(ExportInterfaceWithInaccessibleTypeInIndexerTypeAnnotations.ts, 2, 21)) y: number; ->y : Symbol(y, Decl(ExportInterfaceWithInaccessibleTypeInIndexerTypeAnnotations.ts, 3, 18)) +>y : Symbol(Point.y, Decl(ExportInterfaceWithInaccessibleTypeInIndexerTypeAnnotations.ts, 3, 18)) } export interface points { diff --git a/tests/baselines/reference/ExportInterfaceWithInaccessibleTypeInTypeParameterConstraint.symbols b/tests/baselines/reference/ExportInterfaceWithInaccessibleTypeInTypeParameterConstraint.symbols index 7ee70a0c77b..1d452b2b496 100644 --- a/tests/baselines/reference/ExportInterfaceWithInaccessibleTypeInTypeParameterConstraint.symbols +++ b/tests/baselines/reference/ExportInterfaceWithInaccessibleTypeInTypeParameterConstraint.symbols @@ -6,10 +6,10 @@ module A { >Point : Symbol(Point, Decl(ExportInterfaceWithInaccessibleTypeInTypeParameterConstraint.ts, 0, 10)) x: number; ->x : Symbol(x, Decl(ExportInterfaceWithInaccessibleTypeInTypeParameterConstraint.ts, 2, 21)) +>x : Symbol(Point.x, Decl(ExportInterfaceWithInaccessibleTypeInTypeParameterConstraint.ts, 2, 21)) y: number; ->y : Symbol(y, Decl(ExportInterfaceWithInaccessibleTypeInTypeParameterConstraint.ts, 3, 18)) +>y : Symbol(Point.y, Decl(ExportInterfaceWithInaccessibleTypeInTypeParameterConstraint.ts, 3, 18)) } export var Origin: Point = { x: 0, y: 0 }; @@ -23,7 +23,7 @@ module A { >Point : Symbol(Point, Decl(ExportInterfaceWithInaccessibleTypeInTypeParameterConstraint.ts, 0, 10)) z: number; ->z : Symbol(z, Decl(ExportInterfaceWithInaccessibleTypeInTypeParameterConstraint.ts, 9, 44)) +>z : Symbol(Point3d.z, Decl(ExportInterfaceWithInaccessibleTypeInTypeParameterConstraint.ts, 9, 44)) } export var Origin3d: Point3d = { x: 0, y: 0, z: 0 }; @@ -45,11 +45,11 @@ module A { >TPoint : Symbol(TPoint, Decl(ExportInterfaceWithInaccessibleTypeInTypeParameterConstraint.ts, 15, 26)) start: TPoint; ->start : Symbol(start, Decl(ExportInterfaceWithInaccessibleTypeInTypeParameterConstraint.ts, 16, 41)) +>start : Symbol(Line.start, Decl(ExportInterfaceWithInaccessibleTypeInTypeParameterConstraint.ts, 16, 41)) >TPoint : Symbol(TPoint, Decl(ExportInterfaceWithInaccessibleTypeInTypeParameterConstraint.ts, 15, 26)) end: TPoint; ->end : Symbol(end, Decl(ExportInterfaceWithInaccessibleTypeInTypeParameterConstraint.ts, 18, 22)) +>end : Symbol(Line.end, Decl(ExportInterfaceWithInaccessibleTypeInTypeParameterConstraint.ts, 18, 22)) >TPoint : Symbol(TPoint, Decl(ExportInterfaceWithInaccessibleTypeInTypeParameterConstraint.ts, 15, 26)) } } diff --git a/tests/baselines/reference/ExportModuleWithAccessibleTypesOnItsExportedMembers.symbols b/tests/baselines/reference/ExportModuleWithAccessibleTypesOnItsExportedMembers.symbols index acf6a1caef4..76df3ffd35a 100644 --- a/tests/baselines/reference/ExportModuleWithAccessibleTypesOnItsExportedMembers.symbols +++ b/tests/baselines/reference/ExportModuleWithAccessibleTypesOnItsExportedMembers.symbols @@ -6,8 +6,8 @@ module A { >Point : Symbol(Point, Decl(ExportModuleWithAccessibleTypesOnItsExportedMembers.ts, 0, 10)) constructor(public x: number, public y: number) { } ->x : Symbol(x, Decl(ExportModuleWithAccessibleTypesOnItsExportedMembers.ts, 3, 20)) ->y : Symbol(y, Decl(ExportModuleWithAccessibleTypesOnItsExportedMembers.ts, 3, 37)) +>x : Symbol(Point.x, Decl(ExportModuleWithAccessibleTypesOnItsExportedMembers.ts, 3, 20)) +>y : Symbol(Point.y, Decl(ExportModuleWithAccessibleTypesOnItsExportedMembers.ts, 3, 37)) } export module B { diff --git a/tests/baselines/reference/ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInMemberTypeAnnotations.symbols b/tests/baselines/reference/ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInMemberTypeAnnotations.symbols index dccc613aca9..2bbedd3ea09 100644 --- a/tests/baselines/reference/ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInMemberTypeAnnotations.symbols +++ b/tests/baselines/reference/ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInMemberTypeAnnotations.symbols @@ -6,8 +6,8 @@ module A { >Point : Symbol(Point, Decl(ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInMemberTypeAnnotations.ts, 0, 10)) constructor(public x: number, public y: number) { } ->x : Symbol(x, Decl(ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInMemberTypeAnnotations.ts, 3, 20)) ->y : Symbol(y, Decl(ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInMemberTypeAnnotations.ts, 3, 37)) +>x : Symbol(Point.x, Decl(ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInMemberTypeAnnotations.ts, 3, 20)) +>y : Symbol(Point.y, Decl(ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInMemberTypeAnnotations.ts, 3, 37)) } export var Origin: Point = { x: 0, y: 0 }; diff --git a/tests/baselines/reference/ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInNestedMemberTypeAnnotations.symbols b/tests/baselines/reference/ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInNestedMemberTypeAnnotations.symbols index 3c1ca13b616..97ac79dc44d 100644 --- a/tests/baselines/reference/ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInNestedMemberTypeAnnotations.symbols +++ b/tests/baselines/reference/ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInNestedMemberTypeAnnotations.symbols @@ -6,8 +6,8 @@ module A { >Point : Symbol(Point, Decl(ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInNestedMemberTypeAnnotations.ts, 0, 10)) constructor(public x: number, public y: number) { } ->x : Symbol(x, Decl(ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInNestedMemberTypeAnnotations.ts, 3, 20)) ->y : Symbol(y, Decl(ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInNestedMemberTypeAnnotations.ts, 3, 37)) +>x : Symbol(Point.x, Decl(ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInNestedMemberTypeAnnotations.ts, 3, 20)) +>y : Symbol(Point.y, Decl(ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInNestedMemberTypeAnnotations.ts, 3, 37)) } export var UnitSquare : { diff --git a/tests/baselines/reference/ExportVariableOfGenericTypeWithInaccessibleTypeAsTypeArgument.symbols b/tests/baselines/reference/ExportVariableOfGenericTypeWithInaccessibleTypeAsTypeArgument.symbols index 90f2701b534..e837af939b9 100644 --- a/tests/baselines/reference/ExportVariableOfGenericTypeWithInaccessibleTypeAsTypeArgument.symbols +++ b/tests/baselines/reference/ExportVariableOfGenericTypeWithInaccessibleTypeAsTypeArgument.symbols @@ -6,7 +6,7 @@ module A { >B : Symbol(B, Decl(ExportVariableOfGenericTypeWithInaccessibleTypeAsTypeArgument.ts, 0, 10)) id: number; ->id : Symbol(id, Decl(ExportVariableOfGenericTypeWithInaccessibleTypeAsTypeArgument.ts, 1, 13)) +>id : Symbol(B.id, Decl(ExportVariableOfGenericTypeWithInaccessibleTypeAsTypeArgument.ts, 1, 13)) } export var beez: Array; diff --git a/tests/baselines/reference/ExportVariableWithAccessibleTypeInTypeAnnotation.symbols b/tests/baselines/reference/ExportVariableWithAccessibleTypeInTypeAnnotation.symbols index 55ba5fd0cf3..c32bed24d98 100644 --- a/tests/baselines/reference/ExportVariableWithAccessibleTypeInTypeAnnotation.symbols +++ b/tests/baselines/reference/ExportVariableWithAccessibleTypeInTypeAnnotation.symbols @@ -6,10 +6,10 @@ module A { >Point : Symbol(Point, Decl(ExportVariableWithAccessibleTypeInTypeAnnotation.ts, 0, 10)) x: number; ->x : Symbol(x, Decl(ExportVariableWithAccessibleTypeInTypeAnnotation.ts, 2, 28)) +>x : Symbol(Point.x, Decl(ExportVariableWithAccessibleTypeInTypeAnnotation.ts, 2, 28)) y: number; ->y : Symbol(y, Decl(ExportVariableWithAccessibleTypeInTypeAnnotation.ts, 3, 18)) +>y : Symbol(Point.y, Decl(ExportVariableWithAccessibleTypeInTypeAnnotation.ts, 3, 18)) } // valid since Point is exported diff --git a/tests/baselines/reference/ExportVariableWithInaccessibleTypeInTypeAnnotation.symbols b/tests/baselines/reference/ExportVariableWithInaccessibleTypeInTypeAnnotation.symbols index ac43ccea789..ea7806eb0f6 100644 --- a/tests/baselines/reference/ExportVariableWithInaccessibleTypeInTypeAnnotation.symbols +++ b/tests/baselines/reference/ExportVariableWithInaccessibleTypeInTypeAnnotation.symbols @@ -6,10 +6,10 @@ module A { >Point : Symbol(Point, Decl(ExportVariableWithInaccessibleTypeInTypeAnnotation.ts, 0, 10)) x: number; ->x : Symbol(x, Decl(ExportVariableWithInaccessibleTypeInTypeAnnotation.ts, 2, 28)) +>x : Symbol(Point.x, Decl(ExportVariableWithInaccessibleTypeInTypeAnnotation.ts, 2, 28)) y: number; ->y : Symbol(y, Decl(ExportVariableWithInaccessibleTypeInTypeAnnotation.ts, 3, 18)) +>y : Symbol(Point.y, Decl(ExportVariableWithInaccessibleTypeInTypeAnnotation.ts, 3, 18)) } // valid since Point is exported @@ -24,7 +24,7 @@ module A { >Point : Symbol(Point, Decl(ExportVariableWithInaccessibleTypeInTypeAnnotation.ts, 0, 10)) z: number; ->z : Symbol(z, Decl(ExportVariableWithInaccessibleTypeInTypeAnnotation.ts, 10, 37)) +>z : Symbol(Point3d.z, Decl(ExportVariableWithInaccessibleTypeInTypeAnnotation.ts, 10, 37)) } // invalid Point3d is not exported diff --git a/tests/baselines/reference/ModuleAndEnumWithSameNameAndCommonRoot.symbols b/tests/baselines/reference/ModuleAndEnumWithSameNameAndCommonRoot.symbols index 72eb0340eb2..7d1358ca927 100644 --- a/tests/baselines/reference/ModuleAndEnumWithSameNameAndCommonRoot.symbols +++ b/tests/baselines/reference/ModuleAndEnumWithSameNameAndCommonRoot.symbols @@ -6,8 +6,8 @@ module enumdule { >Point : Symbol(Point, Decl(ModuleAndEnumWithSameNameAndCommonRoot.ts, 0, 17)) constructor(public x: number, public y: number) { } ->x : Symbol(x, Decl(ModuleAndEnumWithSameNameAndCommonRoot.ts, 3, 20)) ->y : Symbol(y, Decl(ModuleAndEnumWithSameNameAndCommonRoot.ts, 3, 37)) +>x : Symbol(Point.x, Decl(ModuleAndEnumWithSameNameAndCommonRoot.ts, 3, 20)) +>y : Symbol(Point.y, Decl(ModuleAndEnumWithSameNameAndCommonRoot.ts, 3, 37)) } } diff --git a/tests/baselines/reference/Protected8.symbols b/tests/baselines/reference/Protected8.symbols index 502e68bb9c2..eccd4b50f3c 100644 --- a/tests/baselines/reference/Protected8.symbols +++ b/tests/baselines/reference/Protected8.symbols @@ -3,8 +3,8 @@ interface I { >I : Symbol(I, Decl(Protected8.ts, 0, 0)) protected ->protected : Symbol(protected, Decl(Protected8.ts, 0, 13)) +>protected : Symbol(I.protected, Decl(Protected8.ts, 0, 13)) p ->p : Symbol(p, Decl(Protected8.ts, 1, 12)) +>p : Symbol(I.p, Decl(Protected8.ts, 1, 12)) } diff --git a/tests/baselines/reference/Protected9.symbols b/tests/baselines/reference/Protected9.symbols index 27ce91344e4..9ca97c78f9a 100644 --- a/tests/baselines/reference/Protected9.symbols +++ b/tests/baselines/reference/Protected9.symbols @@ -3,5 +3,5 @@ class C { >C : Symbol(C, Decl(Protected9.ts, 0, 0)) constructor(protected p) { } ->p : Symbol(p, Decl(Protected9.ts, 1, 15)) +>p : Symbol(C.p, Decl(Protected9.ts, 1, 15)) } diff --git a/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.symbols b/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.symbols index c9e2c124e9d..f5830071897 100644 --- a/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.symbols +++ b/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.symbols @@ -6,10 +6,10 @@ module A { >Point : Symbol(Point, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 0, 10)) x: number; ->x : Symbol(x, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 1, 24)) +>x : Symbol(Point.x, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 1, 24)) y: number; ->y : Symbol(y, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 2, 18)) +>y : Symbol(Point.y, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 2, 18)) } } @@ -20,7 +20,7 @@ module A { >Point : Symbol(Point, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 7, 10)) fromCarthesian(p: A.Point) { ->fromCarthesian : Symbol(fromCarthesian, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 8, 17)) +>fromCarthesian : Symbol(Point.fromCarthesian, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 8, 17)) >p : Symbol(p, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 9, 23)) >A : Symbol(A, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 0, 0), Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 5, 1)) >Point : Symbol(Point, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 0, 10)) @@ -58,7 +58,7 @@ module X.Y.Z { >Line : Symbol(Line, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 19, 14)) length: number; ->length : Symbol(length, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 20, 23)) +>length : Symbol(Line.length, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 20, 23)) } } @@ -75,7 +75,7 @@ module X { >Line : Symbol(Line, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 27, 25)) name: string; ->name : Symbol(name, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 28, 24)) +>name : Symbol(Line.name, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts, 28, 24)) } } } diff --git a/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.symbols b/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.symbols index 2fcf3c4b09e..f9237087508 100644 --- a/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.symbols +++ b/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.symbols @@ -6,13 +6,13 @@ module A { >Point : Symbol(Point, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 0, 10)) x: number; ->x : Symbol(x, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 1, 28)) +>x : Symbol(Point.x, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 1, 28)) y: number; ->y : Symbol(y, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 2, 18)) +>y : Symbol(Point.y, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 2, 18)) toCarth(): Point; ->toCarth : Symbol(toCarth, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 3, 18)) +>toCarth : Symbol(Point.toCarth, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 3, 18)) >Point : Symbol(Point, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 0, 10)) } } @@ -24,7 +24,7 @@ module A { >Point : Symbol(Point, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 8, 10)) fromCarth(): Point; ->fromCarth : Symbol(fromCarth, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 9, 21)) +>fromCarth : Symbol(Point.fromCarth, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 9, 21)) >Point : Symbol(Point, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 8, 10)) } } @@ -72,12 +72,12 @@ module X { >Line : Symbol(Line, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 25, 23)) start: A.Point; ->start : Symbol(start, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 26, 24)) +>start : Symbol(Line.start, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 26, 24)) >A : Symbol(A, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 0, 0), Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 6, 1)) >Point : Symbol(A.Point, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 0, 10)) end: A.Point; ->end : Symbol(end, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 27, 27)) +>end : Symbol(Line.end, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 27, 27)) >A : Symbol(A, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 0, 0), Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 6, 1)) >Point : Symbol(A.Point, Decl(TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts, 0, 10)) } diff --git a/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedAndNonExportedLocalVarsOfTheSameName.symbols b/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedAndNonExportedLocalVarsOfTheSameName.symbols index b7402952dff..a9de1388dcd 100644 --- a/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedAndNonExportedLocalVarsOfTheSameName.symbols +++ b/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedAndNonExportedLocalVarsOfTheSameName.symbols @@ -6,10 +6,10 @@ module A { >Point : Symbol(Point, Decl(part1.ts, 0, 10)) x: number; ->x : Symbol(x, Decl(part1.ts, 1, 28)) +>x : Symbol(Point.x, Decl(part1.ts, 1, 28)) y: number; ->y : Symbol(y, Decl(part1.ts, 2, 18)) +>y : Symbol(Point.y, Decl(part1.ts, 2, 18)) } export module Utils { @@ -55,9 +55,9 @@ module A { >Plane : Symbol(Plane, Decl(part2.ts, 4, 25)) constructor(public tl: Point, public br: Point) { } ->tl : Symbol(tl, Decl(part2.ts, 6, 24)) +>tl : Symbol(Plane.tl, Decl(part2.ts, 6, 24)) >Point : Symbol(Point, Decl(part1.ts, 0, 10)) ->br : Symbol(br, Decl(part2.ts, 6, 41)) +>br : Symbol(Plane.br, Decl(part2.ts, 6, 41)) >Point : Symbol(Point, Decl(part1.ts, 0, 10)) } } diff --git a/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.symbols b/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.symbols index 3e8fa64501f..ba0d0a1888d 100644 --- a/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.symbols +++ b/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.symbols @@ -6,13 +6,13 @@ module A { >Point : Symbol(Point, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 0, 10), Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 8, 10)) x: number; ->x : Symbol(x, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 1, 28)) +>x : Symbol(Point.x, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 1, 28)) y: number; ->y : Symbol(y, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 2, 18)) +>y : Symbol(Point.y, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 2, 18)) toCarth(): Point; ->toCarth : Symbol(toCarth, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 3, 18)) +>toCarth : Symbol(Point.toCarth, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 3, 18)) >Point : Symbol(Point, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 0, 10), Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 8, 10)) } } @@ -24,7 +24,7 @@ module A { >Point : Symbol(Point, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 0, 10), Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 8, 10)) fromCarth(): Point; ->fromCarth : Symbol(fromCarth, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 9, 28)) +>fromCarth : Symbol(Point.fromCarth, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 9, 28)) >Point : Symbol(Point, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 0, 10), Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 8, 10)) } } @@ -75,12 +75,12 @@ module X { >Line : Symbol(Line, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 18, 14), Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 25, 23)) start: A.Point; ->start : Symbol(start, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 26, 31)) +>start : Symbol(Line.start, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 26, 31)) >A : Symbol(A, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 0, 0), Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 6, 1)) >Point : Symbol(A.Point, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 0, 10), Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 8, 10)) end: A.Point; ->end : Symbol(end, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 27, 27)) +>end : Symbol(Line.end, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 27, 27)) >A : Symbol(A, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 0, 0), Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 6, 1)) >Point : Symbol(A.Point, Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 0, 10), Decl(TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts, 8, 10)) } diff --git a/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedModulesOfTheSameName.symbols b/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedModulesOfTheSameName.symbols index e8187771695..bf8fd1dc48d 100644 --- a/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedModulesOfTheSameName.symbols +++ b/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedModulesOfTheSameName.symbols @@ -39,7 +39,7 @@ module X.Y.Z { >Line : Symbol(Line, Decl(TwoInternalModulesThatMergeEachWithExportedModulesOfTheSameName.ts, 14, 14)) length: number; ->length : Symbol(length, Decl(TwoInternalModulesThatMergeEachWithExportedModulesOfTheSameName.ts, 15, 23)) +>length : Symbol(Line.length, Decl(TwoInternalModulesThatMergeEachWithExportedModulesOfTheSameName.ts, 15, 23)) } } @@ -56,7 +56,7 @@ module X { >Line : Symbol(Line, Decl(TwoInternalModulesThatMergeEachWithExportedModulesOfTheSameName.ts, 22, 18)) name: string; ->name : Symbol(name, Decl(TwoInternalModulesThatMergeEachWithExportedModulesOfTheSameName.ts, 23, 31)) +>name : Symbol(Line.name, Decl(TwoInternalModulesThatMergeEachWithExportedModulesOfTheSameName.ts, 23, 31)) } } } diff --git a/tests/baselines/reference/TwoInternalModulesWithTheSameNameAndDifferentCommonRoot.symbols b/tests/baselines/reference/TwoInternalModulesWithTheSameNameAndDifferentCommonRoot.symbols index 5c533273fa6..c76da99ac42 100644 --- a/tests/baselines/reference/TwoInternalModulesWithTheSameNameAndDifferentCommonRoot.symbols +++ b/tests/baselines/reference/TwoInternalModulesWithTheSameNameAndDifferentCommonRoot.symbols @@ -9,10 +9,10 @@ module Root { >Point : Symbol(Point, Decl(part1.ts, 1, 21)) x: number; ->x : Symbol(x, Decl(part1.ts, 2, 32)) +>x : Symbol(Point.x, Decl(part1.ts, 2, 32)) y: number; ->y : Symbol(y, Decl(part1.ts, 3, 22)) +>y : Symbol(Point.y, Decl(part1.ts, 3, 22)) } export module Utils { @@ -62,11 +62,11 @@ module otherRoot { >Plane : Symbol(Plane, Decl(part2.ts, 5, 29)) constructor(public tl: Root.A.Point, public br: Root.A.Point) { } ->tl : Symbol(tl, Decl(part2.ts, 7, 28)) +>tl : Symbol(Plane.tl, Decl(part2.ts, 7, 28)) >Root : Symbol(Root, Decl(part1.ts, 0, 0)) >A : Symbol(Root.A, Decl(part1.ts, 0, 13)) >Point : Symbol(Root.A.Point, Decl(part1.ts, 1, 21)) ->br : Symbol(br, Decl(part2.ts, 7, 52)) +>br : Symbol(Plane.br, Decl(part2.ts, 7, 52)) >Root : Symbol(Root, Decl(part1.ts, 0, 0)) >A : Symbol(Root.A, Decl(part1.ts, 0, 13)) >Point : Symbol(Root.A.Point, Decl(part1.ts, 1, 21)) diff --git a/tests/baselines/reference/TwoInternalModulesWithTheSameNameAndSameCommonRoot.symbols b/tests/baselines/reference/TwoInternalModulesWithTheSameNameAndSameCommonRoot.symbols index 34abd4ecd65..ada4d20c0be 100644 --- a/tests/baselines/reference/TwoInternalModulesWithTheSameNameAndSameCommonRoot.symbols +++ b/tests/baselines/reference/TwoInternalModulesWithTheSameNameAndSameCommonRoot.symbols @@ -6,10 +6,10 @@ module A { >Point : Symbol(Point, Decl(part1.ts, 0, 10)) x: number; ->x : Symbol(x, Decl(part1.ts, 1, 28)) +>x : Symbol(Point.x, Decl(part1.ts, 1, 28)) y: number; ->y : Symbol(y, Decl(part1.ts, 2, 18)) +>y : Symbol(Point.y, Decl(part1.ts, 2, 18)) } export module Utils { @@ -52,9 +52,9 @@ module A { >Plane : Symbol(Plane, Decl(part2.ts, 3, 25)) constructor(public tl: Point, public br: Point) { } ->tl : Symbol(tl, Decl(part2.ts, 5, 24)) +>tl : Symbol(Plane.tl, Decl(part2.ts, 5, 24)) >Point : Symbol(Point, Decl(part1.ts, 0, 10)) ->br : Symbol(br, Decl(part2.ts, 5, 41)) +>br : Symbol(Plane.br, Decl(part2.ts, 5, 41)) >Point : Symbol(Point, Decl(part1.ts, 0, 10)) } } diff --git a/tests/baselines/reference/TypeGuardWithArrayUnion.symbols b/tests/baselines/reference/TypeGuardWithArrayUnion.symbols index 2ff91774b83..38d1dcf3e0a 100644 --- a/tests/baselines/reference/TypeGuardWithArrayUnion.symbols +++ b/tests/baselines/reference/TypeGuardWithArrayUnion.symbols @@ -3,7 +3,7 @@ class Message { >Message : Symbol(Message, Decl(TypeGuardWithArrayUnion.ts, 0, 0)) value: string; ->value : Symbol(value, Decl(TypeGuardWithArrayUnion.ts, 0, 15)) +>value : Symbol(Message.value, Decl(TypeGuardWithArrayUnion.ts, 0, 15)) } function saySize(message: Message | Message[]) { diff --git a/tests/baselines/reference/TypeGuardWithEnumUnion.types b/tests/baselines/reference/TypeGuardWithEnumUnion.types index 453ec220f02..05d55cb0dbb 100644 --- a/tests/baselines/reference/TypeGuardWithEnumUnion.types +++ b/tests/baselines/reference/TypeGuardWithEnumUnion.types @@ -55,7 +55,7 @@ function f2(x: Color | string | string[]) { if (typeof x === "number") { >typeof x === "number" : boolean >typeof x : string ->x : Color | string | string[] +>x : string[] | Color | string >"number" : string var z = x; @@ -68,16 +68,16 @@ function f2(x: Color | string | string[]) { } else { var w = x; ->w : string | string[] ->x : string | string[] +>w : string[] | string +>x : string[] | string var w: string | string[]; ->w : string | string[] +>w : string[] | string } if (typeof x === "string") { >typeof x === "string" : boolean >typeof x : string ->x : Color | string | string[] +>x : Color | string[] | string >"string" : string var a = x; diff --git a/tests/baselines/reference/abstractInterfaceIdentifierName.symbols b/tests/baselines/reference/abstractInterfaceIdentifierName.symbols index c70cdec8ac9..29a1a361894 100644 --- a/tests/baselines/reference/abstractInterfaceIdentifierName.symbols +++ b/tests/baselines/reference/abstractInterfaceIdentifierName.symbols @@ -4,6 +4,6 @@ interface abstract { >abstract : Symbol(abstract, Decl(abstractInterfaceIdentifierName.ts, 0, 0)) abstract(): void; ->abstract : Symbol(abstract, Decl(abstractInterfaceIdentifierName.ts, 1, 20)) +>abstract : Symbol(abstract.abstract, Decl(abstractInterfaceIdentifierName.ts, 1, 20)) } diff --git a/tests/baselines/reference/abstractProperty.symbols b/tests/baselines/reference/abstractProperty.symbols index f64df9a5cde..3c69af4ffe9 100644 --- a/tests/baselines/reference/abstractProperty.symbols +++ b/tests/baselines/reference/abstractProperty.symbols @@ -3,57 +3,57 @@ interface A { >A : Symbol(A, Decl(abstractProperty.ts, 0, 0)) prop: string; ->prop : Symbol(prop, Decl(abstractProperty.ts, 0, 13)) +>prop : Symbol(A.prop, Decl(abstractProperty.ts, 0, 13)) raw: string; ->raw : Symbol(raw, Decl(abstractProperty.ts, 1, 17)) +>raw : Symbol(A.raw, Decl(abstractProperty.ts, 1, 17)) m(): void; ->m : Symbol(m, Decl(abstractProperty.ts, 2, 16)) +>m : Symbol(A.m, Decl(abstractProperty.ts, 2, 16)) } abstract class B implements A { >B : Symbol(B, Decl(abstractProperty.ts, 4, 1)) >A : Symbol(A, Decl(abstractProperty.ts, 0, 0)) abstract prop: string; ->prop : Symbol(prop, Decl(abstractProperty.ts, 5, 31)) +>prop : Symbol(B.prop, Decl(abstractProperty.ts, 5, 31)) abstract raw: string; ->raw : Symbol(raw, Decl(abstractProperty.ts, 6, 26)) +>raw : Symbol(B.raw, Decl(abstractProperty.ts, 6, 26)) abstract readonly ro: string; ->ro : Symbol(ro, Decl(abstractProperty.ts, 7, 25)) +>ro : Symbol(B.ro, Decl(abstractProperty.ts, 7, 25)) abstract get readonlyProp(): string; ->readonlyProp : Symbol(readonlyProp, Decl(abstractProperty.ts, 8, 33), Decl(abstractProperty.ts, 9, 40)) +>readonlyProp : Symbol(B.readonlyProp, Decl(abstractProperty.ts, 8, 33), Decl(abstractProperty.ts, 9, 40)) abstract set readonlyProp(val: string); ->readonlyProp : Symbol(readonlyProp, Decl(abstractProperty.ts, 8, 33), Decl(abstractProperty.ts, 9, 40)) +>readonlyProp : Symbol(B.readonlyProp, Decl(abstractProperty.ts, 8, 33), Decl(abstractProperty.ts, 9, 40)) >val : Symbol(val, Decl(abstractProperty.ts, 10, 30)) abstract m(): void; ->m : Symbol(m, Decl(abstractProperty.ts, 10, 43)) +>m : Symbol(B.m, Decl(abstractProperty.ts, 10, 43)) } class C extends B { >C : Symbol(C, Decl(abstractProperty.ts, 12, 1)) >B : Symbol(B, Decl(abstractProperty.ts, 4, 1)) get prop() { return "foo"; } ->prop : Symbol(prop, Decl(abstractProperty.ts, 13, 19), Decl(abstractProperty.ts, 14, 32)) +>prop : Symbol(C.prop, Decl(abstractProperty.ts, 13, 19), Decl(abstractProperty.ts, 14, 32)) set prop(v) { } ->prop : Symbol(prop, Decl(abstractProperty.ts, 13, 19), Decl(abstractProperty.ts, 14, 32)) +>prop : Symbol(C.prop, Decl(abstractProperty.ts, 13, 19), Decl(abstractProperty.ts, 14, 32)) >v : Symbol(v, Decl(abstractProperty.ts, 15, 13)) raw = "edge"; ->raw : Symbol(raw, Decl(abstractProperty.ts, 15, 19)) +>raw : Symbol(C.raw, Decl(abstractProperty.ts, 15, 19)) readonly ro = "readonly please"; ->ro : Symbol(ro, Decl(abstractProperty.ts, 16, 17)) +>ro : Symbol(C.ro, Decl(abstractProperty.ts, 16, 17)) readonlyProp: string; // don't have to give a value, in fact ->readonlyProp : Symbol(readonlyProp, Decl(abstractProperty.ts, 17, 36)) +>readonlyProp : Symbol(C.readonlyProp, Decl(abstractProperty.ts, 17, 36)) m() { } ->m : Symbol(m, Decl(abstractProperty.ts, 18, 25)) +>m : Symbol(C.m, Decl(abstractProperty.ts, 18, 25)) } diff --git a/tests/baselines/reference/accessOverriddenBaseClassMember1.symbols b/tests/baselines/reference/accessOverriddenBaseClassMember1.symbols index e5e19030afa..edcea5686e7 100644 --- a/tests/baselines/reference/accessOverriddenBaseClassMember1.symbols +++ b/tests/baselines/reference/accessOverriddenBaseClassMember1.symbols @@ -3,19 +3,19 @@ class Point { >Point : Symbol(Point, Decl(accessOverriddenBaseClassMember1.ts, 0, 0)) constructor(public x: number, public y: number) { } ->x : Symbol(x, Decl(accessOverriddenBaseClassMember1.ts, 1, 16)) ->y : Symbol(y, Decl(accessOverriddenBaseClassMember1.ts, 1, 33)) +>x : Symbol(Point.x, Decl(accessOverriddenBaseClassMember1.ts, 1, 16)) +>y : Symbol(Point.y, Decl(accessOverriddenBaseClassMember1.ts, 1, 33)) public toString() { ->toString : Symbol(toString, Decl(accessOverriddenBaseClassMember1.ts, 1, 55)) +>toString : Symbol(Point.toString, Decl(accessOverriddenBaseClassMember1.ts, 1, 55)) return "x=" + this.x + " y=" + this.y; ->this.x : Symbol(x, Decl(accessOverriddenBaseClassMember1.ts, 1, 16)) +>this.x : Symbol(Point.x, Decl(accessOverriddenBaseClassMember1.ts, 1, 16)) >this : Symbol(Point, Decl(accessOverriddenBaseClassMember1.ts, 0, 0)) ->x : Symbol(x, Decl(accessOverriddenBaseClassMember1.ts, 1, 16)) ->this.y : Symbol(y, Decl(accessOverriddenBaseClassMember1.ts, 1, 33)) +>x : Symbol(Point.x, Decl(accessOverriddenBaseClassMember1.ts, 1, 16)) +>this.y : Symbol(Point.y, Decl(accessOverriddenBaseClassMember1.ts, 1, 33)) >this : Symbol(Point, Decl(accessOverriddenBaseClassMember1.ts, 0, 0)) ->y : Symbol(y, Decl(accessOverriddenBaseClassMember1.ts, 1, 33)) +>y : Symbol(Point.y, Decl(accessOverriddenBaseClassMember1.ts, 1, 33)) } } class ColoredPoint extends Point { @@ -25,7 +25,7 @@ class ColoredPoint extends Point { constructor(x: number, y: number, public color: string) { >x : Symbol(x, Decl(accessOverriddenBaseClassMember1.ts, 7, 16)) >y : Symbol(y, Decl(accessOverriddenBaseClassMember1.ts, 7, 26)) ->color : Symbol(color, Decl(accessOverriddenBaseClassMember1.ts, 7, 37)) +>color : Symbol(ColoredPoint.color, Decl(accessOverriddenBaseClassMember1.ts, 7, 37)) super(x, y); >super : Symbol(Point, Decl(accessOverriddenBaseClassMember1.ts, 0, 0)) @@ -33,15 +33,15 @@ class ColoredPoint extends Point { >y : Symbol(y, Decl(accessOverriddenBaseClassMember1.ts, 7, 26)) } public toString() { ->toString : Symbol(toString, Decl(accessOverriddenBaseClassMember1.ts, 9, 5)) +>toString : Symbol(ColoredPoint.toString, Decl(accessOverriddenBaseClassMember1.ts, 9, 5)) return super.toString() + " color=" + this.color; >super.toString : Symbol(Point.toString, Decl(accessOverriddenBaseClassMember1.ts, 1, 55)) >super : Symbol(Point, Decl(accessOverriddenBaseClassMember1.ts, 0, 0)) >toString : Symbol(Point.toString, Decl(accessOverriddenBaseClassMember1.ts, 1, 55)) ->this.color : Symbol(color, Decl(accessOverriddenBaseClassMember1.ts, 7, 37)) +>this.color : Symbol(ColoredPoint.color, Decl(accessOverriddenBaseClassMember1.ts, 7, 37)) >this : Symbol(ColoredPoint, Decl(accessOverriddenBaseClassMember1.ts, 5, 1)) ->color : Symbol(color, Decl(accessOverriddenBaseClassMember1.ts, 7, 37)) +>color : Symbol(ColoredPoint.color, Decl(accessOverriddenBaseClassMember1.ts, 7, 37)) } } diff --git a/tests/baselines/reference/accessorWithES5.symbols b/tests/baselines/reference/accessorWithES5.symbols index dccbd8180bb..46e8d6f91da 100644 --- a/tests/baselines/reference/accessorWithES5.symbols +++ b/tests/baselines/reference/accessorWithES5.symbols @@ -4,7 +4,7 @@ class C { >C : Symbol(C, Decl(accessorWithES5.ts, 0, 0)) get x() { ->x : Symbol(x, Decl(accessorWithES5.ts, 1, 9)) +>x : Symbol(C.x, Decl(accessorWithES5.ts, 1, 9)) return 1; } @@ -14,7 +14,7 @@ class D { >D : Symbol(D, Decl(accessorWithES5.ts, 5, 1)) set x(v) { ->x : Symbol(x, Decl(accessorWithES5.ts, 7, 9)) +>x : Symbol(D.x, Decl(accessorWithES5.ts, 7, 9)) >v : Symbol(v, Decl(accessorWithES5.ts, 8, 10)) } } diff --git a/tests/baselines/reference/additionOperatorWithAnyAndEveryType.symbols b/tests/baselines/reference/additionOperatorWithAnyAndEveryType.symbols index bada6c561f1..f95a388c189 100644 --- a/tests/baselines/reference/additionOperatorWithAnyAndEveryType.symbols +++ b/tests/baselines/reference/additionOperatorWithAnyAndEveryType.symbols @@ -6,7 +6,7 @@ class C { >C : Symbol(C, Decl(additionOperatorWithAnyAndEveryType.ts, 0, 18)) public a: string; ->a : Symbol(a, Decl(additionOperatorWithAnyAndEveryType.ts, 1, 9)) +>a : Symbol(C.a, Decl(additionOperatorWithAnyAndEveryType.ts, 1, 9)) static foo() { } >foo : Symbol(C.foo, Decl(additionOperatorWithAnyAndEveryType.ts, 2, 21)) diff --git a/tests/baselines/reference/aliasUsageInAccessorsOfClass.symbols b/tests/baselines/reference/aliasUsageInAccessorsOfClass.symbols index 62a2396e2b2..45132ea2aa9 100644 --- a/tests/baselines/reference/aliasUsageInAccessorsOfClass.symbols +++ b/tests/baselines/reference/aliasUsageInAccessorsOfClass.symbols @@ -9,7 +9,7 @@ interface IHasVisualizationModel { >IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsage1_main.ts, 1, 50)) VisualizationModel: typeof Backbone.Model; ->VisualizationModel : Symbol(VisualizationModel, Decl(aliasUsage1_main.ts, 2, 34)) +>VisualizationModel : Symbol(IHasVisualizationModel.VisualizationModel, Decl(aliasUsage1_main.ts, 2, 34)) >Backbone.Model : Symbol(Backbone.Model, Decl(aliasUsage1_backbone.ts, 0, 0)) >Backbone : Symbol(Backbone, Decl(aliasUsage1_main.ts, 0, 0)) >Model : Symbol(Backbone.Model, Decl(aliasUsage1_backbone.ts, 0, 0)) @@ -18,19 +18,19 @@ class C2 { >C2 : Symbol(C2, Decl(aliasUsage1_main.ts, 4, 1)) x: IHasVisualizationModel; ->x : Symbol(x, Decl(aliasUsage1_main.ts, 5, 10)) +>x : Symbol(C2.x, Decl(aliasUsage1_main.ts, 5, 10)) >IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsage1_main.ts, 1, 50)) get A() { ->A : Symbol(A, Decl(aliasUsage1_main.ts, 6, 30), Decl(aliasUsage1_main.ts, 9, 5)) +>A : Symbol(C2.A, Decl(aliasUsage1_main.ts, 6, 30), Decl(aliasUsage1_main.ts, 9, 5)) return this.x; ->this.x : Symbol(x, Decl(aliasUsage1_main.ts, 5, 10)) +>this.x : Symbol(C2.x, Decl(aliasUsage1_main.ts, 5, 10)) >this : Symbol(C2, Decl(aliasUsage1_main.ts, 4, 1)) ->x : Symbol(x, Decl(aliasUsage1_main.ts, 5, 10)) +>x : Symbol(C2.x, Decl(aliasUsage1_main.ts, 5, 10)) } set A(x) { ->A : Symbol(A, Decl(aliasUsage1_main.ts, 6, 30), Decl(aliasUsage1_main.ts, 9, 5)) +>A : Symbol(C2.A, Decl(aliasUsage1_main.ts, 6, 30), Decl(aliasUsage1_main.ts, 9, 5)) >x : Symbol(x, Decl(aliasUsage1_main.ts, 10, 10)) x = moduleA; @@ -43,7 +43,7 @@ export class Model { >Model : Symbol(Model, Decl(aliasUsage1_backbone.ts, 0, 0)) public someData: string; ->someData : Symbol(someData, Decl(aliasUsage1_backbone.ts, 0, 20)) +>someData : Symbol(Model.someData, Decl(aliasUsage1_backbone.ts, 0, 20)) } === tests/cases/compiler/aliasUsage1_moduleA.ts === diff --git a/tests/baselines/reference/aliasUsageInArray.symbols b/tests/baselines/reference/aliasUsageInArray.symbols index 9bca1bc8864..367cd05545a 100644 --- a/tests/baselines/reference/aliasUsageInArray.symbols +++ b/tests/baselines/reference/aliasUsageInArray.symbols @@ -9,7 +9,7 @@ interface IHasVisualizationModel { >IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInArray_main.ts, 1, 56)) VisualizationModel: typeof Backbone.Model; ->VisualizationModel : Symbol(VisualizationModel, Decl(aliasUsageInArray_main.ts, 2, 34)) +>VisualizationModel : Symbol(IHasVisualizationModel.VisualizationModel, Decl(aliasUsageInArray_main.ts, 2, 34)) >Backbone.Model : Symbol(Backbone.Model, Decl(aliasUsageInArray_backbone.ts, 0, 0)) >Backbone : Symbol(Backbone, Decl(aliasUsageInArray_main.ts, 0, 0)) >Model : Symbol(Backbone.Model, Decl(aliasUsageInArray_backbone.ts, 0, 0)) @@ -30,7 +30,7 @@ export class Model { >Model : Symbol(Model, Decl(aliasUsageInArray_backbone.ts, 0, 0)) public someData: string; ->someData : Symbol(someData, Decl(aliasUsageInArray_backbone.ts, 0, 20)) +>someData : Symbol(Model.someData, Decl(aliasUsageInArray_backbone.ts, 0, 20)) } === tests/cases/compiler/aliasUsageInArray_moduleA.ts === diff --git a/tests/baselines/reference/aliasUsageInFunctionExpression.symbols b/tests/baselines/reference/aliasUsageInFunctionExpression.symbols index bd791d4d38f..a7a1f5d4593 100644 --- a/tests/baselines/reference/aliasUsageInFunctionExpression.symbols +++ b/tests/baselines/reference/aliasUsageInFunctionExpression.symbols @@ -9,7 +9,7 @@ interface IHasVisualizationModel { >IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInFunctionExpression_main.ts, 1, 69)) VisualizationModel: typeof Backbone.Model; ->VisualizationModel : Symbol(VisualizationModel, Decl(aliasUsageInFunctionExpression_main.ts, 2, 34)) +>VisualizationModel : Symbol(IHasVisualizationModel.VisualizationModel, Decl(aliasUsageInFunctionExpression_main.ts, 2, 34)) >Backbone.Model : Symbol(Backbone.Model, Decl(aliasUsageInFunctionExpression_backbone.ts, 0, 0)) >Backbone : Symbol(Backbone, Decl(aliasUsageInFunctionExpression_main.ts, 0, 0)) >Model : Symbol(Backbone.Model, Decl(aliasUsageInFunctionExpression_backbone.ts, 0, 0)) @@ -30,7 +30,7 @@ export class Model { >Model : Symbol(Model, Decl(aliasUsageInFunctionExpression_backbone.ts, 0, 0)) public someData: string; ->someData : Symbol(someData, Decl(aliasUsageInFunctionExpression_backbone.ts, 0, 20)) +>someData : Symbol(Model.someData, Decl(aliasUsageInFunctionExpression_backbone.ts, 0, 20)) } === tests/cases/compiler/aliasUsageInFunctionExpression_moduleA.ts === diff --git a/tests/baselines/reference/aliasUsageInGenericFunction.symbols b/tests/baselines/reference/aliasUsageInGenericFunction.symbols index fccf60c3514..e44059e6907 100644 --- a/tests/baselines/reference/aliasUsageInGenericFunction.symbols +++ b/tests/baselines/reference/aliasUsageInGenericFunction.symbols @@ -9,7 +9,7 @@ interface IHasVisualizationModel { >IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInGenericFunction_main.ts, 1, 66)) VisualizationModel: typeof Backbone.Model; ->VisualizationModel : Symbol(VisualizationModel, Decl(aliasUsageInGenericFunction_main.ts, 2, 34)) +>VisualizationModel : Symbol(IHasVisualizationModel.VisualizationModel, Decl(aliasUsageInGenericFunction_main.ts, 2, 34)) >Backbone.Model : Symbol(Backbone.Model, Decl(aliasUsageInGenericFunction_backbone.ts, 0, 0)) >Backbone : Symbol(Backbone, Decl(aliasUsageInGenericFunction_main.ts, 0, 0)) >Model : Symbol(Backbone.Model, Decl(aliasUsageInGenericFunction_backbone.ts, 0, 0)) @@ -42,7 +42,7 @@ export class Model { >Model : Symbol(Model, Decl(aliasUsageInGenericFunction_backbone.ts, 0, 0)) public someData: string; ->someData : Symbol(someData, Decl(aliasUsageInGenericFunction_backbone.ts, 0, 20)) +>someData : Symbol(Model.someData, Decl(aliasUsageInGenericFunction_backbone.ts, 0, 20)) } === tests/cases/compiler/aliasUsageInGenericFunction_moduleA.ts === diff --git a/tests/baselines/reference/aliasUsageInIndexerOfClass.symbols b/tests/baselines/reference/aliasUsageInIndexerOfClass.symbols index 37529d2ead2..3e13b71ea4f 100644 --- a/tests/baselines/reference/aliasUsageInIndexerOfClass.symbols +++ b/tests/baselines/reference/aliasUsageInIndexerOfClass.symbols @@ -9,7 +9,7 @@ interface IHasVisualizationModel { >IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInIndexerOfClass_main.ts, 1, 65)) VisualizationModel: typeof Backbone.Model; ->VisualizationModel : Symbol(VisualizationModel, Decl(aliasUsageInIndexerOfClass_main.ts, 2, 34)) +>VisualizationModel : Symbol(IHasVisualizationModel.VisualizationModel, Decl(aliasUsageInIndexerOfClass_main.ts, 2, 34)) >Backbone.Model : Symbol(Backbone.Model, Decl(aliasUsageInIndexerOfClass_backbone.ts, 0, 0)) >Backbone : Symbol(Backbone, Decl(aliasUsageInIndexerOfClass_main.ts, 0, 0)) >Model : Symbol(Backbone.Model, Decl(aliasUsageInIndexerOfClass_backbone.ts, 0, 0)) @@ -22,7 +22,7 @@ class N { >IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInIndexerOfClass_main.ts, 1, 65)) x = moduleA; ->x : Symbol(x, Decl(aliasUsageInIndexerOfClass_main.ts, 6, 41)) +>x : Symbol(N.x, Decl(aliasUsageInIndexerOfClass_main.ts, 6, 41)) >moduleA : Symbol(moduleA, Decl(aliasUsageInIndexerOfClass_main.ts, 0, 67)) } class N2 { @@ -33,7 +33,7 @@ class N2 { >moduleA : Symbol(moduleA, Decl(aliasUsageInIndexerOfClass_main.ts, 0, 67)) x: IHasVisualizationModel; ->x : Symbol(x, Decl(aliasUsageInIndexerOfClass_main.ts, 10, 33)) +>x : Symbol(N2.x, Decl(aliasUsageInIndexerOfClass_main.ts, 10, 33)) >IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInIndexerOfClass_main.ts, 1, 65)) } === tests/cases/compiler/aliasUsageInIndexerOfClass_backbone.ts === @@ -41,7 +41,7 @@ export class Model { >Model : Symbol(Model, Decl(aliasUsageInIndexerOfClass_backbone.ts, 0, 0)) public someData: string; ->someData : Symbol(someData, Decl(aliasUsageInIndexerOfClass_backbone.ts, 0, 20)) +>someData : Symbol(Model.someData, Decl(aliasUsageInIndexerOfClass_backbone.ts, 0, 20)) } === tests/cases/compiler/aliasUsageInIndexerOfClass_moduleA.ts === diff --git a/tests/baselines/reference/aliasUsageInObjectLiteral.symbols b/tests/baselines/reference/aliasUsageInObjectLiteral.symbols index ef94a9037ad..161617e0003 100644 --- a/tests/baselines/reference/aliasUsageInObjectLiteral.symbols +++ b/tests/baselines/reference/aliasUsageInObjectLiteral.symbols @@ -9,7 +9,7 @@ interface IHasVisualizationModel { >IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInObjectLiteral_main.ts, 1, 64)) VisualizationModel: typeof Backbone.Model; ->VisualizationModel : Symbol(VisualizationModel, Decl(aliasUsageInObjectLiteral_main.ts, 2, 34)) +>VisualizationModel : Symbol(IHasVisualizationModel.VisualizationModel, Decl(aliasUsageInObjectLiteral_main.ts, 2, 34)) >Backbone.Model : Symbol(Backbone.Model, Decl(aliasUsageInObjectLiteral_backbone.ts, 0, 0)) >Backbone : Symbol(Backbone, Decl(aliasUsageInObjectLiteral_main.ts, 0, 0)) >Model : Symbol(Backbone.Model, Decl(aliasUsageInObjectLiteral_backbone.ts, 0, 0)) @@ -42,7 +42,7 @@ export class Model { >Model : Symbol(Model, Decl(aliasUsageInObjectLiteral_backbone.ts, 0, 0)) public someData: string; ->someData : Symbol(someData, Decl(aliasUsageInObjectLiteral_backbone.ts, 0, 20)) +>someData : Symbol(Model.someData, Decl(aliasUsageInObjectLiteral_backbone.ts, 0, 20)) } === tests/cases/compiler/aliasUsageInObjectLiteral_moduleA.ts === diff --git a/tests/baselines/reference/aliasUsageInOrExpression.symbols b/tests/baselines/reference/aliasUsageInOrExpression.symbols index 3d9331b1fa9..2d9f55ec274 100644 --- a/tests/baselines/reference/aliasUsageInOrExpression.symbols +++ b/tests/baselines/reference/aliasUsageInOrExpression.symbols @@ -9,7 +9,7 @@ interface IHasVisualizationModel { >IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInOrExpression_main.ts, 1, 63)) VisualizationModel: typeof Backbone.Model; ->VisualizationModel : Symbol(VisualizationModel, Decl(aliasUsageInOrExpression_main.ts, 2, 34)) +>VisualizationModel : Symbol(IHasVisualizationModel.VisualizationModel, Decl(aliasUsageInOrExpression_main.ts, 2, 34)) >Backbone.Model : Symbol(Backbone.Model, Decl(aliasUsageInOrExpression_backbone.ts, 0, 0)) >Backbone : Symbol(Backbone, Decl(aliasUsageInOrExpression_main.ts, 0, 0)) >Model : Symbol(Backbone.Model, Decl(aliasUsageInOrExpression_backbone.ts, 0, 0)) @@ -58,7 +58,7 @@ export class Model { >Model : Symbol(Model, Decl(aliasUsageInOrExpression_backbone.ts, 0, 0)) public someData: string; ->someData : Symbol(someData, Decl(aliasUsageInOrExpression_backbone.ts, 0, 20)) +>someData : Symbol(Model.someData, Decl(aliasUsageInOrExpression_backbone.ts, 0, 20)) } === tests/cases/compiler/aliasUsageInOrExpression_moduleA.ts === diff --git a/tests/baselines/reference/aliasUsageInTypeArgumentOfExtendsClause.symbols b/tests/baselines/reference/aliasUsageInTypeArgumentOfExtendsClause.symbols index 6fc639da2c1..77dbb058371 100644 --- a/tests/baselines/reference/aliasUsageInTypeArgumentOfExtendsClause.symbols +++ b/tests/baselines/reference/aliasUsageInTypeArgumentOfExtendsClause.symbols @@ -9,7 +9,7 @@ interface IHasVisualizationModel { >IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInTypeArgumentOfExtendsClause_main.ts, 1, 78)) VisualizationModel: typeof Backbone.Model; ->VisualizationModel : Symbol(VisualizationModel, Decl(aliasUsageInTypeArgumentOfExtendsClause_main.ts, 2, 34)) +>VisualizationModel : Symbol(IHasVisualizationModel.VisualizationModel, Decl(aliasUsageInTypeArgumentOfExtendsClause_main.ts, 2, 34)) >Backbone.Model : Symbol(Backbone.Model, Decl(aliasUsageInTypeArgumentOfExtendsClause_backbone.ts, 0, 0)) >Backbone : Symbol(Backbone, Decl(aliasUsageInTypeArgumentOfExtendsClause_main.ts, 0, 0)) >Model : Symbol(Backbone.Model, Decl(aliasUsageInTypeArgumentOfExtendsClause_backbone.ts, 0, 0)) @@ -20,7 +20,7 @@ class C { >IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInTypeArgumentOfExtendsClause_main.ts, 1, 78)) x: T; ->x : Symbol(x, Decl(aliasUsageInTypeArgumentOfExtendsClause_main.ts, 5, 43)) +>x : Symbol(C.x, Decl(aliasUsageInTypeArgumentOfExtendsClause_main.ts, 5, 43)) >T : Symbol(T, Decl(aliasUsageInTypeArgumentOfExtendsClause_main.ts, 5, 8)) } class D extends C { @@ -29,7 +29,7 @@ class D extends C { >IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInTypeArgumentOfExtendsClause_main.ts, 1, 78)) x = moduleA; ->x : Symbol(x, Decl(aliasUsageInTypeArgumentOfExtendsClause_main.ts, 8, 43)) +>x : Symbol(D.x, Decl(aliasUsageInTypeArgumentOfExtendsClause_main.ts, 8, 43)) >moduleA : Symbol(moduleA, Decl(aliasUsageInTypeArgumentOfExtendsClause_main.ts, 0, 80)) } === tests/cases/compiler/aliasUsageInTypeArgumentOfExtendsClause_backbone.ts === @@ -37,7 +37,7 @@ export class Model { >Model : Symbol(Model, Decl(aliasUsageInTypeArgumentOfExtendsClause_backbone.ts, 0, 0)) public someData: string; ->someData : Symbol(someData, Decl(aliasUsageInTypeArgumentOfExtendsClause_backbone.ts, 0, 20)) +>someData : Symbol(Model.someData, Decl(aliasUsageInTypeArgumentOfExtendsClause_backbone.ts, 0, 20)) } === tests/cases/compiler/aliasUsageInTypeArgumentOfExtendsClause_moduleA.ts === diff --git a/tests/baselines/reference/aliasUsageInVarAssignment.symbols b/tests/baselines/reference/aliasUsageInVarAssignment.symbols index d0e7f6b7d05..671cbfc3082 100644 --- a/tests/baselines/reference/aliasUsageInVarAssignment.symbols +++ b/tests/baselines/reference/aliasUsageInVarAssignment.symbols @@ -9,7 +9,7 @@ interface IHasVisualizationModel { >IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(aliasUsageInVarAssignment_main.ts, 1, 64)) VisualizationModel: typeof Backbone.Model; ->VisualizationModel : Symbol(VisualizationModel, Decl(aliasUsageInVarAssignment_main.ts, 2, 34)) +>VisualizationModel : Symbol(IHasVisualizationModel.VisualizationModel, Decl(aliasUsageInVarAssignment_main.ts, 2, 34)) >Backbone.Model : Symbol(Backbone.Model, Decl(aliasUsageInVarAssignment_backbone.ts, 0, 0)) >Backbone : Symbol(Backbone, Decl(aliasUsageInVarAssignment_main.ts, 0, 0)) >Model : Symbol(Backbone.Model, Decl(aliasUsageInVarAssignment_backbone.ts, 0, 0)) @@ -28,7 +28,7 @@ export class Model { >Model : Symbol(Model, Decl(aliasUsageInVarAssignment_backbone.ts, 0, 0)) public someData: string; ->someData : Symbol(someData, Decl(aliasUsageInVarAssignment_backbone.ts, 0, 20)) +>someData : Symbol(Model.someData, Decl(aliasUsageInVarAssignment_backbone.ts, 0, 20)) } === tests/cases/compiler/aliasUsageInVarAssignment_moduleA.ts === diff --git a/tests/baselines/reference/allowSyntheticDefaultImports1.symbols b/tests/baselines/reference/allowSyntheticDefaultImports1.symbols index d88a79e1bf2..ecbe9e4c205 100644 --- a/tests/baselines/reference/allowSyntheticDefaultImports1.symbols +++ b/tests/baselines/reference/allowSyntheticDefaultImports1.symbols @@ -13,6 +13,6 @@ export class Foo { >Foo : Symbol(Foo, Decl(b.ts, 0, 0)) member: string; ->member : Symbol(member, Decl(b.ts, 0, 18)) +>member : Symbol(Foo.member, Decl(b.ts, 0, 18)) } diff --git a/tests/baselines/reference/allowSyntheticDefaultImports2.symbols b/tests/baselines/reference/allowSyntheticDefaultImports2.symbols index cea6145fbd6..615b1095c66 100644 --- a/tests/baselines/reference/allowSyntheticDefaultImports2.symbols +++ b/tests/baselines/reference/allowSyntheticDefaultImports2.symbols @@ -13,5 +13,5 @@ export class Foo { >Foo : Symbol(Foo, Decl(b.ts, 0, 0)) member: string; ->member : Symbol(member, Decl(b.ts, 0, 18)) +>member : Symbol(Foo.member, Decl(b.ts, 0, 18)) } diff --git a/tests/baselines/reference/allowSyntheticDefaultImports4.symbols b/tests/baselines/reference/allowSyntheticDefaultImports4.symbols index 8edad006c2d..22887d48bd9 100644 --- a/tests/baselines/reference/allowSyntheticDefaultImports4.symbols +++ b/tests/baselines/reference/allowSyntheticDefaultImports4.symbols @@ -3,7 +3,7 @@ declare class Foo { >Foo : Symbol(Foo, Decl(b.d.ts, 0, 0)) member: string; ->member : Symbol(member, Decl(b.d.ts, 0, 19)) +>member : Symbol(Foo.member, Decl(b.d.ts, 0, 19)) } export = Foo; >Foo : Symbol(Foo, Decl(b.d.ts, 0, 0)) diff --git a/tests/baselines/reference/allowSyntheticDefaultImports5.symbols b/tests/baselines/reference/allowSyntheticDefaultImports5.symbols index 8edad006c2d..22887d48bd9 100644 --- a/tests/baselines/reference/allowSyntheticDefaultImports5.symbols +++ b/tests/baselines/reference/allowSyntheticDefaultImports5.symbols @@ -3,7 +3,7 @@ declare class Foo { >Foo : Symbol(Foo, Decl(b.d.ts, 0, 0)) member: string; ->member : Symbol(member, Decl(b.d.ts, 0, 19)) +>member : Symbol(Foo.member, Decl(b.d.ts, 0, 19)) } export = Foo; >Foo : Symbol(Foo, Decl(b.d.ts, 0, 0)) diff --git a/tests/baselines/reference/ambientClassDeclarationWithExtends.symbols b/tests/baselines/reference/ambientClassDeclarationWithExtends.symbols index 023ae6bf582..125bd0d0e5f 100644 --- a/tests/baselines/reference/ambientClassDeclarationWithExtends.symbols +++ b/tests/baselines/reference/ambientClassDeclarationWithExtends.symbols @@ -10,7 +10,7 @@ declare class C { >C : Symbol(C, Decl(ambientClassDeclarationExtends_singleFile.ts, 1, 29)) public foo; ->foo : Symbol(foo, Decl(ambientClassDeclarationExtends_singleFile.ts, 3, 17)) +>foo : Symbol(C.foo, Decl(ambientClassDeclarationExtends_singleFile.ts, 3, 17)) } namespace D { var x; } >D : Symbol(D, Decl(ambientClassDeclarationExtends_singleFile.ts, 5, 1), Decl(ambientClassDeclarationExtends_singleFile.ts, 6, 22)) @@ -31,7 +31,7 @@ declare class E { >E : Symbol(E, Decl(ambientClassDeclarationExtends_file1.ts, 0, 0)) public bar; ->bar : Symbol(bar, Decl(ambientClassDeclarationExtends_file1.ts, 1, 17)) +>bar : Symbol(E.bar, Decl(ambientClassDeclarationExtends_file1.ts, 1, 17)) } namespace F { var y; } >F : Symbol(F, Decl(ambientClassDeclarationExtends_file1.ts, 3, 1), Decl(ambientClassDeclarationExtends_file2.ts, 0, 0)) diff --git a/tests/baselines/reference/ambientClassMergesOverloadsWithInterface.symbols b/tests/baselines/reference/ambientClassMergesOverloadsWithInterface.symbols index 9a5eb13d21d..224edf38cee 100644 --- a/tests/baselines/reference/ambientClassMergesOverloadsWithInterface.symbols +++ b/tests/baselines/reference/ambientClassMergesOverloadsWithInterface.symbols @@ -3,20 +3,20 @@ declare class C { >C : Symbol(C, Decl(ambientClassMergesOverloadsWithInterface.ts, 0, 0), Decl(ambientClassMergesOverloadsWithInterface.ts, 3, 1)) baz(): any; ->baz : Symbol(baz, Decl(ambientClassMergesOverloadsWithInterface.ts, 0, 17)) +>baz : Symbol(C.baz, Decl(ambientClassMergesOverloadsWithInterface.ts, 0, 17)) foo(n: number): any; ->foo : Symbol(foo, Decl(ambientClassMergesOverloadsWithInterface.ts, 1, 15), Decl(ambientClassMergesOverloadsWithInterface.ts, 4, 13)) +>foo : Symbol(C.foo, Decl(ambientClassMergesOverloadsWithInterface.ts, 1, 15), Decl(ambientClassMergesOverloadsWithInterface.ts, 4, 13)) >n : Symbol(n, Decl(ambientClassMergesOverloadsWithInterface.ts, 2, 8)) } interface C { >C : Symbol(C, Decl(ambientClassMergesOverloadsWithInterface.ts, 0, 0), Decl(ambientClassMergesOverloadsWithInterface.ts, 3, 1)) foo(n: number): any; ->foo : Symbol(foo, Decl(ambientClassMergesOverloadsWithInterface.ts, 1, 15), Decl(ambientClassMergesOverloadsWithInterface.ts, 4, 13)) +>foo : Symbol(C.foo, Decl(ambientClassMergesOverloadsWithInterface.ts, 1, 15), Decl(ambientClassMergesOverloadsWithInterface.ts, 4, 13)) >n : Symbol(n, Decl(ambientClassMergesOverloadsWithInterface.ts, 5, 8)) bar(): any; ->bar : Symbol(bar, Decl(ambientClassMergesOverloadsWithInterface.ts, 5, 24)) +>bar : Symbol(C.bar, Decl(ambientClassMergesOverloadsWithInterface.ts, 5, 24)) } diff --git a/tests/baselines/reference/ambientDeclarations.symbols b/tests/baselines/reference/ambientDeclarations.symbols index e5b85ae7c2c..ef5c5403ccf 100644 --- a/tests/baselines/reference/ambientDeclarations.symbols +++ b/tests/baselines/reference/ambientDeclarations.symbols @@ -63,7 +63,7 @@ declare class cls { constructor(); method(): cls; ->method : Symbol(method, Decl(ambientDeclarations.ts, 26, 18)) +>method : Symbol(cls.method, Decl(ambientDeclarations.ts, 26, 18)) >cls : Symbol(cls, Decl(ambientDeclarations.ts, 22, 36)) static static(p): number; @@ -74,7 +74,7 @@ declare class cls { >q : Symbol(cls.q, Decl(ambientDeclarations.ts, 28, 29)) private fn(); ->fn : Symbol(fn, Decl(ambientDeclarations.ts, 29, 13)) +>fn : Symbol(cls.fn, Decl(ambientDeclarations.ts, 29, 13)) private static fns(); >fns : Symbol(cls.fns, Decl(ambientDeclarations.ts, 30, 17)) diff --git a/tests/baselines/reference/ambientExternalModuleWithInternalImportDeclaration.symbols b/tests/baselines/reference/ambientExternalModuleWithInternalImportDeclaration.symbols index 3af41f90957..d7e3b5925b1 100644 --- a/tests/baselines/reference/ambientExternalModuleWithInternalImportDeclaration.symbols +++ b/tests/baselines/reference/ambientExternalModuleWithInternalImportDeclaration.symbols @@ -19,7 +19,7 @@ declare module 'M' { >C : Symbol(C, Decl(ambientExternalModuleWithInternalImportDeclaration_0.ts, 0, 20), Decl(ambientExternalModuleWithInternalImportDeclaration_0.ts, 3, 5)) foo(): void; ->foo : Symbol(foo, Decl(ambientExternalModuleWithInternalImportDeclaration_0.ts, 4, 13)) +>foo : Symbol(C.foo, Decl(ambientExternalModuleWithInternalImportDeclaration_0.ts, 4, 13)) } import X = C; >X : Symbol(X, Decl(ambientExternalModuleWithInternalImportDeclaration_0.ts, 6, 5)) diff --git a/tests/baselines/reference/ambientExternalModuleWithoutInternalImportDeclaration.symbols b/tests/baselines/reference/ambientExternalModuleWithoutInternalImportDeclaration.symbols index baf15f22a4a..15ddf4ac488 100644 --- a/tests/baselines/reference/ambientExternalModuleWithoutInternalImportDeclaration.symbols +++ b/tests/baselines/reference/ambientExternalModuleWithoutInternalImportDeclaration.symbols @@ -19,7 +19,7 @@ declare module 'M' { >C : Symbol(C, Decl(ambientExternalModuleWithoutInternalImportDeclaration_0.ts, 0, 20), Decl(ambientExternalModuleWithoutInternalImportDeclaration_0.ts, 3, 5)) foo(): void; ->foo : Symbol(foo, Decl(ambientExternalModuleWithoutInternalImportDeclaration_0.ts, 4, 13)) +>foo : Symbol(C.foo, Decl(ambientExternalModuleWithoutInternalImportDeclaration_0.ts, 4, 13)) } export = C; >C : Symbol(C, Decl(ambientExternalModuleWithoutInternalImportDeclaration_0.ts, 0, 20), Decl(ambientExternalModuleWithoutInternalImportDeclaration_0.ts, 3, 5)) diff --git a/tests/baselines/reference/ambientNameRestrictions.js b/tests/baselines/reference/ambientNameRestrictions.js new file mode 100644 index 00000000000..cd4fbf29371 --- /dev/null +++ b/tests/baselines/reference/ambientNameRestrictions.js @@ -0,0 +1,8 @@ +//// [ambientNameRestrictions.ts] +export declare namespace Foo { + export var static: any; +} + + +//// [ambientNameRestrictions.js] +"use strict"; diff --git a/tests/baselines/reference/ambientNameRestrictions.symbols b/tests/baselines/reference/ambientNameRestrictions.symbols new file mode 100644 index 00000000000..d5b3fafaa57 --- /dev/null +++ b/tests/baselines/reference/ambientNameRestrictions.symbols @@ -0,0 +1,8 @@ +=== tests/cases/compiler/ambientNameRestrictions.ts === +export declare namespace Foo { +>Foo : Symbol(Foo, Decl(ambientNameRestrictions.ts, 0, 0)) + + export var static: any; +>static : Symbol(static, Decl(ambientNameRestrictions.ts, 1, 12)) +} + diff --git a/tests/baselines/reference/ambientNameRestrictions.types b/tests/baselines/reference/ambientNameRestrictions.types new file mode 100644 index 00000000000..705319392d8 --- /dev/null +++ b/tests/baselines/reference/ambientNameRestrictions.types @@ -0,0 +1,8 @@ +=== tests/cases/compiler/ambientNameRestrictions.ts === +export declare namespace Foo { +>Foo : typeof Foo + + export var static: any; +>static : any +} + diff --git a/tests/baselines/reference/ambiguousCallsWhereReturnTypesAgree.symbols b/tests/baselines/reference/ambiguousCallsWhereReturnTypesAgree.symbols index 5d6c34f4d68..9dcf5c515e2 100644 --- a/tests/baselines/reference/ambiguousCallsWhereReturnTypesAgree.symbols +++ b/tests/baselines/reference/ambiguousCallsWhereReturnTypesAgree.symbols @@ -3,35 +3,35 @@ class TestClass { >TestClass : Symbol(TestClass, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 0, 0)) public bar(x: string): void; ->bar : Symbol(bar, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 0, 17), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 1, 32), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 2, 34)) +>bar : Symbol(TestClass.bar, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 0, 17), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 1, 32), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 2, 34)) >x : Symbol(x, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 1, 15)) public bar(x: string[]): void; ->bar : Symbol(bar, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 0, 17), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 1, 32), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 2, 34)) +>bar : Symbol(TestClass.bar, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 0, 17), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 1, 32), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 2, 34)) >x : Symbol(x, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 2, 15)) public bar(x: any): void { ->bar : Symbol(bar, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 0, 17), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 1, 32), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 2, 34)) +>bar : Symbol(TestClass.bar, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 0, 17), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 1, 32), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 2, 34)) >x : Symbol(x, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 3, 15)) } public foo(x: string): void; ->foo : Symbol(foo, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 5, 5), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 7, 32), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 8, 34)) +>foo : Symbol(TestClass.foo, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 5, 5), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 7, 32), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 8, 34)) >x : Symbol(x, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 7, 15)) public foo(x: string[]): void; ->foo : Symbol(foo, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 5, 5), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 7, 32), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 8, 34)) +>foo : Symbol(TestClass.foo, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 5, 5), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 7, 32), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 8, 34)) >x : Symbol(x, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 8, 15)) public foo(x: any): void { ->foo : Symbol(foo, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 5, 5), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 7, 32), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 8, 34)) +>foo : Symbol(TestClass.foo, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 5, 5), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 7, 32), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 8, 34)) >x : Symbol(x, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 9, 15)) this.bar(x); // should not error ->this.bar : Symbol(bar, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 0, 17), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 1, 32), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 2, 34)) +>this.bar : Symbol(TestClass.bar, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 0, 17), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 1, 32), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 2, 34)) >this : Symbol(TestClass, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 0, 0)) ->bar : Symbol(bar, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 0, 17), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 1, 32), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 2, 34)) +>bar : Symbol(TestClass.bar, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 0, 17), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 1, 32), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 2, 34)) >x : Symbol(x, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 9, 15)) } } @@ -40,36 +40,36 @@ class TestClass2 { >TestClass2 : Symbol(TestClass2, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 12, 1)) public bar(x: string): number; ->bar : Symbol(bar, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 14, 18), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 15, 34), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 16, 36)) +>bar : Symbol(TestClass2.bar, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 14, 18), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 15, 34), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 16, 36)) >x : Symbol(x, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 15, 15)) public bar(x: string[]): number; ->bar : Symbol(bar, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 14, 18), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 15, 34), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 16, 36)) +>bar : Symbol(TestClass2.bar, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 14, 18), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 15, 34), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 16, 36)) >x : Symbol(x, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 16, 15)) public bar(x: any): number { ->bar : Symbol(bar, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 14, 18), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 15, 34), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 16, 36)) +>bar : Symbol(TestClass2.bar, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 14, 18), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 15, 34), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 16, 36)) >x : Symbol(x, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 17, 15)) return 0; } public foo(x: string): number; ->foo : Symbol(foo, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 19, 5), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 21, 34), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 22, 36)) +>foo : Symbol(TestClass2.foo, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 19, 5), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 21, 34), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 22, 36)) >x : Symbol(x, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 21, 15)) public foo(x: string[]): number; ->foo : Symbol(foo, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 19, 5), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 21, 34), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 22, 36)) +>foo : Symbol(TestClass2.foo, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 19, 5), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 21, 34), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 22, 36)) >x : Symbol(x, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 22, 15)) public foo(x: any): number { ->foo : Symbol(foo, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 19, 5), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 21, 34), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 22, 36)) +>foo : Symbol(TestClass2.foo, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 19, 5), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 21, 34), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 22, 36)) >x : Symbol(x, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 23, 15)) return this.bar(x); // should not error ->this.bar : Symbol(bar, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 14, 18), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 15, 34), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 16, 36)) +>this.bar : Symbol(TestClass2.bar, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 14, 18), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 15, 34), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 16, 36)) >this : Symbol(TestClass2, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 12, 1)) ->bar : Symbol(bar, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 14, 18), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 15, 34), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 16, 36)) +>bar : Symbol(TestClass2.bar, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 14, 18), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 15, 34), Decl(ambiguousCallsWhereReturnTypesAgree.ts, 16, 36)) >x : Symbol(x, Decl(ambiguousCallsWhereReturnTypesAgree.ts, 23, 15)) } } diff --git a/tests/baselines/reference/ambiguousOverloadResolution.symbols b/tests/baselines/reference/ambiguousOverloadResolution.symbols index 1d848d707de..46711a1d142 100644 --- a/tests/baselines/reference/ambiguousOverloadResolution.symbols +++ b/tests/baselines/reference/ambiguousOverloadResolution.symbols @@ -5,7 +5,7 @@ class A { } class B extends A { x: number; } >B : Symbol(B, Decl(ambiguousOverloadResolution.ts, 0, 11)) >A : Symbol(A, Decl(ambiguousOverloadResolution.ts, 0, 0)) ->x : Symbol(x, Decl(ambiguousOverloadResolution.ts, 1, 19)) +>x : Symbol(B.x, Decl(ambiguousOverloadResolution.ts, 1, 19)) declare function f(p: A, q: B): number; >f : Symbol(f, Decl(ambiguousOverloadResolution.ts, 1, 32), Decl(ambiguousOverloadResolution.ts, 3, 39)) diff --git a/tests/baselines/reference/amdImportNotAsPrimaryExpression.symbols b/tests/baselines/reference/amdImportNotAsPrimaryExpression.symbols index 68a852c6165..ae67c0a3175 100644 --- a/tests/baselines/reference/amdImportNotAsPrimaryExpression.symbols +++ b/tests/baselines/reference/amdImportNotAsPrimaryExpression.symbols @@ -43,7 +43,7 @@ export class C1 { >C1 : Symbol(C1, Decl(foo_0.ts, 0, 0)) m1 = 42; ->m1 : Symbol(m1, Decl(foo_0.ts, 0, 17)) +>m1 : Symbol(C1.m1, Decl(foo_0.ts, 0, 17)) static s1 = true; >s1 : Symbol(C1.s1, Decl(foo_0.ts, 1, 9)) @@ -53,10 +53,10 @@ export interface I1 { >I1 : Symbol(I1, Decl(foo_0.ts, 3, 1)) name: string; ->name : Symbol(name, Decl(foo_0.ts, 5, 21)) +>name : Symbol(I1.name, Decl(foo_0.ts, 5, 21)) age: number; ->age : Symbol(age, Decl(foo_0.ts, 6, 14)) +>age : Symbol(I1.age, Decl(foo_0.ts, 6, 14)) } export module M1 { @@ -66,7 +66,7 @@ export module M1 { >I2 : Symbol(I2, Decl(foo_0.ts, 10, 18)) foo: string; ->foo : Symbol(foo, Decl(foo_0.ts, 11, 22)) +>foo : Symbol(I2.foo, Decl(foo_0.ts, 11, 22)) } } diff --git a/tests/baselines/reference/amdModuleName1.symbols b/tests/baselines/reference/amdModuleName1.symbols index 04f471dc2ad..d6e44acf93a 100644 --- a/tests/baselines/reference/amdModuleName1.symbols +++ b/tests/baselines/reference/amdModuleName1.symbols @@ -4,13 +4,13 @@ class Foo { >Foo : Symbol(Foo, Decl(amdModuleName1.ts, 0, 0)) x: number; ->x : Symbol(x, Decl(amdModuleName1.ts, 1, 11)) +>x : Symbol(Foo.x, Decl(amdModuleName1.ts, 1, 11)) constructor() { this.x = 5; ->this.x : Symbol(x, Decl(amdModuleName1.ts, 1, 11)) +>this.x : Symbol(Foo.x, Decl(amdModuleName1.ts, 1, 11)) >this : Symbol(Foo, Decl(amdModuleName1.ts, 0, 0)) ->x : Symbol(x, Decl(amdModuleName1.ts, 1, 11)) +>x : Symbol(Foo.x, Decl(amdModuleName1.ts, 1, 11)) } } export = Foo; diff --git a/tests/baselines/reference/anonterface.symbols b/tests/baselines/reference/anonterface.symbols index fccd48043cf..56d6b6a09b8 100644 --- a/tests/baselines/reference/anonterface.symbols +++ b/tests/baselines/reference/anonterface.symbols @@ -6,7 +6,7 @@ module M { >C : Symbol(C, Decl(anonterface.ts, 0, 10)) m(fn:{ (n:number):string; },n2:number):string { ->m : Symbol(m, Decl(anonterface.ts, 1, 20)) +>m : Symbol(C.m, Decl(anonterface.ts, 1, 20)) >fn : Symbol(fn, Decl(anonterface.ts, 2, 10)) >n : Symbol(n, Decl(anonterface.ts, 2, 16)) >n2 : Symbol(n2, Decl(anonterface.ts, 2, 36)) diff --git a/tests/baselines/reference/anonymousDefaultExportsSystem.js b/tests/baselines/reference/anonymousDefaultExportsSystem.js index f9ff71dec06..f68806eb1af 100644 --- a/tests/baselines/reference/anonymousDefaultExportsSystem.js +++ b/tests/baselines/reference/anonymousDefaultExportsSystem.js @@ -14,8 +14,8 @@ System.register([], function(exports_1, context_1) { return { setters:[], execute: function() { - class default_1 { - } + default_1 = class { + }; exports_1("default", default_1); } } diff --git a/tests/baselines/reference/anyAssignabilityInInheritance.symbols b/tests/baselines/reference/anyAssignabilityInInheritance.symbols index 50148d7df99..d1043256962 100644 --- a/tests/baselines/reference/anyAssignabilityInInheritance.symbols +++ b/tests/baselines/reference/anyAssignabilityInInheritance.symbols @@ -8,7 +8,7 @@ interface I { >x : Symbol(x, Decl(anyAssignabilityInInheritance.ts, 3, 5)) foo: any; // ok, any identical to itself ->foo : Symbol(foo, Decl(anyAssignabilityInInheritance.ts, 3, 21)) +>foo : Symbol(I.foo, Decl(anyAssignabilityInInheritance.ts, 3, 21)) } var a: any; @@ -56,8 +56,8 @@ var r3 = foo3(a); // any declare function foo5(x: Date): Date; >foo5 : Symbol(foo5, Decl(anyAssignabilityInInheritance.ts, 19, 17), Decl(anyAssignabilityInInheritance.ts, 21, 37)) >x : Symbol(x, Decl(anyAssignabilityInInheritance.ts, 21, 22)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) declare function foo5(x: any): any; >foo5 : Symbol(foo5, Decl(anyAssignabilityInInheritance.ts, 19, 17), Decl(anyAssignabilityInInheritance.ts, 21, 37)) @@ -113,7 +113,7 @@ var r3 = foo3(a); // any interface I8 { foo: string } >I8 : Symbol(I8, Decl(anyAssignabilityInInheritance.ts, 35, 17)) ->foo : Symbol(foo, Decl(anyAssignabilityInInheritance.ts, 37, 14)) +>foo : Symbol(I8.foo, Decl(anyAssignabilityInInheritance.ts, 37, 14)) declare function foo9(x: I8): I8; >foo9 : Symbol(foo9, Decl(anyAssignabilityInInheritance.ts, 37, 28), Decl(anyAssignabilityInInheritance.ts, 38, 33)) @@ -132,7 +132,7 @@ var r3 = foo3(a); // any class A { foo: number; } >A : Symbol(A, Decl(anyAssignabilityInInheritance.ts, 40, 17)) ->foo : Symbol(foo, Decl(anyAssignabilityInInheritance.ts, 42, 9)) +>foo : Symbol(A.foo, Decl(anyAssignabilityInInheritance.ts, 42, 9)) declare function foo10(x: A): A; >foo10 : Symbol(foo10, Decl(anyAssignabilityInInheritance.ts, 42, 24), Decl(anyAssignabilityInInheritance.ts, 43, 32)) @@ -152,7 +152,7 @@ var r3 = foo3(a); // any class A2 { foo: T; } >A2 : Symbol(A2, Decl(anyAssignabilityInInheritance.ts, 45, 17)) >T : Symbol(T, Decl(anyAssignabilityInInheritance.ts, 47, 9)) ->foo : Symbol(foo, Decl(anyAssignabilityInInheritance.ts, 47, 13)) +>foo : Symbol(A2.foo, Decl(anyAssignabilityInInheritance.ts, 47, 13)) >T : Symbol(T, Decl(anyAssignabilityInInheritance.ts, 47, 9)) declare function foo11(x: A2): A2; @@ -251,7 +251,7 @@ var r3 = foo3(a); // any class CC { baz: string } >CC : Symbol(CC, Decl(anyAssignabilityInInheritance.ts, 71, 17), Decl(anyAssignabilityInInheritance.ts, 73, 24)) ->baz : Symbol(baz, Decl(anyAssignabilityInInheritance.ts, 73, 10)) +>baz : Symbol(CC.baz, Decl(anyAssignabilityInInheritance.ts, 73, 10)) module CC { >CC : Symbol(CC, Decl(anyAssignabilityInInheritance.ts, 71, 17), Decl(anyAssignabilityInInheritance.ts, 73, 24)) diff --git a/tests/baselines/reference/anyAssignableToEveryType.symbols b/tests/baselines/reference/anyAssignableToEveryType.symbols index b1b2f87c050..4995a24a5c2 100644 --- a/tests/baselines/reference/anyAssignableToEveryType.symbols +++ b/tests/baselines/reference/anyAssignableToEveryType.symbols @@ -6,7 +6,7 @@ class C { >C : Symbol(C, Decl(anyAssignableToEveryType.ts, 0, 11)) foo: string; ->foo : Symbol(foo, Decl(anyAssignableToEveryType.ts, 2, 9)) +>foo : Symbol(C.foo, Decl(anyAssignableToEveryType.ts, 2, 9)) } var ac: C; >ac : Symbol(ac, Decl(anyAssignableToEveryType.ts, 5, 3)) @@ -16,7 +16,7 @@ interface I { >I : Symbol(I, Decl(anyAssignableToEveryType.ts, 5, 10)) foo: string; ->foo : Symbol(foo, Decl(anyAssignableToEveryType.ts, 6, 13)) +>foo : Symbol(I.foo, Decl(anyAssignableToEveryType.ts, 6, 13)) } var ai: I; >ai : Symbol(ai, Decl(anyAssignableToEveryType.ts, 9, 3)) @@ -44,7 +44,7 @@ var d: boolean = a; var e: Date = a; >e : Symbol(e, Decl(anyAssignableToEveryType.ts, 17, 3)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >a : Symbol(a, Decl(anyAssignableToEveryType.ts, 0, 3)) var f: any = a; @@ -109,12 +109,12 @@ var o: (x: T) => T = a; var p: Number = a; >p : Symbol(p, Decl(anyAssignableToEveryType.ts, 31, 3)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >a : Symbol(a, Decl(anyAssignableToEveryType.ts, 0, 3)) var q: String = a; >q : Symbol(q, Decl(anyAssignableToEveryType.ts, 32, 3)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >a : Symbol(a, Decl(anyAssignableToEveryType.ts, 0, 3)) function foo(x: T, y: U, z: V) { @@ -122,7 +122,7 @@ function foo(x: T, y: U, z: V) { >T : Symbol(T, Decl(anyAssignableToEveryType.ts, 34, 13)) >U : Symbol(U, Decl(anyAssignableToEveryType.ts, 34, 15)) >V : Symbol(V, Decl(anyAssignableToEveryType.ts, 34, 32)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >x : Symbol(x, Decl(anyAssignableToEveryType.ts, 34, 49)) >T : Symbol(T, Decl(anyAssignableToEveryType.ts, 34, 13)) >y : Symbol(y, Decl(anyAssignableToEveryType.ts, 34, 54)) diff --git a/tests/baselines/reference/anyAssignableToEveryType2.symbols b/tests/baselines/reference/anyAssignableToEveryType2.symbols index 9984a3f2fb8..12d380aa368 100644 --- a/tests/baselines/reference/anyAssignableToEveryType2.symbols +++ b/tests/baselines/reference/anyAssignableToEveryType2.symbols @@ -8,7 +8,7 @@ interface I { >x : Symbol(x, Decl(anyAssignableToEveryType2.ts, 3, 5)) foo: any; // ok, any identical to itself ->foo : Symbol(foo, Decl(anyAssignableToEveryType2.ts, 3, 21)) +>foo : Symbol(I.foo, Decl(anyAssignableToEveryType2.ts, 3, 21)) } @@ -19,7 +19,7 @@ interface I2 { >x : Symbol(x, Decl(anyAssignableToEveryType2.ts, 9, 5)) foo: any; ->foo : Symbol(foo, Decl(anyAssignableToEveryType2.ts, 9, 24)) +>foo : Symbol(I2.foo, Decl(anyAssignableToEveryType2.ts, 9, 24)) } @@ -30,7 +30,7 @@ interface I3 { >x : Symbol(x, Decl(anyAssignableToEveryType2.ts, 15, 5)) foo: any; ->foo : Symbol(foo, Decl(anyAssignableToEveryType2.ts, 15, 24)) +>foo : Symbol(I3.foo, Decl(anyAssignableToEveryType2.ts, 15, 24)) } @@ -41,7 +41,7 @@ interface I4 { >x : Symbol(x, Decl(anyAssignableToEveryType2.ts, 21, 5)) foo: any; ->foo : Symbol(foo, Decl(anyAssignableToEveryType2.ts, 21, 25)) +>foo : Symbol(I4.foo, Decl(anyAssignableToEveryType2.ts, 21, 25)) } @@ -50,10 +50,10 @@ interface I5 { [x: string]: Date; >x : Symbol(x, Decl(anyAssignableToEveryType2.ts, 27, 5)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) foo: any; ->foo : Symbol(foo, Decl(anyAssignableToEveryType2.ts, 27, 22)) +>foo : Symbol(I5.foo, Decl(anyAssignableToEveryType2.ts, 27, 22)) } @@ -65,7 +65,7 @@ interface I6 { >RegExp : Symbol(RegExp, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) foo: any; ->foo : Symbol(foo, Decl(anyAssignableToEveryType2.ts, 33, 24)) +>foo : Symbol(I6.foo, Decl(anyAssignableToEveryType2.ts, 33, 24)) } @@ -77,7 +77,7 @@ interface I7 { >bar : Symbol(bar, Decl(anyAssignableToEveryType2.ts, 39, 18)) foo: any; ->foo : Symbol(foo, Decl(anyAssignableToEveryType2.ts, 39, 33)) +>foo : Symbol(I7.foo, Decl(anyAssignableToEveryType2.ts, 39, 33)) } @@ -88,7 +88,7 @@ interface I8 { >x : Symbol(x, Decl(anyAssignableToEveryType2.ts, 45, 5)) foo: any; ->foo : Symbol(foo, Decl(anyAssignableToEveryType2.ts, 45, 26)) +>foo : Symbol(I8.foo, Decl(anyAssignableToEveryType2.ts, 45, 26)) } @@ -100,12 +100,12 @@ interface I9 { >I8 : Symbol(I8, Decl(anyAssignableToEveryType2.ts, 41, 1)) foo: any; ->foo : Symbol(foo, Decl(anyAssignableToEveryType2.ts, 51, 20)) +>foo : Symbol(I9.foo, Decl(anyAssignableToEveryType2.ts, 51, 20)) } class A { foo: number; } >A : Symbol(A, Decl(anyAssignableToEveryType2.ts, 53, 1)) ->foo : Symbol(foo, Decl(anyAssignableToEveryType2.ts, 55, 9)) +>foo : Symbol(A.foo, Decl(anyAssignableToEveryType2.ts, 55, 9)) interface I10 { >I10 : Symbol(I10, Decl(anyAssignableToEveryType2.ts, 55, 24)) @@ -115,13 +115,13 @@ interface I10 { >A : Symbol(A, Decl(anyAssignableToEveryType2.ts, 53, 1)) foo: any; ->foo : Symbol(foo, Decl(anyAssignableToEveryType2.ts, 57, 19)) +>foo : Symbol(I10.foo, Decl(anyAssignableToEveryType2.ts, 57, 19)) } class A2 { foo: T; } >A2 : Symbol(A2, Decl(anyAssignableToEveryType2.ts, 59, 1)) >T : Symbol(T, Decl(anyAssignableToEveryType2.ts, 61, 9)) ->foo : Symbol(foo, Decl(anyAssignableToEveryType2.ts, 61, 13)) +>foo : Symbol(A2.foo, Decl(anyAssignableToEveryType2.ts, 61, 13)) >T : Symbol(T, Decl(anyAssignableToEveryType2.ts, 61, 9)) interface I11 { @@ -132,7 +132,7 @@ interface I11 { >A2 : Symbol(A2, Decl(anyAssignableToEveryType2.ts, 59, 1)) foo: any; ->foo : Symbol(foo, Decl(anyAssignableToEveryType2.ts, 63, 28)) +>foo : Symbol(I11.foo, Decl(anyAssignableToEveryType2.ts, 63, 28)) } @@ -144,7 +144,7 @@ interface I12 { >x : Symbol(x, Decl(anyAssignableToEveryType2.ts, 69, 18)) foo: any; ->foo : Symbol(foo, Decl(anyAssignableToEveryType2.ts, 69, 31)) +>foo : Symbol(I12.foo, Decl(anyAssignableToEveryType2.ts, 69, 31)) } @@ -159,7 +159,7 @@ interface I13 { >T : Symbol(T, Decl(anyAssignableToEveryType2.ts, 75, 18)) foo: any; ->foo : Symbol(foo, Decl(anyAssignableToEveryType2.ts, 75, 32)) +>foo : Symbol(I13.foo, Decl(anyAssignableToEveryType2.ts, 75, 32)) } @@ -175,7 +175,7 @@ interface I14 { >E : Symbol(E, Decl(anyAssignableToEveryType2.ts, 77, 1)) foo: any; ->foo : Symbol(foo, Decl(anyAssignableToEveryType2.ts, 82, 19)) +>foo : Symbol(I14.foo, Decl(anyAssignableToEveryType2.ts, 82, 19)) } @@ -196,13 +196,13 @@ interface I15 { >f : Symbol(f, Decl(anyAssignableToEveryType2.ts, 84, 1), Decl(anyAssignableToEveryType2.ts, 87, 16)) foo: any; ->foo : Symbol(foo, Decl(anyAssignableToEveryType2.ts, 92, 26)) +>foo : Symbol(I15.foo, Decl(anyAssignableToEveryType2.ts, 92, 26)) } class c { baz: string } >c : Symbol(c, Decl(anyAssignableToEveryType2.ts, 94, 1), Decl(anyAssignableToEveryType2.ts, 97, 23)) ->baz : Symbol(baz, Decl(anyAssignableToEveryType2.ts, 97, 9)) +>baz : Symbol(c.baz, Decl(anyAssignableToEveryType2.ts, 97, 9)) module c { >c : Symbol(c, Decl(anyAssignableToEveryType2.ts, 94, 1), Decl(anyAssignableToEveryType2.ts, 97, 23)) @@ -218,7 +218,7 @@ interface I16 { >c : Symbol(c, Decl(anyAssignableToEveryType2.ts, 94, 1), Decl(anyAssignableToEveryType2.ts, 97, 23)) foo: any; ->foo : Symbol(foo, Decl(anyAssignableToEveryType2.ts, 102, 26)) +>foo : Symbol(I16.foo, Decl(anyAssignableToEveryType2.ts, 102, 26)) } @@ -231,7 +231,7 @@ interface I17 { >T : Symbol(T, Decl(anyAssignableToEveryType2.ts, 107, 14)) foo: any; ->foo : Symbol(foo, Decl(anyAssignableToEveryType2.ts, 108, 19)) +>foo : Symbol(I17.foo, Decl(anyAssignableToEveryType2.ts, 108, 19)) } @@ -246,7 +246,7 @@ interface I18 { >U : Symbol(U, Decl(anyAssignableToEveryType2.ts, 113, 16)) foo: any; ->foo : Symbol(foo, Decl(anyAssignableToEveryType2.ts, 114, 19)) +>foo : Symbol(I18.foo, Decl(anyAssignableToEveryType2.ts, 114, 19)) } @@ -258,7 +258,7 @@ interface I19 { >Object : Symbol(Object, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) foo: any; ->foo : Symbol(foo, Decl(anyAssignableToEveryType2.ts, 120, 24)) +>foo : Symbol(I19.foo, Decl(anyAssignableToEveryType2.ts, 120, 24)) } @@ -269,6 +269,6 @@ interface I20 { >x : Symbol(x, Decl(anyAssignableToEveryType2.ts, 126, 5)) foo: any; ->foo : Symbol(foo, Decl(anyAssignableToEveryType2.ts, 126, 20)) +>foo : Symbol(I20.foo, Decl(anyAssignableToEveryType2.ts, 126, 20)) } diff --git a/tests/baselines/reference/anyIsAssignableToObject.symbols b/tests/baselines/reference/anyIsAssignableToObject.symbols index a9650fa58b8..15478466d5b 100644 --- a/tests/baselines/reference/anyIsAssignableToObject.symbols +++ b/tests/baselines/reference/anyIsAssignableToObject.symbols @@ -3,7 +3,7 @@ interface P { >P : Symbol(P, Decl(anyIsAssignableToObject.ts, 0, 0)) p: {}; ->p : Symbol(p, Decl(anyIsAssignableToObject.ts, 0, 13)) +>p : Symbol(P.p, Decl(anyIsAssignableToObject.ts, 0, 13)) } interface Q extends P { // Check assignability here. Any is assignable to {} @@ -11,5 +11,5 @@ interface Q extends P { // Check assignability here. Any is assignable to {} >P : Symbol(P, Decl(anyIsAssignableToObject.ts, 0, 0)) p: any; ->p : Symbol(p, Decl(anyIsAssignableToObject.ts, 4, 23)) +>p : Symbol(Q.p, Decl(anyIsAssignableToObject.ts, 4, 23)) } diff --git a/tests/baselines/reference/anyIsAssignableToVoid.symbols b/tests/baselines/reference/anyIsAssignableToVoid.symbols index f5ee5ce7b23..50545c05d56 100644 --- a/tests/baselines/reference/anyIsAssignableToVoid.symbols +++ b/tests/baselines/reference/anyIsAssignableToVoid.symbols @@ -3,7 +3,7 @@ interface P { >P : Symbol(P, Decl(anyIsAssignableToVoid.ts, 0, 0)) p: void; ->p : Symbol(p, Decl(anyIsAssignableToVoid.ts, 0, 13)) +>p : Symbol(P.p, Decl(anyIsAssignableToVoid.ts, 0, 13)) } interface Q extends P { // check assignability here. any is assignable to void. @@ -11,5 +11,5 @@ interface Q extends P { // check assignability here. any is assignable to void. >P : Symbol(P, Decl(anyIsAssignableToVoid.ts, 0, 0)) p: any; ->p : Symbol(p, Decl(anyIsAssignableToVoid.ts, 4, 23)) +>p : Symbol(Q.p, Decl(anyIsAssignableToVoid.ts, 4, 23)) } diff --git a/tests/baselines/reference/argsInScope.symbols b/tests/baselines/reference/argsInScope.symbols index 6faf88facd9..1c91e2bdd73 100644 --- a/tests/baselines/reference/argsInScope.symbols +++ b/tests/baselines/reference/argsInScope.symbols @@ -3,7 +3,7 @@ class C { >C : Symbol(C, Decl(argsInScope.ts, 0, 0)) P(ii:number, j:number, k:number) { ->P : Symbol(P, Decl(argsInScope.ts, 0, 9)) +>P : Symbol(C.P, Decl(argsInScope.ts, 0, 9)) >ii : Symbol(ii, Decl(argsInScope.ts, 1, 6)) >j : Symbol(j, Decl(argsInScope.ts, 1, 16)) >k : Symbol(k, Decl(argsInScope.ts, 1, 26)) diff --git a/tests/baselines/reference/argumentsObjectIterator01_ES6.symbols b/tests/baselines/reference/argumentsObjectIterator01_ES6.symbols index d2d05cf3132..384b4458b2f 100644 --- a/tests/baselines/reference/argumentsObjectIterator01_ES6.symbols +++ b/tests/baselines/reference/argumentsObjectIterator01_ES6.symbols @@ -14,9 +14,9 @@ function doubleAndReturnAsArray(x: number, y: number, z: number): [number, numbe >arguments : Symbol(arguments) result.push(arg + arg); ->result.push : Symbol(Array.push, Decl(lib.d.ts, --, --)) +>result.push : Symbol(Array.push, Decl(lib.es5.d.ts, --, --)) >result : Symbol(result, Decl(argumentsObjectIterator01_ES6.ts, 2, 7)) ->push : Symbol(Array.push, Decl(lib.d.ts, --, --)) +>push : Symbol(Array.push, Decl(lib.es5.d.ts, --, --)) >arg : Symbol(arg, Decl(argumentsObjectIterator01_ES6.ts, 3, 12)) >arg : Symbol(arg, Decl(argumentsObjectIterator01_ES6.ts, 3, 12)) } diff --git a/tests/baselines/reference/argumentsObjectIterator02_ES6.symbols b/tests/baselines/reference/argumentsObjectIterator02_ES6.symbols index 7a4e75de66b..1f4fa33067a 100644 --- a/tests/baselines/reference/argumentsObjectIterator02_ES6.symbols +++ b/tests/baselines/reference/argumentsObjectIterator02_ES6.symbols @@ -9,9 +9,9 @@ function doubleAndReturnAsArray(x: number, y: number, z: number): [number, numbe let blah = arguments[Symbol.iterator]; >blah : Symbol(blah, Decl(argumentsObjectIterator02_ES6.ts, 2, 7)) >arguments : Symbol(arguments) ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) let result = []; >result : Symbol(result, Decl(argumentsObjectIterator02_ES6.ts, 4, 7)) @@ -21,9 +21,9 @@ function doubleAndReturnAsArray(x: number, y: number, z: number): [number, numbe >blah : Symbol(blah, Decl(argumentsObjectIterator02_ES6.ts, 2, 7)) result.push(arg + arg); ->result.push : Symbol(Array.push, Decl(lib.d.ts, --, --)) +>result.push : Symbol(Array.push, Decl(lib.es5.d.ts, --, --)) >result : Symbol(result, Decl(argumentsObjectIterator02_ES6.ts, 4, 7)) ->push : Symbol(Array.push, Decl(lib.d.ts, --, --)) +>push : Symbol(Array.push, Decl(lib.es5.d.ts, --, --)) >arg : Symbol(arg, Decl(argumentsObjectIterator02_ES6.ts, 5, 12)) >arg : Symbol(arg, Decl(argumentsObjectIterator02_ES6.ts, 5, 12)) } diff --git a/tests/baselines/reference/arrayAssignmentTest6.symbols b/tests/baselines/reference/arrayAssignmentTest6.symbols index c4d4ba76a5f..a224f260625 100644 --- a/tests/baselines/reference/arrayAssignmentTest6.symbols +++ b/tests/baselines/reference/arrayAssignmentTest6.symbols @@ -9,24 +9,24 @@ module Test { >IToken : Symbol(IToken, Decl(arrayAssignmentTest6.ts, 2, 5)) startIndex: number; ->startIndex : Symbol(startIndex, Decl(arrayAssignmentTest6.ts, 3, 22)) +>startIndex : Symbol(IToken.startIndex, Decl(arrayAssignmentTest6.ts, 3, 22)) } interface ILineTokens { >ILineTokens : Symbol(ILineTokens, Decl(arrayAssignmentTest6.ts, 5, 5)) tokens: IToken[]; ->tokens : Symbol(tokens, Decl(arrayAssignmentTest6.ts, 6, 27)) +>tokens : Symbol(ILineTokens.tokens, Decl(arrayAssignmentTest6.ts, 6, 27)) >IToken : Symbol(IToken, Decl(arrayAssignmentTest6.ts, 2, 5)) endState: IState; ->endState : Symbol(endState, Decl(arrayAssignmentTest6.ts, 7, 25)) +>endState : Symbol(ILineTokens.endState, Decl(arrayAssignmentTest6.ts, 7, 25)) >IState : Symbol(IState, Decl(arrayAssignmentTest6.ts, 0, 13)) } interface IMode { >IMode : Symbol(IMode, Decl(arrayAssignmentTest6.ts, 9, 5)) tokenize(line:string, state:IState, includeStates:boolean):ILineTokens; ->tokenize : Symbol(tokenize, Decl(arrayAssignmentTest6.ts, 10, 21)) +>tokenize : Symbol(IMode.tokenize, Decl(arrayAssignmentTest6.ts, 10, 21)) >line : Symbol(line, Decl(arrayAssignmentTest6.ts, 11, 17)) >state : Symbol(state, Decl(arrayAssignmentTest6.ts, 11, 29)) >IState : Symbol(IState, Decl(arrayAssignmentTest6.ts, 0, 13)) @@ -38,7 +38,7 @@ module Test { >IMode : Symbol(IMode, Decl(arrayAssignmentTest6.ts, 9, 5)) public tokenize(line:string, tokens:IToken[], includeStates:boolean):ILineTokens { ->tokenize : Symbol(tokenize, Decl(arrayAssignmentTest6.ts, 13, 39)) +>tokenize : Symbol(Bug.tokenize, Decl(arrayAssignmentTest6.ts, 13, 39)) >line : Symbol(line, Decl(arrayAssignmentTest6.ts, 14, 24)) >tokens : Symbol(tokens, Decl(arrayAssignmentTest6.ts, 14, 36)) >IToken : Symbol(IToken, Decl(arrayAssignmentTest6.ts, 2, 5)) diff --git a/tests/baselines/reference/arrayAugment.symbols b/tests/baselines/reference/arrayAugment.symbols index 90a506077ad..5ba92ca07e1 100644 --- a/tests/baselines/reference/arrayAugment.symbols +++ b/tests/baselines/reference/arrayAugment.symbols @@ -4,7 +4,7 @@ interface Array { >T : Symbol(T, Decl(lib.d.ts, --, --), Decl(arrayAugment.ts, 0, 16)) split: (parts: number) => T[][]; ->split : Symbol(split, Decl(arrayAugment.ts, 0, 20)) +>split : Symbol(Array.split, Decl(arrayAugment.ts, 0, 20)) >parts : Symbol(parts, Decl(arrayAugment.ts, 1, 12)) >T : Symbol(T, Decl(lib.d.ts, --, --), Decl(arrayAugment.ts, 0, 16)) } diff --git a/tests/baselines/reference/arrayBestCommonTypes.symbols b/tests/baselines/reference/arrayBestCommonTypes.symbols index c4b42f66991..fc7d10261e8 100644 --- a/tests/baselines/reference/arrayBestCommonTypes.symbols +++ b/tests/baselines/reference/arrayBestCommonTypes.symbols @@ -22,98 +22,98 @@ module EmptyTypes { >f : Symbol(f, Decl(arrayBestCommonTypes.ts, 4, 34)) public voidIfAny(x: boolean, y?: boolean): number; ->voidIfAny : Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57)) +>voidIfAny : Symbol(f.voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57)) >x : Symbol(x, Decl(arrayBestCommonTypes.ts, 8, 25)) >y : Symbol(y, Decl(arrayBestCommonTypes.ts, 8, 36)) public voidIfAny(x: string, y?: boolean): number; ->voidIfAny : Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57)) +>voidIfAny : Symbol(f.voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57)) >x : Symbol(x, Decl(arrayBestCommonTypes.ts, 9, 25)) >y : Symbol(y, Decl(arrayBestCommonTypes.ts, 9, 35)) public voidIfAny(x: number, y?: boolean): number; ->voidIfAny : Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57)) +>voidIfAny : Symbol(f.voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57)) >x : Symbol(x, Decl(arrayBestCommonTypes.ts, 10, 25)) >y : Symbol(y, Decl(arrayBestCommonTypes.ts, 10, 35)) public voidIfAny(x: any, y = false): any { return null; } ->voidIfAny : Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57)) +>voidIfAny : Symbol(f.voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57)) >x : Symbol(x, Decl(arrayBestCommonTypes.ts, 11, 25)) >y : Symbol(y, Decl(arrayBestCommonTypes.ts, 11, 32)) public x() { ->x : Symbol(x, Decl(arrayBestCommonTypes.ts, 11, 65)) +>x : Symbol(f.x, Decl(arrayBestCommonTypes.ts, 11, 65)) (this.voidIfAny([4, 2][0])); ->this.voidIfAny : Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57)) +>this.voidIfAny : Symbol(f.voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57)) >this : Symbol(f, Decl(arrayBestCommonTypes.ts, 4, 34)) ->voidIfAny : Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57)) +>voidIfAny : Symbol(f.voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57)) (this.voidIfAny([4, 2, undefined][0])); ->this.voidIfAny : Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57)) +>this.voidIfAny : Symbol(f.voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57)) >this : Symbol(f, Decl(arrayBestCommonTypes.ts, 4, 34)) ->voidIfAny : Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57)) +>voidIfAny : Symbol(f.voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57)) >undefined : Symbol(undefined) (this.voidIfAny([undefined, 2, 4][0])); ->this.voidIfAny : Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57)) +>this.voidIfAny : Symbol(f.voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57)) >this : Symbol(f, Decl(arrayBestCommonTypes.ts, 4, 34)) ->voidIfAny : Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57)) +>voidIfAny : Symbol(f.voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57)) >undefined : Symbol(undefined) (this.voidIfAny([null, 2, 4][0])); ->this.voidIfAny : Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57)) +>this.voidIfAny : Symbol(f.voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57)) >this : Symbol(f, Decl(arrayBestCommonTypes.ts, 4, 34)) ->voidIfAny : Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57)) +>voidIfAny : Symbol(f.voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57)) (this.voidIfAny([2, 4, null][0])); ->this.voidIfAny : Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57)) +>this.voidIfAny : Symbol(f.voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57)) >this : Symbol(f, Decl(arrayBestCommonTypes.ts, 4, 34)) ->voidIfAny : Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57)) +>voidIfAny : Symbol(f.voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57)) (this.voidIfAny([undefined, 4, null][0])); ->this.voidIfAny : Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57)) +>this.voidIfAny : Symbol(f.voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57)) >this : Symbol(f, Decl(arrayBestCommonTypes.ts, 4, 34)) ->voidIfAny : Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57)) +>voidIfAny : Symbol(f.voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57)) >undefined : Symbol(undefined) (this.voidIfAny(['', "q"][0])); ->this.voidIfAny : Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57)) +>this.voidIfAny : Symbol(f.voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57)) >this : Symbol(f, Decl(arrayBestCommonTypes.ts, 4, 34)) ->voidIfAny : Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57)) +>voidIfAny : Symbol(f.voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57)) (this.voidIfAny(['', "q", undefined][0])); ->this.voidIfAny : Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57)) +>this.voidIfAny : Symbol(f.voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57)) >this : Symbol(f, Decl(arrayBestCommonTypes.ts, 4, 34)) ->voidIfAny : Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57)) +>voidIfAny : Symbol(f.voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57)) >undefined : Symbol(undefined) (this.voidIfAny([undefined, "q", ''][0])); ->this.voidIfAny : Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57)) +>this.voidIfAny : Symbol(f.voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57)) >this : Symbol(f, Decl(arrayBestCommonTypes.ts, 4, 34)) ->voidIfAny : Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57)) +>voidIfAny : Symbol(f.voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57)) >undefined : Symbol(undefined) (this.voidIfAny([null, "q", ''][0])); ->this.voidIfAny : Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57)) +>this.voidIfAny : Symbol(f.voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57)) >this : Symbol(f, Decl(arrayBestCommonTypes.ts, 4, 34)) ->voidIfAny : Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57)) +>voidIfAny : Symbol(f.voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57)) (this.voidIfAny(["q", '', null][0])); ->this.voidIfAny : Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57)) +>this.voidIfAny : Symbol(f.voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57)) >this : Symbol(f, Decl(arrayBestCommonTypes.ts, 4, 34)) ->voidIfAny : Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57)) +>voidIfAny : Symbol(f.voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57)) (this.voidIfAny([undefined, '', null][0])); ->this.voidIfAny : Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57)) +>this.voidIfAny : Symbol(f.voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57)) >this : Symbol(f, Decl(arrayBestCommonTypes.ts, 4, 34)) ->voidIfAny : Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57)) +>voidIfAny : Symbol(f.voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57)) >undefined : Symbol(undefined) (this.voidIfAny([[3, 4], [null]][0][0])); ->this.voidIfAny : Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57)) +>this.voidIfAny : Symbol(f.voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57)) >this : Symbol(f, Decl(arrayBestCommonTypes.ts, 4, 34)) ->voidIfAny : Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57)) +>voidIfAny : Symbol(f.voidIfAny, Decl(arrayBestCommonTypes.ts, 7, 13), Decl(arrayBestCommonTypes.ts, 8, 58), Decl(arrayBestCommonTypes.ts, 9, 57), Decl(arrayBestCommonTypes.ts, 10, 57)) var t1: { x: number; y: base; }[] = [{ x: 7, y: new derived() }, { x: 5, y: new base() }]; @@ -231,122 +231,122 @@ module NonEmptyTypes { interface iface { x: string; } >iface : Symbol(iface, Decl(arrayBestCommonTypes.ts, 53, 22)) ->x : Symbol(x, Decl(arrayBestCommonTypes.ts, 54, 21)) +>x : Symbol(iface.x, Decl(arrayBestCommonTypes.ts, 54, 21)) class base implements iface { x: string; y: string; } >base : Symbol(base, Decl(arrayBestCommonTypes.ts, 54, 34)) >iface : Symbol(iface, Decl(arrayBestCommonTypes.ts, 53, 22)) ->x : Symbol(x, Decl(arrayBestCommonTypes.ts, 55, 33)) ->y : Symbol(y, Decl(arrayBestCommonTypes.ts, 55, 44)) +>x : Symbol(base.x, Decl(arrayBestCommonTypes.ts, 55, 33)) +>y : Symbol(base.y, Decl(arrayBestCommonTypes.ts, 55, 44)) class base2 implements iface { x: string; z: string; } >base2 : Symbol(base2, Decl(arrayBestCommonTypes.ts, 55, 57)) >iface : Symbol(iface, Decl(arrayBestCommonTypes.ts, 53, 22)) ->x : Symbol(x, Decl(arrayBestCommonTypes.ts, 56, 34)) ->z : Symbol(z, Decl(arrayBestCommonTypes.ts, 56, 45)) +>x : Symbol(base2.x, Decl(arrayBestCommonTypes.ts, 56, 34)) +>z : Symbol(base2.z, Decl(arrayBestCommonTypes.ts, 56, 45)) class derived extends base { a: string; } >derived : Symbol(derived, Decl(arrayBestCommonTypes.ts, 56, 58)) >base : Symbol(base, Decl(arrayBestCommonTypes.ts, 54, 34)) ->a : Symbol(a, Decl(arrayBestCommonTypes.ts, 57, 32)) +>a : Symbol(derived.a, Decl(arrayBestCommonTypes.ts, 57, 32)) class f { >f : Symbol(f, Decl(arrayBestCommonTypes.ts, 57, 45)) public voidIfAny(x: boolean, y?: boolean): number; ->voidIfAny : Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 60, 13), Decl(arrayBestCommonTypes.ts, 61, 58), Decl(arrayBestCommonTypes.ts, 62, 57), Decl(arrayBestCommonTypes.ts, 63, 57)) +>voidIfAny : Symbol(f.voidIfAny, Decl(arrayBestCommonTypes.ts, 60, 13), Decl(arrayBestCommonTypes.ts, 61, 58), Decl(arrayBestCommonTypes.ts, 62, 57), Decl(arrayBestCommonTypes.ts, 63, 57)) >x : Symbol(x, Decl(arrayBestCommonTypes.ts, 61, 25)) >y : Symbol(y, Decl(arrayBestCommonTypes.ts, 61, 36)) public voidIfAny(x: string, y?: boolean): number; ->voidIfAny : Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 60, 13), Decl(arrayBestCommonTypes.ts, 61, 58), Decl(arrayBestCommonTypes.ts, 62, 57), Decl(arrayBestCommonTypes.ts, 63, 57)) +>voidIfAny : Symbol(f.voidIfAny, Decl(arrayBestCommonTypes.ts, 60, 13), Decl(arrayBestCommonTypes.ts, 61, 58), Decl(arrayBestCommonTypes.ts, 62, 57), Decl(arrayBestCommonTypes.ts, 63, 57)) >x : Symbol(x, Decl(arrayBestCommonTypes.ts, 62, 25)) >y : Symbol(y, Decl(arrayBestCommonTypes.ts, 62, 35)) public voidIfAny(x: number, y?: boolean): number; ->voidIfAny : Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 60, 13), Decl(arrayBestCommonTypes.ts, 61, 58), Decl(arrayBestCommonTypes.ts, 62, 57), Decl(arrayBestCommonTypes.ts, 63, 57)) +>voidIfAny : Symbol(f.voidIfAny, Decl(arrayBestCommonTypes.ts, 60, 13), Decl(arrayBestCommonTypes.ts, 61, 58), Decl(arrayBestCommonTypes.ts, 62, 57), Decl(arrayBestCommonTypes.ts, 63, 57)) >x : Symbol(x, Decl(arrayBestCommonTypes.ts, 63, 25)) >y : Symbol(y, Decl(arrayBestCommonTypes.ts, 63, 35)) public voidIfAny(x: any, y = false): any { return null; } ->voidIfAny : Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 60, 13), Decl(arrayBestCommonTypes.ts, 61, 58), Decl(arrayBestCommonTypes.ts, 62, 57), Decl(arrayBestCommonTypes.ts, 63, 57)) +>voidIfAny : Symbol(f.voidIfAny, Decl(arrayBestCommonTypes.ts, 60, 13), Decl(arrayBestCommonTypes.ts, 61, 58), Decl(arrayBestCommonTypes.ts, 62, 57), Decl(arrayBestCommonTypes.ts, 63, 57)) >x : Symbol(x, Decl(arrayBestCommonTypes.ts, 64, 25)) >y : Symbol(y, Decl(arrayBestCommonTypes.ts, 64, 32)) public x() { ->x : Symbol(x, Decl(arrayBestCommonTypes.ts, 64, 65)) +>x : Symbol(f.x, Decl(arrayBestCommonTypes.ts, 64, 65)) (this.voidIfAny([4, 2][0])); ->this.voidIfAny : Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 60, 13), Decl(arrayBestCommonTypes.ts, 61, 58), Decl(arrayBestCommonTypes.ts, 62, 57), Decl(arrayBestCommonTypes.ts, 63, 57)) +>this.voidIfAny : Symbol(f.voidIfAny, Decl(arrayBestCommonTypes.ts, 60, 13), Decl(arrayBestCommonTypes.ts, 61, 58), Decl(arrayBestCommonTypes.ts, 62, 57), Decl(arrayBestCommonTypes.ts, 63, 57)) >this : Symbol(f, Decl(arrayBestCommonTypes.ts, 57, 45)) ->voidIfAny : Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 60, 13), Decl(arrayBestCommonTypes.ts, 61, 58), Decl(arrayBestCommonTypes.ts, 62, 57), Decl(arrayBestCommonTypes.ts, 63, 57)) +>voidIfAny : Symbol(f.voidIfAny, Decl(arrayBestCommonTypes.ts, 60, 13), Decl(arrayBestCommonTypes.ts, 61, 58), Decl(arrayBestCommonTypes.ts, 62, 57), Decl(arrayBestCommonTypes.ts, 63, 57)) (this.voidIfAny([4, 2, undefined][0])); ->this.voidIfAny : Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 60, 13), Decl(arrayBestCommonTypes.ts, 61, 58), Decl(arrayBestCommonTypes.ts, 62, 57), Decl(arrayBestCommonTypes.ts, 63, 57)) +>this.voidIfAny : Symbol(f.voidIfAny, Decl(arrayBestCommonTypes.ts, 60, 13), Decl(arrayBestCommonTypes.ts, 61, 58), Decl(arrayBestCommonTypes.ts, 62, 57), Decl(arrayBestCommonTypes.ts, 63, 57)) >this : Symbol(f, Decl(arrayBestCommonTypes.ts, 57, 45)) ->voidIfAny : Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 60, 13), Decl(arrayBestCommonTypes.ts, 61, 58), Decl(arrayBestCommonTypes.ts, 62, 57), Decl(arrayBestCommonTypes.ts, 63, 57)) +>voidIfAny : Symbol(f.voidIfAny, Decl(arrayBestCommonTypes.ts, 60, 13), Decl(arrayBestCommonTypes.ts, 61, 58), Decl(arrayBestCommonTypes.ts, 62, 57), Decl(arrayBestCommonTypes.ts, 63, 57)) >undefined : Symbol(undefined) (this.voidIfAny([undefined, 2, 4][0])); ->this.voidIfAny : Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 60, 13), Decl(arrayBestCommonTypes.ts, 61, 58), Decl(arrayBestCommonTypes.ts, 62, 57), Decl(arrayBestCommonTypes.ts, 63, 57)) +>this.voidIfAny : Symbol(f.voidIfAny, Decl(arrayBestCommonTypes.ts, 60, 13), Decl(arrayBestCommonTypes.ts, 61, 58), Decl(arrayBestCommonTypes.ts, 62, 57), Decl(arrayBestCommonTypes.ts, 63, 57)) >this : Symbol(f, Decl(arrayBestCommonTypes.ts, 57, 45)) ->voidIfAny : Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 60, 13), Decl(arrayBestCommonTypes.ts, 61, 58), Decl(arrayBestCommonTypes.ts, 62, 57), Decl(arrayBestCommonTypes.ts, 63, 57)) +>voidIfAny : Symbol(f.voidIfAny, Decl(arrayBestCommonTypes.ts, 60, 13), Decl(arrayBestCommonTypes.ts, 61, 58), Decl(arrayBestCommonTypes.ts, 62, 57), Decl(arrayBestCommonTypes.ts, 63, 57)) >undefined : Symbol(undefined) (this.voidIfAny([null, 2, 4][0])); ->this.voidIfAny : Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 60, 13), Decl(arrayBestCommonTypes.ts, 61, 58), Decl(arrayBestCommonTypes.ts, 62, 57), Decl(arrayBestCommonTypes.ts, 63, 57)) +>this.voidIfAny : Symbol(f.voidIfAny, Decl(arrayBestCommonTypes.ts, 60, 13), Decl(arrayBestCommonTypes.ts, 61, 58), Decl(arrayBestCommonTypes.ts, 62, 57), Decl(arrayBestCommonTypes.ts, 63, 57)) >this : Symbol(f, Decl(arrayBestCommonTypes.ts, 57, 45)) ->voidIfAny : Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 60, 13), Decl(arrayBestCommonTypes.ts, 61, 58), Decl(arrayBestCommonTypes.ts, 62, 57), Decl(arrayBestCommonTypes.ts, 63, 57)) +>voidIfAny : Symbol(f.voidIfAny, Decl(arrayBestCommonTypes.ts, 60, 13), Decl(arrayBestCommonTypes.ts, 61, 58), Decl(arrayBestCommonTypes.ts, 62, 57), Decl(arrayBestCommonTypes.ts, 63, 57)) (this.voidIfAny([2, 4, null][0])); ->this.voidIfAny : Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 60, 13), Decl(arrayBestCommonTypes.ts, 61, 58), Decl(arrayBestCommonTypes.ts, 62, 57), Decl(arrayBestCommonTypes.ts, 63, 57)) +>this.voidIfAny : Symbol(f.voidIfAny, Decl(arrayBestCommonTypes.ts, 60, 13), Decl(arrayBestCommonTypes.ts, 61, 58), Decl(arrayBestCommonTypes.ts, 62, 57), Decl(arrayBestCommonTypes.ts, 63, 57)) >this : Symbol(f, Decl(arrayBestCommonTypes.ts, 57, 45)) ->voidIfAny : Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 60, 13), Decl(arrayBestCommonTypes.ts, 61, 58), Decl(arrayBestCommonTypes.ts, 62, 57), Decl(arrayBestCommonTypes.ts, 63, 57)) +>voidIfAny : Symbol(f.voidIfAny, Decl(arrayBestCommonTypes.ts, 60, 13), Decl(arrayBestCommonTypes.ts, 61, 58), Decl(arrayBestCommonTypes.ts, 62, 57), Decl(arrayBestCommonTypes.ts, 63, 57)) (this.voidIfAny([undefined, 4, null][0])); ->this.voidIfAny : Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 60, 13), Decl(arrayBestCommonTypes.ts, 61, 58), Decl(arrayBestCommonTypes.ts, 62, 57), Decl(arrayBestCommonTypes.ts, 63, 57)) +>this.voidIfAny : Symbol(f.voidIfAny, Decl(arrayBestCommonTypes.ts, 60, 13), Decl(arrayBestCommonTypes.ts, 61, 58), Decl(arrayBestCommonTypes.ts, 62, 57), Decl(arrayBestCommonTypes.ts, 63, 57)) >this : Symbol(f, Decl(arrayBestCommonTypes.ts, 57, 45)) ->voidIfAny : Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 60, 13), Decl(arrayBestCommonTypes.ts, 61, 58), Decl(arrayBestCommonTypes.ts, 62, 57), Decl(arrayBestCommonTypes.ts, 63, 57)) +>voidIfAny : Symbol(f.voidIfAny, Decl(arrayBestCommonTypes.ts, 60, 13), Decl(arrayBestCommonTypes.ts, 61, 58), Decl(arrayBestCommonTypes.ts, 62, 57), Decl(arrayBestCommonTypes.ts, 63, 57)) >undefined : Symbol(undefined) (this.voidIfAny(['', "q"][0])); ->this.voidIfAny : Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 60, 13), Decl(arrayBestCommonTypes.ts, 61, 58), Decl(arrayBestCommonTypes.ts, 62, 57), Decl(arrayBestCommonTypes.ts, 63, 57)) +>this.voidIfAny : Symbol(f.voidIfAny, Decl(arrayBestCommonTypes.ts, 60, 13), Decl(arrayBestCommonTypes.ts, 61, 58), Decl(arrayBestCommonTypes.ts, 62, 57), Decl(arrayBestCommonTypes.ts, 63, 57)) >this : Symbol(f, Decl(arrayBestCommonTypes.ts, 57, 45)) ->voidIfAny : Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 60, 13), Decl(arrayBestCommonTypes.ts, 61, 58), Decl(arrayBestCommonTypes.ts, 62, 57), Decl(arrayBestCommonTypes.ts, 63, 57)) +>voidIfAny : Symbol(f.voidIfAny, Decl(arrayBestCommonTypes.ts, 60, 13), Decl(arrayBestCommonTypes.ts, 61, 58), Decl(arrayBestCommonTypes.ts, 62, 57), Decl(arrayBestCommonTypes.ts, 63, 57)) (this.voidIfAny(['', "q", undefined][0])); ->this.voidIfAny : Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 60, 13), Decl(arrayBestCommonTypes.ts, 61, 58), Decl(arrayBestCommonTypes.ts, 62, 57), Decl(arrayBestCommonTypes.ts, 63, 57)) +>this.voidIfAny : Symbol(f.voidIfAny, Decl(arrayBestCommonTypes.ts, 60, 13), Decl(arrayBestCommonTypes.ts, 61, 58), Decl(arrayBestCommonTypes.ts, 62, 57), Decl(arrayBestCommonTypes.ts, 63, 57)) >this : Symbol(f, Decl(arrayBestCommonTypes.ts, 57, 45)) ->voidIfAny : Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 60, 13), Decl(arrayBestCommonTypes.ts, 61, 58), Decl(arrayBestCommonTypes.ts, 62, 57), Decl(arrayBestCommonTypes.ts, 63, 57)) +>voidIfAny : Symbol(f.voidIfAny, Decl(arrayBestCommonTypes.ts, 60, 13), Decl(arrayBestCommonTypes.ts, 61, 58), Decl(arrayBestCommonTypes.ts, 62, 57), Decl(arrayBestCommonTypes.ts, 63, 57)) >undefined : Symbol(undefined) (this.voidIfAny([undefined, "q", ''][0])); ->this.voidIfAny : Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 60, 13), Decl(arrayBestCommonTypes.ts, 61, 58), Decl(arrayBestCommonTypes.ts, 62, 57), Decl(arrayBestCommonTypes.ts, 63, 57)) +>this.voidIfAny : Symbol(f.voidIfAny, Decl(arrayBestCommonTypes.ts, 60, 13), Decl(arrayBestCommonTypes.ts, 61, 58), Decl(arrayBestCommonTypes.ts, 62, 57), Decl(arrayBestCommonTypes.ts, 63, 57)) >this : Symbol(f, Decl(arrayBestCommonTypes.ts, 57, 45)) ->voidIfAny : Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 60, 13), Decl(arrayBestCommonTypes.ts, 61, 58), Decl(arrayBestCommonTypes.ts, 62, 57), Decl(arrayBestCommonTypes.ts, 63, 57)) +>voidIfAny : Symbol(f.voidIfAny, Decl(arrayBestCommonTypes.ts, 60, 13), Decl(arrayBestCommonTypes.ts, 61, 58), Decl(arrayBestCommonTypes.ts, 62, 57), Decl(arrayBestCommonTypes.ts, 63, 57)) >undefined : Symbol(undefined) (this.voidIfAny([null, "q", ''][0])); ->this.voidIfAny : Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 60, 13), Decl(arrayBestCommonTypes.ts, 61, 58), Decl(arrayBestCommonTypes.ts, 62, 57), Decl(arrayBestCommonTypes.ts, 63, 57)) +>this.voidIfAny : Symbol(f.voidIfAny, Decl(arrayBestCommonTypes.ts, 60, 13), Decl(arrayBestCommonTypes.ts, 61, 58), Decl(arrayBestCommonTypes.ts, 62, 57), Decl(arrayBestCommonTypes.ts, 63, 57)) >this : Symbol(f, Decl(arrayBestCommonTypes.ts, 57, 45)) ->voidIfAny : Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 60, 13), Decl(arrayBestCommonTypes.ts, 61, 58), Decl(arrayBestCommonTypes.ts, 62, 57), Decl(arrayBestCommonTypes.ts, 63, 57)) +>voidIfAny : Symbol(f.voidIfAny, Decl(arrayBestCommonTypes.ts, 60, 13), Decl(arrayBestCommonTypes.ts, 61, 58), Decl(arrayBestCommonTypes.ts, 62, 57), Decl(arrayBestCommonTypes.ts, 63, 57)) (this.voidIfAny(["q", '', null][0])); ->this.voidIfAny : Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 60, 13), Decl(arrayBestCommonTypes.ts, 61, 58), Decl(arrayBestCommonTypes.ts, 62, 57), Decl(arrayBestCommonTypes.ts, 63, 57)) +>this.voidIfAny : Symbol(f.voidIfAny, Decl(arrayBestCommonTypes.ts, 60, 13), Decl(arrayBestCommonTypes.ts, 61, 58), Decl(arrayBestCommonTypes.ts, 62, 57), Decl(arrayBestCommonTypes.ts, 63, 57)) >this : Symbol(f, Decl(arrayBestCommonTypes.ts, 57, 45)) ->voidIfAny : Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 60, 13), Decl(arrayBestCommonTypes.ts, 61, 58), Decl(arrayBestCommonTypes.ts, 62, 57), Decl(arrayBestCommonTypes.ts, 63, 57)) +>voidIfAny : Symbol(f.voidIfAny, Decl(arrayBestCommonTypes.ts, 60, 13), Decl(arrayBestCommonTypes.ts, 61, 58), Decl(arrayBestCommonTypes.ts, 62, 57), Decl(arrayBestCommonTypes.ts, 63, 57)) (this.voidIfAny([undefined, '', null][0])); ->this.voidIfAny : Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 60, 13), Decl(arrayBestCommonTypes.ts, 61, 58), Decl(arrayBestCommonTypes.ts, 62, 57), Decl(arrayBestCommonTypes.ts, 63, 57)) +>this.voidIfAny : Symbol(f.voidIfAny, Decl(arrayBestCommonTypes.ts, 60, 13), Decl(arrayBestCommonTypes.ts, 61, 58), Decl(arrayBestCommonTypes.ts, 62, 57), Decl(arrayBestCommonTypes.ts, 63, 57)) >this : Symbol(f, Decl(arrayBestCommonTypes.ts, 57, 45)) ->voidIfAny : Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 60, 13), Decl(arrayBestCommonTypes.ts, 61, 58), Decl(arrayBestCommonTypes.ts, 62, 57), Decl(arrayBestCommonTypes.ts, 63, 57)) +>voidIfAny : Symbol(f.voidIfAny, Decl(arrayBestCommonTypes.ts, 60, 13), Decl(arrayBestCommonTypes.ts, 61, 58), Decl(arrayBestCommonTypes.ts, 62, 57), Decl(arrayBestCommonTypes.ts, 63, 57)) >undefined : Symbol(undefined) (this.voidIfAny([[3, 4], [null]][0][0])); ->this.voidIfAny : Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 60, 13), Decl(arrayBestCommonTypes.ts, 61, 58), Decl(arrayBestCommonTypes.ts, 62, 57), Decl(arrayBestCommonTypes.ts, 63, 57)) +>this.voidIfAny : Symbol(f.voidIfAny, Decl(arrayBestCommonTypes.ts, 60, 13), Decl(arrayBestCommonTypes.ts, 61, 58), Decl(arrayBestCommonTypes.ts, 62, 57), Decl(arrayBestCommonTypes.ts, 63, 57)) >this : Symbol(f, Decl(arrayBestCommonTypes.ts, 57, 45)) ->voidIfAny : Symbol(voidIfAny, Decl(arrayBestCommonTypes.ts, 60, 13), Decl(arrayBestCommonTypes.ts, 61, 58), Decl(arrayBestCommonTypes.ts, 62, 57), Decl(arrayBestCommonTypes.ts, 63, 57)) +>voidIfAny : Symbol(f.voidIfAny, Decl(arrayBestCommonTypes.ts, 60, 13), Decl(arrayBestCommonTypes.ts, 61, 58), Decl(arrayBestCommonTypes.ts, 62, 57), Decl(arrayBestCommonTypes.ts, 63, 57)) var t1: { x: number; y: base; }[] = [{ x: 7, y: new derived() }, { x: 5, y: new base() }]; diff --git a/tests/baselines/reference/arrayCast.errors.txt b/tests/baselines/reference/arrayCast.errors.txt index 815813ea727..61463e5557b 100644 --- a/tests/baselines/reference/arrayCast.errors.txt +++ b/tests/baselines/reference/arrayCast.errors.txt @@ -1,5 +1,5 @@ -tests/cases/compiler/arrayCast.ts(3,23): error TS2352: Neither type '{ foo: string; }[]' nor type '{ id: number; }[]' is assignable to the other. - Type '{ foo: string; }' is not assignable to type '{ id: number; }'. +tests/cases/compiler/arrayCast.ts(3,23): error TS2352: Type '{ foo: string; }[]' cannot be converted to type '{ id: number; }[]'. + Type '{ foo: string; }' is not comparable to type '{ id: number; }'. Object literal may only specify known properties, and 'foo' does not exist in type '{ id: number; }'. @@ -8,8 +8,8 @@ tests/cases/compiler/arrayCast.ts(3,23): error TS2352: Neither type '{ foo: stri // has type { foo: string }[], which is not assignable to { id: number }[]. <{ id: number; }[]>[{ foo: "s" }]; ~~~~~~~~ -!!! error TS2352: Neither type '{ foo: string; }[]' nor type '{ id: number; }[]' is assignable to the other. -!!! error TS2352: Type '{ foo: string; }' is not assignable to type '{ id: number; }'. +!!! error TS2352: Type '{ foo: string; }[]' cannot be converted to type '{ id: number; }[]'. +!!! error TS2352: Type '{ foo: string; }' is not comparable to type '{ id: number; }'. !!! error TS2352: Object literal may only specify known properties, and 'foo' does not exist in type '{ id: number; }'. // Should succeed, as the {} element causes the type of the array to be {}[] diff --git a/tests/baselines/reference/arrayFilter.js b/tests/baselines/reference/arrayFilter.js new file mode 100644 index 00000000000..dd3b321b19c --- /dev/null +++ b/tests/baselines/reference/arrayFilter.js @@ -0,0 +1,16 @@ +//// [arrayFilter.ts] +var foo = [ + { name: 'bar' }, + { name: null }, + { name: 'baz' } +] + +foo.filter(x => x.name); //should accepted all possible types not only boolean! + +//// [arrayFilter.js] +var foo = [ + { name: 'bar' }, + { name: null }, + { name: 'baz' } +]; +foo.filter(function (x) { return x.name; }); //should accepted all possible types not only boolean! diff --git a/tests/baselines/reference/arrayFilter.symbols b/tests/baselines/reference/arrayFilter.symbols new file mode 100644 index 00000000000..fcdd39117a7 --- /dev/null +++ b/tests/baselines/reference/arrayFilter.symbols @@ -0,0 +1,24 @@ +=== tests/cases/compiler/arrayFilter.ts === +var foo = [ +>foo : Symbol(foo, Decl(arrayFilter.ts, 0, 3)) + + { name: 'bar' }, +>name : Symbol(name, Decl(arrayFilter.ts, 1, 5)) + + { name: null }, +>name : Symbol(name, Decl(arrayFilter.ts, 2, 5)) + + { name: 'baz' } +>name : Symbol(name, Decl(arrayFilter.ts, 3, 5)) + +] + +foo.filter(x => x.name); //should accepted all possible types not only boolean! +>foo.filter : Symbol(Array.filter, Decl(lib.d.ts, --, --)) +>foo : Symbol(foo, Decl(arrayFilter.ts, 0, 3)) +>filter : Symbol(Array.filter, Decl(lib.d.ts, --, --)) +>x : Symbol(x, Decl(arrayFilter.ts, 6, 11)) +>x.name : Symbol(name, Decl(arrayFilter.ts, 1, 5)) +>x : Symbol(x, Decl(arrayFilter.ts, 6, 11)) +>name : Symbol(name, Decl(arrayFilter.ts, 1, 5)) + diff --git a/tests/baselines/reference/arrayFilter.types b/tests/baselines/reference/arrayFilter.types new file mode 100644 index 00000000000..f3d6d421744 --- /dev/null +++ b/tests/baselines/reference/arrayFilter.types @@ -0,0 +1,33 @@ +=== tests/cases/compiler/arrayFilter.ts === +var foo = [ +>foo : { name: string; }[] +>[ { name: 'bar' }, { name: null }, { name: 'baz' }] : { name: string; }[] + + { name: 'bar' }, +>{ name: 'bar' } : { name: string; } +>name : string +>'bar' : string + + { name: null }, +>{ name: null } : { name: null; } +>name : null +>null : null + + { name: 'baz' } +>{ name: 'baz' } : { name: string; } +>name : string +>'baz' : string + +] + +foo.filter(x => x.name); //should accepted all possible types not only boolean! +>foo.filter(x => x.name) : { name: string; }[] +>foo.filter : (callbackfn: (value: { name: string; }, index: number, array: { name: string; }[]) => any, thisArg?: any) => { name: string; }[] +>foo : { name: string; }[] +>filter : (callbackfn: (value: { name: string; }, index: number, array: { name: string; }[]) => any, thisArg?: any) => { name: string; }[] +>x => x.name : (x: { name: string; }) => string +>x : { name: string; } +>x.name : string +>x : { name: string; } +>name : string + diff --git a/tests/baselines/reference/arrayLiteralContextualType.symbols b/tests/baselines/reference/arrayLiteralContextualType.symbols index 500c1d522f6..2049ec342ec 100644 --- a/tests/baselines/reference/arrayLiteralContextualType.symbols +++ b/tests/baselines/reference/arrayLiteralContextualType.symbols @@ -3,27 +3,27 @@ interface IAnimal { >IAnimal : Symbol(IAnimal, Decl(arrayLiteralContextualType.ts, 0, 0)) name: string; ->name : Symbol(name, Decl(arrayLiteralContextualType.ts, 0, 19)) +>name : Symbol(IAnimal.name, Decl(arrayLiteralContextualType.ts, 0, 19)) } class Giraffe { >Giraffe : Symbol(Giraffe, Decl(arrayLiteralContextualType.ts, 2, 1)) name = "Giraffe"; ->name : Symbol(name, Decl(arrayLiteralContextualType.ts, 4, 15)) +>name : Symbol(Giraffe.name, Decl(arrayLiteralContextualType.ts, 4, 15)) neckLength = "3m"; ->neckLength : Symbol(neckLength, Decl(arrayLiteralContextualType.ts, 5, 21)) +>neckLength : Symbol(Giraffe.neckLength, Decl(arrayLiteralContextualType.ts, 5, 21)) } class Elephant { >Elephant : Symbol(Elephant, Decl(arrayLiteralContextualType.ts, 7, 1)) name = "Elephant"; ->name : Symbol(name, Decl(arrayLiteralContextualType.ts, 9, 16)) +>name : Symbol(Elephant.name, Decl(arrayLiteralContextualType.ts, 9, 16)) trunkDiameter = "20cm"; ->trunkDiameter : Symbol(trunkDiameter, Decl(arrayLiteralContextualType.ts, 10, 22)) +>trunkDiameter : Symbol(Elephant.trunkDiameter, Decl(arrayLiteralContextualType.ts, 10, 22)) } function foo(animals: IAnimal[]) { } diff --git a/tests/baselines/reference/arrayLiteralWidened.types b/tests/baselines/reference/arrayLiteralWidened.types index 9599db2dff5..83db7046eed 100644 --- a/tests/baselines/reference/arrayLiteralWidened.types +++ b/tests/baselines/reference/arrayLiteralWidened.types @@ -19,7 +19,7 @@ var a = [undefined, undefined]; var b = [[], [null, null]]; // any[][] >b : any[][] ->[[], [null, null]] : null[][] +>[[], [null, null]] : undefined[][] >[] : undefined[] >[null, null] : null[] >null : null diff --git a/tests/baselines/reference/arrayLiterals2ES5.symbols b/tests/baselines/reference/arrayLiterals2ES5.symbols index 4db8372a601..eea3c78bfc0 100644 --- a/tests/baselines/reference/arrayLiterals2ES5.symbols +++ b/tests/baselines/reference/arrayLiterals2ES5.symbols @@ -81,13 +81,13 @@ var temp4 = []; interface myArray extends Array { } >myArray : Symbol(myArray, Decl(arrayLiterals2ES5.ts, 42, 15)) >Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) interface myArray2 extends Array { } >myArray2 : Symbol(myArray2, Decl(arrayLiterals2ES5.ts, 44, 43)) >Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) var d0 = [1, true, ...temp,]; // has type (string|number|boolean)[] >d0 : Symbol(d0, Decl(arrayLiterals2ES5.ts, 46, 3)) diff --git a/tests/baselines/reference/arrayLiterals2ES6.symbols b/tests/baselines/reference/arrayLiterals2ES6.symbols index 0c7dc1495df..407471f76be 100644 --- a/tests/baselines/reference/arrayLiterals2ES6.symbols +++ b/tests/baselines/reference/arrayLiterals2ES6.symbols @@ -72,14 +72,14 @@ var temp2: [number[], string[]] = [[1, 2, 3], ["hello", "string"]]; interface myArray extends Array { } >myArray : Symbol(myArray, Decl(arrayLiterals2ES6.ts, 40, 67)) ->Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Array : Symbol(Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) interface myArray2 extends Array { } >myArray2 : Symbol(myArray2, Decl(arrayLiterals2ES6.ts, 42, 43)) ->Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Array : Symbol(Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) +>String : Symbol(String, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --)) var d0 = [1, true, ...temp, ]; // has type (string|number|boolean)[] >d0 : Symbol(d0, Decl(arrayLiterals2ES6.ts, 44, 3)) diff --git a/tests/baselines/reference/arrayLiterals3.errors.txt b/tests/baselines/reference/arrayLiterals3.errors.txt index 5409075a55c..f205e90eced 100644 --- a/tests/baselines/reference/arrayLiterals3.errors.txt +++ b/tests/baselines/reference/arrayLiterals3.errors.txt @@ -16,8 +16,8 @@ tests/cases/conformance/expressions/arrayLiterals/arrayLiterals3.ts(34,5): error Types of property 'push' are incompatible. Type '(...items: (number | string)[]) => number' is not assignable to type '(...items: Number[]) => number'. Types of parameters 'items' and 'items' are incompatible. - Type 'number | string' is not assignable to type 'Number'. - Type 'string' is not assignable to type 'Number'. + Type 'Number' is not assignable to type 'number | string'. + Type 'Number' is not assignable to type 'string'. ==== tests/cases/conformance/expressions/arrayLiterals/arrayLiterals3.ts (6 errors) ==== @@ -79,6 +79,6 @@ tests/cases/conformance/expressions/arrayLiterals/arrayLiterals3.ts(34,5): error !!! error TS2322: Types of property 'push' are incompatible. !!! error TS2322: Type '(...items: (number | string)[]) => number' is not assignable to type '(...items: Number[]) => number'. !!! error TS2322: Types of parameters 'items' and 'items' are incompatible. -!!! error TS2322: Type 'number | string' is not assignable to type 'Number'. -!!! error TS2322: Type 'string' is not assignable to type 'Number'. +!!! error TS2322: Type 'Number' is not assignable to type 'number | string'. +!!! error TS2322: Type 'Number' is not assignable to type 'string'. \ No newline at end of file diff --git a/tests/baselines/reference/arrayLiteralsWithRecursiveGenerics.symbols b/tests/baselines/reference/arrayLiteralsWithRecursiveGenerics.symbols index cd597dc2b4e..0b3630cac28 100644 --- a/tests/baselines/reference/arrayLiteralsWithRecursiveGenerics.symbols +++ b/tests/baselines/reference/arrayLiteralsWithRecursiveGenerics.symbols @@ -4,11 +4,11 @@ class List { >T : Symbol(T, Decl(arrayLiteralsWithRecursiveGenerics.ts, 0, 11)) data: T; ->data : Symbol(data, Decl(arrayLiteralsWithRecursiveGenerics.ts, 0, 15)) +>data : Symbol(List.data, Decl(arrayLiteralsWithRecursiveGenerics.ts, 0, 15)) >T : Symbol(T, Decl(arrayLiteralsWithRecursiveGenerics.ts, 0, 11)) next: List>; ->next : Symbol(next, Decl(arrayLiteralsWithRecursiveGenerics.ts, 1, 12)) +>next : Symbol(List.next, Decl(arrayLiteralsWithRecursiveGenerics.ts, 1, 12)) >List : Symbol(List, Decl(arrayLiteralsWithRecursiveGenerics.ts, 0, 0)) >List : Symbol(List, Decl(arrayLiteralsWithRecursiveGenerics.ts, 0, 0)) >T : Symbol(T, Decl(arrayLiteralsWithRecursiveGenerics.ts, 0, 11)) @@ -21,7 +21,7 @@ class DerivedList extends List { >U : Symbol(U, Decl(arrayLiteralsWithRecursiveGenerics.ts, 5, 18)) foo: U; ->foo : Symbol(foo, Decl(arrayLiteralsWithRecursiveGenerics.ts, 5, 38)) +>foo : Symbol(DerivedList.foo, Decl(arrayLiteralsWithRecursiveGenerics.ts, 5, 38)) >U : Symbol(U, Decl(arrayLiteralsWithRecursiveGenerics.ts, 5, 18)) // next: List> @@ -32,11 +32,11 @@ class MyList { >T : Symbol(T, Decl(arrayLiteralsWithRecursiveGenerics.ts, 10, 13)) data: T; ->data : Symbol(data, Decl(arrayLiteralsWithRecursiveGenerics.ts, 10, 17)) +>data : Symbol(MyList.data, Decl(arrayLiteralsWithRecursiveGenerics.ts, 10, 17)) >T : Symbol(T, Decl(arrayLiteralsWithRecursiveGenerics.ts, 10, 13)) next: MyList>; ->next : Symbol(next, Decl(arrayLiteralsWithRecursiveGenerics.ts, 11, 12)) +>next : Symbol(MyList.next, Decl(arrayLiteralsWithRecursiveGenerics.ts, 11, 12)) >MyList : Symbol(MyList, Decl(arrayLiteralsWithRecursiveGenerics.ts, 8, 1)) >MyList : Symbol(MyList, Decl(arrayLiteralsWithRecursiveGenerics.ts, 8, 1)) >T : Symbol(T, Decl(arrayLiteralsWithRecursiveGenerics.ts, 10, 13)) diff --git a/tests/baselines/reference/arrayOfExportedClass.symbols b/tests/baselines/reference/arrayOfExportedClass.symbols index bdcaf98eb0d..acdcbfa398b 100644 --- a/tests/baselines/reference/arrayOfExportedClass.symbols +++ b/tests/baselines/reference/arrayOfExportedClass.symbols @@ -7,18 +7,18 @@ class Road { >Road : Symbol(Road, Decl(arrayOfExportedClass_1.ts, 1, 49)) public cars: Car[]; ->cars : Symbol(cars, Decl(arrayOfExportedClass_1.ts, 3, 12)) +>cars : Symbol(Road.cars, Decl(arrayOfExportedClass_1.ts, 3, 12)) >Car : Symbol(Car, Decl(arrayOfExportedClass_1.ts, 0, 0)) public AddCars(cars: Car[]) { ->AddCars : Symbol(AddCars, Decl(arrayOfExportedClass_1.ts, 5, 23)) +>AddCars : Symbol(Road.AddCars, Decl(arrayOfExportedClass_1.ts, 5, 23)) >cars : Symbol(cars, Decl(arrayOfExportedClass_1.ts, 7, 19)) >Car : Symbol(Car, Decl(arrayOfExportedClass_1.ts, 0, 0)) this.cars = cars; ->this.cars : Symbol(cars, Decl(arrayOfExportedClass_1.ts, 3, 12)) +>this.cars : Symbol(Road.cars, Decl(arrayOfExportedClass_1.ts, 3, 12)) >this : Symbol(Road, Decl(arrayOfExportedClass_1.ts, 1, 49)) ->cars : Symbol(cars, Decl(arrayOfExportedClass_1.ts, 3, 12)) +>cars : Symbol(Road.cars, Decl(arrayOfExportedClass_1.ts, 3, 12)) >cars : Symbol(cars, Decl(arrayOfExportedClass_1.ts, 7, 19)) } } @@ -31,7 +31,7 @@ class Car { >Car : Symbol(Car, Decl(arrayOfExportedClass_0.ts, 0, 0)) foo: string; ->foo : Symbol(foo, Decl(arrayOfExportedClass_0.ts, 0, 11)) +>foo : Symbol(Car.foo, Decl(arrayOfExportedClass_0.ts, 0, 11)) } export = Car; diff --git a/tests/baselines/reference/arrayOfFunctionTypes3.symbols b/tests/baselines/reference/arrayOfFunctionTypes3.symbols index d26effeb5b7..9ff5a252d34 100644 --- a/tests/baselines/reference/arrayOfFunctionTypes3.symbols +++ b/tests/baselines/reference/arrayOfFunctionTypes3.symbols @@ -12,7 +12,7 @@ class C { >C : Symbol(C, Decl(arrayOfFunctionTypes3.ts, 3, 16)) foo: string; ->foo : Symbol(foo, Decl(arrayOfFunctionTypes3.ts, 5, 9)) +>foo : Symbol(C.foo, Decl(arrayOfFunctionTypes3.ts, 5, 9)) } var y = [C, C]; >y : Symbol(y, Decl(arrayOfFunctionTypes3.ts, 8, 3)) diff --git a/tests/baselines/reference/arrayTypeInSignatureOfInterfaceAndClass.symbols b/tests/baselines/reference/arrayTypeInSignatureOfInterfaceAndClass.symbols index d9665e98eb5..018f9ce35c9 100644 --- a/tests/baselines/reference/arrayTypeInSignatureOfInterfaceAndClass.symbols +++ b/tests/baselines/reference/arrayTypeInSignatureOfInterfaceAndClass.symbols @@ -7,7 +7,7 @@ declare module WinJS { >T : Symbol(T, Decl(arrayTypeInSignatureOfInterfaceAndClass.ts, 1, 18)) then(success?: (value: T) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; ->then : Symbol(then, Decl(arrayTypeInSignatureOfInterfaceAndClass.ts, 1, 22)) +>then : Symbol(Promise.then, Decl(arrayTypeInSignatureOfInterfaceAndClass.ts, 1, 22)) >U : Symbol(U, Decl(arrayTypeInSignatureOfInterfaceAndClass.ts, 2, 13)) >success : Symbol(success, Decl(arrayTypeInSignatureOfInterfaceAndClass.ts, 2, 16)) >value : Symbol(value, Decl(arrayTypeInSignatureOfInterfaceAndClass.ts, 2, 27)) @@ -32,29 +32,29 @@ declare module Data { >T : Symbol(T, Decl(arrayTypeInSignatureOfInterfaceAndClass.ts, 6, 31)) itemIndex: number; ->itemIndex : Symbol(itemIndex, Decl(arrayTypeInSignatureOfInterfaceAndClass.ts, 6, 35)) +>itemIndex : Symbol(IListItem.itemIndex, Decl(arrayTypeInSignatureOfInterfaceAndClass.ts, 6, 35)) key: any; ->key : Symbol(key, Decl(arrayTypeInSignatureOfInterfaceAndClass.ts, 7, 26)) +>key : Symbol(IListItem.key, Decl(arrayTypeInSignatureOfInterfaceAndClass.ts, 7, 26)) data: T; ->data : Symbol(data, Decl(arrayTypeInSignatureOfInterfaceAndClass.ts, 8, 17)) +>data : Symbol(IListItem.data, Decl(arrayTypeInSignatureOfInterfaceAndClass.ts, 8, 17)) >T : Symbol(T, Decl(arrayTypeInSignatureOfInterfaceAndClass.ts, 6, 31)) group: any; ->group : Symbol(group, Decl(arrayTypeInSignatureOfInterfaceAndClass.ts, 9, 16)) +>group : Symbol(IListItem.group, Decl(arrayTypeInSignatureOfInterfaceAndClass.ts, 9, 16)) isHeader: boolean; ->isHeader : Symbol(isHeader, Decl(arrayTypeInSignatureOfInterfaceAndClass.ts, 10, 19)) +>isHeader : Symbol(IListItem.isHeader, Decl(arrayTypeInSignatureOfInterfaceAndClass.ts, 10, 19)) cached: boolean; ->cached : Symbol(cached, Decl(arrayTypeInSignatureOfInterfaceAndClass.ts, 11, 26)) +>cached : Symbol(IListItem.cached, Decl(arrayTypeInSignatureOfInterfaceAndClass.ts, 11, 26)) isNonSourceData: boolean; ->isNonSourceData : Symbol(isNonSourceData, Decl(arrayTypeInSignatureOfInterfaceAndClass.ts, 12, 24)) +>isNonSourceData : Symbol(IListItem.isNonSourceData, Decl(arrayTypeInSignatureOfInterfaceAndClass.ts, 12, 24)) preventAugmentation: boolean; ->preventAugmentation : Symbol(preventAugmentation, Decl(arrayTypeInSignatureOfInterfaceAndClass.ts, 13, 33)) +>preventAugmentation : Symbol(IListItem.preventAugmentation, Decl(arrayTypeInSignatureOfInterfaceAndClass.ts, 13, 33)) } export interface IVirtualList { >IVirtualList : Symbol(IVirtualList, Decl(arrayTypeInSignatureOfInterfaceAndClass.ts, 15, 5)) @@ -62,7 +62,7 @@ declare module Data { //removeIndices: WinJS.Promise[]>; removeIndices(indices: number[], options?: any): WinJS.Promise[]>; ->removeIndices : Symbol(removeIndices, Decl(arrayTypeInSignatureOfInterfaceAndClass.ts, 16, 38)) +>removeIndices : Symbol(IVirtualList.removeIndices, Decl(arrayTypeInSignatureOfInterfaceAndClass.ts, 16, 38)) >indices : Symbol(indices, Decl(arrayTypeInSignatureOfInterfaceAndClass.ts, 18, 22)) >options : Symbol(options, Decl(arrayTypeInSignatureOfInterfaceAndClass.ts, 18, 40)) >WinJS : Symbol(WinJS, Decl(arrayTypeInSignatureOfInterfaceAndClass.ts, 0, 0)) @@ -78,7 +78,7 @@ declare module Data { //removeIndices: WinJS.Promise[]>; public removeIndices(indices: number[], options?: any): WinJS.Promise[]>; ->removeIndices : Symbol(removeIndices, Decl(arrayTypeInSignatureOfInterfaceAndClass.ts, 20, 60)) +>removeIndices : Symbol(VirtualList.removeIndices, Decl(arrayTypeInSignatureOfInterfaceAndClass.ts, 20, 60)) >indices : Symbol(indices, Decl(arrayTypeInSignatureOfInterfaceAndClass.ts, 22, 29)) >options : Symbol(options, Decl(arrayTypeInSignatureOfInterfaceAndClass.ts, 22, 47)) >WinJS : Symbol(WinJS, Decl(arrayTypeInSignatureOfInterfaceAndClass.ts, 0, 0)) diff --git a/tests/baselines/reference/arrayconcat.symbols b/tests/baselines/reference/arrayconcat.symbols index 4fee1860be6..74cc7ef06c1 100644 --- a/tests/baselines/reference/arrayconcat.symbols +++ b/tests/baselines/reference/arrayconcat.symbols @@ -3,46 +3,46 @@ interface IOptions { >IOptions : Symbol(IOptions, Decl(arrayconcat.ts, 0, 0)) name?: string; ->name : Symbol(name, Decl(arrayconcat.ts, 0, 20)) +>name : Symbol(IOptions.name, Decl(arrayconcat.ts, 0, 20)) flag?: boolean; ->flag : Symbol(flag, Decl(arrayconcat.ts, 1, 18)) +>flag : Symbol(IOptions.flag, Decl(arrayconcat.ts, 1, 18)) short?: string; ->short : Symbol(short, Decl(arrayconcat.ts, 2, 19)) +>short : Symbol(IOptions.short, Decl(arrayconcat.ts, 2, 19)) usage?: string; ->usage : Symbol(usage, Decl(arrayconcat.ts, 3, 19)) +>usage : Symbol(IOptions.usage, Decl(arrayconcat.ts, 3, 19)) set?: (s: string) => void; ->set : Symbol(set, Decl(arrayconcat.ts, 4, 19)) +>set : Symbol(IOptions.set, Decl(arrayconcat.ts, 4, 19)) >s : Symbol(s, Decl(arrayconcat.ts, 5, 11)) type?: string; ->type : Symbol(type, Decl(arrayconcat.ts, 5, 30)) +>type : Symbol(IOptions.type, Decl(arrayconcat.ts, 5, 30)) experimental?: boolean; ->experimental : Symbol(experimental, Decl(arrayconcat.ts, 6, 18)) +>experimental : Symbol(IOptions.experimental, Decl(arrayconcat.ts, 6, 18)) } class parser { >parser : Symbol(parser, Decl(arrayconcat.ts, 8, 1)) public options: IOptions[]; ->options : Symbol(options, Decl(arrayconcat.ts, 10, 14)) +>options : Symbol(parser.options, Decl(arrayconcat.ts, 10, 14)) >IOptions : Symbol(IOptions, Decl(arrayconcat.ts, 0, 0)) public m() { ->m : Symbol(m, Decl(arrayconcat.ts, 11, 28)) +>m : Symbol(parser.m, Decl(arrayconcat.ts, 11, 28)) this.options = this.options.sort(function(a, b) { ->this.options : Symbol(options, Decl(arrayconcat.ts, 10, 14)) +>this.options : Symbol(parser.options, Decl(arrayconcat.ts, 10, 14)) >this : Symbol(parser, Decl(arrayconcat.ts, 8, 1)) ->options : Symbol(options, Decl(arrayconcat.ts, 10, 14)) +>options : Symbol(parser.options, Decl(arrayconcat.ts, 10, 14)) >this.options.sort : Symbol(Array.sort, Decl(lib.d.ts, --, --)) ->this.options : Symbol(options, Decl(arrayconcat.ts, 10, 14)) +>this.options : Symbol(parser.options, Decl(arrayconcat.ts, 10, 14)) >this : Symbol(parser, Decl(arrayconcat.ts, 8, 1)) ->options : Symbol(options, Decl(arrayconcat.ts, 10, 14)) +>options : Symbol(parser.options, Decl(arrayconcat.ts, 10, 14)) >sort : Symbol(Array.sort, Decl(lib.d.ts, --, --)) >a : Symbol(a, Decl(arrayconcat.ts, 14, 44)) >b : Symbol(b, Decl(arrayconcat.ts, 14, 46)) diff --git a/tests/baselines/reference/arrowFunctionErrorSpan.errors.txt b/tests/baselines/reference/arrowFunctionErrorSpan.errors.txt new file mode 100644 index 00000000000..e258f56d5ed --- /dev/null +++ b/tests/baselines/reference/arrowFunctionErrorSpan.errors.txt @@ -0,0 +1,111 @@ +tests/cases/compiler/arrowFunctionErrorSpan.ts(4,3): error TS2345: Argument of type '() => void' is not assignable to parameter of type '() => number'. + Type 'void' is not assignable to type 'number'. +tests/cases/compiler/arrowFunctionErrorSpan.ts(7,3): error TS2345: Argument of type '() => void' is not assignable to parameter of type '() => number'. + Type 'void' is not assignable to type 'number'. +tests/cases/compiler/arrowFunctionErrorSpan.ts(12,3): error TS2345: Argument of type '() => void' is not assignable to parameter of type '() => number'. + Type 'void' is not assignable to type 'number'. +tests/cases/compiler/arrowFunctionErrorSpan.ts(17,3): error TS2345: Argument of type '() => void' is not assignable to parameter of type '() => number'. + Type 'void' is not assignable to type 'number'. +tests/cases/compiler/arrowFunctionErrorSpan.ts(18,5): error TS1200: Line terminator not permitted before arrow. +tests/cases/compiler/arrowFunctionErrorSpan.ts(21,3): error TS2345: Argument of type '(a: any, b: any, c: any, d: any) => void' is not assignable to parameter of type '() => number'. +tests/cases/compiler/arrowFunctionErrorSpan.ts(28,7): error TS2345: Argument of type '() => void' is not assignable to parameter of type '() => number'. + Type 'void' is not assignable to type 'number'. +tests/cases/compiler/arrowFunctionErrorSpan.ts(32,7): error TS2345: Argument of type '() => void' is not assignable to parameter of type '() => number'. + Type 'void' is not assignable to type 'number'. +tests/cases/compiler/arrowFunctionErrorSpan.ts(36,7): error TS2345: Argument of type '() => void' is not assignable to parameter of type '() => number'. + Type 'void' is not assignable to type 'number'. +tests/cases/compiler/arrowFunctionErrorSpan.ts(43,5): error TS2345: Argument of type '() => void' is not assignable to parameter of type '() => number'. + Type 'void' is not assignable to type 'number'. +tests/cases/compiler/arrowFunctionErrorSpan.ts(52,3): error TS2345: Argument of type '(_: any) => number' is not assignable to parameter of type '() => number'. + + +==== tests/cases/compiler/arrowFunctionErrorSpan.ts (11 errors) ==== + function f(a: () => number) { } + + // oneliner + f(() => { }); + ~~~~~~~~~ +!!! error TS2345: Argument of type '() => void' is not assignable to parameter of type '() => number'. +!!! error TS2345: Type 'void' is not assignable to type 'number'. + + // multiline, body + f(() => { + ~~~~~~~ +!!! error TS2345: Argument of type '() => void' is not assignable to parameter of type '() => number'. +!!! error TS2345: Type 'void' is not assignable to type 'number'. + + }); + + // multiline 2, body + f(() => { + ~~~~~~~ +!!! error TS2345: Argument of type '() => void' is not assignable to parameter of type '() => number'. +!!! error TS2345: Type 'void' is not assignable to type 'number'. + + }); + + // multiline 3, arrow on a new line + f(() + ~~ + => { }); + ~~~~~~~~~~ +!!! error TS2345: Argument of type '() => void' is not assignable to parameter of type '() => number'. +!!! error TS2345: Type 'void' is not assignable to type 'number'. + ~~ +!!! error TS1200: Line terminator not permitted before arrow. + + // multiline 4, arguments + f((a, + ~~~ + b, + ~~~~~~ + c, + ~~~~~~ + d) => { }); + ~~~~~~~~~~~~~ +!!! error TS2345: Argument of type '(a: any, b: any, c: any, d: any) => void' is not assignable to parameter of type '() => number'. + + // single line with a comment + f(/* + */() => { }); + ~~~~~~~~~ +!!! error TS2345: Argument of type '() => void' is not assignable to parameter of type '() => number'. +!!! error TS2345: Type 'void' is not assignable to type 'number'. + + // multi line with a comment + f(/* + */() => { }); + ~~~~~~~~~ +!!! error TS2345: Argument of type '() => void' is not assignable to parameter of type '() => number'. +!!! error TS2345: Type 'void' is not assignable to type 'number'. + + // multi line with a comment 2 + f(/* + */() => { + ~~~~~~~~ +!!! error TS2345: Argument of type '() => void' is not assignable to parameter of type '() => number'. +!!! error TS2345: Type 'void' is not assignable to type 'number'. + + }); + + // multi line with a comment 3 + f( // comment 1 + // comment 2 + () => + ~~~~~ +!!! error TS2345: Argument of type '() => void' is not assignable to parameter of type '() => number'. +!!! error TS2345: Type 'void' is not assignable to type 'number'. + // comment 3 + { + // comment 4 + } + // comment 5 + ); + + // body is not a block + f(_ => 1 + + ~~~~~~~~ + 2); + ~~~~~ +!!! error TS2345: Argument of type '(_: any) => number' is not assignable to parameter of type '() => number'. + \ No newline at end of file diff --git a/tests/baselines/reference/arrowFunctionErrorSpan.js b/tests/baselines/reference/arrowFunctionErrorSpan.js new file mode 100644 index 00000000000..2557113e89b --- /dev/null +++ b/tests/baselines/reference/arrowFunctionErrorSpan.js @@ -0,0 +1,89 @@ +//// [arrowFunctionErrorSpan.ts] +function f(a: () => number) { } + +// oneliner +f(() => { }); + +// multiline, body +f(() => { + +}); + +// multiline 2, body +f(() => { + +}); + +// multiline 3, arrow on a new line +f(() + => { }); + +// multiline 4, arguments +f((a, + b, + c, + d) => { }); + +// single line with a comment +f(/* + */() => { }); + +// multi line with a comment +f(/* + */() => { }); + +// multi line with a comment 2 +f(/* + */() => { + + }); + +// multi line with a comment 3 +f( // comment 1 + // comment 2 + () => + // comment 3 + { + // comment 4 + } + // comment 5 +); + +// body is not a block +f(_ => 1 + + 2); + + +//// [arrowFunctionErrorSpan.js] +function f(a) { } +// oneliner +f(function () { }); +// multiline, body +f(function () { +}); +// multiline 2, body +f(function () { +}); +// multiline 3, arrow on a new line +f(function () { }); +// multiline 4, arguments +f(function (a, b, c, d) { }); +// single line with a comment +f(/* + */ function () { }); +// multi line with a comment +f(/* + */ function () { }); +// multi line with a comment 2 +f(/* + */ function () { +}); +// multi line with a comment 3 +f(// comment 1 +// comment 2 +function () { + // comment 4 +}); +// body is not a block +f(function (_) { return 1 + + 2; }); diff --git a/tests/baselines/reference/arrowFunctionExpressions.symbols b/tests/baselines/reference/arrowFunctionExpressions.symbols index 853c5074580..028d57084a2 100644 --- a/tests/baselines/reference/arrowFunctionExpressions.symbols +++ b/tests/baselines/reference/arrowFunctionExpressions.symbols @@ -94,18 +94,18 @@ class MyClass { >MyClass : Symbol(MyClass, Decl(arrowFunctionExpressions.ts, 24, 37)) m = (n) => n + 1; ->m : Symbol(m, Decl(arrowFunctionExpressions.ts, 28, 15)) +>m : Symbol(MyClass.m, Decl(arrowFunctionExpressions.ts, 28, 15)) >n : Symbol(n, Decl(arrowFunctionExpressions.ts, 29, 9)) >n : Symbol(n, Decl(arrowFunctionExpressions.ts, 29, 9)) p = (n) => n && this; ->p : Symbol(p, Decl(arrowFunctionExpressions.ts, 29, 21)) +>p : Symbol(MyClass.p, Decl(arrowFunctionExpressions.ts, 29, 21)) >n : Symbol(n, Decl(arrowFunctionExpressions.ts, 30, 9)) >n : Symbol(n, Decl(arrowFunctionExpressions.ts, 30, 9)) >this : Symbol(MyClass, Decl(arrowFunctionExpressions.ts, 24, 37)) fn() { ->fn : Symbol(fn, Decl(arrowFunctionExpressions.ts, 30, 25)) +>fn : Symbol(MyClass.fn, Decl(arrowFunctionExpressions.ts, 30, 25)) var m = (n) => n + 1; >m : Symbol(m, Decl(arrowFunctionExpressions.ts, 33, 11)) diff --git a/tests/baselines/reference/arrowFunctionWithObjectLiteralBody6.symbols b/tests/baselines/reference/arrowFunctionWithObjectLiteralBody6.symbols index 141b0d49880..534f9cc1ea0 100644 --- a/tests/baselines/reference/arrowFunctionWithObjectLiteralBody6.symbols +++ b/tests/baselines/reference/arrowFunctionWithObjectLiteralBody6.symbols @@ -1,13 +1,13 @@ === tests/cases/compiler/arrowFunctionWithObjectLiteralBody6.ts === var a = () => { name: "foo", message: "bar" }; >a : Symbol(a, Decl(arrowFunctionWithObjectLiteralBody6.ts, 0, 3)) ->Error : Symbol(Error, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Error : Symbol(Error, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) >name : Symbol(name, Decl(arrowFunctionWithObjectLiteralBody6.ts, 0, 22)) >message : Symbol(message, Decl(arrowFunctionWithObjectLiteralBody6.ts, 0, 35)) var b = () => ({ name: "foo", message: "bar" }); >b : Symbol(b, Decl(arrowFunctionWithObjectLiteralBody6.ts, 2, 3)) ->Error : Symbol(Error, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Error : Symbol(Error, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) >name : Symbol(name, Decl(arrowFunctionWithObjectLiteralBody6.ts, 2, 23)) >message : Symbol(message, Decl(arrowFunctionWithObjectLiteralBody6.ts, 2, 36)) @@ -18,7 +18,7 @@ var c = () => ({ name: "foo", message: "bar" }); var d = () => ((({ name: "foo", message: "bar" }))); >d : Symbol(d, Decl(arrowFunctionWithObjectLiteralBody6.ts, 6, 3)) ->Error : Symbol(Error, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Error : Symbol(Error, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) >name : Symbol(name, Decl(arrowFunctionWithObjectLiteralBody6.ts, 6, 25)) >message : Symbol(message, Decl(arrowFunctionWithObjectLiteralBody6.ts, 6, 38)) diff --git a/tests/baselines/reference/asOperator1.symbols b/tests/baselines/reference/asOperator1.symbols index 343d3422b5c..83813d26981 100644 --- a/tests/baselines/reference/asOperator1.symbols +++ b/tests/baselines/reference/asOperator1.symbols @@ -13,7 +13,7 @@ var y = (null as string).length; var z = Date as any as string; >z : Symbol(z, Decl(asOperator1.ts, 3, 3)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) // Should parse as a union type, not a bitwise 'or' of (32 as number) and 'string' var j = 32 as number|string; diff --git a/tests/baselines/reference/asOperator2.errors.txt b/tests/baselines/reference/asOperator2.errors.txt index 3b074038c26..92603c25cb0 100644 --- a/tests/baselines/reference/asOperator2.errors.txt +++ b/tests/baselines/reference/asOperator2.errors.txt @@ -1,8 +1,8 @@ -tests/cases/conformance/expressions/asOperator/asOperator2.ts(1,9): error TS2352: Neither type 'number' nor type 'string' is assignable to the other. +tests/cases/conformance/expressions/asOperator/asOperator2.ts(1,9): error TS2352: Type 'number' cannot be converted to type 'string'. ==== tests/cases/conformance/expressions/asOperator/asOperator2.ts (1 errors) ==== var x = 23 as string; ~~~~~~~~~~~~ -!!! error TS2352: Neither type 'number' nor type 'string' is assignable to the other. +!!! error TS2352: Type 'number' cannot be converted to type 'string'. \ No newline at end of file diff --git a/tests/baselines/reference/asOperatorContextualType.errors.txt b/tests/baselines/reference/asOperatorContextualType.errors.txt index c53b407b5cf..9431d6123e2 100644 --- a/tests/baselines/reference/asOperatorContextualType.errors.txt +++ b/tests/baselines/reference/asOperatorContextualType.errors.txt @@ -1,10 +1,10 @@ -tests/cases/conformance/expressions/asOperator/asOperatorContextualType.ts(2,9): error TS2352: Neither type '(v: number) => number' nor type '(x: number) => string' is assignable to the other. - Type 'number' is not assignable to type 'string'. +tests/cases/conformance/expressions/asOperator/asOperatorContextualType.ts(2,9): error TS2352: Type '(v: number) => number' cannot be converted to type '(x: number) => string'. + Type 'number' is not comparable to type 'string'. ==== tests/cases/conformance/expressions/asOperator/asOperatorContextualType.ts (1 errors) ==== // should error var x = (v => v) as (x: number) => string; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2352: Neither type '(v: number) => number' nor type '(x: number) => string' is assignable to the other. -!!! error TS2352: Type 'number' is not assignable to type 'string'. \ No newline at end of file +!!! error TS2352: Type '(v: number) => number' cannot be converted to type '(x: number) => string'. +!!! error TS2352: Type 'number' is not comparable to type 'string'. \ No newline at end of file diff --git a/tests/baselines/reference/asOperatorNames.errors.txt b/tests/baselines/reference/asOperatorNames.errors.txt index e3dfaab9884..4f957791a24 100644 --- a/tests/baselines/reference/asOperatorNames.errors.txt +++ b/tests/baselines/reference/asOperatorNames.errors.txt @@ -1,11 +1,11 @@ -tests/cases/conformance/expressions/asOperator/asOperatorNames.ts(2,9): error TS2352: Neither type 'number' nor type 'string' is assignable to the other. +tests/cases/conformance/expressions/asOperator/asOperatorNames.ts(2,9): error TS2352: Type 'number' cannot be converted to type 'string'. ==== tests/cases/conformance/expressions/asOperator/asOperatorNames.ts (1 errors) ==== var a = 20; var b = a as string; ~~~~~~~~~~~ -!!! error TS2352: Neither type 'number' nor type 'string' is assignable to the other. +!!! error TS2352: Type 'number' cannot be converted to type 'string'. var as = "hello"; var as1 = as as string; \ No newline at end of file diff --git a/tests/baselines/reference/asiInES6Classes.symbols b/tests/baselines/reference/asiInES6Classes.symbols index e6af356008d..e4b89c19bf0 100644 --- a/tests/baselines/reference/asiInES6Classes.symbols +++ b/tests/baselines/reference/asiInES6Classes.symbols @@ -5,7 +5,7 @@ class Foo { defaults = { ->defaults : Symbol(defaults, Decl(asiInES6Classes.ts, 0, 11)) +>defaults : Symbol(Foo.defaults, Decl(asiInES6Classes.ts, 0, 11)) done: false >done : Symbol(done, Decl(asiInES6Classes.ts, 4, 16)) @@ -15,7 +15,7 @@ class Foo { bar() { ->bar : Symbol(bar, Decl(asiInES6Classes.ts, 8, 5)) +>bar : Symbol(Foo.bar, Decl(asiInES6Classes.ts, 8, 5)) return 3; diff --git a/tests/baselines/reference/assign1.symbols b/tests/baselines/reference/assign1.symbols index f434da72670..a8ab57146af 100644 --- a/tests/baselines/reference/assign1.symbols +++ b/tests/baselines/reference/assign1.symbols @@ -6,10 +6,10 @@ module M { >I : Symbol(I, Decl(assign1.ts, 0, 10)) salt:number; ->salt : Symbol(salt, Decl(assign1.ts, 1, 17)) +>salt : Symbol(I.salt, Decl(assign1.ts, 1, 17)) pepper:number; ->pepper : Symbol(pepper, Decl(assign1.ts, 2, 20)) +>pepper : Symbol(I.pepper, Decl(assign1.ts, 2, 20)) } var x:I={salt:2,pepper:0}; diff --git a/tests/baselines/reference/assignEveryTypeToAny.symbols b/tests/baselines/reference/assignEveryTypeToAny.symbols index 145e19664fd..e94413d4a3b 100644 --- a/tests/baselines/reference/assignEveryTypeToAny.symbols +++ b/tests/baselines/reference/assignEveryTypeToAny.symbols @@ -84,7 +84,7 @@ interface I { >I : Symbol(I, Decl(assignEveryTypeToAny.ts, 31, 6)) foo: string; ->foo : Symbol(foo, Decl(assignEveryTypeToAny.ts, 33, 13)) +>foo : Symbol(I.foo, Decl(assignEveryTypeToAny.ts, 33, 13)) } var g: I; @@ -99,7 +99,7 @@ class C { >C : Symbol(C, Decl(assignEveryTypeToAny.ts, 38, 6)) bar: string; ->bar : Symbol(bar, Decl(assignEveryTypeToAny.ts, 40, 9)) +>bar : Symbol(C.bar, Decl(assignEveryTypeToAny.ts, 40, 9)) } var h: C; diff --git a/tests/baselines/reference/assignToPrototype1.symbols b/tests/baselines/reference/assignToPrototype1.symbols index ddb8e915043..7e58c92fdcb 100644 --- a/tests/baselines/reference/assignToPrototype1.symbols +++ b/tests/baselines/reference/assignToPrototype1.symbols @@ -3,7 +3,7 @@ declare class Point { >Point : Symbol(Point, Decl(assignToPrototype1.ts, 0, 0)) add(dx: number, dy: number): void; ->add : Symbol(add, Decl(assignToPrototype1.ts, 0, 21)) +>add : Symbol(Point.add, Decl(assignToPrototype1.ts, 0, 21)) >dx : Symbol(dx, Decl(assignToPrototype1.ts, 1, 6)) >dy : Symbol(dy, Decl(assignToPrototype1.ts, 1, 17)) } diff --git a/tests/baselines/reference/assignmentCompatBug5.errors.txt b/tests/baselines/reference/assignmentCompatBug5.errors.txt index 1b5e3d80259..44e28f15d8c 100644 --- a/tests/baselines/reference/assignmentCompatBug5.errors.txt +++ b/tests/baselines/reference/assignmentCompatBug5.errors.txt @@ -4,7 +4,7 @@ tests/cases/compiler/assignmentCompatBug5.ts(5,6): error TS2345: Argument of typ Type 'string' is not assignable to type 'number'. tests/cases/compiler/assignmentCompatBug5.ts(8,6): error TS2345: Argument of type '(s: string) => void' is not assignable to parameter of type '(n: number) => number'. Types of parameters 's' and 'n' are incompatible. - Type 'string' is not assignable to type 'number'. + Type 'number' is not assignable to type 'string'. tests/cases/compiler/assignmentCompatBug5.ts(9,6): error TS2345: Argument of type '(n: number) => void' is not assignable to parameter of type '(n: number) => number'. Type 'void' is not assignable to type 'number'. @@ -27,7 +27,7 @@ tests/cases/compiler/assignmentCompatBug5.ts(9,6): error TS2345: Argument of typ ~~~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(s: string) => void' is not assignable to parameter of type '(n: number) => number'. !!! error TS2345: Types of parameters 's' and 'n' are incompatible. -!!! error TS2345: Type 'string' is not assignable to type 'number'. +!!! error TS2345: Type 'number' is not assignable to type 'string'. foo3((n) => { return; }); ~~~~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(n: number) => void' is not assignable to parameter of type '(n: number) => number'. diff --git a/tests/baselines/reference/assignmentCompatWithCallSignatures.errors.txt b/tests/baselines/reference/assignmentCompatWithCallSignatures.errors.txt index 6a221ef144e..c5914e59386 100644 --- a/tests/baselines/reference/assignmentCompatWithCallSignatures.errors.txt +++ b/tests/baselines/reference/assignmentCompatWithCallSignatures.errors.txt @@ -1,27 +1,27 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignatures.ts(35,1): error TS2322: Type 'S2' is not assignable to type 'T'. Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignatures.ts(36,1): error TS2322: Type '(x: string) => void' is not assignable to type 'T'. Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignatures.ts(37,1): error TS2322: Type '(x: string) => number' is not assignable to type 'T'. Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignatures.ts(38,1): error TS2322: Type '(x: string) => string' is not assignable to type 'T'. Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignatures.ts(39,1): error TS2322: Type 'S2' is not assignable to type '(x: number) => void'. Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignatures.ts(40,1): error TS2322: Type '(x: string) => void' is not assignable to type '(x: number) => void'. Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignatures.ts(41,1): error TS2322: Type '(x: string) => number' is not assignable to type '(x: number) => void'. Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignatures.ts(42,1): error TS2322: Type '(x: string) => string' is not assignable to type '(x: number) => void'. Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Type 'number' is not assignable to type 'string'. ==== tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignatures.ts (8 errors) ==== @@ -63,40 +63,40 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme ~ !!! error TS2322: Type 'S2' is not assignable to type 'T'. !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Type 'number' is not assignable to type 'string'. t = a3; ~ !!! error TS2322: Type '(x: string) => void' is not assignable to type 'T'. !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Type 'number' is not assignable to type 'string'. t = (x: string) => 1; ~ !!! error TS2322: Type '(x: string) => number' is not assignable to type 'T'. !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Type 'number' is not assignable to type 'string'. t = function (x: string) { return ''; } ~ !!! error TS2322: Type '(x: string) => string' is not assignable to type 'T'. !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Type 'number' is not assignable to type 'string'. a = s2; ~ !!! error TS2322: Type 'S2' is not assignable to type '(x: number) => void'. !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Type 'number' is not assignable to type 'string'. a = a3; ~ !!! error TS2322: Type '(x: string) => void' is not assignable to type '(x: number) => void'. !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Type 'number' is not assignable to type 'string'. a = (x: string) => 1; ~ !!! error TS2322: Type '(x: string) => number' is not assignable to type '(x: number) => void'. !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Type 'number' is not assignable to type 'string'. a = function (x: string) { return ''; } ~ !!! error TS2322: Type '(x: string) => string' is not assignable to type '(x: number) => void'. !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Type 'number' is not assignable to type 'string'. \ No newline at end of file diff --git a/tests/baselines/reference/assignmentCompatWithCallSignatures2.errors.txt b/tests/baselines/reference/assignmentCompatWithCallSignatures2.errors.txt index e67f0a930c2..ffc0fdcd772 100644 --- a/tests/baselines/reference/assignmentCompatWithCallSignatures2.errors.txt +++ b/tests/baselines/reference/assignmentCompatWithCallSignatures2.errors.txt @@ -10,12 +10,12 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme Types of property 'f' are incompatible. Type '(x: string) => void' is not assignable to type '(x: number) => void'. Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignatures2.ts(43,1): error TS2322: Type '{ f(x: string): void; }' is not assignable to type 'T'. Types of property 'f' are incompatible. Type '(x: string) => void' is not assignable to type '(x: number) => void'. Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignatures2.ts(44,1): error TS2322: Type '(x: string) => number' is not assignable to type 'T'. Property 'f' is missing in type '(x: string) => number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignatures2.ts(45,1): error TS2322: Type '(x: string) => string' is not assignable to type 'T'. @@ -24,12 +24,12 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme Types of property 'f' are incompatible. Type '(x: string) => void' is not assignable to type '(x: number) => void'. Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignatures2.ts(47,1): error TS2322: Type '{ f(x: string): void; }' is not assignable to type '{ f(x: number): void; }'. Types of property 'f' are incompatible. Type '(x: string) => void' is not assignable to type '(x: number) => void'. Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignatures2.ts(48,1): error TS2322: Type '(x: string) => number' is not assignable to type '{ f(x: number): void; }'. Property 'f' is missing in type '(x: string) => number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignatures2.ts(49,1): error TS2322: Type '(x: string) => string' is not assignable to type '{ f(x: number): void; }'. @@ -96,14 +96,14 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme !!! error TS2322: Types of property 'f' are incompatible. !!! error TS2322: Type '(x: string) => void' is not assignable to type '(x: number) => void'. !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Type 'number' is not assignable to type 'string'. t = a3; ~ !!! error TS2322: Type '{ f(x: string): void; }' is not assignable to type 'T'. !!! error TS2322: Types of property 'f' are incompatible. !!! error TS2322: Type '(x: string) => void' is not assignable to type '(x: number) => void'. !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Type 'number' is not assignable to type 'string'. t = (x: string) => 1; ~ !!! error TS2322: Type '(x: string) => number' is not assignable to type 'T'. @@ -118,14 +118,14 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme !!! error TS2322: Types of property 'f' are incompatible. !!! error TS2322: Type '(x: string) => void' is not assignable to type '(x: number) => void'. !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Type 'number' is not assignable to type 'string'. a = a3; ~ !!! error TS2322: Type '{ f(x: string): void; }' is not assignable to type '{ f(x: number): void; }'. !!! error TS2322: Types of property 'f' are incompatible. !!! error TS2322: Type '(x: string) => void' is not assignable to type '(x: number) => void'. !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Type 'number' is not assignable to type 'string'. a = (x: string) => 1; ~ !!! error TS2322: Type '(x: string) => number' is not assignable to type '{ f(x: number): void; }'. diff --git a/tests/baselines/reference/assignmentCompatWithCallSignatures3.symbols b/tests/baselines/reference/assignmentCompatWithCallSignatures3.symbols index ea9440cf1a9..de0a5dc7b28 100644 --- a/tests/baselines/reference/assignmentCompatWithCallSignatures3.symbols +++ b/tests/baselines/reference/assignmentCompatWithCallSignatures3.symbols @@ -3,22 +3,22 @@ class Base { foo: string; } >Base : Symbol(Base, Decl(assignmentCompatWithCallSignatures3.ts, 0, 0)) ->foo : Symbol(foo, Decl(assignmentCompatWithCallSignatures3.ts, 2, 12)) +>foo : Symbol(Base.foo, Decl(assignmentCompatWithCallSignatures3.ts, 2, 12)) class Derived extends Base { bar: string; } >Derived : Symbol(Derived, Decl(assignmentCompatWithCallSignatures3.ts, 2, 27)) >Base : Symbol(Base, Decl(assignmentCompatWithCallSignatures3.ts, 0, 0)) ->bar : Symbol(bar, Decl(assignmentCompatWithCallSignatures3.ts, 3, 28)) +>bar : Symbol(Derived.bar, Decl(assignmentCompatWithCallSignatures3.ts, 3, 28)) class Derived2 extends Derived { baz: string; } >Derived2 : Symbol(Derived2, Decl(assignmentCompatWithCallSignatures3.ts, 3, 43)) >Derived : Symbol(Derived, Decl(assignmentCompatWithCallSignatures3.ts, 2, 27)) ->baz : Symbol(baz, Decl(assignmentCompatWithCallSignatures3.ts, 4, 32)) +>baz : Symbol(Derived2.baz, Decl(assignmentCompatWithCallSignatures3.ts, 4, 32)) class OtherDerived extends Base { bing: string; } >OtherDerived : Symbol(OtherDerived, Decl(assignmentCompatWithCallSignatures3.ts, 4, 47)) >Base : Symbol(Base, Decl(assignmentCompatWithCallSignatures3.ts, 0, 0)) ->bing : Symbol(bing, Decl(assignmentCompatWithCallSignatures3.ts, 5, 33)) +>bing : Symbol(OtherDerived.bing, Decl(assignmentCompatWithCallSignatures3.ts, 5, 33)) var a: (x: number) => number[]; >a : Symbol(a, Decl(assignmentCompatWithCallSignatures3.ts, 7, 3)) @@ -189,8 +189,8 @@ var a18: { (a: Date): Date; >a : Symbol(a, Decl(assignmentCompatWithCallSignatures3.ts, 40, 9)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) }): any[]; } diff --git a/tests/baselines/reference/assignmentCompatWithCallSignatures4.errors.txt b/tests/baselines/reference/assignmentCompatWithCallSignatures4.errors.txt index a75b5fafac1..8d184edc085 100644 --- a/tests/baselines/reference/assignmentCompatWithCallSignatures4.errors.txt +++ b/tests/baselines/reference/assignmentCompatWithCallSignatures4.errors.txt @@ -1,13 +1,13 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignatures4.ts(52,9): error TS2322: Type '(x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U' is not assignable to type '(x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived'. Types of parameters 'y' and 'y' are incompatible. - Type '(arg2: { foo: number; }) => any' is not assignable to type '(arg2: Base) => Derived'. + Type '(arg2: Base) => Derived' is not assignable to type '(arg2: { foo: number; }) => any'. Types of parameters 'arg2' and 'arg2' are incompatible. Type '{ foo: number; }' is not assignable to type 'Base'. Types of property 'foo' are incompatible. Type 'number' is not assignable to type 'string'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignatures4.ts(53,9): error TS2322: Type '(x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived' is not assignable to type '(x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U'. Types of parameters 'y' and 'y' are incompatible. - Type '(arg2: Base) => Derived' is not assignable to type '(arg2: { foo: number; }) => any'. + Type '(arg2: { foo: number; }) => any' is not assignable to type '(arg2: Base) => Derived'. Types of parameters 'arg2' and 'arg2' are incompatible. Type 'Base' is not assignable to type '{ foo: number; }'. Types of property 'foo' are incompatible. @@ -70,7 +70,7 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme ~~ !!! error TS2322: Type '(x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U' is not assignable to type '(x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived'. !!! error TS2322: Types of parameters 'y' and 'y' are incompatible. -!!! error TS2322: Type '(arg2: { foo: number; }) => any' is not assignable to type '(arg2: Base) => Derived'. +!!! error TS2322: Type '(arg2: Base) => Derived' is not assignable to type '(arg2: { foo: number; }) => any'. !!! error TS2322: Types of parameters 'arg2' and 'arg2' are incompatible. !!! error TS2322: Type '{ foo: number; }' is not assignable to type 'Base'. !!! error TS2322: Types of property 'foo' are incompatible. @@ -79,7 +79,7 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme ~~ !!! error TS2322: Type '(x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived' is not assignable to type '(x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U'. !!! error TS2322: Types of parameters 'y' and 'y' are incompatible. -!!! error TS2322: Type '(arg2: Base) => Derived' is not assignable to type '(arg2: { foo: number; }) => any'. +!!! error TS2322: Type '(arg2: { foo: number; }) => any' is not assignable to type '(arg2: Base) => Derived'. !!! error TS2322: Types of parameters 'arg2' and 'arg2' are incompatible. !!! error TS2322: Type 'Base' is not assignable to type '{ foo: number; }'. !!! error TS2322: Types of property 'foo' are incompatible. diff --git a/tests/baselines/reference/assignmentCompatWithCallSignatures5.symbols b/tests/baselines/reference/assignmentCompatWithCallSignatures5.symbols index e26e95b0c0c..e958922c1de 100644 --- a/tests/baselines/reference/assignmentCompatWithCallSignatures5.symbols +++ b/tests/baselines/reference/assignmentCompatWithCallSignatures5.symbols @@ -3,22 +3,22 @@ class Base { foo: string; } >Base : Symbol(Base, Decl(assignmentCompatWithCallSignatures5.ts, 0, 0)) ->foo : Symbol(foo, Decl(assignmentCompatWithCallSignatures5.ts, 2, 12)) +>foo : Symbol(Base.foo, Decl(assignmentCompatWithCallSignatures5.ts, 2, 12)) class Derived extends Base { bar: string; } >Derived : Symbol(Derived, Decl(assignmentCompatWithCallSignatures5.ts, 2, 27)) >Base : Symbol(Base, Decl(assignmentCompatWithCallSignatures5.ts, 0, 0)) ->bar : Symbol(bar, Decl(assignmentCompatWithCallSignatures5.ts, 3, 28)) +>bar : Symbol(Derived.bar, Decl(assignmentCompatWithCallSignatures5.ts, 3, 28)) class Derived2 extends Derived { baz: string; } >Derived2 : Symbol(Derived2, Decl(assignmentCompatWithCallSignatures5.ts, 3, 43)) >Derived : Symbol(Derived, Decl(assignmentCompatWithCallSignatures5.ts, 2, 27)) ->baz : Symbol(baz, Decl(assignmentCompatWithCallSignatures5.ts, 4, 32)) +>baz : Symbol(Derived2.baz, Decl(assignmentCompatWithCallSignatures5.ts, 4, 32)) class OtherDerived extends Base { bing: string; } >OtherDerived : Symbol(OtherDerived, Decl(assignmentCompatWithCallSignatures5.ts, 4, 47)) >Base : Symbol(Base, Decl(assignmentCompatWithCallSignatures5.ts, 0, 0)) ->bing : Symbol(bing, Decl(assignmentCompatWithCallSignatures5.ts, 5, 33)) +>bing : Symbol(OtherDerived.bing, Decl(assignmentCompatWithCallSignatures5.ts, 5, 33)) var a: (x: T) => T[]; >a : Symbol(a, Decl(assignmentCompatWithCallSignatures5.ts, 7, 3)) diff --git a/tests/baselines/reference/assignmentCompatWithCallSignatures6.symbols b/tests/baselines/reference/assignmentCompatWithCallSignatures6.symbols index b7e6956ef65..008ea5481a9 100644 --- a/tests/baselines/reference/assignmentCompatWithCallSignatures6.symbols +++ b/tests/baselines/reference/assignmentCompatWithCallSignatures6.symbols @@ -3,47 +3,47 @@ class Base { foo: string; } >Base : Symbol(Base, Decl(assignmentCompatWithCallSignatures6.ts, 0, 0)) ->foo : Symbol(foo, Decl(assignmentCompatWithCallSignatures6.ts, 2, 12)) +>foo : Symbol(Base.foo, Decl(assignmentCompatWithCallSignatures6.ts, 2, 12)) class Derived extends Base { bar: string; } >Derived : Symbol(Derived, Decl(assignmentCompatWithCallSignatures6.ts, 2, 27)) >Base : Symbol(Base, Decl(assignmentCompatWithCallSignatures6.ts, 0, 0)) ->bar : Symbol(bar, Decl(assignmentCompatWithCallSignatures6.ts, 3, 28)) +>bar : Symbol(Derived.bar, Decl(assignmentCompatWithCallSignatures6.ts, 3, 28)) class Derived2 extends Derived { baz: string; } >Derived2 : Symbol(Derived2, Decl(assignmentCompatWithCallSignatures6.ts, 3, 43)) >Derived : Symbol(Derived, Decl(assignmentCompatWithCallSignatures6.ts, 2, 27)) ->baz : Symbol(baz, Decl(assignmentCompatWithCallSignatures6.ts, 4, 32)) +>baz : Symbol(Derived2.baz, Decl(assignmentCompatWithCallSignatures6.ts, 4, 32)) class OtherDerived extends Base { bing: string; } >OtherDerived : Symbol(OtherDerived, Decl(assignmentCompatWithCallSignatures6.ts, 4, 47)) >Base : Symbol(Base, Decl(assignmentCompatWithCallSignatures6.ts, 0, 0)) ->bing : Symbol(bing, Decl(assignmentCompatWithCallSignatures6.ts, 5, 33)) +>bing : Symbol(OtherDerived.bing, Decl(assignmentCompatWithCallSignatures6.ts, 5, 33)) interface A { >A : Symbol(A, Decl(assignmentCompatWithCallSignatures6.ts, 5, 49)) a: (x: T) => T[]; ->a : Symbol(a, Decl(assignmentCompatWithCallSignatures6.ts, 7, 13)) +>a : Symbol(A.a, Decl(assignmentCompatWithCallSignatures6.ts, 7, 13)) >T : Symbol(T, Decl(assignmentCompatWithCallSignatures6.ts, 8, 8)) >x : Symbol(x, Decl(assignmentCompatWithCallSignatures6.ts, 8, 11)) >T : Symbol(T, Decl(assignmentCompatWithCallSignatures6.ts, 8, 8)) >T : Symbol(T, Decl(assignmentCompatWithCallSignatures6.ts, 8, 8)) a2: (x: T) => string[]; ->a2 : Symbol(a2, Decl(assignmentCompatWithCallSignatures6.ts, 8, 24)) +>a2 : Symbol(A.a2, Decl(assignmentCompatWithCallSignatures6.ts, 8, 24)) >T : Symbol(T, Decl(assignmentCompatWithCallSignatures6.ts, 9, 9)) >x : Symbol(x, Decl(assignmentCompatWithCallSignatures6.ts, 9, 12)) >T : Symbol(T, Decl(assignmentCompatWithCallSignatures6.ts, 9, 9)) a3: (x: T) => void; ->a3 : Symbol(a3, Decl(assignmentCompatWithCallSignatures6.ts, 9, 30)) +>a3 : Symbol(A.a3, Decl(assignmentCompatWithCallSignatures6.ts, 9, 30)) >T : Symbol(T, Decl(assignmentCompatWithCallSignatures6.ts, 10, 9)) >x : Symbol(x, Decl(assignmentCompatWithCallSignatures6.ts, 10, 12)) >T : Symbol(T, Decl(assignmentCompatWithCallSignatures6.ts, 10, 9)) a4: (x: T, y: U) => string; ->a4 : Symbol(a4, Decl(assignmentCompatWithCallSignatures6.ts, 10, 26)) +>a4 : Symbol(A.a4, Decl(assignmentCompatWithCallSignatures6.ts, 10, 26)) >T : Symbol(T, Decl(assignmentCompatWithCallSignatures6.ts, 11, 9)) >U : Symbol(U, Decl(assignmentCompatWithCallSignatures6.ts, 11, 11)) >x : Symbol(x, Decl(assignmentCompatWithCallSignatures6.ts, 11, 14)) @@ -52,7 +52,7 @@ interface A { >U : Symbol(U, Decl(assignmentCompatWithCallSignatures6.ts, 11, 11)) a5: (x: (arg: T) => U) => T; ->a5 : Symbol(a5, Decl(assignmentCompatWithCallSignatures6.ts, 11, 36)) +>a5 : Symbol(A.a5, Decl(assignmentCompatWithCallSignatures6.ts, 11, 36)) >T : Symbol(T, Decl(assignmentCompatWithCallSignatures6.ts, 12, 9)) >U : Symbol(U, Decl(assignmentCompatWithCallSignatures6.ts, 12, 11)) >x : Symbol(x, Decl(assignmentCompatWithCallSignatures6.ts, 12, 14)) @@ -62,7 +62,7 @@ interface A { >T : Symbol(T, Decl(assignmentCompatWithCallSignatures6.ts, 12, 9)) a6: (x: (arg: T) => Derived) => T; ->a6 : Symbol(a6, Decl(assignmentCompatWithCallSignatures6.ts, 12, 37)) +>a6 : Symbol(A.a6, Decl(assignmentCompatWithCallSignatures6.ts, 12, 37)) >T : Symbol(T, Decl(assignmentCompatWithCallSignatures6.ts, 13, 9)) >Base : Symbol(Base, Decl(assignmentCompatWithCallSignatures6.ts, 0, 0)) >x : Symbol(x, Decl(assignmentCompatWithCallSignatures6.ts, 13, 25)) @@ -72,7 +72,7 @@ interface A { >T : Symbol(T, Decl(assignmentCompatWithCallSignatures6.ts, 13, 9)) a11: (x: { foo: T }, y: { foo: T; bar: T }) => Base; ->a11 : Symbol(a11, Decl(assignmentCompatWithCallSignatures6.ts, 13, 54)) +>a11 : Symbol(A.a11, Decl(assignmentCompatWithCallSignatures6.ts, 13, 54)) >T : Symbol(T, Decl(assignmentCompatWithCallSignatures6.ts, 14, 10)) >x : Symbol(x, Decl(assignmentCompatWithCallSignatures6.ts, 14, 13)) >foo : Symbol(foo, Decl(assignmentCompatWithCallSignatures6.ts, 14, 17)) @@ -85,7 +85,7 @@ interface A { >Base : Symbol(Base, Decl(assignmentCompatWithCallSignatures6.ts, 0, 0)) a15: (x: { a: T; b: T }) => T[]; ->a15 : Symbol(a15, Decl(assignmentCompatWithCallSignatures6.ts, 14, 59)) +>a15 : Symbol(A.a15, Decl(assignmentCompatWithCallSignatures6.ts, 14, 59)) >T : Symbol(T, Decl(assignmentCompatWithCallSignatures6.ts, 15, 10)) >x : Symbol(x, Decl(assignmentCompatWithCallSignatures6.ts, 15, 13)) >a : Symbol(a, Decl(assignmentCompatWithCallSignatures6.ts, 15, 17)) @@ -95,7 +95,7 @@ interface A { >T : Symbol(T, Decl(assignmentCompatWithCallSignatures6.ts, 15, 10)) a16: (x: { a: T; b: T }) => T[]; ->a16 : Symbol(a16, Decl(assignmentCompatWithCallSignatures6.ts, 15, 39)) +>a16 : Symbol(A.a16, Decl(assignmentCompatWithCallSignatures6.ts, 15, 39)) >T : Symbol(T, Decl(assignmentCompatWithCallSignatures6.ts, 16, 10)) >Base : Symbol(Base, Decl(assignmentCompatWithCallSignatures6.ts, 0, 0)) >x : Symbol(x, Decl(assignmentCompatWithCallSignatures6.ts, 16, 26)) diff --git a/tests/baselines/reference/assignmentCompatWithCallSignaturesWithRestParameters.errors.txt b/tests/baselines/reference/assignmentCompatWithCallSignaturesWithRestParameters.errors.txt index 8eec8503e70..6b563ef2631 100644 --- a/tests/baselines/reference/assignmentCompatWithCallSignaturesWithRestParameters.errors.txt +++ b/tests/baselines/reference/assignmentCompatWithCallSignaturesWithRestParameters.errors.txt @@ -1,30 +1,30 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignaturesWithRestParameters.ts(13,5): error TS2322: Type '(...args: string[]) => number' is not assignable to type '(...args: number[]) => number'. Types of parameters 'args' and 'args' are incompatible. - Type 'string' is not assignable to type 'number'. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignaturesWithRestParameters.ts(17,5): error TS2322: Type '(x?: string) => number' is not assignable to type '(...args: number[]) => number'. Types of parameters 'x' and 'args' are incompatible. - Type 'string' is not assignable to type 'number'. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignaturesWithRestParameters.ts(26,5): error TS2322: Type '(x: number, ...args: string[]) => number' is not assignable to type '(x: number, ...z: number[]) => number'. Types of parameters 'args' and 'z' are incompatible. - Type 'string' is not assignable to type 'number'. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignaturesWithRestParameters.ts(35,5): error TS2322: Type '(x: number, y?: number, z?: number) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. Types of parameters 'y' and 'y' are incompatible. - Type 'number' is not assignable to type 'string'. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignaturesWithRestParameters.ts(36,5): error TS2322: Type '(x: number, ...z: number[]) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. Types of parameters 'z' and 'y' are incompatible. - Type 'number' is not assignable to type 'string'. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignaturesWithRestParameters.ts(37,5): error TS2322: Type '(x: string, y?: string, z?: string) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignaturesWithRestParameters.ts(41,5): error TS2322: Type '(x?: number, y?: number) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. Types of parameters 'y' and 'y' are incompatible. - Type 'number' is not assignable to type 'string'. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignaturesWithRestParameters.ts(43,5): error TS2322: Type '(x: number, y?: number) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. Types of parameters 'y' and 'y' are incompatible. - Type 'number' is not assignable to type 'string'. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignaturesWithRestParameters.ts(45,5): error TS2322: Type '(x: number, ...args: string[]) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. Types of parameters 'args' and 'z' are incompatible. - Type 'string' is not assignable to type 'number'. + Type 'number' is not assignable to type 'string'. ==== tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignaturesWithRestParameters.ts (9 errors) ==== @@ -44,7 +44,7 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme ~ !!! error TS2322: Type '(...args: string[]) => number' is not assignable to type '(...args: number[]) => number'. !!! error TS2322: Types of parameters 'args' and 'args' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Type 'number' is not assignable to type 'string'. a = (x?: number) => 1; // ok, same number of required params a = (x?: number, y?: number, z?: number) => 1; // ok, same number of required params a = (x: number) => 1; // ok, rest param corresponds to infinite number of params @@ -52,7 +52,7 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme ~ !!! error TS2322: Type '(x?: string) => number' is not assignable to type '(...args: number[]) => number'. !!! error TS2322: Types of parameters 'x' and 'args' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Type 'number' is not assignable to type 'string'. var a2: (x: number, ...z: number[]) => number; @@ -65,7 +65,7 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme ~~ !!! error TS2322: Type '(x: number, ...args: string[]) => number' is not assignable to type '(x: number, ...z: number[]) => number'. !!! error TS2322: Types of parameters 'args' and 'z' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Type 'number' is not assignable to type 'string'. a2 = (x: number, y: number) => 1; // ok, rest param corresponds to infinite number of params a2 = (x: number, y?: number) => 1; // ok, same number of required params @@ -78,17 +78,17 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme ~~ !!! error TS2322: Type '(x: number, y?: number, z?: number) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. !!! error TS2322: Types of parameters 'y' and 'y' are incompatible. -!!! error TS2322: Type 'number' is not assignable to type 'string'. +!!! error TS2322: Type 'string' is not assignable to type 'number'. a3 = (x: number, ...z: number[]) => 1; // error ~~ !!! error TS2322: Type '(x: number, ...z: number[]) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. !!! error TS2322: Types of parameters 'z' and 'y' are incompatible. -!!! error TS2322: Type 'number' is not assignable to type 'string'. +!!! error TS2322: Type 'string' is not assignable to type 'number'. a3 = (x: string, y?: string, z?: string) => 1; // error ~~ !!! error TS2322: Type '(x: string, y?: string, z?: string) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Type 'number' is not assignable to type 'string'. var a4: (x?: number, y?: string, ...z: number[]) => number; a4 = () => 1; // ok, fewer required params @@ -96,16 +96,16 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme ~~ !!! error TS2322: Type '(x?: number, y?: number) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. !!! error TS2322: Types of parameters 'y' and 'y' are incompatible. -!!! error TS2322: Type 'number' is not assignable to type 'string'. +!!! error TS2322: Type 'string' is not assignable to type 'number'. a4 = (x: number) => 1; // ok, all present params match a4 = (x: number, y?: number) => 1; // error, second param has type mismatch ~~ !!! error TS2322: Type '(x: number, y?: number) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. !!! error TS2322: Types of parameters 'y' and 'y' are incompatible. -!!! error TS2322: Type 'number' is not assignable to type 'string'. +!!! error TS2322: Type 'string' is not assignable to type 'number'. a4 = (x?: number, y?: string) => 1; // ok, same number of required params with matching types a4 = (x: number, ...args: string[]) => 1; // error, rest params have type mismatch ~~ !!! error TS2322: Type '(x: number, ...args: string[]) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. !!! error TS2322: Types of parameters 'args' and 'z' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. \ No newline at end of file +!!! error TS2322: Type 'number' is not assignable to type 'string'. \ No newline at end of file diff --git a/tests/baselines/reference/assignmentCompatWithConstructSignatures3.symbols b/tests/baselines/reference/assignmentCompatWithConstructSignatures3.symbols index 4ef01deaea8..0e3b0b38332 100644 --- a/tests/baselines/reference/assignmentCompatWithConstructSignatures3.symbols +++ b/tests/baselines/reference/assignmentCompatWithConstructSignatures3.symbols @@ -3,22 +3,22 @@ class Base { foo: string; } >Base : Symbol(Base, Decl(assignmentCompatWithConstructSignatures3.ts, 0, 0)) ->foo : Symbol(foo, Decl(assignmentCompatWithConstructSignatures3.ts, 2, 12)) +>foo : Symbol(Base.foo, Decl(assignmentCompatWithConstructSignatures3.ts, 2, 12)) class Derived extends Base { bar: string; } >Derived : Symbol(Derived, Decl(assignmentCompatWithConstructSignatures3.ts, 2, 27)) >Base : Symbol(Base, Decl(assignmentCompatWithConstructSignatures3.ts, 0, 0)) ->bar : Symbol(bar, Decl(assignmentCompatWithConstructSignatures3.ts, 3, 28)) +>bar : Symbol(Derived.bar, Decl(assignmentCompatWithConstructSignatures3.ts, 3, 28)) class Derived2 extends Derived { baz: string; } >Derived2 : Symbol(Derived2, Decl(assignmentCompatWithConstructSignatures3.ts, 3, 43)) >Derived : Symbol(Derived, Decl(assignmentCompatWithConstructSignatures3.ts, 2, 27)) ->baz : Symbol(baz, Decl(assignmentCompatWithConstructSignatures3.ts, 4, 32)) +>baz : Symbol(Derived2.baz, Decl(assignmentCompatWithConstructSignatures3.ts, 4, 32)) class OtherDerived extends Base { bing: string; } >OtherDerived : Symbol(OtherDerived, Decl(assignmentCompatWithConstructSignatures3.ts, 4, 47)) >Base : Symbol(Base, Decl(assignmentCompatWithConstructSignatures3.ts, 0, 0)) ->bing : Symbol(bing, Decl(assignmentCompatWithConstructSignatures3.ts, 5, 33)) +>bing : Symbol(OtherDerived.bing, Decl(assignmentCompatWithConstructSignatures3.ts, 5, 33)) var a: new (x: number) => number[]; >a : Symbol(a, Decl(assignmentCompatWithConstructSignatures3.ts, 7, 3)) @@ -189,8 +189,8 @@ var a18: { new (a: Date): Date; >a : Symbol(a, Decl(assignmentCompatWithConstructSignatures3.ts, 40, 13)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) }): any[]; } diff --git a/tests/baselines/reference/assignmentCompatWithConstructSignatures4.errors.txt b/tests/baselines/reference/assignmentCompatWithConstructSignatures4.errors.txt index da9ffba1ee1..3f8111a3244 100644 --- a/tests/baselines/reference/assignmentCompatWithConstructSignatures4.errors.txt +++ b/tests/baselines/reference/assignmentCompatWithConstructSignatures4.errors.txt @@ -1,33 +1,33 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignatures4.ts(52,9): error TS2322: Type 'new (x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U' is not assignable to type 'new (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived'. Types of parameters 'y' and 'y' are incompatible. - Type '(arg2: { foo: number; }) => any' is not assignable to type '(arg2: Base) => Derived'. + Type '(arg2: Base) => Derived' is not assignable to type '(arg2: { foo: number; }) => any'. Types of parameters 'arg2' and 'arg2' are incompatible. Type '{ foo: number; }' is not assignable to type 'Base'. Types of property 'foo' are incompatible. Type 'number' is not assignable to type 'string'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignatures4.ts(53,9): error TS2322: Type 'new (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived' is not assignable to type 'new (x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U'. Types of parameters 'y' and 'y' are incompatible. - Type '(arg2: Base) => Derived' is not assignable to type '(arg2: { foo: number; }) => any'. + Type '(arg2: { foo: number; }) => any' is not assignable to type '(arg2: Base) => Derived'. Types of parameters 'arg2' and 'arg2' are incompatible. Type 'Base' is not assignable to type '{ foo: number; }'. Types of property 'foo' are incompatible. Type 'string' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignatures4.ts(77,9): error TS2322: Type 'new (x: (a: T) => T) => T[]' is not assignable to type '{ new (x: { new (a: number): number; new (a?: number): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean): boolean; }): boolean[]; }'. - Types of parameters 'x' and 'x' are incompatible. - Type '(a: any) => any' is not assignable to type '{ new (a: number): number; new (a?: number): number; }'. - Type '(a: any) => any' provides no match for the signature 'new (a: number): number' -tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignatures4.ts(78,9): error TS2322: Type '{ new (x: { new (a: number): number; new (a?: number): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean): boolean; }): boolean[]; }' is not assignable to type 'new (x: (a: T) => T) => T[]'. Types of parameters 'x' and 'x' are incompatible. Type '{ new (a: number): number; new (a?: number): number; }' is not assignable to type '(a: any) => any'. Type '{ new (a: number): number; new (a?: number): number; }' provides no match for the signature '(a: any): any' -tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignatures4.ts(81,9): error TS2322: Type 'new (x: (a: T) => T) => any[]' is not assignable to type '{ new (x: { new (a: T): T; new (a: T): T; }): any[]; new (x: { new (a: T): T; new (a: T): T; }): any[]; }'. +tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignatures4.ts(78,9): error TS2322: Type '{ new (x: { new (a: number): number; new (a?: number): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean): boolean; }): boolean[]; }' is not assignable to type 'new (x: (a: T) => T) => T[]'. Types of parameters 'x' and 'x' are incompatible. - Type '(a: any) => any' is not assignable to type '{ new (a: T): T; new (a: T): T; }'. - Type '(a: any) => any' provides no match for the signature 'new (a: T): T' -tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignatures4.ts(82,9): error TS2322: Type '{ new (x: { new (a: T): T; new (a: T): T; }): any[]; new (x: { new (a: T): T; new (a: T): T; }): any[]; }' is not assignable to type 'new (x: (a: T) => T) => any[]'. + Type '(a: any) => any' is not assignable to type '{ new (a: number): number; new (a?: number): number; }'. + Type '(a: any) => any' provides no match for the signature 'new (a: number): number' +tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignatures4.ts(81,9): error TS2322: Type 'new (x: (a: T) => T) => any[]' is not assignable to type '{ new (x: { new (a: T): T; new (a: T): T; }): any[]; new (x: { new (a: T): T; new (a: T): T; }): any[]; }'. Types of parameters 'x' and 'x' are incompatible. Type '{ new (a: T): T; new (a: T): T; }' is not assignable to type '(a: any) => any'. Type '{ new (a: T): T; new (a: T): T; }' provides no match for the signature '(a: any): any' +tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignatures4.ts(82,9): error TS2322: Type '{ new (x: { new (a: T): T; new (a: T): T; }): any[]; new (x: { new (a: T): T; new (a: T): T; }): any[]; }' is not assignable to type 'new (x: (a: T) => T) => any[]'. + Types of parameters 'x' and 'x' are incompatible. + Type '(a: any) => any' is not assignable to type '{ new (a: T): T; new (a: T): T; }'. + Type '(a: any) => any' provides no match for the signature 'new (a: T): T' ==== tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignatures4.ts (6 errors) ==== @@ -86,7 +86,7 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme ~~ !!! error TS2322: Type 'new (x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U' is not assignable to type 'new (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived'. !!! error TS2322: Types of parameters 'y' and 'y' are incompatible. -!!! error TS2322: Type '(arg2: { foo: number; }) => any' is not assignable to type '(arg2: Base) => Derived'. +!!! error TS2322: Type '(arg2: Base) => Derived' is not assignable to type '(arg2: { foo: number; }) => any'. !!! error TS2322: Types of parameters 'arg2' and 'arg2' are incompatible. !!! error TS2322: Type '{ foo: number; }' is not assignable to type 'Base'. !!! error TS2322: Types of property 'foo' are incompatible. @@ -95,7 +95,7 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme ~~ !!! error TS2322: Type 'new (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived' is not assignable to type 'new (x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U'. !!! error TS2322: Types of parameters 'y' and 'y' are incompatible. -!!! error TS2322: Type '(arg2: Base) => Derived' is not assignable to type '(arg2: { foo: number; }) => any'. +!!! error TS2322: Type '(arg2: { foo: number; }) => any' is not assignable to type '(arg2: Base) => Derived'. !!! error TS2322: Types of parameters 'arg2' and 'arg2' are incompatible. !!! error TS2322: Type 'Base' is not assignable to type '{ foo: number; }'. !!! error TS2322: Types of property 'foo' are incompatible. @@ -127,28 +127,28 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme ~~~ !!! error TS2322: Type 'new (x: (a: T) => T) => T[]' is not assignable to type '{ new (x: { new (a: number): number; new (a?: number): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean): boolean; }): boolean[]; }'. !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type '(a: any) => any' is not assignable to type '{ new (a: number): number; new (a?: number): number; }'. -!!! error TS2322: Type '(a: any) => any' provides no match for the signature 'new (a: number): number' +!!! error TS2322: Type '{ new (a: number): number; new (a?: number): number; }' is not assignable to type '(a: any) => any'. +!!! error TS2322: Type '{ new (a: number): number; new (a?: number): number; }' provides no match for the signature '(a: any): any' b16 = a16; // error ~~~ !!! error TS2322: Type '{ new (x: { new (a: number): number; new (a?: number): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean): boolean; }): boolean[]; }' is not assignable to type 'new (x: (a: T) => T) => T[]'. !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type '{ new (a: number): number; new (a?: number): number; }' is not assignable to type '(a: any) => any'. -!!! error TS2322: Type '{ new (a: number): number; new (a?: number): number; }' provides no match for the signature '(a: any): any' +!!! error TS2322: Type '(a: any) => any' is not assignable to type '{ new (a: number): number; new (a?: number): number; }'. +!!! error TS2322: Type '(a: any) => any' provides no match for the signature 'new (a: number): number' var b17: new (x: (a: T) => T) => any[]; a17 = b17; // error ~~~ !!! error TS2322: Type 'new (x: (a: T) => T) => any[]' is not assignable to type '{ new (x: { new (a: T): T; new (a: T): T; }): any[]; new (x: { new (a: T): T; new (a: T): T; }): any[]; }'. !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type '(a: any) => any' is not assignable to type '{ new (a: T): T; new (a: T): T; }'. -!!! error TS2322: Type '(a: any) => any' provides no match for the signature 'new (a: T): T' +!!! error TS2322: Type '{ new (a: T): T; new (a: T): T; }' is not assignable to type '(a: any) => any'. +!!! error TS2322: Type '{ new (a: T): T; new (a: T): T; }' provides no match for the signature '(a: any): any' b17 = a17; // error ~~~ !!! error TS2322: Type '{ new (x: { new (a: T): T; new (a: T): T; }): any[]; new (x: { new (a: T): T; new (a: T): T; }): any[]; }' is not assignable to type 'new (x: (a: T) => T) => any[]'. !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type '{ new (a: T): T; new (a: T): T; }' is not assignable to type '(a: any) => any'. -!!! error TS2322: Type '{ new (a: T): T; new (a: T): T; }' provides no match for the signature '(a: any): any' +!!! error TS2322: Type '(a: any) => any' is not assignable to type '{ new (a: T): T; new (a: T): T; }'. +!!! error TS2322: Type '(a: any) => any' provides no match for the signature 'new (a: T): T' } module WithGenericSignaturesInBaseType { diff --git a/tests/baselines/reference/assignmentCompatWithConstructSignatures5.symbols b/tests/baselines/reference/assignmentCompatWithConstructSignatures5.symbols index d2016b247b8..6fa6cc53bcd 100644 --- a/tests/baselines/reference/assignmentCompatWithConstructSignatures5.symbols +++ b/tests/baselines/reference/assignmentCompatWithConstructSignatures5.symbols @@ -3,22 +3,22 @@ class Base { foo: string; } >Base : Symbol(Base, Decl(assignmentCompatWithConstructSignatures5.ts, 0, 0)) ->foo : Symbol(foo, Decl(assignmentCompatWithConstructSignatures5.ts, 2, 12)) +>foo : Symbol(Base.foo, Decl(assignmentCompatWithConstructSignatures5.ts, 2, 12)) class Derived extends Base { bar: string; } >Derived : Symbol(Derived, Decl(assignmentCompatWithConstructSignatures5.ts, 2, 27)) >Base : Symbol(Base, Decl(assignmentCompatWithConstructSignatures5.ts, 0, 0)) ->bar : Symbol(bar, Decl(assignmentCompatWithConstructSignatures5.ts, 3, 28)) +>bar : Symbol(Derived.bar, Decl(assignmentCompatWithConstructSignatures5.ts, 3, 28)) class Derived2 extends Derived { baz: string; } >Derived2 : Symbol(Derived2, Decl(assignmentCompatWithConstructSignatures5.ts, 3, 43)) >Derived : Symbol(Derived, Decl(assignmentCompatWithConstructSignatures5.ts, 2, 27)) ->baz : Symbol(baz, Decl(assignmentCompatWithConstructSignatures5.ts, 4, 32)) +>baz : Symbol(Derived2.baz, Decl(assignmentCompatWithConstructSignatures5.ts, 4, 32)) class OtherDerived extends Base { bing: string; } >OtherDerived : Symbol(OtherDerived, Decl(assignmentCompatWithConstructSignatures5.ts, 4, 47)) >Base : Symbol(Base, Decl(assignmentCompatWithConstructSignatures5.ts, 0, 0)) ->bing : Symbol(bing, Decl(assignmentCompatWithConstructSignatures5.ts, 5, 33)) +>bing : Symbol(OtherDerived.bing, Decl(assignmentCompatWithConstructSignatures5.ts, 5, 33)) var a: new (x: T) => T[]; >a : Symbol(a, Decl(assignmentCompatWithConstructSignatures5.ts, 7, 3)) diff --git a/tests/baselines/reference/assignmentCompatWithConstructSignatures6.symbols b/tests/baselines/reference/assignmentCompatWithConstructSignatures6.symbols index 1850406bfa8..8db5ad09d1d 100644 --- a/tests/baselines/reference/assignmentCompatWithConstructSignatures6.symbols +++ b/tests/baselines/reference/assignmentCompatWithConstructSignatures6.symbols @@ -3,47 +3,47 @@ class Base { foo: string; } >Base : Symbol(Base, Decl(assignmentCompatWithConstructSignatures6.ts, 0, 0)) ->foo : Symbol(foo, Decl(assignmentCompatWithConstructSignatures6.ts, 2, 12)) +>foo : Symbol(Base.foo, Decl(assignmentCompatWithConstructSignatures6.ts, 2, 12)) class Derived extends Base { bar: string; } >Derived : Symbol(Derived, Decl(assignmentCompatWithConstructSignatures6.ts, 2, 27)) >Base : Symbol(Base, Decl(assignmentCompatWithConstructSignatures6.ts, 0, 0)) ->bar : Symbol(bar, Decl(assignmentCompatWithConstructSignatures6.ts, 3, 28)) +>bar : Symbol(Derived.bar, Decl(assignmentCompatWithConstructSignatures6.ts, 3, 28)) class Derived2 extends Derived { baz: string; } >Derived2 : Symbol(Derived2, Decl(assignmentCompatWithConstructSignatures6.ts, 3, 43)) >Derived : Symbol(Derived, Decl(assignmentCompatWithConstructSignatures6.ts, 2, 27)) ->baz : Symbol(baz, Decl(assignmentCompatWithConstructSignatures6.ts, 4, 32)) +>baz : Symbol(Derived2.baz, Decl(assignmentCompatWithConstructSignatures6.ts, 4, 32)) class OtherDerived extends Base { bing: string; } >OtherDerived : Symbol(OtherDerived, Decl(assignmentCompatWithConstructSignatures6.ts, 4, 47)) >Base : Symbol(Base, Decl(assignmentCompatWithConstructSignatures6.ts, 0, 0)) ->bing : Symbol(bing, Decl(assignmentCompatWithConstructSignatures6.ts, 5, 33)) +>bing : Symbol(OtherDerived.bing, Decl(assignmentCompatWithConstructSignatures6.ts, 5, 33)) interface A { >A : Symbol(A, Decl(assignmentCompatWithConstructSignatures6.ts, 5, 49)) a: new (x: T) => T[]; ->a : Symbol(a, Decl(assignmentCompatWithConstructSignatures6.ts, 7, 13)) +>a : Symbol(A.a, Decl(assignmentCompatWithConstructSignatures6.ts, 7, 13)) >T : Symbol(T, Decl(assignmentCompatWithConstructSignatures6.ts, 8, 12)) >x : Symbol(x, Decl(assignmentCompatWithConstructSignatures6.ts, 8, 15)) >T : Symbol(T, Decl(assignmentCompatWithConstructSignatures6.ts, 8, 12)) >T : Symbol(T, Decl(assignmentCompatWithConstructSignatures6.ts, 8, 12)) a2: new (x: T) => string[]; ->a2 : Symbol(a2, Decl(assignmentCompatWithConstructSignatures6.ts, 8, 28)) +>a2 : Symbol(A.a2, Decl(assignmentCompatWithConstructSignatures6.ts, 8, 28)) >T : Symbol(T, Decl(assignmentCompatWithConstructSignatures6.ts, 9, 13)) >x : Symbol(x, Decl(assignmentCompatWithConstructSignatures6.ts, 9, 16)) >T : Symbol(T, Decl(assignmentCompatWithConstructSignatures6.ts, 9, 13)) a3: new (x: T) => void; ->a3 : Symbol(a3, Decl(assignmentCompatWithConstructSignatures6.ts, 9, 34)) +>a3 : Symbol(A.a3, Decl(assignmentCompatWithConstructSignatures6.ts, 9, 34)) >T : Symbol(T, Decl(assignmentCompatWithConstructSignatures6.ts, 10, 13)) >x : Symbol(x, Decl(assignmentCompatWithConstructSignatures6.ts, 10, 16)) >T : Symbol(T, Decl(assignmentCompatWithConstructSignatures6.ts, 10, 13)) a4: new (x: T, y: U) => string; ->a4 : Symbol(a4, Decl(assignmentCompatWithConstructSignatures6.ts, 10, 30)) +>a4 : Symbol(A.a4, Decl(assignmentCompatWithConstructSignatures6.ts, 10, 30)) >T : Symbol(T, Decl(assignmentCompatWithConstructSignatures6.ts, 11, 13)) >U : Symbol(U, Decl(assignmentCompatWithConstructSignatures6.ts, 11, 15)) >x : Symbol(x, Decl(assignmentCompatWithConstructSignatures6.ts, 11, 19)) @@ -52,7 +52,7 @@ interface A { >U : Symbol(U, Decl(assignmentCompatWithConstructSignatures6.ts, 11, 15)) a5: new (x: (arg: T) => U) => T; ->a5 : Symbol(a5, Decl(assignmentCompatWithConstructSignatures6.ts, 11, 41)) +>a5 : Symbol(A.a5, Decl(assignmentCompatWithConstructSignatures6.ts, 11, 41)) >T : Symbol(T, Decl(assignmentCompatWithConstructSignatures6.ts, 12, 13)) >U : Symbol(U, Decl(assignmentCompatWithConstructSignatures6.ts, 12, 15)) >x : Symbol(x, Decl(assignmentCompatWithConstructSignatures6.ts, 12, 19)) @@ -62,7 +62,7 @@ interface A { >T : Symbol(T, Decl(assignmentCompatWithConstructSignatures6.ts, 12, 13)) a6: new (x: (arg: T) => Derived) => T; ->a6 : Symbol(a6, Decl(assignmentCompatWithConstructSignatures6.ts, 12, 42)) +>a6 : Symbol(A.a6, Decl(assignmentCompatWithConstructSignatures6.ts, 12, 42)) >T : Symbol(T, Decl(assignmentCompatWithConstructSignatures6.ts, 13, 13)) >Base : Symbol(Base, Decl(assignmentCompatWithConstructSignatures6.ts, 0, 0)) >x : Symbol(x, Decl(assignmentCompatWithConstructSignatures6.ts, 13, 29)) @@ -72,7 +72,7 @@ interface A { >T : Symbol(T, Decl(assignmentCompatWithConstructSignatures6.ts, 13, 13)) a11: new (x: { foo: T }, y: { foo: T; bar: T }) => Base; ->a11 : Symbol(a11, Decl(assignmentCompatWithConstructSignatures6.ts, 13, 58)) +>a11 : Symbol(A.a11, Decl(assignmentCompatWithConstructSignatures6.ts, 13, 58)) >T : Symbol(T, Decl(assignmentCompatWithConstructSignatures6.ts, 14, 14)) >x : Symbol(x, Decl(assignmentCompatWithConstructSignatures6.ts, 14, 17)) >foo : Symbol(foo, Decl(assignmentCompatWithConstructSignatures6.ts, 14, 21)) @@ -85,7 +85,7 @@ interface A { >Base : Symbol(Base, Decl(assignmentCompatWithConstructSignatures6.ts, 0, 0)) a15: new (x: { a: T; b: T }) => T[]; ->a15 : Symbol(a15, Decl(assignmentCompatWithConstructSignatures6.ts, 14, 63)) +>a15 : Symbol(A.a15, Decl(assignmentCompatWithConstructSignatures6.ts, 14, 63)) >T : Symbol(T, Decl(assignmentCompatWithConstructSignatures6.ts, 15, 14)) >x : Symbol(x, Decl(assignmentCompatWithConstructSignatures6.ts, 15, 17)) >a : Symbol(a, Decl(assignmentCompatWithConstructSignatures6.ts, 15, 21)) @@ -95,7 +95,7 @@ interface A { >T : Symbol(T, Decl(assignmentCompatWithConstructSignatures6.ts, 15, 14)) a16: new (x: { a: T; b: T }) => T[]; ->a16 : Symbol(a16, Decl(assignmentCompatWithConstructSignatures6.ts, 15, 43)) +>a16 : Symbol(A.a16, Decl(assignmentCompatWithConstructSignatures6.ts, 15, 43)) >T : Symbol(T, Decl(assignmentCompatWithConstructSignatures6.ts, 16, 14)) >Base : Symbol(Base, Decl(assignmentCompatWithConstructSignatures6.ts, 0, 0)) >x : Symbol(x, Decl(assignmentCompatWithConstructSignatures6.ts, 16, 30)) diff --git a/tests/baselines/reference/assignmentCompatWithGenericCallSignatures4.symbols b/tests/baselines/reference/assignmentCompatWithGenericCallSignatures4.symbols index bcea8fbbb27..86531a95506 100644 --- a/tests/baselines/reference/assignmentCompatWithGenericCallSignatures4.symbols +++ b/tests/baselines/reference/assignmentCompatWithGenericCallSignatures4.symbols @@ -6,7 +6,7 @@ interface I2 { >T : Symbol(T, Decl(assignmentCompatWithGenericCallSignatures4.ts, 2, 13)) p: T ->p : Symbol(p, Decl(assignmentCompatWithGenericCallSignatures4.ts, 2, 17)) +>p : Symbol(I2.p, Decl(assignmentCompatWithGenericCallSignatures4.ts, 2, 17)) >T : Symbol(T, Decl(assignmentCompatWithGenericCallSignatures4.ts, 2, 13)) } diff --git a/tests/baselines/reference/assignmentCompatWithObjectMembers.symbols b/tests/baselines/reference/assignmentCompatWithObjectMembers.symbols index 181c4db641a..9b84883324d 100644 --- a/tests/baselines/reference/assignmentCompatWithObjectMembers.symbols +++ b/tests/baselines/reference/assignmentCompatWithObjectMembers.symbols @@ -7,11 +7,11 @@ module SimpleTypes { class S { foo: string; } >S : Symbol(S, Decl(assignmentCompatWithObjectMembers.ts, 3, 20)) ->foo : Symbol(foo, Decl(assignmentCompatWithObjectMembers.ts, 4, 13)) +>foo : Symbol(S.foo, Decl(assignmentCompatWithObjectMembers.ts, 4, 13)) class T { foo: string; } >T : Symbol(T, Decl(assignmentCompatWithObjectMembers.ts, 4, 28)) ->foo : Symbol(foo, Decl(assignmentCompatWithObjectMembers.ts, 5, 13)) +>foo : Symbol(T.foo, Decl(assignmentCompatWithObjectMembers.ts, 5, 13)) var s: S; >s : Symbol(s, Decl(assignmentCompatWithObjectMembers.ts, 6, 7)) @@ -23,11 +23,11 @@ module SimpleTypes { interface S2 { foo: string; } >S2 : Symbol(S2, Decl(assignmentCompatWithObjectMembers.ts, 7, 13)) ->foo : Symbol(foo, Decl(assignmentCompatWithObjectMembers.ts, 9, 18)) +>foo : Symbol(S2.foo, Decl(assignmentCompatWithObjectMembers.ts, 9, 18)) interface T2 { foo: string; } >T2 : Symbol(T2, Decl(assignmentCompatWithObjectMembers.ts, 9, 33)) ->foo : Symbol(foo, Decl(assignmentCompatWithObjectMembers.ts, 10, 18)) +>foo : Symbol(T2.foo, Decl(assignmentCompatWithObjectMembers.ts, 10, 18)) var s2: S2; >s2 : Symbol(s2, Decl(assignmentCompatWithObjectMembers.ts, 11, 7)) @@ -135,12 +135,12 @@ module ObjectTypes { class S { foo: S; } >S : Symbol(S, Decl(assignmentCompatWithObjectMembers.ts, 44, 20)) ->foo : Symbol(foo, Decl(assignmentCompatWithObjectMembers.ts, 45, 13)) +>foo : Symbol(S.foo, Decl(assignmentCompatWithObjectMembers.ts, 45, 13)) >S : Symbol(S, Decl(assignmentCompatWithObjectMembers.ts, 44, 20)) class T { foo: T; } >T : Symbol(T, Decl(assignmentCompatWithObjectMembers.ts, 45, 23)) ->foo : Symbol(foo, Decl(assignmentCompatWithObjectMembers.ts, 46, 13)) +>foo : Symbol(T.foo, Decl(assignmentCompatWithObjectMembers.ts, 46, 13)) >T : Symbol(T, Decl(assignmentCompatWithObjectMembers.ts, 45, 23)) var s: S; @@ -153,12 +153,12 @@ module ObjectTypes { interface S2 { foo: S2; } >S2 : Symbol(S2, Decl(assignmentCompatWithObjectMembers.ts, 48, 13)) ->foo : Symbol(foo, Decl(assignmentCompatWithObjectMembers.ts, 50, 18)) +>foo : Symbol(S2.foo, Decl(assignmentCompatWithObjectMembers.ts, 50, 18)) >S2 : Symbol(S2, Decl(assignmentCompatWithObjectMembers.ts, 48, 13)) interface T2 { foo: T2; } >T2 : Symbol(T2, Decl(assignmentCompatWithObjectMembers.ts, 50, 29)) ->foo : Symbol(foo, Decl(assignmentCompatWithObjectMembers.ts, 51, 18)) +>foo : Symbol(T2.foo, Decl(assignmentCompatWithObjectMembers.ts, 51, 18)) >T2 : Symbol(T2, Decl(assignmentCompatWithObjectMembers.ts, 50, 29)) var s2: S2; diff --git a/tests/baselines/reference/assignmentCompatWithObjectMembers2.symbols b/tests/baselines/reference/assignmentCompatWithObjectMembers2.symbols index ab3301c5e93..e0ac6899eaf 100644 --- a/tests/baselines/reference/assignmentCompatWithObjectMembers2.symbols +++ b/tests/baselines/reference/assignmentCompatWithObjectMembers2.symbols @@ -4,11 +4,11 @@ class S { foo: string; } >S : Symbol(S, Decl(assignmentCompatWithObjectMembers2.ts, 0, 0)) ->foo : Symbol(foo, Decl(assignmentCompatWithObjectMembers2.ts, 3, 9)) +>foo : Symbol(S.foo, Decl(assignmentCompatWithObjectMembers2.ts, 3, 9)) class T { foo: string; } >T : Symbol(T, Decl(assignmentCompatWithObjectMembers2.ts, 3, 24)) ->foo : Symbol(foo, Decl(assignmentCompatWithObjectMembers2.ts, 4, 9)) +>foo : Symbol(T.foo, Decl(assignmentCompatWithObjectMembers2.ts, 4, 9)) var s: S; >s : Symbol(s, Decl(assignmentCompatWithObjectMembers2.ts, 5, 3)) @@ -20,13 +20,13 @@ var t: T; interface S2 { foo: string; bar?: string } >S2 : Symbol(S2, Decl(assignmentCompatWithObjectMembers2.ts, 6, 9)) ->foo : Symbol(foo, Decl(assignmentCompatWithObjectMembers2.ts, 8, 14)) ->bar : Symbol(bar, Decl(assignmentCompatWithObjectMembers2.ts, 8, 27)) +>foo : Symbol(S2.foo, Decl(assignmentCompatWithObjectMembers2.ts, 8, 14)) +>bar : Symbol(S2.bar, Decl(assignmentCompatWithObjectMembers2.ts, 8, 27)) interface T2 { foo: string; baz?: string } >T2 : Symbol(T2, Decl(assignmentCompatWithObjectMembers2.ts, 8, 42)) ->foo : Symbol(foo, Decl(assignmentCompatWithObjectMembers2.ts, 9, 14)) ->baz : Symbol(baz, Decl(assignmentCompatWithObjectMembers2.ts, 9, 27)) +>foo : Symbol(T2.foo, Decl(assignmentCompatWithObjectMembers2.ts, 9, 14)) +>baz : Symbol(T2.baz, Decl(assignmentCompatWithObjectMembers2.ts, 9, 27)) var s2: S2; >s2 : Symbol(s2, Decl(assignmentCompatWithObjectMembers2.ts, 10, 3)) diff --git a/tests/baselines/reference/assignmentCompatWithObjectMembers3.symbols b/tests/baselines/reference/assignmentCompatWithObjectMembers3.symbols index 861d38530bb..72151ce6048 100644 --- a/tests/baselines/reference/assignmentCompatWithObjectMembers3.symbols +++ b/tests/baselines/reference/assignmentCompatWithObjectMembers3.symbols @@ -5,12 +5,12 @@ class S implements S2 { foo: string; } >S : Symbol(S, Decl(assignmentCompatWithObjectMembers3.ts, 0, 0)) >S2 : Symbol(S2, Decl(assignmentCompatWithObjectMembers3.ts, 6, 9)) ->foo : Symbol(foo, Decl(assignmentCompatWithObjectMembers3.ts, 3, 23)) +>foo : Symbol(S.foo, Decl(assignmentCompatWithObjectMembers3.ts, 3, 23)) class T implements T2 { foo: string; } >T : Symbol(T, Decl(assignmentCompatWithObjectMembers3.ts, 3, 38)) >T2 : Symbol(T2, Decl(assignmentCompatWithObjectMembers3.ts, 8, 42)) ->foo : Symbol(foo, Decl(assignmentCompatWithObjectMembers3.ts, 4, 23)) +>foo : Symbol(T.foo, Decl(assignmentCompatWithObjectMembers3.ts, 4, 23)) var s: S; >s : Symbol(s, Decl(assignmentCompatWithObjectMembers3.ts, 5, 3)) @@ -22,13 +22,13 @@ var t: T; interface S2 { foo: string; bar?: string } >S2 : Symbol(S2, Decl(assignmentCompatWithObjectMembers3.ts, 6, 9)) ->foo : Symbol(foo, Decl(assignmentCompatWithObjectMembers3.ts, 8, 14)) ->bar : Symbol(bar, Decl(assignmentCompatWithObjectMembers3.ts, 8, 27)) +>foo : Symbol(S2.foo, Decl(assignmentCompatWithObjectMembers3.ts, 8, 14)) +>bar : Symbol(S2.bar, Decl(assignmentCompatWithObjectMembers3.ts, 8, 27)) interface T2 { foo: string; baz?: string } >T2 : Symbol(T2, Decl(assignmentCompatWithObjectMembers3.ts, 8, 42)) ->foo : Symbol(foo, Decl(assignmentCompatWithObjectMembers3.ts, 9, 14)) ->baz : Symbol(baz, Decl(assignmentCompatWithObjectMembers3.ts, 9, 27)) +>foo : Symbol(T2.foo, Decl(assignmentCompatWithObjectMembers3.ts, 9, 14)) +>baz : Symbol(T2.baz, Decl(assignmentCompatWithObjectMembers3.ts, 9, 27)) var s2: S2; >s2 : Symbol(s2, Decl(assignmentCompatWithObjectMembers3.ts, 10, 3)) diff --git a/tests/baselines/reference/assignmentCompatWithObjectMembersNumericNames.symbols b/tests/baselines/reference/assignmentCompatWithObjectMembersNumericNames.symbols index e01bcee21c0..ce633683339 100644 --- a/tests/baselines/reference/assignmentCompatWithObjectMembersNumericNames.symbols +++ b/tests/baselines/reference/assignmentCompatWithObjectMembersNumericNames.symbols @@ -18,11 +18,11 @@ var t: T; interface S2 { 1: string; bar?: string } >S2 : Symbol(S2, Decl(assignmentCompatWithObjectMembersNumericNames.ts, 6, 9)) ->bar : Symbol(bar, Decl(assignmentCompatWithObjectMembersNumericNames.ts, 8, 25)) +>bar : Symbol(S2.bar, Decl(assignmentCompatWithObjectMembersNumericNames.ts, 8, 25)) interface T2 { 1.0: string; baz?: string } >T2 : Symbol(T2, Decl(assignmentCompatWithObjectMembersNumericNames.ts, 8, 40)) ->baz : Symbol(baz, Decl(assignmentCompatWithObjectMembersNumericNames.ts, 9, 27)) +>baz : Symbol(T2.baz, Decl(assignmentCompatWithObjectMembersNumericNames.ts, 9, 27)) var s2: S2; >s2 : Symbol(s2, Decl(assignmentCompatWithObjectMembersNumericNames.ts, 10, 3)) diff --git a/tests/baselines/reference/assignmentCompatWithOverloads.errors.txt b/tests/baselines/reference/assignmentCompatWithOverloads.errors.txt index 3bea0c46716..3773229f516 100644 --- a/tests/baselines/reference/assignmentCompatWithOverloads.errors.txt +++ b/tests/baselines/reference/assignmentCompatWithOverloads.errors.txt @@ -2,12 +2,12 @@ tests/cases/compiler/assignmentCompatWithOverloads.ts(17,1): error TS2322: Type Type 'string' is not assignable to type 'number'. tests/cases/compiler/assignmentCompatWithOverloads.ts(19,1): error TS2322: Type '(x: number) => number' is not assignable to type '(s1: string) => number'. Types of parameters 'x' and 's1' are incompatible. - Type 'number' is not assignable to type 'string'. + Type 'string' is not assignable to type 'number'. tests/cases/compiler/assignmentCompatWithOverloads.ts(21,1): error TS2322: Type '{ (x: string): string; (x: number): number; }' is not assignable to type '(s1: string) => number'. Type 'string' is not assignable to type 'number'. tests/cases/compiler/assignmentCompatWithOverloads.ts(30,1): error TS2322: Type 'typeof C' is not assignable to type 'new (x: number) => void'. Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Type 'number' is not assignable to type 'string'. ==== tests/cases/compiler/assignmentCompatWithOverloads.ts (4 errors) ==== @@ -36,7 +36,7 @@ tests/cases/compiler/assignmentCompatWithOverloads.ts(30,1): error TS2322: Type ~ !!! error TS2322: Type '(x: number) => number' is not assignable to type '(s1: string) => number'. !!! error TS2322: Types of parameters 'x' and 's1' are incompatible. -!!! error TS2322: Type 'number' is not assignable to type 'string'. +!!! error TS2322: Type 'string' is not assignable to type 'number'. g = f4; // Error ~ @@ -54,4 +54,4 @@ tests/cases/compiler/assignmentCompatWithOverloads.ts(30,1): error TS2322: Type ~ !!! error TS2322: Type 'typeof C' is not assignable to type 'new (x: number) => void'. !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. \ No newline at end of file +!!! error TS2322: Type 'number' is not assignable to type 'string'. \ No newline at end of file diff --git a/tests/baselines/reference/assignmentCompatability1.symbols b/tests/baselines/reference/assignmentCompatability1.symbols index 07d3cf4c029..15da482c203 100644 --- a/tests/baselines/reference/assignmentCompatability1.symbols +++ b/tests/baselines/reference/assignmentCompatability1.symbols @@ -6,9 +6,9 @@ module __test1__ { >interfaceWithPublicAndOptional : Symbol(interfaceWithPublicAndOptional, Decl(assignmentCompatability1.ts, 0, 18)) >T : Symbol(T, Decl(assignmentCompatability1.ts, 1, 52)) >U : Symbol(U, Decl(assignmentCompatability1.ts, 1, 54)) ->one : Symbol(one, Decl(assignmentCompatability1.ts, 1, 58)) +>one : Symbol(interfaceWithPublicAndOptional.one, Decl(assignmentCompatability1.ts, 1, 58)) >T : Symbol(T, Decl(assignmentCompatability1.ts, 1, 52)) ->two : Symbol(two, Decl(assignmentCompatability1.ts, 1, 66)) +>two : Symbol(interfaceWithPublicAndOptional.two, Decl(assignmentCompatability1.ts, 1, 66)) >U : Symbol(U, Decl(assignmentCompatability1.ts, 1, 54)) >obj4 : Symbol(obj4, Decl(assignmentCompatability1.ts, 1, 83)) >interfaceWithPublicAndOptional : Symbol(interfaceWithPublicAndOptional, Decl(assignmentCompatability1.ts, 0, 18)) diff --git a/tests/baselines/reference/assignmentCompatability2.symbols b/tests/baselines/reference/assignmentCompatability2.symbols index 1ed6dd3c639..55ed25fb4ad 100644 --- a/tests/baselines/reference/assignmentCompatability2.symbols +++ b/tests/baselines/reference/assignmentCompatability2.symbols @@ -6,9 +6,9 @@ module __test1__ { >interfaceWithPublicAndOptional : Symbol(interfaceWithPublicAndOptional, Decl(assignmentCompatability2.ts, 0, 18)) >T : Symbol(T, Decl(assignmentCompatability2.ts, 1, 52)) >U : Symbol(U, Decl(assignmentCompatability2.ts, 1, 54)) ->one : Symbol(one, Decl(assignmentCompatability2.ts, 1, 58)) +>one : Symbol(interfaceWithPublicAndOptional.one, Decl(assignmentCompatability2.ts, 1, 58)) >T : Symbol(T, Decl(assignmentCompatability2.ts, 1, 52)) ->two : Symbol(two, Decl(assignmentCompatability2.ts, 1, 66)) +>two : Symbol(interfaceWithPublicAndOptional.two, Decl(assignmentCompatability2.ts, 1, 66)) >U : Symbol(U, Decl(assignmentCompatability2.ts, 1, 54)) >obj4 : Symbol(obj4, Decl(assignmentCompatability2.ts, 1, 83)) >interfaceWithPublicAndOptional : Symbol(interfaceWithPublicAndOptional, Decl(assignmentCompatability2.ts, 0, 18)) diff --git a/tests/baselines/reference/assignmentCompatability3.symbols b/tests/baselines/reference/assignmentCompatability3.symbols index c31d69e2f12..49fccff55f0 100644 --- a/tests/baselines/reference/assignmentCompatability3.symbols +++ b/tests/baselines/reference/assignmentCompatability3.symbols @@ -6,9 +6,9 @@ module __test1__ { >interfaceWithPublicAndOptional : Symbol(interfaceWithPublicAndOptional, Decl(assignmentCompatability3.ts, 0, 18)) >T : Symbol(T, Decl(assignmentCompatability3.ts, 1, 52)) >U : Symbol(U, Decl(assignmentCompatability3.ts, 1, 54)) ->one : Symbol(one, Decl(assignmentCompatability3.ts, 1, 58)) +>one : Symbol(interfaceWithPublicAndOptional.one, Decl(assignmentCompatability3.ts, 1, 58)) >T : Symbol(T, Decl(assignmentCompatability3.ts, 1, 52)) ->two : Symbol(two, Decl(assignmentCompatability3.ts, 1, 66)) +>two : Symbol(interfaceWithPublicAndOptional.two, Decl(assignmentCompatability3.ts, 1, 66)) >U : Symbol(U, Decl(assignmentCompatability3.ts, 1, 54)) >obj4 : Symbol(obj4, Decl(assignmentCompatability3.ts, 1, 83)) >interfaceWithPublicAndOptional : Symbol(interfaceWithPublicAndOptional, Decl(assignmentCompatability3.ts, 0, 18)) diff --git a/tests/baselines/reference/assignmentCompatability36.symbols b/tests/baselines/reference/assignmentCompatability36.symbols index 4b4b7d75a51..09ebfb67ed8 100644 --- a/tests/baselines/reference/assignmentCompatability36.symbols +++ b/tests/baselines/reference/assignmentCompatability36.symbols @@ -6,9 +6,9 @@ module __test1__ { >interfaceWithPublicAndOptional : Symbol(interfaceWithPublicAndOptional, Decl(assignmentCompatability36.ts, 0, 18)) >T : Symbol(T, Decl(assignmentCompatability36.ts, 1, 52)) >U : Symbol(U, Decl(assignmentCompatability36.ts, 1, 54)) ->one : Symbol(one, Decl(assignmentCompatability36.ts, 1, 58)) +>one : Symbol(interfaceWithPublicAndOptional.one, Decl(assignmentCompatability36.ts, 1, 58)) >T : Symbol(T, Decl(assignmentCompatability36.ts, 1, 52)) ->two : Symbol(two, Decl(assignmentCompatability36.ts, 1, 66)) +>two : Symbol(interfaceWithPublicAndOptional.two, Decl(assignmentCompatability36.ts, 1, 66)) >U : Symbol(U, Decl(assignmentCompatability36.ts, 1, 54)) >obj4 : Symbol(obj4, Decl(assignmentCompatability36.ts, 1, 83)) >interfaceWithPublicAndOptional : Symbol(interfaceWithPublicAndOptional, Decl(assignmentCompatability36.ts, 0, 18)) diff --git a/tests/baselines/reference/assignmentCompatability4.symbols b/tests/baselines/reference/assignmentCompatability4.symbols index fe5e4a32dee..cac51957fc8 100644 --- a/tests/baselines/reference/assignmentCompatability4.symbols +++ b/tests/baselines/reference/assignmentCompatability4.symbols @@ -6,9 +6,9 @@ module __test1__ { >interfaceWithPublicAndOptional : Symbol(interfaceWithPublicAndOptional, Decl(assignmentCompatability4.ts, 0, 18)) >T : Symbol(T, Decl(assignmentCompatability4.ts, 1, 52)) >U : Symbol(U, Decl(assignmentCompatability4.ts, 1, 54)) ->one : Symbol(one, Decl(assignmentCompatability4.ts, 1, 58)) +>one : Symbol(interfaceWithPublicAndOptional.one, Decl(assignmentCompatability4.ts, 1, 58)) >T : Symbol(T, Decl(assignmentCompatability4.ts, 1, 52)) ->two : Symbol(two, Decl(assignmentCompatability4.ts, 1, 66)) +>two : Symbol(interfaceWithPublicAndOptional.two, Decl(assignmentCompatability4.ts, 1, 66)) >U : Symbol(U, Decl(assignmentCompatability4.ts, 1, 54)) >obj4 : Symbol(obj4, Decl(assignmentCompatability4.ts, 1, 83)) >interfaceWithPublicAndOptional : Symbol(interfaceWithPublicAndOptional, Decl(assignmentCompatability4.ts, 0, 18)) diff --git a/tests/baselines/reference/assignmentCompatability5.symbols b/tests/baselines/reference/assignmentCompatability5.symbols index 15885d07892..9cbfd0dbd8b 100644 --- a/tests/baselines/reference/assignmentCompatability5.symbols +++ b/tests/baselines/reference/assignmentCompatability5.symbols @@ -6,9 +6,9 @@ module __test1__ { >interfaceWithPublicAndOptional : Symbol(interfaceWithPublicAndOptional, Decl(assignmentCompatability5.ts, 0, 18)) >T : Symbol(T, Decl(assignmentCompatability5.ts, 1, 52)) >U : Symbol(U, Decl(assignmentCompatability5.ts, 1, 54)) ->one : Symbol(one, Decl(assignmentCompatability5.ts, 1, 58)) +>one : Symbol(interfaceWithPublicAndOptional.one, Decl(assignmentCompatability5.ts, 1, 58)) >T : Symbol(T, Decl(assignmentCompatability5.ts, 1, 52)) ->two : Symbol(two, Decl(assignmentCompatability5.ts, 1, 66)) +>two : Symbol(interfaceWithPublicAndOptional.two, Decl(assignmentCompatability5.ts, 1, 66)) >U : Symbol(U, Decl(assignmentCompatability5.ts, 1, 54)) >obj4 : Symbol(obj4, Decl(assignmentCompatability5.ts, 1, 83)) >interfaceWithPublicAndOptional : Symbol(interfaceWithPublicAndOptional, Decl(assignmentCompatability5.ts, 0, 18)) @@ -24,7 +24,7 @@ module __test2__ { export interface interfaceOne { one: T; }; var obj1: interfaceOne = { one: 1 };; >interfaceOne : Symbol(interfaceOne, Decl(assignmentCompatability5.ts, 4, 18)) >T : Symbol(T, Decl(assignmentCompatability5.ts, 5, 52)) ->one : Symbol(one, Decl(assignmentCompatability5.ts, 5, 56)) +>one : Symbol(interfaceOne.one, Decl(assignmentCompatability5.ts, 5, 56)) >T : Symbol(T, Decl(assignmentCompatability5.ts, 5, 52)) >obj1 : Symbol(obj1, Decl(assignmentCompatability5.ts, 5, 86)) >interfaceOne : Symbol(interfaceOne, Decl(assignmentCompatability5.ts, 4, 18)) diff --git a/tests/baselines/reference/assignmentCompatability6.symbols b/tests/baselines/reference/assignmentCompatability6.symbols index 4ddacd5cd8c..713ca092653 100644 --- a/tests/baselines/reference/assignmentCompatability6.symbols +++ b/tests/baselines/reference/assignmentCompatability6.symbols @@ -6,9 +6,9 @@ module __test1__ { >interfaceWithPublicAndOptional : Symbol(interfaceWithPublicAndOptional, Decl(assignmentCompatability6.ts, 0, 18)) >T : Symbol(T, Decl(assignmentCompatability6.ts, 1, 52)) >U : Symbol(U, Decl(assignmentCompatability6.ts, 1, 54)) ->one : Symbol(one, Decl(assignmentCompatability6.ts, 1, 58)) +>one : Symbol(interfaceWithPublicAndOptional.one, Decl(assignmentCompatability6.ts, 1, 58)) >T : Symbol(T, Decl(assignmentCompatability6.ts, 1, 52)) ->two : Symbol(two, Decl(assignmentCompatability6.ts, 1, 66)) +>two : Symbol(interfaceWithPublicAndOptional.two, Decl(assignmentCompatability6.ts, 1, 66)) >U : Symbol(U, Decl(assignmentCompatability6.ts, 1, 54)) >obj4 : Symbol(obj4, Decl(assignmentCompatability6.ts, 1, 83)) >interfaceWithPublicAndOptional : Symbol(interfaceWithPublicAndOptional, Decl(assignmentCompatability6.ts, 0, 18)) @@ -24,7 +24,7 @@ module __test2__ { export interface interfaceWithOptional { one?: T; }; var obj3: interfaceWithOptional = { };; >interfaceWithOptional : Symbol(interfaceWithOptional, Decl(assignmentCompatability6.ts, 4, 18)) >T : Symbol(T, Decl(assignmentCompatability6.ts, 5, 52)) ->one : Symbol(one, Decl(assignmentCompatability6.ts, 5, 56)) +>one : Symbol(interfaceWithOptional.one, Decl(assignmentCompatability6.ts, 5, 56)) >T : Symbol(T, Decl(assignmentCompatability6.ts, 5, 52)) >obj3 : Symbol(obj3, Decl(assignmentCompatability6.ts, 5, 86)) >interfaceWithOptional : Symbol(interfaceWithOptional, Decl(assignmentCompatability6.ts, 4, 18)) diff --git a/tests/baselines/reference/assignmentCompatability7.symbols b/tests/baselines/reference/assignmentCompatability7.symbols index 32a5be9f87f..ae66ee04584 100644 --- a/tests/baselines/reference/assignmentCompatability7.symbols +++ b/tests/baselines/reference/assignmentCompatability7.symbols @@ -6,9 +6,9 @@ module __test1__ { >interfaceWithPublicAndOptional : Symbol(interfaceWithPublicAndOptional, Decl(assignmentCompatability7.ts, 0, 18)) >T : Symbol(T, Decl(assignmentCompatability7.ts, 1, 52)) >U : Symbol(U, Decl(assignmentCompatability7.ts, 1, 54)) ->one : Symbol(one, Decl(assignmentCompatability7.ts, 1, 58)) +>one : Symbol(interfaceWithPublicAndOptional.one, Decl(assignmentCompatability7.ts, 1, 58)) >T : Symbol(T, Decl(assignmentCompatability7.ts, 1, 52)) ->two : Symbol(two, Decl(assignmentCompatability7.ts, 1, 66)) +>two : Symbol(interfaceWithPublicAndOptional.two, Decl(assignmentCompatability7.ts, 1, 66)) >U : Symbol(U, Decl(assignmentCompatability7.ts, 1, 54)) >obj4 : Symbol(obj4, Decl(assignmentCompatability7.ts, 1, 83)) >interfaceWithPublicAndOptional : Symbol(interfaceWithPublicAndOptional, Decl(assignmentCompatability7.ts, 0, 18)) @@ -25,9 +25,9 @@ module __test2__ { >interfaceWithPublicAndOptional : Symbol(interfaceWithPublicAndOptional, Decl(assignmentCompatability7.ts, 4, 18)) >T : Symbol(T, Decl(assignmentCompatability7.ts, 5, 52)) >U : Symbol(U, Decl(assignmentCompatability7.ts, 5, 54)) ->one : Symbol(one, Decl(assignmentCompatability7.ts, 5, 58)) +>one : Symbol(interfaceWithPublicAndOptional.one, Decl(assignmentCompatability7.ts, 5, 58)) >T : Symbol(T, Decl(assignmentCompatability7.ts, 5, 52)) ->two : Symbol(two, Decl(assignmentCompatability7.ts, 5, 66)) +>two : Symbol(interfaceWithPublicAndOptional.two, Decl(assignmentCompatability7.ts, 5, 66)) >U : Symbol(U, Decl(assignmentCompatability7.ts, 5, 54)) >obj4 : Symbol(obj4, Decl(assignmentCompatability7.ts, 5, 83)) >interfaceWithPublicAndOptional : Symbol(interfaceWithPublicAndOptional, Decl(assignmentCompatability7.ts, 4, 18)) diff --git a/tests/baselines/reference/assignmentCompatability8.symbols b/tests/baselines/reference/assignmentCompatability8.symbols index ba30e4fee94..78b74f4ba62 100644 --- a/tests/baselines/reference/assignmentCompatability8.symbols +++ b/tests/baselines/reference/assignmentCompatability8.symbols @@ -6,9 +6,9 @@ module __test1__ { >interfaceWithPublicAndOptional : Symbol(interfaceWithPublicAndOptional, Decl(assignmentCompatability8.ts, 0, 18)) >T : Symbol(T, Decl(assignmentCompatability8.ts, 1, 52)) >U : Symbol(U, Decl(assignmentCompatability8.ts, 1, 54)) ->one : Symbol(one, Decl(assignmentCompatability8.ts, 1, 58)) +>one : Symbol(interfaceWithPublicAndOptional.one, Decl(assignmentCompatability8.ts, 1, 58)) >T : Symbol(T, Decl(assignmentCompatability8.ts, 1, 52)) ->two : Symbol(two, Decl(assignmentCompatability8.ts, 1, 66)) +>two : Symbol(interfaceWithPublicAndOptional.two, Decl(assignmentCompatability8.ts, 1, 66)) >U : Symbol(U, Decl(assignmentCompatability8.ts, 1, 54)) >obj4 : Symbol(obj4, Decl(assignmentCompatability8.ts, 1, 83)) >interfaceWithPublicAndOptional : Symbol(interfaceWithPublicAndOptional, Decl(assignmentCompatability8.ts, 0, 18)) @@ -24,7 +24,7 @@ module __test2__ { export class classWithPublic { constructor(public one: T) {} } var x1 = new classWithPublic(1);; >classWithPublic : Symbol(classWithPublic, Decl(assignmentCompatability8.ts, 4, 18)) >T : Symbol(T, Decl(assignmentCompatability8.ts, 5, 44)) ->one : Symbol(one, Decl(assignmentCompatability8.ts, 5, 61)) +>one : Symbol(classWithPublic.one, Decl(assignmentCompatability8.ts, 5, 61)) >T : Symbol(T, Decl(assignmentCompatability8.ts, 5, 44)) >x1 : Symbol(x1, Decl(assignmentCompatability8.ts, 5, 107)) >classWithPublic : Symbol(classWithPublic, Decl(assignmentCompatability8.ts, 4, 18)) diff --git a/tests/baselines/reference/assignmentCompatability9.symbols b/tests/baselines/reference/assignmentCompatability9.symbols index 7c49da7fea2..3799e8beed0 100644 --- a/tests/baselines/reference/assignmentCompatability9.symbols +++ b/tests/baselines/reference/assignmentCompatability9.symbols @@ -6,9 +6,9 @@ module __test1__ { >interfaceWithPublicAndOptional : Symbol(interfaceWithPublicAndOptional, Decl(assignmentCompatability9.ts, 0, 18)) >T : Symbol(T, Decl(assignmentCompatability9.ts, 1, 52)) >U : Symbol(U, Decl(assignmentCompatability9.ts, 1, 54)) ->one : Symbol(one, Decl(assignmentCompatability9.ts, 1, 58)) +>one : Symbol(interfaceWithPublicAndOptional.one, Decl(assignmentCompatability9.ts, 1, 58)) >T : Symbol(T, Decl(assignmentCompatability9.ts, 1, 52)) ->two : Symbol(two, Decl(assignmentCompatability9.ts, 1, 66)) +>two : Symbol(interfaceWithPublicAndOptional.two, Decl(assignmentCompatability9.ts, 1, 66)) >U : Symbol(U, Decl(assignmentCompatability9.ts, 1, 54)) >obj4 : Symbol(obj4, Decl(assignmentCompatability9.ts, 1, 83)) >interfaceWithPublicAndOptional : Symbol(interfaceWithPublicAndOptional, Decl(assignmentCompatability9.ts, 0, 18)) @@ -24,7 +24,7 @@ module __test2__ { export class classWithOptional { constructor(public one?: T) {} } var x3 = new classWithOptional();; >classWithOptional : Symbol(classWithOptional, Decl(assignmentCompatability9.ts, 4, 18)) >T : Symbol(T, Decl(assignmentCompatability9.ts, 5, 44)) ->one : Symbol(one, Decl(assignmentCompatability9.ts, 5, 61)) +>one : Symbol(classWithOptional.one, Decl(assignmentCompatability9.ts, 5, 61)) >T : Symbol(T, Decl(assignmentCompatability9.ts, 5, 44)) >x3 : Symbol(x3, Decl(assignmentCompatability9.ts, 5, 107)) >classWithOptional : Symbol(classWithOptional, Decl(assignmentCompatability9.ts, 4, 18)) diff --git a/tests/baselines/reference/assignmentNonObjectTypeConstraints.symbols b/tests/baselines/reference/assignmentNonObjectTypeConstraints.symbols index d8bff5df5f2..52596124e42 100644 --- a/tests/baselines/reference/assignmentNonObjectTypeConstraints.symbols +++ b/tests/baselines/reference/assignmentNonObjectTypeConstraints.symbols @@ -27,11 +27,11 @@ foo(E.A); class A { a } >A : Symbol(A, Decl(assignmentNonObjectTypeConstraints.ts, 7, 9)) ->a : Symbol(a, Decl(assignmentNonObjectTypeConstraints.ts, 9, 9)) +>a : Symbol(A.a, Decl(assignmentNonObjectTypeConstraints.ts, 9, 9)) class B { b } >B : Symbol(B, Decl(assignmentNonObjectTypeConstraints.ts, 9, 13)) ->b : Symbol(b, Decl(assignmentNonObjectTypeConstraints.ts, 10, 9)) +>b : Symbol(B.b, Decl(assignmentNonObjectTypeConstraints.ts, 10, 9)) function bar(x: T) { >bar : Symbol(bar, Decl(assignmentNonObjectTypeConstraints.ts, 10, 13)) diff --git a/tests/baselines/reference/assignmentToObjectAndFunction.errors.txt b/tests/baselines/reference/assignmentToObjectAndFunction.errors.txt index 2e85ee101f5..204135cd004 100644 --- a/tests/baselines/reference/assignmentToObjectAndFunction.errors.txt +++ b/tests/baselines/reference/assignmentToObjectAndFunction.errors.txt @@ -5,7 +5,7 @@ tests/cases/compiler/assignmentToObjectAndFunction.ts(8,5): error TS2322: Type ' Property 'apply' is missing in type '{}'. tests/cases/compiler/assignmentToObjectAndFunction.ts(29,5): error TS2322: Type 'typeof bad' is not assignable to type 'Function'. Types of property 'apply' are incompatible. - Type 'number' is not assignable to type '(thisArg: any, argArray?: any) => any'. + Type 'number' is not assignable to type '(this: Function, thisArg: any, argArray?: any) => any'. ==== tests/cases/compiler/assignmentToObjectAndFunction.ts (3 errors) ==== @@ -48,4 +48,4 @@ tests/cases/compiler/assignmentToObjectAndFunction.ts(29,5): error TS2322: Type ~~~~~~~~~~ !!! error TS2322: Type 'typeof bad' is not assignable to type 'Function'. !!! error TS2322: Types of property 'apply' are incompatible. -!!! error TS2322: Type 'number' is not assignable to type '(thisArg: any, argArray?: any) => any'. \ No newline at end of file +!!! error TS2322: Type 'number' is not assignable to type '(this: Function, thisArg: any, argArray?: any) => any'. \ No newline at end of file diff --git a/tests/baselines/reference/assignmentTypeNarrowing.js b/tests/baselines/reference/assignmentTypeNarrowing.js new file mode 100644 index 00000000000..7c10dde65cc --- /dev/null +++ b/tests/baselines/reference/assignmentTypeNarrowing.js @@ -0,0 +1,53 @@ +//// [assignmentTypeNarrowing.ts] +let x: string | number | boolean | RegExp; + +x = ""; +x; // string + +[x] = [true]; +x; // boolean + +[x = ""] = [1]; +x; // string | number + +({x} = {x: true}); +x; // boolean + +({y: x} = {y: 1}); +x; // number + +({x = ""} = {x: true}); +x; // string | boolean + +({y: x = /a/} = {y: 1}); +x; // number | RegExp + +let a: string[]; + +for (x of a) { + x; // string +} + + +//// [assignmentTypeNarrowing.js] +var x; +x = ""; +x; // string +x = [true][0]; +x; // boolean +_a = [1][0], x = _a === void 0 ? "" : _a; +x; // string | number +(_b = { x: true }, x = _b.x, _b); +x; // boolean +(_c = { y: 1 }, x = _c.y, _c); +x; // number +(_d = { x: true }, _e = _d.x, x = _e === void 0 ? "" : _e, _d); +x; // string | boolean +(_f = { y: 1 }, _g = _f.y, x = _g === void 0 ? /a/ : _g, _f); +x; // number | RegExp +var a; +for (var _i = 0, a_1 = a; _i < a_1.length; _i++) { + x = a_1[_i]; + x; // string +} +var _a, _b, _c, _d, _e, _f, _g; diff --git a/tests/baselines/reference/assignmentTypeNarrowing.symbols b/tests/baselines/reference/assignmentTypeNarrowing.symbols new file mode 100644 index 00000000000..7d638d6a76b --- /dev/null +++ b/tests/baselines/reference/assignmentTypeNarrowing.symbols @@ -0,0 +1,64 @@ +=== tests/cases/conformance/expressions/assignmentOperator/assignmentTypeNarrowing.ts === +let x: string | number | boolean | RegExp; +>x : Symbol(x, Decl(assignmentTypeNarrowing.ts, 0, 3)) +>RegExp : Symbol(RegExp, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + +x = ""; +>x : Symbol(x, Decl(assignmentTypeNarrowing.ts, 0, 3)) + +x; // string +>x : Symbol(x, Decl(assignmentTypeNarrowing.ts, 0, 3)) + +[x] = [true]; +>x : Symbol(x, Decl(assignmentTypeNarrowing.ts, 0, 3)) + +x; // boolean +>x : Symbol(x, Decl(assignmentTypeNarrowing.ts, 0, 3)) + +[x = ""] = [1]; +>x : Symbol(x, Decl(assignmentTypeNarrowing.ts, 0, 3)) + +x; // string | number +>x : Symbol(x, Decl(assignmentTypeNarrowing.ts, 0, 3)) + +({x} = {x: true}); +>x : Symbol(x, Decl(assignmentTypeNarrowing.ts, 11, 2)) +>x : Symbol(x, Decl(assignmentTypeNarrowing.ts, 11, 8)) + +x; // boolean +>x : Symbol(x, Decl(assignmentTypeNarrowing.ts, 0, 3)) + +({y: x} = {y: 1}); +>y : Symbol(y, Decl(assignmentTypeNarrowing.ts, 14, 2)) +>x : Symbol(x, Decl(assignmentTypeNarrowing.ts, 0, 3)) +>y : Symbol(y, Decl(assignmentTypeNarrowing.ts, 14, 11)) + +x; // number +>x : Symbol(x, Decl(assignmentTypeNarrowing.ts, 0, 3)) + +({x = ""} = {x: true}); +>x : Symbol(x, Decl(assignmentTypeNarrowing.ts, 17, 2)) +>x : Symbol(x, Decl(assignmentTypeNarrowing.ts, 17, 13)) + +x; // string | boolean +>x : Symbol(x, Decl(assignmentTypeNarrowing.ts, 0, 3)) + +({y: x = /a/} = {y: 1}); +>y : Symbol(y, Decl(assignmentTypeNarrowing.ts, 20, 2)) +>x : Symbol(x, Decl(assignmentTypeNarrowing.ts, 0, 3)) +>y : Symbol(y, Decl(assignmentTypeNarrowing.ts, 20, 17)) + +x; // number | RegExp +>x : Symbol(x, Decl(assignmentTypeNarrowing.ts, 0, 3)) + +let a: string[]; +>a : Symbol(a, Decl(assignmentTypeNarrowing.ts, 23, 3)) + +for (x of a) { +>x : Symbol(x, Decl(assignmentTypeNarrowing.ts, 0, 3)) +>a : Symbol(a, Decl(assignmentTypeNarrowing.ts, 23, 3)) + + x; // string +>x : Symbol(x, Decl(assignmentTypeNarrowing.ts, 0, 3)) +} + diff --git a/tests/baselines/reference/assignmentTypeNarrowing.types b/tests/baselines/reference/assignmentTypeNarrowing.types new file mode 100644 index 00000000000..be99a31501d --- /dev/null +++ b/tests/baselines/reference/assignmentTypeNarrowing.types @@ -0,0 +1,98 @@ +=== tests/cases/conformance/expressions/assignmentOperator/assignmentTypeNarrowing.ts === +let x: string | number | boolean | RegExp; +>x : string | number | boolean | RegExp +>RegExp : RegExp + +x = ""; +>x = "" : string +>x : string | number | boolean | RegExp +>"" : string + +x; // string +>x : string + +[x] = [true]; +>[x] = [true] : [boolean] +>[x] : [string | number | boolean | RegExp] +>x : string | number | boolean | RegExp +>[true] : [boolean] +>true : boolean + +x; // boolean +>x : boolean + +[x = ""] = [1]; +>[x = ""] = [1] : [number] +>[x = ""] : [string] +>x = "" : string +>x : string | number | boolean | RegExp +>"" : string +>[1] : [number] +>1 : number + +x; // string | number +>x : string | number + +({x} = {x: true}); +>({x} = {x: true}) : { x: boolean; } +>{x} = {x: true} : { x: boolean; } +>{x} : { x: string | number | boolean | RegExp; } +>x : string | number | boolean | RegExp +>{x: true} : { x: boolean; } +>x : boolean +>true : boolean + +x; // boolean +>x : boolean + +({y: x} = {y: 1}); +>({y: x} = {y: 1}) : { y: number; } +>{y: x} = {y: 1} : { y: number; } +>{y: x} : { y: string | number | boolean | RegExp; } +>y : string | number | boolean | RegExp +>x : string | number | boolean | RegExp +>{y: 1} : { y: number; } +>y : number +>1 : number + +x; // number +>x : number + +({x = ""} = {x: true}); +>({x = ""} = {x: true}) : { x?: boolean; } +>{x = ""} = {x: true} : { x?: boolean; } +>{x = ""} : { x?: string | number | boolean | RegExp; } +>x : string | number | boolean | RegExp +>{x: true} : { x?: boolean; } +>x : boolean +>true : boolean + +x; // string | boolean +>x : string | boolean + +({y: x = /a/} = {y: 1}); +>({y: x = /a/} = {y: 1}) : { y?: number; } +>{y: x = /a/} = {y: 1} : { y?: number; } +>{y: x = /a/} : { y?: RegExp; } +>y : RegExp +>x = /a/ : RegExp +>x : string | number | boolean | RegExp +>/a/ : RegExp +>{y: 1} : { y?: number; } +>y : number +>1 : number + +x; // number | RegExp +>x : number | RegExp + +let a: string[]; +>a : string[] + +for (x of a) { +>x : string | number | boolean | RegExp +>a : string[] + + x; // string +>x : string +} + diff --git a/tests/baselines/reference/asyncAliasReturnType_es6.symbols b/tests/baselines/reference/asyncAliasReturnType_es6.symbols index 4d6db6a1ef4..61de47e4092 100644 --- a/tests/baselines/reference/asyncAliasReturnType_es6.symbols +++ b/tests/baselines/reference/asyncAliasReturnType_es6.symbols @@ -2,7 +2,7 @@ type PromiseAlias = Promise; >PromiseAlias : Symbol(PromiseAlias, Decl(asyncAliasReturnType_es6.ts, 0, 0)) >T : Symbol(T, Decl(asyncAliasReturnType_es6.ts, 0, 18)) ->Promise : Symbol(Promise, Decl(lib.d.ts, --, --), Decl(lib.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, --, --)) >T : Symbol(T, Decl(asyncAliasReturnType_es6.ts, 0, 18)) async function f(): PromiseAlias { diff --git a/tests/baselines/reference/asyncArrowFunction1_es6.symbols b/tests/baselines/reference/asyncArrowFunction1_es6.symbols index a8a5aef325a..a2f62f82990 100644 --- a/tests/baselines/reference/asyncArrowFunction1_es6.symbols +++ b/tests/baselines/reference/asyncArrowFunction1_es6.symbols @@ -2,6 +2,6 @@ var foo = async (): Promise => { >foo : Symbol(foo, Decl(asyncArrowFunction1_es6.ts, 1, 3)) ->Promise : Symbol(Promise, Decl(lib.d.ts, --, --), Decl(lib.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, --, --)) }; diff --git a/tests/baselines/reference/asyncArrowFunctionCapturesArguments_es6.symbols b/tests/baselines/reference/asyncArrowFunctionCapturesArguments_es6.symbols index 2f516d7d758..4b312fd4646 100644 --- a/tests/baselines/reference/asyncArrowFunctionCapturesArguments_es6.symbols +++ b/tests/baselines/reference/asyncArrowFunctionCapturesArguments_es6.symbols @@ -3,16 +3,16 @@ class C { >C : Symbol(C, Decl(asyncArrowFunctionCapturesArguments_es6.ts, 0, 0)) method() { ->method : Symbol(method, Decl(asyncArrowFunctionCapturesArguments_es6.ts, 0, 9)) +>method : Symbol(C.method, Decl(asyncArrowFunctionCapturesArguments_es6.ts, 0, 9)) function other() {} >other : Symbol(other, Decl(asyncArrowFunctionCapturesArguments_es6.ts, 1, 13)) var fn = async () => await other.apply(this, arguments); >fn : Symbol(fn, Decl(asyncArrowFunctionCapturesArguments_es6.ts, 3, 9)) ->other.apply : Symbol(Function.apply, Decl(lib.d.ts, --, --)) +>other.apply : Symbol(Function.apply, Decl(lib.es5.d.ts, --, --)) >other : Symbol(other, Decl(asyncArrowFunctionCapturesArguments_es6.ts, 1, 13)) ->apply : Symbol(Function.apply, Decl(lib.d.ts, --, --)) +>apply : Symbol(Function.apply, Decl(lib.es5.d.ts, --, --)) >this : Symbol(C, Decl(asyncArrowFunctionCapturesArguments_es6.ts, 0, 0)) >arguments : Symbol(arguments) } diff --git a/tests/baselines/reference/asyncArrowFunctionCapturesArguments_es6.types b/tests/baselines/reference/asyncArrowFunctionCapturesArguments_es6.types index 76853858c5c..bb9df9af139 100644 --- a/tests/baselines/reference/asyncArrowFunctionCapturesArguments_es6.types +++ b/tests/baselines/reference/asyncArrowFunctionCapturesArguments_es6.types @@ -13,9 +13,9 @@ class C { >async () => await other.apply(this, arguments) : () => Promise >await other.apply(this, arguments) : any >other.apply(this, arguments) : any ->other.apply : (thisArg: any, argArray?: any) => any +>other.apply : (this: Function, thisArg: any, argArray?: any) => any >other : () => void ->apply : (thisArg: any, argArray?: any) => any +>apply : (this: Function, thisArg: any, argArray?: any) => any >this : this >arguments : IArguments } diff --git a/tests/baselines/reference/asyncArrowFunctionCapturesThis_es6.symbols b/tests/baselines/reference/asyncArrowFunctionCapturesThis_es6.symbols index ae516bb7fe3..17293752672 100644 --- a/tests/baselines/reference/asyncArrowFunctionCapturesThis_es6.symbols +++ b/tests/baselines/reference/asyncArrowFunctionCapturesThis_es6.symbols @@ -3,7 +3,7 @@ class C { >C : Symbol(C, Decl(asyncArrowFunctionCapturesThis_es6.ts, 0, 0)) method() { ->method : Symbol(method, Decl(asyncArrowFunctionCapturesThis_es6.ts, 0, 9)) +>method : Symbol(C.method, Decl(asyncArrowFunctionCapturesThis_es6.ts, 0, 9)) var fn = async () => await this; >fn : Symbol(fn, Decl(asyncArrowFunctionCapturesThis_es6.ts, 2, 9)) diff --git a/tests/baselines/reference/asyncAwait_es6.symbols b/tests/baselines/reference/asyncAwait_es6.symbols index 3c668b15b36..26295e72f78 100644 --- a/tests/baselines/reference/asyncAwait_es6.symbols +++ b/tests/baselines/reference/asyncAwait_es6.symbols @@ -2,16 +2,16 @@ type MyPromise = Promise; >MyPromise : Symbol(MyPromise, Decl(asyncAwait_es6.ts, 0, 0), Decl(asyncAwait_es6.ts, 1, 11)) >T : Symbol(T, Decl(asyncAwait_es6.ts, 0, 15)) ->Promise : Symbol(Promise, Decl(lib.d.ts, --, --), Decl(lib.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, --, --)) >T : Symbol(T, Decl(asyncAwait_es6.ts, 0, 15)) declare var MyPromise: typeof Promise; >MyPromise : Symbol(MyPromise, Decl(asyncAwait_es6.ts, 0, 0), Decl(asyncAwait_es6.ts, 1, 11)) ->Promise : Symbol(Promise, Decl(lib.d.ts, --, --), Decl(lib.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, --, --)) declare var p: Promise; >p : Symbol(p, Decl(asyncAwait_es6.ts, 2, 11)) ->Promise : Symbol(Promise, Decl(lib.d.ts, --, --), Decl(lib.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, --, --)) declare var mp: MyPromise; >mp : Symbol(mp, Decl(asyncAwait_es6.ts, 3, 11)) @@ -22,7 +22,7 @@ async function f0() { } async function f1(): Promise { } >f1 : Symbol(f1, Decl(asyncAwait_es6.ts, 5, 23)) ->Promise : Symbol(Promise, Decl(lib.d.ts, --, --), Decl(lib.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, --, --)) async function f3(): MyPromise { } >f3 : Symbol(f3, Decl(asyncAwait_es6.ts, 6, 38)) @@ -33,7 +33,7 @@ let f4 = async function() { } let f5 = async function(): Promise { } >f5 : Symbol(f5, Decl(asyncAwait_es6.ts, 10, 3)) ->Promise : Symbol(Promise, Decl(lib.d.ts, --, --), Decl(lib.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, --, --)) let f6 = async function(): MyPromise { } >f6 : Symbol(f6, Decl(asyncAwait_es6.ts, 11, 3)) @@ -44,7 +44,7 @@ let f7 = async () => { }; let f8 = async (): Promise => { }; >f8 : Symbol(f8, Decl(asyncAwait_es6.ts, 14, 3)) ->Promise : Symbol(Promise, Decl(lib.d.ts, --, --), Decl(lib.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, --, --)) let f9 = async (): MyPromise => { }; >f9 : Symbol(f9, Decl(asyncAwait_es6.ts, 15, 3)) @@ -60,7 +60,7 @@ let f11 = async () => mp; let f12 = async (): Promise => mp; >f12 : Symbol(f12, Decl(asyncAwait_es6.ts, 18, 3)) ->Promise : Symbol(Promise, Decl(lib.d.ts, --, --), Decl(lib.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, --, --)) >mp : Symbol(mp, Decl(asyncAwait_es6.ts, 3, 11)) let f13 = async (): MyPromise => p; @@ -76,7 +76,7 @@ let o = { async m2(): Promise { }, >m2 : Symbol(m2, Decl(asyncAwait_es6.ts, 22, 16)) ->Promise : Symbol(Promise, Decl(lib.d.ts, --, --), Decl(lib.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, --, --)) async m3(): MyPromise { } >m3 : Symbol(m3, Decl(asyncAwait_es6.ts, 23, 31)) @@ -88,14 +88,14 @@ class C { >C : Symbol(C, Decl(asyncAwait_es6.ts, 25, 2)) async m1() { } ->m1 : Symbol(m1, Decl(asyncAwait_es6.ts, 27, 9)) +>m1 : Symbol(C.m1, Decl(asyncAwait_es6.ts, 27, 9)) async m2(): Promise { } ->m2 : Symbol(m2, Decl(asyncAwait_es6.ts, 28, 15)) ->Promise : Symbol(Promise, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>m2 : Symbol(C.m2, Decl(asyncAwait_es6.ts, 28, 15)) +>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, --, --)) async m3(): MyPromise { } ->m3 : Symbol(m3, Decl(asyncAwait_es6.ts, 29, 30)) +>m3 : Symbol(C.m3, Decl(asyncAwait_es6.ts, 29, 30)) >MyPromise : Symbol(MyPromise, Decl(asyncAwait_es6.ts, 0, 0), Decl(asyncAwait_es6.ts, 1, 11)) static async m4() { } @@ -103,7 +103,7 @@ class C { static async m5(): Promise { } >m5 : Symbol(C.m5, Decl(asyncAwait_es6.ts, 31, 22)) ->Promise : Symbol(Promise, Decl(lib.d.ts, --, --), Decl(lib.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, --, --)) static async m6(): MyPromise { } >m6 : Symbol(C.m6, Decl(asyncAwait_es6.ts, 32, 37)) diff --git a/tests/baselines/reference/asyncFunctionDeclaration11_es6.symbols b/tests/baselines/reference/asyncFunctionDeclaration11_es6.symbols index f1946aa712f..c9288f42763 100644 --- a/tests/baselines/reference/asyncFunctionDeclaration11_es6.symbols +++ b/tests/baselines/reference/asyncFunctionDeclaration11_es6.symbols @@ -1,5 +1,5 @@ === tests/cases/conformance/async/es6/functionDeclarations/asyncFunctionDeclaration11_es6.ts === async function await(): Promise { >await : Symbol(await, Decl(asyncFunctionDeclaration11_es6.ts, 0, 0)) ->Promise : Symbol(Promise, Decl(lib.d.ts, --, --), Decl(lib.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, --, --)) } diff --git a/tests/baselines/reference/asyncFunctionDeclaration14_es6.symbols b/tests/baselines/reference/asyncFunctionDeclaration14_es6.symbols index 34623ded262..d036632ff86 100644 --- a/tests/baselines/reference/asyncFunctionDeclaration14_es6.symbols +++ b/tests/baselines/reference/asyncFunctionDeclaration14_es6.symbols @@ -1,7 +1,7 @@ === tests/cases/conformance/async/es6/functionDeclarations/asyncFunctionDeclaration14_es6.ts === async function foo(): Promise { >foo : Symbol(foo, Decl(asyncFunctionDeclaration14_es6.ts, 0, 0)) ->Promise : Symbol(Promise, Decl(lib.d.ts, --, --), Decl(lib.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, --, --)) return; } diff --git a/tests/baselines/reference/asyncFunctionDeclaration1_es6.symbols b/tests/baselines/reference/asyncFunctionDeclaration1_es6.symbols index b1721789f5c..019d2db4f07 100644 --- a/tests/baselines/reference/asyncFunctionDeclaration1_es6.symbols +++ b/tests/baselines/reference/asyncFunctionDeclaration1_es6.symbols @@ -1,5 +1,5 @@ === tests/cases/conformance/async/es6/functionDeclarations/asyncFunctionDeclaration1_es6.ts === async function foo(): Promise { >foo : Symbol(foo, Decl(asyncFunctionDeclaration1_es6.ts, 0, 0)) ->Promise : Symbol(Promise, Decl(lib.d.ts, --, --), Decl(lib.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, --, --)) } diff --git a/tests/baselines/reference/asyncMethodWithSuper_es6.symbols b/tests/baselines/reference/asyncMethodWithSuper_es6.symbols index 37937a061a8..268ad90f203 100644 --- a/tests/baselines/reference/asyncMethodWithSuper_es6.symbols +++ b/tests/baselines/reference/asyncMethodWithSuper_es6.symbols @@ -3,7 +3,7 @@ class A { >A : Symbol(A, Decl(asyncMethodWithSuper_es6.ts, 0, 0)) x() { ->x : Symbol(x, Decl(asyncMethodWithSuper_es6.ts, 0, 9)) +>x : Symbol(A.x, Decl(asyncMethodWithSuper_es6.ts, 0, 9)) } } @@ -13,7 +13,7 @@ class B extends A { // async method with only call/get on 'super' does not require a binding async simple() { ->simple : Symbol(simple, Decl(asyncMethodWithSuper_es6.ts, 5, 19)) +>simple : Symbol(B.simple, Decl(asyncMethodWithSuper_es6.ts, 5, 19)) // call with property access super.x(); @@ -42,7 +42,7 @@ class B extends A { // async method with assignment/destructuring on 'super' requires a binding async advanced() { ->advanced : Symbol(advanced, Decl(asyncMethodWithSuper_es6.ts, 19, 5)) +>advanced : Symbol(B.advanced, Decl(asyncMethodWithSuper_es6.ts, 19, 5)) const f = () => {}; >f : Symbol(f, Decl(asyncMethodWithSuper_es6.ts, 23, 13)) diff --git a/tests/baselines/reference/augmentExportEquals5.symbols b/tests/baselines/reference/augmentExportEquals5.symbols index f255bf8c065..37fa00bd8cc 100644 --- a/tests/baselines/reference/augmentExportEquals5.symbols +++ b/tests/baselines/reference/augmentExportEquals5.symbols @@ -27,7 +27,7 @@ declare module "express" { >IRoute : Symbol(IRoute, Decl(express.d.ts, 10, 17)) all(...handler: RequestHandler[]): IRoute; ->all : Symbol(all, Decl(express.d.ts, 11, 26)) +>all : Symbol(IRoute.all, Decl(express.d.ts, 11, 26)) >handler : Symbol(handler, Decl(express.d.ts, 12, 16)) >RequestHandler : Symbol(RequestHandler, Decl(express.d.ts, 40, 9)) >IRoute : Symbol(IRoute, Decl(express.d.ts, 10, 17)) @@ -51,7 +51,7 @@ declare module "express" { >RequestHandler : Symbol(RequestHandler, Decl(express.d.ts, 40, 9)) route(path: string): IRoute; ->route : Symbol(route, Decl(express.d.ts, 19, 53)) +>route : Symbol(IRouter.route, Decl(express.d.ts, 19, 53)) >path : Symbol(path, Decl(express.d.ts, 20, 18)) >IRoute : Symbol(IRoute, Decl(express.d.ts, 10, 17)) } @@ -78,7 +78,7 @@ declare module "express" { >Request : Symbol(Express.Request, Decl(express.d.ts, 2, 24)) get (name: string): string; ->get : Symbol(get, Decl(express.d.ts, 29, 51)) +>get : Symbol(Request.get, Decl(express.d.ts, 29, 51)) >name : Symbol(name, Decl(express.d.ts, 31, 17)) } @@ -89,7 +89,7 @@ declare module "express" { >Response : Symbol(Express.Response, Decl(express.d.ts, 3, 32)) charset: string; ->charset : Symbol(charset, Decl(express.d.ts, 34, 53)) +>charset : Symbol(Response.charset, Decl(express.d.ts, 34, 53)) } interface ErrorRequestHandler { @@ -143,7 +143,7 @@ declare module "express" { >Application : Symbol(Express.Application, Decl(express.d.ts, 4, 33)) routes: any; ->routes : Symbol(routes, Decl(express.d.ts, 52, 81)) +>routes : Symbol(Application.routes, Decl(express.d.ts, 52, 81)) } interface Express extends Application { @@ -151,7 +151,7 @@ declare module "express" { >Application : Symbol(Application, Decl(express.d.ts, 50, 9)) createApplication(): Application; ->createApplication : Symbol(createApplication, Decl(express.d.ts, 56, 47)) +>createApplication : Symbol(Express.createApplication, Decl(express.d.ts, 56, 47)) >Application : Symbol(Application, Decl(express.d.ts, 50, 9)) } @@ -173,7 +173,7 @@ declare module "express" { >Request : Symbol(Request, Decl(express.d.ts, 27, 49), Decl(augmentation.ts, 2, 26)) id: number; ->id : Symbol(id, Decl(augmentation.ts, 3, 23)) +>id : Symbol(Request.id, Decl(augmentation.ts, 3, 23)) } } diff --git a/tests/baselines/reference/augmentExportEquals6.symbols b/tests/baselines/reference/augmentExportEquals6.symbols index 24f8ef7c903..4af820f24d7 100644 --- a/tests/baselines/reference/augmentExportEquals6.symbols +++ b/tests/baselines/reference/augmentExportEquals6.symbols @@ -31,7 +31,7 @@ x.B.b = 1; declare module "./file1" { interface A { a: number } >A : Symbol(A, Decl(file1.ts, 2, 15), Decl(file2.ts, 4, 26)) ->a : Symbol(a, Decl(file2.ts, 5, 17)) +>a : Symbol(A.a, Decl(file2.ts, 5, 17)) namespace B { >B : Symbol(B, Decl(file1.ts, 3, 21), Decl(file2.ts, 5, 29)) diff --git a/tests/baselines/reference/augmentExportEquals6_1.symbols b/tests/baselines/reference/augmentExportEquals6_1.symbols index 5c45af00a48..3db6702448e 100644 --- a/tests/baselines/reference/augmentExportEquals6_1.symbols +++ b/tests/baselines/reference/augmentExportEquals6_1.symbols @@ -24,7 +24,7 @@ import x = require("file1"); declare module "file1" { interface A { a: number } >A : Symbol(A, Decl(file1.d.ts, 3, 19), Decl(file2.ts, 4, 24)) ->a : Symbol(a, Decl(file2.ts, 5, 17)) +>a : Symbol(A.a, Decl(file2.ts, 5, 17)) } === tests/cases/compiler/file3.ts === diff --git a/tests/baselines/reference/augmentedTypeBracketAccessIndexSignature.symbols b/tests/baselines/reference/augmentedTypeBracketAccessIndexSignature.symbols index c3dfe5996b9..9ab4ceb9068 100644 --- a/tests/baselines/reference/augmentedTypeBracketAccessIndexSignature.symbols +++ b/tests/baselines/reference/augmentedTypeBracketAccessIndexSignature.symbols @@ -1,11 +1,11 @@ === tests/cases/conformance/types/members/augmentedTypeBracketAccessIndexSignature.ts === interface Foo { a } >Foo : Symbol(Foo, Decl(augmentedTypeBracketAccessIndexSignature.ts, 0, 0)) ->a : Symbol(a, Decl(augmentedTypeBracketAccessIndexSignature.ts, 0, 15)) +>a : Symbol(Foo.a, Decl(augmentedTypeBracketAccessIndexSignature.ts, 0, 15)) interface Bar { b } >Bar : Symbol(Bar, Decl(augmentedTypeBracketAccessIndexSignature.ts, 0, 19)) ->b : Symbol(b, Decl(augmentedTypeBracketAccessIndexSignature.ts, 1, 15)) +>b : Symbol(Bar.b, Decl(augmentedTypeBracketAccessIndexSignature.ts, 1, 15)) interface Object { >Object : Symbol(Object, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(augmentedTypeBracketAccessIndexSignature.ts, 1, 19)) diff --git a/tests/baselines/reference/augmentedTypeBracketNamedPropertyAccess.symbols b/tests/baselines/reference/augmentedTypeBracketNamedPropertyAccess.symbols index d12e8e13793..c51c0497ec8 100644 --- a/tests/baselines/reference/augmentedTypeBracketNamedPropertyAccess.symbols +++ b/tests/baselines/reference/augmentedTypeBracketNamedPropertyAccess.symbols @@ -3,13 +3,13 @@ interface Object { >Object : Symbol(Object, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(augmentedTypeBracketNamedPropertyAccess.ts, 0, 0)) data: number; ->data : Symbol(data, Decl(augmentedTypeBracketNamedPropertyAccess.ts, 0, 18)) +>data : Symbol(Object.data, Decl(augmentedTypeBracketNamedPropertyAccess.ts, 0, 18)) } interface Function { >Function : Symbol(Function, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(augmentedTypeBracketNamedPropertyAccess.ts, 2, 1)) functionData: string; ->functionData : Symbol(functionData, Decl(augmentedTypeBracketNamedPropertyAccess.ts, 3, 20)) +>functionData : Symbol(Function.functionData, Decl(augmentedTypeBracketNamedPropertyAccess.ts, 3, 20)) } var o = {}; >o : Symbol(o, Decl(augmentedTypeBracketNamedPropertyAccess.ts, 6, 3)) diff --git a/tests/baselines/reference/augmentedTypesClass3.symbols b/tests/baselines/reference/augmentedTypesClass3.symbols index 62504a56f25..e968ecd61ed 100644 --- a/tests/baselines/reference/augmentedTypesClass3.symbols +++ b/tests/baselines/reference/augmentedTypesClass3.symbols @@ -2,14 +2,14 @@ // class then module class c5 { public foo() { } } >c5 : Symbol(c5, Decl(augmentedTypesClass3.ts, 0, 0), Decl(augmentedTypesClass3.ts, 1, 29)) ->foo : Symbol(foo, Decl(augmentedTypesClass3.ts, 1, 10)) +>foo : Symbol(c5.foo, Decl(augmentedTypesClass3.ts, 1, 10)) module c5 { } // should be ok >c5 : Symbol(c5, Decl(augmentedTypesClass3.ts, 0, 0), Decl(augmentedTypesClass3.ts, 1, 29)) class c5a { public foo() { } } >c5a : Symbol(c5a, Decl(augmentedTypesClass3.ts, 2, 13), Decl(augmentedTypesClass3.ts, 4, 30)) ->foo : Symbol(foo, Decl(augmentedTypesClass3.ts, 4, 11)) +>foo : Symbol(c5a.foo, Decl(augmentedTypesClass3.ts, 4, 11)) module c5a { var y = 2; } // should be ok >c5a : Symbol(c5a, Decl(augmentedTypesClass3.ts, 2, 13), Decl(augmentedTypesClass3.ts, 4, 30)) @@ -17,7 +17,7 @@ module c5a { var y = 2; } // should be ok class c5b { public foo() { } } >c5b : Symbol(c5b, Decl(augmentedTypesClass3.ts, 5, 25), Decl(augmentedTypesClass3.ts, 7, 30)) ->foo : Symbol(foo, Decl(augmentedTypesClass3.ts, 7, 11)) +>foo : Symbol(c5b.foo, Decl(augmentedTypesClass3.ts, 7, 11)) module c5b { export var y = 2; } // should be ok >c5b : Symbol(c5b, Decl(augmentedTypesClass3.ts, 5, 25), Decl(augmentedTypesClass3.ts, 7, 30)) @@ -26,6 +26,6 @@ module c5b { export var y = 2; } // should be ok //// class then import class c5c { public foo() { } } >c5c : Symbol(c5c, Decl(augmentedTypesClass3.ts, 8, 32)) ->foo : Symbol(foo, Decl(augmentedTypesClass3.ts, 11, 11)) +>foo : Symbol(c5c.foo, Decl(augmentedTypesClass3.ts, 11, 11)) //import c5c = require(''); diff --git a/tests/baselines/reference/augmentedTypesExternalModule1.symbols b/tests/baselines/reference/augmentedTypesExternalModule1.symbols index 3a909b91df5..d44d1f213a0 100644 --- a/tests/baselines/reference/augmentedTypesExternalModule1.symbols +++ b/tests/baselines/reference/augmentedTypesExternalModule1.symbols @@ -4,7 +4,7 @@ export var a = 1; class c5 { public foo() { } } >c5 : Symbol(c5, Decl(augmentedTypesExternalModule1.ts, 0, 17), Decl(augmentedTypesExternalModule1.ts, 1, 29)) ->foo : Symbol(foo, Decl(augmentedTypesExternalModule1.ts, 1, 10)) +>foo : Symbol(c5.foo, Decl(augmentedTypesExternalModule1.ts, 1, 10)) module c5 { } // should be ok everywhere >c5 : Symbol(c5, Decl(augmentedTypesExternalModule1.ts, 0, 17), Decl(augmentedTypesExternalModule1.ts, 1, 29)) diff --git a/tests/baselines/reference/augmentedTypesModules3b.symbols b/tests/baselines/reference/augmentedTypesModules3b.symbols index dd5456e4cf2..abafc4855ca 100644 --- a/tests/baselines/reference/augmentedTypesModules3b.symbols +++ b/tests/baselines/reference/augmentedTypesModules3b.symbols @@ -1,7 +1,7 @@ === tests/cases/compiler/augmentedTypesModules3b.ts === class m3b { foo() { } } >m3b : Symbol(m3b, Decl(augmentedTypesModules3b.ts, 0, 0), Decl(augmentedTypesModules3b.ts, 0, 23)) ->foo : Symbol(foo, Decl(augmentedTypesModules3b.ts, 0, 11)) +>foo : Symbol(m3b.foo, Decl(augmentedTypesModules3b.ts, 0, 11)) module m3b { var y = 2; } >m3b : Symbol(m3b, Decl(augmentedTypesModules3b.ts, 0, 0), Decl(augmentedTypesModules3b.ts, 0, 23)) @@ -9,7 +9,7 @@ module m3b { var y = 2; } class m3c { foo() { } } >m3c : Symbol(m3c, Decl(augmentedTypesModules3b.ts, 1, 25), Decl(augmentedTypesModules3b.ts, 3, 23)) ->foo : Symbol(foo, Decl(augmentedTypesModules3b.ts, 3, 11)) +>foo : Symbol(m3c.foo, Decl(augmentedTypesModules3b.ts, 3, 11)) module m3c { export var y = 2; } >m3c : Symbol(m3c, Decl(augmentedTypesModules3b.ts, 1, 25), Decl(augmentedTypesModules3b.ts, 3, 23)) @@ -17,7 +17,7 @@ module m3c { export var y = 2; } declare class m3d { foo(): void } >m3d : Symbol(m3d, Decl(augmentedTypesModules3b.ts, 4, 32), Decl(augmentedTypesModules3b.ts, 6, 33)) ->foo : Symbol(foo, Decl(augmentedTypesModules3b.ts, 6, 19)) +>foo : Symbol(m3d.foo, Decl(augmentedTypesModules3b.ts, 6, 19)) module m3d { export var y = 2; } >m3d : Symbol(m3d, Decl(augmentedTypesModules3b.ts, 4, 32), Decl(augmentedTypesModules3b.ts, 6, 33)) @@ -29,23 +29,23 @@ module m3e { export var y = 2; } declare class m3e { foo(): void } >m3e : Symbol(m3e, Decl(augmentedTypesModules3b.ts, 7, 32), Decl(augmentedTypesModules3b.ts, 9, 32)) ->foo : Symbol(foo, Decl(augmentedTypesModules3b.ts, 10, 19)) +>foo : Symbol(m3e.foo, Decl(augmentedTypesModules3b.ts, 10, 19)) declare class m3f { foo(): void } >m3f : Symbol(m3f, Decl(augmentedTypesModules3b.ts, 10, 33), Decl(augmentedTypesModules3b.ts, 12, 33)) ->foo : Symbol(foo, Decl(augmentedTypesModules3b.ts, 12, 19)) +>foo : Symbol(m3f.foo, Decl(augmentedTypesModules3b.ts, 12, 19)) module m3f { export interface I { foo(): void } } >m3f : Symbol(m3f, Decl(augmentedTypesModules3b.ts, 10, 33), Decl(augmentedTypesModules3b.ts, 12, 33)) >I : Symbol(I, Decl(augmentedTypesModules3b.ts, 13, 12)) ->foo : Symbol(foo, Decl(augmentedTypesModules3b.ts, 13, 33)) +>foo : Symbol(I.foo, Decl(augmentedTypesModules3b.ts, 13, 33)) declare class m3g { foo(): void } >m3g : Symbol(m3g, Decl(augmentedTypesModules3b.ts, 13, 49), Decl(augmentedTypesModules3b.ts, 15, 33)) ->foo : Symbol(foo, Decl(augmentedTypesModules3b.ts, 15, 19)) +>foo : Symbol(m3g.foo, Decl(augmentedTypesModules3b.ts, 15, 19)) module m3g { export class C { foo() { } } } >m3g : Symbol(m3g, Decl(augmentedTypesModules3b.ts, 13, 49), Decl(augmentedTypesModules3b.ts, 15, 33)) >C : Symbol(C, Decl(augmentedTypesModules3b.ts, 16, 12)) ->foo : Symbol(foo, Decl(augmentedTypesModules3b.ts, 16, 29)) +>foo : Symbol(C.foo, Decl(augmentedTypesModules3b.ts, 16, 29)) diff --git a/tests/baselines/reference/augmentedTypesModules4.symbols b/tests/baselines/reference/augmentedTypesModules4.symbols index e0cee3e7c3a..8df383141ec 100644 --- a/tests/baselines/reference/augmentedTypesModules4.symbols +++ b/tests/baselines/reference/augmentedTypesModules4.symbols @@ -26,7 +26,7 @@ enum m4b { One } module m4c { interface I { foo(): void } } >m4c : Symbol(m4c, Decl(augmentedTypesModules4.ts, 9, 16), Decl(augmentedTypesModules4.ts, 11, 42)) >I : Symbol(I, Decl(augmentedTypesModules4.ts, 11, 12)) ->foo : Symbol(foo, Decl(augmentedTypesModules4.ts, 11, 26)) +>foo : Symbol(I.foo, Decl(augmentedTypesModules4.ts, 11, 26)) enum m4c { One } >m4c : Symbol(m4c, Decl(augmentedTypesModules4.ts, 9, 16), Decl(augmentedTypesModules4.ts, 11, 42)) @@ -35,7 +35,7 @@ enum m4c { One } module m4d { class C { foo() { } } } >m4d : Symbol(m4d, Decl(augmentedTypesModules4.ts, 12, 16), Decl(augmentedTypesModules4.ts, 14, 36)) >C : Symbol(C, Decl(augmentedTypesModules4.ts, 14, 12)) ->foo : Symbol(foo, Decl(augmentedTypesModules4.ts, 14, 22)) +>foo : Symbol(C.foo, Decl(augmentedTypesModules4.ts, 14, 22)) enum m4d { One } >m4d : Symbol(m4d, Decl(augmentedTypesModules4.ts, 12, 16), Decl(augmentedTypesModules4.ts, 14, 36)) @@ -50,5 +50,5 @@ module m5 { export var y = 2; } module m5 { export interface I { foo(): void } } // should already be reasonably well covered >m5 : Symbol(m5, Decl(augmentedTypesModules4.ts, 15, 16), Decl(augmentedTypesModules4.ts, 19, 31)) >I : Symbol(I, Decl(augmentedTypesModules4.ts, 20, 11)) ->foo : Symbol(foo, Decl(augmentedTypesModules4.ts, 20, 32)) +>foo : Symbol(I.foo, Decl(augmentedTypesModules4.ts, 20, 32)) diff --git a/tests/baselines/reference/avoid.symbols b/tests/baselines/reference/avoid.symbols index 9b9440eea65..e2f9e1c4507 100644 --- a/tests/baselines/reference/avoid.symbols +++ b/tests/baselines/reference/avoid.symbols @@ -25,7 +25,7 @@ class C { >C : Symbol(C, Decl(avoid.ts, 7, 6)) g() { ->g : Symbol(g, Decl(avoid.ts, 9, 9)) +>g : Symbol(C.g, Decl(avoid.ts, 9, 9)) } } diff --git a/tests/baselines/reference/awaitBinaryExpression1_es6.symbols b/tests/baselines/reference/awaitBinaryExpression1_es6.symbols index fd532aeca74..aee3dbefe96 100644 --- a/tests/baselines/reference/awaitBinaryExpression1_es6.symbols +++ b/tests/baselines/reference/awaitBinaryExpression1_es6.symbols @@ -4,11 +4,11 @@ declare var a: boolean; declare var p: Promise; >p : Symbol(p, Decl(awaitBinaryExpression1_es6.ts, 1, 11)) ->Promise : Symbol(Promise, Decl(lib.d.ts, --, --), Decl(lib.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, --, --)) async function func(): Promise { >func : Symbol(func, Decl(awaitBinaryExpression1_es6.ts, 1, 32)) ->Promise : Symbol(Promise, Decl(lib.d.ts, --, --), Decl(lib.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, --, --)) "before"; var b = await p || a; diff --git a/tests/baselines/reference/awaitBinaryExpression2_es6.symbols b/tests/baselines/reference/awaitBinaryExpression2_es6.symbols index 3117f62da17..a4ed0ec14bd 100644 --- a/tests/baselines/reference/awaitBinaryExpression2_es6.symbols +++ b/tests/baselines/reference/awaitBinaryExpression2_es6.symbols @@ -4,11 +4,11 @@ declare var a: boolean; declare var p: Promise; >p : Symbol(p, Decl(awaitBinaryExpression2_es6.ts, 1, 11)) ->Promise : Symbol(Promise, Decl(lib.d.ts, --, --), Decl(lib.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, --, --)) async function func(): Promise { >func : Symbol(func, Decl(awaitBinaryExpression2_es6.ts, 1, 32)) ->Promise : Symbol(Promise, Decl(lib.d.ts, --, --), Decl(lib.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, --, --)) "before"; var b = await p && a; diff --git a/tests/baselines/reference/awaitBinaryExpression3_es6.symbols b/tests/baselines/reference/awaitBinaryExpression3_es6.symbols index e50f194bbee..4b3beb9d9a5 100644 --- a/tests/baselines/reference/awaitBinaryExpression3_es6.symbols +++ b/tests/baselines/reference/awaitBinaryExpression3_es6.symbols @@ -4,11 +4,11 @@ declare var a: number; declare var p: Promise; >p : Symbol(p, Decl(awaitBinaryExpression3_es6.ts, 1, 11)) ->Promise : Symbol(Promise, Decl(lib.d.ts, --, --), Decl(lib.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, --, --)) async function func(): Promise { >func : Symbol(func, Decl(awaitBinaryExpression3_es6.ts, 1, 31)) ->Promise : Symbol(Promise, Decl(lib.d.ts, --, --), Decl(lib.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, --, --)) "before"; var b = await p + a; diff --git a/tests/baselines/reference/awaitBinaryExpression4_es6.symbols b/tests/baselines/reference/awaitBinaryExpression4_es6.symbols index 02e05faeab0..1c52cbb48ef 100644 --- a/tests/baselines/reference/awaitBinaryExpression4_es6.symbols +++ b/tests/baselines/reference/awaitBinaryExpression4_es6.symbols @@ -4,11 +4,11 @@ declare var a: boolean; declare var p: Promise; >p : Symbol(p, Decl(awaitBinaryExpression4_es6.ts, 1, 11)) ->Promise : Symbol(Promise, Decl(lib.d.ts, --, --), Decl(lib.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, --, --)) async function func(): Promise { >func : Symbol(func, Decl(awaitBinaryExpression4_es6.ts, 1, 32)) ->Promise : Symbol(Promise, Decl(lib.d.ts, --, --), Decl(lib.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, --, --)) "before"; var b = await p, a; diff --git a/tests/baselines/reference/awaitBinaryExpression5_es6.symbols b/tests/baselines/reference/awaitBinaryExpression5_es6.symbols index 061364240f8..28f96aa55f5 100644 --- a/tests/baselines/reference/awaitBinaryExpression5_es6.symbols +++ b/tests/baselines/reference/awaitBinaryExpression5_es6.symbols @@ -4,11 +4,11 @@ declare var a: boolean; declare var p: Promise; >p : Symbol(p, Decl(awaitBinaryExpression5_es6.ts, 1, 11)) ->Promise : Symbol(Promise, Decl(lib.d.ts, --, --), Decl(lib.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, --, --)) async function func(): Promise { >func : Symbol(func, Decl(awaitBinaryExpression5_es6.ts, 1, 32)) ->Promise : Symbol(Promise, Decl(lib.d.ts, --, --), Decl(lib.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, --, --)) "before"; var o: { a: boolean; }; diff --git a/tests/baselines/reference/awaitCallExpression1_es6.symbols b/tests/baselines/reference/awaitCallExpression1_es6.symbols index debe9180bcc..c4a91817a46 100644 --- a/tests/baselines/reference/awaitCallExpression1_es6.symbols +++ b/tests/baselines/reference/awaitCallExpression1_es6.symbols @@ -4,7 +4,7 @@ declare var a: boolean; declare var p: Promise; >p : Symbol(p, Decl(awaitCallExpression1_es6.ts, 1, 11)) ->Promise : Symbol(Promise, Decl(lib.d.ts, --, --), Decl(lib.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, --, --)) declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; >fn : Symbol(fn, Decl(awaitCallExpression1_es6.ts, 1, 32)) @@ -21,14 +21,14 @@ declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >pfn : Symbol(pfn, Decl(awaitCallExpression1_es6.ts, 4, 11)) ->Promise : Symbol(Promise, Decl(lib.d.ts, --, --), Decl(lib.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, --, --)) >arg0 : Symbol(arg0, Decl(awaitCallExpression1_es6.ts, 4, 28)) >arg1 : Symbol(arg1, Decl(awaitCallExpression1_es6.ts, 4, 42)) >arg2 : Symbol(arg2, Decl(awaitCallExpression1_es6.ts, 4, 57)) declare var po: Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >po : Symbol(po, Decl(awaitCallExpression1_es6.ts, 5, 11)) ->Promise : Symbol(Promise, Decl(lib.d.ts, --, --), Decl(lib.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, --, --)) >fn : Symbol(fn, Decl(awaitCallExpression1_es6.ts, 5, 25)) >arg0 : Symbol(arg0, Decl(awaitCallExpression1_es6.ts, 5, 29)) >arg1 : Symbol(arg1, Decl(awaitCallExpression1_es6.ts, 5, 43)) @@ -36,7 +36,7 @@ declare var po: Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; async function func(): Promise { >func : Symbol(func, Decl(awaitCallExpression1_es6.ts, 5, 84)) ->Promise : Symbol(Promise, Decl(lib.d.ts, --, --), Decl(lib.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, --, --)) "before"; var b = fn(a, a, a); diff --git a/tests/baselines/reference/awaitCallExpression2_es6.symbols b/tests/baselines/reference/awaitCallExpression2_es6.symbols index be9a11410c2..3931e28045d 100644 --- a/tests/baselines/reference/awaitCallExpression2_es6.symbols +++ b/tests/baselines/reference/awaitCallExpression2_es6.symbols @@ -4,7 +4,7 @@ declare var a: boolean; declare var p: Promise; >p : Symbol(p, Decl(awaitCallExpression2_es6.ts, 1, 11)) ->Promise : Symbol(Promise, Decl(lib.d.ts, --, --), Decl(lib.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, --, --)) declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; >fn : Symbol(fn, Decl(awaitCallExpression2_es6.ts, 1, 32)) @@ -21,14 +21,14 @@ declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >pfn : Symbol(pfn, Decl(awaitCallExpression2_es6.ts, 4, 11)) ->Promise : Symbol(Promise, Decl(lib.d.ts, --, --), Decl(lib.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, --, --)) >arg0 : Symbol(arg0, Decl(awaitCallExpression2_es6.ts, 4, 28)) >arg1 : Symbol(arg1, Decl(awaitCallExpression2_es6.ts, 4, 42)) >arg2 : Symbol(arg2, Decl(awaitCallExpression2_es6.ts, 4, 57)) declare var po: Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >po : Symbol(po, Decl(awaitCallExpression2_es6.ts, 5, 11)) ->Promise : Symbol(Promise, Decl(lib.d.ts, --, --), Decl(lib.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, --, --)) >fn : Symbol(fn, Decl(awaitCallExpression2_es6.ts, 5, 25)) >arg0 : Symbol(arg0, Decl(awaitCallExpression2_es6.ts, 5, 29)) >arg1 : Symbol(arg1, Decl(awaitCallExpression2_es6.ts, 5, 43)) @@ -36,7 +36,7 @@ declare var po: Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; async function func(): Promise { >func : Symbol(func, Decl(awaitCallExpression2_es6.ts, 5, 84)) ->Promise : Symbol(Promise, Decl(lib.d.ts, --, --), Decl(lib.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, --, --)) "before"; var b = fn(await p, a, a); diff --git a/tests/baselines/reference/awaitCallExpression3_es6.symbols b/tests/baselines/reference/awaitCallExpression3_es6.symbols index 612e33c456c..2002748c9ba 100644 --- a/tests/baselines/reference/awaitCallExpression3_es6.symbols +++ b/tests/baselines/reference/awaitCallExpression3_es6.symbols @@ -4,7 +4,7 @@ declare var a: boolean; declare var p: Promise; >p : Symbol(p, Decl(awaitCallExpression3_es6.ts, 1, 11)) ->Promise : Symbol(Promise, Decl(lib.d.ts, --, --), Decl(lib.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, --, --)) declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; >fn : Symbol(fn, Decl(awaitCallExpression3_es6.ts, 1, 32)) @@ -21,14 +21,14 @@ declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >pfn : Symbol(pfn, Decl(awaitCallExpression3_es6.ts, 4, 11)) ->Promise : Symbol(Promise, Decl(lib.d.ts, --, --), Decl(lib.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, --, --)) >arg0 : Symbol(arg0, Decl(awaitCallExpression3_es6.ts, 4, 28)) >arg1 : Symbol(arg1, Decl(awaitCallExpression3_es6.ts, 4, 42)) >arg2 : Symbol(arg2, Decl(awaitCallExpression3_es6.ts, 4, 57)) declare var po: Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >po : Symbol(po, Decl(awaitCallExpression3_es6.ts, 5, 11)) ->Promise : Symbol(Promise, Decl(lib.d.ts, --, --), Decl(lib.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, --, --)) >fn : Symbol(fn, Decl(awaitCallExpression3_es6.ts, 5, 25)) >arg0 : Symbol(arg0, Decl(awaitCallExpression3_es6.ts, 5, 29)) >arg1 : Symbol(arg1, Decl(awaitCallExpression3_es6.ts, 5, 43)) @@ -36,7 +36,7 @@ declare var po: Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; async function func(): Promise { >func : Symbol(func, Decl(awaitCallExpression3_es6.ts, 5, 84)) ->Promise : Symbol(Promise, Decl(lib.d.ts, --, --), Decl(lib.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, --, --)) "before"; var b = fn(a, await p, a); diff --git a/tests/baselines/reference/awaitCallExpression4_es6.symbols b/tests/baselines/reference/awaitCallExpression4_es6.symbols index 6925e5a44ea..d31cf100ad4 100644 --- a/tests/baselines/reference/awaitCallExpression4_es6.symbols +++ b/tests/baselines/reference/awaitCallExpression4_es6.symbols @@ -4,7 +4,7 @@ declare var a: boolean; declare var p: Promise; >p : Symbol(p, Decl(awaitCallExpression4_es6.ts, 1, 11)) ->Promise : Symbol(Promise, Decl(lib.d.ts, --, --), Decl(lib.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, --, --)) declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; >fn : Symbol(fn, Decl(awaitCallExpression4_es6.ts, 1, 32)) @@ -21,14 +21,14 @@ declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >pfn : Symbol(pfn, Decl(awaitCallExpression4_es6.ts, 4, 11)) ->Promise : Symbol(Promise, Decl(lib.d.ts, --, --), Decl(lib.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, --, --)) >arg0 : Symbol(arg0, Decl(awaitCallExpression4_es6.ts, 4, 28)) >arg1 : Symbol(arg1, Decl(awaitCallExpression4_es6.ts, 4, 42)) >arg2 : Symbol(arg2, Decl(awaitCallExpression4_es6.ts, 4, 57)) declare var po: Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >po : Symbol(po, Decl(awaitCallExpression4_es6.ts, 5, 11)) ->Promise : Symbol(Promise, Decl(lib.d.ts, --, --), Decl(lib.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, --, --)) >fn : Symbol(fn, Decl(awaitCallExpression4_es6.ts, 5, 25)) >arg0 : Symbol(arg0, Decl(awaitCallExpression4_es6.ts, 5, 29)) >arg1 : Symbol(arg1, Decl(awaitCallExpression4_es6.ts, 5, 43)) @@ -36,7 +36,7 @@ declare var po: Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; async function func(): Promise { >func : Symbol(func, Decl(awaitCallExpression4_es6.ts, 5, 84)) ->Promise : Symbol(Promise, Decl(lib.d.ts, --, --), Decl(lib.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, --, --)) "before"; var b = (await pfn)(a, a, a); diff --git a/tests/baselines/reference/awaitCallExpression5_es6.symbols b/tests/baselines/reference/awaitCallExpression5_es6.symbols index 8bdce5cd12c..d14a966b0b1 100644 --- a/tests/baselines/reference/awaitCallExpression5_es6.symbols +++ b/tests/baselines/reference/awaitCallExpression5_es6.symbols @@ -4,7 +4,7 @@ declare var a: boolean; declare var p: Promise; >p : Symbol(p, Decl(awaitCallExpression5_es6.ts, 1, 11)) ->Promise : Symbol(Promise, Decl(lib.d.ts, --, --), Decl(lib.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, --, --)) declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; >fn : Symbol(fn, Decl(awaitCallExpression5_es6.ts, 1, 32)) @@ -21,14 +21,14 @@ declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >pfn : Symbol(pfn, Decl(awaitCallExpression5_es6.ts, 4, 11)) ->Promise : Symbol(Promise, Decl(lib.d.ts, --, --), Decl(lib.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, --, --)) >arg0 : Symbol(arg0, Decl(awaitCallExpression5_es6.ts, 4, 28)) >arg1 : Symbol(arg1, Decl(awaitCallExpression5_es6.ts, 4, 42)) >arg2 : Symbol(arg2, Decl(awaitCallExpression5_es6.ts, 4, 57)) declare var po: Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >po : Symbol(po, Decl(awaitCallExpression5_es6.ts, 5, 11)) ->Promise : Symbol(Promise, Decl(lib.d.ts, --, --), Decl(lib.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, --, --)) >fn : Symbol(fn, Decl(awaitCallExpression5_es6.ts, 5, 25)) >arg0 : Symbol(arg0, Decl(awaitCallExpression5_es6.ts, 5, 29)) >arg1 : Symbol(arg1, Decl(awaitCallExpression5_es6.ts, 5, 43)) @@ -36,7 +36,7 @@ declare var po: Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; async function func(): Promise { >func : Symbol(func, Decl(awaitCallExpression5_es6.ts, 5, 84)) ->Promise : Symbol(Promise, Decl(lib.d.ts, --, --), Decl(lib.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, --, --)) "before"; var b = o.fn(a, a, a); diff --git a/tests/baselines/reference/awaitCallExpression6_es6.symbols b/tests/baselines/reference/awaitCallExpression6_es6.symbols index ad79f75ab49..afd07fd0185 100644 --- a/tests/baselines/reference/awaitCallExpression6_es6.symbols +++ b/tests/baselines/reference/awaitCallExpression6_es6.symbols @@ -4,7 +4,7 @@ declare var a: boolean; declare var p: Promise; >p : Symbol(p, Decl(awaitCallExpression6_es6.ts, 1, 11)) ->Promise : Symbol(Promise, Decl(lib.d.ts, --, --), Decl(lib.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, --, --)) declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; >fn : Symbol(fn, Decl(awaitCallExpression6_es6.ts, 1, 32)) @@ -21,14 +21,14 @@ declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >pfn : Symbol(pfn, Decl(awaitCallExpression6_es6.ts, 4, 11)) ->Promise : Symbol(Promise, Decl(lib.d.ts, --, --), Decl(lib.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, --, --)) >arg0 : Symbol(arg0, Decl(awaitCallExpression6_es6.ts, 4, 28)) >arg1 : Symbol(arg1, Decl(awaitCallExpression6_es6.ts, 4, 42)) >arg2 : Symbol(arg2, Decl(awaitCallExpression6_es6.ts, 4, 57)) declare var po: Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >po : Symbol(po, Decl(awaitCallExpression6_es6.ts, 5, 11)) ->Promise : Symbol(Promise, Decl(lib.d.ts, --, --), Decl(lib.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, --, --)) >fn : Symbol(fn, Decl(awaitCallExpression6_es6.ts, 5, 25)) >arg0 : Symbol(arg0, Decl(awaitCallExpression6_es6.ts, 5, 29)) >arg1 : Symbol(arg1, Decl(awaitCallExpression6_es6.ts, 5, 43)) @@ -36,7 +36,7 @@ declare var po: Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; async function func(): Promise { >func : Symbol(func, Decl(awaitCallExpression6_es6.ts, 5, 84)) ->Promise : Symbol(Promise, Decl(lib.d.ts, --, --), Decl(lib.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, --, --)) "before"; var b = o.fn(await p, a, a); diff --git a/tests/baselines/reference/awaitCallExpression7_es6.symbols b/tests/baselines/reference/awaitCallExpression7_es6.symbols index 0da1dd16016..bb503d4b3a1 100644 --- a/tests/baselines/reference/awaitCallExpression7_es6.symbols +++ b/tests/baselines/reference/awaitCallExpression7_es6.symbols @@ -4,7 +4,7 @@ declare var a: boolean; declare var p: Promise; >p : Symbol(p, Decl(awaitCallExpression7_es6.ts, 1, 11)) ->Promise : Symbol(Promise, Decl(lib.d.ts, --, --), Decl(lib.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, --, --)) declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; >fn : Symbol(fn, Decl(awaitCallExpression7_es6.ts, 1, 32)) @@ -21,14 +21,14 @@ declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >pfn : Symbol(pfn, Decl(awaitCallExpression7_es6.ts, 4, 11)) ->Promise : Symbol(Promise, Decl(lib.d.ts, --, --), Decl(lib.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, --, --)) >arg0 : Symbol(arg0, Decl(awaitCallExpression7_es6.ts, 4, 28)) >arg1 : Symbol(arg1, Decl(awaitCallExpression7_es6.ts, 4, 42)) >arg2 : Symbol(arg2, Decl(awaitCallExpression7_es6.ts, 4, 57)) declare var po: Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >po : Symbol(po, Decl(awaitCallExpression7_es6.ts, 5, 11)) ->Promise : Symbol(Promise, Decl(lib.d.ts, --, --), Decl(lib.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, --, --)) >fn : Symbol(fn, Decl(awaitCallExpression7_es6.ts, 5, 25)) >arg0 : Symbol(arg0, Decl(awaitCallExpression7_es6.ts, 5, 29)) >arg1 : Symbol(arg1, Decl(awaitCallExpression7_es6.ts, 5, 43)) @@ -36,7 +36,7 @@ declare var po: Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; async function func(): Promise { >func : Symbol(func, Decl(awaitCallExpression7_es6.ts, 5, 84)) ->Promise : Symbol(Promise, Decl(lib.d.ts, --, --), Decl(lib.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, --, --)) "before"; var b = o.fn(a, await p, a); diff --git a/tests/baselines/reference/awaitCallExpression8_es6.symbols b/tests/baselines/reference/awaitCallExpression8_es6.symbols index d2d4fa2264d..9f4df1046f4 100644 --- a/tests/baselines/reference/awaitCallExpression8_es6.symbols +++ b/tests/baselines/reference/awaitCallExpression8_es6.symbols @@ -4,7 +4,7 @@ declare var a: boolean; declare var p: Promise; >p : Symbol(p, Decl(awaitCallExpression8_es6.ts, 1, 11)) ->Promise : Symbol(Promise, Decl(lib.d.ts, --, --), Decl(lib.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, --, --)) declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; >fn : Symbol(fn, Decl(awaitCallExpression8_es6.ts, 1, 32)) @@ -21,14 +21,14 @@ declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >pfn : Symbol(pfn, Decl(awaitCallExpression8_es6.ts, 4, 11)) ->Promise : Symbol(Promise, Decl(lib.d.ts, --, --), Decl(lib.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, --, --)) >arg0 : Symbol(arg0, Decl(awaitCallExpression8_es6.ts, 4, 28)) >arg1 : Symbol(arg1, Decl(awaitCallExpression8_es6.ts, 4, 42)) >arg2 : Symbol(arg2, Decl(awaitCallExpression8_es6.ts, 4, 57)) declare var po: Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >po : Symbol(po, Decl(awaitCallExpression8_es6.ts, 5, 11)) ->Promise : Symbol(Promise, Decl(lib.d.ts, --, --), Decl(lib.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, --, --)) >fn : Symbol(fn, Decl(awaitCallExpression8_es6.ts, 5, 25)) >arg0 : Symbol(arg0, Decl(awaitCallExpression8_es6.ts, 5, 29)) >arg1 : Symbol(arg1, Decl(awaitCallExpression8_es6.ts, 5, 43)) @@ -36,7 +36,7 @@ declare var po: Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; async function func(): Promise { >func : Symbol(func, Decl(awaitCallExpression8_es6.ts, 5, 84)) ->Promise : Symbol(Promise, Decl(lib.d.ts, --, --), Decl(lib.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, --, --)) "before"; var b = (await po).fn(a, a, a); diff --git a/tests/baselines/reference/awaitUnion_es6.symbols b/tests/baselines/reference/awaitUnion_es6.symbols index 48524c4526d..98a229c4148 100644 --- a/tests/baselines/reference/awaitUnion_es6.symbols +++ b/tests/baselines/reference/awaitUnion_es6.symbols @@ -4,20 +4,20 @@ declare let a: number | string; declare let b: PromiseLike | PromiseLike; >b : Symbol(b, Decl(awaitUnion_es6.ts, 1, 11)) ->PromiseLike : Symbol(PromiseLike, Decl(lib.d.ts, --, --)) ->PromiseLike : Symbol(PromiseLike, Decl(lib.d.ts, --, --)) +>PromiseLike : Symbol(PromiseLike, Decl(lib.es5.d.ts, --, --)) +>PromiseLike : Symbol(PromiseLike, Decl(lib.es5.d.ts, --, --)) declare let c: PromiseLike; >c : Symbol(c, Decl(awaitUnion_es6.ts, 2, 11)) ->PromiseLike : Symbol(PromiseLike, Decl(lib.d.ts, --, --)) +>PromiseLike : Symbol(PromiseLike, Decl(lib.es5.d.ts, --, --)) declare let d: number | PromiseLike; >d : Symbol(d, Decl(awaitUnion_es6.ts, 3, 11)) ->PromiseLike : Symbol(PromiseLike, Decl(lib.d.ts, --, --)) +>PromiseLike : Symbol(PromiseLike, Decl(lib.es5.d.ts, --, --)) declare let e: number | PromiseLike; >e : Symbol(e, Decl(awaitUnion_es6.ts, 4, 11)) ->PromiseLike : Symbol(PromiseLike, Decl(lib.d.ts, --, --)) +>PromiseLike : Symbol(PromiseLike, Decl(lib.es5.d.ts, --, --)) async function f() { >f : Symbol(f, Decl(awaitUnion_es6.ts, 4, 53)) diff --git a/tests/baselines/reference/baseIndexSignatureResolution.symbols b/tests/baselines/reference/baseIndexSignatureResolution.symbols index 297f6b092f3..a70ad99fc7b 100644 --- a/tests/baselines/reference/baseIndexSignatureResolution.symbols +++ b/tests/baselines/reference/baseIndexSignatureResolution.symbols @@ -1,12 +1,12 @@ === tests/cases/compiler/baseIndexSignatureResolution.ts === class Base { private a: string; } >Base : Symbol(Base, Decl(baseIndexSignatureResolution.ts, 0, 0)) ->a : Symbol(a, Decl(baseIndexSignatureResolution.ts, 0, 12)) +>a : Symbol(Base.a, Decl(baseIndexSignatureResolution.ts, 0, 12)) class Derived extends Base { private b: string; } >Derived : Symbol(Derived, Decl(baseIndexSignatureResolution.ts, 0, 33)) >Base : Symbol(Base, Decl(baseIndexSignatureResolution.ts, 0, 0)) ->b : Symbol(b, Decl(baseIndexSignatureResolution.ts, 1, 28)) +>b : Symbol(Derived.b, Decl(baseIndexSignatureResolution.ts, 1, 28)) // Note - commmenting "extends Foo" prevents the error interface Foo { diff --git a/tests/baselines/reference/baseTypeAfterDerivedType.symbols b/tests/baselines/reference/baseTypeAfterDerivedType.symbols index b085e0a4152..89d35e21635 100644 --- a/tests/baselines/reference/baseTypeAfterDerivedType.symbols +++ b/tests/baselines/reference/baseTypeAfterDerivedType.symbols @@ -4,7 +4,7 @@ interface Derived extends Base { >Base : Symbol(Base, Decl(baseTypeAfterDerivedType.ts, 2, 1)) method(...args: any[]): void; ->method : Symbol(method, Decl(baseTypeAfterDerivedType.ts, 0, 32)) +>method : Symbol(Derived.method, Decl(baseTypeAfterDerivedType.ts, 0, 32)) >args : Symbol(args, Decl(baseTypeAfterDerivedType.ts, 1, 11)) } @@ -12,7 +12,7 @@ interface Base { >Base : Symbol(Base, Decl(baseTypeAfterDerivedType.ts, 2, 1)) method(...args: any[]): void; ->method : Symbol(method, Decl(baseTypeAfterDerivedType.ts, 4, 16)) +>method : Symbol(Base.method, Decl(baseTypeAfterDerivedType.ts, 4, 16)) >args : Symbol(args, Decl(baseTypeAfterDerivedType.ts, 5, 11)) } @@ -21,7 +21,7 @@ class Derived2 implements Base2 { >Base2 : Symbol(Base2, Decl(baseTypeAfterDerivedType.ts, 10, 1)) method(...args: any[]): void { } ->method : Symbol(method, Decl(baseTypeAfterDerivedType.ts, 8, 33)) +>method : Symbol(Derived2.method, Decl(baseTypeAfterDerivedType.ts, 8, 33)) >args : Symbol(args, Decl(baseTypeAfterDerivedType.ts, 9, 11)) } @@ -29,7 +29,7 @@ interface Base2 { >Base2 : Symbol(Base2, Decl(baseTypeAfterDerivedType.ts, 10, 1)) method(...args: any[]): void; ->method : Symbol(method, Decl(baseTypeAfterDerivedType.ts, 12, 17)) +>method : Symbol(Base2.method, Decl(baseTypeAfterDerivedType.ts, 12, 17)) >args : Symbol(args, Decl(baseTypeAfterDerivedType.ts, 13, 11)) } diff --git a/tests/baselines/reference/baseTypeOrderChecking.symbols b/tests/baselines/reference/baseTypeOrderChecking.symbols index 05d913f481e..13a926fe278 100644 --- a/tests/baselines/reference/baseTypeOrderChecking.symbols +++ b/tests/baselines/reference/baseTypeOrderChecking.symbols @@ -32,7 +32,7 @@ class Class3 { public memberVariable: Class2; ->memberVariable : Symbol(memberVariable, Decl(baseTypeOrderChecking.ts, 22, 1)) +>memberVariable : Symbol(Class3.memberVariable, Decl(baseTypeOrderChecking.ts, 22, 1)) >Class2 : Symbol(Class2, Decl(baseTypeOrderChecking.ts, 8, 1)) } diff --git a/tests/baselines/reference/baseTypeWrappingInstantiationChain.symbols b/tests/baselines/reference/baseTypeWrappingInstantiationChain.symbols index 1e8ab089b90..936110ea43a 100644 --- a/tests/baselines/reference/baseTypeWrappingInstantiationChain.symbols +++ b/tests/baselines/reference/baseTypeWrappingInstantiationChain.symbols @@ -6,7 +6,7 @@ class C extends CBase { >T1 : Symbol(T1, Decl(baseTypeWrappingInstantiationChain.ts, 0, 8)) public works() { ->works : Symbol(works, Decl(baseTypeWrappingInstantiationChain.ts, 0, 31)) +>works : Symbol(C.works, Decl(baseTypeWrappingInstantiationChain.ts, 0, 31)) new CBaseBase>(this); >CBaseBase : Symbol(CBaseBase, Decl(baseTypeWrappingInstantiationChain.ts, 13, 1)) @@ -15,7 +15,7 @@ class C extends CBase { >this : Symbol(C, Decl(baseTypeWrappingInstantiationChain.ts, 0, 0)) } public alsoWorks() { ->alsoWorks : Symbol(alsoWorks, Decl(baseTypeWrappingInstantiationChain.ts, 3, 5)) +>alsoWorks : Symbol(C.alsoWorks, Decl(baseTypeWrappingInstantiationChain.ts, 3, 5)) new CBase(this); // Should not error, parameter is of type Parameter> >CBase : Symbol(CBase, Decl(baseTypeWrappingInstantiationChain.ts, 9, 1)) @@ -24,7 +24,7 @@ class C extends CBase { } public method(t: Wrapper) { } ->method : Symbol(method, Decl(baseTypeWrappingInstantiationChain.ts, 6, 5)) +>method : Symbol(C.method, Decl(baseTypeWrappingInstantiationChain.ts, 6, 5)) >t : Symbol(t, Decl(baseTypeWrappingInstantiationChain.ts, 8, 18)) >Wrapper : Symbol(Wrapper, Decl(baseTypeWrappingInstantiationChain.ts, 21, 1)) >T1 : Symbol(T1, Decl(baseTypeWrappingInstantiationChain.ts, 0, 8)) @@ -54,7 +54,7 @@ class Parameter { >T4 : Symbol(T4, Decl(baseTypeWrappingInstantiationChain.ts, 19, 16)) method(t: T4) { } ->method : Symbol(method, Decl(baseTypeWrappingInstantiationChain.ts, 19, 21)) +>method : Symbol(Parameter.method, Decl(baseTypeWrappingInstantiationChain.ts, 19, 21)) >t : Symbol(t, Decl(baseTypeWrappingInstantiationChain.ts, 20, 11)) >T4 : Symbol(T4, Decl(baseTypeWrappingInstantiationChain.ts, 19, 16)) } @@ -64,6 +64,6 @@ class Wrapper { >T5 : Symbol(T5, Decl(baseTypeWrappingInstantiationChain.ts, 23, 14)) property: T5; ->property : Symbol(property, Decl(baseTypeWrappingInstantiationChain.ts, 23, 19)) +>property : Symbol(Wrapper.property, Decl(baseTypeWrappingInstantiationChain.ts, 23, 19)) >T5 : Symbol(T5, Decl(baseTypeWrappingInstantiationChain.ts, 23, 14)) } diff --git a/tests/baselines/reference/bestCommonTypeOfConditionalExpressions.symbols b/tests/baselines/reference/bestCommonTypeOfConditionalExpressions.symbols index 626777523ab..1cdb83ea837 100644 --- a/tests/baselines/reference/bestCommonTypeOfConditionalExpressions.symbols +++ b/tests/baselines/reference/bestCommonTypeOfConditionalExpressions.symbols @@ -14,17 +14,17 @@ var b: { x: number; z?: number }; class Base { foo: string; } >Base : Symbol(Base, Decl(bestCommonTypeOfConditionalExpressions.ts, 4, 33)) ->foo : Symbol(foo, Decl(bestCommonTypeOfConditionalExpressions.ts, 6, 12)) +>foo : Symbol(Base.foo, Decl(bestCommonTypeOfConditionalExpressions.ts, 6, 12)) class Derived extends Base { bar: string; } >Derived : Symbol(Derived, Decl(bestCommonTypeOfConditionalExpressions.ts, 6, 27)) >Base : Symbol(Base, Decl(bestCommonTypeOfConditionalExpressions.ts, 4, 33)) ->bar : Symbol(bar, Decl(bestCommonTypeOfConditionalExpressions.ts, 7, 28)) +>bar : Symbol(Derived.bar, Decl(bestCommonTypeOfConditionalExpressions.ts, 7, 28)) class Derived2 extends Base { baz: string; } >Derived2 : Symbol(Derived2, Decl(bestCommonTypeOfConditionalExpressions.ts, 7, 43)) >Base : Symbol(Base, Decl(bestCommonTypeOfConditionalExpressions.ts, 4, 33)) ->baz : Symbol(baz, Decl(bestCommonTypeOfConditionalExpressions.ts, 8, 29)) +>baz : Symbol(Derived2.baz, Decl(bestCommonTypeOfConditionalExpressions.ts, 8, 29)) var base: Base; >base : Symbol(base, Decl(bestCommonTypeOfConditionalExpressions.ts, 9, 3)) diff --git a/tests/baselines/reference/bestCommonTypeOfConditionalExpressions2.symbols b/tests/baselines/reference/bestCommonTypeOfConditionalExpressions2.symbols index 68103761051..11a3430a668 100644 --- a/tests/baselines/reference/bestCommonTypeOfConditionalExpressions2.symbols +++ b/tests/baselines/reference/bestCommonTypeOfConditionalExpressions2.symbols @@ -4,17 +4,17 @@ class Base { foo: string; } >Base : Symbol(Base, Decl(bestCommonTypeOfConditionalExpressions2.ts, 0, 0)) ->foo : Symbol(foo, Decl(bestCommonTypeOfConditionalExpressions2.ts, 3, 12)) +>foo : Symbol(Base.foo, Decl(bestCommonTypeOfConditionalExpressions2.ts, 3, 12)) class Derived extends Base { bar: string; } >Derived : Symbol(Derived, Decl(bestCommonTypeOfConditionalExpressions2.ts, 3, 27)) >Base : Symbol(Base, Decl(bestCommonTypeOfConditionalExpressions2.ts, 0, 0)) ->bar : Symbol(bar, Decl(bestCommonTypeOfConditionalExpressions2.ts, 4, 28)) +>bar : Symbol(Derived.bar, Decl(bestCommonTypeOfConditionalExpressions2.ts, 4, 28)) class Derived2 extends Base { baz: string; } >Derived2 : Symbol(Derived2, Decl(bestCommonTypeOfConditionalExpressions2.ts, 4, 43)) >Base : Symbol(Base, Decl(bestCommonTypeOfConditionalExpressions2.ts, 0, 0)) ->baz : Symbol(baz, Decl(bestCommonTypeOfConditionalExpressions2.ts, 5, 29)) +>baz : Symbol(Derived2.baz, Decl(bestCommonTypeOfConditionalExpressions2.ts, 5, 29)) var base: Base; >base : Symbol(base, Decl(bestCommonTypeOfConditionalExpressions2.ts, 6, 3)) diff --git a/tests/baselines/reference/bestCommonTypeOfTuple2.symbols b/tests/baselines/reference/bestCommonTypeOfTuple2.symbols index 842d07c417c..1e17f253f8a 100644 --- a/tests/baselines/reference/bestCommonTypeOfTuple2.symbols +++ b/tests/baselines/reference/bestCommonTypeOfTuple2.symbols @@ -4,39 +4,39 @@ interface base { } interface base1 { i } >base1 : Symbol(base1, Decl(bestCommonTypeOfTuple2.ts, 0, 18)) ->i : Symbol(i, Decl(bestCommonTypeOfTuple2.ts, 1, 17)) +>i : Symbol(base1.i, Decl(bestCommonTypeOfTuple2.ts, 1, 17)) class C implements base { c } >C : Symbol(C, Decl(bestCommonTypeOfTuple2.ts, 1, 21)) >base : Symbol(base, Decl(bestCommonTypeOfTuple2.ts, 0, 0)) ->c : Symbol(c, Decl(bestCommonTypeOfTuple2.ts, 2, 25)) +>c : Symbol(C.c, Decl(bestCommonTypeOfTuple2.ts, 2, 25)) class D implements base { d } >D : Symbol(D, Decl(bestCommonTypeOfTuple2.ts, 2, 29)) >base : Symbol(base, Decl(bestCommonTypeOfTuple2.ts, 0, 0)) ->d : Symbol(d, Decl(bestCommonTypeOfTuple2.ts, 3, 25)) +>d : Symbol(D.d, Decl(bestCommonTypeOfTuple2.ts, 3, 25)) class E implements base { e } >E : Symbol(E, Decl(bestCommonTypeOfTuple2.ts, 3, 29)) >base : Symbol(base, Decl(bestCommonTypeOfTuple2.ts, 0, 0)) ->e : Symbol(e, Decl(bestCommonTypeOfTuple2.ts, 4, 25)) +>e : Symbol(E.e, Decl(bestCommonTypeOfTuple2.ts, 4, 25)) class F extends C { f } >F : Symbol(F, Decl(bestCommonTypeOfTuple2.ts, 4, 29)) >C : Symbol(C, Decl(bestCommonTypeOfTuple2.ts, 1, 21)) ->f : Symbol(f, Decl(bestCommonTypeOfTuple2.ts, 5, 19)) +>f : Symbol(F.f, Decl(bestCommonTypeOfTuple2.ts, 5, 19)) class C1 implements base1 { i = "foo"; c } >C1 : Symbol(C1, Decl(bestCommonTypeOfTuple2.ts, 5, 23)) >base1 : Symbol(base1, Decl(bestCommonTypeOfTuple2.ts, 0, 18)) ->i : Symbol(i, Decl(bestCommonTypeOfTuple2.ts, 7, 27)) ->c : Symbol(c, Decl(bestCommonTypeOfTuple2.ts, 7, 38)) +>i : Symbol(C1.i, Decl(bestCommonTypeOfTuple2.ts, 7, 27)) +>c : Symbol(C1.c, Decl(bestCommonTypeOfTuple2.ts, 7, 38)) class D1 extends C1 { i = "bar"; d } >D1 : Symbol(D1, Decl(bestCommonTypeOfTuple2.ts, 7, 42)) >C1 : Symbol(C1, Decl(bestCommonTypeOfTuple2.ts, 5, 23)) ->i : Symbol(i, Decl(bestCommonTypeOfTuple2.ts, 8, 21)) ->d : Symbol(d, Decl(bestCommonTypeOfTuple2.ts, 8, 32)) +>i : Symbol(D1.i, Decl(bestCommonTypeOfTuple2.ts, 8, 21)) +>d : Symbol(D1.d, Decl(bestCommonTypeOfTuple2.ts, 8, 32)) var t1: [C, base]; >t1 : Symbol(t1, Decl(bestCommonTypeOfTuple2.ts, 10, 3)) diff --git a/tests/baselines/reference/bestCommonTypeReturnStatement.symbols b/tests/baselines/reference/bestCommonTypeReturnStatement.symbols index 14e770ae255..db5fb4cfbcd 100644 --- a/tests/baselines/reference/bestCommonTypeReturnStatement.symbols +++ b/tests/baselines/reference/bestCommonTypeReturnStatement.symbols @@ -5,7 +5,7 @@ interface IPromise { >T : Symbol(T, Decl(bestCommonTypeReturnStatement.ts, 1, 19)) then(successCallback: (promiseValue: T) => any, errorCallback?: (reason: any) => any): IPromise; ->then : Symbol(then, Decl(bestCommonTypeReturnStatement.ts, 1, 23)) +>then : Symbol(IPromise.then, Decl(bestCommonTypeReturnStatement.ts, 1, 23)) >successCallback : Symbol(successCallback, Decl(bestCommonTypeReturnStatement.ts, 2, 9)) >promiseValue : Symbol(promiseValue, Decl(bestCommonTypeReturnStatement.ts, 2, 27)) >T : Symbol(T, Decl(bestCommonTypeReturnStatement.ts, 1, 19)) diff --git a/tests/baselines/reference/bestCommonTypeWithContextualTyping.symbols b/tests/baselines/reference/bestCommonTypeWithContextualTyping.symbols index cfa5310bd3c..acaab09cb0e 100644 --- a/tests/baselines/reference/bestCommonTypeWithContextualTyping.symbols +++ b/tests/baselines/reference/bestCommonTypeWithContextualTyping.symbols @@ -3,20 +3,20 @@ interface Contextual { >Contextual : Symbol(Contextual, Decl(bestCommonTypeWithContextualTyping.ts, 0, 0)) dummy; ->dummy : Symbol(dummy, Decl(bestCommonTypeWithContextualTyping.ts, 0, 22)) +>dummy : Symbol(Contextual.dummy, Decl(bestCommonTypeWithContextualTyping.ts, 0, 22)) p?: number; ->p : Symbol(p, Decl(bestCommonTypeWithContextualTyping.ts, 1, 10)) +>p : Symbol(Contextual.p, Decl(bestCommonTypeWithContextualTyping.ts, 1, 10)) } interface Ellement { >Ellement : Symbol(Ellement, Decl(bestCommonTypeWithContextualTyping.ts, 3, 1)) dummy; ->dummy : Symbol(dummy, Decl(bestCommonTypeWithContextualTyping.ts, 5, 20)) +>dummy : Symbol(Ellement.dummy, Decl(bestCommonTypeWithContextualTyping.ts, 5, 20)) p: any; ->p : Symbol(p, Decl(bestCommonTypeWithContextualTyping.ts, 6, 10)) +>p : Symbol(Ellement.p, Decl(bestCommonTypeWithContextualTyping.ts, 6, 10)) } var e: Ellement; diff --git a/tests/baselines/reference/bestCommonTypeWithOptionalProperties.symbols b/tests/baselines/reference/bestCommonTypeWithOptionalProperties.symbols index 35e9534ddb5..5bb2dc8ecf9 100644 --- a/tests/baselines/reference/bestCommonTypeWithOptionalProperties.symbols +++ b/tests/baselines/reference/bestCommonTypeWithOptionalProperties.symbols @@ -1,17 +1,17 @@ === tests/cases/compiler/bestCommonTypeWithOptionalProperties.ts === interface X { foo: string } >X : Symbol(X, Decl(bestCommonTypeWithOptionalProperties.ts, 0, 0)) ->foo : Symbol(foo, Decl(bestCommonTypeWithOptionalProperties.ts, 0, 13)) +>foo : Symbol(X.foo, Decl(bestCommonTypeWithOptionalProperties.ts, 0, 13)) interface Y extends X { bar?: number } >Y : Symbol(Y, Decl(bestCommonTypeWithOptionalProperties.ts, 0, 27)) >X : Symbol(X, Decl(bestCommonTypeWithOptionalProperties.ts, 0, 0)) ->bar : Symbol(bar, Decl(bestCommonTypeWithOptionalProperties.ts, 1, 23)) +>bar : Symbol(Y.bar, Decl(bestCommonTypeWithOptionalProperties.ts, 1, 23)) interface Z extends X { bar: string } >Z : Symbol(Z, Decl(bestCommonTypeWithOptionalProperties.ts, 1, 38)) >X : Symbol(X, Decl(bestCommonTypeWithOptionalProperties.ts, 0, 0)) ->bar : Symbol(bar, Decl(bestCommonTypeWithOptionalProperties.ts, 2, 23)) +>bar : Symbol(Z.bar, Decl(bestCommonTypeWithOptionalProperties.ts, 2, 23)) var x: X; >x : Symbol(x, Decl(bestCommonTypeWithOptionalProperties.ts, 4, 3)) diff --git a/tests/baselines/reference/binopAssignmentShouldHaveType.symbols b/tests/baselines/reference/binopAssignmentShouldHaveType.symbols index 98f4ffee743..ae7a3c521af 100644 --- a/tests/baselines/reference/binopAssignmentShouldHaveType.symbols +++ b/tests/baselines/reference/binopAssignmentShouldHaveType.symbols @@ -10,12 +10,12 @@ module Test { >Bug : Symbol(Bug, Decl(binopAssignmentShouldHaveType.ts, 2, 13)) getName():string { ->getName : Symbol(getName, Decl(binopAssignmentShouldHaveType.ts, 3, 19)) +>getName : Symbol(Bug.getName, Decl(binopAssignmentShouldHaveType.ts, 3, 19)) return "name"; } bug() { ->bug : Symbol(bug, Decl(binopAssignmentShouldHaveType.ts, 6, 3)) +>bug : Symbol(Bug.bug, Decl(binopAssignmentShouldHaveType.ts, 6, 3)) var name:string= null; >name : Symbol(name, Decl(binopAssignmentShouldHaveType.ts, 8, 6)) @@ -23,9 +23,9 @@ module Test { if ((name= this.getName()).length > 0) { >(name= this.getName()).length : Symbol(String.length, Decl(lib.d.ts, --, --)) >name : Symbol(name, Decl(binopAssignmentShouldHaveType.ts, 8, 6)) ->this.getName : Symbol(getName, Decl(binopAssignmentShouldHaveType.ts, 3, 19)) +>this.getName : Symbol(Bug.getName, Decl(binopAssignmentShouldHaveType.ts, 3, 19)) >this : Symbol(Bug, Decl(binopAssignmentShouldHaveType.ts, 2, 13)) ->getName : Symbol(getName, Decl(binopAssignmentShouldHaveType.ts, 3, 19)) +>getName : Symbol(Bug.getName, Decl(binopAssignmentShouldHaveType.ts, 3, 19)) >length : Symbol(String.length, Decl(lib.d.ts, --, --)) console.log(name); diff --git a/tests/baselines/reference/bitwiseNotOperatorWithBooleanType.symbols b/tests/baselines/reference/bitwiseNotOperatorWithBooleanType.symbols index d6a29a11980..d52e73ba600 100644 --- a/tests/baselines/reference/bitwiseNotOperatorWithBooleanType.symbols +++ b/tests/baselines/reference/bitwiseNotOperatorWithBooleanType.symbols @@ -10,7 +10,7 @@ class A { >A : Symbol(A, Decl(bitwiseNotOperatorWithBooleanType.ts, 3, 40)) public a: boolean; ->a : Symbol(a, Decl(bitwiseNotOperatorWithBooleanType.ts, 5, 9)) +>a : Symbol(A.a, Decl(bitwiseNotOperatorWithBooleanType.ts, 5, 9)) static foo() { return false; } >foo : Symbol(A.foo, Decl(bitwiseNotOperatorWithBooleanType.ts, 6, 22)) diff --git a/tests/baselines/reference/bitwiseNotOperatorWithNumberType.symbols b/tests/baselines/reference/bitwiseNotOperatorWithNumberType.symbols index 2cb37660135..f7dd03d78c3 100644 --- a/tests/baselines/reference/bitwiseNotOperatorWithNumberType.symbols +++ b/tests/baselines/reference/bitwiseNotOperatorWithNumberType.symbols @@ -13,7 +13,7 @@ class A { >A : Symbol(A, Decl(bitwiseNotOperatorWithNumberType.ts, 4, 36)) public a: number; ->a : Symbol(a, Decl(bitwiseNotOperatorWithNumberType.ts, 6, 9)) +>a : Symbol(A.a, Decl(bitwiseNotOperatorWithNumberType.ts, 6, 9)) static foo() { return 1; } >foo : Symbol(A.foo, Decl(bitwiseNotOperatorWithNumberType.ts, 7, 21)) diff --git a/tests/baselines/reference/bitwiseNotOperatorWithStringType.symbols b/tests/baselines/reference/bitwiseNotOperatorWithStringType.symbols index 39c16a701b6..f535acc199b 100644 --- a/tests/baselines/reference/bitwiseNotOperatorWithStringType.symbols +++ b/tests/baselines/reference/bitwiseNotOperatorWithStringType.symbols @@ -13,7 +13,7 @@ class A { >A : Symbol(A, Decl(bitwiseNotOperatorWithStringType.ts, 4, 40)) public a: string; ->a : Symbol(a, Decl(bitwiseNotOperatorWithStringType.ts, 6, 9)) +>a : Symbol(A.a, Decl(bitwiseNotOperatorWithStringType.ts, 6, 9)) static foo() { return ""; } >foo : Symbol(A.foo, Decl(bitwiseNotOperatorWithStringType.ts, 7, 21)) diff --git a/tests/baselines/reference/blockScopedBindingsReassignedInLoop2.js b/tests/baselines/reference/blockScopedBindingsReassignedInLoop2.js index c48ecd96ffe..68bfd3cb676 100644 --- a/tests/baselines/reference/blockScopedBindingsReassignedInLoop2.js +++ b/tests/baselines/reference/blockScopedBindingsReassignedInLoop2.js @@ -73,10 +73,9 @@ var _loop_2 = function(x, y) { }; var out_x_2, out_y_2; for (var x = 1, y = 2; x < y; ++x, --y) { - var state_2 = _loop_2(x, y); + _loop_2(x, y); x = out_x_2; y = out_y_2; - if (state_2 === "continue") continue; } var _loop_3 = function(x, y) { var a = function () { return x++ + y++; }; diff --git a/tests/baselines/reference/blockScopedBindingsReassignedInLoop3.js b/tests/baselines/reference/blockScopedBindingsReassignedInLoop3.js index 10160202621..7e3bac4ff52 100644 --- a/tests/baselines/reference/blockScopedBindingsReassignedInLoop3.js +++ b/tests/baselines/reference/blockScopedBindingsReassignedInLoop3.js @@ -147,9 +147,8 @@ var _loop_3 = function(x, y) { }; var out_a_2_1; for (var a_2 = 1; a_2 < 5; --a_2) { - var state_3 = _loop_4(a_2); + _loop_4(a_2); a_2 = out_a_2_1; - if (state_3 === "continue") continue; } y = 5; } @@ -158,10 +157,9 @@ var _loop_3 = function(x, y) { }; var out_x_2, out_y_2; for (var x = 1, y = 2; x < y; ++x, --y) { - var state_4 = _loop_3(x, y); + _loop_3(x, y); x = out_x_2; y = out_y_2; - if (state_4 === "continue") continue; } var _loop_5 = function(x, y) { var a = function () { return x++ + y++; }; diff --git a/tests/baselines/reference/blockScopedFunctionDeclarationES5.js b/tests/baselines/reference/blockScopedFunctionDeclarationES5.js new file mode 100644 index 00000000000..066dd07351c --- /dev/null +++ b/tests/baselines/reference/blockScopedFunctionDeclarationES5.js @@ -0,0 +1,13 @@ +//// [blockScopedFunctionDeclarationES5.ts] +if (true) { + function foo() { } + foo(); +} +foo(); + +//// [blockScopedFunctionDeclarationES5.js] +if (true) { + function foo() { } + foo(); +} +foo(); diff --git a/tests/baselines/reference/blockScopedFunctionDeclarationES5.symbols b/tests/baselines/reference/blockScopedFunctionDeclarationES5.symbols new file mode 100644 index 00000000000..5c8f82cf0ff --- /dev/null +++ b/tests/baselines/reference/blockScopedFunctionDeclarationES5.symbols @@ -0,0 +1,11 @@ +=== tests/cases/compiler/blockScopedFunctionDeclarationES5.ts === +if (true) { + function foo() { } +>foo : Symbol(foo, Decl(blockScopedFunctionDeclarationES5.ts, 0, 11)) + + foo(); +>foo : Symbol(foo, Decl(blockScopedFunctionDeclarationES5.ts, 0, 11)) +} +foo(); +>foo : Symbol(foo, Decl(blockScopedFunctionDeclarationES5.ts, 0, 11)) + diff --git a/tests/baselines/reference/blockScopedFunctionDeclarationES5.types b/tests/baselines/reference/blockScopedFunctionDeclarationES5.types new file mode 100644 index 00000000000..b3c4d9b7d73 --- /dev/null +++ b/tests/baselines/reference/blockScopedFunctionDeclarationES5.types @@ -0,0 +1,15 @@ +=== tests/cases/compiler/blockScopedFunctionDeclarationES5.ts === +if (true) { +>true : boolean + + function foo() { } +>foo : () => void + + foo(); +>foo() : void +>foo : () => void +} +foo(); +>foo() : void +>foo : () => void + diff --git a/tests/baselines/reference/blockScopedFunctionDeclarationES6.js b/tests/baselines/reference/blockScopedFunctionDeclarationES6.js new file mode 100644 index 00000000000..32450cd66f1 --- /dev/null +++ b/tests/baselines/reference/blockScopedFunctionDeclarationES6.js @@ -0,0 +1,13 @@ +//// [blockScopedFunctionDeclarationES6.ts] +if (true) { + function foo() { } + foo(); +} +foo(); + +//// [blockScopedFunctionDeclarationES6.js] +if (true) { + function foo() { } + foo(); +} +foo(); diff --git a/tests/baselines/reference/blockScopedFunctionDeclarationES6.symbols b/tests/baselines/reference/blockScopedFunctionDeclarationES6.symbols new file mode 100644 index 00000000000..65fb133b446 --- /dev/null +++ b/tests/baselines/reference/blockScopedFunctionDeclarationES6.symbols @@ -0,0 +1,11 @@ +=== tests/cases/compiler/blockScopedFunctionDeclarationES6.ts === +if (true) { + function foo() { } +>foo : Symbol(foo, Decl(blockScopedFunctionDeclarationES6.ts, 0, 11)) + + foo(); +>foo : Symbol(foo, Decl(blockScopedFunctionDeclarationES6.ts, 0, 11)) +} +foo(); +>foo : Symbol(foo, Decl(blockScopedFunctionDeclarationES6.ts, 0, 11)) + diff --git a/tests/baselines/reference/blockScopedFunctionDeclarationES6.types b/tests/baselines/reference/blockScopedFunctionDeclarationES6.types new file mode 100644 index 00000000000..7ab74feb0ed --- /dev/null +++ b/tests/baselines/reference/blockScopedFunctionDeclarationES6.types @@ -0,0 +1,15 @@ +=== tests/cases/compiler/blockScopedFunctionDeclarationES6.ts === +if (true) { +>true : boolean + + function foo() { } +>foo : () => void + + foo(); +>foo() : void +>foo : () => void +} +foo(); +>foo() : void +>foo : () => void + diff --git a/tests/baselines/reference/blockScopedFunctionDeclarationInStrictClass.errors.txt b/tests/baselines/reference/blockScopedFunctionDeclarationInStrictClass.errors.txt new file mode 100644 index 00000000000..efedfd097a6 --- /dev/null +++ b/tests/baselines/reference/blockScopedFunctionDeclarationInStrictClass.errors.txt @@ -0,0 +1,18 @@ +tests/cases/compiler/blockScopedFunctionDeclarationInStrictClass.ts(4,22): error TS1251: Function declarations are not allowed inside blocks in strict mode when targeting 'ES3' or 'ES5'. Class definitions are automatically in strict mode. +tests/cases/compiler/blockScopedFunctionDeclarationInStrictClass.ts(7,9): error TS2304: Cannot find name 'foo'. + + +==== tests/cases/compiler/blockScopedFunctionDeclarationInStrictClass.ts (2 errors) ==== + class c { + method() { + if (true) { + function foo() { } + ~~~ +!!! error TS1251: Function declarations are not allowed inside blocks in strict mode when targeting 'ES3' or 'ES5'. Class definitions are automatically in strict mode. + foo(); // ok + } + foo(); // not ok + ~~~ +!!! error TS2304: Cannot find name 'foo'. + } + } \ No newline at end of file diff --git a/tests/baselines/reference/blockScopedFunctionDeclarationInStrictClass.js b/tests/baselines/reference/blockScopedFunctionDeclarationInStrictClass.js new file mode 100644 index 00000000000..70a00a95a41 --- /dev/null +++ b/tests/baselines/reference/blockScopedFunctionDeclarationInStrictClass.js @@ -0,0 +1,24 @@ +//// [blockScopedFunctionDeclarationInStrictClass.ts] +class c { + method() { + if (true) { + function foo() { } + foo(); // ok + } + foo(); // not ok + } +} + +//// [blockScopedFunctionDeclarationInStrictClass.js] +var c = (function () { + function c() { + } + c.prototype.method = function () { + if (true) { + function foo() { } + foo(); // ok + } + foo(); // not ok + }; + return c; +}()); diff --git a/tests/baselines/reference/blockScopedFunctionDeclarationInStrictModule.errors.txt b/tests/baselines/reference/blockScopedFunctionDeclarationInStrictModule.errors.txt new file mode 100644 index 00000000000..3f53ef24b58 --- /dev/null +++ b/tests/baselines/reference/blockScopedFunctionDeclarationInStrictModule.errors.txt @@ -0,0 +1,15 @@ +tests/cases/compiler/blockScopedFunctionDeclarationInStrictModule.ts(2,14): error TS1252: Function declarations are not allowed inside blocks in strict mode when targeting 'ES3' or 'ES5'. Modules are automatically in strict mode. +tests/cases/compiler/blockScopedFunctionDeclarationInStrictModule.ts(6,10): error TS2304: Cannot find name 'foo'. + + +==== tests/cases/compiler/blockScopedFunctionDeclarationInStrictModule.ts (2 errors) ==== + if (true) { + function foo() { } + ~~~ +!!! error TS1252: Function declarations are not allowed inside blocks in strict mode when targeting 'ES3' or 'ES5'. Modules are automatically in strict mode. + foo(); // ok + } + + export = foo; // not ok + ~~~ +!!! error TS2304: Cannot find name 'foo'. \ No newline at end of file diff --git a/tests/baselines/reference/blockScopedFunctionDeclarationInStrictModule.js b/tests/baselines/reference/blockScopedFunctionDeclarationInStrictModule.js new file mode 100644 index 00000000000..cd118733e3c --- /dev/null +++ b/tests/baselines/reference/blockScopedFunctionDeclarationInStrictModule.js @@ -0,0 +1,16 @@ +//// [blockScopedFunctionDeclarationInStrictModule.ts] +if (true) { + function foo() { } + foo(); // ok +} + +export = foo; // not ok + +//// [blockScopedFunctionDeclarationInStrictModule.js] +define(["require", "exports"], function (require, exports) { + "use strict"; + if (true) { + function foo() { } + foo(); // ok + } +}); diff --git a/tests/baselines/reference/blockScopedFunctionDeclarationStrictES5.errors.txt b/tests/baselines/reference/blockScopedFunctionDeclarationStrictES5.errors.txt new file mode 100644 index 00000000000..f945d0eacbf --- /dev/null +++ b/tests/baselines/reference/blockScopedFunctionDeclarationStrictES5.errors.txt @@ -0,0 +1,15 @@ +tests/cases/compiler/blockScopedFunctionDeclarationStrictES5.ts(3,14): error TS1250: Function declarations are not allowed inside blocks in strict mode when targeting 'ES3' or 'ES5'. +tests/cases/compiler/blockScopedFunctionDeclarationStrictES5.ts(6,1): error TS2304: Cannot find name 'foo'. + + +==== tests/cases/compiler/blockScopedFunctionDeclarationStrictES5.ts (2 errors) ==== + "use strict"; + if (true) { + function foo() { } // Error to declare function in block scope + ~~~ +!!! error TS1250: Function declarations are not allowed inside blocks in strict mode when targeting 'ES3' or 'ES5'. + foo(); // This call should be ok + } + foo(); // Error to find name foo + ~~~ +!!! error TS2304: Cannot find name 'foo'. \ No newline at end of file diff --git a/tests/baselines/reference/blockScopedFunctionDeclarationStrictES5.js b/tests/baselines/reference/blockScopedFunctionDeclarationStrictES5.js new file mode 100644 index 00000000000..f0926cadf39 --- /dev/null +++ b/tests/baselines/reference/blockScopedFunctionDeclarationStrictES5.js @@ -0,0 +1,15 @@ +//// [blockScopedFunctionDeclarationStrictES5.ts] +"use strict"; +if (true) { + function foo() { } // Error to declare function in block scope + foo(); // This call should be ok +} +foo(); // Error to find name foo + +//// [blockScopedFunctionDeclarationStrictES5.js] +"use strict"; +if (true) { + function foo() { } // Error to declare function in block scope + foo(); // This call should be ok +} +foo(); // Error to find name foo diff --git a/tests/baselines/reference/blockScopedFunctionDeclarationStrictES6.errors.txt b/tests/baselines/reference/blockScopedFunctionDeclarationStrictES6.errors.txt new file mode 100644 index 00000000000..6772a29926b --- /dev/null +++ b/tests/baselines/reference/blockScopedFunctionDeclarationStrictES6.errors.txt @@ -0,0 +1,12 @@ +tests/cases/compiler/blockScopedFunctionDeclarationStrictES6.ts(6,1): error TS2304: Cannot find name 'foo'. + + +==== tests/cases/compiler/blockScopedFunctionDeclarationStrictES6.ts (1 errors) ==== + "use strict"; + if (true) { + function foo() { } // Allowed to declare block scope function + foo(); // This call should be ok + } + foo(); // Cannot find name since foo is block scoped + ~~~ +!!! error TS2304: Cannot find name 'foo'. \ No newline at end of file diff --git a/tests/baselines/reference/blockScopedFunctionDeclarationStrictES6.js b/tests/baselines/reference/blockScopedFunctionDeclarationStrictES6.js new file mode 100644 index 00000000000..0a1b263875b --- /dev/null +++ b/tests/baselines/reference/blockScopedFunctionDeclarationStrictES6.js @@ -0,0 +1,15 @@ +//// [blockScopedFunctionDeclarationStrictES6.ts] +"use strict"; +if (true) { + function foo() { } // Allowed to declare block scope function + foo(); // This call should be ok +} +foo(); // Cannot find name since foo is block scoped + +//// [blockScopedFunctionDeclarationStrictES6.js] +"use strict"; +if (true) { + function foo() { } // Allowed to declare block scope function + foo(); // This call should be ok +} +foo(); // Cannot find name since foo is block scoped diff --git a/tests/baselines/reference/blockScopedSameNameFunctionDeclarationES5.errors.txt b/tests/baselines/reference/blockScopedSameNameFunctionDeclarationES5.errors.txt new file mode 100644 index 00000000000..3efa85d1cc7 --- /dev/null +++ b/tests/baselines/reference/blockScopedSameNameFunctionDeclarationES5.errors.txt @@ -0,0 +1,37 @@ +tests/cases/compiler/blockScopedSameNameFunctionDeclarationES5.ts(3,18): error TS2393: Duplicate function implementation. +tests/cases/compiler/blockScopedSameNameFunctionDeclarationES5.ts(5,9): error TS2346: Supplied parameters do not match any signature of call target. +tests/cases/compiler/blockScopedSameNameFunctionDeclarationES5.ts(8,18): error TS2393: Duplicate function implementation. +tests/cases/compiler/blockScopedSameNameFunctionDeclarationES5.ts(10,9): error TS2346: Supplied parameters do not match any signature of call target. +tests/cases/compiler/blockScopedSameNameFunctionDeclarationES5.ts(12,5): error TS2346: Supplied parameters do not match any signature of call target. +tests/cases/compiler/blockScopedSameNameFunctionDeclarationES5.ts(16,1): error TS2346: Supplied parameters do not match any signature of call target. + + +==== tests/cases/compiler/blockScopedSameNameFunctionDeclarationES5.ts (6 errors) ==== + function foo(a: number) { + if (a === 1) { + function foo() { } // duplicate function + ~~~ +!!! error TS2393: Duplicate function implementation. + foo(); + foo(10); // not ok + ~~~~~~~ +!!! error TS2346: Supplied parameters do not match any signature of call target. + } + else { + function foo() { } // duplicate function + ~~~ +!!! error TS2393: Duplicate function implementation. + foo(); + foo(10); // not ok + ~~~~~~~ +!!! error TS2346: Supplied parameters do not match any signature of call target. + } + foo(10); // not ok + ~~~~~~~ +!!! error TS2346: Supplied parameters do not match any signature of call target. + foo(); + } + foo(10); + foo(); // not ok - needs number + ~~~~~ +!!! error TS2346: Supplied parameters do not match any signature of call target. \ No newline at end of file diff --git a/tests/baselines/reference/blockScopedSameNameFunctionDeclarationES5.js b/tests/baselines/reference/blockScopedSameNameFunctionDeclarationES5.js new file mode 100644 index 00000000000..4c7721f9b43 --- /dev/null +++ b/tests/baselines/reference/blockScopedSameNameFunctionDeclarationES5.js @@ -0,0 +1,35 @@ +//// [blockScopedSameNameFunctionDeclarationES5.ts] +function foo(a: number) { + if (a === 1) { + function foo() { } // duplicate function + foo(); + foo(10); // not ok + } + else { + function foo() { } // duplicate function + foo(); + foo(10); // not ok + } + foo(10); // not ok + foo(); +} +foo(10); +foo(); // not ok - needs number + +//// [blockScopedSameNameFunctionDeclarationES5.js] +function foo(a) { + if (a === 1) { + function foo() { } // duplicate function + foo(); + foo(10); // not ok + } + else { + function foo() { } // duplicate function + foo(); + foo(10); // not ok + } + foo(10); // not ok + foo(); +} +foo(10); +foo(); // not ok - needs number diff --git a/tests/baselines/reference/blockScopedSameNameFunctionDeclarationES6.errors.txt b/tests/baselines/reference/blockScopedSameNameFunctionDeclarationES6.errors.txt new file mode 100644 index 00000000000..5d15278f098 --- /dev/null +++ b/tests/baselines/reference/blockScopedSameNameFunctionDeclarationES6.errors.txt @@ -0,0 +1,37 @@ +tests/cases/compiler/blockScopedSameNameFunctionDeclarationES6.ts(3,18): error TS2393: Duplicate function implementation. +tests/cases/compiler/blockScopedSameNameFunctionDeclarationES6.ts(5,9): error TS2346: Supplied parameters do not match any signature of call target. +tests/cases/compiler/blockScopedSameNameFunctionDeclarationES6.ts(8,18): error TS2393: Duplicate function implementation. +tests/cases/compiler/blockScopedSameNameFunctionDeclarationES6.ts(10,9): error TS2346: Supplied parameters do not match any signature of call target. +tests/cases/compiler/blockScopedSameNameFunctionDeclarationES6.ts(12,5): error TS2346: Supplied parameters do not match any signature of call target. +tests/cases/compiler/blockScopedSameNameFunctionDeclarationES6.ts(16,1): error TS2346: Supplied parameters do not match any signature of call target. + + +==== tests/cases/compiler/blockScopedSameNameFunctionDeclarationES6.ts (6 errors) ==== + function foo(a: number) { + if (a === 10) { + function foo() { } // duplicate + ~~~ +!!! error TS2393: Duplicate function implementation. + foo(); + foo(10); // not ok + ~~~~~~~ +!!! error TS2346: Supplied parameters do not match any signature of call target. + } + else { + function foo() { } // duplicate + ~~~ +!!! error TS2393: Duplicate function implementation. + foo(); + foo(10);// not ok + ~~~~~~~ +!!! error TS2346: Supplied parameters do not match any signature of call target. + } + foo(10); // not ok + ~~~~~~~ +!!! error TS2346: Supplied parameters do not match any signature of call target. + foo(); + } + foo(10); + foo(); // not ok - needs number + ~~~~~ +!!! error TS2346: Supplied parameters do not match any signature of call target. \ No newline at end of file diff --git a/tests/baselines/reference/blockScopedSameNameFunctionDeclarationES6.js b/tests/baselines/reference/blockScopedSameNameFunctionDeclarationES6.js new file mode 100644 index 00000000000..c793b74c60a --- /dev/null +++ b/tests/baselines/reference/blockScopedSameNameFunctionDeclarationES6.js @@ -0,0 +1,35 @@ +//// [blockScopedSameNameFunctionDeclarationES6.ts] +function foo(a: number) { + if (a === 10) { + function foo() { } // duplicate + foo(); + foo(10); // not ok + } + else { + function foo() { } // duplicate + foo(); + foo(10);// not ok + } + foo(10); // not ok + foo(); +} +foo(10); +foo(); // not ok - needs number + +//// [blockScopedSameNameFunctionDeclarationES6.js] +function foo(a) { + if (a === 10) { + function foo() { } // duplicate + foo(); + foo(10); // not ok + } + else { + function foo() { } // duplicate + foo(); + foo(10); // not ok + } + foo(10); // not ok + foo(); +} +foo(10); +foo(); // not ok - needs number diff --git a/tests/baselines/reference/blockScopedSameNameFunctionDeclarationStrictES5.errors.txt b/tests/baselines/reference/blockScopedSameNameFunctionDeclarationStrictES5.errors.txt new file mode 100644 index 00000000000..36ce2d8c488 --- /dev/null +++ b/tests/baselines/reference/blockScopedSameNameFunctionDeclarationStrictES5.errors.txt @@ -0,0 +1,38 @@ +tests/cases/compiler/blockScopedSameNameFunctionDeclarationStrictES5.ts(4,18): error TS1250: Function declarations are not allowed inside blocks in strict mode when targeting 'ES3' or 'ES5'. +tests/cases/compiler/blockScopedSameNameFunctionDeclarationStrictES5.ts(6,9): error TS2346: Supplied parameters do not match any signature of call target. +tests/cases/compiler/blockScopedSameNameFunctionDeclarationStrictES5.ts(9,18): error TS1250: Function declarations are not allowed inside blocks in strict mode when targeting 'ES3' or 'ES5'. +tests/cases/compiler/blockScopedSameNameFunctionDeclarationStrictES5.ts(11,9): error TS2346: Supplied parameters do not match any signature of call target. +tests/cases/compiler/blockScopedSameNameFunctionDeclarationStrictES5.ts(14,5): error TS2346: Supplied parameters do not match any signature of call target. +tests/cases/compiler/blockScopedSameNameFunctionDeclarationStrictES5.ts(17,1): error TS2346: Supplied parameters do not match any signature of call target. + + +==== tests/cases/compiler/blockScopedSameNameFunctionDeclarationStrictES5.ts (6 errors) ==== + "use strict"; + function foo(a: number) { + if (a === 1) { + function foo() { } // Error to declare function in block scope + ~~~ +!!! error TS1250: Function declarations are not allowed inside blocks in strict mode when targeting 'ES3' or 'ES5'. + foo(); + foo(10); // not ok + ~~~~~~~ +!!! error TS2346: Supplied parameters do not match any signature of call target. + } + else { + function foo() { } // Error to declare function in block scope + ~~~ +!!! error TS1250: Function declarations are not allowed inside blocks in strict mode when targeting 'ES3' or 'ES5'. + foo(); + foo(10); // not ok + ~~~~~~~ +!!! error TS2346: Supplied parameters do not match any signature of call target. + } + foo(10); + foo(); // not ok - needs number + ~~~~~ +!!! error TS2346: Supplied parameters do not match any signature of call target. + } + foo(10); + foo(); // not ok - needs number + ~~~~~ +!!! error TS2346: Supplied parameters do not match any signature of call target. \ No newline at end of file diff --git a/tests/baselines/reference/blockScopedSameNameFunctionDeclarationStrictES5.js b/tests/baselines/reference/blockScopedSameNameFunctionDeclarationStrictES5.js new file mode 100644 index 00000000000..b51be0493cd --- /dev/null +++ b/tests/baselines/reference/blockScopedSameNameFunctionDeclarationStrictES5.js @@ -0,0 +1,37 @@ +//// [blockScopedSameNameFunctionDeclarationStrictES5.ts] +"use strict"; +function foo(a: number) { + if (a === 1) { + function foo() { } // Error to declare function in block scope + foo(); + foo(10); // not ok + } + else { + function foo() { } // Error to declare function in block scope + foo(); + foo(10); // not ok + } + foo(10); + foo(); // not ok - needs number +} +foo(10); +foo(); // not ok - needs number + +//// [blockScopedSameNameFunctionDeclarationStrictES5.js] +"use strict"; +function foo(a) { + if (a === 1) { + function foo() { } // Error to declare function in block scope + foo(); + foo(10); // not ok + } + else { + function foo() { } // Error to declare function in block scope + foo(); + foo(10); // not ok + } + foo(10); + foo(); // not ok - needs number +} +foo(10); +foo(); // not ok - needs number diff --git a/tests/baselines/reference/blockScopedSameNameFunctionDeclarationStrictES6.errors.txt b/tests/baselines/reference/blockScopedSameNameFunctionDeclarationStrictES6.errors.txt new file mode 100644 index 00000000000..7b8834c5594 --- /dev/null +++ b/tests/baselines/reference/blockScopedSameNameFunctionDeclarationStrictES6.errors.txt @@ -0,0 +1,32 @@ +tests/cases/compiler/blockScopedSameNameFunctionDeclarationStrictES6.ts(6,9): error TS2346: Supplied parameters do not match any signature of call target. +tests/cases/compiler/blockScopedSameNameFunctionDeclarationStrictES6.ts(11,9): error TS2346: Supplied parameters do not match any signature of call target. +tests/cases/compiler/blockScopedSameNameFunctionDeclarationStrictES6.ts(14,5): error TS2346: Supplied parameters do not match any signature of call target. +tests/cases/compiler/blockScopedSameNameFunctionDeclarationStrictES6.ts(17,1): error TS2346: Supplied parameters do not match any signature of call target. + + +==== tests/cases/compiler/blockScopedSameNameFunctionDeclarationStrictES6.ts (4 errors) ==== + "use strict"; + function foo(a: number) { + if (a === 10) { + function foo() { } + foo(); + foo(10); // not ok + ~~~~~~~ +!!! error TS2346: Supplied parameters do not match any signature of call target. + } + else { + function foo() { } + foo(); + foo(10); // not ok + ~~~~~~~ +!!! error TS2346: Supplied parameters do not match any signature of call target. + } + foo(10); + foo(); // not ok + ~~~~~ +!!! error TS2346: Supplied parameters do not match any signature of call target. + } + foo(10); + foo(); // not ok - needs number + ~~~~~ +!!! error TS2346: Supplied parameters do not match any signature of call target. \ No newline at end of file diff --git a/tests/baselines/reference/blockScopedSameNameFunctionDeclarationStrictES6.js b/tests/baselines/reference/blockScopedSameNameFunctionDeclarationStrictES6.js new file mode 100644 index 00000000000..863df86c031 --- /dev/null +++ b/tests/baselines/reference/blockScopedSameNameFunctionDeclarationStrictES6.js @@ -0,0 +1,37 @@ +//// [blockScopedSameNameFunctionDeclarationStrictES6.ts] +"use strict"; +function foo(a: number) { + if (a === 10) { + function foo() { } + foo(); + foo(10); // not ok + } + else { + function foo() { } + foo(); + foo(10); // not ok + } + foo(10); + foo(); // not ok +} +foo(10); +foo(); // not ok - needs number + +//// [blockScopedSameNameFunctionDeclarationStrictES6.js] +"use strict"; +function foo(a) { + if (a === 10) { + function foo() { } + foo(); + foo(10); // not ok + } + else { + function foo() { } + foo(); + foo(10); // not ok + } + foo(10); + foo(); // not ok +} +foo(10); +foo(); // not ok - needs number diff --git a/tests/baselines/reference/bluebirdStaticThis.errors.txt b/tests/baselines/reference/bluebirdStaticThis.errors.txt new file mode 100644 index 00000000000..6e78a90db4b --- /dev/null +++ b/tests/baselines/reference/bluebirdStaticThis.errors.txt @@ -0,0 +1,164 @@ +tests/cases/compiler/bluebirdStaticThis.ts(5,15): error TS2420: Class 'Promise' incorrectly implements interface 'Thenable'. + Property 'then' is missing in type 'Promise'. +tests/cases/compiler/bluebirdStaticThis.ts(22,51): error TS2305: Module 'Promise' has no exported member 'Resolver'. +tests/cases/compiler/bluebirdStaticThis.ts(57,109): error TS2305: Module 'Promise' has no exported member 'Inspection'. +tests/cases/compiler/bluebirdStaticThis.ts(58,91): error TS2305: Module 'Promise' has no exported member 'Inspection'. +tests/cases/compiler/bluebirdStaticThis.ts(59,91): error TS2305: Module 'Promise' has no exported member 'Inspection'. +tests/cases/compiler/bluebirdStaticThis.ts(60,73): error TS2305: Module 'Promise' has no exported member 'Inspection'. + + +==== tests/cases/compiler/bluebirdStaticThis.ts (6 errors) ==== + // This version is reduced from the full d.ts by removing almost all the tests + // and all the comments. + // Then it adds explicit `this` arguments to the static members. + // Tests by: Bart van der Schoor + declare class Promise implements Promise.Thenable { + ~~~~~~~ +!!! error TS2420: Class 'Promise' incorrectly implements interface 'Thenable'. +!!! error TS2420: Property 'then' is missing in type 'Promise'. + constructor(callback: (resolve: (thenableOrResult: R | Promise.Thenable) => void, reject: (error: any) => void) => void); + static try(dit: typeof Promise, fn: () => Promise.Thenable, args?: any[], ctx?: any): Promise; + static try(dit: typeof Promise, fn: () => R, args?: any[], ctx?: any): Promise; + + static attempt(dit: typeof Promise, fn: () => Promise.Thenable, args?: any[], ctx?: any): Promise; + static attempt(dit: typeof Promise, fn: () => R, args?: any[], ctx?: any): Promise; + + static method(dit: typeof Promise, fn: Function): Function; + + static resolve(dit: typeof Promise): Promise; + static resolve(dit: typeof Promise, value: Promise.Thenable): Promise; + static resolve(dit: typeof Promise, value: R): Promise; + + static reject(dit: typeof Promise, reason: any): Promise; + static reject(dit: typeof Promise, reason: any): Promise; + + static defer(dit: typeof Promise): Promise.Resolver; + ~~~~~~~~ +!!! error TS2305: Module 'Promise' has no exported member 'Resolver'. + + static cast(dit: typeof Promise, value: Promise.Thenable): Promise; + static cast(dit: typeof Promise, value: R): Promise; + + static bind(dit: typeof Promise, thisArg: any): Promise; + + static is(dit: typeof Promise, value: any): boolean; + + static longStackTraces(dit: typeof Promise): void; + + static delay(dit: typeof Promise, value: Promise.Thenable, ms: number): Promise; + static delay(dit: typeof Promise, value: R, ms: number): Promise; + static delay(dit: typeof Promise, ms: number): Promise; + + static promisify(dit: typeof Promise, nodeFunction: Function, receiver?: any): Function; + + static promisifyAll(dit: typeof Promise, target: Object): Object; + + static coroutine(dit: typeof Promise, generatorFunction: Function): Function; + + static spawn(dit: typeof Promise, generatorFunction: Function): Promise; + + static noConflict(dit: typeof Promise): typeof Promise; + + static onPossiblyUnhandledRejection(dit: typeof Promise, handler: (reason: any) => any): void; + + static all(dit: typeof Promise, values: Promise.Thenable[]>): Promise; + static all(dit: typeof Promise, values: Promise.Thenable): Promise; + static all(dit: typeof Promise, values: Promise.Thenable[]): Promise; + static all(dit: typeof Promise, values: R[]): Promise; + + static props(dit: typeof Promise, object: Promise): Promise; + static props(dit: typeof Promise, object: Object): Promise; + + static settle(dit: typeof Promise, values: Promise.Thenable[]>): Promise[]>; + ~~~~~~~~~~ +!!! error TS2305: Module 'Promise' has no exported member 'Inspection'. + static settle(dit: typeof Promise, values: Promise.Thenable): Promise[]>; + ~~~~~~~~~~ +!!! error TS2305: Module 'Promise' has no exported member 'Inspection'. + static settle(dit: typeof Promise, values: Promise.Thenable[]): Promise[]>; + ~~~~~~~~~~ +!!! error TS2305: Module 'Promise' has no exported member 'Inspection'. + static settle(dit: typeof Promise, values: R[]): Promise[]>; + ~~~~~~~~~~ +!!! error TS2305: Module 'Promise' has no exported member 'Inspection'. + + static any(dit: typeof Promise, values: Promise.Thenable[]>): Promise; + static any(dit: typeof Promise, values: Promise.Thenable): Promise; + static any(dit: typeof Promise, values: Promise.Thenable[]): Promise; + static any(dit: typeof Promise, values: R[]): Promise; + + static race(dit: typeof Promise, values: Promise.Thenable[]>): Promise; + static race(dit: typeof Promise, values: Promise.Thenable): Promise; + static race(dit: typeof Promise, values: Promise.Thenable[]): Promise; + static race(dit: typeof Promise, values: R[]): Promise; + + static some(dit: typeof Promise, values: Promise.Thenable[]>, count: number): Promise; + static some(dit: typeof Promise, values: Promise.Thenable, count: number): Promise; + static some(dit: typeof Promise, values: Promise.Thenable[], count: number): Promise; + static some(dit: typeof Promise, values: R[], count: number): Promise; + + static join(dit: typeof Promise, ...values: Promise.Thenable[]): Promise; + static join(dit: typeof Promise, ...values: R[]): Promise; + + static map(dit: typeof Promise, values: Promise.Thenable[]>, mapper: (item: R, index: number, arrayLength: number) => Promise.Thenable): Promise; + static map(dit: typeof Promise, values: Promise.Thenable[]>, mapper: (item: R, index: number, arrayLength: number) => U): Promise; + static map(dit: typeof Promise, values: Promise.Thenable, mapper: (item: R, index: number, arrayLength: number) => Promise.Thenable): Promise; + static map(dit: typeof Promise, values: Promise.Thenable, mapper: (item: R, index: number, arrayLength: number) => U): Promise; + static map(dit: typeof Promise, values: Promise.Thenable[], mapper: (item: R, index: number, arrayLength: number) => Promise.Thenable): Promise; + static map(dit: typeof Promise, values: Promise.Thenable[], mapper: (item: R, index: number, arrayLength: number) => U): Promise; + static map(dit: typeof Promise, values: R[], mapper: (item: R, index: number, arrayLength: number) => Promise.Thenable): Promise; + static map(dit: typeof Promise, values: R[], mapper: (item: R, index: number, arrayLength: number) => U): Promise; + + static reduce(dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; + static reduce(dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; + + static reduce(dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; + static reduce(dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; + + static reduce(dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; + static reduce(dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; + + static reduce(dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; + static reduce(dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; + + static filter(dit: typeof Promise, values: Promise.Thenable[]>, filterer: (item: R, index: number, arrayLength: number) => Promise.Thenable): Promise; + static filter(dit: typeof Promise, values: Promise.Thenable[]>, filterer: (item: R, index: number, arrayLength: number) => boolean): Promise; + static filter(dit: typeof Promise, values: Promise.Thenable, filterer: (item: R, index: number, arrayLength: number) => Promise.Thenable): Promise; + static filter(dit: typeof Promise, values: Promise.Thenable, filterer: (item: R, index: number, arrayLength: number) => boolean): Promise; + static filter(dit: typeof Promise, values: Promise.Thenable[], filterer: (item: R, index: number, arrayLength: number) => Promise.Thenable): Promise; + static filter(dit: typeof Promise, values: Promise.Thenable[], filterer: (item: R, index: number, arrayLength: number) => boolean): Promise; + static filter(dit: typeof Promise, values: R[], filterer: (item: R, index: number, arrayLength: number) => Promise.Thenable): Promise; + static filter(dit: typeof Promise, values: R[], filterer: (item: R, index: number, arrayLength: number) => boolean): Promise; + } + + declare module Promise { + export interface Thenable { + then(onFulfilled: (value: R) => Thenable, onRejected: (error: any) => Thenable): Thenable; + then(onFulfilled: (value: R) => Thenable, onRejected?: (error: any) => U): Thenable; + then(onFulfilled: (value: R) => U, onRejected: (error: any) => Thenable): Thenable; + then(onFulfilled?: (value: R) => U, onRejected?: (error: any) => U): Thenable; + } + + } + + declare module 'bluebird' { + export = Promise; + } + interface Foo { + a: number; + b: string; + } + var x: any; + var arr: any[]; + var foo: Foo; + var fooProm: Promise; + + fooProm = Promise.try(Promise, () => { + return foo; + }); + fooProm = Promise.try(Promise, () => { + return foo; + }, arr); + fooProm = Promise.try(Promise, () => { + return foo; + }, arr, x); \ No newline at end of file diff --git a/tests/baselines/reference/bluebirdStaticThis.js b/tests/baselines/reference/bluebirdStaticThis.js new file mode 100644 index 00000000000..301f32319a7 --- /dev/null +++ b/tests/baselines/reference/bluebirdStaticThis.js @@ -0,0 +1,157 @@ +//// [bluebirdStaticThis.ts] +// This version is reduced from the full d.ts by removing almost all the tests +// and all the comments. +// Then it adds explicit `this` arguments to the static members. +// Tests by: Bart van der Schoor +declare class Promise implements Promise.Thenable { + constructor(callback: (resolve: (thenableOrResult: R | Promise.Thenable) => void, reject: (error: any) => void) => void); + static try(dit: typeof Promise, fn: () => Promise.Thenable, args?: any[], ctx?: any): Promise; + static try(dit: typeof Promise, fn: () => R, args?: any[], ctx?: any): Promise; + + static attempt(dit: typeof Promise, fn: () => Promise.Thenable, args?: any[], ctx?: any): Promise; + static attempt(dit: typeof Promise, fn: () => R, args?: any[], ctx?: any): Promise; + + static method(dit: typeof Promise, fn: Function): Function; + + static resolve(dit: typeof Promise): Promise; + static resolve(dit: typeof Promise, value: Promise.Thenable): Promise; + static resolve(dit: typeof Promise, value: R): Promise; + + static reject(dit: typeof Promise, reason: any): Promise; + static reject(dit: typeof Promise, reason: any): Promise; + + static defer(dit: typeof Promise): Promise.Resolver; + + static cast(dit: typeof Promise, value: Promise.Thenable): Promise; + static cast(dit: typeof Promise, value: R): Promise; + + static bind(dit: typeof Promise, thisArg: any): Promise; + + static is(dit: typeof Promise, value: any): boolean; + + static longStackTraces(dit: typeof Promise): void; + + static delay(dit: typeof Promise, value: Promise.Thenable, ms: number): Promise; + static delay(dit: typeof Promise, value: R, ms: number): Promise; + static delay(dit: typeof Promise, ms: number): Promise; + + static promisify(dit: typeof Promise, nodeFunction: Function, receiver?: any): Function; + + static promisifyAll(dit: typeof Promise, target: Object): Object; + + static coroutine(dit: typeof Promise, generatorFunction: Function): Function; + + static spawn(dit: typeof Promise, generatorFunction: Function): Promise; + + static noConflict(dit: typeof Promise): typeof Promise; + + static onPossiblyUnhandledRejection(dit: typeof Promise, handler: (reason: any) => any): void; + + static all(dit: typeof Promise, values: Promise.Thenable[]>): Promise; + static all(dit: typeof Promise, values: Promise.Thenable): Promise; + static all(dit: typeof Promise, values: Promise.Thenable[]): Promise; + static all(dit: typeof Promise, values: R[]): Promise; + + static props(dit: typeof Promise, object: Promise): Promise; + static props(dit: typeof Promise, object: Object): Promise; + + static settle(dit: typeof Promise, values: Promise.Thenable[]>): Promise[]>; + static settle(dit: typeof Promise, values: Promise.Thenable): Promise[]>; + static settle(dit: typeof Promise, values: Promise.Thenable[]): Promise[]>; + static settle(dit: typeof Promise, values: R[]): Promise[]>; + + static any(dit: typeof Promise, values: Promise.Thenable[]>): Promise; + static any(dit: typeof Promise, values: Promise.Thenable): Promise; + static any(dit: typeof Promise, values: Promise.Thenable[]): Promise; + static any(dit: typeof Promise, values: R[]): Promise; + + static race(dit: typeof Promise, values: Promise.Thenable[]>): Promise; + static race(dit: typeof Promise, values: Promise.Thenable): Promise; + static race(dit: typeof Promise, values: Promise.Thenable[]): Promise; + static race(dit: typeof Promise, values: R[]): Promise; + + static some(dit: typeof Promise, values: Promise.Thenable[]>, count: number): Promise; + static some(dit: typeof Promise, values: Promise.Thenable, count: number): Promise; + static some(dit: typeof Promise, values: Promise.Thenable[], count: number): Promise; + static some(dit: typeof Promise, values: R[], count: number): Promise; + + static join(dit: typeof Promise, ...values: Promise.Thenable[]): Promise; + static join(dit: typeof Promise, ...values: R[]): Promise; + + static map(dit: typeof Promise, values: Promise.Thenable[]>, mapper: (item: R, index: number, arrayLength: number) => Promise.Thenable): Promise; + static map(dit: typeof Promise, values: Promise.Thenable[]>, mapper: (item: R, index: number, arrayLength: number) => U): Promise; + static map(dit: typeof Promise, values: Promise.Thenable, mapper: (item: R, index: number, arrayLength: number) => Promise.Thenable): Promise; + static map(dit: typeof Promise, values: Promise.Thenable, mapper: (item: R, index: number, arrayLength: number) => U): Promise; + static map(dit: typeof Promise, values: Promise.Thenable[], mapper: (item: R, index: number, arrayLength: number) => Promise.Thenable): Promise; + static map(dit: typeof Promise, values: Promise.Thenable[], mapper: (item: R, index: number, arrayLength: number) => U): Promise; + static map(dit: typeof Promise, values: R[], mapper: (item: R, index: number, arrayLength: number) => Promise.Thenable): Promise; + static map(dit: typeof Promise, values: R[], mapper: (item: R, index: number, arrayLength: number) => U): Promise; + + static reduce(dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; + static reduce(dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; + + static reduce(dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; + static reduce(dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; + + static reduce(dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; + static reduce(dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; + + static reduce(dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; + static reduce(dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; + + static filter(dit: typeof Promise, values: Promise.Thenable[]>, filterer: (item: R, index: number, arrayLength: number) => Promise.Thenable): Promise; + static filter(dit: typeof Promise, values: Promise.Thenable[]>, filterer: (item: R, index: number, arrayLength: number) => boolean): Promise; + static filter(dit: typeof Promise, values: Promise.Thenable, filterer: (item: R, index: number, arrayLength: number) => Promise.Thenable): Promise; + static filter(dit: typeof Promise, values: Promise.Thenable, filterer: (item: R, index: number, arrayLength: number) => boolean): Promise; + static filter(dit: typeof Promise, values: Promise.Thenable[], filterer: (item: R, index: number, arrayLength: number) => Promise.Thenable): Promise; + static filter(dit: typeof Promise, values: Promise.Thenable[], filterer: (item: R, index: number, arrayLength: number) => boolean): Promise; + static filter(dit: typeof Promise, values: R[], filterer: (item: R, index: number, arrayLength: number) => Promise.Thenable): Promise; + static filter(dit: typeof Promise, values: R[], filterer: (item: R, index: number, arrayLength: number) => boolean): Promise; +} + +declare module Promise { + export interface Thenable { + then(onFulfilled: (value: R) => Thenable, onRejected: (error: any) => Thenable): Thenable; + then(onFulfilled: (value: R) => Thenable, onRejected?: (error: any) => U): Thenable; + then(onFulfilled: (value: R) => U, onRejected: (error: any) => Thenable): Thenable; + then(onFulfilled?: (value: R) => U, onRejected?: (error: any) => U): Thenable; + } + +} + +declare module 'bluebird' { + export = Promise; +} +interface Foo { + a: number; + b: string; +} +var x: any; +var arr: any[]; +var foo: Foo; +var fooProm: Promise; + +fooProm = Promise.try(Promise, () => { + return foo; +}); +fooProm = Promise.try(Promise, () => { + return foo; +}, arr); +fooProm = Promise.try(Promise, () => { + return foo; +}, arr, x); + +//// [bluebirdStaticThis.js] +var x; +var arr; +var foo; +var fooProm; +fooProm = Promise.try(Promise, function () { + return foo; +}); +fooProm = Promise.try(Promise, function () { + return foo; +}, arr); +fooProm = Promise.try(Promise, function () { + return foo; +}, arr, x); diff --git a/tests/baselines/reference/callGenericFunctionWithZeroTypeArguments.symbols b/tests/baselines/reference/callGenericFunctionWithZeroTypeArguments.symbols index 107650c530e..83f18f2d41d 100644 --- a/tests/baselines/reference/callGenericFunctionWithZeroTypeArguments.symbols +++ b/tests/baselines/reference/callGenericFunctionWithZeroTypeArguments.symbols @@ -38,7 +38,7 @@ class C { >C : Symbol(C, Decl(callGenericFunctionWithZeroTypeArguments.ts, 9, 15)) f(x: T): T { ->f : Symbol(f, Decl(callGenericFunctionWithZeroTypeArguments.ts, 11, 9)) +>f : Symbol(C.f, Decl(callGenericFunctionWithZeroTypeArguments.ts, 11, 9)) >T : Symbol(T, Decl(callGenericFunctionWithZeroTypeArguments.ts, 12, 6)) >x : Symbol(x, Decl(callGenericFunctionWithZeroTypeArguments.ts, 12, 9)) >T : Symbol(T, Decl(callGenericFunctionWithZeroTypeArguments.ts, 12, 6)) @@ -57,7 +57,7 @@ interface I { >I : Symbol(I, Decl(callGenericFunctionWithZeroTypeArguments.ts, 16, 24)) f(x: T): T; ->f : Symbol(f, Decl(callGenericFunctionWithZeroTypeArguments.ts, 18, 13)) +>f : Symbol(I.f, Decl(callGenericFunctionWithZeroTypeArguments.ts, 18, 13)) >T : Symbol(T, Decl(callGenericFunctionWithZeroTypeArguments.ts, 19, 6)) >x : Symbol(x, Decl(callGenericFunctionWithZeroTypeArguments.ts, 19, 9)) >T : Symbol(T, Decl(callGenericFunctionWithZeroTypeArguments.ts, 19, 6)) @@ -78,7 +78,7 @@ class C2 { >T : Symbol(T, Decl(callGenericFunctionWithZeroTypeArguments.ts, 24, 9)) f(x: T): T { ->f : Symbol(f, Decl(callGenericFunctionWithZeroTypeArguments.ts, 24, 13)) +>f : Symbol(C2.f, Decl(callGenericFunctionWithZeroTypeArguments.ts, 24, 13)) >x : Symbol(x, Decl(callGenericFunctionWithZeroTypeArguments.ts, 25, 6)) >T : Symbol(T, Decl(callGenericFunctionWithZeroTypeArguments.ts, 24, 9)) >T : Symbol(T, Decl(callGenericFunctionWithZeroTypeArguments.ts, 24, 9)) @@ -97,7 +97,7 @@ interface I2 { >T : Symbol(T, Decl(callGenericFunctionWithZeroTypeArguments.ts, 31, 13)) f(x: T): T; ->f : Symbol(f, Decl(callGenericFunctionWithZeroTypeArguments.ts, 31, 17)) +>f : Symbol(I2.f, Decl(callGenericFunctionWithZeroTypeArguments.ts, 31, 17)) >x : Symbol(x, Decl(callGenericFunctionWithZeroTypeArguments.ts, 32, 6)) >T : Symbol(T, Decl(callGenericFunctionWithZeroTypeArguments.ts, 31, 13)) >T : Symbol(T, Decl(callGenericFunctionWithZeroTypeArguments.ts, 31, 13)) diff --git a/tests/baselines/reference/callSignatureAssignabilityInInheritance2.symbols b/tests/baselines/reference/callSignatureAssignabilityInInheritance2.symbols index 12bc165575b..f1fa53d7b6c 100644 --- a/tests/baselines/reference/callSignatureAssignabilityInInheritance2.symbols +++ b/tests/baselines/reference/callSignatureAssignabilityInInheritance2.symbols @@ -3,51 +3,51 @@ class Base { foo: string; } >Base : Symbol(Base, Decl(callSignatureAssignabilityInInheritance2.ts, 0, 0)) ->foo : Symbol(foo, Decl(callSignatureAssignabilityInInheritance2.ts, 2, 12)) +>foo : Symbol(Base.foo, Decl(callSignatureAssignabilityInInheritance2.ts, 2, 12)) class Derived extends Base { bar: string; } >Derived : Symbol(Derived, Decl(callSignatureAssignabilityInInheritance2.ts, 2, 27)) >Base : Symbol(Base, Decl(callSignatureAssignabilityInInheritance2.ts, 0, 0)) ->bar : Symbol(bar, Decl(callSignatureAssignabilityInInheritance2.ts, 3, 28)) +>bar : Symbol(Derived.bar, Decl(callSignatureAssignabilityInInheritance2.ts, 3, 28)) class Derived2 extends Derived { baz: string; } >Derived2 : Symbol(Derived2, Decl(callSignatureAssignabilityInInheritance2.ts, 3, 43)) >Derived : Symbol(Derived, Decl(callSignatureAssignabilityInInheritance2.ts, 2, 27)) ->baz : Symbol(baz, Decl(callSignatureAssignabilityInInheritance2.ts, 4, 32)) +>baz : Symbol(Derived2.baz, Decl(callSignatureAssignabilityInInheritance2.ts, 4, 32)) class OtherDerived extends Base { bing: string; } >OtherDerived : Symbol(OtherDerived, Decl(callSignatureAssignabilityInInheritance2.ts, 4, 47)) >Base : Symbol(Base, Decl(callSignatureAssignabilityInInheritance2.ts, 0, 0)) ->bing : Symbol(bing, Decl(callSignatureAssignabilityInInheritance2.ts, 5, 33)) +>bing : Symbol(OtherDerived.bing, Decl(callSignatureAssignabilityInInheritance2.ts, 5, 33)) interface A { // T >A : Symbol(A, Decl(callSignatureAssignabilityInInheritance2.ts, 5, 49)) // M's a: (x: number) => number[]; ->a : Symbol(a, Decl(callSignatureAssignabilityInInheritance2.ts, 7, 13)) +>a : Symbol(A.a, Decl(callSignatureAssignabilityInInheritance2.ts, 7, 13)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance2.ts, 9, 8)) a2: (x: number) => string[]; ->a2 : Symbol(a2, Decl(callSignatureAssignabilityInInheritance2.ts, 9, 31)) +>a2 : Symbol(A.a2, Decl(callSignatureAssignabilityInInheritance2.ts, 9, 31)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance2.ts, 10, 9)) a3: (x: number) => void; ->a3 : Symbol(a3, Decl(callSignatureAssignabilityInInheritance2.ts, 10, 32)) +>a3 : Symbol(A.a3, Decl(callSignatureAssignabilityInInheritance2.ts, 10, 32)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance2.ts, 11, 9)) a4: (x: string, y: number) => string; ->a4 : Symbol(a4, Decl(callSignatureAssignabilityInInheritance2.ts, 11, 28)) +>a4 : Symbol(A.a4, Decl(callSignatureAssignabilityInInheritance2.ts, 11, 28)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance2.ts, 12, 9)) >y : Symbol(y, Decl(callSignatureAssignabilityInInheritance2.ts, 12, 19)) a5: (x: (arg: string) => number) => string; ->a5 : Symbol(a5, Decl(callSignatureAssignabilityInInheritance2.ts, 12, 41)) +>a5 : Symbol(A.a5, Decl(callSignatureAssignabilityInInheritance2.ts, 12, 41)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance2.ts, 13, 9)) >arg : Symbol(arg, Decl(callSignatureAssignabilityInInheritance2.ts, 13, 13)) a6: (x: (arg: Base) => Derived) => Base; ->a6 : Symbol(a6, Decl(callSignatureAssignabilityInInheritance2.ts, 13, 47)) +>a6 : Symbol(A.a6, Decl(callSignatureAssignabilityInInheritance2.ts, 13, 47)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance2.ts, 14, 9)) >arg : Symbol(arg, Decl(callSignatureAssignabilityInInheritance2.ts, 14, 13)) >Base : Symbol(Base, Decl(callSignatureAssignabilityInInheritance2.ts, 0, 0)) @@ -55,7 +55,7 @@ interface A { // T >Base : Symbol(Base, Decl(callSignatureAssignabilityInInheritance2.ts, 0, 0)) a7: (x: (arg: Base) => Derived) => (r: Base) => Derived; ->a7 : Symbol(a7, Decl(callSignatureAssignabilityInInheritance2.ts, 14, 44)) +>a7 : Symbol(A.a7, Decl(callSignatureAssignabilityInInheritance2.ts, 14, 44)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance2.ts, 15, 9)) >arg : Symbol(arg, Decl(callSignatureAssignabilityInInheritance2.ts, 15, 13)) >Base : Symbol(Base, Decl(callSignatureAssignabilityInInheritance2.ts, 0, 0)) @@ -65,7 +65,7 @@ interface A { // T >Derived : Symbol(Derived, Decl(callSignatureAssignabilityInInheritance2.ts, 2, 27)) a8: (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived; ->a8 : Symbol(a8, Decl(callSignatureAssignabilityInInheritance2.ts, 15, 60)) +>a8 : Symbol(A.a8, Decl(callSignatureAssignabilityInInheritance2.ts, 15, 60)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance2.ts, 16, 9)) >arg : Symbol(arg, Decl(callSignatureAssignabilityInInheritance2.ts, 16, 13)) >Base : Symbol(Base, Decl(callSignatureAssignabilityInInheritance2.ts, 0, 0)) @@ -79,7 +79,7 @@ interface A { // T >Derived : Symbol(Derived, Decl(callSignatureAssignabilityInInheritance2.ts, 2, 27)) a9: (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived; ->a9 : Symbol(a9, Decl(callSignatureAssignabilityInInheritance2.ts, 16, 88)) +>a9 : Symbol(A.a9, Decl(callSignatureAssignabilityInInheritance2.ts, 16, 88)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance2.ts, 17, 9)) >arg : Symbol(arg, Decl(callSignatureAssignabilityInInheritance2.ts, 17, 13)) >Base : Symbol(Base, Decl(callSignatureAssignabilityInInheritance2.ts, 0, 0)) @@ -93,13 +93,13 @@ interface A { // T >Derived : Symbol(Derived, Decl(callSignatureAssignabilityInInheritance2.ts, 2, 27)) a10: (...x: Derived[]) => Derived; ->a10 : Symbol(a10, Decl(callSignatureAssignabilityInInheritance2.ts, 17, 88)) +>a10 : Symbol(A.a10, Decl(callSignatureAssignabilityInInheritance2.ts, 17, 88)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance2.ts, 18, 10)) >Derived : Symbol(Derived, Decl(callSignatureAssignabilityInInheritance2.ts, 2, 27)) >Derived : Symbol(Derived, Decl(callSignatureAssignabilityInInheritance2.ts, 2, 27)) a11: (x: { foo: string }, y: { foo: string; bar: string }) => Base; ->a11 : Symbol(a11, Decl(callSignatureAssignabilityInInheritance2.ts, 18, 38)) +>a11 : Symbol(A.a11, Decl(callSignatureAssignabilityInInheritance2.ts, 18, 38)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance2.ts, 19, 10)) >foo : Symbol(foo, Decl(callSignatureAssignabilityInInheritance2.ts, 19, 14)) >y : Symbol(y, Decl(callSignatureAssignabilityInInheritance2.ts, 19, 29)) @@ -108,7 +108,7 @@ interface A { // T >Base : Symbol(Base, Decl(callSignatureAssignabilityInInheritance2.ts, 0, 0)) a12: (x: Array, y: Array) => Array; ->a12 : Symbol(a12, Decl(callSignatureAssignabilityInInheritance2.ts, 19, 71)) +>a12 : Symbol(A.a12, Decl(callSignatureAssignabilityInInheritance2.ts, 19, 71)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance2.ts, 20, 10)) >Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >Base : Symbol(Base, Decl(callSignatureAssignabilityInInheritance2.ts, 0, 0)) @@ -119,7 +119,7 @@ interface A { // T >Derived : Symbol(Derived, Decl(callSignatureAssignabilityInInheritance2.ts, 2, 27)) a13: (x: Array, y: Array) => Array; ->a13 : Symbol(a13, Decl(callSignatureAssignabilityInInheritance2.ts, 20, 64)) +>a13 : Symbol(A.a13, Decl(callSignatureAssignabilityInInheritance2.ts, 20, 64)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance2.ts, 21, 10)) >Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >Base : Symbol(Base, Decl(callSignatureAssignabilityInInheritance2.ts, 0, 0)) @@ -130,14 +130,14 @@ interface A { // T >Derived : Symbol(Derived, Decl(callSignatureAssignabilityInInheritance2.ts, 2, 27)) a14: (x: { a: string; b: number }) => Object; ->a14 : Symbol(a14, Decl(callSignatureAssignabilityInInheritance2.ts, 21, 63)) +>a14 : Symbol(A.a14, Decl(callSignatureAssignabilityInInheritance2.ts, 21, 63)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance2.ts, 22, 10)) >a : Symbol(a, Decl(callSignatureAssignabilityInInheritance2.ts, 22, 14)) >b : Symbol(b, Decl(callSignatureAssignabilityInInheritance2.ts, 22, 25)) >Object : Symbol(Object, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) a15: { ->a15 : Symbol(a15, Decl(callSignatureAssignabilityInInheritance2.ts, 22, 49)) +>a15 : Symbol(A.a15, Decl(callSignatureAssignabilityInInheritance2.ts, 22, 49)) (x: number): number[]; >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance2.ts, 24, 9)) @@ -147,7 +147,7 @@ interface A { // T }; a16: { ->a16 : Symbol(a16, Decl(callSignatureAssignabilityInInheritance2.ts, 26, 6)) +>a16 : Symbol(A.a16, Decl(callSignatureAssignabilityInInheritance2.ts, 26, 6)) (x: T): number[]; >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance2.ts, 28, 9)) @@ -163,7 +163,7 @@ interface A { // T }; a17: { ->a17 : Symbol(a17, Decl(callSignatureAssignabilityInInheritance2.ts, 30, 6)) +>a17 : Symbol(A.a17, Decl(callSignatureAssignabilityInInheritance2.ts, 30, 6)) (x: (a: number) => number): number[]; >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance2.ts, 32, 9)) @@ -175,7 +175,7 @@ interface A { // T }; a18: { ->a18 : Symbol(a18, Decl(callSignatureAssignabilityInInheritance2.ts, 34, 6)) +>a18 : Symbol(A.a18, Decl(callSignatureAssignabilityInInheritance2.ts, 34, 6)) (x: { >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance2.ts, 36, 9)) @@ -195,8 +195,8 @@ interface A { // T (a: Date): Date; >a : Symbol(a, Decl(callSignatureAssignabilityInInheritance2.ts, 42, 13)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) }): any[]; }; @@ -209,27 +209,27 @@ interface I extends A { // N's a: (x: T) => T[]; // ok, instantiation of N is a subtype of M, T is number ->a : Symbol(a, Decl(callSignatureAssignabilityInInheritance2.ts, 48, 23)) +>a : Symbol(I.a, Decl(callSignatureAssignabilityInInheritance2.ts, 48, 23)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance2.ts, 50, 8)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance2.ts, 50, 11)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance2.ts, 50, 8)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance2.ts, 50, 8)) a2: (x: T) => string[]; // ok ->a2 : Symbol(a2, Decl(callSignatureAssignabilityInInheritance2.ts, 50, 24)) +>a2 : Symbol(I.a2, Decl(callSignatureAssignabilityInInheritance2.ts, 50, 24)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance2.ts, 51, 9)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance2.ts, 51, 12)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance2.ts, 51, 9)) a3: (x: T) => T; // ok since Base returns void ->a3 : Symbol(a3, Decl(callSignatureAssignabilityInInheritance2.ts, 51, 30)) +>a3 : Symbol(I.a3, Decl(callSignatureAssignabilityInInheritance2.ts, 51, 30)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance2.ts, 52, 9)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance2.ts, 52, 12)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance2.ts, 52, 9)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance2.ts, 52, 9)) a4: (x: T, y: U) => T; // ok, instantiation of N is a subtype of M, T is string, U is number ->a4 : Symbol(a4, Decl(callSignatureAssignabilityInInheritance2.ts, 52, 23)) +>a4 : Symbol(I.a4, Decl(callSignatureAssignabilityInInheritance2.ts, 52, 23)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance2.ts, 53, 9)) >U : Symbol(U, Decl(callSignatureAssignabilityInInheritance2.ts, 53, 11)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance2.ts, 53, 15)) @@ -239,7 +239,7 @@ interface I extends A { >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance2.ts, 53, 9)) a5: (x: (arg: T) => U) => T; // ok, U is in a parameter position so inferences can be made ->a5 : Symbol(a5, Decl(callSignatureAssignabilityInInheritance2.ts, 53, 32)) +>a5 : Symbol(I.a5, Decl(callSignatureAssignabilityInInheritance2.ts, 53, 32)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance2.ts, 54, 9)) >U : Symbol(U, Decl(callSignatureAssignabilityInInheritance2.ts, 54, 11)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance2.ts, 54, 15)) @@ -249,7 +249,7 @@ interface I extends A { >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance2.ts, 54, 9)) a6: (x: (arg: T) => U) => T; // ok, same as a5 but with object type hierarchy ->a6 : Symbol(a6, Decl(callSignatureAssignabilityInInheritance2.ts, 54, 38)) +>a6 : Symbol(I.a6, Decl(callSignatureAssignabilityInInheritance2.ts, 54, 38)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance2.ts, 55, 9)) >Base : Symbol(Base, Decl(callSignatureAssignabilityInInheritance2.ts, 0, 0)) >U : Symbol(U, Decl(callSignatureAssignabilityInInheritance2.ts, 55, 24)) @@ -261,7 +261,7 @@ interface I extends A { >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance2.ts, 55, 9)) a7: (x: (arg: T) => U) => (r: T) => U; // ok ->a7 : Symbol(a7, Decl(callSignatureAssignabilityInInheritance2.ts, 55, 67)) +>a7 : Symbol(I.a7, Decl(callSignatureAssignabilityInInheritance2.ts, 55, 67)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance2.ts, 56, 9)) >Base : Symbol(Base, Decl(callSignatureAssignabilityInInheritance2.ts, 0, 0)) >U : Symbol(U, Decl(callSignatureAssignabilityInInheritance2.ts, 56, 24)) @@ -275,7 +275,7 @@ interface I extends A { >U : Symbol(U, Decl(callSignatureAssignabilityInInheritance2.ts, 56, 24)) a8: (x: (arg: T) => U, y: (arg2: T) => U) => (r: T) => U; // ok ->a8 : Symbol(a8, Decl(callSignatureAssignabilityInInheritance2.ts, 56, 77)) +>a8 : Symbol(I.a8, Decl(callSignatureAssignabilityInInheritance2.ts, 56, 77)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance2.ts, 57, 9)) >Base : Symbol(Base, Decl(callSignatureAssignabilityInInheritance2.ts, 0, 0)) >U : Symbol(U, Decl(callSignatureAssignabilityInInheritance2.ts, 57, 24)) @@ -293,7 +293,7 @@ interface I extends A { >U : Symbol(U, Decl(callSignatureAssignabilityInInheritance2.ts, 57, 24)) a9: (x: (arg: T) => U, y: (arg2: { foo: string; bing: number }) => U) => (r: T) => U; // ok, same as a8 with compatible object literal ->a9 : Symbol(a9, Decl(callSignatureAssignabilityInInheritance2.ts, 57, 96)) +>a9 : Symbol(I.a9, Decl(callSignatureAssignabilityInInheritance2.ts, 57, 96)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance2.ts, 58, 9)) >Base : Symbol(Base, Decl(callSignatureAssignabilityInInheritance2.ts, 0, 0)) >U : Symbol(U, Decl(callSignatureAssignabilityInInheritance2.ts, 58, 24)) @@ -312,7 +312,7 @@ interface I extends A { >U : Symbol(U, Decl(callSignatureAssignabilityInInheritance2.ts, 58, 24)) a10: (...x: T[]) => T; // ok ->a10 : Symbol(a10, Decl(callSignatureAssignabilityInInheritance2.ts, 58, 124)) +>a10 : Symbol(I.a10, Decl(callSignatureAssignabilityInInheritance2.ts, 58, 124)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance2.ts, 59, 10)) >Derived : Symbol(Derived, Decl(callSignatureAssignabilityInInheritance2.ts, 2, 27)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance2.ts, 59, 29)) @@ -320,7 +320,7 @@ interface I extends A { >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance2.ts, 59, 10)) a11: (x: T, y: T) => T; // ok ->a11 : Symbol(a11, Decl(callSignatureAssignabilityInInheritance2.ts, 59, 45)) +>a11 : Symbol(I.a11, Decl(callSignatureAssignabilityInInheritance2.ts, 59, 45)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance2.ts, 60, 10)) >Base : Symbol(Base, Decl(callSignatureAssignabilityInInheritance2.ts, 0, 0)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance2.ts, 60, 26)) @@ -330,7 +330,7 @@ interface I extends A { >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance2.ts, 60, 10)) a12: >(x: Array, y: T) => Array; // ok, less specific parameter type ->a12 : Symbol(a12, Decl(callSignatureAssignabilityInInheritance2.ts, 60, 43)) +>a12 : Symbol(I.a12, Decl(callSignatureAssignabilityInInheritance2.ts, 60, 43)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance2.ts, 61, 10)) >Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >Base : Symbol(Base, Decl(callSignatureAssignabilityInInheritance2.ts, 0, 0)) @@ -343,7 +343,7 @@ interface I extends A { >Derived : Symbol(Derived, Decl(callSignatureAssignabilityInInheritance2.ts, 2, 27)) a13: >(x: Array, y: T) => T; // ok, T = Array, satisfies constraint, contextual signature instantiation succeeds ->a13 : Symbol(a13, Decl(callSignatureAssignabilityInInheritance2.ts, 61, 73)) +>a13 : Symbol(I.a13, Decl(callSignatureAssignabilityInInheritance2.ts, 61, 73)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance2.ts, 62, 10)) >Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >Derived : Symbol(Derived, Decl(callSignatureAssignabilityInInheritance2.ts, 2, 27)) @@ -355,7 +355,7 @@ interface I extends A { >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance2.ts, 62, 10)) a14: (x: { a: T; b: T }) => T; // ok, best common type yields T = {} but that's satisfactory for this signature ->a14 : Symbol(a14, Decl(callSignatureAssignabilityInInheritance2.ts, 62, 63)) +>a14 : Symbol(I.a14, Decl(callSignatureAssignabilityInInheritance2.ts, 62, 63)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance2.ts, 63, 10)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance2.ts, 63, 13)) >a : Symbol(a, Decl(callSignatureAssignabilityInInheritance2.ts, 63, 17)) @@ -365,21 +365,21 @@ interface I extends A { >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance2.ts, 63, 10)) a15: (x: T) => T[]; // ok ->a15 : Symbol(a15, Decl(callSignatureAssignabilityInInheritance2.ts, 63, 37)) +>a15 : Symbol(I.a15, Decl(callSignatureAssignabilityInInheritance2.ts, 63, 37)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance2.ts, 64, 10)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance2.ts, 64, 13)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance2.ts, 64, 10)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance2.ts, 64, 10)) a16: (x: T) => number[]; // ok ->a16 : Symbol(a16, Decl(callSignatureAssignabilityInInheritance2.ts, 64, 26)) +>a16 : Symbol(I.a16, Decl(callSignatureAssignabilityInInheritance2.ts, 64, 26)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance2.ts, 65, 10)) >Base : Symbol(Base, Decl(callSignatureAssignabilityInInheritance2.ts, 0, 0)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance2.ts, 65, 26)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance2.ts, 65, 10)) a17: (x: (a: T) => T) => T[]; // ok ->a17 : Symbol(a17, Decl(callSignatureAssignabilityInInheritance2.ts, 65, 44)) +>a17 : Symbol(I.a17, Decl(callSignatureAssignabilityInInheritance2.ts, 65, 44)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance2.ts, 66, 10)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance2.ts, 66, 13)) >a : Symbol(a, Decl(callSignatureAssignabilityInInheritance2.ts, 66, 17)) @@ -388,7 +388,7 @@ interface I extends A { >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance2.ts, 66, 10)) a18: (x: (a: T) => T) => T[]; // ok, no inferences for T but assignable to any ->a18 : Symbol(a18, Decl(callSignatureAssignabilityInInheritance2.ts, 66, 36)) +>a18 : Symbol(I.a18, Decl(callSignatureAssignabilityInInheritance2.ts, 66, 36)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance2.ts, 67, 10)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance2.ts, 67, 13)) >a : Symbol(a, Decl(callSignatureAssignabilityInInheritance2.ts, 67, 17)) diff --git a/tests/baselines/reference/callSignatureAssignabilityInInheritance3.errors.txt b/tests/baselines/reference/callSignatureAssignabilityInInheritance3.errors.txt index 7e9d75b1b41..2d7e795d26a 100644 --- a/tests/baselines/reference/callSignatureAssignabilityInInheritance3.errors.txt +++ b/tests/baselines/reference/callSignatureAssignabilityInInheritance3.errors.txt @@ -2,12 +2,12 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/callSign Types of property 'a2' are incompatible. Type '(x: T) => U[]' is not assignable to type '(x: number) => string[]'. Types of parameters 'x' and 'x' are incompatible. - Type 'T' is not assignable to type 'number'. + Type 'number' is not assignable to type 'T'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/callSignatureAssignabilityInInheritance3.ts(60,19): error TS2430: Interface 'I4' incorrectly extends interface 'A'. Types of property 'a8' are incompatible. Type '(x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U' is not assignable to type '(x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived'. Types of parameters 'y' and 'y' are incompatible. - Type '(arg2: { foo: number; }) => any' is not assignable to type '(arg2: Base) => Derived'. + Type '(arg2: Base) => Derived' is not assignable to type '(arg2: { foo: number; }) => any'. Types of parameters 'arg2' and 'arg2' are incompatible. Type '{ foo: number; }' is not assignable to type 'Base'. Types of property 'foo' are incompatible. @@ -71,7 +71,7 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/callSign !!! error TS2430: Types of property 'a2' are incompatible. !!! error TS2430: Type '(x: T) => U[]' is not assignable to type '(x: number) => string[]'. !!! error TS2430: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2430: Type 'T' is not assignable to type 'number'. +!!! error TS2430: Type 'number' is not assignable to type 'T'. a2: (x: T) => U[]; // error, no contextual signature instantiation since I2.a2 is not generic } @@ -86,7 +86,7 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/callSign !!! error TS2430: Types of property 'a8' are incompatible. !!! error TS2430: Type '(x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U' is not assignable to type '(x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived'. !!! error TS2430: Types of parameters 'y' and 'y' are incompatible. -!!! error TS2430: Type '(arg2: { foo: number; }) => any' is not assignable to type '(arg2: Base) => Derived'. +!!! error TS2430: Type '(arg2: Base) => Derived' is not assignable to type '(arg2: { foo: number; }) => any'. !!! error TS2430: Types of parameters 'arg2' and 'arg2' are incompatible. !!! error TS2430: Type '{ foo: number; }' is not assignable to type 'Base'. !!! error TS2430: Types of property 'foo' are incompatible. diff --git a/tests/baselines/reference/callSignatureAssignabilityInInheritance4.symbols b/tests/baselines/reference/callSignatureAssignabilityInInheritance4.symbols index f45d7f318d2..4261483f451 100644 --- a/tests/baselines/reference/callSignatureAssignabilityInInheritance4.symbols +++ b/tests/baselines/reference/callSignatureAssignabilityInInheritance4.symbols @@ -3,48 +3,48 @@ class Base { foo: string; } >Base : Symbol(Base, Decl(callSignatureAssignabilityInInheritance4.ts, 0, 0)) ->foo : Symbol(foo, Decl(callSignatureAssignabilityInInheritance4.ts, 2, 12)) +>foo : Symbol(Base.foo, Decl(callSignatureAssignabilityInInheritance4.ts, 2, 12)) class Derived extends Base { bar: string; } >Derived : Symbol(Derived, Decl(callSignatureAssignabilityInInheritance4.ts, 2, 27)) >Base : Symbol(Base, Decl(callSignatureAssignabilityInInheritance4.ts, 0, 0)) ->bar : Symbol(bar, Decl(callSignatureAssignabilityInInheritance4.ts, 3, 28)) +>bar : Symbol(Derived.bar, Decl(callSignatureAssignabilityInInheritance4.ts, 3, 28)) class Derived2 extends Derived { baz: string; } >Derived2 : Symbol(Derived2, Decl(callSignatureAssignabilityInInheritance4.ts, 3, 43)) >Derived : Symbol(Derived, Decl(callSignatureAssignabilityInInheritance4.ts, 2, 27)) ->baz : Symbol(baz, Decl(callSignatureAssignabilityInInheritance4.ts, 4, 32)) +>baz : Symbol(Derived2.baz, Decl(callSignatureAssignabilityInInheritance4.ts, 4, 32)) class OtherDerived extends Base { bing: string; } >OtherDerived : Symbol(OtherDerived, Decl(callSignatureAssignabilityInInheritance4.ts, 4, 47)) >Base : Symbol(Base, Decl(callSignatureAssignabilityInInheritance4.ts, 0, 0)) ->bing : Symbol(bing, Decl(callSignatureAssignabilityInInheritance4.ts, 5, 33)) +>bing : Symbol(OtherDerived.bing, Decl(callSignatureAssignabilityInInheritance4.ts, 5, 33)) interface A { // T >A : Symbol(A, Decl(callSignatureAssignabilityInInheritance4.ts, 5, 49)) // M's a: (x: T) => T[]; ->a : Symbol(a, Decl(callSignatureAssignabilityInInheritance4.ts, 7, 13)) +>a : Symbol(A.a, Decl(callSignatureAssignabilityInInheritance4.ts, 7, 13)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance4.ts, 9, 8)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance4.ts, 9, 11)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance4.ts, 9, 8)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance4.ts, 9, 8)) a2: (x: T) => string[]; ->a2 : Symbol(a2, Decl(callSignatureAssignabilityInInheritance4.ts, 9, 24)) +>a2 : Symbol(A.a2, Decl(callSignatureAssignabilityInInheritance4.ts, 9, 24)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance4.ts, 10, 9)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance4.ts, 10, 12)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance4.ts, 10, 9)) a3: (x: T) => void; ->a3 : Symbol(a3, Decl(callSignatureAssignabilityInInheritance4.ts, 10, 30)) +>a3 : Symbol(A.a3, Decl(callSignatureAssignabilityInInheritance4.ts, 10, 30)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance4.ts, 11, 9)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance4.ts, 11, 12)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance4.ts, 11, 9)) a4: (x: T, y: U) => string; ->a4 : Symbol(a4, Decl(callSignatureAssignabilityInInheritance4.ts, 11, 26)) +>a4 : Symbol(A.a4, Decl(callSignatureAssignabilityInInheritance4.ts, 11, 26)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance4.ts, 12, 9)) >U : Symbol(U, Decl(callSignatureAssignabilityInInheritance4.ts, 12, 11)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance4.ts, 12, 14)) @@ -53,7 +53,7 @@ interface A { // T >U : Symbol(U, Decl(callSignatureAssignabilityInInheritance4.ts, 12, 11)) a5: (x: (arg: T) => U) => T; ->a5 : Symbol(a5, Decl(callSignatureAssignabilityInInheritance4.ts, 12, 36)) +>a5 : Symbol(A.a5, Decl(callSignatureAssignabilityInInheritance4.ts, 12, 36)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance4.ts, 13, 9)) >U : Symbol(U, Decl(callSignatureAssignabilityInInheritance4.ts, 13, 11)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance4.ts, 13, 14)) @@ -63,7 +63,7 @@ interface A { // T >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance4.ts, 13, 9)) a6: (x: (arg: T) => Derived) => T; ->a6 : Symbol(a6, Decl(callSignatureAssignabilityInInheritance4.ts, 13, 37)) +>a6 : Symbol(A.a6, Decl(callSignatureAssignabilityInInheritance4.ts, 13, 37)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance4.ts, 14, 9)) >Base : Symbol(Base, Decl(callSignatureAssignabilityInInheritance4.ts, 0, 0)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance4.ts, 14, 25)) @@ -73,7 +73,7 @@ interface A { // T >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance4.ts, 14, 9)) a11: (x: { foo: T }, y: { foo: T; bar: T }) => Base; ->a11 : Symbol(a11, Decl(callSignatureAssignabilityInInheritance4.ts, 14, 54)) +>a11 : Symbol(A.a11, Decl(callSignatureAssignabilityInInheritance4.ts, 14, 54)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance4.ts, 15, 10)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance4.ts, 15, 13)) >foo : Symbol(foo, Decl(callSignatureAssignabilityInInheritance4.ts, 15, 17)) @@ -86,7 +86,7 @@ interface A { // T >Base : Symbol(Base, Decl(callSignatureAssignabilityInInheritance4.ts, 0, 0)) a15: (x: { a: T; b: T }) => T[]; ->a15 : Symbol(a15, Decl(callSignatureAssignabilityInInheritance4.ts, 15, 59)) +>a15 : Symbol(A.a15, Decl(callSignatureAssignabilityInInheritance4.ts, 15, 59)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance4.ts, 16, 10)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance4.ts, 16, 13)) >a : Symbol(a, Decl(callSignatureAssignabilityInInheritance4.ts, 16, 17)) @@ -96,7 +96,7 @@ interface A { // T >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance4.ts, 16, 10)) a16: (x: { a: T; b: T }) => T[]; ->a16 : Symbol(a16, Decl(callSignatureAssignabilityInInheritance4.ts, 16, 39)) +>a16 : Symbol(A.a16, Decl(callSignatureAssignabilityInInheritance4.ts, 16, 39)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance4.ts, 17, 10)) >Base : Symbol(Base, Decl(callSignatureAssignabilityInInheritance4.ts, 0, 0)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance4.ts, 17, 26)) @@ -107,7 +107,7 @@ interface A { // T >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance4.ts, 17, 10)) a17: { ->a17 : Symbol(a17, Decl(callSignatureAssignabilityInInheritance4.ts, 17, 52)) +>a17 : Symbol(A.a17, Decl(callSignatureAssignabilityInInheritance4.ts, 17, 52)) (x: (a: T) => T): T[]; >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance4.ts, 19, 9)) @@ -129,7 +129,7 @@ interface A { // T }; a18: { ->a18 : Symbol(a18, Decl(callSignatureAssignabilityInInheritance4.ts, 21, 6)) +>a18 : Symbol(A.a18, Decl(callSignatureAssignabilityInInheritance4.ts, 21, 6)) (x: { >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance4.ts, 23, 9)) @@ -177,27 +177,27 @@ interface I extends A { // N's a: (x: T) => T[]; // ok, instantiation of N is a subtype of M, T is number ->a : Symbol(a, Decl(callSignatureAssignabilityInInheritance4.ts, 35, 23)) +>a : Symbol(I.a, Decl(callSignatureAssignabilityInInheritance4.ts, 35, 23)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance4.ts, 37, 8)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance4.ts, 37, 11)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance4.ts, 37, 8)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance4.ts, 37, 8)) a2: (x: T) => string[]; // ok ->a2 : Symbol(a2, Decl(callSignatureAssignabilityInInheritance4.ts, 37, 24)) +>a2 : Symbol(I.a2, Decl(callSignatureAssignabilityInInheritance4.ts, 37, 24)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance4.ts, 38, 9)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance4.ts, 38, 12)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance4.ts, 38, 9)) a3: (x: T) => T; // ok since Base returns void ->a3 : Symbol(a3, Decl(callSignatureAssignabilityInInheritance4.ts, 38, 30)) +>a3 : Symbol(I.a3, Decl(callSignatureAssignabilityInInheritance4.ts, 38, 30)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance4.ts, 39, 9)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance4.ts, 39, 12)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance4.ts, 39, 9)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance4.ts, 39, 9)) a4: (x: T, y: U) => string; // ok, instantiation of N is a subtype of M, T is string, U is number ->a4 : Symbol(a4, Decl(callSignatureAssignabilityInInheritance4.ts, 39, 23)) +>a4 : Symbol(I.a4, Decl(callSignatureAssignabilityInInheritance4.ts, 39, 23)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance4.ts, 40, 9)) >U : Symbol(U, Decl(callSignatureAssignabilityInInheritance4.ts, 40, 11)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance4.ts, 40, 15)) @@ -206,7 +206,7 @@ interface I extends A { >U : Symbol(U, Decl(callSignatureAssignabilityInInheritance4.ts, 40, 11)) a5: (x: (arg: T) => U) => T; // ok, U is in a parameter position so inferences can be made ->a5 : Symbol(a5, Decl(callSignatureAssignabilityInInheritance4.ts, 40, 37)) +>a5 : Symbol(I.a5, Decl(callSignatureAssignabilityInInheritance4.ts, 40, 37)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance4.ts, 41, 9)) >U : Symbol(U, Decl(callSignatureAssignabilityInInheritance4.ts, 41, 11)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance4.ts, 41, 15)) @@ -216,7 +216,7 @@ interface I extends A { >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance4.ts, 41, 9)) a6: (x: (arg: T) => U) => T; // ok, same as a5 but with object type hierarchy ->a6 : Symbol(a6, Decl(callSignatureAssignabilityInInheritance4.ts, 41, 38)) +>a6 : Symbol(I.a6, Decl(callSignatureAssignabilityInInheritance4.ts, 41, 38)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance4.ts, 42, 9)) >Base : Symbol(Base, Decl(callSignatureAssignabilityInInheritance4.ts, 0, 0)) >U : Symbol(U, Decl(callSignatureAssignabilityInInheritance4.ts, 42, 24)) @@ -228,7 +228,7 @@ interface I extends A { >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance4.ts, 42, 9)) a11: (x: { foo: T }, y: { foo: U; bar: U }) => Base; // ok ->a11 : Symbol(a11, Decl(callSignatureAssignabilityInInheritance4.ts, 42, 67)) +>a11 : Symbol(I.a11, Decl(callSignatureAssignabilityInInheritance4.ts, 42, 67)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance4.ts, 43, 10)) >U : Symbol(U, Decl(callSignatureAssignabilityInInheritance4.ts, 43, 12)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance4.ts, 43, 16)) @@ -242,7 +242,7 @@ interface I extends A { >Base : Symbol(Base, Decl(callSignatureAssignabilityInInheritance4.ts, 0, 0)) a15: (x: { a: U; b: V; }) => U[]; // ok, T = U, T = V ->a15 : Symbol(a15, Decl(callSignatureAssignabilityInInheritance4.ts, 43, 62)) +>a15 : Symbol(I.a15, Decl(callSignatureAssignabilityInInheritance4.ts, 43, 62)) >U : Symbol(U, Decl(callSignatureAssignabilityInInheritance4.ts, 44, 10)) >V : Symbol(V, Decl(callSignatureAssignabilityInInheritance4.ts, 44, 12)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance4.ts, 44, 16)) @@ -253,7 +253,7 @@ interface I extends A { >U : Symbol(U, Decl(callSignatureAssignabilityInInheritance4.ts, 44, 10)) a16: (x: { a: T; b: T }) => T[]; // ok, more general parameter type ->a16 : Symbol(a16, Decl(callSignatureAssignabilityInInheritance4.ts, 44, 43)) +>a16 : Symbol(I.a16, Decl(callSignatureAssignabilityInInheritance4.ts, 44, 43)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance4.ts, 45, 10)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance4.ts, 45, 13)) >a : Symbol(a, Decl(callSignatureAssignabilityInInheritance4.ts, 45, 17)) @@ -263,7 +263,7 @@ interface I extends A { >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance4.ts, 45, 10)) a17: (x: (a: T) => T) => T[]; // ok ->a17 : Symbol(a17, Decl(callSignatureAssignabilityInInheritance4.ts, 45, 39)) +>a17 : Symbol(I.a17, Decl(callSignatureAssignabilityInInheritance4.ts, 45, 39)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance4.ts, 46, 10)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance4.ts, 46, 13)) >a : Symbol(a, Decl(callSignatureAssignabilityInInheritance4.ts, 46, 17)) @@ -272,7 +272,7 @@ interface I extends A { >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance4.ts, 46, 10)) a18: (x: (a: T) => T) => any[]; // ok ->a18 : Symbol(a18, Decl(callSignatureAssignabilityInInheritance4.ts, 46, 36)) +>a18 : Symbol(I.a18, Decl(callSignatureAssignabilityInInheritance4.ts, 46, 36)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance4.ts, 47, 10)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance4.ts, 47, 14)) >a : Symbol(a, Decl(callSignatureAssignabilityInInheritance4.ts, 47, 17)) diff --git a/tests/baselines/reference/callSignatureAssignabilityInInheritance5.symbols b/tests/baselines/reference/callSignatureAssignabilityInInheritance5.symbols index 89797dceb70..6f92fa5d5c7 100644 --- a/tests/baselines/reference/callSignatureAssignabilityInInheritance5.symbols +++ b/tests/baselines/reference/callSignatureAssignabilityInInheritance5.symbols @@ -4,51 +4,51 @@ class Base { foo: string; } >Base : Symbol(Base, Decl(callSignatureAssignabilityInInheritance5.ts, 0, 0)) ->foo : Symbol(foo, Decl(callSignatureAssignabilityInInheritance5.ts, 3, 12)) +>foo : Symbol(Base.foo, Decl(callSignatureAssignabilityInInheritance5.ts, 3, 12)) class Derived extends Base { bar: string; } >Derived : Symbol(Derived, Decl(callSignatureAssignabilityInInheritance5.ts, 3, 27)) >Base : Symbol(Base, Decl(callSignatureAssignabilityInInheritance5.ts, 0, 0)) ->bar : Symbol(bar, Decl(callSignatureAssignabilityInInheritance5.ts, 4, 28)) +>bar : Symbol(Derived.bar, Decl(callSignatureAssignabilityInInheritance5.ts, 4, 28)) class Derived2 extends Derived { baz: string; } >Derived2 : Symbol(Derived2, Decl(callSignatureAssignabilityInInheritance5.ts, 4, 43)) >Derived : Symbol(Derived, Decl(callSignatureAssignabilityInInheritance5.ts, 3, 27)) ->baz : Symbol(baz, Decl(callSignatureAssignabilityInInheritance5.ts, 5, 32)) +>baz : Symbol(Derived2.baz, Decl(callSignatureAssignabilityInInheritance5.ts, 5, 32)) class OtherDerived extends Base { bing: string; } >OtherDerived : Symbol(OtherDerived, Decl(callSignatureAssignabilityInInheritance5.ts, 5, 47)) >Base : Symbol(Base, Decl(callSignatureAssignabilityInInheritance5.ts, 0, 0)) ->bing : Symbol(bing, Decl(callSignatureAssignabilityInInheritance5.ts, 6, 33)) +>bing : Symbol(OtherDerived.bing, Decl(callSignatureAssignabilityInInheritance5.ts, 6, 33)) interface A { // T >A : Symbol(A, Decl(callSignatureAssignabilityInInheritance5.ts, 6, 49)) // M's a: (x: number) => number[]; ->a : Symbol(a, Decl(callSignatureAssignabilityInInheritance5.ts, 8, 13)) +>a : Symbol(A.a, Decl(callSignatureAssignabilityInInheritance5.ts, 8, 13)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance5.ts, 10, 8)) a2: (x: number) => string[]; ->a2 : Symbol(a2, Decl(callSignatureAssignabilityInInheritance5.ts, 10, 31)) +>a2 : Symbol(A.a2, Decl(callSignatureAssignabilityInInheritance5.ts, 10, 31)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance5.ts, 11, 9)) a3: (x: number) => void; ->a3 : Symbol(a3, Decl(callSignatureAssignabilityInInheritance5.ts, 11, 32)) +>a3 : Symbol(A.a3, Decl(callSignatureAssignabilityInInheritance5.ts, 11, 32)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance5.ts, 12, 9)) a4: (x: string, y: number) => string; ->a4 : Symbol(a4, Decl(callSignatureAssignabilityInInheritance5.ts, 12, 28)) +>a4 : Symbol(A.a4, Decl(callSignatureAssignabilityInInheritance5.ts, 12, 28)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance5.ts, 13, 9)) >y : Symbol(y, Decl(callSignatureAssignabilityInInheritance5.ts, 13, 19)) a5: (x: (arg: string) => number) => string; ->a5 : Symbol(a5, Decl(callSignatureAssignabilityInInheritance5.ts, 13, 41)) +>a5 : Symbol(A.a5, Decl(callSignatureAssignabilityInInheritance5.ts, 13, 41)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance5.ts, 14, 9)) >arg : Symbol(arg, Decl(callSignatureAssignabilityInInheritance5.ts, 14, 13)) a6: (x: (arg: Base) => Derived) => Base; ->a6 : Symbol(a6, Decl(callSignatureAssignabilityInInheritance5.ts, 14, 47)) +>a6 : Symbol(A.a6, Decl(callSignatureAssignabilityInInheritance5.ts, 14, 47)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance5.ts, 15, 9)) >arg : Symbol(arg, Decl(callSignatureAssignabilityInInheritance5.ts, 15, 13)) >Base : Symbol(Base, Decl(callSignatureAssignabilityInInheritance5.ts, 0, 0)) @@ -56,7 +56,7 @@ interface A { // T >Base : Symbol(Base, Decl(callSignatureAssignabilityInInheritance5.ts, 0, 0)) a7: (x: (arg: Base) => Derived) => (r: Base) => Derived; ->a7 : Symbol(a7, Decl(callSignatureAssignabilityInInheritance5.ts, 15, 44)) +>a7 : Symbol(A.a7, Decl(callSignatureAssignabilityInInheritance5.ts, 15, 44)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance5.ts, 16, 9)) >arg : Symbol(arg, Decl(callSignatureAssignabilityInInheritance5.ts, 16, 13)) >Base : Symbol(Base, Decl(callSignatureAssignabilityInInheritance5.ts, 0, 0)) @@ -66,7 +66,7 @@ interface A { // T >Derived : Symbol(Derived, Decl(callSignatureAssignabilityInInheritance5.ts, 3, 27)) a8: (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived; ->a8 : Symbol(a8, Decl(callSignatureAssignabilityInInheritance5.ts, 16, 60)) +>a8 : Symbol(A.a8, Decl(callSignatureAssignabilityInInheritance5.ts, 16, 60)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance5.ts, 17, 9)) >arg : Symbol(arg, Decl(callSignatureAssignabilityInInheritance5.ts, 17, 13)) >Base : Symbol(Base, Decl(callSignatureAssignabilityInInheritance5.ts, 0, 0)) @@ -80,7 +80,7 @@ interface A { // T >Derived : Symbol(Derived, Decl(callSignatureAssignabilityInInheritance5.ts, 3, 27)) a9: (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived; ->a9 : Symbol(a9, Decl(callSignatureAssignabilityInInheritance5.ts, 17, 88)) +>a9 : Symbol(A.a9, Decl(callSignatureAssignabilityInInheritance5.ts, 17, 88)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance5.ts, 18, 9)) >arg : Symbol(arg, Decl(callSignatureAssignabilityInInheritance5.ts, 18, 13)) >Base : Symbol(Base, Decl(callSignatureAssignabilityInInheritance5.ts, 0, 0)) @@ -94,13 +94,13 @@ interface A { // T >Derived : Symbol(Derived, Decl(callSignatureAssignabilityInInheritance5.ts, 3, 27)) a10: (...x: Derived[]) => Derived; ->a10 : Symbol(a10, Decl(callSignatureAssignabilityInInheritance5.ts, 18, 88)) +>a10 : Symbol(A.a10, Decl(callSignatureAssignabilityInInheritance5.ts, 18, 88)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance5.ts, 19, 10)) >Derived : Symbol(Derived, Decl(callSignatureAssignabilityInInheritance5.ts, 3, 27)) >Derived : Symbol(Derived, Decl(callSignatureAssignabilityInInheritance5.ts, 3, 27)) a11: (x: { foo: string }, y: { foo: string; bar: string }) => Base; ->a11 : Symbol(a11, Decl(callSignatureAssignabilityInInheritance5.ts, 19, 38)) +>a11 : Symbol(A.a11, Decl(callSignatureAssignabilityInInheritance5.ts, 19, 38)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance5.ts, 20, 10)) >foo : Symbol(foo, Decl(callSignatureAssignabilityInInheritance5.ts, 20, 14)) >y : Symbol(y, Decl(callSignatureAssignabilityInInheritance5.ts, 20, 29)) @@ -109,7 +109,7 @@ interface A { // T >Base : Symbol(Base, Decl(callSignatureAssignabilityInInheritance5.ts, 0, 0)) a12: (x: Array, y: Array) => Array; ->a12 : Symbol(a12, Decl(callSignatureAssignabilityInInheritance5.ts, 20, 71)) +>a12 : Symbol(A.a12, Decl(callSignatureAssignabilityInInheritance5.ts, 20, 71)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance5.ts, 21, 10)) >Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >Base : Symbol(Base, Decl(callSignatureAssignabilityInInheritance5.ts, 0, 0)) @@ -120,7 +120,7 @@ interface A { // T >Derived : Symbol(Derived, Decl(callSignatureAssignabilityInInheritance5.ts, 3, 27)) a13: (x: Array, y: Array) => Array; ->a13 : Symbol(a13, Decl(callSignatureAssignabilityInInheritance5.ts, 21, 64)) +>a13 : Symbol(A.a13, Decl(callSignatureAssignabilityInInheritance5.ts, 21, 64)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance5.ts, 22, 10)) >Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >Base : Symbol(Base, Decl(callSignatureAssignabilityInInheritance5.ts, 0, 0)) @@ -131,7 +131,7 @@ interface A { // T >Derived : Symbol(Derived, Decl(callSignatureAssignabilityInInheritance5.ts, 3, 27)) a14: (x: { a: string; b: number }) => Object; ->a14 : Symbol(a14, Decl(callSignatureAssignabilityInInheritance5.ts, 22, 63)) +>a14 : Symbol(A.a14, Decl(callSignatureAssignabilityInInheritance5.ts, 22, 63)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance5.ts, 23, 10)) >a : Symbol(a, Decl(callSignatureAssignabilityInInheritance5.ts, 23, 14)) >b : Symbol(b, Decl(callSignatureAssignabilityInInheritance5.ts, 23, 25)) @@ -143,7 +143,7 @@ interface B extends A { >A : Symbol(A, Decl(callSignatureAssignabilityInInheritance5.ts, 6, 49)) a: (x: T) => T[]; ->a : Symbol(a, Decl(callSignatureAssignabilityInInheritance5.ts, 26, 23)) +>a : Symbol(B.a, Decl(callSignatureAssignabilityInInheritance5.ts, 26, 23)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance5.ts, 27, 8)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance5.ts, 27, 11)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance5.ts, 27, 8)) @@ -157,27 +157,27 @@ interface I extends B { // N's a: (x: T) => T[]; // ok, instantiation of N is a subtype of M, T is number ->a : Symbol(a, Decl(callSignatureAssignabilityInInheritance5.ts, 31, 23)) +>a : Symbol(I.a, Decl(callSignatureAssignabilityInInheritance5.ts, 31, 23)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance5.ts, 33, 8)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance5.ts, 33, 11)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance5.ts, 33, 8)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance5.ts, 33, 8)) a2: (x: T) => string[]; // ok ->a2 : Symbol(a2, Decl(callSignatureAssignabilityInInheritance5.ts, 33, 24)) +>a2 : Symbol(I.a2, Decl(callSignatureAssignabilityInInheritance5.ts, 33, 24)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance5.ts, 34, 9)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance5.ts, 34, 12)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance5.ts, 34, 9)) a3: (x: T) => T; // ok since Base returns void ->a3 : Symbol(a3, Decl(callSignatureAssignabilityInInheritance5.ts, 34, 30)) +>a3 : Symbol(I.a3, Decl(callSignatureAssignabilityInInheritance5.ts, 34, 30)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance5.ts, 35, 9)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance5.ts, 35, 12)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance5.ts, 35, 9)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance5.ts, 35, 9)) a4: (x: T, y: U) => T; // ok, instantiation of N is a subtype of M, T is string, U is number ->a4 : Symbol(a4, Decl(callSignatureAssignabilityInInheritance5.ts, 35, 23)) +>a4 : Symbol(I.a4, Decl(callSignatureAssignabilityInInheritance5.ts, 35, 23)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance5.ts, 36, 9)) >U : Symbol(U, Decl(callSignatureAssignabilityInInheritance5.ts, 36, 11)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance5.ts, 36, 15)) @@ -187,7 +187,7 @@ interface I extends B { >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance5.ts, 36, 9)) a5: (x: (arg: T) => U) => T; // ok, U is in a parameter position so inferences can be made ->a5 : Symbol(a5, Decl(callSignatureAssignabilityInInheritance5.ts, 36, 32)) +>a5 : Symbol(I.a5, Decl(callSignatureAssignabilityInInheritance5.ts, 36, 32)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance5.ts, 37, 9)) >U : Symbol(U, Decl(callSignatureAssignabilityInInheritance5.ts, 37, 11)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance5.ts, 37, 15)) @@ -197,7 +197,7 @@ interface I extends B { >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance5.ts, 37, 9)) a6: (x: (arg: T) => U) => T; // ok, same as a5 but with object type hierarchy ->a6 : Symbol(a6, Decl(callSignatureAssignabilityInInheritance5.ts, 37, 38)) +>a6 : Symbol(I.a6, Decl(callSignatureAssignabilityInInheritance5.ts, 37, 38)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance5.ts, 38, 9)) >Base : Symbol(Base, Decl(callSignatureAssignabilityInInheritance5.ts, 0, 0)) >U : Symbol(U, Decl(callSignatureAssignabilityInInheritance5.ts, 38, 24)) @@ -209,7 +209,7 @@ interface I extends B { >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance5.ts, 38, 9)) a7: (x: (arg: T) => U) => (r: T) => U; // ok ->a7 : Symbol(a7, Decl(callSignatureAssignabilityInInheritance5.ts, 38, 67)) +>a7 : Symbol(I.a7, Decl(callSignatureAssignabilityInInheritance5.ts, 38, 67)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance5.ts, 39, 9)) >Base : Symbol(Base, Decl(callSignatureAssignabilityInInheritance5.ts, 0, 0)) >U : Symbol(U, Decl(callSignatureAssignabilityInInheritance5.ts, 39, 24)) @@ -223,7 +223,7 @@ interface I extends B { >U : Symbol(U, Decl(callSignatureAssignabilityInInheritance5.ts, 39, 24)) a8: (x: (arg: T) => U, y: (arg2: T) => U) => (r: T) => U; // ok ->a8 : Symbol(a8, Decl(callSignatureAssignabilityInInheritance5.ts, 39, 77)) +>a8 : Symbol(I.a8, Decl(callSignatureAssignabilityInInheritance5.ts, 39, 77)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance5.ts, 40, 9)) >Base : Symbol(Base, Decl(callSignatureAssignabilityInInheritance5.ts, 0, 0)) >U : Symbol(U, Decl(callSignatureAssignabilityInInheritance5.ts, 40, 24)) @@ -241,7 +241,7 @@ interface I extends B { >U : Symbol(U, Decl(callSignatureAssignabilityInInheritance5.ts, 40, 24)) a9: (x: (arg: T) => U, y: (arg2: { foo: string; bing: number }) => U) => (r: T) => U; // ok, same as a8 with compatible object literal ->a9 : Symbol(a9, Decl(callSignatureAssignabilityInInheritance5.ts, 40, 96)) +>a9 : Symbol(I.a9, Decl(callSignatureAssignabilityInInheritance5.ts, 40, 96)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance5.ts, 41, 9)) >Base : Symbol(Base, Decl(callSignatureAssignabilityInInheritance5.ts, 0, 0)) >U : Symbol(U, Decl(callSignatureAssignabilityInInheritance5.ts, 41, 24)) @@ -260,7 +260,7 @@ interface I extends B { >U : Symbol(U, Decl(callSignatureAssignabilityInInheritance5.ts, 41, 24)) a10: (...x: T[]) => T; // ok ->a10 : Symbol(a10, Decl(callSignatureAssignabilityInInheritance5.ts, 41, 124)) +>a10 : Symbol(I.a10, Decl(callSignatureAssignabilityInInheritance5.ts, 41, 124)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance5.ts, 42, 10)) >Derived : Symbol(Derived, Decl(callSignatureAssignabilityInInheritance5.ts, 3, 27)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance5.ts, 42, 29)) @@ -268,7 +268,7 @@ interface I extends B { >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance5.ts, 42, 10)) a11: (x: T, y: T) => T; // ok ->a11 : Symbol(a11, Decl(callSignatureAssignabilityInInheritance5.ts, 42, 45)) +>a11 : Symbol(I.a11, Decl(callSignatureAssignabilityInInheritance5.ts, 42, 45)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance5.ts, 43, 10)) >Base : Symbol(Base, Decl(callSignatureAssignabilityInInheritance5.ts, 0, 0)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance5.ts, 43, 26)) @@ -278,7 +278,7 @@ interface I extends B { >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance5.ts, 43, 10)) a12: >(x: Array, y: T) => Array; // ok, less specific parameter type ->a12 : Symbol(a12, Decl(callSignatureAssignabilityInInheritance5.ts, 43, 43)) +>a12 : Symbol(I.a12, Decl(callSignatureAssignabilityInInheritance5.ts, 43, 43)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance5.ts, 44, 10)) >Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >Base : Symbol(Base, Decl(callSignatureAssignabilityInInheritance5.ts, 0, 0)) @@ -291,7 +291,7 @@ interface I extends B { >Derived : Symbol(Derived, Decl(callSignatureAssignabilityInInheritance5.ts, 3, 27)) a13: >(x: Array, y: T) => T; // ok, T = Array, satisfies constraint, contextual signature instantiation succeeds ->a13 : Symbol(a13, Decl(callSignatureAssignabilityInInheritance5.ts, 44, 73)) +>a13 : Symbol(I.a13, Decl(callSignatureAssignabilityInInheritance5.ts, 44, 73)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance5.ts, 45, 10)) >Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >Derived : Symbol(Derived, Decl(callSignatureAssignabilityInInheritance5.ts, 3, 27)) @@ -303,7 +303,7 @@ interface I extends B { >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance5.ts, 45, 10)) a14: (x: { a: T; b: T }) => T; // ok, best common type yields T = {} but that's satisfactory for this signature ->a14 : Symbol(a14, Decl(callSignatureAssignabilityInInheritance5.ts, 45, 63)) +>a14 : Symbol(I.a14, Decl(callSignatureAssignabilityInInheritance5.ts, 45, 63)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance5.ts, 46, 10)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance5.ts, 46, 13)) >a : Symbol(a, Decl(callSignatureAssignabilityInInheritance5.ts, 46, 17)) diff --git a/tests/baselines/reference/callSignatureAssignabilityInInheritance6.symbols b/tests/baselines/reference/callSignatureAssignabilityInInheritance6.symbols index 1d4c99d89db..56c7098d408 100644 --- a/tests/baselines/reference/callSignatureAssignabilityInInheritance6.symbols +++ b/tests/baselines/reference/callSignatureAssignabilityInInheritance6.symbols @@ -5,48 +5,48 @@ class Base { foo: string; } >Base : Symbol(Base, Decl(callSignatureAssignabilityInInheritance6.ts, 0, 0)) ->foo : Symbol(foo, Decl(callSignatureAssignabilityInInheritance6.ts, 4, 12)) +>foo : Symbol(Base.foo, Decl(callSignatureAssignabilityInInheritance6.ts, 4, 12)) class Derived extends Base { bar: string; } >Derived : Symbol(Derived, Decl(callSignatureAssignabilityInInheritance6.ts, 4, 27)) >Base : Symbol(Base, Decl(callSignatureAssignabilityInInheritance6.ts, 0, 0)) ->bar : Symbol(bar, Decl(callSignatureAssignabilityInInheritance6.ts, 5, 28)) +>bar : Symbol(Derived.bar, Decl(callSignatureAssignabilityInInheritance6.ts, 5, 28)) class Derived2 extends Derived { baz: string; } >Derived2 : Symbol(Derived2, Decl(callSignatureAssignabilityInInheritance6.ts, 5, 43)) >Derived : Symbol(Derived, Decl(callSignatureAssignabilityInInheritance6.ts, 4, 27)) ->baz : Symbol(baz, Decl(callSignatureAssignabilityInInheritance6.ts, 6, 32)) +>baz : Symbol(Derived2.baz, Decl(callSignatureAssignabilityInInheritance6.ts, 6, 32)) class OtherDerived extends Base { bing: string; } >OtherDerived : Symbol(OtherDerived, Decl(callSignatureAssignabilityInInheritance6.ts, 6, 47)) >Base : Symbol(Base, Decl(callSignatureAssignabilityInInheritance6.ts, 0, 0)) ->bing : Symbol(bing, Decl(callSignatureAssignabilityInInheritance6.ts, 7, 33)) +>bing : Symbol(OtherDerived.bing, Decl(callSignatureAssignabilityInInheritance6.ts, 7, 33)) interface A { // T >A : Symbol(A, Decl(callSignatureAssignabilityInInheritance6.ts, 7, 49)) // M's a: (x: T) => T[]; ->a : Symbol(a, Decl(callSignatureAssignabilityInInheritance6.ts, 9, 13)) +>a : Symbol(A.a, Decl(callSignatureAssignabilityInInheritance6.ts, 9, 13)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance6.ts, 11, 8)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance6.ts, 11, 11)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance6.ts, 11, 8)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance6.ts, 11, 8)) a2: (x: T) => string[]; ->a2 : Symbol(a2, Decl(callSignatureAssignabilityInInheritance6.ts, 11, 24)) +>a2 : Symbol(A.a2, Decl(callSignatureAssignabilityInInheritance6.ts, 11, 24)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance6.ts, 12, 9)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance6.ts, 12, 12)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance6.ts, 12, 9)) a3: (x: T) => void; ->a3 : Symbol(a3, Decl(callSignatureAssignabilityInInheritance6.ts, 12, 30)) +>a3 : Symbol(A.a3, Decl(callSignatureAssignabilityInInheritance6.ts, 12, 30)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance6.ts, 13, 9)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance6.ts, 13, 12)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance6.ts, 13, 9)) a4: (x: T, y: U) => string; ->a4 : Symbol(a4, Decl(callSignatureAssignabilityInInheritance6.ts, 13, 26)) +>a4 : Symbol(A.a4, Decl(callSignatureAssignabilityInInheritance6.ts, 13, 26)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance6.ts, 14, 9)) >U : Symbol(U, Decl(callSignatureAssignabilityInInheritance6.ts, 14, 11)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance6.ts, 14, 14)) @@ -55,7 +55,7 @@ interface A { // T >U : Symbol(U, Decl(callSignatureAssignabilityInInheritance6.ts, 14, 11)) a5: (x: (arg: T) => U) => T; ->a5 : Symbol(a5, Decl(callSignatureAssignabilityInInheritance6.ts, 14, 36)) +>a5 : Symbol(A.a5, Decl(callSignatureAssignabilityInInheritance6.ts, 14, 36)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance6.ts, 15, 9)) >U : Symbol(U, Decl(callSignatureAssignabilityInInheritance6.ts, 15, 11)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance6.ts, 15, 14)) @@ -65,7 +65,7 @@ interface A { // T >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance6.ts, 15, 9)) a6: (x: (arg: T) => Derived) => T; ->a6 : Symbol(a6, Decl(callSignatureAssignabilityInInheritance6.ts, 15, 37)) +>a6 : Symbol(A.a6, Decl(callSignatureAssignabilityInInheritance6.ts, 15, 37)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance6.ts, 16, 9)) >Base : Symbol(Base, Decl(callSignatureAssignabilityInInheritance6.ts, 0, 0)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance6.ts, 16, 25)) @@ -75,7 +75,7 @@ interface A { // T >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance6.ts, 16, 9)) a11: (x: { foo: T }, y: { foo: T; bar: T }) => Base; ->a11 : Symbol(a11, Decl(callSignatureAssignabilityInInheritance6.ts, 16, 54)) +>a11 : Symbol(A.a11, Decl(callSignatureAssignabilityInInheritance6.ts, 16, 54)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance6.ts, 17, 10)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance6.ts, 17, 13)) >foo : Symbol(foo, Decl(callSignatureAssignabilityInInheritance6.ts, 17, 17)) @@ -88,7 +88,7 @@ interface A { // T >Base : Symbol(Base, Decl(callSignatureAssignabilityInInheritance6.ts, 0, 0)) a15: (x: { a: T; b: T }) => T[]; ->a15 : Symbol(a15, Decl(callSignatureAssignabilityInInheritance6.ts, 17, 59)) +>a15 : Symbol(A.a15, Decl(callSignatureAssignabilityInInheritance6.ts, 17, 59)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance6.ts, 18, 10)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance6.ts, 18, 13)) >a : Symbol(a, Decl(callSignatureAssignabilityInInheritance6.ts, 18, 17)) @@ -98,7 +98,7 @@ interface A { // T >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance6.ts, 18, 10)) a16: (x: { a: T; b: T }) => T[]; ->a16 : Symbol(a16, Decl(callSignatureAssignabilityInInheritance6.ts, 18, 39)) +>a16 : Symbol(A.a16, Decl(callSignatureAssignabilityInInheritance6.ts, 18, 39)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance6.ts, 19, 10)) >Base : Symbol(Base, Decl(callSignatureAssignabilityInInheritance6.ts, 0, 0)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance6.ts, 19, 26)) @@ -116,7 +116,7 @@ interface I extends A { >A : Symbol(A, Decl(callSignatureAssignabilityInInheritance6.ts, 7, 49)) a: (x: T) => T[]; ->a : Symbol(a, Decl(callSignatureAssignabilityInInheritance6.ts, 23, 26)) +>a : Symbol(I.a, Decl(callSignatureAssignabilityInInheritance6.ts, 23, 26)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance6.ts, 24, 8)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance6.ts, 23, 12)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance6.ts, 23, 12)) @@ -128,7 +128,7 @@ interface I2 extends A { >A : Symbol(A, Decl(callSignatureAssignabilityInInheritance6.ts, 7, 49)) a2: (x: T) => string[]; ->a2 : Symbol(a2, Decl(callSignatureAssignabilityInInheritance6.ts, 27, 27)) +>a2 : Symbol(I2.a2, Decl(callSignatureAssignabilityInInheritance6.ts, 27, 27)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance6.ts, 28, 9)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance6.ts, 27, 13)) } @@ -139,7 +139,7 @@ interface I3 extends A { >A : Symbol(A, Decl(callSignatureAssignabilityInInheritance6.ts, 7, 49)) a3: (x: T) => T; ->a3 : Symbol(a3, Decl(callSignatureAssignabilityInInheritance6.ts, 31, 27)) +>a3 : Symbol(I3.a3, Decl(callSignatureAssignabilityInInheritance6.ts, 31, 27)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance6.ts, 32, 9)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance6.ts, 31, 13)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance6.ts, 31, 13)) @@ -151,7 +151,7 @@ interface I4 extends A { >A : Symbol(A, Decl(callSignatureAssignabilityInInheritance6.ts, 7, 49)) a4: (x: T, y: U) => string; ->a4 : Symbol(a4, Decl(callSignatureAssignabilityInInheritance6.ts, 35, 27)) +>a4 : Symbol(I4.a4, Decl(callSignatureAssignabilityInInheritance6.ts, 35, 27)) >U : Symbol(U, Decl(callSignatureAssignabilityInInheritance6.ts, 36, 9)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance6.ts, 36, 12)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance6.ts, 35, 13)) @@ -165,7 +165,7 @@ interface I5 extends A { >A : Symbol(A, Decl(callSignatureAssignabilityInInheritance6.ts, 7, 49)) a5: (x: (arg: T) => U) => T; ->a5 : Symbol(a5, Decl(callSignatureAssignabilityInInheritance6.ts, 39, 27)) +>a5 : Symbol(I5.a5, Decl(callSignatureAssignabilityInInheritance6.ts, 39, 27)) >U : Symbol(U, Decl(callSignatureAssignabilityInInheritance6.ts, 40, 9)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance6.ts, 40, 12)) >arg : Symbol(arg, Decl(callSignatureAssignabilityInInheritance6.ts, 40, 16)) @@ -180,7 +180,7 @@ interface I7 extends A { >A : Symbol(A, Decl(callSignatureAssignabilityInInheritance6.ts, 7, 49)) a11: (x: { foo: T }, y: { foo: U; bar: U }) => Base; ->a11 : Symbol(a11, Decl(callSignatureAssignabilityInInheritance6.ts, 43, 27)) +>a11 : Symbol(I7.a11, Decl(callSignatureAssignabilityInInheritance6.ts, 43, 27)) >U : Symbol(U, Decl(callSignatureAssignabilityInInheritance6.ts, 44, 10)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance6.ts, 44, 13)) >foo : Symbol(foo, Decl(callSignatureAssignabilityInInheritance6.ts, 44, 17)) @@ -199,7 +199,7 @@ interface I9 extends A { >A : Symbol(A, Decl(callSignatureAssignabilityInInheritance6.ts, 7, 49)) a16: (x: { a: T; b: T }) => T[]; ->a16 : Symbol(a16, Decl(callSignatureAssignabilityInInheritance6.ts, 47, 27)) +>a16 : Symbol(I9.a16, Decl(callSignatureAssignabilityInInheritance6.ts, 47, 27)) >x : Symbol(x, Decl(callSignatureAssignabilityInInheritance6.ts, 48, 10)) >a : Symbol(a, Decl(callSignatureAssignabilityInInheritance6.ts, 48, 14)) >T : Symbol(T, Decl(callSignatureAssignabilityInInheritance6.ts, 47, 13)) diff --git a/tests/baselines/reference/callSignatureWithoutAnnotationsOrBody.symbols b/tests/baselines/reference/callSignatureWithoutAnnotationsOrBody.symbols index 4b499ec2667..d8a43948fac 100644 --- a/tests/baselines/reference/callSignatureWithoutAnnotationsOrBody.symbols +++ b/tests/baselines/reference/callSignatureWithoutAnnotationsOrBody.symbols @@ -14,7 +14,7 @@ interface I { (); f(); ->f : Symbol(f, Decl(callSignatureWithoutAnnotationsOrBody.ts, 6, 7)) +>f : Symbol(I.f, Decl(callSignatureWithoutAnnotationsOrBody.ts, 6, 7)) } var i: I; >i : Symbol(i, Decl(callSignatureWithoutAnnotationsOrBody.ts, 9, 3)) diff --git a/tests/baselines/reference/callSignatureWithoutReturnTypeAnnotationInference.symbols b/tests/baselines/reference/callSignatureWithoutReturnTypeAnnotationInference.symbols index faba4e427ec..dd302da3671 100644 --- a/tests/baselines/reference/callSignatureWithoutReturnTypeAnnotationInference.symbols +++ b/tests/baselines/reference/callSignatureWithoutReturnTypeAnnotationInference.symbols @@ -109,7 +109,7 @@ interface I { >I : Symbol(I, Decl(callSignatureWithoutReturnTypeAnnotationInference.ts, 54, 17)) foo: string; ->foo : Symbol(foo, Decl(callSignatureWithoutReturnTypeAnnotationInference.ts, 56, 13)) +>foo : Symbol(I.foo, Decl(callSignatureWithoutReturnTypeAnnotationInference.ts, 56, 13)) } function foo9(x: number) { >foo9 : Symbol(foo9, Decl(callSignatureWithoutReturnTypeAnnotationInference.ts, 58, 1)) @@ -130,7 +130,7 @@ class C { >C : Symbol(C, Decl(callSignatureWithoutReturnTypeAnnotationInference.ts, 63, 17)) foo: string; ->foo : Symbol(foo, Decl(callSignatureWithoutReturnTypeAnnotationInference.ts, 65, 9)) +>foo : Symbol(C.foo, Decl(callSignatureWithoutReturnTypeAnnotationInference.ts, 65, 9)) } function foo10(x: number) { >foo10 : Symbol(foo10, Decl(callSignatureWithoutReturnTypeAnnotationInference.ts, 67, 1)) @@ -155,7 +155,7 @@ module M { export class C { foo: string } >C : Symbol(C, Decl(callSignatureWithoutReturnTypeAnnotationInference.ts, 75, 21)) ->foo : Symbol(foo, Decl(callSignatureWithoutReturnTypeAnnotationInference.ts, 76, 20)) +>foo : Symbol(C.foo, Decl(callSignatureWithoutReturnTypeAnnotationInference.ts, 76, 20)) } function foo11() { >foo11 : Symbol(foo11, Decl(callSignatureWithoutReturnTypeAnnotationInference.ts, 77, 1)) @@ -172,13 +172,13 @@ interface I2 { >I2 : Symbol(I2, Decl(callSignatureWithoutReturnTypeAnnotationInference.ts, 81, 18), Decl(callSignatureWithoutReturnTypeAnnotationInference.ts, 86, 1)) x: number; ->x : Symbol(x, Decl(callSignatureWithoutReturnTypeAnnotationInference.ts, 84, 14)) +>x : Symbol(I2.x, Decl(callSignatureWithoutReturnTypeAnnotationInference.ts, 84, 14)) } interface I2 { >I2 : Symbol(I2, Decl(callSignatureWithoutReturnTypeAnnotationInference.ts, 81, 18), Decl(callSignatureWithoutReturnTypeAnnotationInference.ts, 86, 1)) y: number; ->y : Symbol(y, Decl(callSignatureWithoutReturnTypeAnnotationInference.ts, 87, 14)) +>y : Symbol(I2.y, Decl(callSignatureWithoutReturnTypeAnnotationInference.ts, 87, 14)) } function foo12() { >foo12 : Symbol(foo12, Decl(callSignatureWithoutReturnTypeAnnotationInference.ts, 89, 1)) @@ -215,7 +215,7 @@ class c1 { >c1 : Symbol(c1, Decl(callSignatureWithoutReturnTypeAnnotationInference.ts, 101, 18), Decl(callSignatureWithoutReturnTypeAnnotationInference.ts, 106, 1)) foo: string; ->foo : Symbol(foo, Decl(callSignatureWithoutReturnTypeAnnotationInference.ts, 103, 10)) +>foo : Symbol(c1.foo, Decl(callSignatureWithoutReturnTypeAnnotationInference.ts, 103, 10)) constructor(x) { } >x : Symbol(x, Decl(callSignatureWithoutReturnTypeAnnotationInference.ts, 105, 16)) diff --git a/tests/baselines/reference/callSignaturesWithOptionalParameters.symbols b/tests/baselines/reference/callSignaturesWithOptionalParameters.symbols index 542bd425fb1..c86adcff927 100644 --- a/tests/baselines/reference/callSignaturesWithOptionalParameters.symbols +++ b/tests/baselines/reference/callSignaturesWithOptionalParameters.symbols @@ -37,7 +37,7 @@ class C { >C : Symbol(C, Decl(callSignaturesWithOptionalParameters.ts, 11, 9)) foo(x?: number) { } ->foo : Symbol(foo, Decl(callSignaturesWithOptionalParameters.ts, 13, 9)) +>foo : Symbol(C.foo, Decl(callSignaturesWithOptionalParameters.ts, 13, 9)) >x : Symbol(x, Decl(callSignaturesWithOptionalParameters.ts, 14, 8)) } @@ -62,7 +62,7 @@ interface I { >x : Symbol(x, Decl(callSignaturesWithOptionalParameters.ts, 22, 5)) foo(x: number, y?: number); ->foo : Symbol(foo, Decl(callSignaturesWithOptionalParameters.ts, 22, 17)) +>foo : Symbol(I.foo, Decl(callSignaturesWithOptionalParameters.ts, 22, 17)) >x : Symbol(x, Decl(callSignaturesWithOptionalParameters.ts, 23, 8)) >y : Symbol(y, Decl(callSignaturesWithOptionalParameters.ts, 23, 18)) } diff --git a/tests/baselines/reference/callSignaturesWithOptionalParameters2.symbols b/tests/baselines/reference/callSignaturesWithOptionalParameters2.symbols index e8609d66236..7900b86bcb2 100644 --- a/tests/baselines/reference/callSignaturesWithOptionalParameters2.symbols +++ b/tests/baselines/reference/callSignaturesWithOptionalParameters2.symbols @@ -39,24 +39,24 @@ class C { >C : Symbol(C, Decl(callSignaturesWithOptionalParameters2.ts, 13, 11)) foo(x?: number); ->foo : Symbol(foo, Decl(callSignaturesWithOptionalParameters2.ts, 15, 9), Decl(callSignaturesWithOptionalParameters2.ts, 16, 20)) +>foo : Symbol(C.foo, Decl(callSignaturesWithOptionalParameters2.ts, 15, 9), Decl(callSignaturesWithOptionalParameters2.ts, 16, 20)) >x : Symbol(x, Decl(callSignaturesWithOptionalParameters2.ts, 16, 8)) foo(x?: number) { } ->foo : Symbol(foo, Decl(callSignaturesWithOptionalParameters2.ts, 15, 9), Decl(callSignaturesWithOptionalParameters2.ts, 16, 20)) +>foo : Symbol(C.foo, Decl(callSignaturesWithOptionalParameters2.ts, 15, 9), Decl(callSignaturesWithOptionalParameters2.ts, 16, 20)) >x : Symbol(x, Decl(callSignaturesWithOptionalParameters2.ts, 17, 8)) foo2(x: number); ->foo2 : Symbol(foo2, Decl(callSignaturesWithOptionalParameters2.ts, 17, 23), Decl(callSignaturesWithOptionalParameters2.ts, 19, 20), Decl(callSignaturesWithOptionalParameters2.ts, 20, 32)) +>foo2 : Symbol(C.foo2, Decl(callSignaturesWithOptionalParameters2.ts, 17, 23), Decl(callSignaturesWithOptionalParameters2.ts, 19, 20), Decl(callSignaturesWithOptionalParameters2.ts, 20, 32)) >x : Symbol(x, Decl(callSignaturesWithOptionalParameters2.ts, 19, 9)) foo2(x: number, y?: number); ->foo2 : Symbol(foo2, Decl(callSignaturesWithOptionalParameters2.ts, 17, 23), Decl(callSignaturesWithOptionalParameters2.ts, 19, 20), Decl(callSignaturesWithOptionalParameters2.ts, 20, 32)) +>foo2 : Symbol(C.foo2, Decl(callSignaturesWithOptionalParameters2.ts, 17, 23), Decl(callSignaturesWithOptionalParameters2.ts, 19, 20), Decl(callSignaturesWithOptionalParameters2.ts, 20, 32)) >x : Symbol(x, Decl(callSignaturesWithOptionalParameters2.ts, 20, 9)) >y : Symbol(y, Decl(callSignaturesWithOptionalParameters2.ts, 20, 19)) foo2(x: number, y?: number) { } ->foo2 : Symbol(foo2, Decl(callSignaturesWithOptionalParameters2.ts, 17, 23), Decl(callSignaturesWithOptionalParameters2.ts, 19, 20), Decl(callSignaturesWithOptionalParameters2.ts, 20, 32)) +>foo2 : Symbol(C.foo2, Decl(callSignaturesWithOptionalParameters2.ts, 17, 23), Decl(callSignaturesWithOptionalParameters2.ts, 19, 20), Decl(callSignaturesWithOptionalParameters2.ts, 20, 32)) >x : Symbol(x, Decl(callSignaturesWithOptionalParameters2.ts, 21, 9)) >y : Symbol(y, Decl(callSignaturesWithOptionalParameters2.ts, 21, 19)) } @@ -96,12 +96,12 @@ interface I { >y : Symbol(y, Decl(callSignaturesWithOptionalParameters2.ts, 33, 16)) foo(x: number, y?: number); ->foo : Symbol(foo, Decl(callSignaturesWithOptionalParameters2.ts, 33, 29), Decl(callSignaturesWithOptionalParameters2.ts, 34, 31)) +>foo : Symbol(I.foo, Decl(callSignaturesWithOptionalParameters2.ts, 33, 29), Decl(callSignaturesWithOptionalParameters2.ts, 34, 31)) >x : Symbol(x, Decl(callSignaturesWithOptionalParameters2.ts, 34, 8)) >y : Symbol(y, Decl(callSignaturesWithOptionalParameters2.ts, 34, 18)) foo(x: number, y?: number, z?: number); ->foo : Symbol(foo, Decl(callSignaturesWithOptionalParameters2.ts, 33, 29), Decl(callSignaturesWithOptionalParameters2.ts, 34, 31)) +>foo : Symbol(I.foo, Decl(callSignaturesWithOptionalParameters2.ts, 33, 29), Decl(callSignaturesWithOptionalParameters2.ts, 34, 31)) >x : Symbol(x, Decl(callSignaturesWithOptionalParameters2.ts, 35, 8)) >y : Symbol(y, Decl(callSignaturesWithOptionalParameters2.ts, 35, 18)) >z : Symbol(z, Decl(callSignaturesWithOptionalParameters2.ts, 35, 30)) diff --git a/tests/baselines/reference/callWithSpread.symbols b/tests/baselines/reference/callWithSpread.symbols index bc1dd7468c9..bc2d9bfebd9 100644 --- a/tests/baselines/reference/callWithSpread.symbols +++ b/tests/baselines/reference/callWithSpread.symbols @@ -3,7 +3,7 @@ interface X { >X : Symbol(X, Decl(callWithSpread.ts, 0, 0)) foo(x: number, y: number, ...z: string[]); ->foo : Symbol(foo, Decl(callWithSpread.ts, 0, 13)) +>foo : Symbol(X.foo, Decl(callWithSpread.ts, 0, 13)) >x : Symbol(x, Decl(callWithSpread.ts, 1, 8)) >y : Symbol(y, Decl(callWithSpread.ts, 1, 18)) >z : Symbol(z, Decl(callWithSpread.ts, 1, 29)) @@ -107,22 +107,22 @@ class C { >z : Symbol(z, Decl(callWithSpread.ts, 31, 37)) this.foo(x, y); ->this.foo : Symbol(foo, Decl(callWithSpread.ts, 34, 5)) +>this.foo : Symbol(C.foo, Decl(callWithSpread.ts, 34, 5)) >this : Symbol(C, Decl(callWithSpread.ts, 28, 40)) ->foo : Symbol(foo, Decl(callWithSpread.ts, 34, 5)) +>foo : Symbol(C.foo, Decl(callWithSpread.ts, 34, 5)) >x : Symbol(x, Decl(callWithSpread.ts, 31, 16)) >y : Symbol(y, Decl(callWithSpread.ts, 31, 26)) this.foo(x, y, ...z); ->this.foo : Symbol(foo, Decl(callWithSpread.ts, 34, 5)) +>this.foo : Symbol(C.foo, Decl(callWithSpread.ts, 34, 5)) >this : Symbol(C, Decl(callWithSpread.ts, 28, 40)) ->foo : Symbol(foo, Decl(callWithSpread.ts, 34, 5)) +>foo : Symbol(C.foo, Decl(callWithSpread.ts, 34, 5)) >x : Symbol(x, Decl(callWithSpread.ts, 31, 16)) >y : Symbol(y, Decl(callWithSpread.ts, 31, 26)) >z : Symbol(z, Decl(callWithSpread.ts, 31, 37)) } foo(x: number, y: number, ...z: string[]) { ->foo : Symbol(foo, Decl(callWithSpread.ts, 34, 5)) +>foo : Symbol(C.foo, Decl(callWithSpread.ts, 34, 5)) >x : Symbol(x, Decl(callWithSpread.ts, 35, 8)) >y : Symbol(y, Decl(callWithSpread.ts, 35, 18)) >z : Symbol(z, Decl(callWithSpread.ts, 35, 29)) @@ -142,7 +142,7 @@ class D extends C { >a : Symbol(a, Decl(callWithSpread.ts, 7, 3)) } foo() { ->foo : Symbol(foo, Decl(callWithSpread.ts, 43, 5)) +>foo : Symbol(D.foo, Decl(callWithSpread.ts, 43, 5)) super.foo(1, 2); >super.foo : Symbol(C.foo, Decl(callWithSpread.ts, 34, 5)) diff --git a/tests/baselines/reference/callWithSpreadES6.symbols b/tests/baselines/reference/callWithSpreadES6.symbols index 26dd9b548d5..518b04162b2 100644 --- a/tests/baselines/reference/callWithSpreadES6.symbols +++ b/tests/baselines/reference/callWithSpreadES6.symbols @@ -4,7 +4,7 @@ interface X { >X : Symbol(X, Decl(callWithSpreadES6.ts, 0, 0)) foo(x: number, y: number, ...z: string[]); ->foo : Symbol(foo, Decl(callWithSpreadES6.ts, 1, 13)) +>foo : Symbol(X.foo, Decl(callWithSpreadES6.ts, 1, 13)) >x : Symbol(x, Decl(callWithSpreadES6.ts, 2, 8)) >y : Symbol(y, Decl(callWithSpreadES6.ts, 2, 18)) >z : Symbol(z, Decl(callWithSpreadES6.ts, 2, 29)) @@ -94,7 +94,7 @@ xa[1].foo(1, 2, ...a, "abc"); >a : Symbol(a, Decl(callWithSpreadES6.ts, 8, 3)) (xa[1].foo)(...[1, 2, "abc"]); ->Function : Symbol(Function, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Function : Symbol(Function, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --)) >xa[1].foo : Symbol(X.foo, Decl(callWithSpreadES6.ts, 1, 13)) >xa : Symbol(xa, Decl(callWithSpreadES6.ts, 11, 3)) >foo : Symbol(X.foo, Decl(callWithSpreadES6.ts, 1, 13)) @@ -108,22 +108,22 @@ class C { >z : Symbol(z, Decl(callWithSpreadES6.ts, 32, 37)) this.foo(x, y); ->this.foo : Symbol(foo, Decl(callWithSpreadES6.ts, 35, 5)) +>this.foo : Symbol(C.foo, Decl(callWithSpreadES6.ts, 35, 5)) >this : Symbol(C, Decl(callWithSpreadES6.ts, 29, 40)) ->foo : Symbol(foo, Decl(callWithSpreadES6.ts, 35, 5)) +>foo : Symbol(C.foo, Decl(callWithSpreadES6.ts, 35, 5)) >x : Symbol(x, Decl(callWithSpreadES6.ts, 32, 16)) >y : Symbol(y, Decl(callWithSpreadES6.ts, 32, 26)) this.foo(x, y, ...z); ->this.foo : Symbol(foo, Decl(callWithSpreadES6.ts, 35, 5)) +>this.foo : Symbol(C.foo, Decl(callWithSpreadES6.ts, 35, 5)) >this : Symbol(C, Decl(callWithSpreadES6.ts, 29, 40)) ->foo : Symbol(foo, Decl(callWithSpreadES6.ts, 35, 5)) +>foo : Symbol(C.foo, Decl(callWithSpreadES6.ts, 35, 5)) >x : Symbol(x, Decl(callWithSpreadES6.ts, 32, 16)) >y : Symbol(y, Decl(callWithSpreadES6.ts, 32, 26)) >z : Symbol(z, Decl(callWithSpreadES6.ts, 32, 37)) } foo(x: number, y: number, ...z: string[]) { ->foo : Symbol(foo, Decl(callWithSpreadES6.ts, 35, 5)) +>foo : Symbol(C.foo, Decl(callWithSpreadES6.ts, 35, 5)) >x : Symbol(x, Decl(callWithSpreadES6.ts, 36, 8)) >y : Symbol(y, Decl(callWithSpreadES6.ts, 36, 18)) >z : Symbol(z, Decl(callWithSpreadES6.ts, 36, 29)) @@ -143,7 +143,7 @@ class D extends C { >a : Symbol(a, Decl(callWithSpreadES6.ts, 8, 3)) } foo() { ->foo : Symbol(foo, Decl(callWithSpreadES6.ts, 44, 5)) +>foo : Symbol(D.foo, Decl(callWithSpreadES6.ts, 44, 5)) super.foo(1, 2); >super.foo : Symbol(C.foo, Decl(callWithSpreadES6.ts, 35, 5)) diff --git a/tests/baselines/reference/callbacksDontShareTypes.symbols b/tests/baselines/reference/callbacksDontShareTypes.symbols index 1d7583cec2d..2eded6b880f 100644 --- a/tests/baselines/reference/callbacksDontShareTypes.symbols +++ b/tests/baselines/reference/callbacksDontShareTypes.symbols @@ -4,15 +4,15 @@ interface Collection { >T : Symbol(T, Decl(callbacksDontShareTypes.ts, 0, 21)) length: number; ->length : Symbol(length, Decl(callbacksDontShareTypes.ts, 0, 25)) +>length : Symbol(Collection.length, Decl(callbacksDontShareTypes.ts, 0, 25)) add(x: T): void; ->add : Symbol(add, Decl(callbacksDontShareTypes.ts, 1, 19)) +>add : Symbol(Collection.add, Decl(callbacksDontShareTypes.ts, 1, 19)) >x : Symbol(x, Decl(callbacksDontShareTypes.ts, 2, 8)) >T : Symbol(T, Decl(callbacksDontShareTypes.ts, 0, 21)) remove(x: T): boolean; ->remove : Symbol(remove, Decl(callbacksDontShareTypes.ts, 2, 20)) +>remove : Symbol(Collection.remove, Decl(callbacksDontShareTypes.ts, 2, 20)) >x : Symbol(x, Decl(callbacksDontShareTypes.ts, 3, 11)) >T : Symbol(T, Decl(callbacksDontShareTypes.ts, 0, 21)) } @@ -20,7 +20,7 @@ interface Combinators { >Combinators : Symbol(Combinators, Decl(callbacksDontShareTypes.ts, 4, 1)) map(c: Collection, f: (x: T) => U): Collection; ->map : Symbol(map, Decl(callbacksDontShareTypes.ts, 5, 23), Decl(callbacksDontShareTypes.ts, 6, 63)) +>map : Symbol(Combinators.map, Decl(callbacksDontShareTypes.ts, 5, 23), Decl(callbacksDontShareTypes.ts, 6, 63)) >T : Symbol(T, Decl(callbacksDontShareTypes.ts, 6, 8)) >U : Symbol(U, Decl(callbacksDontShareTypes.ts, 6, 10)) >c : Symbol(c, Decl(callbacksDontShareTypes.ts, 6, 14)) @@ -34,7 +34,7 @@ interface Combinators { >U : Symbol(U, Decl(callbacksDontShareTypes.ts, 6, 10)) map(c: Collection, f: (x: T) => any): Collection; ->map : Symbol(map, Decl(callbacksDontShareTypes.ts, 5, 23), Decl(callbacksDontShareTypes.ts, 6, 63)) +>map : Symbol(Combinators.map, Decl(callbacksDontShareTypes.ts, 5, 23), Decl(callbacksDontShareTypes.ts, 6, 63)) >T : Symbol(T, Decl(callbacksDontShareTypes.ts, 7, 8)) >c : Symbol(c, Decl(callbacksDontShareTypes.ts, 7, 11)) >Collection : Symbol(Collection, Decl(callbacksDontShareTypes.ts, 0, 0)) diff --git a/tests/baselines/reference/captureThisInSuperCall.symbols b/tests/baselines/reference/captureThisInSuperCall.symbols index bf1fd151b3c..84d92c292a9 100644 --- a/tests/baselines/reference/captureThisInSuperCall.symbols +++ b/tests/baselines/reference/captureThisInSuperCall.symbols @@ -13,10 +13,10 @@ class B extends A { constructor() { super({ test: () => this.someMethod()}); } >super : Symbol(A, Decl(captureThisInSuperCall.ts, 0, 0)) >test : Symbol(test, Decl(captureThisInSuperCall.ts, 5, 27)) ->this.someMethod : Symbol(someMethod, Decl(captureThisInSuperCall.ts, 5, 62)) +>this.someMethod : Symbol(B.someMethod, Decl(captureThisInSuperCall.ts, 5, 62)) >this : Symbol(B, Decl(captureThisInSuperCall.ts, 2, 1)) ->someMethod : Symbol(someMethod, Decl(captureThisInSuperCall.ts, 5, 62)) +>someMethod : Symbol(B.someMethod, Decl(captureThisInSuperCall.ts, 5, 62)) someMethod() {} ->someMethod : Symbol(someMethod, Decl(captureThisInSuperCall.ts, 5, 62)) +>someMethod : Symbol(B.someMethod, Decl(captureThisInSuperCall.ts, 5, 62)) } diff --git a/tests/baselines/reference/capturedLetConstInLoop10.symbols b/tests/baselines/reference/capturedLetConstInLoop10.symbols index 124874088a8..3ad860b92ae 100644 --- a/tests/baselines/reference/capturedLetConstInLoop10.symbols +++ b/tests/baselines/reference/capturedLetConstInLoop10.symbols @@ -3,7 +3,7 @@ class A { >A : Symbol(A, Decl(capturedLetConstInLoop10.ts, 0, 0)) foo() { ->foo : Symbol(foo, Decl(capturedLetConstInLoop10.ts, 0, 9)) +>foo : Symbol(A.foo, Decl(capturedLetConstInLoop10.ts, 0, 9)) for (let x of [0]) { >x : Symbol(x, Decl(capturedLetConstInLoop10.ts, 2, 16)) @@ -13,19 +13,19 @@ class A { >x : Symbol(x, Decl(capturedLetConstInLoop10.ts, 2, 16)) this.bar(f()); ->this.bar : Symbol(bar, Decl(capturedLetConstInLoop10.ts, 6, 5)) +>this.bar : Symbol(A.bar, Decl(capturedLetConstInLoop10.ts, 6, 5)) >this : Symbol(A, Decl(capturedLetConstInLoop10.ts, 0, 0)) ->bar : Symbol(bar, Decl(capturedLetConstInLoop10.ts, 6, 5)) +>bar : Symbol(A.bar, Decl(capturedLetConstInLoop10.ts, 6, 5)) >f : Symbol(f, Decl(capturedLetConstInLoop10.ts, 3, 15)) } } bar(a: number) { ->bar : Symbol(bar, Decl(capturedLetConstInLoop10.ts, 6, 5)) +>bar : Symbol(A.bar, Decl(capturedLetConstInLoop10.ts, 6, 5)) >a : Symbol(a, Decl(capturedLetConstInLoop10.ts, 7, 8)) } baz() { ->baz : Symbol(baz, Decl(capturedLetConstInLoop10.ts, 8, 5)) +>baz : Symbol(A.baz, Decl(capturedLetConstInLoop10.ts, 8, 5)) for (let x of [1]) { >x : Symbol(x, Decl(capturedLetConstInLoop10.ts, 11, 16)) @@ -42,20 +42,20 @@ class A { >y : Symbol(y, Decl(capturedLetConstInLoop10.ts, 13, 20)) this.bar(b()); ->this.bar : Symbol(bar, Decl(capturedLetConstInLoop10.ts, 6, 5)) +>this.bar : Symbol(A.bar, Decl(capturedLetConstInLoop10.ts, 6, 5)) >this : Symbol(A, Decl(capturedLetConstInLoop10.ts, 0, 0)) ->bar : Symbol(bar, Decl(capturedLetConstInLoop10.ts, 6, 5)) +>bar : Symbol(A.bar, Decl(capturedLetConstInLoop10.ts, 6, 5)) >b : Symbol(b, Decl(capturedLetConstInLoop10.ts, 14, 19)) } this.bar(a()); ->this.bar : Symbol(bar, Decl(capturedLetConstInLoop10.ts, 6, 5)) +>this.bar : Symbol(A.bar, Decl(capturedLetConstInLoop10.ts, 6, 5)) >this : Symbol(A, Decl(capturedLetConstInLoop10.ts, 0, 0)) ->bar : Symbol(bar, Decl(capturedLetConstInLoop10.ts, 6, 5)) +>bar : Symbol(A.bar, Decl(capturedLetConstInLoop10.ts, 6, 5)) >a : Symbol(a, Decl(capturedLetConstInLoop10.ts, 12, 15)) } } baz2() { ->baz2 : Symbol(baz2, Decl(capturedLetConstInLoop10.ts, 19, 5)) +>baz2 : Symbol(A.baz2, Decl(capturedLetConstInLoop10.ts, 19, 5)) for (let x of [1]) { >x : Symbol(x, Decl(capturedLetConstInLoop10.ts, 21, 16)) @@ -65,9 +65,9 @@ class A { >x : Symbol(x, Decl(capturedLetConstInLoop10.ts, 21, 16)) this.bar(a()); ->this.bar : Symbol(bar, Decl(capturedLetConstInLoop10.ts, 6, 5)) +>this.bar : Symbol(A.bar, Decl(capturedLetConstInLoop10.ts, 6, 5)) >this : Symbol(A, Decl(capturedLetConstInLoop10.ts, 0, 0)) ->bar : Symbol(bar, Decl(capturedLetConstInLoop10.ts, 6, 5)) +>bar : Symbol(A.bar, Decl(capturedLetConstInLoop10.ts, 6, 5)) >a : Symbol(a, Decl(capturedLetConstInLoop10.ts, 22, 15)) for (let y of [1]) { @@ -78,9 +78,9 @@ class A { >y : Symbol(y, Decl(capturedLetConstInLoop10.ts, 24, 20)) this.bar(b()); ->this.bar : Symbol(bar, Decl(capturedLetConstInLoop10.ts, 6, 5)) +>this.bar : Symbol(A.bar, Decl(capturedLetConstInLoop10.ts, 6, 5)) >this : Symbol(A, Decl(capturedLetConstInLoop10.ts, 0, 0)) ->bar : Symbol(bar, Decl(capturedLetConstInLoop10.ts, 6, 5)) +>bar : Symbol(A.bar, Decl(capturedLetConstInLoop10.ts, 6, 5)) >b : Symbol(b, Decl(capturedLetConstInLoop10.ts, 25, 19)) } } @@ -91,7 +91,7 @@ class B { >B : Symbol(B, Decl(capturedLetConstInLoop10.ts, 30, 1)) foo() { ->foo : Symbol(foo, Decl(capturedLetConstInLoop10.ts, 32, 9)) +>foo : Symbol(B.foo, Decl(capturedLetConstInLoop10.ts, 32, 9)) let a = >a : Symbol(a, Decl(capturedLetConstInLoop10.ts, 34, 11)) @@ -105,15 +105,15 @@ class B { >x : Symbol(x, Decl(capturedLetConstInLoop10.ts, 36, 24)) this.bar(f()); ->this.bar : Symbol(bar, Decl(capturedLetConstInLoop10.ts, 41, 5)) +>this.bar : Symbol(B.bar, Decl(capturedLetConstInLoop10.ts, 41, 5)) >this : Symbol(B, Decl(capturedLetConstInLoop10.ts, 30, 1)) ->bar : Symbol(bar, Decl(capturedLetConstInLoop10.ts, 41, 5)) +>bar : Symbol(B.bar, Decl(capturedLetConstInLoop10.ts, 41, 5)) >f : Symbol(f, Decl(capturedLetConstInLoop10.ts, 37, 23)) } } } bar(a: number) { ->bar : Symbol(bar, Decl(capturedLetConstInLoop10.ts, 41, 5)) +>bar : Symbol(B.bar, Decl(capturedLetConstInLoop10.ts, 41, 5)) >a : Symbol(a, Decl(capturedLetConstInLoop10.ts, 42, 8)) } } diff --git a/tests/baselines/reference/capturedLetConstInLoop10_ES6.symbols b/tests/baselines/reference/capturedLetConstInLoop10_ES6.symbols index f0cf92ff96b..8ca14c806a3 100644 --- a/tests/baselines/reference/capturedLetConstInLoop10_ES6.symbols +++ b/tests/baselines/reference/capturedLetConstInLoop10_ES6.symbols @@ -3,7 +3,7 @@ class A { >A : Symbol(A, Decl(capturedLetConstInLoop10_ES6.ts, 0, 0)) foo() { ->foo : Symbol(foo, Decl(capturedLetConstInLoop10_ES6.ts, 0, 9)) +>foo : Symbol(A.foo, Decl(capturedLetConstInLoop10_ES6.ts, 0, 9)) for (let x of [0]) { >x : Symbol(x, Decl(capturedLetConstInLoop10_ES6.ts, 2, 16)) @@ -13,19 +13,19 @@ class A { >x : Symbol(x, Decl(capturedLetConstInLoop10_ES6.ts, 2, 16)) this.bar(f()); ->this.bar : Symbol(bar, Decl(capturedLetConstInLoop10_ES6.ts, 6, 5)) +>this.bar : Symbol(A.bar, Decl(capturedLetConstInLoop10_ES6.ts, 6, 5)) >this : Symbol(A, Decl(capturedLetConstInLoop10_ES6.ts, 0, 0)) ->bar : Symbol(bar, Decl(capturedLetConstInLoop10_ES6.ts, 6, 5)) +>bar : Symbol(A.bar, Decl(capturedLetConstInLoop10_ES6.ts, 6, 5)) >f : Symbol(f, Decl(capturedLetConstInLoop10_ES6.ts, 3, 15)) } } bar(a: number) { ->bar : Symbol(bar, Decl(capturedLetConstInLoop10_ES6.ts, 6, 5)) +>bar : Symbol(A.bar, Decl(capturedLetConstInLoop10_ES6.ts, 6, 5)) >a : Symbol(a, Decl(capturedLetConstInLoop10_ES6.ts, 7, 8)) } baz() { ->baz : Symbol(baz, Decl(capturedLetConstInLoop10_ES6.ts, 8, 5)) +>baz : Symbol(A.baz, Decl(capturedLetConstInLoop10_ES6.ts, 8, 5)) for (let x of [1]) { >x : Symbol(x, Decl(capturedLetConstInLoop10_ES6.ts, 11, 16)) @@ -42,20 +42,20 @@ class A { >y : Symbol(y, Decl(capturedLetConstInLoop10_ES6.ts, 13, 20)) this.bar(b()); ->this.bar : Symbol(bar, Decl(capturedLetConstInLoop10_ES6.ts, 6, 5)) +>this.bar : Symbol(A.bar, Decl(capturedLetConstInLoop10_ES6.ts, 6, 5)) >this : Symbol(A, Decl(capturedLetConstInLoop10_ES6.ts, 0, 0)) ->bar : Symbol(bar, Decl(capturedLetConstInLoop10_ES6.ts, 6, 5)) +>bar : Symbol(A.bar, Decl(capturedLetConstInLoop10_ES6.ts, 6, 5)) >b : Symbol(b, Decl(capturedLetConstInLoop10_ES6.ts, 14, 19)) } this.bar(a()); ->this.bar : Symbol(bar, Decl(capturedLetConstInLoop10_ES6.ts, 6, 5)) +>this.bar : Symbol(A.bar, Decl(capturedLetConstInLoop10_ES6.ts, 6, 5)) >this : Symbol(A, Decl(capturedLetConstInLoop10_ES6.ts, 0, 0)) ->bar : Symbol(bar, Decl(capturedLetConstInLoop10_ES6.ts, 6, 5)) +>bar : Symbol(A.bar, Decl(capturedLetConstInLoop10_ES6.ts, 6, 5)) >a : Symbol(a, Decl(capturedLetConstInLoop10_ES6.ts, 12, 15)) } } baz2() { ->baz2 : Symbol(baz2, Decl(capturedLetConstInLoop10_ES6.ts, 19, 5)) +>baz2 : Symbol(A.baz2, Decl(capturedLetConstInLoop10_ES6.ts, 19, 5)) for (let x of [1]) { >x : Symbol(x, Decl(capturedLetConstInLoop10_ES6.ts, 21, 16)) @@ -65,9 +65,9 @@ class A { >x : Symbol(x, Decl(capturedLetConstInLoop10_ES6.ts, 21, 16)) this.bar(a()); ->this.bar : Symbol(bar, Decl(capturedLetConstInLoop10_ES6.ts, 6, 5)) +>this.bar : Symbol(A.bar, Decl(capturedLetConstInLoop10_ES6.ts, 6, 5)) >this : Symbol(A, Decl(capturedLetConstInLoop10_ES6.ts, 0, 0)) ->bar : Symbol(bar, Decl(capturedLetConstInLoop10_ES6.ts, 6, 5)) +>bar : Symbol(A.bar, Decl(capturedLetConstInLoop10_ES6.ts, 6, 5)) >a : Symbol(a, Decl(capturedLetConstInLoop10_ES6.ts, 22, 15)) for (let y of [1]) { @@ -78,9 +78,9 @@ class A { >y : Symbol(y, Decl(capturedLetConstInLoop10_ES6.ts, 24, 20)) this.bar(b()); ->this.bar : Symbol(bar, Decl(capturedLetConstInLoop10_ES6.ts, 6, 5)) +>this.bar : Symbol(A.bar, Decl(capturedLetConstInLoop10_ES6.ts, 6, 5)) >this : Symbol(A, Decl(capturedLetConstInLoop10_ES6.ts, 0, 0)) ->bar : Symbol(bar, Decl(capturedLetConstInLoop10_ES6.ts, 6, 5)) +>bar : Symbol(A.bar, Decl(capturedLetConstInLoop10_ES6.ts, 6, 5)) >b : Symbol(b, Decl(capturedLetConstInLoop10_ES6.ts, 25, 19)) } } @@ -91,7 +91,7 @@ class B { >B : Symbol(B, Decl(capturedLetConstInLoop10_ES6.ts, 30, 1)) foo() { ->foo : Symbol(foo, Decl(capturedLetConstInLoop10_ES6.ts, 32, 9)) +>foo : Symbol(B.foo, Decl(capturedLetConstInLoop10_ES6.ts, 32, 9)) let a = >a : Symbol(a, Decl(capturedLetConstInLoop10_ES6.ts, 34, 11)) @@ -105,15 +105,15 @@ class B { >x : Symbol(x, Decl(capturedLetConstInLoop10_ES6.ts, 36, 24)) this.bar(f()); ->this.bar : Symbol(bar, Decl(capturedLetConstInLoop10_ES6.ts, 41, 5)) +>this.bar : Symbol(B.bar, Decl(capturedLetConstInLoop10_ES6.ts, 41, 5)) >this : Symbol(B, Decl(capturedLetConstInLoop10_ES6.ts, 30, 1)) ->bar : Symbol(bar, Decl(capturedLetConstInLoop10_ES6.ts, 41, 5)) +>bar : Symbol(B.bar, Decl(capturedLetConstInLoop10_ES6.ts, 41, 5)) >f : Symbol(f, Decl(capturedLetConstInLoop10_ES6.ts, 37, 23)) } } } bar(a: number) { ->bar : Symbol(bar, Decl(capturedLetConstInLoop10_ES6.ts, 41, 5)) +>bar : Symbol(B.bar, Decl(capturedLetConstInLoop10_ES6.ts, 41, 5)) >a : Symbol(a, Decl(capturedLetConstInLoop10_ES6.ts, 42, 8)) } } diff --git a/tests/baselines/reference/capturedLetConstInLoop12.js b/tests/baselines/reference/capturedLetConstInLoop12.js new file mode 100644 index 00000000000..7235c959a59 --- /dev/null +++ b/tests/baselines/reference/capturedLetConstInLoop12.js @@ -0,0 +1,42 @@ +//// [capturedLetConstInLoop12.ts] +(function() { + "use strict"; + + for (let i = 0; i < 4; i++) { + (() => [i] = [i + 1])(); + } +})(); + +(function() { + "use strict"; + + for (let i = 0; i < 4; i++) { + (() => ({a:i} = {a:i + 1}))(); + } +})(); + +//// [capturedLetConstInLoop12.js] +(function () { + "use strict"; + var _loop_1 = function(i) { + (function () { return (_a = [i + 1], i = _a[0], _a); var _a; })(); + out_i_1 = i; + }; + var out_i_1; + for (var i = 0; i < 4; i++) { + _loop_1(i); + i = out_i_1; + } +})(); +(function () { + "use strict"; + var _loop_2 = function(i) { + (function () { return (_a = { a: i + 1 }, i = _a.a, _a); var _a; })(); + out_i_2 = i; + }; + var out_i_2; + for (var i = 0; i < 4; i++) { + _loop_2(i); + i = out_i_2; + } +})(); diff --git a/tests/baselines/reference/capturedLetConstInLoop12.symbols b/tests/baselines/reference/capturedLetConstInLoop12.symbols new file mode 100644 index 00000000000..8c0338ea84e --- /dev/null +++ b/tests/baselines/reference/capturedLetConstInLoop12.symbols @@ -0,0 +1,30 @@ +=== tests/cases/compiler/capturedLetConstInLoop12.ts === +(function() { + "use strict"; + + for (let i = 0; i < 4; i++) { +>i : Symbol(i, Decl(capturedLetConstInLoop12.ts, 3, 12)) +>i : Symbol(i, Decl(capturedLetConstInLoop12.ts, 3, 12)) +>i : Symbol(i, Decl(capturedLetConstInLoop12.ts, 3, 12)) + + (() => [i] = [i + 1])(); +>i : Symbol(i, Decl(capturedLetConstInLoop12.ts, 3, 12)) +>i : Symbol(i, Decl(capturedLetConstInLoop12.ts, 3, 12)) + } +})(); + +(function() { + "use strict"; + + for (let i = 0; i < 4; i++) { +>i : Symbol(i, Decl(capturedLetConstInLoop12.ts, 11, 12)) +>i : Symbol(i, Decl(capturedLetConstInLoop12.ts, 11, 12)) +>i : Symbol(i, Decl(capturedLetConstInLoop12.ts, 11, 12)) + + (() => ({a:i} = {a:i + 1}))(); +>a : Symbol(a, Decl(capturedLetConstInLoop12.ts, 12, 17)) +>i : Symbol(i, Decl(capturedLetConstInLoop12.ts, 11, 12)) +>a : Symbol(a, Decl(capturedLetConstInLoop12.ts, 12, 25)) +>i : Symbol(i, Decl(capturedLetConstInLoop12.ts, 11, 12)) + } +})(); diff --git a/tests/baselines/reference/capturedLetConstInLoop12.types b/tests/baselines/reference/capturedLetConstInLoop12.types new file mode 100644 index 00000000000..aee671b4d36 --- /dev/null +++ b/tests/baselines/reference/capturedLetConstInLoop12.types @@ -0,0 +1,65 @@ +=== tests/cases/compiler/capturedLetConstInLoop12.ts === +(function() { +>(function() { "use strict"; for (let i = 0; i < 4; i++) { (() => [i] = [i + 1])(); }})() : void +>(function() { "use strict"; for (let i = 0; i < 4; i++) { (() => [i] = [i + 1])(); }}) : () => void +>function() { "use strict"; for (let i = 0; i < 4; i++) { (() => [i] = [i + 1])(); }} : () => void + + "use strict"; +>"use strict" : string + + for (let i = 0; i < 4; i++) { +>i : number +>0 : number +>i < 4 : boolean +>i : number +>4 : number +>i++ : number +>i : number + + (() => [i] = [i + 1])(); +>(() => [i] = [i + 1])() : [number] +>(() => [i] = [i + 1]) : () => [number] +>() => [i] = [i + 1] : () => [number] +>[i] = [i + 1] : [number] +>[i] : [number] +>i : number +>[i + 1] : [number] +>i + 1 : number +>i : number +>1 : number + } +})(); + +(function() { +>(function() { "use strict"; for (let i = 0; i < 4; i++) { (() => ({a:i} = {a:i + 1}))(); }})() : void +>(function() { "use strict"; for (let i = 0; i < 4; i++) { (() => ({a:i} = {a:i + 1}))(); }}) : () => void +>function() { "use strict"; for (let i = 0; i < 4; i++) { (() => ({a:i} = {a:i + 1}))(); }} : () => void + + "use strict"; +>"use strict" : string + + for (let i = 0; i < 4; i++) { +>i : number +>0 : number +>i < 4 : boolean +>i : number +>4 : number +>i++ : number +>i : number + + (() => ({a:i} = {a:i + 1}))(); +>(() => ({a:i} = {a:i + 1}))() : { a: number; } +>(() => ({a:i} = {a:i + 1})) : () => { a: number; } +>() => ({a:i} = {a:i + 1}) : () => { a: number; } +>({a:i} = {a:i + 1}) : { a: number; } +>{a:i} = {a:i + 1} : { a: number; } +>{a:i} : { a: number; } +>a : number +>i : number +>{a:i + 1} : { a: number; } +>a : number +>i + 1 : number +>i : number +>1 : number + } +})(); diff --git a/tests/baselines/reference/capturedLetConstInLoop2_ES6.symbols b/tests/baselines/reference/capturedLetConstInLoop2_ES6.symbols index 32812c89370..0dd74bc4b25 100644 --- a/tests/baselines/reference/capturedLetConstInLoop2_ES6.symbols +++ b/tests/baselines/reference/capturedLetConstInLoop2_ES6.symbols @@ -10,9 +10,9 @@ function foo0(x) { let a = arguments.length; >a : Symbol(a, Decl(capturedLetConstInLoop2_ES6.ts, 4, 11)) ->arguments.length : Symbol(IArguments.length, Decl(lib.d.ts, --, --)) +>arguments.length : Symbol(IArguments.length, Decl(lib.es5.d.ts, --, --)) >arguments : Symbol(arguments) ->length : Symbol(IArguments.length, Decl(lib.d.ts, --, --)) +>length : Symbol(IArguments.length, Decl(lib.es5.d.ts, --, --)) (function() { return x + a }); >x : Symbol(x, Decl(capturedLetConstInLoop2_ES6.ts, 3, 12)) @@ -33,9 +33,9 @@ function foo0_1(x) { let a = arguments.length; >a : Symbol(a, Decl(capturedLetConstInLoop2_ES6.ts, 12, 11)) ->arguments.length : Symbol(IArguments.length, Decl(lib.d.ts, --, --)) +>arguments.length : Symbol(IArguments.length, Decl(lib.es5.d.ts, --, --)) >arguments : Symbol(arguments) ->length : Symbol(IArguments.length, Decl(lib.d.ts, --, --)) +>length : Symbol(IArguments.length, Decl(lib.es5.d.ts, --, --)) (function() { return x + a }); >x : Symbol(x, Decl(capturedLetConstInLoop2_ES6.ts, 11, 12)) @@ -58,9 +58,9 @@ function foo1(x) { let a = arguments.length; >a : Symbol(a, Decl(capturedLetConstInLoop2_ES6.ts, 20, 11)) ->arguments.length : Symbol(IArguments.length, Decl(lib.d.ts, --, --)) +>arguments.length : Symbol(IArguments.length, Decl(lib.es5.d.ts, --, --)) >arguments : Symbol(arguments) ->length : Symbol(IArguments.length, Decl(lib.d.ts, --, --)) +>length : Symbol(IArguments.length, Decl(lib.es5.d.ts, --, --)) (function() { return x + a }); >x : Symbol(x, Decl(capturedLetConstInLoop2_ES6.ts, 19, 12)) @@ -79,9 +79,9 @@ function foo2(x) { while (1 === 1) { let a = arguments.length; >a : Symbol(a, Decl(capturedLetConstInLoop2_ES6.ts, 28, 11)) ->arguments.length : Symbol(IArguments.length, Decl(lib.d.ts, --, --)) +>arguments.length : Symbol(IArguments.length, Decl(lib.es5.d.ts, --, --)) >arguments : Symbol(arguments) ->length : Symbol(IArguments.length, Decl(lib.d.ts, --, --)) +>length : Symbol(IArguments.length, Decl(lib.es5.d.ts, --, --)) (function() { return x + a }); >x : Symbol(x, Decl(capturedLetConstInLoop2_ES6.ts, 26, 14)) @@ -103,9 +103,9 @@ function foo3(x) { let a = arguments.length; >a : Symbol(a, Decl(capturedLetConstInLoop2_ES6.ts, 37, 11)) ->arguments.length : Symbol(IArguments.length, Decl(lib.d.ts, --, --)) +>arguments.length : Symbol(IArguments.length, Decl(lib.es5.d.ts, --, --)) >arguments : Symbol(arguments) ->length : Symbol(IArguments.length, Decl(lib.d.ts, --, --)) +>length : Symbol(IArguments.length, Decl(lib.es5.d.ts, --, --)) (function() { return x + a }); >x : Symbol(x, Decl(capturedLetConstInLoop2_ES6.ts, 36, 11)) @@ -129,9 +129,9 @@ function foo4(x) { let a = arguments.length; >a : Symbol(a, Decl(capturedLetConstInLoop2_ES6.ts, 45, 11)) ->arguments.length : Symbol(IArguments.length, Decl(lib.d.ts, --, --)) +>arguments.length : Symbol(IArguments.length, Decl(lib.es5.d.ts, --, --)) >arguments : Symbol(arguments) ->length : Symbol(IArguments.length, Decl(lib.d.ts, --, --)) +>length : Symbol(IArguments.length, Decl(lib.es5.d.ts, --, --)) let x = 1; >x : Symbol(x, Decl(capturedLetConstInLoop2_ES6.ts, 46, 11)) @@ -158,9 +158,9 @@ function foo5(x) { let a = arguments.length; >a : Symbol(a, Decl(capturedLetConstInLoop2_ES6.ts, 54, 11)) ->arguments.length : Symbol(IArguments.length, Decl(lib.d.ts, --, --)) +>arguments.length : Symbol(IArguments.length, Decl(lib.es5.d.ts, --, --)) >arguments : Symbol(arguments) ->length : Symbol(IArguments.length, Decl(lib.d.ts, --, --)) +>length : Symbol(IArguments.length, Decl(lib.es5.d.ts, --, --)) (function() { return x + y + a }); >x : Symbol(x, Decl(capturedLetConstInLoop2_ES6.ts, 53, 12)) @@ -186,9 +186,9 @@ function foo6(x) { let a = arguments.length; >a : Symbol(a, Decl(capturedLetConstInLoop2_ES6.ts, 64, 11)) ->arguments.length : Symbol(IArguments.length, Decl(lib.d.ts, --, --)) +>arguments.length : Symbol(IArguments.length, Decl(lib.es5.d.ts, --, --)) >arguments : Symbol(arguments) ->length : Symbol(IArguments.length, Decl(lib.d.ts, --, --)) +>length : Symbol(IArguments.length, Decl(lib.es5.d.ts, --, --)) (function() { return x + y + a }); >x : Symbol(x, Decl(capturedLetConstInLoop2_ES6.ts, 63, 11)) @@ -213,9 +213,9 @@ function foo7(x) { let a = arguments.length; >a : Symbol(a, Decl(capturedLetConstInLoop2_ES6.ts, 73, 11)) ->arguments.length : Symbol(IArguments.length, Decl(lib.d.ts, --, --)) +>arguments.length : Symbol(IArguments.length, Decl(lib.es5.d.ts, --, --)) >arguments : Symbol(arguments) ->length : Symbol(IArguments.length, Decl(lib.d.ts, --, --)) +>length : Symbol(IArguments.length, Decl(lib.es5.d.ts, --, --)) (function() { return x + y + a }); >x : Symbol(x, Decl(capturedLetConstInLoop2_ES6.ts, 72, 11)) @@ -245,9 +245,9 @@ function foo8(x) { let a = arguments.length; >a : Symbol(a, Decl(capturedLetConstInLoop2_ES6.ts, 83, 11)) ->arguments.length : Symbol(IArguments.length, Decl(lib.d.ts, --, --)) +>arguments.length : Symbol(IArguments.length, Decl(lib.es5.d.ts, --, --)) >arguments : Symbol(arguments) ->length : Symbol(IArguments.length, Decl(lib.d.ts, --, --)) +>length : Symbol(IArguments.length, Decl(lib.es5.d.ts, --, --)) (function() { return x + y + a }); >x : Symbol(x, Decl(capturedLetConstInLoop2_ES6.ts, 82, 11)) @@ -270,9 +270,9 @@ function foo0_c(x) { const a = arguments.length; >a : Symbol(a, Decl(capturedLetConstInLoop2_ES6.ts, 91, 13)) ->arguments.length : Symbol(IArguments.length, Decl(lib.d.ts, --, --)) +>arguments.length : Symbol(IArguments.length, Decl(lib.es5.d.ts, --, --)) >arguments : Symbol(arguments) ->length : Symbol(IArguments.length, Decl(lib.d.ts, --, --)) +>length : Symbol(IArguments.length, Decl(lib.es5.d.ts, --, --)) (function() { return x + a }); >x : Symbol(x, Decl(capturedLetConstInLoop2_ES6.ts, 90, 14)) @@ -293,9 +293,9 @@ function foo0_1_c(x) { const a = arguments.length; >a : Symbol(a, Decl(capturedLetConstInLoop2_ES6.ts, 99, 13)) ->arguments.length : Symbol(IArguments.length, Decl(lib.d.ts, --, --)) +>arguments.length : Symbol(IArguments.length, Decl(lib.es5.d.ts, --, --)) >arguments : Symbol(arguments) ->length : Symbol(IArguments.length, Decl(lib.d.ts, --, --)) +>length : Symbol(IArguments.length, Decl(lib.es5.d.ts, --, --)) (function() { return x + a }); >x : Symbol(x, Decl(capturedLetConstInLoop2_ES6.ts, 98, 14)) @@ -317,9 +317,9 @@ function foo1_c(x) { const a = arguments.length; >a : Symbol(a, Decl(capturedLetConstInLoop2_ES6.ts, 107, 13)) ->arguments.length : Symbol(IArguments.length, Decl(lib.d.ts, --, --)) +>arguments.length : Symbol(IArguments.length, Decl(lib.es5.d.ts, --, --)) >arguments : Symbol(arguments) ->length : Symbol(IArguments.length, Decl(lib.d.ts, --, --)) +>length : Symbol(IArguments.length, Decl(lib.es5.d.ts, --, --)) (function() { return x + a }); >x : Symbol(x, Decl(capturedLetConstInLoop2_ES6.ts, 106, 14)) @@ -338,9 +338,9 @@ function foo2_c(x) { while (1 === 1) { const a = arguments.length; >a : Symbol(a, Decl(capturedLetConstInLoop2_ES6.ts, 115, 13)) ->arguments.length : Symbol(IArguments.length, Decl(lib.d.ts, --, --)) +>arguments.length : Symbol(IArguments.length, Decl(lib.es5.d.ts, --, --)) >arguments : Symbol(arguments) ->length : Symbol(IArguments.length, Decl(lib.d.ts, --, --)) +>length : Symbol(IArguments.length, Decl(lib.es5.d.ts, --, --)) (function() { return x + a }); >x : Symbol(x, Decl(capturedLetConstInLoop2_ES6.ts, 113, 16)) @@ -362,9 +362,9 @@ function foo3_c(x) { const a = arguments.length; >a : Symbol(a, Decl(capturedLetConstInLoop2_ES6.ts, 124, 13)) ->arguments.length : Symbol(IArguments.length, Decl(lib.d.ts, --, --)) +>arguments.length : Symbol(IArguments.length, Decl(lib.es5.d.ts, --, --)) >arguments : Symbol(arguments) ->length : Symbol(IArguments.length, Decl(lib.d.ts, --, --)) +>length : Symbol(IArguments.length, Decl(lib.es5.d.ts, --, --)) (function() { return x + a }); >x : Symbol(x, Decl(capturedLetConstInLoop2_ES6.ts, 123, 13)) @@ -387,9 +387,9 @@ function foo4_c(x) { const a = arguments.length; >a : Symbol(a, Decl(capturedLetConstInLoop2_ES6.ts, 132, 13)) ->arguments.length : Symbol(IArguments.length, Decl(lib.d.ts, --, --)) +>arguments.length : Symbol(IArguments.length, Decl(lib.es5.d.ts, --, --)) >arguments : Symbol(arguments) ->length : Symbol(IArguments.length, Decl(lib.d.ts, --, --)) +>length : Symbol(IArguments.length, Decl(lib.es5.d.ts, --, --)) const x = 1; >x : Symbol(x, Decl(capturedLetConstInLoop2_ES6.ts, 133, 13)) @@ -415,9 +415,9 @@ function foo5_c(x) { const a = arguments.length; >a : Symbol(a, Decl(capturedLetConstInLoop2_ES6.ts, 141, 13)) ->arguments.length : Symbol(IArguments.length, Decl(lib.d.ts, --, --)) +>arguments.length : Symbol(IArguments.length, Decl(lib.es5.d.ts, --, --)) >arguments : Symbol(arguments) ->length : Symbol(IArguments.length, Decl(lib.d.ts, --, --)) +>length : Symbol(IArguments.length, Decl(lib.es5.d.ts, --, --)) (function() { return x + y + a }); >x : Symbol(x, Decl(capturedLetConstInLoop2_ES6.ts, 140, 14)) @@ -443,9 +443,9 @@ function foo6_c(x) { const a = arguments.length; >a : Symbol(a, Decl(capturedLetConstInLoop2_ES6.ts, 151, 13)) ->arguments.length : Symbol(IArguments.length, Decl(lib.d.ts, --, --)) +>arguments.length : Symbol(IArguments.length, Decl(lib.es5.d.ts, --, --)) >arguments : Symbol(arguments) ->length : Symbol(IArguments.length, Decl(lib.d.ts, --, --)) +>length : Symbol(IArguments.length, Decl(lib.es5.d.ts, --, --)) (function() { return x + y + a }); >x : Symbol(x, Decl(capturedLetConstInLoop2_ES6.ts, 150, 13)) @@ -470,9 +470,9 @@ function foo7_c(x) { const a = arguments.length; >a : Symbol(a, Decl(capturedLetConstInLoop2_ES6.ts, 160, 13)) ->arguments.length : Symbol(IArguments.length, Decl(lib.d.ts, --, --)) +>arguments.length : Symbol(IArguments.length, Decl(lib.es5.d.ts, --, --)) >arguments : Symbol(arguments) ->length : Symbol(IArguments.length, Decl(lib.d.ts, --, --)) +>length : Symbol(IArguments.length, Decl(lib.es5.d.ts, --, --)) (function() { return x + y + a }); >x : Symbol(x, Decl(capturedLetConstInLoop2_ES6.ts, 159, 13)) @@ -501,9 +501,9 @@ function foo8_c(x) { const a = arguments.length; >a : Symbol(a, Decl(capturedLetConstInLoop2_ES6.ts, 170, 13)) ->arguments.length : Symbol(IArguments.length, Decl(lib.d.ts, --, --)) +>arguments.length : Symbol(IArguments.length, Decl(lib.es5.d.ts, --, --)) >arguments : Symbol(arguments) ->length : Symbol(IArguments.length, Decl(lib.d.ts, --, --)) +>length : Symbol(IArguments.length, Decl(lib.es5.d.ts, --, --)) (function() { return x + y + a }); >x : Symbol(x, Decl(capturedLetConstInLoop2_ES6.ts, 169, 13)) diff --git a/tests/baselines/reference/capturedLetConstInLoop6.js b/tests/baselines/reference/capturedLetConstInLoop6.js index e196950e696..6a2b4c9a335 100644 --- a/tests/baselines/reference/capturedLetConstInLoop6.js +++ b/tests/baselines/reference/capturedLetConstInLoop6.js @@ -254,7 +254,6 @@ for (var _i = 0, _a = []; _i < _a.length; _i++) { var x = _a[_i]; var state_1 = _loop_1(x); if (state_1 === "break") break; - if (state_1 === "continue") continue; } var _loop_2 = function(x) { (function () { return x; }); @@ -269,7 +268,6 @@ var _loop_2 = function(x) { for (var x in []) { var state_2 = _loop_2(x); if (state_2 === "break") break; - if (state_2 === "continue") continue; } var _loop_3 = function(x) { (function () { return x; }); @@ -284,7 +282,6 @@ var _loop_3 = function(x) { for (var x = 0; x < 1; ++x) { var state_3 = _loop_3(x); if (state_3 === "break") break; - if (state_3 === "continue") continue; } var _loop_4 = function() { var x; @@ -300,7 +297,6 @@ var _loop_4 = function() { while (1 === 1) { var state_4 = _loop_4(); if (state_4 === "break") break; - if (state_4 === "continue") continue; } var _loop_5 = function() { var x; @@ -316,7 +312,6 @@ var _loop_5 = function() { do { var state_5 = _loop_5(); if (state_5 === "break") break; - if (state_5 === "continue") continue; } while (1 === 1); var _loop_6 = function(y) { var x = 1; @@ -332,7 +327,6 @@ var _loop_6 = function(y) { for (var y = 0; y < 1; ++y) { var state_6 = _loop_6(y); if (state_6 === "break") break; - if (state_6 === "continue") continue; } var _loop_7 = function(x, y) { (function () { return x + y; }); @@ -347,7 +341,6 @@ var _loop_7 = function(x, y) { for (var x = 0, y = 1; x < 1; ++x) { var state_7 = _loop_7(x, y); if (state_7 === "break") break; - if (state_7 === "continue") continue; } var _loop_8 = function() { var x, y; @@ -363,7 +356,6 @@ var _loop_8 = function() { while (1 === 1) { var state_8 = _loop_8(); if (state_8 === "break") break; - if (state_8 === "continue") continue; } var _loop_9 = function() { var x, y; @@ -379,7 +371,6 @@ var _loop_9 = function() { do { var state_9 = _loop_9(); if (state_9 === "break") break; - if (state_9 === "continue") continue; } while (1 === 1); var _loop_10 = function(y) { var x = 1; @@ -395,7 +386,6 @@ var _loop_10 = function(y) { for (var y = 0; y < 1; ++y) { var state_10 = _loop_10(y); if (state_10 === "break") break; - if (state_10 === "continue") continue; } // ====const var _loop_11 = function(x) { @@ -412,7 +402,6 @@ for (var _b = 0, _c = []; _b < _c.length; _b++) { var x = _c[_b]; var state_11 = _loop_11(x); if (state_11 === "break") break; - if (state_11 === "continue") continue; } var _loop_12 = function(x) { (function () { return x; }); @@ -427,7 +416,6 @@ var _loop_12 = function(x) { for (var x in []) { var state_12 = _loop_12(x); if (state_12 === "break") break; - if (state_12 === "continue") continue; } var _loop_13 = function(x) { (function () { return x; }); @@ -442,7 +430,6 @@ var _loop_13 = function(x) { for (var x = 0; x < 1;) { var state_13 = _loop_13(x); if (state_13 === "break") break; - if (state_13 === "continue") continue; } var _loop_14 = function() { var x = 1; @@ -458,7 +445,6 @@ var _loop_14 = function() { while (1 === 1) { var state_14 = _loop_14(); if (state_14 === "break") break; - if (state_14 === "continue") continue; } var _loop_15 = function() { var x = 1; @@ -474,7 +460,6 @@ var _loop_15 = function() { do { var state_15 = _loop_15(); if (state_15 === "break") break; - if (state_15 === "continue") continue; } while (1 === 1); var _loop_16 = function(y) { var x = 1; @@ -490,7 +475,6 @@ var _loop_16 = function(y) { for (var y = 0; y < 1;) { var state_16 = _loop_16(y); if (state_16 === "break") break; - if (state_16 === "continue") continue; } var _loop_17 = function(x, y) { (function () { return x + y; }); @@ -505,7 +489,6 @@ var _loop_17 = function(x, y) { for (var x = 0, y = 1; x < 1;) { var state_17 = _loop_17(x, y); if (state_17 === "break") break; - if (state_17 === "continue") continue; } var _loop_18 = function() { var x = 1, y = 1; @@ -521,7 +504,6 @@ var _loop_18 = function() { while (1 === 1) { var state_18 = _loop_18(); if (state_18 === "break") break; - if (state_18 === "continue") continue; } var _loop_19 = function() { var x = 1, y = 1; @@ -537,7 +519,6 @@ var _loop_19 = function() { do { var state_19 = _loop_19(); if (state_19 === "break") break; - if (state_19 === "continue") continue; } while (1 === 1); var _loop_20 = function(y) { var x = 1; @@ -553,5 +534,4 @@ var _loop_20 = function(y) { for (var y = 0; y < 1;) { var state_20 = _loop_20(y); if (state_20 === "break") break; - if (state_20 === "continue") continue; } diff --git a/tests/baselines/reference/capturedLetConstInLoop7.js b/tests/baselines/reference/capturedLetConstInLoop7.js index 8df93bca60f..56b84e7802d 100644 --- a/tests/baselines/reference/capturedLetConstInLoop7.js +++ b/tests/baselines/reference/capturedLetConstInLoop7.js @@ -397,7 +397,6 @@ l0: for (var _i = 0, _a = []; _i < _a.length; _i++) { var x = _a[_i]; var state_1 = _loop_1(x); if (state_1 === "break") break; - if (state_1 === "continue") continue; switch(state_1) { case "break-l0": break l0; case "continue-l0": continue l0; @@ -422,7 +421,6 @@ var _loop_2 = function(x) { l00: for (var x in []) { var state_2 = _loop_2(x); if (state_2 === "break") break; - if (state_2 === "continue") continue; switch(state_2) { case "break-l00": break l00; case "continue-l00": continue l00; @@ -447,7 +445,6 @@ var _loop_3 = function(x) { l1: for (var x = 0; x < 1; ++x) { var state_3 = _loop_3(x); if (state_3 === "break") break; - if (state_3 === "continue") continue; switch(state_3) { case "break-l1": break l1; case "continue-l1": continue l1; @@ -473,7 +470,6 @@ var _loop_4 = function() { l2: while (1 === 1) { var state_4 = _loop_4(); if (state_4 === "break") break; - if (state_4 === "continue") continue; switch(state_4) { case "break-l2": break l2; case "continue-l2": continue l2; @@ -499,7 +495,6 @@ var _loop_5 = function() { l3: do { var state_5 = _loop_5(); if (state_5 === "break") break; - if (state_5 === "continue") continue; switch(state_5) { case "break-l3": break l3; case "continue-l3": continue l3; @@ -525,7 +520,6 @@ var _loop_6 = function(y) { l4: for (var y = 0; y < 1; ++y) { var state_6 = _loop_6(y); if (state_6 === "break") break; - if (state_6 === "continue") continue; switch(state_6) { case "break-l4": break l4; case "continue-l4": continue l4; @@ -550,7 +544,6 @@ var _loop_7 = function(x, y) { l5: for (var x = 0, y = 1; x < 1; ++x) { var state_7 = _loop_7(x, y); if (state_7 === "break") break; - if (state_7 === "continue") continue; switch(state_7) { case "break-l5": break l5; case "continue-l5": continue l5; @@ -576,7 +569,6 @@ var _loop_8 = function() { l6: while (1 === 1) { var state_8 = _loop_8(); if (state_8 === "break") break; - if (state_8 === "continue") continue; switch(state_8) { case "break-l6": break l6; case "continue-l6": continue l6; @@ -602,7 +594,6 @@ var _loop_9 = function() { l7: do { var state_9 = _loop_9(); if (state_9 === "break") break; - if (state_9 === "continue") continue; switch(state_9) { case "break-l7": break l7; case "continue-l7": continue l7; @@ -628,7 +619,6 @@ var _loop_10 = function(y) { l8: for (var y = 0; y < 1; ++y) { var state_10 = _loop_10(y); if (state_10 === "break") break; - if (state_10 === "continue") continue; switch(state_10) { case "break-l8": break l8; case "continue-l8": continue l8; @@ -655,7 +645,6 @@ l0_c: for (var _b = 0, _c = []; _b < _c.length; _b++) { var x = _c[_b]; var state_11 = _loop_11(x); if (state_11 === "break") break; - if (state_11 === "continue") continue; switch(state_11) { case "break-l0_c": break l0_c; case "continue-l0_c": continue l0_c; @@ -680,7 +669,6 @@ var _loop_12 = function(x) { l00_c: for (var x in []) { var state_12 = _loop_12(x); if (state_12 === "break") break; - if (state_12 === "continue") continue; switch(state_12) { case "break-l00_c": break l00_c; case "continue-l00_c": continue l00_c; @@ -705,7 +693,6 @@ var _loop_13 = function(x) { l1_c: for (var x = 0; x < 1;) { var state_13 = _loop_13(x); if (state_13 === "break") break; - if (state_13 === "continue") continue; switch(state_13) { case "break-l1_c": break l1_c; case "continue-l1_c": continue l1_c; @@ -731,7 +718,6 @@ var _loop_14 = function() { l2_c: while (1 === 1) { var state_14 = _loop_14(); if (state_14 === "break") break; - if (state_14 === "continue") continue; switch(state_14) { case "break-l2_c": break l2_c; case "continue-l2_c": continue l2_c; @@ -757,7 +743,6 @@ var _loop_15 = function() { l3_c: do { var state_15 = _loop_15(); if (state_15 === "break") break; - if (state_15 === "continue") continue; switch(state_15) { case "break-l3_c": break l3_c; case "continue-l3_c": continue l3_c; @@ -783,7 +768,6 @@ var _loop_16 = function(y) { l4_c: for (var y = 0; y < 1;) { var state_16 = _loop_16(y); if (state_16 === "break") break; - if (state_16 === "continue") continue; switch(state_16) { case "break-l4_c": break l4_c; case "continue-l4_c": continue l4_c; @@ -808,7 +792,6 @@ var _loop_17 = function(x, y) { l5_c: for (var x = 0, y = 1; x < 1;) { var state_17 = _loop_17(x, y); if (state_17 === "break") break; - if (state_17 === "continue") continue; switch(state_17) { case "break-l5_c": break l5_c; case "continue-l5_c": continue l5_c; @@ -834,7 +817,6 @@ var _loop_18 = function() { l6_c: while (1 === 1) { var state_18 = _loop_18(); if (state_18 === "break") break; - if (state_18 === "continue") continue; switch(state_18) { case "break-l6_c": break l6_c; case "continue-l6_c": continue l6_c; @@ -860,7 +842,6 @@ var _loop_19 = function() { l7_c: do { var state_19 = _loop_19(); if (state_19 === "break") break; - if (state_19 === "continue") continue; switch(state_19) { case "break-l7_c": break l7_c; case "continue-l7_c": continue l7_c; @@ -886,7 +867,6 @@ var _loop_20 = function(y) { l8_c: for (var y = 0; y < 1;) { var state_20 = _loop_20(y); if (state_20 === "break") break; - if (state_20 === "continue") continue; switch(state_20) { case "break-l8_c": break l8_c; case "continue-l8_c": continue l8_c; diff --git a/tests/baselines/reference/capturedLetConstInLoop8.js b/tests/baselines/reference/capturedLetConstInLoop8.js index 560b99bb566..122bdb96e36 100644 --- a/tests/baselines/reference/capturedLetConstInLoop8.js +++ b/tests/baselines/reference/capturedLetConstInLoop8.js @@ -165,7 +165,6 @@ function foo() { var state_1 = _loop_2(y); if (typeof state_1 === "object") return state_1; if (state_1 === "break") break; - if (state_1 === "continue") continue; switch(state_1) { case "break-l1": return state_1; case "break-ll1": break ll1; @@ -200,7 +199,6 @@ function foo() { var state_2 = _loop_1(x); if (typeof state_2 === "object") return state_2.value; if (state_2 === "break") break; - if (state_2 === "continue") continue; switch(state_2) { case "break-l1": break l1; case "continue-l0": continue l0; @@ -247,7 +245,6 @@ function foo_c() { var state_3 = _loop_4(y); if (typeof state_3 === "object") return state_3; if (state_3 === "break") break; - if (state_3 === "continue") continue; switch(state_3) { case "break-l1": return state_3; case "break-ll1": break ll1; @@ -282,7 +279,6 @@ function foo_c() { var state_4 = _loop_3(x); if (typeof state_4 === "object") return state_4.value; if (state_4 === "break") break; - if (state_4 === "continue") continue; switch(state_4) { case "break-l1": break l1; case "continue-l0": continue l0; diff --git a/tests/baselines/reference/capturedLetConstInLoop9.symbols b/tests/baselines/reference/capturedLetConstInLoop9.symbols index 37d1764b41b..2cc1645863e 100644 --- a/tests/baselines/reference/capturedLetConstInLoop9.symbols +++ b/tests/baselines/reference/capturedLetConstInLoop9.symbols @@ -53,7 +53,7 @@ for (let x = 0; x < 1; ++x) { >A : Symbol(A, Decl(capturedLetConstInLoop9.ts, 24, 5)) m() { ->m : Symbol(m, Decl(capturedLetConstInLoop9.ts, 26, 13)) +>m : Symbol(A.m, Decl(capturedLetConstInLoop9.ts, 26, 13)) return x + 1; >x : Symbol(x, Decl(capturedLetConstInLoop9.ts, 1, 7)) @@ -222,10 +222,10 @@ class C { >C : Symbol(C, Decl(capturedLetConstInLoop9.ts, 120, 1)) constructor(private N: number) { } ->N : Symbol(N, Decl(capturedLetConstInLoop9.ts, 123, 16)) +>N : Symbol(C.N, Decl(capturedLetConstInLoop9.ts, 123, 16)) foo() { ->foo : Symbol(foo, Decl(capturedLetConstInLoop9.ts, 123, 38)) +>foo : Symbol(C.foo, Decl(capturedLetConstInLoop9.ts, 123, 38)) for (let i = 0; i < 100; i++) { >i : Symbol(i, Decl(capturedLetConstInLoop9.ts, 125, 16)) @@ -234,9 +234,9 @@ class C { let f = () => this.N * i; >f : Symbol(f, Decl(capturedLetConstInLoop9.ts, 126, 15)) ->this.N : Symbol(N, Decl(capturedLetConstInLoop9.ts, 123, 16)) +>this.N : Symbol(C.N, Decl(capturedLetConstInLoop9.ts, 123, 16)) >this : Symbol(C, Decl(capturedLetConstInLoop9.ts, 120, 1)) ->N : Symbol(N, Decl(capturedLetConstInLoop9.ts, 123, 16)) +>N : Symbol(C.N, Decl(capturedLetConstInLoop9.ts, 123, 16)) >i : Symbol(i, Decl(capturedLetConstInLoop9.ts, 125, 16)) } } diff --git a/tests/baselines/reference/capturedLetConstInLoop9_ES6.symbols b/tests/baselines/reference/capturedLetConstInLoop9_ES6.symbols index d71a20afe47..c9b8fdb392c 100644 --- a/tests/baselines/reference/capturedLetConstInLoop9_ES6.symbols +++ b/tests/baselines/reference/capturedLetConstInLoop9_ES6.symbols @@ -54,7 +54,7 @@ for (let x = 0; x < 1; ++x) { >A : Symbol(A, Decl(capturedLetConstInLoop9_ES6.ts, 25, 5)) m() { ->m : Symbol(m, Decl(capturedLetConstInLoop9_ES6.ts, 27, 13)) +>m : Symbol(A.m, Decl(capturedLetConstInLoop9_ES6.ts, 27, 13)) return x + 1; >x : Symbol(x, Decl(capturedLetConstInLoop9_ES6.ts, 2, 7)) @@ -127,9 +127,9 @@ function foo() { >z1 : Symbol(z1, Decl(capturedLetConstInLoop9_ES6.ts, 68, 21)) >x1 : Symbol(x1, Decl(capturedLetConstInLoop9_ES6.ts, 68, 33)) >y : Symbol(y, Decl(capturedLetConstInLoop9_ES6.ts, 68, 38)) ->arguments.length : Symbol(IArguments.length, Decl(lib.d.ts, --, --)) +>arguments.length : Symbol(IArguments.length, Decl(lib.es5.d.ts, --, --)) >arguments : Symbol(arguments) ->length : Symbol(IArguments.length, Decl(lib.d.ts, --, --)) +>length : Symbol(IArguments.length, Decl(lib.es5.d.ts, --, --)) if (b === 1) { >b : Symbol(b, Decl(capturedLetConstInLoop9_ES6.ts, 67, 16)) @@ -222,10 +222,10 @@ class C { >C : Symbol(C, Decl(capturedLetConstInLoop9_ES6.ts, 120, 1)) constructor(private N: number) { } ->N : Symbol(N, Decl(capturedLetConstInLoop9_ES6.ts, 123, 16)) +>N : Symbol(C.N, Decl(capturedLetConstInLoop9_ES6.ts, 123, 16)) foo() { ->foo : Symbol(foo, Decl(capturedLetConstInLoop9_ES6.ts, 123, 38)) +>foo : Symbol(C.foo, Decl(capturedLetConstInLoop9_ES6.ts, 123, 38)) for (let i = 0; i < 100; i++) { >i : Symbol(i, Decl(capturedLetConstInLoop9_ES6.ts, 125, 16)) @@ -234,9 +234,9 @@ class C { let f = () => this.N * i; >f : Symbol(f, Decl(capturedLetConstInLoop9_ES6.ts, 126, 15)) ->this.N : Symbol(N, Decl(capturedLetConstInLoop9_ES6.ts, 123, 16)) +>this.N : Symbol(C.N, Decl(capturedLetConstInLoop9_ES6.ts, 123, 16)) >this : Symbol(C, Decl(capturedLetConstInLoop9_ES6.ts, 120, 1)) ->N : Symbol(N, Decl(capturedLetConstInLoop9_ES6.ts, 123, 16)) +>N : Symbol(C.N, Decl(capturedLetConstInLoop9_ES6.ts, 123, 16)) >i : Symbol(i, Decl(capturedLetConstInLoop9_ES6.ts, 125, 16)) } } @@ -247,24 +247,24 @@ function foo3 () { let x = arguments.length; >x : Symbol(x, Decl(capturedLetConstInLoop9_ES6.ts, 132, 7)) ->arguments.length : Symbol(IArguments.length, Decl(lib.d.ts, --, --)) +>arguments.length : Symbol(IArguments.length, Decl(lib.es5.d.ts, --, --)) >arguments : Symbol(arguments) ->length : Symbol(IArguments.length, Decl(lib.d.ts, --, --)) +>length : Symbol(IArguments.length, Decl(lib.es5.d.ts, --, --)) for (let y of []) { >y : Symbol(y, Decl(capturedLetConstInLoop9_ES6.ts, 133, 12)) let z = arguments.length; >z : Symbol(z, Decl(capturedLetConstInLoop9_ES6.ts, 134, 11)) ->arguments.length : Symbol(IArguments.length, Decl(lib.d.ts, --, --)) +>arguments.length : Symbol(IArguments.length, Decl(lib.es5.d.ts, --, --)) >arguments : Symbol(arguments) ->length : Symbol(IArguments.length, Decl(lib.d.ts, --, --)) +>length : Symbol(IArguments.length, Decl(lib.es5.d.ts, --, --)) (function() { return y + z + arguments.length; }); >y : Symbol(y, Decl(capturedLetConstInLoop9_ES6.ts, 133, 12)) >z : Symbol(z, Decl(capturedLetConstInLoop9_ES6.ts, 134, 11)) ->arguments.length : Symbol(IArguments.length, Decl(lib.d.ts, --, --)) +>arguments.length : Symbol(IArguments.length, Decl(lib.es5.d.ts, --, --)) >arguments : Symbol(arguments) ->length : Symbol(IArguments.length, Decl(lib.d.ts, --, --)) +>length : Symbol(IArguments.length, Decl(lib.es5.d.ts, --, --)) } } diff --git a/tests/baselines/reference/castTest.symbols b/tests/baselines/reference/castTest.symbols index e0bf154820e..944cc8238e6 100644 --- a/tests/baselines/reference/castTest.symbols +++ b/tests/baselines/reference/castTest.symbols @@ -32,19 +32,19 @@ declare class Point >Point : Symbol(Point, Decl(castTest.ts, 11, 37)) { x: number; ->x : Symbol(x, Decl(castTest.ts, 14, 1)) +>x : Symbol(Point.x, Decl(castTest.ts, 14, 1)) y: number; ->y : Symbol(y, Decl(castTest.ts, 15, 14)) +>y : Symbol(Point.y, Decl(castTest.ts, 15, 14)) add(dx: number, dy: number): Point; ->add : Symbol(add, Decl(castTest.ts, 16, 14)) +>add : Symbol(Point.add, Decl(castTest.ts, 16, 14)) >dx : Symbol(dx, Decl(castTest.ts, 17, 8)) >dy : Symbol(dy, Decl(castTest.ts, 17, 19)) >Point : Symbol(Point, Decl(castTest.ts, 11, 37)) mult(p: Point): Point; ->mult : Symbol(mult, Decl(castTest.ts, 17, 39)) +>mult : Symbol(Point.mult, Decl(castTest.ts, 17, 39)) >p : Symbol(p, Decl(castTest.ts, 18, 9)) >Point : Symbol(Point, Decl(castTest.ts, 11, 37)) >Point : Symbol(Point, Decl(castTest.ts, 11, 37)) diff --git a/tests/baselines/reference/castingTuple.errors.txt b/tests/baselines/reference/castingTuple.errors.txt index 62a36c9c156..6d5549c6bf2 100644 --- a/tests/baselines/reference/castingTuple.errors.txt +++ b/tests/baselines/reference/castingTuple.errors.txt @@ -1,24 +1,15 @@ -tests/cases/conformance/types/tuple/castingTuple.ts(13,23): error TS2352: Neither type '[number, string]' nor type '[number, string, boolean]' is assignable to the other. - Property '2' is missing in type '[number, string]'. -tests/cases/conformance/types/tuple/castingTuple.ts(16,21): error TS2352: Neither type '[C, D]' nor type '[C, D, A]' is assignable to the other. - Property '2' is missing in type '[C, D]'. -tests/cases/conformance/types/tuple/castingTuple.ts(28,10): error TS2352: Neither type '[number, string]' nor type '[number, number]' is assignable to the other. +tests/cases/conformance/types/tuple/castingTuple.ts(28,10): error TS2352: Type '[number, string]' cannot be converted to type '[number, number]'. Types of property '1' are incompatible. - Type 'string' is not assignable to type 'number'. -tests/cases/conformance/types/tuple/castingTuple.ts(29,10): error TS2352: Neither type '[C, D]' nor type '[A, I]' is assignable to the other. + Type 'string' is not comparable to type 'number'. +tests/cases/conformance/types/tuple/castingTuple.ts(29,10): error TS2352: Type '[C, D]' cannot be converted to type '[A, I]'. Types of property '0' are incompatible. - Type 'C' is not assignable to type 'A'. + Type 'C' is not comparable to type 'A'. Property 'a' is missing in type 'C'. tests/cases/conformance/types/tuple/castingTuple.ts(30,5): error TS2403: Subsequent variable declarations must have the same type. Variable 'array1' must be of type '{}[]', but here has type 'number[]'. -tests/cases/conformance/types/tuple/castingTuple.ts(30,14): error TS2352: Neither type '[number, string]' nor type 'number[]' is assignable to the other. - Types of property 'pop' are incompatible. - Type '() => number | string' is not assignable to type '() => number'. - Type 'number | string' is not assignable to type 'number'. - Type 'string' is not assignable to type 'number'. tests/cases/conformance/types/tuple/castingTuple.ts(31,1): error TS2304: Cannot find name 't4'. -==== tests/cases/conformance/types/tuple/castingTuple.ts (7 errors) ==== +==== tests/cases/conformance/types/tuple/castingTuple.ts (4 errors) ==== interface I { } class A { a = 10; } class C implements I { c }; @@ -32,15 +23,9 @@ tests/cases/conformance/types/tuple/castingTuple.ts(31,1): error TS2304: Cannot var numStrTuple: [number, string] = [5, "foo"]; var emptyObjTuple = <[{}, {}]>numStrTuple; var numStrBoolTuple = <[number, string, boolean]>numStrTuple; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2352: Neither type '[number, string]' nor type '[number, string, boolean]' is assignable to the other. -!!! error TS2352: Property '2' is missing in type '[number, string]'. var classCDTuple: [C, D] = [new C(), new D()]; var interfaceIITuple = <[I, I]>classCDTuple; var classCDATuple = <[C, D, A]>classCDTuple; - ~~~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2352: Neither type '[C, D]' nor type '[C, D, A]' is assignable to the other. -!!! error TS2352: Property '2' is missing in type '[C, D]'. var eleFromCDA1 = classCDATuple[2]; // A var eleFromCDA2 = classCDATuple[5]; // C | D | A var t10: [E1, E2] = [E1.one, E2.one]; @@ -54,24 +39,18 @@ tests/cases/conformance/types/tuple/castingTuple.ts(31,1): error TS2304: Cannot // error var t3 = <[number, number]>numStrTuple; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2352: Neither type '[number, string]' nor type '[number, number]' is assignable to the other. +!!! error TS2352: Type '[number, string]' cannot be converted to type '[number, number]'. !!! error TS2352: Types of property '1' are incompatible. -!!! error TS2352: Type 'string' is not assignable to type 'number'. +!!! error TS2352: Type 'string' is not comparable to type 'number'. var t9 = <[A, I]>classCDTuple; ~~~~~~~~~~~~~~~~~~~~ -!!! error TS2352: Neither type '[C, D]' nor type '[A, I]' is assignable to the other. +!!! error TS2352: Type '[C, D]' cannot be converted to type '[A, I]'. !!! error TS2352: Types of property '0' are incompatible. -!!! error TS2352: Type 'C' is not assignable to type 'A'. +!!! error TS2352: Type 'C' is not comparable to type 'A'. !!! error TS2352: Property 'a' is missing in type 'C'. var array1 = numStrTuple; ~~~~~~ !!! error TS2403: Subsequent variable declarations must have the same type. Variable 'array1' must be of type '{}[]', but here has type 'number[]'. - ~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2352: Neither type '[number, string]' nor type 'number[]' is assignable to the other. -!!! error TS2352: Types of property 'pop' are incompatible. -!!! error TS2352: Type '() => number | string' is not assignable to type '() => number'. -!!! error TS2352: Type 'number | string' is not assignable to type 'number'. -!!! error TS2352: Type 'string' is not assignable to type 'number'. t4[2] = 10; ~~ !!! error TS2304: Cannot find name 't4'. diff --git a/tests/baselines/reference/chainedAssignment2.symbols b/tests/baselines/reference/chainedAssignment2.symbols index 3335c3cbb43..0f37d41c3be 100644 --- a/tests/baselines/reference/chainedAssignment2.symbols +++ b/tests/baselines/reference/chainedAssignment2.symbols @@ -10,7 +10,7 @@ var c: boolean; var d: Date; >d : Symbol(d, Decl(chainedAssignment2.ts, 3, 3)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) var e: RegExp; >e : Symbol(e, Decl(chainedAssignment2.ts, 4, 3)) diff --git a/tests/baselines/reference/chainedSpecializationToObjectTypeLiteral.symbols b/tests/baselines/reference/chainedSpecializationToObjectTypeLiteral.symbols index 8232c44a620..f8fbae6b8b3 100644 --- a/tests/baselines/reference/chainedSpecializationToObjectTypeLiteral.symbols +++ b/tests/baselines/reference/chainedSpecializationToObjectTypeLiteral.symbols @@ -4,13 +4,13 @@ interface Sequence { >T : Symbol(T, Decl(chainedSpecializationToObjectTypeLiteral.ts, 0, 19)) each(iterator: (value: T) => void): void; ->each : Symbol(each, Decl(chainedSpecializationToObjectTypeLiteral.ts, 0, 23)) +>each : Symbol(Sequence.each, Decl(chainedSpecializationToObjectTypeLiteral.ts, 0, 23)) >iterator : Symbol(iterator, Decl(chainedSpecializationToObjectTypeLiteral.ts, 1, 9)) >value : Symbol(value, Decl(chainedSpecializationToObjectTypeLiteral.ts, 1, 20)) >T : Symbol(T, Decl(chainedSpecializationToObjectTypeLiteral.ts, 0, 19)) map(iterator: (value: T) => U): Sequence; ->map : Symbol(map, Decl(chainedSpecializationToObjectTypeLiteral.ts, 1, 45)) +>map : Symbol(Sequence.map, Decl(chainedSpecializationToObjectTypeLiteral.ts, 1, 45)) >U : Symbol(U, Decl(chainedSpecializationToObjectTypeLiteral.ts, 2, 8)) >iterator : Symbol(iterator, Decl(chainedSpecializationToObjectTypeLiteral.ts, 2, 11)) >value : Symbol(value, Decl(chainedSpecializationToObjectTypeLiteral.ts, 2, 22)) @@ -20,7 +20,7 @@ interface Sequence { >U : Symbol(U, Decl(chainedSpecializationToObjectTypeLiteral.ts, 2, 8)) filter(iterator: (value: T) => boolean): Sequence; ->filter : Symbol(filter, Decl(chainedSpecializationToObjectTypeLiteral.ts, 2, 51)) +>filter : Symbol(Sequence.filter, Decl(chainedSpecializationToObjectTypeLiteral.ts, 2, 51)) >iterator : Symbol(iterator, Decl(chainedSpecializationToObjectTypeLiteral.ts, 3, 11)) >value : Symbol(value, Decl(chainedSpecializationToObjectTypeLiteral.ts, 3, 22)) >T : Symbol(T, Decl(chainedSpecializationToObjectTypeLiteral.ts, 0, 19)) @@ -28,7 +28,7 @@ interface Sequence { >T : Symbol(T, Decl(chainedSpecializationToObjectTypeLiteral.ts, 0, 19)) groupBy(keySelector: (value: T) => K): Sequence<{ key: K; items: T[]; }>; ->groupBy : Symbol(groupBy, Decl(chainedSpecializationToObjectTypeLiteral.ts, 3, 57)) +>groupBy : Symbol(Sequence.groupBy, Decl(chainedSpecializationToObjectTypeLiteral.ts, 3, 57)) >K : Symbol(K, Decl(chainedSpecializationToObjectTypeLiteral.ts, 4, 12)) >keySelector : Symbol(keySelector, Decl(chainedSpecializationToObjectTypeLiteral.ts, 4, 15)) >value : Symbol(value, Decl(chainedSpecializationToObjectTypeLiteral.ts, 4, 29)) diff --git a/tests/baselines/reference/checkInfiniteExpansionTermination.symbols b/tests/baselines/reference/checkInfiniteExpansionTermination.symbols index 52ba8ad698e..e6d75d40cee 100644 --- a/tests/baselines/reference/checkInfiniteExpansionTermination.symbols +++ b/tests/baselines/reference/checkInfiniteExpansionTermination.symbols @@ -7,7 +7,7 @@ interface IObservable { >T : Symbol(T, Decl(checkInfiniteExpansionTermination.ts, 3, 22)) n: IObservable; // Needed, must be T[] ->n : Symbol(n, Decl(checkInfiniteExpansionTermination.ts, 3, 26)) +>n : Symbol(IObservable.n, Decl(checkInfiniteExpansionTermination.ts, 3, 26)) >IObservable : Symbol(IObservable, Decl(checkInfiniteExpansionTermination.ts, 0, 0)) >T : Symbol(T, Decl(checkInfiniteExpansionTermination.ts, 3, 22)) } @@ -21,11 +21,11 @@ interface ISubject extends IObservable { } interface Foo { x } >Foo : Symbol(Foo, Decl(checkInfiniteExpansionTermination.ts, 8, 48)) ->x : Symbol(x, Decl(checkInfiniteExpansionTermination.ts, 10, 15)) +>x : Symbol(Foo.x, Decl(checkInfiniteExpansionTermination.ts, 10, 15)) interface Bar { y } >Bar : Symbol(Bar, Decl(checkInfiniteExpansionTermination.ts, 10, 19)) ->y : Symbol(y, Decl(checkInfiniteExpansionTermination.ts, 11, 15)) +>y : Symbol(Bar.y, Decl(checkInfiniteExpansionTermination.ts, 11, 15)) var values: IObservable; >values : Symbol(values, Decl(checkInfiniteExpansionTermination.ts, 13, 3)) diff --git a/tests/baselines/reference/checkInfiniteExpansionTermination2.symbols b/tests/baselines/reference/checkInfiniteExpansionTermination2.symbols index c4fe17a09a6..b7be2445e0d 100644 --- a/tests/baselines/reference/checkInfiniteExpansionTermination2.symbols +++ b/tests/baselines/reference/checkInfiniteExpansionTermination2.symbols @@ -7,7 +7,7 @@ interface IObservable { >T : Symbol(T, Decl(checkInfiniteExpansionTermination2.ts, 3, 22)) n: IObservable; ->n : Symbol(n, Decl(checkInfiniteExpansionTermination2.ts, 3, 26)) +>n : Symbol(IObservable.n, Decl(checkInfiniteExpansionTermination2.ts, 3, 26)) >IObservable : Symbol(IObservable, Decl(checkInfiniteExpansionTermination2.ts, 0, 0)) >T : Symbol(T, Decl(checkInfiniteExpansionTermination2.ts, 3, 22)) } diff --git a/tests/baselines/reference/checkInterfaceBases.symbols b/tests/baselines/reference/checkInterfaceBases.symbols index 6b5f987b0bc..57a820dcfaf 100644 --- a/tests/baselines/reference/checkInterfaceBases.symbols +++ b/tests/baselines/reference/checkInterfaceBases.symbols @@ -4,7 +4,7 @@ interface SecondEvent { >SecondEvent : Symbol(SecondEvent, Decl(app.ts, 0, 0)) data: any; ->data : Symbol(data, Decl(app.ts, 1, 23)) +>data : Symbol(SecondEvent.data, Decl(app.ts, 1, 23)) } interface Third extends JQueryEventObjectTest, SecondEvent {} >Third : Symbol(Third, Decl(app.ts, 3, 1)) @@ -16,12 +16,12 @@ interface JQueryEventObjectTest { >JQueryEventObjectTest : Symbol(JQueryEventObjectTest, Decl(jquery.d.ts, 0, 0)) data: any; ->data : Symbol(data, Decl(jquery.d.ts, 0, 33)) +>data : Symbol(JQueryEventObjectTest.data, Decl(jquery.d.ts, 0, 33)) which: number; ->which : Symbol(which, Decl(jquery.d.ts, 1, 14)) +>which : Symbol(JQueryEventObjectTest.which, Decl(jquery.d.ts, 1, 14)) metaKey: any; ->metaKey : Symbol(metaKey, Decl(jquery.d.ts, 2, 18)) +>metaKey : Symbol(JQueryEventObjectTest.metaKey, Decl(jquery.d.ts, 2, 18)) } diff --git a/tests/baselines/reference/checkSuperCallBeforeThisAccessing1.symbols b/tests/baselines/reference/checkSuperCallBeforeThisAccessing1.symbols index 008d1156b56..8ac242b0e48 100644 --- a/tests/baselines/reference/checkSuperCallBeforeThisAccessing1.symbols +++ b/tests/baselines/reference/checkSuperCallBeforeThisAccessing1.symbols @@ -7,7 +7,7 @@ class Derived extends Based { >Based : Symbol(Based, Decl(checkSuperCallBeforeThisAccessing1.ts, 0, 0)) public x: number; ->x : Symbol(x, Decl(checkSuperCallBeforeThisAccessing1.ts, 1, 29)) +>x : Symbol(Derived.x, Decl(checkSuperCallBeforeThisAccessing1.ts, 1, 29)) constructor() { super(); @@ -17,9 +17,9 @@ class Derived extends Based { >this : Symbol(Derived, Decl(checkSuperCallBeforeThisAccessing1.ts, 0, 15)) this.x = 10; ->this.x : Symbol(x, Decl(checkSuperCallBeforeThisAccessing1.ts, 1, 29)) +>this.x : Symbol(Derived.x, Decl(checkSuperCallBeforeThisAccessing1.ts, 1, 29)) >this : Symbol(Derived, Decl(checkSuperCallBeforeThisAccessing1.ts, 0, 15)) ->x : Symbol(x, Decl(checkSuperCallBeforeThisAccessing1.ts, 1, 29)) +>x : Symbol(Derived.x, Decl(checkSuperCallBeforeThisAccessing1.ts, 1, 29)) var that = this; >that : Symbol(that, Decl(checkSuperCallBeforeThisAccessing1.ts, 7, 11)) diff --git a/tests/baselines/reference/checkSuperCallBeforeThisAccessing3.symbols b/tests/baselines/reference/checkSuperCallBeforeThisAccessing3.symbols index 8dd68fc3b74..44bbd5949bb 100644 --- a/tests/baselines/reference/checkSuperCallBeforeThisAccessing3.symbols +++ b/tests/baselines/reference/checkSuperCallBeforeThisAccessing3.symbols @@ -7,29 +7,29 @@ class Derived extends Based { >Based : Symbol(Based, Decl(checkSuperCallBeforeThisAccessing3.ts, 0, 0)) public x: number; ->x : Symbol(x, Decl(checkSuperCallBeforeThisAccessing3.ts, 1, 29)) +>x : Symbol(Derived.x, Decl(checkSuperCallBeforeThisAccessing3.ts, 1, 29)) constructor() { class innver { >innver : Symbol(innver, Decl(checkSuperCallBeforeThisAccessing3.ts, 3, 19)) public y: boolean; ->y : Symbol(y, Decl(checkSuperCallBeforeThisAccessing3.ts, 4, 22)) +>y : Symbol(innver.y, Decl(checkSuperCallBeforeThisAccessing3.ts, 4, 22)) constructor() { this.y = true; ->this.y : Symbol(y, Decl(checkSuperCallBeforeThisAccessing3.ts, 4, 22)) +>this.y : Symbol(innver.y, Decl(checkSuperCallBeforeThisAccessing3.ts, 4, 22)) >this : Symbol(innver, Decl(checkSuperCallBeforeThisAccessing3.ts, 3, 19)) ->y : Symbol(y, Decl(checkSuperCallBeforeThisAccessing3.ts, 4, 22)) +>y : Symbol(innver.y, Decl(checkSuperCallBeforeThisAccessing3.ts, 4, 22)) } } super(); >super : Symbol(Based, Decl(checkSuperCallBeforeThisAccessing3.ts, 0, 0)) this.x = 10; ->this.x : Symbol(x, Decl(checkSuperCallBeforeThisAccessing3.ts, 1, 29)) +>this.x : Symbol(Derived.x, Decl(checkSuperCallBeforeThisAccessing3.ts, 1, 29)) >this : Symbol(Derived, Decl(checkSuperCallBeforeThisAccessing3.ts, 0, 15)) ->x : Symbol(x, Decl(checkSuperCallBeforeThisAccessing3.ts, 1, 29)) +>x : Symbol(Derived.x, Decl(checkSuperCallBeforeThisAccessing3.ts, 1, 29)) var that = this; >that : Symbol(that, Decl(checkSuperCallBeforeThisAccessing3.ts, 12, 11)) diff --git a/tests/baselines/reference/checkSuperCallBeforeThisAccessing4.symbols b/tests/baselines/reference/checkSuperCallBeforeThisAccessing4.symbols index 7101280358d..4ea467558df 100644 --- a/tests/baselines/reference/checkSuperCallBeforeThisAccessing4.symbols +++ b/tests/baselines/reference/checkSuperCallBeforeThisAccessing4.symbols @@ -7,7 +7,7 @@ class Derived extends Based { >Based : Symbol(Based, Decl(checkSuperCallBeforeThisAccessing4.ts, 0, 0)) public x: number; ->x : Symbol(x, Decl(checkSuperCallBeforeThisAccessing4.ts, 1, 29)) +>x : Symbol(Derived.x, Decl(checkSuperCallBeforeThisAccessing4.ts, 1, 29)) constructor() { (() => { @@ -32,9 +32,9 @@ class Derived extends Based { >super : Symbol(Based, Decl(checkSuperCallBeforeThisAccessing4.ts, 0, 0)) this.x = 10; ->this.x : Symbol(x, Decl(checkSuperCallBeforeThisAccessing4.ts, 1, 29)) +>this.x : Symbol(Derived.x, Decl(checkSuperCallBeforeThisAccessing4.ts, 1, 29)) >this : Symbol(Derived, Decl(checkSuperCallBeforeThisAccessing4.ts, 0, 15)) ->x : Symbol(x, Decl(checkSuperCallBeforeThisAccessing4.ts, 1, 29)) +>x : Symbol(Derived.x, Decl(checkSuperCallBeforeThisAccessing4.ts, 1, 29)) var that = this; >that : Symbol(that, Decl(checkSuperCallBeforeThisAccessing4.ts, 16, 11)) diff --git a/tests/baselines/reference/checkSwitchStatementIfCaseTypeIsString.symbols b/tests/baselines/reference/checkSwitchStatementIfCaseTypeIsString.symbols index 6bc994f2a44..2a6ba238b4b 100644 --- a/tests/baselines/reference/checkSwitchStatementIfCaseTypeIsString.symbols +++ b/tests/baselines/reference/checkSwitchStatementIfCaseTypeIsString.symbols @@ -7,7 +7,7 @@ class A { >A : Symbol(A, Decl(checkSwitchStatementIfCaseTypeIsString.ts, 0, 35)) doIt(x: Array): void { ->doIt : Symbol(doIt, Decl(checkSwitchStatementIfCaseTypeIsString.ts, 2, 9)) +>doIt : Symbol(A.doIt, Decl(checkSwitchStatementIfCaseTypeIsString.ts, 2, 9)) >x : Symbol(x, Decl(checkSwitchStatementIfCaseTypeIsString.ts, 3, 9)) >Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) diff --git a/tests/baselines/reference/circularImportAlias.symbols b/tests/baselines/reference/circularImportAlias.symbols index 6eaa4a7467e..518766ceb5d 100644 --- a/tests/baselines/reference/circularImportAlias.symbols +++ b/tests/baselines/reference/circularImportAlias.symbols @@ -15,7 +15,7 @@ module B { >C : Symbol(a.C, Decl(circularImportAlias.ts, 9, 10)) id: number; ->id : Symbol(id, Decl(circularImportAlias.ts, 4, 32)) +>id : Symbol(D.id, Decl(circularImportAlias.ts, 4, 32)) } } @@ -24,7 +24,7 @@ module A { export class C { name: string } >C : Symbol(C, Decl(circularImportAlias.ts, 9, 10)) ->name : Symbol(name, Decl(circularImportAlias.ts, 10, 20)) +>name : Symbol(C.name, Decl(circularImportAlias.ts, 10, 20)) export import b = B; >b : Symbol(b, Decl(circularImportAlias.ts, 10, 35)) diff --git a/tests/baselines/reference/circularTypeAliasForUnionWithClass.symbols b/tests/baselines/reference/circularTypeAliasForUnionWithClass.symbols index ecfba63332d..d18711d03da 100644 --- a/tests/baselines/reference/circularTypeAliasForUnionWithClass.symbols +++ b/tests/baselines/reference/circularTypeAliasForUnionWithClass.symbols @@ -11,7 +11,7 @@ class I0 { >I0 : Symbol(I0, Decl(circularTypeAliasForUnionWithClass.ts, 1, 22)) x: T0; ->x : Symbol(x, Decl(circularTypeAliasForUnionWithClass.ts, 2, 10)) +>x : Symbol(I0.x, Decl(circularTypeAliasForUnionWithClass.ts, 2, 10)) >T0 : Symbol(T0, Decl(circularTypeAliasForUnionWithClass.ts, 0, 11)) } diff --git a/tests/baselines/reference/circularTypeAliasForUnionWithInterface.symbols b/tests/baselines/reference/circularTypeAliasForUnionWithInterface.symbols index 29bc3098d91..ad33c036bf8 100644 --- a/tests/baselines/reference/circularTypeAliasForUnionWithInterface.symbols +++ b/tests/baselines/reference/circularTypeAliasForUnionWithInterface.symbols @@ -11,7 +11,7 @@ interface I0 { >I0 : Symbol(I0, Decl(circularTypeAliasForUnionWithInterface.ts, 1, 22)) x: T0; ->x : Symbol(x, Decl(circularTypeAliasForUnionWithInterface.ts, 2, 14)) +>x : Symbol(I0.x, Decl(circularTypeAliasForUnionWithInterface.ts, 2, 14)) >T0 : Symbol(T0, Decl(circularTypeAliasForUnionWithInterface.ts, 0, 11)) } diff --git a/tests/baselines/reference/classAbstractAsIdentifier.symbols b/tests/baselines/reference/classAbstractAsIdentifier.symbols index f2ce2ebcab5..5b96a74bb12 100644 --- a/tests/baselines/reference/classAbstractAsIdentifier.symbols +++ b/tests/baselines/reference/classAbstractAsIdentifier.symbols @@ -3,7 +3,7 @@ class abstract { >abstract : Symbol(abstract, Decl(classAbstractAsIdentifier.ts, 0, 0)) foo() { return 1; } ->foo : Symbol(foo, Decl(classAbstractAsIdentifier.ts, 0, 16)) +>foo : Symbol(abstract.foo, Decl(classAbstractAsIdentifier.ts, 0, 16)) } new abstract; diff --git a/tests/baselines/reference/classAppearsToHaveMembersOfObject.symbols b/tests/baselines/reference/classAppearsToHaveMembersOfObject.symbols index 28c31e639a7..6041f2ddf04 100644 --- a/tests/baselines/reference/classAppearsToHaveMembersOfObject.symbols +++ b/tests/baselines/reference/classAppearsToHaveMembersOfObject.symbols @@ -1,7 +1,7 @@ === tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classAppearsToHaveMembersOfObject.ts === class C { foo: string; } >C : Symbol(C, Decl(classAppearsToHaveMembersOfObject.ts, 0, 0)) ->foo : Symbol(foo, Decl(classAppearsToHaveMembersOfObject.ts, 0, 9)) +>foo : Symbol(C.foo, Decl(classAppearsToHaveMembersOfObject.ts, 0, 9)) var c: C; >c : Symbol(c, Decl(classAppearsToHaveMembersOfObject.ts, 2, 3)) diff --git a/tests/baselines/reference/classConstructorAccessibility4.symbols b/tests/baselines/reference/classConstructorAccessibility4.symbols index e3d8301ca68..66a9bbfabfd 100644 --- a/tests/baselines/reference/classConstructorAccessibility4.symbols +++ b/tests/baselines/reference/classConstructorAccessibility4.symbols @@ -6,13 +6,13 @@ class A { private constructor() { } method() { ->method : Symbol(method, Decl(classConstructorAccessibility4.ts, 2, 29)) +>method : Symbol(A.method, Decl(classConstructorAccessibility4.ts, 2, 29)) class B { >B : Symbol(B, Decl(classConstructorAccessibility4.ts, 4, 14)) method() { ->method : Symbol(method, Decl(classConstructorAccessibility4.ts, 5, 17)) +>method : Symbol(B.method, Decl(classConstructorAccessibility4.ts, 5, 17)) new A(); // OK >A : Symbol(A, Decl(classConstructorAccessibility4.ts, 0, 0)) @@ -32,13 +32,13 @@ class D { protected constructor() { } method() { ->method : Symbol(method, Decl(classConstructorAccessibility4.ts, 17, 31)) +>method : Symbol(D.method, Decl(classConstructorAccessibility4.ts, 17, 31)) class E { >E : Symbol(E, Decl(classConstructorAccessibility4.ts, 19, 14)) method() { ->method : Symbol(method, Decl(classConstructorAccessibility4.ts, 20, 17)) +>method : Symbol(E.method, Decl(classConstructorAccessibility4.ts, 20, 17)) new D(); // OK >D : Symbol(D, Decl(classConstructorAccessibility4.ts, 14, 1)) diff --git a/tests/baselines/reference/classConstructorParametersAccessibility3.symbols b/tests/baselines/reference/classConstructorParametersAccessibility3.symbols index b2888528e7e..1e61cffd88b 100644 --- a/tests/baselines/reference/classConstructorParametersAccessibility3.symbols +++ b/tests/baselines/reference/classConstructorParametersAccessibility3.symbols @@ -3,7 +3,7 @@ class Base { >Base : Symbol(Base, Decl(classConstructorParametersAccessibility3.ts, 0, 0)) constructor(protected p: number) { } ->p : Symbol(p, Decl(classConstructorParametersAccessibility3.ts, 1, 16)) +>p : Symbol(Base.p, Decl(classConstructorParametersAccessibility3.ts, 1, 16)) } class Derived extends Base { @@ -11,16 +11,16 @@ class Derived extends Base { >Base : Symbol(Base, Decl(classConstructorParametersAccessibility3.ts, 0, 0)) constructor(public p: number) { ->p : Symbol(p, Decl(classConstructorParametersAccessibility3.ts, 5, 16)) +>p : Symbol(Derived.p, Decl(classConstructorParametersAccessibility3.ts, 5, 16)) super(p); >super : Symbol(Base, Decl(classConstructorParametersAccessibility3.ts, 0, 0)) >p : Symbol(p, Decl(classConstructorParametersAccessibility3.ts, 5, 16)) this.p; // OK ->this.p : Symbol(p, Decl(classConstructorParametersAccessibility3.ts, 5, 16)) +>this.p : Symbol(Derived.p, Decl(classConstructorParametersAccessibility3.ts, 5, 16)) >this : Symbol(Derived, Decl(classConstructorParametersAccessibility3.ts, 2, 1)) ->p : Symbol(p, Decl(classConstructorParametersAccessibility3.ts, 5, 16)) +>p : Symbol(Derived.p, Decl(classConstructorParametersAccessibility3.ts, 5, 16)) } } diff --git a/tests/baselines/reference/classDoesNotDependOnPrivateMember.symbols b/tests/baselines/reference/classDoesNotDependOnPrivateMember.symbols index ca042499c05..5f5a23156ef 100644 --- a/tests/baselines/reference/classDoesNotDependOnPrivateMember.symbols +++ b/tests/baselines/reference/classDoesNotDependOnPrivateMember.symbols @@ -9,7 +9,7 @@ module M { >C : Symbol(C, Decl(classDoesNotDependOnPrivateMember.ts, 1, 19)) private x: I; ->x : Symbol(x, Decl(classDoesNotDependOnPrivateMember.ts, 2, 20)) +>x : Symbol(C.x, Decl(classDoesNotDependOnPrivateMember.ts, 2, 20)) >I : Symbol(I, Decl(classDoesNotDependOnPrivateMember.ts, 0, 10)) } } diff --git a/tests/baselines/reference/classExpressionTest1.symbols b/tests/baselines/reference/classExpressionTest1.symbols index 684ee302895..398a74d7f5f 100644 --- a/tests/baselines/reference/classExpressionTest1.symbols +++ b/tests/baselines/reference/classExpressionTest1.symbols @@ -7,7 +7,7 @@ function M() { >X : Symbol(X, Decl(classExpressionTest1.ts, 1, 12)) f() { ->f : Symbol(f, Decl(classExpressionTest1.ts, 1, 16)) +>f : Symbol(C.f, Decl(classExpressionTest1.ts, 1, 16)) >T : Symbol(T, Decl(classExpressionTest1.ts, 2, 10)) var t: T; diff --git a/tests/baselines/reference/classExtendingBuiltinType.symbols b/tests/baselines/reference/classExtendingBuiltinType.symbols index 78f2195c8db..fb0814cc0f2 100644 --- a/tests/baselines/reference/classExtendingBuiltinType.symbols +++ b/tests/baselines/reference/classExtendingBuiltinType.symbols @@ -9,7 +9,7 @@ class C2 extends Function { } class C3 extends String { } >C3 : Symbol(C3, Decl(classExtendingBuiltinType.ts, 1, 29)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) class C4 extends Boolean { } >C4 : Symbol(C4, Decl(classExtendingBuiltinType.ts, 2, 27)) @@ -17,11 +17,11 @@ class C4 extends Boolean { } class C5 extends Number { } >C5 : Symbol(C5, Decl(classExtendingBuiltinType.ts, 3, 28)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) class C6 extends Date { } >C6 : Symbol(C6, Decl(classExtendingBuiltinType.ts, 4, 27)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) class C7 extends RegExp { } >C7 : Symbol(C7, Decl(classExtendingBuiltinType.ts, 5, 25)) diff --git a/tests/baselines/reference/classExtendingClass.symbols b/tests/baselines/reference/classExtendingClass.symbols index 3c79887d163..638d595f812 100644 --- a/tests/baselines/reference/classExtendingClass.symbols +++ b/tests/baselines/reference/classExtendingClass.symbols @@ -3,10 +3,10 @@ class C { >C : Symbol(C, Decl(classExtendingClass.ts, 0, 0)) foo: string; ->foo : Symbol(foo, Decl(classExtendingClass.ts, 0, 9)) +>foo : Symbol(C.foo, Decl(classExtendingClass.ts, 0, 9)) thing() { } ->thing : Symbol(thing, Decl(classExtendingClass.ts, 1, 16)) +>thing : Symbol(C.thing, Decl(classExtendingClass.ts, 1, 16)) static other() { } >other : Symbol(C.other, Decl(classExtendingClass.ts, 2, 15)) @@ -17,7 +17,7 @@ class D extends C { >C : Symbol(C, Decl(classExtendingClass.ts, 0, 0)) bar: string; ->bar : Symbol(bar, Decl(classExtendingClass.ts, 6, 19)) +>bar : Symbol(D.bar, Decl(classExtendingClass.ts, 6, 19)) } var d: D; @@ -53,11 +53,11 @@ class C2 { >T : Symbol(T, Decl(classExtendingClass.ts, 16, 9)) foo: T; ->foo : Symbol(foo, Decl(classExtendingClass.ts, 16, 13)) +>foo : Symbol(C2.foo, Decl(classExtendingClass.ts, 16, 13)) >T : Symbol(T, Decl(classExtendingClass.ts, 16, 9)) thing(x: T) { } ->thing : Symbol(thing, Decl(classExtendingClass.ts, 17, 11)) +>thing : Symbol(C2.thing, Decl(classExtendingClass.ts, 17, 11)) >x : Symbol(x, Decl(classExtendingClass.ts, 18, 10)) >T : Symbol(T, Decl(classExtendingClass.ts, 16, 9)) @@ -75,7 +75,7 @@ class D2 extends C2 { >T : Symbol(T, Decl(classExtendingClass.ts, 22, 9)) bar: string; ->bar : Symbol(bar, Decl(classExtendingClass.ts, 22, 27)) +>bar : Symbol(D2.bar, Decl(classExtendingClass.ts, 22, 27)) } var d2: D2; diff --git a/tests/baselines/reference/classImplementsClass3.symbols b/tests/baselines/reference/classImplementsClass3.symbols index a1c565c8d53..66fdd66786c 100644 --- a/tests/baselines/reference/classImplementsClass3.symbols +++ b/tests/baselines/reference/classImplementsClass3.symbols @@ -1,14 +1,14 @@ === tests/cases/compiler/classImplementsClass3.ts === class A { foo(): number { return 1; } } >A : Symbol(A, Decl(classImplementsClass3.ts, 0, 0)) ->foo : Symbol(foo, Decl(classImplementsClass3.ts, 0, 9)) +>foo : Symbol(A.foo, Decl(classImplementsClass3.ts, 0, 9)) class C implements A { >C : Symbol(C, Decl(classImplementsClass3.ts, 0, 39)) >A : Symbol(A, Decl(classImplementsClass3.ts, 0, 0)) foo() { ->foo : Symbol(foo, Decl(classImplementsClass3.ts, 1, 22)) +>foo : Symbol(C.foo, Decl(classImplementsClass3.ts, 1, 22)) return 1; } diff --git a/tests/baselines/reference/classImplementsImportedInterface.symbols b/tests/baselines/reference/classImplementsImportedInterface.symbols index a629d3c005d..be06fa6f991 100644 --- a/tests/baselines/reference/classImplementsImportedInterface.symbols +++ b/tests/baselines/reference/classImplementsImportedInterface.symbols @@ -6,7 +6,7 @@ module M1 { >I : Symbol(I, Decl(classImplementsImportedInterface.ts, 0, 11)) foo(); ->foo : Symbol(foo, Decl(classImplementsImportedInterface.ts, 1, 24)) +>foo : Symbol(I.foo, Decl(classImplementsImportedInterface.ts, 1, 24)) } } @@ -23,6 +23,6 @@ module M2 { >T : Symbol(T, Decl(classImplementsImportedInterface.ts, 6, 11)) foo() {} ->foo : Symbol(foo, Decl(classImplementsImportedInterface.ts, 8, 26)) +>foo : Symbol(C.foo, Decl(classImplementsImportedInterface.ts, 8, 26)) } } diff --git a/tests/baselines/reference/classMemberInitializerWithLamdaScoping5.symbols b/tests/baselines/reference/classMemberInitializerWithLamdaScoping5.symbols index 585bae5b3c3..230f5bcec90 100644 --- a/tests/baselines/reference/classMemberInitializerWithLamdaScoping5.symbols +++ b/tests/baselines/reference/classMemberInitializerWithLamdaScoping5.symbols @@ -16,7 +16,7 @@ class Greeter { } messageHandler = (message: string) => { ->messageHandler : Symbol(messageHandler, Decl(classMemberInitializerWithLamdaScoping5.ts, 5, 5)) +>messageHandler : Symbol(Greeter.messageHandler, Decl(classMemberInitializerWithLamdaScoping5.ts, 5, 5)) >message : Symbol(message, Decl(classMemberInitializerWithLamdaScoping5.ts, 7, 22)) console.log(message); // This shouldnt be error diff --git a/tests/baselines/reference/classOrder1.symbols b/tests/baselines/reference/classOrder1.symbols index 4f1541ba9cd..02d6fc8ea34 100644 --- a/tests/baselines/reference/classOrder1.symbols +++ b/tests/baselines/reference/classOrder1.symbols @@ -3,7 +3,7 @@ class A { >A : Symbol(A, Decl(classOrder1.ts, 0, 0)) public foo() { ->foo : Symbol(foo, Decl(classOrder1.ts, 0, 9)) +>foo : Symbol(A.foo, Decl(classOrder1.ts, 0, 9)) /*WScript.Echo("Here!");*/ } diff --git a/tests/baselines/reference/classOrder2.symbols b/tests/baselines/reference/classOrder2.symbols index 4ee49d269a9..8ca6e89e1db 100644 --- a/tests/baselines/reference/classOrder2.symbols +++ b/tests/baselines/reference/classOrder2.symbols @@ -5,7 +5,7 @@ class A extends B { >B : Symbol(B, Decl(classOrder2.ts, 5, 1)) foo() { this.bar(); } ->foo : Symbol(foo, Decl(classOrder2.ts, 1, 19)) +>foo : Symbol(A.foo, Decl(classOrder2.ts, 1, 19)) >this.bar : Symbol(B.bar, Decl(classOrder2.ts, 7, 9)) >this : Symbol(A, Decl(classOrder2.ts, 0, 0)) >bar : Symbol(B.bar, Decl(classOrder2.ts, 7, 9)) @@ -16,7 +16,7 @@ class B { >B : Symbol(B, Decl(classOrder2.ts, 5, 1)) bar() { } ->bar : Symbol(bar, Decl(classOrder2.ts, 7, 9)) +>bar : Symbol(B.bar, Decl(classOrder2.ts, 7, 9)) } diff --git a/tests/baselines/reference/classOrderBug.symbols b/tests/baselines/reference/classOrderBug.symbols index 9065909180b..bbc78371231 100644 --- a/tests/baselines/reference/classOrderBug.symbols +++ b/tests/baselines/reference/classOrderBug.symbols @@ -3,15 +3,15 @@ class bar { >bar : Symbol(bar, Decl(classOrderBug.ts, 0, 0)) public baz: foo; ->baz : Symbol(baz, Decl(classOrderBug.ts, 0, 11)) +>baz : Symbol(bar.baz, Decl(classOrderBug.ts, 0, 11)) >foo : Symbol(foo, Decl(classOrderBug.ts, 10, 12)) constructor() { this.baz = new foo(); ->this.baz : Symbol(baz, Decl(classOrderBug.ts, 0, 11)) +>this.baz : Symbol(bar.baz, Decl(classOrderBug.ts, 0, 11)) >this : Symbol(bar, Decl(classOrderBug.ts, 0, 0)) ->baz : Symbol(baz, Decl(classOrderBug.ts, 0, 11)) +>baz : Symbol(bar.baz, Decl(classOrderBug.ts, 0, 11)) >foo : Symbol(foo, Decl(classOrderBug.ts, 10, 12)) } diff --git a/tests/baselines/reference/classSideInheritance2.symbols b/tests/baselines/reference/classSideInheritance2.symbols index 697aba99832..b90ae38a4a9 100644 --- a/tests/baselines/reference/classSideInheritance2.symbols +++ b/tests/baselines/reference/classSideInheritance2.symbols @@ -3,7 +3,7 @@ interface IText { >IText : Symbol(IText, Decl(classSideInheritance2.ts, 0, 0)) foo: number; ->foo : Symbol(foo, Decl(classSideInheritance2.ts, 0, 17)) +>foo : Symbol(IText.foo, Decl(classSideInheritance2.ts, 0, 17)) } interface TextSpan {} @@ -29,10 +29,10 @@ class TextBase implements IText { >IText : Symbol(IText, Decl(classSideInheritance2.ts, 0, 0)) public foo: number; ->foo : Symbol(foo, Decl(classSideInheritance2.ts, 13, 33)) +>foo : Symbol(TextBase.foo, Decl(classSideInheritance2.ts, 13, 33)) public subText(span: TextSpan): IText { ->subText : Symbol(subText, Decl(classSideInheritance2.ts, 14, 27)) +>subText : Symbol(TextBase.subText, Decl(classSideInheritance2.ts, 14, 27)) >span : Symbol(span, Decl(classSideInheritance2.ts, 15, 23)) >TextSpan : Symbol(TextSpan, Decl(classSideInheritance2.ts, 2, 1)) >IText : Symbol(IText, Decl(classSideInheritance2.ts, 0, 0)) diff --git a/tests/baselines/reference/classWithNoConstructorOrBaseClass.symbols b/tests/baselines/reference/classWithNoConstructorOrBaseClass.symbols index 0d26f892dec..efbd022a920 100644 --- a/tests/baselines/reference/classWithNoConstructorOrBaseClass.symbols +++ b/tests/baselines/reference/classWithNoConstructorOrBaseClass.symbols @@ -3,7 +3,7 @@ class C { >C : Symbol(C, Decl(classWithNoConstructorOrBaseClass.ts, 0, 0)) x: string; ->x : Symbol(x, Decl(classWithNoConstructorOrBaseClass.ts, 0, 9)) +>x : Symbol(C.x, Decl(classWithNoConstructorOrBaseClass.ts, 0, 9)) } var c = new C(); @@ -20,11 +20,11 @@ class D { >U : Symbol(U, Decl(classWithNoConstructorOrBaseClass.ts, 7, 10)) x: T; ->x : Symbol(x, Decl(classWithNoConstructorOrBaseClass.ts, 7, 14)) +>x : Symbol(D.x, Decl(classWithNoConstructorOrBaseClass.ts, 7, 14)) >T : Symbol(T, Decl(classWithNoConstructorOrBaseClass.ts, 7, 8)) y: U; ->y : Symbol(y, Decl(classWithNoConstructorOrBaseClass.ts, 8, 9)) +>y : Symbol(D.y, Decl(classWithNoConstructorOrBaseClass.ts, 8, 9)) >U : Symbol(U, Decl(classWithNoConstructorOrBaseClass.ts, 7, 10)) } diff --git a/tests/baselines/reference/classWithOnlyPublicMembersEquivalentToInterface.symbols b/tests/baselines/reference/classWithOnlyPublicMembersEquivalentToInterface.symbols index e30810f5cf9..b09c819cf65 100644 --- a/tests/baselines/reference/classWithOnlyPublicMembersEquivalentToInterface.symbols +++ b/tests/baselines/reference/classWithOnlyPublicMembersEquivalentToInterface.symbols @@ -5,17 +5,17 @@ class C { >C : Symbol(C, Decl(classWithOnlyPublicMembersEquivalentToInterface.ts, 0, 0)) public x: string; ->x : Symbol(x, Decl(classWithOnlyPublicMembersEquivalentToInterface.ts, 2, 9)) +>x : Symbol(C.x, Decl(classWithOnlyPublicMembersEquivalentToInterface.ts, 2, 9)) public y(a: number): number { return null; } ->y : Symbol(y, Decl(classWithOnlyPublicMembersEquivalentToInterface.ts, 3, 21)) +>y : Symbol(C.y, Decl(classWithOnlyPublicMembersEquivalentToInterface.ts, 3, 21)) >a : Symbol(a, Decl(classWithOnlyPublicMembersEquivalentToInterface.ts, 4, 13)) public get z() { return 1; } ->z : Symbol(z, Decl(classWithOnlyPublicMembersEquivalentToInterface.ts, 4, 48), Decl(classWithOnlyPublicMembersEquivalentToInterface.ts, 5, 32)) +>z : Symbol(C.z, Decl(classWithOnlyPublicMembersEquivalentToInterface.ts, 4, 48), Decl(classWithOnlyPublicMembersEquivalentToInterface.ts, 5, 32)) public set z(v) { } ->z : Symbol(z, Decl(classWithOnlyPublicMembersEquivalentToInterface.ts, 4, 48), Decl(classWithOnlyPublicMembersEquivalentToInterface.ts, 5, 32)) +>z : Symbol(C.z, Decl(classWithOnlyPublicMembersEquivalentToInterface.ts, 4, 48), Decl(classWithOnlyPublicMembersEquivalentToInterface.ts, 5, 32)) >v : Symbol(v, Decl(classWithOnlyPublicMembersEquivalentToInterface.ts, 6, 17)) [x: string]: Object; @@ -33,14 +33,14 @@ interface I { >I : Symbol(I, Decl(classWithOnlyPublicMembersEquivalentToInterface.ts, 10, 1)) x: string; ->x : Symbol(x, Decl(classWithOnlyPublicMembersEquivalentToInterface.ts, 12, 13)) +>x : Symbol(I.x, Decl(classWithOnlyPublicMembersEquivalentToInterface.ts, 12, 13)) y(b: number): number; ->y : Symbol(y, Decl(classWithOnlyPublicMembersEquivalentToInterface.ts, 13, 14)) +>y : Symbol(I.y, Decl(classWithOnlyPublicMembersEquivalentToInterface.ts, 13, 14)) >b : Symbol(b, Decl(classWithOnlyPublicMembersEquivalentToInterface.ts, 14, 6)) z: number; ->z : Symbol(z, Decl(classWithOnlyPublicMembersEquivalentToInterface.ts, 14, 25)) +>z : Symbol(I.z, Decl(classWithOnlyPublicMembersEquivalentToInterface.ts, 14, 25)) [x: string]: Object; >x : Symbol(x, Decl(classWithOnlyPublicMembersEquivalentToInterface.ts, 16, 5)) diff --git a/tests/baselines/reference/classWithOnlyPublicMembersEquivalentToInterface2.symbols b/tests/baselines/reference/classWithOnlyPublicMembersEquivalentToInterface2.symbols index 13a716f9e8c..80658b0531c 100644 --- a/tests/baselines/reference/classWithOnlyPublicMembersEquivalentToInterface2.symbols +++ b/tests/baselines/reference/classWithOnlyPublicMembersEquivalentToInterface2.symbols @@ -5,17 +5,17 @@ class C { >C : Symbol(C, Decl(classWithOnlyPublicMembersEquivalentToInterface2.ts, 0, 0)) public x: string; ->x : Symbol(x, Decl(classWithOnlyPublicMembersEquivalentToInterface2.ts, 2, 9)) +>x : Symbol(C.x, Decl(classWithOnlyPublicMembersEquivalentToInterface2.ts, 2, 9)) public y(a: number): number { return null; } ->y : Symbol(y, Decl(classWithOnlyPublicMembersEquivalentToInterface2.ts, 3, 21)) +>y : Symbol(C.y, Decl(classWithOnlyPublicMembersEquivalentToInterface2.ts, 3, 21)) >a : Symbol(a, Decl(classWithOnlyPublicMembersEquivalentToInterface2.ts, 4, 13)) public get z() { return 1; } ->z : Symbol(z, Decl(classWithOnlyPublicMembersEquivalentToInterface2.ts, 4, 48), Decl(classWithOnlyPublicMembersEquivalentToInterface2.ts, 5, 32)) +>z : Symbol(C.z, Decl(classWithOnlyPublicMembersEquivalentToInterface2.ts, 4, 48), Decl(classWithOnlyPublicMembersEquivalentToInterface2.ts, 5, 32)) public set z(v) { } ->z : Symbol(z, Decl(classWithOnlyPublicMembersEquivalentToInterface2.ts, 4, 48), Decl(classWithOnlyPublicMembersEquivalentToInterface2.ts, 5, 32)) +>z : Symbol(C.z, Decl(classWithOnlyPublicMembersEquivalentToInterface2.ts, 4, 48), Decl(classWithOnlyPublicMembersEquivalentToInterface2.ts, 5, 32)) >v : Symbol(v, Decl(classWithOnlyPublicMembersEquivalentToInterface2.ts, 6, 17)) [x: string]: Object; @@ -36,14 +36,14 @@ interface I { >I : Symbol(I, Decl(classWithOnlyPublicMembersEquivalentToInterface2.ts, 12, 1)) x: string; ->x : Symbol(x, Decl(classWithOnlyPublicMembersEquivalentToInterface2.ts, 14, 13)) +>x : Symbol(I.x, Decl(classWithOnlyPublicMembersEquivalentToInterface2.ts, 14, 13)) y(b: number): number; ->y : Symbol(y, Decl(classWithOnlyPublicMembersEquivalentToInterface2.ts, 15, 14)) +>y : Symbol(I.y, Decl(classWithOnlyPublicMembersEquivalentToInterface2.ts, 15, 14)) >b : Symbol(b, Decl(classWithOnlyPublicMembersEquivalentToInterface2.ts, 16, 6)) z: number; ->z : Symbol(z, Decl(classWithOnlyPublicMembersEquivalentToInterface2.ts, 16, 25)) +>z : Symbol(I.z, Decl(classWithOnlyPublicMembersEquivalentToInterface2.ts, 16, 25)) [x: string]: Object; >x : Symbol(x, Decl(classWithOnlyPublicMembersEquivalentToInterface2.ts, 18, 5)) diff --git a/tests/baselines/reference/classWithProtectedProperty.symbols b/tests/baselines/reference/classWithProtectedProperty.symbols index 017233081b2..c51b52b4df9 100644 --- a/tests/baselines/reference/classWithProtectedProperty.symbols +++ b/tests/baselines/reference/classWithProtectedProperty.symbols @@ -5,19 +5,19 @@ class C { >C : Symbol(C, Decl(classWithProtectedProperty.ts, 0, 0)) protected x; ->x : Symbol(x, Decl(classWithProtectedProperty.ts, 2, 9)) +>x : Symbol(C.x, Decl(classWithProtectedProperty.ts, 2, 9)) protected a = ''; ->a : Symbol(a, Decl(classWithProtectedProperty.ts, 3, 16)) +>a : Symbol(C.a, Decl(classWithProtectedProperty.ts, 3, 16)) protected b: string = ''; ->b : Symbol(b, Decl(classWithProtectedProperty.ts, 4, 21)) +>b : Symbol(C.b, Decl(classWithProtectedProperty.ts, 4, 21)) protected c() { return '' } ->c : Symbol(c, Decl(classWithProtectedProperty.ts, 5, 29)) +>c : Symbol(C.c, Decl(classWithProtectedProperty.ts, 5, 29)) protected d = () => ''; ->d : Symbol(d, Decl(classWithProtectedProperty.ts, 6, 31)) +>d : Symbol(C.d, Decl(classWithProtectedProperty.ts, 6, 31)) protected static e; >e : Symbol(C.e, Decl(classWithProtectedProperty.ts, 7, 27)) @@ -34,7 +34,7 @@ class D extends C { >C : Symbol(C, Decl(classWithProtectedProperty.ts, 0, 0)) method() { ->method : Symbol(method, Decl(classWithProtectedProperty.ts, 13, 19)) +>method : Symbol(D.method, Decl(classWithProtectedProperty.ts, 13, 19)) // No errors var d = new D(); diff --git a/tests/baselines/reference/classWithPublicProperty.symbols b/tests/baselines/reference/classWithPublicProperty.symbols index 0e3aa272e5d..612d50c4694 100644 --- a/tests/baselines/reference/classWithPublicProperty.symbols +++ b/tests/baselines/reference/classWithPublicProperty.symbols @@ -3,19 +3,19 @@ class C { >C : Symbol(C, Decl(classWithPublicProperty.ts, 0, 0)) public x; ->x : Symbol(x, Decl(classWithPublicProperty.ts, 0, 9)) +>x : Symbol(C.x, Decl(classWithPublicProperty.ts, 0, 9)) public a = ''; ->a : Symbol(a, Decl(classWithPublicProperty.ts, 1, 13)) +>a : Symbol(C.a, Decl(classWithPublicProperty.ts, 1, 13)) public b: string = ''; ->b : Symbol(b, Decl(classWithPublicProperty.ts, 2, 18)) +>b : Symbol(C.b, Decl(classWithPublicProperty.ts, 2, 18)) public c() { return '' } ->c : Symbol(c, Decl(classWithPublicProperty.ts, 3, 26)) +>c : Symbol(C.c, Decl(classWithPublicProperty.ts, 3, 26)) public d = () => ''; ->d : Symbol(d, Decl(classWithPublicProperty.ts, 4, 28)) +>d : Symbol(C.d, Decl(classWithPublicProperty.ts, 4, 28)) public static e; >e : Symbol(C.e, Decl(classWithPublicProperty.ts, 5, 24)) diff --git a/tests/baselines/reference/classdecl.symbols b/tests/baselines/reference/classdecl.symbols index ad355e23517..68c7a632c10 100644 --- a/tests/baselines/reference/classdecl.symbols +++ b/tests/baselines/reference/classdecl.symbols @@ -15,18 +15,18 @@ class a { } public pgF() { } ->pgF : Symbol(pgF, Decl(classdecl.ts, 6, 5)) +>pgF : Symbol(a.pgF, Decl(classdecl.ts, 6, 5)) public pv; ->pv : Symbol(pv, Decl(classdecl.ts, 8, 20)) +>pv : Symbol(a.pv, Decl(classdecl.ts, 8, 20)) public get d() { ->d : Symbol(d, Decl(classdecl.ts, 10, 14), Decl(classdecl.ts, 13, 5)) +>d : Symbol(a.d, Decl(classdecl.ts, 10, 14), Decl(classdecl.ts, 13, 5)) return 30; } public set d(a: number) { ->d : Symbol(d, Decl(classdecl.ts, 10, 14), Decl(classdecl.ts, 13, 5)) +>d : Symbol(a.d, Decl(classdecl.ts, 10, 14), Decl(classdecl.ts, 13, 5)) >a : Symbol(a, Decl(classdecl.ts, 14, 17)) } @@ -47,18 +47,18 @@ class a { return "string"; } private pv3; ->pv3 : Symbol(pv3, Decl(classdecl.ts, 25, 5)) +>pv3 : Symbol(a.pv3, Decl(classdecl.ts, 25, 5)) private foo(n: number): string; ->foo : Symbol(foo, Decl(classdecl.ts, 26, 16), Decl(classdecl.ts, 28, 35), Decl(classdecl.ts, 29, 35)) +>foo : Symbol(a.foo, Decl(classdecl.ts, 26, 16), Decl(classdecl.ts, 28, 35), Decl(classdecl.ts, 29, 35)) >n : Symbol(n, Decl(classdecl.ts, 28, 16)) private foo(s: string): string; ->foo : Symbol(foo, Decl(classdecl.ts, 26, 16), Decl(classdecl.ts, 28, 35), Decl(classdecl.ts, 29, 35)) +>foo : Symbol(a.foo, Decl(classdecl.ts, 26, 16), Decl(classdecl.ts, 28, 35), Decl(classdecl.ts, 29, 35)) >s : Symbol(s, Decl(classdecl.ts, 29, 16)) private foo(ns: any) { ->foo : Symbol(foo, Decl(classdecl.ts, 26, 16), Decl(classdecl.ts, 28, 35), Decl(classdecl.ts, 29, 35)) +>foo : Symbol(a.foo, Decl(classdecl.ts, 26, 16), Decl(classdecl.ts, 28, 35), Decl(classdecl.ts, 29, 35)) >ns : Symbol(ns, Decl(classdecl.ts, 30, 16)) return ns.toString(); @@ -130,13 +130,13 @@ declare class aAmbient { >s : Symbol(s, Decl(classdecl.ts, 67, 17)) public pgF(): void; ->pgF : Symbol(pgF, Decl(classdecl.ts, 67, 28)) +>pgF : Symbol(aAmbient.pgF, Decl(classdecl.ts, 67, 28)) public pv; ->pv : Symbol(pv, Decl(classdecl.ts, 68, 23)) +>pv : Symbol(aAmbient.pv, Decl(classdecl.ts, 68, 23)) public d : number; ->d : Symbol(d, Decl(classdecl.ts, 69, 14)) +>d : Symbol(aAmbient.d, Decl(classdecl.ts, 69, 14)) static p2 : { x: number; y: number; }; >p2 : Symbol(aAmbient.p2, Decl(classdecl.ts, 70, 22)) @@ -150,10 +150,10 @@ declare class aAmbient { >p3 : Symbol(aAmbient.p3, Decl(classdecl.ts, 72, 16)) private pv3; ->pv3 : Symbol(pv3, Decl(classdecl.ts, 73, 14)) +>pv3 : Symbol(aAmbient.pv3, Decl(classdecl.ts, 73, 14)) private foo(s); ->foo : Symbol(foo, Decl(classdecl.ts, 74, 16)) +>foo : Symbol(aAmbient.foo, Decl(classdecl.ts, 74, 16)) >s : Symbol(s, Decl(classdecl.ts, 75, 16)) } @@ -161,15 +161,15 @@ class d { >d : Symbol(d, Decl(classdecl.ts, 76, 1)) private foo(n: number): string; ->foo : Symbol(foo, Decl(classdecl.ts, 78, 9), Decl(classdecl.ts, 79, 35), Decl(classdecl.ts, 80, 35)) +>foo : Symbol(d.foo, Decl(classdecl.ts, 78, 9), Decl(classdecl.ts, 79, 35), Decl(classdecl.ts, 80, 35)) >n : Symbol(n, Decl(classdecl.ts, 79, 16)) private foo(s: string): string; ->foo : Symbol(foo, Decl(classdecl.ts, 78, 9), Decl(classdecl.ts, 79, 35), Decl(classdecl.ts, 80, 35)) +>foo : Symbol(d.foo, Decl(classdecl.ts, 78, 9), Decl(classdecl.ts, 79, 35), Decl(classdecl.ts, 80, 35)) >s : Symbol(s, Decl(classdecl.ts, 80, 16)) private foo(ns: any) { ->foo : Symbol(foo, Decl(classdecl.ts, 78, 9), Decl(classdecl.ts, 79, 35), Decl(classdecl.ts, 80, 35)) +>foo : Symbol(d.foo, Decl(classdecl.ts, 78, 9), Decl(classdecl.ts, 79, 35), Decl(classdecl.ts, 80, 35)) >ns : Symbol(ns, Decl(classdecl.ts, 81, 16)) return ns.toString(); @@ -181,15 +181,15 @@ class e { >e : Symbol(e, Decl(classdecl.ts, 84, 1)) private foo(s: string): string; ->foo : Symbol(foo, Decl(classdecl.ts, 86, 9), Decl(classdecl.ts, 87, 35), Decl(classdecl.ts, 88, 35)) +>foo : Symbol(e.foo, Decl(classdecl.ts, 86, 9), Decl(classdecl.ts, 87, 35), Decl(classdecl.ts, 88, 35)) >s : Symbol(s, Decl(classdecl.ts, 87, 16)) private foo(n: number): string; ->foo : Symbol(foo, Decl(classdecl.ts, 86, 9), Decl(classdecl.ts, 87, 35), Decl(classdecl.ts, 88, 35)) +>foo : Symbol(e.foo, Decl(classdecl.ts, 86, 9), Decl(classdecl.ts, 87, 35), Decl(classdecl.ts, 88, 35)) >n : Symbol(n, Decl(classdecl.ts, 88, 16)) private foo(ns: any) { ->foo : Symbol(foo, Decl(classdecl.ts, 86, 9), Decl(classdecl.ts, 87, 35), Decl(classdecl.ts, 88, 35)) +>foo : Symbol(e.foo, Decl(classdecl.ts, 86, 9), Decl(classdecl.ts, 87, 35), Decl(classdecl.ts, 88, 35)) >ns : Symbol(ns, Decl(classdecl.ts, 89, 16)) return ns.toString(); diff --git a/tests/baselines/reference/clinterfaces.symbols b/tests/baselines/reference/clinterfaces.symbols index 76c7d74b521..0c0bf5ba3a3 100644 --- a/tests/baselines/reference/clinterfaces.symbols +++ b/tests/baselines/reference/clinterfaces.symbols @@ -20,7 +20,7 @@ interface Foo { >T : Symbol(T, Decl(clinterfaces.ts, 7, 14), Decl(clinterfaces.ts, 11, 10)) a: string; ->a : Symbol(a, Decl(clinterfaces.ts, 7, 18)) +>a : Symbol(Foo.a, Decl(clinterfaces.ts, 7, 18)) } class Foo{ @@ -28,7 +28,7 @@ class Foo{ >T : Symbol(T, Decl(clinterfaces.ts, 7, 14), Decl(clinterfaces.ts, 11, 10)) b: number; ->b : Symbol(b, Decl(clinterfaces.ts, 11, 13)) +>b : Symbol(Foo.b, Decl(clinterfaces.ts, 11, 13)) } class Bar{ @@ -36,7 +36,7 @@ class Bar{ >T : Symbol(T, Decl(clinterfaces.ts, 15, 10), Decl(clinterfaces.ts, 19, 14)) b: number; ->b : Symbol(b, Decl(clinterfaces.ts, 15, 13)) +>b : Symbol(Bar.b, Decl(clinterfaces.ts, 15, 13)) } interface Bar { @@ -44,7 +44,7 @@ interface Bar { >T : Symbol(T, Decl(clinterfaces.ts, 15, 10), Decl(clinterfaces.ts, 19, 14)) a: string; ->a : Symbol(a, Decl(clinterfaces.ts, 19, 18)) +>a : Symbol(Bar.a, Decl(clinterfaces.ts, 19, 18)) } export = Foo; diff --git a/tests/baselines/reference/cloduleAcrossModuleDefinitions.symbols b/tests/baselines/reference/cloduleAcrossModuleDefinitions.symbols index 7be8383355c..c0821b54c69 100644 --- a/tests/baselines/reference/cloduleAcrossModuleDefinitions.symbols +++ b/tests/baselines/reference/cloduleAcrossModuleDefinitions.symbols @@ -6,7 +6,7 @@ module A { >B : Symbol(B, Decl(cloduleAcrossModuleDefinitions.ts, 0, 10), Decl(cloduleAcrossModuleDefinitions.ts, 7, 10)) foo() { } ->foo : Symbol(foo, Decl(cloduleAcrossModuleDefinitions.ts, 1, 20)) +>foo : Symbol(B.foo, Decl(cloduleAcrossModuleDefinitions.ts, 1, 20)) static bar() { } >bar : Symbol(B.bar, Decl(cloduleAcrossModuleDefinitions.ts, 2, 17)) diff --git a/tests/baselines/reference/cloduleAndTypeParameters.symbols b/tests/baselines/reference/cloduleAndTypeParameters.symbols index f2d96346495..5a1b5cf18dc 100644 --- a/tests/baselines/reference/cloduleAndTypeParameters.symbols +++ b/tests/baselines/reference/cloduleAndTypeParameters.symbols @@ -16,7 +16,7 @@ module Foo { >Bar : Symbol(Bar, Decl(cloduleAndTypeParameters.ts, 5, 12)) bar(): void; ->bar : Symbol(bar, Decl(cloduleAndTypeParameters.ts, 6, 24)) +>bar : Symbol(Bar.bar, Decl(cloduleAndTypeParameters.ts, 6, 24)) } export class Baz { diff --git a/tests/baselines/reference/cloduleTest1.symbols b/tests/baselines/reference/cloduleTest1.symbols index 01759cfa136..11e1967d16f 100644 --- a/tests/baselines/reference/cloduleTest1.symbols +++ b/tests/baselines/reference/cloduleTest1.symbols @@ -8,7 +8,7 @@ >$ : Symbol($, Decl(cloduleTest1.ts, 0, 0), Decl(cloduleTest1.ts, 0, 42), Decl(cloduleTest1.ts, 3, 3)) addClass(className: string): $; ->addClass : Symbol(addClass, Decl(cloduleTest1.ts, 1, 15)) +>addClass : Symbol($.addClass, Decl(cloduleTest1.ts, 1, 15)) >className : Symbol(className, Decl(cloduleTest1.ts, 2, 15)) >$ : Symbol($, Decl(cloduleTest1.ts, 0, 0), Decl(cloduleTest1.ts, 0, 42), Decl(cloduleTest1.ts, 3, 3)) } diff --git a/tests/baselines/reference/cloduleWithPriorUninstantiatedModule.symbols b/tests/baselines/reference/cloduleWithPriorUninstantiatedModule.symbols index 7f93d361dd9..be76ccfbfad 100644 --- a/tests/baselines/reference/cloduleWithPriorUninstantiatedModule.symbols +++ b/tests/baselines/reference/cloduleWithPriorUninstantiatedModule.symbols @@ -7,7 +7,7 @@ module Moclodule { >Someinterface : Symbol(Someinterface, Decl(cloduleWithPriorUninstantiatedModule.ts, 1, 18)) foo(): void; ->foo : Symbol(foo, Decl(cloduleWithPriorUninstantiatedModule.ts, 2, 36)) +>foo : Symbol(Someinterface.foo, Decl(cloduleWithPriorUninstantiatedModule.ts, 2, 36)) } } diff --git a/tests/baselines/reference/collisionArgumentsInterfaceMembers.symbols b/tests/baselines/reference/collisionArgumentsInterfaceMembers.symbols index a8856c37a4c..f0a82bec521 100644 --- a/tests/baselines/reference/collisionArgumentsInterfaceMembers.symbols +++ b/tests/baselines/reference/collisionArgumentsInterfaceMembers.symbols @@ -48,16 +48,16 @@ interface i3 { >i3 : Symbol(i3, Decl(collisionArgumentsInterfaceMembers.ts, 20, 1)) foo(i: number, ...arguments); // no error - no code gen ->foo : Symbol(foo, Decl(collisionArgumentsInterfaceMembers.ts, 23, 14)) +>foo : Symbol(i3.foo, Decl(collisionArgumentsInterfaceMembers.ts, 23, 14)) >i : Symbol(i, Decl(collisionArgumentsInterfaceMembers.ts, 24, 8)) >arguments : Symbol(arguments, Decl(collisionArgumentsInterfaceMembers.ts, 24, 18)) foo1(arguments: number, ...rest); // no error - no code gen ->foo1 : Symbol(foo1, Decl(collisionArgumentsInterfaceMembers.ts, 24, 33)) +>foo1 : Symbol(i3.foo1, Decl(collisionArgumentsInterfaceMembers.ts, 24, 33)) >arguments : Symbol(arguments, Decl(collisionArgumentsInterfaceMembers.ts, 25, 9)) >rest : Symbol(rest, Decl(collisionArgumentsInterfaceMembers.ts, 25, 27)) fooNoError(arguments: number); // no error ->fooNoError : Symbol(fooNoError, Decl(collisionArgumentsInterfaceMembers.ts, 25, 37)) +>fooNoError : Symbol(i3.fooNoError, Decl(collisionArgumentsInterfaceMembers.ts, 25, 37)) >arguments : Symbol(arguments, Decl(collisionArgumentsInterfaceMembers.ts, 26, 15)) } diff --git a/tests/baselines/reference/collisionCodeGenModuleWithConstructorChildren.symbols b/tests/baselines/reference/collisionCodeGenModuleWithConstructorChildren.symbols index 28665abd098..ce003b9c878 100644 --- a/tests/baselines/reference/collisionCodeGenModuleWithConstructorChildren.symbols +++ b/tests/baselines/reference/collisionCodeGenModuleWithConstructorChildren.symbols @@ -23,7 +23,7 @@ module M { >d : Symbol(d, Decl(collisionCodeGenModuleWithConstructorChildren.ts, 8, 10)) constructor(private M, p = x) { ->M : Symbol(M, Decl(collisionCodeGenModuleWithConstructorChildren.ts, 10, 20)) +>M : Symbol(d.M, Decl(collisionCodeGenModuleWithConstructorChildren.ts, 10, 20)) >p : Symbol(p, Decl(collisionCodeGenModuleWithConstructorChildren.ts, 10, 30)) >x : Symbol(x, Decl(collisionCodeGenModuleWithConstructorChildren.ts, 1, 14)) } diff --git a/tests/baselines/reference/collisionCodeGenModuleWithMethodChildren.symbols b/tests/baselines/reference/collisionCodeGenModuleWithMethodChildren.symbols index 02105ce42e6..87c90bfb480 100644 --- a/tests/baselines/reference/collisionCodeGenModuleWithMethodChildren.symbols +++ b/tests/baselines/reference/collisionCodeGenModuleWithMethodChildren.symbols @@ -9,7 +9,7 @@ module M { >c : Symbol(c, Decl(collisionCodeGenModuleWithMethodChildren.ts, 1, 21)) fn(M, p = x) { } ->fn : Symbol(fn, Decl(collisionCodeGenModuleWithMethodChildren.ts, 2, 13)) +>fn : Symbol(c.fn, Decl(collisionCodeGenModuleWithMethodChildren.ts, 2, 13)) >M : Symbol(M, Decl(collisionCodeGenModuleWithMethodChildren.ts, 3, 11)) >p : Symbol(p, Decl(collisionCodeGenModuleWithMethodChildren.ts, 3, 13)) >x : Symbol(x, Decl(collisionCodeGenModuleWithMethodChildren.ts, 1, 14)) @@ -23,7 +23,7 @@ module M { >d : Symbol(d, Decl(collisionCodeGenModuleWithMethodChildren.ts, 7, 10)) fn2() { ->fn2 : Symbol(fn2, Decl(collisionCodeGenModuleWithMethodChildren.ts, 8, 13)) +>fn2 : Symbol(d.fn2, Decl(collisionCodeGenModuleWithMethodChildren.ts, 8, 13)) var M; >M : Symbol(M, Decl(collisionCodeGenModuleWithMethodChildren.ts, 10, 15)) @@ -42,7 +42,7 @@ module M { >e : Symbol(e, Decl(collisionCodeGenModuleWithMethodChildren.ts, 16, 10)) fn3() { ->fn3 : Symbol(fn3, Decl(collisionCodeGenModuleWithMethodChildren.ts, 17, 13)) +>fn3 : Symbol(e.fn3, Decl(collisionCodeGenModuleWithMethodChildren.ts, 17, 13)) function M() { >M : Symbol(M, Decl(collisionCodeGenModuleWithMethodChildren.ts, 18, 15)) @@ -62,7 +62,7 @@ module M { // Shouldnt bn _M >f : Symbol(f, Decl(collisionCodeGenModuleWithMethodChildren.ts, 26, 10)) M() { ->M : Symbol(M, Decl(collisionCodeGenModuleWithMethodChildren.ts, 27, 13)) +>M : Symbol(f.M, Decl(collisionCodeGenModuleWithMethodChildren.ts, 27, 13)) } } } diff --git a/tests/baselines/reference/collisionRestParameterClassConstructor.symbols b/tests/baselines/reference/collisionRestParameterClassConstructor.symbols index 895cb0f8df4..4b1f20cc26e 100644 --- a/tests/baselines/reference/collisionRestParameterClassConstructor.symbols +++ b/tests/baselines/reference/collisionRestParameterClassConstructor.symbols @@ -45,7 +45,7 @@ class c3 { >c3 : Symbol(c3, Decl(collisionRestParameterClassConstructor.ts, 21, 1)) constructor(public _i: number, ...restParameters) { //_i is error ->_i : Symbol(_i, Decl(collisionRestParameterClassConstructor.ts, 24, 16)) +>_i : Symbol(c3._i, Decl(collisionRestParameterClassConstructor.ts, 24, 16)) >restParameters : Symbol(restParameters, Decl(collisionRestParameterClassConstructor.ts, 24, 34)) var _i = 10; // no error @@ -56,7 +56,7 @@ class c3NoError { >c3NoError : Symbol(c3NoError, Decl(collisionRestParameterClassConstructor.ts, 27, 1)) constructor(public _i: number) { // no error ->_i : Symbol(_i, Decl(collisionRestParameterClassConstructor.ts, 29, 16)) +>_i : Symbol(c3NoError._i, Decl(collisionRestParameterClassConstructor.ts, 29, 16)) var _i = 10; // no error >_i : Symbol(_i, Decl(collisionRestParameterClassConstructor.ts, 29, 16), Decl(collisionRestParameterClassConstructor.ts, 30, 11)) diff --git a/tests/baselines/reference/collisionRestParameterClassMethod.symbols b/tests/baselines/reference/collisionRestParameterClassMethod.symbols index 838736e33ce..e7f975b26b3 100644 --- a/tests/baselines/reference/collisionRestParameterClassMethod.symbols +++ b/tests/baselines/reference/collisionRestParameterClassMethod.symbols @@ -3,7 +3,7 @@ class c1 { >c1 : Symbol(c1, Decl(collisionRestParameterClassMethod.ts, 0, 0)) public foo(_i: number, ...restParameters) { //_i is error ->foo : Symbol(foo, Decl(collisionRestParameterClassMethod.ts, 0, 10)) +>foo : Symbol(c1.foo, Decl(collisionRestParameterClassMethod.ts, 0, 10)) >_i : Symbol(_i, Decl(collisionRestParameterClassMethod.ts, 1, 15), Decl(collisionRestParameterClassMethod.ts, 2, 11)) >restParameters : Symbol(restParameters, Decl(collisionRestParameterClassMethod.ts, 1, 26)) @@ -11,24 +11,24 @@ class c1 { >_i : Symbol(_i, Decl(collisionRestParameterClassMethod.ts, 1, 15), Decl(collisionRestParameterClassMethod.ts, 2, 11)) } public fooNoError(_i: number) { // no error ->fooNoError : Symbol(fooNoError, Decl(collisionRestParameterClassMethod.ts, 3, 5)) +>fooNoError : Symbol(c1.fooNoError, Decl(collisionRestParameterClassMethod.ts, 3, 5)) >_i : Symbol(_i, Decl(collisionRestParameterClassMethod.ts, 4, 22), Decl(collisionRestParameterClassMethod.ts, 5, 11)) var _i = 10; // no error >_i : Symbol(_i, Decl(collisionRestParameterClassMethod.ts, 4, 22), Decl(collisionRestParameterClassMethod.ts, 5, 11)) } public f4(_i: number, ...rest); // no codegen no error ->f4 : Symbol(f4, Decl(collisionRestParameterClassMethod.ts, 6, 5), Decl(collisionRestParameterClassMethod.ts, 7, 35), Decl(collisionRestParameterClassMethod.ts, 8, 35)) +>f4 : Symbol(c1.f4, Decl(collisionRestParameterClassMethod.ts, 6, 5), Decl(collisionRestParameterClassMethod.ts, 7, 35), Decl(collisionRestParameterClassMethod.ts, 8, 35)) >_i : Symbol(_i, Decl(collisionRestParameterClassMethod.ts, 7, 14)) >rest : Symbol(rest, Decl(collisionRestParameterClassMethod.ts, 7, 25)) public f4(_i: string, ...rest); // no codegen no error ->f4 : Symbol(f4, Decl(collisionRestParameterClassMethod.ts, 6, 5), Decl(collisionRestParameterClassMethod.ts, 7, 35), Decl(collisionRestParameterClassMethod.ts, 8, 35)) +>f4 : Symbol(c1.f4, Decl(collisionRestParameterClassMethod.ts, 6, 5), Decl(collisionRestParameterClassMethod.ts, 7, 35), Decl(collisionRestParameterClassMethod.ts, 8, 35)) >_i : Symbol(_i, Decl(collisionRestParameterClassMethod.ts, 8, 14)) >rest : Symbol(rest, Decl(collisionRestParameterClassMethod.ts, 8, 25)) public f4(_i: any, ...rest) { // error ->f4 : Symbol(f4, Decl(collisionRestParameterClassMethod.ts, 6, 5), Decl(collisionRestParameterClassMethod.ts, 7, 35), Decl(collisionRestParameterClassMethod.ts, 8, 35)) +>f4 : Symbol(c1.f4, Decl(collisionRestParameterClassMethod.ts, 6, 5), Decl(collisionRestParameterClassMethod.ts, 7, 35), Decl(collisionRestParameterClassMethod.ts, 8, 35)) >_i : Symbol(_i, Decl(collisionRestParameterClassMethod.ts, 9, 14), Decl(collisionRestParameterClassMethod.ts, 10, 11)) >rest : Symbol(rest, Decl(collisionRestParameterClassMethod.ts, 9, 22)) @@ -37,15 +37,15 @@ class c1 { } public f4NoError(_i: number); // no error ->f4NoError : Symbol(f4NoError, Decl(collisionRestParameterClassMethod.ts, 11, 5), Decl(collisionRestParameterClassMethod.ts, 13, 33), Decl(collisionRestParameterClassMethod.ts, 14, 33)) +>f4NoError : Symbol(c1.f4NoError, Decl(collisionRestParameterClassMethod.ts, 11, 5), Decl(collisionRestParameterClassMethod.ts, 13, 33), Decl(collisionRestParameterClassMethod.ts, 14, 33)) >_i : Symbol(_i, Decl(collisionRestParameterClassMethod.ts, 13, 21)) public f4NoError(_i: string); // no error ->f4NoError : Symbol(f4NoError, Decl(collisionRestParameterClassMethod.ts, 11, 5), Decl(collisionRestParameterClassMethod.ts, 13, 33), Decl(collisionRestParameterClassMethod.ts, 14, 33)) +>f4NoError : Symbol(c1.f4NoError, Decl(collisionRestParameterClassMethod.ts, 11, 5), Decl(collisionRestParameterClassMethod.ts, 13, 33), Decl(collisionRestParameterClassMethod.ts, 14, 33)) >_i : Symbol(_i, Decl(collisionRestParameterClassMethod.ts, 14, 21)) public f4NoError(_i: any) { // no error ->f4NoError : Symbol(f4NoError, Decl(collisionRestParameterClassMethod.ts, 11, 5), Decl(collisionRestParameterClassMethod.ts, 13, 33), Decl(collisionRestParameterClassMethod.ts, 14, 33)) +>f4NoError : Symbol(c1.f4NoError, Decl(collisionRestParameterClassMethod.ts, 11, 5), Decl(collisionRestParameterClassMethod.ts, 13, 33), Decl(collisionRestParameterClassMethod.ts, 14, 33)) >_i : Symbol(_i, Decl(collisionRestParameterClassMethod.ts, 15, 21), Decl(collisionRestParameterClassMethod.ts, 16, 11)) var _i: any; // no error @@ -57,30 +57,30 @@ declare class c2 { >c2 : Symbol(c2, Decl(collisionRestParameterClassMethod.ts, 18, 1)) public foo(_i: number, ...restParameters); // No error - no code gen ->foo : Symbol(foo, Decl(collisionRestParameterClassMethod.ts, 20, 18)) +>foo : Symbol(c2.foo, Decl(collisionRestParameterClassMethod.ts, 20, 18)) >_i : Symbol(_i, Decl(collisionRestParameterClassMethod.ts, 21, 15)) >restParameters : Symbol(restParameters, Decl(collisionRestParameterClassMethod.ts, 21, 26)) public fooNoError(_i: number); // no error ->fooNoError : Symbol(fooNoError, Decl(collisionRestParameterClassMethod.ts, 21, 46)) +>fooNoError : Symbol(c2.fooNoError, Decl(collisionRestParameterClassMethod.ts, 21, 46)) >_i : Symbol(_i, Decl(collisionRestParameterClassMethod.ts, 22, 22)) public f4(_i: number, ...rest); // no codegen no error ->f4 : Symbol(f4, Decl(collisionRestParameterClassMethod.ts, 22, 34), Decl(collisionRestParameterClassMethod.ts, 24, 35)) +>f4 : Symbol(c2.f4, Decl(collisionRestParameterClassMethod.ts, 22, 34), Decl(collisionRestParameterClassMethod.ts, 24, 35)) >_i : Symbol(_i, Decl(collisionRestParameterClassMethod.ts, 24, 14)) >rest : Symbol(rest, Decl(collisionRestParameterClassMethod.ts, 24, 25)) public f4(_i: string, ...rest); // no codegen no error ->f4 : Symbol(f4, Decl(collisionRestParameterClassMethod.ts, 22, 34), Decl(collisionRestParameterClassMethod.ts, 24, 35)) +>f4 : Symbol(c2.f4, Decl(collisionRestParameterClassMethod.ts, 22, 34), Decl(collisionRestParameterClassMethod.ts, 24, 35)) >_i : Symbol(_i, Decl(collisionRestParameterClassMethod.ts, 25, 14)) >rest : Symbol(rest, Decl(collisionRestParameterClassMethod.ts, 25, 25)) public f4NoError(_i: number); // no error ->f4NoError : Symbol(f4NoError, Decl(collisionRestParameterClassMethod.ts, 25, 35), Decl(collisionRestParameterClassMethod.ts, 26, 33)) +>f4NoError : Symbol(c2.f4NoError, Decl(collisionRestParameterClassMethod.ts, 25, 35), Decl(collisionRestParameterClassMethod.ts, 26, 33)) >_i : Symbol(_i, Decl(collisionRestParameterClassMethod.ts, 26, 21)) public f4NoError(_i: string); // no error ->f4NoError : Symbol(f4NoError, Decl(collisionRestParameterClassMethod.ts, 25, 35), Decl(collisionRestParameterClassMethod.ts, 26, 33)) +>f4NoError : Symbol(c2.f4NoError, Decl(collisionRestParameterClassMethod.ts, 25, 35), Decl(collisionRestParameterClassMethod.ts, 26, 33)) >_i : Symbol(_i, Decl(collisionRestParameterClassMethod.ts, 27, 21)) } @@ -88,14 +88,14 @@ class c3 { >c3 : Symbol(c3, Decl(collisionRestParameterClassMethod.ts, 28, 1)) public foo(...restParameters) { ->foo : Symbol(foo, Decl(collisionRestParameterClassMethod.ts, 30, 10)) +>foo : Symbol(c3.foo, Decl(collisionRestParameterClassMethod.ts, 30, 10)) >restParameters : Symbol(restParameters, Decl(collisionRestParameterClassMethod.ts, 31, 15)) var _i = 10; // no error >_i : Symbol(_i, Decl(collisionRestParameterClassMethod.ts, 32, 11)) } public fooNoError() { ->fooNoError : Symbol(fooNoError, Decl(collisionRestParameterClassMethod.ts, 33, 5)) +>fooNoError : Symbol(c3.fooNoError, Decl(collisionRestParameterClassMethod.ts, 33, 5)) var _i = 10; // no error >_i : Symbol(_i, Decl(collisionRestParameterClassMethod.ts, 35, 11)) diff --git a/tests/baselines/reference/collisionRestParameterInterfaceMembers.symbols b/tests/baselines/reference/collisionRestParameterInterfaceMembers.symbols index 448346c0838..4c99c7eec06 100644 --- a/tests/baselines/reference/collisionRestParameterInterfaceMembers.symbols +++ b/tests/baselines/reference/collisionRestParameterInterfaceMembers.symbols @@ -34,11 +34,11 @@ interface i3 { >i3 : Symbol(i3, Decl(collisionRestParameterInterfaceMembers.ts, 14, 1)) foo (_i: number, ...restParameters); // no error - no code gen ->foo : Symbol(foo, Decl(collisionRestParameterInterfaceMembers.ts, 17, 14)) +>foo : Symbol(i3.foo, Decl(collisionRestParameterInterfaceMembers.ts, 17, 14)) >_i : Symbol(_i, Decl(collisionRestParameterInterfaceMembers.ts, 18, 9)) >restParameters : Symbol(restParameters, Decl(collisionRestParameterInterfaceMembers.ts, 18, 20)) fooNoError (_i: number); // no error ->fooNoError : Symbol(fooNoError, Decl(collisionRestParameterInterfaceMembers.ts, 18, 40)) +>fooNoError : Symbol(i3.fooNoError, Decl(collisionRestParameterInterfaceMembers.ts, 18, 40)) >_i : Symbol(_i, Decl(collisionRestParameterInterfaceMembers.ts, 19, 16)) } diff --git a/tests/baselines/reference/commaOperatorWithSecondOperandObjectType.symbols b/tests/baselines/reference/commaOperatorWithSecondOperandObjectType.symbols index 3b8473318c0..6df26708078 100644 --- a/tests/baselines/reference/commaOperatorWithSecondOperandObjectType.symbols +++ b/tests/baselines/reference/commaOperatorWithSecondOperandObjectType.symbols @@ -19,7 +19,7 @@ class CLASS { >CLASS : Symbol(CLASS, Decl(commaOperatorWithSecondOperandObjectType.ts, 4, 19)) num: number; ->num : Symbol(num, Decl(commaOperatorWithSecondOperandObjectType.ts, 6, 13)) +>num : Symbol(CLASS.num, Decl(commaOperatorWithSecondOperandObjectType.ts, 6, 13)) } //The second operand type is Object @@ -82,7 +82,7 @@ true, {} >BOOLEAN : Symbol(BOOLEAN, Decl(commaOperatorWithSecondOperandObjectType.ts, 1, 3)) "string", new Date() ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) STRING.toLowerCase(), new CLASS() >STRING.toLowerCase : Symbol(String.toLowerCase, Decl(lib.d.ts, --, --)) @@ -110,7 +110,7 @@ var resultIsObject9 = (!BOOLEAN, { a: 1, b: "s" }); var resultIsObject10 = ("string", new Date()); >resultIsObject10 : Symbol(resultIsObject10, Decl(commaOperatorWithSecondOperandObjectType.ts, 36, 3)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) var resultIsObject11 = (STRING.toLowerCase(), new CLASS()); >resultIsObject11 : Symbol(resultIsObject11, Decl(commaOperatorWithSecondOperandObjectType.ts, 37, 3)) diff --git a/tests/baselines/reference/commaOperatorWithSecondOperandStringType.symbols b/tests/baselines/reference/commaOperatorWithSecondOperandStringType.symbols index 3c674237a21..2d9fc665a81 100644 --- a/tests/baselines/reference/commaOperatorWithSecondOperandStringType.symbols +++ b/tests/baselines/reference/commaOperatorWithSecondOperandStringType.symbols @@ -71,7 +71,7 @@ null, STRING; ANY = new Date(), STRING; >ANY : Symbol(ANY, Decl(commaOperatorWithSecondOperandStringType.ts, 0, 3)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >STRING : Symbol(STRING, Decl(commaOperatorWithSecondOperandStringType.ts, 3, 3)) true, ""; @@ -96,7 +96,7 @@ var resultIsString6 = (null, STRING); var resultIsString7 = (ANY = new Date(), STRING); >resultIsString7 : Symbol(resultIsString7, Decl(commaOperatorWithSecondOperandStringType.ts, 31, 3)) >ANY : Symbol(ANY, Decl(commaOperatorWithSecondOperandStringType.ts, 0, 3)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >STRING : Symbol(STRING, Decl(commaOperatorWithSecondOperandStringType.ts, 3, 3)) var resultIsString8 = (true, ""); diff --git a/tests/baselines/reference/commentOnAmbientModule.symbols b/tests/baselines/reference/commentOnAmbientModule.symbols index e7525e6306f..60d5dfe66fa 100644 --- a/tests/baselines/reference/commentOnAmbientModule.symbols +++ b/tests/baselines/reference/commentOnAmbientModule.symbols @@ -10,7 +10,7 @@ declare module E { >bar : Symbol(D.bar, Decl(a.ts, 11, 18)) foo(); ->foo : Symbol(foo, Decl(b.ts, 2, 32)) +>foo : Symbol(foobar.foo, Decl(b.ts, 2, 32)) } } === tests/cases/compiler/a.ts === diff --git a/tests/baselines/reference/commentOnClassMethod1.symbols b/tests/baselines/reference/commentOnClassMethod1.symbols index 18caefb744b..8fdb04c0e10 100644 --- a/tests/baselines/reference/commentOnClassMethod1.symbols +++ b/tests/baselines/reference/commentOnClassMethod1.symbols @@ -6,6 +6,6 @@ class WebControls { * Render a control */ createControl(): any { ->createControl : Symbol(createControl, Decl(commentOnClassMethod1.ts, 0, 19)) +>createControl : Symbol(WebControls.createControl, Decl(commentOnClassMethod1.ts, 0, 19)) } } diff --git a/tests/baselines/reference/commentOnSignature1.symbols b/tests/baselines/reference/commentOnSignature1.symbols index 7f0d48401cd..719544e21e6 100644 --- a/tests/baselines/reference/commentOnSignature1.symbols +++ b/tests/baselines/reference/commentOnSignature1.symbols @@ -51,16 +51,16 @@ class c { // dont keep this comment foo(a: string); ->foo : Symbol(foo, Decl(a.ts, 18, 5), Decl(a.ts, 21, 19), Decl(a.ts, 23, 19)) +>foo : Symbol(c.foo, Decl(a.ts, 18, 5), Decl(a.ts, 21, 19), Decl(a.ts, 23, 19)) >a : Symbol(a, Decl(a.ts, 21, 8)) /*! keep this pinned comment */ foo(a: number); ->foo : Symbol(foo, Decl(a.ts, 18, 5), Decl(a.ts, 21, 19), Decl(a.ts, 23, 19)) +>foo : Symbol(c.foo, Decl(a.ts, 18, 5), Decl(a.ts, 21, 19), Decl(a.ts, 23, 19)) >a : Symbol(a, Decl(a.ts, 23, 8)) foo(a: any) { ->foo : Symbol(foo, Decl(a.ts, 18, 5), Decl(a.ts, 21, 19), Decl(a.ts, 23, 19)) +>foo : Symbol(c.foo, Decl(a.ts, 18, 5), Decl(a.ts, 21, 19), Decl(a.ts, 23, 19)) >a : Symbol(a, Decl(a.ts, 24, 8)) } } diff --git a/tests/baselines/reference/commentsAfterFunctionExpression1.js b/tests/baselines/reference/commentsAfterFunctionExpression1.js new file mode 100644 index 00000000000..7a591391052 --- /dev/null +++ b/tests/baselines/reference/commentsAfterFunctionExpression1.js @@ -0,0 +1,14 @@ +//// [commentsAfterFunctionExpression1.ts] +var v = { + f: a => 0 /*t1*/, + g: (a => 0) /*t2*/, + h: (a => 0 /*t3*/) +} + + +//// [commentsAfterFunctionExpression1.js] +var v = { + f: function (a) { return 0; } /*t1*/, + g: (function (a) { return 0; }) /*t2*/, + h: (function (a) { return 0; } /*t3*/) +}; diff --git a/tests/baselines/reference/commentsAfterFunctionExpression1.symbols b/tests/baselines/reference/commentsAfterFunctionExpression1.symbols new file mode 100644 index 00000000000..450bb990c89 --- /dev/null +++ b/tests/baselines/reference/commentsAfterFunctionExpression1.symbols @@ -0,0 +1,17 @@ +=== tests/cases/compiler/commentsAfterFunctionExpression1.ts === +var v = { +>v : Symbol(v, Decl(commentsAfterFunctionExpression1.ts, 0, 3)) + + f: a => 0 /*t1*/, +>f : Symbol(f, Decl(commentsAfterFunctionExpression1.ts, 0, 9)) +>a : Symbol(a, Decl(commentsAfterFunctionExpression1.ts, 1, 6)) + + g: (a => 0) /*t2*/, +>g : Symbol(g, Decl(commentsAfterFunctionExpression1.ts, 1, 21)) +>a : Symbol(a, Decl(commentsAfterFunctionExpression1.ts, 2, 8)) + + h: (a => 0 /*t3*/) +>h : Symbol(h, Decl(commentsAfterFunctionExpression1.ts, 2, 23)) +>a : Symbol(a, Decl(commentsAfterFunctionExpression1.ts, 3, 8)) +} + diff --git a/tests/baselines/reference/commentsAfterFunctionExpression1.types b/tests/baselines/reference/commentsAfterFunctionExpression1.types new file mode 100644 index 00000000000..4a6b12bc210 --- /dev/null +++ b/tests/baselines/reference/commentsAfterFunctionExpression1.types @@ -0,0 +1,26 @@ +=== tests/cases/compiler/commentsAfterFunctionExpression1.ts === +var v = { +>v : { f: (a: any) => number; g: (a: any) => number; h: (a: any) => number; } +>{ f: a => 0 /*t1*/, g: (a => 0) /*t2*/, h: (a => 0 /*t3*/)} : { f: (a: any) => number; g: (a: any) => number; h: (a: any) => number; } + + f: a => 0 /*t1*/, +>f : (a: any) => number +>a => 0 : (a: any) => number +>a : any +>0 : number + + g: (a => 0) /*t2*/, +>g : (a: any) => number +>(a => 0) : (a: any) => number +>a => 0 : (a: any) => number +>a : any +>0 : number + + h: (a => 0 /*t3*/) +>h : (a: any) => number +>(a => 0 /*t3*/) : (a: any) => number +>a => 0 : (a: any) => number +>a : any +>0 : number +} + diff --git a/tests/baselines/reference/commentsClassMembers.symbols b/tests/baselines/reference/commentsClassMembers.symbols index dd014611df7..4cbf1292c10 100644 --- a/tests/baselines/reference/commentsClassMembers.symbols +++ b/tests/baselines/reference/commentsClassMembers.symbols @@ -6,88 +6,88 @@ class c1 { /** p1 is property of c1*/ public p1: number; ->p1 : Symbol(p1, Decl(commentsClassMembers.ts, 2, 10)) +>p1 : Symbol(c1.p1, Decl(commentsClassMembers.ts, 2, 10)) /** sum with property*/ public p2(/** number to add*/b: number) { ->p2 : Symbol(p2, Decl(commentsClassMembers.ts, 4, 22)) +>p2 : Symbol(c1.p2, Decl(commentsClassMembers.ts, 4, 22)) >b : Symbol(b, Decl(commentsClassMembers.ts, 6, 14)) return this.p1 + b; ->this.p1 : Symbol(p1, Decl(commentsClassMembers.ts, 2, 10)) +>this.p1 : Symbol(c1.p1, Decl(commentsClassMembers.ts, 2, 10)) >this : Symbol(c1, Decl(commentsClassMembers.ts, 0, 0)) ->p1 : Symbol(p1, Decl(commentsClassMembers.ts, 2, 10)) +>p1 : Symbol(c1.p1, Decl(commentsClassMembers.ts, 2, 10)) >b : Symbol(b, Decl(commentsClassMembers.ts, 6, 14)) } /* trailing comment of method*/ /** getter property*/ public get p3() { ->p3 : Symbol(p3, Decl(commentsClassMembers.ts, 8, 5), Decl(commentsClassMembers.ts, 12, 5)) +>p3 : Symbol(c1.p3, Decl(commentsClassMembers.ts, 8, 5), Decl(commentsClassMembers.ts, 12, 5)) return this.p2(this.p1); ->this.p2 : Symbol(p2, Decl(commentsClassMembers.ts, 4, 22)) +>this.p2 : Symbol(c1.p2, Decl(commentsClassMembers.ts, 4, 22)) >this : Symbol(c1, Decl(commentsClassMembers.ts, 0, 0)) ->p2 : Symbol(p2, Decl(commentsClassMembers.ts, 4, 22)) ->this.p1 : Symbol(p1, Decl(commentsClassMembers.ts, 2, 10)) +>p2 : Symbol(c1.p2, Decl(commentsClassMembers.ts, 4, 22)) +>this.p1 : Symbol(c1.p1, Decl(commentsClassMembers.ts, 2, 10)) >this : Symbol(c1, Decl(commentsClassMembers.ts, 0, 0)) ->p1 : Symbol(p1, Decl(commentsClassMembers.ts, 2, 10)) +>p1 : Symbol(c1.p1, Decl(commentsClassMembers.ts, 2, 10)) }// trailing comment Getter /** setter property*/ public set p3(/** this is value*/value: number) { ->p3 : Symbol(p3, Decl(commentsClassMembers.ts, 8, 5), Decl(commentsClassMembers.ts, 12, 5)) +>p3 : Symbol(c1.p3, Decl(commentsClassMembers.ts, 8, 5), Decl(commentsClassMembers.ts, 12, 5)) >value : Symbol(value, Decl(commentsClassMembers.ts, 14, 18)) this.p1 = this.p2(value); ->this.p1 : Symbol(p1, Decl(commentsClassMembers.ts, 2, 10)) +>this.p1 : Symbol(c1.p1, Decl(commentsClassMembers.ts, 2, 10)) >this : Symbol(c1, Decl(commentsClassMembers.ts, 0, 0)) ->p1 : Symbol(p1, Decl(commentsClassMembers.ts, 2, 10)) ->this.p2 : Symbol(p2, Decl(commentsClassMembers.ts, 4, 22)) +>p1 : Symbol(c1.p1, Decl(commentsClassMembers.ts, 2, 10)) +>this.p2 : Symbol(c1.p2, Decl(commentsClassMembers.ts, 4, 22)) >this : Symbol(c1, Decl(commentsClassMembers.ts, 0, 0)) ->p2 : Symbol(p2, Decl(commentsClassMembers.ts, 4, 22)) +>p2 : Symbol(c1.p2, Decl(commentsClassMembers.ts, 4, 22)) >value : Symbol(value, Decl(commentsClassMembers.ts, 14, 18)) }// trailing comment Setter /** pp1 is property of c1*/ private pp1: number; ->pp1 : Symbol(pp1, Decl(commentsClassMembers.ts, 16, 5)) +>pp1 : Symbol(c1.pp1, Decl(commentsClassMembers.ts, 16, 5)) /** sum with property*/ private pp2(/** number to add*/b: number) { ->pp2 : Symbol(pp2, Decl(commentsClassMembers.ts, 18, 24)) +>pp2 : Symbol(c1.pp2, Decl(commentsClassMembers.ts, 18, 24)) >b : Symbol(b, Decl(commentsClassMembers.ts, 20, 16)) return this.p1 + b; ->this.p1 : Symbol(p1, Decl(commentsClassMembers.ts, 2, 10)) +>this.p1 : Symbol(c1.p1, Decl(commentsClassMembers.ts, 2, 10)) >this : Symbol(c1, Decl(commentsClassMembers.ts, 0, 0)) ->p1 : Symbol(p1, Decl(commentsClassMembers.ts, 2, 10)) +>p1 : Symbol(c1.p1, Decl(commentsClassMembers.ts, 2, 10)) >b : Symbol(b, Decl(commentsClassMembers.ts, 20, 16)) } // trailing comment of method /** getter property*/ private get pp3() { ->pp3 : Symbol(pp3, Decl(commentsClassMembers.ts, 22, 5), Decl(commentsClassMembers.ts, 26, 5)) +>pp3 : Symbol(c1.pp3, Decl(commentsClassMembers.ts, 22, 5), Decl(commentsClassMembers.ts, 26, 5)) return this.pp2(this.pp1); ->this.pp2 : Symbol(pp2, Decl(commentsClassMembers.ts, 18, 24)) +>this.pp2 : Symbol(c1.pp2, Decl(commentsClassMembers.ts, 18, 24)) >this : Symbol(c1, Decl(commentsClassMembers.ts, 0, 0)) ->pp2 : Symbol(pp2, Decl(commentsClassMembers.ts, 18, 24)) ->this.pp1 : Symbol(pp1, Decl(commentsClassMembers.ts, 16, 5)) +>pp2 : Symbol(c1.pp2, Decl(commentsClassMembers.ts, 18, 24)) +>this.pp1 : Symbol(c1.pp1, Decl(commentsClassMembers.ts, 16, 5)) >this : Symbol(c1, Decl(commentsClassMembers.ts, 0, 0)) ->pp1 : Symbol(pp1, Decl(commentsClassMembers.ts, 16, 5)) +>pp1 : Symbol(c1.pp1, Decl(commentsClassMembers.ts, 16, 5)) } /** setter property*/ private set pp3( /** this is value*/value: number) { ->pp3 : Symbol(pp3, Decl(commentsClassMembers.ts, 22, 5), Decl(commentsClassMembers.ts, 26, 5)) +>pp3 : Symbol(c1.pp3, Decl(commentsClassMembers.ts, 22, 5), Decl(commentsClassMembers.ts, 26, 5)) >value : Symbol(value, Decl(commentsClassMembers.ts, 28, 20)) this.pp1 = this.pp2(value); ->this.pp1 : Symbol(pp1, Decl(commentsClassMembers.ts, 16, 5)) +>this.pp1 : Symbol(c1.pp1, Decl(commentsClassMembers.ts, 16, 5)) >this : Symbol(c1, Decl(commentsClassMembers.ts, 0, 0)) ->pp1 : Symbol(pp1, Decl(commentsClassMembers.ts, 16, 5)) ->this.pp2 : Symbol(pp2, Decl(commentsClassMembers.ts, 18, 24)) +>pp1 : Symbol(c1.pp1, Decl(commentsClassMembers.ts, 16, 5)) +>this.pp2 : Symbol(c1.pp2, Decl(commentsClassMembers.ts, 18, 24)) >this : Symbol(c1, Decl(commentsClassMembers.ts, 0, 0)) ->pp2 : Symbol(pp2, Decl(commentsClassMembers.ts, 18, 24)) +>pp2 : Symbol(c1.pp2, Decl(commentsClassMembers.ts, 18, 24)) >value : Symbol(value, Decl(commentsClassMembers.ts, 28, 20)) } /** Constructor method*/ @@ -137,77 +137,77 @@ class c1 { }/*trailing comment 2 */ /*setter*/ public nc_p1: number; ->nc_p1 : Symbol(nc_p1, Decl(commentsClassMembers.ts, 47, 5)) +>nc_p1 : Symbol(c1.nc_p1, Decl(commentsClassMembers.ts, 47, 5)) public nc_p2(b: number) { ->nc_p2 : Symbol(nc_p2, Decl(commentsClassMembers.ts, 48, 25)) +>nc_p2 : Symbol(c1.nc_p2, Decl(commentsClassMembers.ts, 48, 25)) >b : Symbol(b, Decl(commentsClassMembers.ts, 49, 17)) return this.nc_p1 + b; ->this.nc_p1 : Symbol(nc_p1, Decl(commentsClassMembers.ts, 47, 5)) +>this.nc_p1 : Symbol(c1.nc_p1, Decl(commentsClassMembers.ts, 47, 5)) >this : Symbol(c1, Decl(commentsClassMembers.ts, 0, 0)) ->nc_p1 : Symbol(nc_p1, Decl(commentsClassMembers.ts, 47, 5)) +>nc_p1 : Symbol(c1.nc_p1, Decl(commentsClassMembers.ts, 47, 5)) >b : Symbol(b, Decl(commentsClassMembers.ts, 49, 17)) } public get nc_p3() { ->nc_p3 : Symbol(nc_p3, Decl(commentsClassMembers.ts, 51, 5), Decl(commentsClassMembers.ts, 54, 5)) +>nc_p3 : Symbol(c1.nc_p3, Decl(commentsClassMembers.ts, 51, 5), Decl(commentsClassMembers.ts, 54, 5)) return this.nc_p2(this.nc_p1); ->this.nc_p2 : Symbol(nc_p2, Decl(commentsClassMembers.ts, 48, 25)) +>this.nc_p2 : Symbol(c1.nc_p2, Decl(commentsClassMembers.ts, 48, 25)) >this : Symbol(c1, Decl(commentsClassMembers.ts, 0, 0)) ->nc_p2 : Symbol(nc_p2, Decl(commentsClassMembers.ts, 48, 25)) ->this.nc_p1 : Symbol(nc_p1, Decl(commentsClassMembers.ts, 47, 5)) +>nc_p2 : Symbol(c1.nc_p2, Decl(commentsClassMembers.ts, 48, 25)) +>this.nc_p1 : Symbol(c1.nc_p1, Decl(commentsClassMembers.ts, 47, 5)) >this : Symbol(c1, Decl(commentsClassMembers.ts, 0, 0)) ->nc_p1 : Symbol(nc_p1, Decl(commentsClassMembers.ts, 47, 5)) +>nc_p1 : Symbol(c1.nc_p1, Decl(commentsClassMembers.ts, 47, 5)) } public set nc_p3(value: number) { ->nc_p3 : Symbol(nc_p3, Decl(commentsClassMembers.ts, 51, 5), Decl(commentsClassMembers.ts, 54, 5)) +>nc_p3 : Symbol(c1.nc_p3, Decl(commentsClassMembers.ts, 51, 5), Decl(commentsClassMembers.ts, 54, 5)) >value : Symbol(value, Decl(commentsClassMembers.ts, 55, 21)) this.nc_p1 = this.nc_p2(value); ->this.nc_p1 : Symbol(nc_p1, Decl(commentsClassMembers.ts, 47, 5)) +>this.nc_p1 : Symbol(c1.nc_p1, Decl(commentsClassMembers.ts, 47, 5)) >this : Symbol(c1, Decl(commentsClassMembers.ts, 0, 0)) ->nc_p1 : Symbol(nc_p1, Decl(commentsClassMembers.ts, 47, 5)) ->this.nc_p2 : Symbol(nc_p2, Decl(commentsClassMembers.ts, 48, 25)) +>nc_p1 : Symbol(c1.nc_p1, Decl(commentsClassMembers.ts, 47, 5)) +>this.nc_p2 : Symbol(c1.nc_p2, Decl(commentsClassMembers.ts, 48, 25)) >this : Symbol(c1, Decl(commentsClassMembers.ts, 0, 0)) ->nc_p2 : Symbol(nc_p2, Decl(commentsClassMembers.ts, 48, 25)) +>nc_p2 : Symbol(c1.nc_p2, Decl(commentsClassMembers.ts, 48, 25)) >value : Symbol(value, Decl(commentsClassMembers.ts, 55, 21)) } private nc_pp1: number; ->nc_pp1 : Symbol(nc_pp1, Decl(commentsClassMembers.ts, 57, 5)) +>nc_pp1 : Symbol(c1.nc_pp1, Decl(commentsClassMembers.ts, 57, 5)) private nc_pp2(b: number) { ->nc_pp2 : Symbol(nc_pp2, Decl(commentsClassMembers.ts, 58, 27)) +>nc_pp2 : Symbol(c1.nc_pp2, Decl(commentsClassMembers.ts, 58, 27)) >b : Symbol(b, Decl(commentsClassMembers.ts, 59, 19)) return this.nc_pp1 + b; ->this.nc_pp1 : Symbol(nc_pp1, Decl(commentsClassMembers.ts, 57, 5)) +>this.nc_pp1 : Symbol(c1.nc_pp1, Decl(commentsClassMembers.ts, 57, 5)) >this : Symbol(c1, Decl(commentsClassMembers.ts, 0, 0)) ->nc_pp1 : Symbol(nc_pp1, Decl(commentsClassMembers.ts, 57, 5)) +>nc_pp1 : Symbol(c1.nc_pp1, Decl(commentsClassMembers.ts, 57, 5)) >b : Symbol(b, Decl(commentsClassMembers.ts, 59, 19)) } private get nc_pp3() { ->nc_pp3 : Symbol(nc_pp3, Decl(commentsClassMembers.ts, 61, 5), Decl(commentsClassMembers.ts, 64, 5)) +>nc_pp3 : Symbol(c1.nc_pp3, Decl(commentsClassMembers.ts, 61, 5), Decl(commentsClassMembers.ts, 64, 5)) return this.nc_pp2(this.nc_pp1); ->this.nc_pp2 : Symbol(nc_pp2, Decl(commentsClassMembers.ts, 58, 27)) +>this.nc_pp2 : Symbol(c1.nc_pp2, Decl(commentsClassMembers.ts, 58, 27)) >this : Symbol(c1, Decl(commentsClassMembers.ts, 0, 0)) ->nc_pp2 : Symbol(nc_pp2, Decl(commentsClassMembers.ts, 58, 27)) ->this.nc_pp1 : Symbol(nc_pp1, Decl(commentsClassMembers.ts, 57, 5)) +>nc_pp2 : Symbol(c1.nc_pp2, Decl(commentsClassMembers.ts, 58, 27)) +>this.nc_pp1 : Symbol(c1.nc_pp1, Decl(commentsClassMembers.ts, 57, 5)) >this : Symbol(c1, Decl(commentsClassMembers.ts, 0, 0)) ->nc_pp1 : Symbol(nc_pp1, Decl(commentsClassMembers.ts, 57, 5)) +>nc_pp1 : Symbol(c1.nc_pp1, Decl(commentsClassMembers.ts, 57, 5)) } private set nc_pp3(value: number) { ->nc_pp3 : Symbol(nc_pp3, Decl(commentsClassMembers.ts, 61, 5), Decl(commentsClassMembers.ts, 64, 5)) +>nc_pp3 : Symbol(c1.nc_pp3, Decl(commentsClassMembers.ts, 61, 5), Decl(commentsClassMembers.ts, 64, 5)) >value : Symbol(value, Decl(commentsClassMembers.ts, 65, 23)) this.nc_pp1 = this.nc_pp2(value); ->this.nc_pp1 : Symbol(nc_pp1, Decl(commentsClassMembers.ts, 57, 5)) +>this.nc_pp1 : Symbol(c1.nc_pp1, Decl(commentsClassMembers.ts, 57, 5)) >this : Symbol(c1, Decl(commentsClassMembers.ts, 0, 0)) ->nc_pp1 : Symbol(nc_pp1, Decl(commentsClassMembers.ts, 57, 5)) ->this.nc_pp2 : Symbol(nc_pp2, Decl(commentsClassMembers.ts, 58, 27)) +>nc_pp1 : Symbol(c1.nc_pp1, Decl(commentsClassMembers.ts, 57, 5)) +>this.nc_pp2 : Symbol(c1.nc_pp2, Decl(commentsClassMembers.ts, 58, 27)) >this : Symbol(c1, Decl(commentsClassMembers.ts, 0, 0)) ->nc_pp2 : Symbol(nc_pp2, Decl(commentsClassMembers.ts, 58, 27)) +>nc_pp2 : Symbol(c1.nc_pp2, Decl(commentsClassMembers.ts, 58, 27)) >value : Symbol(value, Decl(commentsClassMembers.ts, 65, 23)) } static nc_s1: number; @@ -250,84 +250,84 @@ class c1 { // p1 is property of c1 public a_p1: number; ->a_p1 : Symbol(a_p1, Decl(commentsClassMembers.ts, 77, 5)) +>a_p1 : Symbol(c1.a_p1, Decl(commentsClassMembers.ts, 77, 5)) // sum with property public a_p2(b: number) { ->a_p2 : Symbol(a_p2, Decl(commentsClassMembers.ts, 80, 24)) +>a_p2 : Symbol(c1.a_p2, Decl(commentsClassMembers.ts, 80, 24)) >b : Symbol(b, Decl(commentsClassMembers.ts, 82, 16)) return this.a_p1 + b; ->this.a_p1 : Symbol(a_p1, Decl(commentsClassMembers.ts, 77, 5)) +>this.a_p1 : Symbol(c1.a_p1, Decl(commentsClassMembers.ts, 77, 5)) >this : Symbol(c1, Decl(commentsClassMembers.ts, 0, 0)) ->a_p1 : Symbol(a_p1, Decl(commentsClassMembers.ts, 77, 5)) +>a_p1 : Symbol(c1.a_p1, Decl(commentsClassMembers.ts, 77, 5)) >b : Symbol(b, Decl(commentsClassMembers.ts, 82, 16)) } // getter property public get a_p3() { ->a_p3 : Symbol(a_p3, Decl(commentsClassMembers.ts, 84, 5), Decl(commentsClassMembers.ts, 88, 5)) +>a_p3 : Symbol(c1.a_p3, Decl(commentsClassMembers.ts, 84, 5), Decl(commentsClassMembers.ts, 88, 5)) return this.a_p2(this.a_p1); ->this.a_p2 : Symbol(a_p2, Decl(commentsClassMembers.ts, 80, 24)) +>this.a_p2 : Symbol(c1.a_p2, Decl(commentsClassMembers.ts, 80, 24)) >this : Symbol(c1, Decl(commentsClassMembers.ts, 0, 0)) ->a_p2 : Symbol(a_p2, Decl(commentsClassMembers.ts, 80, 24)) ->this.a_p1 : Symbol(a_p1, Decl(commentsClassMembers.ts, 77, 5)) +>a_p2 : Symbol(c1.a_p2, Decl(commentsClassMembers.ts, 80, 24)) +>this.a_p1 : Symbol(c1.a_p1, Decl(commentsClassMembers.ts, 77, 5)) >this : Symbol(c1, Decl(commentsClassMembers.ts, 0, 0)) ->a_p1 : Symbol(a_p1, Decl(commentsClassMembers.ts, 77, 5)) +>a_p1 : Symbol(c1.a_p1, Decl(commentsClassMembers.ts, 77, 5)) } // setter property public set a_p3(value: number) { ->a_p3 : Symbol(a_p3, Decl(commentsClassMembers.ts, 84, 5), Decl(commentsClassMembers.ts, 88, 5)) +>a_p3 : Symbol(c1.a_p3, Decl(commentsClassMembers.ts, 84, 5), Decl(commentsClassMembers.ts, 88, 5)) >value : Symbol(value, Decl(commentsClassMembers.ts, 90, 20)) this.a_p1 = this.a_p2(value); ->this.a_p1 : Symbol(a_p1, Decl(commentsClassMembers.ts, 77, 5)) +>this.a_p1 : Symbol(c1.a_p1, Decl(commentsClassMembers.ts, 77, 5)) >this : Symbol(c1, Decl(commentsClassMembers.ts, 0, 0)) ->a_p1 : Symbol(a_p1, Decl(commentsClassMembers.ts, 77, 5)) ->this.a_p2 : Symbol(a_p2, Decl(commentsClassMembers.ts, 80, 24)) +>a_p1 : Symbol(c1.a_p1, Decl(commentsClassMembers.ts, 77, 5)) +>this.a_p2 : Symbol(c1.a_p2, Decl(commentsClassMembers.ts, 80, 24)) >this : Symbol(c1, Decl(commentsClassMembers.ts, 0, 0)) ->a_p2 : Symbol(a_p2, Decl(commentsClassMembers.ts, 80, 24)) +>a_p2 : Symbol(c1.a_p2, Decl(commentsClassMembers.ts, 80, 24)) >value : Symbol(value, Decl(commentsClassMembers.ts, 90, 20)) } // pp1 is property of c1 private a_pp1: number; ->a_pp1 : Symbol(a_pp1, Decl(commentsClassMembers.ts, 92, 5)) +>a_pp1 : Symbol(c1.a_pp1, Decl(commentsClassMembers.ts, 92, 5)) // sum with property private a_pp2(b: number) { ->a_pp2 : Symbol(a_pp2, Decl(commentsClassMembers.ts, 94, 26)) +>a_pp2 : Symbol(c1.a_pp2, Decl(commentsClassMembers.ts, 94, 26)) >b : Symbol(b, Decl(commentsClassMembers.ts, 96, 18)) return this.a_p1 + b; ->this.a_p1 : Symbol(a_p1, Decl(commentsClassMembers.ts, 77, 5)) +>this.a_p1 : Symbol(c1.a_p1, Decl(commentsClassMembers.ts, 77, 5)) >this : Symbol(c1, Decl(commentsClassMembers.ts, 0, 0)) ->a_p1 : Symbol(a_p1, Decl(commentsClassMembers.ts, 77, 5)) +>a_p1 : Symbol(c1.a_p1, Decl(commentsClassMembers.ts, 77, 5)) >b : Symbol(b, Decl(commentsClassMembers.ts, 96, 18)) } // getter property private get a_pp3() { ->a_pp3 : Symbol(a_pp3, Decl(commentsClassMembers.ts, 98, 5), Decl(commentsClassMembers.ts, 102, 5)) +>a_pp3 : Symbol(c1.a_pp3, Decl(commentsClassMembers.ts, 98, 5), Decl(commentsClassMembers.ts, 102, 5)) return this.a_pp2(this.a_pp1); ->this.a_pp2 : Symbol(a_pp2, Decl(commentsClassMembers.ts, 94, 26)) +>this.a_pp2 : Symbol(c1.a_pp2, Decl(commentsClassMembers.ts, 94, 26)) >this : Symbol(c1, Decl(commentsClassMembers.ts, 0, 0)) ->a_pp2 : Symbol(a_pp2, Decl(commentsClassMembers.ts, 94, 26)) ->this.a_pp1 : Symbol(a_pp1, Decl(commentsClassMembers.ts, 92, 5)) +>a_pp2 : Symbol(c1.a_pp2, Decl(commentsClassMembers.ts, 94, 26)) +>this.a_pp1 : Symbol(c1.a_pp1, Decl(commentsClassMembers.ts, 92, 5)) >this : Symbol(c1, Decl(commentsClassMembers.ts, 0, 0)) ->a_pp1 : Symbol(a_pp1, Decl(commentsClassMembers.ts, 92, 5)) +>a_pp1 : Symbol(c1.a_pp1, Decl(commentsClassMembers.ts, 92, 5)) } // setter property private set a_pp3(value: number) { ->a_pp3 : Symbol(a_pp3, Decl(commentsClassMembers.ts, 98, 5), Decl(commentsClassMembers.ts, 102, 5)) +>a_pp3 : Symbol(c1.a_pp3, Decl(commentsClassMembers.ts, 98, 5), Decl(commentsClassMembers.ts, 102, 5)) >value : Symbol(value, Decl(commentsClassMembers.ts, 104, 22)) this.a_pp1 = this.a_pp2(value); ->this.a_pp1 : Symbol(a_pp1, Decl(commentsClassMembers.ts, 92, 5)) +>this.a_pp1 : Symbol(c1.a_pp1, Decl(commentsClassMembers.ts, 92, 5)) >this : Symbol(c1, Decl(commentsClassMembers.ts, 0, 0)) ->a_pp1 : Symbol(a_pp1, Decl(commentsClassMembers.ts, 92, 5)) ->this.a_pp2 : Symbol(a_pp2, Decl(commentsClassMembers.ts, 94, 26)) +>a_pp1 : Symbol(c1.a_pp1, Decl(commentsClassMembers.ts, 92, 5)) +>this.a_pp2 : Symbol(c1.a_pp2, Decl(commentsClassMembers.ts, 94, 26)) >this : Symbol(c1, Decl(commentsClassMembers.ts, 0, 0)) ->a_pp2 : Symbol(a_pp2, Decl(commentsClassMembers.ts, 94, 26)) +>a_pp2 : Symbol(c1.a_pp2, Decl(commentsClassMembers.ts, 94, 26)) >value : Symbol(value, Decl(commentsClassMembers.ts, 104, 22)) } @@ -376,84 +376,84 @@ class c1 { /** p1 is property of c1 */ public b_p1: number; ->b_p1 : Symbol(b_p1, Decl(commentsClassMembers.ts, 122, 5)) +>b_p1 : Symbol(c1.b_p1, Decl(commentsClassMembers.ts, 122, 5)) /** sum with property */ public b_p2(b: number) { ->b_p2 : Symbol(b_p2, Decl(commentsClassMembers.ts, 125, 24)) +>b_p2 : Symbol(c1.b_p2, Decl(commentsClassMembers.ts, 125, 24)) >b : Symbol(b, Decl(commentsClassMembers.ts, 127, 16)) return this.b_p1 + b; ->this.b_p1 : Symbol(b_p1, Decl(commentsClassMembers.ts, 122, 5)) +>this.b_p1 : Symbol(c1.b_p1, Decl(commentsClassMembers.ts, 122, 5)) >this : Symbol(c1, Decl(commentsClassMembers.ts, 0, 0)) ->b_p1 : Symbol(b_p1, Decl(commentsClassMembers.ts, 122, 5)) +>b_p1 : Symbol(c1.b_p1, Decl(commentsClassMembers.ts, 122, 5)) >b : Symbol(b, Decl(commentsClassMembers.ts, 127, 16)) } /** getter property */ public get b_p3() { ->b_p3 : Symbol(b_p3, Decl(commentsClassMembers.ts, 129, 5), Decl(commentsClassMembers.ts, 133, 5)) +>b_p3 : Symbol(c1.b_p3, Decl(commentsClassMembers.ts, 129, 5), Decl(commentsClassMembers.ts, 133, 5)) return this.b_p2(this.b_p1); ->this.b_p2 : Symbol(b_p2, Decl(commentsClassMembers.ts, 125, 24)) +>this.b_p2 : Symbol(c1.b_p2, Decl(commentsClassMembers.ts, 125, 24)) >this : Symbol(c1, Decl(commentsClassMembers.ts, 0, 0)) ->b_p2 : Symbol(b_p2, Decl(commentsClassMembers.ts, 125, 24)) ->this.b_p1 : Symbol(b_p1, Decl(commentsClassMembers.ts, 122, 5)) +>b_p2 : Symbol(c1.b_p2, Decl(commentsClassMembers.ts, 125, 24)) +>this.b_p1 : Symbol(c1.b_p1, Decl(commentsClassMembers.ts, 122, 5)) >this : Symbol(c1, Decl(commentsClassMembers.ts, 0, 0)) ->b_p1 : Symbol(b_p1, Decl(commentsClassMembers.ts, 122, 5)) +>b_p1 : Symbol(c1.b_p1, Decl(commentsClassMembers.ts, 122, 5)) } /** setter property */ public set b_p3(value: number) { ->b_p3 : Symbol(b_p3, Decl(commentsClassMembers.ts, 129, 5), Decl(commentsClassMembers.ts, 133, 5)) +>b_p3 : Symbol(c1.b_p3, Decl(commentsClassMembers.ts, 129, 5), Decl(commentsClassMembers.ts, 133, 5)) >value : Symbol(value, Decl(commentsClassMembers.ts, 135, 20)) this.b_p1 = this.b_p2(value); ->this.b_p1 : Symbol(b_p1, Decl(commentsClassMembers.ts, 122, 5)) +>this.b_p1 : Symbol(c1.b_p1, Decl(commentsClassMembers.ts, 122, 5)) >this : Symbol(c1, Decl(commentsClassMembers.ts, 0, 0)) ->b_p1 : Symbol(b_p1, Decl(commentsClassMembers.ts, 122, 5)) ->this.b_p2 : Symbol(b_p2, Decl(commentsClassMembers.ts, 125, 24)) +>b_p1 : Symbol(c1.b_p1, Decl(commentsClassMembers.ts, 122, 5)) +>this.b_p2 : Symbol(c1.b_p2, Decl(commentsClassMembers.ts, 125, 24)) >this : Symbol(c1, Decl(commentsClassMembers.ts, 0, 0)) ->b_p2 : Symbol(b_p2, Decl(commentsClassMembers.ts, 125, 24)) +>b_p2 : Symbol(c1.b_p2, Decl(commentsClassMembers.ts, 125, 24)) >value : Symbol(value, Decl(commentsClassMembers.ts, 135, 20)) } /** pp1 is property of c1 */ private b_pp1: number; ->b_pp1 : Symbol(b_pp1, Decl(commentsClassMembers.ts, 137, 5)) +>b_pp1 : Symbol(c1.b_pp1, Decl(commentsClassMembers.ts, 137, 5)) /** sum with property */ private b_pp2(b: number) { ->b_pp2 : Symbol(b_pp2, Decl(commentsClassMembers.ts, 139, 26)) +>b_pp2 : Symbol(c1.b_pp2, Decl(commentsClassMembers.ts, 139, 26)) >b : Symbol(b, Decl(commentsClassMembers.ts, 141, 18)) return this.b_p1 + b; ->this.b_p1 : Symbol(b_p1, Decl(commentsClassMembers.ts, 122, 5)) +>this.b_p1 : Symbol(c1.b_p1, Decl(commentsClassMembers.ts, 122, 5)) >this : Symbol(c1, Decl(commentsClassMembers.ts, 0, 0)) ->b_p1 : Symbol(b_p1, Decl(commentsClassMembers.ts, 122, 5)) +>b_p1 : Symbol(c1.b_p1, Decl(commentsClassMembers.ts, 122, 5)) >b : Symbol(b, Decl(commentsClassMembers.ts, 141, 18)) } /** getter property */ private get b_pp3() { ->b_pp3 : Symbol(b_pp3, Decl(commentsClassMembers.ts, 143, 5), Decl(commentsClassMembers.ts, 147, 5)) +>b_pp3 : Symbol(c1.b_pp3, Decl(commentsClassMembers.ts, 143, 5), Decl(commentsClassMembers.ts, 147, 5)) return this.b_pp2(this.b_pp1); ->this.b_pp2 : Symbol(b_pp2, Decl(commentsClassMembers.ts, 139, 26)) +>this.b_pp2 : Symbol(c1.b_pp2, Decl(commentsClassMembers.ts, 139, 26)) >this : Symbol(c1, Decl(commentsClassMembers.ts, 0, 0)) ->b_pp2 : Symbol(b_pp2, Decl(commentsClassMembers.ts, 139, 26)) ->this.b_pp1 : Symbol(b_pp1, Decl(commentsClassMembers.ts, 137, 5)) +>b_pp2 : Symbol(c1.b_pp2, Decl(commentsClassMembers.ts, 139, 26)) +>this.b_pp1 : Symbol(c1.b_pp1, Decl(commentsClassMembers.ts, 137, 5)) >this : Symbol(c1, Decl(commentsClassMembers.ts, 0, 0)) ->b_pp1 : Symbol(b_pp1, Decl(commentsClassMembers.ts, 137, 5)) +>b_pp1 : Symbol(c1.b_pp1, Decl(commentsClassMembers.ts, 137, 5)) } /** setter property */ private set b_pp3(value: number) { ->b_pp3 : Symbol(b_pp3, Decl(commentsClassMembers.ts, 143, 5), Decl(commentsClassMembers.ts, 147, 5)) +>b_pp3 : Symbol(c1.b_pp3, Decl(commentsClassMembers.ts, 143, 5), Decl(commentsClassMembers.ts, 147, 5)) >value : Symbol(value, Decl(commentsClassMembers.ts, 149, 22)) this.b_pp1 = this.b_pp2(value); ->this.b_pp1 : Symbol(b_pp1, Decl(commentsClassMembers.ts, 137, 5)) +>this.b_pp1 : Symbol(c1.b_pp1, Decl(commentsClassMembers.ts, 137, 5)) >this : Symbol(c1, Decl(commentsClassMembers.ts, 0, 0)) ->b_pp1 : Symbol(b_pp1, Decl(commentsClassMembers.ts, 137, 5)) ->this.b_pp2 : Symbol(b_pp2, Decl(commentsClassMembers.ts, 139, 26)) +>b_pp1 : Symbol(c1.b_pp1, Decl(commentsClassMembers.ts, 137, 5)) +>this.b_pp2 : Symbol(c1.b_pp2, Decl(commentsClassMembers.ts, 139, 26)) >this : Symbol(c1, Decl(commentsClassMembers.ts, 0, 0)) ->b_pp2 : Symbol(b_pp2, Decl(commentsClassMembers.ts, 139, 26)) +>b_pp2 : Symbol(c1.b_pp2, Decl(commentsClassMembers.ts, 139, 26)) >value : Symbol(value, Decl(commentsClassMembers.ts, 149, 22)) } @@ -635,54 +635,54 @@ class cProperties { >cProperties : Symbol(cProperties, Decl(commentsClassMembers.ts, 193, 14)) private val: number; ->val : Symbol(val, Decl(commentsClassMembers.ts, 194, 19)) +>val : Symbol(cProperties.val, Decl(commentsClassMembers.ts, 194, 19)) /** getter only property*/ public get p1() { ->p1 : Symbol(p1, Decl(commentsClassMembers.ts, 195, 24)) +>p1 : Symbol(cProperties.p1, Decl(commentsClassMembers.ts, 195, 24)) return this.val; ->this.val : Symbol(val, Decl(commentsClassMembers.ts, 194, 19)) +>this.val : Symbol(cProperties.val, Decl(commentsClassMembers.ts, 194, 19)) >this : Symbol(cProperties, Decl(commentsClassMembers.ts, 193, 14)) ->val : Symbol(val, Decl(commentsClassMembers.ts, 194, 19)) +>val : Symbol(cProperties.val, Decl(commentsClassMembers.ts, 194, 19)) } // trailing comment of only getter public get nc_p1() { ->nc_p1 : Symbol(nc_p1, Decl(commentsClassMembers.ts, 199, 5)) +>nc_p1 : Symbol(cProperties.nc_p1, Decl(commentsClassMembers.ts, 199, 5)) return this.val; ->this.val : Symbol(val, Decl(commentsClassMembers.ts, 194, 19)) +>this.val : Symbol(cProperties.val, Decl(commentsClassMembers.ts, 194, 19)) >this : Symbol(cProperties, Decl(commentsClassMembers.ts, 193, 14)) ->val : Symbol(val, Decl(commentsClassMembers.ts, 194, 19)) +>val : Symbol(cProperties.val, Decl(commentsClassMembers.ts, 194, 19)) } /**setter only property*/ public set p2(value: number) { ->p2 : Symbol(p2, Decl(commentsClassMembers.ts, 202, 5)) +>p2 : Symbol(cProperties.p2, Decl(commentsClassMembers.ts, 202, 5)) >value : Symbol(value, Decl(commentsClassMembers.ts, 204, 18)) this.val = value; ->this.val : Symbol(val, Decl(commentsClassMembers.ts, 194, 19)) +>this.val : Symbol(cProperties.val, Decl(commentsClassMembers.ts, 194, 19)) >this : Symbol(cProperties, Decl(commentsClassMembers.ts, 193, 14)) ->val : Symbol(val, Decl(commentsClassMembers.ts, 194, 19)) +>val : Symbol(cProperties.val, Decl(commentsClassMembers.ts, 194, 19)) >value : Symbol(value, Decl(commentsClassMembers.ts, 204, 18)) } public set nc_p2(value: number) { ->nc_p2 : Symbol(nc_p2, Decl(commentsClassMembers.ts, 206, 5)) +>nc_p2 : Symbol(cProperties.nc_p2, Decl(commentsClassMembers.ts, 206, 5)) >value : Symbol(value, Decl(commentsClassMembers.ts, 207, 21)) this.val = value; ->this.val : Symbol(val, Decl(commentsClassMembers.ts, 194, 19)) +>this.val : Symbol(cProperties.val, Decl(commentsClassMembers.ts, 194, 19)) >this : Symbol(cProperties, Decl(commentsClassMembers.ts, 193, 14)) ->val : Symbol(val, Decl(commentsClassMembers.ts, 194, 19)) +>val : Symbol(cProperties.val, Decl(commentsClassMembers.ts, 194, 19)) >value : Symbol(value, Decl(commentsClassMembers.ts, 207, 21)) } /* trailing comment of setter only*/ public x = 10; /*trailing comment for property*/ ->x : Symbol(x, Decl(commentsClassMembers.ts, 209, 5)) +>x : Symbol(cProperties.x, Decl(commentsClassMembers.ts, 209, 5)) private y = 10; // trailing comment of // style ->y : Symbol(y, Decl(commentsClassMembers.ts, 211, 18)) +>y : Symbol(cProperties.y, Decl(commentsClassMembers.ts, 211, 18)) } var cProperties_i = new cProperties(); >cProperties_i : Symbol(cProperties_i, Decl(commentsClassMembers.ts, 214, 3)) diff --git a/tests/baselines/reference/commentsInheritance.symbols b/tests/baselines/reference/commentsInheritance.symbols index f702f40a0d4..288bfdb4280 100644 --- a/tests/baselines/reference/commentsInheritance.symbols +++ b/tests/baselines/reference/commentsInheritance.symbols @@ -6,90 +6,90 @@ interface i1 { /** i1_p1*/ i1_p1: number; ->i1_p1 : Symbol(i1_p1, Decl(commentsInheritance.ts, 2, 14)) +>i1_p1 : Symbol(i1.i1_p1, Decl(commentsInheritance.ts, 2, 14)) /** i1_f1*/ i1_f1(): void; ->i1_f1 : Symbol(i1_f1, Decl(commentsInheritance.ts, 4, 18)) +>i1_f1 : Symbol(i1.i1_f1, Decl(commentsInheritance.ts, 4, 18)) /** i1_l1*/ i1_l1: () => void; ->i1_l1 : Symbol(i1_l1, Decl(commentsInheritance.ts, 6, 18)) +>i1_l1 : Symbol(i1.i1_l1, Decl(commentsInheritance.ts, 6, 18)) // il_nc_p1 i1_nc_p1: number; ->i1_nc_p1 : Symbol(i1_nc_p1, Decl(commentsInheritance.ts, 8, 22)) +>i1_nc_p1 : Symbol(i1.i1_nc_p1, Decl(commentsInheritance.ts, 8, 22)) i1_nc_f1(): void; ->i1_nc_f1 : Symbol(i1_nc_f1, Decl(commentsInheritance.ts, 10, 21)) +>i1_nc_f1 : Symbol(i1.i1_nc_f1, Decl(commentsInheritance.ts, 10, 21)) i1_nc_l1: () => void; ->i1_nc_l1 : Symbol(i1_nc_l1, Decl(commentsInheritance.ts, 11, 21)) +>i1_nc_l1 : Symbol(i1.i1_nc_l1, Decl(commentsInheritance.ts, 11, 21)) p1: number; ->p1 : Symbol(p1, Decl(commentsInheritance.ts, 12, 25)) +>p1 : Symbol(i1.p1, Decl(commentsInheritance.ts, 12, 25)) f1(): void; ->f1 : Symbol(f1, Decl(commentsInheritance.ts, 13, 15)) +>f1 : Symbol(i1.f1, Decl(commentsInheritance.ts, 13, 15)) l1: () => void; ->l1 : Symbol(l1, Decl(commentsInheritance.ts, 14, 15)) +>l1 : Symbol(i1.l1, Decl(commentsInheritance.ts, 14, 15)) nc_p1: number; ->nc_p1 : Symbol(nc_p1, Decl(commentsInheritance.ts, 15, 19)) +>nc_p1 : Symbol(i1.nc_p1, Decl(commentsInheritance.ts, 15, 19)) nc_f1(): void; ->nc_f1 : Symbol(nc_f1, Decl(commentsInheritance.ts, 16, 18)) +>nc_f1 : Symbol(i1.nc_f1, Decl(commentsInheritance.ts, 16, 18)) nc_l1: () => void; ->nc_l1 : Symbol(nc_l1, Decl(commentsInheritance.ts, 17, 18)) +>nc_l1 : Symbol(i1.nc_l1, Decl(commentsInheritance.ts, 17, 18)) } class c1 implements i1 { >c1 : Symbol(c1, Decl(commentsInheritance.ts, 19, 1)) >i1 : Symbol(i1, Decl(commentsInheritance.ts, 0, 0)) public i1_p1: number; ->i1_p1 : Symbol(i1_p1, Decl(commentsInheritance.ts, 20, 24)) +>i1_p1 : Symbol(c1.i1_p1, Decl(commentsInheritance.ts, 20, 24)) // i1_f1 public i1_f1() { ->i1_f1 : Symbol(i1_f1, Decl(commentsInheritance.ts, 21, 25)) +>i1_f1 : Symbol(c1.i1_f1, Decl(commentsInheritance.ts, 21, 25)) } public i1_l1: () => void; ->i1_l1 : Symbol(i1_l1, Decl(commentsInheritance.ts, 24, 5)) +>i1_l1 : Symbol(c1.i1_l1, Decl(commentsInheritance.ts, 24, 5)) public i1_nc_p1: number; ->i1_nc_p1 : Symbol(i1_nc_p1, Decl(commentsInheritance.ts, 25, 29)) +>i1_nc_p1 : Symbol(c1.i1_nc_p1, Decl(commentsInheritance.ts, 25, 29)) public i1_nc_f1() { ->i1_nc_f1 : Symbol(i1_nc_f1, Decl(commentsInheritance.ts, 26, 28)) +>i1_nc_f1 : Symbol(c1.i1_nc_f1, Decl(commentsInheritance.ts, 26, 28)) } public i1_nc_l1: () => void; ->i1_nc_l1 : Symbol(i1_nc_l1, Decl(commentsInheritance.ts, 28, 5)) +>i1_nc_l1 : Symbol(c1.i1_nc_l1, Decl(commentsInheritance.ts, 28, 5)) /** c1_p1*/ public p1: number; ->p1 : Symbol(p1, Decl(commentsInheritance.ts, 29, 32)) +>p1 : Symbol(c1.p1, Decl(commentsInheritance.ts, 29, 32)) /** c1_f1*/ public f1() { ->f1 : Symbol(f1, Decl(commentsInheritance.ts, 31, 22)) +>f1 : Symbol(c1.f1, Decl(commentsInheritance.ts, 31, 22)) } /** c1_l1*/ public l1: () => void; ->l1 : Symbol(l1, Decl(commentsInheritance.ts, 34, 5)) +>l1 : Symbol(c1.l1, Decl(commentsInheritance.ts, 34, 5)) /** c1_nc_p1*/ public nc_p1: number; ->nc_p1 : Symbol(nc_p1, Decl(commentsInheritance.ts, 36, 26)) +>nc_p1 : Symbol(c1.nc_p1, Decl(commentsInheritance.ts, 36, 26)) /** c1_nc_f1*/ public nc_f1() { ->nc_f1 : Symbol(nc_f1, Decl(commentsInheritance.ts, 38, 25)) +>nc_f1 : Symbol(c1.nc_f1, Decl(commentsInheritance.ts, 38, 25)) } /** c1_nc_l1*/ public nc_l1: () => void; ->nc_l1 : Symbol(nc_l1, Decl(commentsInheritance.ts, 41, 5)) +>nc_l1 : Symbol(c1.nc_l1, Decl(commentsInheritance.ts, 41, 5)) } var i1_i: i1; >i1_i : Symbol(i1_i, Decl(commentsInheritance.ts, 45, 3)) @@ -109,51 +109,51 @@ class c2 { /** c2 c2_p1*/ public c2_p1: number; ->c2_p1 : Symbol(c2_p1, Decl(commentsInheritance.ts, 49, 10)) +>c2_p1 : Symbol(c2.c2_p1, Decl(commentsInheritance.ts, 49, 10)) /** c2 c2_f1*/ public c2_f1() { ->c2_f1 : Symbol(c2_f1, Decl(commentsInheritance.ts, 51, 25)) +>c2_f1 : Symbol(c2.c2_f1, Decl(commentsInheritance.ts, 51, 25)) } /** c2 c2_prop*/ public get c2_prop() { ->c2_prop : Symbol(c2_prop, Decl(commentsInheritance.ts, 54, 5)) +>c2_prop : Symbol(c2.c2_prop, Decl(commentsInheritance.ts, 54, 5)) return 10; } public c2_nc_p1: number; ->c2_nc_p1 : Symbol(c2_nc_p1, Decl(commentsInheritance.ts, 58, 5)) +>c2_nc_p1 : Symbol(c2.c2_nc_p1, Decl(commentsInheritance.ts, 58, 5)) public c2_nc_f1() { ->c2_nc_f1 : Symbol(c2_nc_f1, Decl(commentsInheritance.ts, 59, 28)) +>c2_nc_f1 : Symbol(c2.c2_nc_f1, Decl(commentsInheritance.ts, 59, 28)) } public get c2_nc_prop() { ->c2_nc_prop : Symbol(c2_nc_prop, Decl(commentsInheritance.ts, 61, 5)) +>c2_nc_prop : Symbol(c2.c2_nc_prop, Decl(commentsInheritance.ts, 61, 5)) return 10; } /** c2 p1*/ public p1: number; ->p1 : Symbol(p1, Decl(commentsInheritance.ts, 64, 5)) +>p1 : Symbol(c2.p1, Decl(commentsInheritance.ts, 64, 5)) /** c2 f1*/ public f1() { ->f1 : Symbol(f1, Decl(commentsInheritance.ts, 66, 22)) +>f1 : Symbol(c2.f1, Decl(commentsInheritance.ts, 66, 22)) } /** c2 prop*/ public get prop() { ->prop : Symbol(prop, Decl(commentsInheritance.ts, 69, 5)) +>prop : Symbol(c2.prop, Decl(commentsInheritance.ts, 69, 5)) return 10; } public nc_p1: number; ->nc_p1 : Symbol(nc_p1, Decl(commentsInheritance.ts, 73, 5)) +>nc_p1 : Symbol(c2.nc_p1, Decl(commentsInheritance.ts, 73, 5)) public nc_f1() { ->nc_f1 : Symbol(nc_f1, Decl(commentsInheritance.ts, 74, 25)) +>nc_f1 : Symbol(c2.nc_f1, Decl(commentsInheritance.ts, 74, 25)) } public get nc_prop() { ->nc_prop : Symbol(nc_prop, Decl(commentsInheritance.ts, 76, 5)) +>nc_prop : Symbol(c2.nc_prop, Decl(commentsInheritance.ts, 76, 5)) return 10; } @@ -162,9 +162,9 @@ class c2 { >a : Symbol(a, Decl(commentsInheritance.ts, 81, 16)) this.c2_p1 = a; ->this.c2_p1 : Symbol(c2_p1, Decl(commentsInheritance.ts, 49, 10)) +>this.c2_p1 : Symbol(c2.c2_p1, Decl(commentsInheritance.ts, 49, 10)) >this : Symbol(c2, Decl(commentsInheritance.ts, 48, 12)) ->c2_p1 : Symbol(c2_p1, Decl(commentsInheritance.ts, 49, 10)) +>c2_p1 : Symbol(c2.c2_p1, Decl(commentsInheritance.ts, 49, 10)) >a : Symbol(a, Decl(commentsInheritance.ts, 81, 16)) } } @@ -178,26 +178,26 @@ class c3 extends c2 { } /** c3 p1*/ public p1: number; ->p1 : Symbol(p1, Decl(commentsInheritance.ts, 88, 5)) +>p1 : Symbol(c3.p1, Decl(commentsInheritance.ts, 88, 5)) /** c3 f1*/ public f1() { ->f1 : Symbol(f1, Decl(commentsInheritance.ts, 90, 22)) +>f1 : Symbol(c3.f1, Decl(commentsInheritance.ts, 90, 22)) } /** c3 prop*/ public get prop() { ->prop : Symbol(prop, Decl(commentsInheritance.ts, 93, 5)) +>prop : Symbol(c3.prop, Decl(commentsInheritance.ts, 93, 5)) return 10; } public nc_p1: number; ->nc_p1 : Symbol(nc_p1, Decl(commentsInheritance.ts, 97, 5)) +>nc_p1 : Symbol(c3.nc_p1, Decl(commentsInheritance.ts, 97, 5)) public nc_f1() { ->nc_f1 : Symbol(nc_f1, Decl(commentsInheritance.ts, 98, 25)) +>nc_f1 : Symbol(c3.nc_f1, Decl(commentsInheritance.ts, 98, 25)) } public get nc_prop() { ->nc_prop : Symbol(nc_prop, Decl(commentsInheritance.ts, 100, 5)) +>nc_prop : Symbol(c3.nc_prop, Decl(commentsInheritance.ts, 100, 5)) return 10; } @@ -228,46 +228,46 @@ interface i2 { /** i2_p1*/ i2_p1: number; ->i2_p1 : Symbol(i2_p1, Decl(commentsInheritance.ts, 112, 14)) +>i2_p1 : Symbol(i2.i2_p1, Decl(commentsInheritance.ts, 112, 14)) /** i2_f1*/ i2_f1(): void; ->i2_f1 : Symbol(i2_f1, Decl(commentsInheritance.ts, 114, 18)) +>i2_f1 : Symbol(i2.i2_f1, Decl(commentsInheritance.ts, 114, 18)) /** i2_l1*/ i2_l1: () => void; ->i2_l1 : Symbol(i2_l1, Decl(commentsInheritance.ts, 116, 18)) +>i2_l1 : Symbol(i2.i2_l1, Decl(commentsInheritance.ts, 116, 18)) // i2_nc_p1 i2_nc_p1: number; ->i2_nc_p1 : Symbol(i2_nc_p1, Decl(commentsInheritance.ts, 118, 22)) +>i2_nc_p1 : Symbol(i2.i2_nc_p1, Decl(commentsInheritance.ts, 118, 22)) i2_nc_f1(): void; ->i2_nc_f1 : Symbol(i2_nc_f1, Decl(commentsInheritance.ts, 120, 21)) +>i2_nc_f1 : Symbol(i2.i2_nc_f1, Decl(commentsInheritance.ts, 120, 21)) i2_nc_l1: () => void; ->i2_nc_l1 : Symbol(i2_nc_l1, Decl(commentsInheritance.ts, 121, 21)) +>i2_nc_l1 : Symbol(i2.i2_nc_l1, Decl(commentsInheritance.ts, 121, 21)) /** i2 p1*/ p1: number; ->p1 : Symbol(p1, Decl(commentsInheritance.ts, 122, 25)) +>p1 : Symbol(i2.p1, Decl(commentsInheritance.ts, 122, 25)) /** i2 f1*/ f1(): void; ->f1 : Symbol(f1, Decl(commentsInheritance.ts, 124, 15)) +>f1 : Symbol(i2.f1, Decl(commentsInheritance.ts, 124, 15)) /** i2 l1*/ l1: () => void; ->l1 : Symbol(l1, Decl(commentsInheritance.ts, 126, 15)) +>l1 : Symbol(i2.l1, Decl(commentsInheritance.ts, 126, 15)) nc_p1: number; ->nc_p1 : Symbol(nc_p1, Decl(commentsInheritance.ts, 128, 19)) +>nc_p1 : Symbol(i2.nc_p1, Decl(commentsInheritance.ts, 128, 19)) nc_f1(): void; ->nc_f1 : Symbol(nc_f1, Decl(commentsInheritance.ts, 129, 18)) +>nc_f1 : Symbol(i2.nc_f1, Decl(commentsInheritance.ts, 129, 18)) nc_l1: () => void; ->nc_l1 : Symbol(nc_l1, Decl(commentsInheritance.ts, 130, 18)) +>nc_l1 : Symbol(i2.nc_l1, Decl(commentsInheritance.ts, 130, 18)) } interface i3 extends i2 { >i3 : Symbol(i3, Decl(commentsInheritance.ts, 132, 1)) @@ -275,26 +275,26 @@ interface i3 extends i2 { /** i3 p1 */ p1: number; ->p1 : Symbol(p1, Decl(commentsInheritance.ts, 133, 25)) +>p1 : Symbol(i3.p1, Decl(commentsInheritance.ts, 133, 25)) /** * i3 f1 */ f1(): void; ->f1 : Symbol(f1, Decl(commentsInheritance.ts, 135, 15)) +>f1 : Symbol(i3.f1, Decl(commentsInheritance.ts, 135, 15)) /** i3 l1*/ l1: () => void; ->l1 : Symbol(l1, Decl(commentsInheritance.ts, 139, 15)) +>l1 : Symbol(i3.l1, Decl(commentsInheritance.ts, 139, 15)) nc_p1: number; ->nc_p1 : Symbol(nc_p1, Decl(commentsInheritance.ts, 141, 19)) +>nc_p1 : Symbol(i3.nc_p1, Decl(commentsInheritance.ts, 141, 19)) nc_f1(): void; ->nc_f1 : Symbol(nc_f1, Decl(commentsInheritance.ts, 142, 18)) +>nc_f1 : Symbol(i3.nc_f1, Decl(commentsInheritance.ts, 142, 18)) nc_l1: () => void; ->nc_l1 : Symbol(nc_l1, Decl(commentsInheritance.ts, 143, 18)) +>nc_l1 : Symbol(i3.nc_l1, Decl(commentsInheritance.ts, 143, 18)) } var i2_i: i2; >i2_i : Symbol(i2_i, Decl(commentsInheritance.ts, 146, 3)) diff --git a/tests/baselines/reference/commentsInterface.symbols b/tests/baselines/reference/commentsInterface.symbols index 78d89989ed1..6e3a9e27978 100644 --- a/tests/baselines/reference/commentsInterface.symbols +++ b/tests/baselines/reference/commentsInterface.symbols @@ -20,11 +20,11 @@ interface i2 { /** this is x*/ x: number; ->x : Symbol(x, Decl(commentsInterface.ts, 8, 14)) +>x : Symbol(i2.x, Decl(commentsInterface.ts, 8, 14)) /** this is foo*/ foo: (/**param help*/b: number) => string; ->foo : Symbol(foo, Decl(commentsInterface.ts, 10, 14)) +>foo : Symbol(i2.foo, Decl(commentsInterface.ts, 10, 14)) >b : Symbol(b, Decl(commentsInterface.ts, 12, 10)) /** this is indexer*/ @@ -37,10 +37,10 @@ interface i2 { >i1 : Symbol(i1, Decl(commentsInterface.ts, 0, 0)) nc_x: number; ->nc_x : Symbol(nc_x, Decl(commentsInterface.ts, 16, 27)) +>nc_x : Symbol(i2.nc_x, Decl(commentsInterface.ts, 16, 27)) nc_foo: (b: number) => string; ->nc_foo : Symbol(nc_foo, Decl(commentsInterface.ts, 17, 17)) +>nc_foo : Symbol(i2.nc_foo, Decl(commentsInterface.ts, 17, 17)) >b : Symbol(b, Decl(commentsInterface.ts, 18, 13)) [i: number]: number; @@ -53,16 +53,16 @@ interface i2 { /** this is fnfoo*/ fnfoo(/**param help*/b: number): string; ->fnfoo : Symbol(fnfoo, Decl(commentsInterface.ts, 21, 68)) +>fnfoo : Symbol(i2.fnfoo, Decl(commentsInterface.ts, 21, 68)) >b : Symbol(b, Decl(commentsInterface.ts, 23, 10)) nc_fnfoo(b: number): string; ->nc_fnfoo : Symbol(nc_fnfoo, Decl(commentsInterface.ts, 23, 44)) +>nc_fnfoo : Symbol(i2.nc_fnfoo, Decl(commentsInterface.ts, 23, 44)) >b : Symbol(b, Decl(commentsInterface.ts, 24, 13)) // nc_y nc_y: number; ->nc_y : Symbol(nc_y, Decl(commentsInterface.ts, 24, 32)) +>nc_y : Symbol(i2.nc_y, Decl(commentsInterface.ts, 24, 32)) } var i2_i: i2; >i2_i : Symbol(i2_i, Decl(commentsInterface.ts, 28, 3)) @@ -150,27 +150,27 @@ interface i3 { /** Comment i3 x*/ x: number; ->x : Symbol(x, Decl(commentsInterface.ts, 43, 14)) +>x : Symbol(i3.x, Decl(commentsInterface.ts, 43, 14)) /** Function i3 f*/ f(/**number parameter*/a: number): string; ->f : Symbol(f, Decl(commentsInterface.ts, 45, 14)) +>f : Symbol(i3.f, Decl(commentsInterface.ts, 45, 14)) >a : Symbol(a, Decl(commentsInterface.ts, 47, 6)) /** i3 l*/ l: (/**comment i3 l b*/b: number) => string; ->l : Symbol(l, Decl(commentsInterface.ts, 47, 46)) +>l : Symbol(i3.l, Decl(commentsInterface.ts, 47, 46)) >b : Symbol(b, Decl(commentsInterface.ts, 49, 8)) nc_x: number; ->nc_x : Symbol(nc_x, Decl(commentsInterface.ts, 49, 48)) +>nc_x : Symbol(i3.nc_x, Decl(commentsInterface.ts, 49, 48)) nc_f(a: number): string; ->nc_f : Symbol(nc_f, Decl(commentsInterface.ts, 50, 17)) +>nc_f : Symbol(i3.nc_f, Decl(commentsInterface.ts, 50, 17)) >a : Symbol(a, Decl(commentsInterface.ts, 51, 9)) nc_l: (b: number) => string; ->nc_l : Symbol(nc_l, Decl(commentsInterface.ts, 51, 28)) +>nc_l : Symbol(i3.nc_l, Decl(commentsInterface.ts, 51, 28)) >b : Symbol(b, Decl(commentsInterface.ts, 52, 11)) } var i3_i: i3; diff --git a/tests/baselines/reference/commentsOnObjectLiteral4.js b/tests/baselines/reference/commentsOnObjectLiteral4.js index 3b7efefdff4..23e238b8307 100644 --- a/tests/baselines/reference/commentsOnObjectLiteral4.js +++ b/tests/baselines/reference/commentsOnObjectLiteral4.js @@ -5,9 +5,10 @@ var v = { * @type {number} */ get bar(): number { - return this._bar; + return 12; } -} +} + //// [commentsOnObjectLiteral4.js] var v = { @@ -15,6 +16,6 @@ var v = { * @type {number} */ get bar() { - return this._bar; + return 12; } }; diff --git a/tests/baselines/reference/commentsOnObjectLiteral4.symbols b/tests/baselines/reference/commentsOnObjectLiteral4.symbols index c1762cb75c8..568d6332126 100644 --- a/tests/baselines/reference/commentsOnObjectLiteral4.symbols +++ b/tests/baselines/reference/commentsOnObjectLiteral4.symbols @@ -9,6 +9,7 @@ var v = { get bar(): number { >bar : Symbol(bar, Decl(commentsOnObjectLiteral4.ts, 1, 9)) - return this._bar; + return 12; } } + diff --git a/tests/baselines/reference/commentsOnObjectLiteral4.types b/tests/baselines/reference/commentsOnObjectLiteral4.types index f458d73ae36..5d20d4f79cc 100644 --- a/tests/baselines/reference/commentsOnObjectLiteral4.types +++ b/tests/baselines/reference/commentsOnObjectLiteral4.types @@ -2,7 +2,7 @@ var v = { >v : { readonly bar: number; } ->{ /** * @type {number} */ get bar(): number { return this._bar; }} : { readonly bar: number; } +>{ /** * @type {number} */ get bar(): number { return 12; }} : { readonly bar: number; } /** * @type {number} @@ -10,9 +10,8 @@ var v = { get bar(): number { >bar : number - return this._bar; ->this._bar : any ->this : any ->_bar : any + return 12; +>12 : number } } + diff --git a/tests/baselines/reference/commentsOverloads.symbols b/tests/baselines/reference/commentsOverloads.symbols index b504e35c5ac..bcdcc32f4c3 100644 --- a/tests/baselines/reference/commentsOverloads.symbols +++ b/tests/baselines/reference/commentsOverloads.symbols @@ -97,53 +97,53 @@ interface i1 { /** foo 1*/ foo(a: number): number; ->foo : Symbol(foo, Decl(commentsOverloads.ts, 37, 24), Decl(commentsOverloads.ts, 39, 27), Decl(commentsOverloads.ts, 41, 27), Decl(commentsOverloads.ts, 43, 31)) +>foo : Symbol(i1.foo, Decl(commentsOverloads.ts, 37, 24), Decl(commentsOverloads.ts, 39, 27), Decl(commentsOverloads.ts, 41, 27), Decl(commentsOverloads.ts, 43, 31)) >a : Symbol(a, Decl(commentsOverloads.ts, 39, 8)) /** foo 2*/ foo(b: string): number; ->foo : Symbol(foo, Decl(commentsOverloads.ts, 37, 24), Decl(commentsOverloads.ts, 39, 27), Decl(commentsOverloads.ts, 41, 27), Decl(commentsOverloads.ts, 43, 31)) +>foo : Symbol(i1.foo, Decl(commentsOverloads.ts, 37, 24), Decl(commentsOverloads.ts, 39, 27), Decl(commentsOverloads.ts, 41, 27), Decl(commentsOverloads.ts, 43, 31)) >b : Symbol(b, Decl(commentsOverloads.ts, 41, 8)) // foo 3 foo(arr: number[]): number; ->foo : Symbol(foo, Decl(commentsOverloads.ts, 37, 24), Decl(commentsOverloads.ts, 39, 27), Decl(commentsOverloads.ts, 41, 27), Decl(commentsOverloads.ts, 43, 31)) +>foo : Symbol(i1.foo, Decl(commentsOverloads.ts, 37, 24), Decl(commentsOverloads.ts, 39, 27), Decl(commentsOverloads.ts, 41, 27), Decl(commentsOverloads.ts, 43, 31)) >arr : Symbol(arr, Decl(commentsOverloads.ts, 43, 8)) /** foo 4 */ foo(arr: string[]): number; ->foo : Symbol(foo, Decl(commentsOverloads.ts, 37, 24), Decl(commentsOverloads.ts, 39, 27), Decl(commentsOverloads.ts, 41, 27), Decl(commentsOverloads.ts, 43, 31)) +>foo : Symbol(i1.foo, Decl(commentsOverloads.ts, 37, 24), Decl(commentsOverloads.ts, 39, 27), Decl(commentsOverloads.ts, 41, 27), Decl(commentsOverloads.ts, 43, 31)) >arr : Symbol(arr, Decl(commentsOverloads.ts, 45, 8)) foo2(a: number): number; ->foo2 : Symbol(foo2, Decl(commentsOverloads.ts, 45, 31), Decl(commentsOverloads.ts, 47, 28)) +>foo2 : Symbol(i1.foo2, Decl(commentsOverloads.ts, 45, 31), Decl(commentsOverloads.ts, 47, 28)) >a : Symbol(a, Decl(commentsOverloads.ts, 47, 9)) /** foo2 2*/ foo2(b: string): number; ->foo2 : Symbol(foo2, Decl(commentsOverloads.ts, 45, 31), Decl(commentsOverloads.ts, 47, 28)) +>foo2 : Symbol(i1.foo2, Decl(commentsOverloads.ts, 45, 31), Decl(commentsOverloads.ts, 47, 28)) >b : Symbol(b, Decl(commentsOverloads.ts, 49, 9)) foo3(a: number): number; ->foo3 : Symbol(foo3, Decl(commentsOverloads.ts, 49, 28), Decl(commentsOverloads.ts, 50, 28)) +>foo3 : Symbol(i1.foo3, Decl(commentsOverloads.ts, 49, 28), Decl(commentsOverloads.ts, 50, 28)) >a : Symbol(a, Decl(commentsOverloads.ts, 50, 9)) foo3(b: string): number; ->foo3 : Symbol(foo3, Decl(commentsOverloads.ts, 49, 28), Decl(commentsOverloads.ts, 50, 28)) +>foo3 : Symbol(i1.foo3, Decl(commentsOverloads.ts, 49, 28), Decl(commentsOverloads.ts, 50, 28)) >b : Symbol(b, Decl(commentsOverloads.ts, 51, 9)) /** foo4 1*/ foo4(a: number): number; ->foo4 : Symbol(foo4, Decl(commentsOverloads.ts, 51, 28), Decl(commentsOverloads.ts, 53, 28), Decl(commentsOverloads.ts, 54, 28)) +>foo4 : Symbol(i1.foo4, Decl(commentsOverloads.ts, 51, 28), Decl(commentsOverloads.ts, 53, 28), Decl(commentsOverloads.ts, 54, 28)) >a : Symbol(a, Decl(commentsOverloads.ts, 53, 9)) foo4(b: string): number; ->foo4 : Symbol(foo4, Decl(commentsOverloads.ts, 51, 28), Decl(commentsOverloads.ts, 53, 28), Decl(commentsOverloads.ts, 54, 28)) +>foo4 : Symbol(i1.foo4, Decl(commentsOverloads.ts, 51, 28), Decl(commentsOverloads.ts, 53, 28), Decl(commentsOverloads.ts, 54, 28)) >b : Symbol(b, Decl(commentsOverloads.ts, 54, 9)) /** foo4 any */ foo4(c: any): any; ->foo4 : Symbol(foo4, Decl(commentsOverloads.ts, 51, 28), Decl(commentsOverloads.ts, 53, 28), Decl(commentsOverloads.ts, 54, 28)) +>foo4 : Symbol(i1.foo4, Decl(commentsOverloads.ts, 51, 28), Decl(commentsOverloads.ts, 53, 28), Decl(commentsOverloads.ts, 54, 28)) >c : Symbol(c, Decl(commentsOverloads.ts, 56, 9)) /// new 1 @@ -220,78 +220,78 @@ class c { >c : Symbol(c, Decl(commentsOverloads.ts, 87, 1)) public prop1(a: number): number; ->prop1 : Symbol(prop1, Decl(commentsOverloads.ts, 88, 9), Decl(commentsOverloads.ts, 89, 36), Decl(commentsOverloads.ts, 90, 36)) +>prop1 : Symbol(c.prop1, Decl(commentsOverloads.ts, 88, 9), Decl(commentsOverloads.ts, 89, 36), Decl(commentsOverloads.ts, 90, 36)) >a : Symbol(a, Decl(commentsOverloads.ts, 89, 17)) public prop1(b: string): number; ->prop1 : Symbol(prop1, Decl(commentsOverloads.ts, 88, 9), Decl(commentsOverloads.ts, 89, 36), Decl(commentsOverloads.ts, 90, 36)) +>prop1 : Symbol(c.prop1, Decl(commentsOverloads.ts, 88, 9), Decl(commentsOverloads.ts, 89, 36), Decl(commentsOverloads.ts, 90, 36)) >b : Symbol(b, Decl(commentsOverloads.ts, 90, 17)) public prop1(aorb: any) { ->prop1 : Symbol(prop1, Decl(commentsOverloads.ts, 88, 9), Decl(commentsOverloads.ts, 89, 36), Decl(commentsOverloads.ts, 90, 36)) +>prop1 : Symbol(c.prop1, Decl(commentsOverloads.ts, 88, 9), Decl(commentsOverloads.ts, 89, 36), Decl(commentsOverloads.ts, 90, 36)) >aorb : Symbol(aorb, Decl(commentsOverloads.ts, 91, 17)) return 10; } /** prop2 1*/ public prop2(a: number): number; ->prop2 : Symbol(prop2, Decl(commentsOverloads.ts, 93, 5), Decl(commentsOverloads.ts, 95, 36), Decl(commentsOverloads.ts, 96, 36)) +>prop2 : Symbol(c.prop2, Decl(commentsOverloads.ts, 93, 5), Decl(commentsOverloads.ts, 95, 36), Decl(commentsOverloads.ts, 96, 36)) >a : Symbol(a, Decl(commentsOverloads.ts, 95, 17)) public prop2(b: string): number; ->prop2 : Symbol(prop2, Decl(commentsOverloads.ts, 93, 5), Decl(commentsOverloads.ts, 95, 36), Decl(commentsOverloads.ts, 96, 36)) +>prop2 : Symbol(c.prop2, Decl(commentsOverloads.ts, 93, 5), Decl(commentsOverloads.ts, 95, 36), Decl(commentsOverloads.ts, 96, 36)) >b : Symbol(b, Decl(commentsOverloads.ts, 96, 17)) public prop2(aorb: any) { ->prop2 : Symbol(prop2, Decl(commentsOverloads.ts, 93, 5), Decl(commentsOverloads.ts, 95, 36), Decl(commentsOverloads.ts, 96, 36)) +>prop2 : Symbol(c.prop2, Decl(commentsOverloads.ts, 93, 5), Decl(commentsOverloads.ts, 95, 36), Decl(commentsOverloads.ts, 96, 36)) >aorb : Symbol(aorb, Decl(commentsOverloads.ts, 97, 17)) return 10; } public prop3(a: number): number; ->prop3 : Symbol(prop3, Decl(commentsOverloads.ts, 99, 5), Decl(commentsOverloads.ts, 100, 36), Decl(commentsOverloads.ts, 102, 36)) +>prop3 : Symbol(c.prop3, Decl(commentsOverloads.ts, 99, 5), Decl(commentsOverloads.ts, 100, 36), Decl(commentsOverloads.ts, 102, 36)) >a : Symbol(a, Decl(commentsOverloads.ts, 100, 17)) /** prop3 2*/ public prop3(b: string): number; ->prop3 : Symbol(prop3, Decl(commentsOverloads.ts, 99, 5), Decl(commentsOverloads.ts, 100, 36), Decl(commentsOverloads.ts, 102, 36)) +>prop3 : Symbol(c.prop3, Decl(commentsOverloads.ts, 99, 5), Decl(commentsOverloads.ts, 100, 36), Decl(commentsOverloads.ts, 102, 36)) >b : Symbol(b, Decl(commentsOverloads.ts, 102, 17)) public prop3(aorb: any) { ->prop3 : Symbol(prop3, Decl(commentsOverloads.ts, 99, 5), Decl(commentsOverloads.ts, 100, 36), Decl(commentsOverloads.ts, 102, 36)) +>prop3 : Symbol(c.prop3, Decl(commentsOverloads.ts, 99, 5), Decl(commentsOverloads.ts, 100, 36), Decl(commentsOverloads.ts, 102, 36)) >aorb : Symbol(aorb, Decl(commentsOverloads.ts, 103, 17)) return 10; } /** prop4 1*/ public prop4(a: number): number; ->prop4 : Symbol(prop4, Decl(commentsOverloads.ts, 105, 5), Decl(commentsOverloads.ts, 107, 36), Decl(commentsOverloads.ts, 109, 36)) +>prop4 : Symbol(c.prop4, Decl(commentsOverloads.ts, 105, 5), Decl(commentsOverloads.ts, 107, 36), Decl(commentsOverloads.ts, 109, 36)) >a : Symbol(a, Decl(commentsOverloads.ts, 107, 17)) /** prop4 2*/ public prop4(b: string): number; ->prop4 : Symbol(prop4, Decl(commentsOverloads.ts, 105, 5), Decl(commentsOverloads.ts, 107, 36), Decl(commentsOverloads.ts, 109, 36)) +>prop4 : Symbol(c.prop4, Decl(commentsOverloads.ts, 105, 5), Decl(commentsOverloads.ts, 107, 36), Decl(commentsOverloads.ts, 109, 36)) >b : Symbol(b, Decl(commentsOverloads.ts, 109, 17)) public prop4(aorb: any) { ->prop4 : Symbol(prop4, Decl(commentsOverloads.ts, 105, 5), Decl(commentsOverloads.ts, 107, 36), Decl(commentsOverloads.ts, 109, 36)) +>prop4 : Symbol(c.prop4, Decl(commentsOverloads.ts, 105, 5), Decl(commentsOverloads.ts, 107, 36), Decl(commentsOverloads.ts, 109, 36)) >aorb : Symbol(aorb, Decl(commentsOverloads.ts, 110, 17)) return 10; } /** prop5 1*/ public prop5(a: number): number; ->prop5 : Symbol(prop5, Decl(commentsOverloads.ts, 112, 5), Decl(commentsOverloads.ts, 114, 36), Decl(commentsOverloads.ts, 116, 36)) +>prop5 : Symbol(c.prop5, Decl(commentsOverloads.ts, 112, 5), Decl(commentsOverloads.ts, 114, 36), Decl(commentsOverloads.ts, 116, 36)) >a : Symbol(a, Decl(commentsOverloads.ts, 114, 17)) /** prop5 2*/ public prop5(b: string): number; ->prop5 : Symbol(prop5, Decl(commentsOverloads.ts, 112, 5), Decl(commentsOverloads.ts, 114, 36), Decl(commentsOverloads.ts, 116, 36)) +>prop5 : Symbol(c.prop5, Decl(commentsOverloads.ts, 112, 5), Decl(commentsOverloads.ts, 114, 36), Decl(commentsOverloads.ts, 116, 36)) >b : Symbol(b, Decl(commentsOverloads.ts, 116, 17)) /** Prop5 implementaion*/ public prop5(aorb: any) { ->prop5 : Symbol(prop5, Decl(commentsOverloads.ts, 112, 5), Decl(commentsOverloads.ts, 114, 36), Decl(commentsOverloads.ts, 116, 36)) +>prop5 : Symbol(c.prop5, Decl(commentsOverloads.ts, 112, 5), Decl(commentsOverloads.ts, 114, 36), Decl(commentsOverloads.ts, 116, 36)) >aorb : Symbol(aorb, Decl(commentsOverloads.ts, 118, 17)) return 10; diff --git a/tests/baselines/reference/commentsTypeParameters.symbols b/tests/baselines/reference/commentsTypeParameters.symbols index 466ca3ff9a9..26041d6b44f 100644 --- a/tests/baselines/reference/commentsTypeParameters.symbols +++ b/tests/baselines/reference/commentsTypeParameters.symbols @@ -4,7 +4,7 @@ class C { >T : Symbol(T, Decl(commentsTypeParameters.ts, 0, 8)) method(a: U) { ->method : Symbol(method, Decl(commentsTypeParameters.ts, 0, 47)) +>method : Symbol(C.method, Decl(commentsTypeParameters.ts, 0, 47)) >U : Symbol(U, Decl(commentsTypeParameters.ts, 1, 11)) >T : Symbol(T, Decl(commentsTypeParameters.ts, 0, 8)) >a : Symbol(a, Decl(commentsTypeParameters.ts, 1, 66)) @@ -18,7 +18,7 @@ class C { } private privatemethod(a: U) { ->privatemethod : Symbol(privatemethod, Decl(commentsTypeParameters.ts, 4, 5)) +>privatemethod : Symbol(C.privatemethod, Decl(commentsTypeParameters.ts, 4, 5)) >U : Symbol(U, Decl(commentsTypeParameters.ts, 6, 26)) >T : Symbol(T, Decl(commentsTypeParameters.ts, 0, 8)) >a : Symbol(a, Decl(commentsTypeParameters.ts, 6, 81)) diff --git a/tests/baselines/reference/commentsdoNotEmitComments.symbols b/tests/baselines/reference/commentsdoNotEmitComments.symbols index a7ba4076d9d..01555496dce 100644 --- a/tests/baselines/reference/commentsdoNotEmitComments.symbols +++ b/tests/baselines/reference/commentsdoNotEmitComments.symbols @@ -30,53 +30,53 @@ class c { /** property comment */ public b = 10; ->b : Symbol(b, Decl(commentsdoNotEmitComments.ts, 17, 5)) +>b : Symbol(c.b, Decl(commentsdoNotEmitComments.ts, 17, 5)) /** function comment */ public myFoo() { ->myFoo : Symbol(myFoo, Decl(commentsdoNotEmitComments.ts, 20, 18)) +>myFoo : Symbol(c.myFoo, Decl(commentsdoNotEmitComments.ts, 20, 18)) return this.b; ->this.b : Symbol(b, Decl(commentsdoNotEmitComments.ts, 17, 5)) +>this.b : Symbol(c.b, Decl(commentsdoNotEmitComments.ts, 17, 5)) >this : Symbol(c, Decl(commentsdoNotEmitComments.ts, 11, 9)) ->b : Symbol(b, Decl(commentsdoNotEmitComments.ts, 17, 5)) +>b : Symbol(c.b, Decl(commentsdoNotEmitComments.ts, 17, 5)) } /** getter comment*/ public get prop1() { ->prop1 : Symbol(prop1, Decl(commentsdoNotEmitComments.ts, 25, 5), Decl(commentsdoNotEmitComments.ts, 30, 5)) +>prop1 : Symbol(c.prop1, Decl(commentsdoNotEmitComments.ts, 25, 5), Decl(commentsdoNotEmitComments.ts, 30, 5)) return this.b; ->this.b : Symbol(b, Decl(commentsdoNotEmitComments.ts, 17, 5)) +>this.b : Symbol(c.b, Decl(commentsdoNotEmitComments.ts, 17, 5)) >this : Symbol(c, Decl(commentsdoNotEmitComments.ts, 11, 9)) ->b : Symbol(b, Decl(commentsdoNotEmitComments.ts, 17, 5)) +>b : Symbol(c.b, Decl(commentsdoNotEmitComments.ts, 17, 5)) } /** setter comment*/ public set prop1(val: number) { ->prop1 : Symbol(prop1, Decl(commentsdoNotEmitComments.ts, 25, 5), Decl(commentsdoNotEmitComments.ts, 30, 5)) +>prop1 : Symbol(c.prop1, Decl(commentsdoNotEmitComments.ts, 25, 5), Decl(commentsdoNotEmitComments.ts, 30, 5)) >val : Symbol(val, Decl(commentsdoNotEmitComments.ts, 33, 21)) this.b = val; ->this.b : Symbol(b, Decl(commentsdoNotEmitComments.ts, 17, 5)) +>this.b : Symbol(c.b, Decl(commentsdoNotEmitComments.ts, 17, 5)) >this : Symbol(c, Decl(commentsdoNotEmitComments.ts, 11, 9)) ->b : Symbol(b, Decl(commentsdoNotEmitComments.ts, 17, 5)) +>b : Symbol(c.b, Decl(commentsdoNotEmitComments.ts, 17, 5)) >val : Symbol(val, Decl(commentsdoNotEmitComments.ts, 33, 21)) } /** overload signature1*/ public foo1(a: number): string; ->foo1 : Symbol(foo1, Decl(commentsdoNotEmitComments.ts, 35, 5), Decl(commentsdoNotEmitComments.ts, 38, 35), Decl(commentsdoNotEmitComments.ts, 40, 35)) +>foo1 : Symbol(c.foo1, Decl(commentsdoNotEmitComments.ts, 35, 5), Decl(commentsdoNotEmitComments.ts, 38, 35), Decl(commentsdoNotEmitComments.ts, 40, 35)) >a : Symbol(a, Decl(commentsdoNotEmitComments.ts, 38, 16)) /** Overload signature 2*/ public foo1(b: string): string; ->foo1 : Symbol(foo1, Decl(commentsdoNotEmitComments.ts, 35, 5), Decl(commentsdoNotEmitComments.ts, 38, 35), Decl(commentsdoNotEmitComments.ts, 40, 35)) +>foo1 : Symbol(c.foo1, Decl(commentsdoNotEmitComments.ts, 35, 5), Decl(commentsdoNotEmitComments.ts, 38, 35), Decl(commentsdoNotEmitComments.ts, 40, 35)) >b : Symbol(b, Decl(commentsdoNotEmitComments.ts, 40, 16)) /** overload implementation signature*/ public foo1(aOrb) { ->foo1 : Symbol(foo1, Decl(commentsdoNotEmitComments.ts, 35, 5), Decl(commentsdoNotEmitComments.ts, 38, 35), Decl(commentsdoNotEmitComments.ts, 40, 35)) +>foo1 : Symbol(c.foo1, Decl(commentsdoNotEmitComments.ts, 35, 5), Decl(commentsdoNotEmitComments.ts, 38, 35), Decl(commentsdoNotEmitComments.ts, 40, 35)) >aOrb : Symbol(aOrb, Decl(commentsdoNotEmitComments.ts, 42, 16)) return aOrb.toString(); @@ -107,12 +107,12 @@ interface i1 { /** function property;*/ myFoo(/*param prop*/a: number): string; ->myFoo : Symbol(myFoo, Decl(commentsdoNotEmitComments.ts, 59, 24)) +>myFoo : Symbol(i1.myFoo, Decl(commentsdoNotEmitComments.ts, 59, 24)) >a : Symbol(a, Decl(commentsdoNotEmitComments.ts, 62, 10)) /** prop*/ prop: string; ->prop : Symbol(prop, Decl(commentsdoNotEmitComments.ts, 62, 43)) +>prop : Symbol(i1.prop, Decl(commentsdoNotEmitComments.ts, 62, 43)) } /**interface instance comments*/ @@ -129,7 +129,7 @@ module m1 { >b : Symbol(b, Decl(commentsdoNotEmitComments.ts, 72, 11)) constructor(public x: number) { ->x : Symbol(x, Decl(commentsdoNotEmitComments.ts, 75, 20)) +>x : Symbol(b.x, Decl(commentsdoNotEmitComments.ts, 75, 20)) } } diff --git a/tests/baselines/reference/commentsemitComments.symbols b/tests/baselines/reference/commentsemitComments.symbols index 6c0683d5372..eec41dccec6 100644 --- a/tests/baselines/reference/commentsemitComments.symbols +++ b/tests/baselines/reference/commentsemitComments.symbols @@ -30,53 +30,53 @@ class c { /** property comment */ public b = 10; ->b : Symbol(b, Decl(commentsemitComments.ts, 17, 5)) +>b : Symbol(c.b, Decl(commentsemitComments.ts, 17, 5)) /** function comment */ public myFoo() { ->myFoo : Symbol(myFoo, Decl(commentsemitComments.ts, 20, 18)) +>myFoo : Symbol(c.myFoo, Decl(commentsemitComments.ts, 20, 18)) return this.b; ->this.b : Symbol(b, Decl(commentsemitComments.ts, 17, 5)) +>this.b : Symbol(c.b, Decl(commentsemitComments.ts, 17, 5)) >this : Symbol(c, Decl(commentsemitComments.ts, 11, 9)) ->b : Symbol(b, Decl(commentsemitComments.ts, 17, 5)) +>b : Symbol(c.b, Decl(commentsemitComments.ts, 17, 5)) } /** getter comment*/ public get prop1() { ->prop1 : Symbol(prop1, Decl(commentsemitComments.ts, 25, 5), Decl(commentsemitComments.ts, 30, 5)) +>prop1 : Symbol(c.prop1, Decl(commentsemitComments.ts, 25, 5), Decl(commentsemitComments.ts, 30, 5)) return this.b; ->this.b : Symbol(b, Decl(commentsemitComments.ts, 17, 5)) +>this.b : Symbol(c.b, Decl(commentsemitComments.ts, 17, 5)) >this : Symbol(c, Decl(commentsemitComments.ts, 11, 9)) ->b : Symbol(b, Decl(commentsemitComments.ts, 17, 5)) +>b : Symbol(c.b, Decl(commentsemitComments.ts, 17, 5)) } /** setter comment*/ public set prop1(val: number) { ->prop1 : Symbol(prop1, Decl(commentsemitComments.ts, 25, 5), Decl(commentsemitComments.ts, 30, 5)) +>prop1 : Symbol(c.prop1, Decl(commentsemitComments.ts, 25, 5), Decl(commentsemitComments.ts, 30, 5)) >val : Symbol(val, Decl(commentsemitComments.ts, 33, 21)) this.b = val; ->this.b : Symbol(b, Decl(commentsemitComments.ts, 17, 5)) +>this.b : Symbol(c.b, Decl(commentsemitComments.ts, 17, 5)) >this : Symbol(c, Decl(commentsemitComments.ts, 11, 9)) ->b : Symbol(b, Decl(commentsemitComments.ts, 17, 5)) +>b : Symbol(c.b, Decl(commentsemitComments.ts, 17, 5)) >val : Symbol(val, Decl(commentsemitComments.ts, 33, 21)) } /** overload signature1*/ public foo1(a: number): string; ->foo1 : Symbol(foo1, Decl(commentsemitComments.ts, 35, 5), Decl(commentsemitComments.ts, 38, 35), Decl(commentsemitComments.ts, 40, 35)) +>foo1 : Symbol(c.foo1, Decl(commentsemitComments.ts, 35, 5), Decl(commentsemitComments.ts, 38, 35), Decl(commentsemitComments.ts, 40, 35)) >a : Symbol(a, Decl(commentsemitComments.ts, 38, 16)) /** Overload signature 2*/ public foo1(b: string): string; ->foo1 : Symbol(foo1, Decl(commentsemitComments.ts, 35, 5), Decl(commentsemitComments.ts, 38, 35), Decl(commentsemitComments.ts, 40, 35)) +>foo1 : Symbol(c.foo1, Decl(commentsemitComments.ts, 35, 5), Decl(commentsemitComments.ts, 38, 35), Decl(commentsemitComments.ts, 40, 35)) >b : Symbol(b, Decl(commentsemitComments.ts, 40, 16)) /** overload implementation signature*/ public foo1(aOrb) { ->foo1 : Symbol(foo1, Decl(commentsemitComments.ts, 35, 5), Decl(commentsemitComments.ts, 38, 35), Decl(commentsemitComments.ts, 40, 35)) +>foo1 : Symbol(c.foo1, Decl(commentsemitComments.ts, 35, 5), Decl(commentsemitComments.ts, 38, 35), Decl(commentsemitComments.ts, 40, 35)) >aOrb : Symbol(aOrb, Decl(commentsemitComments.ts, 42, 16)) return aOrb.toString(); @@ -107,12 +107,12 @@ interface i1 { /** function property;*/ myFoo(/*param prop*/a: number): string; ->myFoo : Symbol(myFoo, Decl(commentsemitComments.ts, 59, 24)) +>myFoo : Symbol(i1.myFoo, Decl(commentsemitComments.ts, 59, 24)) >a : Symbol(a, Decl(commentsemitComments.ts, 62, 10)) /** prop*/ prop: string; ->prop : Symbol(prop, Decl(commentsemitComments.ts, 62, 43)) +>prop : Symbol(i1.prop, Decl(commentsemitComments.ts, 62, 43)) } /**interface instance comments*/ @@ -129,7 +129,7 @@ module m1 { >b : Symbol(b, Decl(commentsemitComments.ts, 72, 11)) constructor(public x: number) { ->x : Symbol(x, Decl(commentsemitComments.ts, 75, 20)) +>x : Symbol(b.x, Decl(commentsemitComments.ts, 75, 20)) } } diff --git a/tests/baselines/reference/commonJSImportAsPrimaryExpression.symbols b/tests/baselines/reference/commonJSImportAsPrimaryExpression.symbols index b640adc58a4..4871e7993fb 100644 --- a/tests/baselines/reference/commonJSImportAsPrimaryExpression.symbols +++ b/tests/baselines/reference/commonJSImportAsPrimaryExpression.symbols @@ -17,7 +17,7 @@ export class C1 { >C1 : Symbol(C1, Decl(foo_0.ts, 0, 0)) m1 = 42; ->m1 : Symbol(m1, Decl(foo_0.ts, 0, 17)) +>m1 : Symbol(C1.m1, Decl(foo_0.ts, 0, 17)) static s1 = true; >s1 : Symbol(C1.s1, Decl(foo_0.ts, 1, 9)) diff --git a/tests/baselines/reference/commonJSImportNotAsPrimaryExpression.symbols b/tests/baselines/reference/commonJSImportNotAsPrimaryExpression.symbols index 68a852c6165..ae67c0a3175 100644 --- a/tests/baselines/reference/commonJSImportNotAsPrimaryExpression.symbols +++ b/tests/baselines/reference/commonJSImportNotAsPrimaryExpression.symbols @@ -43,7 +43,7 @@ export class C1 { >C1 : Symbol(C1, Decl(foo_0.ts, 0, 0)) m1 = 42; ->m1 : Symbol(m1, Decl(foo_0.ts, 0, 17)) +>m1 : Symbol(C1.m1, Decl(foo_0.ts, 0, 17)) static s1 = true; >s1 : Symbol(C1.s1, Decl(foo_0.ts, 1, 9)) @@ -53,10 +53,10 @@ export interface I1 { >I1 : Symbol(I1, Decl(foo_0.ts, 3, 1)) name: string; ->name : Symbol(name, Decl(foo_0.ts, 5, 21)) +>name : Symbol(I1.name, Decl(foo_0.ts, 5, 21)) age: number; ->age : Symbol(age, Decl(foo_0.ts, 6, 14)) +>age : Symbol(I1.age, Decl(foo_0.ts, 6, 14)) } export module M1 { @@ -66,7 +66,7 @@ export module M1 { >I2 : Symbol(I2, Decl(foo_0.ts, 10, 18)) foo: string; ->foo : Symbol(foo, Decl(foo_0.ts, 11, 22)) +>foo : Symbol(I2.foo, Decl(foo_0.ts, 11, 22)) } } diff --git a/tests/baselines/reference/comparisonOperatorWithIdenticalObjects.symbols b/tests/baselines/reference/comparisonOperatorWithIdenticalObjects.symbols index a5acf69be2f..72b111d3540 100644 --- a/tests/baselines/reference/comparisonOperatorWithIdenticalObjects.symbols +++ b/tests/baselines/reference/comparisonOperatorWithIdenticalObjects.symbols @@ -3,23 +3,23 @@ class A1 { >A1 : Symbol(A1, Decl(comparisonOperatorWithIdenticalObjects.ts, 0, 0)) public a: string; ->a : Symbol(a, Decl(comparisonOperatorWithIdenticalObjects.ts, 0, 10)) +>a : Symbol(A1.a, Decl(comparisonOperatorWithIdenticalObjects.ts, 0, 10)) public b: number; ->b : Symbol(b, Decl(comparisonOperatorWithIdenticalObjects.ts, 1, 21)) +>b : Symbol(A1.b, Decl(comparisonOperatorWithIdenticalObjects.ts, 1, 21)) public c: boolean; ->c : Symbol(c, Decl(comparisonOperatorWithIdenticalObjects.ts, 2, 21)) +>c : Symbol(A1.c, Decl(comparisonOperatorWithIdenticalObjects.ts, 2, 21)) public d: any; ->d : Symbol(d, Decl(comparisonOperatorWithIdenticalObjects.ts, 3, 22)) +>d : Symbol(A1.d, Decl(comparisonOperatorWithIdenticalObjects.ts, 3, 22)) public e: Object; ->e : Symbol(e, Decl(comparisonOperatorWithIdenticalObjects.ts, 4, 18)) +>e : Symbol(A1.e, Decl(comparisonOperatorWithIdenticalObjects.ts, 4, 18)) >Object : Symbol(Object, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) public fn(a: string): string { ->fn : Symbol(fn, Decl(comparisonOperatorWithIdenticalObjects.ts, 5, 21)) +>fn : Symbol(A1.fn, Decl(comparisonOperatorWithIdenticalObjects.ts, 5, 21)) >a : Symbol(a, Decl(comparisonOperatorWithIdenticalObjects.ts, 6, 14)) return null; @@ -29,23 +29,23 @@ class B1 { >B1 : Symbol(B1, Decl(comparisonOperatorWithIdenticalObjects.ts, 9, 1)) public a: string; ->a : Symbol(a, Decl(comparisonOperatorWithIdenticalObjects.ts, 10, 10)) +>a : Symbol(B1.a, Decl(comparisonOperatorWithIdenticalObjects.ts, 10, 10)) public b: number; ->b : Symbol(b, Decl(comparisonOperatorWithIdenticalObjects.ts, 11, 21)) +>b : Symbol(B1.b, Decl(comparisonOperatorWithIdenticalObjects.ts, 11, 21)) public c: boolean; ->c : Symbol(c, Decl(comparisonOperatorWithIdenticalObjects.ts, 12, 21)) +>c : Symbol(B1.c, Decl(comparisonOperatorWithIdenticalObjects.ts, 12, 21)) public d: any; ->d : Symbol(d, Decl(comparisonOperatorWithIdenticalObjects.ts, 13, 22)) +>d : Symbol(B1.d, Decl(comparisonOperatorWithIdenticalObjects.ts, 13, 22)) public e: Object; ->e : Symbol(e, Decl(comparisonOperatorWithIdenticalObjects.ts, 14, 18)) +>e : Symbol(B1.e, Decl(comparisonOperatorWithIdenticalObjects.ts, 14, 18)) >Object : Symbol(Object, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) public fn(b: string): string { ->fn : Symbol(fn, Decl(comparisonOperatorWithIdenticalObjects.ts, 15, 21)) +>fn : Symbol(B1.fn, Decl(comparisonOperatorWithIdenticalObjects.ts, 15, 21)) >b : Symbol(b, Decl(comparisonOperatorWithIdenticalObjects.ts, 16, 14)) return null; @@ -56,10 +56,10 @@ class Base { >Base : Symbol(Base, Decl(comparisonOperatorWithIdenticalObjects.ts, 19, 1)) private a: string; ->a : Symbol(a, Decl(comparisonOperatorWithIdenticalObjects.ts, 21, 12)) +>a : Symbol(Base.a, Decl(comparisonOperatorWithIdenticalObjects.ts, 21, 12)) private fn(b: string): string { ->fn : Symbol(fn, Decl(comparisonOperatorWithIdenticalObjects.ts, 22, 22)) +>fn : Symbol(Base.fn, Decl(comparisonOperatorWithIdenticalObjects.ts, 22, 22)) >b : Symbol(b, Decl(comparisonOperatorWithIdenticalObjects.ts, 23, 15)) return null; @@ -75,12 +75,12 @@ class B2 extends Base { } interface A3 { f(a: number): string; } >A3 : Symbol(A3, Decl(comparisonOperatorWithIdenticalObjects.ts, 28, 25)) ->f : Symbol(f, Decl(comparisonOperatorWithIdenticalObjects.ts, 30, 14)) +>f : Symbol(A3.f, Decl(comparisonOperatorWithIdenticalObjects.ts, 30, 14)) >a : Symbol(a, Decl(comparisonOperatorWithIdenticalObjects.ts, 30, 17)) interface B3 { f(a: number): string; } >B3 : Symbol(B3, Decl(comparisonOperatorWithIdenticalObjects.ts, 30, 38)) ->f : Symbol(f, Decl(comparisonOperatorWithIdenticalObjects.ts, 31, 14)) +>f : Symbol(B3.f, Decl(comparisonOperatorWithIdenticalObjects.ts, 31, 14)) >a : Symbol(a, Decl(comparisonOperatorWithIdenticalObjects.ts, 31, 17)) interface A4 { new (a: string): A1; } diff --git a/tests/baselines/reference/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.symbols b/tests/baselines/reference/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.symbols index ef92cdd676a..6dc1e9221f5 100644 --- a/tests/baselines/reference/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.symbols +++ b/tests/baselines/reference/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.symbols @@ -3,7 +3,7 @@ class Base { >Base : Symbol(Base, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 0, 0)) public a: string; ->a : Symbol(a, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 0, 12)) +>a : Symbol(Base.a, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 0, 12)) } class Derived extends Base { @@ -11,14 +11,14 @@ class Derived extends Base { >Base : Symbol(Base, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 0, 0)) public b: string; ->b : Symbol(b, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 4, 28)) +>b : Symbol(Derived.b, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 4, 28)) } class C { >C : Symbol(C, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 6, 1)) public c: string; ->c : Symbol(c, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 8, 9)) +>c : Symbol(C.c, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 8, 9)) } var a1: { fn(x: T): T }; diff --git a/tests/baselines/reference/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.symbols b/tests/baselines/reference/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.symbols index 08b23dac50a..444e2a06689 100644 --- a/tests/baselines/reference/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.symbols +++ b/tests/baselines/reference/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.symbols @@ -3,7 +3,7 @@ class Base { >Base : Symbol(Base, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 0, 0)) public a: string; ->a : Symbol(a, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 0, 12)) +>a : Symbol(Base.a, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 0, 12)) } class Derived extends Base { @@ -11,14 +11,14 @@ class Derived extends Base { >Base : Symbol(Base, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 0, 0)) public b: string; ->b : Symbol(b, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 4, 28)) +>b : Symbol(Derived.b, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 4, 28)) } class C { >C : Symbol(C, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 6, 1)) public c: string; ->c : Symbol(c, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 8, 9)) +>c : Symbol(C.c, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 8, 9)) } var a1: { new (x: T): T }; diff --git a/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnCallSignature.symbols b/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnCallSignature.symbols index b82a68af007..3d21bd632f2 100644 --- a/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnCallSignature.symbols +++ b/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnCallSignature.symbols @@ -3,7 +3,7 @@ class Base { >Base : Symbol(Base, Decl(comparisonOperatorWithSubtypeObjectOnCallSignature.ts, 0, 0)) public a: string; ->a : Symbol(a, Decl(comparisonOperatorWithSubtypeObjectOnCallSignature.ts, 0, 12)) +>a : Symbol(Base.a, Decl(comparisonOperatorWithSubtypeObjectOnCallSignature.ts, 0, 12)) } class Derived extends Base { @@ -11,7 +11,7 @@ class Derived extends Base { >Base : Symbol(Base, Decl(comparisonOperatorWithSubtypeObjectOnCallSignature.ts, 0, 0)) public b: string; ->b : Symbol(b, Decl(comparisonOperatorWithSubtypeObjectOnCallSignature.ts, 4, 28)) +>b : Symbol(Derived.b, Decl(comparisonOperatorWithSubtypeObjectOnCallSignature.ts, 4, 28)) } var a1: { fn(): void }; diff --git a/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnConstructorSignature.symbols b/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnConstructorSignature.symbols index 6dd08fc0529..02abd793abd 100644 --- a/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnConstructorSignature.symbols +++ b/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnConstructorSignature.symbols @@ -3,7 +3,7 @@ class Base { >Base : Symbol(Base, Decl(comparisonOperatorWithSubtypeObjectOnConstructorSignature.ts, 0, 0)) public a: string; ->a : Symbol(a, Decl(comparisonOperatorWithSubtypeObjectOnConstructorSignature.ts, 0, 12)) +>a : Symbol(Base.a, Decl(comparisonOperatorWithSubtypeObjectOnConstructorSignature.ts, 0, 12)) } class Derived extends Base { @@ -11,7 +11,7 @@ class Derived extends Base { >Base : Symbol(Base, Decl(comparisonOperatorWithSubtypeObjectOnConstructorSignature.ts, 0, 0)) public b: string; ->b : Symbol(b, Decl(comparisonOperatorWithSubtypeObjectOnConstructorSignature.ts, 4, 28)) +>b : Symbol(Derived.b, Decl(comparisonOperatorWithSubtypeObjectOnConstructorSignature.ts, 4, 28)) } var a1: { new (): Base }; diff --git a/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnIndexSignature.symbols b/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnIndexSignature.symbols index be0537baee4..18ed4369fd7 100644 --- a/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnIndexSignature.symbols +++ b/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnIndexSignature.symbols @@ -3,7 +3,7 @@ class Base { >Base : Symbol(Base, Decl(comparisonOperatorWithSubtypeObjectOnIndexSignature.ts, 0, 0)) public a: string; ->a : Symbol(a, Decl(comparisonOperatorWithSubtypeObjectOnIndexSignature.ts, 0, 12)) +>a : Symbol(Base.a, Decl(comparisonOperatorWithSubtypeObjectOnIndexSignature.ts, 0, 12)) } class Derived extends Base { @@ -11,7 +11,7 @@ class Derived extends Base { >Base : Symbol(Base, Decl(comparisonOperatorWithSubtypeObjectOnIndexSignature.ts, 0, 0)) public b: string; ->b : Symbol(b, Decl(comparisonOperatorWithSubtypeObjectOnIndexSignature.ts, 4, 28)) +>b : Symbol(Derived.b, Decl(comparisonOperatorWithSubtypeObjectOnIndexSignature.ts, 4, 28)) } var a1: { [a: string]: string }; diff --git a/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnInstantiatedCallSignature.symbols b/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnInstantiatedCallSignature.symbols index 635f926438f..742e8c9d4e6 100644 --- a/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnInstantiatedCallSignature.symbols +++ b/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnInstantiatedCallSignature.symbols @@ -3,7 +3,7 @@ class Base { >Base : Symbol(Base, Decl(comparisonOperatorWithSubtypeObjectOnInstantiatedCallSignature.ts, 0, 0)) public a: string; ->a : Symbol(a, Decl(comparisonOperatorWithSubtypeObjectOnInstantiatedCallSignature.ts, 0, 12)) +>a : Symbol(Base.a, Decl(comparisonOperatorWithSubtypeObjectOnInstantiatedCallSignature.ts, 0, 12)) } class Derived extends Base { @@ -11,7 +11,7 @@ class Derived extends Base { >Base : Symbol(Base, Decl(comparisonOperatorWithSubtypeObjectOnInstantiatedCallSignature.ts, 0, 0)) public b: string; ->b : Symbol(b, Decl(comparisonOperatorWithSubtypeObjectOnInstantiatedCallSignature.ts, 4, 28)) +>b : Symbol(Derived.b, Decl(comparisonOperatorWithSubtypeObjectOnInstantiatedCallSignature.ts, 4, 28)) } var a1: { fn(x: T): T }; diff --git a/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnInstantiatedConstructorSignature.symbols b/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnInstantiatedConstructorSignature.symbols index 11f28765873..ce49067a1a8 100644 --- a/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnInstantiatedConstructorSignature.symbols +++ b/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnInstantiatedConstructorSignature.symbols @@ -3,7 +3,7 @@ class Base { >Base : Symbol(Base, Decl(comparisonOperatorWithSubtypeObjectOnInstantiatedConstructorSignature.ts, 0, 0)) public a: string; ->a : Symbol(a, Decl(comparisonOperatorWithSubtypeObjectOnInstantiatedConstructorSignature.ts, 0, 12)) +>a : Symbol(Base.a, Decl(comparisonOperatorWithSubtypeObjectOnInstantiatedConstructorSignature.ts, 0, 12)) } class Derived extends Base { @@ -11,7 +11,7 @@ class Derived extends Base { >Base : Symbol(Base, Decl(comparisonOperatorWithSubtypeObjectOnInstantiatedConstructorSignature.ts, 0, 0)) public b: string; ->b : Symbol(b, Decl(comparisonOperatorWithSubtypeObjectOnInstantiatedConstructorSignature.ts, 4, 28)) +>b : Symbol(Derived.b, Decl(comparisonOperatorWithSubtypeObjectOnInstantiatedConstructorSignature.ts, 4, 28)) } var a1: { new (x: T): T }; diff --git a/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnOptionalProperty.symbols b/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnOptionalProperty.symbols index 6c6a3fa3ae2..fb85585852b 100644 --- a/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnOptionalProperty.symbols +++ b/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnOptionalProperty.symbols @@ -3,17 +3,17 @@ interface I { >I : Symbol(I, Decl(comparisonOperatorWithSubtypeObjectOnOptionalProperty.ts, 0, 0)) a: string; ->a : Symbol(a, Decl(comparisonOperatorWithSubtypeObjectOnOptionalProperty.ts, 0, 13)) +>a : Symbol(I.a, Decl(comparisonOperatorWithSubtypeObjectOnOptionalProperty.ts, 0, 13)) b?: number; ->b : Symbol(b, Decl(comparisonOperatorWithSubtypeObjectOnOptionalProperty.ts, 1, 14)) +>b : Symbol(I.b, Decl(comparisonOperatorWithSubtypeObjectOnOptionalProperty.ts, 1, 14)) } interface J { >J : Symbol(J, Decl(comparisonOperatorWithSubtypeObjectOnOptionalProperty.ts, 3, 1)) a: string; ->a : Symbol(a, Decl(comparisonOperatorWithSubtypeObjectOnOptionalProperty.ts, 5, 13)) +>a : Symbol(J.a, Decl(comparisonOperatorWithSubtypeObjectOnOptionalProperty.ts, 5, 13)) } var a: I; diff --git a/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnProperty.symbols b/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnProperty.symbols index 52d6e35d65e..96799744c00 100644 --- a/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnProperty.symbols +++ b/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnProperty.symbols @@ -3,7 +3,7 @@ class Base { >Base : Symbol(Base, Decl(comparisonOperatorWithSubtypeObjectOnProperty.ts, 0, 0)) public a: string; ->a : Symbol(a, Decl(comparisonOperatorWithSubtypeObjectOnProperty.ts, 0, 12)) +>a : Symbol(Base.a, Decl(comparisonOperatorWithSubtypeObjectOnProperty.ts, 0, 12)) } class Derived extends Base { @@ -11,18 +11,18 @@ class Derived extends Base { >Base : Symbol(Base, Decl(comparisonOperatorWithSubtypeObjectOnProperty.ts, 0, 0)) public b: string; ->b : Symbol(b, Decl(comparisonOperatorWithSubtypeObjectOnProperty.ts, 4, 28)) +>b : Symbol(Derived.b, Decl(comparisonOperatorWithSubtypeObjectOnProperty.ts, 4, 28)) } class A1 { >A1 : Symbol(A1, Decl(comparisonOperatorWithSubtypeObjectOnProperty.ts, 6, 1)) public a: Base; ->a : Symbol(a, Decl(comparisonOperatorWithSubtypeObjectOnProperty.ts, 8, 10)) +>a : Symbol(A1.a, Decl(comparisonOperatorWithSubtypeObjectOnProperty.ts, 8, 10)) >Base : Symbol(Base, Decl(comparisonOperatorWithSubtypeObjectOnProperty.ts, 0, 0)) public b: Base; ->b : Symbol(b, Decl(comparisonOperatorWithSubtypeObjectOnProperty.ts, 9, 19)) +>b : Symbol(A1.b, Decl(comparisonOperatorWithSubtypeObjectOnProperty.ts, 9, 19)) >Base : Symbol(Base, Decl(comparisonOperatorWithSubtypeObjectOnProperty.ts, 0, 0)) } @@ -30,11 +30,11 @@ class B1 { >B1 : Symbol(B1, Decl(comparisonOperatorWithSubtypeObjectOnProperty.ts, 11, 1)) public a: Base; ->a : Symbol(a, Decl(comparisonOperatorWithSubtypeObjectOnProperty.ts, 13, 10)) +>a : Symbol(B1.a, Decl(comparisonOperatorWithSubtypeObjectOnProperty.ts, 13, 10)) >Base : Symbol(Base, Decl(comparisonOperatorWithSubtypeObjectOnProperty.ts, 0, 0)) public b: Derived; ->b : Symbol(b, Decl(comparisonOperatorWithSubtypeObjectOnProperty.ts, 14, 19)) +>b : Symbol(B1.b, Decl(comparisonOperatorWithSubtypeObjectOnProperty.ts, 14, 19)) >Derived : Symbol(Derived, Decl(comparisonOperatorWithSubtypeObjectOnProperty.ts, 2, 1)) } @@ -42,7 +42,7 @@ class A2 { >A2 : Symbol(A2, Decl(comparisonOperatorWithSubtypeObjectOnProperty.ts, 16, 1)) private a; ->a : Symbol(a, Decl(comparisonOperatorWithSubtypeObjectOnProperty.ts, 18, 10)) +>a : Symbol(A2.a, Decl(comparisonOperatorWithSubtypeObjectOnProperty.ts, 18, 10)) } class B2 extends A2 { @@ -50,7 +50,7 @@ class B2 extends A2 { >A2 : Symbol(A2, Decl(comparisonOperatorWithSubtypeObjectOnProperty.ts, 16, 1)) private b; ->b : Symbol(b, Decl(comparisonOperatorWithSubtypeObjectOnProperty.ts, 22, 21)) +>b : Symbol(B2.b, Decl(comparisonOperatorWithSubtypeObjectOnProperty.ts, 22, 21)) } var a1: A1; diff --git a/tests/baselines/reference/compilerOptionsDeclarationAndNoEmit.symbols b/tests/baselines/reference/compilerOptionsDeclarationAndNoEmit.symbols new file mode 100644 index 00000000000..4448defa95e --- /dev/null +++ b/tests/baselines/reference/compilerOptionsDeclarationAndNoEmit.symbols @@ -0,0 +1,6 @@ +=== tests/cases/compiler/a.ts === + +class c { +>c : Symbol(c, Decl(a.ts, 0, 0)) +} + diff --git a/tests/baselines/reference/compilerOptionsDeclarationAndNoEmit.types b/tests/baselines/reference/compilerOptionsDeclarationAndNoEmit.types new file mode 100644 index 00000000000..6f5caf9d48b --- /dev/null +++ b/tests/baselines/reference/compilerOptionsDeclarationAndNoEmit.types @@ -0,0 +1,6 @@ +=== tests/cases/compiler/a.ts === + +class c { +>c : c +} + diff --git a/tests/baselines/reference/compilerOptionsOutAndNoEmit.symbols b/tests/baselines/reference/compilerOptionsOutAndNoEmit.symbols new file mode 100644 index 00000000000..4448defa95e --- /dev/null +++ b/tests/baselines/reference/compilerOptionsOutAndNoEmit.symbols @@ -0,0 +1,6 @@ +=== tests/cases/compiler/a.ts === + +class c { +>c : Symbol(c, Decl(a.ts, 0, 0)) +} + diff --git a/tests/baselines/reference/compilerOptionsOutAndNoEmit.types b/tests/baselines/reference/compilerOptionsOutAndNoEmit.types new file mode 100644 index 00000000000..6f5caf9d48b --- /dev/null +++ b/tests/baselines/reference/compilerOptionsOutAndNoEmit.types @@ -0,0 +1,6 @@ +=== tests/cases/compiler/a.ts === + +class c { +>c : c +} + diff --git a/tests/baselines/reference/compilerOptionsOutDirAndNoEmit.symbols b/tests/baselines/reference/compilerOptionsOutDirAndNoEmit.symbols new file mode 100644 index 00000000000..4448defa95e --- /dev/null +++ b/tests/baselines/reference/compilerOptionsOutDirAndNoEmit.symbols @@ -0,0 +1,6 @@ +=== tests/cases/compiler/a.ts === + +class c { +>c : Symbol(c, Decl(a.ts, 0, 0)) +} + diff --git a/tests/baselines/reference/compilerOptionsOutDirAndNoEmit.types b/tests/baselines/reference/compilerOptionsOutDirAndNoEmit.types new file mode 100644 index 00000000000..6f5caf9d48b --- /dev/null +++ b/tests/baselines/reference/compilerOptionsOutDirAndNoEmit.types @@ -0,0 +1,6 @@ +=== tests/cases/compiler/a.ts === + +class c { +>c : c +} + diff --git a/tests/baselines/reference/compilerOptionsOutFileAndNoEmit.symbols b/tests/baselines/reference/compilerOptionsOutFileAndNoEmit.symbols new file mode 100644 index 00000000000..4448defa95e --- /dev/null +++ b/tests/baselines/reference/compilerOptionsOutFileAndNoEmit.symbols @@ -0,0 +1,6 @@ +=== tests/cases/compiler/a.ts === + +class c { +>c : Symbol(c, Decl(a.ts, 0, 0)) +} + diff --git a/tests/baselines/reference/compilerOptionsOutFileAndNoEmit.types b/tests/baselines/reference/compilerOptionsOutFileAndNoEmit.types new file mode 100644 index 00000000000..6f5caf9d48b --- /dev/null +++ b/tests/baselines/reference/compilerOptionsOutFileAndNoEmit.types @@ -0,0 +1,6 @@ +=== tests/cases/compiler/a.ts === + +class c { +>c : c +} + diff --git a/tests/baselines/reference/complexClassRelationships.symbols b/tests/baselines/reference/complexClassRelationships.symbols index 533c5171cf8..9f6b3adf98d 100644 --- a/tests/baselines/reference/complexClassRelationships.symbols +++ b/tests/baselines/reference/complexClassRelationships.symbols @@ -37,7 +37,7 @@ class Base { >Base : Symbol(Base, Decl(complexClassRelationships.ts, 11, 1)) ownerCollection: BaseCollection; ->ownerCollection : Symbol(ownerCollection, Decl(complexClassRelationships.ts, 12, 12)) +>ownerCollection : Symbol(Base.ownerCollection, Decl(complexClassRelationships.ts, 12, 12)) >BaseCollection : Symbol(BaseCollection, Decl(complexClassRelationships.ts, 6, 1)) >Base : Symbol(Base, Decl(complexClassRelationships.ts, 11, 1)) } @@ -46,7 +46,7 @@ class Thing { >Thing : Symbol(Thing, Decl(complexClassRelationships.ts, 14, 1)) public get Components(): ComponentCollection { return null } ->Components : Symbol(Components, Decl(complexClassRelationships.ts, 16, 13)) +>Components : Symbol(Thing.Components, Decl(complexClassRelationships.ts, 16, 13)) >ComponentCollection : Symbol(ComponentCollection, Decl(complexClassRelationships.ts, 18, 1)) } @@ -70,22 +70,22 @@ class Foo { >Foo : Symbol(Foo, Decl(complexClassRelationships.ts, 24, 1)) public get prop1() { ->prop1 : Symbol(prop1, Decl(complexClassRelationships.ts, 26, 11)) +>prop1 : Symbol(Foo.prop1, Decl(complexClassRelationships.ts, 26, 11)) return new GenericType(this); >GenericType : Symbol(GenericType, Decl(complexClassRelationships.ts, 36, 1)) >this : Symbol(Foo, Decl(complexClassRelationships.ts, 24, 1)) } public populate() { ->populate : Symbol(populate, Decl(complexClassRelationships.ts, 29, 5)) +>populate : Symbol(Foo.populate, Decl(complexClassRelationships.ts, 29, 5)) this.prop2; ->this.prop2 : Symbol(prop2, Decl(complexClassRelationships.ts, 32, 5)) +>this.prop2 : Symbol(Foo.prop2, Decl(complexClassRelationships.ts, 32, 5)) >this : Symbol(Foo, Decl(complexClassRelationships.ts, 24, 1)) ->prop2 : Symbol(prop2, Decl(complexClassRelationships.ts, 32, 5)) +>prop2 : Symbol(Foo.prop2, Decl(complexClassRelationships.ts, 32, 5)) } public get prop2(): BaseCollection { ->prop2 : Symbol(prop2, Decl(complexClassRelationships.ts, 32, 5)) +>prop2 : Symbol(Foo.prop2, Decl(complexClassRelationships.ts, 32, 5)) >BaseCollection : Symbol(BaseCollection, Decl(complexClassRelationships.ts, 6, 1)) >Derived : Symbol(Derived, Decl(complexClassRelationships.ts, 0, 0)) @@ -111,7 +111,7 @@ class FooBase { >FooBase : Symbol(FooBase, Decl(complexClassRelationships.ts, 40, 1)) public populate() { ->populate : Symbol(populate, Decl(complexClassRelationships.ts, 42, 15)) +>populate : Symbol(FooBase.populate, Decl(complexClassRelationships.ts, 42, 15)) } } diff --git a/tests/baselines/reference/computedPropertyNames22_ES5.symbols b/tests/baselines/reference/computedPropertyNames22_ES5.symbols index a1e08e5f487..2e2b07473dd 100644 --- a/tests/baselines/reference/computedPropertyNames22_ES5.symbols +++ b/tests/baselines/reference/computedPropertyNames22_ES5.symbols @@ -3,15 +3,15 @@ class C { >C : Symbol(C, Decl(computedPropertyNames22_ES5.ts, 0, 0)) bar() { ->bar : Symbol(bar, Decl(computedPropertyNames22_ES5.ts, 0, 9)) +>bar : Symbol(C.bar, Decl(computedPropertyNames22_ES5.ts, 0, 9)) var obj = { >obj : Symbol(obj, Decl(computedPropertyNames22_ES5.ts, 2, 11)) [this.bar()]() { } ->this.bar : Symbol(bar, Decl(computedPropertyNames22_ES5.ts, 0, 9)) +>this.bar : Symbol(C.bar, Decl(computedPropertyNames22_ES5.ts, 0, 9)) >this : Symbol(C, Decl(computedPropertyNames22_ES5.ts, 0, 0)) ->bar : Symbol(bar, Decl(computedPropertyNames22_ES5.ts, 0, 9)) +>bar : Symbol(C.bar, Decl(computedPropertyNames22_ES5.ts, 0, 9)) }; return 0; diff --git a/tests/baselines/reference/computedPropertyNames22_ES6.symbols b/tests/baselines/reference/computedPropertyNames22_ES6.symbols index 5940bfb4cfb..39e3acb265c 100644 --- a/tests/baselines/reference/computedPropertyNames22_ES6.symbols +++ b/tests/baselines/reference/computedPropertyNames22_ES6.symbols @@ -3,15 +3,15 @@ class C { >C : Symbol(C, Decl(computedPropertyNames22_ES6.ts, 0, 0)) bar() { ->bar : Symbol(bar, Decl(computedPropertyNames22_ES6.ts, 0, 9)) +>bar : Symbol(C.bar, Decl(computedPropertyNames22_ES6.ts, 0, 9)) var obj = { >obj : Symbol(obj, Decl(computedPropertyNames22_ES6.ts, 2, 11)) [this.bar()]() { } ->this.bar : Symbol(bar, Decl(computedPropertyNames22_ES6.ts, 0, 9)) +>this.bar : Symbol(C.bar, Decl(computedPropertyNames22_ES6.ts, 0, 9)) >this : Symbol(C, Decl(computedPropertyNames22_ES6.ts, 0, 0)) ->bar : Symbol(bar, Decl(computedPropertyNames22_ES6.ts, 0, 9)) +>bar : Symbol(C.bar, Decl(computedPropertyNames22_ES6.ts, 0, 9)) }; return 0; diff --git a/tests/baselines/reference/computedPropertyNames25_ES5.symbols b/tests/baselines/reference/computedPropertyNames25_ES5.symbols index e11753857cc..896ba223099 100644 --- a/tests/baselines/reference/computedPropertyNames25_ES5.symbols +++ b/tests/baselines/reference/computedPropertyNames25_ES5.symbols @@ -3,7 +3,7 @@ class Base { >Base : Symbol(Base, Decl(computedPropertyNames25_ES5.ts, 0, 0)) bar() { ->bar : Symbol(bar, Decl(computedPropertyNames25_ES5.ts, 0, 12)) +>bar : Symbol(Base.bar, Decl(computedPropertyNames25_ES5.ts, 0, 12)) return 0; } @@ -13,7 +13,7 @@ class C extends Base { >Base : Symbol(Base, Decl(computedPropertyNames25_ES5.ts, 0, 0)) foo() { ->foo : Symbol(foo, Decl(computedPropertyNames25_ES5.ts, 5, 22)) +>foo : Symbol(C.foo, Decl(computedPropertyNames25_ES5.ts, 5, 22)) var obj = { >obj : Symbol(obj, Decl(computedPropertyNames25_ES5.ts, 7, 11)) diff --git a/tests/baselines/reference/computedPropertyNames25_ES6.symbols b/tests/baselines/reference/computedPropertyNames25_ES6.symbols index 8eb7393c6ac..dcb6177b0ea 100644 --- a/tests/baselines/reference/computedPropertyNames25_ES6.symbols +++ b/tests/baselines/reference/computedPropertyNames25_ES6.symbols @@ -3,7 +3,7 @@ class Base { >Base : Symbol(Base, Decl(computedPropertyNames25_ES6.ts, 0, 0)) bar() { ->bar : Symbol(bar, Decl(computedPropertyNames25_ES6.ts, 0, 12)) +>bar : Symbol(Base.bar, Decl(computedPropertyNames25_ES6.ts, 0, 12)) return 0; } @@ -13,7 +13,7 @@ class C extends Base { >Base : Symbol(Base, Decl(computedPropertyNames25_ES6.ts, 0, 0)) foo() { ->foo : Symbol(foo, Decl(computedPropertyNames25_ES6.ts, 5, 22)) +>foo : Symbol(C.foo, Decl(computedPropertyNames25_ES6.ts, 5, 22)) var obj = { >obj : Symbol(obj, Decl(computedPropertyNames25_ES6.ts, 7, 11)) diff --git a/tests/baselines/reference/computedPropertyNames29_ES5.symbols b/tests/baselines/reference/computedPropertyNames29_ES5.symbols index c33a7390ce8..b78b4d0955c 100644 --- a/tests/baselines/reference/computedPropertyNames29_ES5.symbols +++ b/tests/baselines/reference/computedPropertyNames29_ES5.symbols @@ -3,16 +3,16 @@ class C { >C : Symbol(C, Decl(computedPropertyNames29_ES5.ts, 0, 0)) bar() { ->bar : Symbol(bar, Decl(computedPropertyNames29_ES5.ts, 0, 9)) +>bar : Symbol(C.bar, Decl(computedPropertyNames29_ES5.ts, 0, 9)) () => { var obj = { >obj : Symbol(obj, Decl(computedPropertyNames29_ES5.ts, 3, 15)) [this.bar()]() { } // needs capture ->this.bar : Symbol(bar, Decl(computedPropertyNames29_ES5.ts, 0, 9)) +>this.bar : Symbol(C.bar, Decl(computedPropertyNames29_ES5.ts, 0, 9)) >this : Symbol(C, Decl(computedPropertyNames29_ES5.ts, 0, 0)) ->bar : Symbol(bar, Decl(computedPropertyNames29_ES5.ts, 0, 9)) +>bar : Symbol(C.bar, Decl(computedPropertyNames29_ES5.ts, 0, 9)) }; } diff --git a/tests/baselines/reference/computedPropertyNames29_ES6.symbols b/tests/baselines/reference/computedPropertyNames29_ES6.symbols index 41631ea63bb..fe54d1a0325 100644 --- a/tests/baselines/reference/computedPropertyNames29_ES6.symbols +++ b/tests/baselines/reference/computedPropertyNames29_ES6.symbols @@ -3,16 +3,16 @@ class C { >C : Symbol(C, Decl(computedPropertyNames29_ES6.ts, 0, 0)) bar() { ->bar : Symbol(bar, Decl(computedPropertyNames29_ES6.ts, 0, 9)) +>bar : Symbol(C.bar, Decl(computedPropertyNames29_ES6.ts, 0, 9)) () => { var obj = { >obj : Symbol(obj, Decl(computedPropertyNames29_ES6.ts, 3, 15)) [this.bar()]() { } // needs capture ->this.bar : Symbol(bar, Decl(computedPropertyNames29_ES6.ts, 0, 9)) +>this.bar : Symbol(C.bar, Decl(computedPropertyNames29_ES6.ts, 0, 9)) >this : Symbol(C, Decl(computedPropertyNames29_ES6.ts, 0, 0)) ->bar : Symbol(bar, Decl(computedPropertyNames29_ES6.ts, 0, 9)) +>bar : Symbol(C.bar, Decl(computedPropertyNames29_ES6.ts, 0, 9)) }; } diff --git a/tests/baselines/reference/computedPropertyNames31_ES5.symbols b/tests/baselines/reference/computedPropertyNames31_ES5.symbols index 82a6acb286c..9cb1b0184f7 100644 --- a/tests/baselines/reference/computedPropertyNames31_ES5.symbols +++ b/tests/baselines/reference/computedPropertyNames31_ES5.symbols @@ -3,7 +3,7 @@ class Base { >Base : Symbol(Base, Decl(computedPropertyNames31_ES5.ts, 0, 0)) bar() { ->bar : Symbol(bar, Decl(computedPropertyNames31_ES5.ts, 0, 12)) +>bar : Symbol(Base.bar, Decl(computedPropertyNames31_ES5.ts, 0, 12)) return 0; } @@ -13,7 +13,7 @@ class C extends Base { >Base : Symbol(Base, Decl(computedPropertyNames31_ES5.ts, 0, 0)) foo() { ->foo : Symbol(foo, Decl(computedPropertyNames31_ES5.ts, 5, 22)) +>foo : Symbol(C.foo, Decl(computedPropertyNames31_ES5.ts, 5, 22)) () => { var obj = { diff --git a/tests/baselines/reference/computedPropertyNames31_ES6.symbols b/tests/baselines/reference/computedPropertyNames31_ES6.symbols index 778293bbb88..19cc6cd1bcd 100644 --- a/tests/baselines/reference/computedPropertyNames31_ES6.symbols +++ b/tests/baselines/reference/computedPropertyNames31_ES6.symbols @@ -3,7 +3,7 @@ class Base { >Base : Symbol(Base, Decl(computedPropertyNames31_ES6.ts, 0, 0)) bar() { ->bar : Symbol(bar, Decl(computedPropertyNames31_ES6.ts, 0, 12)) +>bar : Symbol(Base.bar, Decl(computedPropertyNames31_ES6.ts, 0, 12)) return 0; } @@ -13,7 +13,7 @@ class C extends Base { >Base : Symbol(Base, Decl(computedPropertyNames31_ES6.ts, 0, 0)) foo() { ->foo : Symbol(foo, Decl(computedPropertyNames31_ES6.ts, 5, 22)) +>foo : Symbol(C.foo, Decl(computedPropertyNames31_ES6.ts, 5, 22)) () => { var obj = { diff --git a/tests/baselines/reference/computedPropertyNames33_ES5.symbols b/tests/baselines/reference/computedPropertyNames33_ES5.symbols index ae6dd01e7bc..90734fd07a0 100644 --- a/tests/baselines/reference/computedPropertyNames33_ES5.symbols +++ b/tests/baselines/reference/computedPropertyNames33_ES5.symbols @@ -8,7 +8,7 @@ class C { >T : Symbol(T, Decl(computedPropertyNames33_ES5.ts, 1, 8)) bar() { ->bar : Symbol(bar, Decl(computedPropertyNames33_ES5.ts, 1, 12)) +>bar : Symbol(C.bar, Decl(computedPropertyNames33_ES5.ts, 1, 12)) var obj = { >obj : Symbol(obj, Decl(computedPropertyNames33_ES5.ts, 3, 11)) diff --git a/tests/baselines/reference/computedPropertyNames33_ES6.symbols b/tests/baselines/reference/computedPropertyNames33_ES6.symbols index cf0b3abde96..f51764af561 100644 --- a/tests/baselines/reference/computedPropertyNames33_ES6.symbols +++ b/tests/baselines/reference/computedPropertyNames33_ES6.symbols @@ -8,7 +8,7 @@ class C { >T : Symbol(T, Decl(computedPropertyNames33_ES6.ts, 1, 8)) bar() { ->bar : Symbol(bar, Decl(computedPropertyNames33_ES6.ts, 1, 12)) +>bar : Symbol(C.bar, Decl(computedPropertyNames33_ES6.ts, 1, 12)) var obj = { >obj : Symbol(obj, Decl(computedPropertyNames33_ES6.ts, 3, 11)) diff --git a/tests/baselines/reference/computedPropertyNames37_ES5.symbols b/tests/baselines/reference/computedPropertyNames37_ES5.symbols index 7932b2c8fdc..62e92ee6efc 100644 --- a/tests/baselines/reference/computedPropertyNames37_ES5.symbols +++ b/tests/baselines/reference/computedPropertyNames37_ES5.symbols @@ -1,12 +1,12 @@ === tests/cases/conformance/es6/computedProperties/computedPropertyNames37_ES5.ts === class Foo { x } >Foo : Symbol(Foo, Decl(computedPropertyNames37_ES5.ts, 0, 0)) ->x : Symbol(x, Decl(computedPropertyNames37_ES5.ts, 0, 11)) +>x : Symbol(Foo.x, Decl(computedPropertyNames37_ES5.ts, 0, 11)) class Foo2 { x; y } >Foo2 : Symbol(Foo2, Decl(computedPropertyNames37_ES5.ts, 0, 15)) ->x : Symbol(x, Decl(computedPropertyNames37_ES5.ts, 1, 12)) ->y : Symbol(y, Decl(computedPropertyNames37_ES5.ts, 1, 15)) +>x : Symbol(Foo2.x, Decl(computedPropertyNames37_ES5.ts, 1, 12)) +>y : Symbol(Foo2.y, Decl(computedPropertyNames37_ES5.ts, 1, 15)) class C { >C : Symbol(C, Decl(computedPropertyNames37_ES5.ts, 1, 19)) diff --git a/tests/baselines/reference/computedPropertyNames37_ES6.symbols b/tests/baselines/reference/computedPropertyNames37_ES6.symbols index f4439ef4f92..7221614581a 100644 --- a/tests/baselines/reference/computedPropertyNames37_ES6.symbols +++ b/tests/baselines/reference/computedPropertyNames37_ES6.symbols @@ -1,12 +1,12 @@ === tests/cases/conformance/es6/computedProperties/computedPropertyNames37_ES6.ts === class Foo { x } >Foo : Symbol(Foo, Decl(computedPropertyNames37_ES6.ts, 0, 0)) ->x : Symbol(x, Decl(computedPropertyNames37_ES6.ts, 0, 11)) +>x : Symbol(Foo.x, Decl(computedPropertyNames37_ES6.ts, 0, 11)) class Foo2 { x; y } >Foo2 : Symbol(Foo2, Decl(computedPropertyNames37_ES6.ts, 0, 15)) ->x : Symbol(x, Decl(computedPropertyNames37_ES6.ts, 1, 12)) ->y : Symbol(y, Decl(computedPropertyNames37_ES6.ts, 1, 15)) +>x : Symbol(Foo2.x, Decl(computedPropertyNames37_ES6.ts, 1, 12)) +>y : Symbol(Foo2.y, Decl(computedPropertyNames37_ES6.ts, 1, 15)) class C { >C : Symbol(C, Decl(computedPropertyNames37_ES6.ts, 1, 19)) diff --git a/tests/baselines/reference/computedPropertyNames41_ES5.symbols b/tests/baselines/reference/computedPropertyNames41_ES5.symbols index e1438568f24..3db1cf16a2b 100644 --- a/tests/baselines/reference/computedPropertyNames41_ES5.symbols +++ b/tests/baselines/reference/computedPropertyNames41_ES5.symbols @@ -1,12 +1,12 @@ === tests/cases/conformance/es6/computedProperties/computedPropertyNames41_ES5.ts === class Foo { x } >Foo : Symbol(Foo, Decl(computedPropertyNames41_ES5.ts, 0, 0)) ->x : Symbol(x, Decl(computedPropertyNames41_ES5.ts, 0, 11)) +>x : Symbol(Foo.x, Decl(computedPropertyNames41_ES5.ts, 0, 11)) class Foo2 { x; y } >Foo2 : Symbol(Foo2, Decl(computedPropertyNames41_ES5.ts, 0, 15)) ->x : Symbol(x, Decl(computedPropertyNames41_ES5.ts, 1, 12)) ->y : Symbol(y, Decl(computedPropertyNames41_ES5.ts, 1, 15)) +>x : Symbol(Foo2.x, Decl(computedPropertyNames41_ES5.ts, 1, 12)) +>y : Symbol(Foo2.y, Decl(computedPropertyNames41_ES5.ts, 1, 15)) class C { >C : Symbol(C, Decl(computedPropertyNames41_ES5.ts, 1, 19)) diff --git a/tests/baselines/reference/computedPropertyNames41_ES6.symbols b/tests/baselines/reference/computedPropertyNames41_ES6.symbols index 3f4a7dff621..bedbf7953f7 100644 --- a/tests/baselines/reference/computedPropertyNames41_ES6.symbols +++ b/tests/baselines/reference/computedPropertyNames41_ES6.symbols @@ -1,12 +1,12 @@ === tests/cases/conformance/es6/computedProperties/computedPropertyNames41_ES6.ts === class Foo { x } >Foo : Symbol(Foo, Decl(computedPropertyNames41_ES6.ts, 0, 0)) ->x : Symbol(x, Decl(computedPropertyNames41_ES6.ts, 0, 11)) +>x : Symbol(Foo.x, Decl(computedPropertyNames41_ES6.ts, 0, 11)) class Foo2 { x; y } >Foo2 : Symbol(Foo2, Decl(computedPropertyNames41_ES6.ts, 0, 15)) ->x : Symbol(x, Decl(computedPropertyNames41_ES6.ts, 1, 12)) ->y : Symbol(y, Decl(computedPropertyNames41_ES6.ts, 1, 15)) +>x : Symbol(Foo2.x, Decl(computedPropertyNames41_ES6.ts, 1, 12)) +>y : Symbol(Foo2.y, Decl(computedPropertyNames41_ES6.ts, 1, 15)) class C { >C : Symbol(C, Decl(computedPropertyNames41_ES6.ts, 1, 19)) diff --git a/tests/baselines/reference/computedPropertyNamesContextualType1_ES6.symbols b/tests/baselines/reference/computedPropertyNamesContextualType1_ES6.symbols index 56da1f91a5e..ef5d519c3a0 100644 --- a/tests/baselines/reference/computedPropertyNamesContextualType1_ES6.symbols +++ b/tests/baselines/reference/computedPropertyNamesContextualType1_ES6.symbols @@ -17,13 +17,13 @@ var o: I = { ["" + 0](y) { return y.length; }, >y : Symbol(y, Decl(computedPropertyNamesContextualType1_ES6.ts, 6, 13)) ->y.length : Symbol(String.length, Decl(lib.d.ts, --, --)) +>y.length : Symbol(String.length, Decl(lib.es5.d.ts, --, --)) >y : Symbol(y, Decl(computedPropertyNamesContextualType1_ES6.ts, 6, 13)) ->length : Symbol(String.length, Decl(lib.d.ts, --, --)) +>length : Symbol(String.length, Decl(lib.es5.d.ts, --, --)) ["" + 1]: y => y.length >y : Symbol(y, Decl(computedPropertyNamesContextualType1_ES6.ts, 7, 13)) ->y.length : Symbol(String.length, Decl(lib.d.ts, --, --)) +>y.length : Symbol(String.length, Decl(lib.es5.d.ts, --, --)) >y : Symbol(y, Decl(computedPropertyNamesContextualType1_ES6.ts, 7, 13)) ->length : Symbol(String.length, Decl(lib.d.ts, --, --)) +>length : Symbol(String.length, Decl(lib.es5.d.ts, --, --)) } diff --git a/tests/baselines/reference/computedPropertyNamesContextualType2_ES6.symbols b/tests/baselines/reference/computedPropertyNamesContextualType2_ES6.symbols index 9412a9c8c34..d8cab4c4a52 100644 --- a/tests/baselines/reference/computedPropertyNamesContextualType2_ES6.symbols +++ b/tests/baselines/reference/computedPropertyNamesContextualType2_ES6.symbols @@ -17,13 +17,13 @@ var o: I = { [+"foo"](y) { return y.length; }, >y : Symbol(y, Decl(computedPropertyNamesContextualType2_ES6.ts, 6, 13)) ->y.length : Symbol(String.length, Decl(lib.d.ts, --, --)) +>y.length : Symbol(String.length, Decl(lib.es5.d.ts, --, --)) >y : Symbol(y, Decl(computedPropertyNamesContextualType2_ES6.ts, 6, 13)) ->length : Symbol(String.length, Decl(lib.d.ts, --, --)) +>length : Symbol(String.length, Decl(lib.es5.d.ts, --, --)) [+"bar"]: y => y.length >y : Symbol(y, Decl(computedPropertyNamesContextualType2_ES6.ts, 7, 13)) ->y.length : Symbol(String.length, Decl(lib.d.ts, --, --)) +>y.length : Symbol(String.length, Decl(lib.es5.d.ts, --, --)) >y : Symbol(y, Decl(computedPropertyNamesContextualType2_ES6.ts, 7, 13)) ->length : Symbol(String.length, Decl(lib.d.ts, --, --)) +>length : Symbol(String.length, Decl(lib.es5.d.ts, --, --)) } diff --git a/tests/baselines/reference/computedPropertyNamesContextualType3_ES6.symbols b/tests/baselines/reference/computedPropertyNamesContextualType3_ES6.symbols index 0b53cf3bfe4..deea9bff3df 100644 --- a/tests/baselines/reference/computedPropertyNamesContextualType3_ES6.symbols +++ b/tests/baselines/reference/computedPropertyNamesContextualType3_ES6.symbols @@ -13,13 +13,13 @@ var o: I = { [+"foo"](y) { return y.length; }, >y : Symbol(y, Decl(computedPropertyNamesContextualType3_ES6.ts, 5, 13)) ->y.length : Symbol(String.length, Decl(lib.d.ts, --, --)) +>y.length : Symbol(String.length, Decl(lib.es5.d.ts, --, --)) >y : Symbol(y, Decl(computedPropertyNamesContextualType3_ES6.ts, 5, 13)) ->length : Symbol(String.length, Decl(lib.d.ts, --, --)) +>length : Symbol(String.length, Decl(lib.es5.d.ts, --, --)) [+"bar"]: y => y.length >y : Symbol(y, Decl(computedPropertyNamesContextualType3_ES6.ts, 6, 13)) ->y.length : Symbol(String.length, Decl(lib.d.ts, --, --)) +>y.length : Symbol(String.length, Decl(lib.es5.d.ts, --, --)) >y : Symbol(y, Decl(computedPropertyNamesContextualType3_ES6.ts, 6, 13)) ->length : Symbol(String.length, Decl(lib.d.ts, --, --)) +>length : Symbol(String.length, Decl(lib.es5.d.ts, --, --)) } diff --git a/tests/baselines/reference/conditionalOperatorConditionIsObjectType.symbols b/tests/baselines/reference/conditionalOperatorConditionIsObjectType.symbols index 0867a708770..2c000f17bf6 100644 --- a/tests/baselines/reference/conditionalOperatorConditionIsObjectType.symbols +++ b/tests/baselines/reference/conditionalOperatorConditionIsObjectType.symbols @@ -120,7 +120,7 @@ foo() ? exprAny1 : exprAny2; >exprAny2 : Symbol(exprAny2, Decl(conditionalOperatorConditionIsObjectType.ts, 9, 3)) new Date() ? exprBoolean1 : exprBoolean2; ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >exprBoolean1 : Symbol(exprBoolean1, Decl(conditionalOperatorConditionIsObjectType.ts, 4, 3)) >exprBoolean2 : Symbol(exprBoolean2, Decl(conditionalOperatorConditionIsObjectType.ts, 10, 3)) @@ -144,7 +144,7 @@ condObject.valueOf() ? exprIsObject1 : exprIsObject2; >exprIsObject2 : Symbol(exprIsObject2, Decl(conditionalOperatorConditionIsObjectType.ts, 13, 3)) new Date() ? exprString1 : exprBoolean1; // union ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >exprString1 : Symbol(exprString1, Decl(conditionalOperatorConditionIsObjectType.ts, 6, 3)) >exprBoolean1 : Symbol(exprBoolean1, Decl(conditionalOperatorConditionIsObjectType.ts, 4, 3)) @@ -237,7 +237,7 @@ var resultIsAny3 = foo() ? exprAny1 : exprAny2; var resultIsBoolean3 = new Date() ? exprBoolean1 : exprBoolean2; >resultIsBoolean3 : Symbol(resultIsBoolean3, Decl(conditionalOperatorConditionIsObjectType.ts, 58, 3)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >exprBoolean1 : Symbol(exprBoolean1, Decl(conditionalOperatorConditionIsObjectType.ts, 4, 3)) >exprBoolean2 : Symbol(exprBoolean2, Decl(conditionalOperatorConditionIsObjectType.ts, 10, 3)) diff --git a/tests/baselines/reference/conditionalOperatorWithIdenticalBCT.symbols b/tests/baselines/reference/conditionalOperatorWithIdenticalBCT.symbols index e4c2e43013d..0453539b1aa 100644 --- a/tests/baselines/reference/conditionalOperatorWithIdenticalBCT.symbols +++ b/tests/baselines/reference/conditionalOperatorWithIdenticalBCT.symbols @@ -2,19 +2,19 @@ //Cond ? Expr1 : Expr2, Expr1 and Expr2 have identical best common type class X { propertyX: any; propertyX1: number; propertyX2: string }; >X : Symbol(X, Decl(conditionalOperatorWithIdenticalBCT.ts, 0, 0)) ->propertyX : Symbol(propertyX, Decl(conditionalOperatorWithIdenticalBCT.ts, 1, 9)) ->propertyX1 : Symbol(propertyX1, Decl(conditionalOperatorWithIdenticalBCT.ts, 1, 25)) ->propertyX2 : Symbol(propertyX2, Decl(conditionalOperatorWithIdenticalBCT.ts, 1, 45)) +>propertyX : Symbol(X.propertyX, Decl(conditionalOperatorWithIdenticalBCT.ts, 1, 9)) +>propertyX1 : Symbol(X.propertyX1, Decl(conditionalOperatorWithIdenticalBCT.ts, 1, 25)) +>propertyX2 : Symbol(X.propertyX2, Decl(conditionalOperatorWithIdenticalBCT.ts, 1, 45)) class A extends X { propertyA: number }; >A : Symbol(A, Decl(conditionalOperatorWithIdenticalBCT.ts, 1, 67)) >X : Symbol(X, Decl(conditionalOperatorWithIdenticalBCT.ts, 0, 0)) ->propertyA : Symbol(propertyA, Decl(conditionalOperatorWithIdenticalBCT.ts, 2, 19)) +>propertyA : Symbol(A.propertyA, Decl(conditionalOperatorWithIdenticalBCT.ts, 2, 19)) class B extends X { propertyB: string }; >B : Symbol(B, Decl(conditionalOperatorWithIdenticalBCT.ts, 2, 40)) >X : Symbol(X, Decl(conditionalOperatorWithIdenticalBCT.ts, 0, 0)) ->propertyB : Symbol(propertyB, Decl(conditionalOperatorWithIdenticalBCT.ts, 3, 19)) +>propertyB : Symbol(B.propertyB, Decl(conditionalOperatorWithIdenticalBCT.ts, 3, 19)) var x: X; >x : Symbol(x, Decl(conditionalOperatorWithIdenticalBCT.ts, 5, 3)) diff --git a/tests/baselines/reference/constDeclarationShadowedByVarDeclaration3.symbols b/tests/baselines/reference/constDeclarationShadowedByVarDeclaration3.symbols index cca4cb6e12c..9867f80ba40 100644 --- a/tests/baselines/reference/constDeclarationShadowedByVarDeclaration3.symbols +++ b/tests/baselines/reference/constDeclarationShadowedByVarDeclaration3.symbols @@ -4,20 +4,20 @@ class Rule { >Rule : Symbol(Rule, Decl(constDeclarationShadowedByVarDeclaration3.ts, 0, 0)) public regex: RegExp = new RegExp(''); ->regex : Symbol(regex, Decl(constDeclarationShadowedByVarDeclaration3.ts, 1, 12)) +>regex : Symbol(Rule.regex, Decl(constDeclarationShadowedByVarDeclaration3.ts, 1, 12)) >RegExp : Symbol(RegExp, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >RegExp : Symbol(RegExp, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) public name: string = ''; ->name : Symbol(name, Decl(constDeclarationShadowedByVarDeclaration3.ts, 2, 42)) +>name : Symbol(Rule.name, Decl(constDeclarationShadowedByVarDeclaration3.ts, 2, 42)) constructor(name: string) { >name : Symbol(name, Decl(constDeclarationShadowedByVarDeclaration3.ts, 5, 16)) this.name = name; ->this.name : Symbol(name, Decl(constDeclarationShadowedByVarDeclaration3.ts, 2, 42)) +>this.name : Symbol(Rule.name, Decl(constDeclarationShadowedByVarDeclaration3.ts, 2, 42)) >this : Symbol(Rule, Decl(constDeclarationShadowedByVarDeclaration3.ts, 0, 0)) ->name : Symbol(name, Decl(constDeclarationShadowedByVarDeclaration3.ts, 2, 42)) +>name : Symbol(Rule.name, Decl(constDeclarationShadowedByVarDeclaration3.ts, 2, 42)) >name : Symbol(name, Decl(constDeclarationShadowedByVarDeclaration3.ts, 5, 16)) } } diff --git a/tests/baselines/reference/constIndexedAccess.symbols b/tests/baselines/reference/constIndexedAccess.symbols index 2ccb7f11686..f7ce6b78c2d 100644 --- a/tests/baselines/reference/constIndexedAccess.symbols +++ b/tests/baselines/reference/constIndexedAccess.symbols @@ -24,12 +24,12 @@ let test: indexAccess; let s = test[0]; >s : Symbol(s, Decl(constIndexedAccess.ts, 13, 3)) >test : Symbol(test, Decl(constIndexedAccess.ts, 11, 3)) ->0 : Symbol(indexAccess.0, Decl(constIndexedAccess.ts, 6, 23)) +>0 : Symbol(indexAccess[0], Decl(constIndexedAccess.ts, 6, 23)) let n = test[1]; >n : Symbol(n, Decl(constIndexedAccess.ts, 14, 3)) >test : Symbol(test, Decl(constIndexedAccess.ts, 11, 3)) ->1 : Symbol(indexAccess.1, Decl(constIndexedAccess.ts, 7, 14)) +>1 : Symbol(indexAccess[1], Decl(constIndexedAccess.ts, 7, 14)) let s1 = test[numbers.zero]; >s1 : Symbol(s1, Decl(constIndexedAccess.ts, 16, 3)) diff --git a/tests/baselines/reference/constantOverloadFunction.symbols b/tests/baselines/reference/constantOverloadFunction.symbols index 60234623ed6..6c894602f71 100644 --- a/tests/baselines/reference/constantOverloadFunction.symbols +++ b/tests/baselines/reference/constantOverloadFunction.symbols @@ -1,22 +1,22 @@ === tests/cases/compiler/constantOverloadFunction.ts === class Base { foo() { } } >Base : Symbol(Base, Decl(constantOverloadFunction.ts, 0, 0)) ->foo : Symbol(foo, Decl(constantOverloadFunction.ts, 0, 12)) +>foo : Symbol(Base.foo, Decl(constantOverloadFunction.ts, 0, 12)) class Derived1 extends Base { bar() { } } >Derived1 : Symbol(Derived1, Decl(constantOverloadFunction.ts, 0, 24)) >Base : Symbol(Base, Decl(constantOverloadFunction.ts, 0, 0)) ->bar : Symbol(bar, Decl(constantOverloadFunction.ts, 1, 29)) +>bar : Symbol(Derived1.bar, Decl(constantOverloadFunction.ts, 1, 29)) class Derived2 extends Base { baz() { } } >Derived2 : Symbol(Derived2, Decl(constantOverloadFunction.ts, 1, 41)) >Base : Symbol(Base, Decl(constantOverloadFunction.ts, 0, 0)) ->baz : Symbol(baz, Decl(constantOverloadFunction.ts, 2, 29)) +>baz : Symbol(Derived2.baz, Decl(constantOverloadFunction.ts, 2, 29)) class Derived3 extends Base { biz() { } } >Derived3 : Symbol(Derived3, Decl(constantOverloadFunction.ts, 2, 41)) >Base : Symbol(Base, Decl(constantOverloadFunction.ts, 0, 0)) ->biz : Symbol(biz, Decl(constantOverloadFunction.ts, 3, 29)) +>biz : Symbol(Derived3.biz, Decl(constantOverloadFunction.ts, 3, 29)) function foo(tagName: 'canvas'): Derived1; >foo : Symbol(foo, Decl(constantOverloadFunction.ts, 3, 41), Decl(constantOverloadFunction.ts, 5, 42), Decl(constantOverloadFunction.ts, 6, 40), Decl(constantOverloadFunction.ts, 7, 40), Decl(constantOverloadFunction.ts, 8, 36)) diff --git a/tests/baselines/reference/constantOverloadFunctionNoSubtypeError.symbols b/tests/baselines/reference/constantOverloadFunctionNoSubtypeError.symbols index 3a604e4b30e..a978214d4c3 100644 --- a/tests/baselines/reference/constantOverloadFunctionNoSubtypeError.symbols +++ b/tests/baselines/reference/constantOverloadFunctionNoSubtypeError.symbols @@ -1,22 +1,22 @@ === tests/cases/compiler/constantOverloadFunctionNoSubtypeError.ts === class Base { foo() { } } >Base : Symbol(Base, Decl(constantOverloadFunctionNoSubtypeError.ts, 0, 0)) ->foo : Symbol(foo, Decl(constantOverloadFunctionNoSubtypeError.ts, 0, 12)) +>foo : Symbol(Base.foo, Decl(constantOverloadFunctionNoSubtypeError.ts, 0, 12)) class Derived1 extends Base { bar() { } } >Derived1 : Symbol(Derived1, Decl(constantOverloadFunctionNoSubtypeError.ts, 0, 24)) >Base : Symbol(Base, Decl(constantOverloadFunctionNoSubtypeError.ts, 0, 0)) ->bar : Symbol(bar, Decl(constantOverloadFunctionNoSubtypeError.ts, 1, 29)) +>bar : Symbol(Derived1.bar, Decl(constantOverloadFunctionNoSubtypeError.ts, 1, 29)) class Derived2 extends Base { baz() { } } >Derived2 : Symbol(Derived2, Decl(constantOverloadFunctionNoSubtypeError.ts, 1, 41)) >Base : Symbol(Base, Decl(constantOverloadFunctionNoSubtypeError.ts, 0, 0)) ->baz : Symbol(baz, Decl(constantOverloadFunctionNoSubtypeError.ts, 2, 29)) +>baz : Symbol(Derived2.baz, Decl(constantOverloadFunctionNoSubtypeError.ts, 2, 29)) class Derived3 extends Base { biz() { } } >Derived3 : Symbol(Derived3, Decl(constantOverloadFunctionNoSubtypeError.ts, 2, 41)) >Base : Symbol(Base, Decl(constantOverloadFunctionNoSubtypeError.ts, 0, 0)) ->biz : Symbol(biz, Decl(constantOverloadFunctionNoSubtypeError.ts, 3, 29)) +>biz : Symbol(Derived3.biz, Decl(constantOverloadFunctionNoSubtypeError.ts, 3, 29)) function foo(tagName: 'canvas'): Derived3; >foo : Symbol(foo, Decl(constantOverloadFunctionNoSubtypeError.ts, 3, 41), Decl(constantOverloadFunctionNoSubtypeError.ts, 5, 42), Decl(constantOverloadFunctionNoSubtypeError.ts, 6, 40), Decl(constantOverloadFunctionNoSubtypeError.ts, 7, 40), Decl(constantOverloadFunctionNoSubtypeError.ts, 8, 36)) diff --git a/tests/baselines/reference/constraintCheckInGenericBaseTypeReference.symbols b/tests/baselines/reference/constraintCheckInGenericBaseTypeReference.symbols index ad63e11b7ed..ee19c63ffe8 100644 --- a/tests/baselines/reference/constraintCheckInGenericBaseTypeReference.symbols +++ b/tests/baselines/reference/constraintCheckInGenericBaseTypeReference.symbols @@ -4,7 +4,7 @@ class Constraint { >Constraint : Symbol(Constraint, Decl(constraintCheckInGenericBaseTypeReference.ts, 0, 0)) public method() { } ->method : Symbol(method, Decl(constraintCheckInGenericBaseTypeReference.ts, 1, 18)) +>method : Symbol(Constraint.method, Decl(constraintCheckInGenericBaseTypeReference.ts, 1, 18)) } class GenericBase { >GenericBase : Symbol(GenericBase, Decl(constraintCheckInGenericBaseTypeReference.ts, 3, 1)) @@ -12,7 +12,7 @@ class GenericBase { >Constraint : Symbol(Constraint, Decl(constraintCheckInGenericBaseTypeReference.ts, 0, 0)) public items: any; ->items : Symbol(items, Decl(constraintCheckInGenericBaseTypeReference.ts, 4, 41)) +>items : Symbol(GenericBase.items, Decl(constraintCheckInGenericBaseTypeReference.ts, 4, 41)) } class Derived extends GenericBase { >Derived : Symbol(Derived, Decl(constraintCheckInGenericBaseTypeReference.ts, 6, 1)) @@ -24,7 +24,7 @@ class TypeArg { >TypeArg : Symbol(TypeArg, Decl(constraintCheckInGenericBaseTypeReference.ts, 9, 1)) public method() { ->method : Symbol(method, Decl(constraintCheckInGenericBaseTypeReference.ts, 10, 15)) +>method : Symbol(TypeArg.method, Decl(constraintCheckInGenericBaseTypeReference.ts, 10, 15)) Container.People.items; >Container.People.items : Symbol(GenericBase.items, Decl(constraintCheckInGenericBaseTypeReference.ts, 4, 41)) diff --git a/tests/baselines/reference/constraintReferencingTypeParameterFromSameTypeParameterList.symbols b/tests/baselines/reference/constraintReferencingTypeParameterFromSameTypeParameterList.symbols index ec987116a43..4793aa63149 100644 --- a/tests/baselines/reference/constraintReferencingTypeParameterFromSameTypeParameterList.symbols +++ b/tests/baselines/reference/constraintReferencingTypeParameterFromSameTypeParameterList.symbols @@ -41,7 +41,7 @@ interface I3 { >U : Symbol(U, Decl(constraintReferencingTypeParameterFromSameTypeParameterList.ts, 16, 15)) method1(); ->method1 : Symbol(method1, Decl(constraintReferencingTypeParameterFromSameTypeParameterList.ts, 16, 35)) +>method1 : Symbol(I3.method1, Decl(constraintReferencingTypeParameterFromSameTypeParameterList.ts, 16, 35)) >X : Symbol(X, Decl(constraintReferencingTypeParameterFromSameTypeParameterList.ts, 17, 12)) >Y : Symbol(Y, Decl(constraintReferencingTypeParameterFromSameTypeParameterList.ts, 17, 14)) >T : Symbol(T, Decl(constraintReferencingTypeParameterFromSameTypeParameterList.ts, 16, 13)) diff --git a/tests/baselines/reference/constraintSatisfactionWithAny.symbols b/tests/baselines/reference/constraintSatisfactionWithAny.symbols index 52cfe211cff..824035a185c 100644 --- a/tests/baselines/reference/constraintSatisfactionWithAny.symbols +++ b/tests/baselines/reference/constraintSatisfactionWithAny.symbols @@ -4,7 +4,7 @@ function foo(x: T): T { return null; } >foo : Symbol(foo, Decl(constraintSatisfactionWithAny.ts, 0, 0)) >T : Symbol(T, Decl(constraintSatisfactionWithAny.ts, 2, 13)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >x : Symbol(x, Decl(constraintSatisfactionWithAny.ts, 2, 31)) >T : Symbol(T, Decl(constraintSatisfactionWithAny.ts, 2, 13)) >T : Symbol(T, Decl(constraintSatisfactionWithAny.ts, 2, 13)) @@ -67,10 +67,10 @@ foo4(b); class C { >C : Symbol(C, Decl(constraintSatisfactionWithAny.ts, 16, 13)) >T : Symbol(T, Decl(constraintSatisfactionWithAny.ts, 22, 8)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) constructor(public x: T) { } ->x : Symbol(x, Decl(constraintSatisfactionWithAny.ts, 23, 16)) +>x : Symbol(C.x, Decl(constraintSatisfactionWithAny.ts, 23, 16)) >T : Symbol(T, Decl(constraintSatisfactionWithAny.ts, 22, 8)) } @@ -90,7 +90,7 @@ class C2 { >x : Symbol(x, Decl(constraintSatisfactionWithAny.ts, 29, 20)) constructor(public x: T) { } ->x : Symbol(x, Decl(constraintSatisfactionWithAny.ts, 30, 16)) +>x : Symbol(C2.x, Decl(constraintSatisfactionWithAny.ts, 30, 16)) >T : Symbol(T, Decl(constraintSatisfactionWithAny.ts, 29, 9)) } @@ -120,7 +120,7 @@ class C4(x:T) => T> { >T : Symbol(T, Decl(constraintSatisfactionWithAny.ts, 43, 20)) constructor(public x: T) { } ->x : Symbol(x, Decl(constraintSatisfactionWithAny.ts, 44, 16)) +>x : Symbol(C4.x, Decl(constraintSatisfactionWithAny.ts, 44, 16)) >T : Symbol(T, Decl(constraintSatisfactionWithAny.ts, 43, 9)) } diff --git a/tests/baselines/reference/constraintSatisfactionWithEmptyObject.symbols b/tests/baselines/reference/constraintSatisfactionWithEmptyObject.symbols index d53e51b6623..a766234e6aa 100644 --- a/tests/baselines/reference/constraintSatisfactionWithEmptyObject.symbols +++ b/tests/baselines/reference/constraintSatisfactionWithEmptyObject.symbols @@ -26,7 +26,7 @@ class C { >Object : Symbol(Object, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) constructor(public x: T) { } ->x : Symbol(x, Decl(constraintSatisfactionWithEmptyObject.ts, 9, 16)) +>x : Symbol(C.x, Decl(constraintSatisfactionWithEmptyObject.ts, 9, 16)) >T : Symbol(T, Decl(constraintSatisfactionWithEmptyObject.ts, 8, 8)) } @@ -40,7 +40,7 @@ interface I { >Object : Symbol(Object, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) x: T; ->x : Symbol(x, Decl(constraintSatisfactionWithEmptyObject.ts, 14, 31)) +>x : Symbol(I.x, Decl(constraintSatisfactionWithEmptyObject.ts, 14, 31)) >T : Symbol(T, Decl(constraintSatisfactionWithEmptyObject.ts, 14, 12)) } var i: I<{}>; @@ -70,7 +70,7 @@ class C2 { >T : Symbol(T, Decl(constraintSatisfactionWithEmptyObject.ts, 25, 9)) constructor(public x: T) { } ->x : Symbol(x, Decl(constraintSatisfactionWithEmptyObject.ts, 26, 16)) +>x : Symbol(C2.x, Decl(constraintSatisfactionWithEmptyObject.ts, 26, 16)) >T : Symbol(T, Decl(constraintSatisfactionWithEmptyObject.ts, 25, 9)) } @@ -83,7 +83,7 @@ interface I2 { >T : Symbol(T, Decl(constraintSatisfactionWithEmptyObject.ts, 31, 13)) x: T; ->x : Symbol(x, Decl(constraintSatisfactionWithEmptyObject.ts, 31, 28)) +>x : Symbol(I2.x, Decl(constraintSatisfactionWithEmptyObject.ts, 31, 28)) >T : Symbol(T, Decl(constraintSatisfactionWithEmptyObject.ts, 31, 13)) } var i2: I2<{}>; diff --git a/tests/baselines/reference/constraintsThatReferenceOtherContstraints1.symbols b/tests/baselines/reference/constraintsThatReferenceOtherContstraints1.symbols index fa754b23dea..38d163b947b 100644 --- a/tests/baselines/reference/constraintsThatReferenceOtherContstraints1.symbols +++ b/tests/baselines/reference/constraintsThatReferenceOtherContstraints1.symbols @@ -16,7 +16,7 @@ class Bar { >T : Symbol(T, Decl(constraintsThatReferenceOtherContstraints1.ts, 3, 10)) data: Foo; // Error 1 Type 'Object' does not satisfy the constraint 'T' for type parameter 'U extends T'. ->data : Symbol(data, Decl(constraintsThatReferenceOtherContstraints1.ts, 3, 42)) +>data : Symbol(Bar.data, Decl(constraintsThatReferenceOtherContstraints1.ts, 3, 42)) >Foo : Symbol(Foo, Decl(constraintsThatReferenceOtherContstraints1.ts, 0, 20)) >Object : Symbol(Object, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(constraintsThatReferenceOtherContstraints1.ts, 0, 0)) >Object : Symbol(Object, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(constraintsThatReferenceOtherContstraints1.ts, 0, 0)) diff --git a/tests/baselines/reference/constructSignatureAssignabilityInInheritance2.symbols b/tests/baselines/reference/constructSignatureAssignabilityInInheritance2.symbols index 8a6ec113423..4d63a7f2db4 100644 --- a/tests/baselines/reference/constructSignatureAssignabilityInInheritance2.symbols +++ b/tests/baselines/reference/constructSignatureAssignabilityInInheritance2.symbols @@ -3,51 +3,51 @@ class Base { foo: string; } >Base : Symbol(Base, Decl(constructSignatureAssignabilityInInheritance2.ts, 0, 0)) ->foo : Symbol(foo, Decl(constructSignatureAssignabilityInInheritance2.ts, 2, 12)) +>foo : Symbol(Base.foo, Decl(constructSignatureAssignabilityInInheritance2.ts, 2, 12)) class Derived extends Base { bar: string; } >Derived : Symbol(Derived, Decl(constructSignatureAssignabilityInInheritance2.ts, 2, 27)) >Base : Symbol(Base, Decl(constructSignatureAssignabilityInInheritance2.ts, 0, 0)) ->bar : Symbol(bar, Decl(constructSignatureAssignabilityInInheritance2.ts, 3, 28)) +>bar : Symbol(Derived.bar, Decl(constructSignatureAssignabilityInInheritance2.ts, 3, 28)) class Derived2 extends Derived { baz: string; } >Derived2 : Symbol(Derived2, Decl(constructSignatureAssignabilityInInheritance2.ts, 3, 43)) >Derived : Symbol(Derived, Decl(constructSignatureAssignabilityInInheritance2.ts, 2, 27)) ->baz : Symbol(baz, Decl(constructSignatureAssignabilityInInheritance2.ts, 4, 32)) +>baz : Symbol(Derived2.baz, Decl(constructSignatureAssignabilityInInheritance2.ts, 4, 32)) class OtherDerived extends Base { bing: string; } >OtherDerived : Symbol(OtherDerived, Decl(constructSignatureAssignabilityInInheritance2.ts, 4, 47)) >Base : Symbol(Base, Decl(constructSignatureAssignabilityInInheritance2.ts, 0, 0)) ->bing : Symbol(bing, Decl(constructSignatureAssignabilityInInheritance2.ts, 5, 33)) +>bing : Symbol(OtherDerived.bing, Decl(constructSignatureAssignabilityInInheritance2.ts, 5, 33)) interface A { // T >A : Symbol(A, Decl(constructSignatureAssignabilityInInheritance2.ts, 5, 49)) // M's a: new (x: number) => number[]; ->a : Symbol(a, Decl(constructSignatureAssignabilityInInheritance2.ts, 7, 13)) +>a : Symbol(A.a, Decl(constructSignatureAssignabilityInInheritance2.ts, 7, 13)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance2.ts, 9, 12)) a2: new (x: number) => string[]; ->a2 : Symbol(a2, Decl(constructSignatureAssignabilityInInheritance2.ts, 9, 35)) +>a2 : Symbol(A.a2, Decl(constructSignatureAssignabilityInInheritance2.ts, 9, 35)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance2.ts, 10, 13)) a3: new (x: number) => void; ->a3 : Symbol(a3, Decl(constructSignatureAssignabilityInInheritance2.ts, 10, 36)) +>a3 : Symbol(A.a3, Decl(constructSignatureAssignabilityInInheritance2.ts, 10, 36)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance2.ts, 11, 13)) a4: new (x: string, y: number) => string; ->a4 : Symbol(a4, Decl(constructSignatureAssignabilityInInheritance2.ts, 11, 32)) +>a4 : Symbol(A.a4, Decl(constructSignatureAssignabilityInInheritance2.ts, 11, 32)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance2.ts, 12, 13)) >y : Symbol(y, Decl(constructSignatureAssignabilityInInheritance2.ts, 12, 23)) a5: new (x: (arg: string) => number) => string; ->a5 : Symbol(a5, Decl(constructSignatureAssignabilityInInheritance2.ts, 12, 45)) +>a5 : Symbol(A.a5, Decl(constructSignatureAssignabilityInInheritance2.ts, 12, 45)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance2.ts, 13, 13)) >arg : Symbol(arg, Decl(constructSignatureAssignabilityInInheritance2.ts, 13, 17)) a6: new (x: (arg: Base) => Derived) => Base; ->a6 : Symbol(a6, Decl(constructSignatureAssignabilityInInheritance2.ts, 13, 51)) +>a6 : Symbol(A.a6, Decl(constructSignatureAssignabilityInInheritance2.ts, 13, 51)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance2.ts, 14, 13)) >arg : Symbol(arg, Decl(constructSignatureAssignabilityInInheritance2.ts, 14, 17)) >Base : Symbol(Base, Decl(constructSignatureAssignabilityInInheritance2.ts, 0, 0)) @@ -55,7 +55,7 @@ interface A { // T >Base : Symbol(Base, Decl(constructSignatureAssignabilityInInheritance2.ts, 0, 0)) a7: new (x: (arg: Base) => Derived) => (r: Base) => Derived; ->a7 : Symbol(a7, Decl(constructSignatureAssignabilityInInheritance2.ts, 14, 48)) +>a7 : Symbol(A.a7, Decl(constructSignatureAssignabilityInInheritance2.ts, 14, 48)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance2.ts, 15, 13)) >arg : Symbol(arg, Decl(constructSignatureAssignabilityInInheritance2.ts, 15, 17)) >Base : Symbol(Base, Decl(constructSignatureAssignabilityInInheritance2.ts, 0, 0)) @@ -65,7 +65,7 @@ interface A { // T >Derived : Symbol(Derived, Decl(constructSignatureAssignabilityInInheritance2.ts, 2, 27)) a8: new (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived; ->a8 : Symbol(a8, Decl(constructSignatureAssignabilityInInheritance2.ts, 15, 64)) +>a8 : Symbol(A.a8, Decl(constructSignatureAssignabilityInInheritance2.ts, 15, 64)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance2.ts, 16, 13)) >arg : Symbol(arg, Decl(constructSignatureAssignabilityInInheritance2.ts, 16, 17)) >Base : Symbol(Base, Decl(constructSignatureAssignabilityInInheritance2.ts, 0, 0)) @@ -79,7 +79,7 @@ interface A { // T >Derived : Symbol(Derived, Decl(constructSignatureAssignabilityInInheritance2.ts, 2, 27)) a9: new (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived; ->a9 : Symbol(a9, Decl(constructSignatureAssignabilityInInheritance2.ts, 16, 92)) +>a9 : Symbol(A.a9, Decl(constructSignatureAssignabilityInInheritance2.ts, 16, 92)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance2.ts, 17, 13)) >arg : Symbol(arg, Decl(constructSignatureAssignabilityInInheritance2.ts, 17, 17)) >Base : Symbol(Base, Decl(constructSignatureAssignabilityInInheritance2.ts, 0, 0)) @@ -93,13 +93,13 @@ interface A { // T >Derived : Symbol(Derived, Decl(constructSignatureAssignabilityInInheritance2.ts, 2, 27)) a10: new (...x: Derived[]) => Derived; ->a10 : Symbol(a10, Decl(constructSignatureAssignabilityInInheritance2.ts, 17, 92)) +>a10 : Symbol(A.a10, Decl(constructSignatureAssignabilityInInheritance2.ts, 17, 92)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance2.ts, 18, 14)) >Derived : Symbol(Derived, Decl(constructSignatureAssignabilityInInheritance2.ts, 2, 27)) >Derived : Symbol(Derived, Decl(constructSignatureAssignabilityInInheritance2.ts, 2, 27)) a11: new (x: { foo: string }, y: { foo: string; bar: string }) => Base; ->a11 : Symbol(a11, Decl(constructSignatureAssignabilityInInheritance2.ts, 18, 42)) +>a11 : Symbol(A.a11, Decl(constructSignatureAssignabilityInInheritance2.ts, 18, 42)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance2.ts, 19, 14)) >foo : Symbol(foo, Decl(constructSignatureAssignabilityInInheritance2.ts, 19, 18)) >y : Symbol(y, Decl(constructSignatureAssignabilityInInheritance2.ts, 19, 33)) @@ -108,7 +108,7 @@ interface A { // T >Base : Symbol(Base, Decl(constructSignatureAssignabilityInInheritance2.ts, 0, 0)) a12: new (x: Array, y: Array) => Array; ->a12 : Symbol(a12, Decl(constructSignatureAssignabilityInInheritance2.ts, 19, 75)) +>a12 : Symbol(A.a12, Decl(constructSignatureAssignabilityInInheritance2.ts, 19, 75)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance2.ts, 20, 14)) >Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >Base : Symbol(Base, Decl(constructSignatureAssignabilityInInheritance2.ts, 0, 0)) @@ -119,7 +119,7 @@ interface A { // T >Derived : Symbol(Derived, Decl(constructSignatureAssignabilityInInheritance2.ts, 2, 27)) a13: new (x: Array, y: Array) => Array; ->a13 : Symbol(a13, Decl(constructSignatureAssignabilityInInheritance2.ts, 20, 68)) +>a13 : Symbol(A.a13, Decl(constructSignatureAssignabilityInInheritance2.ts, 20, 68)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance2.ts, 21, 14)) >Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >Base : Symbol(Base, Decl(constructSignatureAssignabilityInInheritance2.ts, 0, 0)) @@ -130,14 +130,14 @@ interface A { // T >Derived : Symbol(Derived, Decl(constructSignatureAssignabilityInInheritance2.ts, 2, 27)) a14: new (x: { a: string; b: number }) => Object; ->a14 : Symbol(a14, Decl(constructSignatureAssignabilityInInheritance2.ts, 21, 67)) +>a14 : Symbol(A.a14, Decl(constructSignatureAssignabilityInInheritance2.ts, 21, 67)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance2.ts, 22, 14)) >a : Symbol(a, Decl(constructSignatureAssignabilityInInheritance2.ts, 22, 18)) >b : Symbol(b, Decl(constructSignatureAssignabilityInInheritance2.ts, 22, 29)) >Object : Symbol(Object, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) a15: { ->a15 : Symbol(a15, Decl(constructSignatureAssignabilityInInheritance2.ts, 22, 53)) +>a15 : Symbol(A.a15, Decl(constructSignatureAssignabilityInInheritance2.ts, 22, 53)) new (x: number): number[]; >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance2.ts, 24, 13)) @@ -147,7 +147,7 @@ interface A { // T }; a16: { ->a16 : Symbol(a16, Decl(constructSignatureAssignabilityInInheritance2.ts, 26, 6)) +>a16 : Symbol(A.a16, Decl(constructSignatureAssignabilityInInheritance2.ts, 26, 6)) new (x: T): number[]; >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance2.ts, 28, 13)) @@ -163,7 +163,7 @@ interface A { // T }; a17: { ->a17 : Symbol(a17, Decl(constructSignatureAssignabilityInInheritance2.ts, 30, 6)) +>a17 : Symbol(A.a17, Decl(constructSignatureAssignabilityInInheritance2.ts, 30, 6)) new (x: new (a: number) => number): number[]; >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance2.ts, 32, 13)) @@ -175,7 +175,7 @@ interface A { // T }; a18: { ->a18 : Symbol(a18, Decl(constructSignatureAssignabilityInInheritance2.ts, 34, 6)) +>a18 : Symbol(A.a18, Decl(constructSignatureAssignabilityInInheritance2.ts, 34, 6)) new (x: { >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance2.ts, 36, 13)) @@ -195,8 +195,8 @@ interface A { // T new (a: Date): Date; >a : Symbol(a, Decl(constructSignatureAssignabilityInInheritance2.ts, 42, 17)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) }): any[]; }; @@ -209,27 +209,27 @@ interface I extends A { // N's a: new (x: T) => T[]; // ok, instantiation of N is a subtype of M, T is number ->a : Symbol(a, Decl(constructSignatureAssignabilityInInheritance2.ts, 48, 23)) +>a : Symbol(I.a, Decl(constructSignatureAssignabilityInInheritance2.ts, 48, 23)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance2.ts, 50, 12)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance2.ts, 50, 15)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance2.ts, 50, 12)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance2.ts, 50, 12)) a2: new (x: T) => string[]; // ok ->a2 : Symbol(a2, Decl(constructSignatureAssignabilityInInheritance2.ts, 50, 28)) +>a2 : Symbol(I.a2, Decl(constructSignatureAssignabilityInInheritance2.ts, 50, 28)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance2.ts, 51, 13)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance2.ts, 51, 16)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance2.ts, 51, 13)) a3: new (x: T) => T; // ok since Base returns void ->a3 : Symbol(a3, Decl(constructSignatureAssignabilityInInheritance2.ts, 51, 34)) +>a3 : Symbol(I.a3, Decl(constructSignatureAssignabilityInInheritance2.ts, 51, 34)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance2.ts, 52, 13)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance2.ts, 52, 16)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance2.ts, 52, 13)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance2.ts, 52, 13)) a4: new (x: T, y: U) => T; // ok, instantiation of N is a subtype of M, T is string, U is number ->a4 : Symbol(a4, Decl(constructSignatureAssignabilityInInheritance2.ts, 52, 27)) +>a4 : Symbol(I.a4, Decl(constructSignatureAssignabilityInInheritance2.ts, 52, 27)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance2.ts, 53, 13)) >U : Symbol(U, Decl(constructSignatureAssignabilityInInheritance2.ts, 53, 15)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance2.ts, 53, 19)) @@ -239,7 +239,7 @@ interface I extends A { >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance2.ts, 53, 13)) a5: new (x: (arg: T) => U) => T; // ok, U is in a parameter position so inferences can be made ->a5 : Symbol(a5, Decl(constructSignatureAssignabilityInInheritance2.ts, 53, 36)) +>a5 : Symbol(I.a5, Decl(constructSignatureAssignabilityInInheritance2.ts, 53, 36)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance2.ts, 54, 13)) >U : Symbol(U, Decl(constructSignatureAssignabilityInInheritance2.ts, 54, 15)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance2.ts, 54, 19)) @@ -249,7 +249,7 @@ interface I extends A { >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance2.ts, 54, 13)) a6: new (x: (arg: T) => U) => T; // ok, same as a5 but with object type hierarchy ->a6 : Symbol(a6, Decl(constructSignatureAssignabilityInInheritance2.ts, 54, 42)) +>a6 : Symbol(I.a6, Decl(constructSignatureAssignabilityInInheritance2.ts, 54, 42)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance2.ts, 55, 13)) >Base : Symbol(Base, Decl(constructSignatureAssignabilityInInheritance2.ts, 0, 0)) >U : Symbol(U, Decl(constructSignatureAssignabilityInInheritance2.ts, 55, 28)) @@ -261,7 +261,7 @@ interface I extends A { >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance2.ts, 55, 13)) a7: new (x: (arg: T) => U) => (r: T) => U; // ok ->a7 : Symbol(a7, Decl(constructSignatureAssignabilityInInheritance2.ts, 55, 71)) +>a7 : Symbol(I.a7, Decl(constructSignatureAssignabilityInInheritance2.ts, 55, 71)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance2.ts, 56, 13)) >Base : Symbol(Base, Decl(constructSignatureAssignabilityInInheritance2.ts, 0, 0)) >U : Symbol(U, Decl(constructSignatureAssignabilityInInheritance2.ts, 56, 28)) @@ -275,7 +275,7 @@ interface I extends A { >U : Symbol(U, Decl(constructSignatureAssignabilityInInheritance2.ts, 56, 28)) a8: new (x: (arg: T) => U, y: (arg2: T) => U) => (r: T) => U; // ok ->a8 : Symbol(a8, Decl(constructSignatureAssignabilityInInheritance2.ts, 56, 81)) +>a8 : Symbol(I.a8, Decl(constructSignatureAssignabilityInInheritance2.ts, 56, 81)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance2.ts, 57, 13)) >Base : Symbol(Base, Decl(constructSignatureAssignabilityInInheritance2.ts, 0, 0)) >U : Symbol(U, Decl(constructSignatureAssignabilityInInheritance2.ts, 57, 28)) @@ -293,7 +293,7 @@ interface I extends A { >U : Symbol(U, Decl(constructSignatureAssignabilityInInheritance2.ts, 57, 28)) a9: new (x: (arg: T) => U, y: (arg2: { foo: string; bing: number }) => U) => (r: T) => U; // ok, same as a8 with compatible object literal ->a9 : Symbol(a9, Decl(constructSignatureAssignabilityInInheritance2.ts, 57, 100)) +>a9 : Symbol(I.a9, Decl(constructSignatureAssignabilityInInheritance2.ts, 57, 100)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance2.ts, 58, 13)) >Base : Symbol(Base, Decl(constructSignatureAssignabilityInInheritance2.ts, 0, 0)) >U : Symbol(U, Decl(constructSignatureAssignabilityInInheritance2.ts, 58, 28)) @@ -312,7 +312,7 @@ interface I extends A { >U : Symbol(U, Decl(constructSignatureAssignabilityInInheritance2.ts, 58, 28)) a10: new (...x: T[]) => T; // ok ->a10 : Symbol(a10, Decl(constructSignatureAssignabilityInInheritance2.ts, 58, 128)) +>a10 : Symbol(I.a10, Decl(constructSignatureAssignabilityInInheritance2.ts, 58, 128)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance2.ts, 59, 14)) >Derived : Symbol(Derived, Decl(constructSignatureAssignabilityInInheritance2.ts, 2, 27)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance2.ts, 59, 33)) @@ -320,7 +320,7 @@ interface I extends A { >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance2.ts, 59, 14)) a11: new (x: T, y: T) => T; // ok ->a11 : Symbol(a11, Decl(constructSignatureAssignabilityInInheritance2.ts, 59, 49)) +>a11 : Symbol(I.a11, Decl(constructSignatureAssignabilityInInheritance2.ts, 59, 49)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance2.ts, 60, 14)) >Base : Symbol(Base, Decl(constructSignatureAssignabilityInInheritance2.ts, 0, 0)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance2.ts, 60, 30)) @@ -330,7 +330,7 @@ interface I extends A { >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance2.ts, 60, 14)) a12: new >(x: Array, y: T) => Array; // ok, less specific parameter type ->a12 : Symbol(a12, Decl(constructSignatureAssignabilityInInheritance2.ts, 60, 47)) +>a12 : Symbol(I.a12, Decl(constructSignatureAssignabilityInInheritance2.ts, 60, 47)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance2.ts, 61, 14)) >Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >Base : Symbol(Base, Decl(constructSignatureAssignabilityInInheritance2.ts, 0, 0)) @@ -343,7 +343,7 @@ interface I extends A { >Derived : Symbol(Derived, Decl(constructSignatureAssignabilityInInheritance2.ts, 2, 27)) a13: new >(x: Array, y: T) => T; // ok, T = Array, satisfies constraint, contextual signature instantiation succeeds ->a13 : Symbol(a13, Decl(constructSignatureAssignabilityInInheritance2.ts, 61, 77)) +>a13 : Symbol(I.a13, Decl(constructSignatureAssignabilityInInheritance2.ts, 61, 77)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance2.ts, 62, 14)) >Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >Derived : Symbol(Derived, Decl(constructSignatureAssignabilityInInheritance2.ts, 2, 27)) @@ -355,7 +355,7 @@ interface I extends A { >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance2.ts, 62, 14)) a14: new (x: { a: T; b: T }) => T; // ok, best common type yields T = {} but that's satisfactory for this signature ->a14 : Symbol(a14, Decl(constructSignatureAssignabilityInInheritance2.ts, 62, 67)) +>a14 : Symbol(I.a14, Decl(constructSignatureAssignabilityInInheritance2.ts, 62, 67)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance2.ts, 63, 14)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance2.ts, 63, 17)) >a : Symbol(a, Decl(constructSignatureAssignabilityInInheritance2.ts, 63, 21)) @@ -365,21 +365,21 @@ interface I extends A { >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance2.ts, 63, 14)) a15: new (x: T) => T[]; // ok ->a15 : Symbol(a15, Decl(constructSignatureAssignabilityInInheritance2.ts, 63, 41)) +>a15 : Symbol(I.a15, Decl(constructSignatureAssignabilityInInheritance2.ts, 63, 41)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance2.ts, 64, 14)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance2.ts, 64, 17)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance2.ts, 64, 14)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance2.ts, 64, 14)) a16: new (x: T) => number[]; // ok ->a16 : Symbol(a16, Decl(constructSignatureAssignabilityInInheritance2.ts, 64, 30)) +>a16 : Symbol(I.a16, Decl(constructSignatureAssignabilityInInheritance2.ts, 64, 30)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance2.ts, 65, 14)) >Base : Symbol(Base, Decl(constructSignatureAssignabilityInInheritance2.ts, 0, 0)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance2.ts, 65, 30)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance2.ts, 65, 14)) a17: new (x: new (a: T) => T) => T[]; // ok ->a17 : Symbol(a17, Decl(constructSignatureAssignabilityInInheritance2.ts, 65, 48)) +>a17 : Symbol(I.a17, Decl(constructSignatureAssignabilityInInheritance2.ts, 65, 48)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance2.ts, 66, 14)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance2.ts, 66, 17)) >a : Symbol(a, Decl(constructSignatureAssignabilityInInheritance2.ts, 66, 25)) @@ -388,7 +388,7 @@ interface I extends A { >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance2.ts, 66, 14)) a18: new (x: new (a: T) => T) => T[]; // ok, no inferences for T but assignable to any ->a18 : Symbol(a18, Decl(constructSignatureAssignabilityInInheritance2.ts, 66, 44)) +>a18 : Symbol(I.a18, Decl(constructSignatureAssignabilityInInheritance2.ts, 66, 44)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance2.ts, 67, 14)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance2.ts, 67, 17)) >a : Symbol(a, Decl(constructSignatureAssignabilityInInheritance2.ts, 67, 25)) diff --git a/tests/baselines/reference/constructSignatureAssignabilityInInheritance3.errors.txt b/tests/baselines/reference/constructSignatureAssignabilityInInheritance3.errors.txt index 8d6273804f7..086372aac17 100644 --- a/tests/baselines/reference/constructSignatureAssignabilityInInheritance3.errors.txt +++ b/tests/baselines/reference/constructSignatureAssignabilityInInheritance3.errors.txt @@ -2,12 +2,12 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/construc Types of property 'a2' are incompatible. Type 'new (x: T) => U[]' is not assignable to type 'new (x: number) => string[]'. Types of parameters 'x' and 'x' are incompatible. - Type 'T' is not assignable to type 'number'. + Type 'number' is not assignable to type 'T'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/constructSignatureAssignabilityInInheritance3.ts(50,19): error TS2430: Interface 'I4' incorrectly extends interface 'A'. Types of property 'a8' are incompatible. Type 'new (x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U' is not assignable to type 'new (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived'. Types of parameters 'y' and 'y' are incompatible. - Type '(arg2: { foo: number; }) => any' is not assignable to type '(arg2: Base) => Derived'. + Type '(arg2: Base) => Derived' is not assignable to type '(arg2: { foo: number; }) => any'. Types of parameters 'arg2' and 'arg2' are incompatible. Type '{ foo: number; }' is not assignable to type 'Base'. Types of property 'foo' are incompatible. @@ -61,7 +61,7 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/construc !!! error TS2430: Types of property 'a2' are incompatible. !!! error TS2430: Type 'new (x: T) => U[]' is not assignable to type 'new (x: number) => string[]'. !!! error TS2430: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2430: Type 'T' is not assignable to type 'number'. +!!! error TS2430: Type 'number' is not assignable to type 'T'. a2: new (x: T) => U[]; // error, no contextual signature instantiation since I2.a2 is not generic } @@ -76,7 +76,7 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/construc !!! error TS2430: Types of property 'a8' are incompatible. !!! error TS2430: Type 'new (x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U' is not assignable to type 'new (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived'. !!! error TS2430: Types of parameters 'y' and 'y' are incompatible. -!!! error TS2430: Type '(arg2: { foo: number; }) => any' is not assignable to type '(arg2: Base) => Derived'. +!!! error TS2430: Type '(arg2: Base) => Derived' is not assignable to type '(arg2: { foo: number; }) => any'. !!! error TS2430: Types of parameters 'arg2' and 'arg2' are incompatible. !!! error TS2430: Type '{ foo: number; }' is not assignable to type 'Base'. !!! error TS2430: Types of property 'foo' are incompatible. diff --git a/tests/baselines/reference/constructSignatureAssignabilityInInheritance4.symbols b/tests/baselines/reference/constructSignatureAssignabilityInInheritance4.symbols index 33ae7e0f6d6..e26a33bba4e 100644 --- a/tests/baselines/reference/constructSignatureAssignabilityInInheritance4.symbols +++ b/tests/baselines/reference/constructSignatureAssignabilityInInheritance4.symbols @@ -3,48 +3,48 @@ class Base { foo: string; } >Base : Symbol(Base, Decl(constructSignatureAssignabilityInInheritance4.ts, 0, 0)) ->foo : Symbol(foo, Decl(constructSignatureAssignabilityInInheritance4.ts, 2, 12)) +>foo : Symbol(Base.foo, Decl(constructSignatureAssignabilityInInheritance4.ts, 2, 12)) class Derived extends Base { bar: string; } >Derived : Symbol(Derived, Decl(constructSignatureAssignabilityInInheritance4.ts, 2, 27)) >Base : Symbol(Base, Decl(constructSignatureAssignabilityInInheritance4.ts, 0, 0)) ->bar : Symbol(bar, Decl(constructSignatureAssignabilityInInheritance4.ts, 3, 28)) +>bar : Symbol(Derived.bar, Decl(constructSignatureAssignabilityInInheritance4.ts, 3, 28)) class Derived2 extends Derived { baz: string; } >Derived2 : Symbol(Derived2, Decl(constructSignatureAssignabilityInInheritance4.ts, 3, 43)) >Derived : Symbol(Derived, Decl(constructSignatureAssignabilityInInheritance4.ts, 2, 27)) ->baz : Symbol(baz, Decl(constructSignatureAssignabilityInInheritance4.ts, 4, 32)) +>baz : Symbol(Derived2.baz, Decl(constructSignatureAssignabilityInInheritance4.ts, 4, 32)) class OtherDerived extends Base { bing: string; } >OtherDerived : Symbol(OtherDerived, Decl(constructSignatureAssignabilityInInheritance4.ts, 4, 47)) >Base : Symbol(Base, Decl(constructSignatureAssignabilityInInheritance4.ts, 0, 0)) ->bing : Symbol(bing, Decl(constructSignatureAssignabilityInInheritance4.ts, 5, 33)) +>bing : Symbol(OtherDerived.bing, Decl(constructSignatureAssignabilityInInheritance4.ts, 5, 33)) interface A { // T >A : Symbol(A, Decl(constructSignatureAssignabilityInInheritance4.ts, 5, 49)) // M's a: new (x: T) => T[]; ->a : Symbol(a, Decl(constructSignatureAssignabilityInInheritance4.ts, 7, 13)) +>a : Symbol(A.a, Decl(constructSignatureAssignabilityInInheritance4.ts, 7, 13)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance4.ts, 9, 12)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance4.ts, 9, 15)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance4.ts, 9, 12)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance4.ts, 9, 12)) a2: new (x: T) => string[]; ->a2 : Symbol(a2, Decl(constructSignatureAssignabilityInInheritance4.ts, 9, 28)) +>a2 : Symbol(A.a2, Decl(constructSignatureAssignabilityInInheritance4.ts, 9, 28)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance4.ts, 10, 13)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance4.ts, 10, 16)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance4.ts, 10, 13)) a3: new (x: T) => void; ->a3 : Symbol(a3, Decl(constructSignatureAssignabilityInInheritance4.ts, 10, 34)) +>a3 : Symbol(A.a3, Decl(constructSignatureAssignabilityInInheritance4.ts, 10, 34)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance4.ts, 11, 13)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance4.ts, 11, 16)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance4.ts, 11, 13)) a4: new (x: T, y: U) => string; ->a4 : Symbol(a4, Decl(constructSignatureAssignabilityInInheritance4.ts, 11, 30)) +>a4 : Symbol(A.a4, Decl(constructSignatureAssignabilityInInheritance4.ts, 11, 30)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance4.ts, 12, 13)) >U : Symbol(U, Decl(constructSignatureAssignabilityInInheritance4.ts, 12, 15)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance4.ts, 12, 19)) @@ -53,7 +53,7 @@ interface A { // T >U : Symbol(U, Decl(constructSignatureAssignabilityInInheritance4.ts, 12, 15)) a5: new (x: (arg: T) => U) => T; ->a5 : Symbol(a5, Decl(constructSignatureAssignabilityInInheritance4.ts, 12, 41)) +>a5 : Symbol(A.a5, Decl(constructSignatureAssignabilityInInheritance4.ts, 12, 41)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance4.ts, 13, 13)) >U : Symbol(U, Decl(constructSignatureAssignabilityInInheritance4.ts, 13, 15)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance4.ts, 13, 19)) @@ -63,7 +63,7 @@ interface A { // T >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance4.ts, 13, 13)) a6: new (x: (arg: T) => Derived) => T; ->a6 : Symbol(a6, Decl(constructSignatureAssignabilityInInheritance4.ts, 13, 42)) +>a6 : Symbol(A.a6, Decl(constructSignatureAssignabilityInInheritance4.ts, 13, 42)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance4.ts, 14, 13)) >Base : Symbol(Base, Decl(constructSignatureAssignabilityInInheritance4.ts, 0, 0)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance4.ts, 14, 29)) @@ -73,7 +73,7 @@ interface A { // T >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance4.ts, 14, 13)) a11: new (x: { foo: T }, y: { foo: T; bar: T }) => Base; ->a11 : Symbol(a11, Decl(constructSignatureAssignabilityInInheritance4.ts, 14, 58)) +>a11 : Symbol(A.a11, Decl(constructSignatureAssignabilityInInheritance4.ts, 14, 58)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance4.ts, 15, 14)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance4.ts, 15, 17)) >foo : Symbol(foo, Decl(constructSignatureAssignabilityInInheritance4.ts, 15, 21)) @@ -86,7 +86,7 @@ interface A { // T >Base : Symbol(Base, Decl(constructSignatureAssignabilityInInheritance4.ts, 0, 0)) a15: new (x: { a: T; b: T }) => T[]; ->a15 : Symbol(a15, Decl(constructSignatureAssignabilityInInheritance4.ts, 15, 63)) +>a15 : Symbol(A.a15, Decl(constructSignatureAssignabilityInInheritance4.ts, 15, 63)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance4.ts, 16, 14)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance4.ts, 16, 17)) >a : Symbol(a, Decl(constructSignatureAssignabilityInInheritance4.ts, 16, 21)) @@ -96,7 +96,7 @@ interface A { // T >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance4.ts, 16, 14)) a16: new (x: { a: T; b: T }) => T[]; ->a16 : Symbol(a16, Decl(constructSignatureAssignabilityInInheritance4.ts, 16, 43)) +>a16 : Symbol(A.a16, Decl(constructSignatureAssignabilityInInheritance4.ts, 16, 43)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance4.ts, 17, 14)) >Base : Symbol(Base, Decl(constructSignatureAssignabilityInInheritance4.ts, 0, 0)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance4.ts, 17, 30)) @@ -107,7 +107,7 @@ interface A { // T >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance4.ts, 17, 14)) a17: { ->a17 : Symbol(a17, Decl(constructSignatureAssignabilityInInheritance4.ts, 17, 56)) +>a17 : Symbol(A.a17, Decl(constructSignatureAssignabilityInInheritance4.ts, 17, 56)) new (x: T): T[]; >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance4.ts, 19, 13)) @@ -125,7 +125,7 @@ interface A { // T }; a18: { ->a18 : Symbol(a18, Decl(constructSignatureAssignabilityInInheritance4.ts, 21, 6)) +>a18 : Symbol(A.a18, Decl(constructSignatureAssignabilityInInheritance4.ts, 21, 6)) new (x: T): number[]; >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance4.ts, 23, 13)) @@ -141,7 +141,7 @@ interface A { // T }; a19: { ->a19 : Symbol(a19, Decl(constructSignatureAssignabilityInInheritance4.ts, 25, 6)) +>a19 : Symbol(A.a19, Decl(constructSignatureAssignabilityInInheritance4.ts, 25, 6)) new (x: new (a: T) => T): T[]; >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance4.ts, 27, 13)) @@ -163,7 +163,7 @@ interface A { // T }; a20: { ->a20 : Symbol(a20, Decl(constructSignatureAssignabilityInInheritance4.ts, 29, 6)) +>a20 : Symbol(A.a20, Decl(constructSignatureAssignabilityInInheritance4.ts, 29, 6)) new (x: { >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance4.ts, 31, 13)) @@ -211,27 +211,27 @@ interface I extends A { // N's a: new (x: T) => T[]; // ok, instantiation of N is a subtype of M, T is number ->a : Symbol(a, Decl(constructSignatureAssignabilityInInheritance4.ts, 43, 23)) +>a : Symbol(I.a, Decl(constructSignatureAssignabilityInInheritance4.ts, 43, 23)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance4.ts, 45, 12)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance4.ts, 45, 15)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance4.ts, 45, 12)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance4.ts, 45, 12)) a2: new (x: T) => string[]; // ok ->a2 : Symbol(a2, Decl(constructSignatureAssignabilityInInheritance4.ts, 45, 28)) +>a2 : Symbol(I.a2, Decl(constructSignatureAssignabilityInInheritance4.ts, 45, 28)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance4.ts, 46, 13)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance4.ts, 46, 16)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance4.ts, 46, 13)) a3: new (x: T) => T; // ok since Base returns void ->a3 : Symbol(a3, Decl(constructSignatureAssignabilityInInheritance4.ts, 46, 34)) +>a3 : Symbol(I.a3, Decl(constructSignatureAssignabilityInInheritance4.ts, 46, 34)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance4.ts, 47, 13)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance4.ts, 47, 16)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance4.ts, 47, 13)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance4.ts, 47, 13)) a4: new (x: T, y: U) => string; // ok, instantiation of N is a subtype of M, T is string, U is number ->a4 : Symbol(a4, Decl(constructSignatureAssignabilityInInheritance4.ts, 47, 27)) +>a4 : Symbol(I.a4, Decl(constructSignatureAssignabilityInInheritance4.ts, 47, 27)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance4.ts, 48, 13)) >U : Symbol(U, Decl(constructSignatureAssignabilityInInheritance4.ts, 48, 15)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance4.ts, 48, 19)) @@ -240,7 +240,7 @@ interface I extends A { >U : Symbol(U, Decl(constructSignatureAssignabilityInInheritance4.ts, 48, 15)) a5: new (x: (arg: T) => U) => T; // ok, U is in a parameter position so inferences can be made ->a5 : Symbol(a5, Decl(constructSignatureAssignabilityInInheritance4.ts, 48, 41)) +>a5 : Symbol(I.a5, Decl(constructSignatureAssignabilityInInheritance4.ts, 48, 41)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance4.ts, 49, 13)) >U : Symbol(U, Decl(constructSignatureAssignabilityInInheritance4.ts, 49, 15)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance4.ts, 49, 19)) @@ -250,7 +250,7 @@ interface I extends A { >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance4.ts, 49, 13)) a6: new (x: (arg: T) => U) => T; // ok, same as a5 but with object type hierarchy ->a6 : Symbol(a6, Decl(constructSignatureAssignabilityInInheritance4.ts, 49, 42)) +>a6 : Symbol(I.a6, Decl(constructSignatureAssignabilityInInheritance4.ts, 49, 42)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance4.ts, 50, 13)) >Base : Symbol(Base, Decl(constructSignatureAssignabilityInInheritance4.ts, 0, 0)) >U : Symbol(U, Decl(constructSignatureAssignabilityInInheritance4.ts, 50, 28)) @@ -262,7 +262,7 @@ interface I extends A { >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance4.ts, 50, 13)) a11: new (x: { foo: T }, y: { foo: U; bar: U }) => Base; // ok ->a11 : Symbol(a11, Decl(constructSignatureAssignabilityInInheritance4.ts, 50, 71)) +>a11 : Symbol(I.a11, Decl(constructSignatureAssignabilityInInheritance4.ts, 50, 71)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance4.ts, 51, 14)) >U : Symbol(U, Decl(constructSignatureAssignabilityInInheritance4.ts, 51, 16)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance4.ts, 51, 20)) @@ -276,7 +276,7 @@ interface I extends A { >Base : Symbol(Base, Decl(constructSignatureAssignabilityInInheritance4.ts, 0, 0)) a15: new (x: { a: U; b: V; }) => U[]; // ok, T = U, T = V ->a15 : Symbol(a15, Decl(constructSignatureAssignabilityInInheritance4.ts, 51, 66)) +>a15 : Symbol(I.a15, Decl(constructSignatureAssignabilityInInheritance4.ts, 51, 66)) >U : Symbol(U, Decl(constructSignatureAssignabilityInInheritance4.ts, 52, 14)) >V : Symbol(V, Decl(constructSignatureAssignabilityInInheritance4.ts, 52, 16)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance4.ts, 52, 20)) @@ -287,7 +287,7 @@ interface I extends A { >U : Symbol(U, Decl(constructSignatureAssignabilityInInheritance4.ts, 52, 14)) a16: new (x: { a: T; b: T }) => T[]; // ok, more general parameter type ->a16 : Symbol(a16, Decl(constructSignatureAssignabilityInInheritance4.ts, 52, 47)) +>a16 : Symbol(I.a16, Decl(constructSignatureAssignabilityInInheritance4.ts, 52, 47)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance4.ts, 53, 14)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance4.ts, 53, 17)) >a : Symbol(a, Decl(constructSignatureAssignabilityInInheritance4.ts, 53, 21)) @@ -297,7 +297,7 @@ interface I extends A { >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance4.ts, 53, 14)) a17: new (x: T) => T[]; // ok, more general parameter type ->a17 : Symbol(a17, Decl(constructSignatureAssignabilityInInheritance4.ts, 53, 43)) +>a17 : Symbol(I.a17, Decl(constructSignatureAssignabilityInInheritance4.ts, 53, 43)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance4.ts, 54, 14)) >Base : Symbol(Base, Decl(constructSignatureAssignabilityInInheritance4.ts, 0, 0)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance4.ts, 54, 30)) @@ -305,14 +305,14 @@ interface I extends A { >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance4.ts, 54, 14)) a18: new (x: T) => number[]; // ok, more general parameter type ->a18 : Symbol(a18, Decl(constructSignatureAssignabilityInInheritance4.ts, 54, 43)) +>a18 : Symbol(I.a18, Decl(constructSignatureAssignabilityInInheritance4.ts, 54, 43)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance4.ts, 55, 14)) >Base : Symbol(Base, Decl(constructSignatureAssignabilityInInheritance4.ts, 0, 0)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance4.ts, 55, 30)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance4.ts, 55, 14)) a19: new (x: new (a: T) => T) => T[]; // ok ->a19 : Symbol(a19, Decl(constructSignatureAssignabilityInInheritance4.ts, 55, 48)) +>a19 : Symbol(I.a19, Decl(constructSignatureAssignabilityInInheritance4.ts, 55, 48)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance4.ts, 56, 14)) >Base : Symbol(Base, Decl(constructSignatureAssignabilityInInheritance4.ts, 0, 0)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance4.ts, 56, 30)) @@ -322,7 +322,7 @@ interface I extends A { >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance4.ts, 56, 14)) a20: new (x: new (a: T) => T) => any[]; // ok ->a20 : Symbol(a20, Decl(constructSignatureAssignabilityInInheritance4.ts, 56, 57)) +>a20 : Symbol(I.a20, Decl(constructSignatureAssignabilityInInheritance4.ts, 56, 57)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance4.ts, 57, 14)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance4.ts, 57, 22)) >Base : Symbol(Base, Decl(constructSignatureAssignabilityInInheritance4.ts, 0, 0)) diff --git a/tests/baselines/reference/constructSignatureAssignabilityInInheritance5.symbols b/tests/baselines/reference/constructSignatureAssignabilityInInheritance5.symbols index 1b35cd0c896..ec2c71160c5 100644 --- a/tests/baselines/reference/constructSignatureAssignabilityInInheritance5.symbols +++ b/tests/baselines/reference/constructSignatureAssignabilityInInheritance5.symbols @@ -4,51 +4,51 @@ class Base { foo: string; } >Base : Symbol(Base, Decl(constructSignatureAssignabilityInInheritance5.ts, 0, 0)) ->foo : Symbol(foo, Decl(constructSignatureAssignabilityInInheritance5.ts, 3, 12)) +>foo : Symbol(Base.foo, Decl(constructSignatureAssignabilityInInheritance5.ts, 3, 12)) class Derived extends Base { bar: string; } >Derived : Symbol(Derived, Decl(constructSignatureAssignabilityInInheritance5.ts, 3, 27)) >Base : Symbol(Base, Decl(constructSignatureAssignabilityInInheritance5.ts, 0, 0)) ->bar : Symbol(bar, Decl(constructSignatureAssignabilityInInheritance5.ts, 4, 28)) +>bar : Symbol(Derived.bar, Decl(constructSignatureAssignabilityInInheritance5.ts, 4, 28)) class Derived2 extends Derived { baz: string; } >Derived2 : Symbol(Derived2, Decl(constructSignatureAssignabilityInInheritance5.ts, 4, 43)) >Derived : Symbol(Derived, Decl(constructSignatureAssignabilityInInheritance5.ts, 3, 27)) ->baz : Symbol(baz, Decl(constructSignatureAssignabilityInInheritance5.ts, 5, 32)) +>baz : Symbol(Derived2.baz, Decl(constructSignatureAssignabilityInInheritance5.ts, 5, 32)) class OtherDerived extends Base { bing: string; } >OtherDerived : Symbol(OtherDerived, Decl(constructSignatureAssignabilityInInheritance5.ts, 5, 47)) >Base : Symbol(Base, Decl(constructSignatureAssignabilityInInheritance5.ts, 0, 0)) ->bing : Symbol(bing, Decl(constructSignatureAssignabilityInInheritance5.ts, 6, 33)) +>bing : Symbol(OtherDerived.bing, Decl(constructSignatureAssignabilityInInheritance5.ts, 6, 33)) interface A { // T >A : Symbol(A, Decl(constructSignatureAssignabilityInInheritance5.ts, 6, 49)) // M's a: new (x: number) => number[]; ->a : Symbol(a, Decl(constructSignatureAssignabilityInInheritance5.ts, 8, 13)) +>a : Symbol(A.a, Decl(constructSignatureAssignabilityInInheritance5.ts, 8, 13)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance5.ts, 10, 12)) a2: new (x: number) => string[]; ->a2 : Symbol(a2, Decl(constructSignatureAssignabilityInInheritance5.ts, 10, 35)) +>a2 : Symbol(A.a2, Decl(constructSignatureAssignabilityInInheritance5.ts, 10, 35)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance5.ts, 11, 13)) a3: new (x: number) => void; ->a3 : Symbol(a3, Decl(constructSignatureAssignabilityInInheritance5.ts, 11, 36)) +>a3 : Symbol(A.a3, Decl(constructSignatureAssignabilityInInheritance5.ts, 11, 36)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance5.ts, 12, 13)) a4: new (x: string, y: number) => string; ->a4 : Symbol(a4, Decl(constructSignatureAssignabilityInInheritance5.ts, 12, 32)) +>a4 : Symbol(A.a4, Decl(constructSignatureAssignabilityInInheritance5.ts, 12, 32)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance5.ts, 13, 13)) >y : Symbol(y, Decl(constructSignatureAssignabilityInInheritance5.ts, 13, 23)) a5: new (x: (arg: string) => number) => string; ->a5 : Symbol(a5, Decl(constructSignatureAssignabilityInInheritance5.ts, 13, 45)) +>a5 : Symbol(A.a5, Decl(constructSignatureAssignabilityInInheritance5.ts, 13, 45)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance5.ts, 14, 13)) >arg : Symbol(arg, Decl(constructSignatureAssignabilityInInheritance5.ts, 14, 17)) a6: new (x: (arg: Base) => Derived) => Base; ->a6 : Symbol(a6, Decl(constructSignatureAssignabilityInInheritance5.ts, 14, 51)) +>a6 : Symbol(A.a6, Decl(constructSignatureAssignabilityInInheritance5.ts, 14, 51)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance5.ts, 15, 13)) >arg : Symbol(arg, Decl(constructSignatureAssignabilityInInheritance5.ts, 15, 17)) >Base : Symbol(Base, Decl(constructSignatureAssignabilityInInheritance5.ts, 0, 0)) @@ -56,7 +56,7 @@ interface A { // T >Base : Symbol(Base, Decl(constructSignatureAssignabilityInInheritance5.ts, 0, 0)) a7: new (x: (arg: Base) => Derived) => (r: Base) => Derived; ->a7 : Symbol(a7, Decl(constructSignatureAssignabilityInInheritance5.ts, 15, 48)) +>a7 : Symbol(A.a7, Decl(constructSignatureAssignabilityInInheritance5.ts, 15, 48)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance5.ts, 16, 13)) >arg : Symbol(arg, Decl(constructSignatureAssignabilityInInheritance5.ts, 16, 17)) >Base : Symbol(Base, Decl(constructSignatureAssignabilityInInheritance5.ts, 0, 0)) @@ -66,7 +66,7 @@ interface A { // T >Derived : Symbol(Derived, Decl(constructSignatureAssignabilityInInheritance5.ts, 3, 27)) a8: new (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived; ->a8 : Symbol(a8, Decl(constructSignatureAssignabilityInInheritance5.ts, 16, 64)) +>a8 : Symbol(A.a8, Decl(constructSignatureAssignabilityInInheritance5.ts, 16, 64)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance5.ts, 17, 13)) >arg : Symbol(arg, Decl(constructSignatureAssignabilityInInheritance5.ts, 17, 17)) >Base : Symbol(Base, Decl(constructSignatureAssignabilityInInheritance5.ts, 0, 0)) @@ -80,7 +80,7 @@ interface A { // T >Derived : Symbol(Derived, Decl(constructSignatureAssignabilityInInheritance5.ts, 3, 27)) a9: new (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived; ->a9 : Symbol(a9, Decl(constructSignatureAssignabilityInInheritance5.ts, 17, 92)) +>a9 : Symbol(A.a9, Decl(constructSignatureAssignabilityInInheritance5.ts, 17, 92)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance5.ts, 18, 13)) >arg : Symbol(arg, Decl(constructSignatureAssignabilityInInheritance5.ts, 18, 17)) >Base : Symbol(Base, Decl(constructSignatureAssignabilityInInheritance5.ts, 0, 0)) @@ -94,13 +94,13 @@ interface A { // T >Derived : Symbol(Derived, Decl(constructSignatureAssignabilityInInheritance5.ts, 3, 27)) a10: new (...x: Derived[]) => Derived; ->a10 : Symbol(a10, Decl(constructSignatureAssignabilityInInheritance5.ts, 18, 92)) +>a10 : Symbol(A.a10, Decl(constructSignatureAssignabilityInInheritance5.ts, 18, 92)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance5.ts, 19, 14)) >Derived : Symbol(Derived, Decl(constructSignatureAssignabilityInInheritance5.ts, 3, 27)) >Derived : Symbol(Derived, Decl(constructSignatureAssignabilityInInheritance5.ts, 3, 27)) a11: new (x: { foo: string }, y: { foo: string; bar: string }) => Base; ->a11 : Symbol(a11, Decl(constructSignatureAssignabilityInInheritance5.ts, 19, 42)) +>a11 : Symbol(A.a11, Decl(constructSignatureAssignabilityInInheritance5.ts, 19, 42)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance5.ts, 20, 14)) >foo : Symbol(foo, Decl(constructSignatureAssignabilityInInheritance5.ts, 20, 18)) >y : Symbol(y, Decl(constructSignatureAssignabilityInInheritance5.ts, 20, 33)) @@ -109,7 +109,7 @@ interface A { // T >Base : Symbol(Base, Decl(constructSignatureAssignabilityInInheritance5.ts, 0, 0)) a12: new (x: Array, y: Array) => Array; ->a12 : Symbol(a12, Decl(constructSignatureAssignabilityInInheritance5.ts, 20, 75)) +>a12 : Symbol(A.a12, Decl(constructSignatureAssignabilityInInheritance5.ts, 20, 75)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance5.ts, 21, 14)) >Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >Base : Symbol(Base, Decl(constructSignatureAssignabilityInInheritance5.ts, 0, 0)) @@ -120,7 +120,7 @@ interface A { // T >Derived : Symbol(Derived, Decl(constructSignatureAssignabilityInInheritance5.ts, 3, 27)) a13: new (x: Array, y: Array) => Array; ->a13 : Symbol(a13, Decl(constructSignatureAssignabilityInInheritance5.ts, 21, 68)) +>a13 : Symbol(A.a13, Decl(constructSignatureAssignabilityInInheritance5.ts, 21, 68)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance5.ts, 22, 14)) >Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >Base : Symbol(Base, Decl(constructSignatureAssignabilityInInheritance5.ts, 0, 0)) @@ -131,7 +131,7 @@ interface A { // T >Derived : Symbol(Derived, Decl(constructSignatureAssignabilityInInheritance5.ts, 3, 27)) a14: new (x: { a: string; b: number }) => Object; ->a14 : Symbol(a14, Decl(constructSignatureAssignabilityInInheritance5.ts, 22, 67)) +>a14 : Symbol(A.a14, Decl(constructSignatureAssignabilityInInheritance5.ts, 22, 67)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance5.ts, 23, 14)) >a : Symbol(a, Decl(constructSignatureAssignabilityInInheritance5.ts, 23, 18)) >b : Symbol(b, Decl(constructSignatureAssignabilityInInheritance5.ts, 23, 29)) @@ -143,7 +143,7 @@ interface B extends A { >A : Symbol(A, Decl(constructSignatureAssignabilityInInheritance5.ts, 6, 49)) a: new (x: T) => T[]; ->a : Symbol(a, Decl(constructSignatureAssignabilityInInheritance5.ts, 26, 23)) +>a : Symbol(B.a, Decl(constructSignatureAssignabilityInInheritance5.ts, 26, 23)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance5.ts, 27, 12)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance5.ts, 27, 15)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance5.ts, 27, 12)) @@ -157,27 +157,27 @@ interface I extends B { // N's a: new (x: T) => T[]; // ok, instantiation of N is a subtype of M, T is number ->a : Symbol(a, Decl(constructSignatureAssignabilityInInheritance5.ts, 31, 23)) +>a : Symbol(I.a, Decl(constructSignatureAssignabilityInInheritance5.ts, 31, 23)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance5.ts, 33, 12)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance5.ts, 33, 15)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance5.ts, 33, 12)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance5.ts, 33, 12)) a2: new (x: T) => string[]; // ok ->a2 : Symbol(a2, Decl(constructSignatureAssignabilityInInheritance5.ts, 33, 28)) +>a2 : Symbol(I.a2, Decl(constructSignatureAssignabilityInInheritance5.ts, 33, 28)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance5.ts, 34, 13)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance5.ts, 34, 16)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance5.ts, 34, 13)) a3: new (x: T) => T; // ok since Base returns void ->a3 : Symbol(a3, Decl(constructSignatureAssignabilityInInheritance5.ts, 34, 34)) +>a3 : Symbol(I.a3, Decl(constructSignatureAssignabilityInInheritance5.ts, 34, 34)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance5.ts, 35, 13)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance5.ts, 35, 16)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance5.ts, 35, 13)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance5.ts, 35, 13)) a4: new (x: T, y: U) => T; // ok, instantiation of N is a subtype of M, T is string, U is number ->a4 : Symbol(a4, Decl(constructSignatureAssignabilityInInheritance5.ts, 35, 27)) +>a4 : Symbol(I.a4, Decl(constructSignatureAssignabilityInInheritance5.ts, 35, 27)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance5.ts, 36, 13)) >U : Symbol(U, Decl(constructSignatureAssignabilityInInheritance5.ts, 36, 15)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance5.ts, 36, 19)) @@ -187,7 +187,7 @@ interface I extends B { >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance5.ts, 36, 13)) a5: new (x: (arg: T) => U) => T; // ok, U is in a parameter position so inferences can be made ->a5 : Symbol(a5, Decl(constructSignatureAssignabilityInInheritance5.ts, 36, 36)) +>a5 : Symbol(I.a5, Decl(constructSignatureAssignabilityInInheritance5.ts, 36, 36)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance5.ts, 37, 13)) >U : Symbol(U, Decl(constructSignatureAssignabilityInInheritance5.ts, 37, 15)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance5.ts, 37, 19)) @@ -197,7 +197,7 @@ interface I extends B { >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance5.ts, 37, 13)) a6: new (x: (arg: T) => U) => T; // ok, same as a5 but with object type hierarchy ->a6 : Symbol(a6, Decl(constructSignatureAssignabilityInInheritance5.ts, 37, 42)) +>a6 : Symbol(I.a6, Decl(constructSignatureAssignabilityInInheritance5.ts, 37, 42)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance5.ts, 38, 13)) >Base : Symbol(Base, Decl(constructSignatureAssignabilityInInheritance5.ts, 0, 0)) >U : Symbol(U, Decl(constructSignatureAssignabilityInInheritance5.ts, 38, 28)) @@ -209,7 +209,7 @@ interface I extends B { >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance5.ts, 38, 13)) a7: new (x: (arg: T) => U) => (r: T) => U; // ok ->a7 : Symbol(a7, Decl(constructSignatureAssignabilityInInheritance5.ts, 38, 71)) +>a7 : Symbol(I.a7, Decl(constructSignatureAssignabilityInInheritance5.ts, 38, 71)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance5.ts, 39, 13)) >Base : Symbol(Base, Decl(constructSignatureAssignabilityInInheritance5.ts, 0, 0)) >U : Symbol(U, Decl(constructSignatureAssignabilityInInheritance5.ts, 39, 28)) @@ -223,7 +223,7 @@ interface I extends B { >U : Symbol(U, Decl(constructSignatureAssignabilityInInheritance5.ts, 39, 28)) a8: new (x: (arg: T) => U, y: (arg2: T) => U) => (r: T) => U; // ok ->a8 : Symbol(a8, Decl(constructSignatureAssignabilityInInheritance5.ts, 39, 81)) +>a8 : Symbol(I.a8, Decl(constructSignatureAssignabilityInInheritance5.ts, 39, 81)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance5.ts, 40, 13)) >Base : Symbol(Base, Decl(constructSignatureAssignabilityInInheritance5.ts, 0, 0)) >U : Symbol(U, Decl(constructSignatureAssignabilityInInheritance5.ts, 40, 28)) @@ -241,7 +241,7 @@ interface I extends B { >U : Symbol(U, Decl(constructSignatureAssignabilityInInheritance5.ts, 40, 28)) a9: new (x: (arg: T) => U, y: (arg2: { foo: string; bing: number }) => U) => (r: T) => U; // ok, same as a8 with compatible object literal ->a9 : Symbol(a9, Decl(constructSignatureAssignabilityInInheritance5.ts, 40, 100)) +>a9 : Symbol(I.a9, Decl(constructSignatureAssignabilityInInheritance5.ts, 40, 100)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance5.ts, 41, 13)) >Base : Symbol(Base, Decl(constructSignatureAssignabilityInInheritance5.ts, 0, 0)) >U : Symbol(U, Decl(constructSignatureAssignabilityInInheritance5.ts, 41, 28)) @@ -260,7 +260,7 @@ interface I extends B { >U : Symbol(U, Decl(constructSignatureAssignabilityInInheritance5.ts, 41, 28)) a10: new (...x: T[]) => T; // ok ->a10 : Symbol(a10, Decl(constructSignatureAssignabilityInInheritance5.ts, 41, 128)) +>a10 : Symbol(I.a10, Decl(constructSignatureAssignabilityInInheritance5.ts, 41, 128)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance5.ts, 42, 14)) >Derived : Symbol(Derived, Decl(constructSignatureAssignabilityInInheritance5.ts, 3, 27)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance5.ts, 42, 33)) @@ -268,7 +268,7 @@ interface I extends B { >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance5.ts, 42, 14)) a11: new (x: T, y: T) => T; // ok ->a11 : Symbol(a11, Decl(constructSignatureAssignabilityInInheritance5.ts, 42, 49)) +>a11 : Symbol(I.a11, Decl(constructSignatureAssignabilityInInheritance5.ts, 42, 49)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance5.ts, 43, 14)) >Base : Symbol(Base, Decl(constructSignatureAssignabilityInInheritance5.ts, 0, 0)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance5.ts, 43, 30)) @@ -278,7 +278,7 @@ interface I extends B { >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance5.ts, 43, 14)) a12: new >(x: Array, y: T) => Array; // ok, less specific parameter type ->a12 : Symbol(a12, Decl(constructSignatureAssignabilityInInheritance5.ts, 43, 47)) +>a12 : Symbol(I.a12, Decl(constructSignatureAssignabilityInInheritance5.ts, 43, 47)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance5.ts, 44, 14)) >Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >Base : Symbol(Base, Decl(constructSignatureAssignabilityInInheritance5.ts, 0, 0)) @@ -291,7 +291,7 @@ interface I extends B { >Derived : Symbol(Derived, Decl(constructSignatureAssignabilityInInheritance5.ts, 3, 27)) a13: new >(x: Array, y: T) => T; // ok, T = Array, satisfies constraint, contextual signature instantiation succeeds ->a13 : Symbol(a13, Decl(constructSignatureAssignabilityInInheritance5.ts, 44, 77)) +>a13 : Symbol(I.a13, Decl(constructSignatureAssignabilityInInheritance5.ts, 44, 77)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance5.ts, 45, 14)) >Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >Derived : Symbol(Derived, Decl(constructSignatureAssignabilityInInheritance5.ts, 3, 27)) @@ -303,7 +303,7 @@ interface I extends B { >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance5.ts, 45, 14)) a14: new (x: { a: T; b: T }) => T; // ok, best common type yields T = {} but that's satisfactory for this signature ->a14 : Symbol(a14, Decl(constructSignatureAssignabilityInInheritance5.ts, 45, 67)) +>a14 : Symbol(I.a14, Decl(constructSignatureAssignabilityInInheritance5.ts, 45, 67)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance5.ts, 46, 14)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance5.ts, 46, 17)) >a : Symbol(a, Decl(constructSignatureAssignabilityInInheritance5.ts, 46, 21)) diff --git a/tests/baselines/reference/constructSignatureAssignabilityInInheritance6.symbols b/tests/baselines/reference/constructSignatureAssignabilityInInheritance6.symbols index 6f80b15484c..bf1a70e1651 100644 --- a/tests/baselines/reference/constructSignatureAssignabilityInInheritance6.symbols +++ b/tests/baselines/reference/constructSignatureAssignabilityInInheritance6.symbols @@ -5,48 +5,48 @@ class Base { foo: string; } >Base : Symbol(Base, Decl(constructSignatureAssignabilityInInheritance6.ts, 0, 0)) ->foo : Symbol(foo, Decl(constructSignatureAssignabilityInInheritance6.ts, 4, 12)) +>foo : Symbol(Base.foo, Decl(constructSignatureAssignabilityInInheritance6.ts, 4, 12)) class Derived extends Base { bar: string; } >Derived : Symbol(Derived, Decl(constructSignatureAssignabilityInInheritance6.ts, 4, 27)) >Base : Symbol(Base, Decl(constructSignatureAssignabilityInInheritance6.ts, 0, 0)) ->bar : Symbol(bar, Decl(constructSignatureAssignabilityInInheritance6.ts, 5, 28)) +>bar : Symbol(Derived.bar, Decl(constructSignatureAssignabilityInInheritance6.ts, 5, 28)) class Derived2 extends Derived { baz: string; } >Derived2 : Symbol(Derived2, Decl(constructSignatureAssignabilityInInheritance6.ts, 5, 43)) >Derived : Symbol(Derived, Decl(constructSignatureAssignabilityInInheritance6.ts, 4, 27)) ->baz : Symbol(baz, Decl(constructSignatureAssignabilityInInheritance6.ts, 6, 32)) +>baz : Symbol(Derived2.baz, Decl(constructSignatureAssignabilityInInheritance6.ts, 6, 32)) class OtherDerived extends Base { bing: string; } >OtherDerived : Symbol(OtherDerived, Decl(constructSignatureAssignabilityInInheritance6.ts, 6, 47)) >Base : Symbol(Base, Decl(constructSignatureAssignabilityInInheritance6.ts, 0, 0)) ->bing : Symbol(bing, Decl(constructSignatureAssignabilityInInheritance6.ts, 7, 33)) +>bing : Symbol(OtherDerived.bing, Decl(constructSignatureAssignabilityInInheritance6.ts, 7, 33)) interface A { // T >A : Symbol(A, Decl(constructSignatureAssignabilityInInheritance6.ts, 7, 49)) // M's a: new (x: T) => T[]; ->a : Symbol(a, Decl(constructSignatureAssignabilityInInheritance6.ts, 9, 13)) +>a : Symbol(A.a, Decl(constructSignatureAssignabilityInInheritance6.ts, 9, 13)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance6.ts, 11, 12)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance6.ts, 11, 15)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance6.ts, 11, 12)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance6.ts, 11, 12)) a2: new (x: T) => string[]; ->a2 : Symbol(a2, Decl(constructSignatureAssignabilityInInheritance6.ts, 11, 28)) +>a2 : Symbol(A.a2, Decl(constructSignatureAssignabilityInInheritance6.ts, 11, 28)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance6.ts, 12, 13)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance6.ts, 12, 16)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance6.ts, 12, 13)) a3: new (x: T) => void; ->a3 : Symbol(a3, Decl(constructSignatureAssignabilityInInheritance6.ts, 12, 34)) +>a3 : Symbol(A.a3, Decl(constructSignatureAssignabilityInInheritance6.ts, 12, 34)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance6.ts, 13, 13)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance6.ts, 13, 16)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance6.ts, 13, 13)) a4: new (x: T, y: U) => string; ->a4 : Symbol(a4, Decl(constructSignatureAssignabilityInInheritance6.ts, 13, 30)) +>a4 : Symbol(A.a4, Decl(constructSignatureAssignabilityInInheritance6.ts, 13, 30)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance6.ts, 14, 13)) >U : Symbol(U, Decl(constructSignatureAssignabilityInInheritance6.ts, 14, 15)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance6.ts, 14, 19)) @@ -55,7 +55,7 @@ interface A { // T >U : Symbol(U, Decl(constructSignatureAssignabilityInInheritance6.ts, 14, 15)) a5: new (x: (arg: T) => U) => T; ->a5 : Symbol(a5, Decl(constructSignatureAssignabilityInInheritance6.ts, 14, 41)) +>a5 : Symbol(A.a5, Decl(constructSignatureAssignabilityInInheritance6.ts, 14, 41)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance6.ts, 15, 13)) >U : Symbol(U, Decl(constructSignatureAssignabilityInInheritance6.ts, 15, 15)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance6.ts, 15, 19)) @@ -65,7 +65,7 @@ interface A { // T >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance6.ts, 15, 13)) a6: new (x: (arg: T) => Derived) => T; ->a6 : Symbol(a6, Decl(constructSignatureAssignabilityInInheritance6.ts, 15, 42)) +>a6 : Symbol(A.a6, Decl(constructSignatureAssignabilityInInheritance6.ts, 15, 42)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance6.ts, 16, 13)) >Base : Symbol(Base, Decl(constructSignatureAssignabilityInInheritance6.ts, 0, 0)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance6.ts, 16, 29)) @@ -75,7 +75,7 @@ interface A { // T >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance6.ts, 16, 13)) a11: new (x: { foo: T }, y: { foo: T; bar: T }) => Base; ->a11 : Symbol(a11, Decl(constructSignatureAssignabilityInInheritance6.ts, 16, 58)) +>a11 : Symbol(A.a11, Decl(constructSignatureAssignabilityInInheritance6.ts, 16, 58)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance6.ts, 17, 14)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance6.ts, 17, 17)) >foo : Symbol(foo, Decl(constructSignatureAssignabilityInInheritance6.ts, 17, 21)) @@ -88,7 +88,7 @@ interface A { // T >Base : Symbol(Base, Decl(constructSignatureAssignabilityInInheritance6.ts, 0, 0)) a15: new (x: { a: T; b: T }) => T[]; ->a15 : Symbol(a15, Decl(constructSignatureAssignabilityInInheritance6.ts, 17, 63)) +>a15 : Symbol(A.a15, Decl(constructSignatureAssignabilityInInheritance6.ts, 17, 63)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance6.ts, 18, 14)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance6.ts, 18, 17)) >a : Symbol(a, Decl(constructSignatureAssignabilityInInheritance6.ts, 18, 21)) @@ -98,7 +98,7 @@ interface A { // T >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance6.ts, 18, 14)) a16: new (x: { a: T; b: T }) => T[]; ->a16 : Symbol(a16, Decl(constructSignatureAssignabilityInInheritance6.ts, 18, 43)) +>a16 : Symbol(A.a16, Decl(constructSignatureAssignabilityInInheritance6.ts, 18, 43)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance6.ts, 19, 14)) >Base : Symbol(Base, Decl(constructSignatureAssignabilityInInheritance6.ts, 0, 0)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance6.ts, 19, 30)) @@ -116,7 +116,7 @@ interface I extends A { >A : Symbol(A, Decl(constructSignatureAssignabilityInInheritance6.ts, 7, 49)) a: new (x: T) => T[]; ->a : Symbol(a, Decl(constructSignatureAssignabilityInInheritance6.ts, 23, 26)) +>a : Symbol(I.a, Decl(constructSignatureAssignabilityInInheritance6.ts, 23, 26)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance6.ts, 24, 12)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance6.ts, 23, 12)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance6.ts, 23, 12)) @@ -128,7 +128,7 @@ interface I2 extends A { >A : Symbol(A, Decl(constructSignatureAssignabilityInInheritance6.ts, 7, 49)) a2: new (x: T) => string[]; ->a2 : Symbol(a2, Decl(constructSignatureAssignabilityInInheritance6.ts, 27, 27)) +>a2 : Symbol(I2.a2, Decl(constructSignatureAssignabilityInInheritance6.ts, 27, 27)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance6.ts, 28, 13)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance6.ts, 27, 13)) } @@ -139,7 +139,7 @@ interface I3 extends A { >A : Symbol(A, Decl(constructSignatureAssignabilityInInheritance6.ts, 7, 49)) a3: new (x: T) => T; ->a3 : Symbol(a3, Decl(constructSignatureAssignabilityInInheritance6.ts, 31, 27)) +>a3 : Symbol(I3.a3, Decl(constructSignatureAssignabilityInInheritance6.ts, 31, 27)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance6.ts, 32, 13)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance6.ts, 31, 13)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance6.ts, 31, 13)) @@ -151,7 +151,7 @@ interface I4 extends A { >A : Symbol(A, Decl(constructSignatureAssignabilityInInheritance6.ts, 7, 49)) a4: new (x: T, y: U) => string; ->a4 : Symbol(a4, Decl(constructSignatureAssignabilityInInheritance6.ts, 35, 27)) +>a4 : Symbol(I4.a4, Decl(constructSignatureAssignabilityInInheritance6.ts, 35, 27)) >U : Symbol(U, Decl(constructSignatureAssignabilityInInheritance6.ts, 36, 13)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance6.ts, 36, 16)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance6.ts, 35, 13)) @@ -165,7 +165,7 @@ interface I5 extends A { >A : Symbol(A, Decl(constructSignatureAssignabilityInInheritance6.ts, 7, 49)) a5: new (x: (arg: T) => U) => T; ->a5 : Symbol(a5, Decl(constructSignatureAssignabilityInInheritance6.ts, 39, 27)) +>a5 : Symbol(I5.a5, Decl(constructSignatureAssignabilityInInheritance6.ts, 39, 27)) >U : Symbol(U, Decl(constructSignatureAssignabilityInInheritance6.ts, 40, 13)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance6.ts, 40, 16)) >arg : Symbol(arg, Decl(constructSignatureAssignabilityInInheritance6.ts, 40, 20)) @@ -180,7 +180,7 @@ interface I7 extends A { >A : Symbol(A, Decl(constructSignatureAssignabilityInInheritance6.ts, 7, 49)) a11: new (x: { foo: T }, y: { foo: U; bar: U }) => Base; ->a11 : Symbol(a11, Decl(constructSignatureAssignabilityInInheritance6.ts, 43, 27)) +>a11 : Symbol(I7.a11, Decl(constructSignatureAssignabilityInInheritance6.ts, 43, 27)) >U : Symbol(U, Decl(constructSignatureAssignabilityInInheritance6.ts, 44, 14)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance6.ts, 44, 17)) >foo : Symbol(foo, Decl(constructSignatureAssignabilityInInheritance6.ts, 44, 21)) @@ -199,7 +199,7 @@ interface I9 extends A { >A : Symbol(A, Decl(constructSignatureAssignabilityInInheritance6.ts, 7, 49)) a16: new (x: { a: T; b: T }) => T[]; ->a16 : Symbol(a16, Decl(constructSignatureAssignabilityInInheritance6.ts, 47, 27)) +>a16 : Symbol(I9.a16, Decl(constructSignatureAssignabilityInInheritance6.ts, 47, 27)) >x : Symbol(x, Decl(constructSignatureAssignabilityInInheritance6.ts, 48, 14)) >a : Symbol(a, Decl(constructSignatureAssignabilityInInheritance6.ts, 48, 18)) >T : Symbol(T, Decl(constructSignatureAssignabilityInInheritance6.ts, 47, 13)) diff --git a/tests/baselines/reference/constructorArgs.symbols b/tests/baselines/reference/constructorArgs.symbols index 083a094a4cd..ef21795b66f 100644 --- a/tests/baselines/reference/constructorArgs.symbols +++ b/tests/baselines/reference/constructorArgs.symbols @@ -3,7 +3,7 @@ interface Options { >Options : Symbol(Options, Decl(constructorArgs.ts, 0, 0)) value: number; ->value : Symbol(value, Decl(constructorArgs.ts, 0, 19)) +>value : Symbol(Options.value, Decl(constructorArgs.ts, 0, 19)) } class Super { @@ -19,7 +19,7 @@ class Sub extends Super { >Super : Symbol(Super, Decl(constructorArgs.ts, 2, 1)) constructor(public options:Options) { ->options : Symbol(options, Decl(constructorArgs.ts, 10, 13)) +>options : Symbol(Sub.options, Decl(constructorArgs.ts, 10, 13)) >Options : Symbol(Options, Decl(constructorArgs.ts, 0, 0)) super(options.value); diff --git a/tests/baselines/reference/constructorHasPrototypeProperty.symbols b/tests/baselines/reference/constructorHasPrototypeProperty.symbols index 0a90834ac51..b3f610db6dc 100644 --- a/tests/baselines/reference/constructorHasPrototypeProperty.symbols +++ b/tests/baselines/reference/constructorHasPrototypeProperty.symbols @@ -6,7 +6,7 @@ module NonGeneric { >C : Symbol(C, Decl(constructorHasPrototypeProperty.ts, 0, 19)) foo: string; ->foo : Symbol(foo, Decl(constructorHasPrototypeProperty.ts, 1, 13)) +>foo : Symbol(C.foo, Decl(constructorHasPrototypeProperty.ts, 1, 13)) } class D extends C { @@ -14,7 +14,7 @@ module NonGeneric { >C : Symbol(C, Decl(constructorHasPrototypeProperty.ts, 0, 19)) bar: string; ->bar : Symbol(bar, Decl(constructorHasPrototypeProperty.ts, 5, 23)) +>bar : Symbol(D.bar, Decl(constructorHasPrototypeProperty.ts, 5, 23)) } var r = C.prototype; @@ -49,11 +49,11 @@ module Generic { >U : Symbol(U, Decl(constructorHasPrototypeProperty.ts, 16, 14)) foo: T; ->foo : Symbol(foo, Decl(constructorHasPrototypeProperty.ts, 16, 18)) +>foo : Symbol(C.foo, Decl(constructorHasPrototypeProperty.ts, 16, 18)) >T : Symbol(T, Decl(constructorHasPrototypeProperty.ts, 16, 12)) bar: U; ->bar : Symbol(bar, Decl(constructorHasPrototypeProperty.ts, 17, 15)) +>bar : Symbol(C.bar, Decl(constructorHasPrototypeProperty.ts, 17, 15)) >U : Symbol(U, Decl(constructorHasPrototypeProperty.ts, 16, 14)) } @@ -66,11 +66,11 @@ module Generic { >U : Symbol(U, Decl(constructorHasPrototypeProperty.ts, 21, 14)) baz: T; ->baz : Symbol(baz, Decl(constructorHasPrototypeProperty.ts, 21, 33)) +>baz : Symbol(D.baz, Decl(constructorHasPrototypeProperty.ts, 21, 33)) >T : Symbol(T, Decl(constructorHasPrototypeProperty.ts, 21, 12)) bing: U; ->bing : Symbol(bing, Decl(constructorHasPrototypeProperty.ts, 22, 15)) +>bing : Symbol(D.bing, Decl(constructorHasPrototypeProperty.ts, 22, 15)) >U : Symbol(U, Decl(constructorHasPrototypeProperty.ts, 21, 14)) } diff --git a/tests/baselines/reference/constructorImplementationWithDefaultValues.symbols b/tests/baselines/reference/constructorImplementationWithDefaultValues.symbols index a96e053132e..7403c126f45 100644 --- a/tests/baselines/reference/constructorImplementationWithDefaultValues.symbols +++ b/tests/baselines/reference/constructorImplementationWithDefaultValues.symbols @@ -34,7 +34,7 @@ class D { class E { >E : Symbol(E, Decl(constructorImplementationWithDefaultValues.ts, 12, 1)) >T : Symbol(T, Decl(constructorImplementationWithDefaultValues.ts, 14, 8)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) constructor(x); >x : Symbol(x, Decl(constructorImplementationWithDefaultValues.ts, 15, 16)) diff --git a/tests/baselines/reference/constructorOverloads2.symbols b/tests/baselines/reference/constructorOverloads2.symbols index b2b9db6eda3..d2c5acf3b67 100644 --- a/tests/baselines/reference/constructorOverloads2.symbols +++ b/tests/baselines/reference/constructorOverloads2.symbols @@ -12,7 +12,7 @@ class FooBase { >x : Symbol(x, Decl(constructorOverloads2.ts, 3, 16)) } bar1() { /*WScript.Echo("base bar1");*/ } ->bar1 : Symbol(bar1, Decl(constructorOverloads2.ts, 4, 5)) +>bar1 : Symbol(FooBase.bar1, Decl(constructorOverloads2.ts, 4, 5)) } class Foo extends FooBase { @@ -37,7 +37,7 @@ class Foo extends FooBase { >x : Symbol(x, Decl(constructorOverloads2.ts, 12, 16)) } bar1() { /*WScript.Echo("bar1");*/ } ->bar1 : Symbol(bar1, Decl(constructorOverloads2.ts, 14, 5)) +>bar1 : Symbol(Foo.bar1, Decl(constructorOverloads2.ts, 14, 5)) } var f1 = new Foo("hey"); diff --git a/tests/baselines/reference/constructorOverloadsWithOptionalParameters.symbols b/tests/baselines/reference/constructorOverloadsWithOptionalParameters.symbols index 68cecd8f912..08404ab84e7 100644 --- a/tests/baselines/reference/constructorOverloadsWithOptionalParameters.symbols +++ b/tests/baselines/reference/constructorOverloadsWithOptionalParameters.symbols @@ -3,7 +3,7 @@ class C { >C : Symbol(C, Decl(constructorOverloadsWithOptionalParameters.ts, 0, 0)) foo: string; ->foo : Symbol(foo, Decl(constructorOverloadsWithOptionalParameters.ts, 0, 9)) +>foo : Symbol(C.foo, Decl(constructorOverloadsWithOptionalParameters.ts, 0, 9)) constructor(x?, y?: any[]); >x : Symbol(x, Decl(constructorOverloadsWithOptionalParameters.ts, 2, 16)) @@ -18,7 +18,7 @@ class D { >T : Symbol(T, Decl(constructorOverloadsWithOptionalParameters.ts, 7, 8)) foo: string; ->foo : Symbol(foo, Decl(constructorOverloadsWithOptionalParameters.ts, 7, 12)) +>foo : Symbol(D.foo, Decl(constructorOverloadsWithOptionalParameters.ts, 7, 12)) constructor(x?, y?: any[]); >x : Symbol(x, Decl(constructorOverloadsWithOptionalParameters.ts, 9, 16)) diff --git a/tests/baselines/reference/constructorWithExpressionLessReturn.symbols b/tests/baselines/reference/constructorWithExpressionLessReturn.symbols index 0d6f06a91a4..3424e53c51a 100644 --- a/tests/baselines/reference/constructorWithExpressionLessReturn.symbols +++ b/tests/baselines/reference/constructorWithExpressionLessReturn.symbols @@ -11,7 +11,7 @@ class D { >D : Symbol(D, Decl(constructorWithExpressionLessReturn.ts, 4, 1)) x: number; ->x : Symbol(x, Decl(constructorWithExpressionLessReturn.ts, 6, 9)) +>x : Symbol(D.x, Decl(constructorWithExpressionLessReturn.ts, 6, 9)) constructor() { return; @@ -22,7 +22,7 @@ class E { >E : Symbol(E, Decl(constructorWithExpressionLessReturn.ts, 11, 1)) constructor(public x: number) { ->x : Symbol(x, Decl(constructorWithExpressionLessReturn.ts, 14, 16)) +>x : Symbol(E.x, Decl(constructorWithExpressionLessReturn.ts, 14, 16)) return; } @@ -33,7 +33,7 @@ class F { >T : Symbol(T, Decl(constructorWithExpressionLessReturn.ts, 19, 8)) constructor(public x: T) { ->x : Symbol(x, Decl(constructorWithExpressionLessReturn.ts, 20, 16)) +>x : Symbol(F.x, Decl(constructorWithExpressionLessReturn.ts, 20, 16)) >T : Symbol(T, Decl(constructorWithExpressionLessReturn.ts, 19, 8)) return; diff --git a/tests/baselines/reference/contextualSignatureInstatiationContravariance.symbols b/tests/baselines/reference/contextualSignatureInstatiationContravariance.symbols index c19c61cdbb0..37a0c4adb02 100644 --- a/tests/baselines/reference/contextualSignatureInstatiationContravariance.symbols +++ b/tests/baselines/reference/contextualSignatureInstatiationContravariance.symbols @@ -1,17 +1,17 @@ === tests/cases/compiler/contextualSignatureInstatiationContravariance.ts === interface Animal { x } >Animal : Symbol(Animal, Decl(contextualSignatureInstatiationContravariance.ts, 0, 0)) ->x : Symbol(x, Decl(contextualSignatureInstatiationContravariance.ts, 0, 18)) +>x : Symbol(Animal.x, Decl(contextualSignatureInstatiationContravariance.ts, 0, 18)) interface Giraffe extends Animal { y } >Giraffe : Symbol(Giraffe, Decl(contextualSignatureInstatiationContravariance.ts, 0, 22)) >Animal : Symbol(Animal, Decl(contextualSignatureInstatiationContravariance.ts, 0, 0)) ->y : Symbol(y, Decl(contextualSignatureInstatiationContravariance.ts, 1, 34)) +>y : Symbol(Giraffe.y, Decl(contextualSignatureInstatiationContravariance.ts, 1, 34)) interface Elephant extends Animal { y2 } >Elephant : Symbol(Elephant, Decl(contextualSignatureInstatiationContravariance.ts, 1, 38)) >Animal : Symbol(Animal, Decl(contextualSignatureInstatiationContravariance.ts, 0, 0)) ->y2 : Symbol(y2, Decl(contextualSignatureInstatiationContravariance.ts, 2, 35)) +>y2 : Symbol(Elephant.y2, Decl(contextualSignatureInstatiationContravariance.ts, 2, 35)) var f2: (x: T, y: T) => void; >f2 : Symbol(f2, Decl(contextualSignatureInstatiationContravariance.ts, 4, 3)) diff --git a/tests/baselines/reference/contextualSignatureInstatiationCovariance.symbols b/tests/baselines/reference/contextualSignatureInstatiationCovariance.symbols index 9b1b4c0c5f0..ff8582bb26a 100644 --- a/tests/baselines/reference/contextualSignatureInstatiationCovariance.symbols +++ b/tests/baselines/reference/contextualSignatureInstatiationCovariance.symbols @@ -1,17 +1,17 @@ === tests/cases/compiler/contextualSignatureInstatiationCovariance.ts === interface Animal { x } >Animal : Symbol(Animal, Decl(contextualSignatureInstatiationCovariance.ts, 0, 0)) ->x : Symbol(x, Decl(contextualSignatureInstatiationCovariance.ts, 0, 18)) +>x : Symbol(Animal.x, Decl(contextualSignatureInstatiationCovariance.ts, 0, 18)) interface TallThing { x2 } >TallThing : Symbol(TallThing, Decl(contextualSignatureInstatiationCovariance.ts, 0, 22)) ->x2 : Symbol(x2, Decl(contextualSignatureInstatiationCovariance.ts, 1, 21)) +>x2 : Symbol(TallThing.x2, Decl(contextualSignatureInstatiationCovariance.ts, 1, 21)) interface Giraffe extends Animal, TallThing { y } >Giraffe : Symbol(Giraffe, Decl(contextualSignatureInstatiationCovariance.ts, 1, 26)) >Animal : Symbol(Animal, Decl(contextualSignatureInstatiationCovariance.ts, 0, 0)) >TallThing : Symbol(TallThing, Decl(contextualSignatureInstatiationCovariance.ts, 0, 22)) ->y : Symbol(y, Decl(contextualSignatureInstatiationCovariance.ts, 2, 45)) +>y : Symbol(Giraffe.y, Decl(contextualSignatureInstatiationCovariance.ts, 2, 45)) var f2: (x: T, y: T) => void; >f2 : Symbol(f2, Decl(contextualSignatureInstatiationCovariance.ts, 4, 3)) diff --git a/tests/baselines/reference/contextualThisType.symbols b/tests/baselines/reference/contextualThisType.symbols index 5030a9bbcde..b5f4a7d7bb7 100644 --- a/tests/baselines/reference/contextualThisType.symbols +++ b/tests/baselines/reference/contextualThisType.symbols @@ -3,7 +3,7 @@ interface X { >X : Symbol(X, Decl(contextualThisType.ts, 0, 0)) a: (p: this) => this; ->a : Symbol(a, Decl(contextualThisType.ts, 0, 13)) +>a : Symbol(X.a, Decl(contextualThisType.ts, 0, 13)) >p : Symbol(p, Decl(contextualThisType.ts, 1, 8)) } diff --git a/tests/baselines/reference/contextualTypeAppliedToVarArgs.symbols b/tests/baselines/reference/contextualTypeAppliedToVarArgs.symbols index bf8774cc7f0..4c87eef268c 100644 --- a/tests/baselines/reference/contextualTypeAppliedToVarArgs.symbols +++ b/tests/baselines/reference/contextualTypeAppliedToVarArgs.symbols @@ -15,7 +15,7 @@ class Foo{ Bar() { ->Bar : Symbol(Bar, Decl(contextualTypeAppliedToVarArgs.ts, 4, 10)) +>Bar : Symbol(Foo.Bar, Decl(contextualTypeAppliedToVarArgs.ts, 4, 10)) delegate(this, function (source, args2) >delegate : Symbol(delegate, Decl(contextualTypeAppliedToVarArgs.ts, 0, 0)) diff --git a/tests/baselines/reference/contextualTypeArrayReturnType.symbols b/tests/baselines/reference/contextualTypeArrayReturnType.symbols index ed0e22d698c..2982a1ce893 100644 --- a/tests/baselines/reference/contextualTypeArrayReturnType.symbols +++ b/tests/baselines/reference/contextualTypeArrayReturnType.symbols @@ -3,7 +3,7 @@ interface IBookStyle { >IBookStyle : Symbol(IBookStyle, Decl(contextualTypeArrayReturnType.ts, 0, 0)) initialLeftPageTransforms?: (width: number) => NamedTransform[]; ->initialLeftPageTransforms : Symbol(initialLeftPageTransforms, Decl(contextualTypeArrayReturnType.ts, 0, 22)) +>initialLeftPageTransforms : Symbol(IBookStyle.initialLeftPageTransforms, Decl(contextualTypeArrayReturnType.ts, 0, 22)) >width : Symbol(width, Decl(contextualTypeArrayReturnType.ts, 1, 33)) >NamedTransform : Symbol(NamedTransform, Decl(contextualTypeArrayReturnType.ts, 2, 1)) } @@ -20,7 +20,7 @@ interface Transform3D { >Transform3D : Symbol(Transform3D, Decl(contextualTypeArrayReturnType.ts, 6, 1)) cachedCss: string; ->cachedCss : Symbol(cachedCss, Decl(contextualTypeArrayReturnType.ts, 8, 23)) +>cachedCss : Symbol(Transform3D.cachedCss, Decl(contextualTypeArrayReturnType.ts, 8, 23)) } var style: IBookStyle = { diff --git a/tests/baselines/reference/contextualTypeWithTuple.errors.txt b/tests/baselines/reference/contextualTypeWithTuple.errors.txt index e447ed62b39..a2d3b224ddc 100644 --- a/tests/baselines/reference/contextualTypeWithTuple.errors.txt +++ b/tests/baselines/reference/contextualTypeWithTuple.errors.txt @@ -3,7 +3,6 @@ tests/cases/conformance/types/tuple/contextualTypeWithTuple.ts(3,5): error TS232 Type '() => number | string | boolean' is not assignable to type '() => number | string'. Type 'number | string | boolean' is not assignable to type 'number | string'. Type 'boolean' is not assignable to type 'number | string'. - Type 'boolean' is not assignable to type 'string'. tests/cases/conformance/types/tuple/contextualTypeWithTuple.ts(15,1): error TS2322: Type '[number, string, boolean]' is not assignable to type '[number, string]'. tests/cases/conformance/types/tuple/contextualTypeWithTuple.ts(18,1): error TS2322: Type '[{}, number]' is not assignable to type '[{ a: string; }, number]'. Types of property '0' are incompatible. @@ -34,7 +33,6 @@ tests/cases/conformance/types/tuple/contextualTypeWithTuple.ts(25,1): error TS23 !!! error TS2322: Type '() => number | string | boolean' is not assignable to type '() => number | string'. !!! error TS2322: Type 'number | string | boolean' is not assignable to type 'number | string'. !!! error TS2322: Type 'boolean' is not assignable to type 'number | string'. -!!! error TS2322: Type 'boolean' is not assignable to type 'string'. var numStrBoolTuple: [number, string, boolean] = [5, "foo", true]; var objNumTuple: [{ a: string }, number] = [{ a: "world" }, 5]; var strTupleTuple: [string, [number, {}]] = ["bar", [5, { x: 1, y: 1 }]]; diff --git a/tests/baselines/reference/contextualTypeWithUnionTypeCallSignatures.symbols b/tests/baselines/reference/contextualTypeWithUnionTypeCallSignatures.symbols index 13f95623fd5..530779be29d 100644 --- a/tests/baselines/reference/contextualTypeWithUnionTypeCallSignatures.symbols +++ b/tests/baselines/reference/contextualTypeWithUnionTypeCallSignatures.symbols @@ -10,7 +10,7 @@ interface IWithNoCallSignatures { >IWithNoCallSignatures : Symbol(IWithNoCallSignatures, Decl(contextualTypeWithUnionTypeCallSignatures.ts, 0, 0)) foo: string; ->foo : Symbol(foo, Decl(contextualTypeWithUnionTypeCallSignatures.ts, 7, 33)) +>foo : Symbol(IWithNoCallSignatures.foo, Decl(contextualTypeWithUnionTypeCallSignatures.ts, 7, 33)) } interface IWithCallSignatures { >IWithCallSignatures : Symbol(IWithCallSignatures, Decl(contextualTypeWithUnionTypeCallSignatures.ts, 9, 1)) diff --git a/tests/baselines/reference/contextualTypeWithUnionTypeIndexSignatures.symbols b/tests/baselines/reference/contextualTypeWithUnionTypeIndexSignatures.symbols index 14b595f8b33..985bb52f243 100644 --- a/tests/baselines/reference/contextualTypeWithUnionTypeIndexSignatures.symbols +++ b/tests/baselines/reference/contextualTypeWithUnionTypeIndexSignatures.symbols @@ -18,7 +18,7 @@ interface IWithNoStringIndexSignature { >IWithNoStringIndexSignature : Symbol(IWithNoStringIndexSignature, Decl(contextualTypeWithUnionTypeIndexSignatures.ts, 7, 1)) foo: string; ->foo : Symbol(foo, Decl(contextualTypeWithUnionTypeIndexSignatures.ts, 9, 39)) +>foo : Symbol(IWithNoStringIndexSignature.foo, Decl(contextualTypeWithUnionTypeIndexSignatures.ts, 9, 39)) } interface IWithNoNumberIndexSignature { >IWithNoNumberIndexSignature : Symbol(IWithNoNumberIndexSignature, Decl(contextualTypeWithUnionTypeIndexSignatures.ts, 11, 1)) diff --git a/tests/baselines/reference/contextualTypeWithUnionTypeMembers.symbols b/tests/baselines/reference/contextualTypeWithUnionTypeMembers.symbols index 5a0891c3b88..2b5eb35aa07 100644 --- a/tests/baselines/reference/contextualTypeWithUnionTypeMembers.symbols +++ b/tests/baselines/reference/contextualTypeWithUnionTypeMembers.symbols @@ -6,48 +6,48 @@ interface I1 { >T : Symbol(T, Decl(contextualTypeWithUnionTypeMembers.ts, 2, 13)) commonMethodType(a: string): string; ->commonMethodType : Symbol(commonMethodType, Decl(contextualTypeWithUnionTypeMembers.ts, 2, 17)) +>commonMethodType : Symbol(I1.commonMethodType, Decl(contextualTypeWithUnionTypeMembers.ts, 2, 17)) >a : Symbol(a, Decl(contextualTypeWithUnionTypeMembers.ts, 3, 21)) commonPropertyType: string; ->commonPropertyType : Symbol(commonPropertyType, Decl(contextualTypeWithUnionTypeMembers.ts, 3, 40)) +>commonPropertyType : Symbol(I1.commonPropertyType, Decl(contextualTypeWithUnionTypeMembers.ts, 3, 40)) commonMethodWithTypeParameter(a: T): T; ->commonMethodWithTypeParameter : Symbol(commonMethodWithTypeParameter, Decl(contextualTypeWithUnionTypeMembers.ts, 4, 31)) +>commonMethodWithTypeParameter : Symbol(I1.commonMethodWithTypeParameter, Decl(contextualTypeWithUnionTypeMembers.ts, 4, 31)) >a : Symbol(a, Decl(contextualTypeWithUnionTypeMembers.ts, 5, 34)) >T : Symbol(T, Decl(contextualTypeWithUnionTypeMembers.ts, 2, 13)) >T : Symbol(T, Decl(contextualTypeWithUnionTypeMembers.ts, 2, 13)) methodOnlyInI1(a: string): string; ->methodOnlyInI1 : Symbol(methodOnlyInI1, Decl(contextualTypeWithUnionTypeMembers.ts, 5, 43)) +>methodOnlyInI1 : Symbol(I1.methodOnlyInI1, Decl(contextualTypeWithUnionTypeMembers.ts, 5, 43)) >a : Symbol(a, Decl(contextualTypeWithUnionTypeMembers.ts, 7, 19)) propertyOnlyInI1: string; ->propertyOnlyInI1 : Symbol(propertyOnlyInI1, Decl(contextualTypeWithUnionTypeMembers.ts, 7, 38)) +>propertyOnlyInI1 : Symbol(I1.propertyOnlyInI1, Decl(contextualTypeWithUnionTypeMembers.ts, 7, 38)) } interface I2 { >I2 : Symbol(I2, Decl(contextualTypeWithUnionTypeMembers.ts, 9, 1)) >T : Symbol(T, Decl(contextualTypeWithUnionTypeMembers.ts, 10, 13)) commonMethodType(a: string): string; ->commonMethodType : Symbol(commonMethodType, Decl(contextualTypeWithUnionTypeMembers.ts, 10, 17)) +>commonMethodType : Symbol(I2.commonMethodType, Decl(contextualTypeWithUnionTypeMembers.ts, 10, 17)) >a : Symbol(a, Decl(contextualTypeWithUnionTypeMembers.ts, 11, 21)) commonPropertyType: string; ->commonPropertyType : Symbol(commonPropertyType, Decl(contextualTypeWithUnionTypeMembers.ts, 11, 40)) +>commonPropertyType : Symbol(I2.commonPropertyType, Decl(contextualTypeWithUnionTypeMembers.ts, 11, 40)) commonMethodWithTypeParameter(a: T): T; ->commonMethodWithTypeParameter : Symbol(commonMethodWithTypeParameter, Decl(contextualTypeWithUnionTypeMembers.ts, 12, 31)) +>commonMethodWithTypeParameter : Symbol(I2.commonMethodWithTypeParameter, Decl(contextualTypeWithUnionTypeMembers.ts, 12, 31)) >a : Symbol(a, Decl(contextualTypeWithUnionTypeMembers.ts, 13, 34)) >T : Symbol(T, Decl(contextualTypeWithUnionTypeMembers.ts, 10, 13)) >T : Symbol(T, Decl(contextualTypeWithUnionTypeMembers.ts, 10, 13)) methodOnlyInI2(a: string): string; ->methodOnlyInI2 : Symbol(methodOnlyInI2, Decl(contextualTypeWithUnionTypeMembers.ts, 13, 43)) +>methodOnlyInI2 : Symbol(I2.methodOnlyInI2, Decl(contextualTypeWithUnionTypeMembers.ts, 13, 43)) >a : Symbol(a, Decl(contextualTypeWithUnionTypeMembers.ts, 15, 19)) propertyOnlyInI2: string; ->propertyOnlyInI2 : Symbol(propertyOnlyInI2, Decl(contextualTypeWithUnionTypeMembers.ts, 15, 38)) +>propertyOnlyInI2 : Symbol(I2.propertyOnlyInI2, Decl(contextualTypeWithUnionTypeMembers.ts, 15, 38)) } // Let S be the set of types in U that has a property P. @@ -250,23 +250,23 @@ interface I11 { >I11 : Symbol(I11, Decl(contextualTypeWithUnionTypeMembers.ts, 74, 7)) commonMethodDifferentReturnType(a: string, b: number): string; ->commonMethodDifferentReturnType : Symbol(commonMethodDifferentReturnType, Decl(contextualTypeWithUnionTypeMembers.ts, 76, 15)) +>commonMethodDifferentReturnType : Symbol(I11.commonMethodDifferentReturnType, Decl(contextualTypeWithUnionTypeMembers.ts, 76, 15)) >a : Symbol(a, Decl(contextualTypeWithUnionTypeMembers.ts, 77, 36)) >b : Symbol(b, Decl(contextualTypeWithUnionTypeMembers.ts, 77, 46)) commonPropertyDifferentType: string; ->commonPropertyDifferentType : Symbol(commonPropertyDifferentType, Decl(contextualTypeWithUnionTypeMembers.ts, 77, 66)) +>commonPropertyDifferentType : Symbol(I11.commonPropertyDifferentType, Decl(contextualTypeWithUnionTypeMembers.ts, 77, 66)) } interface I21 { >I21 : Symbol(I21, Decl(contextualTypeWithUnionTypeMembers.ts, 79, 1)) commonMethodDifferentReturnType(a: string, b: number): number; ->commonMethodDifferentReturnType : Symbol(commonMethodDifferentReturnType, Decl(contextualTypeWithUnionTypeMembers.ts, 80, 15)) +>commonMethodDifferentReturnType : Symbol(I21.commonMethodDifferentReturnType, Decl(contextualTypeWithUnionTypeMembers.ts, 80, 15)) >a : Symbol(a, Decl(contextualTypeWithUnionTypeMembers.ts, 81, 36)) >b : Symbol(b, Decl(contextualTypeWithUnionTypeMembers.ts, 81, 46)) commonPropertyDifferentType: number; ->commonPropertyDifferentType : Symbol(commonPropertyDifferentType, Decl(contextualTypeWithUnionTypeMembers.ts, 81, 66)) +>commonPropertyDifferentType : Symbol(I21.commonPropertyDifferentType, Decl(contextualTypeWithUnionTypeMembers.ts, 81, 66)) } var i11: I11; >i11 : Symbol(i11, Decl(contextualTypeWithUnionTypeMembers.ts, 84, 3)) diff --git a/tests/baselines/reference/contextualTyping10.symbols b/tests/baselines/reference/contextualTyping10.symbols index 130116264e0..33e40d73bff 100644 --- a/tests/baselines/reference/contextualTyping10.symbols +++ b/tests/baselines/reference/contextualTyping10.symbols @@ -1,7 +1,7 @@ === tests/cases/compiler/contextualTyping10.ts === class foo { public bar:{id:number;}[] = [{id:1}, {id:2}]; } >foo : Symbol(foo, Decl(contextualTyping10.ts, 0, 0)) ->bar : Symbol(bar, Decl(contextualTyping10.ts, 0, 11)) +>bar : Symbol(foo.bar, Decl(contextualTyping10.ts, 0, 11)) >id : Symbol(id, Decl(contextualTyping10.ts, 0, 24)) >id : Symbol(id, Decl(contextualTyping10.ts, 0, 42)) >id : Symbol(id, Decl(contextualTyping10.ts, 0, 50)) diff --git a/tests/baselines/reference/contextualTyping14.symbols b/tests/baselines/reference/contextualTyping14.symbols index 7de67445ca8..1480db7d2cd 100644 --- a/tests/baselines/reference/contextualTyping14.symbols +++ b/tests/baselines/reference/contextualTyping14.symbols @@ -1,7 +1,7 @@ === tests/cases/compiler/contextualTyping14.ts === class foo { public bar:(a:number)=>number = function(a){return a}; } >foo : Symbol(foo, Decl(contextualTyping14.ts, 0, 0)) ->bar : Symbol(bar, Decl(contextualTyping14.ts, 0, 11)) +>bar : Symbol(foo.bar, Decl(contextualTyping14.ts, 0, 11)) >a : Symbol(a, Decl(contextualTyping14.ts, 0, 24)) >a : Symbol(a, Decl(contextualTyping14.ts, 0, 53)) >a : Symbol(a, Decl(contextualTyping14.ts, 0, 53)) diff --git a/tests/baselines/reference/contextualTyping15.symbols b/tests/baselines/reference/contextualTyping15.symbols index 902fb03dc70..f2ba2bf6768 100644 --- a/tests/baselines/reference/contextualTyping15.symbols +++ b/tests/baselines/reference/contextualTyping15.symbols @@ -1,6 +1,6 @@ === tests/cases/compiler/contextualTyping15.ts === class foo { public bar: { (): number; (i: number): number; } = function() { return 1 }; } >foo : Symbol(foo, Decl(contextualTyping15.ts, 0, 0)) ->bar : Symbol(bar, Decl(contextualTyping15.ts, 0, 11)) +>bar : Symbol(foo.bar, Decl(contextualTyping15.ts, 0, 11)) >i : Symbol(i, Decl(contextualTyping15.ts, 0, 39)) diff --git a/tests/baselines/reference/contextualTyping24.errors.txt b/tests/baselines/reference/contextualTyping24.errors.txt index a172600e1c5..ea973050625 100644 --- a/tests/baselines/reference/contextualTyping24.errors.txt +++ b/tests/baselines/reference/contextualTyping24.errors.txt @@ -1,11 +1,11 @@ -tests/cases/compiler/contextualTyping24.ts(1,55): error TS2322: Type '(a: string) => number' is not assignable to type '(a: { (): number; (i: number): number; }) => number'. +tests/cases/compiler/contextualTyping24.ts(1,55): error TS2322: Type '(this: void, a: string) => number' is not assignable to type '(a: { (): number; (i: number): number; }) => number'. Types of parameters 'a' and 'a' are incompatible. - Type 'string' is not assignable to type '{ (): number; (i: number): number; }'. + Type '{ (): number; (i: number): number; }' is not assignable to type 'string'. ==== tests/cases/compiler/contextualTyping24.ts (1 errors) ==== - var foo:(a:{():number; (i:number):number; })=>number; foo = function(a:string){return 5}; + var foo:(a:{():number; (i:number):number; })=>number; foo = function(this: void, a:string){return 5}; ~~~ -!!! error TS2322: Type '(a: string) => number' is not assignable to type '(a: { (): number; (i: number): number; }) => number'. +!!! error TS2322: Type '(this: void, a: string) => number' is not assignable to type '(a: { (): number; (i: number): number; }) => number'. !!! error TS2322: Types of parameters 'a' and 'a' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type '{ (): number; (i: number): number; }'. \ No newline at end of file +!!! error TS2322: Type '{ (): number; (i: number): number; }' is not assignable to type 'string'. \ No newline at end of file diff --git a/tests/baselines/reference/contextualTyping24.js b/tests/baselines/reference/contextualTyping24.js index 04c4ecba21b..14c1feeb031 100644 --- a/tests/baselines/reference/contextualTyping24.js +++ b/tests/baselines/reference/contextualTyping24.js @@ -1,5 +1,5 @@ //// [contextualTyping24.ts] -var foo:(a:{():number; (i:number):number; })=>number; foo = function(a:string){return 5}; +var foo:(a:{():number; (i:number):number; })=>number; foo = function(this: void, a:string){return 5}; //// [contextualTyping24.js] var foo; diff --git a/tests/baselines/reference/contextualTyping3.symbols b/tests/baselines/reference/contextualTyping3.symbols index 584c399e4da..f685e0a0690 100644 --- a/tests/baselines/reference/contextualTyping3.symbols +++ b/tests/baselines/reference/contextualTyping3.symbols @@ -1,7 +1,7 @@ === tests/cases/compiler/contextualTyping3.ts === class foo { public bar:{id:number;} = {id:5}; } >foo : Symbol(foo, Decl(contextualTyping3.ts, 0, 0)) ->bar : Symbol(bar, Decl(contextualTyping3.ts, 0, 11)) +>bar : Symbol(foo.bar, Decl(contextualTyping3.ts, 0, 11)) >id : Symbol(id, Decl(contextualTyping3.ts, 0, 24)) >id : Symbol(id, Decl(contextualTyping3.ts, 0, 39)) diff --git a/tests/baselines/reference/contextualTyping39.errors.txt b/tests/baselines/reference/contextualTyping39.errors.txt index e43624fbead..9081480f4ba 100644 --- a/tests/baselines/reference/contextualTyping39.errors.txt +++ b/tests/baselines/reference/contextualTyping39.errors.txt @@ -1,9 +1,9 @@ -tests/cases/compiler/contextualTyping39.ts(1,11): error TS2352: Neither type '() => string' nor type '() => number' is assignable to the other. - Type 'string' is not assignable to type 'number'. +tests/cases/compiler/contextualTyping39.ts(1,11): error TS2352: Type '() => string' cannot be converted to type '() => number'. + Type 'string' is not comparable to type 'number'. ==== tests/cases/compiler/contextualTyping39.ts (1 errors) ==== var foo = <{ (): number; }> function() { return "err"; }; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2352: Neither type '() => string' nor type '() => number' is assignable to the other. -!!! error TS2352: Type 'string' is not assignable to type 'number'. \ No newline at end of file +!!! error TS2352: Type '() => string' cannot be converted to type '() => number'. +!!! error TS2352: Type 'string' is not comparable to type 'number'. \ No newline at end of file diff --git a/tests/baselines/reference/contextualTyping41.errors.txt b/tests/baselines/reference/contextualTyping41.errors.txt index 1ed6da1b782..418d435e7fe 100644 --- a/tests/baselines/reference/contextualTyping41.errors.txt +++ b/tests/baselines/reference/contextualTyping41.errors.txt @@ -1,9 +1,9 @@ -tests/cases/compiler/contextualTyping41.ts(1,11): error TS2352: Neither type '() => string' nor type '{ (): number; (i: number): number; }' is assignable to the other. - Type 'string' is not assignable to type 'number'. +tests/cases/compiler/contextualTyping41.ts(1,11): error TS2352: Type '() => string' cannot be converted to type '{ (): number; (i: number): number; }'. + Type 'string' is not comparable to type 'number'. ==== tests/cases/compiler/contextualTyping41.ts (1 errors) ==== var foo = <{():number; (i:number):number; }> (function(){return "err";}); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2352: Neither type '() => string' nor type '{ (): number; (i: number): number; }' is assignable to the other. -!!! error TS2352: Type 'string' is not assignable to type 'number'. \ No newline at end of file +!!! error TS2352: Type '() => string' cannot be converted to type '{ (): number; (i: number): number; }'. +!!! error TS2352: Type 'string' is not comparable to type 'number'. \ No newline at end of file diff --git a/tests/baselines/reference/contextualTypingArrayOfLambdas.symbols b/tests/baselines/reference/contextualTypingArrayOfLambdas.symbols index 79355e0a7c6..b049c498f11 100644 --- a/tests/baselines/reference/contextualTypingArrayOfLambdas.symbols +++ b/tests/baselines/reference/contextualTypingArrayOfLambdas.symbols @@ -3,7 +3,7 @@ class A { >A : Symbol(A, Decl(contextualTypingArrayOfLambdas.ts, 0, 0)) foo: string; ->foo : Symbol(foo, Decl(contextualTypingArrayOfLambdas.ts, 0, 9)) +>foo : Symbol(A.foo, Decl(contextualTypingArrayOfLambdas.ts, 0, 9)) } class B extends A { @@ -11,7 +11,7 @@ class B extends A { >A : Symbol(A, Decl(contextualTypingArrayOfLambdas.ts, 0, 0)) bar: string; ->bar : Symbol(bar, Decl(contextualTypingArrayOfLambdas.ts, 4, 19)) +>bar : Symbol(B.bar, Decl(contextualTypingArrayOfLambdas.ts, 4, 19)) } class C extends A { @@ -19,7 +19,7 @@ class C extends A { >A : Symbol(A, Decl(contextualTypingArrayOfLambdas.ts, 0, 0)) baz: string; ->baz : Symbol(baz, Decl(contextualTypingArrayOfLambdas.ts, 8, 19)) +>baz : Symbol(C.baz, Decl(contextualTypingArrayOfLambdas.ts, 8, 19)) } var xs = [(x: A) => { }, (x: B) => { }, (x: C) => { }]; diff --git a/tests/baselines/reference/contextualTypingOfConditionalExpression.symbols b/tests/baselines/reference/contextualTypingOfConditionalExpression.symbols index 1f8ad9f9c68..c0bd5e51561 100644 --- a/tests/baselines/reference/contextualTypingOfConditionalExpression.symbols +++ b/tests/baselines/reference/contextualTypingOfConditionalExpression.symbols @@ -15,21 +15,21 @@ class A { >A : Symbol(A, Decl(contextualTypingOfConditionalExpression.ts, 0, 82)) foo: number; ->foo : Symbol(foo, Decl(contextualTypingOfConditionalExpression.ts, 2, 9)) +>foo : Symbol(A.foo, Decl(contextualTypingOfConditionalExpression.ts, 2, 9)) } class B extends A { >B : Symbol(B, Decl(contextualTypingOfConditionalExpression.ts, 4, 1)) >A : Symbol(A, Decl(contextualTypingOfConditionalExpression.ts, 0, 82)) bar: number; ->bar : Symbol(bar, Decl(contextualTypingOfConditionalExpression.ts, 5, 19)) +>bar : Symbol(B.bar, Decl(contextualTypingOfConditionalExpression.ts, 5, 19)) } class C extends A { >C : Symbol(C, Decl(contextualTypingOfConditionalExpression.ts, 7, 1)) >A : Symbol(A, Decl(contextualTypingOfConditionalExpression.ts, 0, 82)) baz: number; ->baz : Symbol(baz, Decl(contextualTypingOfConditionalExpression.ts, 8, 19)) +>baz : Symbol(C.baz, Decl(contextualTypingOfConditionalExpression.ts, 8, 19)) } var x2: (a: A) => void = true ? (a) => a.foo : (b) => b.foo; diff --git a/tests/baselines/reference/contextualTypingOfConditionalExpression2.errors.txt b/tests/baselines/reference/contextualTypingOfConditionalExpression2.errors.txt index be49b7b5249..4f2adf9921e 100644 --- a/tests/baselines/reference/contextualTypingOfConditionalExpression2.errors.txt +++ b/tests/baselines/reference/contextualTypingOfConditionalExpression2.errors.txt @@ -1,7 +1,7 @@ tests/cases/compiler/contextualTypingOfConditionalExpression2.ts(11,5): error TS2322: Type '((a: C) => number) | ((b: number) => void)' is not assignable to type '(a: A) => void'. Type '(b: number) => void' is not assignable to type '(a: A) => void'. Types of parameters 'b' and 'a' are incompatible. - Type 'number' is not assignable to type 'A'. + Type 'A' is not assignable to type 'number'. ==== tests/cases/compiler/contextualTypingOfConditionalExpression2.ts (1 errors) ==== @@ -20,5 +20,5 @@ tests/cases/compiler/contextualTypingOfConditionalExpression2.ts(11,5): error TS !!! error TS2322: Type '((a: C) => number) | ((b: number) => void)' is not assignable to type '(a: A) => void'. !!! error TS2322: Type '(b: number) => void' is not assignable to type '(a: A) => void'. !!! error TS2322: Types of parameters 'b' and 'a' are incompatible. -!!! error TS2322: Type 'number' is not assignable to type 'A'. +!!! error TS2322: Type 'A' is not assignable to type 'number'. \ No newline at end of file diff --git a/tests/baselines/reference/contextualTypingOfLambdaWithMultipleSignatures.symbols b/tests/baselines/reference/contextualTypingOfLambdaWithMultipleSignatures.symbols index 3a0c8e5db97..a7a2730456a 100644 --- a/tests/baselines/reference/contextualTypingOfLambdaWithMultipleSignatures.symbols +++ b/tests/baselines/reference/contextualTypingOfLambdaWithMultipleSignatures.symbols @@ -3,11 +3,11 @@ interface Foo { >Foo : Symbol(Foo, Decl(contextualTypingOfLambdaWithMultipleSignatures.ts, 0, 0)) getFoo(n: number): void; ->getFoo : Symbol(getFoo, Decl(contextualTypingOfLambdaWithMultipleSignatures.ts, 0, 15), Decl(contextualTypingOfLambdaWithMultipleSignatures.ts, 1, 28)) +>getFoo : Symbol(Foo.getFoo, Decl(contextualTypingOfLambdaWithMultipleSignatures.ts, 0, 15), Decl(contextualTypingOfLambdaWithMultipleSignatures.ts, 1, 28)) >n : Symbol(n, Decl(contextualTypingOfLambdaWithMultipleSignatures.ts, 1, 11)) getFoo(s: string): void; ->getFoo : Symbol(getFoo, Decl(contextualTypingOfLambdaWithMultipleSignatures.ts, 0, 15), Decl(contextualTypingOfLambdaWithMultipleSignatures.ts, 1, 28)) +>getFoo : Symbol(Foo.getFoo, Decl(contextualTypingOfLambdaWithMultipleSignatures.ts, 0, 15), Decl(contextualTypingOfLambdaWithMultipleSignatures.ts, 1, 28)) >s : Symbol(s, Decl(contextualTypingOfLambdaWithMultipleSignatures.ts, 2, 11)) } diff --git a/tests/baselines/reference/contextuallyTypedBindingInitializer.js b/tests/baselines/reference/contextuallyTypedBindingInitializer.js new file mode 100644 index 00000000000..f2424ce55d7 --- /dev/null +++ b/tests/baselines/reference/contextuallyTypedBindingInitializer.js @@ -0,0 +1,51 @@ +//// [contextuallyTypedBindingInitializer.ts] +interface Show { + show: (x: number) => string; +} +function f({ show = v => v.toString() }: Show) {} +function f2({ "show": showRename = v => v.toString() }: Show) {} +function f3({ ["show"]: showRename = v => v.toString() }: Show) {} + +interface Nested { + nested: Show +} +function ff({ nested = { show: v => v.toString() } }: Nested) {} + +interface Tuples { + prop: [string, number]; +} +function g({ prop = ["hello", 1234] }: Tuples) {} + +interface StringUnion { + prop: "foo" | "bar"; +} +function h({ prop = "foo" }: StringUnion) {} + +interface StringIdentity { + stringIdentity(s: string): string; +} +let { stringIdentity: id = arg => arg }: StringIdentity = { stringIdentity: x => x}; + + + + +//// [contextuallyTypedBindingInitializer.js] +function f(_a) { + var _b = _a.show, show = _b === void 0 ? function (v) { return v.toString(); } : _b; +} +function f2(_a) { + var _b = _a["show"], showRename = _b === void 0 ? function (v) { return v.toString(); } : _b; +} +function f3(_a) { + var _b = "show", _c = _a[_b], showRename = _c === void 0 ? function (v) { return v.toString(); } : _c; +} +function ff(_a) { + var _b = _a.nested, nested = _b === void 0 ? { show: function (v) { return v.toString(); } } : _b; +} +function g(_a) { + var _b = _a.prop, prop = _b === void 0 ? ["hello", 1234] : _b; +} +function h(_a) { + var _b = _a.prop, prop = _b === void 0 ? "foo" : _b; +} +var _a = { stringIdentity: function (x) { return x; } }.stringIdentity, id = _a === void 0 ? function (arg) { return arg; } : _a; diff --git a/tests/baselines/reference/contextuallyTypedBindingInitializer.symbols b/tests/baselines/reference/contextuallyTypedBindingInitializer.symbols new file mode 100644 index 00000000000..8a3b4cc79c2 --- /dev/null +++ b/tests/baselines/reference/contextuallyTypedBindingInitializer.symbols @@ -0,0 +1,93 @@ +=== tests/cases/conformance/types/contextualTypes/methodDeclarations/contextuallyTypedBindingInitializer.ts === +interface Show { +>Show : Symbol(Show, Decl(contextuallyTypedBindingInitializer.ts, 0, 0)) + + show: (x: number) => string; +>show : Symbol(Show.show, Decl(contextuallyTypedBindingInitializer.ts, 0, 16)) +>x : Symbol(x, Decl(contextuallyTypedBindingInitializer.ts, 1, 11)) +} +function f({ show = v => v.toString() }: Show) {} +>f : Symbol(f, Decl(contextuallyTypedBindingInitializer.ts, 2, 1)) +>show : Symbol(show, Decl(contextuallyTypedBindingInitializer.ts, 3, 12)) +>v : Symbol(v, Decl(contextuallyTypedBindingInitializer.ts, 3, 19)) +>v.toString : Symbol(Number.toString, Decl(lib.d.ts, --, --)) +>v : Symbol(v, Decl(contextuallyTypedBindingInitializer.ts, 3, 19)) +>toString : Symbol(Number.toString, Decl(lib.d.ts, --, --)) +>Show : Symbol(Show, Decl(contextuallyTypedBindingInitializer.ts, 0, 0)) + +function f2({ "show": showRename = v => v.toString() }: Show) {} +>f2 : Symbol(f2, Decl(contextuallyTypedBindingInitializer.ts, 3, 49)) +>showRename : Symbol(showRename, Decl(contextuallyTypedBindingInitializer.ts, 4, 13)) +>v : Symbol(v, Decl(contextuallyTypedBindingInitializer.ts, 4, 34)) +>v.toString : Symbol(Number.toString, Decl(lib.d.ts, --, --)) +>v : Symbol(v, Decl(contextuallyTypedBindingInitializer.ts, 4, 34)) +>toString : Symbol(Number.toString, Decl(lib.d.ts, --, --)) +>Show : Symbol(Show, Decl(contextuallyTypedBindingInitializer.ts, 0, 0)) + +function f3({ ["show"]: showRename = v => v.toString() }: Show) {} +>f3 : Symbol(f3, Decl(contextuallyTypedBindingInitializer.ts, 4, 64)) +>showRename : Symbol(showRename, Decl(contextuallyTypedBindingInitializer.ts, 5, 13)) +>v : Symbol(v, Decl(contextuallyTypedBindingInitializer.ts, 5, 36)) +>v.toString : Symbol(Number.toString, Decl(lib.d.ts, --, --)) +>v : Symbol(v, Decl(contextuallyTypedBindingInitializer.ts, 5, 36)) +>toString : Symbol(Number.toString, Decl(lib.d.ts, --, --)) +>Show : Symbol(Show, Decl(contextuallyTypedBindingInitializer.ts, 0, 0)) + +interface Nested { +>Nested : Symbol(Nested, Decl(contextuallyTypedBindingInitializer.ts, 5, 66)) + + nested: Show +>nested : Symbol(Nested.nested, Decl(contextuallyTypedBindingInitializer.ts, 7, 18)) +>Show : Symbol(Show, Decl(contextuallyTypedBindingInitializer.ts, 0, 0)) +} +function ff({ nested = { show: v => v.toString() } }: Nested) {} +>ff : Symbol(ff, Decl(contextuallyTypedBindingInitializer.ts, 9, 1)) +>nested : Symbol(nested, Decl(contextuallyTypedBindingInitializer.ts, 10, 13)) +>show : Symbol(show, Decl(contextuallyTypedBindingInitializer.ts, 10, 24)) +>v : Symbol(v, Decl(contextuallyTypedBindingInitializer.ts, 10, 30)) +>v.toString : Symbol(Number.toString, Decl(lib.d.ts, --, --)) +>v : Symbol(v, Decl(contextuallyTypedBindingInitializer.ts, 10, 30)) +>toString : Symbol(Number.toString, Decl(lib.d.ts, --, --)) +>Nested : Symbol(Nested, Decl(contextuallyTypedBindingInitializer.ts, 5, 66)) + +interface Tuples { +>Tuples : Symbol(Tuples, Decl(contextuallyTypedBindingInitializer.ts, 10, 64)) + + prop: [string, number]; +>prop : Symbol(Tuples.prop, Decl(contextuallyTypedBindingInitializer.ts, 12, 18)) +} +function g({ prop = ["hello", 1234] }: Tuples) {} +>g : Symbol(g, Decl(contextuallyTypedBindingInitializer.ts, 14, 1)) +>prop : Symbol(prop, Decl(contextuallyTypedBindingInitializer.ts, 15, 12)) +>Tuples : Symbol(Tuples, Decl(contextuallyTypedBindingInitializer.ts, 10, 64)) + +interface StringUnion { +>StringUnion : Symbol(StringUnion, Decl(contextuallyTypedBindingInitializer.ts, 15, 49)) + + prop: "foo" | "bar"; +>prop : Symbol(StringUnion.prop, Decl(contextuallyTypedBindingInitializer.ts, 17, 23)) +} +function h({ prop = "foo" }: StringUnion) {} +>h : Symbol(h, Decl(contextuallyTypedBindingInitializer.ts, 19, 1)) +>prop : Symbol(prop, Decl(contextuallyTypedBindingInitializer.ts, 20, 12)) +>StringUnion : Symbol(StringUnion, Decl(contextuallyTypedBindingInitializer.ts, 15, 49)) + +interface StringIdentity { +>StringIdentity : Symbol(StringIdentity, Decl(contextuallyTypedBindingInitializer.ts, 20, 44)) + + stringIdentity(s: string): string; +>stringIdentity : Symbol(StringIdentity.stringIdentity, Decl(contextuallyTypedBindingInitializer.ts, 22, 26)) +>s : Symbol(s, Decl(contextuallyTypedBindingInitializer.ts, 23, 19)) +} +let { stringIdentity: id = arg => arg }: StringIdentity = { stringIdentity: x => x}; +>stringIdentity : Symbol(StringIdentity.stringIdentity, Decl(contextuallyTypedBindingInitializer.ts, 22, 26)) +>id : Symbol(id, Decl(contextuallyTypedBindingInitializer.ts, 25, 5)) +>arg : Symbol(arg, Decl(contextuallyTypedBindingInitializer.ts, 25, 26)) +>arg : Symbol(arg, Decl(contextuallyTypedBindingInitializer.ts, 25, 26)) +>StringIdentity : Symbol(StringIdentity, Decl(contextuallyTypedBindingInitializer.ts, 20, 44)) +>stringIdentity : Symbol(stringIdentity, Decl(contextuallyTypedBindingInitializer.ts, 25, 59)) +>x : Symbol(x, Decl(contextuallyTypedBindingInitializer.ts, 25, 75)) +>x : Symbol(x, Decl(contextuallyTypedBindingInitializer.ts, 25, 75)) + + + diff --git a/tests/baselines/reference/contextuallyTypedBindingInitializer.types b/tests/baselines/reference/contextuallyTypedBindingInitializer.types new file mode 100644 index 00000000000..0d4dfcdd5d9 --- /dev/null +++ b/tests/baselines/reference/contextuallyTypedBindingInitializer.types @@ -0,0 +1,110 @@ +=== tests/cases/conformance/types/contextualTypes/methodDeclarations/contextuallyTypedBindingInitializer.ts === +interface Show { +>Show : Show + + show: (x: number) => string; +>show : (x: number) => string +>x : number +} +function f({ show = v => v.toString() }: Show) {} +>f : ({show}: Show) => void +>show : (x: number) => string +>v => v.toString() : (v: number) => string +>v : number +>v.toString() : string +>v.toString : (radix?: number) => string +>v : number +>toString : (radix?: number) => string +>Show : Show + +function f2({ "show": showRename = v => v.toString() }: Show) {} +>f2 : ({"show": showRename}: Show) => void +>showRename : (x: number) => string +>v => v.toString() : (v: number) => string +>v : number +>v.toString() : string +>v.toString : (radix?: number) => string +>v : number +>toString : (radix?: number) => string +>Show : Show + +function f3({ ["show"]: showRename = v => v.toString() }: Show) {} +>f3 : ({["show"]: showRename}: Show) => void +>"show" : string +>showRename : (x: number) => string +>v => v.toString() : (v: number) => string +>v : number +>v.toString() : string +>v.toString : (radix?: number) => string +>v : number +>toString : (radix?: number) => string +>Show : Show + +interface Nested { +>Nested : Nested + + nested: Show +>nested : Show +>Show : Show +} +function ff({ nested = { show: v => v.toString() } }: Nested) {} +>ff : ({nested}: Nested) => void +>nested : Show +>{ show: v => v.toString() } : { show: (v: number) => string; } +>show : (v: number) => string +>v => v.toString() : (v: number) => string +>v : number +>v.toString() : string +>v.toString : (radix?: number) => string +>v : number +>toString : (radix?: number) => string +>Nested : Nested + +interface Tuples { +>Tuples : Tuples + + prop: [string, number]; +>prop : [string, number] +} +function g({ prop = ["hello", 1234] }: Tuples) {} +>g : ({prop}: Tuples) => void +>prop : [string, number] +>["hello", 1234] : [string, number] +>"hello" : string +>1234 : number +>Tuples : Tuples + +interface StringUnion { +>StringUnion : StringUnion + + prop: "foo" | "bar"; +>prop : "foo" | "bar" +} +function h({ prop = "foo" }: StringUnion) {} +>h : ({prop}: StringUnion) => void +>prop : "foo" | "bar" +>"foo" : "foo" +>StringUnion : StringUnion + +interface StringIdentity { +>StringIdentity : StringIdentity + + stringIdentity(s: string): string; +>stringIdentity : (s: string) => string +>s : string +} +let { stringIdentity: id = arg => arg }: StringIdentity = { stringIdentity: x => x}; +>stringIdentity : any +>id : (s: string) => string +>arg => arg : (arg: string) => string +>arg : string +>arg : string +>StringIdentity : StringIdentity +>{ stringIdentity: x => x} : { stringIdentity: (x: string) => string; } +>stringIdentity : (x: string) => string +>x => x : (x: string) => string +>x : string +>x : string + + + diff --git a/tests/baselines/reference/contextuallyTypedBindingInitializerNegative.errors.txt b/tests/baselines/reference/contextuallyTypedBindingInitializerNegative.errors.txt new file mode 100644 index 00000000000..42d617887e0 --- /dev/null +++ b/tests/baselines/reference/contextuallyTypedBindingInitializerNegative.errors.txt @@ -0,0 +1,69 @@ +tests/cases/conformance/types/contextualTypes/methodDeclarations/contextuallyTypedBindingInitializerNegative.ts(4,20): error TS2322: Type '(v: number) => number' is not assignable to type '(x: number) => string'. + Type 'number' is not assignable to type 'string'. +tests/cases/conformance/types/contextualTypes/methodDeclarations/contextuallyTypedBindingInitializerNegative.ts(5,23): error TS2322: Type '(v: number) => number' is not assignable to type '(x: number) => string'. + Type 'number' is not assignable to type 'string'. +tests/cases/conformance/types/contextualTypes/methodDeclarations/contextuallyTypedBindingInitializerNegative.ts(6,25): error TS2322: Type '(v: number) => number' is not assignable to type '(x: number) => string'. + Type 'number' is not assignable to type 'string'. +tests/cases/conformance/types/contextualTypes/methodDeclarations/contextuallyTypedBindingInitializerNegative.ts(11,23): error TS2322: Type '{ show: (v: number) => number; }' is not assignable to type 'Show'. + Types of property 'show' are incompatible. + Type '(v: number) => number' is not assignable to type '(x: number) => string'. + Type 'number' is not assignable to type 'string'. +tests/cases/conformance/types/contextualTypes/methodDeclarations/contextuallyTypedBindingInitializerNegative.ts(16,23): error TS2322: Type '(arg: string) => number' is not assignable to type '(s: string) => string'. + Type 'number' is not assignable to type 'string'. +tests/cases/conformance/types/contextualTypes/methodDeclarations/contextuallyTypedBindingInitializerNegative.ts(21,14): error TS2322: Type '[number, number]' is not assignable to type '[string, number]'. + Types of property '0' are incompatible. + Type 'number' is not assignable to type 'string'. +tests/cases/conformance/types/contextualTypes/methodDeclarations/contextuallyTypedBindingInitializerNegative.ts(26,14): error TS2322: Type '"baz"' is not assignable to type '"foo" | "bar"'. + + +==== tests/cases/conformance/types/contextualTypes/methodDeclarations/contextuallyTypedBindingInitializerNegative.ts (7 errors) ==== + interface Show { + show: (x: number) => string; + } + function f({ show: showRename = v => v }: Show) {} + ~~~~~~~~~~ +!!! error TS2322: Type '(v: number) => number' is not assignable to type '(x: number) => string'. +!!! error TS2322: Type 'number' is not assignable to type 'string'. + function f2({ "show": showRename = v => v }: Show) {} + ~~~~~~~~~~ +!!! error TS2322: Type '(v: number) => number' is not assignable to type '(x: number) => string'. +!!! error TS2322: Type 'number' is not assignable to type 'string'. + function f3({ ["show"]: showRename = v => v }: Show) {} + ~~~~~~~~~~ +!!! error TS2322: Type '(v: number) => number' is not assignable to type '(x: number) => string'. +!!! error TS2322: Type 'number' is not assignable to type 'string'. + + interface Nested { + nested: Show + } + function ff({ nested: nestedRename = { show: v => v } }: Nested) {} + ~~~~~~~~~~~~ +!!! error TS2322: Type '{ show: (v: number) => number; }' is not assignable to type 'Show'. +!!! error TS2322: Types of property 'show' are incompatible. +!!! error TS2322: Type '(v: number) => number' is not assignable to type '(x: number) => string'. +!!! error TS2322: Type 'number' is not assignable to type 'string'. + + interface StringIdentity { + stringIdentity(s: string): string; + } + let { stringIdentity: id = arg => arg.length }: StringIdentity = { stringIdentity: x => x}; + ~~ +!!! error TS2322: Type '(arg: string) => number' is not assignable to type '(s: string) => string'. +!!! error TS2322: Type 'number' is not assignable to type 'string'. + + interface Tuples { + prop: [string, number]; + } + function g({ prop = [101, 1234] }: Tuples) {} + ~~~~ +!!! error TS2322: Type '[number, number]' is not assignable to type '[string, number]'. +!!! error TS2322: Types of property '0' are incompatible. +!!! error TS2322: Type 'number' is not assignable to type 'string'. + + interface StringUnion { + prop: "foo" | "bar"; + } + function h({ prop = "baz" }: StringUnion) {} + ~~~~ +!!! error TS2322: Type '"baz"' is not assignable to type '"foo" | "bar"'. + \ No newline at end of file diff --git a/tests/baselines/reference/contextuallyTypedBindingInitializerNegative.js b/tests/baselines/reference/contextuallyTypedBindingInitializerNegative.js new file mode 100644 index 00000000000..3f1ed156fdb --- /dev/null +++ b/tests/baselines/reference/contextuallyTypedBindingInitializerNegative.js @@ -0,0 +1,49 @@ +//// [contextuallyTypedBindingInitializerNegative.ts] +interface Show { + show: (x: number) => string; +} +function f({ show: showRename = v => v }: Show) {} +function f2({ "show": showRename = v => v }: Show) {} +function f3({ ["show"]: showRename = v => v }: Show) {} + +interface Nested { + nested: Show +} +function ff({ nested: nestedRename = { show: v => v } }: Nested) {} + +interface StringIdentity { + stringIdentity(s: string): string; +} +let { stringIdentity: id = arg => arg.length }: StringIdentity = { stringIdentity: x => x}; + +interface Tuples { + prop: [string, number]; +} +function g({ prop = [101, 1234] }: Tuples) {} + +interface StringUnion { + prop: "foo" | "bar"; +} +function h({ prop = "baz" }: StringUnion) {} + + +//// [contextuallyTypedBindingInitializerNegative.js] +function f(_a) { + var _b = _a.show, showRename = _b === void 0 ? function (v) { return v; } : _b; +} +function f2(_a) { + var _b = _a["show"], showRename = _b === void 0 ? function (v) { return v; } : _b; +} +function f3(_a) { + var _b = "show", _c = _a[_b], showRename = _c === void 0 ? function (v) { return v; } : _c; +} +function ff(_a) { + var _b = _a.nested, nestedRename = _b === void 0 ? { show: function (v) { return v; } } : _b; +} +var _a = { stringIdentity: function (x) { return x; } }.stringIdentity, id = _a === void 0 ? function (arg) { return arg.length; } : _a; +function g(_a) { + var _b = _a.prop, prop = _b === void 0 ? [101, 1234] : _b; +} +function h(_a) { + var _b = _a.prop, prop = _b === void 0 ? "baz" : _b; +} diff --git a/tests/baselines/reference/contextuallyTypedObjectLiteralMethodDeclaration01.symbols b/tests/baselines/reference/contextuallyTypedObjectLiteralMethodDeclaration01.symbols index 3c26110157a..c240af42b91 100644 --- a/tests/baselines/reference/contextuallyTypedObjectLiteralMethodDeclaration01.symbols +++ b/tests/baselines/reference/contextuallyTypedObjectLiteralMethodDeclaration01.symbols @@ -4,26 +4,26 @@ interface A { >A : Symbol(A, Decl(contextuallyTypedObjectLiteralMethodDeclaration01.ts, 0, 0)) numProp: number; ->numProp : Symbol(numProp, Decl(contextuallyTypedObjectLiteralMethodDeclaration01.ts, 1, 13)) +>numProp : Symbol(A.numProp, Decl(contextuallyTypedObjectLiteralMethodDeclaration01.ts, 1, 13)) } interface B { >B : Symbol(B, Decl(contextuallyTypedObjectLiteralMethodDeclaration01.ts, 3, 1)) strProp: string; ->strProp : Symbol(strProp, Decl(contextuallyTypedObjectLiteralMethodDeclaration01.ts, 5, 14)) +>strProp : Symbol(B.strProp, Decl(contextuallyTypedObjectLiteralMethodDeclaration01.ts, 5, 14)) } interface Foo { >Foo : Symbol(Foo, Decl(contextuallyTypedObjectLiteralMethodDeclaration01.ts, 7, 1)) method1(arg: A): void; ->method1 : Symbol(method1, Decl(contextuallyTypedObjectLiteralMethodDeclaration01.ts, 9, 15)) +>method1 : Symbol(Foo.method1, Decl(contextuallyTypedObjectLiteralMethodDeclaration01.ts, 9, 15)) >arg : Symbol(arg, Decl(contextuallyTypedObjectLiteralMethodDeclaration01.ts, 10, 12)) >A : Symbol(A, Decl(contextuallyTypedObjectLiteralMethodDeclaration01.ts, 0, 0)) method2(arg: B): void; ->method2 : Symbol(method2, Decl(contextuallyTypedObjectLiteralMethodDeclaration01.ts, 10, 26)) +>method2 : Symbol(Foo.method2, Decl(contextuallyTypedObjectLiteralMethodDeclaration01.ts, 10, 26)) >arg : Symbol(arg, Decl(contextuallyTypedObjectLiteralMethodDeclaration01.ts, 11, 12)) >B : Symbol(B, Decl(contextuallyTypedObjectLiteralMethodDeclaration01.ts, 3, 1)) } diff --git a/tests/baselines/reference/contextuallyTypedStringLiteralsInJsxAttributes01.errors.txt b/tests/baselines/reference/contextuallyTypedStringLiteralsInJsxAttributes01.errors.txt index b5d4e01b677..48e11fb1221 100644 --- a/tests/baselines/reference/contextuallyTypedStringLiteralsInJsxAttributes01.errors.txt +++ b/tests/baselines/reference/contextuallyTypedStringLiteralsInJsxAttributes01.errors.txt @@ -1,15 +1,16 @@ -tests/cases/conformance/types/contextualTypes/jsxAttributes/contextuallyTypedStringLiteralsInJsxAttributes01.tsx(13,15): error TS2322: Type '"f"' is not assignable to type '"A" | "B" | "C"'. - Type '"f"' is not assignable to type '"C"'. -tests/cases/conformance/types/contextualTypes/jsxAttributes/contextuallyTypedStringLiteralsInJsxAttributes01.tsx(14,15): error TS2322: Type '"f"' is not assignable to type '"A" | "B" | "C"'. - Type '"f"' is not assignable to type '"C"'. +tests/cases/conformance/types/contextualTypes/jsxAttributes/contextuallyTypedStringLiteralsInJsxAttributes01.tsx(16,15): error TS2322: Type '"f"' is not assignable to type '"A" | "B" | "C"'. +tests/cases/conformance/types/contextualTypes/jsxAttributes/contextuallyTypedStringLiteralsInJsxAttributes01.tsx(17,15): error TS2322: Type '"f"' is not assignable to type '"A" | "B" | "C"'. ==== tests/cases/conformance/types/contextualTypes/jsxAttributes/contextuallyTypedStringLiteralsInJsxAttributes01.tsx (2 errors) ==== namespace JSX { - interface IntrinsicElements { + export interface IntrinsicElements { span: {}; } + export interface Element { + something?: any; + } } const FooComponent = (props: { foo: "A" | "B" | "C" }) => {props.foo}; @@ -20,8 +21,6 @@ tests/cases/conformance/types/contextualTypes/jsxAttributes/contextuallyTypedStr ; ~~~~~~~~~ !!! error TS2322: Type '"f"' is not assignable to type '"A" | "B" | "C"'. -!!! error TS2322: Type '"f"' is not assignable to type '"C"'. ; ~~~~~~~ -!!! error TS2322: Type '"f"' is not assignable to type '"A" | "B" | "C"'. -!!! error TS2322: Type '"f"' is not assignable to type '"C"'. \ No newline at end of file +!!! error TS2322: Type '"f"' is not assignable to type '"A" | "B" | "C"'. \ No newline at end of file diff --git a/tests/baselines/reference/contextuallyTypedStringLiteralsInJsxAttributes01.js b/tests/baselines/reference/contextuallyTypedStringLiteralsInJsxAttributes01.js index c21247c2835..d1b2ebf5ae5 100644 --- a/tests/baselines/reference/contextuallyTypedStringLiteralsInJsxAttributes01.js +++ b/tests/baselines/reference/contextuallyTypedStringLiteralsInJsxAttributes01.js @@ -1,9 +1,12 @@ //// [contextuallyTypedStringLiteralsInJsxAttributes01.tsx] namespace JSX { - interface IntrinsicElements { + export interface IntrinsicElements { span: {}; } + export interface Element { + something?: any; + } } const FooComponent = (props: { foo: "A" | "B" | "C" }) => {props.foo}; @@ -24,7 +27,13 @@ var FooComponent = function (props) { return {props.foo}; }; //// [contextuallyTypedStringLiteralsInJsxAttributes01.d.ts] declare namespace JSX { + interface IntrinsicElements { + span: {}; + } + interface Element { + something?: any; + } } declare const FooComponent: (props: { foo: "A" | "B" | "C"; -}) => any; +}) => JSX.Element; diff --git a/tests/baselines/reference/continueInLoopsWithCapturedBlockScopedBindings1.js b/tests/baselines/reference/continueInLoopsWithCapturedBlockScopedBindings1.js new file mode 100644 index 00000000000..431bdee6c88 --- /dev/null +++ b/tests/baselines/reference/continueInLoopsWithCapturedBlockScopedBindings1.js @@ -0,0 +1,30 @@ +//// [continueInLoopsWithCapturedBlockScopedBindings1.ts] +function foo() { + for (const i of [0, 1]) { + if (i === 0) { + continue; + } + + // Trigger non-simple-loop emit + (() => { + return i; + })(); + } +} + +//// [continueInLoopsWithCapturedBlockScopedBindings1.js] +function foo() { + var _loop_1 = function(i) { + if (i === 0) { + return "continue"; + } + // Trigger non-simple-loop emit + (function () { + return i; + })(); + }; + for (var _i = 0, _a = [0, 1]; _i < _a.length; _i++) { + var i = _a[_i]; + _loop_1(i); + } +} diff --git a/tests/baselines/reference/continueInLoopsWithCapturedBlockScopedBindings1.symbols b/tests/baselines/reference/continueInLoopsWithCapturedBlockScopedBindings1.symbols new file mode 100644 index 00000000000..bce177ca818 --- /dev/null +++ b/tests/baselines/reference/continueInLoopsWithCapturedBlockScopedBindings1.symbols @@ -0,0 +1,21 @@ +=== tests/cases/compiler/continueInLoopsWithCapturedBlockScopedBindings1.ts === +function foo() { +>foo : Symbol(foo, Decl(continueInLoopsWithCapturedBlockScopedBindings1.ts, 0, 0)) + + for (const i of [0, 1]) { +>i : Symbol(i, Decl(continueInLoopsWithCapturedBlockScopedBindings1.ts, 1, 14)) + + if (i === 0) { +>i : Symbol(i, Decl(continueInLoopsWithCapturedBlockScopedBindings1.ts, 1, 14)) + + continue; + } + + // Trigger non-simple-loop emit + (() => { + return i; +>i : Symbol(i, Decl(continueInLoopsWithCapturedBlockScopedBindings1.ts, 1, 14)) + + })(); + } +} diff --git a/tests/baselines/reference/continueInLoopsWithCapturedBlockScopedBindings1.types b/tests/baselines/reference/continueInLoopsWithCapturedBlockScopedBindings1.types new file mode 100644 index 00000000000..2aeb286d604 --- /dev/null +++ b/tests/baselines/reference/continueInLoopsWithCapturedBlockScopedBindings1.types @@ -0,0 +1,30 @@ +=== tests/cases/compiler/continueInLoopsWithCapturedBlockScopedBindings1.ts === +function foo() { +>foo : () => void + + for (const i of [0, 1]) { +>i : number +>[0, 1] : number[] +>0 : number +>1 : number + + if (i === 0) { +>i === 0 : boolean +>i : number +>0 : number + + continue; + } + + // Trigger non-simple-loop emit + (() => { +>(() => { return i; })() : number +>(() => { return i; }) : () => number +>() => { return i; } : () => number + + return i; +>i : number + + })(); + } +} diff --git a/tests/baselines/reference/controlFlowAssignmentExpression.js b/tests/baselines/reference/controlFlowAssignmentExpression.js new file mode 100644 index 00000000000..cf8d70b92de --- /dev/null +++ b/tests/baselines/reference/controlFlowAssignmentExpression.js @@ -0,0 +1,22 @@ +//// [controlFlowAssignmentExpression.ts] +let x: string | boolean | number; +let obj: any; + +x = ""; +x = x.length; +x; // number + +x = true; +(x = "", obj).foo = (x = x.length); +x; // number + + +//// [controlFlowAssignmentExpression.js] +var x; +var obj; +x = ""; +x = x.length; +x; // number +x = true; +(x = "", obj).foo = (x = x.length); +x; // number diff --git a/tests/baselines/reference/controlFlowAssignmentExpression.symbols b/tests/baselines/reference/controlFlowAssignmentExpression.symbols new file mode 100644 index 00000000000..470e3114ca8 --- /dev/null +++ b/tests/baselines/reference/controlFlowAssignmentExpression.symbols @@ -0,0 +1,33 @@ +=== tests/cases/conformance/controlFlow/controlFlowAssignmentExpression.ts === +let x: string | boolean | number; +>x : Symbol(x, Decl(controlFlowAssignmentExpression.ts, 0, 3)) + +let obj: any; +>obj : Symbol(obj, Decl(controlFlowAssignmentExpression.ts, 1, 3)) + +x = ""; +>x : Symbol(x, Decl(controlFlowAssignmentExpression.ts, 0, 3)) + +x = x.length; +>x : Symbol(x, Decl(controlFlowAssignmentExpression.ts, 0, 3)) +>x.length : Symbol(String.length, Decl(lib.d.ts, --, --)) +>x : Symbol(x, Decl(controlFlowAssignmentExpression.ts, 0, 3)) +>length : Symbol(String.length, Decl(lib.d.ts, --, --)) + +x; // number +>x : Symbol(x, Decl(controlFlowAssignmentExpression.ts, 0, 3)) + +x = true; +>x : Symbol(x, Decl(controlFlowAssignmentExpression.ts, 0, 3)) + +(x = "", obj).foo = (x = x.length); +>x : Symbol(x, Decl(controlFlowAssignmentExpression.ts, 0, 3)) +>obj : Symbol(obj, Decl(controlFlowAssignmentExpression.ts, 1, 3)) +>x : Symbol(x, Decl(controlFlowAssignmentExpression.ts, 0, 3)) +>x.length : Symbol(String.length, Decl(lib.d.ts, --, --)) +>x : Symbol(x, Decl(controlFlowAssignmentExpression.ts, 0, 3)) +>length : Symbol(String.length, Decl(lib.d.ts, --, --)) + +x; // number +>x : Symbol(x, Decl(controlFlowAssignmentExpression.ts, 0, 3)) + diff --git a/tests/baselines/reference/controlFlowAssignmentExpression.types b/tests/baselines/reference/controlFlowAssignmentExpression.types new file mode 100644 index 00000000000..24355fd8c4a --- /dev/null +++ b/tests/baselines/reference/controlFlowAssignmentExpression.types @@ -0,0 +1,47 @@ +=== tests/cases/conformance/controlFlow/controlFlowAssignmentExpression.ts === +let x: string | boolean | number; +>x : string | boolean | number + +let obj: any; +>obj : any + +x = ""; +>x = "" : string +>x : string | boolean | number +>"" : string + +x = x.length; +>x = x.length : number +>x : string | boolean | number +>x.length : number +>x : string +>length : number + +x; // number +>x : number + +x = true; +>x = true : boolean +>x : string | boolean | number +>true : boolean + +(x = "", obj).foo = (x = x.length); +>(x = "", obj).foo = (x = x.length) : number +>(x = "", obj).foo : any +>(x = "", obj) : any +>x = "", obj : any +>x = "" : string +>x : string | boolean | number +>"" : string +>obj : any +>foo : any +>(x = x.length) : number +>x = x.length : number +>x : string | boolean | number +>x.length : number +>x : string +>length : number + +x; // number +>x : number + diff --git a/tests/baselines/reference/controlFlowBinaryAndExpression.js b/tests/baselines/reference/controlFlowBinaryAndExpression.js new file mode 100644 index 00000000000..eb89d1a78cf --- /dev/null +++ b/tests/baselines/reference/controlFlowBinaryAndExpression.js @@ -0,0 +1,20 @@ +//// [controlFlowBinaryAndExpression.ts] +let x: string | number | boolean; +let cond: boolean; + +(x = "") && (x = 0); +x; // string | number + +x = ""; +cond && (x = 0); +x; // string | number + + +//// [controlFlowBinaryAndExpression.js] +var x; +var cond; +(x = "") && (x = 0); +x; // string | number +x = ""; +cond && (x = 0); +x; // string | number diff --git a/tests/baselines/reference/controlFlowBinaryAndExpression.symbols b/tests/baselines/reference/controlFlowBinaryAndExpression.symbols new file mode 100644 index 00000000000..5be553f6802 --- /dev/null +++ b/tests/baselines/reference/controlFlowBinaryAndExpression.symbols @@ -0,0 +1,24 @@ +=== tests/cases/conformance/controlFlow/controlFlowBinaryAndExpression.ts === +let x: string | number | boolean; +>x : Symbol(x, Decl(controlFlowBinaryAndExpression.ts, 0, 3)) + +let cond: boolean; +>cond : Symbol(cond, Decl(controlFlowBinaryAndExpression.ts, 1, 3)) + +(x = "") && (x = 0); +>x : Symbol(x, Decl(controlFlowBinaryAndExpression.ts, 0, 3)) +>x : Symbol(x, Decl(controlFlowBinaryAndExpression.ts, 0, 3)) + +x; // string | number +>x : Symbol(x, Decl(controlFlowBinaryAndExpression.ts, 0, 3)) + +x = ""; +>x : Symbol(x, Decl(controlFlowBinaryAndExpression.ts, 0, 3)) + +cond && (x = 0); +>cond : Symbol(cond, Decl(controlFlowBinaryAndExpression.ts, 1, 3)) +>x : Symbol(x, Decl(controlFlowBinaryAndExpression.ts, 0, 3)) + +x; // string | number +>x : Symbol(x, Decl(controlFlowBinaryAndExpression.ts, 0, 3)) + diff --git a/tests/baselines/reference/controlFlowBinaryAndExpression.types b/tests/baselines/reference/controlFlowBinaryAndExpression.types new file mode 100644 index 00000000000..8a1924c42eb --- /dev/null +++ b/tests/baselines/reference/controlFlowBinaryAndExpression.types @@ -0,0 +1,37 @@ +=== tests/cases/conformance/controlFlow/controlFlowBinaryAndExpression.ts === +let x: string | number | boolean; +>x : string | number | boolean + +let cond: boolean; +>cond : boolean + +(x = "") && (x = 0); +>(x = "") && (x = 0) : number +>(x = "") : string +>x = "" : string +>x : string | number | boolean +>"" : string +>(x = 0) : number +>x = 0 : number +>x : string | number | boolean +>0 : number + +x; // string | number +>x : string | number + +x = ""; +>x = "" : string +>x : string | number | boolean +>"" : string + +cond && (x = 0); +>cond && (x = 0) : number +>cond : boolean +>(x = 0) : number +>x = 0 : number +>x : string | number | boolean +>0 : number + +x; // string | number +>x : string | number + diff --git a/tests/baselines/reference/controlFlowBinaryOrExpression.js b/tests/baselines/reference/controlFlowBinaryOrExpression.js new file mode 100644 index 00000000000..fb48c5a23e0 --- /dev/null +++ b/tests/baselines/reference/controlFlowBinaryOrExpression.js @@ -0,0 +1,57 @@ +//// [controlFlowBinaryOrExpression.ts] +let x: string | number | boolean; +let cond: boolean; + +(x = "") || (x = 0); +x; // string | number + +x = ""; +cond || (x = 0); +x; // string | number + +export interface NodeList { + length: number; +} + +export interface HTMLCollection { + length: number; +} + +declare function isNodeList(sourceObj: any): sourceObj is NodeList; +declare function isHTMLCollection(sourceObj: any): sourceObj is HTMLCollection; + +type EventTargetLike = {a: string} | HTMLCollection | NodeList; + +var sourceObj: EventTargetLike = undefined; +if (isNodeList(sourceObj)) { + sourceObj.length; +} + +if (isHTMLCollection(sourceObj)) { + sourceObj.length; +} + +if (isNodeList(sourceObj) || isHTMLCollection(sourceObj)) { + sourceObj.length; +} + + +//// [controlFlowBinaryOrExpression.js] +"use strict"; +var x; +var cond; +(x = "") || (x = 0); +x; // string | number +x = ""; +cond || (x = 0); +x; // string | number +var sourceObj = undefined; +if (isNodeList(sourceObj)) { + sourceObj.length; +} +if (isHTMLCollection(sourceObj)) { + sourceObj.length; +} +if (isNodeList(sourceObj) || isHTMLCollection(sourceObj)) { + sourceObj.length; +} diff --git a/tests/baselines/reference/controlFlowBinaryOrExpression.symbols b/tests/baselines/reference/controlFlowBinaryOrExpression.symbols new file mode 100644 index 00000000000..e47bdb19d34 --- /dev/null +++ b/tests/baselines/reference/controlFlowBinaryOrExpression.symbols @@ -0,0 +1,93 @@ +=== tests/cases/conformance/controlFlow/controlFlowBinaryOrExpression.ts === +let x: string | number | boolean; +>x : Symbol(x, Decl(controlFlowBinaryOrExpression.ts, 0, 3)) + +let cond: boolean; +>cond : Symbol(cond, Decl(controlFlowBinaryOrExpression.ts, 1, 3)) + +(x = "") || (x = 0); +>x : Symbol(x, Decl(controlFlowBinaryOrExpression.ts, 0, 3)) +>x : Symbol(x, Decl(controlFlowBinaryOrExpression.ts, 0, 3)) + +x; // string | number +>x : Symbol(x, Decl(controlFlowBinaryOrExpression.ts, 0, 3)) + +x = ""; +>x : Symbol(x, Decl(controlFlowBinaryOrExpression.ts, 0, 3)) + +cond || (x = 0); +>cond : Symbol(cond, Decl(controlFlowBinaryOrExpression.ts, 1, 3)) +>x : Symbol(x, Decl(controlFlowBinaryOrExpression.ts, 0, 3)) + +x; // string | number +>x : Symbol(x, Decl(controlFlowBinaryOrExpression.ts, 0, 3)) + +export interface NodeList { +>NodeList : Symbol(NodeList, Decl(controlFlowBinaryOrExpression.ts, 8, 2)) + + length: number; +>length : Symbol(NodeList.length, Decl(controlFlowBinaryOrExpression.ts, 10, 27)) +} + +export interface HTMLCollection { +>HTMLCollection : Symbol(HTMLCollection, Decl(controlFlowBinaryOrExpression.ts, 12, 1)) + + length: number; +>length : Symbol(HTMLCollection.length, Decl(controlFlowBinaryOrExpression.ts, 14, 33)) +} + +declare function isNodeList(sourceObj: any): sourceObj is NodeList; +>isNodeList : Symbol(isNodeList, Decl(controlFlowBinaryOrExpression.ts, 16, 1)) +>sourceObj : Symbol(sourceObj, Decl(controlFlowBinaryOrExpression.ts, 18, 28)) +>sourceObj : Symbol(sourceObj, Decl(controlFlowBinaryOrExpression.ts, 18, 28)) +>NodeList : Symbol(NodeList, Decl(controlFlowBinaryOrExpression.ts, 8, 2)) + +declare function isHTMLCollection(sourceObj: any): sourceObj is HTMLCollection; +>isHTMLCollection : Symbol(isHTMLCollection, Decl(controlFlowBinaryOrExpression.ts, 18, 67)) +>sourceObj : Symbol(sourceObj, Decl(controlFlowBinaryOrExpression.ts, 19, 34)) +>sourceObj : Symbol(sourceObj, Decl(controlFlowBinaryOrExpression.ts, 19, 34)) +>HTMLCollection : Symbol(HTMLCollection, Decl(controlFlowBinaryOrExpression.ts, 12, 1)) + +type EventTargetLike = {a: string} | HTMLCollection | NodeList; +>EventTargetLike : Symbol(EventTargetLike, Decl(controlFlowBinaryOrExpression.ts, 19, 79)) +>a : Symbol(a, Decl(controlFlowBinaryOrExpression.ts, 21, 24)) +>HTMLCollection : Symbol(HTMLCollection, Decl(controlFlowBinaryOrExpression.ts, 12, 1)) +>NodeList : Symbol(NodeList, Decl(controlFlowBinaryOrExpression.ts, 8, 2)) + +var sourceObj: EventTargetLike = undefined; +>sourceObj : Symbol(sourceObj, Decl(controlFlowBinaryOrExpression.ts, 23, 3)) +>EventTargetLike : Symbol(EventTargetLike, Decl(controlFlowBinaryOrExpression.ts, 19, 79)) +>undefined : Symbol(undefined) + +if (isNodeList(sourceObj)) { +>isNodeList : Symbol(isNodeList, Decl(controlFlowBinaryOrExpression.ts, 16, 1)) +>sourceObj : Symbol(sourceObj, Decl(controlFlowBinaryOrExpression.ts, 23, 3)) + + sourceObj.length; +>sourceObj.length : Symbol(HTMLCollection.length, Decl(controlFlowBinaryOrExpression.ts, 14, 33)) +>sourceObj : Symbol(sourceObj, Decl(controlFlowBinaryOrExpression.ts, 23, 3)) +>length : Symbol(HTMLCollection.length, Decl(controlFlowBinaryOrExpression.ts, 14, 33)) +} + +if (isHTMLCollection(sourceObj)) { +>isHTMLCollection : Symbol(isHTMLCollection, Decl(controlFlowBinaryOrExpression.ts, 18, 67)) +>sourceObj : Symbol(sourceObj, Decl(controlFlowBinaryOrExpression.ts, 23, 3)) + + sourceObj.length; +>sourceObj.length : Symbol(HTMLCollection.length, Decl(controlFlowBinaryOrExpression.ts, 14, 33)) +>sourceObj : Symbol(sourceObj, Decl(controlFlowBinaryOrExpression.ts, 23, 3)) +>length : Symbol(HTMLCollection.length, Decl(controlFlowBinaryOrExpression.ts, 14, 33)) +} + +if (isNodeList(sourceObj) || isHTMLCollection(sourceObj)) { +>isNodeList : Symbol(isNodeList, Decl(controlFlowBinaryOrExpression.ts, 16, 1)) +>sourceObj : Symbol(sourceObj, Decl(controlFlowBinaryOrExpression.ts, 23, 3)) +>isHTMLCollection : Symbol(isHTMLCollection, Decl(controlFlowBinaryOrExpression.ts, 18, 67)) +>sourceObj : Symbol(sourceObj, Decl(controlFlowBinaryOrExpression.ts, 23, 3)) + + sourceObj.length; +>sourceObj.length : Symbol(HTMLCollection.length, Decl(controlFlowBinaryOrExpression.ts, 14, 33)) +>sourceObj : Symbol(sourceObj, Decl(controlFlowBinaryOrExpression.ts, 23, 3)) +>length : Symbol(HTMLCollection.length, Decl(controlFlowBinaryOrExpression.ts, 14, 33)) +} + diff --git a/tests/baselines/reference/controlFlowBinaryOrExpression.types b/tests/baselines/reference/controlFlowBinaryOrExpression.types new file mode 100644 index 00000000000..8c1cd32d8d9 --- /dev/null +++ b/tests/baselines/reference/controlFlowBinaryOrExpression.types @@ -0,0 +1,112 @@ +=== tests/cases/conformance/controlFlow/controlFlowBinaryOrExpression.ts === +let x: string | number | boolean; +>x : string | number | boolean + +let cond: boolean; +>cond : boolean + +(x = "") || (x = 0); +>(x = "") || (x = 0) : string | number +>(x = "") : string +>x = "" : string +>x : string | number | boolean +>"" : string +>(x = 0) : number +>x = 0 : number +>x : string | number | boolean +>0 : number + +x; // string | number +>x : string | number + +x = ""; +>x = "" : string +>x : string | number | boolean +>"" : string + +cond || (x = 0); +>cond || (x = 0) : boolean | number +>cond : boolean +>(x = 0) : number +>x = 0 : number +>x : string | number | boolean +>0 : number + +x; // string | number +>x : string | number + +export interface NodeList { +>NodeList : NodeList + + length: number; +>length : number +} + +export interface HTMLCollection { +>HTMLCollection : HTMLCollection + + length: number; +>length : number +} + +declare function isNodeList(sourceObj: any): sourceObj is NodeList; +>isNodeList : (sourceObj: any) => sourceObj is NodeList +>sourceObj : any +>sourceObj : any +>NodeList : NodeList + +declare function isHTMLCollection(sourceObj: any): sourceObj is HTMLCollection; +>isHTMLCollection : (sourceObj: any) => sourceObj is HTMLCollection +>sourceObj : any +>sourceObj : any +>HTMLCollection : HTMLCollection + +type EventTargetLike = {a: string} | HTMLCollection | NodeList; +>EventTargetLike : { a: string; } | HTMLCollection | NodeList +>a : string +>HTMLCollection : HTMLCollection +>NodeList : NodeList + +var sourceObj: EventTargetLike = undefined; +>sourceObj : { a: string; } | HTMLCollection | NodeList +>EventTargetLike : { a: string; } | HTMLCollection | NodeList +>undefined : any +>undefined : undefined + +if (isNodeList(sourceObj)) { +>isNodeList(sourceObj) : boolean +>isNodeList : (sourceObj: any) => sourceObj is NodeList +>sourceObj : { a: string; } | HTMLCollection + + sourceObj.length; +>sourceObj.length : number +>sourceObj : HTMLCollection +>length : number +} + +if (isHTMLCollection(sourceObj)) { +>isHTMLCollection(sourceObj) : boolean +>isHTMLCollection : (sourceObj: any) => sourceObj is HTMLCollection +>sourceObj : HTMLCollection | { a: string; } + + sourceObj.length; +>sourceObj.length : number +>sourceObj : HTMLCollection +>length : number +} + +if (isNodeList(sourceObj) || isHTMLCollection(sourceObj)) { +>isNodeList(sourceObj) || isHTMLCollection(sourceObj) : boolean +>isNodeList(sourceObj) : boolean +>isNodeList : (sourceObj: any) => sourceObj is NodeList +>sourceObj : HTMLCollection | { a: string; } +>isHTMLCollection(sourceObj) : boolean +>isHTMLCollection : (sourceObj: any) => sourceObj is HTMLCollection +>sourceObj : { a: string; } + + sourceObj.length; +>sourceObj.length : number +>sourceObj : HTMLCollection +>length : number +} + diff --git a/tests/baselines/reference/controlFlowCommaOperator.js b/tests/baselines/reference/controlFlowCommaOperator.js new file mode 100644 index 00000000000..55dcc77e075 --- /dev/null +++ b/tests/baselines/reference/controlFlowCommaOperator.js @@ -0,0 +1,48 @@ +//// [controlFlowCommaOperator.ts] +function f(x: string | number | boolean) { + let y: string | number | boolean = false; + let z: string | number | boolean = false; + if (y = "", typeof x === "string") { + x; // string + y; // string + z; // boolean + } + else if (z = 1, typeof x === "number") { + x; // number + y; // string + z; // number + } + else { + x; // boolean + y; // string + z; // number + } + x; // string | number | boolean + y; // string + z; // number | boolean +} + + +//// [controlFlowCommaOperator.js] +function f(x) { + var y = false; + var z = false; + if (y = "", typeof x === "string") { + x; // string + y; // string + z; // boolean + } + else if (z = 1, typeof x === "number") { + x; // number + y; // string + z; // number + } + else { + x; // boolean + y; // string + z; // number + } + x; // string | number | boolean + y; // string + z; // number | boolean +} diff --git a/tests/baselines/reference/controlFlowCommaOperator.symbols b/tests/baselines/reference/controlFlowCommaOperator.symbols new file mode 100644 index 00000000000..f1550b79a68 --- /dev/null +++ b/tests/baselines/reference/controlFlowCommaOperator.symbols @@ -0,0 +1,57 @@ +=== tests/cases/conformance/controlFlow/controlFlowCommaOperator.ts === +function f(x: string | number | boolean) { +>f : Symbol(f, Decl(controlFlowCommaOperator.ts, 0, 0)) +>x : Symbol(x, Decl(controlFlowCommaOperator.ts, 0, 11)) + + let y: string | number | boolean = false; +>y : Symbol(y, Decl(controlFlowCommaOperator.ts, 1, 7)) + + let z: string | number | boolean = false; +>z : Symbol(z, Decl(controlFlowCommaOperator.ts, 2, 7)) + + if (y = "", typeof x === "string") { +>y : Symbol(y, Decl(controlFlowCommaOperator.ts, 1, 7)) +>x : Symbol(x, Decl(controlFlowCommaOperator.ts, 0, 11)) + + x; // string +>x : Symbol(x, Decl(controlFlowCommaOperator.ts, 0, 11)) + + y; // string +>y : Symbol(y, Decl(controlFlowCommaOperator.ts, 1, 7)) + + z; // boolean +>z : Symbol(z, Decl(controlFlowCommaOperator.ts, 2, 7)) + } + else if (z = 1, typeof x === "number") { +>z : Symbol(z, Decl(controlFlowCommaOperator.ts, 2, 7)) +>x : Symbol(x, Decl(controlFlowCommaOperator.ts, 0, 11)) + + x; // number +>x : Symbol(x, Decl(controlFlowCommaOperator.ts, 0, 11)) + + y; // string +>y : Symbol(y, Decl(controlFlowCommaOperator.ts, 1, 7)) + + z; // number +>z : Symbol(z, Decl(controlFlowCommaOperator.ts, 2, 7)) + } + else { + x; // boolean +>x : Symbol(x, Decl(controlFlowCommaOperator.ts, 0, 11)) + + y; // string +>y : Symbol(y, Decl(controlFlowCommaOperator.ts, 1, 7)) + + z; // number +>z : Symbol(z, Decl(controlFlowCommaOperator.ts, 2, 7)) + } + x; // string | number | boolean +>x : Symbol(x, Decl(controlFlowCommaOperator.ts, 0, 11)) + + y; // string +>y : Symbol(y, Decl(controlFlowCommaOperator.ts, 1, 7)) + + z; // number | boolean +>z : Symbol(z, Decl(controlFlowCommaOperator.ts, 2, 7)) +} + diff --git a/tests/baselines/reference/controlFlowCommaOperator.types b/tests/baselines/reference/controlFlowCommaOperator.types new file mode 100644 index 00000000000..53014ceafa7 --- /dev/null +++ b/tests/baselines/reference/controlFlowCommaOperator.types @@ -0,0 +1,71 @@ +=== tests/cases/conformance/controlFlow/controlFlowCommaOperator.ts === +function f(x: string | number | boolean) { +>f : (x: string | number | boolean) => void +>x : string | number | boolean + + let y: string | number | boolean = false; +>y : string | number | boolean +>false : boolean + + let z: string | number | boolean = false; +>z : string | number | boolean +>false : boolean + + if (y = "", typeof x === "string") { +>y = "", typeof x === "string" : boolean +>y = "" : string +>y : string | number | boolean +>"" : string +>typeof x === "string" : boolean +>typeof x : string +>x : string | number | boolean +>"string" : string + + x; // string +>x : string + + y; // string +>y : string + + z; // boolean +>z : boolean + } + else if (z = 1, typeof x === "number") { +>z = 1, typeof x === "number" : boolean +>z = 1 : number +>z : string | number | boolean +>1 : number +>typeof x === "number" : boolean +>typeof x : string +>x : number | boolean +>"number" : string + + x; // number +>x : number + + y; // string +>y : string + + z; // number +>z : number + } + else { + x; // boolean +>x : boolean + + y; // string +>y : string + + z; // number +>z : number + } + x; // string | number | boolean +>x : string | number | boolean + + y; // string +>y : string + + z; // number | boolean +>z : boolean | number +} + diff --git a/tests/baselines/reference/controlFlowConditionalExpression.js b/tests/baselines/reference/controlFlowConditionalExpression.js new file mode 100644 index 00000000000..f39b999039b --- /dev/null +++ b/tests/baselines/reference/controlFlowConditionalExpression.js @@ -0,0 +1,13 @@ +//// [controlFlowConditionalExpression.ts] +let x: string | number | boolean; +let cond: boolean; + +cond ? x = "" : x = 3; +x; // string | number + + +//// [controlFlowConditionalExpression.js] +var x; +var cond; +cond ? x = "" : x = 3; +x; // string | number diff --git a/tests/baselines/reference/controlFlowConditionalExpression.symbols b/tests/baselines/reference/controlFlowConditionalExpression.symbols new file mode 100644 index 00000000000..b1a4074d08d --- /dev/null +++ b/tests/baselines/reference/controlFlowConditionalExpression.symbols @@ -0,0 +1,15 @@ +=== tests/cases/conformance/controlFlow/controlFlowConditionalExpression.ts === +let x: string | number | boolean; +>x : Symbol(x, Decl(controlFlowConditionalExpression.ts, 0, 3)) + +let cond: boolean; +>cond : Symbol(cond, Decl(controlFlowConditionalExpression.ts, 1, 3)) + +cond ? x = "" : x = 3; +>cond : Symbol(cond, Decl(controlFlowConditionalExpression.ts, 1, 3)) +>x : Symbol(x, Decl(controlFlowConditionalExpression.ts, 0, 3)) +>x : Symbol(x, Decl(controlFlowConditionalExpression.ts, 0, 3)) + +x; // string | number +>x : Symbol(x, Decl(controlFlowConditionalExpression.ts, 0, 3)) + diff --git a/tests/baselines/reference/controlFlowConditionalExpression.types b/tests/baselines/reference/controlFlowConditionalExpression.types new file mode 100644 index 00000000000..c6084e052b1 --- /dev/null +++ b/tests/baselines/reference/controlFlowConditionalExpression.types @@ -0,0 +1,20 @@ +=== tests/cases/conformance/controlFlow/controlFlowConditionalExpression.ts === +let x: string | number | boolean; +>x : string | number | boolean + +let cond: boolean; +>cond : boolean + +cond ? x = "" : x = 3; +>cond ? x = "" : x = 3 : string | number +>cond : boolean +>x = "" : string +>x : string | number | boolean +>"" : string +>x = 3 : number +>x : string | number | boolean +>3 : number + +x; // string | number +>x : string | number + diff --git a/tests/baselines/reference/controlFlowDestructuringDeclaration.js b/tests/baselines/reference/controlFlowDestructuringDeclaration.js new file mode 100644 index 00000000000..766fb6baeb2 --- /dev/null +++ b/tests/baselines/reference/controlFlowDestructuringDeclaration.js @@ -0,0 +1,113 @@ +//// [controlFlowDestructuringDeclaration.ts] + +function f1() { + let x: string | number = 1; + x; + let y: string | undefined = ""; + y; +} + +function f2() { + let [x]: [string | number] = [1]; + x; + let [y]: [string | undefined] = [""]; + y; + let [z = ""]: [string | undefined] = [undefined]; + z; +} + +function f3() { + let [x]: (string | number)[] = [1]; + x; + let [y]: (string | undefined)[] = [""]; + y; + let [z = ""]: (string | undefined)[] = [undefined]; + z; +} + +function f4() { + let { x }: { x: string | number } = { x: 1 }; + x; + let { y }: { y: string | undefined } = { y: "" }; + y; + let { z = "" }: { z: string | undefined } = { z: undefined }; + z; +} + +function f5() { + let { x }: { x?: string | number } = { x: 1 }; + x; + let { y }: { y?: string | undefined } = { y: "" }; + y; + let { z = "" }: { z?: string | undefined } = { z: undefined }; + z; +} + +function f6() { + let { x }: { x?: string | number } = {}; + x; + let { y }: { y?: string | undefined } = {}; + y; + let { z = "" }: { z?: string | undefined } = {}; + z; +} + +function f7() { + let o: { [x: string]: number } = { x: 1 }; + let { x }: { [x: string]: string | number } = o; + x; +} + + +//// [controlFlowDestructuringDeclaration.js] +function f1() { + var x = 1; + x; + var y = ""; + y; +} +function f2() { + var x = [1][0]; + x; + var y = [""][0]; + y; + var _a = [undefined][0], z = _a === void 0 ? "" : _a; + z; +} +function f3() { + var x = [1][0]; + x; + var y = [""][0]; + y; + var _a = [undefined][0], z = _a === void 0 ? "" : _a; + z; +} +function f4() { + var x = { x: 1 }.x; + x; + var y = { y: "" }.y; + y; + var _a = { z: undefined }.z, z = _a === void 0 ? "" : _a; + z; +} +function f5() { + var x = { x: 1 }.x; + x; + var y = { y: "" }.y; + y; + var _a = { z: undefined }.z, z = _a === void 0 ? "" : _a; + z; +} +function f6() { + var x = {}.x; + x; + var y = {}.y; + y; + var _a = {}.z, z = _a === void 0 ? "" : _a; + z; +} +function f7() { + var o = { x: 1 }; + var x = o.x; + x; +} diff --git a/tests/baselines/reference/controlFlowDestructuringDeclaration.symbols b/tests/baselines/reference/controlFlowDestructuringDeclaration.symbols new file mode 100644 index 00000000000..65f0e497942 --- /dev/null +++ b/tests/baselines/reference/controlFlowDestructuringDeclaration.symbols @@ -0,0 +1,164 @@ +=== tests/cases/conformance/controlFlow/controlFlowDestructuringDeclaration.ts === + +function f1() { +>f1 : Symbol(f1, Decl(controlFlowDestructuringDeclaration.ts, 0, 0)) + + let x: string | number = 1; +>x : Symbol(x, Decl(controlFlowDestructuringDeclaration.ts, 2, 7)) + + x; +>x : Symbol(x, Decl(controlFlowDestructuringDeclaration.ts, 2, 7)) + + let y: string | undefined = ""; +>y : Symbol(y, Decl(controlFlowDestructuringDeclaration.ts, 4, 7)) + + y; +>y : Symbol(y, Decl(controlFlowDestructuringDeclaration.ts, 4, 7)) +} + +function f2() { +>f2 : Symbol(f2, Decl(controlFlowDestructuringDeclaration.ts, 6, 1)) + + let [x]: [string | number] = [1]; +>x : Symbol(x, Decl(controlFlowDestructuringDeclaration.ts, 9, 9)) + + x; +>x : Symbol(x, Decl(controlFlowDestructuringDeclaration.ts, 9, 9)) + + let [y]: [string | undefined] = [""]; +>y : Symbol(y, Decl(controlFlowDestructuringDeclaration.ts, 11, 9)) + + y; +>y : Symbol(y, Decl(controlFlowDestructuringDeclaration.ts, 11, 9)) + + let [z = ""]: [string | undefined] = [undefined]; +>z : Symbol(z, Decl(controlFlowDestructuringDeclaration.ts, 13, 9)) +>undefined : Symbol(undefined) + + z; +>z : Symbol(z, Decl(controlFlowDestructuringDeclaration.ts, 13, 9)) +} + +function f3() { +>f3 : Symbol(f3, Decl(controlFlowDestructuringDeclaration.ts, 15, 1)) + + let [x]: (string | number)[] = [1]; +>x : Symbol(x, Decl(controlFlowDestructuringDeclaration.ts, 18, 9)) + + x; +>x : Symbol(x, Decl(controlFlowDestructuringDeclaration.ts, 18, 9)) + + let [y]: (string | undefined)[] = [""]; +>y : Symbol(y, Decl(controlFlowDestructuringDeclaration.ts, 20, 9)) + + y; +>y : Symbol(y, Decl(controlFlowDestructuringDeclaration.ts, 20, 9)) + + let [z = ""]: (string | undefined)[] = [undefined]; +>z : Symbol(z, Decl(controlFlowDestructuringDeclaration.ts, 22, 9)) +>undefined : Symbol(undefined) + + z; +>z : Symbol(z, Decl(controlFlowDestructuringDeclaration.ts, 22, 9)) +} + +function f4() { +>f4 : Symbol(f4, Decl(controlFlowDestructuringDeclaration.ts, 24, 1)) + + let { x }: { x: string | number } = { x: 1 }; +>x : Symbol(x, Decl(controlFlowDestructuringDeclaration.ts, 27, 9)) +>x : Symbol(x, Decl(controlFlowDestructuringDeclaration.ts, 27, 16)) +>x : Symbol(x, Decl(controlFlowDestructuringDeclaration.ts, 27, 41)) + + x; +>x : Symbol(x, Decl(controlFlowDestructuringDeclaration.ts, 27, 9)) + + let { y }: { y: string | undefined } = { y: "" }; +>y : Symbol(y, Decl(controlFlowDestructuringDeclaration.ts, 29, 9)) +>y : Symbol(y, Decl(controlFlowDestructuringDeclaration.ts, 29, 16)) +>y : Symbol(y, Decl(controlFlowDestructuringDeclaration.ts, 29, 44)) + + y; +>y : Symbol(y, Decl(controlFlowDestructuringDeclaration.ts, 29, 9)) + + let { z = "" }: { z: string | undefined } = { z: undefined }; +>z : Symbol(z, Decl(controlFlowDestructuringDeclaration.ts, 31, 9)) +>z : Symbol(z, Decl(controlFlowDestructuringDeclaration.ts, 31, 21)) +>z : Symbol(z, Decl(controlFlowDestructuringDeclaration.ts, 31, 49)) +>undefined : Symbol(undefined) + + z; +>z : Symbol(z, Decl(controlFlowDestructuringDeclaration.ts, 31, 9)) +} + +function f5() { +>f5 : Symbol(f5, Decl(controlFlowDestructuringDeclaration.ts, 33, 1)) + + let { x }: { x?: string | number } = { x: 1 }; +>x : Symbol(x, Decl(controlFlowDestructuringDeclaration.ts, 36, 9)) +>x : Symbol(x, Decl(controlFlowDestructuringDeclaration.ts, 36, 16)) +>x : Symbol(x, Decl(controlFlowDestructuringDeclaration.ts, 36, 42)) + + x; +>x : Symbol(x, Decl(controlFlowDestructuringDeclaration.ts, 36, 9)) + + let { y }: { y?: string | undefined } = { y: "" }; +>y : Symbol(y, Decl(controlFlowDestructuringDeclaration.ts, 38, 9)) +>y : Symbol(y, Decl(controlFlowDestructuringDeclaration.ts, 38, 16)) +>y : Symbol(y, Decl(controlFlowDestructuringDeclaration.ts, 38, 45)) + + y; +>y : Symbol(y, Decl(controlFlowDestructuringDeclaration.ts, 38, 9)) + + let { z = "" }: { z?: string | undefined } = { z: undefined }; +>z : Symbol(z, Decl(controlFlowDestructuringDeclaration.ts, 40, 9)) +>z : Symbol(z, Decl(controlFlowDestructuringDeclaration.ts, 40, 21)) +>z : Symbol(z, Decl(controlFlowDestructuringDeclaration.ts, 40, 50)) +>undefined : Symbol(undefined) + + z; +>z : Symbol(z, Decl(controlFlowDestructuringDeclaration.ts, 40, 9)) +} + +function f6() { +>f6 : Symbol(f6, Decl(controlFlowDestructuringDeclaration.ts, 42, 1)) + + let { x }: { x?: string | number } = {}; +>x : Symbol(x, Decl(controlFlowDestructuringDeclaration.ts, 45, 9)) +>x : Symbol(x, Decl(controlFlowDestructuringDeclaration.ts, 45, 16)) + + x; +>x : Symbol(x, Decl(controlFlowDestructuringDeclaration.ts, 45, 9)) + + let { y }: { y?: string | undefined } = {}; +>y : Symbol(y, Decl(controlFlowDestructuringDeclaration.ts, 47, 9)) +>y : Symbol(y, Decl(controlFlowDestructuringDeclaration.ts, 47, 16)) + + y; +>y : Symbol(y, Decl(controlFlowDestructuringDeclaration.ts, 47, 9)) + + let { z = "" }: { z?: string | undefined } = {}; +>z : Symbol(z, Decl(controlFlowDestructuringDeclaration.ts, 49, 9)) +>z : Symbol(z, Decl(controlFlowDestructuringDeclaration.ts, 49, 21)) + + z; +>z : Symbol(z, Decl(controlFlowDestructuringDeclaration.ts, 49, 9)) +} + +function f7() { +>f7 : Symbol(f7, Decl(controlFlowDestructuringDeclaration.ts, 51, 1)) + + let o: { [x: string]: number } = { x: 1 }; +>o : Symbol(o, Decl(controlFlowDestructuringDeclaration.ts, 54, 7)) +>x : Symbol(x, Decl(controlFlowDestructuringDeclaration.ts, 54, 14)) +>x : Symbol(x, Decl(controlFlowDestructuringDeclaration.ts, 54, 38)) + + let { x }: { [x: string]: string | number } = o; +>x : Symbol(x, Decl(controlFlowDestructuringDeclaration.ts, 55, 9)) +>x : Symbol(x, Decl(controlFlowDestructuringDeclaration.ts, 55, 18)) +>o : Symbol(o, Decl(controlFlowDestructuringDeclaration.ts, 54, 7)) + + x; +>x : Symbol(x, Decl(controlFlowDestructuringDeclaration.ts, 55, 9)) +} + diff --git a/tests/baselines/reference/controlFlowDestructuringDeclaration.types b/tests/baselines/reference/controlFlowDestructuringDeclaration.types new file mode 100644 index 00000000000..2e3b1f5647e --- /dev/null +++ b/tests/baselines/reference/controlFlowDestructuringDeclaration.types @@ -0,0 +1,196 @@ +=== tests/cases/conformance/controlFlow/controlFlowDestructuringDeclaration.ts === + +function f1() { +>f1 : () => void + + let x: string | number = 1; +>x : string | number +>1 : number + + x; +>x : number + + let y: string | undefined = ""; +>y : string | undefined +>"" : string + + y; +>y : string +} + +function f2() { +>f2 : () => void + + let [x]: [string | number] = [1]; +>x : string | number +>[1] : [number] +>1 : number + + x; +>x : number + + let [y]: [string | undefined] = [""]; +>y : string | undefined +>[""] : [string] +>"" : string + + y; +>y : string + + let [z = ""]: [string | undefined] = [undefined]; +>z : string +>"" : string +>[undefined] : [undefined] +>undefined : undefined + + z; +>z : string +} + +function f3() { +>f3 : () => void + + let [x]: (string | number)[] = [1]; +>x : string | number +>[1] : number[] +>1 : number + + x; +>x : number + + let [y]: (string | undefined)[] = [""]; +>y : string | undefined +>[""] : string[] +>"" : string + + y; +>y : string + + let [z = ""]: (string | undefined)[] = [undefined]; +>z : string +>"" : string +>[undefined] : undefined[] +>undefined : undefined + + z; +>z : string +} + +function f4() { +>f4 : () => void + + let { x }: { x: string | number } = { x: 1 }; +>x : string | number +>x : string | number +>{ x: 1 } : { x: number; } +>x : number +>1 : number + + x; +>x : number + + let { y }: { y: string | undefined } = { y: "" }; +>y : string | undefined +>y : string | undefined +>{ y: "" } : { y: string; } +>y : string +>"" : string + + y; +>y : string + + let { z = "" }: { z: string | undefined } = { z: undefined }; +>z : string +>"" : string +>z : string | undefined +>{ z: undefined } : { z: undefined; } +>z : undefined +>undefined : undefined + + z; +>z : string +} + +function f5() { +>f5 : () => void + + let { x }: { x?: string | number } = { x: 1 }; +>x : string | number | undefined +>x : string | number | undefined +>{ x: 1 } : { x: number; } +>x : number +>1 : number + + x; +>x : number + + let { y }: { y?: string | undefined } = { y: "" }; +>y : string | undefined +>y : string | undefined +>{ y: "" } : { y: string; } +>y : string +>"" : string + + y; +>y : string + + let { z = "" }: { z?: string | undefined } = { z: undefined }; +>z : string +>"" : string +>z : string | undefined +>{ z: undefined } : { z: undefined; } +>z : undefined +>undefined : undefined + + z; +>z : string +} + +function f6() { +>f6 : () => void + + let { x }: { x?: string | number } = {}; +>x : string | number | undefined +>x : string | number | undefined +>{} : {} + + x; +>x : string | number | undefined + + let { y }: { y?: string | undefined } = {}; +>y : string | undefined +>y : string | undefined +>{} : {} + + y; +>y : string | undefined + + let { z = "" }: { z?: string | undefined } = {}; +>z : string +>"" : string +>z : string | undefined +>{} : {} + + z; +>z : string +} + +function f7() { +>f7 : () => void + + let o: { [x: string]: number } = { x: 1 }; +>o : { [x: string]: number; } +>x : string +>{ x: 1 } : { x: number; } +>x : number +>1 : number + + let { x }: { [x: string]: string | number } = o; +>x : string | number +>x : string +>o : { [x: string]: number; } + + x; +>x : number +} + diff --git a/tests/baselines/reference/controlFlowDestructuringParameters.js b/tests/baselines/reference/controlFlowDestructuringParameters.js new file mode 100644 index 00000000000..66b8e656193 --- /dev/null +++ b/tests/baselines/reference/controlFlowDestructuringParameters.js @@ -0,0 +1,15 @@ +//// [controlFlowDestructuringParameters.ts] +// Repro for #8376 + + +[{ x: 1 }].map( + ({ x }) => x +); + + +//// [controlFlowDestructuringParameters.js] +// Repro for #8376 +[{ x: 1 }].map(function (_a) { + var x = _a.x; + return x; +}); diff --git a/tests/baselines/reference/controlFlowDestructuringParameters.symbols b/tests/baselines/reference/controlFlowDestructuringParameters.symbols new file mode 100644 index 00000000000..668d346b929 --- /dev/null +++ b/tests/baselines/reference/controlFlowDestructuringParameters.symbols @@ -0,0 +1,15 @@ +=== tests/cases/compiler/controlFlowDestructuringParameters.ts === +// Repro for #8376 + + +[{ x: 1 }].map( +>[{ x: 1 }].map : Symbol(Array.map, Decl(lib.d.ts, --, --)) +>x : Symbol(x, Decl(controlFlowDestructuringParameters.ts, 3, 2)) +>map : Symbol(Array.map, Decl(lib.d.ts, --, --)) + + ({ x }) => x +>x : Symbol(x, Decl(controlFlowDestructuringParameters.ts, 4, 4)) +>x : Symbol(x, Decl(controlFlowDestructuringParameters.ts, 4, 4)) + +); + diff --git a/tests/baselines/reference/controlFlowDestructuringParameters.types b/tests/baselines/reference/controlFlowDestructuringParameters.types new file mode 100644 index 00000000000..396852bf37a --- /dev/null +++ b/tests/baselines/reference/controlFlowDestructuringParameters.types @@ -0,0 +1,20 @@ +=== tests/cases/compiler/controlFlowDestructuringParameters.ts === +// Repro for #8376 + + +[{ x: 1 }].map( +>[{ x: 1 }].map( ({ x }) => x) : number[] +>[{ x: 1 }].map : (callbackfn: (value: { x: number; }, index: number, array: { x: number; }[]) => U, thisArg?: any) => U[] +>[{ x: 1 }] : { x: number; }[] +>{ x: 1 } : { x: number; } +>x : number +>1 : number +>map : (callbackfn: (value: { x: number; }, index: number, array: { x: number; }[]) => U, thisArg?: any) => U[] + + ({ x }) => x +>({ x }) => x : ({x}: { x: number; }) => number +>x : number +>x : number + +); + diff --git a/tests/baselines/reference/controlFlowDoWhileStatement.js b/tests/baselines/reference/controlFlowDoWhileStatement.js new file mode 100644 index 00000000000..635a5a59257 --- /dev/null +++ b/tests/baselines/reference/controlFlowDoWhileStatement.js @@ -0,0 +1,157 @@ +//// [controlFlowDoWhileStatement.ts] +let cond: boolean; +function a() { + let x: string | number; + x = ""; + do { + x; // string + } while (cond) +} +function b() { + let x: string | number; + x = ""; + do { + x; // string + x = 42; + break; + } while (cond) +} +function c() { + let x: string | number; + x = ""; + do { + x; // string + x = undefined; + if (typeof x === "string") continue; + break; + } while (cond) +} +function d() { + let x: string | number; + x = 1000; + do { + x; // number + x = ""; + } while (x = x.length) + x; // number +} +function e() { + let x: string | number; + x = ""; + do { + x = 42; + } while (cond) + x; // number +} +function f() { + let x: string | number | boolean | RegExp | Function; + x = ""; + do { + if (cond) { + x = 42; + break; + } + if (cond) { + x = true; + continue; + } + x = /a/; + } while (cond) + x; // number | boolean | RegExp +} +function g() { + let x: string | number | boolean | RegExp | Function; + x = ""; + do { + if (cond) { + x = 42; + break; + } + if (cond) { + x = true; + continue; + } + x = /a/; + } while (true) + x; // number +} + + +//// [controlFlowDoWhileStatement.js] +var cond; +function a() { + var x; + x = ""; + do { + x; // string + } while (cond); +} +function b() { + var x; + x = ""; + do { + x; // string + x = 42; + break; + } while (cond); +} +function c() { + var x; + x = ""; + do { + x; // string + x = undefined; + if (typeof x === "string") + continue; + break; + } while (cond); +} +function d() { + var x; + x = 1000; + do { + x; // number + x = ""; + } while (x = x.length); + x; // number +} +function e() { + var x; + x = ""; + do { + x = 42; + } while (cond); + x; // number +} +function f() { + var x; + x = ""; + do { + if (cond) { + x = 42; + break; + } + if (cond) { + x = true; + continue; + } + x = /a/; + } while (cond); + x; // number | boolean | RegExp +} +function g() { + var x; + x = ""; + do { + if (cond) { + x = 42; + break; + } + if (cond) { + x = true; + continue; + } + x = /a/; + } while (true); + x; // number +} diff --git a/tests/baselines/reference/controlFlowDoWhileStatement.symbols b/tests/baselines/reference/controlFlowDoWhileStatement.symbols new file mode 100644 index 00000000000..2a3f3858ec2 --- /dev/null +++ b/tests/baselines/reference/controlFlowDoWhileStatement.symbols @@ -0,0 +1,181 @@ +=== tests/cases/conformance/controlFlow/controlFlowDoWhileStatement.ts === +let cond: boolean; +>cond : Symbol(cond, Decl(controlFlowDoWhileStatement.ts, 0, 3)) + +function a() { +>a : Symbol(a, Decl(controlFlowDoWhileStatement.ts, 0, 18)) + + let x: string | number; +>x : Symbol(x, Decl(controlFlowDoWhileStatement.ts, 2, 7)) + + x = ""; +>x : Symbol(x, Decl(controlFlowDoWhileStatement.ts, 2, 7)) + + do { + x; // string +>x : Symbol(x, Decl(controlFlowDoWhileStatement.ts, 2, 7)) + + } while (cond) +>cond : Symbol(cond, Decl(controlFlowDoWhileStatement.ts, 0, 3)) +} +function b() { +>b : Symbol(b, Decl(controlFlowDoWhileStatement.ts, 7, 1)) + + let x: string | number; +>x : Symbol(x, Decl(controlFlowDoWhileStatement.ts, 9, 7)) + + x = ""; +>x : Symbol(x, Decl(controlFlowDoWhileStatement.ts, 9, 7)) + + do { + x; // string +>x : Symbol(x, Decl(controlFlowDoWhileStatement.ts, 9, 7)) + + x = 42; +>x : Symbol(x, Decl(controlFlowDoWhileStatement.ts, 9, 7)) + + break; + } while (cond) +>cond : Symbol(cond, Decl(controlFlowDoWhileStatement.ts, 0, 3)) +} +function c() { +>c : Symbol(c, Decl(controlFlowDoWhileStatement.ts, 16, 1)) + + let x: string | number; +>x : Symbol(x, Decl(controlFlowDoWhileStatement.ts, 18, 7)) + + x = ""; +>x : Symbol(x, Decl(controlFlowDoWhileStatement.ts, 18, 7)) + + do { + x; // string +>x : Symbol(x, Decl(controlFlowDoWhileStatement.ts, 18, 7)) + + x = undefined; +>x : Symbol(x, Decl(controlFlowDoWhileStatement.ts, 18, 7)) +>undefined : Symbol(undefined) + + if (typeof x === "string") continue; +>x : Symbol(x, Decl(controlFlowDoWhileStatement.ts, 18, 7)) + + break; + } while (cond) +>cond : Symbol(cond, Decl(controlFlowDoWhileStatement.ts, 0, 3)) +} +function d() { +>d : Symbol(d, Decl(controlFlowDoWhileStatement.ts, 26, 1)) + + let x: string | number; +>x : Symbol(x, Decl(controlFlowDoWhileStatement.ts, 28, 7)) + + x = 1000; +>x : Symbol(x, Decl(controlFlowDoWhileStatement.ts, 28, 7)) + + do { + x; // number +>x : Symbol(x, Decl(controlFlowDoWhileStatement.ts, 28, 7)) + + x = ""; +>x : Symbol(x, Decl(controlFlowDoWhileStatement.ts, 28, 7)) + + } while (x = x.length) +>x : Symbol(x, Decl(controlFlowDoWhileStatement.ts, 28, 7)) +>x.length : Symbol(String.length, Decl(lib.d.ts, --, --)) +>x : Symbol(x, Decl(controlFlowDoWhileStatement.ts, 28, 7)) +>length : Symbol(String.length, Decl(lib.d.ts, --, --)) + + x; // number +>x : Symbol(x, Decl(controlFlowDoWhileStatement.ts, 28, 7)) +} +function e() { +>e : Symbol(e, Decl(controlFlowDoWhileStatement.ts, 35, 1)) + + let x: string | number; +>x : Symbol(x, Decl(controlFlowDoWhileStatement.ts, 37, 7)) + + x = ""; +>x : Symbol(x, Decl(controlFlowDoWhileStatement.ts, 37, 7)) + + do { + x = 42; +>x : Symbol(x, Decl(controlFlowDoWhileStatement.ts, 37, 7)) + + } while (cond) +>cond : Symbol(cond, Decl(controlFlowDoWhileStatement.ts, 0, 3)) + + x; // number +>x : Symbol(x, Decl(controlFlowDoWhileStatement.ts, 37, 7)) +} +function f() { +>f : Symbol(f, Decl(controlFlowDoWhileStatement.ts, 43, 1)) + + let x: string | number | boolean | RegExp | Function; +>x : Symbol(x, Decl(controlFlowDoWhileStatement.ts, 45, 7)) +>RegExp : Symbol(RegExp, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Function : Symbol(Function, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + + x = ""; +>x : Symbol(x, Decl(controlFlowDoWhileStatement.ts, 45, 7)) + + do { + if (cond) { +>cond : Symbol(cond, Decl(controlFlowDoWhileStatement.ts, 0, 3)) + + x = 42; +>x : Symbol(x, Decl(controlFlowDoWhileStatement.ts, 45, 7)) + + break; + } + if (cond) { +>cond : Symbol(cond, Decl(controlFlowDoWhileStatement.ts, 0, 3)) + + x = true; +>x : Symbol(x, Decl(controlFlowDoWhileStatement.ts, 45, 7)) + + continue; + } + x = /a/; +>x : Symbol(x, Decl(controlFlowDoWhileStatement.ts, 45, 7)) + + } while (cond) +>cond : Symbol(cond, Decl(controlFlowDoWhileStatement.ts, 0, 3)) + + x; // number | boolean | RegExp +>x : Symbol(x, Decl(controlFlowDoWhileStatement.ts, 45, 7)) +} +function g() { +>g : Symbol(g, Decl(controlFlowDoWhileStatement.ts, 59, 1)) + + let x: string | number | boolean | RegExp | Function; +>x : Symbol(x, Decl(controlFlowDoWhileStatement.ts, 61, 7)) +>RegExp : Symbol(RegExp, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Function : Symbol(Function, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + + x = ""; +>x : Symbol(x, Decl(controlFlowDoWhileStatement.ts, 61, 7)) + + do { + if (cond) { +>cond : Symbol(cond, Decl(controlFlowDoWhileStatement.ts, 0, 3)) + + x = 42; +>x : Symbol(x, Decl(controlFlowDoWhileStatement.ts, 61, 7)) + + break; + } + if (cond) { +>cond : Symbol(cond, Decl(controlFlowDoWhileStatement.ts, 0, 3)) + + x = true; +>x : Symbol(x, Decl(controlFlowDoWhileStatement.ts, 61, 7)) + + continue; + } + x = /a/; +>x : Symbol(x, Decl(controlFlowDoWhileStatement.ts, 61, 7)) + + } while (true) + x; // number +>x : Symbol(x, Decl(controlFlowDoWhileStatement.ts, 61, 7)) +} + diff --git a/tests/baselines/reference/controlFlowDoWhileStatement.types b/tests/baselines/reference/controlFlowDoWhileStatement.types new file mode 100644 index 00000000000..a82ae1b716e --- /dev/null +++ b/tests/baselines/reference/controlFlowDoWhileStatement.types @@ -0,0 +1,220 @@ +=== tests/cases/conformance/controlFlow/controlFlowDoWhileStatement.ts === +let cond: boolean; +>cond : boolean + +function a() { +>a : () => void + + let x: string | number; +>x : string | number + + x = ""; +>x = "" : string +>x : string | number +>"" : string + + do { + x; // string +>x : string + + } while (cond) +>cond : boolean +} +function b() { +>b : () => void + + let x: string | number; +>x : string | number + + x = ""; +>x = "" : string +>x : string | number +>"" : string + + do { + x; // string +>x : string + + x = 42; +>x = 42 : number +>x : string | number +>42 : number + + break; + } while (cond) +>cond : boolean +} +function c() { +>c : () => void + + let x: string | number; +>x : string | number + + x = ""; +>x = "" : string +>x : string | number +>"" : string + + do { + x; // string +>x : string + + x = undefined; +>x = undefined : undefined +>x : string | number +>undefined : undefined + + if (typeof x === "string") continue; +>typeof x === "string" : boolean +>typeof x : string +>x : string | number +>"string" : string + + break; + } while (cond) +>cond : boolean +} +function d() { +>d : () => void + + let x: string | number; +>x : string | number + + x = 1000; +>x = 1000 : number +>x : string | number +>1000 : number + + do { + x; // number +>x : number + + x = ""; +>x = "" : string +>x : string | number +>"" : string + + } while (x = x.length) +>x = x.length : number +>x : string | number +>x.length : number +>x : string +>length : number + + x; // number +>x : number +} +function e() { +>e : () => void + + let x: string | number; +>x : string | number + + x = ""; +>x = "" : string +>x : string | number +>"" : string + + do { + x = 42; +>x = 42 : number +>x : string | number +>42 : number + + } while (cond) +>cond : boolean + + x; // number +>x : number +} +function f() { +>f : () => void + + let x: string | number | boolean | RegExp | Function; +>x : string | number | boolean | RegExp | Function +>RegExp : RegExp +>Function : Function + + x = ""; +>x = "" : string +>x : string | number | boolean | RegExp | Function +>"" : string + + do { + if (cond) { +>cond : boolean + + x = 42; +>x = 42 : number +>x : string | number | boolean | RegExp | Function +>42 : number + + break; + } + if (cond) { +>cond : boolean + + x = true; +>x = true : boolean +>x : string | number | boolean | RegExp | Function +>true : boolean + + continue; + } + x = /a/; +>x = /a/ : RegExp +>x : string | number | boolean | RegExp | Function +>/a/ : RegExp + + } while (cond) +>cond : boolean + + x; // number | boolean | RegExp +>x : number | boolean | RegExp +} +function g() { +>g : () => void + + let x: string | number | boolean | RegExp | Function; +>x : string | number | boolean | RegExp | Function +>RegExp : RegExp +>Function : Function + + x = ""; +>x = "" : string +>x : string | number | boolean | RegExp | Function +>"" : string + + do { + if (cond) { +>cond : boolean + + x = 42; +>x = 42 : number +>x : string | number | boolean | RegExp | Function +>42 : number + + break; + } + if (cond) { +>cond : boolean + + x = true; +>x = true : boolean +>x : string | number | boolean | RegExp | Function +>true : boolean + + continue; + } + x = /a/; +>x = /a/ : RegExp +>x : string | number | boolean | RegExp | Function +>/a/ : RegExp + + } while (true) +>true : boolean + + x; // number +>x : number +} + diff --git a/tests/baselines/reference/controlFlowForInStatement.js b/tests/baselines/reference/controlFlowForInStatement.js new file mode 100644 index 00000000000..1d3f29de2ad --- /dev/null +++ b/tests/baselines/reference/controlFlowForInStatement.js @@ -0,0 +1,37 @@ +//// [controlFlowForInStatement.ts] +let x: string | number | boolean | RegExp | Function; +let obj: any; +let cond: boolean; + +x = /a/; +for (let y in obj) { + x = y; + if (cond) { + x = 42; + continue; + } + if (cond) { + x = true; + break; + } +} +x; // RegExp | string | number | boolean + + +//// [controlFlowForInStatement.js] +var x; +var obj; +var cond; +x = /a/; +for (var y in obj) { + x = y; + if (cond) { + x = 42; + continue; + } + if (cond) { + x = true; + break; + } +} +x; // RegExp | string | number | boolean diff --git a/tests/baselines/reference/controlFlowForInStatement.symbols b/tests/baselines/reference/controlFlowForInStatement.symbols new file mode 100644 index 00000000000..8d01ff50193 --- /dev/null +++ b/tests/baselines/reference/controlFlowForInStatement.symbols @@ -0,0 +1,43 @@ +=== tests/cases/conformance/controlFlow/controlFlowForInStatement.ts === +let x: string | number | boolean | RegExp | Function; +>x : Symbol(x, Decl(controlFlowForInStatement.ts, 0, 3)) +>RegExp : Symbol(RegExp, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Function : Symbol(Function, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + +let obj: any; +>obj : Symbol(obj, Decl(controlFlowForInStatement.ts, 1, 3)) + +let cond: boolean; +>cond : Symbol(cond, Decl(controlFlowForInStatement.ts, 2, 3)) + +x = /a/; +>x : Symbol(x, Decl(controlFlowForInStatement.ts, 0, 3)) + +for (let y in obj) { +>y : Symbol(y, Decl(controlFlowForInStatement.ts, 5, 8)) +>obj : Symbol(obj, Decl(controlFlowForInStatement.ts, 1, 3)) + + x = y; +>x : Symbol(x, Decl(controlFlowForInStatement.ts, 0, 3)) +>y : Symbol(y, Decl(controlFlowForInStatement.ts, 5, 8)) + + if (cond) { +>cond : Symbol(cond, Decl(controlFlowForInStatement.ts, 2, 3)) + + x = 42; +>x : Symbol(x, Decl(controlFlowForInStatement.ts, 0, 3)) + + continue; + } + if (cond) { +>cond : Symbol(cond, Decl(controlFlowForInStatement.ts, 2, 3)) + + x = true; +>x : Symbol(x, Decl(controlFlowForInStatement.ts, 0, 3)) + + break; + } +} +x; // RegExp | string | number | boolean +>x : Symbol(x, Decl(controlFlowForInStatement.ts, 0, 3)) + diff --git a/tests/baselines/reference/controlFlowForInStatement.types b/tests/baselines/reference/controlFlowForInStatement.types new file mode 100644 index 00000000000..e46db37bb16 --- /dev/null +++ b/tests/baselines/reference/controlFlowForInStatement.types @@ -0,0 +1,50 @@ +=== tests/cases/conformance/controlFlow/controlFlowForInStatement.ts === +let x: string | number | boolean | RegExp | Function; +>x : string | number | boolean | RegExp | Function +>RegExp : RegExp +>Function : Function + +let obj: any; +>obj : any + +let cond: boolean; +>cond : boolean + +x = /a/; +>x = /a/ : RegExp +>x : string | number | boolean | RegExp | Function +>/a/ : RegExp + +for (let y in obj) { +>y : string +>obj : any + + x = y; +>x = y : string +>x : string | number | boolean | RegExp | Function +>y : string + + if (cond) { +>cond : boolean + + x = 42; +>x = 42 : number +>x : string | number | boolean | RegExp | Function +>42 : number + + continue; + } + if (cond) { +>cond : boolean + + x = true; +>x = true : boolean +>x : string | number | boolean | RegExp | Function +>true : boolean + + break; + } +} +x; // RegExp | string | number | boolean +>x : RegExp | number | string | boolean + diff --git a/tests/baselines/reference/controlFlowForOfStatement.js b/tests/baselines/reference/controlFlowForOfStatement.js new file mode 100644 index 00000000000..31ba7f1a346 --- /dev/null +++ b/tests/baselines/reference/controlFlowForOfStatement.js @@ -0,0 +1,24 @@ +//// [controlFlowForOfStatement.ts] +let obj: number[]; +let x: string | number | boolean | RegExp; + +function a() { + x = true; + for (x of obj) { + x = x.toExponential(); + } + x; // string | boolean +} + + +//// [controlFlowForOfStatement.js] +var obj; +var x; +function a() { + x = true; + for (var _i = 0, obj_1 = obj; _i < obj_1.length; _i++) { + x = obj_1[_i]; + x = x.toExponential(); + } + x; // string | boolean +} diff --git a/tests/baselines/reference/controlFlowForOfStatement.symbols b/tests/baselines/reference/controlFlowForOfStatement.symbols new file mode 100644 index 00000000000..0f1e754be41 --- /dev/null +++ b/tests/baselines/reference/controlFlowForOfStatement.symbols @@ -0,0 +1,28 @@ +=== tests/cases/conformance/controlFlow/controlFlowForOfStatement.ts === +let obj: number[]; +>obj : Symbol(obj, Decl(controlFlowForOfStatement.ts, 0, 3)) + +let x: string | number | boolean | RegExp; +>x : Symbol(x, Decl(controlFlowForOfStatement.ts, 1, 3)) +>RegExp : Symbol(RegExp, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + +function a() { +>a : Symbol(a, Decl(controlFlowForOfStatement.ts, 1, 42)) + + x = true; +>x : Symbol(x, Decl(controlFlowForOfStatement.ts, 1, 3)) + + for (x of obj) { +>x : Symbol(x, Decl(controlFlowForOfStatement.ts, 1, 3)) +>obj : Symbol(obj, Decl(controlFlowForOfStatement.ts, 0, 3)) + + x = x.toExponential(); +>x : Symbol(x, Decl(controlFlowForOfStatement.ts, 1, 3)) +>x.toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --)) +>x : Symbol(x, Decl(controlFlowForOfStatement.ts, 1, 3)) +>toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --)) + } + x; // string | boolean +>x : Symbol(x, Decl(controlFlowForOfStatement.ts, 1, 3)) +} + diff --git a/tests/baselines/reference/controlFlowForOfStatement.types b/tests/baselines/reference/controlFlowForOfStatement.types new file mode 100644 index 00000000000..437576e51b6 --- /dev/null +++ b/tests/baselines/reference/controlFlowForOfStatement.types @@ -0,0 +1,32 @@ +=== tests/cases/conformance/controlFlow/controlFlowForOfStatement.ts === +let obj: number[]; +>obj : number[] + +let x: string | number | boolean | RegExp; +>x : string | number | boolean | RegExp +>RegExp : RegExp + +function a() { +>a : () => void + + x = true; +>x = true : boolean +>x : string | number | boolean | RegExp +>true : boolean + + for (x of obj) { +>x : string | number | boolean | RegExp +>obj : number[] + + x = x.toExponential(); +>x = x.toExponential() : string +>x : string | number | boolean | RegExp +>x.toExponential() : string +>x.toExponential : (fractionDigits?: number) => string +>x : number +>toExponential : (fractionDigits?: number) => string + } + x; // string | boolean +>x : boolean | string +} + diff --git a/tests/baselines/reference/controlFlowForStatement.js b/tests/baselines/reference/controlFlowForStatement.js new file mode 100644 index 00000000000..d9b1d0814fe --- /dev/null +++ b/tests/baselines/reference/controlFlowForStatement.js @@ -0,0 +1,87 @@ +//// [controlFlowForStatement.ts] +let cond: boolean; +function a() { + let x: string | number | boolean; + for (x = ""; cond; x = 5) { + x; // string | number + } +} +function b() { + let x: string | number | boolean; + for (x = 5; cond; x = x.length) { + x; // number + x = ""; + } +} +function c() { + let x: string | number | boolean; + for (x = 5; x = x.toExponential(); x = 5) { + x; // string + } +} +function d() { + let x: string | number | boolean; + for (x = ""; typeof x === "string"; x = 5) { + x; // string + } +} +function e() { + let x: string | number | boolean | RegExp; + for (x = "" || 0; typeof x !== "string"; x = "" || true) { + x; // number | boolean + } +} +function f() { + let x: string | number | boolean; + for (; typeof x !== "string";) { + x; // number | boolean + if (typeof x === "number") break; + x = undefined; + } + x; // string | number +} + + +//// [controlFlowForStatement.js] +var cond; +function a() { + var x; + for (x = ""; cond; x = 5) { + x; // string | number + } +} +function b() { + var x; + for (x = 5; cond; x = x.length) { + x; // number + x = ""; + } +} +function c() { + var x; + for (x = 5; x = x.toExponential(); x = 5) { + x; // string + } +} +function d() { + var x; + for (x = ""; typeof x === "string"; x = 5) { + x; // string + } +} +function e() { + var x; + for (x = "" || 0; typeof x !== "string"; x = "" || true) { + x; // number | boolean + } +} +function f() { + var x; + for (; typeof x !== "string";) { + x; // number | boolean + if (typeof x === "number") + break; + x = undefined; + } + x; // string | number +} diff --git a/tests/baselines/reference/controlFlowForStatement.symbols b/tests/baselines/reference/controlFlowForStatement.symbols new file mode 100644 index 00000000000..1918fe0ca33 --- /dev/null +++ b/tests/baselines/reference/controlFlowForStatement.symbols @@ -0,0 +1,112 @@ +=== tests/cases/conformance/controlFlow/controlFlowForStatement.ts === +let cond: boolean; +>cond : Symbol(cond, Decl(controlFlowForStatement.ts, 0, 3)) + +function a() { +>a : Symbol(a, Decl(controlFlowForStatement.ts, 0, 18)) + + let x: string | number | boolean; +>x : Symbol(x, Decl(controlFlowForStatement.ts, 2, 7)) + + for (x = ""; cond; x = 5) { +>x : Symbol(x, Decl(controlFlowForStatement.ts, 2, 7)) +>cond : Symbol(cond, Decl(controlFlowForStatement.ts, 0, 3)) +>x : Symbol(x, Decl(controlFlowForStatement.ts, 2, 7)) + + x; // string | number +>x : Symbol(x, Decl(controlFlowForStatement.ts, 2, 7)) + } +} +function b() { +>b : Symbol(b, Decl(controlFlowForStatement.ts, 6, 1)) + + let x: string | number | boolean; +>x : Symbol(x, Decl(controlFlowForStatement.ts, 8, 7)) + + for (x = 5; cond; x = x.length) { +>x : Symbol(x, Decl(controlFlowForStatement.ts, 8, 7)) +>cond : Symbol(cond, Decl(controlFlowForStatement.ts, 0, 3)) +>x : Symbol(x, Decl(controlFlowForStatement.ts, 8, 7)) +>x.length : Symbol(String.length, Decl(lib.d.ts, --, --)) +>x : Symbol(x, Decl(controlFlowForStatement.ts, 8, 7)) +>length : Symbol(String.length, Decl(lib.d.ts, --, --)) + + x; // number +>x : Symbol(x, Decl(controlFlowForStatement.ts, 8, 7)) + + x = ""; +>x : Symbol(x, Decl(controlFlowForStatement.ts, 8, 7)) + } +} +function c() { +>c : Symbol(c, Decl(controlFlowForStatement.ts, 13, 1)) + + let x: string | number | boolean; +>x : Symbol(x, Decl(controlFlowForStatement.ts, 15, 7)) + + for (x = 5; x = x.toExponential(); x = 5) { +>x : Symbol(x, Decl(controlFlowForStatement.ts, 15, 7)) +>x : Symbol(x, Decl(controlFlowForStatement.ts, 15, 7)) +>x.toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --)) +>x : Symbol(x, Decl(controlFlowForStatement.ts, 15, 7)) +>toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --)) +>x : Symbol(x, Decl(controlFlowForStatement.ts, 15, 7)) + + x; // string +>x : Symbol(x, Decl(controlFlowForStatement.ts, 15, 7)) + } +} +function d() { +>d : Symbol(d, Decl(controlFlowForStatement.ts, 19, 1)) + + let x: string | number | boolean; +>x : Symbol(x, Decl(controlFlowForStatement.ts, 21, 7)) + + for (x = ""; typeof x === "string"; x = 5) { +>x : Symbol(x, Decl(controlFlowForStatement.ts, 21, 7)) +>x : Symbol(x, Decl(controlFlowForStatement.ts, 21, 7)) +>x : Symbol(x, Decl(controlFlowForStatement.ts, 21, 7)) + + x; // string +>x : Symbol(x, Decl(controlFlowForStatement.ts, 21, 7)) + } +} +function e() { +>e : Symbol(e, Decl(controlFlowForStatement.ts, 25, 1)) + + let x: string | number | boolean | RegExp; +>x : Symbol(x, Decl(controlFlowForStatement.ts, 27, 7)) +>RegExp : Symbol(RegExp, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + + for (x = "" || 0; typeof x !== "string"; x = "" || true) { +>x : Symbol(x, Decl(controlFlowForStatement.ts, 27, 7)) +>x : Symbol(x, Decl(controlFlowForStatement.ts, 27, 7)) +>x : Symbol(x, Decl(controlFlowForStatement.ts, 27, 7)) + + x; // number | boolean +>x : Symbol(x, Decl(controlFlowForStatement.ts, 27, 7)) + } +} +function f() { +>f : Symbol(f, Decl(controlFlowForStatement.ts, 31, 1)) + + let x: string | number | boolean; +>x : Symbol(x, Decl(controlFlowForStatement.ts, 33, 7)) + + for (; typeof x !== "string";) { +>x : Symbol(x, Decl(controlFlowForStatement.ts, 33, 7)) + + x; // number | boolean +>x : Symbol(x, Decl(controlFlowForStatement.ts, 33, 7)) + + if (typeof x === "number") break; +>x : Symbol(x, Decl(controlFlowForStatement.ts, 33, 7)) + + x = undefined; +>x : Symbol(x, Decl(controlFlowForStatement.ts, 33, 7)) +>undefined : Symbol(undefined) + } + x; // string | number +>x : Symbol(x, Decl(controlFlowForStatement.ts, 33, 7)) +} + diff --git a/tests/baselines/reference/controlFlowForStatement.types b/tests/baselines/reference/controlFlowForStatement.types new file mode 100644 index 00000000000..cdf049b32d6 --- /dev/null +++ b/tests/baselines/reference/controlFlowForStatement.types @@ -0,0 +1,152 @@ +=== tests/cases/conformance/controlFlow/controlFlowForStatement.ts === +let cond: boolean; +>cond : boolean + +function a() { +>a : () => void + + let x: string | number | boolean; +>x : string | number | boolean + + for (x = ""; cond; x = 5) { +>x = "" : string +>x : string | number | boolean +>"" : string +>cond : boolean +>x = 5 : number +>x : string | number | boolean +>5 : number + + x; // string | number +>x : string | number + } +} +function b() { +>b : () => void + + let x: string | number | boolean; +>x : string | number | boolean + + for (x = 5; cond; x = x.length) { +>x = 5 : number +>x : string | number | boolean +>5 : number +>cond : boolean +>x = x.length : number +>x : string | number | boolean +>x.length : number +>x : string +>length : number + + x; // number +>x : number + + x = ""; +>x = "" : string +>x : string | number | boolean +>"" : string + } +} +function c() { +>c : () => void + + let x: string | number | boolean; +>x : string | number | boolean + + for (x = 5; x = x.toExponential(); x = 5) { +>x = 5 : number +>x : string | number | boolean +>5 : number +>x = x.toExponential() : string +>x : string | number | boolean +>x.toExponential() : string +>x.toExponential : (fractionDigits?: number) => string +>x : number +>toExponential : (fractionDigits?: number) => string +>x = 5 : number +>x : string | number | boolean +>5 : number + + x; // string +>x : string + } +} +function d() { +>d : () => void + + let x: string | number | boolean; +>x : string | number | boolean + + for (x = ""; typeof x === "string"; x = 5) { +>x = "" : string +>x : string | number | boolean +>"" : string +>typeof x === "string" : boolean +>typeof x : string +>x : string | number +>"string" : string +>x = 5 : number +>x : string | number | boolean +>5 : number + + x; // string +>x : string + } +} +function e() { +>e : () => void + + let x: string | number | boolean | RegExp; +>x : string | number | boolean | RegExp +>RegExp : RegExp + + for (x = "" || 0; typeof x !== "string"; x = "" || true) { +>x = "" || 0 : string | number +>x : string | number | boolean | RegExp +>"" || 0 : string | number +>"" : string +>0 : number +>typeof x !== "string" : boolean +>typeof x : string +>x : string | number | boolean +>"string" : string +>x = "" || true : string | boolean +>x : string | number | boolean | RegExp +>"" || true : string | boolean +>"" : string +>true : boolean + + x; // number | boolean +>x : number | boolean + } +} +function f() { +>f : () => void + + let x: string | number | boolean; +>x : string | number | boolean + + for (; typeof x !== "string";) { +>typeof x !== "string" : boolean +>typeof x : string +>x : string | number | boolean +>"string" : string + + x; // number | boolean +>x : number | boolean + + if (typeof x === "number") break; +>typeof x === "number" : boolean +>typeof x : string +>x : number | boolean +>"number" : string + + x = undefined; +>x = undefined : undefined +>x : string | number | boolean +>undefined : undefined + } + x; // string | number +>x : string | number +} + diff --git a/tests/baselines/reference/controlFlowIfStatement.js b/tests/baselines/reference/controlFlowIfStatement.js new file mode 100644 index 00000000000..a70c07d38dc --- /dev/null +++ b/tests/baselines/reference/controlFlowIfStatement.js @@ -0,0 +1,74 @@ +//// [controlFlowIfStatement.ts] +let x: string | number | boolean | RegExp; +let cond: boolean; + +x = /a/; +if (x /* RegExp */, (x = true)) { + x; // boolean + x = ""; +} +else { + x; // boolean + x = 42; +} +x; // string | number + +function a() { + let x: string | number; + if (cond) { + x = 42; + } + else { + x = ""; + return; + } + x; // number +} +function b() { + let x: string | number; + if (cond) { + x = 42; + throw ""; + } + else { + x = ""; + } + x; // string +} + + +//// [controlFlowIfStatement.js] +var x; +var cond; +x = /a/; +if (x /* RegExp */, (x = true)) { + x; // boolean + x = ""; +} +else { + x; // boolean + x = 42; +} +x; // string | number +function a() { + var x; + if (cond) { + x = 42; + } + else { + x = ""; + return; + } + x; // number +} +function b() { + var x; + if (cond) { + x = 42; + throw ""; + } + else { + x = ""; + } + x; // string +} diff --git a/tests/baselines/reference/controlFlowIfStatement.symbols b/tests/baselines/reference/controlFlowIfStatement.symbols new file mode 100644 index 00000000000..1d85b31c998 --- /dev/null +++ b/tests/baselines/reference/controlFlowIfStatement.symbols @@ -0,0 +1,74 @@ +=== tests/cases/conformance/controlFlow/controlFlowIfStatement.ts === +let x: string | number | boolean | RegExp; +>x : Symbol(x, Decl(controlFlowIfStatement.ts, 0, 3)) +>RegExp : Symbol(RegExp, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + +let cond: boolean; +>cond : Symbol(cond, Decl(controlFlowIfStatement.ts, 1, 3)) + +x = /a/; +>x : Symbol(x, Decl(controlFlowIfStatement.ts, 0, 3)) + +if (x /* RegExp */, (x = true)) { +>x : Symbol(x, Decl(controlFlowIfStatement.ts, 0, 3)) +>x : Symbol(x, Decl(controlFlowIfStatement.ts, 0, 3)) + + x; // boolean +>x : Symbol(x, Decl(controlFlowIfStatement.ts, 0, 3)) + + x = ""; +>x : Symbol(x, Decl(controlFlowIfStatement.ts, 0, 3)) +} +else { + x; // boolean +>x : Symbol(x, Decl(controlFlowIfStatement.ts, 0, 3)) + + x = 42; +>x : Symbol(x, Decl(controlFlowIfStatement.ts, 0, 3)) +} +x; // string | number +>x : Symbol(x, Decl(controlFlowIfStatement.ts, 0, 3)) + +function a() { +>a : Symbol(a, Decl(controlFlowIfStatement.ts, 12, 2)) + + let x: string | number; +>x : Symbol(x, Decl(controlFlowIfStatement.ts, 15, 7)) + + if (cond) { +>cond : Symbol(cond, Decl(controlFlowIfStatement.ts, 1, 3)) + + x = 42; +>x : Symbol(x, Decl(controlFlowIfStatement.ts, 15, 7)) + } + else { + x = ""; +>x : Symbol(x, Decl(controlFlowIfStatement.ts, 15, 7)) + + return; + } + x; // number +>x : Symbol(x, Decl(controlFlowIfStatement.ts, 15, 7)) +} +function b() { +>b : Symbol(b, Decl(controlFlowIfStatement.ts, 24, 1)) + + let x: string | number; +>x : Symbol(x, Decl(controlFlowIfStatement.ts, 26, 7)) + + if (cond) { +>cond : Symbol(cond, Decl(controlFlowIfStatement.ts, 1, 3)) + + x = 42; +>x : Symbol(x, Decl(controlFlowIfStatement.ts, 26, 7)) + + throw ""; + } + else { + x = ""; +>x : Symbol(x, Decl(controlFlowIfStatement.ts, 26, 7)) + } + x; // string +>x : Symbol(x, Decl(controlFlowIfStatement.ts, 26, 7)) +} + diff --git a/tests/baselines/reference/controlFlowIfStatement.types b/tests/baselines/reference/controlFlowIfStatement.types new file mode 100644 index 00000000000..dc07e23275f --- /dev/null +++ b/tests/baselines/reference/controlFlowIfStatement.types @@ -0,0 +1,93 @@ +=== tests/cases/conformance/controlFlow/controlFlowIfStatement.ts === +let x: string | number | boolean | RegExp; +>x : string | number | boolean | RegExp +>RegExp : RegExp + +let cond: boolean; +>cond : boolean + +x = /a/; +>x = /a/ : RegExp +>x : string | number | boolean | RegExp +>/a/ : RegExp + +if (x /* RegExp */, (x = true)) { +>x /* RegExp */, (x = true) : boolean +>x : RegExp +>(x = true) : boolean +>x = true : boolean +>x : string | number | boolean | RegExp +>true : boolean + + x; // boolean +>x : boolean + + x = ""; +>x = "" : string +>x : string | number | boolean | RegExp +>"" : string +} +else { + x; // boolean +>x : boolean + + x = 42; +>x = 42 : number +>x : string | number | boolean | RegExp +>42 : number +} +x; // string | number +>x : string | number + +function a() { +>a : () => void + + let x: string | number; +>x : string | number + + if (cond) { +>cond : boolean + + x = 42; +>x = 42 : number +>x : string | number +>42 : number + } + else { + x = ""; +>x = "" : string +>x : string | number +>"" : string + + return; + } + x; // number +>x : number +} +function b() { +>b : () => void + + let x: string | number; +>x : string | number + + if (cond) { +>cond : boolean + + x = 42; +>x = 42 : number +>x : string | number +>42 : number + + throw ""; +>"" : string + } + else { + x = ""; +>x = "" : string +>x : string | number +>"" : string + } + x; // string +>x : string +} + diff --git a/tests/baselines/reference/controlFlowIteration.js b/tests/baselines/reference/controlFlowIteration.js new file mode 100644 index 00000000000..7b319ba8098 --- /dev/null +++ b/tests/baselines/reference/controlFlowIteration.js @@ -0,0 +1,40 @@ +//// [controlFlowIteration.ts] + +let cond: boolean; + +function ff() { + let x: string | undefined; + while (true) { + if (cond) { + x = ""; + } + else { + if (x) { + x.length; + } + if (x) { + x.length; + } + } + } +} + + +//// [controlFlowIteration.js] +var cond; +function ff() { + var x; + while (true) { + if (cond) { + x = ""; + } + else { + if (x) { + x.length; + } + if (x) { + x.length; + } + } + } +} diff --git a/tests/baselines/reference/controlFlowIteration.symbols b/tests/baselines/reference/controlFlowIteration.symbols new file mode 100644 index 00000000000..84c1c57b69b --- /dev/null +++ b/tests/baselines/reference/controlFlowIteration.symbols @@ -0,0 +1,39 @@ +=== tests/cases/conformance/controlFlow/controlFlowIteration.ts === + +let cond: boolean; +>cond : Symbol(cond, Decl(controlFlowIteration.ts, 1, 3)) + +function ff() { +>ff : Symbol(ff, Decl(controlFlowIteration.ts, 1, 18)) + + let x: string | undefined; +>x : Symbol(x, Decl(controlFlowIteration.ts, 4, 7)) + + while (true) { + if (cond) { +>cond : Symbol(cond, Decl(controlFlowIteration.ts, 1, 3)) + + x = ""; +>x : Symbol(x, Decl(controlFlowIteration.ts, 4, 7)) + } + else { + if (x) { +>x : Symbol(x, Decl(controlFlowIteration.ts, 4, 7)) + + x.length; +>x.length : Symbol(String.length, Decl(lib.d.ts, --, --)) +>x : Symbol(x, Decl(controlFlowIteration.ts, 4, 7)) +>length : Symbol(String.length, Decl(lib.d.ts, --, --)) + } + if (x) { +>x : Symbol(x, Decl(controlFlowIteration.ts, 4, 7)) + + x.length; +>x.length : Symbol(String.length, Decl(lib.d.ts, --, --)) +>x : Symbol(x, Decl(controlFlowIteration.ts, 4, 7)) +>length : Symbol(String.length, Decl(lib.d.ts, --, --)) + } + } + } +} + diff --git a/tests/baselines/reference/controlFlowIteration.types b/tests/baselines/reference/controlFlowIteration.types new file mode 100644 index 00000000000..52be501d68e --- /dev/null +++ b/tests/baselines/reference/controlFlowIteration.types @@ -0,0 +1,43 @@ +=== tests/cases/conformance/controlFlow/controlFlowIteration.ts === + +let cond: boolean; +>cond : boolean + +function ff() { +>ff : () => void + + let x: string | undefined; +>x : string | undefined + + while (true) { +>true : boolean + + if (cond) { +>cond : boolean + + x = ""; +>x = "" : string +>x : string | undefined +>"" : string + } + else { + if (x) { +>x : string | undefined + + x.length; +>x.length : number +>x : string +>length : number + } + if (x) { +>x : string | undefined + + x.length; +>x.length : number +>x : string +>length : number + } + } + } +} + diff --git a/tests/baselines/reference/controlFlowIterationErrors.errors.txt b/tests/baselines/reference/controlFlowIterationErrors.errors.txt new file mode 100644 index 00000000000..737a9e9557b --- /dev/null +++ b/tests/baselines/reference/controlFlowIterationErrors.errors.txt @@ -0,0 +1,132 @@ +tests/cases/conformance/controlFlow/controlFlowIterationErrors.ts(12,17): error TS2345: Argument of type 'string | number' is not assignable to parameter of type 'string'. + Type 'number' is not assignable to type 'string'. +tests/cases/conformance/controlFlow/controlFlowIterationErrors.ts(23,17): error TS2345: Argument of type 'string | number' is not assignable to parameter of type 'string'. + Type 'number' is not assignable to type 'string'. +tests/cases/conformance/controlFlow/controlFlowIterationErrors.ts(35,17): error TS2345: Argument of type 'string | number' is not assignable to parameter of type 'number'. + Type 'string' is not assignable to type 'number'. +tests/cases/conformance/controlFlow/controlFlowIterationErrors.ts(46,17): error TS2345: Argument of type 'string | number' is not assignable to parameter of type 'number'. + Type 'string' is not assignable to type 'number'. +tests/cases/conformance/controlFlow/controlFlowIterationErrors.ts(77,13): error TS7022: 'y' implicitly has type 'any' because it does not have a type annotation and is referenced directly or indirectly in its own initializer. +tests/cases/conformance/controlFlow/controlFlowIterationErrors.ts(77,26): error TS2345: Argument of type 'string | number | boolean' is not assignable to parameter of type 'string | number'. + Type 'boolean' is not assignable to type 'string | number'. +tests/cases/conformance/controlFlow/controlFlowIterationErrors.ts(88,13): error TS7022: 'y' implicitly has type 'any' because it does not have a type annotation and is referenced directly or indirectly in its own initializer. +tests/cases/conformance/controlFlow/controlFlowIterationErrors.ts(88,26): error TS2345: Argument of type 'string | number | boolean' is not assignable to parameter of type 'string | number'. + Type 'boolean' is not assignable to type 'string | number'. + + +==== tests/cases/conformance/controlFlow/controlFlowIterationErrors.ts (8 errors) ==== + + let cond: boolean; + + function len(s: string) { + return s.length; + } + + function f1() { + let x: string | number | boolean; + x = ""; + while (cond) { + x = len(x); + ~ +!!! error TS2345: Argument of type 'string | number' is not assignable to parameter of type 'string'. +!!! error TS2345: Type 'number' is not assignable to type 'string'. + x; + } + x; + } + + function f2() { + let x: string | number | boolean; + x = ""; + while (cond) { + x; + x = len(x); + ~ +!!! error TS2345: Argument of type 'string | number' is not assignable to parameter of type 'string'. +!!! error TS2345: Type 'number' is not assignable to type 'string'. + } + x; + } + + declare function foo(x: string): number; + declare function foo(x: number): string; + + function g1() { + let x: string | number | boolean; + x = ""; + while (cond) { + x = foo(x); + ~ +!!! error TS2345: Argument of type 'string | number' is not assignable to parameter of type 'number'. +!!! error TS2345: Type 'string' is not assignable to type 'number'. + x; + } + x; + } + + function g2() { + let x: string | number | boolean; + x = ""; + while (cond) { + x; + x = foo(x); + ~ +!!! error TS2345: Argument of type 'string | number' is not assignable to parameter of type 'number'. +!!! error TS2345: Type 'string' is not assignable to type 'number'. + } + x; + } + + function asNumber(x: string | number): number { + return +x; + } + + function h1() { + let x: string | number | boolean; + x = "0"; + while (cond) { + x = +x + 1; + x; + } + } + + function h2() { + let x: string | number | boolean; + x = "0"; + while (cond) { + x = asNumber(x) + 1; + x; + } + } + + function h3() { + let x: string | number | boolean; + x = "0"; + while (cond) { + let y = asNumber(x); + ~ +!!! error TS7022: 'y' implicitly has type 'any' because it does not have a type annotation and is referenced directly or indirectly in its own initializer. + ~ +!!! error TS2345: Argument of type 'string | number | boolean' is not assignable to parameter of type 'string | number'. +!!! error TS2345: Type 'boolean' is not assignable to type 'string | number'. + x = y + 1; + x; + } + } + + function h4() { + let x: string | number | boolean; + x = "0"; + while (cond) { + x; + let y = asNumber(x); + ~ +!!! error TS7022: 'y' implicitly has type 'any' because it does not have a type annotation and is referenced directly or indirectly in its own initializer. + ~ +!!! error TS2345: Argument of type 'string | number | boolean' is not assignable to parameter of type 'string | number'. +!!! error TS2345: Type 'boolean' is not assignable to type 'string | number'. + x = y + 1; + x; + } + } + \ No newline at end of file diff --git a/tests/baselines/reference/controlFlowIterationErrors.js b/tests/baselines/reference/controlFlowIterationErrors.js new file mode 100644 index 00000000000..eed54cc53a7 --- /dev/null +++ b/tests/baselines/reference/controlFlowIterationErrors.js @@ -0,0 +1,174 @@ +//// [controlFlowIterationErrors.ts] + +let cond: boolean; + +function len(s: string) { + return s.length; +} + +function f1() { + let x: string | number | boolean; + x = ""; + while (cond) { + x = len(x); + x; + } + x; +} + +function f2() { + let x: string | number | boolean; + x = ""; + while (cond) { + x; + x = len(x); + } + x; +} + +declare function foo(x: string): number; +declare function foo(x: number): string; + +function g1() { + let x: string | number | boolean; + x = ""; + while (cond) { + x = foo(x); + x; + } + x; +} + +function g2() { + let x: string | number | boolean; + x = ""; + while (cond) { + x; + x = foo(x); + } + x; +} + +function asNumber(x: string | number): number { + return +x; +} + +function h1() { + let x: string | number | boolean; + x = "0"; + while (cond) { + x = +x + 1; + x; + } +} + +function h2() { + let x: string | number | boolean; + x = "0"; + while (cond) { + x = asNumber(x) + 1; + x; + } +} + +function h3() { + let x: string | number | boolean; + x = "0"; + while (cond) { + let y = asNumber(x); + x = y + 1; + x; + } +} + +function h4() { + let x: string | number | boolean; + x = "0"; + while (cond) { + x; + let y = asNumber(x); + x = y + 1; + x; + } +} + + +//// [controlFlowIterationErrors.js] +var cond; +function len(s) { + return s.length; +} +function f1() { + var x; + x = ""; + while (cond) { + x = len(x); + x; + } + x; +} +function f2() { + var x; + x = ""; + while (cond) { + x; + x = len(x); + } + x; +} +function g1() { + var x; + x = ""; + while (cond) { + x = foo(x); + x; + } + x; +} +function g2() { + var x; + x = ""; + while (cond) { + x; + x = foo(x); + } + x; +} +function asNumber(x) { + return +x; +} +function h1() { + var x; + x = "0"; + while (cond) { + x = +x + 1; + x; + } +} +function h2() { + var x; + x = "0"; + while (cond) { + x = asNumber(x) + 1; + x; + } +} +function h3() { + var x; + x = "0"; + while (cond) { + var y = asNumber(x); + x = y + 1; + x; + } +} +function h4() { + var x; + x = "0"; + while (cond) { + x; + var y = asNumber(x); + x = y + 1; + x; + } +} diff --git a/tests/baselines/reference/controlFlowTruthiness.js b/tests/baselines/reference/controlFlowTruthiness.js new file mode 100644 index 00000000000..b595bcbd180 --- /dev/null +++ b/tests/baselines/reference/controlFlowTruthiness.js @@ -0,0 +1,134 @@ +//// [controlFlowTruthiness.ts] + +declare function foo(): string | undefined; + +function f1() { + let x = foo(); + if (x) { + x; // string + } + else { + x; // string | undefined + } +} + +function f2() { + let x: string | undefined; + x = foo(); + if (x) { + x; // string + } + else { + x; // string | undefined + } +} + +function f3() { + let x: string | undefined; + if (x = foo()) { + x; // string + } + else { + x; // string | undefined + } +} + +function f4() { + let x: string | undefined; + if (!(x = foo())) { + x; // string | undefined + } + else { + x; // string + } +} + +function f5() { + let x: string | undefined; + let y: string | undefined; + if (x = y = foo()) { + x; // string + y; // string | undefined + } + else { + x; // string | undefined + y; // string | undefined + } +} + +function f6() { + let x: string | undefined; + let y: string | undefined; + if (x = foo(), y = foo()) { + x; // string | undefined + y; // string + } + else { + x; // string | undefined + y; // string | undefined + } +} + + +//// [controlFlowTruthiness.js] +function f1() { + var x = foo(); + if (x) { + x; // string + } + else { + x; // string | undefined + } +} +function f2() { + var x; + x = foo(); + if (x) { + x; // string + } + else { + x; // string | undefined + } +} +function f3() { + var x; + if (x = foo()) { + x; // string + } + else { + x; // string | undefined + } +} +function f4() { + var x; + if (!(x = foo())) { + x; // string | undefined + } + else { + x; // string + } +} +function f5() { + var x; + var y; + if (x = y = foo()) { + x; // string + y; // string | undefined + } + else { + x; // string | undefined + y; // string | undefined + } +} +function f6() { + var x; + var y; + if (x = foo(), y = foo()) { + x; // string | undefined + y; // string + } + else { + x; // string | undefined + y; // string | undefined + } +} diff --git a/tests/baselines/reference/controlFlowTruthiness.symbols b/tests/baselines/reference/controlFlowTruthiness.symbols new file mode 100644 index 00000000000..37c1fb135f2 --- /dev/null +++ b/tests/baselines/reference/controlFlowTruthiness.symbols @@ -0,0 +1,143 @@ +=== tests/cases/conformance/controlFlow/controlFlowTruthiness.ts === + +declare function foo(): string | undefined; +>foo : Symbol(foo, Decl(controlFlowTruthiness.ts, 0, 0)) + +function f1() { +>f1 : Symbol(f1, Decl(controlFlowTruthiness.ts, 1, 43)) + + let x = foo(); +>x : Symbol(x, Decl(controlFlowTruthiness.ts, 4, 7)) +>foo : Symbol(foo, Decl(controlFlowTruthiness.ts, 0, 0)) + + if (x) { +>x : Symbol(x, Decl(controlFlowTruthiness.ts, 4, 7)) + + x; // string +>x : Symbol(x, Decl(controlFlowTruthiness.ts, 4, 7)) + } + else { + x; // string | undefined +>x : Symbol(x, Decl(controlFlowTruthiness.ts, 4, 7)) + } +} + +function f2() { +>f2 : Symbol(f2, Decl(controlFlowTruthiness.ts, 11, 1)) + + let x: string | undefined; +>x : Symbol(x, Decl(controlFlowTruthiness.ts, 14, 7)) + + x = foo(); +>x : Symbol(x, Decl(controlFlowTruthiness.ts, 14, 7)) +>foo : Symbol(foo, Decl(controlFlowTruthiness.ts, 0, 0)) + + if (x) { +>x : Symbol(x, Decl(controlFlowTruthiness.ts, 14, 7)) + + x; // string +>x : Symbol(x, Decl(controlFlowTruthiness.ts, 14, 7)) + } + else { + x; // string | undefined +>x : Symbol(x, Decl(controlFlowTruthiness.ts, 14, 7)) + } +} + +function f3() { +>f3 : Symbol(f3, Decl(controlFlowTruthiness.ts, 22, 1)) + + let x: string | undefined; +>x : Symbol(x, Decl(controlFlowTruthiness.ts, 25, 7)) + + if (x = foo()) { +>x : Symbol(x, Decl(controlFlowTruthiness.ts, 25, 7)) +>foo : Symbol(foo, Decl(controlFlowTruthiness.ts, 0, 0)) + + x; // string +>x : Symbol(x, Decl(controlFlowTruthiness.ts, 25, 7)) + } + else { + x; // string | undefined +>x : Symbol(x, Decl(controlFlowTruthiness.ts, 25, 7)) + } +} + +function f4() { +>f4 : Symbol(f4, Decl(controlFlowTruthiness.ts, 32, 1)) + + let x: string | undefined; +>x : Symbol(x, Decl(controlFlowTruthiness.ts, 35, 7)) + + if (!(x = foo())) { +>x : Symbol(x, Decl(controlFlowTruthiness.ts, 35, 7)) +>foo : Symbol(foo, Decl(controlFlowTruthiness.ts, 0, 0)) + + x; // string | undefined +>x : Symbol(x, Decl(controlFlowTruthiness.ts, 35, 7)) + } + else { + x; // string +>x : Symbol(x, Decl(controlFlowTruthiness.ts, 35, 7)) + } +} + +function f5() { +>f5 : Symbol(f5, Decl(controlFlowTruthiness.ts, 42, 1)) + + let x: string | undefined; +>x : Symbol(x, Decl(controlFlowTruthiness.ts, 45, 7)) + + let y: string | undefined; +>y : Symbol(y, Decl(controlFlowTruthiness.ts, 46, 7)) + + if (x = y = foo()) { +>x : Symbol(x, Decl(controlFlowTruthiness.ts, 45, 7)) +>y : Symbol(y, Decl(controlFlowTruthiness.ts, 46, 7)) +>foo : Symbol(foo, Decl(controlFlowTruthiness.ts, 0, 0)) + + x; // string +>x : Symbol(x, Decl(controlFlowTruthiness.ts, 45, 7)) + + y; // string | undefined +>y : Symbol(y, Decl(controlFlowTruthiness.ts, 46, 7)) + } + else { + x; // string | undefined +>x : Symbol(x, Decl(controlFlowTruthiness.ts, 45, 7)) + + y; // string | undefined +>y : Symbol(y, Decl(controlFlowTruthiness.ts, 46, 7)) + } +} + +function f6() { +>f6 : Symbol(f6, Decl(controlFlowTruthiness.ts, 55, 1)) + + let x: string | undefined; +>x : Symbol(x, Decl(controlFlowTruthiness.ts, 58, 7)) + + let y: string | undefined; +>y : Symbol(y, Decl(controlFlowTruthiness.ts, 59, 7)) + + if (x = foo(), y = foo()) { +>x : Symbol(x, Decl(controlFlowTruthiness.ts, 58, 7)) +>foo : Symbol(foo, Decl(controlFlowTruthiness.ts, 0, 0)) +>y : Symbol(y, Decl(controlFlowTruthiness.ts, 59, 7)) +>foo : Symbol(foo, Decl(controlFlowTruthiness.ts, 0, 0)) + + x; // string | undefined +>x : Symbol(x, Decl(controlFlowTruthiness.ts, 58, 7)) + + y; // string +>y : Symbol(y, Decl(controlFlowTruthiness.ts, 59, 7)) + } + else { + x; // string | undefined +>x : Symbol(x, Decl(controlFlowTruthiness.ts, 58, 7)) + + y; // string | undefined +>y : Symbol(y, Decl(controlFlowTruthiness.ts, 59, 7)) + } +} + diff --git a/tests/baselines/reference/controlFlowTruthiness.types b/tests/baselines/reference/controlFlowTruthiness.types new file mode 100644 index 00000000000..2d35856fe83 --- /dev/null +++ b/tests/baselines/reference/controlFlowTruthiness.types @@ -0,0 +1,160 @@ +=== tests/cases/conformance/controlFlow/controlFlowTruthiness.ts === + +declare function foo(): string | undefined; +>foo : () => string | undefined + +function f1() { +>f1 : () => void + + let x = foo(); +>x : string | undefined +>foo() : string | undefined +>foo : () => string | undefined + + if (x) { +>x : string | undefined + + x; // string +>x : string + } + else { + x; // string | undefined +>x : string | undefined + } +} + +function f2() { +>f2 : () => void + + let x: string | undefined; +>x : string | undefined + + x = foo(); +>x = foo() : string | undefined +>x : string | undefined +>foo() : string | undefined +>foo : () => string | undefined + + if (x) { +>x : string | undefined + + x; // string +>x : string + } + else { + x; // string | undefined +>x : string | undefined + } +} + +function f3() { +>f3 : () => void + + let x: string | undefined; +>x : string | undefined + + if (x = foo()) { +>x = foo() : string | undefined +>x : string | undefined +>foo() : string | undefined +>foo : () => string | undefined + + x; // string +>x : string + } + else { + x; // string | undefined +>x : string | undefined + } +} + +function f4() { +>f4 : () => void + + let x: string | undefined; +>x : string | undefined + + if (!(x = foo())) { +>!(x = foo()) : boolean +>(x = foo()) : string | undefined +>x = foo() : string | undefined +>x : string | undefined +>foo() : string | undefined +>foo : () => string | undefined + + x; // string | undefined +>x : string | undefined + } + else { + x; // string +>x : string + } +} + +function f5() { +>f5 : () => void + + let x: string | undefined; +>x : string | undefined + + let y: string | undefined; +>y : string | undefined + + if (x = y = foo()) { +>x = y = foo() : string | undefined +>x : string | undefined +>y = foo() : string | undefined +>y : string | undefined +>foo() : string | undefined +>foo : () => string | undefined + + x; // string +>x : string + + y; // string | undefined +>y : string | undefined + } + else { + x; // string | undefined +>x : string | undefined + + y; // string | undefined +>y : string | undefined + } +} + +function f6() { +>f6 : () => void + + let x: string | undefined; +>x : string | undefined + + let y: string | undefined; +>y : string | undefined + + if (x = foo(), y = foo()) { +>x = foo(), y = foo() : string | undefined +>x = foo() : string | undefined +>x : string | undefined +>foo() : string | undefined +>foo : () => string | undefined +>y = foo() : string | undefined +>y : string | undefined +>foo() : string | undefined +>foo : () => string | undefined + + x; // string | undefined +>x : string | undefined + + y; // string +>y : string + } + else { + x; // string | undefined +>x : string | undefined + + y; // string | undefined +>y : string | undefined + } +} + diff --git a/tests/baselines/reference/controlFlowWhileStatement.js b/tests/baselines/reference/controlFlowWhileStatement.js new file mode 100644 index 00000000000..d9faf9bd0ea --- /dev/null +++ b/tests/baselines/reference/controlFlowWhileStatement.js @@ -0,0 +1,216 @@ +//// [controlFlowWhileStatement.ts] +let cond: boolean; +function a() { + let x: string | number; + x = ""; + while (cond) { + x; // string + } +} +function b() { + let x: string | number; + x = ""; + while (cond) { + x; // string + x = 42; + break; + } +} +function c() { + let x: string | number; + x = ""; + while (cond) { + x; // string + x = undefined; + if (typeof x === "string") continue; + break; + } +} +function d() { + let x: string | number; + x = ""; + while (x = x.length) { + x; // number + x = ""; + } +} +function e() { + let x: string | number; + x = ""; + while (cond) { + x; // string | number + x = 42; + x; // number + } + x; // string | number +} +function f() { + let x: string | number | boolean | RegExp | Function; + x = ""; + while (cond) { + if (cond) { + x = 42; + break; + } + if (cond) { + x = true; + continue; + } + x = /a/; + } + x; // string | number | boolean | RegExp +} +function g() { + let x: string | number | boolean | RegExp | Function; + x = ""; + while (true) { + if (cond) { + x = 42; + break; + } + if (cond) { + x = true; + continue; + } + x = /a/; + } + x; // number +} +function h1() { + let x: string | number | boolean; + x = ""; + while (x > 1) { + x; // string | number + x = 1; + x; // number + } + x; // string | number +} +declare function len(s: string | number): number; +function h2() { + let x: string | number | boolean; + x = ""; + while (cond) { + x = len(x); + x; // number + } + x; // string | number +} +function h3() { + let x: string | number | boolean; + x = ""; + while (cond) { + x; // string | number + x = len(x); + } + x; // string | number +} + + +//// [controlFlowWhileStatement.js] +var cond; +function a() { + var x; + x = ""; + while (cond) { + x; // string + } +} +function b() { + var x; + x = ""; + while (cond) { + x; // string + x = 42; + break; + } +} +function c() { + var x; + x = ""; + while (cond) { + x; // string + x = undefined; + if (typeof x === "string") + continue; + break; + } +} +function d() { + var x; + x = ""; + while (x = x.length) { + x; // number + x = ""; + } +} +function e() { + var x; + x = ""; + while (cond) { + x; // string | number + x = 42; + x; // number + } + x; // string | number +} +function f() { + var x; + x = ""; + while (cond) { + if (cond) { + x = 42; + break; + } + if (cond) { + x = true; + continue; + } + x = /a/; + } + x; // string | number | boolean | RegExp +} +function g() { + var x; + x = ""; + while (true) { + if (cond) { + x = 42; + break; + } + if (cond) { + x = true; + continue; + } + x = /a/; + } + x; // number +} +function h1() { + var x; + x = ""; + while (x > 1) { + x; // string | number + x = 1; + x; // number + } + x; // string | number +} +function h2() { + var x; + x = ""; + while (cond) { + x = len(x); + x; // number + } + x; // string | number +} +function h3() { + var x; + x = ""; + while (cond) { + x; // string | number + x = len(x); + } + x; // string | number +} diff --git a/tests/baselines/reference/controlFlowWhileStatement.symbols b/tests/baselines/reference/controlFlowWhileStatement.symbols new file mode 100644 index 00000000000..3b4def93b45 --- /dev/null +++ b/tests/baselines/reference/controlFlowWhileStatement.symbols @@ -0,0 +1,257 @@ +=== tests/cases/conformance/controlFlow/controlFlowWhileStatement.ts === +let cond: boolean; +>cond : Symbol(cond, Decl(controlFlowWhileStatement.ts, 0, 3)) + +function a() { +>a : Symbol(a, Decl(controlFlowWhileStatement.ts, 0, 18)) + + let x: string | number; +>x : Symbol(x, Decl(controlFlowWhileStatement.ts, 2, 7)) + + x = ""; +>x : Symbol(x, Decl(controlFlowWhileStatement.ts, 2, 7)) + + while (cond) { +>cond : Symbol(cond, Decl(controlFlowWhileStatement.ts, 0, 3)) + + x; // string +>x : Symbol(x, Decl(controlFlowWhileStatement.ts, 2, 7)) + } +} +function b() { +>b : Symbol(b, Decl(controlFlowWhileStatement.ts, 7, 1)) + + let x: string | number; +>x : Symbol(x, Decl(controlFlowWhileStatement.ts, 9, 7)) + + x = ""; +>x : Symbol(x, Decl(controlFlowWhileStatement.ts, 9, 7)) + + while (cond) { +>cond : Symbol(cond, Decl(controlFlowWhileStatement.ts, 0, 3)) + + x; // string +>x : Symbol(x, Decl(controlFlowWhileStatement.ts, 9, 7)) + + x = 42; +>x : Symbol(x, Decl(controlFlowWhileStatement.ts, 9, 7)) + + break; + } +} +function c() { +>c : Symbol(c, Decl(controlFlowWhileStatement.ts, 16, 1)) + + let x: string | number; +>x : Symbol(x, Decl(controlFlowWhileStatement.ts, 18, 7)) + + x = ""; +>x : Symbol(x, Decl(controlFlowWhileStatement.ts, 18, 7)) + + while (cond) { +>cond : Symbol(cond, Decl(controlFlowWhileStatement.ts, 0, 3)) + + x; // string +>x : Symbol(x, Decl(controlFlowWhileStatement.ts, 18, 7)) + + x = undefined; +>x : Symbol(x, Decl(controlFlowWhileStatement.ts, 18, 7)) +>undefined : Symbol(undefined) + + if (typeof x === "string") continue; +>x : Symbol(x, Decl(controlFlowWhileStatement.ts, 18, 7)) + + break; + } +} +function d() { +>d : Symbol(d, Decl(controlFlowWhileStatement.ts, 26, 1)) + + let x: string | number; +>x : Symbol(x, Decl(controlFlowWhileStatement.ts, 28, 7)) + + x = ""; +>x : Symbol(x, Decl(controlFlowWhileStatement.ts, 28, 7)) + + while (x = x.length) { +>x : Symbol(x, Decl(controlFlowWhileStatement.ts, 28, 7)) +>x.length : Symbol(String.length, Decl(lib.d.ts, --, --)) +>x : Symbol(x, Decl(controlFlowWhileStatement.ts, 28, 7)) +>length : Symbol(String.length, Decl(lib.d.ts, --, --)) + + x; // number +>x : Symbol(x, Decl(controlFlowWhileStatement.ts, 28, 7)) + + x = ""; +>x : Symbol(x, Decl(controlFlowWhileStatement.ts, 28, 7)) + } +} +function e() { +>e : Symbol(e, Decl(controlFlowWhileStatement.ts, 34, 1)) + + let x: string | number; +>x : Symbol(x, Decl(controlFlowWhileStatement.ts, 36, 7)) + + x = ""; +>x : Symbol(x, Decl(controlFlowWhileStatement.ts, 36, 7)) + + while (cond) { +>cond : Symbol(cond, Decl(controlFlowWhileStatement.ts, 0, 3)) + + x; // string | number +>x : Symbol(x, Decl(controlFlowWhileStatement.ts, 36, 7)) + + x = 42; +>x : Symbol(x, Decl(controlFlowWhileStatement.ts, 36, 7)) + + x; // number +>x : Symbol(x, Decl(controlFlowWhileStatement.ts, 36, 7)) + } + x; // string | number +>x : Symbol(x, Decl(controlFlowWhileStatement.ts, 36, 7)) +} +function f() { +>f : Symbol(f, Decl(controlFlowWhileStatement.ts, 44, 1)) + + let x: string | number | boolean | RegExp | Function; +>x : Symbol(x, Decl(controlFlowWhileStatement.ts, 46, 7)) +>RegExp : Symbol(RegExp, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Function : Symbol(Function, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + + x = ""; +>x : Symbol(x, Decl(controlFlowWhileStatement.ts, 46, 7)) + + while (cond) { +>cond : Symbol(cond, Decl(controlFlowWhileStatement.ts, 0, 3)) + + if (cond) { +>cond : Symbol(cond, Decl(controlFlowWhileStatement.ts, 0, 3)) + + x = 42; +>x : Symbol(x, Decl(controlFlowWhileStatement.ts, 46, 7)) + + break; + } + if (cond) { +>cond : Symbol(cond, Decl(controlFlowWhileStatement.ts, 0, 3)) + + x = true; +>x : Symbol(x, Decl(controlFlowWhileStatement.ts, 46, 7)) + + continue; + } + x = /a/; +>x : Symbol(x, Decl(controlFlowWhileStatement.ts, 46, 7)) + } + x; // string | number | boolean | RegExp +>x : Symbol(x, Decl(controlFlowWhileStatement.ts, 46, 7)) +} +function g() { +>g : Symbol(g, Decl(controlFlowWhileStatement.ts, 60, 1)) + + let x: string | number | boolean | RegExp | Function; +>x : Symbol(x, Decl(controlFlowWhileStatement.ts, 62, 7)) +>RegExp : Symbol(RegExp, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Function : Symbol(Function, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + + x = ""; +>x : Symbol(x, Decl(controlFlowWhileStatement.ts, 62, 7)) + + while (true) { + if (cond) { +>cond : Symbol(cond, Decl(controlFlowWhileStatement.ts, 0, 3)) + + x = 42; +>x : Symbol(x, Decl(controlFlowWhileStatement.ts, 62, 7)) + + break; + } + if (cond) { +>cond : Symbol(cond, Decl(controlFlowWhileStatement.ts, 0, 3)) + + x = true; +>x : Symbol(x, Decl(controlFlowWhileStatement.ts, 62, 7)) + + continue; + } + x = /a/; +>x : Symbol(x, Decl(controlFlowWhileStatement.ts, 62, 7)) + } + x; // number +>x : Symbol(x, Decl(controlFlowWhileStatement.ts, 62, 7)) +} +function h1() { +>h1 : Symbol(h1, Decl(controlFlowWhileStatement.ts, 76, 1)) + + let x: string | number | boolean; +>x : Symbol(x, Decl(controlFlowWhileStatement.ts, 78, 7)) + + x = ""; +>x : Symbol(x, Decl(controlFlowWhileStatement.ts, 78, 7)) + + while (x > 1) { +>x : Symbol(x, Decl(controlFlowWhileStatement.ts, 78, 7)) + + x; // string | number +>x : Symbol(x, Decl(controlFlowWhileStatement.ts, 78, 7)) + + x = 1; +>x : Symbol(x, Decl(controlFlowWhileStatement.ts, 78, 7)) + + x; // number +>x : Symbol(x, Decl(controlFlowWhileStatement.ts, 78, 7)) + } + x; // string | number +>x : Symbol(x, Decl(controlFlowWhileStatement.ts, 78, 7)) +} +declare function len(s: string | number): number; +>len : Symbol(len, Decl(controlFlowWhileStatement.ts, 86, 1)) +>s : Symbol(s, Decl(controlFlowWhileStatement.ts, 87, 21)) + +function h2() { +>h2 : Symbol(h2, Decl(controlFlowWhileStatement.ts, 87, 49)) + + let x: string | number | boolean; +>x : Symbol(x, Decl(controlFlowWhileStatement.ts, 89, 7)) + + x = ""; +>x : Symbol(x, Decl(controlFlowWhileStatement.ts, 89, 7)) + + while (cond) { +>cond : Symbol(cond, Decl(controlFlowWhileStatement.ts, 0, 3)) + + x = len(x); +>x : Symbol(x, Decl(controlFlowWhileStatement.ts, 89, 7)) +>len : Symbol(len, Decl(controlFlowWhileStatement.ts, 86, 1)) +>x : Symbol(x, Decl(controlFlowWhileStatement.ts, 89, 7)) + + x; // number +>x : Symbol(x, Decl(controlFlowWhileStatement.ts, 89, 7)) + } + x; // string | number +>x : Symbol(x, Decl(controlFlowWhileStatement.ts, 89, 7)) +} +function h3() { +>h3 : Symbol(h3, Decl(controlFlowWhileStatement.ts, 96, 1)) + + let x: string | number | boolean; +>x : Symbol(x, Decl(controlFlowWhileStatement.ts, 98, 7)) + + x = ""; +>x : Symbol(x, Decl(controlFlowWhileStatement.ts, 98, 7)) + + while (cond) { +>cond : Symbol(cond, Decl(controlFlowWhileStatement.ts, 0, 3)) + + x; // string | number +>x : Symbol(x, Decl(controlFlowWhileStatement.ts, 98, 7)) + + x = len(x); +>x : Symbol(x, Decl(controlFlowWhileStatement.ts, 98, 7)) +>len : Symbol(len, Decl(controlFlowWhileStatement.ts, 86, 1)) +>x : Symbol(x, Decl(controlFlowWhileStatement.ts, 98, 7)) + } + x; // string | number +>x : Symbol(x, Decl(controlFlowWhileStatement.ts, 98, 7)) +} + diff --git a/tests/baselines/reference/controlFlowWhileStatement.types b/tests/baselines/reference/controlFlowWhileStatement.types new file mode 100644 index 00000000000..a17c084228b --- /dev/null +++ b/tests/baselines/reference/controlFlowWhileStatement.types @@ -0,0 +1,310 @@ +=== tests/cases/conformance/controlFlow/controlFlowWhileStatement.ts === +let cond: boolean; +>cond : boolean + +function a() { +>a : () => void + + let x: string | number; +>x : string | number + + x = ""; +>x = "" : string +>x : string | number +>"" : string + + while (cond) { +>cond : boolean + + x; // string +>x : string + } +} +function b() { +>b : () => void + + let x: string | number; +>x : string | number + + x = ""; +>x = "" : string +>x : string | number +>"" : string + + while (cond) { +>cond : boolean + + x; // string +>x : string + + x = 42; +>x = 42 : number +>x : string | number +>42 : number + + break; + } +} +function c() { +>c : () => void + + let x: string | number; +>x : string | number + + x = ""; +>x = "" : string +>x : string | number +>"" : string + + while (cond) { +>cond : boolean + + x; // string +>x : string + + x = undefined; +>x = undefined : undefined +>x : string | number +>undefined : undefined + + if (typeof x === "string") continue; +>typeof x === "string" : boolean +>typeof x : string +>x : string | number +>"string" : string + + break; + } +} +function d() { +>d : () => void + + let x: string | number; +>x : string | number + + x = ""; +>x = "" : string +>x : string | number +>"" : string + + while (x = x.length) { +>x = x.length : number +>x : string | number +>x.length : number +>x : string +>length : number + + x; // number +>x : number + + x = ""; +>x = "" : string +>x : string | number +>"" : string + } +} +function e() { +>e : () => void + + let x: string | number; +>x : string | number + + x = ""; +>x = "" : string +>x : string | number +>"" : string + + while (cond) { +>cond : boolean + + x; // string | number +>x : string | number + + x = 42; +>x = 42 : number +>x : string | number +>42 : number + + x; // number +>x : number + } + x; // string | number +>x : string | number +} +function f() { +>f : () => void + + let x: string | number | boolean | RegExp | Function; +>x : string | number | boolean | RegExp | Function +>RegExp : RegExp +>Function : Function + + x = ""; +>x = "" : string +>x : string | number | boolean | RegExp | Function +>"" : string + + while (cond) { +>cond : boolean + + if (cond) { +>cond : boolean + + x = 42; +>x = 42 : number +>x : string | number | boolean | RegExp | Function +>42 : number + + break; + } + if (cond) { +>cond : boolean + + x = true; +>x = true : boolean +>x : string | number | boolean | RegExp | Function +>true : boolean + + continue; + } + x = /a/; +>x = /a/ : RegExp +>x : string | number | boolean | RegExp | Function +>/a/ : RegExp + } + x; // string | number | boolean | RegExp +>x : string | boolean | RegExp | number +} +function g() { +>g : () => void + + let x: string | number | boolean | RegExp | Function; +>x : string | number | boolean | RegExp | Function +>RegExp : RegExp +>Function : Function + + x = ""; +>x = "" : string +>x : string | number | boolean | RegExp | Function +>"" : string + + while (true) { +>true : boolean + + if (cond) { +>cond : boolean + + x = 42; +>x = 42 : number +>x : string | number | boolean | RegExp | Function +>42 : number + + break; + } + if (cond) { +>cond : boolean + + x = true; +>x = true : boolean +>x : string | number | boolean | RegExp | Function +>true : boolean + + continue; + } + x = /a/; +>x = /a/ : RegExp +>x : string | number | boolean | RegExp | Function +>/a/ : RegExp + } + x; // number +>x : number +} +function h1() { +>h1 : () => void + + let x: string | number | boolean; +>x : string | number | boolean + + x = ""; +>x = "" : string +>x : string | number | boolean +>"" : string + + while (x > 1) { +>x > 1 : boolean +>x : string | number +>1 : number + + x; // string | number +>x : string | number + + x = 1; +>x = 1 : number +>x : string | number | boolean +>1 : number + + x; // number +>x : number + } + x; // string | number +>x : string | number +} +declare function len(s: string | number): number; +>len : (s: string | number) => number +>s : string | number + +function h2() { +>h2 : () => void + + let x: string | number | boolean; +>x : string | number | boolean + + x = ""; +>x = "" : string +>x : string | number | boolean +>"" : string + + while (cond) { +>cond : boolean + + x = len(x); +>x = len(x) : number +>x : string | number | boolean +>len(x) : number +>len : (s: string | number) => number +>x : string | number + + x; // number +>x : number + } + x; // string | number +>x : string | number +} +function h3() { +>h3 : () => void + + let x: string | number | boolean; +>x : string | number | boolean + + x = ""; +>x = "" : string +>x : string | number | boolean +>"" : string + + while (cond) { +>cond : boolean + + x; // string | number +>x : string | number + + x = len(x); +>x = len(x) : number +>x : string | number | boolean +>len(x) : number +>len : (s: string | number) => number +>x : string | number + } + x; // string | number +>x : string | number +} + diff --git a/tests/baselines/reference/covariance1.symbols b/tests/baselines/reference/covariance1.symbols index db055e20bc6..8a9b39e0124 100644 --- a/tests/baselines/reference/covariance1.symbols +++ b/tests/baselines/reference/covariance1.symbols @@ -4,16 +4,16 @@ module M { interface X { m1:number; } >X : Symbol(X, Decl(covariance1.ts, 0, 10)) ->m1 : Symbol(m1, Decl(covariance1.ts, 2, 17)) +>m1 : Symbol(X.m1, Decl(covariance1.ts, 2, 17)) export class XX implements X { constructor(public m1:number) { } } >XX : Symbol(XX, Decl(covariance1.ts, 2, 30)) >X : Symbol(X, Decl(covariance1.ts, 0, 10)) ->m1 : Symbol(m1, Decl(covariance1.ts, 3, 47)) +>m1 : Symbol(XX.m1, Decl(covariance1.ts, 3, 47)) interface Y { x:X; } >Y : Symbol(Y, Decl(covariance1.ts, 3, 70)) ->x : Symbol(x, Decl(covariance1.ts, 5, 17)) +>x : Symbol(Y.x, Decl(covariance1.ts, 5, 17)) >X : Symbol(X, Decl(covariance1.ts, 0, 10)) export function f(y:Y) { } diff --git a/tests/baselines/reference/crashInResolveInterface.symbols b/tests/baselines/reference/crashInResolveInterface.symbols index c10bf0b26a8..52faf374c6c 100644 --- a/tests/baselines/reference/crashInResolveInterface.symbols +++ b/tests/baselines/reference/crashInResolveInterface.symbols @@ -8,14 +8,14 @@ interface C { >C : Symbol(C, Decl(file2.ts, 1, 17), Decl(file2.ts, 4, 1)) count(countTitle?: string): void; ->count : Symbol(count, Decl(file2.ts, 2, 13)) +>count : Symbol(C.count, Decl(file2.ts, 2, 13)) >countTitle : Symbol(countTitle, Decl(file2.ts, 3, 10)) } interface C { >C : Symbol(C, Decl(file2.ts, 1, 17), Decl(file2.ts, 4, 1)) log(message?: any, ...optionalParams: any[]): void; ->log : Symbol(log, Decl(file2.ts, 5, 13)) +>log : Symbol(C.log, Decl(file2.ts, 5, 13)) >message : Symbol(message, Decl(file2.ts, 6, 8)) >optionalParams : Symbol(optionalParams, Decl(file2.ts, 6, 22)) } @@ -26,7 +26,7 @@ interface Q { >T : Symbol(T, Decl(file1.ts, 0, 12)) each(action: (item: T, index: number) => void): void; ->each : Symbol(each, Decl(file1.ts, 0, 16)) +>each : Symbol(Q.each, Decl(file1.ts, 0, 16)) >action : Symbol(action, Decl(file1.ts, 1, 9)) >item : Symbol(item, Decl(file1.ts, 1, 18)) >T : Symbol(T, Decl(file1.ts, 0, 12)) diff --git a/tests/baselines/reference/crashInresolveReturnStatement.symbols b/tests/baselines/reference/crashInresolveReturnStatement.symbols index 359a62c7842..7df76ff49c2 100644 --- a/tests/baselines/reference/crashInresolveReturnStatement.symbols +++ b/tests/baselines/reference/crashInresolveReturnStatement.symbols @@ -3,7 +3,7 @@ class WorkItemToolbar { >WorkItemToolbar : Symbol(WorkItemToolbar, Decl(crashInresolveReturnStatement.ts, 0, 0)) public onToolbarItemClick() { ->onToolbarItemClick : Symbol(onToolbarItemClick, Decl(crashInresolveReturnStatement.ts, 0, 23)) +>onToolbarItemClick : Symbol(WorkItemToolbar.onToolbarItemClick, Decl(crashInresolveReturnStatement.ts, 0, 23)) WITDialogs.createCopyOfWorkItem(); >WITDialogs.createCopyOfWorkItem : Symbol(WITDialogs.createCopyOfWorkItem, Decl(crashInresolveReturnStatement.ts, 12, 18)) @@ -15,7 +15,7 @@ class CreateCopyOfWorkItemDialog { >CreateCopyOfWorkItemDialog : Symbol(CreateCopyOfWorkItemDialog, Decl(crashInresolveReturnStatement.ts, 4, 1)) public getDialogResult() { ->getDialogResult : Symbol(getDialogResult, Decl(crashInresolveReturnStatement.ts, 5, 34)) +>getDialogResult : Symbol(CreateCopyOfWorkItemDialog.getDialogResult, Decl(crashInresolveReturnStatement.ts, 5, 34)) return null; } diff --git a/tests/baselines/reference/cyclicModuleImport.symbols b/tests/baselines/reference/cyclicModuleImport.symbols index 86337812aad..14bdf2d47d3 100644 --- a/tests/baselines/reference/cyclicModuleImport.symbols +++ b/tests/baselines/reference/cyclicModuleImport.symbols @@ -10,10 +10,10 @@ declare module "SubModule" { >StaticVar : Symbol(SubModule.StaticVar, Decl(cyclicModuleImport.ts, 2, 21)) public InstanceVar: number; ->InstanceVar : Symbol(InstanceVar, Decl(cyclicModuleImport.ts, 3, 40)) +>InstanceVar : Symbol(SubModule.InstanceVar, Decl(cyclicModuleImport.ts, 3, 40)) public main: MainModule; ->main : Symbol(main, Decl(cyclicModuleImport.ts, 4, 35)) +>main : Symbol(SubModule.main, Decl(cyclicModuleImport.ts, 4, 35)) >MainModule : Symbol(MainModule, Decl(cyclicModuleImport.ts, 0, 28)) constructor(); @@ -29,7 +29,7 @@ declare module "MainModule" { >MainModule : Symbol(MainModule, Decl(cyclicModuleImport.ts, 11, 44)) public SubModule: SubModule; ->SubModule : Symbol(SubModule, Decl(cyclicModuleImport.ts, 12, 22)) +>SubModule : Symbol(MainModule.SubModule, Decl(cyclicModuleImport.ts, 12, 22)) >SubModule : Symbol(SubModule, Decl(cyclicModuleImport.ts, 10, 29)) constructor(); diff --git a/tests/baselines/reference/declFileAccessors.symbols b/tests/baselines/reference/declFileAccessors.symbols index 7275dd8c191..3de90051ec4 100644 --- a/tests/baselines/reference/declFileAccessors.symbols +++ b/tests/baselines/reference/declFileAccessors.symbols @@ -6,24 +6,24 @@ export class c1 { /** getter property*/ public get p3() { ->p3 : Symbol(p3, Decl(declFileAccessors_0.ts, 2, 17), Decl(declFileAccessors_0.ts, 6, 5)) +>p3 : Symbol(c1.p3, Decl(declFileAccessors_0.ts, 2, 17), Decl(declFileAccessors_0.ts, 6, 5)) return 10; } /** setter property*/ public set p3(/** this is value*/value: number) { ->p3 : Symbol(p3, Decl(declFileAccessors_0.ts, 2, 17), Decl(declFileAccessors_0.ts, 6, 5)) +>p3 : Symbol(c1.p3, Decl(declFileAccessors_0.ts, 2, 17), Decl(declFileAccessors_0.ts, 6, 5)) >value : Symbol(value, Decl(declFileAccessors_0.ts, 8, 18)) } /** private getter property*/ private get pp3() { ->pp3 : Symbol(pp3, Decl(declFileAccessors_0.ts, 9, 5), Decl(declFileAccessors_0.ts, 13, 5)) +>pp3 : Symbol(c1.pp3, Decl(declFileAccessors_0.ts, 9, 5), Decl(declFileAccessors_0.ts, 13, 5)) return 10; } /** private setter property*/ private set pp3(/** this is value*/value: number) { ->pp3 : Symbol(pp3, Decl(declFileAccessors_0.ts, 9, 5), Decl(declFileAccessors_0.ts, 13, 5)) +>pp3 : Symbol(c1.pp3, Decl(declFileAccessors_0.ts, 9, 5), Decl(declFileAccessors_0.ts, 13, 5)) >value : Symbol(value, Decl(declFileAccessors_0.ts, 15, 20)) } /** static getter property*/ @@ -38,21 +38,21 @@ export class c1 { >value : Symbol(value, Decl(declFileAccessors_0.ts, 22, 18)) } public get nc_p3() { ->nc_p3 : Symbol(nc_p3, Decl(declFileAccessors_0.ts, 23, 5), Decl(declFileAccessors_0.ts, 26, 5)) +>nc_p3 : Symbol(c1.nc_p3, Decl(declFileAccessors_0.ts, 23, 5), Decl(declFileAccessors_0.ts, 26, 5)) return 10; } public set nc_p3(value: number) { ->nc_p3 : Symbol(nc_p3, Decl(declFileAccessors_0.ts, 23, 5), Decl(declFileAccessors_0.ts, 26, 5)) +>nc_p3 : Symbol(c1.nc_p3, Decl(declFileAccessors_0.ts, 23, 5), Decl(declFileAccessors_0.ts, 26, 5)) >value : Symbol(value, Decl(declFileAccessors_0.ts, 27, 21)) } private get nc_pp3() { ->nc_pp3 : Symbol(nc_pp3, Decl(declFileAccessors_0.ts, 28, 5), Decl(declFileAccessors_0.ts, 31, 5)) +>nc_pp3 : Symbol(c1.nc_pp3, Decl(declFileAccessors_0.ts, 28, 5), Decl(declFileAccessors_0.ts, 31, 5)) return 10; } private set nc_pp3(value: number) { ->nc_pp3 : Symbol(nc_pp3, Decl(declFileAccessors_0.ts, 28, 5), Decl(declFileAccessors_0.ts, 31, 5)) +>nc_pp3 : Symbol(c1.nc_pp3, Decl(declFileAccessors_0.ts, 28, 5), Decl(declFileAccessors_0.ts, 31, 5)) >value : Symbol(value, Decl(declFileAccessors_0.ts, 32, 23)) } static get nc_s3() { @@ -67,14 +67,14 @@ export class c1 { // Only getter property public get onlyGetter() { ->onlyGetter : Symbol(onlyGetter, Decl(declFileAccessors_0.ts, 38, 5)) +>onlyGetter : Symbol(c1.onlyGetter, Decl(declFileAccessors_0.ts, 38, 5)) return 10; } // Only setter property public set onlySetter(value: number) { ->onlySetter : Symbol(onlySetter, Decl(declFileAccessors_0.ts, 43, 5)) +>onlySetter : Symbol(c1.onlySetter, Decl(declFileAccessors_0.ts, 43, 5)) >value : Symbol(value, Decl(declFileAccessors_0.ts, 46, 26)) } } @@ -86,24 +86,24 @@ class c2 { /** getter property*/ public get p3() { ->p3 : Symbol(p3, Decl(declFileAccessors_1.ts, 1, 10), Decl(declFileAccessors_1.ts, 5, 5)) +>p3 : Symbol(c2.p3, Decl(declFileAccessors_1.ts, 1, 10), Decl(declFileAccessors_1.ts, 5, 5)) return 10; } /** setter property*/ public set p3(/** this is value*/value: number) { ->p3 : Symbol(p3, Decl(declFileAccessors_1.ts, 1, 10), Decl(declFileAccessors_1.ts, 5, 5)) +>p3 : Symbol(c2.p3, Decl(declFileAccessors_1.ts, 1, 10), Decl(declFileAccessors_1.ts, 5, 5)) >value : Symbol(value, Decl(declFileAccessors_1.ts, 7, 18)) } /** private getter property*/ private get pp3() { ->pp3 : Symbol(pp3, Decl(declFileAccessors_1.ts, 8, 5), Decl(declFileAccessors_1.ts, 12, 5)) +>pp3 : Symbol(c2.pp3, Decl(declFileAccessors_1.ts, 8, 5), Decl(declFileAccessors_1.ts, 12, 5)) return 10; } /** private setter property*/ private set pp3(/** this is value*/value: number) { ->pp3 : Symbol(pp3, Decl(declFileAccessors_1.ts, 8, 5), Decl(declFileAccessors_1.ts, 12, 5)) +>pp3 : Symbol(c2.pp3, Decl(declFileAccessors_1.ts, 8, 5), Decl(declFileAccessors_1.ts, 12, 5)) >value : Symbol(value, Decl(declFileAccessors_1.ts, 14, 20)) } /** static getter property*/ @@ -118,21 +118,21 @@ class c2 { >value : Symbol(value, Decl(declFileAccessors_1.ts, 21, 18)) } public get nc_p3() { ->nc_p3 : Symbol(nc_p3, Decl(declFileAccessors_1.ts, 22, 5), Decl(declFileAccessors_1.ts, 25, 5)) +>nc_p3 : Symbol(c2.nc_p3, Decl(declFileAccessors_1.ts, 22, 5), Decl(declFileAccessors_1.ts, 25, 5)) return 10; } public set nc_p3(value: number) { ->nc_p3 : Symbol(nc_p3, Decl(declFileAccessors_1.ts, 22, 5), Decl(declFileAccessors_1.ts, 25, 5)) +>nc_p3 : Symbol(c2.nc_p3, Decl(declFileAccessors_1.ts, 22, 5), Decl(declFileAccessors_1.ts, 25, 5)) >value : Symbol(value, Decl(declFileAccessors_1.ts, 26, 21)) } private get nc_pp3() { ->nc_pp3 : Symbol(nc_pp3, Decl(declFileAccessors_1.ts, 27, 5), Decl(declFileAccessors_1.ts, 30, 5)) +>nc_pp3 : Symbol(c2.nc_pp3, Decl(declFileAccessors_1.ts, 27, 5), Decl(declFileAccessors_1.ts, 30, 5)) return 10; } private set nc_pp3(value: number) { ->nc_pp3 : Symbol(nc_pp3, Decl(declFileAccessors_1.ts, 27, 5), Decl(declFileAccessors_1.ts, 30, 5)) +>nc_pp3 : Symbol(c2.nc_pp3, Decl(declFileAccessors_1.ts, 27, 5), Decl(declFileAccessors_1.ts, 30, 5)) >value : Symbol(value, Decl(declFileAccessors_1.ts, 31, 23)) } static get nc_s3() { @@ -147,14 +147,14 @@ class c2 { // Only getter property public get onlyGetter() { ->onlyGetter : Symbol(onlyGetter, Decl(declFileAccessors_1.ts, 37, 5)) +>onlyGetter : Symbol(c2.onlyGetter, Decl(declFileAccessors_1.ts, 37, 5)) return 10; } // Only setter property public set onlySetter(value: number) { ->onlySetter : Symbol(onlySetter, Decl(declFileAccessors_1.ts, 42, 5)) +>onlySetter : Symbol(c2.onlySetter, Decl(declFileAccessors_1.ts, 42, 5)) >value : Symbol(value, Decl(declFileAccessors_1.ts, 45, 26)) } } diff --git a/tests/baselines/reference/declFileConstructors.symbols b/tests/baselines/reference/declFileConstructors.symbols index 1190c889dbf..ad86b6a721f 100644 --- a/tests/baselines/reference/declFileConstructors.symbols +++ b/tests/baselines/reference/declFileConstructors.symbols @@ -57,7 +57,7 @@ export class ConstructorWithPublicParameterProperty { >ConstructorWithPublicParameterProperty : Symbol(ConstructorWithPublicParameterProperty, Decl(declFileConstructors_0.ts, 26, 1)) constructor(public x: string) { ->x : Symbol(x, Decl(declFileConstructors_0.ts, 29, 16)) +>x : Symbol(ConstructorWithPublicParameterProperty.x, Decl(declFileConstructors_0.ts, 29, 16)) } } @@ -65,7 +65,7 @@ export class ConstructorWithPrivateParameterProperty { >ConstructorWithPrivateParameterProperty : Symbol(ConstructorWithPrivateParameterProperty, Decl(declFileConstructors_0.ts, 31, 1)) constructor(private x: string) { ->x : Symbol(x, Decl(declFileConstructors_0.ts, 34, 16)) +>x : Symbol(ConstructorWithPrivateParameterProperty.x, Decl(declFileConstructors_0.ts, 34, 16)) } } @@ -73,7 +73,7 @@ export class ConstructorWithOptionalParameterProperty { >ConstructorWithOptionalParameterProperty : Symbol(ConstructorWithOptionalParameterProperty, Decl(declFileConstructors_0.ts, 36, 1)) constructor(public x?: string) { ->x : Symbol(x, Decl(declFileConstructors_0.ts, 39, 16)) +>x : Symbol(ConstructorWithOptionalParameterProperty.x, Decl(declFileConstructors_0.ts, 39, 16)) } } @@ -81,7 +81,7 @@ export class ConstructorWithParameterInitializer { >ConstructorWithParameterInitializer : Symbol(ConstructorWithParameterInitializer, Decl(declFileConstructors_0.ts, 41, 1)) constructor(public x = "hello") { ->x : Symbol(x, Decl(declFileConstructors_0.ts, 44, 16)) +>x : Symbol(ConstructorWithParameterInitializer.x, Decl(declFileConstructors_0.ts, 44, 16)) } } @@ -143,7 +143,7 @@ class GlobalConstructorWithPublicParameterProperty { >GlobalConstructorWithPublicParameterProperty : Symbol(GlobalConstructorWithPublicParameterProperty, Decl(declFileConstructors_1.ts, 25, 1)) constructor(public x: string) { ->x : Symbol(x, Decl(declFileConstructors_1.ts, 28, 16)) +>x : Symbol(GlobalConstructorWithPublicParameterProperty.x, Decl(declFileConstructors_1.ts, 28, 16)) } } @@ -151,7 +151,7 @@ class GlobalConstructorWithPrivateParameterProperty { >GlobalConstructorWithPrivateParameterProperty : Symbol(GlobalConstructorWithPrivateParameterProperty, Decl(declFileConstructors_1.ts, 30, 1)) constructor(private x: string) { ->x : Symbol(x, Decl(declFileConstructors_1.ts, 33, 16)) +>x : Symbol(GlobalConstructorWithPrivateParameterProperty.x, Decl(declFileConstructors_1.ts, 33, 16)) } } @@ -159,7 +159,7 @@ class GlobalConstructorWithOptionalParameterProperty { >GlobalConstructorWithOptionalParameterProperty : Symbol(GlobalConstructorWithOptionalParameterProperty, Decl(declFileConstructors_1.ts, 35, 1)) constructor(public x?: string) { ->x : Symbol(x, Decl(declFileConstructors_1.ts, 38, 16)) +>x : Symbol(GlobalConstructorWithOptionalParameterProperty.x, Decl(declFileConstructors_1.ts, 38, 16)) } } @@ -167,6 +167,6 @@ class GlobalConstructorWithParameterInitializer { >GlobalConstructorWithParameterInitializer : Symbol(GlobalConstructorWithParameterInitializer, Decl(declFileConstructors_1.ts, 40, 1)) constructor(public x = "hello") { ->x : Symbol(x, Decl(declFileConstructors_1.ts, 43, 16)) +>x : Symbol(GlobalConstructorWithParameterInitializer.x, Decl(declFileConstructors_1.ts, 43, 16)) } } diff --git a/tests/baselines/reference/declFileExportAssignmentImportInternalModule.symbols b/tests/baselines/reference/declFileExportAssignmentImportInternalModule.symbols index 5953d446478..dc5382cbef6 100644 --- a/tests/baselines/reference/declFileExportAssignmentImportInternalModule.symbols +++ b/tests/baselines/reference/declFileExportAssignmentImportInternalModule.symbols @@ -17,13 +17,13 @@ module m3 { >connectExport : Symbol(connectExport, Decl(declFileExportAssignmentImportInternalModule.ts, 4, 9)) use: (mod: connectModule) => connectExport; ->use : Symbol(use, Decl(declFileExportAssignmentImportInternalModule.ts, 5, 40)) +>use : Symbol(connectExport.use, Decl(declFileExportAssignmentImportInternalModule.ts, 5, 40)) >mod : Symbol(mod, Decl(declFileExportAssignmentImportInternalModule.ts, 6, 18)) >connectModule : Symbol(connectModule, Decl(declFileExportAssignmentImportInternalModule.ts, 1, 22)) >connectExport : Symbol(connectExport, Decl(declFileExportAssignmentImportInternalModule.ts, 4, 9)) listen: (port: number) => void; ->listen : Symbol(listen, Decl(declFileExportAssignmentImportInternalModule.ts, 6, 55)) +>listen : Symbol(connectExport.listen, Decl(declFileExportAssignmentImportInternalModule.ts, 6, 55)) >port : Symbol(port, Decl(declFileExportAssignmentImportInternalModule.ts, 7, 21)) } diff --git a/tests/baselines/reference/declFileExportAssignmentOfGenericInterface.symbols b/tests/baselines/reference/declFileExportAssignmentOfGenericInterface.symbols index d8801ff3fe3..34b1cbff341 100644 --- a/tests/baselines/reference/declFileExportAssignmentOfGenericInterface.symbols +++ b/tests/baselines/reference/declFileExportAssignmentOfGenericInterface.symbols @@ -19,7 +19,7 @@ interface Foo { >T : Symbol(T, Decl(declFileExportAssignmentOfGenericInterface_0.ts, 1, 14)) a: string; ->a : Symbol(a, Decl(declFileExportAssignmentOfGenericInterface_0.ts, 1, 18)) +>a : Symbol(Foo.a, Decl(declFileExportAssignmentOfGenericInterface_0.ts, 1, 18)) } export = Foo; >Foo : Symbol(Foo, Decl(declFileExportAssignmentOfGenericInterface_0.ts, 0, 0)) diff --git a/tests/baselines/reference/declFileForClassWithMultipleBaseClasses.symbols b/tests/baselines/reference/declFileForClassWithMultipleBaseClasses.symbols index e20542996b2..92c82d6ed41 100644 --- a/tests/baselines/reference/declFileForClassWithMultipleBaseClasses.symbols +++ b/tests/baselines/reference/declFileForClassWithMultipleBaseClasses.symbols @@ -4,28 +4,28 @@ class A { >A : Symbol(A, Decl(declFileForClassWithMultipleBaseClasses.ts, 0, 0)) foo() { } ->foo : Symbol(foo, Decl(declFileForClassWithMultipleBaseClasses.ts, 1, 9)) +>foo : Symbol(A.foo, Decl(declFileForClassWithMultipleBaseClasses.ts, 1, 9)) } class B { >B : Symbol(B, Decl(declFileForClassWithMultipleBaseClasses.ts, 3, 1)) bar() { } ->bar : Symbol(bar, Decl(declFileForClassWithMultipleBaseClasses.ts, 5, 9)) +>bar : Symbol(B.bar, Decl(declFileForClassWithMultipleBaseClasses.ts, 5, 9)) } interface I { >I : Symbol(I, Decl(declFileForClassWithMultipleBaseClasses.ts, 7, 1), Decl(declFileForClassWithMultipleBaseClasses.ts, 23, 1)) baz(); ->baz : Symbol(baz, Decl(declFileForClassWithMultipleBaseClasses.ts, 9, 13)) +>baz : Symbol(I.baz, Decl(declFileForClassWithMultipleBaseClasses.ts, 9, 13)) } interface J { >J : Symbol(J, Decl(declFileForClassWithMultipleBaseClasses.ts, 11, 1)) bat(); ->bat : Symbol(bat, Decl(declFileForClassWithMultipleBaseClasses.ts, 13, 13)) +>bat : Symbol(J.bat, Decl(declFileForClassWithMultipleBaseClasses.ts, 13, 13)) } @@ -35,16 +35,16 @@ class D implements I, J { >J : Symbol(J, Decl(declFileForClassWithMultipleBaseClasses.ts, 11, 1)) baz() { } ->baz : Symbol(baz, Decl(declFileForClassWithMultipleBaseClasses.ts, 18, 25)) +>baz : Symbol(D.baz, Decl(declFileForClassWithMultipleBaseClasses.ts, 18, 25)) bat() { } ->bat : Symbol(bat, Decl(declFileForClassWithMultipleBaseClasses.ts, 19, 13)) +>bat : Symbol(D.bat, Decl(declFileForClassWithMultipleBaseClasses.ts, 19, 13)) foo() { } ->foo : Symbol(foo, Decl(declFileForClassWithMultipleBaseClasses.ts, 20, 13)) +>foo : Symbol(D.foo, Decl(declFileForClassWithMultipleBaseClasses.ts, 20, 13)) bar() { } ->bar : Symbol(bar, Decl(declFileForClassWithMultipleBaseClasses.ts, 21, 13)) +>bar : Symbol(D.bar, Decl(declFileForClassWithMultipleBaseClasses.ts, 21, 13)) } interface I extends A, B { diff --git a/tests/baselines/reference/declFileForClassWithPrivateOverloadedFunction.symbols b/tests/baselines/reference/declFileForClassWithPrivateOverloadedFunction.symbols index f28a8c2bfc7..69bf3db2cb3 100644 --- a/tests/baselines/reference/declFileForClassWithPrivateOverloadedFunction.symbols +++ b/tests/baselines/reference/declFileForClassWithPrivateOverloadedFunction.symbols @@ -4,14 +4,14 @@ class C { >C : Symbol(C, Decl(declFileForClassWithPrivateOverloadedFunction.ts, 0, 0)) private foo(x: number); ->foo : Symbol(foo, Decl(declFileForClassWithPrivateOverloadedFunction.ts, 1, 9), Decl(declFileForClassWithPrivateOverloadedFunction.ts, 2, 27), Decl(declFileForClassWithPrivateOverloadedFunction.ts, 3, 27)) +>foo : Symbol(C.foo, Decl(declFileForClassWithPrivateOverloadedFunction.ts, 1, 9), Decl(declFileForClassWithPrivateOverloadedFunction.ts, 2, 27), Decl(declFileForClassWithPrivateOverloadedFunction.ts, 3, 27)) >x : Symbol(x, Decl(declFileForClassWithPrivateOverloadedFunction.ts, 2, 16)) private foo(x: string); ->foo : Symbol(foo, Decl(declFileForClassWithPrivateOverloadedFunction.ts, 1, 9), Decl(declFileForClassWithPrivateOverloadedFunction.ts, 2, 27), Decl(declFileForClassWithPrivateOverloadedFunction.ts, 3, 27)) +>foo : Symbol(C.foo, Decl(declFileForClassWithPrivateOverloadedFunction.ts, 1, 9), Decl(declFileForClassWithPrivateOverloadedFunction.ts, 2, 27), Decl(declFileForClassWithPrivateOverloadedFunction.ts, 3, 27)) >x : Symbol(x, Decl(declFileForClassWithPrivateOverloadedFunction.ts, 3, 16)) private foo(x: any) { } ->foo : Symbol(foo, Decl(declFileForClassWithPrivateOverloadedFunction.ts, 1, 9), Decl(declFileForClassWithPrivateOverloadedFunction.ts, 2, 27), Decl(declFileForClassWithPrivateOverloadedFunction.ts, 3, 27)) +>foo : Symbol(C.foo, Decl(declFileForClassWithPrivateOverloadedFunction.ts, 1, 9), Decl(declFileForClassWithPrivateOverloadedFunction.ts, 2, 27), Decl(declFileForClassWithPrivateOverloadedFunction.ts, 3, 27)) >x : Symbol(x, Decl(declFileForClassWithPrivateOverloadedFunction.ts, 4, 16)) } diff --git a/tests/baselines/reference/declFileForInterfaceWithOptionalFunction.symbols b/tests/baselines/reference/declFileForInterfaceWithOptionalFunction.symbols index bcec395c80d..a6a3e272c94 100644 --- a/tests/baselines/reference/declFileForInterfaceWithOptionalFunction.symbols +++ b/tests/baselines/reference/declFileForInterfaceWithOptionalFunction.symbols @@ -4,10 +4,10 @@ interface I { >I : Symbol(I, Decl(declFileForInterfaceWithOptionalFunction.ts, 0, 0)) foo? (x?); ->foo : Symbol(foo, Decl(declFileForInterfaceWithOptionalFunction.ts, 1, 13)) +>foo : Symbol(I.foo, Decl(declFileForInterfaceWithOptionalFunction.ts, 1, 13)) >x : Symbol(x, Decl(declFileForInterfaceWithOptionalFunction.ts, 2, 10)) foo2? (x?: number): number; ->foo2 : Symbol(foo2, Decl(declFileForInterfaceWithOptionalFunction.ts, 2, 14)) +>foo2 : Symbol(I.foo2, Decl(declFileForInterfaceWithOptionalFunction.ts, 2, 14)) >x : Symbol(x, Decl(declFileForInterfaceWithOptionalFunction.ts, 3, 11)) } diff --git a/tests/baselines/reference/declFileForInterfaceWithRestParams.symbols b/tests/baselines/reference/declFileForInterfaceWithRestParams.symbols index 9a0fb4a71da..bccb096eb6c 100644 --- a/tests/baselines/reference/declFileForInterfaceWithRestParams.symbols +++ b/tests/baselines/reference/declFileForInterfaceWithRestParams.symbols @@ -4,18 +4,18 @@ interface I { >I : Symbol(I, Decl(declFileForInterfaceWithRestParams.ts, 0, 0)) foo(...x): typeof x; ->foo : Symbol(foo, Decl(declFileForInterfaceWithRestParams.ts, 1, 13)) +>foo : Symbol(I.foo, Decl(declFileForInterfaceWithRestParams.ts, 1, 13)) >x : Symbol(x, Decl(declFileForInterfaceWithRestParams.ts, 2, 8)) >x : Symbol(x, Decl(declFileForInterfaceWithRestParams.ts, 2, 8)) foo2(a: number, ...x): typeof x; ->foo2 : Symbol(foo2, Decl(declFileForInterfaceWithRestParams.ts, 2, 24)) +>foo2 : Symbol(I.foo2, Decl(declFileForInterfaceWithRestParams.ts, 2, 24)) >a : Symbol(a, Decl(declFileForInterfaceWithRestParams.ts, 3, 9)) >x : Symbol(x, Decl(declFileForInterfaceWithRestParams.ts, 3, 19)) >x : Symbol(x, Decl(declFileForInterfaceWithRestParams.ts, 3, 19)) foo3(b: string, ...x: string[]): typeof x; ->foo3 : Symbol(foo3, Decl(declFileForInterfaceWithRestParams.ts, 3, 36)) +>foo3 : Symbol(I.foo3, Decl(declFileForInterfaceWithRestParams.ts, 3, 36)) >b : Symbol(b, Decl(declFileForInterfaceWithRestParams.ts, 4, 9)) >x : Symbol(x, Decl(declFileForInterfaceWithRestParams.ts, 4, 19)) >x : Symbol(x, Decl(declFileForInterfaceWithRestParams.ts, 4, 19)) diff --git a/tests/baselines/reference/declFileForTypeParameters.symbols b/tests/baselines/reference/declFileForTypeParameters.symbols index 41c567d89df..8838c3cdd05 100644 --- a/tests/baselines/reference/declFileForTypeParameters.symbols +++ b/tests/baselines/reference/declFileForTypeParameters.symbols @@ -5,18 +5,18 @@ class C { >T : Symbol(T, Decl(declFileForTypeParameters.ts, 1, 8)) x: T; ->x : Symbol(x, Decl(declFileForTypeParameters.ts, 1, 12)) +>x : Symbol(C.x, Decl(declFileForTypeParameters.ts, 1, 12)) >T : Symbol(T, Decl(declFileForTypeParameters.ts, 1, 8)) foo(a: T): T { ->foo : Symbol(foo, Decl(declFileForTypeParameters.ts, 2, 9)) +>foo : Symbol(C.foo, Decl(declFileForTypeParameters.ts, 2, 9)) >a : Symbol(a, Decl(declFileForTypeParameters.ts, 3, 8)) >T : Symbol(T, Decl(declFileForTypeParameters.ts, 1, 8)) >T : Symbol(T, Decl(declFileForTypeParameters.ts, 1, 8)) return this.x; ->this.x : Symbol(x, Decl(declFileForTypeParameters.ts, 1, 12)) +>this.x : Symbol(C.x, Decl(declFileForTypeParameters.ts, 1, 12)) >this : Symbol(C, Decl(declFileForTypeParameters.ts, 0, 0)) ->x : Symbol(x, Decl(declFileForTypeParameters.ts, 1, 12)) +>x : Symbol(C.x, Decl(declFileForTypeParameters.ts, 1, 12)) } } diff --git a/tests/baselines/reference/declFileGenericClassWithGenericExtendedClass.symbols b/tests/baselines/reference/declFileGenericClassWithGenericExtendedClass.symbols index c732a6ad233..5d98c76ffa1 100644 --- a/tests/baselines/reference/declFileGenericClassWithGenericExtendedClass.symbols +++ b/tests/baselines/reference/declFileGenericClassWithGenericExtendedClass.symbols @@ -3,7 +3,7 @@ interface IFoo { >IFoo : Symbol(IFoo, Decl(declFileGenericClassWithGenericExtendedClass.ts, 0, 0)) baz: Baz; ->baz : Symbol(baz, Decl(declFileGenericClassWithGenericExtendedClass.ts, 0, 16)) +>baz : Symbol(IFoo.baz, Decl(declFileGenericClassWithGenericExtendedClass.ts, 0, 16)) >Baz : Symbol(Baz, Decl(declFileGenericClassWithGenericExtendedClass.ts, 7, 1)) } class Base { } @@ -21,7 +21,7 @@ interface IBar { >T : Symbol(T, Decl(declFileGenericClassWithGenericExtendedClass.ts, 5, 15)) derived: Derived; ->derived : Symbol(derived, Decl(declFileGenericClassWithGenericExtendedClass.ts, 5, 19)) +>derived : Symbol(IBar.derived, Decl(declFileGenericClassWithGenericExtendedClass.ts, 5, 19)) >Derived : Symbol(Derived, Decl(declFileGenericClassWithGenericExtendedClass.ts, 3, 17)) >T : Symbol(T, Decl(declFileGenericClassWithGenericExtendedClass.ts, 5, 15)) } @@ -31,7 +31,7 @@ class Baz implements IBar { >Baz : Symbol(Baz, Decl(declFileGenericClassWithGenericExtendedClass.ts, 7, 1)) derived: Derived; ->derived : Symbol(derived, Decl(declFileGenericClassWithGenericExtendedClass.ts, 8, 32)) +>derived : Symbol(Baz.derived, Decl(declFileGenericClassWithGenericExtendedClass.ts, 8, 32)) >Derived : Symbol(Derived, Decl(declFileGenericClassWithGenericExtendedClass.ts, 3, 17)) >Baz : Symbol(Baz, Decl(declFileGenericClassWithGenericExtendedClass.ts, 7, 1)) } diff --git a/tests/baselines/reference/declFileGenericType.symbols b/tests/baselines/reference/declFileGenericType.symbols index b98e0df59ac..608c1e20145 100644 --- a/tests/baselines/reference/declFileGenericType.symbols +++ b/tests/baselines/reference/declFileGenericType.symbols @@ -69,7 +69,7 @@ export module C { >T : Symbol(T, Decl(declFileGenericType.ts, 13, 19)) constructor(public val: T) { } ->val : Symbol(val, Decl(declFileGenericType.ts, 15, 20)) +>val : Symbol(D.val, Decl(declFileGenericType.ts, 15, 20)) >T : Symbol(T, Decl(declFileGenericType.ts, 13, 19)) } diff --git a/tests/baselines/reference/declFileGenericType2.symbols b/tests/baselines/reference/declFileGenericType2.symbols index fa1b63a2ac4..60ced2992d4 100644 --- a/tests/baselines/reference/declFileGenericType2.symbols +++ b/tests/baselines/reference/declFileGenericType2.symbols @@ -48,7 +48,7 @@ declare module templa.mvc.composite { >IModel : Symbol(IModel, Decl(declFileGenericType2.ts, 1, 27)) getControllers(): mvc.IController[]; ->getControllers : Symbol(getControllers, Decl(declFileGenericType2.ts, 14, 60)) +>getControllers : Symbol(ICompositeControllerModel.getControllers, Decl(declFileGenericType2.ts, 14, 60)) >mvc : Symbol(mvc, Decl(declFileGenericType2.ts, 1, 22), Decl(declFileGenericType2.ts, 5, 22), Decl(declFileGenericType2.ts, 9, 22), Decl(declFileGenericType2.ts, 13, 22)) >IController : Symbol(IController, Decl(declFileGenericType2.ts, 5, 27)) >mvc : Symbol(mvc, Decl(declFileGenericType2.ts, 1, 22), Decl(declFileGenericType2.ts, 5, 22), Decl(declFileGenericType2.ts, 9, 22), Decl(declFileGenericType2.ts, 13, 22)) @@ -125,7 +125,7 @@ module templa.dom.mvc.composite { >ModelType : Symbol(ModelType, Decl(declFileGenericType2.ts, 33, 52)) public _controllers: templa.mvc.IController[]; ->_controllers : Symbol(_controllers, Decl(declFileGenericType2.ts, 33, 179)) +>_controllers : Symbol(AbstractCompositeElementController._controllers, Decl(declFileGenericType2.ts, 33, 179)) >templa : Symbol(templa, Decl(declFileGenericType2.ts, 0, 0), Decl(declFileGenericType2.ts, 4, 1), Decl(declFileGenericType2.ts, 8, 1), Decl(declFileGenericType2.ts, 12, 1), Decl(declFileGenericType2.ts, 17, 1), Decl(declFileGenericType2.ts, 21, 1), Decl(declFileGenericType2.ts, 30, 1)) >mvc : Symbol(mvc, Decl(declFileGenericType2.ts, 1, 22), Decl(declFileGenericType2.ts, 5, 22), Decl(declFileGenericType2.ts, 9, 22), Decl(declFileGenericType2.ts, 13, 22)) >IController : Symbol(templa.mvc.IController, Decl(declFileGenericType2.ts, 5, 27)) @@ -138,9 +138,9 @@ module templa.dom.mvc.composite { >super : Symbol(AbstractElementController, Decl(declFileGenericType2.ts, 23, 23)) this._controllers = []; ->this._controllers : Symbol(_controllers, Decl(declFileGenericType2.ts, 33, 179)) +>this._controllers : Symbol(AbstractCompositeElementController._controllers, Decl(declFileGenericType2.ts, 33, 179)) >this : Symbol(AbstractCompositeElementController, Decl(declFileGenericType2.ts, 32, 33)) ->_controllers : Symbol(_controllers, Decl(declFileGenericType2.ts, 33, 179)) +>_controllers : Symbol(AbstractCompositeElementController._controllers, Decl(declFileGenericType2.ts, 33, 179)) } } } diff --git a/tests/baselines/reference/declFileImportModuleWithExportAssignment.symbols b/tests/baselines/reference/declFileImportModuleWithExportAssignment.symbols index a33e0fef758..1681dfa2782 100644 --- a/tests/baselines/reference/declFileImportModuleWithExportAssignment.symbols +++ b/tests/baselines/reference/declFileImportModuleWithExportAssignment.symbols @@ -29,13 +29,13 @@ module m2 { >connectExport : Symbol(connectExport, Decl(declFileImportModuleWithExportAssignment_0.ts, 4, 5)) use: (mod: connectModule) => connectExport; ->use : Symbol(use, Decl(declFileImportModuleWithExportAssignment_0.ts, 5, 36)) +>use : Symbol(connectExport.use, Decl(declFileImportModuleWithExportAssignment_0.ts, 5, 36)) >mod : Symbol(mod, Decl(declFileImportModuleWithExportAssignment_0.ts, 6, 14)) >connectModule : Symbol(connectModule, Decl(declFileImportModuleWithExportAssignment_0.ts, 1, 11)) >connectExport : Symbol(connectExport, Decl(declFileImportModuleWithExportAssignment_0.ts, 4, 5)) listen: (port: number) => void; ->listen : Symbol(listen, Decl(declFileImportModuleWithExportAssignment_0.ts, 6, 51)) +>listen : Symbol(connectExport.listen, Decl(declFileImportModuleWithExportAssignment_0.ts, 6, 51)) >port : Symbol(port, Decl(declFileImportModuleWithExportAssignment_0.ts, 7, 17)) } diff --git a/tests/baselines/reference/declFileMethods.symbols b/tests/baselines/reference/declFileMethods.symbols index 845f3044dae..723065c62e4 100644 --- a/tests/baselines/reference/declFileMethods.symbols +++ b/tests/baselines/reference/declFileMethods.symbols @@ -5,11 +5,11 @@ export class c1 { /** This comment should appear for foo*/ public foo() { ->foo : Symbol(foo, Decl(declFileMethods_0.ts, 1, 17)) +>foo : Symbol(c1.foo, Decl(declFileMethods_0.ts, 1, 17)) } /** This is comment for function signature*/ public fooWithParameters(/** this is comment about a*/a: string, ->fooWithParameters : Symbol(fooWithParameters, Decl(declFileMethods_0.ts, 4, 5)) +>fooWithParameters : Symbol(c1.fooWithParameters, Decl(declFileMethods_0.ts, 4, 5)) >a : Symbol(a, Decl(declFileMethods_0.ts, 6, 29)) /** this is comment for b*/ @@ -21,7 +21,7 @@ export class c1 { >a : Symbol(a, Decl(declFileMethods_0.ts, 6, 29)) } public fooWithRestParameters(a: string, ...rests: string[]) { ->fooWithRestParameters : Symbol(fooWithRestParameters, Decl(declFileMethods_0.ts, 10, 5)) +>fooWithRestParameters : Symbol(c1.fooWithRestParameters, Decl(declFileMethods_0.ts, 10, 5)) >a : Symbol(a, Decl(declFileMethods_0.ts, 11, 33)) >rests : Symbol(rests, Decl(declFileMethods_0.ts, 11, 43)) @@ -33,15 +33,15 @@ export class c1 { } public fooWithOverloads(a: string): string; ->fooWithOverloads : Symbol(fooWithOverloads, Decl(declFileMethods_0.ts, 13, 5), Decl(declFileMethods_0.ts, 15, 47), Decl(declFileMethods_0.ts, 16, 47)) +>fooWithOverloads : Symbol(c1.fooWithOverloads, Decl(declFileMethods_0.ts, 13, 5), Decl(declFileMethods_0.ts, 15, 47), Decl(declFileMethods_0.ts, 16, 47)) >a : Symbol(a, Decl(declFileMethods_0.ts, 15, 28)) public fooWithOverloads(a: number): number; ->fooWithOverloads : Symbol(fooWithOverloads, Decl(declFileMethods_0.ts, 13, 5), Decl(declFileMethods_0.ts, 15, 47), Decl(declFileMethods_0.ts, 16, 47)) +>fooWithOverloads : Symbol(c1.fooWithOverloads, Decl(declFileMethods_0.ts, 13, 5), Decl(declFileMethods_0.ts, 15, 47), Decl(declFileMethods_0.ts, 16, 47)) >a : Symbol(a, Decl(declFileMethods_0.ts, 16, 28)) public fooWithOverloads(a: any): any { ->fooWithOverloads : Symbol(fooWithOverloads, Decl(declFileMethods_0.ts, 13, 5), Decl(declFileMethods_0.ts, 15, 47), Decl(declFileMethods_0.ts, 16, 47)) +>fooWithOverloads : Symbol(c1.fooWithOverloads, Decl(declFileMethods_0.ts, 13, 5), Decl(declFileMethods_0.ts, 15, 47), Decl(declFileMethods_0.ts, 16, 47)) >a : Symbol(a, Decl(declFileMethods_0.ts, 17, 28)) return a; @@ -51,11 +51,11 @@ export class c1 { /** This comment should appear for privateFoo*/ private privateFoo() { ->privateFoo : Symbol(privateFoo, Decl(declFileMethods_0.ts, 19, 5)) +>privateFoo : Symbol(c1.privateFoo, Decl(declFileMethods_0.ts, 19, 5)) } /** This is comment for function signature*/ private privateFooWithParameters(/** this is comment about a*/a: string, ->privateFooWithParameters : Symbol(privateFooWithParameters, Decl(declFileMethods_0.ts, 24, 5)) +>privateFooWithParameters : Symbol(c1.privateFooWithParameters, Decl(declFileMethods_0.ts, 24, 5)) >a : Symbol(a, Decl(declFileMethods_0.ts, 26, 37)) /** this is comment for b*/ @@ -67,7 +67,7 @@ export class c1 { >a : Symbol(a, Decl(declFileMethods_0.ts, 26, 37)) } private privateFooWithRestParameters(a: string, ...rests: string[]) { ->privateFooWithRestParameters : Symbol(privateFooWithRestParameters, Decl(declFileMethods_0.ts, 30, 5)) +>privateFooWithRestParameters : Symbol(c1.privateFooWithRestParameters, Decl(declFileMethods_0.ts, 30, 5)) >a : Symbol(a, Decl(declFileMethods_0.ts, 31, 41)) >rests : Symbol(rests, Decl(declFileMethods_0.ts, 31, 51)) @@ -78,15 +78,15 @@ export class c1 { >join : Symbol(Array.join, Decl(lib.d.ts, --, --)) } private privateFooWithOverloads(a: string): string; ->privateFooWithOverloads : Symbol(privateFooWithOverloads, Decl(declFileMethods_0.ts, 33, 5), Decl(declFileMethods_0.ts, 34, 55), Decl(declFileMethods_0.ts, 35, 55)) +>privateFooWithOverloads : Symbol(c1.privateFooWithOverloads, Decl(declFileMethods_0.ts, 33, 5), Decl(declFileMethods_0.ts, 34, 55), Decl(declFileMethods_0.ts, 35, 55)) >a : Symbol(a, Decl(declFileMethods_0.ts, 34, 36)) private privateFooWithOverloads(a: number): number; ->privateFooWithOverloads : Symbol(privateFooWithOverloads, Decl(declFileMethods_0.ts, 33, 5), Decl(declFileMethods_0.ts, 34, 55), Decl(declFileMethods_0.ts, 35, 55)) +>privateFooWithOverloads : Symbol(c1.privateFooWithOverloads, Decl(declFileMethods_0.ts, 33, 5), Decl(declFileMethods_0.ts, 34, 55), Decl(declFileMethods_0.ts, 35, 55)) >a : Symbol(a, Decl(declFileMethods_0.ts, 35, 36)) private privateFooWithOverloads(a: any): any { ->privateFooWithOverloads : Symbol(privateFooWithOverloads, Decl(declFileMethods_0.ts, 33, 5), Decl(declFileMethods_0.ts, 34, 55), Decl(declFileMethods_0.ts, 35, 55)) +>privateFooWithOverloads : Symbol(c1.privateFooWithOverloads, Decl(declFileMethods_0.ts, 33, 5), Decl(declFileMethods_0.ts, 34, 55), Decl(declFileMethods_0.ts, 35, 55)) >a : Symbol(a, Decl(declFileMethods_0.ts, 36, 36)) return a; @@ -189,11 +189,11 @@ export interface I1 { /** This comment should appear for foo*/ foo(): string; ->foo : Symbol(foo, Decl(declFileMethods_0.ts, 79, 21)) +>foo : Symbol(I1.foo, Decl(declFileMethods_0.ts, 79, 21)) /** This is comment for function signature*/ fooWithParameters(/** this is comment about a*/a: string, ->fooWithParameters : Symbol(fooWithParameters, Decl(declFileMethods_0.ts, 81, 18)) +>fooWithParameters : Symbol(I1.fooWithParameters, Decl(declFileMethods_0.ts, 81, 18)) >a : Symbol(a, Decl(declFileMethods_0.ts, 84, 22)) /** this is comment for b*/ @@ -201,16 +201,16 @@ export interface I1 { >b : Symbol(b, Decl(declFileMethods_0.ts, 84, 61)) fooWithRestParameters(a: string, ...rests: string[]): string; ->fooWithRestParameters : Symbol(fooWithRestParameters, Decl(declFileMethods_0.ts, 86, 25)) +>fooWithRestParameters : Symbol(I1.fooWithRestParameters, Decl(declFileMethods_0.ts, 86, 25)) >a : Symbol(a, Decl(declFileMethods_0.ts, 88, 26)) >rests : Symbol(rests, Decl(declFileMethods_0.ts, 88, 36)) fooWithOverloads(a: string): string; ->fooWithOverloads : Symbol(fooWithOverloads, Decl(declFileMethods_0.ts, 88, 65), Decl(declFileMethods_0.ts, 90, 40)) +>fooWithOverloads : Symbol(I1.fooWithOverloads, Decl(declFileMethods_0.ts, 88, 65), Decl(declFileMethods_0.ts, 90, 40)) >a : Symbol(a, Decl(declFileMethods_0.ts, 90, 21)) fooWithOverloads(a: number): number; ->fooWithOverloads : Symbol(fooWithOverloads, Decl(declFileMethods_0.ts, 88, 65), Decl(declFileMethods_0.ts, 90, 40)) +>fooWithOverloads : Symbol(I1.fooWithOverloads, Decl(declFileMethods_0.ts, 88, 65), Decl(declFileMethods_0.ts, 90, 40)) >a : Symbol(a, Decl(declFileMethods_0.ts, 91, 21)) } @@ -220,11 +220,11 @@ class c2 { /** This comment should appear for foo*/ public foo() { ->foo : Symbol(foo, Decl(declFileMethods_1.ts, 0, 10)) +>foo : Symbol(c2.foo, Decl(declFileMethods_1.ts, 0, 10)) } /** This is comment for function signature*/ public fooWithParameters(/** this is comment about a*/a: string, ->fooWithParameters : Symbol(fooWithParameters, Decl(declFileMethods_1.ts, 3, 5)) +>fooWithParameters : Symbol(c2.fooWithParameters, Decl(declFileMethods_1.ts, 3, 5)) >a : Symbol(a, Decl(declFileMethods_1.ts, 5, 29)) /** this is comment for b*/ @@ -236,7 +236,7 @@ class c2 { >a : Symbol(a, Decl(declFileMethods_1.ts, 5, 29)) } public fooWithRestParameters(a: string, ...rests: string[]) { ->fooWithRestParameters : Symbol(fooWithRestParameters, Decl(declFileMethods_1.ts, 9, 5)) +>fooWithRestParameters : Symbol(c2.fooWithRestParameters, Decl(declFileMethods_1.ts, 9, 5)) >a : Symbol(a, Decl(declFileMethods_1.ts, 10, 33)) >rests : Symbol(rests, Decl(declFileMethods_1.ts, 10, 43)) @@ -248,15 +248,15 @@ class c2 { } public fooWithOverloads(a: string): string; ->fooWithOverloads : Symbol(fooWithOverloads, Decl(declFileMethods_1.ts, 12, 5), Decl(declFileMethods_1.ts, 14, 47), Decl(declFileMethods_1.ts, 15, 47)) +>fooWithOverloads : Symbol(c2.fooWithOverloads, Decl(declFileMethods_1.ts, 12, 5), Decl(declFileMethods_1.ts, 14, 47), Decl(declFileMethods_1.ts, 15, 47)) >a : Symbol(a, Decl(declFileMethods_1.ts, 14, 28)) public fooWithOverloads(a: number): number; ->fooWithOverloads : Symbol(fooWithOverloads, Decl(declFileMethods_1.ts, 12, 5), Decl(declFileMethods_1.ts, 14, 47), Decl(declFileMethods_1.ts, 15, 47)) +>fooWithOverloads : Symbol(c2.fooWithOverloads, Decl(declFileMethods_1.ts, 12, 5), Decl(declFileMethods_1.ts, 14, 47), Decl(declFileMethods_1.ts, 15, 47)) >a : Symbol(a, Decl(declFileMethods_1.ts, 15, 28)) public fooWithOverloads(a: any): any { ->fooWithOverloads : Symbol(fooWithOverloads, Decl(declFileMethods_1.ts, 12, 5), Decl(declFileMethods_1.ts, 14, 47), Decl(declFileMethods_1.ts, 15, 47)) +>fooWithOverloads : Symbol(c2.fooWithOverloads, Decl(declFileMethods_1.ts, 12, 5), Decl(declFileMethods_1.ts, 14, 47), Decl(declFileMethods_1.ts, 15, 47)) >a : Symbol(a, Decl(declFileMethods_1.ts, 16, 28)) return a; @@ -266,11 +266,11 @@ class c2 { /** This comment should appear for privateFoo*/ private privateFoo() { ->privateFoo : Symbol(privateFoo, Decl(declFileMethods_1.ts, 18, 5)) +>privateFoo : Symbol(c2.privateFoo, Decl(declFileMethods_1.ts, 18, 5)) } /** This is comment for function signature*/ private privateFooWithParameters(/** this is comment about a*/a: string, ->privateFooWithParameters : Symbol(privateFooWithParameters, Decl(declFileMethods_1.ts, 23, 5)) +>privateFooWithParameters : Symbol(c2.privateFooWithParameters, Decl(declFileMethods_1.ts, 23, 5)) >a : Symbol(a, Decl(declFileMethods_1.ts, 25, 37)) /** this is comment for b*/ @@ -282,7 +282,7 @@ class c2 { >a : Symbol(a, Decl(declFileMethods_1.ts, 25, 37)) } private privateFooWithRestParameters(a: string, ...rests: string[]) { ->privateFooWithRestParameters : Symbol(privateFooWithRestParameters, Decl(declFileMethods_1.ts, 29, 5)) +>privateFooWithRestParameters : Symbol(c2.privateFooWithRestParameters, Decl(declFileMethods_1.ts, 29, 5)) >a : Symbol(a, Decl(declFileMethods_1.ts, 30, 41)) >rests : Symbol(rests, Decl(declFileMethods_1.ts, 30, 51)) @@ -293,15 +293,15 @@ class c2 { >join : Symbol(Array.join, Decl(lib.d.ts, --, --)) } private privateFooWithOverloads(a: string): string; ->privateFooWithOverloads : Symbol(privateFooWithOverloads, Decl(declFileMethods_1.ts, 32, 5), Decl(declFileMethods_1.ts, 33, 55), Decl(declFileMethods_1.ts, 34, 55)) +>privateFooWithOverloads : Symbol(c2.privateFooWithOverloads, Decl(declFileMethods_1.ts, 32, 5), Decl(declFileMethods_1.ts, 33, 55), Decl(declFileMethods_1.ts, 34, 55)) >a : Symbol(a, Decl(declFileMethods_1.ts, 33, 36)) private privateFooWithOverloads(a: number): number; ->privateFooWithOverloads : Symbol(privateFooWithOverloads, Decl(declFileMethods_1.ts, 32, 5), Decl(declFileMethods_1.ts, 33, 55), Decl(declFileMethods_1.ts, 34, 55)) +>privateFooWithOverloads : Symbol(c2.privateFooWithOverloads, Decl(declFileMethods_1.ts, 32, 5), Decl(declFileMethods_1.ts, 33, 55), Decl(declFileMethods_1.ts, 34, 55)) >a : Symbol(a, Decl(declFileMethods_1.ts, 34, 36)) private privateFooWithOverloads(a: any): any { ->privateFooWithOverloads : Symbol(privateFooWithOverloads, Decl(declFileMethods_1.ts, 32, 5), Decl(declFileMethods_1.ts, 33, 55), Decl(declFileMethods_1.ts, 34, 55)) +>privateFooWithOverloads : Symbol(c2.privateFooWithOverloads, Decl(declFileMethods_1.ts, 32, 5), Decl(declFileMethods_1.ts, 33, 55), Decl(declFileMethods_1.ts, 34, 55)) >a : Symbol(a, Decl(declFileMethods_1.ts, 35, 36)) return a; @@ -404,11 +404,11 @@ interface I2 { /** This comment should appear for foo*/ foo(): string; ->foo : Symbol(foo, Decl(declFileMethods_1.ts, 78, 14)) +>foo : Symbol(I2.foo, Decl(declFileMethods_1.ts, 78, 14)) /** This is comment for function signature*/ fooWithParameters(/** this is comment about a*/a: string, ->fooWithParameters : Symbol(fooWithParameters, Decl(declFileMethods_1.ts, 80, 18)) +>fooWithParameters : Symbol(I2.fooWithParameters, Decl(declFileMethods_1.ts, 80, 18)) >a : Symbol(a, Decl(declFileMethods_1.ts, 83, 22)) /** this is comment for b*/ @@ -416,16 +416,16 @@ interface I2 { >b : Symbol(b, Decl(declFileMethods_1.ts, 83, 61)) fooWithRestParameters(a: string, ...rests: string[]): string; ->fooWithRestParameters : Symbol(fooWithRestParameters, Decl(declFileMethods_1.ts, 85, 25)) +>fooWithRestParameters : Symbol(I2.fooWithRestParameters, Decl(declFileMethods_1.ts, 85, 25)) >a : Symbol(a, Decl(declFileMethods_1.ts, 87, 26)) >rests : Symbol(rests, Decl(declFileMethods_1.ts, 87, 36)) fooWithOverloads(a: string): string; ->fooWithOverloads : Symbol(fooWithOverloads, Decl(declFileMethods_1.ts, 87, 65), Decl(declFileMethods_1.ts, 89, 40)) +>fooWithOverloads : Symbol(I2.fooWithOverloads, Decl(declFileMethods_1.ts, 87, 65), Decl(declFileMethods_1.ts, 89, 40)) >a : Symbol(a, Decl(declFileMethods_1.ts, 89, 21)) fooWithOverloads(a: number): number; ->fooWithOverloads : Symbol(fooWithOverloads, Decl(declFileMethods_1.ts, 87, 65), Decl(declFileMethods_1.ts, 89, 40)) +>fooWithOverloads : Symbol(I2.fooWithOverloads, Decl(declFileMethods_1.ts, 87, 65), Decl(declFileMethods_1.ts, 89, 40)) >a : Symbol(a, Decl(declFileMethods_1.ts, 90, 21)) } diff --git a/tests/baselines/reference/declFileOptionalInterfaceMethod.symbols b/tests/baselines/reference/declFileOptionalInterfaceMethod.symbols index 2bf0c640fe5..ff6af2fd101 100644 --- a/tests/baselines/reference/declFileOptionalInterfaceMethod.symbols +++ b/tests/baselines/reference/declFileOptionalInterfaceMethod.symbols @@ -3,7 +3,7 @@ interface X { >X : Symbol(X, Decl(declFileOptionalInterfaceMethod.ts, 0, 0)) f? (); ->f : Symbol(f, Decl(declFileOptionalInterfaceMethod.ts, 0, 13)) +>f : Symbol(X.f, Decl(declFileOptionalInterfaceMethod.ts, 0, 13)) >T : Symbol(T, Decl(declFileOptionalInterfaceMethod.ts, 1, 8)) } diff --git a/tests/baselines/reference/declFilePrivateMethodOverloads.symbols b/tests/baselines/reference/declFilePrivateMethodOverloads.symbols index becc01438c2..6471ee7f5e7 100644 --- a/tests/baselines/reference/declFilePrivateMethodOverloads.symbols +++ b/tests/baselines/reference/declFilePrivateMethodOverloads.symbols @@ -4,13 +4,13 @@ interface IContext { >IContext : Symbol(IContext, Decl(declFilePrivateMethodOverloads.ts, 0, 0)) someMethod(); ->someMethod : Symbol(someMethod, Decl(declFilePrivateMethodOverloads.ts, 1, 20)) +>someMethod : Symbol(IContext.someMethod, Decl(declFilePrivateMethodOverloads.ts, 1, 20)) } class c1 { >c1 : Symbol(c1, Decl(declFilePrivateMethodOverloads.ts, 3, 1)) private _forEachBindingContext(bindingContext: IContext, fn: (bindingContext: IContext) => void); ->_forEachBindingContext : Symbol(_forEachBindingContext, Decl(declFilePrivateMethodOverloads.ts, 4, 10), Decl(declFilePrivateMethodOverloads.ts, 5, 101), Decl(declFilePrivateMethodOverloads.ts, 6, 113)) +>_forEachBindingContext : Symbol(c1._forEachBindingContext, Decl(declFilePrivateMethodOverloads.ts, 4, 10), Decl(declFilePrivateMethodOverloads.ts, 5, 101), Decl(declFilePrivateMethodOverloads.ts, 6, 113)) >bindingContext : Symbol(bindingContext, Decl(declFilePrivateMethodOverloads.ts, 5, 35)) >IContext : Symbol(IContext, Decl(declFilePrivateMethodOverloads.ts, 0, 0)) >fn : Symbol(fn, Decl(declFilePrivateMethodOverloads.ts, 5, 60)) @@ -18,7 +18,7 @@ class c1 { >IContext : Symbol(IContext, Decl(declFilePrivateMethodOverloads.ts, 0, 0)) private _forEachBindingContext(bindingContextArray: Array, fn: (bindingContext: IContext) => void); ->_forEachBindingContext : Symbol(_forEachBindingContext, Decl(declFilePrivateMethodOverloads.ts, 4, 10), Decl(declFilePrivateMethodOverloads.ts, 5, 101), Decl(declFilePrivateMethodOverloads.ts, 6, 113)) +>_forEachBindingContext : Symbol(c1._forEachBindingContext, Decl(declFilePrivateMethodOverloads.ts, 4, 10), Decl(declFilePrivateMethodOverloads.ts, 5, 101), Decl(declFilePrivateMethodOverloads.ts, 6, 113)) >bindingContextArray : Symbol(bindingContextArray, Decl(declFilePrivateMethodOverloads.ts, 6, 35)) >Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >IContext : Symbol(IContext, Decl(declFilePrivateMethodOverloads.ts, 0, 0)) @@ -27,7 +27,7 @@ class c1 { >IContext : Symbol(IContext, Decl(declFilePrivateMethodOverloads.ts, 0, 0)) private _forEachBindingContext(context, fn: (bindingContext: IContext) => void): void { ->_forEachBindingContext : Symbol(_forEachBindingContext, Decl(declFilePrivateMethodOverloads.ts, 4, 10), Decl(declFilePrivateMethodOverloads.ts, 5, 101), Decl(declFilePrivateMethodOverloads.ts, 6, 113)) +>_forEachBindingContext : Symbol(c1._forEachBindingContext, Decl(declFilePrivateMethodOverloads.ts, 4, 10), Decl(declFilePrivateMethodOverloads.ts, 5, 101), Decl(declFilePrivateMethodOverloads.ts, 6, 113)) >context : Symbol(context, Decl(declFilePrivateMethodOverloads.ts, 7, 35)) >fn : Symbol(fn, Decl(declFilePrivateMethodOverloads.ts, 7, 43)) >bindingContext : Symbol(bindingContext, Decl(declFilePrivateMethodOverloads.ts, 7, 49)) @@ -37,12 +37,12 @@ class c1 { } private overloadWithArityDifference(bindingContext: IContext); ->overloadWithArityDifference : Symbol(overloadWithArityDifference, Decl(declFilePrivateMethodOverloads.ts, 9, 5), Decl(declFilePrivateMethodOverloads.ts, 11, 66), Decl(declFilePrivateMethodOverloads.ts, 12, 118)) +>overloadWithArityDifference : Symbol(c1.overloadWithArityDifference, Decl(declFilePrivateMethodOverloads.ts, 9, 5), Decl(declFilePrivateMethodOverloads.ts, 11, 66), Decl(declFilePrivateMethodOverloads.ts, 12, 118)) >bindingContext : Symbol(bindingContext, Decl(declFilePrivateMethodOverloads.ts, 11, 40)) >IContext : Symbol(IContext, Decl(declFilePrivateMethodOverloads.ts, 0, 0)) private overloadWithArityDifference(bindingContextArray: Array, fn: (bindingContext: IContext) => void); ->overloadWithArityDifference : Symbol(overloadWithArityDifference, Decl(declFilePrivateMethodOverloads.ts, 9, 5), Decl(declFilePrivateMethodOverloads.ts, 11, 66), Decl(declFilePrivateMethodOverloads.ts, 12, 118)) +>overloadWithArityDifference : Symbol(c1.overloadWithArityDifference, Decl(declFilePrivateMethodOverloads.ts, 9, 5), Decl(declFilePrivateMethodOverloads.ts, 11, 66), Decl(declFilePrivateMethodOverloads.ts, 12, 118)) >bindingContextArray : Symbol(bindingContextArray, Decl(declFilePrivateMethodOverloads.ts, 12, 40)) >Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >IContext : Symbol(IContext, Decl(declFilePrivateMethodOverloads.ts, 0, 0)) @@ -51,7 +51,7 @@ class c1 { >IContext : Symbol(IContext, Decl(declFilePrivateMethodOverloads.ts, 0, 0)) private overloadWithArityDifference(context): void { ->overloadWithArityDifference : Symbol(overloadWithArityDifference, Decl(declFilePrivateMethodOverloads.ts, 9, 5), Decl(declFilePrivateMethodOverloads.ts, 11, 66), Decl(declFilePrivateMethodOverloads.ts, 12, 118)) +>overloadWithArityDifference : Symbol(c1.overloadWithArityDifference, Decl(declFilePrivateMethodOverloads.ts, 9, 5), Decl(declFilePrivateMethodOverloads.ts, 11, 66), Decl(declFilePrivateMethodOverloads.ts, 12, 118)) >context : Symbol(context, Decl(declFilePrivateMethodOverloads.ts, 13, 40)) // Function here @@ -61,16 +61,16 @@ declare class c2 { >c2 : Symbol(c2, Decl(declFilePrivateMethodOverloads.ts, 16, 1)) private overload1(context, fn); ->overload1 : Symbol(overload1, Decl(declFilePrivateMethodOverloads.ts, 17, 18)) +>overload1 : Symbol(c2.overload1, Decl(declFilePrivateMethodOverloads.ts, 17, 18)) >context : Symbol(context, Decl(declFilePrivateMethodOverloads.ts, 18, 22)) >fn : Symbol(fn, Decl(declFilePrivateMethodOverloads.ts, 18, 30)) private overload2(context); ->overload2 : Symbol(overload2, Decl(declFilePrivateMethodOverloads.ts, 18, 35), Decl(declFilePrivateMethodOverloads.ts, 20, 31)) +>overload2 : Symbol(c2.overload2, Decl(declFilePrivateMethodOverloads.ts, 18, 35), Decl(declFilePrivateMethodOverloads.ts, 20, 31)) >context : Symbol(context, Decl(declFilePrivateMethodOverloads.ts, 20, 22)) private overload2(context, fn); ->overload2 : Symbol(overload2, Decl(declFilePrivateMethodOverloads.ts, 18, 35), Decl(declFilePrivateMethodOverloads.ts, 20, 31)) +>overload2 : Symbol(c2.overload2, Decl(declFilePrivateMethodOverloads.ts, 18, 35), Decl(declFilePrivateMethodOverloads.ts, 20, 31)) >context : Symbol(context, Decl(declFilePrivateMethodOverloads.ts, 21, 22)) >fn : Symbol(fn, Decl(declFilePrivateMethodOverloads.ts, 21, 30)) } diff --git a/tests/baselines/reference/declFileTypeAnnotationParenType.symbols b/tests/baselines/reference/declFileTypeAnnotationParenType.symbols index bc5668b70bd..7186da48fd7 100644 --- a/tests/baselines/reference/declFileTypeAnnotationParenType.symbols +++ b/tests/baselines/reference/declFileTypeAnnotationParenType.symbols @@ -4,7 +4,7 @@ class c { >c : Symbol(c, Decl(declFileTypeAnnotationParenType.ts, 0, 0)) private p: string; ->p : Symbol(p, Decl(declFileTypeAnnotationParenType.ts, 1, 9)) +>p : Symbol(c.p, Decl(declFileTypeAnnotationParenType.ts, 1, 9)) } var x: (() => c)[] = [() => new c()]; diff --git a/tests/baselines/reference/declFileTypeAnnotationTypeAlias.symbols b/tests/baselines/reference/declFileTypeAnnotationTypeAlias.symbols index 27507817a77..d12902b6f19 100644 --- a/tests/baselines/reference/declFileTypeAnnotationTypeAlias.symbols +++ b/tests/baselines/reference/declFileTypeAnnotationTypeAlias.symbols @@ -40,7 +40,7 @@ interface Window { >Window : Symbol(Window, Decl(declFileTypeAnnotationTypeAlias.ts, 18, 1)) someMethod(); ->someMethod : Symbol(someMethod, Decl(declFileTypeAnnotationTypeAlias.ts, 20, 18)) +>someMethod : Symbol(Window.someMethod, Decl(declFileTypeAnnotationTypeAlias.ts, 20, 18)) } module M { diff --git a/tests/baselines/reference/declFileTypeAnnotationUnionType.symbols b/tests/baselines/reference/declFileTypeAnnotationUnionType.symbols index f57df197579..ac4884326eb 100644 --- a/tests/baselines/reference/declFileTypeAnnotationUnionType.symbols +++ b/tests/baselines/reference/declFileTypeAnnotationUnionType.symbols @@ -4,7 +4,7 @@ class c { >c : Symbol(c, Decl(declFileTypeAnnotationUnionType.ts, 0, 0)) private p: string; ->p : Symbol(p, Decl(declFileTypeAnnotationUnionType.ts, 1, 9)) +>p : Symbol(c.p, Decl(declFileTypeAnnotationUnionType.ts, 1, 9)) } module m { >m : Symbol(m, Decl(declFileTypeAnnotationUnionType.ts, 3, 1)) @@ -13,14 +13,14 @@ module m { >c : Symbol(c, Decl(declFileTypeAnnotationUnionType.ts, 4, 10)) private q: string; ->q : Symbol(q, Decl(declFileTypeAnnotationUnionType.ts, 5, 20)) +>q : Symbol(c.q, Decl(declFileTypeAnnotationUnionType.ts, 5, 20)) } export class g { >g : Symbol(g, Decl(declFileTypeAnnotationUnionType.ts, 7, 5)) >T : Symbol(T, Decl(declFileTypeAnnotationUnionType.ts, 8, 19)) private r: string; ->r : Symbol(r, Decl(declFileTypeAnnotationUnionType.ts, 8, 23)) +>r : Symbol(g.r, Decl(declFileTypeAnnotationUnionType.ts, 8, 23)) } } class g { @@ -28,7 +28,7 @@ class g { >T : Symbol(T, Decl(declFileTypeAnnotationUnionType.ts, 12, 8)) private s: string; ->s : Symbol(s, Decl(declFileTypeAnnotationUnionType.ts, 12, 12)) +>s : Symbol(g.s, Decl(declFileTypeAnnotationUnionType.ts, 12, 12)) } // Just the name diff --git a/tests/baselines/reference/declFileTypeofClass.symbols b/tests/baselines/reference/declFileTypeofClass.symbols index 26adfcc8ee4..0594edeef77 100644 --- a/tests/baselines/reference/declFileTypeofClass.symbols +++ b/tests/baselines/reference/declFileTypeofClass.symbols @@ -10,10 +10,10 @@ class c { >y : Symbol(c.y, Decl(declFileTypeofClass.ts, 2, 22)) private x3: string; ->x3 : Symbol(x3, Decl(declFileTypeofClass.ts, 3, 29)) +>x3 : Symbol(c.x3, Decl(declFileTypeofClass.ts, 3, 29)) public y3: number; ->y3 : Symbol(y3, Decl(declFileTypeofClass.ts, 4, 23)) +>y3 : Symbol(c.y3, Decl(declFileTypeofClass.ts, 4, 23)) } var x: c; diff --git a/tests/baselines/reference/declFileWithClassNameConflictingWithClassReferredByExtendsClause.symbols b/tests/baselines/reference/declFileWithClassNameConflictingWithClassReferredByExtendsClause.symbols index d2548af7c4f..dd591277cd3 100644 --- a/tests/baselines/reference/declFileWithClassNameConflictingWithClassReferredByExtendsClause.symbols +++ b/tests/baselines/reference/declFileWithClassNameConflictingWithClassReferredByExtendsClause.symbols @@ -9,7 +9,7 @@ declare module A.B.Base { >W : Symbol(W, Decl(declFileWithClassNameConflictingWithClassReferredByExtendsClause.ts, 1, 25)) id: number; ->id : Symbol(id, Decl(declFileWithClassNameConflictingWithClassReferredByExtendsClause.ts, 2, 20)) +>id : Symbol(W.id, Decl(declFileWithClassNameConflictingWithClassReferredByExtendsClause.ts, 2, 20)) } } module X.Y.base { @@ -28,7 +28,7 @@ module X.Y.base { >W : Symbol(A.B.Base.W, Decl(declFileWithClassNameConflictingWithClassReferredByExtendsClause.ts, 1, 25)) name: string; ->name : Symbol(name, Decl(declFileWithClassNameConflictingWithClassReferredByExtendsClause.ts, 8, 39)) +>name : Symbol(W.name, Decl(declFileWithClassNameConflictingWithClassReferredByExtendsClause.ts, 8, 39)) } } @@ -50,7 +50,7 @@ module X.Y.base.Z { >W : Symbol(W, Decl(declFileWithClassNameConflictingWithClassReferredByExtendsClause.ts, 6, 17)) value: boolean; ->value : Symbol(value, Decl(declFileWithClassNameConflictingWithClassReferredByExtendsClause.ts, 15, 47)) +>value : Symbol(W.value, Decl(declFileWithClassNameConflictingWithClassReferredByExtendsClause.ts, 15, 47)) } } diff --git a/tests/baselines/reference/declFileWithExtendsClauseThatHasItsContainerNameConflict.symbols b/tests/baselines/reference/declFileWithExtendsClauseThatHasItsContainerNameConflict.symbols index e5016ec9baa..552a4a44b35 100644 --- a/tests/baselines/reference/declFileWithExtendsClauseThatHasItsContainerNameConflict.symbols +++ b/tests/baselines/reference/declFileWithExtendsClauseThatHasItsContainerNameConflict.symbols @@ -18,7 +18,7 @@ module A.B { >EventManager : Symbol(EventManager, Decl(declFileWithExtendsClauseThatHasItsContainerNameConflict.ts, 6, 12)) id: number; ->id : Symbol(id, Decl(declFileWithExtendsClauseThatHasItsContainerNameConflict.ts, 7, 31)) +>id : Symbol(EventManager.id, Decl(declFileWithExtendsClauseThatHasItsContainerNameConflict.ts, 7, 31)) } } @@ -33,6 +33,6 @@ module A.B.C { >EventManager : Symbol(EventManager, Decl(declFileWithExtendsClauseThatHasItsContainerNameConflict.ts, 6, 12)) name: string; ->name : Symbol(name, Decl(declFileWithExtendsClauseThatHasItsContainerNameConflict.ts, 14, 51)) +>name : Symbol(ContextMenu.name, Decl(declFileWithExtendsClauseThatHasItsContainerNameConflict.ts, 14, 51)) } } diff --git a/tests/baselines/reference/declInput.symbols b/tests/baselines/reference/declInput.symbols index 90f075218c0..6faede31601 100644 --- a/tests/baselines/reference/declInput.symbols +++ b/tests/baselines/reference/declInput.symbols @@ -8,10 +8,10 @@ class bar { >bar : Symbol(bar, Decl(declInput.ts, 0, 0), Decl(declInput.ts, 2, 1)) public f() { return ''; } ->f : Symbol(f, Decl(declInput.ts, 4, 11)) +>f : Symbol(bar.f, Decl(declInput.ts, 4, 11)) public g() { return {a: null, b: undefined, c: void 4 }; } ->g : Symbol(g, Decl(declInput.ts, 5, 27)) +>g : Symbol(bar.g, Decl(declInput.ts, 5, 27)) >a : Symbol(a, Decl(declInput.ts, 6, 23)) >bar : Symbol(bar, Decl(declInput.ts, 0, 0), Decl(declInput.ts, 2, 1)) >b : Symbol(b, Decl(declInput.ts, 6, 36)) @@ -19,7 +19,7 @@ class bar { >c : Symbol(c, Decl(declInput.ts, 6, 50)) public h(x = 4, y = null, z = '') { x++; } ->h : Symbol(h, Decl(declInput.ts, 6, 65)) +>h : Symbol(bar.h, Decl(declInput.ts, 6, 65)) >x : Symbol(x, Decl(declInput.ts, 7, 11)) >y : Symbol(y, Decl(declInput.ts, 7, 17)) >z : Symbol(z, Decl(declInput.ts, 7, 27)) diff --git a/tests/baselines/reference/declInput3.symbols b/tests/baselines/reference/declInput3.symbols index 06f35db0164..c4097dd4b63 100644 --- a/tests/baselines/reference/declInput3.symbols +++ b/tests/baselines/reference/declInput3.symbols @@ -8,10 +8,10 @@ class bar { >bar : Symbol(bar, Decl(declInput3.ts, 2, 1)) public f() { return ''; } ->f : Symbol(f, Decl(declInput3.ts, 4, 11)) +>f : Symbol(bar.f, Decl(declInput3.ts, 4, 11)) public g() { return {a: null, b: undefined, c: void 4 }; } ->g : Symbol(g, Decl(declInput3.ts, 5, 27)) +>g : Symbol(bar.g, Decl(declInput3.ts, 5, 27)) >a : Symbol(a, Decl(declInput3.ts, 6, 23)) >bar : Symbol(bar, Decl(declInput3.ts, 2, 1)) >b : Symbol(b, Decl(declInput3.ts, 6, 36)) @@ -19,7 +19,7 @@ class bar { >c : Symbol(c, Decl(declInput3.ts, 6, 50)) public h(x = 4, y = null, z = '') { x++; } ->h : Symbol(h, Decl(declInput3.ts, 6, 65)) +>h : Symbol(bar.h, Decl(declInput3.ts, 6, 65)) >x : Symbol(x, Decl(declInput3.ts, 7, 11)) >y : Symbol(y, Decl(declInput3.ts, 7, 17)) >z : Symbol(z, Decl(declInput3.ts, 7, 27)) diff --git a/tests/baselines/reference/declInput4.symbols b/tests/baselines/reference/declInput4.symbols index 01af5987a7d..6420ad0916c 100644 --- a/tests/baselines/reference/declInput4.symbols +++ b/tests/baselines/reference/declInput4.symbols @@ -18,29 +18,29 @@ module M { >D : Symbol(D, Decl(declInput4.ts, 4, 19)) public m1: number; ->m1 : Symbol(m1, Decl(declInput4.ts, 5, 20)) +>m1 : Symbol(D.m1, Decl(declInput4.ts, 5, 20)) public m2: string; ->m2 : Symbol(m2, Decl(declInput4.ts, 6, 26)) +>m2 : Symbol(D.m2, Decl(declInput4.ts, 6, 26)) public m23: E; ->m23 : Symbol(m23, Decl(declInput4.ts, 7, 26)) +>m23 : Symbol(D.m23, Decl(declInput4.ts, 7, 26)) >E : Symbol(E, Decl(declInput4.ts, 1, 15)) public m24: I1; ->m24 : Symbol(m24, Decl(declInput4.ts, 8, 22)) +>m24 : Symbol(D.m24, Decl(declInput4.ts, 8, 22)) >I1 : Symbol(I1, Decl(declInput4.ts, 2, 21)) public m232(): E { return null;} ->m232 : Symbol(m232, Decl(declInput4.ts, 9, 23)) +>m232 : Symbol(D.m232, Decl(declInput4.ts, 9, 23)) >E : Symbol(E, Decl(declInput4.ts, 1, 15)) public m242(): I1 { return null; } ->m242 : Symbol(m242, Decl(declInput4.ts, 10, 40)) +>m242 : Symbol(D.m242, Decl(declInput4.ts, 10, 40)) >I1 : Symbol(I1, Decl(declInput4.ts, 2, 21)) public m26(i:I1) {} ->m26 : Symbol(m26, Decl(declInput4.ts, 11, 42)) +>m26 : Symbol(D.m26, Decl(declInput4.ts, 11, 42)) >i : Symbol(i, Decl(declInput4.ts, 12, 19)) >I1 : Symbol(I1, Decl(declInput4.ts, 2, 21)) } diff --git a/tests/baselines/reference/declarationEmitDefaultExportWithTempVarName.js b/tests/baselines/reference/declarationEmitDefaultExportWithTempVarName.js new file mode 100644 index 00000000000..a0c8ab59b97 --- /dev/null +++ b/tests/baselines/reference/declarationEmitDefaultExportWithTempVarName.js @@ -0,0 +1,19 @@ +//// [pi.ts] +export default 3.14159; + +//// [pi.js] +System.register([], function(exports_1, context_1) { + "use strict"; + var __moduleName = context_1 && context_1.id; + return { + setters:[], + execute: function() { + exports_1("default",3.14159); + } + } +}); + + +//// [pi.d.ts] +declare var _default: number; +export default _default; diff --git a/tests/baselines/reference/declarationEmitDefaultExportWithTempVarName.symbols b/tests/baselines/reference/declarationEmitDefaultExportWithTempVarName.symbols new file mode 100644 index 00000000000..a45ecb2e47e --- /dev/null +++ b/tests/baselines/reference/declarationEmitDefaultExportWithTempVarName.symbols @@ -0,0 +1,3 @@ +=== tests/cases/compiler/pi.ts === +export default 3.14159; +No type information for this code. \ No newline at end of file diff --git a/tests/baselines/reference/declarationEmitDefaultExportWithTempVarName.types b/tests/baselines/reference/declarationEmitDefaultExportWithTempVarName.types new file mode 100644 index 00000000000..a45ecb2e47e --- /dev/null +++ b/tests/baselines/reference/declarationEmitDefaultExportWithTempVarName.types @@ -0,0 +1,3 @@ +=== tests/cases/compiler/pi.ts === +export default 3.14159; +No type information for this code. \ No newline at end of file diff --git a/tests/baselines/reference/declarationEmitDefaultExportWithTempVarNameWithBundling.js b/tests/baselines/reference/declarationEmitDefaultExportWithTempVarNameWithBundling.js new file mode 100644 index 00000000000..adb081dc2a3 --- /dev/null +++ b/tests/baselines/reference/declarationEmitDefaultExportWithTempVarNameWithBundling.js @@ -0,0 +1,22 @@ +//// [pi.ts] + +export default 3.14159; + +//// [app.js] +System.register("pi", [], function(exports_1, context_1) { + "use strict"; + var __moduleName = context_1 && context_1.id; + return { + setters:[], + execute: function() { + exports_1("default",3.14159); + } + } +}); + + +//// [app.d.ts] +declare module "pi" { + var _default: number; + export default _default; +} diff --git a/tests/baselines/reference/declarationEmitDefaultExportWithTempVarNameWithBundling.symbols b/tests/baselines/reference/declarationEmitDefaultExportWithTempVarNameWithBundling.symbols new file mode 100644 index 00000000000..82f52e818e3 --- /dev/null +++ b/tests/baselines/reference/declarationEmitDefaultExportWithTempVarNameWithBundling.symbols @@ -0,0 +1,4 @@ +=== tests/cases/compiler/pi.ts === + +No type information for this code.export default 3.14159; +No type information for this code. \ No newline at end of file diff --git a/tests/baselines/reference/declarationEmitDefaultExportWithTempVarNameWithBundling.types b/tests/baselines/reference/declarationEmitDefaultExportWithTempVarNameWithBundling.types new file mode 100644 index 00000000000..82f52e818e3 --- /dev/null +++ b/tests/baselines/reference/declarationEmitDefaultExportWithTempVarNameWithBundling.types @@ -0,0 +1,4 @@ +=== tests/cases/compiler/pi.ts === + +No type information for this code.export default 3.14159; +No type information for this code. \ No newline at end of file diff --git a/tests/baselines/reference/declarationEmitFirstTypeArgumentGenericFunctionType.js b/tests/baselines/reference/declarationEmitFirstTypeArgumentGenericFunctionType.js new file mode 100644 index 00000000000..b2bca641a5a --- /dev/null +++ b/tests/baselines/reference/declarationEmitFirstTypeArgumentGenericFunctionType.js @@ -0,0 +1,66 @@ +//// [declarationEmitFirstTypeArgumentGenericFunctionType.ts] + +class X { +} +var prop11: X< () => Tany >; // spaces before the first type argument +var prop12: X<(() => Tany)>; // spaces before the first type argument +function f1() { // Inferred return type + return prop11; +} +function f2() { // Inferred return type + return prop12; +} +function f3(): X< () => Tany> { // written with space before type argument + return prop11; +} +function f4(): X<(() => Tany)> { // written type with parenthesis + return prop12; +} +class Y { +} +var prop2: Y() => Tany>; // No space after second type argument +var prop2: Y() => Tany>; // space after second type argument +var prop3: Y< () => Tany, () => Tany>; // space before first type argument +var prop4: Y<(() => Tany), () => Tany>; // parenthesized first type argument + + +//// [declarationEmitFirstTypeArgumentGenericFunctionType.js] +class X { +} +var prop11; // spaces before the first type argument +var prop12; // spaces before the first type argument +function f1() { + return prop11; +} +function f2() { + return prop12; +} +function f3() { + return prop11; +} +function f4() { + return prop12; +} +class Y { +} +var prop2; // No space after second type argument +var prop2; // space after second type argument +var prop3; // space before first type argument +var prop4; // parenthesized first type argument + + +//// [declarationEmitFirstTypeArgumentGenericFunctionType.d.ts] +declare class X { +} +declare var prop11: X<(() => Tany)>; +declare var prop12: X<(() => Tany)>; +declare function f1(): X<(() => Tany)>; +declare function f2(): X<(() => Tany)>; +declare function f3(): X<(() => Tany)>; +declare function f4(): X<(() => Tany)>; +declare class Y { +} +declare var prop2: Y() => Tany>; +declare var prop2: Y() => Tany>; +declare var prop3: Y<(() => Tany), () => Tany>; +declare var prop4: Y<(() => Tany), () => Tany>; diff --git a/tests/baselines/reference/declarationEmitFirstTypeArgumentGenericFunctionType.symbols b/tests/baselines/reference/declarationEmitFirstTypeArgumentGenericFunctionType.symbols new file mode 100644 index 00000000000..ebbc2b764b0 --- /dev/null +++ b/tests/baselines/reference/declarationEmitFirstTypeArgumentGenericFunctionType.symbols @@ -0,0 +1,81 @@ +=== tests/cases/compiler/declarationEmitFirstTypeArgumentGenericFunctionType.ts === + +class X { +>X : Symbol(X, Decl(declarationEmitFirstTypeArgumentGenericFunctionType.ts, 0, 0)) +>A : Symbol(A, Decl(declarationEmitFirstTypeArgumentGenericFunctionType.ts, 1, 8)) +} +var prop11: X< () => Tany >; // spaces before the first type argument +>prop11 : Symbol(prop11, Decl(declarationEmitFirstTypeArgumentGenericFunctionType.ts, 3, 3)) +>X : Symbol(X, Decl(declarationEmitFirstTypeArgumentGenericFunctionType.ts, 0, 0)) +>Tany : Symbol(Tany, Decl(declarationEmitFirstTypeArgumentGenericFunctionType.ts, 3, 16)) +>Tany : Symbol(Tany, Decl(declarationEmitFirstTypeArgumentGenericFunctionType.ts, 3, 16)) + +var prop12: X<(() => Tany)>; // spaces before the first type argument +>prop12 : Symbol(prop12, Decl(declarationEmitFirstTypeArgumentGenericFunctionType.ts, 4, 3)) +>X : Symbol(X, Decl(declarationEmitFirstTypeArgumentGenericFunctionType.ts, 0, 0)) +>Tany : Symbol(Tany, Decl(declarationEmitFirstTypeArgumentGenericFunctionType.ts, 4, 16)) +>Tany : Symbol(Tany, Decl(declarationEmitFirstTypeArgumentGenericFunctionType.ts, 4, 16)) + +function f1() { // Inferred return type +>f1 : Symbol(f1, Decl(declarationEmitFirstTypeArgumentGenericFunctionType.ts, 4, 34)) + + return prop11; +>prop11 : Symbol(prop11, Decl(declarationEmitFirstTypeArgumentGenericFunctionType.ts, 3, 3)) +} +function f2() { // Inferred return type +>f2 : Symbol(f2, Decl(declarationEmitFirstTypeArgumentGenericFunctionType.ts, 7, 1)) + + return prop12; +>prop12 : Symbol(prop12, Decl(declarationEmitFirstTypeArgumentGenericFunctionType.ts, 4, 3)) +} +function f3(): X< () => Tany> { // written with space before type argument +>f3 : Symbol(f3, Decl(declarationEmitFirstTypeArgumentGenericFunctionType.ts, 10, 1)) +>X : Symbol(X, Decl(declarationEmitFirstTypeArgumentGenericFunctionType.ts, 0, 0)) +>Tany : Symbol(Tany, Decl(declarationEmitFirstTypeArgumentGenericFunctionType.ts, 11, 19)) +>Tany : Symbol(Tany, Decl(declarationEmitFirstTypeArgumentGenericFunctionType.ts, 11, 19)) + + return prop11; +>prop11 : Symbol(prop11, Decl(declarationEmitFirstTypeArgumentGenericFunctionType.ts, 3, 3)) +} +function f4(): X<(() => Tany)> { // written type with parenthesis +>f4 : Symbol(f4, Decl(declarationEmitFirstTypeArgumentGenericFunctionType.ts, 13, 1)) +>X : Symbol(X, Decl(declarationEmitFirstTypeArgumentGenericFunctionType.ts, 0, 0)) +>Tany : Symbol(Tany, Decl(declarationEmitFirstTypeArgumentGenericFunctionType.ts, 14, 19)) +>Tany : Symbol(Tany, Decl(declarationEmitFirstTypeArgumentGenericFunctionType.ts, 14, 19)) + + return prop12; +>prop12 : Symbol(prop12, Decl(declarationEmitFirstTypeArgumentGenericFunctionType.ts, 4, 3)) +} +class Y { +>Y : Symbol(Y, Decl(declarationEmitFirstTypeArgumentGenericFunctionType.ts, 16, 1)) +>A : Symbol(A, Decl(declarationEmitFirstTypeArgumentGenericFunctionType.ts, 17, 8)) +>B : Symbol(B, Decl(declarationEmitFirstTypeArgumentGenericFunctionType.ts, 17, 10)) +} +var prop2: Y() => Tany>; // No space after second type argument +>prop2 : Symbol(prop2, Decl(declarationEmitFirstTypeArgumentGenericFunctionType.ts, 19, 3), Decl(declarationEmitFirstTypeArgumentGenericFunctionType.ts, 20, 3)) +>Y : Symbol(Y, Decl(declarationEmitFirstTypeArgumentGenericFunctionType.ts, 16, 1)) +>Tany : Symbol(Tany, Decl(declarationEmitFirstTypeArgumentGenericFunctionType.ts, 19, 24)) +>Tany : Symbol(Tany, Decl(declarationEmitFirstTypeArgumentGenericFunctionType.ts, 19, 24)) + +var prop2: Y() => Tany>; // space after second type argument +>prop2 : Symbol(prop2, Decl(declarationEmitFirstTypeArgumentGenericFunctionType.ts, 19, 3), Decl(declarationEmitFirstTypeArgumentGenericFunctionType.ts, 20, 3)) +>Y : Symbol(Y, Decl(declarationEmitFirstTypeArgumentGenericFunctionType.ts, 16, 1)) +>Tany : Symbol(Tany, Decl(declarationEmitFirstTypeArgumentGenericFunctionType.ts, 20, 24)) +>Tany : Symbol(Tany, Decl(declarationEmitFirstTypeArgumentGenericFunctionType.ts, 20, 24)) + +var prop3: Y< () => Tany, () => Tany>; // space before first type argument +>prop3 : Symbol(prop3, Decl(declarationEmitFirstTypeArgumentGenericFunctionType.ts, 21, 3)) +>Y : Symbol(Y, Decl(declarationEmitFirstTypeArgumentGenericFunctionType.ts, 16, 1)) +>Tany : Symbol(Tany, Decl(declarationEmitFirstTypeArgumentGenericFunctionType.ts, 21, 15)) +>Tany : Symbol(Tany, Decl(declarationEmitFirstTypeArgumentGenericFunctionType.ts, 21, 15)) +>Tany : Symbol(Tany, Decl(declarationEmitFirstTypeArgumentGenericFunctionType.ts, 21, 33)) +>Tany : Symbol(Tany, Decl(declarationEmitFirstTypeArgumentGenericFunctionType.ts, 21, 33)) + +var prop4: Y<(() => Tany), () => Tany>; // parenthesized first type argument +>prop4 : Symbol(prop4, Decl(declarationEmitFirstTypeArgumentGenericFunctionType.ts, 22, 3)) +>Y : Symbol(Y, Decl(declarationEmitFirstTypeArgumentGenericFunctionType.ts, 16, 1)) +>Tany : Symbol(Tany, Decl(declarationEmitFirstTypeArgumentGenericFunctionType.ts, 22, 15)) +>Tany : Symbol(Tany, Decl(declarationEmitFirstTypeArgumentGenericFunctionType.ts, 22, 15)) +>Tany : Symbol(Tany, Decl(declarationEmitFirstTypeArgumentGenericFunctionType.ts, 22, 34)) +>Tany : Symbol(Tany, Decl(declarationEmitFirstTypeArgumentGenericFunctionType.ts, 22, 34)) + diff --git a/tests/baselines/reference/declarationEmitFirstTypeArgumentGenericFunctionType.types b/tests/baselines/reference/declarationEmitFirstTypeArgumentGenericFunctionType.types new file mode 100644 index 00000000000..4dd6ecba987 --- /dev/null +++ b/tests/baselines/reference/declarationEmitFirstTypeArgumentGenericFunctionType.types @@ -0,0 +1,81 @@ +=== tests/cases/compiler/declarationEmitFirstTypeArgumentGenericFunctionType.ts === + +class X { +>X : X +>A : A +} +var prop11: X< () => Tany >; // spaces before the first type argument +>prop11 : X<(() => Tany)> +>X : X +>Tany : Tany +>Tany : Tany + +var prop12: X<(() => Tany)>; // spaces before the first type argument +>prop12 : X<(() => Tany)> +>X : X +>Tany : Tany +>Tany : Tany + +function f1() { // Inferred return type +>f1 : () => X<(() => Tany)> + + return prop11; +>prop11 : X<(() => Tany)> +} +function f2() { // Inferred return type +>f2 : () => X<(() => Tany)> + + return prop12; +>prop12 : X<(() => Tany)> +} +function f3(): X< () => Tany> { // written with space before type argument +>f3 : () => X<(() => Tany)> +>X : X +>Tany : Tany +>Tany : Tany + + return prop11; +>prop11 : X<(() => Tany)> +} +function f4(): X<(() => Tany)> { // written type with parenthesis +>f4 : () => X<(() => Tany)> +>X : X +>Tany : Tany +>Tany : Tany + + return prop12; +>prop12 : X<(() => Tany)> +} +class Y { +>Y : Y +>A : A +>B : B +} +var prop2: Y() => Tany>; // No space after second type argument +>prop2 : Y() => Tany> +>Y : Y +>Tany : Tany +>Tany : Tany + +var prop2: Y() => Tany>; // space after second type argument +>prop2 : Y() => Tany> +>Y : Y +>Tany : Tany +>Tany : Tany + +var prop3: Y< () => Tany, () => Tany>; // space before first type argument +>prop3 : Y<(() => Tany), () => Tany> +>Y : Y +>Tany : Tany +>Tany : Tany +>Tany : Tany +>Tany : Tany + +var prop4: Y<(() => Tany), () => Tany>; // parenthesized first type argument +>prop4 : Y<(() => Tany), () => Tany> +>Y : Y +>Tany : Tany +>Tany : Tany +>Tany : Tany +>Tany : Tany + diff --git a/tests/baselines/reference/declarationEmitPromise.js b/tests/baselines/reference/declarationEmitPromise.js new file mode 100644 index 00000000000..a4bbdd74dde --- /dev/null +++ b/tests/baselines/reference/declarationEmitPromise.js @@ -0,0 +1,63 @@ +//// [declarationEmitPromise.ts] + +export class bluebird { + static all: Array>; +} + +export async function runSampleWorks( + a: bluebird, b?: bluebird, c?: bluebird, d?: bluebird, e?: bluebird) { + let result = await (bluebird.all as any)([a, b, c, d, e].filter(el => !!el)); + let func = (f: (a: A, b?: B, c?: C, d?: D, e?: E) => T): T => + f.apply(this, result); + let rfunc: typeof func & {} = func as any; // <- This is the only difference + return rfunc +} + +export async function runSampleBreaks( + a: bluebird, b?: bluebird, c?: bluebird, d?: bluebird, e?: bluebird) { + let result = await (bluebird.all as any)([a, b, c, d, e].filter(el => !!el)); + let func = (f: (a: A, b?: B, c?: C, d?: D, e?: E) => T): T => + f.apply(this, result); + let rfunc: typeof func = func as any; // <- This is the only difference + return rfunc +} + +//// [declarationEmitPromise.js] +"use strict"; +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()); + }); +}; +class bluebird { +} +exports.bluebird = bluebird; +function runSampleWorks(a, b, c, d, e) { + return __awaiter(this, void 0, void 0, function* () { + let result = yield bluebird.all([a, b, c, d, e].filter(el => !!el)); + let func = (f) => f.apply(this, result); + let rfunc = func; // <- This is the only difference + return rfunc; + }); +} +exports.runSampleWorks = runSampleWorks; +function runSampleBreaks(a, b, c, d, e) { + return __awaiter(this, void 0, void 0, function* () { + let result = yield bluebird.all([a, b, c, d, e].filter(el => !!el)); + let func = (f) => f.apply(this, result); + let rfunc = func; // <- This is the only difference + return rfunc; + }); +} +exports.runSampleBreaks = runSampleBreaks; + + +//// [declarationEmitPromise.d.ts] +export declare class bluebird { + static all: Array>; +} +export declare function runSampleWorks(a: bluebird, b?: bluebird, c?: bluebird, d?: bluebird, e?: bluebird): Promise<((f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T) & {}>; +export declare function runSampleBreaks(a: bluebird, b?: bluebird, c?: bluebird, d?: bluebird, e?: bluebird): Promise<((f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T)>; diff --git a/tests/baselines/reference/declarationEmitPromise.symbols b/tests/baselines/reference/declarationEmitPromise.symbols new file mode 100644 index 00000000000..2c37e1dfa78 --- /dev/null +++ b/tests/baselines/reference/declarationEmitPromise.symbols @@ -0,0 +1,155 @@ +=== tests/cases/compiler/declarationEmitPromise.ts === + +export class bluebird { +>bluebird : Symbol(bluebird, Decl(declarationEmitPromise.ts, 0, 0)) +>T : Symbol(T, Decl(declarationEmitPromise.ts, 1, 22)) + + static all: Array>; +>all : Symbol(bluebird.all, Decl(declarationEmitPromise.ts, 1, 26)) +>Array : Symbol(Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --)) +>bluebird : Symbol(bluebird, Decl(declarationEmitPromise.ts, 0, 0)) +} + +export async function runSampleWorks( +>runSampleWorks : Symbol(runSampleWorks, Decl(declarationEmitPromise.ts, 3, 1)) +>A : Symbol(A, Decl(declarationEmitPromise.ts, 5, 37)) +>B : Symbol(B, Decl(declarationEmitPromise.ts, 5, 39)) +>C : Symbol(C, Decl(declarationEmitPromise.ts, 5, 42)) +>D : Symbol(D, Decl(declarationEmitPromise.ts, 5, 45)) +>E : Symbol(E, Decl(declarationEmitPromise.ts, 5, 48)) + + a: bluebird, b?: bluebird, c?: bluebird, d?: bluebird, e?: bluebird) { +>a : Symbol(a, Decl(declarationEmitPromise.ts, 5, 52)) +>bluebird : Symbol(bluebird, Decl(declarationEmitPromise.ts, 0, 0)) +>A : Symbol(A, Decl(declarationEmitPromise.ts, 5, 37)) +>b : Symbol(b, Decl(declarationEmitPromise.ts, 6, 19)) +>bluebird : Symbol(bluebird, Decl(declarationEmitPromise.ts, 0, 0)) +>B : Symbol(B, Decl(declarationEmitPromise.ts, 5, 39)) +>c : Symbol(c, Decl(declarationEmitPromise.ts, 6, 36)) +>bluebird : Symbol(bluebird, Decl(declarationEmitPromise.ts, 0, 0)) +>C : Symbol(C, Decl(declarationEmitPromise.ts, 5, 42)) +>d : Symbol(d, Decl(declarationEmitPromise.ts, 6, 53)) +>bluebird : Symbol(bluebird, Decl(declarationEmitPromise.ts, 0, 0)) +>D : Symbol(D, Decl(declarationEmitPromise.ts, 5, 45)) +>e : Symbol(e, Decl(declarationEmitPromise.ts, 6, 70)) +>bluebird : Symbol(bluebird, Decl(declarationEmitPromise.ts, 0, 0)) +>E : Symbol(E, Decl(declarationEmitPromise.ts, 5, 48)) + + let result = await (bluebird.all as any)([a, b, c, d, e].filter(el => !!el)); +>result : Symbol(result, Decl(declarationEmitPromise.ts, 7, 7)) +>bluebird.all : Symbol(bluebird.all, Decl(declarationEmitPromise.ts, 1, 26)) +>bluebird : Symbol(bluebird, Decl(declarationEmitPromise.ts, 0, 0)) +>all : Symbol(bluebird.all, Decl(declarationEmitPromise.ts, 1, 26)) +>[a, b, c, d, e].filter : Symbol(Array.filter, Decl(lib.es5.d.ts, --, --)) +>a : Symbol(a, Decl(declarationEmitPromise.ts, 5, 52)) +>b : Symbol(b, Decl(declarationEmitPromise.ts, 6, 19)) +>c : Symbol(c, Decl(declarationEmitPromise.ts, 6, 36)) +>d : Symbol(d, Decl(declarationEmitPromise.ts, 6, 53)) +>e : Symbol(e, Decl(declarationEmitPromise.ts, 6, 70)) +>filter : Symbol(Array.filter, Decl(lib.es5.d.ts, --, --)) +>el : Symbol(el, Decl(declarationEmitPromise.ts, 7, 68)) +>el : Symbol(el, Decl(declarationEmitPromise.ts, 7, 68)) + + let func = (f: (a: A, b?: B, c?: C, d?: D, e?: E) => T): T => +>func : Symbol(func, Decl(declarationEmitPromise.ts, 8, 7)) +>T : Symbol(T, Decl(declarationEmitPromise.ts, 8, 16)) +>f : Symbol(f, Decl(declarationEmitPromise.ts, 8, 19)) +>a : Symbol(a, Decl(declarationEmitPromise.ts, 8, 23)) +>A : Symbol(A, Decl(declarationEmitPromise.ts, 5, 37)) +>b : Symbol(b, Decl(declarationEmitPromise.ts, 8, 28)) +>B : Symbol(B, Decl(declarationEmitPromise.ts, 5, 39)) +>c : Symbol(c, Decl(declarationEmitPromise.ts, 8, 35)) +>C : Symbol(C, Decl(declarationEmitPromise.ts, 5, 42)) +>d : Symbol(d, Decl(declarationEmitPromise.ts, 8, 42)) +>D : Symbol(D, Decl(declarationEmitPromise.ts, 5, 45)) +>e : Symbol(e, Decl(declarationEmitPromise.ts, 8, 49)) +>E : Symbol(E, Decl(declarationEmitPromise.ts, 5, 48)) +>T : Symbol(T, Decl(declarationEmitPromise.ts, 8, 16)) +>T : Symbol(T, Decl(declarationEmitPromise.ts, 8, 16)) + + f.apply(this, result); +>f.apply : Symbol(Function.apply, Decl(lib.es5.d.ts, --, --)) +>f : Symbol(f, Decl(declarationEmitPromise.ts, 8, 19)) +>apply : Symbol(Function.apply, Decl(lib.es5.d.ts, --, --)) +>result : Symbol(result, Decl(declarationEmitPromise.ts, 7, 7)) + + let rfunc: typeof func & {} = func as any; // <- This is the only difference +>rfunc : Symbol(rfunc, Decl(declarationEmitPromise.ts, 10, 7)) +>func : Symbol(func, Decl(declarationEmitPromise.ts, 8, 7)) +>func : Symbol(func, Decl(declarationEmitPromise.ts, 8, 7)) + + return rfunc +>rfunc : Symbol(rfunc, Decl(declarationEmitPromise.ts, 10, 7)) +} + +export async function runSampleBreaks( +>runSampleBreaks : Symbol(runSampleBreaks, Decl(declarationEmitPromise.ts, 12, 1)) +>A : Symbol(A, Decl(declarationEmitPromise.ts, 14, 38)) +>B : Symbol(B, Decl(declarationEmitPromise.ts, 14, 40)) +>C : Symbol(C, Decl(declarationEmitPromise.ts, 14, 43)) +>D : Symbol(D, Decl(declarationEmitPromise.ts, 14, 46)) +>E : Symbol(E, Decl(declarationEmitPromise.ts, 14, 49)) + + a: bluebird, b?: bluebird, c?: bluebird, d?: bluebird, e?: bluebird) { +>a : Symbol(a, Decl(declarationEmitPromise.ts, 14, 53)) +>bluebird : Symbol(bluebird, Decl(declarationEmitPromise.ts, 0, 0)) +>A : Symbol(A, Decl(declarationEmitPromise.ts, 14, 38)) +>b : Symbol(b, Decl(declarationEmitPromise.ts, 15, 19)) +>bluebird : Symbol(bluebird, Decl(declarationEmitPromise.ts, 0, 0)) +>B : Symbol(B, Decl(declarationEmitPromise.ts, 14, 40)) +>c : Symbol(c, Decl(declarationEmitPromise.ts, 15, 36)) +>bluebird : Symbol(bluebird, Decl(declarationEmitPromise.ts, 0, 0)) +>C : Symbol(C, Decl(declarationEmitPromise.ts, 14, 43)) +>d : Symbol(d, Decl(declarationEmitPromise.ts, 15, 53)) +>bluebird : Symbol(bluebird, Decl(declarationEmitPromise.ts, 0, 0)) +>D : Symbol(D, Decl(declarationEmitPromise.ts, 14, 46)) +>e : Symbol(e, Decl(declarationEmitPromise.ts, 15, 70)) +>bluebird : Symbol(bluebird, Decl(declarationEmitPromise.ts, 0, 0)) +>E : Symbol(E, Decl(declarationEmitPromise.ts, 14, 49)) + + let result = await (bluebird.all as any)([a, b, c, d, e].filter(el => !!el)); +>result : Symbol(result, Decl(declarationEmitPromise.ts, 16, 7)) +>bluebird.all : Symbol(bluebird.all, Decl(declarationEmitPromise.ts, 1, 26)) +>bluebird : Symbol(bluebird, Decl(declarationEmitPromise.ts, 0, 0)) +>all : Symbol(bluebird.all, Decl(declarationEmitPromise.ts, 1, 26)) +>[a, b, c, d, e].filter : Symbol(Array.filter, Decl(lib.es5.d.ts, --, --)) +>a : Symbol(a, Decl(declarationEmitPromise.ts, 14, 53)) +>b : Symbol(b, Decl(declarationEmitPromise.ts, 15, 19)) +>c : Symbol(c, Decl(declarationEmitPromise.ts, 15, 36)) +>d : Symbol(d, Decl(declarationEmitPromise.ts, 15, 53)) +>e : Symbol(e, Decl(declarationEmitPromise.ts, 15, 70)) +>filter : Symbol(Array.filter, Decl(lib.es5.d.ts, --, --)) +>el : Symbol(el, Decl(declarationEmitPromise.ts, 16, 68)) +>el : Symbol(el, Decl(declarationEmitPromise.ts, 16, 68)) + + let func = (f: (a: A, b?: B, c?: C, d?: D, e?: E) => T): T => +>func : Symbol(func, Decl(declarationEmitPromise.ts, 17, 7)) +>T : Symbol(T, Decl(declarationEmitPromise.ts, 17, 16)) +>f : Symbol(f, Decl(declarationEmitPromise.ts, 17, 19)) +>a : Symbol(a, Decl(declarationEmitPromise.ts, 17, 23)) +>A : Symbol(A, Decl(declarationEmitPromise.ts, 14, 38)) +>b : Symbol(b, Decl(declarationEmitPromise.ts, 17, 28)) +>B : Symbol(B, Decl(declarationEmitPromise.ts, 14, 40)) +>c : Symbol(c, Decl(declarationEmitPromise.ts, 17, 35)) +>C : Symbol(C, Decl(declarationEmitPromise.ts, 14, 43)) +>d : Symbol(d, Decl(declarationEmitPromise.ts, 17, 42)) +>D : Symbol(D, Decl(declarationEmitPromise.ts, 14, 46)) +>e : Symbol(e, Decl(declarationEmitPromise.ts, 17, 49)) +>E : Symbol(E, Decl(declarationEmitPromise.ts, 14, 49)) +>T : Symbol(T, Decl(declarationEmitPromise.ts, 17, 16)) +>T : Symbol(T, Decl(declarationEmitPromise.ts, 17, 16)) + + f.apply(this, result); +>f.apply : Symbol(Function.apply, Decl(lib.es5.d.ts, --, --)) +>f : Symbol(f, Decl(declarationEmitPromise.ts, 17, 19)) +>apply : Symbol(Function.apply, Decl(lib.es5.d.ts, --, --)) +>result : Symbol(result, Decl(declarationEmitPromise.ts, 16, 7)) + + let rfunc: typeof func = func as any; // <- This is the only difference +>rfunc : Symbol(rfunc, Decl(declarationEmitPromise.ts, 19, 7)) +>func : Symbol(func, Decl(declarationEmitPromise.ts, 17, 7)) +>func : Symbol(func, Decl(declarationEmitPromise.ts, 17, 7)) + + return rfunc +>rfunc : Symbol(rfunc, Decl(declarationEmitPromise.ts, 19, 7)) +} diff --git a/tests/baselines/reference/declarationEmitPromise.types b/tests/baselines/reference/declarationEmitPromise.types new file mode 100644 index 00000000000..4edaa444326 --- /dev/null +++ b/tests/baselines/reference/declarationEmitPromise.types @@ -0,0 +1,181 @@ +=== tests/cases/compiler/declarationEmitPromise.ts === + +export class bluebird { +>bluebird : bluebird +>T : T + + static all: Array>; +>all : bluebird[] +>Array : T[] +>bluebird : bluebird +} + +export async function runSampleWorks( +>runSampleWorks : (a: bluebird, b?: bluebird, c?: bluebird, d?: bluebird, e?: bluebird) => Promise<((f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T) & {}> +>A : A +>B : B +>C : C +>D : D +>E : E + + a: bluebird, b?: bluebird, c?: bluebird, d?: bluebird, e?: bluebird) { +>a : bluebird +>bluebird : bluebird +>A : A +>b : bluebird +>bluebird : bluebird +>B : B +>c : bluebird +>bluebird : bluebird +>C : C +>d : bluebird +>bluebird : bluebird +>D : D +>e : bluebird +>bluebird : bluebird +>E : E + + let result = await (bluebird.all as any)([a, b, c, d, e].filter(el => !!el)); +>result : any +>await (bluebird.all as any)([a, b, c, d, e].filter(el => !!el)) : any +>(bluebird.all as any)([a, b, c, d, e].filter(el => !!el)) : any +>(bluebird.all as any) : any +>bluebird.all as any : any +>bluebird.all : bluebird[] +>bluebird : typeof bluebird +>all : bluebird[] +>[a, b, c, d, e].filter(el => !!el) : bluebird[] +>[a, b, c, d, e].filter : (callbackfn: (value: bluebird, index: number, array: bluebird[]) => any, thisArg?: any) => bluebird[] +>[a, b, c, d, e] : bluebird[] +>a : bluebird +>b : bluebird +>c : bluebird +>d : bluebird +>e : bluebird +>filter : (callbackfn: (value: bluebird, index: number, array: bluebird[]) => any, thisArg?: any) => bluebird[] +>el => !!el : (el: bluebird) => boolean +>el : bluebird +>!!el : boolean +>!el : boolean +>el : bluebird + + let func = (f: (a: A, b?: B, c?: C, d?: D, e?: E) => T): T => +>func : (f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T +>(f: (a: A, b?: B, c?: C, d?: D, e?: E) => T): T => f.apply(this, result) : (f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T +>T : T +>f : (a: A, b?: B, c?: C, d?: D, e?: E) => T +>a : A +>A : A +>b : B +>B : B +>c : C +>C : C +>d : D +>D : D +>e : E +>E : E +>T : T +>T : T + + f.apply(this, result); +>f.apply(this, result) : any +>f.apply : (this: Function, thisArg: any, argArray?: any) => any +>f : (a: A, b?: B, c?: C, d?: D, e?: E) => T +>apply : (this: Function, thisArg: any, argArray?: any) => any +>this : any +>result : any + + let rfunc: typeof func & {} = func as any; // <- This is the only difference +>rfunc : ((f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T) & {} +>func : (f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T +>func as any : any +>func : (f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T + + return rfunc +>rfunc : ((f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T) & {} +} + +export async function runSampleBreaks( +>runSampleBreaks : (a: bluebird, b?: bluebird, c?: bluebird, d?: bluebird, e?: bluebird) => Promise<((f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T)> +>A : A +>B : B +>C : C +>D : D +>E : E + + a: bluebird, b?: bluebird, c?: bluebird, d?: bluebird, e?: bluebird) { +>a : bluebird +>bluebird : bluebird +>A : A +>b : bluebird +>bluebird : bluebird +>B : B +>c : bluebird +>bluebird : bluebird +>C : C +>d : bluebird +>bluebird : bluebird +>D : D +>e : bluebird +>bluebird : bluebird +>E : E + + let result = await (bluebird.all as any)([a, b, c, d, e].filter(el => !!el)); +>result : any +>await (bluebird.all as any)([a, b, c, d, e].filter(el => !!el)) : any +>(bluebird.all as any)([a, b, c, d, e].filter(el => !!el)) : any +>(bluebird.all as any) : any +>bluebird.all as any : any +>bluebird.all : bluebird[] +>bluebird : typeof bluebird +>all : bluebird[] +>[a, b, c, d, e].filter(el => !!el) : bluebird[] +>[a, b, c, d, e].filter : (callbackfn: (value: bluebird, index: number, array: bluebird[]) => any, thisArg?: any) => bluebird[] +>[a, b, c, d, e] : bluebird[] +>a : bluebird +>b : bluebird +>c : bluebird +>d : bluebird +>e : bluebird +>filter : (callbackfn: (value: bluebird, index: number, array: bluebird[]) => any, thisArg?: any) => bluebird[] +>el => !!el : (el: bluebird) => boolean +>el : bluebird +>!!el : boolean +>!el : boolean +>el : bluebird + + let func = (f: (a: A, b?: B, c?: C, d?: D, e?: E) => T): T => +>func : (f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T +>(f: (a: A, b?: B, c?: C, d?: D, e?: E) => T): T => f.apply(this, result) : (f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T +>T : T +>f : (a: A, b?: B, c?: C, d?: D, e?: E) => T +>a : A +>A : A +>b : B +>B : B +>c : C +>C : C +>d : D +>D : D +>e : E +>E : E +>T : T +>T : T + + f.apply(this, result); +>f.apply(this, result) : any +>f.apply : (this: Function, thisArg: any, argArray?: any) => any +>f : (a: A, b?: B, c?: C, d?: D, e?: E) => T +>apply : (this: Function, thisArg: any, argArray?: any) => any +>this : any +>result : any + + let rfunc: typeof func = func as any; // <- This is the only difference +>rfunc : (f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T +>func : (f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T +>func as any : any +>func : (f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T + + return rfunc +>rfunc : (f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T +} diff --git a/tests/baselines/reference/declarationEmitThisPredicates01.symbols b/tests/baselines/reference/declarationEmitThisPredicates01.symbols index d57f937d6c5..af5da751b8c 100644 --- a/tests/baselines/reference/declarationEmitThisPredicates01.symbols +++ b/tests/baselines/reference/declarationEmitThisPredicates01.symbols @@ -4,7 +4,7 @@ export class C { >C : Symbol(C, Decl(declarationEmitThisPredicates01.ts, 0, 0)) m(): this is D { ->m : Symbol(m, Decl(declarationEmitThisPredicates01.ts, 1, 16)) +>m : Symbol(C.m, Decl(declarationEmitThisPredicates01.ts, 1, 16)) >D : Symbol(D, Decl(declarationEmitThisPredicates01.ts, 5, 1)) return this instanceof D; diff --git a/tests/baselines/reference/declarationEmit_classMemberNameConflict.js b/tests/baselines/reference/declarationEmit_classMemberNameConflict.js new file mode 100644 index 00000000000..55acb13d2b9 --- /dev/null +++ b/tests/baselines/reference/declarationEmit_classMemberNameConflict.js @@ -0,0 +1,112 @@ +//// [declarationEmit_classMemberNameConflict.ts] + +export class C1 { + C1() { } // has to be the same as the class name + + bar() { + return function (t: typeof C1) { + }; + } +} + +export class C2 { + C2: any // has to be the same as the class name + + bar() { + return function (t: typeof C2) { + }; + } +} + +export class C3 { + get C3() { return 0; } // has to be the same as the class name + + bar() { + return function (t: typeof C3) { + }; + } +} + +export class C4 { + set C4(v) { } // has to be the same as the class name + + bar() { + return function (t: typeof C4) { + }; + } +} + +//// [declarationEmit_classMemberNameConflict.js] +"use strict"; +var C1 = (function () { + function C1() { + } + C1.prototype.C1 = function () { }; // has to be the same as the class name + C1.prototype.bar = function () { + return function (t) { + }; + }; + return C1; +}()); +exports.C1 = C1; +var C2 = (function () { + function C2() { + } + C2.prototype.bar = function () { + return function (t) { + }; + }; + return C2; +}()); +exports.C2 = C2; +var C3 = (function () { + function C3() { + } + Object.defineProperty(C3.prototype, "C3", { + get: function () { return 0; } // has to be the same as the class name + , + enumerable: true, + configurable: true + }); + C3.prototype.bar = function () { + return function (t) { + }; + }; + return C3; +}()); +exports.C3 = C3; +var C4 = (function () { + function C4() { + } + Object.defineProperty(C4.prototype, "C4", { + set: function (v) { } // has to be the same as the class name + , + enumerable: true, + configurable: true + }); + C4.prototype.bar = function () { + return function (t) { + }; + }; + return C4; +}()); +exports.C4 = C4; + + +//// [declarationEmit_classMemberNameConflict.d.ts] +export declare class C1 { + C1(): void; + bar(): (t: typeof C1) => void; +} +export declare class C2 { + C2: any; + bar(): (t: typeof C2) => void; +} +export declare class C3 { + readonly C3: number; + bar(): (t: typeof C3) => void; +} +export declare class C4 { + C4: any; + bar(): (t: typeof C4) => void; +} diff --git a/tests/baselines/reference/declarationEmit_classMemberNameConflict.symbols b/tests/baselines/reference/declarationEmit_classMemberNameConflict.symbols new file mode 100644 index 00000000000..2b8959289a8 --- /dev/null +++ b/tests/baselines/reference/declarationEmit_classMemberNameConflict.symbols @@ -0,0 +1,70 @@ +=== tests/cases/compiler/declarationEmit_classMemberNameConflict.ts === + +export class C1 { +>C1 : Symbol(C1, Decl(declarationEmit_classMemberNameConflict.ts, 0, 0)) + + C1() { } // has to be the same as the class name +>C1 : Symbol(C1.C1, Decl(declarationEmit_classMemberNameConflict.ts, 1, 17)) + + bar() { +>bar : Symbol(C1.bar, Decl(declarationEmit_classMemberNameConflict.ts, 2, 12)) + + return function (t: typeof C1) { +>t : Symbol(t, Decl(declarationEmit_classMemberNameConflict.ts, 5, 25)) +>C1 : Symbol(C1, Decl(declarationEmit_classMemberNameConflict.ts, 0, 0)) + + }; + } +} + +export class C2 { +>C2 : Symbol(C2, Decl(declarationEmit_classMemberNameConflict.ts, 8, 1)) + + C2: any // has to be the same as the class name +>C2 : Symbol(C2.C2, Decl(declarationEmit_classMemberNameConflict.ts, 10, 17)) + + bar() { +>bar : Symbol(C2.bar, Decl(declarationEmit_classMemberNameConflict.ts, 11, 11)) + + return function (t: typeof C2) { +>t : Symbol(t, Decl(declarationEmit_classMemberNameConflict.ts, 14, 25)) +>C2 : Symbol(C2, Decl(declarationEmit_classMemberNameConflict.ts, 8, 1)) + + }; + } +} + +export class C3 { +>C3 : Symbol(C3, Decl(declarationEmit_classMemberNameConflict.ts, 17, 1)) + + get C3() { return 0; } // has to be the same as the class name +>C3 : Symbol(C3.C3, Decl(declarationEmit_classMemberNameConflict.ts, 19, 17)) + + bar() { +>bar : Symbol(C3.bar, Decl(declarationEmit_classMemberNameConflict.ts, 20, 26)) + + return function (t: typeof C3) { +>t : Symbol(t, Decl(declarationEmit_classMemberNameConflict.ts, 23, 25)) +>C3 : Symbol(C3, Decl(declarationEmit_classMemberNameConflict.ts, 17, 1)) + + }; + } +} + +export class C4 { +>C4 : Symbol(C4, Decl(declarationEmit_classMemberNameConflict.ts, 26, 1)) + + set C4(v) { } // has to be the same as the class name +>C4 : Symbol(C4.C4, Decl(declarationEmit_classMemberNameConflict.ts, 28, 17)) +>v : Symbol(v, Decl(declarationEmit_classMemberNameConflict.ts, 29, 11)) + + bar() { +>bar : Symbol(C4.bar, Decl(declarationEmit_classMemberNameConflict.ts, 29, 17)) + + return function (t: typeof C4) { +>t : Symbol(t, Decl(declarationEmit_classMemberNameConflict.ts, 32, 25)) +>C4 : Symbol(C4, Decl(declarationEmit_classMemberNameConflict.ts, 26, 1)) + + }; + } +} diff --git a/tests/baselines/reference/declarationEmit_classMemberNameConflict.types b/tests/baselines/reference/declarationEmit_classMemberNameConflict.types new file mode 100644 index 00000000000..c76072413e5 --- /dev/null +++ b/tests/baselines/reference/declarationEmit_classMemberNameConflict.types @@ -0,0 +1,75 @@ +=== tests/cases/compiler/declarationEmit_classMemberNameConflict.ts === + +export class C1 { +>C1 : C1 + + C1() { } // has to be the same as the class name +>C1 : () => void + + bar() { +>bar : () => (t: typeof C1) => void + + return function (t: typeof C1) { +>function (t: typeof C1) { } : (t: typeof C1) => void +>t : typeof C1 +>C1 : typeof C1 + + }; + } +} + +export class C2 { +>C2 : C2 + + C2: any // has to be the same as the class name +>C2 : any + + bar() { +>bar : () => (t: typeof C2) => void + + return function (t: typeof C2) { +>function (t: typeof C2) { } : (t: typeof C2) => void +>t : typeof C2 +>C2 : typeof C2 + + }; + } +} + +export class C3 { +>C3 : C3 + + get C3() { return 0; } // has to be the same as the class name +>C3 : number +>0 : number + + bar() { +>bar : () => (t: typeof C3) => void + + return function (t: typeof C3) { +>function (t: typeof C3) { } : (t: typeof C3) => void +>t : typeof C3 +>C3 : typeof C3 + + }; + } +} + +export class C4 { +>C4 : C4 + + set C4(v) { } // has to be the same as the class name +>C4 : any +>v : any + + bar() { +>bar : () => (t: typeof C4) => void + + return function (t: typeof C4) { +>function (t: typeof C4) { } : (t: typeof C4) => void +>t : typeof C4 +>C4 : typeof C4 + + }; + } +} diff --git a/tests/baselines/reference/declarationEmit_classMemberNameConflict2.js b/tests/baselines/reference/declarationEmit_classMemberNameConflict2.js new file mode 100644 index 00000000000..03dc5cdbafd --- /dev/null +++ b/tests/baselines/reference/declarationEmit_classMemberNameConflict2.js @@ -0,0 +1,59 @@ +//// [declarationEmit_classMemberNameConflict2.ts] + +const Bar = 'bar'; + +enum Hello { + World +} + +enum Hello1 { + World1 +} + +class Foo { + // Same names + string => OK + Bar = Bar; + + // Same names + enum => OK + Hello = Hello; + + // Different names + enum => OK + Hello2 = Hello1; +} + +//// [declarationEmit_classMemberNameConflict2.js] +var Bar = 'bar'; +var Hello; +(function (Hello) { + Hello[Hello["World"] = 0] = "World"; +})(Hello || (Hello = {})); +var Hello1; +(function (Hello1) { + Hello1[Hello1["World1"] = 0] = "World1"; +})(Hello1 || (Hello1 = {})); +var Foo = (function () { + function Foo() { + // Same names + string => OK + this.Bar = Bar; + // Same names + enum => OK + this.Hello = Hello; + // Different names + enum => OK + this.Hello2 = Hello1; + } + return Foo; +}()); + + +//// [declarationEmit_classMemberNameConflict2.d.ts] +declare const Bar: string; +declare enum Hello { + World = 0, +} +declare enum Hello1 { + World1 = 0, +} +declare class Foo { + Bar: string; + Hello: typeof Hello; + Hello2: typeof Hello1; +} diff --git a/tests/baselines/reference/declarationEmit_classMemberNameConflict2.symbols b/tests/baselines/reference/declarationEmit_classMemberNameConflict2.symbols new file mode 100644 index 00000000000..e7c4b6f060c --- /dev/null +++ b/tests/baselines/reference/declarationEmit_classMemberNameConflict2.symbols @@ -0,0 +1,37 @@ +=== tests/cases/compiler/declarationEmit_classMemberNameConflict2.ts === + +const Bar = 'bar'; +>Bar : Symbol(Bar, Decl(declarationEmit_classMemberNameConflict2.ts, 1, 5)) + +enum Hello { +>Hello : Symbol(Hello, Decl(declarationEmit_classMemberNameConflict2.ts, 1, 18)) + + World +>World : Symbol(Hello.World, Decl(declarationEmit_classMemberNameConflict2.ts, 3, 12)) +} + +enum Hello1 { +>Hello1 : Symbol(Hello1, Decl(declarationEmit_classMemberNameConflict2.ts, 5, 1)) + + World1 +>World1 : Symbol(Hello1.World1, Decl(declarationEmit_classMemberNameConflict2.ts, 7, 13)) +} + +class Foo { +>Foo : Symbol(Foo, Decl(declarationEmit_classMemberNameConflict2.ts, 9, 1)) + + // Same names + string => OK + Bar = Bar; +>Bar : Symbol(Foo.Bar, Decl(declarationEmit_classMemberNameConflict2.ts, 11, 11)) +>Bar : Symbol(Bar, Decl(declarationEmit_classMemberNameConflict2.ts, 1, 5)) + + // Same names + enum => OK + Hello = Hello; +>Hello : Symbol(Foo.Hello, Decl(declarationEmit_classMemberNameConflict2.ts, 13, 14)) +>Hello : Symbol(Hello, Decl(declarationEmit_classMemberNameConflict2.ts, 1, 18)) + + // Different names + enum => OK + Hello2 = Hello1; +>Hello2 : Symbol(Foo.Hello2, Decl(declarationEmit_classMemberNameConflict2.ts, 16, 18)) +>Hello1 : Symbol(Hello1, Decl(declarationEmit_classMemberNameConflict2.ts, 5, 1)) +} diff --git a/tests/baselines/reference/declarationEmit_classMemberNameConflict2.types b/tests/baselines/reference/declarationEmit_classMemberNameConflict2.types new file mode 100644 index 00000000000..9f8ddd8a2d5 --- /dev/null +++ b/tests/baselines/reference/declarationEmit_classMemberNameConflict2.types @@ -0,0 +1,38 @@ +=== tests/cases/compiler/declarationEmit_classMemberNameConflict2.ts === + +const Bar = 'bar'; +>Bar : string +>'bar' : string + +enum Hello { +>Hello : Hello + + World +>World : Hello +} + +enum Hello1 { +>Hello1 : Hello1 + + World1 +>World1 : Hello1 +} + +class Foo { +>Foo : Foo + + // Same names + string => OK + Bar = Bar; +>Bar : string +>Bar : string + + // Same names + enum => OK + Hello = Hello; +>Hello : typeof Hello +>Hello : typeof Hello + + // Different names + enum => OK + Hello2 = Hello1; +>Hello2 : typeof Hello1 +>Hello1 : typeof Hello1 +} diff --git a/tests/baselines/reference/declarationEmit_expressionInExtends.js b/tests/baselines/reference/declarationEmit_expressionInExtends.js new file mode 100644 index 00000000000..061042aa34b --- /dev/null +++ b/tests/baselines/reference/declarationEmit_expressionInExtends.js @@ -0,0 +1,49 @@ +//// [declarationEmit_expressionInExtends.ts] + +var x: { + new(s: any): Q; +} + +class Q { + s: string; +} + +class B extends x { +} + +var q: B; +q.s; + +//// [declarationEmit_expressionInExtends.js] +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +var x; +var Q = (function () { + function Q() { + } + return Q; +}()); +var B = (function (_super) { + __extends(B, _super); + function B() { + _super.apply(this, arguments); + } + return B; +}(x)); +var q; +q.s; + + +//// [declarationEmit_expressionInExtends.d.ts] +declare var x: { + new (s: any): Q; +}; +declare class Q { + s: string; +} +declare class B extends x { +} +declare var q: B; diff --git a/tests/baselines/reference/declarationEmit_expressionInExtends.symbols b/tests/baselines/reference/declarationEmit_expressionInExtends.symbols new file mode 100644 index 00000000000..319914702ac --- /dev/null +++ b/tests/baselines/reference/declarationEmit_expressionInExtends.symbols @@ -0,0 +1,32 @@ +=== tests/cases/compiler/declarationEmit_expressionInExtends.ts === + +var x: { +>x : Symbol(x, Decl(declarationEmit_expressionInExtends.ts, 1, 3)) + + new(s: any): Q; +>T : Symbol(T, Decl(declarationEmit_expressionInExtends.ts, 2, 8)) +>s : Symbol(s, Decl(declarationEmit_expressionInExtends.ts, 2, 11)) +>Q : Symbol(Q, Decl(declarationEmit_expressionInExtends.ts, 3, 1)) +} + +class Q { +>Q : Symbol(Q, Decl(declarationEmit_expressionInExtends.ts, 3, 1)) + + s: string; +>s : Symbol(Q.s, Decl(declarationEmit_expressionInExtends.ts, 5, 9)) +} + +class B extends x { +>B : Symbol(B, Decl(declarationEmit_expressionInExtends.ts, 7, 1)) +>x : Symbol(x, Decl(declarationEmit_expressionInExtends.ts, 1, 3)) +} + +var q: B; +>q : Symbol(q, Decl(declarationEmit_expressionInExtends.ts, 12, 3)) +>B : Symbol(B, Decl(declarationEmit_expressionInExtends.ts, 7, 1)) + +q.s; +>q.s : Symbol(Q.s, Decl(declarationEmit_expressionInExtends.ts, 5, 9)) +>q : Symbol(q, Decl(declarationEmit_expressionInExtends.ts, 12, 3)) +>s : Symbol(Q.s, Decl(declarationEmit_expressionInExtends.ts, 5, 9)) + diff --git a/tests/baselines/reference/declarationEmit_expressionInExtends.types b/tests/baselines/reference/declarationEmit_expressionInExtends.types new file mode 100644 index 00000000000..2e810fccf68 --- /dev/null +++ b/tests/baselines/reference/declarationEmit_expressionInExtends.types @@ -0,0 +1,32 @@ +=== tests/cases/compiler/declarationEmit_expressionInExtends.ts === + +var x: { +>x : new (s: any) => Q + + new(s: any): Q; +>T : T +>s : any +>Q : Q +} + +class Q { +>Q : Q + + s: string; +>s : string +} + +class B extends x { +>B : B +>x : Q +} + +var q: B; +>q : B +>B : B + +q.s; +>q.s : string +>q : B +>s : string + diff --git a/tests/baselines/reference/declarationEmit_expressionInExtends2.js b/tests/baselines/reference/declarationEmit_expressionInExtends2.js new file mode 100644 index 00000000000..da0478e26d0 --- /dev/null +++ b/tests/baselines/reference/declarationEmit_expressionInExtends2.js @@ -0,0 +1,45 @@ +//// [declarationEmit_expressionInExtends2.ts] + +class C { + x: T; + y: U; +} + +function getClass(c: T) { + return C; +} + +class MyClass extends getClass(2) { +} + +//// [declarationEmit_expressionInExtends2.js] +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +var C = (function () { + function C() { + } + return C; +}()); +function getClass(c) { + return C; +} +var MyClass = (function (_super) { + __extends(MyClass, _super); + function MyClass() { + _super.apply(this, arguments); + } + return MyClass; +}(getClass(2))); + + +//// [declarationEmit_expressionInExtends2.d.ts] +declare class C { + x: T; + y: U; +} +declare function getClass(c: T): typeof C; +declare class MyClass extends C { +} diff --git a/tests/baselines/reference/declarationEmit_expressionInExtends2.symbols b/tests/baselines/reference/declarationEmit_expressionInExtends2.symbols new file mode 100644 index 00000000000..03a36a49b15 --- /dev/null +++ b/tests/baselines/reference/declarationEmit_expressionInExtends2.symbols @@ -0,0 +1,30 @@ +=== tests/cases/compiler/declarationEmit_expressionInExtends2.ts === + +class C { +>C : Symbol(C, Decl(declarationEmit_expressionInExtends2.ts, 0, 0)) +>T : Symbol(T, Decl(declarationEmit_expressionInExtends2.ts, 1, 8)) +>U : Symbol(U, Decl(declarationEmit_expressionInExtends2.ts, 1, 10)) + + x: T; +>x : Symbol(C.x, Decl(declarationEmit_expressionInExtends2.ts, 1, 15)) +>T : Symbol(T, Decl(declarationEmit_expressionInExtends2.ts, 1, 8)) + + y: U; +>y : Symbol(C.y, Decl(declarationEmit_expressionInExtends2.ts, 2, 9)) +>U : Symbol(U, Decl(declarationEmit_expressionInExtends2.ts, 1, 10)) +} + +function getClass(c: T) { +>getClass : Symbol(getClass, Decl(declarationEmit_expressionInExtends2.ts, 4, 1)) +>T : Symbol(T, Decl(declarationEmit_expressionInExtends2.ts, 6, 18)) +>c : Symbol(c, Decl(declarationEmit_expressionInExtends2.ts, 6, 21)) +>T : Symbol(T, Decl(declarationEmit_expressionInExtends2.ts, 6, 18)) + + return C; +>C : Symbol(C, Decl(declarationEmit_expressionInExtends2.ts, 0, 0)) +} + +class MyClass extends getClass(2) { +>MyClass : Symbol(MyClass, Decl(declarationEmit_expressionInExtends2.ts, 8, 1)) +>getClass : Symbol(getClass, Decl(declarationEmit_expressionInExtends2.ts, 4, 1)) +} diff --git a/tests/baselines/reference/declarationEmit_expressionInExtends2.types b/tests/baselines/reference/declarationEmit_expressionInExtends2.types new file mode 100644 index 00000000000..77a1539267d --- /dev/null +++ b/tests/baselines/reference/declarationEmit_expressionInExtends2.types @@ -0,0 +1,32 @@ +=== tests/cases/compiler/declarationEmit_expressionInExtends2.ts === + +class C { +>C : C +>T : T +>U : U + + x: T; +>x : T +>T : T + + y: U; +>y : U +>U : U +} + +function getClass(c: T) { +>getClass : (c: T) => typeof C +>T : T +>c : T +>T : T + + return C; +>C : typeof C +} + +class MyClass extends getClass(2) { +>MyClass : MyClass +>getClass(2) : C +>getClass : (c: T) => typeof C +>2 : number +} diff --git a/tests/baselines/reference/declarationEmit_expressionInExtends3.errors.txt b/tests/baselines/reference/declarationEmit_expressionInExtends3.errors.txt new file mode 100644 index 00000000000..2783810c568 --- /dev/null +++ b/tests/baselines/reference/declarationEmit_expressionInExtends3.errors.txt @@ -0,0 +1,52 @@ +tests/cases/compiler/declarationEmit_expressionInExtends3.ts(29,30): error TS4020: Extends clause of exported class 'MyClass' has or is using private name 'LocalClass'. +tests/cases/compiler/declarationEmit_expressionInExtends3.ts(37,31): error TS4020: Extends clause of exported class 'MyClass3' has or is using private name 'LocalInterface'. + + +==== tests/cases/compiler/declarationEmit_expressionInExtends3.ts (2 errors) ==== + + export class ExportedClass { + x: T; + } + + class LocalClass { + x: T; + y: U; + } + + export interface ExportedInterface { + x: number; + } + + interface LocalInterface { + x: number; + } + + function getLocalClass(c: T) { + return LocalClass; + } + + function getExportedClass(c: T) { + return ExportedClass; + } + + + + export class MyClass extends getLocalClass(undefined) { // error LocalClass is inaccisible + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS4020: Extends clause of exported class 'MyClass' has or is using private name 'LocalClass'. + } + + + export class MyClass2 extends getExportedClass(undefined) { // OK + } + + + export class MyClass3 extends getExportedClass(undefined) { // Error LocalInterface is inaccisble + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS4020: Extends clause of exported class 'MyClass3' has or is using private name 'LocalInterface'. + } + + + export class MyClass4 extends getExportedClass(undefined) { // OK + } + \ No newline at end of file diff --git a/tests/baselines/reference/declarationEmit_expressionInExtends3.js b/tests/baselines/reference/declarationEmit_expressionInExtends3.js new file mode 100644 index 00000000000..10ef42d6838 --- /dev/null +++ b/tests/baselines/reference/declarationEmit_expressionInExtends3.js @@ -0,0 +1,101 @@ +//// [declarationEmit_expressionInExtends3.ts] + +export class ExportedClass { + x: T; +} + +class LocalClass { + x: T; + y: U; +} + +export interface ExportedInterface { + x: number; +} + +interface LocalInterface { + x: number; +} + +function getLocalClass(c: T) { + return LocalClass; +} + +function getExportedClass(c: T) { + return ExportedClass; +} + + + +export class MyClass extends getLocalClass(undefined) { // error LocalClass is inaccisible +} + + +export class MyClass2 extends getExportedClass(undefined) { // OK +} + + +export class MyClass3 extends getExportedClass(undefined) { // Error LocalInterface is inaccisble +} + + +export class MyClass4 extends getExportedClass(undefined) { // OK +} + + +//// [declarationEmit_expressionInExtends3.js] +"use strict"; +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +var ExportedClass = (function () { + function ExportedClass() { + } + return ExportedClass; +}()); +exports.ExportedClass = ExportedClass; +var LocalClass = (function () { + function LocalClass() { + } + return LocalClass; +}()); +function getLocalClass(c) { + return LocalClass; +} +function getExportedClass(c) { + return ExportedClass; +} +var MyClass = (function (_super) { + __extends(MyClass, _super); + function MyClass() { + _super.apply(this, arguments); + } + return MyClass; +}(getLocalClass(undefined))); +exports.MyClass = MyClass; +var MyClass2 = (function (_super) { + __extends(MyClass2, _super); + function MyClass2() { + _super.apply(this, arguments); + } + return MyClass2; +}(getExportedClass(undefined))); +exports.MyClass2 = MyClass2; +var MyClass3 = (function (_super) { + __extends(MyClass3, _super); + function MyClass3() { + _super.apply(this, arguments); + } + return MyClass3; +}(getExportedClass(undefined))); +exports.MyClass3 = MyClass3; +var MyClass4 = (function (_super) { + __extends(MyClass4, _super); + function MyClass4() { + _super.apply(this, arguments); + } + return MyClass4; +}(getExportedClass(undefined))); +exports.MyClass4 = MyClass4; diff --git a/tests/baselines/reference/declarationEmit_expressionInExtends4.errors.txt b/tests/baselines/reference/declarationEmit_expressionInExtends4.errors.txt new file mode 100644 index 00000000000..df3a6533260 --- /dev/null +++ b/tests/baselines/reference/declarationEmit_expressionInExtends4.errors.txt @@ -0,0 +1,35 @@ +tests/cases/compiler/declarationEmit_expressionInExtends4.ts(2,10): error TS4060: Return type of exported function has or is using private name 'D'. +tests/cases/compiler/declarationEmit_expressionInExtends4.ts(6,17): error TS2315: Type 'D' is not generic. +tests/cases/compiler/declarationEmit_expressionInExtends4.ts(10,18): error TS2304: Cannot find name 'SomeUndefinedFunction'. +tests/cases/compiler/declarationEmit_expressionInExtends4.ts(15,18): error TS2304: Cannot find name 'SomeUndefinedFunction'. +tests/cases/compiler/declarationEmit_expressionInExtends4.ts(15,18): error TS4020: Extends clause of exported class 'C3' has or is using private name 'SomeUndefinedFunction'. + + +==== tests/cases/compiler/declarationEmit_expressionInExtends4.ts (5 errors) ==== + + function getSomething() { + ~~~~~~~~~~~~ +!!! error TS4060: Return type of exported function has or is using private name 'D'. + return class D { } + } + + class C extends getSomething() { + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS2315: Type 'D' is not generic. + + } + + class C2 extends SomeUndefinedFunction() { + ~~~~~~~~~~~~~~~~~~~~~ +!!! error TS2304: Cannot find name 'SomeUndefinedFunction'. + + } + + + class C3 extends SomeUndefinedFunction { + ~~~~~~~~~~~~~~~~~~~~~ +!!! error TS2304: Cannot find name 'SomeUndefinedFunction'. + ~~~~~~~~~~~~~~~~~~~~~ +!!! error TS4020: Extends clause of exported class 'C3' has or is using private name 'SomeUndefinedFunction'. + + } \ No newline at end of file diff --git a/tests/baselines/reference/declarationEmit_expressionInExtends4.js b/tests/baselines/reference/declarationEmit_expressionInExtends4.js new file mode 100644 index 00000000000..39ee7ce1e69 --- /dev/null +++ b/tests/baselines/reference/declarationEmit_expressionInExtends4.js @@ -0,0 +1,53 @@ +//// [declarationEmit_expressionInExtends4.ts] + +function getSomething() { + return class D { } +} + +class C extends getSomething() { + +} + +class C2 extends SomeUndefinedFunction() { + +} + + +class C3 extends SomeUndefinedFunction { + +} + +//// [declarationEmit_expressionInExtends4.js] +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +function getSomething() { + return (function () { + function D() { + } + return D; + }()); +} +var C = (function (_super) { + __extends(C, _super); + function C() { + _super.apply(this, arguments); + } + return C; +}(getSomething())); +var C2 = (function (_super) { + __extends(C2, _super); + function C2() { + _super.apply(this, arguments); + } + return C2; +}(SomeUndefinedFunction())); +var C3 = (function (_super) { + __extends(C3, _super); + function C3() { + _super.apply(this, arguments); + } + return C3; +}(SomeUndefinedFunction)); diff --git a/tests/baselines/reference/declarationEmit_inferedDefaultExportType.js b/tests/baselines/reference/declarationEmit_inferedDefaultExportType.js new file mode 100644 index 00000000000..ee80738a269 --- /dev/null +++ b/tests/baselines/reference/declarationEmit_inferedDefaultExportType.js @@ -0,0 +1,26 @@ +//// [declarationEmit_inferedDefaultExportType.ts] + +// test.ts +export default { + foo: [], + bar: undefined, + baz: null +} + +//// [declarationEmit_inferedDefaultExportType.js] +"use strict"; +exports.__esModule = true; +exports["default"] = { + foo: [], + bar: undefined, + baz: null +}; + + +//// [declarationEmit_inferedDefaultExportType.d.ts] +declare var _default: { + foo: any[]; + bar: any; + baz: any; +}; +export default _default; diff --git a/tests/baselines/reference/declarationEmit_inferedDefaultExportType.symbols b/tests/baselines/reference/declarationEmit_inferedDefaultExportType.symbols new file mode 100644 index 00000000000..7e8cdea2c75 --- /dev/null +++ b/tests/baselines/reference/declarationEmit_inferedDefaultExportType.symbols @@ -0,0 +1,14 @@ +=== tests/cases/compiler/declarationEmit_inferedDefaultExportType.ts === + +// test.ts +export default { + foo: [], +>foo : Symbol(foo, Decl(declarationEmit_inferedDefaultExportType.ts, 2, 16)) + + bar: undefined, +>bar : Symbol(bar, Decl(declarationEmit_inferedDefaultExportType.ts, 3, 10)) +>undefined : Symbol(undefined) + + baz: null +>baz : Symbol(baz, Decl(declarationEmit_inferedDefaultExportType.ts, 4, 17)) +} diff --git a/tests/baselines/reference/declarationEmit_inferedDefaultExportType.types b/tests/baselines/reference/declarationEmit_inferedDefaultExportType.types new file mode 100644 index 00000000000..0f5d0ceed91 --- /dev/null +++ b/tests/baselines/reference/declarationEmit_inferedDefaultExportType.types @@ -0,0 +1,18 @@ +=== tests/cases/compiler/declarationEmit_inferedDefaultExportType.ts === + +// test.ts +export default { +>{ foo: [], bar: undefined, baz: null} : { foo: undefined[]; bar: undefined; baz: null; } + + foo: [], +>foo : undefined[] +>[] : undefined[] + + bar: undefined, +>bar : undefined +>undefined : undefined + + baz: null +>baz : null +>null : null +} diff --git a/tests/baselines/reference/declarationEmit_inferedDefaultExportType2.js b/tests/baselines/reference/declarationEmit_inferedDefaultExportType2.js new file mode 100644 index 00000000000..617d4a9966b --- /dev/null +++ b/tests/baselines/reference/declarationEmit_inferedDefaultExportType2.js @@ -0,0 +1,25 @@ +//// [declarationEmit_inferedDefaultExportType2.ts] + +// test.ts +export = { + foo: [], + bar: undefined, + baz: null +} + +//// [declarationEmit_inferedDefaultExportType2.js] +"use strict"; +module.exports = { + foo: [], + bar: undefined, + baz: null +}; + + +//// [declarationEmit_inferedDefaultExportType2.d.ts] +declare var _default: { + foo: any[]; + bar: any; + baz: any; +}; +export = _default; diff --git a/tests/baselines/reference/declarationEmit_inferedDefaultExportType2.symbols b/tests/baselines/reference/declarationEmit_inferedDefaultExportType2.symbols new file mode 100644 index 00000000000..d04c50c0d7c --- /dev/null +++ b/tests/baselines/reference/declarationEmit_inferedDefaultExportType2.symbols @@ -0,0 +1,14 @@ +=== tests/cases/compiler/declarationEmit_inferedDefaultExportType2.ts === + +// test.ts +export = { + foo: [], +>foo : Symbol(foo, Decl(declarationEmit_inferedDefaultExportType2.ts, 2, 10)) + + bar: undefined, +>bar : Symbol(bar, Decl(declarationEmit_inferedDefaultExportType2.ts, 3, 10)) +>undefined : Symbol(undefined) + + baz: null +>baz : Symbol(baz, Decl(declarationEmit_inferedDefaultExportType2.ts, 4, 17)) +} diff --git a/tests/baselines/reference/declarationEmit_inferedDefaultExportType2.types b/tests/baselines/reference/declarationEmit_inferedDefaultExportType2.types new file mode 100644 index 00000000000..5c8cbbb158c --- /dev/null +++ b/tests/baselines/reference/declarationEmit_inferedDefaultExportType2.types @@ -0,0 +1,18 @@ +=== tests/cases/compiler/declarationEmit_inferedDefaultExportType2.ts === + +// test.ts +export = { +>{ foo: [], bar: undefined, baz: null} : { foo: undefined[]; bar: undefined; baz: null; } + + foo: [], +>foo : undefined[] +>[] : undefined[] + + bar: undefined, +>bar : undefined +>undefined : undefined + + baz: null +>baz : null +>null : null +} diff --git a/tests/baselines/reference/declarationEmit_invalidExport.errors.txt b/tests/baselines/reference/declarationEmit_invalidExport.errors.txt new file mode 100644 index 00000000000..19d650d6d6f --- /dev/null +++ b/tests/baselines/reference/declarationEmit_invalidExport.errors.txt @@ -0,0 +1,19 @@ +tests/cases/compiler/declarationEmit_invalidExport.ts(3,3): error TS7027: Unreachable code detected. +tests/cases/compiler/declarationEmit_invalidExport.ts(5,30): error TS4081: Exported type alias 'MyClass' has or is using private name 'myClass'. +tests/cases/compiler/declarationEmit_invalidExport.ts(6,1): error TS1128: Declaration or statement expected. + + +==== tests/cases/compiler/declarationEmit_invalidExport.ts (3 errors) ==== + + if (false) { + export var myClass = 0; + ~~~~~~ +!!! error TS7027: Unreachable code detected. + } + export type MyClass = typeof myClass; + ~~~~~~~ +!!! error TS4081: Exported type alias 'MyClass' has or is using private name 'myClass'. + } + ~ +!!! error TS1128: Declaration or statement expected. + \ No newline at end of file diff --git a/tests/baselines/reference/declarationEmit_invalidExport.js b/tests/baselines/reference/declarationEmit_invalidExport.js new file mode 100644 index 00000000000..61682ca5642 --- /dev/null +++ b/tests/baselines/reference/declarationEmit_invalidExport.js @@ -0,0 +1,14 @@ +//// [declarationEmit_invalidExport.ts] + +if (false) { + export var myClass = 0; +} +export type MyClass = typeof myClass; +} + + +//// [declarationEmit_invalidExport.js] +"use strict"; +if (false) { + exports.myClass = 0; +} diff --git a/tests/baselines/reference/declarationEmit_protectedMembers.symbols b/tests/baselines/reference/declarationEmit_protectedMembers.symbols index cbf3db094ea..ee9f5ce199d 100644 --- a/tests/baselines/reference/declarationEmit_protectedMembers.symbols +++ b/tests/baselines/reference/declarationEmit_protectedMembers.symbols @@ -5,23 +5,23 @@ class C1 { >C1 : Symbol(C1, Decl(declarationEmit_protectedMembers.ts, 0, 0)) protected x: number; ->x : Symbol(x, Decl(declarationEmit_protectedMembers.ts, 2, 10)) +>x : Symbol(C1.x, Decl(declarationEmit_protectedMembers.ts, 2, 10)) protected f() { ->f : Symbol(f, Decl(declarationEmit_protectedMembers.ts, 3, 24)) +>f : Symbol(C1.f, Decl(declarationEmit_protectedMembers.ts, 3, 24)) return this.x; ->this.x : Symbol(x, Decl(declarationEmit_protectedMembers.ts, 2, 10)) +>this.x : Symbol(C1.x, Decl(declarationEmit_protectedMembers.ts, 2, 10)) >this : Symbol(C1, Decl(declarationEmit_protectedMembers.ts, 0, 0)) ->x : Symbol(x, Decl(declarationEmit_protectedMembers.ts, 2, 10)) +>x : Symbol(C1.x, Decl(declarationEmit_protectedMembers.ts, 2, 10)) } protected set accessor(a: number) { } ->accessor : Symbol(accessor, Decl(declarationEmit_protectedMembers.ts, 7, 5), Decl(declarationEmit_protectedMembers.ts, 9, 41)) +>accessor : Symbol(C1.accessor, Decl(declarationEmit_protectedMembers.ts, 7, 5), Decl(declarationEmit_protectedMembers.ts, 9, 41)) >a : Symbol(a, Decl(declarationEmit_protectedMembers.ts, 9, 27)) protected get accessor() { return 0; } ->accessor : Symbol(accessor, Decl(declarationEmit_protectedMembers.ts, 7, 5), Decl(declarationEmit_protectedMembers.ts, 9, 41)) +>accessor : Symbol(C1.accessor, Decl(declarationEmit_protectedMembers.ts, 7, 5), Decl(declarationEmit_protectedMembers.ts, 9, 41)) protected static sx: number; >sx : Symbol(C1.sx, Decl(declarationEmit_protectedMembers.ts, 10, 42)) @@ -49,7 +49,7 @@ class C2 extends C1 { >C1 : Symbol(C1, Decl(declarationEmit_protectedMembers.ts, 0, 0)) protected f() { ->f : Symbol(f, Decl(declarationEmit_protectedMembers.ts, 23, 21)) +>f : Symbol(C2.f, Decl(declarationEmit_protectedMembers.ts, 23, 21)) return super.f() + this.x; >super.f : Symbol(C1.f, Decl(declarationEmit_protectedMembers.ts, 3, 24)) @@ -78,13 +78,13 @@ class C3 extends C2 { >C2 : Symbol(C2, Decl(declarationEmit_protectedMembers.ts, 20, 1)) x: number; ->x : Symbol(x, Decl(declarationEmit_protectedMembers.ts, 33, 21)) +>x : Symbol(C3.x, Decl(declarationEmit_protectedMembers.ts, 33, 21)) static sx: number; >sx : Symbol(C3.sx, Decl(declarationEmit_protectedMembers.ts, 34, 14)) f() { ->f : Symbol(f, Decl(declarationEmit_protectedMembers.ts, 35, 22)) +>f : Symbol(C3.f, Decl(declarationEmit_protectedMembers.ts, 35, 22)) return super.f(); >super.f : Symbol(C2.f, Decl(declarationEmit_protectedMembers.ts, 23, 21)) @@ -109,6 +109,6 @@ class C4 { >C4 : Symbol(C4, Decl(declarationEmit_protectedMembers.ts, 44, 1)) constructor(protected a: number, protected b) { } ->a : Symbol(a, Decl(declarationEmit_protectedMembers.ts, 48, 16)) ->b : Symbol(b, Decl(declarationEmit_protectedMembers.ts, 48, 36)) +>a : Symbol(C4.a, Decl(declarationEmit_protectedMembers.ts, 48, 16)) +>b : Symbol(C4.b, Decl(declarationEmit_protectedMembers.ts, 48, 36)) } diff --git a/tests/baselines/reference/declarationMerging1.symbols b/tests/baselines/reference/declarationMerging1.symbols index 08fe0d4c1fd..7c15b18c5e2 100644 --- a/tests/baselines/reference/declarationMerging1.symbols +++ b/tests/baselines/reference/declarationMerging1.symbols @@ -3,13 +3,13 @@ class A { >A : Symbol(A, Decl(file1.ts, 0, 0), Decl(file2.ts, 0, 0)) protected _f: number; ->_f : Symbol(_f, Decl(file1.ts, 0, 9)) +>_f : Symbol(A._f, Decl(file1.ts, 0, 9)) getF() { return this._f; } ->getF : Symbol(getF, Decl(file1.ts, 1, 25)) ->this._f : Symbol(_f, Decl(file1.ts, 0, 9)) +>getF : Symbol(A.getF, Decl(file1.ts, 1, 25)) +>this._f : Symbol(A._f, Decl(file1.ts, 0, 9)) >this : Symbol(A, Decl(file1.ts, 0, 0), Decl(file2.ts, 0, 0)) ->_f : Symbol(_f, Decl(file1.ts, 0, 9)) +>_f : Symbol(A._f, Decl(file1.ts, 0, 9)) } === tests/cases/compiler/file2.ts === @@ -17,5 +17,5 @@ interface A { >A : Symbol(A, Decl(file1.ts, 0, 0), Decl(file2.ts, 0, 0)) run(); ->run : Symbol(run, Decl(file2.ts, 0, 13)) +>run : Symbol(A.run, Decl(file2.ts, 0, 13)) } diff --git a/tests/baselines/reference/declarationMerging2.symbols b/tests/baselines/reference/declarationMerging2.symbols index b3891374d32..050b5414da5 100644 --- a/tests/baselines/reference/declarationMerging2.symbols +++ b/tests/baselines/reference/declarationMerging2.symbols @@ -4,13 +4,13 @@ export class A { >A : Symbol(A, Decl(a.ts, 0, 0), Decl(b.ts, 1, 22)) protected _f: number; ->_f : Symbol(_f, Decl(a.ts, 1, 16)) +>_f : Symbol(A._f, Decl(a.ts, 1, 16)) getF() { return this._f; } ->getF : Symbol(getF, Decl(a.ts, 2, 25)) ->this._f : Symbol(_f, Decl(a.ts, 1, 16)) +>getF : Symbol(A.getF, Decl(a.ts, 2, 25)) +>this._f : Symbol(A._f, Decl(a.ts, 1, 16)) >this : Symbol(A, Decl(a.ts, 0, 0), Decl(b.ts, 1, 22)) ->_f : Symbol(_f, Decl(a.ts, 1, 16)) +>_f : Symbol(A._f, Decl(a.ts, 1, 16)) } === tests/cases/compiler/b.ts === @@ -20,6 +20,6 @@ declare module "./a" { >A : Symbol(A, Decl(a.ts, 0, 0), Decl(b.ts, 1, 22)) run(); ->run : Symbol(run, Decl(b.ts, 2, 17)) +>run : Symbol(A.run, Decl(b.ts, 2, 17)) } } diff --git a/tests/baselines/reference/declareExternalModuleWithExportAssignedFundule.symbols b/tests/baselines/reference/declareExternalModuleWithExportAssignedFundule.symbols index 0b1b06cc99e..af691ce828c 100644 --- a/tests/baselines/reference/declareExternalModuleWithExportAssignedFundule.symbols +++ b/tests/baselines/reference/declareExternalModuleWithExportAssignedFundule.symbols @@ -16,12 +16,12 @@ declare module "express" { >ExpressServer : Symbol(ExpressServer, Decl(declareExternalModuleWithExportAssignedFundule.ts, 6, 20)) enable(name: string): ExpressServer; ->enable : Symbol(enable, Decl(declareExternalModuleWithExportAssignedFundule.ts, 8, 40)) +>enable : Symbol(ExpressServer.enable, Decl(declareExternalModuleWithExportAssignedFundule.ts, 8, 40)) >name : Symbol(name, Decl(declareExternalModuleWithExportAssignedFundule.ts, 10, 19)) >ExpressServer : Symbol(ExpressServer, Decl(declareExternalModuleWithExportAssignedFundule.ts, 6, 20)) post(path: RegExp, handler: (req: Function) => void ): void; ->post : Symbol(post, Decl(declareExternalModuleWithExportAssignedFundule.ts, 10, 48)) +>post : Symbol(ExpressServer.post, Decl(declareExternalModuleWithExportAssignedFundule.ts, 10, 48)) >path : Symbol(path, Decl(declareExternalModuleWithExportAssignedFundule.ts, 12, 17)) >RegExp : Symbol(RegExp, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >handler : Symbol(handler, Decl(declareExternalModuleWithExportAssignedFundule.ts, 12, 30)) diff --git a/tests/baselines/reference/declareFileExportAssignment.symbols b/tests/baselines/reference/declareFileExportAssignment.symbols index bb626e9eeab..012b5db24b1 100644 --- a/tests/baselines/reference/declareFileExportAssignment.symbols +++ b/tests/baselines/reference/declareFileExportAssignment.symbols @@ -14,13 +14,13 @@ module m2 { >connectExport : Symbol(connectExport, Decl(declareFileExportAssignment.ts, 3, 5)) use: (mod: connectModule) => connectExport; ->use : Symbol(use, Decl(declareFileExportAssignment.ts, 4, 36)) +>use : Symbol(connectExport.use, Decl(declareFileExportAssignment.ts, 4, 36)) >mod : Symbol(mod, Decl(declareFileExportAssignment.ts, 5, 14)) >connectModule : Symbol(connectModule, Decl(declareFileExportAssignment.ts, 0, 11)) >connectExport : Symbol(connectExport, Decl(declareFileExportAssignment.ts, 3, 5)) listen: (port: number) => void; ->listen : Symbol(listen, Decl(declareFileExportAssignment.ts, 5, 51)) +>listen : Symbol(connectExport.listen, Decl(declareFileExportAssignment.ts, 5, 51)) >port : Symbol(port, Decl(declareFileExportAssignment.ts, 6, 17)) } diff --git a/tests/baselines/reference/declareFileExportAssignmentWithVarFromVariableStatement.symbols b/tests/baselines/reference/declareFileExportAssignmentWithVarFromVariableStatement.symbols index e829c3d2f92..e757604a920 100644 --- a/tests/baselines/reference/declareFileExportAssignmentWithVarFromVariableStatement.symbols +++ b/tests/baselines/reference/declareFileExportAssignmentWithVarFromVariableStatement.symbols @@ -14,13 +14,13 @@ module m2 { >connectExport : Symbol(connectExport, Decl(declareFileExportAssignmentWithVarFromVariableStatement.ts, 3, 5)) use: (mod: connectModule) => connectExport; ->use : Symbol(use, Decl(declareFileExportAssignmentWithVarFromVariableStatement.ts, 4, 36)) +>use : Symbol(connectExport.use, Decl(declareFileExportAssignmentWithVarFromVariableStatement.ts, 4, 36)) >mod : Symbol(mod, Decl(declareFileExportAssignmentWithVarFromVariableStatement.ts, 5, 14)) >connectModule : Symbol(connectModule, Decl(declareFileExportAssignmentWithVarFromVariableStatement.ts, 0, 11)) >connectExport : Symbol(connectExport, Decl(declareFileExportAssignmentWithVarFromVariableStatement.ts, 3, 5)) listen: (port: number) => void; ->listen : Symbol(listen, Decl(declareFileExportAssignmentWithVarFromVariableStatement.ts, 5, 51)) +>listen : Symbol(connectExport.listen, Decl(declareFileExportAssignmentWithVarFromVariableStatement.ts, 5, 51)) >port : Symbol(port, Decl(declareFileExportAssignmentWithVarFromVariableStatement.ts, 6, 17)) } diff --git a/tests/baselines/reference/declaredExternalModule.symbols b/tests/baselines/reference/declaredExternalModule.symbols index e6fde33f2d0..fb331ecf011 100644 --- a/tests/baselines/reference/declaredExternalModule.symbols +++ b/tests/baselines/reference/declaredExternalModule.symbols @@ -15,13 +15,13 @@ declare module 'connect' { >connectExport : Symbol(connectExport, Decl(declaredExternalModule.ts, 6, 5)) use: (mod: connectModule) => connectExport; ->use : Symbol(use, Decl(declaredExternalModule.ts, 8, 29)) +>use : Symbol(connectExport.use, Decl(declaredExternalModule.ts, 8, 29)) >mod : Symbol(mod, Decl(declaredExternalModule.ts, 10, 14)) >connectModule : Symbol(connectModule, Decl(declaredExternalModule.ts, 0, 26)) >connectExport : Symbol(connectExport, Decl(declaredExternalModule.ts, 6, 5)) listen: (port: number) => void; ->listen : Symbol(listen, Decl(declaredExternalModule.ts, 10, 51)) +>listen : Symbol(connectExport.listen, Decl(declaredExternalModule.ts, 10, 51)) >port : Symbol(port, Decl(declaredExternalModule.ts, 12, 17)) } diff --git a/tests/baselines/reference/declaredExternalModuleWithExportAssignment.symbols b/tests/baselines/reference/declaredExternalModuleWithExportAssignment.symbols index 360f57d7a9a..efba0c20c41 100644 --- a/tests/baselines/reference/declaredExternalModuleWithExportAssignment.symbols +++ b/tests/baselines/reference/declaredExternalModuleWithExportAssignment.symbols @@ -13,13 +13,13 @@ declare module 'connect' { >connectExport : Symbol(connectExport, Decl(declaredExternalModuleWithExportAssignment.ts, 3, 5)) use: (mod: connectModule) => connectExport; ->use : Symbol(use, Decl(declaredExternalModuleWithExportAssignment.ts, 5, 29)) +>use : Symbol(connectExport.use, Decl(declaredExternalModuleWithExportAssignment.ts, 5, 29)) >mod : Symbol(mod, Decl(declaredExternalModuleWithExportAssignment.ts, 6, 14)) >connectModule : Symbol(connectModule, Decl(declaredExternalModuleWithExportAssignment.ts, 0, 26)) >connectExport : Symbol(connectExport, Decl(declaredExternalModuleWithExportAssignment.ts, 3, 5)) listen: (port: number) => void; ->listen : Symbol(listen, Decl(declaredExternalModuleWithExportAssignment.ts, 6, 51)) +>listen : Symbol(connectExport.listen, Decl(declaredExternalModuleWithExportAssignment.ts, 6, 51)) >port : Symbol(port, Decl(declaredExternalModuleWithExportAssignment.ts, 7, 17)) } diff --git a/tests/baselines/reference/decoratedDefaultExportsGetExportedAmd.symbols b/tests/baselines/reference/decoratedDefaultExportsGetExportedAmd.symbols index 4414fd9ef87..3e7ec568927 100644 --- a/tests/baselines/reference/decoratedDefaultExportsGetExportedAmd.symbols +++ b/tests/baselines/reference/decoratedDefaultExportsGetExportedAmd.symbols @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/moduleExportsAmd/a.ts === var decorator: ClassDecorator; >decorator : Symbol(decorator, Decl(a.ts, 0, 3)) ->ClassDecorator : Symbol(ClassDecorator, Decl(lib.d.ts, --, --)) +>ClassDecorator : Symbol(ClassDecorator, Decl(lib.es5.d.ts, --, --)) @decorator >decorator : Symbol(decorator, Decl(a.ts, 0, 3)) @@ -12,7 +12,7 @@ export default class Foo {} === tests/cases/conformance/es6/moduleExportsAmd/b.ts === var decorator: ClassDecorator; >decorator : Symbol(decorator, Decl(b.ts, 0, 3)) ->ClassDecorator : Symbol(ClassDecorator, Decl(lib.d.ts, --, --)) +>ClassDecorator : Symbol(ClassDecorator, Decl(lib.es5.d.ts, --, --)) @decorator >decorator : Symbol(decorator, Decl(b.ts, 0, 3)) diff --git a/tests/baselines/reference/decoratedDefaultExportsGetExportedCommonjs.symbols b/tests/baselines/reference/decoratedDefaultExportsGetExportedCommonjs.symbols index 4eafc337573..383d7d2c0d2 100644 --- a/tests/baselines/reference/decoratedDefaultExportsGetExportedCommonjs.symbols +++ b/tests/baselines/reference/decoratedDefaultExportsGetExportedCommonjs.symbols @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/moduleExportsCommonjs/a.ts === var decorator: ClassDecorator; >decorator : Symbol(decorator, Decl(a.ts, 0, 3)) ->ClassDecorator : Symbol(ClassDecorator, Decl(lib.d.ts, --, --)) +>ClassDecorator : Symbol(ClassDecorator, Decl(lib.es5.d.ts, --, --)) @decorator >decorator : Symbol(decorator, Decl(a.ts, 0, 3)) @@ -12,7 +12,7 @@ export default class Foo {} === tests/cases/conformance/es6/moduleExportsCommonjs/b.ts === var decorator: ClassDecorator; >decorator : Symbol(decorator, Decl(b.ts, 0, 3)) ->ClassDecorator : Symbol(ClassDecorator, Decl(lib.d.ts, --, --)) +>ClassDecorator : Symbol(ClassDecorator, Decl(lib.es5.d.ts, --, --)) @decorator >decorator : Symbol(decorator, Decl(b.ts, 0, 3)) diff --git a/tests/baselines/reference/decoratedDefaultExportsGetExportedSystem.js b/tests/baselines/reference/decoratedDefaultExportsGetExportedSystem.js index e2d9d0f0a6d..d5cd115edc0 100644 --- a/tests/baselines/reference/decoratedDefaultExportsGetExportedSystem.js +++ b/tests/baselines/reference/decoratedDefaultExportsGetExportedSystem.js @@ -26,7 +26,7 @@ System.register([], function(exports_1, context_1) { return { setters:[], execute: function() { - let Foo = class Foo { + Foo = class Foo { }; Foo = __decorate([ decorator @@ -49,7 +49,7 @@ System.register([], function(exports_1, context_1) { return { setters:[], execute: function() { - let default_1 = class { + default_1 = class { }; default_1 = __decorate([ decorator diff --git a/tests/baselines/reference/decoratedDefaultExportsGetExportedSystem.symbols b/tests/baselines/reference/decoratedDefaultExportsGetExportedSystem.symbols index 3751c992fa5..73898da76c4 100644 --- a/tests/baselines/reference/decoratedDefaultExportsGetExportedSystem.symbols +++ b/tests/baselines/reference/decoratedDefaultExportsGetExportedSystem.symbols @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/moduleExportsSystem/a.ts === var decorator: ClassDecorator; >decorator : Symbol(decorator, Decl(a.ts, 0, 3)) ->ClassDecorator : Symbol(ClassDecorator, Decl(lib.d.ts, --, --)) +>ClassDecorator : Symbol(ClassDecorator, Decl(lib.es5.d.ts, --, --)) @decorator >decorator : Symbol(decorator, Decl(a.ts, 0, 3)) @@ -12,7 +12,7 @@ export default class Foo {} === tests/cases/conformance/es6/moduleExportsSystem/b.ts === var decorator: ClassDecorator; >decorator : Symbol(decorator, Decl(b.ts, 0, 3)) ->ClassDecorator : Symbol(ClassDecorator, Decl(lib.d.ts, --, --)) +>ClassDecorator : Symbol(ClassDecorator, Decl(lib.es5.d.ts, --, --)) @decorator >decorator : Symbol(decorator, Decl(b.ts, 0, 3)) diff --git a/tests/baselines/reference/decoratedDefaultExportsGetExportedUmd.symbols b/tests/baselines/reference/decoratedDefaultExportsGetExportedUmd.symbols index 5ea35d450d0..f93e5411306 100644 --- a/tests/baselines/reference/decoratedDefaultExportsGetExportedUmd.symbols +++ b/tests/baselines/reference/decoratedDefaultExportsGetExportedUmd.symbols @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/moduleExportsUmd/a.ts === var decorator: ClassDecorator; >decorator : Symbol(decorator, Decl(a.ts, 0, 3)) ->ClassDecorator : Symbol(ClassDecorator, Decl(lib.d.ts, --, --)) +>ClassDecorator : Symbol(ClassDecorator, Decl(lib.es5.d.ts, --, --)) @decorator >decorator : Symbol(decorator, Decl(a.ts, 0, 3)) @@ -12,7 +12,7 @@ export default class Foo {} === tests/cases/conformance/es6/moduleExportsUmd/b.ts === var decorator: ClassDecorator; >decorator : Symbol(decorator, Decl(b.ts, 0, 3)) ->ClassDecorator : Symbol(ClassDecorator, Decl(lib.d.ts, --, --)) +>ClassDecorator : Symbol(ClassDecorator, Decl(lib.es5.d.ts, --, --)) @decorator >decorator : Symbol(decorator, Decl(b.ts, 0, 3)) diff --git a/tests/baselines/reference/decoratorMetadata.symbols b/tests/baselines/reference/decoratorMetadata.symbols index 842982286d4..ab0ae42dbb3 100644 --- a/tests/baselines/reference/decoratorMetadata.symbols +++ b/tests/baselines/reference/decoratorMetadata.symbols @@ -16,7 +16,7 @@ class MyComponent { >MyComponent : Symbol(MyComponent, Decl(component.ts, 2, 27)) constructor(public Service: Service) { ->Service : Symbol(Service, Decl(component.ts, 6, 16)) +>Service : Symbol(MyComponent.Service, Decl(component.ts, 6, 16)) >Service : Symbol(Service, Decl(component.ts, 0, 6)) } @@ -24,7 +24,7 @@ class MyComponent { >decorator : Symbol(decorator, Decl(component.ts, 2, 11)) method(x: this) { ->method : Symbol(method, Decl(component.ts, 7, 5)) +>method : Symbol(MyComponent.method, Decl(component.ts, 7, 5)) >x : Symbol(x, Decl(component.ts, 10, 11)) } } diff --git a/tests/baselines/reference/decoratorMetadataForMethodWithNoReturnTypeAnnotation01.symbols b/tests/baselines/reference/decoratorMetadataForMethodWithNoReturnTypeAnnotation01.symbols index 79c6fcbf24f..cf550fb26e1 100644 --- a/tests/baselines/reference/decoratorMetadataForMethodWithNoReturnTypeAnnotation01.symbols +++ b/tests/baselines/reference/decoratorMetadataForMethodWithNoReturnTypeAnnotation01.symbols @@ -16,7 +16,7 @@ class MyClass { >decorator : Symbol(decorator, Decl(decoratorMetadataForMethodWithNoReturnTypeAnnotation01.ts, 1, 11)) doSomething() { ->doSomething : Symbol(doSomething, Decl(decoratorMetadataForMethodWithNoReturnTypeAnnotation01.ts, 6, 5)) +>doSomething : Symbol(MyClass.doSomething, Decl(decoratorMetadataForMethodWithNoReturnTypeAnnotation01.ts, 6, 5)) } } diff --git a/tests/baselines/reference/decoratorMetadataOnInferredType.symbols b/tests/baselines/reference/decoratorMetadataOnInferredType.symbols index 09530f9cecf..5e0568a44a2 100644 --- a/tests/baselines/reference/decoratorMetadataOnInferredType.symbols +++ b/tests/baselines/reference/decoratorMetadataOnInferredType.symbols @@ -32,7 +32,7 @@ export class B { >decorator : Symbol(decorator, Decl(decoratorMetadataOnInferredType.ts, 7, 1)) x = new A(); ->x : Symbol(x, Decl(decoratorMetadataOnInferredType.ts, 12, 16)) +>x : Symbol(B.x, Decl(decoratorMetadataOnInferredType.ts, 12, 16)) >A : Symbol(A, Decl(decoratorMetadataOnInferredType.ts, 3, 2)) } diff --git a/tests/baselines/reference/decoratorMetadataWithConstructorType.symbols b/tests/baselines/reference/decoratorMetadataWithConstructorType.symbols index db1c388f206..5ee6edd1aee 100644 --- a/tests/baselines/reference/decoratorMetadataWithConstructorType.symbols +++ b/tests/baselines/reference/decoratorMetadataWithConstructorType.symbols @@ -32,7 +32,7 @@ export class B { >decorator : Symbol(decorator, Decl(decoratorMetadataWithConstructorType.ts, 7, 1)) x: A = new A(); ->x : Symbol(x, Decl(decoratorMetadataWithConstructorType.ts, 12, 16)) +>x : Symbol(B.x, Decl(decoratorMetadataWithConstructorType.ts, 12, 16)) >A : Symbol(A, Decl(decoratorMetadataWithConstructorType.ts, 3, 2)) >A : Symbol(A, Decl(decoratorMetadataWithConstructorType.ts, 3, 2)) } diff --git a/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision.symbols b/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision.symbols index c967239df99..20b77b7550f 100644 --- a/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision.symbols +++ b/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision.symbols @@ -3,7 +3,7 @@ export class db { >db : Symbol(db, Decl(db.ts, 0, 0)) public doSomething() { ->doSomething : Symbol(doSomething, Decl(db.ts, 0, 17)) +>doSomething : Symbol(db.doSomething, Decl(db.ts, 0, 17)) } } @@ -25,7 +25,7 @@ class MyClass { >MyClass : Symbol(MyClass, Decl(service.ts, 3, 1)) db: db; ->db : Symbol(db, Decl(service.ts, 5, 15)) +>db : Symbol(MyClass.db, Decl(service.ts, 5, 15)) >db : Symbol(db, Decl(service.ts, 0, 8)) constructor(db: db) { @@ -33,16 +33,16 @@ class MyClass { >db : Symbol(db, Decl(service.ts, 0, 8)) this.db = db; ->this.db : Symbol(db, Decl(service.ts, 5, 15)) +>this.db : Symbol(MyClass.db, Decl(service.ts, 5, 15)) >this : Symbol(MyClass, Decl(service.ts, 3, 1)) ->db : Symbol(db, Decl(service.ts, 5, 15)) +>db : Symbol(MyClass.db, Decl(service.ts, 5, 15)) >db : Symbol(db, Decl(service.ts, 8, 16)) this.db.doSomething(); >this.db.doSomething : Symbol(db.doSomething, Decl(db.ts, 0, 17)) ->this.db : Symbol(db, Decl(service.ts, 5, 15)) +>this.db : Symbol(MyClass.db, Decl(service.ts, 5, 15)) >this : Symbol(MyClass, Decl(service.ts, 3, 1)) ->db : Symbol(db, Decl(service.ts, 5, 15)) +>db : Symbol(MyClass.db, Decl(service.ts, 5, 15)) >doSomething : Symbol(db.doSomething, Decl(db.ts, 0, 17)) } } diff --git a/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision2.symbols b/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision2.symbols index d79b05f68f6..b25eaf73fbd 100644 --- a/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision2.symbols +++ b/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision2.symbols @@ -3,7 +3,7 @@ export class db { >db : Symbol(db, Decl(db.ts, 0, 0)) public doSomething() { ->doSomething : Symbol(doSomething, Decl(db.ts, 0, 17)) +>doSomething : Symbol(db.doSomething, Decl(db.ts, 0, 17)) } } @@ -26,7 +26,7 @@ class MyClass { >MyClass : Symbol(MyClass, Decl(service.ts, 3, 1)) db: Database; ->db : Symbol(db, Decl(service.ts, 5, 15)) +>db : Symbol(MyClass.db, Decl(service.ts, 5, 15)) >Database : Symbol(Database, Decl(service.ts, 0, 8)) constructor(db: Database) { // no collision @@ -34,16 +34,16 @@ class MyClass { >Database : Symbol(Database, Decl(service.ts, 0, 8)) this.db = db; ->this.db : Symbol(db, Decl(service.ts, 5, 15)) +>this.db : Symbol(MyClass.db, Decl(service.ts, 5, 15)) >this : Symbol(MyClass, Decl(service.ts, 3, 1)) ->db : Symbol(db, Decl(service.ts, 5, 15)) +>db : Symbol(MyClass.db, Decl(service.ts, 5, 15)) >db : Symbol(db, Decl(service.ts, 8, 16)) this.db.doSomething(); >this.db.doSomething : Symbol(Database.doSomething, Decl(db.ts, 0, 17)) ->this.db : Symbol(db, Decl(service.ts, 5, 15)) +>this.db : Symbol(MyClass.db, Decl(service.ts, 5, 15)) >this : Symbol(MyClass, Decl(service.ts, 3, 1)) ->db : Symbol(db, Decl(service.ts, 5, 15)) +>db : Symbol(MyClass.db, Decl(service.ts, 5, 15)) >doSomething : Symbol(Database.doSomething, Decl(db.ts, 0, 17)) } } diff --git a/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision3.symbols b/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision3.symbols index b34468c7bd5..867b519a166 100644 --- a/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision3.symbols +++ b/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision3.symbols @@ -16,7 +16,7 @@ class MyClass { >MyClass : Symbol(MyClass, Decl(service.ts, 3, 1)) db: db.db; ->db : Symbol(db, Decl(service.ts, 5, 15)) +>db : Symbol(MyClass.db, Decl(service.ts, 5, 15)) >db : Symbol(db, Decl(service.ts, 0, 0)) >db : Symbol(db.db, Decl(db.ts, 0, 0)) @@ -26,16 +26,16 @@ class MyClass { >db : Symbol(db.db, Decl(db.ts, 0, 0)) this.db = db; ->this.db : Symbol(db, Decl(service.ts, 5, 15)) +>this.db : Symbol(MyClass.db, Decl(service.ts, 5, 15)) >this : Symbol(MyClass, Decl(service.ts, 3, 1)) ->db : Symbol(db, Decl(service.ts, 5, 15)) +>db : Symbol(MyClass.db, Decl(service.ts, 5, 15)) >db : Symbol(db, Decl(service.ts, 8, 16)) this.db.doSomething(); >this.db.doSomething : Symbol(db.db.doSomething, Decl(db.ts, 0, 17)) ->this.db : Symbol(db, Decl(service.ts, 5, 15)) +>this.db : Symbol(MyClass.db, Decl(service.ts, 5, 15)) >this : Symbol(MyClass, Decl(service.ts, 3, 1)) ->db : Symbol(db, Decl(service.ts, 5, 15)) +>db : Symbol(MyClass.db, Decl(service.ts, 5, 15)) >doSomething : Symbol(db.db.doSomething, Decl(db.ts, 0, 17)) } } @@ -47,7 +47,7 @@ export class db { >db : Symbol(db, Decl(db.ts, 0, 0)) public doSomething() { ->doSomething : Symbol(doSomething, Decl(db.ts, 0, 17)) +>doSomething : Symbol(db.doSomething, Decl(db.ts, 0, 17)) } } diff --git a/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision5.symbols b/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision5.symbols index 6047d7f2882..dbf9d93654b 100644 --- a/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision5.symbols +++ b/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision5.symbols @@ -3,7 +3,7 @@ export default class db { >db : Symbol(db, Decl(db.ts, 0, 0)) public doSomething() { ->doSomething : Symbol(doSomething, Decl(db.ts, 0, 25)) +>doSomething : Symbol(db.doSomething, Decl(db.ts, 0, 25)) } } @@ -25,7 +25,7 @@ class MyClass { >MyClass : Symbol(MyClass, Decl(service.ts, 3, 1)) db: db; ->db : Symbol(db, Decl(service.ts, 5, 15)) +>db : Symbol(MyClass.db, Decl(service.ts, 5, 15)) >db : Symbol(db, Decl(service.ts, 0, 6)) constructor(db: db) { // collision @@ -33,16 +33,16 @@ class MyClass { >db : Symbol(db, Decl(service.ts, 0, 6)) this.db = db; ->this.db : Symbol(db, Decl(service.ts, 5, 15)) +>this.db : Symbol(MyClass.db, Decl(service.ts, 5, 15)) >this : Symbol(MyClass, Decl(service.ts, 3, 1)) ->db : Symbol(db, Decl(service.ts, 5, 15)) +>db : Symbol(MyClass.db, Decl(service.ts, 5, 15)) >db : Symbol(db, Decl(service.ts, 8, 16)) this.db.doSomething(); >this.db.doSomething : Symbol(db.doSomething, Decl(db.ts, 0, 25)) ->this.db : Symbol(db, Decl(service.ts, 5, 15)) +>this.db : Symbol(MyClass.db, Decl(service.ts, 5, 15)) >this : Symbol(MyClass, Decl(service.ts, 3, 1)) ->db : Symbol(db, Decl(service.ts, 5, 15)) +>db : Symbol(MyClass.db, Decl(service.ts, 5, 15)) >doSomething : Symbol(db.doSomething, Decl(db.ts, 0, 25)) } } diff --git a/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision6.symbols b/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision6.symbols index 27f807503bf..9225cdd1212 100644 --- a/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision6.symbols +++ b/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision6.symbols @@ -3,7 +3,7 @@ export default class db { >db : Symbol(db, Decl(db.ts, 0, 0)) public doSomething() { ->doSomething : Symbol(doSomething, Decl(db.ts, 0, 25)) +>doSomething : Symbol(db.doSomething, Decl(db.ts, 0, 25)) } } @@ -25,7 +25,7 @@ class MyClass { >MyClass : Symbol(MyClass, Decl(service.ts, 3, 1)) db: database; ->db : Symbol(db, Decl(service.ts, 5, 15)) +>db : Symbol(MyClass.db, Decl(service.ts, 5, 15)) >database : Symbol(database, Decl(service.ts, 0, 6)) constructor(db: database) { // no collision @@ -33,16 +33,16 @@ class MyClass { >database : Symbol(database, Decl(service.ts, 0, 6)) this.db = db; ->this.db : Symbol(db, Decl(service.ts, 5, 15)) +>this.db : Symbol(MyClass.db, Decl(service.ts, 5, 15)) >this : Symbol(MyClass, Decl(service.ts, 3, 1)) ->db : Symbol(db, Decl(service.ts, 5, 15)) +>db : Symbol(MyClass.db, Decl(service.ts, 5, 15)) >db : Symbol(db, Decl(service.ts, 8, 16)) this.db.doSomething(); >this.db.doSomething : Symbol(database.doSomething, Decl(db.ts, 0, 25)) ->this.db : Symbol(db, Decl(service.ts, 5, 15)) +>this.db : Symbol(MyClass.db, Decl(service.ts, 5, 15)) >this : Symbol(MyClass, Decl(service.ts, 3, 1)) ->db : Symbol(db, Decl(service.ts, 5, 15)) +>db : Symbol(MyClass.db, Decl(service.ts, 5, 15)) >doSomething : Symbol(database.doSomething, Decl(db.ts, 0, 25)) } } diff --git a/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision8.symbols b/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision8.symbols index 1b73ea2e9a3..079c9c8ee91 100644 --- a/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision8.symbols +++ b/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision8.symbols @@ -16,7 +16,7 @@ class MyClass { >MyClass : Symbol(MyClass, Decl(service.ts, 3, 1)) db: database.db; ->db : Symbol(db, Decl(service.ts, 5, 15)) +>db : Symbol(MyClass.db, Decl(service.ts, 5, 15)) >database : Symbol(database, Decl(service.ts, 0, 0)) >db : Symbol(database.db, Decl(db.ts, 0, 0)) @@ -26,16 +26,16 @@ class MyClass { >db : Symbol(database.db, Decl(db.ts, 0, 0)) this.db = db; ->this.db : Symbol(db, Decl(service.ts, 5, 15)) +>this.db : Symbol(MyClass.db, Decl(service.ts, 5, 15)) >this : Symbol(MyClass, Decl(service.ts, 3, 1)) ->db : Symbol(db, Decl(service.ts, 5, 15)) +>db : Symbol(MyClass.db, Decl(service.ts, 5, 15)) >db : Symbol(db, Decl(service.ts, 8, 16)) this.db.doSomething(); >this.db.doSomething : Symbol(database.db.doSomething, Decl(db.ts, 0, 17)) ->this.db : Symbol(db, Decl(service.ts, 5, 15)) +>this.db : Symbol(MyClass.db, Decl(service.ts, 5, 15)) >this : Symbol(MyClass, Decl(service.ts, 3, 1)) ->db : Symbol(db, Decl(service.ts, 5, 15)) +>db : Symbol(MyClass.db, Decl(service.ts, 5, 15)) >doSomething : Symbol(database.db.doSomething, Decl(db.ts, 0, 17)) } } @@ -47,7 +47,7 @@ export class db { >db : Symbol(db, Decl(db.ts, 0, 0)) public doSomething() { ->doSomething : Symbol(doSomething, Decl(db.ts, 0, 17)) +>doSomething : Symbol(db.doSomething, Decl(db.ts, 0, 17)) } } diff --git a/tests/baselines/reference/decoratorOnClassAccessor1.symbols b/tests/baselines/reference/decoratorOnClassAccessor1.symbols index 6b8e3a16c18..54fe1c7345d 100644 --- a/tests/baselines/reference/decoratorOnClassAccessor1.symbols +++ b/tests/baselines/reference/decoratorOnClassAccessor1.symbols @@ -15,5 +15,5 @@ class C { @dec get accessor() { return 1; } >dec : Symbol(dec, Decl(decoratorOnClassAccessor1.ts, 0, 0)) ->accessor : Symbol(accessor, Decl(decoratorOnClassAccessor1.ts, 2, 9)) +>accessor : Symbol(C.accessor, Decl(decoratorOnClassAccessor1.ts, 2, 9)) } diff --git a/tests/baselines/reference/decoratorOnClassAccessor2.symbols b/tests/baselines/reference/decoratorOnClassAccessor2.symbols index 936afa14de9..cb85e3b261c 100644 --- a/tests/baselines/reference/decoratorOnClassAccessor2.symbols +++ b/tests/baselines/reference/decoratorOnClassAccessor2.symbols @@ -15,5 +15,5 @@ class C { @dec public get accessor() { return 1; } >dec : Symbol(dec, Decl(decoratorOnClassAccessor2.ts, 0, 0)) ->accessor : Symbol(accessor, Decl(decoratorOnClassAccessor2.ts, 2, 9)) +>accessor : Symbol(C.accessor, Decl(decoratorOnClassAccessor2.ts, 2, 9)) } diff --git a/tests/baselines/reference/decoratorOnClassAccessor4.symbols b/tests/baselines/reference/decoratorOnClassAccessor4.symbols index 0acd491abed..47776e58aa5 100644 --- a/tests/baselines/reference/decoratorOnClassAccessor4.symbols +++ b/tests/baselines/reference/decoratorOnClassAccessor4.symbols @@ -15,6 +15,6 @@ class C { @dec set accessor(value: number) { } >dec : Symbol(dec, Decl(decoratorOnClassAccessor4.ts, 0, 0)) ->accessor : Symbol(accessor, Decl(decoratorOnClassAccessor4.ts, 2, 9)) +>accessor : Symbol(C.accessor, Decl(decoratorOnClassAccessor4.ts, 2, 9)) >value : Symbol(value, Decl(decoratorOnClassAccessor4.ts, 3, 22)) } diff --git a/tests/baselines/reference/decoratorOnClassAccessor5.symbols b/tests/baselines/reference/decoratorOnClassAccessor5.symbols index 0585cff96b6..d35e97ece50 100644 --- a/tests/baselines/reference/decoratorOnClassAccessor5.symbols +++ b/tests/baselines/reference/decoratorOnClassAccessor5.symbols @@ -15,6 +15,6 @@ class C { @dec public set accessor(value: number) { } >dec : Symbol(dec, Decl(decoratorOnClassAccessor5.ts, 0, 0)) ->accessor : Symbol(accessor, Decl(decoratorOnClassAccessor5.ts, 2, 9)) +>accessor : Symbol(C.accessor, Decl(decoratorOnClassAccessor5.ts, 2, 9)) >value : Symbol(value, Decl(decoratorOnClassAccessor5.ts, 3, 29)) } diff --git a/tests/baselines/reference/decoratorOnClassMethod1.symbols b/tests/baselines/reference/decoratorOnClassMethod1.symbols index 8a92ad7b01b..bc2143f72a9 100644 --- a/tests/baselines/reference/decoratorOnClassMethod1.symbols +++ b/tests/baselines/reference/decoratorOnClassMethod1.symbols @@ -15,5 +15,5 @@ class C { @dec method() {} >dec : Symbol(dec, Decl(decoratorOnClassMethod1.ts, 0, 0)) ->method : Symbol(method, Decl(decoratorOnClassMethod1.ts, 2, 9)) +>method : Symbol(C.method, Decl(decoratorOnClassMethod1.ts, 2, 9)) } diff --git a/tests/baselines/reference/decoratorOnClassMethod13.symbols b/tests/baselines/reference/decoratorOnClassMethod13.symbols index 6dfcd15d040..389b45e5679 100644 --- a/tests/baselines/reference/decoratorOnClassMethod13.symbols +++ b/tests/baselines/reference/decoratorOnClassMethod13.symbols @@ -5,9 +5,9 @@ declare function dec(target: any, propertyKey: string, descriptor: TypedPrope >target : Symbol(target, Decl(decoratorOnClassMethod13.ts, 0, 24)) >propertyKey : Symbol(propertyKey, Decl(decoratorOnClassMethod13.ts, 0, 36)) >descriptor : Symbol(descriptor, Decl(decoratorOnClassMethod13.ts, 0, 57)) ->TypedPropertyDescriptor : Symbol(TypedPropertyDescriptor, Decl(lib.d.ts, --, --)) +>TypedPropertyDescriptor : Symbol(TypedPropertyDescriptor, Decl(lib.es5.d.ts, --, --)) >T : Symbol(T, Decl(decoratorOnClassMethod13.ts, 0, 21)) ->TypedPropertyDescriptor : Symbol(TypedPropertyDescriptor, Decl(lib.d.ts, --, --)) +>TypedPropertyDescriptor : Symbol(TypedPropertyDescriptor, Decl(lib.es5.d.ts, --, --)) >T : Symbol(T, Decl(decoratorOnClassMethod13.ts, 0, 21)) class C { diff --git a/tests/baselines/reference/decoratorOnClassMethod2.symbols b/tests/baselines/reference/decoratorOnClassMethod2.symbols index ebab8905469..addfdb70d40 100644 --- a/tests/baselines/reference/decoratorOnClassMethod2.symbols +++ b/tests/baselines/reference/decoratorOnClassMethod2.symbols @@ -15,5 +15,5 @@ class C { @dec public method() {} >dec : Symbol(dec, Decl(decoratorOnClassMethod2.ts, 0, 0)) ->method : Symbol(method, Decl(decoratorOnClassMethod2.ts, 2, 9)) +>method : Symbol(C.method, Decl(decoratorOnClassMethod2.ts, 2, 9)) } diff --git a/tests/baselines/reference/decoratorOnClassMethod4.symbols b/tests/baselines/reference/decoratorOnClassMethod4.symbols index 745fb8c4ce7..909fcd7f424 100644 --- a/tests/baselines/reference/decoratorOnClassMethod4.symbols +++ b/tests/baselines/reference/decoratorOnClassMethod4.symbols @@ -5,9 +5,9 @@ declare function dec(target: any, propertyKey: string, descriptor: TypedPrope >target : Symbol(target, Decl(decoratorOnClassMethod4.ts, 0, 24)) >propertyKey : Symbol(propertyKey, Decl(decoratorOnClassMethod4.ts, 0, 36)) >descriptor : Symbol(descriptor, Decl(decoratorOnClassMethod4.ts, 0, 57)) ->TypedPropertyDescriptor : Symbol(TypedPropertyDescriptor, Decl(lib.d.ts, --, --)) +>TypedPropertyDescriptor : Symbol(TypedPropertyDescriptor, Decl(lib.es5.d.ts, --, --)) >T : Symbol(T, Decl(decoratorOnClassMethod4.ts, 0, 21)) ->TypedPropertyDescriptor : Symbol(TypedPropertyDescriptor, Decl(lib.d.ts, --, --)) +>TypedPropertyDescriptor : Symbol(TypedPropertyDescriptor, Decl(lib.es5.d.ts, --, --)) >T : Symbol(T, Decl(decoratorOnClassMethod4.ts, 0, 21)) class C { diff --git a/tests/baselines/reference/decoratorOnClassMethod5.symbols b/tests/baselines/reference/decoratorOnClassMethod5.symbols index 124ace783fe..a9780c1efa4 100644 --- a/tests/baselines/reference/decoratorOnClassMethod5.symbols +++ b/tests/baselines/reference/decoratorOnClassMethod5.symbols @@ -5,9 +5,9 @@ declare function dec(): (target: any, propertyKey: string, descriptor: TypedP >target : Symbol(target, Decl(decoratorOnClassMethod5.ts, 0, 28)) >propertyKey : Symbol(propertyKey, Decl(decoratorOnClassMethod5.ts, 0, 40)) >descriptor : Symbol(descriptor, Decl(decoratorOnClassMethod5.ts, 0, 61)) ->TypedPropertyDescriptor : Symbol(TypedPropertyDescriptor, Decl(lib.d.ts, --, --)) +>TypedPropertyDescriptor : Symbol(TypedPropertyDescriptor, Decl(lib.es5.d.ts, --, --)) >T : Symbol(T, Decl(decoratorOnClassMethod5.ts, 0, 25)) ->TypedPropertyDescriptor : Symbol(TypedPropertyDescriptor, Decl(lib.d.ts, --, --)) +>TypedPropertyDescriptor : Symbol(TypedPropertyDescriptor, Decl(lib.es5.d.ts, --, --)) >T : Symbol(T, Decl(decoratorOnClassMethod5.ts, 0, 25)) class C { diff --git a/tests/baselines/reference/decoratorOnClassMethod7.symbols b/tests/baselines/reference/decoratorOnClassMethod7.symbols index e870a798559..3837816f79b 100644 --- a/tests/baselines/reference/decoratorOnClassMethod7.symbols +++ b/tests/baselines/reference/decoratorOnClassMethod7.symbols @@ -5,9 +5,9 @@ declare function dec(target: any, propertyKey: string, descriptor: TypedPrope >target : Symbol(target, Decl(decoratorOnClassMethod7.ts, 0, 24)) >propertyKey : Symbol(propertyKey, Decl(decoratorOnClassMethod7.ts, 0, 36)) >descriptor : Symbol(descriptor, Decl(decoratorOnClassMethod7.ts, 0, 57)) ->TypedPropertyDescriptor : Symbol(TypedPropertyDescriptor, Decl(lib.d.ts, --, --)) +>TypedPropertyDescriptor : Symbol(TypedPropertyDescriptor, Decl(lib.es5.d.ts, --, --)) >T : Symbol(T, Decl(decoratorOnClassMethod7.ts, 0, 21)) ->TypedPropertyDescriptor : Symbol(TypedPropertyDescriptor, Decl(lib.d.ts, --, --)) +>TypedPropertyDescriptor : Symbol(TypedPropertyDescriptor, Decl(lib.es5.d.ts, --, --)) >T : Symbol(T, Decl(decoratorOnClassMethod7.ts, 0, 21)) class C { diff --git a/tests/baselines/reference/decoratorOnClassMethodOverload2.symbols b/tests/baselines/reference/decoratorOnClassMethodOverload2.symbols index f05dd624345..71f5c5f8479 100644 --- a/tests/baselines/reference/decoratorOnClassMethodOverload2.symbols +++ b/tests/baselines/reference/decoratorOnClassMethodOverload2.symbols @@ -14,11 +14,11 @@ class C { >C : Symbol(C, Decl(decoratorOnClassMethodOverload2.ts, 0, 126)) method() ->method : Symbol(method, Decl(decoratorOnClassMethodOverload2.ts, 2, 9), Decl(decoratorOnClassMethodOverload2.ts, 3, 12)) +>method : Symbol(C.method, Decl(decoratorOnClassMethodOverload2.ts, 2, 9), Decl(decoratorOnClassMethodOverload2.ts, 3, 12)) @dec >dec : Symbol(dec, Decl(decoratorOnClassMethodOverload2.ts, 0, 0)) method() { } ->method : Symbol(method, Decl(decoratorOnClassMethodOverload2.ts, 2, 9), Decl(decoratorOnClassMethodOverload2.ts, 3, 12)) +>method : Symbol(C.method, Decl(decoratorOnClassMethodOverload2.ts, 2, 9), Decl(decoratorOnClassMethodOverload2.ts, 3, 12)) } diff --git a/tests/baselines/reference/decoratorOnClassMethodParameter1.symbols b/tests/baselines/reference/decoratorOnClassMethodParameter1.symbols index 1358343a9c5..8ce7338dde8 100644 --- a/tests/baselines/reference/decoratorOnClassMethodParameter1.symbols +++ b/tests/baselines/reference/decoratorOnClassMethodParameter1.symbols @@ -10,7 +10,7 @@ class C { >C : Symbol(C, Decl(decoratorOnClassMethodParameter1.ts, 0, 97)) method(@dec p: number) {} ->method : Symbol(method, Decl(decoratorOnClassMethodParameter1.ts, 2, 9)) +>method : Symbol(C.method, Decl(decoratorOnClassMethodParameter1.ts, 2, 9)) >dec : Symbol(dec, Decl(decoratorOnClassMethodParameter1.ts, 0, 0)) >p : Symbol(p, Decl(decoratorOnClassMethodParameter1.ts, 3, 11)) } diff --git a/tests/baselines/reference/decoratorOnClassProperty1.symbols b/tests/baselines/reference/decoratorOnClassProperty1.symbols index 1cf97d5ec3b..3cf25a6fbf1 100644 --- a/tests/baselines/reference/decoratorOnClassProperty1.symbols +++ b/tests/baselines/reference/decoratorOnClassProperty1.symbols @@ -9,5 +9,5 @@ class C { @dec prop; >dec : Symbol(dec, Decl(decoratorOnClassProperty1.ts, 0, 0)) ->prop : Symbol(prop, Decl(decoratorOnClassProperty1.ts, 2, 9)) +>prop : Symbol(C.prop, Decl(decoratorOnClassProperty1.ts, 2, 9)) } diff --git a/tests/baselines/reference/decoratorOnClassProperty10.symbols b/tests/baselines/reference/decoratorOnClassProperty10.symbols index 22af0bd8b50..ef207c95b84 100644 --- a/tests/baselines/reference/decoratorOnClassProperty10.symbols +++ b/tests/baselines/reference/decoratorOnClassProperty10.symbols @@ -10,5 +10,5 @@ class C { @dec() prop; >dec : Symbol(dec, Decl(decoratorOnClassProperty10.ts, 0, 0)) ->prop : Symbol(prop, Decl(decoratorOnClassProperty10.ts, 2, 9)) +>prop : Symbol(C.prop, Decl(decoratorOnClassProperty10.ts, 2, 9)) } diff --git a/tests/baselines/reference/decoratorOnClassProperty2.symbols b/tests/baselines/reference/decoratorOnClassProperty2.symbols index 3383fb1418a..dc86a331166 100644 --- a/tests/baselines/reference/decoratorOnClassProperty2.symbols +++ b/tests/baselines/reference/decoratorOnClassProperty2.symbols @@ -9,5 +9,5 @@ class C { @dec public prop; >dec : Symbol(dec, Decl(decoratorOnClassProperty2.ts, 0, 0)) ->prop : Symbol(prop, Decl(decoratorOnClassProperty2.ts, 2, 9)) +>prop : Symbol(C.prop, Decl(decoratorOnClassProperty2.ts, 2, 9)) } diff --git a/tests/baselines/reference/decrementOperatorWithAnyOtherType.symbols b/tests/baselines/reference/decrementOperatorWithAnyOtherType.symbols index 594e6d50ac4..cbef7442578 100644 --- a/tests/baselines/reference/decrementOperatorWithAnyOtherType.symbols +++ b/tests/baselines/reference/decrementOperatorWithAnyOtherType.symbols @@ -19,7 +19,7 @@ class A { >A : Symbol(A, Decl(decrementOperatorWithAnyOtherType.ts, 5, 23)) public a: any; ->a : Symbol(a, Decl(decrementOperatorWithAnyOtherType.ts, 6, 9)) +>a : Symbol(A.a, Decl(decrementOperatorWithAnyOtherType.ts, 6, 9)) } module M { >M : Symbol(M, Decl(decrementOperatorWithAnyOtherType.ts, 8, 1)) diff --git a/tests/baselines/reference/decrementOperatorWithNumberType.symbols b/tests/baselines/reference/decrementOperatorWithNumberType.symbols index 40d9a67735e..eeb1f8e8fb2 100644 --- a/tests/baselines/reference/decrementOperatorWithNumberType.symbols +++ b/tests/baselines/reference/decrementOperatorWithNumberType.symbols @@ -10,7 +10,7 @@ class A { >A : Symbol(A, Decl(decrementOperatorWithNumberType.ts, 2, 31)) public a: number; ->a : Symbol(a, Decl(decrementOperatorWithNumberType.ts, 4, 9)) +>a : Symbol(A.a, Decl(decrementOperatorWithNumberType.ts, 4, 9)) } module M { >M : Symbol(M, Decl(decrementOperatorWithNumberType.ts, 6, 1)) diff --git a/tests/baselines/reference/defaultArgsInFunctionExpressions.errors.txt b/tests/baselines/reference/defaultArgsInFunctionExpressions.errors.txt index 156fdcc4c7a..60a9e92bc95 100644 --- a/tests/baselines/reference/defaultArgsInFunctionExpressions.errors.txt +++ b/tests/baselines/reference/defaultArgsInFunctionExpressions.errors.txt @@ -2,9 +2,9 @@ tests/cases/compiler/defaultArgsInFunctionExpressions.ts(4,19): error TS2345: Ar tests/cases/compiler/defaultArgsInFunctionExpressions.ts(5,1): error TS2322: Type 'number' is not assignable to type 'string'. tests/cases/compiler/defaultArgsInFunctionExpressions.ts(8,20): error TS2322: Type 'number' is not assignable to type 'string'. tests/cases/compiler/defaultArgsInFunctionExpressions.ts(11,1): error TS2322: Type 'string' is not assignable to type 'number'. -tests/cases/compiler/defaultArgsInFunctionExpressions.ts(14,51): error TS2352: Neither type 'string' nor type 'number' is assignable to the other. +tests/cases/compiler/defaultArgsInFunctionExpressions.ts(14,51): error TS2352: Type 'string' cannot be converted to type 'number'. tests/cases/compiler/defaultArgsInFunctionExpressions.ts(17,41): error TS2322: Type 'string' is not assignable to type 'number'. -tests/cases/compiler/defaultArgsInFunctionExpressions.ts(20,62): error TS2352: Neither type 'string' nor type 'number' is assignable to the other. +tests/cases/compiler/defaultArgsInFunctionExpressions.ts(20,62): error TS2352: Type 'string' cannot be converted to type 'number'. tests/cases/compiler/defaultArgsInFunctionExpressions.ts(28,15): error TS2304: Cannot find name 'T'. @@ -32,7 +32,7 @@ tests/cases/compiler/defaultArgsInFunctionExpressions.ts(28,15): error TS2304: C // Contextually type the default arg with the type annotation var f3 = function (a: (s: string) => any = (s) => s) { }; ~~~~~~~~~ -!!! error TS2352: Neither type 'string' nor type 'number' is assignable to the other. +!!! error TS2352: Type 'string' cannot be converted to type 'number'. // Type check using the function's contextual type var f4: (a: number) => void = function (a = "") { }; @@ -42,7 +42,7 @@ tests/cases/compiler/defaultArgsInFunctionExpressions.ts(28,15): error TS2304: C // Contextually type the default arg using the function's contextual type var f5: (a: (s: string) => any) => void = function (a = s => s) { }; ~~~~~~~~~ -!!! error TS2352: Neither type 'string' nor type 'number' is assignable to the other. +!!! error TS2352: Type 'string' cannot be converted to type 'number'. // Instantiated module module T { } diff --git a/tests/baselines/reference/defaultExportInAwaitExpression01.js b/tests/baselines/reference/defaultExportInAwaitExpression01.js new file mode 100644 index 00000000000..afd4dfa7a56 --- /dev/null +++ b/tests/baselines/reference/defaultExportInAwaitExpression01.js @@ -0,0 +1,53 @@ +//// [tests/cases/conformance/es6/modules/defaultExportInAwaitExpression01.ts] //// + +//// [a.ts] +const x = new Promise( ( resolve, reject ) => { resolve( {} ); } ); +export default x; + +//// [b.ts] +import x from './a'; + +( async function() { + const value = await x; +}() ); + + +//// [a.js] +(function (factory) { + if (typeof module === 'object' && typeof module.exports === 'object') { + var v = factory(require, exports); if (v !== undefined) module.exports = v; + } + else if (typeof define === 'function' && define.amd) { + define(["require", "exports"], factory); + } +})(function (require, exports) { + "use strict"; + const x = new Promise((resolve, reject) => { resolve({}); }); + Object.defineProperty(exports, "__esModule", { value: true }); + exports.default = x; +}); +//// [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()); + }); +}; +(function (factory) { + if (typeof module === 'object' && typeof module.exports === 'object') { + var v = factory(require, exports); if (v !== undefined) module.exports = v; + } + else if (typeof define === 'function' && define.amd) { + define(["require", "exports", './a'], factory); + } +})(function (require, exports) { + "use strict"; + const a_1 = require('./a'); + (function () { + return __awaiter(this, void 0, void 0, function* () { + const value = yield a_1.default; + }); + }()); +}); diff --git a/tests/baselines/reference/defaultExportInAwaitExpression01.symbols b/tests/baselines/reference/defaultExportInAwaitExpression01.symbols new file mode 100644 index 00000000000..eb833f63895 --- /dev/null +++ b/tests/baselines/reference/defaultExportInAwaitExpression01.symbols @@ -0,0 +1,22 @@ +=== tests/cases/conformance/es6/modules/a.ts === +const x = new Promise( ( resolve, reject ) => { resolve( {} ); } ); +>x : Symbol(x, Decl(a.ts, 0, 5)) +>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(resolve, Decl(a.ts, 0, 24)) +>reject : Symbol(reject, Decl(a.ts, 0, 33)) +>resolve : Symbol(resolve, Decl(a.ts, 0, 24)) + +export default x; +>x : Symbol(x, Decl(a.ts, 0, 5)) + +=== tests/cases/conformance/es6/modules/b.ts === +import x from './a'; +>x : Symbol(x, Decl(b.ts, 0, 6)) + +( async function() { + const value = await x; +>value : Symbol(value, Decl(b.ts, 3, 9)) +>x : Symbol(x, Decl(b.ts, 0, 6)) + +}() ); + diff --git a/tests/baselines/reference/defaultExportInAwaitExpression01.types b/tests/baselines/reference/defaultExportInAwaitExpression01.types new file mode 100644 index 00000000000..1f7de76b90e --- /dev/null +++ b/tests/baselines/reference/defaultExportInAwaitExpression01.types @@ -0,0 +1,31 @@ +=== tests/cases/conformance/es6/modules/a.ts === +const x = new Promise( ( resolve, reject ) => { resolve( {} ); } ); +>x : Promise<{}> +>new Promise( ( resolve, reject ) => { resolve( {} ); } ) : Promise<{}> +>Promise : PromiseConstructor +>( resolve, reject ) => { resolve( {} ); } : (resolve: (value?: {} | PromiseLike<{}>) => void, reject: (reason?: any) => void) => void +>resolve : (value?: {} | PromiseLike<{}>) => void +>reject : (reason?: any) => void +>resolve( {} ) : void +>resolve : (value?: {} | PromiseLike<{}>) => void +>{} : {} + +export default x; +>x : Promise<{}> + +=== tests/cases/conformance/es6/modules/b.ts === +import x from './a'; +>x : Promise<{}> + +( async function() { +>( async function() { const value = await x;}() ) : Promise +>async function() { const value = await x;}() : Promise +>async function() { const value = await x;} : () => Promise + + const value = await x; +>value : {} +>await x : {} +>x : Promise<{}> + +}() ); + diff --git a/tests/baselines/reference/defaultExportInAwaitExpression02.js b/tests/baselines/reference/defaultExportInAwaitExpression02.js new file mode 100644 index 00000000000..70a9ce6c2d3 --- /dev/null +++ b/tests/baselines/reference/defaultExportInAwaitExpression02.js @@ -0,0 +1,35 @@ +//// [tests/cases/conformance/es6/modules/defaultExportInAwaitExpression02.ts] //// + +//// [a.ts] +const x = new Promise( ( resolve, reject ) => { resolve( {} ); } ); +export default x; + +//// [b.ts] +import x from './a'; + +( async function() { + const value = await x; +}() ); + + +//// [a.js] +"use strict"; +const x = new Promise((resolve, reject) => { resolve({}); }); +Object.defineProperty(exports, "__esModule", { value: true }); +exports.default = x; +//// [b.js] +"use strict"; +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()); + }); +}; +const a_1 = require('./a'); +(function () { + return __awaiter(this, void 0, void 0, function* () { + const value = yield a_1.default; + }); +}()); diff --git a/tests/baselines/reference/defaultExportInAwaitExpression02.symbols b/tests/baselines/reference/defaultExportInAwaitExpression02.symbols new file mode 100644 index 00000000000..eb833f63895 --- /dev/null +++ b/tests/baselines/reference/defaultExportInAwaitExpression02.symbols @@ -0,0 +1,22 @@ +=== tests/cases/conformance/es6/modules/a.ts === +const x = new Promise( ( resolve, reject ) => { resolve( {} ); } ); +>x : Symbol(x, Decl(a.ts, 0, 5)) +>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(resolve, Decl(a.ts, 0, 24)) +>reject : Symbol(reject, Decl(a.ts, 0, 33)) +>resolve : Symbol(resolve, Decl(a.ts, 0, 24)) + +export default x; +>x : Symbol(x, Decl(a.ts, 0, 5)) + +=== tests/cases/conformance/es6/modules/b.ts === +import x from './a'; +>x : Symbol(x, Decl(b.ts, 0, 6)) + +( async function() { + const value = await x; +>value : Symbol(value, Decl(b.ts, 3, 9)) +>x : Symbol(x, Decl(b.ts, 0, 6)) + +}() ); + diff --git a/tests/baselines/reference/defaultExportInAwaitExpression02.types b/tests/baselines/reference/defaultExportInAwaitExpression02.types new file mode 100644 index 00000000000..1f7de76b90e --- /dev/null +++ b/tests/baselines/reference/defaultExportInAwaitExpression02.types @@ -0,0 +1,31 @@ +=== tests/cases/conformance/es6/modules/a.ts === +const x = new Promise( ( resolve, reject ) => { resolve( {} ); } ); +>x : Promise<{}> +>new Promise( ( resolve, reject ) => { resolve( {} ); } ) : Promise<{}> +>Promise : PromiseConstructor +>( resolve, reject ) => { resolve( {} ); } : (resolve: (value?: {} | PromiseLike<{}>) => void, reject: (reason?: any) => void) => void +>resolve : (value?: {} | PromiseLike<{}>) => void +>reject : (reason?: any) => void +>resolve( {} ) : void +>resolve : (value?: {} | PromiseLike<{}>) => void +>{} : {} + +export default x; +>x : Promise<{}> + +=== tests/cases/conformance/es6/modules/b.ts === +import x from './a'; +>x : Promise<{}> + +( async function() { +>( async function() { const value = await x;}() ) : Promise +>async function() { const value = await x;}() : Promise +>async function() { const value = await x;} : () => Promise + + const value = await x; +>value : {} +>await x : {} +>x : Promise<{}> + +}() ); + diff --git a/tests/baselines/reference/defaultExportsGetExportedSystem.js b/tests/baselines/reference/defaultExportsGetExportedSystem.js index eac3d3c7c43..eaf6d323f09 100644 --- a/tests/baselines/reference/defaultExportsGetExportedSystem.js +++ b/tests/baselines/reference/defaultExportsGetExportedSystem.js @@ -15,8 +15,8 @@ System.register([], function(exports_1, context_1) { return { setters:[], execute: function() { - class Foo { - } + Foo = class Foo { + }; exports_1("default", Foo); } } diff --git a/tests/baselines/reference/defaultIndexProps1.symbols b/tests/baselines/reference/defaultIndexProps1.symbols index e294b9e7dba..ac1220688a5 100644 --- a/tests/baselines/reference/defaultIndexProps1.symbols +++ b/tests/baselines/reference/defaultIndexProps1.symbols @@ -3,7 +3,7 @@ class Foo { >Foo : Symbol(Foo, Decl(defaultIndexProps1.ts, 0, 0)) public v = "Yo"; ->v : Symbol(v, Decl(defaultIndexProps1.ts, 0, 11)) +>v : Symbol(Foo.v, Decl(defaultIndexProps1.ts, 0, 11)) } var f = new Foo(); diff --git a/tests/baselines/reference/defaultIndexProps2.symbols b/tests/baselines/reference/defaultIndexProps2.symbols index 53d433351c3..5c9880c55f3 100644 --- a/tests/baselines/reference/defaultIndexProps2.symbols +++ b/tests/baselines/reference/defaultIndexProps2.symbols @@ -3,7 +3,7 @@ class Foo { >Foo : Symbol(Foo, Decl(defaultIndexProps2.ts, 0, 0)) public v = "Yo"; ->v : Symbol(v, Decl(defaultIndexProps2.ts, 0, 11)) +>v : Symbol(Foo.v, Decl(defaultIndexProps2.ts, 0, 11)) } var f = new Foo(); diff --git a/tests/baselines/reference/defaultOfAnyInStrictNullChecks.js b/tests/baselines/reference/defaultOfAnyInStrictNullChecks.js new file mode 100644 index 00000000000..7706181b343 --- /dev/null +++ b/tests/baselines/reference/defaultOfAnyInStrictNullChecks.js @@ -0,0 +1,22 @@ +//// [defaultOfAnyInStrictNullChecks.ts] + +// Regression test for #8295 + +function foo() { + try { + } + catch (e) { + let s = e.message; + } +} + + +//// [defaultOfAnyInStrictNullChecks.js] +// Regression test for #8295 +function foo() { + try { + } + catch (e) { + var s = e.message; + } +} diff --git a/tests/baselines/reference/defaultOfAnyInStrictNullChecks.symbols b/tests/baselines/reference/defaultOfAnyInStrictNullChecks.symbols new file mode 100644 index 00000000000..c7de7f6b2f3 --- /dev/null +++ b/tests/baselines/reference/defaultOfAnyInStrictNullChecks.symbols @@ -0,0 +1,18 @@ +=== tests/cases/compiler/defaultOfAnyInStrictNullChecks.ts === + +// Regression test for #8295 + +function foo() { +>foo : Symbol(foo, Decl(defaultOfAnyInStrictNullChecks.ts, 0, 0)) + + try { + } + catch (e) { +>e : Symbol(e, Decl(defaultOfAnyInStrictNullChecks.ts, 6, 11)) + + let s = e.message; +>s : Symbol(s, Decl(defaultOfAnyInStrictNullChecks.ts, 7, 11)) +>e : Symbol(e, Decl(defaultOfAnyInStrictNullChecks.ts, 6, 11)) + } +} + diff --git a/tests/baselines/reference/defaultOfAnyInStrictNullChecks.types b/tests/baselines/reference/defaultOfAnyInStrictNullChecks.types new file mode 100644 index 00000000000..8e4c1adcd61 --- /dev/null +++ b/tests/baselines/reference/defaultOfAnyInStrictNullChecks.types @@ -0,0 +1,20 @@ +=== tests/cases/compiler/defaultOfAnyInStrictNullChecks.ts === + +// Regression test for #8295 + +function foo() { +>foo : () => void + + try { + } + catch (e) { +>e : any + + let s = e.message; +>s : any +>e.message : any +>e : any +>message : any + } +} + diff --git a/tests/baselines/reference/deleteOperatorWithBooleanType.symbols b/tests/baselines/reference/deleteOperatorWithBooleanType.symbols index 71cb78760f6..e3ecfc3f0b1 100644 --- a/tests/baselines/reference/deleteOperatorWithBooleanType.symbols +++ b/tests/baselines/reference/deleteOperatorWithBooleanType.symbols @@ -10,7 +10,7 @@ class A { >A : Symbol(A, Decl(deleteOperatorWithBooleanType.ts, 3, 40)) public a: boolean; ->a : Symbol(a, Decl(deleteOperatorWithBooleanType.ts, 5, 9)) +>a : Symbol(A.a, Decl(deleteOperatorWithBooleanType.ts, 5, 9)) static foo() { return false; } >foo : Symbol(A.foo, Decl(deleteOperatorWithBooleanType.ts, 6, 22)) diff --git a/tests/baselines/reference/deleteOperatorWithNumberType.symbols b/tests/baselines/reference/deleteOperatorWithNumberType.symbols index 589b1f91db2..4d59a0ba7bf 100644 --- a/tests/baselines/reference/deleteOperatorWithNumberType.symbols +++ b/tests/baselines/reference/deleteOperatorWithNumberType.symbols @@ -13,7 +13,7 @@ class A { >A : Symbol(A, Decl(deleteOperatorWithNumberType.ts, 4, 36)) public a: number; ->a : Symbol(a, Decl(deleteOperatorWithNumberType.ts, 6, 9)) +>a : Symbol(A.a, Decl(deleteOperatorWithNumberType.ts, 6, 9)) static foo() { return 1; } >foo : Symbol(A.foo, Decl(deleteOperatorWithNumberType.ts, 7, 21)) diff --git a/tests/baselines/reference/deleteOperatorWithStringType.symbols b/tests/baselines/reference/deleteOperatorWithStringType.symbols index 204aac0123b..e3f7fd30d7c 100644 --- a/tests/baselines/reference/deleteOperatorWithStringType.symbols +++ b/tests/baselines/reference/deleteOperatorWithStringType.symbols @@ -13,7 +13,7 @@ class A { >A : Symbol(A, Decl(deleteOperatorWithStringType.ts, 4, 40)) public a: string; ->a : Symbol(a, Decl(deleteOperatorWithStringType.ts, 6, 9)) +>a : Symbol(A.a, Decl(deleteOperatorWithStringType.ts, 6, 9)) static foo() { return ""; } >foo : Symbol(A.foo, Decl(deleteOperatorWithStringType.ts, 7, 21)) diff --git a/tests/baselines/reference/derivedClassOverridesProtectedMembers.symbols b/tests/baselines/reference/derivedClassOverridesProtectedMembers.symbols index 3c826325b91..690916db87c 100644 --- a/tests/baselines/reference/derivedClassOverridesProtectedMembers.symbols +++ b/tests/baselines/reference/derivedClassOverridesProtectedMembers.symbols @@ -13,25 +13,25 @@ class Base { >Base : Symbol(Base, Decl(derivedClassOverridesProtectedMembers.ts, 2, 36)) protected a: typeof x; ->a : Symbol(a, Decl(derivedClassOverridesProtectedMembers.ts, 4, 12)) +>a : Symbol(Base.a, Decl(derivedClassOverridesProtectedMembers.ts, 4, 12)) >x : Symbol(x, Decl(derivedClassOverridesProtectedMembers.ts, 1, 3)) protected b(a: typeof x) { } ->b : Symbol(b, Decl(derivedClassOverridesProtectedMembers.ts, 5, 26)) +>b : Symbol(Base.b, Decl(derivedClassOverridesProtectedMembers.ts, 5, 26)) >a : Symbol(a, Decl(derivedClassOverridesProtectedMembers.ts, 6, 16)) >x : Symbol(x, Decl(derivedClassOverridesProtectedMembers.ts, 1, 3)) protected get c() { return x; } ->c : Symbol(c, Decl(derivedClassOverridesProtectedMembers.ts, 6, 32), Decl(derivedClassOverridesProtectedMembers.ts, 7, 35)) +>c : Symbol(Base.c, Decl(derivedClassOverridesProtectedMembers.ts, 6, 32), Decl(derivedClassOverridesProtectedMembers.ts, 7, 35)) >x : Symbol(x, Decl(derivedClassOverridesProtectedMembers.ts, 1, 3)) protected set c(v: typeof x) { } ->c : Symbol(c, Decl(derivedClassOverridesProtectedMembers.ts, 6, 32), Decl(derivedClassOverridesProtectedMembers.ts, 7, 35)) +>c : Symbol(Base.c, Decl(derivedClassOverridesProtectedMembers.ts, 6, 32), Decl(derivedClassOverridesProtectedMembers.ts, 7, 35)) >v : Symbol(v, Decl(derivedClassOverridesProtectedMembers.ts, 8, 20)) >x : Symbol(x, Decl(derivedClassOverridesProtectedMembers.ts, 1, 3)) protected d: (a: typeof x) => void; ->d : Symbol(d, Decl(derivedClassOverridesProtectedMembers.ts, 8, 36)) +>d : Symbol(Base.d, Decl(derivedClassOverridesProtectedMembers.ts, 8, 36)) >a : Symbol(a, Decl(derivedClassOverridesProtectedMembers.ts, 9, 18)) >x : Symbol(x, Decl(derivedClassOverridesProtectedMembers.ts, 1, 3)) @@ -68,25 +68,25 @@ class Derived extends Base { >Base : Symbol(Base, Decl(derivedClassOverridesProtectedMembers.ts, 2, 36)) protected a: typeof y; ->a : Symbol(a, Decl(derivedClassOverridesProtectedMembers.ts, 20, 28)) +>a : Symbol(Derived.a, Decl(derivedClassOverridesProtectedMembers.ts, 20, 28)) >y : Symbol(y, Decl(derivedClassOverridesProtectedMembers.ts, 2, 3)) protected b(a: typeof y) { } ->b : Symbol(b, Decl(derivedClassOverridesProtectedMembers.ts, 21, 26)) +>b : Symbol(Derived.b, Decl(derivedClassOverridesProtectedMembers.ts, 21, 26)) >a : Symbol(a, Decl(derivedClassOverridesProtectedMembers.ts, 22, 16)) >y : Symbol(y, Decl(derivedClassOverridesProtectedMembers.ts, 2, 3)) protected get c() { return y; } ->c : Symbol(c, Decl(derivedClassOverridesProtectedMembers.ts, 22, 32), Decl(derivedClassOverridesProtectedMembers.ts, 23, 35)) +>c : Symbol(Derived.c, Decl(derivedClassOverridesProtectedMembers.ts, 22, 32), Decl(derivedClassOverridesProtectedMembers.ts, 23, 35)) >y : Symbol(y, Decl(derivedClassOverridesProtectedMembers.ts, 2, 3)) protected set c(v: typeof y) { } ->c : Symbol(c, Decl(derivedClassOverridesProtectedMembers.ts, 22, 32), Decl(derivedClassOverridesProtectedMembers.ts, 23, 35)) +>c : Symbol(Derived.c, Decl(derivedClassOverridesProtectedMembers.ts, 22, 32), Decl(derivedClassOverridesProtectedMembers.ts, 23, 35)) >v : Symbol(v, Decl(derivedClassOverridesProtectedMembers.ts, 24, 20)) >y : Symbol(y, Decl(derivedClassOverridesProtectedMembers.ts, 2, 3)) protected d: (a: typeof y) => void; ->d : Symbol(d, Decl(derivedClassOverridesProtectedMembers.ts, 24, 36)) +>d : Symbol(Derived.d, Decl(derivedClassOverridesProtectedMembers.ts, 24, 36)) >a : Symbol(a, Decl(derivedClassOverridesProtectedMembers.ts, 25, 18)) >y : Symbol(y, Decl(derivedClassOverridesProtectedMembers.ts, 2, 3)) diff --git a/tests/baselines/reference/derivedClassOverridesProtectedMembers2.symbols b/tests/baselines/reference/derivedClassOverridesProtectedMembers2.symbols index b1160328160..d6f70480844 100644 --- a/tests/baselines/reference/derivedClassOverridesProtectedMembers2.symbols +++ b/tests/baselines/reference/derivedClassOverridesProtectedMembers2.symbols @@ -12,25 +12,25 @@ class Base { >Base : Symbol(Base, Decl(derivedClassOverridesProtectedMembers2.ts, 1, 36)) protected a: typeof x; ->a : Symbol(a, Decl(derivedClassOverridesProtectedMembers2.ts, 3, 12)) +>a : Symbol(Base.a, Decl(derivedClassOverridesProtectedMembers2.ts, 3, 12)) >x : Symbol(x, Decl(derivedClassOverridesProtectedMembers2.ts, 0, 3)) protected b(a: typeof x) { } ->b : Symbol(b, Decl(derivedClassOverridesProtectedMembers2.ts, 4, 26)) +>b : Symbol(Base.b, Decl(derivedClassOverridesProtectedMembers2.ts, 4, 26)) >a : Symbol(a, Decl(derivedClassOverridesProtectedMembers2.ts, 5, 16)) >x : Symbol(x, Decl(derivedClassOverridesProtectedMembers2.ts, 0, 3)) protected get c() { return x; } ->c : Symbol(c, Decl(derivedClassOverridesProtectedMembers2.ts, 5, 32), Decl(derivedClassOverridesProtectedMembers2.ts, 6, 35)) +>c : Symbol(Base.c, Decl(derivedClassOverridesProtectedMembers2.ts, 5, 32), Decl(derivedClassOverridesProtectedMembers2.ts, 6, 35)) >x : Symbol(x, Decl(derivedClassOverridesProtectedMembers2.ts, 0, 3)) protected set c(v: typeof x) { } ->c : Symbol(c, Decl(derivedClassOverridesProtectedMembers2.ts, 5, 32), Decl(derivedClassOverridesProtectedMembers2.ts, 6, 35)) +>c : Symbol(Base.c, Decl(derivedClassOverridesProtectedMembers2.ts, 5, 32), Decl(derivedClassOverridesProtectedMembers2.ts, 6, 35)) >v : Symbol(v, Decl(derivedClassOverridesProtectedMembers2.ts, 7, 20)) >x : Symbol(x, Decl(derivedClassOverridesProtectedMembers2.ts, 0, 3)) protected d: (a: typeof x) => void ; ->d : Symbol(d, Decl(derivedClassOverridesProtectedMembers2.ts, 7, 36)) +>d : Symbol(Base.d, Decl(derivedClassOverridesProtectedMembers2.ts, 7, 36)) >a : Symbol(a, Decl(derivedClassOverridesProtectedMembers2.ts, 8, 18)) >x : Symbol(x, Decl(derivedClassOverridesProtectedMembers2.ts, 0, 3)) @@ -68,25 +68,25 @@ class Derived extends Base { >Base : Symbol(Base, Decl(derivedClassOverridesProtectedMembers2.ts, 1, 36)) a: typeof y; ->a : Symbol(a, Decl(derivedClassOverridesProtectedMembers2.ts, 20, 28)) +>a : Symbol(Derived.a, Decl(derivedClassOverridesProtectedMembers2.ts, 20, 28)) >y : Symbol(y, Decl(derivedClassOverridesProtectedMembers2.ts, 1, 3)) b(a: typeof y) { } ->b : Symbol(b, Decl(derivedClassOverridesProtectedMembers2.ts, 21, 16)) +>b : Symbol(Derived.b, Decl(derivedClassOverridesProtectedMembers2.ts, 21, 16)) >a : Symbol(a, Decl(derivedClassOverridesProtectedMembers2.ts, 22, 6)) >y : Symbol(y, Decl(derivedClassOverridesProtectedMembers2.ts, 1, 3)) get c() { return y; } ->c : Symbol(c, Decl(derivedClassOverridesProtectedMembers2.ts, 22, 22), Decl(derivedClassOverridesProtectedMembers2.ts, 23, 25)) +>c : Symbol(Derived.c, Decl(derivedClassOverridesProtectedMembers2.ts, 22, 22), Decl(derivedClassOverridesProtectedMembers2.ts, 23, 25)) >y : Symbol(y, Decl(derivedClassOverridesProtectedMembers2.ts, 1, 3)) set c(v: typeof y) { } ->c : Symbol(c, Decl(derivedClassOverridesProtectedMembers2.ts, 22, 22), Decl(derivedClassOverridesProtectedMembers2.ts, 23, 25)) +>c : Symbol(Derived.c, Decl(derivedClassOverridesProtectedMembers2.ts, 22, 22), Decl(derivedClassOverridesProtectedMembers2.ts, 23, 25)) >v : Symbol(v, Decl(derivedClassOverridesProtectedMembers2.ts, 24, 10)) >y : Symbol(y, Decl(derivedClassOverridesProtectedMembers2.ts, 1, 3)) d: (a: typeof y) => void; ->d : Symbol(d, Decl(derivedClassOverridesProtectedMembers2.ts, 24, 26)) +>d : Symbol(Derived.d, Decl(derivedClassOverridesProtectedMembers2.ts, 24, 26)) >a : Symbol(a, Decl(derivedClassOverridesProtectedMembers2.ts, 25, 8)) >y : Symbol(y, Decl(derivedClassOverridesProtectedMembers2.ts, 1, 3)) diff --git a/tests/baselines/reference/derivedClassOverridesWithoutSubtype.symbols b/tests/baselines/reference/derivedClassOverridesWithoutSubtype.symbols index 452da91f034..67d5354cd5f 100644 --- a/tests/baselines/reference/derivedClassOverridesWithoutSubtype.symbols +++ b/tests/baselines/reference/derivedClassOverridesWithoutSubtype.symbols @@ -3,7 +3,7 @@ class Base { >Base : Symbol(Base, Decl(derivedClassOverridesWithoutSubtype.ts, 0, 0)) x: { ->x : Symbol(x, Decl(derivedClassOverridesWithoutSubtype.ts, 0, 12)) +>x : Symbol(Base.x, Decl(derivedClassOverridesWithoutSubtype.ts, 0, 12)) foo: string; >foo : Symbol(foo, Decl(derivedClassOverridesWithoutSubtype.ts, 1, 8)) @@ -15,7 +15,7 @@ class Derived extends Base { >Base : Symbol(Base, Decl(derivedClassOverridesWithoutSubtype.ts, 0, 0)) x: { ->x : Symbol(x, Decl(derivedClassOverridesWithoutSubtype.ts, 6, 28)) +>x : Symbol(Derived.x, Decl(derivedClassOverridesWithoutSubtype.ts, 6, 28)) foo: any; >foo : Symbol(foo, Decl(derivedClassOverridesWithoutSubtype.ts, 7, 8)) diff --git a/tests/baselines/reference/derivedClassTransitivity.errors.txt b/tests/baselines/reference/derivedClassTransitivity.errors.txt index c6b620beb18..5be930fa5da 100644 --- a/tests/baselines/reference/derivedClassTransitivity.errors.txt +++ b/tests/baselines/reference/derivedClassTransitivity.errors.txt @@ -2,7 +2,7 @@ tests/cases/conformance/classes/members/inheritanceAndOverriding/derivedClassTra Types of property 'foo' are incompatible. Type '(x?: string) => void' is not assignable to type '(x: number) => void'. Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Type 'number' is not assignable to type 'string'. ==== tests/cases/conformance/classes/members/inheritanceAndOverriding/derivedClassTransitivity.ts (1 errors) ==== @@ -29,6 +29,6 @@ tests/cases/conformance/classes/members/inheritanceAndOverriding/derivedClassTra !!! error TS2322: Types of property 'foo' are incompatible. !!! error TS2322: Type '(x?: string) => void' is not assignable to type '(x: number) => void'. !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Type 'number' is not assignable to type 'string'. var r = c.foo(1); var r2 = e.foo(''); \ No newline at end of file diff --git a/tests/baselines/reference/derivedClassTransitivity2.errors.txt b/tests/baselines/reference/derivedClassTransitivity2.errors.txt index a8d2003c876..e5f09911f55 100644 --- a/tests/baselines/reference/derivedClassTransitivity2.errors.txt +++ b/tests/baselines/reference/derivedClassTransitivity2.errors.txt @@ -2,7 +2,7 @@ tests/cases/conformance/classes/members/inheritanceAndOverriding/derivedClassTra Types of property 'foo' are incompatible. Type '(x: number, y?: string) => void' is not assignable to type '(x: number, y: number) => void'. Types of parameters 'y' and 'y' are incompatible. - Type 'string' is not assignable to type 'number'. + Type 'number' is not assignable to type 'string'. ==== tests/cases/conformance/classes/members/inheritanceAndOverriding/derivedClassTransitivity2.ts (1 errors) ==== @@ -29,6 +29,6 @@ tests/cases/conformance/classes/members/inheritanceAndOverriding/derivedClassTra !!! error TS2322: Types of property 'foo' are incompatible. !!! error TS2322: Type '(x: number, y?: string) => void' is not assignable to type '(x: number, y: number) => void'. !!! error TS2322: Types of parameters 'y' and 'y' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Type 'number' is not assignable to type 'string'. var r = c.foo(1, 1); var r2 = e.foo(1, ''); \ No newline at end of file diff --git a/tests/baselines/reference/derivedClassTransitivity3.errors.txt b/tests/baselines/reference/derivedClassTransitivity3.errors.txt index 9d301255dfd..b3e59a0bf4c 100644 --- a/tests/baselines/reference/derivedClassTransitivity3.errors.txt +++ b/tests/baselines/reference/derivedClassTransitivity3.errors.txt @@ -2,7 +2,7 @@ tests/cases/conformance/classes/members/inheritanceAndOverriding/derivedClassTra Types of property 'foo' are incompatible. Type '(x: string, y?: number) => void' is not assignable to type '(x: string, y: string) => void'. Types of parameters 'y' and 'y' are incompatible. - Type 'number' is not assignable to type 'string'. + Type 'string' is not assignable to type 'number'. ==== tests/cases/conformance/classes/members/inheritanceAndOverriding/derivedClassTransitivity3.ts (1 errors) ==== @@ -29,6 +29,6 @@ tests/cases/conformance/classes/members/inheritanceAndOverriding/derivedClassTra !!! error TS2322: Types of property 'foo' are incompatible. !!! error TS2322: Type '(x: string, y?: number) => void' is not assignable to type '(x: string, y: string) => void'. !!! error TS2322: Types of parameters 'y' and 'y' are incompatible. -!!! error TS2322: Type 'number' is not assignable to type 'string'. +!!! error TS2322: Type 'string' is not assignable to type 'number'. var r = c.foo('', ''); var r2 = e.foo('', 1); \ No newline at end of file diff --git a/tests/baselines/reference/derivedClassTransitivity4.errors.txt b/tests/baselines/reference/derivedClassTransitivity4.errors.txt index 3b8c661f41a..06319b16317 100644 --- a/tests/baselines/reference/derivedClassTransitivity4.errors.txt +++ b/tests/baselines/reference/derivedClassTransitivity4.errors.txt @@ -2,7 +2,7 @@ tests/cases/conformance/classes/members/inheritanceAndOverriding/derivedClassTra Types of property 'foo' are incompatible. Type '(x?: string) => void' is not assignable to type '(x: number) => void'. Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/classes/members/inheritanceAndOverriding/derivedClassTransitivity4.ts(19,11): error TS2445: Property 'foo' is protected and only accessible within class 'C' and its subclasses. @@ -30,7 +30,7 @@ tests/cases/conformance/classes/members/inheritanceAndOverriding/derivedClassTra !!! error TS2322: Types of property 'foo' are incompatible. !!! error TS2322: Type '(x?: string) => void' is not assignable to type '(x: number) => void'. !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Type 'number' is not assignable to type 'string'. var r = c.foo(1); ~~~ !!! error TS2445: Property 'foo' is protected and only accessible within class 'C' and its subclasses. diff --git a/tests/baselines/reference/derivedClasses.symbols b/tests/baselines/reference/derivedClasses.symbols index f265c2dce53..61f4d7b81dc 100644 --- a/tests/baselines/reference/derivedClasses.symbols +++ b/tests/baselines/reference/derivedClasses.symbols @@ -4,7 +4,7 @@ class Red extends Color { >Color : Symbol(Color, Decl(derivedClasses.ts, 5, 1)) public shade() { ->shade : Symbol(shade, Decl(derivedClasses.ts, 0, 25)) +>shade : Symbol(Red.shade, Decl(derivedClasses.ts, 0, 25)) var getHue = () => { return this.hue(); }; >getHue : Symbol(getHue, Decl(derivedClasses.ts, 2, 8)) @@ -21,10 +21,10 @@ class Color { >Color : Symbol(Color, Decl(derivedClasses.ts, 5, 1)) public shade() { return "some shade"; } ->shade : Symbol(shade, Decl(derivedClasses.ts, 7, 13)) +>shade : Symbol(Color.shade, Decl(derivedClasses.ts, 7, 13)) public hue() { return "some hue"; } ->hue : Symbol(hue, Decl(derivedClasses.ts, 8, 43)) +>hue : Symbol(Color.hue, Decl(derivedClasses.ts, 8, 43)) } class Blue extends Color { @@ -32,7 +32,7 @@ class Blue extends Color { >Color : Symbol(Color, Decl(derivedClasses.ts, 5, 1)) public shade() { ->shade : Symbol(shade, Decl(derivedClasses.ts, 12, 26)) +>shade : Symbol(Blue.shade, Decl(derivedClasses.ts, 12, 26)) var getHue = () => { return this.hue(); }; >getHue : Symbol(getHue, Decl(derivedClasses.ts, 15, 8)) diff --git a/tests/baselines/reference/derivedTypeDoesNotRequireExtendsClause.symbols b/tests/baselines/reference/derivedTypeDoesNotRequireExtendsClause.symbols index e0f41b72f76..ef62a0fe7c5 100644 --- a/tests/baselines/reference/derivedTypeDoesNotRequireExtendsClause.symbols +++ b/tests/baselines/reference/derivedTypeDoesNotRequireExtendsClause.symbols @@ -3,17 +3,17 @@ class Base { >Base : Symbol(Base, Decl(derivedTypeDoesNotRequireExtendsClause.ts, 0, 0)) foo: string; ->foo : Symbol(foo, Decl(derivedTypeDoesNotRequireExtendsClause.ts, 0, 12)) +>foo : Symbol(Base.foo, Decl(derivedTypeDoesNotRequireExtendsClause.ts, 0, 12)) } class Derived { >Derived : Symbol(Derived, Decl(derivedTypeDoesNotRequireExtendsClause.ts, 2, 1)) foo: string; ->foo : Symbol(foo, Decl(derivedTypeDoesNotRequireExtendsClause.ts, 4, 15)) +>foo : Symbol(Derived.foo, Decl(derivedTypeDoesNotRequireExtendsClause.ts, 4, 15)) bar: number; ->bar : Symbol(bar, Decl(derivedTypeDoesNotRequireExtendsClause.ts, 5, 16)) +>bar : Symbol(Derived.bar, Decl(derivedTypeDoesNotRequireExtendsClause.ts, 5, 16)) } class Derived2 extends Base { @@ -21,7 +21,7 @@ class Derived2 extends Base { >Base : Symbol(Base, Decl(derivedTypeDoesNotRequireExtendsClause.ts, 0, 0)) bar: string; ->bar : Symbol(bar, Decl(derivedTypeDoesNotRequireExtendsClause.ts, 9, 29)) +>bar : Symbol(Derived2.bar, Decl(derivedTypeDoesNotRequireExtendsClause.ts, 9, 29)) } var b: Base; diff --git a/tests/baselines/reference/destructuringInFunctionType.symbols b/tests/baselines/reference/destructuringInFunctionType.symbols index 8b573905b76..d73215a2ce6 100644 --- a/tests/baselines/reference/destructuringInFunctionType.symbols +++ b/tests/baselines/reference/destructuringInFunctionType.symbols @@ -2,15 +2,15 @@ interface a { a } >a : Symbol(a, Decl(destructuringInFunctionType.ts, 0, 0)) ->a : Symbol(a, Decl(destructuringInFunctionType.ts, 1, 13)) +>a : Symbol(a.a, Decl(destructuringInFunctionType.ts, 1, 13)) interface b { b } >b : Symbol(b, Decl(destructuringInFunctionType.ts, 1, 17)) ->b : Symbol(b, Decl(destructuringInFunctionType.ts, 2, 13)) +>b : Symbol(b.b, Decl(destructuringInFunctionType.ts, 2, 13)) interface c { c } >c : Symbol(c, Decl(destructuringInFunctionType.ts, 2, 17)) ->c : Symbol(c, Decl(destructuringInFunctionType.ts, 3, 13)) +>c : Symbol(c.c, Decl(destructuringInFunctionType.ts, 3, 13)) type T1 = ([a, b, c]); >T1 : Symbol(T1, Decl(destructuringInFunctionType.ts, 3, 17)) diff --git a/tests/baselines/reference/destructuringInVariableDeclarations1.js b/tests/baselines/reference/destructuringInVariableDeclarations1.js new file mode 100644 index 00000000000..707218b41e2 --- /dev/null +++ b/tests/baselines/reference/destructuringInVariableDeclarations1.js @@ -0,0 +1,13 @@ +//// [destructuringInVariableDeclarations1.ts] +export let { toString } = 1; +{ + let { toFixed } = 1; +} + + +//// [destructuringInVariableDeclarations1.js] +"use strict"; +exports.toString = (1).toString; +{ + let { toFixed } = 1; +} diff --git a/tests/baselines/reference/destructuringInVariableDeclarations1.symbols b/tests/baselines/reference/destructuringInVariableDeclarations1.symbols new file mode 100644 index 00000000000..4043bcc734d --- /dev/null +++ b/tests/baselines/reference/destructuringInVariableDeclarations1.symbols @@ -0,0 +1,8 @@ +=== tests/cases/compiler/destructuringInVariableDeclarations1.ts === +export let { toString } = 1; +>toString : Symbol(toString, Decl(destructuringInVariableDeclarations1.ts, 0, 12)) +{ + let { toFixed } = 1; +>toFixed : Symbol(toFixed, Decl(destructuringInVariableDeclarations1.ts, 2, 9)) +} + diff --git a/tests/baselines/reference/destructuringInVariableDeclarations1.types b/tests/baselines/reference/destructuringInVariableDeclarations1.types new file mode 100644 index 00000000000..84a60c844a3 --- /dev/null +++ b/tests/baselines/reference/destructuringInVariableDeclarations1.types @@ -0,0 +1,10 @@ +=== tests/cases/compiler/destructuringInVariableDeclarations1.ts === +export let { toString } = 1; +>toString : (radix?: number) => string +>1 : number +{ + let { toFixed } = 1; +>toFixed : (fractionDigits?: number) => string +>1 : number +} + diff --git a/tests/baselines/reference/destructuringInVariableDeclarations2.js b/tests/baselines/reference/destructuringInVariableDeclarations2.js new file mode 100644 index 00000000000..9c1366bd8e0 --- /dev/null +++ b/tests/baselines/reference/destructuringInVariableDeclarations2.js @@ -0,0 +1,14 @@ +//// [destructuringInVariableDeclarations2.ts] +let { toString } = 1; +{ + let { toFixed } = 1; +} +export {}; + + +//// [destructuringInVariableDeclarations2.js] +"use strict"; +let { toString } = 1; +{ + let { toFixed } = 1; +} diff --git a/tests/baselines/reference/destructuringInVariableDeclarations2.symbols b/tests/baselines/reference/destructuringInVariableDeclarations2.symbols new file mode 100644 index 00000000000..f05ddf0c758 --- /dev/null +++ b/tests/baselines/reference/destructuringInVariableDeclarations2.symbols @@ -0,0 +1,9 @@ +=== tests/cases/compiler/destructuringInVariableDeclarations2.ts === +let { toString } = 1; +>toString : Symbol(toString, Decl(destructuringInVariableDeclarations2.ts, 0, 5)) +{ + let { toFixed } = 1; +>toFixed : Symbol(toFixed, Decl(destructuringInVariableDeclarations2.ts, 2, 9)) +} +export {}; + diff --git a/tests/baselines/reference/destructuringInVariableDeclarations2.types b/tests/baselines/reference/destructuringInVariableDeclarations2.types new file mode 100644 index 00000000000..b7456d30285 --- /dev/null +++ b/tests/baselines/reference/destructuringInVariableDeclarations2.types @@ -0,0 +1,11 @@ +=== tests/cases/compiler/destructuringInVariableDeclarations2.ts === +let { toString } = 1; +>toString : (radix?: number) => string +>1 : number +{ + let { toFixed } = 1; +>toFixed : (fractionDigits?: number) => string +>1 : number +} +export {}; + diff --git a/tests/baselines/reference/destructuringInVariableDeclarations3.js b/tests/baselines/reference/destructuringInVariableDeclarations3.js new file mode 100644 index 00000000000..8da039fe98e --- /dev/null +++ b/tests/baselines/reference/destructuringInVariableDeclarations3.js @@ -0,0 +1,15 @@ +//// [destructuringInVariableDeclarations3.ts] +export let { toString } = 1; +{ + let { toFixed } = 1; +} + + +//// [destructuringInVariableDeclarations3.js] +define(["require", "exports"], function (require, exports) { + "use strict"; + exports.toString = (1).toString; + { + let { toFixed } = 1; + } +}); diff --git a/tests/baselines/reference/destructuringInVariableDeclarations3.symbols b/tests/baselines/reference/destructuringInVariableDeclarations3.symbols new file mode 100644 index 00000000000..84b131a8ad0 --- /dev/null +++ b/tests/baselines/reference/destructuringInVariableDeclarations3.symbols @@ -0,0 +1,8 @@ +=== tests/cases/compiler/destructuringInVariableDeclarations3.ts === +export let { toString } = 1; +>toString : Symbol(toString, Decl(destructuringInVariableDeclarations3.ts, 0, 12)) +{ + let { toFixed } = 1; +>toFixed : Symbol(toFixed, Decl(destructuringInVariableDeclarations3.ts, 2, 9)) +} + diff --git a/tests/baselines/reference/destructuringInVariableDeclarations3.types b/tests/baselines/reference/destructuringInVariableDeclarations3.types new file mode 100644 index 00000000000..970d6deb1ed --- /dev/null +++ b/tests/baselines/reference/destructuringInVariableDeclarations3.types @@ -0,0 +1,10 @@ +=== tests/cases/compiler/destructuringInVariableDeclarations3.ts === +export let { toString } = 1; +>toString : (radix?: number) => string +>1 : number +{ + let { toFixed } = 1; +>toFixed : (fractionDigits?: number) => string +>1 : number +} + diff --git a/tests/baselines/reference/destructuringInVariableDeclarations4.js b/tests/baselines/reference/destructuringInVariableDeclarations4.js new file mode 100644 index 00000000000..d4b30405143 --- /dev/null +++ b/tests/baselines/reference/destructuringInVariableDeclarations4.js @@ -0,0 +1,16 @@ +//// [destructuringInVariableDeclarations4.ts] +let { toString } = 1; +{ + let { toFixed } = 1; +} +export {}; + + +//// [destructuringInVariableDeclarations4.js] +define(["require", "exports"], function (require, exports) { + "use strict"; + let { toString } = 1; + { + let { toFixed } = 1; + } +}); diff --git a/tests/baselines/reference/destructuringInVariableDeclarations4.symbols b/tests/baselines/reference/destructuringInVariableDeclarations4.symbols new file mode 100644 index 00000000000..e599d7c5793 --- /dev/null +++ b/tests/baselines/reference/destructuringInVariableDeclarations4.symbols @@ -0,0 +1,9 @@ +=== tests/cases/compiler/destructuringInVariableDeclarations4.ts === +let { toString } = 1; +>toString : Symbol(toString, Decl(destructuringInVariableDeclarations4.ts, 0, 5)) +{ + let { toFixed } = 1; +>toFixed : Symbol(toFixed, Decl(destructuringInVariableDeclarations4.ts, 2, 9)) +} +export {}; + diff --git a/tests/baselines/reference/destructuringInVariableDeclarations4.types b/tests/baselines/reference/destructuringInVariableDeclarations4.types new file mode 100644 index 00000000000..628fe7a9562 --- /dev/null +++ b/tests/baselines/reference/destructuringInVariableDeclarations4.types @@ -0,0 +1,11 @@ +=== tests/cases/compiler/destructuringInVariableDeclarations4.ts === +let { toString } = 1; +>toString : (radix?: number) => string +>1 : number +{ + let { toFixed } = 1; +>toFixed : (fractionDigits?: number) => string +>1 : number +} +export {}; + diff --git a/tests/baselines/reference/destructuringInVariableDeclarations5.js b/tests/baselines/reference/destructuringInVariableDeclarations5.js new file mode 100644 index 00000000000..8938757adc2 --- /dev/null +++ b/tests/baselines/reference/destructuringInVariableDeclarations5.js @@ -0,0 +1,22 @@ +//// [destructuringInVariableDeclarations5.ts] +export let { toString } = 1; +{ + let { toFixed } = 1; +} + + +//// [destructuringInVariableDeclarations5.js] +(function (factory) { + if (typeof module === 'object' && typeof module.exports === 'object') { + var v = factory(require, exports); if (v !== undefined) module.exports = v; + } + else if (typeof define === 'function' && define.amd) { + define(["require", "exports"], factory); + } +})(function (require, exports) { + "use strict"; + exports.toString = (1).toString; + { + let { toFixed } = 1; + } +}); diff --git a/tests/baselines/reference/destructuringInVariableDeclarations5.symbols b/tests/baselines/reference/destructuringInVariableDeclarations5.symbols new file mode 100644 index 00000000000..60719928617 --- /dev/null +++ b/tests/baselines/reference/destructuringInVariableDeclarations5.symbols @@ -0,0 +1,8 @@ +=== tests/cases/compiler/destructuringInVariableDeclarations5.ts === +export let { toString } = 1; +>toString : Symbol(toString, Decl(destructuringInVariableDeclarations5.ts, 0, 12)) +{ + let { toFixed } = 1; +>toFixed : Symbol(toFixed, Decl(destructuringInVariableDeclarations5.ts, 2, 9)) +} + diff --git a/tests/baselines/reference/destructuringInVariableDeclarations5.types b/tests/baselines/reference/destructuringInVariableDeclarations5.types new file mode 100644 index 00000000000..9a890916d17 --- /dev/null +++ b/tests/baselines/reference/destructuringInVariableDeclarations5.types @@ -0,0 +1,10 @@ +=== tests/cases/compiler/destructuringInVariableDeclarations5.ts === +export let { toString } = 1; +>toString : (radix?: number) => string +>1 : number +{ + let { toFixed } = 1; +>toFixed : (fractionDigits?: number) => string +>1 : number +} + diff --git a/tests/baselines/reference/destructuringInVariableDeclarations6.js b/tests/baselines/reference/destructuringInVariableDeclarations6.js new file mode 100644 index 00000000000..b9dddb673cf --- /dev/null +++ b/tests/baselines/reference/destructuringInVariableDeclarations6.js @@ -0,0 +1,23 @@ +//// [destructuringInVariableDeclarations6.ts] +let { toString } = 1; +{ + let { toFixed } = 1; +} +export {}; + + +//// [destructuringInVariableDeclarations6.js] +(function (factory) { + if (typeof module === 'object' && typeof module.exports === 'object') { + var v = factory(require, exports); if (v !== undefined) module.exports = v; + } + else if (typeof define === 'function' && define.amd) { + define(["require", "exports"], factory); + } +})(function (require, exports) { + "use strict"; + let { toString } = 1; + { + let { toFixed } = 1; + } +}); diff --git a/tests/baselines/reference/destructuringInVariableDeclarations6.symbols b/tests/baselines/reference/destructuringInVariableDeclarations6.symbols new file mode 100644 index 00000000000..71072de351e --- /dev/null +++ b/tests/baselines/reference/destructuringInVariableDeclarations6.symbols @@ -0,0 +1,9 @@ +=== tests/cases/compiler/destructuringInVariableDeclarations6.ts === +let { toString } = 1; +>toString : Symbol(toString, Decl(destructuringInVariableDeclarations6.ts, 0, 5)) +{ + let { toFixed } = 1; +>toFixed : Symbol(toFixed, Decl(destructuringInVariableDeclarations6.ts, 2, 9)) +} +export {}; + diff --git a/tests/baselines/reference/destructuringInVariableDeclarations6.types b/tests/baselines/reference/destructuringInVariableDeclarations6.types new file mode 100644 index 00000000000..cf1105b575a --- /dev/null +++ b/tests/baselines/reference/destructuringInVariableDeclarations6.types @@ -0,0 +1,11 @@ +=== tests/cases/compiler/destructuringInVariableDeclarations6.ts === +let { toString } = 1; +>toString : (radix?: number) => string +>1 : number +{ + let { toFixed } = 1; +>toFixed : (fractionDigits?: number) => string +>1 : number +} +export {}; + diff --git a/tests/baselines/reference/destructuringInVariableDeclarations7.js b/tests/baselines/reference/destructuringInVariableDeclarations7.js new file mode 100644 index 00000000000..129a9db8d15 --- /dev/null +++ b/tests/baselines/reference/destructuringInVariableDeclarations7.js @@ -0,0 +1,22 @@ +//// [destructuringInVariableDeclarations7.ts] +export let { toString } = 1; +{ + let { toFixed } = 1; +} + + +//// [destructuringInVariableDeclarations7.js] +System.register([], function(exports_1, context_1) { + "use strict"; + var __moduleName = context_1 && context_1.id; + var toString; + return { + setters:[], + execute: function() { + exports_1("toString", toString = (1).toString); + { + let { toFixed } = 1; + } + } + } +}); diff --git a/tests/baselines/reference/destructuringInVariableDeclarations7.symbols b/tests/baselines/reference/destructuringInVariableDeclarations7.symbols new file mode 100644 index 00000000000..7fde898296b --- /dev/null +++ b/tests/baselines/reference/destructuringInVariableDeclarations7.symbols @@ -0,0 +1,8 @@ +=== tests/cases/compiler/destructuringInVariableDeclarations7.ts === +export let { toString } = 1; +>toString : Symbol(toString, Decl(destructuringInVariableDeclarations7.ts, 0, 12)) +{ + let { toFixed } = 1; +>toFixed : Symbol(toFixed, Decl(destructuringInVariableDeclarations7.ts, 2, 9)) +} + diff --git a/tests/baselines/reference/destructuringInVariableDeclarations7.types b/tests/baselines/reference/destructuringInVariableDeclarations7.types new file mode 100644 index 00000000000..c0c1b571215 --- /dev/null +++ b/tests/baselines/reference/destructuringInVariableDeclarations7.types @@ -0,0 +1,10 @@ +=== tests/cases/compiler/destructuringInVariableDeclarations7.ts === +export let { toString } = 1; +>toString : (radix?: number) => string +>1 : number +{ + let { toFixed } = 1; +>toFixed : (fractionDigits?: number) => string +>1 : number +} + diff --git a/tests/baselines/reference/destructuringInVariableDeclarations8.js b/tests/baselines/reference/destructuringInVariableDeclarations8.js new file mode 100644 index 00000000000..bc19fa118f6 --- /dev/null +++ b/tests/baselines/reference/destructuringInVariableDeclarations8.js @@ -0,0 +1,23 @@ +//// [destructuringInVariableDeclarations8.ts] +let { toString } = 1; +{ + let { toFixed } = 1; +} +export {}; + + +//// [destructuringInVariableDeclarations8.js] +System.register([], function(exports_1, context_1) { + "use strict"; + var __moduleName = context_1 && context_1.id; + var toString; + return { + setters:[], + execute: function() { + ({ toString } = 1); + { + let { toFixed } = 1; + } + } + } +}); diff --git a/tests/baselines/reference/destructuringInVariableDeclarations8.symbols b/tests/baselines/reference/destructuringInVariableDeclarations8.symbols new file mode 100644 index 00000000000..887ea4ffa4c --- /dev/null +++ b/tests/baselines/reference/destructuringInVariableDeclarations8.symbols @@ -0,0 +1,9 @@ +=== tests/cases/compiler/destructuringInVariableDeclarations8.ts === +let { toString } = 1; +>toString : Symbol(toString, Decl(destructuringInVariableDeclarations8.ts, 0, 5)) +{ + let { toFixed } = 1; +>toFixed : Symbol(toFixed, Decl(destructuringInVariableDeclarations8.ts, 2, 9)) +} +export {}; + diff --git a/tests/baselines/reference/destructuringInVariableDeclarations8.types b/tests/baselines/reference/destructuringInVariableDeclarations8.types new file mode 100644 index 00000000000..ef376563551 --- /dev/null +++ b/tests/baselines/reference/destructuringInVariableDeclarations8.types @@ -0,0 +1,11 @@ +=== tests/cases/compiler/destructuringInVariableDeclarations8.ts === +let { toString } = 1; +>toString : (radix?: number) => string +>1 : number +{ + let { toFixed } = 1; +>toFixed : (fractionDigits?: number) => string +>1 : number +} +export {}; + diff --git a/tests/baselines/reference/destructuringParameterDeclaration2.errors.txt b/tests/baselines/reference/destructuringParameterDeclaration2.errors.txt index 8c0781571e4..d68220c8308 100644 --- a/tests/baselines/reference/destructuringParameterDeclaration2.errors.txt +++ b/tests/baselines/reference/destructuringParameterDeclaration2.errors.txt @@ -7,7 +7,6 @@ tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration2.ts( Type '() => number | string[][] | string' is not assignable to type '() => number | string[][]'. Type 'number | string[][] | string' is not assignable to type 'number | string[][]'. Type 'string' is not assignable to type 'number | string[][]'. - Type 'string' is not assignable to type 'string[][]'. tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration2.ts(16,8): error TS2371: A parameter initializer is only allowed in a function or constructor implementation. tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration2.ts(16,16): error TS2371: A parameter initializer is only allowed in a function or constructor implementation. tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration2.ts(23,14): error TS2345: Argument of type '{ x: string; y: boolean; }' is not assignable to parameter of type '{ x: number; y: any; }'. @@ -29,7 +28,6 @@ tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration2.ts( tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration2.ts(38,4): error TS2345: Argument of type '{ b: boolean; }' is not assignable to parameter of type '{ b: number | string; }'. Types of property 'b' are incompatible. Type 'boolean' is not assignable to type 'number | string'. - Type 'boolean' is not assignable to type 'string'. tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration2.ts(39,4): error TS2345: Argument of type '[number, number, boolean, boolean]' is not assignable to parameter of type '[any, any, [[any]]]'. Types of property '2' are incompatible. Type 'boolean' is not assignable to type '[[any]]'. @@ -46,8 +44,8 @@ tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration2.ts( Types of property 'd4' are incompatible. Type '({x, y, c}: { x: any; y: any; c: any; }) => void' is not assignable to type '({x, y, z}?: { x: any; y: any; z: any; }) => any'. Types of parameters '__0' and '__0' are incompatible. - Type '{ x: any; y: any; c: any; }' is not assignable to type '{ x: any; y: any; z: any; }'. - Property 'z' is missing in type '{ x: any; y: any; c: any; }'. + Type '{ x: any; y: any; z: any; }' is not assignable to type '{ x: any; y: any; c: any; }'. + Property 'c' is missing in type '{ x: any; y: any; z: any; }'. tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration2.ts(56,8): error TS2463: A binding pattern parameter cannot be optional in an implementation signature. tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration2.ts(65,18): error TS2300: Duplicate identifier 'number'. tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration2.ts(65,26): error TS2300: Duplicate identifier 'number'. @@ -75,7 +73,6 @@ tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration2.ts( !!! error TS2345: Type '() => number | string[][] | string' is not assignable to type '() => number | string[][]'. !!! error TS2345: Type 'number | string[][] | string' is not assignable to type 'number | string[][]'. !!! error TS2345: Type 'string' is not assignable to type 'number | string[][]'. -!!! error TS2345: Type 'string' is not assignable to type 'string[][]'. // If the declaration includes an initializer expression (which is permitted only @@ -137,7 +134,6 @@ tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration2.ts( !!! error TS2345: Argument of type '{ b: boolean; }' is not assignable to parameter of type '{ b: number | string; }'. !!! error TS2345: Types of property 'b' are incompatible. !!! error TS2345: Type 'boolean' is not assignable to type 'number | string'. -!!! error TS2345: Type 'boolean' is not assignable to type 'string'. c5([1, 2, false, true]); // Error, implied type is [any, any, [[any]]] ~~~~~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '[number, number, boolean, boolean]' is not assignable to parameter of type '[any, any, [[any]]]'. @@ -176,8 +172,8 @@ tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration2.ts( !!! error TS2420: Types of property 'd4' are incompatible. !!! error TS2420: Type '({x, y, c}: { x: any; y: any; c: any; }) => void' is not assignable to type '({x, y, z}?: { x: any; y: any; z: any; }) => any'. !!! error TS2420: Types of parameters '__0' and '__0' are incompatible. -!!! error TS2420: Type '{ x: any; y: any; c: any; }' is not assignable to type '{ x: any; y: any; z: any; }'. -!!! error TS2420: Property 'z' is missing in type '{ x: any; y: any; c: any; }'. +!!! error TS2420: Type '{ x: any; y: any; z: any; }' is not assignable to type '{ x: any; y: any; c: any; }'. +!!! error TS2420: Property 'c' is missing in type '{ x: any; y: any; z: any; }'. d3([a, b, c]?) { } // Error, binding pattern can't be optional in implementation signature ~~~~~~~~~~ !!! error TS2463: A binding pattern parameter cannot be optional in an implementation signature. diff --git a/tests/baselines/reference/destructuringParameterDeclaration3ES5.symbols b/tests/baselines/reference/destructuringParameterDeclaration3ES5.symbols index c4dc8fd0f79..d08dc0a89fa 100644 --- a/tests/baselines/reference/destructuringParameterDeclaration3ES5.symbols +++ b/tests/baselines/reference/destructuringParameterDeclaration3ES5.symbols @@ -8,19 +8,19 @@ type arrayString = Array >arrayString : Symbol(arrayString, Decl(destructuringParameterDeclaration3ES5.ts, 0, 0)) ->Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Array : Symbol(Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --)) +>String : Symbol(String, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --)) type someArray = Array | number[]; >someArray : Symbol(someArray, Decl(destructuringParameterDeclaration3ES5.ts, 7, 32)) ->Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Array : Symbol(Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --)) +>String : Symbol(String, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --)) type stringOrNumArray = Array; >stringOrNumArray : Symbol(stringOrNumArray, Decl(destructuringParameterDeclaration3ES5.ts, 8, 42)) ->Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Array : Symbol(Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --)) +>String : Symbol(String, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) function a1(...x: (number|string)[]) { } >a1 : Symbol(a1, Decl(destructuringParameterDeclaration3ES5.ts, 9, 45)) @@ -33,8 +33,8 @@ function a2(...a) { } function a3(...a: Array) { } >a3 : Symbol(a3, Decl(destructuringParameterDeclaration3ES5.ts, 12, 21)) >a : Symbol(a, Decl(destructuringParameterDeclaration3ES5.ts, 13, 12)) ->Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Array : Symbol(Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --)) +>String : Symbol(String, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --)) function a4(...a: arrayString) { } >a4 : Symbol(a4, Decl(destructuringParameterDeclaration3ES5.ts, 13, 36)) @@ -122,7 +122,7 @@ const enum E1 { a, b } function foo1(...a: T[]) { } >foo1 : Symbol(foo1, Decl(destructuringParameterDeclaration3ES5.ts, 39, 22)) >T : Symbol(T, Decl(destructuringParameterDeclaration3ES5.ts, 40, 14)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) >a : Symbol(a, Decl(destructuringParameterDeclaration3ES5.ts, 40, 32)) >T : Symbol(T, Decl(destructuringParameterDeclaration3ES5.ts, 40, 14)) diff --git a/tests/baselines/reference/destructuringParameterDeclaration3ES6.symbols b/tests/baselines/reference/destructuringParameterDeclaration3ES6.symbols index 46682802e2a..dd07a528ec8 100644 --- a/tests/baselines/reference/destructuringParameterDeclaration3ES6.symbols +++ b/tests/baselines/reference/destructuringParameterDeclaration3ES6.symbols @@ -8,19 +8,19 @@ type arrayString = Array >arrayString : Symbol(arrayString, Decl(destructuringParameterDeclaration3ES6.ts, 0, 0)) ->Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Array : Symbol(Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --)) +>String : Symbol(String, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --)) type someArray = Array | number[]; >someArray : Symbol(someArray, Decl(destructuringParameterDeclaration3ES6.ts, 7, 32)) ->Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Array : Symbol(Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --)) +>String : Symbol(String, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --)) type stringOrNumArray = Array; >stringOrNumArray : Symbol(stringOrNumArray, Decl(destructuringParameterDeclaration3ES6.ts, 8, 42)) ->Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Array : Symbol(Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --)) +>String : Symbol(String, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) function a1(...x: (number|string)[]) { } >a1 : Symbol(a1, Decl(destructuringParameterDeclaration3ES6.ts, 9, 45)) @@ -33,8 +33,8 @@ function a2(...a) { } function a3(...a: Array) { } >a3 : Symbol(a3, Decl(destructuringParameterDeclaration3ES6.ts, 12, 21)) >a : Symbol(a, Decl(destructuringParameterDeclaration3ES6.ts, 13, 12)) ->Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Array : Symbol(Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --)) +>String : Symbol(String, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --)) function a4(...a: arrayString) { } >a4 : Symbol(a4, Decl(destructuringParameterDeclaration3ES6.ts, 13, 36)) @@ -122,7 +122,7 @@ const enum E1 { a, b } function foo1(...a: T[]) { } >foo1 : Symbol(foo1, Decl(destructuringParameterDeclaration3ES6.ts, 39, 22)) >T : Symbol(T, Decl(destructuringParameterDeclaration3ES6.ts, 40, 14)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) >a : Symbol(a, Decl(destructuringParameterDeclaration3ES6.ts, 40, 32)) >T : Symbol(T, Decl(destructuringParameterDeclaration3ES6.ts, 40, 14)) diff --git a/tests/baselines/reference/destructuringParameterDeclaration4.errors.txt b/tests/baselines/reference/destructuringParameterDeclaration4.errors.txt index b08c5b942d8..aa5a8e8daea 100644 --- a/tests/baselines/reference/destructuringParameterDeclaration4.errors.txt +++ b/tests/baselines/reference/destructuringParameterDeclaration4.errors.txt @@ -1,7 +1,6 @@ tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration4.ts(11,13): error TS2370: A rest parameter must be of an array type. tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration4.ts(13,13): error TS2370: A rest parameter must be of an array type. tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration4.ts(20,19): error TS2345: Argument of type 'boolean' is not assignable to parameter of type 'number | string'. - Type 'boolean' is not assignable to type 'string'. tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration4.ts(21,7): error TS2304: Cannot find name 'array2'. tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration4.ts(22,4): error TS2345: Argument of type '[number, number, string, boolean, boolean]' is not assignable to parameter of type '[any, any, [[any]]]'. Types of property '2' are incompatible. @@ -43,7 +42,6 @@ tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration4.ts( a1(1, 2, "hello", true); // Error, parameter type is (number|string)[] ~~~~ !!! error TS2345: Argument of type 'boolean' is not assignable to parameter of type 'number | string'. -!!! error TS2345: Type 'boolean' is not assignable to type 'string'. a1(...array2); // Error parameter type is (number|string)[] ~~~~~~ !!! error TS2304: Cannot find name 'array2'. diff --git a/tests/baselines/reference/destructuringWithGenericParameter.symbols b/tests/baselines/reference/destructuringWithGenericParameter.symbols index 0c489cf1ef2..9a795cb5441 100644 --- a/tests/baselines/reference/destructuringWithGenericParameter.symbols +++ b/tests/baselines/reference/destructuringWithGenericParameter.symbols @@ -4,7 +4,7 @@ class GenericClass { >T : Symbol(T, Decl(destructuringWithGenericParameter.ts, 0, 19)) payload: T; ->payload : Symbol(payload, Decl(destructuringWithGenericParameter.ts, 0, 23)) +>payload : Symbol(GenericClass.payload, Decl(destructuringWithGenericParameter.ts, 0, 23)) >T : Symbol(T, Decl(destructuringWithGenericParameter.ts, 0, 19)) } diff --git a/tests/baselines/reference/destructuringWithNewExpression.symbols b/tests/baselines/reference/destructuringWithNewExpression.symbols index c7dce468485..1f2bb93530f 100644 --- a/tests/baselines/reference/destructuringWithNewExpression.symbols +++ b/tests/baselines/reference/destructuringWithNewExpression.symbols @@ -3,7 +3,7 @@ class C { >C : Symbol(C, Decl(destructuringWithNewExpression.ts, 0, 0)) x = 0; ->x : Symbol(x, Decl(destructuringWithNewExpression.ts, 0, 9)) +>x : Symbol(C.x, Decl(destructuringWithNewExpression.ts, 0, 9)) } var { x } = new C; diff --git a/tests/baselines/reference/detachedCommentAtStartOfConstructor1.symbols b/tests/baselines/reference/detachedCommentAtStartOfConstructor1.symbols index 9590abaa460..d8531e9ff02 100644 --- a/tests/baselines/reference/detachedCommentAtStartOfConstructor1.symbols +++ b/tests/baselines/reference/detachedCommentAtStartOfConstructor1.symbols @@ -3,10 +3,10 @@ class TestFile { >TestFile : Symbol(TestFile, Decl(detachedCommentAtStartOfConstructor1.ts, 0, 0)) public message: string; ->message : Symbol(message, Decl(detachedCommentAtStartOfConstructor1.ts, 0, 16)) +>message : Symbol(TestFile.message, Decl(detachedCommentAtStartOfConstructor1.ts, 0, 16)) public name; ->name : Symbol(name, Decl(detachedCommentAtStartOfConstructor1.ts, 1, 27)) +>name : Symbol(TestFile.name, Decl(detachedCommentAtStartOfConstructor1.ts, 1, 27)) constructor(message: string) { >message : Symbol(message, Decl(detachedCommentAtStartOfConstructor1.ts, 3, 16)) @@ -16,14 +16,14 @@ class TestFile { var getMessage = () => message + this.name; >getMessage : Symbol(getMessage, Decl(detachedCommentAtStartOfConstructor1.ts, 6, 11)) >message : Symbol(message, Decl(detachedCommentAtStartOfConstructor1.ts, 3, 16)) ->this.name : Symbol(name, Decl(detachedCommentAtStartOfConstructor1.ts, 1, 27)) +>this.name : Symbol(TestFile.name, Decl(detachedCommentAtStartOfConstructor1.ts, 1, 27)) >this : Symbol(TestFile, Decl(detachedCommentAtStartOfConstructor1.ts, 0, 0)) ->name : Symbol(name, Decl(detachedCommentAtStartOfConstructor1.ts, 1, 27)) +>name : Symbol(TestFile.name, Decl(detachedCommentAtStartOfConstructor1.ts, 1, 27)) this.message = getMessage(); ->this.message : Symbol(message, Decl(detachedCommentAtStartOfConstructor1.ts, 0, 16)) +>this.message : Symbol(TestFile.message, Decl(detachedCommentAtStartOfConstructor1.ts, 0, 16)) >this : Symbol(TestFile, Decl(detachedCommentAtStartOfConstructor1.ts, 0, 0)) ->message : Symbol(message, Decl(detachedCommentAtStartOfConstructor1.ts, 0, 16)) +>message : Symbol(TestFile.message, Decl(detachedCommentAtStartOfConstructor1.ts, 0, 16)) >getMessage : Symbol(getMessage, Decl(detachedCommentAtStartOfConstructor1.ts, 6, 11)) } } diff --git a/tests/baselines/reference/detachedCommentAtStartOfConstructor2.symbols b/tests/baselines/reference/detachedCommentAtStartOfConstructor2.symbols index 78af9430034..a8af5379524 100644 --- a/tests/baselines/reference/detachedCommentAtStartOfConstructor2.symbols +++ b/tests/baselines/reference/detachedCommentAtStartOfConstructor2.symbols @@ -3,10 +3,10 @@ class TestFile { >TestFile : Symbol(TestFile, Decl(detachedCommentAtStartOfConstructor2.ts, 0, 0)) public message: string; ->message : Symbol(message, Decl(detachedCommentAtStartOfConstructor2.ts, 0, 16)) +>message : Symbol(TestFile.message, Decl(detachedCommentAtStartOfConstructor2.ts, 0, 16)) public name: string; ->name : Symbol(name, Decl(detachedCommentAtStartOfConstructor2.ts, 1, 27)) +>name : Symbol(TestFile.name, Decl(detachedCommentAtStartOfConstructor2.ts, 1, 27)) constructor(message: string) { >message : Symbol(message, Decl(detachedCommentAtStartOfConstructor2.ts, 3, 16)) @@ -17,14 +17,14 @@ class TestFile { var getMessage = () => message + this.name; >getMessage : Symbol(getMessage, Decl(detachedCommentAtStartOfConstructor2.ts, 7, 11)) >message : Symbol(message, Decl(detachedCommentAtStartOfConstructor2.ts, 3, 16)) ->this.name : Symbol(name, Decl(detachedCommentAtStartOfConstructor2.ts, 1, 27)) +>this.name : Symbol(TestFile.name, Decl(detachedCommentAtStartOfConstructor2.ts, 1, 27)) >this : Symbol(TestFile, Decl(detachedCommentAtStartOfConstructor2.ts, 0, 0)) ->name : Symbol(name, Decl(detachedCommentAtStartOfConstructor2.ts, 1, 27)) +>name : Symbol(TestFile.name, Decl(detachedCommentAtStartOfConstructor2.ts, 1, 27)) this.message = getMessage(); ->this.message : Symbol(message, Decl(detachedCommentAtStartOfConstructor2.ts, 0, 16)) +>this.message : Symbol(TestFile.message, Decl(detachedCommentAtStartOfConstructor2.ts, 0, 16)) >this : Symbol(TestFile, Decl(detachedCommentAtStartOfConstructor2.ts, 0, 0)) ->message : Symbol(message, Decl(detachedCommentAtStartOfConstructor2.ts, 0, 16)) +>message : Symbol(TestFile.message, Decl(detachedCommentAtStartOfConstructor2.ts, 0, 16)) >getMessage : Symbol(getMessage, Decl(detachedCommentAtStartOfConstructor2.ts, 7, 11)) } } diff --git a/tests/baselines/reference/detachedCommentAtStartOfLambdaFunction1.symbols b/tests/baselines/reference/detachedCommentAtStartOfLambdaFunction1.symbols index aa34885d79b..8eb7fc137b1 100644 --- a/tests/baselines/reference/detachedCommentAtStartOfLambdaFunction1.symbols +++ b/tests/baselines/reference/detachedCommentAtStartOfLambdaFunction1.symbols @@ -3,10 +3,10 @@ class TestFile { >TestFile : Symbol(TestFile, Decl(detachedCommentAtStartOfLambdaFunction1.ts, 0, 0)) name: string; ->name : Symbol(name, Decl(detachedCommentAtStartOfLambdaFunction1.ts, 0, 16)) +>name : Symbol(TestFile.name, Decl(detachedCommentAtStartOfLambdaFunction1.ts, 0, 16)) foo(message: string): () => string { ->foo : Symbol(foo, Decl(detachedCommentAtStartOfLambdaFunction1.ts, 1, 17)) +>foo : Symbol(TestFile.foo, Decl(detachedCommentAtStartOfLambdaFunction1.ts, 1, 17)) >message : Symbol(message, Decl(detachedCommentAtStartOfLambdaFunction1.ts, 2, 8)) return (...x: string[]) => @@ -17,8 +17,8 @@ class TestFile { /// message + this.name; >message : Symbol(message, Decl(detachedCommentAtStartOfLambdaFunction1.ts, 2, 8)) ->this.name : Symbol(name, Decl(detachedCommentAtStartOfLambdaFunction1.ts, 0, 16)) +>this.name : Symbol(TestFile.name, Decl(detachedCommentAtStartOfLambdaFunction1.ts, 0, 16)) >this : Symbol(TestFile, Decl(detachedCommentAtStartOfLambdaFunction1.ts, 0, 0)) ->name : Symbol(name, Decl(detachedCommentAtStartOfLambdaFunction1.ts, 0, 16)) +>name : Symbol(TestFile.name, Decl(detachedCommentAtStartOfLambdaFunction1.ts, 0, 16)) } } diff --git a/tests/baselines/reference/detachedCommentAtStartOfLambdaFunction2.symbols b/tests/baselines/reference/detachedCommentAtStartOfLambdaFunction2.symbols index 29cef430c3a..72178fd3059 100644 --- a/tests/baselines/reference/detachedCommentAtStartOfLambdaFunction2.symbols +++ b/tests/baselines/reference/detachedCommentAtStartOfLambdaFunction2.symbols @@ -3,10 +3,10 @@ class TestFile { >TestFile : Symbol(TestFile, Decl(detachedCommentAtStartOfLambdaFunction2.ts, 0, 0)) name: string; ->name : Symbol(name, Decl(detachedCommentAtStartOfLambdaFunction2.ts, 0, 16)) +>name : Symbol(TestFile.name, Decl(detachedCommentAtStartOfLambdaFunction2.ts, 0, 16)) foo(message: string): () => string { ->foo : Symbol(foo, Decl(detachedCommentAtStartOfLambdaFunction2.ts, 1, 17)) +>foo : Symbol(TestFile.foo, Decl(detachedCommentAtStartOfLambdaFunction2.ts, 1, 17)) >message : Symbol(message, Decl(detachedCommentAtStartOfLambdaFunction2.ts, 2, 8)) return (...x: string[]) => @@ -18,8 +18,8 @@ class TestFile { message + this.name; >message : Symbol(message, Decl(detachedCommentAtStartOfLambdaFunction2.ts, 2, 8)) ->this.name : Symbol(name, Decl(detachedCommentAtStartOfLambdaFunction2.ts, 0, 16)) +>this.name : Symbol(TestFile.name, Decl(detachedCommentAtStartOfLambdaFunction2.ts, 0, 16)) >this : Symbol(TestFile, Decl(detachedCommentAtStartOfLambdaFunction2.ts, 0, 0)) ->name : Symbol(name, Decl(detachedCommentAtStartOfLambdaFunction2.ts, 0, 16)) +>name : Symbol(TestFile.name, Decl(detachedCommentAtStartOfLambdaFunction2.ts, 0, 16)) } } diff --git a/tests/baselines/reference/doNotEmitPinnedCommentOnNotEmittedNode.symbols b/tests/baselines/reference/doNotEmitPinnedCommentOnNotEmittedNode.symbols index c733d886ff3..bd6f35e406f 100644 --- a/tests/baselines/reference/doNotEmitPinnedCommentOnNotEmittedNode.symbols +++ b/tests/baselines/reference/doNotEmitPinnedCommentOnNotEmittedNode.symbols @@ -5,12 +5,12 @@ class C { /*! remove pinned comment anywhere else */ public foo(x: string, y: any) ->foo : Symbol(foo, Decl(file1.ts, 1, 9), Decl(file1.ts, 3, 33)) +>foo : Symbol(C.foo, Decl(file1.ts, 1, 9), Decl(file1.ts, 3, 33)) >x : Symbol(x, Decl(file1.ts, 3, 15)) >y : Symbol(y, Decl(file1.ts, 3, 25)) public foo(x: string, y: number) { } ->foo : Symbol(foo, Decl(file1.ts, 1, 9), Decl(file1.ts, 3, 33)) +>foo : Symbol(C.foo, Decl(file1.ts, 1, 9), Decl(file1.ts, 3, 33)) >x : Symbol(x, Decl(file1.ts, 4, 15)) >y : Symbol(y, Decl(file1.ts, 4, 25)) } diff --git a/tests/baselines/reference/doNotEmitPinnedCommentOnNotEmittedNodets.symbols b/tests/baselines/reference/doNotEmitPinnedCommentOnNotEmittedNodets.symbols index dcd27478115..7b96fc028b1 100644 --- a/tests/baselines/reference/doNotEmitPinnedCommentOnNotEmittedNodets.symbols +++ b/tests/baselines/reference/doNotEmitPinnedCommentOnNotEmittedNodets.symbols @@ -5,12 +5,12 @@ class C { /*! remove pinned comment anywhere else */ public foo(x: string, y: any) ->foo : Symbol(foo, Decl(doNotEmitPinnedCommentOnNotEmittedNodets.ts, 1, 9), Decl(doNotEmitPinnedCommentOnNotEmittedNodets.ts, 3, 33)) +>foo : Symbol(C.foo, Decl(doNotEmitPinnedCommentOnNotEmittedNodets.ts, 1, 9), Decl(doNotEmitPinnedCommentOnNotEmittedNodets.ts, 3, 33)) >x : Symbol(x, Decl(doNotEmitPinnedCommentOnNotEmittedNodets.ts, 3, 15)) >y : Symbol(y, Decl(doNotEmitPinnedCommentOnNotEmittedNodets.ts, 3, 25)) public foo(x: string, y: number) { } ->foo : Symbol(foo, Decl(doNotEmitPinnedCommentOnNotEmittedNodets.ts, 1, 9), Decl(doNotEmitPinnedCommentOnNotEmittedNodets.ts, 3, 33)) +>foo : Symbol(C.foo, Decl(doNotEmitPinnedCommentOnNotEmittedNodets.ts, 1, 9), Decl(doNotEmitPinnedCommentOnNotEmittedNodets.ts, 3, 33)) >x : Symbol(x, Decl(doNotEmitPinnedCommentOnNotEmittedNodets.ts, 4, 15)) >y : Symbol(y, Decl(doNotEmitPinnedCommentOnNotEmittedNodets.ts, 4, 25)) } diff --git a/tests/baselines/reference/doNotWidenAtObjectLiteralPropertyAssignment.symbols b/tests/baselines/reference/doNotWidenAtObjectLiteralPropertyAssignment.symbols index 7aaf3b98f4a..7a1073d6ebf 100644 --- a/tests/baselines/reference/doNotWidenAtObjectLiteralPropertyAssignment.symbols +++ b/tests/baselines/reference/doNotWidenAtObjectLiteralPropertyAssignment.symbols @@ -3,18 +3,18 @@ interface ITestEventInterval { >ITestEventInterval : Symbol(ITestEventInterval, Decl(doNotWidenAtObjectLiteralPropertyAssignment.ts, 0, 0)) begin: number; ->begin : Symbol(begin, Decl(doNotWidenAtObjectLiteralPropertyAssignment.ts, 0, 30)) +>begin : Symbol(ITestEventInterval.begin, Decl(doNotWidenAtObjectLiteralPropertyAssignment.ts, 0, 30)) } interface IIntervalTreeNode { >IIntervalTreeNode : Symbol(IIntervalTreeNode, Decl(doNotWidenAtObjectLiteralPropertyAssignment.ts, 2, 1)) interval: ITestEventInterval; ->interval : Symbol(interval, Decl(doNotWidenAtObjectLiteralPropertyAssignment.ts, 4, 29)) +>interval : Symbol(IIntervalTreeNode.interval, Decl(doNotWidenAtObjectLiteralPropertyAssignment.ts, 4, 29)) >ITestEventInterval : Symbol(ITestEventInterval, Decl(doNotWidenAtObjectLiteralPropertyAssignment.ts, 0, 0)) children?: IIntervalTreeNode[]; ->children : Symbol(children, Decl(doNotWidenAtObjectLiteralPropertyAssignment.ts, 5, 33)) +>children : Symbol(IIntervalTreeNode.children, Decl(doNotWidenAtObjectLiteralPropertyAssignment.ts, 5, 33)) >IIntervalTreeNode : Symbol(IIntervalTreeNode, Decl(doNotWidenAtObjectLiteralPropertyAssignment.ts, 2, 1)) } diff --git a/tests/baselines/reference/dottedSymbolResolution1.symbols b/tests/baselines/reference/dottedSymbolResolution1.symbols index 25ff8a6fe92..e5e866fe0c9 100644 --- a/tests/baselines/reference/dottedSymbolResolution1.symbols +++ b/tests/baselines/reference/dottedSymbolResolution1.symbols @@ -3,7 +3,7 @@ interface JQuery { >JQuery : Symbol(JQuery, Decl(dottedSymbolResolution1.ts, 0, 0)) find(selector: string): JQuery; ->find : Symbol(find, Decl(dottedSymbolResolution1.ts, 0, 18)) +>find : Symbol(JQuery.find, Decl(dottedSymbolResolution1.ts, 0, 18)) >selector : Symbol(selector, Decl(dottedSymbolResolution1.ts, 1, 9)) >JQuery : Symbol(JQuery, Decl(dottedSymbolResolution1.ts, 0, 0)) } @@ -23,7 +23,7 @@ interface JQueryStatic { class Base { foo() { } } >Base : Symbol(Base, Decl(dottedSymbolResolution1.ts, 8, 1)) ->foo : Symbol(foo, Decl(dottedSymbolResolution1.ts, 10, 12)) +>foo : Symbol(Base.foo, Decl(dottedSymbolResolution1.ts, 10, 12)) function each(collection: string, callback: (indexInArray: any, valueOfElement: any) => any): any; >each : Symbol(each, Decl(dottedSymbolResolution1.ts, 10, 24), Decl(dottedSymbolResolution1.ts, 12, 98), Decl(dottedSymbolResolution1.ts, 13, 102)) diff --git a/tests/baselines/reference/downlevelLetConst18.errors.txt b/tests/baselines/reference/downlevelLetConst18.errors.txt new file mode 100644 index 00000000000..5b91498f173 --- /dev/null +++ b/tests/baselines/reference/downlevelLetConst18.errors.txt @@ -0,0 +1,40 @@ +tests/cases/compiler/downlevelLetConst18.ts(5,14): error TS1250: Function declarations are not allowed inside blocks in strict mode when targeting 'ES3' or 'ES5'. +tests/cases/compiler/downlevelLetConst18.ts(9,14): error TS1250: Function declarations are not allowed inside blocks in strict mode when targeting 'ES3' or 'ES5'. + + +==== tests/cases/compiler/downlevelLetConst18.ts (2 errors) ==== + + 'use strict' + + for (let x; ;) { + function foo() { x }; + ~~~ +!!! error TS1250: Function declarations are not allowed inside blocks in strict mode when targeting 'ES3' or 'ES5'. + } + + for (let x; ;) { + function foo1() { x }; + ~~~~ +!!! error TS1250: Function declarations are not allowed inside blocks in strict mode when targeting 'ES3' or 'ES5'. + } + + for (let x; ;) { + (() => { x })(); + } + + for (const x = 1; ;) { + (() => { x })(); + } + + for (let x; ;) { + ({ foo() { x }}) + } + + for (let x; ;) { + ({ get foo() { return x } }) + } + + for (let x; ;) { + ({ set foo(v) { x } }) + } + \ No newline at end of file diff --git a/tests/baselines/reference/downlevelLetConst18.symbols b/tests/baselines/reference/downlevelLetConst18.symbols deleted file mode 100644 index a1df0dc6ae9..00000000000 --- a/tests/baselines/reference/downlevelLetConst18.symbols +++ /dev/null @@ -1,59 +0,0 @@ -=== tests/cases/compiler/downlevelLetConst18.ts === - -'use strict' - -for (let x; ;) { ->x : Symbol(x, Decl(downlevelLetConst18.ts, 3, 8)) - - function foo() { x }; ->foo : Symbol(foo, Decl(downlevelLetConst18.ts, 3, 16)) ->x : Symbol(x, Decl(downlevelLetConst18.ts, 3, 8)) -} - -for (let x; ;) { ->x : Symbol(x, Decl(downlevelLetConst18.ts, 7, 8)) - - function foo1() { x }; ->foo1 : Symbol(foo1, Decl(downlevelLetConst18.ts, 7, 16)) ->x : Symbol(x, Decl(downlevelLetConst18.ts, 7, 8)) -} - -for (let x; ;) { ->x : Symbol(x, Decl(downlevelLetConst18.ts, 11, 8)) - - (() => { x })(); ->x : Symbol(x, Decl(downlevelLetConst18.ts, 11, 8)) -} - -for (const x = 1; ;) { ->x : Symbol(x, Decl(downlevelLetConst18.ts, 15, 10)) - - (() => { x })(); ->x : Symbol(x, Decl(downlevelLetConst18.ts, 15, 10)) -} - -for (let x; ;) { ->x : Symbol(x, Decl(downlevelLetConst18.ts, 19, 8)) - - ({ foo() { x }}) ->foo : Symbol(foo, Decl(downlevelLetConst18.ts, 20, 6)) ->x : Symbol(x, Decl(downlevelLetConst18.ts, 19, 8)) -} - -for (let x; ;) { ->x : Symbol(x, Decl(downlevelLetConst18.ts, 23, 8)) - - ({ get foo() { return x } }) ->foo : Symbol(foo, Decl(downlevelLetConst18.ts, 24, 6)) ->x : Symbol(x, Decl(downlevelLetConst18.ts, 23, 8)) -} - -for (let x; ;) { ->x : Symbol(x, Decl(downlevelLetConst18.ts, 27, 8)) - - ({ set foo(v) { x } }) ->foo : Symbol(foo, Decl(downlevelLetConst18.ts, 28, 6)) ->v : Symbol(v, Decl(downlevelLetConst18.ts, 28, 15)) ->x : Symbol(x, Decl(downlevelLetConst18.ts, 27, 8)) -} - diff --git a/tests/baselines/reference/downlevelLetConst18.types b/tests/baselines/reference/downlevelLetConst18.types deleted file mode 100644 index 1f7be616124..00000000000 --- a/tests/baselines/reference/downlevelLetConst18.types +++ /dev/null @@ -1,73 +0,0 @@ -=== tests/cases/compiler/downlevelLetConst18.ts === - -'use strict' ->'use strict' : string - -for (let x; ;) { ->x : any - - function foo() { x }; ->foo : () => void ->x : any -} - -for (let x; ;) { ->x : any - - function foo1() { x }; ->foo1 : () => void ->x : any -} - -for (let x; ;) { ->x : any - - (() => { x })(); ->(() => { x })() : void ->(() => { x }) : () => void ->() => { x } : () => void ->x : any -} - -for (const x = 1; ;) { ->x : number ->1 : number - - (() => { x })(); ->(() => { x })() : void ->(() => { x }) : () => void ->() => { x } : () => void ->x : number -} - -for (let x; ;) { ->x : any - - ({ foo() { x }}) ->({ foo() { x }}) : { foo(): void; } ->{ foo() { x }} : { foo(): void; } ->foo : () => void ->x : any -} - -for (let x; ;) { ->x : any - - ({ get foo() { return x } }) ->({ get foo() { return x } }) : { readonly foo: any; } ->{ get foo() { return x } } : { readonly foo: any; } ->foo : any ->x : any -} - -for (let x; ;) { ->x : any - - ({ set foo(v) { x } }) ->({ set foo(v) { x } }) : { foo: any; } ->{ set foo(v) { x } } : { foo: any; } ->foo : any ->v : any ->x : any -} - diff --git a/tests/baselines/reference/downlevelLetConst19.errors.txt b/tests/baselines/reference/downlevelLetConst19.errors.txt new file mode 100644 index 00000000000..ef8583347bd --- /dev/null +++ b/tests/baselines/reference/downlevelLetConst19.errors.txt @@ -0,0 +1,25 @@ +tests/cases/compiler/downlevelLetConst19.ts(9,14): error TS1250: Function declarations are not allowed inside blocks in strict mode when targeting 'ES3' or 'ES5'. + + +==== tests/cases/compiler/downlevelLetConst19.ts (1 errors) ==== + 'use strict' + declare function use(a: any); + var x; + function a() { + { + let x; + use(x); + + function b() { + ~ +!!! error TS1250: Function declarations are not allowed inside blocks in strict mode when targeting 'ES3' or 'ES5'. + { + let x; + use(x); + } + use(x); + } + } + use(x) + } + use(x) \ No newline at end of file diff --git a/tests/baselines/reference/downlevelLetConst19.symbols b/tests/baselines/reference/downlevelLetConst19.symbols deleted file mode 100644 index 9ed23e43447..00000000000 --- a/tests/baselines/reference/downlevelLetConst19.symbols +++ /dev/null @@ -1,42 +0,0 @@ -=== tests/cases/compiler/downlevelLetConst19.ts === -'use strict' -declare function use(a: any); ->use : Symbol(use, Decl(downlevelLetConst19.ts, 0, 12)) ->a : Symbol(a, Decl(downlevelLetConst19.ts, 1, 21)) - -var x; ->x : Symbol(x, Decl(downlevelLetConst19.ts, 2, 3)) - -function a() { ->a : Symbol(a, Decl(downlevelLetConst19.ts, 2, 6)) - { - let x; ->x : Symbol(x, Decl(downlevelLetConst19.ts, 5, 7)) - - use(x); ->use : Symbol(use, Decl(downlevelLetConst19.ts, 0, 12)) ->x : Symbol(x, Decl(downlevelLetConst19.ts, 5, 7)) - - function b() { ->b : Symbol(b, Decl(downlevelLetConst19.ts, 6, 11)) - { - let x; ->x : Symbol(x, Decl(downlevelLetConst19.ts, 10, 15)) - - use(x); ->use : Symbol(use, Decl(downlevelLetConst19.ts, 0, 12)) ->x : Symbol(x, Decl(downlevelLetConst19.ts, 10, 15)) - } - use(x); ->use : Symbol(use, Decl(downlevelLetConst19.ts, 0, 12)) ->x : Symbol(x, Decl(downlevelLetConst19.ts, 5, 7)) - } - } - use(x) ->use : Symbol(use, Decl(downlevelLetConst19.ts, 0, 12)) ->x : Symbol(x, Decl(downlevelLetConst19.ts, 2, 3)) -} -use(x) ->use : Symbol(use, Decl(downlevelLetConst19.ts, 0, 12)) ->x : Symbol(x, Decl(downlevelLetConst19.ts, 2, 3)) - diff --git a/tests/baselines/reference/downlevelLetConst19.types b/tests/baselines/reference/downlevelLetConst19.types deleted file mode 100644 index 687033c195a..00000000000 --- a/tests/baselines/reference/downlevelLetConst19.types +++ /dev/null @@ -1,49 +0,0 @@ -=== tests/cases/compiler/downlevelLetConst19.ts === -'use strict' ->'use strict' : string - -declare function use(a: any); ->use : (a: any) => any ->a : any - -var x; ->x : any - -function a() { ->a : () => void - { - let x; ->x : any - - use(x); ->use(x) : any ->use : (a: any) => any ->x : any - - function b() { ->b : () => void - { - let x; ->x : any - - use(x); ->use(x) : any ->use : (a: any) => any ->x : any - } - use(x); ->use(x) : any ->use : (a: any) => any ->x : any - } - } - use(x) ->use(x) : any ->use : (a: any) => any ->x : any -} -use(x) ->use(x) : any ->use : (a: any) => any ->x : any - diff --git a/tests/baselines/reference/duplicateOverloadInTypeAugmentation1.symbols b/tests/baselines/reference/duplicateOverloadInTypeAugmentation1.symbols index a1c083fbc15..02589e011c4 100644 --- a/tests/baselines/reference/duplicateOverloadInTypeAugmentation1.symbols +++ b/tests/baselines/reference/duplicateOverloadInTypeAugmentation1.symbols @@ -4,7 +4,7 @@ interface Array { >T : Symbol(T, Decl(lib.d.ts, --, --), Decl(duplicateOverloadInTypeAugmentation1.ts, 0, 16)) reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, ->reduce : Symbol(reduce, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(duplicateOverloadInTypeAugmentation1.ts, 0, 20), Decl(duplicateOverloadInTypeAugmentation1.ts, 2, 29)) +>reduce : Symbol(Array.reduce, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(duplicateOverloadInTypeAugmentation1.ts, 0, 20), Decl(duplicateOverloadInTypeAugmentation1.ts, 2, 29)) >callbackfn : Symbol(callbackfn, Decl(duplicateOverloadInTypeAugmentation1.ts, 1, 11)) >previousValue : Symbol(previousValue, Decl(duplicateOverloadInTypeAugmentation1.ts, 1, 24)) >T : Symbol(T, Decl(lib.d.ts, --, --), Decl(duplicateOverloadInTypeAugmentation1.ts, 0, 16)) @@ -21,7 +21,7 @@ interface Array { >T : Symbol(T, Decl(lib.d.ts, --, --), Decl(duplicateOverloadInTypeAugmentation1.ts, 0, 16)) reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, ->reduce : Symbol(reduce, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(duplicateOverloadInTypeAugmentation1.ts, 0, 20), Decl(duplicateOverloadInTypeAugmentation1.ts, 2, 29)) +>reduce : Symbol(Array.reduce, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(duplicateOverloadInTypeAugmentation1.ts, 0, 20), Decl(duplicateOverloadInTypeAugmentation1.ts, 2, 29)) >U : Symbol(U, Decl(duplicateOverloadInTypeAugmentation1.ts, 3, 11)) >callbackfn : Symbol(callbackfn, Decl(duplicateOverloadInTypeAugmentation1.ts, 3, 14)) >previousValue : Symbol(previousValue, Decl(duplicateOverloadInTypeAugmentation1.ts, 3, 27)) diff --git a/tests/baselines/reference/duplicateVariablesByScope.symbols b/tests/baselines/reference/duplicateVariablesByScope.symbols index 9dd280d2756..88eb44d0181 100644 --- a/tests/baselines/reference/duplicateVariablesByScope.symbols +++ b/tests/baselines/reference/duplicateVariablesByScope.symbols @@ -41,7 +41,7 @@ class C { >C : Symbol(C, Decl(duplicateVariablesByScope.ts, 20, 1)) foo() { ->foo : Symbol(foo, Decl(duplicateVariablesByScope.ts, 22, 9)) +>foo : Symbol(C.foo, Decl(duplicateVariablesByScope.ts, 22, 9)) try { var x = 1; diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments14_ES6.symbols b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments14_ES6.symbols index f5846be3738..fe6788b31f5 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments14_ES6.symbols +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments14_ES6.symbols @@ -4,9 +4,9 @@ function f() { >f : Symbol(f, Decl(emitArrowFunctionWhenUsingArguments14_ES6.ts, 0, 0)) if (Math.random()) { ->Math.random : Symbol(Math.random, Decl(lib.d.ts, --, --)) ->Math : Symbol(Math, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->random : Symbol(Math.random, Decl(lib.d.ts, --, --)) +>Math.random : Symbol(Math.random, Decl(lib.es5.d.ts, --, --)) +>Math : Symbol(Math, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --)) +>random : Symbol(Math.random, Decl(lib.es5.d.ts, --, --)) let arguments = 100; >arguments : Symbol(arguments, Decl(emitArrowFunctionWhenUsingArguments14_ES6.ts, 3, 11)) diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments15_ES6.symbols b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments15_ES6.symbols index 648f04b0814..63ee68f0aa7 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments15_ES6.symbols +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments15_ES6.symbols @@ -7,9 +7,9 @@ function f() { >arguments : Symbol(arguments, Decl(emitArrowFunctionWhenUsingArguments15_ES6.ts, 2, 7)) if (Math.random()) { ->Math.random : Symbol(Math.random, Decl(lib.d.ts, --, --)) ->Math : Symbol(Math, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->random : Symbol(Math.random, Decl(lib.d.ts, --, --)) +>Math.random : Symbol(Math.random, Decl(lib.es5.d.ts, --, --)) +>Math : Symbol(Math, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --)) +>random : Symbol(Math.random, Decl(lib.es5.d.ts, --, --)) const arguments = 100; >arguments : Symbol(arguments, Decl(emitArrowFunctionWhenUsingArguments15_ES6.ts, 4, 13)) diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments16_ES6.symbols b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments16_ES6.symbols index bc9fcbfa159..6ea3019f1e6 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments16_ES6.symbols +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments16_ES6.symbols @@ -7,9 +7,9 @@ function f() { >arguments : Symbol(arguments, Decl(emitArrowFunctionWhenUsingArguments16_ES6.ts, 2, 7), Decl(emitArrowFunctionWhenUsingArguments16_ES6.ts, 6, 7)) if (Math.random()) { ->Math.random : Symbol(Math.random, Decl(lib.d.ts, --, --)) ->Math : Symbol(Math, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->random : Symbol(Math.random, Decl(lib.d.ts, --, --)) +>Math.random : Symbol(Math.random, Decl(lib.es5.d.ts, --, --)) +>Math : Symbol(Math, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --)) +>random : Symbol(Math.random, Decl(lib.es5.d.ts, --, --)) return () => arguments[0]; >arguments : Symbol(arguments) diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments17_ES6.symbols b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments17_ES6.symbols index 65f4e121d10..a7d5e457056 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments17_ES6.symbols +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments17_ES6.symbols @@ -8,9 +8,9 @@ function f() { >arguments : Symbol(arguments, Decl(emitArrowFunctionWhenUsingArguments17_ES6.ts, 2, 25)) if (Math.random()) { ->Math.random : Symbol(Math.random, Decl(lib.d.ts, --, --)) ->Math : Symbol(Math, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->random : Symbol(Math.random, Decl(lib.d.ts, --, --)) +>Math.random : Symbol(Math.random, Decl(lib.es5.d.ts, --, --)) +>Math : Symbol(Math, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --)) +>random : Symbol(Math.random, Decl(lib.es5.d.ts, --, --)) return () => arguments[0]; >arguments : Symbol(arguments) diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments18_ES6.symbols b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments18_ES6.symbols index a15a10c29d8..e59ed6b8537 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments18_ES6.symbols +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments18_ES6.symbols @@ -9,9 +9,9 @@ function f() { >arguments : Symbol(arguments, Decl(emitArrowFunctionWhenUsingArguments18_ES6.ts, 2, 31)) if (Math.random()) { ->Math.random : Symbol(Math.random, Decl(lib.d.ts, --, --)) ->Math : Symbol(Math, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->random : Symbol(Math.random, Decl(lib.d.ts, --, --)) +>Math.random : Symbol(Math.random, Decl(lib.es5.d.ts, --, --)) +>Math : Symbol(Math, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --)) +>random : Symbol(Math.random, Decl(lib.es5.d.ts, --, --)) return () => arguments; >arguments : Symbol(arguments) diff --git a/tests/baselines/reference/emitClassDeclarationWithConstructorInES6.symbols b/tests/baselines/reference/emitClassDeclarationWithConstructorInES6.symbols index 8186b029471..72de9b39dda 100644 --- a/tests/baselines/reference/emitClassDeclarationWithConstructorInES6.symbols +++ b/tests/baselines/reference/emitClassDeclarationWithConstructorInES6.symbols @@ -3,30 +3,30 @@ class A { >A : Symbol(A, Decl(emitClassDeclarationWithConstructorInES6.ts, 0, 0)) y: number; ->y : Symbol(y, Decl(emitClassDeclarationWithConstructorInES6.ts, 0, 9)) +>y : Symbol(A.y, Decl(emitClassDeclarationWithConstructorInES6.ts, 0, 9)) constructor(x: number) { >x : Symbol(x, Decl(emitClassDeclarationWithConstructorInES6.ts, 2, 16)) } foo(a: any); ->foo : Symbol(foo, Decl(emitClassDeclarationWithConstructorInES6.ts, 3, 5), Decl(emitClassDeclarationWithConstructorInES6.ts, 4, 16)) +>foo : Symbol(A.foo, Decl(emitClassDeclarationWithConstructorInES6.ts, 3, 5), Decl(emitClassDeclarationWithConstructorInES6.ts, 4, 16)) >a : Symbol(a, Decl(emitClassDeclarationWithConstructorInES6.ts, 4, 8)) foo() { } ->foo : Symbol(foo, Decl(emitClassDeclarationWithConstructorInES6.ts, 3, 5), Decl(emitClassDeclarationWithConstructorInES6.ts, 4, 16)) +>foo : Symbol(A.foo, Decl(emitClassDeclarationWithConstructorInES6.ts, 3, 5), Decl(emitClassDeclarationWithConstructorInES6.ts, 4, 16)) } class B { >B : Symbol(B, Decl(emitClassDeclarationWithConstructorInES6.ts, 6, 1)) y: number; ->y : Symbol(y, Decl(emitClassDeclarationWithConstructorInES6.ts, 8, 9)) +>y : Symbol(B.y, Decl(emitClassDeclarationWithConstructorInES6.ts, 8, 9)) x: string = "hello"; ->x : Symbol(x, Decl(emitClassDeclarationWithConstructorInES6.ts, 9, 14)) +>x : Symbol(B.x, Decl(emitClassDeclarationWithConstructorInES6.ts, 9, 14)) _bar: string; ->_bar : Symbol(_bar, Decl(emitClassDeclarationWithConstructorInES6.ts, 10, 24)) +>_bar : Symbol(B._bar, Decl(emitClassDeclarationWithConstructorInES6.ts, 10, 24)) constructor(x: number, z = "hello", ...args) { >x : Symbol(x, Decl(emitClassDeclarationWithConstructorInES6.ts, 13, 16)) @@ -34,23 +34,23 @@ class B { >args : Symbol(args, Decl(emitClassDeclarationWithConstructorInES6.ts, 13, 39)) this.y = 10; ->this.y : Symbol(y, Decl(emitClassDeclarationWithConstructorInES6.ts, 8, 9)) +>this.y : Symbol(B.y, Decl(emitClassDeclarationWithConstructorInES6.ts, 8, 9)) >this : Symbol(B, Decl(emitClassDeclarationWithConstructorInES6.ts, 6, 1)) ->y : Symbol(y, Decl(emitClassDeclarationWithConstructorInES6.ts, 8, 9)) +>y : Symbol(B.y, Decl(emitClassDeclarationWithConstructorInES6.ts, 8, 9)) } baz(...args): string; ->baz : Symbol(baz, Decl(emitClassDeclarationWithConstructorInES6.ts, 15, 5), Decl(emitClassDeclarationWithConstructorInES6.ts, 16, 25)) +>baz : Symbol(B.baz, Decl(emitClassDeclarationWithConstructorInES6.ts, 15, 5), Decl(emitClassDeclarationWithConstructorInES6.ts, 16, 25)) >args : Symbol(args, Decl(emitClassDeclarationWithConstructorInES6.ts, 16, 8)) baz(z: string, v: number): string { ->baz : Symbol(baz, Decl(emitClassDeclarationWithConstructorInES6.ts, 15, 5), Decl(emitClassDeclarationWithConstructorInES6.ts, 16, 25)) +>baz : Symbol(B.baz, Decl(emitClassDeclarationWithConstructorInES6.ts, 15, 5), Decl(emitClassDeclarationWithConstructorInES6.ts, 16, 25)) >z : Symbol(z, Decl(emitClassDeclarationWithConstructorInES6.ts, 17, 8)) >v : Symbol(v, Decl(emitClassDeclarationWithConstructorInES6.ts, 17, 18)) return this._bar; ->this._bar : Symbol(_bar, Decl(emitClassDeclarationWithConstructorInES6.ts, 10, 24)) +>this._bar : Symbol(B._bar, Decl(emitClassDeclarationWithConstructorInES6.ts, 10, 24)) >this : Symbol(B, Decl(emitClassDeclarationWithConstructorInES6.ts, 6, 1)) ->_bar : Symbol(_bar, Decl(emitClassDeclarationWithConstructorInES6.ts, 10, 24)) +>_bar : Symbol(B._bar, Decl(emitClassDeclarationWithConstructorInES6.ts, 10, 24)) } } diff --git a/tests/baselines/reference/emitClassDeclarationWithExtensionInES6.symbols b/tests/baselines/reference/emitClassDeclarationWithExtensionInES6.symbols index 586a924a260..799c5a8b3bb 100644 --- a/tests/baselines/reference/emitClassDeclarationWithExtensionInES6.symbols +++ b/tests/baselines/reference/emitClassDeclarationWithExtensionInES6.symbols @@ -3,7 +3,7 @@ class B { >B : Symbol(B, Decl(emitClassDeclarationWithExtensionInES6.ts, 0, 0)) baz(a: string, y = 10) { } ->baz : Symbol(baz, Decl(emitClassDeclarationWithExtensionInES6.ts, 0, 9)) +>baz : Symbol(B.baz, Decl(emitClassDeclarationWithExtensionInES6.ts, 0, 9)) >a : Symbol(a, Decl(emitClassDeclarationWithExtensionInES6.ts, 1, 8)) >y : Symbol(y, Decl(emitClassDeclarationWithExtensionInES6.ts, 1, 18)) } @@ -12,10 +12,10 @@ class C extends B { >B : Symbol(B, Decl(emitClassDeclarationWithExtensionInES6.ts, 0, 0)) foo() { } ->foo : Symbol(foo, Decl(emitClassDeclarationWithExtensionInES6.ts, 3, 19)) +>foo : Symbol(C.foo, Decl(emitClassDeclarationWithExtensionInES6.ts, 3, 19)) baz(a: string, y:number) { ->baz : Symbol(baz, Decl(emitClassDeclarationWithExtensionInES6.ts, 4, 13)) +>baz : Symbol(C.baz, Decl(emitClassDeclarationWithExtensionInES6.ts, 4, 13)) >a : Symbol(a, Decl(emitClassDeclarationWithExtensionInES6.ts, 5, 8)) >y : Symbol(y, Decl(emitClassDeclarationWithExtensionInES6.ts, 5, 18)) @@ -37,7 +37,7 @@ class D extends C { } foo() { ->foo : Symbol(foo, Decl(emitClassDeclarationWithExtensionInES6.ts, 12, 5)) +>foo : Symbol(D.foo, Decl(emitClassDeclarationWithExtensionInES6.ts, 12, 5)) super.foo(); >super.foo : Symbol(C.foo, Decl(emitClassDeclarationWithExtensionInES6.ts, 3, 19)) @@ -46,7 +46,7 @@ class D extends C { } baz() { ->baz : Symbol(baz, Decl(emitClassDeclarationWithExtensionInES6.ts, 16, 5)) +>baz : Symbol(D.baz, Decl(emitClassDeclarationWithExtensionInES6.ts, 16, 5)) super.baz("hello", 10); >super.baz : Symbol(C.baz, Decl(emitClassDeclarationWithExtensionInES6.ts, 4, 13)) diff --git a/tests/baselines/reference/emitClassDeclarationWithGetterSetterInES6.symbols b/tests/baselines/reference/emitClassDeclarationWithGetterSetterInES6.symbols index b2b1a000dc9..c48cc1d6f85 100644 --- a/tests/baselines/reference/emitClassDeclarationWithGetterSetterInES6.symbols +++ b/tests/baselines/reference/emitClassDeclarationWithGetterSetterInES6.symbols @@ -3,15 +3,15 @@ class C { >C : Symbol(C, Decl(emitClassDeclarationWithGetterSetterInES6.ts, 0, 0)) _name: string; ->_name : Symbol(_name, Decl(emitClassDeclarationWithGetterSetterInES6.ts, 0, 9)) +>_name : Symbol(C._name, Decl(emitClassDeclarationWithGetterSetterInES6.ts, 0, 9)) get name(): string { ->name : Symbol(name, Decl(emitClassDeclarationWithGetterSetterInES6.ts, 1, 18)) +>name : Symbol(C.name, Decl(emitClassDeclarationWithGetterSetterInES6.ts, 1, 18)) return this._name; ->this._name : Symbol(_name, Decl(emitClassDeclarationWithGetterSetterInES6.ts, 0, 9)) +>this._name : Symbol(C._name, Decl(emitClassDeclarationWithGetterSetterInES6.ts, 0, 9)) >this : Symbol(C, Decl(emitClassDeclarationWithGetterSetterInES6.ts, 0, 0)) ->_name : Symbol(_name, Decl(emitClassDeclarationWithGetterSetterInES6.ts, 0, 9)) +>_name : Symbol(C._name, Decl(emitClassDeclarationWithGetterSetterInES6.ts, 0, 9)) } static get name2(): string { >name2 : Symbol(C.name2, Decl(emitClassDeclarationWithGetterSetterInES6.ts, 4, 5)) @@ -36,7 +36,7 @@ class C { } set foo(a: string) { } ->foo : Symbol(foo, Decl(emitClassDeclarationWithGetterSetterInES6.ts, 21, 5)) +>foo : Symbol(C.foo, Decl(emitClassDeclarationWithGetterSetterInES6.ts, 21, 5)) >a : Symbol(a, Decl(emitClassDeclarationWithGetterSetterInES6.ts, 23, 12)) static set bar(b: number) { } diff --git a/tests/baselines/reference/emitClassDeclarationWithLiteralPropertyNameInES6.symbols b/tests/baselines/reference/emitClassDeclarationWithLiteralPropertyNameInES6.symbols index fdceb9831c1..cb716163d6a 100644 --- a/tests/baselines/reference/emitClassDeclarationWithLiteralPropertyNameInES6.symbols +++ b/tests/baselines/reference/emitClassDeclarationWithLiteralPropertyNameInES6.symbols @@ -10,7 +10,7 @@ class B { 0b1110() {} 11() { } interface() { } ->interface : Symbol(interface, Decl(emitClassDeclarationWithLiteralPropertyNameInES6.ts, 7, 12)) +>interface : Symbol(B.interface, Decl(emitClassDeclarationWithLiteralPropertyNameInES6.ts, 7, 12)) static "hi" = 10000; static 22 = "twenty-two"; diff --git a/tests/baselines/reference/emitClassDeclarationWithMethodInES6.symbols b/tests/baselines/reference/emitClassDeclarationWithMethodInES6.symbols index 970076f6b78..45990c6e628 100644 --- a/tests/baselines/reference/emitClassDeclarationWithMethodInES6.symbols +++ b/tests/baselines/reference/emitClassDeclarationWithMethodInES6.symbols @@ -3,10 +3,10 @@ class D { >D : Symbol(D, Decl(emitClassDeclarationWithMethodInES6.ts, 0, 0)) _bar: string; ->_bar : Symbol(_bar, Decl(emitClassDeclarationWithMethodInES6.ts, 0, 9)) +>_bar : Symbol(D._bar, Decl(emitClassDeclarationWithMethodInES6.ts, 0, 9)) foo() { } ->foo : Symbol(foo, Decl(emitClassDeclarationWithMethodInES6.ts, 1, 17)) +>foo : Symbol(D.foo, Decl(emitClassDeclarationWithMethodInES6.ts, 1, 17)) ["computedName1"]() { } ["computedName2"](a: string) { } @@ -16,15 +16,15 @@ class D { >a : Symbol(a, Decl(emitClassDeclarationWithMethodInES6.ts, 5, 22)) bar(): string { ->bar : Symbol(bar, Decl(emitClassDeclarationWithMethodInES6.ts, 5, 54)) +>bar : Symbol(D.bar, Decl(emitClassDeclarationWithMethodInES6.ts, 5, 54)) return this._bar; ->this._bar : Symbol(_bar, Decl(emitClassDeclarationWithMethodInES6.ts, 0, 9)) +>this._bar : Symbol(D._bar, Decl(emitClassDeclarationWithMethodInES6.ts, 0, 9)) >this : Symbol(D, Decl(emitClassDeclarationWithMethodInES6.ts, 0, 0)) ->_bar : Symbol(_bar, Decl(emitClassDeclarationWithMethodInES6.ts, 0, 9)) +>_bar : Symbol(D._bar, Decl(emitClassDeclarationWithMethodInES6.ts, 0, 9)) } baz(a: any, x: string): string { ->baz : Symbol(baz, Decl(emitClassDeclarationWithMethodInES6.ts, 8, 5)) +>baz : Symbol(D.baz, Decl(emitClassDeclarationWithMethodInES6.ts, 8, 5)) >a : Symbol(a, Decl(emitClassDeclarationWithMethodInES6.ts, 9, 8)) >x : Symbol(x, Decl(emitClassDeclarationWithMethodInES6.ts, 9, 15)) diff --git a/tests/baselines/reference/emitClassDeclarationWithPropertyAssignmentInES6.symbols b/tests/baselines/reference/emitClassDeclarationWithPropertyAssignmentInES6.symbols index 67878625bda..c7c17891f14 100644 --- a/tests/baselines/reference/emitClassDeclarationWithPropertyAssignmentInES6.symbols +++ b/tests/baselines/reference/emitClassDeclarationWithPropertyAssignmentInES6.symbols @@ -3,23 +3,23 @@ class C { >C : Symbol(C, Decl(emitClassDeclarationWithPropertyAssignmentInES6.ts, 0, 0)) x: string = "Hello world"; ->x : Symbol(x, Decl(emitClassDeclarationWithPropertyAssignmentInES6.ts, 0, 9)) +>x : Symbol(C.x, Decl(emitClassDeclarationWithPropertyAssignmentInES6.ts, 0, 9)) } class D { >D : Symbol(D, Decl(emitClassDeclarationWithPropertyAssignmentInES6.ts, 2, 1)) x: string = "Hello world"; ->x : Symbol(x, Decl(emitClassDeclarationWithPropertyAssignmentInES6.ts, 4, 9)) +>x : Symbol(D.x, Decl(emitClassDeclarationWithPropertyAssignmentInES6.ts, 4, 9)) y: number; ->y : Symbol(y, Decl(emitClassDeclarationWithPropertyAssignmentInES6.ts, 5, 30)) +>y : Symbol(D.y, Decl(emitClassDeclarationWithPropertyAssignmentInES6.ts, 5, 30)) constructor() { this.y = 10; ->this.y : Symbol(y, Decl(emitClassDeclarationWithPropertyAssignmentInES6.ts, 5, 30)) +>this.y : Symbol(D.y, Decl(emitClassDeclarationWithPropertyAssignmentInES6.ts, 5, 30)) >this : Symbol(D, Decl(emitClassDeclarationWithPropertyAssignmentInES6.ts, 2, 1)) ->y : Symbol(y, Decl(emitClassDeclarationWithPropertyAssignmentInES6.ts, 5, 30)) +>y : Symbol(D.y, Decl(emitClassDeclarationWithPropertyAssignmentInES6.ts, 5, 30)) } } @@ -28,7 +28,7 @@ class E extends D{ >D : Symbol(D, Decl(emitClassDeclarationWithPropertyAssignmentInES6.ts, 2, 1)) z: boolean = true; ->z : Symbol(z, Decl(emitClassDeclarationWithPropertyAssignmentInES6.ts, 12, 18)) +>z : Symbol(E.z, Decl(emitClassDeclarationWithPropertyAssignmentInES6.ts, 12, 18)) } class F extends D{ @@ -36,18 +36,18 @@ class F extends D{ >D : Symbol(D, Decl(emitClassDeclarationWithPropertyAssignmentInES6.ts, 2, 1)) z: boolean = true; ->z : Symbol(z, Decl(emitClassDeclarationWithPropertyAssignmentInES6.ts, 16, 18)) +>z : Symbol(F.z, Decl(emitClassDeclarationWithPropertyAssignmentInES6.ts, 16, 18)) j: string; ->j : Symbol(j, Decl(emitClassDeclarationWithPropertyAssignmentInES6.ts, 17, 22)) +>j : Symbol(F.j, Decl(emitClassDeclarationWithPropertyAssignmentInES6.ts, 17, 22)) constructor() { super(); >super : Symbol(D, Decl(emitClassDeclarationWithPropertyAssignmentInES6.ts, 2, 1)) this.j = "HI"; ->this.j : Symbol(j, Decl(emitClassDeclarationWithPropertyAssignmentInES6.ts, 17, 22)) +>this.j : Symbol(F.j, Decl(emitClassDeclarationWithPropertyAssignmentInES6.ts, 17, 22)) >this : Symbol(F, Decl(emitClassDeclarationWithPropertyAssignmentInES6.ts, 14, 1)) ->j : Symbol(j, Decl(emitClassDeclarationWithPropertyAssignmentInES6.ts, 17, 22)) +>j : Symbol(F.j, Decl(emitClassDeclarationWithPropertyAssignmentInES6.ts, 17, 22)) } } diff --git a/tests/baselines/reference/emitClassDeclarationWithStaticPropertyAssignmentInES6.symbols b/tests/baselines/reference/emitClassDeclarationWithStaticPropertyAssignmentInES6.symbols index 1b64646f788..268ab96f2ec 100644 --- a/tests/baselines/reference/emitClassDeclarationWithStaticPropertyAssignmentInES6.symbols +++ b/tests/baselines/reference/emitClassDeclarationWithStaticPropertyAssignmentInES6.symbols @@ -10,7 +10,7 @@ class D { >D : Symbol(D, Decl(emitClassDeclarationWithStaticPropertyAssignmentInES6.ts, 2, 1)) x = 20000; ->x : Symbol(x, Decl(emitClassDeclarationWithStaticPropertyAssignmentInES6.ts, 4, 9)) +>x : Symbol(D.x, Decl(emitClassDeclarationWithStaticPropertyAssignmentInES6.ts, 4, 9)) static b = true; >b : Symbol(D.b, Decl(emitClassDeclarationWithStaticPropertyAssignmentInES6.ts, 5, 14)) diff --git a/tests/baselines/reference/emitClassDeclarationWithSuperMethodCall01.symbols b/tests/baselines/reference/emitClassDeclarationWithSuperMethodCall01.symbols index 13ce54e0641..dc749161623 100644 --- a/tests/baselines/reference/emitClassDeclarationWithSuperMethodCall01.symbols +++ b/tests/baselines/reference/emitClassDeclarationWithSuperMethodCall01.symbols @@ -4,7 +4,7 @@ class Parent { >Parent : Symbol(Parent, Decl(emitClassDeclarationWithSuperMethodCall01.ts, 0, 0)) foo() { ->foo : Symbol(foo, Decl(emitClassDeclarationWithSuperMethodCall01.ts, 1, 14)) +>foo : Symbol(Parent.foo, Decl(emitClassDeclarationWithSuperMethodCall01.ts, 1, 14)) } } @@ -13,7 +13,7 @@ class Foo extends Parent { >Parent : Symbol(Parent, Decl(emitClassDeclarationWithSuperMethodCall01.ts, 0, 0)) foo() { ->foo : Symbol(foo, Decl(emitClassDeclarationWithSuperMethodCall01.ts, 6, 26)) +>foo : Symbol(Foo.foo, Decl(emitClassDeclarationWithSuperMethodCall01.ts, 6, 26)) var x = () => super.foo(); >x : Symbol(x, Decl(emitClassDeclarationWithSuperMethodCall01.ts, 8, 11)) diff --git a/tests/baselines/reference/emitClassDeclarationWithThisKeywordInES6.symbols b/tests/baselines/reference/emitClassDeclarationWithThisKeywordInES6.symbols index 32220451b9c..9690894a2eb 100644 --- a/tests/baselines/reference/emitClassDeclarationWithThisKeywordInES6.symbols +++ b/tests/baselines/reference/emitClassDeclarationWithThisKeywordInES6.symbols @@ -3,47 +3,47 @@ class B { >B : Symbol(B, Decl(emitClassDeclarationWithThisKeywordInES6.ts, 0, 0)) x = 10; ->x : Symbol(x, Decl(emitClassDeclarationWithThisKeywordInES6.ts, 0, 9)) +>x : Symbol(B.x, Decl(emitClassDeclarationWithThisKeywordInES6.ts, 0, 9)) constructor() { this.x = 10; ->this.x : Symbol(x, Decl(emitClassDeclarationWithThisKeywordInES6.ts, 0, 9)) +>this.x : Symbol(B.x, Decl(emitClassDeclarationWithThisKeywordInES6.ts, 0, 9)) >this : Symbol(B, Decl(emitClassDeclarationWithThisKeywordInES6.ts, 0, 0)) ->x : Symbol(x, Decl(emitClassDeclarationWithThisKeywordInES6.ts, 0, 9)) +>x : Symbol(B.x, Decl(emitClassDeclarationWithThisKeywordInES6.ts, 0, 9)) } static log(a: number) { } >log : Symbol(B.log, Decl(emitClassDeclarationWithThisKeywordInES6.ts, 4, 5)) >a : Symbol(a, Decl(emitClassDeclarationWithThisKeywordInES6.ts, 5, 15)) foo() { ->foo : Symbol(foo, Decl(emitClassDeclarationWithThisKeywordInES6.ts, 5, 29)) +>foo : Symbol(B.foo, Decl(emitClassDeclarationWithThisKeywordInES6.ts, 5, 29)) B.log(this.x); >B.log : Symbol(B.log, Decl(emitClassDeclarationWithThisKeywordInES6.ts, 4, 5)) >B : Symbol(B, Decl(emitClassDeclarationWithThisKeywordInES6.ts, 0, 0)) >log : Symbol(B.log, Decl(emitClassDeclarationWithThisKeywordInES6.ts, 4, 5)) ->this.x : Symbol(x, Decl(emitClassDeclarationWithThisKeywordInES6.ts, 0, 9)) +>this.x : Symbol(B.x, Decl(emitClassDeclarationWithThisKeywordInES6.ts, 0, 9)) >this : Symbol(B, Decl(emitClassDeclarationWithThisKeywordInES6.ts, 0, 0)) ->x : Symbol(x, Decl(emitClassDeclarationWithThisKeywordInES6.ts, 0, 9)) +>x : Symbol(B.x, Decl(emitClassDeclarationWithThisKeywordInES6.ts, 0, 9)) } get X() { ->X : Symbol(X, Decl(emitClassDeclarationWithThisKeywordInES6.ts, 8, 5)) +>X : Symbol(B.X, Decl(emitClassDeclarationWithThisKeywordInES6.ts, 8, 5)) return this.x; ->this.x : Symbol(x, Decl(emitClassDeclarationWithThisKeywordInES6.ts, 0, 9)) +>this.x : Symbol(B.x, Decl(emitClassDeclarationWithThisKeywordInES6.ts, 0, 9)) >this : Symbol(B, Decl(emitClassDeclarationWithThisKeywordInES6.ts, 0, 0)) ->x : Symbol(x, Decl(emitClassDeclarationWithThisKeywordInES6.ts, 0, 9)) +>x : Symbol(B.x, Decl(emitClassDeclarationWithThisKeywordInES6.ts, 0, 9)) } set bX(y: number) { ->bX : Symbol(bX, Decl(emitClassDeclarationWithThisKeywordInES6.ts, 12, 5)) +>bX : Symbol(B.bX, Decl(emitClassDeclarationWithThisKeywordInES6.ts, 12, 5)) >y : Symbol(y, Decl(emitClassDeclarationWithThisKeywordInES6.ts, 14, 11)) this.x = y; ->this.x : Symbol(x, Decl(emitClassDeclarationWithThisKeywordInES6.ts, 0, 9)) +>this.x : Symbol(B.x, Decl(emitClassDeclarationWithThisKeywordInES6.ts, 0, 9)) >this : Symbol(B, Decl(emitClassDeclarationWithThisKeywordInES6.ts, 0, 0)) ->x : Symbol(x, Decl(emitClassDeclarationWithThisKeywordInES6.ts, 0, 9)) +>x : Symbol(B.x, Decl(emitClassDeclarationWithThisKeywordInES6.ts, 0, 9)) >y : Symbol(y, Decl(emitClassDeclarationWithThisKeywordInES6.ts, 14, 11)) } } diff --git a/tests/baselines/reference/emitClassDeclarationWithTypeArgumentAndOverloadInES6.symbols b/tests/baselines/reference/emitClassDeclarationWithTypeArgumentAndOverloadInES6.symbols index 092dbf10c7b..d87213d5651 100644 --- a/tests/baselines/reference/emitClassDeclarationWithTypeArgumentAndOverloadInES6.symbols +++ b/tests/baselines/reference/emitClassDeclarationWithTypeArgumentAndOverloadInES6.symbols @@ -4,11 +4,11 @@ class B { >T : Symbol(T, Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 0, 8)) x: T; ->x : Symbol(x, Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 0, 12)) +>x : Symbol(B.x, Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 0, 12)) >T : Symbol(T, Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 0, 8)) B: T; ->B : Symbol(B, Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 1, 9)) +>B : Symbol(B.B, Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 1, 9)) >T : Symbol(T, Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 0, 8)) constructor(a: any) @@ -22,52 +22,52 @@ class B { constructor(a: T) { this.B = a;} >a : Symbol(a, Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 6, 16)) >T : Symbol(T, Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 0, 8)) ->this.B : Symbol(B, Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 1, 9)) +>this.B : Symbol(B.B, Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 1, 9)) >this : Symbol(B, Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 0, 0)) ->B : Symbol(B, Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 1, 9)) +>B : Symbol(B.B, Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 1, 9)) >a : Symbol(a, Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 6, 16)) foo(a: T) ->foo : Symbol(foo, Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 6, 36), Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 8, 13), Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 9, 15), Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 10, 18)) +>foo : Symbol(B.foo, Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 6, 36), Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 8, 13), Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 9, 15), Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 10, 18)) >a : Symbol(a, Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 8, 8)) >T : Symbol(T, Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 0, 8)) foo(a: any) ->foo : Symbol(foo, Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 6, 36), Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 8, 13), Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 9, 15), Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 10, 18)) +>foo : Symbol(B.foo, Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 6, 36), Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 8, 13), Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 9, 15), Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 10, 18)) >a : Symbol(a, Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 9, 8)) foo(b: string) ->foo : Symbol(foo, Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 6, 36), Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 8, 13), Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 9, 15), Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 10, 18)) +>foo : Symbol(B.foo, Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 6, 36), Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 8, 13), Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 9, 15), Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 10, 18)) >b : Symbol(b, Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 10, 8)) foo(): T { ->foo : Symbol(foo, Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 6, 36), Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 8, 13), Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 9, 15), Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 10, 18)) +>foo : Symbol(B.foo, Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 6, 36), Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 8, 13), Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 9, 15), Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 10, 18)) >T : Symbol(T, Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 0, 8)) return this.x; ->this.x : Symbol(x, Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 0, 12)) +>this.x : Symbol(B.x, Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 0, 12)) >this : Symbol(B, Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 0, 0)) ->x : Symbol(x, Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 0, 12)) +>x : Symbol(B.x, Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 0, 12)) } get BB(): T { ->BB : Symbol(BB, Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 13, 5)) +>BB : Symbol(B.BB, Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 13, 5)) >T : Symbol(T, Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 0, 8)) return this.B; ->this.B : Symbol(B, Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 1, 9)) +>this.B : Symbol(B.B, Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 1, 9)) >this : Symbol(B, Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 0, 0)) ->B : Symbol(B, Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 1, 9)) +>B : Symbol(B.B, Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 1, 9)) } set BBWith(c: T) { ->BBWith : Symbol(BBWith, Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 17, 5)) +>BBWith : Symbol(B.BBWith, Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 17, 5)) >c : Symbol(c, Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 18, 15)) >T : Symbol(T, Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 0, 8)) this.B = c; ->this.B : Symbol(B, Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 1, 9)) +>this.B : Symbol(B.B, Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 1, 9)) >this : Symbol(B, Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 0, 0)) ->B : Symbol(B, Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 1, 9)) +>B : Symbol(B.B, Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 1, 9)) >c : Symbol(c, Decl(emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts, 18, 15)) } } diff --git a/tests/baselines/reference/emitClassDeclarationWithTypeArgumentInES6.symbols b/tests/baselines/reference/emitClassDeclarationWithTypeArgumentInES6.symbols index 58f44b69f01..5db5fb703ae 100644 --- a/tests/baselines/reference/emitClassDeclarationWithTypeArgumentInES6.symbols +++ b/tests/baselines/reference/emitClassDeclarationWithTypeArgumentInES6.symbols @@ -4,48 +4,48 @@ class B { >T : Symbol(T, Decl(emitClassDeclarationWithTypeArgumentInES6.ts, 0, 8)) x: T; ->x : Symbol(x, Decl(emitClassDeclarationWithTypeArgumentInES6.ts, 0, 12)) +>x : Symbol(B.x, Decl(emitClassDeclarationWithTypeArgumentInES6.ts, 0, 12)) >T : Symbol(T, Decl(emitClassDeclarationWithTypeArgumentInES6.ts, 0, 8)) B: T; ->B : Symbol(B, Decl(emitClassDeclarationWithTypeArgumentInES6.ts, 1, 9)) +>B : Symbol(B.B, Decl(emitClassDeclarationWithTypeArgumentInES6.ts, 1, 9)) >T : Symbol(T, Decl(emitClassDeclarationWithTypeArgumentInES6.ts, 0, 8)) constructor(a: T) { this.B = a;} >a : Symbol(a, Decl(emitClassDeclarationWithTypeArgumentInES6.ts, 3, 16)) >T : Symbol(T, Decl(emitClassDeclarationWithTypeArgumentInES6.ts, 0, 8)) ->this.B : Symbol(B, Decl(emitClassDeclarationWithTypeArgumentInES6.ts, 1, 9)) +>this.B : Symbol(B.B, Decl(emitClassDeclarationWithTypeArgumentInES6.ts, 1, 9)) >this : Symbol(B, Decl(emitClassDeclarationWithTypeArgumentInES6.ts, 0, 0)) ->B : Symbol(B, Decl(emitClassDeclarationWithTypeArgumentInES6.ts, 1, 9)) +>B : Symbol(B.B, Decl(emitClassDeclarationWithTypeArgumentInES6.ts, 1, 9)) >a : Symbol(a, Decl(emitClassDeclarationWithTypeArgumentInES6.ts, 3, 16)) foo(): T { ->foo : Symbol(foo, Decl(emitClassDeclarationWithTypeArgumentInES6.ts, 3, 36)) +>foo : Symbol(B.foo, Decl(emitClassDeclarationWithTypeArgumentInES6.ts, 3, 36)) >T : Symbol(T, Decl(emitClassDeclarationWithTypeArgumentInES6.ts, 0, 8)) return this.x; ->this.x : Symbol(x, Decl(emitClassDeclarationWithTypeArgumentInES6.ts, 0, 12)) +>this.x : Symbol(B.x, Decl(emitClassDeclarationWithTypeArgumentInES6.ts, 0, 12)) >this : Symbol(B, Decl(emitClassDeclarationWithTypeArgumentInES6.ts, 0, 0)) ->x : Symbol(x, Decl(emitClassDeclarationWithTypeArgumentInES6.ts, 0, 12)) +>x : Symbol(B.x, Decl(emitClassDeclarationWithTypeArgumentInES6.ts, 0, 12)) } get BB(): T { ->BB : Symbol(BB, Decl(emitClassDeclarationWithTypeArgumentInES6.ts, 6, 5)) +>BB : Symbol(B.BB, Decl(emitClassDeclarationWithTypeArgumentInES6.ts, 6, 5)) >T : Symbol(T, Decl(emitClassDeclarationWithTypeArgumentInES6.ts, 0, 8)) return this.B; ->this.B : Symbol(B, Decl(emitClassDeclarationWithTypeArgumentInES6.ts, 1, 9)) +>this.B : Symbol(B.B, Decl(emitClassDeclarationWithTypeArgumentInES6.ts, 1, 9)) >this : Symbol(B, Decl(emitClassDeclarationWithTypeArgumentInES6.ts, 0, 0)) ->B : Symbol(B, Decl(emitClassDeclarationWithTypeArgumentInES6.ts, 1, 9)) +>B : Symbol(B.B, Decl(emitClassDeclarationWithTypeArgumentInES6.ts, 1, 9)) } set BBWith(c: T) { ->BBWith : Symbol(BBWith, Decl(emitClassDeclarationWithTypeArgumentInES6.ts, 9, 5)) +>BBWith : Symbol(B.BBWith, Decl(emitClassDeclarationWithTypeArgumentInES6.ts, 9, 5)) >c : Symbol(c, Decl(emitClassDeclarationWithTypeArgumentInES6.ts, 10, 15)) >T : Symbol(T, Decl(emitClassDeclarationWithTypeArgumentInES6.ts, 0, 8)) this.B = c; ->this.B : Symbol(B, Decl(emitClassDeclarationWithTypeArgumentInES6.ts, 1, 9)) +>this.B : Symbol(B.B, Decl(emitClassDeclarationWithTypeArgumentInES6.ts, 1, 9)) >this : Symbol(B, Decl(emitClassDeclarationWithTypeArgumentInES6.ts, 0, 0)) ->B : Symbol(B, Decl(emitClassDeclarationWithTypeArgumentInES6.ts, 1, 9)) +>B : Symbol(B.B, Decl(emitClassDeclarationWithTypeArgumentInES6.ts, 1, 9)) >c : Symbol(c, Decl(emitClassDeclarationWithTypeArgumentInES6.ts, 10, 15)) } } diff --git a/tests/baselines/reference/emitDefaultParametersMethod.symbols b/tests/baselines/reference/emitDefaultParametersMethod.symbols index 866380e2dd5..df316896d5c 100644 --- a/tests/baselines/reference/emitDefaultParametersMethod.symbols +++ b/tests/baselines/reference/emitDefaultParametersMethod.symbols @@ -9,22 +9,22 @@ class C { >y : Symbol(y, Decl(emitDefaultParametersMethod.ts, 1, 49)) public foo(x: string, t = false) { } ->foo : Symbol(foo, Decl(emitDefaultParametersMethod.ts, 1, 66)) +>foo : Symbol(C.foo, Decl(emitDefaultParametersMethod.ts, 1, 66)) >x : Symbol(x, Decl(emitDefaultParametersMethod.ts, 3, 15)) >t : Symbol(t, Decl(emitDefaultParametersMethod.ts, 3, 25)) public foo1(x: string, t = false, ...rest) { } ->foo1 : Symbol(foo1, Decl(emitDefaultParametersMethod.ts, 3, 40)) +>foo1 : Symbol(C.foo1, Decl(emitDefaultParametersMethod.ts, 3, 40)) >x : Symbol(x, Decl(emitDefaultParametersMethod.ts, 4, 16)) >t : Symbol(t, Decl(emitDefaultParametersMethod.ts, 4, 26)) >rest : Symbol(rest, Decl(emitDefaultParametersMethod.ts, 4, 37)) public bar(t = false) { } ->bar : Symbol(bar, Decl(emitDefaultParametersMethod.ts, 4, 50)) +>bar : Symbol(C.bar, Decl(emitDefaultParametersMethod.ts, 4, 50)) >t : Symbol(t, Decl(emitDefaultParametersMethod.ts, 5, 15)) public boo(t = false, ...rest) { } ->boo : Symbol(boo, Decl(emitDefaultParametersMethod.ts, 5, 29)) +>boo : Symbol(C.boo, Decl(emitDefaultParametersMethod.ts, 5, 29)) >t : Symbol(t, Decl(emitDefaultParametersMethod.ts, 6, 15)) >rest : Symbol(rest, Decl(emitDefaultParametersMethod.ts, 6, 25)) } diff --git a/tests/baselines/reference/emitDefaultParametersMethodES6.symbols b/tests/baselines/reference/emitDefaultParametersMethodES6.symbols index ce23b016bcf..e15937c1af6 100644 --- a/tests/baselines/reference/emitDefaultParametersMethodES6.symbols +++ b/tests/baselines/reference/emitDefaultParametersMethodES6.symbols @@ -9,22 +9,22 @@ class C { >y : Symbol(y, Decl(emitDefaultParametersMethodES6.ts, 1, 49)) public foo(x: string, t = false) { } ->foo : Symbol(foo, Decl(emitDefaultParametersMethodES6.ts, 1, 66)) +>foo : Symbol(C.foo, Decl(emitDefaultParametersMethodES6.ts, 1, 66)) >x : Symbol(x, Decl(emitDefaultParametersMethodES6.ts, 3, 15)) >t : Symbol(t, Decl(emitDefaultParametersMethodES6.ts, 3, 25)) public foo1(x: string, t = false, ...rest) { } ->foo1 : Symbol(foo1, Decl(emitDefaultParametersMethodES6.ts, 3, 40)) +>foo1 : Symbol(C.foo1, Decl(emitDefaultParametersMethodES6.ts, 3, 40)) >x : Symbol(x, Decl(emitDefaultParametersMethodES6.ts, 4, 16)) >t : Symbol(t, Decl(emitDefaultParametersMethodES6.ts, 4, 26)) >rest : Symbol(rest, Decl(emitDefaultParametersMethodES6.ts, 4, 37)) public bar(t = false) { } ->bar : Symbol(bar, Decl(emitDefaultParametersMethodES6.ts, 4, 50)) +>bar : Symbol(C.bar, Decl(emitDefaultParametersMethodES6.ts, 4, 50)) >t : Symbol(t, Decl(emitDefaultParametersMethodES6.ts, 5, 15)) public boo(t = false, ...rest) { } ->boo : Symbol(boo, Decl(emitDefaultParametersMethodES6.ts, 5, 29)) +>boo : Symbol(C.boo, Decl(emitDefaultParametersMethodES6.ts, 5, 29)) >t : Symbol(t, Decl(emitDefaultParametersMethodES6.ts, 6, 15)) >rest : Symbol(rest, Decl(emitDefaultParametersMethodES6.ts, 6, 25)) } diff --git a/tests/baselines/reference/emitMemberAccessExpression.symbols b/tests/baselines/reference/emitMemberAccessExpression.symbols index 64302521706..ac0f8852d2a 100644 --- a/tests/baselines/reference/emitMemberAccessExpression.symbols +++ b/tests/baselines/reference/emitMemberAccessExpression.symbols @@ -29,7 +29,7 @@ module Microsoft.PeopleAtWork.Model { >_Person : Symbol(_Person, Decl(emitMemberAccessExpression_file2.ts, 2, 37)) public populate(raw: any) { ->populate : Symbol(populate, Decl(emitMemberAccessExpression_file2.ts, 3, 26)) +>populate : Symbol(_Person.populate, Decl(emitMemberAccessExpression_file2.ts, 3, 26)) >raw : Symbol(raw, Decl(emitMemberAccessExpression_file2.ts, 4, 24)) var res = Model.KnockoutExtentions; diff --git a/tests/baselines/reference/emitRestParametersMethod.symbols b/tests/baselines/reference/emitRestParametersMethod.symbols index 2bfbda925bf..b07c410d02c 100644 --- a/tests/baselines/reference/emitRestParametersMethod.symbols +++ b/tests/baselines/reference/emitRestParametersMethod.symbols @@ -7,11 +7,11 @@ class C { >rest : Symbol(rest, Decl(emitRestParametersMethod.ts, 1, 29)) public bar(...rest) { } ->bar : Symbol(bar, Decl(emitRestParametersMethod.ts, 1, 42)) +>bar : Symbol(C.bar, Decl(emitRestParametersMethod.ts, 1, 42)) >rest : Symbol(rest, Decl(emitRestParametersMethod.ts, 3, 15)) public foo(x: number, ...rest) { } ->foo : Symbol(foo, Decl(emitRestParametersMethod.ts, 3, 27)) +>foo : Symbol(C.foo, Decl(emitRestParametersMethod.ts, 3, 27)) >x : Symbol(x, Decl(emitRestParametersMethod.ts, 4, 15)) >rest : Symbol(rest, Decl(emitRestParametersMethod.ts, 4, 25)) } @@ -23,11 +23,11 @@ class D { >rest : Symbol(rest, Decl(emitRestParametersMethod.ts, 8, 16)) public bar(...rest) { } ->bar : Symbol(bar, Decl(emitRestParametersMethod.ts, 8, 28)) +>bar : Symbol(D.bar, Decl(emitRestParametersMethod.ts, 8, 28)) >rest : Symbol(rest, Decl(emitRestParametersMethod.ts, 10, 15)) public foo(x: number, ...rest) { } ->foo : Symbol(foo, Decl(emitRestParametersMethod.ts, 10, 27)) +>foo : Symbol(D.foo, Decl(emitRestParametersMethod.ts, 10, 27)) >x : Symbol(x, Decl(emitRestParametersMethod.ts, 11, 15)) >rest : Symbol(rest, Decl(emitRestParametersMethod.ts, 11, 25)) } diff --git a/tests/baselines/reference/emitRestParametersMethodES6.symbols b/tests/baselines/reference/emitRestParametersMethodES6.symbols index e79ab9bb26e..0968d3e4585 100644 --- a/tests/baselines/reference/emitRestParametersMethodES6.symbols +++ b/tests/baselines/reference/emitRestParametersMethodES6.symbols @@ -7,11 +7,11 @@ class C { >rest : Symbol(rest, Decl(emitRestParametersMethodES6.ts, 1, 29)) public bar(...rest) { } ->bar : Symbol(bar, Decl(emitRestParametersMethodES6.ts, 1, 42)) +>bar : Symbol(C.bar, Decl(emitRestParametersMethodES6.ts, 1, 42)) >rest : Symbol(rest, Decl(emitRestParametersMethodES6.ts, 3, 15)) public foo(x: number, ...rest) { } ->foo : Symbol(foo, Decl(emitRestParametersMethodES6.ts, 3, 27)) +>foo : Symbol(C.foo, Decl(emitRestParametersMethodES6.ts, 3, 27)) >x : Symbol(x, Decl(emitRestParametersMethodES6.ts, 4, 15)) >rest : Symbol(rest, Decl(emitRestParametersMethodES6.ts, 4, 25)) } @@ -23,11 +23,11 @@ class D { >rest : Symbol(rest, Decl(emitRestParametersMethodES6.ts, 8, 16)) public bar(...rest) { } ->bar : Symbol(bar, Decl(emitRestParametersMethodES6.ts, 8, 28)) +>bar : Symbol(D.bar, Decl(emitRestParametersMethodES6.ts, 8, 28)) >rest : Symbol(rest, Decl(emitRestParametersMethodES6.ts, 10, 15)) public foo(x: number, ...rest) { } ->foo : Symbol(foo, Decl(emitRestParametersMethodES6.ts, 10, 27)) +>foo : Symbol(D.foo, Decl(emitRestParametersMethodES6.ts, 10, 27)) >x : Symbol(x, Decl(emitRestParametersMethodES6.ts, 11, 15)) >rest : Symbol(rest, Decl(emitRestParametersMethodES6.ts, 11, 25)) } diff --git a/tests/baselines/reference/emitSuperCallBeforeEmitParameterPropertyDeclaration1.symbols b/tests/baselines/reference/emitSuperCallBeforeEmitParameterPropertyDeclaration1.symbols index 3931a7115f6..95f21be3b2d 100644 --- a/tests/baselines/reference/emitSuperCallBeforeEmitParameterPropertyDeclaration1.symbols +++ b/tests/baselines/reference/emitSuperCallBeforeEmitParameterPropertyDeclaration1.symbols @@ -3,7 +3,7 @@ class A { >A : Symbol(A, Decl(emitSuperCallBeforeEmitParameterPropertyDeclaration1.ts, 0, 0)) blub = 6; ->blub : Symbol(blub, Decl(emitSuperCallBeforeEmitParameterPropertyDeclaration1.ts, 0, 9)) +>blub : Symbol(A.blub, Decl(emitSuperCallBeforeEmitParameterPropertyDeclaration1.ts, 0, 9)) } @@ -12,7 +12,7 @@ class B extends A { >A : Symbol(A, Decl(emitSuperCallBeforeEmitParameterPropertyDeclaration1.ts, 0, 0)) constructor(public x: number) { ->x : Symbol(x, Decl(emitSuperCallBeforeEmitParameterPropertyDeclaration1.ts, 6, 16)) +>x : Symbol(B.x, Decl(emitSuperCallBeforeEmitParameterPropertyDeclaration1.ts, 6, 16)) "use strict"; 'someStringForEgngInject'; diff --git a/tests/baselines/reference/emitSuperCallBeforeEmitParameterPropertyDeclaration1ES6.symbols b/tests/baselines/reference/emitSuperCallBeforeEmitParameterPropertyDeclaration1ES6.symbols index 8b8c09f2611..0b11b7079e5 100644 --- a/tests/baselines/reference/emitSuperCallBeforeEmitParameterPropertyDeclaration1ES6.symbols +++ b/tests/baselines/reference/emitSuperCallBeforeEmitParameterPropertyDeclaration1ES6.symbols @@ -3,7 +3,7 @@ class A { >A : Symbol(A, Decl(emitSuperCallBeforeEmitParameterPropertyDeclaration1ES6.ts, 0, 0)) blub = 6; ->blub : Symbol(blub, Decl(emitSuperCallBeforeEmitParameterPropertyDeclaration1ES6.ts, 0, 9)) +>blub : Symbol(A.blub, Decl(emitSuperCallBeforeEmitParameterPropertyDeclaration1ES6.ts, 0, 9)) } @@ -12,7 +12,7 @@ class B extends A { >A : Symbol(A, Decl(emitSuperCallBeforeEmitParameterPropertyDeclaration1ES6.ts, 0, 0)) constructor(public x: number) { ->x : Symbol(x, Decl(emitSuperCallBeforeEmitParameterPropertyDeclaration1ES6.ts, 6, 16)) +>x : Symbol(B.x, Decl(emitSuperCallBeforeEmitParameterPropertyDeclaration1ES6.ts, 6, 16)) "use strict"; 'someStringForEgngInject'; diff --git a/tests/baselines/reference/emitSuperCallBeforeEmitPropertyDeclaration1.symbols b/tests/baselines/reference/emitSuperCallBeforeEmitPropertyDeclaration1.symbols index 0b118b7c991..d4101787c83 100644 --- a/tests/baselines/reference/emitSuperCallBeforeEmitPropertyDeclaration1.symbols +++ b/tests/baselines/reference/emitSuperCallBeforeEmitPropertyDeclaration1.symbols @@ -3,7 +3,7 @@ class A { >A : Symbol(A, Decl(emitSuperCallBeforeEmitPropertyDeclaration1.ts, 0, 0)) blub = 6; ->blub : Symbol(blub, Decl(emitSuperCallBeforeEmitPropertyDeclaration1.ts, 0, 9)) +>blub : Symbol(A.blub, Decl(emitSuperCallBeforeEmitPropertyDeclaration1.ts, 0, 9)) } @@ -12,7 +12,7 @@ class B extends A { >A : Symbol(A, Decl(emitSuperCallBeforeEmitPropertyDeclaration1.ts, 0, 0)) blub = 12; ->blub : Symbol(blub, Decl(emitSuperCallBeforeEmitPropertyDeclaration1.ts, 5, 19)) +>blub : Symbol(B.blub, Decl(emitSuperCallBeforeEmitPropertyDeclaration1.ts, 5, 19)) constructor() { "use strict"; diff --git a/tests/baselines/reference/emitSuperCallBeforeEmitPropertyDeclaration1ES6.symbols b/tests/baselines/reference/emitSuperCallBeforeEmitPropertyDeclaration1ES6.symbols index 4d4b01a3666..4018bfa664c 100644 --- a/tests/baselines/reference/emitSuperCallBeforeEmitPropertyDeclaration1ES6.symbols +++ b/tests/baselines/reference/emitSuperCallBeforeEmitPropertyDeclaration1ES6.symbols @@ -3,7 +3,7 @@ class A { >A : Symbol(A, Decl(emitSuperCallBeforeEmitPropertyDeclaration1ES6.ts, 0, 0)) blub = 6; ->blub : Symbol(blub, Decl(emitSuperCallBeforeEmitPropertyDeclaration1ES6.ts, 0, 9)) +>blub : Symbol(A.blub, Decl(emitSuperCallBeforeEmitPropertyDeclaration1ES6.ts, 0, 9)) } @@ -12,7 +12,7 @@ class B extends A { >A : Symbol(A, Decl(emitSuperCallBeforeEmitPropertyDeclaration1ES6.ts, 0, 0)) blub = 12; ->blub : Symbol(blub, Decl(emitSuperCallBeforeEmitPropertyDeclaration1ES6.ts, 5, 19)) +>blub : Symbol(B.blub, Decl(emitSuperCallBeforeEmitPropertyDeclaration1ES6.ts, 5, 19)) constructor() { 'someStringForEgngInject'; diff --git a/tests/baselines/reference/emitSuperCallBeforeEmitPropertyDeclarationAndParameterPropertyDeclaration1.symbols b/tests/baselines/reference/emitSuperCallBeforeEmitPropertyDeclarationAndParameterPropertyDeclaration1.symbols index 1fb4ed01d85..0904aeaf477 100644 --- a/tests/baselines/reference/emitSuperCallBeforeEmitPropertyDeclarationAndParameterPropertyDeclaration1.symbols +++ b/tests/baselines/reference/emitSuperCallBeforeEmitPropertyDeclarationAndParameterPropertyDeclaration1.symbols @@ -3,7 +3,7 @@ class A { >A : Symbol(A, Decl(emitSuperCallBeforeEmitPropertyDeclarationAndParameterPropertyDeclaration1.ts, 0, 0)) blub = 6; ->blub : Symbol(blub, Decl(emitSuperCallBeforeEmitPropertyDeclarationAndParameterPropertyDeclaration1.ts, 0, 9)) +>blub : Symbol(A.blub, Decl(emitSuperCallBeforeEmitPropertyDeclarationAndParameterPropertyDeclaration1.ts, 0, 9)) } @@ -12,10 +12,10 @@ class B extends A { >A : Symbol(A, Decl(emitSuperCallBeforeEmitPropertyDeclarationAndParameterPropertyDeclaration1.ts, 0, 0)) blah = 2; ->blah : Symbol(blah, Decl(emitSuperCallBeforeEmitPropertyDeclarationAndParameterPropertyDeclaration1.ts, 5, 19)) +>blah : Symbol(B.blah, Decl(emitSuperCallBeforeEmitPropertyDeclarationAndParameterPropertyDeclaration1.ts, 5, 19)) constructor(public x: number) { ->x : Symbol(x, Decl(emitSuperCallBeforeEmitPropertyDeclarationAndParameterPropertyDeclaration1.ts, 7, 16)) +>x : Symbol(B.x, Decl(emitSuperCallBeforeEmitPropertyDeclarationAndParameterPropertyDeclaration1.ts, 7, 16)) "use strict"; 'someStringForEgngInject'; diff --git a/tests/baselines/reference/emitSuperCallBeforeEmitPropertyDeclarationAndParameterPropertyDeclaration1ES6.symbols b/tests/baselines/reference/emitSuperCallBeforeEmitPropertyDeclarationAndParameterPropertyDeclaration1ES6.symbols index 41cb20f3841..ed0089cdbe2 100644 --- a/tests/baselines/reference/emitSuperCallBeforeEmitPropertyDeclarationAndParameterPropertyDeclaration1ES6.symbols +++ b/tests/baselines/reference/emitSuperCallBeforeEmitPropertyDeclarationAndParameterPropertyDeclaration1ES6.symbols @@ -3,7 +3,7 @@ class A { >A : Symbol(A, Decl(emitSuperCallBeforeEmitPropertyDeclarationAndParameterPropertyDeclaration1ES6.ts, 0, 0)) blub = 6; ->blub : Symbol(blub, Decl(emitSuperCallBeforeEmitPropertyDeclarationAndParameterPropertyDeclaration1ES6.ts, 0, 9)) +>blub : Symbol(A.blub, Decl(emitSuperCallBeforeEmitPropertyDeclarationAndParameterPropertyDeclaration1ES6.ts, 0, 9)) } @@ -12,10 +12,10 @@ class B extends A { >A : Symbol(A, Decl(emitSuperCallBeforeEmitPropertyDeclarationAndParameterPropertyDeclaration1ES6.ts, 0, 0)) blah = 2; ->blah : Symbol(blah, Decl(emitSuperCallBeforeEmitPropertyDeclarationAndParameterPropertyDeclaration1ES6.ts, 5, 19)) +>blah : Symbol(B.blah, Decl(emitSuperCallBeforeEmitPropertyDeclarationAndParameterPropertyDeclaration1ES6.ts, 5, 19)) constructor(public x: number) { ->x : Symbol(x, Decl(emitSuperCallBeforeEmitPropertyDeclarationAndParameterPropertyDeclaration1ES6.ts, 7, 16)) +>x : Symbol(B.x, Decl(emitSuperCallBeforeEmitPropertyDeclarationAndParameterPropertyDeclaration1ES6.ts, 7, 16)) "use strict"; 'someStringForEgngInject'; diff --git a/tests/baselines/reference/emptyIndexer.symbols b/tests/baselines/reference/emptyIndexer.symbols index 6c3bad02349..3fe3844eb81 100644 --- a/tests/baselines/reference/emptyIndexer.symbols +++ b/tests/baselines/reference/emptyIndexer.symbols @@ -3,7 +3,7 @@ interface I1 { >I1 : Symbol(I1, Decl(emptyIndexer.ts, 0, 0)) m(): number; ->m : Symbol(m, Decl(emptyIndexer.ts, 0, 14)) +>m : Symbol(I1.m, Decl(emptyIndexer.ts, 0, 14)) } interface I2 { diff --git a/tests/baselines/reference/enumAssignmentCompat4.js b/tests/baselines/reference/enumAssignmentCompat4.js new file mode 100644 index 00000000000..ad28324ce0f --- /dev/null +++ b/tests/baselines/reference/enumAssignmentCompat4.js @@ -0,0 +1,51 @@ +//// [enumAssignmentCompat4.ts] +namespace M { + export enum MyEnum { + BAR + } + export var object2 = { + foo: MyEnum.BAR + }; +} + +namespace N { + export enum MyEnum { + FOO + }; + export var object1 = { + foo: MyEnum.FOO + }; +} + +let broken = [ + N.object1, + M.object2 +]; + + +//// [enumAssignmentCompat4.js] +var M; +(function (M) { + (function (MyEnum) { + MyEnum[MyEnum["BAR"] = 0] = "BAR"; + })(M.MyEnum || (M.MyEnum = {})); + var MyEnum = M.MyEnum; + M.object2 = { + foo: MyEnum.BAR + }; +})(M || (M = {})); +var N; +(function (N) { + (function (MyEnum) { + MyEnum[MyEnum["FOO"] = 0] = "FOO"; + })(N.MyEnum || (N.MyEnum = {})); + var MyEnum = N.MyEnum; + ; + N.object1 = { + foo: MyEnum.FOO + }; +})(N || (N = {})); +var broken = [ + N.object1, + M.object2 +]; diff --git a/tests/baselines/reference/enumAssignmentCompat4.symbols b/tests/baselines/reference/enumAssignmentCompat4.symbols new file mode 100644 index 00000000000..a3a80731610 --- /dev/null +++ b/tests/baselines/reference/enumAssignmentCompat4.symbols @@ -0,0 +1,59 @@ +=== tests/cases/compiler/enumAssignmentCompat4.ts === +namespace M { +>M : Symbol(M, Decl(enumAssignmentCompat4.ts, 0, 0)) + + export enum MyEnum { +>MyEnum : Symbol(MyEnum, Decl(enumAssignmentCompat4.ts, 0, 13)) + + BAR +>BAR : Symbol(MyEnum.BAR, Decl(enumAssignmentCompat4.ts, 1, 24)) + } + export var object2 = { +>object2 : Symbol(object2, Decl(enumAssignmentCompat4.ts, 4, 14)) + + foo: MyEnum.BAR +>foo : Symbol(foo, Decl(enumAssignmentCompat4.ts, 4, 26)) +>MyEnum.BAR : Symbol(MyEnum.BAR, Decl(enumAssignmentCompat4.ts, 1, 24)) +>MyEnum : Symbol(MyEnum, Decl(enumAssignmentCompat4.ts, 0, 13)) +>BAR : Symbol(MyEnum.BAR, Decl(enumAssignmentCompat4.ts, 1, 24)) + + }; +} + +namespace N { +>N : Symbol(N, Decl(enumAssignmentCompat4.ts, 7, 1)) + + export enum MyEnum { +>MyEnum : Symbol(MyEnum, Decl(enumAssignmentCompat4.ts, 9, 13)) + + FOO +>FOO : Symbol(MyEnum.FOO, Decl(enumAssignmentCompat4.ts, 10, 24)) + + }; + export var object1 = { +>object1 : Symbol(object1, Decl(enumAssignmentCompat4.ts, 13, 14)) + + foo: MyEnum.FOO +>foo : Symbol(foo, Decl(enumAssignmentCompat4.ts, 13, 26)) +>MyEnum.FOO : Symbol(MyEnum.FOO, Decl(enumAssignmentCompat4.ts, 10, 24)) +>MyEnum : Symbol(MyEnum, Decl(enumAssignmentCompat4.ts, 9, 13)) +>FOO : Symbol(MyEnum.FOO, Decl(enumAssignmentCompat4.ts, 10, 24)) + + }; +} + +let broken = [ +>broken : Symbol(broken, Decl(enumAssignmentCompat4.ts, 18, 3)) + + N.object1, +>N.object1 : Symbol(N.object1, Decl(enumAssignmentCompat4.ts, 13, 14)) +>N : Symbol(N, Decl(enumAssignmentCompat4.ts, 7, 1)) +>object1 : Symbol(N.object1, Decl(enumAssignmentCompat4.ts, 13, 14)) + + M.object2 +>M.object2 : Symbol(M.object2, Decl(enumAssignmentCompat4.ts, 4, 14)) +>M : Symbol(M, Decl(enumAssignmentCompat4.ts, 0, 0)) +>object2 : Symbol(M.object2, Decl(enumAssignmentCompat4.ts, 4, 14)) + +]; + diff --git a/tests/baselines/reference/enumAssignmentCompat4.types b/tests/baselines/reference/enumAssignmentCompat4.types new file mode 100644 index 00000000000..db7f5ce8ba2 --- /dev/null +++ b/tests/baselines/reference/enumAssignmentCompat4.types @@ -0,0 +1,62 @@ +=== tests/cases/compiler/enumAssignmentCompat4.ts === +namespace M { +>M : typeof M + + export enum MyEnum { +>MyEnum : MyEnum + + BAR +>BAR : MyEnum + } + export var object2 = { +>object2 : { foo: MyEnum; } +>{ foo: MyEnum.BAR } : { foo: MyEnum; } + + foo: MyEnum.BAR +>foo : MyEnum +>MyEnum.BAR : MyEnum +>MyEnum : typeof MyEnum +>BAR : MyEnum + + }; +} + +namespace N { +>N : typeof N + + export enum MyEnum { +>MyEnum : MyEnum + + FOO +>FOO : MyEnum + + }; + export var object1 = { +>object1 : { foo: MyEnum; } +>{ foo: MyEnum.FOO } : { foo: MyEnum; } + + foo: MyEnum.FOO +>foo : MyEnum +>MyEnum.FOO : MyEnum +>MyEnum : typeof MyEnum +>FOO : MyEnum + + }; +} + +let broken = [ +>broken : ({ foo: N.MyEnum; } | { foo: M.MyEnum; })[] +>[ N.object1, M.object2] : ({ foo: N.MyEnum; } | { foo: M.MyEnum; })[] + + N.object1, +>N.object1 : { foo: N.MyEnum; } +>N : typeof N +>object1 : { foo: N.MyEnum; } + + M.object2 +>M.object2 : { foo: M.MyEnum; } +>M : typeof M +>object2 : { foo: M.MyEnum; } + +]; + diff --git a/tests/baselines/reference/equalityWithIntersectionTypes01.errors.txt b/tests/baselines/reference/equalityWithIntersectionTypes01.errors.txt new file mode 100644 index 00000000000..8bffff2218b --- /dev/null +++ b/tests/baselines/reference/equalityWithIntersectionTypes01.errors.txt @@ -0,0 +1,51 @@ +tests/cases/conformance/types/typeRelationships/comparable/equalityWithIntersectionTypes01.ts(17,5): error TS2365: Operator '===' cannot be applied to types 'I1 & I3' and 'I2'. +tests/cases/conformance/types/typeRelationships/comparable/equalityWithIntersectionTypes01.ts(17,16): error TS2365: Operator '===' cannot be applied to types 'I2' and 'I1 & I3'. +tests/cases/conformance/types/typeRelationships/comparable/equalityWithIntersectionTypes01.ts(19,10): error TS2365: Operator '!==' cannot be applied to types 'I1 & I3' and 'I2'. +tests/cases/conformance/types/typeRelationships/comparable/equalityWithIntersectionTypes01.ts(19,21): error TS2365: Operator '!==' cannot be applied to types 'I2' and 'I1 & I3'. +tests/cases/conformance/types/typeRelationships/comparable/equalityWithIntersectionTypes01.ts(21,10): error TS2365: Operator '==' cannot be applied to types 'I1 & I3' and 'I2'. +tests/cases/conformance/types/typeRelationships/comparable/equalityWithIntersectionTypes01.ts(21,20): error TS2365: Operator '==' cannot be applied to types 'I2' and 'I1 & I3'. +tests/cases/conformance/types/typeRelationships/comparable/equalityWithIntersectionTypes01.ts(23,10): error TS2365: Operator '!=' cannot be applied to types 'I1 & I3' and 'I2'. +tests/cases/conformance/types/typeRelationships/comparable/equalityWithIntersectionTypes01.ts(23,20): error TS2365: Operator '!=' cannot be applied to types 'I2' and 'I1 & I3'. + + +==== tests/cases/conformance/types/typeRelationships/comparable/equalityWithIntersectionTypes01.ts (8 errors) ==== + interface I1 { + p1: number + } + + interface I2 extends I1 { + p2: number; + } + + interface I3 { + p3: number; + } + + var x = { p1: 10, p2: 20, p3: 30 }; + var y: I1 & I3 = x; + var z: I2 = x; + + if (y === z || z === y) { + ~~~~~~~ +!!! error TS2365: Operator '===' cannot be applied to types 'I1 & I3' and 'I2'. + ~~~~~~~ +!!! error TS2365: Operator '===' cannot be applied to types 'I2' and 'I1 & I3'. + } + else if (y !== z || z !== y) { + ~~~~~~~ +!!! error TS2365: Operator '!==' cannot be applied to types 'I1 & I3' and 'I2'. + ~~~~~~~ +!!! error TS2365: Operator '!==' cannot be applied to types 'I2' and 'I1 & I3'. + } + else if (y == z || z == y) { + ~~~~~~ +!!! error TS2365: Operator '==' cannot be applied to types 'I1 & I3' and 'I2'. + ~~~~~~ +!!! error TS2365: Operator '==' cannot be applied to types 'I2' and 'I1 & I3'. + } + else if (y != z || z != y) { + ~~~~~~ +!!! error TS2365: Operator '!=' cannot be applied to types 'I1 & I3' and 'I2'. + ~~~~~~ +!!! error TS2365: Operator '!=' cannot be applied to types 'I2' and 'I1 & I3'. + } \ No newline at end of file diff --git a/tests/baselines/reference/equalityWithIntersectionTypes01.js b/tests/baselines/reference/equalityWithIntersectionTypes01.js new file mode 100644 index 00000000000..151809bb6f8 --- /dev/null +++ b/tests/baselines/reference/equalityWithIntersectionTypes01.js @@ -0,0 +1,38 @@ +//// [equalityWithIntersectionTypes01.ts] +interface I1 { + p1: number +} + +interface I2 extends I1 { + p2: number; +} + +interface I3 { + p3: number; +} + +var x = { p1: 10, p2: 20, p3: 30 }; +var y: I1 & I3 = x; +var z: I2 = x; + +if (y === z || z === y) { +} +else if (y !== z || z !== y) { +} +else if (y == z || z == y) { +} +else if (y != z || z != y) { +} + +//// [equalityWithIntersectionTypes01.js] +var x = { p1: 10, p2: 20, p3: 30 }; +var y = x; +var z = x; +if (y === z || z === y) { +} +else if (y !== z || z !== y) { +} +else if (y == z || z == y) { +} +else if (y != z || z != y) { +} diff --git a/tests/baselines/reference/equalityWithUnionTypes01.js b/tests/baselines/reference/equalityWithUnionTypes01.js new file mode 100644 index 00000000000..05e9f25cd69 --- /dev/null +++ b/tests/baselines/reference/equalityWithUnionTypes01.js @@ -0,0 +1,34 @@ +//// [equalityWithUnionTypes01.ts] +interface I1 { + p1: number +} + +interface I2 extends I1 { + p2: number; +} + +var x = { p1: 10, p2: 20 }; +var y: number | I2 = x; +var z: I1 = x; + +if (y === z || z === y) { +} +else if (y !== z || z !== y) { +} +else if (y == z || z == y) { +} +else if (y != z || z != y) { +} + +//// [equalityWithUnionTypes01.js] +var x = { p1: 10, p2: 20 }; +var y = x; +var z = x; +if (y === z || z === y) { +} +else if (y !== z || z !== y) { +} +else if (y == z || z == y) { +} +else if (y != z || z != y) { +} diff --git a/tests/baselines/reference/equalityWithUnionTypes01.symbols b/tests/baselines/reference/equalityWithUnionTypes01.symbols new file mode 100644 index 00000000000..0b1a6892517 --- /dev/null +++ b/tests/baselines/reference/equalityWithUnionTypes01.symbols @@ -0,0 +1,55 @@ +=== tests/cases/conformance/types/typeRelationships/comparable/equalityWithUnionTypes01.ts === +interface I1 { +>I1 : Symbol(I1, Decl(equalityWithUnionTypes01.ts, 0, 0)) + + p1: number +>p1 : Symbol(I1.p1, Decl(equalityWithUnionTypes01.ts, 0, 14)) +} + +interface I2 extends I1 { +>I2 : Symbol(I2, Decl(equalityWithUnionTypes01.ts, 2, 1)) +>I1 : Symbol(I1, Decl(equalityWithUnionTypes01.ts, 0, 0)) + + p2: number; +>p2 : Symbol(I2.p2, Decl(equalityWithUnionTypes01.ts, 4, 25)) +} + +var x = { p1: 10, p2: 20 }; +>x : Symbol(x, Decl(equalityWithUnionTypes01.ts, 8, 3)) +>p1 : Symbol(p1, Decl(equalityWithUnionTypes01.ts, 8, 9)) +>p2 : Symbol(p2, Decl(equalityWithUnionTypes01.ts, 8, 17)) + +var y: number | I2 = x; +>y : Symbol(y, Decl(equalityWithUnionTypes01.ts, 9, 3)) +>I2 : Symbol(I2, Decl(equalityWithUnionTypes01.ts, 2, 1)) +>x : Symbol(x, Decl(equalityWithUnionTypes01.ts, 8, 3)) + +var z: I1 = x; +>z : Symbol(z, Decl(equalityWithUnionTypes01.ts, 10, 3)) +>I1 : Symbol(I1, Decl(equalityWithUnionTypes01.ts, 0, 0)) +>x : Symbol(x, Decl(equalityWithUnionTypes01.ts, 8, 3)) + +if (y === z || z === y) { +>y : Symbol(y, Decl(equalityWithUnionTypes01.ts, 9, 3)) +>z : Symbol(z, Decl(equalityWithUnionTypes01.ts, 10, 3)) +>z : Symbol(z, Decl(equalityWithUnionTypes01.ts, 10, 3)) +>y : Symbol(y, Decl(equalityWithUnionTypes01.ts, 9, 3)) +} +else if (y !== z || z !== y) { +>y : Symbol(y, Decl(equalityWithUnionTypes01.ts, 9, 3)) +>z : Symbol(z, Decl(equalityWithUnionTypes01.ts, 10, 3)) +>z : Symbol(z, Decl(equalityWithUnionTypes01.ts, 10, 3)) +>y : Symbol(y, Decl(equalityWithUnionTypes01.ts, 9, 3)) +} +else if (y == z || z == y) { +>y : Symbol(y, Decl(equalityWithUnionTypes01.ts, 9, 3)) +>z : Symbol(z, Decl(equalityWithUnionTypes01.ts, 10, 3)) +>z : Symbol(z, Decl(equalityWithUnionTypes01.ts, 10, 3)) +>y : Symbol(y, Decl(equalityWithUnionTypes01.ts, 9, 3)) +} +else if (y != z || z != y) { +>y : Symbol(y, Decl(equalityWithUnionTypes01.ts, 9, 3)) +>z : Symbol(z, Decl(equalityWithUnionTypes01.ts, 10, 3)) +>z : Symbol(z, Decl(equalityWithUnionTypes01.ts, 10, 3)) +>y : Symbol(y, Decl(equalityWithUnionTypes01.ts, 9, 3)) +} diff --git a/tests/baselines/reference/equalityWithUnionTypes01.types b/tests/baselines/reference/equalityWithUnionTypes01.types new file mode 100644 index 00000000000..61e38030949 --- /dev/null +++ b/tests/baselines/reference/equalityWithUnionTypes01.types @@ -0,0 +1,70 @@ +=== tests/cases/conformance/types/typeRelationships/comparable/equalityWithUnionTypes01.ts === +interface I1 { +>I1 : I1 + + p1: number +>p1 : number +} + +interface I2 extends I1 { +>I2 : I2 +>I1 : I1 + + p2: number; +>p2 : number +} + +var x = { p1: 10, p2: 20 }; +>x : { p1: number; p2: number; } +>{ p1: 10, p2: 20 } : { p1: number; p2: number; } +>p1 : number +>10 : number +>p2 : number +>20 : number + +var y: number | I2 = x; +>y : number | I2 +>I2 : I2 +>x : { p1: number; p2: number; } + +var z: I1 = x; +>z : I1 +>I1 : I1 +>x : { p1: number; p2: number; } + +if (y === z || z === y) { +>y === z || z === y : boolean +>y === z : boolean +>y : I2 +>z : I1 +>z === y : boolean +>z : I1 +>y : I2 +} +else if (y !== z || z !== y) { +>y !== z || z !== y : boolean +>y !== z : boolean +>y : I2 +>z : I1 +>z !== y : boolean +>z : I1 +>y : I2 +} +else if (y == z || z == y) { +>y == z || z == y : boolean +>y == z : boolean +>y : I2 +>z : I1 +>z == y : boolean +>z : I1 +>y : I2 +} +else if (y != z || z != y) { +>y != z || z != y : boolean +>y != z : boolean +>y : I2 +>z : I1 +>z != y : boolean +>z : I1 +>y : I2 +} diff --git a/tests/baselines/reference/errorMessagesIntersectionTypes02.errors.txt b/tests/baselines/reference/errorMessagesIntersectionTypes02.errors.txt index 06e06c87015..6a9dd26706c 100644 --- a/tests/baselines/reference/errorMessagesIntersectionTypes02.errors.txt +++ b/tests/baselines/reference/errorMessagesIntersectionTypes02.errors.txt @@ -1,7 +1,6 @@ tests/cases/compiler/errorMessagesIntersectionTypes02.ts(14,5): error TS2322: Type '{ fooProp: string; } & Bar' is not assignable to type 'FooBar'. Types of property 'fooProp' are incompatible. Type 'string' is not assignable to type '"hello" | "world"'. - Type 'string' is not assignable to type '"world"'. ==== tests/cases/compiler/errorMessagesIntersectionTypes02.ts (1 errors) ==== @@ -23,6 +22,5 @@ tests/cases/compiler/errorMessagesIntersectionTypes02.ts(14,5): error TS2322: Ty !!! error TS2322: Type '{ fooProp: string; } & Bar' is not assignable to type 'FooBar'. !!! error TS2322: Types of property 'fooProp' are incompatible. !!! error TS2322: Type 'string' is not assignable to type '"hello" | "world"'. -!!! error TS2322: Type 'string' is not assignable to type '"world"'. fooProp: "frizzlebizzle" }); \ No newline at end of file diff --git a/tests/baselines/reference/es2015modulekind.symbols b/tests/baselines/reference/es2015modulekind.symbols index 227443ac06b..8a772e31895 100644 --- a/tests/baselines/reference/es2015modulekind.symbols +++ b/tests/baselines/reference/es2015modulekind.symbols @@ -9,7 +9,7 @@ export default class A } public B() ->B : Symbol(B, Decl(es2015modulekind.ts, 6, 5)) +>B : Symbol(A.B, Decl(es2015modulekind.ts, 6, 5)) { return 42; } diff --git a/tests/baselines/reference/es2015modulekindWithES6Target.symbols b/tests/baselines/reference/es2015modulekindWithES6Target.symbols index 2ff208ac704..4a7c6469ca5 100644 --- a/tests/baselines/reference/es2015modulekindWithES6Target.symbols +++ b/tests/baselines/reference/es2015modulekindWithES6Target.symbols @@ -9,7 +9,7 @@ export default class A } public B() ->B : Symbol(B, Decl(es2015modulekindWithES6Target.ts, 6, 5)) +>B : Symbol(A.B, Decl(es2015modulekindWithES6Target.ts, 6, 5)) { return 42; } diff --git a/tests/baselines/reference/es3-amd.symbols b/tests/baselines/reference/es3-amd.symbols index f6d1211ad4e..1f9efe3e590 100644 --- a/tests/baselines/reference/es3-amd.symbols +++ b/tests/baselines/reference/es3-amd.symbols @@ -9,7 +9,7 @@ class A } public B() ->B : Symbol(B, Decl(es3-amd.ts, 6, 5)) +>B : Symbol(A.B, Decl(es3-amd.ts, 6, 5)) { return 42; } diff --git a/tests/baselines/reference/es3-declaration-amd.symbols b/tests/baselines/reference/es3-declaration-amd.symbols index aec4af2bb60..5930b908e2f 100644 --- a/tests/baselines/reference/es3-declaration-amd.symbols +++ b/tests/baselines/reference/es3-declaration-amd.symbols @@ -9,7 +9,7 @@ class A } public B() ->B : Symbol(B, Decl(es3-declaration-amd.ts, 6, 5)) +>B : Symbol(A.B, Decl(es3-declaration-amd.ts, 6, 5)) { return 42; } diff --git a/tests/baselines/reference/es3-sourcemap-amd.symbols b/tests/baselines/reference/es3-sourcemap-amd.symbols index ca20348a0f5..919e2cfa46c 100644 --- a/tests/baselines/reference/es3-sourcemap-amd.symbols +++ b/tests/baselines/reference/es3-sourcemap-amd.symbols @@ -9,7 +9,7 @@ class A } public B() ->B : Symbol(B, Decl(es3-sourcemap-amd.ts, 6, 5)) +>B : Symbol(A.B, Decl(es3-sourcemap-amd.ts, 6, 5)) { return 42; } diff --git a/tests/baselines/reference/es5-amd.symbols b/tests/baselines/reference/es5-amd.symbols index cf99349fc1d..33ed9bc6423 100644 --- a/tests/baselines/reference/es5-amd.symbols +++ b/tests/baselines/reference/es5-amd.symbols @@ -9,7 +9,7 @@ class A } public B() ->B : Symbol(B, Decl(es5-amd.ts, 6, 5)) +>B : Symbol(A.B, Decl(es5-amd.ts, 6, 5)) { return 42; } diff --git a/tests/baselines/reference/es5-commonjs.symbols b/tests/baselines/reference/es5-commonjs.symbols index 41e4484afcd..a2319b14ce7 100644 --- a/tests/baselines/reference/es5-commonjs.symbols +++ b/tests/baselines/reference/es5-commonjs.symbols @@ -9,7 +9,7 @@ export default class A } public B() ->B : Symbol(B, Decl(es5-commonjs.ts, 6, 5)) +>B : Symbol(A.B, Decl(es5-commonjs.ts, 6, 5)) { return 42; } diff --git a/tests/baselines/reference/es5-commonjs4.symbols b/tests/baselines/reference/es5-commonjs4.symbols index 22d41128d74..83006bd9aa5 100644 --- a/tests/baselines/reference/es5-commonjs4.symbols +++ b/tests/baselines/reference/es5-commonjs4.symbols @@ -9,7 +9,7 @@ export default class A } public B() ->B : Symbol(B, Decl(es5-commonjs4.ts, 6, 5)) +>B : Symbol(A.B, Decl(es5-commonjs4.ts, 6, 5)) { return 42; } diff --git a/tests/baselines/reference/es5-declaration-amd.symbols b/tests/baselines/reference/es5-declaration-amd.symbols index a2504a0ea84..0df2ad428f0 100644 --- a/tests/baselines/reference/es5-declaration-amd.symbols +++ b/tests/baselines/reference/es5-declaration-amd.symbols @@ -9,7 +9,7 @@ class A } public B() ->B : Symbol(B, Decl(es5-declaration-amd.ts, 6, 5)) +>B : Symbol(A.B, Decl(es5-declaration-amd.ts, 6, 5)) { return 42; } diff --git a/tests/baselines/reference/es5-souremap-amd.symbols b/tests/baselines/reference/es5-souremap-amd.symbols index 14b22cc74c6..c725434096d 100644 --- a/tests/baselines/reference/es5-souremap-amd.symbols +++ b/tests/baselines/reference/es5-souremap-amd.symbols @@ -9,7 +9,7 @@ class A } public B() ->B : Symbol(B, Decl(es5-souremap-amd.ts, 6, 5)) +>B : Symbol(A.B, Decl(es5-souremap-amd.ts, 6, 5)) { return 42; } diff --git a/tests/baselines/reference/es5-system.symbols b/tests/baselines/reference/es5-system.symbols index 5211e3c4259..f2c4b38aba2 100644 --- a/tests/baselines/reference/es5-system.symbols +++ b/tests/baselines/reference/es5-system.symbols @@ -9,7 +9,7 @@ export default class A } public B() ->B : Symbol(B, Decl(es5-system.ts, 6, 5)) +>B : Symbol(A.B, Decl(es5-system.ts, 6, 5)) { return 42; } diff --git a/tests/baselines/reference/es5-umd.symbols b/tests/baselines/reference/es5-umd.symbols index f570afd9548..73dd7ebbe5b 100644 --- a/tests/baselines/reference/es5-umd.symbols +++ b/tests/baselines/reference/es5-umd.symbols @@ -9,7 +9,7 @@ class A } public B() ->B : Symbol(B, Decl(es5-umd.ts, 6, 5)) +>B : Symbol(A.B, Decl(es5-umd.ts, 6, 5)) { return 42; } diff --git a/tests/baselines/reference/es5-umd2.symbols b/tests/baselines/reference/es5-umd2.symbols index 3b911d7e6f0..f017c6b72db 100644 --- a/tests/baselines/reference/es5-umd2.symbols +++ b/tests/baselines/reference/es5-umd2.symbols @@ -9,7 +9,7 @@ export class A } public B() ->B : Symbol(B, Decl(es5-umd2.ts, 6, 5)) +>B : Symbol(A.B, Decl(es5-umd2.ts, 6, 5)) { return 42; } diff --git a/tests/baselines/reference/es5-umd3.symbols b/tests/baselines/reference/es5-umd3.symbols index 3f830ae3637..ca0203b029c 100644 --- a/tests/baselines/reference/es5-umd3.symbols +++ b/tests/baselines/reference/es5-umd3.symbols @@ -9,7 +9,7 @@ export default class A } public B() ->B : Symbol(B, Decl(es5-umd3.ts, 6, 5)) +>B : Symbol(A.B, Decl(es5-umd3.ts, 6, 5)) { return 42; } diff --git a/tests/baselines/reference/es5-umd4.symbols b/tests/baselines/reference/es5-umd4.symbols index cdf1e135cf7..790c8cccb97 100644 --- a/tests/baselines/reference/es5-umd4.symbols +++ b/tests/baselines/reference/es5-umd4.symbols @@ -9,7 +9,7 @@ class A } public B() ->B : Symbol(B, Decl(es5-umd4.ts, 6, 5)) +>B : Symbol(A.B, Decl(es5-umd4.ts, 6, 5)) { return 42; } diff --git a/tests/baselines/reference/es5ExportDefaultClassDeclaration.symbols b/tests/baselines/reference/es5ExportDefaultClassDeclaration.symbols index 24196766dfa..8aaa8a4e532 100644 --- a/tests/baselines/reference/es5ExportDefaultClassDeclaration.symbols +++ b/tests/baselines/reference/es5ExportDefaultClassDeclaration.symbols @@ -4,6 +4,6 @@ export default class C { >C : Symbol(C, Decl(es5ExportDefaultClassDeclaration.ts, 0, 0)) method() { } ->method : Symbol(method, Decl(es5ExportDefaultClassDeclaration.ts, 1, 24)) +>method : Symbol(C.method, Decl(es5ExportDefaultClassDeclaration.ts, 1, 24)) } diff --git a/tests/baselines/reference/es5ExportDefaultClassDeclaration2.symbols b/tests/baselines/reference/es5ExportDefaultClassDeclaration2.symbols index 0780ff7a3c8..05947d5a557 100644 --- a/tests/baselines/reference/es5ExportDefaultClassDeclaration2.symbols +++ b/tests/baselines/reference/es5ExportDefaultClassDeclaration2.symbols @@ -2,6 +2,6 @@ export default class { method() { } ->method : Symbol(method, Decl(es5ExportDefaultClassDeclaration2.ts, 1, 22)) +>method : Symbol(default.method, Decl(es5ExportDefaultClassDeclaration2.ts, 1, 22)) } diff --git a/tests/baselines/reference/es5ExportDefaultClassDeclaration3.symbols b/tests/baselines/reference/es5ExportDefaultClassDeclaration3.symbols index b5262b94688..d5c8243161b 100644 --- a/tests/baselines/reference/es5ExportDefaultClassDeclaration3.symbols +++ b/tests/baselines/reference/es5ExportDefaultClassDeclaration3.symbols @@ -9,7 +9,7 @@ export default class C { >C : Symbol(C, Decl(es5ExportDefaultClassDeclaration3.ts, 1, 24)) method(): C { ->method : Symbol(method, Decl(es5ExportDefaultClassDeclaration3.ts, 3, 24)) +>method : Symbol(C.method, Decl(es5ExportDefaultClassDeclaration3.ts, 3, 24)) >C : Symbol(C, Decl(es5ExportDefaultClassDeclaration3.ts, 1, 24)) return new C(); diff --git a/tests/baselines/reference/es5ExportDefaultClassDeclaration4.symbols b/tests/baselines/reference/es5ExportDefaultClassDeclaration4.symbols index 6c30ffed858..15faf638ca1 100644 --- a/tests/baselines/reference/es5ExportDefaultClassDeclaration4.symbols +++ b/tests/baselines/reference/es5ExportDefaultClassDeclaration4.symbols @@ -9,7 +9,7 @@ declare module "foo" { >C : Symbol(C, Decl(es5ExportDefaultClassDeclaration4.ts, 2, 25)) method(): C; ->method : Symbol(method, Decl(es5ExportDefaultClassDeclaration4.ts, 4, 28)) +>method : Symbol(C.method, Decl(es5ExportDefaultClassDeclaration4.ts, 4, 28)) >C : Symbol(C, Decl(es5ExportDefaultClassDeclaration4.ts, 2, 25)) } diff --git a/tests/baselines/reference/es5ExportEqualsDts.symbols b/tests/baselines/reference/es5ExportEqualsDts.symbols index 52bf357d177..46bc29b58dd 100644 --- a/tests/baselines/reference/es5ExportEqualsDts.symbols +++ b/tests/baselines/reference/es5ExportEqualsDts.symbols @@ -4,7 +4,7 @@ class A { >A : Symbol(A, Decl(es5ExportEqualsDts.ts, 0, 0), Decl(es5ExportEqualsDts.ts, 6, 1)) foo() { ->foo : Symbol(foo, Decl(es5ExportEqualsDts.ts, 1, 9)) +>foo : Symbol(A.foo, Decl(es5ExportEqualsDts.ts, 1, 9)) var aVal: A.B; >aVal : Symbol(aVal, Decl(es5ExportEqualsDts.ts, 3, 11)) diff --git a/tests/baselines/reference/es5ModuleWithModuleGenAmd.symbols b/tests/baselines/reference/es5ModuleWithModuleGenAmd.symbols index 1a853eb37d0..b9df217a403 100644 --- a/tests/baselines/reference/es5ModuleWithModuleGenAmd.symbols +++ b/tests/baselines/reference/es5ModuleWithModuleGenAmd.symbols @@ -7,7 +7,7 @@ export class A } public B() ->B : Symbol(B, Decl(es5ModuleWithModuleGenAmd.ts, 4, 5)) +>B : Symbol(A.B, Decl(es5ModuleWithModuleGenAmd.ts, 4, 5)) { return 42; } diff --git a/tests/baselines/reference/es5ModuleWithModuleGenCommonjs.symbols b/tests/baselines/reference/es5ModuleWithModuleGenCommonjs.symbols index a69ce05f1ae..9917d5c3713 100644 --- a/tests/baselines/reference/es5ModuleWithModuleGenCommonjs.symbols +++ b/tests/baselines/reference/es5ModuleWithModuleGenCommonjs.symbols @@ -7,7 +7,7 @@ export class A } public B() ->B : Symbol(B, Decl(es5ModuleWithModuleGenCommonjs.ts, 4, 5)) +>B : Symbol(A.B, Decl(es5ModuleWithModuleGenCommonjs.ts, 4, 5)) { return 42; } diff --git a/tests/baselines/reference/es5ModuleWithoutModuleGenTarget.symbols b/tests/baselines/reference/es5ModuleWithoutModuleGenTarget.symbols index d39ced97524..436e4a5351a 100644 --- a/tests/baselines/reference/es5ModuleWithoutModuleGenTarget.symbols +++ b/tests/baselines/reference/es5ModuleWithoutModuleGenTarget.symbols @@ -7,7 +7,7 @@ export class A } public B() ->B : Symbol(B, Decl(es5ModuleWithoutModuleGenTarget.ts, 4, 5)) +>B : Symbol(A.B, Decl(es5ModuleWithoutModuleGenTarget.ts, 4, 5)) { return 42; } diff --git a/tests/baselines/reference/es6-amd.symbols b/tests/baselines/reference/es6-amd.symbols index ad5cf38e7cd..fb9b1c57b27 100644 --- a/tests/baselines/reference/es6-amd.symbols +++ b/tests/baselines/reference/es6-amd.symbols @@ -9,7 +9,7 @@ class A } public B() ->B : Symbol(B, Decl(es6-amd.ts, 6, 5)) +>B : Symbol(A.B, Decl(es6-amd.ts, 6, 5)) { return 42; } diff --git a/tests/baselines/reference/es6-declaration-amd.symbols b/tests/baselines/reference/es6-declaration-amd.symbols index f1a728396cc..6811dfe793d 100644 --- a/tests/baselines/reference/es6-declaration-amd.symbols +++ b/tests/baselines/reference/es6-declaration-amd.symbols @@ -9,7 +9,7 @@ class A } public B() ->B : Symbol(B, Decl(es6-declaration-amd.ts, 6, 5)) +>B : Symbol(A.B, Decl(es6-declaration-amd.ts, 6, 5)) { return 42; } diff --git a/tests/baselines/reference/es6-sourcemap-amd.symbols b/tests/baselines/reference/es6-sourcemap-amd.symbols index 13be6367ba0..e5f731234f3 100644 --- a/tests/baselines/reference/es6-sourcemap-amd.symbols +++ b/tests/baselines/reference/es6-sourcemap-amd.symbols @@ -9,7 +9,7 @@ class A } public B() ->B : Symbol(B, Decl(es6-sourcemap-amd.ts, 6, 5)) +>B : Symbol(A.B, Decl(es6-sourcemap-amd.ts, 6, 5)) { return 42; } diff --git a/tests/baselines/reference/es6-umd.symbols b/tests/baselines/reference/es6-umd.symbols index f7c57215ea6..50584887fb3 100644 --- a/tests/baselines/reference/es6-umd.symbols +++ b/tests/baselines/reference/es6-umd.symbols @@ -9,7 +9,7 @@ class A } public B() ->B : Symbol(B, Decl(es6-umd.ts, 6, 5)) +>B : Symbol(A.B, Decl(es6-umd.ts, 6, 5)) { return 42; } diff --git a/tests/baselines/reference/es6-umd2.symbols b/tests/baselines/reference/es6-umd2.symbols index 88acf127279..d998e4b68ee 100644 --- a/tests/baselines/reference/es6-umd2.symbols +++ b/tests/baselines/reference/es6-umd2.symbols @@ -9,7 +9,7 @@ export class A } public B() ->B : Symbol(B, Decl(es6-umd2.ts, 6, 5)) +>B : Symbol(A.B, Decl(es6-umd2.ts, 6, 5)) { return 42; } diff --git a/tests/baselines/reference/es6ClassTest3.symbols b/tests/baselines/reference/es6ClassTest3.symbols index cf2284e95ee..94404b6777a 100644 --- a/tests/baselines/reference/es6ClassTest3.symbols +++ b/tests/baselines/reference/es6ClassTest3.symbols @@ -6,30 +6,30 @@ module M { >Visibility : Symbol(Visibility, Decl(es6ClassTest3.ts, 0, 10)) public foo() { }; ->foo : Symbol(foo, Decl(es6ClassTest3.ts, 1, 19)) +>foo : Symbol(Visibility.foo, Decl(es6ClassTest3.ts, 1, 19)) private bar() { }; ->bar : Symbol(bar, Decl(es6ClassTest3.ts, 2, 22)) +>bar : Symbol(Visibility.bar, Decl(es6ClassTest3.ts, 2, 22)) private x: number; ->x : Symbol(x, Decl(es6ClassTest3.ts, 3, 23)) +>x : Symbol(Visibility.x, Decl(es6ClassTest3.ts, 3, 23)) public y: number; ->y : Symbol(y, Decl(es6ClassTest3.ts, 4, 26)) +>y : Symbol(Visibility.y, Decl(es6ClassTest3.ts, 4, 26)) public z: number; ->z : Symbol(z, Decl(es6ClassTest3.ts, 5, 22)) +>z : Symbol(Visibility.z, Decl(es6ClassTest3.ts, 5, 22)) constructor() { this.x = 1; ->this.x : Symbol(x, Decl(es6ClassTest3.ts, 3, 23)) +>this.x : Symbol(Visibility.x, Decl(es6ClassTest3.ts, 3, 23)) >this : Symbol(Visibility, Decl(es6ClassTest3.ts, 0, 10)) ->x : Symbol(x, Decl(es6ClassTest3.ts, 3, 23)) +>x : Symbol(Visibility.x, Decl(es6ClassTest3.ts, 3, 23)) this.y = 2; ->this.y : Symbol(y, Decl(es6ClassTest3.ts, 4, 26)) +>this.y : Symbol(Visibility.y, Decl(es6ClassTest3.ts, 4, 26)) >this : Symbol(Visibility, Decl(es6ClassTest3.ts, 0, 10)) ->y : Symbol(y, Decl(es6ClassTest3.ts, 4, 26)) +>y : Symbol(Visibility.y, Decl(es6ClassTest3.ts, 4, 26)) } } } diff --git a/tests/baselines/reference/es6ClassTest4.symbols b/tests/baselines/reference/es6ClassTest4.symbols index 41a329a3d51..e9dd7513fed 100644 --- a/tests/baselines/reference/es6ClassTest4.symbols +++ b/tests/baselines/reference/es6ClassTest4.symbols @@ -3,19 +3,19 @@ declare class Point >Point : Symbol(Point, Decl(es6ClassTest4.ts, 0, 0)) { x: number; ->x : Symbol(x, Decl(es6ClassTest4.ts, 1, 1)) +>x : Symbol(Point.x, Decl(es6ClassTest4.ts, 1, 1)) y: number; ->y : Symbol(y, Decl(es6ClassTest4.ts, 2, 14)) +>y : Symbol(Point.y, Decl(es6ClassTest4.ts, 2, 14)) add(dx: number, dy: number): Point; ->add : Symbol(add, Decl(es6ClassTest4.ts, 3, 14)) +>add : Symbol(Point.add, Decl(es6ClassTest4.ts, 3, 14)) >dx : Symbol(dx, Decl(es6ClassTest4.ts, 4, 8)) >dy : Symbol(dy, Decl(es6ClassTest4.ts, 4, 19)) >Point : Symbol(Point, Decl(es6ClassTest4.ts, 0, 0)) mult(p: Point): Point; ->mult : Symbol(mult, Decl(es6ClassTest4.ts, 4, 39)) +>mult : Symbol(Point.mult, Decl(es6ClassTest4.ts, 4, 39)) >p : Symbol(p, Decl(es6ClassTest4.ts, 5, 9)) >Point : Symbol(Point, Decl(es6ClassTest4.ts, 0, 0)) >Point : Symbol(Point, Decl(es6ClassTest4.ts, 0, 0)) diff --git a/tests/baselines/reference/es6ClassTest5.symbols b/tests/baselines/reference/es6ClassTest5.symbols index 89c6921e163..063265e0dad 100644 --- a/tests/baselines/reference/es6ClassTest5.symbols +++ b/tests/baselines/reference/es6ClassTest5.symbols @@ -3,7 +3,7 @@ class C1T5 { >C1T5 : Symbol(C1T5, Decl(es6ClassTest5.ts, 0, 0)) foo: (i: number, s: string) => number = ->foo : Symbol(foo, Decl(es6ClassTest5.ts, 0, 12)) +>foo : Symbol(C1T5.foo, Decl(es6ClassTest5.ts, 0, 12)) >i : Symbol(i, Decl(es6ClassTest5.ts, 1, 10)) >s : Symbol(s, Decl(es6ClassTest5.ts, 1, 20)) @@ -21,6 +21,6 @@ class bigClass { >bigClass : Symbol(bigClass, Decl(es6ClassTest5.ts, 6, 14)) public break = 1; ->break : Symbol(break, Decl(es6ClassTest5.ts, 8, 17)) +>break : Symbol(bigClass.break, Decl(es6ClassTest5.ts, 8, 17)) } diff --git a/tests/baselines/reference/es6ClassTest8.symbols b/tests/baselines/reference/es6ClassTest8.symbols index b02b80e7017..3894b884a1f 100644 --- a/tests/baselines/reference/es6ClassTest8.symbols +++ b/tests/baselines/reference/es6ClassTest8.symbols @@ -58,13 +58,13 @@ class Vector { >Vector : Symbol(Vector, Decl(es6ClassTest8.ts, 10, 1)) constructor(public x: number, ->x : Symbol(x, Decl(es6ClassTest8.ts, 18, 16)) +>x : Symbol(Vector.x, Decl(es6ClassTest8.ts, 18, 16)) public y: number, ->y : Symbol(y, Decl(es6ClassTest8.ts, 18, 33)) +>y : Symbol(Vector.y, Decl(es6ClassTest8.ts, 18, 33)) public z: number) { ->z : Symbol(z, Decl(es6ClassTest8.ts, 19, 33)) +>z : Symbol(Vector.z, Decl(es6ClassTest8.ts, 19, 33)) } static dot(v1:Vector, v2:Vector):Vector {return null;} @@ -81,19 +81,19 @@ class Camera { >Camera : Symbol(Camera, Decl(es6ClassTest8.ts, 25, 1)) public forward: Vector; ->forward : Symbol(forward, Decl(es6ClassTest8.ts, 27, 14)) +>forward : Symbol(Camera.forward, Decl(es6ClassTest8.ts, 27, 14)) >Vector : Symbol(Vector, Decl(es6ClassTest8.ts, 10, 1)) public right: Vector; ->right : Symbol(right, Decl(es6ClassTest8.ts, 28, 27)) +>right : Symbol(Camera.right, Decl(es6ClassTest8.ts, 28, 27)) >Vector : Symbol(Vector, Decl(es6ClassTest8.ts, 10, 1)) public up: Vector; ->up : Symbol(up, Decl(es6ClassTest8.ts, 29, 25)) +>up : Symbol(Camera.up, Decl(es6ClassTest8.ts, 29, 25)) >Vector : Symbol(Vector, Decl(es6ClassTest8.ts, 10, 1)) constructor(public pos: Vector, lookAt: Vector) { ->pos : Symbol(pos, Decl(es6ClassTest8.ts, 31, 16)) +>pos : Symbol(Camera.pos, Decl(es6ClassTest8.ts, 31, 16)) >Vector : Symbol(Vector, Decl(es6ClassTest8.ts, 10, 1)) >lookAt : Symbol(lookAt, Decl(es6ClassTest8.ts, 31, 35)) >Vector : Symbol(Vector, Decl(es6ClassTest8.ts, 10, 1)) @@ -103,9 +103,9 @@ class Camera { >Vector : Symbol(Vector, Decl(es6ClassTest8.ts, 10, 1)) this.forward = Vector.norm(Vector.minus(lookAt,this.pos)); ->this.forward : Symbol(forward, Decl(es6ClassTest8.ts, 27, 14)) +>this.forward : Symbol(Camera.forward, Decl(es6ClassTest8.ts, 27, 14)) >this : Symbol(Camera, Decl(es6ClassTest8.ts, 25, 1)) ->forward : Symbol(forward, Decl(es6ClassTest8.ts, 27, 14)) +>forward : Symbol(Camera.forward, Decl(es6ClassTest8.ts, 27, 14)) >Vector.norm : Symbol(Vector.norm, Decl(es6ClassTest8.ts, 12, 14)) >Vector : Symbol(Vector, Decl(es6ClassTest8.ts, 10, 1)) >norm : Symbol(Vector.norm, Decl(es6ClassTest8.ts, 12, 14)) @@ -113,14 +113,14 @@ class Camera { >Vector : Symbol(Vector, Decl(es6ClassTest8.ts, 10, 1)) >minus : Symbol(Vector.minus, Decl(es6ClassTest8.ts, 13, 47)) >lookAt : Symbol(lookAt, Decl(es6ClassTest8.ts, 31, 35)) ->this.pos : Symbol(pos, Decl(es6ClassTest8.ts, 31, 16)) +>this.pos : Symbol(Camera.pos, Decl(es6ClassTest8.ts, 31, 16)) >this : Symbol(Camera, Decl(es6ClassTest8.ts, 25, 1)) ->pos : Symbol(pos, Decl(es6ClassTest8.ts, 31, 16)) +>pos : Symbol(Camera.pos, Decl(es6ClassTest8.ts, 31, 16)) this.right = Vector.times(down, Vector.norm(Vector.cross(this.forward, down))); ->this.right : Symbol(right, Decl(es6ClassTest8.ts, 28, 27)) +>this.right : Symbol(Camera.right, Decl(es6ClassTest8.ts, 28, 27)) >this : Symbol(Camera, Decl(es6ClassTest8.ts, 25, 1)) ->right : Symbol(right, Decl(es6ClassTest8.ts, 28, 27)) +>right : Symbol(Camera.right, Decl(es6ClassTest8.ts, 28, 27)) >Vector.times : Symbol(Vector.times, Decl(es6ClassTest8.ts, 14, 60)) >Vector : Symbol(Vector, Decl(es6ClassTest8.ts, 10, 1)) >times : Symbol(Vector.times, Decl(es6ClassTest8.ts, 14, 60)) @@ -131,15 +131,15 @@ class Camera { >Vector.cross : Symbol(Vector.cross, Decl(es6ClassTest8.ts, 15, 60)) >Vector : Symbol(Vector, Decl(es6ClassTest8.ts, 10, 1)) >cross : Symbol(Vector.cross, Decl(es6ClassTest8.ts, 15, 60)) ->this.forward : Symbol(forward, Decl(es6ClassTest8.ts, 27, 14)) +>this.forward : Symbol(Camera.forward, Decl(es6ClassTest8.ts, 27, 14)) >this : Symbol(Camera, Decl(es6ClassTest8.ts, 25, 1)) ->forward : Symbol(forward, Decl(es6ClassTest8.ts, 27, 14)) +>forward : Symbol(Camera.forward, Decl(es6ClassTest8.ts, 27, 14)) >down : Symbol(down, Decl(es6ClassTest8.ts, 32, 11)) this.up = Vector.times(down, Vector.norm(Vector.cross(this.forward, this.right))); ->this.up : Symbol(up, Decl(es6ClassTest8.ts, 29, 25)) +>this.up : Symbol(Camera.up, Decl(es6ClassTest8.ts, 29, 25)) >this : Symbol(Camera, Decl(es6ClassTest8.ts, 25, 1)) ->up : Symbol(up, Decl(es6ClassTest8.ts, 29, 25)) +>up : Symbol(Camera.up, Decl(es6ClassTest8.ts, 29, 25)) >Vector.times : Symbol(Vector.times, Decl(es6ClassTest8.ts, 14, 60)) >Vector : Symbol(Vector, Decl(es6ClassTest8.ts, 10, 1)) >times : Symbol(Vector.times, Decl(es6ClassTest8.ts, 14, 60)) @@ -150,12 +150,12 @@ class Camera { >Vector.cross : Symbol(Vector.cross, Decl(es6ClassTest8.ts, 15, 60)) >Vector : Symbol(Vector, Decl(es6ClassTest8.ts, 10, 1)) >cross : Symbol(Vector.cross, Decl(es6ClassTest8.ts, 15, 60)) ->this.forward : Symbol(forward, Decl(es6ClassTest8.ts, 27, 14)) +>this.forward : Symbol(Camera.forward, Decl(es6ClassTest8.ts, 27, 14)) >this : Symbol(Camera, Decl(es6ClassTest8.ts, 25, 1)) ->forward : Symbol(forward, Decl(es6ClassTest8.ts, 27, 14)) ->this.right : Symbol(right, Decl(es6ClassTest8.ts, 28, 27)) +>forward : Symbol(Camera.forward, Decl(es6ClassTest8.ts, 27, 14)) +>this.right : Symbol(Camera.right, Decl(es6ClassTest8.ts, 28, 27)) >this : Symbol(Camera, Decl(es6ClassTest8.ts, 25, 1)) ->right : Symbol(right, Decl(es6ClassTest8.ts, 28, 27)) +>right : Symbol(Camera.right, Decl(es6ClassTest8.ts, 28, 27)) } } diff --git a/tests/baselines/reference/es6ExportDefaultClassDeclaration.symbols b/tests/baselines/reference/es6ExportDefaultClassDeclaration.symbols index 02aa5575190..3e5ce34c7d7 100644 --- a/tests/baselines/reference/es6ExportDefaultClassDeclaration.symbols +++ b/tests/baselines/reference/es6ExportDefaultClassDeclaration.symbols @@ -4,6 +4,6 @@ export default class C { >C : Symbol(C, Decl(es6ExportDefaultClassDeclaration.ts, 0, 0)) method() { } ->method : Symbol(method, Decl(es6ExportDefaultClassDeclaration.ts, 1, 24)) +>method : Symbol(C.method, Decl(es6ExportDefaultClassDeclaration.ts, 1, 24)) } diff --git a/tests/baselines/reference/es6ExportDefaultClassDeclaration2.symbols b/tests/baselines/reference/es6ExportDefaultClassDeclaration2.symbols index 168c402d3e4..a52c754c581 100644 --- a/tests/baselines/reference/es6ExportDefaultClassDeclaration2.symbols +++ b/tests/baselines/reference/es6ExportDefaultClassDeclaration2.symbols @@ -2,6 +2,6 @@ export default class { method() { } ->method : Symbol(method, Decl(es6ExportDefaultClassDeclaration2.ts, 1, 22)) +>method : Symbol(default.method, Decl(es6ExportDefaultClassDeclaration2.ts, 1, 22)) } diff --git a/tests/baselines/reference/es6ImportNamedImportWithTypesAndValues.symbols b/tests/baselines/reference/es6ImportNamedImportWithTypesAndValues.symbols index cff0406b220..5abd8c88867 100644 --- a/tests/baselines/reference/es6ImportNamedImportWithTypesAndValues.symbols +++ b/tests/baselines/reference/es6ImportNamedImportWithTypesAndValues.symbols @@ -4,27 +4,27 @@ export interface I { >I : Symbol(I, Decl(server.ts, 0, 0)) prop: string; ->prop : Symbol(prop, Decl(server.ts, 1, 20)) +>prop : Symbol(I.prop, Decl(server.ts, 1, 20)) } export interface I2 { >I2 : Symbol(I2, Decl(server.ts, 3, 1)) prop2: string; ->prop2 : Symbol(prop2, Decl(server.ts, 4, 21)) +>prop2 : Symbol(I2.prop2, Decl(server.ts, 4, 21)) } export class C implements I { >C : Symbol(C, Decl(server.ts, 6, 1)) >I : Symbol(I, Decl(server.ts, 0, 0)) prop = "hello"; ->prop : Symbol(prop, Decl(server.ts, 7, 29)) +>prop : Symbol(C.prop, Decl(server.ts, 7, 29)) } export class C2 implements I2 { >C2 : Symbol(C2, Decl(server.ts, 9, 1)) >I2 : Symbol(I2, Decl(server.ts, 3, 1)) prop2 = "world"; ->prop2 : Symbol(prop2, Decl(server.ts, 10, 31)) +>prop2 : Symbol(C2.prop2, Decl(server.ts, 10, 31)) } === tests/cases/compiler/client.ts === diff --git a/tests/baselines/reference/es6Module.symbols b/tests/baselines/reference/es6Module.symbols index 8887adfff37..6849e2904da 100644 --- a/tests/baselines/reference/es6Module.symbols +++ b/tests/baselines/reference/es6Module.symbols @@ -7,7 +7,7 @@ export class A } public B() ->B : Symbol(B, Decl(es6Module.ts, 4, 5)) +>B : Symbol(A.B, Decl(es6Module.ts, 4, 5)) { return 42; } diff --git a/tests/baselines/reference/es6ModuleClassDeclaration.symbols b/tests/baselines/reference/es6ModuleClassDeclaration.symbols index 5ad84b94f0a..424a7245587 100644 --- a/tests/baselines/reference/es6ModuleClassDeclaration.symbols +++ b/tests/baselines/reference/es6ModuleClassDeclaration.symbols @@ -5,10 +5,10 @@ export class c { constructor() { } private x = 10; ->x : Symbol(x, Decl(es6ModuleClassDeclaration.ts, 2, 5)) +>x : Symbol(c.x, Decl(es6ModuleClassDeclaration.ts, 2, 5)) public y = 30; ->y : Symbol(y, Decl(es6ModuleClassDeclaration.ts, 3, 19)) +>y : Symbol(c.y, Decl(es6ModuleClassDeclaration.ts, 3, 19)) static k = 20; >k : Symbol(c.k, Decl(es6ModuleClassDeclaration.ts, 4, 18)) @@ -17,10 +17,10 @@ export class c { >l : Symbol(c.l, Decl(es6ModuleClassDeclaration.ts, 5, 18)) private method1() { ->method1 : Symbol(method1, Decl(es6ModuleClassDeclaration.ts, 6, 26)) +>method1 : Symbol(c.method1, Decl(es6ModuleClassDeclaration.ts, 6, 26)) } public method2() { ->method2 : Symbol(method2, Decl(es6ModuleClassDeclaration.ts, 8, 5)) +>method2 : Symbol(c.method2, Decl(es6ModuleClassDeclaration.ts, 8, 5)) } static method3() { >method3 : Symbol(c.method3, Decl(es6ModuleClassDeclaration.ts, 10, 5)) @@ -35,10 +35,10 @@ class c2 { constructor() { } private x = 10; ->x : Symbol(x, Decl(es6ModuleClassDeclaration.ts, 18, 5)) +>x : Symbol(c2.x, Decl(es6ModuleClassDeclaration.ts, 18, 5)) public y = 30; ->y : Symbol(y, Decl(es6ModuleClassDeclaration.ts, 19, 19)) +>y : Symbol(c2.y, Decl(es6ModuleClassDeclaration.ts, 19, 19)) static k = 20; >k : Symbol(c2.k, Decl(es6ModuleClassDeclaration.ts, 20, 18)) @@ -47,10 +47,10 @@ class c2 { >l : Symbol(c2.l, Decl(es6ModuleClassDeclaration.ts, 21, 18)) private method1() { ->method1 : Symbol(method1, Decl(es6ModuleClassDeclaration.ts, 22, 26)) +>method1 : Symbol(c2.method1, Decl(es6ModuleClassDeclaration.ts, 22, 26)) } public method2() { ->method2 : Symbol(method2, Decl(es6ModuleClassDeclaration.ts, 24, 5)) +>method2 : Symbol(c2.method2, Decl(es6ModuleClassDeclaration.ts, 24, 5)) } static method3() { >method3 : Symbol(c2.method3, Decl(es6ModuleClassDeclaration.ts, 26, 5)) @@ -74,10 +74,10 @@ export module m1 { constructor() { } private x = 10; ->x : Symbol(x, Decl(es6ModuleClassDeclaration.ts, 38, 9)) +>x : Symbol(c3.x, Decl(es6ModuleClassDeclaration.ts, 38, 9)) public y = 30; ->y : Symbol(y, Decl(es6ModuleClassDeclaration.ts, 39, 23)) +>y : Symbol(c3.y, Decl(es6ModuleClassDeclaration.ts, 39, 23)) static k = 20; >k : Symbol(c3.k, Decl(es6ModuleClassDeclaration.ts, 40, 22)) @@ -86,10 +86,10 @@ export module m1 { >l : Symbol(c3.l, Decl(es6ModuleClassDeclaration.ts, 41, 22)) private method1() { ->method1 : Symbol(method1, Decl(es6ModuleClassDeclaration.ts, 42, 30)) +>method1 : Symbol(c3.method1, Decl(es6ModuleClassDeclaration.ts, 42, 30)) } public method2() { ->method2 : Symbol(method2, Decl(es6ModuleClassDeclaration.ts, 44, 9)) +>method2 : Symbol(c3.method2, Decl(es6ModuleClassDeclaration.ts, 44, 9)) } static method3() { >method3 : Symbol(c3.method3, Decl(es6ModuleClassDeclaration.ts, 46, 9)) @@ -104,10 +104,10 @@ export module m1 { constructor() { } private x = 10; ->x : Symbol(x, Decl(es6ModuleClassDeclaration.ts, 54, 9)) +>x : Symbol(c4.x, Decl(es6ModuleClassDeclaration.ts, 54, 9)) public y = 30; ->y : Symbol(y, Decl(es6ModuleClassDeclaration.ts, 55, 23)) +>y : Symbol(c4.y, Decl(es6ModuleClassDeclaration.ts, 55, 23)) static k = 20; >k : Symbol(c4.k, Decl(es6ModuleClassDeclaration.ts, 56, 22)) @@ -116,10 +116,10 @@ export module m1 { >l : Symbol(c4.l, Decl(es6ModuleClassDeclaration.ts, 57, 22)) private method1() { ->method1 : Symbol(method1, Decl(es6ModuleClassDeclaration.ts, 58, 30)) +>method1 : Symbol(c4.method1, Decl(es6ModuleClassDeclaration.ts, 58, 30)) } public method2() { ->method2 : Symbol(method2, Decl(es6ModuleClassDeclaration.ts, 60, 9)) +>method2 : Symbol(c4.method2, Decl(es6ModuleClassDeclaration.ts, 60, 9)) } static method3() { >method3 : Symbol(c4.method3, Decl(es6ModuleClassDeclaration.ts, 62, 9)) @@ -149,10 +149,10 @@ module m2 { constructor() { } private x = 10; ->x : Symbol(x, Decl(es6ModuleClassDeclaration.ts, 76, 9)) +>x : Symbol(c3.x, Decl(es6ModuleClassDeclaration.ts, 76, 9)) public y = 30; ->y : Symbol(y, Decl(es6ModuleClassDeclaration.ts, 77, 23)) +>y : Symbol(c3.y, Decl(es6ModuleClassDeclaration.ts, 77, 23)) static k = 20; >k : Symbol(c3.k, Decl(es6ModuleClassDeclaration.ts, 78, 22)) @@ -161,10 +161,10 @@ module m2 { >l : Symbol(c3.l, Decl(es6ModuleClassDeclaration.ts, 79, 22)) private method1() { ->method1 : Symbol(method1, Decl(es6ModuleClassDeclaration.ts, 80, 30)) +>method1 : Symbol(c3.method1, Decl(es6ModuleClassDeclaration.ts, 80, 30)) } public method2() { ->method2 : Symbol(method2, Decl(es6ModuleClassDeclaration.ts, 82, 9)) +>method2 : Symbol(c3.method2, Decl(es6ModuleClassDeclaration.ts, 82, 9)) } static method3() { >method3 : Symbol(c3.method3, Decl(es6ModuleClassDeclaration.ts, 84, 9)) @@ -179,10 +179,10 @@ module m2 { constructor() { } private x = 10; ->x : Symbol(x, Decl(es6ModuleClassDeclaration.ts, 92, 9)) +>x : Symbol(c4.x, Decl(es6ModuleClassDeclaration.ts, 92, 9)) public y = 30; ->y : Symbol(y, Decl(es6ModuleClassDeclaration.ts, 93, 23)) +>y : Symbol(c4.y, Decl(es6ModuleClassDeclaration.ts, 93, 23)) static k = 20; >k : Symbol(c4.k, Decl(es6ModuleClassDeclaration.ts, 94, 22)) @@ -191,10 +191,10 @@ module m2 { >l : Symbol(c4.l, Decl(es6ModuleClassDeclaration.ts, 95, 22)) private method1() { ->method1 : Symbol(method1, Decl(es6ModuleClassDeclaration.ts, 96, 30)) +>method1 : Symbol(c4.method1, Decl(es6ModuleClassDeclaration.ts, 96, 30)) } public method2() { ->method2 : Symbol(method2, Decl(es6ModuleClassDeclaration.ts, 98, 9)) +>method2 : Symbol(c4.method2, Decl(es6ModuleClassDeclaration.ts, 98, 9)) } static method3() { >method3 : Symbol(c4.method3, Decl(es6ModuleClassDeclaration.ts, 100, 9)) diff --git a/tests/baselines/reference/es6ModuleWithModuleGenTargetAmd.symbols b/tests/baselines/reference/es6ModuleWithModuleGenTargetAmd.symbols index 24367cc28ad..fd566b39990 100644 --- a/tests/baselines/reference/es6ModuleWithModuleGenTargetAmd.symbols +++ b/tests/baselines/reference/es6ModuleWithModuleGenTargetAmd.symbols @@ -7,7 +7,7 @@ export class A } public B() ->B : Symbol(B, Decl(es6ModuleWithModuleGenTargetAmd.ts, 4, 5)) +>B : Symbol(A.B, Decl(es6ModuleWithModuleGenTargetAmd.ts, 4, 5)) { return 42; } diff --git a/tests/baselines/reference/es6ModuleWithModuleGenTargetCommonjs.symbols b/tests/baselines/reference/es6ModuleWithModuleGenTargetCommonjs.symbols index 4a84c00c48f..a143a75f988 100644 --- a/tests/baselines/reference/es6ModuleWithModuleGenTargetCommonjs.symbols +++ b/tests/baselines/reference/es6ModuleWithModuleGenTargetCommonjs.symbols @@ -7,7 +7,7 @@ export class A } public B() ->B : Symbol(B, Decl(es6ModuleWithModuleGenTargetCommonjs.ts, 4, 5)) +>B : Symbol(A.B, Decl(es6ModuleWithModuleGenTargetCommonjs.ts, 4, 5)) { return 42; } diff --git a/tests/baselines/reference/es6modulekind.symbols b/tests/baselines/reference/es6modulekind.symbols index 0b5eeb2a6fb..877199729e6 100644 --- a/tests/baselines/reference/es6modulekind.symbols +++ b/tests/baselines/reference/es6modulekind.symbols @@ -9,7 +9,7 @@ export default class A } public B() ->B : Symbol(B, Decl(es6modulekind.ts, 6, 5)) +>B : Symbol(A.B, Decl(es6modulekind.ts, 6, 5)) { return 42; } diff --git a/tests/baselines/reference/es6modulekindWithES2015Target.symbols b/tests/baselines/reference/es6modulekindWithES2015Target.symbols index 98b91a0411b..2b6f8a03aa7 100644 --- a/tests/baselines/reference/es6modulekindWithES2015Target.symbols +++ b/tests/baselines/reference/es6modulekindWithES2015Target.symbols @@ -9,7 +9,7 @@ export default class A } public B() ->B : Symbol(B, Decl(es6modulekindWithES2015Target.ts, 6, 5)) +>B : Symbol(A.B, Decl(es6modulekindWithES2015Target.ts, 6, 5)) { return 42; } diff --git a/tests/baselines/reference/escapedIdentifiers.symbols b/tests/baselines/reference/escapedIdentifiers.symbols index a99e067b898..735dede00e2 100644 --- a/tests/baselines/reference/escapedIdentifiers.symbols +++ b/tests/baselines/reference/escapedIdentifiers.symbols @@ -70,13 +70,13 @@ class classType1 { >classType1 : Symbol(classType1, Decl(escapedIdentifiers.ts, 32, 26)) public foo1: number; ->foo1 : Symbol(foo1, Decl(escapedIdentifiers.ts, 36, 18)) +>foo1 : Symbol(classType1.foo1, Decl(escapedIdentifiers.ts, 36, 18)) } class classType\u0032 { >classType\u0032 : Symbol(classType\u0032, Decl(escapedIdentifiers.ts, 38, 1)) public foo2: number; ->foo2 : Symbol(foo2, Decl(escapedIdentifiers.ts, 39, 23)) +>foo2 : Symbol(classType\u0032.foo2, Decl(escapedIdentifiers.ts, 39, 23)) } var classType1Object1 = new classType1(); @@ -120,13 +120,13 @@ interface interfaceType1 { >interfaceType1 : Symbol(interfaceType1, Decl(escapedIdentifiers.ts, 50, 27)) bar1: number; ->bar1 : Symbol(bar1, Decl(escapedIdentifiers.ts, 53, 26)) +>bar1 : Symbol(interfaceType1.bar1, Decl(escapedIdentifiers.ts, 53, 26)) } interface interfaceType\u0032 { >interfaceType\u0032 : Symbol(interfaceType\u0032, Decl(escapedIdentifiers.ts, 55, 1)) bar2: number; ->bar2 : Symbol(bar2, Decl(escapedIdentifiers.ts, 56, 31)) +>bar2 : Symbol(interfaceType\u0032.bar2, Decl(escapedIdentifiers.ts, 56, 31)) } var interfaceType1Object1 = { bar1: 0 }; @@ -175,7 +175,7 @@ class testClass { >testClass : Symbol(testClass, Decl(escapedIdentifiers.ts, 67, 31)) public func(arg1: number, arg\u0032: string, arg\u0033: boolean, arg4: number) { ->func : Symbol(func, Decl(escapedIdentifiers.ts, 71, 17)) +>func : Symbol(testClass.func, Decl(escapedIdentifiers.ts, 71, 17)) >arg1 : Symbol(arg1, Decl(escapedIdentifiers.ts, 72, 16)) >arg\u0032 : Symbol(arg\u0032, Decl(escapedIdentifiers.ts, 72, 29)) >arg\u0033 : Symbol(arg\u0033, Decl(escapedIdentifiers.ts, 72, 48)) @@ -200,10 +200,10 @@ class constructorTestClass { >constructorTestClass : Symbol(constructorTestClass, Decl(escapedIdentifiers.ts, 78, 1)) constructor (public arg1: number,public arg\u0032: string,public arg\u0033: boolean,public arg4: number) { ->arg1 : Symbol(arg1, Decl(escapedIdentifiers.ts, 82, 17)) ->arg\u0032 : Symbol(arg\u0032, Decl(escapedIdentifiers.ts, 82, 37)) ->arg\u0033 : Symbol(arg\u0033, Decl(escapedIdentifiers.ts, 82, 62)) ->arg4 : Symbol(arg4, Decl(escapedIdentifiers.ts, 82, 88)) +>arg1 : Symbol(constructorTestClass.arg1, Decl(escapedIdentifiers.ts, 82, 17)) +>arg\u0032 : Symbol(constructorTestClass.arg\u0032, Decl(escapedIdentifiers.ts, 82, 37)) +>arg\u0033 : Symbol(constructorTestClass.arg\u0033, Decl(escapedIdentifiers.ts, 82, 62)) +>arg4 : Symbol(constructorTestClass.arg4, Decl(escapedIdentifiers.ts, 82, 88)) } } var constructorTestObject = new constructorTestClass(1, 'string', true, 2); diff --git a/tests/baselines/reference/everyTypeAssignableToAny.symbols b/tests/baselines/reference/everyTypeAssignableToAny.symbols index be88c481ece..caf8c5e47d6 100644 --- a/tests/baselines/reference/everyTypeAssignableToAny.symbols +++ b/tests/baselines/reference/everyTypeAssignableToAny.symbols @@ -6,7 +6,7 @@ class C { >C : Symbol(C, Decl(everyTypeAssignableToAny.ts, 0, 11)) foo: string; ->foo : Symbol(foo, Decl(everyTypeAssignableToAny.ts, 2, 9)) +>foo : Symbol(C.foo, Decl(everyTypeAssignableToAny.ts, 2, 9)) } var ac: C; >ac : Symbol(ac, Decl(everyTypeAssignableToAny.ts, 5, 3)) @@ -16,7 +16,7 @@ interface I { >I : Symbol(I, Decl(everyTypeAssignableToAny.ts, 5, 10)) foo: string; ->foo : Symbol(foo, Decl(everyTypeAssignableToAny.ts, 6, 13)) +>foo : Symbol(I.foo, Decl(everyTypeAssignableToAny.ts, 6, 13)) } var ai: I; >ai : Symbol(ai, Decl(everyTypeAssignableToAny.ts, 9, 3)) @@ -41,7 +41,7 @@ var d: boolean; var e: Date; >e : Symbol(e, Decl(everyTypeAssignableToAny.ts, 17, 3)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) var f: any; >f : Symbol(f, Decl(everyTypeAssignableToAny.ts, 18, 3)) @@ -83,11 +83,11 @@ var o: (x: T) => T; var p: Number; >p : Symbol(p, Decl(everyTypeAssignableToAny.ts, 28, 3)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) var q: String; >q : Symbol(q, Decl(everyTypeAssignableToAny.ts, 29, 3)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) a = b; >a : Symbol(a, Decl(everyTypeAssignableToAny.ts, 0, 3)) @@ -166,7 +166,7 @@ function foo(x: T, y: U, z: V) { >T : Symbol(T, Decl(everyTypeAssignableToAny.ts, 50, 13)) >U : Symbol(U, Decl(everyTypeAssignableToAny.ts, 50, 15)) >V : Symbol(V, Decl(everyTypeAssignableToAny.ts, 50, 32)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >x : Symbol(x, Decl(everyTypeAssignableToAny.ts, 50, 49)) >T : Symbol(T, Decl(everyTypeAssignableToAny.ts, 50, 13)) >y : Symbol(y, Decl(everyTypeAssignableToAny.ts, 50, 54)) diff --git a/tests/baselines/reference/everyTypeWithAnnotationAndInitializer.symbols b/tests/baselines/reference/everyTypeWithAnnotationAndInitializer.symbols index e76b3784e8a..8667507fb51 100644 --- a/tests/baselines/reference/everyTypeWithAnnotationAndInitializer.symbols +++ b/tests/baselines/reference/everyTypeWithAnnotationAndInitializer.symbols @@ -3,7 +3,7 @@ interface I { >I : Symbol(I, Decl(everyTypeWithAnnotationAndInitializer.ts, 0, 0)) id: number; ->id : Symbol(id, Decl(everyTypeWithAnnotationAndInitializer.ts, 0, 13)) +>id : Symbol(I.id, Decl(everyTypeWithAnnotationAndInitializer.ts, 0, 13)) } class C implements I { @@ -11,7 +11,7 @@ class C implements I { >I : Symbol(I, Decl(everyTypeWithAnnotationAndInitializer.ts, 0, 0)) id: number; ->id : Symbol(id, Decl(everyTypeWithAnnotationAndInitializer.ts, 4, 22)) +>id : Symbol(C.id, Decl(everyTypeWithAnnotationAndInitializer.ts, 4, 22)) } class D{ @@ -19,16 +19,16 @@ class D{ >T : Symbol(T, Decl(everyTypeWithAnnotationAndInitializer.ts, 8, 8)) source: T; ->source : Symbol(source, Decl(everyTypeWithAnnotationAndInitializer.ts, 8, 11)) +>source : Symbol(D.source, Decl(everyTypeWithAnnotationAndInitializer.ts, 8, 11)) >T : Symbol(T, Decl(everyTypeWithAnnotationAndInitializer.ts, 8, 8)) recurse: D; ->recurse : Symbol(recurse, Decl(everyTypeWithAnnotationAndInitializer.ts, 9, 14)) +>recurse : Symbol(D.recurse, Decl(everyTypeWithAnnotationAndInitializer.ts, 9, 14)) >D : Symbol(D, Decl(everyTypeWithAnnotationAndInitializer.ts, 6, 1)) >T : Symbol(T, Decl(everyTypeWithAnnotationAndInitializer.ts, 8, 8)) wrapped: D> ->wrapped : Symbol(wrapped, Decl(everyTypeWithAnnotationAndInitializer.ts, 10, 18)) +>wrapped : Symbol(D.wrapped, Decl(everyTypeWithAnnotationAndInitializer.ts, 10, 18)) >D : Symbol(D, Decl(everyTypeWithAnnotationAndInitializer.ts, 6, 1)) >D : Symbol(D, Decl(everyTypeWithAnnotationAndInitializer.ts, 6, 1)) >T : Symbol(T, Decl(everyTypeWithAnnotationAndInitializer.ts, 8, 8)) @@ -45,7 +45,7 @@ module M { >A : Symbol(A, Decl(everyTypeWithAnnotationAndInitializer.ts, 16, 10)) name: string; ->name : Symbol(name, Decl(everyTypeWithAnnotationAndInitializer.ts, 17, 20)) +>name : Symbol(A.name, Decl(everyTypeWithAnnotationAndInitializer.ts, 17, 20)) } export function F2(x: number): string { return x.toString(); } @@ -64,8 +64,8 @@ var aString: string = 'this is a string'; var aDate: Date = new Date(12); >aDate : Symbol(aDate, Decl(everyTypeWithAnnotationAndInitializer.ts, 26, 3)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) var anObject: Object = new Object(); >anObject : Symbol(anObject, Decl(everyTypeWithAnnotationAndInitializer.ts, 27, 3)) diff --git a/tests/baselines/reference/everyTypeWithAnnotationAndInvalidInitializer.errors.txt b/tests/baselines/reference/everyTypeWithAnnotationAndInvalidInitializer.errors.txt index fc1bcaa545a..13c2058b657 100644 --- a/tests/baselines/reference/everyTypeWithAnnotationAndInvalidInitializer.errors.txt +++ b/tests/baselines/reference/everyTypeWithAnnotationAndInvalidInitializer.errors.txt @@ -16,10 +16,10 @@ tests/cases/conformance/statements/VariableStatements/everyTypeWithAnnotationAnd Type 'number' is not assignable to type 'string'. tests/cases/conformance/statements/VariableStatements/everyTypeWithAnnotationAndInvalidInitializer.ts(46,5): error TS2322: Type '(x: number) => boolean' is not assignable to type '(x: string) => number'. Types of parameters 'x' and 'x' are incompatible. - Type 'number' is not assignable to type 'string'. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/statements/VariableStatements/everyTypeWithAnnotationAndInvalidInitializer.ts(47,5): error TS2322: Type '(x: number) => boolean' is not assignable to type '(x: string) => number'. Types of parameters 'x' and 'x' are incompatible. - Type 'number' is not assignable to type 'string'. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/statements/VariableStatements/everyTypeWithAnnotationAndInvalidInitializer.ts(48,5): error TS2322: Type '(x: string) => string' is not assignable to type '(x: string) => number'. Type 'string' is not assignable to type 'number'. tests/cases/conformance/statements/VariableStatements/everyTypeWithAnnotationAndInvalidInitializer.ts(50,5): error TS2322: Type 'typeof N' is not assignable to type 'typeof M'. @@ -107,12 +107,12 @@ tests/cases/conformance/statements/VariableStatements/everyTypeWithAnnotationAnd ~~~~~~~~~ !!! error TS2322: Type '(x: number) => boolean' is not assignable to type '(x: string) => number'. !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'number' is not assignable to type 'string'. +!!! error TS2322: Type 'string' is not assignable to type 'number'. var anOtherFunction: (x: string) => number = F2; ~~~~~~~~~~~~~~~ !!! error TS2322: Type '(x: number) => boolean' is not assignable to type '(x: string) => number'. !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'number' is not assignable to type 'string'. +!!! error TS2322: Type 'string' is not assignable to type 'number'. var aLambda: typeof F = (x) => 'a string'; ~~~~~~~ !!! error TS2322: Type '(x: string) => string' is not assignable to type '(x: string) => number'. diff --git a/tests/baselines/reference/everyTypeWithInitializer.symbols b/tests/baselines/reference/everyTypeWithInitializer.symbols index 078f2e305d1..ba269fbc536 100644 --- a/tests/baselines/reference/everyTypeWithInitializer.symbols +++ b/tests/baselines/reference/everyTypeWithInitializer.symbols @@ -3,7 +3,7 @@ interface I { >I : Symbol(I, Decl(everyTypeWithInitializer.ts, 0, 0)) id: number; ->id : Symbol(id, Decl(everyTypeWithInitializer.ts, 0, 13)) +>id : Symbol(I.id, Decl(everyTypeWithInitializer.ts, 0, 13)) } class C implements I { @@ -11,7 +11,7 @@ class C implements I { >I : Symbol(I, Decl(everyTypeWithInitializer.ts, 0, 0)) id: number; ->id : Symbol(id, Decl(everyTypeWithInitializer.ts, 4, 22)) +>id : Symbol(C.id, Decl(everyTypeWithInitializer.ts, 4, 22)) } class D{ @@ -19,16 +19,16 @@ class D{ >T : Symbol(T, Decl(everyTypeWithInitializer.ts, 8, 8)) source: T; ->source : Symbol(source, Decl(everyTypeWithInitializer.ts, 8, 11)) +>source : Symbol(D.source, Decl(everyTypeWithInitializer.ts, 8, 11)) >T : Symbol(T, Decl(everyTypeWithInitializer.ts, 8, 8)) recurse: D; ->recurse : Symbol(recurse, Decl(everyTypeWithInitializer.ts, 9, 14)) +>recurse : Symbol(D.recurse, Decl(everyTypeWithInitializer.ts, 9, 14)) >D : Symbol(D, Decl(everyTypeWithInitializer.ts, 6, 1)) >T : Symbol(T, Decl(everyTypeWithInitializer.ts, 8, 8)) wrapped: D> ->wrapped : Symbol(wrapped, Decl(everyTypeWithInitializer.ts, 10, 18)) +>wrapped : Symbol(D.wrapped, Decl(everyTypeWithInitializer.ts, 10, 18)) >D : Symbol(D, Decl(everyTypeWithInitializer.ts, 6, 1)) >D : Symbol(D, Decl(everyTypeWithInitializer.ts, 6, 1)) >T : Symbol(T, Decl(everyTypeWithInitializer.ts, 8, 8)) @@ -45,7 +45,7 @@ module M { >A : Symbol(A, Decl(everyTypeWithInitializer.ts, 16, 10)) name: string; ->name : Symbol(name, Decl(everyTypeWithInitializer.ts, 17, 20)) +>name : Symbol(A.name, Decl(everyTypeWithInitializer.ts, 17, 20)) } export function F2(x: number): string { return x.toString(); } @@ -64,7 +64,7 @@ var aString = 'this is a string'; var aDate = new Date(12); >aDate : Symbol(aDate, Decl(everyTypeWithInitializer.ts, 26, 3)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) var anObject = new Object(); >anObject : Symbol(anObject, Decl(everyTypeWithInitializer.ts, 27, 3)) diff --git a/tests/baselines/reference/exportAssignClassAndModule.symbols b/tests/baselines/reference/exportAssignClassAndModule.symbols index 016e91f79a2..6f0141a82ff 100644 --- a/tests/baselines/reference/exportAssignClassAndModule.symbols +++ b/tests/baselines/reference/exportAssignClassAndModule.symbols @@ -22,7 +22,7 @@ class Foo { >Foo : Symbol(Foo, Decl(exportAssignClassAndModule_0.ts, 0, 0), Decl(exportAssignClassAndModule_0.ts, 2, 1)) x: Foo.Bar; ->x : Symbol(x, Decl(exportAssignClassAndModule_0.ts, 0, 11)) +>x : Symbol(Foo.x, Decl(exportAssignClassAndModule_0.ts, 0, 11)) >Foo : Symbol(Foo, Decl(exportAssignClassAndModule_0.ts, 0, 0), Decl(exportAssignClassAndModule_0.ts, 2, 1)) >Bar : Symbol(Foo.Bar, Decl(exportAssignClassAndModule_0.ts, 3, 12)) } diff --git a/tests/baselines/reference/exportAssignValueAndType.symbols b/tests/baselines/reference/exportAssignValueAndType.symbols index faca2c6ffd0..3d5495b4874 100644 --- a/tests/baselines/reference/exportAssignValueAndType.symbols +++ b/tests/baselines/reference/exportAssignValueAndType.symbols @@ -4,7 +4,7 @@ declare module http { export interface Server { openPort: number; } >Server : Symbol(Server, Decl(exportAssignValueAndType.ts, 0, 21)) ->openPort : Symbol(openPort, Decl(exportAssignValueAndType.ts, 1, 26)) +>openPort : Symbol(Server.openPort, Decl(exportAssignValueAndType.ts, 1, 26)) } interface server { @@ -15,8 +15,8 @@ interface server { >Server : Symbol(http.Server, Decl(exportAssignValueAndType.ts, 0, 21)) startTime: Date; ->startTime : Symbol(startTime, Decl(exportAssignValueAndType.ts, 5, 20)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>startTime : Symbol(server.startTime, Decl(exportAssignValueAndType.ts, 5, 20)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) } var x = 5; @@ -24,7 +24,7 @@ var x = 5; var server = new Date(); >server : Symbol(server, Decl(exportAssignValueAndType.ts, 2, 1), Decl(exportAssignValueAndType.ts, 10, 3)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) export = server; >server : Symbol(server, Decl(exportAssignValueAndType.ts, 2, 1), Decl(exportAssignValueAndType.ts, 10, 3)) diff --git a/tests/baselines/reference/exportAssignedTypeAsTypeAnnotation.symbols b/tests/baselines/reference/exportAssignedTypeAsTypeAnnotation.symbols index e79faf36f35..79392369c3f 100644 --- a/tests/baselines/reference/exportAssignedTypeAsTypeAnnotation.symbols +++ b/tests/baselines/reference/exportAssignedTypeAsTypeAnnotation.symbols @@ -13,10 +13,10 @@ interface x { >x : Symbol(x, Decl(exportAssignedTypeAsTypeAnnotation_0.ts, 0, 0)) (): Date; ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) foo: string; ->foo : Symbol(foo, Decl(exportAssignedTypeAsTypeAnnotation_0.ts, 2, 13)) +>foo : Symbol(x.foo, Decl(exportAssignedTypeAsTypeAnnotation_0.ts, 2, 13)) } export = x; >x : Symbol(x, Decl(exportAssignedTypeAsTypeAnnotation_0.ts, 0, 0)) diff --git a/tests/baselines/reference/exportAssignmentClass.symbols b/tests/baselines/reference/exportAssignmentClass.symbols index d0935ca8f8c..73a16572d65 100644 --- a/tests/baselines/reference/exportAssignmentClass.symbols +++ b/tests/baselines/reference/exportAssignmentClass.symbols @@ -15,7 +15,7 @@ var x = d.p; === tests/cases/compiler/exportAssignmentClass_A.ts === class C { public p = 0; } >C : Symbol(C, Decl(exportAssignmentClass_A.ts, 0, 0)) ->p : Symbol(p, Decl(exportAssignmentClass_A.ts, 0, 9)) +>p : Symbol(C.p, Decl(exportAssignmentClass_A.ts, 0, 9)) export = C; >C : Symbol(C, Decl(exportAssignmentClass_A.ts, 0, 0)) diff --git a/tests/baselines/reference/exportAssignmentGenericType.symbols b/tests/baselines/reference/exportAssignmentGenericType.symbols index ca228e7092e..7bf0ac178b5 100644 --- a/tests/baselines/reference/exportAssignmentGenericType.symbols +++ b/tests/baselines/reference/exportAssignmentGenericType.symbols @@ -18,7 +18,7 @@ class Foo{ >T : Symbol(T, Decl(foo_0.ts, 0, 10)) test: T; ->test : Symbol(test, Decl(foo_0.ts, 0, 13)) +>test : Symbol(Foo.test, Decl(foo_0.ts, 0, 13)) >T : Symbol(T, Decl(foo_0.ts, 0, 10)) } export = Foo; diff --git a/tests/baselines/reference/exportAssignmentInterface.symbols b/tests/baselines/reference/exportAssignmentInterface.symbols index 22f344a2cb9..d76c78303e8 100644 --- a/tests/baselines/reference/exportAssignmentInterface.symbols +++ b/tests/baselines/reference/exportAssignmentInterface.symbols @@ -17,7 +17,7 @@ interface A { >A : Symbol(A, Decl(exportAssignmentInterface_A.ts, 0, 0)) p1: number; ->p1 : Symbol(p1, Decl(exportAssignmentInterface_A.ts, 0, 13)) +>p1 : Symbol(A.p1, Decl(exportAssignmentInterface_A.ts, 0, 13)) } export = A; diff --git a/tests/baselines/reference/exportAssignmentMergedInterface.symbols b/tests/baselines/reference/exportAssignmentMergedInterface.symbols index a199ed4e6c5..2eb5593aa44 100644 --- a/tests/baselines/reference/exportAssignmentMergedInterface.symbols +++ b/tests/baselines/reference/exportAssignmentMergedInterface.symbols @@ -42,7 +42,7 @@ interface Foo { >a : Symbol(a, Decl(foo_0.ts, 1, 2)) b: string; ->b : Symbol(b, Decl(foo_0.ts, 1, 19)) +>b : Symbol(Foo.b, Decl(foo_0.ts, 1, 19)) } interface Foo { >Foo : Symbol(Foo, Decl(foo_0.ts, 0, 0), Decl(foo_0.ts, 3, 1)) @@ -51,10 +51,10 @@ interface Foo { >a : Symbol(a, Decl(foo_0.ts, 5, 2)) c: boolean; ->c : Symbol(c, Decl(foo_0.ts, 5, 21)) +>c : Symbol(Foo.c, Decl(foo_0.ts, 5, 21)) d: {x: number; y: number}; ->d : Symbol(d, Decl(foo_0.ts, 6, 12)) +>d : Symbol(Foo.d, Decl(foo_0.ts, 6, 12)) >x : Symbol(x, Decl(foo_0.ts, 7, 5)) >y : Symbol(y, Decl(foo_0.ts, 7, 15)) } diff --git a/tests/baselines/reference/exportAssignmentOfGenericType1.symbols b/tests/baselines/reference/exportAssignmentOfGenericType1.symbols index 8ae7dbc73a9..263d7e5f6af 100644 --- a/tests/baselines/reference/exportAssignmentOfGenericType1.symbols +++ b/tests/baselines/reference/exportAssignmentOfGenericType1.symbols @@ -24,6 +24,6 @@ export = T; class T { foo: X; } >T : Symbol(T, Decl(exportAssignmentOfGenericType1_0.ts, 0, 11)) >X : Symbol(X, Decl(exportAssignmentOfGenericType1_0.ts, 1, 8)) ->foo : Symbol(foo, Decl(exportAssignmentOfGenericType1_0.ts, 1, 12)) +>foo : Symbol(T.foo, Decl(exportAssignmentOfGenericType1_0.ts, 1, 12)) >X : Symbol(X, Decl(exportAssignmentOfGenericType1_0.ts, 1, 8)) diff --git a/tests/baselines/reference/exportAssignmentTopLevelClodule.symbols b/tests/baselines/reference/exportAssignmentTopLevelClodule.symbols index d672457f451..c024b8d51e2 100644 --- a/tests/baselines/reference/exportAssignmentTopLevelClodule.symbols +++ b/tests/baselines/reference/exportAssignmentTopLevelClodule.symbols @@ -17,7 +17,7 @@ class Foo { >Foo : Symbol(Foo, Decl(foo_0.ts, 0, 0), Decl(foo_0.ts, 2, 1)) test = "test"; ->test : Symbol(test, Decl(foo_0.ts, 0, 11)) +>test : Symbol(Foo.test, Decl(foo_0.ts, 0, 11)) } module Foo { >Foo : Symbol(Foo, Decl(foo_0.ts, 0, 0), Decl(foo_0.ts, 2, 1)) diff --git a/tests/baselines/reference/exportAssignmentWithImportStatementPrivacyError.symbols b/tests/baselines/reference/exportAssignmentWithImportStatementPrivacyError.symbols index 80a48dff3ad..30ef72d18bf 100644 --- a/tests/baselines/reference/exportAssignmentWithImportStatementPrivacyError.symbols +++ b/tests/baselines/reference/exportAssignmentWithImportStatementPrivacyError.symbols @@ -14,13 +14,13 @@ module m2 { >connectExport : Symbol(connectExport, Decl(exportAssignmentWithImportStatementPrivacyError.ts, 3, 5)) use: (mod: connectModule) => connectExport; ->use : Symbol(use, Decl(exportAssignmentWithImportStatementPrivacyError.ts, 4, 36)) +>use : Symbol(connectExport.use, Decl(exportAssignmentWithImportStatementPrivacyError.ts, 4, 36)) >mod : Symbol(mod, Decl(exportAssignmentWithImportStatementPrivacyError.ts, 5, 14)) >connectModule : Symbol(connectModule, Decl(exportAssignmentWithImportStatementPrivacyError.ts, 0, 11)) >connectExport : Symbol(connectExport, Decl(exportAssignmentWithImportStatementPrivacyError.ts, 3, 5)) listen: (port: number) => void; ->listen : Symbol(listen, Decl(exportAssignmentWithImportStatementPrivacyError.ts, 5, 51)) +>listen : Symbol(connectExport.listen, Decl(exportAssignmentWithImportStatementPrivacyError.ts, 5, 51)) >port : Symbol(port, Decl(exportAssignmentWithImportStatementPrivacyError.ts, 6, 17)) } diff --git a/tests/baselines/reference/exportAssignmentWithPrivacyError.symbols b/tests/baselines/reference/exportAssignmentWithPrivacyError.symbols index f69a4e00823..35807a4edea 100644 --- a/tests/baselines/reference/exportAssignmentWithPrivacyError.symbols +++ b/tests/baselines/reference/exportAssignmentWithPrivacyError.symbols @@ -11,13 +11,13 @@ interface connectexport { >connectexport : Symbol(connectexport, Decl(exportAssignmentWithPrivacyError.ts, 2, 1)) use: (mod: connectmodule) => connectexport; ->use : Symbol(use, Decl(exportAssignmentWithPrivacyError.ts, 3, 25)) +>use : Symbol(connectexport.use, Decl(exportAssignmentWithPrivacyError.ts, 3, 25)) >mod : Symbol(mod, Decl(exportAssignmentWithPrivacyError.ts, 4, 10)) >connectmodule : Symbol(connectmodule, Decl(exportAssignmentWithPrivacyError.ts, 0, 0)) >connectexport : Symbol(connectexport, Decl(exportAssignmentWithPrivacyError.ts, 2, 1)) listen: (port: number) => void; ->listen : Symbol(listen, Decl(exportAssignmentWithPrivacyError.ts, 4, 47)) +>listen : Symbol(connectexport.listen, Decl(exportAssignmentWithPrivacyError.ts, 4, 47)) >port : Symbol(port, Decl(exportAssignmentWithPrivacyError.ts, 5, 13)) } diff --git a/tests/baselines/reference/exportCodeGen.symbols b/tests/baselines/reference/exportCodeGen.symbols index fbc70cf8324..b664704d049 100644 --- a/tests/baselines/reference/exportCodeGen.symbols +++ b/tests/baselines/reference/exportCodeGen.symbols @@ -66,11 +66,11 @@ module E { export interface I { id: number } >I : Symbol(I, Decl(exportCodeGen.ts, 35, 28)) ->id : Symbol(id, Decl(exportCodeGen.ts, 36, 24)) +>id : Symbol(I.id, Decl(exportCodeGen.ts, 36, 24)) export class C { name: string } >C : Symbol(C, Decl(exportCodeGen.ts, 36, 37)) ->name : Symbol(name, Decl(exportCodeGen.ts, 37, 20)) +>name : Symbol(C.name, Decl(exportCodeGen.ts, 37, 20)) export module M { >M : Symbol(M, Decl(exportCodeGen.ts, 37, 35)) @@ -94,11 +94,11 @@ module F { interface I { id: number } >I : Symbol(I, Decl(exportCodeGen.ts, 47, 21)) ->id : Symbol(id, Decl(exportCodeGen.ts, 48, 17)) +>id : Symbol(I.id, Decl(exportCodeGen.ts, 48, 17)) class C { name: string } >C : Symbol(C, Decl(exportCodeGen.ts, 48, 30)) ->name : Symbol(name, Decl(exportCodeGen.ts, 49, 13)) +>name : Symbol(C.name, Decl(exportCodeGen.ts, 49, 13)) module M { >M : Symbol(M, Decl(exportCodeGen.ts, 49, 28)) diff --git a/tests/baselines/reference/exportEqualNamespaces.symbols b/tests/baselines/reference/exportEqualNamespaces.symbols index 1773883c68b..0c2890b028a 100644 --- a/tests/baselines/reference/exportEqualNamespaces.symbols +++ b/tests/baselines/reference/exportEqualNamespaces.symbols @@ -15,8 +15,8 @@ interface server { >Server : Symbol(server.Server, Decl(exportEqualNamespaces.ts, 0, 23)) startTime: Date; ->startTime : Symbol(startTime, Decl(exportEqualNamespaces.ts, 5, 22)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>startTime : Symbol(server.startTime, Decl(exportEqualNamespaces.ts, 5, 22)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) } var x = 5; @@ -24,7 +24,7 @@ var x = 5; var server = new Date(); >server : Symbol(server, Decl(exportEqualNamespaces.ts, 0, 0), Decl(exportEqualNamespaces.ts, 2, 1), Decl(exportEqualNamespaces.ts, 10, 3)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) export = server; >server : Symbol(server, Decl(exportEqualNamespaces.ts, 0, 0), Decl(exportEqualNamespaces.ts, 2, 1), Decl(exportEqualNamespaces.ts, 10, 3)) diff --git a/tests/baselines/reference/exportEqualsDefaultProperty.js b/tests/baselines/reference/exportEqualsDefaultProperty.js new file mode 100644 index 00000000000..6d75ef5d95d --- /dev/null +++ b/tests/baselines/reference/exportEqualsDefaultProperty.js @@ -0,0 +1,27 @@ +//// [tests/cases/compiler/exportEqualsDefaultProperty.ts] //// + +//// [exp.ts] + +var x = { + "greeting": "hello, world", + "default": 42 +}; + +export = x + +//// [imp.ts] +import foo from "./exp"; +foo.toExponential(2); + + +//// [exp.js] +"use strict"; +var x = { + "greeting": "hello, world", + "default": 42 +}; +module.exports = x; +//// [imp.js] +"use strict"; +var exp_1 = require("./exp"); +exp_1["default"].toExponential(2); diff --git a/tests/baselines/reference/exportEqualsDefaultProperty.symbols b/tests/baselines/reference/exportEqualsDefaultProperty.symbols new file mode 100644 index 00000000000..54bbbde6956 --- /dev/null +++ b/tests/baselines/reference/exportEqualsDefaultProperty.symbols @@ -0,0 +1,21 @@ +=== tests/cases/compiler/exp.ts === + +var x = { +>x : Symbol(x, Decl(exp.ts, 1, 3)) + + "greeting": "hello, world", + "default": 42 +}; + +export = x +>x : Symbol(x, Decl(exp.ts, 1, 3)) + +=== tests/cases/compiler/imp.ts === +import foo from "./exp"; +>foo : Symbol(foo, Decl(imp.ts, 0, 6)) + +foo.toExponential(2); +>foo.toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --)) +>foo : Symbol(foo, Decl(imp.ts, 0, 6)) +>toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --)) + diff --git a/tests/baselines/reference/exportEqualsDefaultProperty.types b/tests/baselines/reference/exportEqualsDefaultProperty.types new file mode 100644 index 00000000000..31a6c8052f9 --- /dev/null +++ b/tests/baselines/reference/exportEqualsDefaultProperty.types @@ -0,0 +1,28 @@ +=== tests/cases/compiler/exp.ts === + +var x = { +>x : { "greeting": string; "default": number; } +>{ "greeting": "hello, world", "default": 42} : { "greeting": string; "default": number; } + + "greeting": "hello, world", +>"hello, world" : string + + "default": 42 +>42 : number + +}; + +export = x +>x : { "greeting": string; "default": number; } + +=== tests/cases/compiler/imp.ts === +import foo from "./exp"; +>foo : number + +foo.toExponential(2); +>foo.toExponential(2) : string +>foo.toExponential : (fractionDigits?: number) => string +>foo : number +>toExponential : (fractionDigits?: number) => string +>2 : number + diff --git a/tests/baselines/reference/exportImport.symbols b/tests/baselines/reference/exportImport.symbols index 02132338834..9f76955b9e6 100644 --- a/tests/baselines/reference/exportImport.symbols +++ b/tests/baselines/reference/exportImport.symbols @@ -19,7 +19,7 @@ export = Widget1 class Widget1 { name = 'one'; } >Widget1 : Symbol(Widget1, Decl(w1.ts, 1, 16)) ->name : Symbol(name, Decl(w1.ts, 2, 15)) +>name : Symbol(Widget1.name, Decl(w1.ts, 2, 15)) === tests/cases/compiler/exporter.ts === export import w = require('./w1'); diff --git a/tests/baselines/reference/exportImportAlias.symbols b/tests/baselines/reference/exportImportAlias.symbols index 131f53919ab..0f74969e591 100644 --- a/tests/baselines/reference/exportImportAlias.symbols +++ b/tests/baselines/reference/exportImportAlias.symbols @@ -11,8 +11,8 @@ module A { >Point : Symbol(Point, Decl(exportImportAlias.ts, 4, 32)) constructor(public x: number, public y: number) { } ->x : Symbol(x, Decl(exportImportAlias.ts, 6, 20)) ->y : Symbol(y, Decl(exportImportAlias.ts, 6, 37)) +>x : Symbol(Point.x, Decl(exportImportAlias.ts, 6, 20)) +>y : Symbol(Point.y, Decl(exportImportAlias.ts, 6, 37)) } export module B { >B : Symbol(B, Decl(exportImportAlias.ts, 7, 5)) @@ -21,7 +21,7 @@ module A { >Id : Symbol(Id, Decl(exportImportAlias.ts, 8, 21)) name: string; ->name : Symbol(name, Decl(exportImportAlias.ts, 9, 29)) +>name : Symbol(Id.name, Decl(exportImportAlias.ts, 9, 29)) } } } @@ -79,8 +79,8 @@ module X { >Point : Symbol(Point, Decl(exportImportAlias.ts, 29, 21)) constructor(public x: number, public y: number) { } ->x : Symbol(x, Decl(exportImportAlias.ts, 31, 24)) ->y : Symbol(y, Decl(exportImportAlias.ts, 31, 41)) +>x : Symbol(Point.x, Decl(exportImportAlias.ts, 31, 24)) +>y : Symbol(Point.y, Decl(exportImportAlias.ts, 31, 41)) } } } @@ -118,7 +118,7 @@ module K { >L : Symbol(L, Decl(exportImportAlias.ts, 45, 10), Decl(exportImportAlias.ts, 48, 5)) constructor(public name: string) { } ->name : Symbol(name, Decl(exportImportAlias.ts, 47, 20)) +>name : Symbol(L.name, Decl(exportImportAlias.ts, 47, 20)) } export module L { @@ -131,10 +131,10 @@ module K { >Point : Symbol(Point, Decl(exportImportAlias.ts, 51, 26)) x: number; ->x : Symbol(x, Decl(exportImportAlias.ts, 52, 32)) +>x : Symbol(Point.x, Decl(exportImportAlias.ts, 52, 32)) y: number; ->y : Symbol(y, Decl(exportImportAlias.ts, 53, 22)) +>y : Symbol(Point.y, Decl(exportImportAlias.ts, 53, 22)) } } } diff --git a/tests/baselines/reference/exportImportAndClodule.symbols b/tests/baselines/reference/exportImportAndClodule.symbols index 23995243bf9..1c6cbc6b784 100644 --- a/tests/baselines/reference/exportImportAndClodule.symbols +++ b/tests/baselines/reference/exportImportAndClodule.symbols @@ -6,7 +6,7 @@ module K { >L : Symbol(L, Decl(exportImportAndClodule.ts, 0, 10), Decl(exportImportAndClodule.ts, 3, 5)) constructor(public name: string) { } ->name : Symbol(name, Decl(exportImportAndClodule.ts, 2, 20)) +>name : Symbol(L.name, Decl(exportImportAndClodule.ts, 2, 20)) } export module L { >L : Symbol(L, Decl(exportImportAndClodule.ts, 0, 10), Decl(exportImportAndClodule.ts, 3, 5)) @@ -18,10 +18,10 @@ module K { >Point : Symbol(Point, Decl(exportImportAndClodule.ts, 5, 26)) x: number; ->x : Symbol(x, Decl(exportImportAndClodule.ts, 6, 32)) +>x : Symbol(Point.x, Decl(exportImportAndClodule.ts, 6, 32)) y: number; ->y : Symbol(y, Decl(exportImportAndClodule.ts, 7, 22)) +>y : Symbol(Point.y, Decl(exportImportAndClodule.ts, 7, 22)) } } } diff --git a/tests/baselines/reference/exportImportNonInstantiatedModule.symbols b/tests/baselines/reference/exportImportNonInstantiatedModule.symbols index 6e044368bfb..1556427e09e 100644 --- a/tests/baselines/reference/exportImportNonInstantiatedModule.symbols +++ b/tests/baselines/reference/exportImportNonInstantiatedModule.symbols @@ -4,7 +4,7 @@ module A { export interface I { x: number } >I : Symbol(I, Decl(exportImportNonInstantiatedModule.ts, 0, 10)) ->x : Symbol(x, Decl(exportImportNonInstantiatedModule.ts, 1, 24)) +>x : Symbol(I.x, Decl(exportImportNonInstantiatedModule.ts, 1, 24)) } module B { diff --git a/tests/baselines/reference/exportImportNonInstantiatedModule2.symbols b/tests/baselines/reference/exportImportNonInstantiatedModule2.symbols index 02ccf97b161..148fd03b828 100644 --- a/tests/baselines/reference/exportImportNonInstantiatedModule2.symbols +++ b/tests/baselines/reference/exportImportNonInstantiatedModule2.symbols @@ -17,7 +17,7 @@ export = Widget1 interface Widget1 { name: string; } >Widget1 : Symbol(Widget1, Decl(w1.ts, 1, 16)) ->name : Symbol(name, Decl(w1.ts, 2, 19)) +>name : Symbol(Widget1.name, Decl(w1.ts, 2, 19)) === tests/cases/compiler/exporter.ts === export import w = require('./w1'); diff --git a/tests/baselines/reference/exportNonVisibleType.symbols b/tests/baselines/reference/exportNonVisibleType.symbols index 35526a8db8c..6d08b3cf447 100644 --- a/tests/baselines/reference/exportNonVisibleType.symbols +++ b/tests/baselines/reference/exportNonVisibleType.symbols @@ -3,10 +3,10 @@ interface I1 { >I1 : Symbol(I1, Decl(foo1.ts, 0, 0)) a: string; ->a : Symbol(a, Decl(foo1.ts, 0, 14)) +>a : Symbol(I1.a, Decl(foo1.ts, 0, 14)) b: number; ->b : Symbol(b, Decl(foo1.ts, 1, 11)) +>b : Symbol(I1.b, Decl(foo1.ts, 1, 11)) } var x: I1 = {a: "test", b: 42}; @@ -24,17 +24,17 @@ interface I1 { >I1 : Symbol(I1, Decl(foo2.ts, 0, 0)) a: string; ->a : Symbol(a, Decl(foo2.ts, 0, 14)) +>a : Symbol(I1.a, Decl(foo2.ts, 0, 14)) b: number; ->b : Symbol(b, Decl(foo2.ts, 1, 11)) +>b : Symbol(I1.b, Decl(foo2.ts, 1, 11)) } class C1 { >C1 : Symbol(C1, Decl(foo2.ts, 3, 1)) m1: I1; ->m1 : Symbol(m1, Decl(foo2.ts, 5, 10)) +>m1 : Symbol(C1.m1, Decl(foo2.ts, 5, 10)) >I1 : Symbol(I1, Decl(foo2.ts, 0, 0)) } @@ -46,17 +46,17 @@ interface I1 { >I1 : Symbol(I1, Decl(foo3.ts, 0, 0)) a: string; ->a : Symbol(a, Decl(foo3.ts, 0, 14)) +>a : Symbol(I1.a, Decl(foo3.ts, 0, 14)) b: number; ->b : Symbol(b, Decl(foo3.ts, 1, 11)) +>b : Symbol(I1.b, Decl(foo3.ts, 1, 11)) } class C1 { >C1 : Symbol(C1, Decl(foo3.ts, 3, 1)) private m1: I1; ->m1 : Symbol(m1, Decl(foo3.ts, 5, 10)) +>m1 : Symbol(C1.m1, Decl(foo3.ts, 5, 10)) >I1 : Symbol(I1, Decl(foo3.ts, 0, 0)) } diff --git a/tests/baselines/reference/exportPrivateType.symbols b/tests/baselines/reference/exportPrivateType.symbols index ecb71869b39..a955870e99d 100644 --- a/tests/baselines/reference/exportPrivateType.symbols +++ b/tests/baselines/reference/exportPrivateType.symbols @@ -6,10 +6,10 @@ module foo { >C1 : Symbol(C1, Decl(exportPrivateType.ts, 0, 12)) x: string; ->x : Symbol(x, Decl(exportPrivateType.ts, 1, 14)) +>x : Symbol(C1.x, Decl(exportPrivateType.ts, 1, 14)) y: C1; ->y : Symbol(y, Decl(exportPrivateType.ts, 2, 18)) +>y : Symbol(C1.y, Decl(exportPrivateType.ts, 2, 18)) >C1 : Symbol(C1, Decl(exportPrivateType.ts, 0, 12)) } @@ -17,7 +17,7 @@ module foo { >C2 : Symbol(C2, Decl(exportPrivateType.ts, 4, 5)) test() { return true; } ->test : Symbol(test, Decl(exportPrivateType.ts, 6, 14)) +>test : Symbol(C2.test, Decl(exportPrivateType.ts, 6, 14)) } interface I1 { @@ -37,10 +37,10 @@ module foo { >I2 : Symbol(I2, Decl(exportPrivateType.ts, 13, 5)) x: string; ->x : Symbol(x, Decl(exportPrivateType.ts, 15, 18)) +>x : Symbol(I2.x, Decl(exportPrivateType.ts, 15, 18)) y: number; ->y : Symbol(y, Decl(exportPrivateType.ts, 16, 18)) +>y : Symbol(I2.y, Decl(exportPrivateType.ts, 16, 18)) } // None of the types are exported, so per section 10.3, should all be errors diff --git a/tests/baselines/reference/exportSpecifierForAGlobal.errors.txt b/tests/baselines/reference/exportSpecifierForAGlobal.errors.txt index 6df9c6de1ef..559b9d5fbfe 100644 --- a/tests/baselines/reference/exportSpecifierForAGlobal.errors.txt +++ b/tests/baselines/reference/exportSpecifierForAGlobal.errors.txt @@ -1,4 +1,4 @@ -tests/cases/compiler/b.ts(1,9): error TS2661: Cannot re-export name that is not defined in the module. +tests/cases/compiler/b.ts(1,9): error TS2661: Cannot export 'X'. Only local declarations can be exported from a module. ==== tests/cases/compiler/a.d.ts (0 errors) ==== @@ -8,7 +8,7 @@ tests/cases/compiler/b.ts(1,9): error TS2661: Cannot re-export name that is not ==== tests/cases/compiler/b.ts (1 errors) ==== export {X}; ~ -!!! error TS2661: Cannot re-export name that is not defined in the module. +!!! error TS2661: Cannot export 'X'. Only local declarations can be exported from a module. export function f() { var x: X; return x; diff --git a/tests/baselines/reference/exportSpecifierReferencingOuterDeclaration1.errors.txt b/tests/baselines/reference/exportSpecifierReferencingOuterDeclaration1.errors.txt index 7eb095b05f0..6ff2e71d26e 100644 --- a/tests/baselines/reference/exportSpecifierReferencingOuterDeclaration1.errors.txt +++ b/tests/baselines/reference/exportSpecifierReferencingOuterDeclaration1.errors.txt @@ -1,4 +1,4 @@ -tests/cases/compiler/exportSpecifierReferencingOuterDeclaration1.ts(3,14): error TS2661: Cannot re-export name that is not defined in the module. +tests/cases/compiler/exportSpecifierReferencingOuterDeclaration1.ts(3,14): error TS2661: Cannot export 'X'. Only local declarations can be exported from a module. ==== tests/cases/compiler/exportSpecifierReferencingOuterDeclaration1.ts (1 errors) ==== @@ -6,6 +6,6 @@ tests/cases/compiler/exportSpecifierReferencingOuterDeclaration1.ts(3,14): error declare module "m" { export { X }; ~ -!!! error TS2661: Cannot re-export name that is not defined in the module. +!!! error TS2661: Cannot export 'X'. Only local declarations can be exported from a module. export function foo(): X.bar; } \ No newline at end of file diff --git a/tests/baselines/reference/exportSpecifierReferencingOuterDeclaration2.errors.txt b/tests/baselines/reference/exportSpecifierReferencingOuterDeclaration2.errors.txt index 00118010785..83b8366d40c 100644 --- a/tests/baselines/reference/exportSpecifierReferencingOuterDeclaration2.errors.txt +++ b/tests/baselines/reference/exportSpecifierReferencingOuterDeclaration2.errors.txt @@ -1,4 +1,4 @@ -tests/cases/compiler/exportSpecifierReferencingOuterDeclaration2_B.ts(1,10): error TS2661: Cannot re-export name that is not defined in the module. +tests/cases/compiler/exportSpecifierReferencingOuterDeclaration2_B.ts(1,10): error TS2661: Cannot export 'X'. Only local declarations can be exported from a module. ==== tests/cases/compiler/exportSpecifierReferencingOuterDeclaration2_A.ts (0 errors) ==== @@ -7,5 +7,5 @@ tests/cases/compiler/exportSpecifierReferencingOuterDeclaration2_B.ts(1,10): err ==== tests/cases/compiler/exportSpecifierReferencingOuterDeclaration2_B.ts (1 errors) ==== export { X }; ~ -!!! error TS2661: Cannot re-export name that is not defined in the module. +!!! error TS2661: Cannot export 'X'. Only local declarations can be exported from a module. export declare function foo(): X.bar; \ No newline at end of file diff --git a/tests/baselines/reference/exportStarForValues.symbols b/tests/baselines/reference/exportStarForValues.symbols index 6694afecdc6..343c7b23a14 100644 --- a/tests/baselines/reference/exportStarForValues.symbols +++ b/tests/baselines/reference/exportStarForValues.symbols @@ -2,7 +2,7 @@ export interface Foo { x } >Foo : Symbol(Foo, Decl(file1.ts, 0, 0)) ->x : Symbol(x, Decl(file1.ts, 1, 22)) +>x : Symbol(Foo.x, Decl(file1.ts, 1, 22)) === tests/cases/compiler/file2.ts === export * from "file1" diff --git a/tests/baselines/reference/exportStarForValues10.symbols b/tests/baselines/reference/exportStarForValues10.symbols index 2de35864d27..d1dc20f9140 100644 --- a/tests/baselines/reference/exportStarForValues10.symbols +++ b/tests/baselines/reference/exportStarForValues10.symbols @@ -6,7 +6,7 @@ export var v = 1; === tests/cases/compiler/file1.ts === export interface Foo { x } >Foo : Symbol(Foo, Decl(file1.ts, 0, 0)) ->x : Symbol(x, Decl(file1.ts, 0, 22)) +>x : Symbol(Foo.x, Decl(file1.ts, 0, 22)) === tests/cases/compiler/file2.ts === export * from "file0"; diff --git a/tests/baselines/reference/exportStarForValues2.symbols b/tests/baselines/reference/exportStarForValues2.symbols index 0fa739f5431..fe5529b0f6d 100644 --- a/tests/baselines/reference/exportStarForValues2.symbols +++ b/tests/baselines/reference/exportStarForValues2.symbols @@ -2,7 +2,7 @@ export interface Foo { x } >Foo : Symbol(Foo, Decl(file1.ts, 0, 0)) ->x : Symbol(x, Decl(file1.ts, 1, 22)) +>x : Symbol(Foo.x, Decl(file1.ts, 1, 22)) === tests/cases/compiler/file2.ts === export * from "file1" diff --git a/tests/baselines/reference/exportStarForValues3.symbols b/tests/baselines/reference/exportStarForValues3.symbols index a79aeb36588..5a9cc5f8d52 100644 --- a/tests/baselines/reference/exportStarForValues3.symbols +++ b/tests/baselines/reference/exportStarForValues3.symbols @@ -2,12 +2,12 @@ export interface Foo { x } >Foo : Symbol(Foo, Decl(file1.ts, 0, 0)) ->x : Symbol(x, Decl(file1.ts, 1, 22)) +>x : Symbol(Foo.x, Decl(file1.ts, 1, 22)) === tests/cases/compiler/file2.ts === export interface A { x } >A : Symbol(A, Decl(file2.ts, 0, 0)) ->x : Symbol(x, Decl(file2.ts, 0, 20)) +>x : Symbol(A.x, Decl(file2.ts, 0, 20)) export * from "file1" var x = 1; @@ -16,7 +16,7 @@ var x = 1; === tests/cases/compiler/file3.ts === export interface B { x } >B : Symbol(B, Decl(file3.ts, 0, 0)) ->x : Symbol(x, Decl(file3.ts, 0, 20)) +>x : Symbol(B.x, Decl(file3.ts, 0, 20)) export * from "file1" var x = 1; @@ -25,7 +25,7 @@ var x = 1; === tests/cases/compiler/file4.ts === export interface C { x } >C : Symbol(C, Decl(file4.ts, 0, 0)) ->x : Symbol(x, Decl(file4.ts, 0, 20)) +>x : Symbol(C.x, Decl(file4.ts, 0, 20)) export * from "file2" export * from "file3" diff --git a/tests/baselines/reference/exportStarForValues4.symbols b/tests/baselines/reference/exportStarForValues4.symbols index 465d6ed3237..a6812b72952 100644 --- a/tests/baselines/reference/exportStarForValues4.symbols +++ b/tests/baselines/reference/exportStarForValues4.symbols @@ -2,12 +2,12 @@ export interface Foo { x } >Foo : Symbol(Foo, Decl(file1.ts, 0, 0)) ->x : Symbol(x, Decl(file1.ts, 1, 22)) +>x : Symbol(Foo.x, Decl(file1.ts, 1, 22)) === tests/cases/compiler/file2.ts === export interface A { x } >A : Symbol(A, Decl(file2.ts, 0, 0)) ->x : Symbol(x, Decl(file2.ts, 0, 20)) +>x : Symbol(A.x, Decl(file2.ts, 0, 20)) export * from "file1" export * from "file3" @@ -17,7 +17,7 @@ var x = 1; === tests/cases/compiler/file3.ts === export interface B { x } >B : Symbol(B, Decl(file3.ts, 0, 0)) ->x : Symbol(x, Decl(file3.ts, 0, 20)) +>x : Symbol(B.x, Decl(file3.ts, 0, 20)) export * from "file2" var x = 1; diff --git a/tests/baselines/reference/exportStarForValues5.symbols b/tests/baselines/reference/exportStarForValues5.symbols index a2950afa73f..06e6a859e23 100644 --- a/tests/baselines/reference/exportStarForValues5.symbols +++ b/tests/baselines/reference/exportStarForValues5.symbols @@ -2,7 +2,7 @@ export interface Foo { x } >Foo : Symbol(Foo, Decl(file1.ts, 0, 0)) ->x : Symbol(x, Decl(file1.ts, 1, 22)) +>x : Symbol(Foo.x, Decl(file1.ts, 1, 22)) === tests/cases/compiler/file2.ts === export * from "file1" diff --git a/tests/baselines/reference/exportStarForValues6.symbols b/tests/baselines/reference/exportStarForValues6.symbols index c57baf301dd..1eba5698be5 100644 --- a/tests/baselines/reference/exportStarForValues6.symbols +++ b/tests/baselines/reference/exportStarForValues6.symbols @@ -2,7 +2,7 @@ export interface Foo { x } >Foo : Symbol(Foo, Decl(file1.ts, 0, 0)) ->x : Symbol(x, Decl(file1.ts, 1, 22)) +>x : Symbol(Foo.x, Decl(file1.ts, 1, 22)) === tests/cases/compiler/file2.ts === export * from "file1" diff --git a/tests/baselines/reference/exportStarForValues7.symbols b/tests/baselines/reference/exportStarForValues7.symbols index b59f2890047..952b7e3eff5 100644 --- a/tests/baselines/reference/exportStarForValues7.symbols +++ b/tests/baselines/reference/exportStarForValues7.symbols @@ -2,7 +2,7 @@ export interface Foo { x } >Foo : Symbol(Foo, Decl(file1.ts, 0, 0)) ->x : Symbol(x, Decl(file1.ts, 1, 22)) +>x : Symbol(Foo.x, Decl(file1.ts, 1, 22)) === tests/cases/compiler/file2.ts === export * from "file1" diff --git a/tests/baselines/reference/exportStarForValues8.symbols b/tests/baselines/reference/exportStarForValues8.symbols index be958ecabe8..3b893dfa42b 100644 --- a/tests/baselines/reference/exportStarForValues8.symbols +++ b/tests/baselines/reference/exportStarForValues8.symbols @@ -2,12 +2,12 @@ export interface Foo { x } >Foo : Symbol(Foo, Decl(file1.ts, 0, 0)) ->x : Symbol(x, Decl(file1.ts, 1, 22)) +>x : Symbol(Foo.x, Decl(file1.ts, 1, 22)) === tests/cases/compiler/file2.ts === export interface A { x } >A : Symbol(A, Decl(file2.ts, 0, 0)) ->x : Symbol(x, Decl(file2.ts, 0, 20)) +>x : Symbol(A.x, Decl(file2.ts, 0, 20)) export * from "file1" export var x = 1; @@ -16,7 +16,7 @@ export var x = 1; === tests/cases/compiler/file3.ts === export interface B { x } >B : Symbol(B, Decl(file3.ts, 0, 0)) ->x : Symbol(x, Decl(file3.ts, 0, 20)) +>x : Symbol(B.x, Decl(file3.ts, 0, 20)) export * from "file1" export var x = 1; @@ -25,7 +25,7 @@ export var x = 1; === tests/cases/compiler/file4.ts === export interface C { x } >C : Symbol(C, Decl(file4.ts, 0, 0)) ->x : Symbol(x, Decl(file4.ts, 0, 20)) +>x : Symbol(C.x, Decl(file4.ts, 0, 20)) export * from "file2" export * from "file3" diff --git a/tests/baselines/reference/exportStarForValues9.symbols b/tests/baselines/reference/exportStarForValues9.symbols index 0684c9e7b7c..e311f661a00 100644 --- a/tests/baselines/reference/exportStarForValues9.symbols +++ b/tests/baselines/reference/exportStarForValues9.symbols @@ -2,12 +2,12 @@ export interface Foo { x } >Foo : Symbol(Foo, Decl(file1.ts, 0, 0)) ->x : Symbol(x, Decl(file1.ts, 1, 22)) +>x : Symbol(Foo.x, Decl(file1.ts, 1, 22)) === tests/cases/compiler/file2.ts === export interface A { x } >A : Symbol(A, Decl(file2.ts, 0, 0)) ->x : Symbol(x, Decl(file2.ts, 0, 20)) +>x : Symbol(A.x, Decl(file2.ts, 0, 20)) export * from "file1" export * from "file3" @@ -17,7 +17,7 @@ export var x = 1; === tests/cases/compiler/file3.ts === export interface B { x } >B : Symbol(B, Decl(file3.ts, 0, 0)) ->x : Symbol(x, Decl(file3.ts, 0, 20)) +>x : Symbol(B.x, Decl(file3.ts, 0, 20)) export * from "file2" export var x = 1; diff --git a/tests/baselines/reference/exportStarForValuesInSystem.symbols b/tests/baselines/reference/exportStarForValuesInSystem.symbols index c9ef9830c60..d4ffe0eeaa2 100644 --- a/tests/baselines/reference/exportStarForValuesInSystem.symbols +++ b/tests/baselines/reference/exportStarForValuesInSystem.symbols @@ -2,7 +2,7 @@ export interface Foo { x } >Foo : Symbol(Foo, Decl(file1.ts, 0, 0)) ->x : Symbol(x, Decl(file1.ts, 1, 22)) +>x : Symbol(Foo.x, Decl(file1.ts, 1, 22)) === tests/cases/compiler/file2.ts === export * from "file1" diff --git a/tests/baselines/reference/exportedInterfaceInaccessibleInCallbackInModule.symbols b/tests/baselines/reference/exportedInterfaceInaccessibleInCallbackInModule.symbols index 3127de7b6a2..2df8685b830 100644 --- a/tests/baselines/reference/exportedInterfaceInaccessibleInCallbackInModule.symbols +++ b/tests/baselines/reference/exportedInterfaceInaccessibleInCallbackInModule.symbols @@ -24,7 +24,7 @@ export declare class TPromise { // removing this method fixes the error squiggle..... public then(success?: (value:V)=>TPromise, error?: (err:any)=>TPromise, progress?:ProgressCallback): TPromise; ->then : Symbol(then, Decl(exportedInterfaceInaccessibleInCallbackInModule.ts, 7, 119)) +>then : Symbol(TPromise.then, Decl(exportedInterfaceInaccessibleInCallbackInModule.ts, 7, 119)) >U : Symbol(U, Decl(exportedInterfaceInaccessibleInCallbackInModule.ts, 10, 13)) >success : Symbol(success, Decl(exportedInterfaceInaccessibleInCallbackInModule.ts, 10, 16)) >value : Symbol(value, Decl(exportedInterfaceInaccessibleInCallbackInModule.ts, 10, 27)) diff --git a/tests/baselines/reference/extBaseClass1.symbols b/tests/baselines/reference/extBaseClass1.symbols index 416fa910f31..cf7781df07d 100644 --- a/tests/baselines/reference/extBaseClass1.symbols +++ b/tests/baselines/reference/extBaseClass1.symbols @@ -6,7 +6,7 @@ module M { >B : Symbol(B, Decl(extBaseClass1.ts, 0, 10)) public x=10; ->x : Symbol(x, Decl(extBaseClass1.ts, 1, 20)) +>x : Symbol(B.x, Decl(extBaseClass1.ts, 1, 20)) } export class C extends B { diff --git a/tests/baselines/reference/extendAndImplementTheSameBaseType.symbols b/tests/baselines/reference/extendAndImplementTheSameBaseType.symbols index c211fa4955b..45f25090af8 100644 --- a/tests/baselines/reference/extendAndImplementTheSameBaseType.symbols +++ b/tests/baselines/reference/extendAndImplementTheSameBaseType.symbols @@ -3,10 +3,10 @@ class C { >C : Symbol(C, Decl(extendAndImplementTheSameBaseType.ts, 0, 0)) foo: number ->foo : Symbol(foo, Decl(extendAndImplementTheSameBaseType.ts, 0, 9)) +>foo : Symbol(C.foo, Decl(extendAndImplementTheSameBaseType.ts, 0, 9)) bar() {} ->bar : Symbol(bar, Decl(extendAndImplementTheSameBaseType.ts, 1, 15)) +>bar : Symbol(C.bar, Decl(extendAndImplementTheSameBaseType.ts, 1, 15)) } class D extends C implements C { >D : Symbol(D, Decl(extendAndImplementTheSameBaseType.ts, 3, 1)) @@ -14,7 +14,7 @@ class D extends C implements C { >C : Symbol(C, Decl(extendAndImplementTheSameBaseType.ts, 0, 0)) baz() { } ->baz : Symbol(baz, Decl(extendAndImplementTheSameBaseType.ts, 4, 32)) +>baz : Symbol(D.baz, Decl(extendAndImplementTheSameBaseType.ts, 4, 32)) } var c: C; diff --git a/tests/baselines/reference/extendBaseClassBeforeItsDeclared.symbols b/tests/baselines/reference/extendBaseClassBeforeItsDeclared.symbols index 88aca935113..ab122b43c90 100644 --- a/tests/baselines/reference/extendBaseClassBeforeItsDeclared.symbols +++ b/tests/baselines/reference/extendBaseClassBeforeItsDeclared.symbols @@ -5,5 +5,5 @@ class derived extends base { } class base { constructor (public n: number) { } } >base : Symbol(base, Decl(extendBaseClassBeforeItsDeclared.ts, 0, 30)) ->n : Symbol(n, Decl(extendBaseClassBeforeItsDeclared.ts, 2, 26)) +>n : Symbol(base.n, Decl(extendBaseClassBeforeItsDeclared.ts, 2, 26)) diff --git a/tests/baselines/reference/extendBooleanInterface.symbols b/tests/baselines/reference/extendBooleanInterface.symbols index be2fb30226d..9ae4c46e3c7 100644 --- a/tests/baselines/reference/extendBooleanInterface.symbols +++ b/tests/baselines/reference/extendBooleanInterface.symbols @@ -3,10 +3,10 @@ interface Boolean { >Boolean : Symbol(Boolean, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(extendBooleanInterface.ts, 0, 0)) doStuff(): string; ->doStuff : Symbol(doStuff, Decl(extendBooleanInterface.ts, 0, 19)) +>doStuff : Symbol(Boolean.doStuff, Decl(extendBooleanInterface.ts, 0, 19)) doOtherStuff(x: T): T; ->doOtherStuff : Symbol(doOtherStuff, Decl(extendBooleanInterface.ts, 1, 22)) +>doOtherStuff : Symbol(Boolean.doOtherStuff, Decl(extendBooleanInterface.ts, 1, 22)) >T : Symbol(T, Decl(extendBooleanInterface.ts, 2, 17)) >x : Symbol(x, Decl(extendBooleanInterface.ts, 2, 20)) >T : Symbol(T, Decl(extendBooleanInterface.ts, 2, 17)) diff --git a/tests/baselines/reference/extendNonClassSymbol1.symbols b/tests/baselines/reference/extendNonClassSymbol1.symbols index 7c03ef3a97f..2b171308823 100644 --- a/tests/baselines/reference/extendNonClassSymbol1.symbols +++ b/tests/baselines/reference/extendNonClassSymbol1.symbols @@ -1,7 +1,7 @@ === tests/cases/compiler/extendNonClassSymbol1.ts === class A { foo() { } } >A : Symbol(A, Decl(extendNonClassSymbol1.ts, 0, 0)) ->foo : Symbol(foo, Decl(extendNonClassSymbol1.ts, 0, 9)) +>foo : Symbol(A.foo, Decl(extendNonClassSymbol1.ts, 0, 9)) var x = A; >x : Symbol(x, Decl(extendNonClassSymbol1.ts, 1, 3)) diff --git a/tests/baselines/reference/extendNumberInterface.symbols b/tests/baselines/reference/extendNumberInterface.symbols index 218f0f41cb2..febe4993e2a 100644 --- a/tests/baselines/reference/extendNumberInterface.symbols +++ b/tests/baselines/reference/extendNumberInterface.symbols @@ -1,12 +1,12 @@ === tests/cases/conformance/types/primitives/number/extendNumberInterface.ts === interface Number { ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(extendNumberInterface.ts, 0, 0)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(extendNumberInterface.ts, 0, 0)) doStuff(): string; ->doStuff : Symbol(doStuff, Decl(extendNumberInterface.ts, 0, 18)) +>doStuff : Symbol(Number.doStuff, Decl(extendNumberInterface.ts, 0, 18)) doOtherStuff(x:T): T; ->doOtherStuff : Symbol(doOtherStuff, Decl(extendNumberInterface.ts, 1, 22)) +>doOtherStuff : Symbol(Number.doOtherStuff, Decl(extendNumberInterface.ts, 1, 22)) >T : Symbol(T, Decl(extendNumberInterface.ts, 2, 17)) >x : Symbol(x, Decl(extendNumberInterface.ts, 2, 20)) >T : Symbol(T, Decl(extendNumberInterface.ts, 2, 17)) diff --git a/tests/baselines/reference/extendStringInterface.symbols b/tests/baselines/reference/extendStringInterface.symbols index aa20b2e2c15..67773fa30bd 100644 --- a/tests/baselines/reference/extendStringInterface.symbols +++ b/tests/baselines/reference/extendStringInterface.symbols @@ -1,12 +1,12 @@ === tests/cases/conformance/types/primitives/string/extendStringInterface.ts === interface String { ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(extendStringInterface.ts, 0, 0)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(extendStringInterface.ts, 0, 0)) doStuff(): string; ->doStuff : Symbol(doStuff, Decl(extendStringInterface.ts, 0, 18)) +>doStuff : Symbol(String.doStuff, Decl(extendStringInterface.ts, 0, 18)) doOtherStuff(x:T): T; ->doOtherStuff : Symbol(doOtherStuff, Decl(extendStringInterface.ts, 1, 22)) +>doOtherStuff : Symbol(String.doOtherStuff, Decl(extendStringInterface.ts, 1, 22)) >T : Symbol(T, Decl(extendStringInterface.ts, 2, 17)) >x : Symbol(x, Decl(extendStringInterface.ts, 2, 20)) >T : Symbol(T, Decl(extendStringInterface.ts, 2, 17)) diff --git a/tests/baselines/reference/extendedInterfaceGenericType.symbols b/tests/baselines/reference/extendedInterfaceGenericType.symbols index 47e17b1e6a1..334981bc56d 100644 --- a/tests/baselines/reference/extendedInterfaceGenericType.symbols +++ b/tests/baselines/reference/extendedInterfaceGenericType.symbols @@ -4,14 +4,14 @@ interface Alpha { >T : Symbol(T, Decl(extendedInterfaceGenericType.ts, 0, 16)) takesArgOfT(arg: T): Alpha; ->takesArgOfT : Symbol(takesArgOfT, Decl(extendedInterfaceGenericType.ts, 0, 20)) +>takesArgOfT : Symbol(Alpha.takesArgOfT, Decl(extendedInterfaceGenericType.ts, 0, 20)) >arg : Symbol(arg, Decl(extendedInterfaceGenericType.ts, 1, 16)) >T : Symbol(T, Decl(extendedInterfaceGenericType.ts, 0, 16)) >Alpha : Symbol(Alpha, Decl(extendedInterfaceGenericType.ts, 0, 0)) >T : Symbol(T, Decl(extendedInterfaceGenericType.ts, 0, 16)) makeBetaOfNumber(): Beta; ->makeBetaOfNumber : Symbol(makeBetaOfNumber, Decl(extendedInterfaceGenericType.ts, 1, 34)) +>makeBetaOfNumber : Symbol(Alpha.makeBetaOfNumber, Decl(extendedInterfaceGenericType.ts, 1, 34)) >Beta : Symbol(Beta, Decl(extendedInterfaceGenericType.ts, 3, 1)) } interface Beta extends Alpha { diff --git a/tests/baselines/reference/extendingClassFromAliasAndUsageInIndexer.symbols b/tests/baselines/reference/extendingClassFromAliasAndUsageInIndexer.symbols index 33e0c226e67..fcf5a71330a 100644 --- a/tests/baselines/reference/extendingClassFromAliasAndUsageInIndexer.symbols +++ b/tests/baselines/reference/extendingClassFromAliasAndUsageInIndexer.symbols @@ -12,7 +12,7 @@ interface IHasVisualizationModel { >IHasVisualizationModel : Symbol(IHasVisualizationModel, Decl(extendingClassFromAliasAndUsageInIndexer_main.ts, 2, 79)) VisualizationModel: typeof Backbone.Model; ->VisualizationModel : Symbol(VisualizationModel, Decl(extendingClassFromAliasAndUsageInIndexer_main.ts, 3, 34)) +>VisualizationModel : Symbol(IHasVisualizationModel.VisualizationModel, Decl(extendingClassFromAliasAndUsageInIndexer_main.ts, 3, 34)) >Backbone.Model : Symbol(Backbone.Model, Decl(extendingClassFromAliasAndUsageInIndexer_backbone.ts, 0, 0)) >Backbone : Symbol(Backbone, Decl(extendingClassFromAliasAndUsageInIndexer_main.ts, 0, 0)) >Model : Symbol(Backbone.Model, Decl(extendingClassFromAliasAndUsageInIndexer_backbone.ts, 0, 0)) @@ -49,7 +49,7 @@ export class Model { >Model : Symbol(Model, Decl(extendingClassFromAliasAndUsageInIndexer_backbone.ts, 0, 0)) public someData: string; ->someData : Symbol(someData, Decl(extendingClassFromAliasAndUsageInIndexer_backbone.ts, 0, 20)) +>someData : Symbol(Model.someData, Decl(extendingClassFromAliasAndUsageInIndexer_backbone.ts, 0, 20)) } === tests/cases/compiler/extendingClassFromAliasAndUsageInIndexer_moduleA.ts === diff --git a/tests/baselines/reference/externModuleClobber.symbols b/tests/baselines/reference/externModuleClobber.symbols index af4b19ad7c9..ad965a15879 100644 --- a/tests/baselines/reference/externModuleClobber.symbols +++ b/tests/baselines/reference/externModuleClobber.symbols @@ -9,7 +9,7 @@ declare module EM { >EC : Symbol(EC, Decl(externModuleClobber.ts, 1, 26)) public getPosition() : EM.Position; ->getPosition : Symbol(getPosition, Decl(externModuleClobber.ts, 3, 18)) +>getPosition : Symbol(EC.getPosition, Decl(externModuleClobber.ts, 3, 18)) >EM : Symbol(EM, Decl(externModuleClobber.ts, 0, 0)) >Position : Symbol(Position, Decl(externModuleClobber.ts, 0, 19)) } diff --git a/tests/baselines/reference/externalModuleAssignToVar.symbols b/tests/baselines/reference/externalModuleAssignToVar.symbols index 373dd3f793e..9e049b0bda6 100644 --- a/tests/baselines/reference/externalModuleAssignToVar.symbols +++ b/tests/baselines/reference/externalModuleAssignToVar.symbols @@ -41,7 +41,7 @@ y3 = ext3; // ok === tests/cases/compiler/externalModuleAssignToVar_ext.ts === class D { foo: string; } >D : Symbol(D, Decl(externalModuleAssignToVar_ext.ts, 0, 0)) ->foo : Symbol(foo, Decl(externalModuleAssignToVar_ext.ts, 0, 9)) +>foo : Symbol(D.foo, Decl(externalModuleAssignToVar_ext.ts, 0, 9)) export = D; >D : Symbol(D, Decl(externalModuleAssignToVar_ext.ts, 0, 0)) @@ -49,12 +49,12 @@ export = D; === tests/cases/compiler/externalModuleAssignToVar_core_require.ts === export class C { bar: string; } >C : Symbol(C, Decl(externalModuleAssignToVar_core_require.ts, 0, 0)) ->bar : Symbol(bar, Decl(externalModuleAssignToVar_core_require.ts, 0, 16)) +>bar : Symbol(C.bar, Decl(externalModuleAssignToVar_core_require.ts, 0, 16)) === tests/cases/compiler/externalModuleAssignToVar_core_require2.ts === class C { baz: string; } >C : Symbol(C, Decl(externalModuleAssignToVar_core_require2.ts, 0, 0)) ->baz : Symbol(baz, Decl(externalModuleAssignToVar_core_require2.ts, 0, 9)) +>baz : Symbol(C.baz, Decl(externalModuleAssignToVar_core_require2.ts, 0, 9)) export = C; >C : Symbol(C, Decl(externalModuleAssignToVar_core_require2.ts, 0, 0)) diff --git a/tests/baselines/reference/externalModuleQualification.symbols b/tests/baselines/reference/externalModuleQualification.symbols index dc056802c76..002a680a610 100644 --- a/tests/baselines/reference/externalModuleQualification.symbols +++ b/tests/baselines/reference/externalModuleQualification.symbols @@ -9,7 +9,7 @@ export class DiffEditor { >C : Symbol(C, Decl(externalModuleQualification.ts, 1, 29)) private previousDiffAction: NavigateAction; ->previousDiffAction : Symbol(previousDiffAction, Decl(externalModuleQualification.ts, 1, 34)) +>previousDiffAction : Symbol(DiffEditor.previousDiffAction, Decl(externalModuleQualification.ts, 1, 34)) >NavigateAction : Symbol(NavigateAction, Decl(externalModuleQualification.ts, 5, 1)) constructor(id: string = ID) { @@ -21,7 +21,7 @@ class NavigateAction { >NavigateAction : Symbol(NavigateAction, Decl(externalModuleQualification.ts, 5, 1)) f(editor: DiffEditor) { ->f : Symbol(f, Decl(externalModuleQualification.ts, 6, 22)) +>f : Symbol(NavigateAction.f, Decl(externalModuleQualification.ts, 6, 22)) >editor : Symbol(editor, Decl(externalModuleQualification.ts, 7, 6)) >DiffEditor : Symbol(DiffEditor, Decl(externalModuleQualification.ts, 0, 23)) } diff --git a/tests/baselines/reference/fallFromLastCase1.js b/tests/baselines/reference/fallFromLastCase1.js new file mode 100644 index 00000000000..3c2461db514 --- /dev/null +++ b/tests/baselines/reference/fallFromLastCase1.js @@ -0,0 +1,44 @@ +//// [fallFromLastCase1.ts] + +declare function use(a: string); + +function foo1(a: number) { + switch (a) { + case 1: + use("1"); + break; + case 2: + use("2"); + } +} + + +function foo2(a: number) { + switch (a) { + case 1: + use("1"); + break; + default: + use("2"); + } +} + +//// [fallFromLastCase1.js] +function foo1(a) { + switch (a) { + case 1: + use("1"); + break; + case 2: + use("2"); + } +} +function foo2(a) { + switch (a) { + case 1: + use("1"); + break; + default: + use("2"); + } +} diff --git a/tests/baselines/reference/fallFromLastCase1.symbols b/tests/baselines/reference/fallFromLastCase1.symbols new file mode 100644 index 00000000000..c4967e5e775 --- /dev/null +++ b/tests/baselines/reference/fallFromLastCase1.symbols @@ -0,0 +1,42 @@ +=== tests/cases/compiler/fallFromLastCase1.ts === + +declare function use(a: string); +>use : Symbol(use, Decl(fallFromLastCase1.ts, 0, 0)) +>a : Symbol(a, Decl(fallFromLastCase1.ts, 1, 21)) + +function foo1(a: number) { +>foo1 : Symbol(foo1, Decl(fallFromLastCase1.ts, 1, 32)) +>a : Symbol(a, Decl(fallFromLastCase1.ts, 3, 14)) + + switch (a) { +>a : Symbol(a, Decl(fallFromLastCase1.ts, 3, 14)) + + case 1: + use("1"); +>use : Symbol(use, Decl(fallFromLastCase1.ts, 0, 0)) + + break; + case 2: + use("2"); +>use : Symbol(use, Decl(fallFromLastCase1.ts, 0, 0)) + } +} + + +function foo2(a: number) { +>foo2 : Symbol(foo2, Decl(fallFromLastCase1.ts, 11, 1)) +>a : Symbol(a, Decl(fallFromLastCase1.ts, 14, 14)) + + switch (a) { +>a : Symbol(a, Decl(fallFromLastCase1.ts, 14, 14)) + + case 1: + use("1"); +>use : Symbol(use, Decl(fallFromLastCase1.ts, 0, 0)) + + break; + default: + use("2"); +>use : Symbol(use, Decl(fallFromLastCase1.ts, 0, 0)) + } +} diff --git a/tests/baselines/reference/fallFromLastCase1.types b/tests/baselines/reference/fallFromLastCase1.types new file mode 100644 index 00000000000..47e444ee17d --- /dev/null +++ b/tests/baselines/reference/fallFromLastCase1.types @@ -0,0 +1,56 @@ +=== tests/cases/compiler/fallFromLastCase1.ts === + +declare function use(a: string); +>use : (a: string) => any +>a : string + +function foo1(a: number) { +>foo1 : (a: number) => void +>a : number + + switch (a) { +>a : number + + case 1: +>1 : number + + use("1"); +>use("1") : any +>use : (a: string) => any +>"1" : string + + break; + case 2: +>2 : number + + use("2"); +>use("2") : any +>use : (a: string) => any +>"2" : string + } +} + + +function foo2(a: number) { +>foo2 : (a: number) => void +>a : number + + switch (a) { +>a : number + + case 1: +>1 : number + + use("1"); +>use("1") : any +>use : (a: string) => any +>"1" : string + + break; + default: + use("2"); +>use("2") : any +>use : (a: string) => any +>"2" : string + } +} diff --git a/tests/baselines/reference/fallFromLastCase2.errors.txt b/tests/baselines/reference/fallFromLastCase2.errors.txt new file mode 100644 index 00000000000..ccf7f6ebc1b --- /dev/null +++ b/tests/baselines/reference/fallFromLastCase2.errors.txt @@ -0,0 +1,36 @@ +tests/cases/compiler/fallFromLastCase2.ts(9,9): error TS7029: Fallthrough case in switch. +tests/cases/compiler/fallFromLastCase2.ts(22,9): error TS7029: Fallthrough case in switch. + + +==== tests/cases/compiler/fallFromLastCase2.ts (2 errors) ==== + + declare function use(a: string); + + function foo1(a: number) { + switch (a) { + case 1: + use("1"); + break; + case 2: + ~~~~ +!!! error TS7029: Fallthrough case in switch. + use("2"); + case 3: + use("3"); + } + } + + + function foo2(a: number) { + switch (a) { + case 1: + use("1"); + break; + default: + ~~~~~~~ +!!! error TS7029: Fallthrough case in switch. + use("2"); + case 2: + use("3"); + } + } \ No newline at end of file diff --git a/tests/baselines/reference/fallFromLastCase2.js b/tests/baselines/reference/fallFromLastCase2.js new file mode 100644 index 00000000000..fd1d7c20d07 --- /dev/null +++ b/tests/baselines/reference/fallFromLastCase2.js @@ -0,0 +1,52 @@ +//// [fallFromLastCase2.ts] + +declare function use(a: string); + +function foo1(a: number) { + switch (a) { + case 1: + use("1"); + break; + case 2: + use("2"); + case 3: + use("3"); + } +} + + +function foo2(a: number) { + switch (a) { + case 1: + use("1"); + break; + default: + use("2"); + case 2: + use("3"); + } +} + +//// [fallFromLastCase2.js] +function foo1(a) { + switch (a) { + case 1: + use("1"); + break; + case 2: + use("2"); + case 3: + use("3"); + } +} +function foo2(a) { + switch (a) { + case 1: + use("1"); + break; + default: + use("2"); + case 2: + use("3"); + } +} diff --git a/tests/baselines/reference/fatArrowSelf.symbols b/tests/baselines/reference/fatArrowSelf.symbols index 4008b648ae6..df9c912e292 100644 --- a/tests/baselines/reference/fatArrowSelf.symbols +++ b/tests/baselines/reference/fatArrowSelf.symbols @@ -12,7 +12,7 @@ module Events { >EventEmitter : Symbol(EventEmitter, Decl(fatArrowSelf.ts, 3, 5)) public addListener(type:string, listener:ListenerCallback) { ->addListener : Symbol(addListener, Decl(fatArrowSelf.ts, 4, 31)) +>addListener : Symbol(EventEmitter.addListener, Decl(fatArrowSelf.ts, 4, 31)) >type : Symbol(type, Decl(fatArrowSelf.ts, 5, 28)) >listener : Symbol(listener, Decl(fatArrowSelf.ts, 5, 40)) >ListenerCallback : Symbol(ListenerCallback, Decl(fatArrowSelf.ts, 0, 15)) @@ -27,31 +27,31 @@ module Consumer { >EventEmitterConsummer : Symbol(EventEmitterConsummer, Decl(fatArrowSelf.ts, 10, 17)) constructor (private emitter: Events.EventEmitter) { } ->emitter : Symbol(emitter, Decl(fatArrowSelf.ts, 12, 21)) +>emitter : Symbol(EventEmitterConsummer.emitter, Decl(fatArrowSelf.ts, 12, 21)) >Events : Symbol(Events, Decl(fatArrowSelf.ts, 0, 0)) >EventEmitter : Symbol(Events.EventEmitter, Decl(fatArrowSelf.ts, 3, 5)) private register() { ->register : Symbol(register, Decl(fatArrowSelf.ts, 12, 62)) +>register : Symbol(EventEmitterConsummer.register, Decl(fatArrowSelf.ts, 12, 62)) this.emitter.addListener('change', (e) => { >this.emitter.addListener : Symbol(Events.EventEmitter.addListener, Decl(fatArrowSelf.ts, 4, 31)) ->this.emitter : Symbol(emitter, Decl(fatArrowSelf.ts, 12, 21)) +>this.emitter : Symbol(EventEmitterConsummer.emitter, Decl(fatArrowSelf.ts, 12, 21)) >this : Symbol(EventEmitterConsummer, Decl(fatArrowSelf.ts, 10, 17)) ->emitter : Symbol(emitter, Decl(fatArrowSelf.ts, 12, 21)) +>emitter : Symbol(EventEmitterConsummer.emitter, Decl(fatArrowSelf.ts, 12, 21)) >addListener : Symbol(Events.EventEmitter.addListener, Decl(fatArrowSelf.ts, 4, 31)) >e : Symbol(e, Decl(fatArrowSelf.ts, 15, 48)) this.changed(); ->this.changed : Symbol(changed, Decl(fatArrowSelf.ts, 18, 9)) +>this.changed : Symbol(EventEmitterConsummer.changed, Decl(fatArrowSelf.ts, 18, 9)) >this : Symbol(EventEmitterConsummer, Decl(fatArrowSelf.ts, 10, 17)) ->changed : Symbol(changed, Decl(fatArrowSelf.ts, 18, 9)) +>changed : Symbol(EventEmitterConsummer.changed, Decl(fatArrowSelf.ts, 18, 9)) }); } private changed() { ->changed : Symbol(changed, Decl(fatArrowSelf.ts, 18, 9)) +>changed : Symbol(EventEmitterConsummer.changed, Decl(fatArrowSelf.ts, 18, 9)) } } } diff --git a/tests/baselines/reference/fatarrowfunctionsInFunctionParameterDefaults.types b/tests/baselines/reference/fatarrowfunctionsInFunctionParameterDefaults.types index 55d72e854d3..39cd994dcc1 100644 --- a/tests/baselines/reference/fatarrowfunctionsInFunctionParameterDefaults.types +++ b/tests/baselines/reference/fatarrowfunctionsInFunctionParameterDefaults.types @@ -16,8 +16,8 @@ function fn(x = () => this, y = x()) { fn.call(4); // Should be 4 >fn.call(4) : any ->fn.call : (thisArg: any, ...argArray: any[]) => any +>fn.call : (this: Function, thisArg: any, ...argArray: any[]) => any >fn : (x?: () => any, y?: any) => any ->call : (thisArg: any, ...argArray: any[]) => any +>call : (this: Function, thisArg: any, ...argArray: any[]) => any >4 : number diff --git a/tests/baselines/reference/fillInMissingTypeArgsOnConstructCalls.symbols b/tests/baselines/reference/fillInMissingTypeArgsOnConstructCalls.symbols index 97d485c4b56..e3ad22f6a05 100644 --- a/tests/baselines/reference/fillInMissingTypeArgsOnConstructCalls.symbols +++ b/tests/baselines/reference/fillInMissingTypeArgsOnConstructCalls.symbols @@ -5,7 +5,7 @@ class A{ >Object : Symbol(Object, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) list: T ; ->list : Symbol(list, Decl(fillInMissingTypeArgsOnConstructCalls.ts, 0, 26)) +>list : Symbol(A.list, Decl(fillInMissingTypeArgsOnConstructCalls.ts, 0, 26)) >T : Symbol(T, Decl(fillInMissingTypeArgsOnConstructCalls.ts, 0, 8)) } var a = new A(); diff --git a/tests/baselines/reference/fixingTypeParametersRepeatedly3.symbols b/tests/baselines/reference/fixingTypeParametersRepeatedly3.symbols index a849adb6235..c08fa6d9694 100644 --- a/tests/baselines/reference/fixingTypeParametersRepeatedly3.symbols +++ b/tests/baselines/reference/fixingTypeParametersRepeatedly3.symbols @@ -3,14 +3,14 @@ interface Base { >Base : Symbol(Base, Decl(fixingTypeParametersRepeatedly3.ts, 0, 0)) baseProp; ->baseProp : Symbol(baseProp, Decl(fixingTypeParametersRepeatedly3.ts, 0, 16)) +>baseProp : Symbol(Base.baseProp, Decl(fixingTypeParametersRepeatedly3.ts, 0, 16)) } interface Derived extends Base { >Derived : Symbol(Derived, Decl(fixingTypeParametersRepeatedly3.ts, 2, 1)) >Base : Symbol(Base, Decl(fixingTypeParametersRepeatedly3.ts, 0, 0)) toBase?(): Base; ->toBase : Symbol(toBase, Decl(fixingTypeParametersRepeatedly3.ts, 3, 32)) +>toBase : Symbol(Derived.toBase, Decl(fixingTypeParametersRepeatedly3.ts, 3, 32)) >Base : Symbol(Base, Decl(fixingTypeParametersRepeatedly3.ts, 0, 0)) } diff --git a/tests/baselines/reference/fluentClasses.symbols b/tests/baselines/reference/fluentClasses.symbols index 3125235b6b1..d33bd8697ce 100644 --- a/tests/baselines/reference/fluentClasses.symbols +++ b/tests/baselines/reference/fluentClasses.symbols @@ -3,7 +3,7 @@ class A { >A : Symbol(A, Decl(fluentClasses.ts, 0, 0)) foo() { ->foo : Symbol(foo, Decl(fluentClasses.ts, 0, 9)) +>foo : Symbol(A.foo, Decl(fluentClasses.ts, 0, 9)) return this; >this : Symbol(A, Decl(fluentClasses.ts, 0, 0)) @@ -14,7 +14,7 @@ class B extends A { >A : Symbol(A, Decl(fluentClasses.ts, 0, 0)) bar() { ->bar : Symbol(bar, Decl(fluentClasses.ts, 5, 19)) +>bar : Symbol(B.bar, Decl(fluentClasses.ts, 5, 19)) return this; >this : Symbol(B, Decl(fluentClasses.ts, 4, 1)) @@ -25,7 +25,7 @@ class C extends B { >B : Symbol(B, Decl(fluentClasses.ts, 4, 1)) baz() { ->baz : Symbol(baz, Decl(fluentClasses.ts, 10, 19)) +>baz : Symbol(C.baz, Decl(fluentClasses.ts, 10, 19)) return this; >this : Symbol(C, Decl(fluentClasses.ts, 9, 1)) diff --git a/tests/baselines/reference/fluentInterfaces.symbols b/tests/baselines/reference/fluentInterfaces.symbols index e059cdc127e..d3bc1020f52 100644 --- a/tests/baselines/reference/fluentInterfaces.symbols +++ b/tests/baselines/reference/fluentInterfaces.symbols @@ -3,21 +3,21 @@ interface A { >A : Symbol(A, Decl(fluentInterfaces.ts, 0, 0)) foo(): this; ->foo : Symbol(foo, Decl(fluentInterfaces.ts, 0, 13)) +>foo : Symbol(A.foo, Decl(fluentInterfaces.ts, 0, 13)) } interface B extends A { >B : Symbol(B, Decl(fluentInterfaces.ts, 2, 1)) >A : Symbol(A, Decl(fluentInterfaces.ts, 0, 0)) bar(): this; ->bar : Symbol(bar, Decl(fluentInterfaces.ts, 3, 23)) +>bar : Symbol(B.bar, Decl(fluentInterfaces.ts, 3, 23)) } interface C extends B { >C : Symbol(C, Decl(fluentInterfaces.ts, 5, 1)) >B : Symbol(B, Decl(fluentInterfaces.ts, 2, 1)) baz(): this; ->baz : Symbol(baz, Decl(fluentInterfaces.ts, 6, 23)) +>baz : Symbol(C.baz, Decl(fluentInterfaces.ts, 6, 23)) } var c: C; >c : Symbol(c, Decl(fluentInterfaces.ts, 9, 3)) diff --git a/tests/baselines/reference/for-inStatementsArray.symbols b/tests/baselines/reference/for-inStatementsArray.symbols index 5b6ea9385cd..0d594c193cb 100644 --- a/tests/baselines/reference/for-inStatementsArray.symbols +++ b/tests/baselines/reference/for-inStatementsArray.symbols @@ -1,7 +1,7 @@ === tests/cases/conformance/statements/for-inStatements/for-inStatementsArray.ts === let a: Date[]; >a : Symbol(a, Decl(for-inStatementsArray.ts, 0, 3)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) let b: boolean[]; >b : Symbol(b, Decl(for-inStatementsArray.ts, 1, 3)) diff --git a/tests/baselines/reference/for-of13.symbols b/tests/baselines/reference/for-of13.symbols index bcfc3f981bd..d257ed5290a 100644 --- a/tests/baselines/reference/for-of13.symbols +++ b/tests/baselines/reference/for-of13.symbols @@ -4,6 +4,6 @@ var v: string; for (v of [""].values()) { } >v : Symbol(v, Decl(for-of13.ts, 0, 3)) ->[""].values : Symbol(Array.values, Decl(lib.d.ts, --, --)) ->values : Symbol(Array.values, Decl(lib.d.ts, --, --)) +>[""].values : Symbol(Array.values, Decl(lib.es2015.iterable.d.ts, --, --)) +>values : Symbol(Array.values, Decl(lib.es2015.iterable.d.ts, --, --)) diff --git a/tests/baselines/reference/for-of18.symbols b/tests/baselines/reference/for-of18.symbols index 34e11d3d388..191b33e858e 100644 --- a/tests/baselines/reference/for-of18.symbols +++ b/tests/baselines/reference/for-of18.symbols @@ -10,7 +10,7 @@ class StringIterator { >StringIterator : Symbol(StringIterator, Decl(for-of18.ts, 1, 33)) next() { ->next : Symbol(next, Decl(for-of18.ts, 3, 22)) +>next : Symbol(StringIterator.next, Decl(for-of18.ts, 3, 22)) return { value: "", @@ -22,9 +22,9 @@ class StringIterator { }; } [Symbol.iterator]() { ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) return this; >this : Symbol(StringIterator, Decl(for-of18.ts, 1, 33)) diff --git a/tests/baselines/reference/for-of19.symbols b/tests/baselines/reference/for-of19.symbols index 81aafd32d13..a11ee1da53b 100644 --- a/tests/baselines/reference/for-of19.symbols +++ b/tests/baselines/reference/for-of19.symbols @@ -14,7 +14,7 @@ class FooIterator { >FooIterator : Symbol(FooIterator, Decl(for-of19.ts, 4, 13)) next() { ->next : Symbol(next, Decl(for-of19.ts, 5, 19)) +>next : Symbol(FooIterator.next, Decl(for-of19.ts, 5, 19)) return { value: new Foo, @@ -27,9 +27,9 @@ class FooIterator { }; } [Symbol.iterator]() { ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) return this; >this : Symbol(FooIterator, Decl(for-of19.ts, 4, 13)) diff --git a/tests/baselines/reference/for-of20.symbols b/tests/baselines/reference/for-of20.symbols index 727b69e3c9d..9ec6d4edea1 100644 --- a/tests/baselines/reference/for-of20.symbols +++ b/tests/baselines/reference/for-of20.symbols @@ -14,7 +14,7 @@ class FooIterator { >FooIterator : Symbol(FooIterator, Decl(for-of20.ts, 4, 13)) next() { ->next : Symbol(next, Decl(for-of20.ts, 5, 19)) +>next : Symbol(FooIterator.next, Decl(for-of20.ts, 5, 19)) return { value: new Foo, @@ -27,9 +27,9 @@ class FooIterator { }; } [Symbol.iterator]() { ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) return this; >this : Symbol(FooIterator, Decl(for-of20.ts, 4, 13)) diff --git a/tests/baselines/reference/for-of21.symbols b/tests/baselines/reference/for-of21.symbols index 1464a42aab2..3e9d50ac041 100644 --- a/tests/baselines/reference/for-of21.symbols +++ b/tests/baselines/reference/for-of21.symbols @@ -14,7 +14,7 @@ class FooIterator { >FooIterator : Symbol(FooIterator, Decl(for-of21.ts, 4, 13)) next() { ->next : Symbol(next, Decl(for-of21.ts, 5, 19)) +>next : Symbol(FooIterator.next, Decl(for-of21.ts, 5, 19)) return { value: new Foo, @@ -27,9 +27,9 @@ class FooIterator { }; } [Symbol.iterator]() { ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) return this; >this : Symbol(FooIterator, Decl(for-of21.ts, 4, 13)) diff --git a/tests/baselines/reference/for-of22.symbols b/tests/baselines/reference/for-of22.symbols index 1aac39dae6e..6ce5fe1181a 100644 --- a/tests/baselines/reference/for-of22.symbols +++ b/tests/baselines/reference/for-of22.symbols @@ -15,7 +15,7 @@ class FooIterator { >FooIterator : Symbol(FooIterator, Decl(for-of22.ts, 5, 13)) next() { ->next : Symbol(next, Decl(for-of22.ts, 6, 19)) +>next : Symbol(FooIterator.next, Decl(for-of22.ts, 6, 19)) return { value: new Foo, @@ -28,9 +28,9 @@ class FooIterator { }; } [Symbol.iterator]() { ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) return this; >this : Symbol(FooIterator, Decl(for-of22.ts, 5, 13)) diff --git a/tests/baselines/reference/for-of23.symbols b/tests/baselines/reference/for-of23.symbols index f4f34fcef93..ce20bb81b79 100644 --- a/tests/baselines/reference/for-of23.symbols +++ b/tests/baselines/reference/for-of23.symbols @@ -14,7 +14,7 @@ class FooIterator { >FooIterator : Symbol(FooIterator, Decl(for-of23.ts, 4, 13)) next() { ->next : Symbol(next, Decl(for-of23.ts, 5, 19)) +>next : Symbol(FooIterator.next, Decl(for-of23.ts, 5, 19)) return { value: new Foo, @@ -27,9 +27,9 @@ class FooIterator { }; } [Symbol.iterator]() { ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) return this; >this : Symbol(FooIterator, Decl(for-of23.ts, 4, 13)) diff --git a/tests/baselines/reference/for-of25.symbols b/tests/baselines/reference/for-of25.symbols index dfa358da0bd..6c80a560efa 100644 --- a/tests/baselines/reference/for-of25.symbols +++ b/tests/baselines/reference/for-of25.symbols @@ -10,9 +10,9 @@ class StringIterator { >StringIterator : Symbol(StringIterator, Decl(for-of25.ts, 1, 37)) [Symbol.iterator]() { ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) return x; >x : Symbol(x, Decl(for-of25.ts, 0, 3)) diff --git a/tests/baselines/reference/for-of26.symbols b/tests/baselines/reference/for-of26.symbols index 9f4d1455c3f..9970dea754b 100644 --- a/tests/baselines/reference/for-of26.symbols +++ b/tests/baselines/reference/for-of26.symbols @@ -10,15 +10,15 @@ class StringIterator { >StringIterator : Symbol(StringIterator, Decl(for-of26.ts, 1, 37)) next() { ->next : Symbol(next, Decl(for-of26.ts, 3, 22)) +>next : Symbol(StringIterator.next, Decl(for-of26.ts, 3, 22)) return x; >x : Symbol(x, Decl(for-of26.ts, 0, 3)) } [Symbol.iterator]() { ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) return this; >this : Symbol(StringIterator, Decl(for-of26.ts, 1, 37)) diff --git a/tests/baselines/reference/for-of27.symbols b/tests/baselines/reference/for-of27.symbols index 57148c53f13..12452b2ee77 100644 --- a/tests/baselines/reference/for-of27.symbols +++ b/tests/baselines/reference/for-of27.symbols @@ -7,7 +7,7 @@ class StringIterator { >StringIterator : Symbol(StringIterator, Decl(for-of27.ts, 0, 37)) [Symbol.iterator]: any; ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) } diff --git a/tests/baselines/reference/for-of28.symbols b/tests/baselines/reference/for-of28.symbols index 91081d3abdf..94c8a1041d1 100644 --- a/tests/baselines/reference/for-of28.symbols +++ b/tests/baselines/reference/for-of28.symbols @@ -7,12 +7,12 @@ class StringIterator { >StringIterator : Symbol(StringIterator, Decl(for-of28.ts, 0, 37)) next: any; ->next : Symbol(next, Decl(for-of28.ts, 2, 22)) +>next : Symbol(StringIterator.next, Decl(for-of28.ts, 2, 22)) [Symbol.iterator]() { ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) return this; >this : Symbol(StringIterator, Decl(for-of28.ts, 0, 37)) diff --git a/tests/baselines/reference/for-of37.symbols b/tests/baselines/reference/for-of37.symbols index b8ce9da9ce2..c9c5c627b8a 100644 --- a/tests/baselines/reference/for-of37.symbols +++ b/tests/baselines/reference/for-of37.symbols @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/for-ofStatements/for-of37.ts === var map = new Map([["", true]]); >map : Symbol(map, Decl(for-of37.ts, 0, 3)) ->Map : Symbol(Map, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Map : Symbol(Map, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.collection.d.ts, --, --), Decl(lib.es2015.collection.d.ts, --, --)) for (var v of map) { >v : Symbol(v, Decl(for-of37.ts, 1, 8)) diff --git a/tests/baselines/reference/for-of38.symbols b/tests/baselines/reference/for-of38.symbols index 18d2dda6db8..d1df1afea3b 100644 --- a/tests/baselines/reference/for-of38.symbols +++ b/tests/baselines/reference/for-of38.symbols @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/for-ofStatements/for-of38.ts === var map = new Map([["", true]]); >map : Symbol(map, Decl(for-of38.ts, 0, 3)) ->Map : Symbol(Map, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Map : Symbol(Map, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.collection.d.ts, --, --), Decl(lib.es2015.collection.d.ts, --, --)) for (var [k, v] of map) { >k : Symbol(k, Decl(for-of38.ts, 1, 10)) diff --git a/tests/baselines/reference/for-of40.symbols b/tests/baselines/reference/for-of40.symbols index a9177d12435..37fff144559 100644 --- a/tests/baselines/reference/for-of40.symbols +++ b/tests/baselines/reference/for-of40.symbols @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/for-ofStatements/for-of40.ts === var map = new Map([["", true]]); >map : Symbol(map, Decl(for-of40.ts, 0, 3)) ->Map : Symbol(Map, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Map : Symbol(Map, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.collection.d.ts, --, --), Decl(lib.es2015.collection.d.ts, --, --)) for (var [k = "", v = false] of map) { >k : Symbol(k, Decl(for-of40.ts, 1, 10)) diff --git a/tests/baselines/reference/for-of44.symbols b/tests/baselines/reference/for-of44.symbols index d7057da0ee2..fb951a6ef8a 100644 --- a/tests/baselines/reference/for-of44.symbols +++ b/tests/baselines/reference/for-of44.symbols @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/for-ofStatements/for-of44.ts === var array: [number, string | boolean | symbol][] = [[0, ""], [0, true], [1, Symbol()]] >array : Symbol(array, Decl(for-of44.ts, 0, 3)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) for (var [num, strBoolSym] of array) { >num : Symbol(num, Decl(for-of44.ts, 1, 10)) diff --git a/tests/baselines/reference/for-of45.symbols b/tests/baselines/reference/for-of45.symbols index 7d8ffd4ba86..3a0968069c8 100644 --- a/tests/baselines/reference/for-of45.symbols +++ b/tests/baselines/reference/for-of45.symbols @@ -5,7 +5,7 @@ var k: string, v: boolean; var map = new Map([["", true]]); >map : Symbol(map, Decl(for-of45.ts, 1, 3)) ->Map : Symbol(Map, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Map : Symbol(Map, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.collection.d.ts, --, --), Decl(lib.es2015.collection.d.ts, --, --)) for ([k = "", v = false] of map) { >k : Symbol(k, Decl(for-of45.ts, 0, 3)) diff --git a/tests/baselines/reference/for-of45.types b/tests/baselines/reference/for-of45.types index b71e062eccf..7c853993b0a 100644 --- a/tests/baselines/reference/for-of45.types +++ b/tests/baselines/reference/for-of45.types @@ -13,7 +13,7 @@ var map = new Map([["", true]]); >true : boolean for ([k = "", v = false] of map) { ->[k = "", v = false] : (string | boolean)[] +>[k = "", v = false] : [string, boolean] >k = "" : string >k : string >"" : string diff --git a/tests/baselines/reference/for-of50.symbols b/tests/baselines/reference/for-of50.symbols index 435390f2a6e..ad9b06d48a9 100644 --- a/tests/baselines/reference/for-of50.symbols +++ b/tests/baselines/reference/for-of50.symbols @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/for-ofStatements/for-of50.ts === var map = new Map([["", true]]); >map : Symbol(map, Decl(for-of50.ts, 0, 3)) ->Map : Symbol(Map, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Map : Symbol(Map, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.collection.d.ts, --, --), Decl(lib.es2015.collection.d.ts, --, --)) for (const [k, v] of map) { >k : Symbol(k, Decl(for-of50.ts, 1, 12)) diff --git a/tests/baselines/reference/for-of57.symbols b/tests/baselines/reference/for-of57.symbols index 191377bdd47..e510b4f9afa 100644 --- a/tests/baselines/reference/for-of57.symbols +++ b/tests/baselines/reference/for-of57.symbols @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/for-ofStatements/for-of57.ts === var iter: Iterable; >iter : Symbol(iter, Decl(for-of57.ts, 0, 3)) ->Iterable : Symbol(Iterable, Decl(lib.d.ts, --, --)) +>Iterable : Symbol(Iterable, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) for (let num of iter) { } >num : Symbol(num, Decl(for-of57.ts, 1, 8)) diff --git a/tests/baselines/reference/forStatements.symbols b/tests/baselines/reference/forStatements.symbols index 2d5250217f9..84cd7dc70d1 100644 --- a/tests/baselines/reference/forStatements.symbols +++ b/tests/baselines/reference/forStatements.symbols @@ -4,7 +4,7 @@ interface I { >I : Symbol(I, Decl(forStatements.ts, 0, 0)) id: number; ->id : Symbol(id, Decl(forStatements.ts, 1, 13)) +>id : Symbol(I.id, Decl(forStatements.ts, 1, 13)) } class C implements I { @@ -12,7 +12,7 @@ class C implements I { >I : Symbol(I, Decl(forStatements.ts, 0, 0)) id: number; ->id : Symbol(id, Decl(forStatements.ts, 5, 22)) +>id : Symbol(C.id, Decl(forStatements.ts, 5, 22)) } class D{ @@ -20,16 +20,16 @@ class D{ >T : Symbol(T, Decl(forStatements.ts, 9, 8)) source: T; ->source : Symbol(source, Decl(forStatements.ts, 9, 11)) +>source : Symbol(D.source, Decl(forStatements.ts, 9, 11)) >T : Symbol(T, Decl(forStatements.ts, 9, 8)) recurse: D; ->recurse : Symbol(recurse, Decl(forStatements.ts, 10, 14)) +>recurse : Symbol(D.recurse, Decl(forStatements.ts, 10, 14)) >D : Symbol(D, Decl(forStatements.ts, 7, 1)) >T : Symbol(T, Decl(forStatements.ts, 9, 8)) wrapped: D> ->wrapped : Symbol(wrapped, Decl(forStatements.ts, 11, 18)) +>wrapped : Symbol(D.wrapped, Decl(forStatements.ts, 11, 18)) >D : Symbol(D, Decl(forStatements.ts, 7, 1)) >D : Symbol(D, Decl(forStatements.ts, 7, 1)) >T : Symbol(T, Decl(forStatements.ts, 9, 8)) @@ -46,7 +46,7 @@ module M { >A : Symbol(A, Decl(forStatements.ts, 17, 10)) name: string; ->name : Symbol(name, Decl(forStatements.ts, 18, 20)) +>name : Symbol(A.name, Decl(forStatements.ts, 18, 20)) } export function F2(x: number): string { return x.toString(); } @@ -65,8 +65,8 @@ for(var aString: string = 'this is a string';;){} for(var aDate: Date = new Date(12);;){} >aDate : Symbol(aDate, Decl(forStatements.ts, 27, 7)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) for(var anObject: Object = new Object();;){} >anObject : Symbol(anObject, Decl(forStatements.ts, 28, 7)) diff --git a/tests/baselines/reference/forStatementsMultipleValidDecl.symbols b/tests/baselines/reference/forStatementsMultipleValidDecl.symbols index d2d8ac01003..89e36c4a8f5 100644 --- a/tests/baselines/reference/forStatementsMultipleValidDecl.symbols +++ b/tests/baselines/reference/forStatementsMultipleValidDecl.symbols @@ -21,8 +21,8 @@ function declSpace() { } interface Point { x: number; y: number; } >Point : Symbol(Point, Decl(forStatementsMultipleValidDecl.ts, 10, 1)) ->x : Symbol(x, Decl(forStatementsMultipleValidDecl.ts, 11, 17)) ->y : Symbol(y, Decl(forStatementsMultipleValidDecl.ts, 11, 28)) +>x : Symbol(Point.x, Decl(forStatementsMultipleValidDecl.ts, 11, 17)) +>y : Symbol(Point.y, Decl(forStatementsMultipleValidDecl.ts, 11, 28)) for (var p: Point; ;) { } >p : Symbol(p, Decl(forStatementsMultipleValidDecl.ts, 13, 8), Decl(forStatementsMultipleValidDecl.ts, 14, 8), Decl(forStatementsMultipleValidDecl.ts, 15, 8), Decl(forStatementsMultipleValidDecl.ts, 16, 8), Decl(forStatementsMultipleValidDecl.ts, 17, 8), Decl(forStatementsMultipleValidDecl.ts, 18, 8), Decl(forStatementsMultipleValidDecl.ts, 19, 8)) diff --git a/tests/baselines/reference/functionAndImportNameConflict.errors.txt b/tests/baselines/reference/functionAndImportNameConflict.errors.txt new file mode 100644 index 00000000000..4ca496cfb65 --- /dev/null +++ b/tests/baselines/reference/functionAndImportNameConflict.errors.txt @@ -0,0 +1,13 @@ +tests/cases/compiler/f2.ts(1,9): error TS2440: Import declaration conflicts with local declaration of 'f' + + +==== tests/cases/compiler/f1.ts (0 errors) ==== + export function f() { + } + +==== tests/cases/compiler/f2.ts (1 errors) ==== + import {f} from './f1'; + ~ +!!! error TS2440: Import declaration conflicts with local declaration of 'f' + export function f() { + } \ No newline at end of file diff --git a/tests/baselines/reference/functionAndImportNameConflict.js b/tests/baselines/reference/functionAndImportNameConflict.js new file mode 100644 index 00000000000..8391823aa3a --- /dev/null +++ b/tests/baselines/reference/functionAndImportNameConflict.js @@ -0,0 +1,21 @@ +//// [tests/cases/compiler/functionAndImportNameConflict.ts] //// + +//// [f1.ts] +export function f() { +} + +//// [f2.ts] +import {f} from './f1'; +export function f() { +} + +//// [f1.js] +"use strict"; +function f() { +} +exports.f = f; +//// [f2.js] +"use strict"; +function f() { +} +exports.f = f; diff --git a/tests/baselines/reference/functionCall5.symbols b/tests/baselines/reference/functionCall5.symbols index de166231204..e06c801eba8 100644 --- a/tests/baselines/reference/functionCall5.symbols +++ b/tests/baselines/reference/functionCall5.symbols @@ -2,7 +2,7 @@ module m1 { export class c1 { public a; }} >m1 : Symbol(m1, Decl(functionCall5.ts, 0, 0)) >c1 : Symbol(c1, Decl(functionCall5.ts, 0, 11)) ->a : Symbol(a, Decl(functionCall5.ts, 0, 29)) +>a : Symbol(c1.a, Decl(functionCall5.ts, 0, 29)) function foo():m1.c1{return new m1.c1();}; >foo : Symbol(foo, Decl(functionCall5.ts, 0, 42)) diff --git a/tests/baselines/reference/functionConstraintSatisfaction.symbols b/tests/baselines/reference/functionConstraintSatisfaction.symbols index 969ac928374..6c7ca5f7713 100644 --- a/tests/baselines/reference/functionConstraintSatisfaction.symbols +++ b/tests/baselines/reference/functionConstraintSatisfaction.symbols @@ -23,7 +23,7 @@ class C { >C : Symbol(C, Decl(functionConstraintSatisfaction.ts, 7, 9)) foo: string; ->foo : Symbol(foo, Decl(functionConstraintSatisfaction.ts, 9, 9)) +>foo : Symbol(C.foo, Decl(functionConstraintSatisfaction.ts, 9, 9)) } var a: { (): string }; @@ -103,7 +103,7 @@ class C2 { >T : Symbol(T, Decl(functionConstraintSatisfaction.ts, 32, 9)) foo: T; ->foo : Symbol(foo, Decl(functionConstraintSatisfaction.ts, 32, 13)) +>foo : Symbol(C2.foo, Decl(functionConstraintSatisfaction.ts, 32, 13)) >T : Symbol(T, Decl(functionConstraintSatisfaction.ts, 32, 9)) } @@ -154,7 +154,7 @@ var r11 = foo((x: U) => x); >r11 : Symbol(r11, Decl(functionConstraintSatisfaction.ts, 42, 3)) >foo : Symbol(foo, Decl(functionConstraintSatisfaction.ts, 0, 0)) >U : Symbol(U, Decl(functionConstraintSatisfaction.ts, 42, 15)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >x : Symbol(x, Decl(functionConstraintSatisfaction.ts, 42, 31)) >U : Symbol(U, Decl(functionConstraintSatisfaction.ts, 42, 15)) >x : Symbol(x, Decl(functionConstraintSatisfaction.ts, 42, 31)) @@ -193,7 +193,7 @@ var r16 = foo(c2); interface F2 extends Function { foo: string; } >F2 : Symbol(F2, Decl(functionConstraintSatisfaction.ts, 47, 18)) >Function : Symbol(Function, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->foo : Symbol(foo, Decl(functionConstraintSatisfaction.ts, 49, 31)) +>foo : Symbol(F2.foo, Decl(functionConstraintSatisfaction.ts, 49, 31)) var f2: F2; >f2 : Symbol(f2, Decl(functionConstraintSatisfaction.ts, 50, 3)) diff --git a/tests/baselines/reference/functionConstraintSatisfaction2.errors.txt b/tests/baselines/reference/functionConstraintSatisfaction2.errors.txt index d2299894c59..7d3fa793ec8 100644 --- a/tests/baselines/reference/functionConstraintSatisfaction2.errors.txt +++ b/tests/baselines/reference/functionConstraintSatisfaction2.errors.txt @@ -5,7 +5,7 @@ tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstrain Type 'Function' provides no match for the signature '(x: string): string' tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstraintSatisfaction2.ts(24,15): error TS2345: Argument of type '(x: string[]) => string[]' is not assignable to parameter of type '(x: string) => string'. Types of parameters 'x' and 'x' are incompatible. - Type 'string[]' is not assignable to type 'string'. + Type 'string' is not assignable to type 'string[]'. tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstraintSatisfaction2.ts(25,15): error TS2345: Argument of type 'typeof C' is not assignable to parameter of type '(x: string) => string'. Type 'typeof C' provides no match for the signature '(x: string): string' tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstraintSatisfaction2.ts(26,15): error TS2345: Argument of type 'new (x: string) => string' is not assignable to parameter of type '(x: string) => string'. @@ -63,7 +63,7 @@ tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstrain ~~~~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: string[]) => string[]' is not assignable to parameter of type '(x: string) => string'. !!! error TS2345: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2345: Type 'string[]' is not assignable to type 'string'. +!!! error TS2345: Type 'string' is not assignable to type 'string[]'. var r6 = foo2(C); ~ !!! error TS2345: Argument of type 'typeof C' is not assignable to parameter of type '(x: string) => string'. diff --git a/tests/baselines/reference/functionConstraintSatisfaction3.symbols b/tests/baselines/reference/functionConstraintSatisfaction3.symbols index 74f3a65aa8e..70f71602c06 100644 --- a/tests/baselines/reference/functionConstraintSatisfaction3.symbols +++ b/tests/baselines/reference/functionConstraintSatisfaction3.symbols @@ -23,7 +23,7 @@ class C { >C : Symbol(C, Decl(functionConstraintSatisfaction3.ts, 7, 9)) foo: string; ->foo : Symbol(foo, Decl(functionConstraintSatisfaction3.ts, 9, 9)) +>foo : Symbol(C.foo, Decl(functionConstraintSatisfaction3.ts, 9, 9)) } var a: { (): string }; @@ -88,7 +88,7 @@ class C2 { >T : Symbol(T, Decl(functionConstraintSatisfaction3.ts, 29, 9)) foo: T; ->foo : Symbol(foo, Decl(functionConstraintSatisfaction3.ts, 29, 13)) +>foo : Symbol(C2.foo, Decl(functionConstraintSatisfaction3.ts, 29, 13)) >T : Symbol(T, Decl(functionConstraintSatisfaction3.ts, 29, 9)) } diff --git a/tests/baselines/reference/functionExpressionContextualTyping1.symbols b/tests/baselines/reference/functionExpressionContextualTyping1.symbols index 736fa86b9ca..7d4b0ccbb6b 100644 --- a/tests/baselines/reference/functionExpressionContextualTyping1.symbols +++ b/tests/baselines/reference/functionExpressionContextualTyping1.symbols @@ -30,14 +30,14 @@ class Class { >T : Symbol(T, Decl(functionExpressionContextualTyping1.ts, 13, 12)) foo() { } ->foo : Symbol(foo, Decl(functionExpressionContextualTyping1.ts, 13, 16)) +>foo : Symbol(Class.foo, Decl(functionExpressionContextualTyping1.ts, 13, 16)) } var a1: (c: Class) => number = (a1) => { >a1 : Symbol(a1, Decl(functionExpressionContextualTyping1.ts, 17, 3)) >c : Symbol(c, Decl(functionExpressionContextualTyping1.ts, 17, 9)) >Class : Symbol(Class, Decl(functionExpressionContextualTyping1.ts, 11, 1)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >a1 : Symbol(a1, Decl(functionExpressionContextualTyping1.ts, 17, 40)) a1.foo(); diff --git a/tests/baselines/reference/functionImplementationErrors.errors.txt b/tests/baselines/reference/functionImplementationErrors.errors.txt index 86ecb6a6057..dc5ad5a2747 100644 --- a/tests/baselines/reference/functionImplementationErrors.errors.txt +++ b/tests/baselines/reference/functionImplementationErrors.errors.txt @@ -30,13 +30,10 @@ tests/cases/conformance/functions/functionImplementationErrors.ts(70,11): error }; var f3 = () => { ~~~~~~~ - return ''; - ~~~~~~~~~~~~~~ - return 3; - ~~~~~~~~~~~~~ - }; - ~ !!! error TS2354: No best common type exists among return expressions. + return ''; + return 3; + }; // FunctionExpression with no return type annotation with return branch of number[] and other of string[] var f4 = function () { @@ -94,13 +91,10 @@ tests/cases/conformance/functions/functionImplementationErrors.ts(70,11): error }; var f10 = () => { ~~~~~~~ - return new Derived1(); - ~~~~~~~~~~~~~~~~~~~~~~~~~~ - return new Derived2(); - ~~~~~~~~~~~~~~~~~~~~~~~~~~ - }; - ~ !!! error TS2354: No best common type exists among return expressions. + return new Derived1(); + return new Derived2(); + }; function f11() { ~~~ !!! error TS2354: No best common type exists among return expressions. @@ -115,11 +109,8 @@ tests/cases/conformance/functions/functionImplementationErrors.ts(70,11): error }; var f13 = () => { ~~~~~~~ - return new Base(); - ~~~~~~~~~~~~~~~~~~~~~~ - return new AnotherClass(); - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - }; - ~ !!! error TS2354: No best common type exists among return expressions. + return new Base(); + return new AnotherClass(); + }; \ No newline at end of file diff --git a/tests/baselines/reference/functionImplementations.symbols b/tests/baselines/reference/functionImplementations.symbols index 07945b5f765..1d8c5b2618b 100644 --- a/tests/baselines/reference/functionImplementations.symbols +++ b/tests/baselines/reference/functionImplementations.symbols @@ -150,12 +150,12 @@ var n = function () { // FunctionExpression with no return type annotation with multiple return statements with subtype relation between returns class Base { private m; } >Base : Symbol(Base, Decl(functionImplementations.ts, 70, 4)) ->m : Symbol(m, Decl(functionImplementations.ts, 77, 12)) +>m : Symbol(Base.m, Decl(functionImplementations.ts, 77, 12)) class Derived extends Base { private q; } >Derived : Symbol(Derived, Decl(functionImplementations.ts, 77, 25)) >Base : Symbol(Base, Decl(functionImplementations.ts, 70, 4)) ->q : Symbol(q, Decl(functionImplementations.ts, 78, 28)) +>q : Symbol(Derived.q, Decl(functionImplementations.ts, 78, 28)) var b: Base; >b : Symbol(b, Decl(functionImplementations.ts, 79, 3), Decl(functionImplementations.ts, 80, 3)) @@ -261,11 +261,11 @@ function f6(): number { class Derived2 extends Base { private r: string; } >Derived2 : Symbol(Derived2, Decl(functionImplementations.ts, 124, 1)) >Base : Symbol(Base, Decl(functionImplementations.ts, 70, 4)) ->r : Symbol(r, Decl(functionImplementations.ts, 126, 29)) +>r : Symbol(Derived2.r, Decl(functionImplementations.ts, 126, 29)) class AnotherClass { private x } >AnotherClass : Symbol(AnotherClass, Decl(functionImplementations.ts, 126, 50)) ->x : Symbol(x, Decl(functionImplementations.ts, 127, 20)) +>x : Symbol(AnotherClass.x, Decl(functionImplementations.ts, 127, 20)) // if f is a contextually typed function expression, the inferred return type is the union type // of the types of the return statement expressions in the function body, diff --git a/tests/baselines/reference/functionOverloads44.symbols b/tests/baselines/reference/functionOverloads44.symbols index 3520777a835..9b1ef6c93a8 100644 --- a/tests/baselines/reference/functionOverloads44.symbols +++ b/tests/baselines/reference/functionOverloads44.symbols @@ -1,17 +1,17 @@ === tests/cases/compiler/functionOverloads44.ts === interface Animal { animal } >Animal : Symbol(Animal, Decl(functionOverloads44.ts, 0, 0)) ->animal : Symbol(animal, Decl(functionOverloads44.ts, 0, 18)) +>animal : Symbol(Animal.animal, Decl(functionOverloads44.ts, 0, 18)) interface Dog extends Animal { dog } >Dog : Symbol(Dog, Decl(functionOverloads44.ts, 0, 27)) >Animal : Symbol(Animal, Decl(functionOverloads44.ts, 0, 0)) ->dog : Symbol(dog, Decl(functionOverloads44.ts, 1, 30)) +>dog : Symbol(Dog.dog, Decl(functionOverloads44.ts, 1, 30)) interface Cat extends Animal { cat } >Cat : Symbol(Cat, Decl(functionOverloads44.ts, 1, 36)) >Animal : Symbol(Animal, Decl(functionOverloads44.ts, 0, 0)) ->cat : Symbol(cat, Decl(functionOverloads44.ts, 2, 30)) +>cat : Symbol(Cat.cat, Decl(functionOverloads44.ts, 2, 30)) function foo1(bar: { a:number }[]): Dog; >foo1 : Symbol(foo1, Decl(functionOverloads44.ts, 2, 36), Decl(functionOverloads44.ts, 4, 40), Decl(functionOverloads44.ts, 5, 43)) diff --git a/tests/baselines/reference/functionOverloads45.symbols b/tests/baselines/reference/functionOverloads45.symbols index 28599339099..628ab14e3d1 100644 --- a/tests/baselines/reference/functionOverloads45.symbols +++ b/tests/baselines/reference/functionOverloads45.symbols @@ -1,17 +1,17 @@ === tests/cases/compiler/functionOverloads45.ts === interface Animal { animal } >Animal : Symbol(Animal, Decl(functionOverloads45.ts, 0, 0)) ->animal : Symbol(animal, Decl(functionOverloads45.ts, 0, 18)) +>animal : Symbol(Animal.animal, Decl(functionOverloads45.ts, 0, 18)) interface Dog extends Animal { dog } >Dog : Symbol(Dog, Decl(functionOverloads45.ts, 0, 27)) >Animal : Symbol(Animal, Decl(functionOverloads45.ts, 0, 0)) ->dog : Symbol(dog, Decl(functionOverloads45.ts, 1, 30)) +>dog : Symbol(Dog.dog, Decl(functionOverloads45.ts, 1, 30)) interface Cat extends Animal { cat } >Cat : Symbol(Cat, Decl(functionOverloads45.ts, 1, 36)) >Animal : Symbol(Animal, Decl(functionOverloads45.ts, 0, 0)) ->cat : Symbol(cat, Decl(functionOverloads45.ts, 2, 30)) +>cat : Symbol(Cat.cat, Decl(functionOverloads45.ts, 2, 30)) function foo1(bar: { a:number }[]): Cat; >foo1 : Symbol(foo1, Decl(functionOverloads45.ts, 2, 36), Decl(functionOverloads45.ts, 4, 40), Decl(functionOverloads45.ts, 5, 40)) diff --git a/tests/baselines/reference/functionOverloads7.symbols b/tests/baselines/reference/functionOverloads7.symbols index 1d2fe3ea6a2..f1b29f951e7 100644 --- a/tests/baselines/reference/functionOverloads7.symbols +++ b/tests/baselines/reference/functionOverloads7.symbols @@ -3,30 +3,30 @@ class foo { >foo : Symbol(foo, Decl(functionOverloads7.ts, 0, 0)) private bar(); ->bar : Symbol(bar, Decl(functionOverloads7.ts, 0, 11), Decl(functionOverloads7.ts, 1, 17), Decl(functionOverloads7.ts, 2, 28)) +>bar : Symbol(foo.bar, Decl(functionOverloads7.ts, 0, 11), Decl(functionOverloads7.ts, 1, 17), Decl(functionOverloads7.ts, 2, 28)) private bar(foo: string); ->bar : Symbol(bar, Decl(functionOverloads7.ts, 0, 11), Decl(functionOverloads7.ts, 1, 17), Decl(functionOverloads7.ts, 2, 28)) +>bar : Symbol(foo.bar, Decl(functionOverloads7.ts, 0, 11), Decl(functionOverloads7.ts, 1, 17), Decl(functionOverloads7.ts, 2, 28)) >foo : Symbol(foo, Decl(functionOverloads7.ts, 2, 15)) private bar(foo?: any){ return "foo" } ->bar : Symbol(bar, Decl(functionOverloads7.ts, 0, 11), Decl(functionOverloads7.ts, 1, 17), Decl(functionOverloads7.ts, 2, 28)) +>bar : Symbol(foo.bar, Decl(functionOverloads7.ts, 0, 11), Decl(functionOverloads7.ts, 1, 17), Decl(functionOverloads7.ts, 2, 28)) >foo : Symbol(foo, Decl(functionOverloads7.ts, 3, 15)) public n() { ->n : Symbol(n, Decl(functionOverloads7.ts, 3, 41)) +>n : Symbol(foo.n, Decl(functionOverloads7.ts, 3, 41)) var foo = this.bar(); >foo : Symbol(foo, Decl(functionOverloads7.ts, 5, 8)) ->this.bar : Symbol(bar, Decl(functionOverloads7.ts, 0, 11), Decl(functionOverloads7.ts, 1, 17), Decl(functionOverloads7.ts, 2, 28)) +>this.bar : Symbol(foo.bar, Decl(functionOverloads7.ts, 0, 11), Decl(functionOverloads7.ts, 1, 17), Decl(functionOverloads7.ts, 2, 28)) >this : Symbol(foo, Decl(functionOverloads7.ts, 0, 0)) ->bar : Symbol(bar, Decl(functionOverloads7.ts, 0, 11), Decl(functionOverloads7.ts, 1, 17), Decl(functionOverloads7.ts, 2, 28)) +>bar : Symbol(foo.bar, Decl(functionOverloads7.ts, 0, 11), Decl(functionOverloads7.ts, 1, 17), Decl(functionOverloads7.ts, 2, 28)) foo = this.bar("test"); >foo : Symbol(foo, Decl(functionOverloads7.ts, 5, 8)) ->this.bar : Symbol(bar, Decl(functionOverloads7.ts, 0, 11), Decl(functionOverloads7.ts, 1, 17), Decl(functionOverloads7.ts, 2, 28)) +>this.bar : Symbol(foo.bar, Decl(functionOverloads7.ts, 0, 11), Decl(functionOverloads7.ts, 1, 17), Decl(functionOverloads7.ts, 2, 28)) >this : Symbol(foo, Decl(functionOverloads7.ts, 0, 0)) ->bar : Symbol(bar, Decl(functionOverloads7.ts, 0, 11), Decl(functionOverloads7.ts, 1, 17), Decl(functionOverloads7.ts, 2, 28)) +>bar : Symbol(foo.bar, Decl(functionOverloads7.ts, 0, 11), Decl(functionOverloads7.ts, 1, 17), Decl(functionOverloads7.ts, 2, 28)) } } diff --git a/tests/baselines/reference/functionOverloadsOnGenericArity1.symbols b/tests/baselines/reference/functionOverloadsOnGenericArity1.symbols index d4721e5ec08..57c1edcd8f0 100644 --- a/tests/baselines/reference/functionOverloadsOnGenericArity1.symbols +++ b/tests/baselines/reference/functionOverloadsOnGenericArity1.symbols @@ -4,11 +4,11 @@ interface C { >C : Symbol(C, Decl(functionOverloadsOnGenericArity1.ts, 0, 0)) f(): string; ->f : Symbol(f, Decl(functionOverloadsOnGenericArity1.ts, 1, 13), Decl(functionOverloadsOnGenericArity1.ts, 2, 18)) +>f : Symbol(C.f, Decl(functionOverloadsOnGenericArity1.ts, 1, 13), Decl(functionOverloadsOnGenericArity1.ts, 2, 18)) >T : Symbol(T, Decl(functionOverloadsOnGenericArity1.ts, 2, 5)) f(): string; ->f : Symbol(f, Decl(functionOverloadsOnGenericArity1.ts, 1, 13), Decl(functionOverloadsOnGenericArity1.ts, 2, 18)) +>f : Symbol(C.f, Decl(functionOverloadsOnGenericArity1.ts, 1, 13), Decl(functionOverloadsOnGenericArity1.ts, 2, 18)) >T : Symbol(T, Decl(functionOverloadsOnGenericArity1.ts, 3, 5)) >U : Symbol(U, Decl(functionOverloadsOnGenericArity1.ts, 3, 7)) diff --git a/tests/baselines/reference/functionOverloadsOnGenericArity2.symbols b/tests/baselines/reference/functionOverloadsOnGenericArity2.symbols index 0dda3ba81a8..750da358d67 100644 --- a/tests/baselines/reference/functionOverloadsOnGenericArity2.symbols +++ b/tests/baselines/reference/functionOverloadsOnGenericArity2.symbols @@ -3,18 +3,18 @@ interface I { >I : Symbol(I, Decl(functionOverloadsOnGenericArity2.ts, 0, 0)) then(p: string): string; ->then : Symbol(then, Decl(functionOverloadsOnGenericArity2.ts, 0, 13), Decl(functionOverloadsOnGenericArity2.ts, 1, 28), Decl(functionOverloadsOnGenericArity2.ts, 2, 31)) +>then : Symbol(I.then, Decl(functionOverloadsOnGenericArity2.ts, 0, 13), Decl(functionOverloadsOnGenericArity2.ts, 1, 28), Decl(functionOverloadsOnGenericArity2.ts, 2, 31)) >p : Symbol(p, Decl(functionOverloadsOnGenericArity2.ts, 1, 9)) then(p: string): string; ->then : Symbol(then, Decl(functionOverloadsOnGenericArity2.ts, 0, 13), Decl(functionOverloadsOnGenericArity2.ts, 1, 28), Decl(functionOverloadsOnGenericArity2.ts, 2, 31)) +>then : Symbol(I.then, Decl(functionOverloadsOnGenericArity2.ts, 0, 13), Decl(functionOverloadsOnGenericArity2.ts, 1, 28), Decl(functionOverloadsOnGenericArity2.ts, 2, 31)) >U : Symbol(U, Decl(functionOverloadsOnGenericArity2.ts, 2, 9)) >p : Symbol(p, Decl(functionOverloadsOnGenericArity2.ts, 2, 12)) then(p: string): Date; ->then : Symbol(then, Decl(functionOverloadsOnGenericArity2.ts, 0, 13), Decl(functionOverloadsOnGenericArity2.ts, 1, 28), Decl(functionOverloadsOnGenericArity2.ts, 2, 31)) +>then : Symbol(I.then, Decl(functionOverloadsOnGenericArity2.ts, 0, 13), Decl(functionOverloadsOnGenericArity2.ts, 1, 28), Decl(functionOverloadsOnGenericArity2.ts, 2, 31)) >U : Symbol(U, Decl(functionOverloadsOnGenericArity2.ts, 3, 9)) >T : Symbol(T, Decl(functionOverloadsOnGenericArity2.ts, 3, 11)) >p : Symbol(p, Decl(functionOverloadsOnGenericArity2.ts, 3, 15)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) } diff --git a/tests/baselines/reference/functionOverloadsRecursiveGenericReturnType.symbols b/tests/baselines/reference/functionOverloadsRecursiveGenericReturnType.symbols index 42ed87e64d1..67f6545d387 100644 --- a/tests/baselines/reference/functionOverloadsRecursiveGenericReturnType.symbols +++ b/tests/baselines/reference/functionOverloadsRecursiveGenericReturnType.symbols @@ -4,7 +4,7 @@ class B{ >V : Symbol(V, Decl(functionOverloadsRecursiveGenericReturnType.ts, 0, 8)) private id: V; ->id : Symbol(id, Decl(functionOverloadsRecursiveGenericReturnType.ts, 0, 11)) +>id : Symbol(B.id, Decl(functionOverloadsRecursiveGenericReturnType.ts, 0, 11)) >V : Symbol(V, Decl(functionOverloadsRecursiveGenericReturnType.ts, 0, 8)) } @@ -13,7 +13,7 @@ class A{ >U : Symbol(U, Decl(functionOverloadsRecursiveGenericReturnType.ts, 4, 8)) GetEnumerator: () => B; ->GetEnumerator : Symbol(GetEnumerator, Decl(functionOverloadsRecursiveGenericReturnType.ts, 4, 11)) +>GetEnumerator : Symbol(A.GetEnumerator, Decl(functionOverloadsRecursiveGenericReturnType.ts, 4, 11)) >B : Symbol(B, Decl(functionOverloadsRecursiveGenericReturnType.ts, 0, 0)) >U : Symbol(U, Decl(functionOverloadsRecursiveGenericReturnType.ts, 4, 8)) } diff --git a/tests/baselines/reference/functionSignatureAssignmentCompat1.errors.txt b/tests/baselines/reference/functionSignatureAssignmentCompat1.errors.txt index 86c4728dda2..f91a4f91547 100644 --- a/tests/baselines/reference/functionSignatureAssignmentCompat1.errors.txt +++ b/tests/baselines/reference/functionSignatureAssignmentCompat1.errors.txt @@ -1,6 +1,6 @@ tests/cases/compiler/functionSignatureAssignmentCompat1.ts(10,5): error TS2322: Type '(delimiter?: string) => ParserFunc' is not assignable to type 'ParserFunc'. Types of parameters 'delimiter' and 'eventEmitter' are incompatible. - Type 'string' is not assignable to type 'number'. + Type 'number' is not assignable to type 'string'. ==== tests/cases/compiler/functionSignatureAssignmentCompat1.ts (1 errors) ==== @@ -17,5 +17,5 @@ tests/cases/compiler/functionSignatureAssignmentCompat1.ts(10,5): error TS2322: ~ !!! error TS2322: Type '(delimiter?: string) => ParserFunc' is not assignable to type 'ParserFunc'. !!! error TS2322: Types of parameters 'delimiter' and 'eventEmitter' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Type 'number' is not assignable to type 'string'. var e: ParserFunc = parsers.readline(); // ok \ No newline at end of file diff --git a/tests/baselines/reference/functionSubtypingOfVarArgs.symbols b/tests/baselines/reference/functionSubtypingOfVarArgs.symbols index 3aa266ec030..b77b48590e8 100644 --- a/tests/baselines/reference/functionSubtypingOfVarArgs.symbols +++ b/tests/baselines/reference/functionSubtypingOfVarArgs.symbols @@ -3,18 +3,18 @@ class EventBase { >EventBase : Symbol(EventBase, Decl(functionSubtypingOfVarArgs.ts, 0, 0)) private _listeners = []; ->_listeners : Symbol(_listeners, Decl(functionSubtypingOfVarArgs.ts, 0, 17)) +>_listeners : Symbol(EventBase._listeners, Decl(functionSubtypingOfVarArgs.ts, 0, 17)) add(listener: (...args: any[]) => void): void { ->add : Symbol(add, Decl(functionSubtypingOfVarArgs.ts, 1, 28)) +>add : Symbol(EventBase.add, Decl(functionSubtypingOfVarArgs.ts, 1, 28)) >listener : Symbol(listener, Decl(functionSubtypingOfVarArgs.ts, 3, 8)) >args : Symbol(args, Decl(functionSubtypingOfVarArgs.ts, 3, 19)) this._listeners.push(listener); >this._listeners.push : Symbol(Array.push, Decl(lib.d.ts, --, --)) ->this._listeners : Symbol(_listeners, Decl(functionSubtypingOfVarArgs.ts, 0, 17)) +>this._listeners : Symbol(EventBase._listeners, Decl(functionSubtypingOfVarArgs.ts, 0, 17)) >this : Symbol(EventBase, Decl(functionSubtypingOfVarArgs.ts, 0, 0)) ->_listeners : Symbol(_listeners, Decl(functionSubtypingOfVarArgs.ts, 0, 17)) +>_listeners : Symbol(EventBase._listeners, Decl(functionSubtypingOfVarArgs.ts, 0, 17)) >push : Symbol(Array.push, Decl(lib.d.ts, --, --)) >listener : Symbol(listener, Decl(functionSubtypingOfVarArgs.ts, 3, 8)) } @@ -25,7 +25,7 @@ class StringEvent extends EventBase { // should work >EventBase : Symbol(EventBase, Decl(functionSubtypingOfVarArgs.ts, 0, 0)) add(listener: (items: string) => void ) { // valid, items is subtype of args ->add : Symbol(add, Decl(functionSubtypingOfVarArgs.ts, 8, 37)) +>add : Symbol(StringEvent.add, Decl(functionSubtypingOfVarArgs.ts, 8, 37)) >listener : Symbol(listener, Decl(functionSubtypingOfVarArgs.ts, 9, 8)) >items : Symbol(items, Decl(functionSubtypingOfVarArgs.ts, 9, 19)) diff --git a/tests/baselines/reference/functionSubtypingOfVarArgs2.symbols b/tests/baselines/reference/functionSubtypingOfVarArgs2.symbols index c2f77199e28..f624730fd0c 100644 --- a/tests/baselines/reference/functionSubtypingOfVarArgs2.symbols +++ b/tests/baselines/reference/functionSubtypingOfVarArgs2.symbols @@ -3,19 +3,19 @@ class EventBase { >EventBase : Symbol(EventBase, Decl(functionSubtypingOfVarArgs2.ts, 0, 0)) private _listeners: { (...args: any[]): void; }[] = []; ->_listeners : Symbol(_listeners, Decl(functionSubtypingOfVarArgs2.ts, 0, 17)) +>_listeners : Symbol(EventBase._listeners, Decl(functionSubtypingOfVarArgs2.ts, 0, 17)) >args : Symbol(args, Decl(functionSubtypingOfVarArgs2.ts, 1, 27)) add(listener: (...args: any[]) => void): void { ->add : Symbol(add, Decl(functionSubtypingOfVarArgs2.ts, 1, 59)) +>add : Symbol(EventBase.add, Decl(functionSubtypingOfVarArgs2.ts, 1, 59)) >listener : Symbol(listener, Decl(functionSubtypingOfVarArgs2.ts, 3, 8)) >args : Symbol(args, Decl(functionSubtypingOfVarArgs2.ts, 3, 19)) this._listeners.push(listener); >this._listeners.push : Symbol(Array.push, Decl(lib.d.ts, --, --)) ->this._listeners : Symbol(_listeners, Decl(functionSubtypingOfVarArgs2.ts, 0, 17)) +>this._listeners : Symbol(EventBase._listeners, Decl(functionSubtypingOfVarArgs2.ts, 0, 17)) >this : Symbol(EventBase, Decl(functionSubtypingOfVarArgs2.ts, 0, 0)) ->_listeners : Symbol(_listeners, Decl(functionSubtypingOfVarArgs2.ts, 0, 17)) +>_listeners : Symbol(EventBase._listeners, Decl(functionSubtypingOfVarArgs2.ts, 0, 17)) >push : Symbol(Array.push, Decl(lib.d.ts, --, --)) >listener : Symbol(listener, Decl(functionSubtypingOfVarArgs2.ts, 3, 8)) } @@ -26,7 +26,7 @@ class StringEvent extends EventBase { >EventBase : Symbol(EventBase, Decl(functionSubtypingOfVarArgs2.ts, 0, 0)) add(listener: (items: string, moreitems: number) => void ) { ->add : Symbol(add, Decl(functionSubtypingOfVarArgs2.ts, 8, 37)) +>add : Symbol(StringEvent.add, Decl(functionSubtypingOfVarArgs2.ts, 8, 37)) >listener : Symbol(listener, Decl(functionSubtypingOfVarArgs2.ts, 9, 8)) >items : Symbol(items, Decl(functionSubtypingOfVarArgs2.ts, 9, 19)) >moreitems : Symbol(moreitems, Decl(functionSubtypingOfVarArgs2.ts, 9, 33)) diff --git a/tests/baselines/reference/functionType.types b/tests/baselines/reference/functionType.types index e7ea7a47edf..ac3d5c9944d 100644 --- a/tests/baselines/reference/functionType.types +++ b/tests/baselines/reference/functionType.types @@ -4,9 +4,9 @@ function salt() {} salt.apply("hello", []); >salt.apply("hello", []) : any ->salt.apply : (thisArg: any, argArray?: any) => any +>salt.apply : (this: Function, thisArg: any, argArray?: any) => any >salt : () => void ->apply : (thisArg: any, argArray?: any) => any +>apply : (this: Function, thisArg: any, argArray?: any) => any >"hello" : string >[] : undefined[] diff --git a/tests/baselines/reference/functionTypeArgumentArrayAssignment.symbols b/tests/baselines/reference/functionTypeArgumentArrayAssignment.symbols index 4b597bea9ae..33bf258606e 100644 --- a/tests/baselines/reference/functionTypeArgumentArrayAssignment.symbols +++ b/tests/baselines/reference/functionTypeArgumentArrayAssignment.symbols @@ -7,11 +7,11 @@ module test { >T : Symbol(T, Decl(functionTypeArgumentArrayAssignment.ts, 1, 20)) foo: T; ->foo : Symbol(foo, Decl(functionTypeArgumentArrayAssignment.ts, 1, 24)) +>foo : Symbol(Array.foo, Decl(functionTypeArgumentArrayAssignment.ts, 1, 24)) >T : Symbol(T, Decl(functionTypeArgumentArrayAssignment.ts, 1, 20)) length: number; ->length : Symbol(length, Decl(functionTypeArgumentArrayAssignment.ts, 2, 15)) +>length : Symbol(Array.length, Decl(functionTypeArgumentArrayAssignment.ts, 2, 15)) } function map() { diff --git a/tests/baselines/reference/funduleUsedAcrossFileBoundary.symbols b/tests/baselines/reference/funduleUsedAcrossFileBoundary.symbols index e0ca752d307..b094ebbfe8c 100644 --- a/tests/baselines/reference/funduleUsedAcrossFileBoundary.symbols +++ b/tests/baselines/reference/funduleUsedAcrossFileBoundary.symbols @@ -13,7 +13,7 @@ declare module Q { >T : Symbol(T, Decl(funduleUsedAcrossFileBoundary_file1.ts, 2, 22)) foo: string; ->foo : Symbol(foo, Decl(funduleUsedAcrossFileBoundary_file1.ts, 2, 26)) +>foo : Symbol(Promise.foo, Decl(funduleUsedAcrossFileBoundary_file1.ts, 2, 26)) } export function defer(): string; >defer : Symbol(defer, Decl(funduleUsedAcrossFileBoundary_file1.ts, 4, 5)) diff --git a/tests/baselines/reference/fuzzy.errors.txt b/tests/baselines/reference/fuzzy.errors.txt index 72ac4c816f9..19f0ad56a5e 100644 --- a/tests/baselines/reference/fuzzy.errors.txt +++ b/tests/baselines/reference/fuzzy.errors.txt @@ -4,7 +4,7 @@ tests/cases/compiler/fuzzy.ts(21,20): error TS2322: Type '{ anything: number; on Types of property 'oneI' are incompatible. Type 'this' is not assignable to type 'I'. Type 'C' is not assignable to type 'I'. -tests/cases/compiler/fuzzy.ts(25,20): error TS2352: Neither type '{ oneI: this; }' nor type 'R' is assignable to the other. +tests/cases/compiler/fuzzy.ts(25,20): error TS2352: Type '{ oneI: this; }' cannot be converted to type 'R'. Property 'anything' is missing in type '{ oneI: this; }'. @@ -43,7 +43,7 @@ tests/cases/compiler/fuzzy.ts(25,20): error TS2352: Neither type '{ oneI: this; worksToo():R { return ({ oneI: this }); ~~~~~~~~~~~~~~~~~~~ -!!! error TS2352: Neither type '{ oneI: this; }' nor type 'R' is assignable to the other. +!!! error TS2352: Type '{ oneI: this; }' cannot be converted to type 'R'. !!! error TS2352: Property 'anything' is missing in type '{ oneI: this; }'. } } diff --git a/tests/baselines/reference/generatedContextualTyping.symbols b/tests/baselines/reference/generatedContextualTyping.symbols index bc50fcc25c6..a31e38e8648 100644 --- a/tests/baselines/reference/generatedContextualTyping.symbols +++ b/tests/baselines/reference/generatedContextualTyping.symbols @@ -2,22 +2,22 @@ class Base { private p; } >Base : Symbol(Base, Decl(generatedContextualTyping.ts, 0, 0)) ->p : Symbol(p, Decl(generatedContextualTyping.ts, 1, 12)) +>p : Symbol(Base.p, Decl(generatedContextualTyping.ts, 1, 12)) class Derived1 extends Base { private m; } >Derived1 : Symbol(Derived1, Decl(generatedContextualTyping.ts, 1, 25)) >Base : Symbol(Base, Decl(generatedContextualTyping.ts, 0, 0)) ->m : Symbol(m, Decl(generatedContextualTyping.ts, 2, 29)) +>m : Symbol(Derived1.m, Decl(generatedContextualTyping.ts, 2, 29)) class Derived2 extends Base { private n; } >Derived2 : Symbol(Derived2, Decl(generatedContextualTyping.ts, 2, 42)) >Base : Symbol(Base, Decl(generatedContextualTyping.ts, 0, 0)) ->n : Symbol(n, Decl(generatedContextualTyping.ts, 3, 29)) +>n : Symbol(Derived2.n, Decl(generatedContextualTyping.ts, 3, 29)) interface Genric { func(n: T[]); } >Genric : Symbol(Genric, Decl(generatedContextualTyping.ts, 3, 42)) >T : Symbol(T, Decl(generatedContextualTyping.ts, 4, 17)) ->func : Symbol(func, Decl(generatedContextualTyping.ts, 4, 21)) +>func : Symbol(Genric.func, Decl(generatedContextualTyping.ts, 4, 21)) >n : Symbol(n, Decl(generatedContextualTyping.ts, 4, 27)) >T : Symbol(T, Decl(generatedContextualTyping.ts, 4, 17)) @@ -114,21 +114,21 @@ var x12: Genric = { func: n => { return [d1, d2]; } }; class x13 { member: () => Base[] = () => [d1, d2] } >x13 : Symbol(x13, Decl(generatedContextualTyping.ts, 17, 60)) ->member : Symbol(member, Decl(generatedContextualTyping.ts, 18, 11)) +>member : Symbol(x13.member, Decl(generatedContextualTyping.ts, 18, 11)) >Base : Symbol(Base, Decl(generatedContextualTyping.ts, 0, 0)) >d1 : Symbol(d1, Decl(generatedContextualTyping.ts, 5, 19)) >d2 : Symbol(d2, Decl(generatedContextualTyping.ts, 5, 40)) class x14 { member: () => Base[] = function() { return [d1, d2] } } >x14 : Symbol(x14, Decl(generatedContextualTyping.ts, 18, 51)) ->member : Symbol(member, Decl(generatedContextualTyping.ts, 19, 11)) +>member : Symbol(x14.member, Decl(generatedContextualTyping.ts, 19, 11)) >Base : Symbol(Base, Decl(generatedContextualTyping.ts, 0, 0)) >d1 : Symbol(d1, Decl(generatedContextualTyping.ts, 5, 19)) >d2 : Symbol(d2, Decl(generatedContextualTyping.ts, 5, 40)) class x15 { member: () => Base[] = function named() { return [d1, d2] } } >x15 : Symbol(x15, Decl(generatedContextualTyping.ts, 19, 67)) ->member : Symbol(member, Decl(generatedContextualTyping.ts, 20, 11)) +>member : Symbol(x15.member, Decl(generatedContextualTyping.ts, 20, 11)) >Base : Symbol(Base, Decl(generatedContextualTyping.ts, 0, 0)) >named : Symbol(named, Decl(generatedContextualTyping.ts, 20, 34)) >d1 : Symbol(d1, Decl(generatedContextualTyping.ts, 5, 19)) @@ -136,21 +136,21 @@ class x15 { member: () => Base[] = function named() { return [d1, d2] } } class x16 { member: { (): Base[]; } = () => [d1, d2] } >x16 : Symbol(x16, Decl(generatedContextualTyping.ts, 20, 73)) ->member : Symbol(member, Decl(generatedContextualTyping.ts, 21, 11)) +>member : Symbol(x16.member, Decl(generatedContextualTyping.ts, 21, 11)) >Base : Symbol(Base, Decl(generatedContextualTyping.ts, 0, 0)) >d1 : Symbol(d1, Decl(generatedContextualTyping.ts, 5, 19)) >d2 : Symbol(d2, Decl(generatedContextualTyping.ts, 5, 40)) class x17 { member: { (): Base[]; } = function() { return [d1, d2] } } >x17 : Symbol(x17, Decl(generatedContextualTyping.ts, 21, 54)) ->member : Symbol(member, Decl(generatedContextualTyping.ts, 22, 11)) +>member : Symbol(x17.member, Decl(generatedContextualTyping.ts, 22, 11)) >Base : Symbol(Base, Decl(generatedContextualTyping.ts, 0, 0)) >d1 : Symbol(d1, Decl(generatedContextualTyping.ts, 5, 19)) >d2 : Symbol(d2, Decl(generatedContextualTyping.ts, 5, 40)) class x18 { member: { (): Base[]; } = function named() { return [d1, d2] } } >x18 : Symbol(x18, Decl(generatedContextualTyping.ts, 22, 70)) ->member : Symbol(member, Decl(generatedContextualTyping.ts, 23, 11)) +>member : Symbol(x18.member, Decl(generatedContextualTyping.ts, 23, 11)) >Base : Symbol(Base, Decl(generatedContextualTyping.ts, 0, 0)) >named : Symbol(named, Decl(generatedContextualTyping.ts, 23, 37)) >d1 : Symbol(d1, Decl(generatedContextualTyping.ts, 5, 19)) @@ -158,14 +158,14 @@ class x18 { member: { (): Base[]; } = function named() { return [d1, d2] } } class x19 { member: Base[] = [d1, d2] } >x19 : Symbol(x19, Decl(generatedContextualTyping.ts, 23, 76)) ->member : Symbol(member, Decl(generatedContextualTyping.ts, 24, 11)) +>member : Symbol(x19.member, Decl(generatedContextualTyping.ts, 24, 11)) >Base : Symbol(Base, Decl(generatedContextualTyping.ts, 0, 0)) >d1 : Symbol(d1, Decl(generatedContextualTyping.ts, 5, 19)) >d2 : Symbol(d2, Decl(generatedContextualTyping.ts, 5, 40)) class x20 { member: Array = [d1, d2] } >x20 : Symbol(x20, Decl(generatedContextualTyping.ts, 24, 39)) ->member : Symbol(member, Decl(generatedContextualTyping.ts, 25, 11)) +>member : Symbol(x20.member, Decl(generatedContextualTyping.ts, 25, 11)) >Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >Base : Symbol(Base, Decl(generatedContextualTyping.ts, 0, 0)) >d1 : Symbol(d1, Decl(generatedContextualTyping.ts, 5, 19)) @@ -173,7 +173,7 @@ class x20 { member: Array = [d1, d2] } class x21 { member: { [n: number]: Base; } = [d1, d2] } >x21 : Symbol(x21, Decl(generatedContextualTyping.ts, 25, 44)) ->member : Symbol(member, Decl(generatedContextualTyping.ts, 26, 11)) +>member : Symbol(x21.member, Decl(generatedContextualTyping.ts, 26, 11)) >n : Symbol(n, Decl(generatedContextualTyping.ts, 26, 23)) >Base : Symbol(Base, Decl(generatedContextualTyping.ts, 0, 0)) >d1 : Symbol(d1, Decl(generatedContextualTyping.ts, 5, 19)) @@ -181,7 +181,7 @@ class x21 { member: { [n: number]: Base; } = [d1, d2] } class x22 { member: {n: Base[]; } = { n: [d1, d2] } } >x22 : Symbol(x22, Decl(generatedContextualTyping.ts, 26, 55)) ->member : Symbol(member, Decl(generatedContextualTyping.ts, 27, 11)) +>member : Symbol(x22.member, Decl(generatedContextualTyping.ts, 27, 11)) >n : Symbol(n, Decl(generatedContextualTyping.ts, 27, 21)) >Base : Symbol(Base, Decl(generatedContextualTyping.ts, 0, 0)) >n : Symbol(n, Decl(generatedContextualTyping.ts, 27, 38)) @@ -190,7 +190,7 @@ class x22 { member: {n: Base[]; } = { n: [d1, d2] } } class x23 { member: (s: Base[]) => any = n => { var n: Base[]; return null; } } >x23 : Symbol(x23, Decl(generatedContextualTyping.ts, 27, 54)) ->member : Symbol(member, Decl(generatedContextualTyping.ts, 28, 11)) +>member : Symbol(x23.member, Decl(generatedContextualTyping.ts, 28, 11)) >s : Symbol(s, Decl(generatedContextualTyping.ts, 28, 21)) >Base : Symbol(Base, Decl(generatedContextualTyping.ts, 0, 0)) >n : Symbol(n, Decl(generatedContextualTyping.ts, 28, 40), Decl(generatedContextualTyping.ts, 28, 51)) @@ -199,7 +199,7 @@ class x23 { member: (s: Base[]) => any = n => { var n: Base[]; return null; } } class x24 { member: Genric = { func: n => { return [d1, d2]; } } } >x24 : Symbol(x24, Decl(generatedContextualTyping.ts, 28, 79)) ->member : Symbol(member, Decl(generatedContextualTyping.ts, 29, 11)) +>member : Symbol(x24.member, Decl(generatedContextualTyping.ts, 29, 11)) >Genric : Symbol(Genric, Decl(generatedContextualTyping.ts, 3, 42)) >Base : Symbol(Base, Decl(generatedContextualTyping.ts, 0, 0)) >func : Symbol(func, Decl(generatedContextualTyping.ts, 29, 36)) @@ -209,21 +209,21 @@ class x24 { member: Genric = { func: n => { return [d1, d2]; } } } class x25 { private member: () => Base[] = () => [d1, d2] } >x25 : Symbol(x25, Decl(generatedContextualTyping.ts, 29, 72)) ->member : Symbol(member, Decl(generatedContextualTyping.ts, 30, 11)) +>member : Symbol(x25.member, Decl(generatedContextualTyping.ts, 30, 11)) >Base : Symbol(Base, Decl(generatedContextualTyping.ts, 0, 0)) >d1 : Symbol(d1, Decl(generatedContextualTyping.ts, 5, 19)) >d2 : Symbol(d2, Decl(generatedContextualTyping.ts, 5, 40)) class x26 { private member: () => Base[] = function() { return [d1, d2] } } >x26 : Symbol(x26, Decl(generatedContextualTyping.ts, 30, 59)) ->member : Symbol(member, Decl(generatedContextualTyping.ts, 31, 11)) +>member : Symbol(x26.member, Decl(generatedContextualTyping.ts, 31, 11)) >Base : Symbol(Base, Decl(generatedContextualTyping.ts, 0, 0)) >d1 : Symbol(d1, Decl(generatedContextualTyping.ts, 5, 19)) >d2 : Symbol(d2, Decl(generatedContextualTyping.ts, 5, 40)) class x27 { private member: () => Base[] = function named() { return [d1, d2] } } >x27 : Symbol(x27, Decl(generatedContextualTyping.ts, 31, 75)) ->member : Symbol(member, Decl(generatedContextualTyping.ts, 32, 11)) +>member : Symbol(x27.member, Decl(generatedContextualTyping.ts, 32, 11)) >Base : Symbol(Base, Decl(generatedContextualTyping.ts, 0, 0)) >named : Symbol(named, Decl(generatedContextualTyping.ts, 32, 42)) >d1 : Symbol(d1, Decl(generatedContextualTyping.ts, 5, 19)) @@ -231,21 +231,21 @@ class x27 { private member: () => Base[] = function named() { return [d1, d2] } class x28 { private member: { (): Base[]; } = () => [d1, d2] } >x28 : Symbol(x28, Decl(generatedContextualTyping.ts, 32, 81)) ->member : Symbol(member, Decl(generatedContextualTyping.ts, 33, 11)) +>member : Symbol(x28.member, Decl(generatedContextualTyping.ts, 33, 11)) >Base : Symbol(Base, Decl(generatedContextualTyping.ts, 0, 0)) >d1 : Symbol(d1, Decl(generatedContextualTyping.ts, 5, 19)) >d2 : Symbol(d2, Decl(generatedContextualTyping.ts, 5, 40)) class x29 { private member: { (): Base[]; } = function() { return [d1, d2] } } >x29 : Symbol(x29, Decl(generatedContextualTyping.ts, 33, 62)) ->member : Symbol(member, Decl(generatedContextualTyping.ts, 34, 11)) +>member : Symbol(x29.member, Decl(generatedContextualTyping.ts, 34, 11)) >Base : Symbol(Base, Decl(generatedContextualTyping.ts, 0, 0)) >d1 : Symbol(d1, Decl(generatedContextualTyping.ts, 5, 19)) >d2 : Symbol(d2, Decl(generatedContextualTyping.ts, 5, 40)) class x30 { private member: { (): Base[]; } = function named() { return [d1, d2] } } >x30 : Symbol(x30, Decl(generatedContextualTyping.ts, 34, 78)) ->member : Symbol(member, Decl(generatedContextualTyping.ts, 35, 11)) +>member : Symbol(x30.member, Decl(generatedContextualTyping.ts, 35, 11)) >Base : Symbol(Base, Decl(generatedContextualTyping.ts, 0, 0)) >named : Symbol(named, Decl(generatedContextualTyping.ts, 35, 45)) >d1 : Symbol(d1, Decl(generatedContextualTyping.ts, 5, 19)) @@ -253,14 +253,14 @@ class x30 { private member: { (): Base[]; } = function named() { return [d1, d2] class x31 { private member: Base[] = [d1, d2] } >x31 : Symbol(x31, Decl(generatedContextualTyping.ts, 35, 84)) ->member : Symbol(member, Decl(generatedContextualTyping.ts, 36, 11)) +>member : Symbol(x31.member, Decl(generatedContextualTyping.ts, 36, 11)) >Base : Symbol(Base, Decl(generatedContextualTyping.ts, 0, 0)) >d1 : Symbol(d1, Decl(generatedContextualTyping.ts, 5, 19)) >d2 : Symbol(d2, Decl(generatedContextualTyping.ts, 5, 40)) class x32 { private member: Array = [d1, d2] } >x32 : Symbol(x32, Decl(generatedContextualTyping.ts, 36, 47)) ->member : Symbol(member, Decl(generatedContextualTyping.ts, 37, 11)) +>member : Symbol(x32.member, Decl(generatedContextualTyping.ts, 37, 11)) >Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >Base : Symbol(Base, Decl(generatedContextualTyping.ts, 0, 0)) >d1 : Symbol(d1, Decl(generatedContextualTyping.ts, 5, 19)) @@ -268,7 +268,7 @@ class x32 { private member: Array = [d1, d2] } class x33 { private member: { [n: number]: Base; } = [d1, d2] } >x33 : Symbol(x33, Decl(generatedContextualTyping.ts, 37, 52)) ->member : Symbol(member, Decl(generatedContextualTyping.ts, 38, 11)) +>member : Symbol(x33.member, Decl(generatedContextualTyping.ts, 38, 11)) >n : Symbol(n, Decl(generatedContextualTyping.ts, 38, 31)) >Base : Symbol(Base, Decl(generatedContextualTyping.ts, 0, 0)) >d1 : Symbol(d1, Decl(generatedContextualTyping.ts, 5, 19)) @@ -276,7 +276,7 @@ class x33 { private member: { [n: number]: Base; } = [d1, d2] } class x34 { private member: {n: Base[]; } = { n: [d1, d2] } } >x34 : Symbol(x34, Decl(generatedContextualTyping.ts, 38, 63)) ->member : Symbol(member, Decl(generatedContextualTyping.ts, 39, 11)) +>member : Symbol(x34.member, Decl(generatedContextualTyping.ts, 39, 11)) >n : Symbol(n, Decl(generatedContextualTyping.ts, 39, 29)) >Base : Symbol(Base, Decl(generatedContextualTyping.ts, 0, 0)) >n : Symbol(n, Decl(generatedContextualTyping.ts, 39, 46)) @@ -285,7 +285,7 @@ class x34 { private member: {n: Base[]; } = { n: [d1, d2] } } class x35 { private member: (s: Base[]) => any = n => { var n: Base[]; return null; } } >x35 : Symbol(x35, Decl(generatedContextualTyping.ts, 39, 62)) ->member : Symbol(member, Decl(generatedContextualTyping.ts, 40, 11)) +>member : Symbol(x35.member, Decl(generatedContextualTyping.ts, 40, 11)) >s : Symbol(s, Decl(generatedContextualTyping.ts, 40, 29)) >Base : Symbol(Base, Decl(generatedContextualTyping.ts, 0, 0)) >n : Symbol(n, Decl(generatedContextualTyping.ts, 40, 48), Decl(generatedContextualTyping.ts, 40, 59)) @@ -294,7 +294,7 @@ class x35 { private member: (s: Base[]) => any = n => { var n: Base[]; return nu class x36 { private member: Genric = { func: n => { return [d1, d2]; } } } >x36 : Symbol(x36, Decl(generatedContextualTyping.ts, 40, 87)) ->member : Symbol(member, Decl(generatedContextualTyping.ts, 41, 11)) +>member : Symbol(x36.member, Decl(generatedContextualTyping.ts, 41, 11)) >Genric : Symbol(Genric, Decl(generatedContextualTyping.ts, 3, 42)) >Base : Symbol(Base, Decl(generatedContextualTyping.ts, 0, 0)) >func : Symbol(func, Decl(generatedContextualTyping.ts, 41, 44)) @@ -304,21 +304,21 @@ class x36 { private member: Genric = { func: n => { return [d1, d2]; } } } class x37 { public member: () => Base[] = () => [d1, d2] } >x37 : Symbol(x37, Decl(generatedContextualTyping.ts, 41, 80)) ->member : Symbol(member, Decl(generatedContextualTyping.ts, 42, 11)) +>member : Symbol(x37.member, Decl(generatedContextualTyping.ts, 42, 11)) >Base : Symbol(Base, Decl(generatedContextualTyping.ts, 0, 0)) >d1 : Symbol(d1, Decl(generatedContextualTyping.ts, 5, 19)) >d2 : Symbol(d2, Decl(generatedContextualTyping.ts, 5, 40)) class x38 { public member: () => Base[] = function() { return [d1, d2] } } >x38 : Symbol(x38, Decl(generatedContextualTyping.ts, 42, 58)) ->member : Symbol(member, Decl(generatedContextualTyping.ts, 43, 11)) +>member : Symbol(x38.member, Decl(generatedContextualTyping.ts, 43, 11)) >Base : Symbol(Base, Decl(generatedContextualTyping.ts, 0, 0)) >d1 : Symbol(d1, Decl(generatedContextualTyping.ts, 5, 19)) >d2 : Symbol(d2, Decl(generatedContextualTyping.ts, 5, 40)) class x39 { public member: () => Base[] = function named() { return [d1, d2] } } >x39 : Symbol(x39, Decl(generatedContextualTyping.ts, 43, 74)) ->member : Symbol(member, Decl(generatedContextualTyping.ts, 44, 11)) +>member : Symbol(x39.member, Decl(generatedContextualTyping.ts, 44, 11)) >Base : Symbol(Base, Decl(generatedContextualTyping.ts, 0, 0)) >named : Symbol(named, Decl(generatedContextualTyping.ts, 44, 41)) >d1 : Symbol(d1, Decl(generatedContextualTyping.ts, 5, 19)) @@ -326,21 +326,21 @@ class x39 { public member: () => Base[] = function named() { return [d1, d2] } } class x40 { public member: { (): Base[]; } = () => [d1, d2] } >x40 : Symbol(x40, Decl(generatedContextualTyping.ts, 44, 80)) ->member : Symbol(member, Decl(generatedContextualTyping.ts, 45, 11)) +>member : Symbol(x40.member, Decl(generatedContextualTyping.ts, 45, 11)) >Base : Symbol(Base, Decl(generatedContextualTyping.ts, 0, 0)) >d1 : Symbol(d1, Decl(generatedContextualTyping.ts, 5, 19)) >d2 : Symbol(d2, Decl(generatedContextualTyping.ts, 5, 40)) class x41 { public member: { (): Base[]; } = function() { return [d1, d2] } } >x41 : Symbol(x41, Decl(generatedContextualTyping.ts, 45, 61)) ->member : Symbol(member, Decl(generatedContextualTyping.ts, 46, 11)) +>member : Symbol(x41.member, Decl(generatedContextualTyping.ts, 46, 11)) >Base : Symbol(Base, Decl(generatedContextualTyping.ts, 0, 0)) >d1 : Symbol(d1, Decl(generatedContextualTyping.ts, 5, 19)) >d2 : Symbol(d2, Decl(generatedContextualTyping.ts, 5, 40)) class x42 { public member: { (): Base[]; } = function named() { return [d1, d2] } } >x42 : Symbol(x42, Decl(generatedContextualTyping.ts, 46, 77)) ->member : Symbol(member, Decl(generatedContextualTyping.ts, 47, 11)) +>member : Symbol(x42.member, Decl(generatedContextualTyping.ts, 47, 11)) >Base : Symbol(Base, Decl(generatedContextualTyping.ts, 0, 0)) >named : Symbol(named, Decl(generatedContextualTyping.ts, 47, 44)) >d1 : Symbol(d1, Decl(generatedContextualTyping.ts, 5, 19)) @@ -348,14 +348,14 @@ class x42 { public member: { (): Base[]; } = function named() { return [d1, d2] class x43 { public member: Base[] = [d1, d2] } >x43 : Symbol(x43, Decl(generatedContextualTyping.ts, 47, 83)) ->member : Symbol(member, Decl(generatedContextualTyping.ts, 48, 11)) +>member : Symbol(x43.member, Decl(generatedContextualTyping.ts, 48, 11)) >Base : Symbol(Base, Decl(generatedContextualTyping.ts, 0, 0)) >d1 : Symbol(d1, Decl(generatedContextualTyping.ts, 5, 19)) >d2 : Symbol(d2, Decl(generatedContextualTyping.ts, 5, 40)) class x44 { public member: Array = [d1, d2] } >x44 : Symbol(x44, Decl(generatedContextualTyping.ts, 48, 46)) ->member : Symbol(member, Decl(generatedContextualTyping.ts, 49, 11)) +>member : Symbol(x44.member, Decl(generatedContextualTyping.ts, 49, 11)) >Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >Base : Symbol(Base, Decl(generatedContextualTyping.ts, 0, 0)) >d1 : Symbol(d1, Decl(generatedContextualTyping.ts, 5, 19)) @@ -363,7 +363,7 @@ class x44 { public member: Array = [d1, d2] } class x45 { public member: { [n: number]: Base; } = [d1, d2] } >x45 : Symbol(x45, Decl(generatedContextualTyping.ts, 49, 51)) ->member : Symbol(member, Decl(generatedContextualTyping.ts, 50, 11)) +>member : Symbol(x45.member, Decl(generatedContextualTyping.ts, 50, 11)) >n : Symbol(n, Decl(generatedContextualTyping.ts, 50, 30)) >Base : Symbol(Base, Decl(generatedContextualTyping.ts, 0, 0)) >d1 : Symbol(d1, Decl(generatedContextualTyping.ts, 5, 19)) @@ -371,7 +371,7 @@ class x45 { public member: { [n: number]: Base; } = [d1, d2] } class x46 { public member: {n: Base[]; } = { n: [d1, d2] } } >x46 : Symbol(x46, Decl(generatedContextualTyping.ts, 50, 62)) ->member : Symbol(member, Decl(generatedContextualTyping.ts, 51, 11)) +>member : Symbol(x46.member, Decl(generatedContextualTyping.ts, 51, 11)) >n : Symbol(n, Decl(generatedContextualTyping.ts, 51, 28)) >Base : Symbol(Base, Decl(generatedContextualTyping.ts, 0, 0)) >n : Symbol(n, Decl(generatedContextualTyping.ts, 51, 45)) @@ -380,7 +380,7 @@ class x46 { public member: {n: Base[]; } = { n: [d1, d2] } } class x47 { public member: (s: Base[]) => any = n => { var n: Base[]; return null; } } >x47 : Symbol(x47, Decl(generatedContextualTyping.ts, 51, 61)) ->member : Symbol(member, Decl(generatedContextualTyping.ts, 52, 11)) +>member : Symbol(x47.member, Decl(generatedContextualTyping.ts, 52, 11)) >s : Symbol(s, Decl(generatedContextualTyping.ts, 52, 28)) >Base : Symbol(Base, Decl(generatedContextualTyping.ts, 0, 0)) >n : Symbol(n, Decl(generatedContextualTyping.ts, 52, 47), Decl(generatedContextualTyping.ts, 52, 58)) @@ -389,7 +389,7 @@ class x47 { public member: (s: Base[]) => any = n => { var n: Base[]; return nul class x48 { public member: Genric = { func: n => { return [d1, d2]; } } } >x48 : Symbol(x48, Decl(generatedContextualTyping.ts, 52, 86)) ->member : Symbol(member, Decl(generatedContextualTyping.ts, 53, 11)) +>member : Symbol(x48.member, Decl(generatedContextualTyping.ts, 53, 11)) >Genric : Symbol(Genric, Decl(generatedContextualTyping.ts, 3, 42)) >Base : Symbol(Base, Decl(generatedContextualTyping.ts, 0, 0)) >func : Symbol(func, Decl(generatedContextualTyping.ts, 53, 43)) @@ -779,21 +779,21 @@ class x96 { constructor(parm: Genric = { func: n => { return [d1, d2]; } } class x97 { constructor(public parm: () => Base[] = () => [d1, d2]) { } } >x97 : Symbol(x97, Decl(generatedContextualTyping.ts, 101, 87)) ->parm : Symbol(parm, Decl(generatedContextualTyping.ts, 102, 24)) +>parm : Symbol(x97.parm, Decl(generatedContextualTyping.ts, 102, 24)) >Base : Symbol(Base, Decl(generatedContextualTyping.ts, 0, 0)) >d1 : Symbol(d1, Decl(generatedContextualTyping.ts, 5, 19)) >d2 : Symbol(d2, Decl(generatedContextualTyping.ts, 5, 40)) class x98 { constructor(public parm: () => Base[] = function() { return [d1, d2] }) { } } >x98 : Symbol(x98, Decl(generatedContextualTyping.ts, 102, 73)) ->parm : Symbol(parm, Decl(generatedContextualTyping.ts, 103, 24)) +>parm : Symbol(x98.parm, Decl(generatedContextualTyping.ts, 103, 24)) >Base : Symbol(Base, Decl(generatedContextualTyping.ts, 0, 0)) >d1 : Symbol(d1, Decl(generatedContextualTyping.ts, 5, 19)) >d2 : Symbol(d2, Decl(generatedContextualTyping.ts, 5, 40)) class x99 { constructor(public parm: () => Base[] = function named() { return [d1, d2] }) { } } >x99 : Symbol(x99, Decl(generatedContextualTyping.ts, 103, 89)) ->parm : Symbol(parm, Decl(generatedContextualTyping.ts, 104, 24)) +>parm : Symbol(x99.parm, Decl(generatedContextualTyping.ts, 104, 24)) >Base : Symbol(Base, Decl(generatedContextualTyping.ts, 0, 0)) >named : Symbol(named, Decl(generatedContextualTyping.ts, 104, 51)) >d1 : Symbol(d1, Decl(generatedContextualTyping.ts, 5, 19)) @@ -801,21 +801,21 @@ class x99 { constructor(public parm: () => Base[] = function named() { return [d class x100 { constructor(public parm: { (): Base[]; } = () => [d1, d2]) { } } >x100 : Symbol(x100, Decl(generatedContextualTyping.ts, 104, 95)) ->parm : Symbol(parm, Decl(generatedContextualTyping.ts, 105, 25)) +>parm : Symbol(x100.parm, Decl(generatedContextualTyping.ts, 105, 25)) >Base : Symbol(Base, Decl(generatedContextualTyping.ts, 0, 0)) >d1 : Symbol(d1, Decl(generatedContextualTyping.ts, 5, 19)) >d2 : Symbol(d2, Decl(generatedContextualTyping.ts, 5, 40)) class x101 { constructor(public parm: { (): Base[]; } = function() { return [d1, d2] }) { } } >x101 : Symbol(x101, Decl(generatedContextualTyping.ts, 105, 77)) ->parm : Symbol(parm, Decl(generatedContextualTyping.ts, 106, 25)) +>parm : Symbol(x101.parm, Decl(generatedContextualTyping.ts, 106, 25)) >Base : Symbol(Base, Decl(generatedContextualTyping.ts, 0, 0)) >d1 : Symbol(d1, Decl(generatedContextualTyping.ts, 5, 19)) >d2 : Symbol(d2, Decl(generatedContextualTyping.ts, 5, 40)) class x102 { constructor(public parm: { (): Base[]; } = function named() { return [d1, d2] }) { } } >x102 : Symbol(x102, Decl(generatedContextualTyping.ts, 106, 93)) ->parm : Symbol(parm, Decl(generatedContextualTyping.ts, 107, 25)) +>parm : Symbol(x102.parm, Decl(generatedContextualTyping.ts, 107, 25)) >Base : Symbol(Base, Decl(generatedContextualTyping.ts, 0, 0)) >named : Symbol(named, Decl(generatedContextualTyping.ts, 107, 55)) >d1 : Symbol(d1, Decl(generatedContextualTyping.ts, 5, 19)) @@ -823,14 +823,14 @@ class x102 { constructor(public parm: { (): Base[]; } = function named() { retur class x103 { constructor(public parm: Base[] = [d1, d2]) { } } >x103 : Symbol(x103, Decl(generatedContextualTyping.ts, 107, 99)) ->parm : Symbol(parm, Decl(generatedContextualTyping.ts, 108, 25)) +>parm : Symbol(x103.parm, Decl(generatedContextualTyping.ts, 108, 25)) >Base : Symbol(Base, Decl(generatedContextualTyping.ts, 0, 0)) >d1 : Symbol(d1, Decl(generatedContextualTyping.ts, 5, 19)) >d2 : Symbol(d2, Decl(generatedContextualTyping.ts, 5, 40)) class x104 { constructor(public parm: Array = [d1, d2]) { } } >x104 : Symbol(x104, Decl(generatedContextualTyping.ts, 108, 62)) ->parm : Symbol(parm, Decl(generatedContextualTyping.ts, 109, 25)) +>parm : Symbol(x104.parm, Decl(generatedContextualTyping.ts, 109, 25)) >Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >Base : Symbol(Base, Decl(generatedContextualTyping.ts, 0, 0)) >d1 : Symbol(d1, Decl(generatedContextualTyping.ts, 5, 19)) @@ -838,7 +838,7 @@ class x104 { constructor(public parm: Array = [d1, d2]) { } } class x105 { constructor(public parm: { [n: number]: Base; } = [d1, d2]) { } } >x105 : Symbol(x105, Decl(generatedContextualTyping.ts, 109, 67)) ->parm : Symbol(parm, Decl(generatedContextualTyping.ts, 110, 25)) +>parm : Symbol(x105.parm, Decl(generatedContextualTyping.ts, 110, 25)) >n : Symbol(n, Decl(generatedContextualTyping.ts, 110, 41)) >Base : Symbol(Base, Decl(generatedContextualTyping.ts, 0, 0)) >d1 : Symbol(d1, Decl(generatedContextualTyping.ts, 5, 19)) @@ -846,7 +846,7 @@ class x105 { constructor(public parm: { [n: number]: Base; } = [d1, d2]) { } } class x106 { constructor(public parm: {n: Base[]; } = { n: [d1, d2] }) { } } >x106 : Symbol(x106, Decl(generatedContextualTyping.ts, 110, 78)) ->parm : Symbol(parm, Decl(generatedContextualTyping.ts, 111, 25)) +>parm : Symbol(x106.parm, Decl(generatedContextualTyping.ts, 111, 25)) >n : Symbol(n, Decl(generatedContextualTyping.ts, 111, 39)) >Base : Symbol(Base, Decl(generatedContextualTyping.ts, 0, 0)) >n : Symbol(n, Decl(generatedContextualTyping.ts, 111, 56)) @@ -855,7 +855,7 @@ class x106 { constructor(public parm: {n: Base[]; } = { n: [d1, d2] }) { } } class x107 { constructor(public parm: (s: Base[]) => any = n => { var n: Base[]; return null; }) { } } >x107 : Symbol(x107, Decl(generatedContextualTyping.ts, 111, 77)) ->parm : Symbol(parm, Decl(generatedContextualTyping.ts, 112, 25)) +>parm : Symbol(x107.parm, Decl(generatedContextualTyping.ts, 112, 25)) >s : Symbol(s, Decl(generatedContextualTyping.ts, 112, 39)) >Base : Symbol(Base, Decl(generatedContextualTyping.ts, 0, 0)) >n : Symbol(n, Decl(generatedContextualTyping.ts, 112, 58), Decl(generatedContextualTyping.ts, 112, 69)) @@ -864,7 +864,7 @@ class x107 { constructor(public parm: (s: Base[]) => any = n => { var n: Base[]; class x108 { constructor(public parm: Genric = { func: n => { return [d1, d2]; } }) { } } >x108 : Symbol(x108, Decl(generatedContextualTyping.ts, 112, 102)) ->parm : Symbol(parm, Decl(generatedContextualTyping.ts, 113, 25)) +>parm : Symbol(x108.parm, Decl(generatedContextualTyping.ts, 113, 25)) >Genric : Symbol(Genric, Decl(generatedContextualTyping.ts, 3, 42)) >Base : Symbol(Base, Decl(generatedContextualTyping.ts, 0, 0)) >func : Symbol(func, Decl(generatedContextualTyping.ts, 113, 54)) @@ -874,21 +874,21 @@ class x108 { constructor(public parm: Genric = { func: n => { return [d1, class x109 { constructor(private parm: () => Base[] = () => [d1, d2]) { } } >x109 : Symbol(x109, Decl(generatedContextualTyping.ts, 113, 95)) ->parm : Symbol(parm, Decl(generatedContextualTyping.ts, 114, 25)) +>parm : Symbol(x109.parm, Decl(generatedContextualTyping.ts, 114, 25)) >Base : Symbol(Base, Decl(generatedContextualTyping.ts, 0, 0)) >d1 : Symbol(d1, Decl(generatedContextualTyping.ts, 5, 19)) >d2 : Symbol(d2, Decl(generatedContextualTyping.ts, 5, 40)) class x110 { constructor(private parm: () => Base[] = function() { return [d1, d2] }) { } } >x110 : Symbol(x110, Decl(generatedContextualTyping.ts, 114, 75)) ->parm : Symbol(parm, Decl(generatedContextualTyping.ts, 115, 25)) +>parm : Symbol(x110.parm, Decl(generatedContextualTyping.ts, 115, 25)) >Base : Symbol(Base, Decl(generatedContextualTyping.ts, 0, 0)) >d1 : Symbol(d1, Decl(generatedContextualTyping.ts, 5, 19)) >d2 : Symbol(d2, Decl(generatedContextualTyping.ts, 5, 40)) class x111 { constructor(private parm: () => Base[] = function named() { return [d1, d2] }) { } } >x111 : Symbol(x111, Decl(generatedContextualTyping.ts, 115, 91)) ->parm : Symbol(parm, Decl(generatedContextualTyping.ts, 116, 25)) +>parm : Symbol(x111.parm, Decl(generatedContextualTyping.ts, 116, 25)) >Base : Symbol(Base, Decl(generatedContextualTyping.ts, 0, 0)) >named : Symbol(named, Decl(generatedContextualTyping.ts, 116, 53)) >d1 : Symbol(d1, Decl(generatedContextualTyping.ts, 5, 19)) @@ -896,21 +896,21 @@ class x111 { constructor(private parm: () => Base[] = function named() { return class x112 { constructor(private parm: { (): Base[]; } = () => [d1, d2]) { } } >x112 : Symbol(x112, Decl(generatedContextualTyping.ts, 116, 97)) ->parm : Symbol(parm, Decl(generatedContextualTyping.ts, 117, 25)) +>parm : Symbol(x112.parm, Decl(generatedContextualTyping.ts, 117, 25)) >Base : Symbol(Base, Decl(generatedContextualTyping.ts, 0, 0)) >d1 : Symbol(d1, Decl(generatedContextualTyping.ts, 5, 19)) >d2 : Symbol(d2, Decl(generatedContextualTyping.ts, 5, 40)) class x113 { constructor(private parm: { (): Base[]; } = function() { return [d1, d2] }) { } } >x113 : Symbol(x113, Decl(generatedContextualTyping.ts, 117, 78)) ->parm : Symbol(parm, Decl(generatedContextualTyping.ts, 118, 25)) +>parm : Symbol(x113.parm, Decl(generatedContextualTyping.ts, 118, 25)) >Base : Symbol(Base, Decl(generatedContextualTyping.ts, 0, 0)) >d1 : Symbol(d1, Decl(generatedContextualTyping.ts, 5, 19)) >d2 : Symbol(d2, Decl(generatedContextualTyping.ts, 5, 40)) class x114 { constructor(private parm: { (): Base[]; } = function named() { return [d1, d2] }) { } } >x114 : Symbol(x114, Decl(generatedContextualTyping.ts, 118, 94)) ->parm : Symbol(parm, Decl(generatedContextualTyping.ts, 119, 25)) +>parm : Symbol(x114.parm, Decl(generatedContextualTyping.ts, 119, 25)) >Base : Symbol(Base, Decl(generatedContextualTyping.ts, 0, 0)) >named : Symbol(named, Decl(generatedContextualTyping.ts, 119, 56)) >d1 : Symbol(d1, Decl(generatedContextualTyping.ts, 5, 19)) @@ -918,14 +918,14 @@ class x114 { constructor(private parm: { (): Base[]; } = function named() { retu class x115 { constructor(private parm: Base[] = [d1, d2]) { } } >x115 : Symbol(x115, Decl(generatedContextualTyping.ts, 119, 100)) ->parm : Symbol(parm, Decl(generatedContextualTyping.ts, 120, 25)) +>parm : Symbol(x115.parm, Decl(generatedContextualTyping.ts, 120, 25)) >Base : Symbol(Base, Decl(generatedContextualTyping.ts, 0, 0)) >d1 : Symbol(d1, Decl(generatedContextualTyping.ts, 5, 19)) >d2 : Symbol(d2, Decl(generatedContextualTyping.ts, 5, 40)) class x116 { constructor(private parm: Array = [d1, d2]) { } } >x116 : Symbol(x116, Decl(generatedContextualTyping.ts, 120, 63)) ->parm : Symbol(parm, Decl(generatedContextualTyping.ts, 121, 25)) +>parm : Symbol(x116.parm, Decl(generatedContextualTyping.ts, 121, 25)) >Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >Base : Symbol(Base, Decl(generatedContextualTyping.ts, 0, 0)) >d1 : Symbol(d1, Decl(generatedContextualTyping.ts, 5, 19)) @@ -933,7 +933,7 @@ class x116 { constructor(private parm: Array = [d1, d2]) { } } class x117 { constructor(private parm: { [n: number]: Base; } = [d1, d2]) { } } >x117 : Symbol(x117, Decl(generatedContextualTyping.ts, 121, 68)) ->parm : Symbol(parm, Decl(generatedContextualTyping.ts, 122, 25)) +>parm : Symbol(x117.parm, Decl(generatedContextualTyping.ts, 122, 25)) >n : Symbol(n, Decl(generatedContextualTyping.ts, 122, 42)) >Base : Symbol(Base, Decl(generatedContextualTyping.ts, 0, 0)) >d1 : Symbol(d1, Decl(generatedContextualTyping.ts, 5, 19)) @@ -941,7 +941,7 @@ class x117 { constructor(private parm: { [n: number]: Base; } = [d1, d2]) { } } class x118 { constructor(private parm: {n: Base[]; } = { n: [d1, d2] }) { } } >x118 : Symbol(x118, Decl(generatedContextualTyping.ts, 122, 79)) ->parm : Symbol(parm, Decl(generatedContextualTyping.ts, 123, 25)) +>parm : Symbol(x118.parm, Decl(generatedContextualTyping.ts, 123, 25)) >n : Symbol(n, Decl(generatedContextualTyping.ts, 123, 40)) >Base : Symbol(Base, Decl(generatedContextualTyping.ts, 0, 0)) >n : Symbol(n, Decl(generatedContextualTyping.ts, 123, 57)) @@ -950,7 +950,7 @@ class x118 { constructor(private parm: {n: Base[]; } = { n: [d1, d2] }) { } } class x119 { constructor(private parm: (s: Base[]) => any = n => { var n: Base[]; return null; }) { } } >x119 : Symbol(x119, Decl(generatedContextualTyping.ts, 123, 78)) ->parm : Symbol(parm, Decl(generatedContextualTyping.ts, 124, 25)) +>parm : Symbol(x119.parm, Decl(generatedContextualTyping.ts, 124, 25)) >s : Symbol(s, Decl(generatedContextualTyping.ts, 124, 40)) >Base : Symbol(Base, Decl(generatedContextualTyping.ts, 0, 0)) >n : Symbol(n, Decl(generatedContextualTyping.ts, 124, 59), Decl(generatedContextualTyping.ts, 124, 70)) @@ -959,7 +959,7 @@ class x119 { constructor(private parm: (s: Base[]) => any = n => { var n: Base[] class x120 { constructor(private parm: Genric = { func: n => { return [d1, d2]; } }) { } } >x120 : Symbol(x120, Decl(generatedContextualTyping.ts, 124, 103)) ->parm : Symbol(parm, Decl(generatedContextualTyping.ts, 125, 25)) +>parm : Symbol(x120.parm, Decl(generatedContextualTyping.ts, 125, 25)) >Genric : Symbol(Genric, Decl(generatedContextualTyping.ts, 3, 42)) >Base : Symbol(Base, Decl(generatedContextualTyping.ts, 0, 0)) >func : Symbol(func, Decl(generatedContextualTyping.ts, 125, 55)) diff --git a/tests/baselines/reference/generativeRecursionWithTypeOf.symbols b/tests/baselines/reference/generativeRecursionWithTypeOf.symbols index 630923d2c59..5f8f4b78af4 100644 --- a/tests/baselines/reference/generativeRecursionWithTypeOf.symbols +++ b/tests/baselines/reference/generativeRecursionWithTypeOf.symbols @@ -8,7 +8,7 @@ class C { >x : Symbol(x, Decl(generativeRecursionWithTypeOf.ts, 1, 15)) type: T; ->type : Symbol(type, Decl(generativeRecursionWithTypeOf.ts, 1, 29)) +>type : Symbol(C.type, Decl(generativeRecursionWithTypeOf.ts, 1, 29)) >T : Symbol(T, Decl(generativeRecursionWithTypeOf.ts, 0, 8)) } diff --git a/tests/baselines/reference/generatorES6_2.symbols b/tests/baselines/reference/generatorES6_2.symbols index a64b1304692..2b4d93ca940 100644 --- a/tests/baselines/reference/generatorES6_2.symbols +++ b/tests/baselines/reference/generatorES6_2.symbols @@ -3,7 +3,7 @@ class C { >C : Symbol(C, Decl(generatorES6_2.ts, 0, 0)) public * foo() { ->foo : Symbol(foo, Decl(generatorES6_2.ts, 0, 9)) +>foo : Symbol(C.foo, Decl(generatorES6_2.ts, 0, 9)) yield 1 } diff --git a/tests/baselines/reference/generatorES6_6.symbols b/tests/baselines/reference/generatorES6_6.symbols index 96b8b861c8b..3ae6ef318e8 100644 --- a/tests/baselines/reference/generatorES6_6.symbols +++ b/tests/baselines/reference/generatorES6_6.symbols @@ -3,9 +3,9 @@ class C { >C : Symbol(C, Decl(generatorES6_6.ts, 0, 0)) *[Symbol.iterator]() { ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) let a = yield 1; >a : Symbol(a, Decl(generatorES6_6.ts, 2, 7)) diff --git a/tests/baselines/reference/generatorInAmbientContext5.symbols b/tests/baselines/reference/generatorInAmbientContext5.symbols index 78139a7e597..df432c2a67d 100644 --- a/tests/baselines/reference/generatorInAmbientContext5.symbols +++ b/tests/baselines/reference/generatorInAmbientContext5.symbols @@ -3,5 +3,5 @@ class C { >C : Symbol(C, Decl(generatorInAmbientContext5.ts, 0, 0)) *generator(): any { } ->generator : Symbol(generator, Decl(generatorInAmbientContext5.ts, 0, 9)) +>generator : Symbol(C.generator, Decl(generatorInAmbientContext5.ts, 0, 9)) } diff --git a/tests/baselines/reference/generatorOverloads4.symbols b/tests/baselines/reference/generatorOverloads4.symbols index 341ba9c4a0d..ecc0afe6109 100644 --- a/tests/baselines/reference/generatorOverloads4.symbols +++ b/tests/baselines/reference/generatorOverloads4.symbols @@ -3,17 +3,17 @@ class C { >C : Symbol(C, Decl(generatorOverloads4.ts, 0, 0)) f(s: string): Iterable; ->f : Symbol(f, Decl(generatorOverloads4.ts, 0, 9), Decl(generatorOverloads4.ts, 1, 32), Decl(generatorOverloads4.ts, 2, 32)) +>f : Symbol(C.f, Decl(generatorOverloads4.ts, 0, 9), Decl(generatorOverloads4.ts, 1, 32), Decl(generatorOverloads4.ts, 2, 32)) >s : Symbol(s, Decl(generatorOverloads4.ts, 1, 6)) ->Iterable : Symbol(Iterable, Decl(lib.d.ts, --, --)) +>Iterable : Symbol(Iterable, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) f(s: number): Iterable; ->f : Symbol(f, Decl(generatorOverloads4.ts, 0, 9), Decl(generatorOverloads4.ts, 1, 32), Decl(generatorOverloads4.ts, 2, 32)) +>f : Symbol(C.f, Decl(generatorOverloads4.ts, 0, 9), Decl(generatorOverloads4.ts, 1, 32), Decl(generatorOverloads4.ts, 2, 32)) >s : Symbol(s, Decl(generatorOverloads4.ts, 2, 6)) ->Iterable : Symbol(Iterable, Decl(lib.d.ts, --, --)) +>Iterable : Symbol(Iterable, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) *f(s: any): Iterable { } ->f : Symbol(f, Decl(generatorOverloads4.ts, 0, 9), Decl(generatorOverloads4.ts, 1, 32), Decl(generatorOverloads4.ts, 2, 32)) +>f : Symbol(C.f, Decl(generatorOverloads4.ts, 0, 9), Decl(generatorOverloads4.ts, 1, 32), Decl(generatorOverloads4.ts, 2, 32)) >s : Symbol(s, Decl(generatorOverloads4.ts, 3, 7)) ->Iterable : Symbol(Iterable, Decl(lib.d.ts, --, --)) +>Iterable : Symbol(Iterable, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) } diff --git a/tests/baselines/reference/generatorOverloads5.symbols b/tests/baselines/reference/generatorOverloads5.symbols index 07de0c87f51..a93e9156a6e 100644 --- a/tests/baselines/reference/generatorOverloads5.symbols +++ b/tests/baselines/reference/generatorOverloads5.symbols @@ -5,15 +5,15 @@ module M { function f(s: string): Iterable; >f : Symbol(f, Decl(generatorOverloads5.ts, 0, 10), Decl(generatorOverloads5.ts, 1, 41), Decl(generatorOverloads5.ts, 2, 41)) >s : Symbol(s, Decl(generatorOverloads5.ts, 1, 15)) ->Iterable : Symbol(Iterable, Decl(lib.d.ts, --, --)) +>Iterable : Symbol(Iterable, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) function f(s: number): Iterable; >f : Symbol(f, Decl(generatorOverloads5.ts, 0, 10), Decl(generatorOverloads5.ts, 1, 41), Decl(generatorOverloads5.ts, 2, 41)) >s : Symbol(s, Decl(generatorOverloads5.ts, 2, 15)) ->Iterable : Symbol(Iterable, Decl(lib.d.ts, --, --)) +>Iterable : Symbol(Iterable, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) function* f(s: any): Iterable { } >f : Symbol(f, Decl(generatorOverloads5.ts, 0, 10), Decl(generatorOverloads5.ts, 1, 41), Decl(generatorOverloads5.ts, 2, 41)) >s : Symbol(s, Decl(generatorOverloads5.ts, 3, 16)) ->Iterable : Symbol(Iterable, Decl(lib.d.ts, --, --)) +>Iterable : Symbol(Iterable, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) } diff --git a/tests/baselines/reference/generatorTypeCheck1.symbols b/tests/baselines/reference/generatorTypeCheck1.symbols index b9456ccba48..cc61c5b9803 100644 --- a/tests/baselines/reference/generatorTypeCheck1.symbols +++ b/tests/baselines/reference/generatorTypeCheck1.symbols @@ -1,5 +1,5 @@ === tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck1.ts === function* g1(): Iterator { } >g1 : Symbol(g1, Decl(generatorTypeCheck1.ts, 0, 0)) ->Iterator : Symbol(Iterator, Decl(lib.d.ts, --, --)) +>Iterator : Symbol(Iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) diff --git a/tests/baselines/reference/generatorTypeCheck10.symbols b/tests/baselines/reference/generatorTypeCheck10.symbols index 2112a9b1ebc..582693e7336 100644 --- a/tests/baselines/reference/generatorTypeCheck10.symbols +++ b/tests/baselines/reference/generatorTypeCheck10.symbols @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck10.ts === function* g(): IterableIterator { >g : Symbol(g, Decl(generatorTypeCheck10.ts, 0, 0)) ->IterableIterator : Symbol(IterableIterator, Decl(lib.d.ts, --, --)) +>IterableIterator : Symbol(IterableIterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) return; } diff --git a/tests/baselines/reference/generatorTypeCheck11.symbols b/tests/baselines/reference/generatorTypeCheck11.symbols index 439b97caa7f..ce8f2f5f065 100644 --- a/tests/baselines/reference/generatorTypeCheck11.symbols +++ b/tests/baselines/reference/generatorTypeCheck11.symbols @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck11.ts === function* g(): IterableIterator { >g : Symbol(g, Decl(generatorTypeCheck11.ts, 0, 0)) ->IterableIterator : Symbol(IterableIterator, Decl(lib.d.ts, --, --)) +>IterableIterator : Symbol(IterableIterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) return 0; } diff --git a/tests/baselines/reference/generatorTypeCheck12.symbols b/tests/baselines/reference/generatorTypeCheck12.symbols index 1c7661a06cf..052f35a5f5f 100644 --- a/tests/baselines/reference/generatorTypeCheck12.symbols +++ b/tests/baselines/reference/generatorTypeCheck12.symbols @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck12.ts === function* g(): IterableIterator { >g : Symbol(g, Decl(generatorTypeCheck12.ts, 0, 0)) ->IterableIterator : Symbol(IterableIterator, Decl(lib.d.ts, --, --)) +>IterableIterator : Symbol(IterableIterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) return ""; } diff --git a/tests/baselines/reference/generatorTypeCheck13.symbols b/tests/baselines/reference/generatorTypeCheck13.symbols index 7d9587e5ac9..ceaea53dacf 100644 --- a/tests/baselines/reference/generatorTypeCheck13.symbols +++ b/tests/baselines/reference/generatorTypeCheck13.symbols @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck13.ts === function* g(): IterableIterator { >g : Symbol(g, Decl(generatorTypeCheck13.ts, 0, 0)) ->IterableIterator : Symbol(IterableIterator, Decl(lib.d.ts, --, --)) +>IterableIterator : Symbol(IterableIterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) yield 0; return ""; diff --git a/tests/baselines/reference/generatorTypeCheck17.symbols b/tests/baselines/reference/generatorTypeCheck17.symbols index 523579dd47b..6f082994488 100644 --- a/tests/baselines/reference/generatorTypeCheck17.symbols +++ b/tests/baselines/reference/generatorTypeCheck17.symbols @@ -1,16 +1,16 @@ === tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck17.ts === class Foo { x: number } >Foo : Symbol(Foo, Decl(generatorTypeCheck17.ts, 0, 0)) ->x : Symbol(x, Decl(generatorTypeCheck17.ts, 0, 11)) +>x : Symbol(Foo.x, Decl(generatorTypeCheck17.ts, 0, 11)) class Bar extends Foo { y: string } >Bar : Symbol(Bar, Decl(generatorTypeCheck17.ts, 0, 23)) >Foo : Symbol(Foo, Decl(generatorTypeCheck17.ts, 0, 0)) ->y : Symbol(y, Decl(generatorTypeCheck17.ts, 1, 23)) +>y : Symbol(Bar.y, Decl(generatorTypeCheck17.ts, 1, 23)) function* g(): IterableIterator { >g : Symbol(g, Decl(generatorTypeCheck17.ts, 1, 35)) ->IterableIterator : Symbol(IterableIterator, Decl(lib.d.ts, --, --)) +>IterableIterator : Symbol(IterableIterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >Foo : Symbol(Foo, Decl(generatorTypeCheck17.ts, 0, 0)) yield; diff --git a/tests/baselines/reference/generatorTypeCheck19.symbols b/tests/baselines/reference/generatorTypeCheck19.symbols index b74b5f727a6..af506d275cf 100644 --- a/tests/baselines/reference/generatorTypeCheck19.symbols +++ b/tests/baselines/reference/generatorTypeCheck19.symbols @@ -1,16 +1,16 @@ === tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck19.ts === class Foo { x: number } >Foo : Symbol(Foo, Decl(generatorTypeCheck19.ts, 0, 0)) ->x : Symbol(x, Decl(generatorTypeCheck19.ts, 0, 11)) +>x : Symbol(Foo.x, Decl(generatorTypeCheck19.ts, 0, 11)) class Bar extends Foo { y: string } >Bar : Symbol(Bar, Decl(generatorTypeCheck19.ts, 0, 23)) >Foo : Symbol(Foo, Decl(generatorTypeCheck19.ts, 0, 0)) ->y : Symbol(y, Decl(generatorTypeCheck19.ts, 1, 23)) +>y : Symbol(Bar.y, Decl(generatorTypeCheck19.ts, 1, 23)) function* g(): IterableIterator { >g : Symbol(g, Decl(generatorTypeCheck19.ts, 1, 35)) ->IterableIterator : Symbol(IterableIterator, Decl(lib.d.ts, --, --)) +>IterableIterator : Symbol(IterableIterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >Foo : Symbol(Foo, Decl(generatorTypeCheck19.ts, 0, 0)) yield; diff --git a/tests/baselines/reference/generatorTypeCheck2.symbols b/tests/baselines/reference/generatorTypeCheck2.symbols index 5741e089d1b..63150081c18 100644 --- a/tests/baselines/reference/generatorTypeCheck2.symbols +++ b/tests/baselines/reference/generatorTypeCheck2.symbols @@ -1,5 +1,5 @@ === tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck2.ts === function* g1(): Iterable { } >g1 : Symbol(g1, Decl(generatorTypeCheck2.ts, 0, 0)) ->Iterable : Symbol(Iterable, Decl(lib.d.ts, --, --)) +>Iterable : Symbol(Iterable, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) diff --git a/tests/baselines/reference/generatorTypeCheck26.symbols b/tests/baselines/reference/generatorTypeCheck26.symbols index 2f2c27d2810..0680c0680e1 100644 --- a/tests/baselines/reference/generatorTypeCheck26.symbols +++ b/tests/baselines/reference/generatorTypeCheck26.symbols @@ -1,20 +1,20 @@ === tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck26.ts === function* g(): IterableIterator<(x: string) => number> { >g : Symbol(g, Decl(generatorTypeCheck26.ts, 0, 0)) ->IterableIterator : Symbol(IterableIterator, Decl(lib.d.ts, --, --)) +>IterableIterator : Symbol(IterableIterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >x : Symbol(x, Decl(generatorTypeCheck26.ts, 0, 33)) yield x => x.length; >x : Symbol(x, Decl(generatorTypeCheck26.ts, 1, 9)) ->x.length : Symbol(String.length, Decl(lib.d.ts, --, --)) +>x.length : Symbol(String.length, Decl(lib.es5.d.ts, --, --)) >x : Symbol(x, Decl(generatorTypeCheck26.ts, 1, 9)) ->length : Symbol(String.length, Decl(lib.d.ts, --, --)) +>length : Symbol(String.length, Decl(lib.es5.d.ts, --, --)) yield *[x => x.length]; >x : Symbol(x, Decl(generatorTypeCheck26.ts, 2, 12)) ->x.length : Symbol(String.length, Decl(lib.d.ts, --, --)) +>x.length : Symbol(String.length, Decl(lib.es5.d.ts, --, --)) >x : Symbol(x, Decl(generatorTypeCheck26.ts, 2, 12)) ->length : Symbol(String.length, Decl(lib.d.ts, --, --)) +>length : Symbol(String.length, Decl(lib.es5.d.ts, --, --)) return x => x.length; >x : Symbol(x, Decl(generatorTypeCheck26.ts, 3, 10)) diff --git a/tests/baselines/reference/generatorTypeCheck27.symbols b/tests/baselines/reference/generatorTypeCheck27.symbols index 27c5cbf5db8..e8d630804f8 100644 --- a/tests/baselines/reference/generatorTypeCheck27.symbols +++ b/tests/baselines/reference/generatorTypeCheck27.symbols @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck27.ts === function* g(): IterableIterator<(x: string) => number> { >g : Symbol(g, Decl(generatorTypeCheck27.ts, 0, 0)) ->IterableIterator : Symbol(IterableIterator, Decl(lib.d.ts, --, --)) +>IterableIterator : Symbol(IterableIterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >x : Symbol(x, Decl(generatorTypeCheck27.ts, 0, 33)) yield * function* () { diff --git a/tests/baselines/reference/generatorTypeCheck28.symbols b/tests/baselines/reference/generatorTypeCheck28.symbols index a7e799679d7..9031e6413c9 100644 --- a/tests/baselines/reference/generatorTypeCheck28.symbols +++ b/tests/baselines/reference/generatorTypeCheck28.symbols @@ -1,20 +1,20 @@ === tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck28.ts === function* g(): IterableIterator<(x: string) => number> { >g : Symbol(g, Decl(generatorTypeCheck28.ts, 0, 0)) ->IterableIterator : Symbol(IterableIterator, Decl(lib.d.ts, --, --)) +>IterableIterator : Symbol(IterableIterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >x : Symbol(x, Decl(generatorTypeCheck28.ts, 0, 33)) yield * { *[Symbol.iterator]() { ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) yield x => x.length; >x : Symbol(x, Decl(generatorTypeCheck28.ts, 3, 17)) ->x.length : Symbol(String.length, Decl(lib.d.ts, --, --)) +>x.length : Symbol(String.length, Decl(lib.es5.d.ts, --, --)) >x : Symbol(x, Decl(generatorTypeCheck28.ts, 3, 17)) ->length : Symbol(String.length, Decl(lib.d.ts, --, --)) +>length : Symbol(String.length, Decl(lib.es5.d.ts, --, --)) } }; } diff --git a/tests/baselines/reference/generatorTypeCheck29.symbols b/tests/baselines/reference/generatorTypeCheck29.symbols index 4b332f6c86b..105d16377f2 100644 --- a/tests/baselines/reference/generatorTypeCheck29.symbols +++ b/tests/baselines/reference/generatorTypeCheck29.symbols @@ -1,8 +1,8 @@ === tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck29.ts === function* g2(): Iterator number>> { >g2 : Symbol(g2, Decl(generatorTypeCheck29.ts, 0, 0)) ->Iterator : Symbol(Iterator, Decl(lib.d.ts, --, --)) ->Iterable : Symbol(Iterable, Decl(lib.d.ts, --, --)) +>Iterator : Symbol(Iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>Iterable : Symbol(Iterable, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >x : Symbol(x, Decl(generatorTypeCheck29.ts, 0, 35)) yield function* () { diff --git a/tests/baselines/reference/generatorTypeCheck3.symbols b/tests/baselines/reference/generatorTypeCheck3.symbols index 6e97cd6f280..e61980735d8 100644 --- a/tests/baselines/reference/generatorTypeCheck3.symbols +++ b/tests/baselines/reference/generatorTypeCheck3.symbols @@ -1,5 +1,5 @@ === tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck3.ts === function* g1(): IterableIterator { } >g1 : Symbol(g1, Decl(generatorTypeCheck3.ts, 0, 0)) ->IterableIterator : Symbol(IterableIterator, Decl(lib.d.ts, --, --)) +>IterableIterator : Symbol(IterableIterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) diff --git a/tests/baselines/reference/generatorTypeCheck30.symbols b/tests/baselines/reference/generatorTypeCheck30.symbols index 3c56fde9039..fd83f551575 100644 --- a/tests/baselines/reference/generatorTypeCheck30.symbols +++ b/tests/baselines/reference/generatorTypeCheck30.symbols @@ -1,8 +1,8 @@ === tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck30.ts === function* g2(): Iterator number>> { >g2 : Symbol(g2, Decl(generatorTypeCheck30.ts, 0, 0)) ->Iterator : Symbol(Iterator, Decl(lib.d.ts, --, --)) ->Iterable : Symbol(Iterable, Decl(lib.d.ts, --, --)) +>Iterator : Symbol(Iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>Iterable : Symbol(Iterable, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >x : Symbol(x, Decl(generatorTypeCheck30.ts, 0, 35)) yield function* () { diff --git a/tests/baselines/reference/generatorTypeCheck45.symbols b/tests/baselines/reference/generatorTypeCheck45.symbols index a637f154dc4..e62c0b54f46 100644 --- a/tests/baselines/reference/generatorTypeCheck45.symbols +++ b/tests/baselines/reference/generatorTypeCheck45.symbols @@ -6,7 +6,7 @@ declare function foo(x: T, fun: () => Iterator<(x: T) => U>, fun2: (y: U) >x : Symbol(x, Decl(generatorTypeCheck45.ts, 0, 27)) >T : Symbol(T, Decl(generatorTypeCheck45.ts, 0, 21)) >fun : Symbol(fun, Decl(generatorTypeCheck45.ts, 0, 32)) ->Iterator : Symbol(Iterator, Decl(lib.d.ts, --, --)) +>Iterator : Symbol(Iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >x : Symbol(x, Decl(generatorTypeCheck45.ts, 0, 54)) >T : Symbol(T, Decl(generatorTypeCheck45.ts, 0, 21)) >U : Symbol(U, Decl(generatorTypeCheck45.ts, 0, 23)) @@ -19,9 +19,9 @@ declare function foo(x: T, fun: () => Iterator<(x: T) => U>, fun2: (y: U) foo("", function* () { yield x => x.length }, p => undefined); // T is fixed, should be string >foo : Symbol(foo, Decl(generatorTypeCheck45.ts, 0, 0)) >x : Symbol(x, Decl(generatorTypeCheck45.ts, 2, 28)) ->x.length : Symbol(String.length, Decl(lib.d.ts, --, --)) +>x.length : Symbol(String.length, Decl(lib.es5.d.ts, --, --)) >x : Symbol(x, Decl(generatorTypeCheck45.ts, 2, 28)) ->length : Symbol(String.length, Decl(lib.d.ts, --, --)) +>length : Symbol(String.length, Decl(lib.es5.d.ts, --, --)) >p : Symbol(p, Decl(generatorTypeCheck45.ts, 2, 45)) >undefined : Symbol(undefined) diff --git a/tests/baselines/reference/generatorTypeCheck46.symbols b/tests/baselines/reference/generatorTypeCheck46.symbols index abb170b12a7..23f9f77d406 100644 --- a/tests/baselines/reference/generatorTypeCheck46.symbols +++ b/tests/baselines/reference/generatorTypeCheck46.symbols @@ -6,7 +6,7 @@ declare function foo(x: T, fun: () => Iterable<(x: T) => U>, fun2: (y: U) >x : Symbol(x, Decl(generatorTypeCheck46.ts, 0, 27)) >T : Symbol(T, Decl(generatorTypeCheck46.ts, 0, 21)) >fun : Symbol(fun, Decl(generatorTypeCheck46.ts, 0, 32)) ->Iterable : Symbol(Iterable, Decl(lib.d.ts, --, --)) +>Iterable : Symbol(Iterable, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >x : Symbol(x, Decl(generatorTypeCheck46.ts, 0, 54)) >T : Symbol(T, Decl(generatorTypeCheck46.ts, 0, 21)) >U : Symbol(U, Decl(generatorTypeCheck46.ts, 0, 23)) @@ -21,15 +21,15 @@ foo("", function* () { yield* { *[Symbol.iterator]() { ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) yield x => x.length >x : Symbol(x, Decl(generatorTypeCheck46.ts, 5, 17)) ->x.length : Symbol(String.length, Decl(lib.d.ts, --, --)) +>x.length : Symbol(String.length, Decl(lib.es5.d.ts, --, --)) >x : Symbol(x, Decl(generatorTypeCheck46.ts, 5, 17)) ->length : Symbol(String.length, Decl(lib.d.ts, --, --)) +>length : Symbol(String.length, Decl(lib.es5.d.ts, --, --)) } } }, p => undefined); // T is fixed, should be string diff --git a/tests/baselines/reference/genericAndNonGenericInterfaceWithTheSameName2.symbols b/tests/baselines/reference/genericAndNonGenericInterfaceWithTheSameName2.symbols index 05b131090c0..e0d66e64854 100644 --- a/tests/baselines/reference/genericAndNonGenericInterfaceWithTheSameName2.symbols +++ b/tests/baselines/reference/genericAndNonGenericInterfaceWithTheSameName2.symbols @@ -9,7 +9,7 @@ module M { >T : Symbol(T, Decl(genericAndNonGenericInterfaceWithTheSameName2.ts, 3, 16)) bar: T; ->bar : Symbol(bar, Decl(genericAndNonGenericInterfaceWithTheSameName2.ts, 3, 20)) +>bar : Symbol(A.bar, Decl(genericAndNonGenericInterfaceWithTheSameName2.ts, 3, 20)) >T : Symbol(T, Decl(genericAndNonGenericInterfaceWithTheSameName2.ts, 3, 16)) } } @@ -21,7 +21,7 @@ module M2 { >A : Symbol(A, Decl(genericAndNonGenericInterfaceWithTheSameName2.ts, 8, 11)) foo: string; ->foo : Symbol(foo, Decl(genericAndNonGenericInterfaceWithTheSameName2.ts, 9, 17)) +>foo : Symbol(A.foo, Decl(genericAndNonGenericInterfaceWithTheSameName2.ts, 9, 17)) } } @@ -36,7 +36,7 @@ module N { >T : Symbol(T, Decl(genericAndNonGenericInterfaceWithTheSameName2.ts, 16, 20)) bar: T; ->bar : Symbol(bar, Decl(genericAndNonGenericInterfaceWithTheSameName2.ts, 16, 24)) +>bar : Symbol(A.bar, Decl(genericAndNonGenericInterfaceWithTheSameName2.ts, 16, 24)) >T : Symbol(T, Decl(genericAndNonGenericInterfaceWithTheSameName2.ts, 16, 20)) } } @@ -48,7 +48,7 @@ module N { >A : Symbol(A, Decl(genericAndNonGenericInterfaceWithTheSameName2.ts, 21, 15)) foo: string; ->foo : Symbol(foo, Decl(genericAndNonGenericInterfaceWithTheSameName2.ts, 22, 21)) +>foo : Symbol(A.foo, Decl(genericAndNonGenericInterfaceWithTheSameName2.ts, 22, 21)) } } } diff --git a/tests/baselines/reference/genericArgumentCallSigAssignmentCompat.symbols b/tests/baselines/reference/genericArgumentCallSigAssignmentCompat.symbols index b38008c38ce..0b09ec06a64 100644 --- a/tests/baselines/reference/genericArgumentCallSigAssignmentCompat.symbols +++ b/tests/baselines/reference/genericArgumentCallSigAssignmentCompat.symbols @@ -19,7 +19,7 @@ module Underscore { >Static : Symbol(Static, Decl(genericArgumentCallSigAssignmentCompat.ts, 3, 5)) all(list: T[], iterator?: Iterator, context?: any): boolean; ->all : Symbol(all, Decl(genericArgumentCallSigAssignmentCompat.ts, 5, 29)) +>all : Symbol(Static.all, Decl(genericArgumentCallSigAssignmentCompat.ts, 5, 29)) >T : Symbol(T, Decl(genericArgumentCallSigAssignmentCompat.ts, 6, 12)) >list : Symbol(list, Decl(genericArgumentCallSigAssignmentCompat.ts, 6, 15)) >T : Symbol(T, Decl(genericArgumentCallSigAssignmentCompat.ts, 6, 12)) @@ -29,7 +29,7 @@ module Underscore { >context : Symbol(context, Decl(genericArgumentCallSigAssignmentCompat.ts, 6, 58)) identity(value: T): T; ->identity : Symbol(identity, Decl(genericArgumentCallSigAssignmentCompat.ts, 6, 83)) +>identity : Symbol(Static.identity, Decl(genericArgumentCallSigAssignmentCompat.ts, 6, 83)) >T : Symbol(T, Decl(genericArgumentCallSigAssignmentCompat.ts, 7, 17)) >value : Symbol(value, Decl(genericArgumentCallSigAssignmentCompat.ts, 7, 20)) >T : Symbol(T, Decl(genericArgumentCallSigAssignmentCompat.ts, 7, 17)) diff --git a/tests/baselines/reference/genericAssignmentCompatWithInterfaces1.errors.txt b/tests/baselines/reference/genericAssignmentCompatWithInterfaces1.errors.txt index f335319cafd..63679ff03b7 100644 --- a/tests/baselines/reference/genericAssignmentCompatWithInterfaces1.errors.txt +++ b/tests/baselines/reference/genericAssignmentCompatWithInterfaces1.errors.txt @@ -4,7 +4,7 @@ tests/cases/compiler/genericAssignmentCompatWithInterfaces1.ts(12,5): error TS23 Types of property 'compareTo' are incompatible. Type '(other: number) => number' is not assignable to type '(other: string) => number'. Types of parameters 'other' and 'other' are incompatible. - Type 'number' is not assignable to type 'string'. + Type 'string' is not assignable to type 'number'. tests/cases/compiler/genericAssignmentCompatWithInterfaces1.ts(13,5): error TS2322: Type '{ x: A; }' is not assignable to type 'I'. Types of property 'x' are incompatible. Type 'A' is not assignable to type 'Comparable'. @@ -36,7 +36,7 @@ tests/cases/compiler/genericAssignmentCompatWithInterfaces1.ts(17,5): error TS23 !!! error TS2322: Types of property 'compareTo' are incompatible. !!! error TS2322: Type '(other: number) => number' is not assignable to type '(other: string) => number'. !!! error TS2322: Types of parameters 'other' and 'other' are incompatible. -!!! error TS2322: Type 'number' is not assignable to type 'string'. +!!! error TS2322: Type 'string' is not assignable to type 'number'. var a2: I = function (): { x: A } { ~~ !!! error TS2322: Type '{ x: A; }' is not assignable to type 'I'. diff --git a/tests/baselines/reference/genericBaseClassLiteralProperty.symbols b/tests/baselines/reference/genericBaseClassLiteralProperty.symbols index f499e243eaa..c03aaa631ff 100644 --- a/tests/baselines/reference/genericBaseClassLiteralProperty.symbols +++ b/tests/baselines/reference/genericBaseClassLiteralProperty.symbols @@ -4,11 +4,11 @@ class BaseClass { >T : Symbol(T, Decl(genericBaseClassLiteralProperty.ts, 0, 16)) public _getValue1: { (): T; }; ->_getValue1 : Symbol(_getValue1, Decl(genericBaseClassLiteralProperty.ts, 0, 20)) +>_getValue1 : Symbol(BaseClass._getValue1, Decl(genericBaseClassLiteralProperty.ts, 0, 20)) >T : Symbol(T, Decl(genericBaseClassLiteralProperty.ts, 0, 16)) public _getValue2: () => T; ->_getValue2 : Symbol(_getValue2, Decl(genericBaseClassLiteralProperty.ts, 1, 34)) +>_getValue2 : Symbol(BaseClass._getValue2, Decl(genericBaseClassLiteralProperty.ts, 1, 34)) >T : Symbol(T, Decl(genericBaseClassLiteralProperty.ts, 0, 16)) } @@ -17,7 +17,7 @@ class SubClass extends BaseClass { >BaseClass : Symbol(BaseClass, Decl(genericBaseClassLiteralProperty.ts, 0, 0)) public Error(): void { ->Error : Symbol(Error, Decl(genericBaseClassLiteralProperty.ts, 5, 42)) +>Error : Symbol(SubClass.Error, Decl(genericBaseClassLiteralProperty.ts, 5, 42)) var x : number = this._getValue1(); >x : Symbol(x, Decl(genericBaseClassLiteralProperty.ts, 8, 11)) diff --git a/tests/baselines/reference/genericBaseClassLiteralProperty2.symbols b/tests/baselines/reference/genericBaseClassLiteralProperty2.symbols index 5ddccd40e38..2fa917493d2 100644 --- a/tests/baselines/reference/genericBaseClassLiteralProperty2.symbols +++ b/tests/baselines/reference/genericBaseClassLiteralProperty2.symbols @@ -8,15 +8,15 @@ class BaseCollection2 { >CollectionItem2 : Symbol(CollectionItem2, Decl(genericBaseClassLiteralProperty2.ts, 0, 0)) _itemsByKey: { [key: string]: TItem; }; ->_itemsByKey : Symbol(_itemsByKey, Decl(genericBaseClassLiteralProperty2.ts, 2, 54)) +>_itemsByKey : Symbol(BaseCollection2._itemsByKey, Decl(genericBaseClassLiteralProperty2.ts, 2, 54)) >key : Symbol(key, Decl(genericBaseClassLiteralProperty2.ts, 3, 20)) >TItem : Symbol(TItem, Decl(genericBaseClassLiteralProperty2.ts, 2, 22)) constructor() { this._itemsByKey = {}; ->this._itemsByKey : Symbol(_itemsByKey, Decl(genericBaseClassLiteralProperty2.ts, 2, 54)) +>this._itemsByKey : Symbol(BaseCollection2._itemsByKey, Decl(genericBaseClassLiteralProperty2.ts, 2, 54)) >this : Symbol(BaseCollection2, Decl(genericBaseClassLiteralProperty2.ts, 0, 25)) ->_itemsByKey : Symbol(_itemsByKey, Decl(genericBaseClassLiteralProperty2.ts, 2, 54)) +>_itemsByKey : Symbol(BaseCollection2._itemsByKey, Decl(genericBaseClassLiteralProperty2.ts, 2, 54)) } } @@ -26,7 +26,7 @@ class DataView2 extends BaseCollection2 { >CollectionItem2 : Symbol(CollectionItem2, Decl(genericBaseClassLiteralProperty2.ts, 0, 0)) fillItems(item: CollectionItem2) { ->fillItems : Symbol(fillItems, Decl(genericBaseClassLiteralProperty2.ts, 9, 58)) +>fillItems : Symbol(DataView2.fillItems, Decl(genericBaseClassLiteralProperty2.ts, 9, 58)) >item : Symbol(item, Decl(genericBaseClassLiteralProperty2.ts, 10, 14)) >CollectionItem2 : Symbol(CollectionItem2, Decl(genericBaseClassLiteralProperty2.ts, 0, 0)) diff --git a/tests/baselines/reference/genericCallTypeArgumentInference.symbols b/tests/baselines/reference/genericCallTypeArgumentInference.symbols index 2e86bda4ca4..ac802fa3641 100644 --- a/tests/baselines/reference/genericCallTypeArgumentInference.symbols +++ b/tests/baselines/reference/genericCallTypeArgumentInference.symbols @@ -57,14 +57,14 @@ class C { >U : Symbol(U, Decl(genericCallTypeArgumentInference.ts, 20, 10)) constructor(public t: T, public u: U) { ->t : Symbol(t, Decl(genericCallTypeArgumentInference.ts, 21, 16)) +>t : Symbol(C.t, Decl(genericCallTypeArgumentInference.ts, 21, 16)) >T : Symbol(T, Decl(genericCallTypeArgumentInference.ts, 20, 8)) ->u : Symbol(u, Decl(genericCallTypeArgumentInference.ts, 21, 28)) +>u : Symbol(C.u, Decl(genericCallTypeArgumentInference.ts, 21, 28)) >U : Symbol(U, Decl(genericCallTypeArgumentInference.ts, 20, 10)) } foo(t: T, u: U) { ->foo : Symbol(foo, Decl(genericCallTypeArgumentInference.ts, 22, 5)) +>foo : Symbol(C.foo, Decl(genericCallTypeArgumentInference.ts, 22, 5)) >t : Symbol(t, Decl(genericCallTypeArgumentInference.ts, 24, 8)) >T : Symbol(T, Decl(genericCallTypeArgumentInference.ts, 20, 8)) >u : Symbol(u, Decl(genericCallTypeArgumentInference.ts, 24, 13)) @@ -75,7 +75,7 @@ class C { } foo2(t: T, u: U) { ->foo2 : Symbol(foo2, Decl(genericCallTypeArgumentInference.ts, 26, 5)) +>foo2 : Symbol(C.foo2, Decl(genericCallTypeArgumentInference.ts, 26, 5)) >t : Symbol(t, Decl(genericCallTypeArgumentInference.ts, 28, 9)) >T : Symbol(T, Decl(genericCallTypeArgumentInference.ts, 20, 8)) >u : Symbol(u, Decl(genericCallTypeArgumentInference.ts, 28, 14)) @@ -86,7 +86,7 @@ class C { } foo3(t: T, u: U) { ->foo3 : Symbol(foo3, Decl(genericCallTypeArgumentInference.ts, 30, 5)) +>foo3 : Symbol(C.foo3, Decl(genericCallTypeArgumentInference.ts, 30, 5)) >T : Symbol(T, Decl(genericCallTypeArgumentInference.ts, 32, 9)) >t : Symbol(t, Decl(genericCallTypeArgumentInference.ts, 32, 12)) >T : Symbol(T, Decl(genericCallTypeArgumentInference.ts, 32, 9)) @@ -98,7 +98,7 @@ class C { } foo4(t: T, u: U) { ->foo4 : Symbol(foo4, Decl(genericCallTypeArgumentInference.ts, 34, 5)) +>foo4 : Symbol(C.foo4, Decl(genericCallTypeArgumentInference.ts, 34, 5)) >U : Symbol(U, Decl(genericCallTypeArgumentInference.ts, 36, 9)) >t : Symbol(t, Decl(genericCallTypeArgumentInference.ts, 36, 12)) >T : Symbol(T, Decl(genericCallTypeArgumentInference.ts, 20, 8)) @@ -110,7 +110,7 @@ class C { } foo5(t: T, u: U) { ->foo5 : Symbol(foo5, Decl(genericCallTypeArgumentInference.ts, 38, 5)) +>foo5 : Symbol(C.foo5, Decl(genericCallTypeArgumentInference.ts, 38, 5)) >T : Symbol(T, Decl(genericCallTypeArgumentInference.ts, 40, 9)) >U : Symbol(U, Decl(genericCallTypeArgumentInference.ts, 40, 11)) >t : Symbol(t, Decl(genericCallTypeArgumentInference.ts, 40, 14)) @@ -123,7 +123,7 @@ class C { } foo6() { ->foo6 : Symbol(foo6, Decl(genericCallTypeArgumentInference.ts, 42, 5)) +>foo6 : Symbol(C.foo6, Decl(genericCallTypeArgumentInference.ts, 42, 5)) >T : Symbol(T, Decl(genericCallTypeArgumentInference.ts, 44, 9)) >U : Symbol(U, Decl(genericCallTypeArgumentInference.ts, 44, 11)) @@ -136,7 +136,7 @@ class C { } foo7(u: U) { ->foo7 : Symbol(foo7, Decl(genericCallTypeArgumentInference.ts, 47, 5)) +>foo7 : Symbol(C.foo7, Decl(genericCallTypeArgumentInference.ts, 47, 5)) >T : Symbol(T, Decl(genericCallTypeArgumentInference.ts, 49, 9)) >U : Symbol(U, Decl(genericCallTypeArgumentInference.ts, 49, 11)) >u : Symbol(u, Decl(genericCallTypeArgumentInference.ts, 49, 15)) @@ -151,7 +151,7 @@ class C { } foo8() { ->foo8 : Symbol(foo8, Decl(genericCallTypeArgumentInference.ts, 52, 5)) +>foo8 : Symbol(C.foo8, Decl(genericCallTypeArgumentInference.ts, 52, 5)) >T : Symbol(T, Decl(genericCallTypeArgumentInference.ts, 54, 9)) >U : Symbol(U, Decl(genericCallTypeArgumentInference.ts, 54, 11)) @@ -228,7 +228,7 @@ interface I { >U : Symbol(U, Decl(genericCallTypeArgumentInference.ts, 70, 14)) foo(t: T, u: U): T; ->foo : Symbol(foo, Decl(genericCallTypeArgumentInference.ts, 71, 21)) +>foo : Symbol(I.foo, Decl(genericCallTypeArgumentInference.ts, 71, 21)) >t : Symbol(t, Decl(genericCallTypeArgumentInference.ts, 72, 8)) >T : Symbol(T, Decl(genericCallTypeArgumentInference.ts, 70, 12)) >u : Symbol(u, Decl(genericCallTypeArgumentInference.ts, 72, 13)) @@ -236,7 +236,7 @@ interface I { >T : Symbol(T, Decl(genericCallTypeArgumentInference.ts, 70, 12)) foo2(t: T, u: U): U; ->foo2 : Symbol(foo2, Decl(genericCallTypeArgumentInference.ts, 72, 23)) +>foo2 : Symbol(I.foo2, Decl(genericCallTypeArgumentInference.ts, 72, 23)) >t : Symbol(t, Decl(genericCallTypeArgumentInference.ts, 73, 9)) >T : Symbol(T, Decl(genericCallTypeArgumentInference.ts, 70, 12)) >u : Symbol(u, Decl(genericCallTypeArgumentInference.ts, 73, 14)) @@ -244,7 +244,7 @@ interface I { >U : Symbol(U, Decl(genericCallTypeArgumentInference.ts, 70, 14)) foo3(t: T, u: U): T; ->foo3 : Symbol(foo3, Decl(genericCallTypeArgumentInference.ts, 73, 24)) +>foo3 : Symbol(I.foo3, Decl(genericCallTypeArgumentInference.ts, 73, 24)) >T : Symbol(T, Decl(genericCallTypeArgumentInference.ts, 74, 9)) >t : Symbol(t, Decl(genericCallTypeArgumentInference.ts, 74, 12)) >T : Symbol(T, Decl(genericCallTypeArgumentInference.ts, 74, 9)) @@ -253,7 +253,7 @@ interface I { >T : Symbol(T, Decl(genericCallTypeArgumentInference.ts, 74, 9)) foo4(t: T, u: U): T; ->foo4 : Symbol(foo4, Decl(genericCallTypeArgumentInference.ts, 74, 27)) +>foo4 : Symbol(I.foo4, Decl(genericCallTypeArgumentInference.ts, 74, 27)) >U : Symbol(U, Decl(genericCallTypeArgumentInference.ts, 75, 9)) >t : Symbol(t, Decl(genericCallTypeArgumentInference.ts, 75, 12)) >T : Symbol(T, Decl(genericCallTypeArgumentInference.ts, 70, 12)) @@ -262,7 +262,7 @@ interface I { >T : Symbol(T, Decl(genericCallTypeArgumentInference.ts, 70, 12)) foo5(t: T, u: U): T; ->foo5 : Symbol(foo5, Decl(genericCallTypeArgumentInference.ts, 75, 27)) +>foo5 : Symbol(I.foo5, Decl(genericCallTypeArgumentInference.ts, 75, 27)) >T : Symbol(T, Decl(genericCallTypeArgumentInference.ts, 76, 9)) >U : Symbol(U, Decl(genericCallTypeArgumentInference.ts, 76, 11)) >t : Symbol(t, Decl(genericCallTypeArgumentInference.ts, 76, 15)) @@ -272,13 +272,13 @@ interface I { >T : Symbol(T, Decl(genericCallTypeArgumentInference.ts, 76, 9)) foo6(): T; ->foo6 : Symbol(foo6, Decl(genericCallTypeArgumentInference.ts, 76, 30)) +>foo6 : Symbol(I.foo6, Decl(genericCallTypeArgumentInference.ts, 76, 30)) >T : Symbol(T, Decl(genericCallTypeArgumentInference.ts, 77, 9)) >U : Symbol(U, Decl(genericCallTypeArgumentInference.ts, 77, 11)) >T : Symbol(T, Decl(genericCallTypeArgumentInference.ts, 77, 9)) foo7(u: U): T; ->foo7 : Symbol(foo7, Decl(genericCallTypeArgumentInference.ts, 77, 20)) +>foo7 : Symbol(I.foo7, Decl(genericCallTypeArgumentInference.ts, 77, 20)) >T : Symbol(T, Decl(genericCallTypeArgumentInference.ts, 78, 9)) >U : Symbol(U, Decl(genericCallTypeArgumentInference.ts, 78, 11)) >u : Symbol(u, Decl(genericCallTypeArgumentInference.ts, 78, 15)) @@ -286,7 +286,7 @@ interface I { >T : Symbol(T, Decl(genericCallTypeArgumentInference.ts, 78, 9)) foo8(): T; ->foo8 : Symbol(foo8, Decl(genericCallTypeArgumentInference.ts, 78, 24)) +>foo8 : Symbol(I.foo8, Decl(genericCallTypeArgumentInference.ts, 78, 24)) >T : Symbol(T, Decl(genericCallTypeArgumentInference.ts, 79, 9)) >U : Symbol(U, Decl(genericCallTypeArgumentInference.ts, 79, 11)) >T : Symbol(T, Decl(genericCallTypeArgumentInference.ts, 79, 9)) diff --git a/tests/baselines/reference/genericCallWithConstraintsTypeArgumentInference.symbols b/tests/baselines/reference/genericCallWithConstraintsTypeArgumentInference.symbols index 5d419b8f992..ec209ed0ece 100644 --- a/tests/baselines/reference/genericCallWithConstraintsTypeArgumentInference.symbols +++ b/tests/baselines/reference/genericCallWithConstraintsTypeArgumentInference.symbols @@ -3,17 +3,17 @@ class Base { foo: string; } >Base : Symbol(Base, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 0, 0)) ->foo : Symbol(foo, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 2, 12)) +>foo : Symbol(Base.foo, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 2, 12)) class Derived extends Base { bar: string; } >Derived : Symbol(Derived, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 2, 27)) >Base : Symbol(Base, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 0, 0)) ->bar : Symbol(bar, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 3, 28)) +>bar : Symbol(Derived.bar, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 3, 28)) class Derived2 extends Derived { baz: string; } >Derived2 : Symbol(Derived2, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 3, 43)) >Derived : Symbol(Derived, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 2, 27)) ->baz : Symbol(baz, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 4, 32)) +>baz : Symbol(Derived2.baz, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 4, 32)) var b: Base; >b : Symbol(b, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 5, 3)) @@ -112,14 +112,14 @@ class C { >Derived : Symbol(Derived, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 2, 27)) constructor(public t: T, public u: U) { ->t : Symbol(t, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 34, 16)) +>t : Symbol(C.t, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 34, 16)) >T : Symbol(T, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 33, 8)) ->u : Symbol(u, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 34, 28)) +>u : Symbol(C.u, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 34, 28)) >U : Symbol(U, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 33, 23)) } foo(t: T, u: U) { ->foo : Symbol(foo, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 35, 5)) +>foo : Symbol(C.foo, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 35, 5)) >t : Symbol(t, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 37, 8)) >T : Symbol(T, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 33, 8)) >u : Symbol(u, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 37, 13)) @@ -130,7 +130,7 @@ class C { } foo2(t: T, u: U) { ->foo2 : Symbol(foo2, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 39, 5)) +>foo2 : Symbol(C.foo2, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 39, 5)) >t : Symbol(t, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 41, 9)) >T : Symbol(T, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 33, 8)) >u : Symbol(u, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 41, 14)) @@ -141,7 +141,7 @@ class C { } foo3(t: T, u: U) { ->foo3 : Symbol(foo3, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 43, 5)) +>foo3 : Symbol(C.foo3, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 43, 5)) >T : Symbol(T, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 45, 9)) >Derived : Symbol(Derived, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 2, 27)) >t : Symbol(t, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 45, 28)) @@ -154,7 +154,7 @@ class C { } foo4(t: T, u: U) { ->foo4 : Symbol(foo4, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 47, 5)) +>foo4 : Symbol(C.foo4, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 47, 5)) >U : Symbol(U, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 49, 9)) >Derived2 : Symbol(Derived2, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 3, 43)) >t : Symbol(t, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 49, 29)) @@ -167,7 +167,7 @@ class C { } foo5(t: T, u: U) { ->foo5 : Symbol(foo5, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 51, 5)) +>foo5 : Symbol(C.foo5, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 51, 5)) >T : Symbol(T, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 53, 9)) >Derived : Symbol(Derived, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 2, 27)) >U : Symbol(U, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 53, 27)) @@ -182,7 +182,7 @@ class C { } foo6() { ->foo6 : Symbol(foo6, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 55, 5)) +>foo6 : Symbol(C.foo6, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 55, 5)) >T : Symbol(T, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 57, 9)) >Derived : Symbol(Derived, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 2, 27)) >U : Symbol(U, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 57, 27)) @@ -197,7 +197,7 @@ class C { } foo7(u: U) { ->foo7 : Symbol(foo7, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 60, 5)) +>foo7 : Symbol(C.foo7, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 60, 5)) >T : Symbol(T, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 62, 9)) >Base : Symbol(Base, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 0, 0)) >U : Symbol(U, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 62, 24)) @@ -214,7 +214,7 @@ class C { } foo8() { ->foo8 : Symbol(foo8, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 65, 5)) +>foo8 : Symbol(C.foo8, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 65, 5)) >T : Symbol(T, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 67, 9)) >Base : Symbol(Base, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 0, 0)) >U : Symbol(U, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 67, 24)) @@ -316,7 +316,7 @@ interface I { >U : Symbol(U, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 84, 27)) foo(t: T, u: U): T; ->foo : Symbol(foo, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 85, 21)) +>foo : Symbol(I.foo, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 85, 21)) >t : Symbol(t, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 86, 8)) >T : Symbol(T, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 84, 12)) >u : Symbol(u, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 86, 13)) @@ -324,7 +324,7 @@ interface I { >T : Symbol(T, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 84, 12)) foo2(t: T, u: U): U; ->foo2 : Symbol(foo2, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 86, 23)) +>foo2 : Symbol(I.foo2, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 86, 23)) >t : Symbol(t, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 87, 9)) >T : Symbol(T, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 84, 12)) >u : Symbol(u, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 87, 14)) @@ -332,7 +332,7 @@ interface I { >U : Symbol(U, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 84, 27)) foo3(t: T, u: U): T; ->foo3 : Symbol(foo3, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 87, 24)) +>foo3 : Symbol(I.foo3, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 87, 24)) >T : Symbol(T, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 88, 9)) >Derived : Symbol(Derived, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 2, 27)) >t : Symbol(t, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 88, 28)) @@ -342,7 +342,7 @@ interface I { >T : Symbol(T, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 88, 9)) foo4(t: T, u: U): T; ->foo4 : Symbol(foo4, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 88, 43)) +>foo4 : Symbol(I.foo4, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 88, 43)) >U : Symbol(U, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 89, 9)) >Derived2 : Symbol(Derived2, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 3, 43)) >t : Symbol(t, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 89, 29)) @@ -352,7 +352,7 @@ interface I { >T : Symbol(T, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 84, 12)) foo5(t: T, u: U): T; ->foo5 : Symbol(foo5, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 89, 44)) +>foo5 : Symbol(I.foo5, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 89, 44)) >T : Symbol(T, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 90, 9)) >Derived : Symbol(Derived, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 2, 27)) >U : Symbol(U, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 90, 27)) @@ -364,7 +364,7 @@ interface I { >T : Symbol(T, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 90, 9)) foo6(): T; ->foo6 : Symbol(foo6, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 90, 63)) +>foo6 : Symbol(I.foo6, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 90, 63)) >T : Symbol(T, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 91, 9)) >Derived : Symbol(Derived, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 2, 27)) >U : Symbol(U, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 91, 27)) @@ -372,7 +372,7 @@ interface I { >T : Symbol(T, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 91, 9)) foo7(u: U): T; ->foo7 : Symbol(foo7, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 91, 53)) +>foo7 : Symbol(I.foo7, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 91, 53)) >T : Symbol(T, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 92, 9)) >Base : Symbol(Base, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 0, 0)) >U : Symbol(U, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 92, 24)) @@ -382,7 +382,7 @@ interface I { >T : Symbol(T, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 92, 9)) foo8(): T; ->foo8 : Symbol(foo8, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 92, 53)) +>foo8 : Symbol(I.foo8, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 92, 53)) >T : Symbol(T, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 93, 9)) >Base : Symbol(Base, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 0, 0)) >U : Symbol(U, Decl(genericCallWithConstraintsTypeArgumentInference.ts, 93, 24)) diff --git a/tests/baselines/reference/genericCallWithFixedArguments.symbols b/tests/baselines/reference/genericCallWithFixedArguments.symbols index c47c5ef8f06..6eaa789f9e4 100644 --- a/tests/baselines/reference/genericCallWithFixedArguments.symbols +++ b/tests/baselines/reference/genericCallWithFixedArguments.symbols @@ -1,11 +1,11 @@ === tests/cases/compiler/genericCallWithFixedArguments.ts === class A { foo() { } } >A : Symbol(A, Decl(genericCallWithFixedArguments.ts, 0, 0)) ->foo : Symbol(foo, Decl(genericCallWithFixedArguments.ts, 0, 9)) +>foo : Symbol(A.foo, Decl(genericCallWithFixedArguments.ts, 0, 9)) class B { bar() { }} >B : Symbol(B, Decl(genericCallWithFixedArguments.ts, 0, 21)) ->bar : Symbol(bar, Decl(genericCallWithFixedArguments.ts, 1, 9)) +>bar : Symbol(B.bar, Decl(genericCallWithFixedArguments.ts, 1, 9)) function g(x) { } >g : Symbol(g, Decl(genericCallWithFixedArguments.ts, 1, 20)) diff --git a/tests/baselines/reference/genericCallWithFunctionTypedArguments4.symbols b/tests/baselines/reference/genericCallWithFunctionTypedArguments4.symbols index 9aa87c28240..2c0fa9e3765 100644 --- a/tests/baselines/reference/genericCallWithFunctionTypedArguments4.symbols +++ b/tests/baselines/reference/genericCallWithFunctionTypedArguments4.symbols @@ -3,11 +3,11 @@ class C { foo: string } >C : Symbol(C, Decl(genericCallWithFunctionTypedArguments4.ts, 0, 0)) ->foo : Symbol(foo, Decl(genericCallWithFunctionTypedArguments4.ts, 2, 9)) +>foo : Symbol(C.foo, Decl(genericCallWithFunctionTypedArguments4.ts, 2, 9)) class D { bar: string } >D : Symbol(D, Decl(genericCallWithFunctionTypedArguments4.ts, 2, 23)) ->bar : Symbol(bar, Decl(genericCallWithFunctionTypedArguments4.ts, 3, 9)) +>bar : Symbol(D.bar, Decl(genericCallWithFunctionTypedArguments4.ts, 3, 9)) var a: { >a : Symbol(a, Decl(genericCallWithFunctionTypedArguments4.ts, 4, 3)) diff --git a/tests/baselines/reference/genericCallWithGenericSignatureArguments2.errors.txt b/tests/baselines/reference/genericCallWithGenericSignatureArguments2.errors.txt index c264058ad9f..e3da7eaeaec 100644 --- a/tests/baselines/reference/genericCallWithGenericSignatureArguments2.errors.txt +++ b/tests/baselines/reference/genericCallWithGenericSignatureArguments2.errors.txt @@ -4,17 +4,14 @@ tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithGen tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithGenericSignatureArguments2.ts(16,22): error TS2345: Argument of type 'number' is not assignable to parameter of type 'T'. tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithGenericSignatureArguments2.ts(25,23): error TS2345: Argument of type '(a: T) => T' is not assignable to parameter of type '(x: Date) => Date'. Types of parameters 'a' and 'x' are incompatible. - Type 'T' is not assignable to type 'Date'. - Type 'RegExp' is not assignable to type 'Date'. - Property 'toDateString' is missing in type 'RegExp'. + Type 'Date' is not assignable to type 'T'. tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithGenericSignatureArguments2.ts(37,36): error TS2345: Argument of type '(x: E) => F' is not assignable to parameter of type '(x: E) => E'. Type 'F' is not assignable to type 'E'. tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithGenericSignatureArguments2.ts(50,21): error TS2345: Argument of type 'Date' is not assignable to parameter of type 'T'. tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithGenericSignatureArguments2.ts(51,22): error TS2345: Argument of type 'number' is not assignable to parameter of type 'T'. tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithGenericSignatureArguments2.ts(60,23): error TS2345: Argument of type '(a: T) => T' is not assignable to parameter of type '(x: Date) => Date'. Types of parameters 'a' and 'x' are incompatible. - Type 'T' is not assignable to type 'Date'. - Type 'RegExp' is not assignable to type 'Date'. + Type 'Date' is not assignable to type 'T'. tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithGenericSignatureArguments2.ts(67,51): error TS2304: Cannot find name 'U'. tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithGenericSignatureArguments2.ts(67,57): error TS2304: Cannot find name 'U'. @@ -55,9 +52,7 @@ tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithGen ~~~~~~~~~~~ !!! error TS2345: Argument of type '(a: T) => T' is not assignable to parameter of type '(x: Date) => Date'. !!! error TS2345: Types of parameters 'a' and 'x' are incompatible. -!!! error TS2345: Type 'T' is not assignable to type 'Date'. -!!! error TS2345: Type 'RegExp' is not assignable to type 'Date'. -!!! error TS2345: Property 'toDateString' is missing in type 'RegExp'. +!!! error TS2345: Type 'Date' is not assignable to type 'T'. var r7b = foo2((a) => a, (b) => b); // valid, T is inferred to be Date } @@ -103,8 +98,7 @@ tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithGen ~~~~~~~~~~~ !!! error TS2345: Argument of type '(a: T) => T' is not assignable to parameter of type '(x: Date) => Date'. !!! error TS2345: Types of parameters 'a' and 'x' are incompatible. -!!! error TS2345: Type 'T' is not assignable to type 'Date'. -!!! error TS2345: Type 'RegExp' is not assignable to type 'Date'. +!!! error TS2345: Type 'Date' is not assignable to type 'T'. var r7b = foo2((a) => a, (b) => b); } diff --git a/tests/baselines/reference/genericCallWithObjectTypeArgs2.symbols b/tests/baselines/reference/genericCallWithObjectTypeArgs2.symbols index f567499d4c9..3a5e2d948ba 100644 --- a/tests/baselines/reference/genericCallWithObjectTypeArgs2.symbols +++ b/tests/baselines/reference/genericCallWithObjectTypeArgs2.symbols @@ -3,21 +3,21 @@ class Base { >Base : Symbol(Base, Decl(genericCallWithObjectTypeArgs2.ts, 0, 0)) x: string; ->x : Symbol(x, Decl(genericCallWithObjectTypeArgs2.ts, 0, 12)) +>x : Symbol(Base.x, Decl(genericCallWithObjectTypeArgs2.ts, 0, 12)) } class Derived extends Base { >Derived : Symbol(Derived, Decl(genericCallWithObjectTypeArgs2.ts, 2, 1)) >Base : Symbol(Base, Decl(genericCallWithObjectTypeArgs2.ts, 0, 0)) y: string; ->y : Symbol(y, Decl(genericCallWithObjectTypeArgs2.ts, 3, 28)) +>y : Symbol(Derived.y, Decl(genericCallWithObjectTypeArgs2.ts, 3, 28)) } class Derived2 extends Base { >Derived2 : Symbol(Derived2, Decl(genericCallWithObjectTypeArgs2.ts, 5, 1)) >Base : Symbol(Base, Decl(genericCallWithObjectTypeArgs2.ts, 0, 0)) z: string; ->z : Symbol(z, Decl(genericCallWithObjectTypeArgs2.ts, 6, 29)) +>z : Symbol(Derived2.z, Decl(genericCallWithObjectTypeArgs2.ts, 6, 29)) } // returns {}[] @@ -93,11 +93,11 @@ interface I { >U : Symbol(U, Decl(genericCallWithObjectTypeArgs2.ts, 25, 14)) x: T; ->x : Symbol(x, Decl(genericCallWithObjectTypeArgs2.ts, 25, 19)) +>x : Symbol(I.x, Decl(genericCallWithObjectTypeArgs2.ts, 25, 19)) >T : Symbol(T, Decl(genericCallWithObjectTypeArgs2.ts, 25, 12)) y: U; ->y : Symbol(y, Decl(genericCallWithObjectTypeArgs2.ts, 26, 9)) +>y : Symbol(I.y, Decl(genericCallWithObjectTypeArgs2.ts, 26, 9)) >U : Symbol(U, Decl(genericCallWithObjectTypeArgs2.ts, 25, 14)) } diff --git a/tests/baselines/reference/genericCallWithObjectTypeArgsAndConstraints.symbols b/tests/baselines/reference/genericCallWithObjectTypeArgsAndConstraints.symbols index 50f20f55bea..20e04f26340 100644 --- a/tests/baselines/reference/genericCallWithObjectTypeArgsAndConstraints.symbols +++ b/tests/baselines/reference/genericCallWithObjectTypeArgsAndConstraints.symbols @@ -6,17 +6,17 @@ class C { >C : Symbol(C, Decl(genericCallWithObjectTypeArgsAndConstraints.ts, 0, 0)) x: string; ->x : Symbol(x, Decl(genericCallWithObjectTypeArgsAndConstraints.ts, 3, 9)) +>x : Symbol(C.x, Decl(genericCallWithObjectTypeArgsAndConstraints.ts, 3, 9)) } class D { >D : Symbol(D, Decl(genericCallWithObjectTypeArgsAndConstraints.ts, 5, 1)) x: string; ->x : Symbol(x, Decl(genericCallWithObjectTypeArgsAndConstraints.ts, 7, 9)) +>x : Symbol(D.x, Decl(genericCallWithObjectTypeArgsAndConstraints.ts, 7, 9)) y: string; ->y : Symbol(y, Decl(genericCallWithObjectTypeArgsAndConstraints.ts, 8, 14)) +>y : Symbol(D.y, Decl(genericCallWithObjectTypeArgsAndConstraints.ts, 8, 14)) } class X { @@ -24,7 +24,7 @@ class X { >T : Symbol(T, Decl(genericCallWithObjectTypeArgsAndConstraints.ts, 12, 8)) x: T; ->x : Symbol(x, Decl(genericCallWithObjectTypeArgsAndConstraints.ts, 12, 12)) +>x : Symbol(X.x, Decl(genericCallWithObjectTypeArgsAndConstraints.ts, 12, 12)) >T : Symbol(T, Decl(genericCallWithObjectTypeArgsAndConstraints.ts, 12, 8)) } diff --git a/tests/baselines/reference/genericCallWithObjectTypeArgsAndConstraints2.symbols b/tests/baselines/reference/genericCallWithObjectTypeArgsAndConstraints2.symbols index 864927a3a8c..27c015ffcff 100644 --- a/tests/baselines/reference/genericCallWithObjectTypeArgsAndConstraints2.symbols +++ b/tests/baselines/reference/genericCallWithObjectTypeArgsAndConstraints2.symbols @@ -6,14 +6,14 @@ class Base { >Base : Symbol(Base, Decl(genericCallWithObjectTypeArgsAndConstraints2.ts, 0, 0)) x: string; ->x : Symbol(x, Decl(genericCallWithObjectTypeArgsAndConstraints2.ts, 3, 12)) +>x : Symbol(Base.x, Decl(genericCallWithObjectTypeArgsAndConstraints2.ts, 3, 12)) } class Derived extends Base { >Derived : Symbol(Derived, Decl(genericCallWithObjectTypeArgsAndConstraints2.ts, 5, 1)) >Base : Symbol(Base, Decl(genericCallWithObjectTypeArgsAndConstraints2.ts, 0, 0)) y: string; ->y : Symbol(y, Decl(genericCallWithObjectTypeArgsAndConstraints2.ts, 6, 28)) +>y : Symbol(Derived.y, Decl(genericCallWithObjectTypeArgsAndConstraints2.ts, 6, 28)) } function f(x: { foo: T; bar: T }) { @@ -55,7 +55,7 @@ interface I { >T : Symbol(T, Decl(genericCallWithObjectTypeArgsAndConstraints2.ts, 18, 12)) a: T; ->a : Symbol(a, Decl(genericCallWithObjectTypeArgsAndConstraints2.ts, 18, 16)) +>a : Symbol(I.a, Decl(genericCallWithObjectTypeArgsAndConstraints2.ts, 18, 16)) >T : Symbol(T, Decl(genericCallWithObjectTypeArgsAndConstraints2.ts, 18, 12)) } function f2(x: I) { diff --git a/tests/baselines/reference/genericCallWithObjectTypeArgsAndIndexers.symbols b/tests/baselines/reference/genericCallWithObjectTypeArgsAndIndexers.symbols index 3824029dfec..4aa4807b637 100644 --- a/tests/baselines/reference/genericCallWithObjectTypeArgsAndIndexers.symbols +++ b/tests/baselines/reference/genericCallWithObjectTypeArgsAndIndexers.symbols @@ -20,7 +20,7 @@ var a: { [x: number]: Date; >x : Symbol(x, Decl(genericCallWithObjectTypeArgsAndIndexers.ts, 8, 5)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) }; var r = foo(a); @@ -31,7 +31,7 @@ var r = foo(a); function other(arg: T) { >other : Symbol(other, Decl(genericCallWithObjectTypeArgsAndIndexers.ts, 10, 15)) >T : Symbol(T, Decl(genericCallWithObjectTypeArgsAndIndexers.ts, 12, 15)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >arg : Symbol(arg, Decl(genericCallWithObjectTypeArgsAndIndexers.ts, 12, 31)) >T : Symbol(T, Decl(genericCallWithObjectTypeArgsAndIndexers.ts, 12, 15)) diff --git a/tests/baselines/reference/genericCallWithObjectTypeArgsAndIndexersErrors.symbols b/tests/baselines/reference/genericCallWithObjectTypeArgsAndIndexersErrors.symbols index 0f3fe58da01..e8371f0cf76 100644 --- a/tests/baselines/reference/genericCallWithObjectTypeArgsAndIndexersErrors.symbols +++ b/tests/baselines/reference/genericCallWithObjectTypeArgsAndIndexersErrors.symbols @@ -40,7 +40,7 @@ function other3(arg: T) { >T : Symbol(T, Decl(genericCallWithObjectTypeArgsAndIndexersErrors.ts, 14, 16)) >U : Symbol(U, Decl(genericCallWithObjectTypeArgsAndIndexersErrors.ts, 14, 28)) >U : Symbol(U, Decl(genericCallWithObjectTypeArgsAndIndexersErrors.ts, 14, 28)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >arg : Symbol(arg, Decl(genericCallWithObjectTypeArgsAndIndexersErrors.ts, 14, 45)) >T : Symbol(T, Decl(genericCallWithObjectTypeArgsAndIndexersErrors.ts, 14, 16)) diff --git a/tests/baselines/reference/genericCallWithObjectTypeArgsAndNumericIndexer.symbols b/tests/baselines/reference/genericCallWithObjectTypeArgsAndNumericIndexer.symbols index 4e7622d3d81..58d9d2a3770 100644 --- a/tests/baselines/reference/genericCallWithObjectTypeArgsAndNumericIndexer.symbols +++ b/tests/baselines/reference/genericCallWithObjectTypeArgsAndNumericIndexer.symbols @@ -14,7 +14,7 @@ function foo(x: T) { var a: { [x: number]: Date }; >a : Symbol(a, Decl(genericCallWithObjectTypeArgsAndNumericIndexer.ts, 6, 3)) >x : Symbol(x, Decl(genericCallWithObjectTypeArgsAndNumericIndexer.ts, 6, 10)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) var r = foo(a); >r : Symbol(r, Decl(genericCallWithObjectTypeArgsAndNumericIndexer.ts, 7, 3)) @@ -41,7 +41,7 @@ function other(arg: T) { function other2(arg: T) { >other2 : Symbol(other2, Decl(genericCallWithObjectTypeArgsAndNumericIndexer.ts, 12, 1)) >T : Symbol(T, Decl(genericCallWithObjectTypeArgsAndNumericIndexer.ts, 14, 16)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >arg : Symbol(arg, Decl(genericCallWithObjectTypeArgsAndNumericIndexer.ts, 14, 32)) >T : Symbol(T, Decl(genericCallWithObjectTypeArgsAndNumericIndexer.ts, 14, 16)) @@ -63,9 +63,9 @@ function other2(arg: T) { function other3(arg: T) { >other3 : Symbol(other3, Decl(genericCallWithObjectTypeArgsAndNumericIndexer.ts, 18, 1)) >T : Symbol(T, Decl(genericCallWithObjectTypeArgsAndNumericIndexer.ts, 20, 16)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >U : Symbol(U, Decl(genericCallWithObjectTypeArgsAndNumericIndexer.ts, 20, 31)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >arg : Symbol(arg, Decl(genericCallWithObjectTypeArgsAndNumericIndexer.ts, 20, 48)) >T : Symbol(T, Decl(genericCallWithObjectTypeArgsAndNumericIndexer.ts, 20, 16)) diff --git a/tests/baselines/reference/genericCallWithObjectTypeArgsAndStringIndexer.symbols b/tests/baselines/reference/genericCallWithObjectTypeArgsAndStringIndexer.symbols index 932cedf148e..56f1015f620 100644 --- a/tests/baselines/reference/genericCallWithObjectTypeArgsAndStringIndexer.symbols +++ b/tests/baselines/reference/genericCallWithObjectTypeArgsAndStringIndexer.symbols @@ -14,7 +14,7 @@ function foo(x: T) { var a: { [x: string]: Date }; >a : Symbol(a, Decl(genericCallWithObjectTypeArgsAndStringIndexer.ts, 6, 3)) >x : Symbol(x, Decl(genericCallWithObjectTypeArgsAndStringIndexer.ts, 6, 10)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) var r = foo(a); >r : Symbol(r, Decl(genericCallWithObjectTypeArgsAndStringIndexer.ts, 7, 3)) @@ -41,7 +41,7 @@ function other(arg: T) { function other2(arg: T) { >other2 : Symbol(other2, Decl(genericCallWithObjectTypeArgsAndStringIndexer.ts, 12, 1)) >T : Symbol(T, Decl(genericCallWithObjectTypeArgsAndStringIndexer.ts, 14, 16)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >arg : Symbol(arg, Decl(genericCallWithObjectTypeArgsAndStringIndexer.ts, 14, 32)) >T : Symbol(T, Decl(genericCallWithObjectTypeArgsAndStringIndexer.ts, 14, 16)) @@ -57,16 +57,16 @@ function other2(arg: T) { var d: Date = r2['hm']; // ok >d : Symbol(d, Decl(genericCallWithObjectTypeArgsAndStringIndexer.ts, 17, 7)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >r2 : Symbol(r2, Decl(genericCallWithObjectTypeArgsAndStringIndexer.ts, 16, 7)) } function other3(arg: T) { >other3 : Symbol(other3, Decl(genericCallWithObjectTypeArgsAndStringIndexer.ts, 18, 1)) >T : Symbol(T, Decl(genericCallWithObjectTypeArgsAndStringIndexer.ts, 20, 16)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >U : Symbol(U, Decl(genericCallWithObjectTypeArgsAndStringIndexer.ts, 20, 31)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >arg : Symbol(arg, Decl(genericCallWithObjectTypeArgsAndStringIndexer.ts, 20, 48)) >T : Symbol(T, Decl(genericCallWithObjectTypeArgsAndStringIndexer.ts, 20, 16)) @@ -82,7 +82,7 @@ function other3(arg: T) { var d: Date = r2['hm']; // ok >d : Symbol(d, Decl(genericCallWithObjectTypeArgsAndStringIndexer.ts, 23, 7)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >r2 : Symbol(r2, Decl(genericCallWithObjectTypeArgsAndStringIndexer.ts, 22, 7)) // BUG 821629 diff --git a/tests/baselines/reference/genericCallWithTupleType.errors.txt b/tests/baselines/reference/genericCallWithTupleType.errors.txt index bcf580320e5..24e0505d009 100644 --- a/tests/baselines/reference/genericCallWithTupleType.errors.txt +++ b/tests/baselines/reference/genericCallWithTupleType.errors.txt @@ -3,7 +3,6 @@ tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithTup Type '() => string | number | boolean' is not assignable to type '() => string | number'. Type 'string | number | boolean' is not assignable to type 'string | number'. Type 'boolean' is not assignable to type 'string | number'. - Type 'boolean' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithTupleType.ts(14,1): error TS2322: Type '{ a: string; }' is not assignable to type 'string | number'. Type '{ a: string; }' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithTupleType.ts(22,1): error TS2322: Type '[number, string]' is not assignable to type '[string, number]'. @@ -35,7 +34,6 @@ tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithTup !!! error TS2322: Type '() => string | number | boolean' is not assignable to type '() => string | number'. !!! error TS2322: Type 'string | number | boolean' is not assignable to type 'string | number'. !!! error TS2322: Type 'boolean' is not assignable to type 'string | number'. -!!! error TS2322: Type 'boolean' is not assignable to type 'number'. var e3 = i1.tuple1[2]; // {} i1.tuple1[3] = { a: "string" }; ~~~~~~~~~~~~ diff --git a/tests/baselines/reference/genericCallbacksAndClassHierarchy.symbols b/tests/baselines/reference/genericCallbacksAndClassHierarchy.symbols index be46c49a9ca..bd833c6f235 100644 --- a/tests/baselines/reference/genericCallbacksAndClassHierarchy.symbols +++ b/tests/baselines/reference/genericCallbacksAndClassHierarchy.symbols @@ -7,7 +7,7 @@ module M { >T : Symbol(T, Decl(genericCallbacksAndClassHierarchy.ts, 1, 23)) subscribe(callback: (newValue: T) => void ): any; ->subscribe : Symbol(subscribe, Decl(genericCallbacksAndClassHierarchy.ts, 1, 27)) +>subscribe : Symbol(I.subscribe, Decl(genericCallbacksAndClassHierarchy.ts, 1, 27)) >callback : Symbol(callback, Decl(genericCallbacksAndClassHierarchy.ts, 2, 18)) >newValue : Symbol(newValue, Decl(genericCallbacksAndClassHierarchy.ts, 2, 29)) >T : Symbol(T, Decl(genericCallbacksAndClassHierarchy.ts, 1, 23)) @@ -17,7 +17,7 @@ module M { >T : Symbol(T, Decl(genericCallbacksAndClassHierarchy.ts, 4, 20)) public value: I; ->value : Symbol(value, Decl(genericCallbacksAndClassHierarchy.ts, 4, 24)) +>value : Symbol(C1.value, Decl(genericCallbacksAndClassHierarchy.ts, 4, 24)) >I : Symbol(I, Decl(genericCallbacksAndClassHierarchy.ts, 0, 10)) >T : Symbol(T, Decl(genericCallbacksAndClassHierarchy.ts, 4, 20)) } @@ -26,7 +26,7 @@ module M { >T : Symbol(T, Decl(genericCallbacksAndClassHierarchy.ts, 7, 19)) public dummy: any; ->dummy : Symbol(dummy, Decl(genericCallbacksAndClassHierarchy.ts, 7, 23)) +>dummy : Symbol(A.dummy, Decl(genericCallbacksAndClassHierarchy.ts, 7, 23)) } export class B extends C1> { } >B : Symbol(B, Decl(genericCallbacksAndClassHierarchy.ts, 9, 5)) @@ -40,7 +40,7 @@ module M { >T : Symbol(T, Decl(genericCallbacksAndClassHierarchy.ts, 11, 19)) _subscribe(viewModel: B): void { ->_subscribe : Symbol(_subscribe, Decl(genericCallbacksAndClassHierarchy.ts, 11, 23)) +>_subscribe : Symbol(D._subscribe, Decl(genericCallbacksAndClassHierarchy.ts, 11, 23)) >viewModel : Symbol(viewModel, Decl(genericCallbacksAndClassHierarchy.ts, 12, 19)) >B : Symbol(B, Decl(genericCallbacksAndClassHierarchy.ts, 9, 5)) >T : Symbol(T, Decl(genericCallbacksAndClassHierarchy.ts, 11, 19)) diff --git a/tests/baselines/reference/genericClassExpressionInFunction.symbols b/tests/baselines/reference/genericClassExpressionInFunction.symbols index b5a6b8c6c70..2384cd2ed47 100644 --- a/tests/baselines/reference/genericClassExpressionInFunction.symbols +++ b/tests/baselines/reference/genericClassExpressionInFunction.symbols @@ -4,7 +4,7 @@ class A { >T : Symbol(T, Decl(genericClassExpressionInFunction.ts, 0, 8)) genericVar: T ->genericVar : Symbol(genericVar, Decl(genericClassExpressionInFunction.ts, 0, 12)) +>genericVar : Symbol(A.genericVar, Decl(genericClassExpressionInFunction.ts, 0, 12)) >T : Symbol(T, Decl(genericClassExpressionInFunction.ts, 0, 8)) } function B1() { @@ -21,7 +21,7 @@ class B2 { >V : Symbol(V, Decl(genericClassExpressionInFunction.ts, 7, 9)) anon = class extends A { } ->anon : Symbol(anon, Decl(genericClassExpressionInFunction.ts, 7, 13)) +>anon : Symbol(B2.anon, Decl(genericClassExpressionInFunction.ts, 7, 13)) >A : Symbol(A, Decl(genericClassExpressionInFunction.ts, 0, 0)) >V : Symbol(V, Decl(genericClassExpressionInFunction.ts, 7, 9)) } @@ -41,7 +41,7 @@ class K extends B1() { >B1 : Symbol(B1, Decl(genericClassExpressionInFunction.ts, 2, 1)) namae: string; ->namae : Symbol(namae, Decl(genericClassExpressionInFunction.ts, 14, 30)) +>namae : Symbol(K.namae, Decl(genericClassExpressionInFunction.ts, 14, 30)) } class C extends (new B2().anon) { >C : Symbol(C, Decl(genericClassExpressionInFunction.ts, 16, 1)) @@ -50,7 +50,7 @@ class C extends (new B2().anon) { >anon : Symbol(B2.anon, Decl(genericClassExpressionInFunction.ts, 7, 13)) name: string; ->name : Symbol(name, Decl(genericClassExpressionInFunction.ts, 17, 41)) +>name : Symbol(C.name, Decl(genericClassExpressionInFunction.ts, 17, 41)) } let b3Number = B3(); >b3Number : Symbol(b3Number, Decl(genericClassExpressionInFunction.ts, 20, 3)) @@ -61,7 +61,7 @@ class S extends b3Number { >b3Number : Symbol(b3Number, Decl(genericClassExpressionInFunction.ts, 20, 3)) nom: string; ->nom : Symbol(nom, Decl(genericClassExpressionInFunction.ts, 21, 34)) +>nom : Symbol(S.nom, Decl(genericClassExpressionInFunction.ts, 21, 34)) } var c = new C(); >c : Symbol(c, Decl(genericClassExpressionInFunction.ts, 24, 3)) diff --git a/tests/baselines/reference/genericClassPropertyInheritanceSpecialization.symbols b/tests/baselines/reference/genericClassPropertyInheritanceSpecialization.symbols index 291f439c9a9..f0f3fdd4713 100644 --- a/tests/baselines/reference/genericClassPropertyInheritanceSpecialization.symbols +++ b/tests/baselines/reference/genericClassPropertyInheritanceSpecialization.symbols @@ -4,7 +4,7 @@ interface KnockoutObservableBase { >T : Symbol(T, Decl(genericClassPropertyInheritanceSpecialization.ts, 0, 33)) peek(): T; ->peek : Symbol(peek, Decl(genericClassPropertyInheritanceSpecialization.ts, 0, 37)) +>peek : Symbol(KnockoutObservableBase.peek, Decl(genericClassPropertyInheritanceSpecialization.ts, 0, 37)) >T : Symbol(T, Decl(genericClassPropertyInheritanceSpecialization.ts, 0, 33)) (): T; @@ -22,17 +22,17 @@ interface KnockoutObservable extends KnockoutObservableBase { >T : Symbol(T, Decl(genericClassPropertyInheritanceSpecialization.ts, 6, 29)) equalityComparer(a: T, b: T): boolean; ->equalityComparer : Symbol(equalityComparer, Decl(genericClassPropertyInheritanceSpecialization.ts, 6, 67)) +>equalityComparer : Symbol(KnockoutObservable.equalityComparer, Decl(genericClassPropertyInheritanceSpecialization.ts, 6, 67)) >a : Symbol(a, Decl(genericClassPropertyInheritanceSpecialization.ts, 7, 21)) >T : Symbol(T, Decl(genericClassPropertyInheritanceSpecialization.ts, 6, 29)) >b : Symbol(b, Decl(genericClassPropertyInheritanceSpecialization.ts, 7, 26)) >T : Symbol(T, Decl(genericClassPropertyInheritanceSpecialization.ts, 6, 29)) valueHasMutated(): void; ->valueHasMutated : Symbol(valueHasMutated, Decl(genericClassPropertyInheritanceSpecialization.ts, 7, 42)) +>valueHasMutated : Symbol(KnockoutObservable.valueHasMutated, Decl(genericClassPropertyInheritanceSpecialization.ts, 7, 42)) valueWillMutate(): void; ->valueWillMutate : Symbol(valueWillMutate, Decl(genericClassPropertyInheritanceSpecialization.ts, 8, 28)) +>valueWillMutate : Symbol(KnockoutObservable.valueWillMutate, Decl(genericClassPropertyInheritanceSpecialization.ts, 8, 28)) } interface KnockoutObservableArray extends KnockoutObservable { @@ -42,19 +42,19 @@ interface KnockoutObservableArray extends KnockoutObservable { >T : Symbol(T, Decl(genericClassPropertyInheritanceSpecialization.ts, 12, 34)) indexOf(searchElement: T, fromIndex?: number): number; ->indexOf : Symbol(indexOf, Decl(genericClassPropertyInheritanceSpecialization.ts, 12, 70)) +>indexOf : Symbol(KnockoutObservableArray.indexOf, Decl(genericClassPropertyInheritanceSpecialization.ts, 12, 70)) >searchElement : Symbol(searchElement, Decl(genericClassPropertyInheritanceSpecialization.ts, 13, 12)) >T : Symbol(T, Decl(genericClassPropertyInheritanceSpecialization.ts, 12, 34)) >fromIndex : Symbol(fromIndex, Decl(genericClassPropertyInheritanceSpecialization.ts, 13, 29)) slice(start: number, end?: number): T[]; ->slice : Symbol(slice, Decl(genericClassPropertyInheritanceSpecialization.ts, 13, 58)) +>slice : Symbol(KnockoutObservableArray.slice, Decl(genericClassPropertyInheritanceSpecialization.ts, 13, 58)) >start : Symbol(start, Decl(genericClassPropertyInheritanceSpecialization.ts, 14, 10)) >end : Symbol(end, Decl(genericClassPropertyInheritanceSpecialization.ts, 14, 24)) >T : Symbol(T, Decl(genericClassPropertyInheritanceSpecialization.ts, 12, 34)) splice(start: number, deleteCount?: number, ...items: T[]): T[]; ->splice : Symbol(splice, Decl(genericClassPropertyInheritanceSpecialization.ts, 14, 44)) +>splice : Symbol(KnockoutObservableArray.splice, Decl(genericClassPropertyInheritanceSpecialization.ts, 14, 44)) >start : Symbol(start, Decl(genericClassPropertyInheritanceSpecialization.ts, 15, 11)) >deleteCount : Symbol(deleteCount, Decl(genericClassPropertyInheritanceSpecialization.ts, 15, 25)) >items : Symbol(items, Decl(genericClassPropertyInheritanceSpecialization.ts, 15, 47)) @@ -62,29 +62,29 @@ interface KnockoutObservableArray extends KnockoutObservable { >T : Symbol(T, Decl(genericClassPropertyInheritanceSpecialization.ts, 12, 34)) pop(): T; ->pop : Symbol(pop, Decl(genericClassPropertyInheritanceSpecialization.ts, 15, 68)) +>pop : Symbol(KnockoutObservableArray.pop, Decl(genericClassPropertyInheritanceSpecialization.ts, 15, 68)) >T : Symbol(T, Decl(genericClassPropertyInheritanceSpecialization.ts, 12, 34)) push(...items: T[]): void; ->push : Symbol(push, Decl(genericClassPropertyInheritanceSpecialization.ts, 16, 13)) +>push : Symbol(KnockoutObservableArray.push, Decl(genericClassPropertyInheritanceSpecialization.ts, 16, 13)) >items : Symbol(items, Decl(genericClassPropertyInheritanceSpecialization.ts, 17, 9)) >T : Symbol(T, Decl(genericClassPropertyInheritanceSpecialization.ts, 12, 34)) shift(): T; ->shift : Symbol(shift, Decl(genericClassPropertyInheritanceSpecialization.ts, 17, 30)) +>shift : Symbol(KnockoutObservableArray.shift, Decl(genericClassPropertyInheritanceSpecialization.ts, 17, 30)) >T : Symbol(T, Decl(genericClassPropertyInheritanceSpecialization.ts, 12, 34)) unshift(...items: T[]): number; ->unshift : Symbol(unshift, Decl(genericClassPropertyInheritanceSpecialization.ts, 18, 15)) +>unshift : Symbol(KnockoutObservableArray.unshift, Decl(genericClassPropertyInheritanceSpecialization.ts, 18, 15)) >items : Symbol(items, Decl(genericClassPropertyInheritanceSpecialization.ts, 19, 12)) >T : Symbol(T, Decl(genericClassPropertyInheritanceSpecialization.ts, 12, 34)) reverse(): T[]; ->reverse : Symbol(reverse, Decl(genericClassPropertyInheritanceSpecialization.ts, 19, 35)) +>reverse : Symbol(KnockoutObservableArray.reverse, Decl(genericClassPropertyInheritanceSpecialization.ts, 19, 35)) >T : Symbol(T, Decl(genericClassPropertyInheritanceSpecialization.ts, 12, 34)) sort(compareFunction?: (a: T, b: T) => number): void; ->sort : Symbol(sort, Decl(genericClassPropertyInheritanceSpecialization.ts, 20, 19)) +>sort : Symbol(KnockoutObservableArray.sort, Decl(genericClassPropertyInheritanceSpecialization.ts, 20, 19)) >compareFunction : Symbol(compareFunction, Decl(genericClassPropertyInheritanceSpecialization.ts, 21, 9)) >a : Symbol(a, Decl(genericClassPropertyInheritanceSpecialization.ts, 21, 28)) >T : Symbol(T, Decl(genericClassPropertyInheritanceSpecialization.ts, 12, 34)) @@ -92,31 +92,31 @@ interface KnockoutObservableArray extends KnockoutObservable { >T : Symbol(T, Decl(genericClassPropertyInheritanceSpecialization.ts, 12, 34)) replace(oldItem: T, newItem: T): void; ->replace : Symbol(replace, Decl(genericClassPropertyInheritanceSpecialization.ts, 21, 57)) +>replace : Symbol(KnockoutObservableArray.replace, Decl(genericClassPropertyInheritanceSpecialization.ts, 21, 57)) >oldItem : Symbol(oldItem, Decl(genericClassPropertyInheritanceSpecialization.ts, 22, 12)) >T : Symbol(T, Decl(genericClassPropertyInheritanceSpecialization.ts, 12, 34)) >newItem : Symbol(newItem, Decl(genericClassPropertyInheritanceSpecialization.ts, 22, 23)) >T : Symbol(T, Decl(genericClassPropertyInheritanceSpecialization.ts, 12, 34)) remove(item: T): T[]; ->remove : Symbol(remove, Decl(genericClassPropertyInheritanceSpecialization.ts, 22, 42)) +>remove : Symbol(KnockoutObservableArray.remove, Decl(genericClassPropertyInheritanceSpecialization.ts, 22, 42)) >item : Symbol(item, Decl(genericClassPropertyInheritanceSpecialization.ts, 23, 11)) >T : Symbol(T, Decl(genericClassPropertyInheritanceSpecialization.ts, 12, 34)) >T : Symbol(T, Decl(genericClassPropertyInheritanceSpecialization.ts, 12, 34)) removeAll(items?: T[]): T[]; ->removeAll : Symbol(removeAll, Decl(genericClassPropertyInheritanceSpecialization.ts, 23, 25)) +>removeAll : Symbol(KnockoutObservableArray.removeAll, Decl(genericClassPropertyInheritanceSpecialization.ts, 23, 25)) >items : Symbol(items, Decl(genericClassPropertyInheritanceSpecialization.ts, 24, 14)) >T : Symbol(T, Decl(genericClassPropertyInheritanceSpecialization.ts, 12, 34)) >T : Symbol(T, Decl(genericClassPropertyInheritanceSpecialization.ts, 12, 34)) destroy(item: T): void; ->destroy : Symbol(destroy, Decl(genericClassPropertyInheritanceSpecialization.ts, 24, 32)) +>destroy : Symbol(KnockoutObservableArray.destroy, Decl(genericClassPropertyInheritanceSpecialization.ts, 24, 32)) >item : Symbol(item, Decl(genericClassPropertyInheritanceSpecialization.ts, 25, 12)) >T : Symbol(T, Decl(genericClassPropertyInheritanceSpecialization.ts, 12, 34)) destroyAll(items?: T[]): void; ->destroyAll : Symbol(destroyAll, Decl(genericClassPropertyInheritanceSpecialization.ts, 25, 27)) +>destroyAll : Symbol(KnockoutObservableArray.destroyAll, Decl(genericClassPropertyInheritanceSpecialization.ts, 25, 27)) >items : Symbol(items, Decl(genericClassPropertyInheritanceSpecialization.ts, 26, 15)) >T : Symbol(T, Decl(genericClassPropertyInheritanceSpecialization.ts, 12, 34)) } @@ -125,7 +125,7 @@ interface KnockoutObservableArrayStatic { >KnockoutObservableArrayStatic : Symbol(KnockoutObservableArrayStatic, Decl(genericClassPropertyInheritanceSpecialization.ts, 27, 1)) fn: KnockoutObservableArray; ->fn : Symbol(fn, Decl(genericClassPropertyInheritanceSpecialization.ts, 29, 41)) +>fn : Symbol(KnockoutObservableArrayStatic.fn, Decl(genericClassPropertyInheritanceSpecialization.ts, 29, 41)) >KnockoutObservableArray : Symbol(KnockoutObservableArray, Decl(genericClassPropertyInheritanceSpecialization.ts, 10, 1)) (value?: T[]): KnockoutObservableArray; @@ -154,18 +154,18 @@ module Portal.Controls.Validators { >TValue : Symbol(TValue, Decl(genericClassPropertyInheritanceSpecialization.ts, 41, 27)) private _subscription; ->_subscription : Symbol(_subscription, Decl(genericClassPropertyInheritanceSpecialization.ts, 41, 36)) +>_subscription : Symbol(Validator._subscription, Decl(genericClassPropertyInheritanceSpecialization.ts, 41, 36)) public message: KnockoutObservable; ->message : Symbol(message, Decl(genericClassPropertyInheritanceSpecialization.ts, 42, 30)) +>message : Symbol(Validator.message, Decl(genericClassPropertyInheritanceSpecialization.ts, 42, 30)) >KnockoutObservable : Symbol(KnockoutObservable, Decl(genericClassPropertyInheritanceSpecialization.ts, 4, 1)) public validationState: KnockoutObservable; ->validationState : Symbol(validationState, Decl(genericClassPropertyInheritanceSpecialization.ts, 43, 51)) +>validationState : Symbol(Validator.validationState, Decl(genericClassPropertyInheritanceSpecialization.ts, 43, 51)) >KnockoutObservable : Symbol(KnockoutObservable, Decl(genericClassPropertyInheritanceSpecialization.ts, 4, 1)) public validate: KnockoutObservable; ->validate : Symbol(validate, Decl(genericClassPropertyInheritanceSpecialization.ts, 44, 59)) +>validate : Symbol(Validator.validate, Decl(genericClassPropertyInheritanceSpecialization.ts, 44, 59)) >KnockoutObservable : Symbol(KnockoutObservable, Decl(genericClassPropertyInheritanceSpecialization.ts, 4, 1)) >TValue : Symbol(TValue, Decl(genericClassPropertyInheritanceSpecialization.ts, 41, 27)) @@ -173,10 +173,10 @@ module Portal.Controls.Validators { >message : Symbol(message, Decl(genericClassPropertyInheritanceSpecialization.ts, 46, 20)) public destroy(): void { } ->destroy : Symbol(destroy, Decl(genericClassPropertyInheritanceSpecialization.ts, 46, 41)) +>destroy : Symbol(Validator.destroy, Decl(genericClassPropertyInheritanceSpecialization.ts, 46, 41)) public _validate(value: TValue): number {return 0 } ->_validate : Symbol(_validate, Decl(genericClassPropertyInheritanceSpecialization.ts, 47, 34)) +>_validate : Symbol(Validator._validate, Decl(genericClassPropertyInheritanceSpecialization.ts, 47, 34)) >value : Symbol(value, Decl(genericClassPropertyInheritanceSpecialization.ts, 48, 25)) >TValue : Symbol(TValue, Decl(genericClassPropertyInheritanceSpecialization.ts, 41, 27)) } @@ -216,7 +216,7 @@ interface Contract { >TValue : Symbol(TValue, Decl(genericClassPropertyInheritanceSpecialization.ts, 63, 19)) validators: KnockoutObservableArray>; ->validators : Symbol(validators, Decl(genericClassPropertyInheritanceSpecialization.ts, 63, 28)) +>validators : Symbol(Contract.validators, Decl(genericClassPropertyInheritanceSpecialization.ts, 63, 28)) >KnockoutObservableArray : Symbol(KnockoutObservableArray, Decl(genericClassPropertyInheritanceSpecialization.ts, 10, 1)) >PortalFx : Symbol(PortalFx, Decl(genericClassPropertyInheritanceSpecialization.ts, 50, 1)) >ViewModels : Symbol(PortalFx.ViewModels, Decl(genericClassPropertyInheritanceSpecialization.ts, 52, 16)) @@ -234,7 +234,7 @@ class ViewModel implements Contract { >TValue : Symbol(TValue, Decl(genericClassPropertyInheritanceSpecialization.ts, 69, 16)) public validators: KnockoutObservableArray> = ko.observableArray>(); ->validators : Symbol(validators, Decl(genericClassPropertyInheritanceSpecialization.ts, 69, 53)) +>validators : Symbol(ViewModel.validators, Decl(genericClassPropertyInheritanceSpecialization.ts, 69, 53)) >KnockoutObservableArray : Symbol(KnockoutObservableArray, Decl(genericClassPropertyInheritanceSpecialization.ts, 10, 1)) >PortalFx : Symbol(PortalFx, Decl(genericClassPropertyInheritanceSpecialization.ts, 50, 1)) >ViewModels : Symbol(PortalFx.ViewModels, Decl(genericClassPropertyInheritanceSpecialization.ts, 52, 16)) diff --git a/tests/baselines/reference/genericClassWithObjectTypeArgsAndConstraints.symbols b/tests/baselines/reference/genericClassWithObjectTypeArgsAndConstraints.symbols index a178f5b97e8..c7d369987c9 100644 --- a/tests/baselines/reference/genericClassWithObjectTypeArgsAndConstraints.symbols +++ b/tests/baselines/reference/genericClassWithObjectTypeArgsAndConstraints.symbols @@ -6,17 +6,17 @@ class C { >C : Symbol(C, Decl(genericClassWithObjectTypeArgsAndConstraints.ts, 0, 0)) x: string; ->x : Symbol(x, Decl(genericClassWithObjectTypeArgsAndConstraints.ts, 3, 9)) +>x : Symbol(C.x, Decl(genericClassWithObjectTypeArgsAndConstraints.ts, 3, 9)) } class D { >D : Symbol(D, Decl(genericClassWithObjectTypeArgsAndConstraints.ts, 5, 1)) x: string; ->x : Symbol(x, Decl(genericClassWithObjectTypeArgsAndConstraints.ts, 7, 9)) +>x : Symbol(D.x, Decl(genericClassWithObjectTypeArgsAndConstraints.ts, 7, 9)) y: string; ->y : Symbol(y, Decl(genericClassWithObjectTypeArgsAndConstraints.ts, 8, 14)) +>y : Symbol(D.y, Decl(genericClassWithObjectTypeArgsAndConstraints.ts, 8, 14)) } class X { @@ -24,7 +24,7 @@ class X { >T : Symbol(T, Decl(genericClassWithObjectTypeArgsAndConstraints.ts, 12, 8)) x: T; ->x : Symbol(x, Decl(genericClassWithObjectTypeArgsAndConstraints.ts, 12, 12)) +>x : Symbol(X.x, Decl(genericClassWithObjectTypeArgsAndConstraints.ts, 12, 12)) >T : Symbol(T, Decl(genericClassWithObjectTypeArgsAndConstraints.ts, 12, 8)) } @@ -37,7 +37,7 @@ module Class { >x : Symbol(x, Decl(genericClassWithObjectTypeArgsAndConstraints.ts, 17, 23)) foo(t: X, t2: X) { ->foo : Symbol(foo, Decl(genericClassWithObjectTypeArgsAndConstraints.ts, 17, 38)) +>foo : Symbol(G.foo, Decl(genericClassWithObjectTypeArgsAndConstraints.ts, 17, 38)) >T : Symbol(T, Decl(genericClassWithObjectTypeArgsAndConstraints.ts, 18, 12)) >x : Symbol(x, Decl(genericClassWithObjectTypeArgsAndConstraints.ts, 18, 23)) >t : Symbol(t, Decl(genericClassWithObjectTypeArgsAndConstraints.ts, 18, 37)) @@ -94,7 +94,7 @@ module Class { >C : Symbol(C, Decl(genericClassWithObjectTypeArgsAndConstraints.ts, 0, 0)) foo2(t: X, t2: X) { ->foo2 : Symbol(foo2, Decl(genericClassWithObjectTypeArgsAndConstraints.ts, 30, 27)) +>foo2 : Symbol(G2.foo2, Decl(genericClassWithObjectTypeArgsAndConstraints.ts, 30, 27)) >T : Symbol(T, Decl(genericClassWithObjectTypeArgsAndConstraints.ts, 31, 13)) >C : Symbol(C, Decl(genericClassWithObjectTypeArgsAndConstraints.ts, 0, 0)) >t : Symbol(t, Decl(genericClassWithObjectTypeArgsAndConstraints.ts, 31, 26)) @@ -143,7 +143,7 @@ module Interface { >x : Symbol(x, Decl(genericClassWithObjectTypeArgsAndConstraints.ts, 42, 27)) foo(t: X, t2: X): T; ->foo : Symbol(foo, Decl(genericClassWithObjectTypeArgsAndConstraints.ts, 42, 42)) +>foo : Symbol(G.foo, Decl(genericClassWithObjectTypeArgsAndConstraints.ts, 42, 42)) >T : Symbol(T, Decl(genericClassWithObjectTypeArgsAndConstraints.ts, 43, 12)) >x : Symbol(x, Decl(genericClassWithObjectTypeArgsAndConstraints.ts, 43, 23)) >t : Symbol(t, Decl(genericClassWithObjectTypeArgsAndConstraints.ts, 43, 37)) @@ -193,7 +193,7 @@ module Interface { >C : Symbol(C, Decl(genericClassWithObjectTypeArgsAndConstraints.ts, 0, 0)) foo2(t: X, t2: X): T; ->foo2 : Symbol(foo2, Decl(genericClassWithObjectTypeArgsAndConstraints.ts, 52, 31)) +>foo2 : Symbol(G2.foo2, Decl(genericClassWithObjectTypeArgsAndConstraints.ts, 52, 31)) >T : Symbol(T, Decl(genericClassWithObjectTypeArgsAndConstraints.ts, 53, 13)) >C : Symbol(C, Decl(genericClassWithObjectTypeArgsAndConstraints.ts, 0, 0)) >t : Symbol(t, Decl(genericClassWithObjectTypeArgsAndConstraints.ts, 53, 26)) diff --git a/tests/baselines/reference/genericClassWithStaticFactory.symbols b/tests/baselines/reference/genericClassWithStaticFactory.symbols index 47b7f5f736b..eb4c58ab3cc 100644 --- a/tests/baselines/reference/genericClassWithStaticFactory.symbols +++ b/tests/baselines/reference/genericClassWithStaticFactory.symbols @@ -7,36 +7,36 @@ module Editor { >T : Symbol(T, Decl(genericClassWithStaticFactory.ts, 2, 22)) public next: List; ->next : Symbol(next, Decl(genericClassWithStaticFactory.ts, 2, 26)) +>next : Symbol(List.next, Decl(genericClassWithStaticFactory.ts, 2, 26)) >List : Symbol(List, Decl(genericClassWithStaticFactory.ts, 0, 15)) >T : Symbol(T, Decl(genericClassWithStaticFactory.ts, 2, 22)) public prev: List; ->prev : Symbol(prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) +>prev : Symbol(List.prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) >List : Symbol(List, Decl(genericClassWithStaticFactory.ts, 0, 15)) >T : Symbol(T, Decl(genericClassWithStaticFactory.ts, 2, 22)) private listFactory: ListFactory; ->listFactory : Symbol(listFactory, Decl(genericClassWithStaticFactory.ts, 4, 29)) +>listFactory : Symbol(List.listFactory, Decl(genericClassWithStaticFactory.ts, 4, 29)) >ListFactory : Symbol(ListFactory, Decl(genericClassWithStaticFactory.ts, 106, 5)) >T : Symbol(T, Decl(genericClassWithStaticFactory.ts, 2, 22)) constructor(public isHead: boolean, public data: T) { ->isHead : Symbol(isHead, Decl(genericClassWithStaticFactory.ts, 7, 20)) ->data : Symbol(data, Decl(genericClassWithStaticFactory.ts, 7, 43)) +>isHead : Symbol(List.isHead, Decl(genericClassWithStaticFactory.ts, 7, 20)) +>data : Symbol(List.data, Decl(genericClassWithStaticFactory.ts, 7, 43)) >T : Symbol(T, Decl(genericClassWithStaticFactory.ts, 2, 22)) this.listFactory = new ListFactory(); ->this.listFactory : Symbol(listFactory, Decl(genericClassWithStaticFactory.ts, 4, 29)) +>this.listFactory : Symbol(List.listFactory, Decl(genericClassWithStaticFactory.ts, 4, 29)) >this : Symbol(List, Decl(genericClassWithStaticFactory.ts, 0, 15)) ->listFactory : Symbol(listFactory, Decl(genericClassWithStaticFactory.ts, 4, 29)) +>listFactory : Symbol(List.listFactory, Decl(genericClassWithStaticFactory.ts, 4, 29)) >ListFactory : Symbol(ListFactory, Decl(genericClassWithStaticFactory.ts, 106, 5)) >T : Symbol(T, Decl(genericClassWithStaticFactory.ts, 2, 22)) } public add(data: T): List { ->add : Symbol(add, Decl(genericClassWithStaticFactory.ts, 10, 9)) +>add : Symbol(List.add, Decl(genericClassWithStaticFactory.ts, 10, 9)) >data : Symbol(data, Decl(genericClassWithStaticFactory.ts, 12, 19)) >T : Symbol(T, Decl(genericClassWithStaticFactory.ts, 2, 22)) >List : Symbol(List, Decl(genericClassWithStaticFactory.ts, 0, 15)) @@ -45,17 +45,17 @@ module Editor { var entry = this.listFactory.MakeEntry(data); >entry : Symbol(entry, Decl(genericClassWithStaticFactory.ts, 13, 15)) >this.listFactory.MakeEntry : Symbol(ListFactory.MakeEntry, Decl(genericClassWithStaticFactory.ts, 115, 9)) ->this.listFactory : Symbol(listFactory, Decl(genericClassWithStaticFactory.ts, 4, 29)) +>this.listFactory : Symbol(List.listFactory, Decl(genericClassWithStaticFactory.ts, 4, 29)) >this : Symbol(List, Decl(genericClassWithStaticFactory.ts, 0, 15)) ->listFactory : Symbol(listFactory, Decl(genericClassWithStaticFactory.ts, 4, 29)) +>listFactory : Symbol(List.listFactory, Decl(genericClassWithStaticFactory.ts, 4, 29)) >MakeEntry : Symbol(ListFactory.MakeEntry, Decl(genericClassWithStaticFactory.ts, 115, 9)) >data : Symbol(data, Decl(genericClassWithStaticFactory.ts, 12, 19)) this.prev.next = entry; >this.prev.next : Symbol(List.next, Decl(genericClassWithStaticFactory.ts, 2, 26)) ->this.prev : Symbol(prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) +>this.prev : Symbol(List.prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) >this : Symbol(List, Decl(genericClassWithStaticFactory.ts, 0, 15)) ->prev : Symbol(prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) +>prev : Symbol(List.prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) >next : Symbol(List.next, Decl(genericClassWithStaticFactory.ts, 2, 26)) >entry : Symbol(entry, Decl(genericClassWithStaticFactory.ts, 13, 15)) @@ -69,14 +69,14 @@ module Editor { >entry.prev : Symbol(List.prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) >entry : Symbol(entry, Decl(genericClassWithStaticFactory.ts, 13, 15)) >prev : Symbol(List.prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) ->this.prev : Symbol(prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) +>this.prev : Symbol(List.prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) >this : Symbol(List, Decl(genericClassWithStaticFactory.ts, 0, 15)) ->prev : Symbol(prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) +>prev : Symbol(List.prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) this.prev = entry; ->this.prev : Symbol(prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) +>this.prev : Symbol(List.prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) >this : Symbol(List, Decl(genericClassWithStaticFactory.ts, 0, 15)) ->prev : Symbol(prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) +>prev : Symbol(List.prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) >entry : Symbol(entry, Decl(genericClassWithStaticFactory.ts, 13, 15)) return entry; @@ -84,7 +84,7 @@ module Editor { } public count(): number { ->count : Symbol(count, Decl(genericClassWithStaticFactory.ts, 20, 9)) +>count : Symbol(List.count, Decl(genericClassWithStaticFactory.ts, 20, 9)) var entry: List; >entry : Symbol(entry, Decl(genericClassWithStaticFactory.ts, 23, 15)) @@ -96,9 +96,9 @@ module Editor { entry = this.next; >entry : Symbol(entry, Decl(genericClassWithStaticFactory.ts, 23, 15)) ->this.next : Symbol(next, Decl(genericClassWithStaticFactory.ts, 2, 26)) +>this.next : Symbol(List.next, Decl(genericClassWithStaticFactory.ts, 2, 26)) >this : Symbol(List, Decl(genericClassWithStaticFactory.ts, 0, 15)) ->next : Symbol(next, Decl(genericClassWithStaticFactory.ts, 2, 26)) +>next : Symbol(List.next, Decl(genericClassWithStaticFactory.ts, 2, 26)) for (i = 0; !(entry.isHead); i++) { >i : Symbol(i, Decl(genericClassWithStaticFactory.ts, 24, 15)) @@ -119,29 +119,29 @@ module Editor { } public isEmpty(): boolean { ->isEmpty : Symbol(isEmpty, Decl(genericClassWithStaticFactory.ts, 32, 9)) +>isEmpty : Symbol(List.isEmpty, Decl(genericClassWithStaticFactory.ts, 32, 9)) return (this.next == this); ->this.next : Symbol(next, Decl(genericClassWithStaticFactory.ts, 2, 26)) +>this.next : Symbol(List.next, Decl(genericClassWithStaticFactory.ts, 2, 26)) >this : Symbol(List, Decl(genericClassWithStaticFactory.ts, 0, 15)) ->next : Symbol(next, Decl(genericClassWithStaticFactory.ts, 2, 26)) +>next : Symbol(List.next, Decl(genericClassWithStaticFactory.ts, 2, 26)) >this : Symbol(List, Decl(genericClassWithStaticFactory.ts, 0, 15)) } public first(): T { ->first : Symbol(first, Decl(genericClassWithStaticFactory.ts, 36, 9)) +>first : Symbol(List.first, Decl(genericClassWithStaticFactory.ts, 36, 9)) >T : Symbol(T, Decl(genericClassWithStaticFactory.ts, 2, 22)) if (this.isEmpty()) ->this.isEmpty : Symbol(isEmpty, Decl(genericClassWithStaticFactory.ts, 32, 9)) +>this.isEmpty : Symbol(List.isEmpty, Decl(genericClassWithStaticFactory.ts, 32, 9)) >this : Symbol(List, Decl(genericClassWithStaticFactory.ts, 0, 15)) ->isEmpty : Symbol(isEmpty, Decl(genericClassWithStaticFactory.ts, 32, 9)) +>isEmpty : Symbol(List.isEmpty, Decl(genericClassWithStaticFactory.ts, 32, 9)) { return this.next.data; >this.next.data : Symbol(List.data, Decl(genericClassWithStaticFactory.ts, 7, 43)) ->this.next : Symbol(next, Decl(genericClassWithStaticFactory.ts, 2, 26)) +>this.next : Symbol(List.next, Decl(genericClassWithStaticFactory.ts, 2, 26)) >this : Symbol(List, Decl(genericClassWithStaticFactory.ts, 0, 15)) ->next : Symbol(next, Decl(genericClassWithStaticFactory.ts, 2, 26)) +>next : Symbol(List.next, Decl(genericClassWithStaticFactory.ts, 2, 26)) >data : Symbol(List.data, Decl(genericClassWithStaticFactory.ts, 7, 43)) } else { @@ -150,7 +150,7 @@ module Editor { } public pushEntry(entry: List): void { ->pushEntry : Symbol(pushEntry, Decl(genericClassWithStaticFactory.ts, 46, 9)) +>pushEntry : Symbol(List.pushEntry, Decl(genericClassWithStaticFactory.ts, 46, 9)) >entry : Symbol(entry, Decl(genericClassWithStaticFactory.ts, 48, 25)) >List : Symbol(List, Decl(genericClassWithStaticFactory.ts, 0, 15)) >T : Symbol(T, Decl(genericClassWithStaticFactory.ts, 2, 22)) @@ -164,9 +164,9 @@ module Editor { >entry.next : Symbol(List.next, Decl(genericClassWithStaticFactory.ts, 2, 26)) >entry : Symbol(entry, Decl(genericClassWithStaticFactory.ts, 48, 25)) >next : Symbol(List.next, Decl(genericClassWithStaticFactory.ts, 2, 26)) ->this.next : Symbol(next, Decl(genericClassWithStaticFactory.ts, 2, 26)) +>this.next : Symbol(List.next, Decl(genericClassWithStaticFactory.ts, 2, 26)) >this : Symbol(List, Decl(genericClassWithStaticFactory.ts, 0, 15)) ->next : Symbol(next, Decl(genericClassWithStaticFactory.ts, 2, 26)) +>next : Symbol(List.next, Decl(genericClassWithStaticFactory.ts, 2, 26)) entry.prev = this; >entry.prev : Symbol(List.prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) @@ -175,9 +175,9 @@ module Editor { >this : Symbol(List, Decl(genericClassWithStaticFactory.ts, 0, 15)) this.next = entry; ->this.next : Symbol(next, Decl(genericClassWithStaticFactory.ts, 2, 26)) +>this.next : Symbol(List.next, Decl(genericClassWithStaticFactory.ts, 2, 26)) >this : Symbol(List, Decl(genericClassWithStaticFactory.ts, 0, 15)) ->next : Symbol(next, Decl(genericClassWithStaticFactory.ts, 2, 26)) +>next : Symbol(List.next, Decl(genericClassWithStaticFactory.ts, 2, 26)) >entry : Symbol(entry, Decl(genericClassWithStaticFactory.ts, 48, 25)) entry.next.prev = entry; // entry.next.prev does not show intellisense, but entry.prev.prev does @@ -190,16 +190,16 @@ module Editor { } public push(data: T): void { ->push : Symbol(push, Decl(genericClassWithStaticFactory.ts, 54, 9)) +>push : Symbol(List.push, Decl(genericClassWithStaticFactory.ts, 54, 9)) >data : Symbol(data, Decl(genericClassWithStaticFactory.ts, 56, 20)) >T : Symbol(T, Decl(genericClassWithStaticFactory.ts, 2, 22)) var entry = this.listFactory.MakeEntry(data); >entry : Symbol(entry, Decl(genericClassWithStaticFactory.ts, 57, 15)) >this.listFactory.MakeEntry : Symbol(ListFactory.MakeEntry, Decl(genericClassWithStaticFactory.ts, 115, 9)) ->this.listFactory : Symbol(listFactory, Decl(genericClassWithStaticFactory.ts, 4, 29)) +>this.listFactory : Symbol(List.listFactory, Decl(genericClassWithStaticFactory.ts, 4, 29)) >this : Symbol(List, Decl(genericClassWithStaticFactory.ts, 0, 15)) ->listFactory : Symbol(listFactory, Decl(genericClassWithStaticFactory.ts, 4, 29)) +>listFactory : Symbol(List.listFactory, Decl(genericClassWithStaticFactory.ts, 4, 29)) >MakeEntry : Symbol(ListFactory.MakeEntry, Decl(genericClassWithStaticFactory.ts, 115, 9)) >data : Symbol(data, Decl(genericClassWithStaticFactory.ts, 56, 20)) @@ -218,9 +218,9 @@ module Editor { >entry.next : Symbol(List.next, Decl(genericClassWithStaticFactory.ts, 2, 26)) >entry : Symbol(entry, Decl(genericClassWithStaticFactory.ts, 57, 15)) >next : Symbol(List.next, Decl(genericClassWithStaticFactory.ts, 2, 26)) ->this.next : Symbol(next, Decl(genericClassWithStaticFactory.ts, 2, 26)) +>this.next : Symbol(List.next, Decl(genericClassWithStaticFactory.ts, 2, 26)) >this : Symbol(List, Decl(genericClassWithStaticFactory.ts, 0, 15)) ->next : Symbol(next, Decl(genericClassWithStaticFactory.ts, 2, 26)) +>next : Symbol(List.next, Decl(genericClassWithStaticFactory.ts, 2, 26)) entry.prev = this; >entry.prev : Symbol(List.prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) @@ -229,9 +229,9 @@ module Editor { >this : Symbol(List, Decl(genericClassWithStaticFactory.ts, 0, 15)) this.next = entry; ->this.next : Symbol(next, Decl(genericClassWithStaticFactory.ts, 2, 26)) +>this.next : Symbol(List.next, Decl(genericClassWithStaticFactory.ts, 2, 26)) >this : Symbol(List, Decl(genericClassWithStaticFactory.ts, 0, 15)) ->next : Symbol(next, Decl(genericClassWithStaticFactory.ts, 2, 26)) +>next : Symbol(List.next, Decl(genericClassWithStaticFactory.ts, 2, 26)) >entry : Symbol(entry, Decl(genericClassWithStaticFactory.ts, 57, 15)) entry.next.prev = entry; // entry.next.prev does not show intellisense, but entry.prev.prev does @@ -244,7 +244,7 @@ module Editor { } public popEntry(head: List): List { ->popEntry : Symbol(popEntry, Decl(genericClassWithStaticFactory.ts, 64, 9)) +>popEntry : Symbol(List.popEntry, Decl(genericClassWithStaticFactory.ts, 64, 9)) >head : Symbol(head, Decl(genericClassWithStaticFactory.ts, 66, 24)) >List : Symbol(List, Decl(genericClassWithStaticFactory.ts, 0, 15)) >T : Symbol(T, Decl(genericClassWithStaticFactory.ts, 2, 22)) @@ -253,9 +253,9 @@ module Editor { if (this.next.isHead) { >this.next.isHead : Symbol(List.isHead, Decl(genericClassWithStaticFactory.ts, 7, 20)) ->this.next : Symbol(next, Decl(genericClassWithStaticFactory.ts, 2, 26)) +>this.next : Symbol(List.next, Decl(genericClassWithStaticFactory.ts, 2, 26)) >this : Symbol(List, Decl(genericClassWithStaticFactory.ts, 0, 15)) ->next : Symbol(next, Decl(genericClassWithStaticFactory.ts, 2, 26)) +>next : Symbol(List.next, Decl(genericClassWithStaticFactory.ts, 2, 26)) >isHead : Symbol(List.isHead, Decl(genericClassWithStaticFactory.ts, 7, 20)) return null; @@ -263,18 +263,18 @@ module Editor { else { return this.listFactory.RemoveEntry(this.next); >this.listFactory.RemoveEntry : Symbol(ListFactory.RemoveEntry, Decl(genericClassWithStaticFactory.ts, 122, 9)) ->this.listFactory : Symbol(listFactory, Decl(genericClassWithStaticFactory.ts, 4, 29)) +>this.listFactory : Symbol(List.listFactory, Decl(genericClassWithStaticFactory.ts, 4, 29)) >this : Symbol(List, Decl(genericClassWithStaticFactory.ts, 0, 15)) ->listFactory : Symbol(listFactory, Decl(genericClassWithStaticFactory.ts, 4, 29)) +>listFactory : Symbol(List.listFactory, Decl(genericClassWithStaticFactory.ts, 4, 29)) >RemoveEntry : Symbol(ListFactory.RemoveEntry, Decl(genericClassWithStaticFactory.ts, 122, 9)) ->this.next : Symbol(next, Decl(genericClassWithStaticFactory.ts, 2, 26)) +>this.next : Symbol(List.next, Decl(genericClassWithStaticFactory.ts, 2, 26)) >this : Symbol(List, Decl(genericClassWithStaticFactory.ts, 0, 15)) ->next : Symbol(next, Decl(genericClassWithStaticFactory.ts, 2, 26)) +>next : Symbol(List.next, Decl(genericClassWithStaticFactory.ts, 2, 26)) } } public insertEntry(entry: List): List { ->insertEntry : Symbol(insertEntry, Decl(genericClassWithStaticFactory.ts, 73, 9)) +>insertEntry : Symbol(List.insertEntry, Decl(genericClassWithStaticFactory.ts, 73, 9)) >entry : Symbol(entry, Decl(genericClassWithStaticFactory.ts, 75, 27)) >List : Symbol(List, Decl(genericClassWithStaticFactory.ts, 0, 15)) >T : Symbol(T, Decl(genericClassWithStaticFactory.ts, 2, 22)) @@ -288,9 +288,9 @@ module Editor { this.prev.next = entry; >this.prev.next : Symbol(List.next, Decl(genericClassWithStaticFactory.ts, 2, 26)) ->this.prev : Symbol(prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) +>this.prev : Symbol(List.prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) >this : Symbol(List, Decl(genericClassWithStaticFactory.ts, 0, 15)) ->prev : Symbol(prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) +>prev : Symbol(List.prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) >next : Symbol(List.next, Decl(genericClassWithStaticFactory.ts, 2, 26)) >entry : Symbol(entry, Decl(genericClassWithStaticFactory.ts, 75, 27)) @@ -304,14 +304,14 @@ module Editor { >entry.prev : Symbol(List.prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) >entry : Symbol(entry, Decl(genericClassWithStaticFactory.ts, 75, 27)) >prev : Symbol(List.prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) ->this.prev : Symbol(prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) +>this.prev : Symbol(List.prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) >this : Symbol(List, Decl(genericClassWithStaticFactory.ts, 0, 15)) ->prev : Symbol(prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) +>prev : Symbol(List.prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) this.prev = entry; ->this.prev : Symbol(prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) +>this.prev : Symbol(List.prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) >this : Symbol(List, Decl(genericClassWithStaticFactory.ts, 0, 15)) ->prev : Symbol(prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) +>prev : Symbol(List.prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) >entry : Symbol(entry, Decl(genericClassWithStaticFactory.ts, 75, 27)) return entry; @@ -319,7 +319,7 @@ module Editor { } public insertAfter(data: T): List { ->insertAfter : Symbol(insertAfter, Decl(genericClassWithStaticFactory.ts, 82, 9)) +>insertAfter : Symbol(List.insertAfter, Decl(genericClassWithStaticFactory.ts, 82, 9)) >data : Symbol(data, Decl(genericClassWithStaticFactory.ts, 84, 27)) >T : Symbol(T, Decl(genericClassWithStaticFactory.ts, 2, 22)) >List : Symbol(List, Decl(genericClassWithStaticFactory.ts, 0, 15)) @@ -330,9 +330,9 @@ module Editor { >List : Symbol(List, Decl(genericClassWithStaticFactory.ts, 0, 15)) >T : Symbol(T, Decl(genericClassWithStaticFactory.ts, 2, 22)) >this.listFactory.MakeEntry : Symbol(ListFactory.MakeEntry, Decl(genericClassWithStaticFactory.ts, 115, 9)) ->this.listFactory : Symbol(listFactory, Decl(genericClassWithStaticFactory.ts, 4, 29)) +>this.listFactory : Symbol(List.listFactory, Decl(genericClassWithStaticFactory.ts, 4, 29)) >this : Symbol(List, Decl(genericClassWithStaticFactory.ts, 0, 15)) ->listFactory : Symbol(listFactory, Decl(genericClassWithStaticFactory.ts, 4, 29)) +>listFactory : Symbol(List.listFactory, Decl(genericClassWithStaticFactory.ts, 4, 29)) >MakeEntry : Symbol(ListFactory.MakeEntry, Decl(genericClassWithStaticFactory.ts, 115, 9)) >data : Symbol(data, Decl(genericClassWithStaticFactory.ts, 84, 27)) @@ -340,9 +340,9 @@ module Editor { >entry.next : Symbol(List.next, Decl(genericClassWithStaticFactory.ts, 2, 26)) >entry : Symbol(entry, Decl(genericClassWithStaticFactory.ts, 85, 15)) >next : Symbol(List.next, Decl(genericClassWithStaticFactory.ts, 2, 26)) ->this.next : Symbol(next, Decl(genericClassWithStaticFactory.ts, 2, 26)) +>this.next : Symbol(List.next, Decl(genericClassWithStaticFactory.ts, 2, 26)) >this : Symbol(List, Decl(genericClassWithStaticFactory.ts, 0, 15)) ->next : Symbol(next, Decl(genericClassWithStaticFactory.ts, 2, 26)) +>next : Symbol(List.next, Decl(genericClassWithStaticFactory.ts, 2, 26)) entry.prev = this; >entry.prev : Symbol(List.prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) @@ -351,9 +351,9 @@ module Editor { >this : Symbol(List, Decl(genericClassWithStaticFactory.ts, 0, 15)) this.next = entry; ->this.next : Symbol(next, Decl(genericClassWithStaticFactory.ts, 2, 26)) +>this.next : Symbol(List.next, Decl(genericClassWithStaticFactory.ts, 2, 26)) >this : Symbol(List, Decl(genericClassWithStaticFactory.ts, 0, 15)) ->next : Symbol(next, Decl(genericClassWithStaticFactory.ts, 2, 26)) +>next : Symbol(List.next, Decl(genericClassWithStaticFactory.ts, 2, 26)) >entry : Symbol(entry, Decl(genericClassWithStaticFactory.ts, 85, 15)) entry.next.prev = entry;// entry.next.prev does not show intellisense, but entry.prev.prev does @@ -369,7 +369,7 @@ module Editor { } public insertEntryBefore(entry: List): List { ->insertEntryBefore : Symbol(insertEntryBefore, Decl(genericClassWithStaticFactory.ts, 91, 9)) +>insertEntryBefore : Symbol(List.insertEntryBefore, Decl(genericClassWithStaticFactory.ts, 91, 9)) >entry : Symbol(entry, Decl(genericClassWithStaticFactory.ts, 93, 33)) >List : Symbol(List, Decl(genericClassWithStaticFactory.ts, 0, 15)) >T : Symbol(T, Decl(genericClassWithStaticFactory.ts, 2, 22)) @@ -378,9 +378,9 @@ module Editor { this.prev.next = entry; >this.prev.next : Symbol(List.next, Decl(genericClassWithStaticFactory.ts, 2, 26)) ->this.prev : Symbol(prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) +>this.prev : Symbol(List.prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) >this : Symbol(List, Decl(genericClassWithStaticFactory.ts, 0, 15)) ->prev : Symbol(prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) +>prev : Symbol(List.prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) >next : Symbol(List.next, Decl(genericClassWithStaticFactory.ts, 2, 26)) >entry : Symbol(entry, Decl(genericClassWithStaticFactory.ts, 93, 33)) @@ -394,14 +394,14 @@ module Editor { >entry.prev : Symbol(List.prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) >entry : Symbol(entry, Decl(genericClassWithStaticFactory.ts, 93, 33)) >prev : Symbol(List.prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) ->this.prev : Symbol(prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) +>this.prev : Symbol(List.prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) >this : Symbol(List, Decl(genericClassWithStaticFactory.ts, 0, 15)) ->prev : Symbol(prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) +>prev : Symbol(List.prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) this.prev = entry; ->this.prev : Symbol(prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) +>this.prev : Symbol(List.prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) >this : Symbol(List, Decl(genericClassWithStaticFactory.ts, 0, 15)) ->prev : Symbol(prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) +>prev : Symbol(List.prev, Decl(genericClassWithStaticFactory.ts, 3, 29)) >entry : Symbol(entry, Decl(genericClassWithStaticFactory.ts, 93, 33)) return entry; @@ -409,7 +409,7 @@ module Editor { } public insertBefore(data: T): List { ->insertBefore : Symbol(insertBefore, Decl(genericClassWithStaticFactory.ts, 100, 9)) +>insertBefore : Symbol(List.insertBefore, Decl(genericClassWithStaticFactory.ts, 100, 9)) >data : Symbol(data, Decl(genericClassWithStaticFactory.ts, 102, 28)) >T : Symbol(T, Decl(genericClassWithStaticFactory.ts, 2, 22)) >List : Symbol(List, Decl(genericClassWithStaticFactory.ts, 0, 15)) @@ -418,16 +418,16 @@ module Editor { var entry = this.listFactory.MakeEntry(data); >entry : Symbol(entry, Decl(genericClassWithStaticFactory.ts, 103, 15)) >this.listFactory.MakeEntry : Symbol(ListFactory.MakeEntry, Decl(genericClassWithStaticFactory.ts, 115, 9)) ->this.listFactory : Symbol(listFactory, Decl(genericClassWithStaticFactory.ts, 4, 29)) +>this.listFactory : Symbol(List.listFactory, Decl(genericClassWithStaticFactory.ts, 4, 29)) >this : Symbol(List, Decl(genericClassWithStaticFactory.ts, 0, 15)) ->listFactory : Symbol(listFactory, Decl(genericClassWithStaticFactory.ts, 4, 29)) +>listFactory : Symbol(List.listFactory, Decl(genericClassWithStaticFactory.ts, 4, 29)) >MakeEntry : Symbol(ListFactory.MakeEntry, Decl(genericClassWithStaticFactory.ts, 115, 9)) >data : Symbol(data, Decl(genericClassWithStaticFactory.ts, 102, 28)) return this.insertEntryBefore(entry); ->this.insertEntryBefore : Symbol(insertEntryBefore, Decl(genericClassWithStaticFactory.ts, 91, 9)) +>this.insertEntryBefore : Symbol(List.insertEntryBefore, Decl(genericClassWithStaticFactory.ts, 91, 9)) >this : Symbol(List, Decl(genericClassWithStaticFactory.ts, 0, 15)) ->insertEntryBefore : Symbol(insertEntryBefore, Decl(genericClassWithStaticFactory.ts, 91, 9)) +>insertEntryBefore : Symbol(List.insertEntryBefore, Decl(genericClassWithStaticFactory.ts, 91, 9)) >entry : Symbol(entry, Decl(genericClassWithStaticFactory.ts, 103, 15)) } } @@ -437,7 +437,7 @@ module Editor { >T : Symbol(T, Decl(genericClassWithStaticFactory.ts, 108, 29)) public MakeHead(): List { ->MakeHead : Symbol(MakeHead, Decl(genericClassWithStaticFactory.ts, 108, 33)) +>MakeHead : Symbol(ListFactory.MakeHead, Decl(genericClassWithStaticFactory.ts, 108, 33)) >T : Symbol(T, Decl(genericClassWithStaticFactory.ts, 110, 24)) >List : Symbol(List, Decl(genericClassWithStaticFactory.ts, 0, 15)) >T : Symbol(T, Decl(genericClassWithStaticFactory.ts, 110, 24)) @@ -466,7 +466,7 @@ module Editor { } public MakeEntry(data: T): List { ->MakeEntry : Symbol(MakeEntry, Decl(genericClassWithStaticFactory.ts, 115, 9)) +>MakeEntry : Symbol(ListFactory.MakeEntry, Decl(genericClassWithStaticFactory.ts, 115, 9)) >T : Symbol(T, Decl(genericClassWithStaticFactory.ts, 117, 25)) >data : Symbol(data, Decl(genericClassWithStaticFactory.ts, 117, 28)) >T : Symbol(T, Decl(genericClassWithStaticFactory.ts, 117, 25)) @@ -498,7 +498,7 @@ module Editor { } public RemoveEntry(entry: List): List { ->RemoveEntry : Symbol(RemoveEntry, Decl(genericClassWithStaticFactory.ts, 122, 9)) +>RemoveEntry : Symbol(ListFactory.RemoveEntry, Decl(genericClassWithStaticFactory.ts, 122, 9)) >T : Symbol(T, Decl(genericClassWithStaticFactory.ts, 124, 27)) >entry : Symbol(entry, Decl(genericClassWithStaticFactory.ts, 124, 30)) >List : Symbol(List, Decl(genericClassWithStaticFactory.ts, 0, 15)) diff --git a/tests/baselines/reference/genericClasses0.symbols b/tests/baselines/reference/genericClasses0.symbols index 764cd04c962..57fbb65056f 100644 --- a/tests/baselines/reference/genericClasses0.symbols +++ b/tests/baselines/reference/genericClasses0.symbols @@ -4,7 +4,7 @@ class C { >T : Symbol(T, Decl(genericClasses0.ts, 0, 8)) public x: T; ->x : Symbol(x, Decl(genericClasses0.ts, 0, 12)) +>x : Symbol(C.x, Decl(genericClasses0.ts, 0, 12)) >T : Symbol(T, Decl(genericClasses0.ts, 0, 8)) } diff --git a/tests/baselines/reference/genericClasses1.symbols b/tests/baselines/reference/genericClasses1.symbols index d2100b5e3b3..fbbd3110cdf 100644 --- a/tests/baselines/reference/genericClasses1.symbols +++ b/tests/baselines/reference/genericClasses1.symbols @@ -4,7 +4,7 @@ class C { >T : Symbol(T, Decl(genericClasses1.ts, 0, 8)) public x: T; ->x : Symbol(x, Decl(genericClasses1.ts, 0, 12)) +>x : Symbol(C.x, Decl(genericClasses1.ts, 0, 12)) >T : Symbol(T, Decl(genericClasses1.ts, 0, 8)) } diff --git a/tests/baselines/reference/genericClasses2.symbols b/tests/baselines/reference/genericClasses2.symbols index e9af0c44941..a5153a26fc3 100644 --- a/tests/baselines/reference/genericClasses2.symbols +++ b/tests/baselines/reference/genericClasses2.symbols @@ -4,7 +4,7 @@ interface Foo { >T : Symbol(T, Decl(genericClasses2.ts, 0, 14)) a: T; ->a : Symbol(a, Decl(genericClasses2.ts, 0, 18)) +>a : Symbol(Foo.a, Decl(genericClasses2.ts, 0, 18)) >T : Symbol(T, Decl(genericClasses2.ts, 0, 14)) } @@ -13,16 +13,16 @@ class C { >T : Symbol(T, Decl(genericClasses2.ts, 4, 8)) public x: T; ->x : Symbol(x, Decl(genericClasses2.ts, 4, 12)) +>x : Symbol(C.x, Decl(genericClasses2.ts, 4, 12)) >T : Symbol(T, Decl(genericClasses2.ts, 4, 8)) public y: Foo; ->y : Symbol(y, Decl(genericClasses2.ts, 5, 13)) +>y : Symbol(C.y, Decl(genericClasses2.ts, 5, 13)) >Foo : Symbol(Foo, Decl(genericClasses2.ts, 0, 0)) >T : Symbol(T, Decl(genericClasses2.ts, 4, 8)) public z: Foo; ->z : Symbol(z, Decl(genericClasses2.ts, 6, 18)) +>z : Symbol(C.z, Decl(genericClasses2.ts, 6, 18)) >Foo : Symbol(Foo, Decl(genericClasses2.ts, 0, 0)) } diff --git a/tests/baselines/reference/genericClasses3.symbols b/tests/baselines/reference/genericClasses3.symbols index 06b0d8437d5..31b99b4247d 100644 --- a/tests/baselines/reference/genericClasses3.symbols +++ b/tests/baselines/reference/genericClasses3.symbols @@ -4,11 +4,11 @@ class B { >T : Symbol(T, Decl(genericClasses3.ts, 0, 8)) a: T; ->a : Symbol(a, Decl(genericClasses3.ts, 0, 12)) +>a : Symbol(B.a, Decl(genericClasses3.ts, 0, 12)) >T : Symbol(T, Decl(genericClasses3.ts, 0, 8)) b: T; ->b : Symbol(b, Decl(genericClasses3.ts, 1, 9)) +>b : Symbol(B.b, Decl(genericClasses3.ts, 1, 9)) >T : Symbol(T, Decl(genericClasses3.ts, 0, 8)) } @@ -19,7 +19,7 @@ class C extends B { >T : Symbol(T, Decl(genericClasses3.ts, 5, 8)) public x: T; ->x : Symbol(x, Decl(genericClasses3.ts, 5, 25)) +>x : Symbol(C.x, Decl(genericClasses3.ts, 5, 25)) >T : Symbol(T, Decl(genericClasses3.ts, 5, 8)) } diff --git a/tests/baselines/reference/genericClasses4.symbols b/tests/baselines/reference/genericClasses4.symbols index d910cbc152d..651d61528b5 100644 --- a/tests/baselines/reference/genericClasses4.symbols +++ b/tests/baselines/reference/genericClasses4.symbols @@ -5,13 +5,13 @@ class Vec2_T >A : Symbol(A, Decl(genericClasses4.ts, 1, 13)) { constructor(public x: A, public y: A) { } ->x : Symbol(x, Decl(genericClasses4.ts, 3, 16)) +>x : Symbol(Vec2_T.x, Decl(genericClasses4.ts, 3, 16)) >A : Symbol(A, Decl(genericClasses4.ts, 1, 13)) ->y : Symbol(y, Decl(genericClasses4.ts, 3, 28)) +>y : Symbol(Vec2_T.y, Decl(genericClasses4.ts, 3, 28)) >A : Symbol(A, Decl(genericClasses4.ts, 1, 13)) fmap(f: (a: A) => B): Vec2_T { ->fmap : Symbol(fmap, Decl(genericClasses4.ts, 3, 45)) +>fmap : Symbol(Vec2_T.fmap, Decl(genericClasses4.ts, 3, 45)) >B : Symbol(B, Decl(genericClasses4.ts, 4, 9)) >f : Symbol(f, Decl(genericClasses4.ts, 4, 12)) >a : Symbol(a, Decl(genericClasses4.ts, 4, 16)) @@ -24,17 +24,17 @@ class Vec2_T >x : Symbol(x, Decl(genericClasses4.ts, 5, 11)) >B : Symbol(B, Decl(genericClasses4.ts, 4, 9)) >f : Symbol(f, Decl(genericClasses4.ts, 4, 12)) ->this.x : Symbol(x, Decl(genericClasses4.ts, 3, 16)) +>this.x : Symbol(Vec2_T.x, Decl(genericClasses4.ts, 3, 16)) >this : Symbol(Vec2_T, Decl(genericClasses4.ts, 0, 0)) ->x : Symbol(x, Decl(genericClasses4.ts, 3, 16)) +>x : Symbol(Vec2_T.x, Decl(genericClasses4.ts, 3, 16)) var y:B = f(this.y); >y : Symbol(y, Decl(genericClasses4.ts, 6, 11)) >B : Symbol(B, Decl(genericClasses4.ts, 4, 9)) >f : Symbol(f, Decl(genericClasses4.ts, 4, 12)) ->this.y : Symbol(y, Decl(genericClasses4.ts, 3, 28)) +>this.y : Symbol(Vec2_T.y, Decl(genericClasses4.ts, 3, 28)) >this : Symbol(Vec2_T, Decl(genericClasses4.ts, 0, 0)) ->y : Symbol(y, Decl(genericClasses4.ts, 3, 28)) +>y : Symbol(Vec2_T.y, Decl(genericClasses4.ts, 3, 28)) var retval: Vec2_T = new Vec2_T(x, y); >retval : Symbol(retval, Decl(genericClasses4.ts, 7, 11)) @@ -48,7 +48,7 @@ class Vec2_T >retval : Symbol(retval, Decl(genericClasses4.ts, 7, 11)) } apply(f: Vec2_T<(a: A) => B>): Vec2_T { ->apply : Symbol(apply, Decl(genericClasses4.ts, 9, 5)) +>apply : Symbol(Vec2_T.apply, Decl(genericClasses4.ts, 9, 5)) >B : Symbol(B, Decl(genericClasses4.ts, 10, 10)) >f : Symbol(f, Decl(genericClasses4.ts, 10, 13)) >Vec2_T : Symbol(Vec2_T, Decl(genericClasses4.ts, 0, 0)) @@ -64,9 +64,9 @@ class Vec2_T >f.x : Symbol(Vec2_T.x, Decl(genericClasses4.ts, 3, 16)) >f : Symbol(f, Decl(genericClasses4.ts, 10, 13)) >x : Symbol(Vec2_T.x, Decl(genericClasses4.ts, 3, 16)) ->this.x : Symbol(x, Decl(genericClasses4.ts, 3, 16)) +>this.x : Symbol(Vec2_T.x, Decl(genericClasses4.ts, 3, 16)) >this : Symbol(Vec2_T, Decl(genericClasses4.ts, 0, 0)) ->x : Symbol(x, Decl(genericClasses4.ts, 3, 16)) +>x : Symbol(Vec2_T.x, Decl(genericClasses4.ts, 3, 16)) var y:B = f.y(this.y); >y : Symbol(y, Decl(genericClasses4.ts, 12, 11)) @@ -74,9 +74,9 @@ class Vec2_T >f.y : Symbol(Vec2_T.y, Decl(genericClasses4.ts, 3, 28)) >f : Symbol(f, Decl(genericClasses4.ts, 10, 13)) >y : Symbol(Vec2_T.y, Decl(genericClasses4.ts, 3, 28)) ->this.y : Symbol(y, Decl(genericClasses4.ts, 3, 28)) +>this.y : Symbol(Vec2_T.y, Decl(genericClasses4.ts, 3, 28)) >this : Symbol(Vec2_T, Decl(genericClasses4.ts, 0, 0)) ->y : Symbol(y, Decl(genericClasses4.ts, 3, 28)) +>y : Symbol(Vec2_T.y, Decl(genericClasses4.ts, 3, 28)) var retval: Vec2_T = new Vec2_T(x, y); >retval : Symbol(retval, Decl(genericClasses4.ts, 13, 11)) diff --git a/tests/baselines/reference/genericClassesInModule2.symbols b/tests/baselines/reference/genericClassesInModule2.symbols index a767d64de07..764b5b66462 100644 --- a/tests/baselines/reference/genericClassesInModule2.symbols +++ b/tests/baselines/reference/genericClassesInModule2.symbols @@ -4,7 +4,7 @@ export class A{ >T1 : Symbol(T1, Decl(genericClassesInModule2.ts, 0, 15)) constructor( public callback: (self: A) => void) { ->callback : Symbol(callback, Decl(genericClassesInModule2.ts, 1, 16)) +>callback : Symbol(A.callback, Decl(genericClassesInModule2.ts, 1, 16)) >self : Symbol(self, Decl(genericClassesInModule2.ts, 1, 35)) >A : Symbol(A, Decl(genericClassesInModule2.ts, 0, 0)) >T1 : Symbol(T1, Decl(genericClassesInModule2.ts, 0, 15)) @@ -15,7 +15,7 @@ export class A{ >this : Symbol(A, Decl(genericClassesInModule2.ts, 0, 0)) } AAA( callback: (self: A) => void) { ->AAA : Symbol(AAA, Decl(genericClassesInModule2.ts, 3, 5)) +>AAA : Symbol(A.AAA, Decl(genericClassesInModule2.ts, 3, 5)) >callback : Symbol(callback, Decl(genericClassesInModule2.ts, 4, 8)) >self : Symbol(self, Decl(genericClassesInModule2.ts, 4, 20)) >A : Symbol(A, Decl(genericClassesInModule2.ts, 0, 0)) @@ -33,7 +33,7 @@ export interface C{ >T1 : Symbol(T1, Decl(genericClassesInModule2.ts, 9, 19)) child: B; ->child : Symbol(child, Decl(genericClassesInModule2.ts, 9, 23)) +>child : Symbol(C.child, Decl(genericClassesInModule2.ts, 9, 23)) >B : Symbol(B, Decl(genericClassesInModule2.ts, 13, 1)) >T1 : Symbol(T1, Decl(genericClassesInModule2.ts, 9, 19)) @@ -54,7 +54,7 @@ export class B { >T2 : Symbol(T2, Decl(genericClassesInModule2.ts, 15, 15)) constructor(public parent: T2) { } ->parent : Symbol(parent, Decl(genericClassesInModule2.ts, 16, 16)) +>parent : Symbol(B.parent, Decl(genericClassesInModule2.ts, 16, 16)) >T2 : Symbol(T2, Decl(genericClassesInModule2.ts, 15, 15)) } diff --git a/tests/baselines/reference/genericCloduleInModule.symbols b/tests/baselines/reference/genericCloduleInModule.symbols index 0becc7469a1..34b48f1539e 100644 --- a/tests/baselines/reference/genericCloduleInModule.symbols +++ b/tests/baselines/reference/genericCloduleInModule.symbols @@ -7,7 +7,7 @@ module A { >T : Symbol(T, Decl(genericCloduleInModule.ts, 1, 19)) foo() { } ->foo : Symbol(foo, Decl(genericCloduleInModule.ts, 1, 23)) +>foo : Symbol(B.foo, Decl(genericCloduleInModule.ts, 1, 23)) static bar() { } >bar : Symbol(B.bar, Decl(genericCloduleInModule.ts, 2, 17)) diff --git a/tests/baselines/reference/genericConstraint3.symbols b/tests/baselines/reference/genericConstraint3.symbols index 57cb9d03115..6a22a0996c0 100644 --- a/tests/baselines/reference/genericConstraint3.symbols +++ b/tests/baselines/reference/genericConstraint3.symbols @@ -2,7 +2,7 @@ interface C

" + this.greeting + "

"; ->this.greeting : Symbol(greeting, Decl(sourceMapValidationClass.ts, 1, 16)) +>this.greeting : Symbol(Greeter.greeting, Decl(sourceMapValidationClass.ts, 1, 16)) >this : Symbol(Greeter, Decl(sourceMapValidationClass.ts, 0, 0)) ->greeting : Symbol(greeting, Decl(sourceMapValidationClass.ts, 1, 16)) +>greeting : Symbol(Greeter.greeting, Decl(sourceMapValidationClass.ts, 1, 16)) } private x: string; ->x : Symbol(x, Decl(sourceMapValidationClass.ts, 5, 5)) +>x : Symbol(Greeter.x, Decl(sourceMapValidationClass.ts, 5, 5)) private x1: number = 10; ->x1 : Symbol(x1, Decl(sourceMapValidationClass.ts, 6, 22)) +>x1 : Symbol(Greeter.x1, Decl(sourceMapValidationClass.ts, 6, 22)) private fn() { ->fn : Symbol(fn, Decl(sourceMapValidationClass.ts, 7, 28)) +>fn : Symbol(Greeter.fn, Decl(sourceMapValidationClass.ts, 7, 28)) return this.greeting; ->this.greeting : Symbol(greeting, Decl(sourceMapValidationClass.ts, 1, 16)) +>this.greeting : Symbol(Greeter.greeting, Decl(sourceMapValidationClass.ts, 1, 16)) >this : Symbol(Greeter, Decl(sourceMapValidationClass.ts, 0, 0)) ->greeting : Symbol(greeting, Decl(sourceMapValidationClass.ts, 1, 16)) +>greeting : Symbol(Greeter.greeting, Decl(sourceMapValidationClass.ts, 1, 16)) } get greetings() { ->greetings : Symbol(greetings, Decl(sourceMapValidationClass.ts, 10, 5), Decl(sourceMapValidationClass.ts, 13, 5)) +>greetings : Symbol(Greeter.greetings, Decl(sourceMapValidationClass.ts, 10, 5), Decl(sourceMapValidationClass.ts, 13, 5)) return this.greeting; ->this.greeting : Symbol(greeting, Decl(sourceMapValidationClass.ts, 1, 16)) +>this.greeting : Symbol(Greeter.greeting, Decl(sourceMapValidationClass.ts, 1, 16)) >this : Symbol(Greeter, Decl(sourceMapValidationClass.ts, 0, 0)) ->greeting : Symbol(greeting, Decl(sourceMapValidationClass.ts, 1, 16)) +>greeting : Symbol(Greeter.greeting, Decl(sourceMapValidationClass.ts, 1, 16)) } set greetings(greetings: string) { ->greetings : Symbol(greetings, Decl(sourceMapValidationClass.ts, 10, 5), Decl(sourceMapValidationClass.ts, 13, 5)) +>greetings : Symbol(Greeter.greetings, Decl(sourceMapValidationClass.ts, 10, 5), Decl(sourceMapValidationClass.ts, 13, 5)) >greetings : Symbol(greetings, Decl(sourceMapValidationClass.ts, 14, 18)) this.greeting = greetings; ->this.greeting : Symbol(greeting, Decl(sourceMapValidationClass.ts, 1, 16)) +>this.greeting : Symbol(Greeter.greeting, Decl(sourceMapValidationClass.ts, 1, 16)) >this : Symbol(Greeter, Decl(sourceMapValidationClass.ts, 0, 0)) ->greeting : Symbol(greeting, Decl(sourceMapValidationClass.ts, 1, 16)) +>greeting : Symbol(Greeter.greeting, Decl(sourceMapValidationClass.ts, 1, 16)) >greetings : Symbol(greetings, Decl(sourceMapValidationClass.ts, 14, 18)) } } diff --git a/tests/baselines/reference/sourceMapValidationClassWithDefaultConstructor.symbols b/tests/baselines/reference/sourceMapValidationClassWithDefaultConstructor.symbols index 416e02b3990..dfa9a7bc045 100644 --- a/tests/baselines/reference/sourceMapValidationClassWithDefaultConstructor.symbols +++ b/tests/baselines/reference/sourceMapValidationClassWithDefaultConstructor.symbols @@ -3,8 +3,8 @@ class Greeter { >Greeter : Symbol(Greeter, Decl(sourceMapValidationClassWithDefaultConstructor.ts, 0, 0)) public a = 10; ->a : Symbol(a, Decl(sourceMapValidationClassWithDefaultConstructor.ts, 0, 15)) +>a : Symbol(Greeter.a, Decl(sourceMapValidationClassWithDefaultConstructor.ts, 0, 15)) public nameA = "Ten"; ->nameA : Symbol(nameA, Decl(sourceMapValidationClassWithDefaultConstructor.ts, 1, 18)) +>nameA : Symbol(Greeter.nameA, Decl(sourceMapValidationClassWithDefaultConstructor.ts, 1, 18)) } diff --git a/tests/baselines/reference/sourceMapValidationClassWithDefaultConstructorAndCapturedThisStatement.symbols b/tests/baselines/reference/sourceMapValidationClassWithDefaultConstructorAndCapturedThisStatement.symbols index 44612abacbb..cb7f70706ec 100644 --- a/tests/baselines/reference/sourceMapValidationClassWithDefaultConstructorAndCapturedThisStatement.symbols +++ b/tests/baselines/reference/sourceMapValidationClassWithDefaultConstructorAndCapturedThisStatement.symbols @@ -3,11 +3,11 @@ class Greeter { >Greeter : Symbol(Greeter, Decl(sourceMapValidationClassWithDefaultConstructorAndCapturedThisStatement.ts, 0, 0)) public a = 10; ->a : Symbol(a, Decl(sourceMapValidationClassWithDefaultConstructorAndCapturedThisStatement.ts, 0, 15)) +>a : Symbol(Greeter.a, Decl(sourceMapValidationClassWithDefaultConstructorAndCapturedThisStatement.ts, 0, 15)) public returnA = () => this.a; ->returnA : Symbol(returnA, Decl(sourceMapValidationClassWithDefaultConstructorAndCapturedThisStatement.ts, 1, 18)) ->this.a : Symbol(a, Decl(sourceMapValidationClassWithDefaultConstructorAndCapturedThisStatement.ts, 0, 15)) +>returnA : Symbol(Greeter.returnA, Decl(sourceMapValidationClassWithDefaultConstructorAndCapturedThisStatement.ts, 1, 18)) +>this.a : Symbol(Greeter.a, Decl(sourceMapValidationClassWithDefaultConstructorAndCapturedThisStatement.ts, 0, 15)) >this : Symbol(Greeter, Decl(sourceMapValidationClassWithDefaultConstructorAndCapturedThisStatement.ts, 0, 0)) ->a : Symbol(a, Decl(sourceMapValidationClassWithDefaultConstructorAndCapturedThisStatement.ts, 0, 15)) +>a : Symbol(Greeter.a, Decl(sourceMapValidationClassWithDefaultConstructorAndCapturedThisStatement.ts, 0, 15)) } diff --git a/tests/baselines/reference/sourceMapValidationClassWithDefaultConstructorAndExtendsClause.symbols b/tests/baselines/reference/sourceMapValidationClassWithDefaultConstructorAndExtendsClause.symbols index 0fafe3ecdc0..7ff0c061a26 100644 --- a/tests/baselines/reference/sourceMapValidationClassWithDefaultConstructorAndExtendsClause.symbols +++ b/tests/baselines/reference/sourceMapValidationClassWithDefaultConstructorAndExtendsClause.symbols @@ -8,8 +8,8 @@ class Greeter extends AbstractGreeter { >AbstractGreeter : Symbol(AbstractGreeter, Decl(sourceMapValidationClassWithDefaultConstructorAndExtendsClause.ts, 0, 0)) public a = 10; ->a : Symbol(a, Decl(sourceMapValidationClassWithDefaultConstructorAndExtendsClause.ts, 3, 39)) +>a : Symbol(Greeter.a, Decl(sourceMapValidationClassWithDefaultConstructorAndExtendsClause.ts, 3, 39)) public nameA = "Ten"; ->nameA : Symbol(nameA, Decl(sourceMapValidationClassWithDefaultConstructorAndExtendsClause.ts, 4, 18)) +>nameA : Symbol(Greeter.nameA, Decl(sourceMapValidationClassWithDefaultConstructorAndExtendsClause.ts, 4, 18)) } diff --git a/tests/baselines/reference/sourceMapValidationClasses.symbols b/tests/baselines/reference/sourceMapValidationClasses.symbols index 8608cd4ed21..3386730e4f9 100644 --- a/tests/baselines/reference/sourceMapValidationClasses.symbols +++ b/tests/baselines/reference/sourceMapValidationClasses.symbols @@ -9,16 +9,16 @@ module Foo.Bar { >Greeter : Symbol(Greeter, Decl(sourceMapValidationClasses.ts, 1, 17)) constructor(public greeting: string) { ->greeting : Symbol(greeting, Decl(sourceMapValidationClasses.ts, 4, 20)) +>greeting : Symbol(Greeter.greeting, Decl(sourceMapValidationClasses.ts, 4, 20)) } greet() { ->greet : Symbol(greet, Decl(sourceMapValidationClasses.ts, 5, 9)) +>greet : Symbol(Greeter.greet, Decl(sourceMapValidationClasses.ts, 5, 9)) return "

" + this.greeting + "

"; ->this.greeting : Symbol(greeting, Decl(sourceMapValidationClasses.ts, 4, 20)) +>this.greeting : Symbol(Greeter.greeting, Decl(sourceMapValidationClasses.ts, 4, 20)) >this : Symbol(Greeter, Decl(sourceMapValidationClasses.ts, 1, 17)) ->greeting : Symbol(greeting, Decl(sourceMapValidationClasses.ts, 4, 20)) +>greeting : Symbol(Greeter.greeting, Decl(sourceMapValidationClasses.ts, 4, 20)) } } diff --git a/tests/baselines/reference/sourceMapValidationDecorators.symbols b/tests/baselines/reference/sourceMapValidationDecorators.symbols index 90204d0b71f..72e47dabe0b 100644 --- a/tests/baselines/reference/sourceMapValidationDecorators.symbols +++ b/tests/baselines/reference/sourceMapValidationDecorators.symbols @@ -59,7 +59,7 @@ class Greeter { >ParameterDecorator2 : Symbol(ParameterDecorator2, Decl(sourceMapValidationDecorators.ts, 4, 101)) public greeting: string, ->greeting : Symbol(greeting, Decl(sourceMapValidationDecorators.ts, 10, 16)) +>greeting : Symbol(Greeter.greeting, Decl(sourceMapValidationDecorators.ts, 10, 16)) @ParameterDecorator1 >ParameterDecorator1 : Symbol(ParameterDecorator1, Decl(sourceMapValidationDecorators.ts, 3, 128)) @@ -78,12 +78,12 @@ class Greeter { >PropertyDecorator2 : Symbol(PropertyDecorator2, Decl(sourceMapValidationDecorators.ts, 2, 113)) greet() { ->greet : Symbol(greet, Decl(sourceMapValidationDecorators.ts, 18, 5)) +>greet : Symbol(Greeter.greet, Decl(sourceMapValidationDecorators.ts, 18, 5)) return "

" + this.greeting + "

"; ->this.greeting : Symbol(greeting, Decl(sourceMapValidationDecorators.ts, 10, 16)) +>this.greeting : Symbol(Greeter.greeting, Decl(sourceMapValidationDecorators.ts, 10, 16)) >this : Symbol(Greeter, Decl(sourceMapValidationDecorators.ts, 5, 116)) ->greeting : Symbol(greeting, Decl(sourceMapValidationDecorators.ts, 10, 16)) +>greeting : Symbol(Greeter.greeting, Decl(sourceMapValidationDecorators.ts, 10, 16)) } @PropertyDecorator1 @@ -93,7 +93,7 @@ class Greeter { >PropertyDecorator2 : Symbol(PropertyDecorator2, Decl(sourceMapValidationDecorators.ts, 2, 113)) private x: string; ->x : Symbol(x, Decl(sourceMapValidationDecorators.ts, 24, 5)) +>x : Symbol(Greeter.x, Decl(sourceMapValidationDecorators.ts, 24, 5)) @PropertyDecorator1 >PropertyDecorator1 : Symbol(PropertyDecorator1, Decl(sourceMapValidationDecorators.ts, 1, 72)) @@ -105,7 +105,7 @@ class Greeter { >x1 : Symbol(Greeter.x1, Decl(sourceMapValidationDecorators.ts, 28, 22)) private fn( ->fn : Symbol(fn, Decl(sourceMapValidationDecorators.ts, 32, 35)) +>fn : Symbol(Greeter.fn, Decl(sourceMapValidationDecorators.ts, 32, 35)) @ParameterDecorator1 >ParameterDecorator1 : Symbol(ParameterDecorator1, Decl(sourceMapValidationDecorators.ts, 3, 128)) @@ -117,9 +117,9 @@ class Greeter { >x : Symbol(x, Decl(sourceMapValidationDecorators.ts, 34, 15)) return this.greeting; ->this.greeting : Symbol(greeting, Decl(sourceMapValidationDecorators.ts, 10, 16)) +>this.greeting : Symbol(Greeter.greeting, Decl(sourceMapValidationDecorators.ts, 10, 16)) >this : Symbol(Greeter, Decl(sourceMapValidationDecorators.ts, 5, 116)) ->greeting : Symbol(greeting, Decl(sourceMapValidationDecorators.ts, 10, 16)) +>greeting : Symbol(Greeter.greeting, Decl(sourceMapValidationDecorators.ts, 10, 16)) } @PropertyDecorator1 @@ -129,16 +129,16 @@ class Greeter { >PropertyDecorator2 : Symbol(PropertyDecorator2, Decl(sourceMapValidationDecorators.ts, 2, 113)) get greetings() { ->greetings : Symbol(greetings, Decl(sourceMapValidationDecorators.ts, 39, 5), Decl(sourceMapValidationDecorators.ts, 45, 5)) +>greetings : Symbol(Greeter.greetings, Decl(sourceMapValidationDecorators.ts, 39, 5), Decl(sourceMapValidationDecorators.ts, 45, 5)) return this.greeting; ->this.greeting : Symbol(greeting, Decl(sourceMapValidationDecorators.ts, 10, 16)) +>this.greeting : Symbol(Greeter.greeting, Decl(sourceMapValidationDecorators.ts, 10, 16)) >this : Symbol(Greeter, Decl(sourceMapValidationDecorators.ts, 5, 116)) ->greeting : Symbol(greeting, Decl(sourceMapValidationDecorators.ts, 10, 16)) +>greeting : Symbol(Greeter.greeting, Decl(sourceMapValidationDecorators.ts, 10, 16)) } set greetings( ->greetings : Symbol(greetings, Decl(sourceMapValidationDecorators.ts, 39, 5), Decl(sourceMapValidationDecorators.ts, 45, 5)) +>greetings : Symbol(Greeter.greetings, Decl(sourceMapValidationDecorators.ts, 39, 5), Decl(sourceMapValidationDecorators.ts, 45, 5)) @ParameterDecorator1 >ParameterDecorator1 : Symbol(ParameterDecorator1, Decl(sourceMapValidationDecorators.ts, 3, 128)) @@ -150,9 +150,9 @@ class Greeter { >greetings : Symbol(greetings, Decl(sourceMapValidationDecorators.ts, 47, 18)) this.greeting = greetings; ->this.greeting : Symbol(greeting, Decl(sourceMapValidationDecorators.ts, 10, 16)) +>this.greeting : Symbol(Greeter.greeting, Decl(sourceMapValidationDecorators.ts, 10, 16)) >this : Symbol(Greeter, Decl(sourceMapValidationDecorators.ts, 5, 116)) ->greeting : Symbol(greeting, Decl(sourceMapValidationDecorators.ts, 10, 16)) +>greeting : Symbol(Greeter.greeting, Decl(sourceMapValidationDecorators.ts, 10, 16)) >greetings : Symbol(greetings, Decl(sourceMapValidationDecorators.ts, 47, 18)) } } diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern.symbols b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern.symbols index 7037783e9a1..3cbd93783d2 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern.symbols +++ b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern.symbols @@ -10,20 +10,20 @@ interface Robot { >Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 2, 1)) name: string; ->name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 3, 17)) +>name : Symbol(Robot.name, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 3, 17)) skill: string; ->skill : Symbol(skill, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 4, 17)) +>skill : Symbol(Robot.skill, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 4, 17)) } interface MultiRobot { >MultiRobot : Symbol(MultiRobot, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 6, 1)) name: string; ->name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 8, 22)) +>name : Symbol(MultiRobot.name, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 8, 22)) skills: { ->skills : Symbol(skills, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 9, 17)) +>skills : Symbol(MultiRobot.skills, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 9, 17)) primary: string; >primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 10, 13)) diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern2.symbols b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern2.symbols index 49de55505a2..1d6df1e8394 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern2.symbols +++ b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern2.symbols @@ -10,20 +10,20 @@ interface Robot { >Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 2, 1)) name: string; ->name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 3, 17)) +>name : Symbol(Robot.name, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 3, 17)) skill: string; ->skill : Symbol(skill, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 4, 17)) +>skill : Symbol(Robot.skill, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 4, 17)) } interface MultiRobot { >MultiRobot : Symbol(MultiRobot, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 6, 1)) name: string; ->name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 8, 22)) +>name : Symbol(MultiRobot.name, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 8, 22)) skills: { ->skills : Symbol(skills, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 9, 17)) +>skills : Symbol(MultiRobot.skills, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 9, 17)) primary: string; >primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 10, 13)) diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.symbols b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.symbols index 5d47a45699e..04afb458955 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.symbols +++ b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.symbols @@ -10,20 +10,20 @@ interface Robot { >Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 2, 1)) name: string; ->name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 3, 17)) +>name : Symbol(Robot.name, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 3, 17)) skill: string; ->skill : Symbol(skill, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 4, 17)) +>skill : Symbol(Robot.skill, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 4, 17)) } interface MultiRobot { >MultiRobot : Symbol(MultiRobot, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 6, 1)) name: string; ->name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 8, 22)) +>name : Symbol(MultiRobot.name, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 8, 22)) skills: { ->skills : Symbol(skills, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 9, 17)) +>skills : Symbol(MultiRobot.skills, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 9, 17)) primary?: string; >primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 10, 13)) diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.symbols b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.symbols index 20ccd1136c3..86e1e28dd0c 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.symbols +++ b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.symbols @@ -10,20 +10,20 @@ interface Robot { >Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 2, 1)) name: string; ->name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 3, 17)) +>name : Symbol(Robot.name, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 3, 17)) skill: string; ->skill : Symbol(skill, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 4, 17)) +>skill : Symbol(Robot.skill, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 4, 17)) } interface MultiRobot { >MultiRobot : Symbol(MultiRobot, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 6, 1)) name: string; ->name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 8, 22)) +>name : Symbol(MultiRobot.name, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 8, 22)) skills: { ->skills : Symbol(skills, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 9, 17)) +>skills : Symbol(MultiRobot.skills, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 9, 17)) primary?: string; >primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 10, 13)) diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern2.types b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern2.types index 33b503d0d8f..78cb778b545 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern2.types +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern2.types @@ -93,7 +93,7 @@ let numberA3: number, robotAInfo: (number | string)[], multiRobotAInfo: (string >multiRobotAInfo : (string | [string, string])[] for ([, nameA] of robots) { ->[, nameA] : string[] +>[, nameA] : [undefined, string] > : undefined >nameA : string >robots : [number, string, string][] @@ -106,7 +106,7 @@ for ([, nameA] of robots) { >nameA : string } for ([, nameA] of getRobots()) { ->[, nameA] : string[] +>[, nameA] : [undefined, string] > : undefined >nameA : string >getRobots() : [number, string, string][] @@ -120,7 +120,7 @@ for ([, nameA] of getRobots()) { >nameA : string } for ([, nameA] of [robotA, robotB]) { ->[, nameA] : string[] +>[, nameA] : [undefined, string] > : undefined >nameA : string >[robotA, robotB] : [number, string, string][] @@ -135,9 +135,9 @@ for ([, nameA] of [robotA, robotB]) { >nameA : string } for ([, [primarySkillA, secondarySkillA]] of multiRobots) { ->[, [primarySkillA, secondarySkillA]] : string[][] +>[, [primarySkillA, secondarySkillA]] : [undefined, [string, string]] > : undefined ->[primarySkillA, secondarySkillA] : string[] +>[primarySkillA, secondarySkillA] : [string, string] >primarySkillA : string >secondarySkillA : string >multiRobots : [string, [string, string]][] @@ -150,9 +150,9 @@ for ([, [primarySkillA, secondarySkillA]] of multiRobots) { >primarySkillA : string } for ([, [primarySkillA, secondarySkillA]] of getMultiRobots()) { ->[, [primarySkillA, secondarySkillA]] : string[][] +>[, [primarySkillA, secondarySkillA]] : [undefined, [string, string]] > : undefined ->[primarySkillA, secondarySkillA] : string[] +>[primarySkillA, secondarySkillA] : [string, string] >primarySkillA : string >secondarySkillA : string >getMultiRobots() : [string, [string, string]][] @@ -166,9 +166,9 @@ for ([, [primarySkillA, secondarySkillA]] of getMultiRobots()) { >primarySkillA : string } for ([, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB]) { ->[, [primarySkillA, secondarySkillA]] : string[][] +>[, [primarySkillA, secondarySkillA]] : [undefined, [string, string]] > : undefined ->[primarySkillA, secondarySkillA] : string[] +>[primarySkillA, secondarySkillA] : [string, string] >primarySkillA : string >secondarySkillA : string >[multiRobotA, multiRobotB] : [string, [string, string]][] @@ -184,7 +184,7 @@ for ([, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB]) { } for ([numberB] of robots) { ->[numberB] : number[] +>[numberB] : [number] >numberB : number >robots : [number, string, string][] @@ -196,7 +196,7 @@ for ([numberB] of robots) { >numberB : number } for ([numberB] of getRobots()) { ->[numberB] : number[] +>[numberB] : [number] >numberB : number >getRobots() : [number, string, string][] >getRobots : () => [number, string, string][] @@ -209,7 +209,7 @@ for ([numberB] of getRobots()) { >numberB : number } for ([numberB] of [robotA, robotB]) { ->[numberB] : number[] +>[numberB] : [number] >numberB : number >[robotA, robotB] : [number, string, string][] >robotA : [number, string, string] @@ -223,7 +223,7 @@ for ([numberB] of [robotA, robotB]) { >numberB : number } for ([nameB] of multiRobots) { ->[nameB] : string[] +>[nameB] : [string] >nameB : string >multiRobots : [string, [string, string]][] @@ -235,7 +235,7 @@ for ([nameB] of multiRobots) { >nameB : string } for ([nameB] of getMultiRobots()) { ->[nameB] : string[] +>[nameB] : [string] >nameB : string >getMultiRobots() : [string, [string, string]][] >getMultiRobots : () => [string, [string, string]][] @@ -248,7 +248,7 @@ for ([nameB] of getMultiRobots()) { >nameB : string } for ([nameB] of [multiRobotA, multiRobotB]) { ->[nameB] : string[] +>[nameB] : [string] >nameB : string >[multiRobotA, multiRobotB] : [string, [string, string]][] >multiRobotA : [string, [string, string]] @@ -263,7 +263,7 @@ for ([nameB] of [multiRobotA, multiRobotB]) { } for ([numberA2, nameA2, skillA2] of robots) { ->[numberA2, nameA2, skillA2] : (number | string)[] +>[numberA2, nameA2, skillA2] : [number, string, string] >numberA2 : number >nameA2 : string >skillA2 : string @@ -277,7 +277,7 @@ for ([numberA2, nameA2, skillA2] of robots) { >nameA2 : string } for ([numberA2, nameA2, skillA2] of getRobots()) { ->[numberA2, nameA2, skillA2] : (number | string)[] +>[numberA2, nameA2, skillA2] : [number, string, string] >numberA2 : number >nameA2 : string >skillA2 : string @@ -292,7 +292,7 @@ for ([numberA2, nameA2, skillA2] of getRobots()) { >nameA2 : string } for ([numberA2, nameA2, skillA2] of [robotA, robotB]) { ->[numberA2, nameA2, skillA2] : (number | string)[] +>[numberA2, nameA2, skillA2] : [number, string, string] >numberA2 : number >nameA2 : string >skillA2 : string @@ -308,9 +308,9 @@ for ([numberA2, nameA2, skillA2] of [robotA, robotB]) { >nameA2 : string } for ([nameMA, [primarySkillA, secondarySkillA]] of multiRobots) { ->[nameMA, [primarySkillA, secondarySkillA]] : (string | string[])[] +>[nameMA, [primarySkillA, secondarySkillA]] : [string, [string, string]] >nameMA : string ->[primarySkillA, secondarySkillA] : string[] +>[primarySkillA, secondarySkillA] : [string, string] >primarySkillA : string >secondarySkillA : string >multiRobots : [string, [string, string]][] @@ -323,9 +323,9 @@ for ([nameMA, [primarySkillA, secondarySkillA]] of multiRobots) { >nameMA : string } for ([nameMA, [primarySkillA, secondarySkillA]] of getMultiRobots()) { ->[nameMA, [primarySkillA, secondarySkillA]] : (string | string[])[] +>[nameMA, [primarySkillA, secondarySkillA]] : [string, [string, string]] >nameMA : string ->[primarySkillA, secondarySkillA] : string[] +>[primarySkillA, secondarySkillA] : [string, string] >primarySkillA : string >secondarySkillA : string >getMultiRobots() : [string, [string, string]][] @@ -339,9 +339,9 @@ for ([nameMA, [primarySkillA, secondarySkillA]] of getMultiRobots()) { >nameMA : string } for ([nameMA, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB]) { ->[nameMA, [primarySkillA, secondarySkillA]] : (string | string[])[] +>[nameMA, [primarySkillA, secondarySkillA]] : [string, [string, string]] >nameMA : string ->[primarySkillA, secondarySkillA] : string[] +>[primarySkillA, secondarySkillA] : [string, string] >primarySkillA : string >secondarySkillA : string >[multiRobotA, multiRobotB] : [string, [string, string]][] diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.types b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.types index 14189ad9d81..5f580ad38f4 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.types +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.types @@ -93,7 +93,7 @@ let numberA3: number, robotAInfo: (number | string)[], multiRobotAInfo: (string >multiRobotAInfo : (string | [string, string])[] for ([, nameA = "noName"] of robots) { ->[, nameA = "noName"] : string[] +>[, nameA = "noName"] : [undefined, string] > : undefined >nameA = "noName" : string >nameA : string @@ -108,7 +108,7 @@ for ([, nameA = "noName"] of robots) { >nameA : string } for ([, nameA = "noName"] of getRobots()) { ->[, nameA = "noName"] : string[] +>[, nameA = "noName"] : [undefined, string] > : undefined >nameA = "noName" : string >nameA : string @@ -124,7 +124,7 @@ for ([, nameA = "noName"] of getRobots()) { >nameA : string } for ([, nameA = "noName"] of [robotA, robotB]) { ->[, nameA = "noName"] : string[] +>[, nameA = "noName"] : [undefined, string] > : undefined >nameA = "noName" : string >nameA : string @@ -141,7 +141,7 @@ for ([, nameA = "noName"] of [robotA, robotB]) { >nameA : string } for ([, [ ->[, [ primarySkillA = "primary", secondarySkillA = "secondary"] = ["skill1", "skill2"]] : [string, string][] +>[, [ primarySkillA = "primary", secondarySkillA = "secondary"] = ["skill1", "skill2"]] : [undefined, [string, string]] > : undefined >[ primarySkillA = "primary", secondarySkillA = "secondary"] = ["skill1", "skill2"] : [string, string] >[ primarySkillA = "primary", secondarySkillA = "secondary"] : [string, string] @@ -170,7 +170,7 @@ for ([, [ >primarySkillA : string } for ([, [ ->[, [ primarySkillA = "primary", secondarySkillA = "secondary"] = ["skill1", "skill2"]] : [string, string][] +>[, [ primarySkillA = "primary", secondarySkillA = "secondary"] = ["skill1", "skill2"]] : [undefined, [string, string]] > : undefined >[ primarySkillA = "primary", secondarySkillA = "secondary"] = ["skill1", "skill2"] : [string, string] >[ primarySkillA = "primary", secondarySkillA = "secondary"] : [string, string] @@ -200,7 +200,7 @@ for ([, [ >primarySkillA : string } for ([, [ ->[, [ primarySkillA = "primary", secondarySkillA = "secondary"] = ["skill1", "skill2"]] : [string, string][] +>[, [ primarySkillA = "primary", secondarySkillA = "secondary"] = ["skill1", "skill2"]] : [undefined, [string, string]] > : undefined >[ primarySkillA = "primary", secondarySkillA = "secondary"] = ["skill1", "skill2"] : [string, string] >[ primarySkillA = "primary", secondarySkillA = "secondary"] : [string, string] @@ -232,7 +232,7 @@ for ([, [ } for ([numberB = -1] of robots) { ->[numberB = -1] : number[] +>[numberB = -1] : [number] >numberB = -1 : number >numberB : number >-1 : number @@ -247,7 +247,7 @@ for ([numberB = -1] of robots) { >numberB : number } for ([numberB = -1] of getRobots()) { ->[numberB = -1] : number[] +>[numberB = -1] : [number] >numberB = -1 : number >numberB : number >-1 : number @@ -263,7 +263,7 @@ for ([numberB = -1] of getRobots()) { >numberB : number } for ([numberB = -1] of [robotA, robotB]) { ->[numberB = -1] : number[] +>[numberB = -1] : [number] >numberB = -1 : number >numberB : number >-1 : number @@ -280,7 +280,7 @@ for ([numberB = -1] of [robotA, robotB]) { >numberB : number } for ([nameB = "noName"] of multiRobots) { ->[nameB = "noName"] : string[] +>[nameB = "noName"] : [string] >nameB = "noName" : string >nameB : string >"noName" : string @@ -294,7 +294,7 @@ for ([nameB = "noName"] of multiRobots) { >nameB : string } for ([nameB = "noName"] of getMultiRobots()) { ->[nameB = "noName"] : string[] +>[nameB = "noName"] : [string] >nameB = "noName" : string >nameB : string >"noName" : string @@ -309,7 +309,7 @@ for ([nameB = "noName"] of getMultiRobots()) { >nameB : string } for ([nameB = "noName"] of [multiRobotA, multiRobotB]) { ->[nameB = "noName"] : string[] +>[nameB = "noName"] : [string] >nameB = "noName" : string >nameB : string >"noName" : string @@ -326,7 +326,7 @@ for ([nameB = "noName"] of [multiRobotA, multiRobotB]) { } for ([numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of robots) { ->[numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] : (number | string)[] +>[numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] : [number, string, string] >numberA2 = -1 : number >numberA2 : number >-1 : number @@ -347,7 +347,7 @@ for ([numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of robots) { >nameA2 : string } for ([numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of getRobots()) { ->[numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] : (number | string)[] +>[numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] : [number, string, string] >numberA2 = -1 : number >numberA2 : number >-1 : number @@ -369,7 +369,7 @@ for ([numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of getRobots()) { >nameA2 : string } for ([numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of [robotA, robotB]) { ->[numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] : (number | string)[] +>[numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] : [number, string, string] >numberA2 = -1 : number >numberA2 : number >-1 : number @@ -392,7 +392,7 @@ for ([numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of [robotA, robotB]) >nameA2 : string } for ([nameMA = "noName", [ ->[nameMA = "noName", [ primarySkillA = "primary", secondarySkillA = "secondary"] = ["skill1", "skill2"]] : (string | [string, string])[] +>[nameMA = "noName", [ primarySkillA = "primary", secondarySkillA = "secondary"] = ["skill1", "skill2"]] : [string, [string, string]] >nameMA = "noName" : string >nameMA : string >"noName" : string @@ -423,7 +423,7 @@ for ([nameMA = "noName", [ >nameMA : string } for ([nameMA = "noName", [ ->[nameMA = "noName", [ primarySkillA = "primary", secondarySkillA = "secondary"] = ["skill1", "skill2"]] : (string | [string, string])[] +>[nameMA = "noName", [ primarySkillA = "primary", secondarySkillA = "secondary"] = ["skill1", "skill2"]] : [string, [string, string]] >nameMA = "noName" : string >nameMA : string >"noName" : string @@ -455,7 +455,7 @@ for ([nameMA = "noName", [ >nameMA : string } for ([nameMA = "noName", [ ->[nameMA = "noName", [ primarySkillA = "primary", secondarySkillA = "secondary"] = ["skill1", "skill2"]] : (string | [string, string])[] +>[nameMA = "noName", [ primarySkillA = "primary", secondarySkillA = "secondary"] = ["skill1", "skill2"]] : [string, [string, string]] >nameMA = "noName" : string >nameMA : string >"noName" : string diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern.symbols b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern.symbols index 8fef1fabd6d..51499a35e91 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern.symbols +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern.symbols @@ -10,20 +10,20 @@ interface Robot { >Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 2, 1)) name: string; ->name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 3, 17)) +>name : Symbol(Robot.name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 3, 17)) skill: string; ->skill : Symbol(skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 4, 17)) +>skill : Symbol(Robot.skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 4, 17)) } interface MultiRobot { >MultiRobot : Symbol(MultiRobot, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 6, 1)) name: string; ->name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 8, 22)) +>name : Symbol(MultiRobot.name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 8, 22)) skills: { ->skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 9, 17)) +>skills : Symbol(MultiRobot.skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 9, 17)) primary: string; >primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 10, 13)) diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern2.symbols b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern2.symbols index ed2a6c3449d..532791cca68 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern2.symbols +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern2.symbols @@ -10,20 +10,20 @@ interface Robot { >Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 2, 1)) name: string; ->name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 3, 17)) +>name : Symbol(Robot.name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 3, 17)) skill: string; ->skill : Symbol(skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 4, 17)) +>skill : Symbol(Robot.skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 4, 17)) } interface MultiRobot { >MultiRobot : Symbol(MultiRobot, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 6, 1)) name: string; ->name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 8, 22)) +>name : Symbol(MultiRobot.name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 8, 22)) skills: { ->skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 9, 17)) +>skills : Symbol(MultiRobot.skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 9, 17)) primary: string; >primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 10, 13)) diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.symbols b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.symbols index f73adeb7761..bf3cbd59e0b 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.symbols +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.symbols @@ -10,20 +10,20 @@ interface Robot { >Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 2, 1)) name: string; ->name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 3, 17)) +>name : Symbol(Robot.name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 3, 17)) skill: string; ->skill : Symbol(skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 4, 17)) +>skill : Symbol(Robot.skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 4, 17)) } interface MultiRobot { >MultiRobot : Symbol(MultiRobot, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 6, 1)) name: string; ->name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 8, 22)) +>name : Symbol(MultiRobot.name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 8, 22)) skills: { ->skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 9, 17)) +>skills : Symbol(MultiRobot.skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 9, 17)) primary?: string; >primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 10, 13)) diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.symbols b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.symbols index 7194270c784..ebbda4d0517 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.symbols +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.symbols @@ -10,20 +10,20 @@ interface Robot { >Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 2, 1)) name: string; ->name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 3, 17)) +>name : Symbol(Robot.name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 3, 17)) skill: string; ->skill : Symbol(skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 4, 17)) +>skill : Symbol(Robot.skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 4, 17)) } interface MultiRobot { >MultiRobot : Symbol(MultiRobot, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 6, 1)) name: string; ->name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 8, 22)) +>name : Symbol(MultiRobot.name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 8, 22)) skills: { ->skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 9, 17)) +>skills : Symbol(MultiRobot.skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 9, 17)) primary: string; >primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 10, 13)) diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.types b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.types index fe630aafccc..adb5d515fe4 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.types +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.types @@ -102,7 +102,7 @@ let name: string, primary: string, secondary: string, skill: string; >skill : string for ({name: nameA = "noName" } of robots) { ->{name: nameA = "noName" } : { name: string; } +>{name: nameA = "noName" } : { name?: string; } >name : Robot >nameA = "noName" : string >nameA : string @@ -117,7 +117,7 @@ for ({name: nameA = "noName" } of robots) { >nameA : string } for ({name: nameA = "noName" } of getRobots()) { ->{name: nameA = "noName" } : { name: string; } +>{name: nameA = "noName" } : { name?: string; } >name : Robot >nameA = "noName" : string >nameA : string @@ -133,7 +133,7 @@ for ({name: nameA = "noName" } of getRobots()) { >nameA : string } for ({name: nameA = "noName" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { ->{name: nameA = "noName" } : { name: string; } +>{name: nameA = "noName" } : { name?: string; } >name : { name: string; skill: string; } >nameA = "noName" : string >nameA : string @@ -158,7 +158,7 @@ for ({name: nameA = "noName" } of [{ name: "mower", skill: "mowing" }, { name: " >nameA : string } for ({ skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = ->{ skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = { primary: "nosKill", secondary: "noSkill" } } : { skills: { primary?: string; secondary?: string; }; } +>{ skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = { primary: "nosKill", secondary: "noSkill" } } : { skills?: { primary?: string; secondary?: string; }; } >skills : MultiRobot >{ primary: primaryA = "primary", secondary: secondaryA = "secondary" } = { primary: "nosKill", secondary: "noSkill" } : { primary?: string; secondary?: string; } >{ primary: primaryA = "primary", secondary: secondaryA = "secondary" } : { primary?: string; secondary?: string; } @@ -187,7 +187,7 @@ for ({ skills: { primary: primaryA = "primary", secondary: secondaryA = "seconda >primaryA : string } for ({ skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = ->{ skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = { primary: "nosKill", secondary: "noSkill" } } : { skills: { primary?: string; secondary?: string; }; } +>{ skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = { primary: "nosKill", secondary: "noSkill" } } : { skills?: { primary?: string; secondary?: string; }; } >skills : MultiRobot >{ primary: primaryA = "primary", secondary: secondaryA = "secondary" } = { primary: "nosKill", secondary: "noSkill" } : { primary?: string; secondary?: string; } >{ primary: primaryA = "primary", secondary: secondaryA = "secondary" } : { primary?: string; secondary?: string; } @@ -217,7 +217,7 @@ for ({ skills: { primary: primaryA = "primary", secondary: secondaryA = "seconda >primaryA : string } for ({ skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = ->{ skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = { primary: "nosKill", secondary: "noSkill" } } : { skills: { primary?: string; secondary?: string; }; } +>{ skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = { primary: "nosKill", secondary: "noSkill" } } : { skills?: { primary?: string; secondary?: string; }; } >skills : MultiRobot >{ primary: primaryA = "primary", secondary: secondaryA = "secondary" } = { primary: "nosKill", secondary: "noSkill" } : { primary?: string; secondary?: string; } >{ primary: primaryA = "primary", secondary: secondaryA = "secondary" } : { primary?: string; secondary?: string; } @@ -271,7 +271,7 @@ for ({ skills: { primary: primaryA = "primary", secondary: secondaryA = "seconda } for ({ name = "noName" } of robots) { ->{ name = "noName" } : { name: string; } +>{ name = "noName" } : { name?: string; } >name : Robot >robots : Robot[] @@ -283,7 +283,7 @@ for ({ name = "noName" } of robots) { >nameA : string } for ({ name = "noName" } of getRobots()) { ->{ name = "noName" } : { name: string; } +>{ name = "noName" } : { name?: string; } >name : Robot >getRobots() : Robot[] >getRobots : () => Robot[] @@ -296,7 +296,7 @@ for ({ name = "noName" } of getRobots()) { >nameA : string } for ({ name = "noName" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { ->{ name = "noName" } : { name: string; } +>{ name = "noName" } : { name?: string; } >name : { name: string; skill: string; } >[{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] : { name: string; skill: string; }[] >{ name: "mower", skill: "mowing" } : { name: string; skill: string; } @@ -318,7 +318,7 @@ for ({ name = "noName" } of [{ name: "mower", skill: "mowing" }, { name: "trimme >nameA : string } for ({ ->{ skills: { primary = "primary", secondary = "secondary" } = { primary: "noSkill", secondary: "noSkill" }} : { skills: { primary?: string; secondary?: string; }; } +>{ skills: { primary = "primary", secondary = "secondary" } = { primary: "noSkill", secondary: "noSkill" }} : { skills?: { primary?: string; secondary?: string; }; } skills: { >skills : MultiRobot @@ -349,7 +349,7 @@ for ({ >primaryA : string } for ({ ->{ skills: { primary = "primary", secondary = "secondary" } = { primary: "noSkill", secondary: "noSkill" }} : { skills: { primary?: string; secondary?: string; }; } +>{ skills: { primary = "primary", secondary = "secondary" } = { primary: "noSkill", secondary: "noSkill" }} : { skills?: { primary?: string; secondary?: string; }; } skills: { >skills : MultiRobot @@ -381,7 +381,7 @@ for ({ >primaryA : string } for ({ ->{ skills: { primary = "primary", secondary = "secondary" } = { primary: "noSkill", secondary: "noSkill" }} : { skills: { primary?: string; secondary?: string; }; } +>{ skills: { primary = "primary", secondary = "secondary" } = { primary: "noSkill", secondary: "noSkill" }} : { skills?: { primary?: string; secondary?: string; }; } skills: { >skills : { name: string; skills: { primary: string; secondary: string; }; } @@ -434,7 +434,7 @@ for ({ for ({name: nameA = "noName", skill: skillA = "noSkill" } of robots) { ->{name: nameA = "noName", skill: skillA = "noSkill" } : { name: string; skill: string; } +>{name: nameA = "noName", skill: skillA = "noSkill" } : { name?: string; skill?: string; } >name : Robot >nameA = "noName" : string >nameA : string @@ -453,7 +453,7 @@ for ({name: nameA = "noName", skill: skillA = "noSkill" } of robots) { >nameA : string } for ({name: nameA = "noName", skill: skillA = "noSkill" } of getRobots()) { ->{name: nameA = "noName", skill: skillA = "noSkill" } : { name: string; skill: string; } +>{name: nameA = "noName", skill: skillA = "noSkill" } : { name?: string; skill?: string; } >name : Robot >nameA = "noName" : string >nameA : string @@ -473,7 +473,7 @@ for ({name: nameA = "noName", skill: skillA = "noSkill" } of getRobots()) { >nameA : string } for ({name: nameA = "noName", skill: skillA = "noSkill" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { ->{name: nameA = "noName", skill: skillA = "noSkill" } : { name: string; skill: string; } +>{name: nameA = "noName", skill: skillA = "noSkill" } : { name?: string; skill?: string; } >name : { name: string; skill: string; } >nameA = "noName" : string >nameA : string @@ -502,7 +502,7 @@ for ({name: nameA = "noName", skill: skillA = "noSkill" } of [{ name: "mower", >nameA : string } for ({ ->{ name: nameA = "noName", skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = { primary: "noSkill", secondary: "noSkill" }} : { name: string; skills: { primary?: string; secondary?: string; }; } +>{ name: nameA = "noName", skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = { primary: "noSkill", secondary: "noSkill" }} : { name?: string; skills?: { primary?: string; secondary?: string; }; } name: nameA = "noName", >name : MultiRobot @@ -545,7 +545,7 @@ for ({ >nameA : string } for ({ ->{ name: nameA = "noName", skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = { primary: "noSkill", secondary: "noSkill" }} : { name: string; skills: { primary?: string; secondary?: string; }; } +>{ name: nameA = "noName", skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = { primary: "noSkill", secondary: "noSkill" }} : { name?: string; skills?: { primary?: string; secondary?: string; }; } name: nameA = "noName", >name : MultiRobot @@ -589,7 +589,7 @@ for ({ >nameA : string } for ({ ->{ name: nameA = "noName", skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = { primary: "noSkill", secondary: "noSkill" }} : { name: string; skills: { primary?: string; secondary?: string; }; } +>{ name: nameA = "noName", skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = { primary: "noSkill", secondary: "noSkill" }} : { name?: string; skills?: { primary?: string; secondary?: string; }; } name: nameA = "noName", >name : MultiRobot @@ -655,7 +655,7 @@ for ({ } for ({ name = "noName", skill = "noSkill" } of robots) { ->{ name = "noName", skill = "noSkill" } : { name: string; skill: string; } +>{ name = "noName", skill = "noSkill" } : { name?: string; skill?: string; } >name : Robot >skill : Robot >robots : Robot[] @@ -668,7 +668,7 @@ for ({ name = "noName", skill = "noSkill" } of robots) { >nameA : string } for ({ name = "noName", skill = "noSkill" } of getRobots()) { ->{ name = "noName", skill = "noSkill" } : { name: string; skill: string; } +>{ name = "noName", skill = "noSkill" } : { name?: string; skill?: string; } >name : Robot >skill : Robot >getRobots() : Robot[] @@ -682,7 +682,7 @@ for ({ name = "noName", skill = "noSkill" } of getRobots()) { >nameA : string } for ({ name = "noName", skill = "noSkill" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { ->{ name = "noName", skill = "noSkill" } : { name: string; skill: string; } +>{ name = "noName", skill = "noSkill" } : { name?: string; skill?: string; } >name : { name: string; skill: string; } >skill : { name: string; skill: string; } >[{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] : { name: string; skill: string; }[] @@ -705,7 +705,7 @@ for ({ name = "noName", skill = "noSkill" } of [{ name: "mower", skill: "mowing >nameA : string } for ({ ->{ name = "noName", skills: { primary = "primary", secondary = "secondary" } = { primary: "noSkill", secondary: "noSkill" }} : { name: string; skills: { primary?: string; secondary?: string; }; } +>{ name = "noName", skills: { primary = "primary", secondary = "secondary" } = { primary: "noSkill", secondary: "noSkill" }} : { name?: string; skills?: { primary?: string; secondary?: string; }; } name = "noName", >name : MultiRobot @@ -739,7 +739,7 @@ for ({ >nameA : string } for ({ ->{ name = "noName", skills: { primary = "primary", secondary = "secondary" } = { primary: "noSkill", secondary: "noSkill" }} : { name: string; skills: { primary?: string; secondary?: string; }; } +>{ name = "noName", skills: { primary = "primary", secondary = "secondary" } = { primary: "noSkill", secondary: "noSkill" }} : { name?: string; skills?: { primary?: string; secondary?: string; }; } name = "noName", >name : MultiRobot @@ -774,7 +774,7 @@ for ({ >nameA : string } for ({ ->{ name = "noName", skills: { primary = "primary", secondary = "secondary" } = { primary: "noSkill", secondary: "noSkill" }} : { name: string; skills: { primary?: string; secondary?: string; }; } +>{ name = "noName", skills: { primary = "primary", secondary = "secondary" } = { primary: "noSkill", secondary: "noSkill" }} : { name?: string; skills?: { primary?: string; secondary?: string; }; } name = "noName", >name : { name: string; skills: { primary: string; secondary: string; }; } diff --git a/tests/baselines/reference/sourceMapValidationDestructuringParameterNestedObjectBindingPattern.symbols b/tests/baselines/reference/sourceMapValidationDestructuringParameterNestedObjectBindingPattern.symbols index 3b2a89b2bda..7c6e8135e26 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringParameterNestedObjectBindingPattern.symbols +++ b/tests/baselines/reference/sourceMapValidationDestructuringParameterNestedObjectBindingPattern.symbols @@ -10,10 +10,10 @@ interface Robot { >Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 2, 1)) name: string; ->name : Symbol(name, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 3, 17)) +>name : Symbol(Robot.name, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 3, 17)) skills: { ->skills : Symbol(skills, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 4, 17)) +>skills : Symbol(Robot.skills, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 4, 17)) primary: string; >primary : Symbol(primary, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 5, 13)) diff --git a/tests/baselines/reference/sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.symbols b/tests/baselines/reference/sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.symbols index 229e9acb6da..72412207cfb 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.symbols +++ b/tests/baselines/reference/sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.symbols @@ -10,10 +10,10 @@ interface Robot { >Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 2, 1)) name: string; ->name : Symbol(name, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 3, 17)) +>name : Symbol(Robot.name, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 3, 17)) skills: { ->skills : Symbol(skills, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 4, 17)) +>skills : Symbol(Robot.skills, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 4, 17)) primary?: string; >primary : Symbol(primary, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 5, 13)) diff --git a/tests/baselines/reference/sourceMapValidationDestructuringParameterObjectBindingPattern.symbols b/tests/baselines/reference/sourceMapValidationDestructuringParameterObjectBindingPattern.symbols index 9b810165c1b..c87a10dce92 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringParameterObjectBindingPattern.symbols +++ b/tests/baselines/reference/sourceMapValidationDestructuringParameterObjectBindingPattern.symbols @@ -3,10 +3,10 @@ interface Robot { >Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringParameterObjectBindingPattern.ts, 0, 0)) name: string; ->name : Symbol(name, Decl(sourceMapValidationDestructuringParameterObjectBindingPattern.ts, 0, 17)) +>name : Symbol(Robot.name, Decl(sourceMapValidationDestructuringParameterObjectBindingPattern.ts, 0, 17)) skill: string; ->skill : Symbol(skill, Decl(sourceMapValidationDestructuringParameterObjectBindingPattern.ts, 1, 17)) +>skill : Symbol(Robot.skill, Decl(sourceMapValidationDestructuringParameterObjectBindingPattern.ts, 1, 17)) } declare var console: { >console : Symbol(console, Decl(sourceMapValidationDestructuringParameterObjectBindingPattern.ts, 4, 11)) diff --git a/tests/baselines/reference/sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.symbols b/tests/baselines/reference/sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.symbols index 7e3804a5e88..4f33517fe00 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.symbols +++ b/tests/baselines/reference/sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.symbols @@ -3,10 +3,10 @@ interface Robot { >Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts, 0, 0)) name?: string; ->name : Symbol(name, Decl(sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts, 0, 17)) +>name : Symbol(Robot.name, Decl(sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts, 0, 17)) skill?: string; ->skill : Symbol(skill, Decl(sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts, 1, 18)) +>skill : Symbol(Robot.skill, Decl(sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts, 1, 18)) } declare var console: { >console : Symbol(console, Decl(sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts, 4, 11)) diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement.symbols b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement.symbols index 3d8e925d8b3..91b73a7c220 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement.symbols +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement.symbols @@ -3,10 +3,10 @@ interface Robot { >Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringVariableStatement.ts, 0, 0)) name: string; ->name : Symbol(name, Decl(sourceMapValidationDestructuringVariableStatement.ts, 0, 17)) +>name : Symbol(Robot.name, Decl(sourceMapValidationDestructuringVariableStatement.ts, 0, 17)) skill: string; ->skill : Symbol(skill, Decl(sourceMapValidationDestructuringVariableStatement.ts, 1, 17)) +>skill : Symbol(Robot.skill, Decl(sourceMapValidationDestructuringVariableStatement.ts, 1, 17)) } declare var console: { >console : Symbol(console, Decl(sourceMapValidationDestructuringVariableStatement.ts, 4, 11)) diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement1.symbols b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement1.symbols index eb009ba9ad7..fd8995cc3ba 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement1.symbols +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement1.symbols @@ -3,10 +3,10 @@ interface Robot { >Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 0, 0)) name: string; ->name : Symbol(name, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 0, 17)) +>name : Symbol(Robot.name, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 0, 17)) skill: string; ->skill : Symbol(skill, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 1, 17)) +>skill : Symbol(Robot.skill, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 1, 17)) } declare var console: { >console : Symbol(console, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 4, 11)) diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementDefaultValues.symbols b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementDefaultValues.symbols index 1fc07bf4a17..85801e566b5 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementDefaultValues.symbols +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementDefaultValues.symbols @@ -3,10 +3,10 @@ interface Robot { >Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringVariableStatementDefaultValues.ts, 0, 0)) name: string; ->name : Symbol(name, Decl(sourceMapValidationDestructuringVariableStatementDefaultValues.ts, 0, 17)) +>name : Symbol(Robot.name, Decl(sourceMapValidationDestructuringVariableStatementDefaultValues.ts, 0, 17)) skill: string; ->skill : Symbol(skill, Decl(sourceMapValidationDestructuringVariableStatementDefaultValues.ts, 1, 17)) +>skill : Symbol(Robot.skill, Decl(sourceMapValidationDestructuringVariableStatementDefaultValues.ts, 1, 17)) } declare var console: { >console : Symbol(console, Decl(sourceMapValidationDestructuringVariableStatementDefaultValues.ts, 4, 11)) diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.symbols b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.symbols index 09b66f24ad8..833212c606a 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.symbols +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.symbols @@ -10,10 +10,10 @@ interface Robot { >Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 2, 1)) name: string; ->name : Symbol(name, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 3, 17)) +>name : Symbol(Robot.name, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 3, 17)) skills: { ->skills : Symbol(skills, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 4, 17)) +>skills : Symbol(Robot.skills, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 4, 17)) primary: string; >primary : Symbol(primary, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 5, 13)) diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.symbols b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.symbols index a9a3a91f824..d0f04399e3f 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.symbols +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.symbols @@ -10,10 +10,10 @@ interface Robot { >Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 2, 1)) name: string; ->name : Symbol(name, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 3, 17)) +>name : Symbol(Robot.name, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 3, 17)) skills: { ->skills : Symbol(skills, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 4, 17)) +>skills : Symbol(Robot.skills, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 4, 17)) primary?: string; >primary : Symbol(primary, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 5, 13)) diff --git a/tests/baselines/reference/sourceMapValidationExportAssignment.symbols b/tests/baselines/reference/sourceMapValidationExportAssignment.symbols index 2506d52fb87..57d619eb998 100644 --- a/tests/baselines/reference/sourceMapValidationExportAssignment.symbols +++ b/tests/baselines/reference/sourceMapValidationExportAssignment.symbols @@ -3,7 +3,7 @@ class a { >a : Symbol(a, Decl(sourceMapValidationExportAssignment.ts, 0, 0)) public c; ->c : Symbol(c, Decl(sourceMapValidationExportAssignment.ts, 0, 9)) +>c : Symbol(a.c, Decl(sourceMapValidationExportAssignment.ts, 0, 9)) } export = a; >a : Symbol(a, Decl(sourceMapValidationExportAssignment.ts, 0, 0)) diff --git a/tests/baselines/reference/sourceMapValidationExportAssignmentCommonjs.symbols b/tests/baselines/reference/sourceMapValidationExportAssignmentCommonjs.symbols index 91e2de7a2b9..72e435af089 100644 --- a/tests/baselines/reference/sourceMapValidationExportAssignmentCommonjs.symbols +++ b/tests/baselines/reference/sourceMapValidationExportAssignmentCommonjs.symbols @@ -3,7 +3,7 @@ class a { >a : Symbol(a, Decl(sourceMapValidationExportAssignmentCommonjs.ts, 0, 0)) public c; ->c : Symbol(c, Decl(sourceMapValidationExportAssignmentCommonjs.ts, 0, 9)) +>c : Symbol(a.c, Decl(sourceMapValidationExportAssignmentCommonjs.ts, 0, 9)) } export = a; >a : Symbol(a, Decl(sourceMapValidationExportAssignmentCommonjs.ts, 0, 0)) diff --git a/tests/baselines/reference/sourceMapWithMultipleFilesWithFileEndingWithInterface.symbols b/tests/baselines/reference/sourceMapWithMultipleFilesWithFileEndingWithInterface.symbols index 4f48bb97347..f262fb43781 100644 --- a/tests/baselines/reference/sourceMapWithMultipleFilesWithFileEndingWithInterface.symbols +++ b/tests/baselines/reference/sourceMapWithMultipleFilesWithFileEndingWithInterface.symbols @@ -9,19 +9,19 @@ interface Navigator { >Navigator : Symbol(Navigator, Decl(a.ts, 2, 1)) getGamepads(func?: any): any; ->getGamepads : Symbol(getGamepads, Decl(a.ts, 3, 21)) +>getGamepads : Symbol(Navigator.getGamepads, Decl(a.ts, 3, 21)) >func : Symbol(func, Decl(a.ts, 4, 16)) webkitGetGamepads(func?: any): any ->webkitGetGamepads : Symbol(webkitGetGamepads, Decl(a.ts, 4, 33)) +>webkitGetGamepads : Symbol(Navigator.webkitGetGamepads, Decl(a.ts, 4, 33)) >func : Symbol(func, Decl(a.ts, 5, 22)) msGetGamepads(func?: any): any; ->msGetGamepads : Symbol(msGetGamepads, Decl(a.ts, 5, 38)) +>msGetGamepads : Symbol(Navigator.msGetGamepads, Decl(a.ts, 5, 38)) >func : Symbol(func, Decl(a.ts, 6, 18)) webkitGamepads(func?: any): any; ->webkitGamepads : Symbol(webkitGamepads, Decl(a.ts, 6, 35)) +>webkitGamepads : Symbol(Navigator.webkitGamepads, Decl(a.ts, 6, 35)) >func : Symbol(func, Decl(a.ts, 7, 19)) } diff --git a/tests/baselines/reference/specializationError.symbols b/tests/baselines/reference/specializationError.symbols index 906cfee1e65..b866a7034df 100644 --- a/tests/baselines/reference/specializationError.symbols +++ b/tests/baselines/reference/specializationError.symbols @@ -4,7 +4,7 @@ interface Promise { >T : Symbol(T, Decl(specializationError.ts, 0, 18)) then(value: T): void; ->then : Symbol(then, Decl(specializationError.ts, 0, 22)) +>then : Symbol(Promise.then, Decl(specializationError.ts, 0, 22)) >U : Symbol(U, Decl(specializationError.ts, 1, 9)) >value : Symbol(value, Decl(specializationError.ts, 1, 12)) >T : Symbol(T, Decl(specializationError.ts, 0, 18)) @@ -14,12 +14,12 @@ interface Bar { >Bar : Symbol(Bar, Decl(specializationError.ts, 2, 1)) bar(value: "Menu"): Promise; ->bar : Symbol(bar, Decl(specializationError.ts, 4, 15), Decl(specializationError.ts, 5, 40), Decl(specializationError.ts, 6, 55)) +>bar : Symbol(Bar.bar, Decl(specializationError.ts, 4, 15), Decl(specializationError.ts, 5, 40), Decl(specializationError.ts, 6, 55)) >value : Symbol(value, Decl(specializationError.ts, 5, 8)) >Promise : Symbol(Promise, Decl(specializationError.ts, 0, 0)) bar(value: string, element: string): Promise; ->bar : Symbol(bar, Decl(specializationError.ts, 4, 15), Decl(specializationError.ts, 5, 40), Decl(specializationError.ts, 6, 55)) +>bar : Symbol(Bar.bar, Decl(specializationError.ts, 4, 15), Decl(specializationError.ts, 5, 40), Decl(specializationError.ts, 6, 55)) >T : Symbol(T, Decl(specializationError.ts, 6, 8)) >value : Symbol(value, Decl(specializationError.ts, 6, 11)) >element : Symbol(element, Decl(specializationError.ts, 6, 25)) @@ -27,7 +27,7 @@ interface Bar { >T : Symbol(T, Decl(specializationError.ts, 6, 8)) bar(value: string): Promise; ->bar : Symbol(bar, Decl(specializationError.ts, 4, 15), Decl(specializationError.ts, 5, 40), Decl(specializationError.ts, 6, 55)) +>bar : Symbol(Bar.bar, Decl(specializationError.ts, 4, 15), Decl(specializationError.ts, 5, 40), Decl(specializationError.ts, 6, 55)) >T : Symbol(T, Decl(specializationError.ts, 7, 8)) >value : Symbol(value, Decl(specializationError.ts, 7, 11)) >Promise : Symbol(Promise, Decl(specializationError.ts, 0, 0)) diff --git a/tests/baselines/reference/specializationsShouldNotAffectEachOther.symbols b/tests/baselines/reference/specializationsShouldNotAffectEachOther.symbols index 9114afccdf4..5c93a74fe51 100644 --- a/tests/baselines/reference/specializationsShouldNotAffectEachOther.symbols +++ b/tests/baselines/reference/specializationsShouldNotAffectEachOther.symbols @@ -4,7 +4,7 @@ interface Series { >Series : Symbol(Series, Decl(specializationsShouldNotAffectEachOther.ts, 0, 0)) data: string[]; ->data : Symbol(data, Decl(specializationsShouldNotAffectEachOther.ts, 1, 19)) +>data : Symbol(Series.data, Decl(specializationsShouldNotAffectEachOther.ts, 1, 19)) } var series: Series; diff --git a/tests/baselines/reference/specializeVarArgs1.symbols b/tests/baselines/reference/specializeVarArgs1.symbols index 836e3613f07..8ac5369ce91 100644 --- a/tests/baselines/reference/specializeVarArgs1.symbols +++ b/tests/baselines/reference/specializeVarArgs1.symbols @@ -14,7 +14,7 @@ interface ObservableArray extends Observable { push(...values: T[]); ->push : Symbol(push, Decl(specializeVarArgs1.ts, 6, 1)) +>push : Symbol(ObservableArray.push, Decl(specializeVarArgs1.ts, 6, 1)) >values : Symbol(values, Decl(specializeVarArgs1.ts, 8, 9)) >T : Symbol(T, Decl(specializeVarArgs1.ts, 4, 26)) diff --git a/tests/baselines/reference/specializedInheritedConstructors1.symbols b/tests/baselines/reference/specializedInheritedConstructors1.symbols index 97285e073cc..69ea33898ad 100644 --- a/tests/baselines/reference/specializedInheritedConstructors1.symbols +++ b/tests/baselines/reference/specializedInheritedConstructors1.symbols @@ -4,7 +4,7 @@ interface ViewOptions { >TModel : Symbol(TModel, Decl(specializedInheritedConstructors1.ts, 0, 22)) model: TModel; ->model : Symbol(model, Decl(specializedInheritedConstructors1.ts, 0, 31)) +>model : Symbol(ViewOptions.model, Decl(specializedInheritedConstructors1.ts, 0, 31)) >TModel : Symbol(TModel, Decl(specializedInheritedConstructors1.ts, 0, 22)) } @@ -18,7 +18,7 @@ class View { >TModel : Symbol(TModel, Decl(specializedInheritedConstructors1.ts, 4, 11)) model: TModel; ->model : Symbol(model, Decl(specializedInheritedConstructors1.ts, 5, 49)) +>model : Symbol(View.model, Decl(specializedInheritedConstructors1.ts, 5, 49)) >TModel : Symbol(TModel, Decl(specializedInheritedConstructors1.ts, 4, 11)) } diff --git a/tests/baselines/reference/specializedLambdaTypeArguments.symbols b/tests/baselines/reference/specializedLambdaTypeArguments.symbols index 44083d6c7c8..9799199a1d7 100644 --- a/tests/baselines/reference/specializedLambdaTypeArguments.symbols +++ b/tests/baselines/reference/specializedLambdaTypeArguments.symbols @@ -4,7 +4,7 @@ class X
{ >A : Symbol(A, Decl(specializedLambdaTypeArguments.ts, 0, 8)) prop: X< () => Tany >; ->prop : Symbol(prop, Decl(specializedLambdaTypeArguments.ts, 0, 12)) +>prop : Symbol(X.prop, Decl(specializedLambdaTypeArguments.ts, 0, 12)) >X : Symbol(X, Decl(specializedLambdaTypeArguments.ts, 0, 0)) >Tany : Symbol(Tany, Decl(specializedLambdaTypeArguments.ts, 1, 11)) >Tany : Symbol(Tany, Decl(specializedLambdaTypeArguments.ts, 1, 11)) diff --git a/tests/baselines/reference/specializedLambdaTypeArguments.types b/tests/baselines/reference/specializedLambdaTypeArguments.types index 3eb2fbc959e..b10da421044 100644 --- a/tests/baselines/reference/specializedLambdaTypeArguments.types +++ b/tests/baselines/reference/specializedLambdaTypeArguments.types @@ -4,7 +4,7 @@ class X { >A : A prop: X< () => Tany >; ->prop : X<() => Tany> +>prop : X<(() => Tany)> >X : X >Tany : Tany >Tany : Tany diff --git a/tests/baselines/reference/specializedOverloadWithRestParameters.symbols b/tests/baselines/reference/specializedOverloadWithRestParameters.symbols index 77e16aced4d..0f5832ab53d 100644 --- a/tests/baselines/reference/specializedOverloadWithRestParameters.symbols +++ b/tests/baselines/reference/specializedOverloadWithRestParameters.symbols @@ -1,12 +1,12 @@ === tests/cases/compiler/specializedOverloadWithRestParameters.ts === class Base { foo() { } } >Base : Symbol(Base, Decl(specializedOverloadWithRestParameters.ts, 0, 0)) ->foo : Symbol(foo, Decl(specializedOverloadWithRestParameters.ts, 0, 12)) +>foo : Symbol(Base.foo, Decl(specializedOverloadWithRestParameters.ts, 0, 12)) class Derived1 extends Base { bar() { } } >Derived1 : Symbol(Derived1, Decl(specializedOverloadWithRestParameters.ts, 0, 24)) >Base : Symbol(Base, Decl(specializedOverloadWithRestParameters.ts, 0, 0)) ->bar : Symbol(bar, Decl(specializedOverloadWithRestParameters.ts, 1, 29)) +>bar : Symbol(Derived1.bar, Decl(specializedOverloadWithRestParameters.ts, 1, 29)) function f(tagName: 'span', ...args): Derived1; // error >f : Symbol(f, Decl(specializedOverloadWithRestParameters.ts, 1, 41), Decl(specializedOverloadWithRestParameters.ts, 2, 47), Decl(specializedOverloadWithRestParameters.ts, 3, 43)) diff --git a/tests/baselines/reference/specializedSignatureIsSubtypeOfNonSpecializedSignature.symbols b/tests/baselines/reference/specializedSignatureIsSubtypeOfNonSpecializedSignature.symbols index 8b1bbfb6aab..164361c14ac 100644 --- a/tests/baselines/reference/specializedSignatureIsSubtypeOfNonSpecializedSignature.symbols +++ b/tests/baselines/reference/specializedSignatureIsSubtypeOfNonSpecializedSignature.symbols @@ -18,15 +18,15 @@ class C { >C : Symbol(C, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 5, 24)) foo(x: 'a'); ->foo : Symbol(foo, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 7, 9), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 8, 16), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 9, 19)) +>foo : Symbol(C.foo, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 7, 9), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 8, 16), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 9, 19)) >x : Symbol(x, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 8, 8)) foo(x: string); ->foo : Symbol(foo, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 7, 9), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 8, 16), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 9, 19)) +>foo : Symbol(C.foo, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 7, 9), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 8, 16), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 9, 19)) >x : Symbol(x, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 9, 8)) foo(x: any) { } ->foo : Symbol(foo, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 7, 9), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 8, 16), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 9, 19)) +>foo : Symbol(C.foo, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 7, 9), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 8, 16), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 9, 19)) >x : Symbol(x, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 10, 8)) } @@ -35,43 +35,43 @@ class C2 { >T : Symbol(T, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 13, 9)) foo(x: 'a'); ->foo : Symbol(foo, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 13, 13), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 14, 16), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 15, 19), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 16, 14)) +>foo : Symbol(C2.foo, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 13, 13), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 14, 16), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 15, 19), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 16, 14)) >x : Symbol(x, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 14, 8)) foo(x: string); ->foo : Symbol(foo, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 13, 13), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 14, 16), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 15, 19), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 16, 14)) +>foo : Symbol(C2.foo, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 13, 13), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 14, 16), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 15, 19), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 16, 14)) >x : Symbol(x, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 15, 8)) foo(x: T); ->foo : Symbol(foo, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 13, 13), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 14, 16), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 15, 19), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 16, 14)) +>foo : Symbol(C2.foo, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 13, 13), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 14, 16), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 15, 19), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 16, 14)) >x : Symbol(x, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 16, 8)) >T : Symbol(T, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 13, 9)) foo(x: any) { } ->foo : Symbol(foo, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 13, 13), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 14, 16), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 15, 19), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 16, 14)) +>foo : Symbol(C2.foo, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 13, 13), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 14, 16), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 15, 19), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 16, 14)) >x : Symbol(x, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 17, 8)) } class C3 { >C3 : Symbol(C3, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 18, 1)) >T : Symbol(T, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 20, 9)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) foo(x: 'a'); ->foo : Symbol(foo, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 20, 28), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 21, 16), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 22, 19), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 23, 14)) +>foo : Symbol(C3.foo, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 20, 28), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 21, 16), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 22, 19), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 23, 14)) >x : Symbol(x, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 21, 8)) foo(x: string); ->foo : Symbol(foo, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 20, 28), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 21, 16), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 22, 19), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 23, 14)) +>foo : Symbol(C3.foo, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 20, 28), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 21, 16), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 22, 19), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 23, 14)) >x : Symbol(x, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 22, 8)) foo(x: T); ->foo : Symbol(foo, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 20, 28), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 21, 16), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 22, 19), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 23, 14)) +>foo : Symbol(C3.foo, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 20, 28), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 21, 16), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 22, 19), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 23, 14)) >x : Symbol(x, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 23, 8)) >T : Symbol(T, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 20, 9)) foo(x: any) { } ->foo : Symbol(foo, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 20, 28), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 21, 16), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 22, 19), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 23, 14)) +>foo : Symbol(C3.foo, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 20, 28), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 21, 16), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 22, 19), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 23, 14)) >x : Symbol(x, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 24, 8)) } @@ -88,15 +88,15 @@ interface I { >x : Symbol(x, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 30, 5)) foo(x: 'a'); ->foo : Symbol(foo, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 30, 16), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 31, 16), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 32, 19)) +>foo : Symbol(I.foo, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 30, 16), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 31, 16), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 32, 19)) >x : Symbol(x, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 31, 8)) foo(x: string); ->foo : Symbol(foo, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 30, 16), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 31, 16), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 32, 19)) +>foo : Symbol(I.foo, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 30, 16), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 31, 16), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 32, 19)) >x : Symbol(x, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 32, 8)) foo(x: number); ->foo : Symbol(foo, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 30, 16), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 31, 16), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 32, 19)) +>foo : Symbol(I.foo, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 30, 16), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 31, 16), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 32, 19)) >x : Symbol(x, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 33, 8)) } @@ -115,15 +115,15 @@ interface I2 { >x : Symbol(x, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 39, 5)) foo(x: 'a'); ->foo : Symbol(foo, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 39, 16), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 40, 16), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 41, 19)) +>foo : Symbol(I2.foo, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 39, 16), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 40, 16), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 41, 19)) >x : Symbol(x, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 40, 8)) foo(x: string); ->foo : Symbol(foo, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 39, 16), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 40, 16), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 41, 19)) +>foo : Symbol(I2.foo, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 39, 16), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 40, 16), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 41, 19)) >x : Symbol(x, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 41, 8)) foo(x: T); ->foo : Symbol(foo, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 39, 16), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 40, 16), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 41, 19)) +>foo : Symbol(I2.foo, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 39, 16), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 40, 16), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 41, 19)) >x : Symbol(x, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 42, 8)) >T : Symbol(T, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 36, 13)) } @@ -131,7 +131,7 @@ interface I2 { interface I3 { >I3 : Symbol(I3, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 43, 1)) >T : Symbol(T, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 45, 13)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) (x: 'a'); >x : Symbol(x, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 46, 5)) @@ -144,15 +144,15 @@ interface I3 { >T : Symbol(T, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 45, 13)) foo(x: 'a'); ->foo : Symbol(foo, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 48, 11), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 49, 16), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 50, 19)) +>foo : Symbol(I3.foo, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 48, 11), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 49, 16), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 50, 19)) >x : Symbol(x, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 49, 8)) foo(x: string); ->foo : Symbol(foo, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 48, 11), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 49, 16), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 50, 19)) +>foo : Symbol(I3.foo, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 48, 11), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 49, 16), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 50, 19)) >x : Symbol(x, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 50, 8)) foo(x: T); ->foo : Symbol(foo, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 48, 11), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 49, 16), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 50, 19)) +>foo : Symbol(I3.foo, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 48, 11), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 49, 16), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 50, 19)) >x : Symbol(x, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 51, 8)) >T : Symbol(T, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 45, 13)) } @@ -236,7 +236,7 @@ var a3: { foo(x: T); >foo : Symbol(foo, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 75, 16), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 76, 19), Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 77, 16)) >T : Symbol(T, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 78, 8)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >x : Symbol(x, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 78, 26)) >T : Symbol(T, Decl(specializedSignatureIsSubtypeOfNonSpecializedSignature.ts, 78, 8)) } diff --git a/tests/baselines/reference/specializedSignatureOverloadReturnTypeWithIndexers.symbols b/tests/baselines/reference/specializedSignatureOverloadReturnTypeWithIndexers.symbols index ea966cfda18..2aec70cdc98 100644 --- a/tests/baselines/reference/specializedSignatureOverloadReturnTypeWithIndexers.symbols +++ b/tests/baselines/reference/specializedSignatureOverloadReturnTypeWithIndexers.symbols @@ -3,12 +3,12 @@ interface A { >A : Symbol(A, Decl(specializedSignatureOverloadReturnTypeWithIndexers.ts, 0, 0)) f(p: string): { [p: string]: string; }; ->f : Symbol(f, Decl(specializedSignatureOverloadReturnTypeWithIndexers.ts, 0, 13), Decl(specializedSignatureOverloadReturnTypeWithIndexers.ts, 1, 43)) +>f : Symbol(A.f, Decl(specializedSignatureOverloadReturnTypeWithIndexers.ts, 0, 13), Decl(specializedSignatureOverloadReturnTypeWithIndexers.ts, 1, 43)) >p : Symbol(p, Decl(specializedSignatureOverloadReturnTypeWithIndexers.ts, 1, 6)) >p : Symbol(p, Decl(specializedSignatureOverloadReturnTypeWithIndexers.ts, 1, 21)) f(p: "spec"): { [p: string]: any; } // Should be ok ->f : Symbol(f, Decl(specializedSignatureOverloadReturnTypeWithIndexers.ts, 0, 13), Decl(specializedSignatureOverloadReturnTypeWithIndexers.ts, 1, 43)) +>f : Symbol(A.f, Decl(specializedSignatureOverloadReturnTypeWithIndexers.ts, 0, 13), Decl(specializedSignatureOverloadReturnTypeWithIndexers.ts, 1, 43)) >p : Symbol(p, Decl(specializedSignatureOverloadReturnTypeWithIndexers.ts, 2, 6)) >p : Symbol(p, Decl(specializedSignatureOverloadReturnTypeWithIndexers.ts, 2, 21)) } @@ -16,12 +16,12 @@ interface B { >B : Symbol(B, Decl(specializedSignatureOverloadReturnTypeWithIndexers.ts, 3, 1)) f(p: string): { [p: number]: string; }; ->f : Symbol(f, Decl(specializedSignatureOverloadReturnTypeWithIndexers.ts, 4, 13), Decl(specializedSignatureOverloadReturnTypeWithIndexers.ts, 5, 43)) +>f : Symbol(B.f, Decl(specializedSignatureOverloadReturnTypeWithIndexers.ts, 4, 13), Decl(specializedSignatureOverloadReturnTypeWithIndexers.ts, 5, 43)) >p : Symbol(p, Decl(specializedSignatureOverloadReturnTypeWithIndexers.ts, 5, 6)) >p : Symbol(p, Decl(specializedSignatureOverloadReturnTypeWithIndexers.ts, 5, 21)) f(p: "spec"): { [p: string]: any; } // Should be ok ->f : Symbol(f, Decl(specializedSignatureOverloadReturnTypeWithIndexers.ts, 4, 13), Decl(specializedSignatureOverloadReturnTypeWithIndexers.ts, 5, 43)) +>f : Symbol(B.f, Decl(specializedSignatureOverloadReturnTypeWithIndexers.ts, 4, 13), Decl(specializedSignatureOverloadReturnTypeWithIndexers.ts, 5, 43)) >p : Symbol(p, Decl(specializedSignatureOverloadReturnTypeWithIndexers.ts, 6, 6)) >p : Symbol(p, Decl(specializedSignatureOverloadReturnTypeWithIndexers.ts, 6, 21)) } @@ -29,12 +29,12 @@ interface C { >C : Symbol(C, Decl(specializedSignatureOverloadReturnTypeWithIndexers.ts, 7, 1)) f(p: string): { [p: number]: string; }; ->f : Symbol(f, Decl(specializedSignatureOverloadReturnTypeWithIndexers.ts, 8, 13), Decl(specializedSignatureOverloadReturnTypeWithIndexers.ts, 9, 43)) +>f : Symbol(C.f, Decl(specializedSignatureOverloadReturnTypeWithIndexers.ts, 8, 13), Decl(specializedSignatureOverloadReturnTypeWithIndexers.ts, 9, 43)) >p : Symbol(p, Decl(specializedSignatureOverloadReturnTypeWithIndexers.ts, 9, 6)) >p : Symbol(p, Decl(specializedSignatureOverloadReturnTypeWithIndexers.ts, 9, 21)) f(p: "spec"): { [p: number]: any; } // Should be ok ->f : Symbol(f, Decl(specializedSignatureOverloadReturnTypeWithIndexers.ts, 8, 13), Decl(specializedSignatureOverloadReturnTypeWithIndexers.ts, 9, 43)) +>f : Symbol(C.f, Decl(specializedSignatureOverloadReturnTypeWithIndexers.ts, 8, 13), Decl(specializedSignatureOverloadReturnTypeWithIndexers.ts, 9, 43)) >p : Symbol(p, Decl(specializedSignatureOverloadReturnTypeWithIndexers.ts, 10, 6)) >p : Symbol(p, Decl(specializedSignatureOverloadReturnTypeWithIndexers.ts, 10, 21)) } @@ -42,12 +42,12 @@ interface D { >D : Symbol(D, Decl(specializedSignatureOverloadReturnTypeWithIndexers.ts, 11, 1)) f(p: string): { [p: string]: string; }; ->f : Symbol(f, Decl(specializedSignatureOverloadReturnTypeWithIndexers.ts, 12, 13), Decl(specializedSignatureOverloadReturnTypeWithIndexers.ts, 13, 43)) +>f : Symbol(D.f, Decl(specializedSignatureOverloadReturnTypeWithIndexers.ts, 12, 13), Decl(specializedSignatureOverloadReturnTypeWithIndexers.ts, 13, 43)) >p : Symbol(p, Decl(specializedSignatureOverloadReturnTypeWithIndexers.ts, 13, 6)) >p : Symbol(p, Decl(specializedSignatureOverloadReturnTypeWithIndexers.ts, 13, 21)) f(p: "spec"): { [p: number]: any; } // Should be error ->f : Symbol(f, Decl(specializedSignatureOverloadReturnTypeWithIndexers.ts, 12, 13), Decl(specializedSignatureOverloadReturnTypeWithIndexers.ts, 13, 43)) +>f : Symbol(D.f, Decl(specializedSignatureOverloadReturnTypeWithIndexers.ts, 12, 13), Decl(specializedSignatureOverloadReturnTypeWithIndexers.ts, 13, 43)) >p : Symbol(p, Decl(specializedSignatureOverloadReturnTypeWithIndexers.ts, 14, 6)) >p : Symbol(p, Decl(specializedSignatureOverloadReturnTypeWithIndexers.ts, 14, 21)) } diff --git a/tests/baselines/reference/staticAndMemberFunctions.symbols b/tests/baselines/reference/staticAndMemberFunctions.symbols index 8df6cb52f3c..3c4e6380801 100644 --- a/tests/baselines/reference/staticAndMemberFunctions.symbols +++ b/tests/baselines/reference/staticAndMemberFunctions.symbols @@ -6,5 +6,5 @@ class T { >x : Symbol(T.x, Decl(staticAndMemberFunctions.ts, 0, 9)) public y() { } ->y : Symbol(y, Decl(staticAndMemberFunctions.ts, 1, 18)) +>y : Symbol(T.y, Decl(staticAndMemberFunctions.ts, 1, 18)) } diff --git a/tests/baselines/reference/staticAndNonStaticPropertiesSameName.symbols b/tests/baselines/reference/staticAndNonStaticPropertiesSameName.symbols index 99cc732465d..c0d6667087a 100644 --- a/tests/baselines/reference/staticAndNonStaticPropertiesSameName.symbols +++ b/tests/baselines/reference/staticAndNonStaticPropertiesSameName.symbols @@ -3,13 +3,13 @@ class C { >C : Symbol(C, Decl(staticAndNonStaticPropertiesSameName.ts, 0, 0)) x: number; ->x : Symbol(x, Decl(staticAndNonStaticPropertiesSameName.ts, 0, 9)) +>x : Symbol(C.x, Decl(staticAndNonStaticPropertiesSameName.ts, 0, 9)) static x: number; >x : Symbol(C.x, Decl(staticAndNonStaticPropertiesSameName.ts, 1, 14)) f() { } ->f : Symbol(f, Decl(staticAndNonStaticPropertiesSameName.ts, 2, 21)) +>f : Symbol(C.f, Decl(staticAndNonStaticPropertiesSameName.ts, 2, 21)) static f() { } >f : Symbol(C.f, Decl(staticAndNonStaticPropertiesSameName.ts, 4, 11)) diff --git a/tests/baselines/reference/staticAnonymousTypeNotReferencingTypeParameter.js b/tests/baselines/reference/staticAnonymousTypeNotReferencingTypeParameter.js new file mode 100644 index 00000000000..62a23d538c4 --- /dev/null +++ b/tests/baselines/reference/staticAnonymousTypeNotReferencingTypeParameter.js @@ -0,0 +1,295 @@ +//// [staticAnonymousTypeNotReferencingTypeParameter.ts] +// This test case is a condensed version of Angular 2's ListWrapper. Prior to #7448 +// this would cause the compiler to run out of memory. + +function outer(x: T) { + class Inner { + static y: T = x; + } + return Inner; +} +let y: number = outer(5).y; + +class ListWrapper2 { + static clone(dit: typeof ListWrapper2, array: T[]): T[] { return array.slice(0); } + static reversed(dit: typeof ListWrapper2, array: T[]): T[] { + var a = ListWrapper2.clone(dit, array); + return a; + } +} +namespace tessst { + /** + * Iterates through 'array' by index and performs the callback on each element of array until the callback + * returns a truthy value, then returns that value. + * If no such value is found, the callback is applied to each element of array and undefined is returned. + */ + export function funkyFor(array: T[], callback: (element: T, index: number) => U): U { + if (array) { + for (let i = 0, len = array.length; i < len; i++) { + const result = callback(array[i], i); + if (result) { + return result; + } + } + } + return undefined; + } +} +interface Scanner { + scanRange(start: number, length: number, callback: () => T): T; +} +class ListWrapper { + // JS has no way to express a statically fixed size list, but dart does so we + // keep both methods. + static createFixedSize(dit: typeof ListWrapper, size: number): any[] { return new Array(size); } + static createGrowableSize(dit: typeof ListWrapper, size: number): any[] { return new Array(size); } + static clone(dit: typeof ListWrapper, array: T[]): T[] { return array.slice(0); } + static forEachWithIndex(dit: typeof ListWrapper, array: T[], fn: (t: T, n: number) => void) { + for (var i = 0; i < array.length; i++) { + fn(array[i], i); + } + } + static first(dit: typeof ListWrapper, array: T[]): T { + if (!array) return null; + return array[0]; + } + static last(dit: typeof ListWrapper, array: T[]): T { + if (!array || array.length == 0) return null; + return array[array.length - 1]; + } + static indexOf(dit: typeof ListWrapper, array: T[], value: T, startIndex: number = 0): number { + return array.indexOf(value, startIndex); + } + static contains(dit: typeof ListWrapper, list: T[], el: T): boolean { return list.indexOf(el) !== -1; } + static reversed(dit: typeof ListWrapper, array: T[]): T[] { + var a = ListWrapper.clone(dit, array); + let scanner: Scanner; + scanner.scanRange(3, 5, () => { }); + return tessst.funkyFor(array, t => t.toString()) ? a.reverse() : a; + } + static concat(dit: typeof ListWrapper, a: any[], b: any[]): any[] { return a.concat(b); } + static insert(dit: typeof ListWrapper, list: T[], index: number, value: T) { list.splice(index, 0, value); } + static removeAt(dit: typeof ListWrapper, list: T[], index: number): T { + var res = list[index]; + list.splice(index, 1); + return res; + } + static removeAll(dit: typeof ListWrapper, list: T[], items: T[]) { + for (var i = 0; i < items.length; ++i) { + var index = list.indexOf(items[i]); + list.splice(index, 1); + } + } + static remove(dit: typeof ListWrapper, list: T[], el: T): boolean { + var index = list.indexOf(el); + if (index > -1) { + list.splice(index, 1); + return true; + } + return false; + } + static clear(dit: typeof ListWrapper, list: any[]) { list.length = 0; } + static isEmpty(dit: typeof ListWrapper, list: any[]): boolean { return list.length == 0; } + static fill(dit: typeof ListWrapper, list: any[], value: any, start: number = 0, end: number = null) { + list.fill(value, start, end === null ? list.length : end); + } + static equals(dit: typeof ListWrapper, a: any[], b: any[]): boolean { + if (a.length != b.length) return false; + for (var i = 0; i < a.length; ++i) { + if (a[i] !== b[i]) return false; + } + return true; + } + static slice(dit: typeof ListWrapper, l: T[], from: number = 0, to: number = null): T[] { + return l.slice(from, to === null ? undefined : to); + } + static splice(dit: typeof ListWrapper, l: T[], from: number, length: number): T[] { return l.splice(from, length); } + static sort(dit: typeof ListWrapper, l: T[], compareFn?: (a: T, b: T) => number) { + if (isPresent(compareFn)) { + l.sort(compareFn); + } else { + l.sort(); + } + } + static toString(dit: typeof ListWrapper, l: T[]): string { return l.toString(); } + static toJSON(dit: typeof ListWrapper, l: T[]): string { return JSON.stringify(l); } + + static maximum(dit: typeof ListWrapper, list: T[], predicate: (t: T) => number): T { + if (list.length == 0) { + return null; + } + var solution: T = null; + var maxValue = -Infinity; + for (var index = 0; index < list.length; index++) { + var candidate = list[index]; + if (isBlank(candidate)) { + continue; + } + var candidateValue = predicate(candidate); + if (candidateValue > maxValue) { + solution = candidate; + maxValue = candidateValue; + } + } + return solution; + } +} +let cloned = ListWrapper.clone(ListWrapper, [1,2,3,4]); +declare function isBlank(x: any): boolean; +declare function isPresent(compareFn?: (a: T, b: T) => number): boolean; +interface Array { + fill(value: any, start: number, end: number): void; +} + +//// [staticAnonymousTypeNotReferencingTypeParameter.js] +// This test case is a condensed version of Angular 2's ListWrapper. Prior to #7448 +// this would cause the compiler to run out of memory. +function outer(x) { + var Inner = (function () { + function Inner() { + } + Inner.y = x; + return Inner; + }()); + return Inner; +} +var y = outer(5).y; +var ListWrapper2 = (function () { + function ListWrapper2() { + } + ListWrapper2.clone = function (dit, array) { return array.slice(0); }; + ListWrapper2.reversed = function (dit, array) { + var a = ListWrapper2.clone(dit, array); + return a; + }; + return ListWrapper2; +}()); +var tessst; +(function (tessst) { + /** + * Iterates through 'array' by index and performs the callback on each element of array until the callback + * returns a truthy value, then returns that value. + * If no such value is found, the callback is applied to each element of array and undefined is returned. + */ + function funkyFor(array, callback) { + if (array) { + for (var i = 0, len = array.length; i < len; i++) { + var result = callback(array[i], i); + if (result) { + return result; + } + } + } + return undefined; + } + tessst.funkyFor = funkyFor; +})(tessst || (tessst = {})); +var ListWrapper = (function () { + function ListWrapper() { + } + // JS has no way to express a statically fixed size list, but dart does so we + // keep both methods. + ListWrapper.createFixedSize = function (dit, size) { return new Array(size); }; + ListWrapper.createGrowableSize = function (dit, size) { return new Array(size); }; + ListWrapper.clone = function (dit, array) { return array.slice(0); }; + ListWrapper.forEachWithIndex = function (dit, array, fn) { + for (var i = 0; i < array.length; i++) { + fn(array[i], i); + } + }; + ListWrapper.first = function (dit, array) { + if (!array) + return null; + return array[0]; + }; + ListWrapper.last = function (dit, array) { + if (!array || array.length == 0) + return null; + return array[array.length - 1]; + }; + ListWrapper.indexOf = function (dit, array, value, startIndex) { + if (startIndex === void 0) { startIndex = 0; } + return array.indexOf(value, startIndex); + }; + ListWrapper.contains = function (dit, list, el) { return list.indexOf(el) !== -1; }; + ListWrapper.reversed = function (dit, array) { + var a = ListWrapper.clone(dit, array); + var scanner; + scanner.scanRange(3, 5, function () { }); + return tessst.funkyFor(array, function (t) { return t.toString(); }) ? a.reverse() : a; + }; + ListWrapper.concat = function (dit, a, b) { return a.concat(b); }; + ListWrapper.insert = function (dit, list, index, value) { list.splice(index, 0, value); }; + ListWrapper.removeAt = function (dit, list, index) { + var res = list[index]; + list.splice(index, 1); + return res; + }; + ListWrapper.removeAll = function (dit, list, items) { + for (var i = 0; i < items.length; ++i) { + var index = list.indexOf(items[i]); + list.splice(index, 1); + } + }; + ListWrapper.remove = function (dit, list, el) { + var index = list.indexOf(el); + if (index > -1) { + list.splice(index, 1); + return true; + } + return false; + }; + ListWrapper.clear = function (dit, list) { list.length = 0; }; + ListWrapper.isEmpty = function (dit, list) { return list.length == 0; }; + ListWrapper.fill = function (dit, list, value, start, end) { + if (start === void 0) { start = 0; } + if (end === void 0) { end = null; } + list.fill(value, start, end === null ? list.length : end); + }; + ListWrapper.equals = function (dit, a, b) { + if (a.length != b.length) + return false; + for (var i = 0; i < a.length; ++i) { + if (a[i] !== b[i]) + return false; + } + return true; + }; + ListWrapper.slice = function (dit, l, from, to) { + if (from === void 0) { from = 0; } + if (to === void 0) { to = null; } + return l.slice(from, to === null ? undefined : to); + }; + ListWrapper.splice = function (dit, l, from, length) { return l.splice(from, length); }; + ListWrapper.sort = function (dit, l, compareFn) { + if (isPresent(compareFn)) { + l.sort(compareFn); + } + else { + l.sort(); + } + }; + ListWrapper.toString = function (dit, l) { return l.toString(); }; + ListWrapper.toJSON = function (dit, l) { return JSON.stringify(l); }; + ListWrapper.maximum = function (dit, list, predicate) { + if (list.length == 0) { + return null; + } + var solution = null; + var maxValue = -Infinity; + for (var index = 0; index < list.length; index++) { + var candidate = list[index]; + if (isBlank(candidate)) { + continue; + } + var candidateValue = predicate(candidate); + if (candidateValue > maxValue) { + solution = candidate; + maxValue = candidateValue; + } + } + return solution; + }; + return ListWrapper; +}()); +var cloned = ListWrapper.clone(ListWrapper, [1, 2, 3, 4]); diff --git a/tests/baselines/reference/staticAnonymousTypeNotReferencingTypeParameter.symbols b/tests/baselines/reference/staticAnonymousTypeNotReferencingTypeParameter.symbols new file mode 100644 index 00000000000..a6aa91e3a56 --- /dev/null +++ b/tests/baselines/reference/staticAnonymousTypeNotReferencingTypeParameter.symbols @@ -0,0 +1,667 @@ +=== tests/cases/compiler/staticAnonymousTypeNotReferencingTypeParameter.ts === +// This test case is a condensed version of Angular 2's ListWrapper. Prior to #7448 +// this would cause the compiler to run out of memory. + +function outer(x: T) { +>outer : Symbol(outer, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 0, 0)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 3, 15)) +>x : Symbol(x, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 3, 18)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 3, 15)) + + class Inner { +>Inner : Symbol(Inner, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 3, 25)) + + static y: T = x; +>y : Symbol(Inner.y, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 4, 15)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 3, 15)) +>x : Symbol(x, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 3, 18)) + } + return Inner; +>Inner : Symbol(Inner, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 3, 25)) +} +let y: number = outer(5).y; +>y : Symbol(y, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 9, 3)) +>outer(5).y : Symbol(Inner.y, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 4, 15)) +>outer : Symbol(outer, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 0, 0)) +>y : Symbol(Inner.y, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 4, 15)) + +class ListWrapper2 { +>ListWrapper2 : Symbol(ListWrapper2, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 9, 27)) + + static clone(dit: typeof ListWrapper2, array: T[]): T[] { return array.slice(0); } +>clone : Symbol(ListWrapper2.clone, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 11, 20)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 12, 15)) +>dit : Symbol(dit, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 12, 18)) +>ListWrapper2 : Symbol(ListWrapper2, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 9, 27)) +>array : Symbol(array, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 12, 43)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 12, 15)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 12, 15)) +>array.slice : Symbol(Array.slice, Decl(lib.d.ts, --, --)) +>array : Symbol(array, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 12, 43)) +>slice : Symbol(Array.slice, Decl(lib.d.ts, --, --)) + + static reversed(dit: typeof ListWrapper2, array: T[]): T[] { +>reversed : Symbol(ListWrapper2.reversed, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 12, 87)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 13, 18)) +>dit : Symbol(dit, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 13, 21)) +>ListWrapper2 : Symbol(ListWrapper2, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 9, 27)) +>array : Symbol(array, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 13, 46)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 13, 18)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 13, 18)) + + var a = ListWrapper2.clone(dit, array); +>a : Symbol(a, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 14, 7)) +>ListWrapper2.clone : Symbol(ListWrapper2.clone, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 11, 20)) +>ListWrapper2 : Symbol(ListWrapper2, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 9, 27)) +>clone : Symbol(ListWrapper2.clone, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 11, 20)) +>dit : Symbol(dit, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 13, 21)) +>array : Symbol(array, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 13, 46)) + + return a; +>a : Symbol(a, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 14, 7)) + } +} +namespace tessst { +>tessst : Symbol(tessst, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 17, 1)) + + /** + * Iterates through 'array' by index and performs the callback on each element of array until the callback + * returns a truthy value, then returns that value. + * If no such value is found, the callback is applied to each element of array and undefined is returned. + */ + export function funkyFor(array: T[], callback: (element: T, index: number) => U): U { +>funkyFor : Symbol(funkyFor, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 18, 18)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 24, 29)) +>U : Symbol(U, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 24, 31)) +>array : Symbol(array, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 24, 35)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 24, 29)) +>callback : Symbol(callback, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 24, 46)) +>element : Symbol(element, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 24, 58)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 24, 29)) +>index : Symbol(index, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 24, 69)) +>U : Symbol(U, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 24, 31)) +>U : Symbol(U, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 24, 31)) + + if (array) { +>array : Symbol(array, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 24, 35)) + + for (let i = 0, len = array.length; i < len; i++) { +>i : Symbol(i, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 26, 20)) +>len : Symbol(len, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 26, 27)) +>array.length : Symbol(Array.length, Decl(lib.d.ts, --, --)) +>array : Symbol(array, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 24, 35)) +>length : Symbol(Array.length, Decl(lib.d.ts, --, --)) +>i : Symbol(i, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 26, 20)) +>len : Symbol(len, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 26, 27)) +>i : Symbol(i, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 26, 20)) + + const result = callback(array[i], i); +>result : Symbol(result, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 27, 21)) +>callback : Symbol(callback, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 24, 46)) +>array : Symbol(array, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 24, 35)) +>i : Symbol(i, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 26, 20)) +>i : Symbol(i, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 26, 20)) + + if (result) { +>result : Symbol(result, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 27, 21)) + + return result; +>result : Symbol(result, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 27, 21)) + } + } + } + return undefined; +>undefined : Symbol(undefined) + } +} +interface Scanner { +>Scanner : Symbol(Scanner, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 35, 1)) + + scanRange(start: number, length: number, callback: () => T): T; +>scanRange : Symbol(Scanner.scanRange, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 36, 19)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 37, 12)) +>start : Symbol(start, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 37, 15)) +>length : Symbol(length, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 37, 29)) +>callback : Symbol(callback, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 37, 45)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 37, 12)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 37, 12)) +} +class ListWrapper { +>ListWrapper : Symbol(ListWrapper, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 38, 1)) + + // JS has no way to express a statically fixed size list, but dart does so we + // keep both methods. + static createFixedSize(dit: typeof ListWrapper, size: number): any[] { return new Array(size); } +>createFixedSize : Symbol(ListWrapper.createFixedSize, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 39, 19)) +>dit : Symbol(dit, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 42, 25)) +>ListWrapper : Symbol(ListWrapper, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 38, 1)) +>size : Symbol(size, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 42, 49)) +>Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 137, 75)) +>size : Symbol(size, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 42, 49)) + + static createGrowableSize(dit: typeof ListWrapper, size: number): any[] { return new Array(size); } +>createGrowableSize : Symbol(ListWrapper.createGrowableSize, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 42, 98)) +>dit : Symbol(dit, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 43, 28)) +>ListWrapper : Symbol(ListWrapper, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 38, 1)) +>size : Symbol(size, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 43, 52)) +>Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 137, 75)) +>size : Symbol(size, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 43, 52)) + + static clone(dit: typeof ListWrapper, array: T[]): T[] { return array.slice(0); } +>clone : Symbol(ListWrapper.clone, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 43, 101)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 44, 15)) +>dit : Symbol(dit, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 44, 18)) +>ListWrapper : Symbol(ListWrapper, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 38, 1)) +>array : Symbol(array, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 44, 42)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 44, 15)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 44, 15)) +>array.slice : Symbol(Array.slice, Decl(lib.d.ts, --, --)) +>array : Symbol(array, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 44, 42)) +>slice : Symbol(Array.slice, Decl(lib.d.ts, --, --)) + + static forEachWithIndex(dit: typeof ListWrapper, array: T[], fn: (t: T, n: number) => void) { +>forEachWithIndex : Symbol(ListWrapper.forEachWithIndex, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 44, 86)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 45, 26)) +>dit : Symbol(dit, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 45, 29)) +>ListWrapper : Symbol(ListWrapper, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 38, 1)) +>array : Symbol(array, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 45, 53)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 45, 26)) +>fn : Symbol(fn, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 45, 65)) +>t : Symbol(t, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 45, 71)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 45, 26)) +>n : Symbol(n, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 45, 76)) + + for (var i = 0; i < array.length; i++) { +>i : Symbol(i, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 46, 12)) +>i : Symbol(i, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 46, 12)) +>array.length : Symbol(Array.length, Decl(lib.d.ts, --, --)) +>array : Symbol(array, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 45, 53)) +>length : Symbol(Array.length, Decl(lib.d.ts, --, --)) +>i : Symbol(i, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 46, 12)) + + fn(array[i], i); +>fn : Symbol(fn, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 45, 65)) +>array : Symbol(array, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 45, 53)) +>i : Symbol(i, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 46, 12)) +>i : Symbol(i, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 46, 12)) + } + } + static first(dit: typeof ListWrapper, array: T[]): T { +>first : Symbol(ListWrapper.first, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 49, 3)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 50, 15)) +>dit : Symbol(dit, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 50, 18)) +>ListWrapper : Symbol(ListWrapper, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 38, 1)) +>array : Symbol(array, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 50, 42)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 50, 15)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 50, 15)) + + if (!array) return null; +>array : Symbol(array, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 50, 42)) + + return array[0]; +>array : Symbol(array, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 50, 42)) + } + static last(dit: typeof ListWrapper, array: T[]): T { +>last : Symbol(ListWrapper.last, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 53, 3)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 54, 14)) +>dit : Symbol(dit, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 54, 17)) +>ListWrapper : Symbol(ListWrapper, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 38, 1)) +>array : Symbol(array, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 54, 41)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 54, 14)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 54, 14)) + + if (!array || array.length == 0) return null; +>array : Symbol(array, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 54, 41)) +>array.length : Symbol(Array.length, Decl(lib.d.ts, --, --)) +>array : Symbol(array, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 54, 41)) +>length : Symbol(Array.length, Decl(lib.d.ts, --, --)) + + return array[array.length - 1]; +>array : Symbol(array, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 54, 41)) +>array.length : Symbol(Array.length, Decl(lib.d.ts, --, --)) +>array : Symbol(array, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 54, 41)) +>length : Symbol(Array.length, Decl(lib.d.ts, --, --)) + } + static indexOf(dit: typeof ListWrapper, array: T[], value: T, startIndex: number = 0): number { +>indexOf : Symbol(ListWrapper.indexOf, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 57, 3)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 58, 17)) +>dit : Symbol(dit, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 58, 20)) +>ListWrapper : Symbol(ListWrapper, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 38, 1)) +>array : Symbol(array, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 58, 44)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 58, 17)) +>value : Symbol(value, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 58, 56)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 58, 17)) +>startIndex : Symbol(startIndex, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 58, 66)) + + return array.indexOf(value, startIndex); +>array.indexOf : Symbol(Array.indexOf, Decl(lib.d.ts, --, --)) +>array : Symbol(array, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 58, 44)) +>indexOf : Symbol(Array.indexOf, Decl(lib.d.ts, --, --)) +>value : Symbol(value, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 58, 56)) +>startIndex : Symbol(startIndex, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 58, 66)) + } + static contains(dit: typeof ListWrapper, list: T[], el: T): boolean { return list.indexOf(el) !== -1; } +>contains : Symbol(ListWrapper.contains, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 60, 3)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 61, 18)) +>dit : Symbol(dit, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 61, 21)) +>ListWrapper : Symbol(ListWrapper, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 38, 1)) +>list : Symbol(list, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 61, 45)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 61, 18)) +>el : Symbol(el, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 61, 56)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 61, 18)) +>list.indexOf : Symbol(Array.indexOf, Decl(lib.d.ts, --, --)) +>list : Symbol(list, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 61, 45)) +>indexOf : Symbol(Array.indexOf, Decl(lib.d.ts, --, --)) +>el : Symbol(el, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 61, 56)) + + static reversed(dit: typeof ListWrapper, array: T[]): T[] { +>reversed : Symbol(ListWrapper.reversed, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 61, 108)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 62, 18)) +>dit : Symbol(dit, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 62, 21)) +>ListWrapper : Symbol(ListWrapper, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 38, 1)) +>array : Symbol(array, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 62, 45)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 62, 18)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 62, 18)) + + var a = ListWrapper.clone(dit, array); +>a : Symbol(a, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 63, 7)) +>ListWrapper.clone : Symbol(ListWrapper.clone, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 43, 101)) +>ListWrapper : Symbol(ListWrapper, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 38, 1)) +>clone : Symbol(ListWrapper.clone, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 43, 101)) +>dit : Symbol(dit, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 62, 21)) +>array : Symbol(array, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 62, 45)) + + let scanner: Scanner; +>scanner : Symbol(scanner, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 64, 7)) +>Scanner : Symbol(Scanner, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 35, 1)) + + scanner.scanRange(3, 5, () => { }); +>scanner.scanRange : Symbol(Scanner.scanRange, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 36, 19)) +>scanner : Symbol(scanner, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 64, 7)) +>scanRange : Symbol(Scanner.scanRange, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 36, 19)) + + return tessst.funkyFor(array, t => t.toString()) ? a.reverse() : a; +>tessst.funkyFor : Symbol(tessst.funkyFor, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 18, 18)) +>tessst : Symbol(tessst, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 17, 1)) +>funkyFor : Symbol(tessst.funkyFor, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 18, 18)) +>array : Symbol(array, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 62, 45)) +>t : Symbol(t, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 66, 33)) +>t.toString : Symbol(Object.toString, Decl(lib.d.ts, --, --)) +>t : Symbol(t, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 66, 33)) +>toString : Symbol(Object.toString, Decl(lib.d.ts, --, --)) +>a.reverse : Symbol(Array.reverse, Decl(lib.d.ts, --, --)) +>a : Symbol(a, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 63, 7)) +>reverse : Symbol(Array.reverse, Decl(lib.d.ts, --, --)) +>a : Symbol(a, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 63, 7)) + } + static concat(dit: typeof ListWrapper, a: any[], b: any[]): any[] { return a.concat(b); } +>concat : Symbol(ListWrapper.concat, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 67, 3)) +>dit : Symbol(dit, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 68, 16)) +>ListWrapper : Symbol(ListWrapper, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 38, 1)) +>a : Symbol(a, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 68, 40)) +>b : Symbol(b, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 68, 50)) +>a.concat : Symbol(Array.concat, Decl(lib.d.ts, --, --)) +>a : Symbol(a, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 68, 40)) +>concat : Symbol(Array.concat, Decl(lib.d.ts, --, --)) +>b : Symbol(b, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 68, 50)) + + static insert(dit: typeof ListWrapper, list: T[], index: number, value: T) { list.splice(index, 0, value); } +>insert : Symbol(ListWrapper.insert, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 68, 91)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 69, 16)) +>dit : Symbol(dit, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 69, 19)) +>ListWrapper : Symbol(ListWrapper, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 38, 1)) +>list : Symbol(list, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 69, 43)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 69, 16)) +>index : Symbol(index, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 69, 54)) +>value : Symbol(value, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 69, 69)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 69, 16)) +>list.splice : Symbol(Array.splice, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>list : Symbol(list, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 69, 43)) +>splice : Symbol(Array.splice, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>index : Symbol(index, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 69, 54)) +>value : Symbol(value, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 69, 69)) + + static removeAt(dit: typeof ListWrapper, list: T[], index: number): T { +>removeAt : Symbol(ListWrapper.removeAt, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 69, 113)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 70, 18)) +>dit : Symbol(dit, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 70, 21)) +>ListWrapper : Symbol(ListWrapper, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 38, 1)) +>list : Symbol(list, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 70, 45)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 70, 18)) +>index : Symbol(index, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 70, 56)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 70, 18)) + + var res = list[index]; +>res : Symbol(res, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 71, 7)) +>list : Symbol(list, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 70, 45)) +>index : Symbol(index, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 70, 56)) + + list.splice(index, 1); +>list.splice : Symbol(Array.splice, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>list : Symbol(list, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 70, 45)) +>splice : Symbol(Array.splice, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>index : Symbol(index, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 70, 56)) + + return res; +>res : Symbol(res, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 71, 7)) + } + static removeAll(dit: typeof ListWrapper, list: T[], items: T[]) { +>removeAll : Symbol(ListWrapper.removeAll, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 74, 3)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 75, 19)) +>dit : Symbol(dit, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 75, 22)) +>ListWrapper : Symbol(ListWrapper, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 38, 1)) +>list : Symbol(list, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 75, 46)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 75, 19)) +>items : Symbol(items, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 75, 57)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 75, 19)) + + for (var i = 0; i < items.length; ++i) { +>i : Symbol(i, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 76, 12)) +>i : Symbol(i, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 76, 12)) +>items.length : Symbol(Array.length, Decl(lib.d.ts, --, --)) +>items : Symbol(items, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 75, 57)) +>length : Symbol(Array.length, Decl(lib.d.ts, --, --)) +>i : Symbol(i, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 76, 12)) + + var index = list.indexOf(items[i]); +>index : Symbol(index, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 77, 9)) +>list.indexOf : Symbol(Array.indexOf, Decl(lib.d.ts, --, --)) +>list : Symbol(list, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 75, 46)) +>indexOf : Symbol(Array.indexOf, Decl(lib.d.ts, --, --)) +>items : Symbol(items, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 75, 57)) +>i : Symbol(i, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 76, 12)) + + list.splice(index, 1); +>list.splice : Symbol(Array.splice, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>list : Symbol(list, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 75, 46)) +>splice : Symbol(Array.splice, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>index : Symbol(index, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 77, 9)) + } + } + static remove(dit: typeof ListWrapper, list: T[], el: T): boolean { +>remove : Symbol(ListWrapper.remove, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 80, 3)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 81, 16)) +>dit : Symbol(dit, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 81, 19)) +>ListWrapper : Symbol(ListWrapper, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 38, 1)) +>list : Symbol(list, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 81, 43)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 81, 16)) +>el : Symbol(el, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 81, 54)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 81, 16)) + + var index = list.indexOf(el); +>index : Symbol(index, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 82, 7)) +>list.indexOf : Symbol(Array.indexOf, Decl(lib.d.ts, --, --)) +>list : Symbol(list, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 81, 43)) +>indexOf : Symbol(Array.indexOf, Decl(lib.d.ts, --, --)) +>el : Symbol(el, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 81, 54)) + + if (index > -1) { +>index : Symbol(index, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 82, 7)) + + list.splice(index, 1); +>list.splice : Symbol(Array.splice, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>list : Symbol(list, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 81, 43)) +>splice : Symbol(Array.splice, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>index : Symbol(index, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 82, 7)) + + return true; + } + return false; + } + static clear(dit: typeof ListWrapper, list: any[]) { list.length = 0; } +>clear : Symbol(ListWrapper.clear, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 88, 3)) +>dit : Symbol(dit, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 89, 15)) +>ListWrapper : Symbol(ListWrapper, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 38, 1)) +>list : Symbol(list, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 89, 39)) +>list.length : Symbol(Array.length, Decl(lib.d.ts, --, --)) +>list : Symbol(list, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 89, 39)) +>length : Symbol(Array.length, Decl(lib.d.ts, --, --)) + + static isEmpty(dit: typeof ListWrapper, list: any[]): boolean { return list.length == 0; } +>isEmpty : Symbol(ListWrapper.isEmpty, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 89, 73)) +>dit : Symbol(dit, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 90, 17)) +>ListWrapper : Symbol(ListWrapper, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 38, 1)) +>list : Symbol(list, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 90, 41)) +>list.length : Symbol(Array.length, Decl(lib.d.ts, --, --)) +>list : Symbol(list, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 90, 41)) +>length : Symbol(Array.length, Decl(lib.d.ts, --, --)) + + static fill(dit: typeof ListWrapper, list: any[], value: any, start: number = 0, end: number = null) { +>fill : Symbol(ListWrapper.fill, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 90, 92)) +>dit : Symbol(dit, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 91, 14)) +>ListWrapper : Symbol(ListWrapper, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 38, 1)) +>list : Symbol(list, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 91, 38)) +>value : Symbol(value, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 91, 51)) +>start : Symbol(start, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 91, 63)) +>end : Symbol(end, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 91, 82)) + + list.fill(value, start, end === null ? list.length : end); +>list.fill : Symbol(Array.fill, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 138, 20)) +>list : Symbol(list, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 91, 38)) +>fill : Symbol(Array.fill, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 138, 20)) +>value : Symbol(value, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 91, 51)) +>start : Symbol(start, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 91, 63)) +>end : Symbol(end, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 91, 82)) +>list.length : Symbol(Array.length, Decl(lib.d.ts, --, --)) +>list : Symbol(list, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 91, 38)) +>length : Symbol(Array.length, Decl(lib.d.ts, --, --)) +>end : Symbol(end, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 91, 82)) + } + static equals(dit: typeof ListWrapper, a: any[], b: any[]): boolean { +>equals : Symbol(ListWrapper.equals, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 93, 3)) +>dit : Symbol(dit, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 94, 16)) +>ListWrapper : Symbol(ListWrapper, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 38, 1)) +>a : Symbol(a, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 94, 40)) +>b : Symbol(b, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 94, 50)) + + if (a.length != b.length) return false; +>a.length : Symbol(Array.length, Decl(lib.d.ts, --, --)) +>a : Symbol(a, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 94, 40)) +>length : Symbol(Array.length, Decl(lib.d.ts, --, --)) +>b.length : Symbol(Array.length, Decl(lib.d.ts, --, --)) +>b : Symbol(b, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 94, 50)) +>length : Symbol(Array.length, Decl(lib.d.ts, --, --)) + + for (var i = 0; i < a.length; ++i) { +>i : Symbol(i, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 96, 12)) +>i : Symbol(i, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 96, 12)) +>a.length : Symbol(Array.length, Decl(lib.d.ts, --, --)) +>a : Symbol(a, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 94, 40)) +>length : Symbol(Array.length, Decl(lib.d.ts, --, --)) +>i : Symbol(i, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 96, 12)) + + if (a[i] !== b[i]) return false; +>a : Symbol(a, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 94, 40)) +>i : Symbol(i, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 96, 12)) +>b : Symbol(b, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 94, 50)) +>i : Symbol(i, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 96, 12)) + } + return true; + } + static slice(dit: typeof ListWrapper, l: T[], from: number = 0, to: number = null): T[] { +>slice : Symbol(ListWrapper.slice, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 100, 3)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 101, 15)) +>dit : Symbol(dit, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 101, 18)) +>ListWrapper : Symbol(ListWrapper, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 38, 1)) +>l : Symbol(l, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 101, 42)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 101, 15)) +>from : Symbol(from, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 101, 50)) +>to : Symbol(to, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 101, 68)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 101, 15)) + + return l.slice(from, to === null ? undefined : to); +>l.slice : Symbol(Array.slice, Decl(lib.d.ts, --, --)) +>l : Symbol(l, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 101, 42)) +>slice : Symbol(Array.slice, Decl(lib.d.ts, --, --)) +>from : Symbol(from, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 101, 50)) +>to : Symbol(to, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 101, 68)) +>undefined : Symbol(undefined) +>to : Symbol(to, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 101, 68)) + } + static splice(dit: typeof ListWrapper, l: T[], from: number, length: number): T[] { return l.splice(from, length); } +>splice : Symbol(ListWrapper.splice, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 103, 3)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 104, 16)) +>dit : Symbol(dit, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 104, 19)) +>ListWrapper : Symbol(ListWrapper, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 38, 1)) +>l : Symbol(l, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 104, 43)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 104, 16)) +>from : Symbol(from, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 104, 51)) +>length : Symbol(length, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 104, 65)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 104, 16)) +>l.splice : Symbol(Array.splice, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>l : Symbol(l, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 104, 43)) +>splice : Symbol(Array.splice, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>from : Symbol(from, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 104, 51)) +>length : Symbol(length, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 104, 65)) + + static sort(dit: typeof ListWrapper, l: T[], compareFn?: (a: T, b: T) => number) { +>sort : Symbol(ListWrapper.sort, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 104, 121)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 105, 14)) +>dit : Symbol(dit, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 105, 17)) +>ListWrapper : Symbol(ListWrapper, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 38, 1)) +>l : Symbol(l, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 105, 41)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 105, 14)) +>compareFn : Symbol(compareFn, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 105, 49)) +>a : Symbol(a, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 105, 63)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 105, 14)) +>b : Symbol(b, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 105, 68)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 105, 14)) + + if (isPresent(compareFn)) { +>isPresent : Symbol(isPresent, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 136, 42)) +>compareFn : Symbol(compareFn, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 105, 49)) + + l.sort(compareFn); +>l.sort : Symbol(Array.sort, Decl(lib.d.ts, --, --)) +>l : Symbol(l, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 105, 41)) +>sort : Symbol(Array.sort, Decl(lib.d.ts, --, --)) +>compareFn : Symbol(compareFn, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 105, 49)) + + } else { + l.sort(); +>l.sort : Symbol(Array.sort, Decl(lib.d.ts, --, --)) +>l : Symbol(l, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 105, 41)) +>sort : Symbol(Array.sort, Decl(lib.d.ts, --, --)) + } + } + static toString(dit: typeof ListWrapper, l: T[]): string { return l.toString(); } +>toString : Symbol(ListWrapper.toString, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 111, 3)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 112, 18)) +>dit : Symbol(dit, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 112, 21)) +>ListWrapper : Symbol(ListWrapper, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 38, 1)) +>l : Symbol(l, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 112, 45)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 112, 18)) +>l.toString : Symbol(Array.toString, Decl(lib.d.ts, --, --)) +>l : Symbol(l, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 112, 45)) +>toString : Symbol(Array.toString, Decl(lib.d.ts, --, --)) + + static toJSON(dit: typeof ListWrapper, l: T[]): string { return JSON.stringify(l); } +>toJSON : Symbol(ListWrapper.toJSON, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 112, 86)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 113, 16)) +>dit : Symbol(dit, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 113, 19)) +>ListWrapper : Symbol(ListWrapper, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 38, 1)) +>l : Symbol(l, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 113, 43)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 113, 16)) +>JSON.stringify : Symbol(JSON.stringify, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>JSON : Symbol(JSON, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>stringify : Symbol(JSON.stringify, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>l : Symbol(l, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 113, 43)) + + static maximum(dit: typeof ListWrapper, list: T[], predicate: (t: T) => number): T { +>maximum : Symbol(ListWrapper.maximum, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 113, 89)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 115, 17)) +>dit : Symbol(dit, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 115, 20)) +>ListWrapper : Symbol(ListWrapper, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 38, 1)) +>list : Symbol(list, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 115, 44)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 115, 17)) +>predicate : Symbol(predicate, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 115, 55)) +>t : Symbol(t, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 115, 68)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 115, 17)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 115, 17)) + + if (list.length == 0) { +>list.length : Symbol(Array.length, Decl(lib.d.ts, --, --)) +>list : Symbol(list, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 115, 44)) +>length : Symbol(Array.length, Decl(lib.d.ts, --, --)) + + return null; + } + var solution: T = null; +>solution : Symbol(solution, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 119, 7)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 115, 17)) + + var maxValue = -Infinity; +>maxValue : Symbol(maxValue, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 120, 7)) +>Infinity : Symbol(Infinity, Decl(lib.d.ts, --, --)) + + for (var index = 0; index < list.length; index++) { +>index : Symbol(index, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 121, 12)) +>index : Symbol(index, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 121, 12)) +>list.length : Symbol(Array.length, Decl(lib.d.ts, --, --)) +>list : Symbol(list, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 115, 44)) +>length : Symbol(Array.length, Decl(lib.d.ts, --, --)) +>index : Symbol(index, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 121, 12)) + + var candidate = list[index]; +>candidate : Symbol(candidate, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 122, 9)) +>list : Symbol(list, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 115, 44)) +>index : Symbol(index, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 121, 12)) + + if (isBlank(candidate)) { +>isBlank : Symbol(isBlank, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 135, 55)) +>candidate : Symbol(candidate, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 122, 9)) + + continue; + } + var candidateValue = predicate(candidate); +>candidateValue : Symbol(candidateValue, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 126, 9)) +>predicate : Symbol(predicate, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 115, 55)) +>candidate : Symbol(candidate, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 122, 9)) + + if (candidateValue > maxValue) { +>candidateValue : Symbol(candidateValue, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 126, 9)) +>maxValue : Symbol(maxValue, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 120, 7)) + + solution = candidate; +>solution : Symbol(solution, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 119, 7)) +>candidate : Symbol(candidate, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 122, 9)) + + maxValue = candidateValue; +>maxValue : Symbol(maxValue, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 120, 7)) +>candidateValue : Symbol(candidateValue, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 126, 9)) + } + } + return solution; +>solution : Symbol(solution, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 119, 7)) + } +} +let cloned = ListWrapper.clone(ListWrapper, [1,2,3,4]); +>cloned : Symbol(cloned, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 135, 3)) +>ListWrapper.clone : Symbol(ListWrapper.clone, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 43, 101)) +>ListWrapper : Symbol(ListWrapper, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 38, 1)) +>clone : Symbol(ListWrapper.clone, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 43, 101)) +>ListWrapper : Symbol(ListWrapper, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 38, 1)) + +declare function isBlank(x: any): boolean; +>isBlank : Symbol(isBlank, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 135, 55)) +>x : Symbol(x, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 136, 25)) + +declare function isPresent(compareFn?: (a: T, b: T) => number): boolean; +>isPresent : Symbol(isPresent, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 136, 42)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 137, 27)) +>compareFn : Symbol(compareFn, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 137, 30)) +>a : Symbol(a, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 137, 43)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 137, 27)) +>b : Symbol(b, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 137, 48)) +>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 137, 27)) + +interface Array { +>Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 137, 75)) +>T : Symbol(T, Decl(lib.d.ts, --, --), Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 138, 16)) + + fill(value: any, start: number, end: number): void; +>fill : Symbol(Array.fill, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 138, 20)) +>value : Symbol(value, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 139, 6)) +>start : Symbol(start, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 139, 17)) +>end : Symbol(end, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 139, 32)) +} diff --git a/tests/baselines/reference/staticAnonymousTypeNotReferencingTypeParameter.types b/tests/baselines/reference/staticAnonymousTypeNotReferencingTypeParameter.types new file mode 100644 index 00000000000..90148bdbb19 --- /dev/null +++ b/tests/baselines/reference/staticAnonymousTypeNotReferencingTypeParameter.types @@ -0,0 +1,787 @@ +=== tests/cases/compiler/staticAnonymousTypeNotReferencingTypeParameter.ts === +// This test case is a condensed version of Angular 2's ListWrapper. Prior to #7448 +// this would cause the compiler to run out of memory. + +function outer(x: T) { +>outer : (x: T) => typeof Inner +>T : T +>x : T +>T : T + + class Inner { +>Inner : Inner + + static y: T = x; +>y : T +>T : T +>x : T + } + return Inner; +>Inner : typeof Inner +} +let y: number = outer(5).y; +>y : number +>outer(5).y : number +>outer(5) : typeof Inner +>outer : (x: T) => typeof Inner +>5 : number +>y : number + +class ListWrapper2 { +>ListWrapper2 : ListWrapper2 + + static clone(dit: typeof ListWrapper2, array: T[]): T[] { return array.slice(0); } +>clone : (dit: typeof ListWrapper2, array: T[]) => T[] +>T : T +>dit : typeof ListWrapper2 +>ListWrapper2 : typeof ListWrapper2 +>array : T[] +>T : T +>T : T +>array.slice(0) : T[] +>array.slice : (start?: number, end?: number) => T[] +>array : T[] +>slice : (start?: number, end?: number) => T[] +>0 : number + + static reversed(dit: typeof ListWrapper2, array: T[]): T[] { +>reversed : (dit: typeof ListWrapper2, array: T[]) => T[] +>T : T +>dit : typeof ListWrapper2 +>ListWrapper2 : typeof ListWrapper2 +>array : T[] +>T : T +>T : T + + var a = ListWrapper2.clone(dit, array); +>a : T[] +>ListWrapper2.clone(dit, array) : T[] +>ListWrapper2.clone : (dit: typeof ListWrapper2, array: T[]) => T[] +>ListWrapper2 : typeof ListWrapper2 +>clone : (dit: typeof ListWrapper2, array: T[]) => T[] +>dit : typeof ListWrapper2 +>array : T[] + + return a; +>a : T[] + } +} +namespace tessst { +>tessst : typeof tessst + + /** + * Iterates through 'array' by index and performs the callback on each element of array until the callback + * returns a truthy value, then returns that value. + * If no such value is found, the callback is applied to each element of array and undefined is returned. + */ + export function funkyFor(array: T[], callback: (element: T, index: number) => U): U { +>funkyFor : (array: T[], callback: (element: T, index: number) => U) => U +>T : T +>U : U +>array : T[] +>T : T +>callback : (element: T, index: number) => U +>element : T +>T : T +>index : number +>U : U +>U : U + + if (array) { +>array : T[] + + for (let i = 0, len = array.length; i < len; i++) { +>i : number +>0 : number +>len : number +>array.length : number +>array : T[] +>length : number +>i < len : boolean +>i : number +>len : number +>i++ : number +>i : number + + const result = callback(array[i], i); +>result : U +>callback(array[i], i) : U +>callback : (element: T, index: number) => U +>array[i] : T +>array : T[] +>i : number +>i : number + + if (result) { +>result : U + + return result; +>result : U + } + } + } + return undefined; +>undefined : undefined + } +} +interface Scanner { +>Scanner : Scanner + + scanRange(start: number, length: number, callback: () => T): T; +>scanRange : (start: number, length: number, callback: () => T) => T +>T : T +>start : number +>length : number +>callback : () => T +>T : T +>T : T +} +class ListWrapper { +>ListWrapper : ListWrapper + + // JS has no way to express a statically fixed size list, but dart does so we + // keep both methods. + static createFixedSize(dit: typeof ListWrapper, size: number): any[] { return new Array(size); } +>createFixedSize : (dit: typeof ListWrapper, size: number) => any[] +>dit : typeof ListWrapper +>ListWrapper : typeof ListWrapper +>size : number +>new Array(size) : any[] +>Array : ArrayConstructor +>size : number + + static createGrowableSize(dit: typeof ListWrapper, size: number): any[] { return new Array(size); } +>createGrowableSize : (dit: typeof ListWrapper, size: number) => any[] +>dit : typeof ListWrapper +>ListWrapper : typeof ListWrapper +>size : number +>new Array(size) : any[] +>Array : ArrayConstructor +>size : number + + static clone(dit: typeof ListWrapper, array: T[]): T[] { return array.slice(0); } +>clone : (dit: typeof ListWrapper, array: T[]) => T[] +>T : T +>dit : typeof ListWrapper +>ListWrapper : typeof ListWrapper +>array : T[] +>T : T +>T : T +>array.slice(0) : T[] +>array.slice : (start?: number, end?: number) => T[] +>array : T[] +>slice : (start?: number, end?: number) => T[] +>0 : number + + static forEachWithIndex(dit: typeof ListWrapper, array: T[], fn: (t: T, n: number) => void) { +>forEachWithIndex : (dit: typeof ListWrapper, array: T[], fn: (t: T, n: number) => void) => void +>T : T +>dit : typeof ListWrapper +>ListWrapper : typeof ListWrapper +>array : T[] +>T : T +>fn : (t: T, n: number) => void +>t : T +>T : T +>n : number + + for (var i = 0; i < array.length; i++) { +>i : number +>0 : number +>i < array.length : boolean +>i : number +>array.length : number +>array : T[] +>length : number +>i++ : number +>i : number + + fn(array[i], i); +>fn(array[i], i) : void +>fn : (t: T, n: number) => void +>array[i] : T +>array : T[] +>i : number +>i : number + } + } + static first(dit: typeof ListWrapper, array: T[]): T { +>first : (dit: typeof ListWrapper, array: T[]) => T +>T : T +>dit : typeof ListWrapper +>ListWrapper : typeof ListWrapper +>array : T[] +>T : T +>T : T + + if (!array) return null; +>!array : boolean +>array : T[] +>null : null + + return array[0]; +>array[0] : T +>array : T[] +>0 : number + } + static last(dit: typeof ListWrapper, array: T[]): T { +>last : (dit: typeof ListWrapper, array: T[]) => T +>T : T +>dit : typeof ListWrapper +>ListWrapper : typeof ListWrapper +>array : T[] +>T : T +>T : T + + if (!array || array.length == 0) return null; +>!array || array.length == 0 : boolean +>!array : boolean +>array : T[] +>array.length == 0 : boolean +>array.length : number +>array : T[] +>length : number +>0 : number +>null : null + + return array[array.length - 1]; +>array[array.length - 1] : T +>array : T[] +>array.length - 1 : number +>array.length : number +>array : T[] +>length : number +>1 : number + } + static indexOf(dit: typeof ListWrapper, array: T[], value: T, startIndex: number = 0): number { +>indexOf : (dit: typeof ListWrapper, array: T[], value: T, startIndex?: number) => number +>T : T +>dit : typeof ListWrapper +>ListWrapper : typeof ListWrapper +>array : T[] +>T : T +>value : T +>T : T +>startIndex : number +>0 : number + + return array.indexOf(value, startIndex); +>array.indexOf(value, startIndex) : number +>array.indexOf : (searchElement: T, fromIndex?: number) => number +>array : T[] +>indexOf : (searchElement: T, fromIndex?: number) => number +>value : T +>startIndex : number + } + static contains(dit: typeof ListWrapper, list: T[], el: T): boolean { return list.indexOf(el) !== -1; } +>contains : (dit: typeof ListWrapper, list: T[], el: T) => boolean +>T : T +>dit : typeof ListWrapper +>ListWrapper : typeof ListWrapper +>list : T[] +>T : T +>el : T +>T : T +>list.indexOf(el) !== -1 : boolean +>list.indexOf(el) : number +>list.indexOf : (searchElement: T, fromIndex?: number) => number +>list : T[] +>indexOf : (searchElement: T, fromIndex?: number) => number +>el : T +>-1 : number +>1 : number + + static reversed(dit: typeof ListWrapper, array: T[]): T[] { +>reversed : (dit: typeof ListWrapper, array: T[]) => T[] +>T : T +>dit : typeof ListWrapper +>ListWrapper : typeof ListWrapper +>array : T[] +>T : T +>T : T + + var a = ListWrapper.clone(dit, array); +>a : T[] +>ListWrapper.clone(dit, array) : T[] +>ListWrapper.clone : (dit: typeof ListWrapper, array: T[]) => T[] +>ListWrapper : typeof ListWrapper +>clone : (dit: typeof ListWrapper, array: T[]) => T[] +>dit : typeof ListWrapper +>array : T[] + + let scanner: Scanner; +>scanner : Scanner +>Scanner : Scanner + + scanner.scanRange(3, 5, () => { }); +>scanner.scanRange(3, 5, () => { }) : void +>scanner.scanRange : (start: number, length: number, callback: () => T) => T +>scanner : Scanner +>scanRange : (start: number, length: number, callback: () => T) => T +>3 : number +>5 : number +>() => { } : () => void + + return tessst.funkyFor(array, t => t.toString()) ? a.reverse() : a; +>tessst.funkyFor(array, t => t.toString()) ? a.reverse() : a : T[] +>tessst.funkyFor(array, t => t.toString()) : string +>tessst.funkyFor : (array: T[], callback: (element: T, index: number) => U) => U +>tessst : typeof tessst +>funkyFor : (array: T[], callback: (element: T, index: number) => U) => U +>array : T[] +>t => t.toString() : (t: T) => string +>t : T +>t.toString() : string +>t.toString : () => string +>t : T +>toString : () => string +>a.reverse() : T[] +>a.reverse : () => T[] +>a : T[] +>reverse : () => T[] +>a : T[] + } + static concat(dit: typeof ListWrapper, a: any[], b: any[]): any[] { return a.concat(b); } +>concat : (dit: typeof ListWrapper, a: any[], b: any[]) => any[] +>dit : typeof ListWrapper +>ListWrapper : typeof ListWrapper +>a : any[] +>b : any[] +>a.concat(b) : any[] +>a.concat : (...items: any[]) => any[] +>a : any[] +>concat : (...items: any[]) => any[] +>b : any[] + + static insert(dit: typeof ListWrapper, list: T[], index: number, value: T) { list.splice(index, 0, value); } +>insert : (dit: typeof ListWrapper, list: T[], index: number, value: T) => void +>T : T +>dit : typeof ListWrapper +>ListWrapper : typeof ListWrapper +>list : T[] +>T : T +>index : number +>value : T +>T : T +>list.splice(index, 0, value) : T[] +>list.splice : { (start: number): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; } +>list : T[] +>splice : { (start: number): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; } +>index : number +>0 : number +>value : T + + static removeAt(dit: typeof ListWrapper, list: T[], index: number): T { +>removeAt : (dit: typeof ListWrapper, list: T[], index: number) => T +>T : T +>dit : typeof ListWrapper +>ListWrapper : typeof ListWrapper +>list : T[] +>T : T +>index : number +>T : T + + var res = list[index]; +>res : T +>list[index] : T +>list : T[] +>index : number + + list.splice(index, 1); +>list.splice(index, 1) : T[] +>list.splice : { (start: number): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; } +>list : T[] +>splice : { (start: number): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; } +>index : number +>1 : number + + return res; +>res : T + } + static removeAll(dit: typeof ListWrapper, list: T[], items: T[]) { +>removeAll : (dit: typeof ListWrapper, list: T[], items: T[]) => void +>T : T +>dit : typeof ListWrapper +>ListWrapper : typeof ListWrapper +>list : T[] +>T : T +>items : T[] +>T : T + + for (var i = 0; i < items.length; ++i) { +>i : number +>0 : number +>i < items.length : boolean +>i : number +>items.length : number +>items : T[] +>length : number +>++i : number +>i : number + + var index = list.indexOf(items[i]); +>index : number +>list.indexOf(items[i]) : number +>list.indexOf : (searchElement: T, fromIndex?: number) => number +>list : T[] +>indexOf : (searchElement: T, fromIndex?: number) => number +>items[i] : T +>items : T[] +>i : number + + list.splice(index, 1); +>list.splice(index, 1) : T[] +>list.splice : { (start: number): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; } +>list : T[] +>splice : { (start: number): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; } +>index : number +>1 : number + } + } + static remove(dit: typeof ListWrapper, list: T[], el: T): boolean { +>remove : (dit: typeof ListWrapper, list: T[], el: T) => boolean +>T : T +>dit : typeof ListWrapper +>ListWrapper : typeof ListWrapper +>list : T[] +>T : T +>el : T +>T : T + + var index = list.indexOf(el); +>index : number +>list.indexOf(el) : number +>list.indexOf : (searchElement: T, fromIndex?: number) => number +>list : T[] +>indexOf : (searchElement: T, fromIndex?: number) => number +>el : T + + if (index > -1) { +>index > -1 : boolean +>index : number +>-1 : number +>1 : number + + list.splice(index, 1); +>list.splice(index, 1) : T[] +>list.splice : { (start: number): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; } +>list : T[] +>splice : { (start: number): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; } +>index : number +>1 : number + + return true; +>true : boolean + } + return false; +>false : boolean + } + static clear(dit: typeof ListWrapper, list: any[]) { list.length = 0; } +>clear : (dit: typeof ListWrapper, list: any[]) => void +>dit : typeof ListWrapper +>ListWrapper : typeof ListWrapper +>list : any[] +>list.length = 0 : number +>list.length : number +>list : any[] +>length : number +>0 : number + + static isEmpty(dit: typeof ListWrapper, list: any[]): boolean { return list.length == 0; } +>isEmpty : (dit: typeof ListWrapper, list: any[]) => boolean +>dit : typeof ListWrapper +>ListWrapper : typeof ListWrapper +>list : any[] +>list.length == 0 : boolean +>list.length : number +>list : any[] +>length : number +>0 : number + + static fill(dit: typeof ListWrapper, list: any[], value: any, start: number = 0, end: number = null) { +>fill : (dit: typeof ListWrapper, list: any[], value: any, start?: number, end?: number) => void +>dit : typeof ListWrapper +>ListWrapper : typeof ListWrapper +>list : any[] +>value : any +>start : number +>0 : number +>end : number +>null : null + + list.fill(value, start, end === null ? list.length : end); +>list.fill(value, start, end === null ? list.length : end) : void +>list.fill : (value: any, start: number, end: number) => void +>list : any[] +>fill : (value: any, start: number, end: number) => void +>value : any +>start : number +>end === null ? list.length : end : number +>end === null : boolean +>end : number +>null : null +>list.length : number +>list : any[] +>length : number +>end : number + } + static equals(dit: typeof ListWrapper, a: any[], b: any[]): boolean { +>equals : (dit: typeof ListWrapper, a: any[], b: any[]) => boolean +>dit : typeof ListWrapper +>ListWrapper : typeof ListWrapper +>a : any[] +>b : any[] + + if (a.length != b.length) return false; +>a.length != b.length : boolean +>a.length : number +>a : any[] +>length : number +>b.length : number +>b : any[] +>length : number +>false : boolean + + for (var i = 0; i < a.length; ++i) { +>i : number +>0 : number +>i < a.length : boolean +>i : number +>a.length : number +>a : any[] +>length : number +>++i : number +>i : number + + if (a[i] !== b[i]) return false; +>a[i] !== b[i] : boolean +>a[i] : any +>a : any[] +>i : number +>b[i] : any +>b : any[] +>i : number +>false : boolean + } + return true; +>true : boolean + } + static slice(dit: typeof ListWrapper, l: T[], from: number = 0, to: number = null): T[] { +>slice : (dit: typeof ListWrapper, l: T[], from?: number, to?: number) => T[] +>T : T +>dit : typeof ListWrapper +>ListWrapper : typeof ListWrapper +>l : T[] +>T : T +>from : number +>0 : number +>to : number +>null : null +>T : T + + return l.slice(from, to === null ? undefined : to); +>l.slice(from, to === null ? undefined : to) : T[] +>l.slice : (start?: number, end?: number) => T[] +>l : T[] +>slice : (start?: number, end?: number) => T[] +>from : number +>to === null ? undefined : to : number +>to === null : boolean +>to : number +>null : null +>undefined : undefined +>to : number + } + static splice(dit: typeof ListWrapper, l: T[], from: number, length: number): T[] { return l.splice(from, length); } +>splice : (dit: typeof ListWrapper, l: T[], from: number, length: number) => T[] +>T : T +>dit : typeof ListWrapper +>ListWrapper : typeof ListWrapper +>l : T[] +>T : T +>from : number +>length : number +>T : T +>l.splice(from, length) : T[] +>l.splice : { (start: number): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; } +>l : T[] +>splice : { (start: number): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; } +>from : number +>length : number + + static sort(dit: typeof ListWrapper, l: T[], compareFn?: (a: T, b: T) => number) { +>sort : (dit: typeof ListWrapper, l: T[], compareFn?: (a: T, b: T) => number) => void +>T : T +>dit : typeof ListWrapper +>ListWrapper : typeof ListWrapper +>l : T[] +>T : T +>compareFn : (a: T, b: T) => number +>a : T +>T : T +>b : T +>T : T + + if (isPresent(compareFn)) { +>isPresent(compareFn) : boolean +>isPresent : (compareFn?: (a: T, b: T) => number) => boolean +>compareFn : (a: T, b: T) => number + + l.sort(compareFn); +>l.sort(compareFn) : T[] +>l.sort : (compareFn?: (a: T, b: T) => number) => T[] +>l : T[] +>sort : (compareFn?: (a: T, b: T) => number) => T[] +>compareFn : (a: T, b: T) => number + + } else { + l.sort(); +>l.sort() : T[] +>l.sort : (compareFn?: (a: T, b: T) => number) => T[] +>l : T[] +>sort : (compareFn?: (a: T, b: T) => number) => T[] + } + } + static toString(dit: typeof ListWrapper, l: T[]): string { return l.toString(); } +>toString : (dit: typeof ListWrapper, l: T[]) => string +>T : T +>dit : typeof ListWrapper +>ListWrapper : typeof ListWrapper +>l : T[] +>T : T +>l.toString() : string +>l.toString : () => string +>l : T[] +>toString : () => string + + static toJSON(dit: typeof ListWrapper, l: T[]): string { return JSON.stringify(l); } +>toJSON : (dit: typeof ListWrapper, l: T[]) => string +>T : T +>dit : typeof ListWrapper +>ListWrapper : typeof ListWrapper +>l : T[] +>T : T +>JSON.stringify(l) : string +>JSON.stringify : { (value: any): string; (value: any, replacer: (key: string, value: any) => any): string; (value: any, replacer: any[]): string; (value: any, replacer: (key: string, value: any) => any, space: string | number): string; (value: any, replacer: any[], space: string | number): string; } +>JSON : JSON +>stringify : { (value: any): string; (value: any, replacer: (key: string, value: any) => any): string; (value: any, replacer: any[]): string; (value: any, replacer: (key: string, value: any) => any, space: string | number): string; (value: any, replacer: any[], space: string | number): string; } +>l : T[] + + static maximum(dit: typeof ListWrapper, list: T[], predicate: (t: T) => number): T { +>maximum : (dit: typeof ListWrapper, list: T[], predicate: (t: T) => number) => T +>T : T +>dit : typeof ListWrapper +>ListWrapper : typeof ListWrapper +>list : T[] +>T : T +>predicate : (t: T) => number +>t : T +>T : T +>T : T + + if (list.length == 0) { +>list.length == 0 : boolean +>list.length : number +>list : T[] +>length : number +>0 : number + + return null; +>null : null + } + var solution: T = null; +>solution : T +>T : T +>null : null + + var maxValue = -Infinity; +>maxValue : number +>-Infinity : number +>Infinity : number + + for (var index = 0; index < list.length; index++) { +>index : number +>0 : number +>index < list.length : boolean +>index : number +>list.length : number +>list : T[] +>length : number +>index++ : number +>index : number + + var candidate = list[index]; +>candidate : T +>list[index] : T +>list : T[] +>index : number + + if (isBlank(candidate)) { +>isBlank(candidate) : boolean +>isBlank : (x: any) => boolean +>candidate : T + + continue; + } + var candidateValue = predicate(candidate); +>candidateValue : number +>predicate(candidate) : number +>predicate : (t: T) => number +>candidate : T + + if (candidateValue > maxValue) { +>candidateValue > maxValue : boolean +>candidateValue : number +>maxValue : number + + solution = candidate; +>solution = candidate : T +>solution : T +>candidate : T + + maxValue = candidateValue; +>maxValue = candidateValue : number +>maxValue : number +>candidateValue : number + } + } + return solution; +>solution : T + } +} +let cloned = ListWrapper.clone(ListWrapper, [1,2,3,4]); +>cloned : number[] +>ListWrapper.clone(ListWrapper, [1,2,3,4]) : number[] +>ListWrapper.clone : (dit: typeof ListWrapper, array: T[]) => T[] +>ListWrapper : typeof ListWrapper +>clone : (dit: typeof ListWrapper, array: T[]) => T[] +>ListWrapper : typeof ListWrapper +>[1,2,3,4] : number[] +>1 : number +>2 : number +>3 : number +>4 : number + +declare function isBlank(x: any): boolean; +>isBlank : (x: any) => boolean +>x : any + +declare function isPresent(compareFn?: (a: T, b: T) => number): boolean; +>isPresent : (compareFn?: (a: T, b: T) => number) => boolean +>T : T +>compareFn : (a: T, b: T) => number +>a : T +>T : T +>b : T +>T : T + +interface Array { +>Array : T[] +>T : T + + fill(value: any, start: number, end: number): void; +>fill : (value: any, start: number, end: number) => void +>value : any +>start : number +>end : number +} diff --git a/tests/baselines/reference/staticFactory1.symbols b/tests/baselines/reference/staticFactory1.symbols index 1e3d1855813..d213ed20765 100644 --- a/tests/baselines/reference/staticFactory1.symbols +++ b/tests/baselines/reference/staticFactory1.symbols @@ -3,7 +3,7 @@ class Base { >Base : Symbol(Base, Decl(staticFactory1.ts, 0, 0)) foo() { return 1; } ->foo : Symbol(foo, Decl(staticFactory1.ts, 0, 12)) +>foo : Symbol(Base.foo, Decl(staticFactory1.ts, 0, 12)) static create() { >create : Symbol(Base.create, Decl(staticFactory1.ts, 1, 23)) @@ -18,7 +18,7 @@ class Derived extends Base { >Base : Symbol(Base, Decl(staticFactory1.ts, 0, 0)) foo() { return 2; } ->foo : Symbol(foo, Decl(staticFactory1.ts, 7, 28)) +>foo : Symbol(Derived.foo, Decl(staticFactory1.ts, 7, 28)) } var d = Derived.create(); >d : Symbol(d, Decl(staticFactory1.ts, 10, 3)) diff --git a/tests/baselines/reference/staticInheritance.symbols b/tests/baselines/reference/staticInheritance.symbols index 5ef080f96ac..35656ee75e3 100644 --- a/tests/baselines/reference/staticInheritance.symbols +++ b/tests/baselines/reference/staticInheritance.symbols @@ -11,7 +11,7 @@ class A { >n : Symbol(A.n, Decl(staticInheritance.ts, 1, 9)) p = doThing(A); // OK ->p : Symbol(p, Decl(staticInheritance.ts, 2, 21)) +>p : Symbol(A.p, Decl(staticInheritance.ts, 2, 21)) >doThing : Symbol(doThing, Decl(staticInheritance.ts, 0, 0)) >A : Symbol(A, Decl(staticInheritance.ts, 0, 38)) } @@ -20,12 +20,12 @@ class B extends A { >A : Symbol(A, Decl(staticInheritance.ts, 0, 38)) p1 = doThing(A); // OK ->p1 : Symbol(p1, Decl(staticInheritance.ts, 5, 19)) +>p1 : Symbol(B.p1, Decl(staticInheritance.ts, 5, 19)) >doThing : Symbol(doThing, Decl(staticInheritance.ts, 0, 0)) >A : Symbol(A, Decl(staticInheritance.ts, 0, 38)) p2 = doThing(B); // OK ->p2 : Symbol(p2, Decl(staticInheritance.ts, 6, 20)) +>p2 : Symbol(B.p2, Decl(staticInheritance.ts, 6, 20)) >doThing : Symbol(doThing, Decl(staticInheritance.ts, 0, 0)) >B : Symbol(B, Decl(staticInheritance.ts, 4, 1)) } diff --git a/tests/baselines/reference/staticInstanceResolution.symbols b/tests/baselines/reference/staticInstanceResolution.symbols index 1b58989347d..c7a3f935b3d 100644 --- a/tests/baselines/reference/staticInstanceResolution.symbols +++ b/tests/baselines/reference/staticInstanceResolution.symbols @@ -3,7 +3,7 @@ class Comment { >Comment : Symbol(Comment, Decl(staticInstanceResolution.ts, 0, 0)) public getDocCommentText() ->getDocCommentText : Symbol(getDocCommentText, Decl(staticInstanceResolution.ts, 0, 15)) +>getDocCommentText : Symbol(Comment.getDocCommentText, Decl(staticInstanceResolution.ts, 0, 15)) { } diff --git a/tests/baselines/reference/staticInterfaceAssignmentCompat.symbols b/tests/baselines/reference/staticInterfaceAssignmentCompat.symbols index d1c87faad74..4872a0c62fe 100644 --- a/tests/baselines/reference/staticInterfaceAssignmentCompat.symbols +++ b/tests/baselines/reference/staticInterfaceAssignmentCompat.symbols @@ -15,7 +15,7 @@ interface ShapeFactory { >ShapeFactory : Symbol(ShapeFactory, Decl(staticInterfaceAssignmentCompat.ts, 4, 1)) create(): Shape; ->create : Symbol(create, Decl(staticInterfaceAssignmentCompat.ts, 6, 24)) +>create : Symbol(ShapeFactory.create, Decl(staticInterfaceAssignmentCompat.ts, 6, 24)) >Shape : Symbol(Shape, Decl(staticInterfaceAssignmentCompat.ts, 0, 0)) } diff --git a/tests/baselines/reference/staticMemberWithStringAndNumberNames.symbols b/tests/baselines/reference/staticMemberWithStringAndNumberNames.symbols index 1ce1a12dd80..277a88ce38f 100644 --- a/tests/baselines/reference/staticMemberWithStringAndNumberNames.symbols +++ b/tests/baselines/reference/staticMemberWithStringAndNumberNames.symbols @@ -6,32 +6,32 @@ class C { static 0 = 1; x = C['foo']; ->x : Symbol(x, Decl(staticMemberWithStringAndNumberNames.ts, 2, 17)) +>x : Symbol(C.x, Decl(staticMemberWithStringAndNumberNames.ts, 2, 17)) >C : Symbol(C, Decl(staticMemberWithStringAndNumberNames.ts, 0, 0)) ->'foo' : Symbol(C."foo", Decl(staticMemberWithStringAndNumberNames.ts, 0, 9)) +>'foo' : Symbol(C["foo"], Decl(staticMemberWithStringAndNumberNames.ts, 0, 9)) x2 = C['0']; ->x2 : Symbol(x2, Decl(staticMemberWithStringAndNumberNames.ts, 4, 17)) +>x2 : Symbol(C.x2, Decl(staticMemberWithStringAndNumberNames.ts, 4, 17)) >C : Symbol(C, Decl(staticMemberWithStringAndNumberNames.ts, 0, 0)) ->'0' : Symbol(C.0, Decl(staticMemberWithStringAndNumberNames.ts, 1, 21)) +>'0' : Symbol(C[0], Decl(staticMemberWithStringAndNumberNames.ts, 1, 21)) x3 = C[0]; ->x3 : Symbol(x3, Decl(staticMemberWithStringAndNumberNames.ts, 5, 16)) +>x3 : Symbol(C.x3, Decl(staticMemberWithStringAndNumberNames.ts, 5, 16)) >C : Symbol(C, Decl(staticMemberWithStringAndNumberNames.ts, 0, 0)) ->0 : Symbol(C.0, Decl(staticMemberWithStringAndNumberNames.ts, 1, 21)) +>0 : Symbol(C[0], Decl(staticMemberWithStringAndNumberNames.ts, 1, 21)) static s = C['foo']; >s : Symbol(C.s, Decl(staticMemberWithStringAndNumberNames.ts, 6, 14)) >C : Symbol(C, Decl(staticMemberWithStringAndNumberNames.ts, 0, 0)) ->'foo' : Symbol(C."foo", Decl(staticMemberWithStringAndNumberNames.ts, 0, 9)) +>'foo' : Symbol(C["foo"], Decl(staticMemberWithStringAndNumberNames.ts, 0, 9)) static s2 = C['0']; >s2 : Symbol(C.s2, Decl(staticMemberWithStringAndNumberNames.ts, 8, 24)) >C : Symbol(C, Decl(staticMemberWithStringAndNumberNames.ts, 0, 0)) ->'0' : Symbol(C.0, Decl(staticMemberWithStringAndNumberNames.ts, 1, 21)) +>'0' : Symbol(C[0], Decl(staticMemberWithStringAndNumberNames.ts, 1, 21)) static s3 = C[0]; >s3 : Symbol(C.s3, Decl(staticMemberWithStringAndNumberNames.ts, 9, 23)) >C : Symbol(C, Decl(staticMemberWithStringAndNumberNames.ts, 0, 0)) ->0 : Symbol(C.0, Decl(staticMemberWithStringAndNumberNames.ts, 1, 21)) +>0 : Symbol(C[0], Decl(staticMemberWithStringAndNumberNames.ts, 1, 21)) } diff --git a/tests/baselines/reference/staticMethodWithTypeParameterExtendsClauseDeclFile.symbols b/tests/baselines/reference/staticMethodWithTypeParameterExtendsClauseDeclFile.symbols index b3658ceadcf..84fa0464051 100644 --- a/tests/baselines/reference/staticMethodWithTypeParameterExtendsClauseDeclFile.symbols +++ b/tests/baselines/reference/staticMethodWithTypeParameterExtendsClauseDeclFile.symbols @@ -16,7 +16,7 @@ export class publicClassWithWithPrivateTypeParameters { >privateClass : Symbol(privateClass, Decl(staticMethodWithTypeParameterExtendsClauseDeclFile.ts, 0, 0)) } private myPrivateMethod1() { // do not emit extends clause ->myPrivateMethod1 : Symbol(myPrivateMethod1, Decl(staticMethodWithTypeParameterExtendsClauseDeclFile.ts, 8, 5)) +>myPrivateMethod1 : Symbol(publicClassWithWithPrivateTypeParameters.myPrivateMethod1, Decl(staticMethodWithTypeParameterExtendsClauseDeclFile.ts, 8, 5)) >T : Symbol(T, Decl(staticMethodWithTypeParameterExtendsClauseDeclFile.ts, 9, 29)) >privateClass : Symbol(privateClass, Decl(staticMethodWithTypeParameterExtendsClauseDeclFile.ts, 0, 0)) } @@ -26,7 +26,7 @@ export class publicClassWithWithPrivateTypeParameters { >publicClass : Symbol(publicClass, Decl(staticMethodWithTypeParameterExtendsClauseDeclFile.ts, 1, 1)) } private myPrivateMethod2() { // do not emit extends clause ->myPrivateMethod2 : Symbol(myPrivateMethod2, Decl(staticMethodWithTypeParameterExtendsClauseDeclFile.ts, 12, 5)) +>myPrivateMethod2 : Symbol(publicClassWithWithPrivateTypeParameters.myPrivateMethod2, Decl(staticMethodWithTypeParameterExtendsClauseDeclFile.ts, 12, 5)) >T : Symbol(T, Decl(staticMethodWithTypeParameterExtendsClauseDeclFile.ts, 13, 29)) >publicClass : Symbol(publicClass, Decl(staticMethodWithTypeParameterExtendsClauseDeclFile.ts, 1, 1)) } @@ -36,7 +36,7 @@ export class publicClassWithWithPrivateTypeParameters { >publicClass : Symbol(publicClass, Decl(staticMethodWithTypeParameterExtendsClauseDeclFile.ts, 1, 1)) } public myPublicMethod() { ->myPublicMethod : Symbol(myPublicMethod, Decl(staticMethodWithTypeParameterExtendsClauseDeclFile.ts, 16, 5)) +>myPublicMethod : Symbol(publicClassWithWithPrivateTypeParameters.myPublicMethod, Decl(staticMethodWithTypeParameterExtendsClauseDeclFile.ts, 16, 5)) >T : Symbol(T, Decl(staticMethodWithTypeParameterExtendsClauseDeclFile.ts, 17, 26)) >publicClass : Symbol(publicClass, Decl(staticMethodWithTypeParameterExtendsClauseDeclFile.ts, 1, 1)) } diff --git a/tests/baselines/reference/staticPropertyAndFunctionWithSameName.symbols b/tests/baselines/reference/staticPropertyAndFunctionWithSameName.symbols index 02d7b5690e2..bde100cec76 100644 --- a/tests/baselines/reference/staticPropertyAndFunctionWithSameName.symbols +++ b/tests/baselines/reference/staticPropertyAndFunctionWithSameName.symbols @@ -6,7 +6,7 @@ class C { >f : Symbol(C.f, Decl(staticPropertyAndFunctionWithSameName.ts, 0, 9)) f: number; ->f : Symbol(f, Decl(staticPropertyAndFunctionWithSameName.ts, 1, 21)) +>f : Symbol(C.f, Decl(staticPropertyAndFunctionWithSameName.ts, 1, 21)) } class D { @@ -16,5 +16,5 @@ class D { >f : Symbol(D.f, Decl(staticPropertyAndFunctionWithSameName.ts, 5, 9)) f() { } ->f : Symbol(f, Decl(staticPropertyAndFunctionWithSameName.ts, 6, 21)) +>f : Symbol(D.f, Decl(staticPropertyAndFunctionWithSameName.ts, 6, 21)) } diff --git a/tests/baselines/reference/strictModeUseContextualKeyword.symbols b/tests/baselines/reference/strictModeUseContextualKeyword.symbols index a0a3182b9c6..a27477bfa99 100644 --- a/tests/baselines/reference/strictModeUseContextualKeyword.symbols +++ b/tests/baselines/reference/strictModeUseContextualKeyword.symbols @@ -11,7 +11,7 @@ class C { >C : Symbol(C, Decl(strictModeUseContextualKeyword.ts, 2, 28)) public as() { } ->as : Symbol(as, Decl(strictModeUseContextualKeyword.ts, 3, 9)) +>as : Symbol(C.as, Decl(strictModeUseContextualKeyword.ts, 3, 9)) } function F() { >F : Symbol(F, Decl(strictModeUseContextualKeyword.ts, 5, 1)) diff --git a/tests/baselines/reference/stringIncludes.symbols b/tests/baselines/reference/stringIncludes.symbols index 1f1b2e55ccf..5b2bf4b7afa 100644 --- a/tests/baselines/reference/stringIncludes.symbols +++ b/tests/baselines/reference/stringIncludes.symbols @@ -5,11 +5,11 @@ var includes: boolean; includes = "abcde".includes("cd"); >includes : Symbol(includes, Decl(stringIncludes.ts, 1, 3)) ->"abcde".includes : Symbol(String.includes, Decl(lib.d.ts, --, --)) ->includes : Symbol(String.includes, Decl(lib.d.ts, --, --)) +>"abcde".includes : Symbol(String.includes, Decl(lib.es2015.core.d.ts, --, --)) +>includes : Symbol(String.includes, Decl(lib.es2015.core.d.ts, --, --)) includes = "abcde".includes("cd", 2); >includes : Symbol(includes, Decl(stringIncludes.ts, 1, 3)) ->"abcde".includes : Symbol(String.includes, Decl(lib.d.ts, --, --)) ->includes : Symbol(String.includes, Decl(lib.d.ts, --, --)) +>"abcde".includes : Symbol(String.includes, Decl(lib.es2015.core.d.ts, --, --)) +>includes : Symbol(String.includes, Decl(lib.es2015.core.d.ts, --, --)) diff --git a/tests/baselines/reference/stringIndexingResults.symbols b/tests/baselines/reference/stringIndexingResults.symbols index 4890b44bce6..34771ab49ab 100644 --- a/tests/baselines/reference/stringIndexingResults.symbols +++ b/tests/baselines/reference/stringIndexingResults.symbols @@ -6,7 +6,7 @@ class C { >x : Symbol(x, Decl(stringIndexingResults.ts, 1, 5)) y = ''; ->y : Symbol(y, Decl(stringIndexingResults.ts, 1, 24)) +>y : Symbol(C.y, Decl(stringIndexingResults.ts, 1, 24)) } var c: C; @@ -33,7 +33,7 @@ interface I { >x : Symbol(x, Decl(stringIndexingResults.ts, 11, 5)) y: string; ->y : Symbol(y, Decl(stringIndexingResults.ts, 11, 24)) +>y : Symbol(I.y, Decl(stringIndexingResults.ts, 11, 24)) } var i: I diff --git a/tests/baselines/reference/stringLiteralTypeIsSubtypeOfString.symbols b/tests/baselines/reference/stringLiteralTypeIsSubtypeOfString.symbols index 1a49a6a6c47..e97b2a59118 100644 --- a/tests/baselines/reference/stringLiteralTypeIsSubtypeOfString.symbols +++ b/tests/baselines/reference/stringLiteralTypeIsSubtypeOfString.symbols @@ -84,7 +84,7 @@ function f7(x: 'a'); function f7(x: Date); >f7 : Symbol(f7, Decl(stringLiteralTypeIsSubtypeOfString.ts, 27, 23), Decl(stringLiteralTypeIsSubtypeOfString.ts, 29, 20), Decl(stringLiteralTypeIsSubtypeOfString.ts, 30, 21)) >x : Symbol(x, Decl(stringLiteralTypeIsSubtypeOfString.ts, 30, 12)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function f7(x: any) { } >f7 : Symbol(f7, Decl(stringLiteralTypeIsSubtypeOfString.ts, 27, 23), Decl(stringLiteralTypeIsSubtypeOfString.ts, 29, 20), Decl(stringLiteralTypeIsSubtypeOfString.ts, 30, 21)) @@ -117,90 +117,90 @@ function f9(x: any) { } class C implements String { >C : Symbol(C, Decl(stringLiteralTypeIsSubtypeOfString.ts, 39, 23)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) toString(): string { return null; } ->toString : Symbol(toString, Decl(stringLiteralTypeIsSubtypeOfString.ts, 41, 27)) +>toString : Symbol(C.toString, Decl(stringLiteralTypeIsSubtypeOfString.ts, 41, 27)) charAt(pos: number): string { return null; } ->charAt : Symbol(charAt, Decl(stringLiteralTypeIsSubtypeOfString.ts, 42, 39)) +>charAt : Symbol(C.charAt, Decl(stringLiteralTypeIsSubtypeOfString.ts, 42, 39)) >pos : Symbol(pos, Decl(stringLiteralTypeIsSubtypeOfString.ts, 43, 11)) charCodeAt(index: number): number { return null; } ->charCodeAt : Symbol(charCodeAt, Decl(stringLiteralTypeIsSubtypeOfString.ts, 43, 48)) +>charCodeAt : Symbol(C.charCodeAt, Decl(stringLiteralTypeIsSubtypeOfString.ts, 43, 48)) >index : Symbol(index, Decl(stringLiteralTypeIsSubtypeOfString.ts, 44, 15)) concat(...strings: string[]): string { return null; } ->concat : Symbol(concat, Decl(stringLiteralTypeIsSubtypeOfString.ts, 44, 54)) +>concat : Symbol(C.concat, Decl(stringLiteralTypeIsSubtypeOfString.ts, 44, 54)) >strings : Symbol(strings, Decl(stringLiteralTypeIsSubtypeOfString.ts, 45, 11)) indexOf(searchString: string, position?: number): number { return null; } ->indexOf : Symbol(indexOf, Decl(stringLiteralTypeIsSubtypeOfString.ts, 45, 57)) +>indexOf : Symbol(C.indexOf, Decl(stringLiteralTypeIsSubtypeOfString.ts, 45, 57)) >searchString : Symbol(searchString, Decl(stringLiteralTypeIsSubtypeOfString.ts, 46, 12)) >position : Symbol(position, Decl(stringLiteralTypeIsSubtypeOfString.ts, 46, 33)) lastIndexOf(searchString: string, position?: number): number { return null; } ->lastIndexOf : Symbol(lastIndexOf, Decl(stringLiteralTypeIsSubtypeOfString.ts, 46, 77)) +>lastIndexOf : Symbol(C.lastIndexOf, Decl(stringLiteralTypeIsSubtypeOfString.ts, 46, 77)) >searchString : Symbol(searchString, Decl(stringLiteralTypeIsSubtypeOfString.ts, 47, 16)) >position : Symbol(position, Decl(stringLiteralTypeIsSubtypeOfString.ts, 47, 37)) localeCompare(that: string): number { return null; } ->localeCompare : Symbol(localeCompare, Decl(stringLiteralTypeIsSubtypeOfString.ts, 47, 81)) +>localeCompare : Symbol(C.localeCompare, Decl(stringLiteralTypeIsSubtypeOfString.ts, 47, 81)) >that : Symbol(that, Decl(stringLiteralTypeIsSubtypeOfString.ts, 48, 18)) match(regexp: any): string[] { return null; } ->match : Symbol(match, Decl(stringLiteralTypeIsSubtypeOfString.ts, 48, 56)) +>match : Symbol(C.match, Decl(stringLiteralTypeIsSubtypeOfString.ts, 48, 56)) >regexp : Symbol(regexp, Decl(stringLiteralTypeIsSubtypeOfString.ts, 49, 10)) replace(searchValue: any, replaceValue: any): string { return null; } ->replace : Symbol(replace, Decl(stringLiteralTypeIsSubtypeOfString.ts, 49, 49)) +>replace : Symbol(C.replace, Decl(stringLiteralTypeIsSubtypeOfString.ts, 49, 49)) >searchValue : Symbol(searchValue, Decl(stringLiteralTypeIsSubtypeOfString.ts, 50, 12)) >replaceValue : Symbol(replaceValue, Decl(stringLiteralTypeIsSubtypeOfString.ts, 50, 29)) search(regexp: any): number { return null; } ->search : Symbol(search, Decl(stringLiteralTypeIsSubtypeOfString.ts, 50, 73)) +>search : Symbol(C.search, Decl(stringLiteralTypeIsSubtypeOfString.ts, 50, 73)) >regexp : Symbol(regexp, Decl(stringLiteralTypeIsSubtypeOfString.ts, 51, 11)) slice(start?: number, end?: number): string { return null; } ->slice : Symbol(slice, Decl(stringLiteralTypeIsSubtypeOfString.ts, 51, 48)) +>slice : Symbol(C.slice, Decl(stringLiteralTypeIsSubtypeOfString.ts, 51, 48)) >start : Symbol(start, Decl(stringLiteralTypeIsSubtypeOfString.ts, 52, 10)) >end : Symbol(end, Decl(stringLiteralTypeIsSubtypeOfString.ts, 52, 25)) split(separator: any, limit?: number): string[] { return null; } ->split : Symbol(split, Decl(stringLiteralTypeIsSubtypeOfString.ts, 52, 64)) +>split : Symbol(C.split, Decl(stringLiteralTypeIsSubtypeOfString.ts, 52, 64)) >separator : Symbol(separator, Decl(stringLiteralTypeIsSubtypeOfString.ts, 53, 10)) >limit : Symbol(limit, Decl(stringLiteralTypeIsSubtypeOfString.ts, 53, 25)) substring(start: number, end?: number): string { return null; } ->substring : Symbol(substring, Decl(stringLiteralTypeIsSubtypeOfString.ts, 53, 68)) +>substring : Symbol(C.substring, Decl(stringLiteralTypeIsSubtypeOfString.ts, 53, 68)) >start : Symbol(start, Decl(stringLiteralTypeIsSubtypeOfString.ts, 54, 14)) >end : Symbol(end, Decl(stringLiteralTypeIsSubtypeOfString.ts, 54, 28)) toLowerCase(): string { return null; } ->toLowerCase : Symbol(toLowerCase, Decl(stringLiteralTypeIsSubtypeOfString.ts, 54, 67)) +>toLowerCase : Symbol(C.toLowerCase, Decl(stringLiteralTypeIsSubtypeOfString.ts, 54, 67)) toLocaleLowerCase(): string { return null; } ->toLocaleLowerCase : Symbol(toLocaleLowerCase, Decl(stringLiteralTypeIsSubtypeOfString.ts, 55, 42)) +>toLocaleLowerCase : Symbol(C.toLocaleLowerCase, Decl(stringLiteralTypeIsSubtypeOfString.ts, 55, 42)) toUpperCase(): string { return null; } ->toUpperCase : Symbol(toUpperCase, Decl(stringLiteralTypeIsSubtypeOfString.ts, 56, 48)) +>toUpperCase : Symbol(C.toUpperCase, Decl(stringLiteralTypeIsSubtypeOfString.ts, 56, 48)) toLocaleUpperCase(): string { return null; } ->toLocaleUpperCase : Symbol(toLocaleUpperCase, Decl(stringLiteralTypeIsSubtypeOfString.ts, 57, 42)) +>toLocaleUpperCase : Symbol(C.toLocaleUpperCase, Decl(stringLiteralTypeIsSubtypeOfString.ts, 57, 42)) trim(): string { return null; } ->trim : Symbol(trim, Decl(stringLiteralTypeIsSubtypeOfString.ts, 58, 48)) +>trim : Symbol(C.trim, Decl(stringLiteralTypeIsSubtypeOfString.ts, 58, 48)) length: number; ->length : Symbol(length, Decl(stringLiteralTypeIsSubtypeOfString.ts, 59, 35)) +>length : Symbol(C.length, Decl(stringLiteralTypeIsSubtypeOfString.ts, 59, 35)) substr(from: number, length?: number): string { return null; } ->substr : Symbol(substr, Decl(stringLiteralTypeIsSubtypeOfString.ts, 60, 19)) +>substr : Symbol(C.substr, Decl(stringLiteralTypeIsSubtypeOfString.ts, 60, 19)) >from : Symbol(from, Decl(stringLiteralTypeIsSubtypeOfString.ts, 61, 11)) >length : Symbol(length, Decl(stringLiteralTypeIsSubtypeOfString.ts, 61, 24)) valueOf(): string { return null; } ->valueOf : Symbol(valueOf, Decl(stringLiteralTypeIsSubtypeOfString.ts, 61, 66)) +>valueOf : Symbol(C.valueOf, Decl(stringLiteralTypeIsSubtypeOfString.ts, 61, 66)) [index: number]: string; >index : Symbol(index, Decl(stringLiteralTypeIsSubtypeOfString.ts, 63, 5)) @@ -222,10 +222,10 @@ function f10(x: any) { } interface I extends String { >I : Symbol(I, Decl(stringLiteralTypeIsSubtypeOfString.ts, 69, 24)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) foo: string; ->foo : Symbol(foo, Decl(stringLiteralTypeIsSubtypeOfString.ts, 71, 28)) +>foo : Symbol(I.foo, Decl(stringLiteralTypeIsSubtypeOfString.ts, 71, 28)) } // BUG 831846 @@ -261,20 +261,20 @@ function f12(x: any) { } function f13(x: 'a'); >f13 : Symbol(f13, Decl(stringLiteralTypeIsSubtypeOfString.ts, 82, 27), Decl(stringLiteralTypeIsSubtypeOfString.ts, 84, 39), Decl(stringLiteralTypeIsSubtypeOfString.ts, 85, 37)) >T : Symbol(T, Decl(stringLiteralTypeIsSubtypeOfString.ts, 84, 13)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >x : Symbol(x, Decl(stringLiteralTypeIsSubtypeOfString.ts, 84, 31)) function f13(x: T); >f13 : Symbol(f13, Decl(stringLiteralTypeIsSubtypeOfString.ts, 82, 27), Decl(stringLiteralTypeIsSubtypeOfString.ts, 84, 39), Decl(stringLiteralTypeIsSubtypeOfString.ts, 85, 37)) >T : Symbol(T, Decl(stringLiteralTypeIsSubtypeOfString.ts, 85, 13)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >x : Symbol(x, Decl(stringLiteralTypeIsSubtypeOfString.ts, 85, 31)) >T : Symbol(T, Decl(stringLiteralTypeIsSubtypeOfString.ts, 85, 13)) function f13(x: any) { } >f13 : Symbol(f13, Decl(stringLiteralTypeIsSubtypeOfString.ts, 82, 27), Decl(stringLiteralTypeIsSubtypeOfString.ts, 84, 39), Decl(stringLiteralTypeIsSubtypeOfString.ts, 85, 37)) >T : Symbol(T, Decl(stringLiteralTypeIsSubtypeOfString.ts, 86, 13)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >x : Symbol(x, Decl(stringLiteralTypeIsSubtypeOfString.ts, 86, 31)) enum E { A } @@ -319,7 +319,7 @@ function f15(x: any) { } function f16(x: 'a'); >f16 : Symbol(f16, Decl(stringLiteralTypeIsSubtypeOfString.ts, 95, 40), Decl(stringLiteralTypeIsSubtypeOfString.ts, 97, 52), Decl(stringLiteralTypeIsSubtypeOfString.ts, 98, 50)) >T : Symbol(T, Decl(stringLiteralTypeIsSubtypeOfString.ts, 97, 13)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >U : Symbol(U, Decl(stringLiteralTypeIsSubtypeOfString.ts, 97, 30)) >T : Symbol(T, Decl(stringLiteralTypeIsSubtypeOfString.ts, 97, 13)) >x : Symbol(x, Decl(stringLiteralTypeIsSubtypeOfString.ts, 97, 44)) @@ -327,7 +327,7 @@ function f16(x: 'a'); function f16(x: U); >f16 : Symbol(f16, Decl(stringLiteralTypeIsSubtypeOfString.ts, 95, 40), Decl(stringLiteralTypeIsSubtypeOfString.ts, 97, 52), Decl(stringLiteralTypeIsSubtypeOfString.ts, 98, 50)) >T : Symbol(T, Decl(stringLiteralTypeIsSubtypeOfString.ts, 98, 13)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >U : Symbol(U, Decl(stringLiteralTypeIsSubtypeOfString.ts, 98, 30)) >T : Symbol(T, Decl(stringLiteralTypeIsSubtypeOfString.ts, 98, 13)) >x : Symbol(x, Decl(stringLiteralTypeIsSubtypeOfString.ts, 98, 44)) @@ -336,7 +336,7 @@ function f16(x: U); function f16(x: any) { } >f16 : Symbol(f16, Decl(stringLiteralTypeIsSubtypeOfString.ts, 95, 40), Decl(stringLiteralTypeIsSubtypeOfString.ts, 97, 52), Decl(stringLiteralTypeIsSubtypeOfString.ts, 98, 50)) >T : Symbol(T, Decl(stringLiteralTypeIsSubtypeOfString.ts, 99, 13)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >U : Symbol(U, Decl(stringLiteralTypeIsSubtypeOfString.ts, 99, 30)) >T : Symbol(T, Decl(stringLiteralTypeIsSubtypeOfString.ts, 99, 13)) >x : Symbol(x, Decl(stringLiteralTypeIsSubtypeOfString.ts, 99, 44)) diff --git a/tests/baselines/reference/stringLiteralTypesAndTuples01.types b/tests/baselines/reference/stringLiteralTypesAndTuples01.types index c874973e3e5..e8b5b37a2dd 100644 --- a/tests/baselines/reference/stringLiteralTypesAndTuples01.types +++ b/tests/baselines/reference/stringLiteralTypesAndTuples01.types @@ -28,7 +28,7 @@ let [im, a, dinosaur]: ["I'm", "a", RexOrRaptor] = ['I\'m', 'a', 't-rex']; rawr(dinosaur); >rawr(dinosaur) : string >rawr : (dino: "t-rex" | "raptor") => string ->dinosaur : "t-rex" | "raptor" +>dinosaur : "t-rex" function rawr(dino: RexOrRaptor) { >rawr : (dino: "t-rex" | "raptor") => string diff --git a/tests/baselines/reference/stringLiteralTypesAsTags01.symbols b/tests/baselines/reference/stringLiteralTypesAsTags01.symbols index afdeeff71a6..f092e1f7a50 100644 --- a/tests/baselines/reference/stringLiteralTypesAsTags01.symbols +++ b/tests/baselines/reference/stringLiteralTypesAsTags01.symbols @@ -7,7 +7,7 @@ interface Entity { >Entity : Symbol(Entity, Decl(stringLiteralTypesAsTags01.ts, 1, 21)) kind: Kind; ->kind : Symbol(kind, Decl(stringLiteralTypesAsTags01.ts, 3, 18)) +>kind : Symbol(Entity.kind, Decl(stringLiteralTypesAsTags01.ts, 3, 18)) >Kind : Symbol(Kind, Decl(stringLiteralTypesAsTags01.ts, 0, 0)) } @@ -16,10 +16,10 @@ interface A extends Entity { >Entity : Symbol(Entity, Decl(stringLiteralTypesAsTags01.ts, 1, 21)) kind: "A"; ->kind : Symbol(kind, Decl(stringLiteralTypesAsTags01.ts, 7, 28)) +>kind : Symbol(A.kind, Decl(stringLiteralTypesAsTags01.ts, 7, 28)) a: number; ->a : Symbol(a, Decl(stringLiteralTypesAsTags01.ts, 8, 14)) +>a : Symbol(A.a, Decl(stringLiteralTypesAsTags01.ts, 8, 14)) } interface B extends Entity { @@ -27,10 +27,10 @@ interface B extends Entity { >Entity : Symbol(Entity, Decl(stringLiteralTypesAsTags01.ts, 1, 21)) kind: "B"; ->kind : Symbol(kind, Decl(stringLiteralTypesAsTags01.ts, 12, 28)) +>kind : Symbol(B.kind, Decl(stringLiteralTypesAsTags01.ts, 12, 28)) b: string; ->b : Symbol(b, Decl(stringLiteralTypesAsTags01.ts, 13, 14)) +>b : Symbol(B.b, Decl(stringLiteralTypesAsTags01.ts, 13, 14)) } function hasKind(entity: Entity, kind: "A"): entity is A; diff --git a/tests/baselines/reference/stringLiteralTypesAsTags01.types b/tests/baselines/reference/stringLiteralTypesAsTags01.types index a7f403e76ec..9f273cf93a9 100644 --- a/tests/baselines/reference/stringLiteralTypesAsTags01.types +++ b/tests/baselines/reference/stringLiteralTypesAsTags01.types @@ -116,6 +116,6 @@ if (!hasKind(x, "B")) { } else { let d = x; ->d : A ->x : A +>d : nothing +>x : nothing } diff --git a/tests/baselines/reference/stringLiteralTypesAsTags02.symbols b/tests/baselines/reference/stringLiteralTypesAsTags02.symbols index 61d50230993..1cf73015ea7 100644 --- a/tests/baselines/reference/stringLiteralTypesAsTags02.symbols +++ b/tests/baselines/reference/stringLiteralTypesAsTags02.symbols @@ -7,7 +7,7 @@ interface Entity { >Entity : Symbol(Entity, Decl(stringLiteralTypesAsTags02.ts, 1, 21)) kind: Kind; ->kind : Symbol(kind, Decl(stringLiteralTypesAsTags02.ts, 3, 18)) +>kind : Symbol(Entity.kind, Decl(stringLiteralTypesAsTags02.ts, 3, 18)) >Kind : Symbol(Kind, Decl(stringLiteralTypesAsTags02.ts, 0, 0)) } @@ -16,10 +16,10 @@ interface A extends Entity { >Entity : Symbol(Entity, Decl(stringLiteralTypesAsTags02.ts, 1, 21)) kind: "A"; ->kind : Symbol(kind, Decl(stringLiteralTypesAsTags02.ts, 7, 28)) +>kind : Symbol(A.kind, Decl(stringLiteralTypesAsTags02.ts, 7, 28)) a: number; ->a : Symbol(a, Decl(stringLiteralTypesAsTags02.ts, 8, 14)) +>a : Symbol(A.a, Decl(stringLiteralTypesAsTags02.ts, 8, 14)) } interface B extends Entity { @@ -27,10 +27,10 @@ interface B extends Entity { >Entity : Symbol(Entity, Decl(stringLiteralTypesAsTags02.ts, 1, 21)) kind: "B"; ->kind : Symbol(kind, Decl(stringLiteralTypesAsTags02.ts, 12, 28)) +>kind : Symbol(B.kind, Decl(stringLiteralTypesAsTags02.ts, 12, 28)) b: string; ->b : Symbol(b, Decl(stringLiteralTypesAsTags02.ts, 13, 14)) +>b : Symbol(B.b, Decl(stringLiteralTypesAsTags02.ts, 13, 14)) } function hasKind(entity: Entity, kind: "A"): entity is A; diff --git a/tests/baselines/reference/stringLiteralTypesAsTags02.types b/tests/baselines/reference/stringLiteralTypesAsTags02.types index edad220b086..bcfa74ef55f 100644 --- a/tests/baselines/reference/stringLiteralTypesAsTags02.types +++ b/tests/baselines/reference/stringLiteralTypesAsTags02.types @@ -110,6 +110,6 @@ if (!hasKind(x, "B")) { } else { let d = x; ->d : A ->x : A +>d : nothing +>x : nothing } diff --git a/tests/baselines/reference/stringLiteralTypesAsTags03.symbols b/tests/baselines/reference/stringLiteralTypesAsTags03.symbols index 3694daf8e00..6f7e522d55b 100644 --- a/tests/baselines/reference/stringLiteralTypesAsTags03.symbols +++ b/tests/baselines/reference/stringLiteralTypesAsTags03.symbols @@ -7,7 +7,7 @@ interface Entity { >Entity : Symbol(Entity, Decl(stringLiteralTypesAsTags03.ts, 1, 21)) kind: Kind; ->kind : Symbol(kind, Decl(stringLiteralTypesAsTags03.ts, 3, 18)) +>kind : Symbol(Entity.kind, Decl(stringLiteralTypesAsTags03.ts, 3, 18)) >Kind : Symbol(Kind, Decl(stringLiteralTypesAsTags03.ts, 0, 0)) } @@ -16,10 +16,10 @@ interface A extends Entity { >Entity : Symbol(Entity, Decl(stringLiteralTypesAsTags03.ts, 1, 21)) kind: "A"; ->kind : Symbol(kind, Decl(stringLiteralTypesAsTags03.ts, 7, 28)) +>kind : Symbol(A.kind, Decl(stringLiteralTypesAsTags03.ts, 7, 28)) a: number; ->a : Symbol(a, Decl(stringLiteralTypesAsTags03.ts, 8, 14)) +>a : Symbol(A.a, Decl(stringLiteralTypesAsTags03.ts, 8, 14)) } interface B extends Entity { @@ -27,10 +27,10 @@ interface B extends Entity { >Entity : Symbol(Entity, Decl(stringLiteralTypesAsTags03.ts, 1, 21)) kind: "B"; ->kind : Symbol(kind, Decl(stringLiteralTypesAsTags03.ts, 12, 28)) +>kind : Symbol(B.kind, Decl(stringLiteralTypesAsTags03.ts, 12, 28)) b: string; ->b : Symbol(b, Decl(stringLiteralTypesAsTags03.ts, 13, 14)) +>b : Symbol(B.b, Decl(stringLiteralTypesAsTags03.ts, 13, 14)) } // Currently (2015-12-14), we write '"A" | "A"' and '"B" | "B"' to avoid diff --git a/tests/baselines/reference/stringLiteralTypesAsTags03.types b/tests/baselines/reference/stringLiteralTypesAsTags03.types index 25816659388..c7fdfc7152e 100644 --- a/tests/baselines/reference/stringLiteralTypesAsTags03.types +++ b/tests/baselines/reference/stringLiteralTypesAsTags03.types @@ -113,6 +113,6 @@ if (!hasKind(x, "B")) { } else { let d = x; ->d : A ->x : A +>d : nothing +>x : nothing } diff --git a/tests/baselines/reference/stringLiteralTypesInImplementationSignatures.symbols b/tests/baselines/reference/stringLiteralTypesInImplementationSignatures.symbols index 6f764b5c271..769ba4715f8 100644 --- a/tests/baselines/reference/stringLiteralTypesInImplementationSignatures.symbols +++ b/tests/baselines/reference/stringLiteralTypesInImplementationSignatures.symbols @@ -19,7 +19,7 @@ class C { >C : Symbol(C, Decl(stringLiteralTypesInImplementationSignatures.ts, 4, 34)) foo(x: 'hi') { } ->foo : Symbol(foo, Decl(stringLiteralTypesInImplementationSignatures.ts, 6, 9)) +>foo : Symbol(C.foo, Decl(stringLiteralTypesInImplementationSignatures.ts, 6, 9)) >x : Symbol(x, Decl(stringLiteralTypesInImplementationSignatures.ts, 7, 8)) } @@ -30,7 +30,7 @@ interface I { >x : Symbol(x, Decl(stringLiteralTypesInImplementationSignatures.ts, 11, 5)) foo(x: 'hi', y: 'hi'); ->foo : Symbol(foo, Decl(stringLiteralTypesInImplementationSignatures.ts, 11, 14)) +>foo : Symbol(I.foo, Decl(stringLiteralTypesInImplementationSignatures.ts, 11, 14)) >x : Symbol(x, Decl(stringLiteralTypesInImplementationSignatures.ts, 12, 8)) >y : Symbol(y, Decl(stringLiteralTypesInImplementationSignatures.ts, 12, 16)) } diff --git a/tests/baselines/reference/stringLiteralTypesInUnionTypes01.js b/tests/baselines/reference/stringLiteralTypesInUnionTypes01.js index d970310d68e..bdf06d393aa 100644 --- a/tests/baselines/reference/stringLiteralTypesInUnionTypes01.js +++ b/tests/baselines/reference/stringLiteralTypesInUnionTypes01.js @@ -2,8 +2,8 @@ type T = "foo" | "bar" | "baz"; -var x: "foo" | "bar" | "baz" = "foo"; -var y: T = "bar"; +var x: "foo" | "bar" | "baz" = undefined; +var y: T = undefined; if (x === "foo") { let a = x; @@ -21,8 +21,8 @@ x = y; y = x; //// [stringLiteralTypesInUnionTypes01.js] -var x = "foo"; -var y = "bar"; +var x = undefined; +var y = undefined; if (x === "foo") { var a = x; } diff --git a/tests/baselines/reference/stringLiteralTypesInUnionTypes01.symbols b/tests/baselines/reference/stringLiteralTypesInUnionTypes01.symbols index c608929383e..15a8db13cd0 100644 --- a/tests/baselines/reference/stringLiteralTypesInUnionTypes01.symbols +++ b/tests/baselines/reference/stringLiteralTypesInUnionTypes01.symbols @@ -3,12 +3,14 @@ type T = "foo" | "bar" | "baz"; >T : Symbol(T, Decl(stringLiteralTypesInUnionTypes01.ts, 0, 0)) -var x: "foo" | "bar" | "baz" = "foo"; +var x: "foo" | "bar" | "baz" = undefined; >x : Symbol(x, Decl(stringLiteralTypesInUnionTypes01.ts, 3, 3)) +>undefined : Symbol(undefined) -var y: T = "bar"; +var y: T = undefined; >y : Symbol(y, Decl(stringLiteralTypesInUnionTypes01.ts, 4, 3)) >T : Symbol(T, Decl(stringLiteralTypesInUnionTypes01.ts, 0, 0)) +>undefined : Symbol(undefined) if (x === "foo") { >x : Symbol(x, Decl(stringLiteralTypesInUnionTypes01.ts, 3, 3)) diff --git a/tests/baselines/reference/stringLiteralTypesInUnionTypes01.types b/tests/baselines/reference/stringLiteralTypesInUnionTypes01.types index e5ff509822b..7201aaa91ca 100644 --- a/tests/baselines/reference/stringLiteralTypesInUnionTypes01.types +++ b/tests/baselines/reference/stringLiteralTypesInUnionTypes01.types @@ -3,14 +3,14 @@ type T = "foo" | "bar" | "baz"; >T : "foo" | "bar" | "baz" -var x: "foo" | "bar" | "baz" = "foo"; +var x: "foo" | "bar" | "baz" = undefined; >x : "foo" | "bar" | "baz" ->"foo" : "foo" +>undefined : undefined -var y: T = "bar"; +var y: T = undefined; >y : "foo" | "bar" | "baz" >T : "foo" | "bar" | "baz" ->"bar" : "bar" +>undefined : undefined if (x === "foo") { >x === "foo" : boolean diff --git a/tests/baselines/reference/stringLiteralTypesInUnionTypes02.js b/tests/baselines/reference/stringLiteralTypesInUnionTypes02.js index 19b9c837c9d..bca25e744c9 100644 --- a/tests/baselines/reference/stringLiteralTypesInUnionTypes02.js +++ b/tests/baselines/reference/stringLiteralTypesInUnionTypes02.js @@ -2,8 +2,8 @@ type T = string | "foo" | "bar" | "baz"; -var x: "foo" | "bar" | "baz" | string = "foo"; -var y: T = "bar"; +var x: "foo" | "bar" | "baz" | string = undefined; +var y: T = undefined; if (x === "foo") { let a = x; @@ -21,8 +21,8 @@ x = y; y = x; //// [stringLiteralTypesInUnionTypes02.js] -var x = "foo"; -var y = "bar"; +var x = undefined; +var y = undefined; if (x === "foo") { var a = x; } diff --git a/tests/baselines/reference/stringLiteralTypesInUnionTypes02.symbols b/tests/baselines/reference/stringLiteralTypesInUnionTypes02.symbols index c9b31dc710a..c35b7a0691b 100644 --- a/tests/baselines/reference/stringLiteralTypesInUnionTypes02.symbols +++ b/tests/baselines/reference/stringLiteralTypesInUnionTypes02.symbols @@ -3,12 +3,14 @@ type T = string | "foo" | "bar" | "baz"; >T : Symbol(T, Decl(stringLiteralTypesInUnionTypes02.ts, 0, 0)) -var x: "foo" | "bar" | "baz" | string = "foo"; +var x: "foo" | "bar" | "baz" | string = undefined; >x : Symbol(x, Decl(stringLiteralTypesInUnionTypes02.ts, 3, 3)) +>undefined : Symbol(undefined) -var y: T = "bar"; +var y: T = undefined; >y : Symbol(y, Decl(stringLiteralTypesInUnionTypes02.ts, 4, 3)) >T : Symbol(T, Decl(stringLiteralTypesInUnionTypes02.ts, 0, 0)) +>undefined : Symbol(undefined) if (x === "foo") { >x : Symbol(x, Decl(stringLiteralTypesInUnionTypes02.ts, 3, 3)) diff --git a/tests/baselines/reference/stringLiteralTypesInUnionTypes02.types b/tests/baselines/reference/stringLiteralTypesInUnionTypes02.types index b468c620376..242248617e0 100644 --- a/tests/baselines/reference/stringLiteralTypesInUnionTypes02.types +++ b/tests/baselines/reference/stringLiteralTypesInUnionTypes02.types @@ -3,60 +3,60 @@ type T = string | "foo" | "bar" | "baz"; >T : string | "foo" | "bar" | "baz" -var x: "foo" | "bar" | "baz" | string = "foo"; +var x: "foo" | "bar" | "baz" | string = undefined; >x : "foo" | "bar" | "baz" | string ->"foo" : "foo" +>undefined : undefined -var y: T = "bar"; +var y: T = undefined; >y : string | "foo" | "bar" | "baz" >T : string | "foo" | "bar" | "baz" ->"bar" : "bar" +>undefined : undefined if (x === "foo") { >x === "foo" : boolean ->x : "foo" | "bar" | "baz" | string +>x : string >"foo" : string let a = x; ->a : "foo" | "bar" | "baz" | string ->x : "foo" | "bar" | "baz" | string +>a : string +>x : string } else if (x !== "bar") { >x !== "bar" : boolean ->x : "foo" | "bar" | "baz" | string +>x : string >"bar" : string let b = x || y; >b : string >x || y : string ->x : "foo" | "bar" | "baz" | string ->y : string | "foo" | "bar" | "baz" +>x : string +>y : string } else { let c = x; ->c : "foo" | "bar" | "baz" | string ->x : "foo" | "bar" | "baz" | string +>c : string +>x : string let d = y; ->d : string | "foo" | "bar" | "baz" ->y : string | "foo" | "bar" | "baz" +>d : string +>y : string let e: (typeof x) | (typeof y) = c || d; ->e : "foo" | "bar" | "baz" | string ->x : "foo" | "bar" | "baz" | string ->y : string | "foo" | "bar" | "baz" +>e : string +>x : string +>y : string >c || d : string ->c : "foo" | "bar" | "baz" | string ->d : string | "foo" | "bar" | "baz" +>c : string +>d : string } x = y; ->x = y : string | "foo" | "bar" | "baz" +>x = y : string >x : "foo" | "bar" | "baz" | string ->y : string | "foo" | "bar" | "baz" +>y : string y = x; ->y = x : "foo" | "bar" | "baz" | string +>y = x : string >y : string | "foo" | "bar" | "baz" ->x : "foo" | "bar" | "baz" | string +>x : string diff --git a/tests/baselines/reference/stringLiteralTypesInUnionTypes03.js b/tests/baselines/reference/stringLiteralTypesInUnionTypes03.js index f6728e0b2fb..6264c99c13d 100644 --- a/tests/baselines/reference/stringLiteralTypesInUnionTypes03.js +++ b/tests/baselines/reference/stringLiteralTypesInUnionTypes03.js @@ -3,7 +3,7 @@ type T = number | "foo" | "bar"; var x: "foo" | "bar" | number; -var y: T = "bar"; +var y: T = undefined; if (x === "foo") { let a = x; @@ -22,7 +22,7 @@ y = x; //// [stringLiteralTypesInUnionTypes03.js] var x; -var y = "bar"; +var y = undefined; if (x === "foo") { var a = x; } diff --git a/tests/baselines/reference/stringLiteralTypesInUnionTypes03.symbols b/tests/baselines/reference/stringLiteralTypesInUnionTypes03.symbols index df5498d9a59..6d519e24225 100644 --- a/tests/baselines/reference/stringLiteralTypesInUnionTypes03.symbols +++ b/tests/baselines/reference/stringLiteralTypesInUnionTypes03.symbols @@ -6,9 +6,10 @@ type T = number | "foo" | "bar"; var x: "foo" | "bar" | number; >x : Symbol(x, Decl(stringLiteralTypesInUnionTypes03.ts, 3, 3)) -var y: T = "bar"; +var y: T = undefined; >y : Symbol(y, Decl(stringLiteralTypesInUnionTypes03.ts, 4, 3)) >T : Symbol(T, Decl(stringLiteralTypesInUnionTypes03.ts, 0, 0)) +>undefined : Symbol(undefined) if (x === "foo") { >x : Symbol(x, Decl(stringLiteralTypesInUnionTypes03.ts, 3, 3)) diff --git a/tests/baselines/reference/stringLiteralTypesInUnionTypes03.types b/tests/baselines/reference/stringLiteralTypesInUnionTypes03.types index 5fca6e69be9..920f7e1a71c 100644 --- a/tests/baselines/reference/stringLiteralTypesInUnionTypes03.types +++ b/tests/baselines/reference/stringLiteralTypesInUnionTypes03.types @@ -6,10 +6,10 @@ type T = number | "foo" | "bar"; var x: "foo" | "bar" | number; >x : "foo" | "bar" | number -var y: T = "bar"; +var y: T = undefined; >y : number | "foo" | "bar" >T : number | "foo" | "bar" ->"bar" : "bar" +>undefined : undefined if (x === "foo") { >x === "foo" : boolean diff --git a/tests/baselines/reference/stringLiteralTypesInUnionTypes04.js b/tests/baselines/reference/stringLiteralTypesInUnionTypes04.js index dc6cf51ad1e..85c9a30c49d 100644 --- a/tests/baselines/reference/stringLiteralTypesInUnionTypes04.js +++ b/tests/baselines/reference/stringLiteralTypesInUnionTypes04.js @@ -2,8 +2,8 @@ type T = "" | "foo"; -let x: T = ""; -let y: T = "foo"; +let x: T = undefined; +let y: T = undefined; if (x === "") { let a = x; @@ -38,8 +38,8 @@ if (!!!x) { } //// [stringLiteralTypesInUnionTypes04.js] -var x = ""; -var y = "foo"; +var x = undefined; +var y = undefined; if (x === "") { var a = x; } diff --git a/tests/baselines/reference/stringLiteralTypesInUnionTypes04.symbols b/tests/baselines/reference/stringLiteralTypesInUnionTypes04.symbols index ced93fcefc9..9904fa8613f 100644 --- a/tests/baselines/reference/stringLiteralTypesInUnionTypes04.symbols +++ b/tests/baselines/reference/stringLiteralTypesInUnionTypes04.symbols @@ -3,13 +3,15 @@ type T = "" | "foo"; >T : Symbol(T, Decl(stringLiteralTypesInUnionTypes04.ts, 0, 0)) -let x: T = ""; +let x: T = undefined; >x : Symbol(x, Decl(stringLiteralTypesInUnionTypes04.ts, 3, 3)) >T : Symbol(T, Decl(stringLiteralTypesInUnionTypes04.ts, 0, 0)) +>undefined : Symbol(undefined) -let y: T = "foo"; +let y: T = undefined; >y : Symbol(y, Decl(stringLiteralTypesInUnionTypes04.ts, 4, 3)) >T : Symbol(T, Decl(stringLiteralTypesInUnionTypes04.ts, 0, 0)) +>undefined : Symbol(undefined) if (x === "") { >x : Symbol(x, Decl(stringLiteralTypesInUnionTypes04.ts, 3, 3)) diff --git a/tests/baselines/reference/stringLiteralTypesInUnionTypes04.types b/tests/baselines/reference/stringLiteralTypesInUnionTypes04.types index ad92dc360d0..fdaaa21b6cb 100644 --- a/tests/baselines/reference/stringLiteralTypesInUnionTypes04.types +++ b/tests/baselines/reference/stringLiteralTypesInUnionTypes04.types @@ -3,15 +3,15 @@ type T = "" | "foo"; >T : "" | "foo" -let x: T = ""; +let x: T = undefined; >x : "" | "foo" >T : "" | "foo" ->"" : "" +>undefined : undefined -let y: T = "foo"; +let y: T = undefined; >y : "" | "foo" >T : "" | "foo" ->"foo" : "foo" +>undefined : undefined if (x === "") { >x === "" : boolean diff --git a/tests/baselines/reference/stringLiteralTypesOverloadAssignability01.errors.txt b/tests/baselines/reference/stringLiteralTypesOverloadAssignability01.errors.txt index 4c66c2000f9..8010b31a9d0 100644 --- a/tests/baselines/reference/stringLiteralTypesOverloadAssignability01.errors.txt +++ b/tests/baselines/reference/stringLiteralTypesOverloadAssignability01.errors.txt @@ -1,9 +1,9 @@ tests/cases/conformance/types/stringLiteral/stringLiteralTypesOverloadAssignability01.ts(15,1): error TS2322: Type '(x: "bar") => number' is not assignable to type '(x: "foo") => number'. Types of parameters 'x' and 'x' are incompatible. - Type '"bar"' is not assignable to type '"foo"'. + Type '"foo"' is not assignable to type '"bar"'. tests/cases/conformance/types/stringLiteral/stringLiteralTypesOverloadAssignability01.ts(16,1): error TS2322: Type '(x: "foo") => number' is not assignable to type '(x: "bar") => number'. Types of parameters 'x' and 'x' are incompatible. - Type '"foo"' is not assignable to type '"bar"'. + Type '"bar"' is not assignable to type '"foo"'. ==== tests/cases/conformance/types/stringLiteral/stringLiteralTypesOverloadAssignability01.ts (2 errors) ==== @@ -25,9 +25,9 @@ tests/cases/conformance/types/stringLiteral/stringLiteralTypesOverloadAssignabil ~ !!! error TS2322: Type '(x: "bar") => number' is not assignable to type '(x: "foo") => number'. !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type '"bar"' is not assignable to type '"foo"'. +!!! error TS2322: Type '"foo"' is not assignable to type '"bar"'. b = a; ~ !!! error TS2322: Type '(x: "foo") => number' is not assignable to type '(x: "bar") => number'. !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type '"foo"' is not assignable to type '"bar"'. \ No newline at end of file +!!! error TS2322: Type '"bar"' is not assignable to type '"foo"'. \ No newline at end of file diff --git a/tests/baselines/reference/stringLiteralTypesOverloadAssignability02.errors.txt b/tests/baselines/reference/stringLiteralTypesOverloadAssignability02.errors.txt index 952fd7aae86..8fe5a676aab 100644 --- a/tests/baselines/reference/stringLiteralTypesOverloadAssignability02.errors.txt +++ b/tests/baselines/reference/stringLiteralTypesOverloadAssignability02.errors.txt @@ -1,9 +1,9 @@ tests/cases/conformance/types/stringLiteral/stringLiteralTypesOverloadAssignability02.ts(15,1): error TS2322: Type '(x: "bar") => number' is not assignable to type '(x: "foo") => number'. Types of parameters 'x' and 'x' are incompatible. - Type '"bar"' is not assignable to type '"foo"'. + Type '"foo"' is not assignable to type '"bar"'. tests/cases/conformance/types/stringLiteral/stringLiteralTypesOverloadAssignability02.ts(16,1): error TS2322: Type '(x: "foo") => number' is not assignable to type '(x: "bar") => number'. Types of parameters 'x' and 'x' are incompatible. - Type '"foo"' is not assignable to type '"bar"'. + Type '"bar"' is not assignable to type '"foo"'. ==== tests/cases/conformance/types/stringLiteral/stringLiteralTypesOverloadAssignability02.ts (2 errors) ==== @@ -25,9 +25,9 @@ tests/cases/conformance/types/stringLiteral/stringLiteralTypesOverloadAssignabil ~ !!! error TS2322: Type '(x: "bar") => number' is not assignable to type '(x: "foo") => number'. !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type '"bar"' is not assignable to type '"foo"'. +!!! error TS2322: Type '"foo"' is not assignable to type '"bar"'. b = a; ~ !!! error TS2322: Type '(x: "foo") => number' is not assignable to type '(x: "bar") => number'. !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type '"foo"' is not assignable to type '"bar"'. \ No newline at end of file +!!! error TS2322: Type '"bar"' is not assignable to type '"foo"'. \ No newline at end of file diff --git a/tests/baselines/reference/stringLiteralTypesOverloads03.symbols b/tests/baselines/reference/stringLiteralTypesOverloads03.symbols index a0a48de790f..277cc7e84e3 100644 --- a/tests/baselines/reference/stringLiteralTypesOverloads03.symbols +++ b/tests/baselines/reference/stringLiteralTypesOverloads03.symbols @@ -4,10 +4,10 @@ interface Base { >Base : Symbol(Base, Decl(stringLiteralTypesOverloads03.ts, 0, 0)) x: string; ->x : Symbol(x, Decl(stringLiteralTypesOverloads03.ts, 1, 16)) +>x : Symbol(Base.x, Decl(stringLiteralTypesOverloads03.ts, 1, 16)) y: number; ->y : Symbol(y, Decl(stringLiteralTypesOverloads03.ts, 2, 14)) +>y : Symbol(Base.y, Decl(stringLiteralTypesOverloads03.ts, 2, 14)) } interface HelloOrWorld extends Base { @@ -15,7 +15,7 @@ interface HelloOrWorld extends Base { >Base : Symbol(Base, Decl(stringLiteralTypesOverloads03.ts, 0, 0)) p1: boolean; ->p1 : Symbol(p1, Decl(stringLiteralTypesOverloads03.ts, 6, 37)) +>p1 : Symbol(HelloOrWorld.p1, Decl(stringLiteralTypesOverloads03.ts, 6, 37)) } interface JustHello extends Base { @@ -23,7 +23,7 @@ interface JustHello extends Base { >Base : Symbol(Base, Decl(stringLiteralTypesOverloads03.ts, 0, 0)) p2: boolean; ->p2 : Symbol(p2, Decl(stringLiteralTypesOverloads03.ts, 10, 34)) +>p2 : Symbol(JustHello.p2, Decl(stringLiteralTypesOverloads03.ts, 10, 34)) } interface JustWorld extends Base { @@ -31,7 +31,7 @@ interface JustWorld extends Base { >Base : Symbol(Base, Decl(stringLiteralTypesOverloads03.ts, 0, 0)) p3: boolean; ->p3 : Symbol(p3, Decl(stringLiteralTypesOverloads03.ts, 14, 34)) +>p3 : Symbol(JustWorld.p3, Decl(stringLiteralTypesOverloads03.ts, 14, 34)) } let hello: "hello"; diff --git a/tests/baselines/reference/stringLiteralTypesTypePredicates01.js b/tests/baselines/reference/stringLiteralTypesTypePredicates01.js index fd4129d272d..fdd03c83aa5 100644 --- a/tests/baselines/reference/stringLiteralTypesTypePredicates01.js +++ b/tests/baselines/reference/stringLiteralTypesTypePredicates01.js @@ -8,7 +8,7 @@ function kindIs(kind: Kind, is: Kind): boolean { return kind === is; } -var x: Kind = "A"; +var x: Kind = undefined; if (kindIs(x, "A")) { let a = x; @@ -28,7 +28,7 @@ else { function kindIs(kind, is) { return kind === is; } -var x = "A"; +var x = undefined; if (kindIs(x, "A")) { var a = x; } diff --git a/tests/baselines/reference/stringLiteralTypesTypePredicates01.symbols b/tests/baselines/reference/stringLiteralTypesTypePredicates01.symbols index 6b18cab7432..aea8c6ac262 100644 --- a/tests/baselines/reference/stringLiteralTypesTypePredicates01.symbols +++ b/tests/baselines/reference/stringLiteralTypesTypePredicates01.symbols @@ -29,9 +29,10 @@ function kindIs(kind: Kind, is: Kind): boolean { >is : Symbol(is, Decl(stringLiteralTypesTypePredicates01.ts, 5, 27)) } -var x: Kind = "A"; +var x: Kind = undefined; >x : Symbol(x, Decl(stringLiteralTypesTypePredicates01.ts, 9, 3)) >Kind : Symbol(Kind, Decl(stringLiteralTypesTypePredicates01.ts, 0, 0)) +>undefined : Symbol(undefined) if (kindIs(x, "A")) { >kindIs : Symbol(kindIs, Decl(stringLiteralTypesTypePredicates01.ts, 1, 21), Decl(stringLiteralTypesTypePredicates01.ts, 3, 50), Decl(stringLiteralTypesTypePredicates01.ts, 4, 50)) diff --git a/tests/baselines/reference/stringLiteralTypesTypePredicates01.types b/tests/baselines/reference/stringLiteralTypesTypePredicates01.types index 41da80afd30..4a765ea5312 100644 --- a/tests/baselines/reference/stringLiteralTypesTypePredicates01.types +++ b/tests/baselines/reference/stringLiteralTypesTypePredicates01.types @@ -30,10 +30,10 @@ function kindIs(kind: Kind, is: Kind): boolean { >is : "A" | "B" } -var x: Kind = "A"; +var x: Kind = undefined; >x : "A" | "B" >Kind : "A" | "B" ->"A" : "A" +>undefined : undefined if (kindIs(x, "A")) { >kindIs(x, "A") : boolean diff --git a/tests/baselines/reference/stringLiteralTypesWithVariousOperators02.errors.txt b/tests/baselines/reference/stringLiteralTypesWithVariousOperators02.errors.txt index 69dd6c2f6a9..92afe67df0c 100644 --- a/tests/baselines/reference/stringLiteralTypesWithVariousOperators02.errors.txt +++ b/tests/baselines/reference/stringLiteralTypesWithVariousOperators02.errors.txt @@ -7,9 +7,12 @@ tests/cases/conformance/types/stringLiteral/stringLiteralTypesWithVariousOperato tests/cases/conformance/types/stringLiteral/stringLiteralTypesWithVariousOperators02.ts(13,11): error TS2356: An arithmetic operand must be of type 'any', 'number' or an enum type. tests/cases/conformance/types/stringLiteral/stringLiteralTypesWithVariousOperators02.ts(14,9): error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type. tests/cases/conformance/types/stringLiteral/stringLiteralTypesWithVariousOperators02.ts(15,9): error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type. +tests/cases/conformance/types/stringLiteral/stringLiteralTypesWithVariousOperators02.ts(16,9): error TS2365: Operator '<' cannot be applied to types '"ABC"' and '"XYZ"'. +tests/cases/conformance/types/stringLiteral/stringLiteralTypesWithVariousOperators02.ts(17,9): error TS2365: Operator '===' cannot be applied to types '"ABC"' and '"XYZ"'. +tests/cases/conformance/types/stringLiteral/stringLiteralTypesWithVariousOperators02.ts(18,9): error TS2365: Operator '!=' cannot be applied to types '"ABC"' and '"XYZ"'. -==== tests/cases/conformance/types/stringLiteral/stringLiteralTypesWithVariousOperators02.ts (9 errors) ==== +==== tests/cases/conformance/types/stringLiteral/stringLiteralTypesWithVariousOperators02.ts (12 errors) ==== let abc: "ABC" = "ABC"; let xyz: "XYZ" = "XYZ"; @@ -44,5 +47,11 @@ tests/cases/conformance/types/stringLiteral/stringLiteralTypesWithVariousOperato ~~~~~~~~~~~~~~~~ !!! error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type. let j = abc < xyz; + ~~~~~~~~~ +!!! error TS2365: Operator '<' cannot be applied to types '"ABC"' and '"XYZ"'. let k = abc === xyz; - let l = abc != xyz; \ No newline at end of file + ~~~~~~~~~~~ +!!! error TS2365: Operator '===' cannot be applied to types '"ABC"' and '"XYZ"'. + let l = abc != xyz; + ~~~~~~~~~~ +!!! error TS2365: Operator '!=' cannot be applied to types '"ABC"' and '"XYZ"'. \ No newline at end of file diff --git a/tests/baselines/reference/stringNamedPropertyAccess.symbols b/tests/baselines/reference/stringNamedPropertyAccess.symbols index 583e5da06ed..961b03f6e04 100644 --- a/tests/baselines/reference/stringNamedPropertyAccess.symbols +++ b/tests/baselines/reference/stringNamedPropertyAccess.symbols @@ -12,12 +12,12 @@ var c: C; var r1 = c["a b"]; >r1 : Symbol(r1, Decl(stringNamedPropertyAccess.ts, 5, 3)) >c : Symbol(c, Decl(stringNamedPropertyAccess.ts, 4, 3)) ->"a b" : Symbol(C."a b", Decl(stringNamedPropertyAccess.ts, 0, 9)) +>"a b" : Symbol(C["a b"], Decl(stringNamedPropertyAccess.ts, 0, 9)) var r1b = C['c d']; >r1b : Symbol(r1b, Decl(stringNamedPropertyAccess.ts, 6, 3)) >C : Symbol(C, Decl(stringNamedPropertyAccess.ts, 0, 0)) ->'c d' : Symbol(C."c d", Decl(stringNamedPropertyAccess.ts, 1, 18)) +>'c d' : Symbol(C["c d"], Decl(stringNamedPropertyAccess.ts, 1, 18)) interface I { >I : Symbol(I, Decl(stringNamedPropertyAccess.ts, 6, 19)) @@ -31,7 +31,7 @@ var i: I; var r2 = i["a b"]; >r2 : Symbol(r2, Decl(stringNamedPropertyAccess.ts, 12, 3)) >i : Symbol(i, Decl(stringNamedPropertyAccess.ts, 11, 3)) ->"a b" : Symbol(I."a b", Decl(stringNamedPropertyAccess.ts, 8, 13)) +>"a b" : Symbol(I["a b"], Decl(stringNamedPropertyAccess.ts, 8, 13)) var a: { >a : Symbol(a, Decl(stringNamedPropertyAccess.ts, 14, 3)) diff --git a/tests/baselines/reference/stripInternal1.symbols b/tests/baselines/reference/stripInternal1.symbols index 2a71c1d9dbd..dd53f671bc9 100644 --- a/tests/baselines/reference/stripInternal1.symbols +++ b/tests/baselines/reference/stripInternal1.symbols @@ -4,9 +4,9 @@ class C { >C : Symbol(C, Decl(stripInternal1.ts, 0, 0)) foo(): void { } ->foo : Symbol(foo, Decl(stripInternal1.ts, 1, 9)) +>foo : Symbol(C.foo, Decl(stripInternal1.ts, 1, 9)) // @internal bar(): void { } ->bar : Symbol(bar, Decl(stripInternal1.ts, 2, 17)) +>bar : Symbol(C.bar, Decl(stripInternal1.ts, 2, 17)) } diff --git a/tests/baselines/reference/structural1.symbols b/tests/baselines/reference/structural1.symbols index 78330978cd4..c04668c992d 100644 --- a/tests/baselines/reference/structural1.symbols +++ b/tests/baselines/reference/structural1.symbols @@ -6,10 +6,10 @@ module M { >I : Symbol(I, Decl(structural1.ts, 0, 10)) salt:number; ->salt : Symbol(salt, Decl(structural1.ts, 1, 24)) +>salt : Symbol(I.salt, Decl(structural1.ts, 1, 24)) pepper:number; ->pepper : Symbol(pepper, Decl(structural1.ts, 2, 20)) +>pepper : Symbol(I.pepper, Decl(structural1.ts, 2, 20)) } export function f(i:I) { diff --git a/tests/baselines/reference/subtypesOfAny.symbols b/tests/baselines/reference/subtypesOfAny.symbols index 85f5186f705..5e5353e8c9d 100644 --- a/tests/baselines/reference/subtypesOfAny.symbols +++ b/tests/baselines/reference/subtypesOfAny.symbols @@ -8,7 +8,7 @@ interface I { >x : Symbol(x, Decl(subtypesOfAny.ts, 3, 5)) foo: any; ->foo : Symbol(foo, Decl(subtypesOfAny.ts, 3, 21)) +>foo : Symbol(I.foo, Decl(subtypesOfAny.ts, 3, 21)) } @@ -19,7 +19,7 @@ interface I2 { >x : Symbol(x, Decl(subtypesOfAny.ts, 9, 5)) foo: number; ->foo : Symbol(foo, Decl(subtypesOfAny.ts, 9, 21)) +>foo : Symbol(I2.foo, Decl(subtypesOfAny.ts, 9, 21)) } @@ -30,7 +30,7 @@ interface I3 { >x : Symbol(x, Decl(subtypesOfAny.ts, 15, 5)) foo: string; ->foo : Symbol(foo, Decl(subtypesOfAny.ts, 15, 21)) +>foo : Symbol(I3.foo, Decl(subtypesOfAny.ts, 15, 21)) } @@ -41,7 +41,7 @@ interface I4 { >x : Symbol(x, Decl(subtypesOfAny.ts, 21, 5)) foo: boolean; ->foo : Symbol(foo, Decl(subtypesOfAny.ts, 21, 21)) +>foo : Symbol(I4.foo, Decl(subtypesOfAny.ts, 21, 21)) } @@ -52,8 +52,8 @@ interface I5 { >x : Symbol(x, Decl(subtypesOfAny.ts, 27, 5)) foo: Date; ->foo : Symbol(foo, Decl(subtypesOfAny.ts, 27, 21)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>foo : Symbol(I5.foo, Decl(subtypesOfAny.ts, 27, 21)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) } @@ -64,7 +64,7 @@ interface I6 { >x : Symbol(x, Decl(subtypesOfAny.ts, 33, 5)) foo: RegExp; ->foo : Symbol(foo, Decl(subtypesOfAny.ts, 33, 21)) +>foo : Symbol(I6.foo, Decl(subtypesOfAny.ts, 33, 21)) >RegExp : Symbol(RegExp, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) } @@ -76,7 +76,7 @@ interface I7 { >x : Symbol(x, Decl(subtypesOfAny.ts, 39, 5)) foo: { bar: number }; ->foo : Symbol(foo, Decl(subtypesOfAny.ts, 39, 21)) +>foo : Symbol(I7.foo, Decl(subtypesOfAny.ts, 39, 21)) >bar : Symbol(bar, Decl(subtypesOfAny.ts, 40, 10)) } @@ -88,7 +88,7 @@ interface I8 { >x : Symbol(x, Decl(subtypesOfAny.ts, 45, 5)) foo: number[]; ->foo : Symbol(foo, Decl(subtypesOfAny.ts, 45, 21)) +>foo : Symbol(I8.foo, Decl(subtypesOfAny.ts, 45, 21)) } @@ -99,13 +99,13 @@ interface I9 { >x : Symbol(x, Decl(subtypesOfAny.ts, 51, 5)) foo: I8; ->foo : Symbol(foo, Decl(subtypesOfAny.ts, 51, 21)) +>foo : Symbol(I9.foo, Decl(subtypesOfAny.ts, 51, 21)) >I8 : Symbol(I8, Decl(subtypesOfAny.ts, 41, 1)) } class A { foo: number; } >A : Symbol(A, Decl(subtypesOfAny.ts, 53, 1)) ->foo : Symbol(foo, Decl(subtypesOfAny.ts, 55, 9)) +>foo : Symbol(A.foo, Decl(subtypesOfAny.ts, 55, 9)) interface I10 { >I10 : Symbol(I10, Decl(subtypesOfAny.ts, 55, 24)) @@ -114,14 +114,14 @@ interface I10 { >x : Symbol(x, Decl(subtypesOfAny.ts, 57, 5)) foo: A; ->foo : Symbol(foo, Decl(subtypesOfAny.ts, 57, 21)) +>foo : Symbol(I10.foo, Decl(subtypesOfAny.ts, 57, 21)) >A : Symbol(A, Decl(subtypesOfAny.ts, 53, 1)) } class A2 { foo: T; } >A2 : Symbol(A2, Decl(subtypesOfAny.ts, 59, 1)) >T : Symbol(T, Decl(subtypesOfAny.ts, 61, 9)) ->foo : Symbol(foo, Decl(subtypesOfAny.ts, 61, 13)) +>foo : Symbol(A2.foo, Decl(subtypesOfAny.ts, 61, 13)) >T : Symbol(T, Decl(subtypesOfAny.ts, 61, 9)) interface I11 { @@ -131,7 +131,7 @@ interface I11 { >x : Symbol(x, Decl(subtypesOfAny.ts, 63, 5)) foo: A2; ->foo : Symbol(foo, Decl(subtypesOfAny.ts, 63, 21)) +>foo : Symbol(I11.foo, Decl(subtypesOfAny.ts, 63, 21)) >A2 : Symbol(A2, Decl(subtypesOfAny.ts, 59, 1)) } @@ -143,7 +143,7 @@ interface I12 { >x : Symbol(x, Decl(subtypesOfAny.ts, 69, 5)) foo: (x) => number; ->foo : Symbol(foo, Decl(subtypesOfAny.ts, 69, 21)) +>foo : Symbol(I12.foo, Decl(subtypesOfAny.ts, 69, 21)) >x : Symbol(x, Decl(subtypesOfAny.ts, 70, 10)) } @@ -155,7 +155,7 @@ interface I13 { >x : Symbol(x, Decl(subtypesOfAny.ts, 75, 5)) foo: (x:T) => T; ->foo : Symbol(foo, Decl(subtypesOfAny.ts, 75, 21)) +>foo : Symbol(I13.foo, Decl(subtypesOfAny.ts, 75, 21)) >T : Symbol(T, Decl(subtypesOfAny.ts, 76, 10)) >x : Symbol(x, Decl(subtypesOfAny.ts, 76, 13)) >T : Symbol(T, Decl(subtypesOfAny.ts, 76, 10)) @@ -174,7 +174,7 @@ interface I14 { >x : Symbol(x, Decl(subtypesOfAny.ts, 82, 5)) foo: E; ->foo : Symbol(foo, Decl(subtypesOfAny.ts, 82, 21)) +>foo : Symbol(I14.foo, Decl(subtypesOfAny.ts, 82, 21)) >E : Symbol(E, Decl(subtypesOfAny.ts, 77, 1)) } @@ -195,14 +195,14 @@ interface I15 { >x : Symbol(x, Decl(subtypesOfAny.ts, 92, 5)) foo: typeof f; ->foo : Symbol(foo, Decl(subtypesOfAny.ts, 92, 21)) +>foo : Symbol(I15.foo, Decl(subtypesOfAny.ts, 92, 21)) >f : Symbol(f, Decl(subtypesOfAny.ts, 84, 1), Decl(subtypesOfAny.ts, 87, 16)) } class c { baz: string } >c : Symbol(c, Decl(subtypesOfAny.ts, 94, 1), Decl(subtypesOfAny.ts, 97, 23)) ->baz : Symbol(baz, Decl(subtypesOfAny.ts, 97, 9)) +>baz : Symbol(c.baz, Decl(subtypesOfAny.ts, 97, 9)) module c { >c : Symbol(c, Decl(subtypesOfAny.ts, 94, 1), Decl(subtypesOfAny.ts, 97, 23)) @@ -217,7 +217,7 @@ interface I16 { >x : Symbol(x, Decl(subtypesOfAny.ts, 102, 5)) foo: typeof c; ->foo : Symbol(foo, Decl(subtypesOfAny.ts, 102, 21)) +>foo : Symbol(I16.foo, Decl(subtypesOfAny.ts, 102, 21)) >c : Symbol(c, Decl(subtypesOfAny.ts, 94, 1), Decl(subtypesOfAny.ts, 97, 23)) } @@ -230,7 +230,7 @@ interface I17 { >x : Symbol(x, Decl(subtypesOfAny.ts, 108, 5)) foo: T; ->foo : Symbol(foo, Decl(subtypesOfAny.ts, 108, 21)) +>foo : Symbol(I17.foo, Decl(subtypesOfAny.ts, 108, 21)) >T : Symbol(T, Decl(subtypesOfAny.ts, 107, 14)) } @@ -244,7 +244,7 @@ interface I18 { >x : Symbol(x, Decl(subtypesOfAny.ts, 114, 5)) foo: U; ->foo : Symbol(foo, Decl(subtypesOfAny.ts, 114, 21)) +>foo : Symbol(I18.foo, Decl(subtypesOfAny.ts, 114, 21)) >U : Symbol(U, Decl(subtypesOfAny.ts, 113, 16)) } //interface I18 { @@ -260,7 +260,7 @@ interface I19 { >x : Symbol(x, Decl(subtypesOfAny.ts, 124, 5)) foo: Object; ->foo : Symbol(foo, Decl(subtypesOfAny.ts, 124, 21)) +>foo : Symbol(I19.foo, Decl(subtypesOfAny.ts, 124, 21)) >Object : Symbol(Object, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) } @@ -272,5 +272,5 @@ interface I20 { >x : Symbol(x, Decl(subtypesOfAny.ts, 130, 5)) foo: {}; ->foo : Symbol(foo, Decl(subtypesOfAny.ts, 130, 21)) +>foo : Symbol(I20.foo, Decl(subtypesOfAny.ts, 130, 21)) } diff --git a/tests/baselines/reference/subtypesOfTypeParameterWithConstraints2.symbols b/tests/baselines/reference/subtypesOfTypeParameterWithConstraints2.symbols index 05276362cbe..b33b9d212f2 100644 --- a/tests/baselines/reference/subtypesOfTypeParameterWithConstraints2.symbols +++ b/tests/baselines/reference/subtypesOfTypeParameterWithConstraints2.symbols @@ -76,7 +76,7 @@ function f3(x: T, y: U) { >T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 22, 12)) >U : Symbol(U, Decl(subtypesOfTypeParameterWithConstraints2.ts, 22, 24)) >U : Symbol(U, Decl(subtypesOfTypeParameterWithConstraints2.ts, 22, 24)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 22, 41)) >T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 22, 12)) >y : Symbol(y, Decl(subtypesOfTypeParameterWithConstraints2.ts, 22, 46)) @@ -96,38 +96,38 @@ function f3(x: T, y: U) { var r2 = true ? x : new Date(); >r2 : Symbol(r2, Decl(subtypesOfTypeParameterWithConstraints2.ts, 27, 7), Decl(subtypesOfTypeParameterWithConstraints2.ts, 28, 7)) >x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 22, 41)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) var r2 = true ? new Date() : x; >r2 : Symbol(r2, Decl(subtypesOfTypeParameterWithConstraints2.ts, 27, 7), Decl(subtypesOfTypeParameterWithConstraints2.ts, 28, 7)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 22, 41)) // ok var r3 = true ? y : new Date(); >r3 : Symbol(r3, Decl(subtypesOfTypeParameterWithConstraints2.ts, 31, 7), Decl(subtypesOfTypeParameterWithConstraints2.ts, 32, 7)) >y : Symbol(y, Decl(subtypesOfTypeParameterWithConstraints2.ts, 22, 46)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) var r3 = true ? new Date() : y; >r3 : Symbol(r3, Decl(subtypesOfTypeParameterWithConstraints2.ts, 31, 7), Decl(subtypesOfTypeParameterWithConstraints2.ts, 32, 7)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >y : Symbol(y, Decl(subtypesOfTypeParameterWithConstraints2.ts, 22, 46)) } interface I1 { foo: number; } >I1 : Symbol(I1, Decl(subtypesOfTypeParameterWithConstraints2.ts, 33, 1)) ->foo : Symbol(foo, Decl(subtypesOfTypeParameterWithConstraints2.ts, 36, 14)) +>foo : Symbol(I1.foo, Decl(subtypesOfTypeParameterWithConstraints2.ts, 36, 14)) class C1 { foo: number; } >C1 : Symbol(C1, Decl(subtypesOfTypeParameterWithConstraints2.ts, 36, 29)) ->foo : Symbol(foo, Decl(subtypesOfTypeParameterWithConstraints2.ts, 37, 10)) +>foo : Symbol(C1.foo, Decl(subtypesOfTypeParameterWithConstraints2.ts, 37, 10)) class C2 { foo: T; } >C2 : Symbol(C2, Decl(subtypesOfTypeParameterWithConstraints2.ts, 37, 25)) >T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 38, 9)) ->foo : Symbol(foo, Decl(subtypesOfTypeParameterWithConstraints2.ts, 38, 13)) +>foo : Symbol(C2.foo, Decl(subtypesOfTypeParameterWithConstraints2.ts, 38, 13)) >T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 38, 9)) enum E { A } @@ -145,7 +145,7 @@ module f { } class c { baz: string } >c : Symbol(c, Decl(subtypesOfTypeParameterWithConstraints2.ts, 43, 1), Decl(subtypesOfTypeParameterWithConstraints2.ts, 44, 23)) ->baz : Symbol(baz, Decl(subtypesOfTypeParameterWithConstraints2.ts, 44, 9)) +>baz : Symbol(c.baz, Decl(subtypesOfTypeParameterWithConstraints2.ts, 44, 9)) module c { >c : Symbol(c, Decl(subtypesOfTypeParameterWithConstraints2.ts, 43, 1), Decl(subtypesOfTypeParameterWithConstraints2.ts, 44, 23)) @@ -157,7 +157,7 @@ module c { function f4(x: T) { >f4 : Symbol(f4, Decl(subtypesOfTypeParameterWithConstraints2.ts, 47, 1)) >T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 49, 12)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 49, 30)) >T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 49, 12)) @@ -187,7 +187,7 @@ function f4(x: T) { function f5(x: T) { >f5 : Symbol(f5, Decl(subtypesOfTypeParameterWithConstraints2.ts, 56, 1)) >T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 58, 12)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 58, 30)) >T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 58, 12)) @@ -203,7 +203,7 @@ function f5(x: T) { function f6(x: T) { >f6 : Symbol(f6, Decl(subtypesOfTypeParameterWithConstraints2.ts, 61, 1)) >T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 63, 12)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 63, 30)) >T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 63, 12)) @@ -235,19 +235,19 @@ function f7(x: T) { function f8(x: T) { >f8 : Symbol(f8, Decl(subtypesOfTypeParameterWithConstraints2.ts, 71, 1)) >T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 73, 12)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 73, 28)) >T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 73, 12)) var r4 = true ? new Date() : x; // ok >r4 : Symbol(r4, Decl(subtypesOfTypeParameterWithConstraints2.ts, 74, 7), Decl(subtypesOfTypeParameterWithConstraints2.ts, 75, 7)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 73, 28)) var r4 = true ? x : new Date(); // ok >r4 : Symbol(r4, Decl(subtypesOfTypeParameterWithConstraints2.ts, 74, 7), Decl(subtypesOfTypeParameterWithConstraints2.ts, 75, 7)) >x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 73, 28)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) } function f9(x: T) { @@ -516,7 +516,7 @@ function f19(x: T) { function f20(x: T) { >f20 : Symbol(f20, Decl(subtypesOfTypeParameterWithConstraints2.ts, 146, 1)) >T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 148, 13)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 148, 31)) >T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 148, 13)) @@ -534,7 +534,7 @@ function f20(x: T) { function f21(x: T) { >f21 : Symbol(f21, Decl(subtypesOfTypeParameterWithConstraints2.ts, 151, 1)) >T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 153, 13)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 153, 31)) >T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 153, 13)) diff --git a/tests/baselines/reference/subtypingTransitivity.symbols b/tests/baselines/reference/subtypingTransitivity.symbols index 7a1ee279bb3..2a2f10af524 100644 --- a/tests/baselines/reference/subtypingTransitivity.symbols +++ b/tests/baselines/reference/subtypingTransitivity.symbols @@ -3,7 +3,7 @@ class B { >B : Symbol(B, Decl(subtypingTransitivity.ts, 0, 0)) x: Object; ->x : Symbol(x, Decl(subtypingTransitivity.ts, 0, 9)) +>x : Symbol(B.x, Decl(subtypingTransitivity.ts, 0, 9)) >Object : Symbol(Object, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) } @@ -12,14 +12,14 @@ class D extends B { >B : Symbol(B, Decl(subtypingTransitivity.ts, 0, 0)) public x: string; ->x : Symbol(x, Decl(subtypingTransitivity.ts, 4, 19)) +>x : Symbol(D.x, Decl(subtypingTransitivity.ts, 4, 19)) } class D2 extends B { >D2 : Symbol(D2, Decl(subtypingTransitivity.ts, 6, 1)) >B : Symbol(B, Decl(subtypingTransitivity.ts, 0, 0)) public x: number; ->x : Symbol(x, Decl(subtypingTransitivity.ts, 7, 20)) +>x : Symbol(D2.x, Decl(subtypingTransitivity.ts, 7, 20)) } var b: B; diff --git a/tests/baselines/reference/subtypingWithCallSignatures2.symbols b/tests/baselines/reference/subtypingWithCallSignatures2.symbols index 02f08016b31..95158bb25d9 100644 --- a/tests/baselines/reference/subtypingWithCallSignatures2.symbols +++ b/tests/baselines/reference/subtypingWithCallSignatures2.symbols @@ -3,22 +3,22 @@ class Base { foo: string; } >Base : Symbol(Base, Decl(subtypingWithCallSignatures2.ts, 0, 0)) ->foo : Symbol(foo, Decl(subtypingWithCallSignatures2.ts, 2, 12)) +>foo : Symbol(Base.foo, Decl(subtypingWithCallSignatures2.ts, 2, 12)) class Derived extends Base { bar: string; } >Derived : Symbol(Derived, Decl(subtypingWithCallSignatures2.ts, 2, 27)) >Base : Symbol(Base, Decl(subtypingWithCallSignatures2.ts, 0, 0)) ->bar : Symbol(bar, Decl(subtypingWithCallSignatures2.ts, 3, 28)) +>bar : Symbol(Derived.bar, Decl(subtypingWithCallSignatures2.ts, 3, 28)) class Derived2 extends Derived { baz: string; } >Derived2 : Symbol(Derived2, Decl(subtypingWithCallSignatures2.ts, 3, 43)) >Derived : Symbol(Derived, Decl(subtypingWithCallSignatures2.ts, 2, 27)) ->baz : Symbol(baz, Decl(subtypingWithCallSignatures2.ts, 4, 32)) +>baz : Symbol(Derived2.baz, Decl(subtypingWithCallSignatures2.ts, 4, 32)) class OtherDerived extends Base { bing: string; } >OtherDerived : Symbol(OtherDerived, Decl(subtypingWithCallSignatures2.ts, 4, 47)) >Base : Symbol(Base, Decl(subtypingWithCallSignatures2.ts, 0, 0)) ->bing : Symbol(bing, Decl(subtypingWithCallSignatures2.ts, 5, 33)) +>bing : Symbol(OtherDerived.bing, Decl(subtypingWithCallSignatures2.ts, 5, 33)) declare function foo1(a: (x: number) => number[]): typeof a; >foo1 : Symbol(foo1, Decl(subtypingWithCallSignatures2.ts, 5, 49), Decl(subtypingWithCallSignatures2.ts, 7, 60)) @@ -297,8 +297,8 @@ declare function foo18(a: { (a: Date): Date; >a : Symbol(a, Decl(subtypingWithCallSignatures2.ts, 74, 9)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) }): any[]; }): typeof a; diff --git a/tests/baselines/reference/subtypingWithCallSignatures3.symbols b/tests/baselines/reference/subtypingWithCallSignatures3.symbols index 37e1c0423c4..5b41bc78e38 100644 --- a/tests/baselines/reference/subtypingWithCallSignatures3.symbols +++ b/tests/baselines/reference/subtypingWithCallSignatures3.symbols @@ -7,22 +7,22 @@ module Errors { class Base { foo: string; } >Base : Symbol(Base, Decl(subtypingWithCallSignatures3.ts, 3, 15)) ->foo : Symbol(foo, Decl(subtypingWithCallSignatures3.ts, 4, 16)) +>foo : Symbol(Base.foo, Decl(subtypingWithCallSignatures3.ts, 4, 16)) class Derived extends Base { bar: string; } >Derived : Symbol(Derived, Decl(subtypingWithCallSignatures3.ts, 4, 31)) >Base : Symbol(Base, Decl(subtypingWithCallSignatures3.ts, 3, 15)) ->bar : Symbol(bar, Decl(subtypingWithCallSignatures3.ts, 5, 32)) +>bar : Symbol(Derived.bar, Decl(subtypingWithCallSignatures3.ts, 5, 32)) class Derived2 extends Derived { baz: string; } >Derived2 : Symbol(Derived2, Decl(subtypingWithCallSignatures3.ts, 5, 47)) >Derived : Symbol(Derived, Decl(subtypingWithCallSignatures3.ts, 4, 31)) ->baz : Symbol(baz, Decl(subtypingWithCallSignatures3.ts, 6, 36)) +>baz : Symbol(Derived2.baz, Decl(subtypingWithCallSignatures3.ts, 6, 36)) class OtherDerived extends Base { bing: string; } >OtherDerived : Symbol(OtherDerived, Decl(subtypingWithCallSignatures3.ts, 6, 51)) >Base : Symbol(Base, Decl(subtypingWithCallSignatures3.ts, 3, 15)) ->bing : Symbol(bing, Decl(subtypingWithCallSignatures3.ts, 7, 37)) +>bing : Symbol(OtherDerived.bing, Decl(subtypingWithCallSignatures3.ts, 7, 37)) declare function foo2(a2: (x: number) => string[]): typeof a2; >foo2 : Symbol(foo2, Decl(subtypingWithCallSignatures3.ts, 7, 53), Decl(subtypingWithCallSignatures3.ts, 9, 66)) diff --git a/tests/baselines/reference/subtypingWithCallSignatures4.symbols b/tests/baselines/reference/subtypingWithCallSignatures4.symbols index 382abb58a0d..d5cb92bace8 100644 --- a/tests/baselines/reference/subtypingWithCallSignatures4.symbols +++ b/tests/baselines/reference/subtypingWithCallSignatures4.symbols @@ -3,22 +3,22 @@ class Base { foo: string; } >Base : Symbol(Base, Decl(subtypingWithCallSignatures4.ts, 0, 0)) ->foo : Symbol(foo, Decl(subtypingWithCallSignatures4.ts, 2, 12)) +>foo : Symbol(Base.foo, Decl(subtypingWithCallSignatures4.ts, 2, 12)) class Derived extends Base { bar: string; } >Derived : Symbol(Derived, Decl(subtypingWithCallSignatures4.ts, 2, 27)) >Base : Symbol(Base, Decl(subtypingWithCallSignatures4.ts, 0, 0)) ->bar : Symbol(bar, Decl(subtypingWithCallSignatures4.ts, 3, 28)) +>bar : Symbol(Derived.bar, Decl(subtypingWithCallSignatures4.ts, 3, 28)) class Derived2 extends Derived { baz: string; } >Derived2 : Symbol(Derived2, Decl(subtypingWithCallSignatures4.ts, 3, 43)) >Derived : Symbol(Derived, Decl(subtypingWithCallSignatures4.ts, 2, 27)) ->baz : Symbol(baz, Decl(subtypingWithCallSignatures4.ts, 4, 32)) +>baz : Symbol(Derived2.baz, Decl(subtypingWithCallSignatures4.ts, 4, 32)) class OtherDerived extends Base { bing: string; } >OtherDerived : Symbol(OtherDerived, Decl(subtypingWithCallSignatures4.ts, 4, 47)) >Base : Symbol(Base, Decl(subtypingWithCallSignatures4.ts, 0, 0)) ->bing : Symbol(bing, Decl(subtypingWithCallSignatures4.ts, 5, 33)) +>bing : Symbol(OtherDerived.bing, Decl(subtypingWithCallSignatures4.ts, 5, 33)) declare function foo1(a: (x: T) => T[]); >foo1 : Symbol(foo1, Decl(subtypingWithCallSignatures4.ts, 5, 49), Decl(subtypingWithCallSignatures4.ts, 7, 43)) diff --git a/tests/baselines/reference/subtypingWithCallSignaturesWithRestParameters.errors.txt b/tests/baselines/reference/subtypingWithCallSignaturesWithRestParameters.errors.txt index f4a141ff390..3d0e04bbfa7 100644 --- a/tests/baselines/reference/subtypingWithCallSignaturesWithRestParameters.errors.txt +++ b/tests/baselines/reference/subtypingWithCallSignaturesWithRestParameters.errors.txt @@ -2,57 +2,57 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW Types of property 'a' are incompatible. Type '(...args: string[]) => number' is not assignable to type '(...args: number[]) => number'. Types of parameters 'args' and 'args' are incompatible. - Type 'string' is not assignable to type 'number'. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignaturesWithRestParameters.ts(34,11): error TS2430: Interface 'I3B' incorrectly extends interface 'Base'. Types of property 'a' are incompatible. Type '(x?: string) => number' is not assignable to type '(...args: number[]) => number'. Types of parameters 'x' and 'args' are incompatible. - Type 'string' is not assignable to type 'number'. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignaturesWithRestParameters.ts(60,11): error TS2430: Interface 'I6C' incorrectly extends interface 'Base'. Types of property 'a2' are incompatible. Type '(x: number, ...args: string[]) => number' is not assignable to type '(x: number, ...z: number[]) => number'. Types of parameters 'args' and 'z' are incompatible. - Type 'string' is not assignable to type 'number'. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignaturesWithRestParameters.ts(90,11): error TS2430: Interface 'I10B' incorrectly extends interface 'Base'. Types of property 'a3' are incompatible. Type '(x: number, y?: number, z?: number) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. Types of parameters 'y' and 'y' are incompatible. - Type 'number' is not assignable to type 'string'. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignaturesWithRestParameters.ts(94,11): error TS2430: Interface 'I10C' incorrectly extends interface 'Base'. Types of property 'a3' are incompatible. Type '(x: number, ...z: number[]) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. Types of parameters 'z' and 'y' are incompatible. - Type 'number' is not assignable to type 'string'. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignaturesWithRestParameters.ts(98,11): error TS2430: Interface 'I10D' incorrectly extends interface 'Base'. Types of property 'a3' are incompatible. Type '(x: string, y?: string, z?: string) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignaturesWithRestParameters.ts(102,11): error TS2430: Interface 'I10E' incorrectly extends interface 'Base'. Types of property 'a3' are incompatible. Type '(x: number, ...z: string[]) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. Types of parameters 'z' and 'z' are incompatible. - Type 'string' is not assignable to type 'number'. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignaturesWithRestParameters.ts(110,11): error TS2430: Interface 'I12' incorrectly extends interface 'Base'. Types of property 'a4' are incompatible. Type '(x?: number, y?: number) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. Types of parameters 'y' and 'y' are incompatible. - Type 'number' is not assignable to type 'string'. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignaturesWithRestParameters.ts(118,11): error TS2430: Interface 'I14' incorrectly extends interface 'Base'. Types of property 'a4' are incompatible. Type '(x: number, y?: number) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. Types of parameters 'y' and 'y' are incompatible. - Type 'number' is not assignable to type 'string'. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignaturesWithRestParameters.ts(126,11): error TS2430: Interface 'I16' incorrectly extends interface 'Base'. Types of property 'a4' are incompatible. Type '(x: number, ...args: string[]) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. Types of parameters 'args' and 'z' are incompatible. - Type 'string' is not assignable to type 'number'. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignaturesWithRestParameters.ts(130,11): error TS2430: Interface 'I17' incorrectly extends interface 'Base'. Types of property 'a4' are incompatible. Type '(...args: number[]) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. Types of parameters 'args' and 'y' are incompatible. - Type 'number' is not assignable to type 'string'. + Type 'string' is not assignable to type 'number'. ==== tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignaturesWithRestParameters.ts (11 errors) ==== @@ -79,7 +79,7 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Types of property 'a' are incompatible. !!! error TS2430: Type '(...args: string[]) => number' is not assignable to type '(...args: number[]) => number'. !!! error TS2430: Types of parameters 'args' and 'args' are incompatible. -!!! error TS2430: Type 'string' is not assignable to type 'number'. +!!! error TS2430: Type 'number' is not assignable to type 'string'. a: (...args: string[]) => number; // error, type mismatch } @@ -101,7 +101,7 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Types of property 'a' are incompatible. !!! error TS2430: Type '(x?: string) => number' is not assignable to type '(...args: number[]) => number'. !!! error TS2430: Types of parameters 'x' and 'args' are incompatible. -!!! error TS2430: Type 'string' is not assignable to type 'number'. +!!! error TS2430: Type 'number' is not assignable to type 'string'. a: (x?: string) => number; // error, incompatible type } @@ -133,7 +133,7 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Types of property 'a2' are incompatible. !!! error TS2430: Type '(x: number, ...args: string[]) => number' is not assignable to type '(x: number, ...z: number[]) => number'. !!! error TS2430: Types of parameters 'args' and 'z' are incompatible. -!!! error TS2430: Type 'string' is not assignable to type 'number'. +!!! error TS2430: Type 'number' is not assignable to type 'string'. a2: (x: number, ...args: string[]) => number; // error } @@ -169,7 +169,7 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Types of property 'a3' are incompatible. !!! error TS2430: Type '(x: number, y?: number, z?: number) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. !!! error TS2430: Types of parameters 'y' and 'y' are incompatible. -!!! error TS2430: Type 'number' is not assignable to type 'string'. +!!! error TS2430: Type 'string' is not assignable to type 'number'. a3: (x: number, y?: number, z?: number) => number; // error } @@ -179,7 +179,7 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Types of property 'a3' are incompatible. !!! error TS2430: Type '(x: number, ...z: number[]) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. !!! error TS2430: Types of parameters 'z' and 'y' are incompatible. -!!! error TS2430: Type 'number' is not assignable to type 'string'. +!!! error TS2430: Type 'string' is not assignable to type 'number'. a3: (x: number, ...z: number[]) => number; // error } @@ -189,7 +189,7 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Types of property 'a3' are incompatible. !!! error TS2430: Type '(x: string, y?: string, z?: string) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. !!! error TS2430: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2430: Type 'string' is not assignable to type 'number'. +!!! error TS2430: Type 'number' is not assignable to type 'string'. a3: (x: string, y?: string, z?: string) => number; // error, incompatible types } @@ -199,7 +199,7 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Types of property 'a3' are incompatible. !!! error TS2430: Type '(x: number, ...z: string[]) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. !!! error TS2430: Types of parameters 'z' and 'z' are incompatible. -!!! error TS2430: Type 'string' is not assignable to type 'number'. +!!! error TS2430: Type 'number' is not assignable to type 'string'. a3: (x: number, ...z: string[]) => number; // error } @@ -213,7 +213,7 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Types of property 'a4' are incompatible. !!! error TS2430: Type '(x?: number, y?: number) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. !!! error TS2430: Types of parameters 'y' and 'y' are incompatible. -!!! error TS2430: Type 'number' is not assignable to type 'string'. +!!! error TS2430: Type 'string' is not assignable to type 'number'. a4: (x?: number, y?: number) => number; // error, type mismatch } @@ -227,7 +227,7 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Types of property 'a4' are incompatible. !!! error TS2430: Type '(x: number, y?: number) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. !!! error TS2430: Types of parameters 'y' and 'y' are incompatible. -!!! error TS2430: Type 'number' is not assignable to type 'string'. +!!! error TS2430: Type 'string' is not assignable to type 'number'. a4: (x: number, y?: number) => number; // error, second param has type mismatch } @@ -241,7 +241,7 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Types of property 'a4' are incompatible. !!! error TS2430: Type '(x: number, ...args: string[]) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. !!! error TS2430: Types of parameters 'args' and 'z' are incompatible. -!!! error TS2430: Type 'string' is not assignable to type 'number'. +!!! error TS2430: Type 'number' is not assignable to type 'string'. a4: (x: number, ...args: string[]) => number; // error, rest param has type mismatch } @@ -251,7 +251,7 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Types of property 'a4' are incompatible. !!! error TS2430: Type '(...args: number[]) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. !!! error TS2430: Types of parameters 'args' and 'y' are incompatible. -!!! error TS2430: Type 'number' is not assignable to type 'string'. +!!! error TS2430: Type 'string' is not assignable to type 'number'. a4: (...args: number[]) => number; // error } \ No newline at end of file diff --git a/tests/baselines/reference/subtypingWithConstructSignatures2.symbols b/tests/baselines/reference/subtypingWithConstructSignatures2.symbols index 2173aaa1392..cbb72b9f396 100644 --- a/tests/baselines/reference/subtypingWithConstructSignatures2.symbols +++ b/tests/baselines/reference/subtypingWithConstructSignatures2.symbols @@ -3,22 +3,22 @@ class Base { foo: string; } >Base : Symbol(Base, Decl(subtypingWithConstructSignatures2.ts, 0, 0)) ->foo : Symbol(foo, Decl(subtypingWithConstructSignatures2.ts, 2, 12)) +>foo : Symbol(Base.foo, Decl(subtypingWithConstructSignatures2.ts, 2, 12)) class Derived extends Base { bar: string; } >Derived : Symbol(Derived, Decl(subtypingWithConstructSignatures2.ts, 2, 27)) >Base : Symbol(Base, Decl(subtypingWithConstructSignatures2.ts, 0, 0)) ->bar : Symbol(bar, Decl(subtypingWithConstructSignatures2.ts, 3, 28)) +>bar : Symbol(Derived.bar, Decl(subtypingWithConstructSignatures2.ts, 3, 28)) class Derived2 extends Derived { baz: string; } >Derived2 : Symbol(Derived2, Decl(subtypingWithConstructSignatures2.ts, 3, 43)) >Derived : Symbol(Derived, Decl(subtypingWithConstructSignatures2.ts, 2, 27)) ->baz : Symbol(baz, Decl(subtypingWithConstructSignatures2.ts, 4, 32)) +>baz : Symbol(Derived2.baz, Decl(subtypingWithConstructSignatures2.ts, 4, 32)) class OtherDerived extends Base { bing: string; } >OtherDerived : Symbol(OtherDerived, Decl(subtypingWithConstructSignatures2.ts, 4, 47)) >Base : Symbol(Base, Decl(subtypingWithConstructSignatures2.ts, 0, 0)) ->bing : Symbol(bing, Decl(subtypingWithConstructSignatures2.ts, 5, 33)) +>bing : Symbol(OtherDerived.bing, Decl(subtypingWithConstructSignatures2.ts, 5, 33)) declare function foo1(a: new (x: number) => number[]): typeof a; >foo1 : Symbol(foo1, Decl(subtypingWithConstructSignatures2.ts, 5, 49), Decl(subtypingWithConstructSignatures2.ts, 7, 64)) @@ -297,8 +297,8 @@ declare function foo18(a: { new (a: Date): Date; >a : Symbol(a, Decl(subtypingWithConstructSignatures2.ts, 74, 13)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) }): any[]; }): typeof a; diff --git a/tests/baselines/reference/subtypingWithConstructSignatures3.symbols b/tests/baselines/reference/subtypingWithConstructSignatures3.symbols index 3adce566f95..b161a0f92c2 100644 --- a/tests/baselines/reference/subtypingWithConstructSignatures3.symbols +++ b/tests/baselines/reference/subtypingWithConstructSignatures3.symbols @@ -7,22 +7,22 @@ module Errors { class Base { foo: string; } >Base : Symbol(Base, Decl(subtypingWithConstructSignatures3.ts, 3, 15)) ->foo : Symbol(foo, Decl(subtypingWithConstructSignatures3.ts, 4, 16)) +>foo : Symbol(Base.foo, Decl(subtypingWithConstructSignatures3.ts, 4, 16)) class Derived extends Base { bar: string; } >Derived : Symbol(Derived, Decl(subtypingWithConstructSignatures3.ts, 4, 31)) >Base : Symbol(Base, Decl(subtypingWithConstructSignatures3.ts, 3, 15)) ->bar : Symbol(bar, Decl(subtypingWithConstructSignatures3.ts, 5, 32)) +>bar : Symbol(Derived.bar, Decl(subtypingWithConstructSignatures3.ts, 5, 32)) class Derived2 extends Derived { baz: string; } >Derived2 : Symbol(Derived2, Decl(subtypingWithConstructSignatures3.ts, 5, 47)) >Derived : Symbol(Derived, Decl(subtypingWithConstructSignatures3.ts, 4, 31)) ->baz : Symbol(baz, Decl(subtypingWithConstructSignatures3.ts, 6, 36)) +>baz : Symbol(Derived2.baz, Decl(subtypingWithConstructSignatures3.ts, 6, 36)) class OtherDerived extends Base { bing: string; } >OtherDerived : Symbol(OtherDerived, Decl(subtypingWithConstructSignatures3.ts, 6, 51)) >Base : Symbol(Base, Decl(subtypingWithConstructSignatures3.ts, 3, 15)) ->bing : Symbol(bing, Decl(subtypingWithConstructSignatures3.ts, 7, 37)) +>bing : Symbol(OtherDerived.bing, Decl(subtypingWithConstructSignatures3.ts, 7, 37)) declare function foo2(a2: new (x: number) => string[]): typeof a2; >foo2 : Symbol(foo2, Decl(subtypingWithConstructSignatures3.ts, 7, 53), Decl(subtypingWithConstructSignatures3.ts, 9, 70)) diff --git a/tests/baselines/reference/subtypingWithConstructSignatures4.symbols b/tests/baselines/reference/subtypingWithConstructSignatures4.symbols index b337c6642f4..4ab22b5a482 100644 --- a/tests/baselines/reference/subtypingWithConstructSignatures4.symbols +++ b/tests/baselines/reference/subtypingWithConstructSignatures4.symbols @@ -3,22 +3,22 @@ class Base { foo: string; } >Base : Symbol(Base, Decl(subtypingWithConstructSignatures4.ts, 0, 0)) ->foo : Symbol(foo, Decl(subtypingWithConstructSignatures4.ts, 2, 12)) +>foo : Symbol(Base.foo, Decl(subtypingWithConstructSignatures4.ts, 2, 12)) class Derived extends Base { bar: string; } >Derived : Symbol(Derived, Decl(subtypingWithConstructSignatures4.ts, 2, 27)) >Base : Symbol(Base, Decl(subtypingWithConstructSignatures4.ts, 0, 0)) ->bar : Symbol(bar, Decl(subtypingWithConstructSignatures4.ts, 3, 28)) +>bar : Symbol(Derived.bar, Decl(subtypingWithConstructSignatures4.ts, 3, 28)) class Derived2 extends Derived { baz: string; } >Derived2 : Symbol(Derived2, Decl(subtypingWithConstructSignatures4.ts, 3, 43)) >Derived : Symbol(Derived, Decl(subtypingWithConstructSignatures4.ts, 2, 27)) ->baz : Symbol(baz, Decl(subtypingWithConstructSignatures4.ts, 4, 32)) +>baz : Symbol(Derived2.baz, Decl(subtypingWithConstructSignatures4.ts, 4, 32)) class OtherDerived extends Base { bing: string; } >OtherDerived : Symbol(OtherDerived, Decl(subtypingWithConstructSignatures4.ts, 4, 47)) >Base : Symbol(Base, Decl(subtypingWithConstructSignatures4.ts, 0, 0)) ->bing : Symbol(bing, Decl(subtypingWithConstructSignatures4.ts, 5, 33)) +>bing : Symbol(OtherDerived.bing, Decl(subtypingWithConstructSignatures4.ts, 5, 33)) declare function foo1(a: new (x: T) => T[]); >foo1 : Symbol(foo1, Decl(subtypingWithConstructSignatures4.ts, 5, 49), Decl(subtypingWithConstructSignatures4.ts, 7, 47)) diff --git a/tests/baselines/reference/subtypingWithConstructSignatures5.symbols b/tests/baselines/reference/subtypingWithConstructSignatures5.symbols index 634f31ff783..1adbdb82b49 100644 --- a/tests/baselines/reference/subtypingWithConstructSignatures5.symbols +++ b/tests/baselines/reference/subtypingWithConstructSignatures5.symbols @@ -4,51 +4,51 @@ class Base { foo: string; } >Base : Symbol(Base, Decl(subtypingWithConstructSignatures5.ts, 0, 0)) ->foo : Symbol(foo, Decl(subtypingWithConstructSignatures5.ts, 3, 12)) +>foo : Symbol(Base.foo, Decl(subtypingWithConstructSignatures5.ts, 3, 12)) class Derived extends Base { bar: string; } >Derived : Symbol(Derived, Decl(subtypingWithConstructSignatures5.ts, 3, 27)) >Base : Symbol(Base, Decl(subtypingWithConstructSignatures5.ts, 0, 0)) ->bar : Symbol(bar, Decl(subtypingWithConstructSignatures5.ts, 4, 28)) +>bar : Symbol(Derived.bar, Decl(subtypingWithConstructSignatures5.ts, 4, 28)) class Derived2 extends Derived { baz: string; } >Derived2 : Symbol(Derived2, Decl(subtypingWithConstructSignatures5.ts, 4, 43)) >Derived : Symbol(Derived, Decl(subtypingWithConstructSignatures5.ts, 3, 27)) ->baz : Symbol(baz, Decl(subtypingWithConstructSignatures5.ts, 5, 32)) +>baz : Symbol(Derived2.baz, Decl(subtypingWithConstructSignatures5.ts, 5, 32)) class OtherDerived extends Base { bing: string; } >OtherDerived : Symbol(OtherDerived, Decl(subtypingWithConstructSignatures5.ts, 5, 47)) >Base : Symbol(Base, Decl(subtypingWithConstructSignatures5.ts, 0, 0)) ->bing : Symbol(bing, Decl(subtypingWithConstructSignatures5.ts, 6, 33)) +>bing : Symbol(OtherDerived.bing, Decl(subtypingWithConstructSignatures5.ts, 6, 33)) interface A { // T >A : Symbol(A, Decl(subtypingWithConstructSignatures5.ts, 6, 49)) // M's a: new (x: number) => number[]; ->a : Symbol(a, Decl(subtypingWithConstructSignatures5.ts, 8, 13)) +>a : Symbol(A.a, Decl(subtypingWithConstructSignatures5.ts, 8, 13)) >x : Symbol(x, Decl(subtypingWithConstructSignatures5.ts, 10, 12)) a2: new (x: number) => string[]; ->a2 : Symbol(a2, Decl(subtypingWithConstructSignatures5.ts, 10, 35)) +>a2 : Symbol(A.a2, Decl(subtypingWithConstructSignatures5.ts, 10, 35)) >x : Symbol(x, Decl(subtypingWithConstructSignatures5.ts, 11, 13)) a3: new (x: number) => void; ->a3 : Symbol(a3, Decl(subtypingWithConstructSignatures5.ts, 11, 36)) +>a3 : Symbol(A.a3, Decl(subtypingWithConstructSignatures5.ts, 11, 36)) >x : Symbol(x, Decl(subtypingWithConstructSignatures5.ts, 12, 13)) a4: new (x: string, y: number) => string; ->a4 : Symbol(a4, Decl(subtypingWithConstructSignatures5.ts, 12, 32)) +>a4 : Symbol(A.a4, Decl(subtypingWithConstructSignatures5.ts, 12, 32)) >x : Symbol(x, Decl(subtypingWithConstructSignatures5.ts, 13, 13)) >y : Symbol(y, Decl(subtypingWithConstructSignatures5.ts, 13, 23)) a5: new (x: (arg: string) => number) => string; ->a5 : Symbol(a5, Decl(subtypingWithConstructSignatures5.ts, 13, 45)) +>a5 : Symbol(A.a5, Decl(subtypingWithConstructSignatures5.ts, 13, 45)) >x : Symbol(x, Decl(subtypingWithConstructSignatures5.ts, 14, 13)) >arg : Symbol(arg, Decl(subtypingWithConstructSignatures5.ts, 14, 17)) a6: new (x: (arg: Base) => Derived) => Base; ->a6 : Symbol(a6, Decl(subtypingWithConstructSignatures5.ts, 14, 51)) +>a6 : Symbol(A.a6, Decl(subtypingWithConstructSignatures5.ts, 14, 51)) >x : Symbol(x, Decl(subtypingWithConstructSignatures5.ts, 15, 13)) >arg : Symbol(arg, Decl(subtypingWithConstructSignatures5.ts, 15, 17)) >Base : Symbol(Base, Decl(subtypingWithConstructSignatures5.ts, 0, 0)) @@ -56,7 +56,7 @@ interface A { // T >Base : Symbol(Base, Decl(subtypingWithConstructSignatures5.ts, 0, 0)) a7: new (x: (arg: Base) => Derived) => (r: Base) => Derived; ->a7 : Symbol(a7, Decl(subtypingWithConstructSignatures5.ts, 15, 48)) +>a7 : Symbol(A.a7, Decl(subtypingWithConstructSignatures5.ts, 15, 48)) >x : Symbol(x, Decl(subtypingWithConstructSignatures5.ts, 16, 13)) >arg : Symbol(arg, Decl(subtypingWithConstructSignatures5.ts, 16, 17)) >Base : Symbol(Base, Decl(subtypingWithConstructSignatures5.ts, 0, 0)) @@ -66,7 +66,7 @@ interface A { // T >Derived : Symbol(Derived, Decl(subtypingWithConstructSignatures5.ts, 3, 27)) a8: new (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived; ->a8 : Symbol(a8, Decl(subtypingWithConstructSignatures5.ts, 16, 64)) +>a8 : Symbol(A.a8, Decl(subtypingWithConstructSignatures5.ts, 16, 64)) >x : Symbol(x, Decl(subtypingWithConstructSignatures5.ts, 17, 13)) >arg : Symbol(arg, Decl(subtypingWithConstructSignatures5.ts, 17, 17)) >Base : Symbol(Base, Decl(subtypingWithConstructSignatures5.ts, 0, 0)) @@ -80,7 +80,7 @@ interface A { // T >Derived : Symbol(Derived, Decl(subtypingWithConstructSignatures5.ts, 3, 27)) a9: new (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived; ->a9 : Symbol(a9, Decl(subtypingWithConstructSignatures5.ts, 17, 92)) +>a9 : Symbol(A.a9, Decl(subtypingWithConstructSignatures5.ts, 17, 92)) >x : Symbol(x, Decl(subtypingWithConstructSignatures5.ts, 18, 13)) >arg : Symbol(arg, Decl(subtypingWithConstructSignatures5.ts, 18, 17)) >Base : Symbol(Base, Decl(subtypingWithConstructSignatures5.ts, 0, 0)) @@ -94,13 +94,13 @@ interface A { // T >Derived : Symbol(Derived, Decl(subtypingWithConstructSignatures5.ts, 3, 27)) a10: new (...x: Derived[]) => Derived; ->a10 : Symbol(a10, Decl(subtypingWithConstructSignatures5.ts, 18, 92)) +>a10 : Symbol(A.a10, Decl(subtypingWithConstructSignatures5.ts, 18, 92)) >x : Symbol(x, Decl(subtypingWithConstructSignatures5.ts, 19, 14)) >Derived : Symbol(Derived, Decl(subtypingWithConstructSignatures5.ts, 3, 27)) >Derived : Symbol(Derived, Decl(subtypingWithConstructSignatures5.ts, 3, 27)) a11: new (x: { foo: string }, y: { foo: string; bar: string }) => Base; ->a11 : Symbol(a11, Decl(subtypingWithConstructSignatures5.ts, 19, 42)) +>a11 : Symbol(A.a11, Decl(subtypingWithConstructSignatures5.ts, 19, 42)) >x : Symbol(x, Decl(subtypingWithConstructSignatures5.ts, 20, 14)) >foo : Symbol(foo, Decl(subtypingWithConstructSignatures5.ts, 20, 18)) >y : Symbol(y, Decl(subtypingWithConstructSignatures5.ts, 20, 33)) @@ -109,7 +109,7 @@ interface A { // T >Base : Symbol(Base, Decl(subtypingWithConstructSignatures5.ts, 0, 0)) a12: new (x: Array, y: Array) => Array; ->a12 : Symbol(a12, Decl(subtypingWithConstructSignatures5.ts, 20, 75)) +>a12 : Symbol(A.a12, Decl(subtypingWithConstructSignatures5.ts, 20, 75)) >x : Symbol(x, Decl(subtypingWithConstructSignatures5.ts, 21, 14)) >Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >Base : Symbol(Base, Decl(subtypingWithConstructSignatures5.ts, 0, 0)) @@ -120,7 +120,7 @@ interface A { // T >Derived : Symbol(Derived, Decl(subtypingWithConstructSignatures5.ts, 3, 27)) a13: new (x: Array, y: Array) => Array; ->a13 : Symbol(a13, Decl(subtypingWithConstructSignatures5.ts, 21, 68)) +>a13 : Symbol(A.a13, Decl(subtypingWithConstructSignatures5.ts, 21, 68)) >x : Symbol(x, Decl(subtypingWithConstructSignatures5.ts, 22, 14)) >Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >Base : Symbol(Base, Decl(subtypingWithConstructSignatures5.ts, 0, 0)) @@ -131,7 +131,7 @@ interface A { // T >Derived : Symbol(Derived, Decl(subtypingWithConstructSignatures5.ts, 3, 27)) a14: new (x: { a: string; b: number }) => Object; ->a14 : Symbol(a14, Decl(subtypingWithConstructSignatures5.ts, 22, 67)) +>a14 : Symbol(A.a14, Decl(subtypingWithConstructSignatures5.ts, 22, 67)) >x : Symbol(x, Decl(subtypingWithConstructSignatures5.ts, 23, 14)) >a : Symbol(a, Decl(subtypingWithConstructSignatures5.ts, 23, 18)) >b : Symbol(b, Decl(subtypingWithConstructSignatures5.ts, 23, 29)) @@ -143,7 +143,7 @@ interface B extends A { >A : Symbol(A, Decl(subtypingWithConstructSignatures5.ts, 6, 49)) a: new (x: T) => T[]; ->a : Symbol(a, Decl(subtypingWithConstructSignatures5.ts, 26, 23)) +>a : Symbol(B.a, Decl(subtypingWithConstructSignatures5.ts, 26, 23)) >T : Symbol(T, Decl(subtypingWithConstructSignatures5.ts, 27, 12)) >x : Symbol(x, Decl(subtypingWithConstructSignatures5.ts, 27, 15)) >T : Symbol(T, Decl(subtypingWithConstructSignatures5.ts, 27, 12)) @@ -157,27 +157,27 @@ interface I extends B { // N's a: new (x: T) => T[]; // ok, instantiation of N is a subtype of M, T is number ->a : Symbol(a, Decl(subtypingWithConstructSignatures5.ts, 31, 23)) +>a : Symbol(I.a, Decl(subtypingWithConstructSignatures5.ts, 31, 23)) >T : Symbol(T, Decl(subtypingWithConstructSignatures5.ts, 33, 12)) >x : Symbol(x, Decl(subtypingWithConstructSignatures5.ts, 33, 15)) >T : Symbol(T, Decl(subtypingWithConstructSignatures5.ts, 33, 12)) >T : Symbol(T, Decl(subtypingWithConstructSignatures5.ts, 33, 12)) a2: new (x: T) => string[]; // ok ->a2 : Symbol(a2, Decl(subtypingWithConstructSignatures5.ts, 33, 28)) +>a2 : Symbol(I.a2, Decl(subtypingWithConstructSignatures5.ts, 33, 28)) >T : Symbol(T, Decl(subtypingWithConstructSignatures5.ts, 34, 13)) >x : Symbol(x, Decl(subtypingWithConstructSignatures5.ts, 34, 16)) >T : Symbol(T, Decl(subtypingWithConstructSignatures5.ts, 34, 13)) a3: new (x: T) => T; // ok since Base returns void ->a3 : Symbol(a3, Decl(subtypingWithConstructSignatures5.ts, 34, 34)) +>a3 : Symbol(I.a3, Decl(subtypingWithConstructSignatures5.ts, 34, 34)) >T : Symbol(T, Decl(subtypingWithConstructSignatures5.ts, 35, 13)) >x : Symbol(x, Decl(subtypingWithConstructSignatures5.ts, 35, 16)) >T : Symbol(T, Decl(subtypingWithConstructSignatures5.ts, 35, 13)) >T : Symbol(T, Decl(subtypingWithConstructSignatures5.ts, 35, 13)) a4: new (x: T, y: U) => T; // ok, instantiation of N is a subtype of M, T is string, U is number ->a4 : Symbol(a4, Decl(subtypingWithConstructSignatures5.ts, 35, 27)) +>a4 : Symbol(I.a4, Decl(subtypingWithConstructSignatures5.ts, 35, 27)) >T : Symbol(T, Decl(subtypingWithConstructSignatures5.ts, 36, 13)) >U : Symbol(U, Decl(subtypingWithConstructSignatures5.ts, 36, 15)) >x : Symbol(x, Decl(subtypingWithConstructSignatures5.ts, 36, 19)) @@ -187,7 +187,7 @@ interface I extends B { >T : Symbol(T, Decl(subtypingWithConstructSignatures5.ts, 36, 13)) a5: new (x: (arg: T) => U) => T; // ok, U is in a parameter position so inferences can be made ->a5 : Symbol(a5, Decl(subtypingWithConstructSignatures5.ts, 36, 36)) +>a5 : Symbol(I.a5, Decl(subtypingWithConstructSignatures5.ts, 36, 36)) >T : Symbol(T, Decl(subtypingWithConstructSignatures5.ts, 37, 13)) >U : Symbol(U, Decl(subtypingWithConstructSignatures5.ts, 37, 15)) >x : Symbol(x, Decl(subtypingWithConstructSignatures5.ts, 37, 19)) @@ -197,7 +197,7 @@ interface I extends B { >T : Symbol(T, Decl(subtypingWithConstructSignatures5.ts, 37, 13)) a6: new (x: (arg: T) => U) => T; // ok, same as a5 but with object type hierarchy ->a6 : Symbol(a6, Decl(subtypingWithConstructSignatures5.ts, 37, 42)) +>a6 : Symbol(I.a6, Decl(subtypingWithConstructSignatures5.ts, 37, 42)) >T : Symbol(T, Decl(subtypingWithConstructSignatures5.ts, 38, 13)) >Base : Symbol(Base, Decl(subtypingWithConstructSignatures5.ts, 0, 0)) >U : Symbol(U, Decl(subtypingWithConstructSignatures5.ts, 38, 28)) @@ -209,7 +209,7 @@ interface I extends B { >T : Symbol(T, Decl(subtypingWithConstructSignatures5.ts, 38, 13)) a7: new (x: (arg: T) => U) => (r: T) => U; // ok ->a7 : Symbol(a7, Decl(subtypingWithConstructSignatures5.ts, 38, 71)) +>a7 : Symbol(I.a7, Decl(subtypingWithConstructSignatures5.ts, 38, 71)) >T : Symbol(T, Decl(subtypingWithConstructSignatures5.ts, 39, 13)) >Base : Symbol(Base, Decl(subtypingWithConstructSignatures5.ts, 0, 0)) >U : Symbol(U, Decl(subtypingWithConstructSignatures5.ts, 39, 28)) @@ -223,7 +223,7 @@ interface I extends B { >U : Symbol(U, Decl(subtypingWithConstructSignatures5.ts, 39, 28)) a8: new (x: (arg: T) => U, y: (arg2: T) => U) => (r: T) => U; // ok ->a8 : Symbol(a8, Decl(subtypingWithConstructSignatures5.ts, 39, 81)) +>a8 : Symbol(I.a8, Decl(subtypingWithConstructSignatures5.ts, 39, 81)) >T : Symbol(T, Decl(subtypingWithConstructSignatures5.ts, 40, 13)) >Base : Symbol(Base, Decl(subtypingWithConstructSignatures5.ts, 0, 0)) >U : Symbol(U, Decl(subtypingWithConstructSignatures5.ts, 40, 28)) @@ -241,7 +241,7 @@ interface I extends B { >U : Symbol(U, Decl(subtypingWithConstructSignatures5.ts, 40, 28)) a9: new (x: (arg: T) => U, y: (arg2: { foo: string; bing: number }) => U) => (r: T) => U; // ok, same as a8 with compatible object literal ->a9 : Symbol(a9, Decl(subtypingWithConstructSignatures5.ts, 40, 100)) +>a9 : Symbol(I.a9, Decl(subtypingWithConstructSignatures5.ts, 40, 100)) >T : Symbol(T, Decl(subtypingWithConstructSignatures5.ts, 41, 13)) >Base : Symbol(Base, Decl(subtypingWithConstructSignatures5.ts, 0, 0)) >U : Symbol(U, Decl(subtypingWithConstructSignatures5.ts, 41, 28)) @@ -260,7 +260,7 @@ interface I extends B { >U : Symbol(U, Decl(subtypingWithConstructSignatures5.ts, 41, 28)) a10: new (...x: T[]) => T; // ok ->a10 : Symbol(a10, Decl(subtypingWithConstructSignatures5.ts, 41, 128)) +>a10 : Symbol(I.a10, Decl(subtypingWithConstructSignatures5.ts, 41, 128)) >T : Symbol(T, Decl(subtypingWithConstructSignatures5.ts, 42, 14)) >Derived : Symbol(Derived, Decl(subtypingWithConstructSignatures5.ts, 3, 27)) >x : Symbol(x, Decl(subtypingWithConstructSignatures5.ts, 42, 33)) @@ -268,7 +268,7 @@ interface I extends B { >T : Symbol(T, Decl(subtypingWithConstructSignatures5.ts, 42, 14)) a11: new (x: T, y: T) => T; // ok ->a11 : Symbol(a11, Decl(subtypingWithConstructSignatures5.ts, 42, 49)) +>a11 : Symbol(I.a11, Decl(subtypingWithConstructSignatures5.ts, 42, 49)) >T : Symbol(T, Decl(subtypingWithConstructSignatures5.ts, 43, 14)) >Base : Symbol(Base, Decl(subtypingWithConstructSignatures5.ts, 0, 0)) >x : Symbol(x, Decl(subtypingWithConstructSignatures5.ts, 43, 30)) @@ -278,7 +278,7 @@ interface I extends B { >T : Symbol(T, Decl(subtypingWithConstructSignatures5.ts, 43, 14)) a12: new >(x: Array, y: T) => Array; // ok, less specific parameter type ->a12 : Symbol(a12, Decl(subtypingWithConstructSignatures5.ts, 43, 47)) +>a12 : Symbol(I.a12, Decl(subtypingWithConstructSignatures5.ts, 43, 47)) >T : Symbol(T, Decl(subtypingWithConstructSignatures5.ts, 44, 14)) >Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >Base : Symbol(Base, Decl(subtypingWithConstructSignatures5.ts, 0, 0)) @@ -291,7 +291,7 @@ interface I extends B { >Derived : Symbol(Derived, Decl(subtypingWithConstructSignatures5.ts, 3, 27)) a13: new >(x: Array, y: T) => T; // ok, T = Array, satisfies constraint, contextual signature instantiation succeeds ->a13 : Symbol(a13, Decl(subtypingWithConstructSignatures5.ts, 44, 77)) +>a13 : Symbol(I.a13, Decl(subtypingWithConstructSignatures5.ts, 44, 77)) >T : Symbol(T, Decl(subtypingWithConstructSignatures5.ts, 45, 14)) >Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >Derived : Symbol(Derived, Decl(subtypingWithConstructSignatures5.ts, 3, 27)) @@ -303,7 +303,7 @@ interface I extends B { >T : Symbol(T, Decl(subtypingWithConstructSignatures5.ts, 45, 14)) a14: new (x: { a: T; b: T }) => T; // ok, best common type yields T = {} but that's satisfactory for this signature ->a14 : Symbol(a14, Decl(subtypingWithConstructSignatures5.ts, 45, 67)) +>a14 : Symbol(I.a14, Decl(subtypingWithConstructSignatures5.ts, 45, 67)) >T : Symbol(T, Decl(subtypingWithConstructSignatures5.ts, 46, 14)) >x : Symbol(x, Decl(subtypingWithConstructSignatures5.ts, 46, 17)) >a : Symbol(a, Decl(subtypingWithConstructSignatures5.ts, 46, 21)) diff --git a/tests/baselines/reference/subtypingWithConstructSignatures6.symbols b/tests/baselines/reference/subtypingWithConstructSignatures6.symbols index 08b9350da88..c8fb0301127 100644 --- a/tests/baselines/reference/subtypingWithConstructSignatures6.symbols +++ b/tests/baselines/reference/subtypingWithConstructSignatures6.symbols @@ -5,48 +5,48 @@ class Base { foo: string; } >Base : Symbol(Base, Decl(subtypingWithConstructSignatures6.ts, 0, 0)) ->foo : Symbol(foo, Decl(subtypingWithConstructSignatures6.ts, 4, 12)) +>foo : Symbol(Base.foo, Decl(subtypingWithConstructSignatures6.ts, 4, 12)) class Derived extends Base { bar: string; } >Derived : Symbol(Derived, Decl(subtypingWithConstructSignatures6.ts, 4, 27)) >Base : Symbol(Base, Decl(subtypingWithConstructSignatures6.ts, 0, 0)) ->bar : Symbol(bar, Decl(subtypingWithConstructSignatures6.ts, 5, 28)) +>bar : Symbol(Derived.bar, Decl(subtypingWithConstructSignatures6.ts, 5, 28)) class Derived2 extends Derived { baz: string; } >Derived2 : Symbol(Derived2, Decl(subtypingWithConstructSignatures6.ts, 5, 43)) >Derived : Symbol(Derived, Decl(subtypingWithConstructSignatures6.ts, 4, 27)) ->baz : Symbol(baz, Decl(subtypingWithConstructSignatures6.ts, 6, 32)) +>baz : Symbol(Derived2.baz, Decl(subtypingWithConstructSignatures6.ts, 6, 32)) class OtherDerived extends Base { bing: string; } >OtherDerived : Symbol(OtherDerived, Decl(subtypingWithConstructSignatures6.ts, 6, 47)) >Base : Symbol(Base, Decl(subtypingWithConstructSignatures6.ts, 0, 0)) ->bing : Symbol(bing, Decl(subtypingWithConstructSignatures6.ts, 7, 33)) +>bing : Symbol(OtherDerived.bing, Decl(subtypingWithConstructSignatures6.ts, 7, 33)) interface A { // T >A : Symbol(A, Decl(subtypingWithConstructSignatures6.ts, 7, 49)) // M's a: new (x: T) => T[]; ->a : Symbol(a, Decl(subtypingWithConstructSignatures6.ts, 9, 13)) +>a : Symbol(A.a, Decl(subtypingWithConstructSignatures6.ts, 9, 13)) >T : Symbol(T, Decl(subtypingWithConstructSignatures6.ts, 11, 12)) >x : Symbol(x, Decl(subtypingWithConstructSignatures6.ts, 11, 15)) >T : Symbol(T, Decl(subtypingWithConstructSignatures6.ts, 11, 12)) >T : Symbol(T, Decl(subtypingWithConstructSignatures6.ts, 11, 12)) a2: new (x: T) => string[]; ->a2 : Symbol(a2, Decl(subtypingWithConstructSignatures6.ts, 11, 28)) +>a2 : Symbol(A.a2, Decl(subtypingWithConstructSignatures6.ts, 11, 28)) >T : Symbol(T, Decl(subtypingWithConstructSignatures6.ts, 12, 13)) >x : Symbol(x, Decl(subtypingWithConstructSignatures6.ts, 12, 16)) >T : Symbol(T, Decl(subtypingWithConstructSignatures6.ts, 12, 13)) a3: new (x: T) => void; ->a3 : Symbol(a3, Decl(subtypingWithConstructSignatures6.ts, 12, 34)) +>a3 : Symbol(A.a3, Decl(subtypingWithConstructSignatures6.ts, 12, 34)) >T : Symbol(T, Decl(subtypingWithConstructSignatures6.ts, 13, 13)) >x : Symbol(x, Decl(subtypingWithConstructSignatures6.ts, 13, 16)) >T : Symbol(T, Decl(subtypingWithConstructSignatures6.ts, 13, 13)) a4: new (x: T, y: U) => string; ->a4 : Symbol(a4, Decl(subtypingWithConstructSignatures6.ts, 13, 30)) +>a4 : Symbol(A.a4, Decl(subtypingWithConstructSignatures6.ts, 13, 30)) >T : Symbol(T, Decl(subtypingWithConstructSignatures6.ts, 14, 13)) >U : Symbol(U, Decl(subtypingWithConstructSignatures6.ts, 14, 15)) >x : Symbol(x, Decl(subtypingWithConstructSignatures6.ts, 14, 19)) @@ -55,7 +55,7 @@ interface A { // T >U : Symbol(U, Decl(subtypingWithConstructSignatures6.ts, 14, 15)) a5: new (x: (arg: T) => U) => T; ->a5 : Symbol(a5, Decl(subtypingWithConstructSignatures6.ts, 14, 41)) +>a5 : Symbol(A.a5, Decl(subtypingWithConstructSignatures6.ts, 14, 41)) >T : Symbol(T, Decl(subtypingWithConstructSignatures6.ts, 15, 13)) >U : Symbol(U, Decl(subtypingWithConstructSignatures6.ts, 15, 15)) >x : Symbol(x, Decl(subtypingWithConstructSignatures6.ts, 15, 19)) @@ -65,7 +65,7 @@ interface A { // T >T : Symbol(T, Decl(subtypingWithConstructSignatures6.ts, 15, 13)) a6: new (x: (arg: T) => Derived) => T; ->a6 : Symbol(a6, Decl(subtypingWithConstructSignatures6.ts, 15, 42)) +>a6 : Symbol(A.a6, Decl(subtypingWithConstructSignatures6.ts, 15, 42)) >T : Symbol(T, Decl(subtypingWithConstructSignatures6.ts, 16, 13)) >Base : Symbol(Base, Decl(subtypingWithConstructSignatures6.ts, 0, 0)) >x : Symbol(x, Decl(subtypingWithConstructSignatures6.ts, 16, 29)) @@ -75,7 +75,7 @@ interface A { // T >T : Symbol(T, Decl(subtypingWithConstructSignatures6.ts, 16, 13)) a11: new (x: { foo: T }, y: { foo: T; bar: T }) => Base; ->a11 : Symbol(a11, Decl(subtypingWithConstructSignatures6.ts, 16, 58)) +>a11 : Symbol(A.a11, Decl(subtypingWithConstructSignatures6.ts, 16, 58)) >T : Symbol(T, Decl(subtypingWithConstructSignatures6.ts, 17, 14)) >x : Symbol(x, Decl(subtypingWithConstructSignatures6.ts, 17, 17)) >foo : Symbol(foo, Decl(subtypingWithConstructSignatures6.ts, 17, 21)) @@ -88,7 +88,7 @@ interface A { // T >Base : Symbol(Base, Decl(subtypingWithConstructSignatures6.ts, 0, 0)) a15: new (x: { a: T; b: T }) => T[]; ->a15 : Symbol(a15, Decl(subtypingWithConstructSignatures6.ts, 17, 63)) +>a15 : Symbol(A.a15, Decl(subtypingWithConstructSignatures6.ts, 17, 63)) >T : Symbol(T, Decl(subtypingWithConstructSignatures6.ts, 18, 14)) >x : Symbol(x, Decl(subtypingWithConstructSignatures6.ts, 18, 17)) >a : Symbol(a, Decl(subtypingWithConstructSignatures6.ts, 18, 21)) @@ -98,7 +98,7 @@ interface A { // T >T : Symbol(T, Decl(subtypingWithConstructSignatures6.ts, 18, 14)) a16: new (x: { a: T; b: T }) => T[]; ->a16 : Symbol(a16, Decl(subtypingWithConstructSignatures6.ts, 18, 43)) +>a16 : Symbol(A.a16, Decl(subtypingWithConstructSignatures6.ts, 18, 43)) >T : Symbol(T, Decl(subtypingWithConstructSignatures6.ts, 19, 14)) >Base : Symbol(Base, Decl(subtypingWithConstructSignatures6.ts, 0, 0)) >x : Symbol(x, Decl(subtypingWithConstructSignatures6.ts, 19, 30)) @@ -116,7 +116,7 @@ interface I extends A { >A : Symbol(A, Decl(subtypingWithConstructSignatures6.ts, 7, 49)) a: new (x: T) => T[]; ->a : Symbol(a, Decl(subtypingWithConstructSignatures6.ts, 23, 26)) +>a : Symbol(I.a, Decl(subtypingWithConstructSignatures6.ts, 23, 26)) >x : Symbol(x, Decl(subtypingWithConstructSignatures6.ts, 24, 12)) >T : Symbol(T, Decl(subtypingWithConstructSignatures6.ts, 23, 12)) >T : Symbol(T, Decl(subtypingWithConstructSignatures6.ts, 23, 12)) @@ -128,7 +128,7 @@ interface I2 extends A { >A : Symbol(A, Decl(subtypingWithConstructSignatures6.ts, 7, 49)) a2: new (x: T) => string[]; ->a2 : Symbol(a2, Decl(subtypingWithConstructSignatures6.ts, 27, 27)) +>a2 : Symbol(I2.a2, Decl(subtypingWithConstructSignatures6.ts, 27, 27)) >x : Symbol(x, Decl(subtypingWithConstructSignatures6.ts, 28, 13)) >T : Symbol(T, Decl(subtypingWithConstructSignatures6.ts, 27, 13)) } @@ -139,7 +139,7 @@ interface I3 extends A { >A : Symbol(A, Decl(subtypingWithConstructSignatures6.ts, 7, 49)) a3: new (x: T) => T; ->a3 : Symbol(a3, Decl(subtypingWithConstructSignatures6.ts, 31, 27)) +>a3 : Symbol(I3.a3, Decl(subtypingWithConstructSignatures6.ts, 31, 27)) >x : Symbol(x, Decl(subtypingWithConstructSignatures6.ts, 32, 13)) >T : Symbol(T, Decl(subtypingWithConstructSignatures6.ts, 31, 13)) >T : Symbol(T, Decl(subtypingWithConstructSignatures6.ts, 31, 13)) @@ -151,7 +151,7 @@ interface I4 extends A { >A : Symbol(A, Decl(subtypingWithConstructSignatures6.ts, 7, 49)) a4: new (x: T, y: U) => string; ->a4 : Symbol(a4, Decl(subtypingWithConstructSignatures6.ts, 35, 27)) +>a4 : Symbol(I4.a4, Decl(subtypingWithConstructSignatures6.ts, 35, 27)) >U : Symbol(U, Decl(subtypingWithConstructSignatures6.ts, 36, 13)) >x : Symbol(x, Decl(subtypingWithConstructSignatures6.ts, 36, 16)) >T : Symbol(T, Decl(subtypingWithConstructSignatures6.ts, 35, 13)) @@ -165,7 +165,7 @@ interface I5 extends A { >A : Symbol(A, Decl(subtypingWithConstructSignatures6.ts, 7, 49)) a5: new (x: (arg: T) => U) => T; ->a5 : Symbol(a5, Decl(subtypingWithConstructSignatures6.ts, 39, 27)) +>a5 : Symbol(I5.a5, Decl(subtypingWithConstructSignatures6.ts, 39, 27)) >U : Symbol(U, Decl(subtypingWithConstructSignatures6.ts, 40, 13)) >x : Symbol(x, Decl(subtypingWithConstructSignatures6.ts, 40, 16)) >arg : Symbol(arg, Decl(subtypingWithConstructSignatures6.ts, 40, 20)) @@ -180,7 +180,7 @@ interface I7 extends A { >A : Symbol(A, Decl(subtypingWithConstructSignatures6.ts, 7, 49)) a11: new (x: { foo: T }, y: { foo: U; bar: U }) => Base; ->a11 : Symbol(a11, Decl(subtypingWithConstructSignatures6.ts, 43, 27)) +>a11 : Symbol(I7.a11, Decl(subtypingWithConstructSignatures6.ts, 43, 27)) >U : Symbol(U, Decl(subtypingWithConstructSignatures6.ts, 44, 14)) >x : Symbol(x, Decl(subtypingWithConstructSignatures6.ts, 44, 17)) >foo : Symbol(foo, Decl(subtypingWithConstructSignatures6.ts, 44, 21)) @@ -199,7 +199,7 @@ interface I9 extends A { >A : Symbol(A, Decl(subtypingWithConstructSignatures6.ts, 7, 49)) a16: new (x: { a: T; b: T }) => T[]; ->a16 : Symbol(a16, Decl(subtypingWithConstructSignatures6.ts, 47, 27)) +>a16 : Symbol(I9.a16, Decl(subtypingWithConstructSignatures6.ts, 47, 27)) >x : Symbol(x, Decl(subtypingWithConstructSignatures6.ts, 48, 14)) >a : Symbol(a, Decl(subtypingWithConstructSignatures6.ts, 48, 18)) >T : Symbol(T, Decl(subtypingWithConstructSignatures6.ts, 47, 13)) diff --git a/tests/baselines/reference/subtypingWithObjectMembers4.symbols b/tests/baselines/reference/subtypingWithObjectMembers4.symbols index e710e2a3d4a..94b38bc4c9b 100644 --- a/tests/baselines/reference/subtypingWithObjectMembers4.symbols +++ b/tests/baselines/reference/subtypingWithObjectMembers4.symbols @@ -5,7 +5,7 @@ class Base { >Base : Symbol(Base, Decl(subtypingWithObjectMembers4.ts, 0, 0)) foo: string; ->foo : Symbol(foo, Decl(subtypingWithObjectMembers4.ts, 2, 12)) +>foo : Symbol(Base.foo, Decl(subtypingWithObjectMembers4.ts, 2, 12)) } class Derived extends Base { @@ -13,14 +13,14 @@ class Derived extends Base { >Base : Symbol(Base, Decl(subtypingWithObjectMembers4.ts, 0, 0)) bar: string; ->bar : Symbol(bar, Decl(subtypingWithObjectMembers4.ts, 6, 28)) +>bar : Symbol(Derived.bar, Decl(subtypingWithObjectMembers4.ts, 6, 28)) } class A { >A : Symbol(A, Decl(subtypingWithObjectMembers4.ts, 8, 1)) foo: Base; ->foo : Symbol(foo, Decl(subtypingWithObjectMembers4.ts, 10, 9)) +>foo : Symbol(A.foo, Decl(subtypingWithObjectMembers4.ts, 10, 9)) >Base : Symbol(Base, Decl(subtypingWithObjectMembers4.ts, 0, 0)) } @@ -29,7 +29,7 @@ class B extends A { >A : Symbol(A, Decl(subtypingWithObjectMembers4.ts, 8, 1)) fooo: Derived; // ok, inherits foo ->fooo : Symbol(fooo, Decl(subtypingWithObjectMembers4.ts, 14, 19)) +>fooo : Symbol(B.fooo, Decl(subtypingWithObjectMembers4.ts, 14, 19)) >Derived : Symbol(Derived, Decl(subtypingWithObjectMembers4.ts, 4, 1)) } diff --git a/tests/baselines/reference/subtypingWithObjectMembersOptionality.symbols b/tests/baselines/reference/subtypingWithObjectMembersOptionality.symbols index 7fce581b74b..5b144baa428 100644 --- a/tests/baselines/reference/subtypingWithObjectMembersOptionality.symbols +++ b/tests/baselines/reference/subtypingWithObjectMembersOptionality.symbols @@ -3,17 +3,17 @@ interface Base { foo: string; } >Base : Symbol(Base, Decl(subtypingWithObjectMembersOptionality.ts, 0, 0)) ->foo : Symbol(foo, Decl(subtypingWithObjectMembersOptionality.ts, 2, 16)) +>foo : Symbol(Base.foo, Decl(subtypingWithObjectMembersOptionality.ts, 2, 16)) interface Derived extends Base { bar: string; } >Derived : Symbol(Derived, Decl(subtypingWithObjectMembersOptionality.ts, 2, 31)) >Base : Symbol(Base, Decl(subtypingWithObjectMembersOptionality.ts, 0, 0)) ->bar : Symbol(bar, Decl(subtypingWithObjectMembersOptionality.ts, 3, 32)) +>bar : Symbol(Derived.bar, Decl(subtypingWithObjectMembersOptionality.ts, 3, 32)) interface Derived2 extends Derived { baz: string; } >Derived2 : Symbol(Derived2, Decl(subtypingWithObjectMembersOptionality.ts, 3, 47)) >Derived : Symbol(Derived, Decl(subtypingWithObjectMembersOptionality.ts, 2, 31)) ->baz : Symbol(baz, Decl(subtypingWithObjectMembersOptionality.ts, 4, 36)) +>baz : Symbol(Derived2.baz, Decl(subtypingWithObjectMembersOptionality.ts, 4, 36)) // S is a subtype of a type T, and T is a supertype of S, if one of the following is true, where S' denotes the apparent type (section 3.8.1) of S: // - S' and T are object types and, for each member M in T, one of the following is true: @@ -27,7 +27,7 @@ interface T { >T : Symbol(T, Decl(subtypingWithObjectMembersOptionality.ts, 4, 51)) Foo?: Base; ->Foo : Symbol(Foo, Decl(subtypingWithObjectMembersOptionality.ts, 14, 13)) +>Foo : Symbol(T.Foo, Decl(subtypingWithObjectMembersOptionality.ts, 14, 13)) >Base : Symbol(Base, Decl(subtypingWithObjectMembersOptionality.ts, 0, 0)) } @@ -36,7 +36,7 @@ interface S extends T { >T : Symbol(T, Decl(subtypingWithObjectMembersOptionality.ts, 4, 51)) Foo: Derived ->Foo : Symbol(Foo, Decl(subtypingWithObjectMembersOptionality.ts, 18, 23)) +>Foo : Symbol(S.Foo, Decl(subtypingWithObjectMembersOptionality.ts, 18, 23)) >Derived : Symbol(Derived, Decl(subtypingWithObjectMembersOptionality.ts, 2, 31)) } @@ -93,7 +93,7 @@ module TwoLevels { >T : Symbol(T, Decl(subtypingWithObjectMembersOptionality.ts, 43, 18)) Foo?: Base; ->Foo : Symbol(Foo, Decl(subtypingWithObjectMembersOptionality.ts, 44, 17)) +>Foo : Symbol(T.Foo, Decl(subtypingWithObjectMembersOptionality.ts, 44, 17)) >Base : Symbol(Base, Decl(subtypingWithObjectMembersOptionality.ts, 0, 0)) } @@ -102,7 +102,7 @@ module TwoLevels { >T : Symbol(T, Decl(subtypingWithObjectMembersOptionality.ts, 43, 18)) Foo: Derived2 ->Foo : Symbol(Foo, Decl(subtypingWithObjectMembersOptionality.ts, 48, 27)) +>Foo : Symbol(S.Foo, Decl(subtypingWithObjectMembersOptionality.ts, 48, 27)) >Derived2 : Symbol(Derived2, Decl(subtypingWithObjectMembersOptionality.ts, 3, 47)) } diff --git a/tests/baselines/reference/subtypingWithObjectMembersOptionality3.symbols b/tests/baselines/reference/subtypingWithObjectMembersOptionality3.symbols index e770df28285..2a3e806f540 100644 --- a/tests/baselines/reference/subtypingWithObjectMembersOptionality3.symbols +++ b/tests/baselines/reference/subtypingWithObjectMembersOptionality3.symbols @@ -3,18 +3,18 @@ interface Base { foo: string; } >Base : Symbol(Base, Decl(subtypingWithObjectMembersOptionality3.ts, 0, 0)) ->foo : Symbol(foo, Decl(subtypingWithObjectMembersOptionality3.ts, 2, 16)) +>foo : Symbol(Base.foo, Decl(subtypingWithObjectMembersOptionality3.ts, 2, 16)) interface Derived extends Base { bar: string; } >Derived : Symbol(Derived, Decl(subtypingWithObjectMembersOptionality3.ts, 2, 31)) >Base : Symbol(Base, Decl(subtypingWithObjectMembersOptionality3.ts, 0, 0)) ->bar : Symbol(bar, Decl(subtypingWithObjectMembersOptionality3.ts, 3, 32)) +>bar : Symbol(Derived.bar, Decl(subtypingWithObjectMembersOptionality3.ts, 3, 32)) interface T { >T : Symbol(T, Decl(subtypingWithObjectMembersOptionality3.ts, 3, 47)) Foo?: Base; ->Foo : Symbol(Foo, Decl(subtypingWithObjectMembersOptionality3.ts, 5, 13)) +>Foo : Symbol(T.Foo, Decl(subtypingWithObjectMembersOptionality3.ts, 5, 13)) >Base : Symbol(Base, Decl(subtypingWithObjectMembersOptionality3.ts, 0, 0)) } @@ -23,7 +23,7 @@ interface S extends T { >T : Symbol(T, Decl(subtypingWithObjectMembersOptionality3.ts, 3, 47)) Foo2: Derived // ok ->Foo2 : Symbol(Foo2, Decl(subtypingWithObjectMembersOptionality3.ts, 9, 23)) +>Foo2 : Symbol(S.Foo2, Decl(subtypingWithObjectMembersOptionality3.ts, 9, 23)) >Derived : Symbol(Derived, Decl(subtypingWithObjectMembersOptionality3.ts, 2, 31)) } diff --git a/tests/baselines/reference/subtypingWithObjectMembersOptionality4.symbols b/tests/baselines/reference/subtypingWithObjectMembersOptionality4.symbols index e05cc3d03f8..b1124d49083 100644 --- a/tests/baselines/reference/subtypingWithObjectMembersOptionality4.symbols +++ b/tests/baselines/reference/subtypingWithObjectMembersOptionality4.symbols @@ -3,18 +3,18 @@ interface Base { foo: string; } >Base : Symbol(Base, Decl(subtypingWithObjectMembersOptionality4.ts, 0, 0)) ->foo : Symbol(foo, Decl(subtypingWithObjectMembersOptionality4.ts, 2, 16)) +>foo : Symbol(Base.foo, Decl(subtypingWithObjectMembersOptionality4.ts, 2, 16)) interface Derived extends Base { bar: string; } >Derived : Symbol(Derived, Decl(subtypingWithObjectMembersOptionality4.ts, 2, 31)) >Base : Symbol(Base, Decl(subtypingWithObjectMembersOptionality4.ts, 0, 0)) ->bar : Symbol(bar, Decl(subtypingWithObjectMembersOptionality4.ts, 3, 32)) +>bar : Symbol(Derived.bar, Decl(subtypingWithObjectMembersOptionality4.ts, 3, 32)) interface T { >T : Symbol(T, Decl(subtypingWithObjectMembersOptionality4.ts, 3, 47)) Foo: Base; ->Foo : Symbol(Foo, Decl(subtypingWithObjectMembersOptionality4.ts, 5, 13)) +>Foo : Symbol(T.Foo, Decl(subtypingWithObjectMembersOptionality4.ts, 5, 13)) >Base : Symbol(Base, Decl(subtypingWithObjectMembersOptionality4.ts, 0, 0)) } @@ -23,7 +23,7 @@ interface S extends T { >T : Symbol(T, Decl(subtypingWithObjectMembersOptionality4.ts, 3, 47)) Foo2?: Derived // ok ->Foo2 : Symbol(Foo2, Decl(subtypingWithObjectMembersOptionality4.ts, 9, 23)) +>Foo2 : Symbol(S.Foo2, Decl(subtypingWithObjectMembersOptionality4.ts, 9, 23)) >Derived : Symbol(Derived, Decl(subtypingWithObjectMembersOptionality4.ts, 2, 31)) } diff --git a/tests/baselines/reference/super2.symbols b/tests/baselines/reference/super2.symbols index 69b0254f270..8bb0c6a735c 100644 --- a/tests/baselines/reference/super2.symbols +++ b/tests/baselines/reference/super2.symbols @@ -4,13 +4,13 @@ class Base5 { >Base5 : Symbol(Base5, Decl(super2.ts, 0, 0)) public x() { ->x : Symbol(x, Decl(super2.ts, 1, 13)) +>x : Symbol(Base5.x, Decl(super2.ts, 1, 13)) return "BaseX"; } public y() { ->y : Symbol(y, Decl(super2.ts, 4, 5)) +>y : Symbol(Base5.y, Decl(super2.ts, 4, 5)) return "BaseY"; } @@ -21,7 +21,7 @@ class Sub5 extends Base5 { >Base5 : Symbol(Base5, Decl(super2.ts, 0, 0)) public x() { ->x : Symbol(x, Decl(super2.ts, 11, 26)) +>x : Symbol(Sub5.x, Decl(super2.ts, 11, 26)) return "SubX"; } @@ -32,7 +32,7 @@ class SubSub5 extends Sub5 { >Sub5 : Symbol(Sub5, Decl(super2.ts, 9, 1)) public x() { ->x : Symbol(x, Decl(super2.ts, 17, 28)) +>x : Symbol(SubSub5.x, Decl(super2.ts, 17, 28)) return super.x(); >super.x : Symbol(Sub5.x, Decl(super2.ts, 11, 26)) @@ -40,7 +40,7 @@ class SubSub5 extends Sub5 { >x : Symbol(Sub5.x, Decl(super2.ts, 11, 26)) } public y() { ->y : Symbol(y, Decl(super2.ts, 20, 5)) +>y : Symbol(SubSub5.y, Decl(super2.ts, 20, 5)) return super.y(); >super.y : Symbol(Base5.y, Decl(super2.ts, 4, 5)) @@ -54,7 +54,7 @@ class Base6 { >Base6 : Symbol(Base6, Decl(super2.ts, 24, 1)) public x() { ->x : Symbol(x, Decl(super2.ts, 27, 13)) +>x : Symbol(Base6.x, Decl(super2.ts, 27, 13)) return "BaseX"; } @@ -65,7 +65,7 @@ class Sub6 extends Base6 { >Base6 : Symbol(Base6, Decl(super2.ts, 24, 1)) public y() { ->y : Symbol(y, Decl(super2.ts, 33, 26)) +>y : Symbol(Sub6.y, Decl(super2.ts, 33, 26)) return "SubY"; } @@ -76,7 +76,7 @@ class SubSub6 extends Sub6 { >Sub6 : Symbol(Sub6, Decl(super2.ts, 31, 1)) public y() { ->y : Symbol(y, Decl(super2.ts, 39, 28)) +>y : Symbol(SubSub6.y, Decl(super2.ts, 39, 28)) return super.y(); >super.y : Symbol(Sub6.y, Decl(super2.ts, 33, 26)) diff --git a/tests/baselines/reference/superAccessInFatArrow1.symbols b/tests/baselines/reference/superAccessInFatArrow1.symbols index 9b0a0607e0a..88715df9a93 100644 --- a/tests/baselines/reference/superAccessInFatArrow1.symbols +++ b/tests/baselines/reference/superAccessInFatArrow1.symbols @@ -6,7 +6,7 @@ module test { >A : Symbol(A, Decl(superAccessInFatArrow1.ts, 0, 13)) foo() { ->foo : Symbol(foo, Decl(superAccessInFatArrow1.ts, 1, 20)) +>foo : Symbol(A.foo, Decl(superAccessInFatArrow1.ts, 1, 20)) } } export class B extends A { @@ -14,16 +14,16 @@ module test { >A : Symbol(A, Decl(superAccessInFatArrow1.ts, 0, 13)) bar(callback: () => void ) { ->bar : Symbol(bar, Decl(superAccessInFatArrow1.ts, 5, 30)) +>bar : Symbol(B.bar, Decl(superAccessInFatArrow1.ts, 5, 30)) >callback : Symbol(callback, Decl(superAccessInFatArrow1.ts, 6, 12)) } runme() { ->runme : Symbol(runme, Decl(superAccessInFatArrow1.ts, 7, 9)) +>runme : Symbol(B.runme, Decl(superAccessInFatArrow1.ts, 7, 9)) this.bar(() => { ->this.bar : Symbol(bar, Decl(superAccessInFatArrow1.ts, 5, 30)) +>this.bar : Symbol(B.bar, Decl(superAccessInFatArrow1.ts, 5, 30)) >this : Symbol(B, Decl(superAccessInFatArrow1.ts, 4, 5)) ->bar : Symbol(bar, Decl(superAccessInFatArrow1.ts, 5, 30)) +>bar : Symbol(B.bar, Decl(superAccessInFatArrow1.ts, 5, 30)) super.foo(); >super.foo : Symbol(A.foo, Decl(superAccessInFatArrow1.ts, 1, 20)) diff --git a/tests/baselines/reference/superCallBeforeThisAccessing1.symbols b/tests/baselines/reference/superCallBeforeThisAccessing1.symbols index 5a153728a73..63795342381 100644 --- a/tests/baselines/reference/superCallBeforeThisAccessing1.symbols +++ b/tests/baselines/reference/superCallBeforeThisAccessing1.symbols @@ -13,7 +13,7 @@ class D extends Base { >Base : Symbol(Base, Decl(superCallBeforeThisAccessing1.ts, 0, 24)) private _t; ->_t : Symbol(_t, Decl(superCallBeforeThisAccessing1.ts, 5, 22)) +>_t : Symbol(D._t, Decl(superCallBeforeThisAccessing1.ts, 5, 22)) constructor() { super(i); @@ -25,9 +25,9 @@ class D extends Base { t: this._t >t : Symbol(t, Decl(superCallBeforeThisAccessing1.ts, 9, 17)) ->this._t : Symbol(_t, Decl(superCallBeforeThisAccessing1.ts, 5, 22)) +>this._t : Symbol(D._t, Decl(superCallBeforeThisAccessing1.ts, 5, 22)) >this : Symbol(D, Decl(superCallBeforeThisAccessing1.ts, 4, 1)) ->_t : Symbol(_t, Decl(superCallBeforeThisAccessing1.ts, 5, 22)) +>_t : Symbol(D._t, Decl(superCallBeforeThisAccessing1.ts, 5, 22)) } var i = Factory.create(s); >i : Symbol(i, Decl(superCallBeforeThisAccessing1.ts, 12, 11)) diff --git a/tests/baselines/reference/superCallBeforeThisAccessing2.symbols b/tests/baselines/reference/superCallBeforeThisAccessing2.symbols index 2df2e62354a..3684f853101 100644 --- a/tests/baselines/reference/superCallBeforeThisAccessing2.symbols +++ b/tests/baselines/reference/superCallBeforeThisAccessing2.symbols @@ -10,14 +10,14 @@ class D extends Base { >Base : Symbol(Base, Decl(superCallBeforeThisAccessing2.ts, 0, 0)) private _t; ->_t : Symbol(_t, Decl(superCallBeforeThisAccessing2.ts, 3, 22)) +>_t : Symbol(D._t, Decl(superCallBeforeThisAccessing2.ts, 3, 22)) constructor() { super(() => { this._t }); // no error. only check when this is directly accessing in constructor >super : Symbol(Base, Decl(superCallBeforeThisAccessing2.ts, 0, 0)) ->this._t : Symbol(_t, Decl(superCallBeforeThisAccessing2.ts, 3, 22)) +>this._t : Symbol(D._t, Decl(superCallBeforeThisAccessing2.ts, 3, 22)) >this : Symbol(D, Decl(superCallBeforeThisAccessing2.ts, 2, 1)) ->_t : Symbol(_t, Decl(superCallBeforeThisAccessing2.ts, 3, 22)) +>_t : Symbol(D._t, Decl(superCallBeforeThisAccessing2.ts, 3, 22)) } } diff --git a/tests/baselines/reference/superCallBeforeThisAccessing5.symbols b/tests/baselines/reference/superCallBeforeThisAccessing5.symbols index a7628e3b8df..908f0f59add 100644 --- a/tests/baselines/reference/superCallBeforeThisAccessing5.symbols +++ b/tests/baselines/reference/superCallBeforeThisAccessing5.symbols @@ -3,13 +3,13 @@ class D extends null { >D : Symbol(D, Decl(superCallBeforeThisAccessing5.ts, 0, 0)) private _t; ->_t : Symbol(_t, Decl(superCallBeforeThisAccessing5.ts, 0, 22)) +>_t : Symbol(D._t, Decl(superCallBeforeThisAccessing5.ts, 0, 22)) constructor() { this._t; // No error ->this._t : Symbol(_t, Decl(superCallBeforeThisAccessing5.ts, 0, 22)) +>this._t : Symbol(D._t, Decl(superCallBeforeThisAccessing5.ts, 0, 22)) >this : Symbol(D, Decl(superCallBeforeThisAccessing5.ts, 0, 0)) ->_t : Symbol(_t, Decl(superCallBeforeThisAccessing5.ts, 0, 22)) +>_t : Symbol(D._t, Decl(superCallBeforeThisAccessing5.ts, 0, 22)) } } diff --git a/tests/baselines/reference/superCallBeforeThisAccessing8.symbols b/tests/baselines/reference/superCallBeforeThisAccessing8.symbols index 65341ee9fe3..e60ec92e917 100644 --- a/tests/baselines/reference/superCallBeforeThisAccessing8.symbols +++ b/tests/baselines/reference/superCallBeforeThisAccessing8.symbols @@ -10,7 +10,7 @@ class D extends Base { >Base : Symbol(Base, Decl(superCallBeforeThisAccessing8.ts, 0, 0)) private _t; ->_t : Symbol(_t, Decl(superCallBeforeThisAccessing8.ts, 3, 22)) +>_t : Symbol(D._t, Decl(superCallBeforeThisAccessing8.ts, 3, 22)) constructor() { let x = { @@ -23,9 +23,9 @@ class D extends Base { j: this._t, // no error >j : Symbol(j, Decl(superCallBeforeThisAccessing8.ts, 7, 32)) ->this._t : Symbol(_t, Decl(superCallBeforeThisAccessing8.ts, 3, 22)) +>this._t : Symbol(D._t, Decl(superCallBeforeThisAccessing8.ts, 3, 22)) >this : Symbol(D, Decl(superCallBeforeThisAccessing8.ts, 2, 1)) ->_t : Symbol(_t, Decl(superCallBeforeThisAccessing8.ts, 3, 22)) +>_t : Symbol(D._t, Decl(superCallBeforeThisAccessing8.ts, 3, 22)) } } } diff --git a/tests/baselines/reference/superCallFromClassThatDerivesFromGenericType1.symbols b/tests/baselines/reference/superCallFromClassThatDerivesFromGenericType1.symbols index 7220d65dc89..15105a27b98 100644 --- a/tests/baselines/reference/superCallFromClassThatDerivesFromGenericType1.symbols +++ b/tests/baselines/reference/superCallFromClassThatDerivesFromGenericType1.symbols @@ -4,7 +4,7 @@ declare class B { >T : Symbol(T, Decl(superCallFromClassThatDerivesFromGenericType1.ts, 0, 16)) m(): B; ->m : Symbol(m, Decl(superCallFromClassThatDerivesFromGenericType1.ts, 0, 20)) +>m : Symbol(B.m, Decl(superCallFromClassThatDerivesFromGenericType1.ts, 0, 20)) >U : Symbol(U, Decl(superCallFromClassThatDerivesFromGenericType1.ts, 1, 6)) >B : Symbol(B, Decl(superCallFromClassThatDerivesFromGenericType1.ts, 0, 0)) >U : Symbol(U, Decl(superCallFromClassThatDerivesFromGenericType1.ts, 1, 6)) diff --git a/tests/baselines/reference/superCallFromClassThatDerivesFromGenericType2.symbols b/tests/baselines/reference/superCallFromClassThatDerivesFromGenericType2.symbols index eca7cd26b03..e04a2fd286a 100644 --- a/tests/baselines/reference/superCallFromClassThatDerivesFromGenericType2.symbols +++ b/tests/baselines/reference/superCallFromClassThatDerivesFromGenericType2.symbols @@ -4,7 +4,7 @@ declare class B { >T : Symbol(T, Decl(superCallFromClassThatDerivesFromGenericType2.ts, 0, 16)) m(): B; ->m : Symbol(m, Decl(superCallFromClassThatDerivesFromGenericType2.ts, 0, 20)) +>m : Symbol(B.m, Decl(superCallFromClassThatDerivesFromGenericType2.ts, 0, 20)) >U : Symbol(U, Decl(superCallFromClassThatDerivesFromGenericType2.ts, 1, 6)) >B : Symbol(B, Decl(superCallFromClassThatDerivesFromGenericType2.ts, 0, 0)) >U : Symbol(U, Decl(superCallFromClassThatDerivesFromGenericType2.ts, 1, 6)) diff --git a/tests/baselines/reference/superCallInsideObjectLiteralExpression.symbols b/tests/baselines/reference/superCallInsideObjectLiteralExpression.symbols index d01899ecfef..9199c3e5a04 100644 --- a/tests/baselines/reference/superCallInsideObjectLiteralExpression.symbols +++ b/tests/baselines/reference/superCallInsideObjectLiteralExpression.symbols @@ -3,7 +3,7 @@ class A { >A : Symbol(A, Decl(superCallInsideObjectLiteralExpression.ts, 0, 0)) foo() { ->foo : Symbol(foo, Decl(superCallInsideObjectLiteralExpression.ts, 0, 9)) +>foo : Symbol(A.foo, Decl(superCallInsideObjectLiteralExpression.ts, 0, 9)) } } diff --git a/tests/baselines/reference/superCallParameterContextualTyping1.symbols b/tests/baselines/reference/superCallParameterContextualTyping1.symbols index ed845b7cd4e..91eff4b3c8b 100644 --- a/tests/baselines/reference/superCallParameterContextualTyping1.symbols +++ b/tests/baselines/reference/superCallParameterContextualTyping1.symbols @@ -6,7 +6,7 @@ class A { >T2 : Symbol(T2, Decl(superCallParameterContextualTyping1.ts, 1, 11)) constructor(private map: (value: T1) => T2) { ->map : Symbol(map, Decl(superCallParameterContextualTyping1.ts, 2, 16)) +>map : Symbol(A.map, Decl(superCallParameterContextualTyping1.ts, 2, 16)) >value : Symbol(value, Decl(superCallParameterContextualTyping1.ts, 2, 30)) >T1 : Symbol(T1, Decl(superCallParameterContextualTyping1.ts, 1, 8)) >T2 : Symbol(T2, Decl(superCallParameterContextualTyping1.ts, 1, 11)) @@ -22,7 +22,7 @@ class B extends A { constructor() { super(value => String(value.toExponential())); } >super : Symbol(A, Decl(superCallParameterContextualTyping1.ts, 0, 0)) >value : Symbol(value, Decl(superCallParameterContextualTyping1.ts, 9, 26)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >value.toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --)) >value : Symbol(value, Decl(superCallParameterContextualTyping1.ts, 9, 26)) >toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --)) diff --git a/tests/baselines/reference/superCallParameterContextualTyping3.symbols b/tests/baselines/reference/superCallParameterContextualTyping3.symbols index e51687b4539..55101b7f053 100644 --- a/tests/baselines/reference/superCallParameterContextualTyping3.symbols +++ b/tests/baselines/reference/superCallParameterContextualTyping3.symbols @@ -4,7 +4,7 @@ interface ContextualType { >T : Symbol(T, Decl(superCallParameterContextualTyping3.ts, 0, 25)) method(parameter: T): void; ->method : Symbol(method, Decl(superCallParameterContextualTyping3.ts, 0, 29)) +>method : Symbol(ContextualType.method, Decl(superCallParameterContextualTyping3.ts, 0, 29)) >parameter : Symbol(parameter, Decl(superCallParameterContextualTyping3.ts, 1, 11)) >T : Symbol(T, Decl(superCallParameterContextualTyping3.ts, 0, 25)) } @@ -20,7 +20,7 @@ class CBase { } foo(param: ContextualType) { ->foo : Symbol(foo, Decl(superCallParameterContextualTyping3.ts, 6, 5)) +>foo : Symbol(CBase.foo, Decl(superCallParameterContextualTyping3.ts, 6, 5)) >param : Symbol(param, Decl(superCallParameterContextualTyping3.ts, 8, 8)) >ContextualType : Symbol(ContextualType, Decl(superCallParameterContextualTyping3.ts, 0, 0)) >T : Symbol(T, Decl(superCallParameterContextualTyping3.ts, 4, 12)) diff --git a/tests/baselines/reference/superCalls.symbols b/tests/baselines/reference/superCalls.symbols index 3c91d2bace0..61835288637 100644 --- a/tests/baselines/reference/superCalls.symbols +++ b/tests/baselines/reference/superCalls.symbols @@ -3,7 +3,7 @@ class Base { >Base : Symbol(Base, Decl(superCalls.ts, 0, 0)) x = 43; ->x : Symbol(x, Decl(superCalls.ts, 0, 12)) +>x : Symbol(Base.x, Decl(superCalls.ts, 0, 12)) constructor(n: string) { >n : Symbol(n, Decl(superCalls.ts, 2, 16)) @@ -20,7 +20,7 @@ class Derived extends Base { //super call in class constructor of derived type constructor(public q: number) { ->q : Symbol(q, Decl(superCalls.ts, 11, 16)) +>q : Symbol(Derived.q, Decl(superCalls.ts, 11, 16)) super(''); >super : Symbol(Base, Decl(superCalls.ts, 0, 0)) diff --git a/tests/baselines/reference/superInCatchBlock1.symbols b/tests/baselines/reference/superInCatchBlock1.symbols index 02b931a67ff..374a736e338 100644 --- a/tests/baselines/reference/superInCatchBlock1.symbols +++ b/tests/baselines/reference/superInCatchBlock1.symbols @@ -3,14 +3,14 @@ class A { >A : Symbol(A, Decl(superInCatchBlock1.ts, 0, 0)) m(): void { } ->m : Symbol(m, Decl(superInCatchBlock1.ts, 0, 9)) +>m : Symbol(A.m, Decl(superInCatchBlock1.ts, 0, 9)) } class B extends A { >B : Symbol(B, Decl(superInCatchBlock1.ts, 2, 1)) >A : Symbol(A, Decl(superInCatchBlock1.ts, 0, 0)) m() { ->m : Symbol(m, Decl(superInCatchBlock1.ts, 3, 19)) +>m : Symbol(B.m, Decl(superInCatchBlock1.ts, 3, 19)) try { } diff --git a/tests/baselines/reference/superPropertyAccessInComputedPropertiesOfNestedType_ES5.symbols b/tests/baselines/reference/superPropertyAccessInComputedPropertiesOfNestedType_ES5.symbols index 1379d50179f..d29cfed7084 100644 --- a/tests/baselines/reference/superPropertyAccessInComputedPropertiesOfNestedType_ES5.symbols +++ b/tests/baselines/reference/superPropertyAccessInComputedPropertiesOfNestedType_ES5.symbols @@ -3,7 +3,7 @@ class A { >A : Symbol(A, Decl(superPropertyAccessInComputedPropertiesOfNestedType_ES5.ts, 0, 0)) foo() { return 1; } ->foo : Symbol(foo, Decl(superPropertyAccessInComputedPropertiesOfNestedType_ES5.ts, 0, 9)) +>foo : Symbol(A.foo, Decl(superPropertyAccessInComputedPropertiesOfNestedType_ES5.ts, 0, 9)) } class B extends A { @@ -11,10 +11,10 @@ class B extends A { >A : Symbol(A, Decl(superPropertyAccessInComputedPropertiesOfNestedType_ES5.ts, 0, 0)) foo() { return 2; } ->foo : Symbol(foo, Decl(superPropertyAccessInComputedPropertiesOfNestedType_ES5.ts, 4, 19)) +>foo : Symbol(B.foo, Decl(superPropertyAccessInComputedPropertiesOfNestedType_ES5.ts, 4, 19)) bar() { ->bar : Symbol(bar, Decl(superPropertyAccessInComputedPropertiesOfNestedType_ES5.ts, 5, 23)) +>bar : Symbol(B.bar, Decl(superPropertyAccessInComputedPropertiesOfNestedType_ES5.ts, 5, 23)) return class { [super.foo()]() { diff --git a/tests/baselines/reference/superPropertyAccessInComputedPropertiesOfNestedType_ES6.symbols b/tests/baselines/reference/superPropertyAccessInComputedPropertiesOfNestedType_ES6.symbols index 12446259f32..2eae0080f4b 100644 --- a/tests/baselines/reference/superPropertyAccessInComputedPropertiesOfNestedType_ES6.symbols +++ b/tests/baselines/reference/superPropertyAccessInComputedPropertiesOfNestedType_ES6.symbols @@ -3,7 +3,7 @@ class A { >A : Symbol(A, Decl(superPropertyAccessInComputedPropertiesOfNestedType_ES6.ts, 0, 0)) foo() { return 1; } ->foo : Symbol(foo, Decl(superPropertyAccessInComputedPropertiesOfNestedType_ES6.ts, 0, 9)) +>foo : Symbol(A.foo, Decl(superPropertyAccessInComputedPropertiesOfNestedType_ES6.ts, 0, 9)) } class B extends A { @@ -11,10 +11,10 @@ class B extends A { >A : Symbol(A, Decl(superPropertyAccessInComputedPropertiesOfNestedType_ES6.ts, 0, 0)) foo() { return 2; } ->foo : Symbol(foo, Decl(superPropertyAccessInComputedPropertiesOfNestedType_ES6.ts, 4, 19)) +>foo : Symbol(B.foo, Decl(superPropertyAccessInComputedPropertiesOfNestedType_ES6.ts, 4, 19)) bar() { ->bar : Symbol(bar, Decl(superPropertyAccessInComputedPropertiesOfNestedType_ES6.ts, 5, 23)) +>bar : Symbol(B.bar, Decl(superPropertyAccessInComputedPropertiesOfNestedType_ES6.ts, 5, 23)) return class { [super.foo()]() { diff --git a/tests/baselines/reference/superPropertyAccess_ES6.symbols b/tests/baselines/reference/superPropertyAccess_ES6.symbols index ada6c5b8057..61b8ab3dc76 100644 --- a/tests/baselines/reference/superPropertyAccess_ES6.symbols +++ b/tests/baselines/reference/superPropertyAccess_ES6.symbols @@ -4,10 +4,10 @@ class MyBase { >MyBase : Symbol(MyBase, Decl(superPropertyAccess_ES6.ts, 0, 0)) getValue(): number { return 1; } ->getValue : Symbol(getValue, Decl(superPropertyAccess_ES6.ts, 1, 14)) +>getValue : Symbol(MyBase.getValue, Decl(superPropertyAccess_ES6.ts, 1, 14)) get value(): number { return 1; } ->value : Symbol(value, Decl(superPropertyAccess_ES6.ts, 2, 34)) +>value : Symbol(MyBase.value, Decl(superPropertyAccess_ES6.ts, 2, 34)) } class MyDerived extends MyBase { @@ -46,20 +46,20 @@ class A { >A : Symbol(A, Decl(superPropertyAccess_ES6.ts, 16, 17)) private _property: string; ->_property : Symbol(_property, Decl(superPropertyAccess_ES6.ts, 18, 9)) +>_property : Symbol(A._property, Decl(superPropertyAccess_ES6.ts, 18, 9)) get property() { return this._property; } ->property : Symbol(property, Decl(superPropertyAccess_ES6.ts, 19, 30), Decl(superPropertyAccess_ES6.ts, 20, 45)) ->this._property : Symbol(_property, Decl(superPropertyAccess_ES6.ts, 18, 9)) +>property : Symbol(A.property, Decl(superPropertyAccess_ES6.ts, 19, 30), Decl(superPropertyAccess_ES6.ts, 20, 45)) +>this._property : Symbol(A._property, Decl(superPropertyAccess_ES6.ts, 18, 9)) >this : Symbol(A, Decl(superPropertyAccess_ES6.ts, 16, 17)) ->_property : Symbol(_property, Decl(superPropertyAccess_ES6.ts, 18, 9)) +>_property : Symbol(A._property, Decl(superPropertyAccess_ES6.ts, 18, 9)) set property(value: string) { this._property = value } ->property : Symbol(property, Decl(superPropertyAccess_ES6.ts, 19, 30), Decl(superPropertyAccess_ES6.ts, 20, 45)) +>property : Symbol(A.property, Decl(superPropertyAccess_ES6.ts, 19, 30), Decl(superPropertyAccess_ES6.ts, 20, 45)) >value : Symbol(value, Decl(superPropertyAccess_ES6.ts, 21, 17)) ->this._property : Symbol(_property, Decl(superPropertyAccess_ES6.ts, 18, 9)) +>this._property : Symbol(A._property, Decl(superPropertyAccess_ES6.ts, 18, 9)) >this : Symbol(A, Decl(superPropertyAccess_ES6.ts, 16, 17)) ->_property : Symbol(_property, Decl(superPropertyAccess_ES6.ts, 18, 9)) +>_property : Symbol(A._property, Decl(superPropertyAccess_ES6.ts, 18, 9)) >value : Symbol(value, Decl(superPropertyAccess_ES6.ts, 21, 17)) } @@ -68,7 +68,7 @@ class B extends A { >A : Symbol(A, Decl(superPropertyAccess_ES6.ts, 16, 17)) set property(value: string) { ->property : Symbol(property, Decl(superPropertyAccess_ES6.ts, 24, 19)) +>property : Symbol(B.property, Decl(superPropertyAccess_ES6.ts, 24, 19)) >value : Symbol(value, Decl(superPropertyAccess_ES6.ts, 25, 17)) super.property = value + " addition"; diff --git a/tests/baselines/reference/superSymbolIndexedAccess1.symbols b/tests/baselines/reference/superSymbolIndexedAccess1.symbols index 47131f231cb..9141771f0c9 100644 --- a/tests/baselines/reference/superSymbolIndexedAccess1.symbols +++ b/tests/baselines/reference/superSymbolIndexedAccess1.symbols @@ -1,9 +1,9 @@ === tests/cases/conformance/expressions/superPropertyAccess/superSymbolIndexedAccess1.ts === var symbol = Symbol.for('myThing'); >symbol : Symbol(symbol, Decl(superSymbolIndexedAccess1.ts, 0, 3)) ->Symbol.for : Symbol(SymbolConstructor.for, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->for : Symbol(SymbolConstructor.for, Decl(lib.d.ts, --, --)) +>Symbol.for : Symbol(SymbolConstructor.for, Decl(lib.es2015.symbol.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>for : Symbol(SymbolConstructor.for, Decl(lib.es2015.symbol.d.ts, --, --)) class Foo { >Foo : Symbol(Foo, Decl(superSymbolIndexedAccess1.ts, 0, 35)) diff --git a/tests/baselines/reference/superSymbolIndexedAccess2.symbols b/tests/baselines/reference/superSymbolIndexedAccess2.symbols index 9b65ce358bb..68b503778e7 100644 --- a/tests/baselines/reference/superSymbolIndexedAccess2.symbols +++ b/tests/baselines/reference/superSymbolIndexedAccess2.symbols @@ -4,9 +4,9 @@ class Foo { >Foo : Symbol(Foo, Decl(superSymbolIndexedAccess2.ts, 0, 0)) [Symbol.isConcatSpreadable]() { ->Symbol.isConcatSpreadable : Symbol(SymbolConstructor.isConcatSpreadable, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->isConcatSpreadable : Symbol(SymbolConstructor.isConcatSpreadable, Decl(lib.d.ts, --, --)) +>Symbol.isConcatSpreadable : Symbol(SymbolConstructor.isConcatSpreadable, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>isConcatSpreadable : Symbol(SymbolConstructor.isConcatSpreadable, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) return 0; } @@ -17,14 +17,14 @@ class Bar extends Foo { >Foo : Symbol(Foo, Decl(superSymbolIndexedAccess2.ts, 0, 0)) [Symbol.isConcatSpreadable]() { ->Symbol.isConcatSpreadable : Symbol(SymbolConstructor.isConcatSpreadable, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->isConcatSpreadable : Symbol(SymbolConstructor.isConcatSpreadable, Decl(lib.d.ts, --, --)) +>Symbol.isConcatSpreadable : Symbol(SymbolConstructor.isConcatSpreadable, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>isConcatSpreadable : Symbol(SymbolConstructor.isConcatSpreadable, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) return super[Symbol.isConcatSpreadable](); >super : Symbol(Foo, Decl(superSymbolIndexedAccess2.ts, 0, 0)) ->Symbol.isConcatSpreadable : Symbol(SymbolConstructor.isConcatSpreadable, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->isConcatSpreadable : Symbol(SymbolConstructor.isConcatSpreadable, Decl(lib.d.ts, --, --)) +>Symbol.isConcatSpreadable : Symbol(SymbolConstructor.isConcatSpreadable, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>isConcatSpreadable : Symbol(SymbolConstructor.isConcatSpreadable, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) } } diff --git a/tests/baselines/reference/superWithGenericSpecialization.symbols b/tests/baselines/reference/superWithGenericSpecialization.symbols index 7a8f93b4e28..1ead844b154 100644 --- a/tests/baselines/reference/superWithGenericSpecialization.symbols +++ b/tests/baselines/reference/superWithGenericSpecialization.symbols @@ -4,7 +4,7 @@ class C { >T : Symbol(T, Decl(superWithGenericSpecialization.ts, 0, 8)) x: T; ->x : Symbol(x, Decl(superWithGenericSpecialization.ts, 0, 12)) +>x : Symbol(C.x, Decl(superWithGenericSpecialization.ts, 0, 12)) >T : Symbol(T, Decl(superWithGenericSpecialization.ts, 0, 8)) } @@ -14,7 +14,7 @@ class D extends C { >C : Symbol(C, Decl(superWithGenericSpecialization.ts, 0, 0)) y: T; ->y : Symbol(y, Decl(superWithGenericSpecialization.ts, 4, 30)) +>y : Symbol(D.y, Decl(superWithGenericSpecialization.ts, 4, 30)) >T : Symbol(T, Decl(superWithGenericSpecialization.ts, 4, 8)) constructor() { diff --git a/tests/baselines/reference/superWithGenerics.symbols b/tests/baselines/reference/superWithGenerics.symbols index 43a7e7493b6..79bda5ab120 100644 --- a/tests/baselines/reference/superWithGenerics.symbols +++ b/tests/baselines/reference/superWithGenerics.symbols @@ -4,7 +4,7 @@ declare class B { >T : Symbol(T, Decl(superWithGenerics.ts, 0, 16)) m(): B; ->m : Symbol(m, Decl(superWithGenerics.ts, 0, 20)) +>m : Symbol(B.m, Decl(superWithGenerics.ts, 0, 20)) >U : Symbol(U, Decl(superWithGenerics.ts, 1, 6)) >B : Symbol(B, Decl(superWithGenerics.ts, 0, 0)) >U : Symbol(U, Decl(superWithGenerics.ts, 1, 6)) diff --git a/tests/baselines/reference/switchAssignmentCompat.errors.txt b/tests/baselines/reference/switchAssignmentCompat.errors.txt index 6a2755365ab..747a1035b68 100644 --- a/tests/baselines/reference/switchAssignmentCompat.errors.txt +++ b/tests/baselines/reference/switchAssignmentCompat.errors.txt @@ -1,4 +1,4 @@ -tests/cases/compiler/switchAssignmentCompat.ts(4,10): error TS2322: Type 'typeof Foo' is not assignable to type 'number'. +tests/cases/compiler/switchAssignmentCompat.ts(4,10): error TS2678: Type 'typeof Foo' is not comparable to type 'number'. ==== tests/cases/compiler/switchAssignmentCompat.ts (1 errors) ==== @@ -7,6 +7,6 @@ tests/cases/compiler/switchAssignmentCompat.ts(4,10): error TS2322: Type 'typeof switch (0) { case Foo: break; // Error expected ~~~ -!!! error TS2322: Type 'typeof Foo' is not assignable to type 'number'. +!!! error TS2678: Type 'typeof Foo' is not comparable to type 'number'. } \ No newline at end of file diff --git a/tests/baselines/reference/switchCaseWithIntersectionTypes01.errors.txt b/tests/baselines/reference/switchCaseWithIntersectionTypes01.errors.txt new file mode 100644 index 00000000000..d42f407a784 --- /dev/null +++ b/tests/baselines/reference/switchCaseWithIntersectionTypes01.errors.txt @@ -0,0 +1,38 @@ +tests/cases/conformance/types/typeRelationships/comparable/switchCaseWithIntersectionTypes01.ts(19,10): error TS2678: Type 'number & boolean' is not comparable to type 'string & number'. + Type 'number & boolean' is not comparable to type 'string'. +tests/cases/conformance/types/typeRelationships/comparable/switchCaseWithIntersectionTypes01.ts(23,10): error TS2678: Type 'boolean' is not comparable to type 'string & number'. + Type 'boolean' is not comparable to type 'string'. + + +==== tests/cases/conformance/types/typeRelationships/comparable/switchCaseWithIntersectionTypes01.ts (2 errors) ==== + + var strAndNum: string & number; + var numAndBool: number & boolean; + var str: string; + var num: number; + var bool: boolean; + + switch (strAndNum) { + // Identical + case strAndNum: + break; + + // Constituents + case str: + case num: + break; + + // Overlap in constituents + case numAndBool: + ~~~~~~~~~~ +!!! error TS2678: Type 'number & boolean' is not comparable to type 'string & number'. +!!! error TS2678: Type 'number & boolean' is not comparable to type 'string'. + break; + + // No relation + case bool: + ~~~~ +!!! error TS2678: Type 'boolean' is not comparable to type 'string & number'. +!!! error TS2678: Type 'boolean' is not comparable to type 'string'. + break; + } \ No newline at end of file diff --git a/tests/baselines/reference/switchCaseWithIntersectionTypes01.js b/tests/baselines/reference/switchCaseWithIntersectionTypes01.js new file mode 100644 index 00000000000..4e0ddf7ea76 --- /dev/null +++ b/tests/baselines/reference/switchCaseWithIntersectionTypes01.js @@ -0,0 +1,48 @@ +//// [switchCaseWithIntersectionTypes01.ts] + +var strAndNum: string & number; +var numAndBool: number & boolean; +var str: string; +var num: number; +var bool: boolean; + +switch (strAndNum) { + // Identical + case strAndNum: + break; + + // Constituents + case str: + case num: + break; + + // Overlap in constituents + case numAndBool: + break; + + // No relation + case bool: + break; +} + +//// [switchCaseWithIntersectionTypes01.js] +var strAndNum; +var numAndBool; +var str; +var num; +var bool; +switch (strAndNum) { + // Identical + case strAndNum: + break; + // Constituents + case str: + case num: + break; + // Overlap in constituents + case numAndBool: + break; + // No relation + case bool: + break; +} diff --git a/tests/baselines/reference/switchCaseWithUnionTypes01.errors.txt b/tests/baselines/reference/switchCaseWithUnionTypes01.errors.txt new file mode 100644 index 00000000000..5f164f57343 --- /dev/null +++ b/tests/baselines/reference/switchCaseWithUnionTypes01.errors.txt @@ -0,0 +1,31 @@ +tests/cases/conformance/types/typeRelationships/comparable/switchCaseWithUnionTypes01.ts(23,10): error TS2678: Type 'boolean' is not comparable to type 'string | number'. + + +==== tests/cases/conformance/types/typeRelationships/comparable/switchCaseWithUnionTypes01.ts (1 errors) ==== + + var strOrNum: string | number; + var numOrBool: number | boolean; + var str: string; + var num: number; + var bool: boolean; + + switch (strOrNum) { + // Identical + case strOrNum: + break; + + // Constituents + case str: + case num: + break; + + // Overlap in constituents + case numOrBool: + break; + + // No relation + case bool: + ~~~~ +!!! error TS2678: Type 'boolean' is not comparable to type 'string | number'. + break; + } \ No newline at end of file diff --git a/tests/baselines/reference/switchCaseWithUnionTypes01.js b/tests/baselines/reference/switchCaseWithUnionTypes01.js new file mode 100644 index 00000000000..5c34ea674dc --- /dev/null +++ b/tests/baselines/reference/switchCaseWithUnionTypes01.js @@ -0,0 +1,48 @@ +//// [switchCaseWithUnionTypes01.ts] + +var strOrNum: string | number; +var numOrBool: number | boolean; +var str: string; +var num: number; +var bool: boolean; + +switch (strOrNum) { + // Identical + case strOrNum: + break; + + // Constituents + case str: + case num: + break; + + // Overlap in constituents + case numOrBool: + break; + + // No relation + case bool: + break; +} + +//// [switchCaseWithUnionTypes01.js] +var strOrNum; +var numOrBool; +var str; +var num; +var bool; +switch (strOrNum) { + // Identical + case strOrNum: + break; + // Constituents + case str: + case num: + break; + // Overlap in constituents + case numOrBool: + break; + // No relation + case bool: + break; +} diff --git a/tests/baselines/reference/switchCasesExpressionTypeMismatch.errors.txt b/tests/baselines/reference/switchCasesExpressionTypeMismatch.errors.txt index de739af007d..26d39efef48 100644 --- a/tests/baselines/reference/switchCasesExpressionTypeMismatch.errors.txt +++ b/tests/baselines/reference/switchCasesExpressionTypeMismatch.errors.txt @@ -1,6 +1,6 @@ -tests/cases/compiler/switchCasesExpressionTypeMismatch.ts(4,10): error TS2322: Type 'typeof Foo' is not assignable to type 'number'. -tests/cases/compiler/switchCasesExpressionTypeMismatch.ts(5,10): error TS2322: Type 'string' is not assignable to type 'number'. -tests/cases/compiler/switchCasesExpressionTypeMismatch.ts(7,10): error TS2322: Type 'boolean' is not assignable to type 'number'. +tests/cases/compiler/switchCasesExpressionTypeMismatch.ts(4,10): error TS2678: Type 'typeof Foo' is not comparable to type 'number'. +tests/cases/compiler/switchCasesExpressionTypeMismatch.ts(5,10): error TS2678: Type 'string' is not comparable to type 'number'. +tests/cases/compiler/switchCasesExpressionTypeMismatch.ts(7,10): error TS2678: Type 'boolean' is not comparable to type 'number'. ==== tests/cases/compiler/switchCasesExpressionTypeMismatch.ts (3 errors) ==== @@ -9,14 +9,14 @@ tests/cases/compiler/switchCasesExpressionTypeMismatch.ts(7,10): error TS2322: T switch (0) { case Foo: break; // Error ~~~ -!!! error TS2322: Type 'typeof Foo' is not assignable to type 'number'. +!!! error TS2678: Type 'typeof Foo' is not comparable to type 'number'. case "sss": break; // Error ~~~~~ -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2678: Type 'string' is not comparable to type 'number'. case 123: break; // No Error case true: break; // Error ~~~~ -!!! error TS2322: Type 'boolean' is not assignable to type 'number'. +!!! error TS2678: Type 'boolean' is not comparable to type 'number'. } var s: any = 0; diff --git a/tests/baselines/reference/switchStatements.errors.txt b/tests/baselines/reference/switchStatements.errors.txt index c99b0eba909..81e24aa69a8 100644 --- a/tests/baselines/reference/switchStatements.errors.txt +++ b/tests/baselines/reference/switchStatements.errors.txt @@ -1,4 +1,4 @@ -tests/cases/conformance/statements/switchStatements/switchStatements.ts(35,20): error TS2322: Type '{ id: number; name: string; }' is not assignable to type 'C'. +tests/cases/conformance/statements/switchStatements/switchStatements.ts(35,20): error TS2678: Type '{ id: number; name: string; }' is not comparable to type 'C'. Object literal may only specify known properties, and 'name' does not exist in type 'C'. @@ -39,8 +39,8 @@ tests/cases/conformance/statements/switchStatements/switchStatements.ts(35,20): case new D(): case { id: 12, name: '' }: ~~~~~~~~ -!!! error TS2322: Type '{ id: number; name: string; }' is not assignable to type 'C'. -!!! error TS2322: Object literal may only specify known properties, and 'name' does not exist in type 'C'. +!!! error TS2678: Type '{ id: number; name: string; }' is not comparable to type 'C'. +!!! error TS2678: Object literal may only specify known properties, and 'name' does not exist in type 'C'. case new C(): } diff --git a/tests/baselines/reference/symbolDeclarationEmit1.symbols b/tests/baselines/reference/symbolDeclarationEmit1.symbols index 0b1999cf606..86f57e7de92 100644 --- a/tests/baselines/reference/symbolDeclarationEmit1.symbols +++ b/tests/baselines/reference/symbolDeclarationEmit1.symbols @@ -3,7 +3,7 @@ class C { >C : Symbol(C, Decl(symbolDeclarationEmit1.ts, 0, 0)) [Symbol.toPrimitive]: number; ->Symbol.toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.d.ts, --, --)) +>Symbol.toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) } diff --git a/tests/baselines/reference/symbolDeclarationEmit10.symbols b/tests/baselines/reference/symbolDeclarationEmit10.symbols index 7d7cbf257df..bcc562e478e 100644 --- a/tests/baselines/reference/symbolDeclarationEmit10.symbols +++ b/tests/baselines/reference/symbolDeclarationEmit10.symbols @@ -3,13 +3,13 @@ var obj = { >obj : Symbol(obj, Decl(symbolDeclarationEmit10.ts, 0, 3)) get [Symbol.isConcatSpreadable]() { return '' }, ->Symbol.isConcatSpreadable : Symbol(SymbolConstructor.isConcatSpreadable, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->isConcatSpreadable : Symbol(SymbolConstructor.isConcatSpreadable, Decl(lib.d.ts, --, --)) +>Symbol.isConcatSpreadable : Symbol(SymbolConstructor.isConcatSpreadable, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>isConcatSpreadable : Symbol(SymbolConstructor.isConcatSpreadable, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) set [Symbol.isConcatSpreadable](x) { } ->Symbol.isConcatSpreadable : Symbol(SymbolConstructor.isConcatSpreadable, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->isConcatSpreadable : Symbol(SymbolConstructor.isConcatSpreadable, Decl(lib.d.ts, --, --)) +>Symbol.isConcatSpreadable : Symbol(SymbolConstructor.isConcatSpreadable, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>isConcatSpreadable : Symbol(SymbolConstructor.isConcatSpreadable, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) >x : Symbol(x, Decl(symbolDeclarationEmit10.ts, 2, 36)) } diff --git a/tests/baselines/reference/symbolDeclarationEmit11.symbols b/tests/baselines/reference/symbolDeclarationEmit11.symbols index a8b9ab0757d..485bb58fb2a 100644 --- a/tests/baselines/reference/symbolDeclarationEmit11.symbols +++ b/tests/baselines/reference/symbolDeclarationEmit11.symbols @@ -3,23 +3,23 @@ class C { >C : Symbol(C, Decl(symbolDeclarationEmit11.ts, 0, 0)) static [Symbol.iterator] = 0; ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) static [Symbol.isConcatSpreadable]() { } ->Symbol.isConcatSpreadable : Symbol(SymbolConstructor.isConcatSpreadable, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->isConcatSpreadable : Symbol(SymbolConstructor.isConcatSpreadable, Decl(lib.d.ts, --, --)) +>Symbol.isConcatSpreadable : Symbol(SymbolConstructor.isConcatSpreadable, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>isConcatSpreadable : Symbol(SymbolConstructor.isConcatSpreadable, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) static get [Symbol.toPrimitive]() { return ""; } ->Symbol.toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.d.ts, --, --)) +>Symbol.toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) static set [Symbol.toPrimitive](x) { } ->Symbol.toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.d.ts, --, --)) +>Symbol.toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) >x : Symbol(x, Decl(symbolDeclarationEmit11.ts, 4, 36)) } diff --git a/tests/baselines/reference/symbolDeclarationEmit13.symbols b/tests/baselines/reference/symbolDeclarationEmit13.symbols index 9ac140cbcc4..b0884c44cb8 100644 --- a/tests/baselines/reference/symbolDeclarationEmit13.symbols +++ b/tests/baselines/reference/symbolDeclarationEmit13.symbols @@ -3,13 +3,13 @@ class C { >C : Symbol(C, Decl(symbolDeclarationEmit13.ts, 0, 0)) get [Symbol.toPrimitive]() { return ""; } ->Symbol.toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.d.ts, --, --)) +>Symbol.toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) set [Symbol.toStringTag](x) { } ->Symbol.toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.d.ts, --, --)) +>Symbol.toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) >x : Symbol(x, Decl(symbolDeclarationEmit13.ts, 2, 29)) } diff --git a/tests/baselines/reference/symbolDeclarationEmit14.symbols b/tests/baselines/reference/symbolDeclarationEmit14.symbols index 4ee1d1d2ebd..e20e3348309 100644 --- a/tests/baselines/reference/symbolDeclarationEmit14.symbols +++ b/tests/baselines/reference/symbolDeclarationEmit14.symbols @@ -3,12 +3,12 @@ class C { >C : Symbol(C, Decl(symbolDeclarationEmit14.ts, 0, 0)) get [Symbol.toPrimitive]() { return ""; } ->Symbol.toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.d.ts, --, --)) +>Symbol.toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) get [Symbol.toStringTag]() { return ""; } ->Symbol.toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.d.ts, --, --)) +>Symbol.toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) } diff --git a/tests/baselines/reference/symbolDeclarationEmit2.symbols b/tests/baselines/reference/symbolDeclarationEmit2.symbols index f3d7253f1af..348760f0d7d 100644 --- a/tests/baselines/reference/symbolDeclarationEmit2.symbols +++ b/tests/baselines/reference/symbolDeclarationEmit2.symbols @@ -3,7 +3,7 @@ class C { >C : Symbol(C, Decl(symbolDeclarationEmit2.ts, 0, 0)) [Symbol.toPrimitive] = ""; ->Symbol.toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.d.ts, --, --)) +>Symbol.toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) } diff --git a/tests/baselines/reference/symbolDeclarationEmit3.symbols b/tests/baselines/reference/symbolDeclarationEmit3.symbols index 4a75ecac742..5bb8d67984e 100644 --- a/tests/baselines/reference/symbolDeclarationEmit3.symbols +++ b/tests/baselines/reference/symbolDeclarationEmit3.symbols @@ -3,20 +3,20 @@ class C { >C : Symbol(C, Decl(symbolDeclarationEmit3.ts, 0, 0)) [Symbol.toPrimitive](x: number); ->Symbol.toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.d.ts, --, --)) +>Symbol.toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) >x : Symbol(x, Decl(symbolDeclarationEmit3.ts, 1, 25)) [Symbol.toPrimitive](x: string); ->Symbol.toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.d.ts, --, --)) +>Symbol.toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) >x : Symbol(x, Decl(symbolDeclarationEmit3.ts, 2, 25)) [Symbol.toPrimitive](x: any) { } ->Symbol.toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.d.ts, --, --)) +>Symbol.toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) >x : Symbol(x, Decl(symbolDeclarationEmit3.ts, 3, 25)) } diff --git a/tests/baselines/reference/symbolDeclarationEmit4.symbols b/tests/baselines/reference/symbolDeclarationEmit4.symbols index eec0912d6ee..89a4714f941 100644 --- a/tests/baselines/reference/symbolDeclarationEmit4.symbols +++ b/tests/baselines/reference/symbolDeclarationEmit4.symbols @@ -3,13 +3,13 @@ class C { >C : Symbol(C, Decl(symbolDeclarationEmit4.ts, 0, 0)) get [Symbol.toPrimitive]() { return ""; } ->Symbol.toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.d.ts, --, --)) +>Symbol.toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) set [Symbol.toPrimitive](x) { } ->Symbol.toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.d.ts, --, --)) +>Symbol.toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) >x : Symbol(x, Decl(symbolDeclarationEmit4.ts, 2, 29)) } diff --git a/tests/baselines/reference/symbolDeclarationEmit5.symbols b/tests/baselines/reference/symbolDeclarationEmit5.symbols index e9ee78e4a7d..bd1049b4e00 100644 --- a/tests/baselines/reference/symbolDeclarationEmit5.symbols +++ b/tests/baselines/reference/symbolDeclarationEmit5.symbols @@ -3,7 +3,7 @@ interface I { >I : Symbol(I, Decl(symbolDeclarationEmit5.ts, 0, 0)) [Symbol.isConcatSpreadable](): string; ->Symbol.isConcatSpreadable : Symbol(SymbolConstructor.isConcatSpreadable, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->isConcatSpreadable : Symbol(SymbolConstructor.isConcatSpreadable, Decl(lib.d.ts, --, --)) +>Symbol.isConcatSpreadable : Symbol(SymbolConstructor.isConcatSpreadable, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>isConcatSpreadable : Symbol(SymbolConstructor.isConcatSpreadable, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) } diff --git a/tests/baselines/reference/symbolDeclarationEmit6.symbols b/tests/baselines/reference/symbolDeclarationEmit6.symbols index 64da887014c..19b86ff2b66 100644 --- a/tests/baselines/reference/symbolDeclarationEmit6.symbols +++ b/tests/baselines/reference/symbolDeclarationEmit6.symbols @@ -3,7 +3,7 @@ interface I { >I : Symbol(I, Decl(symbolDeclarationEmit6.ts, 0, 0)) [Symbol.isConcatSpreadable]: string; ->Symbol.isConcatSpreadable : Symbol(SymbolConstructor.isConcatSpreadable, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->isConcatSpreadable : Symbol(SymbolConstructor.isConcatSpreadable, Decl(lib.d.ts, --, --)) +>Symbol.isConcatSpreadable : Symbol(SymbolConstructor.isConcatSpreadable, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>isConcatSpreadable : Symbol(SymbolConstructor.isConcatSpreadable, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) } diff --git a/tests/baselines/reference/symbolDeclarationEmit7.symbols b/tests/baselines/reference/symbolDeclarationEmit7.symbols index 3bfaee5316c..2cf42a5c5cc 100644 --- a/tests/baselines/reference/symbolDeclarationEmit7.symbols +++ b/tests/baselines/reference/symbolDeclarationEmit7.symbols @@ -3,7 +3,7 @@ var obj: { >obj : Symbol(obj, Decl(symbolDeclarationEmit7.ts, 0, 3)) [Symbol.isConcatSpreadable]: string; ->Symbol.isConcatSpreadable : Symbol(SymbolConstructor.isConcatSpreadable, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->isConcatSpreadable : Symbol(SymbolConstructor.isConcatSpreadable, Decl(lib.d.ts, --, --)) +>Symbol.isConcatSpreadable : Symbol(SymbolConstructor.isConcatSpreadable, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>isConcatSpreadable : Symbol(SymbolConstructor.isConcatSpreadable, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) } diff --git a/tests/baselines/reference/symbolDeclarationEmit8.symbols b/tests/baselines/reference/symbolDeclarationEmit8.symbols index 9eead633343..bb6c4728a08 100644 --- a/tests/baselines/reference/symbolDeclarationEmit8.symbols +++ b/tests/baselines/reference/symbolDeclarationEmit8.symbols @@ -3,7 +3,7 @@ var obj = { >obj : Symbol(obj, Decl(symbolDeclarationEmit8.ts, 0, 3)) [Symbol.isConcatSpreadable]: 0 ->Symbol.isConcatSpreadable : Symbol(SymbolConstructor.isConcatSpreadable, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->isConcatSpreadable : Symbol(SymbolConstructor.isConcatSpreadable, Decl(lib.d.ts, --, --)) +>Symbol.isConcatSpreadable : Symbol(SymbolConstructor.isConcatSpreadable, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>isConcatSpreadable : Symbol(SymbolConstructor.isConcatSpreadable, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) } diff --git a/tests/baselines/reference/symbolDeclarationEmit9.symbols b/tests/baselines/reference/symbolDeclarationEmit9.symbols index ec49c196d02..60fdbf63c95 100644 --- a/tests/baselines/reference/symbolDeclarationEmit9.symbols +++ b/tests/baselines/reference/symbolDeclarationEmit9.symbols @@ -3,7 +3,7 @@ var obj = { >obj : Symbol(obj, Decl(symbolDeclarationEmit9.ts, 0, 3)) [Symbol.isConcatSpreadable]() { } ->Symbol.isConcatSpreadable : Symbol(SymbolConstructor.isConcatSpreadable, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->isConcatSpreadable : Symbol(SymbolConstructor.isConcatSpreadable, Decl(lib.d.ts, --, --)) +>Symbol.isConcatSpreadable : Symbol(SymbolConstructor.isConcatSpreadable, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>isConcatSpreadable : Symbol(SymbolConstructor.isConcatSpreadable, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) } diff --git a/tests/baselines/reference/symbolProperty11.symbols b/tests/baselines/reference/symbolProperty11.symbols index b064d11b9de..2b9c912bc14 100644 --- a/tests/baselines/reference/symbolProperty11.symbols +++ b/tests/baselines/reference/symbolProperty11.symbols @@ -6,9 +6,9 @@ interface I { >I : Symbol(I, Decl(symbolProperty11.ts, 0, 11)) [Symbol.iterator]?: { x }; ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) >x : Symbol(x, Decl(symbolProperty11.ts, 2, 25)) } diff --git a/tests/baselines/reference/symbolProperty13.symbols b/tests/baselines/reference/symbolProperty13.symbols index a48f02fdacf..9b9b17baf51 100644 --- a/tests/baselines/reference/symbolProperty13.symbols +++ b/tests/baselines/reference/symbolProperty13.symbols @@ -3,9 +3,9 @@ class C { >C : Symbol(C, Decl(symbolProperty13.ts, 0, 0)) [Symbol.iterator]: { x; y }; ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) >x : Symbol(x, Decl(symbolProperty13.ts, 1, 24)) >y : Symbol(y, Decl(symbolProperty13.ts, 1, 27)) } @@ -13,9 +13,9 @@ interface I { >I : Symbol(I, Decl(symbolProperty13.ts, 2, 1)) [Symbol.iterator]: { x }; ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) >x : Symbol(x, Decl(symbolProperty13.ts, 4, 24)) } diff --git a/tests/baselines/reference/symbolProperty14.symbols b/tests/baselines/reference/symbolProperty14.symbols index 459b2699e42..4a995d3311d 100644 --- a/tests/baselines/reference/symbolProperty14.symbols +++ b/tests/baselines/reference/symbolProperty14.symbols @@ -3,9 +3,9 @@ class C { >C : Symbol(C, Decl(symbolProperty14.ts, 0, 0)) [Symbol.iterator]: { x; y }; ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) >x : Symbol(x, Decl(symbolProperty14.ts, 1, 24)) >y : Symbol(y, Decl(symbolProperty14.ts, 1, 27)) } @@ -13,9 +13,9 @@ interface I { >I : Symbol(I, Decl(symbolProperty14.ts, 2, 1)) [Symbol.iterator]?: { x }; ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) >x : Symbol(x, Decl(symbolProperty14.ts, 4, 25)) } diff --git a/tests/baselines/reference/symbolProperty15.symbols b/tests/baselines/reference/symbolProperty15.symbols index 83a3f4630fe..3685a2971f8 100644 --- a/tests/baselines/reference/symbolProperty15.symbols +++ b/tests/baselines/reference/symbolProperty15.symbols @@ -6,9 +6,9 @@ interface I { >I : Symbol(I, Decl(symbolProperty15.ts, 0, 11)) [Symbol.iterator]?: { x }; ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) >x : Symbol(x, Decl(symbolProperty15.ts, 2, 25)) } diff --git a/tests/baselines/reference/symbolProperty16.symbols b/tests/baselines/reference/symbolProperty16.symbols index d54002167a1..4147b23d4ff 100644 --- a/tests/baselines/reference/symbolProperty16.symbols +++ b/tests/baselines/reference/symbolProperty16.symbols @@ -3,18 +3,18 @@ class C { >C : Symbol(C, Decl(symbolProperty16.ts, 0, 0)) private [Symbol.iterator]: { x }; ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) >x : Symbol(x, Decl(symbolProperty16.ts, 1, 32)) } interface I { >I : Symbol(I, Decl(symbolProperty16.ts, 2, 1)) [Symbol.iterator]: { x }; ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) >x : Symbol(x, Decl(symbolProperty16.ts, 4, 24)) } diff --git a/tests/baselines/reference/symbolProperty18.symbols b/tests/baselines/reference/symbolProperty18.symbols index 8f863572639..5e79c460fc8 100644 --- a/tests/baselines/reference/symbolProperty18.symbols +++ b/tests/baselines/reference/symbolProperty18.symbols @@ -3,39 +3,39 @@ var i = { >i : Symbol(i, Decl(symbolProperty18.ts, 0, 3)) [Symbol.iterator]: 0, ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) [Symbol.toStringTag]() { return "" }, ->Symbol.toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.d.ts, --, --)) +>Symbol.toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) set [Symbol.toPrimitive](p: boolean) { } ->Symbol.toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.d.ts, --, --)) +>Symbol.toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) >p : Symbol(p, Decl(symbolProperty18.ts, 3, 29)) } var it = i[Symbol.iterator]; >it : Symbol(it, Decl(symbolProperty18.ts, 6, 3)) >i : Symbol(i, Decl(symbolProperty18.ts, 0, 3)) ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) var str = i[Symbol.toStringTag](); >str : Symbol(str, Decl(symbolProperty18.ts, 7, 3)) >i : Symbol(i, Decl(symbolProperty18.ts, 0, 3)) ->Symbol.toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.d.ts, --, --)) +>Symbol.toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) i[Symbol.toPrimitive] = false; >i : Symbol(i, Decl(symbolProperty18.ts, 0, 3)) ->Symbol.toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.d.ts, --, --)) +>Symbol.toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) diff --git a/tests/baselines/reference/symbolProperty19.symbols b/tests/baselines/reference/symbolProperty19.symbols index a2c7dd7dcfd..1e50924524d 100644 --- a/tests/baselines/reference/symbolProperty19.symbols +++ b/tests/baselines/reference/symbolProperty19.symbols @@ -3,15 +3,15 @@ var i = { >i : Symbol(i, Decl(symbolProperty19.ts, 0, 3)) [Symbol.iterator]: { p: null }, ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) >p : Symbol(p, Decl(symbolProperty19.ts, 1, 24)) [Symbol.toStringTag]() { return { p: undefined }; } ->Symbol.toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.d.ts, --, --)) +>Symbol.toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) >p : Symbol(p, Decl(symbolProperty19.ts, 2, 37)) >undefined : Symbol(undefined) } @@ -19,14 +19,14 @@ var i = { var it = i[Symbol.iterator]; >it : Symbol(it, Decl(symbolProperty19.ts, 5, 3)) >i : Symbol(i, Decl(symbolProperty19.ts, 0, 3)) ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) var str = i[Symbol.toStringTag](); >str : Symbol(str, Decl(symbolProperty19.ts, 6, 3)) >i : Symbol(i, Decl(symbolProperty19.ts, 0, 3)) ->Symbol.toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.d.ts, --, --)) +>Symbol.toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) diff --git a/tests/baselines/reference/symbolProperty2.symbols b/tests/baselines/reference/symbolProperty2.symbols index a9bc4a440e0..90cb47c0011 100644 --- a/tests/baselines/reference/symbolProperty2.symbols +++ b/tests/baselines/reference/symbolProperty2.symbols @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/Symbols/symbolProperty2.ts === var s = Symbol(); >s : Symbol(s, Decl(symbolProperty2.ts, 0, 3)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) var x = { >x : Symbol(x, Decl(symbolProperty2.ts, 1, 3)) diff --git a/tests/baselines/reference/symbolProperty20.symbols b/tests/baselines/reference/symbolProperty20.symbols index 97bb4164c2f..e40abe03277 100644 --- a/tests/baselines/reference/symbolProperty20.symbols +++ b/tests/baselines/reference/symbolProperty20.symbols @@ -3,15 +3,15 @@ interface I { >I : Symbol(I, Decl(symbolProperty20.ts, 0, 0)) [Symbol.iterator]: (s: string) => string; ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) >s : Symbol(s, Decl(symbolProperty20.ts, 1, 24)) [Symbol.toStringTag](s: number): number; ->Symbol.toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.d.ts, --, --)) +>Symbol.toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) >s : Symbol(s, Decl(symbolProperty20.ts, 2, 25)) } @@ -20,16 +20,16 @@ var i: I = { >I : Symbol(I, Decl(symbolProperty20.ts, 0, 0)) [Symbol.iterator]: s => s, ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) >s : Symbol(s, Decl(symbolProperty20.ts, 6, 22)) >s : Symbol(s, Decl(symbolProperty20.ts, 6, 22)) [Symbol.toStringTag](n) { return n; } ->Symbol.toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.d.ts, --, --)) +>Symbol.toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) >n : Symbol(n, Decl(symbolProperty20.ts, 7, 25)) >n : Symbol(n, Decl(symbolProperty20.ts, 7, 25)) } diff --git a/tests/baselines/reference/symbolProperty22.symbols b/tests/baselines/reference/symbolProperty22.symbols index 1d7f46fa897..e4e68d81970 100644 --- a/tests/baselines/reference/symbolProperty22.symbols +++ b/tests/baselines/reference/symbolProperty22.symbols @@ -5,9 +5,9 @@ interface I { >U : Symbol(U, Decl(symbolProperty22.ts, 0, 14)) [Symbol.unscopables](x: T): U; ->Symbol.unscopables : Symbol(SymbolConstructor.unscopables, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->unscopables : Symbol(SymbolConstructor.unscopables, Decl(lib.d.ts, --, --)) +>Symbol.unscopables : Symbol(SymbolConstructor.unscopables, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>unscopables : Symbol(SymbolConstructor.unscopables, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) >x : Symbol(x, Decl(symbolProperty22.ts, 1, 25)) >T : Symbol(T, Decl(symbolProperty22.ts, 0, 12)) >U : Symbol(U, Decl(symbolProperty22.ts, 0, 14)) @@ -27,11 +27,11 @@ declare function foo(p1: T, p2: I): U; foo("", { [Symbol.unscopables]: s => s.length }); >foo : Symbol(foo, Decl(symbolProperty22.ts, 2, 1)) ->Symbol.unscopables : Symbol(SymbolConstructor.unscopables, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->unscopables : Symbol(SymbolConstructor.unscopables, Decl(lib.d.ts, --, --)) +>Symbol.unscopables : Symbol(SymbolConstructor.unscopables, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>unscopables : Symbol(SymbolConstructor.unscopables, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) >s : Symbol(s, Decl(symbolProperty22.ts, 6, 31)) ->s.length : Symbol(String.length, Decl(lib.d.ts, --, --)) +>s.length : Symbol(String.length, Decl(lib.es5.d.ts, --, --)) >s : Symbol(s, Decl(symbolProperty22.ts, 6, 31)) ->length : Symbol(String.length, Decl(lib.d.ts, --, --)) +>length : Symbol(String.length, Decl(lib.es5.d.ts, --, --)) diff --git a/tests/baselines/reference/symbolProperty23.symbols b/tests/baselines/reference/symbolProperty23.symbols index 06fce65875c..714b76fa85b 100644 --- a/tests/baselines/reference/symbolProperty23.symbols +++ b/tests/baselines/reference/symbolProperty23.symbols @@ -3,9 +3,9 @@ interface I { >I : Symbol(I, Decl(symbolProperty23.ts, 0, 0)) [Symbol.toPrimitive]: () => boolean; ->Symbol.toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.d.ts, --, --)) +>Symbol.toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) } class C implements I { @@ -13,9 +13,9 @@ class C implements I { >I : Symbol(I, Decl(symbolProperty23.ts, 0, 0)) [Symbol.toPrimitive]() { ->Symbol.toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.d.ts, --, --)) +>Symbol.toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) return true; } diff --git a/tests/baselines/reference/symbolProperty26.symbols b/tests/baselines/reference/symbolProperty26.symbols index ae8f95d5859..785a2e395cb 100644 --- a/tests/baselines/reference/symbolProperty26.symbols +++ b/tests/baselines/reference/symbolProperty26.symbols @@ -3,9 +3,9 @@ class C1 { >C1 : Symbol(C1, Decl(symbolProperty26.ts, 0, 0)) [Symbol.toStringTag]() { ->Symbol.toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.d.ts, --, --)) +>Symbol.toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) return ""; } @@ -16,9 +16,9 @@ class C2 extends C1 { >C1 : Symbol(C1, Decl(symbolProperty26.ts, 0, 0)) [Symbol.toStringTag]() { ->Symbol.toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.d.ts, --, --)) +>Symbol.toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) return ""; } diff --git a/tests/baselines/reference/symbolProperty27.symbols b/tests/baselines/reference/symbolProperty27.symbols index d5fcf7ec224..1b050b617c2 100644 --- a/tests/baselines/reference/symbolProperty27.symbols +++ b/tests/baselines/reference/symbolProperty27.symbols @@ -3,9 +3,9 @@ class C1 { >C1 : Symbol(C1, Decl(symbolProperty27.ts, 0, 0)) [Symbol.toStringTag]() { ->Symbol.toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.d.ts, --, --)) +>Symbol.toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) return {}; } @@ -16,9 +16,9 @@ class C2 extends C1 { >C1 : Symbol(C1, Decl(symbolProperty27.ts, 0, 0)) [Symbol.toStringTag]() { ->Symbol.toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.d.ts, --, --)) +>Symbol.toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) return ""; } diff --git a/tests/baselines/reference/symbolProperty28.symbols b/tests/baselines/reference/symbolProperty28.symbols index d8c9daba0d9..c72de5fefb5 100644 --- a/tests/baselines/reference/symbolProperty28.symbols +++ b/tests/baselines/reference/symbolProperty28.symbols @@ -3,9 +3,9 @@ class C1 { >C1 : Symbol(C1, Decl(symbolProperty28.ts, 0, 0)) [Symbol.toStringTag]() { ->Symbol.toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.d.ts, --, --)) +>Symbol.toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) return { x: "" }; >x : Symbol(x, Decl(symbolProperty28.ts, 2, 16)) @@ -24,8 +24,8 @@ var obj = c[Symbol.toStringTag]().x; >obj : Symbol(obj, Decl(symbolProperty28.ts, 9, 3)) >c[Symbol.toStringTag]().x : Symbol(x, Decl(symbolProperty28.ts, 2, 16)) >c : Symbol(c, Decl(symbolProperty28.ts, 8, 3)) ->Symbol.toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.d.ts, --, --)) +>Symbol.toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) >x : Symbol(x, Decl(symbolProperty28.ts, 2, 16)) diff --git a/tests/baselines/reference/symbolProperty4.symbols b/tests/baselines/reference/symbolProperty4.symbols index 7817a7c6fd0..c1f7c82de7d 100644 --- a/tests/baselines/reference/symbolProperty4.symbols +++ b/tests/baselines/reference/symbolProperty4.symbols @@ -3,13 +3,13 @@ var x = { >x : Symbol(x, Decl(symbolProperty4.ts, 0, 3)) [Symbol()]: 0, ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) [Symbol()]() { }, ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) get [Symbol()]() { ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) return 0; } diff --git a/tests/baselines/reference/symbolProperty40.symbols b/tests/baselines/reference/symbolProperty40.symbols index 26a5dc36ed5..a572c380d13 100644 --- a/tests/baselines/reference/symbolProperty40.symbols +++ b/tests/baselines/reference/symbolProperty40.symbols @@ -3,21 +3,21 @@ class C { >C : Symbol(C, Decl(symbolProperty40.ts, 0, 0)) [Symbol.iterator](x: string): string; ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) >x : Symbol(x, Decl(symbolProperty40.ts, 1, 22)) [Symbol.iterator](x: number): number; ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) >x : Symbol(x, Decl(symbolProperty40.ts, 2, 22)) [Symbol.iterator](x: any) { ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) >x : Symbol(x, Decl(symbolProperty40.ts, 3, 22)) return undefined; @@ -31,13 +31,13 @@ var c = new C; c[Symbol.iterator](""); >c : Symbol(c, Decl(symbolProperty40.ts, 8, 3)) ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) c[Symbol.iterator](0); >c : Symbol(c, Decl(symbolProperty40.ts, 8, 3)) ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) diff --git a/tests/baselines/reference/symbolProperty41.symbols b/tests/baselines/reference/symbolProperty41.symbols index 7db66e5862e..82174ce2e0e 100644 --- a/tests/baselines/reference/symbolProperty41.symbols +++ b/tests/baselines/reference/symbolProperty41.symbols @@ -3,24 +3,24 @@ class C { >C : Symbol(C, Decl(symbolProperty41.ts, 0, 0)) [Symbol.iterator](x: string): { x: string }; ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) >x : Symbol(x, Decl(symbolProperty41.ts, 1, 22)) >x : Symbol(x, Decl(symbolProperty41.ts, 1, 35)) [Symbol.iterator](x: "hello"): { x: string; hello: string }; ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) >x : Symbol(x, Decl(symbolProperty41.ts, 2, 22)) >x : Symbol(x, Decl(symbolProperty41.ts, 2, 36)) >hello : Symbol(hello, Decl(symbolProperty41.ts, 2, 47)) [Symbol.iterator](x: any) { ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) >x : Symbol(x, Decl(symbolProperty41.ts, 3, 22)) return undefined; @@ -34,13 +34,13 @@ var c = new C; c[Symbol.iterator](""); >c : Symbol(c, Decl(symbolProperty41.ts, 8, 3)) ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) c[Symbol.iterator]("hello"); >c : Symbol(c, Decl(symbolProperty41.ts, 8, 3)) ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) diff --git a/tests/baselines/reference/symbolProperty45.symbols b/tests/baselines/reference/symbolProperty45.symbols index 46ecb0a6414..0f42e37c5cf 100644 --- a/tests/baselines/reference/symbolProperty45.symbols +++ b/tests/baselines/reference/symbolProperty45.symbols @@ -3,16 +3,16 @@ class C { >C : Symbol(C, Decl(symbolProperty45.ts, 0, 0)) get [Symbol.hasInstance]() { ->Symbol.hasInstance : Symbol(SymbolConstructor.hasInstance, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->hasInstance : Symbol(SymbolConstructor.hasInstance, Decl(lib.d.ts, --, --)) +>Symbol.hasInstance : Symbol(SymbolConstructor.hasInstance, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>hasInstance : Symbol(SymbolConstructor.hasInstance, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) return ""; } get [Symbol.toPrimitive]() { ->Symbol.toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.d.ts, --, --)) +>Symbol.toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) return ""; } diff --git a/tests/baselines/reference/symbolProperty5.symbols b/tests/baselines/reference/symbolProperty5.symbols index 00e47c461ee..d8ae4d18940 100644 --- a/tests/baselines/reference/symbolProperty5.symbols +++ b/tests/baselines/reference/symbolProperty5.symbols @@ -3,19 +3,19 @@ var x = { >x : Symbol(x, Decl(symbolProperty5.ts, 0, 3)) [Symbol.iterator]: 0, ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) [Symbol.toPrimitive]() { }, ->Symbol.toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.d.ts, --, --)) +>Symbol.toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) get [Symbol.toStringTag]() { ->Symbol.toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.d.ts, --, --)) +>Symbol.toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) return 0; } diff --git a/tests/baselines/reference/symbolProperty50.symbols b/tests/baselines/reference/symbolProperty50.symbols index f5197627846..2e51286ffa4 100644 --- a/tests/baselines/reference/symbolProperty50.symbols +++ b/tests/baselines/reference/symbolProperty50.symbols @@ -9,8 +9,8 @@ module M { >C : Symbol(C, Decl(symbolProperty50.ts, 1, 24)) [Symbol.iterator]() { } ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) } } diff --git a/tests/baselines/reference/symbolProperty51.symbols b/tests/baselines/reference/symbolProperty51.symbols index 4be31dd0a56..7cd4870ea32 100644 --- a/tests/baselines/reference/symbolProperty51.symbols +++ b/tests/baselines/reference/symbolProperty51.symbols @@ -9,8 +9,8 @@ module M { >C : Symbol(C, Decl(symbolProperty51.ts, 1, 21)) [Symbol.iterator]() { } ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) } } diff --git a/tests/baselines/reference/symbolProperty55.symbols b/tests/baselines/reference/symbolProperty55.symbols index e6a9c304abe..f7371428e76 100644 --- a/tests/baselines/reference/symbolProperty55.symbols +++ b/tests/baselines/reference/symbolProperty55.symbols @@ -3,9 +3,9 @@ var obj = { >obj : Symbol(obj, Decl(symbolProperty55.ts, 0, 3)) [Symbol.iterator]: 0 ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) }; @@ -14,13 +14,13 @@ module M { var Symbol: SymbolConstructor; >Symbol : Symbol(Symbol, Decl(symbolProperty55.ts, 5, 7)) ->SymbolConstructor : Symbol(SymbolConstructor, Decl(lib.d.ts, --, --)) +>SymbolConstructor : Symbol(SymbolConstructor, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) // The following should be of type 'any'. This is because even though obj has a property keyed by Symbol.iterator, // the key passed in here is the *wrong* Symbol.iterator. It is not the iterator property of the global Symbol. obj[Symbol.iterator]; >obj : Symbol(obj, Decl(symbolProperty55.ts, 0, 3)) ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) >Symbol : Symbol(Symbol, Decl(symbolProperty55.ts, 5, 7)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) } diff --git a/tests/baselines/reference/symbolProperty56.symbols b/tests/baselines/reference/symbolProperty56.symbols index 6ff465daa98..00ca21138fc 100644 --- a/tests/baselines/reference/symbolProperty56.symbols +++ b/tests/baselines/reference/symbolProperty56.symbols @@ -3,9 +3,9 @@ var obj = { >obj : Symbol(obj, Decl(symbolProperty56.ts, 0, 3)) [Symbol.iterator]: 0 ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) }; diff --git a/tests/baselines/reference/symbolProperty57.symbols b/tests/baselines/reference/symbolProperty57.symbols index b256ba651c4..bb4ac0ceef2 100644 --- a/tests/baselines/reference/symbolProperty57.symbols +++ b/tests/baselines/reference/symbolProperty57.symbols @@ -3,14 +3,14 @@ var obj = { >obj : Symbol(obj, Decl(symbolProperty57.ts, 0, 3)) [Symbol.iterator]: 0 ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) }; // Should give type 'any'. obj[Symbol["nonsense"]]; >obj : Symbol(obj, Decl(symbolProperty57.ts, 0, 3)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) diff --git a/tests/baselines/reference/symbolProperty6.symbols b/tests/baselines/reference/symbolProperty6.symbols index d0eedccf4fa..73c55715a5d 100644 --- a/tests/baselines/reference/symbolProperty6.symbols +++ b/tests/baselines/reference/symbolProperty6.symbols @@ -3,24 +3,24 @@ class C { >C : Symbol(C, Decl(symbolProperty6.ts, 0, 0)) [Symbol.iterator] = 0; ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) [Symbol.unscopables]: number; ->Symbol.unscopables : Symbol(SymbolConstructor.unscopables, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->unscopables : Symbol(SymbolConstructor.unscopables, Decl(lib.d.ts, --, --)) +>Symbol.unscopables : Symbol(SymbolConstructor.unscopables, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>unscopables : Symbol(SymbolConstructor.unscopables, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) [Symbol.toPrimitive]() { } ->Symbol.toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.d.ts, --, --)) +>Symbol.toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) get [Symbol.toStringTag]() { ->Symbol.toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.d.ts, --, --)) +>Symbol.toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) return 0; } diff --git a/tests/baselines/reference/symbolProperty8.symbols b/tests/baselines/reference/symbolProperty8.symbols index 8d26d193ef5..e46c35b47be 100644 --- a/tests/baselines/reference/symbolProperty8.symbols +++ b/tests/baselines/reference/symbolProperty8.symbols @@ -3,12 +3,12 @@ interface I { >I : Symbol(I, Decl(symbolProperty8.ts, 0, 0)) [Symbol.unscopables]: number; ->Symbol.unscopables : Symbol(SymbolConstructor.unscopables, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->unscopables : Symbol(SymbolConstructor.unscopables, Decl(lib.d.ts, --, --)) +>Symbol.unscopables : Symbol(SymbolConstructor.unscopables, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>unscopables : Symbol(SymbolConstructor.unscopables, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) [Symbol.toPrimitive](); ->Symbol.toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.d.ts, --, --)) +>Symbol.toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) } diff --git a/tests/baselines/reference/symbolType11.symbols b/tests/baselines/reference/symbolType11.symbols index d5c19af7844..3c5fc1b61cc 100644 --- a/tests/baselines/reference/symbolType11.symbols +++ b/tests/baselines/reference/symbolType11.symbols @@ -1,9 +1,9 @@ === tests/cases/conformance/es6/Symbols/symbolType11.ts === var s = Symbol.for("logical"); >s : Symbol(s, Decl(symbolType11.ts, 0, 3)) ->Symbol.for : Symbol(SymbolConstructor.for, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->for : Symbol(SymbolConstructor.for, Decl(lib.d.ts, --, --)) +>Symbol.for : Symbol(SymbolConstructor.for, Decl(lib.es2015.symbol.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>for : Symbol(SymbolConstructor.for, Decl(lib.es2015.symbol.d.ts, --, --)) s && s; >s : Symbol(s, Decl(symbolType11.ts, 0, 3)) diff --git a/tests/baselines/reference/symbolType16.symbols b/tests/baselines/reference/symbolType16.symbols index a31a4e5c677..3e5fb6e2157 100644 --- a/tests/baselines/reference/symbolType16.symbols +++ b/tests/baselines/reference/symbolType16.symbols @@ -1,9 +1,9 @@ === tests/cases/conformance/es6/Symbols/symbolType16.ts === interface Symbol { ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(symbolType16.ts, 0, 0)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(symbolType16.ts, 0, 0)) newSymbolProp: number; ->newSymbolProp : Symbol(newSymbolProp, Decl(symbolType16.ts, 0, 18)) +>newSymbolProp : Symbol(Symbol.newSymbolProp, Decl(symbolType16.ts, 0, 18)) } var sym: symbol; diff --git a/tests/baselines/reference/symbolType17.symbols b/tests/baselines/reference/symbolType17.symbols index fe77cb8d6b3..0f1ccc0e83a 100644 --- a/tests/baselines/reference/symbolType17.symbols +++ b/tests/baselines/reference/symbolType17.symbols @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/Symbols/symbolType17.ts === interface Foo { prop } >Foo : Symbol(Foo, Decl(symbolType17.ts, 0, 0)) ->prop : Symbol(prop, Decl(symbolType17.ts, 0, 15)) +>prop : Symbol(Foo.prop, Decl(symbolType17.ts, 0, 15)) var x: symbol | Foo; >x : Symbol(x, Decl(symbolType17.ts, 1, 3)) diff --git a/tests/baselines/reference/symbolType18.symbols b/tests/baselines/reference/symbolType18.symbols index d2121672b71..9dc8c824a85 100644 --- a/tests/baselines/reference/symbolType18.symbols +++ b/tests/baselines/reference/symbolType18.symbols @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/Symbols/symbolType18.ts === interface Foo { prop } >Foo : Symbol(Foo, Decl(symbolType18.ts, 0, 0)) ->prop : Symbol(prop, Decl(symbolType18.ts, 0, 15)) +>prop : Symbol(Foo.prop, Decl(symbolType18.ts, 0, 15)) var x: symbol | Foo; >x : Symbol(x, Decl(symbolType18.ts, 1, 3)) diff --git a/tests/baselines/reference/systemModule13.types b/tests/baselines/reference/systemModule13.types index 35f22be98b8..f31b0825416 100644 --- a/tests/baselines/reference/systemModule13.types +++ b/tests/baselines/reference/systemModule13.types @@ -24,7 +24,7 @@ export const {a: z0, b: {c: z1}} = {a: true, b: {c: "123"}}; >"123" : string for ([x] of [[1]]) {} ->[x] : number[] +>[x] : [number] >x : number >[[1]] : number[][] >[1] : number[] diff --git a/tests/baselines/reference/systemModule8.types b/tests/baselines/reference/systemModule8.types index 2c3dd1e48bb..940067c5653 100644 --- a/tests/baselines/reference/systemModule8.types +++ b/tests/baselines/reference/systemModule8.types @@ -135,7 +135,7 @@ export const {a: z0, b: {c: z1}} = {a: true, b: {c: "123"}}; >"123" : string for ([x] of [[1]]) {} ->[x] : any[] +>[x] : [any] >x : any >[[1]] : number[][] >[1] : number[] diff --git a/tests/baselines/reference/systemModuleTargetES6.js b/tests/baselines/reference/systemModuleTargetES6.js new file mode 100644 index 00000000000..21bbc6a6ad8 --- /dev/null +++ b/tests/baselines/reference/systemModuleTargetES6.js @@ -0,0 +1,42 @@ +//// [systemModuleTargetES6.ts] +export class MyClass { } +export class MyClass2 { + static value = 42; + static getInstance() { return MyClass2.value; } +} + +export function myFunction() { + return new MyClass(); +} + +export function myFunction2() { + return new MyClass2(); +} + +//// [systemModuleTargetES6.js] +System.register([], function(exports_1, context_1) { + "use strict"; + var __moduleName = context_1 && context_1.id; + var MyClass, MyClass2; + function myFunction() { + return new MyClass(); + } + exports_1("myFunction", myFunction); + function myFunction2() { + return new MyClass2(); + } + exports_1("myFunction2", myFunction2); + return { + setters:[], + execute: function() { + MyClass = class MyClass { + }; + exports_1("MyClass", MyClass); + MyClass2 = class MyClass2 { + static getInstance() { return MyClass2.value; } + }; + MyClass2.value = 42; + exports_1("MyClass2", MyClass2); + } + } +}); diff --git a/tests/baselines/reference/systemModuleTargetES6.symbols b/tests/baselines/reference/systemModuleTargetES6.symbols new file mode 100644 index 00000000000..afb217c0c0a --- /dev/null +++ b/tests/baselines/reference/systemModuleTargetES6.symbols @@ -0,0 +1,30 @@ +=== tests/cases/compiler/systemModuleTargetES6.ts === +export class MyClass { } +>MyClass : Symbol(MyClass, Decl(systemModuleTargetES6.ts, 0, 0)) + +export class MyClass2 { +>MyClass2 : Symbol(MyClass2, Decl(systemModuleTargetES6.ts, 0, 24)) + + static value = 42; +>value : Symbol(MyClass2.value, Decl(systemModuleTargetES6.ts, 1, 23)) + + static getInstance() { return MyClass2.value; } +>getInstance : Symbol(MyClass2.getInstance, Decl(systemModuleTargetES6.ts, 2, 22)) +>MyClass2.value : Symbol(MyClass2.value, Decl(systemModuleTargetES6.ts, 1, 23)) +>MyClass2 : Symbol(MyClass2, Decl(systemModuleTargetES6.ts, 0, 24)) +>value : Symbol(MyClass2.value, Decl(systemModuleTargetES6.ts, 1, 23)) +} + +export function myFunction() { +>myFunction : Symbol(myFunction, Decl(systemModuleTargetES6.ts, 4, 1)) + + return new MyClass(); +>MyClass : Symbol(MyClass, Decl(systemModuleTargetES6.ts, 0, 0)) +} + +export function myFunction2() { +>myFunction2 : Symbol(myFunction2, Decl(systemModuleTargetES6.ts, 8, 1)) + + return new MyClass2(); +>MyClass2 : Symbol(MyClass2, Decl(systemModuleTargetES6.ts, 0, 24)) +} diff --git a/tests/baselines/reference/systemModuleTargetES6.types b/tests/baselines/reference/systemModuleTargetES6.types new file mode 100644 index 00000000000..5a9801a5d89 --- /dev/null +++ b/tests/baselines/reference/systemModuleTargetES6.types @@ -0,0 +1,33 @@ +=== tests/cases/compiler/systemModuleTargetES6.ts === +export class MyClass { } +>MyClass : MyClass + +export class MyClass2 { +>MyClass2 : MyClass2 + + static value = 42; +>value : number +>42 : number + + static getInstance() { return MyClass2.value; } +>getInstance : () => number +>MyClass2.value : number +>MyClass2 : typeof MyClass2 +>value : number +} + +export function myFunction() { +>myFunction : () => MyClass + + return new MyClass(); +>new MyClass() : MyClass +>MyClass : typeof MyClass +} + +export function myFunction2() { +>myFunction2 : () => MyClass2 + + return new MyClass2(); +>new MyClass2() : MyClass2 +>MyClass2 : typeof MyClass2 +} diff --git a/tests/baselines/reference/systemModuleWithSuperClass.symbols b/tests/baselines/reference/systemModuleWithSuperClass.symbols index 46354333479..415e7d1e99f 100644 --- a/tests/baselines/reference/systemModuleWithSuperClass.symbols +++ b/tests/baselines/reference/systemModuleWithSuperClass.symbols @@ -4,7 +4,7 @@ export class Foo { >Foo : Symbol(Foo, Decl(foo.ts, 0, 0)) a: string; ->a : Symbol(a, Decl(foo.ts, 1, 18)) +>a : Symbol(Foo.a, Decl(foo.ts, 1, 18)) } === tests/cases/compiler/bar.ts === @@ -16,5 +16,5 @@ export class Bar extends Foo { >Foo : Symbol(Foo, Decl(bar.ts, 0, 8)) b: string; ->b : Symbol(b, Decl(bar.ts, 1, 30)) +>b : Symbol(Bar.b, Decl(bar.ts, 1, 30)) } diff --git a/tests/baselines/reference/taggedTemplateContextualTyping1.symbols b/tests/baselines/reference/taggedTemplateContextualTyping1.symbols index 2de45d16379..3c50a6f92e4 100644 --- a/tests/baselines/reference/taggedTemplateContextualTyping1.symbols +++ b/tests/baselines/reference/taggedTemplateContextualTyping1.symbols @@ -13,7 +13,7 @@ function tempTag1(templateStrs: TemplateStringsArray, f: FuncType, x: T): T; >tempTag1 : Symbol(tempTag1, Decl(taggedTemplateContextualTyping1.ts, 1, 48), Decl(taggedTemplateContextualTyping1.ts, 3, 79), Decl(taggedTemplateContextualTyping1.ts, 4, 92)) >T : Symbol(T, Decl(taggedTemplateContextualTyping1.ts, 3, 18)) >templateStrs : Symbol(templateStrs, Decl(taggedTemplateContextualTyping1.ts, 3, 21)) ->TemplateStringsArray : Symbol(TemplateStringsArray, Decl(lib.d.ts, --, --)) +>TemplateStringsArray : Symbol(TemplateStringsArray, Decl(lib.es5.d.ts, --, --)) >f : Symbol(f, Decl(taggedTemplateContextualTyping1.ts, 3, 56)) >FuncType : Symbol(FuncType, Decl(taggedTemplateContextualTyping1.ts, 0, 0)) >x : Symbol(x, Decl(taggedTemplateContextualTyping1.ts, 3, 69)) @@ -24,7 +24,7 @@ function tempTag1(templateStrs: TemplateStringsArray, f: FuncType, h: FuncTyp >tempTag1 : Symbol(tempTag1, Decl(taggedTemplateContextualTyping1.ts, 1, 48), Decl(taggedTemplateContextualTyping1.ts, 3, 79), Decl(taggedTemplateContextualTyping1.ts, 4, 92)) >T : Symbol(T, Decl(taggedTemplateContextualTyping1.ts, 4, 18)) >templateStrs : Symbol(templateStrs, Decl(taggedTemplateContextualTyping1.ts, 4, 21)) ->TemplateStringsArray : Symbol(TemplateStringsArray, Decl(lib.d.ts, --, --)) +>TemplateStringsArray : Symbol(TemplateStringsArray, Decl(lib.es5.d.ts, --, --)) >f : Symbol(f, Decl(taggedTemplateContextualTyping1.ts, 4, 56)) >FuncType : Symbol(FuncType, Decl(taggedTemplateContextualTyping1.ts, 0, 0)) >h : Symbol(h, Decl(taggedTemplateContextualTyping1.ts, 4, 69)) diff --git a/tests/baselines/reference/taggedTemplateContextualTyping2.symbols b/tests/baselines/reference/taggedTemplateContextualTyping2.symbols index 240cc344de7..a1ee63ef8b0 100644 --- a/tests/baselines/reference/taggedTemplateContextualTyping2.symbols +++ b/tests/baselines/reference/taggedTemplateContextualTyping2.symbols @@ -22,7 +22,7 @@ type FuncType2 = (x: (p: T) => T) => typeof x; function tempTag2(templateStrs: TemplateStringsArray, f: FuncType1, x: number): number; >tempTag2 : Symbol(tempTag2, Decl(taggedTemplateContextualTyping2.ts, 2, 52), Decl(taggedTemplateContextualTyping2.ts, 4, 87), Decl(taggedTemplateContextualTyping2.ts, 5, 101)) >templateStrs : Symbol(templateStrs, Decl(taggedTemplateContextualTyping2.ts, 4, 18)) ->TemplateStringsArray : Symbol(TemplateStringsArray, Decl(lib.d.ts, --, --)) +>TemplateStringsArray : Symbol(TemplateStringsArray, Decl(lib.es5.d.ts, --, --)) >f : Symbol(f, Decl(taggedTemplateContextualTyping2.ts, 4, 53)) >FuncType1 : Symbol(FuncType1, Decl(taggedTemplateContextualTyping2.ts, 0, 0)) >x : Symbol(x, Decl(taggedTemplateContextualTyping2.ts, 4, 67)) @@ -30,7 +30,7 @@ function tempTag2(templateStrs: TemplateStringsArray, f: FuncType1, x: number): function tempTag2(templateStrs: TemplateStringsArray, f: FuncType2, h: FuncType2, x: string): string; >tempTag2 : Symbol(tempTag2, Decl(taggedTemplateContextualTyping2.ts, 2, 52), Decl(taggedTemplateContextualTyping2.ts, 4, 87), Decl(taggedTemplateContextualTyping2.ts, 5, 101)) >templateStrs : Symbol(templateStrs, Decl(taggedTemplateContextualTyping2.ts, 5, 18)) ->TemplateStringsArray : Symbol(TemplateStringsArray, Decl(lib.d.ts, --, --)) +>TemplateStringsArray : Symbol(TemplateStringsArray, Decl(lib.es5.d.ts, --, --)) >f : Symbol(f, Decl(taggedTemplateContextualTyping2.ts, 5, 53)) >FuncType2 : Symbol(FuncType2, Decl(taggedTemplateContextualTyping2.ts, 1, 49)) >h : Symbol(h, Decl(taggedTemplateContextualTyping2.ts, 5, 67)) diff --git a/tests/baselines/reference/taggedTemplateStringsWithManyCallAndMemberExpressions.symbols b/tests/baselines/reference/taggedTemplateStringsWithManyCallAndMemberExpressions.symbols index 24f75c49178..226729907de 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithManyCallAndMemberExpressions.symbols +++ b/tests/baselines/reference/taggedTemplateStringsWithManyCallAndMemberExpressions.symbols @@ -8,7 +8,7 @@ interface I { >I : Symbol(I, Decl(taggedTemplateStringsWithManyCallAndMemberExpressions.ts, 0, 0)) member: { ->member : Symbol(member, Decl(taggedTemplateStringsWithManyCallAndMemberExpressions.ts, 1, 43)) +>member : Symbol(I.member, Decl(taggedTemplateStringsWithManyCallAndMemberExpressions.ts, 1, 43)) new (s: string): { >s : Symbol(s, Decl(taggedTemplateStringsWithManyCallAndMemberExpressions.ts, 3, 13)) diff --git a/tests/baselines/reference/taggedTemplateStringsWithManyCallAndMemberExpressionsES6.symbols b/tests/baselines/reference/taggedTemplateStringsWithManyCallAndMemberExpressionsES6.symbols index cbe21173d55..6535e998808 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithManyCallAndMemberExpressionsES6.symbols +++ b/tests/baselines/reference/taggedTemplateStringsWithManyCallAndMemberExpressionsES6.symbols @@ -8,7 +8,7 @@ interface I { >I : Symbol(I, Decl(taggedTemplateStringsWithManyCallAndMemberExpressionsES6.ts, 0, 0)) member: { ->member : Symbol(member, Decl(taggedTemplateStringsWithManyCallAndMemberExpressionsES6.ts, 1, 43)) +>member : Symbol(I.member, Decl(taggedTemplateStringsWithManyCallAndMemberExpressionsES6.ts, 1, 43)) new (s: string): { >s : Symbol(s, Decl(taggedTemplateStringsWithManyCallAndMemberExpressionsES6.ts, 3, 13)) diff --git a/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution2_ES6.symbols b/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution2_ES6.symbols index e96912ec3bb..cadfa135202 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution2_ES6.symbols +++ b/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution2_ES6.symbols @@ -2,7 +2,7 @@ function foo1(strs: TemplateStringsArray, x: number): string; >foo1 : Symbol(foo1, Decl(taggedTemplateStringsWithOverloadResolution2_ES6.ts, 0, 0), Decl(taggedTemplateStringsWithOverloadResolution2_ES6.ts, 0, 61), Decl(taggedTemplateStringsWithOverloadResolution2_ES6.ts, 1, 49)) >strs : Symbol(strs, Decl(taggedTemplateStringsWithOverloadResolution2_ES6.ts, 0, 14)) ->TemplateStringsArray : Symbol(TemplateStringsArray, Decl(lib.d.ts, --, --)) +>TemplateStringsArray : Symbol(TemplateStringsArray, Decl(lib.es5.d.ts, --, --)) >x : Symbol(x, Decl(taggedTemplateStringsWithOverloadResolution2_ES6.ts, 0, 41)) function foo1(strs: string[], x: number): number; @@ -34,7 +34,7 @@ function foo2(strs: string[], x: number): number; function foo2(strs: TemplateStringsArray, x: number): string; >foo2 : Symbol(foo2, Decl(taggedTemplateStringsWithOverloadResolution2_ES6.ts, 7, 20), Decl(taggedTemplateStringsWithOverloadResolution2_ES6.ts, 9, 49), Decl(taggedTemplateStringsWithOverloadResolution2_ES6.ts, 10, 61)) >strs : Symbol(strs, Decl(taggedTemplateStringsWithOverloadResolution2_ES6.ts, 10, 14)) ->TemplateStringsArray : Symbol(TemplateStringsArray, Decl(lib.d.ts, --, --)) +>TemplateStringsArray : Symbol(TemplateStringsArray, Decl(lib.es5.d.ts, --, --)) >x : Symbol(x, Decl(taggedTemplateStringsWithOverloadResolution2_ES6.ts, 10, 41)) function foo2(...stuff: any[]): any { diff --git a/tests/baselines/reference/taggedTemplateStringsWithTypedTags.symbols b/tests/baselines/reference/taggedTemplateStringsWithTypedTags.symbols index 974410a7b1d..d3f85d8375a 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithTypedTags.symbols +++ b/tests/baselines/reference/taggedTemplateStringsWithTypedTags.symbols @@ -8,19 +8,19 @@ interface I { >I : Symbol(I, Decl(taggedTemplateStringsWithTypedTags.ts, 0, 0)) g: I; ->g : Symbol(g, Decl(taggedTemplateStringsWithTypedTags.ts, 1, 50)) +>g : Symbol(I.g, Decl(taggedTemplateStringsWithTypedTags.ts, 1, 50)) >I : Symbol(I, Decl(taggedTemplateStringsWithTypedTags.ts, 0, 0)) h: I; ->h : Symbol(h, Decl(taggedTemplateStringsWithTypedTags.ts, 2, 9)) +>h : Symbol(I.h, Decl(taggedTemplateStringsWithTypedTags.ts, 2, 9)) >I : Symbol(I, Decl(taggedTemplateStringsWithTypedTags.ts, 0, 0)) member: I; ->member : Symbol(member, Decl(taggedTemplateStringsWithTypedTags.ts, 3, 9)) +>member : Symbol(I.member, Decl(taggedTemplateStringsWithTypedTags.ts, 3, 9)) >I : Symbol(I, Decl(taggedTemplateStringsWithTypedTags.ts, 0, 0)) thisIsNotATag(x: string): void ->thisIsNotATag : Symbol(thisIsNotATag, Decl(taggedTemplateStringsWithTypedTags.ts, 4, 14)) +>thisIsNotATag : Symbol(I.thisIsNotATag, Decl(taggedTemplateStringsWithTypedTags.ts, 4, 14)) >x : Symbol(x, Decl(taggedTemplateStringsWithTypedTags.ts, 5, 18)) [x: number]: I; diff --git a/tests/baselines/reference/taggedTemplateStringsWithTypedTagsES6.symbols b/tests/baselines/reference/taggedTemplateStringsWithTypedTagsES6.symbols index a78e10c11e0..f0b088bd6f6 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithTypedTagsES6.symbols +++ b/tests/baselines/reference/taggedTemplateStringsWithTypedTagsES6.symbols @@ -8,19 +8,19 @@ interface I { >I : Symbol(I, Decl(taggedTemplateStringsWithTypedTagsES6.ts, 0, 0)) g: I; ->g : Symbol(g, Decl(taggedTemplateStringsWithTypedTagsES6.ts, 1, 50)) +>g : Symbol(I.g, Decl(taggedTemplateStringsWithTypedTagsES6.ts, 1, 50)) >I : Symbol(I, Decl(taggedTemplateStringsWithTypedTagsES6.ts, 0, 0)) h: I; ->h : Symbol(h, Decl(taggedTemplateStringsWithTypedTagsES6.ts, 2, 9)) +>h : Symbol(I.h, Decl(taggedTemplateStringsWithTypedTagsES6.ts, 2, 9)) >I : Symbol(I, Decl(taggedTemplateStringsWithTypedTagsES6.ts, 0, 0)) member: I; ->member : Symbol(member, Decl(taggedTemplateStringsWithTypedTagsES6.ts, 3, 9)) +>member : Symbol(I.member, Decl(taggedTemplateStringsWithTypedTagsES6.ts, 3, 9)) >I : Symbol(I, Decl(taggedTemplateStringsWithTypedTagsES6.ts, 0, 0)) thisIsNotATag(x: string): void ->thisIsNotATag : Symbol(thisIsNotATag, Decl(taggedTemplateStringsWithTypedTagsES6.ts, 4, 14)) +>thisIsNotATag : Symbol(I.thisIsNotATag, Decl(taggedTemplateStringsWithTypedTagsES6.ts, 4, 14)) >x : Symbol(x, Decl(taggedTemplateStringsWithTypedTagsES6.ts, 5, 18)) [x: number]: I; diff --git a/tests/baselines/reference/templateStringWithEmbeddedNewOperator.symbols b/tests/baselines/reference/templateStringWithEmbeddedNewOperator.symbols index ed7ef9dbc63..120bd330502 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedNewOperator.symbols +++ b/tests/baselines/reference/templateStringWithEmbeddedNewOperator.symbols @@ -1,5 +1,5 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedNewOperator.ts === var x = `abc${ new String("Hi") }def`; >x : Symbol(x, Decl(templateStringWithEmbeddedNewOperator.ts, 0, 3)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) diff --git a/tests/baselines/reference/templateStringWithEmbeddedNewOperatorES6.symbols b/tests/baselines/reference/templateStringWithEmbeddedNewOperatorES6.symbols index a7240d4fd22..8b499b52e6b 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedNewOperatorES6.symbols +++ b/tests/baselines/reference/templateStringWithEmbeddedNewOperatorES6.symbols @@ -1,5 +1,5 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedNewOperatorES6.ts === var x = `abc${ new String("Hi") }def`; >x : Symbol(x, Decl(templateStringWithEmbeddedNewOperatorES6.ts, 0, 3)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --)) diff --git a/tests/baselines/reference/templateStringWithEmbeddedUnaryPlusES6.symbols b/tests/baselines/reference/templateStringWithEmbeddedUnaryPlusES6.symbols index 5d27cedede1..df10fbfca6d 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedUnaryPlusES6.symbols +++ b/tests/baselines/reference/templateStringWithEmbeddedUnaryPlusES6.symbols @@ -1,5 +1,5 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedUnaryPlusES6.ts === var x = `abc${ +Infinity }def`; >x : Symbol(x, Decl(templateStringWithEmbeddedUnaryPlusES6.ts, 0, 3)) ->Infinity : Symbol(Infinity, Decl(lib.d.ts, --, --)) +>Infinity : Symbol(Infinity, Decl(lib.es5.d.ts, --, --)) diff --git a/tests/baselines/reference/templateStringWithPropertyAccessES6.symbols b/tests/baselines/reference/templateStringWithPropertyAccessES6.symbols index 9259aff2a31..803705609a1 100644 --- a/tests/baselines/reference/templateStringWithPropertyAccessES6.symbols +++ b/tests/baselines/reference/templateStringWithPropertyAccessES6.symbols @@ -1,5 +1,5 @@ === tests/cases/conformance/es6/templates/templateStringWithPropertyAccessES6.ts === `abc${0}abc`.indexOf(`abc`); ->`abc${0}abc`.indexOf : Symbol(String.indexOf, Decl(lib.d.ts, --, --)) ->indexOf : Symbol(String.indexOf, Decl(lib.d.ts, --, --)) +>`abc${0}abc`.indexOf : Symbol(String.indexOf, Decl(lib.es5.d.ts, --, --)) +>indexOf : Symbol(String.indexOf, Decl(lib.es5.d.ts, --, --)) diff --git a/tests/baselines/reference/testContainerList.symbols b/tests/baselines/reference/testContainerList.symbols index aed56643448..79c7df0c82f 100644 --- a/tests/baselines/reference/testContainerList.symbols +++ b/tests/baselines/reference/testContainerList.symbols @@ -7,7 +7,7 @@ module A { >C : Symbol(C, Decl(testContainerList.ts, 1, 10)) constructor(public d: {}) { } ->d : Symbol(d, Decl(testContainerList.ts, 3, 20)) +>d : Symbol(C.d, Decl(testContainerList.ts, 3, 20)) } } diff --git a/tests/baselines/reference/testTypings.symbols b/tests/baselines/reference/testTypings.symbols index 5e3074a9585..4d91263142a 100644 --- a/tests/baselines/reference/testTypings.symbols +++ b/tests/baselines/reference/testTypings.symbols @@ -4,7 +4,7 @@ interface IComparable { >T : Symbol(T, Decl(testTypings.ts, 0, 22)) compareTo(other: T); ->compareTo : Symbol(compareTo, Decl(testTypings.ts, 0, 26)) +>compareTo : Symbol(IComparable.compareTo, Decl(testTypings.ts, 0, 26)) >other : Symbol(other, Decl(testTypings.ts, 1, 13)) >T : Symbol(T, Decl(testTypings.ts, 0, 22)) } diff --git a/tests/baselines/reference/thisBinding2.symbols b/tests/baselines/reference/thisBinding2.symbols index 60c11c2e959..cdef9b60b3e 100644 --- a/tests/baselines/reference/thisBinding2.symbols +++ b/tests/baselines/reference/thisBinding2.symbols @@ -3,27 +3,27 @@ class C { >C : Symbol(C, Decl(thisBinding2.ts, 0, 0)) x: number; ->x : Symbol(x, Decl(thisBinding2.ts, 0, 9)) +>x : Symbol(C.x, Decl(thisBinding2.ts, 0, 9)) constructor() { this.x = (() => { ->this.x : Symbol(x, Decl(thisBinding2.ts, 0, 9)) +>this.x : Symbol(C.x, Decl(thisBinding2.ts, 0, 9)) >this : Symbol(C, Decl(thisBinding2.ts, 0, 0)) ->x : Symbol(x, Decl(thisBinding2.ts, 0, 9)) +>x : Symbol(C.x, Decl(thisBinding2.ts, 0, 9)) var x = 1; >x : Symbol(x, Decl(thisBinding2.ts, 4, 6)) return this.x; ->this.x : Symbol(x, Decl(thisBinding2.ts, 0, 9)) +>this.x : Symbol(C.x, Decl(thisBinding2.ts, 0, 9)) >this : Symbol(C, Decl(thisBinding2.ts, 0, 0)) ->x : Symbol(x, Decl(thisBinding2.ts, 0, 9)) +>x : Symbol(C.x, Decl(thisBinding2.ts, 0, 9)) })(); this.x = function() { ->this.x : Symbol(x, Decl(thisBinding2.ts, 0, 9)) +>this.x : Symbol(C.x, Decl(thisBinding2.ts, 0, 9)) >this : Symbol(C, Decl(thisBinding2.ts, 0, 0)) ->x : Symbol(x, Decl(thisBinding2.ts, 0, 9)) +>x : Symbol(C.x, Decl(thisBinding2.ts, 0, 9)) var x = 1; >x : Symbol(x, Decl(thisBinding2.ts, 8, 6)) diff --git a/tests/baselines/reference/thisCapture1.symbols b/tests/baselines/reference/thisCapture1.symbols index fade5bbeca3..7065eb0db1c 100644 --- a/tests/baselines/reference/thisCapture1.symbols +++ b/tests/baselines/reference/thisCapture1.symbols @@ -3,10 +3,10 @@ class X { >X : Symbol(X, Decl(thisCapture1.ts, 0, 0)) private y = 0; ->y : Symbol(y, Decl(thisCapture1.ts, 0, 9)) +>y : Symbol(X.y, Decl(thisCapture1.ts, 0, 9)) public getSettings(keys: string[]): any { ->getSettings : Symbol(getSettings, Decl(thisCapture1.ts, 1, 18)) +>getSettings : Symbol(X.getSettings, Decl(thisCapture1.ts, 1, 18)) >keys : Symbol(keys, Decl(thisCapture1.ts, 2, 23)) var ret: any; @@ -16,9 +16,9 @@ class X { >ret : Symbol(ret, Decl(thisCapture1.ts, 3, 11)) this.y = 0; ->this.y : Symbol(y, Decl(thisCapture1.ts, 0, 9)) +>this.y : Symbol(X.y, Decl(thisCapture1.ts, 0, 9)) >this : Symbol(X, Decl(thisCapture1.ts, 0, 0)) ->y : Symbol(y, Decl(thisCapture1.ts, 0, 9)) +>y : Symbol(X.y, Decl(thisCapture1.ts, 0, 9)) }).promise(); } diff --git a/tests/baselines/reference/thisExpressionOfGenericObject.symbols b/tests/baselines/reference/thisExpressionOfGenericObject.symbols index f923b675e5d..4f0affe548b 100644 --- a/tests/baselines/reference/thisExpressionOfGenericObject.symbols +++ b/tests/baselines/reference/thisExpressionOfGenericObject.symbols @@ -4,7 +4,7 @@ class MyClass1 { >T : Symbol(T, Decl(thisExpressionOfGenericObject.ts, 0, 15)) private obj: MyClass1; ->obj : Symbol(obj, Decl(thisExpressionOfGenericObject.ts, 0, 19)) +>obj : Symbol(MyClass1.obj, Decl(thisExpressionOfGenericObject.ts, 0, 19)) >MyClass1 : Symbol(MyClass1, Decl(thisExpressionOfGenericObject.ts, 0, 0)) constructor() { diff --git a/tests/baselines/reference/thisInInnerFunctions.symbols b/tests/baselines/reference/thisInInnerFunctions.symbols index 70c9106f9f8..c981180ec79 100644 --- a/tests/baselines/reference/thisInInnerFunctions.symbols +++ b/tests/baselines/reference/thisInInnerFunctions.symbols @@ -3,10 +3,10 @@ class Foo { >Foo : Symbol(Foo, Decl(thisInInnerFunctions.ts, 0, 0)) x = "hello"; ->x : Symbol(x, Decl(thisInInnerFunctions.ts, 0, 11)) +>x : Symbol(Foo.x, Decl(thisInInnerFunctions.ts, 0, 11)) bar() { ->bar : Symbol(bar, Decl(thisInInnerFunctions.ts, 1, 16)) +>bar : Symbol(Foo.bar, Decl(thisInInnerFunctions.ts, 1, 16)) function inner() { >inner : Symbol(inner, Decl(thisInInnerFunctions.ts, 2, 11)) diff --git a/tests/baselines/reference/thisInInstanceMemberInitializer.symbols b/tests/baselines/reference/thisInInstanceMemberInitializer.symbols index 2690bb1b73e..00a0f92e439 100644 --- a/tests/baselines/reference/thisInInstanceMemberInitializer.symbols +++ b/tests/baselines/reference/thisInInstanceMemberInitializer.symbols @@ -3,7 +3,7 @@ class C { >C : Symbol(C, Decl(thisInInstanceMemberInitializer.ts, 0, 0)) x = this; ->x : Symbol(x, Decl(thisInInstanceMemberInitializer.ts, 0, 9)) +>x : Symbol(C.x, Decl(thisInInstanceMemberInitializer.ts, 0, 9)) >this : Symbol(C, Decl(thisInInstanceMemberInitializer.ts, 0, 0)) } @@ -12,10 +12,10 @@ class D { >T : Symbol(T, Decl(thisInInstanceMemberInitializer.ts, 4, 8)) x = this; ->x : Symbol(x, Decl(thisInInstanceMemberInitializer.ts, 4, 12)) +>x : Symbol(D.x, Decl(thisInInstanceMemberInitializer.ts, 4, 12)) >this : Symbol(D, Decl(thisInInstanceMemberInitializer.ts, 2, 1)) y: T; ->y : Symbol(y, Decl(thisInInstanceMemberInitializer.ts, 5, 13)) +>y : Symbol(D.y, Decl(thisInInstanceMemberInitializer.ts, 5, 13)) >T : Symbol(T, Decl(thisInInstanceMemberInitializer.ts, 4, 8)) } diff --git a/tests/baselines/reference/thisInLambda.symbols b/tests/baselines/reference/thisInLambda.symbols index e760c1b1c02..79a43a59037 100644 --- a/tests/baselines/reference/thisInLambda.symbols +++ b/tests/baselines/reference/thisInLambda.symbols @@ -3,21 +3,21 @@ class Foo { >Foo : Symbol(Foo, Decl(thisInLambda.ts, 0, 0)) x = "hello"; ->x : Symbol(x, Decl(thisInLambda.ts, 0, 11)) +>x : Symbol(Foo.x, Decl(thisInLambda.ts, 0, 11)) bar() { ->bar : Symbol(bar, Decl(thisInLambda.ts, 1, 16)) +>bar : Symbol(Foo.bar, Decl(thisInLambda.ts, 1, 16)) this.x; // 'this' is type 'Foo' ->this.x : Symbol(x, Decl(thisInLambda.ts, 0, 11)) +>this.x : Symbol(Foo.x, Decl(thisInLambda.ts, 0, 11)) >this : Symbol(Foo, Decl(thisInLambda.ts, 0, 0)) ->x : Symbol(x, Decl(thisInLambda.ts, 0, 11)) +>x : Symbol(Foo.x, Decl(thisInLambda.ts, 0, 11)) var f = () => this.x; // 'this' should be type 'Foo' as well >f : Symbol(f, Decl(thisInLambda.ts, 4, 11)) ->this.x : Symbol(x, Decl(thisInLambda.ts, 0, 11)) +>this.x : Symbol(Foo.x, Decl(thisInLambda.ts, 0, 11)) >this : Symbol(Foo, Decl(thisInLambda.ts, 0, 0)) ->x : Symbol(x, Decl(thisInLambda.ts, 0, 11)) +>x : Symbol(Foo.x, Decl(thisInLambda.ts, 0, 11)) } } diff --git a/tests/baselines/reference/thisInObjectLiterals.errors.txt b/tests/baselines/reference/thisInObjectLiterals.errors.txt index 73300d86d74..e89980dc244 100644 --- a/tests/baselines/reference/thisInObjectLiterals.errors.txt +++ b/tests/baselines/reference/thisInObjectLiterals.errors.txt @@ -14,7 +14,7 @@ tests/cases/conformance/expressions/thisKeyword/thisInObjectLiterals.ts(7,13): e } } - //type of 'this' in an object literal property of a function type is Any + //type of 'this' in an object literal method is the type of the object literal var obj = { f() { return this.spaaace; diff --git a/tests/baselines/reference/thisInObjectLiterals.js b/tests/baselines/reference/thisInObjectLiterals.js index 4e71347a366..6c8380060a7 100644 --- a/tests/baselines/reference/thisInObjectLiterals.js +++ b/tests/baselines/reference/thisInObjectLiterals.js @@ -9,7 +9,7 @@ class MyClass { } } -//type of 'this' in an object literal property of a function type is Any +//type of 'this' in an object literal method is the type of the object literal var obj = { f() { return this.spaaace; @@ -29,7 +29,7 @@ var MyClass = (function () { }; return MyClass; }()); -//type of 'this' in an object literal property of a function type is Any +//type of 'this' in an object literal method is the type of the object literal var obj = { f: function () { return this.spaaace; diff --git a/tests/baselines/reference/thisInPropertyBoundDeclarations.symbols b/tests/baselines/reference/thisInPropertyBoundDeclarations.symbols index 9d405b8f6f6..12d3b2db31e 100644 --- a/tests/baselines/reference/thisInPropertyBoundDeclarations.symbols +++ b/tests/baselines/reference/thisInPropertyBoundDeclarations.symbols @@ -3,7 +3,7 @@ class Bug { >Bug : Symbol(Bug, Decl(thisInPropertyBoundDeclarations.ts, 0, 0)) private name: string; ->name : Symbol(name, Decl(thisInPropertyBoundDeclarations.ts, 0, 11)) +>name : Symbol(Bug.name, Decl(thisInPropertyBoundDeclarations.ts, 0, 11)) private static func: Function[] = [ >func : Symbol(Bug.func, Decl(thisInPropertyBoundDeclarations.ts, 1, 25)) @@ -23,13 +23,13 @@ class Bug { ]; private foo(name: string) { ->foo : Symbol(foo, Decl(thisInPropertyBoundDeclarations.ts, 7, 6)) +>foo : Symbol(Bug.foo, Decl(thisInPropertyBoundDeclarations.ts, 7, 6)) >name : Symbol(name, Decl(thisInPropertyBoundDeclarations.ts, 9, 16)) this.name = name; ->this.name : Symbol(name, Decl(thisInPropertyBoundDeclarations.ts, 0, 11)) +>this.name : Symbol(Bug.name, Decl(thisInPropertyBoundDeclarations.ts, 0, 11)) >this : Symbol(Bug, Decl(thisInPropertyBoundDeclarations.ts, 0, 0)) ->name : Symbol(name, Decl(thisInPropertyBoundDeclarations.ts, 0, 11)) +>name : Symbol(Bug.name, Decl(thisInPropertyBoundDeclarations.ts, 0, 11)) >name : Symbol(name, Decl(thisInPropertyBoundDeclarations.ts, 9, 16)) } } @@ -39,13 +39,13 @@ class A { >A : Symbol(A, Decl(thisInPropertyBoundDeclarations.ts, 12, 1)) prop1 = function() { ->prop1 : Symbol(prop1, Decl(thisInPropertyBoundDeclarations.ts, 15, 9)) +>prop1 : Symbol(A.prop1, Decl(thisInPropertyBoundDeclarations.ts, 15, 9)) this; }; prop2 = function() { ->prop2 : Symbol(prop2, Decl(thisInPropertyBoundDeclarations.ts, 18, 6)) +>prop2 : Symbol(A.prop2, Decl(thisInPropertyBoundDeclarations.ts, 18, 6)) function inner() { >inner : Symbol(inner, Decl(thisInPropertyBoundDeclarations.ts, 20, 24)) @@ -56,7 +56,7 @@ class A { }; prop3 = () => { ->prop3 : Symbol(prop3, Decl(thisInPropertyBoundDeclarations.ts, 25, 6)) +>prop3 : Symbol(A.prop3, Decl(thisInPropertyBoundDeclarations.ts, 25, 6)) function inner() { >inner : Symbol(inner, Decl(thisInPropertyBoundDeclarations.ts, 27, 19)) @@ -66,7 +66,7 @@ class A { }; prop4 = { ->prop4 : Symbol(prop4, Decl(thisInPropertyBoundDeclarations.ts, 31, 6)) +>prop4 : Symbol(A.prop4, Decl(thisInPropertyBoundDeclarations.ts, 31, 6)) a: function() { return this; }, >a : Symbol(a, Decl(thisInPropertyBoundDeclarations.ts, 33, 13)) @@ -74,7 +74,7 @@ class A { }; prop5 = () => { ->prop5 : Symbol(prop5, Decl(thisInPropertyBoundDeclarations.ts, 35, 6)) +>prop5 : Symbol(A.prop5, Decl(thisInPropertyBoundDeclarations.ts, 35, 6)) return { a: function() { return this; }, @@ -88,19 +88,19 @@ class B { >B : Symbol(B, Decl(thisInPropertyBoundDeclarations.ts, 42, 1)) prop1 = this; ->prop1 : Symbol(prop1, Decl(thisInPropertyBoundDeclarations.ts, 44, 9)) +>prop1 : Symbol(B.prop1, Decl(thisInPropertyBoundDeclarations.ts, 44, 9)) >this : Symbol(B, Decl(thisInPropertyBoundDeclarations.ts, 42, 1)) prop2 = () => this; ->prop2 : Symbol(prop2, Decl(thisInPropertyBoundDeclarations.ts, 45, 17)) +>prop2 : Symbol(B.prop2, Decl(thisInPropertyBoundDeclarations.ts, 45, 17)) >this : Symbol(B, Decl(thisInPropertyBoundDeclarations.ts, 42, 1)) prop3 = () => () => () => () => this; ->prop3 : Symbol(prop3, Decl(thisInPropertyBoundDeclarations.ts, 47, 23)) +>prop3 : Symbol(B.prop3, Decl(thisInPropertyBoundDeclarations.ts, 47, 23)) >this : Symbol(B, Decl(thisInPropertyBoundDeclarations.ts, 42, 1)) prop4 = ' ' + ->prop4 : Symbol(prop4, Decl(thisInPropertyBoundDeclarations.ts, 49, 41)) +>prop4 : Symbol(B.prop4, Decl(thisInPropertyBoundDeclarations.ts, 49, 41)) function() { } + @@ -109,7 +109,7 @@ class B { >this : Symbol(B, Decl(thisInPropertyBoundDeclarations.ts, 42, 1)) prop5 = { ->prop5 : Symbol(prop5, Decl(thisInPropertyBoundDeclarations.ts, 55, 29)) +>prop5 : Symbol(B.prop5, Decl(thisInPropertyBoundDeclarations.ts, 55, 29)) a: () => { return this; } >a : Symbol(a, Decl(thisInPropertyBoundDeclarations.ts, 57, 13)) @@ -118,7 +118,7 @@ class B { }; prop6 = () => { ->prop6 : Symbol(prop6, Decl(thisInPropertyBoundDeclarations.ts, 59, 6)) +>prop6 : Symbol(B.prop6, Decl(thisInPropertyBoundDeclarations.ts, 59, 6)) return { a: () => { return this; } diff --git a/tests/baselines/reference/thisTypeAndConstraints.symbols b/tests/baselines/reference/thisTypeAndConstraints.symbols index 5f93df22c1a..777a19a95fd 100644 --- a/tests/baselines/reference/thisTypeAndConstraints.symbols +++ b/tests/baselines/reference/thisTypeAndConstraints.symbols @@ -3,7 +3,7 @@ class A { >A : Symbol(A, Decl(thisTypeAndConstraints.ts, 0, 0)) self() { ->self : Symbol(self, Decl(thisTypeAndConstraints.ts, 0, 9)) +>self : Symbol(A.self, Decl(thisTypeAndConstraints.ts, 0, 9)) return this; >this : Symbol(A, Decl(thisTypeAndConstraints.ts, 0, 0)) @@ -43,7 +43,7 @@ class B { >A : Symbol(A, Decl(thisTypeAndConstraints.ts, 0, 0)) foo(x: T) { ->foo : Symbol(foo, Decl(thisTypeAndConstraints.ts, 13, 22)) +>foo : Symbol(B.foo, Decl(thisTypeAndConstraints.ts, 13, 22)) >x : Symbol(x, Decl(thisTypeAndConstraints.ts, 14, 8)) >T : Symbol(T, Decl(thisTypeAndConstraints.ts, 13, 8)) @@ -54,7 +54,7 @@ class B { >self : Symbol(A.self, Decl(thisTypeAndConstraints.ts, 0, 9)) } bar(x: U) { ->bar : Symbol(bar, Decl(thisTypeAndConstraints.ts, 16, 5)) +>bar : Symbol(B.bar, Decl(thisTypeAndConstraints.ts, 16, 5)) >U : Symbol(U, Decl(thisTypeAndConstraints.ts, 17, 8)) >T : Symbol(T, Decl(thisTypeAndConstraints.ts, 13, 8)) >x : Symbol(x, Decl(thisTypeAndConstraints.ts, 17, 21)) diff --git a/tests/baselines/reference/thisTypeAsConstraint.symbols b/tests/baselines/reference/thisTypeAsConstraint.symbols index 020dd966cad..ae1407bd253 100644 --- a/tests/baselines/reference/thisTypeAsConstraint.symbols +++ b/tests/baselines/reference/thisTypeAsConstraint.symbols @@ -3,7 +3,7 @@ class C { >C : Symbol(C, Decl(thisTypeAsConstraint.ts, 0, 0)) public m() { ->m : Symbol(m, Decl(thisTypeAsConstraint.ts, 0, 9)) +>m : Symbol(C.m, Decl(thisTypeAsConstraint.ts, 0, 9)) >T : Symbol(T, Decl(thisTypeAsConstraint.ts, 1, 11)) } } diff --git a/tests/baselines/reference/thisTypeInClasses.symbols b/tests/baselines/reference/thisTypeInClasses.symbols index 5ae45b923af..0f98f013b01 100644 --- a/tests/baselines/reference/thisTypeInClasses.symbols +++ b/tests/baselines/reference/thisTypeInClasses.symbols @@ -3,10 +3,10 @@ class C1 { >C1 : Symbol(C1, Decl(thisTypeInClasses.ts, 0, 0)) x: this; ->x : Symbol(x, Decl(thisTypeInClasses.ts, 0, 10)) +>x : Symbol(C1.x, Decl(thisTypeInClasses.ts, 0, 10)) f(x: this): this { return undefined; } ->f : Symbol(f, Decl(thisTypeInClasses.ts, 1, 12)) +>f : Symbol(C1.f, Decl(thisTypeInClasses.ts, 1, 12)) >x : Symbol(x, Decl(thisTypeInClasses.ts, 2, 6)) >undefined : Symbol(undefined) } @@ -23,51 +23,51 @@ interface Foo { >T : Symbol(T, Decl(thisTypeInClasses.ts, 9, 14)) x: T; ->x : Symbol(x, Decl(thisTypeInClasses.ts, 9, 18)) +>x : Symbol(Foo.x, Decl(thisTypeInClasses.ts, 9, 18)) >T : Symbol(T, Decl(thisTypeInClasses.ts, 9, 14)) y: this; ->y : Symbol(y, Decl(thisTypeInClasses.ts, 10, 9)) +>y : Symbol(Foo.y, Decl(thisTypeInClasses.ts, 10, 9)) } class C3 { >C3 : Symbol(C3, Decl(thisTypeInClasses.ts, 12, 1)) a: this[]; ->a : Symbol(a, Decl(thisTypeInClasses.ts, 14, 10)) +>a : Symbol(C3.a, Decl(thisTypeInClasses.ts, 14, 10)) b: [this, this]; ->b : Symbol(b, Decl(thisTypeInClasses.ts, 15, 14)) +>b : Symbol(C3.b, Decl(thisTypeInClasses.ts, 15, 14)) c: this | Date; ->c : Symbol(c, Decl(thisTypeInClasses.ts, 16, 20)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>c : Symbol(C3.c, Decl(thisTypeInClasses.ts, 16, 20)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) d: this & Date; ->d : Symbol(d, Decl(thisTypeInClasses.ts, 17, 19)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>d : Symbol(C3.d, Decl(thisTypeInClasses.ts, 17, 19)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) e: (((this))); ->e : Symbol(e, Decl(thisTypeInClasses.ts, 18, 19)) +>e : Symbol(C3.e, Decl(thisTypeInClasses.ts, 18, 19)) f: (x: this) => this; ->f : Symbol(f, Decl(thisTypeInClasses.ts, 19, 18)) +>f : Symbol(C3.f, Decl(thisTypeInClasses.ts, 19, 18)) >x : Symbol(x, Decl(thisTypeInClasses.ts, 20, 8)) g: new (x: this) => this; ->g : Symbol(g, Decl(thisTypeInClasses.ts, 20, 25)) +>g : Symbol(C3.g, Decl(thisTypeInClasses.ts, 20, 25)) >x : Symbol(x, Decl(thisTypeInClasses.ts, 21, 12)) h: Foo; ->h : Symbol(h, Decl(thisTypeInClasses.ts, 21, 29)) +>h : Symbol(C3.h, Decl(thisTypeInClasses.ts, 21, 29)) >Foo : Symbol(Foo, Decl(thisTypeInClasses.ts, 7, 1)) i: Foo this)>; ->i : Symbol(i, Decl(thisTypeInClasses.ts, 22, 17)) +>i : Symbol(C3.i, Decl(thisTypeInClasses.ts, 22, 17)) >Foo : Symbol(Foo, Decl(thisTypeInClasses.ts, 7, 1)) j: (x: any) => x is this; ->j : Symbol(j, Decl(thisTypeInClasses.ts, 23, 32)) +>j : Symbol(C3.j, Decl(thisTypeInClasses.ts, 23, 32)) >x : Symbol(x, Decl(thisTypeInClasses.ts, 24, 8)) >x : Symbol(x, Decl(thisTypeInClasses.ts, 24, 8)) } @@ -76,10 +76,10 @@ declare class C4 { >C4 : Symbol(C4, Decl(thisTypeInClasses.ts, 25, 1)) x: this; ->x : Symbol(x, Decl(thisTypeInClasses.ts, 27, 18)) +>x : Symbol(C4.x, Decl(thisTypeInClasses.ts, 27, 18)) f(x: this): this; ->f : Symbol(f, Decl(thisTypeInClasses.ts, 28, 12)) +>f : Symbol(C4.f, Decl(thisTypeInClasses.ts, 28, 12)) >x : Symbol(x, Decl(thisTypeInClasses.ts, 29, 6)) } @@ -87,7 +87,7 @@ class C5 { >C5 : Symbol(C5, Decl(thisTypeInClasses.ts, 30, 1)) foo() { ->foo : Symbol(foo, Decl(thisTypeInClasses.ts, 32, 10)) +>foo : Symbol(C5.foo, Decl(thisTypeInClasses.ts, 32, 10)) let f1 = (x: this): this => this; >f1 : Symbol(f1, Decl(thisTypeInClasses.ts, 34, 11)) @@ -122,7 +122,7 @@ class C5 { } } bar() { ->bar : Symbol(bar, Decl(thisTypeInClasses.ts, 43, 5)) +>bar : Symbol(C5.bar, Decl(thisTypeInClasses.ts, 43, 5)) let x1 = undefined; >x1 : Symbol(x1, Decl(thisTypeInClasses.ts, 45, 11)) diff --git a/tests/baselines/reference/thisTypeInFunctions.js b/tests/baselines/reference/thisTypeInFunctions.js new file mode 100644 index 00000000000..cfe1706ae99 --- /dev/null +++ b/tests/baselines/reference/thisTypeInFunctions.js @@ -0,0 +1,382 @@ +//// [thisTypeInFunctions.ts] +// body checking +class B { + n: number; +} +class C { + n: number; + explicitThis(this: this, m: number): number { + return this.n + m; + } + explicitC(this: C, m: number): number { + return this.n + m; + } + explicitProperty(this: {n: number}, m: number): number { + return this.n + m; + } + explicitVoid(this: void, m: number): number { + return m + 1; + } +} +class D extends C { } +interface I { + a: number; + explicitVoid1(this: void): number; + explicitVoid2(this: void): number; + explicitStructural(this: {a: number}): number; + explicitInterface(this: I): number; + explicitThis(this: this): number; +} +function explicitStructural(this: { y: number }, x: number): number { + return x + this.y; +} +function justThis(this: { y: number }): number { + return this.y; +} +function implicitThis(n: number): number { + return this.m + n + 12; +} +let impl: I = { + a: 12, + explicitVoid2: () => this.a, // ok, this: any because it refers to some outer object (window?) + explicitVoid1() { return 12; }, + explicitStructural() { + return this.a; + }, + explicitInterface() { + return this.a; + }, + explicitThis() { + return this.a; + }, +} +impl.explicitVoid1 = function () { return 12; }; +impl.explicitVoid2 = () => 12; +impl.explicitStructural = function() { return this.a; }; +impl.explicitInterface = function() { return this.a; }; +impl.explicitStructural = () => 12; +impl.explicitInterface = () => 12; +impl.explicitThis = function () { return this.a; }; +// parameter checking +let ok: {y: number, f: (this: { y: number }, x: number) => number} = { y: 12, f: explicitStructural }; +let implicitAnyOk: {notSpecified: number, f: (x: number) => number} = { notSpecified: 12, f: implicitThis }; +ok.f(13); +implicitThis(12); +implicitAnyOk.f(12); + +let c = new C(); +let d = new D(); +let ripped = c.explicitC; +c.explicitC(12); +c.explicitProperty(12); +c.explicitThis(12); +d.explicitC(12); +d.explicitProperty(12); +d.explicitThis(12); +let reconstructed: { + n: number, + explicitThis(this: C, m: number): number, // note: this: this is not allowed in an object literal type. + explicitC(this: C, m: number): number, + explicitProperty: (this: {n : number}, m: number) => number, + explicitVoid(this: void, m: number): number, +} = { + n: 12, + explicitThis: c.explicitThis, + explicitC: c.explicitC, + explicitProperty: c.explicitProperty, + explicitVoid: c.explicitVoid +}; +reconstructed.explicitThis(10); +reconstructed.explicitProperty(11); +let explicitVoid = reconstructed.explicitVoid; +explicitVoid(12); +// assignment checking +let unboundToSpecified: (this: { y: number }, x: number) => number = x => x + this.y; // ok, this:any +let specifiedToSpecified: (this: {y: number}, x: number) => number = explicitStructural; +let anyToSpecified: (this: { y: number }, x: number) => number = function(x: number): number { return x + 12; }; + +let unspecifiedLambda: (x: number) => number = x => x + 12; +let specifiedLambda: (this: void, x: number) => number = x => x + 12; +let unspecifiedLambdaToSpecified: (this: {y: number}, x: number) => number = unspecifiedLambda; +let specifiedLambdaToSpecified: (this: {y: number}, x: number) => number = specifiedLambda; + + +let explicitCFunction: (this: C, m: number) => number; +let explicitPropertyFunction: (this: {n: number}, m: number) => number; +c.explicitC = explicitCFunction; +c.explicitC = function(this: C, m: number) { return this.n + m }; +c.explicitProperty = explicitPropertyFunction; +c.explicitProperty = function(this: {n: number}, m: number) { return this.n + m }; +c.explicitProperty = reconstructed.explicitProperty; + +// lambdas are assignable to anything +c.explicitC = m => m; +c.explicitThis = m => m; +c.explicitProperty = m => m; + +// this inside lambdas refer to outer scope +// the outer-scoped lambda at top-level is still just `any` +c.explicitC = m => m + this.n; +c.explicitThis = m => m + this.n; +c.explicitProperty = m => m + this.n; + +//NOTE: this=C here, I guess? +c.explicitThis = explicitCFunction; +c.explicitThis = function(this: C, m: number) { return this.n + m }; + +// this:any compatibility +c.explicitC = function(m) { return this.n + m }; +c.explicitProperty = function(m) { return this.n + m }; +c.explicitThis = function(m) { return this.n + m }; + +// this: contextual typing +c.explicitThis = function(this, m) { return this.n + m }; + +// this: superclass compatibility +c.explicitC = function(this: B, m: number) { return this.n + m }; + +// this:void compatibility +c.explicitVoid = n => n; + +// class-based assignability +class Base1 { + x: number; + public polymorphic(this: this): number { return this.x; } + explicit(this: Base1): number { return this.x; } + static explicitStatic(this: typeof Base1): number { return this.y; } + static y: number; +} +class Derived1 extends Base1 { + y: number +} +class Base2 { + y: number + polymorphic(this: this): number { return this.y; } + explicit(this: Base1): number { return this.x; } +} +class Derived2 extends Base2 { + x: number +} +let b1 = new Base1(); +let b2 = new Base2(); +let d1 = new Derived1(); +let d2 = new Derived2(); +d2.polymorphic = d1.polymorphic // ok, 'x' and 'y' in { x, y } +d1.polymorphic = d2.polymorphic // ok, 'x' and 'y' in { x, y } + +// bivariance-allowed cases +d1.polymorphic = b2.polymorphic // ok, 'y' in D: { x, y } +d2.polymorphic = d1.explicit // ok, 'y' in { x, y } +b1.polymorphic = d2.polymorphic // ok, 'x' and 'y' not in Base1: { x } +b1.explicit = d2.polymorphic // ok, 'x' and 'y' not in Base1: { x } + +////// use this-type for construction with new //// +function InterfaceThis(this: I) { + this.a = 12; +} +function LiteralTypeThis(this: {x: string}) { + this.x = "ok"; +} +function AnyThis(this: any) { + this.x = "ok"; +} +let interfaceThis = new InterfaceThis(); +let literalTypeThis = new LiteralTypeThis(); +let anyThis = new AnyThis(); + +//// type parameter inference //// +declare var f: { + (this: void, x: number): number, + call(this: (...argArray: any[]) => U, ...argArray: any[]): U; +}; +let n: number = f.call(12); + +function missingTypeIsImplicitAny(this, a: number) { return this.anything + a; } + + +//// [thisTypeInFunctions.js] +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +var _this = this; +// body checking +var B = (function () { + function B() { + } + return B; +}()); +var C = (function () { + function C() { + } + C.prototype.explicitThis = function (m) { + return this.n + m; + }; + C.prototype.explicitC = function (m) { + return this.n + m; + }; + C.prototype.explicitProperty = function (m) { + return this.n + m; + }; + C.prototype.explicitVoid = function (m) { + return m + 1; + }; + return C; +}()); +var D = (function (_super) { + __extends(D, _super); + function D() { + _super.apply(this, arguments); + } + return D; +}(C)); +function explicitStructural(x) { + return x + this.y; +} +function justThis() { + return this.y; +} +function implicitThis(n) { + return this.m + n + 12; +} +var impl = { + a: 12, + explicitVoid2: function () { return _this.a; }, + explicitVoid1: function () { return 12; }, + explicitStructural: function () { + return this.a; + }, + explicitInterface: function () { + return this.a; + }, + explicitThis: function () { + return this.a; + } +}; +impl.explicitVoid1 = function () { return 12; }; +impl.explicitVoid2 = function () { return 12; }; +impl.explicitStructural = function () { return this.a; }; +impl.explicitInterface = function () { return this.a; }; +impl.explicitStructural = function () { return 12; }; +impl.explicitInterface = function () { return 12; }; +impl.explicitThis = function () { return this.a; }; +// parameter checking +var ok = { y: 12, f: explicitStructural }; +var implicitAnyOk = { notSpecified: 12, f: implicitThis }; +ok.f(13); +implicitThis(12); +implicitAnyOk.f(12); +var c = new C(); +var d = new D(); +var ripped = c.explicitC; +c.explicitC(12); +c.explicitProperty(12); +c.explicitThis(12); +d.explicitC(12); +d.explicitProperty(12); +d.explicitThis(12); +var reconstructed = { + n: 12, + explicitThis: c.explicitThis, + explicitC: c.explicitC, + explicitProperty: c.explicitProperty, + explicitVoid: c.explicitVoid +}; +reconstructed.explicitThis(10); +reconstructed.explicitProperty(11); +var explicitVoid = reconstructed.explicitVoid; +explicitVoid(12); +// assignment checking +var unboundToSpecified = function (x) { return x + _this.y; }; // ok, this:any +var specifiedToSpecified = explicitStructural; +var anyToSpecified = function (x) { return x + 12; }; +var unspecifiedLambda = function (x) { return x + 12; }; +var specifiedLambda = function (x) { return x + 12; }; +var unspecifiedLambdaToSpecified = unspecifiedLambda; +var specifiedLambdaToSpecified = specifiedLambda; +var explicitCFunction; +var explicitPropertyFunction; +c.explicitC = explicitCFunction; +c.explicitC = function (m) { return this.n + m; }; +c.explicitProperty = explicitPropertyFunction; +c.explicitProperty = function (m) { return this.n + m; }; +c.explicitProperty = reconstructed.explicitProperty; +// lambdas are assignable to anything +c.explicitC = function (m) { return m; }; +c.explicitThis = function (m) { return m; }; +c.explicitProperty = function (m) { return m; }; +// this inside lambdas refer to outer scope +// the outer-scoped lambda at top-level is still just `any` +c.explicitC = function (m) { return m + _this.n; }; +c.explicitThis = function (m) { return m + _this.n; }; +c.explicitProperty = function (m) { return m + _this.n; }; +//NOTE: this=C here, I guess? +c.explicitThis = explicitCFunction; +c.explicitThis = function (m) { return this.n + m; }; +// this:any compatibility +c.explicitC = function (m) { return this.n + m; }; +c.explicitProperty = function (m) { return this.n + m; }; +c.explicitThis = function (m) { return this.n + m; }; +// this: contextual typing +c.explicitThis = function (m) { return this.n + m; }; +// this: superclass compatibility +c.explicitC = function (m) { return this.n + m; }; +// this:void compatibility +c.explicitVoid = function (n) { return n; }; +// class-based assignability +var Base1 = (function () { + function Base1() { + } + Base1.prototype.polymorphic = function () { return this.x; }; + Base1.prototype.explicit = function () { return this.x; }; + Base1.explicitStatic = function () { return this.y; }; + return Base1; +}()); +var Derived1 = (function (_super) { + __extends(Derived1, _super); + function Derived1() { + _super.apply(this, arguments); + } + return Derived1; +}(Base1)); +var Base2 = (function () { + function Base2() { + } + Base2.prototype.polymorphic = function () { return this.y; }; + Base2.prototype.explicit = function () { return this.x; }; + return Base2; +}()); +var Derived2 = (function (_super) { + __extends(Derived2, _super); + function Derived2() { + _super.apply(this, arguments); + } + return Derived2; +}(Base2)); +var b1 = new Base1(); +var b2 = new Base2(); +var d1 = new Derived1(); +var d2 = new Derived2(); +d2.polymorphic = d1.polymorphic; // ok, 'x' and 'y' in { x, y } +d1.polymorphic = d2.polymorphic; // ok, 'x' and 'y' in { x, y } +// bivariance-allowed cases +d1.polymorphic = b2.polymorphic; // ok, 'y' in D: { x, y } +d2.polymorphic = d1.explicit; // ok, 'y' in { x, y } +b1.polymorphic = d2.polymorphic; // ok, 'x' and 'y' not in Base1: { x } +b1.explicit = d2.polymorphic; // ok, 'x' and 'y' not in Base1: { x } +////// use this-type for construction with new //// +function InterfaceThis() { + this.a = 12; +} +function LiteralTypeThis() { + this.x = "ok"; +} +function AnyThis() { + this.x = "ok"; +} +var interfaceThis = new InterfaceThis(); +var literalTypeThis = new LiteralTypeThis(); +var anyThis = new AnyThis(); +var n = f.call(12); +function missingTypeIsImplicitAny(a) { return this.anything + a; } diff --git a/tests/baselines/reference/thisTypeInFunctions.symbols b/tests/baselines/reference/thisTypeInFunctions.symbols new file mode 100644 index 00000000000..3d4c3f6ecc7 --- /dev/null +++ b/tests/baselines/reference/thisTypeInFunctions.symbols @@ -0,0 +1,797 @@ +=== tests/cases/conformance/types/thisType/thisTypeInFunctions.ts === +// body checking +class B { +>B : Symbol(B, Decl(thisTypeInFunctions.ts, 0, 0)) + + n: number; +>n : Symbol(B.n, Decl(thisTypeInFunctions.ts, 1, 9)) +} +class C { +>C : Symbol(C, Decl(thisTypeInFunctions.ts, 3, 1)) + + n: number; +>n : Symbol(C.n, Decl(thisTypeInFunctions.ts, 4, 9)) + + explicitThis(this: this, m: number): number { +>explicitThis : Symbol(C.explicitThis, Decl(thisTypeInFunctions.ts, 5, 14)) +>this : Symbol(this, Decl(thisTypeInFunctions.ts, 6, 17)) +>m : Symbol(m, Decl(thisTypeInFunctions.ts, 6, 28)) + + return this.n + m; +>this.n : Symbol(C.n, Decl(thisTypeInFunctions.ts, 4, 9)) +>this : Symbol(C, Decl(thisTypeInFunctions.ts, 3, 1)) +>n : Symbol(C.n, Decl(thisTypeInFunctions.ts, 4, 9)) +>m : Symbol(m, Decl(thisTypeInFunctions.ts, 6, 28)) + } + explicitC(this: C, m: number): number { +>explicitC : Symbol(C.explicitC, Decl(thisTypeInFunctions.ts, 8, 5)) +>this : Symbol(this, Decl(thisTypeInFunctions.ts, 9, 14)) +>C : Symbol(C, Decl(thisTypeInFunctions.ts, 3, 1)) +>m : Symbol(m, Decl(thisTypeInFunctions.ts, 9, 22)) + + return this.n + m; +>this.n : Symbol(C.n, Decl(thisTypeInFunctions.ts, 4, 9)) +>this : Symbol(C, Decl(thisTypeInFunctions.ts, 3, 1)) +>n : Symbol(C.n, Decl(thisTypeInFunctions.ts, 4, 9)) +>m : Symbol(m, Decl(thisTypeInFunctions.ts, 9, 22)) + } + explicitProperty(this: {n: number}, m: number): number { +>explicitProperty : Symbol(C.explicitProperty, Decl(thisTypeInFunctions.ts, 11, 5)) +>this : Symbol(this, Decl(thisTypeInFunctions.ts, 12, 21)) +>n : Symbol(n, Decl(thisTypeInFunctions.ts, 12, 28)) +>m : Symbol(m, Decl(thisTypeInFunctions.ts, 12, 39)) + + return this.n + m; +>this.n : Symbol(n, Decl(thisTypeInFunctions.ts, 12, 28)) +>this : Symbol(, Decl(thisTypeInFunctions.ts, 12, 26)) +>n : Symbol(n, Decl(thisTypeInFunctions.ts, 12, 28)) +>m : Symbol(m, Decl(thisTypeInFunctions.ts, 12, 39)) + } + explicitVoid(this: void, m: number): number { +>explicitVoid : Symbol(C.explicitVoid, Decl(thisTypeInFunctions.ts, 14, 5)) +>this : Symbol(this, Decl(thisTypeInFunctions.ts, 15, 17)) +>m : Symbol(m, Decl(thisTypeInFunctions.ts, 15, 28)) + + return m + 1; +>m : Symbol(m, Decl(thisTypeInFunctions.ts, 15, 28)) + } +} +class D extends C { } +>D : Symbol(D, Decl(thisTypeInFunctions.ts, 18, 1)) +>C : Symbol(C, Decl(thisTypeInFunctions.ts, 3, 1)) + +interface I { +>I : Symbol(I, Decl(thisTypeInFunctions.ts, 19, 21)) + + a: number; +>a : Symbol(I.a, Decl(thisTypeInFunctions.ts, 20, 13)) + + explicitVoid1(this: void): number; +>explicitVoid1 : Symbol(I.explicitVoid1, Decl(thisTypeInFunctions.ts, 21, 14)) +>this : Symbol(this, Decl(thisTypeInFunctions.ts, 22, 18)) + + explicitVoid2(this: void): number; +>explicitVoid2 : Symbol(I.explicitVoid2, Decl(thisTypeInFunctions.ts, 22, 38)) +>this : Symbol(this, Decl(thisTypeInFunctions.ts, 23, 18)) + + explicitStructural(this: {a: number}): number; +>explicitStructural : Symbol(I.explicitStructural, Decl(thisTypeInFunctions.ts, 23, 38)) +>this : Symbol(this, Decl(thisTypeInFunctions.ts, 24, 23)) +>a : Symbol(a, Decl(thisTypeInFunctions.ts, 24, 30)) + + explicitInterface(this: I): number; +>explicitInterface : Symbol(I.explicitInterface, Decl(thisTypeInFunctions.ts, 24, 50)) +>this : Symbol(this, Decl(thisTypeInFunctions.ts, 25, 22)) +>I : Symbol(I, Decl(thisTypeInFunctions.ts, 19, 21)) + + explicitThis(this: this): number; +>explicitThis : Symbol(I.explicitThis, Decl(thisTypeInFunctions.ts, 25, 39)) +>this : Symbol(this, Decl(thisTypeInFunctions.ts, 26, 17)) +} +function explicitStructural(this: { y: number }, x: number): number { +>explicitStructural : Symbol(explicitStructural, Decl(thisTypeInFunctions.ts, 27, 1)) +>this : Symbol(this, Decl(thisTypeInFunctions.ts, 28, 28)) +>y : Symbol(y, Decl(thisTypeInFunctions.ts, 28, 35)) +>x : Symbol(x, Decl(thisTypeInFunctions.ts, 28, 48)) + + return x + this.y; +>x : Symbol(x, Decl(thisTypeInFunctions.ts, 28, 48)) +>this.y : Symbol(y, Decl(thisTypeInFunctions.ts, 28, 35)) +>this : Symbol(, Decl(thisTypeInFunctions.ts, 28, 33)) +>y : Symbol(y, Decl(thisTypeInFunctions.ts, 28, 35)) +} +function justThis(this: { y: number }): number { +>justThis : Symbol(justThis, Decl(thisTypeInFunctions.ts, 30, 1)) +>this : Symbol(this, Decl(thisTypeInFunctions.ts, 31, 18)) +>y : Symbol(y, Decl(thisTypeInFunctions.ts, 31, 25)) + + return this.y; +>this.y : Symbol(y, Decl(thisTypeInFunctions.ts, 31, 25)) +>this : Symbol(, Decl(thisTypeInFunctions.ts, 31, 23)) +>y : Symbol(y, Decl(thisTypeInFunctions.ts, 31, 25)) +} +function implicitThis(n: number): number { +>implicitThis : Symbol(implicitThis, Decl(thisTypeInFunctions.ts, 33, 1)) +>n : Symbol(n, Decl(thisTypeInFunctions.ts, 34, 22)) + + return this.m + n + 12; +>n : Symbol(n, Decl(thisTypeInFunctions.ts, 34, 22)) +} +let impl: I = { +>impl : Symbol(impl, Decl(thisTypeInFunctions.ts, 37, 3)) +>I : Symbol(I, Decl(thisTypeInFunctions.ts, 19, 21)) + + a: 12, +>a : Symbol(a, Decl(thisTypeInFunctions.ts, 37, 15)) + + explicitVoid2: () => this.a, // ok, this: any because it refers to some outer object (window?) +>explicitVoid2 : Symbol(explicitVoid2, Decl(thisTypeInFunctions.ts, 38, 10)) + + explicitVoid1() { return 12; }, +>explicitVoid1 : Symbol(explicitVoid1, Decl(thisTypeInFunctions.ts, 39, 32)) + + explicitStructural() { +>explicitStructural : Symbol(explicitStructural, Decl(thisTypeInFunctions.ts, 40, 35)) + + return this.a; +>this.a : Symbol(a, Decl(thisTypeInFunctions.ts, 24, 30)) +>this : Symbol(, Decl(thisTypeInFunctions.ts, 24, 28)) +>a : Symbol(a, Decl(thisTypeInFunctions.ts, 24, 30)) + + }, + explicitInterface() { +>explicitInterface : Symbol(explicitInterface, Decl(thisTypeInFunctions.ts, 43, 6)) + + return this.a; +>this.a : Symbol(I.a, Decl(thisTypeInFunctions.ts, 20, 13)) +>this : Symbol(I, Decl(thisTypeInFunctions.ts, 19, 21)) +>a : Symbol(I.a, Decl(thisTypeInFunctions.ts, 20, 13)) + + }, + explicitThis() { +>explicitThis : Symbol(explicitThis, Decl(thisTypeInFunctions.ts, 46, 6)) + + return this.a; +>this.a : Symbol(I.a, Decl(thisTypeInFunctions.ts, 20, 13)) +>this : Symbol(I, Decl(thisTypeInFunctions.ts, 19, 21)) +>a : Symbol(I.a, Decl(thisTypeInFunctions.ts, 20, 13)) + + }, +} +impl.explicitVoid1 = function () { return 12; }; +>impl.explicitVoid1 : Symbol(I.explicitVoid1, Decl(thisTypeInFunctions.ts, 21, 14)) +>impl : Symbol(impl, Decl(thisTypeInFunctions.ts, 37, 3)) +>explicitVoid1 : Symbol(I.explicitVoid1, Decl(thisTypeInFunctions.ts, 21, 14)) + +impl.explicitVoid2 = () => 12; +>impl.explicitVoid2 : Symbol(I.explicitVoid2, Decl(thisTypeInFunctions.ts, 22, 38)) +>impl : Symbol(impl, Decl(thisTypeInFunctions.ts, 37, 3)) +>explicitVoid2 : Symbol(I.explicitVoid2, Decl(thisTypeInFunctions.ts, 22, 38)) + +impl.explicitStructural = function() { return this.a; }; +>impl.explicitStructural : Symbol(I.explicitStructural, Decl(thisTypeInFunctions.ts, 23, 38)) +>impl : Symbol(impl, Decl(thisTypeInFunctions.ts, 37, 3)) +>explicitStructural : Symbol(I.explicitStructural, Decl(thisTypeInFunctions.ts, 23, 38)) +>this.a : Symbol(a, Decl(thisTypeInFunctions.ts, 24, 30)) +>this : Symbol(, Decl(thisTypeInFunctions.ts, 24, 28)) +>a : Symbol(a, Decl(thisTypeInFunctions.ts, 24, 30)) + +impl.explicitInterface = function() { return this.a; }; +>impl.explicitInterface : Symbol(I.explicitInterface, Decl(thisTypeInFunctions.ts, 24, 50)) +>impl : Symbol(impl, Decl(thisTypeInFunctions.ts, 37, 3)) +>explicitInterface : Symbol(I.explicitInterface, Decl(thisTypeInFunctions.ts, 24, 50)) +>this.a : Symbol(I.a, Decl(thisTypeInFunctions.ts, 20, 13)) +>this : Symbol(I, Decl(thisTypeInFunctions.ts, 19, 21)) +>a : Symbol(I.a, Decl(thisTypeInFunctions.ts, 20, 13)) + +impl.explicitStructural = () => 12; +>impl.explicitStructural : Symbol(I.explicitStructural, Decl(thisTypeInFunctions.ts, 23, 38)) +>impl : Symbol(impl, Decl(thisTypeInFunctions.ts, 37, 3)) +>explicitStructural : Symbol(I.explicitStructural, Decl(thisTypeInFunctions.ts, 23, 38)) + +impl.explicitInterface = () => 12; +>impl.explicitInterface : Symbol(I.explicitInterface, Decl(thisTypeInFunctions.ts, 24, 50)) +>impl : Symbol(impl, Decl(thisTypeInFunctions.ts, 37, 3)) +>explicitInterface : Symbol(I.explicitInterface, Decl(thisTypeInFunctions.ts, 24, 50)) + +impl.explicitThis = function () { return this.a; }; +>impl.explicitThis : Symbol(I.explicitThis, Decl(thisTypeInFunctions.ts, 25, 39)) +>impl : Symbol(impl, Decl(thisTypeInFunctions.ts, 37, 3)) +>explicitThis : Symbol(I.explicitThis, Decl(thisTypeInFunctions.ts, 25, 39)) +>this.a : Symbol(I.a, Decl(thisTypeInFunctions.ts, 20, 13)) +>this : Symbol(I, Decl(thisTypeInFunctions.ts, 19, 21)) +>a : Symbol(I.a, Decl(thisTypeInFunctions.ts, 20, 13)) + +// parameter checking +let ok: {y: number, f: (this: { y: number }, x: number) => number} = { y: 12, f: explicitStructural }; +>ok : Symbol(ok, Decl(thisTypeInFunctions.ts, 59, 3)) +>y : Symbol(y, Decl(thisTypeInFunctions.ts, 59, 9)) +>f : Symbol(f, Decl(thisTypeInFunctions.ts, 59, 19)) +>this : Symbol(this, Decl(thisTypeInFunctions.ts, 59, 24)) +>y : Symbol(y, Decl(thisTypeInFunctions.ts, 59, 31)) +>x : Symbol(x, Decl(thisTypeInFunctions.ts, 59, 44)) +>y : Symbol(y, Decl(thisTypeInFunctions.ts, 59, 70)) +>f : Symbol(f, Decl(thisTypeInFunctions.ts, 59, 77)) +>explicitStructural : Symbol(explicitStructural, Decl(thisTypeInFunctions.ts, 27, 1)) + +let implicitAnyOk: {notSpecified: number, f: (x: number) => number} = { notSpecified: 12, f: implicitThis }; +>implicitAnyOk : Symbol(implicitAnyOk, Decl(thisTypeInFunctions.ts, 60, 3)) +>notSpecified : Symbol(notSpecified, Decl(thisTypeInFunctions.ts, 60, 20)) +>f : Symbol(f, Decl(thisTypeInFunctions.ts, 60, 41)) +>x : Symbol(x, Decl(thisTypeInFunctions.ts, 60, 46)) +>notSpecified : Symbol(notSpecified, Decl(thisTypeInFunctions.ts, 60, 71)) +>f : Symbol(f, Decl(thisTypeInFunctions.ts, 60, 89)) +>implicitThis : Symbol(implicitThis, Decl(thisTypeInFunctions.ts, 33, 1)) + +ok.f(13); +>ok.f : Symbol(f, Decl(thisTypeInFunctions.ts, 59, 19)) +>ok : Symbol(ok, Decl(thisTypeInFunctions.ts, 59, 3)) +>f : Symbol(f, Decl(thisTypeInFunctions.ts, 59, 19)) + +implicitThis(12); +>implicitThis : Symbol(implicitThis, Decl(thisTypeInFunctions.ts, 33, 1)) + +implicitAnyOk.f(12); +>implicitAnyOk.f : Symbol(f, Decl(thisTypeInFunctions.ts, 60, 41)) +>implicitAnyOk : Symbol(implicitAnyOk, Decl(thisTypeInFunctions.ts, 60, 3)) +>f : Symbol(f, Decl(thisTypeInFunctions.ts, 60, 41)) + +let c = new C(); +>c : Symbol(c, Decl(thisTypeInFunctions.ts, 65, 3)) +>C : Symbol(C, Decl(thisTypeInFunctions.ts, 3, 1)) + +let d = new D(); +>d : Symbol(d, Decl(thisTypeInFunctions.ts, 66, 3)) +>D : Symbol(D, Decl(thisTypeInFunctions.ts, 18, 1)) + +let ripped = c.explicitC; +>ripped : Symbol(ripped, Decl(thisTypeInFunctions.ts, 67, 3)) +>c.explicitC : Symbol(C.explicitC, Decl(thisTypeInFunctions.ts, 8, 5)) +>c : Symbol(c, Decl(thisTypeInFunctions.ts, 65, 3)) +>explicitC : Symbol(C.explicitC, Decl(thisTypeInFunctions.ts, 8, 5)) + +c.explicitC(12); +>c.explicitC : Symbol(C.explicitC, Decl(thisTypeInFunctions.ts, 8, 5)) +>c : Symbol(c, Decl(thisTypeInFunctions.ts, 65, 3)) +>explicitC : Symbol(C.explicitC, Decl(thisTypeInFunctions.ts, 8, 5)) + +c.explicitProperty(12); +>c.explicitProperty : Symbol(C.explicitProperty, Decl(thisTypeInFunctions.ts, 11, 5)) +>c : Symbol(c, Decl(thisTypeInFunctions.ts, 65, 3)) +>explicitProperty : Symbol(C.explicitProperty, Decl(thisTypeInFunctions.ts, 11, 5)) + +c.explicitThis(12); +>c.explicitThis : Symbol(C.explicitThis, Decl(thisTypeInFunctions.ts, 5, 14)) +>c : Symbol(c, Decl(thisTypeInFunctions.ts, 65, 3)) +>explicitThis : Symbol(C.explicitThis, Decl(thisTypeInFunctions.ts, 5, 14)) + +d.explicitC(12); +>d.explicitC : Symbol(C.explicitC, Decl(thisTypeInFunctions.ts, 8, 5)) +>d : Symbol(d, Decl(thisTypeInFunctions.ts, 66, 3)) +>explicitC : Symbol(C.explicitC, Decl(thisTypeInFunctions.ts, 8, 5)) + +d.explicitProperty(12); +>d.explicitProperty : Symbol(C.explicitProperty, Decl(thisTypeInFunctions.ts, 11, 5)) +>d : Symbol(d, Decl(thisTypeInFunctions.ts, 66, 3)) +>explicitProperty : Symbol(C.explicitProperty, Decl(thisTypeInFunctions.ts, 11, 5)) + +d.explicitThis(12); +>d.explicitThis : Symbol(C.explicitThis, Decl(thisTypeInFunctions.ts, 5, 14)) +>d : Symbol(d, Decl(thisTypeInFunctions.ts, 66, 3)) +>explicitThis : Symbol(C.explicitThis, Decl(thisTypeInFunctions.ts, 5, 14)) + +let reconstructed: { +>reconstructed : Symbol(reconstructed, Decl(thisTypeInFunctions.ts, 74, 3)) + + n: number, +>n : Symbol(n, Decl(thisTypeInFunctions.ts, 74, 20)) + + explicitThis(this: C, m: number): number, // note: this: this is not allowed in an object literal type. +>explicitThis : Symbol(explicitThis, Decl(thisTypeInFunctions.ts, 75, 14)) +>this : Symbol(this, Decl(thisTypeInFunctions.ts, 76, 17)) +>C : Symbol(C, Decl(thisTypeInFunctions.ts, 3, 1)) +>m : Symbol(m, Decl(thisTypeInFunctions.ts, 76, 25)) + + explicitC(this: C, m: number): number, +>explicitC : Symbol(explicitC, Decl(thisTypeInFunctions.ts, 76, 45)) +>this : Symbol(this, Decl(thisTypeInFunctions.ts, 77, 14)) +>C : Symbol(C, Decl(thisTypeInFunctions.ts, 3, 1)) +>m : Symbol(m, Decl(thisTypeInFunctions.ts, 77, 22)) + + explicitProperty: (this: {n : number}, m: number) => number, +>explicitProperty : Symbol(explicitProperty, Decl(thisTypeInFunctions.ts, 77, 42)) +>this : Symbol(this, Decl(thisTypeInFunctions.ts, 78, 23)) +>n : Symbol(n, Decl(thisTypeInFunctions.ts, 78, 30)) +>m : Symbol(m, Decl(thisTypeInFunctions.ts, 78, 42)) + + explicitVoid(this: void, m: number): number, +>explicitVoid : Symbol(explicitVoid, Decl(thisTypeInFunctions.ts, 78, 64)) +>this : Symbol(this, Decl(thisTypeInFunctions.ts, 79, 17)) +>m : Symbol(m, Decl(thisTypeInFunctions.ts, 79, 28)) + +} = { + n: 12, +>n : Symbol(n, Decl(thisTypeInFunctions.ts, 80, 5)) + + explicitThis: c.explicitThis, +>explicitThis : Symbol(explicitThis, Decl(thisTypeInFunctions.ts, 81, 10)) +>c.explicitThis : Symbol(C.explicitThis, Decl(thisTypeInFunctions.ts, 5, 14)) +>c : Symbol(c, Decl(thisTypeInFunctions.ts, 65, 3)) +>explicitThis : Symbol(C.explicitThis, Decl(thisTypeInFunctions.ts, 5, 14)) + + explicitC: c.explicitC, +>explicitC : Symbol(explicitC, Decl(thisTypeInFunctions.ts, 82, 33)) +>c.explicitC : Symbol(C.explicitC, Decl(thisTypeInFunctions.ts, 8, 5)) +>c : Symbol(c, Decl(thisTypeInFunctions.ts, 65, 3)) +>explicitC : Symbol(C.explicitC, Decl(thisTypeInFunctions.ts, 8, 5)) + + explicitProperty: c.explicitProperty, +>explicitProperty : Symbol(explicitProperty, Decl(thisTypeInFunctions.ts, 83, 27)) +>c.explicitProperty : Symbol(C.explicitProperty, Decl(thisTypeInFunctions.ts, 11, 5)) +>c : Symbol(c, Decl(thisTypeInFunctions.ts, 65, 3)) +>explicitProperty : Symbol(C.explicitProperty, Decl(thisTypeInFunctions.ts, 11, 5)) + + explicitVoid: c.explicitVoid +>explicitVoid : Symbol(explicitVoid, Decl(thisTypeInFunctions.ts, 84, 41)) +>c.explicitVoid : Symbol(C.explicitVoid, Decl(thisTypeInFunctions.ts, 14, 5)) +>c : Symbol(c, Decl(thisTypeInFunctions.ts, 65, 3)) +>explicitVoid : Symbol(C.explicitVoid, Decl(thisTypeInFunctions.ts, 14, 5)) + +}; +reconstructed.explicitThis(10); +>reconstructed.explicitThis : Symbol(explicitThis, Decl(thisTypeInFunctions.ts, 75, 14)) +>reconstructed : Symbol(reconstructed, Decl(thisTypeInFunctions.ts, 74, 3)) +>explicitThis : Symbol(explicitThis, Decl(thisTypeInFunctions.ts, 75, 14)) + +reconstructed.explicitProperty(11); +>reconstructed.explicitProperty : Symbol(explicitProperty, Decl(thisTypeInFunctions.ts, 77, 42)) +>reconstructed : Symbol(reconstructed, Decl(thisTypeInFunctions.ts, 74, 3)) +>explicitProperty : Symbol(explicitProperty, Decl(thisTypeInFunctions.ts, 77, 42)) + +let explicitVoid = reconstructed.explicitVoid; +>explicitVoid : Symbol(explicitVoid, Decl(thisTypeInFunctions.ts, 89, 3)) +>reconstructed.explicitVoid : Symbol(explicitVoid, Decl(thisTypeInFunctions.ts, 78, 64)) +>reconstructed : Symbol(reconstructed, Decl(thisTypeInFunctions.ts, 74, 3)) +>explicitVoid : Symbol(explicitVoid, Decl(thisTypeInFunctions.ts, 78, 64)) + +explicitVoid(12); +>explicitVoid : Symbol(explicitVoid, Decl(thisTypeInFunctions.ts, 89, 3)) + +// assignment checking +let unboundToSpecified: (this: { y: number }, x: number) => number = x => x + this.y; // ok, this:any +>unboundToSpecified : Symbol(unboundToSpecified, Decl(thisTypeInFunctions.ts, 92, 3)) +>this : Symbol(this, Decl(thisTypeInFunctions.ts, 92, 25)) +>y : Symbol(y, Decl(thisTypeInFunctions.ts, 92, 32)) +>x : Symbol(x, Decl(thisTypeInFunctions.ts, 92, 45)) +>x : Symbol(x, Decl(thisTypeInFunctions.ts, 92, 68)) +>x : Symbol(x, Decl(thisTypeInFunctions.ts, 92, 68)) + +let specifiedToSpecified: (this: {y: number}, x: number) => number = explicitStructural; +>specifiedToSpecified : Symbol(specifiedToSpecified, Decl(thisTypeInFunctions.ts, 93, 3)) +>this : Symbol(this, Decl(thisTypeInFunctions.ts, 93, 27)) +>y : Symbol(y, Decl(thisTypeInFunctions.ts, 93, 34)) +>x : Symbol(x, Decl(thisTypeInFunctions.ts, 93, 45)) +>explicitStructural : Symbol(explicitStructural, Decl(thisTypeInFunctions.ts, 27, 1)) + +let anyToSpecified: (this: { y: number }, x: number) => number = function(x: number): number { return x + 12; }; +>anyToSpecified : Symbol(anyToSpecified, Decl(thisTypeInFunctions.ts, 94, 3)) +>this : Symbol(this, Decl(thisTypeInFunctions.ts, 94, 21)) +>y : Symbol(y, Decl(thisTypeInFunctions.ts, 94, 28)) +>x : Symbol(x, Decl(thisTypeInFunctions.ts, 94, 41)) +>x : Symbol(x, Decl(thisTypeInFunctions.ts, 94, 74)) +>x : Symbol(x, Decl(thisTypeInFunctions.ts, 94, 74)) + +let unspecifiedLambda: (x: number) => number = x => x + 12; +>unspecifiedLambda : Symbol(unspecifiedLambda, Decl(thisTypeInFunctions.ts, 96, 3)) +>x : Symbol(x, Decl(thisTypeInFunctions.ts, 96, 24)) +>x : Symbol(x, Decl(thisTypeInFunctions.ts, 96, 46)) +>x : Symbol(x, Decl(thisTypeInFunctions.ts, 96, 46)) + +let specifiedLambda: (this: void, x: number) => number = x => x + 12; +>specifiedLambda : Symbol(specifiedLambda, Decl(thisTypeInFunctions.ts, 97, 3)) +>this : Symbol(this, Decl(thisTypeInFunctions.ts, 97, 22)) +>x : Symbol(x, Decl(thisTypeInFunctions.ts, 97, 33)) +>x : Symbol(x, Decl(thisTypeInFunctions.ts, 97, 56)) +>x : Symbol(x, Decl(thisTypeInFunctions.ts, 97, 56)) + +let unspecifiedLambdaToSpecified: (this: {y: number}, x: number) => number = unspecifiedLambda; +>unspecifiedLambdaToSpecified : Symbol(unspecifiedLambdaToSpecified, Decl(thisTypeInFunctions.ts, 98, 3)) +>this : Symbol(this, Decl(thisTypeInFunctions.ts, 98, 35)) +>y : Symbol(y, Decl(thisTypeInFunctions.ts, 98, 42)) +>x : Symbol(x, Decl(thisTypeInFunctions.ts, 98, 53)) +>unspecifiedLambda : Symbol(unspecifiedLambda, Decl(thisTypeInFunctions.ts, 96, 3)) + +let specifiedLambdaToSpecified: (this: {y: number}, x: number) => number = specifiedLambda; +>specifiedLambdaToSpecified : Symbol(specifiedLambdaToSpecified, Decl(thisTypeInFunctions.ts, 99, 3)) +>this : Symbol(this, Decl(thisTypeInFunctions.ts, 99, 33)) +>y : Symbol(y, Decl(thisTypeInFunctions.ts, 99, 40)) +>x : Symbol(x, Decl(thisTypeInFunctions.ts, 99, 51)) +>specifiedLambda : Symbol(specifiedLambda, Decl(thisTypeInFunctions.ts, 97, 3)) + + +let explicitCFunction: (this: C, m: number) => number; +>explicitCFunction : Symbol(explicitCFunction, Decl(thisTypeInFunctions.ts, 102, 3)) +>this : Symbol(this, Decl(thisTypeInFunctions.ts, 102, 24)) +>C : Symbol(C, Decl(thisTypeInFunctions.ts, 3, 1)) +>m : Symbol(m, Decl(thisTypeInFunctions.ts, 102, 32)) + +let explicitPropertyFunction: (this: {n: number}, m: number) => number; +>explicitPropertyFunction : Symbol(explicitPropertyFunction, Decl(thisTypeInFunctions.ts, 103, 3)) +>this : Symbol(this, Decl(thisTypeInFunctions.ts, 103, 31)) +>n : Symbol(n, Decl(thisTypeInFunctions.ts, 103, 38)) +>m : Symbol(m, Decl(thisTypeInFunctions.ts, 103, 49)) + +c.explicitC = explicitCFunction; +>c.explicitC : Symbol(C.explicitC, Decl(thisTypeInFunctions.ts, 8, 5)) +>c : Symbol(c, Decl(thisTypeInFunctions.ts, 65, 3)) +>explicitC : Symbol(C.explicitC, Decl(thisTypeInFunctions.ts, 8, 5)) +>explicitCFunction : Symbol(explicitCFunction, Decl(thisTypeInFunctions.ts, 102, 3)) + +c.explicitC = function(this: C, m: number) { return this.n + m }; +>c.explicitC : Symbol(C.explicitC, Decl(thisTypeInFunctions.ts, 8, 5)) +>c : Symbol(c, Decl(thisTypeInFunctions.ts, 65, 3)) +>explicitC : Symbol(C.explicitC, Decl(thisTypeInFunctions.ts, 8, 5)) +>this : Symbol(this, Decl(thisTypeInFunctions.ts, 105, 23)) +>C : Symbol(C, Decl(thisTypeInFunctions.ts, 3, 1)) +>m : Symbol(m, Decl(thisTypeInFunctions.ts, 105, 31)) +>this.n : Symbol(C.n, Decl(thisTypeInFunctions.ts, 4, 9)) +>this : Symbol(C, Decl(thisTypeInFunctions.ts, 3, 1)) +>n : Symbol(C.n, Decl(thisTypeInFunctions.ts, 4, 9)) +>m : Symbol(m, Decl(thisTypeInFunctions.ts, 105, 31)) + +c.explicitProperty = explicitPropertyFunction; +>c.explicitProperty : Symbol(C.explicitProperty, Decl(thisTypeInFunctions.ts, 11, 5)) +>c : Symbol(c, Decl(thisTypeInFunctions.ts, 65, 3)) +>explicitProperty : Symbol(C.explicitProperty, Decl(thisTypeInFunctions.ts, 11, 5)) +>explicitPropertyFunction : Symbol(explicitPropertyFunction, Decl(thisTypeInFunctions.ts, 103, 3)) + +c.explicitProperty = function(this: {n: number}, m: number) { return this.n + m }; +>c.explicitProperty : Symbol(C.explicitProperty, Decl(thisTypeInFunctions.ts, 11, 5)) +>c : Symbol(c, Decl(thisTypeInFunctions.ts, 65, 3)) +>explicitProperty : Symbol(C.explicitProperty, Decl(thisTypeInFunctions.ts, 11, 5)) +>this : Symbol(this, Decl(thisTypeInFunctions.ts, 107, 30)) +>n : Symbol(n, Decl(thisTypeInFunctions.ts, 107, 37)) +>m : Symbol(m, Decl(thisTypeInFunctions.ts, 107, 48)) +>this.n : Symbol(n, Decl(thisTypeInFunctions.ts, 107, 37)) +>this : Symbol(, Decl(thisTypeInFunctions.ts, 107, 35)) +>n : Symbol(n, Decl(thisTypeInFunctions.ts, 107, 37)) +>m : Symbol(m, Decl(thisTypeInFunctions.ts, 107, 48)) + +c.explicitProperty = reconstructed.explicitProperty; +>c.explicitProperty : Symbol(C.explicitProperty, Decl(thisTypeInFunctions.ts, 11, 5)) +>c : Symbol(c, Decl(thisTypeInFunctions.ts, 65, 3)) +>explicitProperty : Symbol(C.explicitProperty, Decl(thisTypeInFunctions.ts, 11, 5)) +>reconstructed.explicitProperty : Symbol(explicitProperty, Decl(thisTypeInFunctions.ts, 77, 42)) +>reconstructed : Symbol(reconstructed, Decl(thisTypeInFunctions.ts, 74, 3)) +>explicitProperty : Symbol(explicitProperty, Decl(thisTypeInFunctions.ts, 77, 42)) + +// lambdas are assignable to anything +c.explicitC = m => m; +>c.explicitC : Symbol(C.explicitC, Decl(thisTypeInFunctions.ts, 8, 5)) +>c : Symbol(c, Decl(thisTypeInFunctions.ts, 65, 3)) +>explicitC : Symbol(C.explicitC, Decl(thisTypeInFunctions.ts, 8, 5)) +>m : Symbol(m, Decl(thisTypeInFunctions.ts, 111, 13)) +>m : Symbol(m, Decl(thisTypeInFunctions.ts, 111, 13)) + +c.explicitThis = m => m; +>c.explicitThis : Symbol(C.explicitThis, Decl(thisTypeInFunctions.ts, 5, 14)) +>c : Symbol(c, Decl(thisTypeInFunctions.ts, 65, 3)) +>explicitThis : Symbol(C.explicitThis, Decl(thisTypeInFunctions.ts, 5, 14)) +>m : Symbol(m, Decl(thisTypeInFunctions.ts, 112, 16)) +>m : Symbol(m, Decl(thisTypeInFunctions.ts, 112, 16)) + +c.explicitProperty = m => m; +>c.explicitProperty : Symbol(C.explicitProperty, Decl(thisTypeInFunctions.ts, 11, 5)) +>c : Symbol(c, Decl(thisTypeInFunctions.ts, 65, 3)) +>explicitProperty : Symbol(C.explicitProperty, Decl(thisTypeInFunctions.ts, 11, 5)) +>m : Symbol(m, Decl(thisTypeInFunctions.ts, 113, 20)) +>m : Symbol(m, Decl(thisTypeInFunctions.ts, 113, 20)) + +// this inside lambdas refer to outer scope +// the outer-scoped lambda at top-level is still just `any` +c.explicitC = m => m + this.n; +>c.explicitC : Symbol(C.explicitC, Decl(thisTypeInFunctions.ts, 8, 5)) +>c : Symbol(c, Decl(thisTypeInFunctions.ts, 65, 3)) +>explicitC : Symbol(C.explicitC, Decl(thisTypeInFunctions.ts, 8, 5)) +>m : Symbol(m, Decl(thisTypeInFunctions.ts, 117, 13)) +>m : Symbol(m, Decl(thisTypeInFunctions.ts, 117, 13)) + +c.explicitThis = m => m + this.n; +>c.explicitThis : Symbol(C.explicitThis, Decl(thisTypeInFunctions.ts, 5, 14)) +>c : Symbol(c, Decl(thisTypeInFunctions.ts, 65, 3)) +>explicitThis : Symbol(C.explicitThis, Decl(thisTypeInFunctions.ts, 5, 14)) +>m : Symbol(m, Decl(thisTypeInFunctions.ts, 118, 16)) +>m : Symbol(m, Decl(thisTypeInFunctions.ts, 118, 16)) + +c.explicitProperty = m => m + this.n; +>c.explicitProperty : Symbol(C.explicitProperty, Decl(thisTypeInFunctions.ts, 11, 5)) +>c : Symbol(c, Decl(thisTypeInFunctions.ts, 65, 3)) +>explicitProperty : Symbol(C.explicitProperty, Decl(thisTypeInFunctions.ts, 11, 5)) +>m : Symbol(m, Decl(thisTypeInFunctions.ts, 119, 20)) +>m : Symbol(m, Decl(thisTypeInFunctions.ts, 119, 20)) + +//NOTE: this=C here, I guess? +c.explicitThis = explicitCFunction; +>c.explicitThis : Symbol(C.explicitThis, Decl(thisTypeInFunctions.ts, 5, 14)) +>c : Symbol(c, Decl(thisTypeInFunctions.ts, 65, 3)) +>explicitThis : Symbol(C.explicitThis, Decl(thisTypeInFunctions.ts, 5, 14)) +>explicitCFunction : Symbol(explicitCFunction, Decl(thisTypeInFunctions.ts, 102, 3)) + +c.explicitThis = function(this: C, m: number) { return this.n + m }; +>c.explicitThis : Symbol(C.explicitThis, Decl(thisTypeInFunctions.ts, 5, 14)) +>c : Symbol(c, Decl(thisTypeInFunctions.ts, 65, 3)) +>explicitThis : Symbol(C.explicitThis, Decl(thisTypeInFunctions.ts, 5, 14)) +>this : Symbol(this, Decl(thisTypeInFunctions.ts, 123, 26)) +>C : Symbol(C, Decl(thisTypeInFunctions.ts, 3, 1)) +>m : Symbol(m, Decl(thisTypeInFunctions.ts, 123, 34)) +>this.n : Symbol(C.n, Decl(thisTypeInFunctions.ts, 4, 9)) +>this : Symbol(C, Decl(thisTypeInFunctions.ts, 3, 1)) +>n : Symbol(C.n, Decl(thisTypeInFunctions.ts, 4, 9)) +>m : Symbol(m, Decl(thisTypeInFunctions.ts, 123, 34)) + +// this:any compatibility +c.explicitC = function(m) { return this.n + m }; +>c.explicitC : Symbol(C.explicitC, Decl(thisTypeInFunctions.ts, 8, 5)) +>c : Symbol(c, Decl(thisTypeInFunctions.ts, 65, 3)) +>explicitC : Symbol(C.explicitC, Decl(thisTypeInFunctions.ts, 8, 5)) +>m : Symbol(m, Decl(thisTypeInFunctions.ts, 126, 23)) +>this.n : Symbol(C.n, Decl(thisTypeInFunctions.ts, 4, 9)) +>this : Symbol(C, Decl(thisTypeInFunctions.ts, 3, 1)) +>n : Symbol(C.n, Decl(thisTypeInFunctions.ts, 4, 9)) +>m : Symbol(m, Decl(thisTypeInFunctions.ts, 126, 23)) + +c.explicitProperty = function(m) { return this.n + m }; +>c.explicitProperty : Symbol(C.explicitProperty, Decl(thisTypeInFunctions.ts, 11, 5)) +>c : Symbol(c, Decl(thisTypeInFunctions.ts, 65, 3)) +>explicitProperty : Symbol(C.explicitProperty, Decl(thisTypeInFunctions.ts, 11, 5)) +>m : Symbol(m, Decl(thisTypeInFunctions.ts, 127, 30)) +>this.n : Symbol(n, Decl(thisTypeInFunctions.ts, 12, 28)) +>this : Symbol(, Decl(thisTypeInFunctions.ts, 12, 26)) +>n : Symbol(n, Decl(thisTypeInFunctions.ts, 12, 28)) +>m : Symbol(m, Decl(thisTypeInFunctions.ts, 127, 30)) + +c.explicitThis = function(m) { return this.n + m }; +>c.explicitThis : Symbol(C.explicitThis, Decl(thisTypeInFunctions.ts, 5, 14)) +>c : Symbol(c, Decl(thisTypeInFunctions.ts, 65, 3)) +>explicitThis : Symbol(C.explicitThis, Decl(thisTypeInFunctions.ts, 5, 14)) +>m : Symbol(m, Decl(thisTypeInFunctions.ts, 128, 26)) +>this.n : Symbol(C.n, Decl(thisTypeInFunctions.ts, 4, 9)) +>this : Symbol(C, Decl(thisTypeInFunctions.ts, 3, 1)) +>n : Symbol(C.n, Decl(thisTypeInFunctions.ts, 4, 9)) +>m : Symbol(m, Decl(thisTypeInFunctions.ts, 128, 26)) + +// this: contextual typing +c.explicitThis = function(this, m) { return this.n + m }; +>c.explicitThis : Symbol(C.explicitThis, Decl(thisTypeInFunctions.ts, 5, 14)) +>c : Symbol(c, Decl(thisTypeInFunctions.ts, 65, 3)) +>explicitThis : Symbol(C.explicitThis, Decl(thisTypeInFunctions.ts, 5, 14)) +>this : Symbol(this, Decl(thisTypeInFunctions.ts, 131, 26)) +>m : Symbol(m, Decl(thisTypeInFunctions.ts, 131, 31)) +>this.n : Symbol(C.n, Decl(thisTypeInFunctions.ts, 4, 9)) +>this : Symbol(C, Decl(thisTypeInFunctions.ts, 3, 1)) +>n : Symbol(C.n, Decl(thisTypeInFunctions.ts, 4, 9)) +>m : Symbol(m, Decl(thisTypeInFunctions.ts, 131, 31)) + +// this: superclass compatibility +c.explicitC = function(this: B, m: number) { return this.n + m }; +>c.explicitC : Symbol(C.explicitC, Decl(thisTypeInFunctions.ts, 8, 5)) +>c : Symbol(c, Decl(thisTypeInFunctions.ts, 65, 3)) +>explicitC : Symbol(C.explicitC, Decl(thisTypeInFunctions.ts, 8, 5)) +>this : Symbol(this, Decl(thisTypeInFunctions.ts, 134, 23)) +>B : Symbol(B, Decl(thisTypeInFunctions.ts, 0, 0)) +>m : Symbol(m, Decl(thisTypeInFunctions.ts, 134, 31)) +>this.n : Symbol(B.n, Decl(thisTypeInFunctions.ts, 1, 9)) +>this : Symbol(B, Decl(thisTypeInFunctions.ts, 0, 0)) +>n : Symbol(B.n, Decl(thisTypeInFunctions.ts, 1, 9)) +>m : Symbol(m, Decl(thisTypeInFunctions.ts, 134, 31)) + +// this:void compatibility +c.explicitVoid = n => n; +>c.explicitVoid : Symbol(C.explicitVoid, Decl(thisTypeInFunctions.ts, 14, 5)) +>c : Symbol(c, Decl(thisTypeInFunctions.ts, 65, 3)) +>explicitVoid : Symbol(C.explicitVoid, Decl(thisTypeInFunctions.ts, 14, 5)) +>n : Symbol(n, Decl(thisTypeInFunctions.ts, 137, 16)) +>n : Symbol(n, Decl(thisTypeInFunctions.ts, 137, 16)) + +// class-based assignability +class Base1 { +>Base1 : Symbol(Base1, Decl(thisTypeInFunctions.ts, 137, 24)) + + x: number; +>x : Symbol(Base1.x, Decl(thisTypeInFunctions.ts, 140, 13)) + + public polymorphic(this: this): number { return this.x; } +>polymorphic : Symbol(Base1.polymorphic, Decl(thisTypeInFunctions.ts, 141, 14)) +>this : Symbol(this, Decl(thisTypeInFunctions.ts, 142, 23)) +>this.x : Symbol(Base1.x, Decl(thisTypeInFunctions.ts, 140, 13)) +>this : Symbol(Base1, Decl(thisTypeInFunctions.ts, 137, 24)) +>x : Symbol(Base1.x, Decl(thisTypeInFunctions.ts, 140, 13)) + + explicit(this: Base1): number { return this.x; } +>explicit : Symbol(Base1.explicit, Decl(thisTypeInFunctions.ts, 142, 61)) +>this : Symbol(this, Decl(thisTypeInFunctions.ts, 143, 13)) +>Base1 : Symbol(Base1, Decl(thisTypeInFunctions.ts, 137, 24)) +>this.x : Symbol(Base1.x, Decl(thisTypeInFunctions.ts, 140, 13)) +>this : Symbol(Base1, Decl(thisTypeInFunctions.ts, 137, 24)) +>x : Symbol(Base1.x, Decl(thisTypeInFunctions.ts, 140, 13)) + + static explicitStatic(this: typeof Base1): number { return this.y; } +>explicitStatic : Symbol(Base1.explicitStatic, Decl(thisTypeInFunctions.ts, 143, 52)) +>this : Symbol(this, Decl(thisTypeInFunctions.ts, 144, 26)) +>Base1 : Symbol(Base1, Decl(thisTypeInFunctions.ts, 137, 24)) +>this.y : Symbol(Base1.y, Decl(thisTypeInFunctions.ts, 144, 72)) +>this : Symbol(Base1, Decl(thisTypeInFunctions.ts, 137, 24)) +>y : Symbol(Base1.y, Decl(thisTypeInFunctions.ts, 144, 72)) + + static y: number; +>y : Symbol(Base1.y, Decl(thisTypeInFunctions.ts, 144, 72)) +} +class Derived1 extends Base1 { +>Derived1 : Symbol(Derived1, Decl(thisTypeInFunctions.ts, 146, 1)) +>Base1 : Symbol(Base1, Decl(thisTypeInFunctions.ts, 137, 24)) + + y: number +>y : Symbol(Derived1.y, Decl(thisTypeInFunctions.ts, 147, 30)) +} +class Base2 { +>Base2 : Symbol(Base2, Decl(thisTypeInFunctions.ts, 149, 1)) + + y: number +>y : Symbol(Base2.y, Decl(thisTypeInFunctions.ts, 150, 13)) + + polymorphic(this: this): number { return this.y; } +>polymorphic : Symbol(Base2.polymorphic, Decl(thisTypeInFunctions.ts, 151, 13)) +>this : Symbol(this, Decl(thisTypeInFunctions.ts, 152, 16)) +>this.y : Symbol(Base2.y, Decl(thisTypeInFunctions.ts, 150, 13)) +>this : Symbol(Base2, Decl(thisTypeInFunctions.ts, 149, 1)) +>y : Symbol(Base2.y, Decl(thisTypeInFunctions.ts, 150, 13)) + + explicit(this: Base1): number { return this.x; } +>explicit : Symbol(Base2.explicit, Decl(thisTypeInFunctions.ts, 152, 54)) +>this : Symbol(this, Decl(thisTypeInFunctions.ts, 153, 13)) +>Base1 : Symbol(Base1, Decl(thisTypeInFunctions.ts, 137, 24)) +>this.x : Symbol(Base1.x, Decl(thisTypeInFunctions.ts, 140, 13)) +>this : Symbol(Base1, Decl(thisTypeInFunctions.ts, 137, 24)) +>x : Symbol(Base1.x, Decl(thisTypeInFunctions.ts, 140, 13)) +} +class Derived2 extends Base2 { +>Derived2 : Symbol(Derived2, Decl(thisTypeInFunctions.ts, 154, 1)) +>Base2 : Symbol(Base2, Decl(thisTypeInFunctions.ts, 149, 1)) + + x: number +>x : Symbol(Derived2.x, Decl(thisTypeInFunctions.ts, 155, 30)) +} +let b1 = new Base1(); +>b1 : Symbol(b1, Decl(thisTypeInFunctions.ts, 158, 3)) +>Base1 : Symbol(Base1, Decl(thisTypeInFunctions.ts, 137, 24)) + +let b2 = new Base2(); +>b2 : Symbol(b2, Decl(thisTypeInFunctions.ts, 159, 3)) +>Base2 : Symbol(Base2, Decl(thisTypeInFunctions.ts, 149, 1)) + +let d1 = new Derived1(); +>d1 : Symbol(d1, Decl(thisTypeInFunctions.ts, 160, 3)) +>Derived1 : Symbol(Derived1, Decl(thisTypeInFunctions.ts, 146, 1)) + +let d2 = new Derived2(); +>d2 : Symbol(d2, Decl(thisTypeInFunctions.ts, 161, 3)) +>Derived2 : Symbol(Derived2, Decl(thisTypeInFunctions.ts, 154, 1)) + +d2.polymorphic = d1.polymorphic // ok, 'x' and 'y' in { x, y } +>d2.polymorphic : Symbol(Base2.polymorphic, Decl(thisTypeInFunctions.ts, 151, 13)) +>d2 : Symbol(d2, Decl(thisTypeInFunctions.ts, 161, 3)) +>polymorphic : Symbol(Base2.polymorphic, Decl(thisTypeInFunctions.ts, 151, 13)) +>d1.polymorphic : Symbol(Base1.polymorphic, Decl(thisTypeInFunctions.ts, 141, 14)) +>d1 : Symbol(d1, Decl(thisTypeInFunctions.ts, 160, 3)) +>polymorphic : Symbol(Base1.polymorphic, Decl(thisTypeInFunctions.ts, 141, 14)) + +d1.polymorphic = d2.polymorphic // ok, 'x' and 'y' in { x, y } +>d1.polymorphic : Symbol(Base1.polymorphic, Decl(thisTypeInFunctions.ts, 141, 14)) +>d1 : Symbol(d1, Decl(thisTypeInFunctions.ts, 160, 3)) +>polymorphic : Symbol(Base1.polymorphic, Decl(thisTypeInFunctions.ts, 141, 14)) +>d2.polymorphic : Symbol(Base2.polymorphic, Decl(thisTypeInFunctions.ts, 151, 13)) +>d2 : Symbol(d2, Decl(thisTypeInFunctions.ts, 161, 3)) +>polymorphic : Symbol(Base2.polymorphic, Decl(thisTypeInFunctions.ts, 151, 13)) + +// bivariance-allowed cases +d1.polymorphic = b2.polymorphic // ok, 'y' in D: { x, y } +>d1.polymorphic : Symbol(Base1.polymorphic, Decl(thisTypeInFunctions.ts, 141, 14)) +>d1 : Symbol(d1, Decl(thisTypeInFunctions.ts, 160, 3)) +>polymorphic : Symbol(Base1.polymorphic, Decl(thisTypeInFunctions.ts, 141, 14)) +>b2.polymorphic : Symbol(Base2.polymorphic, Decl(thisTypeInFunctions.ts, 151, 13)) +>b2 : Symbol(b2, Decl(thisTypeInFunctions.ts, 159, 3)) +>polymorphic : Symbol(Base2.polymorphic, Decl(thisTypeInFunctions.ts, 151, 13)) + +d2.polymorphic = d1.explicit // ok, 'y' in { x, y } +>d2.polymorphic : Symbol(Base2.polymorphic, Decl(thisTypeInFunctions.ts, 151, 13)) +>d2 : Symbol(d2, Decl(thisTypeInFunctions.ts, 161, 3)) +>polymorphic : Symbol(Base2.polymorphic, Decl(thisTypeInFunctions.ts, 151, 13)) +>d1.explicit : Symbol(Base1.explicit, Decl(thisTypeInFunctions.ts, 142, 61)) +>d1 : Symbol(d1, Decl(thisTypeInFunctions.ts, 160, 3)) +>explicit : Symbol(Base1.explicit, Decl(thisTypeInFunctions.ts, 142, 61)) + +b1.polymorphic = d2.polymorphic // ok, 'x' and 'y' not in Base1: { x } +>b1.polymorphic : Symbol(Base1.polymorphic, Decl(thisTypeInFunctions.ts, 141, 14)) +>b1 : Symbol(b1, Decl(thisTypeInFunctions.ts, 158, 3)) +>polymorphic : Symbol(Base1.polymorphic, Decl(thisTypeInFunctions.ts, 141, 14)) +>d2.polymorphic : Symbol(Base2.polymorphic, Decl(thisTypeInFunctions.ts, 151, 13)) +>d2 : Symbol(d2, Decl(thisTypeInFunctions.ts, 161, 3)) +>polymorphic : Symbol(Base2.polymorphic, Decl(thisTypeInFunctions.ts, 151, 13)) + +b1.explicit = d2.polymorphic // ok, 'x' and 'y' not in Base1: { x } +>b1.explicit : Symbol(Base1.explicit, Decl(thisTypeInFunctions.ts, 142, 61)) +>b1 : Symbol(b1, Decl(thisTypeInFunctions.ts, 158, 3)) +>explicit : Symbol(Base1.explicit, Decl(thisTypeInFunctions.ts, 142, 61)) +>d2.polymorphic : Symbol(Base2.polymorphic, Decl(thisTypeInFunctions.ts, 151, 13)) +>d2 : Symbol(d2, Decl(thisTypeInFunctions.ts, 161, 3)) +>polymorphic : Symbol(Base2.polymorphic, Decl(thisTypeInFunctions.ts, 151, 13)) + +////// use this-type for construction with new //// +function InterfaceThis(this: I) { +>InterfaceThis : Symbol(InterfaceThis, Decl(thisTypeInFunctions.ts, 169, 28)) +>this : Symbol(this, Decl(thisTypeInFunctions.ts, 172, 23)) +>I : Symbol(I, Decl(thisTypeInFunctions.ts, 19, 21)) + + this.a = 12; +>this.a : Symbol(I.a, Decl(thisTypeInFunctions.ts, 20, 13)) +>this : Symbol(I, Decl(thisTypeInFunctions.ts, 19, 21)) +>a : Symbol(I.a, Decl(thisTypeInFunctions.ts, 20, 13)) +} +function LiteralTypeThis(this: {x: string}) { +>LiteralTypeThis : Symbol(LiteralTypeThis, Decl(thisTypeInFunctions.ts, 174, 1)) +>this : Symbol(this, Decl(thisTypeInFunctions.ts, 175, 25)) +>x : Symbol(x, Decl(thisTypeInFunctions.ts, 175, 32)) + + this.x = "ok"; +>this.x : Symbol(x, Decl(thisTypeInFunctions.ts, 175, 32)) +>this : Symbol(, Decl(thisTypeInFunctions.ts, 175, 30)) +>x : Symbol(x, Decl(thisTypeInFunctions.ts, 175, 32)) +} +function AnyThis(this: any) { +>AnyThis : Symbol(AnyThis, Decl(thisTypeInFunctions.ts, 177, 1)) +>this : Symbol(this, Decl(thisTypeInFunctions.ts, 178, 17)) + + this.x = "ok"; +} +let interfaceThis = new InterfaceThis(); +>interfaceThis : Symbol(interfaceThis, Decl(thisTypeInFunctions.ts, 181, 3)) +>InterfaceThis : Symbol(InterfaceThis, Decl(thisTypeInFunctions.ts, 169, 28)) + +let literalTypeThis = new LiteralTypeThis(); +>literalTypeThis : Symbol(literalTypeThis, Decl(thisTypeInFunctions.ts, 182, 3)) +>LiteralTypeThis : Symbol(LiteralTypeThis, Decl(thisTypeInFunctions.ts, 174, 1)) + +let anyThis = new AnyThis(); +>anyThis : Symbol(anyThis, Decl(thisTypeInFunctions.ts, 183, 3)) +>AnyThis : Symbol(AnyThis, Decl(thisTypeInFunctions.ts, 177, 1)) + +//// type parameter inference //// +declare var f: { +>f : Symbol(f, Decl(thisTypeInFunctions.ts, 186, 11)) + + (this: void, x: number): number, +>this : Symbol(this, Decl(thisTypeInFunctions.ts, 187, 5)) +>x : Symbol(x, Decl(thisTypeInFunctions.ts, 187, 16)) + + call(this: (...argArray: any[]) => U, ...argArray: any[]): U; +>call : Symbol(call, Decl(thisTypeInFunctions.ts, 187, 36)) +>U : Symbol(U, Decl(thisTypeInFunctions.ts, 188, 9)) +>this : Symbol(this, Decl(thisTypeInFunctions.ts, 188, 12)) +>argArray : Symbol(argArray, Decl(thisTypeInFunctions.ts, 188, 19)) +>U : Symbol(U, Decl(thisTypeInFunctions.ts, 188, 9)) +>argArray : Symbol(argArray, Decl(thisTypeInFunctions.ts, 188, 44)) +>U : Symbol(U, Decl(thisTypeInFunctions.ts, 188, 9)) + +}; +let n: number = f.call(12); +>n : Symbol(n, Decl(thisTypeInFunctions.ts, 190, 3)) +>f.call : Symbol(call, Decl(thisTypeInFunctions.ts, 187, 36)) +>f : Symbol(f, Decl(thisTypeInFunctions.ts, 186, 11)) +>call : Symbol(call, Decl(thisTypeInFunctions.ts, 187, 36)) + +function missingTypeIsImplicitAny(this, a: number) { return this.anything + a; } +>missingTypeIsImplicitAny : Symbol(missingTypeIsImplicitAny, Decl(thisTypeInFunctions.ts, 190, 27)) +>this : Symbol(this, Decl(thisTypeInFunctions.ts, 192, 34)) +>a : Symbol(a, Decl(thisTypeInFunctions.ts, 192, 39)) +>a : Symbol(a, Decl(thisTypeInFunctions.ts, 192, 39)) + diff --git a/tests/baselines/reference/thisTypeInFunctions.types b/tests/baselines/reference/thisTypeInFunctions.types new file mode 100644 index 00000000000..ddef8544a54 --- /dev/null +++ b/tests/baselines/reference/thisTypeInFunctions.types @@ -0,0 +1,963 @@ +=== tests/cases/conformance/types/thisType/thisTypeInFunctions.ts === +// body checking +class B { +>B : B + + n: number; +>n : number +} +class C { +>C : C + + n: number; +>n : number + + explicitThis(this: this, m: number): number { +>explicitThis : (this: this, m: number) => number +>this : this +>m : number + + return this.n + m; +>this.n + m : number +>this.n : number +>this : this +>n : number +>m : number + } + explicitC(this: C, m: number): number { +>explicitC : (this: C, m: number) => number +>this : C +>C : C +>m : number + + return this.n + m; +>this.n + m : number +>this.n : number +>this : C +>n : number +>m : number + } + explicitProperty(this: {n: number}, m: number): number { +>explicitProperty : (this: { n: number; }, m: number) => number +>this : { n: number; } +>n : number +>m : number + + return this.n + m; +>this.n + m : number +>this.n : number +>this : { n: number; } +>n : number +>m : number + } + explicitVoid(this: void, m: number): number { +>explicitVoid : (this: void, m: number) => number +>this : void +>m : number + + return m + 1; +>m + 1 : number +>m : number +>1 : number + } +} +class D extends C { } +>D : D +>C : C + +interface I { +>I : I + + a: number; +>a : number + + explicitVoid1(this: void): number; +>explicitVoid1 : (this: void) => number +>this : void + + explicitVoid2(this: void): number; +>explicitVoid2 : (this: void) => number +>this : void + + explicitStructural(this: {a: number}): number; +>explicitStructural : (this: { a: number; }) => number +>this : { a: number; } +>a : number + + explicitInterface(this: I): number; +>explicitInterface : (this: I) => number +>this : I +>I : I + + explicitThis(this: this): number; +>explicitThis : (this: this) => number +>this : this +} +function explicitStructural(this: { y: number }, x: number): number { +>explicitStructural : (this: { y: number; }, x: number) => number +>this : { y: number; } +>y : number +>x : number + + return x + this.y; +>x + this.y : number +>x : number +>this.y : number +>this : { y: number; } +>y : number +} +function justThis(this: { y: number }): number { +>justThis : (this: { y: number; }) => number +>this : { y: number; } +>y : number + + return this.y; +>this.y : number +>this : { y: number; } +>y : number +} +function implicitThis(n: number): number { +>implicitThis : (n: number) => number +>n : number + + return this.m + n + 12; +>this.m + n + 12 : any +>this.m + n : any +>this.m : any +>this : any +>m : any +>n : number +>12 : number +} +let impl: I = { +>impl : I +>I : I +>{ a: 12, explicitVoid2: () => this.a, // ok, this: any because it refers to some outer object (window?) explicitVoid1() { return 12; }, explicitStructural() { return this.a; }, explicitInterface() { return this.a; }, explicitThis() { return this.a; },} : { a: number; explicitVoid2: () => any; explicitVoid1(): number; explicitStructural(): number; explicitInterface(): number; explicitThis(): number; } + + a: 12, +>a : number +>12 : number + + explicitVoid2: () => this.a, // ok, this: any because it refers to some outer object (window?) +>explicitVoid2 : () => any +>() => this.a : () => any +>this.a : any +>this : any +>a : any + + explicitVoid1() { return 12; }, +>explicitVoid1 : () => number +>12 : number + + explicitStructural() { +>explicitStructural : () => number + + return this.a; +>this.a : number +>this : { a: number; } +>a : number + + }, + explicitInterface() { +>explicitInterface : () => number + + return this.a; +>this.a : number +>this : I +>a : number + + }, + explicitThis() { +>explicitThis : () => number + + return this.a; +>this.a : number +>this : I +>a : number + + }, +} +impl.explicitVoid1 = function () { return 12; }; +>impl.explicitVoid1 = function () { return 12; } : () => number +>impl.explicitVoid1 : (this: void) => number +>impl : I +>explicitVoid1 : (this: void) => number +>function () { return 12; } : () => number +>12 : number + +impl.explicitVoid2 = () => 12; +>impl.explicitVoid2 = () => 12 : () => number +>impl.explicitVoid2 : (this: void) => number +>impl : I +>explicitVoid2 : (this: void) => number +>() => 12 : () => number +>12 : number + +impl.explicitStructural = function() { return this.a; }; +>impl.explicitStructural = function() { return this.a; } : () => number +>impl.explicitStructural : (this: { a: number; }) => number +>impl : I +>explicitStructural : (this: { a: number; }) => number +>function() { return this.a; } : () => number +>this.a : number +>this : { a: number; } +>a : number + +impl.explicitInterface = function() { return this.a; }; +>impl.explicitInterface = function() { return this.a; } : () => number +>impl.explicitInterface : (this: I) => number +>impl : I +>explicitInterface : (this: I) => number +>function() { return this.a; } : () => number +>this.a : number +>this : I +>a : number + +impl.explicitStructural = () => 12; +>impl.explicitStructural = () => 12 : () => number +>impl.explicitStructural : (this: { a: number; }) => number +>impl : I +>explicitStructural : (this: { a: number; }) => number +>() => 12 : () => number +>12 : number + +impl.explicitInterface = () => 12; +>impl.explicitInterface = () => 12 : () => number +>impl.explicitInterface : (this: I) => number +>impl : I +>explicitInterface : (this: I) => number +>() => 12 : () => number +>12 : number + +impl.explicitThis = function () { return this.a; }; +>impl.explicitThis = function () { return this.a; } : () => number +>impl.explicitThis : (this: I) => number +>impl : I +>explicitThis : (this: I) => number +>function () { return this.a; } : () => number +>this.a : number +>this : I +>a : number + +// parameter checking +let ok: {y: number, f: (this: { y: number }, x: number) => number} = { y: 12, f: explicitStructural }; +>ok : { y: number; f: (this: { y: number; }, x: number) => number; } +>y : number +>f : (this: { y: number; }, x: number) => number +>this : { y: number; } +>y : number +>x : number +>{ y: 12, f: explicitStructural } : { y: number; f: (this: { y: number; }, x: number) => number; } +>y : number +>12 : number +>f : (this: { y: number; }, x: number) => number +>explicitStructural : (this: { y: number; }, x: number) => number + +let implicitAnyOk: {notSpecified: number, f: (x: number) => number} = { notSpecified: 12, f: implicitThis }; +>implicitAnyOk : { notSpecified: number; f: (x: number) => number; } +>notSpecified : number +>f : (x: number) => number +>x : number +>{ notSpecified: 12, f: implicitThis } : { notSpecified: number; f: (n: number) => number; } +>notSpecified : number +>12 : number +>f : (n: number) => number +>implicitThis : (n: number) => number + +ok.f(13); +>ok.f(13) : number +>ok.f : (this: { y: number; }, x: number) => number +>ok : { y: number; f: (this: { y: number; }, x: number) => number; } +>f : (this: { y: number; }, x: number) => number +>13 : number + +implicitThis(12); +>implicitThis(12) : number +>implicitThis : (n: number) => number +>12 : number + +implicitAnyOk.f(12); +>implicitAnyOk.f(12) : number +>implicitAnyOk.f : (x: number) => number +>implicitAnyOk : { notSpecified: number; f: (x: number) => number; } +>f : (x: number) => number +>12 : number + +let c = new C(); +>c : C +>new C() : C +>C : typeof C + +let d = new D(); +>d : D +>new D() : D +>D : typeof D + +let ripped = c.explicitC; +>ripped : (this: C, m: number) => number +>c.explicitC : (this: C, m: number) => number +>c : C +>explicitC : (this: C, m: number) => number + +c.explicitC(12); +>c.explicitC(12) : number +>c.explicitC : (this: C, m: number) => number +>c : C +>explicitC : (this: C, m: number) => number +>12 : number + +c.explicitProperty(12); +>c.explicitProperty(12) : number +>c.explicitProperty : (this: { n: number; }, m: number) => number +>c : C +>explicitProperty : (this: { n: number; }, m: number) => number +>12 : number + +c.explicitThis(12); +>c.explicitThis(12) : number +>c.explicitThis : (this: C, m: number) => number +>c : C +>explicitThis : (this: C, m: number) => number +>12 : number + +d.explicitC(12); +>d.explicitC(12) : number +>d.explicitC : (this: C, m: number) => number +>d : D +>explicitC : (this: C, m: number) => number +>12 : number + +d.explicitProperty(12); +>d.explicitProperty(12) : number +>d.explicitProperty : (this: { n: number; }, m: number) => number +>d : D +>explicitProperty : (this: { n: number; }, m: number) => number +>12 : number + +d.explicitThis(12); +>d.explicitThis(12) : number +>d.explicitThis : (this: D, m: number) => number +>d : D +>explicitThis : (this: D, m: number) => number +>12 : number + +let reconstructed: { +>reconstructed : { n: number; explicitThis(this: C, m: number): number; explicitC(this: C, m: number): number; explicitProperty: (this: { n: number; }, m: number) => number; explicitVoid(this: void, m: number): number; } + + n: number, +>n : number + + explicitThis(this: C, m: number): number, // note: this: this is not allowed in an object literal type. +>explicitThis : (this: C, m: number) => number +>this : C +>C : C +>m : number + + explicitC(this: C, m: number): number, +>explicitC : (this: C, m: number) => number +>this : C +>C : C +>m : number + + explicitProperty: (this: {n : number}, m: number) => number, +>explicitProperty : (this: { n: number; }, m: number) => number +>this : { n: number; } +>n : number +>m : number + + explicitVoid(this: void, m: number): number, +>explicitVoid : (this: void, m: number) => number +>this : void +>m : number + +} = { +>{ n: 12, explicitThis: c.explicitThis, explicitC: c.explicitC, explicitProperty: c.explicitProperty, explicitVoid: c.explicitVoid} : { n: number; explicitThis: (this: C, m: number) => number; explicitC: (this: C, m: number) => number; explicitProperty: (this: { n: number; }, m: number) => number; explicitVoid: (this: void, m: number) => number; } + + n: 12, +>n : number +>12 : number + + explicitThis: c.explicitThis, +>explicitThis : (this: C, m: number) => number +>c.explicitThis : (this: C, m: number) => number +>c : C +>explicitThis : (this: C, m: number) => number + + explicitC: c.explicitC, +>explicitC : (this: C, m: number) => number +>c.explicitC : (this: C, m: number) => number +>c : C +>explicitC : (this: C, m: number) => number + + explicitProperty: c.explicitProperty, +>explicitProperty : (this: { n: number; }, m: number) => number +>c.explicitProperty : (this: { n: number; }, m: number) => number +>c : C +>explicitProperty : (this: { n: number; }, m: number) => number + + explicitVoid: c.explicitVoid +>explicitVoid : (this: void, m: number) => number +>c.explicitVoid : (this: void, m: number) => number +>c : C +>explicitVoid : (this: void, m: number) => number + +}; +reconstructed.explicitThis(10); +>reconstructed.explicitThis(10) : number +>reconstructed.explicitThis : (this: C, m: number) => number +>reconstructed : { n: number; explicitThis(this: C, m: number): number; explicitC(this: C, m: number): number; explicitProperty: (this: { n: number; }, m: number) => number; explicitVoid(this: void, m: number): number; } +>explicitThis : (this: C, m: number) => number +>10 : number + +reconstructed.explicitProperty(11); +>reconstructed.explicitProperty(11) : number +>reconstructed.explicitProperty : (this: { n: number; }, m: number) => number +>reconstructed : { n: number; explicitThis(this: C, m: number): number; explicitC(this: C, m: number): number; explicitProperty: (this: { n: number; }, m: number) => number; explicitVoid(this: void, m: number): number; } +>explicitProperty : (this: { n: number; }, m: number) => number +>11 : number + +let explicitVoid = reconstructed.explicitVoid; +>explicitVoid : (this: void, m: number) => number +>reconstructed.explicitVoid : (this: void, m: number) => number +>reconstructed : { n: number; explicitThis(this: C, m: number): number; explicitC(this: C, m: number): number; explicitProperty: (this: { n: number; }, m: number) => number; explicitVoid(this: void, m: number): number; } +>explicitVoid : (this: void, m: number) => number + +explicitVoid(12); +>explicitVoid(12) : number +>explicitVoid : (this: void, m: number) => number +>12 : number + +// assignment checking +let unboundToSpecified: (this: { y: number }, x: number) => number = x => x + this.y; // ok, this:any +>unboundToSpecified : (this: { y: number; }, x: number) => number +>this : { y: number; } +>y : number +>x : number +>x => x + this.y : (x: number) => any +>x : number +>x + this.y : any +>x : number +>this.y : any +>this : any +>y : any + +let specifiedToSpecified: (this: {y: number}, x: number) => number = explicitStructural; +>specifiedToSpecified : (this: { y: number; }, x: number) => number +>this : { y: number; } +>y : number +>x : number +>explicitStructural : (this: { y: number; }, x: number) => number + +let anyToSpecified: (this: { y: number }, x: number) => number = function(x: number): number { return x + 12; }; +>anyToSpecified : (this: { y: number; }, x: number) => number +>this : { y: number; } +>y : number +>x : number +>function(x: number): number { return x + 12; } : (x: number) => number +>x : number +>x + 12 : number +>x : number +>12 : number + +let unspecifiedLambda: (x: number) => number = x => x + 12; +>unspecifiedLambda : (x: number) => number +>x : number +>x => x + 12 : (x: number) => number +>x : number +>x + 12 : number +>x : number +>12 : number + +let specifiedLambda: (this: void, x: number) => number = x => x + 12; +>specifiedLambda : (this: void, x: number) => number +>this : void +>x : number +>x => x + 12 : (x: number) => number +>x : number +>x + 12 : number +>x : number +>12 : number + +let unspecifiedLambdaToSpecified: (this: {y: number}, x: number) => number = unspecifiedLambda; +>unspecifiedLambdaToSpecified : (this: { y: number; }, x: number) => number +>this : { y: number; } +>y : number +>x : number +>unspecifiedLambda : (x: number) => number + +let specifiedLambdaToSpecified: (this: {y: number}, x: number) => number = specifiedLambda; +>specifiedLambdaToSpecified : (this: { y: number; }, x: number) => number +>this : { y: number; } +>y : number +>x : number +>specifiedLambda : (this: void, x: number) => number + + +let explicitCFunction: (this: C, m: number) => number; +>explicitCFunction : (this: C, m: number) => number +>this : C +>C : C +>m : number + +let explicitPropertyFunction: (this: {n: number}, m: number) => number; +>explicitPropertyFunction : (this: { n: number; }, m: number) => number +>this : { n: number; } +>n : number +>m : number + +c.explicitC = explicitCFunction; +>c.explicitC = explicitCFunction : (this: C, m: number) => number +>c.explicitC : (this: C, m: number) => number +>c : C +>explicitC : (this: C, m: number) => number +>explicitCFunction : (this: C, m: number) => number + +c.explicitC = function(this: C, m: number) { return this.n + m }; +>c.explicitC = function(this: C, m: number) { return this.n + m } : (this: C, m: number) => number +>c.explicitC : (this: C, m: number) => number +>c : C +>explicitC : (this: C, m: number) => number +>function(this: C, m: number) { return this.n + m } : (this: C, m: number) => number +>this : C +>C : C +>m : number +>this.n + m : number +>this.n : number +>this : C +>n : number +>m : number + +c.explicitProperty = explicitPropertyFunction; +>c.explicitProperty = explicitPropertyFunction : (this: { n: number; }, m: number) => number +>c.explicitProperty : (this: { n: number; }, m: number) => number +>c : C +>explicitProperty : (this: { n: number; }, m: number) => number +>explicitPropertyFunction : (this: { n: number; }, m: number) => number + +c.explicitProperty = function(this: {n: number}, m: number) { return this.n + m }; +>c.explicitProperty = function(this: {n: number}, m: number) { return this.n + m } : (this: { n: number; }, m: number) => number +>c.explicitProperty : (this: { n: number; }, m: number) => number +>c : C +>explicitProperty : (this: { n: number; }, m: number) => number +>function(this: {n: number}, m: number) { return this.n + m } : (this: { n: number; }, m: number) => number +>this : { n: number; } +>n : number +>m : number +>this.n + m : number +>this.n : number +>this : { n: number; } +>n : number +>m : number + +c.explicitProperty = reconstructed.explicitProperty; +>c.explicitProperty = reconstructed.explicitProperty : (this: { n: number; }, m: number) => number +>c.explicitProperty : (this: { n: number; }, m: number) => number +>c : C +>explicitProperty : (this: { n: number; }, m: number) => number +>reconstructed.explicitProperty : (this: { n: number; }, m: number) => number +>reconstructed : { n: number; explicitThis(this: C, m: number): number; explicitC(this: C, m: number): number; explicitProperty: (this: { n: number; }, m: number) => number; explicitVoid(this: void, m: number): number; } +>explicitProperty : (this: { n: number; }, m: number) => number + +// lambdas are assignable to anything +c.explicitC = m => m; +>c.explicitC = m => m : (m: number) => number +>c.explicitC : (this: C, m: number) => number +>c : C +>explicitC : (this: C, m: number) => number +>m => m : (m: number) => number +>m : number +>m : number + +c.explicitThis = m => m; +>c.explicitThis = m => m : (m: number) => number +>c.explicitThis : (this: C, m: number) => number +>c : C +>explicitThis : (this: C, m: number) => number +>m => m : (m: number) => number +>m : number +>m : number + +c.explicitProperty = m => m; +>c.explicitProperty = m => m : (m: number) => number +>c.explicitProperty : (this: { n: number; }, m: number) => number +>c : C +>explicitProperty : (this: { n: number; }, m: number) => number +>m => m : (m: number) => number +>m : number +>m : number + +// this inside lambdas refer to outer scope +// the outer-scoped lambda at top-level is still just `any` +c.explicitC = m => m + this.n; +>c.explicitC = m => m + this.n : (m: number) => any +>c.explicitC : (this: C, m: number) => number +>c : C +>explicitC : (this: C, m: number) => number +>m => m + this.n : (m: number) => any +>m : number +>m + this.n : any +>m : number +>this.n : any +>this : any +>n : any + +c.explicitThis = m => m + this.n; +>c.explicitThis = m => m + this.n : (m: number) => any +>c.explicitThis : (this: C, m: number) => number +>c : C +>explicitThis : (this: C, m: number) => number +>m => m + this.n : (m: number) => any +>m : number +>m + this.n : any +>m : number +>this.n : any +>this : any +>n : any + +c.explicitProperty = m => m + this.n; +>c.explicitProperty = m => m + this.n : (m: number) => any +>c.explicitProperty : (this: { n: number; }, m: number) => number +>c : C +>explicitProperty : (this: { n: number; }, m: number) => number +>m => m + this.n : (m: number) => any +>m : number +>m + this.n : any +>m : number +>this.n : any +>this : any +>n : any + +//NOTE: this=C here, I guess? +c.explicitThis = explicitCFunction; +>c.explicitThis = explicitCFunction : (this: C, m: number) => number +>c.explicitThis : (this: C, m: number) => number +>c : C +>explicitThis : (this: C, m: number) => number +>explicitCFunction : (this: C, m: number) => number + +c.explicitThis = function(this: C, m: number) { return this.n + m }; +>c.explicitThis = function(this: C, m: number) { return this.n + m } : (this: C, m: number) => number +>c.explicitThis : (this: C, m: number) => number +>c : C +>explicitThis : (this: C, m: number) => number +>function(this: C, m: number) { return this.n + m } : (this: C, m: number) => number +>this : C +>C : C +>m : number +>this.n + m : number +>this.n : number +>this : C +>n : number +>m : number + +// this:any compatibility +c.explicitC = function(m) { return this.n + m }; +>c.explicitC = function(m) { return this.n + m } : (m: number) => number +>c.explicitC : (this: C, m: number) => number +>c : C +>explicitC : (this: C, m: number) => number +>function(m) { return this.n + m } : (m: number) => number +>m : number +>this.n + m : number +>this.n : number +>this : C +>n : number +>m : number + +c.explicitProperty = function(m) { return this.n + m }; +>c.explicitProperty = function(m) { return this.n + m } : (m: number) => number +>c.explicitProperty : (this: { n: number; }, m: number) => number +>c : C +>explicitProperty : (this: { n: number; }, m: number) => number +>function(m) { return this.n + m } : (m: number) => number +>m : number +>this.n + m : number +>this.n : number +>this : { n: number; } +>n : number +>m : number + +c.explicitThis = function(m) { return this.n + m }; +>c.explicitThis = function(m) { return this.n + m } : (m: number) => number +>c.explicitThis : (this: C, m: number) => number +>c : C +>explicitThis : (this: C, m: number) => number +>function(m) { return this.n + m } : (m: number) => number +>m : number +>this.n + m : number +>this.n : number +>this : C +>n : number +>m : number + +// this: contextual typing +c.explicitThis = function(this, m) { return this.n + m }; +>c.explicitThis = function(this, m) { return this.n + m } : (this: any, m: number) => number +>c.explicitThis : (this: C, m: number) => number +>c : C +>explicitThis : (this: C, m: number) => number +>function(this, m) { return this.n + m } : (this: any, m: number) => number +>this : C +>m : number +>this.n + m : number +>this.n : number +>this : C +>n : number +>m : number + +// this: superclass compatibility +c.explicitC = function(this: B, m: number) { return this.n + m }; +>c.explicitC = function(this: B, m: number) { return this.n + m } : (this: B, m: number) => number +>c.explicitC : (this: C, m: number) => number +>c : C +>explicitC : (this: C, m: number) => number +>function(this: B, m: number) { return this.n + m } : (this: B, m: number) => number +>this : B +>B : B +>m : number +>this.n + m : number +>this.n : number +>this : B +>n : number +>m : number + +// this:void compatibility +c.explicitVoid = n => n; +>c.explicitVoid = n => n : (n: number) => number +>c.explicitVoid : (this: void, m: number) => number +>c : C +>explicitVoid : (this: void, m: number) => number +>n => n : (n: number) => number +>n : number +>n : number + +// class-based assignability +class Base1 { +>Base1 : Base1 + + x: number; +>x : number + + public polymorphic(this: this): number { return this.x; } +>polymorphic : (this: this) => number +>this : this +>this.x : number +>this : this +>x : number + + explicit(this: Base1): number { return this.x; } +>explicit : (this: Base1) => number +>this : Base1 +>Base1 : Base1 +>this.x : number +>this : Base1 +>x : number + + static explicitStatic(this: typeof Base1): number { return this.y; } +>explicitStatic : (this: typeof Base1) => number +>this : typeof Base1 +>Base1 : typeof Base1 +>this.y : number +>this : typeof Base1 +>y : number + + static y: number; +>y : number +} +class Derived1 extends Base1 { +>Derived1 : Derived1 +>Base1 : Base1 + + y: number +>y : number +} +class Base2 { +>Base2 : Base2 + + y: number +>y : number + + polymorphic(this: this): number { return this.y; } +>polymorphic : (this: this) => number +>this : this +>this.y : number +>this : this +>y : number + + explicit(this: Base1): number { return this.x; } +>explicit : (this: Base1) => number +>this : Base1 +>Base1 : Base1 +>this.x : number +>this : Base1 +>x : number +} +class Derived2 extends Base2 { +>Derived2 : Derived2 +>Base2 : Base2 + + x: number +>x : number +} +let b1 = new Base1(); +>b1 : Base1 +>new Base1() : Base1 +>Base1 : typeof Base1 + +let b2 = new Base2(); +>b2 : Base2 +>new Base2() : Base2 +>Base2 : typeof Base2 + +let d1 = new Derived1(); +>d1 : Derived1 +>new Derived1() : Derived1 +>Derived1 : typeof Derived1 + +let d2 = new Derived2(); +>d2 : Derived2 +>new Derived2() : Derived2 +>Derived2 : typeof Derived2 + +d2.polymorphic = d1.polymorphic // ok, 'x' and 'y' in { x, y } +>d2.polymorphic = d1.polymorphic : (this: Derived1) => number +>d2.polymorphic : (this: Derived2) => number +>d2 : Derived2 +>polymorphic : (this: Derived2) => number +>d1.polymorphic : (this: Derived1) => number +>d1 : Derived1 +>polymorphic : (this: Derived1) => number + +d1.polymorphic = d2.polymorphic // ok, 'x' and 'y' in { x, y } +>d1.polymorphic = d2.polymorphic : (this: Derived2) => number +>d1.polymorphic : (this: Derived1) => number +>d1 : Derived1 +>polymorphic : (this: Derived1) => number +>d2.polymorphic : (this: Derived2) => number +>d2 : Derived2 +>polymorphic : (this: Derived2) => number + +// bivariance-allowed cases +d1.polymorphic = b2.polymorphic // ok, 'y' in D: { x, y } +>d1.polymorphic = b2.polymorphic : (this: Base2) => number +>d1.polymorphic : (this: Derived1) => number +>d1 : Derived1 +>polymorphic : (this: Derived1) => number +>b2.polymorphic : (this: Base2) => number +>b2 : Base2 +>polymorphic : (this: Base2) => number + +d2.polymorphic = d1.explicit // ok, 'y' in { x, y } +>d2.polymorphic = d1.explicit : (this: Base1) => number +>d2.polymorphic : (this: Derived2) => number +>d2 : Derived2 +>polymorphic : (this: Derived2) => number +>d1.explicit : (this: Base1) => number +>d1 : Derived1 +>explicit : (this: Base1) => number + +b1.polymorphic = d2.polymorphic // ok, 'x' and 'y' not in Base1: { x } +>b1.polymorphic = d2.polymorphic : (this: Derived2) => number +>b1.polymorphic : (this: Base1) => number +>b1 : Base1 +>polymorphic : (this: Base1) => number +>d2.polymorphic : (this: Derived2) => number +>d2 : Derived2 +>polymorphic : (this: Derived2) => number + +b1.explicit = d2.polymorphic // ok, 'x' and 'y' not in Base1: { x } +>b1.explicit = d2.polymorphic : (this: Derived2) => number +>b1.explicit : (this: Base1) => number +>b1 : Base1 +>explicit : (this: Base1) => number +>d2.polymorphic : (this: Derived2) => number +>d2 : Derived2 +>polymorphic : (this: Derived2) => number + +////// use this-type for construction with new //// +function InterfaceThis(this: I) { +>InterfaceThis : (this: I) => void +>this : I +>I : I + + this.a = 12; +>this.a = 12 : number +>this.a : number +>this : I +>a : number +>12 : number +} +function LiteralTypeThis(this: {x: string}) { +>LiteralTypeThis : (this: { x: string; }) => void +>this : { x: string; } +>x : string + + this.x = "ok"; +>this.x = "ok" : string +>this.x : string +>this : { x: string; } +>x : string +>"ok" : string +} +function AnyThis(this: any) { +>AnyThis : (this: any) => void +>this : any + + this.x = "ok"; +>this.x = "ok" : string +>this.x : any +>this : any +>x : any +>"ok" : string +} +let interfaceThis = new InterfaceThis(); +>interfaceThis : any +>new InterfaceThis() : any +>InterfaceThis : (this: I) => void + +let literalTypeThis = new LiteralTypeThis(); +>literalTypeThis : any +>new LiteralTypeThis() : any +>LiteralTypeThis : (this: { x: string; }) => void + +let anyThis = new AnyThis(); +>anyThis : any +>new AnyThis() : any +>AnyThis : (this: any) => void + +//// type parameter inference //// +declare var f: { +>f : { (this: void, x: number): number; call(this: (...argArray: any[]) => U, ...argArray: any[]): U; } + + (this: void, x: number): number, +>this : void +>x : number + + call(this: (...argArray: any[]) => U, ...argArray: any[]): U; +>call : (this: (...argArray: any[]) => U, ...argArray: any[]) => U +>U : U +>this : (...argArray: any[]) => U +>argArray : any[] +>U : U +>argArray : any[] +>U : U + +}; +let n: number = f.call(12); +>n : number +>f.call(12) : number +>f.call : (this: (...argArray: any[]) => U, ...argArray: any[]) => U +>f : { (this: void, x: number): number; call(this: (...argArray: any[]) => U, ...argArray: any[]): U; } +>call : (this: (...argArray: any[]) => U, ...argArray: any[]) => U +>12 : number + +function missingTypeIsImplicitAny(this, a: number) { return this.anything + a; } +>missingTypeIsImplicitAny : (this: any, a: number) => any +>this : any +>a : number +>this.anything + a : any +>this.anything : any +>this : any +>anything : any +>a : number + diff --git a/tests/baselines/reference/thisTypeInFunctions2.js b/tests/baselines/reference/thisTypeInFunctions2.js new file mode 100644 index 00000000000..f52438a19ab --- /dev/null +++ b/tests/baselines/reference/thisTypeInFunctions2.js @@ -0,0 +1,91 @@ +//// [thisTypeInFunctions2.ts] +interface IndexedWithThis { + // this is a workaround for React + init?: (this: this) => void; + willDestroy?: (this: any) => void; + [propName: string]: number | string | boolean | symbol | undefined | null | {} | ((this: any, ...args:any[]) => any); +} +interface IndexedWithoutThis { + // this is what React would like to write (and what they write today) + init?: () => void; + willDestroy?: () => void; + [propName: string]: any; +} +interface SimpleInterface { + foo(n: string); + bar(): number; +} +declare function extend1(args: IndexedWithThis): void; +declare function extend2(args: IndexedWithoutThis): void; +declare function simple(arg: SimpleInterface): void; + +extend1({ + init() { + this // this: IndexedWithThis because of contextual typing. + // this.mine + this.willDestroy + }, + mine: 12, + foo() { + this.url; // this: any because 'foo' matches the string indexer + this.willDestroy; + } +}); +extend2({ + init() { + this // this: any because the contextual signature of init doesn't specify this' type + this.mine + this.willDestroy + }, + mine: 13, + foo() { + this // this: any because of the string indexer + this.mine + this.willDestroy + } +}); + +simple({ + foo(n) { + return n.length + this.bar(); + }, + bar() { + return 14; + } +}) + + +//// [thisTypeInFunctions2.js] +extend1({ + init: function () { + this; // this: IndexedWithThis because of contextual typing. + // this.mine + this.willDestroy; + }, + mine: 12, + foo: function () { + this.url; // this: any because 'foo' matches the string indexer + this.willDestroy; + } +}); +extend2({ + init: function () { + this; // this: any because the contextual signature of init doesn't specify this' type + this.mine; + this.willDestroy; + }, + mine: 13, + foo: function () { + this; // this: any because of the string indexer + this.mine; + this.willDestroy; + } +}); +simple({ + foo: function (n) { + return n.length + this.bar(); + }, + bar: function () { + return 14; + } +}); diff --git a/tests/baselines/reference/thisTypeInFunctions2.symbols b/tests/baselines/reference/thisTypeInFunctions2.symbols new file mode 100644 index 00000000000..cdc7fb321d4 --- /dev/null +++ b/tests/baselines/reference/thisTypeInFunctions2.symbols @@ -0,0 +1,124 @@ +=== tests/cases/conformance/types/thisType/thisTypeInFunctions2.ts === +interface IndexedWithThis { +>IndexedWithThis : Symbol(IndexedWithThis, Decl(thisTypeInFunctions2.ts, 0, 0)) + + // this is a workaround for React + init?: (this: this) => void; +>init : Symbol(IndexedWithThis.init, Decl(thisTypeInFunctions2.ts, 0, 27)) +>this : Symbol(this, Decl(thisTypeInFunctions2.ts, 2, 12)) + + willDestroy?: (this: any) => void; +>willDestroy : Symbol(IndexedWithThis.willDestroy, Decl(thisTypeInFunctions2.ts, 2, 32)) +>this : Symbol(this, Decl(thisTypeInFunctions2.ts, 3, 19)) + + [propName: string]: number | string | boolean | symbol | undefined | null | {} | ((this: any, ...args:any[]) => any); +>propName : Symbol(propName, Decl(thisTypeInFunctions2.ts, 4, 5)) +>this : Symbol(this, Decl(thisTypeInFunctions2.ts, 4, 87)) +>args : Symbol(args, Decl(thisTypeInFunctions2.ts, 4, 97)) +} +interface IndexedWithoutThis { +>IndexedWithoutThis : Symbol(IndexedWithoutThis, Decl(thisTypeInFunctions2.ts, 5, 1)) + + // this is what React would like to write (and what they write today) + init?: () => void; +>init : Symbol(IndexedWithoutThis.init, Decl(thisTypeInFunctions2.ts, 6, 30)) + + willDestroy?: () => void; +>willDestroy : Symbol(IndexedWithoutThis.willDestroy, Decl(thisTypeInFunctions2.ts, 8, 22)) + + [propName: string]: any; +>propName : Symbol(propName, Decl(thisTypeInFunctions2.ts, 10, 5)) +} +interface SimpleInterface { +>SimpleInterface : Symbol(SimpleInterface, Decl(thisTypeInFunctions2.ts, 11, 1)) + + foo(n: string); +>foo : Symbol(SimpleInterface.foo, Decl(thisTypeInFunctions2.ts, 12, 27)) +>n : Symbol(n, Decl(thisTypeInFunctions2.ts, 13, 8)) + + bar(): number; +>bar : Symbol(SimpleInterface.bar, Decl(thisTypeInFunctions2.ts, 13, 19)) +} +declare function extend1(args: IndexedWithThis): void; +>extend1 : Symbol(extend1, Decl(thisTypeInFunctions2.ts, 15, 1)) +>args : Symbol(args, Decl(thisTypeInFunctions2.ts, 16, 25)) +>IndexedWithThis : Symbol(IndexedWithThis, Decl(thisTypeInFunctions2.ts, 0, 0)) + +declare function extend2(args: IndexedWithoutThis): void; +>extend2 : Symbol(extend2, Decl(thisTypeInFunctions2.ts, 16, 54)) +>args : Symbol(args, Decl(thisTypeInFunctions2.ts, 17, 25)) +>IndexedWithoutThis : Symbol(IndexedWithoutThis, Decl(thisTypeInFunctions2.ts, 5, 1)) + +declare function simple(arg: SimpleInterface): void; +>simple : Symbol(simple, Decl(thisTypeInFunctions2.ts, 17, 57)) +>arg : Symbol(arg, Decl(thisTypeInFunctions2.ts, 18, 24)) +>SimpleInterface : Symbol(SimpleInterface, Decl(thisTypeInFunctions2.ts, 11, 1)) + +extend1({ +>extend1 : Symbol(extend1, Decl(thisTypeInFunctions2.ts, 15, 1)) + + init() { +>init : Symbol(init, Decl(thisTypeInFunctions2.ts, 20, 9)) + + this // this: IndexedWithThis because of contextual typing. +>this : Symbol(IndexedWithThis, Decl(thisTypeInFunctions2.ts, 0, 0)) + + // this.mine + this.willDestroy +>this.willDestroy : Symbol(IndexedWithThis.willDestroy, Decl(thisTypeInFunctions2.ts, 2, 32)) +>this : Symbol(IndexedWithThis, Decl(thisTypeInFunctions2.ts, 0, 0)) +>willDestroy : Symbol(IndexedWithThis.willDestroy, Decl(thisTypeInFunctions2.ts, 2, 32)) + + }, + mine: 12, +>mine : Symbol(mine, Decl(thisTypeInFunctions2.ts, 25, 6)) + + foo() { +>foo : Symbol(foo, Decl(thisTypeInFunctions2.ts, 26, 13)) + + this.url; // this: any because 'foo' matches the string indexer + this.willDestroy; + } +}); +extend2({ +>extend2 : Symbol(extend2, Decl(thisTypeInFunctions2.ts, 16, 54)) + + init() { +>init : Symbol(init, Decl(thisTypeInFunctions2.ts, 32, 9)) + + this // this: any because the contextual signature of init doesn't specify this' type + this.mine + this.willDestroy + }, + mine: 13, +>mine : Symbol(mine, Decl(thisTypeInFunctions2.ts, 37, 6)) + + foo() { +>foo : Symbol(foo, Decl(thisTypeInFunctions2.ts, 38, 13)) + + this // this: any because of the string indexer + this.mine + this.willDestroy + } +}); + +simple({ +>simple : Symbol(simple, Decl(thisTypeInFunctions2.ts, 17, 57)) + + foo(n) { +>foo : Symbol(foo, Decl(thisTypeInFunctions2.ts, 46, 8)) +>n : Symbol(n, Decl(thisTypeInFunctions2.ts, 47, 8)) + + return n.length + this.bar(); +>n.length : Symbol(String.length, Decl(lib.d.ts, --, --)) +>n : Symbol(n, Decl(thisTypeInFunctions2.ts, 47, 8)) +>length : Symbol(String.length, Decl(lib.d.ts, --, --)) + + }, + bar() { +>bar : Symbol(bar, Decl(thisTypeInFunctions2.ts, 49, 6)) + + return 14; + } +}) + diff --git a/tests/baselines/reference/thisTypeInFunctions2.types b/tests/baselines/reference/thisTypeInFunctions2.types new file mode 100644 index 00000000000..371b5f5cafc --- /dev/null +++ b/tests/baselines/reference/thisTypeInFunctions2.types @@ -0,0 +1,165 @@ +=== tests/cases/conformance/types/thisType/thisTypeInFunctions2.ts === +interface IndexedWithThis { +>IndexedWithThis : IndexedWithThis + + // this is a workaround for React + init?: (this: this) => void; +>init : (this: this) => void +>this : this + + willDestroy?: (this: any) => void; +>willDestroy : (this: any) => void +>this : any + + [propName: string]: number | string | boolean | symbol | undefined | null | {} | ((this: any, ...args:any[]) => any); +>propName : string +>null : null +>this : any +>args : any[] +} +interface IndexedWithoutThis { +>IndexedWithoutThis : IndexedWithoutThis + + // this is what React would like to write (and what they write today) + init?: () => void; +>init : () => void + + willDestroy?: () => void; +>willDestroy : () => void + + [propName: string]: any; +>propName : string +} +interface SimpleInterface { +>SimpleInterface : SimpleInterface + + foo(n: string); +>foo : (n: string) => any +>n : string + + bar(): number; +>bar : () => number +} +declare function extend1(args: IndexedWithThis): void; +>extend1 : (args: IndexedWithThis) => void +>args : IndexedWithThis +>IndexedWithThis : IndexedWithThis + +declare function extend2(args: IndexedWithoutThis): void; +>extend2 : (args: IndexedWithoutThis) => void +>args : IndexedWithoutThis +>IndexedWithoutThis : IndexedWithoutThis + +declare function simple(arg: SimpleInterface): void; +>simple : (arg: SimpleInterface) => void +>arg : SimpleInterface +>SimpleInterface : SimpleInterface + +extend1({ +>extend1({ init() { this // this: IndexedWithThis because of contextual typing. // this.mine this.willDestroy }, mine: 12, foo() { this.url; // this: any because 'foo' matches the string indexer this.willDestroy; }}) : void +>extend1 : (args: IndexedWithThis) => void +>{ init() { this // this: IndexedWithThis because of contextual typing. // this.mine this.willDestroy }, mine: 12, foo() { this.url; // this: any because 'foo' matches the string indexer this.willDestroy; }} : { init(): void; mine: number; foo(): void; } + + init() { +>init : () => void + + this // this: IndexedWithThis because of contextual typing. +>this : IndexedWithThis + + // this.mine + this.willDestroy +>this.willDestroy : (this: any) => void +>this : IndexedWithThis +>willDestroy : (this: any) => void + + }, + mine: 12, +>mine : number +>12 : number + + foo() { +>foo : () => void + + this.url; // this: any because 'foo' matches the string indexer +>this.url : any +>this : any +>url : any + + this.willDestroy; +>this.willDestroy : any +>this : any +>willDestroy : any + } +}); +extend2({ +>extend2({ init() { this // this: any because the contextual signature of init doesn't specify this' type this.mine this.willDestroy }, mine: 13, foo() { this // this: any because of the string indexer this.mine this.willDestroy }}) : void +>extend2 : (args: IndexedWithoutThis) => void +>{ init() { this // this: any because the contextual signature of init doesn't specify this' type this.mine this.willDestroy }, mine: 13, foo() { this // this: any because of the string indexer this.mine this.willDestroy }} : { init(): void; mine: number; foo(): void; } + + init() { +>init : () => void + + this // this: any because the contextual signature of init doesn't specify this' type +>this : any + + this.mine +>this.mine : any +>this : any +>mine : any + + this.willDestroy +>this.willDestroy : any +>this : any +>willDestroy : any + + }, + mine: 13, +>mine : number +>13 : number + + foo() { +>foo : () => void + + this // this: any because of the string indexer +>this : any + + this.mine +>this.mine : any +>this : any +>mine : any + + this.willDestroy +>this.willDestroy : any +>this : any +>willDestroy : any + } +}); + +simple({ +>simple({ foo(n) { return n.length + this.bar(); }, bar() { return 14; }}) : void +>simple : (arg: SimpleInterface) => void +>{ foo(n) { return n.length + this.bar(); }, bar() { return 14; }} : { foo(n: string): any; bar(): number; } + + foo(n) { +>foo : (n: string) => any +>n : string + + return n.length + this.bar(); +>n.length + this.bar() : any +>n.length : number +>n : string +>length : number +>this.bar() : any +>this.bar : any +>this : any +>bar : any + + }, + bar() { +>bar : () => number + + return 14; +>14 : number + } +}) + diff --git a/tests/baselines/reference/thisTypeInFunctionsNegative.errors.txt b/tests/baselines/reference/thisTypeInFunctionsNegative.errors.txt new file mode 100644 index 00000000000..017550dcecd --- /dev/null +++ b/tests/baselines/reference/thisTypeInFunctionsNegative.errors.txt @@ -0,0 +1,447 @@ +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(16,15): error TS2339: Property 'n' does not exist on type 'void'. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(39,21): error TS2339: Property 'a' does not exist on type 'void'. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(49,1): error TS2684: The 'this' context of type 'void' is not assignable to method's 'this' of type '{ a: number; }'. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(51,1): error TS2684: The 'this' context of type 'void' is not assignable to method's 'this' of type 'I'. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(56,21): error TS2339: Property 'notFound' does not exist on type '{ y: number; }'. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(59,21): error TS2339: Property 'notSpecified' does not exist on type 'void'. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(61,79): error TS2322: Type '{ y: number; explicitStructural: (this: { y: number; }, x: number) => number; }' is not assignable to type '{ y: number; f: (this: { y: number; }, x: number) => number; }'. + Object literal may only specify known properties, and 'explicitStructural' does not exist in type '{ y: number; f: (this: { y: number; }, x: number) => number; }'. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(62,97): error TS2322: Type '{ y: string; explicitStructural: (this: { y: number; }, x: number) => number; }' is not assignable to type '{ y: string; f: (this: { y: number; }, x: number) => number; }'. + Object literal may only specify known properties, and 'explicitStructural' does not exist in type '{ y: string; f: (this: { y: number; }, x: number) => number; }'. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(63,110): error TS2322: Type '{ wrongName: number; explicitStructural: (this: { y: number; }, x: number) => number; }' is not assignable to type '{ wrongName: number; f: (this: { y: number; }, x: number) => number; }'. + Object literal may only specify known properties, and 'explicitStructural' does not exist in type '{ wrongName: number; f: (this: { y: number; }, x: number) => number; }'. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(65,1): error TS2346: Supplied parameters do not match any signature of call target. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(66,6): error TS2345: Argument of type 'string' is not assignable to parameter of type 'number'. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(67,1): error TS2346: Supplied parameters do not match any signature of call target. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(68,1): error TS2684: The 'this' context of type '{ y: string; f: (this: { y: number; }, x: number) => number; }' is not assignable to method's 'this' of type '{ y: number; }'. + Types of property 'y' are incompatible. + Type 'string' is not assignable to type 'number'. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(69,1): error TS2684: The 'this' context of type '{ wrongName: number; f: (this: { y: number; }, x: number) => number; }' is not assignable to method's 'this' of type '{ y: number; }'. + Property 'y' is missing in type '{ wrongName: number; f: (this: { y: number; }, x: number) => number; }'. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(72,1): error TS2346: Supplied parameters do not match any signature of call target. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(73,13): error TS2345: Argument of type 'string' is not assignable to parameter of type 'number'. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(74,1): error TS2346: Supplied parameters do not match any signature of call target. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(75,1): error TS2346: Supplied parameters do not match any signature of call target. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(76,16): error TS2345: Argument of type 'string' is not assignable to parameter of type 'number'. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(77,1): error TS2346: Supplied parameters do not match any signature of call target. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(78,1): error TS2346: Supplied parameters do not match any signature of call target. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(79,16): error TS2345: Argument of type 'string' is not assignable to parameter of type 'number'. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(80,1): error TS2346: Supplied parameters do not match any signature of call target. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(81,1): error TS2346: Supplied parameters do not match any signature of call target. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(82,20): error TS2345: Argument of type 'string' is not assignable to parameter of type 'number'. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(83,1): error TS2346: Supplied parameters do not match any signature of call target. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(86,5): error TS2322: Type '(this: { y: number; }, x: number) => number' is not assignable to type '(this: void, x: number) => number'. + The 'this' types of each signature are incompatible. + Type 'void' is not assignable to type '{ y: number; }'. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(107,1): error TS2322: Type '(this: D, m: number) => number' is not assignable to type '(this: C, m: number) => number'. + The 'this' types of each signature are incompatible. + Type 'C' is not assignable to type 'D'. + Property 'x' is missing in type 'C'. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(108,1): error TS2322: Type '(this: { x: number; }, m: number) => number' is not assignable to type '(this: { n: number; }, m: number) => number'. + The 'this' types of each signature are incompatible. + Type '{ n: number; }' is not assignable to type '{ x: number; }'. + Property 'x' is missing in type '{ n: number; }'. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(110,1): error TS2322: Type '(this: D, m: number) => number' is not assignable to type '(this: C, m: number) => number'. + The 'this' types of each signature are incompatible. + Type 'C' is not assignable to type 'D'. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(111,1): error TS2322: Type '(this: D, m: number) => number' is not assignable to type '(this: C, m: number) => number'. + The 'this' types of each signature are incompatible. + Type 'C' is not assignable to type 'D'. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(112,1): error TS2322: Type '(this: D, m: number) => number' is not assignable to type '(this: C, m: number) => number'. + The 'this' types of each signature are incompatible. + Type 'C' is not assignable to type 'D'. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(113,1): error TS2322: Type '(this: D, m: number) => number' is not assignable to type '(this: C, m: number) => number'. + The 'this' types of each signature are incompatible. + Type 'C' is not assignable to type 'D'. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(114,1): error TS2322: Type '(this: D, m: number) => number' is not assignable to type '(this: { n: number; }, m: number) => number'. + The 'this' types of each signature are incompatible. + Type '{ n: number; }' is not assignable to type 'D'. + Property 'x' is missing in type '{ n: number; }'. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(115,1): error TS2322: Type '(this: D, m: number) => number' is not assignable to type '(this: C, m: number) => number'. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(116,1): error TS2322: Type '(this: D, m: number) => number' is not assignable to type '(this: void, m: number) => number'. + The 'this' types of each signature are incompatible. + Type 'void' is not assignable to type 'D'. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(117,1): error TS2322: Type '(this: D, m: number) => number' is not assignable to type '(this: void, m: number) => number'. + The 'this' types of each signature are incompatible. + Type 'void' is not assignable to type 'D'. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(125,69): error TS2339: Property 'x' does not exist on type 'typeof Base1'. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(145,1): error TS2322: Type '(this: Base2) => number' is not assignable to type '(this: Base1) => number'. + The 'this' types of each signature are incompatible. + Type 'Base1' is not assignable to type 'Base2'. + Property 'y' is missing in type 'Base1'. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(146,1): error TS2322: Type '(this: Base2) => number' is not assignable to type '(this: Base1) => number'. + The 'this' types of each signature are incompatible. + Type 'Base1' is not assignable to type 'Base2'. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(148,1): error TS2322: Type '(this: Base2) => number' is not assignable to type '(this: Base1) => number'. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(154,16): error TS2679: A function that is called with the 'new' keyword cannot have a 'this' type that is 'void'. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(158,17): error TS2681: A constructor cannot have a 'this' parameter. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(160,11): error TS2682: A setter cannot have a 'this' parameter. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(164,9): error TS2681: A constructor cannot have a 'this' parameter. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(166,31): error TS2681: A constructor cannot have a 'this' parameter. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(167,30): error TS2680: A 'this' parameter must be the first parameter. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(170,26): error TS1003: Identifier expected. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(170,30): error TS1005: ',' expected. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(171,20): error TS2370: A rest parameter must be of an array type. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(171,23): error TS1003: Identifier expected. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(171,27): error TS1005: ',' expected. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(172,23): error TS1005: ',' expected. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(172,24): error TS1138: Parameter declaration expected. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(173,28): error TS1003: Identifier expected. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(173,32): error TS1005: ',' expected. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(174,30): error TS1005: ',' expected. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(174,32): error TS1138: Parameter declaration expected. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(174,39): error TS1005: ';' expected. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(174,40): error TS1128: Declaration or statement expected. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(174,42): error TS2304: Cannot find name 'number'. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(174,49): error TS1005: ';' expected. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(177,1): error TS7027: Unreachable code detected. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(177,29): error TS2304: Cannot find name 'm'. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(177,32): error TS1005: ';' expected. +tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts(177,35): error TS2304: Cannot find name 'm'. + + +==== tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts (66 errors) ==== + class C { + n: number; + explicitThis(this: this, m: number): number { + return this.n + m; + } + implicitThis(m: number): number { + return this.n + m; + } + explicitC(this: C, m: number): number { + return this.n + m; + } + explicitProperty(this: {n: number}, m: number): number { + return this.n + m; + } + explicitVoid(this: void, m: number): number { + return this.n + m; // 'n' doesn't exist on type 'void'. + ~ +!!! error TS2339: Property 'n' does not exist on type 'void'. + } + } + class D { + x: number; + explicitThis(this: this, m: number): number { + return this.x + m; + } + explicitD(this: D, m: number): number { + return this.x + m; + } + } + interface I { + a: number; + explicitVoid1(this: void): number; + explicitVoid2(this: void): number; + explicitStructural(this: {a: number}): number; + explicitInterface(this: I): number; + explicitThis(this: this): number; // TODO: Allow `this` types for interfaces + } + let impl: I = { + a: 12, + explicitVoid1() { + return this.a; // error, no 'a' in 'void' + ~ +!!! error TS2339: Property 'a' does not exist on type 'void'. + }, + explicitVoid2: () => this.a, // ok, `this:any` because it refers to an outer object + explicitStructural: () => 12, + explicitInterface: () => 12, + explicitThis() { + return this.a; + }, + } + let implExplicitStructural = impl.explicitStructural; + implExplicitStructural(); // error, no 'a' in 'void' + ~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS2684: The 'this' context of type 'void' is not assignable to method's 'this' of type '{ a: number; }'. + let implExplicitInterface = impl.explicitInterface; + implExplicitInterface(); // error, no 'a' in 'void' + ~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS2684: The 'this' context of type 'void' is not assignable to method's 'this' of type 'I'. + function explicitStructural(this: { y: number }, x: number): number { + return x + this.y; + } + function propertyName(this: { y: number }, x: number): number { + return x + this.notFound; + ~~~~~~~~ +!!! error TS2339: Property 'notFound' does not exist on type '{ y: number; }'. + } + function voidThisSpecified(this: void, x: number): number { + return x + this.notSpecified; + ~~~~~~~~~~~~ +!!! error TS2339: Property 'notSpecified' does not exist on type 'void'. + } + let ok: {y: number, f: (this: { y: number }, x: number) => number} = { y: 12, explicitStructural }; + ~~~~~~~~~~~~~~~~~~ +!!! error TS2322: Type '{ y: number; explicitStructural: (this: { y: number; }, x: number) => number; }' is not assignable to type '{ y: number; f: (this: { y: number; }, x: number) => number; }'. +!!! error TS2322: Object literal may only specify known properties, and 'explicitStructural' does not exist in type '{ y: number; f: (this: { y: number; }, x: number) => number; }'. + let wrongPropertyType: {y: string, f: (this: { y: number }, x: number) => number} = { y: 'foo', explicitStructural }; + ~~~~~~~~~~~~~~~~~~ +!!! error TS2322: Type '{ y: string; explicitStructural: (this: { y: number; }, x: number) => number; }' is not assignable to type '{ y: string; f: (this: { y: number; }, x: number) => number; }'. +!!! error TS2322: Object literal may only specify known properties, and 'explicitStructural' does not exist in type '{ y: string; f: (this: { y: number; }, x: number) => number; }'. + let wrongPropertyName: {wrongName: number, f: (this: { y: number }, x: number) => number} = { wrongName: 12, explicitStructural }; + ~~~~~~~~~~~~~~~~~~ +!!! error TS2322: Type '{ wrongName: number; explicitStructural: (this: { y: number; }, x: number) => number; }' is not assignable to type '{ wrongName: number; f: (this: { y: number; }, x: number) => number; }'. +!!! error TS2322: Object literal may only specify known properties, and 'explicitStructural' does not exist in type '{ wrongName: number; f: (this: { y: number; }, x: number) => number; }'. + + ok.f(); // not enough arguments + ~~~~~~ +!!! error TS2346: Supplied parameters do not match any signature of call target. + ok.f('wrong type'); + ~~~~~~~~~~~~ +!!! error TS2345: Argument of type 'string' is not assignable to parameter of type 'number'. + ok.f(13, 'too many arguments'); + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS2346: Supplied parameters do not match any signature of call target. + wrongPropertyType.f(13); + ~~~~~~~~~~~~~~~~~ +!!! error TS2684: The 'this' context of type '{ y: string; f: (this: { y: number; }, x: number) => number; }' is not assignable to method's 'this' of type '{ y: number; }'. +!!! error TS2684: Types of property 'y' are incompatible. +!!! error TS2684: Type 'string' is not assignable to type 'number'. + wrongPropertyName.f(13); + ~~~~~~~~~~~~~~~~~ +!!! error TS2684: The 'this' context of type '{ wrongName: number; f: (this: { y: number; }, x: number) => number; }' is not assignable to method's 'this' of type '{ y: number; }'. +!!! error TS2684: Property 'y' is missing in type '{ wrongName: number; f: (this: { y: number; }, x: number) => number; }'. + + let c = new C(); + c.explicitC(); // not enough arguments + ~~~~~~~~~~~~~ +!!! error TS2346: Supplied parameters do not match any signature of call target. + c.explicitC('wrong type'); + ~~~~~~~~~~~~ +!!! error TS2345: Argument of type 'string' is not assignable to parameter of type 'number'. + c.explicitC(13, 'too many arguments'); + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS2346: Supplied parameters do not match any signature of call target. + c.explicitThis(); // not enough arguments + ~~~~~~~~~~~~~~~~ +!!! error TS2346: Supplied parameters do not match any signature of call target. + c.explicitThis('wrong type 2'); + ~~~~~~~~~~~~~~ +!!! error TS2345: Argument of type 'string' is not assignable to parameter of type 'number'. + c.explicitThis(14, 'too many arguments 2'); + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS2346: Supplied parameters do not match any signature of call target. + c.implicitThis(); // not enough arguments + ~~~~~~~~~~~~~~~~ +!!! error TS2346: Supplied parameters do not match any signature of call target. + c.implicitThis('wrong type 2'); + ~~~~~~~~~~~~~~ +!!! error TS2345: Argument of type 'string' is not assignable to parameter of type 'number'. + c.implicitThis(14, 'too many arguments 2'); + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS2346: Supplied parameters do not match any signature of call target. + c.explicitProperty(); // not enough arguments + ~~~~~~~~~~~~~~~~~~~~ +!!! error TS2346: Supplied parameters do not match any signature of call target. + c.explicitProperty('wrong type 3'); + ~~~~~~~~~~~~~~ +!!! error TS2345: Argument of type 'string' is not assignable to parameter of type 'number'. + c.explicitProperty(15, 'too many arguments 3'); + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS2346: Supplied parameters do not match any signature of call target. + + // oops, this triggers contextual typing, which needs to be updated to understand that =>'s `this` is void. + let specifiedToVoid: (this: void, x: number) => number = explicitStructural; + ~~~~~~~~~~~~~~~ +!!! error TS2322: Type '(this: { y: number; }, x: number) => number' is not assignable to type '(this: void, x: number) => number'. +!!! error TS2322: The 'this' types of each signature are incompatible. +!!! error TS2322: Type 'void' is not assignable to type '{ y: number; }'. + + let reconstructed: { + n: number, + explicitThis(this: C, m: number): number, // note: this: this is not allowed in an object literal type. + explicitC(this: C, m: number): number, + explicitProperty: (this: {n : number}, m: number) => number, + explicitVoid(this: void, m: number): number, + } = { + n: 12, + explicitThis: c.explicitThis, + explicitC: c.explicitC, + explicitProperty: c.explicitProperty, + explicitVoid: c.explicitVoid + };; + + // lambdas have this: void for assignability purposes (and this unbound (free) for body checking) + let d = new D(); + let explicitXProperty: (this: { x: number }, m: number) => number; + + // from differing object types + c.explicitC = function(this: D, m: number) { return this.x + m }; + ~~~~~~~~~~~ +!!! error TS2322: Type '(this: D, m: number) => number' is not assignable to type '(this: C, m: number) => number'. +!!! error TS2322: The 'this' types of each signature are incompatible. +!!! error TS2322: Type 'C' is not assignable to type 'D'. +!!! error TS2322: Property 'x' is missing in type 'C'. + c.explicitProperty = explicitXProperty; + ~~~~~~~~~~~~~~~~~~ +!!! error TS2322: Type '(this: { x: number; }, m: number) => number' is not assignable to type '(this: { n: number; }, m: number) => number'. +!!! error TS2322: The 'this' types of each signature are incompatible. +!!! error TS2322: Type '{ n: number; }' is not assignable to type '{ x: number; }'. +!!! error TS2322: Property 'x' is missing in type '{ n: number; }'. + + c.explicitC = d.explicitD; + ~~~~~~~~~~~ +!!! error TS2322: Type '(this: D, m: number) => number' is not assignable to type '(this: C, m: number) => number'. +!!! error TS2322: The 'this' types of each signature are incompatible. +!!! error TS2322: Type 'C' is not assignable to type 'D'. + c.explicitC = d.explicitThis; + ~~~~~~~~~~~ +!!! error TS2322: Type '(this: D, m: number) => number' is not assignable to type '(this: C, m: number) => number'. +!!! error TS2322: The 'this' types of each signature are incompatible. +!!! error TS2322: Type 'C' is not assignable to type 'D'. + c.explicitThis = d.explicitD; + ~~~~~~~~~~~~~~ +!!! error TS2322: Type '(this: D, m: number) => number' is not assignable to type '(this: C, m: number) => number'. +!!! error TS2322: The 'this' types of each signature are incompatible. +!!! error TS2322: Type 'C' is not assignable to type 'D'. + c.explicitThis = d.explicitThis; + ~~~~~~~~~~~~~~ +!!! error TS2322: Type '(this: D, m: number) => number' is not assignable to type '(this: C, m: number) => number'. +!!! error TS2322: The 'this' types of each signature are incompatible. +!!! error TS2322: Type 'C' is not assignable to type 'D'. + c.explicitProperty = d.explicitD; + ~~~~~~~~~~~~~~~~~~ +!!! error TS2322: Type '(this: D, m: number) => number' is not assignable to type '(this: { n: number; }, m: number) => number'. +!!! error TS2322: The 'this' types of each signature are incompatible. +!!! error TS2322: Type '{ n: number; }' is not assignable to type 'D'. +!!! error TS2322: Property 'x' is missing in type '{ n: number; }'. + c.explicitThis = d.explicitThis; + ~~~~~~~~~~~~~~ +!!! error TS2322: Type '(this: D, m: number) => number' is not assignable to type '(this: C, m: number) => number'. + c.explicitVoid = d.explicitD; + ~~~~~~~~~~~~~~ +!!! error TS2322: Type '(this: D, m: number) => number' is not assignable to type '(this: void, m: number) => number'. +!!! error TS2322: The 'this' types of each signature are incompatible. +!!! error TS2322: Type 'void' is not assignable to type 'D'. + c.explicitVoid = d.explicitThis; + ~~~~~~~~~~~~~~ +!!! error TS2322: Type '(this: D, m: number) => number' is not assignable to type '(this: void, m: number) => number'. +!!! error TS2322: The 'this' types of each signature are incompatible. +!!! error TS2322: Type 'void' is not assignable to type 'D'. + + /// class-based polymorphic assignability (with inheritance!) /// + + class Base1 { + x: number + public polymorphic(this: this): number { return this.x; } + explicit(this: Base1): number { return this.x; } + static explicitStatic(this: typeof Base1): number { return this.x; } + ~ +!!! error TS2339: Property 'x' does not exist on type 'typeof Base1'. + } + class Derived1 extends Base1 { + y: number + } + class Base2 { + y: number + polymorphic(this: this): number { return this.y; } + explicit(this: Base1): number { return this.x; } + } + class Derived2 extends Base2 { + x: number + } + + + let b1 = new Base1(); + let d1 = new Derived1(); + let b2 = new Base2(); + let d2 = new Derived2(); + + b1.polymorphic = b2.polymorphic // error, 'this.y' not in Base1: { x } + ~~~~~~~~~~~~~~ +!!! error TS2322: Type '(this: Base2) => number' is not assignable to type '(this: Base1) => number'. +!!! error TS2322: The 'this' types of each signature are incompatible. +!!! error TS2322: Type 'Base1' is not assignable to type 'Base2'. +!!! error TS2322: Property 'y' is missing in type 'Base1'. + b1.explicit = b2.polymorphic // error, 'y' not in Base1: { x } + ~~~~~~~~~~~ +!!! error TS2322: Type '(this: Base2) => number' is not assignable to type '(this: Base1) => number'. +!!! error TS2322: The 'this' types of each signature are incompatible. +!!! error TS2322: Type 'Base1' is not assignable to type 'Base2'. + + d1.explicit = b2.polymorphic // error, 'y' not in Base1: { x } + ~~~~~~~~~~~ +!!! error TS2322: Type '(this: Base2) => number' is not assignable to type '(this: Base1) => number'. + + ////// use this-type for construction with new //// + function VoidThis(this: void) { + + } + let voidThis = new VoidThis(); + ~~~~~~~~~~~~~~ +!!! error TS2679: A function that is called with the 'new' keyword cannot have a 'this' type that is 'void'. + + ///// syntax-ish errors ///// + class ThisConstructor { + constructor(this: ThisConstructor, private n: number) { + ~~~~~~~~~~~~~~~~~~~~~ +!!! error TS2681: A constructor cannot have a 'this' parameter. + } + set p(this: void) { + ~~~~~~~~~~ +!!! error TS2682: A setter cannot have a 'this' parameter. + } + } + interface ThisConstructorInterface { + new(this: ThisConstructor, n: number); + ~~~~~~~~~~~~~~~~~~~~~ +!!! error TS2681: A constructor cannot have a 'this' parameter. + } + var thisConstructorType: new (this: number) => number; + ~~~~~~~~~~~~ +!!! error TS2681: A constructor cannot have a 'this' parameter. + function notFirst(a: number, this: C): number { return this.n; } + ~~~~~~~ +!!! error TS2680: A 'this' parameter must be the first parameter. + + ///// parse errors ///// + function modifiers(async this: C): number { return this.n; } + ~~~~ +!!! error TS1003: Identifier expected. + ~ +!!! error TS1005: ',' expected. + function restParam(...this: C): number { return this.n; } + ~~~~~~~ +!!! error TS2370: A rest parameter must be of an array type. + ~~~~ +!!! error TS1003: Identifier expected. + ~ +!!! error TS1005: ',' expected. + function optional(this?: C): number { return this.n; } + ~ +!!! error TS1005: ',' expected. + ~ +!!! error TS1138: Parameter declaration expected. + function decorated(@deco() this: C): number { return this.n; } + ~~~~ +!!! error TS1003: Identifier expected. + ~ +!!! error TS1005: ',' expected. + function initializer(this: C = new C()): number { return this.n; } + ~ +!!! error TS1005: ',' expected. + ~~~ +!!! error TS1138: Parameter declaration expected. + ~ +!!! error TS1005: ';' expected. + ~ +!!! error TS1128: Declaration or statement expected. + ~~~~~~ +!!! error TS2304: Cannot find name 'number'. + ~ +!!! error TS1005: ';' expected. + + // can't name parameters 'this' in a lambda. + c.explicitProperty = (this, m) => m + this.n; + ~ +!!! error TS7027: Unreachable code detected. + ~ +!!! error TS2304: Cannot find name 'm'. + ~~ +!!! error TS1005: ';' expected. + ~ +!!! error TS2304: Cannot find name 'm'. + \ No newline at end of file diff --git a/tests/baselines/reference/thisTypeInFunctionsNegative.js b/tests/baselines/reference/thisTypeInFunctionsNegative.js new file mode 100644 index 00000000000..124a7c88013 --- /dev/null +++ b/tests/baselines/reference/thisTypeInFunctionsNegative.js @@ -0,0 +1,363 @@ +//// [thisTypeInFunctionsNegative.ts] +class C { + n: number; + explicitThis(this: this, m: number): number { + return this.n + m; + } + implicitThis(m: number): number { + return this.n + m; + } + explicitC(this: C, m: number): number { + return this.n + m; + } + explicitProperty(this: {n: number}, m: number): number { + return this.n + m; + } + explicitVoid(this: void, m: number): number { + return this.n + m; // 'n' doesn't exist on type 'void'. + } +} +class D { + x: number; + explicitThis(this: this, m: number): number { + return this.x + m; + } + explicitD(this: D, m: number): number { + return this.x + m; + } +} +interface I { + a: number; + explicitVoid1(this: void): number; + explicitVoid2(this: void): number; + explicitStructural(this: {a: number}): number; + explicitInterface(this: I): number; + explicitThis(this: this): number; // TODO: Allow `this` types for interfaces +} +let impl: I = { + a: 12, + explicitVoid1() { + return this.a; // error, no 'a' in 'void' + }, + explicitVoid2: () => this.a, // ok, `this:any` because it refers to an outer object + explicitStructural: () => 12, + explicitInterface: () => 12, + explicitThis() { + return this.a; + }, +} +let implExplicitStructural = impl.explicitStructural; +implExplicitStructural(); // error, no 'a' in 'void' +let implExplicitInterface = impl.explicitInterface; +implExplicitInterface(); // error, no 'a' in 'void' +function explicitStructural(this: { y: number }, x: number): number { + return x + this.y; +} +function propertyName(this: { y: number }, x: number): number { + return x + this.notFound; +} +function voidThisSpecified(this: void, x: number): number { + return x + this.notSpecified; +} +let ok: {y: number, f: (this: { y: number }, x: number) => number} = { y: 12, explicitStructural }; +let wrongPropertyType: {y: string, f: (this: { y: number }, x: number) => number} = { y: 'foo', explicitStructural }; +let wrongPropertyName: {wrongName: number, f: (this: { y: number }, x: number) => number} = { wrongName: 12, explicitStructural }; + +ok.f(); // not enough arguments +ok.f('wrong type'); +ok.f(13, 'too many arguments'); +wrongPropertyType.f(13); +wrongPropertyName.f(13); + +let c = new C(); +c.explicitC(); // not enough arguments +c.explicitC('wrong type'); +c.explicitC(13, 'too many arguments'); +c.explicitThis(); // not enough arguments +c.explicitThis('wrong type 2'); +c.explicitThis(14, 'too many arguments 2'); +c.implicitThis(); // not enough arguments +c.implicitThis('wrong type 2'); +c.implicitThis(14, 'too many arguments 2'); +c.explicitProperty(); // not enough arguments +c.explicitProperty('wrong type 3'); +c.explicitProperty(15, 'too many arguments 3'); + +// oops, this triggers contextual typing, which needs to be updated to understand that =>'s `this` is void. +let specifiedToVoid: (this: void, x: number) => number = explicitStructural; + +let reconstructed: { + n: number, + explicitThis(this: C, m: number): number, // note: this: this is not allowed in an object literal type. + explicitC(this: C, m: number): number, + explicitProperty: (this: {n : number}, m: number) => number, + explicitVoid(this: void, m: number): number, +} = { + n: 12, + explicitThis: c.explicitThis, + explicitC: c.explicitC, + explicitProperty: c.explicitProperty, + explicitVoid: c.explicitVoid +};; + +// lambdas have this: void for assignability purposes (and this unbound (free) for body checking) +let d = new D(); +let explicitXProperty: (this: { x: number }, m: number) => number; + +// from differing object types +c.explicitC = function(this: D, m: number) { return this.x + m }; +c.explicitProperty = explicitXProperty; + +c.explicitC = d.explicitD; +c.explicitC = d.explicitThis; +c.explicitThis = d.explicitD; +c.explicitThis = d.explicitThis; +c.explicitProperty = d.explicitD; +c.explicitThis = d.explicitThis; +c.explicitVoid = d.explicitD; +c.explicitVoid = d.explicitThis; + +/// class-based polymorphic assignability (with inheritance!) /// + +class Base1 { + x: number + public polymorphic(this: this): number { return this.x; } + explicit(this: Base1): number { return this.x; } + static explicitStatic(this: typeof Base1): number { return this.x; } +} +class Derived1 extends Base1 { + y: number +} +class Base2 { + y: number + polymorphic(this: this): number { return this.y; } + explicit(this: Base1): number { return this.x; } +} +class Derived2 extends Base2 { + x: number +} + + +let b1 = new Base1(); +let d1 = new Derived1(); +let b2 = new Base2(); +let d2 = new Derived2(); + +b1.polymorphic = b2.polymorphic // error, 'this.y' not in Base1: { x } +b1.explicit = b2.polymorphic // error, 'y' not in Base1: { x } + +d1.explicit = b2.polymorphic // error, 'y' not in Base1: { x } + +////// use this-type for construction with new //// +function VoidThis(this: void) { + +} +let voidThis = new VoidThis(); + +///// syntax-ish errors ///// +class ThisConstructor { + constructor(this: ThisConstructor, private n: number) { + } + set p(this: void) { + } +} +interface ThisConstructorInterface { + new(this: ThisConstructor, n: number); +} +var thisConstructorType: new (this: number) => number; +function notFirst(a: number, this: C): number { return this.n; } + +///// parse errors ///// +function modifiers(async this: C): number { return this.n; } +function restParam(...this: C): number { return this.n; } +function optional(this?: C): number { return this.n; } +function decorated(@deco() this: C): number { return this.n; } +function initializer(this: C = new C()): number { return this.n; } + +// can't name parameters 'this' in a lambda. +c.explicitProperty = (this, m) => m + this.n; + + +//// [thisTypeInFunctionsNegative.js] +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +var _this = this; +var C = (function () { + function C() { + } + C.prototype.explicitThis = function (m) { + return this.n + m; + }; + C.prototype.implicitThis = function (m) { + return this.n + m; + }; + C.prototype.explicitC = function (m) { + return this.n + m; + }; + C.prototype.explicitProperty = function (m) { + return this.n + m; + }; + C.prototype.explicitVoid = function (m) { + return this.n + m; // 'n' doesn't exist on type 'void'. + }; + return C; +}()); +var D = (function () { + function D() { + } + D.prototype.explicitThis = function (m) { + return this.x + m; + }; + D.prototype.explicitD = function (m) { + return this.x + m; + }; + return D; +}()); +var impl = { + a: 12, + explicitVoid1: function () { + return this.a; // error, no 'a' in 'void' + }, + explicitVoid2: function () { return _this.a; }, + explicitStructural: function () { return 12; }, + explicitInterface: function () { return 12; }, + explicitThis: function () { + return this.a; + } +}; +var implExplicitStructural = impl.explicitStructural; +implExplicitStructural(); // error, no 'a' in 'void' +var implExplicitInterface = impl.explicitInterface; +implExplicitInterface(); // error, no 'a' in 'void' +function explicitStructural(x) { + return x + this.y; +} +function propertyName(x) { + return x + this.notFound; +} +function voidThisSpecified(x) { + return x + this.notSpecified; +} +var ok = { y: 12, explicitStructural: explicitStructural }; +var wrongPropertyType = { y: 'foo', explicitStructural: explicitStructural }; +var wrongPropertyName = { wrongName: 12, explicitStructural: explicitStructural }; +ok.f(); // not enough arguments +ok.f('wrong type'); +ok.f(13, 'too many arguments'); +wrongPropertyType.f(13); +wrongPropertyName.f(13); +var c = new C(); +c.explicitC(); // not enough arguments +c.explicitC('wrong type'); +c.explicitC(13, 'too many arguments'); +c.explicitThis(); // not enough arguments +c.explicitThis('wrong type 2'); +c.explicitThis(14, 'too many arguments 2'); +c.implicitThis(); // not enough arguments +c.implicitThis('wrong type 2'); +c.implicitThis(14, 'too many arguments 2'); +c.explicitProperty(); // not enough arguments +c.explicitProperty('wrong type 3'); +c.explicitProperty(15, 'too many arguments 3'); +// oops, this triggers contextual typing, which needs to be updated to understand that =>'s `this` is void. +var specifiedToVoid = explicitStructural; +var reconstructed = { + n: 12, + explicitThis: c.explicitThis, + explicitC: c.explicitC, + explicitProperty: c.explicitProperty, + explicitVoid: c.explicitVoid +}; +; +// lambdas have this: void for assignability purposes (and this unbound (free) for body checking) +var d = new D(); +var explicitXProperty; +// from differing object types +c.explicitC = function (m) { return this.x + m; }; +c.explicitProperty = explicitXProperty; +c.explicitC = d.explicitD; +c.explicitC = d.explicitThis; +c.explicitThis = d.explicitD; +c.explicitThis = d.explicitThis; +c.explicitProperty = d.explicitD; +c.explicitThis = d.explicitThis; +c.explicitVoid = d.explicitD; +c.explicitVoid = d.explicitThis; +/// class-based polymorphic assignability (with inheritance!) /// +var Base1 = (function () { + function Base1() { + } + Base1.prototype.polymorphic = function () { return this.x; }; + Base1.prototype.explicit = function () { return this.x; }; + Base1.explicitStatic = function () { return this.x; }; + return Base1; +}()); +var Derived1 = (function (_super) { + __extends(Derived1, _super); + function Derived1() { + _super.apply(this, arguments); + } + return Derived1; +}(Base1)); +var Base2 = (function () { + function Base2() { + } + Base2.prototype.polymorphic = function () { return this.y; }; + Base2.prototype.explicit = function () { return this.x; }; + return Base2; +}()); +var Derived2 = (function (_super) { + __extends(Derived2, _super); + function Derived2() { + _super.apply(this, arguments); + } + return Derived2; +}(Base2)); +var b1 = new Base1(); +var d1 = new Derived1(); +var b2 = new Base2(); +var d2 = new Derived2(); +b1.polymorphic = b2.polymorphic; // error, 'this.y' not in Base1: { x } +b1.explicit = b2.polymorphic; // error, 'y' not in Base1: { x } +d1.explicit = b2.polymorphic; // error, 'y' not in Base1: { x } +////// use this-type for construction with new //// +function VoidThis() { +} +var voidThis = new VoidThis(); +///// syntax-ish errors ///// +var ThisConstructor = (function () { + function ThisConstructor(n) { + this.n = n; + } + Object.defineProperty(ThisConstructor.prototype, "p", { + set: function () { + }, + enumerable: true, + configurable: true + }); + return ThisConstructor; +}()); +var thisConstructorType; +function notFirst(a, this) { return this.n; } +///// parse errors ///// +function modifiers(, C) { + if ( === void 0) { = this; } + return this.n; +} +function restParam(, C) { return this.n; } +function optional(C) { return this.n; } +function decorated(, C) { + if ( === void 0) { = this; } + return this.n; +} +new C(); +number; +{ + return this.n; +} +// can't name parameters 'this' in a lambda. +c.explicitProperty = (this, m); +m + this.n; diff --git a/tests/baselines/reference/thisTypeInInterfaces.symbols b/tests/baselines/reference/thisTypeInInterfaces.symbols index 4ab896ae6f6..286447a7083 100644 --- a/tests/baselines/reference/thisTypeInInterfaces.symbols +++ b/tests/baselines/reference/thisTypeInInterfaces.symbols @@ -3,10 +3,10 @@ interface I1 { >I1 : Symbol(I1, Decl(thisTypeInInterfaces.ts, 0, 0)) x: this; ->x : Symbol(x, Decl(thisTypeInInterfaces.ts, 0, 14)) +>x : Symbol(I1.x, Decl(thisTypeInInterfaces.ts, 0, 14)) f(x: this): this; ->f : Symbol(f, Decl(thisTypeInInterfaces.ts, 1, 12)) +>f : Symbol(I1.f, Decl(thisTypeInInterfaces.ts, 1, 12)) >x : Symbol(x, Decl(thisTypeInInterfaces.ts, 2, 6)) } @@ -28,51 +28,51 @@ interface Foo { >T : Symbol(T, Decl(thisTypeInInterfaces.ts, 11, 14)) x: T; ->x : Symbol(x, Decl(thisTypeInInterfaces.ts, 11, 18)) +>x : Symbol(Foo.x, Decl(thisTypeInInterfaces.ts, 11, 18)) >T : Symbol(T, Decl(thisTypeInInterfaces.ts, 11, 14)) y: this; ->y : Symbol(y, Decl(thisTypeInInterfaces.ts, 12, 9)) +>y : Symbol(Foo.y, Decl(thisTypeInInterfaces.ts, 12, 9)) } interface I3 { >I3 : Symbol(I3, Decl(thisTypeInInterfaces.ts, 14, 1)) a: this[]; ->a : Symbol(a, Decl(thisTypeInInterfaces.ts, 16, 14)) +>a : Symbol(I3.a, Decl(thisTypeInInterfaces.ts, 16, 14)) b: [this, this]; ->b : Symbol(b, Decl(thisTypeInInterfaces.ts, 17, 14)) +>b : Symbol(I3.b, Decl(thisTypeInInterfaces.ts, 17, 14)) c: this | Date; ->c : Symbol(c, Decl(thisTypeInInterfaces.ts, 18, 20)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>c : Symbol(I3.c, Decl(thisTypeInInterfaces.ts, 18, 20)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) d: this & Date; ->d : Symbol(d, Decl(thisTypeInInterfaces.ts, 19, 19)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>d : Symbol(I3.d, Decl(thisTypeInInterfaces.ts, 19, 19)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) e: (((this))); ->e : Symbol(e, Decl(thisTypeInInterfaces.ts, 20, 19)) +>e : Symbol(I3.e, Decl(thisTypeInInterfaces.ts, 20, 19)) f: (x: this) => this; ->f : Symbol(f, Decl(thisTypeInInterfaces.ts, 21, 18)) +>f : Symbol(I3.f, Decl(thisTypeInInterfaces.ts, 21, 18)) >x : Symbol(x, Decl(thisTypeInInterfaces.ts, 22, 8)) g: new (x: this) => this; ->g : Symbol(g, Decl(thisTypeInInterfaces.ts, 22, 25)) +>g : Symbol(I3.g, Decl(thisTypeInInterfaces.ts, 22, 25)) >x : Symbol(x, Decl(thisTypeInInterfaces.ts, 23, 12)) h: Foo; ->h : Symbol(h, Decl(thisTypeInInterfaces.ts, 23, 29)) +>h : Symbol(I3.h, Decl(thisTypeInInterfaces.ts, 23, 29)) >Foo : Symbol(Foo, Decl(thisTypeInInterfaces.ts, 9, 1)) i: Foo this)>; ->i : Symbol(i, Decl(thisTypeInInterfaces.ts, 24, 17)) +>i : Symbol(I3.i, Decl(thisTypeInInterfaces.ts, 24, 17)) >Foo : Symbol(Foo, Decl(thisTypeInInterfaces.ts, 9, 1)) j: (x: any) => x is this; ->j : Symbol(j, Decl(thisTypeInInterfaces.ts, 25, 32)) +>j : Symbol(I3.j, Decl(thisTypeInInterfaces.ts, 25, 32)) >x : Symbol(x, Decl(thisTypeInInterfaces.ts, 26, 8)) >x : Symbol(x, Decl(thisTypeInInterfaces.ts, 26, 8)) } diff --git a/tests/baselines/reference/thisTypeInObjectLiterals.js b/tests/baselines/reference/thisTypeInObjectLiterals.js new file mode 100644 index 00000000000..342c9d58c84 --- /dev/null +++ b/tests/baselines/reference/thisTypeInObjectLiterals.js @@ -0,0 +1,63 @@ +//// [thisTypeInObjectLiterals.ts] +let o = { + d: "bar", + m() { + return this.d.length; + }, + f: function() { + return this.d.length; + } +} + +let mutuallyRecursive = { + a: 100, + start() { + return this.passthrough(this.a); + }, + passthrough(n: number) { + return this.sub1(n); + }, + sub1(n: number): number { + if (n > 0) { + return this.passthrough(n - 1); + } + return n; + } +} +var i: number = mutuallyRecursive.start(); +interface I { + a: number; + start(): number; + passthrough(n: number): number; + sub1(n: number): number; +} +var impl: I = mutuallyRecursive; + + +//// [thisTypeInObjectLiterals.js] +var o = { + d: "bar", + m: function () { + return this.d.length; + }, + f: function () { + return this.d.length; + } +}; +var mutuallyRecursive = { + a: 100, + start: function () { + return this.passthrough(this.a); + }, + passthrough: function (n) { + return this.sub1(n); + }, + sub1: function (n) { + if (n > 0) { + return this.passthrough(n - 1); + } + return n; + } +}; +var i = mutuallyRecursive.start(); +var impl = mutuallyRecursive; diff --git a/tests/baselines/reference/thisTypeInObjectLiterals.symbols b/tests/baselines/reference/thisTypeInObjectLiterals.symbols new file mode 100644 index 00000000000..af4badf1c0f --- /dev/null +++ b/tests/baselines/reference/thisTypeInObjectLiterals.symbols @@ -0,0 +1,80 @@ +=== tests/cases/conformance/types/thisType/thisTypeInObjectLiterals.ts === +let o = { +>o : Symbol(o, Decl(thisTypeInObjectLiterals.ts, 0, 3)) + + d: "bar", +>d : Symbol(d, Decl(thisTypeInObjectLiterals.ts, 0, 9)) + + m() { +>m : Symbol(m, Decl(thisTypeInObjectLiterals.ts, 1, 13)) + + return this.d.length; + }, + f: function() { +>f : Symbol(f, Decl(thisTypeInObjectLiterals.ts, 4, 6)) + + return this.d.length; + } +} + +let mutuallyRecursive = { +>mutuallyRecursive : Symbol(mutuallyRecursive, Decl(thisTypeInObjectLiterals.ts, 10, 3)) + + a: 100, +>a : Symbol(a, Decl(thisTypeInObjectLiterals.ts, 10, 25)) + + start() { +>start : Symbol(start, Decl(thisTypeInObjectLiterals.ts, 11, 11)) + + return this.passthrough(this.a); + }, + passthrough(n: number) { +>passthrough : Symbol(passthrough, Decl(thisTypeInObjectLiterals.ts, 14, 6)) +>n : Symbol(n, Decl(thisTypeInObjectLiterals.ts, 15, 16)) + + return this.sub1(n); +>n : Symbol(n, Decl(thisTypeInObjectLiterals.ts, 15, 16)) + + }, + sub1(n: number): number { +>sub1 : Symbol(sub1, Decl(thisTypeInObjectLiterals.ts, 17, 6)) +>n : Symbol(n, Decl(thisTypeInObjectLiterals.ts, 18, 9)) + + if (n > 0) { +>n : Symbol(n, Decl(thisTypeInObjectLiterals.ts, 18, 9)) + + return this.passthrough(n - 1); +>n : Symbol(n, Decl(thisTypeInObjectLiterals.ts, 18, 9)) + } + return n; +>n : Symbol(n, Decl(thisTypeInObjectLiterals.ts, 18, 9)) + } +} +var i: number = mutuallyRecursive.start(); +>i : Symbol(i, Decl(thisTypeInObjectLiterals.ts, 25, 3)) +>mutuallyRecursive.start : Symbol(start, Decl(thisTypeInObjectLiterals.ts, 11, 11)) +>mutuallyRecursive : Symbol(mutuallyRecursive, Decl(thisTypeInObjectLiterals.ts, 10, 3)) +>start : Symbol(start, Decl(thisTypeInObjectLiterals.ts, 11, 11)) + +interface I { +>I : Symbol(I, Decl(thisTypeInObjectLiterals.ts, 25, 42)) + + a: number; +>a : Symbol(I.a, Decl(thisTypeInObjectLiterals.ts, 26, 13)) + + start(): number; +>start : Symbol(I.start, Decl(thisTypeInObjectLiterals.ts, 27, 14)) + + passthrough(n: number): number; +>passthrough : Symbol(I.passthrough, Decl(thisTypeInObjectLiterals.ts, 28, 20)) +>n : Symbol(n, Decl(thisTypeInObjectLiterals.ts, 29, 16)) + + sub1(n: number): number; +>sub1 : Symbol(I.sub1, Decl(thisTypeInObjectLiterals.ts, 29, 35)) +>n : Symbol(n, Decl(thisTypeInObjectLiterals.ts, 30, 9)) +} +var impl: I = mutuallyRecursive; +>impl : Symbol(impl, Decl(thisTypeInObjectLiterals.ts, 32, 3)) +>I : Symbol(I, Decl(thisTypeInObjectLiterals.ts, 25, 42)) +>mutuallyRecursive : Symbol(mutuallyRecursive, Decl(thisTypeInObjectLiterals.ts, 10, 3)) + diff --git a/tests/baselines/reference/thisTypeInObjectLiterals.types b/tests/baselines/reference/thisTypeInObjectLiterals.types new file mode 100644 index 00000000000..91d95d5f0a8 --- /dev/null +++ b/tests/baselines/reference/thisTypeInObjectLiterals.types @@ -0,0 +1,117 @@ +=== tests/cases/conformance/types/thisType/thisTypeInObjectLiterals.ts === +let o = { +>o : { d: string; m(): any; f: () => any; } +>{ d: "bar", m() { return this.d.length; }, f: function() { return this.d.length; }} : { d: string; m(): any; f: () => any; } + + d: "bar", +>d : string +>"bar" : string + + m() { +>m : () => any + + return this.d.length; +>this.d.length : any +>this.d : any +>this : any +>d : any +>length : any + + }, + f: function() { +>f : () => any +>function() { return this.d.length; } : () => any + + return this.d.length; +>this.d.length : any +>this.d : any +>this : any +>d : any +>length : any + } +} + +let mutuallyRecursive = { +>mutuallyRecursive : { a: number; start(): any; passthrough(n: number): any; sub1(n: number): number; } +>{ a: 100, start() { return this.passthrough(this.a); }, passthrough(n: number) { return this.sub1(n); }, sub1(n: number): number { if (n > 0) { return this.passthrough(n - 1); } return n; }} : { a: number; start(): any; passthrough(n: number): any; sub1(n: number): number; } + + a: 100, +>a : number +>100 : number + + start() { +>start : () => any + + return this.passthrough(this.a); +>this.passthrough(this.a) : any +>this.passthrough : any +>this : any +>passthrough : any +>this.a : any +>this : any +>a : any + + }, + passthrough(n: number) { +>passthrough : (n: number) => any +>n : number + + return this.sub1(n); +>this.sub1(n) : any +>this.sub1 : any +>this : any +>sub1 : any +>n : number + + }, + sub1(n: number): number { +>sub1 : (n: number) => number +>n : number + + if (n > 0) { +>n > 0 : boolean +>n : number +>0 : number + + return this.passthrough(n - 1); +>this.passthrough(n - 1) : any +>this.passthrough : any +>this : any +>passthrough : any +>n - 1 : number +>n : number +>1 : number + } + return n; +>n : number + } +} +var i: number = mutuallyRecursive.start(); +>i : number +>mutuallyRecursive.start() : any +>mutuallyRecursive.start : () => any +>mutuallyRecursive : { a: number; start(): any; passthrough(n: number): any; sub1(n: number): number; } +>start : () => any + +interface I { +>I : I + + a: number; +>a : number + + start(): number; +>start : () => number + + passthrough(n: number): number; +>passthrough : (n: number) => number +>n : number + + sub1(n: number): number; +>sub1 : (n: number) => number +>n : number +} +var impl: I = mutuallyRecursive; +>impl : I +>I : I +>mutuallyRecursive : { a: number; start(): any; passthrough(n: number): any; sub1(n: number): number; } + diff --git a/tests/baselines/reference/thisTypeInTuples.symbols b/tests/baselines/reference/thisTypeInTuples.symbols index 256f182dd69..44f8660f691 100644 --- a/tests/baselines/reference/thisTypeInTuples.symbols +++ b/tests/baselines/reference/thisTypeInTuples.symbols @@ -4,7 +4,7 @@ interface Array { >T : Symbol(T, Decl(lib.d.ts, --, --), Decl(thisTypeInTuples.ts, 0, 16)) slice(): this; ->slice : Symbol(slice, Decl(lib.d.ts, --, --), Decl(thisTypeInTuples.ts, 0, 20)) +>slice : Symbol(Array.slice, Decl(lib.d.ts, --, --), Decl(thisTypeInTuples.ts, 0, 20)) } let t: [number, string] = [42, "hello"]; diff --git a/tests/baselines/reference/throwInEnclosingStatements.symbols b/tests/baselines/reference/throwInEnclosingStatements.symbols index 42053c60efa..63ed9dde578 100644 --- a/tests/baselines/reference/throwInEnclosingStatements.symbols +++ b/tests/baselines/reference/throwInEnclosingStatements.symbols @@ -61,16 +61,16 @@ class C { >T : Symbol(T, Decl(throwInEnclosingStatements.ts, 29, 8)) private value: T; ->value : Symbol(value, Decl(throwInEnclosingStatements.ts, 29, 12)) +>value : Symbol(C.value, Decl(throwInEnclosingStatements.ts, 29, 12)) >T : Symbol(T, Decl(throwInEnclosingStatements.ts, 29, 8)) biz() { ->biz : Symbol(biz, Decl(throwInEnclosingStatements.ts, 30, 21)) +>biz : Symbol(C.biz, Decl(throwInEnclosingStatements.ts, 30, 21)) throw this.value; ->this.value : Symbol(value, Decl(throwInEnclosingStatements.ts, 29, 12)) +>this.value : Symbol(C.value, Decl(throwInEnclosingStatements.ts, 29, 12)) >this : Symbol(C, Decl(throwInEnclosingStatements.ts, 27, 26)) ->value : Symbol(value, Decl(throwInEnclosingStatements.ts, 29, 12)) +>value : Symbol(C.value, Decl(throwInEnclosingStatements.ts, 29, 12)) } constructor() { diff --git a/tests/baselines/reference/throwStatements.symbols b/tests/baselines/reference/throwStatements.symbols index adf9cb461cf..854fbcbe90b 100644 --- a/tests/baselines/reference/throwStatements.symbols +++ b/tests/baselines/reference/throwStatements.symbols @@ -6,7 +6,7 @@ interface I { >I : Symbol(I, Decl(throwStatements.ts, 0, 0)) id: number; ->id : Symbol(id, Decl(throwStatements.ts, 3, 13)) +>id : Symbol(I.id, Decl(throwStatements.ts, 3, 13)) } class C implements I { @@ -14,7 +14,7 @@ class C implements I { >I : Symbol(I, Decl(throwStatements.ts, 0, 0)) id: number; ->id : Symbol(id, Decl(throwStatements.ts, 7, 22)) +>id : Symbol(C.id, Decl(throwStatements.ts, 7, 22)) } class D{ @@ -22,16 +22,16 @@ class D{ >T : Symbol(T, Decl(throwStatements.ts, 11, 8)) source: T; ->source : Symbol(source, Decl(throwStatements.ts, 11, 11)) +>source : Symbol(D.source, Decl(throwStatements.ts, 11, 11)) >T : Symbol(T, Decl(throwStatements.ts, 11, 8)) recurse: D; ->recurse : Symbol(recurse, Decl(throwStatements.ts, 12, 14)) +>recurse : Symbol(D.recurse, Decl(throwStatements.ts, 12, 14)) >D : Symbol(D, Decl(throwStatements.ts, 9, 1)) >T : Symbol(T, Decl(throwStatements.ts, 11, 8)) wrapped: D> ->wrapped : Symbol(wrapped, Decl(throwStatements.ts, 13, 18)) +>wrapped : Symbol(D.wrapped, Decl(throwStatements.ts, 13, 18)) >D : Symbol(D, Decl(throwStatements.ts, 9, 1)) >D : Symbol(D, Decl(throwStatements.ts, 9, 1)) >T : Symbol(T, Decl(throwStatements.ts, 11, 8)) @@ -48,7 +48,7 @@ module M { >A : Symbol(A, Decl(throwStatements.ts, 19, 10)) name: string; ->name : Symbol(name, Decl(throwStatements.ts, 20, 20)) +>name : Symbol(A.name, Decl(throwStatements.ts, 20, 20)) } export function F2(x: number): string { return x.toString(); } @@ -73,7 +73,7 @@ throw aString; var aDate = new Date(12); >aDate : Symbol(aDate, Decl(throwStatements.ts, 31, 3)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) throw aDate; >aDate : Symbol(aDate, Decl(throwStatements.ts, 31, 3)) @@ -203,7 +203,7 @@ throw []; throw ['a', ['b']]; throw /[a-z]/; throw new Date(); ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) throw new C(); >C : Symbol(C, Decl(throwStatements.ts, 5, 1)) diff --git a/tests/baselines/reference/tooFewArgumentsInGenericFunctionTypedArgument.symbols b/tests/baselines/reference/tooFewArgumentsInGenericFunctionTypedArgument.symbols index 752e75d4901..9a6549577d2 100644 --- a/tests/baselines/reference/tooFewArgumentsInGenericFunctionTypedArgument.symbols +++ b/tests/baselines/reference/tooFewArgumentsInGenericFunctionTypedArgument.symbols @@ -5,17 +5,17 @@ interface Collection { >U : Symbol(U, Decl(tooFewArgumentsInGenericFunctionTypedArgument.ts, 0, 23)) length: number; ->length : Symbol(length, Decl(tooFewArgumentsInGenericFunctionTypedArgument.ts, 0, 28)) +>length : Symbol(Collection.length, Decl(tooFewArgumentsInGenericFunctionTypedArgument.ts, 0, 28)) add(x: T, y: U): void; ->add : Symbol(add, Decl(tooFewArgumentsInGenericFunctionTypedArgument.ts, 1, 19)) +>add : Symbol(Collection.add, Decl(tooFewArgumentsInGenericFunctionTypedArgument.ts, 1, 19)) >x : Symbol(x, Decl(tooFewArgumentsInGenericFunctionTypedArgument.ts, 2, 8)) >T : Symbol(T, Decl(tooFewArgumentsInGenericFunctionTypedArgument.ts, 0, 21)) >y : Symbol(y, Decl(tooFewArgumentsInGenericFunctionTypedArgument.ts, 2, 13)) >U : Symbol(U, Decl(tooFewArgumentsInGenericFunctionTypedArgument.ts, 0, 23)) remove(x: T, y: U): boolean; ->remove : Symbol(remove, Decl(tooFewArgumentsInGenericFunctionTypedArgument.ts, 2, 26)) +>remove : Symbol(Collection.remove, Decl(tooFewArgumentsInGenericFunctionTypedArgument.ts, 2, 26)) >x : Symbol(x, Decl(tooFewArgumentsInGenericFunctionTypedArgument.ts, 3, 11)) >T : Symbol(T, Decl(tooFewArgumentsInGenericFunctionTypedArgument.ts, 0, 21)) >y : Symbol(y, Decl(tooFewArgumentsInGenericFunctionTypedArgument.ts, 3, 16)) @@ -25,7 +25,7 @@ interface Combinators { >Combinators : Symbol(Combinators, Decl(tooFewArgumentsInGenericFunctionTypedArgument.ts, 4, 1)) map(c: Collection, f: (x: T, y: U) => V): Collection; ->map : Symbol(map, Decl(tooFewArgumentsInGenericFunctionTypedArgument.ts, 5, 23), Decl(tooFewArgumentsInGenericFunctionTypedArgument.ts, 6, 77)) +>map : Symbol(Combinators.map, Decl(tooFewArgumentsInGenericFunctionTypedArgument.ts, 5, 23), Decl(tooFewArgumentsInGenericFunctionTypedArgument.ts, 6, 77)) >T : Symbol(T, Decl(tooFewArgumentsInGenericFunctionTypedArgument.ts, 6, 8)) >U : Symbol(U, Decl(tooFewArgumentsInGenericFunctionTypedArgument.ts, 6, 10)) >V : Symbol(V, Decl(tooFewArgumentsInGenericFunctionTypedArgument.ts, 6, 13)) @@ -44,7 +44,7 @@ interface Combinators { >V : Symbol(V, Decl(tooFewArgumentsInGenericFunctionTypedArgument.ts, 6, 13)) map(c: Collection, f: (x: T, y: U) => any): Collection; ->map : Symbol(map, Decl(tooFewArgumentsInGenericFunctionTypedArgument.ts, 5, 23), Decl(tooFewArgumentsInGenericFunctionTypedArgument.ts, 6, 77)) +>map : Symbol(Combinators.map, Decl(tooFewArgumentsInGenericFunctionTypedArgument.ts, 5, 23), Decl(tooFewArgumentsInGenericFunctionTypedArgument.ts, 6, 77)) >T : Symbol(T, Decl(tooFewArgumentsInGenericFunctionTypedArgument.ts, 7, 8)) >U : Symbol(U, Decl(tooFewArgumentsInGenericFunctionTypedArgument.ts, 7, 10)) >c : Symbol(c, Decl(tooFewArgumentsInGenericFunctionTypedArgument.ts, 7, 14)) diff --git a/tests/baselines/reference/topLevel.symbols b/tests/baselines/reference/topLevel.symbols index ebca65a13cf..a98b51d2b87 100644 --- a/tests/baselines/reference/topLevel.symbols +++ b/tests/baselines/reference/topLevel.symbols @@ -3,10 +3,10 @@ interface IPoint { >IPoint : Symbol(IPoint, Decl(topLevel.ts, 0, 0)) x:number; ->x : Symbol(x, Decl(topLevel.ts, 0, 18)) +>x : Symbol(IPoint.x, Decl(topLevel.ts, 0, 18)) y:number; ->y : Symbol(y, Decl(topLevel.ts, 1, 13)) +>y : Symbol(IPoint.y, Decl(topLevel.ts, 1, 13)) } class Point implements IPoint { @@ -14,39 +14,39 @@ class Point implements IPoint { >IPoint : Symbol(IPoint, Decl(topLevel.ts, 0, 0)) constructor(public x,public y){} ->x : Symbol(x, Decl(topLevel.ts, 6, 16)) ->y : Symbol(y, Decl(topLevel.ts, 6, 25)) +>x : Symbol(Point.x, Decl(topLevel.ts, 6, 16)) +>y : Symbol(Point.y, Decl(topLevel.ts, 6, 25)) public move(xo:number,yo:number) { ->move : Symbol(move, Decl(topLevel.ts, 6, 36)) +>move : Symbol(Point.move, Decl(topLevel.ts, 6, 36)) >xo : Symbol(xo, Decl(topLevel.ts, 7, 16)) >yo : Symbol(yo, Decl(topLevel.ts, 7, 26)) this.x+=xo; ->this.x : Symbol(x, Decl(topLevel.ts, 6, 16)) +>this.x : Symbol(Point.x, Decl(topLevel.ts, 6, 16)) >this : Symbol(Point, Decl(topLevel.ts, 3, 1)) ->x : Symbol(x, Decl(topLevel.ts, 6, 16)) +>x : Symbol(Point.x, Decl(topLevel.ts, 6, 16)) >xo : Symbol(xo, Decl(topLevel.ts, 7, 16)) this.y+=yo; ->this.y : Symbol(y, Decl(topLevel.ts, 6, 25)) +>this.y : Symbol(Point.y, Decl(topLevel.ts, 6, 25)) >this : Symbol(Point, Decl(topLevel.ts, 3, 1)) ->y : Symbol(y, Decl(topLevel.ts, 6, 25)) +>y : Symbol(Point.y, Decl(topLevel.ts, 6, 25)) >yo : Symbol(yo, Decl(topLevel.ts, 7, 26)) return this; >this : Symbol(Point, Decl(topLevel.ts, 3, 1)) } public toString() { ->toString : Symbol(toString, Decl(topLevel.ts, 11, 5)) +>toString : Symbol(Point.toString, Decl(topLevel.ts, 11, 5)) return ("("+this.x+","+this.y+")"); ->this.x : Symbol(x, Decl(topLevel.ts, 6, 16)) +>this.x : Symbol(Point.x, Decl(topLevel.ts, 6, 16)) >this : Symbol(Point, Decl(topLevel.ts, 3, 1)) ->x : Symbol(x, Decl(topLevel.ts, 6, 16)) ->this.y : Symbol(y, Decl(topLevel.ts, 6, 25)) +>x : Symbol(Point.x, Decl(topLevel.ts, 6, 16)) +>this.y : Symbol(Point.y, Decl(topLevel.ts, 6, 25)) >this : Symbol(Point, Decl(topLevel.ts, 3, 1)) ->y : Symbol(y, Decl(topLevel.ts, 6, 25)) +>y : Symbol(Point.y, Decl(topLevel.ts, 6, 25)) } } diff --git a/tests/baselines/reference/transitiveTypeArgumentInference1.symbols b/tests/baselines/reference/transitiveTypeArgumentInference1.symbols index 625857e11be..912e0d94f35 100644 --- a/tests/baselines/reference/transitiveTypeArgumentInference1.symbols +++ b/tests/baselines/reference/transitiveTypeArgumentInference1.symbols @@ -5,7 +5,7 @@ interface I1 { >U : Symbol(U, Decl(transitiveTypeArgumentInference1.ts, 0, 15)) m(value: T): U; ->m : Symbol(m, Decl(transitiveTypeArgumentInference1.ts, 0, 20)) +>m : Symbol(I1.m, Decl(transitiveTypeArgumentInference1.ts, 0, 20)) >value : Symbol(value, Decl(transitiveTypeArgumentInference1.ts, 1, 3)) >T : Symbol(T, Decl(transitiveTypeArgumentInference1.ts, 0, 13)) >U : Symbol(U, Decl(transitiveTypeArgumentInference1.ts, 0, 15)) diff --git a/tests/baselines/reference/tsxAttributeResolution.symbols b/tests/baselines/reference/tsxAttributeResolution.symbols index a40be3861b3..bb0c5e7878f 100644 --- a/tests/baselines/reference/tsxAttributeResolution.symbols +++ b/tests/baselines/reference/tsxAttributeResolution.symbols @@ -7,7 +7,7 @@ declare namespace JSX { >IntrinsicElements : Symbol(IntrinsicElements, Decl(tsxAttributeResolution.tsx, 1, 23)) x: { y: number; z: string; }; ->x : Symbol(x, Decl(tsxAttributeResolution.tsx, 2, 30)) +>x : Symbol(IntrinsicElements.x, Decl(tsxAttributeResolution.tsx, 2, 30)) >y : Symbol(y, Decl(tsxAttributeResolution.tsx, 3, 6)) >z : Symbol(z, Decl(tsxAttributeResolution.tsx, 3, 17)) } diff --git a/tests/baselines/reference/tsxAttributeResolution13.js b/tests/baselines/reference/tsxAttributeResolution13.js new file mode 100644 index 00000000000..e6c942eb926 --- /dev/null +++ b/tests/baselines/reference/tsxAttributeResolution13.js @@ -0,0 +1,9 @@ +//// [test.tsx] + +function Test() { } + + + +//// [test.jsx] +function Test() { } +; diff --git a/tests/baselines/reference/tsxAttributeResolution13.symbols b/tests/baselines/reference/tsxAttributeResolution13.symbols new file mode 100644 index 00000000000..a913e50969c --- /dev/null +++ b/tests/baselines/reference/tsxAttributeResolution13.symbols @@ -0,0 +1,9 @@ +=== tests/cases/conformance/jsx/test.tsx === + +function Test() { } +>Test : Symbol(Test, Decl(test.tsx, 0, 0)) + + +>Test : Symbol(Test, Decl(test.tsx, 0, 0)) +>Test : Symbol(Test, Decl(test.tsx, 0, 0)) + diff --git a/tests/baselines/reference/tsxAttributeResolution13.types b/tests/baselines/reference/tsxAttributeResolution13.types new file mode 100644 index 00000000000..1a426d86e7d --- /dev/null +++ b/tests/baselines/reference/tsxAttributeResolution13.types @@ -0,0 +1,10 @@ +=== tests/cases/conformance/jsx/test.tsx === + +function Test() { } +>Test : () => void + + +> : any +>Test : () => void +>Test : () => void + diff --git a/tests/baselines/reference/tsxAttributeResolution8.symbols b/tests/baselines/reference/tsxAttributeResolution8.symbols index 58629c15b6f..354905faeec 100644 --- a/tests/baselines/reference/tsxAttributeResolution8.symbols +++ b/tests/baselines/reference/tsxAttributeResolution8.symbols @@ -9,7 +9,7 @@ declare module JSX { >IntrinsicElements : Symbol(IntrinsicElements, Decl(file.tsx, 1, 22)) test1: {x: string}; ->test1 : Symbol(test1, Decl(file.tsx, 2, 30)) +>test1 : Symbol(IntrinsicElements.test1, Decl(file.tsx, 2, 30)) >x : Symbol(x, Decl(file.tsx, 3, 10)) } } diff --git a/tests/baselines/reference/tsxElementResolution.symbols b/tests/baselines/reference/tsxElementResolution.symbols index 4cdd0c23cf1..729c3fc9f06 100644 --- a/tests/baselines/reference/tsxElementResolution.symbols +++ b/tests/baselines/reference/tsxElementResolution.symbols @@ -7,7 +7,7 @@ declare namespace JSX { >IntrinsicElements : Symbol(IntrinsicElements, Decl(tsxElementResolution.tsx, 1, 23)) foundFirst: { x: string }; ->foundFirst : Symbol(foundFirst, Decl(tsxElementResolution.tsx, 2, 30)) +>foundFirst : Symbol(IntrinsicElements.foundFirst, Decl(tsxElementResolution.tsx, 2, 30)) >x : Symbol(x, Decl(tsxElementResolution.tsx, 3, 15)) 'string_named'; @@ -36,7 +36,7 @@ var a = ; var b = ; >b : Symbol(b, Decl(tsxElementResolution.tsx, 18, 3)) ->string_named : Symbol(JSX.IntrinsicElements.'string_named', Decl(tsxElementResolution.tsx, 3, 28)) +>string_named : Symbol(JSX.IntrinsicElements['string_named'], Decl(tsxElementResolution.tsx, 3, 28)) // TODO: This should not be a parse error (should // parse a property name here, not identifier) @@ -47,5 +47,7 @@ var d = ; var e = ; >e : Symbol(e, Decl(tsxElementResolution.tsx, 23, 3)) +>Dotted.Name : Symbol(Dotted.Name, Decl(tsxElementResolution.tsx, 12, 15)) +>Dotted : Symbol(Dotted, Decl(tsxElementResolution.tsx, 10, 14)) >Name : Symbol(Dotted.Name, Decl(tsxElementResolution.tsx, 12, 15)) diff --git a/tests/baselines/reference/tsxElementResolution.types b/tests/baselines/reference/tsxElementResolution.types index 89600bbbc2f..a1c2abcef7c 100644 --- a/tests/baselines/reference/tsxElementResolution.types +++ b/tests/baselines/reference/tsxElementResolution.types @@ -51,6 +51,7 @@ var d = ; var e = ; >e : any > : any ->Dotted : any ->Name : any +>Dotted.Name : typeof Dotted.Name +>Dotted : typeof Dotted +>Name : typeof Dotted.Name diff --git a/tests/baselines/reference/tsxElementResolution13.symbols b/tests/baselines/reference/tsxElementResolution13.symbols index 4b6a5b4f4e7..9122f553a88 100644 --- a/tests/baselines/reference/tsxElementResolution13.symbols +++ b/tests/baselines/reference/tsxElementResolution13.symbols @@ -7,8 +7,8 @@ declare module JSX { interface ElementAttributesProperty { pr1: any; pr2: any; } >ElementAttributesProperty : Symbol(ElementAttributesProperty, Decl(file.tsx, 1, 22)) ->pr1 : Symbol(pr1, Decl(file.tsx, 2, 38)) ->pr2 : Symbol(pr2, Decl(file.tsx, 2, 48)) +>pr1 : Symbol(ElementAttributesProperty.pr1, Decl(file.tsx, 2, 38)) +>pr2 : Symbol(ElementAttributesProperty.pr2, Decl(file.tsx, 2, 48)) } interface Obj1 { diff --git a/tests/baselines/reference/tsxElementResolution17.symbols b/tests/baselines/reference/tsxElementResolution17.symbols index 0b4459552de..0225cc35d91 100644 --- a/tests/baselines/reference/tsxElementResolution17.symbols +++ b/tests/baselines/reference/tsxElementResolution17.symbols @@ -8,6 +8,8 @@ import s2 = require('elements2'); >s2 : Symbol(s2, Decl(consumer.tsx, 2, 33)) ; +>s1.MyElement : Symbol(s1.MyElement, Decl(file.tsx, 6, 28)) +>s1 : Symbol(s1, Decl(consumer.tsx, 0, 0)) >MyElement : Symbol(s1.MyElement, Decl(file.tsx, 6, 28)) === tests/cases/conformance/jsx/file.tsx === diff --git a/tests/baselines/reference/tsxElementResolution17.types b/tests/baselines/reference/tsxElementResolution17.types index e6396a9a60b..c68c19f58e7 100644 --- a/tests/baselines/reference/tsxElementResolution17.types +++ b/tests/baselines/reference/tsxElementResolution17.types @@ -9,8 +9,9 @@ import s2 = require('elements2'); ; > : JSX.Element ->s1 : any ->MyElement : any +>s1.MyElement : typeof s1.MyElement +>s1 : typeof s1 +>MyElement : typeof s1.MyElement === tests/cases/conformance/jsx/file.tsx === diff --git a/tests/baselines/reference/tsxElementResolution19.symbols b/tests/baselines/reference/tsxElementResolution19.symbols index 87c48ccedf0..48aa4f962b6 100644 --- a/tests/baselines/reference/tsxElementResolution19.symbols +++ b/tests/baselines/reference/tsxElementResolution19.symbols @@ -24,5 +24,5 @@ import {MyClass} from './file1'; >MyClass : Symbol(MyClass, Decl(file2.tsx, 3, 8)) ; ->MyClass : Symbol(MyClass, Decl(file1.tsx, 2, 1)) +>MyClass : Symbol(MyClass, Decl(file2.tsx, 3, 8)) diff --git a/tests/baselines/reference/tsxElementResolution9.symbols b/tests/baselines/reference/tsxElementResolution9.symbols index 0aec19a8094..d6b0da12e6f 100644 --- a/tests/baselines/reference/tsxElementResolution9.symbols +++ b/tests/baselines/reference/tsxElementResolution9.symbols @@ -4,7 +4,7 @@ declare module JSX { interface Element { something; } >Element : Symbol(Element, Decl(file.tsx, 0, 20)) ->something : Symbol(something, Decl(file.tsx, 1, 20)) +>something : Symbol(Element.something, Decl(file.tsx, 1, 20)) interface IntrinsicElements { } >IntrinsicElements : Symbol(IntrinsicElements, Decl(file.tsx, 1, 33)) diff --git a/tests/baselines/reference/tsxEmit1.symbols b/tests/baselines/reference/tsxEmit1.symbols index 9d373bc62be..9e32354b184 100644 --- a/tests/baselines/reference/tsxEmit1.symbols +++ b/tests/baselines/reference/tsxEmit1.symbols @@ -93,7 +93,7 @@ class SomeClass { >SomeClass : Symbol(SomeClass, Decl(file.tsx, 20, 43)) f() { ->f : Symbol(f, Decl(file.tsx, 22, 17)) +>f : Symbol(SomeClass.f, Decl(file.tsx, 22, 17)) var rewrites1 =
{() => this}
; >rewrites1 : Symbol(rewrites1, Decl(file.tsx, 24, 5)) diff --git a/tests/baselines/reference/tsxEmit3.symbols b/tests/baselines/reference/tsxEmit3.symbols index 3b88d4e0371..3eb4ef3b05d 100644 --- a/tests/baselines/reference/tsxEmit3.symbols +++ b/tests/baselines/reference/tsxEmit3.symbols @@ -59,6 +59,8 @@ module M { >S.Bar : Symbol(S.Bar, Decl(file.tsx, 8, 18)) >S : Symbol(S, Decl(file.tsx, 7, 39), Decl(file.tsx, 18, 14)) >Bar : Symbol(S.Bar, Decl(file.tsx, 8, 18)) +>S.Bar : Symbol(S.Bar, Decl(file.tsx, 8, 18)) +>S : Symbol(S, Decl(file.tsx, 7, 39), Decl(file.tsx, 18, 14)) >Bar : Symbol(S.Bar, Decl(file.tsx, 8, 18)) } diff --git a/tests/baselines/reference/tsxEmit3.types b/tests/baselines/reference/tsxEmit3.types index 49a5cf8a51b..e70c44d0041 100644 --- a/tests/baselines/reference/tsxEmit3.types +++ b/tests/baselines/reference/tsxEmit3.types @@ -67,8 +67,9 @@ module M { >S : typeof S >Bar : typeof S.Bar > : JSX.Element ->S : any ->Bar : any +>S.Bar : typeof S.Bar +>S : typeof S +>Bar : typeof S.Bar } module M { diff --git a/tests/baselines/reference/tsxExternalModuleEmit1.symbols b/tests/baselines/reference/tsxExternalModuleEmit1.symbols index 79e20684b99..e2d3eee98b0 100644 --- a/tests/baselines/reference/tsxExternalModuleEmit1.symbols +++ b/tests/baselines/reference/tsxExternalModuleEmit1.symbols @@ -22,10 +22,10 @@ export class App extends React.Component { >Component : Symbol(React.Component, Decl(react.d.ts, 1, 24)) render() { ->render : Symbol(render, Decl(app.tsx, 5, 52)) +>render : Symbol(App.render, Decl(app.tsx, 5, 52)) return ; >button : Symbol(unknown) diff --git a/tests/baselines/reference/tsxExternalModuleEmit2.js b/tests/baselines/reference/tsxExternalModuleEmit2.js index 2233c5181cb..25e186e140f 100644 --- a/tests/baselines/reference/tsxExternalModuleEmit2.js +++ b/tests/baselines/reference/tsxExternalModuleEmit2.js @@ -19,8 +19,16 @@ declare var Foo, React; //// [app.js] "use strict"; +var __assign = (this && this.__assign) || Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; +}; var mod_1 = require('mod'); // Should see mod_1['default'] in emit here React.createElement(Foo, {handler: mod_1["default"]}); // Should see mod_1['default'] in emit here -React.createElement(Foo, React.__spread({}, mod_1["default"])); +React.createElement(Foo, __assign({}, mod_1["default"])); diff --git a/tests/baselines/reference/tsxExternalModuleEmit2.symbols b/tests/baselines/reference/tsxExternalModuleEmit2.symbols index 29d8d901979..ff5fdc49171 100644 --- a/tests/baselines/reference/tsxExternalModuleEmit2.symbols +++ b/tests/baselines/reference/tsxExternalModuleEmit2.symbols @@ -18,11 +18,15 @@ declare var Foo, React; // Should see mod_1['default'] in emit here ; +>Foo : Symbol(Foo, Decl(app.tsx, 1, 11)) >handler : Symbol(unknown) >Main : Symbol(Main, Decl(app.tsx, 0, 6)) +>Foo : Symbol(Foo, Decl(app.tsx, 1, 11)) // Should see mod_1['default'] in emit here ; +>Foo : Symbol(Foo, Decl(app.tsx, 1, 11)) >Main : Symbol(Main, Decl(app.tsx, 0, 6)) +>Foo : Symbol(Foo, Decl(app.tsx, 1, 11)) diff --git a/tests/baselines/reference/tsxGenericArrowFunctionParsing.symbols b/tests/baselines/reference/tsxGenericArrowFunctionParsing.symbols index d2af8f5f32f..6d90c583a66 100644 --- a/tests/baselines/reference/tsxGenericArrowFunctionParsing.symbols +++ b/tests/baselines/reference/tsxGenericArrowFunctionParsing.symbols @@ -4,7 +4,7 @@ declare module JSX { interface Element { isElement; } >Element : Symbol(Element, Decl(file.tsx, 0, 20)) ->isElement : Symbol(isElement, Decl(file.tsx, 1, 20)) +>isElement : Symbol(Element.isElement, Decl(file.tsx, 1, 20)) } var T, T1, T2; @@ -15,6 +15,8 @@ var T, T1, T2; // This is an element var x1 = () => {}; >x1 : Symbol(x1, Decl(file.tsx, 7, 3)) +>T : Symbol(T, Decl(file.tsx, 4, 3)) +>T : Symbol(T, Decl(file.tsx, 4, 3)) x1.isElement; >x1.isElement : Symbol(JSX.Element.isElement, Decl(file.tsx, 1, 20)) @@ -41,7 +43,9 @@ x3(); // This is an element var x4 = () => {}; >x4 : Symbol(x4, Decl(file.tsx, 19, 3)) +>T : Symbol(T, Decl(file.tsx, 4, 3)) >extends : Symbol(unknown) +>T : Symbol(T, Decl(file.tsx, 4, 3)) x4.isElement; >x4.isElement : Symbol(JSX.Element.isElement, Decl(file.tsx, 1, 20)) @@ -51,7 +55,9 @@ x4.isElement; // This is an element var x5 = () => {}; >x5 : Symbol(x5, Decl(file.tsx, 23, 3)) +>T : Symbol(T, Decl(file.tsx, 4, 3)) >extends : Symbol(unknown) +>T : Symbol(T, Decl(file.tsx, 4, 3)) x5.isElement; >x5.isElement : Symbol(JSX.Element.isElement, Decl(file.tsx, 1, 20)) diff --git a/tests/baselines/reference/tsxInArrowFunction.symbols b/tests/baselines/reference/tsxInArrowFunction.symbols index 5896dfa1eef..ff80428cf74 100644 --- a/tests/baselines/reference/tsxInArrowFunction.symbols +++ b/tests/baselines/reference/tsxInArrowFunction.symbols @@ -10,7 +10,7 @@ declare namespace JSX { >IntrinsicElements : Symbol(IntrinsicElements, Decl(tsxInArrowFunction.tsx, 2, 25)) div: { ->div : Symbol(div, Decl(tsxInArrowFunction.tsx, 3, 33)) +>div : Symbol(IntrinsicElements.div, Decl(tsxInArrowFunction.tsx, 3, 33)) text?: string; >text : Symbol(text, Decl(tsxInArrowFunction.tsx, 4, 14)) diff --git a/tests/baselines/reference/tsxOpeningClosingNames.symbols b/tests/baselines/reference/tsxOpeningClosingNames.symbols index e61d209e231..66010f74d2f 100644 --- a/tests/baselines/reference/tsxOpeningClosingNames.symbols +++ b/tests/baselines/reference/tsxOpeningClosingNames.symbols @@ -16,4 +16,18 @@ declare module A.B.C { } foo
+>A.B.C.D : Symbol(A.B.C.D, Decl(file.tsx, 5, 5)) +>A.B.C : Symbol(A.B.C, Decl(file.tsx, 4, 19)) +>A.B : Symbol(A.B, Decl(file.tsx, 4, 17)) +>A : Symbol(A, Decl(file.tsx, 2, 1)) +>B : Symbol(A.B, Decl(file.tsx, 4, 17)) +>C : Symbol(A.B.C, Decl(file.tsx, 4, 19)) +>D : Symbol(A.B.C.D, Decl(file.tsx, 5, 5)) +>A . B . C.D : Symbol(A.B.C.D, Decl(file.tsx, 5, 5)) +>A . B . C : Symbol(A.B.C, Decl(file.tsx, 4, 19)) +>A . B : Symbol(A.B, Decl(file.tsx, 4, 17)) +>A : Symbol(A, Decl(file.tsx, 2, 1)) +>B : Symbol(A.B, Decl(file.tsx, 4, 17)) +>C : Symbol(A.B.C, Decl(file.tsx, 4, 19)) +>D : Symbol(A.B.C.D, Decl(file.tsx, 5, 5)) diff --git a/tests/baselines/reference/tsxOpeningClosingNames.types b/tests/baselines/reference/tsxOpeningClosingNames.types index ac36205029e..2e21f346d10 100644 --- a/tests/baselines/reference/tsxOpeningClosingNames.types +++ b/tests/baselines/reference/tsxOpeningClosingNames.types @@ -17,12 +17,18 @@ declare module A.B.C { foo >foo : JSX.Element ->A : any ->B : any ->C : any +>A.B.C.D : any +>A.B.C : typeof A.B.C +>A.B : typeof A.B +>A : typeof A +>B : typeof A.B +>C : typeof A.B.C >D : any ->A : any ->B : any ->C : any +>A . B . C.D : any +>A . B . C : typeof A.B.C +>A . B : typeof A.B +>A : typeof A +>B : typeof A.B +>C : typeof A.B.C >D : any diff --git a/tests/baselines/reference/tsxParseTests1.symbols b/tests/baselines/reference/tsxParseTests1.symbols index 0ee595a9a3d..905a7f4860b 100644 --- a/tests/baselines/reference/tsxParseTests1.symbols +++ b/tests/baselines/reference/tsxParseTests1.symbols @@ -7,8 +7,8 @@ declare module JSX { interface IntrinsicElements { div; span; } >IntrinsicElements : Symbol(IntrinsicElements, Decl(file.tsx, 1, 22)) ->div : Symbol(div, Decl(file.tsx, 2, 30)) ->span : Symbol(span, Decl(file.tsx, 2, 35)) +>div : Symbol(IntrinsicElements.div, Decl(file.tsx, 2, 30)) +>span : Symbol(IntrinsicElements.span, Decl(file.tsx, 2, 35)) } var x =
; diff --git a/tests/baselines/reference/tsxParseTests2.symbols b/tests/baselines/reference/tsxParseTests2.symbols index 690bc183ddd..396edca4a0a 100644 --- a/tests/baselines/reference/tsxParseTests2.symbols +++ b/tests/baselines/reference/tsxParseTests2.symbols @@ -7,8 +7,8 @@ declare module JSX { interface IntrinsicElements { div; span; } >IntrinsicElements : Symbol(IntrinsicElements, Decl(file.tsx, 1, 22)) ->div : Symbol(div, Decl(file.tsx, 2, 30)) ->span : Symbol(span, Decl(file.tsx, 2, 35)) +>div : Symbol(IntrinsicElements.div, Decl(file.tsx, 2, 30)) +>span : Symbol(IntrinsicElements.span, Decl(file.tsx, 2, 35)) } var x = ; diff --git a/tests/baselines/reference/tsxPreserveEmit1.symbols b/tests/baselines/reference/tsxPreserveEmit1.symbols index 612f5cff9b2..53707b86104 100644 --- a/tests/baselines/reference/tsxPreserveEmit1.symbols +++ b/tests/baselines/reference/tsxPreserveEmit1.symbols @@ -13,6 +13,7 @@ import Route = ReactRouter.Route; var routes1 = ; >routes1 : Symbol(routes1, Decl(test.tsx, 6, 3)) +>Route : Symbol(Route, Decl(test.tsx, 2, 45)) module M { >M : Symbol(M, Decl(test.tsx, 6, 24), Decl(test.tsx, 10, 1)) @@ -26,6 +27,8 @@ module M { // Should emit 'M.X' in both opening and closing tags var y = ; >y : Symbol(y, Decl(test.tsx, 13, 4)) +>X : Symbol(X, Decl(test.tsx, 9, 11)) +>X : Symbol(X, Decl(test.tsx, 9, 11)) } === tests/cases/conformance/jsx/react.d.ts === diff --git a/tests/baselines/reference/tsxPreserveEmit2.symbols b/tests/baselines/reference/tsxPreserveEmit2.symbols index e136cebbdf0..4013b2e35ea 100644 --- a/tests/baselines/reference/tsxPreserveEmit2.symbols +++ b/tests/baselines/reference/tsxPreserveEmit2.symbols @@ -6,4 +6,5 @@ var Route: any; var routes1 = ; >routes1 : Symbol(routes1, Decl(test.tsx, 3, 3)) +>Route : Symbol(Route, Decl(test.tsx, 2, 3)) diff --git a/tests/baselines/reference/tsxReactEmit1.symbols b/tests/baselines/reference/tsxReactEmit1.symbols index 640f666c0d8..6887a9550c0 100644 --- a/tests/baselines/reference/tsxReactEmit1.symbols +++ b/tests/baselines/reference/tsxReactEmit1.symbols @@ -97,7 +97,7 @@ class SomeClass { >SomeClass : Symbol(SomeClass, Decl(file.tsx, 21, 45)) f() { ->f : Symbol(f, Decl(file.tsx, 23, 17)) +>f : Symbol(SomeClass.f, Decl(file.tsx, 23, 17)) var rewrites1 =
{() => this}
; >rewrites1 : Symbol(rewrites1, Decl(file.tsx, 25, 5)) diff --git a/tests/baselines/reference/tsxReactEmit2.js b/tests/baselines/reference/tsxReactEmit2.js index fd7fff16976..051c7380171 100644 --- a/tests/baselines/reference/tsxReactEmit2.js +++ b/tests/baselines/reference/tsxReactEmit2.js @@ -16,9 +16,17 @@ var spreads5 =
{p2}
; //// [file.js] +var __assign = (this && this.__assign) || Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; +}; var p1, p2, p3; -var spreads1 = React.createElement("div", React.__spread({}, p1), p2); -var spreads2 = React.createElement("div", React.__spread({}, p1), p2); -var spreads3 = React.createElement("div", React.__spread({x: p3}, p1), p2); -var spreads4 = React.createElement("div", React.__spread({}, p1, {x: p3}), p2); -var spreads5 = React.createElement("div", React.__spread({x: p2}, p1, {y: p3}), p2); +var spreads1 = React.createElement("div", __assign({}, p1), p2); +var spreads2 = React.createElement("div", __assign({}, p1), p2); +var spreads3 = React.createElement("div", __assign({x: p3}, p1), p2); +var spreads4 = React.createElement("div", __assign({}, p1, {x: p3}), p2); +var spreads5 = React.createElement("div", __assign({x: p2}, p1, {y: p3}), p2); diff --git a/tests/baselines/reference/tsxReactEmit3.symbols b/tests/baselines/reference/tsxReactEmit3.symbols index 3d6d6c43c14..cec45805c1e 100644 --- a/tests/baselines/reference/tsxReactEmit3.symbols +++ b/tests/baselines/reference/tsxReactEmit3.symbols @@ -13,3 +13,11 @@ declare var Foo, Bar, baz; >baz : Symbol(baz, Decl(test.tsx, 4, 21)) q s ; +>Foo : Symbol(Foo, Decl(test.tsx, 4, 11)) +>Bar : Symbol(Bar, Decl(test.tsx, 4, 16)) +>Bar : Symbol(Bar, Decl(test.tsx, 4, 16)) +>Bar : Symbol(Bar, Decl(test.tsx, 4, 16)) +>Bar : Symbol(Bar, Decl(test.tsx, 4, 16)) +>Bar : Symbol(Bar, Decl(test.tsx, 4, 16)) +>Foo : Symbol(Foo, Decl(test.tsx, 4, 11)) + diff --git a/tests/baselines/reference/tsxReactEmit4.js b/tests/baselines/reference/tsxReactEmit4.js index d61cea24d2c..3b554f17cb7 100644 --- a/tests/baselines/reference/tsxReactEmit4.js +++ b/tests/baselines/reference/tsxReactEmit4.js @@ -18,7 +18,15 @@ var openClosed1 =
var spread1 =
; //// [file.js] +var __assign = (this && this.__assign) || Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; +}; var p; var openClosed1 = React.createElement("div", null, blah); // Should emit React.__spread({}, p, {x: 0}) -var spread1 = React.createElement("div", React.__spread({}, p, {x: 0})); +var spread1 = React.createElement("div", __assign({}, p, {x: 0})); diff --git a/tests/baselines/reference/tsxReactEmit5.js b/tests/baselines/reference/tsxReactEmit5.js index 06b05f67d63..a6dde25edc3 100644 --- a/tests/baselines/reference/tsxReactEmit5.js +++ b/tests/baselines/reference/tsxReactEmit5.js @@ -23,8 +23,16 @@ var spread1 =
; //// [file.js] //// [react-consumer.js] "use strict"; +var __assign = (this && this.__assign) || Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; +}; var test_1 = require("./test"); // Should emit test_1.React.createElement // and React.__spread var foo; -var spread1 = test_1.React.createElement("div", test_1.React.__spread({x: ''}, foo, {y: ''})); +var spread1 = test_1.React.createElement("div", __assign({x: ''}, foo, {y: ''})); diff --git a/tests/baselines/reference/tsxReactEmit6.js b/tests/baselines/reference/tsxReactEmit6.js index 4f583929004..cb41bf4d1eb 100644 --- a/tests/baselines/reference/tsxReactEmit6.js +++ b/tests/baselines/reference/tsxReactEmit6.js @@ -28,6 +28,14 @@ namespace M { //// [file.js] //// [react-consumer.js] +var __assign = (this && this.__assign) || Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; +}; var M; (function (M) { })(M || (M = {})); @@ -36,7 +44,7 @@ var M; // Should emit M.React.createElement // and M.React.__spread var foo; - var spread1 = M.React.createElement("div", M.React.__spread({x: ''}, foo, {y: ''})); + var spread1 = M.React.createElement("div", __assign({x: ''}, foo, {y: ''})); // Quotes var x = M.React.createElement("div", null, "This \"quote\" thing"); })(M || (M = {})); diff --git a/tests/baselines/reference/tsxStatelessFunctionComponents3.symbols b/tests/baselines/reference/tsxStatelessFunctionComponents3.symbols index 43923213479..4ce502c6a6a 100644 --- a/tests/baselines/reference/tsxStatelessFunctionComponents3.symbols +++ b/tests/baselines/reference/tsxStatelessFunctionComponents3.symbols @@ -11,7 +11,7 @@ const Foo = (props: any) =>
; // Should be OK const foo = ; >foo : Symbol(foo, Decl(file.tsx, 5, 5)) ->Foo : Symbol((Anonymous function), Decl(file.tsx, 3, 11)) +>Foo : Symbol(Foo, Decl(file.tsx, 3, 5)) // Should be OK @@ -40,7 +40,7 @@ var App: React.StatelessComponent<{ children }> = ({children}) => ( >div : Symbol(JSX.IntrinsicElements.div, Decl(react.d.ts, 927, 45)) ->MainMenu : Symbol(React.StatelessComponent, Decl(react.d.ts, 139, 5)) +>MainMenu : Symbol(MainMenu, Decl(file.tsx, 9, 3))
>div : Symbol(JSX.IntrinsicElements.div, Decl(react.d.ts, 927, 45)) diff --git a/tests/baselines/reference/tsxTypeErrors.symbols b/tests/baselines/reference/tsxTypeErrors.symbols index 2b87e994477..062442cda16 100644 --- a/tests/baselines/reference/tsxTypeErrors.symbols +++ b/tests/baselines/reference/tsxTypeErrors.symbols @@ -34,7 +34,7 @@ class MyClass { >MyClass : Symbol(MyClass, Decl(tsxTypeErrors.tsx, 12, 31)) props: { ->props : Symbol(props, Decl(tsxTypeErrors.tsx, 15, 15)) +>props : Symbol(MyClass.props, Decl(tsxTypeErrors.tsx, 15, 15)) pt?: { x: number; y: number; }; >pt : Symbol(pt, Decl(tsxTypeErrors.tsx, 16, 10)) diff --git a/tests/baselines/reference/tupleTypeInference.symbols b/tests/baselines/reference/tupleTypeInference.symbols index 4dbed73e395..ec825e81f4b 100644 --- a/tests/baselines/reference/tupleTypeInference.symbols +++ b/tests/baselines/reference/tupleTypeInference.symbols @@ -7,7 +7,7 @@ interface IQService { >IQService : Symbol(IQService, Decl(tupleTypeInference.ts, 0, 26)) all(x: [IPromise, IPromise, IPromise]): IPromise<[T1, T2, T3]>; ->all : Symbol(all, Decl(tupleTypeInference.ts, 2, 21), Decl(tupleTypeInference.ts, 3, 91), Decl(tupleTypeInference.ts, 4, 69)) +>all : Symbol(IQService.all, Decl(tupleTypeInference.ts, 2, 21), Decl(tupleTypeInference.ts, 3, 91), Decl(tupleTypeInference.ts, 4, 69)) >T1 : Symbol(T1, Decl(tupleTypeInference.ts, 3, 8)) >T2 : Symbol(T2, Decl(tupleTypeInference.ts, 3, 11)) >T3 : Symbol(T3, Decl(tupleTypeInference.ts, 3, 15)) @@ -24,7 +24,7 @@ interface IQService { >T3 : Symbol(T3, Decl(tupleTypeInference.ts, 3, 15)) all(x: [IPromise, IPromise]): IPromise<[T1, T2]>; ->all : Symbol(all, Decl(tupleTypeInference.ts, 2, 21), Decl(tupleTypeInference.ts, 3, 91), Decl(tupleTypeInference.ts, 4, 69)) +>all : Symbol(IQService.all, Decl(tupleTypeInference.ts, 2, 21), Decl(tupleTypeInference.ts, 3, 91), Decl(tupleTypeInference.ts, 4, 69)) >T1 : Symbol(T1, Decl(tupleTypeInference.ts, 4, 8)) >T2 : Symbol(T2, Decl(tupleTypeInference.ts, 4, 11)) >x : Symbol(x, Decl(tupleTypeInference.ts, 4, 16)) @@ -37,7 +37,7 @@ interface IQService { >T2 : Symbol(T2, Decl(tupleTypeInference.ts, 4, 11)) all(x: [IPromise]): IPromise<[T1]>; ->all : Symbol(all, Decl(tupleTypeInference.ts, 2, 21), Decl(tupleTypeInference.ts, 3, 91), Decl(tupleTypeInference.ts, 4, 69)) +>all : Symbol(IQService.all, Decl(tupleTypeInference.ts, 2, 21), Decl(tupleTypeInference.ts, 3, 91), Decl(tupleTypeInference.ts, 4, 69)) >T1 : Symbol(T1, Decl(tupleTypeInference.ts, 5, 8)) >x : Symbol(x, Decl(tupleTypeInference.ts, 5, 12)) >IPromise : Symbol(IPromise, Decl(tupleTypeInference.ts, 7, 1)) @@ -46,7 +46,7 @@ interface IQService { >T1 : Symbol(T1, Decl(tupleTypeInference.ts, 5, 8)) when(t?: T): IPromise; ->when : Symbol(when, Decl(tupleTypeInference.ts, 5, 47)) +>when : Symbol(IQService.when, Decl(tupleTypeInference.ts, 5, 47)) >T : Symbol(T, Decl(tupleTypeInference.ts, 6, 9)) >t : Symbol(t, Decl(tupleTypeInference.ts, 6, 12)) >T : Symbol(T, Decl(tupleTypeInference.ts, 6, 9)) @@ -59,7 +59,7 @@ interface IPromise { >T : Symbol(T, Decl(tupleTypeInference.ts, 9, 19)) then(callback: (t: T) => TResult): IPromise; ->then : Symbol(then, Decl(tupleTypeInference.ts, 9, 23)) +>then : Symbol(IPromise.then, Decl(tupleTypeInference.ts, 9, 23)) >TResult : Symbol(TResult, Decl(tupleTypeInference.ts, 10, 9)) >callback : Symbol(callback, Decl(tupleTypeInference.ts, 10, 18)) >t : Symbol(t, Decl(tupleTypeInference.ts, 10, 29)) diff --git a/tests/baselines/reference/twoMergedInterfacesWithDifferingOverloads.symbols b/tests/baselines/reference/twoMergedInterfacesWithDifferingOverloads.symbols index 5d46be73518..b93de8e55ce 100644 --- a/tests/baselines/reference/twoMergedInterfacesWithDifferingOverloads.symbols +++ b/tests/baselines/reference/twoMergedInterfacesWithDifferingOverloads.symbols @@ -5,11 +5,11 @@ interface A { >A : Symbol(A, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 0, 0), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 5, 1)) foo(x: number): number; ->foo : Symbol(foo, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 2, 13), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 3, 27), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 7, 13)) +>foo : Symbol(A.foo, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 2, 13), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 3, 27), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 7, 13)) >x : Symbol(x, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 3, 8)) foo(x: string): string; ->foo : Symbol(foo, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 2, 13), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 3, 27), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 7, 13)) +>foo : Symbol(A.foo, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 2, 13), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 3, 27), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 7, 13)) >x : Symbol(x, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 4, 8)) } @@ -17,10 +17,10 @@ interface A { >A : Symbol(A, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 0, 0), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 5, 1)) foo(x: Date): Date; ->foo : Symbol(foo, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 2, 13), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 3, 27), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 7, 13)) +>foo : Symbol(A.foo, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 2, 13), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 3, 27), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 7, 13)) >x : Symbol(x, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 8, 8)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) } interface B { @@ -28,12 +28,12 @@ interface B { >T : Symbol(T, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 11, 12), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 16, 12)) foo(x: T): number; ->foo : Symbol(foo, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 11, 16), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 12, 22), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 16, 16), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 17, 20)) +>foo : Symbol(B.foo, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 11, 16), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 12, 22), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 16, 16), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 17, 20)) >x : Symbol(x, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 12, 8)) >T : Symbol(T, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 11, 12), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 16, 12)) foo(x: string): string; ->foo : Symbol(foo, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 11, 16), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 12, 22), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 16, 16), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 17, 20)) +>foo : Symbol(B.foo, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 11, 16), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 12, 22), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 16, 16), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 17, 20)) >x : Symbol(x, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 13, 8)) } @@ -42,15 +42,15 @@ interface B { >T : Symbol(T, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 11, 12), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 16, 12)) foo(x: T): Date; ->foo : Symbol(foo, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 11, 16), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 12, 22), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 16, 16), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 17, 20)) +>foo : Symbol(B.foo, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 11, 16), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 12, 22), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 16, 16), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 17, 20)) >x : Symbol(x, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 17, 8)) >T : Symbol(T, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 11, 12), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 16, 12)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) foo(x: Date): string; ->foo : Symbol(foo, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 11, 16), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 12, 22), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 16, 16), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 17, 20)) +>foo : Symbol(B.foo, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 11, 16), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 12, 22), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 16, 16), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 17, 20)) >x : Symbol(x, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 18, 8)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) } var b: B; @@ -70,14 +70,14 @@ interface C { >U : Symbol(U, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 25, 14), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 30, 14)) foo(x: T, y: U): string; ->foo : Symbol(foo, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 25, 19), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 26, 28), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 30, 19)) +>foo : Symbol(C.foo, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 25, 19), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 26, 28), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 30, 19)) >x : Symbol(x, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 26, 8)) >T : Symbol(T, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 25, 12), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 30, 12)) >y : Symbol(y, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 26, 13)) >U : Symbol(U, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 25, 14), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 30, 14)) foo(x: string, y: string): number; ->foo : Symbol(foo, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 25, 19), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 26, 28), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 30, 19)) +>foo : Symbol(C.foo, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 25, 19), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 26, 28), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 30, 19)) >x : Symbol(x, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 27, 8)) >y : Symbol(y, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 27, 18)) } @@ -88,7 +88,7 @@ interface C { >U : Symbol(U, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 25, 14), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 30, 14)) foo(x: W, y: W): W; ->foo : Symbol(foo, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 25, 19), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 26, 28), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 30, 19)) +>foo : Symbol(C.foo, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 25, 19), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 26, 28), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 30, 19)) >W : Symbol(W, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 31, 8)) >x : Symbol(x, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 31, 11)) >W : Symbol(W, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 31, 8)) @@ -100,7 +100,7 @@ interface C { var c: C; >c : Symbol(c, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 34, 3)) >C : Symbol(C, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 22, 20), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 28, 1)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) var r2 = c.foo(1, 2); // number >r2 : Symbol(r2, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 35, 3)) @@ -115,15 +115,15 @@ interface D { >U : Symbol(U, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 38, 14), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 44, 14)) a: T; ->a : Symbol(a, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 38, 19)) +>a : Symbol(D.a, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 38, 19)) >T : Symbol(T, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 38, 12), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 44, 12)) b: U; ->b : Symbol(b, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 39, 9)) +>b : Symbol(D.b, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 39, 9)) >U : Symbol(U, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 38, 14), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 44, 14)) foo(x: A, y: A): U; ->foo : Symbol(foo, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 40, 9), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 44, 19)) +>foo : Symbol(D.foo, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 40, 9), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 44, 19)) >A : Symbol(A, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 41, 8)) >x : Symbol(x, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 41, 11)) >A : Symbol(A, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 41, 8)) @@ -138,7 +138,7 @@ interface D { >U : Symbol(U, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 38, 14), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 44, 14)) foo(x: W, y: W): T; ->foo : Symbol(foo, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 40, 9), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 44, 19)) +>foo : Symbol(D.foo, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 40, 9), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 44, 19)) >W : Symbol(W, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 45, 8)) >x : Symbol(x, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 45, 11)) >W : Symbol(W, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 45, 8)) @@ -150,7 +150,7 @@ interface D { var d: D; >d : Symbol(d, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 48, 3)) >D : Symbol(D, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 35, 21), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 42, 1)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) var r3 = d.foo(1, 1); // boolean, last definition wins >r3 : Symbol(r3, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 49, 3)) diff --git a/tests/baselines/reference/typeAliases.symbols b/tests/baselines/reference/typeAliases.symbols index 02cc5027b04..bedd6c8bb69 100644 --- a/tests/baselines/reference/typeAliases.symbols +++ b/tests/baselines/reference/typeAliases.symbols @@ -53,7 +53,7 @@ var x5: T5; interface I6 { x : string } >I6 : Symbol(I6, Decl(typeAliases.ts, 20, 11)) ->x : Symbol(x, Decl(typeAliases.ts, 22, 14)) +>x : Symbol(I6.x, Decl(typeAliases.ts, 22, 14)) type T6 = I6; >T6 : Symbol(T6, Decl(typeAliases.ts, 22, 27)) @@ -69,7 +69,7 @@ var x6: T6; class C7 { x: boolean } >C7 : Symbol(C7, Decl(typeAliases.ts, 25, 11)) ->x : Symbol(x, Decl(typeAliases.ts, 27, 10)) +>x : Symbol(C7.x, Decl(typeAliases.ts, 27, 10)) type T7 = C7; >T7 : Symbol(T7, Decl(typeAliases.ts, 27, 23)) @@ -127,7 +127,7 @@ var x11: T11; interface I13 { x: string }; >I13 : Symbol(I13, Decl(typeAliases.ts, 46, 13)) ->x : Symbol(x, Decl(typeAliases.ts, 48, 15)) +>x : Symbol(I13.x, Decl(typeAliases.ts, 48, 15)) type T13 = I13; >T13 : Symbol(T13, Decl(typeAliases.ts, 48, 28)) diff --git a/tests/baselines/reference/typeAnnotationBestCommonTypeInArrayLiteral.symbols b/tests/baselines/reference/typeAnnotationBestCommonTypeInArrayLiteral.symbols index f172c91f265..1e7604b44e7 100644 --- a/tests/baselines/reference/typeAnnotationBestCommonTypeInArrayLiteral.symbols +++ b/tests/baselines/reference/typeAnnotationBestCommonTypeInArrayLiteral.symbols @@ -3,22 +3,22 @@ interface IMenuItem { >IMenuItem : Symbol(IMenuItem, Decl(typeAnnotationBestCommonTypeInArrayLiteral.ts, 0, 0)) id: string; ->id : Symbol(id, Decl(typeAnnotationBestCommonTypeInArrayLiteral.ts, 0, 21)) +>id : Symbol(IMenuItem.id, Decl(typeAnnotationBestCommonTypeInArrayLiteral.ts, 0, 21)) type: string; ->type : Symbol(type, Decl(typeAnnotationBestCommonTypeInArrayLiteral.ts, 1, 15)) +>type : Symbol(IMenuItem.type, Decl(typeAnnotationBestCommonTypeInArrayLiteral.ts, 1, 15)) link?: string; ->link : Symbol(link, Decl(typeAnnotationBestCommonTypeInArrayLiteral.ts, 2, 17)) +>link : Symbol(IMenuItem.link, Decl(typeAnnotationBestCommonTypeInArrayLiteral.ts, 2, 17)) classes?: string; ->classes : Symbol(classes, Decl(typeAnnotationBestCommonTypeInArrayLiteral.ts, 3, 18)) +>classes : Symbol(IMenuItem.classes, Decl(typeAnnotationBestCommonTypeInArrayLiteral.ts, 3, 18)) text?: string; ->text : Symbol(text, Decl(typeAnnotationBestCommonTypeInArrayLiteral.ts, 4, 21)) +>text : Symbol(IMenuItem.text, Decl(typeAnnotationBestCommonTypeInArrayLiteral.ts, 4, 21)) icon?: string; ->icon : Symbol(icon, Decl(typeAnnotationBestCommonTypeInArrayLiteral.ts, 5, 18)) +>icon : Symbol(IMenuItem.icon, Decl(typeAnnotationBestCommonTypeInArrayLiteral.ts, 5, 18)) } var menuData: IMenuItem[] = [ >menuData : Symbol(menuData, Decl(typeAnnotationBestCommonTypeInArrayLiteral.ts, 8, 3)) diff --git a/tests/baselines/reference/typeArgInference.symbols b/tests/baselines/reference/typeArgInference.symbols index 37318e35906..3801b996ed7 100644 --- a/tests/baselines/reference/typeArgInference.symbols +++ b/tests/baselines/reference/typeArgInference.symbols @@ -3,7 +3,7 @@ interface I { >I : Symbol(I, Decl(typeArgInference.ts, 0, 0)) f(a1: { a: T; b: U }[], a2: { a: T; b: U }[]): { c: T; d: U }; ->f : Symbol(f, Decl(typeArgInference.ts, 0, 13)) +>f : Symbol(I.f, Decl(typeArgInference.ts, 0, 13)) >T : Symbol(T, Decl(typeArgInference.ts, 1, 6)) >U : Symbol(U, Decl(typeArgInference.ts, 1, 8)) >a1 : Symbol(a1, Decl(typeArgInference.ts, 1, 12)) @@ -22,7 +22,7 @@ interface I { >U : Symbol(U, Decl(typeArgInference.ts, 1, 8)) g(...arg: { a: T; b: U }[][]): { c: T; d: U }; ->g : Symbol(g, Decl(typeArgInference.ts, 1, 72)) +>g : Symbol(I.g, Decl(typeArgInference.ts, 1, 72)) >T : Symbol(T, Decl(typeArgInference.ts, 2, 6)) >U : Symbol(U, Decl(typeArgInference.ts, 2, 8)) >arg : Symbol(arg, Decl(typeArgInference.ts, 2, 12)) diff --git a/tests/baselines/reference/typeArgumentInferenceApparentType1.symbols b/tests/baselines/reference/typeArgumentInferenceApparentType1.symbols index 00de7ec64c9..4b57715d3fb 100644 --- a/tests/baselines/reference/typeArgumentInferenceApparentType1.symbols +++ b/tests/baselines/reference/typeArgumentInferenceApparentType1.symbols @@ -3,7 +3,7 @@ function method(iterable: Iterable): T { >method : Symbol(method, Decl(typeArgumentInferenceApparentType1.ts, 0, 0)) >T : Symbol(T, Decl(typeArgumentInferenceApparentType1.ts, 0, 16)) >iterable : Symbol(iterable, Decl(typeArgumentInferenceApparentType1.ts, 0, 19)) ->Iterable : Symbol(Iterable, Decl(lib.d.ts, --, --)) +>Iterable : Symbol(Iterable, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >T : Symbol(T, Decl(typeArgumentInferenceApparentType1.ts, 0, 16)) >T : Symbol(T, Decl(typeArgumentInferenceApparentType1.ts, 0, 16)) diff --git a/tests/baselines/reference/typeArgumentInferenceApparentType2.symbols b/tests/baselines/reference/typeArgumentInferenceApparentType2.symbols index 4626aabb605..f5985b6ff48 100644 --- a/tests/baselines/reference/typeArgumentInferenceApparentType2.symbols +++ b/tests/baselines/reference/typeArgumentInferenceApparentType2.symbols @@ -3,14 +3,14 @@ function method(iterable: Iterable): T { >method : Symbol(method, Decl(typeArgumentInferenceApparentType2.ts, 0, 0)) >T : Symbol(T, Decl(typeArgumentInferenceApparentType2.ts, 0, 16)) >iterable : Symbol(iterable, Decl(typeArgumentInferenceApparentType2.ts, 0, 19)) ->Iterable : Symbol(Iterable, Decl(lib.d.ts, --, --)) +>Iterable : Symbol(Iterable, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >T : Symbol(T, Decl(typeArgumentInferenceApparentType2.ts, 0, 16)) >T : Symbol(T, Decl(typeArgumentInferenceApparentType2.ts, 0, 16)) function inner>() { >inner : Symbol(inner, Decl(typeArgumentInferenceApparentType2.ts, 0, 46)) >U : Symbol(U, Decl(typeArgumentInferenceApparentType2.ts, 1, 19)) ->Iterable : Symbol(Iterable, Decl(lib.d.ts, --, --)) +>Iterable : Symbol(Iterable, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >T : Symbol(T, Decl(typeArgumentInferenceApparentType2.ts, 0, 16)) var u: U; diff --git a/tests/baselines/reference/typeArgumentInferenceConstructSignatures.errors.txt b/tests/baselines/reference/typeArgumentInferenceConstructSignatures.errors.txt index d058426b9c9..da01aa778b6 100644 --- a/tests/baselines/reference/typeArgumentInferenceConstructSignatures.errors.txt +++ b/tests/baselines/reference/typeArgumentInferenceConstructSignatures.errors.txt @@ -2,13 +2,13 @@ tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceConstruct tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceConstructSignatures.ts(51,19): error TS2304: Cannot find name 'Window'. tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceConstructSignatures.ts(61,39): error TS2345: Argument of type '(x: string) => string' is not assignable to parameter of type '(x: number) => void'. Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceConstructSignatures.ts(71,39): error TS2345: Argument of type '(x: string) => string' is not assignable to parameter of type '(x: number) => void'. Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceConstructSignatures.ts(81,45): error TS2345: Argument of type '(n: string) => string' is not assignable to parameter of type '(b: number) => number'. Types of parameters 'n' and 'b' are incompatible. - Type 'string' is not assignable to type 'number'. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceConstructSignatures.ts(106,15): error TS2453: The type argument for type parameter 'T' cannot be inferred from the usage. Consider specifying the type arguments explicitly. Type argument candidate 'string' is not a valid type argument because it is not a supertype of candidate 'number'. tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceConstructSignatures.ts(118,9): error TS2304: Cannot find name 'Window'. @@ -90,7 +90,7 @@ tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceConstruct ~~~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: string) => string' is not assignable to parameter of type '(x: number) => void'. !!! error TS2345: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2345: Type 'string' is not assignable to type 'number'. +!!! error TS2345: Type 'number' is not assignable to type 'string'. new someGenerics4(null, null); // 2 parameter generic call with argument 2 of type parameter type and argument 1 of function type whose parameter is of type parameter type @@ -104,7 +104,7 @@ tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceConstruct ~~~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: string) => string' is not assignable to parameter of type '(x: number) => void'. !!! error TS2345: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2345: Type 'string' is not assignable to type 'number'. +!!! error TS2345: Type 'number' is not assignable to type 'string'. new someGenerics5(null, null); // Generic call with multiple arguments of function types that each have parameters of the same generic type @@ -118,7 +118,7 @@ tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceConstruct ~~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(n: string) => string' is not assignable to parameter of type '(b: number) => number'. !!! error TS2345: Types of parameters 'n' and 'b' are incompatible. -!!! error TS2345: Type 'string' is not assignable to type 'number'. +!!! error TS2345: Type 'number' is not assignable to type 'string'. new someGenerics6((n: number) => n, (n: number) => n, (n: number) => n); // Generic call with multiple arguments of function types that each have parameters of different generic type diff --git a/tests/baselines/reference/typeArgumentInferenceErrors.errors.txt b/tests/baselines/reference/typeArgumentInferenceErrors.errors.txt index 9bd25dda4e6..36a17e166a5 100644 --- a/tests/baselines/reference/typeArgumentInferenceErrors.errors.txt +++ b/tests/baselines/reference/typeArgumentInferenceErrors.errors.txt @@ -1,13 +1,13 @@ tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceErrors.ts(3,31): error TS2345: Argument of type 'number' is not assignable to parameter of type 'string'. tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceErrors.ts(7,35): error TS2345: Argument of type '(x: string) => string' is not assignable to parameter of type '(x: number) => void'. Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceErrors.ts(11,35): error TS2345: Argument of type '(x: string) => string' is not assignable to parameter of type '(x: number) => void'. Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceErrors.ts(15,41): error TS2345: Argument of type '(n: string) => string' is not assignable to parameter of type '(b: number) => number'. Types of parameters 'n' and 'b' are incompatible. - Type 'string' is not assignable to type 'number'. + Type 'number' is not assignable to type 'string'. ==== tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceErrors.ts (4 errors) ==== @@ -23,7 +23,7 @@ tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceErrors.ts ~~~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: string) => string' is not assignable to parameter of type '(x: number) => void'. !!! error TS2345: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2345: Type 'string' is not assignable to type 'number'. +!!! error TS2345: Type 'number' is not assignable to type 'string'. // 2 parameter generic call with argument 2 of type parameter type and argument 1 of function type whose parameter is of type parameter type function someGenerics5(n: T, f: (x: U) => void) { } @@ -31,7 +31,7 @@ tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceErrors.ts ~~~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: string) => string' is not assignable to parameter of type '(x: number) => void'. !!! error TS2345: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2345: Type 'string' is not assignable to type 'number'. +!!! error TS2345: Type 'number' is not assignable to type 'string'. // Generic call with multiple arguments of function types that each have parameters of the same generic type function someGenerics6(a: (a: A) => A, b: (b: A) => A, c: (c: A) => A) { } @@ -39,5 +39,5 @@ tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceErrors.ts ~~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(n: string) => string' is not assignable to parameter of type '(b: number) => number'. !!! error TS2345: Types of parameters 'n' and 'b' are incompatible. -!!! error TS2345: Type 'string' is not assignable to type 'number'. +!!! error TS2345: Type 'number' is not assignable to type 'string'. \ No newline at end of file diff --git a/tests/baselines/reference/typeArgumentInferenceOrdering.symbols b/tests/baselines/reference/typeArgumentInferenceOrdering.symbols index 963be8731ec..630aebcf185 100644 --- a/tests/baselines/reference/typeArgumentInferenceOrdering.symbols +++ b/tests/baselines/reference/typeArgumentInferenceOrdering.symbols @@ -18,7 +18,7 @@ class C { >C : Symbol(C, Decl(typeArgumentInferenceOrdering.ts, 1, 23)) y: I; ->y : Symbol(y, Decl(typeArgumentInferenceOrdering.ts, 3, 9)) +>y : Symbol(C.y, Decl(typeArgumentInferenceOrdering.ts, 3, 9)) >I : Symbol(I, Decl(typeArgumentInferenceOrdering.ts, 5, 1)) } @@ -26,7 +26,7 @@ interface I { >I : Symbol(I, Decl(typeArgumentInferenceOrdering.ts, 5, 1)) x(): Goo; ->x : Symbol(x, Decl(typeArgumentInferenceOrdering.ts, 7, 13)) +>x : Symbol(I.x, Decl(typeArgumentInferenceOrdering.ts, 7, 13)) >Goo : Symbol(Goo, Decl(typeArgumentInferenceOrdering.ts, 9, 1)) } @@ -34,6 +34,6 @@ interface Goo { >Goo : Symbol(Goo, Decl(typeArgumentInferenceOrdering.ts, 9, 1)) p: string; ->p : Symbol(p, Decl(typeArgumentInferenceOrdering.ts, 11, 15)) +>p : Symbol(Goo.p, Decl(typeArgumentInferenceOrdering.ts, 11, 15)) } diff --git a/tests/baselines/reference/typeArgumentInferenceTransitiveConstraints.symbols b/tests/baselines/reference/typeArgumentInferenceTransitiveConstraints.symbols index 2d6270bbf5c..bc554ce9f86 100644 --- a/tests/baselines/reference/typeArgumentInferenceTransitiveConstraints.symbols +++ b/tests/baselines/reference/typeArgumentInferenceTransitiveConstraints.symbols @@ -3,7 +3,7 @@ function fn(a: A, b: B, c: C) { >fn : Symbol(fn, Decl(typeArgumentInferenceTransitiveConstraints.ts, 0, 0)) >A : Symbol(A, Decl(typeArgumentInferenceTransitiveConstraints.ts, 1, 12)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >B : Symbol(B, Decl(typeArgumentInferenceTransitiveConstraints.ts, 1, 27)) >A : Symbol(A, Decl(typeArgumentInferenceTransitiveConstraints.ts, 1, 12)) >C : Symbol(C, Decl(typeArgumentInferenceTransitiveConstraints.ts, 1, 40)) @@ -24,11 +24,11 @@ function fn(a: A, b: B, c: C) { var d = fn(new Date(), new Date(), new Date()); >d : Symbol(d, Decl(typeArgumentInferenceTransitiveConstraints.ts, 5, 3), Decl(typeArgumentInferenceTransitiveConstraints.ts, 6, 3)) >fn : Symbol(fn, Decl(typeArgumentInferenceTransitiveConstraints.ts, 0, 0)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) var d: Date[]; // Should be OK (d should be Date[]) >d : Symbol(d, Decl(typeArgumentInferenceTransitiveConstraints.ts, 5, 3), Decl(typeArgumentInferenceTransitiveConstraints.ts, 6, 3)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) diff --git a/tests/baselines/reference/typeArgumentInferenceWithConstraints.errors.txt b/tests/baselines/reference/typeArgumentInferenceWithConstraints.errors.txt index e6de840ec54..22d18e11eca 100644 --- a/tests/baselines/reference/typeArgumentInferenceWithConstraints.errors.txt +++ b/tests/baselines/reference/typeArgumentInferenceWithConstraints.errors.txt @@ -5,14 +5,14 @@ tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceWithConst tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceWithConstraints.ts(34,15): error TS2304: Cannot find name 'Window'. tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceWithConstraints.ts(41,35): error TS2345: Argument of type '(x: string) => string' is not assignable to parameter of type '(x: number) => void'. Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceWithConstraints.ts(48,35): error TS2345: Argument of type '(x: string) => string' is not assignable to parameter of type '(x: number) => void'. Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceWithConstraints.ts(49,15): error TS2344: Type 'string' does not satisfy the constraint 'number'. tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceWithConstraints.ts(55,41): error TS2345: Argument of type '(n: string) => string' is not assignable to parameter of type '(b: number) => number'. Types of parameters 'n' and 'b' are incompatible. - Type 'string' is not assignable to type 'number'. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceWithConstraints.ts(66,31): error TS2345: Argument of type '(a: (a: A) => A, b: (b: B) => B, c: (c: C) => C) => void' is not assignable to parameter of type 'string'. tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceWithConstraints.ts(73,11): error TS2453: The type argument for type parameter 'T' cannot be inferred from the usage. Consider specifying the type arguments explicitly. Type argument candidate 'string' is not a valid type argument because it is not a supertype of candidate 'number'. @@ -81,7 +81,7 @@ tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceWithConst ~~~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: string) => string' is not assignable to parameter of type '(x: number) => void'. !!! error TS2345: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2345: Type 'string' is not assignable to type 'number'. +!!! error TS2345: Type 'number' is not assignable to type 'string'. someGenerics4(null, null); // 2 parameter generic call with argument 2 of type parameter type and argument 1 of function type whose parameter is of type parameter type @@ -92,7 +92,7 @@ tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceWithConst ~~~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: string) => string' is not assignable to parameter of type '(x: number) => void'. !!! error TS2345: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2345: Type 'string' is not assignable to type 'number'. +!!! error TS2345: Type 'number' is not assignable to type 'string'. someGenerics5(null, null); // Error ~~~~~~ !!! error TS2344: Type 'string' does not satisfy the constraint 'number'. @@ -105,7 +105,7 @@ tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceWithConst ~~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(n: string) => string' is not assignable to parameter of type '(b: number) => number'. !!! error TS2345: Types of parameters 'n' and 'b' are incompatible. -!!! error TS2345: Type 'string' is not assignable to type 'number'. +!!! error TS2345: Type 'number' is not assignable to type 'string'. someGenerics6((n: number) => n, (n: number) => n, (n: number) => n); // Generic call with multiple arguments of function types that each have parameters of different generic type diff --git a/tests/baselines/reference/typeArgumentsWithStringLiteralTypes01.errors.txt b/tests/baselines/reference/typeArgumentsWithStringLiteralTypes01.errors.txt index ef582ab9b26..48c7efb37e8 100644 --- a/tests/baselines/reference/typeArgumentsWithStringLiteralTypes01.errors.txt +++ b/tests/baselines/reference/typeArgumentsWithStringLiteralTypes01.errors.txt @@ -4,15 +4,10 @@ tests/cases/conformance/types/stringLiteral/typeArgumentsWithStringLiteralTypes0 tests/cases/conformance/types/stringLiteral/typeArgumentsWithStringLiteralTypes01.ts(40,25): error TS2345: Argument of type 'string' is not assignable to parameter of type '"Hello"'. tests/cases/conformance/types/stringLiteral/typeArgumentsWithStringLiteralTypes01.ts(41,25): error TS2345: Argument of type 'string' is not assignable to parameter of type '"Hello"'. tests/cases/conformance/types/stringLiteral/typeArgumentsWithStringLiteralTypes01.ts(44,30): error TS2345: Argument of type 'string' is not assignable to parameter of type '"Hello" | "World"'. - Type 'string' is not assignable to type '"World"'. tests/cases/conformance/types/stringLiteral/typeArgumentsWithStringLiteralTypes01.ts(45,30): error TS2345: Argument of type 'string' is not assignable to parameter of type '"Hello" | "World"'. - Type 'string' is not assignable to type '"World"'. tests/cases/conformance/types/stringLiteral/typeArgumentsWithStringLiteralTypes01.ts(46,30): error TS2345: Argument of type 'string' is not assignable to parameter of type '"Hello" | "World"'. - Type 'string' is not assignable to type '"World"'. tests/cases/conformance/types/stringLiteral/typeArgumentsWithStringLiteralTypes01.ts(47,30): error TS2345: Argument of type 'string' is not assignable to parameter of type '"Hello" | "World"'. - Type 'string' is not assignable to type '"World"'. tests/cases/conformance/types/stringLiteral/typeArgumentsWithStringLiteralTypes01.ts(48,30): error TS2345: Argument of type 'string' is not assignable to parameter of type '"Hello" | "World"'. - Type 'string' is not assignable to type '"World"'. tests/cases/conformance/types/stringLiteral/typeArgumentsWithStringLiteralTypes01.ts(55,43): error TS2345: Argument of type '"World"' is not assignable to parameter of type '"Hello"'. tests/cases/conformance/types/stringLiteral/typeArgumentsWithStringLiteralTypes01.ts(57,52): error TS2345: Argument of type '"World"' is not assignable to parameter of type '"Hello"'. tests/cases/conformance/types/stringLiteral/typeArgumentsWithStringLiteralTypes01.ts(58,43): error TS2345: Argument of type '"World"' is not assignable to parameter of type '"Hello"'. @@ -26,9 +21,7 @@ tests/cases/conformance/types/stringLiteral/typeArgumentsWithStringLiteralTypes0 tests/cases/conformance/types/stringLiteral/typeArgumentsWithStringLiteralTypes01.ts(88,43): error TS2345: Argument of type '"Hello"' is not assignable to parameter of type '"World"'. tests/cases/conformance/types/stringLiteral/typeArgumentsWithStringLiteralTypes01.ts(89,52): error TS2345: Argument of type '"World"' is not assignable to parameter of type '"Hello"'. tests/cases/conformance/types/stringLiteral/typeArgumentsWithStringLiteralTypes01.ts(93,5): error TS2322: Type 'string' is not assignable to type '"Hello" | "World"'. - Type 'string' is not assignable to type '"World"'. tests/cases/conformance/types/stringLiteral/typeArgumentsWithStringLiteralTypes01.ts(97,5): error TS2322: Type 'string' is not assignable to type '"Hello" | "World"'. - Type 'string' is not assignable to type '"World"'. tests/cases/conformance/types/stringLiteral/typeArgumentsWithStringLiteralTypes01.ts(100,25): error TS2345: Argument of type '"Hello" | "World"' is not assignable to parameter of type '"Hello"'. Type '"World"' is not assignable to type '"Hello"'. tests/cases/conformance/types/stringLiteral/typeArgumentsWithStringLiteralTypes01.ts(104,25): error TS2345: Argument of type '"Hello" | "World"' is not assignable to parameter of type '"Hello"'. @@ -92,23 +85,18 @@ tests/cases/conformance/types/stringLiteral/typeArgumentsWithStringLiteralTypes0 a = takeReturnHelloWorld(a); ~ !!! error TS2345: Argument of type 'string' is not assignable to parameter of type '"Hello" | "World"'. -!!! error TS2345: Type 'string' is not assignable to type '"World"'. b = takeReturnHelloWorld(b); ~ !!! error TS2345: Argument of type 'string' is not assignable to parameter of type '"Hello" | "World"'. -!!! error TS2345: Type 'string' is not assignable to type '"World"'. c = takeReturnHelloWorld(c); ~ !!! error TS2345: Argument of type 'string' is not assignable to parameter of type '"Hello" | "World"'. -!!! error TS2345: Type 'string' is not assignable to type '"World"'. d = takeReturnHelloWorld(d); ~ !!! error TS2345: Argument of type 'string' is not assignable to parameter of type '"Hello" | "World"'. -!!! error TS2345: Type 'string' is not assignable to type '"World"'. e = takeReturnHelloWorld(e); ~ !!! error TS2345: Argument of type 'string' is not assignable to parameter of type '"Hello" | "World"'. -!!! error TS2345: Type 'string' is not assignable to type '"World"'. } namespace n2 { @@ -178,14 +166,12 @@ tests/cases/conformance/types/stringLiteral/typeArgumentsWithStringLiteralTypes0 a = takeReturnString(a); ~ !!! error TS2322: Type 'string' is not assignable to type '"Hello" | "World"'. -!!! error TS2322: Type 'string' is not assignable to type '"World"'. b = takeReturnString(b); c = takeReturnString(c); d = takeReturnString(d); e = takeReturnString(e); ~ !!! error TS2322: Type 'string' is not assignable to type '"Hello" | "World"'. -!!! error TS2322: Type 'string' is not assignable to type '"World"'. // Passing these as arguments should cause an error. a = takeReturnHello(a); diff --git a/tests/baselines/reference/typeAssertions.errors.txt b/tests/baselines/reference/typeAssertions.errors.txt index c7401e4fcf9..e330c23d737 100644 --- a/tests/baselines/reference/typeAssertions.errors.txt +++ b/tests/baselines/reference/typeAssertions.errors.txt @@ -1,11 +1,11 @@ tests/cases/conformance/expressions/typeAssertions/typeAssertions.ts(5,5): error TS2346: Supplied parameters do not match any signature of call target. -tests/cases/conformance/expressions/typeAssertions/typeAssertions.ts(31,12): error TS2352: Neither type 'SomeOther' nor type 'SomeBase' is assignable to the other. +tests/cases/conformance/expressions/typeAssertions/typeAssertions.ts(31,12): error TS2352: Type 'SomeOther' cannot be converted to type 'SomeBase'. Property 'p' is missing in type 'SomeOther'. -tests/cases/conformance/expressions/typeAssertions/typeAssertions.ts(35,15): error TS2352: Neither type 'SomeOther' nor type 'SomeDerived' is assignable to the other. +tests/cases/conformance/expressions/typeAssertions/typeAssertions.ts(35,15): error TS2352: Type 'SomeOther' cannot be converted to type 'SomeDerived'. Property 'x' is missing in type 'SomeOther'. -tests/cases/conformance/expressions/typeAssertions/typeAssertions.ts(37,13): error TS2352: Neither type 'SomeDerived' nor type 'SomeOther' is assignable to the other. +tests/cases/conformance/expressions/typeAssertions/typeAssertions.ts(37,13): error TS2352: Type 'SomeDerived' cannot be converted to type 'SomeOther'. Property 'q' is missing in type 'SomeDerived'. -tests/cases/conformance/expressions/typeAssertions/typeAssertions.ts(38,13): error TS2352: Neither type 'SomeBase' nor type 'SomeOther' is assignable to the other. +tests/cases/conformance/expressions/typeAssertions/typeAssertions.ts(38,13): error TS2352: Type 'SomeBase' cannot be converted to type 'SomeOther'. Property 'q' is missing in type 'SomeBase'. tests/cases/conformance/expressions/typeAssertions/typeAssertions.ts(44,5): error TS2304: Cannot find name 'numOrStr'. tests/cases/conformance/expressions/typeAssertions/typeAssertions.ts(44,14): error TS1005: '>' expected. @@ -58,23 +58,23 @@ tests/cases/conformance/expressions/typeAssertions/typeAssertions.ts(48,50): err someBase = someBase; someBase = someOther; // Error ~~~~~~~~~~~~~~~~~~~ -!!! error TS2352: Neither type 'SomeOther' nor type 'SomeBase' is assignable to the other. +!!! error TS2352: Type 'SomeOther' cannot be converted to type 'SomeBase'. !!! error TS2352: Property 'p' is missing in type 'SomeOther'. someDerived = someDerived; someDerived = someBase; someDerived = someOther; // Error ~~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2352: Neither type 'SomeOther' nor type 'SomeDerived' is assignable to the other. +!!! error TS2352: Type 'SomeOther' cannot be converted to type 'SomeDerived'. !!! error TS2352: Property 'x' is missing in type 'SomeOther'. someOther = someDerived; // Error ~~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2352: Neither type 'SomeDerived' nor type 'SomeOther' is assignable to the other. +!!! error TS2352: Type 'SomeDerived' cannot be converted to type 'SomeOther'. !!! error TS2352: Property 'q' is missing in type 'SomeDerived'. someOther = someBase; // Error ~~~~~~~~~~~~~~~~~~~ -!!! error TS2352: Neither type 'SomeBase' nor type 'SomeOther' is assignable to the other. +!!! error TS2352: Type 'SomeBase' cannot be converted to type 'SomeOther'. !!! error TS2352: Property 'q' is missing in type 'SomeBase'. someOther = someOther; diff --git a/tests/baselines/reference/typeAssertionsWithIntersectionTypes01.errors.txt b/tests/baselines/reference/typeAssertionsWithIntersectionTypes01.errors.txt new file mode 100644 index 00000000000..42ed640e8fc --- /dev/null +++ b/tests/baselines/reference/typeAssertionsWithIntersectionTypes01.errors.txt @@ -0,0 +1,34 @@ +tests/cases/conformance/types/typeRelationships/comparable/typeAssertionsWithIntersectionTypes01.ts(17,9): error TS2352: Type 'I2' cannot be converted to type 'I1 & I3'. + Type 'I2' is not comparable to type 'I3'. + Property 'p3' is missing in type 'I2'. +tests/cases/conformance/types/typeRelationships/comparable/typeAssertionsWithIntersectionTypes01.ts(18,9): error TS2352: Type 'I2' cannot be converted to type 'I3'. + + +==== tests/cases/conformance/types/typeRelationships/comparable/typeAssertionsWithIntersectionTypes01.ts (2 errors) ==== + interface I1 { + p1: number + } + + interface I2 extends I1 { + p2: number; + } + + interface I3 { + p3: number; + } + + var x = { p1: 10, p2: 20, p3: 30 }; + var y: I1 & I3 = x; + var z: I2 = x; + + var a = z; + ~~~~~~~~~~ +!!! error TS2352: Type 'I2' cannot be converted to type 'I1 & I3'. +!!! error TS2352: Type 'I2' is not comparable to type 'I3'. +!!! error TS2352: Property 'p3' is missing in type 'I2'. + var b = z; + ~~~~~ +!!! error TS2352: Type 'I2' cannot be converted to type 'I3'. + var c = z; + var d = y; + \ No newline at end of file diff --git a/tests/baselines/reference/typeAssertionsWithIntersectionTypes01.js b/tests/baselines/reference/typeAssertionsWithIntersectionTypes01.js new file mode 100644 index 00000000000..31fc831f95f --- /dev/null +++ b/tests/baselines/reference/typeAssertionsWithIntersectionTypes01.js @@ -0,0 +1,31 @@ +//// [typeAssertionsWithIntersectionTypes01.ts] +interface I1 { + p1: number +} + +interface I2 extends I1 { + p2: number; +} + +interface I3 { + p3: number; +} + +var x = { p1: 10, p2: 20, p3: 30 }; +var y: I1 & I3 = x; +var z: I2 = x; + +var a = z; +var b = z; +var c = z; +var d = y; + + +//// [typeAssertionsWithIntersectionTypes01.js] +var x = { p1: 10, p2: 20, p3: 30 }; +var y = x; +var z = x; +var a = z; +var b = z; +var c = z; +var d = y; diff --git a/tests/baselines/reference/typeAssertionsWithUnionTypes01.errors.txt b/tests/baselines/reference/typeAssertionsWithUnionTypes01.errors.txt new file mode 100644 index 00000000000..7bc2a9df9b3 --- /dev/null +++ b/tests/baselines/reference/typeAssertionsWithUnionTypes01.errors.txt @@ -0,0 +1,23 @@ +tests/cases/conformance/types/typeRelationships/comparable/typeAssertionsWithUnionTypes01.ts(14,9): error TS2352: Type 'I1' cannot be converted to type 'number'. + + +==== tests/cases/conformance/types/typeRelationships/comparable/typeAssertionsWithUnionTypes01.ts (1 errors) ==== + interface I1 { + p1: number + } + + interface I2 extends I1 { + p2: number; + } + + var x = { p1: 10, p2: 20 }; + var y: number | I2 = x; + var z: I1 = x; + + var a = z; + var b = z; + ~~~~~~~~~ +!!! error TS2352: Type 'I1' cannot be converted to type 'number'. + var c = z; + var d = y; + \ No newline at end of file diff --git a/tests/baselines/reference/typeAssertionsWithUnionTypes01.js b/tests/baselines/reference/typeAssertionsWithUnionTypes01.js new file mode 100644 index 00000000000..9cc448f6217 --- /dev/null +++ b/tests/baselines/reference/typeAssertionsWithUnionTypes01.js @@ -0,0 +1,27 @@ +//// [typeAssertionsWithUnionTypes01.ts] +interface I1 { + p1: number +} + +interface I2 extends I1 { + p2: number; +} + +var x = { p1: 10, p2: 20 }; +var y: number | I2 = x; +var z: I1 = x; + +var a = z; +var b = z; +var c = z; +var d = y; + + +//// [typeAssertionsWithUnionTypes01.js] +var x = { p1: 10, p2: 20 }; +var y = x; +var z = x; +var a = z; +var b = z; +var c = z; +var d = y; diff --git a/tests/baselines/reference/typeConstraintsWithConstructSignatures.symbols b/tests/baselines/reference/typeConstraintsWithConstructSignatures.symbols index f8848afcfab..6c6450ffd0e 100644 --- a/tests/baselines/reference/typeConstraintsWithConstructSignatures.symbols +++ b/tests/baselines/reference/typeConstraintsWithConstructSignatures.symbols @@ -11,25 +11,25 @@ class C { >Constructable : Symbol(Constructable, Decl(typeConstraintsWithConstructSignatures.ts, 0, 0)) constructor(public data: T, public data2: Constructable) { } ->data : Symbol(data, Decl(typeConstraintsWithConstructSignatures.ts, 5, 16)) +>data : Symbol(C.data, Decl(typeConstraintsWithConstructSignatures.ts, 5, 16)) >T : Symbol(T, Decl(typeConstraintsWithConstructSignatures.ts, 4, 8)) ->data2 : Symbol(data2, Decl(typeConstraintsWithConstructSignatures.ts, 5, 31)) +>data2 : Symbol(C.data2, Decl(typeConstraintsWithConstructSignatures.ts, 5, 31)) >Constructable : Symbol(Constructable, Decl(typeConstraintsWithConstructSignatures.ts, 0, 0)) create() { ->create : Symbol(create, Decl(typeConstraintsWithConstructSignatures.ts, 5, 64)) +>create : Symbol(C.create, Decl(typeConstraintsWithConstructSignatures.ts, 5, 64)) var x = new this.data(); // should not error >x : Symbol(x, Decl(typeConstraintsWithConstructSignatures.ts, 7, 11)) ->this.data : Symbol(data, Decl(typeConstraintsWithConstructSignatures.ts, 5, 16)) +>this.data : Symbol(C.data, Decl(typeConstraintsWithConstructSignatures.ts, 5, 16)) >this : Symbol(C, Decl(typeConstraintsWithConstructSignatures.ts, 2, 1)) ->data : Symbol(data, Decl(typeConstraintsWithConstructSignatures.ts, 5, 16)) +>data : Symbol(C.data, Decl(typeConstraintsWithConstructSignatures.ts, 5, 16)) var x2 = new this.data2(); // should not error >x2 : Symbol(x2, Decl(typeConstraintsWithConstructSignatures.ts, 8, 11)) ->this.data2 : Symbol(data2, Decl(typeConstraintsWithConstructSignatures.ts, 5, 31)) +>this.data2 : Symbol(C.data2, Decl(typeConstraintsWithConstructSignatures.ts, 5, 31)) >this : Symbol(C, Decl(typeConstraintsWithConstructSignatures.ts, 2, 1)) ->data2 : Symbol(data2, Decl(typeConstraintsWithConstructSignatures.ts, 5, 31)) +>data2 : Symbol(C.data2, Decl(typeConstraintsWithConstructSignatures.ts, 5, 31)) } } diff --git a/tests/baselines/reference/typeGuardEnums.types b/tests/baselines/reference/typeGuardEnums.types index 1d39a81d78a..2bef6915046 100644 --- a/tests/baselines/reference/typeGuardEnums.types +++ b/tests/baselines/reference/typeGuardEnums.types @@ -27,7 +27,7 @@ else { if (typeof x !== "number") { >typeof x !== "number" : boolean >typeof x : string ->x : number | string | E | V +>x : number | string >"number" : string x; // string @@ -35,6 +35,6 @@ if (typeof x !== "number") { } else { x; // number|E|V ->x : number | E | V +>x : number } diff --git a/tests/baselines/reference/typeGuardFunction.symbols b/tests/baselines/reference/typeGuardFunction.symbols index 13ad30de5c5..83bb3e713dd 100644 --- a/tests/baselines/reference/typeGuardFunction.symbols +++ b/tests/baselines/reference/typeGuardFunction.symbols @@ -4,14 +4,14 @@ class A { >A : Symbol(A, Decl(typeGuardFunction.ts, 0, 0)) propA: number; ->propA : Symbol(propA, Decl(typeGuardFunction.ts, 1, 9)) +>propA : Symbol(A.propA, Decl(typeGuardFunction.ts, 1, 9)) } class B { >B : Symbol(B, Decl(typeGuardFunction.ts, 3, 1)) propB: number; ->propB : Symbol(propB, Decl(typeGuardFunction.ts, 5, 9)) +>propB : Symbol(B.propB, Decl(typeGuardFunction.ts, 5, 9)) } class C extends A { @@ -19,7 +19,7 @@ class C extends A { >A : Symbol(A, Decl(typeGuardFunction.ts, 0, 0)) propC: number; ->propC : Symbol(propC, Decl(typeGuardFunction.ts, 9, 19)) +>propC : Symbol(C.propC, Decl(typeGuardFunction.ts, 9, 19)) } declare function isA(p1: any): p1 is A; @@ -139,7 +139,7 @@ class D { >D : Symbol(D, Decl(typeGuardFunction.ts, 54, 1)) method1(p1: A): p1 is C { ->method1 : Symbol(method1, Decl(typeGuardFunction.ts, 55, 9)) +>method1 : Symbol(D.method1, Decl(typeGuardFunction.ts, 55, 9)) >p1 : Symbol(p1, Decl(typeGuardFunction.ts, 56, 12)) >A : Symbol(A, Decl(typeGuardFunction.ts, 0, 0)) >p1 : Symbol(p1, Decl(typeGuardFunction.ts, 56, 12)) diff --git a/tests/baselines/reference/typeGuardFunctionErrors.errors.txt b/tests/baselines/reference/typeGuardFunctionErrors.errors.txt index 8e4bf651518..eac2660df81 100644 --- a/tests/baselines/reference/typeGuardFunctionErrors.errors.txt +++ b/tests/baselines/reference/typeGuardFunctionErrors.errors.txt @@ -12,10 +12,13 @@ tests/cases/conformance/expressions/typeGuards/typeGuardFunctionErrors.ts(31,5): tests/cases/conformance/expressions/typeGuards/typeGuardFunctionErrors.ts(31,5): error TS7027: Unreachable code detected. tests/cases/conformance/expressions/typeGuards/typeGuardFunctionErrors.ts(32,1): error TS1128: Declaration or statement expected. tests/cases/conformance/expressions/typeGuards/typeGuardFunctionErrors.ts(34,38): error TS1225: Cannot find parameter 'x'. -tests/cases/conformance/expressions/typeGuards/typeGuardFunctionErrors.ts(38,51): error TS2322: Type 'B' is not assignable to type 'A'. - Property 'propA' is missing in type 'B'. -tests/cases/conformance/expressions/typeGuards/typeGuardFunctionErrors.ts(42,56): error TS2322: Type 'number' is not assignable to type 'string'. -tests/cases/conformance/expressions/typeGuards/typeGuardFunctionErrors.ts(46,56): error TS2322: Type 'T[]' is not assignable to type 'string'. +tests/cases/conformance/expressions/typeGuards/typeGuardFunctionErrors.ts(38,51): error TS2677: A type predicate's type must be assignable to its parameter's type. + Type 'B' is not assignable to type 'A'. + Property 'propA' is missing in type 'B'. +tests/cases/conformance/expressions/typeGuards/typeGuardFunctionErrors.ts(42,56): error TS2677: A type predicate's type must be assignable to its parameter's type. + Type 'number' is not assignable to type 'string'. +tests/cases/conformance/expressions/typeGuards/typeGuardFunctionErrors.ts(46,56): error TS2677: A type predicate's type must be assignable to its parameter's type. + Type 'T[]' is not assignable to type 'string'. tests/cases/conformance/expressions/typeGuards/typeGuardFunctionErrors.ts(60,7): error TS2339: Property 'propB' does not exist on type 'A'. tests/cases/conformance/expressions/typeGuards/typeGuardFunctionErrors.ts(65,7): error TS2339: Property 'propB' does not exist on type 'A'. tests/cases/conformance/expressions/typeGuards/typeGuardFunctionErrors.ts(70,7): error TS2339: Property 'propB' does not exist on type 'A'. @@ -129,20 +132,23 @@ tests/cases/conformance/expressions/typeGuards/typeGuardFunctionErrors.ts(137,39 function hasNonMatchingParameterType1(x: A): x is B { ~ -!!! error TS2322: Type 'B' is not assignable to type 'A'. -!!! error TS2322: Property 'propA' is missing in type 'B'. +!!! error TS2677: A type predicate's type must be assignable to its parameter's type. +!!! error TS2677: Type 'B' is not assignable to type 'A'. +!!! error TS2677: Property 'propA' is missing in type 'B'. return true; } function hasNonMatchingParameterType2(x: string): x is number { ~~~~~~ -!!! error TS2322: Type 'number' is not assignable to type 'string'. +!!! error TS2677: A type predicate's type must be assignable to its parameter's type. +!!! error TS2677: Type 'number' is not assignable to type 'string'. return true; } function hasNonMathcingGenericType(a: string): a is T[] { ~~~ -!!! error TS2322: Type 'T[]' is not assignable to type 'string'. +!!! error TS2677: A type predicate's type must be assignable to its parameter's type. +!!! error TS2677: Type 'T[]' is not assignable to type 'string'. return true; } diff --git a/tests/baselines/reference/typeGuardFunctionGenerics.symbols b/tests/baselines/reference/typeGuardFunctionGenerics.symbols index 100d610070d..45debfcf73d 100644 --- a/tests/baselines/reference/typeGuardFunctionGenerics.symbols +++ b/tests/baselines/reference/typeGuardFunctionGenerics.symbols @@ -4,14 +4,14 @@ class A { >A : Symbol(A, Decl(typeGuardFunctionGenerics.ts, 0, 0)) propA: number; ->propA : Symbol(propA, Decl(typeGuardFunctionGenerics.ts, 1, 9)) +>propA : Symbol(A.propA, Decl(typeGuardFunctionGenerics.ts, 1, 9)) } class B { >B : Symbol(B, Decl(typeGuardFunctionGenerics.ts, 3, 1)) propB: number; ->propB : Symbol(propB, Decl(typeGuardFunctionGenerics.ts, 5, 9)) +>propB : Symbol(B.propB, Decl(typeGuardFunctionGenerics.ts, 5, 9)) } class C extends A { @@ -19,7 +19,7 @@ class C extends A { >A : Symbol(A, Decl(typeGuardFunctionGenerics.ts, 0, 0)) propC: number; ->propC : Symbol(propC, Decl(typeGuardFunctionGenerics.ts, 9, 19)) +>propC : Symbol(C.propC, Decl(typeGuardFunctionGenerics.ts, 9, 19)) } declare function isB(p1): p1 is B; diff --git a/tests/baselines/reference/typeGuardFunctionOfFormThis.js b/tests/baselines/reference/typeGuardFunctionOfFormThis.js index 0d1dceccede..ad85f679e0a 100644 --- a/tests/baselines/reference/typeGuardFunctionOfFormThis.js +++ b/tests/baselines/reference/typeGuardFunctionOfFormThis.js @@ -34,19 +34,19 @@ else if (b.isFollower()) { b.follow(); } -if (((a.isLeader)())) { - a.lead(); -} -else if (((a).isFollower())) { - a.follow(); -} +// if (((a.isLeader)())) { +// a.lead(); +// } +// else if (((a).isFollower())) { +// a.follow(); +// } -if (((a["isLeader"])())) { - a.lead(); -} -else if (((a)["isFollower"]())) { - a.follow(); -} +// if (((a["isLeader"])())) { +// a.lead(); +// } +// else if (((a)["isFollower"]())) { +// a.follow(); +// } var holder2 = {a}; @@ -190,18 +190,18 @@ if (b.isLeader()) { else if (b.isFollower()) { b.follow(); } -if (((a.isLeader)())) { - a.lead(); -} -else if (((a).isFollower())) { - a.follow(); -} -if (((a["isLeader"])())) { - a.lead(); -} -else if (((a)["isFollower"]())) { - a.follow(); -} +// if (((a.isLeader)())) { +// a.lead(); +// } +// else if (((a).isFollower())) { +// a.follow(); +// } +// if (((a["isLeader"])())) { +// a.lead(); +// } +// else if (((a)["isFollower"]())) { +// a.follow(); +// } var holder2 = { a: a }; if (holder2.a.isLeader()) { holder2.a; diff --git a/tests/baselines/reference/typeGuardFunctionOfFormThis.symbols b/tests/baselines/reference/typeGuardFunctionOfFormThis.symbols index 2968063dc51..3ac972200e2 100644 --- a/tests/baselines/reference/typeGuardFunctionOfFormThis.symbols +++ b/tests/baselines/reference/typeGuardFunctionOfFormThis.symbols @@ -3,7 +3,7 @@ class RoyalGuard { >RoyalGuard : Symbol(RoyalGuard, Decl(typeGuardFunctionOfFormThis.ts, 0, 0)) isLeader(): this is LeadGuard { ->isLeader : Symbol(isLeader, Decl(typeGuardFunctionOfFormThis.ts, 0, 18)) +>isLeader : Symbol(RoyalGuard.isLeader, Decl(typeGuardFunctionOfFormThis.ts, 0, 18)) >LeadGuard : Symbol(LeadGuard, Decl(typeGuardFunctionOfFormThis.ts, 7, 1)) return this instanceof LeadGuard; @@ -11,7 +11,7 @@ class RoyalGuard { >LeadGuard : Symbol(LeadGuard, Decl(typeGuardFunctionOfFormThis.ts, 7, 1)) } isFollower(): this is FollowerGuard { ->isFollower : Symbol(isFollower, Decl(typeGuardFunctionOfFormThis.ts, 3, 5)) +>isFollower : Symbol(RoyalGuard.isFollower, Decl(typeGuardFunctionOfFormThis.ts, 3, 5)) >FollowerGuard : Symbol(FollowerGuard, Decl(typeGuardFunctionOfFormThis.ts, 11, 1)) return this instanceof FollowerGuard; @@ -25,7 +25,7 @@ class LeadGuard extends RoyalGuard { >RoyalGuard : Symbol(RoyalGuard, Decl(typeGuardFunctionOfFormThis.ts, 0, 0)) lead(): void {}; ->lead : Symbol(lead, Decl(typeGuardFunctionOfFormThis.ts, 9, 36)) +>lead : Symbol(LeadGuard.lead, Decl(typeGuardFunctionOfFormThis.ts, 9, 36)) } class FollowerGuard extends RoyalGuard { @@ -33,7 +33,7 @@ class FollowerGuard extends RoyalGuard { >RoyalGuard : Symbol(RoyalGuard, Decl(typeGuardFunctionOfFormThis.ts, 0, 0)) follow(): void {}; ->follow : Symbol(follow, Decl(typeGuardFunctionOfFormThis.ts, 13, 40)) +>follow : Symbol(FollowerGuard.follow, Decl(typeGuardFunctionOfFormThis.ts, 13, 40)) } let a: RoyalGuard = new FollowerGuard(); @@ -91,45 +91,19 @@ else if (b.isFollower()) { >follow : Symbol(FollowerGuard.follow, Decl(typeGuardFunctionOfFormThis.ts, 13, 40)) } -if (((a.isLeader)())) { ->a.isLeader : Symbol(RoyalGuard.isLeader, Decl(typeGuardFunctionOfFormThis.ts, 0, 18)) ->a : Symbol(a, Decl(typeGuardFunctionOfFormThis.ts, 17, 3)) ->isLeader : Symbol(RoyalGuard.isLeader, Decl(typeGuardFunctionOfFormThis.ts, 0, 18)) +// if (((a.isLeader)())) { +// a.lead(); +// } +// else if (((a).isFollower())) { +// a.follow(); +// } - a.lead(); ->a.lead : Symbol(LeadGuard.lead, Decl(typeGuardFunctionOfFormThis.ts, 9, 36)) ->a : Symbol(a, Decl(typeGuardFunctionOfFormThis.ts, 17, 3)) ->lead : Symbol(LeadGuard.lead, Decl(typeGuardFunctionOfFormThis.ts, 9, 36)) -} -else if (((a).isFollower())) { ->(a).isFollower : Symbol(RoyalGuard.isFollower, Decl(typeGuardFunctionOfFormThis.ts, 3, 5)) ->a : Symbol(a, Decl(typeGuardFunctionOfFormThis.ts, 17, 3)) ->isFollower : Symbol(RoyalGuard.isFollower, Decl(typeGuardFunctionOfFormThis.ts, 3, 5)) - - a.follow(); ->a.follow : Symbol(FollowerGuard.follow, Decl(typeGuardFunctionOfFormThis.ts, 13, 40)) ->a : Symbol(a, Decl(typeGuardFunctionOfFormThis.ts, 17, 3)) ->follow : Symbol(FollowerGuard.follow, Decl(typeGuardFunctionOfFormThis.ts, 13, 40)) -} - -if (((a["isLeader"])())) { ->a : Symbol(a, Decl(typeGuardFunctionOfFormThis.ts, 17, 3)) ->"isLeader" : Symbol(RoyalGuard.isLeader, Decl(typeGuardFunctionOfFormThis.ts, 0, 18)) - - a.lead(); ->a.lead : Symbol(LeadGuard.lead, Decl(typeGuardFunctionOfFormThis.ts, 9, 36)) ->a : Symbol(a, Decl(typeGuardFunctionOfFormThis.ts, 17, 3)) ->lead : Symbol(LeadGuard.lead, Decl(typeGuardFunctionOfFormThis.ts, 9, 36)) -} -else if (((a)["isFollower"]())) { ->a : Symbol(a, Decl(typeGuardFunctionOfFormThis.ts, 17, 3)) ->"isFollower" : Symbol(RoyalGuard.isFollower, Decl(typeGuardFunctionOfFormThis.ts, 3, 5)) - - a.follow(); ->a.follow : Symbol(FollowerGuard.follow, Decl(typeGuardFunctionOfFormThis.ts, 13, 40)) ->a : Symbol(a, Decl(typeGuardFunctionOfFormThis.ts, 17, 3)) ->follow : Symbol(FollowerGuard.follow, Decl(typeGuardFunctionOfFormThis.ts, 13, 40)) -} +// if (((a["isLeader"])())) { +// a.lead(); +// } +// else if (((a)["isFollower"]())) { +// a.follow(); +// } var holder2 = {a}; >holder2 : Symbol(holder2, Decl(typeGuardFunctionOfFormThis.ts, 49, 3)) @@ -158,7 +132,7 @@ class ArrowGuard { >ArrowGuard : Symbol(ArrowGuard, Decl(typeGuardFunctionOfFormThis.ts, 56, 1)) isElite = (): this is ArrowElite => { ->isElite : Symbol(isElite, Decl(typeGuardFunctionOfFormThis.ts, 58, 18)) +>isElite : Symbol(ArrowGuard.isElite, Decl(typeGuardFunctionOfFormThis.ts, 58, 18)) >ArrowElite : Symbol(ArrowElite, Decl(typeGuardFunctionOfFormThis.ts, 65, 1)) return this instanceof ArrowElite; @@ -166,7 +140,7 @@ class ArrowGuard { >ArrowElite : Symbol(ArrowElite, Decl(typeGuardFunctionOfFormThis.ts, 65, 1)) } isMedic = (): this is ArrowMedic => { ->isMedic : Symbol(isMedic, Decl(typeGuardFunctionOfFormThis.ts, 61, 5)) +>isMedic : Symbol(ArrowGuard.isMedic, Decl(typeGuardFunctionOfFormThis.ts, 61, 5)) >ArrowMedic : Symbol(ArrowMedic, Decl(typeGuardFunctionOfFormThis.ts, 69, 1)) return this instanceof ArrowMedic; @@ -180,7 +154,7 @@ class ArrowElite extends ArrowGuard { >ArrowGuard : Symbol(ArrowGuard, Decl(typeGuardFunctionOfFormThis.ts, 56, 1)) defend(): void {} ->defend : Symbol(defend, Decl(typeGuardFunctionOfFormThis.ts, 67, 37)) +>defend : Symbol(ArrowElite.defend, Decl(typeGuardFunctionOfFormThis.ts, 67, 37)) } class ArrowMedic extends ArrowGuard { @@ -188,7 +162,7 @@ class ArrowMedic extends ArrowGuard { >ArrowGuard : Symbol(ArrowGuard, Decl(typeGuardFunctionOfFormThis.ts, 56, 1)) heal(): void {} ->heal : Symbol(heal, Decl(typeGuardFunctionOfFormThis.ts, 71, 37)) +>heal : Symbol(ArrowMedic.heal, Decl(typeGuardFunctionOfFormThis.ts, 71, 37)) } let guard = new ArrowGuard(); @@ -220,14 +194,14 @@ interface Supplies { >Supplies : Symbol(Supplies, Decl(typeGuardFunctionOfFormThis.ts, 81, 1)) spoiled: boolean; ->spoiled : Symbol(spoiled, Decl(typeGuardFunctionOfFormThis.ts, 83, 20)) +>spoiled : Symbol(Supplies.spoiled, Decl(typeGuardFunctionOfFormThis.ts, 83, 20)) } interface Sundries { >Sundries : Symbol(Sundries, Decl(typeGuardFunctionOfFormThis.ts, 85, 1)) broken: boolean; ->broken : Symbol(broken, Decl(typeGuardFunctionOfFormThis.ts, 87, 20)) +>broken : Symbol(Sundries.broken, Decl(typeGuardFunctionOfFormThis.ts, 87, 20)) } interface Crate { @@ -235,19 +209,19 @@ interface Crate { >T : Symbol(T, Decl(typeGuardFunctionOfFormThis.ts, 91, 16)) contents: T; ->contents : Symbol(contents, Decl(typeGuardFunctionOfFormThis.ts, 91, 20)) +>contents : Symbol(Crate.contents, Decl(typeGuardFunctionOfFormThis.ts, 91, 20)) >T : Symbol(T, Decl(typeGuardFunctionOfFormThis.ts, 91, 16)) volume: number; ->volume : Symbol(volume, Decl(typeGuardFunctionOfFormThis.ts, 92, 16)) +>volume : Symbol(Crate.volume, Decl(typeGuardFunctionOfFormThis.ts, 92, 16)) isSupplies(): this is Crate; ->isSupplies : Symbol(isSupplies, Decl(typeGuardFunctionOfFormThis.ts, 93, 19)) +>isSupplies : Symbol(Crate.isSupplies, Decl(typeGuardFunctionOfFormThis.ts, 93, 19)) >Crate : Symbol(Crate, Decl(typeGuardFunctionOfFormThis.ts, 89, 1)) >Supplies : Symbol(Supplies, Decl(typeGuardFunctionOfFormThis.ts, 81, 1)) isSundries(): this is Crate; ->isSundries : Symbol(isSundries, Decl(typeGuardFunctionOfFormThis.ts, 94, 42)) +>isSundries : Symbol(Crate.isSundries, Decl(typeGuardFunctionOfFormThis.ts, 94, 42)) >Crate : Symbol(Crate, Decl(typeGuardFunctionOfFormThis.ts, 89, 1)) >Sundries : Symbol(Sundries, Decl(typeGuardFunctionOfFormThis.ts, 85, 1)) } @@ -303,13 +277,13 @@ class MimicGuard { >MimicGuard : Symbol(MimicGuard, Decl(typeGuardFunctionOfFormThis.ts, 110, 24)) isLeader(): this is MimicLeader { return this instanceof MimicLeader; }; ->isLeader : Symbol(isLeader, Decl(typeGuardFunctionOfFormThis.ts, 112, 18)) +>isLeader : Symbol(MimicGuard.isLeader, Decl(typeGuardFunctionOfFormThis.ts, 112, 18)) >MimicLeader : Symbol(MimicLeader, Decl(typeGuardFunctionOfFormThis.ts, 115, 1)) >this : Symbol(MimicGuard, Decl(typeGuardFunctionOfFormThis.ts, 110, 24)) >MimicLeader : Symbol(MimicLeader, Decl(typeGuardFunctionOfFormThis.ts, 115, 1)) isFollower(): this is MimicFollower { return this instanceof MimicFollower; }; ->isFollower : Symbol(isFollower, Decl(typeGuardFunctionOfFormThis.ts, 113, 76)) +>isFollower : Symbol(MimicGuard.isFollower, Decl(typeGuardFunctionOfFormThis.ts, 113, 76)) >MimicFollower : Symbol(MimicFollower, Decl(typeGuardFunctionOfFormThis.ts, 119, 1)) >this : Symbol(MimicGuard, Decl(typeGuardFunctionOfFormThis.ts, 110, 24)) >MimicFollower : Symbol(MimicFollower, Decl(typeGuardFunctionOfFormThis.ts, 119, 1)) @@ -320,7 +294,7 @@ class MimicLeader extends MimicGuard { >MimicGuard : Symbol(MimicGuard, Decl(typeGuardFunctionOfFormThis.ts, 110, 24)) lead(): void {} ->lead : Symbol(lead, Decl(typeGuardFunctionOfFormThis.ts, 117, 38)) +>lead : Symbol(MimicLeader.lead, Decl(typeGuardFunctionOfFormThis.ts, 117, 38)) } class MimicFollower extends MimicGuard { @@ -328,7 +302,7 @@ class MimicFollower extends MimicGuard { >MimicGuard : Symbol(MimicGuard, Decl(typeGuardFunctionOfFormThis.ts, 110, 24)) follow(): void {} ->follow : Symbol(follow, Decl(typeGuardFunctionOfFormThis.ts, 121, 40)) +>follow : Symbol(MimicFollower.follow, Decl(typeGuardFunctionOfFormThis.ts, 121, 40)) } let mimic = new MimicGuard(); @@ -375,11 +349,11 @@ interface MimicGuardInterface { >MimicGuardInterface : Symbol(MimicGuardInterface, Decl(typeGuardFunctionOfFormThis.ts, 133, 1)) isLeader(): this is LeadGuard; ->isLeader : Symbol(isLeader, Decl(typeGuardFunctionOfFormThis.ts, 136, 31)) +>isLeader : Symbol(MimicGuardInterface.isLeader, Decl(typeGuardFunctionOfFormThis.ts, 136, 31)) >LeadGuard : Symbol(LeadGuard, Decl(typeGuardFunctionOfFormThis.ts, 7, 1)) isFollower(): this is FollowerGuard; ->isFollower : Symbol(isFollower, Decl(typeGuardFunctionOfFormThis.ts, 137, 34)) +>isFollower : Symbol(MimicGuardInterface.isFollower, Decl(typeGuardFunctionOfFormThis.ts, 137, 34)) >FollowerGuard : Symbol(FollowerGuard, Decl(typeGuardFunctionOfFormThis.ts, 11, 1)) } diff --git a/tests/baselines/reference/typeGuardFunctionOfFormThis.types b/tests/baselines/reference/typeGuardFunctionOfFormThis.types index 6b21fea3457..66d1a4b5b11 100644 --- a/tests/baselines/reference/typeGuardFunctionOfFormThis.types +++ b/tests/baselines/reference/typeGuardFunctionOfFormThis.types @@ -102,63 +102,19 @@ else if (b.isFollower()) { >follow : () => void } -if (((a.isLeader)())) { ->((a.isLeader)()) : boolean ->(a.isLeader)() : boolean ->(a.isLeader) : () => this is LeadGuard ->a.isLeader : () => this is LeadGuard ->a : RoyalGuard ->isLeader : () => this is LeadGuard +// if (((a.isLeader)())) { +// a.lead(); +// } +// else if (((a).isFollower())) { +// a.follow(); +// } - a.lead(); ->a.lead() : void ->a.lead : () => void ->a : LeadGuard ->lead : () => void -} -else if (((a).isFollower())) { ->((a).isFollower()) : boolean ->(a).isFollower() : boolean ->(a).isFollower : () => this is FollowerGuard ->(a) : RoyalGuard ->a : RoyalGuard ->isFollower : () => this is FollowerGuard - - a.follow(); ->a.follow() : void ->a.follow : () => void ->a : FollowerGuard ->follow : () => void -} - -if (((a["isLeader"])())) { ->((a["isLeader"])()) : boolean ->(a["isLeader"])() : boolean ->(a["isLeader"]) : () => this is LeadGuard ->a["isLeader"] : () => this is LeadGuard ->a : RoyalGuard ->"isLeader" : string - - a.lead(); ->a.lead() : void ->a.lead : () => void ->a : LeadGuard ->lead : () => void -} -else if (((a)["isFollower"]())) { ->((a)["isFollower"]()) : boolean ->(a)["isFollower"]() : boolean ->(a)["isFollower"] : () => this is FollowerGuard ->(a) : RoyalGuard ->a : RoyalGuard ->"isFollower" : string - - a.follow(); ->a.follow() : void ->a.follow : () => void ->a : FollowerGuard ->follow : () => void -} +// if (((a["isLeader"])())) { +// a.lead(); +// } +// else if (((a)["isFollower"]())) { +// a.follow(); +// } var holder2 = {a}; >holder2 : { a: RoyalGuard; } @@ -174,9 +130,9 @@ if (holder2.a.isLeader()) { >isLeader : () => this is LeadGuard holder2.a; ->holder2.a : RoyalGuard +>holder2.a : LeadGuard >holder2 : { a: RoyalGuard; } ->a : RoyalGuard +>a : LeadGuard } else { holder2.a; diff --git a/tests/baselines/reference/typeGuardInClass.errors.txt b/tests/baselines/reference/typeGuardInClass.errors.txt new file mode 100644 index 00000000000..aa86067576f --- /dev/null +++ b/tests/baselines/reference/typeGuardInClass.errors.txt @@ -0,0 +1,30 @@ +tests/cases/conformance/expressions/typeGuards/typeGuardInClass.ts(6,17): error TS2322: Type 'string | number' is not assignable to type 'string'. + Type 'number' is not assignable to type 'string'. +tests/cases/conformance/expressions/typeGuards/typeGuardInClass.ts(13,17): error TS2322: Type 'string | number' is not assignable to type 'number'. + Type 'string' is not assignable to type 'number'. + + +==== tests/cases/conformance/expressions/typeGuards/typeGuardInClass.ts (2 errors) ==== + let x: string | number; + + if (typeof x === "string") { + let n = class { + constructor() { + let y: string = x; + ~ +!!! error TS2322: Type 'string | number' is not assignable to type 'string'. +!!! error TS2322: Type 'number' is not assignable to type 'string'. + } + } + } + else { + let m = class { + constructor() { + let y: number = x; + ~ +!!! error TS2322: Type 'string | number' is not assignable to type 'number'. +!!! error TS2322: Type 'string' is not assignable to type 'number'. + } + } + } + \ No newline at end of file diff --git a/tests/baselines/reference/typeGuardInClass.symbols b/tests/baselines/reference/typeGuardInClass.symbols deleted file mode 100644 index cc0e745e4de..00000000000 --- a/tests/baselines/reference/typeGuardInClass.symbols +++ /dev/null @@ -1,29 +0,0 @@ -=== tests/cases/conformance/expressions/typeGuards/typeGuardInClass.ts === -let x: string | number; ->x : Symbol(x, Decl(typeGuardInClass.ts, 0, 3)) - -if (typeof x === "string") { ->x : Symbol(x, Decl(typeGuardInClass.ts, 0, 3)) - - let n = class { ->n : Symbol(n, Decl(typeGuardInClass.ts, 3, 7)) - - constructor() { - let y: string = x; ->y : Symbol(y, Decl(typeGuardInClass.ts, 5, 15)) ->x : Symbol(x, Decl(typeGuardInClass.ts, 0, 3)) - } - } -} -else { - let m = class { ->m : Symbol(m, Decl(typeGuardInClass.ts, 10, 7)) - - constructor() { - let y: number = x; ->y : Symbol(y, Decl(typeGuardInClass.ts, 12, 15)) ->x : Symbol(x, Decl(typeGuardInClass.ts, 0, 3)) - } - } -} - diff --git a/tests/baselines/reference/typeGuardInClass.types b/tests/baselines/reference/typeGuardInClass.types deleted file mode 100644 index 93fe9f28c5e..00000000000 --- a/tests/baselines/reference/typeGuardInClass.types +++ /dev/null @@ -1,34 +0,0 @@ -=== tests/cases/conformance/expressions/typeGuards/typeGuardInClass.ts === -let x: string | number; ->x : string | number - -if (typeof x === "string") { ->typeof x === "string" : boolean ->typeof x : string ->x : string | number ->"string" : string - - let n = class { ->n : typeof (Anonymous class) ->class { constructor() { let y: string = x; } } : typeof (Anonymous class) - - constructor() { - let y: string = x; ->y : string ->x : string - } - } -} -else { - let m = class { ->m : typeof (Anonymous class) ->class { constructor() { let y: number = x; } } : typeof (Anonymous class) - - constructor() { - let y: number = x; ->y : number ->x : number - } - } -} - diff --git a/tests/baselines/reference/typeGuardNesting.types b/tests/baselines/reference/typeGuardNesting.types index 255e96da89e..2b18e232412 100644 --- a/tests/baselines/reference/typeGuardNesting.types +++ b/tests/baselines/reference/typeGuardNesting.types @@ -34,7 +34,7 @@ if ((typeof strOrBool === 'boolean' && !strOrBool) || typeof strOrBool === 'stri >(typeof strOrBool === 'boolean') : boolean >typeof strOrBool === 'boolean' : boolean >typeof strOrBool : string ->strOrBool : boolean | string +>strOrBool : string | boolean >'boolean' : string >strOrBool : boolean >false : boolean @@ -56,7 +56,7 @@ if ((typeof strOrBool === 'boolean' && !strOrBool) || typeof strOrBool === 'stri >(typeof strOrBool !== 'string') : boolean >typeof strOrBool !== 'string' : boolean >typeof strOrBool : string ->strOrBool : boolean | string +>strOrBool : string | boolean >'string' : string >strOrBool : boolean >false : boolean @@ -68,7 +68,7 @@ if ((typeof strOrBool !== 'string' && !strOrBool) || typeof strOrBool !== 'boole >typeof strOrBool !== 'string' && !strOrBool : boolean >typeof strOrBool !== 'string' : boolean >typeof strOrBool : string ->strOrBool : string | boolean +>strOrBool : boolean | string >'string' : string >!strOrBool : boolean >strOrBool : boolean @@ -94,7 +94,7 @@ if ((typeof strOrBool !== 'string' && !strOrBool) || typeof strOrBool !== 'boole >(typeof strOrBool === 'boolean') : boolean >typeof strOrBool === 'boolean' : boolean >typeof strOrBool : string ->strOrBool : boolean | string +>strOrBool : string | boolean >'boolean' : string >strOrBool : boolean >false : boolean @@ -116,7 +116,7 @@ if ((typeof strOrBool !== 'string' && !strOrBool) || typeof strOrBool !== 'boole >(typeof strOrBool !== 'string') : boolean >typeof strOrBool !== 'string' : boolean >typeof strOrBool : string ->strOrBool : boolean | string +>strOrBool : string | boolean >'string' : string >strOrBool : boolean >false : boolean diff --git a/tests/baselines/reference/typeGuardOfFormExpr1AndExpr2.symbols b/tests/baselines/reference/typeGuardOfFormExpr1AndExpr2.symbols index b8db746ef91..3e8f00143ed 100644 --- a/tests/baselines/reference/typeGuardOfFormExpr1AndExpr2.symbols +++ b/tests/baselines/reference/typeGuardOfFormExpr1AndExpr2.symbols @@ -19,7 +19,7 @@ var numOrBool: number | boolean; class C { private p; } >C : Symbol(C, Decl(typeGuardOfFormExpr1AndExpr2.ts, 5, 32)) ->p : Symbol(p, Decl(typeGuardOfFormExpr1AndExpr2.ts, 6, 9)) +>p : Symbol(C.p, Decl(typeGuardOfFormExpr1AndExpr2.ts, 6, 9)) var c: C; >c : Symbol(c, Decl(typeGuardOfFormExpr1AndExpr2.ts, 7, 3)) diff --git a/tests/baselines/reference/typeGuardOfFormExpr1AndExpr2.types b/tests/baselines/reference/typeGuardOfFormExpr1AndExpr2.types index 10f50bed52e..a10d398988f 100644 --- a/tests/baselines/reference/typeGuardOfFormExpr1AndExpr2.types +++ b/tests/baselines/reference/typeGuardOfFormExpr1AndExpr2.types @@ -95,11 +95,11 @@ if (typeof strOrNumOrBoolOrC !== "string" && typeof strOrNumOrBoolOrC !== "numbe >typeof strOrNumOrBoolOrC !== "string" && typeof strOrNumOrBoolOrC !== "number" : boolean >typeof strOrNumOrBoolOrC !== "string" : boolean >typeof strOrNumOrBoolOrC : string ->strOrNumOrBoolOrC : string | number | boolean | C +>strOrNumOrBoolOrC : C | string | number | boolean >"string" : string >typeof strOrNumOrBoolOrC !== "number" : boolean >typeof strOrNumOrBoolOrC : string ->strOrNumOrBoolOrC : number | boolean | C +>strOrNumOrBoolOrC : C | number | boolean >"number" : string >typeof strOrNumOrBool === "boolean" : boolean >typeof strOrNumOrBool : string @@ -107,9 +107,9 @@ if (typeof strOrNumOrBoolOrC !== "string" && typeof strOrNumOrBoolOrC !== "numbe >"boolean" : string cOrBool = strOrNumOrBoolOrC; // C | boolean ->cOrBool = strOrNumOrBoolOrC : boolean | C +>cOrBool = strOrNumOrBoolOrC : C | boolean >cOrBool : C | boolean ->strOrNumOrBoolOrC : boolean | C +>strOrNumOrBoolOrC : C | boolean bool = strOrNumOrBool; // boolean >bool = strOrNumOrBool : boolean @@ -120,7 +120,7 @@ else { var r1: string | number | boolean | C = strOrNumOrBoolOrC; // string | number | boolean | C >r1 : string | number | boolean | C >C : C ->strOrNumOrBoolOrC : string | number | boolean | C +>strOrNumOrBoolOrC : string | number | C | boolean var r2: string | number | boolean = strOrNumOrBool; >r2 : string | number | boolean diff --git a/tests/baselines/reference/typeGuardOfFormExpr1OrExpr2.symbols b/tests/baselines/reference/typeGuardOfFormExpr1OrExpr2.symbols index f38b74b69b9..32a5422a393 100644 --- a/tests/baselines/reference/typeGuardOfFormExpr1OrExpr2.symbols +++ b/tests/baselines/reference/typeGuardOfFormExpr1OrExpr2.symbols @@ -19,7 +19,7 @@ var numOrBool: number | boolean; class C { private p; } >C : Symbol(C, Decl(typeGuardOfFormExpr1OrExpr2.ts, 5, 32)) ->p : Symbol(p, Decl(typeGuardOfFormExpr1OrExpr2.ts, 6, 9)) +>p : Symbol(C.p, Decl(typeGuardOfFormExpr1OrExpr2.ts, 6, 9)) var c: C; >c : Symbol(c, Decl(typeGuardOfFormExpr1OrExpr2.ts, 7, 3)) diff --git a/tests/baselines/reference/typeGuardOfFormInstanceOf.symbols b/tests/baselines/reference/typeGuardOfFormInstanceOf.symbols index 0dd2844f6ad..42797cc369f 100644 --- a/tests/baselines/reference/typeGuardOfFormInstanceOf.symbols +++ b/tests/baselines/reference/typeGuardOfFormInstanceOf.symbols @@ -9,26 +9,26 @@ class C1 { >C1 : Symbol(C1, Decl(typeGuardOfFormInstanceOf.ts, 0, 0)) p1: string; ->p1 : Symbol(p1, Decl(typeGuardOfFormInstanceOf.ts, 6, 10)) +>p1 : Symbol(C1.p1, Decl(typeGuardOfFormInstanceOf.ts, 6, 10)) } class C2 { >C2 : Symbol(C2, Decl(typeGuardOfFormInstanceOf.ts, 8, 1)) p2: number; ->p2 : Symbol(p2, Decl(typeGuardOfFormInstanceOf.ts, 9, 10)) +>p2 : Symbol(C2.p2, Decl(typeGuardOfFormInstanceOf.ts, 9, 10)) } class D1 extends C1 { >D1 : Symbol(D1, Decl(typeGuardOfFormInstanceOf.ts, 11, 1)) >C1 : Symbol(C1, Decl(typeGuardOfFormInstanceOf.ts, 0, 0)) p3: number; ->p3 : Symbol(p3, Decl(typeGuardOfFormInstanceOf.ts, 12, 21)) +>p3 : Symbol(D1.p3, Decl(typeGuardOfFormInstanceOf.ts, 12, 21)) } class C3 { >C3 : Symbol(C3, Decl(typeGuardOfFormInstanceOf.ts, 14, 1)) p4: number; ->p4 : Symbol(p4, Decl(typeGuardOfFormInstanceOf.ts, 15, 10)) +>p4 : Symbol(C3.p4, Decl(typeGuardOfFormInstanceOf.ts, 15, 10)) } var str: string; >str : Symbol(str, Decl(typeGuardOfFormInstanceOf.ts, 18, 3)) diff --git a/tests/baselines/reference/typeGuardOfFormInstanceOf.types b/tests/baselines/reference/typeGuardOfFormInstanceOf.types index 6b83b57dcb5..608e827f479 100644 --- a/tests/baselines/reference/typeGuardOfFormInstanceOf.types +++ b/tests/baselines/reference/typeGuardOfFormInstanceOf.types @@ -60,7 +60,7 @@ num = ctor1 instanceof C2 && ctor1.p2; // C2 >num : number >ctor1 instanceof C2 && ctor1.p2 : number >ctor1 instanceof C2 : boolean ->ctor1 : C1 | C2 +>ctor1 : C2 | C1 >C2 : typeof C2 >ctor1.p2 : number >ctor1 : C2 @@ -109,7 +109,7 @@ num = ctor2 instanceof D1 && ctor2.p3; // D1 >num : number >ctor2 instanceof D1 && ctor2.p3 : number >ctor2 instanceof D1 : boolean ->ctor2 : C2 | D1 +>ctor2 : D1 | C2 >D1 : typeof D1 >ctor2.p3 : number >ctor2 : D1 diff --git a/tests/baselines/reference/typeGuardOfFormInstanceOfOnInterface.symbols b/tests/baselines/reference/typeGuardOfFormInstanceOfOnInterface.symbols index aa634144399..177664ba339 100644 --- a/tests/baselines/reference/typeGuardOfFormInstanceOfOnInterface.symbols +++ b/tests/baselines/reference/typeGuardOfFormInstanceOfOnInterface.symbols @@ -12,11 +12,11 @@ interface C1 { >C1 : Symbol(C1, Decl(typeGuardOfFormInstanceOfOnInterface.ts, 0, 0)) prototype: C1; ->prototype : Symbol(prototype, Decl(typeGuardOfFormInstanceOfOnInterface.ts, 7, 11)) +>prototype : Symbol(C1.prototype, Decl(typeGuardOfFormInstanceOfOnInterface.ts, 7, 11)) >C1 : Symbol(C1, Decl(typeGuardOfFormInstanceOfOnInterface.ts, 0, 0)) p1: string; ->p1 : Symbol(p1, Decl(typeGuardOfFormInstanceOfOnInterface.ts, 8, 18)) +>p1 : Symbol(C1.p1, Decl(typeGuardOfFormInstanceOfOnInterface.ts, 8, 18)) } interface C2 { >C2 : Symbol(C2, Decl(typeGuardOfFormInstanceOfOnInterface.ts, 10, 1)) @@ -25,22 +25,22 @@ interface C2 { >C2 : Symbol(C2, Decl(typeGuardOfFormInstanceOfOnInterface.ts, 10, 1)) prototype: C2; ->prototype : Symbol(prototype, Decl(typeGuardOfFormInstanceOfOnInterface.ts, 12, 11)) +>prototype : Symbol(C2.prototype, Decl(typeGuardOfFormInstanceOfOnInterface.ts, 12, 11)) >C2 : Symbol(C2, Decl(typeGuardOfFormInstanceOfOnInterface.ts, 10, 1)) p2: number; ->p2 : Symbol(p2, Decl(typeGuardOfFormInstanceOfOnInterface.ts, 13, 18)) +>p2 : Symbol(C2.p2, Decl(typeGuardOfFormInstanceOfOnInterface.ts, 13, 18)) } interface D1 extends C1 { >D1 : Symbol(D1, Decl(typeGuardOfFormInstanceOfOnInterface.ts, 15, 1)) >C1 : Symbol(C1, Decl(typeGuardOfFormInstanceOfOnInterface.ts, 0, 0)) prototype: D1; ->prototype : Symbol(prototype, Decl(typeGuardOfFormInstanceOfOnInterface.ts, 16, 25)) +>prototype : Symbol(D1.prototype, Decl(typeGuardOfFormInstanceOfOnInterface.ts, 16, 25)) >D1 : Symbol(D1, Decl(typeGuardOfFormInstanceOfOnInterface.ts, 15, 1)) p3: number; ->p3 : Symbol(p3, Decl(typeGuardOfFormInstanceOfOnInterface.ts, 17, 18)) +>p3 : Symbol(D1.p3, Decl(typeGuardOfFormInstanceOfOnInterface.ts, 17, 18)) } var str: string; >str : Symbol(str, Decl(typeGuardOfFormInstanceOfOnInterface.ts, 20, 3)) diff --git a/tests/baselines/reference/typeGuardOfFormInstanceOfOnInterface.types b/tests/baselines/reference/typeGuardOfFormInstanceOfOnInterface.types index 20d1c1644fc..a5387e66d44 100644 --- a/tests/baselines/reference/typeGuardOfFormInstanceOfOnInterface.types +++ b/tests/baselines/reference/typeGuardOfFormInstanceOfOnInterface.types @@ -84,7 +84,7 @@ num = c1Orc2 instanceof c2 && c1Orc2.p2; // C2 >num : number >c1Orc2 instanceof c2 && c1Orc2.p2 : number >c1Orc2 instanceof c2 : boolean ->c1Orc2 : C1 | C2 +>c1Orc2 : C2 | C1 >c2 : C2 >c1Orc2.p2 : number >c1Orc2 : C2 @@ -133,7 +133,7 @@ num = c2Ord1 instanceof d1 && c2Ord1.p3; // D1 >num : number >c2Ord1 instanceof d1 && c2Ord1.p3 : number >c2Ord1 instanceof d1 : boolean ->c2Ord1 : C2 | D1 +>c2Ord1 : D1 | C2 >d1 : D1 >c2Ord1.p3 : number >c2Ord1 : D1 diff --git a/tests/baselines/reference/typeGuardOfFormIsType.symbols b/tests/baselines/reference/typeGuardOfFormIsType.symbols index e7e8965673d..faa825daeb4 100644 --- a/tests/baselines/reference/typeGuardOfFormIsType.symbols +++ b/tests/baselines/reference/typeGuardOfFormIsType.symbols @@ -4,20 +4,20 @@ class C1 { >C1 : Symbol(C1, Decl(typeGuardOfFormIsType.ts, 0, 0)) p1: string; ->p1 : Symbol(p1, Decl(typeGuardOfFormIsType.ts, 1, 10)) +>p1 : Symbol(C1.p1, Decl(typeGuardOfFormIsType.ts, 1, 10)) } class C2 { >C2 : Symbol(C2, Decl(typeGuardOfFormIsType.ts, 3, 1)) p2: number; ->p2 : Symbol(p2, Decl(typeGuardOfFormIsType.ts, 4, 10)) +>p2 : Symbol(C2.p2, Decl(typeGuardOfFormIsType.ts, 4, 10)) } class D1 extends C1 { >D1 : Symbol(D1, Decl(typeGuardOfFormIsType.ts, 6, 1)) >C1 : Symbol(C1, Decl(typeGuardOfFormIsType.ts, 0, 0)) p3: number; ->p3 : Symbol(p3, Decl(typeGuardOfFormIsType.ts, 7, 21)) +>p3 : Symbol(D1.p3, Decl(typeGuardOfFormIsType.ts, 7, 21)) } var str: string; >str : Symbol(str, Decl(typeGuardOfFormIsType.ts, 10, 3)) diff --git a/tests/baselines/reference/typeGuardOfFormIsType.types b/tests/baselines/reference/typeGuardOfFormIsType.types index e2059be7b63..23ce38732cd 100644 --- a/tests/baselines/reference/typeGuardOfFormIsType.types +++ b/tests/baselines/reference/typeGuardOfFormIsType.types @@ -80,7 +80,7 @@ num = isC2(c1Orc2) && c1Orc2.p2; // C2 >isC2(c1Orc2) && c1Orc2.p2 : number >isC2(c1Orc2) : boolean >isC2 : (x: any) => x is C2 ->c1Orc2 : C1 | C2 +>c1Orc2 : C2 | C1 >c1Orc2.p2 : number >c1Orc2 : C2 >p2 : number @@ -129,7 +129,7 @@ num = isD1(c2Ord1) && c2Ord1.p3; // D1 >isD1(c2Ord1) && c2Ord1.p3 : number >isD1(c2Ord1) : boolean >isD1 : (x: any) => x is D1 ->c2Ord1 : C2 | D1 +>c2Ord1 : D1 | C2 >c2Ord1.p3 : number >c2Ord1 : D1 >p3 : number diff --git a/tests/baselines/reference/typeGuardOfFormIsTypeOnInterfaces.symbols b/tests/baselines/reference/typeGuardOfFormIsTypeOnInterfaces.symbols index 641d20d95cd..64ecc01d6f1 100644 --- a/tests/baselines/reference/typeGuardOfFormIsTypeOnInterfaces.symbols +++ b/tests/baselines/reference/typeGuardOfFormIsTypeOnInterfaces.symbols @@ -7,11 +7,11 @@ interface C1 { >C1 : Symbol(C1, Decl(typeGuardOfFormIsTypeOnInterfaces.ts, 0, 0)) prototype: C1; ->prototype : Symbol(prototype, Decl(typeGuardOfFormIsTypeOnInterfaces.ts, 2, 11)) +>prototype : Symbol(C1.prototype, Decl(typeGuardOfFormIsTypeOnInterfaces.ts, 2, 11)) >C1 : Symbol(C1, Decl(typeGuardOfFormIsTypeOnInterfaces.ts, 0, 0)) p1: string; ->p1 : Symbol(p1, Decl(typeGuardOfFormIsTypeOnInterfaces.ts, 3, 18)) +>p1 : Symbol(C1.p1, Decl(typeGuardOfFormIsTypeOnInterfaces.ts, 3, 18)) } interface C2 { >C2 : Symbol(C2, Decl(typeGuardOfFormIsTypeOnInterfaces.ts, 5, 1)) @@ -20,22 +20,22 @@ interface C2 { >C2 : Symbol(C2, Decl(typeGuardOfFormIsTypeOnInterfaces.ts, 5, 1)) prototype: C2; ->prototype : Symbol(prototype, Decl(typeGuardOfFormIsTypeOnInterfaces.ts, 7, 11)) +>prototype : Symbol(C2.prototype, Decl(typeGuardOfFormIsTypeOnInterfaces.ts, 7, 11)) >C2 : Symbol(C2, Decl(typeGuardOfFormIsTypeOnInterfaces.ts, 5, 1)) p2: number; ->p2 : Symbol(p2, Decl(typeGuardOfFormIsTypeOnInterfaces.ts, 8, 18)) +>p2 : Symbol(C2.p2, Decl(typeGuardOfFormIsTypeOnInterfaces.ts, 8, 18)) } interface D1 extends C1 { >D1 : Symbol(D1, Decl(typeGuardOfFormIsTypeOnInterfaces.ts, 10, 1)) >C1 : Symbol(C1, Decl(typeGuardOfFormIsTypeOnInterfaces.ts, 0, 0)) prototype: D1; ->prototype : Symbol(prototype, Decl(typeGuardOfFormIsTypeOnInterfaces.ts, 11, 25)) +>prototype : Symbol(D1.prototype, Decl(typeGuardOfFormIsTypeOnInterfaces.ts, 11, 25)) >D1 : Symbol(D1, Decl(typeGuardOfFormIsTypeOnInterfaces.ts, 10, 1)) p3: number; ->p3 : Symbol(p3, Decl(typeGuardOfFormIsTypeOnInterfaces.ts, 12, 18)) +>p3 : Symbol(D1.p3, Decl(typeGuardOfFormIsTypeOnInterfaces.ts, 12, 18)) } var str: string; >str : Symbol(str, Decl(typeGuardOfFormIsTypeOnInterfaces.ts, 15, 3)) diff --git a/tests/baselines/reference/typeGuardOfFormIsTypeOnInterfaces.types b/tests/baselines/reference/typeGuardOfFormIsTypeOnInterfaces.types index ea169e95413..728d3dc0e38 100644 --- a/tests/baselines/reference/typeGuardOfFormIsTypeOnInterfaces.types +++ b/tests/baselines/reference/typeGuardOfFormIsTypeOnInterfaces.types @@ -111,7 +111,7 @@ num = isC2(c1Orc2) && c1Orc2.p2; // C2 >isC2(c1Orc2) && c1Orc2.p2 : number >isC2(c1Orc2) : boolean >isC2 : (x: any) => x is C2 ->c1Orc2 : C1 | C2 +>c1Orc2 : C2 | C1 >c1Orc2.p2 : number >c1Orc2 : C2 >p2 : number @@ -160,7 +160,7 @@ num = isD1(c2Ord1) && c2Ord1.p3; // D1 >isD1(c2Ord1) && c2Ord1.p3 : number >isD1(c2Ord1) : boolean >isD1 : (x: any) => x is D1 ->c2Ord1 : C2 | D1 +>c2Ord1 : D1 | C2 >c2Ord1.p3 : number >c2Ord1 : D1 >p3 : number diff --git a/tests/baselines/reference/typeGuardOfFormNotExpr.types b/tests/baselines/reference/typeGuardOfFormNotExpr.types index a99db08efab..e7cfd6a0dce 100644 --- a/tests/baselines/reference/typeGuardOfFormNotExpr.types +++ b/tests/baselines/reference/typeGuardOfFormNotExpr.types @@ -73,13 +73,13 @@ if (!(typeof strOrNumOrBool !== "string") || !(typeof strOrNumOrBool !== "number >(typeof strOrNumOrBool !== "string") : boolean >typeof strOrNumOrBool !== "string" : boolean >typeof strOrNumOrBool : string ->strOrNumOrBool : string | number | boolean +>strOrNumOrBool : boolean | string | number >"string" : string >!(typeof strOrNumOrBool !== "number") : boolean >(typeof strOrNumOrBool !== "number") : boolean >typeof strOrNumOrBool !== "number" : boolean >typeof strOrNumOrBool : string ->strOrNumOrBool : number | boolean +>strOrNumOrBool : boolean | number >"number" : string strOrNum = strOrNumOrBool; // string | number @@ -152,19 +152,19 @@ if (!(typeof strOrNumOrBool === "string") && numOrBool !== strOrNumOrBool) { >(typeof strOrNumOrBool === "string") : boolean >typeof strOrNumOrBool === "string" : boolean >typeof strOrNumOrBool : string ->strOrNumOrBool : string | number | boolean +>strOrNumOrBool : boolean | string | number >"string" : string >numOrBool !== strOrNumOrBool : boolean >numOrBool : number | boolean ->strOrNumOrBool : number | boolean +>strOrNumOrBool : boolean | number numOrBool = strOrNumOrBool; // number | boolean ->numOrBool = strOrNumOrBool : number | boolean +>numOrBool = strOrNumOrBool : boolean | number >numOrBool : number | boolean ->strOrNumOrBool : number | boolean +>strOrNumOrBool : boolean | number } else { var r1: string | number | boolean = strOrNumOrBool; // string | number | boolean >r1 : string | number | boolean ->strOrNumOrBool : string | number | boolean +>strOrNumOrBool : string | boolean | number } diff --git a/tests/baselines/reference/typeGuardOfFormTypeOfBoolean.js b/tests/baselines/reference/typeGuardOfFormTypeOfBoolean.js index e9e11275d0d..7d68b893373 100644 --- a/tests/baselines/reference/typeGuardOfFormTypeOfBoolean.js +++ b/tests/baselines/reference/typeGuardOfFormTypeOfBoolean.js @@ -42,12 +42,11 @@ else { c = boolOrC; // C } -// Narrowing occurs only if target type is a subtype of variable type if (typeof strOrNum === "boolean") { - var z1: string | number = strOrNum; // string | number + let z1: {} = strOrNum; // {} } else { - var z2: string | number = strOrNum; // string | number + let z2: string | number = strOrNum; // string | number } @@ -79,12 +78,11 @@ else { bool = boolOrC; // boolean } -// Narrowing occurs only if target type is a subtype of variable type if (typeof strOrNum !== "boolean") { - var z1: string | number = strOrNum; // string | number + let z1: string | number = strOrNum; // string | number } else { - var z2: string | number = strOrNum; // string | number + let z2: {} = strOrNum; // {} } @@ -134,9 +132,8 @@ if (typeof boolOrC === "boolean") { else { c = boolOrC; // C } -// Narrowing occurs only if target type is a subtype of variable type if (typeof strOrNum === "boolean") { - var z1 = strOrNum; // string | number + var z1 = strOrNum; // {} } else { var z2 = strOrNum; // string | number @@ -168,10 +165,9 @@ if (typeof boolOrC !== "boolean") { else { bool = boolOrC; // boolean } -// Narrowing occurs only if target type is a subtype of variable type if (typeof strOrNum !== "boolean") { var z1 = strOrNum; // string | number } else { - var z2 = strOrNum; // string | number + var z2 = strOrNum; // {} } diff --git a/tests/baselines/reference/typeGuardOfFormTypeOfBoolean.symbols b/tests/baselines/reference/typeGuardOfFormTypeOfBoolean.symbols index 7cb38bfdeaf..dbef84c28c7 100644 --- a/tests/baselines/reference/typeGuardOfFormTypeOfBoolean.symbols +++ b/tests/baselines/reference/typeGuardOfFormTypeOfBoolean.symbols @@ -1,7 +1,7 @@ === tests/cases/conformance/expressions/typeGuards/typeGuardOfFormTypeOfBoolean.ts === class C { private p: string }; >C : Symbol(C, Decl(typeGuardOfFormTypeOfBoolean.ts, 0, 0)) ->p : Symbol(p, Decl(typeGuardOfFormTypeOfBoolean.ts, 0, 9)) +>p : Symbol(C.p, Decl(typeGuardOfFormTypeOfBoolean.ts, 0, 9)) var str: string; >str : Symbol(str, Decl(typeGuardOfFormTypeOfBoolean.ts, 2, 3)) @@ -93,17 +93,16 @@ else { >boolOrC : Symbol(boolOrC, Decl(typeGuardOfFormTypeOfBoolean.ts, 11, 3)) } -// Narrowing occurs only if target type is a subtype of variable type if (typeof strOrNum === "boolean") { >strOrNum : Symbol(strOrNum, Decl(typeGuardOfFormTypeOfBoolean.ts, 5, 3)) - var z1: string | number = strOrNum; // string | number ->z1 : Symbol(z1, Decl(typeGuardOfFormTypeOfBoolean.ts, 45, 7), Decl(typeGuardOfFormTypeOfBoolean.ts, 82, 7)) + let z1: {} = strOrNum; // {} +>z1 : Symbol(z1, Decl(typeGuardOfFormTypeOfBoolean.ts, 44, 7)) >strOrNum : Symbol(strOrNum, Decl(typeGuardOfFormTypeOfBoolean.ts, 5, 3)) } else { - var z2: string | number = strOrNum; // string | number ->z2 : Symbol(z2, Decl(typeGuardOfFormTypeOfBoolean.ts, 48, 7), Decl(typeGuardOfFormTypeOfBoolean.ts, 85, 7)) + let z2: string | number = strOrNum; // string | number +>z2 : Symbol(z2, Decl(typeGuardOfFormTypeOfBoolean.ts, 47, 7)) >strOrNum : Symbol(strOrNum, Decl(typeGuardOfFormTypeOfBoolean.ts, 5, 3)) } @@ -160,17 +159,16 @@ else { >boolOrC : Symbol(boolOrC, Decl(typeGuardOfFormTypeOfBoolean.ts, 11, 3)) } -// Narrowing occurs only if target type is a subtype of variable type if (typeof strOrNum !== "boolean") { >strOrNum : Symbol(strOrNum, Decl(typeGuardOfFormTypeOfBoolean.ts, 5, 3)) - var z1: string | number = strOrNum; // string | number ->z1 : Symbol(z1, Decl(typeGuardOfFormTypeOfBoolean.ts, 45, 7), Decl(typeGuardOfFormTypeOfBoolean.ts, 82, 7)) + let z1: string | number = strOrNum; // string | number +>z1 : Symbol(z1, Decl(typeGuardOfFormTypeOfBoolean.ts, 80, 7)) >strOrNum : Symbol(strOrNum, Decl(typeGuardOfFormTypeOfBoolean.ts, 5, 3)) } else { - var z2: string | number = strOrNum; // string | number ->z2 : Symbol(z2, Decl(typeGuardOfFormTypeOfBoolean.ts, 48, 7), Decl(typeGuardOfFormTypeOfBoolean.ts, 85, 7)) + let z2: {} = strOrNum; // {} +>z2 : Symbol(z2, Decl(typeGuardOfFormTypeOfBoolean.ts, 83, 7)) >strOrNum : Symbol(strOrNum, Decl(typeGuardOfFormTypeOfBoolean.ts, 5, 3)) } diff --git a/tests/baselines/reference/typeGuardOfFormTypeOfBoolean.types b/tests/baselines/reference/typeGuardOfFormTypeOfBoolean.types index 9d9f28548be..564c6ceaa72 100644 --- a/tests/baselines/reference/typeGuardOfFormTypeOfBoolean.types +++ b/tests/baselines/reference/typeGuardOfFormTypeOfBoolean.types @@ -113,19 +113,18 @@ else { >boolOrC : C } -// Narrowing occurs only if target type is a subtype of variable type if (typeof strOrNum === "boolean") { >typeof strOrNum === "boolean" : boolean >typeof strOrNum : string >strOrNum : string | number >"boolean" : string - var z1: string | number = strOrNum; // string | number ->z1 : string | number ->strOrNum : string | number + let z1: {} = strOrNum; // {} +>z1 : {} +>strOrNum : nothing } else { - var z2: string | number = strOrNum; // string | number + let z2: string | number = strOrNum; // string | number >z2 : string | number >strOrNum : string | number } @@ -137,7 +136,7 @@ else { if (typeof strOrBool !== "boolean") { >typeof strOrBool !== "boolean" : boolean >typeof strOrBool : string ->strOrBool : string | boolean +>strOrBool : boolean | string >"boolean" : string str = strOrBool; // string @@ -154,7 +153,7 @@ else { if (typeof numOrBool !== "boolean") { >typeof numOrBool !== "boolean" : boolean >typeof numOrBool : string ->numOrBool : number | boolean +>numOrBool : boolean | number >"boolean" : string num = numOrBool; // number @@ -171,7 +170,7 @@ else { if (typeof strOrNumOrBool !== "boolean") { >typeof strOrNumOrBool !== "boolean" : boolean >typeof strOrNumOrBool : string ->strOrNumOrBool : string | number | boolean +>strOrNumOrBool : boolean | string | number >"boolean" : string strOrNum = strOrNumOrBool; // string | number @@ -203,20 +202,19 @@ else { >boolOrC : boolean } -// Narrowing occurs only if target type is a subtype of variable type if (typeof strOrNum !== "boolean") { >typeof strOrNum !== "boolean" : boolean >typeof strOrNum : string >strOrNum : string | number >"boolean" : string - var z1: string | number = strOrNum; // string | number + let z1: string | number = strOrNum; // string | number >z1 : string | number >strOrNum : string | number } else { - var z2: string | number = strOrNum; // string | number ->z2 : string | number ->strOrNum : string | number + let z2: {} = strOrNum; // {} +>z2 : {} +>strOrNum : nothing } diff --git a/tests/baselines/reference/typeGuardOfFormTypeOfEqualEqualHasNoEffect.errors.txt b/tests/baselines/reference/typeGuardOfFormTypeOfEqualEqualHasNoEffect.errors.txt new file mode 100644 index 00000000000..c76c6e819df --- /dev/null +++ b/tests/baselines/reference/typeGuardOfFormTypeOfEqualEqualHasNoEffect.errors.txt @@ -0,0 +1,50 @@ +tests/cases/conformance/expressions/typeGuards/typeGuardOfFormTypeOfEqualEqualHasNoEffect.ts(13,9): error TS2403: Subsequent variable declarations must have the same type. Variable 'r1' must be of type 'string', but here has type 'number'. +tests/cases/conformance/expressions/typeGuards/typeGuardOfFormTypeOfEqualEqualHasNoEffect.ts(20,9): error TS2403: Subsequent variable declarations must have the same type. Variable 'r2' must be of type 'boolean', but here has type 'string'. +tests/cases/conformance/expressions/typeGuards/typeGuardOfFormTypeOfEqualEqualHasNoEffect.ts(27,9): error TS2403: Subsequent variable declarations must have the same type. Variable 'r3' must be of type 'number', but here has type 'boolean'. +tests/cases/conformance/expressions/typeGuards/typeGuardOfFormTypeOfEqualEqualHasNoEffect.ts(34,9): error TS2403: Subsequent variable declarations must have the same type. Variable 'r4' must be of type 'C', but here has type 'string'. + + +==== tests/cases/conformance/expressions/typeGuards/typeGuardOfFormTypeOfEqualEqualHasNoEffect.ts (4 errors) ==== + class C { private p: string }; + + var strOrNum: string | number; + var strOrBool: string | boolean; + var numOrBool: number | boolean + var strOrC: string | C; + + // typeof x == s has not effect on typeguard + if (typeof strOrNum == "string") { + var r1 = strOrNum; // string | number + } + else { + var r1 = strOrNum; // string | number + ~~ +!!! error TS2403: Subsequent variable declarations must have the same type. Variable 'r1' must be of type 'string', but here has type 'number'. + } + + if (typeof strOrBool == "boolean") { + var r2 = strOrBool; // string | boolean + } + else { + var r2 = strOrBool; // string | boolean + ~~ +!!! error TS2403: Subsequent variable declarations must have the same type. Variable 'r2' must be of type 'boolean', but here has type 'string'. + } + + if (typeof numOrBool == "number") { + var r3 = numOrBool; // number | boolean + } + else { + var r3 = numOrBool; // number | boolean + ~~ +!!! error TS2403: Subsequent variable declarations must have the same type. Variable 'r3' must be of type 'number', but here has type 'boolean'. + } + + if (typeof strOrC == "Object") { + var r4 = strOrC; // string | C + } + else { + var r4 = strOrC; // string | C + ~~ +!!! error TS2403: Subsequent variable declarations must have the same type. Variable 'r4' must be of type 'C', but here has type 'string'. + } \ No newline at end of file diff --git a/tests/baselines/reference/typeGuardOfFormTypeOfEqualEqualHasNoEffect.symbols b/tests/baselines/reference/typeGuardOfFormTypeOfEqualEqualHasNoEffect.symbols deleted file mode 100644 index 69e0dc78738..00000000000 --- a/tests/baselines/reference/typeGuardOfFormTypeOfEqualEqualHasNoEffect.symbols +++ /dev/null @@ -1,70 +0,0 @@ -=== tests/cases/conformance/expressions/typeGuards/typeGuardOfFormTypeOfEqualEqualHasNoEffect.ts === -class C { private p: string }; ->C : Symbol(C, Decl(typeGuardOfFormTypeOfEqualEqualHasNoEffect.ts, 0, 0)) ->p : Symbol(p, Decl(typeGuardOfFormTypeOfEqualEqualHasNoEffect.ts, 0, 9)) - -var strOrNum: string | number; ->strOrNum : Symbol(strOrNum, Decl(typeGuardOfFormTypeOfEqualEqualHasNoEffect.ts, 2, 3)) - -var strOrBool: string | boolean; ->strOrBool : Symbol(strOrBool, Decl(typeGuardOfFormTypeOfEqualEqualHasNoEffect.ts, 3, 3)) - -var numOrBool: number | boolean ->numOrBool : Symbol(numOrBool, Decl(typeGuardOfFormTypeOfEqualEqualHasNoEffect.ts, 4, 3)) - -var strOrC: string | C; ->strOrC : Symbol(strOrC, Decl(typeGuardOfFormTypeOfEqualEqualHasNoEffect.ts, 5, 3)) ->C : Symbol(C, Decl(typeGuardOfFormTypeOfEqualEqualHasNoEffect.ts, 0, 0)) - -// typeof x == s has not effect on typeguard -if (typeof strOrNum == "string") { ->strOrNum : Symbol(strOrNum, Decl(typeGuardOfFormTypeOfEqualEqualHasNoEffect.ts, 2, 3)) - - var r1 = strOrNum; // string | number ->r1 : Symbol(r1, Decl(typeGuardOfFormTypeOfEqualEqualHasNoEffect.ts, 9, 7), Decl(typeGuardOfFormTypeOfEqualEqualHasNoEffect.ts, 12, 7)) ->strOrNum : Symbol(strOrNum, Decl(typeGuardOfFormTypeOfEqualEqualHasNoEffect.ts, 2, 3)) -} -else { - var r1 = strOrNum; // string | number ->r1 : Symbol(r1, Decl(typeGuardOfFormTypeOfEqualEqualHasNoEffect.ts, 9, 7), Decl(typeGuardOfFormTypeOfEqualEqualHasNoEffect.ts, 12, 7)) ->strOrNum : Symbol(strOrNum, Decl(typeGuardOfFormTypeOfEqualEqualHasNoEffect.ts, 2, 3)) -} - -if (typeof strOrBool == "boolean") { ->strOrBool : Symbol(strOrBool, Decl(typeGuardOfFormTypeOfEqualEqualHasNoEffect.ts, 3, 3)) - - var r2 = strOrBool; // string | boolean ->r2 : Symbol(r2, Decl(typeGuardOfFormTypeOfEqualEqualHasNoEffect.ts, 16, 7), Decl(typeGuardOfFormTypeOfEqualEqualHasNoEffect.ts, 19, 7)) ->strOrBool : Symbol(strOrBool, Decl(typeGuardOfFormTypeOfEqualEqualHasNoEffect.ts, 3, 3)) -} -else { - var r2 = strOrBool; // string | boolean ->r2 : Symbol(r2, Decl(typeGuardOfFormTypeOfEqualEqualHasNoEffect.ts, 16, 7), Decl(typeGuardOfFormTypeOfEqualEqualHasNoEffect.ts, 19, 7)) ->strOrBool : Symbol(strOrBool, Decl(typeGuardOfFormTypeOfEqualEqualHasNoEffect.ts, 3, 3)) -} - -if (typeof numOrBool == "number") { ->numOrBool : Symbol(numOrBool, Decl(typeGuardOfFormTypeOfEqualEqualHasNoEffect.ts, 4, 3)) - - var r3 = numOrBool; // number | boolean ->r3 : Symbol(r3, Decl(typeGuardOfFormTypeOfEqualEqualHasNoEffect.ts, 23, 7), Decl(typeGuardOfFormTypeOfEqualEqualHasNoEffect.ts, 26, 7)) ->numOrBool : Symbol(numOrBool, Decl(typeGuardOfFormTypeOfEqualEqualHasNoEffect.ts, 4, 3)) -} -else { - var r3 = numOrBool; // number | boolean ->r3 : Symbol(r3, Decl(typeGuardOfFormTypeOfEqualEqualHasNoEffect.ts, 23, 7), Decl(typeGuardOfFormTypeOfEqualEqualHasNoEffect.ts, 26, 7)) ->numOrBool : Symbol(numOrBool, Decl(typeGuardOfFormTypeOfEqualEqualHasNoEffect.ts, 4, 3)) -} - -if (typeof strOrC == "Object") { ->strOrC : Symbol(strOrC, Decl(typeGuardOfFormTypeOfEqualEqualHasNoEffect.ts, 5, 3)) - - var r4 = strOrC; // string | C ->r4 : Symbol(r4, Decl(typeGuardOfFormTypeOfEqualEqualHasNoEffect.ts, 30, 7), Decl(typeGuardOfFormTypeOfEqualEqualHasNoEffect.ts, 33, 7)) ->strOrC : Symbol(strOrC, Decl(typeGuardOfFormTypeOfEqualEqualHasNoEffect.ts, 5, 3)) -} -else { - var r4 = strOrC; // string | C ->r4 : Symbol(r4, Decl(typeGuardOfFormTypeOfEqualEqualHasNoEffect.ts, 30, 7), Decl(typeGuardOfFormTypeOfEqualEqualHasNoEffect.ts, 33, 7)) ->strOrC : Symbol(strOrC, Decl(typeGuardOfFormTypeOfEqualEqualHasNoEffect.ts, 5, 3)) -} diff --git a/tests/baselines/reference/typeGuardOfFormTypeOfEqualEqualHasNoEffect.types b/tests/baselines/reference/typeGuardOfFormTypeOfEqualEqualHasNoEffect.types deleted file mode 100644 index 4bfc8fe6bf1..00000000000 --- a/tests/baselines/reference/typeGuardOfFormTypeOfEqualEqualHasNoEffect.types +++ /dev/null @@ -1,82 +0,0 @@ -=== tests/cases/conformance/expressions/typeGuards/typeGuardOfFormTypeOfEqualEqualHasNoEffect.ts === -class C { private p: string }; ->C : C ->p : string - -var strOrNum: string | number; ->strOrNum : string | number - -var strOrBool: string | boolean; ->strOrBool : string | boolean - -var numOrBool: number | boolean ->numOrBool : number | boolean - -var strOrC: string | C; ->strOrC : string | C ->C : C - -// typeof x == s has not effect on typeguard -if (typeof strOrNum == "string") { ->typeof strOrNum == "string" : boolean ->typeof strOrNum : string ->strOrNum : string | number ->"string" : string - - var r1 = strOrNum; // string | number ->r1 : string | number ->strOrNum : string | number -} -else { - var r1 = strOrNum; // string | number ->r1 : string | number ->strOrNum : string | number -} - -if (typeof strOrBool == "boolean") { ->typeof strOrBool == "boolean" : boolean ->typeof strOrBool : string ->strOrBool : string | boolean ->"boolean" : string - - var r2 = strOrBool; // string | boolean ->r2 : string | boolean ->strOrBool : string | boolean -} -else { - var r2 = strOrBool; // string | boolean ->r2 : string | boolean ->strOrBool : string | boolean -} - -if (typeof numOrBool == "number") { ->typeof numOrBool == "number" : boolean ->typeof numOrBool : string ->numOrBool : number | boolean ->"number" : string - - var r3 = numOrBool; // number | boolean ->r3 : number | boolean ->numOrBool : number | boolean -} -else { - var r3 = numOrBool; // number | boolean ->r3 : number | boolean ->numOrBool : number | boolean -} - -if (typeof strOrC == "Object") { ->typeof strOrC == "Object" : boolean ->typeof strOrC : string ->strOrC : string | C ->"Object" : string - - var r4 = strOrC; // string | C ->r4 : string | C ->strOrC : string | C -} -else { - var r4 = strOrC; // string | C ->r4 : string | C ->strOrC : string | C -} diff --git a/tests/baselines/reference/typeGuardOfFormTypeOfNotEqualHasNoEffect.errors.txt b/tests/baselines/reference/typeGuardOfFormTypeOfNotEqualHasNoEffect.errors.txt new file mode 100644 index 00000000000..3b29f3ecba8 --- /dev/null +++ b/tests/baselines/reference/typeGuardOfFormTypeOfNotEqualHasNoEffect.errors.txt @@ -0,0 +1,50 @@ +tests/cases/conformance/expressions/typeGuards/typeGuardOfFormTypeOfNotEqualHasNoEffect.ts(13,9): error TS2403: Subsequent variable declarations must have the same type. Variable 'r1' must be of type 'number', but here has type 'string'. +tests/cases/conformance/expressions/typeGuards/typeGuardOfFormTypeOfNotEqualHasNoEffect.ts(20,9): error TS2403: Subsequent variable declarations must have the same type. Variable 'r2' must be of type 'string', but here has type 'boolean'. +tests/cases/conformance/expressions/typeGuards/typeGuardOfFormTypeOfNotEqualHasNoEffect.ts(27,9): error TS2403: Subsequent variable declarations must have the same type. Variable 'r3' must be of type 'boolean', but here has type 'number'. +tests/cases/conformance/expressions/typeGuards/typeGuardOfFormTypeOfNotEqualHasNoEffect.ts(34,9): error TS2403: Subsequent variable declarations must have the same type. Variable 'r4' must be of type 'string', but here has type 'C'. + + +==== tests/cases/conformance/expressions/typeGuards/typeGuardOfFormTypeOfNotEqualHasNoEffect.ts (4 errors) ==== + class C { private p: string }; + + var strOrNum: string | number; + var strOrBool: string | boolean; + var numOrBool: number | boolean + var strOrC: string | C; + + // typeof x != s has not effect on typeguard + if (typeof strOrNum != "string") { + var r1 = strOrNum; // string | number + } + else { + var r1 = strOrNum; // string | number + ~~ +!!! error TS2403: Subsequent variable declarations must have the same type. Variable 'r1' must be of type 'number', but here has type 'string'. + } + + if (typeof strOrBool != "boolean") { + var r2 = strOrBool; // string | boolean + } + else { + var r2 = strOrBool; // string | boolean + ~~ +!!! error TS2403: Subsequent variable declarations must have the same type. Variable 'r2' must be of type 'string', but here has type 'boolean'. + } + + if (typeof numOrBool != "number") { + var r3 = numOrBool; // number | boolean + } + else { + var r3 = numOrBool; // number | boolean + ~~ +!!! error TS2403: Subsequent variable declarations must have the same type. Variable 'r3' must be of type 'boolean', but here has type 'number'. + } + + if (typeof strOrC != "Object") { + var r4 = strOrC; // string | C + } + else { + var r4 = strOrC; // string | C + ~~ +!!! error TS2403: Subsequent variable declarations must have the same type. Variable 'r4' must be of type 'string', but here has type 'C'. + } \ No newline at end of file diff --git a/tests/baselines/reference/typeGuardOfFormTypeOfNotEqualHasNoEffect.symbols b/tests/baselines/reference/typeGuardOfFormTypeOfNotEqualHasNoEffect.symbols deleted file mode 100644 index b22f1e313a4..00000000000 --- a/tests/baselines/reference/typeGuardOfFormTypeOfNotEqualHasNoEffect.symbols +++ /dev/null @@ -1,70 +0,0 @@ -=== tests/cases/conformance/expressions/typeGuards/typeGuardOfFormTypeOfNotEqualHasNoEffect.ts === -class C { private p: string }; ->C : Symbol(C, Decl(typeGuardOfFormTypeOfNotEqualHasNoEffect.ts, 0, 0)) ->p : Symbol(p, Decl(typeGuardOfFormTypeOfNotEqualHasNoEffect.ts, 0, 9)) - -var strOrNum: string | number; ->strOrNum : Symbol(strOrNum, Decl(typeGuardOfFormTypeOfNotEqualHasNoEffect.ts, 2, 3)) - -var strOrBool: string | boolean; ->strOrBool : Symbol(strOrBool, Decl(typeGuardOfFormTypeOfNotEqualHasNoEffect.ts, 3, 3)) - -var numOrBool: number | boolean ->numOrBool : Symbol(numOrBool, Decl(typeGuardOfFormTypeOfNotEqualHasNoEffect.ts, 4, 3)) - -var strOrC: string | C; ->strOrC : Symbol(strOrC, Decl(typeGuardOfFormTypeOfNotEqualHasNoEffect.ts, 5, 3)) ->C : Symbol(C, Decl(typeGuardOfFormTypeOfNotEqualHasNoEffect.ts, 0, 0)) - -// typeof x != s has not effect on typeguard -if (typeof strOrNum != "string") { ->strOrNum : Symbol(strOrNum, Decl(typeGuardOfFormTypeOfNotEqualHasNoEffect.ts, 2, 3)) - - var r1 = strOrNum; // string | number ->r1 : Symbol(r1, Decl(typeGuardOfFormTypeOfNotEqualHasNoEffect.ts, 9, 7), Decl(typeGuardOfFormTypeOfNotEqualHasNoEffect.ts, 12, 7)) ->strOrNum : Symbol(strOrNum, Decl(typeGuardOfFormTypeOfNotEqualHasNoEffect.ts, 2, 3)) -} -else { - var r1 = strOrNum; // string | number ->r1 : Symbol(r1, Decl(typeGuardOfFormTypeOfNotEqualHasNoEffect.ts, 9, 7), Decl(typeGuardOfFormTypeOfNotEqualHasNoEffect.ts, 12, 7)) ->strOrNum : Symbol(strOrNum, Decl(typeGuardOfFormTypeOfNotEqualHasNoEffect.ts, 2, 3)) -} - -if (typeof strOrBool != "boolean") { ->strOrBool : Symbol(strOrBool, Decl(typeGuardOfFormTypeOfNotEqualHasNoEffect.ts, 3, 3)) - - var r2 = strOrBool; // string | boolean ->r2 : Symbol(r2, Decl(typeGuardOfFormTypeOfNotEqualHasNoEffect.ts, 16, 7), Decl(typeGuardOfFormTypeOfNotEqualHasNoEffect.ts, 19, 7)) ->strOrBool : Symbol(strOrBool, Decl(typeGuardOfFormTypeOfNotEqualHasNoEffect.ts, 3, 3)) -} -else { - var r2 = strOrBool; // string | boolean ->r2 : Symbol(r2, Decl(typeGuardOfFormTypeOfNotEqualHasNoEffect.ts, 16, 7), Decl(typeGuardOfFormTypeOfNotEqualHasNoEffect.ts, 19, 7)) ->strOrBool : Symbol(strOrBool, Decl(typeGuardOfFormTypeOfNotEqualHasNoEffect.ts, 3, 3)) -} - -if (typeof numOrBool != "number") { ->numOrBool : Symbol(numOrBool, Decl(typeGuardOfFormTypeOfNotEqualHasNoEffect.ts, 4, 3)) - - var r3 = numOrBool; // number | boolean ->r3 : Symbol(r3, Decl(typeGuardOfFormTypeOfNotEqualHasNoEffect.ts, 23, 7), Decl(typeGuardOfFormTypeOfNotEqualHasNoEffect.ts, 26, 7)) ->numOrBool : Symbol(numOrBool, Decl(typeGuardOfFormTypeOfNotEqualHasNoEffect.ts, 4, 3)) -} -else { - var r3 = numOrBool; // number | boolean ->r3 : Symbol(r3, Decl(typeGuardOfFormTypeOfNotEqualHasNoEffect.ts, 23, 7), Decl(typeGuardOfFormTypeOfNotEqualHasNoEffect.ts, 26, 7)) ->numOrBool : Symbol(numOrBool, Decl(typeGuardOfFormTypeOfNotEqualHasNoEffect.ts, 4, 3)) -} - -if (typeof strOrC != "Object") { ->strOrC : Symbol(strOrC, Decl(typeGuardOfFormTypeOfNotEqualHasNoEffect.ts, 5, 3)) - - var r4 = strOrC; // string | C ->r4 : Symbol(r4, Decl(typeGuardOfFormTypeOfNotEqualHasNoEffect.ts, 30, 7), Decl(typeGuardOfFormTypeOfNotEqualHasNoEffect.ts, 33, 7)) ->strOrC : Symbol(strOrC, Decl(typeGuardOfFormTypeOfNotEqualHasNoEffect.ts, 5, 3)) -} -else { - var r4 = strOrC; // string | C ->r4 : Symbol(r4, Decl(typeGuardOfFormTypeOfNotEqualHasNoEffect.ts, 30, 7), Decl(typeGuardOfFormTypeOfNotEqualHasNoEffect.ts, 33, 7)) ->strOrC : Symbol(strOrC, Decl(typeGuardOfFormTypeOfNotEqualHasNoEffect.ts, 5, 3)) -} diff --git a/tests/baselines/reference/typeGuardOfFormTypeOfNotEqualHasNoEffect.types b/tests/baselines/reference/typeGuardOfFormTypeOfNotEqualHasNoEffect.types deleted file mode 100644 index 6eabeb25ede..00000000000 --- a/tests/baselines/reference/typeGuardOfFormTypeOfNotEqualHasNoEffect.types +++ /dev/null @@ -1,82 +0,0 @@ -=== tests/cases/conformance/expressions/typeGuards/typeGuardOfFormTypeOfNotEqualHasNoEffect.ts === -class C { private p: string }; ->C : C ->p : string - -var strOrNum: string | number; ->strOrNum : string | number - -var strOrBool: string | boolean; ->strOrBool : string | boolean - -var numOrBool: number | boolean ->numOrBool : number | boolean - -var strOrC: string | C; ->strOrC : string | C ->C : C - -// typeof x != s has not effect on typeguard -if (typeof strOrNum != "string") { ->typeof strOrNum != "string" : boolean ->typeof strOrNum : string ->strOrNum : string | number ->"string" : string - - var r1 = strOrNum; // string | number ->r1 : string | number ->strOrNum : string | number -} -else { - var r1 = strOrNum; // string | number ->r1 : string | number ->strOrNum : string | number -} - -if (typeof strOrBool != "boolean") { ->typeof strOrBool != "boolean" : boolean ->typeof strOrBool : string ->strOrBool : string | boolean ->"boolean" : string - - var r2 = strOrBool; // string | boolean ->r2 : string | boolean ->strOrBool : string | boolean -} -else { - var r2 = strOrBool; // string | boolean ->r2 : string | boolean ->strOrBool : string | boolean -} - -if (typeof numOrBool != "number") { ->typeof numOrBool != "number" : boolean ->typeof numOrBool : string ->numOrBool : number | boolean ->"number" : string - - var r3 = numOrBool; // number | boolean ->r3 : number | boolean ->numOrBool : number | boolean -} -else { - var r3 = numOrBool; // number | boolean ->r3 : number | boolean ->numOrBool : number | boolean -} - -if (typeof strOrC != "Object") { ->typeof strOrC != "Object" : boolean ->typeof strOrC : string ->strOrC : string | C ->"Object" : string - - var r4 = strOrC; // string | C ->r4 : string | C ->strOrC : string | C -} -else { - var r4 = strOrC; // string | C ->r4 : string | C ->strOrC : string | C -} diff --git a/tests/baselines/reference/typeGuardOfFormTypeOfNumber.js b/tests/baselines/reference/typeGuardOfFormTypeOfNumber.js index 66fcff0c387..3bea6e87d2b 100644 --- a/tests/baselines/reference/typeGuardOfFormTypeOfNumber.js +++ b/tests/baselines/reference/typeGuardOfFormTypeOfNumber.js @@ -42,12 +42,11 @@ else { c = numOrC; // C } -// Narrowing occurs only if target type is a subtype of variable type if (typeof strOrBool === "number") { - var y1: string | boolean = strOrBool; // string | boolean + let y1: {} = strOrBool; // {} } else { - var y2: string | boolean = strOrBool; // string | boolean + let y2: string | boolean = strOrBool; // string | boolean } // A type guard of the form typeof x !== s, where s is a string literal, @@ -78,12 +77,11 @@ else { num = numOrC; // number } -// Narrowing occurs only if target type is a subtype of variable type if (typeof strOrBool !== "number") { - var y1: string | boolean = strOrBool; // string | boolean + let y1: string | boolean = strOrBool; // string | boolean } else { - var y2: string | boolean = strOrBool; // string | boolean + let y2: {} = strOrBool; // {} } @@ -133,9 +131,8 @@ if (typeof numOrC === "number") { else { c = numOrC; // C } -// Narrowing occurs only if target type is a subtype of variable type if (typeof strOrBool === "number") { - var y1 = strOrBool; // string | boolean + var y1 = strOrBool; // {} } else { var y2 = strOrBool; // string | boolean @@ -167,10 +164,9 @@ if (typeof numOrC !== "number") { else { num = numOrC; // number } -// Narrowing occurs only if target type is a subtype of variable type if (typeof strOrBool !== "number") { var y1 = strOrBool; // string | boolean } else { - var y2 = strOrBool; // string | boolean + var y2 = strOrBool; // {} } diff --git a/tests/baselines/reference/typeGuardOfFormTypeOfNumber.symbols b/tests/baselines/reference/typeGuardOfFormTypeOfNumber.symbols index 0052fb90880..f38c348131e 100644 --- a/tests/baselines/reference/typeGuardOfFormTypeOfNumber.symbols +++ b/tests/baselines/reference/typeGuardOfFormTypeOfNumber.symbols @@ -1,7 +1,7 @@ === tests/cases/conformance/expressions/typeGuards/typeGuardOfFormTypeOfNumber.ts === class C { private p: string }; >C : Symbol(C, Decl(typeGuardOfFormTypeOfNumber.ts, 0, 0)) ->p : Symbol(p, Decl(typeGuardOfFormTypeOfNumber.ts, 0, 9)) +>p : Symbol(C.p, Decl(typeGuardOfFormTypeOfNumber.ts, 0, 9)) var str: string; >str : Symbol(str, Decl(typeGuardOfFormTypeOfNumber.ts, 2, 3)) @@ -65,7 +65,7 @@ if (typeof numOrBool === "number") { } else { var x: number | boolean = numOrBool; // number | boolean ->x : Symbol(x, Decl(typeGuardOfFormTypeOfNumber.ts, 28, 7), Decl(typeGuardOfFormTypeOfNumber.ts, 61, 7)) +>x : Symbol(x, Decl(typeGuardOfFormTypeOfNumber.ts, 28, 7), Decl(typeGuardOfFormTypeOfNumber.ts, 60, 7)) >numOrBool : Symbol(numOrBool, Decl(typeGuardOfFormTypeOfNumber.ts, 7, 3)) } if (typeof strOrNumOrBool === "number") { @@ -93,17 +93,16 @@ else { >numOrC : Symbol(numOrC, Decl(typeGuardOfFormTypeOfNumber.ts, 10, 3)) } -// Narrowing occurs only if target type is a subtype of variable type if (typeof strOrBool === "number") { >strOrBool : Symbol(strOrBool, Decl(typeGuardOfFormTypeOfNumber.ts, 6, 3)) - var y1: string | boolean = strOrBool; // string | boolean ->y1 : Symbol(y1, Decl(typeGuardOfFormTypeOfNumber.ts, 45, 7), Decl(typeGuardOfFormTypeOfNumber.ts, 81, 7)) + let y1: {} = strOrBool; // {} +>y1 : Symbol(y1, Decl(typeGuardOfFormTypeOfNumber.ts, 44, 7)) >strOrBool : Symbol(strOrBool, Decl(typeGuardOfFormTypeOfNumber.ts, 6, 3)) } else { - var y2: string | boolean = strOrBool; // string | boolean ->y2 : Symbol(y2, Decl(typeGuardOfFormTypeOfNumber.ts, 48, 7), Decl(typeGuardOfFormTypeOfNumber.ts, 84, 7)) + let y2: string | boolean = strOrBool; // string | boolean +>y2 : Symbol(y2, Decl(typeGuardOfFormTypeOfNumber.ts, 47, 7)) >strOrBool : Symbol(strOrBool, Decl(typeGuardOfFormTypeOfNumber.ts, 6, 3)) } @@ -126,7 +125,7 @@ if (typeof numOrBool !== "number") { >numOrBool : Symbol(numOrBool, Decl(typeGuardOfFormTypeOfNumber.ts, 7, 3)) var x: number | boolean = numOrBool; // number | boolean ->x : Symbol(x, Decl(typeGuardOfFormTypeOfNumber.ts, 28, 7), Decl(typeGuardOfFormTypeOfNumber.ts, 61, 7)) +>x : Symbol(x, Decl(typeGuardOfFormTypeOfNumber.ts, 28, 7), Decl(typeGuardOfFormTypeOfNumber.ts, 60, 7)) >numOrBool : Symbol(numOrBool, Decl(typeGuardOfFormTypeOfNumber.ts, 7, 3)) } else { @@ -159,17 +158,16 @@ else { >numOrC : Symbol(numOrC, Decl(typeGuardOfFormTypeOfNumber.ts, 10, 3)) } -// Narrowing occurs only if target type is a subtype of variable type if (typeof strOrBool !== "number") { >strOrBool : Symbol(strOrBool, Decl(typeGuardOfFormTypeOfNumber.ts, 6, 3)) - var y1: string | boolean = strOrBool; // string | boolean ->y1 : Symbol(y1, Decl(typeGuardOfFormTypeOfNumber.ts, 45, 7), Decl(typeGuardOfFormTypeOfNumber.ts, 81, 7)) + let y1: string | boolean = strOrBool; // string | boolean +>y1 : Symbol(y1, Decl(typeGuardOfFormTypeOfNumber.ts, 79, 7)) >strOrBool : Symbol(strOrBool, Decl(typeGuardOfFormTypeOfNumber.ts, 6, 3)) } else { - var y2: string | boolean = strOrBool; // string | boolean ->y2 : Symbol(y2, Decl(typeGuardOfFormTypeOfNumber.ts, 48, 7), Decl(typeGuardOfFormTypeOfNumber.ts, 84, 7)) + let y2: {} = strOrBool; // {} +>y2 : Symbol(y2, Decl(typeGuardOfFormTypeOfNumber.ts, 82, 7)) >strOrBool : Symbol(strOrBool, Decl(typeGuardOfFormTypeOfNumber.ts, 6, 3)) } diff --git a/tests/baselines/reference/typeGuardOfFormTypeOfNumber.types b/tests/baselines/reference/typeGuardOfFormTypeOfNumber.types index d3caef24efd..51326c68cd9 100644 --- a/tests/baselines/reference/typeGuardOfFormTypeOfNumber.types +++ b/tests/baselines/reference/typeGuardOfFormTypeOfNumber.types @@ -112,19 +112,18 @@ else { >numOrC : C } -// Narrowing occurs only if target type is a subtype of variable type if (typeof strOrBool === "number") { >typeof strOrBool === "number" : boolean >typeof strOrBool : string >strOrBool : string | boolean >"number" : string - var y1: string | boolean = strOrBool; // string | boolean ->y1 : string | boolean ->strOrBool : string | boolean + let y1: {} = strOrBool; // {} +>y1 : {} +>strOrBool : nothing } else { - var y2: string | boolean = strOrBool; // string | boolean + let y2: string | boolean = strOrBool; // string | boolean >y2 : string | boolean >strOrBool : string | boolean } @@ -135,7 +134,7 @@ else { if (typeof strOrNum !== "number") { >typeof strOrNum !== "number" : boolean >typeof strOrNum : string ->strOrNum : string | number +>strOrNum : number | string >"number" : string str === strOrNum; // string @@ -168,7 +167,7 @@ else { if (typeof strOrNumOrBool !== "number") { >typeof strOrNumOrBool !== "number" : boolean >typeof strOrNumOrBool : string ->strOrNumOrBool : string | number | boolean +>strOrNumOrBool : number | string | boolean >"number" : string strOrBool = strOrNumOrBool; // string | boolean @@ -200,20 +199,19 @@ else { >numOrC : number } -// Narrowing occurs only if target type is a subtype of variable type if (typeof strOrBool !== "number") { >typeof strOrBool !== "number" : boolean >typeof strOrBool : string >strOrBool : string | boolean >"number" : string - var y1: string | boolean = strOrBool; // string | boolean + let y1: string | boolean = strOrBool; // string | boolean >y1 : string | boolean >strOrBool : string | boolean } else { - var y2: string | boolean = strOrBool; // string | boolean ->y2 : string | boolean ->strOrBool : string | boolean + let y2: {} = strOrBool; // {} +>y2 : {} +>strOrBool : nothing } diff --git a/tests/baselines/reference/typeGuardOfFormTypeOfOther.js b/tests/baselines/reference/typeGuardOfFormTypeOfOther.js index b1e6ca26566..ee0b6f66332 100644 --- a/tests/baselines/reference/typeGuardOfFormTypeOfOther.js +++ b/tests/baselines/reference/typeGuardOfFormTypeOfOther.js @@ -38,12 +38,11 @@ else { var r4: boolean = boolOrC; // boolean } -// Narrowing occurs only if target type is a subtype of variable type if (typeof strOrNumOrBool === "Object") { - var q1: string | number | boolean = strOrNumOrBool; // string | number | boolean + let q1: {} = strOrNumOrBool; // {} } else { - var q2: string | number | boolean = strOrNumOrBool; // string | number | boolean + let q2: string | number | boolean = strOrNumOrBool; // string | number | boolean } // A type guard of the form typeof x !== s, where s is a string literal, @@ -68,12 +67,11 @@ else { c = boolOrC; // C } -// Narrowing occurs only if target type is a subtype of variable type if (typeof strOrNumOrBool !== "Object") { - var q1: string | number | boolean = strOrNumOrBool; // string | number | boolean + let q1: string | number | boolean = strOrNumOrBool; // string | number | boolean } else { - var q2: string | number | boolean = strOrNumOrBool; // string | number | boolean + let q2: {} = strOrNumOrBool; // {} } @@ -118,9 +116,8 @@ if (typeof boolOrC === "Object") { else { var r4 = boolOrC; // boolean } -// Narrowing occurs only if target type is a subtype of variable type if (typeof strOrNumOrBool === "Object") { - var q1 = strOrNumOrBool; // string | number | boolean + var q1 = strOrNumOrBool; // {} } else { var q2 = strOrNumOrBool; // string | number | boolean @@ -146,10 +143,9 @@ if (typeof boolOrC !== "Object") { else { c = boolOrC; // C } -// Narrowing occurs only if target type is a subtype of variable type if (typeof strOrNumOrBool !== "Object") { var q1 = strOrNumOrBool; // string | number | boolean } else { - var q2 = strOrNumOrBool; // string | number | boolean + var q2 = strOrNumOrBool; // {} } diff --git a/tests/baselines/reference/typeGuardOfFormTypeOfOther.symbols b/tests/baselines/reference/typeGuardOfFormTypeOfOther.symbols index eb120d468dc..a8760feda45 100644 --- a/tests/baselines/reference/typeGuardOfFormTypeOfOther.symbols +++ b/tests/baselines/reference/typeGuardOfFormTypeOfOther.symbols @@ -1,7 +1,7 @@ === tests/cases/conformance/expressions/typeGuards/typeGuardOfFormTypeOfOther.ts === class C { private p: string }; >C : Symbol(C, Decl(typeGuardOfFormTypeOfOther.ts, 0, 0)) ->p : Symbol(p, Decl(typeGuardOfFormTypeOfOther.ts, 0, 9)) +>p : Symbol(C.p, Decl(typeGuardOfFormTypeOfOther.ts, 0, 9)) var str: string; >str : Symbol(str, Decl(typeGuardOfFormTypeOfOther.ts, 2, 3)) @@ -57,7 +57,7 @@ if (typeof strOrC === "Object") { } else { var r2: string = strOrC; // string ->r2 : Symbol(r2, Decl(typeGuardOfFormTypeOfOther.ts, 24, 7), Decl(typeGuardOfFormTypeOfOther.ts, 51, 7)) +>r2 : Symbol(r2, Decl(typeGuardOfFormTypeOfOther.ts, 24, 7), Decl(typeGuardOfFormTypeOfOther.ts, 50, 7)) >strOrC : Symbol(strOrC, Decl(typeGuardOfFormTypeOfOther.ts, 9, 3)) } if (typeof numOrC === "Object") { @@ -69,7 +69,7 @@ if (typeof numOrC === "Object") { } else { var r3: number = numOrC; // number ->r3 : Symbol(r3, Decl(typeGuardOfFormTypeOfOther.ts, 30, 7), Decl(typeGuardOfFormTypeOfOther.ts, 57, 7)) +>r3 : Symbol(r3, Decl(typeGuardOfFormTypeOfOther.ts, 30, 7), Decl(typeGuardOfFormTypeOfOther.ts, 56, 7)) >numOrC : Symbol(numOrC, Decl(typeGuardOfFormTypeOfOther.ts, 10, 3)) } if (typeof boolOrC === "Object") { @@ -81,21 +81,20 @@ if (typeof boolOrC === "Object") { } else { var r4: boolean = boolOrC; // boolean ->r4 : Symbol(r4, Decl(typeGuardOfFormTypeOfOther.ts, 36, 7), Decl(typeGuardOfFormTypeOfOther.ts, 63, 7)) +>r4 : Symbol(r4, Decl(typeGuardOfFormTypeOfOther.ts, 36, 7), Decl(typeGuardOfFormTypeOfOther.ts, 62, 7)) >boolOrC : Symbol(boolOrC, Decl(typeGuardOfFormTypeOfOther.ts, 11, 3)) } -// Narrowing occurs only if target type is a subtype of variable type if (typeof strOrNumOrBool === "Object") { >strOrNumOrBool : Symbol(strOrNumOrBool, Decl(typeGuardOfFormTypeOfOther.ts, 8, 3)) - var q1: string | number | boolean = strOrNumOrBool; // string | number | boolean ->q1 : Symbol(q1, Decl(typeGuardOfFormTypeOfOther.ts, 41, 7), Decl(typeGuardOfFormTypeOfOther.ts, 71, 7)) + let q1: {} = strOrNumOrBool; // {} +>q1 : Symbol(q1, Decl(typeGuardOfFormTypeOfOther.ts, 40, 7)) >strOrNumOrBool : Symbol(strOrNumOrBool, Decl(typeGuardOfFormTypeOfOther.ts, 8, 3)) } else { - var q2: string | number | boolean = strOrNumOrBool; // string | number | boolean ->q2 : Symbol(q2, Decl(typeGuardOfFormTypeOfOther.ts, 44, 7), Decl(typeGuardOfFormTypeOfOther.ts, 74, 7)) + let q2: string | number | boolean = strOrNumOrBool; // string | number | boolean +>q2 : Symbol(q2, Decl(typeGuardOfFormTypeOfOther.ts, 43, 7)) >strOrNumOrBool : Symbol(strOrNumOrBool, Decl(typeGuardOfFormTypeOfOther.ts, 8, 3)) } @@ -106,7 +105,7 @@ if (typeof strOrC !== "Object") { >strOrC : Symbol(strOrC, Decl(typeGuardOfFormTypeOfOther.ts, 9, 3)) var r2: string = strOrC; // string ->r2 : Symbol(r2, Decl(typeGuardOfFormTypeOfOther.ts, 24, 7), Decl(typeGuardOfFormTypeOfOther.ts, 51, 7)) +>r2 : Symbol(r2, Decl(typeGuardOfFormTypeOfOther.ts, 24, 7), Decl(typeGuardOfFormTypeOfOther.ts, 50, 7)) >strOrC : Symbol(strOrC, Decl(typeGuardOfFormTypeOfOther.ts, 9, 3)) } else { @@ -118,7 +117,7 @@ if (typeof numOrC !== "Object") { >numOrC : Symbol(numOrC, Decl(typeGuardOfFormTypeOfOther.ts, 10, 3)) var r3: number = numOrC; // number ->r3 : Symbol(r3, Decl(typeGuardOfFormTypeOfOther.ts, 30, 7), Decl(typeGuardOfFormTypeOfOther.ts, 57, 7)) +>r3 : Symbol(r3, Decl(typeGuardOfFormTypeOfOther.ts, 30, 7), Decl(typeGuardOfFormTypeOfOther.ts, 56, 7)) >numOrC : Symbol(numOrC, Decl(typeGuardOfFormTypeOfOther.ts, 10, 3)) } else { @@ -130,7 +129,7 @@ if (typeof boolOrC !== "Object") { >boolOrC : Symbol(boolOrC, Decl(typeGuardOfFormTypeOfOther.ts, 11, 3)) var r4: boolean = boolOrC; // boolean ->r4 : Symbol(r4, Decl(typeGuardOfFormTypeOfOther.ts, 36, 7), Decl(typeGuardOfFormTypeOfOther.ts, 63, 7)) +>r4 : Symbol(r4, Decl(typeGuardOfFormTypeOfOther.ts, 36, 7), Decl(typeGuardOfFormTypeOfOther.ts, 62, 7)) >boolOrC : Symbol(boolOrC, Decl(typeGuardOfFormTypeOfOther.ts, 11, 3)) } else { @@ -139,17 +138,16 @@ else { >boolOrC : Symbol(boolOrC, Decl(typeGuardOfFormTypeOfOther.ts, 11, 3)) } -// Narrowing occurs only if target type is a subtype of variable type if (typeof strOrNumOrBool !== "Object") { >strOrNumOrBool : Symbol(strOrNumOrBool, Decl(typeGuardOfFormTypeOfOther.ts, 8, 3)) - var q1: string | number | boolean = strOrNumOrBool; // string | number | boolean ->q1 : Symbol(q1, Decl(typeGuardOfFormTypeOfOther.ts, 41, 7), Decl(typeGuardOfFormTypeOfOther.ts, 71, 7)) + let q1: string | number | boolean = strOrNumOrBool; // string | number | boolean +>q1 : Symbol(q1, Decl(typeGuardOfFormTypeOfOther.ts, 69, 7)) >strOrNumOrBool : Symbol(strOrNumOrBool, Decl(typeGuardOfFormTypeOfOther.ts, 8, 3)) } else { - var q2: string | number | boolean = strOrNumOrBool; // string | number | boolean ->q2 : Symbol(q2, Decl(typeGuardOfFormTypeOfOther.ts, 44, 7), Decl(typeGuardOfFormTypeOfOther.ts, 74, 7)) + let q2: {} = strOrNumOrBool; // {} +>q2 : Symbol(q2, Decl(typeGuardOfFormTypeOfOther.ts, 72, 7)) >strOrNumOrBool : Symbol(strOrNumOrBool, Decl(typeGuardOfFormTypeOfOther.ts, 8, 3)) } diff --git a/tests/baselines/reference/typeGuardOfFormTypeOfOther.types b/tests/baselines/reference/typeGuardOfFormTypeOfOther.types index 5cec3567194..c8c150b5a3b 100644 --- a/tests/baselines/reference/typeGuardOfFormTypeOfOther.types +++ b/tests/baselines/reference/typeGuardOfFormTypeOfOther.types @@ -97,19 +97,18 @@ else { >boolOrC : boolean } -// Narrowing occurs only if target type is a subtype of variable type if (typeof strOrNumOrBool === "Object") { >typeof strOrNumOrBool === "Object" : boolean >typeof strOrNumOrBool : string >strOrNumOrBool : string | number | boolean >"Object" : string - var q1: string | number | boolean = strOrNumOrBool; // string | number | boolean ->q1 : string | number | boolean ->strOrNumOrBool : string | number | boolean + let q1: {} = strOrNumOrBool; // {} +>q1 : {} +>strOrNumOrBool : nothing } else { - var q2: string | number | boolean = strOrNumOrBool; // string | number | boolean + let q2: string | number | boolean = strOrNumOrBool; // string | number | boolean >q2 : string | number | boolean >strOrNumOrBool : string | number | boolean } @@ -120,7 +119,7 @@ else { if (typeof strOrC !== "Object") { >typeof strOrC !== "Object" : boolean >typeof strOrC : string ->strOrC : string | C +>strOrC : C | string >"Object" : string var r2: string = strOrC; // string @@ -136,7 +135,7 @@ else { if (typeof numOrC !== "Object") { >typeof numOrC !== "Object" : boolean >typeof numOrC : string ->numOrC : number | C +>numOrC : C | number >"Object" : string var r3: number = numOrC; // number @@ -152,7 +151,7 @@ else { if (typeof boolOrC !== "Object") { >typeof boolOrC !== "Object" : boolean >typeof boolOrC : string ->boolOrC : boolean | C +>boolOrC : C | boolean >"Object" : string var r4: boolean = boolOrC; // boolean @@ -166,20 +165,19 @@ else { >boolOrC : C } -// Narrowing occurs only if target type is a subtype of variable type if (typeof strOrNumOrBool !== "Object") { >typeof strOrNumOrBool !== "Object" : boolean >typeof strOrNumOrBool : string >strOrNumOrBool : string | number | boolean >"Object" : string - var q1: string | number | boolean = strOrNumOrBool; // string | number | boolean + let q1: string | number | boolean = strOrNumOrBool; // string | number | boolean >q1 : string | number | boolean >strOrNumOrBool : string | number | boolean } else { - var q2: string | number | boolean = strOrNumOrBool; // string | number | boolean ->q2 : string | number | boolean ->strOrNumOrBool : string | number | boolean + let q2: {} = strOrNumOrBool; // {} +>q2 : {} +>strOrNumOrBool : nothing } diff --git a/tests/baselines/reference/typeGuardOfFormTypeOfString.js b/tests/baselines/reference/typeGuardOfFormTypeOfString.js index 5626396f73d..d79f73a87c5 100644 --- a/tests/baselines/reference/typeGuardOfFormTypeOfString.js +++ b/tests/baselines/reference/typeGuardOfFormTypeOfString.js @@ -42,12 +42,11 @@ else { c = strOrC; // C } -// Narrowing occurs only if target type is a subtype of variable type if (typeof numOrBool === "string") { - var x1: number | boolean = numOrBool; // number | boolean + let x1: {} = numOrBool; // {} } else { - var x2: number | boolean = numOrBool; // number | boolean + let x2: number | boolean = numOrBool; // number | boolean } // A type guard of the form typeof x !== s, where s is a string literal, @@ -78,12 +77,11 @@ else { str = strOrC; // string } -// Narrowing occurs only if target type is a subtype of variable type if (typeof numOrBool !== "string") { - var x1: number | boolean = numOrBool; // number | boolean + let x1: number | boolean = numOrBool; // number | boolean } else { - var x2: number | boolean = numOrBool; // number | boolean + let x2: {} = numOrBool; // {} } @@ -133,9 +131,8 @@ if (typeof strOrC === "string") { else { c = strOrC; // C } -// Narrowing occurs only if target type is a subtype of variable type if (typeof numOrBool === "string") { - var x1 = numOrBool; // number | boolean + var x1 = numOrBool; // {} } else { var x2 = numOrBool; // number | boolean @@ -167,10 +164,9 @@ if (typeof strOrC !== "string") { else { str = strOrC; // string } -// Narrowing occurs only if target type is a subtype of variable type if (typeof numOrBool !== "string") { var x1 = numOrBool; // number | boolean } else { - var x2 = numOrBool; // number | boolean + var x2 = numOrBool; // {} } diff --git a/tests/baselines/reference/typeGuardOfFormTypeOfString.symbols b/tests/baselines/reference/typeGuardOfFormTypeOfString.symbols index 54684f715a4..4a77ecb1ffb 100644 --- a/tests/baselines/reference/typeGuardOfFormTypeOfString.symbols +++ b/tests/baselines/reference/typeGuardOfFormTypeOfString.symbols @@ -1,7 +1,7 @@ === tests/cases/conformance/expressions/typeGuards/typeGuardOfFormTypeOfString.ts === class C { private p: string }; >C : Symbol(C, Decl(typeGuardOfFormTypeOfString.ts, 0, 0)) ->p : Symbol(p, Decl(typeGuardOfFormTypeOfString.ts, 0, 9)) +>p : Symbol(C.p, Decl(typeGuardOfFormTypeOfString.ts, 0, 9)) var str: string; >str : Symbol(str, Decl(typeGuardOfFormTypeOfString.ts, 2, 3)) @@ -93,17 +93,16 @@ else { >strOrC : Symbol(strOrC, Decl(typeGuardOfFormTypeOfString.ts, 9, 3)) } -// Narrowing occurs only if target type is a subtype of variable type if (typeof numOrBool === "string") { >numOrBool : Symbol(numOrBool, Decl(typeGuardOfFormTypeOfString.ts, 7, 3)) - var x1: number | boolean = numOrBool; // number | boolean ->x1 : Symbol(x1, Decl(typeGuardOfFormTypeOfString.ts, 45, 7), Decl(typeGuardOfFormTypeOfString.ts, 81, 7)) + let x1: {} = numOrBool; // {} +>x1 : Symbol(x1, Decl(typeGuardOfFormTypeOfString.ts, 44, 7)) >numOrBool : Symbol(numOrBool, Decl(typeGuardOfFormTypeOfString.ts, 7, 3)) } else { - var x2: number | boolean = numOrBool; // number | boolean ->x2 : Symbol(x2, Decl(typeGuardOfFormTypeOfString.ts, 48, 7), Decl(typeGuardOfFormTypeOfString.ts, 84, 7)) + let x2: number | boolean = numOrBool; // number | boolean +>x2 : Symbol(x2, Decl(typeGuardOfFormTypeOfString.ts, 47, 7)) >numOrBool : Symbol(numOrBool, Decl(typeGuardOfFormTypeOfString.ts, 7, 3)) } @@ -159,17 +158,16 @@ else { >strOrC : Symbol(strOrC, Decl(typeGuardOfFormTypeOfString.ts, 9, 3)) } -// Narrowing occurs only if target type is a subtype of variable type if (typeof numOrBool !== "string") { >numOrBool : Symbol(numOrBool, Decl(typeGuardOfFormTypeOfString.ts, 7, 3)) - var x1: number | boolean = numOrBool; // number | boolean ->x1 : Symbol(x1, Decl(typeGuardOfFormTypeOfString.ts, 45, 7), Decl(typeGuardOfFormTypeOfString.ts, 81, 7)) + let x1: number | boolean = numOrBool; // number | boolean +>x1 : Symbol(x1, Decl(typeGuardOfFormTypeOfString.ts, 79, 7)) >numOrBool : Symbol(numOrBool, Decl(typeGuardOfFormTypeOfString.ts, 7, 3)) } else { - var x2: number | boolean = numOrBool; // number | boolean ->x2 : Symbol(x2, Decl(typeGuardOfFormTypeOfString.ts, 48, 7), Decl(typeGuardOfFormTypeOfString.ts, 84, 7)) + let x2: {} = numOrBool; // {} +>x2 : Symbol(x2, Decl(typeGuardOfFormTypeOfString.ts, 82, 7)) >numOrBool : Symbol(numOrBool, Decl(typeGuardOfFormTypeOfString.ts, 7, 3)) } diff --git a/tests/baselines/reference/typeGuardOfFormTypeOfString.types b/tests/baselines/reference/typeGuardOfFormTypeOfString.types index d6a382261ac..23c789fb987 100644 --- a/tests/baselines/reference/typeGuardOfFormTypeOfString.types +++ b/tests/baselines/reference/typeGuardOfFormTypeOfString.types @@ -113,19 +113,18 @@ else { >strOrC : C } -// Narrowing occurs only if target type is a subtype of variable type if (typeof numOrBool === "string") { >typeof numOrBool === "string" : boolean >typeof numOrBool : string >numOrBool : number | boolean >"string" : string - var x1: number | boolean = numOrBool; // number | boolean ->x1 : number | boolean ->numOrBool : number | boolean + let x1: {} = numOrBool; // {} +>x1 : {} +>numOrBool : nothing } else { - var x2: number | boolean = numOrBool; // number | boolean + let x2: number | boolean = numOrBool; // number | boolean >x2 : number | boolean >numOrBool : number | boolean } @@ -202,20 +201,19 @@ else { >strOrC : string } -// Narrowing occurs only if target type is a subtype of variable type if (typeof numOrBool !== "string") { >typeof numOrBool !== "string" : boolean >typeof numOrBool : string >numOrBool : number | boolean >"string" : string - var x1: number | boolean = numOrBool; // number | boolean + let x1: number | boolean = numOrBool; // number | boolean >x1 : number | boolean >numOrBool : number | boolean } else { - var x2: number | boolean = numOrBool; // number | boolean ->x2 : number | boolean ->numOrBool : number | boolean + let x2: {} = numOrBool; // {} +>x2 : {} +>numOrBool : nothing } diff --git a/tests/baselines/reference/typeGuardRedundancy.types b/tests/baselines/reference/typeGuardRedundancy.types index 1507ceb850e..754019de7ed 100644 --- a/tests/baselines/reference/typeGuardRedundancy.types +++ b/tests/baselines/reference/typeGuardRedundancy.types @@ -48,7 +48,7 @@ var r3 = typeof x === "string" || typeof x === "string" ? x.substr : x.toFixed; >typeof x === "string" || typeof x === "string" : boolean >typeof x === "string" : boolean >typeof x : string ->x : string | number +>x : number | string >"string" : string >typeof x === "string" : boolean >typeof x : string diff --git a/tests/baselines/reference/typeGuardTautologicalConsistiency.types b/tests/baselines/reference/typeGuardTautologicalConsistiency.types index d758dcde22b..cf9e82d9fd2 100644 --- a/tests/baselines/reference/typeGuardTautologicalConsistiency.types +++ b/tests/baselines/reference/typeGuardTautologicalConsistiency.types @@ -15,7 +15,7 @@ if (typeof stringOrNumber === "number") { >"number" : string stringOrNumber; ->stringOrNumber : string | number +>stringOrNumber : nothing } } @@ -23,7 +23,7 @@ if (typeof stringOrNumber === "number" && typeof stringOrNumber !== "number") { >typeof stringOrNumber === "number" && typeof stringOrNumber !== "number" : boolean >typeof stringOrNumber === "number" : boolean >typeof stringOrNumber : string ->stringOrNumber : string | number +>stringOrNumber : number | string >"number" : string >typeof stringOrNumber !== "number" : boolean >typeof stringOrNumber : string @@ -31,6 +31,6 @@ if (typeof stringOrNumber === "number" && typeof stringOrNumber !== "number") { >"number" : string stringOrNumber; ->stringOrNumber : string | number +>stringOrNumber : nothing } diff --git a/tests/baselines/reference/typeGuardTypeOfUndefined.types b/tests/baselines/reference/typeGuardTypeOfUndefined.types index 6cf57e1a1dd..ac648d36f01 100644 --- a/tests/baselines/reference/typeGuardTypeOfUndefined.types +++ b/tests/baselines/reference/typeGuardTypeOfUndefined.types @@ -26,7 +26,7 @@ function test1(a: any) { } else { a; ->a : any +>a : undefined } } @@ -43,15 +43,15 @@ function test2(a: any) { if (typeof a === "boolean") { >typeof a === "boolean" : boolean >typeof a : string ->a : any +>a : undefined >"boolean" : string a; ->a : boolean +>a : nothing } else { a; ->a : any +>a : undefined } } else { @@ -76,7 +76,7 @@ function test3(a: any) { >"boolean" : string a; ->a : any +>a : boolean } else { a; @@ -121,7 +121,7 @@ function test5(a: boolean | void) { if (typeof a === "boolean") { >typeof a === "boolean" : boolean >typeof a : string ->a : boolean | void +>a : boolean >"boolean" : string a; @@ -129,7 +129,7 @@ function test5(a: boolean | void) { } else { a; ->a : void +>a : nothing } } else { @@ -164,7 +164,7 @@ function test6(a: boolean | void) { } else { a; ->a : boolean | void +>a : boolean } } @@ -180,7 +180,7 @@ function test7(a: boolean | void) { >"undefined" : string >typeof a === "boolean" : boolean >typeof a : string ->a : boolean | void +>a : boolean >"boolean" : string a; @@ -188,7 +188,7 @@ function test7(a: boolean | void) { } else { a; ->a : void +>a : nothing } } @@ -204,7 +204,7 @@ function test8(a: boolean | void) { >"undefined" : string >typeof a === "boolean" : boolean >typeof a : string ->a : boolean | void +>a : boolean >"boolean" : string a; @@ -337,7 +337,7 @@ function test13(a: boolean | number | void) { if (typeof a === "boolean") { >typeof a === "boolean" : boolean >typeof a : string ->a : boolean | number | void +>a : boolean | number >"boolean" : string a; @@ -345,7 +345,7 @@ function test13(a: boolean | number | void) { } else { a; ->a : number | void +>a : number } } else { @@ -380,7 +380,7 @@ function test14(a: boolean | number | void) { } else { a; ->a : boolean | number | void +>a : boolean | number } } @@ -396,7 +396,7 @@ function test15(a: boolean | number | void) { >"undefined" : string >typeof a === "boolean" : boolean >typeof a : string ->a : boolean | number | void +>a : boolean | number >"boolean" : string a; @@ -404,7 +404,7 @@ function test15(a: boolean | number | void) { } else { a; ->a : number | void +>a : number } } @@ -420,7 +420,7 @@ function test16(a: boolean | number | void) { >"undefined" : string >typeof a === "boolean" : boolean >typeof a : string ->a : boolean | number | void +>a : boolean | number >"boolean" : string a; diff --git a/tests/baselines/reference/typeGuardsDefeat.errors.txt b/tests/baselines/reference/typeGuardsDefeat.errors.txt new file mode 100644 index 00000000000..d4006711d45 --- /dev/null +++ b/tests/baselines/reference/typeGuardsDefeat.errors.txt @@ -0,0 +1,52 @@ +tests/cases/conformance/expressions/typeGuards/typeGuardsDefeat.ts(21,20): error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type. +tests/cases/conformance/expressions/typeGuards/typeGuardsDefeat.ts(21,24): error TS2363: The right-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type. +tests/cases/conformance/expressions/typeGuards/typeGuardsDefeat.ts(32,23): error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type. +tests/cases/conformance/expressions/typeGuards/typeGuardsDefeat.ts(32,27): error TS2363: The right-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type. + + +==== tests/cases/conformance/expressions/typeGuards/typeGuardsDefeat.ts (4 errors) ==== + // Also note that it is possible to defeat a type guard by calling a function that changes the + // type of the guarded variable. + function foo(x: number | string) { + function f() { + x = 10; + } + if (typeof x === "string") { + f(); + return x.length; // string + } + else { + return x++; // number + } + } + function foo2(x: number | string) { + if (typeof x === "string") { + return x.length; // string + } + else { + var f = function () { + return x * x; + ~ +!!! error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type. + ~ +!!! error TS2363: The right-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type. + }; + } + x = "hello"; + f(); + } + function foo3(x: number | string) { + if (typeof x === "string") { + return x.length; // string + } + else { + var f = () => x * x; + ~ +!!! error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type. + ~ +!!! error TS2363: The right-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type. + } + x = "hello"; + f(); + } + \ No newline at end of file diff --git a/tests/baselines/reference/typeGuardsDefeat.symbols b/tests/baselines/reference/typeGuardsDefeat.symbols deleted file mode 100644 index 388b69b5789..00000000000 --- a/tests/baselines/reference/typeGuardsDefeat.symbols +++ /dev/null @@ -1,82 +0,0 @@ -=== tests/cases/conformance/expressions/typeGuards/typeGuardsDefeat.ts === -// Also note that it is possible to defeat a type guard by calling a function that changes the -// type of the guarded variable. -function foo(x: number | string) { ->foo : Symbol(foo, Decl(typeGuardsDefeat.ts, 0, 0)) ->x : Symbol(x, Decl(typeGuardsDefeat.ts, 2, 13)) - - function f() { ->f : Symbol(f, Decl(typeGuardsDefeat.ts, 2, 34)) - - x = 10; ->x : Symbol(x, Decl(typeGuardsDefeat.ts, 2, 13)) - } - if (typeof x === "string") { ->x : Symbol(x, Decl(typeGuardsDefeat.ts, 2, 13)) - - f(); ->f : Symbol(f, Decl(typeGuardsDefeat.ts, 2, 34)) - - return x.length; // string ->x.length : Symbol(String.length, Decl(lib.d.ts, --, --)) ->x : Symbol(x, Decl(typeGuardsDefeat.ts, 2, 13)) ->length : Symbol(String.length, Decl(lib.d.ts, --, --)) - } - else { - return x++; // number ->x : Symbol(x, Decl(typeGuardsDefeat.ts, 2, 13)) - } -} -function foo2(x: number | string) { ->foo2 : Symbol(foo2, Decl(typeGuardsDefeat.ts, 13, 1)) ->x : Symbol(x, Decl(typeGuardsDefeat.ts, 14, 14)) - - if (typeof x === "string") { ->x : Symbol(x, Decl(typeGuardsDefeat.ts, 14, 14)) - - return x.length; // string ->x.length : Symbol(String.length, Decl(lib.d.ts, --, --)) ->x : Symbol(x, Decl(typeGuardsDefeat.ts, 14, 14)) ->length : Symbol(String.length, Decl(lib.d.ts, --, --)) - } - else { - var f = function () { ->f : Symbol(f, Decl(typeGuardsDefeat.ts, 19, 11)) - - return x * x; ->x : Symbol(x, Decl(typeGuardsDefeat.ts, 14, 14)) ->x : Symbol(x, Decl(typeGuardsDefeat.ts, 14, 14)) - - }; - } - x = "hello"; ->x : Symbol(x, Decl(typeGuardsDefeat.ts, 14, 14)) - - f(); ->f : Symbol(f, Decl(typeGuardsDefeat.ts, 19, 11)) -} -function foo3(x: number | string) { ->foo3 : Symbol(foo3, Decl(typeGuardsDefeat.ts, 25, 1)) ->x : Symbol(x, Decl(typeGuardsDefeat.ts, 26, 14)) - - if (typeof x === "string") { ->x : Symbol(x, Decl(typeGuardsDefeat.ts, 26, 14)) - - return x.length; // string ->x.length : Symbol(String.length, Decl(lib.d.ts, --, --)) ->x : Symbol(x, Decl(typeGuardsDefeat.ts, 26, 14)) ->length : Symbol(String.length, Decl(lib.d.ts, --, --)) - } - else { - var f = () => x * x; ->f : Symbol(f, Decl(typeGuardsDefeat.ts, 31, 11)) ->x : Symbol(x, Decl(typeGuardsDefeat.ts, 26, 14)) ->x : Symbol(x, Decl(typeGuardsDefeat.ts, 26, 14)) - } - x = "hello"; ->x : Symbol(x, Decl(typeGuardsDefeat.ts, 26, 14)) - - f(); ->f : Symbol(f, Decl(typeGuardsDefeat.ts, 31, 11)) -} - diff --git a/tests/baselines/reference/typeGuardsDefeat.types b/tests/baselines/reference/typeGuardsDefeat.types deleted file mode 100644 index cc655d3ce0f..00000000000 --- a/tests/baselines/reference/typeGuardsDefeat.types +++ /dev/null @@ -1,105 +0,0 @@ -=== tests/cases/conformance/expressions/typeGuards/typeGuardsDefeat.ts === -// Also note that it is possible to defeat a type guard by calling a function that changes the -// type of the guarded variable. -function foo(x: number | string) { ->foo : (x: number | string) => number ->x : number | string - - function f() { ->f : () => void - - x = 10; ->x = 10 : number ->x : number | string ->10 : number - } - if (typeof x === "string") { ->typeof x === "string" : boolean ->typeof x : string ->x : number | string ->"string" : string - - f(); ->f() : void ->f : () => void - - return x.length; // string ->x.length : number ->x : string ->length : number - } - else { - return x++; // number ->x++ : number ->x : number - } -} -function foo2(x: number | string) { ->foo2 : (x: number | string) => number ->x : number | string - - if (typeof x === "string") { ->typeof x === "string" : boolean ->typeof x : string ->x : number | string ->"string" : string - - return x.length; // string ->x.length : number ->x : string ->length : number - } - else { - var f = function () { ->f : () => number ->function () { return x * x; } : () => number - - return x * x; ->x * x : number ->x : number ->x : number - - }; - } - x = "hello"; ->x = "hello" : string ->x : number | string ->"hello" : string - - f(); ->f() : number ->f : () => number -} -function foo3(x: number | string) { ->foo3 : (x: number | string) => number ->x : number | string - - if (typeof x === "string") { ->typeof x === "string" : boolean ->typeof x : string ->x : number | string ->"string" : string - - return x.length; // string ->x.length : number ->x : string ->length : number - } - else { - var f = () => x * x; ->f : () => number ->() => x * x : () => number ->x * x : number ->x : number ->x : number - } - x = "hello"; ->x = "hello" : string ->x : number | string ->"hello" : string - - f(); ->f() : number ->f : () => number -} - diff --git a/tests/baselines/reference/typeGuardsInClassAccessors.symbols b/tests/baselines/reference/typeGuardsInClassAccessors.symbols index d38c3040e01..5f28ed4498c 100644 --- a/tests/baselines/reference/typeGuardsInClassAccessors.symbols +++ b/tests/baselines/reference/typeGuardsInClassAccessors.symbols @@ -18,7 +18,7 @@ class ClassWithAccessors { // Inside public accessor getter get p1() { ->p1 : Symbol(p1, Decl(typeGuardsInClassAccessors.ts, 8, 26), Decl(typeGuardsInClassAccessors.ts, 19, 5)) +>p1 : Symbol(ClassWithAccessors.p1, Decl(typeGuardsInClassAccessors.ts, 8, 26), Decl(typeGuardsInClassAccessors.ts, 19, 5)) // global vars in function declaration num = typeof var1 === "string" && var1.length; // string @@ -44,7 +44,7 @@ class ClassWithAccessors { } // Inside public accessor setter set p1(param: string | number) { ->p1 : Symbol(p1, Decl(typeGuardsInClassAccessors.ts, 8, 26), Decl(typeGuardsInClassAccessors.ts, 19, 5)) +>p1 : Symbol(ClassWithAccessors.p1, Decl(typeGuardsInClassAccessors.ts, 8, 26), Decl(typeGuardsInClassAccessors.ts, 19, 5)) >param : Symbol(param, Decl(typeGuardsInClassAccessors.ts, 21, 11)) // global vars in function declaration @@ -76,7 +76,7 @@ class ClassWithAccessors { } // Inside private accessor getter private get pp1() { ->pp1 : Symbol(pp1, Decl(typeGuardsInClassAccessors.ts, 31, 5), Decl(typeGuardsInClassAccessors.ts, 42, 5)) +>pp1 : Symbol(ClassWithAccessors.pp1, Decl(typeGuardsInClassAccessors.ts, 31, 5), Decl(typeGuardsInClassAccessors.ts, 42, 5)) // global vars in function declaration num = typeof var1 === "string" && var1.length; // string @@ -102,7 +102,7 @@ class ClassWithAccessors { } // Inside private accessor setter private set pp1(param: string | number) { ->pp1 : Symbol(pp1, Decl(typeGuardsInClassAccessors.ts, 31, 5), Decl(typeGuardsInClassAccessors.ts, 42, 5)) +>pp1 : Symbol(ClassWithAccessors.pp1, Decl(typeGuardsInClassAccessors.ts, 31, 5), Decl(typeGuardsInClassAccessors.ts, 42, 5)) >param : Symbol(param, Decl(typeGuardsInClassAccessors.ts, 44, 20)) // global vars in function declaration diff --git a/tests/baselines/reference/typeGuardsInClassMethods.symbols b/tests/baselines/reference/typeGuardsInClassMethods.symbols index 30f01d3619f..1808b97be47 100644 --- a/tests/baselines/reference/typeGuardsInClassMethods.symbols +++ b/tests/baselines/reference/typeGuardsInClassMethods.symbols @@ -44,7 +44,7 @@ class C1 { } // Inside function declaration private p1(param: string | number) { ->p1 : Symbol(p1, Decl(typeGuardsInClassMethods.ts, 17, 5)) +>p1 : Symbol(C1.p1, Decl(typeGuardsInClassMethods.ts, 17, 5)) >param : Symbol(param, Decl(typeGuardsInClassMethods.ts, 19, 15)) // global vars in function declaration @@ -76,7 +76,7 @@ class C1 { } // Inside function declaration p2(param: string | number) { ->p2 : Symbol(p2, Decl(typeGuardsInClassMethods.ts, 29, 5)) +>p2 : Symbol(C1.p2, Decl(typeGuardsInClassMethods.ts, 29, 5)) >param : Symbol(param, Decl(typeGuardsInClassMethods.ts, 31, 7)) // global vars in function declaration diff --git a/tests/baselines/reference/typeGuardsInConditionalExpression.js b/tests/baselines/reference/typeGuardsInConditionalExpression.js index 118ebbc02c0..9aade91612a 100644 --- a/tests/baselines/reference/typeGuardsInConditionalExpression.js +++ b/tests/baselines/reference/typeGuardsInConditionalExpression.js @@ -12,43 +12,37 @@ function foo(x: number | string) { : x++; // number } function foo2(x: number | string) { - // x is assigned in the if true branch, the type is not narrowed return typeof x === "string" - ? (x = 10 && x)// string | number - : x; // string | number + ? ((x = "hello") && x) // string + : x; // number } function foo3(x: number | string) { - // x is assigned in the if false branch, the type is not narrowed - // even though assigned using same type as narrowed expression return typeof x === "string" - ? (x = "Hello" && x) // string | number - : x; // string | number + ? ((x = 10) && x) // number + : x; // number } function foo4(x: number | string) { - // false branch updates the variable - so here it is not number - // even though assigned using same type as narrowed expression return typeof x === "string" - ? x // string | number - : (x = 10 && x); // string | number + ? x // string + : ((x = 10) && x); // number } function foo5(x: number | string) { - // false branch updates the variable - so here it is not number return typeof x === "string" - ? x // string | number - : (x = "hello" && x); // string | number + ? x // string + : ((x = "hello") && x); // string } function foo6(x: number | string) { // Modify in both branches return typeof x === "string" - ? (x = 10 && x) // string | number - : (x = "hello" && x); // string | number + ? ((x = 10) && x) // number + : ((x = "hello") && x); // string } function foo7(x: number | string | boolean) { return typeof x === "string" - ? x === "hello" // string + ? x === "hello" // boolean : typeof x === "boolean" ? x // boolean - : x == 10; // number + : x == 10; // boolean } function foo8(x: number | string | boolean) { var b: number | boolean; @@ -57,14 +51,14 @@ function foo8(x: number | string | boolean) { : ((b = x) && // number | boolean (typeof x === "boolean" ? x // boolean - : x == 10)); // number + : x == 10)); // boolean } function foo9(x: number | string) { var y = 10; // usage of x or assignment to separate variable shouldn't cause narrowing of type to stop return typeof x === "string" - ? ((y = x.length) && x === "hello") // string - : x === 10; // number + ? ((y = x.length) && x === "hello") // boolean + : x === 10; // boolean } function foo10(x: number | string | boolean) { // Mixing typeguards @@ -77,22 +71,20 @@ function foo10(x: number | string | boolean) { } function foo11(x: number | string | boolean) { // Mixing typeguards - // Assigning value to x deep inside another guard stops narrowing of type too var b: number | boolean | string; return typeof x === "string" - ? x // number | boolean | string - changed in the false branch - : ((b = x) // x is number | boolean | string - because the assignment changed it + ? x // string + : ((b = x) // x is number | boolean && typeof x === "number" && (x = 10) // assignment to x - && x); // x is number | boolean | string + && x); // x is number } function foo12(x: number | string | boolean) { // Mixing typeguards - // Assigning value to x in outer guard shouldn't stop narrowing in the inner expression var b: number | boolean | string; return typeof x === "string" - ? (x = 10 && x.toString().length) // number | boolean | string - changed here - : ((b = x) // x is number | boolean | string - changed in true branch + ? ((x = 10) && x.toString().length) // number + : ((b = x) // x is number | boolean && typeof x === "number" && x); // x is number } @@ -110,43 +102,37 @@ function foo(x) { : x++; // number } function foo2(x) { - // x is assigned in the if true branch, the type is not narrowed return typeof x === "string" - ? (x = 10 && x) // string | number - : x; // string | number + ? ((x = "hello") && x) // string + : x; // number } function foo3(x) { - // x is assigned in the if false branch, the type is not narrowed - // even though assigned using same type as narrowed expression return typeof x === "string" - ? (x = "Hello" && x) // string | number - : x; // string | number + ? ((x = 10) && x) // number + : x; // number } function foo4(x) { - // false branch updates the variable - so here it is not number - // even though assigned using same type as narrowed expression return typeof x === "string" - ? x // string | number - : (x = 10 && x); // string | number + ? x // string + : ((x = 10) && x); // number } function foo5(x) { - // false branch updates the variable - so here it is not number return typeof x === "string" - ? x // string | number - : (x = "hello" && x); // string | number + ? x // string + : ((x = "hello") && x); // string } function foo6(x) { // Modify in both branches return typeof x === "string" - ? (x = 10 && x) // string | number - : (x = "hello" && x); // string | number + ? ((x = 10) && x) // number + : ((x = "hello") && x); // string } function foo7(x) { return typeof x === "string" - ? x === "hello" // string + ? x === "hello" // boolean : typeof x === "boolean" ? x // boolean - : x == 10; // number + : x == 10; // boolean } function foo8(x) { var b; @@ -155,14 +141,14 @@ function foo8(x) { : ((b = x) && (typeof x === "boolean" ? x // boolean - : x == 10)); // number + : x == 10)); // boolean } function foo9(x) { var y = 10; // usage of x or assignment to separate variable shouldn't cause narrowing of type to stop return typeof x === "string" - ? ((y = x.length) && x === "hello") // string - : x === 10; // number + ? ((y = x.length) && x === "hello") // boolean + : x === 10; // boolean } function foo10(x) { // Mixing typeguards @@ -175,22 +161,20 @@ function foo10(x) { } function foo11(x) { // Mixing typeguards - // Assigning value to x deep inside another guard stops narrowing of type too var b; return typeof x === "string" - ? x // number | boolean | string - changed in the false branch - : ((b = x) // x is number | boolean | string - because the assignment changed it + ? x // string + : ((b = x) // x is number | boolean && typeof x === "number" && (x = 10) // assignment to x - && x); // x is number | boolean | string + && x); // x is number } function foo12(x) { // Mixing typeguards - // Assigning value to x in outer guard shouldn't stop narrowing in the inner expression var b; return typeof x === "string" - ? (x = 10 && x.toString().length) // number | boolean | string - changed here - : ((b = x) // x is number | boolean | string - changed in true branch + ? ((x = 10) && x.toString().length) // number + : ((b = x) // x is number | boolean && typeof x === "number" && x); // x is number } diff --git a/tests/baselines/reference/typeGuardsInConditionalExpression.symbols b/tests/baselines/reference/typeGuardsInConditionalExpression.symbols index 7de63d90bf9..ada6a6d99fd 100644 --- a/tests/baselines/reference/typeGuardsInConditionalExpression.symbols +++ b/tests/baselines/reference/typeGuardsInConditionalExpression.symbols @@ -25,227 +25,219 @@ function foo2(x: number | string) { >foo2 : Symbol(foo2, Decl(typeGuardsInConditionalExpression.ts, 11, 1)) >x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 12, 14)) - // x is assigned in the if true branch, the type is not narrowed return typeof x === "string" >x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 12, 14)) - ? (x = 10 && x)// string | number + ? ((x = "hello") && x) // string >x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 12, 14)) >x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 12, 14)) - : x; // string | number + : x; // number >x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 12, 14)) } function foo3(x: number | string) { ->foo3 : Symbol(foo3, Decl(typeGuardsInConditionalExpression.ts, 17, 1)) ->x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 18, 14)) +>foo3 : Symbol(foo3, Decl(typeGuardsInConditionalExpression.ts, 16, 1)) +>x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 17, 14)) - // x is assigned in the if false branch, the type is not narrowed - // even though assigned using same type as narrowed expression return typeof x === "string" ->x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 18, 14)) +>x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 17, 14)) - ? (x = "Hello" && x) // string | number ->x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 18, 14)) ->x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 18, 14)) + ? ((x = 10) && x) // number +>x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 17, 14)) +>x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 17, 14)) - : x; // string | number ->x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 18, 14)) + : x; // number +>x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 17, 14)) } function foo4(x: number | string) { ->foo4 : Symbol(foo4, Decl(typeGuardsInConditionalExpression.ts, 24, 1)) ->x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 25, 14)) +>foo4 : Symbol(foo4, Decl(typeGuardsInConditionalExpression.ts, 21, 1)) +>x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 22, 14)) - // false branch updates the variable - so here it is not number - // even though assigned using same type as narrowed expression return typeof x === "string" ->x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 25, 14)) +>x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 22, 14)) - ? x // string | number ->x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 25, 14)) + ? x // string +>x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 22, 14)) - : (x = 10 && x); // string | number ->x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 25, 14)) ->x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 25, 14)) + : ((x = 10) && x); // number +>x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 22, 14)) +>x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 22, 14)) } function foo5(x: number | string) { ->foo5 : Symbol(foo5, Decl(typeGuardsInConditionalExpression.ts, 31, 1)) ->x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 32, 14)) +>foo5 : Symbol(foo5, Decl(typeGuardsInConditionalExpression.ts, 26, 1)) +>x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 27, 14)) - // false branch updates the variable - so here it is not number return typeof x === "string" ->x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 32, 14)) +>x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 27, 14)) - ? x // string | number ->x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 32, 14)) + ? x // string +>x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 27, 14)) - : (x = "hello" && x); // string | number ->x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 32, 14)) ->x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 32, 14)) + : ((x = "hello") && x); // string +>x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 27, 14)) +>x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 27, 14)) } function foo6(x: number | string) { ->foo6 : Symbol(foo6, Decl(typeGuardsInConditionalExpression.ts, 37, 1)) ->x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 38, 14)) +>foo6 : Symbol(foo6, Decl(typeGuardsInConditionalExpression.ts, 31, 1)) +>x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 32, 14)) // Modify in both branches return typeof x === "string" ->x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 38, 14)) +>x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 32, 14)) - ? (x = 10 && x) // string | number ->x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 38, 14)) ->x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 38, 14)) + ? ((x = 10) && x) // number +>x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 32, 14)) +>x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 32, 14)) - : (x = "hello" && x); // string | number ->x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 38, 14)) ->x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 38, 14)) + : ((x = "hello") && x); // string +>x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 32, 14)) +>x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 32, 14)) } function foo7(x: number | string | boolean) { ->foo7 : Symbol(foo7, Decl(typeGuardsInConditionalExpression.ts, 43, 1)) ->x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 44, 14)) +>foo7 : Symbol(foo7, Decl(typeGuardsInConditionalExpression.ts, 37, 1)) +>x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 38, 14)) return typeof x === "string" ->x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 44, 14)) +>x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 38, 14)) - ? x === "hello" // string ->x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 44, 14)) + ? x === "hello" // boolean +>x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 38, 14)) : typeof x === "boolean" ->x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 44, 14)) +>x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 38, 14)) ? x // boolean ->x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 44, 14)) +>x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 38, 14)) - : x == 10; // number ->x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 44, 14)) + : x == 10; // boolean +>x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 38, 14)) } function foo8(x: number | string | boolean) { ->foo8 : Symbol(foo8, Decl(typeGuardsInConditionalExpression.ts, 50, 1)) ->x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 51, 14)) +>foo8 : Symbol(foo8, Decl(typeGuardsInConditionalExpression.ts, 44, 1)) +>x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 45, 14)) var b: number | boolean; ->b : Symbol(b, Decl(typeGuardsInConditionalExpression.ts, 52, 7)) +>b : Symbol(b, Decl(typeGuardsInConditionalExpression.ts, 46, 7)) return typeof x === "string" ->x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 51, 14)) +>x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 45, 14)) ? x === "hello" ->x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 51, 14)) +>x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 45, 14)) : ((b = x) && // number | boolean ->b : Symbol(b, Decl(typeGuardsInConditionalExpression.ts, 52, 7)) ->x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 51, 14)) +>b : Symbol(b, Decl(typeGuardsInConditionalExpression.ts, 46, 7)) +>x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 45, 14)) (typeof x === "boolean" ->x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 51, 14)) +>x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 45, 14)) ? x // boolean ->x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 51, 14)) +>x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 45, 14)) - : x == 10)); // number ->x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 51, 14)) + : x == 10)); // boolean +>x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 45, 14)) } function foo9(x: number | string) { ->foo9 : Symbol(foo9, Decl(typeGuardsInConditionalExpression.ts, 59, 1)) ->x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 60, 14)) +>foo9 : Symbol(foo9, Decl(typeGuardsInConditionalExpression.ts, 53, 1)) +>x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 54, 14)) var y = 10; ->y : Symbol(y, Decl(typeGuardsInConditionalExpression.ts, 61, 7)) +>y : Symbol(y, Decl(typeGuardsInConditionalExpression.ts, 55, 7)) // usage of x or assignment to separate variable shouldn't cause narrowing of type to stop return typeof x === "string" ->x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 60, 14)) +>x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 54, 14)) - ? ((y = x.length) && x === "hello") // string ->y : Symbol(y, Decl(typeGuardsInConditionalExpression.ts, 61, 7)) + ? ((y = x.length) && x === "hello") // boolean +>y : Symbol(y, Decl(typeGuardsInConditionalExpression.ts, 55, 7)) >x.length : Symbol(String.length, Decl(lib.d.ts, --, --)) ->x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 60, 14)) +>x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 54, 14)) >length : Symbol(String.length, Decl(lib.d.ts, --, --)) ->x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 60, 14)) +>x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 54, 14)) - : x === 10; // number ->x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 60, 14)) + : x === 10; // boolean +>x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 54, 14)) } function foo10(x: number | string | boolean) { ->foo10 : Symbol(foo10, Decl(typeGuardsInConditionalExpression.ts, 66, 1)) ->x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 67, 15)) +>foo10 : Symbol(foo10, Decl(typeGuardsInConditionalExpression.ts, 60, 1)) +>x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 61, 15)) // Mixing typeguards var b: boolean | number; ->b : Symbol(b, Decl(typeGuardsInConditionalExpression.ts, 69, 7)) +>b : Symbol(b, Decl(typeGuardsInConditionalExpression.ts, 63, 7)) return typeof x === "string" ->x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 67, 15)) +>x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 61, 15)) ? x // string ->x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 67, 15)) +>x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 61, 15)) : ((b = x) // x is number | boolean ->b : Symbol(b, Decl(typeGuardsInConditionalExpression.ts, 69, 7)) ->x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 67, 15)) +>b : Symbol(b, Decl(typeGuardsInConditionalExpression.ts, 63, 7)) +>x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 61, 15)) && typeof x === "number" ->x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 67, 15)) +>x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 61, 15)) && x.toString()); // x is number >x.toString : Symbol(Number.toString, Decl(lib.d.ts, --, --)) ->x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 67, 15)) +>x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 61, 15)) >toString : Symbol(Number.toString, Decl(lib.d.ts, --, --)) } function foo11(x: number | string | boolean) { ->foo11 : Symbol(foo11, Decl(typeGuardsInConditionalExpression.ts, 75, 1)) ->x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 76, 15)) +>foo11 : Symbol(foo11, Decl(typeGuardsInConditionalExpression.ts, 69, 1)) +>x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 70, 15)) // Mixing typeguards - // Assigning value to x deep inside another guard stops narrowing of type too var b: number | boolean | string; ->b : Symbol(b, Decl(typeGuardsInConditionalExpression.ts, 79, 7)) +>b : Symbol(b, Decl(typeGuardsInConditionalExpression.ts, 72, 7)) return typeof x === "string" ->x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 76, 15)) +>x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 70, 15)) - ? x // number | boolean | string - changed in the false branch ->x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 76, 15)) + ? x // string +>x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 70, 15)) - : ((b = x) // x is number | boolean | string - because the assignment changed it ->b : Symbol(b, Decl(typeGuardsInConditionalExpression.ts, 79, 7)) ->x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 76, 15)) + : ((b = x) // x is number | boolean +>b : Symbol(b, Decl(typeGuardsInConditionalExpression.ts, 72, 7)) +>x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 70, 15)) && typeof x === "number" ->x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 76, 15)) +>x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 70, 15)) && (x = 10) // assignment to x ->x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 76, 15)) - - && x); // x is number | boolean | string ->x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 76, 15)) -} -function foo12(x: number | string | boolean) { ->foo12 : Symbol(foo12, Decl(typeGuardsInConditionalExpression.ts, 86, 1)) ->x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 87, 15)) - - // Mixing typeguards - // Assigning value to x in outer guard shouldn't stop narrowing in the inner expression - var b: number | boolean | string; ->b : Symbol(b, Decl(typeGuardsInConditionalExpression.ts, 90, 7)) - - return typeof x === "string" ->x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 87, 15)) - - ? (x = 10 && x.toString().length) // number | boolean | string - changed here ->x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 87, 15)) ->x.toString().length : Symbol(String.length, Decl(lib.d.ts, --, --)) ->x.toString : Symbol(toString, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 87, 15)) ->toString : Symbol(toString, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->length : Symbol(String.length, Decl(lib.d.ts, --, --)) - - : ((b = x) // x is number | boolean | string - changed in true branch ->b : Symbol(b, Decl(typeGuardsInConditionalExpression.ts, 90, 7)) ->x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 87, 15)) - - && typeof x === "number" ->x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 87, 15)) +>x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 70, 15)) && x); // x is number ->x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 87, 15)) +>x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 70, 15)) +} +function foo12(x: number | string | boolean) { +>foo12 : Symbol(foo12, Decl(typeGuardsInConditionalExpression.ts, 79, 1)) +>x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 80, 15)) + + // Mixing typeguards + var b: number | boolean | string; +>b : Symbol(b, Decl(typeGuardsInConditionalExpression.ts, 82, 7)) + + return typeof x === "string" +>x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 80, 15)) + + ? ((x = 10) && x.toString().length) // number +>x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 80, 15)) +>x.toString().length : Symbol(String.length, Decl(lib.d.ts, --, --)) +>x.toString : Symbol(Number.toString, Decl(lib.d.ts, --, --)) +>x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 80, 15)) +>toString : Symbol(Number.toString, Decl(lib.d.ts, --, --)) +>length : Symbol(String.length, Decl(lib.d.ts, --, --)) + + : ((b = x) // x is number | boolean +>b : Symbol(b, Decl(typeGuardsInConditionalExpression.ts, 82, 7)) +>x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 80, 15)) + + && typeof x === "number" +>x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 80, 15)) + + && x); // x is number +>x : Symbol(x, Decl(typeGuardsInConditionalExpression.ts, 80, 15)) } diff --git a/tests/baselines/reference/typeGuardsInConditionalExpression.types b/tests/baselines/reference/typeGuardsInConditionalExpression.types index 493a8c0a31a..cc1459738e4 100644 --- a/tests/baselines/reference/typeGuardsInConditionalExpression.types +++ b/tests/baselines/reference/typeGuardsInConditionalExpression.types @@ -27,98 +27,96 @@ function foo(x: number | string) { >x : number } function foo2(x: number | string) { ->foo2 : (x: number | string) => number | string +>foo2 : (x: number | string) => string | number >x : number | string - // x is assigned in the if true branch, the type is not narrowed return typeof x === "string" ->typeof x === "string" ? (x = 10 && x)// string | number : x : number | string +>typeof x === "string" ? ((x = "hello") && x) // string : x : string | number >typeof x === "string" : boolean >typeof x : string >x : number | string >"string" : string - ? (x = 10 && x)// string | number ->(x = 10 && x) : number | string ->x = 10 && x : number | string ->x : number | string ->10 && x : number | string ->10 : number + ? ((x = "hello") && x) // string +>((x = "hello") && x) : string +>(x = "hello") && x : string +>(x = "hello") : string +>x = "hello" : string >x : number | string +>"hello" : string +>x : string - : x; // string | number ->x : number | string + : x; // number +>x : number } function foo3(x: number | string) { ->foo3 : (x: number | string) => number | string +>foo3 : (x: number | string) => number >x : number | string - // x is assigned in the if false branch, the type is not narrowed - // even though assigned using same type as narrowed expression return typeof x === "string" ->typeof x === "string" ? (x = "Hello" && x) // string | number : x : number | string +>typeof x === "string" ? ((x = 10) && x) // number : x : number >typeof x === "string" : boolean >typeof x : string >x : number | string >"string" : string - ? (x = "Hello" && x) // string | number ->(x = "Hello" && x) : number | string ->x = "Hello" && x : number | string ->x : number | string ->"Hello" && x : number | string ->"Hello" : string + ? ((x = 10) && x) // number +>((x = 10) && x) : number +>(x = 10) && x : number +>(x = 10) : number +>x = 10 : number >x : number | string +>10 : number +>x : number - : x; // string | number ->x : number | string + : x; // number +>x : number } function foo4(x: number | string) { ->foo4 : (x: number | string) => number | string +>foo4 : (x: number | string) => string | number >x : number | string - // false branch updates the variable - so here it is not number - // even though assigned using same type as narrowed expression return typeof x === "string" ->typeof x === "string" ? x // string | number : (x = 10 && x) : number | string +>typeof x === "string" ? x // string : ((x = 10) && x) : string | number >typeof x === "string" : boolean >typeof x : string >x : number | string >"string" : string - ? x // string | number ->x : number | string + ? x // string +>x : string - : (x = 10 && x); // string | number ->(x = 10 && x) : number | string ->x = 10 && x : number | string + : ((x = 10) && x); // number +>((x = 10) && x) : number +>(x = 10) && x : number +>(x = 10) : number +>x = 10 : number >x : number | string ->10 && x : number | string >10 : number ->x : number | string +>x : number } function foo5(x: number | string) { ->foo5 : (x: number | string) => number | string +>foo5 : (x: number | string) => string >x : number | string - // false branch updates the variable - so here it is not number return typeof x === "string" ->typeof x === "string" ? x // string | number : (x = "hello" && x) : number | string +>typeof x === "string" ? x // string : ((x = "hello") && x) : string >typeof x === "string" : boolean >typeof x : string >x : number | string >"string" : string - ? x // string | number ->x : number | string + ? x // string +>x : string - : (x = "hello" && x); // string | number ->(x = "hello" && x) : number | string ->x = "hello" && x : number | string + : ((x = "hello") && x); // string +>((x = "hello") && x) : string +>(x = "hello") && x : string +>(x = "hello") : string +>x = "hello" : string >x : number | string ->"hello" && x : number | string >"hello" : string ->x : number | string +>x : string } function foo6(x: number | string) { >foo6 : (x: number | string) => number | string @@ -126,40 +124,42 @@ function foo6(x: number | string) { // Modify in both branches return typeof x === "string" ->typeof x === "string" ? (x = 10 && x) // string | number : (x = "hello" && x) : number | string +>typeof x === "string" ? ((x = 10) && x) // number : ((x = "hello") && x) : number | string >typeof x === "string" : boolean >typeof x : string >x : number | string >"string" : string - ? (x = 10 && x) // string | number ->(x = 10 && x) : number | string ->x = 10 && x : number | string + ? ((x = 10) && x) // number +>((x = 10) && x) : number +>(x = 10) && x : number +>(x = 10) : number +>x = 10 : number >x : number | string ->10 && x : number | string >10 : number ->x : number | string +>x : number - : (x = "hello" && x); // string | number ->(x = "hello" && x) : number | string ->x = "hello" && x : number | string + : ((x = "hello") && x); // string +>((x = "hello") && x) : string +>(x = "hello") && x : string +>(x = "hello") : string +>x = "hello" : string >x : number | string ->"hello" && x : number | string >"hello" : string ->x : number | string +>x : string } function foo7(x: number | string | boolean) { >foo7 : (x: number | string | boolean) => boolean >x : number | string | boolean return typeof x === "string" ->typeof x === "string" ? x === "hello" // string : typeof x === "boolean" ? x // boolean : x == 10 : boolean +>typeof x === "string" ? x === "hello" // boolean : typeof x === "boolean" ? x // boolean : x == 10 : boolean >typeof x === "string" : boolean >typeof x : string >x : number | string | boolean >"string" : string - ? x === "hello" // string + ? x === "hello" // boolean >x === "hello" : boolean >x : string >"hello" : string @@ -174,7 +174,7 @@ function foo7(x: number | string | boolean) { ? x // boolean >x : boolean - : x == 10; // number + : x == 10; // boolean >x == 10 : boolean >x : number >10 : number @@ -217,7 +217,7 @@ function foo8(x: number | string | boolean) { ? x // boolean >x : boolean - : x == 10)); // number + : x == 10)); // boolean >x == 10 : boolean >x : number >10 : number @@ -232,13 +232,13 @@ function foo9(x: number | string) { // usage of x or assignment to separate variable shouldn't cause narrowing of type to stop return typeof x === "string" ->typeof x === "string" ? ((y = x.length) && x === "hello") // string : x === 10 : boolean +>typeof x === "string" ? ((y = x.length) && x === "hello") // boolean : x === 10 : boolean >typeof x === "string" : boolean >typeof x : string >x : number | string >"string" : string - ? ((y = x.length) && x === "hello") // string + ? ((y = x.length) && x === "hello") // boolean >((y = x.length) && x === "hello") : boolean >(y = x.length) && x === "hello" : boolean >(y = x.length) : number @@ -251,7 +251,7 @@ function foo9(x: number | string) { >x : string >"hello" : string - : x === 10; // number + : x === 10; // boolean >x === 10 : boolean >x : number >10 : number @@ -296,38 +296,37 @@ function foo10(x: number | string | boolean) { >toString : (radix?: number) => string } function foo11(x: number | string | boolean) { ->foo11 : (x: number | string | boolean) => number | string | boolean +>foo11 : (x: number | string | boolean) => string | number >x : number | string | boolean // Mixing typeguards - // Assigning value to x deep inside another guard stops narrowing of type too var b: number | boolean | string; >b : number | boolean | string return typeof x === "string" ->typeof x === "string" ? x // number | boolean | string - changed in the false branch : ((b = x) // x is number | boolean | string - because the assignment changed it && typeof x === "number" && (x = 10) // assignment to x && x) : number | string | boolean +>typeof x === "string" ? x // string : ((b = x) // x is number | boolean && typeof x === "number" && (x = 10) // assignment to x && x) : string | number >typeof x === "string" : boolean >typeof x : string >x : number | string | boolean >"string" : string - ? x // number | boolean | string - changed in the false branch ->x : number | string | boolean + ? x // string +>x : string - : ((b = x) // x is number | boolean | string - because the assignment changed it ->((b = x) // x is number | boolean | string - because the assignment changed it && typeof x === "number" && (x = 10) // assignment to x && x) : number | string | boolean ->(b = x) // x is number | boolean | string - because the assignment changed it && typeof x === "number" && (x = 10) // assignment to x && x : number | string | boolean ->(b = x) // x is number | boolean | string - because the assignment changed it && typeof x === "number" && (x = 10) : number ->(b = x) // x is number | boolean | string - because the assignment changed it && typeof x === "number" : boolean ->(b = x) : number | string | boolean ->b = x : number | string | boolean + : ((b = x) // x is number | boolean +>((b = x) // x is number | boolean && typeof x === "number" && (x = 10) // assignment to x && x) : number +>(b = x) // x is number | boolean && typeof x === "number" && (x = 10) // assignment to x && x : number +>(b = x) // x is number | boolean && typeof x === "number" && (x = 10) : number +>(b = x) // x is number | boolean && typeof x === "number" : boolean +>(b = x) : number | boolean +>b = x : number | boolean >b : number | boolean | string ->x : number | string | boolean +>x : number | boolean && typeof x === "number" >typeof x === "number" : boolean >typeof x : string ->x : number | string | boolean +>x : number | boolean >"number" : string && (x = 10) // assignment to x @@ -336,51 +335,51 @@ function foo11(x: number | string | boolean) { >x : number | string | boolean >10 : number - && x); // x is number | boolean | string ->x : number | string | boolean + && x); // x is number +>x : number } function foo12(x: number | string | boolean) { >foo12 : (x: number | string | boolean) => number >x : number | string | boolean // Mixing typeguards - // Assigning value to x in outer guard shouldn't stop narrowing in the inner expression var b: number | boolean | string; >b : number | boolean | string return typeof x === "string" ->typeof x === "string" ? (x = 10 && x.toString().length) // number | boolean | string - changed here : ((b = x) // x is number | boolean | string - changed in true branch && typeof x === "number" && x) : number +>typeof x === "string" ? ((x = 10) && x.toString().length) // number : ((b = x) // x is number | boolean && typeof x === "number" && x) : number >typeof x === "string" : boolean >typeof x : string >x : number | string | boolean >"string" : string - ? (x = 10 && x.toString().length) // number | boolean | string - changed here ->(x = 10 && x.toString().length) : number ->x = 10 && x.toString().length : number + ? ((x = 10) && x.toString().length) // number +>((x = 10) && x.toString().length) : number +>(x = 10) && x.toString().length : number +>(x = 10) : number +>x = 10 : number >x : number | string | boolean ->10 && x.toString().length : number >10 : number >x.toString().length : number >x.toString() : string >x.toString : (radix?: number) => string ->x : number | string | boolean +>x : number >toString : (radix?: number) => string >length : number - : ((b = x) // x is number | boolean | string - changed in true branch ->((b = x) // x is number | boolean | string - changed in true branch && typeof x === "number" && x) : number ->(b = x) // x is number | boolean | string - changed in true branch && typeof x === "number" && x : number ->(b = x) // x is number | boolean | string - changed in true branch && typeof x === "number" : boolean ->(b = x) : number | string | boolean ->b = x : number | string | boolean + : ((b = x) // x is number | boolean +>((b = x) // x is number | boolean && typeof x === "number" && x) : number +>(b = x) // x is number | boolean && typeof x === "number" && x : number +>(b = x) // x is number | boolean && typeof x === "number" : boolean +>(b = x) : number | boolean +>b = x : number | boolean >b : number | boolean | string ->x : number | string | boolean +>x : number | boolean && typeof x === "number" >typeof x === "number" : boolean >typeof x : string ->x : number | string | boolean +>x : number | boolean >"number" : string && x); // x is number diff --git a/tests/baselines/reference/typeGuardsInDoStatement.js b/tests/baselines/reference/typeGuardsInDoStatement.js new file mode 100644 index 00000000000..7d299854f7d --- /dev/null +++ b/tests/baselines/reference/typeGuardsInDoStatement.js @@ -0,0 +1,60 @@ +//// [typeGuardsInDoStatement.ts] +let cond: boolean; +function a(x: string | number | boolean) { + x = true; + do { + x; // boolean | string + x = undefined; + } while (typeof x === "string") + x; // number | boolean +} +function b(x: string | number | boolean) { + x = true; + do { + x; // boolean | string + if (cond) continue; + x = undefined; + } while (typeof x === "string") + x; // number | boolean +} +function c(x: string | number) { + x = ""; + do { + x; // string + if (cond) break; + x = undefined; + } while (typeof x === "string") + x; // string | number +} + + +//// [typeGuardsInDoStatement.js] +var cond; +function a(x) { + x = true; + do { + x; // boolean | string + x = undefined; + } while (typeof x === "string"); + x; // number | boolean +} +function b(x) { + x = true; + do { + x; // boolean | string + if (cond) + continue; + x = undefined; + } while (typeof x === "string"); + x; // number | boolean +} +function c(x) { + x = ""; + do { + x; // string + if (cond) + break; + x = undefined; + } while (typeof x === "string"); + x; // string | number +} diff --git a/tests/baselines/reference/typeGuardsInDoStatement.symbols b/tests/baselines/reference/typeGuardsInDoStatement.symbols new file mode 100644 index 00000000000..7dff18d8d23 --- /dev/null +++ b/tests/baselines/reference/typeGuardsInDoStatement.symbols @@ -0,0 +1,74 @@ +=== tests/cases/conformance/expressions/typeGuards/typeGuardsInDoStatement.ts === +let cond: boolean; +>cond : Symbol(cond, Decl(typeGuardsInDoStatement.ts, 0, 3)) + +function a(x: string | number | boolean) { +>a : Symbol(a, Decl(typeGuardsInDoStatement.ts, 0, 18)) +>x : Symbol(x, Decl(typeGuardsInDoStatement.ts, 1, 11)) + + x = true; +>x : Symbol(x, Decl(typeGuardsInDoStatement.ts, 1, 11)) + + do { + x; // boolean | string +>x : Symbol(x, Decl(typeGuardsInDoStatement.ts, 1, 11)) + + x = undefined; +>x : Symbol(x, Decl(typeGuardsInDoStatement.ts, 1, 11)) +>undefined : Symbol(undefined) + + } while (typeof x === "string") +>x : Symbol(x, Decl(typeGuardsInDoStatement.ts, 1, 11)) + + x; // number | boolean +>x : Symbol(x, Decl(typeGuardsInDoStatement.ts, 1, 11)) +} +function b(x: string | number | boolean) { +>b : Symbol(b, Decl(typeGuardsInDoStatement.ts, 8, 1)) +>x : Symbol(x, Decl(typeGuardsInDoStatement.ts, 9, 11)) + + x = true; +>x : Symbol(x, Decl(typeGuardsInDoStatement.ts, 9, 11)) + + do { + x; // boolean | string +>x : Symbol(x, Decl(typeGuardsInDoStatement.ts, 9, 11)) + + if (cond) continue; +>cond : Symbol(cond, Decl(typeGuardsInDoStatement.ts, 0, 3)) + + x = undefined; +>x : Symbol(x, Decl(typeGuardsInDoStatement.ts, 9, 11)) +>undefined : Symbol(undefined) + + } while (typeof x === "string") +>x : Symbol(x, Decl(typeGuardsInDoStatement.ts, 9, 11)) + + x; // number | boolean +>x : Symbol(x, Decl(typeGuardsInDoStatement.ts, 9, 11)) +} +function c(x: string | number) { +>c : Symbol(c, Decl(typeGuardsInDoStatement.ts, 17, 1)) +>x : Symbol(x, Decl(typeGuardsInDoStatement.ts, 18, 11)) + + x = ""; +>x : Symbol(x, Decl(typeGuardsInDoStatement.ts, 18, 11)) + + do { + x; // string +>x : Symbol(x, Decl(typeGuardsInDoStatement.ts, 18, 11)) + + if (cond) break; +>cond : Symbol(cond, Decl(typeGuardsInDoStatement.ts, 0, 3)) + + x = undefined; +>x : Symbol(x, Decl(typeGuardsInDoStatement.ts, 18, 11)) +>undefined : Symbol(undefined) + + } while (typeof x === "string") +>x : Symbol(x, Decl(typeGuardsInDoStatement.ts, 18, 11)) + + x; // string | number +>x : Symbol(x, Decl(typeGuardsInDoStatement.ts, 18, 11)) +} + diff --git a/tests/baselines/reference/typeGuardsInDoStatement.types b/tests/baselines/reference/typeGuardsInDoStatement.types new file mode 100644 index 00000000000..79183e7d6c8 --- /dev/null +++ b/tests/baselines/reference/typeGuardsInDoStatement.types @@ -0,0 +1,92 @@ +=== tests/cases/conformance/expressions/typeGuards/typeGuardsInDoStatement.ts === +let cond: boolean; +>cond : boolean + +function a(x: string | number | boolean) { +>a : (x: string | number | boolean) => void +>x : string | number | boolean + + x = true; +>x = true : boolean +>x : string | number | boolean +>true : boolean + + do { + x; // boolean | string +>x : boolean | string + + x = undefined; +>x = undefined : undefined +>x : string | number | boolean +>undefined : undefined + + } while (typeof x === "string") +>typeof x === "string" : boolean +>typeof x : string +>x : string | number | boolean +>"string" : string + + x; // number | boolean +>x : number | boolean +} +function b(x: string | number | boolean) { +>b : (x: string | number | boolean) => void +>x : string | number | boolean + + x = true; +>x = true : boolean +>x : string | number | boolean +>true : boolean + + do { + x; // boolean | string +>x : boolean | string + + if (cond) continue; +>cond : boolean + + x = undefined; +>x = undefined : undefined +>x : string | number | boolean +>undefined : undefined + + } while (typeof x === "string") +>typeof x === "string" : boolean +>typeof x : string +>x : string | number | boolean +>"string" : string + + x; // number | boolean +>x : number | boolean +} +function c(x: string | number) { +>c : (x: string | number) => void +>x : string | number + + x = ""; +>x = "" : string +>x : string | number +>"" : string + + do { + x; // string +>x : string + + if (cond) break; +>cond : boolean + + x = undefined; +>x = undefined : undefined +>x : string | number +>undefined : undefined + + } while (typeof x === "string") +>typeof x === "string" : boolean +>typeof x : string +>x : string | number +>"string" : string + + x; // string | number +>x : string | number +} + diff --git a/tests/baselines/reference/typeGuardsInExternalModule.types b/tests/baselines/reference/typeGuardsInExternalModule.types index e20063719f5..940e7db831a 100644 --- a/tests/baselines/reference/typeGuardsInExternalModule.types +++ b/tests/baselines/reference/typeGuardsInExternalModule.types @@ -44,13 +44,13 @@ if (typeof var2 === "string") { // export makes the var property and not variable strOrNum = var2; // string | number ->strOrNum = var2 : string | number +>strOrNum = var2 : string >strOrNum : string | number ->var2 : string | number +>var2 : string } else { strOrNum = var2; // number | string ->strOrNum = var2 : string | number +>strOrNum = var2 : number >strOrNum : string | number ->var2 : string | number +>var2 : number } diff --git a/tests/baselines/reference/typeGuardsInForStatement.js b/tests/baselines/reference/typeGuardsInForStatement.js new file mode 100644 index 00000000000..a2e104bc3f1 --- /dev/null +++ b/tests/baselines/reference/typeGuardsInForStatement.js @@ -0,0 +1,48 @@ +//// [typeGuardsInForStatement.ts] +let cond: boolean; +function a(x: string | number) { + for (x = undefined; typeof x !== "number"; x = undefined) { + x; // string + } + x; // number +} +function b(x: string | number) { + for (x = undefined; typeof x !== "number"; x = undefined) { + x; // string + if (cond) continue; + } + x; // number +} +function c(x: string | number) { + for (x = undefined; typeof x !== "number"; x = undefined) { + x; // string + if (cond) break; + } + x; // string | number +} + + +//// [typeGuardsInForStatement.js] +var cond; +function a(x) { + for (x = undefined; typeof x !== "number"; x = undefined) { + x; // string + } + x; // number +} +function b(x) { + for (x = undefined; typeof x !== "number"; x = undefined) { + x; // string + if (cond) + continue; + } + x; // number +} +function c(x) { + for (x = undefined; typeof x !== "number"; x = undefined) { + x; // string + if (cond) + break; + } + x; // string | number +} diff --git a/tests/baselines/reference/typeGuardsInForStatement.symbols b/tests/baselines/reference/typeGuardsInForStatement.symbols new file mode 100644 index 00000000000..fe1c10eb14e --- /dev/null +++ b/tests/baselines/reference/typeGuardsInForStatement.symbols @@ -0,0 +1,62 @@ +=== tests/cases/conformance/expressions/typeGuards/typeGuardsInForStatement.ts === +let cond: boolean; +>cond : Symbol(cond, Decl(typeGuardsInForStatement.ts, 0, 3)) + +function a(x: string | number) { +>a : Symbol(a, Decl(typeGuardsInForStatement.ts, 0, 18)) +>x : Symbol(x, Decl(typeGuardsInForStatement.ts, 1, 11)) + + for (x = undefined; typeof x !== "number"; x = undefined) { +>x : Symbol(x, Decl(typeGuardsInForStatement.ts, 1, 11)) +>undefined : Symbol(undefined) +>x : Symbol(x, Decl(typeGuardsInForStatement.ts, 1, 11)) +>x : Symbol(x, Decl(typeGuardsInForStatement.ts, 1, 11)) +>undefined : Symbol(undefined) + + x; // string +>x : Symbol(x, Decl(typeGuardsInForStatement.ts, 1, 11)) + } + x; // number +>x : Symbol(x, Decl(typeGuardsInForStatement.ts, 1, 11)) +} +function b(x: string | number) { +>b : Symbol(b, Decl(typeGuardsInForStatement.ts, 6, 1)) +>x : Symbol(x, Decl(typeGuardsInForStatement.ts, 7, 11)) + + for (x = undefined; typeof x !== "number"; x = undefined) { +>x : Symbol(x, Decl(typeGuardsInForStatement.ts, 7, 11)) +>undefined : Symbol(undefined) +>x : Symbol(x, Decl(typeGuardsInForStatement.ts, 7, 11)) +>x : Symbol(x, Decl(typeGuardsInForStatement.ts, 7, 11)) +>undefined : Symbol(undefined) + + x; // string +>x : Symbol(x, Decl(typeGuardsInForStatement.ts, 7, 11)) + + if (cond) continue; +>cond : Symbol(cond, Decl(typeGuardsInForStatement.ts, 0, 3)) + } + x; // number +>x : Symbol(x, Decl(typeGuardsInForStatement.ts, 7, 11)) +} +function c(x: string | number) { +>c : Symbol(c, Decl(typeGuardsInForStatement.ts, 13, 1)) +>x : Symbol(x, Decl(typeGuardsInForStatement.ts, 14, 11)) + + for (x = undefined; typeof x !== "number"; x = undefined) { +>x : Symbol(x, Decl(typeGuardsInForStatement.ts, 14, 11)) +>undefined : Symbol(undefined) +>x : Symbol(x, Decl(typeGuardsInForStatement.ts, 14, 11)) +>x : Symbol(x, Decl(typeGuardsInForStatement.ts, 14, 11)) +>undefined : Symbol(undefined) + + x; // string +>x : Symbol(x, Decl(typeGuardsInForStatement.ts, 14, 11)) + + if (cond) break; +>cond : Symbol(cond, Decl(typeGuardsInForStatement.ts, 0, 3)) + } + x; // string | number +>x : Symbol(x, Decl(typeGuardsInForStatement.ts, 14, 11)) +} + diff --git a/tests/baselines/reference/typeGuardsInForStatement.types b/tests/baselines/reference/typeGuardsInForStatement.types new file mode 100644 index 00000000000..5ebdea53c31 --- /dev/null +++ b/tests/baselines/reference/typeGuardsInForStatement.types @@ -0,0 +1,77 @@ +=== tests/cases/conformance/expressions/typeGuards/typeGuardsInForStatement.ts === +let cond: boolean; +>cond : boolean + +function a(x: string | number) { +>a : (x: string | number) => void +>x : string | number + + for (x = undefined; typeof x !== "number"; x = undefined) { +>x = undefined : undefined +>x : string | number +>undefined : undefined +>typeof x !== "number" : boolean +>typeof x : string +>x : string | number +>"number" : string +>x = undefined : undefined +>x : string | number +>undefined : undefined + + x; // string +>x : string + } + x; // number +>x : number +} +function b(x: string | number) { +>b : (x: string | number) => void +>x : string | number + + for (x = undefined; typeof x !== "number"; x = undefined) { +>x = undefined : undefined +>x : string | number +>undefined : undefined +>typeof x !== "number" : boolean +>typeof x : string +>x : string | number +>"number" : string +>x = undefined : undefined +>x : string | number +>undefined : undefined + + x; // string +>x : string + + if (cond) continue; +>cond : boolean + } + x; // number +>x : number +} +function c(x: string | number) { +>c : (x: string | number) => void +>x : string | number + + for (x = undefined; typeof x !== "number"; x = undefined) { +>x = undefined : undefined +>x : string | number +>undefined : undefined +>typeof x !== "number" : boolean +>typeof x : string +>x : string | number +>"number" : string +>x = undefined : undefined +>x : string | number +>undefined : undefined + + x; // string +>x : string + + if (cond) break; +>cond : boolean + } + x; // string | number +>x : number | string +} + diff --git a/tests/baselines/reference/typeGuardsInFunctionAndModuleBlock.symbols b/tests/baselines/reference/typeGuardsInFunctionAndModuleBlock.symbols index 34810f303db..bf21641624e 100644 --- a/tests/baselines/reference/typeGuardsInFunctionAndModuleBlock.symbols +++ b/tests/baselines/reference/typeGuardsInFunctionAndModuleBlock.symbols @@ -27,9 +27,9 @@ function foo(x: number | string | boolean) { >toString : Symbol(Object.toString, Decl(lib.d.ts, --, --)) : x.toString(); // number ->x.toString : Symbol(Number.toString, Decl(lib.d.ts, --, --)) +>x.toString : Symbol(toString, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >x : Symbol(x, Decl(typeGuardsInFunctionAndModuleBlock.ts, 2, 13)) ->toString : Symbol(Number.toString, Decl(lib.d.ts, --, --)) +>toString : Symbol(toString, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) } (); } @@ -60,9 +60,9 @@ function foo2(x: number | string | boolean) { >toString : Symbol(Object.toString, Decl(lib.d.ts, --, --)) : x.toString(); // number ->x.toString : Symbol(Number.toString, Decl(lib.d.ts, --, --)) +>x.toString : Symbol(toString, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >x : Symbol(x, Decl(typeGuardsInFunctionAndModuleBlock.ts, 12, 14)) ->toString : Symbol(Number.toString, Decl(lib.d.ts, --, --)) +>toString : Symbol(toString, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) } (x); // x here is narrowed to number | boolean >x : Symbol(x, Decl(typeGuardsInFunctionAndModuleBlock.ts, 12, 14)) @@ -91,9 +91,9 @@ function foo3(x: number | string | boolean) { >toString : Symbol(Object.toString, Decl(lib.d.ts, --, --)) : x.toString(); // number ->x.toString : Symbol(Number.toString, Decl(lib.d.ts, --, --)) +>x.toString : Symbol(toString, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >x : Symbol(x, Decl(typeGuardsInFunctionAndModuleBlock.ts, 22, 14)) ->toString : Symbol(Number.toString, Decl(lib.d.ts, --, --)) +>toString : Symbol(toString, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) })(); } @@ -123,9 +123,9 @@ function foo4(x: number | string | boolean) { >toString : Symbol(Object.toString, Decl(lib.d.ts, --, --)) : x.toString(); // number ->x.toString : Symbol(Number.toString, Decl(lib.d.ts, --, --)) +>x.toString : Symbol(toString, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >x : Symbol(x, Decl(typeGuardsInFunctionAndModuleBlock.ts, 32, 14)) ->toString : Symbol(Number.toString, Decl(lib.d.ts, --, --)) +>toString : Symbol(toString, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) })(x); // x here is narrowed to number | boolean >x : Symbol(x, Decl(typeGuardsInFunctionAndModuleBlock.ts, 32, 14)) diff --git a/tests/baselines/reference/typeGuardsInFunctionAndModuleBlock.types b/tests/baselines/reference/typeGuardsInFunctionAndModuleBlock.types index f7d56ed17d1..67d1816cfc3 100644 --- a/tests/baselines/reference/typeGuardsInFunctionAndModuleBlock.types +++ b/tests/baselines/reference/typeGuardsInFunctionAndModuleBlock.types @@ -21,14 +21,14 @@ function foo(x: number | string | boolean) { >f : () => string var b = x; // number | boolean ->b : number | boolean ->x : number | boolean +>b : number | string | boolean +>x : number | string | boolean return typeof x === "boolean" >typeof x === "boolean" ? x.toString() // boolean : x.toString() : string >typeof x === "boolean" : boolean >typeof x : string ->x : number | boolean +>x : number | string | boolean >"boolean" : string ? x.toString() // boolean @@ -40,7 +40,7 @@ function foo(x: number | string | boolean) { : x.toString(); // number >x.toString() : string >x.toString : (radix?: number) => string ->x : number +>x : number | string >toString : (radix?: number) => string } (); @@ -66,14 +66,14 @@ function foo2(x: number | string | boolean) { >a : number | boolean var b = x; // new scope - number | boolean ->b : number | boolean ->x : number | boolean +>b : number | string | boolean +>x : number | string | boolean return typeof x === "boolean" >typeof x === "boolean" ? x.toString() // boolean : x.toString() : string >typeof x === "boolean" : boolean >typeof x : string ->x : number | boolean +>x : number | string | boolean >"boolean" : string ? x.toString() // boolean @@ -85,7 +85,7 @@ function foo2(x: number | string | boolean) { : x.toString(); // number >x.toString() : string >x.toString : (radix?: number) => string ->x : number +>x : number | string >toString : (radix?: number) => string } (x); // x here is narrowed to number | boolean @@ -111,14 +111,14 @@ function foo3(x: number | string | boolean) { >() => { var b = x; // new scope - number | boolean return typeof x === "boolean" ? x.toString() // boolean : x.toString(); // number } : () => string var b = x; // new scope - number | boolean ->b : number | boolean ->x : number | boolean +>b : number | string | boolean +>x : number | string | boolean return typeof x === "boolean" >typeof x === "boolean" ? x.toString() // boolean : x.toString() : string >typeof x === "boolean" : boolean >typeof x : string ->x : number | boolean +>x : number | string | boolean >"boolean" : string ? x.toString() // boolean @@ -130,7 +130,7 @@ function foo3(x: number | string | boolean) { : x.toString(); // number >x.toString() : string >x.toString : (radix?: number) => string ->x : number +>x : number | string >toString : (radix?: number) => string })(); @@ -156,14 +156,14 @@ function foo4(x: number | string | boolean) { >a : number | boolean var b = x; // new scope - number | boolean ->b : number | boolean ->x : number | boolean +>b : number | string | boolean +>x : number | string | boolean return typeof x === "boolean" >typeof x === "boolean" ? x.toString() // boolean : x.toString() : string >typeof x === "boolean" : boolean >typeof x : string ->x : number | boolean +>x : number | string | boolean >"boolean" : string ? x.toString() // boolean @@ -175,7 +175,7 @@ function foo4(x: number | string | boolean) { : x.toString(); // number >x.toString() : string >x.toString : (radix?: number) => string ->x : number +>x : number | string >toString : (radix?: number) => string })(x); // x here is narrowed to number | boolean @@ -200,8 +200,8 @@ function foo5(x: number | string | boolean) { >foo : () => void var z = x; // string ->z : string ->x : string +>z : number | string | boolean +>x : number | string | boolean } } } diff --git a/tests/baselines/reference/typeGuardsInIfStatement.errors.txt b/tests/baselines/reference/typeGuardsInIfStatement.errors.txt new file mode 100644 index 00000000000..984ca454e76 --- /dev/null +++ b/tests/baselines/reference/typeGuardsInIfStatement.errors.txt @@ -0,0 +1,153 @@ +tests/cases/conformance/expressions/typeGuards/typeGuardsInIfStatement.ts(22,10): error TS2354: No best common type exists among return expressions. +tests/cases/conformance/expressions/typeGuards/typeGuardsInIfStatement.ts(31,10): error TS2354: No best common type exists among return expressions. +tests/cases/conformance/expressions/typeGuards/typeGuardsInIfStatement.ts(49,10): error TS2354: No best common type exists among return expressions. + + +==== tests/cases/conformance/expressions/typeGuards/typeGuardsInIfStatement.ts (3 errors) ==== + // In the true branch statement of an 'if' statement, + // the type of a variable or parameter is narrowed by any type guard in the 'if' condition when true. + // In the false branch statement of an 'if' statement, + // the type of a variable or parameter is narrowed by any type guard in the 'if' condition when false. + function foo(x: number | string) { + if (typeof x === "string") { + return x.length; // string + } + else { + return x++; // number + } + } + function foo2(x: number | string) { + if (typeof x === "string") { + x = 10; + return x; // number + } + else { + return x; // number + } + } + function foo3(x: number | string) { + ~~~~ +!!! error TS2354: No best common type exists among return expressions. + if (typeof x === "string") { + x = "Hello"; + return x; // string + } + else { + return x; // number + } + } + function foo4(x: number | string) { + ~~~~ +!!! error TS2354: No best common type exists among return expressions. + if (typeof x === "string") { + return x; // string + } + else { + x = 10; + return x; // number + } + } + function foo5(x: number | string) { + if (typeof x === "string") { + return x; // string + } + else { + x = "hello"; + return x; // string + } + } + function foo6(x: number | string) { + ~~~~ +!!! error TS2354: No best common type exists among return expressions. + if (typeof x === "string") { + x = 10; + return x; // number + } + else { + x = "hello"; + return x; // string + } + } + function foo7(x: number | string | boolean) { + if (typeof x === "string") { + return x === "hello"; // string + } + else if (typeof x === "boolean") { + return x; // boolean + } + else { + return x == 10; // number + } + } + function foo8(x: number | string | boolean) { + if (typeof x === "string") { + return x === "hello"; // string + } + else { + var b: number | boolean = x; // number | boolean + if (typeof x === "boolean") { + return x; // boolean + } + else { + return x == 10; // number + } + } + } + function foo9(x: number | string) { + var y = 10; + if (typeof x === "string") { + // usage of x or assignment to separate variable shouldn't cause narrowing of type to stop + y = x.length; + return x === "hello"; // string + } + else { + return x == 10; // number + } + } + function foo10(x: number | string | boolean) { + // Mixing typeguard narrowing in if statement with conditional expression typeguard + if (typeof x === "string") { + return x === "hello"; // string + } + else { + var y: boolean | string; + var b = x; // number | boolean + return typeof x === "number" + ? x === 10 // number + : x; // x should be boolean + } + } + function foo11(x: number | string | boolean) { + // Mixing typeguard narrowing in if statement with conditional expression typeguard + // Assigning value to x deep inside another guard stops narrowing of type too + if (typeof x === "string") { + return x; // string | number | boolean - x changed in else branch + } + else { + var y: number| boolean | string; + var b = x; // number | boolean | string - because below we are changing value of x in if statement + return typeof x === "number" + ? ( + // change value of x + x = 10 && x.toString() // number | boolean | string + ) + : ( + // do not change value + y = x && x.toString() // number | boolean | string + ); + } + } + function foo12(x: number | string | boolean) { + // Mixing typeguard narrowing in if statement with conditional expression typeguard + // Assigning value to x in outer guard shouldn't stop narrowing in the inner expression + if (typeof x === "string") { + return x.toString(); // string | number | boolean - x changed in else branch + } + else { + x = 10; + var b = x; // number | boolean | string + return typeof x === "number" + ? x.toString() // number + : x.toString(); // boolean | string + } + } \ No newline at end of file diff --git a/tests/baselines/reference/typeGuardsInIfStatement.js b/tests/baselines/reference/typeGuardsInIfStatement.js index de05a7bf82a..8e841d2eac3 100644 --- a/tests/baselines/reference/typeGuardsInIfStatement.js +++ b/tests/baselines/reference/typeGuardsInIfStatement.js @@ -1,10 +1,8 @@ //// [typeGuardsInIfStatement.ts] // In the true branch statement of an 'if' statement, -// the type of a variable or parameter is narrowed by any type guard in the 'if' condition when true, -// provided the true branch statement contains no assignments to the variable or parameter. +// the type of a variable or parameter is narrowed by any type guard in the 'if' condition when true. // In the false branch statement of an 'if' statement, -// the type of a variable or parameter is narrowed by any type guard in the 'if' condition when false, -// provided the false branch statement contains no assignments to the variable or parameter +// the type of a variable or parameter is narrowed by any type guard in the 'if' condition when false. function foo(x: number | string) { if (typeof x === "string") { return x.length; // string @@ -14,54 +12,49 @@ function foo(x: number | string) { } } function foo2(x: number | string) { - // x is assigned in the if true branch, the type is not narrowed if (typeof x === "string") { x = 10; - return x; // string | number + return x; // number } else { - return x; // string | number + return x; // number } } function foo3(x: number | string) { - // x is assigned in the if true branch, the type is not narrowed if (typeof x === "string") { - x = "Hello"; // even though assigned using same type as narrowed expression - return x; // string | number + x = "Hello"; + return x; // string } else { - return x; // string | number + return x; // number } } function foo4(x: number | string) { - // false branch updates the variable - so here it is not number if (typeof x === "string") { - return x; // string | number + return x; // string } else { - x = 10; // even though assigned number - this should result in x to be string | number - return x; // string | number + x = 10; + return x; // number } } function foo5(x: number | string) { - // false branch updates the variable - so here it is not number if (typeof x === "string") { - return x; // string | number + return x; // string } else { x = "hello"; - return x; // string | number + return x; // string } } function foo6(x: number | string) { - // Modify in both branches if (typeof x === "string") { x = 10; - return x; // string | number + return x; // number } else { x = "hello"; - return x; // string | number + return x; // string } } function foo7(x: number | string | boolean) { @@ -150,11 +143,9 @@ function foo12(x: number | string | boolean) { //// [typeGuardsInIfStatement.js] // In the true branch statement of an 'if' statement, -// the type of a variable or parameter is narrowed by any type guard in the 'if' condition when true, -// provided the true branch statement contains no assignments to the variable or parameter. +// the type of a variable or parameter is narrowed by any type guard in the 'if' condition when true. // In the false branch statement of an 'if' statement, -// the type of a variable or parameter is narrowed by any type guard in the 'if' condition when false, -// provided the false branch statement contains no assignments to the variable or parameter +// the type of a variable or parameter is narrowed by any type guard in the 'if' condition when false. function foo(x) { if (typeof x === "string") { return x.length; // string @@ -164,54 +155,49 @@ function foo(x) { } } function foo2(x) { - // x is assigned in the if true branch, the type is not narrowed if (typeof x === "string") { x = 10; - return x; // string | number + return x; // number } else { - return x; // string | number + return x; // number } } function foo3(x) { - // x is assigned in the if true branch, the type is not narrowed if (typeof x === "string") { - x = "Hello"; // even though assigned using same type as narrowed expression - return x; // string | number + x = "Hello"; + return x; // string } else { - return x; // string | number + return x; // number } } function foo4(x) { - // false branch updates the variable - so here it is not number if (typeof x === "string") { - return x; // string | number + return x; // string } else { - x = 10; // even though assigned number - this should result in x to be string | number - return x; // string | number + x = 10; + return x; // number } } function foo5(x) { - // false branch updates the variable - so here it is not number if (typeof x === "string") { - return x; // string | number + return x; // string } else { x = "hello"; - return x; // string | number + return x; // string } } function foo6(x) { - // Modify in both branches if (typeof x === "string") { x = 10; - return x; // string | number + return x; // number } else { x = "hello"; - return x; // string | number + return x; // string } } function foo7(x) { diff --git a/tests/baselines/reference/typeGuardsInIfStatement.symbols b/tests/baselines/reference/typeGuardsInIfStatement.symbols deleted file mode 100644 index 54a65f0693b..00000000000 --- a/tests/baselines/reference/typeGuardsInIfStatement.symbols +++ /dev/null @@ -1,304 +0,0 @@ -=== tests/cases/conformance/expressions/typeGuards/typeGuardsInIfStatement.ts === -// In the true branch statement of an 'if' statement, -// the type of a variable or parameter is narrowed by any type guard in the 'if' condition when true, -// provided the true branch statement contains no assignments to the variable or parameter. -// In the false branch statement of an 'if' statement, -// the type of a variable or parameter is narrowed by any type guard in the 'if' condition when false, -// provided the false branch statement contains no assignments to the variable or parameter -function foo(x: number | string) { ->foo : Symbol(foo, Decl(typeGuardsInIfStatement.ts, 0, 0)) ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 6, 13)) - - if (typeof x === "string") { ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 6, 13)) - - return x.length; // string ->x.length : Symbol(String.length, Decl(lib.d.ts, --, --)) ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 6, 13)) ->length : Symbol(String.length, Decl(lib.d.ts, --, --)) - } - else { - return x++; // number ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 6, 13)) - } -} -function foo2(x: number | string) { ->foo2 : Symbol(foo2, Decl(typeGuardsInIfStatement.ts, 13, 1)) ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 14, 14)) - - // x is assigned in the if true branch, the type is not narrowed - if (typeof x === "string") { ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 14, 14)) - - x = 10; ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 14, 14)) - - return x; // string | number ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 14, 14)) - } - else { - return x; // string | number ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 14, 14)) - } -} -function foo3(x: number | string) { ->foo3 : Symbol(foo3, Decl(typeGuardsInIfStatement.ts, 23, 1)) ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 24, 14)) - - // x is assigned in the if true branch, the type is not narrowed - if (typeof x === "string") { ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 24, 14)) - - x = "Hello"; // even though assigned using same type as narrowed expression ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 24, 14)) - - return x; // string | number ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 24, 14)) - } - else { - return x; // string | number ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 24, 14)) - } -} -function foo4(x: number | string) { ->foo4 : Symbol(foo4, Decl(typeGuardsInIfStatement.ts, 33, 1)) ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 34, 14)) - - // false branch updates the variable - so here it is not number - if (typeof x === "string") { ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 34, 14)) - - return x; // string | number ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 34, 14)) - } - else { - x = 10; // even though assigned number - this should result in x to be string | number ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 34, 14)) - - return x; // string | number ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 34, 14)) - } -} -function foo5(x: number | string) { ->foo5 : Symbol(foo5, Decl(typeGuardsInIfStatement.ts, 43, 1)) ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 44, 14)) - - // false branch updates the variable - so here it is not number - if (typeof x === "string") { ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 44, 14)) - - return x; // string | number ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 44, 14)) - } - else { - x = "hello"; ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 44, 14)) - - return x; // string | number ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 44, 14)) - } -} -function foo6(x: number | string) { ->foo6 : Symbol(foo6, Decl(typeGuardsInIfStatement.ts, 53, 1)) ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 54, 14)) - - // Modify in both branches - if (typeof x === "string") { ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 54, 14)) - - x = 10; ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 54, 14)) - - return x; // string | number ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 54, 14)) - } - else { - x = "hello"; ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 54, 14)) - - return x; // string | number ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 54, 14)) - } -} -function foo7(x: number | string | boolean) { ->foo7 : Symbol(foo7, Decl(typeGuardsInIfStatement.ts, 64, 1)) ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 65, 14)) - - if (typeof x === "string") { ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 65, 14)) - - return x === "hello"; // string ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 65, 14)) - } - else if (typeof x === "boolean") { ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 65, 14)) - - return x; // boolean ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 65, 14)) - } - else { - return x == 10; // number ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 65, 14)) - } -} -function foo8(x: number | string | boolean) { ->foo8 : Symbol(foo8, Decl(typeGuardsInIfStatement.ts, 75, 1)) ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 76, 14)) - - if (typeof x === "string") { ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 76, 14)) - - return x === "hello"; // string ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 76, 14)) - } - else { - var b: number | boolean = x; // number | boolean ->b : Symbol(b, Decl(typeGuardsInIfStatement.ts, 81, 11)) ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 76, 14)) - - if (typeof x === "boolean") { ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 76, 14)) - - return x; // boolean ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 76, 14)) - } - else { - return x == 10; // number ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 76, 14)) - } - } -} -function foo9(x: number | string) { ->foo9 : Symbol(foo9, Decl(typeGuardsInIfStatement.ts, 89, 1)) ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 90, 14)) - - var y = 10; ->y : Symbol(y, Decl(typeGuardsInIfStatement.ts, 91, 7)) - - if (typeof x === "string") { ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 90, 14)) - - // usage of x or assignment to separate variable shouldn't cause narrowing of type to stop - y = x.length; ->y : Symbol(y, Decl(typeGuardsInIfStatement.ts, 91, 7)) ->x.length : Symbol(String.length, Decl(lib.d.ts, --, --)) ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 90, 14)) ->length : Symbol(String.length, Decl(lib.d.ts, --, --)) - - return x === "hello"; // string ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 90, 14)) - } - else { - return x == 10; // number ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 90, 14)) - } -} -function foo10(x: number | string | boolean) { ->foo10 : Symbol(foo10, Decl(typeGuardsInIfStatement.ts, 100, 1)) ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 101, 15)) - - // Mixing typeguard narrowing in if statement with conditional expression typeguard - if (typeof x === "string") { ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 101, 15)) - - return x === "hello"; // string ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 101, 15)) - } - else { - var y: boolean | string; ->y : Symbol(y, Decl(typeGuardsInIfStatement.ts, 107, 11)) - - var b = x; // number | boolean ->b : Symbol(b, Decl(typeGuardsInIfStatement.ts, 108, 11)) ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 101, 15)) - - return typeof x === "number" ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 101, 15)) - - ? x === 10 // number ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 101, 15)) - - : x; // x should be boolean ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 101, 15)) - } -} -function foo11(x: number | string | boolean) { ->foo11 : Symbol(foo11, Decl(typeGuardsInIfStatement.ts, 113, 1)) ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 114, 15)) - - // Mixing typeguard narrowing in if statement with conditional expression typeguard - // Assigning value to x deep inside another guard stops narrowing of type too - if (typeof x === "string") { ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 114, 15)) - - return x; // string | number | boolean - x changed in else branch ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 114, 15)) - } - else { - var y: number| boolean | string; ->y : Symbol(y, Decl(typeGuardsInIfStatement.ts, 121, 11)) - - var b = x; // number | boolean | string - because below we are changing value of x in if statement ->b : Symbol(b, Decl(typeGuardsInIfStatement.ts, 122, 11)) ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 114, 15)) - - return typeof x === "number" ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 114, 15)) - - ? ( - // change value of x - x = 10 && x.toString() // number | boolean | string ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 114, 15)) ->x.toString : Symbol(toString, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 114, 15)) ->toString : Symbol(toString, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) - - ) - : ( - // do not change value - y = x && x.toString() // number | boolean | string ->y : Symbol(y, Decl(typeGuardsInIfStatement.ts, 121, 11)) ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 114, 15)) ->x.toString : Symbol(toString, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 114, 15)) ->toString : Symbol(toString, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) - - ); - } -} -function foo12(x: number | string | boolean) { ->foo12 : Symbol(foo12, Decl(typeGuardsInIfStatement.ts, 133, 1)) ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 134, 15)) - - // Mixing typeguard narrowing in if statement with conditional expression typeguard - // Assigning value to x in outer guard shouldn't stop narrowing in the inner expression - if (typeof x === "string") { ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 134, 15)) - - return x.toString(); // string | number | boolean - x changed in else branch ->x.toString : Symbol(toString, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 134, 15)) ->toString : Symbol(toString, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) - } - else { - x = 10; ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 134, 15)) - - var b = x; // number | boolean | string ->b : Symbol(b, Decl(typeGuardsInIfStatement.ts, 142, 11)) ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 134, 15)) - - return typeof x === "number" ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 134, 15)) - - ? x.toString() // number ->x.toString : Symbol(Number.toString, Decl(lib.d.ts, --, --)) ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 134, 15)) ->toString : Symbol(Number.toString, Decl(lib.d.ts, --, --)) - - : x.toString(); // boolean | string ->x.toString : Symbol(toString, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->x : Symbol(x, Decl(typeGuardsInIfStatement.ts, 134, 15)) ->toString : Symbol(toString, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) - } -} diff --git a/tests/baselines/reference/typeGuardsInIfStatement.types b/tests/baselines/reference/typeGuardsInIfStatement.types deleted file mode 100644 index 0095a7cc768..00000000000 --- a/tests/baselines/reference/typeGuardsInIfStatement.types +++ /dev/null @@ -1,405 +0,0 @@ -=== tests/cases/conformance/expressions/typeGuards/typeGuardsInIfStatement.ts === -// In the true branch statement of an 'if' statement, -// the type of a variable or parameter is narrowed by any type guard in the 'if' condition when true, -// provided the true branch statement contains no assignments to the variable or parameter. -// In the false branch statement of an 'if' statement, -// the type of a variable or parameter is narrowed by any type guard in the 'if' condition when false, -// provided the false branch statement contains no assignments to the variable or parameter -function foo(x: number | string) { ->foo : (x: number | string) => number ->x : number | string - - if (typeof x === "string") { ->typeof x === "string" : boolean ->typeof x : string ->x : number | string ->"string" : string - - return x.length; // string ->x.length : number ->x : string ->length : number - } - else { - return x++; // number ->x++ : number ->x : number - } -} -function foo2(x: number | string) { ->foo2 : (x: number | string) => number | string ->x : number | string - - // x is assigned in the if true branch, the type is not narrowed - if (typeof x === "string") { ->typeof x === "string" : boolean ->typeof x : string ->x : number | string ->"string" : string - - x = 10; ->x = 10 : number ->x : number | string ->10 : number - - return x; // string | number ->x : number | string - } - else { - return x; // string | number ->x : number | string - } -} -function foo3(x: number | string) { ->foo3 : (x: number | string) => number | string ->x : number | string - - // x is assigned in the if true branch, the type is not narrowed - if (typeof x === "string") { ->typeof x === "string" : boolean ->typeof x : string ->x : number | string ->"string" : string - - x = "Hello"; // even though assigned using same type as narrowed expression ->x = "Hello" : string ->x : number | string ->"Hello" : string - - return x; // string | number ->x : number | string - } - else { - return x; // string | number ->x : number | string - } -} -function foo4(x: number | string) { ->foo4 : (x: number | string) => number | string ->x : number | string - - // false branch updates the variable - so here it is not number - if (typeof x === "string") { ->typeof x === "string" : boolean ->typeof x : string ->x : number | string ->"string" : string - - return x; // string | number ->x : number | string - } - else { - x = 10; // even though assigned number - this should result in x to be string | number ->x = 10 : number ->x : number | string ->10 : number - - return x; // string | number ->x : number | string - } -} -function foo5(x: number | string) { ->foo5 : (x: number | string) => number | string ->x : number | string - - // false branch updates the variable - so here it is not number - if (typeof x === "string") { ->typeof x === "string" : boolean ->typeof x : string ->x : number | string ->"string" : string - - return x; // string | number ->x : number | string - } - else { - x = "hello"; ->x = "hello" : string ->x : number | string ->"hello" : string - - return x; // string | number ->x : number | string - } -} -function foo6(x: number | string) { ->foo6 : (x: number | string) => number | string ->x : number | string - - // Modify in both branches - if (typeof x === "string") { ->typeof x === "string" : boolean ->typeof x : string ->x : number | string ->"string" : string - - x = 10; ->x = 10 : number ->x : number | string ->10 : number - - return x; // string | number ->x : number | string - } - else { - x = "hello"; ->x = "hello" : string ->x : number | string ->"hello" : string - - return x; // string | number ->x : number | string - } -} -function foo7(x: number | string | boolean) { ->foo7 : (x: number | string | boolean) => boolean ->x : number | string | boolean - - if (typeof x === "string") { ->typeof x === "string" : boolean ->typeof x : string ->x : number | string | boolean ->"string" : string - - return x === "hello"; // string ->x === "hello" : boolean ->x : string ->"hello" : string - } - else if (typeof x === "boolean") { ->typeof x === "boolean" : boolean ->typeof x : string ->x : number | boolean ->"boolean" : string - - return x; // boolean ->x : boolean - } - else { - return x == 10; // number ->x == 10 : boolean ->x : number ->10 : number - } -} -function foo8(x: number | string | boolean) { ->foo8 : (x: number | string | boolean) => boolean ->x : number | string | boolean - - if (typeof x === "string") { ->typeof x === "string" : boolean ->typeof x : string ->x : number | string | boolean ->"string" : string - - return x === "hello"; // string ->x === "hello" : boolean ->x : string ->"hello" : string - } - else { - var b: number | boolean = x; // number | boolean ->b : number | boolean ->x : number | boolean - - if (typeof x === "boolean") { ->typeof x === "boolean" : boolean ->typeof x : string ->x : number | boolean ->"boolean" : string - - return x; // boolean ->x : boolean - } - else { - return x == 10; // number ->x == 10 : boolean ->x : number ->10 : number - } - } -} -function foo9(x: number | string) { ->foo9 : (x: number | string) => boolean ->x : number | string - - var y = 10; ->y : number ->10 : number - - if (typeof x === "string") { ->typeof x === "string" : boolean ->typeof x : string ->x : number | string ->"string" : string - - // usage of x or assignment to separate variable shouldn't cause narrowing of type to stop - y = x.length; ->y = x.length : number ->y : number ->x.length : number ->x : string ->length : number - - return x === "hello"; // string ->x === "hello" : boolean ->x : string ->"hello" : string - } - else { - return x == 10; // number ->x == 10 : boolean ->x : number ->10 : number - } -} -function foo10(x: number | string | boolean) { ->foo10 : (x: number | string | boolean) => boolean ->x : number | string | boolean - - // Mixing typeguard narrowing in if statement with conditional expression typeguard - if (typeof x === "string") { ->typeof x === "string" : boolean ->typeof x : string ->x : number | string | boolean ->"string" : string - - return x === "hello"; // string ->x === "hello" : boolean ->x : string ->"hello" : string - } - else { - var y: boolean | string; ->y : boolean | string - - var b = x; // number | boolean ->b : number | boolean ->x : number | boolean - - return typeof x === "number" ->typeof x === "number" ? x === 10 // number : x : boolean ->typeof x === "number" : boolean ->typeof x : string ->x : number | boolean ->"number" : string - - ? x === 10 // number ->x === 10 : boolean ->x : number ->10 : number - - : x; // x should be boolean ->x : boolean - } -} -function foo11(x: number | string | boolean) { ->foo11 : (x: number | string | boolean) => number | string | boolean ->x : number | string | boolean - - // Mixing typeguard narrowing in if statement with conditional expression typeguard - // Assigning value to x deep inside another guard stops narrowing of type too - if (typeof x === "string") { ->typeof x === "string" : boolean ->typeof x : string ->x : number | string | boolean ->"string" : string - - return x; // string | number | boolean - x changed in else branch ->x : number | string | boolean - } - else { - var y: number| boolean | string; ->y : number | boolean | string - - var b = x; // number | boolean | string - because below we are changing value of x in if statement ->b : number | string | boolean ->x : number | string | boolean - - return typeof x === "number" ->typeof x === "number" ? ( // change value of x x = 10 && x.toString() // number | boolean | string ) : ( // do not change value y = x && x.toString() // number | boolean | string ) : string ->typeof x === "number" : boolean ->typeof x : string ->x : number | string | boolean ->"number" : string - - ? ( ->( // change value of x x = 10 && x.toString() // number | boolean | string ) : string - - // change value of x - x = 10 && x.toString() // number | boolean | string ->x = 10 && x.toString() : string ->x : number | string | boolean ->10 && x.toString() : string ->10 : number ->x.toString() : string ->x.toString : (radix?: number) => string ->x : number | string | boolean ->toString : (radix?: number) => string - - ) - : ( ->( // do not change value y = x && x.toString() // number | boolean | string ) : string - - // do not change value - y = x && x.toString() // number | boolean | string ->y = x && x.toString() : string ->y : number | boolean | string ->x && x.toString() : string ->x : number | string | boolean ->x.toString() : string ->x.toString : (radix?: number) => string ->x : number | string | boolean ->toString : (radix?: number) => string - - ); - } -} -function foo12(x: number | string | boolean) { ->foo12 : (x: number | string | boolean) => string ->x : number | string | boolean - - // Mixing typeguard narrowing in if statement with conditional expression typeguard - // Assigning value to x in outer guard shouldn't stop narrowing in the inner expression - if (typeof x === "string") { ->typeof x === "string" : boolean ->typeof x : string ->x : number | string | boolean ->"string" : string - - return x.toString(); // string | number | boolean - x changed in else branch ->x.toString() : string ->x.toString : (radix?: number) => string ->x : number | string | boolean ->toString : (radix?: number) => string - } - else { - x = 10; ->x = 10 : number ->x : number | string | boolean ->10 : number - - var b = x; // number | boolean | string ->b : number | string | boolean ->x : number | string | boolean - - return typeof x === "number" ->typeof x === "number" ? x.toString() // number : x.toString() : string ->typeof x === "number" : boolean ->typeof x : string ->x : number | string | boolean ->"number" : string - - ? x.toString() // number ->x.toString() : string ->x.toString : (radix?: number) => string ->x : number ->toString : (radix?: number) => string - - : x.toString(); // boolean | string ->x.toString() : string ->x.toString : () => string ->x : string | boolean ->toString : () => string - } -} diff --git a/tests/baselines/reference/typeGuardsInModule.types b/tests/baselines/reference/typeGuardsInModule.types index 6b6c552f0cc..7d3753037ad 100644 --- a/tests/baselines/reference/typeGuardsInModule.types +++ b/tests/baselines/reference/typeGuardsInModule.types @@ -64,15 +64,15 @@ module m1 { >"string" : string strOrNum = var3; // string | number ->strOrNum = var3 : string | number +>strOrNum = var3 : string >strOrNum : string | number ->var3 : string | number +>var3 : string } else { strOrNum = var3; // string | number ->strOrNum = var3 : string | number +>strOrNum = var3 : number >strOrNum : string | number ->var3 : string | number +>var3 : number } } // local module @@ -116,14 +116,14 @@ module m2 { // exported variable from outer the module strOrNum = typeof var3 === "string" && var3; // string | number ->strOrNum = typeof var3 === "string" && var3 : string | number +>strOrNum = typeof var3 === "string" && var3 : string >strOrNum : string | number ->typeof var3 === "string" && var3 : string | number +>typeof var3 === "string" && var3 : string >typeof var3 === "string" : boolean >typeof var3 : string >var3 : string | number >"string" : string ->var3 : string | number +>var3 : string // variables in module declaration var var4: string | number; @@ -160,15 +160,15 @@ module m2 { >"string" : string strOrNum = var5; // string | number ->strOrNum = var5 : string | number +>strOrNum = var5 : string >strOrNum : string | number ->var5 : string | number +>var5 : string } else { strOrNum = var5; // string | number ->strOrNum = var5 : string | number +>strOrNum = var5 : number >strOrNum : string | number ->var5 : string | number +>var5 : number } } } @@ -225,15 +225,15 @@ module m3.m4 { >"string" : string strOrNum = var3; // string | number ->strOrNum = var3 : string | number +>strOrNum = var3 : string >strOrNum : string | number ->var3 : string | number +>var3 : string } else { strOrNum = var3; // string | number ->strOrNum = var3 : string | number +>strOrNum = var3 : number >strOrNum : string | number ->var3 : string | number +>var3 : number } } diff --git a/tests/baselines/reference/typeGuardsInProperties.symbols b/tests/baselines/reference/typeGuardsInProperties.symbols index 61a4a9c2fdb..86faad794fe 100644 --- a/tests/baselines/reference/typeGuardsInProperties.symbols +++ b/tests/baselines/reference/typeGuardsInProperties.symbols @@ -13,47 +13,47 @@ class C1 { >C1 : Symbol(C1, Decl(typeGuardsInProperties.ts, 5, 30)) private pp1: string | number; ->pp1 : Symbol(pp1, Decl(typeGuardsInProperties.ts, 6, 10)) +>pp1 : Symbol(C1.pp1, Decl(typeGuardsInProperties.ts, 6, 10)) pp2: string | number; ->pp2 : Symbol(pp2, Decl(typeGuardsInProperties.ts, 7, 33)) +>pp2 : Symbol(C1.pp2, Decl(typeGuardsInProperties.ts, 7, 33)) // Inside public accessor getter get pp3() { ->pp3 : Symbol(pp3, Decl(typeGuardsInProperties.ts, 8, 25)) +>pp3 : Symbol(C1.pp3, Decl(typeGuardsInProperties.ts, 8, 25)) return strOrNum; >strOrNum : Symbol(strOrNum, Decl(typeGuardsInProperties.ts, 5, 3)) } method() { ->method : Symbol(method, Decl(typeGuardsInProperties.ts, 12, 5)) +>method : Symbol(C1.method, Decl(typeGuardsInProperties.ts, 12, 5)) strOrNum = typeof this.pp1 === "string" && this.pp1; // string | number >strOrNum : Symbol(strOrNum, Decl(typeGuardsInProperties.ts, 5, 3)) ->this.pp1 : Symbol(pp1, Decl(typeGuardsInProperties.ts, 6, 10)) +>this.pp1 : Symbol(C1.pp1, Decl(typeGuardsInProperties.ts, 6, 10)) >this : Symbol(C1, Decl(typeGuardsInProperties.ts, 5, 30)) ->pp1 : Symbol(pp1, Decl(typeGuardsInProperties.ts, 6, 10)) ->this.pp1 : Symbol(pp1, Decl(typeGuardsInProperties.ts, 6, 10)) +>pp1 : Symbol(C1.pp1, Decl(typeGuardsInProperties.ts, 6, 10)) +>this.pp1 : Symbol(C1.pp1, Decl(typeGuardsInProperties.ts, 6, 10)) >this : Symbol(C1, Decl(typeGuardsInProperties.ts, 5, 30)) ->pp1 : Symbol(pp1, Decl(typeGuardsInProperties.ts, 6, 10)) +>pp1 : Symbol(C1.pp1, Decl(typeGuardsInProperties.ts, 6, 10)) strOrNum = typeof this.pp2 === "string" && this.pp2; // string | number >strOrNum : Symbol(strOrNum, Decl(typeGuardsInProperties.ts, 5, 3)) ->this.pp2 : Symbol(pp2, Decl(typeGuardsInProperties.ts, 7, 33)) +>this.pp2 : Symbol(C1.pp2, Decl(typeGuardsInProperties.ts, 7, 33)) >this : Symbol(C1, Decl(typeGuardsInProperties.ts, 5, 30)) ->pp2 : Symbol(pp2, Decl(typeGuardsInProperties.ts, 7, 33)) ->this.pp2 : Symbol(pp2, Decl(typeGuardsInProperties.ts, 7, 33)) +>pp2 : Symbol(C1.pp2, Decl(typeGuardsInProperties.ts, 7, 33)) +>this.pp2 : Symbol(C1.pp2, Decl(typeGuardsInProperties.ts, 7, 33)) >this : Symbol(C1, Decl(typeGuardsInProperties.ts, 5, 30)) ->pp2 : Symbol(pp2, Decl(typeGuardsInProperties.ts, 7, 33)) +>pp2 : Symbol(C1.pp2, Decl(typeGuardsInProperties.ts, 7, 33)) strOrNum = typeof this.pp3 === "string" && this.pp3; // string | number >strOrNum : Symbol(strOrNum, Decl(typeGuardsInProperties.ts, 5, 3)) ->this.pp3 : Symbol(pp3, Decl(typeGuardsInProperties.ts, 8, 25)) +>this.pp3 : Symbol(C1.pp3, Decl(typeGuardsInProperties.ts, 8, 25)) >this : Symbol(C1, Decl(typeGuardsInProperties.ts, 5, 30)) ->pp3 : Symbol(pp3, Decl(typeGuardsInProperties.ts, 8, 25)) ->this.pp3 : Symbol(pp3, Decl(typeGuardsInProperties.ts, 8, 25)) +>pp3 : Symbol(C1.pp3, Decl(typeGuardsInProperties.ts, 8, 25)) +>this.pp3 : Symbol(C1.pp3, Decl(typeGuardsInProperties.ts, 8, 25)) >this : Symbol(C1, Decl(typeGuardsInProperties.ts, 5, 30)) ->pp3 : Symbol(pp3, Decl(typeGuardsInProperties.ts, 8, 25)) +>pp3 : Symbol(C1.pp3, Decl(typeGuardsInProperties.ts, 8, 25)) } } var c1: C1; diff --git a/tests/baselines/reference/typeGuardsInProperties.types b/tests/baselines/reference/typeGuardsInProperties.types index ca4d8b94527..ef4cfbb5b05 100644 --- a/tests/baselines/reference/typeGuardsInProperties.types +++ b/tests/baselines/reference/typeGuardsInProperties.types @@ -29,32 +29,32 @@ class C1 { >method : () => void strOrNum = typeof this.pp1 === "string" && this.pp1; // string | number ->strOrNum = typeof this.pp1 === "string" && this.pp1 : string | number +>strOrNum = typeof this.pp1 === "string" && this.pp1 : string >strOrNum : string | number ->typeof this.pp1 === "string" && this.pp1 : string | number +>typeof this.pp1 === "string" && this.pp1 : string >typeof this.pp1 === "string" : boolean >typeof this.pp1 : string >this.pp1 : string | number >this : this >pp1 : string | number >"string" : string ->this.pp1 : string | number +>this.pp1 : string >this : this ->pp1 : string | number +>pp1 : string strOrNum = typeof this.pp2 === "string" && this.pp2; // string | number ->strOrNum = typeof this.pp2 === "string" && this.pp2 : string | number +>strOrNum = typeof this.pp2 === "string" && this.pp2 : string >strOrNum : string | number ->typeof this.pp2 === "string" && this.pp2 : string | number +>typeof this.pp2 === "string" && this.pp2 : string >typeof this.pp2 === "string" : boolean >typeof this.pp2 : string >this.pp2 : string | number >this : this >pp2 : string | number >"string" : string ->this.pp2 : string | number +>this.pp2 : string >this : this ->pp2 : string | number +>pp2 : string strOrNum = typeof this.pp3 === "string" && this.pp3; // string | number >strOrNum = typeof this.pp3 === "string" && this.pp3 : string | number @@ -76,18 +76,18 @@ var c1: C1; >C1 : C1 strOrNum = typeof c1.pp2 === "string" && c1.pp2; // string | number ->strOrNum = typeof c1.pp2 === "string" && c1.pp2 : string | number +>strOrNum = typeof c1.pp2 === "string" && c1.pp2 : string >strOrNum : string | number ->typeof c1.pp2 === "string" && c1.pp2 : string | number +>typeof c1.pp2 === "string" && c1.pp2 : string >typeof c1.pp2 === "string" : boolean >typeof c1.pp2 : string >c1.pp2 : string | number >c1 : C1 >pp2 : string | number >"string" : string ->c1.pp2 : string | number +>c1.pp2 : string >c1 : C1 ->pp2 : string | number +>pp2 : string strOrNum = typeof c1.pp3 === "string" && c1.pp3; // string | number >strOrNum = typeof c1.pp3 === "string" && c1.pp3 : string | number @@ -111,16 +111,16 @@ var obj1: { }; strOrNum = typeof obj1.x === "string" && obj1.x; // string | number ->strOrNum = typeof obj1.x === "string" && obj1.x : string | number +>strOrNum = typeof obj1.x === "string" && obj1.x : string >strOrNum : string | number ->typeof obj1.x === "string" && obj1.x : string | number +>typeof obj1.x === "string" && obj1.x : string >typeof obj1.x === "string" : boolean >typeof obj1.x : string >obj1.x : string | number >obj1 : { x: string | number; } >x : string | number >"string" : string ->obj1.x : string | number +>obj1.x : string >obj1 : { x: string | number; } ->x : string | number +>x : string diff --git a/tests/baselines/reference/typeGuardsInRightOperandOfAndAndOperator.js b/tests/baselines/reference/typeGuardsInRightOperandOfAndAndOperator.js index e3f1a8c72c2..be1c497e3ea 100644 --- a/tests/baselines/reference/typeGuardsInRightOperandOfAndAndOperator.js +++ b/tests/baselines/reference/typeGuardsInRightOperandOfAndAndOperator.js @@ -1,7 +1,6 @@ //// [typeGuardsInRightOperandOfAndAndOperator.ts] // In the right operand of a && operation, -// the type of a variable or parameter is narrowed by any type guard in the left operand when true, -// provided the right operand contains no assignments to the variable or parameter. +// the type of a variable or parameter is narrowed by any type guard in the left operand when true. function foo(x: number | string) { return typeof x === "string" && x.length === 10; // string } @@ -36,29 +35,19 @@ function foo7(x: number | string | boolean) { var y: number| boolean | string; var z: number| boolean | string; // Mixing typeguard narrowing - // Assigning value to x deep inside another guard stops narrowing of type too return typeof x !== "string" - && ((z = x) // string | number | boolean - x changed deeper in conditional expression + && ((z = x) // number | boolean && (typeof x === "number" // change value of x - ? (x = 10 && x.toString()) // number | boolean | string + ? ((x = 10) && x.toString()) // x is number // do not change value - : (y = x && x.toString()))); // number | boolean | string + : ((y = x) && x.toString()))); // x is boolean } -function foo8(x: number | string) { - // Mixing typeguard - // Assigning value to x in outer guard shouldn't stop narrowing in the inner expression - return typeof x !== "string" - && (x = 10) // change x - number| string - && (typeof x === "number" - ? x // number - : x.length); // string -} + //// [typeGuardsInRightOperandOfAndAndOperator.js] // In the right operand of a && operation, -// the type of a variable or parameter is narrowed by any type guard in the left operand when true, -// provided the right operand contains no assignments to the variable or parameter. +// the type of a variable or parameter is narrowed by any type guard in the left operand when true. function foo(x) { return typeof x === "string" && x.length === 10; // string } @@ -93,19 +82,9 @@ function foo7(x) { var y; var z; // Mixing typeguard narrowing - // Assigning value to x deep inside another guard stops narrowing of type too return typeof x !== "string" - && ((z = x) // string | number | boolean - x changed deeper in conditional expression + && ((z = x) // number | boolean && (typeof x === "number" - ? (x = 10 && x.toString()) // number | boolean | string - : (y = x && x.toString()))); // number | boolean | string -} -function foo8(x) { - // Mixing typeguard - // Assigning value to x in outer guard shouldn't stop narrowing in the inner expression - return typeof x !== "string" - && (x = 10) // change x - number| string - && (typeof x === "number" - ? x // number - : x.length); // string + ? ((x = 10) && x.toString()) // x is number + : ((y = x) && x.toString()))); // x is boolean } diff --git a/tests/baselines/reference/typeGuardsInRightOperandOfAndAndOperator.symbols b/tests/baselines/reference/typeGuardsInRightOperandOfAndAndOperator.symbols index 21e3dd3701f..4028edb6b42 100644 --- a/tests/baselines/reference/typeGuardsInRightOperandOfAndAndOperator.symbols +++ b/tests/baselines/reference/typeGuardsInRightOperandOfAndAndOperator.symbols @@ -1,143 +1,119 @@ === tests/cases/conformance/expressions/typeGuards/typeGuardsInRightOperandOfAndAndOperator.ts === // In the right operand of a && operation, -// the type of a variable or parameter is narrowed by any type guard in the left operand when true, -// provided the right operand contains no assignments to the variable or parameter. +// the type of a variable or parameter is narrowed by any type guard in the left operand when true. function foo(x: number | string) { >foo : Symbol(foo, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 0, 0)) ->x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 3, 13)) +>x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 2, 13)) return typeof x === "string" && x.length === 10; // string ->x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 3, 13)) +>x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 2, 13)) >x.length : Symbol(String.length, Decl(lib.d.ts, --, --)) ->x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 3, 13)) +>x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 2, 13)) >length : Symbol(String.length, Decl(lib.d.ts, --, --)) } function foo2(x: number | string) { ->foo2 : Symbol(foo2, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 5, 1)) ->x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 6, 14)) +>foo2 : Symbol(foo2, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 4, 1)) +>x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 5, 14)) // modify x in right hand operand return typeof x === "string" && ((x = 10) && x); // string | number ->x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 6, 14)) ->x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 6, 14)) ->x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 6, 14)) +>x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 5, 14)) +>x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 5, 14)) +>x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 5, 14)) } function foo3(x: number | string) { ->foo3 : Symbol(foo3, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 9, 1)) ->x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 10, 14)) +>foo3 : Symbol(foo3, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 8, 1)) +>x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 9, 14)) // modify x in right hand operand with string type itself return typeof x === "string" && ((x = "hello") && x); // string | number ->x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 10, 14)) ->x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 10, 14)) ->x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 10, 14)) +>x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 9, 14)) +>x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 9, 14)) +>x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 9, 14)) } function foo4(x: number | string | boolean) { ->foo4 : Symbol(foo4, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 13, 1)) ->x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 14, 14)) +>foo4 : Symbol(foo4, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 12, 1)) +>x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 13, 14)) return typeof x !== "string" // string | number | boolean ->x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 14, 14)) +>x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 13, 14)) && typeof x !== "number" // number | boolean ->x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 14, 14)) +>x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 13, 14)) && x; // boolean ->x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 14, 14)) +>x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 13, 14)) } function foo5(x: number | string | boolean) { ->foo5 : Symbol(foo5, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 18, 1)) ->x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 19, 14)) +>foo5 : Symbol(foo5, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 17, 1)) +>x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 18, 14)) // usage of x or assignment to separate variable shouldn't cause narrowing of type to stop var b: number | boolean; ->b : Symbol(b, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 21, 7)) +>b : Symbol(b, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 20, 7)) return typeof x !== "string" // string | number | boolean ->x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 19, 14)) +>x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 18, 14)) && ((b = x) && (typeof x !== "number" // number | boolean ->b : Symbol(b, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 21, 7)) ->x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 19, 14)) ->x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 19, 14)) +>b : Symbol(b, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 20, 7)) +>x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 18, 14)) +>x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 18, 14)) && x)); // boolean ->x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 19, 14)) +>x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 18, 14)) } function foo6(x: number | string | boolean) { ->foo6 : Symbol(foo6, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 25, 1)) ->x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 26, 14)) +>foo6 : Symbol(foo6, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 24, 1)) +>x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 25, 14)) // Mixing typeguard narrowing in if statement with conditional expression typeguard return typeof x !== "string" // string | number | boolean ->x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 26, 14)) +>x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 25, 14)) && (typeof x !== "number" // number | boolean ->x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 26, 14)) +>x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 25, 14)) ? x // boolean ->x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 26, 14)) +>x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 25, 14)) : x === 10) // number ->x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 26, 14)) +>x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 25, 14)) } function foo7(x: number | string | boolean) { ->foo7 : Symbol(foo7, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 32, 1)) ->x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 33, 14)) +>foo7 : Symbol(foo7, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 31, 1)) +>x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 32, 14)) var y: number| boolean | string; ->y : Symbol(y, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 34, 7)) +>y : Symbol(y, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 33, 7)) var z: number| boolean | string; ->z : Symbol(z, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 35, 7)) +>z : Symbol(z, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 34, 7)) // Mixing typeguard narrowing - // Assigning value to x deep inside another guard stops narrowing of type too return typeof x !== "string" ->x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 33, 14)) +>x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 32, 14)) - && ((z = x) // string | number | boolean - x changed deeper in conditional expression ->z : Symbol(z, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 35, 7)) ->x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 33, 14)) + && ((z = x) // number | boolean +>z : Symbol(z, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 34, 7)) +>x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 32, 14)) && (typeof x === "number" ->x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 33, 14)) +>x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 32, 14)) // change value of x - ? (x = 10 && x.toString()) // number | boolean | string ->x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 33, 14)) ->x.toString : Symbol(toString, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 33, 14)) ->toString : Symbol(toString, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + ? ((x = 10) && x.toString()) // x is number +>x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 32, 14)) +>x.toString : Symbol(Number.toString, Decl(lib.d.ts, --, --)) +>x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 32, 14)) +>toString : Symbol(Number.toString, Decl(lib.d.ts, --, --)) // do not change value - : (y = x && x.toString()))); // number | boolean | string ->y : Symbol(y, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 34, 7)) ->x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 33, 14)) ->x.toString : Symbol(toString, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 33, 14)) ->toString : Symbol(toString, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + : ((y = x) && x.toString()))); // x is boolean +>y : Symbol(y, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 33, 7)) +>x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 32, 14)) +>x.toString : Symbol(Object.toString, Decl(lib.d.ts, --, --)) +>x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 32, 14)) +>toString : Symbol(Object.toString, Decl(lib.d.ts, --, --)) } -function foo8(x: number | string) { ->foo8 : Symbol(foo8, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 45, 1)) ->x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 46, 14)) - // Mixing typeguard - // Assigning value to x in outer guard shouldn't stop narrowing in the inner expression - return typeof x !== "string" ->x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 46, 14)) - - && (x = 10) // change x - number| string ->x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 46, 14)) - - && (typeof x === "number" ->x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 46, 14)) - - ? x // number ->x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 46, 14)) - - : x.length); // string ->x.length : Symbol(String.length, Decl(lib.d.ts, --, --)) ->x : Symbol(x, Decl(typeGuardsInRightOperandOfAndAndOperator.ts, 46, 14)) ->length : Symbol(String.length, Decl(lib.d.ts, --, --)) -} diff --git a/tests/baselines/reference/typeGuardsInRightOperandOfAndAndOperator.types b/tests/baselines/reference/typeGuardsInRightOperandOfAndAndOperator.types index 22d390618c1..2da52b8b1b8 100644 --- a/tests/baselines/reference/typeGuardsInRightOperandOfAndAndOperator.types +++ b/tests/baselines/reference/typeGuardsInRightOperandOfAndAndOperator.types @@ -1,7 +1,6 @@ === tests/cases/conformance/expressions/typeGuards/typeGuardsInRightOperandOfAndAndOperator.ts === // In the right operand of a && operation, -// the type of a variable or parameter is narrowed by any type guard in the left operand when true, -// provided the right operand contains no assignments to the variable or parameter. +// the type of a variable or parameter is narrowed by any type guard in the left operand when true. function foo(x: number | string) { >foo : (x: number | string) => boolean >x : number | string @@ -19,42 +18,42 @@ function foo(x: number | string) { >10 : number } function foo2(x: number | string) { ->foo2 : (x: number | string) => number | string +>foo2 : (x: number | string) => number >x : number | string // modify x in right hand operand return typeof x === "string" && ((x = 10) && x); // string | number ->typeof x === "string" && ((x = 10) && x) : number | string +>typeof x === "string" && ((x = 10) && x) : number >typeof x === "string" : boolean >typeof x : string >x : number | string >"string" : string ->((x = 10) && x) : number | string ->(x = 10) && x : number | string +>((x = 10) && x) : number +>(x = 10) && x : number >(x = 10) : number >x = 10 : number >x : number | string >10 : number ->x : number | string +>x : number } function foo3(x: number | string) { ->foo3 : (x: number | string) => number | string +>foo3 : (x: number | string) => string >x : number | string // modify x in right hand operand with string type itself return typeof x === "string" && ((x = "hello") && x); // string | number ->typeof x === "string" && ((x = "hello") && x) : number | string +>typeof x === "string" && ((x = "hello") && x) : string >typeof x === "string" : boolean >typeof x : string >x : number | string >"string" : string ->((x = "hello") && x) : number | string ->(x = "hello") && x : number | string +>((x = "hello") && x) : string +>(x = "hello") && x : string >(x = "hello") : string >x = "hello" : string >x : number | string >"hello" : string ->x : number | string +>x : string } function foo4(x: number | string | boolean) { >foo4 : (x: number | string | boolean) => boolean @@ -148,87 +147,53 @@ function foo7(x: number | string | boolean) { >z : number | boolean | string // Mixing typeguard narrowing - // Assigning value to x deep inside another guard stops narrowing of type too return typeof x !== "string" ->typeof x !== "string" && ((z = x) // string | number | boolean - x changed deeper in conditional expression && (typeof x === "number" // change value of x ? (x = 10 && x.toString()) // number | boolean | string // do not change value : (y = x && x.toString()))) : string +>typeof x !== "string" && ((z = x) // number | boolean && (typeof x === "number" // change value of x ? ((x = 10) && x.toString()) // x is number // do not change value : ((y = x) && x.toString()))) : string >typeof x !== "string" : boolean >typeof x : string >x : number | string | boolean >"string" : string - && ((z = x) // string | number | boolean - x changed deeper in conditional expression ->((z = x) // string | number | boolean - x changed deeper in conditional expression && (typeof x === "number" // change value of x ? (x = 10 && x.toString()) // number | boolean | string // do not change value : (y = x && x.toString()))) : string ->(z = x) // string | number | boolean - x changed deeper in conditional expression && (typeof x === "number" // change value of x ? (x = 10 && x.toString()) // number | boolean | string // do not change value : (y = x && x.toString())) : string ->(z = x) : number | string | boolean ->z = x : number | string | boolean + && ((z = x) // number | boolean +>((z = x) // number | boolean && (typeof x === "number" // change value of x ? ((x = 10) && x.toString()) // x is number // do not change value : ((y = x) && x.toString()))) : string +>(z = x) // number | boolean && (typeof x === "number" // change value of x ? ((x = 10) && x.toString()) // x is number // do not change value : ((y = x) && x.toString())) : string +>(z = x) : number | boolean +>z = x : number | boolean >z : number | boolean | string ->x : number | string | boolean +>x : number | boolean && (typeof x === "number" ->(typeof x === "number" // change value of x ? (x = 10 && x.toString()) // number | boolean | string // do not change value : (y = x && x.toString())) : string ->typeof x === "number" // change value of x ? (x = 10 && x.toString()) // number | boolean | string // do not change value : (y = x && x.toString()) : string +>(typeof x === "number" // change value of x ? ((x = 10) && x.toString()) // x is number // do not change value : ((y = x) && x.toString())) : string +>typeof x === "number" // change value of x ? ((x = 10) && x.toString()) // x is number // do not change value : ((y = x) && x.toString()) : string >typeof x === "number" : boolean >typeof x : string ->x : number | string | boolean +>x : number | boolean >"number" : string // change value of x - ? (x = 10 && x.toString()) // number | boolean | string ->(x = 10 && x.toString()) : string ->x = 10 && x.toString() : string + ? ((x = 10) && x.toString()) // x is number +>((x = 10) && x.toString()) : string +>(x = 10) && x.toString() : string +>(x = 10) : number +>x = 10 : number >x : number | string | boolean ->10 && x.toString() : string >10 : number >x.toString() : string >x.toString : (radix?: number) => string ->x : number | string | boolean +>x : number >toString : (radix?: number) => string // do not change value - : (y = x && x.toString()))); // number | boolean | string ->(y = x && x.toString()) : string ->y = x && x.toString() : string + : ((y = x) && x.toString()))); // x is boolean +>((y = x) && x.toString()) : string +>(y = x) && x.toString() : string +>(y = x) : boolean +>y = x : boolean >y : number | boolean | string ->x && x.toString() : string ->x : number | string | boolean +>x : boolean >x.toString() : string ->x.toString : (radix?: number) => string ->x : number | string | boolean ->toString : (radix?: number) => string +>x.toString : () => string +>x : boolean +>toString : () => string } -function foo8(x: number | string) { ->foo8 : (x: number | string) => number ->x : number | string - // Mixing typeguard - // Assigning value to x in outer guard shouldn't stop narrowing in the inner expression - return typeof x !== "string" ->typeof x !== "string" && (x = 10) // change x - number| string && (typeof x === "number" ? x // number : x.length) : number ->typeof x !== "string" && (x = 10) : number ->typeof x !== "string" : boolean ->typeof x : string ->x : number | string ->"string" : string - - && (x = 10) // change x - number| string ->(x = 10) : number ->x = 10 : number ->x : number | string ->10 : number - - && (typeof x === "number" ->(typeof x === "number" ? x // number : x.length) : number ->typeof x === "number" ? x // number : x.length : number ->typeof x === "number" : boolean ->typeof x : string ->x : number | string ->"number" : string - - ? x // number ->x : number - - : x.length); // string ->x.length : number ->x : string ->length : number -} diff --git a/tests/baselines/reference/typeGuardsInRightOperandOfOrOrOperator.js b/tests/baselines/reference/typeGuardsInRightOperandOfOrOrOperator.js index 188d226da13..a8d66dc5fa2 100644 --- a/tests/baselines/reference/typeGuardsInRightOperandOfOrOrOperator.js +++ b/tests/baselines/reference/typeGuardsInRightOperandOfOrOrOperator.js @@ -36,24 +36,15 @@ function foo7(x: number | string | boolean) { var y: number| boolean | string; var z: number| boolean | string; // Mixing typeguard narrowing - // Assigning value to x deep inside another guard stops narrowing of type too return typeof x === "string" - || ((z = x) // string | number | boolean - x changed deeper in conditional expression + || ((z = x) // number | boolean || (typeof x === "number" // change value of x - ? (x = 10 && x.toString()) // number | boolean | string + ? ((x = 10) && x.toString()) // number | boolean | string // do not change value - : (y = x && x.toString()))); // number | boolean | string + : ((y = x) && x.toString()))); // number | boolean | string } -function foo8(x: number | string) { - // Mixing typeguard - // Assigning value to x in outer guard shouldn't stop narrowing in the inner expression - return typeof x === "string" - || (x = 10) // change x - number| string - || (typeof x === "number" - ? x // number - : x.length); // string -} + //// [typeGuardsInRightOperandOfOrOrOperator.js] // In the right operand of a || operation, @@ -93,19 +84,9 @@ function foo7(x) { var y; var z; // Mixing typeguard narrowing - // Assigning value to x deep inside another guard stops narrowing of type too return typeof x === "string" - || ((z = x) // string | number | boolean - x changed deeper in conditional expression + || ((z = x) // number | boolean || (typeof x === "number" - ? (x = 10 && x.toString()) // number | boolean | string - : (y = x && x.toString()))); // number | boolean | string -} -function foo8(x) { - // Mixing typeguard - // Assigning value to x in outer guard shouldn't stop narrowing in the inner expression - return typeof x === "string" - || (x = 10) // change x - number| string - || (typeof x === "number" - ? x // number - : x.length); // string + ? ((x = 10) && x.toString()) // number | boolean | string + : ((y = x) && x.toString()))); // number | boolean | string } diff --git a/tests/baselines/reference/typeGuardsInRightOperandOfOrOrOperator.symbols b/tests/baselines/reference/typeGuardsInRightOperandOfOrOrOperator.symbols index de9b4396d3d..b276671819a 100644 --- a/tests/baselines/reference/typeGuardsInRightOperandOfOrOrOperator.symbols +++ b/tests/baselines/reference/typeGuardsInRightOperandOfOrOrOperator.symbols @@ -92,11 +92,10 @@ function foo7(x: number | string | boolean) { >z : Symbol(z, Decl(typeGuardsInRightOperandOfOrOrOperator.ts, 35, 7)) // Mixing typeguard narrowing - // Assigning value to x deep inside another guard stops narrowing of type too return typeof x === "string" >x : Symbol(x, Decl(typeGuardsInRightOperandOfOrOrOperator.ts, 33, 14)) - || ((z = x) // string | number | boolean - x changed deeper in conditional expression + || ((z = x) // number | boolean >z : Symbol(z, Decl(typeGuardsInRightOperandOfOrOrOperator.ts, 35, 7)) >x : Symbol(x, Decl(typeGuardsInRightOperandOfOrOrOperator.ts, 33, 14)) @@ -104,40 +103,18 @@ function foo7(x: number | string | boolean) { >x : Symbol(x, Decl(typeGuardsInRightOperandOfOrOrOperator.ts, 33, 14)) // change value of x - ? (x = 10 && x.toString()) // number | boolean | string + ? ((x = 10) && x.toString()) // number | boolean | string >x : Symbol(x, Decl(typeGuardsInRightOperandOfOrOrOperator.ts, 33, 14)) ->x.toString : Symbol(toString, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>x.toString : Symbol(Number.toString, Decl(lib.d.ts, --, --)) >x : Symbol(x, Decl(typeGuardsInRightOperandOfOrOrOperator.ts, 33, 14)) ->toString : Symbol(toString, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>toString : Symbol(Number.toString, Decl(lib.d.ts, --, --)) // do not change value - : (y = x && x.toString()))); // number | boolean | string + : ((y = x) && x.toString()))); // number | boolean | string >y : Symbol(y, Decl(typeGuardsInRightOperandOfOrOrOperator.ts, 34, 7)) >x : Symbol(x, Decl(typeGuardsInRightOperandOfOrOrOperator.ts, 33, 14)) ->x.toString : Symbol(toString, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>x.toString : Symbol(Object.toString, Decl(lib.d.ts, --, --)) >x : Symbol(x, Decl(typeGuardsInRightOperandOfOrOrOperator.ts, 33, 14)) ->toString : Symbol(toString, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>toString : Symbol(Object.toString, Decl(lib.d.ts, --, --)) } -function foo8(x: number | string) { ->foo8 : Symbol(foo8, Decl(typeGuardsInRightOperandOfOrOrOperator.ts, 45, 1)) ->x : Symbol(x, Decl(typeGuardsInRightOperandOfOrOrOperator.ts, 46, 14)) - // Mixing typeguard - // Assigning value to x in outer guard shouldn't stop narrowing in the inner expression - return typeof x === "string" ->x : Symbol(x, Decl(typeGuardsInRightOperandOfOrOrOperator.ts, 46, 14)) - - || (x = 10) // change x - number| string ->x : Symbol(x, Decl(typeGuardsInRightOperandOfOrOrOperator.ts, 46, 14)) - - || (typeof x === "number" ->x : Symbol(x, Decl(typeGuardsInRightOperandOfOrOrOperator.ts, 46, 14)) - - ? x // number ->x : Symbol(x, Decl(typeGuardsInRightOperandOfOrOrOperator.ts, 46, 14)) - - : x.length); // string ->x.length : Symbol(String.length, Decl(lib.d.ts, --, --)) ->x : Symbol(x, Decl(typeGuardsInRightOperandOfOrOrOperator.ts, 46, 14)) ->length : Symbol(String.length, Decl(lib.d.ts, --, --)) -} diff --git a/tests/baselines/reference/typeGuardsInRightOperandOfOrOrOperator.types b/tests/baselines/reference/typeGuardsInRightOperandOfOrOrOperator.types index 38d9a723d3a..659182ab888 100644 --- a/tests/baselines/reference/typeGuardsInRightOperandOfOrOrOperator.types +++ b/tests/baselines/reference/typeGuardsInRightOperandOfOrOrOperator.types @@ -19,42 +19,42 @@ function foo(x: number | string) { >10 : number } function foo2(x: number | string) { ->foo2 : (x: number | string) => boolean | number | string +>foo2 : (x: number | string) => boolean | number >x : number | string // modify x in right hand operand return typeof x !== "string" || ((x = 10) || x); // string | number ->typeof x !== "string" || ((x = 10) || x) : boolean | number | string +>typeof x !== "string" || ((x = 10) || x) : boolean | number >typeof x !== "string" : boolean >typeof x : string >x : number | string >"string" : string ->((x = 10) || x) : number | string ->(x = 10) || x : number | string +>((x = 10) || x) : number +>(x = 10) || x : number >(x = 10) : number >x = 10 : number >x : number | string >10 : number ->x : number | string +>x : number } function foo3(x: number | string) { ->foo3 : (x: number | string) => boolean | string | number +>foo3 : (x: number | string) => boolean | string >x : number | string // modify x in right hand operand with string type itself return typeof x !== "string" || ((x = "hello") || x); // string | number ->typeof x !== "string" || ((x = "hello") || x) : boolean | string | number +>typeof x !== "string" || ((x = "hello") || x) : boolean | string >typeof x !== "string" : boolean >typeof x : string >x : number | string >"string" : string ->((x = "hello") || x) : string | number ->(x = "hello") || x : string | number +>((x = "hello") || x) : string +>(x = "hello") || x : string >(x = "hello") : string >x = "hello" : string >x : number | string >"hello" : string ->x : number | string +>x : string } function foo4(x: number | string | boolean) { >foo4 : (x: number | string | boolean) => boolean @@ -148,87 +148,53 @@ function foo7(x: number | string | boolean) { >z : number | boolean | string // Mixing typeguard narrowing - // Assigning value to x deep inside another guard stops narrowing of type too return typeof x === "string" ->typeof x === "string" || ((z = x) // string | number | boolean - x changed deeper in conditional expression || (typeof x === "number" // change value of x ? (x = 10 && x.toString()) // number | boolean | string // do not change value : (y = x && x.toString()))) : boolean | number | string +>typeof x === "string" || ((z = x) // number | boolean || (typeof x === "number" // change value of x ? ((x = 10) && x.toString()) // number | boolean | string // do not change value : ((y = x) && x.toString()))) : boolean | number | string >typeof x === "string" : boolean >typeof x : string >x : number | string | boolean >"string" : string - || ((z = x) // string | number | boolean - x changed deeper in conditional expression ->((z = x) // string | number | boolean - x changed deeper in conditional expression || (typeof x === "number" // change value of x ? (x = 10 && x.toString()) // number | boolean | string // do not change value : (y = x && x.toString()))) : number | string | boolean ->(z = x) // string | number | boolean - x changed deeper in conditional expression || (typeof x === "number" // change value of x ? (x = 10 && x.toString()) // number | boolean | string // do not change value : (y = x && x.toString())) : number | string | boolean ->(z = x) : number | string | boolean ->z = x : number | string | boolean + || ((z = x) // number | boolean +>((z = x) // number | boolean || (typeof x === "number" // change value of x ? ((x = 10) && x.toString()) // number | boolean | string // do not change value : ((y = x) && x.toString()))) : number | boolean | string +>(z = x) // number | boolean || (typeof x === "number" // change value of x ? ((x = 10) && x.toString()) // number | boolean | string // do not change value : ((y = x) && x.toString())) : number | boolean | string +>(z = x) : number | boolean +>z = x : number | boolean >z : number | boolean | string ->x : number | string | boolean +>x : number | boolean || (typeof x === "number" ->(typeof x === "number" // change value of x ? (x = 10 && x.toString()) // number | boolean | string // do not change value : (y = x && x.toString())) : string ->typeof x === "number" // change value of x ? (x = 10 && x.toString()) // number | boolean | string // do not change value : (y = x && x.toString()) : string +>(typeof x === "number" // change value of x ? ((x = 10) && x.toString()) // number | boolean | string // do not change value : ((y = x) && x.toString())) : string +>typeof x === "number" // change value of x ? ((x = 10) && x.toString()) // number | boolean | string // do not change value : ((y = x) && x.toString()) : string >typeof x === "number" : boolean >typeof x : string ->x : number | string | boolean +>x : number | boolean >"number" : string // change value of x - ? (x = 10 && x.toString()) // number | boolean | string ->(x = 10 && x.toString()) : string ->x = 10 && x.toString() : string + ? ((x = 10) && x.toString()) // number | boolean | string +>((x = 10) && x.toString()) : string +>(x = 10) && x.toString() : string +>(x = 10) : number +>x = 10 : number >x : number | string | boolean ->10 && x.toString() : string >10 : number >x.toString() : string >x.toString : (radix?: number) => string ->x : number | string | boolean +>x : number >toString : (radix?: number) => string // do not change value - : (y = x && x.toString()))); // number | boolean | string ->(y = x && x.toString()) : string ->y = x && x.toString() : string + : ((y = x) && x.toString()))); // number | boolean | string +>((y = x) && x.toString()) : string +>(y = x) && x.toString() : string +>(y = x) : boolean +>y = x : boolean >y : number | boolean | string ->x && x.toString() : string ->x : number | string | boolean +>x : boolean >x.toString() : string ->x.toString : (radix?: number) => string ->x : number | string | boolean ->toString : (radix?: number) => string +>x.toString : () => string +>x : boolean +>toString : () => string } -function foo8(x: number | string) { ->foo8 : (x: number | string) => boolean | number ->x : number | string - // Mixing typeguard - // Assigning value to x in outer guard shouldn't stop narrowing in the inner expression - return typeof x === "string" ->typeof x === "string" || (x = 10) // change x - number| string || (typeof x === "number" ? x // number : x.length) : boolean | number ->typeof x === "string" || (x = 10) : boolean | number ->typeof x === "string" : boolean ->typeof x : string ->x : number | string ->"string" : string - - || (x = 10) // change x - number| string ->(x = 10) : number ->x = 10 : number ->x : number | string ->10 : number - - || (typeof x === "number" ->(typeof x === "number" ? x // number : x.length) : number ->typeof x === "number" ? x // number : x.length : number ->typeof x === "number" : boolean ->typeof x : string ->x : number | string ->"number" : string - - ? x // number ->x : number - - : x.length); // string ->x.length : number ->x : string ->length : number -} diff --git a/tests/baselines/reference/typeGuardsInWhileStatement.js b/tests/baselines/reference/typeGuardsInWhileStatement.js new file mode 100644 index 00000000000..ac2ceaaf590 --- /dev/null +++ b/tests/baselines/reference/typeGuardsInWhileStatement.js @@ -0,0 +1,54 @@ +//// [typeGuardsInWhileStatement.ts] +let cond: boolean; +function a(x: string | number) { + while (typeof x === "string") { + x; // string + x = undefined; + } + x; // number +} +function b(x: string | number) { + while (typeof x === "string") { + if (cond) continue; + x; // string + x = undefined; + } + x; // number +} +function c(x: string | number) { + while (typeof x === "string") { + if (cond) break; + x; // string + x = undefined; + } + x; // string | number +} + + +//// [typeGuardsInWhileStatement.js] +var cond; +function a(x) { + while (typeof x === "string") { + x; // string + x = undefined; + } + x; // number +} +function b(x) { + while (typeof x === "string") { + if (cond) + continue; + x; // string + x = undefined; + } + x; // number +} +function c(x) { + while (typeof x === "string") { + if (cond) + break; + x; // string + x = undefined; + } + x; // string | number +} diff --git a/tests/baselines/reference/typeGuardsInWhileStatement.symbols b/tests/baselines/reference/typeGuardsInWhileStatement.symbols new file mode 100644 index 00000000000..b981943e216 --- /dev/null +++ b/tests/baselines/reference/typeGuardsInWhileStatement.symbols @@ -0,0 +1,62 @@ +=== tests/cases/conformance/expressions/typeGuards/typeGuardsInWhileStatement.ts === +let cond: boolean; +>cond : Symbol(cond, Decl(typeGuardsInWhileStatement.ts, 0, 3)) + +function a(x: string | number) { +>a : Symbol(a, Decl(typeGuardsInWhileStatement.ts, 0, 18)) +>x : Symbol(x, Decl(typeGuardsInWhileStatement.ts, 1, 11)) + + while (typeof x === "string") { +>x : Symbol(x, Decl(typeGuardsInWhileStatement.ts, 1, 11)) + + x; // string +>x : Symbol(x, Decl(typeGuardsInWhileStatement.ts, 1, 11)) + + x = undefined; +>x : Symbol(x, Decl(typeGuardsInWhileStatement.ts, 1, 11)) +>undefined : Symbol(undefined) + } + x; // number +>x : Symbol(x, Decl(typeGuardsInWhileStatement.ts, 1, 11)) +} +function b(x: string | number) { +>b : Symbol(b, Decl(typeGuardsInWhileStatement.ts, 7, 1)) +>x : Symbol(x, Decl(typeGuardsInWhileStatement.ts, 8, 11)) + + while (typeof x === "string") { +>x : Symbol(x, Decl(typeGuardsInWhileStatement.ts, 8, 11)) + + if (cond) continue; +>cond : Symbol(cond, Decl(typeGuardsInWhileStatement.ts, 0, 3)) + + x; // string +>x : Symbol(x, Decl(typeGuardsInWhileStatement.ts, 8, 11)) + + x = undefined; +>x : Symbol(x, Decl(typeGuardsInWhileStatement.ts, 8, 11)) +>undefined : Symbol(undefined) + } + x; // number +>x : Symbol(x, Decl(typeGuardsInWhileStatement.ts, 8, 11)) +} +function c(x: string | number) { +>c : Symbol(c, Decl(typeGuardsInWhileStatement.ts, 15, 1)) +>x : Symbol(x, Decl(typeGuardsInWhileStatement.ts, 16, 11)) + + while (typeof x === "string") { +>x : Symbol(x, Decl(typeGuardsInWhileStatement.ts, 16, 11)) + + if (cond) break; +>cond : Symbol(cond, Decl(typeGuardsInWhileStatement.ts, 0, 3)) + + x; // string +>x : Symbol(x, Decl(typeGuardsInWhileStatement.ts, 16, 11)) + + x = undefined; +>x : Symbol(x, Decl(typeGuardsInWhileStatement.ts, 16, 11)) +>undefined : Symbol(undefined) + } + x; // string | number +>x : Symbol(x, Decl(typeGuardsInWhileStatement.ts, 16, 11)) +} + diff --git a/tests/baselines/reference/typeGuardsInWhileStatement.types b/tests/baselines/reference/typeGuardsInWhileStatement.types new file mode 100644 index 00000000000..cde045cc621 --- /dev/null +++ b/tests/baselines/reference/typeGuardsInWhileStatement.types @@ -0,0 +1,74 @@ +=== tests/cases/conformance/expressions/typeGuards/typeGuardsInWhileStatement.ts === +let cond: boolean; +>cond : boolean + +function a(x: string | number) { +>a : (x: string | number) => void +>x : string | number + + while (typeof x === "string") { +>typeof x === "string" : boolean +>typeof x : string +>x : string | number +>"string" : string + + x; // string +>x : string + + x = undefined; +>x = undefined : undefined +>x : string | number +>undefined : undefined + } + x; // number +>x : number +} +function b(x: string | number) { +>b : (x: string | number) => void +>x : string | number + + while (typeof x === "string") { +>typeof x === "string" : boolean +>typeof x : string +>x : string | number +>"string" : string + + if (cond) continue; +>cond : boolean + + x; // string +>x : string + + x = undefined; +>x = undefined : undefined +>x : string | number +>undefined : undefined + } + x; // number +>x : number +} +function c(x: string | number) { +>c : (x: string | number) => void +>x : string | number + + while (typeof x === "string") { +>typeof x === "string" : boolean +>typeof x : string +>x : string | number +>"string" : string + + if (cond) break; +>cond : boolean + + x; // string +>x : string + + x = undefined; +>x = undefined : undefined +>x : string | number +>undefined : undefined + } + x; // string | number +>x : number | string +} + diff --git a/tests/baselines/reference/typeGuardsOnClassProperty.errors.txt b/tests/baselines/reference/typeGuardsOnClassProperty.errors.txt deleted file mode 100644 index 91d6d6998bc..00000000000 --- a/tests/baselines/reference/typeGuardsOnClassProperty.errors.txt +++ /dev/null @@ -1,37 +0,0 @@ -tests/cases/conformance/expressions/typeGuards/typeGuardsOnClassProperty.ts(14,70): error TS2339: Property 'join' does not exist on type 'string | string[]'. -tests/cases/conformance/expressions/typeGuards/typeGuardsOnClassProperty.ts(26,44): error TS2339: Property 'toLowerCase' does not exist on type 'number | string'. - - -==== tests/cases/conformance/expressions/typeGuards/typeGuardsOnClassProperty.ts (2 errors) ==== - // Note that type guards affect types of variables and parameters only and - // have no effect on members of objects such as properties. - - // Note that the class's property must be copied to a local variable for - // the type guard to have an effect - class D { - data: string | string[]; - getData() { - var data = this.data; - return typeof data === "string" ? data : data.join(" "); - } - - getData1() { - return typeof this.data === "string" ? this.data : this.data.join(" "); - ~~~~ -!!! error TS2339: Property 'join' does not exist on type 'string | string[]'. - } - } - - var o: { - prop1: number|string; - prop2: boolean|string; - } = { - prop1: "string" , - prop2: true - } - - if (typeof o.prop1 === "string" && o.prop1.toLowerCase()) {} - ~~~~~~~~~~~ -!!! error TS2339: Property 'toLowerCase' does not exist on type 'number | string'. - var prop1 = o.prop1; - if (typeof prop1 === "string" && prop1.toLocaleLowerCase()) { } \ No newline at end of file diff --git a/tests/baselines/reference/typeGuardsOnClassProperty.symbols b/tests/baselines/reference/typeGuardsOnClassProperty.symbols new file mode 100644 index 00000000000..5017c442b2f --- /dev/null +++ b/tests/baselines/reference/typeGuardsOnClassProperty.symbols @@ -0,0 +1,86 @@ +=== tests/cases/conformance/expressions/typeGuards/typeGuardsOnClassProperty.ts === +// Note that type guards affect types of variables and parameters only and +// have no effect on members of objects such as properties. + +// Note that the class's property must be copied to a local variable for +// the type guard to have an effect +class D { +>D : Symbol(D, Decl(typeGuardsOnClassProperty.ts, 0, 0)) + + data: string | string[]; +>data : Symbol(D.data, Decl(typeGuardsOnClassProperty.ts, 5, 9)) + + getData() { +>getData : Symbol(D.getData, Decl(typeGuardsOnClassProperty.ts, 6, 28)) + + var data = this.data; +>data : Symbol(data, Decl(typeGuardsOnClassProperty.ts, 8, 11)) +>this.data : Symbol(D.data, Decl(typeGuardsOnClassProperty.ts, 5, 9)) +>this : Symbol(D, Decl(typeGuardsOnClassProperty.ts, 0, 0)) +>data : Symbol(D.data, Decl(typeGuardsOnClassProperty.ts, 5, 9)) + + return typeof data === "string" ? data : data.join(" "); +>data : Symbol(data, Decl(typeGuardsOnClassProperty.ts, 8, 11)) +>data : Symbol(data, Decl(typeGuardsOnClassProperty.ts, 8, 11)) +>data.join : Symbol(Array.join, Decl(lib.d.ts, --, --)) +>data : Symbol(data, Decl(typeGuardsOnClassProperty.ts, 8, 11)) +>join : Symbol(Array.join, Decl(lib.d.ts, --, --)) + } + + getData1() { +>getData1 : Symbol(D.getData1, Decl(typeGuardsOnClassProperty.ts, 10, 5)) + + return typeof this.data === "string" ? this.data : this.data.join(" "); +>this.data : Symbol(D.data, Decl(typeGuardsOnClassProperty.ts, 5, 9)) +>this : Symbol(D, Decl(typeGuardsOnClassProperty.ts, 0, 0)) +>data : Symbol(D.data, Decl(typeGuardsOnClassProperty.ts, 5, 9)) +>this.data : Symbol(D.data, Decl(typeGuardsOnClassProperty.ts, 5, 9)) +>this : Symbol(D, Decl(typeGuardsOnClassProperty.ts, 0, 0)) +>data : Symbol(D.data, Decl(typeGuardsOnClassProperty.ts, 5, 9)) +>this.data.join : Symbol(Array.join, Decl(lib.d.ts, --, --)) +>this.data : Symbol(D.data, Decl(typeGuardsOnClassProperty.ts, 5, 9)) +>this : Symbol(D, Decl(typeGuardsOnClassProperty.ts, 0, 0)) +>data : Symbol(D.data, Decl(typeGuardsOnClassProperty.ts, 5, 9)) +>join : Symbol(Array.join, Decl(lib.d.ts, --, --)) + } +} + +var o: { +>o : Symbol(o, Decl(typeGuardsOnClassProperty.ts, 17, 3)) + + prop1: number|string; +>prop1 : Symbol(prop1, Decl(typeGuardsOnClassProperty.ts, 17, 8)) + + prop2: boolean|string; +>prop2 : Symbol(prop2, Decl(typeGuardsOnClassProperty.ts, 18, 25)) + +} = { + prop1: "string" , +>prop1 : Symbol(prop1, Decl(typeGuardsOnClassProperty.ts, 20, 5)) + + prop2: true +>prop2 : Symbol(prop2, Decl(typeGuardsOnClassProperty.ts, 21, 25)) + } + +if (typeof o.prop1 === "string" && o.prop1.toLowerCase()) {} +>o.prop1 : Symbol(prop1, Decl(typeGuardsOnClassProperty.ts, 17, 8)) +>o : Symbol(o, Decl(typeGuardsOnClassProperty.ts, 17, 3)) +>prop1 : Symbol(prop1, Decl(typeGuardsOnClassProperty.ts, 17, 8)) +>o.prop1.toLowerCase : Symbol(String.toLowerCase, Decl(lib.d.ts, --, --)) +>o.prop1 : Symbol(prop1, Decl(typeGuardsOnClassProperty.ts, 17, 8)) +>o : Symbol(o, Decl(typeGuardsOnClassProperty.ts, 17, 3)) +>prop1 : Symbol(prop1, Decl(typeGuardsOnClassProperty.ts, 17, 8)) +>toLowerCase : Symbol(String.toLowerCase, Decl(lib.d.ts, --, --)) + +var prop1 = o.prop1; +>prop1 : Symbol(prop1, Decl(typeGuardsOnClassProperty.ts, 26, 3)) +>o.prop1 : Symbol(prop1, Decl(typeGuardsOnClassProperty.ts, 17, 8)) +>o : Symbol(o, Decl(typeGuardsOnClassProperty.ts, 17, 3)) +>prop1 : Symbol(prop1, Decl(typeGuardsOnClassProperty.ts, 17, 8)) + +if (typeof prop1 === "string" && prop1.toLocaleLowerCase()) { } +>prop1 : Symbol(prop1, Decl(typeGuardsOnClassProperty.ts, 26, 3)) +>prop1.toLocaleLowerCase : Symbol(String.toLocaleLowerCase, Decl(lib.d.ts, --, --)) +>prop1 : Symbol(prop1, Decl(typeGuardsOnClassProperty.ts, 26, 3)) +>toLocaleLowerCase : Symbol(String.toLocaleLowerCase, Decl(lib.d.ts, --, --)) + diff --git a/tests/baselines/reference/typeGuardsOnClassProperty.types b/tests/baselines/reference/typeGuardsOnClassProperty.types new file mode 100644 index 00000000000..6d524ccf674 --- /dev/null +++ b/tests/baselines/reference/typeGuardsOnClassProperty.types @@ -0,0 +1,112 @@ +=== tests/cases/conformance/expressions/typeGuards/typeGuardsOnClassProperty.ts === +// Note that type guards affect types of variables and parameters only and +// have no effect on members of objects such as properties. + +// Note that the class's property must be copied to a local variable for +// the type guard to have an effect +class D { +>D : D + + data: string | string[]; +>data : string | string[] + + getData() { +>getData : () => string + + var data = this.data; +>data : string | string[] +>this.data : string | string[] +>this : this +>data : string | string[] + + return typeof data === "string" ? data : data.join(" "); +>typeof data === "string" ? data : data.join(" ") : string +>typeof data === "string" : boolean +>typeof data : string +>data : string | string[] +>"string" : string +>data : string +>data.join(" ") : string +>data.join : (separator?: string) => string +>data : string[] +>join : (separator?: string) => string +>" " : string + } + + getData1() { +>getData1 : () => string + + return typeof this.data === "string" ? this.data : this.data.join(" "); +>typeof this.data === "string" ? this.data : this.data.join(" ") : string +>typeof this.data === "string" : boolean +>typeof this.data : string +>this.data : string | string[] +>this : this +>data : string | string[] +>"string" : string +>this.data : string +>this : this +>data : string +>this.data.join(" ") : string +>this.data.join : (separator?: string) => string +>this.data : string[] +>this : this +>data : string[] +>join : (separator?: string) => string +>" " : string + } +} + +var o: { +>o : { prop1: number | string; prop2: boolean | string; } + + prop1: number|string; +>prop1 : number | string + + prop2: boolean|string; +>prop2 : boolean | string + +} = { +>{ prop1: "string" , prop2: true } : { prop1: string; prop2: boolean; } + + prop1: "string" , +>prop1 : string +>"string" : string + + prop2: true +>prop2 : boolean +>true : boolean + } + +if (typeof o.prop1 === "string" && o.prop1.toLowerCase()) {} +>typeof o.prop1 === "string" && o.prop1.toLowerCase() : string +>typeof o.prop1 === "string" : boolean +>typeof o.prop1 : string +>o.prop1 : number | string +>o : { prop1: number | string; prop2: boolean | string; } +>prop1 : number | string +>"string" : string +>o.prop1.toLowerCase() : string +>o.prop1.toLowerCase : () => string +>o.prop1 : string +>o : { prop1: number | string; prop2: boolean | string; } +>prop1 : string +>toLowerCase : () => string + +var prop1 = o.prop1; +>prop1 : number | string +>o.prop1 : number | string +>o : { prop1: number | string; prop2: boolean | string; } +>prop1 : number | string + +if (typeof prop1 === "string" && prop1.toLocaleLowerCase()) { } +>typeof prop1 === "string" && prop1.toLocaleLowerCase() : string +>typeof prop1 === "string" : boolean +>typeof prop1 : string +>prop1 : number | string +>"string" : string +>prop1.toLocaleLowerCase() : string +>prop1.toLocaleLowerCase : () => string +>prop1 : string +>toLocaleLowerCase : () => string + diff --git a/tests/baselines/reference/typeGuardsWithInstanceOf.errors.txt b/tests/baselines/reference/typeGuardsWithInstanceOf.errors.txt new file mode 100644 index 00000000000..662d3697159 --- /dev/null +++ b/tests/baselines/reference/typeGuardsWithInstanceOf.errors.txt @@ -0,0 +1,14 @@ +tests/cases/conformance/expressions/typeGuards/typeGuardsWithInstanceOf.ts(7,20): error TS2339: Property 'global' does not exist on type 'nothing'. + + +==== tests/cases/conformance/expressions/typeGuards/typeGuardsWithInstanceOf.ts (1 errors) ==== + interface I { global: string; } + var result: I; + var result2: I; + + if (!(result instanceof RegExp)) { + result = result2; + } else if (!result.global) { + ~~~~~~ +!!! error TS2339: Property 'global' does not exist on type 'nothing'. + } \ No newline at end of file diff --git a/tests/baselines/reference/typeGuardsWithInstanceOf.symbols b/tests/baselines/reference/typeGuardsWithInstanceOf.symbols deleted file mode 100644 index 81efb5d5b1d..00000000000 --- a/tests/baselines/reference/typeGuardsWithInstanceOf.symbols +++ /dev/null @@ -1,26 +0,0 @@ -=== tests/cases/conformance/expressions/typeGuards/typeGuardsWithInstanceOf.ts === -interface I { global: string; } ->I : Symbol(I, Decl(typeGuardsWithInstanceOf.ts, 0, 0)) ->global : Symbol(global, Decl(typeGuardsWithInstanceOf.ts, 0, 13)) - -var result: I; ->result : Symbol(result, Decl(typeGuardsWithInstanceOf.ts, 1, 3)) ->I : Symbol(I, Decl(typeGuardsWithInstanceOf.ts, 0, 0)) - -var result2: I; ->result2 : Symbol(result2, Decl(typeGuardsWithInstanceOf.ts, 2, 3)) ->I : Symbol(I, Decl(typeGuardsWithInstanceOf.ts, 0, 0)) - -if (!(result instanceof RegExp)) { ->result : Symbol(result, Decl(typeGuardsWithInstanceOf.ts, 1, 3)) ->RegExp : Symbol(RegExp, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) - - result = result2; ->result : Symbol(result, Decl(typeGuardsWithInstanceOf.ts, 1, 3)) ->result2 : Symbol(result2, Decl(typeGuardsWithInstanceOf.ts, 2, 3)) - -} else if (!result.global) { ->result.global : Symbol(I.global, Decl(typeGuardsWithInstanceOf.ts, 0, 13)) ->result : Symbol(result, Decl(typeGuardsWithInstanceOf.ts, 1, 3)) ->global : Symbol(I.global, Decl(typeGuardsWithInstanceOf.ts, 0, 13)) -} diff --git a/tests/baselines/reference/typeGuardsWithInstanceOf.types b/tests/baselines/reference/typeGuardsWithInstanceOf.types deleted file mode 100644 index 0d7b477faed..00000000000 --- a/tests/baselines/reference/typeGuardsWithInstanceOf.types +++ /dev/null @@ -1,31 +0,0 @@ -=== tests/cases/conformance/expressions/typeGuards/typeGuardsWithInstanceOf.ts === -interface I { global: string; } ->I : I ->global : string - -var result: I; ->result : I ->I : I - -var result2: I; ->result2 : I ->I : I - -if (!(result instanceof RegExp)) { ->!(result instanceof RegExp) : boolean ->(result instanceof RegExp) : boolean ->result instanceof RegExp : boolean ->result : I ->RegExp : RegExpConstructor - - result = result2; ->result = result2 : I ->result : I ->result2 : I - -} else if (!result.global) { ->!result.global : boolean ->result.global : string ->result : I ->global : string -} diff --git a/tests/baselines/reference/typeInferenceReturnTypeCallback.symbols b/tests/baselines/reference/typeInferenceReturnTypeCallback.symbols index a7322f7e69b..5e65945f9ad 100644 --- a/tests/baselines/reference/typeInferenceReturnTypeCallback.symbols +++ b/tests/baselines/reference/typeInferenceReturnTypeCallback.symbols @@ -4,7 +4,7 @@ interface IList { >A : Symbol(A, Decl(typeInferenceReturnTypeCallback.ts, 0, 16)) map(f: (t: A) => B): IList; ->map : Symbol(map, Decl(typeInferenceReturnTypeCallback.ts, 0, 20)) +>map : Symbol(IList.map, Decl(typeInferenceReturnTypeCallback.ts, 0, 20)) >B : Symbol(B, Decl(typeInferenceReturnTypeCallback.ts, 1, 8)) >f : Symbol(f, Decl(typeInferenceReturnTypeCallback.ts, 1, 11)) >t : Symbol(t, Decl(typeInferenceReturnTypeCallback.ts, 1, 15)) @@ -21,7 +21,7 @@ class Nil implements IList{ >C : Symbol(C, Decl(typeInferenceReturnTypeCallback.ts, 4, 10)) map(f: (t: C) => D): IList { ->map : Symbol(map, Decl(typeInferenceReturnTypeCallback.ts, 4, 33)) +>map : Symbol(Nil.map, Decl(typeInferenceReturnTypeCallback.ts, 4, 33)) >D : Symbol(D, Decl(typeInferenceReturnTypeCallback.ts, 5, 8)) >f : Symbol(f, Decl(typeInferenceReturnTypeCallback.ts, 5, 11)) >t : Symbol(t, Decl(typeInferenceReturnTypeCallback.ts, 5, 15)) @@ -41,7 +41,7 @@ class Cons implements IList{ >T : Symbol(T, Decl(typeInferenceReturnTypeCallback.ts, 10, 11)) map(f: (t: T) => U): IList { ->map : Symbol(map, Decl(typeInferenceReturnTypeCallback.ts, 10, 34)) +>map : Symbol(Cons.map, Decl(typeInferenceReturnTypeCallback.ts, 10, 34)) >U : Symbol(U, Decl(typeInferenceReturnTypeCallback.ts, 11, 8)) >f : Symbol(f, Decl(typeInferenceReturnTypeCallback.ts, 11, 11)) >t : Symbol(t, Decl(typeInferenceReturnTypeCallback.ts, 11, 15)) @@ -51,9 +51,9 @@ class Cons implements IList{ >U : Symbol(U, Decl(typeInferenceReturnTypeCallback.ts, 11, 8)) return this.foldRight(new Nil(), (t, acc) => { ->this.foldRight : Symbol(foldRight, Decl(typeInferenceReturnTypeCallback.ts, 15, 5)) +>this.foldRight : Symbol(Cons.foldRight, Decl(typeInferenceReturnTypeCallback.ts, 15, 5)) >this : Symbol(Cons, Decl(typeInferenceReturnTypeCallback.ts, 8, 1)) ->foldRight : Symbol(foldRight, Decl(typeInferenceReturnTypeCallback.ts, 15, 5)) +>foldRight : Symbol(Cons.foldRight, Decl(typeInferenceReturnTypeCallback.ts, 15, 5)) >Nil : Symbol(Nil, Decl(typeInferenceReturnTypeCallback.ts, 2, 1)) >U : Symbol(U, Decl(typeInferenceReturnTypeCallback.ts, 11, 8)) >t : Symbol(t, Decl(typeInferenceReturnTypeCallback.ts, 12, 45)) @@ -67,7 +67,7 @@ class Cons implements IList{ } foldRight(z: E, f: (t: T, acc: E) => E): E { ->foldRight : Symbol(foldRight, Decl(typeInferenceReturnTypeCallback.ts, 15, 5)) +>foldRight : Symbol(Cons.foldRight, Decl(typeInferenceReturnTypeCallback.ts, 15, 5)) >E : Symbol(E, Decl(typeInferenceReturnTypeCallback.ts, 17, 14)) >z : Symbol(z, Decl(typeInferenceReturnTypeCallback.ts, 17, 17)) >E : Symbol(E, Decl(typeInferenceReturnTypeCallback.ts, 17, 14)) diff --git a/tests/baselines/reference/typeLiteralCallback.symbols b/tests/baselines/reference/typeLiteralCallback.symbols index 14bdd240612..824998a3a99 100644 --- a/tests/baselines/reference/typeLiteralCallback.symbols +++ b/tests/baselines/reference/typeLiteralCallback.symbols @@ -4,7 +4,7 @@ interface Foo { >T : Symbol(T, Decl(typeLiteralCallback.ts, 0, 14)) reject(arg: T): void ; ->reject : Symbol(reject, Decl(typeLiteralCallback.ts, 0, 18)) +>reject : Symbol(Foo.reject, Decl(typeLiteralCallback.ts, 0, 18)) >arg : Symbol(arg, Decl(typeLiteralCallback.ts, 1, 11)) >T : Symbol(T, Decl(typeLiteralCallback.ts, 0, 14)) } @@ -17,13 +17,13 @@ interface bar { >T : Symbol(T, Decl(typeLiteralCallback.ts, 5, 14)) fail(func: (arg: T) => void ): void ; ->fail : Symbol(fail, Decl(typeLiteralCallback.ts, 5, 18)) +>fail : Symbol(bar.fail, Decl(typeLiteralCallback.ts, 5, 18)) >func : Symbol(func, Decl(typeLiteralCallback.ts, 6, 9)) >arg : Symbol(arg, Decl(typeLiteralCallback.ts, 6, 16)) >T : Symbol(T, Decl(typeLiteralCallback.ts, 5, 14)) fail2(func: { (arg: T): void ; }): void ; ->fail2 : Symbol(fail2, Decl(typeLiteralCallback.ts, 6, 41)) +>fail2 : Symbol(bar.fail2, Decl(typeLiteralCallback.ts, 6, 41)) >func : Symbol(func, Decl(typeLiteralCallback.ts, 7, 10)) >arg : Symbol(arg, Decl(typeLiteralCallback.ts, 7, 19)) >T : Symbol(T, Decl(typeLiteralCallback.ts, 5, 14)) diff --git a/tests/baselines/reference/typeOfPrototype.symbols b/tests/baselines/reference/typeOfPrototype.symbols index ee44b3c9ae0..f6ba0d1600e 100644 --- a/tests/baselines/reference/typeOfPrototype.symbols +++ b/tests/baselines/reference/typeOfPrototype.symbols @@ -3,7 +3,7 @@ class Foo { >Foo : Symbol(Foo, Decl(typeOfPrototype.ts, 0, 0)) bar = 3; ->bar : Symbol(bar, Decl(typeOfPrototype.ts, 0, 11)) +>bar : Symbol(Foo.bar, Decl(typeOfPrototype.ts, 0, 11)) static bar = ''; >bar : Symbol(Foo.bar, Decl(typeOfPrototype.ts, 1, 12)) diff --git a/tests/baselines/reference/typeOfThisInFunctionExpression.symbols b/tests/baselines/reference/typeOfThisInFunctionExpression.symbols index 59a7b11bc9f..4b6bd18509b 100644 --- a/tests/baselines/reference/typeOfThisInFunctionExpression.symbols +++ b/tests/baselines/reference/typeOfThisInFunctionExpression.symbols @@ -36,7 +36,7 @@ class C { >C : Symbol(C, Decl(typeOfThisInFunctionExpression.ts, 15, 1)) x = function () { ->x : Symbol(x, Decl(typeOfThisInFunctionExpression.ts, 17, 9)) +>x : Symbol(C.x, Decl(typeOfThisInFunctionExpression.ts, 17, 9)) var q: any; >q : Symbol(q, Decl(typeOfThisInFunctionExpression.ts, 19, 11), Decl(typeOfThisInFunctionExpression.ts, 20, 11)) @@ -45,7 +45,7 @@ class C { >q : Symbol(q, Decl(typeOfThisInFunctionExpression.ts, 19, 11), Decl(typeOfThisInFunctionExpression.ts, 20, 11)) } y = function ff() { ->y : Symbol(y, Decl(typeOfThisInFunctionExpression.ts, 21, 5)) +>y : Symbol(C.y, Decl(typeOfThisInFunctionExpression.ts, 21, 5)) >ff : Symbol(ff, Decl(typeOfThisInFunctionExpression.ts, 22, 7)) var q: any; diff --git a/tests/baselines/reference/typeOfThisInMemberFunctions.symbols b/tests/baselines/reference/typeOfThisInMemberFunctions.symbols index c0a860af4f7..a98234023c5 100644 --- a/tests/baselines/reference/typeOfThisInMemberFunctions.symbols +++ b/tests/baselines/reference/typeOfThisInMemberFunctions.symbols @@ -3,7 +3,7 @@ class C { >C : Symbol(C, Decl(typeOfThisInMemberFunctions.ts, 0, 0)) foo() { ->foo : Symbol(foo, Decl(typeOfThisInMemberFunctions.ts, 0, 9)) +>foo : Symbol(C.foo, Decl(typeOfThisInMemberFunctions.ts, 0, 9)) var r = this; >r : Symbol(r, Decl(typeOfThisInMemberFunctions.ts, 2, 11)) @@ -24,11 +24,11 @@ class D { >T : Symbol(T, Decl(typeOfThisInMemberFunctions.ts, 10, 8)) x: T; ->x : Symbol(x, Decl(typeOfThisInMemberFunctions.ts, 10, 12)) +>x : Symbol(D.x, Decl(typeOfThisInMemberFunctions.ts, 10, 12)) >T : Symbol(T, Decl(typeOfThisInMemberFunctions.ts, 10, 8)) foo() { ->foo : Symbol(foo, Decl(typeOfThisInMemberFunctions.ts, 11, 9)) +>foo : Symbol(D.foo, Decl(typeOfThisInMemberFunctions.ts, 11, 9)) var r = this; >r : Symbol(r, Decl(typeOfThisInMemberFunctions.ts, 13, 11)) @@ -47,14 +47,14 @@ class D { class E { >E : Symbol(E, Decl(typeOfThisInMemberFunctions.ts, 19, 1)) >T : Symbol(T, Decl(typeOfThisInMemberFunctions.ts, 21, 8)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) x: T; ->x : Symbol(x, Decl(typeOfThisInMemberFunctions.ts, 21, 25)) +>x : Symbol(E.x, Decl(typeOfThisInMemberFunctions.ts, 21, 25)) >T : Symbol(T, Decl(typeOfThisInMemberFunctions.ts, 21, 8)) foo() { ->foo : Symbol(foo, Decl(typeOfThisInMemberFunctions.ts, 22, 9)) +>foo : Symbol(E.foo, Decl(typeOfThisInMemberFunctions.ts, 22, 9)) var r = this; >r : Symbol(r, Decl(typeOfThisInMemberFunctions.ts, 24, 11)) diff --git a/tests/baselines/reference/typeParameterAndArgumentOfSameName1.symbols b/tests/baselines/reference/typeParameterAndArgumentOfSameName1.symbols index e38953fe8a2..cacd7f91dfe 100644 --- a/tests/baselines/reference/typeParameterAndArgumentOfSameName1.symbols +++ b/tests/baselines/reference/typeParameterAndArgumentOfSameName1.symbols @@ -2,7 +2,7 @@ function f(A: A): A { >f : Symbol(f, Decl(typeParameterAndArgumentOfSameName1.ts, 0, 0)) >A : Symbol(A, Decl(typeParameterAndArgumentOfSameName1.ts, 0, 11), Decl(typeParameterAndArgumentOfSameName1.ts, 0, 29)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >A : Symbol(A, Decl(typeParameterAndArgumentOfSameName1.ts, 0, 11), Decl(typeParameterAndArgumentOfSameName1.ts, 0, 29)) >A : Symbol(A, Decl(typeParameterAndArgumentOfSameName1.ts, 0, 11), Decl(typeParameterAndArgumentOfSameName1.ts, 0, 29)) >A : Symbol(A, Decl(typeParameterAndArgumentOfSameName1.ts, 0, 11), Decl(typeParameterAndArgumentOfSameName1.ts, 0, 29)) diff --git a/tests/baselines/reference/typeParameterArgumentEquivalence.errors.txt b/tests/baselines/reference/typeParameterArgumentEquivalence.errors.txt index f47266f2850..39e6db64fbf 100644 --- a/tests/baselines/reference/typeParameterArgumentEquivalence.errors.txt +++ b/tests/baselines/reference/typeParameterArgumentEquivalence.errors.txt @@ -1,9 +1,9 @@ tests/cases/compiler/typeParameterArgumentEquivalence.ts(4,5): error TS2322: Type '(item: T) => boolean' is not assignable to type '(item: number) => boolean'. Types of parameters 'item' and 'item' are incompatible. - Type 'T' is not assignable to type 'number'. + Type 'number' is not assignable to type 'T'. tests/cases/compiler/typeParameterArgumentEquivalence.ts(5,5): error TS2322: Type '(item: number) => boolean' is not assignable to type '(item: T) => boolean'. Types of parameters 'item' and 'item' are incompatible. - Type 'number' is not assignable to type 'T'. + Type 'T' is not assignable to type 'number'. ==== tests/cases/compiler/typeParameterArgumentEquivalence.ts (2 errors) ==== @@ -14,11 +14,11 @@ tests/cases/compiler/typeParameterArgumentEquivalence.ts(5,5): error TS2322: Typ ~ !!! error TS2322: Type '(item: T) => boolean' is not assignable to type '(item: number) => boolean'. !!! error TS2322: Types of parameters 'item' and 'item' are incompatible. -!!! error TS2322: Type 'T' is not assignable to type 'number'. +!!! error TS2322: Type 'number' is not assignable to type 'T'. y = x; // Shound be an error ~ !!! error TS2322: Type '(item: number) => boolean' is not assignable to type '(item: T) => boolean'. !!! error TS2322: Types of parameters 'item' and 'item' are incompatible. -!!! error TS2322: Type 'number' is not assignable to type 'T'. +!!! error TS2322: Type 'T' is not assignable to type 'number'. } \ No newline at end of file diff --git a/tests/baselines/reference/typeParameterArgumentEquivalence2.errors.txt b/tests/baselines/reference/typeParameterArgumentEquivalence2.errors.txt index 2aa8d77ba6d..17fce0384f7 100644 --- a/tests/baselines/reference/typeParameterArgumentEquivalence2.errors.txt +++ b/tests/baselines/reference/typeParameterArgumentEquivalence2.errors.txt @@ -1,9 +1,9 @@ tests/cases/compiler/typeParameterArgumentEquivalence2.ts(4,5): error TS2322: Type '(item: T) => boolean' is not assignable to type '(item: U) => boolean'. Types of parameters 'item' and 'item' are incompatible. - Type 'T' is not assignable to type 'U'. + Type 'U' is not assignable to type 'T'. tests/cases/compiler/typeParameterArgumentEquivalence2.ts(5,5): error TS2322: Type '(item: U) => boolean' is not assignable to type '(item: T) => boolean'. Types of parameters 'item' and 'item' are incompatible. - Type 'U' is not assignable to type 'T'. + Type 'T' is not assignable to type 'U'. ==== tests/cases/compiler/typeParameterArgumentEquivalence2.ts (2 errors) ==== @@ -14,11 +14,11 @@ tests/cases/compiler/typeParameterArgumentEquivalence2.ts(5,5): error TS2322: Ty ~ !!! error TS2322: Type '(item: T) => boolean' is not assignable to type '(item: U) => boolean'. !!! error TS2322: Types of parameters 'item' and 'item' are incompatible. -!!! error TS2322: Type 'T' is not assignable to type 'U'. +!!! error TS2322: Type 'U' is not assignable to type 'T'. y = x; // Shound be an error ~ !!! error TS2322: Type '(item: U) => boolean' is not assignable to type '(item: T) => boolean'. !!! error TS2322: Types of parameters 'item' and 'item' are incompatible. -!!! error TS2322: Type 'U' is not assignable to type 'T'. +!!! error TS2322: Type 'T' is not assignable to type 'U'. } \ No newline at end of file diff --git a/tests/baselines/reference/typeParameterAsTypeArgument.symbols b/tests/baselines/reference/typeParameterAsTypeArgument.symbols index a0e03fcf639..cfff8926e55 100644 --- a/tests/baselines/reference/typeParameterAsTypeArgument.symbols +++ b/tests/baselines/reference/typeParameterAsTypeArgument.symbols @@ -29,7 +29,7 @@ class C { >U : Symbol(U, Decl(typeParameterAsTypeArgument.ts, 7, 10)) x: T; ->x : Symbol(x, Decl(typeParameterAsTypeArgument.ts, 7, 15)) +>x : Symbol(C.x, Decl(typeParameterAsTypeArgument.ts, 7, 15)) >T : Symbol(T, Decl(typeParameterAsTypeArgument.ts, 7, 8)) } @@ -39,7 +39,7 @@ interface I { >U : Symbol(U, Decl(typeParameterAsTypeArgument.ts, 11, 14)) x: C; ->x : Symbol(x, Decl(typeParameterAsTypeArgument.ts, 11, 19)) +>x : Symbol(I.x, Decl(typeParameterAsTypeArgument.ts, 11, 19)) >C : Symbol(C, Decl(typeParameterAsTypeArgument.ts, 5, 1)) >U : Symbol(U, Decl(typeParameterAsTypeArgument.ts, 11, 14)) >T : Symbol(T, Decl(typeParameterAsTypeArgument.ts, 11, 12)) diff --git a/tests/baselines/reference/typeParameterAsTypeParameterConstraint.symbols b/tests/baselines/reference/typeParameterAsTypeParameterConstraint.symbols index 569b37e64d1..a530a6c7864 100644 --- a/tests/baselines/reference/typeParameterAsTypeParameterConstraint.symbols +++ b/tests/baselines/reference/typeParameterAsTypeParameterConstraint.symbols @@ -26,14 +26,14 @@ interface A { >A : Symbol(A, Decl(typeParameterAsTypeParameterConstraint.ts, 6, 19)) foo: string; ->foo : Symbol(foo, Decl(typeParameterAsTypeParameterConstraint.ts, 8, 13)) +>foo : Symbol(A.foo, Decl(typeParameterAsTypeParameterConstraint.ts, 8, 13)) } interface B extends A { >B : Symbol(B, Decl(typeParameterAsTypeParameterConstraint.ts, 10, 1)) >A : Symbol(A, Decl(typeParameterAsTypeParameterConstraint.ts, 6, 19)) bar: number; ->bar : Symbol(bar, Decl(typeParameterAsTypeParameterConstraint.ts, 11, 23)) +>bar : Symbol(B.bar, Decl(typeParameterAsTypeParameterConstraint.ts, 11, 23)) } var a: A; >a : Symbol(a, Decl(typeParameterAsTypeParameterConstraint.ts, 14, 3)) diff --git a/tests/baselines/reference/typeParameterAsTypeParameterConstraintTransitively.symbols b/tests/baselines/reference/typeParameterAsTypeParameterConstraintTransitively.symbols index 90276a96b3d..6739f6930f1 100644 --- a/tests/baselines/reference/typeParameterAsTypeParameterConstraintTransitively.symbols +++ b/tests/baselines/reference/typeParameterAsTypeParameterConstraintTransitively.symbols @@ -4,17 +4,17 @@ interface A { foo: number } >A : Symbol(A, Decl(typeParameterAsTypeParameterConstraintTransitively.ts, 0, 0)) ->foo : Symbol(foo, Decl(typeParameterAsTypeParameterConstraintTransitively.ts, 3, 13)) +>foo : Symbol(A.foo, Decl(typeParameterAsTypeParameterConstraintTransitively.ts, 3, 13)) interface B extends A { bar: string; } >B : Symbol(B, Decl(typeParameterAsTypeParameterConstraintTransitively.ts, 3, 27)) >A : Symbol(A, Decl(typeParameterAsTypeParameterConstraintTransitively.ts, 0, 0)) ->bar : Symbol(bar, Decl(typeParameterAsTypeParameterConstraintTransitively.ts, 4, 23)) +>bar : Symbol(B.bar, Decl(typeParameterAsTypeParameterConstraintTransitively.ts, 4, 23)) interface C extends B { baz: boolean; } >C : Symbol(C, Decl(typeParameterAsTypeParameterConstraintTransitively.ts, 4, 38)) >B : Symbol(B, Decl(typeParameterAsTypeParameterConstraintTransitively.ts, 3, 27)) ->baz : Symbol(baz, Decl(typeParameterAsTypeParameterConstraintTransitively.ts, 5, 23)) +>baz : Symbol(C.baz, Decl(typeParameterAsTypeParameterConstraintTransitively.ts, 5, 23)) var a: A; >a : Symbol(a, Decl(typeParameterAsTypeParameterConstraintTransitively.ts, 6, 3)) diff --git a/tests/baselines/reference/typeParameterAsTypeParameterConstraintTransitively2.symbols b/tests/baselines/reference/typeParameterAsTypeParameterConstraintTransitively2.symbols index 5635d0e61ed..f0fbba60d9a 100644 --- a/tests/baselines/reference/typeParameterAsTypeParameterConstraintTransitively2.symbols +++ b/tests/baselines/reference/typeParameterAsTypeParameterConstraintTransitively2.symbols @@ -4,17 +4,17 @@ interface A { foo: number } >A : Symbol(A, Decl(typeParameterAsTypeParameterConstraintTransitively2.ts, 0, 0)) ->foo : Symbol(foo, Decl(typeParameterAsTypeParameterConstraintTransitively2.ts, 3, 13)) +>foo : Symbol(A.foo, Decl(typeParameterAsTypeParameterConstraintTransitively2.ts, 3, 13)) interface B extends A { bar: string; } >B : Symbol(B, Decl(typeParameterAsTypeParameterConstraintTransitively2.ts, 3, 27)) >A : Symbol(A, Decl(typeParameterAsTypeParameterConstraintTransitively2.ts, 0, 0)) ->bar : Symbol(bar, Decl(typeParameterAsTypeParameterConstraintTransitively2.ts, 4, 23)) +>bar : Symbol(B.bar, Decl(typeParameterAsTypeParameterConstraintTransitively2.ts, 4, 23)) interface C extends B { baz: boolean; } >C : Symbol(C, Decl(typeParameterAsTypeParameterConstraintTransitively2.ts, 4, 38)) >B : Symbol(B, Decl(typeParameterAsTypeParameterConstraintTransitively2.ts, 3, 27)) ->baz : Symbol(baz, Decl(typeParameterAsTypeParameterConstraintTransitively2.ts, 5, 23)) +>baz : Symbol(C.baz, Decl(typeParameterAsTypeParameterConstraintTransitively2.ts, 5, 23)) var a: A; >a : Symbol(a, Decl(typeParameterAsTypeParameterConstraintTransitively2.ts, 6, 3)) diff --git a/tests/baselines/reference/typeParameterCompatibilityAccrossDeclarations.symbols b/tests/baselines/reference/typeParameterCompatibilityAccrossDeclarations.symbols index eb1aeeaca27..d7d4980d21d 100644 --- a/tests/baselines/reference/typeParameterCompatibilityAccrossDeclarations.symbols +++ b/tests/baselines/reference/typeParameterCompatibilityAccrossDeclarations.symbols @@ -20,7 +20,7 @@ export interface I { >I : Symbol(I, Decl(typeParameterCompatibilityAccrossDeclarations.ts, 5, 1)) x(y: T): T; ->x : Symbol(x, Decl(typeParameterCompatibilityAccrossDeclarations.ts, 6, 20)) +>x : Symbol(I.x, Decl(typeParameterCompatibilityAccrossDeclarations.ts, 6, 20)) >T : Symbol(T, Decl(typeParameterCompatibilityAccrossDeclarations.ts, 7, 5)) >y : Symbol(y, Decl(typeParameterCompatibilityAccrossDeclarations.ts, 7, 8)) >T : Symbol(T, Decl(typeParameterCompatibilityAccrossDeclarations.ts, 7, 5)) @@ -30,7 +30,7 @@ export interface I2 { >I2 : Symbol(I2, Decl(typeParameterCompatibilityAccrossDeclarations.ts, 8, 1)) x(y: any): any; ->x : Symbol(x, Decl(typeParameterCompatibilityAccrossDeclarations.ts, 9, 21)) +>x : Symbol(I2.x, Decl(typeParameterCompatibilityAccrossDeclarations.ts, 9, 21)) >y : Symbol(y, Decl(typeParameterCompatibilityAccrossDeclarations.ts, 10, 5)) } diff --git a/tests/baselines/reference/typeParameterConstrainedToOuterTypeParameter2.symbols b/tests/baselines/reference/typeParameterConstrainedToOuterTypeParameter2.symbols index cd6cefc5ec0..0d9365e4753 100644 --- a/tests/baselines/reference/typeParameterConstrainedToOuterTypeParameter2.symbols +++ b/tests/baselines/reference/typeParameterConstrainedToOuterTypeParameter2.symbols @@ -4,7 +4,7 @@ interface A { >T : Symbol(T, Decl(typeParameterConstrainedToOuterTypeParameter2.ts, 0, 12)) foo(x: A>) ->foo : Symbol(foo, Decl(typeParameterConstrainedToOuterTypeParameter2.ts, 0, 16)) +>foo : Symbol(A.foo, Decl(typeParameterConstrainedToOuterTypeParameter2.ts, 0, 16)) >U : Symbol(U, Decl(typeParameterConstrainedToOuterTypeParameter2.ts, 1, 8)) >T : Symbol(T, Decl(typeParameterConstrainedToOuterTypeParameter2.ts, 0, 12)) >x : Symbol(x, Decl(typeParameterConstrainedToOuterTypeParameter2.ts, 1, 21)) @@ -18,7 +18,7 @@ interface B { >T : Symbol(T, Decl(typeParameterConstrainedToOuterTypeParameter2.ts, 4, 12)) foo(x: B>) ->foo : Symbol(foo, Decl(typeParameterConstrainedToOuterTypeParameter2.ts, 4, 16)) +>foo : Symbol(B.foo, Decl(typeParameterConstrainedToOuterTypeParameter2.ts, 4, 16)) >U : Symbol(U, Decl(typeParameterConstrainedToOuterTypeParameter2.ts, 5, 8)) >T : Symbol(T, Decl(typeParameterConstrainedToOuterTypeParameter2.ts, 4, 12)) >x : Symbol(x, Decl(typeParameterConstrainedToOuterTypeParameter2.ts, 5, 21)) diff --git a/tests/baselines/reference/typeParameterConstraintInstantiation.symbols b/tests/baselines/reference/typeParameterConstraintInstantiation.symbols index 9103d65c0e9..f3b5a01eef9 100644 --- a/tests/baselines/reference/typeParameterConstraintInstantiation.symbols +++ b/tests/baselines/reference/typeParameterConstraintInstantiation.symbols @@ -6,7 +6,7 @@ interface Mapper { >T : Symbol(T, Decl(typeParameterConstraintInstantiation.ts, 2, 17)) map(f: (item: T) => U): V; ->map : Symbol(map, Decl(typeParameterConstraintInstantiation.ts, 2, 21)) +>map : Symbol(Mapper.map, Decl(typeParameterConstraintInstantiation.ts, 2, 21)) >U : Symbol(U, Decl(typeParameterConstraintInstantiation.ts, 3, 8)) >T : Symbol(T, Decl(typeParameterConstraintInstantiation.ts, 2, 17)) >V : Symbol(V, Decl(typeParameterConstraintInstantiation.ts, 3, 20)) diff --git a/tests/baselines/reference/typeParameterConstraints1.errors.txt b/tests/baselines/reference/typeParameterConstraints1.errors.txt index e837e19317d..97bc8165751 100644 --- a/tests/baselines/reference/typeParameterConstraints1.errors.txt +++ b/tests/baselines/reference/typeParameterConstraints1.errors.txt @@ -1,11 +1,9 @@ tests/cases/compiler/typeParameterConstraints1.ts(6,25): error TS2304: Cannot find name 'hm'. tests/cases/compiler/typeParameterConstraints1.ts(9,25): error TS1110: Type expected. tests/cases/compiler/typeParameterConstraints1.ts(10,26): error TS1110: Type expected. -tests/cases/compiler/typeParameterConstraints1.ts(11,26): error TS1110: Type expected. -tests/cases/compiler/typeParameterConstraints1.ts(12,26): error TS2304: Cannot find name 'undefined'. -==== tests/cases/compiler/typeParameterConstraints1.ts (5 errors) ==== +==== tests/cases/compiler/typeParameterConstraints1.ts (3 errors) ==== function foo1(test: T) { } function foo2(test: T) { } function foo3(test: T) { } @@ -23,9 +21,5 @@ tests/cases/compiler/typeParameterConstraints1.ts(12,26): error TS2304: Cannot f ~ !!! error TS1110: Type expected. function foo11 (test: T) { } - ~~~~ -!!! error TS1110: Type expected. function foo12(test: T) { } - ~~~~~~~~~ -!!! error TS2304: Cannot find name 'undefined'. function foo13(test: T) { } \ No newline at end of file diff --git a/tests/baselines/reference/typeParameterEquality.symbols b/tests/baselines/reference/typeParameterEquality.symbols index 562d6277d93..711d6264c48 100644 --- a/tests/baselines/reference/typeParameterEquality.symbols +++ b/tests/baselines/reference/typeParameterEquality.symbols @@ -3,14 +3,14 @@ class C { >C : Symbol(C, Decl(typeParameterEquality.ts, 0, 0)) get x(): (a: T) => T { return null; } ->x : Symbol(x, Decl(typeParameterEquality.ts, 0, 9), Decl(typeParameterEquality.ts, 1, 44)) +>x : Symbol(C.x, Decl(typeParameterEquality.ts, 0, 9), Decl(typeParameterEquality.ts, 1, 44)) >T : Symbol(T, Decl(typeParameterEquality.ts, 1, 14)) >a : Symbol(a, Decl(typeParameterEquality.ts, 1, 17)) >T : Symbol(T, Decl(typeParameterEquality.ts, 1, 14)) >T : Symbol(T, Decl(typeParameterEquality.ts, 1, 14)) set x(p: (a: U) => U) {} ->x : Symbol(x, Decl(typeParameterEquality.ts, 0, 9), Decl(typeParameterEquality.ts, 1, 44)) +>x : Symbol(C.x, Decl(typeParameterEquality.ts, 0, 9), Decl(typeParameterEquality.ts, 1, 44)) >p : Symbol(p, Decl(typeParameterEquality.ts, 2, 10)) >U : Symbol(U, Decl(typeParameterEquality.ts, 2, 14)) >a : Symbol(a, Decl(typeParameterEquality.ts, 2, 17)) diff --git a/tests/baselines/reference/typeParameterExtendingUnion1.symbols b/tests/baselines/reference/typeParameterExtendingUnion1.symbols index 39b67e6428c..0538dcf91e0 100644 --- a/tests/baselines/reference/typeParameterExtendingUnion1.symbols +++ b/tests/baselines/reference/typeParameterExtendingUnion1.symbols @@ -1,17 +1,17 @@ === tests/cases/compiler/typeParameterExtendingUnion1.ts === class Animal { run() { } } >Animal : Symbol(Animal, Decl(typeParameterExtendingUnion1.ts, 0, 0)) ->run : Symbol(run, Decl(typeParameterExtendingUnion1.ts, 0, 14)) +>run : Symbol(Animal.run, Decl(typeParameterExtendingUnion1.ts, 0, 14)) class Cat extends Animal { meow } >Cat : Symbol(Cat, Decl(typeParameterExtendingUnion1.ts, 0, 26)) >Animal : Symbol(Animal, Decl(typeParameterExtendingUnion1.ts, 0, 0)) ->meow : Symbol(meow, Decl(typeParameterExtendingUnion1.ts, 1, 26)) +>meow : Symbol(Cat.meow, Decl(typeParameterExtendingUnion1.ts, 1, 26)) class Dog extends Animal { woof } >Dog : Symbol(Dog, Decl(typeParameterExtendingUnion1.ts, 1, 33)) >Animal : Symbol(Animal, Decl(typeParameterExtendingUnion1.ts, 0, 0)) ->woof : Symbol(woof, Decl(typeParameterExtendingUnion1.ts, 2, 26)) +>woof : Symbol(Dog.woof, Decl(typeParameterExtendingUnion1.ts, 2, 26)) function run(a: Animal) { >run : Symbol(run, Decl(typeParameterExtendingUnion1.ts, 2, 33)) diff --git a/tests/baselines/reference/typeParameterExtendingUnion2.symbols b/tests/baselines/reference/typeParameterExtendingUnion2.symbols index 44d47692a82..f29f12f6f09 100644 --- a/tests/baselines/reference/typeParameterExtendingUnion2.symbols +++ b/tests/baselines/reference/typeParameterExtendingUnion2.symbols @@ -1,17 +1,17 @@ === tests/cases/compiler/typeParameterExtendingUnion2.ts === class Animal { run() { } } >Animal : Symbol(Animal, Decl(typeParameterExtendingUnion2.ts, 0, 0)) ->run : Symbol(run, Decl(typeParameterExtendingUnion2.ts, 0, 14)) +>run : Symbol(Animal.run, Decl(typeParameterExtendingUnion2.ts, 0, 14)) class Cat extends Animal { meow } >Cat : Symbol(Cat, Decl(typeParameterExtendingUnion2.ts, 0, 26)) >Animal : Symbol(Animal, Decl(typeParameterExtendingUnion2.ts, 0, 0)) ->meow : Symbol(meow, Decl(typeParameterExtendingUnion2.ts, 1, 26)) +>meow : Symbol(Cat.meow, Decl(typeParameterExtendingUnion2.ts, 1, 26)) class Dog extends Animal { woof } >Dog : Symbol(Dog, Decl(typeParameterExtendingUnion2.ts, 1, 33)) >Animal : Symbol(Animal, Decl(typeParameterExtendingUnion2.ts, 0, 0)) ->woof : Symbol(woof, Decl(typeParameterExtendingUnion2.ts, 2, 26)) +>woof : Symbol(Dog.woof, Decl(typeParameterExtendingUnion2.ts, 2, 26)) function run(a: Cat | Dog) { >run : Symbol(run, Decl(typeParameterExtendingUnion2.ts, 2, 33)) diff --git a/tests/baselines/reference/typeParameterFixingWithConstraints.symbols b/tests/baselines/reference/typeParameterFixingWithConstraints.symbols index 94e1b8172cb..4b998238130 100644 --- a/tests/baselines/reference/typeParameterFixingWithConstraints.symbols +++ b/tests/baselines/reference/typeParameterFixingWithConstraints.symbols @@ -10,7 +10,7 @@ interface IFoo { >IFoo : Symbol(IFoo, Decl(typeParameterFixingWithConstraints.ts, 2, 1)) foo(bar: TBar, bar1: (bar: TBar) => TBar, bar2: (bar: TBar) => TBar): TBar; ->foo : Symbol(foo, Decl(typeParameterFixingWithConstraints.ts, 4, 16)) +>foo : Symbol(IFoo.foo, Decl(typeParameterFixingWithConstraints.ts, 4, 16)) >TBar : Symbol(TBar, Decl(typeParameterFixingWithConstraints.ts, 5, 8)) >IBar : Symbol(IBar, Decl(typeParameterFixingWithConstraints.ts, 0, 0)) >bar : Symbol(bar, Decl(typeParameterFixingWithConstraints.ts, 5, 27)) diff --git a/tests/baselines/reference/typeParameterFixingWithContextSensitiveArguments.symbols b/tests/baselines/reference/typeParameterFixingWithContextSensitiveArguments.symbols index fcf8fcb8dc4..d5dad41b449 100644 --- a/tests/baselines/reference/typeParameterFixingWithContextSensitiveArguments.symbols +++ b/tests/baselines/reference/typeParameterFixingWithContextSensitiveArguments.symbols @@ -19,13 +19,13 @@ function f(y: T, f: (x: T) => U, x: T): [T, U] { return [y, f(x)]; } interface A { a: A; } >A : Symbol(A, Decl(typeParameterFixingWithContextSensitiveArguments.ts, 0, 74)) ->a : Symbol(a, Decl(typeParameterFixingWithContextSensitiveArguments.ts, 1, 13)) +>a : Symbol(A.a, Decl(typeParameterFixingWithContextSensitiveArguments.ts, 1, 13)) >A : Symbol(A, Decl(typeParameterFixingWithContextSensitiveArguments.ts, 0, 74)) interface B extends A { b; } >B : Symbol(B, Decl(typeParameterFixingWithContextSensitiveArguments.ts, 1, 21)) >A : Symbol(A, Decl(typeParameterFixingWithContextSensitiveArguments.ts, 0, 74)) ->b : Symbol(b, Decl(typeParameterFixingWithContextSensitiveArguments.ts, 2, 23)) +>b : Symbol(B.b, Decl(typeParameterFixingWithContextSensitiveArguments.ts, 2, 23)) var a: A, b: B; >a : Symbol(a, Decl(typeParameterFixingWithContextSensitiveArguments.ts, 4, 3)) diff --git a/tests/baselines/reference/typeParameterFixingWithContextSensitiveArguments4.symbols b/tests/baselines/reference/typeParameterFixingWithContextSensitiveArguments4.symbols index d8f7abea606..1e50e4a18e3 100644 --- a/tests/baselines/reference/typeParameterFixingWithContextSensitiveArguments4.symbols +++ b/tests/baselines/reference/typeParameterFixingWithContextSensitiveArguments4.symbols @@ -23,13 +23,13 @@ function f(y: T, y1: U, p: (z: U) => T, p1: (x: T) => U): [T, U] { return interface A { a: A; } >A : Symbol(A, Decl(typeParameterFixingWithContextSensitiveArguments4.ts, 0, 93)) ->a : Symbol(a, Decl(typeParameterFixingWithContextSensitiveArguments4.ts, 1, 13)) +>a : Symbol(A.a, Decl(typeParameterFixingWithContextSensitiveArguments4.ts, 1, 13)) >A : Symbol(A, Decl(typeParameterFixingWithContextSensitiveArguments4.ts, 0, 93)) interface B extends A { b; } >B : Symbol(B, Decl(typeParameterFixingWithContextSensitiveArguments4.ts, 1, 21)) >A : Symbol(A, Decl(typeParameterFixingWithContextSensitiveArguments4.ts, 0, 93)) ->b : Symbol(b, Decl(typeParameterFixingWithContextSensitiveArguments4.ts, 2, 23)) +>b : Symbol(B.b, Decl(typeParameterFixingWithContextSensitiveArguments4.ts, 2, 23)) var a: A, b: B; >a : Symbol(a, Decl(typeParameterFixingWithContextSensitiveArguments4.ts, 4, 3)) diff --git a/tests/baselines/reference/typeParameterFixingWithContextSensitiveArguments5.symbols b/tests/baselines/reference/typeParameterFixingWithContextSensitiveArguments5.symbols index 5ba8aee8dba..1f9711a19ab 100644 --- a/tests/baselines/reference/typeParameterFixingWithContextSensitiveArguments5.symbols +++ b/tests/baselines/reference/typeParameterFixingWithContextSensitiveArguments5.symbols @@ -23,13 +23,13 @@ function f(t1: T, u1: U, pf1: (u2: U) => T, pf2: (t2: T) => U): [T, U] { r interface A { a: A; } >A : Symbol(A, Decl(typeParameterFixingWithContextSensitiveArguments5.ts, 0, 102)) ->a : Symbol(a, Decl(typeParameterFixingWithContextSensitiveArguments5.ts, 1, 13)) +>a : Symbol(A.a, Decl(typeParameterFixingWithContextSensitiveArguments5.ts, 1, 13)) >A : Symbol(A, Decl(typeParameterFixingWithContextSensitiveArguments5.ts, 0, 102)) interface B extends A { b: any; } >B : Symbol(B, Decl(typeParameterFixingWithContextSensitiveArguments5.ts, 1, 21)) >A : Symbol(A, Decl(typeParameterFixingWithContextSensitiveArguments5.ts, 0, 102)) ->b : Symbol(b, Decl(typeParameterFixingWithContextSensitiveArguments5.ts, 2, 23)) +>b : Symbol(B.b, Decl(typeParameterFixingWithContextSensitiveArguments5.ts, 2, 23)) var a: A, b: B; >a : Symbol(a, Decl(typeParameterFixingWithContextSensitiveArguments5.ts, 4, 3)) diff --git a/tests/baselines/reference/typeParameterOrderReversal.symbols b/tests/baselines/reference/typeParameterOrderReversal.symbols index 6b17ac1da55..1c8fbad5550 100644 --- a/tests/baselines/reference/typeParameterOrderReversal.symbols +++ b/tests/baselines/reference/typeParameterOrderReversal.symbols @@ -4,7 +4,7 @@ interface X { >T : Symbol(T, Decl(typeParameterOrderReversal.ts, 0, 12)) n: T; ->n : Symbol(n, Decl(typeParameterOrderReversal.ts, 0, 16)) +>n : Symbol(X.n, Decl(typeParameterOrderReversal.ts, 0, 16)) >T : Symbol(T, Decl(typeParameterOrderReversal.ts, 0, 12)) } diff --git a/tests/baselines/reference/typeParameterUsedAsConstraint.symbols b/tests/baselines/reference/typeParameterUsedAsConstraint.symbols index 0b031742e75..2ab34915a65 100644 --- a/tests/baselines/reference/typeParameterUsedAsConstraint.symbols +++ b/tests/baselines/reference/typeParameterUsedAsConstraint.symbols @@ -14,7 +14,7 @@ class C2 { } class C3 { } >C3 : Symbol(C3, Decl(typeParameterUsedAsConstraint.ts, 1, 28)) >T : Symbol(T, Decl(typeParameterUsedAsConstraint.ts, 2, 9)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 2, 24)) >T : Symbol(T, Decl(typeParameterUsedAsConstraint.ts, 2, 9)) @@ -23,7 +23,7 @@ class C4 { } >T : Symbol(T, Decl(typeParameterUsedAsConstraint.ts, 3, 9)) >U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 3, 21)) >U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 3, 21)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) class C5 { } >C5 : Symbol(C5, Decl(typeParameterUsedAsConstraint.ts, 3, 41)) @@ -56,7 +56,7 @@ interface I2 { } interface I3 { } >I3 : Symbol(I3, Decl(typeParameterUsedAsConstraint.ts, 8, 32)) >T : Symbol(T, Decl(typeParameterUsedAsConstraint.ts, 9, 13)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 9, 28)) >T : Symbol(T, Decl(typeParameterUsedAsConstraint.ts, 9, 13)) @@ -65,7 +65,7 @@ interface I4 { } >T : Symbol(T, Decl(typeParameterUsedAsConstraint.ts, 10, 13)) >U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 10, 25)) >U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 10, 25)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) interface I5 { } >I5 : Symbol(I5, Decl(typeParameterUsedAsConstraint.ts, 10, 45)) @@ -98,7 +98,7 @@ function f2() { } function f3() { } >f3 : Symbol(f3, Decl(typeParameterUsedAsConstraint.ts, 15, 33)) >T : Symbol(T, Decl(typeParameterUsedAsConstraint.ts, 16, 12)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 16, 27)) >T : Symbol(T, Decl(typeParameterUsedAsConstraint.ts, 16, 12)) @@ -107,7 +107,7 @@ function f4() { } >T : Symbol(T, Decl(typeParameterUsedAsConstraint.ts, 17, 12)) >U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 17, 24)) >U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 17, 24)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function f5() { } >f5 : Symbol(f5, Decl(typeParameterUsedAsConstraint.ts, 17, 46)) @@ -140,7 +140,7 @@ var e2 = () => { } var e3 = () => { } >e3 : Symbol(e3, Decl(typeParameterUsedAsConstraint.ts, 23, 3)) >T : Symbol(T, Decl(typeParameterUsedAsConstraint.ts, 23, 10)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 23, 25)) >T : Symbol(T, Decl(typeParameterUsedAsConstraint.ts, 23, 10)) @@ -149,7 +149,7 @@ var e4 = () => { } >T : Symbol(T, Decl(typeParameterUsedAsConstraint.ts, 24, 10)) >U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 24, 22)) >U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 24, 22)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) var e5 = () => { } >e5 : Symbol(e5, Decl(typeParameterUsedAsConstraint.ts, 25, 3)) @@ -182,7 +182,7 @@ var a2: { (): void } var a3: { (): void } >a3 : Symbol(a3, Decl(typeParameterUsedAsConstraint.ts, 30, 3)) >T : Symbol(T, Decl(typeParameterUsedAsConstraint.ts, 30, 11)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 30, 26)) >T : Symbol(T, Decl(typeParameterUsedAsConstraint.ts, 30, 11)) @@ -191,7 +191,7 @@ var a4: { (): void } >T : Symbol(T, Decl(typeParameterUsedAsConstraint.ts, 31, 11)) >U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 31, 23)) >U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 31, 23)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) var a5: { (): void } >a5 : Symbol(a5, Decl(typeParameterUsedAsConstraint.ts, 32, 3)) diff --git a/tests/baselines/reference/typeParameterUsedAsTypeParameterConstraint3.symbols b/tests/baselines/reference/typeParameterUsedAsTypeParameterConstraint3.symbols index 5142fc44af9..afd41a6ee94 100644 --- a/tests/baselines/reference/typeParameterUsedAsTypeParameterConstraint3.symbols +++ b/tests/baselines/reference/typeParameterUsedAsTypeParameterConstraint3.symbols @@ -29,19 +29,19 @@ interface I { >V : Symbol(V, Decl(typeParameterUsedAsTypeParameterConstraint3.ts, 23, 17)) x: T; ->x : Symbol(x, Decl(typeParameterUsedAsTypeParameterConstraint3.ts, 23, 22)) +>x : Symbol(I.x, Decl(typeParameterUsedAsTypeParameterConstraint3.ts, 23, 22)) >T : Symbol(T, Decl(typeParameterUsedAsTypeParameterConstraint3.ts, 23, 12)) y: U; ->y : Symbol(y, Decl(typeParameterUsedAsTypeParameterConstraint3.ts, 24, 9)) +>y : Symbol(I.y, Decl(typeParameterUsedAsTypeParameterConstraint3.ts, 24, 9)) >U : Symbol(U, Decl(typeParameterUsedAsTypeParameterConstraint3.ts, 23, 14)) z: V; ->z : Symbol(z, Decl(typeParameterUsedAsTypeParameterConstraint3.ts, 25, 9)) +>z : Symbol(I.z, Decl(typeParameterUsedAsTypeParameterConstraint3.ts, 25, 9)) >V : Symbol(V, Decl(typeParameterUsedAsTypeParameterConstraint3.ts, 23, 17)) foo(x: W): T; ->foo : Symbol(foo, Decl(typeParameterUsedAsTypeParameterConstraint3.ts, 26, 9)) +>foo : Symbol(I.foo, Decl(typeParameterUsedAsTypeParameterConstraint3.ts, 26, 9)) >W : Symbol(W, Decl(typeParameterUsedAsTypeParameterConstraint3.ts, 27, 8)) >V : Symbol(V, Decl(typeParameterUsedAsTypeParameterConstraint3.ts, 23, 17)) >x : Symbol(x, Decl(typeParameterUsedAsTypeParameterConstraint3.ts, 27, 21)) @@ -56,19 +56,19 @@ interface I2 { >U : Symbol(U, Decl(typeParameterUsedAsTypeParameterConstraint3.ts, 30, 18)) x: T; ->x : Symbol(x, Decl(typeParameterUsedAsTypeParameterConstraint3.ts, 30, 23)) +>x : Symbol(I2.x, Decl(typeParameterUsedAsTypeParameterConstraint3.ts, 30, 23)) >T : Symbol(T, Decl(typeParameterUsedAsTypeParameterConstraint3.ts, 30, 15)) y: U; ->y : Symbol(y, Decl(typeParameterUsedAsTypeParameterConstraint3.ts, 31, 9)) +>y : Symbol(I2.y, Decl(typeParameterUsedAsTypeParameterConstraint3.ts, 31, 9)) >U : Symbol(U, Decl(typeParameterUsedAsTypeParameterConstraint3.ts, 30, 18)) z: V; ->z : Symbol(z, Decl(typeParameterUsedAsTypeParameterConstraint3.ts, 32, 9)) +>z : Symbol(I2.z, Decl(typeParameterUsedAsTypeParameterConstraint3.ts, 32, 9)) >V : Symbol(V, Decl(typeParameterUsedAsTypeParameterConstraint3.ts, 30, 13)) foo(x: W): T; ->foo : Symbol(foo, Decl(typeParameterUsedAsTypeParameterConstraint3.ts, 33, 9)) +>foo : Symbol(I2.foo, Decl(typeParameterUsedAsTypeParameterConstraint3.ts, 33, 9)) >W : Symbol(W, Decl(typeParameterUsedAsTypeParameterConstraint3.ts, 34, 8)) >V : Symbol(V, Decl(typeParameterUsedAsTypeParameterConstraint3.ts, 30, 13)) >x : Symbol(x, Decl(typeParameterUsedAsTypeParameterConstraint3.ts, 34, 21)) diff --git a/tests/baselines/reference/typeParametersAreIdenticalToThemselves.symbols b/tests/baselines/reference/typeParametersAreIdenticalToThemselves.symbols index e50bce9e043..39479bdba90 100644 --- a/tests/baselines/reference/typeParametersAreIdenticalToThemselves.symbols +++ b/tests/baselines/reference/typeParametersAreIdenticalToThemselves.symbols @@ -85,22 +85,22 @@ class C { >T : Symbol(T, Decl(typeParametersAreIdenticalToThemselves.ts, 20, 8)) foo1(x: T); ->foo1 : Symbol(foo1, Decl(typeParametersAreIdenticalToThemselves.ts, 20, 12), Decl(typeParametersAreIdenticalToThemselves.ts, 21, 15), Decl(typeParametersAreIdenticalToThemselves.ts, 22, 15)) +>foo1 : Symbol(C.foo1, Decl(typeParametersAreIdenticalToThemselves.ts, 20, 12), Decl(typeParametersAreIdenticalToThemselves.ts, 21, 15), Decl(typeParametersAreIdenticalToThemselves.ts, 22, 15)) >x : Symbol(x, Decl(typeParametersAreIdenticalToThemselves.ts, 21, 9)) >T : Symbol(T, Decl(typeParametersAreIdenticalToThemselves.ts, 20, 8)) foo1(x: T); // error, same T ->foo1 : Symbol(foo1, Decl(typeParametersAreIdenticalToThemselves.ts, 20, 12), Decl(typeParametersAreIdenticalToThemselves.ts, 21, 15), Decl(typeParametersAreIdenticalToThemselves.ts, 22, 15)) +>foo1 : Symbol(C.foo1, Decl(typeParametersAreIdenticalToThemselves.ts, 20, 12), Decl(typeParametersAreIdenticalToThemselves.ts, 21, 15), Decl(typeParametersAreIdenticalToThemselves.ts, 22, 15)) >x : Symbol(x, Decl(typeParametersAreIdenticalToThemselves.ts, 22, 9)) >T : Symbol(T, Decl(typeParametersAreIdenticalToThemselves.ts, 20, 8)) foo1(x: T) { } ->foo1 : Symbol(foo1, Decl(typeParametersAreIdenticalToThemselves.ts, 20, 12), Decl(typeParametersAreIdenticalToThemselves.ts, 21, 15), Decl(typeParametersAreIdenticalToThemselves.ts, 22, 15)) +>foo1 : Symbol(C.foo1, Decl(typeParametersAreIdenticalToThemselves.ts, 20, 12), Decl(typeParametersAreIdenticalToThemselves.ts, 21, 15), Decl(typeParametersAreIdenticalToThemselves.ts, 22, 15)) >x : Symbol(x, Decl(typeParametersAreIdenticalToThemselves.ts, 23, 9)) >T : Symbol(T, Decl(typeParametersAreIdenticalToThemselves.ts, 20, 8)) foo2(a: T, x: U); ->foo2 : Symbol(foo2, Decl(typeParametersAreIdenticalToThemselves.ts, 23, 18), Decl(typeParametersAreIdenticalToThemselves.ts, 25, 24), Decl(typeParametersAreIdenticalToThemselves.ts, 26, 24)) +>foo2 : Symbol(C.foo2, Decl(typeParametersAreIdenticalToThemselves.ts, 23, 18), Decl(typeParametersAreIdenticalToThemselves.ts, 25, 24), Decl(typeParametersAreIdenticalToThemselves.ts, 26, 24)) >U : Symbol(U, Decl(typeParametersAreIdenticalToThemselves.ts, 25, 9)) >a : Symbol(a, Decl(typeParametersAreIdenticalToThemselves.ts, 25, 12)) >T : Symbol(T, Decl(typeParametersAreIdenticalToThemselves.ts, 20, 8)) @@ -108,7 +108,7 @@ class C { >U : Symbol(U, Decl(typeParametersAreIdenticalToThemselves.ts, 25, 9)) foo2(a: T, x: U); // no error, different declaration for each U ->foo2 : Symbol(foo2, Decl(typeParametersAreIdenticalToThemselves.ts, 23, 18), Decl(typeParametersAreIdenticalToThemselves.ts, 25, 24), Decl(typeParametersAreIdenticalToThemselves.ts, 26, 24)) +>foo2 : Symbol(C.foo2, Decl(typeParametersAreIdenticalToThemselves.ts, 23, 18), Decl(typeParametersAreIdenticalToThemselves.ts, 25, 24), Decl(typeParametersAreIdenticalToThemselves.ts, 26, 24)) >U : Symbol(U, Decl(typeParametersAreIdenticalToThemselves.ts, 26, 9)) >a : Symbol(a, Decl(typeParametersAreIdenticalToThemselves.ts, 26, 12)) >T : Symbol(T, Decl(typeParametersAreIdenticalToThemselves.ts, 20, 8)) @@ -116,7 +116,7 @@ class C { >U : Symbol(U, Decl(typeParametersAreIdenticalToThemselves.ts, 26, 9)) foo2(a: T, x: U) { } ->foo2 : Symbol(foo2, Decl(typeParametersAreIdenticalToThemselves.ts, 23, 18), Decl(typeParametersAreIdenticalToThemselves.ts, 25, 24), Decl(typeParametersAreIdenticalToThemselves.ts, 26, 24)) +>foo2 : Symbol(C.foo2, Decl(typeParametersAreIdenticalToThemselves.ts, 23, 18), Decl(typeParametersAreIdenticalToThemselves.ts, 25, 24), Decl(typeParametersAreIdenticalToThemselves.ts, 26, 24)) >U : Symbol(U, Decl(typeParametersAreIdenticalToThemselves.ts, 27, 9)) >a : Symbol(a, Decl(typeParametersAreIdenticalToThemselves.ts, 27, 12)) >T : Symbol(T, Decl(typeParametersAreIdenticalToThemselves.ts, 20, 8)) @@ -124,41 +124,41 @@ class C { >U : Symbol(U, Decl(typeParametersAreIdenticalToThemselves.ts, 27, 9)) foo3(x: T); ->foo3 : Symbol(foo3, Decl(typeParametersAreIdenticalToThemselves.ts, 27, 27), Decl(typeParametersAreIdenticalToThemselves.ts, 29, 18), Decl(typeParametersAreIdenticalToThemselves.ts, 30, 18)) +>foo3 : Symbol(C.foo3, Decl(typeParametersAreIdenticalToThemselves.ts, 27, 27), Decl(typeParametersAreIdenticalToThemselves.ts, 29, 18), Decl(typeParametersAreIdenticalToThemselves.ts, 30, 18)) >T : Symbol(T, Decl(typeParametersAreIdenticalToThemselves.ts, 29, 9)) >x : Symbol(x, Decl(typeParametersAreIdenticalToThemselves.ts, 29, 12)) >T : Symbol(T, Decl(typeParametersAreIdenticalToThemselves.ts, 29, 9)) foo3(x: T); // no error, different declaration for each T ->foo3 : Symbol(foo3, Decl(typeParametersAreIdenticalToThemselves.ts, 27, 27), Decl(typeParametersAreIdenticalToThemselves.ts, 29, 18), Decl(typeParametersAreIdenticalToThemselves.ts, 30, 18)) +>foo3 : Symbol(C.foo3, Decl(typeParametersAreIdenticalToThemselves.ts, 27, 27), Decl(typeParametersAreIdenticalToThemselves.ts, 29, 18), Decl(typeParametersAreIdenticalToThemselves.ts, 30, 18)) >T : Symbol(T, Decl(typeParametersAreIdenticalToThemselves.ts, 30, 9)) >x : Symbol(x, Decl(typeParametersAreIdenticalToThemselves.ts, 30, 12)) >T : Symbol(T, Decl(typeParametersAreIdenticalToThemselves.ts, 30, 9)) foo3(x: T) { } ->foo3 : Symbol(foo3, Decl(typeParametersAreIdenticalToThemselves.ts, 27, 27), Decl(typeParametersAreIdenticalToThemselves.ts, 29, 18), Decl(typeParametersAreIdenticalToThemselves.ts, 30, 18)) +>foo3 : Symbol(C.foo3, Decl(typeParametersAreIdenticalToThemselves.ts, 27, 27), Decl(typeParametersAreIdenticalToThemselves.ts, 29, 18), Decl(typeParametersAreIdenticalToThemselves.ts, 30, 18)) >T : Symbol(T, Decl(typeParametersAreIdenticalToThemselves.ts, 31, 9)) >x : Symbol(x, Decl(typeParametersAreIdenticalToThemselves.ts, 31, 12)) >T : Symbol(T, Decl(typeParametersAreIdenticalToThemselves.ts, 31, 9)) foo4(x: T); ->foo4 : Symbol(foo4, Decl(typeParametersAreIdenticalToThemselves.ts, 31, 21), Decl(typeParametersAreIdenticalToThemselves.ts, 33, 31), Decl(typeParametersAreIdenticalToThemselves.ts, 34, 31)) +>foo4 : Symbol(C.foo4, Decl(typeParametersAreIdenticalToThemselves.ts, 31, 21), Decl(typeParametersAreIdenticalToThemselves.ts, 33, 31), Decl(typeParametersAreIdenticalToThemselves.ts, 34, 31)) >T : Symbol(T, Decl(typeParametersAreIdenticalToThemselves.ts, 33, 9)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >x : Symbol(x, Decl(typeParametersAreIdenticalToThemselves.ts, 33, 25)) >T : Symbol(T, Decl(typeParametersAreIdenticalToThemselves.ts, 33, 9)) foo4(x: T); // no error, different declaration for each T ->foo4 : Symbol(foo4, Decl(typeParametersAreIdenticalToThemselves.ts, 31, 21), Decl(typeParametersAreIdenticalToThemselves.ts, 33, 31), Decl(typeParametersAreIdenticalToThemselves.ts, 34, 31)) +>foo4 : Symbol(C.foo4, Decl(typeParametersAreIdenticalToThemselves.ts, 31, 21), Decl(typeParametersAreIdenticalToThemselves.ts, 33, 31), Decl(typeParametersAreIdenticalToThemselves.ts, 34, 31)) >T : Symbol(T, Decl(typeParametersAreIdenticalToThemselves.ts, 34, 9)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >x : Symbol(x, Decl(typeParametersAreIdenticalToThemselves.ts, 34, 25)) >T : Symbol(T, Decl(typeParametersAreIdenticalToThemselves.ts, 34, 9)) foo4(x: T) { } ->foo4 : Symbol(foo4, Decl(typeParametersAreIdenticalToThemselves.ts, 31, 21), Decl(typeParametersAreIdenticalToThemselves.ts, 33, 31), Decl(typeParametersAreIdenticalToThemselves.ts, 34, 31)) +>foo4 : Symbol(C.foo4, Decl(typeParametersAreIdenticalToThemselves.ts, 31, 21), Decl(typeParametersAreIdenticalToThemselves.ts, 33, 31), Decl(typeParametersAreIdenticalToThemselves.ts, 34, 31)) >T : Symbol(T, Decl(typeParametersAreIdenticalToThemselves.ts, 35, 9)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >x : Symbol(x, Decl(typeParametersAreIdenticalToThemselves.ts, 35, 25)) >T : Symbol(T, Decl(typeParametersAreIdenticalToThemselves.ts, 35, 9)) } @@ -166,25 +166,25 @@ class C { class C2 { >C2 : Symbol(C2, Decl(typeParametersAreIdenticalToThemselves.ts, 36, 1)) >T : Symbol(T, Decl(typeParametersAreIdenticalToThemselves.ts, 38, 9)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) foo1(x: T); ->foo1 : Symbol(foo1, Decl(typeParametersAreIdenticalToThemselves.ts, 38, 26), Decl(typeParametersAreIdenticalToThemselves.ts, 39, 15), Decl(typeParametersAreIdenticalToThemselves.ts, 40, 15)) +>foo1 : Symbol(C2.foo1, Decl(typeParametersAreIdenticalToThemselves.ts, 38, 26), Decl(typeParametersAreIdenticalToThemselves.ts, 39, 15), Decl(typeParametersAreIdenticalToThemselves.ts, 40, 15)) >x : Symbol(x, Decl(typeParametersAreIdenticalToThemselves.ts, 39, 9)) >T : Symbol(T, Decl(typeParametersAreIdenticalToThemselves.ts, 38, 9)) foo1(x: T); // error, same T ->foo1 : Symbol(foo1, Decl(typeParametersAreIdenticalToThemselves.ts, 38, 26), Decl(typeParametersAreIdenticalToThemselves.ts, 39, 15), Decl(typeParametersAreIdenticalToThemselves.ts, 40, 15)) +>foo1 : Symbol(C2.foo1, Decl(typeParametersAreIdenticalToThemselves.ts, 38, 26), Decl(typeParametersAreIdenticalToThemselves.ts, 39, 15), Decl(typeParametersAreIdenticalToThemselves.ts, 40, 15)) >x : Symbol(x, Decl(typeParametersAreIdenticalToThemselves.ts, 40, 9)) >T : Symbol(T, Decl(typeParametersAreIdenticalToThemselves.ts, 38, 9)) foo1(x: T) { } ->foo1 : Symbol(foo1, Decl(typeParametersAreIdenticalToThemselves.ts, 38, 26), Decl(typeParametersAreIdenticalToThemselves.ts, 39, 15), Decl(typeParametersAreIdenticalToThemselves.ts, 40, 15)) +>foo1 : Symbol(C2.foo1, Decl(typeParametersAreIdenticalToThemselves.ts, 38, 26), Decl(typeParametersAreIdenticalToThemselves.ts, 39, 15), Decl(typeParametersAreIdenticalToThemselves.ts, 40, 15)) >x : Symbol(x, Decl(typeParametersAreIdenticalToThemselves.ts, 41, 9)) >T : Symbol(T, Decl(typeParametersAreIdenticalToThemselves.ts, 38, 9)) foo2(a: T, x: U); ->foo2 : Symbol(foo2, Decl(typeParametersAreIdenticalToThemselves.ts, 41, 18), Decl(typeParametersAreIdenticalToThemselves.ts, 43, 24), Decl(typeParametersAreIdenticalToThemselves.ts, 44, 24)) +>foo2 : Symbol(C2.foo2, Decl(typeParametersAreIdenticalToThemselves.ts, 41, 18), Decl(typeParametersAreIdenticalToThemselves.ts, 43, 24), Decl(typeParametersAreIdenticalToThemselves.ts, 44, 24)) >U : Symbol(U, Decl(typeParametersAreIdenticalToThemselves.ts, 43, 9)) >a : Symbol(a, Decl(typeParametersAreIdenticalToThemselves.ts, 43, 12)) >T : Symbol(T, Decl(typeParametersAreIdenticalToThemselves.ts, 38, 9)) @@ -192,7 +192,7 @@ class C2 { >U : Symbol(U, Decl(typeParametersAreIdenticalToThemselves.ts, 43, 9)) foo2(a: T, x: U); // no error, different declaration for each U ->foo2 : Symbol(foo2, Decl(typeParametersAreIdenticalToThemselves.ts, 41, 18), Decl(typeParametersAreIdenticalToThemselves.ts, 43, 24), Decl(typeParametersAreIdenticalToThemselves.ts, 44, 24)) +>foo2 : Symbol(C2.foo2, Decl(typeParametersAreIdenticalToThemselves.ts, 41, 18), Decl(typeParametersAreIdenticalToThemselves.ts, 43, 24), Decl(typeParametersAreIdenticalToThemselves.ts, 44, 24)) >U : Symbol(U, Decl(typeParametersAreIdenticalToThemselves.ts, 44, 9)) >a : Symbol(a, Decl(typeParametersAreIdenticalToThemselves.ts, 44, 12)) >T : Symbol(T, Decl(typeParametersAreIdenticalToThemselves.ts, 38, 9)) @@ -200,7 +200,7 @@ class C2 { >U : Symbol(U, Decl(typeParametersAreIdenticalToThemselves.ts, 44, 9)) foo2(a: T, x: U) { } ->foo2 : Symbol(foo2, Decl(typeParametersAreIdenticalToThemselves.ts, 41, 18), Decl(typeParametersAreIdenticalToThemselves.ts, 43, 24), Decl(typeParametersAreIdenticalToThemselves.ts, 44, 24)) +>foo2 : Symbol(C2.foo2, Decl(typeParametersAreIdenticalToThemselves.ts, 41, 18), Decl(typeParametersAreIdenticalToThemselves.ts, 43, 24), Decl(typeParametersAreIdenticalToThemselves.ts, 44, 24)) >U : Symbol(U, Decl(typeParametersAreIdenticalToThemselves.ts, 45, 9)) >a : Symbol(a, Decl(typeParametersAreIdenticalToThemselves.ts, 45, 12)) >T : Symbol(T, Decl(typeParametersAreIdenticalToThemselves.ts, 38, 9)) @@ -208,19 +208,19 @@ class C2 { >U : Symbol(U, Decl(typeParametersAreIdenticalToThemselves.ts, 45, 9)) foo3(x: T); ->foo3 : Symbol(foo3, Decl(typeParametersAreIdenticalToThemselves.ts, 45, 27), Decl(typeParametersAreIdenticalToThemselves.ts, 47, 18), Decl(typeParametersAreIdenticalToThemselves.ts, 48, 18)) +>foo3 : Symbol(C2.foo3, Decl(typeParametersAreIdenticalToThemselves.ts, 45, 27), Decl(typeParametersAreIdenticalToThemselves.ts, 47, 18), Decl(typeParametersAreIdenticalToThemselves.ts, 48, 18)) >T : Symbol(T, Decl(typeParametersAreIdenticalToThemselves.ts, 47, 9)) >x : Symbol(x, Decl(typeParametersAreIdenticalToThemselves.ts, 47, 12)) >T : Symbol(T, Decl(typeParametersAreIdenticalToThemselves.ts, 47, 9)) foo3(x: T); // no error, different declaration for each T ->foo3 : Symbol(foo3, Decl(typeParametersAreIdenticalToThemselves.ts, 45, 27), Decl(typeParametersAreIdenticalToThemselves.ts, 47, 18), Decl(typeParametersAreIdenticalToThemselves.ts, 48, 18)) +>foo3 : Symbol(C2.foo3, Decl(typeParametersAreIdenticalToThemselves.ts, 45, 27), Decl(typeParametersAreIdenticalToThemselves.ts, 47, 18), Decl(typeParametersAreIdenticalToThemselves.ts, 48, 18)) >T : Symbol(T, Decl(typeParametersAreIdenticalToThemselves.ts, 48, 9)) >x : Symbol(x, Decl(typeParametersAreIdenticalToThemselves.ts, 48, 12)) >T : Symbol(T, Decl(typeParametersAreIdenticalToThemselves.ts, 48, 9)) foo3(x: T) { } ->foo3 : Symbol(foo3, Decl(typeParametersAreIdenticalToThemselves.ts, 45, 27), Decl(typeParametersAreIdenticalToThemselves.ts, 47, 18), Decl(typeParametersAreIdenticalToThemselves.ts, 48, 18)) +>foo3 : Symbol(C2.foo3, Decl(typeParametersAreIdenticalToThemselves.ts, 45, 27), Decl(typeParametersAreIdenticalToThemselves.ts, 47, 18), Decl(typeParametersAreIdenticalToThemselves.ts, 48, 18)) >T : Symbol(T, Decl(typeParametersAreIdenticalToThemselves.ts, 49, 9)) >x : Symbol(x, Decl(typeParametersAreIdenticalToThemselves.ts, 49, 12)) >T : Symbol(T, Decl(typeParametersAreIdenticalToThemselves.ts, 49, 9)) @@ -231,17 +231,17 @@ interface I { >T : Symbol(T, Decl(typeParametersAreIdenticalToThemselves.ts, 52, 12)) foo1(x: T); ->foo1 : Symbol(foo1, Decl(typeParametersAreIdenticalToThemselves.ts, 52, 16), Decl(typeParametersAreIdenticalToThemselves.ts, 53, 15)) +>foo1 : Symbol(I.foo1, Decl(typeParametersAreIdenticalToThemselves.ts, 52, 16), Decl(typeParametersAreIdenticalToThemselves.ts, 53, 15)) >x : Symbol(x, Decl(typeParametersAreIdenticalToThemselves.ts, 53, 9)) >T : Symbol(T, Decl(typeParametersAreIdenticalToThemselves.ts, 52, 12)) foo1(x: T); // error, same T ->foo1 : Symbol(foo1, Decl(typeParametersAreIdenticalToThemselves.ts, 52, 16), Decl(typeParametersAreIdenticalToThemselves.ts, 53, 15)) +>foo1 : Symbol(I.foo1, Decl(typeParametersAreIdenticalToThemselves.ts, 52, 16), Decl(typeParametersAreIdenticalToThemselves.ts, 53, 15)) >x : Symbol(x, Decl(typeParametersAreIdenticalToThemselves.ts, 54, 9)) >T : Symbol(T, Decl(typeParametersAreIdenticalToThemselves.ts, 52, 12)) foo2(a: T, x: U); ->foo2 : Symbol(foo2, Decl(typeParametersAreIdenticalToThemselves.ts, 54, 15), Decl(typeParametersAreIdenticalToThemselves.ts, 56, 24)) +>foo2 : Symbol(I.foo2, Decl(typeParametersAreIdenticalToThemselves.ts, 54, 15), Decl(typeParametersAreIdenticalToThemselves.ts, 56, 24)) >U : Symbol(U, Decl(typeParametersAreIdenticalToThemselves.ts, 56, 9)) >a : Symbol(a, Decl(typeParametersAreIdenticalToThemselves.ts, 56, 12)) >T : Symbol(T, Decl(typeParametersAreIdenticalToThemselves.ts, 52, 12)) @@ -249,7 +249,7 @@ interface I { >U : Symbol(U, Decl(typeParametersAreIdenticalToThemselves.ts, 56, 9)) foo2(a: T, x: U); // no error, different declaration for each U ->foo2 : Symbol(foo2, Decl(typeParametersAreIdenticalToThemselves.ts, 54, 15), Decl(typeParametersAreIdenticalToThemselves.ts, 56, 24)) +>foo2 : Symbol(I.foo2, Decl(typeParametersAreIdenticalToThemselves.ts, 54, 15), Decl(typeParametersAreIdenticalToThemselves.ts, 56, 24)) >U : Symbol(U, Decl(typeParametersAreIdenticalToThemselves.ts, 57, 9)) >a : Symbol(a, Decl(typeParametersAreIdenticalToThemselves.ts, 57, 12)) >T : Symbol(T, Decl(typeParametersAreIdenticalToThemselves.ts, 52, 12)) @@ -257,28 +257,28 @@ interface I { >U : Symbol(U, Decl(typeParametersAreIdenticalToThemselves.ts, 57, 9)) foo3(x: T); ->foo3 : Symbol(foo3, Decl(typeParametersAreIdenticalToThemselves.ts, 57, 24), Decl(typeParametersAreIdenticalToThemselves.ts, 59, 18)) +>foo3 : Symbol(I.foo3, Decl(typeParametersAreIdenticalToThemselves.ts, 57, 24), Decl(typeParametersAreIdenticalToThemselves.ts, 59, 18)) >T : Symbol(T, Decl(typeParametersAreIdenticalToThemselves.ts, 59, 9)) >x : Symbol(x, Decl(typeParametersAreIdenticalToThemselves.ts, 59, 12)) >T : Symbol(T, Decl(typeParametersAreIdenticalToThemselves.ts, 59, 9)) foo3(x: T); // no error, different declaration for each T ->foo3 : Symbol(foo3, Decl(typeParametersAreIdenticalToThemselves.ts, 57, 24), Decl(typeParametersAreIdenticalToThemselves.ts, 59, 18)) +>foo3 : Symbol(I.foo3, Decl(typeParametersAreIdenticalToThemselves.ts, 57, 24), Decl(typeParametersAreIdenticalToThemselves.ts, 59, 18)) >T : Symbol(T, Decl(typeParametersAreIdenticalToThemselves.ts, 60, 9)) >x : Symbol(x, Decl(typeParametersAreIdenticalToThemselves.ts, 60, 12)) >T : Symbol(T, Decl(typeParametersAreIdenticalToThemselves.ts, 60, 9)) foo4(x: T); ->foo4 : Symbol(foo4, Decl(typeParametersAreIdenticalToThemselves.ts, 60, 18), Decl(typeParametersAreIdenticalToThemselves.ts, 62, 31)) +>foo4 : Symbol(I.foo4, Decl(typeParametersAreIdenticalToThemselves.ts, 60, 18), Decl(typeParametersAreIdenticalToThemselves.ts, 62, 31)) >T : Symbol(T, Decl(typeParametersAreIdenticalToThemselves.ts, 62, 9)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >x : Symbol(x, Decl(typeParametersAreIdenticalToThemselves.ts, 62, 25)) >T : Symbol(T, Decl(typeParametersAreIdenticalToThemselves.ts, 62, 9)) foo4(x: T); // no error, different declaration for each T ->foo4 : Symbol(foo4, Decl(typeParametersAreIdenticalToThemselves.ts, 60, 18), Decl(typeParametersAreIdenticalToThemselves.ts, 62, 31)) +>foo4 : Symbol(I.foo4, Decl(typeParametersAreIdenticalToThemselves.ts, 60, 18), Decl(typeParametersAreIdenticalToThemselves.ts, 62, 31)) >T : Symbol(T, Decl(typeParametersAreIdenticalToThemselves.ts, 63, 9)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >x : Symbol(x, Decl(typeParametersAreIdenticalToThemselves.ts, 63, 25)) >T : Symbol(T, Decl(typeParametersAreIdenticalToThemselves.ts, 63, 9)) } @@ -286,20 +286,20 @@ interface I { interface I2 { >I2 : Symbol(I2, Decl(typeParametersAreIdenticalToThemselves.ts, 64, 1)) >T : Symbol(T, Decl(typeParametersAreIdenticalToThemselves.ts, 66, 13)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) foo1(x: T); ->foo1 : Symbol(foo1, Decl(typeParametersAreIdenticalToThemselves.ts, 66, 30), Decl(typeParametersAreIdenticalToThemselves.ts, 67, 15)) +>foo1 : Symbol(I2.foo1, Decl(typeParametersAreIdenticalToThemselves.ts, 66, 30), Decl(typeParametersAreIdenticalToThemselves.ts, 67, 15)) >x : Symbol(x, Decl(typeParametersAreIdenticalToThemselves.ts, 67, 9)) >T : Symbol(T, Decl(typeParametersAreIdenticalToThemselves.ts, 66, 13)) foo1(x: T); // error, same T ->foo1 : Symbol(foo1, Decl(typeParametersAreIdenticalToThemselves.ts, 66, 30), Decl(typeParametersAreIdenticalToThemselves.ts, 67, 15)) +>foo1 : Symbol(I2.foo1, Decl(typeParametersAreIdenticalToThemselves.ts, 66, 30), Decl(typeParametersAreIdenticalToThemselves.ts, 67, 15)) >x : Symbol(x, Decl(typeParametersAreIdenticalToThemselves.ts, 68, 9)) >T : Symbol(T, Decl(typeParametersAreIdenticalToThemselves.ts, 66, 13)) foo2(a: T, x: U); ->foo2 : Symbol(foo2, Decl(typeParametersAreIdenticalToThemselves.ts, 68, 15), Decl(typeParametersAreIdenticalToThemselves.ts, 70, 24)) +>foo2 : Symbol(I2.foo2, Decl(typeParametersAreIdenticalToThemselves.ts, 68, 15), Decl(typeParametersAreIdenticalToThemselves.ts, 70, 24)) >U : Symbol(U, Decl(typeParametersAreIdenticalToThemselves.ts, 70, 9)) >a : Symbol(a, Decl(typeParametersAreIdenticalToThemselves.ts, 70, 12)) >T : Symbol(T, Decl(typeParametersAreIdenticalToThemselves.ts, 66, 13)) @@ -307,7 +307,7 @@ interface I2 { >U : Symbol(U, Decl(typeParametersAreIdenticalToThemselves.ts, 70, 9)) foo2(a: T, x: U); // no error, different declaration for each U ->foo2 : Symbol(foo2, Decl(typeParametersAreIdenticalToThemselves.ts, 68, 15), Decl(typeParametersAreIdenticalToThemselves.ts, 70, 24)) +>foo2 : Symbol(I2.foo2, Decl(typeParametersAreIdenticalToThemselves.ts, 68, 15), Decl(typeParametersAreIdenticalToThemselves.ts, 70, 24)) >U : Symbol(U, Decl(typeParametersAreIdenticalToThemselves.ts, 71, 9)) >a : Symbol(a, Decl(typeParametersAreIdenticalToThemselves.ts, 71, 12)) >T : Symbol(T, Decl(typeParametersAreIdenticalToThemselves.ts, 66, 13)) @@ -315,13 +315,13 @@ interface I2 { >U : Symbol(U, Decl(typeParametersAreIdenticalToThemselves.ts, 71, 9)) foo3(x: T); ->foo3 : Symbol(foo3, Decl(typeParametersAreIdenticalToThemselves.ts, 71, 24), Decl(typeParametersAreIdenticalToThemselves.ts, 73, 18)) +>foo3 : Symbol(I2.foo3, Decl(typeParametersAreIdenticalToThemselves.ts, 71, 24), Decl(typeParametersAreIdenticalToThemselves.ts, 73, 18)) >T : Symbol(T, Decl(typeParametersAreIdenticalToThemselves.ts, 73, 9)) >x : Symbol(x, Decl(typeParametersAreIdenticalToThemselves.ts, 73, 12)) >T : Symbol(T, Decl(typeParametersAreIdenticalToThemselves.ts, 73, 9)) foo3(x: T); // no error, different declaration for each T ->foo3 : Symbol(foo3, Decl(typeParametersAreIdenticalToThemselves.ts, 71, 24), Decl(typeParametersAreIdenticalToThemselves.ts, 73, 18)) +>foo3 : Symbol(I2.foo3, Decl(typeParametersAreIdenticalToThemselves.ts, 71, 24), Decl(typeParametersAreIdenticalToThemselves.ts, 73, 18)) >T : Symbol(T, Decl(typeParametersAreIdenticalToThemselves.ts, 74, 9)) >x : Symbol(x, Decl(typeParametersAreIdenticalToThemselves.ts, 74, 12)) >T : Symbol(T, Decl(typeParametersAreIdenticalToThemselves.ts, 74, 9)) diff --git a/tests/baselines/reference/typeParametersAvailableInNestedScope.symbols b/tests/baselines/reference/typeParametersAvailableInNestedScope.symbols index 905ccba8f3f..d9b3661ace9 100644 --- a/tests/baselines/reference/typeParametersAvailableInNestedScope.symbols +++ b/tests/baselines/reference/typeParametersAvailableInNestedScope.symbols @@ -4,11 +4,11 @@ class C { >T : Symbol(T, Decl(typeParametersAvailableInNestedScope.ts, 0, 8)) data: T; ->data : Symbol(data, Decl(typeParametersAvailableInNestedScope.ts, 0, 12)) +>data : Symbol(C.data, Decl(typeParametersAvailableInNestedScope.ts, 0, 12)) >T : Symbol(T, Decl(typeParametersAvailableInNestedScope.ts, 0, 8)) x = (a: U) => { ->x : Symbol(x, Decl(typeParametersAvailableInNestedScope.ts, 1, 12)) +>x : Symbol(C.x, Decl(typeParametersAvailableInNestedScope.ts, 1, 12)) >U : Symbol(U, Decl(typeParametersAvailableInNestedScope.ts, 3, 9)) >a : Symbol(a, Decl(typeParametersAvailableInNestedScope.ts, 3, 12)) >U : Symbol(U, Decl(typeParametersAvailableInNestedScope.ts, 3, 9)) @@ -22,7 +22,7 @@ class C { } foo() { ->foo : Symbol(foo, Decl(typeParametersAvailableInNestedScope.ts, 6, 5)) +>foo : Symbol(C.foo, Decl(typeParametersAvailableInNestedScope.ts, 6, 5)) function temp(a: U) { >temp : Symbol(temp, Decl(typeParametersAvailableInNestedScope.ts, 8, 11)) diff --git a/tests/baselines/reference/typePredicateASI.symbols b/tests/baselines/reference/typePredicateASI.symbols index c451c4caf06..b3a9c3fd030 100644 --- a/tests/baselines/reference/typePredicateASI.symbols +++ b/tests/baselines/reference/typePredicateASI.symbols @@ -3,12 +3,12 @@ interface I { >I : Symbol(I, Decl(typePredicateASI.ts, 0, 0)) foo(callback: (a: any, b: any) => void): I ->foo : Symbol(foo, Decl(typePredicateASI.ts, 0, 13)) +>foo : Symbol(I.foo, Decl(typePredicateASI.ts, 0, 13)) >callback : Symbol(callback, Decl(typePredicateASI.ts, 1, 8)) >a : Symbol(a, Decl(typePredicateASI.ts, 1, 19)) >b : Symbol(b, Decl(typePredicateASI.ts, 1, 26)) >I : Symbol(I, Decl(typePredicateASI.ts, 0, 0)) is(): boolean; ->is : Symbol(is, Decl(typePredicateASI.ts, 1, 46)) +>is : Symbol(I.is, Decl(typePredicateASI.ts, 1, 46)) } diff --git a/tests/baselines/reference/typeQueryWithReservedWords.symbols b/tests/baselines/reference/typeQueryWithReservedWords.symbols index c8c04e3c2aa..e804d9dddaa 100644 --- a/tests/baselines/reference/typeQueryWithReservedWords.symbols +++ b/tests/baselines/reference/typeQueryWithReservedWords.symbols @@ -3,13 +3,13 @@ class Controller { >Controller : Symbol(Controller, Decl(typeQueryWithReservedWords.ts, 0, 0)) create() { ->create : Symbol(create, Decl(typeQueryWithReservedWords.ts, 0, 18)) +>create : Symbol(Controller.create, Decl(typeQueryWithReservedWords.ts, 0, 18)) } delete() { ->delete : Symbol(delete, Decl(typeQueryWithReservedWords.ts, 2, 5)) +>delete : Symbol(Controller.delete, Decl(typeQueryWithReservedWords.ts, 2, 5)) } var() { ->var : Symbol(var, Decl(typeQueryWithReservedWords.ts, 4, 5)) +>var : Symbol(Controller.var, Decl(typeQueryWithReservedWords.ts, 4, 5)) } } @@ -17,7 +17,7 @@ interface IScope { >IScope : Symbol(IScope, Decl(typeQueryWithReservedWords.ts, 7, 1)) create: typeof Controller.prototype.create; ->create : Symbol(create, Decl(typeQueryWithReservedWords.ts, 9, 18)) +>create : Symbol(IScope.create, Decl(typeQueryWithReservedWords.ts, 9, 18)) >Controller.prototype.create : Symbol(Controller.create, Decl(typeQueryWithReservedWords.ts, 0, 18)) >Controller.prototype : Symbol(Controller.prototype) >Controller : Symbol(Controller, Decl(typeQueryWithReservedWords.ts, 0, 0)) @@ -25,7 +25,7 @@ interface IScope { >create : Symbol(Controller.create, Decl(typeQueryWithReservedWords.ts, 0, 18)) delete: typeof Controller.prototype.delete; // Should not error ->delete : Symbol(delete, Decl(typeQueryWithReservedWords.ts, 10, 47)) +>delete : Symbol(IScope.delete, Decl(typeQueryWithReservedWords.ts, 10, 47)) >Controller.prototype.delete : Symbol(Controller.delete, Decl(typeQueryWithReservedWords.ts, 2, 5)) >Controller.prototype : Symbol(Controller.prototype) >Controller : Symbol(Controller, Decl(typeQueryWithReservedWords.ts, 0, 0)) @@ -33,7 +33,7 @@ interface IScope { >delete : Symbol(Controller.delete, Decl(typeQueryWithReservedWords.ts, 2, 5)) var: typeof Controller.prototype.var; // Should not error ->var : Symbol(var, Decl(typeQueryWithReservedWords.ts, 11, 47)) +>var : Symbol(IScope.var, Decl(typeQueryWithReservedWords.ts, 11, 47)) >Controller.prototype.var : Symbol(Controller.var, Decl(typeQueryWithReservedWords.ts, 4, 5)) >Controller.prototype : Symbol(Controller.prototype) >Controller : Symbol(Controller, Decl(typeQueryWithReservedWords.ts, 0, 0)) diff --git a/tests/baselines/reference/typeReferenceDirectives1.js b/tests/baselines/reference/typeReferenceDirectives1.js new file mode 100644 index 00000000000..775af9c5283 --- /dev/null +++ b/tests/baselines/reference/typeReferenceDirectives1.js @@ -0,0 +1,21 @@ +//// [tests/cases/compiler/typeReferenceDirectives1.ts] //// + +//// [index.d.ts] + + +interface $ { x } + +//// [app.ts] +/// +interface A { + x: $ +} + +//// [app.js] + + +//// [app.d.ts] +/// +interface A { + x: $; +} diff --git a/tests/baselines/reference/typeReferenceDirectives1.symbols b/tests/baselines/reference/typeReferenceDirectives1.symbols new file mode 100644 index 00000000000..55c17b219ec --- /dev/null +++ b/tests/baselines/reference/typeReferenceDirectives1.symbols @@ -0,0 +1,16 @@ +=== /app.ts === +/// +interface A { +>A : Symbol(A, Decl(app.ts, 0, 0)) + + x: $ +>x : Symbol(A.x, Decl(app.ts, 1, 13)) +>$ : Symbol($, Decl(index.d.ts, 0, 0)) +} +=== /types/lib/index.d.ts === + + +interface $ { x } +>$ : Symbol($, Decl(index.d.ts, 0, 0)) +>x : Symbol($.x, Decl(index.d.ts, 2, 13)) + diff --git a/tests/baselines/reference/typeReferenceDirectives1.trace.json b/tests/baselines/reference/typeReferenceDirectives1.trace.json new file mode 100644 index 00000000000..c936a84dcc0 --- /dev/null +++ b/tests/baselines/reference/typeReferenceDirectives1.trace.json @@ -0,0 +1,7 @@ +[ + "======== Resolving type reference directive 'lib', containing file '/app.ts', root directory '/'. ========", + "Resolving with primary search path '/types/'", + "File '/types/lib/package.json' does not exist.", + "File '/types/lib/index.d.ts' exist - use it as a name resolution result.", + "======== Type reference directive 'lib' was successfully resolved to '/types/lib/index.d.ts', primary: true. ========" +] \ No newline at end of file diff --git a/tests/baselines/reference/typeReferenceDirectives1.types b/tests/baselines/reference/typeReferenceDirectives1.types new file mode 100644 index 00000000000..05080e05651 --- /dev/null +++ b/tests/baselines/reference/typeReferenceDirectives1.types @@ -0,0 +1,16 @@ +=== /app.ts === +/// +interface A { +>A : A + + x: $ +>x : $ +>$ : $ +} +=== /types/lib/index.d.ts === + + +interface $ { x } +>$ : $ +>x : any + diff --git a/tests/baselines/reference/typeReferenceDirectives10.js b/tests/baselines/reference/typeReferenceDirectives10.js new file mode 100644 index 00000000000..e4253bb3a58 --- /dev/null +++ b/tests/baselines/reference/typeReferenceDirectives10.js @@ -0,0 +1,26 @@ +//// [tests/cases/compiler/typeReferenceDirectives10.ts] //// + +//// [ref.d.ts] + +export interface $ { x } + +//// [index.d.ts] +declare let $: { x: number } + +//// [app.ts] +/// +import {$} from "./ref"; +export interface A { + x: $ +} + + +//// [app.js] +"use strict"; + + +//// [app.d.ts] +import { $ } from "./ref"; +export interface A { + x: $; +} diff --git a/tests/baselines/reference/typeReferenceDirectives10.symbols b/tests/baselines/reference/typeReferenceDirectives10.symbols new file mode 100644 index 00000000000..910f9ac6643 --- /dev/null +++ b/tests/baselines/reference/typeReferenceDirectives10.symbols @@ -0,0 +1,24 @@ +=== /app.ts === +/// +import {$} from "./ref"; +>$ : Symbol($, Decl(app.ts, 1, 8)) + +export interface A { +>A : Symbol(A, Decl(app.ts, 1, 24)) + + x: $ +>x : Symbol(A.x, Decl(app.ts, 2, 20)) +>$ : Symbol($, Decl(app.ts, 1, 8)) +} + +=== /ref.d.ts === + +export interface $ { x } +>$ : Symbol($, Decl(ref.d.ts, 0, 0)) +>x : Symbol($.x, Decl(ref.d.ts, 1, 20)) + +=== /types/lib/index.d.ts === +declare let $: { x: number } +>$ : Symbol($, Decl(index.d.ts, 0, 11)) +>x : Symbol(x, Decl(index.d.ts, 0, 16)) + diff --git a/tests/baselines/reference/typeReferenceDirectives10.trace.json b/tests/baselines/reference/typeReferenceDirectives10.trace.json new file mode 100644 index 00000000000..b6adaf1f513 --- /dev/null +++ b/tests/baselines/reference/typeReferenceDirectives10.trace.json @@ -0,0 +1,14 @@ +[ + "======== Resolving type reference directive 'lib', containing file '/app.ts', root directory '/'. ========", + "Resolving with primary search path '/types/'", + "File '/types/lib/package.json' does not exist.", + "File '/types/lib/index.d.ts' exist - use it as a name resolution result.", + "======== Type reference directive 'lib' was successfully resolved to '/types/lib/index.d.ts', primary: true. ========", + "======== Resolving module './ref' from '/app.ts'. ========", + "Module resolution kind is not specified, using 'NodeJs'.", + "Loading module as file / folder, candidate module location '/ref'.", + "File '/ref.ts' does not exist.", + "File '/ref.tsx' does not exist.", + "File '/ref.d.ts' exist - use it as a name resolution result.", + "======== Module name './ref' was successfully resolved to '/ref.d.ts'. ========" +] \ No newline at end of file diff --git a/tests/baselines/reference/typeReferenceDirectives10.types b/tests/baselines/reference/typeReferenceDirectives10.types new file mode 100644 index 00000000000..c33e2e64a88 --- /dev/null +++ b/tests/baselines/reference/typeReferenceDirectives10.types @@ -0,0 +1,24 @@ +=== /app.ts === +/// +import {$} from "./ref"; +>$ : any + +export interface A { +>A : A + + x: $ +>x : $ +>$ : $ +} + +=== /ref.d.ts === + +export interface $ { x } +>$ : $ +>x : any + +=== /types/lib/index.d.ts === +declare let $: { x: number } +>$ : { x: number; } +>x : number + diff --git a/tests/baselines/reference/typeReferenceDirectives11.js b/tests/baselines/reference/typeReferenceDirectives11.js new file mode 100644 index 00000000000..cb41c843adc --- /dev/null +++ b/tests/baselines/reference/typeReferenceDirectives11.js @@ -0,0 +1,27 @@ +//// [tests/cases/compiler/typeReferenceDirectives11.ts] //// + +//// [index.d.ts] + + +interface Lib { x } + +//// [mod1.ts] + +export function foo(): Lib { return {x: 1} } + +//// [mod2.ts] + +import {foo} from "./mod1"; +export const bar = foo(); + +//// [output.js] + + +//// [output.d.ts] +/// +declare module "mod1" { + export function foo(): Lib; +} +declare module "mod2" { + export const bar: Lib; +} diff --git a/tests/baselines/reference/typeReferenceDirectives11.symbols b/tests/baselines/reference/typeReferenceDirectives11.symbols new file mode 100644 index 00000000000..875bb2a0900 --- /dev/null +++ b/tests/baselines/reference/typeReferenceDirectives11.symbols @@ -0,0 +1,23 @@ +=== /mod2.ts === + +import {foo} from "./mod1"; +>foo : Symbol(foo, Decl(mod2.ts, 1, 8)) + +export const bar = foo(); +>bar : Symbol(bar, Decl(mod2.ts, 2, 12)) +>foo : Symbol(foo, Decl(mod2.ts, 1, 8)) + +=== /types/lib/index.d.ts === + + +interface Lib { x } +>Lib : Symbol(Lib, Decl(index.d.ts, 0, 0)) +>x : Symbol(Lib.x, Decl(index.d.ts, 2, 15)) + +=== /mod1.ts === + +export function foo(): Lib { return {x: 1} } +>foo : Symbol(foo, Decl(mod1.ts, 0, 0)) +>Lib : Symbol(Lib, Decl(index.d.ts, 0, 0)) +>x : Symbol(x, Decl(mod1.ts, 1, 37)) + diff --git a/tests/baselines/reference/typeReferenceDirectives11.trace.json b/tests/baselines/reference/typeReferenceDirectives11.trace.json new file mode 100644 index 00000000000..be060569d83 --- /dev/null +++ b/tests/baselines/reference/typeReferenceDirectives11.trace.json @@ -0,0 +1,12 @@ +[ + "======== Resolving type reference directive 'lib', containing file not set, root directory '/'. ========", + "Resolving with primary search path '/types/'", + "File '/types/lib/package.json' does not exist.", + "File '/types/lib/index.d.ts' exist - use it as a name resolution result.", + "======== Type reference directive 'lib' was successfully resolved to '/types/lib/index.d.ts', primary: true. ========", + "======== Resolving module './mod1' from '/mod2.ts'. ========", + "Module resolution kind is not specified, using 'NodeJs'.", + "Loading module as file / folder, candidate module location '/mod1'.", + "File '/mod1.ts' exist - use it as a name resolution result.", + "======== Module name './mod1' was successfully resolved to '/mod1.ts'. ========" +] \ No newline at end of file diff --git a/tests/baselines/reference/typeReferenceDirectives11.types b/tests/baselines/reference/typeReferenceDirectives11.types new file mode 100644 index 00000000000..93d80b7988a --- /dev/null +++ b/tests/baselines/reference/typeReferenceDirectives11.types @@ -0,0 +1,26 @@ +=== /mod2.ts === + +import {foo} from "./mod1"; +>foo : () => Lib + +export const bar = foo(); +>bar : Lib +>foo() : Lib +>foo : () => Lib + +=== /types/lib/index.d.ts === + + +interface Lib { x } +>Lib : Lib +>x : any + +=== /mod1.ts === + +export function foo(): Lib { return {x: 1} } +>foo : () => Lib +>Lib : Lib +>{x: 1} : { x: number; } +>x : number +>1 : number + diff --git a/tests/baselines/reference/typeReferenceDirectives12.js b/tests/baselines/reference/typeReferenceDirectives12.js new file mode 100644 index 00000000000..c9c4a912da1 --- /dev/null +++ b/tests/baselines/reference/typeReferenceDirectives12.js @@ -0,0 +1,63 @@ +//// [tests/cases/compiler/typeReferenceDirectives12.ts] //// + +//// [index.d.ts] + + +interface Lib { x } + +//// [main.ts] +export class Cls { + x +} + +//// [mod1.ts] +/// + +import {Cls} from "./main"; +Cls.prototype.foo = function() { return undefined; } + +declare module "./main" { + interface Cls { + foo(): Lib; + } + namespace Cls { + function bar(): Lib; + } +} + +//// [mod2.ts] +import { Cls } from "./main"; +import "./mod1"; + +export const cls = Cls; +export const foo = new Cls().foo(); +export const bar = Cls.bar(); + +//// [output.js] +/// + + +//// [output.d.ts] +/// +declare module "main" { + export class Cls { + x: any; + } +} +declare module "mod1" { + module "main" { + interface Cls { + foo(): Lib; + } + namespace Cls { + function bar(): Lib; + } + } +} +declare module "mod2" { + import { Cls } from "main"; + import "mod1"; + export const cls: typeof Cls; + export const foo: Lib; + export const bar: Lib; +} diff --git a/tests/baselines/reference/typeReferenceDirectives12.symbols b/tests/baselines/reference/typeReferenceDirectives12.symbols new file mode 100644 index 00000000000..30b24c39284 --- /dev/null +++ b/tests/baselines/reference/typeReferenceDirectives12.symbols @@ -0,0 +1,68 @@ +=== /mod2.ts === +import { Cls } from "./main"; +>Cls : Symbol(Cls, Decl(mod2.ts, 0, 8)) + +import "./mod1"; + +export const cls = Cls; +>cls : Symbol(cls, Decl(mod2.ts, 3, 12)) +>Cls : Symbol(Cls, Decl(mod2.ts, 0, 8)) + +export const foo = new Cls().foo(); +>foo : Symbol(foo, Decl(mod2.ts, 4, 12)) +>new Cls().foo : Symbol(Cls.foo, Decl(mod1.ts, 6, 19)) +>Cls : Symbol(Cls, Decl(mod2.ts, 0, 8)) +>foo : Symbol(Cls.foo, Decl(mod1.ts, 6, 19)) + +export const bar = Cls.bar(); +>bar : Symbol(bar, Decl(mod2.ts, 5, 12)) +>Cls.bar : Symbol(Cls.bar, Decl(mod1.ts, 9, 19)) +>Cls : Symbol(Cls, Decl(mod2.ts, 0, 8)) +>bar : Symbol(Cls.bar, Decl(mod1.ts, 9, 19)) + +=== /types/lib/index.d.ts === + + +interface Lib { x } +>Lib : Symbol(Lib, Decl(index.d.ts, 0, 0)) +>x : Symbol(Lib.x, Decl(index.d.ts, 2, 15)) + +=== /main.ts === +export class Cls { +>Cls : Symbol(Cls, Decl(main.ts, 0, 0), Decl(mod1.ts, 5, 25), Decl(mod1.ts, 8, 5)) + + x +>x : Symbol(Cls.x, Decl(main.ts, 0, 18)) +} + +=== /mod1.ts === +/// + +import {Cls} from "./main"; +>Cls : Symbol(Cls, Decl(mod1.ts, 2, 8)) + +Cls.prototype.foo = function() { return undefined; } +>Cls.prototype.foo : Symbol(Cls.foo, Decl(mod1.ts, 6, 19)) +>Cls.prototype : Symbol(Cls.prototype) +>Cls : Symbol(Cls, Decl(mod1.ts, 2, 8)) +>prototype : Symbol(Cls.prototype) +>foo : Symbol(Cls.foo, Decl(mod1.ts, 6, 19)) +>undefined : Symbol(undefined) + +declare module "./main" { + interface Cls { +>Cls : Symbol(Cls, Decl(main.ts, 0, 0), Decl(mod1.ts, 5, 25), Decl(mod1.ts, 8, 5)) + + foo(): Lib; +>foo : Symbol(Cls.foo, Decl(mod1.ts, 6, 19)) +>Lib : Symbol(Lib, Decl(index.d.ts, 0, 0)) + } + namespace Cls { +>Cls : Symbol(Cls, Decl(main.ts, 0, 0), Decl(mod1.ts, 5, 25), Decl(mod1.ts, 8, 5)) + + function bar(): Lib; +>bar : Symbol(bar, Decl(mod1.ts, 9, 19)) +>Lib : Symbol(Lib, Decl(index.d.ts, 0, 0)) + } +} + diff --git a/tests/baselines/reference/typeReferenceDirectives12.trace.json b/tests/baselines/reference/typeReferenceDirectives12.trace.json new file mode 100644 index 00000000000..f4fc0937325 --- /dev/null +++ b/tests/baselines/reference/typeReferenceDirectives12.trace.json @@ -0,0 +1,22 @@ +[ + "======== Resolving module './main' from '/mod2.ts'. ========", + "Module resolution kind is not specified, using 'NodeJs'.", + "Loading module as file / folder, candidate module location '/main'.", + "File '/main.ts' exist - use it as a name resolution result.", + "======== Module name './main' was successfully resolved to '/main.ts'. ========", + "======== Resolving module './mod1' from '/mod2.ts'. ========", + "Module resolution kind is not specified, using 'NodeJs'.", + "Loading module as file / folder, candidate module location '/mod1'.", + "File '/mod1.ts' exist - use it as a name resolution result.", + "======== Module name './mod1' was successfully resolved to '/mod1.ts'. ========", + "======== Resolving type reference directive 'lib', containing file '/mod1.ts', root directory '/'. ========", + "Resolving with primary search path '/types/'", + "File '/types/lib/package.json' does not exist.", + "File '/types/lib/index.d.ts' exist - use it as a name resolution result.", + "======== Type reference directive 'lib' was successfully resolved to '/types/lib/index.d.ts', primary: true. ========", + "======== Resolving module './main' from '/mod1.ts'. ========", + "Module resolution kind is not specified, using 'NodeJs'.", + "Loading module as file / folder, candidate module location '/main'.", + "File '/main.ts' exist - use it as a name resolution result.", + "======== Module name './main' was successfully resolved to '/main.ts'. ========" +] \ No newline at end of file diff --git a/tests/baselines/reference/typeReferenceDirectives12.types b/tests/baselines/reference/typeReferenceDirectives12.types new file mode 100644 index 00000000000..bd429b91f1c --- /dev/null +++ b/tests/baselines/reference/typeReferenceDirectives12.types @@ -0,0 +1,73 @@ +=== /mod2.ts === +import { Cls } from "./main"; +>Cls : typeof Cls + +import "./mod1"; + +export const cls = Cls; +>cls : typeof Cls +>Cls : typeof Cls + +export const foo = new Cls().foo(); +>foo : Lib +>new Cls().foo() : Lib +>new Cls().foo : () => Lib +>new Cls() : Cls +>Cls : typeof Cls +>foo : () => Lib + +export const bar = Cls.bar(); +>bar : Lib +>Cls.bar() : Lib +>Cls.bar : () => Lib +>Cls : typeof Cls +>bar : () => Lib + +=== /types/lib/index.d.ts === + + +interface Lib { x } +>Lib : Lib +>x : any + +=== /main.ts === +export class Cls { +>Cls : Cls + + x +>x : any +} + +=== /mod1.ts === +/// + +import {Cls} from "./main"; +>Cls : typeof Cls + +Cls.prototype.foo = function() { return undefined; } +>Cls.prototype.foo = function() { return undefined; } : () => any +>Cls.prototype.foo : () => Lib +>Cls.prototype : Cls +>Cls : typeof Cls +>prototype : Cls +>foo : () => Lib +>function() { return undefined; } : () => any +>undefined : undefined + +declare module "./main" { + interface Cls { +>Cls : Cls + + foo(): Lib; +>foo : () => Lib +>Lib : Lib + } + namespace Cls { +>Cls : typeof Cls + + function bar(): Lib; +>bar : () => Lib +>Lib : Lib + } +} + diff --git a/tests/baselines/reference/typeReferenceDirectives13.js b/tests/baselines/reference/typeReferenceDirectives13.js new file mode 100644 index 00000000000..9fecdd47f77 --- /dev/null +++ b/tests/baselines/reference/typeReferenceDirectives13.js @@ -0,0 +1,26 @@ +//// [tests/cases/compiler/typeReferenceDirectives13.ts] //// + +//// [ref.d.ts] + +export interface $ { x } + +//// [index.d.ts] +declare let $: { x: number } + +//// [app.ts] +/// +import {$} from "./ref"; +export interface A { + x: () => typeof $ +} + + +//// [app.js] +"use strict"; + + +//// [app.d.ts] +/// +export interface A { + x: () => typeof $; +} diff --git a/tests/baselines/reference/typeReferenceDirectives13.symbols b/tests/baselines/reference/typeReferenceDirectives13.symbols new file mode 100644 index 00000000000..90a32b16341 --- /dev/null +++ b/tests/baselines/reference/typeReferenceDirectives13.symbols @@ -0,0 +1,24 @@ +=== /app.ts === +/// +import {$} from "./ref"; +>$ : Symbol($, Decl(app.ts, 1, 8)) + +export interface A { +>A : Symbol(A, Decl(app.ts, 1, 24)) + + x: () => typeof $ +>x : Symbol(A.x, Decl(app.ts, 2, 20)) +>$ : Symbol($, Decl(app.ts, 1, 8)) +} + +=== /ref.d.ts === + +export interface $ { x } +>$ : Symbol($, Decl(ref.d.ts, 0, 0)) +>x : Symbol($.x, Decl(ref.d.ts, 1, 20)) + +=== /types/lib/index.d.ts === +declare let $: { x: number } +>$ : Symbol($, Decl(index.d.ts, 0, 11)) +>x : Symbol(x, Decl(index.d.ts, 0, 16)) + diff --git a/tests/baselines/reference/typeReferenceDirectives13.trace.json b/tests/baselines/reference/typeReferenceDirectives13.trace.json new file mode 100644 index 00000000000..b6adaf1f513 --- /dev/null +++ b/tests/baselines/reference/typeReferenceDirectives13.trace.json @@ -0,0 +1,14 @@ +[ + "======== Resolving type reference directive 'lib', containing file '/app.ts', root directory '/'. ========", + "Resolving with primary search path '/types/'", + "File '/types/lib/package.json' does not exist.", + "File '/types/lib/index.d.ts' exist - use it as a name resolution result.", + "======== Type reference directive 'lib' was successfully resolved to '/types/lib/index.d.ts', primary: true. ========", + "======== Resolving module './ref' from '/app.ts'. ========", + "Module resolution kind is not specified, using 'NodeJs'.", + "Loading module as file / folder, candidate module location '/ref'.", + "File '/ref.ts' does not exist.", + "File '/ref.tsx' does not exist.", + "File '/ref.d.ts' exist - use it as a name resolution result.", + "======== Module name './ref' was successfully resolved to '/ref.d.ts'. ========" +] \ No newline at end of file diff --git a/tests/baselines/reference/typeReferenceDirectives13.types b/tests/baselines/reference/typeReferenceDirectives13.types new file mode 100644 index 00000000000..240661883bb --- /dev/null +++ b/tests/baselines/reference/typeReferenceDirectives13.types @@ -0,0 +1,24 @@ +=== /app.ts === +/// +import {$} from "./ref"; +>$ : any + +export interface A { +>A : A + + x: () => typeof $ +>x : () => { x: number; } +>$ : { x: number; } +} + +=== /ref.d.ts === + +export interface $ { x } +>$ : $ +>x : any + +=== /types/lib/index.d.ts === +declare let $: { x: number } +>$ : { x: number; } +>x : number + diff --git a/tests/baselines/reference/typeReferenceDirectives2.js b/tests/baselines/reference/typeReferenceDirectives2.js new file mode 100644 index 00000000000..3d441ac04fc --- /dev/null +++ b/tests/baselines/reference/typeReferenceDirectives2.js @@ -0,0 +1,19 @@ +//// [tests/cases/compiler/typeReferenceDirectives2.ts] //// + +//// [index.d.ts] + +interface $ { x } + +//// [app.ts] +interface A { + x: $ +} + +//// [app.js] + + +//// [app.d.ts] +/// +interface A { + x: $; +} diff --git a/tests/baselines/reference/typeReferenceDirectives2.symbols b/tests/baselines/reference/typeReferenceDirectives2.symbols new file mode 100644 index 00000000000..100296c11cf --- /dev/null +++ b/tests/baselines/reference/typeReferenceDirectives2.symbols @@ -0,0 +1,14 @@ +=== /app.ts === +interface A { +>A : Symbol(A, Decl(app.ts, 0, 0)) + + x: $ +>x : Symbol(A.x, Decl(app.ts, 0, 13)) +>$ : Symbol($, Decl(index.d.ts, 0, 0)) +} +=== /types/lib/index.d.ts === + +interface $ { x } +>$ : Symbol($, Decl(index.d.ts, 0, 0)) +>x : Symbol($.x, Decl(index.d.ts, 1, 13)) + diff --git a/tests/baselines/reference/typeReferenceDirectives2.trace.json b/tests/baselines/reference/typeReferenceDirectives2.trace.json new file mode 100644 index 00000000000..826abe5d51a --- /dev/null +++ b/tests/baselines/reference/typeReferenceDirectives2.trace.json @@ -0,0 +1,7 @@ +[ + "======== Resolving type reference directive 'lib', containing file not set, root directory '/'. ========", + "Resolving with primary search path '/types/'", + "File '/types/lib/package.json' does not exist.", + "File '/types/lib/index.d.ts' exist - use it as a name resolution result.", + "======== Type reference directive 'lib' was successfully resolved to '/types/lib/index.d.ts', primary: true. ========" +] \ No newline at end of file diff --git a/tests/baselines/reference/typeReferenceDirectives2.types b/tests/baselines/reference/typeReferenceDirectives2.types new file mode 100644 index 00000000000..284e2ef1f44 --- /dev/null +++ b/tests/baselines/reference/typeReferenceDirectives2.types @@ -0,0 +1,14 @@ +=== /app.ts === +interface A { +>A : A + + x: $ +>x : $ +>$ : $ +} +=== /types/lib/index.d.ts === + +interface $ { x } +>$ : $ +>x : any + diff --git a/tests/baselines/reference/typeReferenceDirectives3.js b/tests/baselines/reference/typeReferenceDirectives3.js new file mode 100644 index 00000000000..9a41c69e30a --- /dev/null +++ b/tests/baselines/reference/typeReferenceDirectives3.js @@ -0,0 +1,27 @@ +//// [tests/cases/compiler/typeReferenceDirectives3.ts] //// + +//// [ref.d.ts] + +// $ comes from d.ts file - no need to add type reference directive + +interface $ { x } + +//// [index.d.ts] +declare let $: { x: number } + +//// [app.ts] +/// +/// +interface A { + x: () => $ +} + +//// [app.js] +/// + + +//// [app.d.ts] +/// +interface A { + x: () => $; +} diff --git a/tests/baselines/reference/typeReferenceDirectives3.symbols b/tests/baselines/reference/typeReferenceDirectives3.symbols new file mode 100644 index 00000000000..6ab3cd7d1ee --- /dev/null +++ b/tests/baselines/reference/typeReferenceDirectives3.symbols @@ -0,0 +1,23 @@ +=== /app.ts === +/// +/// +interface A { +>A : Symbol(A, Decl(app.ts, 0, 0)) + + x: () => $ +>x : Symbol(A.x, Decl(app.ts, 2, 13)) +>$ : Symbol($, Decl(ref.d.ts, 0, 0), Decl(index.d.ts, 0, 11)) +} +=== /ref.d.ts === + +// $ comes from d.ts file - no need to add type reference directive + +interface $ { x } +>$ : Symbol($, Decl(ref.d.ts, 0, 0), Decl(index.d.ts, 0, 11)) +>x : Symbol($.x, Decl(ref.d.ts, 3, 13)) + +=== /types/lib/index.d.ts === +declare let $: { x: number } +>$ : Symbol($, Decl(ref.d.ts, 0, 0), Decl(index.d.ts, 0, 11)) +>x : Symbol(x, Decl(index.d.ts, 0, 16)) + diff --git a/tests/baselines/reference/typeReferenceDirectives3.trace.json b/tests/baselines/reference/typeReferenceDirectives3.trace.json new file mode 100644 index 00000000000..c936a84dcc0 --- /dev/null +++ b/tests/baselines/reference/typeReferenceDirectives3.trace.json @@ -0,0 +1,7 @@ +[ + "======== Resolving type reference directive 'lib', containing file '/app.ts', root directory '/'. ========", + "Resolving with primary search path '/types/'", + "File '/types/lib/package.json' does not exist.", + "File '/types/lib/index.d.ts' exist - use it as a name resolution result.", + "======== Type reference directive 'lib' was successfully resolved to '/types/lib/index.d.ts', primary: true. ========" +] \ No newline at end of file diff --git a/tests/baselines/reference/typeReferenceDirectives3.types b/tests/baselines/reference/typeReferenceDirectives3.types new file mode 100644 index 00000000000..3f82a9c666b --- /dev/null +++ b/tests/baselines/reference/typeReferenceDirectives3.types @@ -0,0 +1,23 @@ +=== /app.ts === +/// +/// +interface A { +>A : A + + x: () => $ +>x : () => $ +>$ : $ +} +=== /ref.d.ts === + +// $ comes from d.ts file - no need to add type reference directive + +interface $ { x } +>$ : $ +>x : any + +=== /types/lib/index.d.ts === +declare let $: { x: number } +>$ : { x: number; } +>x : number + diff --git a/tests/baselines/reference/typeReferenceDirectives4.js b/tests/baselines/reference/typeReferenceDirectives4.js new file mode 100644 index 00000000000..ebe66d7b4dc --- /dev/null +++ b/tests/baselines/reference/typeReferenceDirectives4.js @@ -0,0 +1,30 @@ +//// [tests/cases/compiler/typeReferenceDirectives4.ts] //// + +//// [ref.d.ts] + +// $ comes from d.ts file - no need to add type reference directive + +interface $ { x } + +//// [index.d.ts] +declare let $: { x: number } + + +//// [app.ts] +/// +/// + +let x: $; +let y = () => x + +//// [app.js] +/// +/// +var x; +var y = function () { return x; }; + + +//// [app.d.ts] +/// +declare let x: $; +declare let y: () => $; diff --git a/tests/baselines/reference/typeReferenceDirectives4.symbols b/tests/baselines/reference/typeReferenceDirectives4.symbols new file mode 100644 index 00000000000..2877064934a --- /dev/null +++ b/tests/baselines/reference/typeReferenceDirectives4.symbols @@ -0,0 +1,26 @@ +=== /app.ts === +/// +/// + +let x: $; +>x : Symbol(x, Decl(app.ts, 3, 3)) +>$ : Symbol($, Decl(ref.d.ts, 0, 0), Decl(index.d.ts, 0, 11)) + +let y = () => x +>y : Symbol(y, Decl(app.ts, 4, 3)) +>x : Symbol(x, Decl(app.ts, 3, 3)) + +=== /ref.d.ts === + +// $ comes from d.ts file - no need to add type reference directive + +interface $ { x } +>$ : Symbol($, Decl(ref.d.ts, 0, 0), Decl(index.d.ts, 0, 11)) +>x : Symbol($.x, Decl(ref.d.ts, 3, 13)) + +=== /types/lib/index.d.ts === +declare let $: { x: number } +>$ : Symbol($, Decl(ref.d.ts, 0, 0), Decl(index.d.ts, 0, 11)) +>x : Symbol(x, Decl(index.d.ts, 0, 16)) + + diff --git a/tests/baselines/reference/typeReferenceDirectives4.trace.json b/tests/baselines/reference/typeReferenceDirectives4.trace.json new file mode 100644 index 00000000000..c936a84dcc0 --- /dev/null +++ b/tests/baselines/reference/typeReferenceDirectives4.trace.json @@ -0,0 +1,7 @@ +[ + "======== Resolving type reference directive 'lib', containing file '/app.ts', root directory '/'. ========", + "Resolving with primary search path '/types/'", + "File '/types/lib/package.json' does not exist.", + "File '/types/lib/index.d.ts' exist - use it as a name resolution result.", + "======== Type reference directive 'lib' was successfully resolved to '/types/lib/index.d.ts', primary: true. ========" +] \ No newline at end of file diff --git a/tests/baselines/reference/typeReferenceDirectives4.types b/tests/baselines/reference/typeReferenceDirectives4.types new file mode 100644 index 00000000000..39d40a1ee78 --- /dev/null +++ b/tests/baselines/reference/typeReferenceDirectives4.types @@ -0,0 +1,27 @@ +=== /app.ts === +/// +/// + +let x: $; +>x : $ +>$ : $ + +let y = () => x +>y : () => $ +>() => x : () => $ +>x : $ + +=== /ref.d.ts === + +// $ comes from d.ts file - no need to add type reference directive + +interface $ { x } +>$ : $ +>x : any + +=== /types/lib/index.d.ts === +declare let $: { x: number } +>$ : { x: number; } +>x : number + + diff --git a/tests/baselines/reference/typeReferenceDirectives5.js b/tests/baselines/reference/typeReferenceDirectives5.js new file mode 100644 index 00000000000..41448cbeab2 --- /dev/null +++ b/tests/baselines/reference/typeReferenceDirectives5.js @@ -0,0 +1,25 @@ +//// [tests/cases/compiler/typeReferenceDirectives5.ts] //// + +//// [ref.d.ts] + +export interface $ { x } + +//// [index.d.ts] +declare let $: { x: number } + +//// [app.ts] +/// +import {$} from "./ref"; +export interface A { + x: typeof $; +} + +//// [app.js] +"use strict"; + + +//// [app.d.ts] +/// +export interface A { + x: typeof $; +} diff --git a/tests/baselines/reference/typeReferenceDirectives5.symbols b/tests/baselines/reference/typeReferenceDirectives5.symbols new file mode 100644 index 00000000000..fbbb06d6834 --- /dev/null +++ b/tests/baselines/reference/typeReferenceDirectives5.symbols @@ -0,0 +1,23 @@ +=== /app.ts === +/// +import {$} from "./ref"; +>$ : Symbol($, Decl(app.ts, 1, 8)) + +export interface A { +>A : Symbol(A, Decl(app.ts, 1, 24)) + + x: typeof $; +>x : Symbol(A.x, Decl(app.ts, 2, 20)) +>$ : Symbol($, Decl(app.ts, 1, 8)) +} +=== /ref.d.ts === + +export interface $ { x } +>$ : Symbol($, Decl(ref.d.ts, 0, 0)) +>x : Symbol($.x, Decl(ref.d.ts, 1, 20)) + +=== /types/lib/index.d.ts === +declare let $: { x: number } +>$ : Symbol($, Decl(index.d.ts, 0, 11)) +>x : Symbol(x, Decl(index.d.ts, 0, 16)) + diff --git a/tests/baselines/reference/typeReferenceDirectives5.trace.json b/tests/baselines/reference/typeReferenceDirectives5.trace.json new file mode 100644 index 00000000000..b6adaf1f513 --- /dev/null +++ b/tests/baselines/reference/typeReferenceDirectives5.trace.json @@ -0,0 +1,14 @@ +[ + "======== Resolving type reference directive 'lib', containing file '/app.ts', root directory '/'. ========", + "Resolving with primary search path '/types/'", + "File '/types/lib/package.json' does not exist.", + "File '/types/lib/index.d.ts' exist - use it as a name resolution result.", + "======== Type reference directive 'lib' was successfully resolved to '/types/lib/index.d.ts', primary: true. ========", + "======== Resolving module './ref' from '/app.ts'. ========", + "Module resolution kind is not specified, using 'NodeJs'.", + "Loading module as file / folder, candidate module location '/ref'.", + "File '/ref.ts' does not exist.", + "File '/ref.tsx' does not exist.", + "File '/ref.d.ts' exist - use it as a name resolution result.", + "======== Module name './ref' was successfully resolved to '/ref.d.ts'. ========" +] \ No newline at end of file diff --git a/tests/baselines/reference/typeReferenceDirectives5.types b/tests/baselines/reference/typeReferenceDirectives5.types new file mode 100644 index 00000000000..9b7cd93f6cc --- /dev/null +++ b/tests/baselines/reference/typeReferenceDirectives5.types @@ -0,0 +1,23 @@ +=== /app.ts === +/// +import {$} from "./ref"; +>$ : any + +export interface A { +>A : A + + x: typeof $; +>x : { x: number; } +>$ : { x: number; } +} +=== /ref.d.ts === + +export interface $ { x } +>$ : $ +>x : any + +=== /types/lib/index.d.ts === +declare let $: { x: number } +>$ : { x: number; } +>x : number + diff --git a/tests/baselines/reference/typeReferenceDirectives6.js b/tests/baselines/reference/typeReferenceDirectives6.js new file mode 100644 index 00000000000..3d1ea0e41c9 --- /dev/null +++ b/tests/baselines/reference/typeReferenceDirectives6.js @@ -0,0 +1,33 @@ +//// [tests/cases/compiler/typeReferenceDirectives6.ts] //// + +//// [ref.d.ts] + +// $ comes from type declaration file - type reference directive should be added + +declare let $: { x: number } + +//// [index.d.ts] +interface $ { x } + + +//// [app.ts] +/// +/// + +let x: $; +let y = () => x + + + +//// [app.js] +/// +/// +var x; +var y = function () { return x; }; + + +//// [app.d.ts] +/// +/// +declare let x: $; +declare let y: () => $; diff --git a/tests/baselines/reference/typeReferenceDirectives6.symbols b/tests/baselines/reference/typeReferenceDirectives6.symbols new file mode 100644 index 00000000000..f8a5245a0a5 --- /dev/null +++ b/tests/baselines/reference/typeReferenceDirectives6.symbols @@ -0,0 +1,27 @@ +=== /app.ts === +/// +/// + +let x: $; +>x : Symbol(x, Decl(app.ts, 3, 3)) +>$ : Symbol($, Decl(ref.d.ts, 3, 11), Decl(index.d.ts, 0, 0)) + +let y = () => x +>y : Symbol(y, Decl(app.ts, 4, 3)) +>x : Symbol(x, Decl(app.ts, 3, 3)) + + +=== /ref.d.ts === + +// $ comes from type declaration file - type reference directive should be added + +declare let $: { x: number } +>$ : Symbol($, Decl(ref.d.ts, 3, 11), Decl(index.d.ts, 0, 0)) +>x : Symbol(x, Decl(ref.d.ts, 3, 16)) + +=== /types/lib/index.d.ts === +interface $ { x } +>$ : Symbol($, Decl(ref.d.ts, 3, 11), Decl(index.d.ts, 0, 0)) +>x : Symbol($.x, Decl(index.d.ts, 0, 13)) + + diff --git a/tests/baselines/reference/typeReferenceDirectives6.trace.json b/tests/baselines/reference/typeReferenceDirectives6.trace.json new file mode 100644 index 00000000000..c936a84dcc0 --- /dev/null +++ b/tests/baselines/reference/typeReferenceDirectives6.trace.json @@ -0,0 +1,7 @@ +[ + "======== Resolving type reference directive 'lib', containing file '/app.ts', root directory '/'. ========", + "Resolving with primary search path '/types/'", + "File '/types/lib/package.json' does not exist.", + "File '/types/lib/index.d.ts' exist - use it as a name resolution result.", + "======== Type reference directive 'lib' was successfully resolved to '/types/lib/index.d.ts', primary: true. ========" +] \ No newline at end of file diff --git a/tests/baselines/reference/typeReferenceDirectives6.types b/tests/baselines/reference/typeReferenceDirectives6.types new file mode 100644 index 00000000000..db4d3514bde --- /dev/null +++ b/tests/baselines/reference/typeReferenceDirectives6.types @@ -0,0 +1,28 @@ +=== /app.ts === +/// +/// + +let x: $; +>x : $ +>$ : $ + +let y = () => x +>y : () => $ +>() => x : () => $ +>x : $ + + +=== /ref.d.ts === + +// $ comes from type declaration file - type reference directive should be added + +declare let $: { x: number } +>$ : { x: number; } +>x : number + +=== /types/lib/index.d.ts === +interface $ { x } +>$ : $ +>x : any + + diff --git a/tests/baselines/reference/typeReferenceDirectives7.js b/tests/baselines/reference/typeReferenceDirectives7.js new file mode 100644 index 00000000000..6a15180d3e7 --- /dev/null +++ b/tests/baselines/reference/typeReferenceDirectives7.js @@ -0,0 +1,28 @@ +//// [tests/cases/compiler/typeReferenceDirectives7.ts] //// + +//// [index.d.ts] + +// local value shadows global - no need to add type reference directive + +declare let $: { x: number } + + +//// [app.ts] +/// + +export let $ = 1; + +export let x: typeof $; +export let y = () => x + +//// [app.js] +/// +"use strict"; +exports.$ = 1; +exports.y = function () { return exports.x; }; + + +//// [app.d.ts] +export declare let $: number; +export declare let x: typeof $; +export declare let y: () => number; diff --git a/tests/baselines/reference/typeReferenceDirectives7.symbols b/tests/baselines/reference/typeReferenceDirectives7.symbols new file mode 100644 index 00000000000..27637dfaa0e --- /dev/null +++ b/tests/baselines/reference/typeReferenceDirectives7.symbols @@ -0,0 +1,23 @@ +=== /app.ts === +/// + +export let $ = 1; +>$ : Symbol($, Decl(app.ts, 2, 10)) + +export let x: typeof $; +>x : Symbol(x, Decl(app.ts, 4, 10)) +>$ : Symbol($, Decl(app.ts, 2, 10)) + +export let y = () => x +>y : Symbol(y, Decl(app.ts, 5, 10)) +>x : Symbol(x, Decl(app.ts, 4, 10)) + +=== /types/lib/index.d.ts === + +// local value shadows global - no need to add type reference directive + +declare let $: { x: number } +>$ : Symbol($, Decl(index.d.ts, 3, 11)) +>x : Symbol(x, Decl(index.d.ts, 3, 16)) + + diff --git a/tests/baselines/reference/typeReferenceDirectives7.trace.json b/tests/baselines/reference/typeReferenceDirectives7.trace.json new file mode 100644 index 00000000000..c936a84dcc0 --- /dev/null +++ b/tests/baselines/reference/typeReferenceDirectives7.trace.json @@ -0,0 +1,7 @@ +[ + "======== Resolving type reference directive 'lib', containing file '/app.ts', root directory '/'. ========", + "Resolving with primary search path '/types/'", + "File '/types/lib/package.json' does not exist.", + "File '/types/lib/index.d.ts' exist - use it as a name resolution result.", + "======== Type reference directive 'lib' was successfully resolved to '/types/lib/index.d.ts', primary: true. ========" +] \ No newline at end of file diff --git a/tests/baselines/reference/typeReferenceDirectives7.types b/tests/baselines/reference/typeReferenceDirectives7.types new file mode 100644 index 00000000000..dab53a49899 --- /dev/null +++ b/tests/baselines/reference/typeReferenceDirectives7.types @@ -0,0 +1,25 @@ +=== /app.ts === +/// + +export let $ = 1; +>$ : number +>1 : number + +export let x: typeof $; +>x : number +>$ : number + +export let y = () => x +>y : () => number +>() => x : () => number +>x : number + +=== /types/lib/index.d.ts === + +// local value shadows global - no need to add type reference directive + +declare let $: { x: number } +>$ : { x: number; } +>x : number + + diff --git a/tests/baselines/reference/typeReferenceDirectives8.js b/tests/baselines/reference/typeReferenceDirectives8.js new file mode 100644 index 00000000000..cfa22c4228c --- /dev/null +++ b/tests/baselines/reference/typeReferenceDirectives8.js @@ -0,0 +1,32 @@ +//// [tests/cases/compiler/typeReferenceDirectives8.ts] //// + +//// [index.d.ts] + + +interface Lib { x } + +//// [mod1.ts] + +export function foo(): Lib { return {x: 1} } + +//// [mod2.ts] + +import {foo} from "./mod1"; +export const bar = foo(); + +//// [mod1.js] +"use strict"; +function foo() { return { x: 1 }; } +exports.foo = foo; +//// [mod2.js] +"use strict"; +var mod1_1 = require("./mod1"); +exports.bar = mod1_1.foo(); + + +//// [mod1.d.ts] +/// +export declare function foo(): Lib; +//// [mod2.d.ts] +/// +export declare const bar: Lib; diff --git a/tests/baselines/reference/typeReferenceDirectives8.symbols b/tests/baselines/reference/typeReferenceDirectives8.symbols new file mode 100644 index 00000000000..875bb2a0900 --- /dev/null +++ b/tests/baselines/reference/typeReferenceDirectives8.symbols @@ -0,0 +1,23 @@ +=== /mod2.ts === + +import {foo} from "./mod1"; +>foo : Symbol(foo, Decl(mod2.ts, 1, 8)) + +export const bar = foo(); +>bar : Symbol(bar, Decl(mod2.ts, 2, 12)) +>foo : Symbol(foo, Decl(mod2.ts, 1, 8)) + +=== /types/lib/index.d.ts === + + +interface Lib { x } +>Lib : Symbol(Lib, Decl(index.d.ts, 0, 0)) +>x : Symbol(Lib.x, Decl(index.d.ts, 2, 15)) + +=== /mod1.ts === + +export function foo(): Lib { return {x: 1} } +>foo : Symbol(foo, Decl(mod1.ts, 0, 0)) +>Lib : Symbol(Lib, Decl(index.d.ts, 0, 0)) +>x : Symbol(x, Decl(mod1.ts, 1, 37)) + diff --git a/tests/baselines/reference/typeReferenceDirectives8.trace.json b/tests/baselines/reference/typeReferenceDirectives8.trace.json new file mode 100644 index 00000000000..be060569d83 --- /dev/null +++ b/tests/baselines/reference/typeReferenceDirectives8.trace.json @@ -0,0 +1,12 @@ +[ + "======== Resolving type reference directive 'lib', containing file not set, root directory '/'. ========", + "Resolving with primary search path '/types/'", + "File '/types/lib/package.json' does not exist.", + "File '/types/lib/index.d.ts' exist - use it as a name resolution result.", + "======== Type reference directive 'lib' was successfully resolved to '/types/lib/index.d.ts', primary: true. ========", + "======== Resolving module './mod1' from '/mod2.ts'. ========", + "Module resolution kind is not specified, using 'NodeJs'.", + "Loading module as file / folder, candidate module location '/mod1'.", + "File '/mod1.ts' exist - use it as a name resolution result.", + "======== Module name './mod1' was successfully resolved to '/mod1.ts'. ========" +] \ No newline at end of file diff --git a/tests/baselines/reference/typeReferenceDirectives8.types b/tests/baselines/reference/typeReferenceDirectives8.types new file mode 100644 index 00000000000..93d80b7988a --- /dev/null +++ b/tests/baselines/reference/typeReferenceDirectives8.types @@ -0,0 +1,26 @@ +=== /mod2.ts === + +import {foo} from "./mod1"; +>foo : () => Lib + +export const bar = foo(); +>bar : Lib +>foo() : Lib +>foo : () => Lib + +=== /types/lib/index.d.ts === + + +interface Lib { x } +>Lib : Lib +>x : any + +=== /mod1.ts === + +export function foo(): Lib { return {x: 1} } +>foo : () => Lib +>Lib : Lib +>{x: 1} : { x: number; } +>x : number +>1 : number + diff --git a/tests/baselines/reference/typeReferenceDirectives9.js b/tests/baselines/reference/typeReferenceDirectives9.js new file mode 100644 index 00000000000..5fd17ea16d3 --- /dev/null +++ b/tests/baselines/reference/typeReferenceDirectives9.js @@ -0,0 +1,79 @@ +//// [tests/cases/compiler/typeReferenceDirectives9.ts] //// + +//// [index.d.ts] + + +interface Lib { x } + +//// [main.ts] +export class Cls { + x +} + +//// [mod1.ts] +/// + +import {Cls} from "./main"; +Cls.prototype.foo = function() { return undefined; } + +declare module "./main" { + interface Cls { + foo(): Lib; + } + namespace Cls { + function bar(): Lib; + } +} + +//// [mod2.ts] +import { Cls } from "./main"; +import "./mod1"; + +export const cls = Cls; +export const foo = new Cls().foo(); +export const bar = Cls.bar(); + +//// [main.js] +"use strict"; +var Cls = (function () { + function Cls() { + } + return Cls; +}()); +exports.Cls = Cls; +//// [mod1.js] +/// +"use strict"; +var main_1 = require("./main"); +main_1.Cls.prototype.foo = function () { return undefined; }; +//// [mod2.js] +"use strict"; +var main_1 = require("./main"); +require("./mod1"); +exports.cls = main_1.Cls; +exports.foo = new main_1.Cls().foo(); +exports.bar = main_1.Cls.bar(); + + +//// [main.d.ts] +export declare class Cls { + x: any; +} +//// [mod1.d.ts] +/// +declare module "./main" { + interface Cls { + foo(): Lib; + } + namespace Cls { + function bar(): Lib; + } +} +export {}; +//// [mod2.d.ts] +/// +import { Cls } from "./main"; +import "./mod1"; +export declare const cls: typeof Cls; +export declare const foo: Lib; +export declare const bar: Lib; diff --git a/tests/baselines/reference/typeReferenceDirectives9.symbols b/tests/baselines/reference/typeReferenceDirectives9.symbols new file mode 100644 index 00000000000..30b24c39284 --- /dev/null +++ b/tests/baselines/reference/typeReferenceDirectives9.symbols @@ -0,0 +1,68 @@ +=== /mod2.ts === +import { Cls } from "./main"; +>Cls : Symbol(Cls, Decl(mod2.ts, 0, 8)) + +import "./mod1"; + +export const cls = Cls; +>cls : Symbol(cls, Decl(mod2.ts, 3, 12)) +>Cls : Symbol(Cls, Decl(mod2.ts, 0, 8)) + +export const foo = new Cls().foo(); +>foo : Symbol(foo, Decl(mod2.ts, 4, 12)) +>new Cls().foo : Symbol(Cls.foo, Decl(mod1.ts, 6, 19)) +>Cls : Symbol(Cls, Decl(mod2.ts, 0, 8)) +>foo : Symbol(Cls.foo, Decl(mod1.ts, 6, 19)) + +export const bar = Cls.bar(); +>bar : Symbol(bar, Decl(mod2.ts, 5, 12)) +>Cls.bar : Symbol(Cls.bar, Decl(mod1.ts, 9, 19)) +>Cls : Symbol(Cls, Decl(mod2.ts, 0, 8)) +>bar : Symbol(Cls.bar, Decl(mod1.ts, 9, 19)) + +=== /types/lib/index.d.ts === + + +interface Lib { x } +>Lib : Symbol(Lib, Decl(index.d.ts, 0, 0)) +>x : Symbol(Lib.x, Decl(index.d.ts, 2, 15)) + +=== /main.ts === +export class Cls { +>Cls : Symbol(Cls, Decl(main.ts, 0, 0), Decl(mod1.ts, 5, 25), Decl(mod1.ts, 8, 5)) + + x +>x : Symbol(Cls.x, Decl(main.ts, 0, 18)) +} + +=== /mod1.ts === +/// + +import {Cls} from "./main"; +>Cls : Symbol(Cls, Decl(mod1.ts, 2, 8)) + +Cls.prototype.foo = function() { return undefined; } +>Cls.prototype.foo : Symbol(Cls.foo, Decl(mod1.ts, 6, 19)) +>Cls.prototype : Symbol(Cls.prototype) +>Cls : Symbol(Cls, Decl(mod1.ts, 2, 8)) +>prototype : Symbol(Cls.prototype) +>foo : Symbol(Cls.foo, Decl(mod1.ts, 6, 19)) +>undefined : Symbol(undefined) + +declare module "./main" { + interface Cls { +>Cls : Symbol(Cls, Decl(main.ts, 0, 0), Decl(mod1.ts, 5, 25), Decl(mod1.ts, 8, 5)) + + foo(): Lib; +>foo : Symbol(Cls.foo, Decl(mod1.ts, 6, 19)) +>Lib : Symbol(Lib, Decl(index.d.ts, 0, 0)) + } + namespace Cls { +>Cls : Symbol(Cls, Decl(main.ts, 0, 0), Decl(mod1.ts, 5, 25), Decl(mod1.ts, 8, 5)) + + function bar(): Lib; +>bar : Symbol(bar, Decl(mod1.ts, 9, 19)) +>Lib : Symbol(Lib, Decl(index.d.ts, 0, 0)) + } +} + diff --git a/tests/baselines/reference/typeReferenceDirectives9.trace.json b/tests/baselines/reference/typeReferenceDirectives9.trace.json new file mode 100644 index 00000000000..f4fc0937325 --- /dev/null +++ b/tests/baselines/reference/typeReferenceDirectives9.trace.json @@ -0,0 +1,22 @@ +[ + "======== Resolving module './main' from '/mod2.ts'. ========", + "Module resolution kind is not specified, using 'NodeJs'.", + "Loading module as file / folder, candidate module location '/main'.", + "File '/main.ts' exist - use it as a name resolution result.", + "======== Module name './main' was successfully resolved to '/main.ts'. ========", + "======== Resolving module './mod1' from '/mod2.ts'. ========", + "Module resolution kind is not specified, using 'NodeJs'.", + "Loading module as file / folder, candidate module location '/mod1'.", + "File '/mod1.ts' exist - use it as a name resolution result.", + "======== Module name './mod1' was successfully resolved to '/mod1.ts'. ========", + "======== Resolving type reference directive 'lib', containing file '/mod1.ts', root directory '/'. ========", + "Resolving with primary search path '/types/'", + "File '/types/lib/package.json' does not exist.", + "File '/types/lib/index.d.ts' exist - use it as a name resolution result.", + "======== Type reference directive 'lib' was successfully resolved to '/types/lib/index.d.ts', primary: true. ========", + "======== Resolving module './main' from '/mod1.ts'. ========", + "Module resolution kind is not specified, using 'NodeJs'.", + "Loading module as file / folder, candidate module location '/main'.", + "File '/main.ts' exist - use it as a name resolution result.", + "======== Module name './main' was successfully resolved to '/main.ts'. ========" +] \ No newline at end of file diff --git a/tests/baselines/reference/typeReferenceDirectives9.types b/tests/baselines/reference/typeReferenceDirectives9.types new file mode 100644 index 00000000000..bd429b91f1c --- /dev/null +++ b/tests/baselines/reference/typeReferenceDirectives9.types @@ -0,0 +1,73 @@ +=== /mod2.ts === +import { Cls } from "./main"; +>Cls : typeof Cls + +import "./mod1"; + +export const cls = Cls; +>cls : typeof Cls +>Cls : typeof Cls + +export const foo = new Cls().foo(); +>foo : Lib +>new Cls().foo() : Lib +>new Cls().foo : () => Lib +>new Cls() : Cls +>Cls : typeof Cls +>foo : () => Lib + +export const bar = Cls.bar(); +>bar : Lib +>Cls.bar() : Lib +>Cls.bar : () => Lib +>Cls : typeof Cls +>bar : () => Lib + +=== /types/lib/index.d.ts === + + +interface Lib { x } +>Lib : Lib +>x : any + +=== /main.ts === +export class Cls { +>Cls : Cls + + x +>x : any +} + +=== /mod1.ts === +/// + +import {Cls} from "./main"; +>Cls : typeof Cls + +Cls.prototype.foo = function() { return undefined; } +>Cls.prototype.foo = function() { return undefined; } : () => any +>Cls.prototype.foo : () => Lib +>Cls.prototype : Cls +>Cls : typeof Cls +>prototype : Cls +>foo : () => Lib +>function() { return undefined; } : () => any +>undefined : undefined + +declare module "./main" { + interface Cls { +>Cls : Cls + + foo(): Lib; +>foo : () => Lib +>Lib : Lib + } + namespace Cls { +>Cls : typeof Cls + + function bar(): Lib; +>bar : () => Lib +>Lib : Lib + } +} + diff --git a/tests/baselines/reference/typeResolution.symbols b/tests/baselines/reference/typeResolution.symbols index aa0d611e52e..b967bd3d7ff 100644 --- a/tests/baselines/reference/typeResolution.symbols +++ b/tests/baselines/reference/typeResolution.symbols @@ -12,7 +12,7 @@ export module TopLevelModule1 { >ClassA : Symbol(ClassA, Decl(typeResolution.ts, 2, 37)) public AisIn1_1_1() { ->AisIn1_1_1 : Symbol(AisIn1_1_1, Decl(typeResolution.ts, 3, 33)) +>AisIn1_1_1 : Symbol(ClassA.AisIn1_1_1, Decl(typeResolution.ts, 3, 33)) // Try all qualified names of this type var a1: ClassA; a1.AisIn1_1_1(); @@ -99,7 +99,7 @@ export module TopLevelModule1 { >ClassB : Symbol(ClassB, Decl(typeResolution.ts, 22, 13)) public BisIn1_1_1() { ->BisIn1_1_1 : Symbol(BisIn1_1_1, Decl(typeResolution.ts, 23, 33)) +>BisIn1_1_1 : Symbol(ClassB.BisIn1_1_1, Decl(typeResolution.ts, 23, 33)) /** Exactly the same as above in AisIn1_1_1 **/ @@ -195,7 +195,7 @@ export module TopLevelModule1 { } export interface InterfaceX { XisIn1_1_1(); } >InterfaceX : Symbol(InterfaceX, Decl(typeResolution.ts, 45, 13)) ->XisIn1_1_1 : Symbol(XisIn1_1_1, Decl(typeResolution.ts, 46, 41)) +>XisIn1_1_1 : Symbol(InterfaceX.XisIn1_1_1, Decl(typeResolution.ts, 46, 41)) class NonExportedClassQ { >NonExportedClassQ : Symbol(NonExportedClassQ, Decl(typeResolution.ts, 46, 57)) @@ -302,19 +302,19 @@ export module TopLevelModule1 { // No code here since these are the mirror of the above calls export class ClassA { public AisIn1_2_2() { } } >ClassA : Symbol(ClassA, Decl(typeResolution.ts, 76, 37)) ->AisIn1_2_2 : Symbol(AisIn1_2_2, Decl(typeResolution.ts, 78, 33)) +>AisIn1_2_2 : Symbol(ClassA.AisIn1_2_2, Decl(typeResolution.ts, 78, 33)) export class ClassB { public BisIn1_2_2() { } } >ClassB : Symbol(ClassB, Decl(typeResolution.ts, 78, 59)) ->BisIn1_2_2 : Symbol(BisIn1_2_2, Decl(typeResolution.ts, 79, 33)) +>BisIn1_2_2 : Symbol(ClassB.BisIn1_2_2, Decl(typeResolution.ts, 79, 33)) export class ClassC { public CisIn1_2_2() { } } >ClassC : Symbol(ClassC, Decl(typeResolution.ts, 79, 59)) ->CisIn1_2_2 : Symbol(CisIn1_2_2, Decl(typeResolution.ts, 80, 33)) +>CisIn1_2_2 : Symbol(ClassC.CisIn1_2_2, Decl(typeResolution.ts, 80, 33)) export interface InterfaceY { YisIn1_2_2(); } >InterfaceY : Symbol(InterfaceY, Decl(typeResolution.ts, 80, 59)) ->YisIn1_2_2 : Symbol(YisIn1_2_2, Decl(typeResolution.ts, 81, 41)) +>YisIn1_2_2 : Symbol(InterfaceY.YisIn1_2_2, Decl(typeResolution.ts, 81, 41)) interface NonExportedInterfaceQ { } >NonExportedInterfaceQ : Symbol(NonExportedInterfaceQ, Decl(typeResolution.ts, 81, 57)) @@ -322,21 +322,21 @@ export module TopLevelModule1 { export interface InterfaceY { YisIn1_2(); } >InterfaceY : Symbol(InterfaceY, Decl(typeResolution.ts, 83, 9)) ->YisIn1_2 : Symbol(YisIn1_2, Decl(typeResolution.ts, 85, 37)) +>YisIn1_2 : Symbol(InterfaceY.YisIn1_2, Decl(typeResolution.ts, 85, 37)) } class ClassA { >ClassA : Symbol(ClassA, Decl(typeResolution.ts, 86, 5)) public AisIn1() { } ->AisIn1 : Symbol(AisIn1, Decl(typeResolution.ts, 88, 18)) +>AisIn1 : Symbol(ClassA.AisIn1, Decl(typeResolution.ts, 88, 18)) } interface InterfaceY { >InterfaceY : Symbol(InterfaceY, Decl(typeResolution.ts, 90, 5)) YisIn1(); ->YisIn1 : Symbol(YisIn1, Decl(typeResolution.ts, 92, 26)) +>YisIn1 : Symbol(InterfaceY.YisIn1, Decl(typeResolution.ts, 92, 26)) } module NotExportedModule { @@ -357,7 +357,7 @@ module TopLevelModule2 { >ClassA : Symbol(ClassA, Decl(typeResolution.ts, 102, 30)) public AisIn2_3() { } ->AisIn2_3 : Symbol(AisIn2_3, Decl(typeResolution.ts, 103, 29)) +>AisIn2_3 : Symbol(ClassA.AisIn2_3, Decl(typeResolution.ts, 103, 29)) } } } diff --git a/tests/baselines/reference/typeVal.symbols b/tests/baselines/reference/typeVal.symbols index 353b187a48e..42c8b7158e2 100644 --- a/tests/baselines/reference/typeVal.symbols +++ b/tests/baselines/reference/typeVal.symbols @@ -3,7 +3,7 @@ interface I { >I : Symbol(I, Decl(typeVal.ts, 0, 0), Decl(typeVal.ts, 4, 3)) I:number; ->I : Symbol(I, Decl(typeVal.ts, 0, 13)) +>I : Symbol(I.I, Decl(typeVal.ts, 0, 13)) } var I:I = { I: 3}; diff --git a/tests/baselines/reference/typedArrays.symbols b/tests/baselines/reference/typedArrays.symbols index 7282e8b8879..2d45fb7e5c1 100644 --- a/tests/baselines/reference/typedArrays.symbols +++ b/tests/baselines/reference/typedArrays.symbols @@ -8,39 +8,39 @@ function CreateTypedArrayTypes() { typedArrays[0] = Int8Array; >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 2, 7)) ->Int8Array : Symbol(Int8Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Int8Array : Symbol(Int8Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) typedArrays[1] = Uint8Array; >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 2, 7)) ->Uint8Array : Symbol(Uint8Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Uint8Array : Symbol(Uint8Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) typedArrays[2] = Int16Array; >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 2, 7)) ->Int16Array : Symbol(Int16Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Int16Array : Symbol(Int16Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) typedArrays[3] = Uint16Array; >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 2, 7)) ->Uint16Array : Symbol(Uint16Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Uint16Array : Symbol(Uint16Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) typedArrays[4] = Int32Array; >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 2, 7)) ->Int32Array : Symbol(Int32Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Int32Array : Symbol(Int32Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) typedArrays[5] = Uint32Array; >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 2, 7)) ->Uint32Array : Symbol(Uint32Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Uint32Array : Symbol(Uint32Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) typedArrays[6] = Float32Array; >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 2, 7)) ->Float32Array : Symbol(Float32Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Float32Array : Symbol(Float32Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) typedArrays[7] = Float64Array; >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 2, 7)) ->Float64Array : Symbol(Float64Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Float64Array : Symbol(Float64Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) typedArrays[8] = Uint8ClampedArray; >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 2, 7)) ->Uint8ClampedArray : Symbol(Uint8ClampedArray, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Uint8ClampedArray : Symbol(Uint8ClampedArray, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) return typedArrays; >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 2, 7)) @@ -55,47 +55,47 @@ function CreateTypedArrayInstancesFromLength(obj: number) { typedArrays[0] = new Int8Array(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 17, 7)) ->Int8Array : Symbol(Int8Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Int8Array : Symbol(Int8Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >obj : Symbol(obj, Decl(typedArrays.ts, 16, 45)) typedArrays[1] = new Uint8Array(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 17, 7)) ->Uint8Array : Symbol(Uint8Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Uint8Array : Symbol(Uint8Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >obj : Symbol(obj, Decl(typedArrays.ts, 16, 45)) typedArrays[2] = new Int16Array(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 17, 7)) ->Int16Array : Symbol(Int16Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Int16Array : Symbol(Int16Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >obj : Symbol(obj, Decl(typedArrays.ts, 16, 45)) typedArrays[3] = new Uint16Array(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 17, 7)) ->Uint16Array : Symbol(Uint16Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Uint16Array : Symbol(Uint16Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >obj : Symbol(obj, Decl(typedArrays.ts, 16, 45)) typedArrays[4] = new Int32Array(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 17, 7)) ->Int32Array : Symbol(Int32Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Int32Array : Symbol(Int32Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >obj : Symbol(obj, Decl(typedArrays.ts, 16, 45)) typedArrays[5] = new Uint32Array(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 17, 7)) ->Uint32Array : Symbol(Uint32Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Uint32Array : Symbol(Uint32Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >obj : Symbol(obj, Decl(typedArrays.ts, 16, 45)) typedArrays[6] = new Float32Array(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 17, 7)) ->Float32Array : Symbol(Float32Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Float32Array : Symbol(Float32Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >obj : Symbol(obj, Decl(typedArrays.ts, 16, 45)) typedArrays[7] = new Float64Array(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 17, 7)) ->Float64Array : Symbol(Float64Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Float64Array : Symbol(Float64Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >obj : Symbol(obj, Decl(typedArrays.ts, 16, 45)) typedArrays[8] = new Uint8ClampedArray(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 17, 7)) ->Uint8ClampedArray : Symbol(Uint8ClampedArray, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Uint8ClampedArray : Symbol(Uint8ClampedArray, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >obj : Symbol(obj, Decl(typedArrays.ts, 16, 45)) return typedArrays; @@ -111,47 +111,47 @@ function CreateTypedArrayInstancesFromArray(obj: number[]) { typedArrays[0] = new Int8Array(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 32, 7)) ->Int8Array : Symbol(Int8Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Int8Array : Symbol(Int8Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >obj : Symbol(obj, Decl(typedArrays.ts, 31, 44)) typedArrays[1] = new Uint8Array(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 32, 7)) ->Uint8Array : Symbol(Uint8Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Uint8Array : Symbol(Uint8Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >obj : Symbol(obj, Decl(typedArrays.ts, 31, 44)) typedArrays[2] = new Int16Array(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 32, 7)) ->Int16Array : Symbol(Int16Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Int16Array : Symbol(Int16Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >obj : Symbol(obj, Decl(typedArrays.ts, 31, 44)) typedArrays[3] = new Uint16Array(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 32, 7)) ->Uint16Array : Symbol(Uint16Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Uint16Array : Symbol(Uint16Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >obj : Symbol(obj, Decl(typedArrays.ts, 31, 44)) typedArrays[4] = new Int32Array(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 32, 7)) ->Int32Array : Symbol(Int32Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Int32Array : Symbol(Int32Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >obj : Symbol(obj, Decl(typedArrays.ts, 31, 44)) typedArrays[5] = new Uint32Array(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 32, 7)) ->Uint32Array : Symbol(Uint32Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Uint32Array : Symbol(Uint32Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >obj : Symbol(obj, Decl(typedArrays.ts, 31, 44)) typedArrays[6] = new Float32Array(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 32, 7)) ->Float32Array : Symbol(Float32Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Float32Array : Symbol(Float32Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >obj : Symbol(obj, Decl(typedArrays.ts, 31, 44)) typedArrays[7] = new Float64Array(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 32, 7)) ->Float64Array : Symbol(Float64Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Float64Array : Symbol(Float64Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >obj : Symbol(obj, Decl(typedArrays.ts, 31, 44)) typedArrays[8] = new Uint8ClampedArray(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 32, 7)) ->Uint8ClampedArray : Symbol(Uint8ClampedArray, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Uint8ClampedArray : Symbol(Uint8ClampedArray, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >obj : Symbol(obj, Decl(typedArrays.ts, 31, 44)) return typedArrays; @@ -167,65 +167,65 @@ function CreateIntegerTypedArraysFromArray2(obj:number[]) { typedArrays[0] = Int8Array.from(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 47, 7)) ->Int8Array.from : Symbol(Int8ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Int8Array : Symbol(Int8Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->from : Symbol(Int8ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Int8Array.from : Symbol(Int8ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>Int8Array : Symbol(Int8Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>from : Symbol(Int8ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >obj : Symbol(obj, Decl(typedArrays.ts, 46, 44)) typedArrays[1] = Uint8Array.from(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 47, 7)) ->Uint8Array.from : Symbol(Uint8ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Uint8Array : Symbol(Uint8Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->from : Symbol(Uint8ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Uint8Array.from : Symbol(Uint8ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>Uint8Array : Symbol(Uint8Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>from : Symbol(Uint8ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >obj : Symbol(obj, Decl(typedArrays.ts, 46, 44)) typedArrays[2] = Int16Array.from(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 47, 7)) ->Int16Array.from : Symbol(Int16ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Int16Array : Symbol(Int16Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->from : Symbol(Int16ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Int16Array.from : Symbol(Int16ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>Int16Array : Symbol(Int16Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>from : Symbol(Int16ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >obj : Symbol(obj, Decl(typedArrays.ts, 46, 44)) typedArrays[3] = Uint16Array.from(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 47, 7)) ->Uint16Array.from : Symbol(Uint16ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Uint16Array : Symbol(Uint16Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->from : Symbol(Uint16ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Uint16Array.from : Symbol(Uint16ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>Uint16Array : Symbol(Uint16Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>from : Symbol(Uint16ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >obj : Symbol(obj, Decl(typedArrays.ts, 46, 44)) typedArrays[4] = Int32Array.from(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 47, 7)) ->Int32Array.from : Symbol(Int32ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Int32Array : Symbol(Int32Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->from : Symbol(Int32ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Int32Array.from : Symbol(Int32ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>Int32Array : Symbol(Int32Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>from : Symbol(Int32ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >obj : Symbol(obj, Decl(typedArrays.ts, 46, 44)) typedArrays[5] = Uint32Array.from(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 47, 7)) ->Uint32Array.from : Symbol(Uint32ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Uint32Array : Symbol(Uint32Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->from : Symbol(Uint32ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Uint32Array.from : Symbol(Uint32ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>Uint32Array : Symbol(Uint32Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>from : Symbol(Uint32ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >obj : Symbol(obj, Decl(typedArrays.ts, 46, 44)) typedArrays[6] = Float32Array.from(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 47, 7)) ->Float32Array.from : Symbol(Float32ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Float32Array : Symbol(Float32Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->from : Symbol(Float32ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Float32Array.from : Symbol(Float32ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>Float32Array : Symbol(Float32Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>from : Symbol(Float32ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >obj : Symbol(obj, Decl(typedArrays.ts, 46, 44)) typedArrays[7] = Float64Array.from(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 47, 7)) ->Float64Array.from : Symbol(Float64ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Float64Array : Symbol(Float64Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->from : Symbol(Float64ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Float64Array.from : Symbol(Float64ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>Float64Array : Symbol(Float64Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>from : Symbol(Float64ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >obj : Symbol(obj, Decl(typedArrays.ts, 46, 44)) typedArrays[8] = Uint8ClampedArray.from(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 47, 7)) ->Uint8ClampedArray.from : Symbol(Uint8ClampedArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Uint8ClampedArray : Symbol(Uint8ClampedArray, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->from : Symbol(Uint8ClampedArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Uint8ClampedArray.from : Symbol(Uint8ClampedArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>Uint8ClampedArray : Symbol(Uint8ClampedArray, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>from : Symbol(Uint8ClampedArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >obj : Symbol(obj, Decl(typedArrays.ts, 46, 44)) return typedArrays; @@ -235,72 +235,72 @@ function CreateIntegerTypedArraysFromArray2(obj:number[]) { function CreateIntegerTypedArraysFromArrayLike(obj:ArrayLike) { >CreateIntegerTypedArraysFromArrayLike : Symbol(CreateIntegerTypedArraysFromArrayLike, Decl(typedArrays.ts, 59, 1)) >obj : Symbol(obj, Decl(typedArrays.ts, 61, 47)) ->ArrayLike : Symbol(ArrayLike, Decl(lib.d.ts, --, --)) +>ArrayLike : Symbol(ArrayLike, Decl(lib.es5.d.ts, --, --)) var typedArrays = []; >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 62, 7)) typedArrays[0] = Int8Array.from(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 62, 7)) ->Int8Array.from : Symbol(Int8ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Int8Array : Symbol(Int8Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->from : Symbol(Int8ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Int8Array.from : Symbol(Int8ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>Int8Array : Symbol(Int8Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>from : Symbol(Int8ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >obj : Symbol(obj, Decl(typedArrays.ts, 61, 47)) typedArrays[1] = Uint8Array.from(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 62, 7)) ->Uint8Array.from : Symbol(Uint8ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Uint8Array : Symbol(Uint8Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->from : Symbol(Uint8ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Uint8Array.from : Symbol(Uint8ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>Uint8Array : Symbol(Uint8Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>from : Symbol(Uint8ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >obj : Symbol(obj, Decl(typedArrays.ts, 61, 47)) typedArrays[2] = Int16Array.from(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 62, 7)) ->Int16Array.from : Symbol(Int16ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Int16Array : Symbol(Int16Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->from : Symbol(Int16ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Int16Array.from : Symbol(Int16ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>Int16Array : Symbol(Int16Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>from : Symbol(Int16ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >obj : Symbol(obj, Decl(typedArrays.ts, 61, 47)) typedArrays[3] = Uint16Array.from(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 62, 7)) ->Uint16Array.from : Symbol(Uint16ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Uint16Array : Symbol(Uint16Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->from : Symbol(Uint16ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Uint16Array.from : Symbol(Uint16ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>Uint16Array : Symbol(Uint16Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>from : Symbol(Uint16ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >obj : Symbol(obj, Decl(typedArrays.ts, 61, 47)) typedArrays[4] = Int32Array.from(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 62, 7)) ->Int32Array.from : Symbol(Int32ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Int32Array : Symbol(Int32Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->from : Symbol(Int32ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Int32Array.from : Symbol(Int32ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>Int32Array : Symbol(Int32Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>from : Symbol(Int32ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >obj : Symbol(obj, Decl(typedArrays.ts, 61, 47)) typedArrays[5] = Uint32Array.from(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 62, 7)) ->Uint32Array.from : Symbol(Uint32ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Uint32Array : Symbol(Uint32Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->from : Symbol(Uint32ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Uint32Array.from : Symbol(Uint32ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>Uint32Array : Symbol(Uint32Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>from : Symbol(Uint32ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >obj : Symbol(obj, Decl(typedArrays.ts, 61, 47)) typedArrays[6] = Float32Array.from(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 62, 7)) ->Float32Array.from : Symbol(Float32ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Float32Array : Symbol(Float32Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->from : Symbol(Float32ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Float32Array.from : Symbol(Float32ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>Float32Array : Symbol(Float32Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>from : Symbol(Float32ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >obj : Symbol(obj, Decl(typedArrays.ts, 61, 47)) typedArrays[7] = Float64Array.from(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 62, 7)) ->Float64Array.from : Symbol(Float64ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Float64Array : Symbol(Float64Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->from : Symbol(Float64ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Float64Array.from : Symbol(Float64ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>Float64Array : Symbol(Float64Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>from : Symbol(Float64ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >obj : Symbol(obj, Decl(typedArrays.ts, 61, 47)) typedArrays[8] = Uint8ClampedArray.from(obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 62, 7)) ->Uint8ClampedArray.from : Symbol(Uint8ClampedArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Uint8ClampedArray : Symbol(Uint8ClampedArray, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->from : Symbol(Uint8ClampedArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Uint8ClampedArray.from : Symbol(Uint8ClampedArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>Uint8ClampedArray : Symbol(Uint8ClampedArray, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>from : Symbol(Uint8ClampedArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >obj : Symbol(obj, Decl(typedArrays.ts, 61, 47)) return typedArrays; @@ -316,65 +316,65 @@ function CreateTypedArraysOf(obj) { typedArrays[0] = Int8Array.of(...obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 77, 7)) ->Int8Array.of : Symbol(Int8ArrayConstructor.of, Decl(lib.d.ts, --, --)) ->Int8Array : Symbol(Int8Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->of : Symbol(Int8ArrayConstructor.of, Decl(lib.d.ts, --, --)) +>Int8Array.of : Symbol(Int8ArrayConstructor.of, Decl(lib.es5.d.ts, --, --)) +>Int8Array : Symbol(Int8Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>of : Symbol(Int8ArrayConstructor.of, Decl(lib.es5.d.ts, --, --)) >obj : Symbol(obj, Decl(typedArrays.ts, 76, 29)) typedArrays[1] = Uint8Array.of(...obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 77, 7)) ->Uint8Array.of : Symbol(Uint8ArrayConstructor.of, Decl(lib.d.ts, --, --)) ->Uint8Array : Symbol(Uint8Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->of : Symbol(Uint8ArrayConstructor.of, Decl(lib.d.ts, --, --)) +>Uint8Array.of : Symbol(Uint8ArrayConstructor.of, Decl(lib.es5.d.ts, --, --)) +>Uint8Array : Symbol(Uint8Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>of : Symbol(Uint8ArrayConstructor.of, Decl(lib.es5.d.ts, --, --)) >obj : Symbol(obj, Decl(typedArrays.ts, 76, 29)) typedArrays[2] = Int16Array.of(...obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 77, 7)) ->Int16Array.of : Symbol(Int16ArrayConstructor.of, Decl(lib.d.ts, --, --)) ->Int16Array : Symbol(Int16Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->of : Symbol(Int16ArrayConstructor.of, Decl(lib.d.ts, --, --)) +>Int16Array.of : Symbol(Int16ArrayConstructor.of, Decl(lib.es5.d.ts, --, --)) +>Int16Array : Symbol(Int16Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>of : Symbol(Int16ArrayConstructor.of, Decl(lib.es5.d.ts, --, --)) >obj : Symbol(obj, Decl(typedArrays.ts, 76, 29)) typedArrays[3] = Uint16Array.of(...obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 77, 7)) ->Uint16Array.of : Symbol(Uint16ArrayConstructor.of, Decl(lib.d.ts, --, --)) ->Uint16Array : Symbol(Uint16Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->of : Symbol(Uint16ArrayConstructor.of, Decl(lib.d.ts, --, --)) +>Uint16Array.of : Symbol(Uint16ArrayConstructor.of, Decl(lib.es5.d.ts, --, --)) +>Uint16Array : Symbol(Uint16Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>of : Symbol(Uint16ArrayConstructor.of, Decl(lib.es5.d.ts, --, --)) >obj : Symbol(obj, Decl(typedArrays.ts, 76, 29)) typedArrays[4] = Int32Array.of(...obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 77, 7)) ->Int32Array.of : Symbol(Int32ArrayConstructor.of, Decl(lib.d.ts, --, --)) ->Int32Array : Symbol(Int32Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->of : Symbol(Int32ArrayConstructor.of, Decl(lib.d.ts, --, --)) +>Int32Array.of : Symbol(Int32ArrayConstructor.of, Decl(lib.es5.d.ts, --, --)) +>Int32Array : Symbol(Int32Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>of : Symbol(Int32ArrayConstructor.of, Decl(lib.es5.d.ts, --, --)) >obj : Symbol(obj, Decl(typedArrays.ts, 76, 29)) typedArrays[5] = Uint32Array.of(...obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 77, 7)) ->Uint32Array.of : Symbol(Uint32ArrayConstructor.of, Decl(lib.d.ts, --, --)) ->Uint32Array : Symbol(Uint32Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->of : Symbol(Uint32ArrayConstructor.of, Decl(lib.d.ts, --, --)) +>Uint32Array.of : Symbol(Uint32ArrayConstructor.of, Decl(lib.es5.d.ts, --, --)) +>Uint32Array : Symbol(Uint32Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>of : Symbol(Uint32ArrayConstructor.of, Decl(lib.es5.d.ts, --, --)) >obj : Symbol(obj, Decl(typedArrays.ts, 76, 29)) typedArrays[6] = Float32Array.of(...obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 77, 7)) ->Float32Array.of : Symbol(Float32ArrayConstructor.of, Decl(lib.d.ts, --, --)) ->Float32Array : Symbol(Float32Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->of : Symbol(Float32ArrayConstructor.of, Decl(lib.d.ts, --, --)) +>Float32Array.of : Symbol(Float32ArrayConstructor.of, Decl(lib.es5.d.ts, --, --)) +>Float32Array : Symbol(Float32Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>of : Symbol(Float32ArrayConstructor.of, Decl(lib.es5.d.ts, --, --)) >obj : Symbol(obj, Decl(typedArrays.ts, 76, 29)) typedArrays[7] = Float64Array.of(...obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 77, 7)) ->Float64Array.of : Symbol(Float64ArrayConstructor.of, Decl(lib.d.ts, --, --)) ->Float64Array : Symbol(Float64Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->of : Symbol(Float64ArrayConstructor.of, Decl(lib.d.ts, --, --)) +>Float64Array.of : Symbol(Float64ArrayConstructor.of, Decl(lib.es5.d.ts, --, --)) +>Float64Array : Symbol(Float64Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>of : Symbol(Float64ArrayConstructor.of, Decl(lib.es5.d.ts, --, --)) >obj : Symbol(obj, Decl(typedArrays.ts, 76, 29)) typedArrays[8] = Uint8ClampedArray.of(...obj); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 77, 7)) ->Uint8ClampedArray.of : Symbol(Uint8ClampedArrayConstructor.of, Decl(lib.d.ts, --, --)) ->Uint8ClampedArray : Symbol(Uint8ClampedArray, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->of : Symbol(Uint8ClampedArrayConstructor.of, Decl(lib.d.ts, --, --)) +>Uint8ClampedArray.of : Symbol(Uint8ClampedArrayConstructor.of, Decl(lib.es5.d.ts, --, --)) +>Uint8ClampedArray : Symbol(Uint8ClampedArray, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>of : Symbol(Uint8ClampedArrayConstructor.of, Decl(lib.es5.d.ts, --, --)) >obj : Symbol(obj, Decl(typedArrays.ts, 76, 29)) return typedArrays; @@ -389,57 +389,57 @@ function CreateTypedArraysOf2() { typedArrays[0] = Int8Array.of(1,2,3,4); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 92, 7)) ->Int8Array.of : Symbol(Int8ArrayConstructor.of, Decl(lib.d.ts, --, --)) ->Int8Array : Symbol(Int8Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->of : Symbol(Int8ArrayConstructor.of, Decl(lib.d.ts, --, --)) +>Int8Array.of : Symbol(Int8ArrayConstructor.of, Decl(lib.es5.d.ts, --, --)) +>Int8Array : Symbol(Int8Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>of : Symbol(Int8ArrayConstructor.of, Decl(lib.es5.d.ts, --, --)) typedArrays[1] = Uint8Array.of(1,2,3,4); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 92, 7)) ->Uint8Array.of : Symbol(Uint8ArrayConstructor.of, Decl(lib.d.ts, --, --)) ->Uint8Array : Symbol(Uint8Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->of : Symbol(Uint8ArrayConstructor.of, Decl(lib.d.ts, --, --)) +>Uint8Array.of : Symbol(Uint8ArrayConstructor.of, Decl(lib.es5.d.ts, --, --)) +>Uint8Array : Symbol(Uint8Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>of : Symbol(Uint8ArrayConstructor.of, Decl(lib.es5.d.ts, --, --)) typedArrays[2] = Int16Array.of(1,2,3,4); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 92, 7)) ->Int16Array.of : Symbol(Int16ArrayConstructor.of, Decl(lib.d.ts, --, --)) ->Int16Array : Symbol(Int16Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->of : Symbol(Int16ArrayConstructor.of, Decl(lib.d.ts, --, --)) +>Int16Array.of : Symbol(Int16ArrayConstructor.of, Decl(lib.es5.d.ts, --, --)) +>Int16Array : Symbol(Int16Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>of : Symbol(Int16ArrayConstructor.of, Decl(lib.es5.d.ts, --, --)) typedArrays[3] = Uint16Array.of(1,2,3,4); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 92, 7)) ->Uint16Array.of : Symbol(Uint16ArrayConstructor.of, Decl(lib.d.ts, --, --)) ->Uint16Array : Symbol(Uint16Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->of : Symbol(Uint16ArrayConstructor.of, Decl(lib.d.ts, --, --)) +>Uint16Array.of : Symbol(Uint16ArrayConstructor.of, Decl(lib.es5.d.ts, --, --)) +>Uint16Array : Symbol(Uint16Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>of : Symbol(Uint16ArrayConstructor.of, Decl(lib.es5.d.ts, --, --)) typedArrays[4] = Int32Array.of(1,2,3,4); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 92, 7)) ->Int32Array.of : Symbol(Int32ArrayConstructor.of, Decl(lib.d.ts, --, --)) ->Int32Array : Symbol(Int32Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->of : Symbol(Int32ArrayConstructor.of, Decl(lib.d.ts, --, --)) +>Int32Array.of : Symbol(Int32ArrayConstructor.of, Decl(lib.es5.d.ts, --, --)) +>Int32Array : Symbol(Int32Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>of : Symbol(Int32ArrayConstructor.of, Decl(lib.es5.d.ts, --, --)) typedArrays[5] = Uint32Array.of(1,2,3,4); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 92, 7)) ->Uint32Array.of : Symbol(Uint32ArrayConstructor.of, Decl(lib.d.ts, --, --)) ->Uint32Array : Symbol(Uint32Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->of : Symbol(Uint32ArrayConstructor.of, Decl(lib.d.ts, --, --)) +>Uint32Array.of : Symbol(Uint32ArrayConstructor.of, Decl(lib.es5.d.ts, --, --)) +>Uint32Array : Symbol(Uint32Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>of : Symbol(Uint32ArrayConstructor.of, Decl(lib.es5.d.ts, --, --)) typedArrays[6] = Float32Array.of(1,2,3,4); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 92, 7)) ->Float32Array.of : Symbol(Float32ArrayConstructor.of, Decl(lib.d.ts, --, --)) ->Float32Array : Symbol(Float32Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->of : Symbol(Float32ArrayConstructor.of, Decl(lib.d.ts, --, --)) +>Float32Array.of : Symbol(Float32ArrayConstructor.of, Decl(lib.es5.d.ts, --, --)) +>Float32Array : Symbol(Float32Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>of : Symbol(Float32ArrayConstructor.of, Decl(lib.es5.d.ts, --, --)) typedArrays[7] = Float64Array.of(1,2,3,4); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 92, 7)) ->Float64Array.of : Symbol(Float64ArrayConstructor.of, Decl(lib.d.ts, --, --)) ->Float64Array : Symbol(Float64Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->of : Symbol(Float64ArrayConstructor.of, Decl(lib.d.ts, --, --)) +>Float64Array.of : Symbol(Float64ArrayConstructor.of, Decl(lib.es5.d.ts, --, --)) +>Float64Array : Symbol(Float64Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>of : Symbol(Float64ArrayConstructor.of, Decl(lib.es5.d.ts, --, --)) typedArrays[8] = Uint8ClampedArray.of(1,2,3,4); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 92, 7)) ->Uint8ClampedArray.of : Symbol(Uint8ClampedArrayConstructor.of, Decl(lib.d.ts, --, --)) ->Uint8ClampedArray : Symbol(Uint8ClampedArray, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->of : Symbol(Uint8ClampedArrayConstructor.of, Decl(lib.d.ts, --, --)) +>Uint8ClampedArray.of : Symbol(Uint8ClampedArrayConstructor.of, Decl(lib.es5.d.ts, --, --)) +>Uint8ClampedArray : Symbol(Uint8ClampedArray, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>of : Symbol(Uint8ClampedArrayConstructor.of, Decl(lib.es5.d.ts, --, --)) return typedArrays; >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 92, 7)) @@ -448,7 +448,7 @@ function CreateTypedArraysOf2() { function CreateTypedArraysFromMapFn(obj:ArrayLike, mapFn: (n:number, v:number)=> number) { >CreateTypedArraysFromMapFn : Symbol(CreateTypedArraysFromMapFn, Decl(typedArrays.ts, 104, 1)) >obj : Symbol(obj, Decl(typedArrays.ts, 106, 36)) ->ArrayLike : Symbol(ArrayLike, Decl(lib.d.ts, --, --)) +>ArrayLike : Symbol(ArrayLike, Decl(lib.es5.d.ts, --, --)) >mapFn : Symbol(mapFn, Decl(typedArrays.ts, 106, 58)) >n : Symbol(n, Decl(typedArrays.ts, 106, 67)) >v : Symbol(v, Decl(typedArrays.ts, 106, 76)) @@ -458,73 +458,73 @@ function CreateTypedArraysFromMapFn(obj:ArrayLike, mapFn: (n:number, v:n typedArrays[0] = Int8Array.from(obj, mapFn); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 107, 7)) ->Int8Array.from : Symbol(Int8ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Int8Array : Symbol(Int8Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->from : Symbol(Int8ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Int8Array.from : Symbol(Int8ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>Int8Array : Symbol(Int8Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>from : Symbol(Int8ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >obj : Symbol(obj, Decl(typedArrays.ts, 106, 36)) >mapFn : Symbol(mapFn, Decl(typedArrays.ts, 106, 58)) typedArrays[1] = Uint8Array.from(obj, mapFn); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 107, 7)) ->Uint8Array.from : Symbol(Uint8ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Uint8Array : Symbol(Uint8Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->from : Symbol(Uint8ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Uint8Array.from : Symbol(Uint8ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>Uint8Array : Symbol(Uint8Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>from : Symbol(Uint8ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >obj : Symbol(obj, Decl(typedArrays.ts, 106, 36)) >mapFn : Symbol(mapFn, Decl(typedArrays.ts, 106, 58)) typedArrays[2] = Int16Array.from(obj, mapFn); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 107, 7)) ->Int16Array.from : Symbol(Int16ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Int16Array : Symbol(Int16Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->from : Symbol(Int16ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Int16Array.from : Symbol(Int16ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>Int16Array : Symbol(Int16Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>from : Symbol(Int16ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >obj : Symbol(obj, Decl(typedArrays.ts, 106, 36)) >mapFn : Symbol(mapFn, Decl(typedArrays.ts, 106, 58)) typedArrays[3] = Uint16Array.from(obj, mapFn); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 107, 7)) ->Uint16Array.from : Symbol(Uint16ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Uint16Array : Symbol(Uint16Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->from : Symbol(Uint16ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Uint16Array.from : Symbol(Uint16ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>Uint16Array : Symbol(Uint16Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>from : Symbol(Uint16ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >obj : Symbol(obj, Decl(typedArrays.ts, 106, 36)) >mapFn : Symbol(mapFn, Decl(typedArrays.ts, 106, 58)) typedArrays[4] = Int32Array.from(obj, mapFn); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 107, 7)) ->Int32Array.from : Symbol(Int32ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Int32Array : Symbol(Int32Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->from : Symbol(Int32ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Int32Array.from : Symbol(Int32ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>Int32Array : Symbol(Int32Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>from : Symbol(Int32ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >obj : Symbol(obj, Decl(typedArrays.ts, 106, 36)) >mapFn : Symbol(mapFn, Decl(typedArrays.ts, 106, 58)) typedArrays[5] = Uint32Array.from(obj, mapFn); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 107, 7)) ->Uint32Array.from : Symbol(Uint32ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Uint32Array : Symbol(Uint32Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->from : Symbol(Uint32ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Uint32Array.from : Symbol(Uint32ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>Uint32Array : Symbol(Uint32Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>from : Symbol(Uint32ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >obj : Symbol(obj, Decl(typedArrays.ts, 106, 36)) >mapFn : Symbol(mapFn, Decl(typedArrays.ts, 106, 58)) typedArrays[6] = Float32Array.from(obj, mapFn); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 107, 7)) ->Float32Array.from : Symbol(Float32ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Float32Array : Symbol(Float32Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->from : Symbol(Float32ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Float32Array.from : Symbol(Float32ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>Float32Array : Symbol(Float32Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>from : Symbol(Float32ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >obj : Symbol(obj, Decl(typedArrays.ts, 106, 36)) >mapFn : Symbol(mapFn, Decl(typedArrays.ts, 106, 58)) typedArrays[7] = Float64Array.from(obj, mapFn); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 107, 7)) ->Float64Array.from : Symbol(Float64ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Float64Array : Symbol(Float64Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->from : Symbol(Float64ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Float64Array.from : Symbol(Float64ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>Float64Array : Symbol(Float64Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>from : Symbol(Float64ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >obj : Symbol(obj, Decl(typedArrays.ts, 106, 36)) >mapFn : Symbol(mapFn, Decl(typedArrays.ts, 106, 58)) typedArrays[8] = Uint8ClampedArray.from(obj, mapFn); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 107, 7)) ->Uint8ClampedArray.from : Symbol(Uint8ClampedArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Uint8ClampedArray : Symbol(Uint8ClampedArray, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->from : Symbol(Uint8ClampedArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Uint8ClampedArray.from : Symbol(Uint8ClampedArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>Uint8ClampedArray : Symbol(Uint8ClampedArray, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>from : Symbol(Uint8ClampedArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >obj : Symbol(obj, Decl(typedArrays.ts, 106, 36)) >mapFn : Symbol(mapFn, Decl(typedArrays.ts, 106, 58)) @@ -535,7 +535,7 @@ function CreateTypedArraysFromMapFn(obj:ArrayLike, mapFn: (n:number, v:n function CreateTypedArraysFromThisObj(obj:ArrayLike, mapFn: (n:number, v:number)=> number, thisArg: {}) { >CreateTypedArraysFromThisObj : Symbol(CreateTypedArraysFromThisObj, Decl(typedArrays.ts, 119, 1)) >obj : Symbol(obj, Decl(typedArrays.ts, 121, 38)) ->ArrayLike : Symbol(ArrayLike, Decl(lib.d.ts, --, --)) +>ArrayLike : Symbol(ArrayLike, Decl(lib.es5.d.ts, --, --)) >mapFn : Symbol(mapFn, Decl(typedArrays.ts, 121, 60)) >n : Symbol(n, Decl(typedArrays.ts, 121, 69)) >v : Symbol(v, Decl(typedArrays.ts, 121, 78)) @@ -546,81 +546,81 @@ function CreateTypedArraysFromThisObj(obj:ArrayLike, mapFn: (n:number, v typedArrays[0] = Int8Array.from(obj, mapFn, thisArg); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 122, 7)) ->Int8Array.from : Symbol(Int8ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Int8Array : Symbol(Int8Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->from : Symbol(Int8ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Int8Array.from : Symbol(Int8ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>Int8Array : Symbol(Int8Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>from : Symbol(Int8ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >obj : Symbol(obj, Decl(typedArrays.ts, 121, 38)) >mapFn : Symbol(mapFn, Decl(typedArrays.ts, 121, 60)) >thisArg : Symbol(thisArg, Decl(typedArrays.ts, 121, 98)) typedArrays[1] = Uint8Array.from(obj, mapFn, thisArg); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 122, 7)) ->Uint8Array.from : Symbol(Uint8ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Uint8Array : Symbol(Uint8Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->from : Symbol(Uint8ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Uint8Array.from : Symbol(Uint8ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>Uint8Array : Symbol(Uint8Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>from : Symbol(Uint8ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >obj : Symbol(obj, Decl(typedArrays.ts, 121, 38)) >mapFn : Symbol(mapFn, Decl(typedArrays.ts, 121, 60)) >thisArg : Symbol(thisArg, Decl(typedArrays.ts, 121, 98)) typedArrays[2] = Int16Array.from(obj, mapFn, thisArg); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 122, 7)) ->Int16Array.from : Symbol(Int16ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Int16Array : Symbol(Int16Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->from : Symbol(Int16ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Int16Array.from : Symbol(Int16ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>Int16Array : Symbol(Int16Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>from : Symbol(Int16ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >obj : Symbol(obj, Decl(typedArrays.ts, 121, 38)) >mapFn : Symbol(mapFn, Decl(typedArrays.ts, 121, 60)) >thisArg : Symbol(thisArg, Decl(typedArrays.ts, 121, 98)) typedArrays[3] = Uint16Array.from(obj, mapFn, thisArg); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 122, 7)) ->Uint16Array.from : Symbol(Uint16ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Uint16Array : Symbol(Uint16Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->from : Symbol(Uint16ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Uint16Array.from : Symbol(Uint16ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>Uint16Array : Symbol(Uint16Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>from : Symbol(Uint16ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >obj : Symbol(obj, Decl(typedArrays.ts, 121, 38)) >mapFn : Symbol(mapFn, Decl(typedArrays.ts, 121, 60)) >thisArg : Symbol(thisArg, Decl(typedArrays.ts, 121, 98)) typedArrays[4] = Int32Array.from(obj, mapFn, thisArg); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 122, 7)) ->Int32Array.from : Symbol(Int32ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Int32Array : Symbol(Int32Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->from : Symbol(Int32ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Int32Array.from : Symbol(Int32ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>Int32Array : Symbol(Int32Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>from : Symbol(Int32ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >obj : Symbol(obj, Decl(typedArrays.ts, 121, 38)) >mapFn : Symbol(mapFn, Decl(typedArrays.ts, 121, 60)) >thisArg : Symbol(thisArg, Decl(typedArrays.ts, 121, 98)) typedArrays[5] = Uint32Array.from(obj, mapFn, thisArg); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 122, 7)) ->Uint32Array.from : Symbol(Uint32ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Uint32Array : Symbol(Uint32Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->from : Symbol(Uint32ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Uint32Array.from : Symbol(Uint32ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>Uint32Array : Symbol(Uint32Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>from : Symbol(Uint32ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >obj : Symbol(obj, Decl(typedArrays.ts, 121, 38)) >mapFn : Symbol(mapFn, Decl(typedArrays.ts, 121, 60)) >thisArg : Symbol(thisArg, Decl(typedArrays.ts, 121, 98)) typedArrays[6] = Float32Array.from(obj, mapFn, thisArg); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 122, 7)) ->Float32Array.from : Symbol(Float32ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Float32Array : Symbol(Float32Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->from : Symbol(Float32ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Float32Array.from : Symbol(Float32ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>Float32Array : Symbol(Float32Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>from : Symbol(Float32ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >obj : Symbol(obj, Decl(typedArrays.ts, 121, 38)) >mapFn : Symbol(mapFn, Decl(typedArrays.ts, 121, 60)) >thisArg : Symbol(thisArg, Decl(typedArrays.ts, 121, 98)) typedArrays[7] = Float64Array.from(obj, mapFn, thisArg); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 122, 7)) ->Float64Array.from : Symbol(Float64ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Float64Array : Symbol(Float64Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->from : Symbol(Float64ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Float64Array.from : Symbol(Float64ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>Float64Array : Symbol(Float64Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>from : Symbol(Float64ArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >obj : Symbol(obj, Decl(typedArrays.ts, 121, 38)) >mapFn : Symbol(mapFn, Decl(typedArrays.ts, 121, 60)) >thisArg : Symbol(thisArg, Decl(typedArrays.ts, 121, 98)) typedArrays[8] = Uint8ClampedArray.from(obj, mapFn, thisArg); >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 122, 7)) ->Uint8ClampedArray.from : Symbol(Uint8ClampedArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Uint8ClampedArray : Symbol(Uint8ClampedArray, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->from : Symbol(Uint8ClampedArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Uint8ClampedArray.from : Symbol(Uint8ClampedArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>Uint8ClampedArray : Symbol(Uint8ClampedArray, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>from : Symbol(Uint8ClampedArrayConstructor.from, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >obj : Symbol(obj, Decl(typedArrays.ts, 121, 38)) >mapFn : Symbol(mapFn, Decl(typedArrays.ts, 121, 60)) >thisArg : Symbol(thisArg, Decl(typedArrays.ts, 121, 98)) diff --git a/tests/baselines/reference/typedGenericPrototypeMember.symbols b/tests/baselines/reference/typedGenericPrototypeMember.symbols index ee1d6a1c9f6..e733ea63bdf 100644 --- a/tests/baselines/reference/typedGenericPrototypeMember.symbols +++ b/tests/baselines/reference/typedGenericPrototypeMember.symbols @@ -4,7 +4,7 @@ class List { >T : Symbol(T, Decl(typedGenericPrototypeMember.ts, 0, 11)) add(item: T) { } ->add : Symbol(add, Decl(typedGenericPrototypeMember.ts, 0, 15)) +>add : Symbol(List.add, Decl(typedGenericPrototypeMember.ts, 0, 15)) >item : Symbol(item, Decl(typedGenericPrototypeMember.ts, 1, 7)) >T : Symbol(T, Decl(typedGenericPrototypeMember.ts, 0, 11)) } diff --git a/tests/baselines/reference/typeofClass2.symbols b/tests/baselines/reference/typeofClass2.symbols index 9f06726d368..bd306596f66 100644 --- a/tests/baselines/reference/typeofClass2.symbols +++ b/tests/baselines/reference/typeofClass2.symbols @@ -38,7 +38,7 @@ class D extends C { >x : Symbol(x, Decl(typeofClass2.ts, 13, 15)) foo() { } ->foo : Symbol(foo, Decl(typeofClass2.ts, 13, 29)) +>foo : Symbol(D.foo, Decl(typeofClass2.ts, 13, 29)) } var d: D; diff --git a/tests/baselines/reference/typeofInterface.symbols b/tests/baselines/reference/typeofInterface.symbols index 9aa305e0a30..267b8c0926c 100644 --- a/tests/baselines/reference/typeofInterface.symbols +++ b/tests/baselines/reference/typeofInterface.symbols @@ -7,10 +7,10 @@ interface I { >I : Symbol(I, Decl(typeofInterface.ts, 0, 3), Decl(typeofInterface.ts, 0, 20)) I: number; ->I : Symbol(I, Decl(typeofInterface.ts, 2, 13)) +>I : Symbol(I.I, Decl(typeofInterface.ts, 2, 13)) foo: typeof I; ->foo : Symbol(foo, Decl(typeofInterface.ts, 3, 14)) +>foo : Symbol(I.foo, Decl(typeofInterface.ts, 3, 14)) >I : Symbol(I, Decl(typeofInterface.ts, 0, 3), Decl(typeofInterface.ts, 0, 20)) } diff --git a/tests/baselines/reference/typeofModuleWithoutExports.symbols b/tests/baselines/reference/typeofModuleWithoutExports.symbols index 7ad01e1eda7..747bff96bf5 100644 --- a/tests/baselines/reference/typeofModuleWithoutExports.symbols +++ b/tests/baselines/reference/typeofModuleWithoutExports.symbols @@ -9,7 +9,7 @@ module M { >C : Symbol(C, Decl(typeofModuleWithoutExports.ts, 1, 14)) foo: number; ->foo : Symbol(foo, Decl(typeofModuleWithoutExports.ts, 2, 13)) +>foo : Symbol(C.foo, Decl(typeofModuleWithoutExports.ts, 2, 13)) } } diff --git a/tests/baselines/reference/typeofOperatorWithAnyOtherType.errors.txt b/tests/baselines/reference/typeofOperatorWithAnyOtherType.errors.txt index 0139c96b3f9..f9394c622c0 100644 --- a/tests/baselines/reference/typeofOperatorWithAnyOtherType.errors.txt +++ b/tests/baselines/reference/typeofOperatorWithAnyOtherType.errors.txt @@ -4,9 +4,13 @@ tests/cases/conformance/expressions/unaryOperators/typeofOperator/typeofOperator tests/cases/conformance/expressions/unaryOperators/typeofOperator/typeofOperatorWithAnyOtherType.ts(68,1): error TS7028: Unused label. tests/cases/conformance/expressions/unaryOperators/typeofOperator/typeofOperatorWithAnyOtherType.ts(69,1): error TS7028: Unused label. tests/cases/conformance/expressions/unaryOperators/typeofOperator/typeofOperatorWithAnyOtherType.ts(70,1): error TS7028: Unused label. +tests/cases/conformance/expressions/unaryOperators/typeofOperator/typeofOperatorWithAnyOtherType.ts(71,1): error TS7028: Unused label. +tests/cases/conformance/expressions/unaryOperators/typeofOperator/typeofOperatorWithAnyOtherType.ts(72,1): error TS7028: Unused label. +tests/cases/conformance/expressions/unaryOperators/typeofOperator/typeofOperatorWithAnyOtherType.ts(73,1): error TS7028: Unused label. +tests/cases/conformance/expressions/unaryOperators/typeofOperator/typeofOperatorWithAnyOtherType.ts(74,1): error TS7028: Unused label. -==== tests/cases/conformance/expressions/unaryOperators/typeofOperator/typeofOperatorWithAnyOtherType.ts (6 errors) ==== +==== tests/cases/conformance/expressions/unaryOperators/typeofOperator/typeofOperatorWithAnyOtherType.ts (10 errors) ==== // typeof operator on any type var ANY: any; @@ -90,6 +94,14 @@ tests/cases/conformance/expressions/unaryOperators/typeofOperator/typeofOperator ~ !!! error TS7028: Unused label. z: typeof objA.a; + ~ +!!! error TS7028: Unused label. z: typeof A.foo; + ~ +!!! error TS7028: Unused label. z: typeof M.n; - z: typeof obj1.x; \ No newline at end of file + ~ +!!! error TS7028: Unused label. + z: typeof obj1.x; + ~ +!!! error TS7028: Unused label. \ No newline at end of file diff --git a/tests/baselines/reference/typeofOperatorWithBooleanType.symbols b/tests/baselines/reference/typeofOperatorWithBooleanType.symbols index 0167a14ae03..33589277e01 100644 --- a/tests/baselines/reference/typeofOperatorWithBooleanType.symbols +++ b/tests/baselines/reference/typeofOperatorWithBooleanType.symbols @@ -11,7 +11,7 @@ class A { >A : Symbol(A, Decl(typeofOperatorWithBooleanType.ts, 4, 40)) public a: boolean; ->a : Symbol(a, Decl(typeofOperatorWithBooleanType.ts, 6, 9)) +>a : Symbol(A.a, Decl(typeofOperatorWithBooleanType.ts, 6, 9)) static foo() { return false; } >foo : Symbol(A.foo, Decl(typeofOperatorWithBooleanType.ts, 7, 22)) diff --git a/tests/baselines/reference/typeofOperatorWithNumberType.symbols b/tests/baselines/reference/typeofOperatorWithNumberType.symbols index df49b7dccb6..b413c6e2af8 100644 --- a/tests/baselines/reference/typeofOperatorWithNumberType.symbols +++ b/tests/baselines/reference/typeofOperatorWithNumberType.symbols @@ -13,7 +13,7 @@ class A { >A : Symbol(A, Decl(typeofOperatorWithNumberType.ts, 4, 36)) public a: number; ->a : Symbol(a, Decl(typeofOperatorWithNumberType.ts, 6, 9)) +>a : Symbol(A.a, Decl(typeofOperatorWithNumberType.ts, 6, 9)) static foo() { return 1; } >foo : Symbol(A.foo, Decl(typeofOperatorWithNumberType.ts, 7, 21)) diff --git a/tests/baselines/reference/typeofOperatorWithStringType.errors.txt b/tests/baselines/reference/typeofOperatorWithStringType.errors.txt index 37b2cafab37..bd891c949a3 100644 --- a/tests/baselines/reference/typeofOperatorWithStringType.errors.txt +++ b/tests/baselines/reference/typeofOperatorWithStringType.errors.txt @@ -1,9 +1,13 @@ tests/cases/conformance/expressions/unaryOperators/typeofOperator/typeofOperatorWithStringType.ts(50,1): error TS7028: Unused label. tests/cases/conformance/expressions/unaryOperators/typeofOperator/typeofOperatorWithStringType.ts(51,1): error TS7028: Unused label. tests/cases/conformance/expressions/unaryOperators/typeofOperator/typeofOperatorWithStringType.ts(52,1): error TS7028: Unused label. +tests/cases/conformance/expressions/unaryOperators/typeofOperator/typeofOperatorWithStringType.ts(54,1): error TS7028: Unused label. +tests/cases/conformance/expressions/unaryOperators/typeofOperator/typeofOperatorWithStringType.ts(55,1): error TS7028: Unused label. +tests/cases/conformance/expressions/unaryOperators/typeofOperator/typeofOperatorWithStringType.ts(56,1): error TS7028: Unused label. +tests/cases/conformance/expressions/unaryOperators/typeofOperator/typeofOperatorWithStringType.ts(57,1): error TS7028: Unused label. -==== tests/cases/conformance/expressions/unaryOperators/typeofOperator/typeofOperatorWithStringType.ts (3 errors) ==== +==== tests/cases/conformance/expressions/unaryOperators/typeofOperator/typeofOperatorWithStringType.ts (7 errors) ==== // typeof operator on string type var STRING: string; var STRING1: string[] = ["", "abc"]; @@ -64,6 +68,14 @@ tests/cases/conformance/expressions/unaryOperators/typeofOperator/typeofOperator !!! error TS7028: Unused label. var y = { a: "", b: "" }; z: typeof y.a; + ~ +!!! error TS7028: Unused label. z: typeof objA.a; + ~ +!!! error TS7028: Unused label. z: typeof A.foo; - z: typeof M.n; \ No newline at end of file + ~ +!!! error TS7028: Unused label. + z: typeof M.n; + ~ +!!! error TS7028: Unused label. \ No newline at end of file diff --git a/tests/baselines/reference/typesWithOptionalProperty.symbols b/tests/baselines/reference/typesWithOptionalProperty.symbols index 9c546101099..07af97da644 100644 --- a/tests/baselines/reference/typesWithOptionalProperty.symbols +++ b/tests/baselines/reference/typesWithOptionalProperty.symbols @@ -5,13 +5,13 @@ interface I { >I : Symbol(I, Decl(typesWithOptionalProperty.ts, 0, 0)) foo: string; ->foo : Symbol(foo, Decl(typesWithOptionalProperty.ts, 2, 13)) +>foo : Symbol(I.foo, Decl(typesWithOptionalProperty.ts, 2, 13)) bar?: number; ->bar : Symbol(bar, Decl(typesWithOptionalProperty.ts, 3, 16)) +>bar : Symbol(I.bar, Decl(typesWithOptionalProperty.ts, 3, 16)) baz? (): string; ->baz : Symbol(baz, Decl(typesWithOptionalProperty.ts, 4, 17)) +>baz : Symbol(I.baz, Decl(typesWithOptionalProperty.ts, 4, 17)) } var a: { diff --git a/tests/baselines/reference/typesWithSpecializedCallSignatures.symbols b/tests/baselines/reference/typesWithSpecializedCallSignatures.symbols index 87aa18e3564..f51f9322913 100644 --- a/tests/baselines/reference/typesWithSpecializedCallSignatures.symbols +++ b/tests/baselines/reference/typesWithSpecializedCallSignatures.symbols @@ -3,38 +3,38 @@ class Base { foo: string } >Base : Symbol(Base, Decl(typesWithSpecializedCallSignatures.ts, 0, 0)) ->foo : Symbol(foo, Decl(typesWithSpecializedCallSignatures.ts, 2, 12)) +>foo : Symbol(Base.foo, Decl(typesWithSpecializedCallSignatures.ts, 2, 12)) class Derived1 extends Base { bar: string } >Derived1 : Symbol(Derived1, Decl(typesWithSpecializedCallSignatures.ts, 2, 26)) >Base : Symbol(Base, Decl(typesWithSpecializedCallSignatures.ts, 0, 0)) ->bar : Symbol(bar, Decl(typesWithSpecializedCallSignatures.ts, 3, 29)) +>bar : Symbol(Derived1.bar, Decl(typesWithSpecializedCallSignatures.ts, 3, 29)) class Derived2 extends Base { baz: string } >Derived2 : Symbol(Derived2, Decl(typesWithSpecializedCallSignatures.ts, 3, 43)) >Base : Symbol(Base, Decl(typesWithSpecializedCallSignatures.ts, 0, 0)) ->baz : Symbol(baz, Decl(typesWithSpecializedCallSignatures.ts, 4, 29)) +>baz : Symbol(Derived2.baz, Decl(typesWithSpecializedCallSignatures.ts, 4, 29)) class C { >C : Symbol(C, Decl(typesWithSpecializedCallSignatures.ts, 4, 43)) foo(x: 'hi'): Derived1; ->foo : Symbol(foo, Decl(typesWithSpecializedCallSignatures.ts, 6, 9), Decl(typesWithSpecializedCallSignatures.ts, 7, 27), Decl(typesWithSpecializedCallSignatures.ts, 8, 28), Decl(typesWithSpecializedCallSignatures.ts, 9, 25)) +>foo : Symbol(C.foo, Decl(typesWithSpecializedCallSignatures.ts, 6, 9), Decl(typesWithSpecializedCallSignatures.ts, 7, 27), Decl(typesWithSpecializedCallSignatures.ts, 8, 28), Decl(typesWithSpecializedCallSignatures.ts, 9, 25)) >x : Symbol(x, Decl(typesWithSpecializedCallSignatures.ts, 7, 8)) >Derived1 : Symbol(Derived1, Decl(typesWithSpecializedCallSignatures.ts, 2, 26)) foo(x: 'bye'): Derived2; ->foo : Symbol(foo, Decl(typesWithSpecializedCallSignatures.ts, 6, 9), Decl(typesWithSpecializedCallSignatures.ts, 7, 27), Decl(typesWithSpecializedCallSignatures.ts, 8, 28), Decl(typesWithSpecializedCallSignatures.ts, 9, 25)) +>foo : Symbol(C.foo, Decl(typesWithSpecializedCallSignatures.ts, 6, 9), Decl(typesWithSpecializedCallSignatures.ts, 7, 27), Decl(typesWithSpecializedCallSignatures.ts, 8, 28), Decl(typesWithSpecializedCallSignatures.ts, 9, 25)) >x : Symbol(x, Decl(typesWithSpecializedCallSignatures.ts, 8, 8)) >Derived2 : Symbol(Derived2, Decl(typesWithSpecializedCallSignatures.ts, 3, 43)) foo(x: string): Base; ->foo : Symbol(foo, Decl(typesWithSpecializedCallSignatures.ts, 6, 9), Decl(typesWithSpecializedCallSignatures.ts, 7, 27), Decl(typesWithSpecializedCallSignatures.ts, 8, 28), Decl(typesWithSpecializedCallSignatures.ts, 9, 25)) +>foo : Symbol(C.foo, Decl(typesWithSpecializedCallSignatures.ts, 6, 9), Decl(typesWithSpecializedCallSignatures.ts, 7, 27), Decl(typesWithSpecializedCallSignatures.ts, 8, 28), Decl(typesWithSpecializedCallSignatures.ts, 9, 25)) >x : Symbol(x, Decl(typesWithSpecializedCallSignatures.ts, 9, 8)) >Base : Symbol(Base, Decl(typesWithSpecializedCallSignatures.ts, 0, 0)) foo(x) { ->foo : Symbol(foo, Decl(typesWithSpecializedCallSignatures.ts, 6, 9), Decl(typesWithSpecializedCallSignatures.ts, 7, 27), Decl(typesWithSpecializedCallSignatures.ts, 8, 28), Decl(typesWithSpecializedCallSignatures.ts, 9, 25)) +>foo : Symbol(C.foo, Decl(typesWithSpecializedCallSignatures.ts, 6, 9), Decl(typesWithSpecializedCallSignatures.ts, 7, 27), Decl(typesWithSpecializedCallSignatures.ts, 8, 28), Decl(typesWithSpecializedCallSignatures.ts, 9, 25)) >x : Symbol(x, Decl(typesWithSpecializedCallSignatures.ts, 10, 8)) return x; @@ -49,17 +49,17 @@ interface I { >I : Symbol(I, Decl(typesWithSpecializedCallSignatures.ts, 14, 16)) foo(x: 'hi'): Derived1; ->foo : Symbol(foo, Decl(typesWithSpecializedCallSignatures.ts, 16, 13), Decl(typesWithSpecializedCallSignatures.ts, 17, 27), Decl(typesWithSpecializedCallSignatures.ts, 18, 28)) +>foo : Symbol(I.foo, Decl(typesWithSpecializedCallSignatures.ts, 16, 13), Decl(typesWithSpecializedCallSignatures.ts, 17, 27), Decl(typesWithSpecializedCallSignatures.ts, 18, 28)) >x : Symbol(x, Decl(typesWithSpecializedCallSignatures.ts, 17, 8)) >Derived1 : Symbol(Derived1, Decl(typesWithSpecializedCallSignatures.ts, 2, 26)) foo(x: 'bye'): Derived2; ->foo : Symbol(foo, Decl(typesWithSpecializedCallSignatures.ts, 16, 13), Decl(typesWithSpecializedCallSignatures.ts, 17, 27), Decl(typesWithSpecializedCallSignatures.ts, 18, 28)) +>foo : Symbol(I.foo, Decl(typesWithSpecializedCallSignatures.ts, 16, 13), Decl(typesWithSpecializedCallSignatures.ts, 17, 27), Decl(typesWithSpecializedCallSignatures.ts, 18, 28)) >x : Symbol(x, Decl(typesWithSpecializedCallSignatures.ts, 18, 8)) >Derived2 : Symbol(Derived2, Decl(typesWithSpecializedCallSignatures.ts, 3, 43)) foo(x: string): Base; ->foo : Symbol(foo, Decl(typesWithSpecializedCallSignatures.ts, 16, 13), Decl(typesWithSpecializedCallSignatures.ts, 17, 27), Decl(typesWithSpecializedCallSignatures.ts, 18, 28)) +>foo : Symbol(I.foo, Decl(typesWithSpecializedCallSignatures.ts, 16, 13), Decl(typesWithSpecializedCallSignatures.ts, 17, 27), Decl(typesWithSpecializedCallSignatures.ts, 18, 28)) >x : Symbol(x, Decl(typesWithSpecializedCallSignatures.ts, 19, 8)) >Base : Symbol(Base, Decl(typesWithSpecializedCallSignatures.ts, 0, 0)) } diff --git a/tests/baselines/reference/typesWithSpecializedConstructSignatures.symbols b/tests/baselines/reference/typesWithSpecializedConstructSignatures.symbols index 428be5f7438..1adb4e6d96c 100644 --- a/tests/baselines/reference/typesWithSpecializedConstructSignatures.symbols +++ b/tests/baselines/reference/typesWithSpecializedConstructSignatures.symbols @@ -3,17 +3,17 @@ class Base { foo: string } >Base : Symbol(Base, Decl(typesWithSpecializedConstructSignatures.ts, 0, 0)) ->foo : Symbol(foo, Decl(typesWithSpecializedConstructSignatures.ts, 2, 12)) +>foo : Symbol(Base.foo, Decl(typesWithSpecializedConstructSignatures.ts, 2, 12)) class Derived1 extends Base { bar: string } >Derived1 : Symbol(Derived1, Decl(typesWithSpecializedConstructSignatures.ts, 2, 26)) >Base : Symbol(Base, Decl(typesWithSpecializedConstructSignatures.ts, 0, 0)) ->bar : Symbol(bar, Decl(typesWithSpecializedConstructSignatures.ts, 3, 29)) +>bar : Symbol(Derived1.bar, Decl(typesWithSpecializedConstructSignatures.ts, 3, 29)) class Derived2 extends Base { baz: string } >Derived2 : Symbol(Derived2, Decl(typesWithSpecializedConstructSignatures.ts, 3, 43)) >Base : Symbol(Base, Decl(typesWithSpecializedConstructSignatures.ts, 0, 0)) ->baz : Symbol(baz, Decl(typesWithSpecializedConstructSignatures.ts, 4, 29)) +>baz : Symbol(Derived2.baz, Decl(typesWithSpecializedConstructSignatures.ts, 4, 29)) class C { >C : Symbol(C, Decl(typesWithSpecializedConstructSignatures.ts, 4, 43)) diff --git a/tests/baselines/reference/umd-augmentation-1.js b/tests/baselines/reference/umd-augmentation-1.js new file mode 100644 index 00000000000..b3ffcf670a8 --- /dev/null +++ b/tests/baselines/reference/umd-augmentation-1.js @@ -0,0 +1,50 @@ +//// [tests/cases/conformance/externalModules/umd-augmentation-1.ts] //// + +//// [index.d.ts] + +export as namespace Math2d; + +export interface Point { + x: number; + y: number; +} + +export class Vector implements Point { + x: number; + y: number; + constructor(x: number, y: number); + + translate(dx: number, dy: number): Vector; +} + +export function getLength(p: Vector): number; + +//// [math2d-augment.d.ts] +import * as Math2d from 'math2d'; +// Augment the module +declare module 'math2d' { + // Add a method to the class + interface Vector { + reverse(): Math2d.Point; + } +} + +//// [b.ts] +/// +import * as m from 'math2d'; +let v = new m.Vector(3, 2); +let magnitude = m.getLength(v); +let p: m.Point = v.translate(5, 5); +p = v.reverse(); +var t = p.x; + + +//// [b.js] +"use strict"; +/// +var m = require('math2d'); +var v = new m.Vector(3, 2); +var magnitude = m.getLength(v); +var p = v.translate(5, 5); +p = v.reverse(); +var t = p.x; diff --git a/tests/baselines/reference/umd-augmentation-1.symbols b/tests/baselines/reference/umd-augmentation-1.symbols new file mode 100644 index 00000000000..645511350a9 --- /dev/null +++ b/tests/baselines/reference/umd-augmentation-1.symbols @@ -0,0 +1,95 @@ +=== tests/cases/conformance/externalModules/b.ts === +/// +import * as m from 'math2d'; +>m : Symbol(m, Decl(b.ts, 1, 6)) + +let v = new m.Vector(3, 2); +>v : Symbol(v, Decl(b.ts, 2, 3)) +>m.Vector : Symbol(m.Vector, Decl(index.d.ts, 6, 1), Decl(math2d-augment.d.ts, 2, 25)) +>m : Symbol(m, Decl(b.ts, 1, 6)) +>Vector : Symbol(m.Vector, Decl(index.d.ts, 6, 1), Decl(math2d-augment.d.ts, 2, 25)) + +let magnitude = m.getLength(v); +>magnitude : Symbol(magnitude, Decl(b.ts, 3, 3)) +>m.getLength : Symbol(m.getLength, Decl(index.d.ts, 14, 1)) +>m : Symbol(m, Decl(b.ts, 1, 6)) +>getLength : Symbol(m.getLength, Decl(index.d.ts, 14, 1)) +>v : Symbol(v, Decl(b.ts, 2, 3)) + +let p: m.Point = v.translate(5, 5); +>p : Symbol(p, Decl(b.ts, 4, 3)) +>m : Symbol(m, Decl(b.ts, 1, 6)) +>Point : Symbol(m.Point, Decl(index.d.ts, 1, 27)) +>v.translate : Symbol(m.Vector.translate, Decl(index.d.ts, 11, 35)) +>v : Symbol(v, Decl(b.ts, 2, 3)) +>translate : Symbol(m.Vector.translate, Decl(index.d.ts, 11, 35)) + +p = v.reverse(); +>p : Symbol(p, Decl(b.ts, 4, 3)) +>v.reverse : Symbol(m.Vector.reverse, Decl(math2d-augment.d.ts, 4, 19)) +>v : Symbol(v, Decl(b.ts, 2, 3)) +>reverse : Symbol(m.Vector.reverse, Decl(math2d-augment.d.ts, 4, 19)) + +var t = p.x; +>t : Symbol(t, Decl(b.ts, 6, 3)) +>p.x : Symbol(m.Point.x, Decl(index.d.ts, 3, 24)) +>p : Symbol(p, Decl(b.ts, 4, 3)) +>x : Symbol(m.Point.x, Decl(index.d.ts, 3, 24)) + +=== tests/cases/conformance/externalModules/node_modules/math2d/index.d.ts === + +export as namespace Math2d; + +export interface Point { +>Point : Symbol(Point, Decl(index.d.ts, 1, 27)) + + x: number; +>x : Symbol(Point.x, Decl(index.d.ts, 3, 24)) + + y: number; +>y : Symbol(Point.y, Decl(index.d.ts, 4, 11)) +} + +export class Vector implements Point { +>Vector : Symbol(Vector, Decl(index.d.ts, 6, 1), Decl(math2d-augment.d.ts, 2, 25)) +>Point : Symbol(Point, Decl(index.d.ts, 1, 27)) + + x: number; +>x : Symbol(Vector.x, Decl(index.d.ts, 8, 38)) + + y: number; +>y : Symbol(Vector.y, Decl(index.d.ts, 9, 11)) + + constructor(x: number, y: number); +>x : Symbol(x, Decl(index.d.ts, 11, 13)) +>y : Symbol(y, Decl(index.d.ts, 11, 23)) + + translate(dx: number, dy: number): Vector; +>translate : Symbol(Vector.translate, Decl(index.d.ts, 11, 35)) +>dx : Symbol(dx, Decl(index.d.ts, 13, 11)) +>dy : Symbol(dy, Decl(index.d.ts, 13, 22)) +>Vector : Symbol(Vector, Decl(index.d.ts, 6, 1), Decl(math2d-augment.d.ts, 2, 25)) +} + +export function getLength(p: Vector): number; +>getLength : Symbol(getLength, Decl(index.d.ts, 14, 1)) +>p : Symbol(p, Decl(index.d.ts, 16, 26)) +>Vector : Symbol(Vector, Decl(index.d.ts, 6, 1), Decl(math2d-augment.d.ts, 2, 25)) + +=== tests/cases/conformance/externalModules/math2d-augment.d.ts === +import * as Math2d from 'math2d'; +>Math2d : Symbol(Math2d, Decl(math2d-augment.d.ts, 0, 6)) + +// Augment the module +declare module 'math2d' { + // Add a method to the class + interface Vector { +>Vector : Symbol(Vector, Decl(index.d.ts, 6, 1), Decl(math2d-augment.d.ts, 2, 25)) + + reverse(): Math2d.Point; +>reverse : Symbol(Vector.reverse, Decl(math2d-augment.d.ts, 4, 19)) +>Math2d : Symbol(Math2d, Decl(math2d-augment.d.ts, 0, 6)) +>Point : Symbol(Point, Decl(index.d.ts, 1, 27)) + } +} + diff --git a/tests/baselines/reference/umd-augmentation-1.types b/tests/baselines/reference/umd-augmentation-1.types new file mode 100644 index 00000000000..31ac43fe855 --- /dev/null +++ b/tests/baselines/reference/umd-augmentation-1.types @@ -0,0 +1,105 @@ +=== tests/cases/conformance/externalModules/b.ts === +/// +import * as m from 'math2d'; +>m : typeof m + +let v = new m.Vector(3, 2); +>v : m.Vector +>new m.Vector(3, 2) : m.Vector +>m.Vector : typeof m.Vector +>m : typeof m +>Vector : typeof m.Vector +>3 : number +>2 : number + +let magnitude = m.getLength(v); +>magnitude : number +>m.getLength(v) : number +>m.getLength : (p: m.Vector) => number +>m : typeof m +>getLength : (p: m.Vector) => number +>v : m.Vector + +let p: m.Point = v.translate(5, 5); +>p : m.Point +>m : any +>Point : m.Point +>v.translate(5, 5) : m.Vector +>v.translate : (dx: number, dy: number) => m.Vector +>v : m.Vector +>translate : (dx: number, dy: number) => m.Vector +>5 : number +>5 : number + +p = v.reverse(); +>p = v.reverse() : m.Point +>p : m.Point +>v.reverse() : m.Point +>v.reverse : () => m.Point +>v : m.Vector +>reverse : () => m.Point + +var t = p.x; +>t : number +>p.x : number +>p : m.Point +>x : number + +=== tests/cases/conformance/externalModules/node_modules/math2d/index.d.ts === + +export as namespace Math2d; +>Math2d : any + +export interface Point { +>Point : Point + + x: number; +>x : number + + y: number; +>y : number +} + +export class Vector implements Point { +>Vector : Vector +>Point : Point + + x: number; +>x : number + + y: number; +>y : number + + constructor(x: number, y: number); +>x : number +>y : number + + translate(dx: number, dy: number): Vector; +>translate : (dx: number, dy: number) => Vector +>dx : number +>dy : number +>Vector : Vector +} + +export function getLength(p: Vector): number; +>getLength : (p: Vector) => number +>p : Vector +>Vector : Vector + +=== tests/cases/conformance/externalModules/math2d-augment.d.ts === +import * as Math2d from 'math2d'; +>Math2d : typeof Math2d + +// Augment the module +declare module 'math2d' { + // Add a method to the class + interface Vector { +>Vector : Vector + + reverse(): Math2d.Point; +>reverse : () => Point +>Math2d : any +>Point : Point + } +} + diff --git a/tests/baselines/reference/umd-augmentation-2.js b/tests/baselines/reference/umd-augmentation-2.js new file mode 100644 index 00000000000..a4a98690b52 --- /dev/null +++ b/tests/baselines/reference/umd-augmentation-2.js @@ -0,0 +1,49 @@ +//// [tests/cases/conformance/externalModules/umd-augmentation-2.ts] //// + +//// [index.d.ts] + +export as namespace Math2d; + +export interface Point { + x: number; + y: number; +} + +export class Vector implements Point { + x: number; + y: number; + constructor(x: number, y: number); + + translate(dx: number, dy: number): Vector; +} + +export function getLength(p: Vector): number; + +//// [math2d-augment.d.ts] +import * as Math2d from 'math2d'; +// Augment the module +declare module 'math2d' { + // Add a method to the class + interface Vector { + reverse(): Math2d.Point; + } +} + +//// [a.ts] +/// +/// +let v = new Math2d.Vector(3, 2); +let magnitude = Math2d.getLength(v); +let p: Math2d.Point = v.translate(5, 5); +p = v.reverse(); +var t = p.x; + + +//// [a.js] +/// +/// +var v = new exports.Math2d.Vector(3, 2); +var magnitude = exports.Math2d.getLength(v); +var p = v.translate(5, 5); +p = v.reverse(); +var t = p.x; diff --git a/tests/baselines/reference/umd-augmentation-2.symbols b/tests/baselines/reference/umd-augmentation-2.symbols new file mode 100644 index 00000000000..bd6584d3d74 --- /dev/null +++ b/tests/baselines/reference/umd-augmentation-2.symbols @@ -0,0 +1,93 @@ +=== tests/cases/conformance/externalModules/a.ts === +/// +/// +let v = new Math2d.Vector(3, 2); +>v : Symbol(v, Decl(a.ts, 2, 3)) +>Math2d.Vector : Symbol(Math2d.Vector, Decl(index.d.ts, 6, 1)) +>Math2d : Symbol(Math2d, Decl(index.d.ts, 0, 0)) +>Vector : Symbol(Math2d.Vector, Decl(index.d.ts, 6, 1)) + +let magnitude = Math2d.getLength(v); +>magnitude : Symbol(magnitude, Decl(a.ts, 3, 3)) +>Math2d.getLength : Symbol(Math2d.getLength, Decl(index.d.ts, 14, 1)) +>Math2d : Symbol(Math2d, Decl(index.d.ts, 0, 0)) +>getLength : Symbol(Math2d.getLength, Decl(index.d.ts, 14, 1)) +>v : Symbol(v, Decl(a.ts, 2, 3)) + +let p: Math2d.Point = v.translate(5, 5); +>p : Symbol(p, Decl(a.ts, 4, 3)) +>Math2d : Symbol(Math2d, Decl(index.d.ts, 0, 0)) +>Point : Symbol(Math2d.Point, Decl(index.d.ts, 1, 27)) +>v.translate : Symbol(Vector.translate, Decl(index.d.ts, 11, 35)) +>v : Symbol(v, Decl(a.ts, 2, 3)) +>translate : Symbol(Vector.translate, Decl(index.d.ts, 11, 35)) + +p = v.reverse(); +>p : Symbol(p, Decl(a.ts, 4, 3)) +>v.reverse : Symbol(Vector.reverse, Decl(math2d-augment.d.ts, 4, 19)) +>v : Symbol(v, Decl(a.ts, 2, 3)) +>reverse : Symbol(Vector.reverse, Decl(math2d-augment.d.ts, 4, 19)) + +var t = p.x; +>t : Symbol(t, Decl(a.ts, 6, 3)) +>p.x : Symbol(Math2d.Point.x, Decl(index.d.ts, 3, 24)) +>p : Symbol(p, Decl(a.ts, 4, 3)) +>x : Symbol(Math2d.Point.x, Decl(index.d.ts, 3, 24)) + +=== tests/cases/conformance/externalModules/node_modules/math2d/index.d.ts === + +export as namespace Math2d; + +export interface Point { +>Point : Symbol(Point, Decl(index.d.ts, 1, 27)) + + x: number; +>x : Symbol(Point.x, Decl(index.d.ts, 3, 24)) + + y: number; +>y : Symbol(Point.y, Decl(index.d.ts, 4, 11)) +} + +export class Vector implements Point { +>Vector : Symbol(Vector, Decl(index.d.ts, 6, 1), Decl(math2d-augment.d.ts, 2, 25)) +>Point : Symbol(Point, Decl(index.d.ts, 1, 27)) + + x: number; +>x : Symbol(Vector.x, Decl(index.d.ts, 8, 38)) + + y: number; +>y : Symbol(Vector.y, Decl(index.d.ts, 9, 11)) + + constructor(x: number, y: number); +>x : Symbol(x, Decl(index.d.ts, 11, 13)) +>y : Symbol(y, Decl(index.d.ts, 11, 23)) + + translate(dx: number, dy: number): Vector; +>translate : Symbol(Vector.translate, Decl(index.d.ts, 11, 35)) +>dx : Symbol(dx, Decl(index.d.ts, 13, 11)) +>dy : Symbol(dy, Decl(index.d.ts, 13, 22)) +>Vector : Symbol(Vector, Decl(index.d.ts, 6, 1), Decl(math2d-augment.d.ts, 2, 25)) +} + +export function getLength(p: Vector): number; +>getLength : Symbol(getLength, Decl(index.d.ts, 14, 1)) +>p : Symbol(p, Decl(index.d.ts, 16, 26)) +>Vector : Symbol(Vector, Decl(index.d.ts, 6, 1), Decl(math2d-augment.d.ts, 2, 25)) + +=== tests/cases/conformance/externalModules/math2d-augment.d.ts === +import * as Math2d from 'math2d'; +>Math2d : Symbol(Math2d, Decl(math2d-augment.d.ts, 0, 6)) + +// Augment the module +declare module 'math2d' { + // Add a method to the class + interface Vector { +>Vector : Symbol(Vector, Decl(index.d.ts, 6, 1), Decl(math2d-augment.d.ts, 2, 25)) + + reverse(): Math2d.Point; +>reverse : Symbol(Vector.reverse, Decl(math2d-augment.d.ts, 4, 19)) +>Math2d : Symbol(Math2d, Decl(math2d-augment.d.ts, 0, 6)) +>Point : Symbol(Point, Decl(index.d.ts, 1, 27)) + } +} + diff --git a/tests/baselines/reference/umd-augmentation-2.types b/tests/baselines/reference/umd-augmentation-2.types new file mode 100644 index 00000000000..20bba091903 --- /dev/null +++ b/tests/baselines/reference/umd-augmentation-2.types @@ -0,0 +1,103 @@ +=== tests/cases/conformance/externalModules/a.ts === +/// +/// +let v = new Math2d.Vector(3, 2); +>v : Vector +>new Math2d.Vector(3, 2) : Vector +>Math2d.Vector : typeof Math2d.Vector +>Math2d : typeof Math2d +>Vector : typeof Math2d.Vector +>3 : number +>2 : number + +let magnitude = Math2d.getLength(v); +>magnitude : number +>Math2d.getLength(v) : number +>Math2d.getLength : (p: Vector) => number +>Math2d : typeof Math2d +>getLength : (p: Vector) => number +>v : Vector + +let p: Math2d.Point = v.translate(5, 5); +>p : Math2d.Point +>Math2d : any +>Point : Math2d.Point +>v.translate(5, 5) : Vector +>v.translate : (dx: number, dy: number) => Vector +>v : Vector +>translate : (dx: number, dy: number) => Vector +>5 : number +>5 : number + +p = v.reverse(); +>p = v.reverse() : Math2d.Point +>p : Math2d.Point +>v.reverse() : Math2d.Point +>v.reverse : () => Math2d.Point +>v : Vector +>reverse : () => Math2d.Point + +var t = p.x; +>t : number +>p.x : number +>p : Math2d.Point +>x : number + +=== tests/cases/conformance/externalModules/node_modules/math2d/index.d.ts === + +export as namespace Math2d; +>Math2d : any + +export interface Point { +>Point : Point + + x: number; +>x : number + + y: number; +>y : number +} + +export class Vector implements Point { +>Vector : Vector +>Point : Point + + x: number; +>x : number + + y: number; +>y : number + + constructor(x: number, y: number); +>x : number +>y : number + + translate(dx: number, dy: number): Vector; +>translate : (dx: number, dy: number) => Vector +>dx : number +>dy : number +>Vector : Vector +} + +export function getLength(p: Vector): number; +>getLength : (p: Vector) => number +>p : Vector +>Vector : Vector + +=== tests/cases/conformance/externalModules/math2d-augment.d.ts === +import * as Math2d from 'math2d'; +>Math2d : typeof Math2d + +// Augment the module +declare module 'math2d' { + // Add a method to the class + interface Vector { +>Vector : Vector + + reverse(): Math2d.Point; +>reverse : () => Point +>Math2d : any +>Point : Point + } +} + diff --git a/tests/baselines/reference/umd-augmentation-3.js b/tests/baselines/reference/umd-augmentation-3.js new file mode 100644 index 00000000000..2b8eac7bf63 --- /dev/null +++ b/tests/baselines/reference/umd-augmentation-3.js @@ -0,0 +1,56 @@ +//// [tests/cases/conformance/externalModules/umd-augmentation-3.ts] //// + +//// [index.d.ts] + +export as namespace Math2d; + +export = M2D; + +declare namespace M2D { + interface Point { + x: number; + y: number; + } + + class Vector implements Point { + x: number; + y: number; + constructor(x: number, y: number); + + translate(dx: number, dy: number): Vector; + } + + function getLength(p: Vector): number; + +} + + +//// [math2d-augment.d.ts] +import * as Math2d from 'math2d'; +// Augment the module +declare module 'math2d' { + // Add a method to the class + interface Vector { + reverse(): Math2d.Point; + } +} + +//// [b.ts] +/// +import * as m from 'math2d'; +let v = new m.Vector(3, 2); +let magnitude = m.getLength(v); +let p: m.Point = v.translate(5, 5); +p = v.reverse(); +var t = p.x; + + +//// [b.js] +"use strict"; +/// +var m = require('math2d'); +var v = new m.Vector(3, 2); +var magnitude = m.getLength(v); +var p = v.translate(5, 5); +p = v.reverse(); +var t = p.x; diff --git a/tests/baselines/reference/umd-augmentation-3.symbols b/tests/baselines/reference/umd-augmentation-3.symbols new file mode 100644 index 00000000000..4923c17954f --- /dev/null +++ b/tests/baselines/reference/umd-augmentation-3.symbols @@ -0,0 +1,104 @@ +=== tests/cases/conformance/externalModules/b.ts === +/// +import * as m from 'math2d'; +>m : Symbol(m, Decl(b.ts, 1, 6)) + +let v = new m.Vector(3, 2); +>v : Symbol(v, Decl(b.ts, 2, 3)) +>m.Vector : Symbol(m.Vector, Decl(index.d.ts, 9, 2), Decl(math2d-augment.d.ts, 2, 25)) +>m : Symbol(m, Decl(b.ts, 1, 6)) +>Vector : Symbol(m.Vector, Decl(index.d.ts, 9, 2), Decl(math2d-augment.d.ts, 2, 25)) + +let magnitude = m.getLength(v); +>magnitude : Symbol(magnitude, Decl(b.ts, 3, 3)) +>m.getLength : Symbol(m.getLength, Decl(index.d.ts, 17, 2)) +>m : Symbol(m, Decl(b.ts, 1, 6)) +>getLength : Symbol(m.getLength, Decl(index.d.ts, 17, 2)) +>v : Symbol(v, Decl(b.ts, 2, 3)) + +let p: m.Point = v.translate(5, 5); +>p : Symbol(p, Decl(b.ts, 4, 3)) +>m : Symbol(m, Decl(b.ts, 1, 6)) +>Point : Symbol(m.Point, Decl(index.d.ts, 5, 23)) +>v.translate : Symbol(m.Vector.translate, Decl(index.d.ts, 14, 36)) +>v : Symbol(v, Decl(b.ts, 2, 3)) +>translate : Symbol(m.Vector.translate, Decl(index.d.ts, 14, 36)) + +p = v.reverse(); +>p : Symbol(p, Decl(b.ts, 4, 3)) +>v.reverse : Symbol(m.Vector.reverse, Decl(math2d-augment.d.ts, 4, 19)) +>v : Symbol(v, Decl(b.ts, 2, 3)) +>reverse : Symbol(m.Vector.reverse, Decl(math2d-augment.d.ts, 4, 19)) + +var t = p.x; +>t : Symbol(t, Decl(b.ts, 6, 3)) +>p.x : Symbol(m.Point.x, Decl(index.d.ts, 6, 18)) +>p : Symbol(p, Decl(b.ts, 4, 3)) +>x : Symbol(m.Point.x, Decl(index.d.ts, 6, 18)) + +=== tests/cases/conformance/externalModules/node_modules/math2d/index.d.ts === + +export as namespace Math2d; + +export = M2D; +>M2D : Symbol(M2D, Decl(index.d.ts, 3, 13)) + +declare namespace M2D { +>M2D : Symbol(, Decl(index.d.ts, 3, 13), Decl(math2d-augment.d.ts, 0, 33)) + + interface Point { +>Point : Symbol(Point, Decl(index.d.ts, 5, 23)) + + x: number; +>x : Symbol(Point.x, Decl(index.d.ts, 6, 18)) + + y: number; +>y : Symbol(Point.y, Decl(index.d.ts, 7, 12)) + } + + class Vector implements Point { +>Vector : Symbol(Vector, Decl(index.d.ts, 9, 2), Decl(math2d-augment.d.ts, 2, 25)) +>Point : Symbol(Point, Decl(index.d.ts, 5, 23)) + + x: number; +>x : Symbol(Vector.x, Decl(index.d.ts, 11, 32)) + + y: number; +>y : Symbol(Vector.y, Decl(index.d.ts, 12, 12)) + + constructor(x: number, y: number); +>x : Symbol(x, Decl(index.d.ts, 14, 14)) +>y : Symbol(y, Decl(index.d.ts, 14, 24)) + + translate(dx: number, dy: number): Vector; +>translate : Symbol(Vector.translate, Decl(index.d.ts, 14, 36)) +>dx : Symbol(dx, Decl(index.d.ts, 16, 12)) +>dy : Symbol(dy, Decl(index.d.ts, 16, 23)) +>Vector : Symbol(Vector, Decl(index.d.ts, 9, 2), Decl(math2d-augment.d.ts, 2, 25)) + } + + function getLength(p: Vector): number; +>getLength : Symbol(getLength, Decl(index.d.ts, 17, 2)) +>p : Symbol(p, Decl(index.d.ts, 19, 20)) +>Vector : Symbol(Vector, Decl(index.d.ts, 9, 2), Decl(math2d-augment.d.ts, 2, 25)) + +} + + +=== tests/cases/conformance/externalModules/math2d-augment.d.ts === +import * as Math2d from 'math2d'; +>Math2d : Symbol(Math2d, Decl(math2d-augment.d.ts, 0, 6)) + +// Augment the module +declare module 'math2d' { + // Add a method to the class + interface Vector { +>Vector : Symbol(Vector, Decl(index.d.ts, 9, 2), Decl(math2d-augment.d.ts, 2, 25)) + + reverse(): Math2d.Point; +>reverse : Symbol(Vector.reverse, Decl(math2d-augment.d.ts, 4, 19)) +>Math2d : Symbol(Math2d, Decl(math2d-augment.d.ts, 0, 6)) +>Point : Symbol(Point, Decl(index.d.ts, 5, 23)) + } +} + diff --git a/tests/baselines/reference/umd-augmentation-3.types b/tests/baselines/reference/umd-augmentation-3.types new file mode 100644 index 00000000000..09a383dc881 --- /dev/null +++ b/tests/baselines/reference/umd-augmentation-3.types @@ -0,0 +1,114 @@ +=== tests/cases/conformance/externalModules/b.ts === +/// +import * as m from 'math2d'; +>m : typeof m + +let v = new m.Vector(3, 2); +>v : m.Vector +>new m.Vector(3, 2) : m.Vector +>m.Vector : typeof m.Vector +>m : typeof m +>Vector : typeof m.Vector +>3 : number +>2 : number + +let magnitude = m.getLength(v); +>magnitude : number +>m.getLength(v) : number +>m.getLength : (p: m.Vector) => number +>m : typeof m +>getLength : (p: m.Vector) => number +>v : m.Vector + +let p: m.Point = v.translate(5, 5); +>p : m.Point +>m : any +>Point : m.Point +>v.translate(5, 5) : m.Vector +>v.translate : (dx: number, dy: number) => m.Vector +>v : m.Vector +>translate : (dx: number, dy: number) => m.Vector +>5 : number +>5 : number + +p = v.reverse(); +>p = v.reverse() : m.Point +>p : m.Point +>v.reverse() : m.Point +>v.reverse : () => m.Point +>v : m.Vector +>reverse : () => m.Point + +var t = p.x; +>t : number +>p.x : number +>p : m.Point +>x : number + +=== tests/cases/conformance/externalModules/node_modules/math2d/index.d.ts === + +export as namespace Math2d; +>Math2d : any + +export = M2D; +>M2D : typeof M2D + +declare namespace M2D { +>M2D : typeof + + interface Point { +>Point : Point + + x: number; +>x : number + + y: number; +>y : number + } + + class Vector implements Point { +>Vector : Vector +>Point : Point + + x: number; +>x : number + + y: number; +>y : number + + constructor(x: number, y: number); +>x : number +>y : number + + translate(dx: number, dy: number): Vector; +>translate : (dx: number, dy: number) => Vector +>dx : number +>dy : number +>Vector : Vector + } + + function getLength(p: Vector): number; +>getLength : (p: Vector) => number +>p : Vector +>Vector : Vector + +} + + +=== tests/cases/conformance/externalModules/math2d-augment.d.ts === +import * as Math2d from 'math2d'; +>Math2d : typeof Math2d + +// Augment the module +declare module 'math2d' { + // Add a method to the class + interface Vector { +>Vector : Vector + + reverse(): Math2d.Point; +>reverse : () => Point +>Math2d : any +>Point : Point + } +} + diff --git a/tests/baselines/reference/umd-augmentation-4.js b/tests/baselines/reference/umd-augmentation-4.js new file mode 100644 index 00000000000..da0f2ec1777 --- /dev/null +++ b/tests/baselines/reference/umd-augmentation-4.js @@ -0,0 +1,55 @@ +//// [tests/cases/conformance/externalModules/umd-augmentation-4.ts] //// + +//// [index.d.ts] + +export as namespace Math2d; + +export = M2D; + +declare namespace M2D { + interface Point { + x: number; + y: number; + } + + class Vector implements Point { + x: number; + y: number; + constructor(x: number, y: number); + + translate(dx: number, dy: number): Vector; + } + + function getLength(p: Vector): number; + +} + + +//// [math2d-augment.d.ts] +import * as Math2d from 'math2d'; +// Augment the module +declare module 'math2d' { + // Add a method to the class + interface Vector { + reverse(): Math2d.Point; + } +} + +//// [a.ts] +/// +/// +let v = new Math2d.Vector(3, 2); +let magnitude = Math2d.getLength(v); +let p: Math2d.Point = v.translate(5, 5); +p = v.reverse(); +var t = p.x; + + +//// [a.js] +/// +/// +var v = new exports.Math2d.Vector(3, 2); +var magnitude = exports.Math2d.getLength(v); +var p = v.translate(5, 5); +p = v.reverse(); +var t = p.x; diff --git a/tests/baselines/reference/umd-augmentation-4.symbols b/tests/baselines/reference/umd-augmentation-4.symbols new file mode 100644 index 00000000000..3f2cc913d86 --- /dev/null +++ b/tests/baselines/reference/umd-augmentation-4.symbols @@ -0,0 +1,102 @@ +=== tests/cases/conformance/externalModules/a.ts === +/// +/// +let v = new Math2d.Vector(3, 2); +>v : Symbol(v, Decl(a.ts, 2, 3)) +>Math2d.Vector : Symbol(Math2d.Vector, Decl(index.d.ts, 9, 2), Decl(math2d-augment.d.ts, 2, 25)) +>Math2d : Symbol(Math2d, Decl(index.d.ts, 0, 0)) +>Vector : Symbol(Math2d.Vector, Decl(index.d.ts, 9, 2), Decl(math2d-augment.d.ts, 2, 25)) + +let magnitude = Math2d.getLength(v); +>magnitude : Symbol(magnitude, Decl(a.ts, 3, 3)) +>Math2d.getLength : Symbol(Math2d.getLength, Decl(index.d.ts, 17, 2)) +>Math2d : Symbol(Math2d, Decl(index.d.ts, 0, 0)) +>getLength : Symbol(Math2d.getLength, Decl(index.d.ts, 17, 2)) +>v : Symbol(v, Decl(a.ts, 2, 3)) + +let p: Math2d.Point = v.translate(5, 5); +>p : Symbol(p, Decl(a.ts, 4, 3)) +>Math2d : Symbol(Math2d, Decl(index.d.ts, 0, 0)) +>Point : Symbol(Math2d.Point, Decl(index.d.ts, 5, 23)) +>v.translate : Symbol(Math2d.Vector.translate, Decl(index.d.ts, 14, 36)) +>v : Symbol(v, Decl(a.ts, 2, 3)) +>translate : Symbol(Math2d.Vector.translate, Decl(index.d.ts, 14, 36)) + +p = v.reverse(); +>p : Symbol(p, Decl(a.ts, 4, 3)) +>v.reverse : Symbol(Math2d.Vector.reverse, Decl(math2d-augment.d.ts, 4, 19)) +>v : Symbol(v, Decl(a.ts, 2, 3)) +>reverse : Symbol(Math2d.Vector.reverse, Decl(math2d-augment.d.ts, 4, 19)) + +var t = p.x; +>t : Symbol(t, Decl(a.ts, 6, 3)) +>p.x : Symbol(Math2d.Point.x, Decl(index.d.ts, 6, 18)) +>p : Symbol(p, Decl(a.ts, 4, 3)) +>x : Symbol(Math2d.Point.x, Decl(index.d.ts, 6, 18)) + +=== tests/cases/conformance/externalModules/node_modules/math2d/index.d.ts === + +export as namespace Math2d; + +export = M2D; +>M2D : Symbol(M2D, Decl(index.d.ts, 3, 13)) + +declare namespace M2D { +>M2D : Symbol(Math2d, Decl(index.d.ts, 3, 13), Decl(math2d-augment.d.ts, 0, 33)) + + interface Point { +>Point : Symbol(Point, Decl(index.d.ts, 5, 23)) + + x: number; +>x : Symbol(Point.x, Decl(index.d.ts, 6, 18)) + + y: number; +>y : Symbol(Point.y, Decl(index.d.ts, 7, 12)) + } + + class Vector implements Point { +>Vector : Symbol(Vector, Decl(index.d.ts, 9, 2), Decl(math2d-augment.d.ts, 2, 25)) +>Point : Symbol(Point, Decl(index.d.ts, 5, 23)) + + x: number; +>x : Symbol(Vector.x, Decl(index.d.ts, 11, 32)) + + y: number; +>y : Symbol(Vector.y, Decl(index.d.ts, 12, 12)) + + constructor(x: number, y: number); +>x : Symbol(x, Decl(index.d.ts, 14, 14)) +>y : Symbol(y, Decl(index.d.ts, 14, 24)) + + translate(dx: number, dy: number): Vector; +>translate : Symbol(Vector.translate, Decl(index.d.ts, 14, 36)) +>dx : Symbol(dx, Decl(index.d.ts, 16, 12)) +>dy : Symbol(dy, Decl(index.d.ts, 16, 23)) +>Vector : Symbol(Vector, Decl(index.d.ts, 9, 2), Decl(math2d-augment.d.ts, 2, 25)) + } + + function getLength(p: Vector): number; +>getLength : Symbol(getLength, Decl(index.d.ts, 17, 2)) +>p : Symbol(p, Decl(index.d.ts, 19, 20)) +>Vector : Symbol(Vector, Decl(index.d.ts, 9, 2), Decl(math2d-augment.d.ts, 2, 25)) + +} + + +=== tests/cases/conformance/externalModules/math2d-augment.d.ts === +import * as Math2d from 'math2d'; +>Math2d : Symbol(Math2d, Decl(math2d-augment.d.ts, 0, 6)) + +// Augment the module +declare module 'math2d' { + // Add a method to the class + interface Vector { +>Vector : Symbol(Vector, Decl(index.d.ts, 9, 2), Decl(math2d-augment.d.ts, 2, 25)) + + reverse(): Math2d.Point; +>reverse : Symbol(Vector.reverse, Decl(math2d-augment.d.ts, 4, 19)) +>Math2d : Symbol(Math2d, Decl(math2d-augment.d.ts, 0, 6)) +>Point : Symbol(Point, Decl(index.d.ts, 5, 23)) + } +} + diff --git a/tests/baselines/reference/umd-augmentation-4.types b/tests/baselines/reference/umd-augmentation-4.types new file mode 100644 index 00000000000..71783d03012 --- /dev/null +++ b/tests/baselines/reference/umd-augmentation-4.types @@ -0,0 +1,112 @@ +=== tests/cases/conformance/externalModules/a.ts === +/// +/// +let v = new Math2d.Vector(3, 2); +>v : Math2d.Vector +>new Math2d.Vector(3, 2) : Math2d.Vector +>Math2d.Vector : typeof Math2d.Vector +>Math2d : typeof Math2d +>Vector : typeof Math2d.Vector +>3 : number +>2 : number + +let magnitude = Math2d.getLength(v); +>magnitude : number +>Math2d.getLength(v) : number +>Math2d.getLength : (p: Math2d.Vector) => number +>Math2d : typeof Math2d +>getLength : (p: Math2d.Vector) => number +>v : Math2d.Vector + +let p: Math2d.Point = v.translate(5, 5); +>p : Math2d.Point +>Math2d : any +>Point : Math2d.Point +>v.translate(5, 5) : Math2d.Vector +>v.translate : (dx: number, dy: number) => Math2d.Vector +>v : Math2d.Vector +>translate : (dx: number, dy: number) => Math2d.Vector +>5 : number +>5 : number + +p = v.reverse(); +>p = v.reverse() : Math2d.Point +>p : Math2d.Point +>v.reverse() : Math2d.Point +>v.reverse : () => Math2d.Point +>v : Math2d.Vector +>reverse : () => Math2d.Point + +var t = p.x; +>t : number +>p.x : number +>p : Math2d.Point +>x : number + +=== tests/cases/conformance/externalModules/node_modules/math2d/index.d.ts === + +export as namespace Math2d; +>Math2d : any + +export = M2D; +>M2D : typeof M2D + +declare namespace M2D { +>M2D : typeof Math2d + + interface Point { +>Point : Point + + x: number; +>x : number + + y: number; +>y : number + } + + class Vector implements Point { +>Vector : Vector +>Point : Point + + x: number; +>x : number + + y: number; +>y : number + + constructor(x: number, y: number); +>x : number +>y : number + + translate(dx: number, dy: number): Vector; +>translate : (dx: number, dy: number) => Vector +>dx : number +>dy : number +>Vector : Vector + } + + function getLength(p: Vector): number; +>getLength : (p: Vector) => number +>p : Vector +>Vector : Vector + +} + + +=== tests/cases/conformance/externalModules/math2d-augment.d.ts === +import * as Math2d from 'math2d'; +>Math2d : typeof Math2d + +// Augment the module +declare module 'math2d' { + // Add a method to the class + interface Vector { +>Vector : Vector + + reverse(): Math2d.Point; +>reverse : () => Point +>Math2d : any +>Point : Point + } +} + diff --git a/tests/baselines/reference/umd-errors.errors.txt b/tests/baselines/reference/umd-errors.errors.txt new file mode 100644 index 00000000000..a9575665277 --- /dev/null +++ b/tests/baselines/reference/umd-errors.errors.txt @@ -0,0 +1,57 @@ +tests/cases/conformance/externalModules/err1.d.ts(3,1): error TS1314: Global module exports may only appear in module files. +tests/cases/conformance/externalModules/err2.d.ts(3,2): error TS1316: Global module exports may only appear at top level. +tests/cases/conformance/externalModules/err3.d.ts(3,1): error TS1184: Modifiers cannot appear here. +tests/cases/conformance/externalModules/err3.d.ts(4,1): error TS1184: Modifiers cannot appear here. +tests/cases/conformance/externalModules/err3.d.ts(5,1): error TS1184: Modifiers cannot appear here. +tests/cases/conformance/externalModules/err3.d.ts(6,7): error TS1134: Variable declaration expected. +tests/cases/conformance/externalModules/err4.d.ts(3,2): error TS1316: Global module exports may only appear at top level. +tests/cases/conformance/externalModules/err5.ts(3,1): error TS1315: Global module exports may only appear in declaration files. + + +==== tests/cases/conformance/externalModules/err1.d.ts (1 errors) ==== + + // Illegal, can't be in script file + export as namespace Foo; + ~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS1314: Global module exports may only appear in module files. + +==== tests/cases/conformance/externalModules/err2.d.ts (1 errors) ==== + // Illegal, can't be in external ambient module + declare module "Foo" { + export as namespace Bar; + ~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS1316: Global module exports may only appear at top level. + } + +==== tests/cases/conformance/externalModules/err3.d.ts (4 errors) ==== + // Illegal, can't have modifiers + export var p; + static export as namespace oo1; + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS1184: Modifiers cannot appear here. + declare export as namespace oo2; + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS1184: Modifiers cannot appear here. + public export as namespace oo3; + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS1184: Modifiers cannot appear here. + const export as namespace oo4; + ~~~~~~ +!!! error TS1134: Variable declaration expected. + +==== tests/cases/conformance/externalModules/err4.d.ts (1 errors) ==== + // Illegal, must be at top-level + export namespace B { + export as namespace C1; + ~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS1316: Global module exports may only appear at top level. + } + +==== tests/cases/conformance/externalModules/err5.ts (1 errors) ==== + // Illegal, may not appear in implementation files + export var v; + export as namespace C2; + ~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS1315: Global module exports may only appear in declaration files. + + \ No newline at end of file diff --git a/tests/baselines/reference/umd-errors.js b/tests/baselines/reference/umd-errors.js new file mode 100644 index 00000000000..7423c81f9ed --- /dev/null +++ b/tests/baselines/reference/umd-errors.js @@ -0,0 +1,36 @@ +//// [tests/cases/conformance/externalModules/umd-errors.ts] //// + +//// [err1.d.ts] + +// Illegal, can't be in script file +export as namespace Foo; + +//// [err2.d.ts] +// Illegal, can't be in external ambient module +declare module "Foo" { + export as namespace Bar; +} + +//// [err3.d.ts] +// Illegal, can't have modifiers +export var p; +static export as namespace oo1; +declare export as namespace oo2; +public export as namespace oo3; +const export as namespace oo4; + +//// [err4.d.ts] +// Illegal, must be at top-level +export namespace B { + export as namespace C1; +} + +//// [err5.ts] +// Illegal, may not appear in implementation files +export var v; +export as namespace C2; + + + +//// [err5.js] +"use strict"; diff --git a/tests/baselines/reference/umd1.js b/tests/baselines/reference/umd1.js new file mode 100644 index 00000000000..9b059da4887 --- /dev/null +++ b/tests/baselines/reference/umd1.js @@ -0,0 +1,21 @@ +//// [tests/cases/conformance/externalModules/umd1.ts] //// + +//// [foo.d.ts] + +export var x: number; +export function fn(): void; +export interface Thing { n: typeof x } +export as namespace Foo; + +//// [a.ts] +/// +Foo.fn(); +let x: Foo.Thing; +let y: number = x.n; + + +//// [a.js] +/// +exports.Foo.fn(); +var x; +var y = x.n; diff --git a/tests/baselines/reference/umd1.symbols b/tests/baselines/reference/umd1.symbols new file mode 100644 index 00000000000..9b964456bcf --- /dev/null +++ b/tests/baselines/reference/umd1.symbols @@ -0,0 +1,33 @@ +=== tests/cases/conformance/externalModules/a.ts === +/// +Foo.fn(); +>Foo.fn : Symbol(Foo.fn, Decl(foo.d.ts, 1, 21)) +>Foo : Symbol(Foo, Decl(foo.d.ts, 3, 38)) +>fn : Symbol(Foo.fn, Decl(foo.d.ts, 1, 21)) + +let x: Foo.Thing; +>x : Symbol(x, Decl(a.ts, 2, 3)) +>Foo : Symbol(Foo, Decl(foo.d.ts, 3, 38)) +>Thing : Symbol(Foo.Thing, Decl(foo.d.ts, 2, 27)) + +let y: number = x.n; +>y : Symbol(y, Decl(a.ts, 3, 3)) +>x.n : Symbol(Foo.Thing.n, Decl(foo.d.ts, 3, 24)) +>x : Symbol(x, Decl(a.ts, 2, 3)) +>n : Symbol(Foo.Thing.n, Decl(foo.d.ts, 3, 24)) + +=== tests/cases/conformance/externalModules/foo.d.ts === + +export var x: number; +>x : Symbol(x, Decl(foo.d.ts, 1, 10)) + +export function fn(): void; +>fn : Symbol(fn, Decl(foo.d.ts, 1, 21)) + +export interface Thing { n: typeof x } +>Thing : Symbol(Thing, Decl(foo.d.ts, 2, 27)) +>n : Symbol(Thing.n, Decl(foo.d.ts, 3, 24)) +>x : Symbol(x, Decl(foo.d.ts, 1, 10)) + +export as namespace Foo; + diff --git a/tests/baselines/reference/umd1.types b/tests/baselines/reference/umd1.types new file mode 100644 index 00000000000..1767f3b5a89 --- /dev/null +++ b/tests/baselines/reference/umd1.types @@ -0,0 +1,35 @@ +=== tests/cases/conformance/externalModules/a.ts === +/// +Foo.fn(); +>Foo.fn() : void +>Foo.fn : () => void +>Foo : typeof Foo +>fn : () => void + +let x: Foo.Thing; +>x : Foo.Thing +>Foo : any +>Thing : Foo.Thing + +let y: number = x.n; +>y : number +>x.n : number +>x : Foo.Thing +>n : number + +=== tests/cases/conformance/externalModules/foo.d.ts === + +export var x: number; +>x : number + +export function fn(): void; +>fn : () => void + +export interface Thing { n: typeof x } +>Thing : Thing +>n : number +>x : number + +export as namespace Foo; +>Foo : any + diff --git a/tests/baselines/reference/umd2.errors.txt b/tests/baselines/reference/umd2.errors.txt new file mode 100644 index 00000000000..76a4d33f65a --- /dev/null +++ b/tests/baselines/reference/umd2.errors.txt @@ -0,0 +1,19 @@ +tests/cases/conformance/externalModules/a.ts(1,1): error TS2304: Cannot find name 'Foo'. +tests/cases/conformance/externalModules/a.ts(2,8): error TS2503: Cannot find namespace 'Foo'. + + +==== tests/cases/conformance/externalModules/a.ts (2 errors) ==== + Foo.fn(); + ~~~ +!!! error TS2304: Cannot find name 'Foo'. + let x: Foo.Thing; + ~~~ +!!! error TS2503: Cannot find namespace 'Foo'. + let y: number = x.n; + +==== tests/cases/conformance/externalModules/foo.d.ts (0 errors) ==== + + export var x: number; + export function fn(): void; + export as namespace Foo; + \ No newline at end of file diff --git a/tests/baselines/reference/umd2.js b/tests/baselines/reference/umd2.js new file mode 100644 index 00000000000..2737856dcfd --- /dev/null +++ b/tests/baselines/reference/umd2.js @@ -0,0 +1,18 @@ +//// [tests/cases/conformance/externalModules/umd2.ts] //// + +//// [foo.d.ts] + +export var x: number; +export function fn(): void; +export as namespace Foo; + +//// [a.ts] +Foo.fn(); +let x: Foo.Thing; +let y: number = x.n; + + +//// [a.js] +Foo.fn(); +var x; +var y = x.n; diff --git a/tests/baselines/reference/umd3.js b/tests/baselines/reference/umd3.js new file mode 100644 index 00000000000..5e869148beb --- /dev/null +++ b/tests/baselines/reference/umd3.js @@ -0,0 +1,22 @@ +//// [tests/cases/conformance/externalModules/umd3.ts] //// + +//// [foo.d.ts] + +export var x: number; +export function fn(): void; +export interface Thing { n: typeof x } +export as namespace Foo; + +//// [a.ts] +import * as Foo from './foo'; +Foo.fn(); +let x: Foo.Thing; +let y: number = x.n; + + +//// [a.js] +"use strict"; +var Foo = require('./foo'); +Foo.fn(); +var x; +var y = x.n; diff --git a/tests/baselines/reference/umd3.symbols b/tests/baselines/reference/umd3.symbols new file mode 100644 index 00000000000..165fd81597a --- /dev/null +++ b/tests/baselines/reference/umd3.symbols @@ -0,0 +1,35 @@ +=== tests/cases/conformance/externalModules/a.ts === +import * as Foo from './foo'; +>Foo : Symbol(Foo, Decl(a.ts, 0, 6)) + +Foo.fn(); +>Foo.fn : Symbol(Foo.fn, Decl(foo.d.ts, 1, 21)) +>Foo : Symbol(Foo, Decl(a.ts, 0, 6)) +>fn : Symbol(Foo.fn, Decl(foo.d.ts, 1, 21)) + +let x: Foo.Thing; +>x : Symbol(x, Decl(a.ts, 2, 3)) +>Foo : Symbol(Foo, Decl(a.ts, 0, 6)) +>Thing : Symbol(Foo.Thing, Decl(foo.d.ts, 2, 27)) + +let y: number = x.n; +>y : Symbol(y, Decl(a.ts, 3, 3)) +>x.n : Symbol(Foo.Thing.n, Decl(foo.d.ts, 3, 24)) +>x : Symbol(x, Decl(a.ts, 2, 3)) +>n : Symbol(Foo.Thing.n, Decl(foo.d.ts, 3, 24)) + +=== tests/cases/conformance/externalModules/foo.d.ts === + +export var x: number; +>x : Symbol(x, Decl(foo.d.ts, 1, 10)) + +export function fn(): void; +>fn : Symbol(fn, Decl(foo.d.ts, 1, 21)) + +export interface Thing { n: typeof x } +>Thing : Symbol(Thing, Decl(foo.d.ts, 2, 27)) +>n : Symbol(Thing.n, Decl(foo.d.ts, 3, 24)) +>x : Symbol(x, Decl(foo.d.ts, 1, 10)) + +export as namespace Foo; + diff --git a/tests/baselines/reference/umd3.types b/tests/baselines/reference/umd3.types new file mode 100644 index 00000000000..85ee6bafe5e --- /dev/null +++ b/tests/baselines/reference/umd3.types @@ -0,0 +1,37 @@ +=== tests/cases/conformance/externalModules/a.ts === +import * as Foo from './foo'; +>Foo : typeof Foo + +Foo.fn(); +>Foo.fn() : void +>Foo.fn : () => void +>Foo : typeof Foo +>fn : () => void + +let x: Foo.Thing; +>x : Foo.Thing +>Foo : any +>Thing : Foo.Thing + +let y: number = x.n; +>y : number +>x.n : number +>x : Foo.Thing +>n : number + +=== tests/cases/conformance/externalModules/foo.d.ts === + +export var x: number; +>x : number + +export function fn(): void; +>fn : () => void + +export interface Thing { n: typeof x } +>Thing : Thing +>n : number +>x : number + +export as namespace Foo; +>Foo : any + diff --git a/tests/baselines/reference/umd4.js b/tests/baselines/reference/umd4.js new file mode 100644 index 00000000000..b7a7d1da0e2 --- /dev/null +++ b/tests/baselines/reference/umd4.js @@ -0,0 +1,22 @@ +//// [tests/cases/conformance/externalModules/umd4.ts] //// + +//// [foo.d.ts] + +export var x: number; +export function fn(): void; +export interface Thing { n: typeof x } +export as namespace Foo; + +//// [a.ts] +import * as Bar from './foo'; +Bar.fn(); +let x: Bar.Thing; +let y: number = x.n; + + +//// [a.js] +"use strict"; +var Bar = require('./foo'); +Bar.fn(); +var x; +var y = x.n; diff --git a/tests/baselines/reference/umd4.symbols b/tests/baselines/reference/umd4.symbols new file mode 100644 index 00000000000..8403187198b --- /dev/null +++ b/tests/baselines/reference/umd4.symbols @@ -0,0 +1,35 @@ +=== tests/cases/conformance/externalModules/a.ts === +import * as Bar from './foo'; +>Bar : Symbol(Bar, Decl(a.ts, 0, 6)) + +Bar.fn(); +>Bar.fn : Symbol(Bar.fn, Decl(foo.d.ts, 1, 21)) +>Bar : Symbol(Bar, Decl(a.ts, 0, 6)) +>fn : Symbol(Bar.fn, Decl(foo.d.ts, 1, 21)) + +let x: Bar.Thing; +>x : Symbol(x, Decl(a.ts, 2, 3)) +>Bar : Symbol(Bar, Decl(a.ts, 0, 6)) +>Thing : Symbol(Bar.Thing, Decl(foo.d.ts, 2, 27)) + +let y: number = x.n; +>y : Symbol(y, Decl(a.ts, 3, 3)) +>x.n : Symbol(Bar.Thing.n, Decl(foo.d.ts, 3, 24)) +>x : Symbol(x, Decl(a.ts, 2, 3)) +>n : Symbol(Bar.Thing.n, Decl(foo.d.ts, 3, 24)) + +=== tests/cases/conformance/externalModules/foo.d.ts === + +export var x: number; +>x : Symbol(x, Decl(foo.d.ts, 1, 10)) + +export function fn(): void; +>fn : Symbol(fn, Decl(foo.d.ts, 1, 21)) + +export interface Thing { n: typeof x } +>Thing : Symbol(Thing, Decl(foo.d.ts, 2, 27)) +>n : Symbol(Thing.n, Decl(foo.d.ts, 3, 24)) +>x : Symbol(x, Decl(foo.d.ts, 1, 10)) + +export as namespace Foo; + diff --git a/tests/baselines/reference/umd4.types b/tests/baselines/reference/umd4.types new file mode 100644 index 00000000000..579599f5661 --- /dev/null +++ b/tests/baselines/reference/umd4.types @@ -0,0 +1,37 @@ +=== tests/cases/conformance/externalModules/a.ts === +import * as Bar from './foo'; +>Bar : typeof Bar + +Bar.fn(); +>Bar.fn() : void +>Bar.fn : () => void +>Bar : typeof Bar +>fn : () => void + +let x: Bar.Thing; +>x : Bar.Thing +>Bar : any +>Thing : Bar.Thing + +let y: number = x.n; +>y : number +>x.n : number +>x : Bar.Thing +>n : number + +=== tests/cases/conformance/externalModules/foo.d.ts === + +export var x: number; +>x : number + +export function fn(): void; +>fn : () => void + +export interface Thing { n: typeof x } +>Thing : Thing +>n : number +>x : number + +export as namespace Foo; +>Foo : any + diff --git a/tests/baselines/reference/umd5.errors.txt b/tests/baselines/reference/umd5.errors.txt new file mode 100644 index 00000000000..19529ce195a --- /dev/null +++ b/tests/baselines/reference/umd5.errors.txt @@ -0,0 +1,20 @@ +tests/cases/conformance/externalModules/a.ts(6,9): error TS2304: Cannot find name 'Foo'. + + +==== tests/cases/conformance/externalModules/a.ts (1 errors) ==== + import * as Bar from './foo'; + Bar.fn(); + let x: Bar.Thing; + let y: number = x.n; + // should error + let z = Foo; + ~~~ +!!! error TS2304: Cannot find name 'Foo'. + +==== tests/cases/conformance/externalModules/foo.d.ts (0 errors) ==== + + export var x: number; + export function fn(): void; + export interface Thing { n: typeof x } + export as namespace Foo; + \ No newline at end of file diff --git a/tests/baselines/reference/umd5.js b/tests/baselines/reference/umd5.js new file mode 100644 index 00000000000..d054daf93fd --- /dev/null +++ b/tests/baselines/reference/umd5.js @@ -0,0 +1,26 @@ +//// [tests/cases/conformance/externalModules/umd5.ts] //// + +//// [foo.d.ts] + +export var x: number; +export function fn(): void; +export interface Thing { n: typeof x } +export as namespace Foo; + +//// [a.ts] +import * as Bar from './foo'; +Bar.fn(); +let x: Bar.Thing; +let y: number = x.n; +// should error +let z = Foo; + + +//// [a.js] +"use strict"; +var Bar = require('./foo'); +Bar.fn(); +var x; +var y = x.n; +// should error +var z = Foo; diff --git a/tests/baselines/reference/umd6.js b/tests/baselines/reference/umd6.js new file mode 100644 index 00000000000..d4d84fd0384 --- /dev/null +++ b/tests/baselines/reference/umd6.js @@ -0,0 +1,18 @@ +//// [tests/cases/conformance/externalModules/umd6.ts] //// + +//// [foo.d.ts] + +declare namespace Thing { + export function fn(): number; +} +export = Thing; +export as namespace Foo; + +//// [a.ts] +/// +let y: number = Foo.fn(); + + +//// [a.js] +/// +var y = exports.Foo.fn(); diff --git a/tests/baselines/reference/umd6.symbols b/tests/baselines/reference/umd6.symbols new file mode 100644 index 00000000000..d08507f1ea2 --- /dev/null +++ b/tests/baselines/reference/umd6.symbols @@ -0,0 +1,21 @@ +=== tests/cases/conformance/externalModules/a.ts === +/// +let y: number = Foo.fn(); +>y : Symbol(y, Decl(a.ts, 1, 3)) +>Foo.fn : Symbol(Foo.fn, Decl(foo.d.ts, 1, 25)) +>Foo : Symbol(Foo, Decl(foo.d.ts, 4, 15)) +>fn : Symbol(Foo.fn, Decl(foo.d.ts, 1, 25)) + +=== tests/cases/conformance/externalModules/foo.d.ts === + +declare namespace Thing { +>Thing : Symbol(Thing, Decl(foo.d.ts, 0, 0)) + + export function fn(): number; +>fn : Symbol(fn, Decl(foo.d.ts, 1, 25)) +} +export = Thing; +>Thing : Symbol(Thing, Decl(foo.d.ts, 0, 0)) + +export as namespace Foo; + diff --git a/tests/baselines/reference/umd6.types b/tests/baselines/reference/umd6.types new file mode 100644 index 00000000000..7318a43057a --- /dev/null +++ b/tests/baselines/reference/umd6.types @@ -0,0 +1,23 @@ +=== tests/cases/conformance/externalModules/a.ts === +/// +let y: number = Foo.fn(); +>y : number +>Foo.fn() : number +>Foo.fn : () => number +>Foo : typeof Foo +>fn : () => number + +=== tests/cases/conformance/externalModules/foo.d.ts === + +declare namespace Thing { +>Thing : typeof Thing + + export function fn(): number; +>fn : () => number +} +export = Thing; +>Thing : typeof Thing + +export as namespace Foo; +>Foo : any + diff --git a/tests/baselines/reference/umd7.js b/tests/baselines/reference/umd7.js new file mode 100644 index 00000000000..12d0a8651fc --- /dev/null +++ b/tests/baselines/reference/umd7.js @@ -0,0 +1,16 @@ +//// [tests/cases/conformance/externalModules/umd7.ts] //// + +//// [foo.d.ts] + +declare function Thing(): number; +export = Thing; +export as namespace Foo; + +//// [a.ts] +/// +let y: number = Foo(); + + +//// [a.js] +/// +var y = exports.Foo(); diff --git a/tests/baselines/reference/umd7.symbols b/tests/baselines/reference/umd7.symbols new file mode 100644 index 00000000000..0b3ef17fb7b --- /dev/null +++ b/tests/baselines/reference/umd7.symbols @@ -0,0 +1,16 @@ +=== tests/cases/conformance/externalModules/a.ts === +/// +let y: number = Foo(); +>y : Symbol(y, Decl(a.ts, 1, 3)) +>Foo : Symbol(Foo, Decl(foo.d.ts, 2, 15)) + +=== tests/cases/conformance/externalModules/foo.d.ts === + +declare function Thing(): number; +>Thing : Symbol(Thing, Decl(foo.d.ts, 0, 0)) + +export = Thing; +>Thing : Symbol(Thing, Decl(foo.d.ts, 0, 0)) + +export as namespace Foo; + diff --git a/tests/baselines/reference/umd7.types b/tests/baselines/reference/umd7.types new file mode 100644 index 00000000000..60782543710 --- /dev/null +++ b/tests/baselines/reference/umd7.types @@ -0,0 +1,18 @@ +=== tests/cases/conformance/externalModules/a.ts === +/// +let y: number = Foo(); +>y : number +>Foo() : number +>Foo : () => number + +=== tests/cases/conformance/externalModules/foo.d.ts === + +declare function Thing(): number; +>Thing : () => number + +export = Thing; +>Thing : () => number + +export as namespace Foo; +>Foo : any + diff --git a/tests/baselines/reference/umd8.js b/tests/baselines/reference/umd8.js new file mode 100644 index 00000000000..b4c6e0fa76b --- /dev/null +++ b/tests/baselines/reference/umd8.js @@ -0,0 +1,21 @@ +//// [tests/cases/conformance/externalModules/umd8.ts] //// + +//// [foo.d.ts] + +declare class Thing { + foo(): number; +} +export = Thing; +export as namespace Foo; + +//// [a.ts] +/// +let y: Foo; +y.foo(); + + + +//// [a.js] +/// +var y; +y.foo(); diff --git a/tests/baselines/reference/umd8.symbols b/tests/baselines/reference/umd8.symbols new file mode 100644 index 00000000000..8c38f267a2a --- /dev/null +++ b/tests/baselines/reference/umd8.symbols @@ -0,0 +1,25 @@ +=== tests/cases/conformance/externalModules/a.ts === +/// +let y: Foo; +>y : Symbol(y, Decl(a.ts, 1, 3)) +>Foo : Symbol(Foo, Decl(foo.d.ts, 4, 15)) + +y.foo(); +>y.foo : Symbol(Foo.foo, Decl(foo.d.ts, 1, 21)) +>y : Symbol(y, Decl(a.ts, 1, 3)) +>foo : Symbol(Foo.foo, Decl(foo.d.ts, 1, 21)) + + +=== tests/cases/conformance/externalModules/foo.d.ts === + +declare class Thing { +>Thing : Symbol(Thing, Decl(foo.d.ts, 0, 0)) + + foo(): number; +>foo : Symbol(Thing.foo, Decl(foo.d.ts, 1, 21)) +} +export = Thing; +>Thing : Symbol(Thing, Decl(foo.d.ts, 0, 0)) + +export as namespace Foo; + diff --git a/tests/baselines/reference/umd8.types b/tests/baselines/reference/umd8.types new file mode 100644 index 00000000000..0e66a49b963 --- /dev/null +++ b/tests/baselines/reference/umd8.types @@ -0,0 +1,27 @@ +=== tests/cases/conformance/externalModules/a.ts === +/// +let y: Foo; +>y : Foo +>Foo : Foo + +y.foo(); +>y.foo() : number +>y.foo : () => number +>y : Foo +>foo : () => number + + +=== tests/cases/conformance/externalModules/foo.d.ts === + +declare class Thing { +>Thing : Thing + + foo(): number; +>foo : () => number +} +export = Thing; +>Thing : Thing + +export as namespace Foo; +>Foo : any + diff --git a/tests/baselines/reference/undeclaredModuleError.errors.txt b/tests/baselines/reference/undeclaredModuleError.errors.txt index 74e36318595..4a8248bfd6c 100644 --- a/tests/baselines/reference/undeclaredModuleError.errors.txt +++ b/tests/baselines/reference/undeclaredModuleError.errors.txt @@ -16,10 +16,9 @@ tests/cases/compiler/undeclaredModuleError.ts(11,41): error TS2304: Cannot find fs.readFile(originalFilePath, () => { readdir(covFileDir, () => { ~~~~~~~ - } , (error: Error, files: {}[]) => { - ~~~~~~~~~ !!! error TS2345: Argument of type '() => void' is not assignable to parameter of type '(stat: any, name: string) => boolean'. !!! error TS2345: Type 'void' is not assignable to type 'boolean'. + } , (error: Error, files: {}[]) => { files.forEach((file) => { var fullPath = join(IDoNotExist); ~~~~~~~~~~~ diff --git a/tests/baselines/reference/undefinedAssignableToEveryType.symbols b/tests/baselines/reference/undefinedAssignableToEveryType.symbols index f511231515e..c48839ea50f 100644 --- a/tests/baselines/reference/undefinedAssignableToEveryType.symbols +++ b/tests/baselines/reference/undefinedAssignableToEveryType.symbols @@ -3,7 +3,7 @@ class C { >C : Symbol(C, Decl(undefinedAssignableToEveryType.ts, 0, 0)) foo: string; ->foo : Symbol(foo, Decl(undefinedAssignableToEveryType.ts, 0, 9)) +>foo : Symbol(C.foo, Decl(undefinedAssignableToEveryType.ts, 0, 9)) } var ac: C; >ac : Symbol(ac, Decl(undefinedAssignableToEveryType.ts, 3, 3)) @@ -13,7 +13,7 @@ interface I { >I : Symbol(I, Decl(undefinedAssignableToEveryType.ts, 3, 10)) foo: string; ->foo : Symbol(foo, Decl(undefinedAssignableToEveryType.ts, 4, 13)) +>foo : Symbol(I.foo, Decl(undefinedAssignableToEveryType.ts, 4, 13)) } var ai: I; >ai : Symbol(ai, Decl(undefinedAssignableToEveryType.ts, 7, 3)) @@ -41,7 +41,7 @@ var d: boolean = undefined; var e: Date = undefined; >e : Symbol(e, Decl(undefinedAssignableToEveryType.ts, 15, 3)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >undefined : Symbol(undefined) var f: any = undefined; @@ -106,12 +106,12 @@ var o: (x: T) => T = undefined; var p: Number = undefined; >p : Symbol(p, Decl(undefinedAssignableToEveryType.ts, 29, 3)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >undefined : Symbol(undefined) var q: String = undefined; >q : Symbol(q, Decl(undefinedAssignableToEveryType.ts, 30, 3)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >undefined : Symbol(undefined) function foo(x: T, y: U, z: V) { @@ -119,7 +119,7 @@ function foo(x: T, y: U, z: V) { >T : Symbol(T, Decl(undefinedAssignableToEveryType.ts, 32, 13)) >U : Symbol(U, Decl(undefinedAssignableToEveryType.ts, 32, 15)) >V : Symbol(V, Decl(undefinedAssignableToEveryType.ts, 32, 18)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >x : Symbol(x, Decl(undefinedAssignableToEveryType.ts, 32, 35)) >T : Symbol(T, Decl(undefinedAssignableToEveryType.ts, 32, 13)) >y : Symbol(y, Decl(undefinedAssignableToEveryType.ts, 32, 40)) diff --git a/tests/baselines/reference/undefinedIsSubtypeOfEverything.symbols b/tests/baselines/reference/undefinedIsSubtypeOfEverything.symbols index de4f6f0da05..f2776039d3a 100644 --- a/tests/baselines/reference/undefinedIsSubtypeOfEverything.symbols +++ b/tests/baselines/reference/undefinedIsSubtypeOfEverything.symbols @@ -5,7 +5,7 @@ class Base { >Base : Symbol(Base, Decl(undefinedIsSubtypeOfEverything.ts, 0, 0)) foo: typeof undefined; ->foo : Symbol(foo, Decl(undefinedIsSubtypeOfEverything.ts, 2, 12)) +>foo : Symbol(Base.foo, Decl(undefinedIsSubtypeOfEverything.ts, 2, 12)) >undefined : Symbol(undefined) } @@ -14,7 +14,7 @@ class D0 extends Base { >Base : Symbol(Base, Decl(undefinedIsSubtypeOfEverything.ts, 0, 0)) foo: any; ->foo : Symbol(foo, Decl(undefinedIsSubtypeOfEverything.ts, 6, 23)) +>foo : Symbol(D0.foo, Decl(undefinedIsSubtypeOfEverything.ts, 6, 23)) } class DA extends Base { @@ -22,7 +22,7 @@ class DA extends Base { >Base : Symbol(Base, Decl(undefinedIsSubtypeOfEverything.ts, 0, 0)) foo: typeof undefined; ->foo : Symbol(foo, Decl(undefinedIsSubtypeOfEverything.ts, 10, 23)) +>foo : Symbol(DA.foo, Decl(undefinedIsSubtypeOfEverything.ts, 10, 23)) >undefined : Symbol(undefined) } @@ -31,7 +31,7 @@ class D1 extends Base { >Base : Symbol(Base, Decl(undefinedIsSubtypeOfEverything.ts, 0, 0)) foo: string; ->foo : Symbol(foo, Decl(undefinedIsSubtypeOfEverything.ts, 14, 23)) +>foo : Symbol(D1.foo, Decl(undefinedIsSubtypeOfEverything.ts, 14, 23)) } class D1A extends Base { @@ -39,8 +39,8 @@ class D1A extends Base { >Base : Symbol(Base, Decl(undefinedIsSubtypeOfEverything.ts, 0, 0)) foo: String; ->foo : Symbol(foo, Decl(undefinedIsSubtypeOfEverything.ts, 18, 24)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>foo : Symbol(D1A.foo, Decl(undefinedIsSubtypeOfEverything.ts, 18, 24)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) } @@ -49,7 +49,7 @@ class D2 extends Base { >Base : Symbol(Base, Decl(undefinedIsSubtypeOfEverything.ts, 0, 0)) foo: number; ->foo : Symbol(foo, Decl(undefinedIsSubtypeOfEverything.ts, 23, 23)) +>foo : Symbol(D2.foo, Decl(undefinedIsSubtypeOfEverything.ts, 23, 23)) } class D2A extends Base { @@ -57,8 +57,8 @@ class D2A extends Base { >Base : Symbol(Base, Decl(undefinedIsSubtypeOfEverything.ts, 0, 0)) foo: Number; ->foo : Symbol(foo, Decl(undefinedIsSubtypeOfEverything.ts, 27, 24)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>foo : Symbol(D2A.foo, Decl(undefinedIsSubtypeOfEverything.ts, 27, 24)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) } @@ -67,7 +67,7 @@ class D3 extends Base { >Base : Symbol(Base, Decl(undefinedIsSubtypeOfEverything.ts, 0, 0)) foo: boolean; ->foo : Symbol(foo, Decl(undefinedIsSubtypeOfEverything.ts, 32, 23)) +>foo : Symbol(D3.foo, Decl(undefinedIsSubtypeOfEverything.ts, 32, 23)) } class D3A extends Base { @@ -75,7 +75,7 @@ class D3A extends Base { >Base : Symbol(Base, Decl(undefinedIsSubtypeOfEverything.ts, 0, 0)) foo: Boolean; ->foo : Symbol(foo, Decl(undefinedIsSubtypeOfEverything.ts, 36, 24)) +>foo : Symbol(D3A.foo, Decl(undefinedIsSubtypeOfEverything.ts, 36, 24)) >Boolean : Symbol(Boolean, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) } @@ -85,7 +85,7 @@ class D4 extends Base { >Base : Symbol(Base, Decl(undefinedIsSubtypeOfEverything.ts, 0, 0)) foo: RegExp; ->foo : Symbol(foo, Decl(undefinedIsSubtypeOfEverything.ts, 41, 23)) +>foo : Symbol(D4.foo, Decl(undefinedIsSubtypeOfEverything.ts, 41, 23)) >RegExp : Symbol(RegExp, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) } @@ -94,8 +94,8 @@ class D5 extends Base { >Base : Symbol(Base, Decl(undefinedIsSubtypeOfEverything.ts, 0, 0)) foo: Date; ->foo : Symbol(foo, Decl(undefinedIsSubtypeOfEverything.ts, 45, 23)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>foo : Symbol(D5.foo, Decl(undefinedIsSubtypeOfEverything.ts, 45, 23)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) } @@ -104,7 +104,7 @@ class D6 extends Base { >Base : Symbol(Base, Decl(undefinedIsSubtypeOfEverything.ts, 0, 0)) foo: number[]; ->foo : Symbol(foo, Decl(undefinedIsSubtypeOfEverything.ts, 50, 23)) +>foo : Symbol(D6.foo, Decl(undefinedIsSubtypeOfEverything.ts, 50, 23)) } class D7 extends Base { @@ -112,7 +112,7 @@ class D7 extends Base { >Base : Symbol(Base, Decl(undefinedIsSubtypeOfEverything.ts, 0, 0)) foo: { bar: number }; ->foo : Symbol(foo, Decl(undefinedIsSubtypeOfEverything.ts, 54, 23)) +>foo : Symbol(D7.foo, Decl(undefinedIsSubtypeOfEverything.ts, 54, 23)) >bar : Symbol(bar, Decl(undefinedIsSubtypeOfEverything.ts, 55, 10)) } @@ -122,7 +122,7 @@ class D8 extends Base { >Base : Symbol(Base, Decl(undefinedIsSubtypeOfEverything.ts, 0, 0)) foo: D7; ->foo : Symbol(foo, Decl(undefinedIsSubtypeOfEverything.ts, 59, 23)) +>foo : Symbol(D8.foo, Decl(undefinedIsSubtypeOfEverything.ts, 59, 23)) >D7 : Symbol(D7, Decl(undefinedIsSubtypeOfEverything.ts, 52, 1)) } @@ -130,14 +130,14 @@ interface I1 { >I1 : Symbol(I1, Decl(undefinedIsSubtypeOfEverything.ts, 61, 1)) bar: string; ->bar : Symbol(bar, Decl(undefinedIsSubtypeOfEverything.ts, 63, 14)) +>bar : Symbol(I1.bar, Decl(undefinedIsSubtypeOfEverything.ts, 63, 14)) } class D9 extends Base { >D9 : Symbol(D9, Decl(undefinedIsSubtypeOfEverything.ts, 65, 1)) >Base : Symbol(Base, Decl(undefinedIsSubtypeOfEverything.ts, 0, 0)) foo: I1; ->foo : Symbol(foo, Decl(undefinedIsSubtypeOfEverything.ts, 66, 23)) +>foo : Symbol(D9.foo, Decl(undefinedIsSubtypeOfEverything.ts, 66, 23)) >I1 : Symbol(I1, Decl(undefinedIsSubtypeOfEverything.ts, 61, 1)) } @@ -147,7 +147,7 @@ class D10 extends Base { >Base : Symbol(Base, Decl(undefinedIsSubtypeOfEverything.ts, 0, 0)) foo: () => number; ->foo : Symbol(foo, Decl(undefinedIsSubtypeOfEverything.ts, 71, 24)) +>foo : Symbol(D10.foo, Decl(undefinedIsSubtypeOfEverything.ts, 71, 24)) } enum E { A } @@ -159,7 +159,7 @@ class D11 extends Base { >Base : Symbol(Base, Decl(undefinedIsSubtypeOfEverything.ts, 0, 0)) foo: E; ->foo : Symbol(foo, Decl(undefinedIsSubtypeOfEverything.ts, 76, 24)) +>foo : Symbol(D11.foo, Decl(undefinedIsSubtypeOfEverything.ts, 76, 24)) >E : Symbol(E, Decl(undefinedIsSubtypeOfEverything.ts, 73, 1)) } @@ -177,14 +177,14 @@ class D12 extends Base { >Base : Symbol(Base, Decl(undefinedIsSubtypeOfEverything.ts, 0, 0)) foo: typeof f; ->foo : Symbol(foo, Decl(undefinedIsSubtypeOfEverything.ts, 84, 24)) +>foo : Symbol(D12.foo, Decl(undefinedIsSubtypeOfEverything.ts, 84, 24)) >f : Symbol(f, Decl(undefinedIsSubtypeOfEverything.ts, 78, 1), Decl(undefinedIsSubtypeOfEverything.ts, 80, 16)) } class c { baz: string } >c : Symbol(c, Decl(undefinedIsSubtypeOfEverything.ts, 86, 1), Decl(undefinedIsSubtypeOfEverything.ts, 89, 23)) ->baz : Symbol(baz, Decl(undefinedIsSubtypeOfEverything.ts, 89, 9)) +>baz : Symbol(c.baz, Decl(undefinedIsSubtypeOfEverything.ts, 89, 9)) module c { >c : Symbol(c, Decl(undefinedIsSubtypeOfEverything.ts, 86, 1), Decl(undefinedIsSubtypeOfEverything.ts, 89, 23)) @@ -197,7 +197,7 @@ class D13 extends Base { >Base : Symbol(Base, Decl(undefinedIsSubtypeOfEverything.ts, 0, 0)) foo: typeof c; ->foo : Symbol(foo, Decl(undefinedIsSubtypeOfEverything.ts, 93, 24)) +>foo : Symbol(D13.foo, Decl(undefinedIsSubtypeOfEverything.ts, 93, 24)) >c : Symbol(c, Decl(undefinedIsSubtypeOfEverything.ts, 86, 1), Decl(undefinedIsSubtypeOfEverything.ts, 89, 23)) } @@ -208,7 +208,7 @@ class D14 extends Base { >Base : Symbol(Base, Decl(undefinedIsSubtypeOfEverything.ts, 0, 0)) foo: T; ->foo : Symbol(foo, Decl(undefinedIsSubtypeOfEverything.ts, 98, 27)) +>foo : Symbol(D14.foo, Decl(undefinedIsSubtypeOfEverything.ts, 98, 27)) >T : Symbol(T, Decl(undefinedIsSubtypeOfEverything.ts, 98, 10)) } @@ -220,7 +220,7 @@ class D15 extends Base { >Base : Symbol(Base, Decl(undefinedIsSubtypeOfEverything.ts, 0, 0)) foo: U; ->foo : Symbol(foo, Decl(undefinedIsSubtypeOfEverything.ts, 103, 30)) +>foo : Symbol(D15.foo, Decl(undefinedIsSubtypeOfEverything.ts, 103, 30)) >U : Symbol(U, Decl(undefinedIsSubtypeOfEverything.ts, 103, 12)) } @@ -234,7 +234,7 @@ class D16 extends Base { >Base : Symbol(Base, Decl(undefinedIsSubtypeOfEverything.ts, 0, 0)) foo: Object; ->foo : Symbol(foo, Decl(undefinedIsSubtypeOfEverything.ts, 112, 24)) +>foo : Symbol(D16.foo, Decl(undefinedIsSubtypeOfEverything.ts, 112, 24)) >Object : Symbol(Object, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) } @@ -244,6 +244,6 @@ class D17 extends Base { >Base : Symbol(Base, Decl(undefinedIsSubtypeOfEverything.ts, 0, 0)) foo: {}; ->foo : Symbol(foo, Decl(undefinedIsSubtypeOfEverything.ts, 117, 24)) +>foo : Symbol(D17.foo, Decl(undefinedIsSubtypeOfEverything.ts, 117, 24)) } diff --git a/tests/baselines/reference/underscoreMapFirst.symbols b/tests/baselines/reference/underscoreMapFirst.symbols index e926121db57..9b08a7ab4eb 100644 --- a/tests/baselines/reference/underscoreMapFirst.symbols +++ b/tests/baselines/reference/underscoreMapFirst.symbols @@ -17,7 +17,7 @@ declare module _ { >T : Symbol(T, Decl(underscoreMapFirst.ts, 2, 19)) length: number; ->length : Symbol(length, Decl(underscoreMapFirst.ts, 3, 27)) +>length : Symbol(List.length, Decl(underscoreMapFirst.ts, 3, 27)) } interface ListIterator { @@ -89,14 +89,14 @@ declare class View { >View : Symbol(View, Decl(underscoreMapFirst.ts, 24, 1)) model: any; ->model : Symbol(model, Decl(underscoreMapFirst.ts, 26, 20)) +>model : Symbol(View.model, Decl(underscoreMapFirst.ts, 26, 20)) } interface IData { >IData : Symbol(IData, Decl(underscoreMapFirst.ts, 28, 1)) series: ISeries[]; ->series : Symbol(series, Decl(underscoreMapFirst.ts, 30, 17)) +>series : Symbol(IData.series, Decl(underscoreMapFirst.ts, 30, 17)) >ISeries : Symbol(ISeries, Decl(underscoreMapFirst.ts, 32, 1)) } @@ -104,10 +104,10 @@ interface ISeries { >ISeries : Symbol(ISeries, Decl(underscoreMapFirst.ts, 32, 1)) items: any[]; ->items : Symbol(items, Decl(underscoreMapFirst.ts, 34, 19)) +>items : Symbol(ISeries.items, Decl(underscoreMapFirst.ts, 34, 19)) key: string; ->key : Symbol(key, Decl(underscoreMapFirst.ts, 35, 17)) +>key : Symbol(ISeries.key, Decl(underscoreMapFirst.ts, 35, 17)) } class MyView extends View { @@ -115,7 +115,7 @@ class MyView extends View { >View : Symbol(View, Decl(underscoreMapFirst.ts, 24, 1)) public getDataSeries(): ISeries[] { ->getDataSeries : Symbol(getDataSeries, Decl(underscoreMapFirst.ts, 39, 27)) +>getDataSeries : Symbol(MyView.getDataSeries, Decl(underscoreMapFirst.ts, 39, 27)) >ISeries : Symbol(ISeries, Decl(underscoreMapFirst.ts, 32, 1)) var data: IData[] = this.model.get("data"); diff --git a/tests/baselines/reference/underscoreTest1.symbols b/tests/baselines/reference/underscoreTest1.symbols index ee8460e16ed..3506f23510e 100644 --- a/tests/baselines/reference/underscoreTest1.symbols +++ b/tests/baselines/reference/underscoreTest1.symbols @@ -437,7 +437,7 @@ var log = _.bind((message?: string, ...rest: string[]) => { }, Date); >bind : Symbol(Underscore.Static.bind, Decl(underscoreTest1_underscore.ts, 548, 68), Decl(underscoreTest1_underscore.ts, 550, 58)) >message : Symbol(message, Decl(underscoreTest1_underscoreTests.ts, 108, 18)) >rest : Symbol(rest, Decl(underscoreTest1_underscoreTests.ts, 108, 35)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) _.delay(log, 1000, 'logged later'); >_.delay : Symbol(Underscore.Static.delay, Decl(underscoreTest1_underscore.ts, 557, 73)) @@ -782,7 +782,7 @@ _.isDate(new Date()); >_.isDate : Symbol(Underscore.Static.isDate, Decl(underscoreTest1_underscore.ts, 611, 40)) >_ : Symbol(_, Decl(underscoreTest1_underscore.ts, 645, 11)) >isDate : Symbol(Underscore.Static.isDate, Decl(underscoreTest1_underscore.ts, 611, 40)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) _.isRegExp(/moe/); >_.isRegExp : Symbol(Underscore.Static.isRegExp, Decl(underscoreTest1_underscore.ts, 612, 37)) @@ -1063,110 +1063,110 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 31, 35)) keys(): string[]; ->keys : Symbol(keys, Decl(underscoreTest1_underscore.ts, 31, 39)) +>keys : Symbol(WrappedObject.keys, Decl(underscoreTest1_underscore.ts, 31, 39)) values(): any[]; ->values : Symbol(values, Decl(underscoreTest1_underscore.ts, 32, 25)) +>values : Symbol(WrappedObject.values, Decl(underscoreTest1_underscore.ts, 32, 25)) pairs(): any[][]; ->pairs : Symbol(pairs, Decl(underscoreTest1_underscore.ts, 33, 24)) +>pairs : Symbol(WrappedObject.pairs, Decl(underscoreTest1_underscore.ts, 33, 24)) invert(): any; ->invert : Symbol(invert, Decl(underscoreTest1_underscore.ts, 34, 25)) +>invert : Symbol(WrappedObject.invert, Decl(underscoreTest1_underscore.ts, 34, 25)) functions(): string[]; ->functions : Symbol(functions, Decl(underscoreTest1_underscore.ts, 35, 22)) +>functions : Symbol(WrappedObject.functions, Decl(underscoreTest1_underscore.ts, 35, 22)) methods(): string[]; ->methods : Symbol(methods, Decl(underscoreTest1_underscore.ts, 36, 30)) +>methods : Symbol(WrappedObject.methods, Decl(underscoreTest1_underscore.ts, 36, 30)) extend(...sources: any[]): T; ->extend : Symbol(extend, Decl(underscoreTest1_underscore.ts, 37, 28)) +>extend : Symbol(WrappedObject.extend, Decl(underscoreTest1_underscore.ts, 37, 28)) >sources : Symbol(sources, Decl(underscoreTest1_underscore.ts, 38, 15)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 31, 35)) pick(...keys: string[]): T; ->pick : Symbol(pick, Decl(underscoreTest1_underscore.ts, 38, 37)) +>pick : Symbol(WrappedObject.pick, Decl(underscoreTest1_underscore.ts, 38, 37)) >keys : Symbol(keys, Decl(underscoreTest1_underscore.ts, 39, 13)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 31, 35)) omit(...keys: string[]): T; ->omit : Symbol(omit, Decl(underscoreTest1_underscore.ts, 39, 35)) +>omit : Symbol(WrappedObject.omit, Decl(underscoreTest1_underscore.ts, 39, 35)) >keys : Symbol(keys, Decl(underscoreTest1_underscore.ts, 40, 13)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 31, 35)) defaults(...defaults: any[]): T; ->defaults : Symbol(defaults, Decl(underscoreTest1_underscore.ts, 40, 35)) +>defaults : Symbol(WrappedObject.defaults, Decl(underscoreTest1_underscore.ts, 40, 35)) >defaults : Symbol(defaults, Decl(underscoreTest1_underscore.ts, 41, 17)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 31, 35)) clone(): T; ->clone : Symbol(clone, Decl(underscoreTest1_underscore.ts, 41, 40)) +>clone : Symbol(WrappedObject.clone, Decl(underscoreTest1_underscore.ts, 41, 40)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 31, 35)) tap(interceptor: (object: T) => void): T; ->tap : Symbol(tap, Decl(underscoreTest1_underscore.ts, 42, 19)) +>tap : Symbol(WrappedObject.tap, Decl(underscoreTest1_underscore.ts, 42, 19)) >interceptor : Symbol(interceptor, Decl(underscoreTest1_underscore.ts, 43, 12)) >object : Symbol(object, Decl(underscoreTest1_underscore.ts, 43, 26)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 31, 35)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 31, 35)) has(key: string): boolean; ->has : Symbol(has, Decl(underscoreTest1_underscore.ts, 43, 49)) +>has : Symbol(WrappedObject.has, Decl(underscoreTest1_underscore.ts, 43, 49)) >key : Symbol(key, Decl(underscoreTest1_underscore.ts, 44, 12)) isEqual(other: T): boolean; ->isEqual : Symbol(isEqual, Decl(underscoreTest1_underscore.ts, 44, 34)) +>isEqual : Symbol(WrappedObject.isEqual, Decl(underscoreTest1_underscore.ts, 44, 34)) >other : Symbol(other, Decl(underscoreTest1_underscore.ts, 45, 16)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 31, 35)) isEmpty(): boolean; ->isEmpty : Symbol(isEmpty, Decl(underscoreTest1_underscore.ts, 45, 35)) +>isEmpty : Symbol(WrappedObject.isEmpty, Decl(underscoreTest1_underscore.ts, 45, 35)) isElement(): boolean; ->isElement : Symbol(isElement, Decl(underscoreTest1_underscore.ts, 46, 27)) +>isElement : Symbol(WrappedObject.isElement, Decl(underscoreTest1_underscore.ts, 46, 27)) isArray(): boolean; ->isArray : Symbol(isArray, Decl(underscoreTest1_underscore.ts, 47, 29)) +>isArray : Symbol(WrappedObject.isArray, Decl(underscoreTest1_underscore.ts, 47, 29)) isObject(): boolean; ->isObject : Symbol(isObject, Decl(underscoreTest1_underscore.ts, 48, 27)) +>isObject : Symbol(WrappedObject.isObject, Decl(underscoreTest1_underscore.ts, 48, 27)) isArguments(): boolean; ->isArguments : Symbol(isArguments, Decl(underscoreTest1_underscore.ts, 49, 28)) +>isArguments : Symbol(WrappedObject.isArguments, Decl(underscoreTest1_underscore.ts, 49, 28)) isFunction(): boolean; ->isFunction : Symbol(isFunction, Decl(underscoreTest1_underscore.ts, 50, 31)) +>isFunction : Symbol(WrappedObject.isFunction, Decl(underscoreTest1_underscore.ts, 50, 31)) isString(): boolean; ->isString : Symbol(isString, Decl(underscoreTest1_underscore.ts, 51, 30)) +>isString : Symbol(WrappedObject.isString, Decl(underscoreTest1_underscore.ts, 51, 30)) isNumber(): boolean; ->isNumber : Symbol(isNumber, Decl(underscoreTest1_underscore.ts, 52, 28)) +>isNumber : Symbol(WrappedObject.isNumber, Decl(underscoreTest1_underscore.ts, 52, 28)) isFinite(): boolean; ->isFinite : Symbol(isFinite, Decl(underscoreTest1_underscore.ts, 53, 28)) +>isFinite : Symbol(WrappedObject.isFinite, Decl(underscoreTest1_underscore.ts, 53, 28)) isBoolean(): boolean; ->isBoolean : Symbol(isBoolean, Decl(underscoreTest1_underscore.ts, 54, 28)) +>isBoolean : Symbol(WrappedObject.isBoolean, Decl(underscoreTest1_underscore.ts, 54, 28)) isDate(): boolean; ->isDate : Symbol(isDate, Decl(underscoreTest1_underscore.ts, 55, 29)) +>isDate : Symbol(WrappedObject.isDate, Decl(underscoreTest1_underscore.ts, 55, 29)) isRegExp(): boolean; ->isRegExp : Symbol(isRegExp, Decl(underscoreTest1_underscore.ts, 56, 26)) +>isRegExp : Symbol(WrappedObject.isRegExp, Decl(underscoreTest1_underscore.ts, 56, 26)) isNaN(): boolean; ->isNaN : Symbol(isNaN, Decl(underscoreTest1_underscore.ts, 57, 28)) +>isNaN : Symbol(WrappedObject.isNaN, Decl(underscoreTest1_underscore.ts, 57, 28)) isNull(): boolean; ->isNull : Symbol(isNull, Decl(underscoreTest1_underscore.ts, 58, 25)) +>isNull : Symbol(WrappedObject.isNull, Decl(underscoreTest1_underscore.ts, 58, 25)) isUndefined(): boolean; ->isUndefined : Symbol(isUndefined, Decl(underscoreTest1_underscore.ts, 59, 26)) +>isUndefined : Symbol(WrappedObject.isUndefined, Decl(underscoreTest1_underscore.ts, 59, 26)) value(): T; ->value : Symbol(value, Decl(underscoreTest1_underscore.ts, 60, 31)) +>value : Symbol(WrappedObject.value, Decl(underscoreTest1_underscore.ts, 60, 31)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 31, 35)) } @@ -1178,58 +1178,58 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 64, 37)) bind(object: any): T; ->bind : Symbol(bind, Decl(underscoreTest1_underscore.ts, 64, 83), Decl(underscoreTest1_underscore.ts, 65, 29)) +>bind : Symbol(WrappedFunction.bind, Decl(underscoreTest1_underscore.ts, 64, 83), Decl(underscoreTest1_underscore.ts, 65, 29)) >object : Symbol(object, Decl(underscoreTest1_underscore.ts, 65, 13)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 64, 37)) bind(object: any, ...args: any[]): Function; ->bind : Symbol(bind, Decl(underscoreTest1_underscore.ts, 64, 83), Decl(underscoreTest1_underscore.ts, 65, 29)) +>bind : Symbol(WrappedFunction.bind, Decl(underscoreTest1_underscore.ts, 64, 83), Decl(underscoreTest1_underscore.ts, 65, 29)) >object : Symbol(object, Decl(underscoreTest1_underscore.ts, 66, 13)) >args : Symbol(args, Decl(underscoreTest1_underscore.ts, 66, 25)) >Function : Symbol(Function, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) bindAll(...methodNames: string[]): T; ->bindAll : Symbol(bindAll, Decl(underscoreTest1_underscore.ts, 66, 52)) +>bindAll : Symbol(WrappedFunction.bindAll, Decl(underscoreTest1_underscore.ts, 66, 52)) >methodNames : Symbol(methodNames, Decl(underscoreTest1_underscore.ts, 67, 16)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 64, 37)) partial(...args: any[]): Function; ->partial : Symbol(partial, Decl(underscoreTest1_underscore.ts, 67, 45)) +>partial : Symbol(WrappedFunction.partial, Decl(underscoreTest1_underscore.ts, 67, 45)) >args : Symbol(args, Decl(underscoreTest1_underscore.ts, 68, 16)) >Function : Symbol(Function, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) memoize(hashFunction?: Function): T; ->memoize : Symbol(memoize, Decl(underscoreTest1_underscore.ts, 68, 42)) +>memoize : Symbol(WrappedFunction.memoize, Decl(underscoreTest1_underscore.ts, 68, 42)) >hashFunction : Symbol(hashFunction, Decl(underscoreTest1_underscore.ts, 69, 16)) >Function : Symbol(Function, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 64, 37)) delay(wait: number, ...args: any[]): number; ->delay : Symbol(delay, Decl(underscoreTest1_underscore.ts, 69, 44)) +>delay : Symbol(WrappedFunction.delay, Decl(underscoreTest1_underscore.ts, 69, 44)) >wait : Symbol(wait, Decl(underscoreTest1_underscore.ts, 70, 14)) >args : Symbol(args, Decl(underscoreTest1_underscore.ts, 70, 27)) defer(...args: any[]): number; ->defer : Symbol(defer, Decl(underscoreTest1_underscore.ts, 70, 52)) +>defer : Symbol(WrappedFunction.defer, Decl(underscoreTest1_underscore.ts, 70, 52)) >args : Symbol(args, Decl(underscoreTest1_underscore.ts, 71, 14)) throttle(wait: number): T; ->throttle : Symbol(throttle, Decl(underscoreTest1_underscore.ts, 71, 38)) +>throttle : Symbol(WrappedFunction.throttle, Decl(underscoreTest1_underscore.ts, 71, 38)) >wait : Symbol(wait, Decl(underscoreTest1_underscore.ts, 72, 17)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 64, 37)) debounce(wait: number, immediate?: boolean): T; ->debounce : Symbol(debounce, Decl(underscoreTest1_underscore.ts, 72, 34)) +>debounce : Symbol(WrappedFunction.debounce, Decl(underscoreTest1_underscore.ts, 72, 34)) >wait : Symbol(wait, Decl(underscoreTest1_underscore.ts, 73, 17)) >immediate : Symbol(immediate, Decl(underscoreTest1_underscore.ts, 73, 30)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 64, 37)) once(): T; ->once : Symbol(once, Decl(underscoreTest1_underscore.ts, 73, 55)) +>once : Symbol(WrappedFunction.once, Decl(underscoreTest1_underscore.ts, 73, 55)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 64, 37)) wrap(wrapper: (func: T, ...args: any[]) => any): T; ->wrap : Symbol(wrap, Decl(underscoreTest1_underscore.ts, 74, 18)) +>wrap : Symbol(WrappedFunction.wrap, Decl(underscoreTest1_underscore.ts, 74, 18)) >wrapper : Symbol(wrapper, Decl(underscoreTest1_underscore.ts, 75, 13)) >func : Symbol(func, Decl(underscoreTest1_underscore.ts, 75, 23)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 64, 37)) @@ -1237,7 +1237,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 64, 37)) compose(...funcs: Function[]): Function; ->compose : Symbol(compose, Decl(underscoreTest1_underscore.ts, 75, 59)) +>compose : Symbol(WrappedFunction.compose, Decl(underscoreTest1_underscore.ts, 75, 59)) >funcs : Symbol(funcs, Decl(underscoreTest1_underscore.ts, 76, 16)) >Function : Symbol(Function, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >Function : Symbol(Function, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) @@ -1251,21 +1251,21 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) each(iterator: Iterator, context?: any): void; ->each : Symbol(each, Decl(underscoreTest1_underscore.ts, 79, 70)) +>each : Symbol(WrappedArray.each, Decl(underscoreTest1_underscore.ts, 79, 70)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 80, 13)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) >context : Symbol(context, Decl(underscoreTest1_underscore.ts, 80, 41)) forEach(iterator: Iterator, context?: any): void; ->forEach : Symbol(forEach, Decl(underscoreTest1_underscore.ts, 80, 63)) +>forEach : Symbol(WrappedArray.forEach, Decl(underscoreTest1_underscore.ts, 80, 63)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 81, 16)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) >context : Symbol(context, Decl(underscoreTest1_underscore.ts, 81, 44)) map(iterator: Iterator, context?: any): U[]; ->map : Symbol(map, Decl(underscoreTest1_underscore.ts, 81, 66)) +>map : Symbol(WrappedArray.map, Decl(underscoreTest1_underscore.ts, 81, 66)) >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 82, 12)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 82, 15)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) @@ -1275,7 +1275,7 @@ module Underscore { >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 82, 12)) collect(iterator: Iterator, context?: any): U[]; ->collect : Symbol(collect, Decl(underscoreTest1_underscore.ts, 82, 61)) +>collect : Symbol(WrappedArray.collect, Decl(underscoreTest1_underscore.ts, 82, 61)) >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 83, 16)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 83, 19)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) @@ -1285,7 +1285,7 @@ module Underscore { >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 83, 16)) reduce(iterator: Reducer, initialValue?: T, context?: any): T; ->reduce : Symbol(reduce, Decl(underscoreTest1_underscore.ts, 83, 65), Decl(underscoreTest1_underscore.ts, 84, 76)) +>reduce : Symbol(WrappedArray.reduce, Decl(underscoreTest1_underscore.ts, 83, 65), Decl(underscoreTest1_underscore.ts, 84, 76)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 84, 15)) >Reducer : Symbol(Reducer, Decl(underscoreTest1_underscore.ts, 6, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) @@ -1296,7 +1296,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) reduce(iterator: Reducer, initialValue: U, context?: any): U; ->reduce : Symbol(reduce, Decl(underscoreTest1_underscore.ts, 83, 65), Decl(underscoreTest1_underscore.ts, 84, 76)) +>reduce : Symbol(WrappedArray.reduce, Decl(underscoreTest1_underscore.ts, 83, 65), Decl(underscoreTest1_underscore.ts, 84, 76)) >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 85, 15)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 85, 18)) >Reducer : Symbol(Reducer, Decl(underscoreTest1_underscore.ts, 6, 1)) @@ -1308,7 +1308,7 @@ module Underscore { >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 85, 15)) foldl(iterator: Reducer, initialValue?: T, context?: any): T; ->foldl : Symbol(foldl, Decl(underscoreTest1_underscore.ts, 85, 78), Decl(underscoreTest1_underscore.ts, 86, 75)) +>foldl : Symbol(WrappedArray.foldl, Decl(underscoreTest1_underscore.ts, 85, 78), Decl(underscoreTest1_underscore.ts, 86, 75)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 86, 14)) >Reducer : Symbol(Reducer, Decl(underscoreTest1_underscore.ts, 6, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) @@ -1319,7 +1319,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) foldl(iterator: Reducer, initialValue: U, context?: any): U; ->foldl : Symbol(foldl, Decl(underscoreTest1_underscore.ts, 85, 78), Decl(underscoreTest1_underscore.ts, 86, 75)) +>foldl : Symbol(WrappedArray.foldl, Decl(underscoreTest1_underscore.ts, 85, 78), Decl(underscoreTest1_underscore.ts, 86, 75)) >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 87, 14)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 87, 17)) >Reducer : Symbol(Reducer, Decl(underscoreTest1_underscore.ts, 6, 1)) @@ -1331,7 +1331,7 @@ module Underscore { >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 87, 14)) inject(iterator: Reducer, initialValue?: T, context?: any): T; ->inject : Symbol(inject, Decl(underscoreTest1_underscore.ts, 87, 77), Decl(underscoreTest1_underscore.ts, 88, 76)) +>inject : Symbol(WrappedArray.inject, Decl(underscoreTest1_underscore.ts, 87, 77), Decl(underscoreTest1_underscore.ts, 88, 76)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 88, 15)) >Reducer : Symbol(Reducer, Decl(underscoreTest1_underscore.ts, 6, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) @@ -1342,7 +1342,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) inject(iterator: Reducer, initialValue: U, context?: any): U; ->inject : Symbol(inject, Decl(underscoreTest1_underscore.ts, 87, 77), Decl(underscoreTest1_underscore.ts, 88, 76)) +>inject : Symbol(WrappedArray.inject, Decl(underscoreTest1_underscore.ts, 87, 77), Decl(underscoreTest1_underscore.ts, 88, 76)) >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 89, 15)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 89, 18)) >Reducer : Symbol(Reducer, Decl(underscoreTest1_underscore.ts, 6, 1)) @@ -1354,7 +1354,7 @@ module Underscore { >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 89, 15)) reduceRight(iterator: Reducer, initialValue?: T, context?: any): T; ->reduceRight : Symbol(reduceRight, Decl(underscoreTest1_underscore.ts, 89, 78), Decl(underscoreTest1_underscore.ts, 90, 81)) +>reduceRight : Symbol(WrappedArray.reduceRight, Decl(underscoreTest1_underscore.ts, 89, 78), Decl(underscoreTest1_underscore.ts, 90, 81)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 90, 20)) >Reducer : Symbol(Reducer, Decl(underscoreTest1_underscore.ts, 6, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) @@ -1365,7 +1365,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) reduceRight(iterator: Reducer, initialValue: U, context?: any): U; ->reduceRight : Symbol(reduceRight, Decl(underscoreTest1_underscore.ts, 89, 78), Decl(underscoreTest1_underscore.ts, 90, 81)) +>reduceRight : Symbol(WrappedArray.reduceRight, Decl(underscoreTest1_underscore.ts, 89, 78), Decl(underscoreTest1_underscore.ts, 90, 81)) >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 91, 20)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 91, 23)) >Reducer : Symbol(Reducer, Decl(underscoreTest1_underscore.ts, 6, 1)) @@ -1377,7 +1377,7 @@ module Underscore { >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 91, 20)) foldr(iterator: Reducer, initialValue?: T, context?: any): T; ->foldr : Symbol(foldr, Decl(underscoreTest1_underscore.ts, 91, 83), Decl(underscoreTest1_underscore.ts, 92, 75)) +>foldr : Symbol(WrappedArray.foldr, Decl(underscoreTest1_underscore.ts, 91, 83), Decl(underscoreTest1_underscore.ts, 92, 75)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 92, 14)) >Reducer : Symbol(Reducer, Decl(underscoreTest1_underscore.ts, 6, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) @@ -1388,7 +1388,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) foldr(iterator: Reducer, initialValue: U, context?: any): U; ->foldr : Symbol(foldr, Decl(underscoreTest1_underscore.ts, 91, 83), Decl(underscoreTest1_underscore.ts, 92, 75)) +>foldr : Symbol(WrappedArray.foldr, Decl(underscoreTest1_underscore.ts, 91, 83), Decl(underscoreTest1_underscore.ts, 92, 75)) >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 93, 14)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 93, 17)) >Reducer : Symbol(Reducer, Decl(underscoreTest1_underscore.ts, 6, 1)) @@ -1400,7 +1400,7 @@ module Underscore { >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 93, 14)) find(iterator: Iterator, context?: any): T; ->find : Symbol(find, Decl(underscoreTest1_underscore.ts, 93, 77)) +>find : Symbol(WrappedArray.find, Decl(underscoreTest1_underscore.ts, 93, 77)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 94, 13)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) @@ -1408,7 +1408,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) detect(iterator: Iterator, context?: any): T; ->detect : Symbol(detect, Decl(underscoreTest1_underscore.ts, 94, 63)) +>detect : Symbol(WrappedArray.detect, Decl(underscoreTest1_underscore.ts, 94, 63)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 95, 15)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) @@ -1416,7 +1416,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) filter(iterator: Iterator, context?: any): T[]; ->filter : Symbol(filter, Decl(underscoreTest1_underscore.ts, 95, 65)) +>filter : Symbol(WrappedArray.filter, Decl(underscoreTest1_underscore.ts, 95, 65)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 96, 15)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) @@ -1424,7 +1424,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) select(iterator: Iterator, context?: any): T[]; ->select : Symbol(select, Decl(underscoreTest1_underscore.ts, 96, 67)) +>select : Symbol(WrappedArray.select, Decl(underscoreTest1_underscore.ts, 96, 67)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 97, 15)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) @@ -1432,19 +1432,19 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) where(properties: Object): T[]; ->where : Symbol(where, Decl(underscoreTest1_underscore.ts, 97, 67)) +>where : Symbol(WrappedArray.where, Decl(underscoreTest1_underscore.ts, 97, 67)) >properties : Symbol(properties, Decl(underscoreTest1_underscore.ts, 98, 14)) >Object : Symbol(Object, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) findWhere(properties: Object): T; ->findWhere : Symbol(findWhere, Decl(underscoreTest1_underscore.ts, 98, 39)) +>findWhere : Symbol(WrappedArray.findWhere, Decl(underscoreTest1_underscore.ts, 98, 39)) >properties : Symbol(properties, Decl(underscoreTest1_underscore.ts, 99, 18)) >Object : Symbol(Object, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) reject(iterator: Iterator, context?: any): T[]; ->reject : Symbol(reject, Decl(underscoreTest1_underscore.ts, 99, 41)) +>reject : Symbol(WrappedArray.reject, Decl(underscoreTest1_underscore.ts, 99, 41)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 100, 15)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) @@ -1452,54 +1452,54 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) every(iterator?: Iterator, context?: any): boolean; ->every : Symbol(every, Decl(underscoreTest1_underscore.ts, 100, 67)) +>every : Symbol(WrappedArray.every, Decl(underscoreTest1_underscore.ts, 100, 67)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 101, 14)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) >context : Symbol(context, Decl(underscoreTest1_underscore.ts, 101, 46)) all(iterator?: Iterator, context?: any): boolean; ->all : Symbol(all, Decl(underscoreTest1_underscore.ts, 101, 71)) +>all : Symbol(WrappedArray.all, Decl(underscoreTest1_underscore.ts, 101, 71)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 102, 12)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) >context : Symbol(context, Decl(underscoreTest1_underscore.ts, 102, 44)) some(iterator?: Iterator, context?: any): boolean; ->some : Symbol(some, Decl(underscoreTest1_underscore.ts, 102, 69)) +>some : Symbol(WrappedArray.some, Decl(underscoreTest1_underscore.ts, 102, 69)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 103, 13)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) >context : Symbol(context, Decl(underscoreTest1_underscore.ts, 103, 45)) any(iterator?: Iterator, context?: any): boolean; ->any : Symbol(any, Decl(underscoreTest1_underscore.ts, 103, 70)) +>any : Symbol(WrappedArray.any, Decl(underscoreTest1_underscore.ts, 103, 70)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 104, 12)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) >context : Symbol(context, Decl(underscoreTest1_underscore.ts, 104, 44)) contains(value: T): boolean; ->contains : Symbol(contains, Decl(underscoreTest1_underscore.ts, 104, 69)) +>contains : Symbol(WrappedArray.contains, Decl(underscoreTest1_underscore.ts, 104, 69)) >value : Symbol(value, Decl(underscoreTest1_underscore.ts, 105, 17)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) include(value: T): boolean; ->include : Symbol(include, Decl(underscoreTest1_underscore.ts, 105, 36)) +>include : Symbol(WrappedArray.include, Decl(underscoreTest1_underscore.ts, 105, 36)) >value : Symbol(value, Decl(underscoreTest1_underscore.ts, 106, 16)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) invoke(methodName: string, ...args: any[]): any[]; ->invoke : Symbol(invoke, Decl(underscoreTest1_underscore.ts, 106, 35)) +>invoke : Symbol(WrappedArray.invoke, Decl(underscoreTest1_underscore.ts, 106, 35)) >methodName : Symbol(methodName, Decl(underscoreTest1_underscore.ts, 107, 15)) >args : Symbol(args, Decl(underscoreTest1_underscore.ts, 107, 34)) pluck(propertyName: string): any[]; ->pluck : Symbol(pluck, Decl(underscoreTest1_underscore.ts, 107, 58)) +>pluck : Symbol(WrappedArray.pluck, Decl(underscoreTest1_underscore.ts, 107, 58)) >propertyName : Symbol(propertyName, Decl(underscoreTest1_underscore.ts, 108, 14)) max(iterator?: Iterator, context?: any): T; ->max : Symbol(max, Decl(underscoreTest1_underscore.ts, 108, 43)) +>max : Symbol(WrappedArray.max, Decl(underscoreTest1_underscore.ts, 108, 43)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 109, 12)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) @@ -1507,7 +1507,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) min(iterator?: Iterator, context?: any): T; ->min : Symbol(min, Decl(underscoreTest1_underscore.ts, 109, 59)) +>min : Symbol(WrappedArray.min, Decl(underscoreTest1_underscore.ts, 109, 59)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 110, 12)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) @@ -1515,7 +1515,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) sortBy(iterator: Iterator, context?: any): T[]; ->sortBy : Symbol(sortBy, Decl(underscoreTest1_underscore.ts, 110, 59), Decl(underscoreTest1_underscore.ts, 111, 63)) +>sortBy : Symbol(WrappedArray.sortBy, Decl(underscoreTest1_underscore.ts, 110, 59), Decl(underscoreTest1_underscore.ts, 111, 63)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 111, 15)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) @@ -1523,12 +1523,12 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) sortBy(propertyName: string): T[]; ->sortBy : Symbol(sortBy, Decl(underscoreTest1_underscore.ts, 110, 59), Decl(underscoreTest1_underscore.ts, 111, 63)) +>sortBy : Symbol(WrappedArray.sortBy, Decl(underscoreTest1_underscore.ts, 110, 59), Decl(underscoreTest1_underscore.ts, 111, 63)) >propertyName : Symbol(propertyName, Decl(underscoreTest1_underscore.ts, 112, 15)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) groupBy(iterator?: Iterator, context?: any): Dictionary; ->groupBy : Symbol(groupBy, Decl(underscoreTest1_underscore.ts, 112, 42), Decl(underscoreTest1_underscore.ts, 113, 77)) +>groupBy : Symbol(WrappedArray.groupBy, Decl(underscoreTest1_underscore.ts, 112, 42), Decl(underscoreTest1_underscore.ts, 113, 77)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 113, 16)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) @@ -1537,13 +1537,13 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) groupBy(propertyName: string): Dictionary; ->groupBy : Symbol(groupBy, Decl(underscoreTest1_underscore.ts, 112, 42), Decl(underscoreTest1_underscore.ts, 113, 77)) +>groupBy : Symbol(WrappedArray.groupBy, Decl(underscoreTest1_underscore.ts, 112, 42), Decl(underscoreTest1_underscore.ts, 113, 77)) >propertyName : Symbol(propertyName, Decl(underscoreTest1_underscore.ts, 114, 16)) >Dictionary : Symbol(Dictionary, Decl(underscoreTest1_underscore.ts, 0, 0)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) countBy(iterator?: Iterator, context?: any): Dictionary; ->countBy : Symbol(countBy, Decl(underscoreTest1_underscore.ts, 114, 55), Decl(underscoreTest1_underscore.ts, 115, 80)) +>countBy : Symbol(WrappedArray.countBy, Decl(underscoreTest1_underscore.ts, 114, 55), Decl(underscoreTest1_underscore.ts, 115, 80)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 115, 16)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) @@ -1551,112 +1551,112 @@ module Underscore { >Dictionary : Symbol(Dictionary, Decl(underscoreTest1_underscore.ts, 0, 0)) countBy(propertyName: string): Dictionary; ->countBy : Symbol(countBy, Decl(underscoreTest1_underscore.ts, 114, 55), Decl(underscoreTest1_underscore.ts, 115, 80)) +>countBy : Symbol(WrappedArray.countBy, Decl(underscoreTest1_underscore.ts, 114, 55), Decl(underscoreTest1_underscore.ts, 115, 80)) >propertyName : Symbol(propertyName, Decl(underscoreTest1_underscore.ts, 116, 16)) >Dictionary : Symbol(Dictionary, Decl(underscoreTest1_underscore.ts, 0, 0)) shuffle(): T[]; ->shuffle : Symbol(shuffle, Decl(underscoreTest1_underscore.ts, 116, 58)) +>shuffle : Symbol(WrappedArray.shuffle, Decl(underscoreTest1_underscore.ts, 116, 58)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) toArray(): T[]; ->toArray : Symbol(toArray, Decl(underscoreTest1_underscore.ts, 117, 23)) +>toArray : Symbol(WrappedArray.toArray, Decl(underscoreTest1_underscore.ts, 117, 23)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) size(): number; ->size : Symbol(size, Decl(underscoreTest1_underscore.ts, 118, 23)) +>size : Symbol(WrappedArray.size, Decl(underscoreTest1_underscore.ts, 118, 23)) first(): T; ->first : Symbol(first, Decl(underscoreTest1_underscore.ts, 119, 23), Decl(underscoreTest1_underscore.ts, 120, 19)) +>first : Symbol(WrappedArray.first, Decl(underscoreTest1_underscore.ts, 119, 23), Decl(underscoreTest1_underscore.ts, 120, 19)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) first(count: number): T[]; ->first : Symbol(first, Decl(underscoreTest1_underscore.ts, 119, 23), Decl(underscoreTest1_underscore.ts, 120, 19)) +>first : Symbol(WrappedArray.first, Decl(underscoreTest1_underscore.ts, 119, 23), Decl(underscoreTest1_underscore.ts, 120, 19)) >count : Symbol(count, Decl(underscoreTest1_underscore.ts, 121, 14)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) head(): T; ->head : Symbol(head, Decl(underscoreTest1_underscore.ts, 121, 34), Decl(underscoreTest1_underscore.ts, 122, 18)) +>head : Symbol(WrappedArray.head, Decl(underscoreTest1_underscore.ts, 121, 34), Decl(underscoreTest1_underscore.ts, 122, 18)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) head(count: number): T[]; ->head : Symbol(head, Decl(underscoreTest1_underscore.ts, 121, 34), Decl(underscoreTest1_underscore.ts, 122, 18)) +>head : Symbol(WrappedArray.head, Decl(underscoreTest1_underscore.ts, 121, 34), Decl(underscoreTest1_underscore.ts, 122, 18)) >count : Symbol(count, Decl(underscoreTest1_underscore.ts, 123, 13)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) take(): T; ->take : Symbol(take, Decl(underscoreTest1_underscore.ts, 123, 33), Decl(underscoreTest1_underscore.ts, 124, 18)) +>take : Symbol(WrappedArray.take, Decl(underscoreTest1_underscore.ts, 123, 33), Decl(underscoreTest1_underscore.ts, 124, 18)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) take(count: number): T[]; ->take : Symbol(take, Decl(underscoreTest1_underscore.ts, 123, 33), Decl(underscoreTest1_underscore.ts, 124, 18)) +>take : Symbol(WrappedArray.take, Decl(underscoreTest1_underscore.ts, 123, 33), Decl(underscoreTest1_underscore.ts, 124, 18)) >count : Symbol(count, Decl(underscoreTest1_underscore.ts, 125, 13)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) initial(): T; ->initial : Symbol(initial, Decl(underscoreTest1_underscore.ts, 125, 33), Decl(underscoreTest1_underscore.ts, 126, 21)) +>initial : Symbol(WrappedArray.initial, Decl(underscoreTest1_underscore.ts, 125, 33), Decl(underscoreTest1_underscore.ts, 126, 21)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) initial(count: number): T[]; ->initial : Symbol(initial, Decl(underscoreTest1_underscore.ts, 125, 33), Decl(underscoreTest1_underscore.ts, 126, 21)) +>initial : Symbol(WrappedArray.initial, Decl(underscoreTest1_underscore.ts, 125, 33), Decl(underscoreTest1_underscore.ts, 126, 21)) >count : Symbol(count, Decl(underscoreTest1_underscore.ts, 127, 16)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) last(): T; ->last : Symbol(last, Decl(underscoreTest1_underscore.ts, 127, 36), Decl(underscoreTest1_underscore.ts, 128, 18)) +>last : Symbol(WrappedArray.last, Decl(underscoreTest1_underscore.ts, 127, 36), Decl(underscoreTest1_underscore.ts, 128, 18)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) last(count: number): T[]; ->last : Symbol(last, Decl(underscoreTest1_underscore.ts, 127, 36), Decl(underscoreTest1_underscore.ts, 128, 18)) +>last : Symbol(WrappedArray.last, Decl(underscoreTest1_underscore.ts, 127, 36), Decl(underscoreTest1_underscore.ts, 128, 18)) >count : Symbol(count, Decl(underscoreTest1_underscore.ts, 129, 13)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) rest(index?: number): T[]; ->rest : Symbol(rest, Decl(underscoreTest1_underscore.ts, 129, 33)) +>rest : Symbol(WrappedArray.rest, Decl(underscoreTest1_underscore.ts, 129, 33)) >index : Symbol(index, Decl(underscoreTest1_underscore.ts, 130, 13)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) compact(): T[]; ->compact : Symbol(compact, Decl(underscoreTest1_underscore.ts, 130, 34)) +>compact : Symbol(WrappedArray.compact, Decl(underscoreTest1_underscore.ts, 130, 34)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) flatten(shallow?: boolean): U[]; ->flatten : Symbol(flatten, Decl(underscoreTest1_underscore.ts, 131, 23)) +>flatten : Symbol(WrappedArray.flatten, Decl(underscoreTest1_underscore.ts, 131, 23)) >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 132, 16)) >shallow : Symbol(shallow, Decl(underscoreTest1_underscore.ts, 132, 19)) >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 132, 16)) without(...values: T[]): T[]; ->without : Symbol(without, Decl(underscoreTest1_underscore.ts, 132, 43)) +>without : Symbol(WrappedArray.without, Decl(underscoreTest1_underscore.ts, 132, 43)) >values : Symbol(values, Decl(underscoreTest1_underscore.ts, 133, 16)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) union(...arrays: T[][]): T[]; ->union : Symbol(union, Decl(underscoreTest1_underscore.ts, 133, 37)) +>union : Symbol(WrappedArray.union, Decl(underscoreTest1_underscore.ts, 133, 37)) >arrays : Symbol(arrays, Decl(underscoreTest1_underscore.ts, 134, 14)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) intersection(...arrays: T[][]): T[]; ->intersection : Symbol(intersection, Decl(underscoreTest1_underscore.ts, 134, 37)) +>intersection : Symbol(WrappedArray.intersection, Decl(underscoreTest1_underscore.ts, 134, 37)) >arrays : Symbol(arrays, Decl(underscoreTest1_underscore.ts, 135, 21)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) difference(...others: T[][]): T[]; ->difference : Symbol(difference, Decl(underscoreTest1_underscore.ts, 135, 44)) +>difference : Symbol(WrappedArray.difference, Decl(underscoreTest1_underscore.ts, 135, 44)) >others : Symbol(others, Decl(underscoreTest1_underscore.ts, 136, 19)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) uniq(isSorted?: boolean): T[]; ->uniq : Symbol(uniq, Decl(underscoreTest1_underscore.ts, 136, 42), Decl(underscoreTest1_underscore.ts, 137, 38)) +>uniq : Symbol(WrappedArray.uniq, Decl(underscoreTest1_underscore.ts, 136, 42), Decl(underscoreTest1_underscore.ts, 137, 38)) >isSorted : Symbol(isSorted, Decl(underscoreTest1_underscore.ts, 137, 13)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) uniq(isSorted: boolean, iterator: Iterator, context?: any): U[]; ->uniq : Symbol(uniq, Decl(underscoreTest1_underscore.ts, 136, 42), Decl(underscoreTest1_underscore.ts, 137, 38)) +>uniq : Symbol(WrappedArray.uniq, Decl(underscoreTest1_underscore.ts, 136, 42), Decl(underscoreTest1_underscore.ts, 137, 38)) >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 138, 13)) >isSorted : Symbol(isSorted, Decl(underscoreTest1_underscore.ts, 138, 16)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 138, 34)) @@ -1667,12 +1667,12 @@ module Underscore { >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 138, 13)) unique(isSorted?: boolean): T[]; ->unique : Symbol(unique, Decl(underscoreTest1_underscore.ts, 138, 81), Decl(underscoreTest1_underscore.ts, 139, 40)) +>unique : Symbol(WrappedArray.unique, Decl(underscoreTest1_underscore.ts, 138, 81), Decl(underscoreTest1_underscore.ts, 139, 40)) >isSorted : Symbol(isSorted, Decl(underscoreTest1_underscore.ts, 139, 15)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) unique(isSorted: boolean, iterator: Iterator, context?: any): U[]; ->unique : Symbol(unique, Decl(underscoreTest1_underscore.ts, 138, 81), Decl(underscoreTest1_underscore.ts, 139, 40)) +>unique : Symbol(WrappedArray.unique, Decl(underscoreTest1_underscore.ts, 138, 81), Decl(underscoreTest1_underscore.ts, 139, 40)) >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 140, 15)) >isSorted : Symbol(isSorted, Decl(underscoreTest1_underscore.ts, 140, 18)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 140, 36)) @@ -1683,36 +1683,36 @@ module Underscore { >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 140, 15)) zip(...arrays: any[][]): any[][]; ->zip : Symbol(zip, Decl(underscoreTest1_underscore.ts, 140, 83)) +>zip : Symbol(WrappedArray.zip, Decl(underscoreTest1_underscore.ts, 140, 83)) >arrays : Symbol(arrays, Decl(underscoreTest1_underscore.ts, 141, 12)) object(): any; ->object : Symbol(object, Decl(underscoreTest1_underscore.ts, 141, 41), Decl(underscoreTest1_underscore.ts, 142, 22)) +>object : Symbol(WrappedArray.object, Decl(underscoreTest1_underscore.ts, 141, 41), Decl(underscoreTest1_underscore.ts, 142, 22)) object(values: any[]): any; ->object : Symbol(object, Decl(underscoreTest1_underscore.ts, 141, 41), Decl(underscoreTest1_underscore.ts, 142, 22)) +>object : Symbol(WrappedArray.object, Decl(underscoreTest1_underscore.ts, 141, 41), Decl(underscoreTest1_underscore.ts, 142, 22)) >values : Symbol(values, Decl(underscoreTest1_underscore.ts, 143, 15)) indexOf(value: T, isSorted?: boolean): number; ->indexOf : Symbol(indexOf, Decl(underscoreTest1_underscore.ts, 143, 35)) +>indexOf : Symbol(WrappedArray.indexOf, Decl(underscoreTest1_underscore.ts, 143, 35)) >value : Symbol(value, Decl(underscoreTest1_underscore.ts, 144, 16)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) >isSorted : Symbol(isSorted, Decl(underscoreTest1_underscore.ts, 144, 25)) lastIndexOf(value: T, fromIndex?: number): number; ->lastIndexOf : Symbol(lastIndexOf, Decl(underscoreTest1_underscore.ts, 144, 54)) +>lastIndexOf : Symbol(WrappedArray.lastIndexOf, Decl(underscoreTest1_underscore.ts, 144, 54)) >value : Symbol(value, Decl(underscoreTest1_underscore.ts, 145, 20)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) >fromIndex : Symbol(fromIndex, Decl(underscoreTest1_underscore.ts, 145, 29)) sortedIndex(obj: T, propertyName: string): number; ->sortedIndex : Symbol(sortedIndex, Decl(underscoreTest1_underscore.ts, 145, 58), Decl(underscoreTest1_underscore.ts, 146, 58)) +>sortedIndex : Symbol(WrappedArray.sortedIndex, Decl(underscoreTest1_underscore.ts, 145, 58), Decl(underscoreTest1_underscore.ts, 146, 58)) >obj : Symbol(obj, Decl(underscoreTest1_underscore.ts, 146, 20)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) >propertyName : Symbol(propertyName, Decl(underscoreTest1_underscore.ts, 146, 27)) sortedIndex(obj: T, iterator?: Iterator, context?: any): number; ->sortedIndex : Symbol(sortedIndex, Decl(underscoreTest1_underscore.ts, 145, 58), Decl(underscoreTest1_underscore.ts, 146, 58)) +>sortedIndex : Symbol(WrappedArray.sortedIndex, Decl(underscoreTest1_underscore.ts, 145, 58), Decl(underscoreTest1_underscore.ts, 146, 58)) >obj : Symbol(obj, Decl(underscoreTest1_underscore.ts, 147, 20)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 147, 27)) @@ -1722,40 +1722,40 @@ module Underscore { // Methods from Array concat(...items: T[]): T[]; ->concat : Symbol(concat, Decl(underscoreTest1_underscore.ts, 147, 80)) +>concat : Symbol(WrappedArray.concat, Decl(underscoreTest1_underscore.ts, 147, 80)) >items : Symbol(items, Decl(underscoreTest1_underscore.ts, 149, 15)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) join(separator?: string): string; ->join : Symbol(join, Decl(underscoreTest1_underscore.ts, 149, 35)) +>join : Symbol(WrappedArray.join, Decl(underscoreTest1_underscore.ts, 149, 35)) >separator : Symbol(separator, Decl(underscoreTest1_underscore.ts, 150, 13)) pop(): T; ->pop : Symbol(pop, Decl(underscoreTest1_underscore.ts, 150, 41)) +>pop : Symbol(WrappedArray.pop, Decl(underscoreTest1_underscore.ts, 150, 41)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) push(...items: T[]): number; ->push : Symbol(push, Decl(underscoreTest1_underscore.ts, 151, 17)) +>push : Symbol(WrappedArray.push, Decl(underscoreTest1_underscore.ts, 151, 17)) >items : Symbol(items, Decl(underscoreTest1_underscore.ts, 152, 13)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) reverse(): T[]; ->reverse : Symbol(reverse, Decl(underscoreTest1_underscore.ts, 152, 36)) +>reverse : Symbol(WrappedArray.reverse, Decl(underscoreTest1_underscore.ts, 152, 36)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) shift(): T; ->shift : Symbol(shift, Decl(underscoreTest1_underscore.ts, 153, 23)) +>shift : Symbol(WrappedArray.shift, Decl(underscoreTest1_underscore.ts, 153, 23)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) slice(start: number, end?: number): T[]; ->slice : Symbol(slice, Decl(underscoreTest1_underscore.ts, 154, 19)) +>slice : Symbol(WrappedArray.slice, Decl(underscoreTest1_underscore.ts, 154, 19)) >start : Symbol(start, Decl(underscoreTest1_underscore.ts, 155, 14)) >end : Symbol(end, Decl(underscoreTest1_underscore.ts, 155, 28)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) sort(compareFn?: (a: T, b: T) => number): T[]; ->sort : Symbol(sort, Decl(underscoreTest1_underscore.ts, 155, 48)) +>sort : Symbol(WrappedArray.sort, Decl(underscoreTest1_underscore.ts, 155, 48)) >compareFn : Symbol(compareFn, Decl(underscoreTest1_underscore.ts, 156, 13)) >a : Symbol(a, Decl(underscoreTest1_underscore.ts, 156, 26)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) @@ -1764,12 +1764,12 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) splice(start: number): T[]; ->splice : Symbol(splice, Decl(underscoreTest1_underscore.ts, 156, 54), Decl(underscoreTest1_underscore.ts, 157, 35)) +>splice : Symbol(WrappedArray.splice, Decl(underscoreTest1_underscore.ts, 156, 54), Decl(underscoreTest1_underscore.ts, 157, 35)) >start : Symbol(start, Decl(underscoreTest1_underscore.ts, 157, 15)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) splice(start: number, deleteCount: number, ...items: T[]): T[]; ->splice : Symbol(splice, Decl(underscoreTest1_underscore.ts, 156, 54), Decl(underscoreTest1_underscore.ts, 157, 35)) +>splice : Symbol(WrappedArray.splice, Decl(underscoreTest1_underscore.ts, 156, 54), Decl(underscoreTest1_underscore.ts, 157, 35)) >start : Symbol(start, Decl(underscoreTest1_underscore.ts, 158, 15)) >deleteCount : Symbol(deleteCount, Decl(underscoreTest1_underscore.ts, 158, 29)) >items : Symbol(items, Decl(underscoreTest1_underscore.ts, 158, 50)) @@ -1777,7 +1777,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) unshift(...items: T[]): number; ->unshift : Symbol(unshift, Decl(underscoreTest1_underscore.ts, 158, 71)) +>unshift : Symbol(WrappedArray.unshift, Decl(underscoreTest1_underscore.ts, 158, 71)) >items : Symbol(items, Decl(underscoreTest1_underscore.ts, 159, 16)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 79, 34)) } @@ -1790,21 +1790,21 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 162, 39)) each(iterator: Iterator, context?: any): void; ->each : Symbol(each, Decl(underscoreTest1_underscore.ts, 162, 80)) +>each : Symbol(WrappedDictionary.each, Decl(underscoreTest1_underscore.ts, 162, 80)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 163, 13)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 162, 39)) >context : Symbol(context, Decl(underscoreTest1_underscore.ts, 163, 41)) forEach(iterator: Iterator, context?: any): void; ->forEach : Symbol(forEach, Decl(underscoreTest1_underscore.ts, 163, 63)) +>forEach : Symbol(WrappedDictionary.forEach, Decl(underscoreTest1_underscore.ts, 163, 63)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 164, 16)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 162, 39)) >context : Symbol(context, Decl(underscoreTest1_underscore.ts, 164, 44)) map(iterator: Iterator, context?: any): U[]; ->map : Symbol(map, Decl(underscoreTest1_underscore.ts, 164, 66)) +>map : Symbol(WrappedDictionary.map, Decl(underscoreTest1_underscore.ts, 164, 66)) >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 165, 12)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 165, 15)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) @@ -1814,7 +1814,7 @@ module Underscore { >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 165, 12)) collect(iterator: Iterator, context?: any): U[]; ->collect : Symbol(collect, Decl(underscoreTest1_underscore.ts, 165, 61)) +>collect : Symbol(WrappedDictionary.collect, Decl(underscoreTest1_underscore.ts, 165, 61)) >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 166, 16)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 166, 19)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) @@ -1824,7 +1824,7 @@ module Underscore { >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 166, 16)) reduce(iterator: Reducer, initialValue?: T, context?: any): T; ->reduce : Symbol(reduce, Decl(underscoreTest1_underscore.ts, 166, 65), Decl(underscoreTest1_underscore.ts, 167, 76)) +>reduce : Symbol(WrappedDictionary.reduce, Decl(underscoreTest1_underscore.ts, 166, 65), Decl(underscoreTest1_underscore.ts, 167, 76)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 167, 15)) >Reducer : Symbol(Reducer, Decl(underscoreTest1_underscore.ts, 6, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 162, 39)) @@ -1835,7 +1835,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 162, 39)) reduce(iterator: Reducer, initialValue: U, context?: any): U; ->reduce : Symbol(reduce, Decl(underscoreTest1_underscore.ts, 166, 65), Decl(underscoreTest1_underscore.ts, 167, 76)) +>reduce : Symbol(WrappedDictionary.reduce, Decl(underscoreTest1_underscore.ts, 166, 65), Decl(underscoreTest1_underscore.ts, 167, 76)) >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 168, 15)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 168, 18)) >Reducer : Symbol(Reducer, Decl(underscoreTest1_underscore.ts, 6, 1)) @@ -1847,7 +1847,7 @@ module Underscore { >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 168, 15)) foldl(iterator: Reducer, initialValue?: T, context?: any): T; ->foldl : Symbol(foldl, Decl(underscoreTest1_underscore.ts, 168, 78), Decl(underscoreTest1_underscore.ts, 169, 75)) +>foldl : Symbol(WrappedDictionary.foldl, Decl(underscoreTest1_underscore.ts, 168, 78), Decl(underscoreTest1_underscore.ts, 169, 75)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 169, 14)) >Reducer : Symbol(Reducer, Decl(underscoreTest1_underscore.ts, 6, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 162, 39)) @@ -1858,7 +1858,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 162, 39)) foldl(iterator: Reducer, initialValue: U, context?: any): U; ->foldl : Symbol(foldl, Decl(underscoreTest1_underscore.ts, 168, 78), Decl(underscoreTest1_underscore.ts, 169, 75)) +>foldl : Symbol(WrappedDictionary.foldl, Decl(underscoreTest1_underscore.ts, 168, 78), Decl(underscoreTest1_underscore.ts, 169, 75)) >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 170, 14)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 170, 17)) >Reducer : Symbol(Reducer, Decl(underscoreTest1_underscore.ts, 6, 1)) @@ -1870,7 +1870,7 @@ module Underscore { >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 170, 14)) inject(iterator: Reducer, initialValue?: T, context?: any): T; ->inject : Symbol(inject, Decl(underscoreTest1_underscore.ts, 170, 77), Decl(underscoreTest1_underscore.ts, 171, 76)) +>inject : Symbol(WrappedDictionary.inject, Decl(underscoreTest1_underscore.ts, 170, 77), Decl(underscoreTest1_underscore.ts, 171, 76)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 171, 15)) >Reducer : Symbol(Reducer, Decl(underscoreTest1_underscore.ts, 6, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 162, 39)) @@ -1881,7 +1881,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 162, 39)) inject(iterator: Reducer, initialValue: U, context?: any): U; ->inject : Symbol(inject, Decl(underscoreTest1_underscore.ts, 170, 77), Decl(underscoreTest1_underscore.ts, 171, 76)) +>inject : Symbol(WrappedDictionary.inject, Decl(underscoreTest1_underscore.ts, 170, 77), Decl(underscoreTest1_underscore.ts, 171, 76)) >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 172, 15)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 172, 18)) >Reducer : Symbol(Reducer, Decl(underscoreTest1_underscore.ts, 6, 1)) @@ -1893,7 +1893,7 @@ module Underscore { >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 172, 15)) reduceRight(iterator: Reducer, initialValue?: T, context?: any): T; ->reduceRight : Symbol(reduceRight, Decl(underscoreTest1_underscore.ts, 172, 78), Decl(underscoreTest1_underscore.ts, 173, 81)) +>reduceRight : Symbol(WrappedDictionary.reduceRight, Decl(underscoreTest1_underscore.ts, 172, 78), Decl(underscoreTest1_underscore.ts, 173, 81)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 173, 20)) >Reducer : Symbol(Reducer, Decl(underscoreTest1_underscore.ts, 6, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 162, 39)) @@ -1904,7 +1904,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 162, 39)) reduceRight(iterator: Reducer, initialValue: U, context?: any): U; ->reduceRight : Symbol(reduceRight, Decl(underscoreTest1_underscore.ts, 172, 78), Decl(underscoreTest1_underscore.ts, 173, 81)) +>reduceRight : Symbol(WrappedDictionary.reduceRight, Decl(underscoreTest1_underscore.ts, 172, 78), Decl(underscoreTest1_underscore.ts, 173, 81)) >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 174, 20)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 174, 23)) >Reducer : Symbol(Reducer, Decl(underscoreTest1_underscore.ts, 6, 1)) @@ -1916,7 +1916,7 @@ module Underscore { >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 174, 20)) foldr(iterator: Reducer, initialValue?: T, context?: any): T; ->foldr : Symbol(foldr, Decl(underscoreTest1_underscore.ts, 174, 83), Decl(underscoreTest1_underscore.ts, 175, 75)) +>foldr : Symbol(WrappedDictionary.foldr, Decl(underscoreTest1_underscore.ts, 174, 83), Decl(underscoreTest1_underscore.ts, 175, 75)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 175, 14)) >Reducer : Symbol(Reducer, Decl(underscoreTest1_underscore.ts, 6, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 162, 39)) @@ -1927,7 +1927,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 162, 39)) foldr(iterator: Reducer, initialValue: U, context?: any): U; ->foldr : Symbol(foldr, Decl(underscoreTest1_underscore.ts, 174, 83), Decl(underscoreTest1_underscore.ts, 175, 75)) +>foldr : Symbol(WrappedDictionary.foldr, Decl(underscoreTest1_underscore.ts, 174, 83), Decl(underscoreTest1_underscore.ts, 175, 75)) >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 176, 14)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 176, 17)) >Reducer : Symbol(Reducer, Decl(underscoreTest1_underscore.ts, 6, 1)) @@ -1939,7 +1939,7 @@ module Underscore { >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 176, 14)) find(iterator: Iterator, context?: any): T; ->find : Symbol(find, Decl(underscoreTest1_underscore.ts, 176, 77)) +>find : Symbol(WrappedDictionary.find, Decl(underscoreTest1_underscore.ts, 176, 77)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 177, 13)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 162, 39)) @@ -1947,7 +1947,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 162, 39)) detect(iterator: Iterator, context?: any): T; ->detect : Symbol(detect, Decl(underscoreTest1_underscore.ts, 177, 63)) +>detect : Symbol(WrappedDictionary.detect, Decl(underscoreTest1_underscore.ts, 177, 63)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 178, 15)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 162, 39)) @@ -1955,7 +1955,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 162, 39)) filter(iterator: Iterator, context?: any): T[]; ->filter : Symbol(filter, Decl(underscoreTest1_underscore.ts, 178, 65)) +>filter : Symbol(WrappedDictionary.filter, Decl(underscoreTest1_underscore.ts, 178, 65)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 179, 15)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 162, 39)) @@ -1963,7 +1963,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 162, 39)) select(iterator: Iterator, context?: any): T[]; ->select : Symbol(select, Decl(underscoreTest1_underscore.ts, 179, 67)) +>select : Symbol(WrappedDictionary.select, Decl(underscoreTest1_underscore.ts, 179, 67)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 180, 15)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 162, 39)) @@ -1971,19 +1971,19 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 162, 39)) where(properties: Object): T[]; ->where : Symbol(where, Decl(underscoreTest1_underscore.ts, 180, 67)) +>where : Symbol(WrappedDictionary.where, Decl(underscoreTest1_underscore.ts, 180, 67)) >properties : Symbol(properties, Decl(underscoreTest1_underscore.ts, 181, 14)) >Object : Symbol(Object, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 162, 39)) findWhere(properties: Object): T; ->findWhere : Symbol(findWhere, Decl(underscoreTest1_underscore.ts, 181, 39)) +>findWhere : Symbol(WrappedDictionary.findWhere, Decl(underscoreTest1_underscore.ts, 181, 39)) >properties : Symbol(properties, Decl(underscoreTest1_underscore.ts, 182, 18)) >Object : Symbol(Object, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 162, 39)) reject(iterator: Iterator, context?: any): T[]; ->reject : Symbol(reject, Decl(underscoreTest1_underscore.ts, 182, 41)) +>reject : Symbol(WrappedDictionary.reject, Decl(underscoreTest1_underscore.ts, 182, 41)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 183, 15)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 162, 39)) @@ -1991,54 +1991,54 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 162, 39)) every(iterator?: Iterator, context?: any): boolean; ->every : Symbol(every, Decl(underscoreTest1_underscore.ts, 183, 67)) +>every : Symbol(WrappedDictionary.every, Decl(underscoreTest1_underscore.ts, 183, 67)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 184, 14)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 162, 39)) >context : Symbol(context, Decl(underscoreTest1_underscore.ts, 184, 46)) all(iterator?: Iterator, context?: any): boolean; ->all : Symbol(all, Decl(underscoreTest1_underscore.ts, 184, 71)) +>all : Symbol(WrappedDictionary.all, Decl(underscoreTest1_underscore.ts, 184, 71)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 185, 12)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 162, 39)) >context : Symbol(context, Decl(underscoreTest1_underscore.ts, 185, 44)) some(iterator?: Iterator, context?: any): boolean; ->some : Symbol(some, Decl(underscoreTest1_underscore.ts, 185, 69)) +>some : Symbol(WrappedDictionary.some, Decl(underscoreTest1_underscore.ts, 185, 69)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 186, 13)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 162, 39)) >context : Symbol(context, Decl(underscoreTest1_underscore.ts, 186, 45)) any(iterator?: Iterator, context?: any): boolean; ->any : Symbol(any, Decl(underscoreTest1_underscore.ts, 186, 70)) +>any : Symbol(WrappedDictionary.any, Decl(underscoreTest1_underscore.ts, 186, 70)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 187, 12)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 162, 39)) >context : Symbol(context, Decl(underscoreTest1_underscore.ts, 187, 44)) contains(value: T): boolean; ->contains : Symbol(contains, Decl(underscoreTest1_underscore.ts, 187, 69)) +>contains : Symbol(WrappedDictionary.contains, Decl(underscoreTest1_underscore.ts, 187, 69)) >value : Symbol(value, Decl(underscoreTest1_underscore.ts, 188, 17)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 162, 39)) include(value: T): boolean; ->include : Symbol(include, Decl(underscoreTest1_underscore.ts, 188, 36)) +>include : Symbol(WrappedDictionary.include, Decl(underscoreTest1_underscore.ts, 188, 36)) >value : Symbol(value, Decl(underscoreTest1_underscore.ts, 189, 16)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 162, 39)) invoke(methodName: string, ...args: any[]): any[]; ->invoke : Symbol(invoke, Decl(underscoreTest1_underscore.ts, 189, 35)) +>invoke : Symbol(WrappedDictionary.invoke, Decl(underscoreTest1_underscore.ts, 189, 35)) >methodName : Symbol(methodName, Decl(underscoreTest1_underscore.ts, 190, 15)) >args : Symbol(args, Decl(underscoreTest1_underscore.ts, 190, 34)) pluck(propertyName: string): any[]; ->pluck : Symbol(pluck, Decl(underscoreTest1_underscore.ts, 190, 58)) +>pluck : Symbol(WrappedDictionary.pluck, Decl(underscoreTest1_underscore.ts, 190, 58)) >propertyName : Symbol(propertyName, Decl(underscoreTest1_underscore.ts, 191, 14)) max(iterator?: Iterator, context?: any): T; ->max : Symbol(max, Decl(underscoreTest1_underscore.ts, 191, 43)) +>max : Symbol(WrappedDictionary.max, Decl(underscoreTest1_underscore.ts, 191, 43)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 192, 12)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 162, 39)) @@ -2046,7 +2046,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 162, 39)) min(iterator?: Iterator, context?: any): T; ->min : Symbol(min, Decl(underscoreTest1_underscore.ts, 192, 59)) +>min : Symbol(WrappedDictionary.min, Decl(underscoreTest1_underscore.ts, 192, 59)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 193, 12)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 162, 39)) @@ -2054,7 +2054,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 162, 39)) sortBy(iterator: Iterator, context?: any): T[]; ->sortBy : Symbol(sortBy, Decl(underscoreTest1_underscore.ts, 193, 59), Decl(underscoreTest1_underscore.ts, 194, 63)) +>sortBy : Symbol(WrappedDictionary.sortBy, Decl(underscoreTest1_underscore.ts, 193, 59), Decl(underscoreTest1_underscore.ts, 194, 63)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 194, 15)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 162, 39)) @@ -2062,12 +2062,12 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 162, 39)) sortBy(propertyName: string): T[]; ->sortBy : Symbol(sortBy, Decl(underscoreTest1_underscore.ts, 193, 59), Decl(underscoreTest1_underscore.ts, 194, 63)) +>sortBy : Symbol(WrappedDictionary.sortBy, Decl(underscoreTest1_underscore.ts, 193, 59), Decl(underscoreTest1_underscore.ts, 194, 63)) >propertyName : Symbol(propertyName, Decl(underscoreTest1_underscore.ts, 195, 15)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 162, 39)) groupBy(iterator?: Iterator, context?: any): Dictionary; ->groupBy : Symbol(groupBy, Decl(underscoreTest1_underscore.ts, 195, 42), Decl(underscoreTest1_underscore.ts, 196, 77)) +>groupBy : Symbol(WrappedDictionary.groupBy, Decl(underscoreTest1_underscore.ts, 195, 42), Decl(underscoreTest1_underscore.ts, 196, 77)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 196, 16)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 162, 39)) @@ -2076,13 +2076,13 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 162, 39)) groupBy(propertyName: string): Dictionary; ->groupBy : Symbol(groupBy, Decl(underscoreTest1_underscore.ts, 195, 42), Decl(underscoreTest1_underscore.ts, 196, 77)) +>groupBy : Symbol(WrappedDictionary.groupBy, Decl(underscoreTest1_underscore.ts, 195, 42), Decl(underscoreTest1_underscore.ts, 196, 77)) >propertyName : Symbol(propertyName, Decl(underscoreTest1_underscore.ts, 197, 16)) >Dictionary : Symbol(Dictionary, Decl(underscoreTest1_underscore.ts, 0, 0)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 162, 39)) countBy(iterator?: Iterator, context?: any): Dictionary; ->countBy : Symbol(countBy, Decl(underscoreTest1_underscore.ts, 197, 55), Decl(underscoreTest1_underscore.ts, 198, 80)) +>countBy : Symbol(WrappedDictionary.countBy, Decl(underscoreTest1_underscore.ts, 197, 55), Decl(underscoreTest1_underscore.ts, 198, 80)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 198, 16)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 162, 39)) @@ -2090,20 +2090,20 @@ module Underscore { >Dictionary : Symbol(Dictionary, Decl(underscoreTest1_underscore.ts, 0, 0)) countBy(propertyName: string): Dictionary; ->countBy : Symbol(countBy, Decl(underscoreTest1_underscore.ts, 197, 55), Decl(underscoreTest1_underscore.ts, 198, 80)) +>countBy : Symbol(WrappedDictionary.countBy, Decl(underscoreTest1_underscore.ts, 197, 55), Decl(underscoreTest1_underscore.ts, 198, 80)) >propertyName : Symbol(propertyName, Decl(underscoreTest1_underscore.ts, 199, 16)) >Dictionary : Symbol(Dictionary, Decl(underscoreTest1_underscore.ts, 0, 0)) shuffle(): T[]; ->shuffle : Symbol(shuffle, Decl(underscoreTest1_underscore.ts, 199, 58)) +>shuffle : Symbol(WrappedDictionary.shuffle, Decl(underscoreTest1_underscore.ts, 199, 58)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 162, 39)) toArray(): T[]; ->toArray : Symbol(toArray, Decl(underscoreTest1_underscore.ts, 200, 23)) +>toArray : Symbol(WrappedDictionary.toArray, Decl(underscoreTest1_underscore.ts, 200, 23)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 162, 39)) size(): number; ->size : Symbol(size, Decl(underscoreTest1_underscore.ts, 201, 23)) +>size : Symbol(WrappedDictionary.size, Decl(underscoreTest1_underscore.ts, 201, 23)) } export interface ChainedObject { @@ -2111,60 +2111,60 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 205, 35)) keys(): ChainedArray; ->keys : Symbol(keys, Decl(underscoreTest1_underscore.ts, 205, 39)) +>keys : Symbol(ChainedObject.keys, Decl(underscoreTest1_underscore.ts, 205, 39)) >ChainedArray : Symbol(ChainedArray, Decl(underscoreTest1_underscore.ts, 236, 5)) values(): ChainedArray; ->values : Symbol(values, Decl(underscoreTest1_underscore.ts, 206, 37)) +>values : Symbol(ChainedObject.values, Decl(underscoreTest1_underscore.ts, 206, 37)) >ChainedArray : Symbol(ChainedArray, Decl(underscoreTest1_underscore.ts, 236, 5)) pairs(): ChainedArray; ->pairs : Symbol(pairs, Decl(underscoreTest1_underscore.ts, 207, 36)) +>pairs : Symbol(ChainedObject.pairs, Decl(underscoreTest1_underscore.ts, 207, 36)) >ChainedArray : Symbol(ChainedArray, Decl(underscoreTest1_underscore.ts, 236, 5)) invert(): ChainedObject; ->invert : Symbol(invert, Decl(underscoreTest1_underscore.ts, 208, 37)) +>invert : Symbol(ChainedObject.invert, Decl(underscoreTest1_underscore.ts, 208, 37)) >ChainedObject : Symbol(ChainedObject, Decl(underscoreTest1_underscore.ts, 203, 5)) functions(): ChainedArray; ->functions : Symbol(functions, Decl(underscoreTest1_underscore.ts, 209, 37)) +>functions : Symbol(ChainedObject.functions, Decl(underscoreTest1_underscore.ts, 209, 37)) >ChainedArray : Symbol(ChainedArray, Decl(underscoreTest1_underscore.ts, 236, 5)) methods(): ChainedArray; ->methods : Symbol(methods, Decl(underscoreTest1_underscore.ts, 210, 42)) +>methods : Symbol(ChainedObject.methods, Decl(underscoreTest1_underscore.ts, 210, 42)) >ChainedArray : Symbol(ChainedArray, Decl(underscoreTest1_underscore.ts, 236, 5)) extend(...sources: any[]): ChainedObject; ->extend : Symbol(extend, Decl(underscoreTest1_underscore.ts, 211, 40)) +>extend : Symbol(ChainedObject.extend, Decl(underscoreTest1_underscore.ts, 211, 40)) >sources : Symbol(sources, Decl(underscoreTest1_underscore.ts, 212, 15)) >ChainedObject : Symbol(ChainedObject, Decl(underscoreTest1_underscore.ts, 203, 5)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 205, 35)) pick(...keys: string[]): ChainedObject; ->pick : Symbol(pick, Decl(underscoreTest1_underscore.ts, 212, 52)) +>pick : Symbol(ChainedObject.pick, Decl(underscoreTest1_underscore.ts, 212, 52)) >keys : Symbol(keys, Decl(underscoreTest1_underscore.ts, 213, 13)) >ChainedObject : Symbol(ChainedObject, Decl(underscoreTest1_underscore.ts, 203, 5)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 205, 35)) omit(...keys: string[]): ChainedObject; ->omit : Symbol(omit, Decl(underscoreTest1_underscore.ts, 213, 50)) +>omit : Symbol(ChainedObject.omit, Decl(underscoreTest1_underscore.ts, 213, 50)) >keys : Symbol(keys, Decl(underscoreTest1_underscore.ts, 214, 13)) >ChainedObject : Symbol(ChainedObject, Decl(underscoreTest1_underscore.ts, 203, 5)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 205, 35)) defaults(...defaults: any[]): ChainedObject; ->defaults : Symbol(defaults, Decl(underscoreTest1_underscore.ts, 214, 50)) +>defaults : Symbol(ChainedObject.defaults, Decl(underscoreTest1_underscore.ts, 214, 50)) >defaults : Symbol(defaults, Decl(underscoreTest1_underscore.ts, 215, 17)) >ChainedObject : Symbol(ChainedObject, Decl(underscoreTest1_underscore.ts, 203, 5)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 205, 35)) clone(): ChainedObject; ->clone : Symbol(clone, Decl(underscoreTest1_underscore.ts, 215, 55)) +>clone : Symbol(ChainedObject.clone, Decl(underscoreTest1_underscore.ts, 215, 55)) >ChainedObject : Symbol(ChainedObject, Decl(underscoreTest1_underscore.ts, 203, 5)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 205, 35)) tap(interceptor: (object: T) => void): ChainedObject; ->tap : Symbol(tap, Decl(underscoreTest1_underscore.ts, 216, 34)) +>tap : Symbol(ChainedObject.tap, Decl(underscoreTest1_underscore.ts, 216, 34)) >interceptor : Symbol(interceptor, Decl(underscoreTest1_underscore.ts, 217, 12)) >object : Symbol(object, Decl(underscoreTest1_underscore.ts, 217, 26)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 205, 35)) @@ -2172,78 +2172,78 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 205, 35)) has(key: string): ChainedObject; ->has : Symbol(has, Decl(underscoreTest1_underscore.ts, 217, 64)) +>has : Symbol(ChainedObject.has, Decl(underscoreTest1_underscore.ts, 217, 64)) >key : Symbol(key, Decl(underscoreTest1_underscore.ts, 218, 12)) >ChainedObject : Symbol(ChainedObject, Decl(underscoreTest1_underscore.ts, 203, 5)) isEqual(other: T): ChainedObject; ->isEqual : Symbol(isEqual, Decl(underscoreTest1_underscore.ts, 218, 49)) +>isEqual : Symbol(ChainedObject.isEqual, Decl(underscoreTest1_underscore.ts, 218, 49)) >other : Symbol(other, Decl(underscoreTest1_underscore.ts, 219, 16)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 205, 35)) >ChainedObject : Symbol(ChainedObject, Decl(underscoreTest1_underscore.ts, 203, 5)) isEmpty(): ChainedObject; ->isEmpty : Symbol(isEmpty, Decl(underscoreTest1_underscore.ts, 219, 50)) +>isEmpty : Symbol(ChainedObject.isEmpty, Decl(underscoreTest1_underscore.ts, 219, 50)) >ChainedObject : Symbol(ChainedObject, Decl(underscoreTest1_underscore.ts, 203, 5)) isElement(): ChainedObject; ->isElement : Symbol(isElement, Decl(underscoreTest1_underscore.ts, 220, 42)) +>isElement : Symbol(ChainedObject.isElement, Decl(underscoreTest1_underscore.ts, 220, 42)) >ChainedObject : Symbol(ChainedObject, Decl(underscoreTest1_underscore.ts, 203, 5)) isArray(): ChainedObject; ->isArray : Symbol(isArray, Decl(underscoreTest1_underscore.ts, 221, 44)) +>isArray : Symbol(ChainedObject.isArray, Decl(underscoreTest1_underscore.ts, 221, 44)) >ChainedObject : Symbol(ChainedObject, Decl(underscoreTest1_underscore.ts, 203, 5)) isObject(): ChainedObject; ->isObject : Symbol(isObject, Decl(underscoreTest1_underscore.ts, 222, 42)) +>isObject : Symbol(ChainedObject.isObject, Decl(underscoreTest1_underscore.ts, 222, 42)) >ChainedObject : Symbol(ChainedObject, Decl(underscoreTest1_underscore.ts, 203, 5)) isArguments(): ChainedObject; ->isArguments : Symbol(isArguments, Decl(underscoreTest1_underscore.ts, 223, 43)) +>isArguments : Symbol(ChainedObject.isArguments, Decl(underscoreTest1_underscore.ts, 223, 43)) >ChainedObject : Symbol(ChainedObject, Decl(underscoreTest1_underscore.ts, 203, 5)) isFunction(): ChainedObject; ->isFunction : Symbol(isFunction, Decl(underscoreTest1_underscore.ts, 224, 46)) +>isFunction : Symbol(ChainedObject.isFunction, Decl(underscoreTest1_underscore.ts, 224, 46)) >ChainedObject : Symbol(ChainedObject, Decl(underscoreTest1_underscore.ts, 203, 5)) isString(): ChainedObject; ->isString : Symbol(isString, Decl(underscoreTest1_underscore.ts, 225, 45)) +>isString : Symbol(ChainedObject.isString, Decl(underscoreTest1_underscore.ts, 225, 45)) >ChainedObject : Symbol(ChainedObject, Decl(underscoreTest1_underscore.ts, 203, 5)) isNumber(): ChainedObject; ->isNumber : Symbol(isNumber, Decl(underscoreTest1_underscore.ts, 226, 43)) +>isNumber : Symbol(ChainedObject.isNumber, Decl(underscoreTest1_underscore.ts, 226, 43)) >ChainedObject : Symbol(ChainedObject, Decl(underscoreTest1_underscore.ts, 203, 5)) isFinite(): ChainedObject; ->isFinite : Symbol(isFinite, Decl(underscoreTest1_underscore.ts, 227, 43)) +>isFinite : Symbol(ChainedObject.isFinite, Decl(underscoreTest1_underscore.ts, 227, 43)) >ChainedObject : Symbol(ChainedObject, Decl(underscoreTest1_underscore.ts, 203, 5)) isBoolean(): ChainedObject; ->isBoolean : Symbol(isBoolean, Decl(underscoreTest1_underscore.ts, 228, 43)) +>isBoolean : Symbol(ChainedObject.isBoolean, Decl(underscoreTest1_underscore.ts, 228, 43)) >ChainedObject : Symbol(ChainedObject, Decl(underscoreTest1_underscore.ts, 203, 5)) isDate(): ChainedObject; ->isDate : Symbol(isDate, Decl(underscoreTest1_underscore.ts, 229, 44)) +>isDate : Symbol(ChainedObject.isDate, Decl(underscoreTest1_underscore.ts, 229, 44)) >ChainedObject : Symbol(ChainedObject, Decl(underscoreTest1_underscore.ts, 203, 5)) isRegExp(): ChainedObject; ->isRegExp : Symbol(isRegExp, Decl(underscoreTest1_underscore.ts, 230, 41)) +>isRegExp : Symbol(ChainedObject.isRegExp, Decl(underscoreTest1_underscore.ts, 230, 41)) >ChainedObject : Symbol(ChainedObject, Decl(underscoreTest1_underscore.ts, 203, 5)) isNaN(): ChainedObject; ->isNaN : Symbol(isNaN, Decl(underscoreTest1_underscore.ts, 231, 43)) +>isNaN : Symbol(ChainedObject.isNaN, Decl(underscoreTest1_underscore.ts, 231, 43)) >ChainedObject : Symbol(ChainedObject, Decl(underscoreTest1_underscore.ts, 203, 5)) isNull(): ChainedObject; ->isNull : Symbol(isNull, Decl(underscoreTest1_underscore.ts, 232, 40)) +>isNull : Symbol(ChainedObject.isNull, Decl(underscoreTest1_underscore.ts, 232, 40)) >ChainedObject : Symbol(ChainedObject, Decl(underscoreTest1_underscore.ts, 203, 5)) isUndefined(): ChainedObject; ->isUndefined : Symbol(isUndefined, Decl(underscoreTest1_underscore.ts, 233, 41)) +>isUndefined : Symbol(ChainedObject.isUndefined, Decl(underscoreTest1_underscore.ts, 233, 41)) >ChainedObject : Symbol(ChainedObject, Decl(underscoreTest1_underscore.ts, 203, 5)) value(): T; ->value : Symbol(value, Decl(underscoreTest1_underscore.ts, 234, 46)) +>value : Symbol(ChainedObject.value, Decl(underscoreTest1_underscore.ts, 234, 46)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 205, 35)) } @@ -2255,7 +2255,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) each(iterator: Iterator, context?: any): ChainedObject; ->each : Symbol(each, Decl(underscoreTest1_underscore.ts, 238, 70)) +>each : Symbol(ChainedArray.each, Decl(underscoreTest1_underscore.ts, 238, 70)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 239, 13)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) @@ -2263,7 +2263,7 @@ module Underscore { >ChainedObject : Symbol(ChainedObject, Decl(underscoreTest1_underscore.ts, 203, 5)) forEach(iterator: Iterator, context?: any): ChainedObject; ->forEach : Symbol(forEach, Decl(underscoreTest1_underscore.ts, 239, 78)) +>forEach : Symbol(ChainedArray.forEach, Decl(underscoreTest1_underscore.ts, 239, 78)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 240, 16)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) @@ -2271,7 +2271,7 @@ module Underscore { >ChainedObject : Symbol(ChainedObject, Decl(underscoreTest1_underscore.ts, 203, 5)) map(iterator: Iterator, context?: any): ChainedArray; ->map : Symbol(map, Decl(underscoreTest1_underscore.ts, 240, 81)) +>map : Symbol(ChainedArray.map, Decl(underscoreTest1_underscore.ts, 240, 81)) >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 241, 12)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 241, 15)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) @@ -2282,7 +2282,7 @@ module Underscore { >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 241, 12)) collect(iterator: Iterator, context?: any): ChainedArray; ->collect : Symbol(collect, Decl(underscoreTest1_underscore.ts, 241, 73)) +>collect : Symbol(ChainedArray.collect, Decl(underscoreTest1_underscore.ts, 241, 73)) >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 242, 16)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 242, 19)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) @@ -2293,7 +2293,7 @@ module Underscore { >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 242, 16)) reduce(iterator: Reducer, initialValue?: T, context?: any): ChainedObject; ->reduce : Symbol(reduce, Decl(underscoreTest1_underscore.ts, 242, 77), Decl(underscoreTest1_underscore.ts, 243, 91)) +>reduce : Symbol(ChainedArray.reduce, Decl(underscoreTest1_underscore.ts, 242, 77), Decl(underscoreTest1_underscore.ts, 243, 91)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 243, 15)) >Reducer : Symbol(Reducer, Decl(underscoreTest1_underscore.ts, 6, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) @@ -2305,7 +2305,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) reduce(iterator: Reducer, initialValue: U, context?: any): ChainedObject; ->reduce : Symbol(reduce, Decl(underscoreTest1_underscore.ts, 242, 77), Decl(underscoreTest1_underscore.ts, 243, 91)) +>reduce : Symbol(ChainedArray.reduce, Decl(underscoreTest1_underscore.ts, 242, 77), Decl(underscoreTest1_underscore.ts, 243, 91)) >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 244, 15)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 244, 18)) >Reducer : Symbol(Reducer, Decl(underscoreTest1_underscore.ts, 6, 1)) @@ -2318,7 +2318,7 @@ module Underscore { >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 244, 15)) foldl(iterator: Reducer, initialValue?: T, context?: any): ChainedObject; ->foldl : Symbol(foldl, Decl(underscoreTest1_underscore.ts, 244, 93), Decl(underscoreTest1_underscore.ts, 245, 90)) +>foldl : Symbol(ChainedArray.foldl, Decl(underscoreTest1_underscore.ts, 244, 93), Decl(underscoreTest1_underscore.ts, 245, 90)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 245, 14)) >Reducer : Symbol(Reducer, Decl(underscoreTest1_underscore.ts, 6, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) @@ -2330,7 +2330,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) foldl(iterator: Reducer, initialValue: U, context?: any): ChainedObject; ->foldl : Symbol(foldl, Decl(underscoreTest1_underscore.ts, 244, 93), Decl(underscoreTest1_underscore.ts, 245, 90)) +>foldl : Symbol(ChainedArray.foldl, Decl(underscoreTest1_underscore.ts, 244, 93), Decl(underscoreTest1_underscore.ts, 245, 90)) >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 246, 14)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 246, 17)) >Reducer : Symbol(Reducer, Decl(underscoreTest1_underscore.ts, 6, 1)) @@ -2343,7 +2343,7 @@ module Underscore { >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 246, 14)) inject(iterator: Reducer, initialValue?: T, context?: any): ChainedObject; ->inject : Symbol(inject, Decl(underscoreTest1_underscore.ts, 246, 92), Decl(underscoreTest1_underscore.ts, 247, 91)) +>inject : Symbol(ChainedArray.inject, Decl(underscoreTest1_underscore.ts, 246, 92), Decl(underscoreTest1_underscore.ts, 247, 91)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 247, 15)) >Reducer : Symbol(Reducer, Decl(underscoreTest1_underscore.ts, 6, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) @@ -2355,7 +2355,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) inject(iterator: Reducer, initialValue: U, context?: any): ChainedObject; ->inject : Symbol(inject, Decl(underscoreTest1_underscore.ts, 246, 92), Decl(underscoreTest1_underscore.ts, 247, 91)) +>inject : Symbol(ChainedArray.inject, Decl(underscoreTest1_underscore.ts, 246, 92), Decl(underscoreTest1_underscore.ts, 247, 91)) >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 248, 15)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 248, 18)) >Reducer : Symbol(Reducer, Decl(underscoreTest1_underscore.ts, 6, 1)) @@ -2368,7 +2368,7 @@ module Underscore { >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 248, 15)) reduceRight(iterator: Reducer, initialValue?: T, context?: any): ChainedObject; ->reduceRight : Symbol(reduceRight, Decl(underscoreTest1_underscore.ts, 248, 93), Decl(underscoreTest1_underscore.ts, 249, 96)) +>reduceRight : Symbol(ChainedArray.reduceRight, Decl(underscoreTest1_underscore.ts, 248, 93), Decl(underscoreTest1_underscore.ts, 249, 96)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 249, 20)) >Reducer : Symbol(Reducer, Decl(underscoreTest1_underscore.ts, 6, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) @@ -2380,7 +2380,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) reduceRight(iterator: Reducer, initialValue: U, context?: any): ChainedObject; ->reduceRight : Symbol(reduceRight, Decl(underscoreTest1_underscore.ts, 248, 93), Decl(underscoreTest1_underscore.ts, 249, 96)) +>reduceRight : Symbol(ChainedArray.reduceRight, Decl(underscoreTest1_underscore.ts, 248, 93), Decl(underscoreTest1_underscore.ts, 249, 96)) >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 250, 20)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 250, 23)) >Reducer : Symbol(Reducer, Decl(underscoreTest1_underscore.ts, 6, 1)) @@ -2393,7 +2393,7 @@ module Underscore { >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 250, 20)) foldr(iterator: Reducer, initialValue?: T, context?: any): ChainedObject; ->foldr : Symbol(foldr, Decl(underscoreTest1_underscore.ts, 250, 98), Decl(underscoreTest1_underscore.ts, 251, 90)) +>foldr : Symbol(ChainedArray.foldr, Decl(underscoreTest1_underscore.ts, 250, 98), Decl(underscoreTest1_underscore.ts, 251, 90)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 251, 14)) >Reducer : Symbol(Reducer, Decl(underscoreTest1_underscore.ts, 6, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) @@ -2405,7 +2405,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) foldr(iterator: Reducer, initialValue: U, context?: any): ChainedObject; ->foldr : Symbol(foldr, Decl(underscoreTest1_underscore.ts, 250, 98), Decl(underscoreTest1_underscore.ts, 251, 90)) +>foldr : Symbol(ChainedArray.foldr, Decl(underscoreTest1_underscore.ts, 250, 98), Decl(underscoreTest1_underscore.ts, 251, 90)) >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 252, 14)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 252, 17)) >Reducer : Symbol(Reducer, Decl(underscoreTest1_underscore.ts, 6, 1)) @@ -2418,7 +2418,7 @@ module Underscore { >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 252, 14)) find(iterator: Iterator, context?: any): ChainedObject; ->find : Symbol(find, Decl(underscoreTest1_underscore.ts, 252, 92)) +>find : Symbol(ChainedArray.find, Decl(underscoreTest1_underscore.ts, 252, 92)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 253, 13)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) @@ -2427,7 +2427,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) detect(iterator: Iterator, context?: any): ChainedObject; ->detect : Symbol(detect, Decl(underscoreTest1_underscore.ts, 253, 78)) +>detect : Symbol(ChainedArray.detect, Decl(underscoreTest1_underscore.ts, 253, 78)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 254, 15)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) @@ -2436,7 +2436,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) filter(iterator: Iterator, context?: any): ChainedArray; ->filter : Symbol(filter, Decl(underscoreTest1_underscore.ts, 254, 80)) +>filter : Symbol(ChainedArray.filter, Decl(underscoreTest1_underscore.ts, 254, 80)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 255, 15)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) @@ -2445,7 +2445,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) select(iterator: Iterator, context?: any): ChainedArray; ->select : Symbol(select, Decl(underscoreTest1_underscore.ts, 255, 79)) +>select : Symbol(ChainedArray.select, Decl(underscoreTest1_underscore.ts, 255, 79)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 256, 15)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) @@ -2454,21 +2454,21 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) where(properties: Object): ChainedArray; ->where : Symbol(where, Decl(underscoreTest1_underscore.ts, 256, 79)) +>where : Symbol(ChainedArray.where, Decl(underscoreTest1_underscore.ts, 256, 79)) >properties : Symbol(properties, Decl(underscoreTest1_underscore.ts, 257, 14)) >Object : Symbol(Object, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >ChainedArray : Symbol(ChainedArray, Decl(underscoreTest1_underscore.ts, 236, 5)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) findWhere(properties: Object): ChainedObject; ->findWhere : Symbol(findWhere, Decl(underscoreTest1_underscore.ts, 257, 51)) +>findWhere : Symbol(ChainedArray.findWhere, Decl(underscoreTest1_underscore.ts, 257, 51)) >properties : Symbol(properties, Decl(underscoreTest1_underscore.ts, 258, 18)) >Object : Symbol(Object, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >ChainedObject : Symbol(ChainedObject, Decl(underscoreTest1_underscore.ts, 203, 5)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) reject(iterator: Iterator, context?: any): ChainedArray; ->reject : Symbol(reject, Decl(underscoreTest1_underscore.ts, 258, 56)) +>reject : Symbol(ChainedArray.reject, Decl(underscoreTest1_underscore.ts, 258, 56)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 259, 15)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) @@ -2477,7 +2477,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) every(iterator?: Iterator, context?: any): ChainedObject; ->every : Symbol(every, Decl(underscoreTest1_underscore.ts, 259, 79)) +>every : Symbol(ChainedArray.every, Decl(underscoreTest1_underscore.ts, 259, 79)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 260, 14)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) @@ -2485,7 +2485,7 @@ module Underscore { >ChainedObject : Symbol(ChainedObject, Decl(underscoreTest1_underscore.ts, 203, 5)) all(iterator?: Iterator, context?: any): ChainedObject; ->all : Symbol(all, Decl(underscoreTest1_underscore.ts, 260, 86)) +>all : Symbol(ChainedArray.all, Decl(underscoreTest1_underscore.ts, 260, 86)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 261, 12)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) @@ -2493,7 +2493,7 @@ module Underscore { >ChainedObject : Symbol(ChainedObject, Decl(underscoreTest1_underscore.ts, 203, 5)) some(iterator?: Iterator, context?: any): ChainedObject; ->some : Symbol(some, Decl(underscoreTest1_underscore.ts, 261, 84)) +>some : Symbol(ChainedArray.some, Decl(underscoreTest1_underscore.ts, 261, 84)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 262, 13)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) @@ -2501,7 +2501,7 @@ module Underscore { >ChainedObject : Symbol(ChainedObject, Decl(underscoreTest1_underscore.ts, 203, 5)) any(iterator?: Iterator, context?: any): ChainedObject; ->any : Symbol(any, Decl(underscoreTest1_underscore.ts, 262, 85)) +>any : Symbol(ChainedArray.any, Decl(underscoreTest1_underscore.ts, 262, 85)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 263, 12)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) @@ -2509,30 +2509,30 @@ module Underscore { >ChainedObject : Symbol(ChainedObject, Decl(underscoreTest1_underscore.ts, 203, 5)) contains(value: T): ChainedObject; ->contains : Symbol(contains, Decl(underscoreTest1_underscore.ts, 263, 84)) +>contains : Symbol(ChainedArray.contains, Decl(underscoreTest1_underscore.ts, 263, 84)) >value : Symbol(value, Decl(underscoreTest1_underscore.ts, 264, 17)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) >ChainedObject : Symbol(ChainedObject, Decl(underscoreTest1_underscore.ts, 203, 5)) include(value: T): ChainedObject; ->include : Symbol(include, Decl(underscoreTest1_underscore.ts, 264, 51)) +>include : Symbol(ChainedArray.include, Decl(underscoreTest1_underscore.ts, 264, 51)) >value : Symbol(value, Decl(underscoreTest1_underscore.ts, 265, 16)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) >ChainedObject : Symbol(ChainedObject, Decl(underscoreTest1_underscore.ts, 203, 5)) invoke(methodName: string, ...args: any[]): ChainedArray; ->invoke : Symbol(invoke, Decl(underscoreTest1_underscore.ts, 265, 50)) +>invoke : Symbol(ChainedArray.invoke, Decl(underscoreTest1_underscore.ts, 265, 50)) >methodName : Symbol(methodName, Decl(underscoreTest1_underscore.ts, 266, 15)) >args : Symbol(args, Decl(underscoreTest1_underscore.ts, 266, 34)) >ChainedArray : Symbol(ChainedArray, Decl(underscoreTest1_underscore.ts, 236, 5)) pluck(propertyName: string): ChainedArray; ->pluck : Symbol(pluck, Decl(underscoreTest1_underscore.ts, 266, 70)) +>pluck : Symbol(ChainedArray.pluck, Decl(underscoreTest1_underscore.ts, 266, 70)) >propertyName : Symbol(propertyName, Decl(underscoreTest1_underscore.ts, 267, 14)) >ChainedArray : Symbol(ChainedArray, Decl(underscoreTest1_underscore.ts, 236, 5)) max(iterator?: Iterator, context?: any): ChainedObject; ->max : Symbol(max, Decl(underscoreTest1_underscore.ts, 267, 55)) +>max : Symbol(ChainedArray.max, Decl(underscoreTest1_underscore.ts, 267, 55)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 268, 12)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) @@ -2541,7 +2541,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) min(iterator?: Iterator, context?: any): ChainedObject; ->min : Symbol(min, Decl(underscoreTest1_underscore.ts, 268, 74)) +>min : Symbol(ChainedArray.min, Decl(underscoreTest1_underscore.ts, 268, 74)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 269, 12)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) @@ -2550,7 +2550,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) sortBy(iterator: Iterator, context?: any): ChainedArray; ->sortBy : Symbol(sortBy, Decl(underscoreTest1_underscore.ts, 269, 74), Decl(underscoreTest1_underscore.ts, 270, 75)) +>sortBy : Symbol(ChainedArray.sortBy, Decl(underscoreTest1_underscore.ts, 269, 74), Decl(underscoreTest1_underscore.ts, 270, 75)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 270, 15)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) @@ -2559,14 +2559,14 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) sortBy(propertyName: string): ChainedArray; ->sortBy : Symbol(sortBy, Decl(underscoreTest1_underscore.ts, 269, 74), Decl(underscoreTest1_underscore.ts, 270, 75)) +>sortBy : Symbol(ChainedArray.sortBy, Decl(underscoreTest1_underscore.ts, 269, 74), Decl(underscoreTest1_underscore.ts, 270, 75)) >propertyName : Symbol(propertyName, Decl(underscoreTest1_underscore.ts, 271, 15)) >ChainedArray : Symbol(ChainedArray, Decl(underscoreTest1_underscore.ts, 236, 5)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) // Should return ChainedDictionary, but expansive recursion not allowed groupBy(iterator?: Iterator, context?: any): ChainedDictionary; ->groupBy : Symbol(groupBy, Decl(underscoreTest1_underscore.ts, 271, 54), Decl(underscoreTest1_underscore.ts, 273, 86)) +>groupBy : Symbol(ChainedArray.groupBy, Decl(underscoreTest1_underscore.ts, 271, 54), Decl(underscoreTest1_underscore.ts, 273, 86)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 273, 16)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) @@ -2574,12 +2574,12 @@ module Underscore { >ChainedDictionary : Symbol(ChainedDictionary, Decl(underscoreTest1_underscore.ts, 327, 5)) groupBy(propertyName: string): ChainedDictionary; ->groupBy : Symbol(groupBy, Decl(underscoreTest1_underscore.ts, 271, 54), Decl(underscoreTest1_underscore.ts, 273, 86)) +>groupBy : Symbol(ChainedArray.groupBy, Decl(underscoreTest1_underscore.ts, 271, 54), Decl(underscoreTest1_underscore.ts, 273, 86)) >propertyName : Symbol(propertyName, Decl(underscoreTest1_underscore.ts, 274, 16)) >ChainedDictionary : Symbol(ChainedDictionary, Decl(underscoreTest1_underscore.ts, 327, 5)) countBy(iterator?: Iterator, context?: any): ChainedDictionary; ->countBy : Symbol(countBy, Decl(underscoreTest1_underscore.ts, 274, 64), Decl(underscoreTest1_underscore.ts, 275, 87)) +>countBy : Symbol(ChainedArray.countBy, Decl(underscoreTest1_underscore.ts, 274, 64), Decl(underscoreTest1_underscore.ts, 275, 87)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 275, 16)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) @@ -2587,133 +2587,133 @@ module Underscore { >ChainedDictionary : Symbol(ChainedDictionary, Decl(underscoreTest1_underscore.ts, 327, 5)) countBy(propertyName: string): ChainedDictionary; ->countBy : Symbol(countBy, Decl(underscoreTest1_underscore.ts, 274, 64), Decl(underscoreTest1_underscore.ts, 275, 87)) +>countBy : Symbol(ChainedArray.countBy, Decl(underscoreTest1_underscore.ts, 274, 64), Decl(underscoreTest1_underscore.ts, 275, 87)) >propertyName : Symbol(propertyName, Decl(underscoreTest1_underscore.ts, 276, 16)) >ChainedDictionary : Symbol(ChainedDictionary, Decl(underscoreTest1_underscore.ts, 327, 5)) shuffle(): ChainedArray; ->shuffle : Symbol(shuffle, Decl(underscoreTest1_underscore.ts, 276, 65)) +>shuffle : Symbol(ChainedArray.shuffle, Decl(underscoreTest1_underscore.ts, 276, 65)) >ChainedArray : Symbol(ChainedArray, Decl(underscoreTest1_underscore.ts, 236, 5)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) toArray(): ChainedArray; ->toArray : Symbol(toArray, Decl(underscoreTest1_underscore.ts, 277, 35)) +>toArray : Symbol(ChainedArray.toArray, Decl(underscoreTest1_underscore.ts, 277, 35)) >ChainedArray : Symbol(ChainedArray, Decl(underscoreTest1_underscore.ts, 236, 5)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) size(): ChainedObject; ->size : Symbol(size, Decl(underscoreTest1_underscore.ts, 278, 35)) +>size : Symbol(ChainedArray.size, Decl(underscoreTest1_underscore.ts, 278, 35)) >ChainedObject : Symbol(ChainedObject, Decl(underscoreTest1_underscore.ts, 203, 5)) first(): ChainedObject; ->first : Symbol(first, Decl(underscoreTest1_underscore.ts, 279, 38), Decl(underscoreTest1_underscore.ts, 280, 34)) +>first : Symbol(ChainedArray.first, Decl(underscoreTest1_underscore.ts, 279, 38), Decl(underscoreTest1_underscore.ts, 280, 34)) >ChainedObject : Symbol(ChainedObject, Decl(underscoreTest1_underscore.ts, 203, 5)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) first(count: number): ChainedArray; ->first : Symbol(first, Decl(underscoreTest1_underscore.ts, 279, 38), Decl(underscoreTest1_underscore.ts, 280, 34)) +>first : Symbol(ChainedArray.first, Decl(underscoreTest1_underscore.ts, 279, 38), Decl(underscoreTest1_underscore.ts, 280, 34)) >count : Symbol(count, Decl(underscoreTest1_underscore.ts, 281, 14)) >ChainedArray : Symbol(ChainedArray, Decl(underscoreTest1_underscore.ts, 236, 5)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) head(): ChainedObject; ->head : Symbol(head, Decl(underscoreTest1_underscore.ts, 281, 46), Decl(underscoreTest1_underscore.ts, 282, 33)) +>head : Symbol(ChainedArray.head, Decl(underscoreTest1_underscore.ts, 281, 46), Decl(underscoreTest1_underscore.ts, 282, 33)) >ChainedObject : Symbol(ChainedObject, Decl(underscoreTest1_underscore.ts, 203, 5)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) head(count: number): ChainedArray; ->head : Symbol(head, Decl(underscoreTest1_underscore.ts, 281, 46), Decl(underscoreTest1_underscore.ts, 282, 33)) +>head : Symbol(ChainedArray.head, Decl(underscoreTest1_underscore.ts, 281, 46), Decl(underscoreTest1_underscore.ts, 282, 33)) >count : Symbol(count, Decl(underscoreTest1_underscore.ts, 283, 13)) >ChainedArray : Symbol(ChainedArray, Decl(underscoreTest1_underscore.ts, 236, 5)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) take(): ChainedObject; ->take : Symbol(take, Decl(underscoreTest1_underscore.ts, 283, 45), Decl(underscoreTest1_underscore.ts, 284, 33)) +>take : Symbol(ChainedArray.take, Decl(underscoreTest1_underscore.ts, 283, 45), Decl(underscoreTest1_underscore.ts, 284, 33)) >ChainedObject : Symbol(ChainedObject, Decl(underscoreTest1_underscore.ts, 203, 5)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) take(count: number): ChainedArray; ->take : Symbol(take, Decl(underscoreTest1_underscore.ts, 283, 45), Decl(underscoreTest1_underscore.ts, 284, 33)) +>take : Symbol(ChainedArray.take, Decl(underscoreTest1_underscore.ts, 283, 45), Decl(underscoreTest1_underscore.ts, 284, 33)) >count : Symbol(count, Decl(underscoreTest1_underscore.ts, 285, 13)) >ChainedArray : Symbol(ChainedArray, Decl(underscoreTest1_underscore.ts, 236, 5)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) initial(): ChainedObject; ->initial : Symbol(initial, Decl(underscoreTest1_underscore.ts, 285, 45), Decl(underscoreTest1_underscore.ts, 286, 36)) +>initial : Symbol(ChainedArray.initial, Decl(underscoreTest1_underscore.ts, 285, 45), Decl(underscoreTest1_underscore.ts, 286, 36)) >ChainedObject : Symbol(ChainedObject, Decl(underscoreTest1_underscore.ts, 203, 5)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) initial(count: number): ChainedArray; ->initial : Symbol(initial, Decl(underscoreTest1_underscore.ts, 285, 45), Decl(underscoreTest1_underscore.ts, 286, 36)) +>initial : Symbol(ChainedArray.initial, Decl(underscoreTest1_underscore.ts, 285, 45), Decl(underscoreTest1_underscore.ts, 286, 36)) >count : Symbol(count, Decl(underscoreTest1_underscore.ts, 287, 16)) >ChainedArray : Symbol(ChainedArray, Decl(underscoreTest1_underscore.ts, 236, 5)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) last(): ChainedObject; ->last : Symbol(last, Decl(underscoreTest1_underscore.ts, 287, 48), Decl(underscoreTest1_underscore.ts, 288, 33)) +>last : Symbol(ChainedArray.last, Decl(underscoreTest1_underscore.ts, 287, 48), Decl(underscoreTest1_underscore.ts, 288, 33)) >ChainedObject : Symbol(ChainedObject, Decl(underscoreTest1_underscore.ts, 203, 5)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) last(count: number): ChainedArray; ->last : Symbol(last, Decl(underscoreTest1_underscore.ts, 287, 48), Decl(underscoreTest1_underscore.ts, 288, 33)) +>last : Symbol(ChainedArray.last, Decl(underscoreTest1_underscore.ts, 287, 48), Decl(underscoreTest1_underscore.ts, 288, 33)) >count : Symbol(count, Decl(underscoreTest1_underscore.ts, 289, 13)) >ChainedArray : Symbol(ChainedArray, Decl(underscoreTest1_underscore.ts, 236, 5)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) rest(index?: number): ChainedArray; ->rest : Symbol(rest, Decl(underscoreTest1_underscore.ts, 289, 45)) +>rest : Symbol(ChainedArray.rest, Decl(underscoreTest1_underscore.ts, 289, 45)) >index : Symbol(index, Decl(underscoreTest1_underscore.ts, 290, 13)) >ChainedArray : Symbol(ChainedArray, Decl(underscoreTest1_underscore.ts, 236, 5)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) compact(): ChainedArray; ->compact : Symbol(compact, Decl(underscoreTest1_underscore.ts, 290, 46)) +>compact : Symbol(ChainedArray.compact, Decl(underscoreTest1_underscore.ts, 290, 46)) >ChainedArray : Symbol(ChainedArray, Decl(underscoreTest1_underscore.ts, 236, 5)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) flatten(shallow?: boolean): ChainedArray; ->flatten : Symbol(flatten, Decl(underscoreTest1_underscore.ts, 291, 35)) +>flatten : Symbol(ChainedArray.flatten, Decl(underscoreTest1_underscore.ts, 291, 35)) >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 292, 16)) >shallow : Symbol(shallow, Decl(underscoreTest1_underscore.ts, 292, 19)) >ChainedArray : Symbol(ChainedArray, Decl(underscoreTest1_underscore.ts, 236, 5)) >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 292, 16)) without(...values: T[]): ChainedArray; ->without : Symbol(without, Decl(underscoreTest1_underscore.ts, 292, 55)) +>without : Symbol(ChainedArray.without, Decl(underscoreTest1_underscore.ts, 292, 55)) >values : Symbol(values, Decl(underscoreTest1_underscore.ts, 293, 16)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) >ChainedArray : Symbol(ChainedArray, Decl(underscoreTest1_underscore.ts, 236, 5)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) union(...arrays: T[][]): ChainedArray; ->union : Symbol(union, Decl(underscoreTest1_underscore.ts, 293, 49)) +>union : Symbol(ChainedArray.union, Decl(underscoreTest1_underscore.ts, 293, 49)) >arrays : Symbol(arrays, Decl(underscoreTest1_underscore.ts, 294, 14)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) >ChainedArray : Symbol(ChainedArray, Decl(underscoreTest1_underscore.ts, 236, 5)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) intersection(...arrays: T[][]): ChainedArray; ->intersection : Symbol(intersection, Decl(underscoreTest1_underscore.ts, 294, 49)) +>intersection : Symbol(ChainedArray.intersection, Decl(underscoreTest1_underscore.ts, 294, 49)) >arrays : Symbol(arrays, Decl(underscoreTest1_underscore.ts, 295, 21)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) >ChainedArray : Symbol(ChainedArray, Decl(underscoreTest1_underscore.ts, 236, 5)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) difference(...others: T[][]): ChainedArray; ->difference : Symbol(difference, Decl(underscoreTest1_underscore.ts, 295, 56)) +>difference : Symbol(ChainedArray.difference, Decl(underscoreTest1_underscore.ts, 295, 56)) >others : Symbol(others, Decl(underscoreTest1_underscore.ts, 296, 19)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) >ChainedArray : Symbol(ChainedArray, Decl(underscoreTest1_underscore.ts, 236, 5)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) uniq(isSorted?: boolean): ChainedArray; ->uniq : Symbol(uniq, Decl(underscoreTest1_underscore.ts, 296, 54), Decl(underscoreTest1_underscore.ts, 297, 50)) +>uniq : Symbol(ChainedArray.uniq, Decl(underscoreTest1_underscore.ts, 296, 54), Decl(underscoreTest1_underscore.ts, 297, 50)) >isSorted : Symbol(isSorted, Decl(underscoreTest1_underscore.ts, 297, 13)) >ChainedArray : Symbol(ChainedArray, Decl(underscoreTest1_underscore.ts, 236, 5)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) uniq(isSorted: boolean, iterator: Iterator, context?: any): ChainedArray; ->uniq : Symbol(uniq, Decl(underscoreTest1_underscore.ts, 296, 54), Decl(underscoreTest1_underscore.ts, 297, 50)) +>uniq : Symbol(ChainedArray.uniq, Decl(underscoreTest1_underscore.ts, 296, 54), Decl(underscoreTest1_underscore.ts, 297, 50)) >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 298, 13)) >isSorted : Symbol(isSorted, Decl(underscoreTest1_underscore.ts, 298, 16)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 298, 34)) @@ -2725,13 +2725,13 @@ module Underscore { >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 298, 13)) unique(isSorted?: boolean): ChainedArray; ->unique : Symbol(unique, Decl(underscoreTest1_underscore.ts, 298, 93), Decl(underscoreTest1_underscore.ts, 299, 52)) +>unique : Symbol(ChainedArray.unique, Decl(underscoreTest1_underscore.ts, 298, 93), Decl(underscoreTest1_underscore.ts, 299, 52)) >isSorted : Symbol(isSorted, Decl(underscoreTest1_underscore.ts, 299, 15)) >ChainedArray : Symbol(ChainedArray, Decl(underscoreTest1_underscore.ts, 236, 5)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) unique(isSorted: boolean, iterator: Iterator, context?: any): ChainedArray; ->unique : Symbol(unique, Decl(underscoreTest1_underscore.ts, 298, 93), Decl(underscoreTest1_underscore.ts, 299, 52)) +>unique : Symbol(ChainedArray.unique, Decl(underscoreTest1_underscore.ts, 298, 93), Decl(underscoreTest1_underscore.ts, 299, 52)) >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 300, 15)) >isSorted : Symbol(isSorted, Decl(underscoreTest1_underscore.ts, 300, 18)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 300, 36)) @@ -2743,42 +2743,42 @@ module Underscore { >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 300, 15)) zip(...arrays: any[][]): ChainedArray; ->zip : Symbol(zip, Decl(underscoreTest1_underscore.ts, 300, 95)) +>zip : Symbol(ChainedArray.zip, Decl(underscoreTest1_underscore.ts, 300, 95)) >arrays : Symbol(arrays, Decl(underscoreTest1_underscore.ts, 301, 12)) >ChainedArray : Symbol(ChainedArray, Decl(underscoreTest1_underscore.ts, 236, 5)) object(): ChainedObject; ->object : Symbol(object, Decl(underscoreTest1_underscore.ts, 301, 53), Decl(underscoreTest1_underscore.ts, 302, 37)) +>object : Symbol(ChainedArray.object, Decl(underscoreTest1_underscore.ts, 301, 53), Decl(underscoreTest1_underscore.ts, 302, 37)) >ChainedObject : Symbol(ChainedObject, Decl(underscoreTest1_underscore.ts, 203, 5)) object(values: any[]): ChainedObject; ->object : Symbol(object, Decl(underscoreTest1_underscore.ts, 301, 53), Decl(underscoreTest1_underscore.ts, 302, 37)) +>object : Symbol(ChainedArray.object, Decl(underscoreTest1_underscore.ts, 301, 53), Decl(underscoreTest1_underscore.ts, 302, 37)) >values : Symbol(values, Decl(underscoreTest1_underscore.ts, 303, 15)) >ChainedObject : Symbol(ChainedObject, Decl(underscoreTest1_underscore.ts, 203, 5)) indexOf(value: T, isSorted?: boolean): ChainedObject; ->indexOf : Symbol(indexOf, Decl(underscoreTest1_underscore.ts, 303, 50)) +>indexOf : Symbol(ChainedArray.indexOf, Decl(underscoreTest1_underscore.ts, 303, 50)) >value : Symbol(value, Decl(underscoreTest1_underscore.ts, 304, 16)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) >isSorted : Symbol(isSorted, Decl(underscoreTest1_underscore.ts, 304, 25)) >ChainedObject : Symbol(ChainedObject, Decl(underscoreTest1_underscore.ts, 203, 5)) lastIndexOf(value: T, fromIndex?: number): ChainedObject; ->lastIndexOf : Symbol(lastIndexOf, Decl(underscoreTest1_underscore.ts, 304, 69)) +>lastIndexOf : Symbol(ChainedArray.lastIndexOf, Decl(underscoreTest1_underscore.ts, 304, 69)) >value : Symbol(value, Decl(underscoreTest1_underscore.ts, 305, 20)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) >fromIndex : Symbol(fromIndex, Decl(underscoreTest1_underscore.ts, 305, 29)) >ChainedObject : Symbol(ChainedObject, Decl(underscoreTest1_underscore.ts, 203, 5)) sortedIndex(obj: T, propertyName: string): ChainedObject; ->sortedIndex : Symbol(sortedIndex, Decl(underscoreTest1_underscore.ts, 305, 73), Decl(underscoreTest1_underscore.ts, 306, 73)) +>sortedIndex : Symbol(ChainedArray.sortedIndex, Decl(underscoreTest1_underscore.ts, 305, 73), Decl(underscoreTest1_underscore.ts, 306, 73)) >obj : Symbol(obj, Decl(underscoreTest1_underscore.ts, 306, 20)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) >propertyName : Symbol(propertyName, Decl(underscoreTest1_underscore.ts, 306, 27)) >ChainedObject : Symbol(ChainedObject, Decl(underscoreTest1_underscore.ts, 203, 5)) sortedIndex(obj: T, iterator?: Iterator, context?: any): ChainedObject; ->sortedIndex : Symbol(sortedIndex, Decl(underscoreTest1_underscore.ts, 305, 73), Decl(underscoreTest1_underscore.ts, 306, 73)) +>sortedIndex : Symbol(ChainedArray.sortedIndex, Decl(underscoreTest1_underscore.ts, 305, 73), Decl(underscoreTest1_underscore.ts, 306, 73)) >obj : Symbol(obj, Decl(underscoreTest1_underscore.ts, 307, 20)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 307, 27)) @@ -2789,47 +2789,47 @@ module Underscore { // Methods from Array concat(...items: T[]): ChainedArray; ->concat : Symbol(concat, Decl(underscoreTest1_underscore.ts, 307, 95)) +>concat : Symbol(ChainedArray.concat, Decl(underscoreTest1_underscore.ts, 307, 95)) >items : Symbol(items, Decl(underscoreTest1_underscore.ts, 309, 15)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) >ChainedArray : Symbol(ChainedArray, Decl(underscoreTest1_underscore.ts, 236, 5)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) join(separator?: string): ChainedObject; ->join : Symbol(join, Decl(underscoreTest1_underscore.ts, 309, 47)) +>join : Symbol(ChainedArray.join, Decl(underscoreTest1_underscore.ts, 309, 47)) >separator : Symbol(separator, Decl(underscoreTest1_underscore.ts, 310, 13)) >ChainedObject : Symbol(ChainedObject, Decl(underscoreTest1_underscore.ts, 203, 5)) pop(): ChainedObject; ->pop : Symbol(pop, Decl(underscoreTest1_underscore.ts, 310, 56)) +>pop : Symbol(ChainedArray.pop, Decl(underscoreTest1_underscore.ts, 310, 56)) >ChainedObject : Symbol(ChainedObject, Decl(underscoreTest1_underscore.ts, 203, 5)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) push(...items: T[]): ChainedObject; ->push : Symbol(push, Decl(underscoreTest1_underscore.ts, 311, 32)) +>push : Symbol(ChainedArray.push, Decl(underscoreTest1_underscore.ts, 311, 32)) >items : Symbol(items, Decl(underscoreTest1_underscore.ts, 312, 13)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) >ChainedObject : Symbol(ChainedObject, Decl(underscoreTest1_underscore.ts, 203, 5)) reverse(): ChainedArray; ->reverse : Symbol(reverse, Decl(underscoreTest1_underscore.ts, 312, 51)) +>reverse : Symbol(ChainedArray.reverse, Decl(underscoreTest1_underscore.ts, 312, 51)) >ChainedArray : Symbol(ChainedArray, Decl(underscoreTest1_underscore.ts, 236, 5)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) shift(): ChainedObject; ->shift : Symbol(shift, Decl(underscoreTest1_underscore.ts, 313, 35)) +>shift : Symbol(ChainedArray.shift, Decl(underscoreTest1_underscore.ts, 313, 35)) >ChainedObject : Symbol(ChainedObject, Decl(underscoreTest1_underscore.ts, 203, 5)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) slice(start: number, end?: number): ChainedArray; ->slice : Symbol(slice, Decl(underscoreTest1_underscore.ts, 314, 34)) +>slice : Symbol(ChainedArray.slice, Decl(underscoreTest1_underscore.ts, 314, 34)) >start : Symbol(start, Decl(underscoreTest1_underscore.ts, 315, 14)) >end : Symbol(end, Decl(underscoreTest1_underscore.ts, 315, 28)) >ChainedArray : Symbol(ChainedArray, Decl(underscoreTest1_underscore.ts, 236, 5)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) sort(compareFn?: (a: T, b: T) => number): ChainedArray; ->sort : Symbol(sort, Decl(underscoreTest1_underscore.ts, 315, 60)) +>sort : Symbol(ChainedArray.sort, Decl(underscoreTest1_underscore.ts, 315, 60)) >compareFn : Symbol(compareFn, Decl(underscoreTest1_underscore.ts, 316, 13)) >a : Symbol(a, Decl(underscoreTest1_underscore.ts, 316, 26)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) @@ -2839,13 +2839,13 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) splice(start: number): ChainedArray; ->splice : Symbol(splice, Decl(underscoreTest1_underscore.ts, 316, 66), Decl(underscoreTest1_underscore.ts, 317, 47)) +>splice : Symbol(ChainedArray.splice, Decl(underscoreTest1_underscore.ts, 316, 66), Decl(underscoreTest1_underscore.ts, 317, 47)) >start : Symbol(start, Decl(underscoreTest1_underscore.ts, 317, 15)) >ChainedArray : Symbol(ChainedArray, Decl(underscoreTest1_underscore.ts, 236, 5)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) splice(start: number, deleteCount: number, ...items: T[]): ChainedArray; ->splice : Symbol(splice, Decl(underscoreTest1_underscore.ts, 316, 66), Decl(underscoreTest1_underscore.ts, 317, 47)) +>splice : Symbol(ChainedArray.splice, Decl(underscoreTest1_underscore.ts, 316, 66), Decl(underscoreTest1_underscore.ts, 317, 47)) >start : Symbol(start, Decl(underscoreTest1_underscore.ts, 318, 15)) >deleteCount : Symbol(deleteCount, Decl(underscoreTest1_underscore.ts, 318, 29)) >items : Symbol(items, Decl(underscoreTest1_underscore.ts, 318, 50)) @@ -2854,43 +2854,43 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) unshift(...items: T[]): ChainedObject; ->unshift : Symbol(unshift, Decl(underscoreTest1_underscore.ts, 318, 83)) +>unshift : Symbol(ChainedArray.unshift, Decl(underscoreTest1_underscore.ts, 318, 83)) >items : Symbol(items, Decl(underscoreTest1_underscore.ts, 319, 16)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) >ChainedObject : Symbol(ChainedObject, Decl(underscoreTest1_underscore.ts, 203, 5)) // Methods from ChainedObject with promoted return types extend(...sources: any[]): ChainedArray; ->extend : Symbol(extend, Decl(underscoreTest1_underscore.ts, 319, 54)) +>extend : Symbol(ChainedArray.extend, Decl(underscoreTest1_underscore.ts, 319, 54)) >sources : Symbol(sources, Decl(underscoreTest1_underscore.ts, 321, 15)) >ChainedArray : Symbol(ChainedArray, Decl(underscoreTest1_underscore.ts, 236, 5)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) pick(...keys: string[]): ChainedArray; ->pick : Symbol(pick, Decl(underscoreTest1_underscore.ts, 321, 51)) +>pick : Symbol(ChainedArray.pick, Decl(underscoreTest1_underscore.ts, 321, 51)) >keys : Symbol(keys, Decl(underscoreTest1_underscore.ts, 322, 13)) >ChainedArray : Symbol(ChainedArray, Decl(underscoreTest1_underscore.ts, 236, 5)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) omit(...keys: string[]): ChainedArray; ->omit : Symbol(omit, Decl(underscoreTest1_underscore.ts, 322, 49)) +>omit : Symbol(ChainedArray.omit, Decl(underscoreTest1_underscore.ts, 322, 49)) >keys : Symbol(keys, Decl(underscoreTest1_underscore.ts, 323, 13)) >ChainedArray : Symbol(ChainedArray, Decl(underscoreTest1_underscore.ts, 236, 5)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) defaults(...defaults: any[]): ChainedArray; ->defaults : Symbol(defaults, Decl(underscoreTest1_underscore.ts, 323, 49)) +>defaults : Symbol(ChainedArray.defaults, Decl(underscoreTest1_underscore.ts, 323, 49)) >defaults : Symbol(defaults, Decl(underscoreTest1_underscore.ts, 324, 17)) >ChainedArray : Symbol(ChainedArray, Decl(underscoreTest1_underscore.ts, 236, 5)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) clone(): ChainedArray; ->clone : Symbol(clone, Decl(underscoreTest1_underscore.ts, 324, 54)) +>clone : Symbol(ChainedArray.clone, Decl(underscoreTest1_underscore.ts, 324, 54)) >ChainedArray : Symbol(ChainedArray, Decl(underscoreTest1_underscore.ts, 236, 5)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) tap(interceptor: (object: T[]) => void): ChainedArray; ->tap : Symbol(tap, Decl(underscoreTest1_underscore.ts, 325, 33)) +>tap : Symbol(ChainedArray.tap, Decl(underscoreTest1_underscore.ts, 325, 33)) >interceptor : Symbol(interceptor, Decl(underscoreTest1_underscore.ts, 326, 12)) >object : Symbol(object, Decl(underscoreTest1_underscore.ts, 326, 26)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 238, 34)) @@ -2906,7 +2906,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 329, 39)) each(iterator: Iterator, context?: any): ChainedObject; ->each : Symbol(each, Decl(underscoreTest1_underscore.ts, 329, 80)) +>each : Symbol(ChainedDictionary.each, Decl(underscoreTest1_underscore.ts, 329, 80)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 330, 13)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 329, 39)) @@ -2914,7 +2914,7 @@ module Underscore { >ChainedObject : Symbol(ChainedObject, Decl(underscoreTest1_underscore.ts, 203, 5)) forEach(iterator: Iterator, context?: any): ChainedObject; ->forEach : Symbol(forEach, Decl(underscoreTest1_underscore.ts, 330, 78)) +>forEach : Symbol(ChainedDictionary.forEach, Decl(underscoreTest1_underscore.ts, 330, 78)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 331, 16)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 329, 39)) @@ -2922,7 +2922,7 @@ module Underscore { >ChainedObject : Symbol(ChainedObject, Decl(underscoreTest1_underscore.ts, 203, 5)) map(iterator: Iterator, context?: any): ChainedArray; ->map : Symbol(map, Decl(underscoreTest1_underscore.ts, 331, 81)) +>map : Symbol(ChainedDictionary.map, Decl(underscoreTest1_underscore.ts, 331, 81)) >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 332, 12)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 332, 15)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) @@ -2933,7 +2933,7 @@ module Underscore { >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 332, 12)) collect(iterator: Iterator, context?: any): ChainedArray; ->collect : Symbol(collect, Decl(underscoreTest1_underscore.ts, 332, 73)) +>collect : Symbol(ChainedDictionary.collect, Decl(underscoreTest1_underscore.ts, 332, 73)) >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 333, 16)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 333, 19)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) @@ -2944,7 +2944,7 @@ module Underscore { >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 333, 16)) reduce(iterator: Reducer, initialValue?: T, context?: any): ChainedObject; ->reduce : Symbol(reduce, Decl(underscoreTest1_underscore.ts, 333, 77), Decl(underscoreTest1_underscore.ts, 334, 91)) +>reduce : Symbol(ChainedDictionary.reduce, Decl(underscoreTest1_underscore.ts, 333, 77), Decl(underscoreTest1_underscore.ts, 334, 91)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 334, 15)) >Reducer : Symbol(Reducer, Decl(underscoreTest1_underscore.ts, 6, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 329, 39)) @@ -2956,7 +2956,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 329, 39)) reduce(iterator: Reducer, initialValue: U, context?: any): ChainedObject; ->reduce : Symbol(reduce, Decl(underscoreTest1_underscore.ts, 333, 77), Decl(underscoreTest1_underscore.ts, 334, 91)) +>reduce : Symbol(ChainedDictionary.reduce, Decl(underscoreTest1_underscore.ts, 333, 77), Decl(underscoreTest1_underscore.ts, 334, 91)) >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 335, 15)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 335, 18)) >Reducer : Symbol(Reducer, Decl(underscoreTest1_underscore.ts, 6, 1)) @@ -2969,7 +2969,7 @@ module Underscore { >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 335, 15)) foldl(iterator: Reducer, initialValue?: T, context?: any): ChainedObject; ->foldl : Symbol(foldl, Decl(underscoreTest1_underscore.ts, 335, 93), Decl(underscoreTest1_underscore.ts, 336, 90)) +>foldl : Symbol(ChainedDictionary.foldl, Decl(underscoreTest1_underscore.ts, 335, 93), Decl(underscoreTest1_underscore.ts, 336, 90)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 336, 14)) >Reducer : Symbol(Reducer, Decl(underscoreTest1_underscore.ts, 6, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 329, 39)) @@ -2981,7 +2981,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 329, 39)) foldl(iterator: Reducer, initialValue: U, context?: any): ChainedObject; ->foldl : Symbol(foldl, Decl(underscoreTest1_underscore.ts, 335, 93), Decl(underscoreTest1_underscore.ts, 336, 90)) +>foldl : Symbol(ChainedDictionary.foldl, Decl(underscoreTest1_underscore.ts, 335, 93), Decl(underscoreTest1_underscore.ts, 336, 90)) >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 337, 14)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 337, 17)) >Reducer : Symbol(Reducer, Decl(underscoreTest1_underscore.ts, 6, 1)) @@ -2994,7 +2994,7 @@ module Underscore { >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 337, 14)) inject(iterator: Reducer, initialValue?: T, context?: any): ChainedObject; ->inject : Symbol(inject, Decl(underscoreTest1_underscore.ts, 337, 92), Decl(underscoreTest1_underscore.ts, 338, 91)) +>inject : Symbol(ChainedDictionary.inject, Decl(underscoreTest1_underscore.ts, 337, 92), Decl(underscoreTest1_underscore.ts, 338, 91)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 338, 15)) >Reducer : Symbol(Reducer, Decl(underscoreTest1_underscore.ts, 6, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 329, 39)) @@ -3006,7 +3006,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 329, 39)) inject(iterator: Reducer, initialValue: U, context?: any): ChainedObject; ->inject : Symbol(inject, Decl(underscoreTest1_underscore.ts, 337, 92), Decl(underscoreTest1_underscore.ts, 338, 91)) +>inject : Symbol(ChainedDictionary.inject, Decl(underscoreTest1_underscore.ts, 337, 92), Decl(underscoreTest1_underscore.ts, 338, 91)) >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 339, 15)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 339, 18)) >Reducer : Symbol(Reducer, Decl(underscoreTest1_underscore.ts, 6, 1)) @@ -3019,7 +3019,7 @@ module Underscore { >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 339, 15)) reduceRight(iterator: Reducer, initialValue?: T, context?: any): ChainedObject; ->reduceRight : Symbol(reduceRight, Decl(underscoreTest1_underscore.ts, 339, 93), Decl(underscoreTest1_underscore.ts, 340, 96)) +>reduceRight : Symbol(ChainedDictionary.reduceRight, Decl(underscoreTest1_underscore.ts, 339, 93), Decl(underscoreTest1_underscore.ts, 340, 96)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 340, 20)) >Reducer : Symbol(Reducer, Decl(underscoreTest1_underscore.ts, 6, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 329, 39)) @@ -3031,7 +3031,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 329, 39)) reduceRight(iterator: Reducer, initialValue: U, context?: any): ChainedObject; ->reduceRight : Symbol(reduceRight, Decl(underscoreTest1_underscore.ts, 339, 93), Decl(underscoreTest1_underscore.ts, 340, 96)) +>reduceRight : Symbol(ChainedDictionary.reduceRight, Decl(underscoreTest1_underscore.ts, 339, 93), Decl(underscoreTest1_underscore.ts, 340, 96)) >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 341, 20)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 341, 23)) >Reducer : Symbol(Reducer, Decl(underscoreTest1_underscore.ts, 6, 1)) @@ -3044,7 +3044,7 @@ module Underscore { >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 341, 20)) foldr(iterator: Reducer, initialValue?: T, context?: any): ChainedObject; ->foldr : Symbol(foldr, Decl(underscoreTest1_underscore.ts, 341, 98), Decl(underscoreTest1_underscore.ts, 342, 90)) +>foldr : Symbol(ChainedDictionary.foldr, Decl(underscoreTest1_underscore.ts, 341, 98), Decl(underscoreTest1_underscore.ts, 342, 90)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 342, 14)) >Reducer : Symbol(Reducer, Decl(underscoreTest1_underscore.ts, 6, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 329, 39)) @@ -3056,7 +3056,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 329, 39)) foldr(iterator: Reducer, initialValue: U, context?: any): ChainedObject; ->foldr : Symbol(foldr, Decl(underscoreTest1_underscore.ts, 341, 98), Decl(underscoreTest1_underscore.ts, 342, 90)) +>foldr : Symbol(ChainedDictionary.foldr, Decl(underscoreTest1_underscore.ts, 341, 98), Decl(underscoreTest1_underscore.ts, 342, 90)) >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 343, 14)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 343, 17)) >Reducer : Symbol(Reducer, Decl(underscoreTest1_underscore.ts, 6, 1)) @@ -3069,7 +3069,7 @@ module Underscore { >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 343, 14)) find(iterator: Iterator, context?: any): ChainedObject; ->find : Symbol(find, Decl(underscoreTest1_underscore.ts, 343, 92)) +>find : Symbol(ChainedDictionary.find, Decl(underscoreTest1_underscore.ts, 343, 92)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 344, 13)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 329, 39)) @@ -3078,7 +3078,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 329, 39)) detect(iterator: Iterator, context?: any): ChainedObject; ->detect : Symbol(detect, Decl(underscoreTest1_underscore.ts, 344, 78)) +>detect : Symbol(ChainedDictionary.detect, Decl(underscoreTest1_underscore.ts, 344, 78)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 345, 15)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 329, 39)) @@ -3087,7 +3087,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 329, 39)) filter(iterator: Iterator, context?: any): ChainedArray; ->filter : Symbol(filter, Decl(underscoreTest1_underscore.ts, 345, 80)) +>filter : Symbol(ChainedDictionary.filter, Decl(underscoreTest1_underscore.ts, 345, 80)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 346, 15)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 329, 39)) @@ -3096,7 +3096,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 329, 39)) select(iterator: Iterator, context?: any): ChainedArray; ->select : Symbol(select, Decl(underscoreTest1_underscore.ts, 346, 79)) +>select : Symbol(ChainedDictionary.select, Decl(underscoreTest1_underscore.ts, 346, 79)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 347, 15)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 329, 39)) @@ -3105,21 +3105,21 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 329, 39)) where(properties: Object): ChainedArray; ->where : Symbol(where, Decl(underscoreTest1_underscore.ts, 347, 79)) +>where : Symbol(ChainedDictionary.where, Decl(underscoreTest1_underscore.ts, 347, 79)) >properties : Symbol(properties, Decl(underscoreTest1_underscore.ts, 348, 14)) >Object : Symbol(Object, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >ChainedArray : Symbol(ChainedArray, Decl(underscoreTest1_underscore.ts, 236, 5)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 329, 39)) findWhere(properties: Object): ChainedObject; ->findWhere : Symbol(findWhere, Decl(underscoreTest1_underscore.ts, 348, 51)) +>findWhere : Symbol(ChainedDictionary.findWhere, Decl(underscoreTest1_underscore.ts, 348, 51)) >properties : Symbol(properties, Decl(underscoreTest1_underscore.ts, 349, 18)) >Object : Symbol(Object, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >ChainedObject : Symbol(ChainedObject, Decl(underscoreTest1_underscore.ts, 203, 5)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 329, 39)) reject(iterator: Iterator, context?: any): ChainedArray; ->reject : Symbol(reject, Decl(underscoreTest1_underscore.ts, 349, 56)) +>reject : Symbol(ChainedDictionary.reject, Decl(underscoreTest1_underscore.ts, 349, 56)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 350, 15)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 329, 39)) @@ -3128,7 +3128,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 329, 39)) every(iterator?: Iterator, context?: any): ChainedObject; ->every : Symbol(every, Decl(underscoreTest1_underscore.ts, 350, 79)) +>every : Symbol(ChainedDictionary.every, Decl(underscoreTest1_underscore.ts, 350, 79)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 351, 14)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 329, 39)) @@ -3136,7 +3136,7 @@ module Underscore { >ChainedObject : Symbol(ChainedObject, Decl(underscoreTest1_underscore.ts, 203, 5)) all(iterator?: Iterator, context?: any): ChainedObject; ->all : Symbol(all, Decl(underscoreTest1_underscore.ts, 351, 86)) +>all : Symbol(ChainedDictionary.all, Decl(underscoreTest1_underscore.ts, 351, 86)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 352, 12)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 329, 39)) @@ -3144,7 +3144,7 @@ module Underscore { >ChainedObject : Symbol(ChainedObject, Decl(underscoreTest1_underscore.ts, 203, 5)) some(iterator?: Iterator, context?: any): ChainedObject; ->some : Symbol(some, Decl(underscoreTest1_underscore.ts, 352, 84)) +>some : Symbol(ChainedDictionary.some, Decl(underscoreTest1_underscore.ts, 352, 84)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 353, 13)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 329, 39)) @@ -3152,7 +3152,7 @@ module Underscore { >ChainedObject : Symbol(ChainedObject, Decl(underscoreTest1_underscore.ts, 203, 5)) any(iterator?: Iterator, context?: any): ChainedObject; ->any : Symbol(any, Decl(underscoreTest1_underscore.ts, 353, 85)) +>any : Symbol(ChainedDictionary.any, Decl(underscoreTest1_underscore.ts, 353, 85)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 354, 12)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 329, 39)) @@ -3160,30 +3160,30 @@ module Underscore { >ChainedObject : Symbol(ChainedObject, Decl(underscoreTest1_underscore.ts, 203, 5)) contains(value: T): ChainedObject; ->contains : Symbol(contains, Decl(underscoreTest1_underscore.ts, 354, 84)) +>contains : Symbol(ChainedDictionary.contains, Decl(underscoreTest1_underscore.ts, 354, 84)) >value : Symbol(value, Decl(underscoreTest1_underscore.ts, 355, 17)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 329, 39)) >ChainedObject : Symbol(ChainedObject, Decl(underscoreTest1_underscore.ts, 203, 5)) include(value: T): ChainedObject; ->include : Symbol(include, Decl(underscoreTest1_underscore.ts, 355, 51)) +>include : Symbol(ChainedDictionary.include, Decl(underscoreTest1_underscore.ts, 355, 51)) >value : Symbol(value, Decl(underscoreTest1_underscore.ts, 356, 16)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 329, 39)) >ChainedObject : Symbol(ChainedObject, Decl(underscoreTest1_underscore.ts, 203, 5)) invoke(methodName: string, ...args: any[]): ChainedArray; ->invoke : Symbol(invoke, Decl(underscoreTest1_underscore.ts, 356, 50)) +>invoke : Symbol(ChainedDictionary.invoke, Decl(underscoreTest1_underscore.ts, 356, 50)) >methodName : Symbol(methodName, Decl(underscoreTest1_underscore.ts, 357, 15)) >args : Symbol(args, Decl(underscoreTest1_underscore.ts, 357, 34)) >ChainedArray : Symbol(ChainedArray, Decl(underscoreTest1_underscore.ts, 236, 5)) pluck(propertyName: string): ChainedArray; ->pluck : Symbol(pluck, Decl(underscoreTest1_underscore.ts, 357, 70)) +>pluck : Symbol(ChainedDictionary.pluck, Decl(underscoreTest1_underscore.ts, 357, 70)) >propertyName : Symbol(propertyName, Decl(underscoreTest1_underscore.ts, 358, 14)) >ChainedArray : Symbol(ChainedArray, Decl(underscoreTest1_underscore.ts, 236, 5)) max(iterator?: Iterator, context?: any): ChainedObject; ->max : Symbol(max, Decl(underscoreTest1_underscore.ts, 358, 55)) +>max : Symbol(ChainedDictionary.max, Decl(underscoreTest1_underscore.ts, 358, 55)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 359, 12)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 329, 39)) @@ -3192,7 +3192,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 329, 39)) min(iterator?: Iterator, context?: any): ChainedObject; ->min : Symbol(min, Decl(underscoreTest1_underscore.ts, 359, 74)) +>min : Symbol(ChainedDictionary.min, Decl(underscoreTest1_underscore.ts, 359, 74)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 360, 12)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 329, 39)) @@ -3201,7 +3201,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 329, 39)) sortBy(iterator: Iterator, context?: any): ChainedArray; ->sortBy : Symbol(sortBy, Decl(underscoreTest1_underscore.ts, 360, 74), Decl(underscoreTest1_underscore.ts, 361, 75)) +>sortBy : Symbol(ChainedDictionary.sortBy, Decl(underscoreTest1_underscore.ts, 360, 74), Decl(underscoreTest1_underscore.ts, 361, 75)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 361, 15)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 329, 39)) @@ -3210,14 +3210,14 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 329, 39)) sortBy(propertyName: string): ChainedArray; ->sortBy : Symbol(sortBy, Decl(underscoreTest1_underscore.ts, 360, 74), Decl(underscoreTest1_underscore.ts, 361, 75)) +>sortBy : Symbol(ChainedDictionary.sortBy, Decl(underscoreTest1_underscore.ts, 360, 74), Decl(underscoreTest1_underscore.ts, 361, 75)) >propertyName : Symbol(propertyName, Decl(underscoreTest1_underscore.ts, 362, 15)) >ChainedArray : Symbol(ChainedArray, Decl(underscoreTest1_underscore.ts, 236, 5)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 329, 39)) // Should return ChainedDictionary, but expansive recursion not allowed groupBy(iterator?: Iterator, context?: any): ChainedDictionary; ->groupBy : Symbol(groupBy, Decl(underscoreTest1_underscore.ts, 362, 54), Decl(underscoreTest1_underscore.ts, 364, 86)) +>groupBy : Symbol(ChainedDictionary.groupBy, Decl(underscoreTest1_underscore.ts, 362, 54), Decl(underscoreTest1_underscore.ts, 364, 86)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 364, 16)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 329, 39)) @@ -3225,12 +3225,12 @@ module Underscore { >ChainedDictionary : Symbol(ChainedDictionary, Decl(underscoreTest1_underscore.ts, 327, 5)) groupBy(propertyName: string): ChainedDictionary; ->groupBy : Symbol(groupBy, Decl(underscoreTest1_underscore.ts, 362, 54), Decl(underscoreTest1_underscore.ts, 364, 86)) +>groupBy : Symbol(ChainedDictionary.groupBy, Decl(underscoreTest1_underscore.ts, 362, 54), Decl(underscoreTest1_underscore.ts, 364, 86)) >propertyName : Symbol(propertyName, Decl(underscoreTest1_underscore.ts, 365, 16)) >ChainedDictionary : Symbol(ChainedDictionary, Decl(underscoreTest1_underscore.ts, 327, 5)) countBy(iterator?: Iterator, context?: any): ChainedDictionary; ->countBy : Symbol(countBy, Decl(underscoreTest1_underscore.ts, 365, 64), Decl(underscoreTest1_underscore.ts, 366, 87)) +>countBy : Symbol(ChainedDictionary.countBy, Decl(underscoreTest1_underscore.ts, 365, 64), Decl(underscoreTest1_underscore.ts, 366, 87)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 366, 16)) >Iterator : Symbol(Iterator, Decl(underscoreTest1_underscore.ts, 2, 1)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 329, 39)) @@ -3238,56 +3238,56 @@ module Underscore { >ChainedDictionary : Symbol(ChainedDictionary, Decl(underscoreTest1_underscore.ts, 327, 5)) countBy(propertyName: string): ChainedDictionary; ->countBy : Symbol(countBy, Decl(underscoreTest1_underscore.ts, 365, 64), Decl(underscoreTest1_underscore.ts, 366, 87)) +>countBy : Symbol(ChainedDictionary.countBy, Decl(underscoreTest1_underscore.ts, 365, 64), Decl(underscoreTest1_underscore.ts, 366, 87)) >propertyName : Symbol(propertyName, Decl(underscoreTest1_underscore.ts, 367, 16)) >ChainedDictionary : Symbol(ChainedDictionary, Decl(underscoreTest1_underscore.ts, 327, 5)) shuffle(): ChainedArray; ->shuffle : Symbol(shuffle, Decl(underscoreTest1_underscore.ts, 367, 65)) +>shuffle : Symbol(ChainedDictionary.shuffle, Decl(underscoreTest1_underscore.ts, 367, 65)) >ChainedArray : Symbol(ChainedArray, Decl(underscoreTest1_underscore.ts, 236, 5)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 329, 39)) toArray(): ChainedArray; ->toArray : Symbol(toArray, Decl(underscoreTest1_underscore.ts, 368, 35)) +>toArray : Symbol(ChainedDictionary.toArray, Decl(underscoreTest1_underscore.ts, 368, 35)) >ChainedArray : Symbol(ChainedArray, Decl(underscoreTest1_underscore.ts, 236, 5)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 329, 39)) size(): ChainedObject; ->size : Symbol(size, Decl(underscoreTest1_underscore.ts, 369, 35)) +>size : Symbol(ChainedDictionary.size, Decl(underscoreTest1_underscore.ts, 369, 35)) >ChainedObject : Symbol(ChainedObject, Decl(underscoreTest1_underscore.ts, 203, 5)) // Methods from ChainedObject with promoted return types extend(...sources: any[]): ChainedDictionary; ->extend : Symbol(extend, Decl(underscoreTest1_underscore.ts, 370, 38)) +>extend : Symbol(ChainedDictionary.extend, Decl(underscoreTest1_underscore.ts, 370, 38)) >sources : Symbol(sources, Decl(underscoreTest1_underscore.ts, 372, 15)) >ChainedDictionary : Symbol(ChainedDictionary, Decl(underscoreTest1_underscore.ts, 327, 5)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 329, 39)) pick(...keys: string[]): ChainedDictionary; ->pick : Symbol(pick, Decl(underscoreTest1_underscore.ts, 372, 56)) +>pick : Symbol(ChainedDictionary.pick, Decl(underscoreTest1_underscore.ts, 372, 56)) >keys : Symbol(keys, Decl(underscoreTest1_underscore.ts, 373, 13)) >ChainedDictionary : Symbol(ChainedDictionary, Decl(underscoreTest1_underscore.ts, 327, 5)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 329, 39)) omit(...keys: string[]): ChainedDictionary; ->omit : Symbol(omit, Decl(underscoreTest1_underscore.ts, 373, 54)) +>omit : Symbol(ChainedDictionary.omit, Decl(underscoreTest1_underscore.ts, 373, 54)) >keys : Symbol(keys, Decl(underscoreTest1_underscore.ts, 374, 13)) >ChainedDictionary : Symbol(ChainedDictionary, Decl(underscoreTest1_underscore.ts, 327, 5)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 329, 39)) defaults(...defaults: any[]): ChainedDictionary; ->defaults : Symbol(defaults, Decl(underscoreTest1_underscore.ts, 374, 54)) +>defaults : Symbol(ChainedDictionary.defaults, Decl(underscoreTest1_underscore.ts, 374, 54)) >defaults : Symbol(defaults, Decl(underscoreTest1_underscore.ts, 375, 17)) >ChainedDictionary : Symbol(ChainedDictionary, Decl(underscoreTest1_underscore.ts, 327, 5)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 329, 39)) clone(): ChainedDictionary; ->clone : Symbol(clone, Decl(underscoreTest1_underscore.ts, 375, 59)) +>clone : Symbol(ChainedDictionary.clone, Decl(underscoreTest1_underscore.ts, 375, 59)) >ChainedDictionary : Symbol(ChainedDictionary, Decl(underscoreTest1_underscore.ts, 327, 5)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 329, 39)) tap(interceptor: (object: Dictionary) => void): ChainedDictionary; ->tap : Symbol(tap, Decl(underscoreTest1_underscore.ts, 376, 38)) +>tap : Symbol(ChainedDictionary.tap, Decl(underscoreTest1_underscore.ts, 376, 38)) >interceptor : Symbol(interceptor, Decl(underscoreTest1_underscore.ts, 377, 12)) >object : Symbol(object, Decl(underscoreTest1_underscore.ts, 377, 26)) >Dictionary : Symbol(Dictionary, Decl(underscoreTest1_underscore.ts, 0, 0)) @@ -3300,19 +3300,19 @@ module Underscore { >TemplateSettings : Symbol(TemplateSettings, Decl(underscoreTest1_underscore.ts, 378, 5)) evaluate?: RegExp; ->evaluate : Symbol(evaluate, Decl(underscoreTest1_underscore.ts, 380, 39)) +>evaluate : Symbol(TemplateSettings.evaluate, Decl(underscoreTest1_underscore.ts, 380, 39)) >RegExp : Symbol(RegExp, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) interpolate?: RegExp; ->interpolate : Symbol(interpolate, Decl(underscoreTest1_underscore.ts, 381, 26)) +>interpolate : Symbol(TemplateSettings.interpolate, Decl(underscoreTest1_underscore.ts, 381, 26)) >RegExp : Symbol(RegExp, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) escape?: RegExp; ->escape : Symbol(escape, Decl(underscoreTest1_underscore.ts, 382, 29)) +>escape : Symbol(TemplateSettings.escape, Decl(underscoreTest1_underscore.ts, 382, 29)) >RegExp : Symbol(RegExp, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) variable?: string; ->variable : Symbol(variable, Decl(underscoreTest1_underscore.ts, 383, 24)) +>variable : Symbol(TemplateSettings.variable, Decl(underscoreTest1_underscore.ts, 383, 24)) } export interface Static { @@ -3349,7 +3349,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 391, 9)) chain(list: T[]): ChainedArray; ->chain : Symbol(chain, Decl(underscoreTest1_underscore.ts, 391, 38), Decl(underscoreTest1_underscore.ts, 393, 45), Decl(underscoreTest1_underscore.ts, 394, 60)) +>chain : Symbol(Static.chain, Decl(underscoreTest1_underscore.ts, 391, 38), Decl(underscoreTest1_underscore.ts, 393, 45), Decl(underscoreTest1_underscore.ts, 394, 60)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 393, 14)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 393, 17)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 393, 14)) @@ -3357,7 +3357,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 393, 14)) chain(list: Dictionary): ChainedDictionary; ->chain : Symbol(chain, Decl(underscoreTest1_underscore.ts, 391, 38), Decl(underscoreTest1_underscore.ts, 393, 45), Decl(underscoreTest1_underscore.ts, 394, 60)) +>chain : Symbol(Static.chain, Decl(underscoreTest1_underscore.ts, 391, 38), Decl(underscoreTest1_underscore.ts, 393, 45), Decl(underscoreTest1_underscore.ts, 394, 60)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 394, 14)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 394, 17)) >Dictionary : Symbol(Dictionary, Decl(underscoreTest1_underscore.ts, 0, 0)) @@ -3366,7 +3366,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 394, 14)) chain(obj: T): ChainedObject; ->chain : Symbol(chain, Decl(underscoreTest1_underscore.ts, 391, 38), Decl(underscoreTest1_underscore.ts, 393, 45), Decl(underscoreTest1_underscore.ts, 394, 60)) +>chain : Symbol(Static.chain, Decl(underscoreTest1_underscore.ts, 391, 38), Decl(underscoreTest1_underscore.ts, 393, 45), Decl(underscoreTest1_underscore.ts, 394, 60)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 395, 14)) >obj : Symbol(obj, Decl(underscoreTest1_underscore.ts, 395, 17)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 395, 14)) @@ -3374,7 +3374,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 395, 14)) each(list: T[], iterator: Iterator, context?: any): void; ->each : Symbol(each, Decl(underscoreTest1_underscore.ts, 395, 43), Decl(underscoreTest1_underscore.ts, 397, 77)) +>each : Symbol(Static.each, Decl(underscoreTest1_underscore.ts, 395, 43), Decl(underscoreTest1_underscore.ts, 397, 77)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 397, 13)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 397, 16)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 397, 13)) @@ -3384,7 +3384,7 @@ module Underscore { >context : Symbol(context, Decl(underscoreTest1_underscore.ts, 397, 55)) each(list: Dictionary, iterator: Iterator, context?: any): void; ->each : Symbol(each, Decl(underscoreTest1_underscore.ts, 395, 43), Decl(underscoreTest1_underscore.ts, 397, 77)) +>each : Symbol(Static.each, Decl(underscoreTest1_underscore.ts, 395, 43), Decl(underscoreTest1_underscore.ts, 397, 77)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 398, 13)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 398, 16)) >Dictionary : Symbol(Dictionary, Decl(underscoreTest1_underscore.ts, 0, 0)) @@ -3395,7 +3395,7 @@ module Underscore { >context : Symbol(context, Decl(underscoreTest1_underscore.ts, 398, 65)) forEach(list: T[], iterator: Iterator, context?: any): void; ->forEach : Symbol(forEach, Decl(underscoreTest1_underscore.ts, 398, 87), Decl(underscoreTest1_underscore.ts, 399, 80)) +>forEach : Symbol(Static.forEach, Decl(underscoreTest1_underscore.ts, 398, 87), Decl(underscoreTest1_underscore.ts, 399, 80)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 399, 16)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 399, 19)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 399, 16)) @@ -3405,7 +3405,7 @@ module Underscore { >context : Symbol(context, Decl(underscoreTest1_underscore.ts, 399, 58)) forEach(list: Dictionary, iterator: Iterator, context?: any): void; ->forEach : Symbol(forEach, Decl(underscoreTest1_underscore.ts, 398, 87), Decl(underscoreTest1_underscore.ts, 399, 80)) +>forEach : Symbol(Static.forEach, Decl(underscoreTest1_underscore.ts, 398, 87), Decl(underscoreTest1_underscore.ts, 399, 80)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 400, 16)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 400, 19)) >Dictionary : Symbol(Dictionary, Decl(underscoreTest1_underscore.ts, 0, 0)) @@ -3416,7 +3416,7 @@ module Underscore { >context : Symbol(context, Decl(underscoreTest1_underscore.ts, 400, 68)) map(list: T[], iterator: Iterator, context?: any): U[]; ->map : Symbol(map, Decl(underscoreTest1_underscore.ts, 400, 90), Decl(underscoreTest1_underscore.ts, 402, 75)) +>map : Symbol(Static.map, Decl(underscoreTest1_underscore.ts, 400, 90), Decl(underscoreTest1_underscore.ts, 402, 75)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 402, 12)) >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 402, 14)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 402, 18)) @@ -3429,7 +3429,7 @@ module Underscore { >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 402, 14)) map(list: Dictionary, iterator: Iterator, context?: any): U[]; ->map : Symbol(map, Decl(underscoreTest1_underscore.ts, 400, 90), Decl(underscoreTest1_underscore.ts, 402, 75)) +>map : Symbol(Static.map, Decl(underscoreTest1_underscore.ts, 400, 90), Decl(underscoreTest1_underscore.ts, 402, 75)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 403, 12)) >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 403, 14)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 403, 18)) @@ -3443,7 +3443,7 @@ module Underscore { >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 403, 14)) collect(list: T[], iterator: Iterator, context?: any): U[]; ->collect : Symbol(collect, Decl(underscoreTest1_underscore.ts, 403, 85), Decl(underscoreTest1_underscore.ts, 404, 79)) +>collect : Symbol(Static.collect, Decl(underscoreTest1_underscore.ts, 403, 85), Decl(underscoreTest1_underscore.ts, 404, 79)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 404, 16)) >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 404, 18)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 404, 22)) @@ -3456,7 +3456,7 @@ module Underscore { >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 404, 18)) collect(list: Dictionary, iterator: Iterator, context?: any): U[]; ->collect : Symbol(collect, Decl(underscoreTest1_underscore.ts, 403, 85), Decl(underscoreTest1_underscore.ts, 404, 79)) +>collect : Symbol(Static.collect, Decl(underscoreTest1_underscore.ts, 403, 85), Decl(underscoreTest1_underscore.ts, 404, 79)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 405, 16)) >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 405, 18)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 405, 22)) @@ -3470,7 +3470,7 @@ module Underscore { >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 405, 18)) reduce(list: T[], iterator: Reducer, initialValue?: T, context?: any): T; ->reduce : Symbol(reduce, Decl(underscoreTest1_underscore.ts, 405, 89), Decl(underscoreTest1_underscore.ts, 407, 90), Decl(underscoreTest1_underscore.ts, 408, 92), Decl(underscoreTest1_underscore.ts, 409, 100)) +>reduce : Symbol(Static.reduce, Decl(underscoreTest1_underscore.ts, 405, 89), Decl(underscoreTest1_underscore.ts, 407, 90), Decl(underscoreTest1_underscore.ts, 408, 92), Decl(underscoreTest1_underscore.ts, 409, 100)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 407, 15)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 407, 18)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 407, 15)) @@ -3484,7 +3484,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 407, 15)) reduce(list: T[], iterator: Reducer, initialValue: U, context?: any): U; ->reduce : Symbol(reduce, Decl(underscoreTest1_underscore.ts, 405, 89), Decl(underscoreTest1_underscore.ts, 407, 90), Decl(underscoreTest1_underscore.ts, 408, 92), Decl(underscoreTest1_underscore.ts, 409, 100)) +>reduce : Symbol(Static.reduce, Decl(underscoreTest1_underscore.ts, 405, 89), Decl(underscoreTest1_underscore.ts, 407, 90), Decl(underscoreTest1_underscore.ts, 408, 92), Decl(underscoreTest1_underscore.ts, 409, 100)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 408, 15)) >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 408, 17)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 408, 21)) @@ -3499,7 +3499,7 @@ module Underscore { >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 408, 17)) reduce(list: Dictionary, iterator: Reducer, initialValue?: T, context?: any): T; ->reduce : Symbol(reduce, Decl(underscoreTest1_underscore.ts, 405, 89), Decl(underscoreTest1_underscore.ts, 407, 90), Decl(underscoreTest1_underscore.ts, 408, 92), Decl(underscoreTest1_underscore.ts, 409, 100)) +>reduce : Symbol(Static.reduce, Decl(underscoreTest1_underscore.ts, 405, 89), Decl(underscoreTest1_underscore.ts, 407, 90), Decl(underscoreTest1_underscore.ts, 408, 92), Decl(underscoreTest1_underscore.ts, 409, 100)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 409, 15)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 409, 18)) >Dictionary : Symbol(Dictionary, Decl(underscoreTest1_underscore.ts, 0, 0)) @@ -3514,7 +3514,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 409, 15)) reduce(list: Dictionary, iterator: Reducer, initialValue: U, context?: any): U; ->reduce : Symbol(reduce, Decl(underscoreTest1_underscore.ts, 405, 89), Decl(underscoreTest1_underscore.ts, 407, 90), Decl(underscoreTest1_underscore.ts, 408, 92), Decl(underscoreTest1_underscore.ts, 409, 100)) +>reduce : Symbol(Static.reduce, Decl(underscoreTest1_underscore.ts, 405, 89), Decl(underscoreTest1_underscore.ts, 407, 90), Decl(underscoreTest1_underscore.ts, 408, 92), Decl(underscoreTest1_underscore.ts, 409, 100)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 410, 15)) >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 410, 17)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 410, 21)) @@ -3530,7 +3530,7 @@ module Underscore { >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 410, 17)) foldl(list: T[], iterator: Reducer, initialValue?: T, context?: any): T; ->foldl : Symbol(foldl, Decl(underscoreTest1_underscore.ts, 410, 102), Decl(underscoreTest1_underscore.ts, 411, 89), Decl(underscoreTest1_underscore.ts, 412, 91), Decl(underscoreTest1_underscore.ts, 413, 99)) +>foldl : Symbol(Static.foldl, Decl(underscoreTest1_underscore.ts, 410, 102), Decl(underscoreTest1_underscore.ts, 411, 89), Decl(underscoreTest1_underscore.ts, 412, 91), Decl(underscoreTest1_underscore.ts, 413, 99)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 411, 14)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 411, 17)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 411, 14)) @@ -3544,7 +3544,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 411, 14)) foldl(list: T[], iterator: Reducer, initialValue: U, context?: any): U; ->foldl : Symbol(foldl, Decl(underscoreTest1_underscore.ts, 410, 102), Decl(underscoreTest1_underscore.ts, 411, 89), Decl(underscoreTest1_underscore.ts, 412, 91), Decl(underscoreTest1_underscore.ts, 413, 99)) +>foldl : Symbol(Static.foldl, Decl(underscoreTest1_underscore.ts, 410, 102), Decl(underscoreTest1_underscore.ts, 411, 89), Decl(underscoreTest1_underscore.ts, 412, 91), Decl(underscoreTest1_underscore.ts, 413, 99)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 412, 14)) >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 412, 16)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 412, 20)) @@ -3559,7 +3559,7 @@ module Underscore { >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 412, 16)) foldl(list: Dictionary, iterator: Reducer, initialValue?: T, context?: any): T; ->foldl : Symbol(foldl, Decl(underscoreTest1_underscore.ts, 410, 102), Decl(underscoreTest1_underscore.ts, 411, 89), Decl(underscoreTest1_underscore.ts, 412, 91), Decl(underscoreTest1_underscore.ts, 413, 99)) +>foldl : Symbol(Static.foldl, Decl(underscoreTest1_underscore.ts, 410, 102), Decl(underscoreTest1_underscore.ts, 411, 89), Decl(underscoreTest1_underscore.ts, 412, 91), Decl(underscoreTest1_underscore.ts, 413, 99)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 413, 14)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 413, 17)) >Dictionary : Symbol(Dictionary, Decl(underscoreTest1_underscore.ts, 0, 0)) @@ -3574,7 +3574,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 413, 14)) foldl(list: Dictionary, iterator: Reducer, initialValue: U, context?: any): U; ->foldl : Symbol(foldl, Decl(underscoreTest1_underscore.ts, 410, 102), Decl(underscoreTest1_underscore.ts, 411, 89), Decl(underscoreTest1_underscore.ts, 412, 91), Decl(underscoreTest1_underscore.ts, 413, 99)) +>foldl : Symbol(Static.foldl, Decl(underscoreTest1_underscore.ts, 410, 102), Decl(underscoreTest1_underscore.ts, 411, 89), Decl(underscoreTest1_underscore.ts, 412, 91), Decl(underscoreTest1_underscore.ts, 413, 99)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 414, 14)) >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 414, 16)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 414, 20)) @@ -3590,7 +3590,7 @@ module Underscore { >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 414, 16)) inject(list: T[], iterator: Reducer, initialValue?: T, context?: any): T; ->inject : Symbol(inject, Decl(underscoreTest1_underscore.ts, 414, 101), Decl(underscoreTest1_underscore.ts, 415, 90), Decl(underscoreTest1_underscore.ts, 416, 92), Decl(underscoreTest1_underscore.ts, 417, 100)) +>inject : Symbol(Static.inject, Decl(underscoreTest1_underscore.ts, 414, 101), Decl(underscoreTest1_underscore.ts, 415, 90), Decl(underscoreTest1_underscore.ts, 416, 92), Decl(underscoreTest1_underscore.ts, 417, 100)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 415, 15)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 415, 18)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 415, 15)) @@ -3604,7 +3604,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 415, 15)) inject(list: T[], iterator: Reducer, initialValue: U, context?: any): U; ->inject : Symbol(inject, Decl(underscoreTest1_underscore.ts, 414, 101), Decl(underscoreTest1_underscore.ts, 415, 90), Decl(underscoreTest1_underscore.ts, 416, 92), Decl(underscoreTest1_underscore.ts, 417, 100)) +>inject : Symbol(Static.inject, Decl(underscoreTest1_underscore.ts, 414, 101), Decl(underscoreTest1_underscore.ts, 415, 90), Decl(underscoreTest1_underscore.ts, 416, 92), Decl(underscoreTest1_underscore.ts, 417, 100)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 416, 15)) >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 416, 17)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 416, 21)) @@ -3619,7 +3619,7 @@ module Underscore { >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 416, 17)) inject(list: Dictionary, iterator: Reducer, initialValue?: T, context?: any): T; ->inject : Symbol(inject, Decl(underscoreTest1_underscore.ts, 414, 101), Decl(underscoreTest1_underscore.ts, 415, 90), Decl(underscoreTest1_underscore.ts, 416, 92), Decl(underscoreTest1_underscore.ts, 417, 100)) +>inject : Symbol(Static.inject, Decl(underscoreTest1_underscore.ts, 414, 101), Decl(underscoreTest1_underscore.ts, 415, 90), Decl(underscoreTest1_underscore.ts, 416, 92), Decl(underscoreTest1_underscore.ts, 417, 100)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 417, 15)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 417, 18)) >Dictionary : Symbol(Dictionary, Decl(underscoreTest1_underscore.ts, 0, 0)) @@ -3634,7 +3634,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 417, 15)) inject(list: Dictionary, iterator: Reducer, initialValue: U, context?: any): U; ->inject : Symbol(inject, Decl(underscoreTest1_underscore.ts, 414, 101), Decl(underscoreTest1_underscore.ts, 415, 90), Decl(underscoreTest1_underscore.ts, 416, 92), Decl(underscoreTest1_underscore.ts, 417, 100)) +>inject : Symbol(Static.inject, Decl(underscoreTest1_underscore.ts, 414, 101), Decl(underscoreTest1_underscore.ts, 415, 90), Decl(underscoreTest1_underscore.ts, 416, 92), Decl(underscoreTest1_underscore.ts, 417, 100)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 418, 15)) >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 418, 17)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 418, 21)) @@ -3650,7 +3650,7 @@ module Underscore { >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 418, 17)) reduceRight(list: T[], iterator: Reducer, initialValue?: T, context?: any): T; ->reduceRight : Symbol(reduceRight, Decl(underscoreTest1_underscore.ts, 418, 102), Decl(underscoreTest1_underscore.ts, 420, 95), Decl(underscoreTest1_underscore.ts, 421, 97), Decl(underscoreTest1_underscore.ts, 422, 105)) +>reduceRight : Symbol(Static.reduceRight, Decl(underscoreTest1_underscore.ts, 418, 102), Decl(underscoreTest1_underscore.ts, 420, 95), Decl(underscoreTest1_underscore.ts, 421, 97), Decl(underscoreTest1_underscore.ts, 422, 105)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 420, 20)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 420, 23)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 420, 20)) @@ -3664,7 +3664,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 420, 20)) reduceRight(list: T[], iterator: Reducer, initialValue: U, context?: any): U; ->reduceRight : Symbol(reduceRight, Decl(underscoreTest1_underscore.ts, 418, 102), Decl(underscoreTest1_underscore.ts, 420, 95), Decl(underscoreTest1_underscore.ts, 421, 97), Decl(underscoreTest1_underscore.ts, 422, 105)) +>reduceRight : Symbol(Static.reduceRight, Decl(underscoreTest1_underscore.ts, 418, 102), Decl(underscoreTest1_underscore.ts, 420, 95), Decl(underscoreTest1_underscore.ts, 421, 97), Decl(underscoreTest1_underscore.ts, 422, 105)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 421, 20)) >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 421, 22)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 421, 26)) @@ -3679,7 +3679,7 @@ module Underscore { >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 421, 22)) reduceRight(list: Dictionary, iterator: Reducer, initialValue?: T, context?: any): T; ->reduceRight : Symbol(reduceRight, Decl(underscoreTest1_underscore.ts, 418, 102), Decl(underscoreTest1_underscore.ts, 420, 95), Decl(underscoreTest1_underscore.ts, 421, 97), Decl(underscoreTest1_underscore.ts, 422, 105)) +>reduceRight : Symbol(Static.reduceRight, Decl(underscoreTest1_underscore.ts, 418, 102), Decl(underscoreTest1_underscore.ts, 420, 95), Decl(underscoreTest1_underscore.ts, 421, 97), Decl(underscoreTest1_underscore.ts, 422, 105)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 422, 20)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 422, 23)) >Dictionary : Symbol(Dictionary, Decl(underscoreTest1_underscore.ts, 0, 0)) @@ -3694,7 +3694,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 422, 20)) reduceRight(list: Dictionary, iterator: Reducer, initialValue: U, context?: any): U; ->reduceRight : Symbol(reduceRight, Decl(underscoreTest1_underscore.ts, 418, 102), Decl(underscoreTest1_underscore.ts, 420, 95), Decl(underscoreTest1_underscore.ts, 421, 97), Decl(underscoreTest1_underscore.ts, 422, 105)) +>reduceRight : Symbol(Static.reduceRight, Decl(underscoreTest1_underscore.ts, 418, 102), Decl(underscoreTest1_underscore.ts, 420, 95), Decl(underscoreTest1_underscore.ts, 421, 97), Decl(underscoreTest1_underscore.ts, 422, 105)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 423, 20)) >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 423, 22)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 423, 26)) @@ -3710,7 +3710,7 @@ module Underscore { >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 423, 22)) foldr(list: T[], iterator: Reducer, initialValue?: T, context?: any): T; ->foldr : Symbol(foldr, Decl(underscoreTest1_underscore.ts, 423, 107), Decl(underscoreTest1_underscore.ts, 424, 89), Decl(underscoreTest1_underscore.ts, 425, 91), Decl(underscoreTest1_underscore.ts, 426, 99)) +>foldr : Symbol(Static.foldr, Decl(underscoreTest1_underscore.ts, 423, 107), Decl(underscoreTest1_underscore.ts, 424, 89), Decl(underscoreTest1_underscore.ts, 425, 91), Decl(underscoreTest1_underscore.ts, 426, 99)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 424, 14)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 424, 17)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 424, 14)) @@ -3724,7 +3724,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 424, 14)) foldr(list: T[], iterator: Reducer, initialValue: U, context?: any): U; ->foldr : Symbol(foldr, Decl(underscoreTest1_underscore.ts, 423, 107), Decl(underscoreTest1_underscore.ts, 424, 89), Decl(underscoreTest1_underscore.ts, 425, 91), Decl(underscoreTest1_underscore.ts, 426, 99)) +>foldr : Symbol(Static.foldr, Decl(underscoreTest1_underscore.ts, 423, 107), Decl(underscoreTest1_underscore.ts, 424, 89), Decl(underscoreTest1_underscore.ts, 425, 91), Decl(underscoreTest1_underscore.ts, 426, 99)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 425, 14)) >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 425, 16)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 425, 20)) @@ -3739,7 +3739,7 @@ module Underscore { >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 425, 16)) foldr(list: Dictionary, iterator: Reducer, initialValue?: T, context?: any): T; ->foldr : Symbol(foldr, Decl(underscoreTest1_underscore.ts, 423, 107), Decl(underscoreTest1_underscore.ts, 424, 89), Decl(underscoreTest1_underscore.ts, 425, 91), Decl(underscoreTest1_underscore.ts, 426, 99)) +>foldr : Symbol(Static.foldr, Decl(underscoreTest1_underscore.ts, 423, 107), Decl(underscoreTest1_underscore.ts, 424, 89), Decl(underscoreTest1_underscore.ts, 425, 91), Decl(underscoreTest1_underscore.ts, 426, 99)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 426, 14)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 426, 17)) >Dictionary : Symbol(Dictionary, Decl(underscoreTest1_underscore.ts, 0, 0)) @@ -3754,7 +3754,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 426, 14)) foldr(list: Dictionary, iterator: Reducer, initialValue: U, context?: any): U; ->foldr : Symbol(foldr, Decl(underscoreTest1_underscore.ts, 423, 107), Decl(underscoreTest1_underscore.ts, 424, 89), Decl(underscoreTest1_underscore.ts, 425, 91), Decl(underscoreTest1_underscore.ts, 426, 99)) +>foldr : Symbol(Static.foldr, Decl(underscoreTest1_underscore.ts, 423, 107), Decl(underscoreTest1_underscore.ts, 424, 89), Decl(underscoreTest1_underscore.ts, 425, 91), Decl(underscoreTest1_underscore.ts, 426, 99)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 427, 14)) >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 427, 16)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 427, 20)) @@ -3770,7 +3770,7 @@ module Underscore { >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 427, 16)) find(list: T[], iterator: Iterator, context?: any): T; ->find : Symbol(find, Decl(underscoreTest1_underscore.ts, 427, 101), Decl(underscoreTest1_underscore.ts, 429, 77)) +>find : Symbol(Static.find, Decl(underscoreTest1_underscore.ts, 427, 101), Decl(underscoreTest1_underscore.ts, 429, 77)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 429, 13)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 429, 16)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 429, 13)) @@ -3781,7 +3781,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 429, 13)) find(list: Dictionary, iterator: Iterator, context?: any): T; ->find : Symbol(find, Decl(underscoreTest1_underscore.ts, 427, 101), Decl(underscoreTest1_underscore.ts, 429, 77)) +>find : Symbol(Static.find, Decl(underscoreTest1_underscore.ts, 427, 101), Decl(underscoreTest1_underscore.ts, 429, 77)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 430, 13)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 430, 16)) >Dictionary : Symbol(Dictionary, Decl(underscoreTest1_underscore.ts, 0, 0)) @@ -3793,7 +3793,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 430, 13)) detect(list: T[], iterator: Iterator, context?: any): T; ->detect : Symbol(detect, Decl(underscoreTest1_underscore.ts, 430, 87), Decl(underscoreTest1_underscore.ts, 431, 79)) +>detect : Symbol(Static.detect, Decl(underscoreTest1_underscore.ts, 430, 87), Decl(underscoreTest1_underscore.ts, 431, 79)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 431, 15)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 431, 18)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 431, 15)) @@ -3804,7 +3804,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 431, 15)) detect(list: Dictionary, iterator: Iterator, context?: any): T; ->detect : Symbol(detect, Decl(underscoreTest1_underscore.ts, 430, 87), Decl(underscoreTest1_underscore.ts, 431, 79)) +>detect : Symbol(Static.detect, Decl(underscoreTest1_underscore.ts, 430, 87), Decl(underscoreTest1_underscore.ts, 431, 79)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 432, 15)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 432, 18)) >Dictionary : Symbol(Dictionary, Decl(underscoreTest1_underscore.ts, 0, 0)) @@ -3816,7 +3816,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 432, 15)) filter(list: T[], iterator: Iterator, context?: any): T[]; ->filter : Symbol(filter, Decl(underscoreTest1_underscore.ts, 432, 89), Decl(underscoreTest1_underscore.ts, 434, 81)) +>filter : Symbol(Static.filter, Decl(underscoreTest1_underscore.ts, 432, 89), Decl(underscoreTest1_underscore.ts, 434, 81)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 434, 15)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 434, 18)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 434, 15)) @@ -3827,7 +3827,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 434, 15)) filter(list: Dictionary, iterator: Iterator, context?: any): T[]; ->filter : Symbol(filter, Decl(underscoreTest1_underscore.ts, 432, 89), Decl(underscoreTest1_underscore.ts, 434, 81)) +>filter : Symbol(Static.filter, Decl(underscoreTest1_underscore.ts, 432, 89), Decl(underscoreTest1_underscore.ts, 434, 81)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 435, 15)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 435, 18)) >Dictionary : Symbol(Dictionary, Decl(underscoreTest1_underscore.ts, 0, 0)) @@ -3839,7 +3839,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 435, 15)) select(list: T[], iterator: Iterator, context?: any): T[]; ->select : Symbol(select, Decl(underscoreTest1_underscore.ts, 435, 91), Decl(underscoreTest1_underscore.ts, 436, 81)) +>select : Symbol(Static.select, Decl(underscoreTest1_underscore.ts, 435, 91), Decl(underscoreTest1_underscore.ts, 436, 81)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 436, 15)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 436, 18)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 436, 15)) @@ -3850,7 +3850,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 436, 15)) select(list: Dictionary, iterator: Iterator, context?: any): T[]; ->select : Symbol(select, Decl(underscoreTest1_underscore.ts, 435, 91), Decl(underscoreTest1_underscore.ts, 436, 81)) +>select : Symbol(Static.select, Decl(underscoreTest1_underscore.ts, 435, 91), Decl(underscoreTest1_underscore.ts, 436, 81)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 437, 15)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 437, 18)) >Dictionary : Symbol(Dictionary, Decl(underscoreTest1_underscore.ts, 0, 0)) @@ -3862,7 +3862,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 437, 15)) where(list: T[], properties: Object): T[]; ->where : Symbol(where, Decl(underscoreTest1_underscore.ts, 437, 91), Decl(underscoreTest1_underscore.ts, 439, 53)) +>where : Symbol(Static.where, Decl(underscoreTest1_underscore.ts, 437, 91), Decl(underscoreTest1_underscore.ts, 439, 53)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 439, 14)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 439, 17)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 439, 14)) @@ -3871,7 +3871,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 439, 14)) where(list: Dictionary, properties: Object): T[]; ->where : Symbol(where, Decl(underscoreTest1_underscore.ts, 437, 91), Decl(underscoreTest1_underscore.ts, 439, 53)) +>where : Symbol(Static.where, Decl(underscoreTest1_underscore.ts, 437, 91), Decl(underscoreTest1_underscore.ts, 439, 53)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 440, 14)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 440, 17)) >Dictionary : Symbol(Dictionary, Decl(underscoreTest1_underscore.ts, 0, 0)) @@ -3881,7 +3881,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 440, 14)) findWhere(list: T[], properties: Object): T; ->findWhere : Symbol(findWhere, Decl(underscoreTest1_underscore.ts, 440, 63), Decl(underscoreTest1_underscore.ts, 442, 55)) +>findWhere : Symbol(Static.findWhere, Decl(underscoreTest1_underscore.ts, 440, 63), Decl(underscoreTest1_underscore.ts, 442, 55)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 442, 18)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 442, 21)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 442, 18)) @@ -3890,7 +3890,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 442, 18)) findWhere(list: Dictionary, properties: Object): T; ->findWhere : Symbol(findWhere, Decl(underscoreTest1_underscore.ts, 440, 63), Decl(underscoreTest1_underscore.ts, 442, 55)) +>findWhere : Symbol(Static.findWhere, Decl(underscoreTest1_underscore.ts, 440, 63), Decl(underscoreTest1_underscore.ts, 442, 55)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 443, 18)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 443, 21)) >Dictionary : Symbol(Dictionary, Decl(underscoreTest1_underscore.ts, 0, 0)) @@ -3900,7 +3900,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 443, 18)) reject(list: T[], iterator: Iterator, context?: any): T[]; ->reject : Symbol(reject, Decl(underscoreTest1_underscore.ts, 443, 65), Decl(underscoreTest1_underscore.ts, 445, 81)) +>reject : Symbol(Static.reject, Decl(underscoreTest1_underscore.ts, 443, 65), Decl(underscoreTest1_underscore.ts, 445, 81)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 445, 15)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 445, 18)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 445, 15)) @@ -3911,7 +3911,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 445, 15)) reject(list: Dictionary, iterator: Iterator, context?: any): T[]; ->reject : Symbol(reject, Decl(underscoreTest1_underscore.ts, 443, 65), Decl(underscoreTest1_underscore.ts, 445, 81)) +>reject : Symbol(Static.reject, Decl(underscoreTest1_underscore.ts, 443, 65), Decl(underscoreTest1_underscore.ts, 445, 81)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 446, 15)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 446, 18)) >Dictionary : Symbol(Dictionary, Decl(underscoreTest1_underscore.ts, 0, 0)) @@ -3923,7 +3923,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 446, 15)) every(list: T[], iterator?: Iterator, context?: any): boolean; ->every : Symbol(every, Decl(underscoreTest1_underscore.ts, 446, 91), Decl(underscoreTest1_underscore.ts, 448, 85)) +>every : Symbol(Static.every, Decl(underscoreTest1_underscore.ts, 446, 91), Decl(underscoreTest1_underscore.ts, 448, 85)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 448, 14)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 448, 17)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 448, 14)) @@ -3933,7 +3933,7 @@ module Underscore { >context : Symbol(context, Decl(underscoreTest1_underscore.ts, 448, 60)) every(list: Dictionary, iterator?: Iterator, context?: any): boolean; ->every : Symbol(every, Decl(underscoreTest1_underscore.ts, 446, 91), Decl(underscoreTest1_underscore.ts, 448, 85)) +>every : Symbol(Static.every, Decl(underscoreTest1_underscore.ts, 446, 91), Decl(underscoreTest1_underscore.ts, 448, 85)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 449, 14)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 449, 17)) >Dictionary : Symbol(Dictionary, Decl(underscoreTest1_underscore.ts, 0, 0)) @@ -3944,7 +3944,7 @@ module Underscore { >context : Symbol(context, Decl(underscoreTest1_underscore.ts, 449, 70)) all(list: T[], iterator?: Iterator, context?: any): boolean; ->all : Symbol(all, Decl(underscoreTest1_underscore.ts, 449, 95), Decl(underscoreTest1_underscore.ts, 450, 83)) +>all : Symbol(Static.all, Decl(underscoreTest1_underscore.ts, 449, 95), Decl(underscoreTest1_underscore.ts, 450, 83)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 450, 12)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 450, 15)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 450, 12)) @@ -3954,7 +3954,7 @@ module Underscore { >context : Symbol(context, Decl(underscoreTest1_underscore.ts, 450, 58)) all(list: Dictionary, iterator?: Iterator, context?: any): boolean; ->all : Symbol(all, Decl(underscoreTest1_underscore.ts, 449, 95), Decl(underscoreTest1_underscore.ts, 450, 83)) +>all : Symbol(Static.all, Decl(underscoreTest1_underscore.ts, 449, 95), Decl(underscoreTest1_underscore.ts, 450, 83)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 451, 12)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 451, 15)) >Dictionary : Symbol(Dictionary, Decl(underscoreTest1_underscore.ts, 0, 0)) @@ -3965,7 +3965,7 @@ module Underscore { >context : Symbol(context, Decl(underscoreTest1_underscore.ts, 451, 68)) some(list: T[], iterator?: Iterator, context?: any): boolean; ->some : Symbol(some, Decl(underscoreTest1_underscore.ts, 451, 93), Decl(underscoreTest1_underscore.ts, 453, 84)) +>some : Symbol(Static.some, Decl(underscoreTest1_underscore.ts, 451, 93), Decl(underscoreTest1_underscore.ts, 453, 84)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 453, 13)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 453, 16)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 453, 13)) @@ -3975,7 +3975,7 @@ module Underscore { >context : Symbol(context, Decl(underscoreTest1_underscore.ts, 453, 59)) some(list: Dictionary, iterator?: Iterator, context?: any): boolean; ->some : Symbol(some, Decl(underscoreTest1_underscore.ts, 451, 93), Decl(underscoreTest1_underscore.ts, 453, 84)) +>some : Symbol(Static.some, Decl(underscoreTest1_underscore.ts, 451, 93), Decl(underscoreTest1_underscore.ts, 453, 84)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 454, 13)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 454, 16)) >Dictionary : Symbol(Dictionary, Decl(underscoreTest1_underscore.ts, 0, 0)) @@ -3986,7 +3986,7 @@ module Underscore { >context : Symbol(context, Decl(underscoreTest1_underscore.ts, 454, 69)) any(list: T[], iterator?: Iterator, context?: any): boolean; ->any : Symbol(any, Decl(underscoreTest1_underscore.ts, 454, 94), Decl(underscoreTest1_underscore.ts, 455, 83)) +>any : Symbol(Static.any, Decl(underscoreTest1_underscore.ts, 454, 94), Decl(underscoreTest1_underscore.ts, 455, 83)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 455, 12)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 455, 15)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 455, 12)) @@ -3996,7 +3996,7 @@ module Underscore { >context : Symbol(context, Decl(underscoreTest1_underscore.ts, 455, 58)) any(list: Dictionary, iterator?: Iterator, context?: any): boolean; ->any : Symbol(any, Decl(underscoreTest1_underscore.ts, 454, 94), Decl(underscoreTest1_underscore.ts, 455, 83)) +>any : Symbol(Static.any, Decl(underscoreTest1_underscore.ts, 454, 94), Decl(underscoreTest1_underscore.ts, 455, 83)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 456, 12)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 456, 15)) >Dictionary : Symbol(Dictionary, Decl(underscoreTest1_underscore.ts, 0, 0)) @@ -4007,7 +4007,7 @@ module Underscore { >context : Symbol(context, Decl(underscoreTest1_underscore.ts, 456, 68)) contains(list: T[], value: T): boolean; ->contains : Symbol(contains, Decl(underscoreTest1_underscore.ts, 456, 93), Decl(underscoreTest1_underscore.ts, 458, 50)) +>contains : Symbol(Static.contains, Decl(underscoreTest1_underscore.ts, 456, 93), Decl(underscoreTest1_underscore.ts, 458, 50)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 458, 17)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 458, 20)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 458, 17)) @@ -4015,7 +4015,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 458, 17)) contains(list: Dictionary, value: T): boolean; ->contains : Symbol(contains, Decl(underscoreTest1_underscore.ts, 456, 93), Decl(underscoreTest1_underscore.ts, 458, 50)) +>contains : Symbol(Static.contains, Decl(underscoreTest1_underscore.ts, 456, 93), Decl(underscoreTest1_underscore.ts, 458, 50)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 459, 17)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 459, 20)) >Dictionary : Symbol(Dictionary, Decl(underscoreTest1_underscore.ts, 0, 0)) @@ -4024,7 +4024,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 459, 17)) include(list: T[], value: T): boolean; ->include : Symbol(include, Decl(underscoreTest1_underscore.ts, 459, 60), Decl(underscoreTest1_underscore.ts, 460, 49)) +>include : Symbol(Static.include, Decl(underscoreTest1_underscore.ts, 459, 60), Decl(underscoreTest1_underscore.ts, 460, 49)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 460, 16)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 460, 19)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 460, 16)) @@ -4032,7 +4032,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 460, 16)) include(list: Dictionary, value: T): boolean; ->include : Symbol(include, Decl(underscoreTest1_underscore.ts, 459, 60), Decl(underscoreTest1_underscore.ts, 460, 49)) +>include : Symbol(Static.include, Decl(underscoreTest1_underscore.ts, 459, 60), Decl(underscoreTest1_underscore.ts, 460, 49)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 461, 16)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 461, 19)) >Dictionary : Symbol(Dictionary, Decl(underscoreTest1_underscore.ts, 0, 0)) @@ -4041,31 +4041,31 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 461, 16)) invoke(list: any[], methodName: string, ...args: any[]): any[]; ->invoke : Symbol(invoke, Decl(underscoreTest1_underscore.ts, 461, 59), Decl(underscoreTest1_underscore.ts, 463, 71)) +>invoke : Symbol(Static.invoke, Decl(underscoreTest1_underscore.ts, 461, 59), Decl(underscoreTest1_underscore.ts, 463, 71)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 463, 15)) >methodName : Symbol(methodName, Decl(underscoreTest1_underscore.ts, 463, 27)) >args : Symbol(args, Decl(underscoreTest1_underscore.ts, 463, 47)) invoke(list: Dictionary, methodName: string, ...args: any[]): any[]; ->invoke : Symbol(invoke, Decl(underscoreTest1_underscore.ts, 461, 59), Decl(underscoreTest1_underscore.ts, 463, 71)) +>invoke : Symbol(Static.invoke, Decl(underscoreTest1_underscore.ts, 461, 59), Decl(underscoreTest1_underscore.ts, 463, 71)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 464, 15)) >Dictionary : Symbol(Dictionary, Decl(underscoreTest1_underscore.ts, 0, 0)) >methodName : Symbol(methodName, Decl(underscoreTest1_underscore.ts, 464, 37)) >args : Symbol(args, Decl(underscoreTest1_underscore.ts, 464, 57)) pluck(list: any[], propertyName: string): any[]; ->pluck : Symbol(pluck, Decl(underscoreTest1_underscore.ts, 464, 81), Decl(underscoreTest1_underscore.ts, 466, 56)) +>pluck : Symbol(Static.pluck, Decl(underscoreTest1_underscore.ts, 464, 81), Decl(underscoreTest1_underscore.ts, 466, 56)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 466, 14)) >propertyName : Symbol(propertyName, Decl(underscoreTest1_underscore.ts, 466, 26)) pluck(list: Dictionary, propertyName: string): any[]; ->pluck : Symbol(pluck, Decl(underscoreTest1_underscore.ts, 464, 81), Decl(underscoreTest1_underscore.ts, 466, 56)) +>pluck : Symbol(Static.pluck, Decl(underscoreTest1_underscore.ts, 464, 81), Decl(underscoreTest1_underscore.ts, 466, 56)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 467, 14)) >Dictionary : Symbol(Dictionary, Decl(underscoreTest1_underscore.ts, 0, 0)) >propertyName : Symbol(propertyName, Decl(underscoreTest1_underscore.ts, 467, 36)) max(list: T[], iterator?: Iterator, context?: any): T; ->max : Symbol(max, Decl(underscoreTest1_underscore.ts, 467, 66), Decl(underscoreTest1_underscore.ts, 469, 73)) +>max : Symbol(Static.max, Decl(underscoreTest1_underscore.ts, 467, 66), Decl(underscoreTest1_underscore.ts, 469, 73)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 469, 12)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 469, 15)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 469, 12)) @@ -4076,7 +4076,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 469, 12)) max(list: Dictionary, iterator?: Iterator, context?: any): T; ->max : Symbol(max, Decl(underscoreTest1_underscore.ts, 467, 66), Decl(underscoreTest1_underscore.ts, 469, 73)) +>max : Symbol(Static.max, Decl(underscoreTest1_underscore.ts, 467, 66), Decl(underscoreTest1_underscore.ts, 469, 73)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 470, 12)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 470, 15)) >Dictionary : Symbol(Dictionary, Decl(underscoreTest1_underscore.ts, 0, 0)) @@ -4088,7 +4088,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 470, 12)) min(list: T[], iterator?: Iterator, context?: any): T; ->min : Symbol(min, Decl(underscoreTest1_underscore.ts, 470, 83), Decl(underscoreTest1_underscore.ts, 472, 73)) +>min : Symbol(Static.min, Decl(underscoreTest1_underscore.ts, 470, 83), Decl(underscoreTest1_underscore.ts, 472, 73)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 472, 12)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 472, 15)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 472, 12)) @@ -4099,7 +4099,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 472, 12)) min(list: Dictionary, iterator?: Iterator, context?: any): T; ->min : Symbol(min, Decl(underscoreTest1_underscore.ts, 470, 83), Decl(underscoreTest1_underscore.ts, 472, 73)) +>min : Symbol(Static.min, Decl(underscoreTest1_underscore.ts, 470, 83), Decl(underscoreTest1_underscore.ts, 472, 73)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 473, 12)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 473, 15)) >Dictionary : Symbol(Dictionary, Decl(underscoreTest1_underscore.ts, 0, 0)) @@ -4111,7 +4111,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 473, 12)) sortBy(list: T[], iterator: Iterator, context?: any): T[]; ->sortBy : Symbol(sortBy, Decl(underscoreTest1_underscore.ts, 473, 83), Decl(underscoreTest1_underscore.ts, 475, 77), Decl(underscoreTest1_underscore.ts, 476, 87), Decl(underscoreTest1_underscore.ts, 477, 56)) +>sortBy : Symbol(Static.sortBy, Decl(underscoreTest1_underscore.ts, 473, 83), Decl(underscoreTest1_underscore.ts, 475, 77), Decl(underscoreTest1_underscore.ts, 476, 87), Decl(underscoreTest1_underscore.ts, 477, 56)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 475, 15)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 475, 18)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 475, 15)) @@ -4122,7 +4122,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 475, 15)) sortBy(list: Dictionary, iterator: Iterator, context?: any): T[]; ->sortBy : Symbol(sortBy, Decl(underscoreTest1_underscore.ts, 473, 83), Decl(underscoreTest1_underscore.ts, 475, 77), Decl(underscoreTest1_underscore.ts, 476, 87), Decl(underscoreTest1_underscore.ts, 477, 56)) +>sortBy : Symbol(Static.sortBy, Decl(underscoreTest1_underscore.ts, 473, 83), Decl(underscoreTest1_underscore.ts, 475, 77), Decl(underscoreTest1_underscore.ts, 476, 87), Decl(underscoreTest1_underscore.ts, 477, 56)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 476, 15)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 476, 18)) >Dictionary : Symbol(Dictionary, Decl(underscoreTest1_underscore.ts, 0, 0)) @@ -4134,7 +4134,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 476, 15)) sortBy(list: T[], propertyName: string): T[]; ->sortBy : Symbol(sortBy, Decl(underscoreTest1_underscore.ts, 473, 83), Decl(underscoreTest1_underscore.ts, 475, 77), Decl(underscoreTest1_underscore.ts, 476, 87), Decl(underscoreTest1_underscore.ts, 477, 56)) +>sortBy : Symbol(Static.sortBy, Decl(underscoreTest1_underscore.ts, 473, 83), Decl(underscoreTest1_underscore.ts, 475, 77), Decl(underscoreTest1_underscore.ts, 476, 87), Decl(underscoreTest1_underscore.ts, 477, 56)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 477, 15)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 477, 18)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 477, 15)) @@ -4142,7 +4142,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 477, 15)) sortBy(list: Dictionary, propertyName: string): T[]; ->sortBy : Symbol(sortBy, Decl(underscoreTest1_underscore.ts, 473, 83), Decl(underscoreTest1_underscore.ts, 475, 77), Decl(underscoreTest1_underscore.ts, 476, 87), Decl(underscoreTest1_underscore.ts, 477, 56)) +>sortBy : Symbol(Static.sortBy, Decl(underscoreTest1_underscore.ts, 473, 83), Decl(underscoreTest1_underscore.ts, 475, 77), Decl(underscoreTest1_underscore.ts, 476, 87), Decl(underscoreTest1_underscore.ts, 477, 56)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 478, 15)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 478, 18)) >Dictionary : Symbol(Dictionary, Decl(underscoreTest1_underscore.ts, 0, 0)) @@ -4151,7 +4151,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 478, 15)) groupBy(list: T[], iterator?: Iterator, context?: any): Dictionary; ->groupBy : Symbol(groupBy, Decl(underscoreTest1_underscore.ts, 478, 66), Decl(underscoreTest1_underscore.ts, 480, 91), Decl(underscoreTest1_underscore.ts, 481, 101), Decl(underscoreTest1_underscore.ts, 482, 69)) +>groupBy : Symbol(Static.groupBy, Decl(underscoreTest1_underscore.ts, 478, 66), Decl(underscoreTest1_underscore.ts, 480, 91), Decl(underscoreTest1_underscore.ts, 481, 101), Decl(underscoreTest1_underscore.ts, 482, 69)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 480, 16)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 480, 19)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 480, 16)) @@ -4163,7 +4163,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 480, 16)) groupBy(list: Dictionary, iterator?: Iterator, context?: any): Dictionary; ->groupBy : Symbol(groupBy, Decl(underscoreTest1_underscore.ts, 478, 66), Decl(underscoreTest1_underscore.ts, 480, 91), Decl(underscoreTest1_underscore.ts, 481, 101), Decl(underscoreTest1_underscore.ts, 482, 69)) +>groupBy : Symbol(Static.groupBy, Decl(underscoreTest1_underscore.ts, 478, 66), Decl(underscoreTest1_underscore.ts, 480, 91), Decl(underscoreTest1_underscore.ts, 481, 101), Decl(underscoreTest1_underscore.ts, 482, 69)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 481, 16)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 481, 19)) >Dictionary : Symbol(Dictionary, Decl(underscoreTest1_underscore.ts, 0, 0)) @@ -4176,7 +4176,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 481, 16)) groupBy(list: T[], propertyName: string): Dictionary; ->groupBy : Symbol(groupBy, Decl(underscoreTest1_underscore.ts, 478, 66), Decl(underscoreTest1_underscore.ts, 480, 91), Decl(underscoreTest1_underscore.ts, 481, 101), Decl(underscoreTest1_underscore.ts, 482, 69)) +>groupBy : Symbol(Static.groupBy, Decl(underscoreTest1_underscore.ts, 478, 66), Decl(underscoreTest1_underscore.ts, 480, 91), Decl(underscoreTest1_underscore.ts, 481, 101), Decl(underscoreTest1_underscore.ts, 482, 69)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 482, 16)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 482, 19)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 482, 16)) @@ -4185,7 +4185,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 482, 16)) groupBy(list: Dictionary, propertyName: string): Dictionary; ->groupBy : Symbol(groupBy, Decl(underscoreTest1_underscore.ts, 478, 66), Decl(underscoreTest1_underscore.ts, 480, 91), Decl(underscoreTest1_underscore.ts, 481, 101), Decl(underscoreTest1_underscore.ts, 482, 69)) +>groupBy : Symbol(Static.groupBy, Decl(underscoreTest1_underscore.ts, 478, 66), Decl(underscoreTest1_underscore.ts, 480, 91), Decl(underscoreTest1_underscore.ts, 481, 101), Decl(underscoreTest1_underscore.ts, 482, 69)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 483, 16)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 483, 19)) >Dictionary : Symbol(Dictionary, Decl(underscoreTest1_underscore.ts, 0, 0)) @@ -4195,7 +4195,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 483, 16)) countBy(list: T[], iterator?: Iterator, context?: any): Dictionary; ->countBy : Symbol(countBy, Decl(underscoreTest1_underscore.ts, 483, 79), Decl(underscoreTest1_underscore.ts, 485, 94), Decl(underscoreTest1_underscore.ts, 486, 104), Decl(underscoreTest1_underscore.ts, 487, 72)) +>countBy : Symbol(Static.countBy, Decl(underscoreTest1_underscore.ts, 483, 79), Decl(underscoreTest1_underscore.ts, 485, 94), Decl(underscoreTest1_underscore.ts, 486, 104), Decl(underscoreTest1_underscore.ts, 487, 72)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 485, 16)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 485, 19)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 485, 16)) @@ -4206,7 +4206,7 @@ module Underscore { >Dictionary : Symbol(Dictionary, Decl(underscoreTest1_underscore.ts, 0, 0)) countBy(list: Dictionary, iterator?: Iterator, context?: any): Dictionary; ->countBy : Symbol(countBy, Decl(underscoreTest1_underscore.ts, 483, 79), Decl(underscoreTest1_underscore.ts, 485, 94), Decl(underscoreTest1_underscore.ts, 486, 104), Decl(underscoreTest1_underscore.ts, 487, 72)) +>countBy : Symbol(Static.countBy, Decl(underscoreTest1_underscore.ts, 483, 79), Decl(underscoreTest1_underscore.ts, 485, 94), Decl(underscoreTest1_underscore.ts, 486, 104), Decl(underscoreTest1_underscore.ts, 487, 72)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 486, 16)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 486, 19)) >Dictionary : Symbol(Dictionary, Decl(underscoreTest1_underscore.ts, 0, 0)) @@ -4218,7 +4218,7 @@ module Underscore { >Dictionary : Symbol(Dictionary, Decl(underscoreTest1_underscore.ts, 0, 0)) countBy(list: T[], propertyName: string): Dictionary; ->countBy : Symbol(countBy, Decl(underscoreTest1_underscore.ts, 483, 79), Decl(underscoreTest1_underscore.ts, 485, 94), Decl(underscoreTest1_underscore.ts, 486, 104), Decl(underscoreTest1_underscore.ts, 487, 72)) +>countBy : Symbol(Static.countBy, Decl(underscoreTest1_underscore.ts, 483, 79), Decl(underscoreTest1_underscore.ts, 485, 94), Decl(underscoreTest1_underscore.ts, 486, 104), Decl(underscoreTest1_underscore.ts, 487, 72)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 487, 16)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 487, 19)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 487, 16)) @@ -4226,7 +4226,7 @@ module Underscore { >Dictionary : Symbol(Dictionary, Decl(underscoreTest1_underscore.ts, 0, 0)) countBy(list: Dictionary, propertyName: string): Dictionary; ->countBy : Symbol(countBy, Decl(underscoreTest1_underscore.ts, 483, 79), Decl(underscoreTest1_underscore.ts, 485, 94), Decl(underscoreTest1_underscore.ts, 486, 104), Decl(underscoreTest1_underscore.ts, 487, 72)) +>countBy : Symbol(Static.countBy, Decl(underscoreTest1_underscore.ts, 483, 79), Decl(underscoreTest1_underscore.ts, 485, 94), Decl(underscoreTest1_underscore.ts, 486, 104), Decl(underscoreTest1_underscore.ts, 487, 72)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 488, 16)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 488, 19)) >Dictionary : Symbol(Dictionary, Decl(underscoreTest1_underscore.ts, 0, 0)) @@ -4235,14 +4235,14 @@ module Underscore { >Dictionary : Symbol(Dictionary, Decl(underscoreTest1_underscore.ts, 0, 0)) shuffle(list: T[]): T[]; ->shuffle : Symbol(shuffle, Decl(underscoreTest1_underscore.ts, 488, 82), Decl(underscoreTest1_underscore.ts, 490, 35)) +>shuffle : Symbol(Static.shuffle, Decl(underscoreTest1_underscore.ts, 488, 82), Decl(underscoreTest1_underscore.ts, 490, 35)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 490, 16)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 490, 19)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 490, 16)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 490, 16)) shuffle(list: Dictionary): T[]; ->shuffle : Symbol(shuffle, Decl(underscoreTest1_underscore.ts, 488, 82), Decl(underscoreTest1_underscore.ts, 490, 35)) +>shuffle : Symbol(Static.shuffle, Decl(underscoreTest1_underscore.ts, 488, 82), Decl(underscoreTest1_underscore.ts, 490, 35)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 491, 16)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 491, 19)) >Dictionary : Symbol(Dictionary, Decl(underscoreTest1_underscore.ts, 0, 0)) @@ -4250,14 +4250,14 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 491, 16)) toArray(list: T[]): T[]; ->toArray : Symbol(toArray, Decl(underscoreTest1_underscore.ts, 491, 45), Decl(underscoreTest1_underscore.ts, 493, 35)) +>toArray : Symbol(Static.toArray, Decl(underscoreTest1_underscore.ts, 491, 45), Decl(underscoreTest1_underscore.ts, 493, 35)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 493, 16)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 493, 19)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 493, 16)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 493, 16)) toArray(list: Dictionary): T[]; ->toArray : Symbol(toArray, Decl(underscoreTest1_underscore.ts, 491, 45), Decl(underscoreTest1_underscore.ts, 493, 35)) +>toArray : Symbol(Static.toArray, Decl(underscoreTest1_underscore.ts, 491, 45), Decl(underscoreTest1_underscore.ts, 493, 35)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 494, 16)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 494, 19)) >Dictionary : Symbol(Dictionary, Decl(underscoreTest1_underscore.ts, 0, 0)) @@ -4265,27 +4265,27 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 494, 16)) size(list: T[]): number; ->size : Symbol(size, Decl(underscoreTest1_underscore.ts, 494, 45), Decl(underscoreTest1_underscore.ts, 496, 35)) +>size : Symbol(Static.size, Decl(underscoreTest1_underscore.ts, 494, 45), Decl(underscoreTest1_underscore.ts, 496, 35)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 496, 13)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 496, 16)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 496, 13)) size(list: Dictionary): number; ->size : Symbol(size, Decl(underscoreTest1_underscore.ts, 494, 45), Decl(underscoreTest1_underscore.ts, 496, 35)) +>size : Symbol(Static.size, Decl(underscoreTest1_underscore.ts, 494, 45), Decl(underscoreTest1_underscore.ts, 496, 35)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 497, 13)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 497, 16)) >Dictionary : Symbol(Dictionary, Decl(underscoreTest1_underscore.ts, 0, 0)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 497, 13)) first(list: T[]): T; ->first : Symbol(first, Decl(underscoreTest1_underscore.ts, 497, 45), Decl(underscoreTest1_underscore.ts, 499, 31)) +>first : Symbol(Static.first, Decl(underscoreTest1_underscore.ts, 497, 45), Decl(underscoreTest1_underscore.ts, 499, 31)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 499, 14)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 499, 17)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 499, 14)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 499, 14)) first(list: T[], count: number): T[]; ->first : Symbol(first, Decl(underscoreTest1_underscore.ts, 497, 45), Decl(underscoreTest1_underscore.ts, 499, 31)) +>first : Symbol(Static.first, Decl(underscoreTest1_underscore.ts, 497, 45), Decl(underscoreTest1_underscore.ts, 499, 31)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 500, 14)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 500, 17)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 500, 14)) @@ -4293,14 +4293,14 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 500, 14)) head(list: T[]): T; ->head : Symbol(head, Decl(underscoreTest1_underscore.ts, 500, 48), Decl(underscoreTest1_underscore.ts, 501, 30)) +>head : Symbol(Static.head, Decl(underscoreTest1_underscore.ts, 500, 48), Decl(underscoreTest1_underscore.ts, 501, 30)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 501, 13)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 501, 16)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 501, 13)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 501, 13)) head(list: T[], count: number): T[]; ->head : Symbol(head, Decl(underscoreTest1_underscore.ts, 500, 48), Decl(underscoreTest1_underscore.ts, 501, 30)) +>head : Symbol(Static.head, Decl(underscoreTest1_underscore.ts, 500, 48), Decl(underscoreTest1_underscore.ts, 501, 30)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 502, 13)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 502, 16)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 502, 13)) @@ -4308,14 +4308,14 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 502, 13)) take(list: T[]): T; ->take : Symbol(take, Decl(underscoreTest1_underscore.ts, 502, 47), Decl(underscoreTest1_underscore.ts, 503, 30)) +>take : Symbol(Static.take, Decl(underscoreTest1_underscore.ts, 502, 47), Decl(underscoreTest1_underscore.ts, 503, 30)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 503, 13)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 503, 16)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 503, 13)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 503, 13)) take(list: T[], count: number): T[]; ->take : Symbol(take, Decl(underscoreTest1_underscore.ts, 502, 47), Decl(underscoreTest1_underscore.ts, 503, 30)) +>take : Symbol(Static.take, Decl(underscoreTest1_underscore.ts, 502, 47), Decl(underscoreTest1_underscore.ts, 503, 30)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 504, 13)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 504, 16)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 504, 13)) @@ -4323,14 +4323,14 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 504, 13)) initial(list: T[]): T; ->initial : Symbol(initial, Decl(underscoreTest1_underscore.ts, 504, 47), Decl(underscoreTest1_underscore.ts, 506, 33)) +>initial : Symbol(Static.initial, Decl(underscoreTest1_underscore.ts, 504, 47), Decl(underscoreTest1_underscore.ts, 506, 33)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 506, 16)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 506, 19)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 506, 16)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 506, 16)) initial(list: T[], count: number): T[]; ->initial : Symbol(initial, Decl(underscoreTest1_underscore.ts, 504, 47), Decl(underscoreTest1_underscore.ts, 506, 33)) +>initial : Symbol(Static.initial, Decl(underscoreTest1_underscore.ts, 504, 47), Decl(underscoreTest1_underscore.ts, 506, 33)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 507, 16)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 507, 19)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 507, 16)) @@ -4338,14 +4338,14 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 507, 16)) last(list: T[]): T; ->last : Symbol(last, Decl(underscoreTest1_underscore.ts, 507, 50), Decl(underscoreTest1_underscore.ts, 509, 30)) +>last : Symbol(Static.last, Decl(underscoreTest1_underscore.ts, 507, 50), Decl(underscoreTest1_underscore.ts, 509, 30)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 509, 13)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 509, 16)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 509, 13)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 509, 13)) last(list: T[], count: number): T[]; ->last : Symbol(last, Decl(underscoreTest1_underscore.ts, 507, 50), Decl(underscoreTest1_underscore.ts, 509, 30)) +>last : Symbol(Static.last, Decl(underscoreTest1_underscore.ts, 507, 50), Decl(underscoreTest1_underscore.ts, 509, 30)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 510, 13)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 510, 16)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 510, 13)) @@ -4353,7 +4353,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 510, 13)) rest(list: T[], index?: number): T[]; ->rest : Symbol(rest, Decl(underscoreTest1_underscore.ts, 510, 47)) +>rest : Symbol(Static.rest, Decl(underscoreTest1_underscore.ts, 510, 47)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 512, 13)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 512, 16)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 512, 13)) @@ -4361,28 +4361,28 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 512, 13)) compact(list: T[]): T[]; ->compact : Symbol(compact, Decl(underscoreTest1_underscore.ts, 512, 48)) +>compact : Symbol(Static.compact, Decl(underscoreTest1_underscore.ts, 512, 48)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 514, 16)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 514, 19)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 514, 16)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 514, 16)) flatten(list: T[][]): T[]; ->flatten : Symbol(flatten, Decl(underscoreTest1_underscore.ts, 514, 35), Decl(underscoreTest1_underscore.ts, 516, 37)) +>flatten : Symbol(Static.flatten, Decl(underscoreTest1_underscore.ts, 514, 35), Decl(underscoreTest1_underscore.ts, 516, 37)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 516, 16)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 516, 19)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 516, 16)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 516, 16)) flatten(array: any[], shallow?: boolean): T[]; ->flatten : Symbol(flatten, Decl(underscoreTest1_underscore.ts, 514, 35), Decl(underscoreTest1_underscore.ts, 516, 37)) +>flatten : Symbol(Static.flatten, Decl(underscoreTest1_underscore.ts, 514, 35), Decl(underscoreTest1_underscore.ts, 516, 37)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 517, 16)) >array : Symbol(array, Decl(underscoreTest1_underscore.ts, 517, 19)) >shallow : Symbol(shallow, Decl(underscoreTest1_underscore.ts, 517, 32)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 517, 16)) without(list: T[], ...values: T[]): T[]; ->without : Symbol(without, Decl(underscoreTest1_underscore.ts, 517, 57)) +>without : Symbol(Static.without, Decl(underscoreTest1_underscore.ts, 517, 57)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 519, 16)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 519, 19)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 519, 16)) @@ -4391,21 +4391,21 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 519, 16)) union(...arrays: T[][]): T[]; ->union : Symbol(union, Decl(underscoreTest1_underscore.ts, 519, 51)) +>union : Symbol(Static.union, Decl(underscoreTest1_underscore.ts, 519, 51)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 521, 14)) >arrays : Symbol(arrays, Decl(underscoreTest1_underscore.ts, 521, 17)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 521, 14)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 521, 14)) intersection(...arrays: T[][]): T[]; ->intersection : Symbol(intersection, Decl(underscoreTest1_underscore.ts, 521, 40)) +>intersection : Symbol(Static.intersection, Decl(underscoreTest1_underscore.ts, 521, 40)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 523, 21)) >arrays : Symbol(arrays, Decl(underscoreTest1_underscore.ts, 523, 24)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 523, 21)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 523, 21)) difference(list: T[], ...others: T[][]): T[]; ->difference : Symbol(difference, Decl(underscoreTest1_underscore.ts, 523, 47)) +>difference : Symbol(Static.difference, Decl(underscoreTest1_underscore.ts, 523, 47)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 525, 19)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 525, 22)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 525, 19)) @@ -4414,7 +4414,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 525, 19)) uniq(list: T[], isSorted?: boolean): T[]; ->uniq : Symbol(uniq, Decl(underscoreTest1_underscore.ts, 525, 56), Decl(underscoreTest1_underscore.ts, 527, 52)) +>uniq : Symbol(Static.uniq, Decl(underscoreTest1_underscore.ts, 525, 56), Decl(underscoreTest1_underscore.ts, 527, 52)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 527, 13)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 527, 16)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 527, 13)) @@ -4422,7 +4422,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 527, 13)) uniq(list: T[], isSorted: boolean, iterator: Iterator, context?: any): U[]; ->uniq : Symbol(uniq, Decl(underscoreTest1_underscore.ts, 525, 56), Decl(underscoreTest1_underscore.ts, 527, 52)) +>uniq : Symbol(Static.uniq, Decl(underscoreTest1_underscore.ts, 525, 56), Decl(underscoreTest1_underscore.ts, 527, 52)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 528, 13)) >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 528, 15)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 528, 19)) @@ -4436,7 +4436,7 @@ module Underscore { >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 528, 15)) unique(list: T[], isSorted?: boolean): T[]; ->unique : Symbol(unique, Decl(underscoreTest1_underscore.ts, 528, 95), Decl(underscoreTest1_underscore.ts, 529, 54)) +>unique : Symbol(Static.unique, Decl(underscoreTest1_underscore.ts, 528, 95), Decl(underscoreTest1_underscore.ts, 529, 54)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 529, 15)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 529, 18)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 529, 15)) @@ -4444,7 +4444,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 529, 15)) unique(list: T[], isSorted: boolean, iterator: Iterator, context?: any): U[]; ->unique : Symbol(unique, Decl(underscoreTest1_underscore.ts, 528, 95), Decl(underscoreTest1_underscore.ts, 529, 54)) +>unique : Symbol(Static.unique, Decl(underscoreTest1_underscore.ts, 528, 95), Decl(underscoreTest1_underscore.ts, 529, 54)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 530, 15)) >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 530, 17)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 530, 21)) @@ -4458,7 +4458,7 @@ module Underscore { >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 530, 17)) zip(a0: T0[], a1: T1[]): Tuple2[]; ->zip : Symbol(zip, Decl(underscoreTest1_underscore.ts, 530, 97), Decl(underscoreTest1_underscore.ts, 532, 58), Decl(underscoreTest1_underscore.ts, 533, 76), Decl(underscoreTest1_underscore.ts, 534, 94)) +>zip : Symbol(Static.zip, Decl(underscoreTest1_underscore.ts, 530, 97), Decl(underscoreTest1_underscore.ts, 532, 58), Decl(underscoreTest1_underscore.ts, 533, 76), Decl(underscoreTest1_underscore.ts, 534, 94)) >T0 : Symbol(T0, Decl(underscoreTest1_underscore.ts, 532, 12)) >T1 : Symbol(T1, Decl(underscoreTest1_underscore.ts, 532, 15)) >a0 : Symbol(a0, Decl(underscoreTest1_underscore.ts, 532, 20)) @@ -4470,7 +4470,7 @@ module Underscore { >T1 : Symbol(T1, Decl(underscoreTest1_underscore.ts, 532, 15)) zip(a0: T0[], a1: T1[], a2: T2[]): Tuple3[]; ->zip : Symbol(zip, Decl(underscoreTest1_underscore.ts, 530, 97), Decl(underscoreTest1_underscore.ts, 532, 58), Decl(underscoreTest1_underscore.ts, 533, 76), Decl(underscoreTest1_underscore.ts, 534, 94)) +>zip : Symbol(Static.zip, Decl(underscoreTest1_underscore.ts, 530, 97), Decl(underscoreTest1_underscore.ts, 532, 58), Decl(underscoreTest1_underscore.ts, 533, 76), Decl(underscoreTest1_underscore.ts, 534, 94)) >T0 : Symbol(T0, Decl(underscoreTest1_underscore.ts, 533, 12)) >T1 : Symbol(T1, Decl(underscoreTest1_underscore.ts, 533, 15)) >T2 : Symbol(T2, Decl(underscoreTest1_underscore.ts, 533, 19)) @@ -4486,7 +4486,7 @@ module Underscore { >T2 : Symbol(T2, Decl(underscoreTest1_underscore.ts, 533, 19)) zip(a0: T0[], a1: T1[], a2: T2[], a3: T3[]): Tuple4[]; ->zip : Symbol(zip, Decl(underscoreTest1_underscore.ts, 530, 97), Decl(underscoreTest1_underscore.ts, 532, 58), Decl(underscoreTest1_underscore.ts, 533, 76), Decl(underscoreTest1_underscore.ts, 534, 94)) +>zip : Symbol(Static.zip, Decl(underscoreTest1_underscore.ts, 530, 97), Decl(underscoreTest1_underscore.ts, 532, 58), Decl(underscoreTest1_underscore.ts, 533, 76), Decl(underscoreTest1_underscore.ts, 534, 94)) >T0 : Symbol(T0, Decl(underscoreTest1_underscore.ts, 534, 12)) >T1 : Symbol(T1, Decl(underscoreTest1_underscore.ts, 534, 15)) >T2 : Symbol(T2, Decl(underscoreTest1_underscore.ts, 534, 19)) @@ -4506,20 +4506,20 @@ module Underscore { >T3 : Symbol(T3, Decl(underscoreTest1_underscore.ts, 534, 23)) zip(...arrays: any[][]): any[][]; ->zip : Symbol(zip, Decl(underscoreTest1_underscore.ts, 530, 97), Decl(underscoreTest1_underscore.ts, 532, 58), Decl(underscoreTest1_underscore.ts, 533, 76), Decl(underscoreTest1_underscore.ts, 534, 94)) +>zip : Symbol(Static.zip, Decl(underscoreTest1_underscore.ts, 530, 97), Decl(underscoreTest1_underscore.ts, 532, 58), Decl(underscoreTest1_underscore.ts, 533, 76), Decl(underscoreTest1_underscore.ts, 534, 94)) >arrays : Symbol(arrays, Decl(underscoreTest1_underscore.ts, 535, 12)) object(list: any[][]): any; ->object : Symbol(object, Decl(underscoreTest1_underscore.ts, 535, 41), Decl(underscoreTest1_underscore.ts, 537, 35)) +>object : Symbol(Static.object, Decl(underscoreTest1_underscore.ts, 535, 41), Decl(underscoreTest1_underscore.ts, 537, 35)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 537, 15)) object(keys: string[], values: any[]): any; ->object : Symbol(object, Decl(underscoreTest1_underscore.ts, 535, 41), Decl(underscoreTest1_underscore.ts, 537, 35)) +>object : Symbol(Static.object, Decl(underscoreTest1_underscore.ts, 535, 41), Decl(underscoreTest1_underscore.ts, 537, 35)) >keys : Symbol(keys, Decl(underscoreTest1_underscore.ts, 538, 15)) >values : Symbol(values, Decl(underscoreTest1_underscore.ts, 538, 30)) indexOf(list: T[], value: T, isSorted?: boolean): number; ->indexOf : Symbol(indexOf, Decl(underscoreTest1_underscore.ts, 538, 51)) +>indexOf : Symbol(Static.indexOf, Decl(underscoreTest1_underscore.ts, 538, 51)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 540, 16)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 540, 19)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 540, 16)) @@ -4528,7 +4528,7 @@ module Underscore { >isSorted : Symbol(isSorted, Decl(underscoreTest1_underscore.ts, 540, 39)) lastIndexOf(list: T[], value: T, fromIndex?: number): number; ->lastIndexOf : Symbol(lastIndexOf, Decl(underscoreTest1_underscore.ts, 540, 68)) +>lastIndexOf : Symbol(Static.lastIndexOf, Decl(underscoreTest1_underscore.ts, 540, 68)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 542, 20)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 542, 23)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 542, 20)) @@ -4537,7 +4537,7 @@ module Underscore { >fromIndex : Symbol(fromIndex, Decl(underscoreTest1_underscore.ts, 542, 43)) sortedIndex(list: T[], obj: T, propertyName: string): number; ->sortedIndex : Symbol(sortedIndex, Decl(underscoreTest1_underscore.ts, 542, 72), Decl(underscoreTest1_underscore.ts, 544, 72)) +>sortedIndex : Symbol(Static.sortedIndex, Decl(underscoreTest1_underscore.ts, 542, 72), Decl(underscoreTest1_underscore.ts, 544, 72)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 544, 20)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 544, 23)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 544, 20)) @@ -4546,7 +4546,7 @@ module Underscore { >propertyName : Symbol(propertyName, Decl(underscoreTest1_underscore.ts, 544, 41)) sortedIndex(list: T[], obj: T, iterator?: Iterator, context?: any): number; ->sortedIndex : Symbol(sortedIndex, Decl(underscoreTest1_underscore.ts, 542, 72), Decl(underscoreTest1_underscore.ts, 544, 72)) +>sortedIndex : Symbol(Static.sortedIndex, Decl(underscoreTest1_underscore.ts, 542, 72), Decl(underscoreTest1_underscore.ts, 544, 72)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 545, 20)) >list : Symbol(list, Decl(underscoreTest1_underscore.ts, 545, 23)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 545, 20)) @@ -4558,17 +4558,17 @@ module Underscore { >context : Symbol(context, Decl(underscoreTest1_underscore.ts, 545, 70)) range(stop: number): number[]; ->range : Symbol(range, Decl(underscoreTest1_underscore.ts, 545, 94), Decl(underscoreTest1_underscore.ts, 547, 38)) +>range : Symbol(Static.range, Decl(underscoreTest1_underscore.ts, 545, 94), Decl(underscoreTest1_underscore.ts, 547, 38)) >stop : Symbol(stop, Decl(underscoreTest1_underscore.ts, 547, 14)) range(start: number, stop: number, step?: number): number[]; ->range : Symbol(range, Decl(underscoreTest1_underscore.ts, 545, 94), Decl(underscoreTest1_underscore.ts, 547, 38)) +>range : Symbol(Static.range, Decl(underscoreTest1_underscore.ts, 545, 94), Decl(underscoreTest1_underscore.ts, 547, 38)) >start : Symbol(start, Decl(underscoreTest1_underscore.ts, 548, 14)) >stop : Symbol(stop, Decl(underscoreTest1_underscore.ts, 548, 28)) >step : Symbol(step, Decl(underscoreTest1_underscore.ts, 548, 42)) bind(func: T, object: any): T; ->bind : Symbol(bind, Decl(underscoreTest1_underscore.ts, 548, 68), Decl(underscoreTest1_underscore.ts, 550, 58)) +>bind : Symbol(Static.bind, Decl(underscoreTest1_underscore.ts, 548, 68), Decl(underscoreTest1_underscore.ts, 550, 58)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 550, 13)) >Function : Symbol(Function, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >func : Symbol(func, Decl(underscoreTest1_underscore.ts, 550, 33)) @@ -4577,7 +4577,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 550, 13)) bind(func: Function, object: any, ...args: any[]): Function; ->bind : Symbol(bind, Decl(underscoreTest1_underscore.ts, 548, 68), Decl(underscoreTest1_underscore.ts, 550, 58)) +>bind : Symbol(Static.bind, Decl(underscoreTest1_underscore.ts, 548, 68), Decl(underscoreTest1_underscore.ts, 550, 58)) >func : Symbol(func, Decl(underscoreTest1_underscore.ts, 551, 13)) >Function : Symbol(Function, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >object : Symbol(object, Decl(underscoreTest1_underscore.ts, 551, 28)) @@ -4585,7 +4585,7 @@ module Underscore { >Function : Symbol(Function, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) bindAll(object: T, ...methodNames: string[]): T; ->bindAll : Symbol(bindAll, Decl(underscoreTest1_underscore.ts, 551, 68)) +>bindAll : Symbol(Static.bindAll, Decl(underscoreTest1_underscore.ts, 551, 68)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 553, 16)) >object : Symbol(object, Decl(underscoreTest1_underscore.ts, 553, 19)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 553, 16)) @@ -4593,14 +4593,14 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 553, 16)) partial(func: Function, ...args: any[]): Function; ->partial : Symbol(partial, Decl(underscoreTest1_underscore.ts, 553, 59)) +>partial : Symbol(Static.partial, Decl(underscoreTest1_underscore.ts, 553, 59)) >func : Symbol(func, Decl(underscoreTest1_underscore.ts, 555, 16)) >Function : Symbol(Function, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >args : Symbol(args, Decl(underscoreTest1_underscore.ts, 555, 31)) >Function : Symbol(Function, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) memoize(func: T, hashFunction?: Function): T; ->memoize : Symbol(memoize, Decl(underscoreTest1_underscore.ts, 555, 58)) +>memoize : Symbol(Static.memoize, Decl(underscoreTest1_underscore.ts, 555, 58)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 557, 16)) >Function : Symbol(Function, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >func : Symbol(func, Decl(underscoreTest1_underscore.ts, 557, 36)) @@ -4610,20 +4610,20 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 557, 16)) delay(func: Function, wait: number, ...args: any[]): number; ->delay : Symbol(delay, Decl(underscoreTest1_underscore.ts, 557, 73)) +>delay : Symbol(Static.delay, Decl(underscoreTest1_underscore.ts, 557, 73)) >func : Symbol(func, Decl(underscoreTest1_underscore.ts, 559, 14)) >Function : Symbol(Function, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >wait : Symbol(wait, Decl(underscoreTest1_underscore.ts, 559, 29)) >args : Symbol(args, Decl(underscoreTest1_underscore.ts, 559, 43)) defer(func: Function, ...args: any[]): number; ->defer : Symbol(defer, Decl(underscoreTest1_underscore.ts, 559, 68)) +>defer : Symbol(Static.defer, Decl(underscoreTest1_underscore.ts, 559, 68)) >func : Symbol(func, Decl(underscoreTest1_underscore.ts, 561, 14)) >Function : Symbol(Function, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >args : Symbol(args, Decl(underscoreTest1_underscore.ts, 561, 29)) throttle(func: T, wait: number): T; ->throttle : Symbol(throttle, Decl(underscoreTest1_underscore.ts, 561, 54)) +>throttle : Symbol(Static.throttle, Decl(underscoreTest1_underscore.ts, 561, 54)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 563, 17)) >Function : Symbol(Function, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >func : Symbol(func, Decl(underscoreTest1_underscore.ts, 563, 37)) @@ -4632,7 +4632,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 563, 17)) debounce(func: T, wait: number, immediate?: boolean): T; ->debounce : Symbol(debounce, Decl(underscoreTest1_underscore.ts, 563, 63)) +>debounce : Symbol(Static.debounce, Decl(underscoreTest1_underscore.ts, 563, 63)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 565, 17)) >Function : Symbol(Function, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >func : Symbol(func, Decl(underscoreTest1_underscore.ts, 565, 37)) @@ -4642,7 +4642,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 565, 17)) once(func: T): T; ->once : Symbol(once, Decl(underscoreTest1_underscore.ts, 565, 84)) +>once : Symbol(Static.once, Decl(underscoreTest1_underscore.ts, 565, 84)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 567, 13)) >Function : Symbol(Function, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >func : Symbol(func, Decl(underscoreTest1_underscore.ts, 567, 33)) @@ -4650,7 +4650,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 567, 13)) after(count: number, func: T): T; ->after : Symbol(after, Decl(underscoreTest1_underscore.ts, 567, 45)) +>after : Symbol(Static.after, Decl(underscoreTest1_underscore.ts, 567, 45)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 569, 14)) >Function : Symbol(Function, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >count : Symbol(count, Decl(underscoreTest1_underscore.ts, 569, 34)) @@ -4659,7 +4659,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 569, 14)) wrap(func: T, wrapper: (func: T, ...args: any[]) => any): T; ->wrap : Symbol(wrap, Decl(underscoreTest1_underscore.ts, 569, 61)) +>wrap : Symbol(Static.wrap, Decl(underscoreTest1_underscore.ts, 569, 61)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 571, 13)) >Function : Symbol(Function, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >func : Symbol(func, Decl(underscoreTest1_underscore.ts, 571, 33)) @@ -4671,37 +4671,37 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 571, 13)) compose(...funcs: Function[]): Function; ->compose : Symbol(compose, Decl(underscoreTest1_underscore.ts, 571, 88)) +>compose : Symbol(Static.compose, Decl(underscoreTest1_underscore.ts, 571, 88)) >funcs : Symbol(funcs, Decl(underscoreTest1_underscore.ts, 573, 16)) >Function : Symbol(Function, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >Function : Symbol(Function, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) keys(object: any): string[]; ->keys : Symbol(keys, Decl(underscoreTest1_underscore.ts, 573, 48)) +>keys : Symbol(Static.keys, Decl(underscoreTest1_underscore.ts, 573, 48)) >object : Symbol(object, Decl(underscoreTest1_underscore.ts, 575, 13)) values(object: any): any[]; ->values : Symbol(values, Decl(underscoreTest1_underscore.ts, 575, 36)) +>values : Symbol(Static.values, Decl(underscoreTest1_underscore.ts, 575, 36)) >object : Symbol(object, Decl(underscoreTest1_underscore.ts, 577, 15)) pairs(object: any): any[][]; ->pairs : Symbol(pairs, Decl(underscoreTest1_underscore.ts, 577, 35)) +>pairs : Symbol(Static.pairs, Decl(underscoreTest1_underscore.ts, 577, 35)) >object : Symbol(object, Decl(underscoreTest1_underscore.ts, 579, 14)) invert(object: any): any; ->invert : Symbol(invert, Decl(underscoreTest1_underscore.ts, 579, 36)) +>invert : Symbol(Static.invert, Decl(underscoreTest1_underscore.ts, 579, 36)) >object : Symbol(object, Decl(underscoreTest1_underscore.ts, 581, 15)) functions(object: any): string[]; ->functions : Symbol(functions, Decl(underscoreTest1_underscore.ts, 581, 33)) +>functions : Symbol(Static.functions, Decl(underscoreTest1_underscore.ts, 581, 33)) >object : Symbol(object, Decl(underscoreTest1_underscore.ts, 583, 18)) methods(object: any): string[]; ->methods : Symbol(methods, Decl(underscoreTest1_underscore.ts, 583, 41)) +>methods : Symbol(Static.methods, Decl(underscoreTest1_underscore.ts, 583, 41)) >object : Symbol(object, Decl(underscoreTest1_underscore.ts, 584, 16)) extend(destination: T, ...sources: any[]): T; ->extend : Symbol(extend, Decl(underscoreTest1_underscore.ts, 584, 39)) +>extend : Symbol(Static.extend, Decl(underscoreTest1_underscore.ts, 584, 39)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 586, 15)) >destination : Symbol(destination, Decl(underscoreTest1_underscore.ts, 586, 18)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 586, 15)) @@ -4709,7 +4709,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 586, 15)) pick(object: T, ...keys: string[]): T; ->pick : Symbol(pick, Decl(underscoreTest1_underscore.ts, 586, 56)) +>pick : Symbol(Static.pick, Decl(underscoreTest1_underscore.ts, 586, 56)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 588, 13)) >object : Symbol(object, Decl(underscoreTest1_underscore.ts, 588, 16)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 588, 13)) @@ -4717,7 +4717,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 588, 13)) omit(object: T, ...keys: string[]): T; ->omit : Symbol(omit, Decl(underscoreTest1_underscore.ts, 588, 49)) +>omit : Symbol(Static.omit, Decl(underscoreTest1_underscore.ts, 588, 49)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 590, 13)) >object : Symbol(object, Decl(underscoreTest1_underscore.ts, 590, 16)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 590, 13)) @@ -4725,7 +4725,7 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 590, 13)) defaults(object: T, ...defaults: any[]): T; ->defaults : Symbol(defaults, Decl(underscoreTest1_underscore.ts, 590, 49)) +>defaults : Symbol(Static.defaults, Decl(underscoreTest1_underscore.ts, 590, 49)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 592, 17)) >object : Symbol(object, Decl(underscoreTest1_underscore.ts, 592, 20)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 592, 17)) @@ -4733,14 +4733,14 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 592, 17)) clone(object: T): T; ->clone : Symbol(clone, Decl(underscoreTest1_underscore.ts, 592, 54)) +>clone : Symbol(Static.clone, Decl(underscoreTest1_underscore.ts, 592, 54)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 594, 14)) >object : Symbol(object, Decl(underscoreTest1_underscore.ts, 594, 17)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 594, 14)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 594, 14)) tap(object: T, interceptor: (object: T) => void): T; ->tap : Symbol(tap, Decl(underscoreTest1_underscore.ts, 594, 31)) +>tap : Symbol(Static.tap, Decl(underscoreTest1_underscore.ts, 594, 31)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 596, 12)) >object : Symbol(object, Decl(underscoreTest1_underscore.ts, 596, 15)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 596, 12)) @@ -4750,12 +4750,12 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 596, 12)) has(object: any, key: string): boolean; ->has : Symbol(has, Decl(underscoreTest1_underscore.ts, 596, 63)) +>has : Symbol(Static.has, Decl(underscoreTest1_underscore.ts, 596, 63)) >object : Symbol(object, Decl(underscoreTest1_underscore.ts, 598, 12)) >key : Symbol(key, Decl(underscoreTest1_underscore.ts, 598, 24)) isEqual(object: T, other: T): boolean; ->isEqual : Symbol(isEqual, Decl(underscoreTest1_underscore.ts, 598, 47)) +>isEqual : Symbol(Static.isEqual, Decl(underscoreTest1_underscore.ts, 598, 47)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 600, 16)) >object : Symbol(object, Decl(underscoreTest1_underscore.ts, 600, 19)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 600, 16)) @@ -4763,78 +4763,78 @@ module Underscore { >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 600, 16)) isEmpty(object: any): boolean; ->isEmpty : Symbol(isEmpty, Decl(underscoreTest1_underscore.ts, 600, 49)) +>isEmpty : Symbol(Static.isEmpty, Decl(underscoreTest1_underscore.ts, 600, 49)) >object : Symbol(object, Decl(underscoreTest1_underscore.ts, 602, 16)) isElement(object: any): boolean; ->isElement : Symbol(isElement, Decl(underscoreTest1_underscore.ts, 602, 38)) +>isElement : Symbol(Static.isElement, Decl(underscoreTest1_underscore.ts, 602, 38)) >object : Symbol(object, Decl(underscoreTest1_underscore.ts, 603, 18)) isArray(object: any): boolean; ->isArray : Symbol(isArray, Decl(underscoreTest1_underscore.ts, 603, 40)) +>isArray : Symbol(Static.isArray, Decl(underscoreTest1_underscore.ts, 603, 40)) >object : Symbol(object, Decl(underscoreTest1_underscore.ts, 604, 16)) isObject(value: any): boolean; ->isObject : Symbol(isObject, Decl(underscoreTest1_underscore.ts, 604, 38)) +>isObject : Symbol(Static.isObject, Decl(underscoreTest1_underscore.ts, 604, 38)) >value : Symbol(value, Decl(underscoreTest1_underscore.ts, 605, 17)) isArguments(object: any): boolean; ->isArguments : Symbol(isArguments, Decl(underscoreTest1_underscore.ts, 605, 38)) +>isArguments : Symbol(Static.isArguments, Decl(underscoreTest1_underscore.ts, 605, 38)) >object : Symbol(object, Decl(underscoreTest1_underscore.ts, 606, 20)) isFunction(object: any): boolean; ->isFunction : Symbol(isFunction, Decl(underscoreTest1_underscore.ts, 606, 42)) +>isFunction : Symbol(Static.isFunction, Decl(underscoreTest1_underscore.ts, 606, 42)) >object : Symbol(object, Decl(underscoreTest1_underscore.ts, 607, 19)) isString(object: any): boolean; ->isString : Symbol(isString, Decl(underscoreTest1_underscore.ts, 607, 41)) +>isString : Symbol(Static.isString, Decl(underscoreTest1_underscore.ts, 607, 41)) >object : Symbol(object, Decl(underscoreTest1_underscore.ts, 608, 17)) isNumber(object: any): boolean; ->isNumber : Symbol(isNumber, Decl(underscoreTest1_underscore.ts, 608, 39)) +>isNumber : Symbol(Static.isNumber, Decl(underscoreTest1_underscore.ts, 608, 39)) >object : Symbol(object, Decl(underscoreTest1_underscore.ts, 609, 17)) isFinite(object: any): boolean; ->isFinite : Symbol(isFinite, Decl(underscoreTest1_underscore.ts, 609, 39)) +>isFinite : Symbol(Static.isFinite, Decl(underscoreTest1_underscore.ts, 609, 39)) >object : Symbol(object, Decl(underscoreTest1_underscore.ts, 610, 17)) isBoolean(object: any): boolean; ->isBoolean : Symbol(isBoolean, Decl(underscoreTest1_underscore.ts, 610, 39)) +>isBoolean : Symbol(Static.isBoolean, Decl(underscoreTest1_underscore.ts, 610, 39)) >object : Symbol(object, Decl(underscoreTest1_underscore.ts, 611, 18)) isDate(object: any): boolean; ->isDate : Symbol(isDate, Decl(underscoreTest1_underscore.ts, 611, 40)) +>isDate : Symbol(Static.isDate, Decl(underscoreTest1_underscore.ts, 611, 40)) >object : Symbol(object, Decl(underscoreTest1_underscore.ts, 612, 15)) isRegExp(object: any): boolean; ->isRegExp : Symbol(isRegExp, Decl(underscoreTest1_underscore.ts, 612, 37)) +>isRegExp : Symbol(Static.isRegExp, Decl(underscoreTest1_underscore.ts, 612, 37)) >object : Symbol(object, Decl(underscoreTest1_underscore.ts, 613, 17)) isNaN(object: any): boolean; ->isNaN : Symbol(isNaN, Decl(underscoreTest1_underscore.ts, 613, 39)) +>isNaN : Symbol(Static.isNaN, Decl(underscoreTest1_underscore.ts, 613, 39)) >object : Symbol(object, Decl(underscoreTest1_underscore.ts, 614, 14)) isNull(object: any): boolean; ->isNull : Symbol(isNull, Decl(underscoreTest1_underscore.ts, 614, 36)) +>isNull : Symbol(Static.isNull, Decl(underscoreTest1_underscore.ts, 614, 36)) >object : Symbol(object, Decl(underscoreTest1_underscore.ts, 615, 15)) isUndefined(value: any): boolean; ->isUndefined : Symbol(isUndefined, Decl(underscoreTest1_underscore.ts, 615, 37)) +>isUndefined : Symbol(Static.isUndefined, Decl(underscoreTest1_underscore.ts, 615, 37)) >value : Symbol(value, Decl(underscoreTest1_underscore.ts, 616, 20)) noConflict(): Static; ->noConflict : Symbol(noConflict, Decl(underscoreTest1_underscore.ts, 616, 41)) +>noConflict : Symbol(Static.noConflict, Decl(underscoreTest1_underscore.ts, 616, 41)) >Static : Symbol(Static, Decl(underscoreTest1_underscore.ts, 385, 5)) identity(value: T): T; ->identity : Symbol(identity, Decl(underscoreTest1_underscore.ts, 618, 29)) +>identity : Symbol(Static.identity, Decl(underscoreTest1_underscore.ts, 618, 29)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 620, 17)) >value : Symbol(value, Decl(underscoreTest1_underscore.ts, 620, 20)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 620, 17)) >T : Symbol(T, Decl(underscoreTest1_underscore.ts, 620, 17)) times(n: number, iterator: Iterator, context?: any): U[]; ->times : Symbol(times, Decl(underscoreTest1_underscore.ts, 620, 33)) +>times : Symbol(Static.times, Decl(underscoreTest1_underscore.ts, 620, 33)) >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 622, 14)) >n : Symbol(n, Decl(underscoreTest1_underscore.ts, 622, 17)) >iterator : Symbol(iterator, Decl(underscoreTest1_underscore.ts, 622, 27)) @@ -4844,49 +4844,49 @@ module Underscore { >U : Symbol(U, Decl(underscoreTest1_underscore.ts, 622, 14)) random(max: number): number; ->random : Symbol(random, Decl(underscoreTest1_underscore.ts, 622, 79), Decl(underscoreTest1_underscore.ts, 624, 36)) +>random : Symbol(Static.random, Decl(underscoreTest1_underscore.ts, 622, 79), Decl(underscoreTest1_underscore.ts, 624, 36)) >max : Symbol(max, Decl(underscoreTest1_underscore.ts, 624, 15)) random(min: number, max: number): number; ->random : Symbol(random, Decl(underscoreTest1_underscore.ts, 622, 79), Decl(underscoreTest1_underscore.ts, 624, 36)) +>random : Symbol(Static.random, Decl(underscoreTest1_underscore.ts, 622, 79), Decl(underscoreTest1_underscore.ts, 624, 36)) >min : Symbol(min, Decl(underscoreTest1_underscore.ts, 625, 15)) >max : Symbol(max, Decl(underscoreTest1_underscore.ts, 625, 27)) mixin(object: any): void; ->mixin : Symbol(mixin, Decl(underscoreTest1_underscore.ts, 625, 49)) +>mixin : Symbol(Static.mixin, Decl(underscoreTest1_underscore.ts, 625, 49)) >object : Symbol(object, Decl(underscoreTest1_underscore.ts, 627, 14)) uniqueId(): number; ->uniqueId : Symbol(uniqueId, Decl(underscoreTest1_underscore.ts, 627, 33), Decl(underscoreTest1_underscore.ts, 629, 27)) +>uniqueId : Symbol(Static.uniqueId, Decl(underscoreTest1_underscore.ts, 627, 33), Decl(underscoreTest1_underscore.ts, 629, 27)) uniqueId(prefix: string): string; ->uniqueId : Symbol(uniqueId, Decl(underscoreTest1_underscore.ts, 627, 33), Decl(underscoreTest1_underscore.ts, 629, 27)) +>uniqueId : Symbol(Static.uniqueId, Decl(underscoreTest1_underscore.ts, 627, 33), Decl(underscoreTest1_underscore.ts, 629, 27)) >prefix : Symbol(prefix, Decl(underscoreTest1_underscore.ts, 630, 17)) escape(s: string): string; ->escape : Symbol(escape, Decl(underscoreTest1_underscore.ts, 630, 41)) +>escape : Symbol(Static.escape, Decl(underscoreTest1_underscore.ts, 630, 41)) >s : Symbol(s, Decl(underscoreTest1_underscore.ts, 632, 15)) unescape(s: string): string; ->unescape : Symbol(unescape, Decl(underscoreTest1_underscore.ts, 632, 34)) +>unescape : Symbol(Static.unescape, Decl(underscoreTest1_underscore.ts, 632, 34)) >s : Symbol(s, Decl(underscoreTest1_underscore.ts, 634, 17)) result(object: any, property: string): any; ->result : Symbol(result, Decl(underscoreTest1_underscore.ts, 634, 36)) +>result : Symbol(Static.result, Decl(underscoreTest1_underscore.ts, 634, 36)) >object : Symbol(object, Decl(underscoreTest1_underscore.ts, 636, 15)) >property : Symbol(property, Decl(underscoreTest1_underscore.ts, 636, 27)) templateSettings: TemplateSettings; ->templateSettings : Symbol(templateSettings, Decl(underscoreTest1_underscore.ts, 636, 51)) +>templateSettings : Symbol(Static.templateSettings, Decl(underscoreTest1_underscore.ts, 636, 51)) >TemplateSettings : Symbol(TemplateSettings, Decl(underscoreTest1_underscore.ts, 378, 5)) template(templateString: string): (data: any) => string; ->template : Symbol(template, Decl(underscoreTest1_underscore.ts, 638, 43), Decl(underscoreTest1_underscore.ts, 640, 64)) +>template : Symbol(Static.template, Decl(underscoreTest1_underscore.ts, 638, 43), Decl(underscoreTest1_underscore.ts, 640, 64)) >templateString : Symbol(templateString, Decl(underscoreTest1_underscore.ts, 640, 17)) >data : Symbol(data, Decl(underscoreTest1_underscore.ts, 640, 43)) template(templateString: string, data: any, settings?: TemplateSettings): string; ->template : Symbol(template, Decl(underscoreTest1_underscore.ts, 638, 43), Decl(underscoreTest1_underscore.ts, 640, 64)) +>template : Symbol(Static.template, Decl(underscoreTest1_underscore.ts, 638, 43), Decl(underscoreTest1_underscore.ts, 640, 64)) >templateString : Symbol(templateString, Decl(underscoreTest1_underscore.ts, 641, 17)) >data : Symbol(data, Decl(underscoreTest1_underscore.ts, 641, 40)) >settings : Symbol(settings, Decl(underscoreTest1_underscore.ts, 641, 51)) diff --git a/tests/baselines/reference/unionAndIntersectionInference1.symbols b/tests/baselines/reference/unionAndIntersectionInference1.symbols index 5e96790ea34..685b21dd215 100644 --- a/tests/baselines/reference/unionAndIntersectionInference1.symbols +++ b/tests/baselines/reference/unionAndIntersectionInference1.symbols @@ -157,21 +157,21 @@ interface Man { >Man : Symbol(Man, Decl(unionAndIntersectionInference1.ts, 51, 23)) walks: boolean; ->walks : Symbol(walks, Decl(unionAndIntersectionInference1.ts, 55, 15)) +>walks : Symbol(Man.walks, Decl(unionAndIntersectionInference1.ts, 55, 15)) } interface Bear { >Bear : Symbol(Bear, Decl(unionAndIntersectionInference1.ts, 57, 1)) roars: boolean; ->roars : Symbol(roars, Decl(unionAndIntersectionInference1.ts, 59, 16)) +>roars : Symbol(Bear.roars, Decl(unionAndIntersectionInference1.ts, 59, 16)) } interface Pig { >Pig : Symbol(Pig, Decl(unionAndIntersectionInference1.ts, 61, 1)) oinks: boolean; ->oinks : Symbol(oinks, Decl(unionAndIntersectionInference1.ts, 63, 15)) +>oinks : Symbol(Pig.oinks, Decl(unionAndIntersectionInference1.ts, 63, 15)) } declare function pigify(y: T & Bear): T & Pig; diff --git a/tests/baselines/reference/unionThisTypeInFunctions.js b/tests/baselines/reference/unionThisTypeInFunctions.js new file mode 100644 index 00000000000..0d4b535ff8b --- /dev/null +++ b/tests/baselines/reference/unionThisTypeInFunctions.js @@ -0,0 +1,18 @@ +//// [unionThisTypeInFunctions.ts] +interface Real { + method(this: this, n: number): void; + data: string; +} +interface Fake { + method(this: this, n: number): void; + data: number; +} +function test(r: Real | Fake) { + r.method(12); +} + + +//// [unionThisTypeInFunctions.js] +function test(r) { + r.method(12); +} diff --git a/tests/baselines/reference/unionThisTypeInFunctions.symbols b/tests/baselines/reference/unionThisTypeInFunctions.symbols new file mode 100644 index 00000000000..eada1231750 --- /dev/null +++ b/tests/baselines/reference/unionThisTypeInFunctions.symbols @@ -0,0 +1,35 @@ +=== tests/cases/conformance/types/thisType/unionThisTypeInFunctions.ts === +interface Real { +>Real : Symbol(Real, Decl(unionThisTypeInFunctions.ts, 0, 0)) + + method(this: this, n: number): void; +>method : Symbol(Real.method, Decl(unionThisTypeInFunctions.ts, 0, 16)) +>this : Symbol(this, Decl(unionThisTypeInFunctions.ts, 1, 11)) +>n : Symbol(n, Decl(unionThisTypeInFunctions.ts, 1, 22)) + + data: string; +>data : Symbol(Real.data, Decl(unionThisTypeInFunctions.ts, 1, 40)) +} +interface Fake { +>Fake : Symbol(Fake, Decl(unionThisTypeInFunctions.ts, 3, 1)) + + method(this: this, n: number): void; +>method : Symbol(Fake.method, Decl(unionThisTypeInFunctions.ts, 4, 16)) +>this : Symbol(this, Decl(unionThisTypeInFunctions.ts, 5, 11)) +>n : Symbol(n, Decl(unionThisTypeInFunctions.ts, 5, 22)) + + data: number; +>data : Symbol(Fake.data, Decl(unionThisTypeInFunctions.ts, 5, 40)) +} +function test(r: Real | Fake) { +>test : Symbol(test, Decl(unionThisTypeInFunctions.ts, 7, 1)) +>r : Symbol(r, Decl(unionThisTypeInFunctions.ts, 8, 14)) +>Real : Symbol(Real, Decl(unionThisTypeInFunctions.ts, 0, 0)) +>Fake : Symbol(Fake, Decl(unionThisTypeInFunctions.ts, 3, 1)) + + r.method(12); +>r.method : Symbol(method, Decl(unionThisTypeInFunctions.ts, 0, 16), Decl(unionThisTypeInFunctions.ts, 4, 16)) +>r : Symbol(r, Decl(unionThisTypeInFunctions.ts, 8, 14)) +>method : Symbol(method, Decl(unionThisTypeInFunctions.ts, 0, 16), Decl(unionThisTypeInFunctions.ts, 4, 16)) +} + diff --git a/tests/baselines/reference/unionThisTypeInFunctions.types b/tests/baselines/reference/unionThisTypeInFunctions.types new file mode 100644 index 00000000000..3c5181166b6 --- /dev/null +++ b/tests/baselines/reference/unionThisTypeInFunctions.types @@ -0,0 +1,37 @@ +=== tests/cases/conformance/types/thisType/unionThisTypeInFunctions.ts === +interface Real { +>Real : Real + + method(this: this, n: number): void; +>method : (this: this, n: number) => void +>this : this +>n : number + + data: string; +>data : string +} +interface Fake { +>Fake : Fake + + method(this: this, n: number): void; +>method : (this: this, n: number) => void +>this : this +>n : number + + data: number; +>data : number +} +function test(r: Real | Fake) { +>test : (r: Real | Fake) => void +>r : Real | Fake +>Real : Real +>Fake : Fake + + r.method(12); +>r.method(12) : void +>r.method : ((this: Real, n: number) => void) | ((this: Fake, n: number) => void) +>r : Real | Fake +>method : ((this: Real, n: number) => void) | ((this: Fake, n: number) => void) +>12 : number +} + diff --git a/tests/baselines/reference/unionTypeCallSignatures2.symbols b/tests/baselines/reference/unionTypeCallSignatures2.symbols index 32ce4c352b8..19279346cde 100644 --- a/tests/baselines/reference/unionTypeCallSignatures2.symbols +++ b/tests/baselines/reference/unionTypeCallSignatures2.symbols @@ -11,7 +11,7 @@ interface A { (x: Date): void; >x : Symbol(x, Decl(unionTypeCallSignatures2.ts, 3, 5)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) (x: T[]): T[]; >T : Symbol(T, Decl(unionTypeCallSignatures2.ts, 4, 5)) @@ -31,7 +31,7 @@ interface B { (x: Date): void; >x : Symbol(x, Decl(unionTypeCallSignatures2.ts, 10, 5)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) (x: T[]): T[]; >T : Symbol(T, Decl(unionTypeCallSignatures2.ts, 11, 5)) diff --git a/tests/baselines/reference/unionTypeFromArrayLiteral.symbols b/tests/baselines/reference/unionTypeFromArrayLiteral.symbols index 74047b6be11..7699e89dedd 100644 --- a/tests/baselines/reference/unionTypeFromArrayLiteral.symbols +++ b/tests/baselines/reference/unionTypeFromArrayLiteral.symbols @@ -27,21 +27,21 @@ var arr5Tuple: { } = ["hello", true, false, " hello", true, 10, "any"]; // Tuple class C { foo() { } } >C : Symbol(C, Decl(unionTypeFromArrayLiteral.ts, 13, 54)) ->foo : Symbol(foo, Decl(unionTypeFromArrayLiteral.ts, 14, 9)) +>foo : Symbol(C.foo, Decl(unionTypeFromArrayLiteral.ts, 14, 9)) class D { foo2() { } } >D : Symbol(D, Decl(unionTypeFromArrayLiteral.ts, 14, 21)) ->foo2 : Symbol(foo2, Decl(unionTypeFromArrayLiteral.ts, 15, 9)) +>foo2 : Symbol(D.foo2, Decl(unionTypeFromArrayLiteral.ts, 15, 9)) class E extends C { foo3() { } } >E : Symbol(E, Decl(unionTypeFromArrayLiteral.ts, 15, 22)) >C : Symbol(C, Decl(unionTypeFromArrayLiteral.ts, 13, 54)) ->foo3 : Symbol(foo3, Decl(unionTypeFromArrayLiteral.ts, 16, 19)) +>foo3 : Symbol(E.foo3, Decl(unionTypeFromArrayLiteral.ts, 16, 19)) class F extends C { foo4() { } } >F : Symbol(F, Decl(unionTypeFromArrayLiteral.ts, 16, 32)) >C : Symbol(C, Decl(unionTypeFromArrayLiteral.ts, 13, 54)) ->foo4 : Symbol(foo4, Decl(unionTypeFromArrayLiteral.ts, 17, 19)) +>foo4 : Symbol(F.foo4, Decl(unionTypeFromArrayLiteral.ts, 17, 19)) var c: C, d: D, e: E, f: F; >c : Symbol(c, Decl(unionTypeFromArrayLiteral.ts, 18, 3)) diff --git a/tests/baselines/reference/unionTypeIndexSignature.symbols b/tests/baselines/reference/unionTypeIndexSignature.symbols index 7295b860f3f..dc3923f2f24 100644 --- a/tests/baselines/reference/unionTypeIndexSignature.symbols +++ b/tests/baselines/reference/unionTypeIndexSignature.symbols @@ -1,7 +1,7 @@ === tests/cases/conformance/types/union/unionTypeIndexSignature.ts === var numOrDate: number | Date; >numOrDate : Symbol(numOrDate, Decl(unionTypeIndexSignature.ts, 0, 3)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) var anyVar: number; >anyVar : Symbol(anyVar, Decl(unionTypeIndexSignature.ts, 1, 3)) @@ -13,7 +13,7 @@ var unionOfDifferentReturnType: { [a: string]: number; } | { [a: string]: Date; >unionOfDifferentReturnType : Symbol(unionOfDifferentReturnType, Decl(unionTypeIndexSignature.ts, 6, 3)) >a : Symbol(a, Decl(unionTypeIndexSignature.ts, 6, 35)) >a : Symbol(a, Decl(unionTypeIndexSignature.ts, 6, 62)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) numOrDate = unionOfDifferentReturnType["hello"]; // number | Date >numOrDate : Symbol(numOrDate, Decl(unionTypeIndexSignature.ts, 0, 3)) @@ -41,7 +41,7 @@ var unionOfDifferentReturnType1: { [a: number]: number; } | { [a: number]: Date; >unionOfDifferentReturnType1 : Symbol(unionOfDifferentReturnType1, Decl(unionTypeIndexSignature.ts, 16, 3)) >a : Symbol(a, Decl(unionTypeIndexSignature.ts, 16, 36)) >a : Symbol(a, Decl(unionTypeIndexSignature.ts, 16, 63)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) numOrDate = unionOfDifferentReturnType1["hello"]; // any >numOrDate : Symbol(numOrDate, Decl(unionTypeIndexSignature.ts, 0, 3)) diff --git a/tests/baselines/reference/unionTypeParameterInference.symbols b/tests/baselines/reference/unionTypeParameterInference.symbols index f2dbaac31ff..0e7e53f4049 100644 --- a/tests/baselines/reference/unionTypeParameterInference.symbols +++ b/tests/baselines/reference/unionTypeParameterInference.symbols @@ -4,7 +4,7 @@ interface Foo { prop: T; } >Foo : Symbol(Foo, Decl(unionTypeParameterInference.ts, 0, 0)) >T : Symbol(T, Decl(unionTypeParameterInference.ts, 2, 14)) ->prop : Symbol(prop, Decl(unionTypeParameterInference.ts, 2, 18)) +>prop : Symbol(Foo.prop, Decl(unionTypeParameterInference.ts, 2, 18)) >T : Symbol(T, Decl(unionTypeParameterInference.ts, 2, 14)) declare function lift(value: U | Foo): Foo; diff --git a/tests/baselines/reference/unionTypeWithRecursiveSubtypeReduction1.symbols b/tests/baselines/reference/unionTypeWithRecursiveSubtypeReduction1.symbols index 24ba3b8a8cd..3056f8d21c0 100644 --- a/tests/baselines/reference/unionTypeWithRecursiveSubtypeReduction1.symbols +++ b/tests/baselines/reference/unionTypeWithRecursiveSubtypeReduction1.symbols @@ -3,7 +3,7 @@ class Module { >Module : Symbol(Module, Decl(unionTypeWithRecursiveSubtypeReduction1.ts, 0, 0)) public members: Class[]; ->members : Symbol(members, Decl(unionTypeWithRecursiveSubtypeReduction1.ts, 0, 14)) +>members : Symbol(Module.members, Decl(unionTypeWithRecursiveSubtypeReduction1.ts, 0, 14)) >Class : Symbol(Class, Decl(unionTypeWithRecursiveSubtypeReduction1.ts, 6, 1)) } @@ -11,7 +11,7 @@ class Namespace { >Namespace : Symbol(Namespace, Decl(unionTypeWithRecursiveSubtypeReduction1.ts, 2, 1)) public members: (Class | Property)[]; ->members : Symbol(members, Decl(unionTypeWithRecursiveSubtypeReduction1.ts, 4, 17)) +>members : Symbol(Namespace.members, Decl(unionTypeWithRecursiveSubtypeReduction1.ts, 4, 17)) >Class : Symbol(Class, Decl(unionTypeWithRecursiveSubtypeReduction1.ts, 6, 1)) >Property : Symbol(Property, Decl(unionTypeWithRecursiveSubtypeReduction1.ts, 10, 1)) } @@ -20,7 +20,7 @@ class Class { >Class : Symbol(Class, Decl(unionTypeWithRecursiveSubtypeReduction1.ts, 6, 1)) public parent: Namespace; ->parent : Symbol(parent, Decl(unionTypeWithRecursiveSubtypeReduction1.ts, 8, 13)) +>parent : Symbol(Class.parent, Decl(unionTypeWithRecursiveSubtypeReduction1.ts, 8, 13)) >Namespace : Symbol(Namespace, Decl(unionTypeWithRecursiveSubtypeReduction1.ts, 2, 1)) } @@ -28,7 +28,7 @@ class Property { >Property : Symbol(Property, Decl(unionTypeWithRecursiveSubtypeReduction1.ts, 10, 1)) public parent: Module | Class; ->parent : Symbol(parent, Decl(unionTypeWithRecursiveSubtypeReduction1.ts, 12, 16)) +>parent : Symbol(Property.parent, Decl(unionTypeWithRecursiveSubtypeReduction1.ts, 12, 16)) >Module : Symbol(Module, Decl(unionTypeWithRecursiveSubtypeReduction1.ts, 0, 0)) >Class : Symbol(Class, Decl(unionTypeWithRecursiveSubtypeReduction1.ts, 6, 1)) } diff --git a/tests/baselines/reference/unionTypesAssignability.errors.txt b/tests/baselines/reference/unionTypesAssignability.errors.txt index cad61f41d1d..5be1ff3d246 100644 --- a/tests/baselines/reference/unionTypesAssignability.errors.txt +++ b/tests/baselines/reference/unionTypesAssignability.errors.txt @@ -24,9 +24,9 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/unionTyp tests/cases/conformance/types/typeRelationships/assignmentCompatibility/unionTypesAssignability.ts(43,1): error TS2322: Type 'string' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/unionTypesAssignability.ts(64,5): error TS2322: Type 'U' is not assignable to type 'T'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/unionTypesAssignability.ts(65,5): error TS2322: Type 'T' is not assignable to type 'U'. -tests/cases/conformance/types/typeRelationships/assignmentCompatibility/unionTypesAssignability.ts(69,5): error TS2322: Type 'T | U' is not assignable to type 'T'. +tests/cases/conformance/types/typeRelationships/assignmentCompatibility/unionTypesAssignability.ts(70,5): error TS2322: Type 'T | U' is not assignable to type 'T'. Type 'U' is not assignable to type 'T'. -tests/cases/conformance/types/typeRelationships/assignmentCompatibility/unionTypesAssignability.ts(70,5): error TS2322: Type 'T | U' is not assignable to type 'U'. +tests/cases/conformance/types/typeRelationships/assignmentCompatibility/unionTypesAssignability.ts(71,5): error TS2322: Type 'T | U' is not assignable to type 'U'. Type 'T' is not assignable to type 'U'. @@ -142,6 +142,7 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/unionTyp var x : T | U; x = t; // ok x = u; // ok + x = undefined; t = x; // error U not assignable to T ~ !!! error TS2322: Type 'T | U' is not assignable to type 'T'. diff --git a/tests/baselines/reference/unionTypesAssignability.js b/tests/baselines/reference/unionTypesAssignability.js index e07901347a5..c7105608004 100644 --- a/tests/baselines/reference/unionTypesAssignability.js +++ b/tests/baselines/reference/unionTypesAssignability.js @@ -67,6 +67,7 @@ function foo(t: T, u: U) { var x : T | U; x = t; // ok x = u; // ok + x = undefined; t = x; // error U not assignable to T u = x; // error T not assignable to U } @@ -157,6 +158,7 @@ function foo(t, u) { var x; x = t; // ok x = u; // ok + x = undefined; t = x; // error U not assignable to T u = x; // error T not assignable to U } diff --git a/tests/baselines/reference/unusedImportDeclaration.symbols b/tests/baselines/reference/unusedImportDeclaration.symbols index a298ba94631..6a65f360559 100644 --- a/tests/baselines/reference/unusedImportDeclaration.symbols +++ b/tests/baselines/reference/unusedImportDeclaration.symbols @@ -25,7 +25,7 @@ class TesterB { >TesterB : Symbol(TesterB, Decl(unusedImportDeclaration_testerB.ts, 0, 0)) me: string; ->me : Symbol(me, Decl(unusedImportDeclaration_testerB.ts, 0, 15)) +>me : Symbol(TesterB.me, Decl(unusedImportDeclaration_testerB.ts, 0, 15)) } export = TesterB; >TesterB : Symbol(TesterB, Decl(unusedImportDeclaration_testerB.ts, 0, 0)) diff --git a/tests/baselines/reference/useStrictLikePrologueString01.js b/tests/baselines/reference/useStrictLikePrologueString01.js new file mode 100644 index 00000000000..56df03abfe5 --- /dev/null +++ b/tests/baselines/reference/useStrictLikePrologueString01.js @@ -0,0 +1,14 @@ +//// [useStrictLikePrologueString01.ts] + +"hey!" +" use strict " +export function f() { +} + +//// [useStrictLikePrologueString01.js] +"hey!"; +" use strict "; +"use strict"; +function f() { +} +exports.f = f; diff --git a/tests/baselines/reference/useStrictLikePrologueString01.symbols b/tests/baselines/reference/useStrictLikePrologueString01.symbols new file mode 100644 index 00000000000..e96d48d9933 --- /dev/null +++ b/tests/baselines/reference/useStrictLikePrologueString01.symbols @@ -0,0 +1,7 @@ +=== tests/cases/compiler/useStrictLikePrologueString01.ts === + +"hey!" +" use strict " +export function f() { +>f : Symbol(f, Decl(useStrictLikePrologueString01.ts, 2, 14)) +} diff --git a/tests/baselines/reference/useStrictLikePrologueString01.types b/tests/baselines/reference/useStrictLikePrologueString01.types new file mode 100644 index 00000000000..a12dfe3abd3 --- /dev/null +++ b/tests/baselines/reference/useStrictLikePrologueString01.types @@ -0,0 +1,11 @@ +=== tests/cases/compiler/useStrictLikePrologueString01.ts === + +"hey!" +>"hey!" : string + +" use strict " +>" use strict " : string + +export function f() { +>f : () => void +} diff --git a/tests/baselines/reference/usingModuleWithExportImportInValuePosition.symbols b/tests/baselines/reference/usingModuleWithExportImportInValuePosition.symbols index a918e3ddec7..fc049a84260 100644 --- a/tests/baselines/reference/usingModuleWithExportImportInValuePosition.symbols +++ b/tests/baselines/reference/usingModuleWithExportImportInValuePosition.symbols @@ -9,8 +9,8 @@ export class Point { >Point : Symbol(Point, Decl(usingModuleWithExportImportInValuePosition.ts, 1, 28)) constructor(public x: number, public y: number) { } ->x : Symbol(x, Decl(usingModuleWithExportImportInValuePosition.ts, 3, 20)) ->y : Symbol(y, Decl(usingModuleWithExportImportInValuePosition.ts, 3, 37)) +>x : Symbol(Point.x, Decl(usingModuleWithExportImportInValuePosition.ts, 3, 20)) +>y : Symbol(Point.y, Decl(usingModuleWithExportImportInValuePosition.ts, 3, 37)) } export module B { >B : Symbol(B, Decl(usingModuleWithExportImportInValuePosition.ts, 4, 5)) @@ -19,7 +19,7 @@ export class Point { >Id : Symbol(Id, Decl(usingModuleWithExportImportInValuePosition.ts, 5, 21)) name: string; ->name : Symbol(name, Decl(usingModuleWithExportImportInValuePosition.ts, 6, 29)) +>name : Symbol(Id.name, Decl(usingModuleWithExportImportInValuePosition.ts, 6, 29)) } } } diff --git a/tests/baselines/reference/validStringAssignments.symbols b/tests/baselines/reference/validStringAssignments.symbols index bb24a6c1574..cb949fd076e 100644 --- a/tests/baselines/reference/validStringAssignments.symbols +++ b/tests/baselines/reference/validStringAssignments.symbols @@ -17,6 +17,6 @@ var c: string = x; var d: String = x; >d : Symbol(d, Decl(validStringAssignments.ts, 5, 3)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >x : Symbol(x, Decl(validStringAssignments.ts, 0, 3)) diff --git a/tests/baselines/reference/validUndefinedAssignments.symbols b/tests/baselines/reference/validUndefinedAssignments.symbols index 791834eefde..802bf55fee6 100644 --- a/tests/baselines/reference/validUndefinedAssignments.symbols +++ b/tests/baselines/reference/validUndefinedAssignments.symbols @@ -30,7 +30,7 @@ e = x; // should work class C { foo: string } >C : Symbol(C, Decl(validUndefinedAssignments.ts, 8, 6)) ->foo : Symbol(foo, Decl(validUndefinedAssignments.ts, 10, 9)) +>foo : Symbol(C.foo, Decl(validUndefinedAssignments.ts, 10, 9)) var f: C; >f : Symbol(f, Decl(validUndefinedAssignments.ts, 11, 3)) @@ -42,7 +42,7 @@ f = x; interface I { foo: string } >I : Symbol(I, Decl(validUndefinedAssignments.ts, 12, 6)) ->foo : Symbol(foo, Decl(validUndefinedAssignments.ts, 14, 13)) +>foo : Symbol(I.foo, Decl(validUndefinedAssignments.ts, 14, 13)) var g: I; >g : Symbol(g, Decl(validUndefinedAssignments.ts, 15, 3)) diff --git a/tests/baselines/reference/validUseOfThisInSuper.symbols b/tests/baselines/reference/validUseOfThisInSuper.symbols index 2e71c859a4f..650eec44dde 100644 --- a/tests/baselines/reference/validUseOfThisInSuper.symbols +++ b/tests/baselines/reference/validUseOfThisInSuper.symbols @@ -3,7 +3,7 @@ class Base { >Base : Symbol(Base, Decl(validUseOfThisInSuper.ts, 0, 0)) constructor(public b: Base) { ->b : Symbol(b, Decl(validUseOfThisInSuper.ts, 1, 16)) +>b : Symbol(Base.b, Decl(validUseOfThisInSuper.ts, 1, 16)) >Base : Symbol(Base, Decl(validUseOfThisInSuper.ts, 0, 0)) } } diff --git a/tests/baselines/reference/varArgsOnConstructorTypes.symbols b/tests/baselines/reference/varArgsOnConstructorTypes.symbols index 2b391612356..e810955f443 100644 --- a/tests/baselines/reference/varArgsOnConstructorTypes.symbols +++ b/tests/baselines/reference/varArgsOnConstructorTypes.symbols @@ -11,10 +11,10 @@ export class B extends A { >A : Symbol(A, Decl(varArgsOnConstructorTypes.ts, 0, 0)) private p1: number; ->p1 : Symbol(p1, Decl(varArgsOnConstructorTypes.ts, 4, 26)) +>p1 : Symbol(B.p1, Decl(varArgsOnConstructorTypes.ts, 4, 26)) private p2: string; ->p2 : Symbol(p2, Decl(varArgsOnConstructorTypes.ts, 5, 23)) +>p2 : Symbol(B.p2, Decl(varArgsOnConstructorTypes.ts, 5, 23)) constructor(element: any, url: string) { >element : Symbol(element, Decl(varArgsOnConstructorTypes.ts, 8, 16)) @@ -25,15 +25,15 @@ export class B extends A { >element : Symbol(element, Decl(varArgsOnConstructorTypes.ts, 8, 16)) this.p1 = element; ->this.p1 : Symbol(p1, Decl(varArgsOnConstructorTypes.ts, 4, 26)) +>this.p1 : Symbol(B.p1, Decl(varArgsOnConstructorTypes.ts, 4, 26)) >this : Symbol(B, Decl(varArgsOnConstructorTypes.ts, 2, 1)) ->p1 : Symbol(p1, Decl(varArgsOnConstructorTypes.ts, 4, 26)) +>p1 : Symbol(B.p1, Decl(varArgsOnConstructorTypes.ts, 4, 26)) >element : Symbol(element, Decl(varArgsOnConstructorTypes.ts, 8, 16)) this.p2 = url; ->this.p2 : Symbol(p2, Decl(varArgsOnConstructorTypes.ts, 5, 23)) +>this.p2 : Symbol(B.p2, Decl(varArgsOnConstructorTypes.ts, 5, 23)) >this : Symbol(B, Decl(varArgsOnConstructorTypes.ts, 2, 1)) ->p2 : Symbol(p2, Decl(varArgsOnConstructorTypes.ts, 5, 23)) +>p2 : Symbol(B.p2, Decl(varArgsOnConstructorTypes.ts, 5, 23)) >url : Symbol(url, Decl(varArgsOnConstructorTypes.ts, 8, 29)) } } @@ -42,13 +42,13 @@ export interface I1 { >I1 : Symbol(I1, Decl(varArgsOnConstructorTypes.ts, 13, 1)) register(inputClass: new(...params: any[]) => A); ->register : Symbol(register, Decl(varArgsOnConstructorTypes.ts, 15, 21), Decl(varArgsOnConstructorTypes.ts, 16, 53)) +>register : Symbol(I1.register, Decl(varArgsOnConstructorTypes.ts, 15, 21), Decl(varArgsOnConstructorTypes.ts, 16, 53)) >inputClass : Symbol(inputClass, Decl(varArgsOnConstructorTypes.ts, 16, 13)) >params : Symbol(params, Decl(varArgsOnConstructorTypes.ts, 16, 29)) >A : Symbol(A, Decl(varArgsOnConstructorTypes.ts, 0, 0)) register(inputClass: { new (...params: any[]): A; }[]); ->register : Symbol(register, Decl(varArgsOnConstructorTypes.ts, 15, 21), Decl(varArgsOnConstructorTypes.ts, 16, 53)) +>register : Symbol(I1.register, Decl(varArgsOnConstructorTypes.ts, 15, 21), Decl(varArgsOnConstructorTypes.ts, 16, 53)) >inputClass : Symbol(inputClass, Decl(varArgsOnConstructorTypes.ts, 17, 13)) >params : Symbol(params, Decl(varArgsOnConstructorTypes.ts, 17, 32)) >A : Symbol(A, Decl(varArgsOnConstructorTypes.ts, 0, 0)) diff --git a/tests/baselines/reference/varAsID.symbols b/tests/baselines/reference/varAsID.symbols index accc605e347..6206fa5901c 100644 --- a/tests/baselines/reference/varAsID.symbols +++ b/tests/baselines/reference/varAsID.symbols @@ -4,10 +4,10 @@ class Foo { >Foo : Symbol(Foo, Decl(varAsID.ts, 0, 0)) var; // ok ->var : Symbol(var, Decl(varAsID.ts, 1, 11)) +>var : Symbol(Foo.var, Decl(varAsID.ts, 1, 11)) x=1; ->x : Symbol(x, Decl(varAsID.ts, 2, 8)) +>x : Symbol(Foo.x, Decl(varAsID.ts, 2, 8)) } var f = new Foo(); @@ -19,10 +19,10 @@ class Foo2 { >Foo2 : Symbol(Foo2, Decl(varAsID.ts, 6, 18)) var // not an error, because of ASI. ->var : Symbol(var, Decl(varAsID.ts, 9, 12)) +>var : Symbol(Foo2.var, Decl(varAsID.ts, 9, 12)) x=1; ->x : Symbol(x, Decl(varAsID.ts, 10, 7)) +>x : Symbol(Foo2.x, Decl(varAsID.ts, 10, 7)) } var f2 = new Foo2(); diff --git a/tests/baselines/reference/vardecl.symbols b/tests/baselines/reference/vardecl.symbols index 0860fc19500..98e6f1b5330 100644 --- a/tests/baselines/reference/vardecl.symbols +++ b/tests/baselines/reference/vardecl.symbols @@ -150,7 +150,7 @@ module m2 { >C : Symbol(C, Decl(vardecl.ts, 65, 11)) constructor (public b) { ->b : Symbol(b, Decl(vardecl.ts, 68, 21)) +>b : Symbol(C.b, Decl(vardecl.ts, 68, 21)) } } @@ -158,7 +158,7 @@ module m2 { >C2 : Symbol(C2, Decl(vardecl.ts, 70, 5)) constructor (public b) { ->b : Symbol(b, Decl(vardecl.ts, 73, 21)) +>b : Symbol(C2.b, Decl(vardecl.ts, 73, 21)) } } var m; diff --git a/tests/baselines/reference/visibilityOfCrossModuleTypeUsage.symbols b/tests/baselines/reference/visibilityOfCrossModuleTypeUsage.symbols index d1132151097..6b685cd13a4 100644 --- a/tests/baselines/reference/visibilityOfCrossModuleTypeUsage.symbols +++ b/tests/baselines/reference/visibilityOfCrossModuleTypeUsage.symbols @@ -32,12 +32,12 @@ export interface IConfiguration { >IConfiguration : Symbol(IConfiguration, Decl(visibilityOfCrossModuleTypeUsage_commands.ts, 3, 69)) workspace: server.IWorkspace; ->workspace : Symbol(workspace, Decl(visibilityOfCrossModuleTypeUsage_commands.ts, 5, 33)) +>workspace : Symbol(IConfiguration.workspace, Decl(visibilityOfCrossModuleTypeUsage_commands.ts, 5, 33)) >server : Symbol(server, Decl(visibilityOfCrossModuleTypeUsage_commands.ts, 2, 61)) >IWorkspace : Symbol(server.IWorkspace, Decl(visibilityOfCrossModuleTypeUsage_server.ts, 1, 1)) server?: server.IServer; ->server : Symbol(server, Decl(visibilityOfCrossModuleTypeUsage_commands.ts, 6, 33)) +>server : Symbol(IConfiguration.server, Decl(visibilityOfCrossModuleTypeUsage_commands.ts, 6, 33)) >server : Symbol(server, Decl(visibilityOfCrossModuleTypeUsage_commands.ts, 2, 61)) >IServer : Symbol(server.IServer, Decl(visibilityOfCrossModuleTypeUsage_server.ts, 0, 0)) } @@ -51,7 +51,7 @@ export interface IWorkspace { >IWorkspace : Symbol(IWorkspace, Decl(visibilityOfCrossModuleTypeUsage_server.ts, 1, 1)) toAbsolutePath(server: IServer, workspaceRelativePath?: string): string; ->toAbsolutePath : Symbol(toAbsolutePath, Decl(visibilityOfCrossModuleTypeUsage_server.ts, 3, 29)) +>toAbsolutePath : Symbol(IWorkspace.toAbsolutePath, Decl(visibilityOfCrossModuleTypeUsage_server.ts, 3, 29)) >server : Symbol(server, Decl(visibilityOfCrossModuleTypeUsage_server.ts, 4, 19)) >IServer : Symbol(IServer, Decl(visibilityOfCrossModuleTypeUsage_server.ts, 0, 0)) >workspaceRelativePath : Symbol(workspaceRelativePath, Decl(visibilityOfCrossModuleTypeUsage_server.ts, 4, 35)) diff --git a/tests/baselines/reference/visibilityOfTypeParameters.symbols b/tests/baselines/reference/visibilityOfTypeParameters.symbols index 1380822e9b2..1f80a77e2b3 100644 --- a/tests/baselines/reference/visibilityOfTypeParameters.symbols +++ b/tests/baselines/reference/visibilityOfTypeParameters.symbols @@ -4,7 +4,7 @@ export class MyClass { >MyClass : Symbol(MyClass, Decl(visibilityOfTypeParameters.ts, 0, 0)) protected myMethod(val: T): T { ->myMethod : Symbol(myMethod, Decl(visibilityOfTypeParameters.ts, 1, 22)) +>myMethod : Symbol(MyClass.myMethod, Decl(visibilityOfTypeParameters.ts, 1, 22)) >T : Symbol(T, Decl(visibilityOfTypeParameters.ts, 2, 23)) >val : Symbol(val, Decl(visibilityOfTypeParameters.ts, 2, 26)) >T : Symbol(T, Decl(visibilityOfTypeParameters.ts, 2, 23)) diff --git a/tests/baselines/reference/voidOperatorWithBooleanType.symbols b/tests/baselines/reference/voidOperatorWithBooleanType.symbols index 1d044a6d9c6..b8132c2a993 100644 --- a/tests/baselines/reference/voidOperatorWithBooleanType.symbols +++ b/tests/baselines/reference/voidOperatorWithBooleanType.symbols @@ -10,7 +10,7 @@ class A { >A : Symbol(A, Decl(voidOperatorWithBooleanType.ts, 3, 40)) public a: boolean; ->a : Symbol(a, Decl(voidOperatorWithBooleanType.ts, 5, 9)) +>a : Symbol(A.a, Decl(voidOperatorWithBooleanType.ts, 5, 9)) static foo() { return false; } >foo : Symbol(A.foo, Decl(voidOperatorWithBooleanType.ts, 6, 22)) diff --git a/tests/baselines/reference/voidOperatorWithNumberType.symbols b/tests/baselines/reference/voidOperatorWithNumberType.symbols index 43f10478499..ae8371a6bab 100644 --- a/tests/baselines/reference/voidOperatorWithNumberType.symbols +++ b/tests/baselines/reference/voidOperatorWithNumberType.symbols @@ -13,7 +13,7 @@ class A { >A : Symbol(A, Decl(voidOperatorWithNumberType.ts, 4, 36)) public a: number; ->a : Symbol(a, Decl(voidOperatorWithNumberType.ts, 6, 9)) +>a : Symbol(A.a, Decl(voidOperatorWithNumberType.ts, 6, 9)) static foo() { return 1; } >foo : Symbol(A.foo, Decl(voidOperatorWithNumberType.ts, 7, 21)) diff --git a/tests/baselines/reference/voidOperatorWithStringType.symbols b/tests/baselines/reference/voidOperatorWithStringType.symbols index 64fb0e600e8..448b5f79c00 100644 --- a/tests/baselines/reference/voidOperatorWithStringType.symbols +++ b/tests/baselines/reference/voidOperatorWithStringType.symbols @@ -13,7 +13,7 @@ class A { >A : Symbol(A, Decl(voidOperatorWithStringType.ts, 4, 40)) public a: string; ->a : Symbol(a, Decl(voidOperatorWithStringType.ts, 6, 9)) +>a : Symbol(A.a, Decl(voidOperatorWithStringType.ts, 6, 9)) static foo() { return ""; } >foo : Symbol(A.foo, Decl(voidOperatorWithStringType.ts, 7, 21)) diff --git a/tests/baselines/reference/wideningTuples5.errors.txt b/tests/baselines/reference/wideningTuples5.errors.txt index bfd72079f55..cd6bf6161c9 100644 --- a/tests/baselines/reference/wideningTuples5.errors.txt +++ b/tests/baselines/reference/wideningTuples5.errors.txt @@ -1,10 +1,10 @@ -tests/cases/conformance/types/tuple/wideningTuples5.ts(1,6): error TS7005: Variable 'a' implicitly has an 'any' type. -tests/cases/conformance/types/tuple/wideningTuples5.ts(1,9): error TS7005: Variable 'b' implicitly has an 'any' type. +tests/cases/conformance/types/tuple/wideningTuples5.ts(1,6): error TS7031: Binding element 'a' implicitly has an 'any' type. +tests/cases/conformance/types/tuple/wideningTuples5.ts(1,9): error TS7031: Binding element 'b' implicitly has an 'any' type. ==== tests/cases/conformance/types/tuple/wideningTuples5.ts (2 errors) ==== var [a, b] = [undefined, null]; ~ -!!! error TS7005: Variable 'a' implicitly has an 'any' type. +!!! error TS7031: Binding element 'a' implicitly has an 'any' type. ~ -!!! error TS7005: Variable 'b' implicitly has an 'any' type. \ No newline at end of file +!!! error TS7031: Binding element 'b' implicitly has an 'any' type. \ No newline at end of file diff --git a/tests/baselines/reference/withImportDecl.symbols b/tests/baselines/reference/withImportDecl.symbols index ae41e927cfa..4ba677d8878 100644 --- a/tests/baselines/reference/withImportDecl.symbols +++ b/tests/baselines/reference/withImportDecl.symbols @@ -80,5 +80,5 @@ b.foo; === tests/cases/compiler/withImportDecl_0.ts === export class A { foo: string; } >A : Symbol(A, Decl(withImportDecl_0.ts, 0, 0)) ->foo : Symbol(foo, Decl(withImportDecl_0.ts, 0, 16)) +>foo : Symbol(A.foo, Decl(withImportDecl_0.ts, 0, 16)) diff --git a/tests/baselines/reference/wrappedAndRecursiveConstraints.symbols b/tests/baselines/reference/wrappedAndRecursiveConstraints.symbols index b0128b37797..4f56145951d 100644 --- a/tests/baselines/reference/wrappedAndRecursiveConstraints.symbols +++ b/tests/baselines/reference/wrappedAndRecursiveConstraints.symbols @@ -4,14 +4,14 @@ class C { >C : Symbol(C, Decl(wrappedAndRecursiveConstraints.ts, 0, 0)) >T : Symbol(T, Decl(wrappedAndRecursiveConstraints.ts, 2, 8)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) constructor(public data: T) { } ->data : Symbol(data, Decl(wrappedAndRecursiveConstraints.ts, 3, 16)) +>data : Symbol(C.data, Decl(wrappedAndRecursiveConstraints.ts, 3, 16)) >T : Symbol(T, Decl(wrappedAndRecursiveConstraints.ts, 2, 8)) foo(x: U) { ->foo : Symbol(foo, Decl(wrappedAndRecursiveConstraints.ts, 3, 35)) +>foo : Symbol(C.foo, Decl(wrappedAndRecursiveConstraints.ts, 3, 35)) >U : Symbol(U, Decl(wrappedAndRecursiveConstraints.ts, 4, 8)) >T : Symbol(T, Decl(wrappedAndRecursiveConstraints.ts, 2, 8)) >x : Symbol(x, Decl(wrappedAndRecursiveConstraints.ts, 4, 21)) @@ -24,10 +24,10 @@ class C { interface Foo extends Date { >Foo : Symbol(Foo, Decl(wrappedAndRecursiveConstraints.ts, 7, 1)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) foo: string; ->foo : Symbol(foo, Decl(wrappedAndRecursiveConstraints.ts, 9, 28)) +>foo : Symbol(Foo.foo, Decl(wrappedAndRecursiveConstraints.ts, 9, 28)) } var y: Foo = null; diff --git a/tests/baselines/reference/wrappedAndRecursiveConstraints3.symbols b/tests/baselines/reference/wrappedAndRecursiveConstraints3.symbols index 06279a5c264..db796c6eca0 100644 --- a/tests/baselines/reference/wrappedAndRecursiveConstraints3.symbols +++ b/tests/baselines/reference/wrappedAndRecursiveConstraints3.symbols @@ -11,7 +11,7 @@ class C { >T : Symbol(T, Decl(wrappedAndRecursiveConstraints3.ts, 2, 8)) foo(x: U) { ->foo : Symbol(foo, Decl(wrappedAndRecursiveConstraints3.ts, 3, 25)) +>foo : Symbol(C.foo, Decl(wrappedAndRecursiveConstraints3.ts, 3, 25)) >U : Symbol(U, Decl(wrappedAndRecursiveConstraints3.ts, 4, 8)) >T : Symbol(T, Decl(wrappedAndRecursiveConstraints3.ts, 2, 8)) >x : Symbol(x, Decl(wrappedAndRecursiveConstraints3.ts, 4, 21)) diff --git a/tests/cases/compiler/APISample_compile.ts b/tests/cases/compiler/APISample_compile.ts index 9672b9863fa..b60c53685aa 100644 --- a/tests/cases/compiler/APISample_compile.ts +++ b/tests/cases/compiler/APISample_compile.ts @@ -1,6 +1,7 @@ // @module: commonjs // @includebuiltfile: typescript_standalone.d.ts -// @stripInternal:true +// @noImplicitAny:true +// @strictNullChecks:true /* * Note: This test is a public API sample. The sample sources can be found diff --git a/tests/cases/compiler/APISample_linter.ts b/tests/cases/compiler/APISample_linter.ts index 8cb6934cee3..89f0be7a0f5 100644 --- a/tests/cases/compiler/APISample_linter.ts +++ b/tests/cases/compiler/APISample_linter.ts @@ -1,6 +1,7 @@ // @module: commonjs // @includebuiltfile: typescript_standalone.d.ts -// @stripInternal:true +// @noImplicitAny:true +// @strictNullChecks:true /* * Note: This test is a public API sample. The sample sources can be found @@ -57,7 +58,7 @@ export function delint(sourceFile: ts.SourceFile) { } } -const fileNames = process.argv.slice(2); +const fileNames: string[] = process.argv.slice(2); fileNames.forEach(fileName => { // Parse a file let sourceFile = ts.createSourceFile(fileName, readFileSync(fileName).toString(), ts.ScriptTarget.ES6, /*setParentNodes */ true); diff --git a/tests/cases/compiler/APISample_parseConfig.ts b/tests/cases/compiler/APISample_parseConfig.ts new file mode 100644 index 00000000000..f59f64dc4ad --- /dev/null +++ b/tests/cases/compiler/APISample_parseConfig.ts @@ -0,0 +1,40 @@ +// @module: commonjs +// @includebuiltfile: typescript_standalone.d.ts +// @noImplicitAny:true +// @strictNullChecks:true + +/* + * Note: This test is a public API sample. The sample sources can be found + at: https://github.com/Microsoft/TypeScript/wiki/Using-the-Compiler-API#a-minimal-compiler + * Please log a "breaking change" issue for any API breaking change affecting this issue + */ + +declare var process: any; +declare var console: any; +declare var os: any; + +import ts = require("typescript"); + +function printError(error: ts.Diagnostic): void { + if (!error) { + return; + } + console.log(`${error.file && error.file.fileName}: ${error.messageText}`); +} + +export function createProgram(rootFiles: string[], compilerOptionsJson: string): ts.Program | undefined { + const { config, error } = ts.parseConfigFileTextToJson("tsconfig.json", compilerOptionsJson) + if (error) { + printError(error); + return undefined; + } + const basePath: string = process.cwd(); + const settings = ts.convertCompilerOptionsFromJson(config.config["compilerOptions"], basePath); + if (!settings.options) { + for (const err of settings.errors) { + printError(err); + } + return undefined; + } + return ts.createProgram(rootFiles, settings.options); +} \ No newline at end of file diff --git a/tests/cases/compiler/APISample_transform.ts b/tests/cases/compiler/APISample_transform.ts index 88b9754536a..a76d6b15463 100644 --- a/tests/cases/compiler/APISample_transform.ts +++ b/tests/cases/compiler/APISample_transform.ts @@ -1,6 +1,7 @@ // @module: commonjs // @includebuiltfile: typescript_standalone.d.ts -// @stripInternal:true +// @noImplicitAny:true +// @strictNullChecks:true /* * Note: This test is a public API sample. The sample sources can be found diff --git a/tests/cases/compiler/APISample_watcher.ts b/tests/cases/compiler/APISample_watcher.ts index 9afa53ddf14..34baa04c850 100644 --- a/tests/cases/compiler/APISample_watcher.ts +++ b/tests/cases/compiler/APISample_watcher.ts @@ -1,6 +1,7 @@ // @module: commonjs // @includebuiltfile: typescript_standalone.d.ts -// @stripInternal:true +// @noImplicitAny:true +// @strictNullChecks:true /* * Note: This test is a public API sample. The sample sources can be found @@ -10,7 +11,13 @@ declare var process: any; declare var console: any; -declare var fs: any; +declare var fs: { + existsSync(path: string): boolean; + readdirSync(path: string): string[]; + readFileSync(filename: string, encoding?: string): string; + writeFileSync(filename: string, data: any, options?: { encoding?: string; mode?: number; flag?: string; }): void; + watchFile(filename: string, options: { persistent?: boolean; interval?: number; }, listener: (curr: { mtime: Date }, prev: { mtime: Date }) => void): void; +}; declare var path: any; import * as ts from "typescript"; diff --git a/tests/cases/compiler/ambientNameRestrictions.ts b/tests/cases/compiler/ambientNameRestrictions.ts new file mode 100644 index 00000000000..dc601e91851 --- /dev/null +++ b/tests/cases/compiler/ambientNameRestrictions.ts @@ -0,0 +1,3 @@ +export declare namespace Foo { + export var static: any; +} diff --git a/tests/cases/compiler/arrayFilter.ts b/tests/cases/compiler/arrayFilter.ts new file mode 100644 index 00000000000..d13dc0dc9fa --- /dev/null +++ b/tests/cases/compiler/arrayFilter.ts @@ -0,0 +1,7 @@ +var foo = [ + { name: 'bar' }, + { name: null }, + { name: 'baz' } +] + +foo.filter(x => x.name); //should accepted all possible types not only boolean! \ No newline at end of file diff --git a/tests/cases/compiler/arrowFunctionErrorSpan.ts b/tests/cases/compiler/arrowFunctionErrorSpan.ts new file mode 100644 index 00000000000..4c7fff88a93 --- /dev/null +++ b/tests/cases/compiler/arrowFunctionErrorSpan.ts @@ -0,0 +1,53 @@ +function f(a: () => number) { } + +// oneliner +f(() => { }); + +// multiline, body +f(() => { + +}); + +// multiline 2, body +f(() => { + +}); + +// multiline 3, arrow on a new line +f(() + => { }); + +// multiline 4, arguments +f((a, + b, + c, + d) => { }); + +// single line with a comment +f(/* + */() => { }); + +// multi line with a comment +f(/* + */() => { }); + +// multi line with a comment 2 +f(/* + */() => { + + }); + +// multi line with a comment 3 +f( // comment 1 + // comment 2 + () => + // comment 3 + { + // comment 4 + } + // comment 5 +); + +// body is not a block +f(_ => 1 + + 2); diff --git a/tests/cases/compiler/blockScopedFunctionDeclarationES5.ts b/tests/cases/compiler/blockScopedFunctionDeclarationES5.ts new file mode 100644 index 00000000000..dbb725361a0 --- /dev/null +++ b/tests/cases/compiler/blockScopedFunctionDeclarationES5.ts @@ -0,0 +1,6 @@ +// @target: ES5 +if (true) { + function foo() { } + foo(); +} +foo(); \ No newline at end of file diff --git a/tests/cases/compiler/blockScopedFunctionDeclarationES6.ts b/tests/cases/compiler/blockScopedFunctionDeclarationES6.ts new file mode 100644 index 00000000000..fd0e678b806 --- /dev/null +++ b/tests/cases/compiler/blockScopedFunctionDeclarationES6.ts @@ -0,0 +1,6 @@ +// @target: ES6 +if (true) { + function foo() { } + foo(); +} +foo(); \ No newline at end of file diff --git a/tests/cases/compiler/blockScopedFunctionDeclarationInStrictClass.ts b/tests/cases/compiler/blockScopedFunctionDeclarationInStrictClass.ts new file mode 100644 index 00000000000..48d83e6ad87 --- /dev/null +++ b/tests/cases/compiler/blockScopedFunctionDeclarationInStrictClass.ts @@ -0,0 +1,10 @@ +// @target: ES5 +class c { + method() { + if (true) { + function foo() { } + foo(); // ok + } + foo(); // not ok + } +} \ No newline at end of file diff --git a/tests/cases/compiler/blockScopedFunctionDeclarationInStrictModule.ts b/tests/cases/compiler/blockScopedFunctionDeclarationInStrictModule.ts new file mode 100644 index 00000000000..48c68770620 --- /dev/null +++ b/tests/cases/compiler/blockScopedFunctionDeclarationInStrictModule.ts @@ -0,0 +1,8 @@ +// @target: ES5 +// @module: amd +if (true) { + function foo() { } + foo(); // ok +} + +export = foo; // not ok \ No newline at end of file diff --git a/tests/cases/compiler/blockScopedFunctionDeclarationStrictES5.ts b/tests/cases/compiler/blockScopedFunctionDeclarationStrictES5.ts new file mode 100644 index 00000000000..c5035e1130c --- /dev/null +++ b/tests/cases/compiler/blockScopedFunctionDeclarationStrictES5.ts @@ -0,0 +1,7 @@ +// @target: ES5 +"use strict"; +if (true) { + function foo() { } // Error to declare function in block scope + foo(); // This call should be ok +} +foo(); // Error to find name foo \ No newline at end of file diff --git a/tests/cases/compiler/blockScopedFunctionDeclarationStrictES6.ts b/tests/cases/compiler/blockScopedFunctionDeclarationStrictES6.ts new file mode 100644 index 00000000000..043890add06 --- /dev/null +++ b/tests/cases/compiler/blockScopedFunctionDeclarationStrictES6.ts @@ -0,0 +1,7 @@ +// @target: ES6 +"use strict"; +if (true) { + function foo() { } // Allowed to declare block scope function + foo(); // This call should be ok +} +foo(); // Cannot find name since foo is block scoped \ No newline at end of file diff --git a/tests/cases/compiler/blockScopedSameNameFunctionDeclarationES5.ts b/tests/cases/compiler/blockScopedSameNameFunctionDeclarationES5.ts new file mode 100644 index 00000000000..a5e10d19af2 --- /dev/null +++ b/tests/cases/compiler/blockScopedSameNameFunctionDeclarationES5.ts @@ -0,0 +1,17 @@ +// @target: ES5 +function foo(a: number) { + if (a === 1) { + function foo() { } // duplicate function + foo(); + foo(10); // not ok + } + else { + function foo() { } // duplicate function + foo(); + foo(10); // not ok + } + foo(10); // not ok + foo(); +} +foo(10); +foo(); // not ok - needs number \ No newline at end of file diff --git a/tests/cases/compiler/blockScopedSameNameFunctionDeclarationES6.ts b/tests/cases/compiler/blockScopedSameNameFunctionDeclarationES6.ts new file mode 100644 index 00000000000..c97e50964e7 --- /dev/null +++ b/tests/cases/compiler/blockScopedSameNameFunctionDeclarationES6.ts @@ -0,0 +1,17 @@ +// @target: ES6 +function foo(a: number) { + if (a === 10) { + function foo() { } // duplicate + foo(); + foo(10); // not ok + } + else { + function foo() { } // duplicate + foo(); + foo(10);// not ok + } + foo(10); // not ok + foo(); +} +foo(10); +foo(); // not ok - needs number \ No newline at end of file diff --git a/tests/cases/compiler/blockScopedSameNameFunctionDeclarationStrictES5.ts b/tests/cases/compiler/blockScopedSameNameFunctionDeclarationStrictES5.ts new file mode 100644 index 00000000000..a0073c75d43 --- /dev/null +++ b/tests/cases/compiler/blockScopedSameNameFunctionDeclarationStrictES5.ts @@ -0,0 +1,18 @@ +// @target: ES5 +"use strict"; +function foo(a: number) { + if (a === 1) { + function foo() { } // Error to declare function in block scope + foo(); + foo(10); // not ok + } + else { + function foo() { } // Error to declare function in block scope + foo(); + foo(10); // not ok + } + foo(10); + foo(); // not ok - needs number +} +foo(10); +foo(); // not ok - needs number \ No newline at end of file diff --git a/tests/cases/compiler/blockScopedSameNameFunctionDeclarationStrictES6.ts b/tests/cases/compiler/blockScopedSameNameFunctionDeclarationStrictES6.ts new file mode 100644 index 00000000000..34d73a05201 --- /dev/null +++ b/tests/cases/compiler/blockScopedSameNameFunctionDeclarationStrictES6.ts @@ -0,0 +1,18 @@ +// @target: ES6 +"use strict"; +function foo(a: number) { + if (a === 10) { + function foo() { } + foo(); + foo(10); // not ok + } + else { + function foo() { } + foo(); + foo(10); // not ok + } + foo(10); + foo(); // not ok +} +foo(10); +foo(); // not ok - needs number \ No newline at end of file diff --git a/tests/cases/compiler/bluebirdStaticThis.ts b/tests/cases/compiler/bluebirdStaticThis.ts new file mode 100644 index 00000000000..55b1d0022d8 --- /dev/null +++ b/tests/cases/compiler/bluebirdStaticThis.ts @@ -0,0 +1,141 @@ +// This version is reduced from the full d.ts by removing almost all the tests +// and all the comments. +// Then it adds explicit `this` arguments to the static members. +// Tests by: Bart van der Schoor +declare class Promise implements Promise.Thenable { + constructor(callback: (resolve: (thenableOrResult: R | Promise.Thenable) => void, reject: (error: any) => void) => void); + static try(dit: typeof Promise, fn: () => Promise.Thenable, args?: any[], ctx?: any): Promise; + static try(dit: typeof Promise, fn: () => R, args?: any[], ctx?: any): Promise; + + static attempt(dit: typeof Promise, fn: () => Promise.Thenable, args?: any[], ctx?: any): Promise; + static attempt(dit: typeof Promise, fn: () => R, args?: any[], ctx?: any): Promise; + + static method(dit: typeof Promise, fn: Function): Function; + + static resolve(dit: typeof Promise): Promise; + static resolve(dit: typeof Promise, value: Promise.Thenable): Promise; + static resolve(dit: typeof Promise, value: R): Promise; + + static reject(dit: typeof Promise, reason: any): Promise; + static reject(dit: typeof Promise, reason: any): Promise; + + static defer(dit: typeof Promise): Promise.Resolver; + + static cast(dit: typeof Promise, value: Promise.Thenable): Promise; + static cast(dit: typeof Promise, value: R): Promise; + + static bind(dit: typeof Promise, thisArg: any): Promise; + + static is(dit: typeof Promise, value: any): boolean; + + static longStackTraces(dit: typeof Promise): void; + + static delay(dit: typeof Promise, value: Promise.Thenable, ms: number): Promise; + static delay(dit: typeof Promise, value: R, ms: number): Promise; + static delay(dit: typeof Promise, ms: number): Promise; + + static promisify(dit: typeof Promise, nodeFunction: Function, receiver?: any): Function; + + static promisifyAll(dit: typeof Promise, target: Object): Object; + + static coroutine(dit: typeof Promise, generatorFunction: Function): Function; + + static spawn(dit: typeof Promise, generatorFunction: Function): Promise; + + static noConflict(dit: typeof Promise): typeof Promise; + + static onPossiblyUnhandledRejection(dit: typeof Promise, handler: (reason: any) => any): void; + + static all(dit: typeof Promise, values: Promise.Thenable[]>): Promise; + static all(dit: typeof Promise, values: Promise.Thenable): Promise; + static all(dit: typeof Promise, values: Promise.Thenable[]): Promise; + static all(dit: typeof Promise, values: R[]): Promise; + + static props(dit: typeof Promise, object: Promise): Promise; + static props(dit: typeof Promise, object: Object): Promise; + + static settle(dit: typeof Promise, values: Promise.Thenable[]>): Promise[]>; + static settle(dit: typeof Promise, values: Promise.Thenable): Promise[]>; + static settle(dit: typeof Promise, values: Promise.Thenable[]): Promise[]>; + static settle(dit: typeof Promise, values: R[]): Promise[]>; + + static any(dit: typeof Promise, values: Promise.Thenable[]>): Promise; + static any(dit: typeof Promise, values: Promise.Thenable): Promise; + static any(dit: typeof Promise, values: Promise.Thenable[]): Promise; + static any(dit: typeof Promise, values: R[]): Promise; + + static race(dit: typeof Promise, values: Promise.Thenable[]>): Promise; + static race(dit: typeof Promise, values: Promise.Thenable): Promise; + static race(dit: typeof Promise, values: Promise.Thenable[]): Promise; + static race(dit: typeof Promise, values: R[]): Promise; + + static some(dit: typeof Promise, values: Promise.Thenable[]>, count: number): Promise; + static some(dit: typeof Promise, values: Promise.Thenable, count: number): Promise; + static some(dit: typeof Promise, values: Promise.Thenable[], count: number): Promise; + static some(dit: typeof Promise, values: R[], count: number): Promise; + + static join(dit: typeof Promise, ...values: Promise.Thenable[]): Promise; + static join(dit: typeof Promise, ...values: R[]): Promise; + + static map(dit: typeof Promise, values: Promise.Thenable[]>, mapper: (item: R, index: number, arrayLength: number) => Promise.Thenable): Promise; + static map(dit: typeof Promise, values: Promise.Thenable[]>, mapper: (item: R, index: number, arrayLength: number) => U): Promise; + static map(dit: typeof Promise, values: Promise.Thenable, mapper: (item: R, index: number, arrayLength: number) => Promise.Thenable): Promise; + static map(dit: typeof Promise, values: Promise.Thenable, mapper: (item: R, index: number, arrayLength: number) => U): Promise; + static map(dit: typeof Promise, values: Promise.Thenable[], mapper: (item: R, index: number, arrayLength: number) => Promise.Thenable): Promise; + static map(dit: typeof Promise, values: Promise.Thenable[], mapper: (item: R, index: number, arrayLength: number) => U): Promise; + static map(dit: typeof Promise, values: R[], mapper: (item: R, index: number, arrayLength: number) => Promise.Thenable): Promise; + static map(dit: typeof Promise, values: R[], mapper: (item: R, index: number, arrayLength: number) => U): Promise; + + static reduce(dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; + static reduce(dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; + + static reduce(dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; + static reduce(dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; + + static reduce(dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; + static reduce(dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; + + static reduce(dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; + static reduce(dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; + + static filter(dit: typeof Promise, values: Promise.Thenable[]>, filterer: (item: R, index: number, arrayLength: number) => Promise.Thenable): Promise; + static filter(dit: typeof Promise, values: Promise.Thenable[]>, filterer: (item: R, index: number, arrayLength: number) => boolean): Promise; + static filter(dit: typeof Promise, values: Promise.Thenable, filterer: (item: R, index: number, arrayLength: number) => Promise.Thenable): Promise; + static filter(dit: typeof Promise, values: Promise.Thenable, filterer: (item: R, index: number, arrayLength: number) => boolean): Promise; + static filter(dit: typeof Promise, values: Promise.Thenable[], filterer: (item: R, index: number, arrayLength: number) => Promise.Thenable): Promise; + static filter(dit: typeof Promise, values: Promise.Thenable[], filterer: (item: R, index: number, arrayLength: number) => boolean): Promise; + static filter(dit: typeof Promise, values: R[], filterer: (item: R, index: number, arrayLength: number) => Promise.Thenable): Promise; + static filter(dit: typeof Promise, values: R[], filterer: (item: R, index: number, arrayLength: number) => boolean): Promise; +} + +declare module Promise { + export interface Thenable { + then(onFulfilled: (value: R) => Thenable, onRejected: (error: any) => Thenable): Thenable; + then(onFulfilled: (value: R) => Thenable, onRejected?: (error: any) => U): Thenable; + then(onFulfilled: (value: R) => U, onRejected: (error: any) => Thenable): Thenable; + then(onFulfilled?: (value: R) => U, onRejected?: (error: any) => U): Thenable; + } + +} + +declare module 'bluebird' { + export = Promise; +} +interface Foo { + a: number; + b: string; +} +var x: any; +var arr: any[]; +var foo: Foo; +var fooProm: Promise; + +fooProm = Promise.try(Promise, () => { + return foo; +}); +fooProm = Promise.try(Promise, () => { + return foo; +}, arr); +fooProm = Promise.try(Promise, () => { + return foo; +}, arr, x); \ No newline at end of file diff --git a/tests/cases/compiler/capturedLetConstInLoop12.ts b/tests/cases/compiler/capturedLetConstInLoop12.ts new file mode 100644 index 00000000000..5540f75635e --- /dev/null +++ b/tests/cases/compiler/capturedLetConstInLoop12.ts @@ -0,0 +1,15 @@ +(function() { + "use strict"; + + for (let i = 0; i < 4; i++) { + (() => [i] = [i + 1])(); + } +})(); + +(function() { + "use strict"; + + for (let i = 0; i < 4; i++) { + (() => ({a:i} = {a:i + 1}))(); + } +})(); \ No newline at end of file diff --git a/tests/cases/compiler/commentsAfterFunctionExpression1.ts b/tests/cases/compiler/commentsAfterFunctionExpression1.ts new file mode 100644 index 00000000000..04fb0aec3b1 --- /dev/null +++ b/tests/cases/compiler/commentsAfterFunctionExpression1.ts @@ -0,0 +1,6 @@ +// @removeComments: false +var v = { + f: a => 0 /*t1*/, + g: (a => 0) /*t2*/, + h: (a => 0 /*t3*/) +} diff --git a/tests/cases/compiler/commentsOnObjectLiteral4.ts b/tests/cases/compiler/commentsOnObjectLiteral4.ts index d685304f31e..dfb9e42b3cb 100644 --- a/tests/cases/compiler/commentsOnObjectLiteral4.ts +++ b/tests/cases/compiler/commentsOnObjectLiteral4.ts @@ -6,6 +6,6 @@ var v = { * @type {number} */ get bar(): number { - return this._bar; + return 12; } -} \ No newline at end of file +} diff --git a/tests/cases/compiler/compilerOptionsDeclarationAndNoEmit.ts b/tests/cases/compiler/compilerOptionsDeclarationAndNoEmit.ts new file mode 100644 index 00000000000..41a89011020 --- /dev/null +++ b/tests/cases/compiler/compilerOptionsDeclarationAndNoEmit.ts @@ -0,0 +1,6 @@ +// @declaration: true +// @noEmit: true +// @fileName: a.ts + +class c { +} diff --git a/tests/cases/compiler/compilerOptionsOutAndNoEmit.ts b/tests/cases/compiler/compilerOptionsOutAndNoEmit.ts new file mode 100644 index 00000000000..126043826bd --- /dev/null +++ b/tests/cases/compiler/compilerOptionsOutAndNoEmit.ts @@ -0,0 +1,6 @@ +// @out: outDir +// @noEmit: true +// @fileName: a.ts + +class c { +} diff --git a/tests/cases/compiler/compilerOptionsOutDirAndNoEmit.ts b/tests/cases/compiler/compilerOptionsOutDirAndNoEmit.ts new file mode 100644 index 00000000000..fb701a52661 --- /dev/null +++ b/tests/cases/compiler/compilerOptionsOutDirAndNoEmit.ts @@ -0,0 +1,6 @@ +// @outDir: outDir +// @noEmit: true +// @fileName: a.ts + +class c { +} diff --git a/tests/cases/compiler/compilerOptionsOutFileAndNoEmit.ts b/tests/cases/compiler/compilerOptionsOutFileAndNoEmit.ts new file mode 100644 index 00000000000..2e75c0a976f --- /dev/null +++ b/tests/cases/compiler/compilerOptionsOutFileAndNoEmit.ts @@ -0,0 +1,6 @@ +// @outFile: a.js +// @noEmit: true +// @fileName: a.ts + +class c { +} diff --git a/tests/cases/compiler/contextualTyping24.ts b/tests/cases/compiler/contextualTyping24.ts index be28ff3b04c..fad23fa313c 100644 --- a/tests/cases/compiler/contextualTyping24.ts +++ b/tests/cases/compiler/contextualTyping24.ts @@ -1 +1 @@ -var foo:(a:{():number; (i:number):number; })=>number; foo = function(a:string){return 5}; \ No newline at end of file +var foo:(a:{():number; (i:number):number; })=>number; foo = function(this: void, a:string){return 5}; \ No newline at end of file diff --git a/tests/cases/compiler/continueInLoopsWithCapturedBlockScopedBindings1.ts b/tests/cases/compiler/continueInLoopsWithCapturedBlockScopedBindings1.ts new file mode 100644 index 00000000000..8a17435edd6 --- /dev/null +++ b/tests/cases/compiler/continueInLoopsWithCapturedBlockScopedBindings1.ts @@ -0,0 +1,13 @@ +// @target: ES5 +function foo() { + for (const i of [0, 1]) { + if (i === 0) { + continue; + } + + // Trigger non-simple-loop emit + (() => { + return i; + })(); + } +} \ No newline at end of file diff --git a/tests/cases/compiler/controlFlowDestructuringParameters.ts b/tests/cases/compiler/controlFlowDestructuringParameters.ts new file mode 100644 index 00000000000..3efcd8c4814 --- /dev/null +++ b/tests/cases/compiler/controlFlowDestructuringParameters.ts @@ -0,0 +1,7 @@ +// Repro for #8376 + +// @strictNullChecks: true + +[{ x: 1 }].map( + ({ x }) => x +); diff --git a/tests/cases/compiler/declarationEmitDefaultExportWithTempVarName.ts b/tests/cases/compiler/declarationEmitDefaultExportWithTempVarName.ts new file mode 100644 index 00000000000..13c967c4fe5 --- /dev/null +++ b/tests/cases/compiler/declarationEmitDefaultExportWithTempVarName.ts @@ -0,0 +1,4 @@ +// @declaration: true +// @module: system +// @Filename: pi.ts +export default 3.14159; \ No newline at end of file diff --git a/tests/cases/compiler/declarationEmitDefaultExportWithTempVarNameWithBundling.ts b/tests/cases/compiler/declarationEmitDefaultExportWithTempVarNameWithBundling.ts new file mode 100644 index 00000000000..6bd5320f3fe --- /dev/null +++ b/tests/cases/compiler/declarationEmitDefaultExportWithTempVarNameWithBundling.ts @@ -0,0 +1,6 @@ +// @declaration: true +// @module: system +// @outFile: app.js + +// @Filename: pi.ts +export default 3.14159; \ No newline at end of file diff --git a/tests/cases/compiler/declarationEmitFirstTypeArgumentGenericFunctionType.ts b/tests/cases/compiler/declarationEmitFirstTypeArgumentGenericFunctionType.ts new file mode 100644 index 00000000000..3c5100d0772 --- /dev/null +++ b/tests/cases/compiler/declarationEmitFirstTypeArgumentGenericFunctionType.ts @@ -0,0 +1,26 @@ +// @declaration: true +// @module: commonjs +// @target: es6 + +class X { +} +var prop11: X< () => Tany >; // spaces before the first type argument +var prop12: X<(() => Tany)>; // spaces before the first type argument +function f1() { // Inferred return type + return prop11; +} +function f2() { // Inferred return type + return prop12; +} +function f3(): X< () => Tany> { // written with space before type argument + return prop11; +} +function f4(): X<(() => Tany)> { // written type with parenthesis + return prop12; +} +class Y { +} +var prop2: Y() => Tany>; // No space after second type argument +var prop2: Y() => Tany>; // space after second type argument +var prop3: Y< () => Tany, () => Tany>; // space before first type argument +var prop4: Y<(() => Tany), () => Tany>; // parenthesized first type argument diff --git a/tests/cases/compiler/declarationEmitPromise.ts b/tests/cases/compiler/declarationEmitPromise.ts new file mode 100644 index 00000000000..2eff0b6c50c --- /dev/null +++ b/tests/cases/compiler/declarationEmitPromise.ts @@ -0,0 +1,25 @@ +// @declaration: true +// @module: commonjs +// @target: es6 + +export class bluebird { + static all: Array>; +} + +export async function runSampleWorks( + a: bluebird, b?: bluebird, c?: bluebird, d?: bluebird, e?: bluebird) { + let result = await (bluebird.all as any)([a, b, c, d, e].filter(el => !!el)); + let func = (f: (a: A, b?: B, c?: C, d?: D, e?: E) => T): T => + f.apply(this, result); + let rfunc: typeof func & {} = func as any; // <- This is the only difference + return rfunc +} + +export async function runSampleBreaks( + a: bluebird, b?: bluebird, c?: bluebird, d?: bluebird, e?: bluebird) { + let result = await (bluebird.all as any)([a, b, c, d, e].filter(el => !!el)); + let func = (f: (a: A, b?: B, c?: C, d?: D, e?: E) => T): T => + f.apply(this, result); + let rfunc: typeof func = func as any; // <- This is the only difference + return rfunc +} \ No newline at end of file diff --git a/tests/cases/compiler/declarationEmit_classMemberNameConflict.ts b/tests/cases/compiler/declarationEmit_classMemberNameConflict.ts new file mode 100644 index 00000000000..16f096d43ca --- /dev/null +++ b/tests/cases/compiler/declarationEmit_classMemberNameConflict.ts @@ -0,0 +1,39 @@ +// @target: es5 +// @module: commonjs +// @declaration: true + +export class C1 { + C1() { } // has to be the same as the class name + + bar() { + return function (t: typeof C1) { + }; + } +} + +export class C2 { + C2: any // has to be the same as the class name + + bar() { + return function (t: typeof C2) { + }; + } +} + +export class C3 { + get C3() { return 0; } // has to be the same as the class name + + bar() { + return function (t: typeof C3) { + }; + } +} + +export class C4 { + set C4(v) { } // has to be the same as the class name + + bar() { + return function (t: typeof C4) { + }; + } +} \ No newline at end of file diff --git a/tests/cases/compiler/declarationEmit_classMemberNameConflict2.ts b/tests/cases/compiler/declarationEmit_classMemberNameConflict2.ts new file mode 100644 index 00000000000..90b488ebec7 --- /dev/null +++ b/tests/cases/compiler/declarationEmit_classMemberNameConflict2.ts @@ -0,0 +1,24 @@ +// @target: es5 +// @module: commonjs +// @declaration: true + +const Bar = 'bar'; + +enum Hello { + World +} + +enum Hello1 { + World1 +} + +class Foo { + // Same names + string => OK + Bar = Bar; + + // Same names + enum => OK + Hello = Hello; + + // Different names + enum => OK + Hello2 = Hello1; +} \ No newline at end of file diff --git a/tests/cases/compiler/declarationEmit_expressionInExtends.ts b/tests/cases/compiler/declarationEmit_expressionInExtends.ts new file mode 100644 index 00000000000..8544ca20d92 --- /dev/null +++ b/tests/cases/compiler/declarationEmit_expressionInExtends.ts @@ -0,0 +1,15 @@ +// @declaration: true + +var x: { + new(s: any): Q; +} + +class Q { + s: string; +} + +class B extends x { +} + +var q: B; +q.s; \ No newline at end of file diff --git a/tests/cases/compiler/declarationEmit_expressionInExtends2.ts b/tests/cases/compiler/declarationEmit_expressionInExtends2.ts new file mode 100644 index 00000000000..0b2ccab8385 --- /dev/null +++ b/tests/cases/compiler/declarationEmit_expressionInExtends2.ts @@ -0,0 +1,13 @@ +// @declaration: true + +class C { + x: T; + y: U; +} + +function getClass(c: T) { + return C; +} + +class MyClass extends getClass(2) { +} \ No newline at end of file diff --git a/tests/cases/compiler/declarationEmit_expressionInExtends3.ts b/tests/cases/compiler/declarationEmit_expressionInExtends3.ts new file mode 100644 index 00000000000..348d0d188f7 --- /dev/null +++ b/tests/cases/compiler/declarationEmit_expressionInExtends3.ts @@ -0,0 +1,43 @@ +// @declaration: true + +export class ExportedClass { + x: T; +} + +class LocalClass { + x: T; + y: U; +} + +export interface ExportedInterface { + x: number; +} + +interface LocalInterface { + x: number; +} + +function getLocalClass(c: T) { + return LocalClass; +} + +function getExportedClass(c: T) { + return ExportedClass; +} + + + +export class MyClass extends getLocalClass(undefined) { // error LocalClass is inaccisible +} + + +export class MyClass2 extends getExportedClass(undefined) { // OK +} + + +export class MyClass3 extends getExportedClass(undefined) { // Error LocalInterface is inaccisble +} + + +export class MyClass4 extends getExportedClass(undefined) { // OK +} diff --git a/tests/cases/compiler/declarationEmit_expressionInExtends4.ts b/tests/cases/compiler/declarationEmit_expressionInExtends4.ts new file mode 100644 index 00000000000..6b3044f227f --- /dev/null +++ b/tests/cases/compiler/declarationEmit_expressionInExtends4.ts @@ -0,0 +1,18 @@ +// @declaration: true + +function getSomething() { + return class D { } +} + +class C extends getSomething() { + +} + +class C2 extends SomeUndefinedFunction() { + +} + + +class C3 extends SomeUndefinedFunction { + +} \ No newline at end of file diff --git a/tests/cases/compiler/declarationEmit_inferedDefaultExportType.ts b/tests/cases/compiler/declarationEmit_inferedDefaultExportType.ts new file mode 100644 index 00000000000..3c3adc1af2f --- /dev/null +++ b/tests/cases/compiler/declarationEmit_inferedDefaultExportType.ts @@ -0,0 +1,9 @@ +// @declaration: true +// @module: commonjs + +// test.ts +export default { + foo: [], + bar: undefined, + baz: null +} \ No newline at end of file diff --git a/tests/cases/compiler/declarationEmit_inferedDefaultExportType2.ts b/tests/cases/compiler/declarationEmit_inferedDefaultExportType2.ts new file mode 100644 index 00000000000..274996cbe12 --- /dev/null +++ b/tests/cases/compiler/declarationEmit_inferedDefaultExportType2.ts @@ -0,0 +1,9 @@ +// @declaration: true +// @module: commonjs + +// test.ts +export = { + foo: [], + bar: undefined, + baz: null +} \ No newline at end of file diff --git a/tests/cases/compiler/declarationEmit_invalidExport.ts b/tests/cases/compiler/declarationEmit_invalidExport.ts new file mode 100644 index 00000000000..8b0826dbf96 --- /dev/null +++ b/tests/cases/compiler/declarationEmit_invalidExport.ts @@ -0,0 +1,7 @@ +// @declaration: true + +if (false) { + export var myClass = 0; +} +export type MyClass = typeof myClass; +} diff --git a/tests/cases/compiler/defaultOfAnyInStrictNullChecks.ts b/tests/cases/compiler/defaultOfAnyInStrictNullChecks.ts new file mode 100644 index 00000000000..17568f48029 --- /dev/null +++ b/tests/cases/compiler/defaultOfAnyInStrictNullChecks.ts @@ -0,0 +1,11 @@ +// @strictNullChecks: true + +// Regression test for #8295 + +function foo() { + try { + } + catch (e) { + let s = e.message; + } +} diff --git a/tests/cases/compiler/destructuringInVariableDeclarations1.ts b/tests/cases/compiler/destructuringInVariableDeclarations1.ts new file mode 100644 index 00000000000..275564c07c5 --- /dev/null +++ b/tests/cases/compiler/destructuringInVariableDeclarations1.ts @@ -0,0 +1,6 @@ +// @target: es6 +// @module: commonjs +export let { toString } = 1; +{ + let { toFixed } = 1; +} diff --git a/tests/cases/compiler/destructuringInVariableDeclarations2.ts b/tests/cases/compiler/destructuringInVariableDeclarations2.ts new file mode 100644 index 00000000000..07190dddd52 --- /dev/null +++ b/tests/cases/compiler/destructuringInVariableDeclarations2.ts @@ -0,0 +1,7 @@ +// @target: es6 +// @module: commonjs +let { toString } = 1; +{ + let { toFixed } = 1; +} +export {}; diff --git a/tests/cases/compiler/destructuringInVariableDeclarations3.ts b/tests/cases/compiler/destructuringInVariableDeclarations3.ts new file mode 100644 index 00000000000..7881b3073a1 --- /dev/null +++ b/tests/cases/compiler/destructuringInVariableDeclarations3.ts @@ -0,0 +1,6 @@ +// @target: es6 +// @module: amd +export let { toString } = 1; +{ + let { toFixed } = 1; +} diff --git a/tests/cases/compiler/destructuringInVariableDeclarations4.ts b/tests/cases/compiler/destructuringInVariableDeclarations4.ts new file mode 100644 index 00000000000..81ed4d04c4e --- /dev/null +++ b/tests/cases/compiler/destructuringInVariableDeclarations4.ts @@ -0,0 +1,7 @@ +// @target: es6 +// @module: amd +let { toString } = 1; +{ + let { toFixed } = 1; +} +export {}; diff --git a/tests/cases/compiler/destructuringInVariableDeclarations5.ts b/tests/cases/compiler/destructuringInVariableDeclarations5.ts new file mode 100644 index 00000000000..610fa8715f3 --- /dev/null +++ b/tests/cases/compiler/destructuringInVariableDeclarations5.ts @@ -0,0 +1,6 @@ +// @target: es6 +// @module: umd +export let { toString } = 1; +{ + let { toFixed } = 1; +} diff --git a/tests/cases/compiler/destructuringInVariableDeclarations6.ts b/tests/cases/compiler/destructuringInVariableDeclarations6.ts new file mode 100644 index 00000000000..2e63209f4e8 --- /dev/null +++ b/tests/cases/compiler/destructuringInVariableDeclarations6.ts @@ -0,0 +1,7 @@ +// @target: es6 +// @module: umd +let { toString } = 1; +{ + let { toFixed } = 1; +} +export {}; diff --git a/tests/cases/compiler/destructuringInVariableDeclarations7.ts b/tests/cases/compiler/destructuringInVariableDeclarations7.ts new file mode 100644 index 00000000000..3a2827eccc3 --- /dev/null +++ b/tests/cases/compiler/destructuringInVariableDeclarations7.ts @@ -0,0 +1,6 @@ +// @target: es6 +// @module: system +export let { toString } = 1; +{ + let { toFixed } = 1; +} diff --git a/tests/cases/compiler/destructuringInVariableDeclarations8.ts b/tests/cases/compiler/destructuringInVariableDeclarations8.ts new file mode 100644 index 00000000000..4925c47d85b --- /dev/null +++ b/tests/cases/compiler/destructuringInVariableDeclarations8.ts @@ -0,0 +1,7 @@ +// @target: es6 +// @module: system +let { toString } = 1; +{ + let { toFixed } = 1; +} +export {}; diff --git a/tests/cases/compiler/enumAssignmentCompat4.ts b/tests/cases/compiler/enumAssignmentCompat4.ts new file mode 100644 index 00000000000..0a5fc896604 --- /dev/null +++ b/tests/cases/compiler/enumAssignmentCompat4.ts @@ -0,0 +1,22 @@ +namespace M { + export enum MyEnum { + BAR + } + export var object2 = { + foo: MyEnum.BAR + }; +} + +namespace N { + export enum MyEnum { + FOO + }; + export var object1 = { + foo: MyEnum.FOO + }; +} + +let broken = [ + N.object1, + M.object2 +]; diff --git a/tests/cases/compiler/exportEqualsDefaultProperty.ts b/tests/cases/compiler/exportEqualsDefaultProperty.ts new file mode 100644 index 00000000000..1adce3cabe1 --- /dev/null +++ b/tests/cases/compiler/exportEqualsDefaultProperty.ts @@ -0,0 +1,12 @@ + +// @Filename: exp.ts +var x = { + "greeting": "hello, world", + "default": 42 +}; + +export = x + +// @Filename: imp.ts +import foo from "./exp"; +foo.toExponential(2); diff --git a/tests/cases/compiler/fallFromLastCase1.ts b/tests/cases/compiler/fallFromLastCase1.ts new file mode 100644 index 00000000000..d8037c61a96 --- /dev/null +++ b/tests/cases/compiler/fallFromLastCase1.ts @@ -0,0 +1,24 @@ +// @noFallthroughCasesInSwitch: true + +declare function use(a: string); + +function foo1(a: number) { + switch (a) { + case 1: + use("1"); + break; + case 2: + use("2"); + } +} + + +function foo2(a: number) { + switch (a) { + case 1: + use("1"); + break; + default: + use("2"); + } +} \ No newline at end of file diff --git a/tests/cases/compiler/fallFromLastCase2.ts b/tests/cases/compiler/fallFromLastCase2.ts new file mode 100644 index 00000000000..231d3512dbe --- /dev/null +++ b/tests/cases/compiler/fallFromLastCase2.ts @@ -0,0 +1,28 @@ +// @noFallthroughCasesInSwitch: true + +declare function use(a: string); + +function foo1(a: number) { + switch (a) { + case 1: + use("1"); + break; + case 2: + use("2"); + case 3: + use("3"); + } +} + + +function foo2(a: number) { + switch (a) { + case 1: + use("1"); + break; + default: + use("2"); + case 2: + use("3"); + } +} \ No newline at end of file diff --git a/tests/cases/compiler/functionAndImportNameConflict.ts b/tests/cases/compiler/functionAndImportNameConflict.ts new file mode 100644 index 00000000000..9126dd20910 --- /dev/null +++ b/tests/cases/compiler/functionAndImportNameConflict.ts @@ -0,0 +1,9 @@ +// @module: commonjs +// @filename: f1.ts +export function f() { +} + +// @filename: f2.ts +import {f} from './f1'; +export function f() { +} \ No newline at end of file diff --git a/tests/cases/compiler/inferenceLimit.ts b/tests/cases/compiler/inferenceLimit.ts new file mode 100644 index 00000000000..adaf13bad22 --- /dev/null +++ b/tests/cases/compiler/inferenceLimit.ts @@ -0,0 +1,41 @@ +// @target: es6 +// @module: commonjs +// @filename: file1.ts +"use strict"; +import * as MyModule from "./mymodule"; + +export class BrokenClass { + + constructor() {} + + public brokenMethod(field: string, value: string) { + return new Promise>((resolve, reject) => { + + let result: Array = []; + + let populateItems = (order) => { + return new Promise((resolve, reject) => { + this.doStuff(order.id) + .then((items) => { + order.items = items; + resolve(order); + }); + }); + }; + + return Promise.all(result.map(populateItems)) + .then((orders: Array) => { + resolve(orders); + }); + }); + } + + public async doStuff(id: number) { + return; + } +} + +// @filename: mymodule.ts +export interface MyModel { + id: number; +} \ No newline at end of file diff --git a/tests/cases/compiler/jsFileCompilationRestParamJsDocFunction.ts b/tests/cases/compiler/jsFileCompilationRestParamJsDocFunction.ts new file mode 100644 index 00000000000..03ad2d1b2ff --- /dev/null +++ b/tests/cases/compiler/jsFileCompilationRestParamJsDocFunction.ts @@ -0,0 +1,27 @@ +// @allowJs: true +// @out: apply.js +// @module: amd + +// @filename: _apply.js +/** + * A faster alternative to `Function#apply`, this function invokes `func` + * with the `this` binding of `thisArg` and the arguments of `args`. + * + * @private + * @param {Function} func The function to invoke. + * @param {*} thisArg The `this` binding of `func`. + * @param {...*} args The arguments to invoke `func` with. + * @returns {*} Returns the result of `func`. + */ +function apply(func, thisArg, args) { + var length = args.length; + switch (length) { + case 0: return func.call(thisArg); + case 1: return func.call(thisArg, args[0]); + case 2: return func.call(thisArg, args[0], args[1]); + case 3: return func.call(thisArg, args[0], args[1], args[2]); + } + return func.apply(thisArg, args); +} + +export default apply; \ No newline at end of file diff --git a/tests/cases/compiler/mergeWithImportedNamespace.ts b/tests/cases/compiler/mergeWithImportedNamespace.ts new file mode 100644 index 00000000000..79a94fd0ba4 --- /dev/null +++ b/tests/cases/compiler/mergeWithImportedNamespace.ts @@ -0,0 +1,10 @@ +// @module:commonjs +// @filename: f1.ts +export namespace N { export var x = 1; } + +// @filename: f2.ts +import {N} from "./f1"; +// partial revert of https://github.com/Microsoft/TypeScript/pull/7583 to prevent breaking changes +export namespace N { + export interface I {x: any} +} \ No newline at end of file diff --git a/tests/cases/compiler/mergeWithImportedType.ts b/tests/cases/compiler/mergeWithImportedType.ts new file mode 100644 index 00000000000..2310022012f --- /dev/null +++ b/tests/cases/compiler/mergeWithImportedType.ts @@ -0,0 +1,8 @@ +// @module:commonjs +// @filename: f1.ts +export enum E {X} + +// @filename: f2.ts +import {E} from "./f1"; +// partial revert of https://github.com/Microsoft/TypeScript/pull/7583 to prevent breaking changes +export type E = E; \ No newline at end of file diff --git a/tests/cases/compiler/modularizeLibrary_ErrorFromUsingES6ArrayWithOnlyES6ArrayLib.ts b/tests/cases/compiler/modularizeLibrary_ErrorFromUsingES6ArrayWithOnlyES6ArrayLib.ts new file mode 100644 index 00000000000..3f6b9a5e35a --- /dev/null +++ b/tests/cases/compiler/modularizeLibrary_ErrorFromUsingES6ArrayWithOnlyES6ArrayLib.ts @@ -0,0 +1,9 @@ +// @lib: es2015.core +// @target: es5 + +// Error missing basic JavaScript objects +function f(x: number, y: number, z: number) { + return Array.from(arguments); +} + +f(1, 2, 3); diff --git a/tests/cases/compiler/modularizeLibrary_ErrorFromUsingES6FeaturesWithOnlyES5Lib.ts b/tests/cases/compiler/modularizeLibrary_ErrorFromUsingES6FeaturesWithOnlyES5Lib.ts new file mode 100644 index 00000000000..290cf0e4211 --- /dev/null +++ b/tests/cases/compiler/modularizeLibrary_ErrorFromUsingES6FeaturesWithOnlyES5Lib.ts @@ -0,0 +1,57 @@ +// @lib: es5 +// @target: es6 + +// All will be error from using ES6 features but only include ES5 library +// Using Es6 array +function f(x: number, y: number, z: number) { + return Array.from(arguments); +} + +f(1, 2, 3); // no error + +// Using ES6 collection +var m = new Map(); +m.clear(); +// Using ES6 iterable +m.keys(); + +// Using ES6 function +function Baz() { } +Baz.name; + +// Using ES6 math +Math.sign(1); + +// Using ES6 object +var o = { + a: 2, + [Symbol.hasInstance](value: any) { + return false; + } +}; +o.hasOwnProperty(Symbol.hasInstance); + +// Using Es6 proxy +var t = {} +var p = new Proxy(t, {}); + +// Using ES6 reflect +Reflect.isExtensible({}); + +// Using Es6 regexp +var reg = new RegExp("/s"); +reg.flags; + +// Using ES6 string +var str = "Hello world"; +str.includes("hello", 0); + +// Using ES6 symbol +var s = Symbol(); + +// Using ES6 wellknown-symbol +const o1 = { + [Symbol.hasInstance](value: any) { + return false; + } +} \ No newline at end of file diff --git a/tests/cases/compiler/modularizeLibrary_ErrorFromUsingWellknownSymbolWithOutES6WellknownSymbolLib.ts b/tests/cases/compiler/modularizeLibrary_ErrorFromUsingWellknownSymbolWithOutES6WellknownSymbolLib.ts new file mode 100644 index 00000000000..c3e1d616ea5 --- /dev/null +++ b/tests/cases/compiler/modularizeLibrary_ErrorFromUsingWellknownSymbolWithOutES6WellknownSymbolLib.ts @@ -0,0 +1,9 @@ +// @lib: es5,es2015.core + +function f(x: number, y: number, z: number) { + return Array.from(arguments); +} + +f(1, 2, 3); // no error +let a = ['c', 'd']; +a[Symbol.isConcatSpreadable] = false; \ No newline at end of file diff --git a/tests/cases/compiler/modularizeLibrary_NoErrorDuplicateLibOptions1.ts b/tests/cases/compiler/modularizeLibrary_NoErrorDuplicateLibOptions1.ts new file mode 100644 index 00000000000..4b2a88c1320 --- /dev/null +++ b/tests/cases/compiler/modularizeLibrary_NoErrorDuplicateLibOptions1.ts @@ -0,0 +1,83 @@ +// @lib: es5,es6,es6 +// @target: es6 + +// Using Es6 array +function f(x: number, y: number, z: number) { + return Array.from(arguments); +} + +f(1, 2, 3); // no error + +// Using ES6 collection +var m = new Map(); +m.clear(); +// Using ES6 iterable +m.keys(); + +// Using ES6 function +function Baz() { } +Baz.name; + +// Using ES6 generator +function* gen() { + let i = 0; + while (i < 10) { + yield i; + i++; + } +} + +function* gen2() { + let i = 0; + while (i < 10) { + yield i; + i++; + } +} + +// Using ES6 math +Math.sign(1); + +// Using ES6 object +var o = { + a: 2, + [Symbol.hasInstance](value: any) { + return false; + } +}; +o.hasOwnProperty(Symbol.hasInstance); + +// Using ES6 promise +async function out() { + return new Promise(function (resolve, reject) {}); +} + +declare var console: any; +out().then(() => { + console.log("Yea!"); +}); + +// Using Es6 proxy +var t = {} +var p = new Proxy(t, {}); + +// Using ES6 reflect +Reflect.isExtensible({}); + +// Using Es6 regexp +var reg = new RegExp("/s"); +reg.flags; + +// Using ES6 string +var str = "Hello world"; +str.includes("hello", 0); + +// Using ES6 symbol +var s = Symbol(); + +// Using ES6 wellknown-symbol +const o1 = { + [Symbol.hasInstance](value: any) { + return false; + } +} \ No newline at end of file diff --git a/tests/cases/compiler/modularizeLibrary_NoErrorDuplicateLibOptions2.ts b/tests/cases/compiler/modularizeLibrary_NoErrorDuplicateLibOptions2.ts new file mode 100644 index 00000000000..9ddfac81223 --- /dev/null +++ b/tests/cases/compiler/modularizeLibrary_NoErrorDuplicateLibOptions2.ts @@ -0,0 +1,83 @@ +// @lib: es5,es2015,es2015.core,es2015.symbol.wellknown +// @target: es6 + +// Using Es6 array +function f(x: number, y: number, z: number) { + return Array.from(arguments); +} + +f(1, 2, 3); // no error + +// Using ES6 collection +var m = new Map(); +m.clear(); +// Using ES6 iterable +m.keys(); + +// Using ES6 function +function Baz() { } +Baz.name; + +// Using ES6 generator +function* gen() { + let i = 0; + while (i < 10) { + yield i; + i++; + } +} + +function* gen2() { + let i = 0; + while (i < 10) { + yield i; + i++; + } +} + +// Using ES6 math +Math.sign(1); + +// Using ES6 object +var o = { + a: 2, + [Symbol.hasInstance](value: any) { + return false; + } +}; +o.hasOwnProperty(Symbol.hasInstance); + +// Using ES6 promise +async function out() { + return new Promise(function (resolve, reject) {}); +} + +declare var console: any; +out().then(() => { + console.log("Yea!"); +}); + +// Using Es6 proxy +var t = {} +var p = new Proxy(t, {}); + +// Using ES6 reflect +Reflect.isExtensible({}); + +// Using Es6 regexp +var reg = new RegExp("/s"); +reg.flags; + +// Using ES6 string +var str = "Hello world"; +str.includes("hello", 0); + +// Using ES6 symbol +var s = Symbol(); + +// Using ES6 wellknown-symbol +const o1 = { + [Symbol.hasInstance](value: any) { + return false; + } +} \ No newline at end of file diff --git a/tests/cases/compiler/modularizeLibrary_TargetES5UsingES6Lib.ts b/tests/cases/compiler/modularizeLibrary_TargetES5UsingES6Lib.ts new file mode 100644 index 00000000000..e308912757b --- /dev/null +++ b/tests/cases/compiler/modularizeLibrary_TargetES5UsingES6Lib.ts @@ -0,0 +1,83 @@ +// @lib: es5,es6 +// @target: es6 + +// Using Es6 array +function f(x: number, y: number, z: number) { + return Array.from(arguments); +} + +f(1, 2, 3); // no error + +// Using ES6 collection +var m = new Map(); +m.clear(); +// Using ES6 iterable +m.keys(); + +// Using ES6 function +function Baz() { } +Baz.name; + +// Using ES6 generator +function* gen() { + let i = 0; + while (i < 10) { + yield i; + i++; + } +} + +function* gen2() { + let i = 0; + while (i < 10) { + yield i; + i++; + } +} + +// Using ES6 math +Math.sign(1); + +// Using ES6 object +var o = { + a: 2, + [Symbol.hasInstance](value: any) { + return false; + } +}; +o.hasOwnProperty(Symbol.hasInstance); + +// Using ES6 promise +async function out() { + return new Promise(function (resolve, reject) {}); +} + +declare var console: any; +out().then(() => { + console.log("Yea!"); +}); + +// Using Es6 proxy +var t = {} +var p = new Proxy(t, {}); + +// Using ES6 reflect +Reflect.isExtensible({}); + +// Using Es6 regexp +var reg = new RegExp("/s"); +reg.flags; + +// Using ES6 string +var str = "Hello world"; +str.includes("hello", 0); + +// Using ES6 symbol +var s = Symbol(); + +// Using ES6 wellknown-symbol +const o1 = { + [Symbol.hasInstance](value: any) { + return false; + } +} \ No newline at end of file diff --git a/tests/cases/compiler/modularizeLibrary_TargetES6UsingES6Lib.ts b/tests/cases/compiler/modularizeLibrary_TargetES6UsingES6Lib.ts new file mode 100644 index 00000000000..3a938fe1a69 --- /dev/null +++ b/tests/cases/compiler/modularizeLibrary_TargetES6UsingES6Lib.ts @@ -0,0 +1,56 @@ +// @lib: es6 +// @target: es6 + +// Using Es6 array +function f(x: number, y: number, z: number) { + return Array.from(arguments); +} + +f(1, 2, 3); // no error + +// Using ES6 collection +var m = new Map(); +m.clear(); +// Using ES6 iterable +m.keys(); + +// Using ES6 function +function Baz() { } +Baz.name; + +// Using ES6 math +Math.sign(1); + +// Using ES6 object +var o = { + a: 2, + [Symbol.hasInstance](value: any) { + return false; + } +}; +o.hasOwnProperty(Symbol.hasInstance); + +// Using Es6 proxy +var t = {} +var p = new Proxy(t, {}); + +// Using ES6 reflect +Reflect.isExtensible({}); + +// Using Es6 regexp +var reg = new RegExp("/s"); +reg.flags; + +// Using ES6 string +var str = "Hello world"; +str.includes("hello", 0); + +// Using ES6 symbol +var s = Symbol(); + +// Using ES6 wellknown-symbol +const o1 = { + [Symbol.hasInstance](value: any) { + return false; + } +} \ No newline at end of file diff --git a/tests/cases/compiler/modularizeLibrary_UsingES5LibAndES6ArrayLib.ts b/tests/cases/compiler/modularizeLibrary_UsingES5LibAndES6ArrayLib.ts new file mode 100644 index 00000000000..b7697af1f7f --- /dev/null +++ b/tests/cases/compiler/modularizeLibrary_UsingES5LibAndES6ArrayLib.ts @@ -0,0 +1,9 @@ +// @lib: es5,es2015.core +// @target: es5 + +// No error +function f(x: number, y: number, z: number) { + return Array.from(arguments); +} + +f(1, 2, 3); \ No newline at end of file diff --git a/tests/cases/compiler/modularizeLibrary_UsingES5LibAndES6FeatureLibs.ts b/tests/cases/compiler/modularizeLibrary_UsingES5LibAndES6FeatureLibs.ts new file mode 100644 index 00000000000..327df2e679f --- /dev/null +++ b/tests/cases/compiler/modularizeLibrary_UsingES5LibAndES6FeatureLibs.ts @@ -0,0 +1,15 @@ +// @lib: es5,es2015.core,es2015.symbol,es2015.proxy,es2015.generator,es2015.iterable,es2015.reflect +// @target: es6 + +var s = Symbol(); +var t = {}; +var p = new Proxy(t, {}); + +Reflect.ownKeys({}); + +function* idGen() { + let i = 10; + while (i < 20) { + yield i + 2; + } +} diff --git a/tests/cases/compiler/modularizeLibrary_UsingES5LibES6ArrayLibES6WellknownSymbolLib.ts b/tests/cases/compiler/modularizeLibrary_UsingES5LibES6ArrayLibES6WellknownSymbolLib.ts new file mode 100644 index 00000000000..51a0ee5d1f5 --- /dev/null +++ b/tests/cases/compiler/modularizeLibrary_UsingES5LibES6ArrayLibES6WellknownSymbolLib.ts @@ -0,0 +1,9 @@ +// @lib: es5,es2015.core,es2015.symbol.wellknown + +function f(x: number, y: number, z: number) { + return Array.from(arguments); +} + +f(1, 2, 3); // no error +let a = ['c', 'd']; +a[Symbol.isConcatSpreadable] = false; \ No newline at end of file diff --git a/tests/cases/compiler/moduleAugmentationInDependency.ts b/tests/cases/compiler/moduleAugmentationInDependency.ts new file mode 100644 index 00000000000..23d10edbd74 --- /dev/null +++ b/tests/cases/compiler/moduleAugmentationInDependency.ts @@ -0,0 +1,7 @@ +// @filename: /node_modules/A/index.d.ts +declare module "ext" { +} +export {}; + +// @filename: /src/app.ts +import "A" \ No newline at end of file diff --git a/tests/cases/compiler/moduleAugmentationInDependency2.ts b/tests/cases/compiler/moduleAugmentationInDependency2.ts new file mode 100644 index 00000000000..189e020fd2e --- /dev/null +++ b/tests/cases/compiler/moduleAugmentationInDependency2.ts @@ -0,0 +1,7 @@ +// @filename: /node_modules/A/index.ts +declare module "ext" { +} +export {}; + +// @filename: /src/app.ts +import "A" \ No newline at end of file diff --git a/tests/cases/compiler/module_augmentUninstantiatedModule.ts b/tests/cases/compiler/module_augmentUninstantiatedModule.ts new file mode 100644 index 00000000000..4d71c6c1389 --- /dev/null +++ b/tests/cases/compiler/module_augmentUninstantiatedModule.ts @@ -0,0 +1,9 @@ +declare module "foo" { + namespace M {} + var M; + export = M; +} + +declare module "bar" { + module "foo" {} +} \ No newline at end of file diff --git a/tests/cases/compiler/module_augmentUninstantiatedModule2.ts b/tests/cases/compiler/module_augmentUninstantiatedModule2.ts new file mode 100644 index 00000000000..101e26bf85b --- /dev/null +++ b/tests/cases/compiler/module_augmentUninstantiatedModule2.ts @@ -0,0 +1,2 @@ +// @module: commonjs // @moduleResolution: node // @fileName: app.ts import ng = require("angular"); import "./moduleAugmentation"; var x: number = ng.getNumber(); // @filename: moduleAugmentation.ts import * as ng from "angular" declare module "angular" { export interface IAngularStatic { getNumber: () => number; } } // @filename: node_modules/angular/index.d.ts +declare var ng: ng.IAngularStatic; declare module ng { export interface IModule { name: string; } export interface IAngularStatic { module: (s: string) => IModule; } } export = ng; \ No newline at end of file diff --git a/tests/cases/compiler/narrowingOfDottedNames.ts b/tests/cases/compiler/narrowingOfDottedNames.ts new file mode 100644 index 00000000000..af417f0830c --- /dev/null +++ b/tests/cases/compiler/narrowingOfDottedNames.ts @@ -0,0 +1,39 @@ +// Repro from #8383 + +class A { + prop: { a: string; }; +} + +class B { + prop: { b: string; } +} + +function isA(x: any): x is A { + return x instanceof A; +} + +function isB(x: any): x is B { + return x instanceof B; +} + +function f1(x: A | B) { + while (true) { + if (x instanceof A) { + x.prop.a; + } + else if (x instanceof B) { + x.prop.b; + } + } +} + +function f2(x: A | B) { + while (true) { + if (isA(x)) { + x.prop.a; + } + else if (isB(x)) { + x.prop.b; + } + } +} diff --git a/tests/cases/compiler/newNamesInGlobalAugmentations1.ts b/tests/cases/compiler/newNamesInGlobalAugmentations1.ts new file mode 100644 index 00000000000..73ed4e5e2e8 --- /dev/null +++ b/tests/cases/compiler/newNamesInGlobalAugmentations1.ts @@ -0,0 +1,22 @@ +// @target: es6 + +// @filename: f1.d.ts +export {}; + +declare module M.M1 { + export let x: number; +} +declare global { + interface SymbolConstructor { + observable: symbol; + } + class Cls {x} + let [a, b]: number[]; + export import X = M.M1.x; +} + +// @filename: main.ts + +Symbol.observable; +new Cls().x +let c = a + b + X; \ No newline at end of file diff --git a/tests/cases/compiler/noImplicitAnyDestructuringInPrivateMethod.ts b/tests/cases/compiler/noImplicitAnyDestructuringInPrivateMethod.ts new file mode 100644 index 00000000000..b6ff1fa6969 --- /dev/null +++ b/tests/cases/compiler/noImplicitAnyDestructuringInPrivateMethod.ts @@ -0,0 +1,13 @@ +// @noimplicitany: true +// @declaration: true +type Arg = { + a: number; +}; +export class Bar { + private bar({ a, }: Arg): number { + return a; + } +} +export declare class Bar2 { + private bar({ a, }); +} \ No newline at end of file diff --git a/tests/cases/compiler/noImplicitAnyDestructuringParameterDeclaration.ts b/tests/cases/compiler/noImplicitAnyDestructuringParameterDeclaration.ts new file mode 100644 index 00000000000..9f4e579dcff --- /dev/null +++ b/tests/cases/compiler/noImplicitAnyDestructuringParameterDeclaration.ts @@ -0,0 +1,11 @@ +// @noimplicitany: true +function f1([a], {b}, c, d) { // error +} +function f2([a = undefined], {b = null}, c = undefined, d = null) { // error +} +function f3([a]: [any], {b}: { b: any }, c: any, d: any) { +} +function f4({b}: { b }, x: { b }) { // error in type instead +} +function f5([a1] = [undefined], {b1} = { b1: null }, c1 = undefined, d1 = null) { // error +} \ No newline at end of file diff --git a/tests/cases/compiler/noImplicitAnyDestructuringVarDeclaration.ts b/tests/cases/compiler/noImplicitAnyDestructuringVarDeclaration.ts new file mode 100644 index 00000000000..6988416d4de --- /dev/null +++ b/tests/cases/compiler/noImplicitAnyDestructuringVarDeclaration.ts @@ -0,0 +1,10 @@ +// @noimplicitany: true +var [a], {b}, c, d; // error + +var [a1 = undefined], {b1 = null}, c1 = undefined, d1 = null; // error + +var [a2]: [any], {b2}: { b2: any }, c2: any, d2: any; + +var {b3}: { b3 }, c3: { b3 }; // error in type instead + +var [a1] = [undefined], {b1} = { b1: null }, c1 = undefined, d1 = null; // error \ No newline at end of file diff --git a/tests/cases/compiler/noImplicitReturnInConstructors.ts b/tests/cases/compiler/noImplicitReturnInConstructors.ts new file mode 100644 index 00000000000..ac6f5145318 --- /dev/null +++ b/tests/cases/compiler/noImplicitReturnInConstructors.ts @@ -0,0 +1,6 @@ +// @noImplicitReturns: true +class C { + constructor() { + return; + } +} \ No newline at end of file diff --git a/tests/cases/compiler/noImplicitReturnsInAsync1.ts b/tests/cases/compiler/noImplicitReturnsInAsync1.ts new file mode 100644 index 00000000000..a4aadd81f75 --- /dev/null +++ b/tests/cases/compiler/noImplicitReturnsInAsync1.ts @@ -0,0 +1,9 @@ +// @target: es6 +// @noImplicitReturns: true + +async function test(isError: boolean = false) { + if (isError === true) { + return; + } + let x = await Promise.resolve("The test is passed without an error."); +} \ No newline at end of file diff --git a/tests/cases/compiler/noImplicitReturnsInAsync2.ts b/tests/cases/compiler/noImplicitReturnsInAsync2.ts new file mode 100644 index 00000000000..20488b6bd37 --- /dev/null +++ b/tests/cases/compiler/noImplicitReturnsInAsync2.ts @@ -0,0 +1,38 @@ +// @target: es6 +// @noImplicitReturns: true + +// Should be an error, Promise, currently retorted correctly +async function test3(isError: boolean = true) { + if (isError === true) { + return 6; + } +} + +// Should not be an error, Promise, currently **not** working +async function test4(isError: boolean = true) { + if (isError === true) { + return undefined; + } +} + +// should not be error, Promise currently working correctly +async function test5(isError: boolean = true): Promise { //should not be error + if (isError === true) { + return undefined; + } +} + + +// should be error, currently reported correctly +async function test6(isError: boolean = true): Promise { + if (isError === true) { + return undefined; + } +} + +// infered to be Promise, should not be an error, currently reported correctly +async function test7(isError: boolean = true) { + if (isError === true) { + return; + } +} \ No newline at end of file diff --git a/tests/cases/compiler/noImplicitReturnsWithoutReturnExpression.ts b/tests/cases/compiler/noImplicitReturnsWithoutReturnExpression.ts new file mode 100644 index 00000000000..f532b1280d3 --- /dev/null +++ b/tests/cases/compiler/noImplicitReturnsWithoutReturnExpression.ts @@ -0,0 +1,25 @@ +// @noImplicitReturns: true +function isMissingReturnExpression(): number { + return; +} + +function isMissingReturnExpression2(): any { + return; +} + +function isMissingReturnExpression3(): number|void { + return; +} + +function isMissingReturnExpression4(): void { + return; +} + +function isMissingReturnExpression5(x) { + if (x) { + return 0; + } + else { + return; + } +} diff --git a/tests/cases/compiler/noImplicitThisFunctions.ts b/tests/cases/compiler/noImplicitThisFunctions.ts new file mode 100644 index 00000000000..45f0e5a1eb9 --- /dev/null +++ b/tests/cases/compiler/noImplicitThisFunctions.ts @@ -0,0 +1,19 @@ +// @noImplicitThis: true + +function f1(x) { + // implicit any is still allowed + return x + 1; +} + +function f2(y: number) { + // ok: no reference to this + return y + 1; +} + +function f3(z: number): number { + // error: this is implicitly any + return this.a + z; +} + +// error: `this` is `window`, but is still of type `any` +let f4: (b: number) => number = b => this.c + b; diff --git a/tests/cases/compiler/noImplicitThisObjectLiterals.ts b/tests/cases/compiler/noImplicitThisObjectLiterals.ts new file mode 100644 index 00000000000..abd5d9dcfba --- /dev/null +++ b/tests/cases/compiler/noImplicitThisObjectLiterals.ts @@ -0,0 +1,10 @@ +// @noImplicitThis: true +let o = { + d: this, // error, this: any + m() { + return this.d.length; // error, this: any + }, + f: function() { + return this.d.length; // error, this: any + } +} diff --git a/tests/cases/compiler/pathMappingBasedModuleResolution1_classic.ts b/tests/cases/compiler/pathMappingBasedModuleResolution1_classic.ts index 20845a49372..054d6ed8a0b 100644 --- a/tests/cases/compiler/pathMappingBasedModuleResolution1_classic.ts +++ b/tests/cases/compiler/pathMappingBasedModuleResolution1_classic.ts @@ -1,5 +1,5 @@ // @module: amd -// @traceModuleResolution: true +// @traceResolution: true // paths should error in the absence of baseurl diff --git a/tests/cases/compiler/pathMappingBasedModuleResolution1_node.ts b/tests/cases/compiler/pathMappingBasedModuleResolution1_node.ts index 392e85bd7c3..a0ce95f2c1a 100644 --- a/tests/cases/compiler/pathMappingBasedModuleResolution1_node.ts +++ b/tests/cases/compiler/pathMappingBasedModuleResolution1_node.ts @@ -1,5 +1,5 @@ // @module: commonjs -// @traceModuleResolution: true +// @traceResolution: true // paths should error in the absence of baseurl // @filename: c:/root/tsconfig.json diff --git a/tests/cases/compiler/pathMappingBasedModuleResolution2_classic.ts b/tests/cases/compiler/pathMappingBasedModuleResolution2_classic.ts index 6c84a197eeb..f24e857fa41 100644 --- a/tests/cases/compiler/pathMappingBasedModuleResolution2_classic.ts +++ b/tests/cases/compiler/pathMappingBasedModuleResolution2_classic.ts @@ -1,5 +1,5 @@ // @module: amd -// @traceModuleResolution: true +// @traceResolution: true // baseurl is defined in tsconfig.json // paths has errors diff --git a/tests/cases/compiler/pathMappingBasedModuleResolution2_node.ts b/tests/cases/compiler/pathMappingBasedModuleResolution2_node.ts index 78ef7215e73..ac4d51bacf5 100644 --- a/tests/cases/compiler/pathMappingBasedModuleResolution2_node.ts +++ b/tests/cases/compiler/pathMappingBasedModuleResolution2_node.ts @@ -1,5 +1,5 @@ // @module: commonjs -// @traceModuleResolution: true +// @traceResolution: true // baseurl is defined in tsconfig.json // paths has errors diff --git a/tests/cases/compiler/pathMappingBasedModuleResolution3_classic.ts b/tests/cases/compiler/pathMappingBasedModuleResolution3_classic.ts index d46308d089f..350346adebc 100644 --- a/tests/cases/compiler/pathMappingBasedModuleResolution3_classic.ts +++ b/tests/cases/compiler/pathMappingBasedModuleResolution3_classic.ts @@ -1,7 +1,7 @@ // @moduleResolution: classic // @module: amd // @baseUrl: c:/root -// @traceModuleResolution: true +// @traceResolution: true // baseUrl set via command line diff --git a/tests/cases/compiler/pathMappingBasedModuleResolution3_node.ts b/tests/cases/compiler/pathMappingBasedModuleResolution3_node.ts index 30e95c9303e..6cab1df06b0 100644 --- a/tests/cases/compiler/pathMappingBasedModuleResolution3_node.ts +++ b/tests/cases/compiler/pathMappingBasedModuleResolution3_node.ts @@ -1,7 +1,7 @@ // @moduleResolution: node // @module: commonjs // @baseUrl: c:/root -// @traceModuleResolution: true +// @traceResolution: true // baseUrl set via command line diff --git a/tests/cases/compiler/pathMappingBasedModuleResolution4_classic.ts b/tests/cases/compiler/pathMappingBasedModuleResolution4_classic.ts index 723de05b70c..fbf11e61716 100644 --- a/tests/cases/compiler/pathMappingBasedModuleResolution4_classic.ts +++ b/tests/cases/compiler/pathMappingBasedModuleResolution4_classic.ts @@ -1,6 +1,6 @@ // @moduleResolution: classic // @module: amd -// @traceModuleResolution: true +// @traceResolution: true // baseUrl set via command line diff --git a/tests/cases/compiler/pathMappingBasedModuleResolution4_node.ts b/tests/cases/compiler/pathMappingBasedModuleResolution4_node.ts index e68635e205e..cfb90ca1cc5 100644 --- a/tests/cases/compiler/pathMappingBasedModuleResolution4_node.ts +++ b/tests/cases/compiler/pathMappingBasedModuleResolution4_node.ts @@ -1,6 +1,6 @@ // @moduleResolution: node // @module: commonjs -// @traceModuleResolution: true +// @traceResolution: true // baseUrl set via command line diff --git a/tests/cases/compiler/pathMappingBasedModuleResolution5_classic.ts b/tests/cases/compiler/pathMappingBasedModuleResolution5_classic.ts index a7662688e37..9779f0ca644 100644 --- a/tests/cases/compiler/pathMappingBasedModuleResolution5_classic.ts +++ b/tests/cases/compiler/pathMappingBasedModuleResolution5_classic.ts @@ -1,5 +1,5 @@ // @module: amd -// @traceModuleResolution: true +// @traceResolution: true // paths is defined in tsconfig.json // @filename: c:/root/tsconfig.json diff --git a/tests/cases/compiler/pathMappingBasedModuleResolution5_node.ts b/tests/cases/compiler/pathMappingBasedModuleResolution5_node.ts index ef5ef0afd6a..3606ab08cd1 100644 --- a/tests/cases/compiler/pathMappingBasedModuleResolution5_node.ts +++ b/tests/cases/compiler/pathMappingBasedModuleResolution5_node.ts @@ -1,5 +1,5 @@ // @module: commonjs -// @traceModuleResolution: true +// @traceResolution: true // paths is defined in tsconfig.json // @filename: c:/root/tsconfig.json diff --git a/tests/cases/compiler/pathMappingBasedModuleResolution6_classic.ts b/tests/cases/compiler/pathMappingBasedModuleResolution6_classic.ts index adaba8478c9..5ce4bd2a18f 100644 --- a/tests/cases/compiler/pathMappingBasedModuleResolution6_classic.ts +++ b/tests/cases/compiler/pathMappingBasedModuleResolution6_classic.ts @@ -1,5 +1,5 @@ // @module: amd -// @traceModuleResolution: true +// @traceResolution: true // @filename: c:/root/src/tsconfig.json { diff --git a/tests/cases/compiler/pathMappingBasedModuleResolution6_node.ts b/tests/cases/compiler/pathMappingBasedModuleResolution6_node.ts index a3d0feadf7c..29a82e5412d 100644 --- a/tests/cases/compiler/pathMappingBasedModuleResolution6_node.ts +++ b/tests/cases/compiler/pathMappingBasedModuleResolution6_node.ts @@ -1,5 +1,5 @@ // @module: commonjs -// @traceModuleResolution: true +// @traceResolution: true // @filename: c:/root/src/tsconfig.json { diff --git a/tests/cases/compiler/pathMappingBasedModuleResolution7_classic.ts b/tests/cases/compiler/pathMappingBasedModuleResolution7_classic.ts index af092df5ce9..81c2328df67 100644 --- a/tests/cases/compiler/pathMappingBasedModuleResolution7_classic.ts +++ b/tests/cases/compiler/pathMappingBasedModuleResolution7_classic.ts @@ -1,5 +1,5 @@ // @module: amd -// @traceModuleResolution: true +// @traceResolution: true // @filename: c:/root/src/tsconfig.json { diff --git a/tests/cases/compiler/pathMappingBasedModuleResolution7_node.ts b/tests/cases/compiler/pathMappingBasedModuleResolution7_node.ts index faecbe4adb9..1ba9630e0cf 100644 --- a/tests/cases/compiler/pathMappingBasedModuleResolution7_node.ts +++ b/tests/cases/compiler/pathMappingBasedModuleResolution7_node.ts @@ -1,5 +1,5 @@ // @module: commonjs -// @traceModuleResolution: true +// @traceResolution: true // @filename: c:/root/src/tsconfig.json { diff --git a/tests/cases/compiler/pathsValidation1.ts b/tests/cases/compiler/pathsValidation1.ts new file mode 100644 index 00000000000..45a4409cf03 --- /dev/null +++ b/tests/cases/compiler/pathsValidation1.ts @@ -0,0 +1,11 @@ +// @filename: tsconfig.json +{ + "compilerOptions": { + "baseUrl": ".", + "paths": { + "*": "*" + } + } +} +// @filename: a.ts +let x = 1; \ No newline at end of file diff --git a/tests/cases/compiler/pathsValidation2.ts b/tests/cases/compiler/pathsValidation2.ts new file mode 100644 index 00000000000..b15ad4e236a --- /dev/null +++ b/tests/cases/compiler/pathsValidation2.ts @@ -0,0 +1,11 @@ +// @filename: tsconfig.json +{ + "compilerOptions": { + "baseUrl": ".", + "paths": { + "*": [1] + } + } +} +// @filename: a.ts +let x = 1; \ No newline at end of file diff --git a/tests/cases/compiler/shorthand-property-es5-es6.ts b/tests/cases/compiler/shorthand-property-es5-es6.ts new file mode 100644 index 00000000000..8c8ae4368a0 --- /dev/null +++ b/tests/cases/compiler/shorthand-property-es5-es6.ts @@ -0,0 +1,8 @@ +// @target: ES5 +// @module: ES6 +// @declaration: true + +// @filename: test.ts +import {foo} from './foo'; +const baz = 42; +const bar = { foo, baz }; diff --git a/tests/cases/compiler/shorthand-property-es6-amd.ts b/tests/cases/compiler/shorthand-property-es6-amd.ts new file mode 100644 index 00000000000..0f2a62ad86c --- /dev/null +++ b/tests/cases/compiler/shorthand-property-es6-amd.ts @@ -0,0 +1,8 @@ +// @target: ES6 +// @module: amd +// @declaration: true + +// @filename: test.ts +import {foo} from './foo'; +const baz = 42; +const bar = { foo, baz }; diff --git a/tests/cases/compiler/shorthand-property-es6-es6.ts b/tests/cases/compiler/shorthand-property-es6-es6.ts new file mode 100644 index 00000000000..f904e4f8dcf --- /dev/null +++ b/tests/cases/compiler/shorthand-property-es6-es6.ts @@ -0,0 +1,8 @@ +// @target: ES6 +// @module: ES6 +// @declaration: true + +// @filename: test.ts +import {foo} from './foo'; +const baz = 42; +const bar = { foo, baz }; diff --git a/tests/cases/compiler/singleLineCommentInConciseArrowFunctionES3.ts b/tests/cases/compiler/singleLineCommentInConciseArrowFunctionES3.ts new file mode 100644 index 00000000000..0538df1c2d0 --- /dev/null +++ b/tests/cases/compiler/singleLineCommentInConciseArrowFunctionES3.ts @@ -0,0 +1,5 @@ +function test() { + return () => + // some comments here; + 123; +} \ No newline at end of file diff --git a/tests/cases/compiler/staticAnonymousTypeNotReferencingTypeParameter.ts b/tests/cases/compiler/staticAnonymousTypeNotReferencingTypeParameter.ts new file mode 100644 index 00000000000..3923e1d707f --- /dev/null +++ b/tests/cases/compiler/staticAnonymousTypeNotReferencingTypeParameter.ts @@ -0,0 +1,141 @@ +// This test case is a condensed version of Angular 2's ListWrapper. Prior to #7448 +// this would cause the compiler to run out of memory. + +function outer(x: T) { + class Inner { + static y: T = x; + } + return Inner; +} +let y: number = outer(5).y; + +class ListWrapper2 { + static clone(dit: typeof ListWrapper2, array: T[]): T[] { return array.slice(0); } + static reversed(dit: typeof ListWrapper2, array: T[]): T[] { + var a = ListWrapper2.clone(dit, array); + return a; + } +} +namespace tessst { + /** + * Iterates through 'array' by index and performs the callback on each element of array until the callback + * returns a truthy value, then returns that value. + * If no such value is found, the callback is applied to each element of array and undefined is returned. + */ + export function funkyFor(array: T[], callback: (element: T, index: number) => U): U { + if (array) { + for (let i = 0, len = array.length; i < len; i++) { + const result = callback(array[i], i); + if (result) { + return result; + } + } + } + return undefined; + } +} +interface Scanner { + scanRange(start: number, length: number, callback: () => T): T; +} +class ListWrapper { + // JS has no way to express a statically fixed size list, but dart does so we + // keep both methods. + static createFixedSize(dit: typeof ListWrapper, size: number): any[] { return new Array(size); } + static createGrowableSize(dit: typeof ListWrapper, size: number): any[] { return new Array(size); } + static clone(dit: typeof ListWrapper, array: T[]): T[] { return array.slice(0); } + static forEachWithIndex(dit: typeof ListWrapper, array: T[], fn: (t: T, n: number) => void) { + for (var i = 0; i < array.length; i++) { + fn(array[i], i); + } + } + static first(dit: typeof ListWrapper, array: T[]): T { + if (!array) return null; + return array[0]; + } + static last(dit: typeof ListWrapper, array: T[]): T { + if (!array || array.length == 0) return null; + return array[array.length - 1]; + } + static indexOf(dit: typeof ListWrapper, array: T[], value: T, startIndex: number = 0): number { + return array.indexOf(value, startIndex); + } + static contains(dit: typeof ListWrapper, list: T[], el: T): boolean { return list.indexOf(el) !== -1; } + static reversed(dit: typeof ListWrapper, array: T[]): T[] { + var a = ListWrapper.clone(dit, array); + let scanner: Scanner; + scanner.scanRange(3, 5, () => { }); + return tessst.funkyFor(array, t => t.toString()) ? a.reverse() : a; + } + static concat(dit: typeof ListWrapper, a: any[], b: any[]): any[] { return a.concat(b); } + static insert(dit: typeof ListWrapper, list: T[], index: number, value: T) { list.splice(index, 0, value); } + static removeAt(dit: typeof ListWrapper, list: T[], index: number): T { + var res = list[index]; + list.splice(index, 1); + return res; + } + static removeAll(dit: typeof ListWrapper, list: T[], items: T[]) { + for (var i = 0; i < items.length; ++i) { + var index = list.indexOf(items[i]); + list.splice(index, 1); + } + } + static remove(dit: typeof ListWrapper, list: T[], el: T): boolean { + var index = list.indexOf(el); + if (index > -1) { + list.splice(index, 1); + return true; + } + return false; + } + static clear(dit: typeof ListWrapper, list: any[]) { list.length = 0; } + static isEmpty(dit: typeof ListWrapper, list: any[]): boolean { return list.length == 0; } + static fill(dit: typeof ListWrapper, list: any[], value: any, start: number = 0, end: number = null) { + list.fill(value, start, end === null ? list.length : end); + } + static equals(dit: typeof ListWrapper, a: any[], b: any[]): boolean { + if (a.length != b.length) return false; + for (var i = 0; i < a.length; ++i) { + if (a[i] !== b[i]) return false; + } + return true; + } + static slice(dit: typeof ListWrapper, l: T[], from: number = 0, to: number = null): T[] { + return l.slice(from, to === null ? undefined : to); + } + static splice(dit: typeof ListWrapper, l: T[], from: number, length: number): T[] { return l.splice(from, length); } + static sort(dit: typeof ListWrapper, l: T[], compareFn?: (a: T, b: T) => number) { + if (isPresent(compareFn)) { + l.sort(compareFn); + } else { + l.sort(); + } + } + static toString(dit: typeof ListWrapper, l: T[]): string { return l.toString(); } + static toJSON(dit: typeof ListWrapper, l: T[]): string { return JSON.stringify(l); } + + static maximum(dit: typeof ListWrapper, list: T[], predicate: (t: T) => number): T { + if (list.length == 0) { + return null; + } + var solution: T = null; + var maxValue = -Infinity; + for (var index = 0; index < list.length; index++) { + var candidate = list[index]; + if (isBlank(candidate)) { + continue; + } + var candidateValue = predicate(candidate); + if (candidateValue > maxValue) { + solution = candidate; + maxValue = candidateValue; + } + } + return solution; + } +} +let cloned = ListWrapper.clone(ListWrapper, [1,2,3,4]); +declare function isBlank(x: any): boolean; +declare function isPresent(compareFn?: (a: T, b: T) => number): boolean; +interface Array { + fill(value: any, start: number, end: number): void; +} \ No newline at end of file diff --git a/tests/cases/compiler/systemModuleTargetES6.ts b/tests/cases/compiler/systemModuleTargetES6.ts new file mode 100644 index 00000000000..a41b0a62c86 --- /dev/null +++ b/tests/cases/compiler/systemModuleTargetES6.ts @@ -0,0 +1,15 @@ +// @target: ES6 +// @module: System +export class MyClass { } +export class MyClass2 { + static value = 42; + static getInstance() { return MyClass2.value; } +} + +export function myFunction() { + return new MyClass(); +} + +export function myFunction2() { + return new MyClass2(); +} \ No newline at end of file diff --git a/tests/cases/compiler/typeReferenceDirectives1.ts b/tests/cases/compiler/typeReferenceDirectives1.ts new file mode 100644 index 00000000000..2127bd13f7b --- /dev/null +++ b/tests/cases/compiler/typeReferenceDirectives1.ts @@ -0,0 +1,14 @@ +// @noImplicitReferences: true +// @traceResolution: true +// @declaration: true +// @typesRoot: / + + +// @filename: /types/lib/index.d.ts +interface $ { x } + +// @filename: /app.ts +/// +interface A { + x: $ +} \ No newline at end of file diff --git a/tests/cases/compiler/typeReferenceDirectives10.ts b/tests/cases/compiler/typeReferenceDirectives10.ts new file mode 100644 index 00000000000..bf0768993c9 --- /dev/null +++ b/tests/cases/compiler/typeReferenceDirectives10.ts @@ -0,0 +1,17 @@ +// @noImplicitReferences: true +// @declaration: true +// @typesRoot: / +// @traceResolution: true + +// @filename: /ref.d.ts +export interface $ { x } + +// @filename: /types/lib/index.d.ts +declare let $: { x: number } + +// @filename: /app.ts +/// +import {$} from "./ref"; +export interface A { + x: $ +} diff --git a/tests/cases/compiler/typeReferenceDirectives11.ts b/tests/cases/compiler/typeReferenceDirectives11.ts new file mode 100644 index 00000000000..c955a5daffc --- /dev/null +++ b/tests/cases/compiler/typeReferenceDirectives11.ts @@ -0,0 +1,19 @@ +// @noImplicitReferences: true +// @declaration: true +// @typesRoot: / +// @traceResolution: true +// @types: lib +// @out: output.js + +// @filename: /types/lib/index.d.ts + +interface Lib { x } + +// @filename: /mod1.ts + +export function foo(): Lib { return {x: 1} } + +// @filename: /mod2.ts + +import {foo} from "./mod1"; +export const bar = foo(); \ No newline at end of file diff --git a/tests/cases/compiler/typeReferenceDirectives12.ts b/tests/cases/compiler/typeReferenceDirectives12.ts new file mode 100644 index 00000000000..ef3c8d9755f --- /dev/null +++ b/tests/cases/compiler/typeReferenceDirectives12.ts @@ -0,0 +1,37 @@ +// @noImplicitReferences: true +// @declaration: true +// @typesRoot: / +// @traceResolution: true +// @out: output.js + +// @filename: /types/lib/index.d.ts + +interface Lib { x } + +// @filename: /main.ts +export class Cls { + x +} + +// @filename: /mod1.ts +/// + +import {Cls} from "./main"; +Cls.prototype.foo = function() { return undefined; } + +declare module "./main" { + interface Cls { + foo(): Lib; + } + namespace Cls { + function bar(): Lib; + } +} + +// @filename: /mod2.ts +import { Cls } from "./main"; +import "./mod1"; + +export const cls = Cls; +export const foo = new Cls().foo(); +export const bar = Cls.bar(); \ No newline at end of file diff --git a/tests/cases/compiler/typeReferenceDirectives13.ts b/tests/cases/compiler/typeReferenceDirectives13.ts new file mode 100644 index 00000000000..816d419e9d5 --- /dev/null +++ b/tests/cases/compiler/typeReferenceDirectives13.ts @@ -0,0 +1,17 @@ +// @noImplicitReferences: true +// @declaration: true +// @typesRoot: / +// @traceResolution: true + +// @filename: /ref.d.ts +export interface $ { x } + +// @filename: /types/lib/index.d.ts +declare let $: { x: number } + +// @filename: /app.ts +/// +import {$} from "./ref"; +export interface A { + x: () => typeof $ +} diff --git a/tests/cases/compiler/typeReferenceDirectives2.ts b/tests/cases/compiler/typeReferenceDirectives2.ts new file mode 100644 index 00000000000..eb651728cea --- /dev/null +++ b/tests/cases/compiler/typeReferenceDirectives2.ts @@ -0,0 +1,13 @@ +// @noImplicitReferences: true +// @traceResolution: true +// @declaration: true +// @typesRoot: / +// @types: lib + +// @filename: /types/lib/index.d.ts +interface $ { x } + +// @filename: /app.ts +interface A { + x: $ +} \ No newline at end of file diff --git a/tests/cases/compiler/typeReferenceDirectives3.ts b/tests/cases/compiler/typeReferenceDirectives3.ts new file mode 100644 index 00000000000..bf81268d141 --- /dev/null +++ b/tests/cases/compiler/typeReferenceDirectives3.ts @@ -0,0 +1,19 @@ +// @noImplicitReferences: true +// @declaration: true +// @typesRoot: / +// @traceResolution: true + +// $ comes from d.ts file - no need to add type reference directive + +// @filename: /ref.d.ts +interface $ { x } + +// @filename: /types/lib/index.d.ts +declare let $: { x: number } + +// @filename: /app.ts +/// +/// +interface A { + x: () => $ +} \ No newline at end of file diff --git a/tests/cases/compiler/typeReferenceDirectives4.ts b/tests/cases/compiler/typeReferenceDirectives4.ts new file mode 100644 index 00000000000..48eb8a5324a --- /dev/null +++ b/tests/cases/compiler/typeReferenceDirectives4.ts @@ -0,0 +1,20 @@ +// @noImplicitReferences: true +// @traceResolution: true +// @declaration: true +// @typesRoot: / + +// $ comes from d.ts file - no need to add type reference directive + +// @filename: /ref.d.ts +interface $ { x } + +// @filename: /types/lib/index.d.ts +declare let $: { x: number } + + +// @filename: /app.ts +/// +/// + +let x: $; +let y = () => x \ No newline at end of file diff --git a/tests/cases/compiler/typeReferenceDirectives5.ts b/tests/cases/compiler/typeReferenceDirectives5.ts new file mode 100644 index 00000000000..675f932da68 --- /dev/null +++ b/tests/cases/compiler/typeReferenceDirectives5.ts @@ -0,0 +1,17 @@ +// @noImplicitReferences: true +// @traceResolution: true +// @declaration: true +// @typesRoot: / + +// @filename: /ref.d.ts +export interface $ { x } + +// @filename: /types/lib/index.d.ts +declare let $: { x: number } + +// @filename: /app.ts +/// +import {$} from "./ref"; +export interface A { + x: typeof $; +} \ No newline at end of file diff --git a/tests/cases/compiler/typeReferenceDirectives6.ts b/tests/cases/compiler/typeReferenceDirectives6.ts new file mode 100644 index 00000000000..120a743009c --- /dev/null +++ b/tests/cases/compiler/typeReferenceDirectives6.ts @@ -0,0 +1,21 @@ +// @noImplicitReferences: true +// @traceResolution: true +// @declaration: true +// @typesRoot: / + +// $ comes from type declaration file - type reference directive should be added + +// @filename: /ref.d.ts +declare let $: { x: number } + +// @filename: /types/lib/index.d.ts +interface $ { x } + + +// @filename: /app.ts +/// +/// + +let x: $; +let y = () => x + diff --git a/tests/cases/compiler/typeReferenceDirectives7.ts b/tests/cases/compiler/typeReferenceDirectives7.ts new file mode 100644 index 00000000000..f18fed37741 --- /dev/null +++ b/tests/cases/compiler/typeReferenceDirectives7.ts @@ -0,0 +1,18 @@ +// @noImplicitReferences: true +// @traceResolution: true +// @declaration: true +// @typesRoot: / + +// local value shadows global - no need to add type reference directive + +// @filename: /types/lib/index.d.ts +declare let $: { x: number } + + +// @filename: /app.ts +/// + +export let $ = 1; + +export let x: typeof $; +export let y = () => x \ No newline at end of file diff --git a/tests/cases/compiler/typeReferenceDirectives8.ts b/tests/cases/compiler/typeReferenceDirectives8.ts new file mode 100644 index 00000000000..2465d2afb10 --- /dev/null +++ b/tests/cases/compiler/typeReferenceDirectives8.ts @@ -0,0 +1,18 @@ +// @noImplicitReferences: true +// @declaration: true +// @typesRoot: / +// @traceResolution: true +// @types: lib + +// @filename: /types/lib/index.d.ts + +interface Lib { x } + +// @filename: /mod1.ts + +export function foo(): Lib { return {x: 1} } + +// @filename: /mod2.ts + +import {foo} from "./mod1"; +export const bar = foo(); \ No newline at end of file diff --git a/tests/cases/compiler/typeReferenceDirectives9.ts b/tests/cases/compiler/typeReferenceDirectives9.ts new file mode 100644 index 00000000000..eb8d6abaef1 --- /dev/null +++ b/tests/cases/compiler/typeReferenceDirectives9.ts @@ -0,0 +1,36 @@ +// @noImplicitReferences: true +// @declaration: true +// @typesRoot: / +// @traceResolution: true + +// @filename: /types/lib/index.d.ts + +interface Lib { x } + +// @filename: /main.ts +export class Cls { + x +} + +// @filename: /mod1.ts +/// + +import {Cls} from "./main"; +Cls.prototype.foo = function() { return undefined; } + +declare module "./main" { + interface Cls { + foo(): Lib; + } + namespace Cls { + function bar(): Lib; + } +} + +// @filename: /mod2.ts +import { Cls } from "./main"; +import "./mod1"; + +export const cls = Cls; +export const foo = new Cls().foo(); +export const bar = Cls.bar(); \ No newline at end of file diff --git a/tests/cases/compiler/useStrictLikePrologueString01.ts b/tests/cases/compiler/useStrictLikePrologueString01.ts new file mode 100644 index 00000000000..b76e38ebb06 --- /dev/null +++ b/tests/cases/compiler/useStrictLikePrologueString01.ts @@ -0,0 +1,7 @@ +//@target: commonjs +//@target: es5 + +"hey!" +" use strict " +export function f() { +} \ No newline at end of file diff --git a/tests/cases/conformance/classes/members/accessibility/privateClassPropertyAccessibleWithinNestedClass.ts b/tests/cases/conformance/classes/members/accessibility/privateClassPropertyAccessibleWithinNestedClass.ts new file mode 100644 index 00000000000..a958a5ae624 --- /dev/null +++ b/tests/cases/conformance/classes/members/accessibility/privateClassPropertyAccessibleWithinNestedClass.ts @@ -0,0 +1,38 @@ +// @target: ES5 +// no errors + +class C { + private x: string; + private get y() { return this.x; } + private set y(x) { this.y = this.x; } + private foo() { return this.foo; } + + private static x: string; + private static get y() { return this.x; } + private static set y(x) { this.y = this.x; } + private static foo() { return this.foo; } + private static bar() { this.foo(); } + + private bar() { + class C2 { + private foo() { + let x: C; + var x1 = x.foo; + var x2 = x.bar; + var x3 = x.x; + var x4 = x.y; + + var sx1 = C.x; + var sx2 = C.y; + var sx3 = C.bar; + var sx4 = C.foo; + + let y = new C(); + var y1 = y.foo; + var y2 = y.bar; + var y3 = y.x; + var y4 = y.y; + } + } + } +} \ No newline at end of file diff --git a/tests/cases/conformance/classes/members/accessibility/protectedClassPropertyAccessibleWithinNestedClass.ts b/tests/cases/conformance/classes/members/accessibility/protectedClassPropertyAccessibleWithinNestedClass.ts new file mode 100644 index 00000000000..3482d1a09e9 --- /dev/null +++ b/tests/cases/conformance/classes/members/accessibility/protectedClassPropertyAccessibleWithinNestedClass.ts @@ -0,0 +1,38 @@ +// @target: ES5 +// no errors + +class C { + protected x: string; + protected get y() { return this.x; } + protected set y(x) { this.y = this.x; } + protected foo() { return this.foo; } + + protected static x: string; + protected static get y() { return this.x; } + protected static set y(x) { this.y = this.x; } + protected static foo() { return this.foo; } + protected static bar() { this.foo(); } + + protected bar() { + class C2 { + protected foo() { + let x: C; + var x1 = x.foo; + var x2 = x.bar; + var x3 = x.x; + var x4 = x.y; + + var sx1 = C.x; + var sx2 = C.y; + var sx3 = C.bar; + var sx4 = C.foo; + + let y = new C(); + var y1 = y.foo; + var y2 = y.bar; + var y3 = y.x; + var y4 = y.y; + } + } + } +} \ No newline at end of file diff --git a/tests/cases/conformance/classes/members/accessibility/protectedClassPropertyAccessibleWithinNestedSubclass.ts b/tests/cases/conformance/classes/members/accessibility/protectedClassPropertyAccessibleWithinNestedSubclass.ts new file mode 100644 index 00000000000..aae17b8362f --- /dev/null +++ b/tests/cases/conformance/classes/members/accessibility/protectedClassPropertyAccessibleWithinNestedSubclass.ts @@ -0,0 +1,39 @@ +// @target: ES5 + +class B { + protected x: string; + protected static x: string; +} + +class C extends B { + protected get y() { return this.x; } + protected set y(x) { this.y = this.x; } + protected foo() { return this.x; } + + protected static get y() { return this.x; } + protected static set y(x) { this.y = this.x; } + protected static foo() { return this.x; } + protected static bar() { this.foo(); } + + protected bar() { + class D { + protected foo() { + var c = new C(); + var c1 = c.y; + var c2 = c.x; + var c3 = c.foo; + var c4 = c.bar; + var c5 = c.z; // error + + var sc1 = C.x; + var sc2 = C.y; + var sc3 = C.foo; + var sc4 = C.bar; + } + } + } +} + +class E extends C { + protected z: string; +} \ No newline at end of file diff --git a/tests/cases/conformance/classes/members/accessibility/protectedClassPropertyAccessibleWithinNestedSubclass1.ts b/tests/cases/conformance/classes/members/accessibility/protectedClassPropertyAccessibleWithinNestedSubclass1.ts new file mode 100644 index 00000000000..1128da70795 --- /dev/null +++ b/tests/cases/conformance/classes/members/accessibility/protectedClassPropertyAccessibleWithinNestedSubclass1.ts @@ -0,0 +1,114 @@ +class Base { + protected x: string; + method() { + class A { + methoda() { + var b: Base; + var d1: Derived1; + var d2: Derived2; + var d3: Derived3; + var d4: Derived4; + + b.x; // OK, accessed within their declaring class + d1.x; // OK, accessed within their declaring class + d2.x; // OK, accessed within their declaring class + d3.x; // Error, redefined in a subclass, can only be accessed in the declaring class or one of its subclasses + d4.x; // OK, accessed within their declaring class + } + } + } +} + +class Derived1 extends Base { + method1() { + class B { + method1b() { + var b: Base; + var d1: Derived1; + var d2: Derived2; + var d3: Derived3; + var d4: Derived4; + + b.x; // Error, isn't accessed through an instance of the enclosing class + d1.x; // OK, accessed within a class derived from their declaring class, and through an instance of the enclosing class + d2.x; // Error, isn't accessed through an instance of the enclosing class + d3.x; // Error, redefined in a subclass, can only be accessed in the declaring class or one of its subclasses + d4.x; // Error, isn't accessed through an instance of the enclosing class + } + } + } +} + +class Derived2 extends Base { + method2() { + class C { + method2c() { + var b: Base; + var d1: Derived1; + var d2: Derived2; + var d3: Derived3; + var d4: Derived4; + + b.x; // Error, isn't accessed through an instance of the enclosing class + d1.x; // Error, isn't accessed through an instance of the enclosing class + d2.x; // OK, accessed within a class derived from their declaring class, and through an instance of the enclosing class + d3.x; // Error, redefined in a subclass, can only be accessed in the declaring class or one of its subclasses + d4.x; // OK, accessed within a class derived from their declaring class, and through an instance of the enclosing class or one of its subclasses + } + } + } +} + +class Derived3 extends Derived1 { + protected x: string; + method3() { + class D { + method3d() { + var b: Base; + var d1: Derived1; + var d2: Derived2; + var d3: Derived3; + var d4: Derived4; + + b.x; // Error, isn't accessed through an instance of the enclosing class + d1.x; // Error, isn't accessed through an instance of the enclosing class + d2.x; // Error, isn't accessed through an instance of the enclosing class + d3.x; // OK, accessed within their declaring class + d4.x; // Error, isn't accessed through an instance of the enclosing class + } + } + } +} + +class Derived4 extends Derived2 { + method4() { + class E { + method4e() { + var b: Base; + var d1: Derived1; + var d2: Derived2; + var d3: Derived3; + var d4: Derived4; + + b.x; // Error, isn't accessed through an instance of the enclosing class + d1.x; // Error, isn't accessed through an instance of the enclosing class + d2.x; // Error, isn't accessed through an instance of the enclosing class + d3.x; // Error, redefined in a subclass, can only be accessed in the declaring class or one of its subclasses + d4.x; // OK, accessed within a class derived from their declaring class, and through an instance of the enclosing class + } + } + } +} + + +var b: Base; +var d1: Derived1; +var d2: Derived2; +var d3: Derived3; +var d4: Derived4; + +b.x; // Error, neither within their declaring class nor classes derived from their declaring class +d1.x; // Error, neither within their declaring class nor classes derived from their declaring class +d2.x; // Error, neither within their declaring class nor classes derived from their declaring class +d3.x; // Error, neither within their declaring class nor classes derived from their declaring class +d4.x; // Error, neither within their declaring class nor classes derived from their declaring class \ No newline at end of file diff --git a/tests/cases/conformance/controlFlow/controlFlowAssignmentExpression.ts b/tests/cases/conformance/controlFlow/controlFlowAssignmentExpression.ts new file mode 100644 index 00000000000..83bf75ab94d --- /dev/null +++ b/tests/cases/conformance/controlFlow/controlFlowAssignmentExpression.ts @@ -0,0 +1,10 @@ +let x: string | boolean | number; +let obj: any; + +x = ""; +x = x.length; +x; // number + +x = true; +(x = "", obj).foo = (x = x.length); +x; // number diff --git a/tests/cases/conformance/controlFlow/controlFlowBinaryAndExpression.ts b/tests/cases/conformance/controlFlow/controlFlowBinaryAndExpression.ts new file mode 100644 index 00000000000..caaef9b890f --- /dev/null +++ b/tests/cases/conformance/controlFlow/controlFlowBinaryAndExpression.ts @@ -0,0 +1,9 @@ +let x: string | number | boolean; +let cond: boolean; + +(x = "") && (x = 0); +x; // string | number + +x = ""; +cond && (x = 0); +x; // string | number diff --git a/tests/cases/conformance/controlFlow/controlFlowBinaryOrExpression.ts b/tests/cases/conformance/controlFlow/controlFlowBinaryOrExpression.ts new file mode 100644 index 00000000000..9dab32e0cb8 --- /dev/null +++ b/tests/cases/conformance/controlFlow/controlFlowBinaryOrExpression.ts @@ -0,0 +1,35 @@ +let x: string | number | boolean; +let cond: boolean; + +(x = "") || (x = 0); +x; // string | number + +x = ""; +cond || (x = 0); +x; // string | number + +export interface NodeList { + length: number; +} + +export interface HTMLCollection { + length: number; +} + +declare function isNodeList(sourceObj: any): sourceObj is NodeList; +declare function isHTMLCollection(sourceObj: any): sourceObj is HTMLCollection; + +type EventTargetLike = {a: string} | HTMLCollection | NodeList; + +var sourceObj: EventTargetLike = undefined; +if (isNodeList(sourceObj)) { + sourceObj.length; +} + +if (isHTMLCollection(sourceObj)) { + sourceObj.length; +} + +if (isNodeList(sourceObj) || isHTMLCollection(sourceObj)) { + sourceObj.length; +} diff --git a/tests/cases/conformance/controlFlow/controlFlowCommaOperator.ts b/tests/cases/conformance/controlFlow/controlFlowCommaOperator.ts new file mode 100644 index 00000000000..d6d49e48f34 --- /dev/null +++ b/tests/cases/conformance/controlFlow/controlFlowCommaOperator.ts @@ -0,0 +1,22 @@ +function f(x: string | number | boolean) { + let y: string | number | boolean = false; + let z: string | number | boolean = false; + if (y = "", typeof x === "string") { + x; // string + y; // string + z; // boolean + } + else if (z = 1, typeof x === "number") { + x; // number + y; // string + z; // number + } + else { + x; // boolean + y; // string + z; // number + } + x; // string | number | boolean + y; // string + z; // number | boolean +} diff --git a/tests/cases/conformance/controlFlow/controlFlowConditionalExpression.ts b/tests/cases/conformance/controlFlow/controlFlowConditionalExpression.ts new file mode 100644 index 00000000000..c1c1d9956ea --- /dev/null +++ b/tests/cases/conformance/controlFlow/controlFlowConditionalExpression.ts @@ -0,0 +1,5 @@ +let x: string | number | boolean; +let cond: boolean; + +cond ? x = "" : x = 3; +x; // string | number diff --git a/tests/cases/conformance/controlFlow/controlFlowDestructuringDeclaration.ts b/tests/cases/conformance/controlFlow/controlFlowDestructuringDeclaration.ts new file mode 100644 index 00000000000..fc9c3ffb4d7 --- /dev/null +++ b/tests/cases/conformance/controlFlow/controlFlowDestructuringDeclaration.ts @@ -0,0 +1,59 @@ +// @strictNullChecks: true + +function f1() { + let x: string | number = 1; + x; + let y: string | undefined = ""; + y; +} + +function f2() { + let [x]: [string | number] = [1]; + x; + let [y]: [string | undefined] = [""]; + y; + let [z = ""]: [string | undefined] = [undefined]; + z; +} + +function f3() { + let [x]: (string | number)[] = [1]; + x; + let [y]: (string | undefined)[] = [""]; + y; + let [z = ""]: (string | undefined)[] = [undefined]; + z; +} + +function f4() { + let { x }: { x: string | number } = { x: 1 }; + x; + let { y }: { y: string | undefined } = { y: "" }; + y; + let { z = "" }: { z: string | undefined } = { z: undefined }; + z; +} + +function f5() { + let { x }: { x?: string | number } = { x: 1 }; + x; + let { y }: { y?: string | undefined } = { y: "" }; + y; + let { z = "" }: { z?: string | undefined } = { z: undefined }; + z; +} + +function f6() { + let { x }: { x?: string | number } = {}; + x; + let { y }: { y?: string | undefined } = {}; + y; + let { z = "" }: { z?: string | undefined } = {}; + z; +} + +function f7() { + let o: { [x: string]: number } = { x: 1 }; + let { x }: { [x: string]: string | number } = o; + x; +} diff --git a/tests/cases/conformance/controlFlow/controlFlowDoWhileStatement.ts b/tests/cases/conformance/controlFlow/controlFlowDoWhileStatement.ts new file mode 100644 index 00000000000..bd253bc064d --- /dev/null +++ b/tests/cases/conformance/controlFlow/controlFlowDoWhileStatement.ts @@ -0,0 +1,76 @@ +let cond: boolean; +function a() { + let x: string | number; + x = ""; + do { + x; // string + } while (cond) +} +function b() { + let x: string | number; + x = ""; + do { + x; // string + x = 42; + break; + } while (cond) +} +function c() { + let x: string | number; + x = ""; + do { + x; // string + x = undefined; + if (typeof x === "string") continue; + break; + } while (cond) +} +function d() { + let x: string | number; + x = 1000; + do { + x; // number + x = ""; + } while (x = x.length) + x; // number +} +function e() { + let x: string | number; + x = ""; + do { + x = 42; + } while (cond) + x; // number +} +function f() { + let x: string | number | boolean | RegExp | Function; + x = ""; + do { + if (cond) { + x = 42; + break; + } + if (cond) { + x = true; + continue; + } + x = /a/; + } while (cond) + x; // number | boolean | RegExp +} +function g() { + let x: string | number | boolean | RegExp | Function; + x = ""; + do { + if (cond) { + x = 42; + break; + } + if (cond) { + x = true; + continue; + } + x = /a/; + } while (true) + x; // number +} diff --git a/tests/cases/conformance/controlFlow/controlFlowForInStatement.ts b/tests/cases/conformance/controlFlow/controlFlowForInStatement.ts new file mode 100644 index 00000000000..a22e79506c2 --- /dev/null +++ b/tests/cases/conformance/controlFlow/controlFlowForInStatement.ts @@ -0,0 +1,17 @@ +let x: string | number | boolean | RegExp | Function; +let obj: any; +let cond: boolean; + +x = /a/; +for (let y in obj) { + x = y; + if (cond) { + x = 42; + continue; + } + if (cond) { + x = true; + break; + } +} +x; // RegExp | string | number | boolean diff --git a/tests/cases/conformance/controlFlow/controlFlowForOfStatement.ts b/tests/cases/conformance/controlFlow/controlFlowForOfStatement.ts new file mode 100644 index 00000000000..3abcf814f2a --- /dev/null +++ b/tests/cases/conformance/controlFlow/controlFlowForOfStatement.ts @@ -0,0 +1,10 @@ +let obj: number[]; +let x: string | number | boolean | RegExp; + +function a() { + x = true; + for (x of obj) { + x = x.toExponential(); + } + x; // string | boolean +} diff --git a/tests/cases/conformance/controlFlow/controlFlowForStatement.ts b/tests/cases/conformance/controlFlow/controlFlowForStatement.ts new file mode 100644 index 00000000000..d9e46781aa7 --- /dev/null +++ b/tests/cases/conformance/controlFlow/controlFlowForStatement.ts @@ -0,0 +1,41 @@ +let cond: boolean; +function a() { + let x: string | number | boolean; + for (x = ""; cond; x = 5) { + x; // string | number + } +} +function b() { + let x: string | number | boolean; + for (x = 5; cond; x = x.length) { + x; // number + x = ""; + } +} +function c() { + let x: string | number | boolean; + for (x = 5; x = x.toExponential(); x = 5) { + x; // string + } +} +function d() { + let x: string | number | boolean; + for (x = ""; typeof x === "string"; x = 5) { + x; // string + } +} +function e() { + let x: string | number | boolean | RegExp; + for (x = "" || 0; typeof x !== "string"; x = "" || true) { + x; // number | boolean + } +} +function f() { + let x: string | number | boolean; + for (; typeof x !== "string";) { + x; // number | boolean + if (typeof x === "number") break; + x = undefined; + } + x; // string | number +} diff --git a/tests/cases/conformance/controlFlow/controlFlowIfStatement.ts b/tests/cases/conformance/controlFlow/controlFlowIfStatement.ts new file mode 100644 index 00000000000..c9e9be92f8e --- /dev/null +++ b/tests/cases/conformance/controlFlow/controlFlowIfStatement.ts @@ -0,0 +1,36 @@ +let x: string | number | boolean | RegExp; +let cond: boolean; + +x = /a/; +if (x /* RegExp */, (x = true)) { + x; // boolean + x = ""; +} +else { + x; // boolean + x = 42; +} +x; // string | number + +function a() { + let x: string | number; + if (cond) { + x = 42; + } + else { + x = ""; + return; + } + x; // number +} +function b() { + let x: string | number; + if (cond) { + x = 42; + throw ""; + } + else { + x = ""; + } + x; // string +} diff --git a/tests/cases/conformance/controlFlow/controlFlowIteration.ts b/tests/cases/conformance/controlFlow/controlFlowIteration.ts new file mode 100644 index 00000000000..56172b1bbdf --- /dev/null +++ b/tests/cases/conformance/controlFlow/controlFlowIteration.ts @@ -0,0 +1,20 @@ +// @strictNullChecks: true + +let cond: boolean; + +function ff() { + let x: string | undefined; + while (true) { + if (cond) { + x = ""; + } + else { + if (x) { + x.length; + } + if (x) { + x.length; + } + } + } +} diff --git a/tests/cases/conformance/controlFlow/controlFlowIterationErrors.ts b/tests/cases/conformance/controlFlow/controlFlowIterationErrors.ts new file mode 100644 index 00000000000..2e54b335537 --- /dev/null +++ b/tests/cases/conformance/controlFlow/controlFlowIterationErrors.ts @@ -0,0 +1,93 @@ +// @noImplicitAny: true + +let cond: boolean; + +function len(s: string) { + return s.length; +} + +function f1() { + let x: string | number | boolean; + x = ""; + while (cond) { + x = len(x); + x; + } + x; +} + +function f2() { + let x: string | number | boolean; + x = ""; + while (cond) { + x; + x = len(x); + } + x; +} + +declare function foo(x: string): number; +declare function foo(x: number): string; + +function g1() { + let x: string | number | boolean; + x = ""; + while (cond) { + x = foo(x); + x; + } + x; +} + +function g2() { + let x: string | number | boolean; + x = ""; + while (cond) { + x; + x = foo(x); + } + x; +} + +function asNumber(x: string | number): number { + return +x; +} + +function h1() { + let x: string | number | boolean; + x = "0"; + while (cond) { + x = +x + 1; + x; + } +} + +function h2() { + let x: string | number | boolean; + x = "0"; + while (cond) { + x = asNumber(x) + 1; + x; + } +} + +function h3() { + let x: string | number | boolean; + x = "0"; + while (cond) { + let y = asNumber(x); + x = y + 1; + x; + } +} + +function h4() { + let x: string | number | boolean; + x = "0"; + while (cond) { + x; + let y = asNumber(x); + x = y + 1; + x; + } +} diff --git a/tests/cases/conformance/controlFlow/controlFlowTruthiness.ts b/tests/cases/conformance/controlFlow/controlFlowTruthiness.ts new file mode 100644 index 00000000000..ba1947da13b --- /dev/null +++ b/tests/cases/conformance/controlFlow/controlFlowTruthiness.ts @@ -0,0 +1,70 @@ +// @strictNullChecks: true + +declare function foo(): string | undefined; + +function f1() { + let x = foo(); + if (x) { + x; // string + } + else { + x; // string | undefined + } +} + +function f2() { + let x: string | undefined; + x = foo(); + if (x) { + x; // string + } + else { + x; // string | undefined + } +} + +function f3() { + let x: string | undefined; + if (x = foo()) { + x; // string + } + else { + x; // string | undefined + } +} + +function f4() { + let x: string | undefined; + if (!(x = foo())) { + x; // string | undefined + } + else { + x; // string + } +} + +function f5() { + let x: string | undefined; + let y: string | undefined; + if (x = y = foo()) { + x; // string + y; // string | undefined + } + else { + x; // string | undefined + y; // string | undefined + } +} + +function f6() { + let x: string | undefined; + let y: string | undefined; + if (x = foo(), y = foo()) { + x; // string | undefined + y; // string + } + else { + x; // string | undefined + y; // string | undefined + } +} diff --git a/tests/cases/conformance/controlFlow/controlFlowWhileStatement.ts b/tests/cases/conformance/controlFlow/controlFlowWhileStatement.ts new file mode 100644 index 00000000000..7bf49dd7224 --- /dev/null +++ b/tests/cases/conformance/controlFlow/controlFlowWhileStatement.ts @@ -0,0 +1,106 @@ +let cond: boolean; +function a() { + let x: string | number; + x = ""; + while (cond) { + x; // string + } +} +function b() { + let x: string | number; + x = ""; + while (cond) { + x; // string + x = 42; + break; + } +} +function c() { + let x: string | number; + x = ""; + while (cond) { + x; // string + x = undefined; + if (typeof x === "string") continue; + break; + } +} +function d() { + let x: string | number; + x = ""; + while (x = x.length) { + x; // number + x = ""; + } +} +function e() { + let x: string | number; + x = ""; + while (cond) { + x; // string | number + x = 42; + x; // number + } + x; // string | number +} +function f() { + let x: string | number | boolean | RegExp | Function; + x = ""; + while (cond) { + if (cond) { + x = 42; + break; + } + if (cond) { + x = true; + continue; + } + x = /a/; + } + x; // string | number | boolean | RegExp +} +function g() { + let x: string | number | boolean | RegExp | Function; + x = ""; + while (true) { + if (cond) { + x = 42; + break; + } + if (cond) { + x = true; + continue; + } + x = /a/; + } + x; // number +} +function h1() { + let x: string | number | boolean; + x = ""; + while (x > 1) { + x; // string | number + x = 1; + x; // number + } + x; // string | number +} +declare function len(s: string | number): number; +function h2() { + let x: string | number | boolean; + x = ""; + while (cond) { + x = len(x); + x; // number + } + x; // string | number +} +function h3() { + let x: string | number | boolean; + x = ""; + while (cond) { + x; // string | number + x = len(x); + } + x; // string | number +} diff --git a/tests/cases/conformance/es6/modules/defaultExportInAwaitExpression01.ts b/tests/cases/conformance/es6/modules/defaultExportInAwaitExpression01.ts new file mode 100644 index 00000000000..45f15423016 --- /dev/null +++ b/tests/cases/conformance/es6/modules/defaultExportInAwaitExpression01.ts @@ -0,0 +1,12 @@ +// @target: ES6 +// @module: umd +// @filename: a.ts +const x = new Promise( ( resolve, reject ) => { resolve( {} ); } ); +export default x; + +// @filename: b.ts +import x from './a'; + +( async function() { + const value = await x; +}() ); diff --git a/tests/cases/conformance/es6/modules/defaultExportInAwaitExpression02.ts b/tests/cases/conformance/es6/modules/defaultExportInAwaitExpression02.ts new file mode 100644 index 00000000000..cd878540a3c --- /dev/null +++ b/tests/cases/conformance/es6/modules/defaultExportInAwaitExpression02.ts @@ -0,0 +1,12 @@ +// @target: ES6 +// @module: commonjs +// @filename: a.ts +const x = new Promise( ( resolve, reject ) => { resolve( {} ); } ); +export default x; + +// @filename: b.ts +import x from './a'; + +( async function() { + const value = await x; +}() ); diff --git a/tests/cases/conformance/expressions/assignmentOperator/assignmentTypeNarrowing.ts b/tests/cases/conformance/expressions/assignmentOperator/assignmentTypeNarrowing.ts new file mode 100644 index 00000000000..0e5e257635a --- /dev/null +++ b/tests/cases/conformance/expressions/assignmentOperator/assignmentTypeNarrowing.ts @@ -0,0 +1,28 @@ +let x: string | number | boolean | RegExp; + +x = ""; +x; // string + +[x] = [true]; +x; // boolean + +[x = ""] = [1]; +x; // string | number + +({x} = {x: true}); +x; // boolean + +({y: x} = {y: 1}); +x; // number + +({x = ""} = {x: true}); +x; // string | boolean + +({y: x = /a/} = {y: 1}); +x; // number | RegExp + +let a: string[]; + +for (x of a) { + x; // string +} diff --git a/tests/cases/conformance/expressions/thisKeyword/thisInObjectLiterals.ts b/tests/cases/conformance/expressions/thisKeyword/thisInObjectLiterals.ts index da38484bc07..ddfbb790980 100644 --- a/tests/cases/conformance/expressions/thisKeyword/thisInObjectLiterals.ts +++ b/tests/cases/conformance/expressions/thisKeyword/thisInObjectLiterals.ts @@ -8,7 +8,7 @@ class MyClass { } } -//type of 'this' in an object literal property of a function type is Any +//type of 'this' in an object literal method is the type of the object literal var obj = { f() { return this.spaaace; diff --git a/tests/cases/conformance/expressions/typeGuards/typeGuardFunctionOfFormThis.ts b/tests/cases/conformance/expressions/typeGuards/typeGuardFunctionOfFormThis.ts index aadbf3cd9c5..12f6687c401 100644 --- a/tests/cases/conformance/expressions/typeGuards/typeGuardFunctionOfFormThis.ts +++ b/tests/cases/conformance/expressions/typeGuards/typeGuardFunctionOfFormThis.ts @@ -34,19 +34,19 @@ else if (b.isFollower()) { b.follow(); } -if (((a.isLeader)())) { - a.lead(); -} -else if (((a).isFollower())) { - a.follow(); -} +// if (((a.isLeader)())) { +// a.lead(); +// } +// else if (((a).isFollower())) { +// a.follow(); +// } -if (((a["isLeader"])())) { - a.lead(); -} -else if (((a)["isFollower"]())) { - a.follow(); -} +// if (((a["isLeader"])())) { +// a.lead(); +// } +// else if (((a)["isFollower"]())) { +// a.follow(); +// } var holder2 = {a}; diff --git a/tests/cases/conformance/expressions/typeGuards/typeGuardOfFormTypeOfBoolean.ts b/tests/cases/conformance/expressions/typeGuards/typeGuardOfFormTypeOfBoolean.ts index fb699ce8ce0..37651071b7f 100644 --- a/tests/cases/conformance/expressions/typeGuards/typeGuardOfFormTypeOfBoolean.ts +++ b/tests/cases/conformance/expressions/typeGuards/typeGuardOfFormTypeOfBoolean.ts @@ -41,12 +41,11 @@ else { c = boolOrC; // C } -// Narrowing occurs only if target type is a subtype of variable type if (typeof strOrNum === "boolean") { - var z1: string | number = strOrNum; // string | number + let z1: {} = strOrNum; // {} } else { - var z2: string | number = strOrNum; // string | number + let z2: string | number = strOrNum; // string | number } @@ -78,10 +77,9 @@ else { bool = boolOrC; // boolean } -// Narrowing occurs only if target type is a subtype of variable type if (typeof strOrNum !== "boolean") { - var z1: string | number = strOrNum; // string | number + let z1: string | number = strOrNum; // string | number } else { - var z2: string | number = strOrNum; // string | number + let z2: {} = strOrNum; // {} } diff --git a/tests/cases/conformance/expressions/typeGuards/typeGuardOfFormTypeOfNumber.ts b/tests/cases/conformance/expressions/typeGuards/typeGuardOfFormTypeOfNumber.ts index 2868b114077..b4cdf81660e 100644 --- a/tests/cases/conformance/expressions/typeGuards/typeGuardOfFormTypeOfNumber.ts +++ b/tests/cases/conformance/expressions/typeGuards/typeGuardOfFormTypeOfNumber.ts @@ -41,12 +41,11 @@ else { c = numOrC; // C } -// Narrowing occurs only if target type is a subtype of variable type if (typeof strOrBool === "number") { - var y1: string | boolean = strOrBool; // string | boolean + let y1: {} = strOrBool; // {} } else { - var y2: string | boolean = strOrBool; // string | boolean + let y2: string | boolean = strOrBool; // string | boolean } // A type guard of the form typeof x !== s, where s is a string literal, @@ -77,10 +76,9 @@ else { num = numOrC; // number } -// Narrowing occurs only if target type is a subtype of variable type if (typeof strOrBool !== "number") { - var y1: string | boolean = strOrBool; // string | boolean + let y1: string | boolean = strOrBool; // string | boolean } else { - var y2: string | boolean = strOrBool; // string | boolean + let y2: {} = strOrBool; // {} } diff --git a/tests/cases/conformance/expressions/typeGuards/typeGuardOfFormTypeOfOther.ts b/tests/cases/conformance/expressions/typeGuards/typeGuardOfFormTypeOfOther.ts index ac3403d8151..44b064c3219 100644 --- a/tests/cases/conformance/expressions/typeGuards/typeGuardOfFormTypeOfOther.ts +++ b/tests/cases/conformance/expressions/typeGuards/typeGuardOfFormTypeOfOther.ts @@ -37,12 +37,11 @@ else { var r4: boolean = boolOrC; // boolean } -// Narrowing occurs only if target type is a subtype of variable type if (typeof strOrNumOrBool === "Object") { - var q1: string | number | boolean = strOrNumOrBool; // string | number | boolean + let q1: {} = strOrNumOrBool; // {} } else { - var q2: string | number | boolean = strOrNumOrBool; // string | number | boolean + let q2: string | number | boolean = strOrNumOrBool; // string | number | boolean } // A type guard of the form typeof x !== s, where s is a string literal, @@ -67,10 +66,9 @@ else { c = boolOrC; // C } -// Narrowing occurs only if target type is a subtype of variable type if (typeof strOrNumOrBool !== "Object") { - var q1: string | number | boolean = strOrNumOrBool; // string | number | boolean + let q1: string | number | boolean = strOrNumOrBool; // string | number | boolean } else { - var q2: string | number | boolean = strOrNumOrBool; // string | number | boolean + let q2: {} = strOrNumOrBool; // {} } diff --git a/tests/cases/conformance/expressions/typeGuards/typeGuardOfFormTypeOfString.ts b/tests/cases/conformance/expressions/typeGuards/typeGuardOfFormTypeOfString.ts index a356858e6c8..f742124708f 100644 --- a/tests/cases/conformance/expressions/typeGuards/typeGuardOfFormTypeOfString.ts +++ b/tests/cases/conformance/expressions/typeGuards/typeGuardOfFormTypeOfString.ts @@ -41,12 +41,11 @@ else { c = strOrC; // C } -// Narrowing occurs only if target type is a subtype of variable type if (typeof numOrBool === "string") { - var x1: number | boolean = numOrBool; // number | boolean + let x1: {} = numOrBool; // {} } else { - var x2: number | boolean = numOrBool; // number | boolean + let x2: number | boolean = numOrBool; // number | boolean } // A type guard of the form typeof x !== s, where s is a string literal, @@ -77,10 +76,9 @@ else { str = strOrC; // string } -// Narrowing occurs only if target type is a subtype of variable type if (typeof numOrBool !== "string") { - var x1: number | boolean = numOrBool; // number | boolean + let x1: number | boolean = numOrBool; // number | boolean } else { - var x2: number | boolean = numOrBool; // number | boolean + let x2: {} = numOrBool; // {} } diff --git a/tests/cases/conformance/expressions/typeGuards/typeGuardsInConditionalExpression.ts b/tests/cases/conformance/expressions/typeGuards/typeGuardsInConditionalExpression.ts index 1633c80ab67..01f9361ebc3 100644 --- a/tests/cases/conformance/expressions/typeGuards/typeGuardsInConditionalExpression.ts +++ b/tests/cases/conformance/expressions/typeGuards/typeGuardsInConditionalExpression.ts @@ -11,43 +11,37 @@ function foo(x: number | string) { : x++; // number } function foo2(x: number | string) { - // x is assigned in the if true branch, the type is not narrowed return typeof x === "string" - ? (x = 10 && x)// string | number - : x; // string | number + ? ((x = "hello") && x) // string + : x; // number } function foo3(x: number | string) { - // x is assigned in the if false branch, the type is not narrowed - // even though assigned using same type as narrowed expression return typeof x === "string" - ? (x = "Hello" && x) // string | number - : x; // string | number + ? ((x = 10) && x) // number + : x; // number } function foo4(x: number | string) { - // false branch updates the variable - so here it is not number - // even though assigned using same type as narrowed expression return typeof x === "string" - ? x // string | number - : (x = 10 && x); // string | number + ? x // string + : ((x = 10) && x); // number } function foo5(x: number | string) { - // false branch updates the variable - so here it is not number return typeof x === "string" - ? x // string | number - : (x = "hello" && x); // string | number + ? x // string + : ((x = "hello") && x); // string } function foo6(x: number | string) { // Modify in both branches return typeof x === "string" - ? (x = 10 && x) // string | number - : (x = "hello" && x); // string | number + ? ((x = 10) && x) // number + : ((x = "hello") && x); // string } function foo7(x: number | string | boolean) { return typeof x === "string" - ? x === "hello" // string + ? x === "hello" // boolean : typeof x === "boolean" ? x // boolean - : x == 10; // number + : x == 10; // boolean } function foo8(x: number | string | boolean) { var b: number | boolean; @@ -56,14 +50,14 @@ function foo8(x: number | string | boolean) { : ((b = x) && // number | boolean (typeof x === "boolean" ? x // boolean - : x == 10)); // number + : x == 10)); // boolean } function foo9(x: number | string) { var y = 10; // usage of x or assignment to separate variable shouldn't cause narrowing of type to stop return typeof x === "string" - ? ((y = x.length) && x === "hello") // string - : x === 10; // number + ? ((y = x.length) && x === "hello") // boolean + : x === 10; // boolean } function foo10(x: number | string | boolean) { // Mixing typeguards @@ -76,22 +70,20 @@ function foo10(x: number | string | boolean) { } function foo11(x: number | string | boolean) { // Mixing typeguards - // Assigning value to x deep inside another guard stops narrowing of type too var b: number | boolean | string; return typeof x === "string" - ? x // number | boolean | string - changed in the false branch - : ((b = x) // x is number | boolean | string - because the assignment changed it + ? x // string + : ((b = x) // x is number | boolean && typeof x === "number" && (x = 10) // assignment to x - && x); // x is number | boolean | string + && x); // x is number } function foo12(x: number | string | boolean) { // Mixing typeguards - // Assigning value to x in outer guard shouldn't stop narrowing in the inner expression var b: number | boolean | string; return typeof x === "string" - ? (x = 10 && x.toString().length) // number | boolean | string - changed here - : ((b = x) // x is number | boolean | string - changed in true branch + ? ((x = 10) && x.toString().length) // number + : ((b = x) // x is number | boolean && typeof x === "number" && x); // x is number } \ No newline at end of file diff --git a/tests/cases/conformance/expressions/typeGuards/typeGuardsInDoStatement.ts b/tests/cases/conformance/expressions/typeGuards/typeGuardsInDoStatement.ts new file mode 100644 index 00000000000..1afbe515df8 --- /dev/null +++ b/tests/cases/conformance/expressions/typeGuards/typeGuardsInDoStatement.ts @@ -0,0 +1,27 @@ +let cond: boolean; +function a(x: string | number | boolean) { + x = true; + do { + x; // boolean | string + x = undefined; + } while (typeof x === "string") + x; // number | boolean +} +function b(x: string | number | boolean) { + x = true; + do { + x; // boolean | string + if (cond) continue; + x = undefined; + } while (typeof x === "string") + x; // number | boolean +} +function c(x: string | number) { + x = ""; + do { + x; // string + if (cond) break; + x = undefined; + } while (typeof x === "string") + x; // string | number +} diff --git a/tests/cases/conformance/expressions/typeGuards/typeGuardsInForStatement.ts b/tests/cases/conformance/expressions/typeGuards/typeGuardsInForStatement.ts new file mode 100644 index 00000000000..cf5c008e800 --- /dev/null +++ b/tests/cases/conformance/expressions/typeGuards/typeGuardsInForStatement.ts @@ -0,0 +1,21 @@ +let cond: boolean; +function a(x: string | number) { + for (x = undefined; typeof x !== "number"; x = undefined) { + x; // string + } + x; // number +} +function b(x: string | number) { + for (x = undefined; typeof x !== "number"; x = undefined) { + x; // string + if (cond) continue; + } + x; // number +} +function c(x: string | number) { + for (x = undefined; typeof x !== "number"; x = undefined) { + x; // string + if (cond) break; + } + x; // string | number +} diff --git a/tests/cases/conformance/expressions/typeGuards/typeGuardsInIfStatement.ts b/tests/cases/conformance/expressions/typeGuards/typeGuardsInIfStatement.ts index f72845c18a4..1626cfdb82e 100644 --- a/tests/cases/conformance/expressions/typeGuards/typeGuardsInIfStatement.ts +++ b/tests/cases/conformance/expressions/typeGuards/typeGuardsInIfStatement.ts @@ -1,9 +1,7 @@ // In the true branch statement of an 'if' statement, -// the type of a variable or parameter is narrowed by any type guard in the 'if' condition when true, -// provided the true branch statement contains no assignments to the variable or parameter. +// the type of a variable or parameter is narrowed by any type guard in the 'if' condition when true. // In the false branch statement of an 'if' statement, -// the type of a variable or parameter is narrowed by any type guard in the 'if' condition when false, -// provided the false branch statement contains no assignments to the variable or parameter +// the type of a variable or parameter is narrowed by any type guard in the 'if' condition when false. function foo(x: number | string) { if (typeof x === "string") { return x.length; // string @@ -13,54 +11,49 @@ function foo(x: number | string) { } } function foo2(x: number | string) { - // x is assigned in the if true branch, the type is not narrowed if (typeof x === "string") { x = 10; - return x; // string | number + return x; // number } else { - return x; // string | number + return x; // number } } function foo3(x: number | string) { - // x is assigned in the if true branch, the type is not narrowed if (typeof x === "string") { - x = "Hello"; // even though assigned using same type as narrowed expression - return x; // string | number + x = "Hello"; + return x; // string } else { - return x; // string | number + return x; // number } } function foo4(x: number | string) { - // false branch updates the variable - so here it is not number if (typeof x === "string") { - return x; // string | number + return x; // string } else { - x = 10; // even though assigned number - this should result in x to be string | number - return x; // string | number + x = 10; + return x; // number } } function foo5(x: number | string) { - // false branch updates the variable - so here it is not number if (typeof x === "string") { - return x; // string | number + return x; // string } else { x = "hello"; - return x; // string | number + return x; // string } } function foo6(x: number | string) { - // Modify in both branches if (typeof x === "string") { x = 10; - return x; // string | number + return x; // number } else { x = "hello"; - return x; // string | number + return x; // string } } function foo7(x: number | string | boolean) { diff --git a/tests/cases/conformance/expressions/typeGuards/typeGuardsInRightOperandOfAndAndOperator.ts b/tests/cases/conformance/expressions/typeGuards/typeGuardsInRightOperandOfAndAndOperator.ts index da0d8ce24b5..acd71f37d91 100644 --- a/tests/cases/conformance/expressions/typeGuards/typeGuardsInRightOperandOfAndAndOperator.ts +++ b/tests/cases/conformance/expressions/typeGuards/typeGuardsInRightOperandOfAndAndOperator.ts @@ -1,6 +1,5 @@ // In the right operand of a && operation, -// the type of a variable or parameter is narrowed by any type guard in the left operand when true, -// provided the right operand contains no assignments to the variable or parameter. +// the type of a variable or parameter is narrowed by any type guard in the left operand when true. function foo(x: number | string) { return typeof x === "string" && x.length === 10; // string } @@ -35,21 +34,11 @@ function foo7(x: number | string | boolean) { var y: number| boolean | string; var z: number| boolean | string; // Mixing typeguard narrowing - // Assigning value to x deep inside another guard stops narrowing of type too return typeof x !== "string" - && ((z = x) // string | number | boolean - x changed deeper in conditional expression + && ((z = x) // number | boolean && (typeof x === "number" // change value of x - ? (x = 10 && x.toString()) // number | boolean | string + ? ((x = 10) && x.toString()) // x is number // do not change value - : (y = x && x.toString()))); // number | boolean | string + : ((y = x) && x.toString()))); // x is boolean } -function foo8(x: number | string) { - // Mixing typeguard - // Assigning value to x in outer guard shouldn't stop narrowing in the inner expression - return typeof x !== "string" - && (x = 10) // change x - number| string - && (typeof x === "number" - ? x // number - : x.length); // string -} \ No newline at end of file diff --git a/tests/cases/conformance/expressions/typeGuards/typeGuardsInRightOperandOfOrOrOperator.ts b/tests/cases/conformance/expressions/typeGuards/typeGuardsInRightOperandOfOrOrOperator.ts index 867dc143a85..131e5dd10bc 100644 --- a/tests/cases/conformance/expressions/typeGuards/typeGuardsInRightOperandOfOrOrOperator.ts +++ b/tests/cases/conformance/expressions/typeGuards/typeGuardsInRightOperandOfOrOrOperator.ts @@ -35,21 +35,11 @@ function foo7(x: number | string | boolean) { var y: number| boolean | string; var z: number| boolean | string; // Mixing typeguard narrowing - // Assigning value to x deep inside another guard stops narrowing of type too return typeof x === "string" - || ((z = x) // string | number | boolean - x changed deeper in conditional expression + || ((z = x) // number | boolean || (typeof x === "number" // change value of x - ? (x = 10 && x.toString()) // number | boolean | string + ? ((x = 10) && x.toString()) // number | boolean | string // do not change value - : (y = x && x.toString()))); // number | boolean | string + : ((y = x) && x.toString()))); // number | boolean | string } -function foo8(x: number | string) { - // Mixing typeguard - // Assigning value to x in outer guard shouldn't stop narrowing in the inner expression - return typeof x === "string" - || (x = 10) // change x - number| string - || (typeof x === "number" - ? x // number - : x.length); // string -} \ No newline at end of file diff --git a/tests/cases/conformance/expressions/typeGuards/typeGuardsInWhileStatement.ts b/tests/cases/conformance/expressions/typeGuards/typeGuardsInWhileStatement.ts new file mode 100644 index 00000000000..642c8995795 --- /dev/null +++ b/tests/cases/conformance/expressions/typeGuards/typeGuardsInWhileStatement.ts @@ -0,0 +1,24 @@ +let cond: boolean; +function a(x: string | number) { + while (typeof x === "string") { + x; // string + x = undefined; + } + x; // number +} +function b(x: string | number) { + while (typeof x === "string") { + if (cond) continue; + x; // string + x = undefined; + } + x; // number +} +function c(x: string | number) { + while (typeof x === "string") { + if (cond) break; + x; // string + x = undefined; + } + x; // string | number +} diff --git a/tests/cases/conformance/externalModules/umd-augmentation-1.ts b/tests/cases/conformance/externalModules/umd-augmentation-1.ts new file mode 100644 index 00000000000..312f21846e6 --- /dev/null +++ b/tests/cases/conformance/externalModules/umd-augmentation-1.ts @@ -0,0 +1,39 @@ +// @module: commonjs +// @noImplicitReferences: true + +// @filename: node_modules/math2d/index.d.ts +export as namespace Math2d; + +export interface Point { + x: number; + y: number; +} + +export class Vector implements Point { + x: number; + y: number; + constructor(x: number, y: number); + + translate(dx: number, dy: number): Vector; +} + +export function getLength(p: Vector): number; + +// @filename: math2d-augment.d.ts +import * as Math2d from 'math2d'; +// Augment the module +declare module 'math2d' { + // Add a method to the class + interface Vector { + reverse(): Math2d.Point; + } +} + +// @filename: b.ts +/// +import * as m from 'math2d'; +let v = new m.Vector(3, 2); +let magnitude = m.getLength(v); +let p: m.Point = v.translate(5, 5); +p = v.reverse(); +var t = p.x; diff --git a/tests/cases/conformance/externalModules/umd-augmentation-2.ts b/tests/cases/conformance/externalModules/umd-augmentation-2.ts new file mode 100644 index 00000000000..2f8330e7fa2 --- /dev/null +++ b/tests/cases/conformance/externalModules/umd-augmentation-2.ts @@ -0,0 +1,39 @@ +// @module: commonjs +// @noImplicitReferences: true + +// @filename: node_modules/math2d/index.d.ts +export as namespace Math2d; + +export interface Point { + x: number; + y: number; +} + +export class Vector implements Point { + x: number; + y: number; + constructor(x: number, y: number); + + translate(dx: number, dy: number): Vector; +} + +export function getLength(p: Vector): number; + +// @filename: math2d-augment.d.ts +import * as Math2d from 'math2d'; +// Augment the module +declare module 'math2d' { + // Add a method to the class + interface Vector { + reverse(): Math2d.Point; + } +} + +// @filename: a.ts +/// +/// +let v = new Math2d.Vector(3, 2); +let magnitude = Math2d.getLength(v); +let p: Math2d.Point = v.translate(5, 5); +p = v.reverse(); +var t = p.x; diff --git a/tests/cases/conformance/externalModules/umd-augmentation-3.ts b/tests/cases/conformance/externalModules/umd-augmentation-3.ts new file mode 100644 index 00000000000..1524d7128de --- /dev/null +++ b/tests/cases/conformance/externalModules/umd-augmentation-3.ts @@ -0,0 +1,45 @@ +// @module: commonjs +// @noImplicitReferences: true + +// @filename: node_modules/math2d/index.d.ts +export as namespace Math2d; + +export = M2D; + +declare namespace M2D { + interface Point { + x: number; + y: number; + } + + class Vector implements Point { + x: number; + y: number; + constructor(x: number, y: number); + + translate(dx: number, dy: number): Vector; + } + + function getLength(p: Vector): number; + +} + + +// @filename: math2d-augment.d.ts +import * as Math2d from 'math2d'; +// Augment the module +declare module 'math2d' { + // Add a method to the class + interface Vector { + reverse(): Math2d.Point; + } +} + +// @filename: b.ts +/// +import * as m from 'math2d'; +let v = new m.Vector(3, 2); +let magnitude = m.getLength(v); +let p: m.Point = v.translate(5, 5); +p = v.reverse(); +var t = p.x; diff --git a/tests/cases/conformance/externalModules/umd-augmentation-4.ts b/tests/cases/conformance/externalModules/umd-augmentation-4.ts new file mode 100644 index 00000000000..729465504c1 --- /dev/null +++ b/tests/cases/conformance/externalModules/umd-augmentation-4.ts @@ -0,0 +1,45 @@ +// @module: commonjs +// @noImplicitReferences: true + +// @filename: node_modules/math2d/index.d.ts +export as namespace Math2d; + +export = M2D; + +declare namespace M2D { + interface Point { + x: number; + y: number; + } + + class Vector implements Point { + x: number; + y: number; + constructor(x: number, y: number); + + translate(dx: number, dy: number): Vector; + } + + function getLength(p: Vector): number; + +} + + +// @filename: math2d-augment.d.ts +import * as Math2d from 'math2d'; +// Augment the module +declare module 'math2d' { + // Add a method to the class + interface Vector { + reverse(): Math2d.Point; + } +} + +// @filename: a.ts +/// +/// +let v = new Math2d.Vector(3, 2); +let magnitude = Math2d.getLength(v); +let p: Math2d.Point = v.translate(5, 5); +p = v.reverse(); +var t = p.x; diff --git a/tests/cases/conformance/externalModules/umd-errors.ts b/tests/cases/conformance/externalModules/umd-errors.ts new file mode 100644 index 00000000000..95e6cb7c7a4 --- /dev/null +++ b/tests/cases/conformance/externalModules/umd-errors.ts @@ -0,0 +1,31 @@ +// @module: commonjs + +// @filename: err1.d.ts +// Illegal, can't be in script file +export as namespace Foo; + +// @filename: err2.d.ts +// Illegal, can't be in external ambient module +declare module "Foo" { + export as namespace Bar; +} + +// @filename: err3.d.ts +// Illegal, can't have modifiers +export var p; +static export as namespace oo1; +declare export as namespace oo2; +public export as namespace oo3; +const export as namespace oo4; + +// @filename: err4.d.ts +// Illegal, must be at top-level +export namespace B { + export as namespace C1; +} + +// @filename: err5.ts +// Illegal, may not appear in implementation files +export var v; +export as namespace C2; + diff --git a/tests/cases/conformance/externalModules/umd1.ts b/tests/cases/conformance/externalModules/umd1.ts new file mode 100644 index 00000000000..5ceb7fa59ba --- /dev/null +++ b/tests/cases/conformance/externalModules/umd1.ts @@ -0,0 +1,14 @@ +// @module: commonjs +// @noImplicitReferences: true + +// @filename: foo.d.ts +export var x: number; +export function fn(): void; +export interface Thing { n: typeof x } +export as namespace Foo; + +// @filename: a.ts +/// +Foo.fn(); +let x: Foo.Thing; +let y: number = x.n; diff --git a/tests/cases/conformance/externalModules/umd2.ts b/tests/cases/conformance/externalModules/umd2.ts new file mode 100644 index 00000000000..2fb98491ebf --- /dev/null +++ b/tests/cases/conformance/externalModules/umd2.ts @@ -0,0 +1,12 @@ +// @module: commonjs +// @noImplicitReferences: true + +// @filename: foo.d.ts +export var x: number; +export function fn(): void; +export as namespace Foo; + +// @filename: a.ts +Foo.fn(); +let x: Foo.Thing; +let y: number = x.n; diff --git a/tests/cases/conformance/externalModules/umd3.ts b/tests/cases/conformance/externalModules/umd3.ts new file mode 100644 index 00000000000..dad0dfc644d --- /dev/null +++ b/tests/cases/conformance/externalModules/umd3.ts @@ -0,0 +1,14 @@ +// @module: commonjs +// @noImplicitReferences: true + +// @filename: foo.d.ts +export var x: number; +export function fn(): void; +export interface Thing { n: typeof x } +export as namespace Foo; + +// @filename: a.ts +import * as Foo from './foo'; +Foo.fn(); +let x: Foo.Thing; +let y: number = x.n; diff --git a/tests/cases/conformance/externalModules/umd4.ts b/tests/cases/conformance/externalModules/umd4.ts new file mode 100644 index 00000000000..e927d21f1cc --- /dev/null +++ b/tests/cases/conformance/externalModules/umd4.ts @@ -0,0 +1,14 @@ +// @module: commonjs +// @noImplicitReferences: true + +// @filename: foo.d.ts +export var x: number; +export function fn(): void; +export interface Thing { n: typeof x } +export as namespace Foo; + +// @filename: a.ts +import * as Bar from './foo'; +Bar.fn(); +let x: Bar.Thing; +let y: number = x.n; diff --git a/tests/cases/conformance/externalModules/umd5.ts b/tests/cases/conformance/externalModules/umd5.ts new file mode 100644 index 00000000000..b6d949c2d0a --- /dev/null +++ b/tests/cases/conformance/externalModules/umd5.ts @@ -0,0 +1,16 @@ +// @module: commonjs +// @noImplicitReferences: true + +// @filename: foo.d.ts +export var x: number; +export function fn(): void; +export interface Thing { n: typeof x } +export as namespace Foo; + +// @filename: a.ts +import * as Bar from './foo'; +Bar.fn(); +let x: Bar.Thing; +let y: number = x.n; +// should error +let z = Foo; diff --git a/tests/cases/conformance/externalModules/umd6.ts b/tests/cases/conformance/externalModules/umd6.ts new file mode 100644 index 00000000000..2f9e49072cf --- /dev/null +++ b/tests/cases/conformance/externalModules/umd6.ts @@ -0,0 +1,13 @@ +// @module: commonjs +// @noImplicitReferences: true + +// @filename: foo.d.ts +declare namespace Thing { + export function fn(): number; +} +export = Thing; +export as namespace Foo; + +// @filename: a.ts +/// +let y: number = Foo.fn(); diff --git a/tests/cases/conformance/externalModules/umd7.ts b/tests/cases/conformance/externalModules/umd7.ts new file mode 100644 index 00000000000..9b9a9959efc --- /dev/null +++ b/tests/cases/conformance/externalModules/umd7.ts @@ -0,0 +1,11 @@ +// @module: commonjs +// @noImplicitReferences: true + +// @filename: foo.d.ts +declare function Thing(): number; +export = Thing; +export as namespace Foo; + +// @filename: a.ts +/// +let y: number = Foo(); diff --git a/tests/cases/conformance/externalModules/umd8.ts b/tests/cases/conformance/externalModules/umd8.ts new file mode 100644 index 00000000000..caab734f5e0 --- /dev/null +++ b/tests/cases/conformance/externalModules/umd8.ts @@ -0,0 +1,15 @@ +// @module: commonjs +// @noImplicitReferences: true + +// @filename: foo.d.ts +declare class Thing { + foo(): number; +} +export = Thing; +export as namespace Foo; + +// @filename: a.ts +/// +let y: Foo; +y.foo(); + diff --git a/tests/cases/conformance/jsx/tsxAttributeResolution13.tsx b/tests/cases/conformance/jsx/tsxAttributeResolution13.tsx new file mode 100644 index 00000000000..1b5937a7db2 --- /dev/null +++ b/tests/cases/conformance/jsx/tsxAttributeResolution13.tsx @@ -0,0 +1,5 @@ +//@jsx: preserve + +//@filename: test.tsx +function Test() { } + diff --git a/tests/cases/conformance/references/library-reference-1.ts b/tests/cases/conformance/references/library-reference-1.ts new file mode 100644 index 00000000000..ca25441521f --- /dev/null +++ b/tests/cases/conformance/references/library-reference-1.ts @@ -0,0 +1,13 @@ +// @noImplicitReferences: true +// @traceResolution: true +// @typesRoot: / + +// We can find typings in the ./types folder + +// @filename: /types/jquery/index.d.ts +declare var $: { foo(): void }; + + +// @filename: /consumer.ts +/// +$.foo(); diff --git a/tests/cases/conformance/references/library-reference-10.ts b/tests/cases/conformance/references/library-reference-10.ts new file mode 100644 index 00000000000..11e065b0a7d --- /dev/null +++ b/tests/cases/conformance/references/library-reference-10.ts @@ -0,0 +1,18 @@ +// @noImplicitReferences: true +// @traceResolution: true +// @typesRoot: / + +// package.json in a primary reference can refer to another file + +// @filename: /types/jquery/package.json +{ + "typings": "jquery.d.ts" +} + +// @filename: /types/jquery/jquery.d.ts +declare var $: { foo(): void }; + + +// @filename: /consumer.ts +/// +$.foo(); diff --git a/tests/cases/conformance/references/library-reference-11.ts b/tests/cases/conformance/references/library-reference-11.ts new file mode 100644 index 00000000000..39c8af56543 --- /dev/null +++ b/tests/cases/conformance/references/library-reference-11.ts @@ -0,0 +1,17 @@ +// @noImplicitReferences: true +// @traceResolution: true + +// package.json in a secondary reference can refer to another file + +// @filename: /a/node_modules/jquery/package.json +{ + "typings": "jquery.d.ts" +} + +// @filename: /a/node_modules/jquery/jquery.d.ts +declare var $: { foo(): void }; + + +// @filename: /a/b/consumer.ts +/// +$.foo(); diff --git a/tests/cases/conformance/references/library-reference-12.ts b/tests/cases/conformance/references/library-reference-12.ts new file mode 100644 index 00000000000..c61d6d916ff --- /dev/null +++ b/tests/cases/conformance/references/library-reference-12.ts @@ -0,0 +1,17 @@ +// @noImplicitReferences: true +// @traceResolution: true + +// package.json in a secondary reference can refer to another file + +// @filename: /a/node_modules/jquery/package.json +{ + "types": "dist/jquery.d.ts" +} + +// @filename: /a/node_modules/jquery/dist/jquery.d.ts +declare var $: { foo(): void }; + + +// @filename: /a/b/consumer.ts +/// +$.foo(); diff --git a/tests/cases/conformance/references/library-reference-13.ts b/tests/cases/conformance/references/library-reference-13.ts new file mode 100644 index 00000000000..a96437f9b2c --- /dev/null +++ b/tests/cases/conformance/references/library-reference-13.ts @@ -0,0 +1,18 @@ +// @noImplicitReferences: true +// @traceResolution: true + +// load type declarations from types section of tsconfig + +// @filename: /a/tsconfig.json +{ + "compilerOptions": { + "types": [ "jquery" ] + } +} + +// @filename: /a/types/jquery/index.d.ts +declare var $: { foo(): void }; + + +// @filename: /a/b/consumer.ts +$.foo(); diff --git a/tests/cases/conformance/references/library-reference-14.ts b/tests/cases/conformance/references/library-reference-14.ts new file mode 100644 index 00000000000..53bca2ab40d --- /dev/null +++ b/tests/cases/conformance/references/library-reference-14.ts @@ -0,0 +1,11 @@ +// @noImplicitReferences: true +// @traceResolution: true +// @types: jquery +// @typesRoot: /a + +// @filename: /a/types/jquery/index.d.ts +declare var $: { foo(): void }; + + +// @filename: /a/b/consumer.ts +$.foo(); diff --git a/tests/cases/conformance/references/library-reference-15.ts b/tests/cases/conformance/references/library-reference-15.ts new file mode 100644 index 00000000000..92c96e74c97 --- /dev/null +++ b/tests/cases/conformance/references/library-reference-15.ts @@ -0,0 +1,10 @@ +// @noImplicitReferences: true +// @traceResolution: true +// @types: jquery + +// @filename: /a/types/jquery/index.d.ts +declare var $: { foo(): void }; + + +// @filename: /a/b/consumer.ts +$.foo(); diff --git a/tests/cases/conformance/references/library-reference-2.ts b/tests/cases/conformance/references/library-reference-2.ts new file mode 100644 index 00000000000..d8975664428 --- /dev/null +++ b/tests/cases/conformance/references/library-reference-2.ts @@ -0,0 +1,18 @@ +// @noImplicitReferences: true +// @traceResolution: true +// @typesRoot: / + +// package.json in a primary reference can refer to another file + +// @filename: /types/jquery/package.json +{ + "types": "jquery.d.ts" +} + +// @filename: /types/jquery/jquery.d.ts +declare var $: { foo(): void }; + + +// @filename: /consumer.ts +/// +$.foo(); diff --git a/tests/cases/conformance/references/library-reference-3.ts b/tests/cases/conformance/references/library-reference-3.ts new file mode 100644 index 00000000000..1af6df89d19 --- /dev/null +++ b/tests/cases/conformance/references/library-reference-3.ts @@ -0,0 +1,12 @@ +// @noImplicitReferences: true +// @traceResolution: true +// @typesRoot: /src + +// Secondary references are possible + +// @filename: /src/node_modules/jquery/index.d.ts +declare var $: { foo(): void }; + +// @filename: /src/consumer.ts +/// +$.foo(); diff --git a/tests/cases/conformance/references/library-reference-4.ts b/tests/cases/conformance/references/library-reference-4.ts new file mode 100644 index 00000000000..92f1b4008be --- /dev/null +++ b/tests/cases/conformance/references/library-reference-4.ts @@ -0,0 +1,23 @@ +// @noImplicitReferences: true +// @traceResolution: true +// @typesRoot: /src + +// Secondary references may be duplicated if they agree in content + +// @filename: /node_modules/foo/index.d.ts +/// +declare var foo: any; + +// @filename: /node_modules/foo/node_modules/alpha/index.d.ts +declare var alpha: any; + +// @filename: /node_modules/bar/index.d.ts +/// +declare var bar: any; + +// @filename: /node_modules/bar/node_modules/alpha/index.d.ts +declare var alpha: any; + +// @filename: /src/root.ts +/// +/// diff --git a/tests/cases/conformance/references/library-reference-5.ts b/tests/cases/conformance/references/library-reference-5.ts new file mode 100644 index 00000000000..4660da00a2a --- /dev/null +++ b/tests/cases/conformance/references/library-reference-5.ts @@ -0,0 +1,22 @@ +// @noImplicitReferences: true +// @traceResolution: true + +// Secondary references may not be duplicated if they disagree in content + +// @filename: /node_modules/foo/index.d.ts +/// +declare var foo: any; + +// @filename: /node_modules/foo/node_modules/alpha/index.d.ts +declare var alpha: any; + +// @filename: /node_modules/bar/index.d.ts +/// +declare var bar: any; + +// @filename: /node_modules/bar/node_modules/alpha/index.d.ts +declare var alpha: {}; + +// @filename: /src/root.ts +/// +/// diff --git a/tests/cases/conformance/references/library-reference-6.ts b/tests/cases/conformance/references/library-reference-6.ts new file mode 100644 index 00000000000..a746262dd73 --- /dev/null +++ b/tests/cases/conformance/references/library-reference-6.ts @@ -0,0 +1,15 @@ +// @noImplicitReferences: true +// @traceResolution: true + +// The primary lookup folder is relative to tsconfig.json, if present + +// @filename: /types/alpha/index.d.ts +declare var alpha: { a: string }; + +// @filename: /src/foo.ts +/// +var x: string = alpha.a; + +// @filename: /tsconfig.json +{ +} diff --git a/tests/cases/conformance/references/library-reference-7.ts b/tests/cases/conformance/references/library-reference-7.ts new file mode 100644 index 00000000000..e938aef7d3a --- /dev/null +++ b/tests/cases/conformance/references/library-reference-7.ts @@ -0,0 +1,11 @@ +// @noImplicitReferences: true +// @traceResolution: true + +// Secondary references are possible + +// @filename: /src/node_modules/jquery/index.d.ts +declare var $: { foo(): void }; + +// @filename: /src/consumer.ts +/// +$.foo(); diff --git a/tests/cases/conformance/references/library-reference-8.ts b/tests/cases/conformance/references/library-reference-8.ts new file mode 100644 index 00000000000..9de93776989 --- /dev/null +++ b/tests/cases/conformance/references/library-reference-8.ts @@ -0,0 +1,19 @@ +// @noImplicitReferences: true +// @traceResolution: true +// @typesRoot: / + +// Don't crash in circular library reference situations + +// @filename: /types/alpha/index.d.ts +/// +declare var alpha: { a: string }; + +// @filename: /types/beta/index.d.ts +/// +declare var beta: { b: string }; + +// @filename: /foo.ts +/// +/// +var x: string = alpha.a + beta.b; + diff --git a/tests/cases/conformance/references/library-reference-9.ts b/tests/cases/conformance/references/library-reference-9.ts new file mode 100644 index 00000000000..a187d3c23b9 --- /dev/null +++ b/tests/cases/conformance/references/library-reference-9.ts @@ -0,0 +1,20 @@ +// @noImplicitReferences: true +// @traceResolution: true + +// Use types search path + +// @filename: /share/typelib/alpha/index.d.ts +declare var alpha: { a: string }; + +// @filename: /base/src/foo.ts +/// +var x: string = alpha.a; + +// @filename: /tsconfig.json +{ + "compilerOptions": { + "typesSearchPaths": [ + "./share/typelib" + ] + } +} diff --git a/tests/cases/conformance/types/contextualTypes/jsxAttributes/contextuallyTypedStringLiteralsInJsxAttributes01.tsx b/tests/cases/conformance/types/contextualTypes/jsxAttributes/contextuallyTypedStringLiteralsInJsxAttributes01.tsx index ce6f4b7ac2f..2235961086f 100644 --- a/tests/cases/conformance/types/contextualTypes/jsxAttributes/contextuallyTypedStringLiteralsInJsxAttributes01.tsx +++ b/tests/cases/conformance/types/contextualTypes/jsxAttributes/contextuallyTypedStringLiteralsInJsxAttributes01.tsx @@ -2,9 +2,12 @@ // @declaration: true namespace JSX { - interface IntrinsicElements { + export interface IntrinsicElements { span: {}; } + export interface Element { + something?: any; + } } const FooComponent = (props: { foo: "A" | "B" | "C" }) => {props.foo}; diff --git a/tests/cases/conformance/types/contextualTypes/methodDeclarations/contextuallyTypedBindingInitializer.ts b/tests/cases/conformance/types/contextualTypes/methodDeclarations/contextuallyTypedBindingInitializer.ts new file mode 100644 index 00000000000..c02aa5b63e8 --- /dev/null +++ b/tests/cases/conformance/types/contextualTypes/methodDeclarations/contextuallyTypedBindingInitializer.ts @@ -0,0 +1,29 @@ +// @noImplicitAny: true +interface Show { + show: (x: number) => string; +} +function f({ show = v => v.toString() }: Show) {} +function f2({ "show": showRename = v => v.toString() }: Show) {} +function f3({ ["show"]: showRename = v => v.toString() }: Show) {} + +interface Nested { + nested: Show +} +function ff({ nested = { show: v => v.toString() } }: Nested) {} + +interface Tuples { + prop: [string, number]; +} +function g({ prop = ["hello", 1234] }: Tuples) {} + +interface StringUnion { + prop: "foo" | "bar"; +} +function h({ prop = "foo" }: StringUnion) {} + +interface StringIdentity { + stringIdentity(s: string): string; +} +let { stringIdentity: id = arg => arg }: StringIdentity = { stringIdentity: x => x}; + + diff --git a/tests/cases/conformance/types/contextualTypes/methodDeclarations/contextuallyTypedBindingInitializerNegative.ts b/tests/cases/conformance/types/contextualTypes/methodDeclarations/contextuallyTypedBindingInitializerNegative.ts new file mode 100644 index 00000000000..fb71da7b655 --- /dev/null +++ b/tests/cases/conformance/types/contextualTypes/methodDeclarations/contextuallyTypedBindingInitializerNegative.ts @@ -0,0 +1,27 @@ +// @noImplicitAny: true +interface Show { + show: (x: number) => string; +} +function f({ show: showRename = v => v }: Show) {} +function f2({ "show": showRename = v => v }: Show) {} +function f3({ ["show"]: showRename = v => v }: Show) {} + +interface Nested { + nested: Show +} +function ff({ nested: nestedRename = { show: v => v } }: Nested) {} + +interface StringIdentity { + stringIdentity(s: string): string; +} +let { stringIdentity: id = arg => arg.length }: StringIdentity = { stringIdentity: x => x}; + +interface Tuples { + prop: [string, number]; +} +function g({ prop = [101, 1234] }: Tuples) {} + +interface StringUnion { + prop: "foo" | "bar"; +} +function h({ prop = "baz" }: StringUnion) {} diff --git a/tests/cases/conformance/types/stringLiteral/stringLiteralTypesInUnionTypes01.ts b/tests/cases/conformance/types/stringLiteral/stringLiteralTypesInUnionTypes01.ts index b8ed1b47dd4..05f8c511118 100644 --- a/tests/cases/conformance/types/stringLiteral/stringLiteralTypesInUnionTypes01.ts +++ b/tests/cases/conformance/types/stringLiteral/stringLiteralTypesInUnionTypes01.ts @@ -2,8 +2,8 @@ type T = "foo" | "bar" | "baz"; -var x: "foo" | "bar" | "baz" = "foo"; -var y: T = "bar"; +var x: "foo" | "bar" | "baz" = undefined; +var y: T = undefined; if (x === "foo") { let a = x; diff --git a/tests/cases/conformance/types/stringLiteral/stringLiteralTypesInUnionTypes02.ts b/tests/cases/conformance/types/stringLiteral/stringLiteralTypesInUnionTypes02.ts index 2cc63ab4460..ee61efc37ca 100644 --- a/tests/cases/conformance/types/stringLiteral/stringLiteralTypesInUnionTypes02.ts +++ b/tests/cases/conformance/types/stringLiteral/stringLiteralTypesInUnionTypes02.ts @@ -2,8 +2,8 @@ type T = string | "foo" | "bar" | "baz"; -var x: "foo" | "bar" | "baz" | string = "foo"; -var y: T = "bar"; +var x: "foo" | "bar" | "baz" | string = undefined; +var y: T = undefined; if (x === "foo") { let a = x; diff --git a/tests/cases/conformance/types/stringLiteral/stringLiteralTypesInUnionTypes03.ts b/tests/cases/conformance/types/stringLiteral/stringLiteralTypesInUnionTypes03.ts index d5c6a38af79..96a4f035c4b 100644 --- a/tests/cases/conformance/types/stringLiteral/stringLiteralTypesInUnionTypes03.ts +++ b/tests/cases/conformance/types/stringLiteral/stringLiteralTypesInUnionTypes03.ts @@ -3,7 +3,7 @@ type T = number | "foo" | "bar"; var x: "foo" | "bar" | number; -var y: T = "bar"; +var y: T = undefined; if (x === "foo") { let a = x; diff --git a/tests/cases/conformance/types/stringLiteral/stringLiteralTypesInUnionTypes04.ts b/tests/cases/conformance/types/stringLiteral/stringLiteralTypesInUnionTypes04.ts index e9d062b0e5c..9f37e272b46 100644 --- a/tests/cases/conformance/types/stringLiteral/stringLiteralTypesInUnionTypes04.ts +++ b/tests/cases/conformance/types/stringLiteral/stringLiteralTypesInUnionTypes04.ts @@ -2,8 +2,8 @@ type T = "" | "foo"; -let x: T = ""; -let y: T = "foo"; +let x: T = undefined; +let y: T = undefined; if (x === "") { let a = x; diff --git a/tests/cases/conformance/types/stringLiteral/stringLiteralTypesTypePredicates01.ts b/tests/cases/conformance/types/stringLiteral/stringLiteralTypesTypePredicates01.ts index a78918c8122..2199ff3a7c7 100644 --- a/tests/cases/conformance/types/stringLiteral/stringLiteralTypesTypePredicates01.ts +++ b/tests/cases/conformance/types/stringLiteral/stringLiteralTypesTypePredicates01.ts @@ -8,7 +8,7 @@ function kindIs(kind: Kind, is: Kind): boolean { return kind === is; } -var x: Kind = "A"; +var x: Kind = undefined; if (kindIs(x, "A")) { let a = x; diff --git a/tests/cases/conformance/types/thisType/looseThisTypeInFunctions.ts b/tests/cases/conformance/types/thisType/looseThisTypeInFunctions.ts new file mode 100644 index 00000000000..b70f064f43a --- /dev/null +++ b/tests/cases/conformance/types/thisType/looseThisTypeInFunctions.ts @@ -0,0 +1,47 @@ +interface I { + n: number; + explicitThis(this: this, m: number): number; +} +interface Unused { + implicitNoThis(m: number): number; +} +class C implements I { + n: number; + explicitThis(this: this, m: number): number { + return this.n + m; + } + implicitThis(m: number): number { + return this.n + m; + } + explicitVoid(this: void, m: number): number { + return m + 1; + } +} +let c = new C(); +c.explicitVoid = c.explicitThis; // error, 'void' is missing everything +let o = { + n: 101, + explicitThis: function (m: number) { + return m + this.n.length; // error, 'length' does not exist on 'number' + }, + implicitThis(m: number): number { return m; } +}; +let i: I = o; +let o2: I = { + n: 1001, + explicitThis: function (m) { + return m + this.n.length; // error, this.n: number, no member 'length' + }, +} +let x = i.explicitThis; +let n = x(12); // callee:void doesn't match this:I +let u: Unused; +let y = u.implicitNoThis; +n = y(12); // ok, callee:void matches this:any +c.explicitVoid = c.implicitThis // ok, implicitThis(this:any) +o.implicitThis = c.implicitThis; // ok, implicitThis(this:any) +o.implicitThis = c.explicitThis; // ok, implicitThis(this:any) is assignable to explicitThis(this: this) +o.implicitThis = i.explicitThis; +i.explicitThis = function(m) { + return this.n.length; // error, this.n: number +} diff --git a/tests/cases/conformance/types/thisType/thisTypeInFunctions.ts b/tests/cases/conformance/types/thisType/thisTypeInFunctions.ts new file mode 100644 index 00000000000..481e1630092 --- /dev/null +++ b/tests/cases/conformance/types/thisType/thisTypeInFunctions.ts @@ -0,0 +1,193 @@ +// body checking +class B { + n: number; +} +class C { + n: number; + explicitThis(this: this, m: number): number { + return this.n + m; + } + explicitC(this: C, m: number): number { + return this.n + m; + } + explicitProperty(this: {n: number}, m: number): number { + return this.n + m; + } + explicitVoid(this: void, m: number): number { + return m + 1; + } +} +class D extends C { } +interface I { + a: number; + explicitVoid1(this: void): number; + explicitVoid2(this: void): number; + explicitStructural(this: {a: number}): number; + explicitInterface(this: I): number; + explicitThis(this: this): number; +} +function explicitStructural(this: { y: number }, x: number): number { + return x + this.y; +} +function justThis(this: { y: number }): number { + return this.y; +} +function implicitThis(n: number): number { + return this.m + n + 12; +} +let impl: I = { + a: 12, + explicitVoid2: () => this.a, // ok, this: any because it refers to some outer object (window?) + explicitVoid1() { return 12; }, + explicitStructural() { + return this.a; + }, + explicitInterface() { + return this.a; + }, + explicitThis() { + return this.a; + }, +} +impl.explicitVoid1 = function () { return 12; }; +impl.explicitVoid2 = () => 12; +impl.explicitStructural = function() { return this.a; }; +impl.explicitInterface = function() { return this.a; }; +impl.explicitStructural = () => 12; +impl.explicitInterface = () => 12; +impl.explicitThis = function () { return this.a; }; +// parameter checking +let ok: {y: number, f: (this: { y: number }, x: number) => number} = { y: 12, f: explicitStructural }; +let implicitAnyOk: {notSpecified: number, f: (x: number) => number} = { notSpecified: 12, f: implicitThis }; +ok.f(13); +implicitThis(12); +implicitAnyOk.f(12); + +let c = new C(); +let d = new D(); +let ripped = c.explicitC; +c.explicitC(12); +c.explicitProperty(12); +c.explicitThis(12); +d.explicitC(12); +d.explicitProperty(12); +d.explicitThis(12); +let reconstructed: { + n: number, + explicitThis(this: C, m: number): number, // note: this: this is not allowed in an object literal type. + explicitC(this: C, m: number): number, + explicitProperty: (this: {n : number}, m: number) => number, + explicitVoid(this: void, m: number): number, +} = { + n: 12, + explicitThis: c.explicitThis, + explicitC: c.explicitC, + explicitProperty: c.explicitProperty, + explicitVoid: c.explicitVoid +}; +reconstructed.explicitThis(10); +reconstructed.explicitProperty(11); +let explicitVoid = reconstructed.explicitVoid; +explicitVoid(12); +// assignment checking +let unboundToSpecified: (this: { y: number }, x: number) => number = x => x + this.y; // ok, this:any +let specifiedToSpecified: (this: {y: number}, x: number) => number = explicitStructural; +let anyToSpecified: (this: { y: number }, x: number) => number = function(x: number): number { return x + 12; }; + +let unspecifiedLambda: (x: number) => number = x => x + 12; +let specifiedLambda: (this: void, x: number) => number = x => x + 12; +let unspecifiedLambdaToSpecified: (this: {y: number}, x: number) => number = unspecifiedLambda; +let specifiedLambdaToSpecified: (this: {y: number}, x: number) => number = specifiedLambda; + + +let explicitCFunction: (this: C, m: number) => number; +let explicitPropertyFunction: (this: {n: number}, m: number) => number; +c.explicitC = explicitCFunction; +c.explicitC = function(this: C, m: number) { return this.n + m }; +c.explicitProperty = explicitPropertyFunction; +c.explicitProperty = function(this: {n: number}, m: number) { return this.n + m }; +c.explicitProperty = reconstructed.explicitProperty; + +// lambdas are assignable to anything +c.explicitC = m => m; +c.explicitThis = m => m; +c.explicitProperty = m => m; + +// this inside lambdas refer to outer scope +// the outer-scoped lambda at top-level is still just `any` +c.explicitC = m => m + this.n; +c.explicitThis = m => m + this.n; +c.explicitProperty = m => m + this.n; + +//NOTE: this=C here, I guess? +c.explicitThis = explicitCFunction; +c.explicitThis = function(this: C, m: number) { return this.n + m }; + +// this:any compatibility +c.explicitC = function(m) { return this.n + m }; +c.explicitProperty = function(m) { return this.n + m }; +c.explicitThis = function(m) { return this.n + m }; + +// this: contextual typing +c.explicitThis = function(this, m) { return this.n + m }; + +// this: superclass compatibility +c.explicitC = function(this: B, m: number) { return this.n + m }; + +// this:void compatibility +c.explicitVoid = n => n; + +// class-based assignability +class Base1 { + x: number; + public polymorphic(this: this): number { return this.x; } + explicit(this: Base1): number { return this.x; } + static explicitStatic(this: typeof Base1): number { return this.y; } + static y: number; +} +class Derived1 extends Base1 { + y: number +} +class Base2 { + y: number + polymorphic(this: this): number { return this.y; } + explicit(this: Base1): number { return this.x; } +} +class Derived2 extends Base2 { + x: number +} +let b1 = new Base1(); +let b2 = new Base2(); +let d1 = new Derived1(); +let d2 = new Derived2(); +d2.polymorphic = d1.polymorphic // ok, 'x' and 'y' in { x, y } +d1.polymorphic = d2.polymorphic // ok, 'x' and 'y' in { x, y } + +// bivariance-allowed cases +d1.polymorphic = b2.polymorphic // ok, 'y' in D: { x, y } +d2.polymorphic = d1.explicit // ok, 'y' in { x, y } +b1.polymorphic = d2.polymorphic // ok, 'x' and 'y' not in Base1: { x } +b1.explicit = d2.polymorphic // ok, 'x' and 'y' not in Base1: { x } + +////// use this-type for construction with new //// +function InterfaceThis(this: I) { + this.a = 12; +} +function LiteralTypeThis(this: {x: string}) { + this.x = "ok"; +} +function AnyThis(this: any) { + this.x = "ok"; +} +let interfaceThis = new InterfaceThis(); +let literalTypeThis = new LiteralTypeThis(); +let anyThis = new AnyThis(); + +//// type parameter inference //// +declare var f: { + (this: void, x: number): number, + call(this: (...argArray: any[]) => U, ...argArray: any[]): U; +}; +let n: number = f.call(12); + +function missingTypeIsImplicitAny(this, a: number) { return this.anything + a; } diff --git a/tests/cases/conformance/types/thisType/thisTypeInFunctions2.ts b/tests/cases/conformance/types/thisType/thisTypeInFunctions2.ts new file mode 100644 index 00000000000..a574c7a07e9 --- /dev/null +++ b/tests/cases/conformance/types/thisType/thisTypeInFunctions2.ts @@ -0,0 +1,54 @@ +interface IndexedWithThis { + // this is a workaround for React + init?: (this: this) => void; + willDestroy?: (this: any) => void; + [propName: string]: number | string | boolean | symbol | undefined | null | {} | ((this: any, ...args:any[]) => any); +} +interface IndexedWithoutThis { + // this is what React would like to write (and what they write today) + init?: () => void; + willDestroy?: () => void; + [propName: string]: any; +} +interface SimpleInterface { + foo(n: string); + bar(): number; +} +declare function extend1(args: IndexedWithThis): void; +declare function extend2(args: IndexedWithoutThis): void; +declare function simple(arg: SimpleInterface): void; + +extend1({ + init() { + this // this: IndexedWithThis because of contextual typing. + // this.mine + this.willDestroy + }, + mine: 12, + foo() { + this.url; // this: any because 'foo' matches the string indexer + this.willDestroy; + } +}); +extend2({ + init() { + this // this: any because the contextual signature of init doesn't specify this' type + this.mine + this.willDestroy + }, + mine: 13, + foo() { + this // this: any because of the string indexer + this.mine + this.willDestroy + } +}); + +simple({ + foo(n) { + return n.length + this.bar(); + }, + bar() { + return 14; + } +}) diff --git a/tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts b/tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts new file mode 100644 index 00000000000..597fe5a836e --- /dev/null +++ b/tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts @@ -0,0 +1,177 @@ +class C { + n: number; + explicitThis(this: this, m: number): number { + return this.n + m; + } + implicitThis(m: number): number { + return this.n + m; + } + explicitC(this: C, m: number): number { + return this.n + m; + } + explicitProperty(this: {n: number}, m: number): number { + return this.n + m; + } + explicitVoid(this: void, m: number): number { + return this.n + m; // 'n' doesn't exist on type 'void'. + } +} +class D { + x: number; + explicitThis(this: this, m: number): number { + return this.x + m; + } + explicitD(this: D, m: number): number { + return this.x + m; + } +} +interface I { + a: number; + explicitVoid1(this: void): number; + explicitVoid2(this: void): number; + explicitStructural(this: {a: number}): number; + explicitInterface(this: I): number; + explicitThis(this: this): number; // TODO: Allow `this` types for interfaces +} +let impl: I = { + a: 12, + explicitVoid1() { + return this.a; // error, no 'a' in 'void' + }, + explicitVoid2: () => this.a, // ok, `this:any` because it refers to an outer object + explicitStructural: () => 12, + explicitInterface: () => 12, + explicitThis() { + return this.a; + }, +} +let implExplicitStructural = impl.explicitStructural; +implExplicitStructural(); // error, no 'a' in 'void' +let implExplicitInterface = impl.explicitInterface; +implExplicitInterface(); // error, no 'a' in 'void' +function explicitStructural(this: { y: number }, x: number): number { + return x + this.y; +} +function propertyName(this: { y: number }, x: number): number { + return x + this.notFound; +} +function voidThisSpecified(this: void, x: number): number { + return x + this.notSpecified; +} +let ok: {y: number, f: (this: { y: number }, x: number) => number} = { y: 12, explicitStructural }; +let wrongPropertyType: {y: string, f: (this: { y: number }, x: number) => number} = { y: 'foo', explicitStructural }; +let wrongPropertyName: {wrongName: number, f: (this: { y: number }, x: number) => number} = { wrongName: 12, explicitStructural }; + +ok.f(); // not enough arguments +ok.f('wrong type'); +ok.f(13, 'too many arguments'); +wrongPropertyType.f(13); +wrongPropertyName.f(13); + +let c = new C(); +c.explicitC(); // not enough arguments +c.explicitC('wrong type'); +c.explicitC(13, 'too many arguments'); +c.explicitThis(); // not enough arguments +c.explicitThis('wrong type 2'); +c.explicitThis(14, 'too many arguments 2'); +c.implicitThis(); // not enough arguments +c.implicitThis('wrong type 2'); +c.implicitThis(14, 'too many arguments 2'); +c.explicitProperty(); // not enough arguments +c.explicitProperty('wrong type 3'); +c.explicitProperty(15, 'too many arguments 3'); + +// oops, this triggers contextual typing, which needs to be updated to understand that =>'s `this` is void. +let specifiedToVoid: (this: void, x: number) => number = explicitStructural; + +let reconstructed: { + n: number, + explicitThis(this: C, m: number): number, // note: this: this is not allowed in an object literal type. + explicitC(this: C, m: number): number, + explicitProperty: (this: {n : number}, m: number) => number, + explicitVoid(this: void, m: number): number, +} = { + n: 12, + explicitThis: c.explicitThis, + explicitC: c.explicitC, + explicitProperty: c.explicitProperty, + explicitVoid: c.explicitVoid +};; + +// lambdas have this: void for assignability purposes (and this unbound (free) for body checking) +let d = new D(); +let explicitXProperty: (this: { x: number }, m: number) => number; + +// from differing object types +c.explicitC = function(this: D, m: number) { return this.x + m }; +c.explicitProperty = explicitXProperty; + +c.explicitC = d.explicitD; +c.explicitC = d.explicitThis; +c.explicitThis = d.explicitD; +c.explicitThis = d.explicitThis; +c.explicitProperty = d.explicitD; +c.explicitThis = d.explicitThis; +c.explicitVoid = d.explicitD; +c.explicitVoid = d.explicitThis; + +/// class-based polymorphic assignability (with inheritance!) /// + +class Base1 { + x: number + public polymorphic(this: this): number { return this.x; } + explicit(this: Base1): number { return this.x; } + static explicitStatic(this: typeof Base1): number { return this.x; } +} +class Derived1 extends Base1 { + y: number +} +class Base2 { + y: number + polymorphic(this: this): number { return this.y; } + explicit(this: Base1): number { return this.x; } +} +class Derived2 extends Base2 { + x: number +} + + +let b1 = new Base1(); +let d1 = new Derived1(); +let b2 = new Base2(); +let d2 = new Derived2(); + +b1.polymorphic = b2.polymorphic // error, 'this.y' not in Base1: { x } +b1.explicit = b2.polymorphic // error, 'y' not in Base1: { x } + +d1.explicit = b2.polymorphic // error, 'y' not in Base1: { x } + +////// use this-type for construction with new //// +function VoidThis(this: void) { + +} +let voidThis = new VoidThis(); + +///// syntax-ish errors ///// +class ThisConstructor { + constructor(this: ThisConstructor, private n: number) { + } + set p(this: void) { + } +} +interface ThisConstructorInterface { + new(this: ThisConstructor, n: number); +} +var thisConstructorType: new (this: number) => number; +function notFirst(a: number, this: C): number { return this.n; } + +///// parse errors ///// +function modifiers(async this: C): number { return this.n; } +function restParam(...this: C): number { return this.n; } +function optional(this?: C): number { return this.n; } +function decorated(@deco() this: C): number { return this.n; } +function initializer(this: C = new C()): number { return this.n; } + +// can't name parameters 'this' in a lambda. +c.explicitProperty = (this, m) => m + this.n; diff --git a/tests/cases/conformance/types/thisType/thisTypeInObjectLiterals.ts b/tests/cases/conformance/types/thisType/thisTypeInObjectLiterals.ts new file mode 100644 index 00000000000..599caf70f30 --- /dev/null +++ b/tests/cases/conformance/types/thisType/thisTypeInObjectLiterals.ts @@ -0,0 +1,33 @@ +let o = { + d: "bar", + m() { + return this.d.length; + }, + f: function() { + return this.d.length; + } +} + +let mutuallyRecursive = { + a: 100, + start() { + return this.passthrough(this.a); + }, + passthrough(n: number) { + return this.sub1(n); + }, + sub1(n: number): number { + if (n > 0) { + return this.passthrough(n - 1); + } + return n; + } +} +var i: number = mutuallyRecursive.start(); +interface I { + a: number; + start(): number; + passthrough(n: number): number; + sub1(n: number): number; +} +var impl: I = mutuallyRecursive; diff --git a/tests/cases/conformance/types/thisType/unionThisTypeInFunctions.ts b/tests/cases/conformance/types/thisType/unionThisTypeInFunctions.ts new file mode 100644 index 00000000000..4f74058cc48 --- /dev/null +++ b/tests/cases/conformance/types/thisType/unionThisTypeInFunctions.ts @@ -0,0 +1,11 @@ +interface Real { + method(this: this, n: number): void; + data: string; +} +interface Fake { + method(this: this, n: number): void; + data: number; +} +function test(r: Real | Fake) { + r.method(12); +} diff --git a/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/unionTypesAssignability.ts b/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/unionTypesAssignability.ts index 9ceee8845a5..90f16b6d15d 100644 --- a/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/unionTypesAssignability.ts +++ b/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/unionTypesAssignability.ts @@ -59,13 +59,14 @@ unionNumberString = null; unionDE = undefined; unionNumberString = undefined; -// type parameters -function foo(t: T, u: U) { - t = u; // error - u = t; // error - var x : T | U; - x = t; // ok - x = u; // ok - t = x; // error U not assignable to T - u = x; // error T not assignable to U +// type parameters +function foo(t: T, u: U) { + t = u; // error + u = t; // error + var x : T | U; + x = t; // ok + x = u; // ok + x = undefined; + t = x; // error U not assignable to T + u = x; // error T not assignable to U } diff --git a/tests/cases/conformance/types/typeRelationships/comparable/equalityWithIntersectionTypes01.ts b/tests/cases/conformance/types/typeRelationships/comparable/equalityWithIntersectionTypes01.ts new file mode 100644 index 00000000000..74c0ebb7412 --- /dev/null +++ b/tests/cases/conformance/types/typeRelationships/comparable/equalityWithIntersectionTypes01.ts @@ -0,0 +1,24 @@ +interface I1 { + p1: number +} + +interface I2 extends I1 { + p2: number; +} + +interface I3 { + p3: number; +} + +var x = { p1: 10, p2: 20, p3: 30 }; +var y: I1 & I3 = x; +var z: I2 = x; + +if (y === z || z === y) { +} +else if (y !== z || z !== y) { +} +else if (y == z || z == y) { +} +else if (y != z || z != y) { +} \ No newline at end of file diff --git a/tests/cases/conformance/types/typeRelationships/comparable/equalityWithUnionTypes01.ts b/tests/cases/conformance/types/typeRelationships/comparable/equalityWithUnionTypes01.ts new file mode 100644 index 00000000000..d83277b975a --- /dev/null +++ b/tests/cases/conformance/types/typeRelationships/comparable/equalityWithUnionTypes01.ts @@ -0,0 +1,20 @@ +interface I1 { + p1: number +} + +interface I2 extends I1 { + p2: number; +} + +var x = { p1: 10, p2: 20 }; +var y: number | I2 = x; +var z: I1 = x; + +if (y === z || z === y) { +} +else if (y !== z || z !== y) { +} +else if (y == z || z == y) { +} +else if (y != z || z != y) { +} \ No newline at end of file diff --git a/tests/cases/conformance/types/typeRelationships/comparable/switchCaseWithIntersectionTypes01.ts b/tests/cases/conformance/types/typeRelationships/comparable/switchCaseWithIntersectionTypes01.ts new file mode 100644 index 00000000000..fd629306b10 --- /dev/null +++ b/tests/cases/conformance/types/typeRelationships/comparable/switchCaseWithIntersectionTypes01.ts @@ -0,0 +1,25 @@ + +var strAndNum: string & number; +var numAndBool: number & boolean; +var str: string; +var num: number; +var bool: boolean; + +switch (strAndNum) { + // Identical + case strAndNum: + break; + + // Constituents + case str: + case num: + break; + + // Overlap in constituents + case numAndBool: + break; + + // No relation + case bool: + break; +} \ No newline at end of file diff --git a/tests/cases/conformance/types/typeRelationships/comparable/switchCaseWithUnionTypes01.ts b/tests/cases/conformance/types/typeRelationships/comparable/switchCaseWithUnionTypes01.ts new file mode 100644 index 00000000000..bdbfaf2df47 --- /dev/null +++ b/tests/cases/conformance/types/typeRelationships/comparable/switchCaseWithUnionTypes01.ts @@ -0,0 +1,25 @@ + +var strOrNum: string | number; +var numOrBool: number | boolean; +var str: string; +var num: number; +var bool: boolean; + +switch (strOrNum) { + // Identical + case strOrNum: + break; + + // Constituents + case str: + case num: + break; + + // Overlap in constituents + case numOrBool: + break; + + // No relation + case bool: + break; +} \ No newline at end of file diff --git a/tests/cases/conformance/types/typeRelationships/comparable/typeAssertionsWithIntersectionTypes01.ts b/tests/cases/conformance/types/typeRelationships/comparable/typeAssertionsWithIntersectionTypes01.ts new file mode 100644 index 00000000000..1afc760ef85 --- /dev/null +++ b/tests/cases/conformance/types/typeRelationships/comparable/typeAssertionsWithIntersectionTypes01.ts @@ -0,0 +1,20 @@ +interface I1 { + p1: number +} + +interface I2 extends I1 { + p2: number; +} + +interface I3 { + p3: number; +} + +var x = { p1: 10, p2: 20, p3: 30 }; +var y: I1 & I3 = x; +var z: I2 = x; + +var a = z; +var b = z; +var c = z; +var d = y; diff --git a/tests/cases/conformance/types/typeRelationships/comparable/typeAssertionsWithUnionTypes01.ts b/tests/cases/conformance/types/typeRelationships/comparable/typeAssertionsWithUnionTypes01.ts new file mode 100644 index 00000000000..3010c5f159a --- /dev/null +++ b/tests/cases/conformance/types/typeRelationships/comparable/typeAssertionsWithUnionTypes01.ts @@ -0,0 +1,16 @@ +interface I1 { + p1: number +} + +interface I2 extends I1 { + p2: number; +} + +var x = { p1: 10, p2: 20 }; +var y: number | I2 = x; +var z: I1 = x; + +var a = z; +var b = z; +var c = z; +var d = y; diff --git a/tests/cases/fourslash/commentBraceCompletionPosition.ts b/tests/cases/fourslash/commentBraceCompletionPosition.ts new file mode 100644 index 00000000000..23b8240dcaf --- /dev/null +++ b/tests/cases/fourslash/commentBraceCompletionPosition.ts @@ -0,0 +1,23 @@ +/// + +//// /** +//// * inside jsdoc /*1*/ +//// */ +//// function f() { +//// // inside regular comment /*2*/ +//// var c = ""; +//// +//// /* inside multi- +//// line comment /*3*/ +//// */ +//// var y =12; +//// } + +goTo.marker('1'); +verify.not.isValidBraceCompletionAtPostion('('); + +goTo.marker('2'); +verify.not.isValidBraceCompletionAtPostion('('); + +goTo.marker('3'); +verify.not.isValidBraceCompletionAtPostion('('); \ No newline at end of file diff --git a/tests/cases/fourslash/commentsClassMembers.ts b/tests/cases/fourslash/commentsClassMembers.ts index 54b4f0253d4..d719253a57b 100644 --- a/tests/cases/fourslash/commentsClassMembers.ts +++ b/tests/cases/fourslash/commentsClassMembers.ts @@ -694,7 +694,7 @@ verify.completionListContains("a", "(parameter) a: number", "this is first param verify.quickInfoIs("(parameter) a: number", "this is first parameter a\nmore info about a"); goTo.marker('116'); -verify.quickInfoIs("class cWithConstructorProperty", ""); +verify.quickInfoIs("this: this", ""); goTo.marker('117'); verify.quickInfoIs("(local var) bbbb: number", ""); diff --git a/tests/cases/fourslash/completionEntryOnNarrowedType.ts b/tests/cases/fourslash/completionEntryOnNarrowedType.ts index 714d3390e76..f81572ccebf 100644 --- a/tests/cases/fourslash/completionEntryOnNarrowedType.ts +++ b/tests/cases/fourslash/completionEntryOnNarrowedType.ts @@ -3,10 +3,10 @@ ////function foo(strOrNum: string | number) { //// /*1*/ //// if (typeof strOrNum === "number") { -//// /*2*/ +//// strOrNum/*2*/; //// } //// else { -//// /*3*/ +//// strOrNum/*3*/; //// } ////} diff --git a/tests/cases/fourslash/completionInNamedImportLocation.ts b/tests/cases/fourslash/completionInNamedImportLocation.ts new file mode 100644 index 00000000000..596de652cc3 --- /dev/null +++ b/tests/cases/fourslash/completionInNamedImportLocation.ts @@ -0,0 +1,23 @@ +/// + +// @Filename: file.ts +////export var x = 10; +////export var y = 10; +////export default class C { +////} + + +// @Filename: a.ts +////import { /*1*/ } from "./file"; +////import { x, /*2*/ } from "./file"; + +goTo.file("a.ts"); +goTo.marker('1'); +verify.completionListContains("x", "var x: number"); +verify.completionListContains("y", "var y: number"); +verify.not.completionListContains("C"); + +goTo.marker('2'); +verify.not.completionListContains("x", "var x: number"); +verify.completionListContains("y", "var y: number"); +verify.not.completionListContains("C"); \ No newline at end of file diff --git a/tests/cases/fourslash/completionListEnumMembers.ts b/tests/cases/fourslash/completionListEnumMembers.ts index 9c24f6228b0..4f81af5a845 100644 --- a/tests/cases/fourslash/completionListEnumMembers.ts +++ b/tests/cases/fourslash/completionListEnumMembers.ts @@ -21,4 +21,4 @@ verify.memberListCount(0); goTo.marker('enumValueReference'); verify.memberListContains("toString"); verify.memberListContains("toFixed"); -verify.memberListCount(5); +verify.memberListCount(6); diff --git a/tests/cases/fourslash/findAllRefsInClassExpression.ts b/tests/cases/fourslash/findAllRefsInClassExpression.ts new file mode 100644 index 00000000000..951acdd336c --- /dev/null +++ b/tests/cases/fourslash/findAllRefsInClassExpression.ts @@ -0,0 +1,16 @@ +/// + +////interface I { [|boom|](): void; } +////new class C implements I { +//// [|boom|](){} +////} + +let ranges = test.ranges() +for (let range of ranges) { + goTo.position(range.start); + + verify.referencesCountIs(ranges.length); + for (let expectedReference of ranges) { + verify.referencesAtPositionContains(expectedReference); + } +} \ No newline at end of file diff --git a/tests/cases/fourslash/findAllRefsObjectBindingElementPropertyName03.ts b/tests/cases/fourslash/findAllRefsObjectBindingElementPropertyName03.ts index 304fa9e42e9..8dc2b1e7bb8 100644 --- a/tests/cases/fourslash/findAllRefsObjectBindingElementPropertyName03.ts +++ b/tests/cases/fourslash/findAllRefsObjectBindingElementPropertyName03.ts @@ -6,7 +6,7 @@ ////} //// ////var foo: I; -////var [{ [|property1|]: prop1 }, { property1, property2 } ] = [foo, foo]; +////var [{ [|property1|]: prop1 }, { [|property1|], property2 } ] = [foo, foo]; let ranges = test.ranges(); for (let range of ranges) { diff --git a/tests/cases/fourslash/findAllRefsObjectBindingElementPropertyName04.ts b/tests/cases/fourslash/findAllRefsObjectBindingElementPropertyName04.ts index bdb37525f71..dfa0997774e 100644 --- a/tests/cases/fourslash/findAllRefsObjectBindingElementPropertyName04.ts +++ b/tests/cases/fourslash/findAllRefsObjectBindingElementPropertyName04.ts @@ -6,14 +6,12 @@ ////} //// ////function f({ /**/[|property1|]: p1 }: I, -//// { /*SHOULD_BE_A_REFERENCE*/property1 }: I, +//// { [|property1|] }: I, //// { property1: p2 }) { //// -//// return property1 + 1; +//// return [|property1|] + 1; ////} -// NOTE: In the future, the identifier at -// SHOULD_BE_A_REFERENCE should be in the set of ranges. goTo.marker(); let ranges = test.ranges(); diff --git a/tests/cases/fourslash/findAllRefsObjectBindingElementPropertyName06.ts b/tests/cases/fourslash/findAllRefsObjectBindingElementPropertyName06.ts index 67c7029861e..379d1d4d5f5 100644 --- a/tests/cases/fourslash/findAllRefsObjectBindingElementPropertyName06.ts +++ b/tests/cases/fourslash/findAllRefsObjectBindingElementPropertyName06.ts @@ -8,12 +8,12 @@ ////var elems: I[]; ////for (let { [|property1|]: p } of elems) { ////} -////for (let { property1 } of elems) { +////for (let { [|property1|] } of elems) { ////} ////for (var { [|property1|]: p1 } of elems) { ////} ////var p2; -////for ({ property1 : p2 } of elems) { +////for ({ [|property1|] : p2 } of elems) { ////} // Note: if this test ever changes, consider updating diff --git a/tests/cases/fourslash/findAllRefsObjectBindingElementPropertyName09.ts b/tests/cases/fourslash/findAllRefsObjectBindingElementPropertyName09.ts index e45359bcf1c..0b82c73e31d 100644 --- a/tests/cases/fourslash/findAllRefsObjectBindingElementPropertyName09.ts +++ b/tests/cases/fourslash/findAllRefsObjectBindingElementPropertyName09.ts @@ -1,19 +1,17 @@ /// ////interface I { -//// /*SHOULD_BE_A_REFERENCE1*/property1: number; +//// [|property1|]: number; //// property2: string; ////} //// -////function f({ /*SHOULD_BE_A_REFERENCE2*/property1: p1 }: I, +////function f({ [|property1|]: p1 }: I, //// { /**/[|property1|] }: I, //// { property1: p2 }) { //// //// return [|property1|] + 1; ////} -// NOTE: In the future, the identifiers at -// SHOULD_BE_A_REFERENCE[1/2] should be in the set of ranges. goTo.marker(); let ranges = test.ranges(); diff --git a/tests/cases/fourslash/findReferencesAcrossMultipleProjects.ts b/tests/cases/fourslash/findReferencesAcrossMultipleProjects.ts new file mode 100644 index 00000000000..0ef7745f8f9 --- /dev/null +++ b/tests/cases/fourslash/findReferencesAcrossMultipleProjects.ts @@ -0,0 +1,17 @@ +/// + +//@Filename: a.ts +////var /*1*/x: number; + +//@Filename: b.ts +/////// +////x++; + +//@Filename: c.ts +/////// +////x++; + +goTo.file("a.ts"); +goTo.marker("1"); + +verify.referencesCountIs(3); \ No newline at end of file diff --git a/tests/cases/fourslash/findReferencesJSXTagName.ts b/tests/cases/fourslash/findReferencesJSXTagName.ts new file mode 100644 index 00000000000..a6170b4fc8f --- /dev/null +++ b/tests/cases/fourslash/findReferencesJSXTagName.ts @@ -0,0 +1,22 @@ +/// + +// @Filename: index.tsx +////import { /*1*/SubmissionComp } from "./RedditSubmission" +////function displaySubreddit(subreddit: string) { +//// let components = submissions +//// .map((value, index) => ); +////} + +// @Filename: RedditSubmission.ts +////export const /*3*/SubmissionComp = (submission: SubmissionProps) => +////
; + + +goTo.marker("1"); +verify.referencesCountIs(3); + +goTo.marker("2"); +verify.referencesCountIs(3); + +goTo.marker("3"); +verify.referencesCountIs(3); \ No newline at end of file diff --git a/tests/cases/fourslash/findReferencesJSXTagName2.ts b/tests/cases/fourslash/findReferencesJSXTagName2.ts new file mode 100644 index 00000000000..a7bb7fd97dd --- /dev/null +++ b/tests/cases/fourslash/findReferencesJSXTagName2.ts @@ -0,0 +1,11 @@ +/// + +// @Filename: index.tsx +////const /*1*/obj = {Component: () =>
}; +////const element = ; + +goTo.marker("1"); +verify.referencesCountIs(2); + +goTo.marker("2"); +verify.referencesCountIs(2); \ No newline at end of file diff --git a/tests/cases/fourslash/formattingWithMultilineComments.ts b/tests/cases/fourslash/formattingWithMultilineComments.ts new file mode 100644 index 00000000000..04cdfbcf472 --- /dev/null +++ b/tests/cases/fourslash/formattingWithMultilineComments.ts @@ -0,0 +1,9 @@ +/// + +////f(/* +/////*2*/ */() => { /*1*/ }); + +goTo.marker("1"); +edit.insertLine(""); +goTo.marker("2"); +verify.currentLineContentIs(" */() => {"); \ No newline at end of file diff --git a/tests/cases/fourslash/fourslash.ts b/tests/cases/fourslash/fourslash.ts index b69a757f01e..48d69f0a85e 100644 --- a/tests/cases/fourslash/fourslash.ts +++ b/tests/cases/fourslash/fourslash.ts @@ -110,8 +110,8 @@ declare namespace FourSlashInterface { type(definitionIndex?: number): void; position(position: number, fileIndex?: number): any; position(position: number, fileName?: string): any; - file(index: number, content?: string): any; - file(name: string, content?: string): any; + file(index: number, content?: string, scriptKindName?: string): any; + file(name: string, content?: string, scriptKindName?: string): any; } class verifyNegatable { private negative; @@ -136,6 +136,7 @@ declare namespace FourSlashInterface { typeDefinitionCountIs(expectedCount: number): void; definitionLocationExists(): void; verifyDefinitionsName(name: string, containerName: string): void; + isValidBraceCompletionAtPostion(openingBrace?: string): void; } class verify extends verifyNegatable { assertHasRanges(ranges: FourSlash.Range[]): void; @@ -173,6 +174,7 @@ declare namespace FourSlashInterface { noMatchingBracePositionInCurrentFile(bracePosition: number): void; DocCommentTemplate(expectedText: string, expectedOffset: number, empty?: boolean): void; noDocCommentTemplate(): void; + getScriptLexicalStructureListCount(count: number): void; getScriptLexicalStructureListContains(name: string, kind: string, fileName?: string, parentName?: string, isAdditionalSpan?: boolean, markerPosition?: number): void; navigationItemsListCount(count: number, searchValue: string, matchKind?: string): void; diff --git a/tests/cases/fourslash/getJavaScriptQuickInfo8.ts b/tests/cases/fourslash/getJavaScriptQuickInfo8.ts new file mode 100644 index 00000000000..09ac27ce595 --- /dev/null +++ b/tests/cases/fourslash/getJavaScriptQuickInfo8.ts @@ -0,0 +1,29 @@ +/// + +// @allowNonTsExtensions: true +// @Filename: file.js +//// let x = { +//// /** @type {number} */ +//// get m() { +//// return undefined; +//// } +//// } +//// x.m/*1*/; +//// +//// class Foo { +//// /** @type {string} */ +//// get b() { +//// return undefined; +//// } +//// } +//// var y = new Foo(); +//// y.b/*2*/; + +goTo.marker('1'); +edit.insert('.'); +verify.memberListContains('toFixed', undefined, undefined, 'method'); +edit.backspace(); + +goTo.marker('2'); +edit.insert('.'); +verify.memberListContains('substr', undefined, undefined, 'method'); diff --git a/tests/cases/fourslash/goToDefinitionAcrossMultipleProjects.ts b/tests/cases/fourslash/goToDefinitionAcrossMultipleProjects.ts new file mode 100644 index 00000000000..bac47638be6 --- /dev/null +++ b/tests/cases/fourslash/goToDefinitionAcrossMultipleProjects.ts @@ -0,0 +1,17 @@ +/// + +//@Filename: a.ts +////var x: number; + +//@Filename: b.ts +////var x: number; + +//@Filename: c.ts +/////// +/////// +/////**/x++; + +goTo.file("c.ts"); +goTo.marker(); + +verify.definitionCountIs(2); \ No newline at end of file diff --git a/tests/cases/fourslash/goToDefinitionTypeReferenceDirective.ts b/tests/cases/fourslash/goToDefinitionTypeReferenceDirective.ts new file mode 100644 index 00000000000..3aaa3ab980f --- /dev/null +++ b/tests/cases/fourslash/goToDefinitionTypeReferenceDirective.ts @@ -0,0 +1,13 @@ +/// + +// @typesRoot: src +// @Filename: src/types/lib/index.d.ts +/////*0*/declare let $: {x: number}; + +// @Filename: src/app.ts +//// /// +//// $.x; + +goTo.marker("1"); +goTo.definition(); +verify.caretAtMarker("0"); \ No newline at end of file diff --git a/tests/cases/fourslash/instanceTypesForGenericType1.ts b/tests/cases/fourslash/instanceTypesForGenericType1.ts index 96ee175383e..a3d119785bf 100644 --- a/tests/cases/fourslash/instanceTypesForGenericType1.ts +++ b/tests/cases/fourslash/instanceTypesForGenericType1.ts @@ -11,4 +11,4 @@ goTo.marker('1'); verify.quickInfoIs('(property) G.self: G'); goTo.marker('2'); -verify.quickInfoIs('class G'); \ No newline at end of file +verify.quickInfoIs('this: this'); \ No newline at end of file diff --git a/tests/cases/fourslash/javascriptModules20.ts b/tests/cases/fourslash/javascriptModules20.ts new file mode 100644 index 00000000000..7ef5c73e1c3 --- /dev/null +++ b/tests/cases/fourslash/javascriptModules20.ts @@ -0,0 +1,13 @@ +/// +// @allowJs: true + +// @Filename: mod.js +//// function foo() { return {a: true}; } +//// module.exports = foo(); + +// @Filename: app.js +//// import * as mod from "./mod" +//// mod./**/ + +goTo.marker(); +verify.completionListContains('a'); diff --git a/tests/cases/fourslash/javascriptModules21.ts b/tests/cases/fourslash/javascriptModules21.ts new file mode 100644 index 00000000000..3a046515924 --- /dev/null +++ b/tests/cases/fourslash/javascriptModules21.ts @@ -0,0 +1,14 @@ +/// +// @allowJs: true +// @module: system + +// @Filename: mod.js +//// function foo() { return {a: true}; } +//// module.exports = foo(); + +// @Filename: app.js +//// import mod from "./mod" +//// mod./**/ + +goTo.marker(); +verify.completionListContains('a'); diff --git a/tests/cases/fourslash/javascriptModules22.ts b/tests/cases/fourslash/javascriptModules22.ts new file mode 100644 index 00000000000..89fa99b5ea2 --- /dev/null +++ b/tests/cases/fourslash/javascriptModules22.ts @@ -0,0 +1,32 @@ +/// +// @allowJs: true + +// @Filename: mod.js +//// function foo() { return {a: "hello, world"}; } +//// module.exports = foo(); + +// @Filename: mod2.js +//// var x = {name: 'test'}; +//// (function createExport(obj){ +//// module.exports = { +//// "default": x, +//// "sausages": {eggs: 2} +//// }; +//// })(); + +// @Filename: app.js +//// import {a} from "./mod" +//// import def, {sausages} from "./mod2" +//// a./**/ + +goTo.marker(); +verify.completionListContains('toString'); + +edit.backspace(2); +edit.insert("def."); +verify.completionListContains("name"); + +edit.insert("name;\nsausages."); +verify.completionListContains("eggs"); +edit.insert("eggs;"); +verify.numberOfErrorsInCurrentFile(0); diff --git a/tests/cases/fourslash/javascriptModules23.ts b/tests/cases/fourslash/javascriptModules23.ts new file mode 100644 index 00000000000..eafbea87baa --- /dev/null +++ b/tests/cases/fourslash/javascriptModules23.ts @@ -0,0 +1,12 @@ +/// + +// @Filename: mod.ts +//// var foo = {a: "test"}; +//// export = foo; + +// @Filename: app.ts +//// import {a} from "./mod" +//// a./**/ + +goTo.marker(); +verify.completionListContains('toString'); diff --git a/tests/cases/fourslash/javascriptModules24.ts b/tests/cases/fourslash/javascriptModules24.ts new file mode 100644 index 00000000000..5a0dd892db7 --- /dev/null +++ b/tests/cases/fourslash/javascriptModules24.ts @@ -0,0 +1,21 @@ +/// + +// @Filename: mod.ts +//// function foo() { return 42; } +//// namespace foo { +//// export function bar (a: string) { return a; } +//// } +//// export = foo; + +// @Filename: app.ts +//// import * as foo from "./mod" +//// foo/*1*/(); +//// foo.bar(/*2*/"test"); + +goTo.marker('1'); + +/**** BUG: Should be an error to invoke a call signature on a namespace import ****/ +//verify.errorExistsBeforeMarker('1'); +verify.quickInfoIs("(alias) foo(): number\nimport foo"); +goTo.marker('2'); +verify.signatureHelpArgumentCountIs(1); diff --git a/tests/cases/fourslash/jsDocFunctionSignatures4.ts b/tests/cases/fourslash/jsDocFunctionSignatures4.ts new file mode 100644 index 00000000000..e2b443d8d40 --- /dev/null +++ b/tests/cases/fourslash/jsDocFunctionSignatures4.ts @@ -0,0 +1,11 @@ +/// + +// @allowNonTsExtensions: true +// @Filename: Foo.js + +//// /** @param {function ({OwnerID:string,AwayID:string}):void} x +//// * @param {function (string):void} y */ +//// function fn(x, y) { } + +verify.numberOfErrorsInCurrentFile(0); + diff --git a/tests/cases/fourslash/jsxBraceCompletionPosition.ts b/tests/cases/fourslash/jsxBraceCompletionPosition.ts new file mode 100644 index 00000000000..c1c331435ce --- /dev/null +++ b/tests/cases/fourslash/jsxBraceCompletionPosition.ts @@ -0,0 +1,47 @@ +/// + +//@Filename: file.tsx +//// declare var React: any; +//// +//// var x =
+//// /*1*/ +////
; +//// var y =
/*4*/
+//// var z =
+//// hello /*5*/ +////
+//// var z2 =
{ /*6*/ +////
+//// var z3 =
+//// { +//// /*7*/ +//// } +////
+ +goTo.marker('1'); +verify.not.isValidBraceCompletionAtPostion('('); +verify.isValidBraceCompletionAtPostion('{'); + +goTo.marker('2'); +verify.not.isValidBraceCompletionAtPostion('('); +verify.not.isValidBraceCompletionAtPostion('{'); + +goTo.marker('3'); +verify.not.isValidBraceCompletionAtPostion('('); +verify.isValidBraceCompletionAtPostion('{'); + +goTo.marker('4'); +verify.not.isValidBraceCompletionAtPostion('('); +verify.isValidBraceCompletionAtPostion('{'); + +goTo.marker('5'); +verify.not.isValidBraceCompletionAtPostion('('); +verify.isValidBraceCompletionAtPostion('{'); + +goTo.marker('6'); +verify.not.isValidBraceCompletionAtPostion('('); +verify.isValidBraceCompletionAtPostion('{'); + +goTo.marker('7'); +verify.not.isValidBraceCompletionAtPostion('('); +verify.isValidBraceCompletionAtPostion('{'); \ No newline at end of file diff --git a/tests/cases/fourslash/memberListOnExplicitThis.ts b/tests/cases/fourslash/memberListOnExplicitThis.ts new file mode 100644 index 00000000000..b776a7c0641 --- /dev/null +++ b/tests/cases/fourslash/memberListOnExplicitThis.ts @@ -0,0 +1,29 @@ +/// + +////interface Restricted { +//// n: number; +////} +////class C1 implements Restricted { +//// n: number; +//// m: number; +//// f(this: this) {this./*1*/} // test on 'this.' +//// g(this: Restricted) {this./*2*/} +////} +////function f(this: void) {this./*3*/} +////function g(this: Restricted) {this./*4*/} + +goTo.marker('1'); +verify.memberListContains('f', '(method) C1.f(this: this): void'); +verify.memberListContains('g', '(method) C1.g(this: Restricted): void'); +verify.memberListContains('n', '(property) C1.n: number'); +verify.memberListContains('m', '(property) C1.m: number'); + +goTo.marker('2'); +verify.memberListContains('n', '(property) Restricted.n: number'); + +goTo.marker('3'); +verify.memberListIsEmpty(); + +goTo.marker('4'); +verify.memberListContains('n', '(property) Restricted.n: number'); + diff --git a/tests/cases/fourslash/navigationBarItemsInsideMethodsAndConstructors.ts b/tests/cases/fourslash/navigationBarItemsInsideMethodsAndConstructors.ts new file mode 100644 index 00000000000..4dcca43af35 --- /dev/null +++ b/tests/cases/fourslash/navigationBarItemsInsideMethodsAndConstructors.ts @@ -0,0 +1,42 @@ +/// + +////class Class { +//// constructor() { +//// {| "itemName": "LocalFunctionInConstructor", "kind": "function", "parentName": "Class"|}function LocalFunctionInConstructor() { +//// +//// } +//// +//// {| "itemName": "LocalInterfaceInConstrcutor", "kind": "interface", "parentName": "foo"|}interface LocalInterfaceInConstrcutor { +//// } +//// +//// enum LocalEnumInConstructor { +//// {| "itemName": "LocalEnumMemberInConstructor", "kind": "property", "parentName": "LocalEnumInConstructor"|}LocalEnumMemberInConstructor, +//// } +//// } +//// +//// method() { +//// {| "itemName": "LocalFunctionInMethod", "kind": "function", "parentName": "foo"|}function LocalFunctionInMethod() { +//// {| "itemName": "LocalFunctionInLocalFunctionInMethod", "kind": "function", "parentName": "bar"|}function LocalFunctionInLocalFunctionInMethod() { +//// +//// } +//// } +//// +//// {| "itemName": "LocalInterfaceInMethod", "kind": "interface", "parentName": "foo"|}interface LocalInterfaceInMethod { +//// } +//// +//// enum LocalEnumInMethod { +//// {| "itemName": "LocalEnumMemberInMethod", "kind": "property", "parentName": "foo"|}LocalEnumMemberInMethod, +//// } +//// } +//// +//// emptyMethod() { // Non child functions method should not be duplicated +//// +//// } +////} + +test.markers().forEach((marker) => { + verify.getScriptLexicalStructureListContains(marker.data.itemName, marker.data.kind, marker.fileName, marker.data.parentName); +}); + +// no other items +verify.getScriptLexicalStructureListCount(17); diff --git a/tests/cases/fourslash/objectLiteralBindingInParameter.ts b/tests/cases/fourslash/objectLiteralBindingInParameter.ts new file mode 100644 index 00000000000..b1cbd21d929 --- /dev/null +++ b/tests/cases/fourslash/objectLiteralBindingInParameter.ts @@ -0,0 +1,35 @@ +/// + +////interface I { x1: number; x2: string } +////function f(cb: (ev: I) => any) { } +////f(({/*1*/}) => 0); + +////[null].reduce(({/*2*/}, b) => b); + +////interface Foo { +//// m(x: { x1: number, x2: number }): void; +//// prop: I; +////} +////let x: Foo = { +//// m({ /*3*/ }) { +//// }, +//// get prop(): I { return undefined; }, +//// set prop({ /*4*/ }) { +//// } +////}; + +goTo.marker("1"); +verify.completionListContains("x1"); +verify.completionListContains("x2"); + +goTo.marker("2"); +verify.completionListContains("x1"); +verify.completionListContains("x2"); + +goTo.marker("3"); +verify.completionListContains("x1"); +verify.completionListContains("x2"); + +goTo.marker("4"); +verify.completionListContains("x1"); +verify.completionListContains("x2"); \ No newline at end of file diff --git a/tests/cases/fourslash/quickInfoDisplayPartsEnum.ts b/tests/cases/fourslash/quickInfoDisplayPartsEnum1.ts similarity index 100% rename from tests/cases/fourslash/quickInfoDisplayPartsEnum.ts rename to tests/cases/fourslash/quickInfoDisplayPartsEnum1.ts diff --git a/tests/cases/fourslash/quickInfoDisplayPartsEnum2.ts b/tests/cases/fourslash/quickInfoDisplayPartsEnum2.ts new file mode 100644 index 00000000000..ad08d84c1d5 --- /dev/null +++ b/tests/cases/fourslash/quickInfoDisplayPartsEnum2.ts @@ -0,0 +1,79 @@ +/// + +////enum /*1*/E { +//// /*2*/"e1", +//// /*3*/'e2' = 10, +//// /*4*/"e3" +////} +////var /*5*/eInstance: /*6*/E; +/////*7*/eInstance = /*8*/E./*9*/e1; +/////*10*/eInstance = /*11*/E./*12*/e2; +/////*13*/eInstance = /*14*/E./*15*/e3; +////const enum /*16*/constE { +//// /*17*/"e1", +//// /*18*/'e2' = 10, +//// /*19*/"e3" +////} +////var /*20*/eInstance1: /*21*/constE; +/////*22*/eInstance1 = /*23*/constE./*24*/e1; +/////*25*/eInstance1 = /*26*/constE./*27*/e2; +/////*28*/eInstance1 = /*29*/constE./*30*/e3; + +var marker = 0; +function verifyEnumDeclaration(enumName: string, instanceName: string, isConst?: boolean) { + verifyEnumDisplay(); + + verifyEnumMemberDisplay('"e1"', /*spanLength*/ 4, 0); + verifyEnumMemberDisplay("'e2'", /*spanLength*/ 4, 10); + verifyEnumMemberDisplay('"e3"', /*spanLength*/ 4, 11); + + verifyInstance(); + verifyEnumDisplay(); + + verifyInstance(); + verifyEnumDisplay(); + verifyEnumMemberDisplay('"e1"', /*spanLength*/ 2, 0); + + verifyInstance(); + verifyEnumDisplay(); + verifyEnumMemberDisplay("'e2'", /*spanLength*/ 2, 10); + + verifyInstance(); + verifyEnumDisplay(); + verifyEnumMemberDisplay('"e3"', /*spanLength*/ 2, 11); + + function verifyEnumDisplay() { + marker++; + goTo.marker(marker.toString()); + verify.verifyQuickInfoDisplayParts("enum", "", { start: test.markerByName(marker.toString()).position, length: enumName.length }, + (isConst ? [{ text: "const", kind: "keyword" }, { text: " ", kind: "space" }] : []).concat( + [{ text: "enum", kind: "keyword" }, { text: " ", kind: "space" }, { text: enumName, kind: "enumName" }]), + []);; + } + + function verifyEnumMemberDisplay(enumMemberName: string, spanLength: number, initializer: number) { + marker++; + goTo.marker(marker.toString()); + // Each of these names is a string literal, + // but since they're accessed by property accesses, + // we need to account for the quotes at the beginning and end. + verify.verifyQuickInfoDisplayParts("var", "", { start: test.markerByName(marker.toString()).position, length: spanLength }, + [{ text: "(", kind: "punctuation" }, { text: "enum member", kind: "text" }, { text: ")", kind: "punctuation" }, + { text: " ", kind: "space" }, { text: enumName, kind: "enumName" }, { text: "[", kind: "punctuation" }, { text: enumMemberName, kind: "stringLiteral" }, { text: "]", kind: "punctuation" }, + { text: " ", kind: "space" }, { text: "=", kind: "operator" }, { text: " ", kind: "space" }, { text: initializer.toString(), kind: "numericLiteral" }], + []); + } + + function verifyInstance() { + marker++; + goTo.marker(marker.toString()); + verify.verifyQuickInfoDisplayParts("var", "", { start: test.markerByName(marker.toString()).position, length: instanceName.length }, + [{ text: "var", kind: "keyword" }, + { text: " ", kind: "space" }, { text: instanceName, kind: "localName" }, { text: ":", kind: "punctuation" }, + { text: " ", kind: "space" }, { text: enumName, kind: "enumName" }], + []); + } +} + +verifyEnumDeclaration("E", "eInstance"); +verifyEnumDeclaration("constE", "eInstance1", /*isConst*/ true); diff --git a/tests/cases/fourslash/quickInfoDisplayPartsEnum3.ts b/tests/cases/fourslash/quickInfoDisplayPartsEnum3.ts new file mode 100644 index 00000000000..77fbda1e317 --- /dev/null +++ b/tests/cases/fourslash/quickInfoDisplayPartsEnum3.ts @@ -0,0 +1,80 @@ +/// + +////enum /*1*/E { +//// /*2*/"e1", +//// /*3*/'e2' = 10, +//// /*4*/"e3" +////} +////var /*5*/eInstance: /*6*/E; +/////*7*/eInstance = /*8*/E[/*9*/"e1"]; +/////*10*/eInstance = /*11*/E[/*12*/"e2"]; +/////*13*/eInstance = /*14*/E[/*15*/'e3']; +////const enum /*16*/constE { +//// /*17*/"e1", +//// /*18*/'e2' = 10, +//// /*19*/"e3" +////} +////var /*20*/eInstance1: /*21*/constE; +/////*22*/eInstance1 = /*23*/constE[/*24*/"e1"]; +/////*25*/eInstance1 = /*26*/constE[/*27*/"e2"]; +/////*28*/eInstance1 = /*29*/constE[/*30*/'e3']; + +var marker = 0; +function verifyEnumDeclaration(enumName: string, instanceName: string, isConst?: boolean) { + verifyEnumDisplay(); + + verifyEnumMemberDisplay('"e1"', /*spanLength*/ 4, 0); + verifyEnumMemberDisplay("'e2'", /*spanLength*/ 4, 10); + verifyEnumMemberDisplay('"e3"', /*spanLength*/ 4, 11); + + verifyInstance(); + verifyEnumDisplay(); + + verifyInstance(); + verifyEnumDisplay(); + verifyEnumMemberDisplay('"e1"', /*spanLength*/ 4, 0); + + verifyInstance(); + verifyEnumDisplay(); + verifyEnumMemberDisplay("'e2'", /*spanLength*/ 4, 10); + + verifyInstance(); + verifyEnumDisplay(); + verifyEnumMemberDisplay('"e3"', /*spanLength*/ 4, 11); + + function verifyEnumDisplay() { + marker++; + goTo.marker(marker.toString()); + verify.verifyQuickInfoDisplayParts("enum", "", { start: test.markerByName(marker.toString()).position, length: enumName.length }, + (isConst ? [{ text: "const", kind: "keyword" }, { text: " ", kind: "space" }] : []).concat( + [{ text: "enum", kind: "keyword" }, { text: " ", kind: "space" }, { text: enumName, kind: "enumName" }]), + []);; + } + + function verifyEnumMemberDisplay(enumMemberName: string, spanLength: number, initializer: number) { + marker++; + goTo.marker(marker.toString()); + // Each of these names is a string literal, + // but since they're accessed by property accesses, + // we need to account for the quotes at the beginning and end. + verify.verifyQuickInfoDisplayParts("var", "", { start: test.markerByName(marker.toString()).position, length: spanLength }, + [{ text: "(", kind: "punctuation" }, { text: "enum member", kind: "text" }, { text: ")", kind: "punctuation" }, + { text: " ", kind: "space" }, { text: enumName, kind: "enumName" }, { text: "[", kind: "punctuation" }, { text: enumMemberName, kind: "stringLiteral" }, { text: "]", kind: "punctuation" }, + { text: " ", kind: "space" }, { text: "=", kind: "operator" }, { text: " ", kind: "space" }, { text: initializer.toString(), kind: "numericLiteral" }], + []); + } + + function verifyInstance() { + marker++; + goTo.marker(marker.toString()); + verify.verifyQuickInfoDisplayParts("var", "", { start: test.markerByName(marker.toString()).position, length: instanceName.length }, + [{ text: "var", kind: "keyword" }, + { text: " ", kind: "space" }, { text: instanceName, kind: "localName" }, { text: ":", kind: "punctuation" }, + { text: " ", kind: "space" }, { text: enumName, kind: "enumName" }], + []); + } +} + +verifyEnumDeclaration("E", "eInstance"); +marker = 15; +//verifyEnumDeclaration("constE", "eInstance1", /*isConst*/ true); diff --git a/tests/cases/fourslash/quickInfoDisplayPartsLiteralLikeNames01.ts b/tests/cases/fourslash/quickInfoDisplayPartsLiteralLikeNames01.ts new file mode 100644 index 00000000000..939eb55610d --- /dev/null +++ b/tests/cases/fourslash/quickInfoDisplayPartsLiteralLikeNames01.ts @@ -0,0 +1,49 @@ +/// + +////class C { +//// public /*1*/1() { } +//// private /*2*/Infinity() { } +//// protected /*3*/NaN() { } +//// static /*4*/"stringLiteralName"() { } +//// method() { +//// this[/*5*/1](); +//// this[/*6*/"1"](); +//// this./*7*/Infinity(); +//// this[/*8*/"Infinity"](); +//// this./*9*/NaN(); +//// C./*10*/stringLiteralName(); +//// } + +verifyClassMethodWithElementAccessDisplay("1", "public", "1", "methodName", /*spanLength*/ "1".length); +verifyClassMethodWithPropertyAccessDisplay("2", "private", "Infinity", /*spanLength*/ "Infinity".length); +verifyClassMethodWithPropertyAccessDisplay("3", "protected", "NaN", /*spanLength*/ "NaN".length); +verifyClassMethodWithElementAccessDisplay("4", "static", '"stringLiteralName"', "stringLiteral", /*spanLength*/ '"stringLiteralName"'.length); +verifyClassMethodWithElementAccessDisplay("5", "public", "1", "methodName", /*spanLength*/ "1".length); +verifyClassMethodWithElementAccessDisplay("6", "public", "1", "methodName", /*spanLength*/ "1".length + 2); +verifyClassMethodWithPropertyAccessDisplay("7", "private", "Infinity", /*spanLength*/ "Infinity".length); +verifyClassMethodWithPropertyAccessDisplay("8", "private", "Infinity", /*spanLength*/ "Infinity".length + 2); +verifyClassMethodWithPropertyAccessDisplay("9", "protected", "NaN", /*spanLength*/ "NaN".length); +verifyClassMethodWithElementAccessDisplay("10", "static", '"stringLiteralName"', "stringLiteral", /*spanLength*/ "stringLiteralName".length); + + +function verifyClassMethodWithPropertyAccessDisplay(markerName: string, kindModifiers: string, methodName: string, spanLength: number) { + goTo.marker(markerName); + verify.verifyQuickInfoDisplayParts("method", kindModifiers, { start: test.markerByName(markerName).position, length: spanLength }, + [{ text: "(", kind: "punctuation" }, { text: "method", kind: "text" }, { text: ")", kind: "punctuation" }, + { text: " ", kind: "space" }, + { text: "C", kind: "className" }, { text: ".", kind: "punctuation" }, { text: methodName, kind: "methodName" }, + { text: "(", kind: "punctuation" }, { text: ")", kind: "punctuation" }, { text: ":", kind: "punctuation" }, + { text: " ", kind: "space" }, { text: "void", kind: "keyword" }], + []); +} + +function verifyClassMethodWithElementAccessDisplay(markerName: string, kindModifiers: string, methodName: string, methodDisplay: "methodName" | "stringLiteral", spanLength: number) { + goTo.marker(markerName); + verify.verifyQuickInfoDisplayParts("method", kindModifiers, { start: test.markerByName(markerName).position, length: spanLength }, + [{ text: "(", kind: "punctuation" }, { text: "method", kind: "text" }, { text: ")", kind: "punctuation" }, + { text: " ", kind: "space" }, + { text: "C", kind: "className" }, { text: "[", kind: "punctuation" }, { text: methodName, kind: methodDisplay }, { text: "]", kind: "punctuation" }, + { text: "(", kind: "punctuation" }, { text: ")", kind: "punctuation" }, { text: ":", kind: "punctuation" }, + { text: " ", kind: "space" }, { text: "void", kind: "keyword" }], + []); +} diff --git a/tests/cases/fourslash/quickInfoOnNarrowedType.ts b/tests/cases/fourslash/quickInfoOnNarrowedType.ts index bc1d8126d76..53fe1bed232 100644 --- a/tests/cases/fourslash/quickInfoOnNarrowedType.ts +++ b/tests/cases/fourslash/quickInfoOnNarrowedType.ts @@ -1,5 +1,7 @@ /// +// @strictNullChecks: true + ////function foo(strOrNum: string | number) { //// if (typeof /*1*/strOrNum === "number") { //// return /*2*/strOrNum; @@ -9,6 +11,13 @@ //// } ////} +////function bar() { +//// let s: string | undefined; +//// /*4*/s; +//// /*5*/s = "abc"; +//// /*6*/s; +////} + goTo.marker('1'); verify.quickInfoIs('(parameter) strOrNum: string | number'); verify.completionListContains("strOrNum", "(parameter) strOrNum: string | number"); @@ -20,3 +29,15 @@ verify.completionListContains("strOrNum", "(parameter) strOrNum: number"); goTo.marker('3'); verify.quickInfoIs('(parameter) strOrNum: string'); verify.completionListContains("strOrNum", "(parameter) strOrNum: string"); + +goTo.marker('4'); +verify.quickInfoIs('let s: undefined'); +verify.completionListContains("s", "let s: undefined"); + +goTo.marker('5'); +verify.quickInfoIs('let s: string | undefined'); +verify.completionListContains("s", "let s: string | undefined"); + +goTo.marker('6'); +verify.quickInfoIs('let s: string'); +verify.completionListContains("s", "let s: string"); diff --git a/tests/cases/fourslash/quickInfoOnNarrowedTypeInModule.ts b/tests/cases/fourslash/quickInfoOnNarrowedTypeInModule.ts index b2826d01650..1f95de35403 100644 --- a/tests/cases/fourslash/quickInfoOnNarrowedTypeInModule.ts +++ b/tests/cases/fourslash/quickInfoOnNarrowedTypeInModule.ts @@ -38,7 +38,19 @@ goTo.marker('3'); verify.quickInfoIs('var nonExportedStrOrNum: string'); verify.completionListContains("nonExportedStrOrNum", "var nonExportedStrOrNum: string"); -['4', '5', '6', '7', '8', '9'].forEach((marker, index, arr) => { +goTo.marker('4'); +verify.quickInfoIs('var m.exportedStrOrNum: string | number'); +verify.completionListContains("exportedStrOrNum", "var m.exportedStrOrNum: string | number"); + +goTo.marker('5'); +verify.quickInfoIs('var m.exportedStrOrNum: number'); +verify.completionListContains("exportedStrOrNum", "var m.exportedStrOrNum: number"); + +goTo.marker('6'); +verify.quickInfoIs('var m.exportedStrOrNum: string'); +verify.completionListContains("exportedStrOrNum", "var m.exportedStrOrNum: string"); + +['7', '8', '9'].forEach((marker, index, arr) => { goTo.marker(marker); verify.quickInfoIs('var m.exportedStrOrNum: string | number'); verify.completionListContains("exportedStrOrNum", "var m.exportedStrOrNum: string | number"); diff --git a/tests/cases/fourslash/quickInfoOnThis.ts b/tests/cases/fourslash/quickInfoOnThis.ts index c4eecfca5d5..91083d41e6b 100644 --- a/tests/cases/fourslash/quickInfoOnThis.ts +++ b/tests/cases/fourslash/quickInfoOnThis.ts @@ -1,15 +1,95 @@ /// - -////function someFn1(someFn: { (): void; }) { } +////interface Restricted { +//// n: number; +////} +////function wrapper(wrapped: { (): void; }) { } ////class Foo { -//// public bar() { -//// someFn1( -//// function doSomething() { -//// console.log(th/**/is); +//// n: number; +//// public explicitThis(this: this) { +//// wrapper( +//// function explicitVoid(this: void) { +//// console.log(th/*1*/is); //// } //// ) +//// console.log(th/*2*/is); +//// } +//// public explicitInterface(th/*3*/is: Restricted) { +//// console.log(th/*4*/is); +//// } +//// public explicitClass(th/*5*/is: Foo) { +//// console.log(th/*6*/is); //// } ////} +////class Bar { +//// public explicitThis(this: this) { +//// console.log(th/*7*/is); +//// } +//// public explicitClass(this: Bar) { +//// console.log(thi/*8*/s); +//// } +////} +//// +////function implicitAny(x: number): void { +//// return th/*9*/is; +////} +////function explicitVoid(th/*10*/is: void, x: number): void { +//// return th/*11*/is; +////} +////function explicitInterface(th/*12*/is: Restricted): void { +//// console.log(thi/*13*/s); +////} +////function explicitLiteral(th/*14*/is: { n: number }): void { +//// console.log(th/*15*/is); +////} +//// +////interface ContextualInterface { +//// m: number; +//// method(this: this, n: number); +////} +////let o: ContextualInterface = { +//// m: 12, +//// method(n) { +//// let x = this/*16*/.m; +//// } +////} +////interface ContextualInterface2 { +//// (this: void, n: number): void; +////} +////let contextualInterface2: ContextualInterface2 = function (th/*17*/is, n) { } -goTo.marker(); +goTo.marker('1'); +verify.quickInfoIs('void'); +goTo.marker('2'); +verify.quickInfoIs('this: this'); +goTo.marker('3'); +verify.quickInfoIs('(parameter) this: Restricted'); +goTo.marker('4'); +verify.quickInfoIs('this: Restricted'); +goTo.marker('5'); +verify.quickInfoIs('(parameter) this: Foo'); +goTo.marker('6'); +verify.quickInfoIs('this: Foo'); +goTo.marker('7'); +verify.quickInfoIs('this: this'); +goTo.marker('8'); +verify.quickInfoIs('this: Bar'); +goTo.marker('9'); verify.quickInfoIs('any'); +goTo.marker('10'); +verify.quickInfoIs('(parameter) this: void'); +goTo.marker('11'); +verify.quickInfoIs('void'); +goTo.marker('12'); +verify.quickInfoIs('(parameter) this: Restricted'); +goTo.marker('13'); +verify.quickInfoIs('this: Restricted'); +goTo.marker('14'); + +verify.quickInfoIs('(parameter) this: {\n n: number;\n}'); +goTo.marker('15'); +verify.quickInfoIs('this: {\n n: number;\n}'); + +goTo.marker('16'); +verify.quickInfoIs('this: ContextualInterface'); +goTo.marker('17'); +verify.quickInfoIs('(parameter) this: void'); diff --git a/tests/cases/fourslash/referencesForClassMembers.ts b/tests/cases/fourslash/referencesForClassMembers.ts new file mode 100644 index 00000000000..851c1b39ab0 --- /dev/null +++ b/tests/cases/fourslash/referencesForClassMembers.ts @@ -0,0 +1,32 @@ +/// + +////class Base { +//// /*1*/a: number; +//// /*2*/method(): void { } +////} +////class MyClass extends Base { +//// /*3*/a; +//// /*4*/method() { } +////} +//// +////var c: MyClass; +////c./*5*/a; +////c./*6*/method(); + +goTo.marker("1"); +verify.referencesCountIs(3); + +goTo.marker("2"); +verify.referencesCountIs(3); + +goTo.marker("3"); +verify.referencesCountIs(3); + +goTo.marker("4"); +verify.referencesCountIs(3); + +goTo.marker("5"); +verify.referencesCountIs(3); + +goTo.marker("6"); +verify.referencesCountIs(3); diff --git a/tests/cases/fourslash/referencesForClassMembersExtendingAbstractClass.ts b/tests/cases/fourslash/referencesForClassMembersExtendingAbstractClass.ts new file mode 100644 index 00000000000..fcabff979fb --- /dev/null +++ b/tests/cases/fourslash/referencesForClassMembersExtendingAbstractClass.ts @@ -0,0 +1,32 @@ +/// + +////abstract class Base { +//// abstract /*1*/a: number; +//// abstract /*2*/method(): void; +////} +////class MyClass extends Base { +//// /*3*/a; +//// /*4*/method() { } +////} +//// +////var c: MyClass; +////c./*5*/a; +////c./*6*/method(); + +goTo.marker("1"); +verify.referencesCountIs(3); + +goTo.marker("2"); +verify.referencesCountIs(3); + +goTo.marker("3"); +verify.referencesCountIs(3); + +goTo.marker("4"); +verify.referencesCountIs(3); + +goTo.marker("5"); +verify.referencesCountIs(3); + +goTo.marker("6"); +verify.referencesCountIs(3); diff --git a/tests/cases/fourslash/referencesForClassMembersExtendingGenericClass.ts b/tests/cases/fourslash/referencesForClassMembersExtendingGenericClass.ts new file mode 100644 index 00000000000..f0185fb39aa --- /dev/null +++ b/tests/cases/fourslash/referencesForClassMembersExtendingGenericClass.ts @@ -0,0 +1,32 @@ +/// + +////class Base { +//// /*1*/a: this; +//// /*2*/method(a?:T, b?:U): this { } +////} +////class MyClass extends Base { +//// /*3*/a; +//// /*4*/method() { } +////} +//// +////var c: MyClass; +////c./*5*/a; +////c./*6*/method(); + +goTo.marker("1"); +verify.referencesCountIs(3); + +goTo.marker("2"); +verify.referencesCountIs(3); + +goTo.marker("3"); +verify.referencesCountIs(3); + +goTo.marker("4"); +verify.referencesCountIs(3); + +goTo.marker("5"); +verify.referencesCountIs(3); + +goTo.marker("6"); +verify.referencesCountIs(3); diff --git a/tests/cases/fourslash/referencesForInheritedProperties6.ts b/tests/cases/fourslash/referencesForInheritedProperties6.ts index de6a2f2eba1..ddd52447dc1 100644 --- a/tests/cases/fourslash/referencesForInheritedProperties6.ts +++ b/tests/cases/fourslash/referencesForInheritedProperties6.ts @@ -14,13 +14,13 @@ //// v./*6*/doStuff(); goTo.marker("1"); -verify.referencesCountIs(1); +verify.referencesCountIs(3); goTo.marker("2"); verify.referencesCountIs(3); goTo.marker("3"); -verify.referencesCountIs(2); +verify.referencesCountIs(3); goTo.marker("4"); verify.referencesCountIs(3); @@ -29,4 +29,4 @@ goTo.marker("5"); verify.referencesCountIs(3); goTo.marker("6"); -verify.referencesCountIs(2); \ No newline at end of file +verify.referencesCountIs(3); \ No newline at end of file diff --git a/tests/cases/fourslash/referencesForInheritedProperties7.ts b/tests/cases/fourslash/referencesForInheritedProperties7.ts index 000d4922222..5747e99615f 100644 --- a/tests/cases/fourslash/referencesForInheritedProperties7.ts +++ b/tests/cases/fourslash/referencesForInheritedProperties7.ts @@ -18,7 +18,7 @@ //// v./*8*/doStuff(); goTo.marker("1"); -verify.referencesCountIs(1); +verify.referencesCountIs(3); goTo.marker("2"); verify.referencesCountIs(3); @@ -30,7 +30,7 @@ goTo.marker("4"); verify.referencesCountIs(3); goTo.marker("5"); -verify.referencesCountIs(3); +verify.referencesCountIs(4); goTo.marker("6"); verify.referencesCountIs(4); @@ -39,4 +39,4 @@ goTo.marker("7"); verify.referencesCountIs(4); goTo.marker("8"); -verify.referencesCountIs(3); \ No newline at end of file +verify.referencesCountIs(4); \ No newline at end of file diff --git a/tests/cases/fourslash/renameAcrossMultipleProjects.ts b/tests/cases/fourslash/renameAcrossMultipleProjects.ts new file mode 100644 index 00000000000..44b5c0baef4 --- /dev/null +++ b/tests/cases/fourslash/renameAcrossMultipleProjects.ts @@ -0,0 +1,17 @@ +/// + +//@Filename: a.ts +////var /*1*/[|x|]: number; + +//@Filename: b.ts +/////// +////[|x|]++; + +//@Filename: c.ts +/////// +////[|x|]++; + +goTo.file("a.ts"); +goTo.marker("1"); + +verify.renameLocations( /*findInStrings*/ false, /*findInComments*/ false); \ No newline at end of file diff --git a/tests/cases/fourslash/renameDefaultImport.ts b/tests/cases/fourslash/renameDefaultImport.ts new file mode 100644 index 00000000000..fd9534e65f7 --- /dev/null +++ b/tests/cases/fourslash/renameDefaultImport.ts @@ -0,0 +1,19 @@ +/// + +// @Filename: B.ts +////export default class [|B|] { +//// test() { +//// } +////} + +// @Filename: A.ts +////import [|B|] from "./B"; +////let b = new [|B|](); +////b.test(); + +let ranges = test.ranges() +for (let range of ranges) { + goTo.file(range.fileName); + goTo.position(range.start); + verify.renameLocations(/*findInStrings*/ false, /*findInComments*/ false); +} diff --git a/tests/cases/fourslash/renameDefaultImportDifferentName.ts b/tests/cases/fourslash/renameDefaultImportDifferentName.ts new file mode 100644 index 00000000000..5965f1a63e9 --- /dev/null +++ b/tests/cases/fourslash/renameDefaultImportDifferentName.ts @@ -0,0 +1,23 @@ +/// + +// @Filename: B.ts +////export default class /*1*/C { +//// test() { +//// } +////} + +// @Filename: A.ts +////import [|B|] from "./B"; +////let b = new [|B|](); +////b.test(); + +goTo.file("B.ts"); +goTo.marker("1"); +verify.occurrencesAtPositionCount(1); + +goTo.file("A.ts"); +let ranges = test.ranges() +for (let range of ranges) { + goTo.position(range.start); + verify.renameLocations(/*findInStrings*/ false, /*findInComments*/ false); +} diff --git a/tests/cases/fourslash/renameDestructuringAssignment.ts b/tests/cases/fourslash/renameDestructuringAssignment.ts new file mode 100644 index 00000000000..b7b18f661d2 --- /dev/null +++ b/tests/cases/fourslash/renameDestructuringAssignment.ts @@ -0,0 +1,14 @@ +/// + +////interface I { +//// [|x|]: number; +////} +////var a: I; +////var x; +////({ [|x|]: x } = a); + +let ranges = test.ranges() +for (let range of ranges) { + goTo.position(range.start); + verify.renameLocations(/*findInStrings*/ false, /*findInComments*/ false); +} diff --git a/tests/cases/fourslash/renameDestructuringAssignmentInFor.ts b/tests/cases/fourslash/renameDestructuringAssignmentInFor.ts new file mode 100644 index 00000000000..6be57b81fa2 --- /dev/null +++ b/tests/cases/fourslash/renameDestructuringAssignmentInFor.ts @@ -0,0 +1,20 @@ +/// + +////interface I { +//// /*1*/[|property1|]: number; +//// property2: string; +////} +////var elems: I[]; +//// +////var p2: number, property1: number; +////for ({ [|property1|] } = elems[0]; p2 < 100; p2++) { +//// p2 = property1++; +////} +////for ({ /*2*/[|property1|]: p2 } = elems[0]; p2 < 100; p2++) { +////} + +goTo.marker("1"); +verify.renameLocations(/*findInStrings*/ false, /*findInComments*/ false); + +goTo.marker("2"); +verify.renameLocations(/*findInStrings*/ false, /*findInComments*/ false); diff --git a/tests/cases/fourslash/renameDestructuringAssignmentInFor2.ts b/tests/cases/fourslash/renameDestructuringAssignmentInFor2.ts new file mode 100644 index 00000000000..ca75e42394b --- /dev/null +++ b/tests/cases/fourslash/renameDestructuringAssignmentInFor2.ts @@ -0,0 +1,20 @@ +/// + +////interface I { +//// property1: number; +//// property2: string; +////} +////var elems: I[]; +//// +////var p2: number, [|property1|]: number; +////for ({ [|property1|] } = elems[0]; p2 < 100; p2++) { +//// p2 = [|property1|]++; +////} +////for ({ property1: p2 } = elems[0]; p2 < 100; p2++) { +////} + +let ranges = test.ranges() +for (let range of ranges) { + goTo.position(range.start); + verify.renameLocations(/*findInStrings*/ false, /*findInComments*/ false); +} diff --git a/tests/cases/fourslash/renameDestructuringAssignmentInForOf.ts b/tests/cases/fourslash/renameDestructuringAssignmentInForOf.ts new file mode 100644 index 00000000000..d965875d259 --- /dev/null +++ b/tests/cases/fourslash/renameDestructuringAssignmentInForOf.ts @@ -0,0 +1,20 @@ +/// + +////interface I { +//// /*1*/[|property1|]: number; +//// property2: string; +////} +////var elems: I[]; +//// +////var property1: number, p2: number; +////for ({ [|property1|] } of elems) { +//// property1++; +////} +////for ({ /*2*/[|property1|]: p2 } of elems) { +////} + +goTo.marker("1"); +verify.renameLocations(/*findInStrings*/ false, /*findInComments*/ false); + +goTo.marker("2"); +verify.renameLocations(/*findInStrings*/ false, /*findInComments*/ false); \ No newline at end of file diff --git a/tests/cases/fourslash/renameDestructuringAssignmentInForOf2.ts b/tests/cases/fourslash/renameDestructuringAssignmentInForOf2.ts new file mode 100644 index 00000000000..401b6776d2e --- /dev/null +++ b/tests/cases/fourslash/renameDestructuringAssignmentInForOf2.ts @@ -0,0 +1,20 @@ +/// + +////interface I { +//// property1: number; +//// property2: string; +////} +////var elems: I[]; +//// +////var [|property1|]: number, p2: number; +////for ({ [|property1|] } of elems) { +//// [|property1|]++; +////} +////for ({ property1: p2 } of elems) { +////} + +let ranges = test.ranges() +for (let range of ranges) { + goTo.position(range.start); + verify.renameLocations(/*findInStrings*/ false, /*findInComments*/ false); +} diff --git a/tests/cases/fourslash/renameDestructuringAssignmentNestedInArrayLiteral.ts b/tests/cases/fourslash/renameDestructuringAssignmentNestedInArrayLiteral.ts new file mode 100644 index 00000000000..9d5d2a041e5 --- /dev/null +++ b/tests/cases/fourslash/renameDestructuringAssignmentNestedInArrayLiteral.ts @@ -0,0 +1,15 @@ +/// + +////interface I { +//// /*1*/[|property1|]: number; +//// property2: string; +////} +////var elems: I[], p1: number, property1: number; +////[{ /*2*/[|property1|]: p1 }] = elems; +////[{ [|property1|] }] = elems; + +goTo.marker("1"); +verify.renameLocations(/*findInStrings*/ false, /*findInComments*/ false); + +goTo.marker("2"); +verify.renameLocations(/*findInStrings*/ false, /*findInComments*/ false); diff --git a/tests/cases/fourslash/renameDestructuringAssignmentNestedInArrayLiteral2.ts b/tests/cases/fourslash/renameDestructuringAssignmentNestedInArrayLiteral2.ts new file mode 100644 index 00000000000..c4db2de512f --- /dev/null +++ b/tests/cases/fourslash/renameDestructuringAssignmentNestedInArrayLiteral2.ts @@ -0,0 +1,15 @@ +/// + +////interface I { +//// property1: number; +//// property2: string; +////} +////var elems: I[], p1: number, [|property1|]: number; +////[{ property1: p1 }] = elems; +////[{ [|property1|] }] = elems; + +let ranges = test.ranges() +for (let range of ranges) { + goTo.position(range.start); + verify.renameLocations(/*findInStrings*/ false, /*findInComments*/ false); +} diff --git a/tests/cases/fourslash/renameDestructuringAssignmentNestedInFor.ts b/tests/cases/fourslash/renameDestructuringAssignmentNestedInFor.ts new file mode 100644 index 00000000000..e603c82dbd7 --- /dev/null +++ b/tests/cases/fourslash/renameDestructuringAssignmentNestedInFor.ts @@ -0,0 +1,22 @@ +/// + +////interface MultiRobot { +//// name: string; +//// skills: { +//// /*1*/[|primary|]: string; +//// secondary: string; +//// }; +////} +////let multiRobot: MultiRobot; +////for ({ skills: { /*2*/[|primary|]: primaryA, secondary: secondaryA } } = multiRobot, i = 0; i < 1; i++) { +//// console.log(primaryA); +////} +////for ({ skills: { [|primary|], secondary } } = multiRobot, i = 0; i < 1; i++) { +//// console.log(primary); +////} + +goTo.marker("1"); +verify.renameLocations(/*findInStrings*/ false, /*findInComments*/ false); + +goTo.marker("2"); +verify.renameLocations(/*findInStrings*/ false, /*findInComments*/ false); diff --git a/tests/cases/fourslash/renameDestructuringAssignmentNestedInFor2.ts b/tests/cases/fourslash/renameDestructuringAssignmentNestedInFor2.ts new file mode 100644 index 00000000000..89dc899c5bf --- /dev/null +++ b/tests/cases/fourslash/renameDestructuringAssignmentNestedInFor2.ts @@ -0,0 +1,23 @@ +/// + +////interface MultiRobot { +//// name: string; +//// skills: { +//// primary: string; +//// secondary: string; +//// }; +////} +////let multiRobot: MultiRobot, [|primary|]: string; +////for ({ skills: { primary: primaryA, secondary: secondaryA } } = multiRobot, i = 0; i < 1; i++) { +//// console.log(primaryA); +////} +////for ({ skills: { [|primary|], secondary } } = multiRobot, i = 0; i < 1; i++) { +//// console.log([|primary|]); +////} + +let ranges = test.ranges() +for (let range of ranges) { + goTo.position(range.start); + verify.renameLocations(/*findInStrings*/ false, /*findInComments*/ false); +} + diff --git a/tests/cases/fourslash/renameDestructuringAssignmentNestedInForOf.ts b/tests/cases/fourslash/renameDestructuringAssignmentNestedInForOf.ts new file mode 100644 index 00000000000..bef88d201d4 --- /dev/null +++ b/tests/cases/fourslash/renameDestructuringAssignmentNestedInForOf.ts @@ -0,0 +1,22 @@ +/// + +////interface MultiRobot { +//// name: string; +//// skills: { +//// /*1*/[|primary|]: string; +//// secondary: string; +//// }; +////} +////let multiRobots: MultiRobot[]; +////for ({ skills: { /*2*/[|primary|]: primaryA, secondary: secondaryA } } of multiRobots) { +//// console.log(primaryA); +////} +////for ({ skills: { [|primary|], secondary } } of multiRobots) { +//// console.log(primary); +////} + +goTo.marker("1"); +verify.renameLocations(/*findInStrings*/ false, /*findInComments*/ false); + +goTo.marker("2"); +verify.renameLocations(/*findInStrings*/ false, /*findInComments*/ false); diff --git a/tests/cases/fourslash/renameDestructuringAssignmentNestedInForOf2.ts b/tests/cases/fourslash/renameDestructuringAssignmentNestedInForOf2.ts new file mode 100644 index 00000000000..b684e6b6a81 --- /dev/null +++ b/tests/cases/fourslash/renameDestructuringAssignmentNestedInForOf2.ts @@ -0,0 +1,23 @@ +/// + +////interface MultiRobot { +//// name: string; +//// skills: { +//// primary: string; +//// secondary: string; +//// }; +////} +////let multiRobots: MultiRobot[], [|primary|]: string; +////for ({ skills: { primary: primaryA, secondary: secondaryA } } of multiRobots) { +//// console.log(primaryA); +////} +////for ({ skills: { [|primary|], secondary } } of multiRobots) { +//// console.log([|primary|]); +////} + + +let ranges = test.ranges() +for (let range of ranges) { + goTo.position(range.start); + verify.renameLocations(/*findInStrings*/ false, /*findInComments*/ false); +} diff --git a/tests/cases/fourslash/renameDestructuringClassProperty.ts b/tests/cases/fourslash/renameDestructuringClassProperty.ts new file mode 100644 index 00000000000..acc58f999c4 --- /dev/null +++ b/tests/cases/fourslash/renameDestructuringClassProperty.ts @@ -0,0 +1,23 @@ +/// + +////class A { +//// [|foo|]: string; +////} +////class B { +//// syntax1(a: A): void { +//// let { [|foo|] } = a; +//// } +//// syntax2(a: A): void { +//// let { [|foo|]: foo } = a; +//// } +//// syntax11(a: A): void { +//// let { [|foo|] } = a; +//// [|foo|] = "newString"; +//// } +////} + +let ranges = test.ranges() +for (let range of ranges) { + goTo.position(range.start); + verify.renameLocations(/*findInStrings*/ false, /*findInComments*/ false); +} diff --git a/tests/cases/fourslash/renameDestructuringDeclarationInFor.ts b/tests/cases/fourslash/renameDestructuringDeclarationInFor.ts new file mode 100644 index 00000000000..0edf9085092 --- /dev/null +++ b/tests/cases/fourslash/renameDestructuringDeclarationInFor.ts @@ -0,0 +1,20 @@ +/// + +////interface I { +//// [|property1|]: number; +//// property2: string; +////} +////var elems: I[]; +//// +////var p2: number, property1: number; +////for (let { [|property1|]: p2 } = elems[0]; p2 < 100; p2++) { +////} +////for (let { [|property1|] } = elems[0]; p2 < 100; p2++) { +//// [|property1|] = p2; +////} + +let ranges = test.ranges() +for (let range of ranges) { + goTo.position(range.start); + verify.renameLocations(/*findInStrings*/ false, /*findInComments*/ false); +} diff --git a/tests/cases/fourslash/renameDestructuringDeclarationInForOf.ts b/tests/cases/fourslash/renameDestructuringDeclarationInForOf.ts new file mode 100644 index 00000000000..1c2b04b7ab5 --- /dev/null +++ b/tests/cases/fourslash/renameDestructuringDeclarationInForOf.ts @@ -0,0 +1,19 @@ +/// + +////interface I { +//// [|property1|]: number; +//// property2: string; +////} +////var elems: I[]; +//// +////for (let { [|property1|] } of elems) { +//// [|property1|]++; +////} +////for (let { [|property1|]: p2 } of elems) { +////} + +let ranges = test.ranges() +for (let range of ranges) { + goTo.position(range.start); + verify.renameLocations(/*findInStrings*/ false, /*findInComments*/ false); +} diff --git a/tests/cases/fourslash/renameDestructuringFunctionParameter.ts b/tests/cases/fourslash/renameDestructuringFunctionParameter.ts new file mode 100644 index 00000000000..d1df0f58275 --- /dev/null +++ b/tests/cases/fourslash/renameDestructuringFunctionParameter.ts @@ -0,0 +1,10 @@ +/// + +////function f({[|a|]}: {[|a|]}) { +//// f({[|a|]}); +////} +let ranges = test.ranges(); +for (let range of ranges) { + goTo.position(range.start); + verify.renameLocations(/*findInStrings*/ false, /*findInComments*/ false); +} diff --git a/tests/cases/fourslash/renameDestructuringNestedBindingElement.ts b/tests/cases/fourslash/renameDestructuringNestedBindingElement.ts new file mode 100644 index 00000000000..1c4254b14ae --- /dev/null +++ b/tests/cases/fourslash/renameDestructuringNestedBindingElement.ts @@ -0,0 +1,22 @@ +/// + +////interface MultiRobot { +//// name: string; +//// skills: { +//// [|primary|]: string; +//// secondary: string; +//// }; +////} +////let multiRobots: MultiRobot[]; +////for (let { skills: {[|primary|]: primaryA, secondary: secondaryA } } of multiRobots) { +//// console.log(primaryA); +////} +////for (let { skills: {[|primary|], secondary } } of multiRobots) { +//// console.log([|primary|]); +////} + +let ranges = test.ranges() +for (let range of ranges) { + goTo.position(range.start); + verify.renameLocations(/*findInStrings*/ false, /*findInComments*/ false); +} diff --git a/tests/cases/fourslash/renameImportAndExportInDiffFiles.ts b/tests/cases/fourslash/renameImportAndExportInDiffFiles.ts new file mode 100644 index 00000000000..7b098721196 --- /dev/null +++ b/tests/cases/fourslash/renameImportAndExportInDiffFiles.ts @@ -0,0 +1,18 @@ +/// + +// @Filename: a.ts +////export var /*1*/a; + +// @Filename: b.ts +////import { /*2*/a } from './a'; +////export { /*3*/a }; + +goTo.file("a.ts"); +goTo.marker("1"); + +goTo.file("b.ts"); +goTo.marker("2"); +verify.referencesCountIs(3); + +goTo.marker("3"); +verify.referencesCountIs(3); \ No newline at end of file diff --git a/tests/cases/fourslash/server/jsdocParamTagSpecialKeywords.ts b/tests/cases/fourslash/server/jsdocParamTagSpecialKeywords.ts new file mode 100644 index 00000000000..be7ca5f0dff --- /dev/null +++ b/tests/cases/fourslash/server/jsdocParamTagSpecialKeywords.ts @@ -0,0 +1,14 @@ +/// + +// @allowNonTsExtensions: true +// @Filename: test.js +//// /** +//// * @param {string} type +//// */ +//// function test(type) { +//// type./**/ +//// } + + +goTo.marker(); +verify.completionListContains("charAt"); \ No newline at end of file diff --git a/tests/cases/fourslash/server/openFileWithSyntaxKind.ts b/tests/cases/fourslash/server/openFileWithSyntaxKind.ts new file mode 100644 index 00000000000..dcb1e54999e --- /dev/null +++ b/tests/cases/fourslash/server/openFileWithSyntaxKind.ts @@ -0,0 +1,19 @@ +/// + +// Because the fourslash runner automatically opens the first file with the default setting, +// to test the openFile function, the targeted file cannot be the first one. + +// @Filename: dumbFile.ts +//// var x; + +// @allowJs: true +// @Filename: test.ts +//// /** +//// * @type {number} +//// */ +//// var t; +//// t. + +goTo.file("test.ts", /*content*/ undefined, "JS"); +goTo.eof(); +verify.completionListContains("toExponential"); diff --git a/tests/cases/fourslash/server/referencesInConfiguredProject.ts b/tests/cases/fourslash/server/referencesInConfiguredProject.ts new file mode 100644 index 00000000000..9a0d7095a93 --- /dev/null +++ b/tests/cases/fourslash/server/referencesInConfiguredProject.ts @@ -0,0 +1,20 @@ +/// + +// Global class reference. + +// @Filename: referencesForGlobals_1.ts +////class /*2*/globalClass { +//// public f() { } +////} + +// @Filename: referencesForGlobals_2.ts +////var c = /*1*/globalClass(); + +// @Filename: tsconfig.json +////{ "files": ["referencesForGlobals_1.ts", "referencesForGlobals_2.ts"] } + +goTo.marker("1"); +verify.referencesCountIs(2); + +goTo.marker("2"); +verify.referencesCountIs(2); \ No newline at end of file diff --git a/tests/cases/fourslash/server/renameInConfiguredProject.ts b/tests/cases/fourslash/server/renameInConfiguredProject.ts new file mode 100644 index 00000000000..ecff87493a8 --- /dev/null +++ b/tests/cases/fourslash/server/renameInConfiguredProject.ts @@ -0,0 +1,13 @@ +/// + +// @Filename: referencesForGlobals_1.ts +////var [|globalName|] = 0; + +// @Filename: referencesForGlobals_2.ts +////var y = /*1*/[|globalName|]; + +// @Filename: tsconfig.json +////{ "files": ["referencesForGlobals_1.ts", "referencesForGlobals_2.ts"] } + +goTo.marker("1"); +verify.renameLocations(/*findInStrings:*/ true, /*findInComments:*/ true); diff --git a/tests/cases/fourslash/shims-pp/getCompletionsAtPosition.ts b/tests/cases/fourslash/shims-pp/getCompletionsAtPosition.ts index 714d3390e76..f81572ccebf 100644 --- a/tests/cases/fourslash/shims-pp/getCompletionsAtPosition.ts +++ b/tests/cases/fourslash/shims-pp/getCompletionsAtPosition.ts @@ -3,10 +3,10 @@ ////function foo(strOrNum: string | number) { //// /*1*/ //// if (typeof strOrNum === "number") { -//// /*2*/ +//// strOrNum/*2*/; //// } //// else { -//// /*3*/ +//// strOrNum/*3*/; //// } ////} diff --git a/tests/cases/fourslash/shims-pp/goToDefinitionTypeReferenceDirective.ts b/tests/cases/fourslash/shims-pp/goToDefinitionTypeReferenceDirective.ts new file mode 100644 index 00000000000..3aaa3ab980f --- /dev/null +++ b/tests/cases/fourslash/shims-pp/goToDefinitionTypeReferenceDirective.ts @@ -0,0 +1,13 @@ +/// + +// @typesRoot: src +// @Filename: src/types/lib/index.d.ts +/////*0*/declare let $: {x: number}; + +// @Filename: src/app.ts +//// /// +//// $.x; + +goTo.marker("1"); +goTo.definition(); +verify.caretAtMarker("0"); \ No newline at end of file diff --git a/tests/cases/fourslash/shims/getCompletionsAtPosition.ts b/tests/cases/fourslash/shims/getCompletionsAtPosition.ts index 714d3390e76..f81572ccebf 100644 --- a/tests/cases/fourslash/shims/getCompletionsAtPosition.ts +++ b/tests/cases/fourslash/shims/getCompletionsAtPosition.ts @@ -3,10 +3,10 @@ ////function foo(strOrNum: string | number) { //// /*1*/ //// if (typeof strOrNum === "number") { -//// /*2*/ +//// strOrNum/*2*/; //// } //// else { -//// /*3*/ +//// strOrNum/*3*/; //// } ////} diff --git a/tests/cases/fourslash/shims/goToDefinitionTypeReferenceDirective.ts b/tests/cases/fourslash/shims/goToDefinitionTypeReferenceDirective.ts new file mode 100644 index 00000000000..3aaa3ab980f --- /dev/null +++ b/tests/cases/fourslash/shims/goToDefinitionTypeReferenceDirective.ts @@ -0,0 +1,13 @@ +/// + +// @typesRoot: src +// @Filename: src/types/lib/index.d.ts +/////*0*/declare let $: {x: number}; + +// @Filename: src/app.ts +//// /// +//// $.x; + +goTo.marker("1"); +goTo.definition(); +verify.caretAtMarker("0"); \ No newline at end of file diff --git a/tests/cases/fourslash/signatureHelpThis.ts b/tests/cases/fourslash/signatureHelpThis.ts new file mode 100644 index 00000000000..2ac19c823c0 --- /dev/null +++ b/tests/cases/fourslash/signatureHelpThis.ts @@ -0,0 +1,43 @@ +/// +////class Foo { +//// public implicitAny(n: number) { +//// } +//// public explicitThis(this: this, n: number) { +//// console.log(this); +//// } +//// public explicitClass(this: Foo, n: number) { +//// console.log(this); +//// } +////} +//// +////function implicitAny(x: number): void { +//// return this; +////} +////function explicitVoid(this: void, x: number): void { +//// return this; +////} +////function explicitLiteral(this: { n: number }, x: number): void { +//// console.log(this); +////} +////let foo = new Foo(); +////foo.implicitAny(/*1*/); +////foo.explicitThis(/*2*/); +////foo.explicitClass(/*3*/); +////implicitAny(/*4*/12); +////explicitVoid(/*5*/13); +////let o = { n: 14, m: explicitLiteral }; +////o.m(/*6*/); + + +goTo.marker('1'); +verify.currentParameterHelpArgumentNameIs("n"); +goTo.marker('2'); +verify.currentParameterHelpArgumentNameIs("n"); +goTo.marker('3'); +verify.currentParameterHelpArgumentNameIs("n"); +goTo.marker('4'); +verify.currentParameterHelpArgumentNameIs("x"); +goTo.marker('5'); +verify.currentParameterHelpArgumentNameIs("x"); +goTo.marker('6'); +verify.currentParameterHelpArgumentNameIs("x"); diff --git a/tests/cases/fourslash/stringBraceCompletionPosition.ts b/tests/cases/fourslash/stringBraceCompletionPosition.ts new file mode 100644 index 00000000000..09a9a86b0f1 --- /dev/null +++ b/tests/cases/fourslash/stringBraceCompletionPosition.ts @@ -0,0 +1,16 @@ +/// + +//// var x = "/*1*/"; +//// var x = '/*2*/'; +//// var x = "hello \ +//// /*3*/"; + +goTo.marker('1'); +verify.not.isValidBraceCompletionAtPostion('('); + +goTo.marker('2'); +verify.not.isValidBraceCompletionAtPostion('('); + +goTo.marker('3'); +verify.not.isValidBraceCompletionAtPostion('('); + diff --git a/tests/cases/fourslash/stringTemplateBraceCompletionPosition.ts b/tests/cases/fourslash/stringTemplateBraceCompletionPosition.ts new file mode 100644 index 00000000000..33bcd4d0625 --- /dev/null +++ b/tests/cases/fourslash/stringTemplateBraceCompletionPosition.ts @@ -0,0 +1,16 @@ +/// + +//// var x = `/*1*/`; +//// var y = `hello /*2*/world, ${100}how /*3*/are you{ 200 } to/*4*/day!?` + +goTo.marker('1'); +verify.not.isValidBraceCompletionAtPostion('('); + +goTo.marker('2'); +verify.not.isValidBraceCompletionAtPostion('('); + +goTo.marker('3'); +verify.not.isValidBraceCompletionAtPostion('('); + +goTo.marker('4'); +verify.not.isValidBraceCompletionAtPostion('('); diff --git a/tests/cases/fourslash/thisBindingInLambda.ts b/tests/cases/fourslash/thisBindingInLambda.ts index f6dfdbdec08..d9c43796bd8 100644 --- a/tests/cases/fourslash/thisBindingInLambda.ts +++ b/tests/cases/fourslash/thisBindingInLambda.ts @@ -9,4 +9,4 @@ ////} goTo.marker(); -verify.quickInfoIs('class Greeter'); +verify.quickInfoIs('this: this'); diff --git a/tests/cases/fourslash/thisPredicateFunctionCompletions03.ts b/tests/cases/fourslash/thisPredicateFunctionCompletions03.ts index 3c93a859bf3..4985a1ca561 100644 --- a/tests/cases/fourslash/thisPredicateFunctionCompletions03.ts +++ b/tests/cases/fourslash/thisPredicateFunctionCompletions03.ts @@ -38,20 +38,6 @@ //// b./*8*/; //// } //// -//// if (((a.isLeader)())) { -//// a./*9*/; -//// } -//// else if (((a).isFollower())) { -//// a./*10*/; -//// } -//// -//// if (((a["isLeader"])())) { -//// a./*11*/; -//// } -//// else if (((a)["isFollower"]())) { -//// a./*12*/; -//// } -//// //// let leader/*13*/Status = a.isLeader(); //// function isLeaderGuard(g: RoyalGuard) { //// return g.isLeader(); @@ -68,13 +54,3 @@ goTo.marker("6"); verify.completionListContains("lead"); goTo.marker("8"); verify.completionListContains("follow"); - -goTo.marker("9"); -verify.completionListContains("lead"); -goTo.marker("10"); -verify.completionListContains("follow"); - -goTo.marker("11"); -verify.completionListContains("lead"); -goTo.marker("12"); -verify.completionListContains("follow"); \ No newline at end of file diff --git a/tests/cases/fourslash/tsxCompletion11.ts b/tests/cases/fourslash/tsxCompletion11.ts new file mode 100644 index 00000000000..5d9c869a9b6 --- /dev/null +++ b/tests/cases/fourslash/tsxCompletion11.ts @@ -0,0 +1,14 @@ +/// + +//@module: commonjs +//@jsx: preserve + +//@Filename: exporter.tsx +//// export class Thing { } + +//@Filename: file.tsx +//// import {Thing} from './exporter'; +//// var x1 =
+ +//// function parseInt(/*1*/){} +//// class aa/*2*/{ +//// public b/*3*/(){} +//// } +//// interface I/*4*/{} +//// var x = /*5*/{ a:true } + +goTo.marker('1'); +verify.isValidBraceCompletionAtPostion('('); + +goTo.marker('2'); +verify.isValidBraceCompletionAtPostion('('); + +goTo.marker('3'); +verify.isValidBraceCompletionAtPostion('('); + +goTo.marker('4'); +verify.isValidBraceCompletionAtPostion('('); + +goTo.marker('5'); +verify.isValidBraceCompletionAtPostion('('); \ No newline at end of file diff --git a/tests/cases/unittests/cachingInServerLSHost.ts b/tests/cases/unittests/cachingInServerLSHost.ts index 2b6e24e5770..58bcd76e246 100644 --- a/tests/cases/unittests/cachingInServerLSHost.ts +++ b/tests/cases/unittests/cachingInServerLSHost.ts @@ -129,7 +129,7 @@ module ts { } fileExistsIsCalled = true; assert.isTrue(fileName.indexOf('/f2.') !== -1); - return originalFileExists(fileName); + return originalFileExists.call(serverHost, fileName); }; let newContent = `import {x} from "f2"`; rootScriptInfo.editContent(0, rootScriptInfo.content.length, newContent); @@ -153,7 +153,7 @@ module ts { } fileExistsCalled = true; assert.isTrue(fileName.indexOf('/f1.') !== -1); - return originalFileExists(fileName); + return originalFileExists.call(serverHost, fileName); }; let newContent = `import {x} from "f1"`; @@ -198,7 +198,7 @@ module ts { fileExistsCalledForBar = fileName.indexOf("/bar.") !== -1; } - return originalFileExists(fileName); + return originalFileExists.call(serverHost, fileName); }; let { project, rootScriptInfo } = createProject(root.name, serverHost); diff --git a/tests/cases/unittests/commandLineParsing.ts b/tests/cases/unittests/commandLineParsing.ts new file mode 100644 index 00000000000..e220c243558 --- /dev/null +++ b/tests/cases/unittests/commandLineParsing.ts @@ -0,0 +1,316 @@ +/// +/// + +namespace ts { + describe('parseCommandLine', () => { + + function assertParseResult(commandLine: string[], expectedParsedCommandLine: ts.ParsedCommandLine) { + const parsed = ts.parseCommandLine(commandLine); + const parsedCompilerOptions = JSON.stringify(parsed.options); + const expectedCompilerOptions = JSON.stringify(expectedParsedCommandLine.options); + assert.equal(parsedCompilerOptions, expectedCompilerOptions); + + const parsedErrors = parsed.errors; + const expectedErrors = expectedParsedCommandLine.errors; + assert.isTrue(parsedErrors.length === expectedErrors.length, `Expected error: ${JSON.stringify(expectedErrors)}. Actual error: ${JSON.stringify(parsedErrors)}.`); + for (let i = 0; i < parsedErrors.length; ++i) { + const parsedError = parsedErrors[i]; + const expectedError = expectedErrors[i]; + assert.equal(parsedError.code, expectedError.code); + assert.equal(parsedError.category, expectedError.category); + assert.equal(parsedError.messageText, expectedError.messageText); + } + + const parsedFileNames = parsed.fileNames; + const expectedFileNames = expectedParsedCommandLine.fileNames; + assert.isTrue(parsedFileNames.length === expectedFileNames.length, `Expected fileNames: [${JSON.stringify(expectedFileNames)}]. Actual fileNames: [${JSON.stringify(parsedFileNames)}].`); + for (let i = 0; i < parsedFileNames.length; ++i) { + const parsedFileName = parsedFileNames[i]; + const expectedFileName = expectedFileNames[i]; + assert.equal(parsedFileName, expectedFileName); + } + } + + it("Parse single option of library flag ", () => { + // --lib es6 0.ts + assertParseResult(["--lib", "es6", "0.ts"], + { + errors: [], + fileNames: ["0.ts"], + options: { + lib: ["lib.es2015.d.ts"] + } + }); + }); + + it("Parse multiple options of library flags ", () => { + // --lib es5,es2015.symbol.wellknown 0.ts + assertParseResult(["--lib", "es5,es2015.symbol.wellknown", "0.ts"], + { + errors: [], + fileNames: ["0.ts"], + options: { + lib: ["lib.es5.d.ts", "lib.es2015.symbol.wellknown.d.ts"] + } + }); + }); + + it("Parse invalid option of library flags ", () => { + // --lib es5,invalidOption 0.ts + assertParseResult(["--lib", "es5,invalidOption", "0.ts"], + { + errors: [{ + messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'dom', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include'", + category: ts.Diagnostics.Argument_for_0_option_must_be_Colon_1.category, + code: ts.Diagnostics.Argument_for_0_option_must_be_Colon_1.code, + + file: undefined, + start: undefined, + length: undefined, + }], + fileNames: ["0.ts"], + options: { + lib: ["lib.es5.d.ts"] + } + }); + }); + it("Parse empty options of --jsx ", () => { + // 0.ts --jsx + assertParseResult(["0.ts", "--jsx"], + { + errors: [{ + messageText: "Compiler option 'jsx' expects an argument.", + category: ts.Diagnostics.Compiler_option_0_expects_an_argument.category, + code: ts.Diagnostics.Compiler_option_0_expects_an_argument.code, + + file: undefined, + start: undefined, + length: undefined, + }, { + messageText: "Argument for '--jsx' option must be: 'preserve', 'react'", + category: ts.Diagnostics.Argument_for_0_option_must_be_Colon_1.category, + code: ts.Diagnostics.Argument_for_0_option_must_be_Colon_1.code, + + file: undefined, + start: undefined, + length: undefined, + }], + fileNames: ["0.ts"], + options: {} + }); + }); + + it("Parse empty options of --module ", () => { + // 0.ts -- + assertParseResult(["0.ts", "--module"], + { + errors: [{ + messageText: "Compiler option 'module' expects an argument.", + category: ts.Diagnostics.Compiler_option_0_expects_an_argument.category, + code: ts.Diagnostics.Compiler_option_0_expects_an_argument.code, + + file: undefined, + start: undefined, + length: undefined, + }, { + messageText: "Argument for '--module' option must be: 'none', 'commonjs', 'amd', 'system', 'umd', 'es6', 'es2015'", + category: ts.Diagnostics.Argument_for_0_option_must_be_Colon_1.category, + code: ts.Diagnostics.Argument_for_0_option_must_be_Colon_1.code, + + file: undefined, + start: undefined, + length: undefined, + }], + fileNames: ["0.ts"], + options: {} + }); + }); + + it("Parse empty options of --newLine ", () => { + // 0.ts --newLine + assertParseResult(["0.ts", "--newLine"], + { + errors: [{ + messageText: "Compiler option 'newLine' expects an argument.", + category: ts.Diagnostics.Compiler_option_0_expects_an_argument.category, + code: ts.Diagnostics.Compiler_option_0_expects_an_argument.code, + + file: undefined, + start: undefined, + length: undefined, + }, { + messageText: "Argument for '--newLine' option must be: 'crlf', 'lf'", + category: ts.Diagnostics.Argument_for_0_option_must_be_Colon_1.category, + code: ts.Diagnostics.Argument_for_0_option_must_be_Colon_1.code, + + file: undefined, + start: undefined, + length: undefined, + }], + fileNames: ["0.ts"], + options: {} + }); + }); + + it("Parse empty options of --target ", () => { + // 0.ts --target + assertParseResult(["0.ts", "--target"], + { + errors: [{ + messageText: "Compiler option 'target' expects an argument.", + category: ts.Diagnostics.Compiler_option_0_expects_an_argument.category, + code: ts.Diagnostics.Compiler_option_0_expects_an_argument.code, + + file: undefined, + start: undefined, + length: undefined, + }, { + messageText: "Argument for '--target' option must be: 'es3', 'es5', 'es6', 'es2015'", + category: ts.Diagnostics.Argument_for_0_option_must_be_Colon_1.category, + code: ts.Diagnostics.Argument_for_0_option_must_be_Colon_1.code, + + file: undefined, + start: undefined, + length: undefined, + }], + fileNames: ["0.ts"], + options: {} + }); + }); + + it("Parse empty options of --moduleResolution ", () => { + // 0.ts --moduleResolution + assertParseResult(["0.ts", "--moduleResolution"], + { + errors: [{ + messageText: "Compiler option 'moduleResolution' expects an argument.", + category: ts.Diagnostics.Compiler_option_0_expects_an_argument.category, + code: ts.Diagnostics.Compiler_option_0_expects_an_argument.code, + + file: undefined, + start: undefined, + length: undefined, + }, { + messageText: "Argument for '--moduleResolution' option must be: 'node', 'classic'", + category: ts.Diagnostics.Argument_for_0_option_must_be_Colon_1.category, + code: ts.Diagnostics.Argument_for_0_option_must_be_Colon_1.code, + + file: undefined, + start: undefined, + length: undefined, + }], + fileNames: ["0.ts"], + options: {} + }); + }); + + it("Parse empty options of --lib ", () => { + // 0.ts --lib + assertParseResult(["0.ts", "--lib"], + { + errors: [{ + messageText: "Compiler option 'lib' expects an argument.", + category: ts.Diagnostics.Compiler_option_0_expects_an_argument.category, + code: ts.Diagnostics.Compiler_option_0_expects_an_argument.code, + + file: undefined, + start: undefined, + length: undefined, + }, { + messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'dom', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include'", + category: ts.Diagnostics.Argument_for_0_option_must_be_Colon_1.category, + code: ts.Diagnostics.Argument_for_0_option_must_be_Colon_1.code, + + file: undefined, + start: undefined, + length: undefined, + }], + fileNames: ["0.ts"], + options: { + lib: [] + } + }); + }); + + it("Parse --lib option with extra comma ", () => { + // --lib es5, es7 0.ts + assertParseResult(["--lib", "es5,", "es7", "0.ts"], + { + errors: [{ + messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'dom', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include'", + category: ts.Diagnostics.Argument_for_0_option_must_be_Colon_1.category, + code: ts.Diagnostics.Argument_for_0_option_must_be_Colon_1.code, + + file: undefined, + start: undefined, + length: undefined, + }], + fileNames: ["es7", "0.ts"], + options: { + lib: ["lib.es5.d.ts"] + } + }); + }); + + it("Parse --lib option with trailing white-space ", () => { + // --lib es5, es7 0.ts + assertParseResult(["--lib", "es5, ", "es7", "0.ts"], + { + errors: [{ + messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'dom', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include'", + category: ts.Diagnostics.Argument_for_0_option_must_be_Colon_1.category, + code: ts.Diagnostics.Argument_for_0_option_must_be_Colon_1.code, + + file: undefined, + start: undefined, + length: undefined, + }], + fileNames: ["es7", "0.ts"], + options: { + lib: ["lib.es5.d.ts"] + } + }); + }); + + it("Parse multiple compiler flags with input files at the end", () => { + // --lib es5,es2015.symbol.wellknown --target es5 0.ts + assertParseResult(["--lib", "es5,es2015.symbol.wellknown", "--target", "es5", "0.ts"], + { + errors: [], + fileNames: ["0.ts"], + options: { + lib: ["lib.es5.d.ts", "lib.es2015.symbol.wellknown.d.ts"], + target: ts.ScriptTarget.ES5, + } + }); + }); + + it("Parse multiple compiler flags with input files in the middle", () => { + // --module commonjs --target es5 0.ts --lib es5,es2015.symbol.wellknown + assertParseResult(["--module", "commonjs", "--target", "es5", "0.ts", "--lib", "es5,es2015.symbol.wellknown"], + { + errors: [], + fileNames: ["0.ts"], + options: { + module: ts.ModuleKind.CommonJS, + target: ts.ScriptTarget.ES5, + lib: ["lib.es5.d.ts", "lib.es2015.symbol.wellknown.d.ts"], + } + }); + }); + + it("Parse multiple library compiler flags ", () => { + // --module commonjs --target es5 --lib es5 0.ts --library es2015.array,es2015.symbol.wellknown + assertParseResult(["--module", "commonjs", "--target", "es5", "--lib", "es5", "0.ts", "--lib", "es2015.core, es2015.symbol.wellknown "], + { + errors: [], + fileNames: ["0.ts"], + options: { + module: ts.ModuleKind.CommonJS, + target: ts.ScriptTarget.ES5, + lib: ["lib.es2015.core.d.ts", "lib.es2015.symbol.wellknown.d.ts"], + } + }); + }); + }); +} diff --git a/tests/cases/unittests/convertCompilerOptionsFromJson.ts b/tests/cases/unittests/convertCompilerOptionsFromJson.ts new file mode 100644 index 00000000000..ed1d96a0fb7 --- /dev/null +++ b/tests/cases/unittests/convertCompilerOptionsFromJson.ts @@ -0,0 +1,479 @@ +/// +/// + +namespace ts { + describe('convertCompilerOptionsFromJson', () => { + function assertCompilerOptions(json: any, configFileName: string, expectedResult: { compilerOptions: CompilerOptions, errors: Diagnostic[] }) { + const { options: actualCompilerOptions, errors: actualErrors} = convertCompilerOptionsFromJson(json["compilerOptions"], "/apath/", configFileName); + + const parsedCompilerOptions = JSON.stringify(actualCompilerOptions); + const expectedCompilerOptions = JSON.stringify(expectedResult.compilerOptions); + assert.equal(parsedCompilerOptions, expectedCompilerOptions); + + const expectedErrors = expectedResult.errors; + assert.isTrue(expectedResult.errors.length === actualErrors.length, `Expected error: ${JSON.stringify(expectedResult.errors)}. Actual error: ${JSON.stringify(actualErrors)}.`); + for (let i = 0; i < actualErrors.length; ++i) { + const actualError = actualErrors[i]; + const expectedError = expectedErrors[i]; + assert.equal(actualError.code, expectedError.code); + assert.equal(actualError.category, expectedError.category); + assert.equal(actualError.messageText, expectedError.messageText); + } + } + + // tsconfig.json tests + it("Convert correctly format tsconfig.json to compiler-options ", () => { + assertCompilerOptions( + { + "compilerOptions": { + "module": "commonjs", + "target": "es5", + "noImplicitAny": false, + "sourceMap": false, + "lib": ["es5", "es2015.core", "es2015.symbol"] + } + }, "tsconfig.json", + { + compilerOptions: { + module: ModuleKind.CommonJS, + target: ScriptTarget.ES5, + noImplicitAny: false, + sourceMap: false, + lib: ["lib.es5.d.ts", "lib.es2015.core.d.ts", "lib.es2015.symbol.d.ts"] + }, + errors: [] + } + ); + }); + + it("Convert correctly format tsconfig.json with allowJs is false to compiler-options ", () => { + assertCompilerOptions( + { + "compilerOptions": { + "module": "commonjs", + "target": "es5", + "noImplicitAny": false, + "sourceMap": false, + "allowJs": false, + "lib": ["es5", "es2015.core", "es2015.symbol"] + } + }, "tsconfig.json", + { + compilerOptions: { + module: ModuleKind.CommonJS, + target: ScriptTarget.ES5, + noImplicitAny: false, + sourceMap: false, + allowJs: false, + lib: ["lib.es5.d.ts", "lib.es2015.core.d.ts", "lib.es2015.symbol.d.ts"] + }, + errors: [] + } + ); + }); + + it("Convert incorrect option of jsx to compiler-options ", () => { + assertCompilerOptions( + { + "compilerOptions": { + "module": "commonjs", + "target": "es5", + "noImplicitAny": false, + "sourceMap": false, + "jsx": "" + } + }, "tsconfig.json", + { + compilerOptions: { + module: ModuleKind.CommonJS, + target: ScriptTarget.ES5, + noImplicitAny: false, + sourceMap: false, + }, + errors: [{ + file: undefined, + start: 0, + length: 0, + messageText: "Argument for '--jsx' option must be: 'preserve', 'react'", + code: Diagnostics.Argument_for_0_option_must_be_Colon_1.code, + category: Diagnostics.Argument_for_0_option_must_be_Colon_1.category + }] + } + ); + }); + + it("Convert incorrect option of module to compiler-options ", () => { + assertCompilerOptions( + { + "compilerOptions": { + "module": "", + "target": "es5", + "noImplicitAny": false, + "sourceMap": false, + } + }, "tsconfig.json", + { + compilerOptions: { + target: ScriptTarget.ES5, + noImplicitAny: false, + sourceMap: false, + }, + errors: [{ + file: undefined, + start: 0, + length: 0, + messageText: "Argument for '--module' option must be: 'none', 'commonjs', 'amd', 'system', 'umd', 'es6', 'es2015'", + code: Diagnostics.Argument_for_0_option_must_be_Colon_1.code, + category: Diagnostics.Argument_for_0_option_must_be_Colon_1.category + }] + } + ); + }); + + it("Convert incorrect option of newLine to compiler-options ", () => { + assertCompilerOptions( + { + "compilerOptions": { + "newLine": "", + "target": "es5", + "noImplicitAny": false, + "sourceMap": false, + } + }, "tsconfig.json", + { + compilerOptions: { + target: ScriptTarget.ES5, + noImplicitAny: false, + sourceMap: false, + }, + errors: [{ + file: undefined, + start: 0, + length: 0, + messageText: "Argument for '--newLine' option must be: 'crlf', 'lf'", + code: Diagnostics.Argument_for_0_option_must_be_Colon_1.code, + category: Diagnostics.Argument_for_0_option_must_be_Colon_1.category + }] + } + ); + }); + + it("Convert incorrect option of target to compiler-options ", () => { + assertCompilerOptions( + { + "compilerOptions": { + "target": "", + "noImplicitAny": false, + "sourceMap": false, + } + }, "tsconfig.json", + { + compilerOptions: { + noImplicitAny: false, + sourceMap: false, + }, + errors: [{ + file: undefined, + start: 0, + length: 0, + messageText: "Argument for '--target' option must be: 'es3', 'es5', 'es6', 'es2015'", + code: Diagnostics.Argument_for_0_option_must_be_Colon_1.code, + category: Diagnostics.Argument_for_0_option_must_be_Colon_1.category + }] + } + ); + }); + + it("Convert incorrect option of module-resolution to compiler-options ", () => { + assertCompilerOptions( + { + "compilerOptions": { + "moduleResolution": "", + "noImplicitAny": false, + "sourceMap": false, + } + }, "tsconfig.json", + { + compilerOptions: { + noImplicitAny: false, + sourceMap: false, + }, + errors: [{ + file: undefined, + start: 0, + length: 0, + messageText: "Argument for '--moduleResolution' option must be: 'node', 'classic'", + code: Diagnostics.Argument_for_0_option_must_be_Colon_1.code, + category: Diagnostics.Argument_for_0_option_must_be_Colon_1.category + }] + } + ); + }); + + it("Convert incorrect option of libs to compiler-options ", () => { + assertCompilerOptions( + { + "compilerOptions": { + "module": "commonjs", + "target": "es5", + "noImplicitAny": false, + "sourceMap": false, + "lib": ["es5", "es2015.core", "incorrectLib"] + } + }, "tsconfig.json", + { + compilerOptions: { + module: ModuleKind.CommonJS, + target: ScriptTarget.ES5, + noImplicitAny: false, + sourceMap: false, + lib: ["lib.es5.d.ts", "lib.es2015.core.d.ts"] + }, + errors: [{ + file: undefined, + start: 0, + length: 0, + messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'dom', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include'", + code: Diagnostics.Argument_for_0_option_must_be_Colon_1.code, + category: Diagnostics.Argument_for_0_option_must_be_Colon_1.category + }] + } + ); + }); + + it("Convert empty string option of libs to compiler-options ", () => { + assertCompilerOptions( + { + "compilerOptions": { + "module": "commonjs", + "target": "es5", + "noImplicitAny": false, + "sourceMap": false, + "lib": ["es5", ""] + } + }, "tsconfig.json", + { + compilerOptions: { + module: ModuleKind.CommonJS, + target: ScriptTarget.ES5, + noImplicitAny: false, + sourceMap: false, + lib: ["lib.es5.d.ts"] + }, + errors: [{ + file: undefined, + start: 0, + length: 0, + messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'dom', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include'", + code: Diagnostics.Argument_for_0_option_must_be_Colon_1.code, + category: Diagnostics.Argument_for_0_option_must_be_Colon_1.category + }] + } + ); + }); + + it("Convert empty string option of libs to compiler-options ", () => { + assertCompilerOptions( + { + "compilerOptions": { + "module": "commonjs", + "target": "es5", + "noImplicitAny": false, + "sourceMap": false, + "lib": [""] + } + }, "tsconfig.json", + { + compilerOptions: { + module: ModuleKind.CommonJS, + target: ScriptTarget.ES5, + noImplicitAny: false, + sourceMap: false, + lib: [] + }, + errors: [{ + file: undefined, + start: 0, + length: 0, + messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'dom', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include'", + code: Diagnostics.Argument_for_0_option_must_be_Colon_1.code, + category: Diagnostics.Argument_for_0_option_must_be_Colon_1.category + }] + } + ); + }); + + it("Convert trailing-whitespace string option of libs to compiler-options ", () => { + assertCompilerOptions( + { + "compilerOptions": { + "module": "commonjs", + "target": "es5", + "noImplicitAny": false, + "sourceMap": false, + "lib": [" "] + } + }, "tsconfig.json", + { + compilerOptions: { + module: ModuleKind.CommonJS, + target: ScriptTarget.ES5, + noImplicitAny: false, + sourceMap: false, + lib: [] + }, + errors: [{ + file: undefined, + start: 0, + length: 0, + messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'dom', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include'", + code: Diagnostics.Argument_for_0_option_must_be_Colon_1.code, + category: Diagnostics.Argument_for_0_option_must_be_Colon_1.category + }] + } + ); + }); + + it("Convert empty option of libs to compiler-options ", () => { + assertCompilerOptions( + { + "compilerOptions": { + "module": "commonjs", + "target": "es5", + "noImplicitAny": false, + "sourceMap": false, + "lib": [] + } + }, "tsconfig.json", + { + compilerOptions: { + module: ModuleKind.CommonJS, + target: ScriptTarget.ES5, + noImplicitAny: false, + sourceMap: false, + lib: [] + }, + errors: [] + } + ); + }); + + it("Convert incorrectly format tsconfig.json to compiler-options ", () => { + assertCompilerOptions( + { + "compilerOptions": { + "modu": "commonjs", + } + }, "tsconfig.json", + { + compilerOptions: {}, + errors: [{ + file: undefined, + start: 0, + length: 0, + messageText: "Unknown compiler option 'modu'.", + code: Diagnostics.Unknown_compiler_option_0.code, + category: Diagnostics.Unknown_compiler_option_0.category + }] + } + ); + }); + + it("Convert default tsconfig.json to compiler-options ", () => { + assertCompilerOptions({}, "tsconfig.json", + { + compilerOptions: {} as CompilerOptions, + errors: [] + } + ); + }); + + // jsconfig.json + it("Convert correctly format jsconfig.json to compiler-options ", () => { + assertCompilerOptions( + { + "compilerOptions": { + "module": "commonjs", + "target": "es5", + "noImplicitAny": false, + "sourceMap": false, + "lib": ["es5", "es2015.core", "es2015.symbol"] + } + }, "jsconfig.json", + { + compilerOptions: { + allowJs: true, + module: ModuleKind.CommonJS, + target: ScriptTarget.ES5, + noImplicitAny: false, + sourceMap: false, + lib: ["lib.es5.d.ts", "lib.es2015.core.d.ts", "lib.es2015.symbol.d.ts"] + }, + errors: [] + } + ); + }); + + it("Convert correctly format jsconfig.json with allowJs is false to compiler-options ", () => { + assertCompilerOptions( + { + "compilerOptions": { + "module": "commonjs", + "target": "es5", + "noImplicitAny": false, + "sourceMap": false, + "allowJs": false, + "lib": ["es5", "es2015.core", "es2015.symbol"] + } + }, "jsconfig.json", + { + compilerOptions: { + allowJs: false, + module: ModuleKind.CommonJS, + target: ScriptTarget.ES5, + noImplicitAny: false, + sourceMap: false, + lib: ["lib.es5.d.ts", "lib.es2015.core.d.ts", "lib.es2015.symbol.d.ts"] + }, + errors: [] + } + ); + }); + + it("Convert incorrectly format jsconfig.json to compiler-options ", () => { + assertCompilerOptions( + { + "compilerOptions": { + "modu": "commonjs", + } + }, "jsconfig.json", + { + compilerOptions: + { + allowJs: true + }, + errors: [{ + file: undefined, + start: 0, + length: 0, + messageText: "Unknown compiler option 'modu'.", + code: Diagnostics.Unknown_compiler_option_0.code, + category: Diagnostics.Unknown_compiler_option_0.category + }] + } + ); + }); + + it("Convert default jsconfig.json to compiler-options ", () => { + assertCompilerOptions({}, "jsconfig.json", + { + compilerOptions: + { + allowJs: true + }, + errors: [] + } + ); + }); + }); +} diff --git a/tests/cases/unittests/convertToBase64.ts b/tests/cases/unittests/convertToBase64.ts index 76f56f77477..c73d7531c40 100644 --- a/tests/cases/unittests/convertToBase64.ts +++ b/tests/cases/unittests/convertToBase64.ts @@ -8,26 +8,28 @@ module ts { assert.equal(actual, expected, "Encoded string using convertToBase64 does not match buffer.toString('base64')"); } - it("Converts ASCII charaters correctly", () => { - runTest(" !\"#$ %&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~"); - }); + if (Buffer) { + it("Converts ASCII charaters correctly", () => { + runTest(" !\"#$ %&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~"); + }); - it("Converts escape sequences correctly", () => { - runTest("\t\n\r\\\"\'\u0062"); - }); + it("Converts escape sequences correctly", () => { + runTest("\t\n\r\\\"\'\u0062"); + }); - it("Converts simple unicode characters correctly", () => { - runTest("ΠΣ ٵپ औठ ⺐⺠"); - }); + it("Converts simple unicode characters correctly", () => { + runTest("ΠΣ ٵپ औठ ⺐⺠"); + }); - it("Converts simple code snippet correctly", () => { - runTest(`/// + it("Converts simple code snippet correctly", () => { + runTest(`/// var x: string = "string"; console.log(x);`); - }); + }); - it("Converts simple code snippet with unicode characters correctly", () => { - runTest(`var Π = 3.1415; console.log(Π);`); - }); + it("Converts simple code snippet with unicode characters correctly", () => { + runTest(`var Π = 3.1415; console.log(Π);`); + }); + } }); } diff --git a/tests/cases/unittests/convertTypingOptionsFromJson.ts b/tests/cases/unittests/convertTypingOptionsFromJson.ts new file mode 100644 index 00000000000..3cd15a17c61 --- /dev/null +++ b/tests/cases/unittests/convertTypingOptionsFromJson.ts @@ -0,0 +1,187 @@ +/// +/// + +namespace ts { + describe('convertTypingOptionsFromJson', () => { + function assertTypingOptions(json: any, configFileName: string, expectedResult: { typingOptions: TypingOptions, errors: Diagnostic[] }) { + const { options: actualTypingOptions, errors: actualErrors } = convertTypingOptionsFromJson(json["typingOptions"], "/apath/", configFileName); + const parsedTypingOptions = JSON.stringify(actualTypingOptions); + const expectedTypingOptions = JSON.stringify(expectedResult.typingOptions); + assert.equal(parsedTypingOptions, expectedTypingOptions); + + const expectedErrors = expectedResult.errors; + assert.isTrue(expectedResult.errors.length === actualErrors.length, `Expected error: ${JSON.stringify(expectedResult.errors)}. Actual error: ${JSON.stringify(actualErrors)}.`); + for (let i = 0; i < actualErrors.length; ++i) { + const actualError = actualErrors[i]; + const expectedError = expectedErrors[i]; + assert.equal(actualError.code, expectedError.code, `Expected error-code: ${JSON.stringify(expectedError.code)}. Actual error-code: ${JSON.stringify(actualError.code)}.`); + assert.equal(actualError.category, expectedError.category, `Expected error-category: ${JSON.stringify(expectedError.category)}. Actual error-category: ${JSON.stringify(actualError.category)}.`); + } + } + + // tsconfig.json + it("Convert correctly format tsconfig.json to typing-options ", () => { + assertTypingOptions( + { + "typingOptions": + { + "enableAutoDiscovery": true, + "include": ["0.d.ts", "1.d.ts"], + "exclude": ["0.js", "1.js"] + } + }, + "tsconfig.json", + { + typingOptions: + { + enableAutoDiscovery: true, + include: ["0.d.ts", "1.d.ts"], + exclude: ["0.js", "1.js"] + }, + errors: [] + }); + }); + + it("Convert incorrect format tsconfig.json to typing-options ", () => { + assertTypingOptions( + { + "typingOptions": + { + "enableAutoDiscovy": true, + } + }, "tsconfig.json", + { + typingOptions: + { + enableAutoDiscovery: false, + include: [], + exclude: [] + }, + errors: [ + { + category: Diagnostics.Unknown_typing_option_0.category, + code: Diagnostics.Unknown_typing_option_0.code, + file: undefined, + start: 0, + length: 0, + messageText: undefined + } + ] + }); + }); + + it("Convert default tsconfig.json to typing-options ", () => { + assertTypingOptions({}, "tsconfig.json", + { + typingOptions: + { + enableAutoDiscovery: false, + include: [], + exclude: [] + }, + errors: [] + }); + }); + + it("Convert tsconfig.json with only enableAutoDiscovery property to typing-options ", () => { + assertTypingOptions( + { + "typingOptions": + { + "enableAutoDiscovery": true + } + }, "tsconfig.json", + { + typingOptions: + { + enableAutoDiscovery: true, + include: [], + exclude: [] + }, + errors: [] + }); + }); + + // jsconfig.json + it("Convert jsconfig.json to typing-options ", () => { + assertTypingOptions( + { + "typingOptions": + { + "enableAutoDiscovery": false, + "include": ["0.d.ts"], + "exclude": ["0.js"] + } + }, "jsconfig.json", + { + typingOptions: + { + enableAutoDiscovery: false, + include: ["0.d.ts"], + exclude: ["0.js"] + }, + errors: [] + }); + }); + + it("Convert default jsconfig.json to typing-options ", () => { + assertTypingOptions({ }, "jsconfig.json", + { + typingOptions: + { + enableAutoDiscovery: true, + include: [], + exclude: [] + }, + errors: [] + }); + }); + + it("Convert incorrect format jsconfig.json to typing-options ", () => { + assertTypingOptions( + { + "typingOptions": + { + "enableAutoDiscovy": true, + } + }, "jsconfig.json", + { + typingOptions: + { + enableAutoDiscovery: true, + include: [], + exclude: [] + }, + errors: [ + { + category: Diagnostics.Unknown_compiler_option_0.category, + code: Diagnostics.Unknown_typing_option_0.code, + file: undefined, + start: 0, + length: 0, + messageText: undefined + } + ] + }); + }); + + it("Convert jsconfig.json with only enableAutoDiscovery property to typing-options ", () => { + assertTypingOptions( + { + "typingOptions": + { + "enableAutoDiscovery": false + } + }, "jsconfig.json", + { + typingOptions: + { + enableAutoDiscovery: false, + include: [], + exclude: [] + }, + errors: [] + }); + }); + }); +} diff --git a/tests/cases/unittests/jsDocParsing.ts b/tests/cases/unittests/jsDocParsing.ts index 9988383b467..1bd7b1147ca 100644 --- a/tests/cases/unittests/jsDocParsing.ts +++ b/tests/cases/unittests/jsDocParsing.ts @@ -11,6 +11,7 @@ module ts { assert.isTrue(typeAndDiagnostics && typeAndDiagnostics.diagnostics.length === 0); let result = Utils.sourceFileToJSON(typeAndDiagnostics.jsDocTypeExpression.type); + assert.equal(result, expected); } @@ -792,6 +793,7 @@ module ts { "kind": "Identifier", "pos": 1, "end": 10, + "originalKeywordKind": "UndefinedKeyword", "text": "undefined" } }`); @@ -998,7 +1000,7 @@ module ts { ? JSON.parse(Utils.sourceFileToJSON(v)) : v; }, 4); - + if (result !== expected) { // Turn on a human-readable diff if (typeof require !== 'undefined') { diff --git a/tests/cases/unittests/moduleResolution.ts b/tests/cases/unittests/moduleResolution.ts index 9a52d9896e4..29fde331892 100644 --- a/tests/cases/unittests/moduleResolution.ts +++ b/tests/cases/unittests/moduleResolution.ts @@ -204,6 +204,13 @@ module ts { "/a/b/c/d/node_modules/foo/index.ts", "/a/b/c/d/node_modules/foo/index.tsx", "/a/b/c/d/node_modules/foo/index.d.ts", + "/a/b/c/d/node_modules/@types/foo.ts", + "/a/b/c/d/node_modules/@types/foo.tsx", + "/a/b/c/d/node_modules/@types/foo.d.ts", + "/a/b/c/d/node_modules/@types/foo/package.json", + "/a/b/c/d/node_modules/@types/foo/index.ts", + "/a/b/c/d/node_modules/@types/foo/index.tsx", + "/a/b/c/d/node_modules/@types/foo/index.d.ts", "/a/b/c/node_modules/foo.ts", "/a/b/c/node_modules/foo.tsx", "/a/b/c/node_modules/foo.d.ts", @@ -211,6 +218,13 @@ module ts { "/a/b/c/node_modules/foo/index.ts", "/a/b/c/node_modules/foo/index.tsx", "/a/b/c/node_modules/foo/index.d.ts", + "/a/b/c/node_modules/@types/foo.ts", + "/a/b/c/node_modules/@types/foo.tsx", + "/a/b/c/node_modules/@types/foo.d.ts", + "/a/b/c/node_modules/@types/foo/package.json", + "/a/b/c/node_modules/@types/foo/index.ts", + "/a/b/c/node_modules/@types/foo/index.tsx", + "/a/b/c/node_modules/@types/foo/index.d.ts", ]) } }); @@ -246,6 +260,13 @@ module ts { "/a/node_modules/b/c/node_modules/d/node_modules/foo/index.ts", "/a/node_modules/b/c/node_modules/d/node_modules/foo/index.tsx", "/a/node_modules/b/c/node_modules/d/node_modules/foo/index.d.ts", + "/a/node_modules/b/c/node_modules/d/node_modules/@types/foo.ts", + "/a/node_modules/b/c/node_modules/d/node_modules/@types/foo.tsx", + "/a/node_modules/b/c/node_modules/d/node_modules/@types/foo.d.ts", + "/a/node_modules/b/c/node_modules/d/node_modules/@types/foo/package.json", + "/a/node_modules/b/c/node_modules/d/node_modules/@types/foo/index.ts", + "/a/node_modules/b/c/node_modules/d/node_modules/@types/foo/index.tsx", + "/a/node_modules/b/c/node_modules/d/node_modules/@types/foo/index.d.ts", "/a/node_modules/b/c/node_modules/foo.ts", "/a/node_modules/b/c/node_modules/foo.tsx", "/a/node_modules/b/c/node_modules/foo.d.ts", @@ -253,6 +274,13 @@ module ts { "/a/node_modules/b/c/node_modules/foo/index.ts", "/a/node_modules/b/c/node_modules/foo/index.tsx", "/a/node_modules/b/c/node_modules/foo/index.d.ts", + "/a/node_modules/b/c/node_modules/@types/foo.ts", + "/a/node_modules/b/c/node_modules/@types/foo.tsx", + "/a/node_modules/b/c/node_modules/@types/foo.d.ts", + "/a/node_modules/b/c/node_modules/@types/foo/package.json", + "/a/node_modules/b/c/node_modules/@types/foo/index.ts", + "/a/node_modules/b/c/node_modules/@types/foo/index.tsx", + "/a/node_modules/b/c/node_modules/@types/foo/index.d.ts", "/a/node_modules/b/node_modules/foo.ts", "/a/node_modules/b/node_modules/foo.tsx", "/a/node_modules/b/node_modules/foo.d.ts", @@ -260,6 +288,13 @@ module ts { "/a/node_modules/b/node_modules/foo/index.ts", "/a/node_modules/b/node_modules/foo/index.tsx", "/a/node_modules/b/node_modules/foo/index.d.ts", + "/a/node_modules/b/node_modules/@types/foo.ts", + "/a/node_modules/b/node_modules/@types/foo.tsx", + "/a/node_modules/b/node_modules/@types/foo.d.ts", + "/a/node_modules/b/node_modules/@types/foo/package.json", + "/a/node_modules/b/node_modules/@types/foo/index.ts", + "/a/node_modules/b/node_modules/@types/foo/index.tsx", + "/a/node_modules/b/node_modules/@types/foo/index.d.ts", "/a/node_modules/foo.ts", "/a/node_modules/foo.tsx", "/a/node_modules/foo.d.ts", @@ -267,7 +302,6 @@ module ts { "/a/node_modules/foo/index.ts", "/a/node_modules/foo/index.tsx" ]); - } }); }); @@ -664,6 +698,13 @@ import b = require("./moduleB.ts"); "/root/folder1/node_modules/file6/index.ts", "/root/folder1/node_modules/file6/index.tsx", "/root/folder1/node_modules/file6/index.d.ts", + "/root/folder1/node_modules/@types/file6.ts", + "/root/folder1/node_modules/@types/file6.tsx", + "/root/folder1/node_modules/@types/file6.d.ts", + "/root/folder1/node_modules/@types/file6/package.json", + "/root/folder1/node_modules/@types/file6/index.ts", + "/root/folder1/node_modules/@types/file6/index.tsx", + "/root/folder1/node_modules/@types/file6/index.d.ts" // success on /root/node_modules/file6.ts ]); @@ -913,4 +954,119 @@ import b = require("./moduleB.ts"); assert(!result.resolvedModule); }); }); + + describe("Type reference directive resolution: ", () => { + function test(typesRoot: string, typeDirective: string, primary: boolean, initialFile: File, targetFile: File, ...otherFiles: File[]) { + const host = createModuleResolutionHost(false, ...[initialFile, targetFile].concat(...otherFiles)); + const result = resolveTypeReferenceDirective(typeDirective, initialFile.name, {typesRoot}, host); + assert(result.resolvedTypeReferenceDirective.resolvedFileName !== undefined, "expected type directive to be resolved"); + assert.equal(result.resolvedTypeReferenceDirective.resolvedFileName, targetFile.name, "unexpected result of type reference resolution"); + assert.equal(result.resolvedTypeReferenceDirective.primary, primary, "unexpected 'primary' value"); + } + + it("Can be resolved from primary location", () => { + { + const f1 = { name: "/root/src/app.ts" } + const f2 = { name: "/root/src/types/lib/index.d.ts" }; + test(/*typesRoot*/"/root/src", /* typeDirective */"lib", /*primary*/ true, f1, f2); + } + { + const f1 = { name: "/root/src/app.ts" } + const f2 = { name: "/root/src/types/lib/typings/lib.d.ts" }; + const package = { name: "/root/src/types/lib/package.json", content: JSON.stringify({types: "typings/lib.d.ts"}) }; + test(/*typesRoot*/"/root/src", /* typeDirective */"lib", /*primary*/ true, f1, f2, package); + } + { + const f1 = { name: "/root/src/app.ts" } + const f2 = { name: "/root/src/node_modules/lib/index.d.ts" }; + test(/*typesRoot*/"/root/src", /* typeDirective */"lib", /*primary*/ true, f1, f2); + } + { + const f1 = { name: "/root/src/app.ts" } + const f2 = { name: "/root/src/node_modules/lib/typings/lib.d.ts" }; + const package = { name: "/root/src/node_modules/lib/package.json", content: JSON.stringify({types: "typings/lib.d.ts"}) }; + test(/*typesRoot*/"/root/src", /* typeDirective */"lib", /*primary*/ true, f1, f2, package); + } + { + const f1 = { name: "/root/src/app.ts" } + const f2 = { name: "/root/src/node_modules/@types/lib/index.d.ts" }; + test(/*typesRoot*/"/root/src", /* typeDirective */"lib", /*primary*/ true, f1, f2); + } + { + const f1 = { name: "/root/src/app.ts" } + const f2 = { name: "/root/src/node_modules/@types/lib/typings/lib.d.ts" }; + const package = { name: "/root/src/node_modules/@types/lib/package.json", content: JSON.stringify({types: "typings/lib.d.ts"}) }; + test(/*typesRoot*/"/root/src", /* typeDirective */"lib", /*primary*/ true, f1, f2, package); + } + }); + it("Can be resolved from secondary location", () => { + { + const f1 = { name: "/root/src/app.ts" } + const f2 = { name: "/root/node_modules/lib.d.ts" }; + test(/*typesRoot*/"/root/src", /* typeDirective */"lib", /*primary*/ false, f1, f2); + } + { + const f1 = { name: "/root/src/app.ts" } + const f2 = { name: "/root/node_modules/lib/index.d.ts" }; + test(/*typesRoot*/"/root/src", /* typeDirective */"lib", /*primary*/ false, f1, f2); + } + { + const f1 = { name: "/root/src/app.ts" } + const f2 = { name: "/root/node_modules/lib/typings/lib.d.ts" }; + const package = { name: "/root/node_modules/lib/package.json", content: JSON.stringify({typings: "typings/lib.d.ts"}) }; + test(/*typesRoot*/"/root/src", /* typeDirective */"lib", /*primary*/ false, f1, f2, package); + } + { + const f1 = { name: "/root/src/app.ts" } + const f2 = { name: "/root/node_modules/@types/lib/index.d.ts" }; + test(/*typesRoot*/"/root/src", /* typeDirective */"lib", /*primary*/ false, f1, f2); + } + { + const f1 = { name: "/root/src/app.ts" } + const f2 = { name: "/root/node_modules/@types/lib/typings/lib.d.ts" }; + const package = { name: "/root/node_modules/@types/lib/package.json", content: JSON.stringify({typings: "typings/lib.d.ts"}) }; + test(/*typesRoot*/"/root/src", /* typeDirective */"lib", /*primary*/ false, f1, f2, package); + } + }); + it("Primary resolution overrides secondary resolutions", () => { + { + const f1 = { name: "/root/src/a/b/c/app.ts" }; + const f2 = { name: "/root/src/types/lib/index.d.ts" }; + const f3 = { name: "/root/src/a/b/node_modules/lib.d.ts" } + test(/*typesRoot*/"/root/src", /* typeDirective */"lib", /*primary*/ true, f1, f2, f3); + } + }) + it("Reused program keeps errors", () => { + const f1 = { name: "/root/src/a/b/c/d/e/app.ts", content: `/// ` }; + const f2 = { name: "/root/src/a/b/c/d/node_modules/lib/index.d.ts", content: `declare var x: number;` }; + const f3 = { name: "/root/src/a/b/c/d/f/g/app.ts", content: `/// ` }; + const f4 = { name: "/root/src/a/b/c/d/f/node_modules/lib/index.d.ts", content: `declare var x: number;` }; + const files = [f1, f2, f3, f4]; + + const names = map(files, f => f.name); + const sourceFiles = arrayToMap(map(files, f => createSourceFile(f.name, f.content, ScriptTarget.ES6)), f => f.fileName); + const compilerHost: CompilerHost = { + fileExists : fileName => hasProperty(sourceFiles, fileName), + getSourceFile: fileName => sourceFiles[fileName], + getDefaultLibFileName: () => "lib.d.ts", + writeFile(file, text) { + throw new Error("NYI"); + }, + getCurrentDirectory: () => "/", + getCanonicalFileName: f => f.toLowerCase(), + getNewLine: () => "\r\n", + useCaseSensitiveFileNames: () => false, + readFile: fileName => hasProperty(sourceFiles, fileName) ? sourceFiles[fileName].text : undefined + }; + const program1 = createProgram(names, {}, compilerHost); + const diagnostics1 = program1.getFileProcessingDiagnostics().getDiagnostics(); + assert.equal(diagnostics1.length, 1, "expected one diagnostic"); + + const program2 = createProgram(names, {}, compilerHost, program1); + assert.isTrue(program1.structureIsReused); + const diagnostics2 = program1.getFileProcessingDiagnostics().getDiagnostics(); + assert.equal(diagnostics2.length, 1, "expected one diagnostic"); + assert.equal(diagnostics1[0].messageText, diagnostics2[0].messageText, "expected one diagnostic"); + }) + }); } \ No newline at end of file diff --git a/tests/cases/unittests/reuseProgramStructure.ts b/tests/cases/unittests/reuseProgramStructure.ts index 5f313eeae2b..61d5d56ca2c 100644 --- a/tests/cases/unittests/reuseProgramStructure.ts +++ b/tests/cases/unittests/reuseProgramStructure.ts @@ -118,13 +118,13 @@ module ts { return ""; }, getCanonicalFileName(fileName): string { - return sys.useCaseSensitiveFileNames ? fileName : fileName.toLowerCase(); + return sys && sys.useCaseSensitiveFileNames ? fileName : fileName.toLowerCase(); }, useCaseSensitiveFileNames(): boolean { - return sys.useCaseSensitiveFileNames; + return sys && sys.useCaseSensitiveFileNames; }, getNewLine(): string { - return sys.newLine; + return sys ? sys.newLine : newLine; }, fileExists: fileName => hasProperty(files, fileName), readFile: fileName => { @@ -160,36 +160,55 @@ module ts { return size; } - function checkResolvedModulesCache(program: Program, fileName: string, expectedContent: Map): void { + function checkResolvedModule(expected: ResolvedModule, actual: ResolvedModule): void { + assert.isTrue(actual !== undefined); + assert.isTrue(expected.resolvedFileName === actual.resolvedFileName, `'resolvedFileName': expected '${expected.resolvedFileName}' to be equal to '${actual.resolvedFileName}'`); + assert.isTrue(expected.isExternalLibraryImport === actual.isExternalLibraryImport, `'isExternalLibraryImport': expected '${expected.isExternalLibraryImport}' to be equal to '${actual.isExternalLibraryImport}'`); + } + + function checkResolvedTypeDirective(expected: ResolvedTypeReferenceDirective, actual: ResolvedTypeReferenceDirective): void { + assert.isTrue(actual !== undefined); + assert.isTrue(expected.resolvedFileName === actual.resolvedFileName, `'resolvedFileName': expected '${expected.resolvedFileName}' to be equal to '${actual.resolvedFileName}'`); + assert.isTrue(expected.primary === actual.primary, `'primary': expected '${expected.primary}' to be equal to '${actual.primary}'`); + } + + function checkCache(caption: string, program: Program, fileName: string, expectedContent: Map, getCache: (f: SourceFile) => Map, entryChecker: (expected: T, original:T) => void): void { let file = program.getSourceFile(fileName); assert.isTrue(file !== undefined, `cannot find file ${fileName}`); + const cache = getCache(file) if (expectedContent === undefined) { - assert.isTrue(file.resolvedModules === undefined, "expected resolvedModules to be undefined"); + assert.isTrue(cache === undefined, `expected ${caption} to be undefined`); } else { - assert.isTrue(file.resolvedModules !== undefined, "expected resolvedModuled to be set"); - let actualCacheSize = getSizeOfMap(file.resolvedModules); + assert.isTrue(cache !== undefined, `expected ${caption} to be set`); + let actualCacheSize = getSizeOfMap(cache); let expectedSize = getSizeOfMap(expectedContent); assert.isTrue(actualCacheSize === expectedSize, `expected actual size: ${actualCacheSize} to be equal to ${expectedSize}`); for (let id in expectedContent) { if (hasProperty(expectedContent, id)) { - assert.isTrue(hasProperty(file.resolvedModules, id), `expected ${id} to be found in resolved modules`); + if (expectedContent[id]) { const expected = expectedContent[id]; - const actual = file.resolvedModules[id]; - assert.isTrue(actual !== undefined); - assert.isTrue(expected.resolvedFileName === actual.resolvedFileName, `'resolvedFileName': expected '${expected.resolvedFileName}' to be equal to '${actual.resolvedFileName}'`); - assert.isTrue(expected.isExternalLibraryImport === actual.isExternalLibraryImport, `'shouldBeProperExternalModule': expected '${expected.isExternalLibraryImport}' to be equal to '${actual.isExternalLibraryImport}'`); - } - else { - assert.isTrue(file.resolvedModules[id] === undefined); + const actual = cache[id]; + entryChecker(expected, actual); } } + else { + assert.isTrue(cache[id] === undefined); + } } } } + function checkResolvedModulesCache(program: Program, fileName: string, expectedContent: Map): void { + checkCache("resolved modules", program, fileName, expectedContent, f => f.resolvedModules, checkResolvedModule); + } + + function checkResolvedTypeDirectivesCache(program: Program, fileName: string, expectedContent: Map): void { + checkCache("resolved type directives", program, fileName, expectedContent, f => f.resolvedTypeReferenceDirectiveNames, checkResolvedTypeDirective); + } + describe("Reuse program structure", () => { let target = ScriptTarget.Latest; let files = [ @@ -197,9 +216,11 @@ module ts { ` /// /// +/// `, "",`var x = 1`) }, { name: "b.ts", text: SourceText.New(`/// `, "", `var y = 2`) }, { name: "c.ts", text: SourceText.New("", "", `var z = 1;`) }, + { name: "types/typerefs/index.d.ts", text: SourceText.New("", "", `declare let z: number;`) }, ] it("successful if change does not affect imports", () => { @@ -213,6 +234,17 @@ module ts { assert.equal(program1Diagnostics.length, program2Diagnostics.length); }); + it("successful if change does not affect type reference directives", () => { + var program_1 = newProgram(files, ["a.ts"], { target }); + var program_2 = updateProgram(program_1, ["a.ts"], { target }, files => { + files[0].text = files[0].text.updateProgram("var x = 100"); + }); + assert.isTrue(program_1.structureIsReused); + let program1Diagnostics = program_1.getSemanticDiagnostics(program_1.getSourceFile("a.ts")) + let program2Diagnostics = program_2.getSemanticDiagnostics(program_1.getSourceFile("a.ts")) + assert.equal(program1Diagnostics.length, program2Diagnostics.length); + }); + it("fails if change affects tripleslash references", () => { var program_1 = newProgram(files, ["a.ts"], { target }); var program_2 = updateProgram(program_1, ["a.ts"], { target }, files => { @@ -232,11 +264,35 @@ module ts { assert.isTrue(!program_1.structureIsReused); }); + it("fails if change affects type directives", () => { + var program_1 = newProgram(files, ["a.ts"], { target }); + var program_2 = updateProgram(program_1, ["a.ts"], { target }, files => { + let newReferences = ` +/// +/// +/// `; + files[0].text = files[0].text.updateReferences(newReferences); + }); + assert.isTrue(!program_1.structureIsReused); + }); + it("fails if module kind changes", () => { var program_1 = newProgram(files, ["a.ts"], { target, module: ModuleKind.CommonJS }); var program_2 = updateProgram(program_1, ["a.ts"], { target, module: ModuleKind.AMD }, files => void 0); assert.isTrue(!program_1.structureIsReused); }); + + it("fails if rootdir changes", () => { + var program_1 = newProgram(files, ["a.ts"], { target, module: ModuleKind.CommonJS, rootDir: "/a/b" }); + var program_2 = updateProgram(program_1, ["a.ts"], { target, module: ModuleKind.CommonJS, rootDir: "/a/c" }, files => void 0); + assert.isTrue(!program_1.structureIsReused); + }); + + it("fails if config path changes", () => { + var program_1 = newProgram(files, ["a.ts"], { target, module: ModuleKind.CommonJS, configFilePath: "/a/b/tsconfig.json" }); + var program_2 = updateProgram(program_1, ["a.ts"], { target, module: ModuleKind.CommonJS, configFilePath: "/a/c/tsconfig.json" }, files => void 0); + assert.isTrue(!program_1.structureIsReused); + }); it("resolution cache follows imports", () => { let files = [ @@ -274,5 +330,49 @@ module ts { assert.isTrue(!program_3.structureIsReused); checkResolvedModulesCache(program_4, "a.ts", { "b": { resolvedFileName: "b.ts" }, "c": undefined }); }); - }) + + it("resolved type directives cache follows type directives", () => { + let files = [ + { name: "/a.ts", text: SourceText.New("/// ", "", "var x = $") }, + { name: "/types/typedefs/index.d.ts", text: SourceText.New("", "", "declare var $: number") }, + ]; + var options: CompilerOptions = { target, typesRoot: "/" }; + + var program_1 = newProgram(files, ["/a.ts"], options); + checkResolvedTypeDirectivesCache(program_1, "/a.ts", { "typedefs": { resolvedFileName: "/types/typedefs/index.d.ts", primary: true } }); + checkResolvedTypeDirectivesCache(program_1, "/types/typedefs/index.d.ts", undefined); + + var program_2 = updateProgram(program_1, ["/a.ts"], options, files => { + files[0].text = files[0].text.updateProgram("var x = 2"); + }); + assert.isTrue(program_1.structureIsReused); + + // content of resolution cache should not change + checkResolvedTypeDirectivesCache(program_1, "/a.ts", { "typedefs": { resolvedFileName: "/types/typedefs/index.d.ts", primary: true } }); + checkResolvedTypeDirectivesCache(program_1, "/types/typedefs/index.d.ts", undefined); + + // type reference directives has changed - program is not reused + var program_3 = updateProgram(program_2, ["/a.ts"], options, files => { + files[0].text = files[0].text.updateReferences(""); + }); + + assert.isTrue(!program_2.structureIsReused); + checkResolvedTypeDirectivesCache(program_3, "/a.ts", undefined); + + var program_4 = updateProgram(program_3, ["/a.ts"], options, files => { + let newReferences = `/// + /// + `; + files[0].text = files[0].text.updateReferences(newReferences); + }); + assert.isTrue(!program_3.structureIsReused); + checkResolvedTypeDirectivesCache(program_1, "/a.ts", { "typedefs": { resolvedFileName: "/types/typedefs/index.d.ts", primary: true } }); + }); + }); + + describe("host is optional", () => { + it("should work if host is not provided", () => { + createProgram([], {}); + }) + }); } \ No newline at end of file diff --git a/tests/cases/unittests/services/preProcessFile.ts b/tests/cases/unittests/services/preProcessFile.ts index d9ddaf0f256..7fa25b440c5 100644 --- a/tests/cases/unittests/services/preProcessFile.ts +++ b/tests/cases/unittests/services/preProcessFile.ts @@ -1,48 +1,41 @@ /// /// +declare namespace chai.assert { + function deepEqual(actual: any, expected: any): void; +} + describe('PreProcessFile:', function () { function test(sourceText: string, readImportFile: boolean, detectJavaScriptImports: boolean, expectedPreProcess: ts.PreProcessedFileInfo): void { var resultPreProcess = ts.preProcessFile(sourceText, readImportFile, detectJavaScriptImports); - var resultIsLibFile = resultPreProcess.isLibFile; - var resultImportedFiles = resultPreProcess.importedFiles; - var resultReferencedFiles = resultPreProcess.referencedFiles; + assert.equal(resultPreProcess.isLibFile, expectedPreProcess.isLibFile, "Pre-processed file has different value for isLibFile. Expected: " + expectedPreProcess.isLibFile + ". Actual: " + resultPreProcess.isLibFile); - var expectedIsLibFile = expectedPreProcess.isLibFile; - var expectedImportedFiles = expectedPreProcess.importedFiles; - var expectedReferencedFiles = expectedPreProcess.referencedFiles; + checkFileReferenceList("Imported files", expectedPreProcess.importedFiles, resultPreProcess.importedFiles); + checkFileReferenceList("Referenced files", expectedPreProcess.referencedFiles, resultPreProcess.referencedFiles); + checkFileReferenceList("Type reference directives", expectedPreProcess.typeReferenceDirectives, resultPreProcess.typeReferenceDirectives); - assert.equal(resultIsLibFile, expectedIsLibFile, "Pre-processed file has different value for isLibFile. Expected: " + expectedPreProcess + ". Actual: " + resultIsLibFile); + assert.deepEqual(resultPreProcess.ambientExternalModules, expectedPreProcess.ambientExternalModules); + } - assert.equal(resultImportedFiles.length, expectedImportedFiles.length, - "Array's length of imported files does not match expected. Expected: " + expectedImportedFiles.length + ". Actual: " + resultImportedFiles.length); - - assert.equal(resultReferencedFiles.length, expectedReferencedFiles.length, - "Array's length of referenced files does not match expected. Expected: " + expectedReferencedFiles.length + ". Actual: " + resultReferencedFiles.length); - - for (var i = 0; i < expectedImportedFiles.length; ++i) { - var resultImportedFile = resultImportedFiles[i]; - var expectedImportedFile = expectedImportedFiles[i]; - - assert.equal(resultImportedFile.fileName, expectedImportedFile.fileName, "Imported file path does not match expected. Expected: " + expectedImportedFile.fileName + ". Actual: " + resultImportedFile.fileName + "."); - - assert.equal(resultImportedFile.pos, expectedImportedFile.pos, "Imported file position does not match expected. Expected: " + expectedImportedFile.pos + ". Actual: " + resultImportedFile.pos + "."); - - assert.equal(resultImportedFile.end, expectedImportedFile.end, "Imported file length does not match expected. Expected: " + expectedImportedFile.end + ". Actual: " + resultImportedFile.end + "."); + function checkFileReferenceList(kind: string, expected: ts.FileReference[], actual: ts.FileReference[]) { + if (expected === actual) { + return; } + if (!expected) { + assert.isTrue(false, `Expected ${JSON.stringify(expected)}, got ${JSON.stringify(actual)}`); + } + assert.equal(actual.length, expected.length, `[${kind}] Actual array's length does not match expected length. Expected files: ${JSON.stringify(expected)}, actual files: ${JSON.stringify(actual)}`); - for (var i = 0; i < expectedReferencedFiles.length; ++i) { - var resultReferencedFile = resultReferencedFiles[i]; - var expectedReferencedFile = expectedReferencedFiles[i]; - - assert.equal(resultReferencedFile.fileName, expectedReferencedFile.fileName, "Referenced file path does not match expected. Expected: " + expectedReferencedFile.fileName + ". Actual: " + resultReferencedFile.fileName + "."); - - assert.equal(resultReferencedFile.pos, expectedReferencedFile.pos, "Referenced file position does not match expected. Expected: " + expectedReferencedFile.pos + ". Actual: " + resultReferencedFile.pos + "."); - - assert.equal(resultReferencedFile.end, expectedReferencedFile.end, "Referenced file length does not match expected. Expected: " + expectedReferencedFile.end + ". Actual: " + resultReferencedFile.end + "."); + for (var i = 0; i < expected.length; ++i) { + var actualReference = actual[i]; + var expectedReference = expected[i]; + assert.equal(actualReference.fileName, expectedReference.fileName, `[${kind}] actual file path does not match expected. Expected: "${expectedReference.fileName}". Actual: "${actualReference.fileName}".`); + assert.equal(actualReference.pos, expectedReference.pos, `[${kind}] actual file start position does not match expected. Expected: "${expectedReference.pos}". Actual: "${actualReference.pos}".`); + assert.equal(actualReference.end, expectedReference.end, `[${kind}] actual file end pos does not match expected. Expected: "${expectedReference.end}". Actual: "${actualReference.end}".`); } } + describe("Test preProcessFiles,", function () { it("Correctly return referenced files from triple slash", function () { test("///" + "\n" + "///" + "\n" + "///" + "\n" + "///", @@ -52,6 +45,7 @@ describe('PreProcessFile:', function () { referencedFiles: [{ fileName: "refFile1.ts", pos: 0, end: 37 }, { fileName: "refFile2.ts", pos: 38, end: 73 }, { fileName: "refFile3.ts", pos: 74, end: 109 }, { fileName: "..\\refFile4d.ts", pos: 110, end: 150 }], importedFiles: [], + typeReferenceDirectives: [], ambientExternalModules: undefined, isLibFile: false }); @@ -64,6 +58,7 @@ describe('PreProcessFile:', function () { { referencedFiles: [], importedFiles: [], + typeReferenceDirectives: [], ambientExternalModules: undefined, isLibFile: false }); @@ -75,6 +70,7 @@ describe('PreProcessFile:', function () { /* detectJavaScriptImports */ false, { referencedFiles: [], + typeReferenceDirectives: [], importedFiles: [{ fileName: "r1.ts", pos: 20, end: 25 }, { fileName: "r2.ts", pos: 49, end: 54 }, { fileName: "r3.ts", pos: 78, end: 83 }, { fileName: "r4.ts", pos: 106, end: 111 }, { fileName: "r5.ts", pos: 138, end: 143 }], ambientExternalModules: undefined, @@ -88,6 +84,7 @@ describe('PreProcessFile:', function () { /* detectJavaScriptImports */ false, { referencedFiles: [], + typeReferenceDirectives: [], importedFiles: [], ambientExternalModules: undefined, isLibFile: false @@ -100,6 +97,7 @@ describe('PreProcessFile:', function () { /* detectJavaScriptImports */ false, { referencedFiles: [], + typeReferenceDirectives: [], importedFiles: [{ fileName: "r3.ts", pos: 73, end: 78 }], ambientExternalModules: undefined, isLibFile: false @@ -112,6 +110,7 @@ describe('PreProcessFile:', function () { /* detectJavaScriptImports */ false, { referencedFiles: [{ fileName: "refFile1.ts", pos: 0, end: 35 }, { fileName: "refFile2.ts", pos: 36, end: 71 }], + typeReferenceDirectives: [], importedFiles: [{ fileName: "r1.ts", pos: 92, end: 97 }, { fileName: "r2.ts", pos: 121, end: 126 }], ambientExternalModules: undefined, isLibFile: false @@ -124,6 +123,7 @@ describe('PreProcessFile:', function () { /* detectJavaScriptImports */ false, { referencedFiles: [{ fileName: "refFile1.ts", pos: 0, end: 35 }], + typeReferenceDirectives: [], importedFiles: [{ fileName: "r1.ts", pos: 91, end: 96 }, { fileName: "r3.ts", pos: 148, end: 153 }], ambientExternalModules: undefined, isLibFile: false @@ -142,6 +142,7 @@ describe('PreProcessFile:', function () { /* detectJavaScriptImports */ false, { referencedFiles: [], + typeReferenceDirectives: [], importedFiles: [ { fileName: "m1", pos: 20, end: 22 }, { fileName: "m2", pos: 51, end: 53 }, @@ -165,6 +166,7 @@ describe('PreProcessFile:', function () { /* detectJavaScriptImports */ false, { referencedFiles: [], + typeReferenceDirectives: [], importedFiles: [ { fileName: "m1", pos: 14, end: 16 }, { fileName: "m2", pos: 36, end: 38 }, @@ -183,11 +185,12 @@ describe('PreProcessFile:', function () { function foo() { } `, - /* readImports */ false, + /* readImports */ true, /* detectJavaScriptImports */ false, { referencedFiles: [], + typeReferenceDirectives: [], importedFiles: [], ambientExternalModules: ["B"], isLibFile: false @@ -200,6 +203,7 @@ describe('PreProcessFile:', function () { /* detectJavaScriptImports */ false, { referencedFiles: [], + typeReferenceDirectives: [], importedFiles: [ { fileName: "m1", pos: 26, end: 28 } ], @@ -218,6 +222,7 @@ describe('PreProcessFile:', function () { /* detectJavaScriptImports */ true, { referencedFiles: [], + typeReferenceDirectives: [], importedFiles: [ { fileName: "m1", pos: 39, end: 41 }, { fileName: "m2", pos: 74, end: 76 }, @@ -237,6 +242,7 @@ describe('PreProcessFile:', function () { /* detectJavaScriptImports */ true, { referencedFiles: [], + typeReferenceDirectives: [], importedFiles: [ { fileName: "mod1", pos: 21, end: 25 }, { fileName: "mod2", pos: 29, end: 33 }, @@ -254,6 +260,7 @@ describe('PreProcessFile:', function () { /* detectJavaScriptImports */ true, { referencedFiles: [], + typeReferenceDirectives: [], importedFiles: [ { fileName: "mod1", pos: 28, end: 32 }, { fileName: "mod2", pos: 36, end: 40 }, @@ -262,6 +269,196 @@ describe('PreProcessFile:', function () { isLibFile: false }) }); + it("correctly handles augmentations in external modules - 1", () => { + test(` + declare module "../Observable" { + interface I {} + } + + export {} + `, + /*readImportFile*/ true, + /*detectJavaScriptImports*/ false, + { + referencedFiles: [], + typeReferenceDirectives: [], + importedFiles: [ + { "fileName": "../Observable", "pos": 28, "end": 41 } + ], + ambientExternalModules: undefined, + isLibFile: false + }) + }); + it("correctly handles augmentations in external modules - 2", () => { + test(` + declare module "../Observable" { + interface I {} + } + + import * as x from "m"; + `, + /*readImportFile*/ true, + /*detectJavaScriptImports*/ false, + { + referencedFiles: [], + typeReferenceDirectives: [], + importedFiles: [ + { "fileName": "m", "pos": 135, "end": 136 }, + { "fileName": "../Observable", "pos": 28, "end": 41 } + ], + ambientExternalModules: undefined, + isLibFile: false + }) + }); + it("correctly handles augmentations in external modules - 3", () => { + test(` + declare module "../Observable" { + interface I {} + } + + import m = require("m"); + `, + /*readImportFile*/ true, + /*detectJavaScriptImports*/ false, + { + referencedFiles: [], + typeReferenceDirectives: [], + importedFiles: [ + { "fileName": "m", "pos": 135, "end": 136 }, + { "fileName": "../Observable", "pos": 28, "end": 41 } + ], + ambientExternalModules: undefined, + isLibFile: false + }) + }); + it("correctly handles augmentations in external modules - 4", () => { + test(` + declare module "../Observable" { + interface I {} + } + namespace N {} + export = N; + `, + /*readImportFile*/ true, + /*detectJavaScriptImports*/ false, + { + referencedFiles: [], + typeReferenceDirectives: [], + importedFiles: [ + { "fileName": "../Observable", "pos": 28, "end": 41 } + ], + ambientExternalModules: undefined, + isLibFile: false + }) + }); + it("correctly handles augmentations in external modules - 5", () => { + test(` + declare module "../Observable" { + interface I {} + } + namespace N {} + export import IN = N; + `, + /*readImportFile*/ true, + /*detectJavaScriptImports*/ false, + { + referencedFiles: [], + typeReferenceDirectives: [], + importedFiles: [ + { "fileName": "../Observable", "pos": 28, "end": 41 } + ], + ambientExternalModules: undefined, + isLibFile: false + }) + }); + it("correctly handles augmentations in external modules - 6", () => { + test(` + declare module "../Observable" { + interface I {} + } + export let x = 1; + `, + /*readImportFile*/ true, + /*detectJavaScriptImports*/ false, + { + referencedFiles: [], + typeReferenceDirectives: [], + importedFiles: [ + { "fileName": "../Observable", "pos": 28, "end": 41 } + ], + ambientExternalModules: undefined, + isLibFile: false + }) + }); + it ("correctly handles augmentations in ambient external modules - 1", () => { + test(` + declare module "m1" { + export * from "m2"; + declare module "augmentation" { + interface I {} + } + } + `, + /*readImportFile*/ true, + /*detectJavaScriptImports*/ false, + { + referencedFiles: [], + typeReferenceDirectives: [], + importedFiles: [ + { "fileName": "m2", "pos": 65, "end": 67 }, + { "fileName": "augmentation", "pos": 102, "end": 114 } + ], + ambientExternalModules: ["m1"], + isLibFile: false + }); + }); + it ("correctly handles augmentations in ambient external modules - 2", () => { + test(` + namespace M { var x; } + import IM = M; + declare module "m1" { + export * from "m2"; + declare module "augmentation" { + interface I {} + } + } + `, + /*readImportFile*/ true, + /*detectJavaScriptImports*/ false, + { + referencedFiles: [], + typeReferenceDirectives: [], + importedFiles: [ + { "fileName": "m2", "pos": 127, "end": 129 }, + { "fileName": "augmentation", "pos": 164, "end": 176 } + ], + ambientExternalModules: ["m1"], + isLibFile: false + }); + }); + it ("correctly recognizes type reference directives", () => { + test(` + /// + /// + /// + /// + `, + /*readImportFile*/ true, + /*detectJavaScriptImports*/ false, + { + referencedFiles: [ + { "pos": 13, "end": 38, "fileName": "a" }, + { "pos": 91, "end": 117, "fileName": "a2" } + ], + typeReferenceDirectives: [ + { "pos": 51, "end": 78, "fileName": "a1" }, + { "pos": 130, "end": 157, "fileName": "a3" } + ], + importedFiles: [], + ambientExternalModules: undefined, + isLibFile: false + }); + }) }); }); diff --git a/tests/cases/unittests/session.ts b/tests/cases/unittests/session.ts index 41f4bc599f6..ee9742482cd 100644 --- a/tests/cases/unittests/session.ts +++ b/tests/cases/unittests/session.ts @@ -36,7 +36,7 @@ namespace ts.server { let lastSent: protocol.Message; beforeEach(() => { - session = new Session(mockHost, Buffer.byteLength, process.hrtime, mockLogger); + session = new Session(mockHost, Utils.byteLength, process.hrtime, mockLogger); session.send = (msg: protocol.Message) => { lastSent = msg; }; @@ -161,7 +161,7 @@ namespace ts.server { it("is an overrideable handle which sends protocol messages over the wire", () => { const msg = {seq: 0, type: "none"}; const strmsg = JSON.stringify(msg); - const len = 1 + Buffer.byteLength(strmsg, "utf8"); + const len = 1 + Utils.byteLength(strmsg, "utf8"); const resultMsg = `Content-Length: ${len}\r\n\r\n${strmsg}\n`; session.send = Session.prototype.send; @@ -253,7 +253,7 @@ namespace ts.server { lastSent: protocol.Message; customHandler = "testhandler"; constructor() { - super(mockHost, Buffer.byteLength, process.hrtime, mockLogger); + super(mockHost, Utils.byteLength, process.hrtime, mockLogger); this.addProtocolHandler(this.customHandler, () => { return {response: undefined, responseRequired: true}; }); @@ -311,7 +311,7 @@ namespace ts.server { class InProcSession extends Session { private queue: protocol.Request[] = []; constructor(private client: InProcClient) { - super(mockHost, Buffer.byteLength, process.hrtime, mockLogger); + super(mockHost, Utils.byteLength, process.hrtime, mockLogger); this.addProtocolHandler("echo", (req: protocol.Request) => ({ response: req.arguments, responseRequired: true diff --git a/tests/cases/unittests/tsconfigParsing.ts b/tests/cases/unittests/tsconfigParsing.ts index 3603d22f314..29283acfe3c 100644 --- a/tests/cases/unittests/tsconfigParsing.ts +++ b/tests/cases/unittests/tsconfigParsing.ts @@ -13,6 +13,12 @@ namespace ts { assert.isTrue(undefined === parsed.config); assert.isTrue(undefined !== parsed.error); } + + function assertParseErrorWithExcludesKeyword(jsonText: string) { + let parsed = ts.parseConfigFileTextToJson("/apath/tsconfig.json", jsonText); + let parsedCommand = ts.parseJsonConfigFileContent(parsed, ts.sys, "tests/cases/unittests"); + assert.isTrue(undefined !== parsedCommand.errors); + } it("returns empty config for file with only whitespaces", () => { assertParseResult("", { config : {} }); @@ -82,5 +88,37 @@ namespace ts { it("returns object with error when json is invalid", () => { assertParseError("invalid"); }); + + it("returns object when users correctly specify library", () => { + assertParseResult( + `{ + "compilerOptions": { + "lib": "es5" + } + }`, { + config: { compilerOptions: { lib: "es5" } } + }); + + assertParseResult( + `{ + "compilerOptions": { + "lib": "es5,es6" + } + }`, { + config: { compilerOptions: { lib: "es5,es6" } } + }); + }); + + it("returns error when tsconfig have excludes", () => { + assertParseErrorWithExcludesKeyword( + `{ + "compilerOptions": { + "lib": "es5" + }, + "excludes": [ + "foge.ts" + ] + }`); + }); }); } diff --git a/tslint.json b/tslint.json index 2d2e42d4383..f789af46cea 100644 --- a/tslint.json +++ b/tslint.json @@ -13,7 +13,8 @@ ], "no-var-keyword": true, "quotemark": [true, - "double" + "double", + "avoid-escape" ], "semicolon": true, "whitespace": [true, @@ -37,7 +38,7 @@ "no-internal-module": true, "no-trailing-whitespace": true, "no-inferrable-types": true, - "no-null": true, + "no-null-keyword": true, "no-unused-variable": true, "boolean-trivia": true, "type-operator-spacing": true,

{ x: P; } >C : Symbol(C, Decl(genericConstraint3.ts, 0, 0)) >P : Symbol(P, Decl(genericConstraint3.ts, 0, 12)) ->x : Symbol(x, Decl(genericConstraint3.ts, 0, 16)) +>x : Symbol(C.x, Decl(genericConstraint3.ts, 0, 16)) >P : Symbol(P, Decl(genericConstraint3.ts, 0, 12)) interface A> { x: U; } @@ -11,7 +11,7 @@ interface A> { x: U; } >U : Symbol(U, Decl(genericConstraint3.ts, 1, 14)) >C : Symbol(C, Decl(genericConstraint3.ts, 0, 0)) >T : Symbol(T, Decl(genericConstraint3.ts, 1, 12)) ->x : Symbol(x, Decl(genericConstraint3.ts, 1, 32)) +>x : Symbol(A.x, Decl(genericConstraint3.ts, 1, 32)) >U : Symbol(U, Decl(genericConstraint3.ts, 1, 14)) interface B extends A<{}, { x: {} }> { } // Should not produce an error diff --git a/tests/baselines/reference/genericConstraintOnExtendedBuiltinTypes.symbols b/tests/baselines/reference/genericConstraintOnExtendedBuiltinTypes.symbols index 68df4a89b36..57c0e6d0a21 100644 --- a/tests/baselines/reference/genericConstraintOnExtendedBuiltinTypes.symbols +++ b/tests/baselines/reference/genericConstraintOnExtendedBuiltinTypes.symbols @@ -6,12 +6,12 @@ declare module EndGate { >ICloneable : Symbol(ICloneable, Decl(genericConstraintOnExtendedBuiltinTypes.ts, 0, 24)) Clone(): any; ->Clone : Symbol(Clone, Decl(genericConstraintOnExtendedBuiltinTypes.ts, 1, 33)) +>Clone : Symbol(ICloneable.Clone, Decl(genericConstraintOnExtendedBuiltinTypes.ts, 1, 33)) } } interface Number extends EndGate.ICloneable { } ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(genericConstraintOnExtendedBuiltinTypes.ts, 4, 1)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(genericConstraintOnExtendedBuiltinTypes.ts, 4, 1)) >EndGate.ICloneable : Symbol(EndGate.ICloneable, Decl(genericConstraintOnExtendedBuiltinTypes.ts, 0, 24)) >EndGate : Symbol(EndGate, Decl(genericConstraintOnExtendedBuiltinTypes.ts, 0, 0), Decl(genericConstraintOnExtendedBuiltinTypes.ts, 6, 47), Decl(genericConstraintOnExtendedBuiltinTypes.ts, 17, 1)) >ICloneable : Symbol(EndGate.ICloneable, Decl(genericConstraintOnExtendedBuiltinTypes.ts, 0, 24)) @@ -26,7 +26,7 @@ module EndGate.Tweening { >ICloneable : Symbol(ICloneable, Decl(genericConstraintOnExtendedBuiltinTypes.ts, 0, 24)) private _from: T; ->_from : Symbol(_from, Decl(genericConstraintOnExtendedBuiltinTypes.ts, 9, 45)) +>_from : Symbol(Tween._from, Decl(genericConstraintOnExtendedBuiltinTypes.ts, 9, 45)) >T : Symbol(T, Decl(genericConstraintOnExtendedBuiltinTypes.ts, 9, 23)) @@ -35,9 +35,9 @@ module EndGate.Tweening { >T : Symbol(T, Decl(genericConstraintOnExtendedBuiltinTypes.ts, 9, 23)) this._from = from.Clone(); ->this._from : Symbol(_from, Decl(genericConstraintOnExtendedBuiltinTypes.ts, 9, 45)) +>this._from : Symbol(Tween._from, Decl(genericConstraintOnExtendedBuiltinTypes.ts, 9, 45)) >this : Symbol(Tween, Decl(genericConstraintOnExtendedBuiltinTypes.ts, 8, 25)) ->_from : Symbol(_from, Decl(genericConstraintOnExtendedBuiltinTypes.ts, 9, 45)) +>_from : Symbol(Tween._from, Decl(genericConstraintOnExtendedBuiltinTypes.ts, 9, 45)) >from.Clone : Symbol(ICloneable.Clone, Decl(genericConstraintOnExtendedBuiltinTypes.ts, 1, 33)) >from : Symbol(from, Decl(genericConstraintOnExtendedBuiltinTypes.ts, 13, 20)) >Clone : Symbol(ICloneable.Clone, Decl(genericConstraintOnExtendedBuiltinTypes.ts, 1, 33)) diff --git a/tests/baselines/reference/genericConstraintOnExtendedBuiltinTypes2.symbols b/tests/baselines/reference/genericConstraintOnExtendedBuiltinTypes2.symbols index c5e9f0a79f5..63251ba000d 100644 --- a/tests/baselines/reference/genericConstraintOnExtendedBuiltinTypes2.symbols +++ b/tests/baselines/reference/genericConstraintOnExtendedBuiltinTypes2.symbols @@ -6,12 +6,12 @@ module EndGate { >ICloneable : Symbol(ICloneable, Decl(genericConstraintOnExtendedBuiltinTypes2.ts, 0, 16)) Clone(): any; ->Clone : Symbol(Clone, Decl(genericConstraintOnExtendedBuiltinTypes2.ts, 1, 33)) +>Clone : Symbol(ICloneable.Clone, Decl(genericConstraintOnExtendedBuiltinTypes2.ts, 1, 33)) } } interface Number extends EndGate.ICloneable { } ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(genericConstraintOnExtendedBuiltinTypes2.ts, 4, 1)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(genericConstraintOnExtendedBuiltinTypes2.ts, 4, 1)) >EndGate.ICloneable : Symbol(EndGate.ICloneable, Decl(genericConstraintOnExtendedBuiltinTypes2.ts, 0, 16)) >EndGate : Symbol(EndGate, Decl(genericConstraintOnExtendedBuiltinTypes2.ts, 0, 0), Decl(genericConstraintOnExtendedBuiltinTypes2.ts, 6, 47), Decl(genericConstraintOnExtendedBuiltinTypes2.ts, 16, 1)) >ICloneable : Symbol(EndGate.ICloneable, Decl(genericConstraintOnExtendedBuiltinTypes2.ts, 0, 16)) @@ -26,7 +26,7 @@ module EndGate.Tweening { >ICloneable : Symbol(ICloneable, Decl(genericConstraintOnExtendedBuiltinTypes2.ts, 0, 16)) private _from: T; ->_from : Symbol(_from, Decl(genericConstraintOnExtendedBuiltinTypes2.ts, 9, 45)) +>_from : Symbol(Tween._from, Decl(genericConstraintOnExtendedBuiltinTypes2.ts, 9, 45)) >T : Symbol(T, Decl(genericConstraintOnExtendedBuiltinTypes2.ts, 9, 23)) constructor(from: T) { @@ -34,9 +34,9 @@ module EndGate.Tweening { >T : Symbol(T, Decl(genericConstraintOnExtendedBuiltinTypes2.ts, 9, 23)) this._from = from.Clone(); ->this._from : Symbol(_from, Decl(genericConstraintOnExtendedBuiltinTypes2.ts, 9, 45)) +>this._from : Symbol(Tween._from, Decl(genericConstraintOnExtendedBuiltinTypes2.ts, 9, 45)) >this : Symbol(Tween, Decl(genericConstraintOnExtendedBuiltinTypes2.ts, 8, 25)) ->_from : Symbol(_from, Decl(genericConstraintOnExtendedBuiltinTypes2.ts, 9, 45)) +>_from : Symbol(Tween._from, Decl(genericConstraintOnExtendedBuiltinTypes2.ts, 9, 45)) >from.Clone : Symbol(ICloneable.Clone, Decl(genericConstraintOnExtendedBuiltinTypes2.ts, 1, 33)) >from : Symbol(from, Decl(genericConstraintOnExtendedBuiltinTypes2.ts, 12, 20)) >Clone : Symbol(ICloneable.Clone, Decl(genericConstraintOnExtendedBuiltinTypes2.ts, 1, 33)) @@ -51,7 +51,7 @@ module EndGate.Tweening { export class NumberTween extends Tween{ >NumberTween : Symbol(NumberTween, Decl(genericConstraintOnExtendedBuiltinTypes2.ts, 18, 25)) >Tween : Symbol(Tween, Decl(genericConstraintOnExtendedBuiltinTypes2.ts, 8, 25)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(genericConstraintOnExtendedBuiltinTypes2.ts, 4, 1)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(genericConstraintOnExtendedBuiltinTypes2.ts, 4, 1)) constructor(from: number) { >from : Symbol(from, Decl(genericConstraintOnExtendedBuiltinTypes2.ts, 20, 20)) diff --git a/tests/baselines/reference/genericFunctionSpecializations1.symbols b/tests/baselines/reference/genericFunctionSpecializations1.symbols index aaf607cbd47..717e07455f4 100644 --- a/tests/baselines/reference/genericFunctionSpecializations1.symbols +++ b/tests/baselines/reference/genericFunctionSpecializations1.symbols @@ -18,7 +18,7 @@ function foo4(test: string); // valid function foo4(test: T) { } >foo4 : Symbol(foo4, Decl(genericFunctionSpecializations1.ts, 1, 29), Decl(genericFunctionSpecializations1.ts, 3, 31)) >T : Symbol(T, Decl(genericFunctionSpecializations1.ts, 4, 14)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >test : Symbol(test, Decl(genericFunctionSpecializations1.ts, 4, 32)) >T : Symbol(T, Decl(genericFunctionSpecializations1.ts, 4, 14)) diff --git a/tests/baselines/reference/genericFunctions3.symbols b/tests/baselines/reference/genericFunctions3.symbols index 8b257500325..bf071722b29 100644 --- a/tests/baselines/reference/genericFunctions3.symbols +++ b/tests/baselines/reference/genericFunctions3.symbols @@ -4,7 +4,7 @@ interface Query { >T : Symbol(T, Decl(genericFunctions3.ts, 0, 16)) foo(x: string): Query; ->foo : Symbol(foo, Decl(genericFunctions3.ts, 0, 20)) +>foo : Symbol(Query.foo, Decl(genericFunctions3.ts, 0, 20)) >x : Symbol(x, Decl(genericFunctions3.ts, 1, 8)) >Query : Symbol(Query, Decl(genericFunctions3.ts, 0, 0)) >T : Symbol(T, Decl(genericFunctions3.ts, 0, 16)) diff --git a/tests/baselines/reference/genericFunctionsWithOptionalParameters1.symbols b/tests/baselines/reference/genericFunctionsWithOptionalParameters1.symbols index fd79d736ffd..e8d3e904ae0 100644 --- a/tests/baselines/reference/genericFunctionsWithOptionalParameters1.symbols +++ b/tests/baselines/reference/genericFunctionsWithOptionalParameters1.symbols @@ -3,7 +3,7 @@ interface Utils { >Utils : Symbol(Utils, Decl(genericFunctionsWithOptionalParameters1.ts, 0, 0)) fold(c?: Array, folder?: (s: S, t: T) => T, init?: S): T; ->fold : Symbol(fold, Decl(genericFunctionsWithOptionalParameters1.ts, 0, 17)) +>fold : Symbol(Utils.fold, Decl(genericFunctionsWithOptionalParameters1.ts, 0, 17)) >T : Symbol(T, Decl(genericFunctionsWithOptionalParameters1.ts, 1, 8)) >S : Symbol(S, Decl(genericFunctionsWithOptionalParameters1.ts, 1, 10)) >c : Symbol(c, Decl(genericFunctionsWithOptionalParameters1.ts, 1, 14)) diff --git a/tests/baselines/reference/genericFunctionsWithOptionalParameters3.symbols b/tests/baselines/reference/genericFunctionsWithOptionalParameters3.symbols index d033f7b66bb..398c3a0e71f 100644 --- a/tests/baselines/reference/genericFunctionsWithOptionalParameters3.symbols +++ b/tests/baselines/reference/genericFunctionsWithOptionalParameters3.symbols @@ -4,7 +4,7 @@ class Collection { >T : Symbol(T, Decl(genericFunctionsWithOptionalParameters3.ts, 0, 17)) public add(x: T) { } ->add : Symbol(add, Decl(genericFunctionsWithOptionalParameters3.ts, 0, 21)) +>add : Symbol(Collection.add, Decl(genericFunctionsWithOptionalParameters3.ts, 0, 21)) >x : Symbol(x, Decl(genericFunctionsWithOptionalParameters3.ts, 1, 15)) >T : Symbol(T, Decl(genericFunctionsWithOptionalParameters3.ts, 0, 17)) } @@ -12,7 +12,7 @@ interface Utils { >Utils : Symbol(Utils, Decl(genericFunctionsWithOptionalParameters3.ts, 2, 1)) fold(c?: Collection, folder?: (s: S, t: T) => T, init?: S): T; ->fold : Symbol(fold, Decl(genericFunctionsWithOptionalParameters3.ts, 3, 17)) +>fold : Symbol(Utils.fold, Decl(genericFunctionsWithOptionalParameters3.ts, 3, 17)) >T : Symbol(T, Decl(genericFunctionsWithOptionalParameters3.ts, 4, 9)) >S : Symbol(S, Decl(genericFunctionsWithOptionalParameters3.ts, 4, 11)) >c : Symbol(c, Decl(genericFunctionsWithOptionalParameters3.ts, 4, 15)) @@ -29,7 +29,7 @@ interface Utils { >T : Symbol(T, Decl(genericFunctionsWithOptionalParameters3.ts, 4, 9)) mapReduce(c: Collection, mapper: (x: T) => U, reducer: (y: U) => V): Collection; ->mapReduce : Symbol(mapReduce, Decl(genericFunctionsWithOptionalParameters3.ts, 4, 75)) +>mapReduce : Symbol(Utils.mapReduce, Decl(genericFunctionsWithOptionalParameters3.ts, 4, 75)) >T : Symbol(T, Decl(genericFunctionsWithOptionalParameters3.ts, 5, 14)) >U : Symbol(U, Decl(genericFunctionsWithOptionalParameters3.ts, 5, 16)) >V : Symbol(V, Decl(genericFunctionsWithOptionalParameters3.ts, 5, 19)) @@ -63,7 +63,7 @@ var r3 = utils.mapReduce(c, (x) => { return 1 }, (y) => { return new Date() }); >c : Symbol(c, Decl(genericFunctionsWithOptionalParameters3.ts, 8, 3)) >x : Symbol(x, Decl(genericFunctionsWithOptionalParameters3.ts, 9, 29)) >y : Symbol(y, Decl(genericFunctionsWithOptionalParameters3.ts, 9, 50)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) var r4 = utils.mapReduce(c, (x: string) => { return 1 }, (y: number) => { return new Date() }); >r4 : Symbol(r4, Decl(genericFunctionsWithOptionalParameters3.ts, 10, 3)) @@ -73,7 +73,7 @@ var r4 = utils.mapReduce(c, (x: string) => { return 1 }, (y: number) => { return >c : Symbol(c, Decl(genericFunctionsWithOptionalParameters3.ts, 8, 3)) >x : Symbol(x, Decl(genericFunctionsWithOptionalParameters3.ts, 10, 29)) >y : Symbol(y, Decl(genericFunctionsWithOptionalParameters3.ts, 10, 58)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) var f1 = (x: string) => { return 1 }; >f1 : Symbol(f1, Decl(genericFunctionsWithOptionalParameters3.ts, 11, 3)) @@ -82,7 +82,7 @@ var f1 = (x: string) => { return 1 }; var f2 = (y: number) => { return new Date() }; >f2 : Symbol(f2, Decl(genericFunctionsWithOptionalParameters3.ts, 12, 3)) >y : Symbol(y, Decl(genericFunctionsWithOptionalParameters3.ts, 12, 10)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) var r5 = utils.mapReduce(c, f1, f2); >r5 : Symbol(r5, Decl(genericFunctionsWithOptionalParameters3.ts, 13, 3)) diff --git a/tests/baselines/reference/genericImplements.symbols b/tests/baselines/reference/genericImplements.symbols index b3bffdc1b6d..21d56ab08f1 100644 --- a/tests/baselines/reference/genericImplements.symbols +++ b/tests/baselines/reference/genericImplements.symbols @@ -1,17 +1,17 @@ === tests/cases/compiler/genericImplements.ts === class A { a; }; >A : Symbol(A, Decl(genericImplements.ts, 0, 0)) ->a : Symbol(a, Decl(genericImplements.ts, 0, 9)) +>a : Symbol(A.a, Decl(genericImplements.ts, 0, 9)) class B { b; }; >B : Symbol(B, Decl(genericImplements.ts, 0, 15)) ->b : Symbol(b, Decl(genericImplements.ts, 1, 9)) +>b : Symbol(B.b, Decl(genericImplements.ts, 1, 9)) interface I { >I : Symbol(I, Decl(genericImplements.ts, 1, 15)) f(): T; ->f : Symbol(f, Decl(genericImplements.ts, 2, 13)) +>f : Symbol(I.f, Decl(genericImplements.ts, 2, 13)) >T : Symbol(T, Decl(genericImplements.ts, 3, 6)) >A : Symbol(A, Decl(genericImplements.ts, 0, 0)) >T : Symbol(T, Decl(genericImplements.ts, 3, 6)) @@ -24,7 +24,7 @@ class X implements I { >I : Symbol(I, Decl(genericImplements.ts, 1, 15)) f(): T { return undefined; } ->f : Symbol(f, Decl(genericImplements.ts, 7, 22)) +>f : Symbol(X.f, Decl(genericImplements.ts, 7, 22)) >T : Symbol(T, Decl(genericImplements.ts, 8, 6)) >B : Symbol(B, Decl(genericImplements.ts, 0, 15)) >T : Symbol(T, Decl(genericImplements.ts, 8, 6)) @@ -38,7 +38,7 @@ class Y implements I { >I : Symbol(I, Decl(genericImplements.ts, 1, 15)) f(): T { return undefined; } ->f : Symbol(f, Decl(genericImplements.ts, 12, 22)) +>f : Symbol(Y.f, Decl(genericImplements.ts, 12, 22)) >T : Symbol(T, Decl(genericImplements.ts, 13, 6)) >A : Symbol(A, Decl(genericImplements.ts, 0, 0)) >T : Symbol(T, Decl(genericImplements.ts, 13, 6)) @@ -52,7 +52,7 @@ class Z implements I { >I : Symbol(I, Decl(genericImplements.ts, 1, 15)) f(): T { return undefined; } ->f : Symbol(f, Decl(genericImplements.ts, 17, 22)) +>f : Symbol(Z.f, Decl(genericImplements.ts, 17, 22)) >T : Symbol(T, Decl(genericImplements.ts, 18, 6)) >T : Symbol(T, Decl(genericImplements.ts, 18, 6)) >undefined : Symbol(undefined) diff --git a/tests/baselines/reference/genericInference2.symbols b/tests/baselines/reference/genericInference2.symbols index 52b80747cb9..3389bf3a97b 100644 --- a/tests/baselines/reference/genericInference2.symbols +++ b/tests/baselines/reference/genericInference2.symbols @@ -14,13 +14,13 @@ >T : Symbol(T, Decl(genericInference2.ts, 1, 35)) N: number; ->N : Symbol(N, Decl(genericInference2.ts, 3, 27)) +>N : Symbol(Observable.N, Decl(genericInference2.ts, 3, 27)) g: boolean; ->g : Symbol(g, Decl(genericInference2.ts, 4, 21)) +>g : Symbol(Observable.g, Decl(genericInference2.ts, 4, 21)) r: T; ->r : Symbol(r, Decl(genericInference2.ts, 5, 22)) +>r : Symbol(Observable.r, Decl(genericInference2.ts, 5, 22)) >T : Symbol(T, Decl(genericInference2.ts, 1, 35)) } export function observable(value: T): Observable; diff --git a/tests/baselines/reference/genericInstanceOf.symbols b/tests/baselines/reference/genericInstanceOf.symbols index c1636724892..83242a198e1 100644 --- a/tests/baselines/reference/genericInstanceOf.symbols +++ b/tests/baselines/reference/genericInstanceOf.symbols @@ -10,21 +10,21 @@ class C { >T : Symbol(T, Decl(genericInstanceOf.ts, 4, 8)) constructor(public a: T, public b: F) {} ->a : Symbol(a, Decl(genericInstanceOf.ts, 5, 16)) +>a : Symbol(C.a, Decl(genericInstanceOf.ts, 5, 16)) >T : Symbol(T, Decl(genericInstanceOf.ts, 4, 8)) ->b : Symbol(b, Decl(genericInstanceOf.ts, 5, 28)) +>b : Symbol(C.b, Decl(genericInstanceOf.ts, 5, 28)) >F : Symbol(F, Decl(genericInstanceOf.ts, 0, 0)) foo() { ->foo : Symbol(foo, Decl(genericInstanceOf.ts, 5, 44)) +>foo : Symbol(C.foo, Decl(genericInstanceOf.ts, 5, 44)) if (this.a instanceof this.b) { ->this.a : Symbol(a, Decl(genericInstanceOf.ts, 5, 16)) +>this.a : Symbol(C.a, Decl(genericInstanceOf.ts, 5, 16)) >this : Symbol(C, Decl(genericInstanceOf.ts, 2, 1)) ->a : Symbol(a, Decl(genericInstanceOf.ts, 5, 16)) ->this.b : Symbol(b, Decl(genericInstanceOf.ts, 5, 28)) +>a : Symbol(C.a, Decl(genericInstanceOf.ts, 5, 16)) +>this.b : Symbol(C.b, Decl(genericInstanceOf.ts, 5, 28)) >this : Symbol(C, Decl(genericInstanceOf.ts, 2, 1)) ->b : Symbol(b, Decl(genericInstanceOf.ts, 5, 28)) +>b : Symbol(C.b, Decl(genericInstanceOf.ts, 5, 28)) } } } diff --git a/tests/baselines/reference/genericInstantiationEquivalentToObjectLiteral.symbols b/tests/baselines/reference/genericInstantiationEquivalentToObjectLiteral.symbols index 51579bad2d5..b65224cd0c8 100644 --- a/tests/baselines/reference/genericInstantiationEquivalentToObjectLiteral.symbols +++ b/tests/baselines/reference/genericInstantiationEquivalentToObjectLiteral.symbols @@ -3,9 +3,9 @@ interface Pair { first: T1; second: T2; } >Pair : Symbol(Pair, Decl(genericInstantiationEquivalentToObjectLiteral.ts, 0, 0)) >T1 : Symbol(T1, Decl(genericInstantiationEquivalentToObjectLiteral.ts, 0, 15)) >T2 : Symbol(T2, Decl(genericInstantiationEquivalentToObjectLiteral.ts, 0, 18)) ->first : Symbol(first, Decl(genericInstantiationEquivalentToObjectLiteral.ts, 0, 24)) +>first : Symbol(Pair.first, Decl(genericInstantiationEquivalentToObjectLiteral.ts, 0, 24)) >T1 : Symbol(T1, Decl(genericInstantiationEquivalentToObjectLiteral.ts, 0, 15)) ->second : Symbol(second, Decl(genericInstantiationEquivalentToObjectLiteral.ts, 0, 35)) +>second : Symbol(Pair.second, Decl(genericInstantiationEquivalentToObjectLiteral.ts, 0, 35)) >T2 : Symbol(T2, Decl(genericInstantiationEquivalentToObjectLiteral.ts, 0, 18)) var x: Pair diff --git a/tests/baselines/reference/genericInterfaceImplementation.symbols b/tests/baselines/reference/genericInterfaceImplementation.symbols index 5816396081f..0b9ef1b90ae 100644 --- a/tests/baselines/reference/genericInterfaceImplementation.symbols +++ b/tests/baselines/reference/genericInterfaceImplementation.symbols @@ -4,11 +4,11 @@ interface IOption { >A : Symbol(A, Decl(genericInterfaceImplementation.ts, 0, 18)) get(): A; ->get : Symbol(get, Decl(genericInterfaceImplementation.ts, 0, 22)) +>get : Symbol(IOption.get, Decl(genericInterfaceImplementation.ts, 0, 22)) >A : Symbol(A, Decl(genericInterfaceImplementation.ts, 0, 18)) flatten(): IOption; ->flatten : Symbol(flatten, Decl(genericInterfaceImplementation.ts, 1, 13)) +>flatten : Symbol(IOption.flatten, Decl(genericInterfaceImplementation.ts, 1, 13)) >B : Symbol(B, Decl(genericInterfaceImplementation.ts, 3, 12)) >IOption : Symbol(IOption, Decl(genericInterfaceImplementation.ts, 0, 0)) >B : Symbol(B, Decl(genericInterfaceImplementation.ts, 3, 12)) @@ -21,14 +21,14 @@ class None implements IOption{ >T : Symbol(T, Decl(genericInterfaceImplementation.ts, 6, 11)) get(): T { ->get : Symbol(get, Decl(genericInterfaceImplementation.ts, 6, 36)) +>get : Symbol(None.get, Decl(genericInterfaceImplementation.ts, 6, 36)) >T : Symbol(T, Decl(genericInterfaceImplementation.ts, 6, 11)) throw null; } flatten() : IOption { ->flatten : Symbol(flatten, Decl(genericInterfaceImplementation.ts, 9, 5)) +>flatten : Symbol(None.flatten, Decl(genericInterfaceImplementation.ts, 9, 5)) >U : Symbol(U, Decl(genericInterfaceImplementation.ts, 11, 12)) >IOption : Symbol(IOption, Decl(genericInterfaceImplementation.ts, 0, 0)) >U : Symbol(U, Decl(genericInterfaceImplementation.ts, 11, 12)) diff --git a/tests/baselines/reference/genericInterfaceTypeCall.symbols b/tests/baselines/reference/genericInterfaceTypeCall.symbols index e28ce8f8d80..fe640fd2e53 100644 --- a/tests/baselines/reference/genericInterfaceTypeCall.symbols +++ b/tests/baselines/reference/genericInterfaceTypeCall.symbols @@ -4,7 +4,7 @@ interface Foo { >T : Symbol(T, Decl(genericInterfaceTypeCall.ts, 0, 14)) reject(arg: T): void; ->reject : Symbol(reject, Decl(genericInterfaceTypeCall.ts, 0, 18)) +>reject : Symbol(Foo.reject, Decl(genericInterfaceTypeCall.ts, 0, 18)) >arg : Symbol(arg, Decl(genericInterfaceTypeCall.ts, 1, 11)) >T : Symbol(T, Decl(genericInterfaceTypeCall.ts, 0, 14)) } @@ -17,13 +17,13 @@ interface bar { >T : Symbol(T, Decl(genericInterfaceTypeCall.ts, 5, 14)) fail(func: (arg: T) => void ): void; ->fail : Symbol(fail, Decl(genericInterfaceTypeCall.ts, 5, 18)) +>fail : Symbol(bar.fail, Decl(genericInterfaceTypeCall.ts, 5, 18)) >func : Symbol(func, Decl(genericInterfaceTypeCall.ts, 6, 9)) >arg : Symbol(arg, Decl(genericInterfaceTypeCall.ts, 6, 16)) >T : Symbol(T, Decl(genericInterfaceTypeCall.ts, 5, 14)) fail2(func2: { (arg: T): void; }): void; ->fail2 : Symbol(fail2, Decl(genericInterfaceTypeCall.ts, 6, 40)) +>fail2 : Symbol(bar.fail2, Decl(genericInterfaceTypeCall.ts, 6, 40)) >func2 : Symbol(func2, Decl(genericInterfaceTypeCall.ts, 7, 10)) >arg : Symbol(arg, Decl(genericInterfaceTypeCall.ts, 7, 20)) >T : Symbol(T, Decl(genericInterfaceTypeCall.ts, 5, 14)) diff --git a/tests/baselines/reference/genericMethodOverspecialization.symbols b/tests/baselines/reference/genericMethodOverspecialization.symbols index 808addf068c..329ca2de675 100644 --- a/tests/baselines/reference/genericMethodOverspecialization.symbols +++ b/tests/baselines/reference/genericMethodOverspecialization.symbols @@ -6,10 +6,10 @@ interface HTMLElement { >HTMLElement : Symbol(HTMLElement, Decl(genericMethodOverspecialization.ts, 0, 62)) clientWidth: number; ->clientWidth : Symbol(clientWidth, Decl(genericMethodOverspecialization.ts, 2, 23)) +>clientWidth : Symbol(HTMLElement.clientWidth, Decl(genericMethodOverspecialization.ts, 2, 23)) isDisabled: boolean; ->isDisabled : Symbol(isDisabled, Decl(genericMethodOverspecialization.ts, 3, 24)) +>isDisabled : Symbol(HTMLElement.isDisabled, Decl(genericMethodOverspecialization.ts, 3, 24)) } declare var document: Document; @@ -20,7 +20,7 @@ interface Document { >Document : Symbol(Document, Decl(genericMethodOverspecialization.ts, 7, 31)) getElementById(elementId: string): HTMLElement; ->getElementById : Symbol(getElementById, Decl(genericMethodOverspecialization.ts, 8, 20)) +>getElementById : Symbol(Document.getElementById, Decl(genericMethodOverspecialization.ts, 8, 20)) >elementId : Symbol(elementId, Decl(genericMethodOverspecialization.ts, 9, 19)) >HTMLElement : Symbol(HTMLElement, Decl(genericMethodOverspecialization.ts, 0, 62)) } diff --git a/tests/baselines/reference/genericMethodOverspecialization.types b/tests/baselines/reference/genericMethodOverspecialization.types index 0ad302da94e..375eefaa86c 100644 --- a/tests/baselines/reference/genericMethodOverspecialization.types +++ b/tests/baselines/reference/genericMethodOverspecialization.types @@ -53,9 +53,9 @@ var elements = names.map(function (name) { var xxx = elements.filter(function (e) { >xxx : HTMLElement[] >elements.filter(function (e) { return !e.isDisabled;}) : HTMLElement[] ->elements.filter : (callbackfn: (value: HTMLElement, index: number, array: HTMLElement[]) => boolean, thisArg?: any) => HTMLElement[] +>elements.filter : (callbackfn: (value: HTMLElement, index: number, array: HTMLElement[]) => any, thisArg?: any) => HTMLElement[] >elements : HTMLElement[] ->filter : (callbackfn: (value: HTMLElement, index: number, array: HTMLElement[]) => boolean, thisArg?: any) => HTMLElement[] +>filter : (callbackfn: (value: HTMLElement, index: number, array: HTMLElement[]) => any, thisArg?: any) => HTMLElement[] >function (e) { return !e.isDisabled;} : (e: HTMLElement) => boolean >e : HTMLElement diff --git a/tests/baselines/reference/genericObjectLitReturnType.symbols b/tests/baselines/reference/genericObjectLitReturnType.symbols index f3253bdf810..8dacec9a8c5 100644 --- a/tests/baselines/reference/genericObjectLitReturnType.symbols +++ b/tests/baselines/reference/genericObjectLitReturnType.symbols @@ -4,7 +4,7 @@ class X >T : Symbol(T, Decl(genericObjectLitReturnType.ts, 0, 8)) { f(t: T) { return { a: t }; } ->f : Symbol(f, Decl(genericObjectLitReturnType.ts, 1, 1)) +>f : Symbol(X.f, Decl(genericObjectLitReturnType.ts, 1, 1)) >t : Symbol(t, Decl(genericObjectLitReturnType.ts, 2, 6)) >T : Symbol(T, Decl(genericObjectLitReturnType.ts, 0, 8)) >a : Symbol(a, Decl(genericObjectLitReturnType.ts, 2, 22)) diff --git a/tests/baselines/reference/genericOfACloduleType1.symbols b/tests/baselines/reference/genericOfACloduleType1.symbols index b2bb95a8ef1..07a677b60c0 100644 --- a/tests/baselines/reference/genericOfACloduleType1.symbols +++ b/tests/baselines/reference/genericOfACloduleType1.symbols @@ -2,7 +2,7 @@ class G{ bar(x: T) { return x; } } >G : Symbol(G, Decl(genericOfACloduleType1.ts, 0, 0)) >T : Symbol(T, Decl(genericOfACloduleType1.ts, 0, 8)) ->bar : Symbol(bar, Decl(genericOfACloduleType1.ts, 0, 11)) +>bar : Symbol(G.bar, Decl(genericOfACloduleType1.ts, 0, 11)) >x : Symbol(x, Decl(genericOfACloduleType1.ts, 0, 16)) >T : Symbol(T, Decl(genericOfACloduleType1.ts, 0, 8)) >x : Symbol(x, Decl(genericOfACloduleType1.ts, 0, 16)) @@ -12,7 +12,7 @@ module M { export class C { foo() { } } >C : Symbol(C, Decl(genericOfACloduleType1.ts, 1, 10), Decl(genericOfACloduleType1.ts, 2, 32)) ->foo : Symbol(foo, Decl(genericOfACloduleType1.ts, 2, 20)) +>foo : Symbol(C.foo, Decl(genericOfACloduleType1.ts, 2, 20)) export module C { >C : Symbol(C, Decl(genericOfACloduleType1.ts, 1, 10), Decl(genericOfACloduleType1.ts, 2, 32)) diff --git a/tests/baselines/reference/genericOfACloduleType2.symbols b/tests/baselines/reference/genericOfACloduleType2.symbols index 2f4fe34818c..4999d227bbc 100644 --- a/tests/baselines/reference/genericOfACloduleType2.symbols +++ b/tests/baselines/reference/genericOfACloduleType2.symbols @@ -2,7 +2,7 @@ class G{ bar(x: T) { return x; } } >G : Symbol(G, Decl(genericOfACloduleType2.ts, 0, 0)) >T : Symbol(T, Decl(genericOfACloduleType2.ts, 0, 8)) ->bar : Symbol(bar, Decl(genericOfACloduleType2.ts, 0, 11)) +>bar : Symbol(G.bar, Decl(genericOfACloduleType2.ts, 0, 11)) >x : Symbol(x, Decl(genericOfACloduleType2.ts, 0, 16)) >T : Symbol(T, Decl(genericOfACloduleType2.ts, 0, 8)) >x : Symbol(x, Decl(genericOfACloduleType2.ts, 0, 16)) @@ -12,7 +12,7 @@ module M { export class C { foo() { } } >C : Symbol(C, Decl(genericOfACloduleType2.ts, 1, 10), Decl(genericOfACloduleType2.ts, 2, 32)) ->foo : Symbol(foo, Decl(genericOfACloduleType2.ts, 2, 20)) +>foo : Symbol(C.foo, Decl(genericOfACloduleType2.ts, 2, 20)) export module C { >C : Symbol(C, Decl(genericOfACloduleType2.ts, 1, 10), Decl(genericOfACloduleType2.ts, 2, 32)) diff --git a/tests/baselines/reference/genericOverloadSignatures.symbols b/tests/baselines/reference/genericOverloadSignatures.symbols index 76343fb1898..148aead0616 100644 --- a/tests/baselines/reference/genericOverloadSignatures.symbols +++ b/tests/baselines/reference/genericOverloadSignatures.symbols @@ -33,13 +33,13 @@ interface I2 { >I2 : Symbol(I2, Decl(genericOverloadSignatures.ts, 7, 17)) f(x: T): number; ->f : Symbol(f, Decl(genericOverloadSignatures.ts, 9, 14), Decl(genericOverloadSignatures.ts, 10, 23)) +>f : Symbol(I2.f, Decl(genericOverloadSignatures.ts, 9, 14), Decl(genericOverloadSignatures.ts, 10, 23)) >T : Symbol(T, Decl(genericOverloadSignatures.ts, 10, 6)) >x : Symbol(x, Decl(genericOverloadSignatures.ts, 10, 9)) >T : Symbol(T, Decl(genericOverloadSignatures.ts, 10, 6)) f(x: T): string; ->f : Symbol(f, Decl(genericOverloadSignatures.ts, 9, 14), Decl(genericOverloadSignatures.ts, 10, 23)) +>f : Symbol(I2.f, Decl(genericOverloadSignatures.ts, 9, 14), Decl(genericOverloadSignatures.ts, 10, 23)) >T : Symbol(T, Decl(genericOverloadSignatures.ts, 11, 6)) >x : Symbol(x, Decl(genericOverloadSignatures.ts, 11, 9)) >T : Symbol(T, Decl(genericOverloadSignatures.ts, 11, 6)) @@ -50,12 +50,12 @@ interface I3 { >T : Symbol(T, Decl(genericOverloadSignatures.ts, 14, 13)) f(x: T): number; ->f : Symbol(f, Decl(genericOverloadSignatures.ts, 14, 17), Decl(genericOverloadSignatures.ts, 15, 20)) +>f : Symbol(I3.f, Decl(genericOverloadSignatures.ts, 14, 17), Decl(genericOverloadSignatures.ts, 15, 20)) >x : Symbol(x, Decl(genericOverloadSignatures.ts, 15, 6)) >T : Symbol(T, Decl(genericOverloadSignatures.ts, 14, 13)) f(x: T): string; ->f : Symbol(f, Decl(genericOverloadSignatures.ts, 14, 17), Decl(genericOverloadSignatures.ts, 15, 20)) +>f : Symbol(I3.f, Decl(genericOverloadSignatures.ts, 14, 17), Decl(genericOverloadSignatures.ts, 15, 20)) >x : Symbol(x, Decl(genericOverloadSignatures.ts, 16, 6)) >T : Symbol(T, Decl(genericOverloadSignatures.ts, 14, 13)) } diff --git a/tests/baselines/reference/genericPrototypeProperty.symbols b/tests/baselines/reference/genericPrototypeProperty.symbols index ca2fe000dce..130d9669327 100644 --- a/tests/baselines/reference/genericPrototypeProperty.symbols +++ b/tests/baselines/reference/genericPrototypeProperty.symbols @@ -4,11 +4,11 @@ class C { >T : Symbol(T, Decl(genericPrototypeProperty.ts, 0, 8)) x: T; ->x : Symbol(x, Decl(genericPrototypeProperty.ts, 0, 12)) +>x : Symbol(C.x, Decl(genericPrototypeProperty.ts, 0, 12)) >T : Symbol(T, Decl(genericPrototypeProperty.ts, 0, 8)) foo(x: T): T { return null; } ->foo : Symbol(foo, Decl(genericPrototypeProperty.ts, 1, 9)) +>foo : Symbol(C.foo, Decl(genericPrototypeProperty.ts, 1, 9)) >x : Symbol(x, Decl(genericPrototypeProperty.ts, 2, 8)) >T : Symbol(T, Decl(genericPrototypeProperty.ts, 0, 8)) >T : Symbol(T, Decl(genericPrototypeProperty.ts, 0, 8)) diff --git a/tests/baselines/reference/genericPrototypeProperty2.symbols b/tests/baselines/reference/genericPrototypeProperty2.symbols index f7d55162154..71709239cef 100644 --- a/tests/baselines/reference/genericPrototypeProperty2.symbols +++ b/tests/baselines/reference/genericPrototypeProperty2.symbols @@ -1,13 +1,13 @@ === tests/cases/compiler/genericPrototypeProperty2.ts === interface EventTarget { x } >EventTarget : Symbol(EventTarget, Decl(genericPrototypeProperty2.ts, 0, 0)) ->x : Symbol(x, Decl(genericPrototypeProperty2.ts, 0, 23)) +>x : Symbol(EventTarget.x, Decl(genericPrototypeProperty2.ts, 0, 23)) class BaseEvent { >BaseEvent : Symbol(BaseEvent, Decl(genericPrototypeProperty2.ts, 0, 27)) target: EventTarget; ->target : Symbol(target, Decl(genericPrototypeProperty2.ts, 1, 17)) +>target : Symbol(BaseEvent.target, Decl(genericPrototypeProperty2.ts, 1, 17)) >EventTarget : Symbol(EventTarget, Decl(genericPrototypeProperty2.ts, 0, 0)) } @@ -18,14 +18,14 @@ class MyEvent extends BaseEvent { >BaseEvent : Symbol(BaseEvent, Decl(genericPrototypeProperty2.ts, 0, 27)) target: T; ->target : Symbol(target, Decl(genericPrototypeProperty2.ts, 5, 56)) +>target : Symbol(MyEvent.target, Decl(genericPrototypeProperty2.ts, 5, 56)) >T : Symbol(T, Decl(genericPrototypeProperty2.ts, 5, 14)) } class BaseEventWrapper { >BaseEventWrapper : Symbol(BaseEventWrapper, Decl(genericPrototypeProperty2.ts, 7, 1)) t: BaseEvent; ->t : Symbol(t, Decl(genericPrototypeProperty2.ts, 8, 24)) +>t : Symbol(BaseEventWrapper.t, Decl(genericPrototypeProperty2.ts, 8, 24)) >BaseEvent : Symbol(BaseEvent, Decl(genericPrototypeProperty2.ts, 0, 27)) } @@ -34,6 +34,6 @@ class MyEventWrapper extends BaseEventWrapper { >BaseEventWrapper : Symbol(BaseEventWrapper, Decl(genericPrototypeProperty2.ts, 7, 1)) t: MyEvent; // any satisfies constraint and passes assignability check between 'target' properties ->t : Symbol(t, Decl(genericPrototypeProperty2.ts, 12, 47)) +>t : Symbol(MyEventWrapper.t, Decl(genericPrototypeProperty2.ts, 12, 47)) >MyEvent : Symbol(MyEvent, Decl(genericPrototypeProperty2.ts, 3, 1)) } diff --git a/tests/baselines/reference/genericPrototypeProperty3.symbols b/tests/baselines/reference/genericPrototypeProperty3.symbols index fb28fbcc89d..7f8c57ff2ea 100644 --- a/tests/baselines/reference/genericPrototypeProperty3.symbols +++ b/tests/baselines/reference/genericPrototypeProperty3.symbols @@ -3,7 +3,7 @@ class BaseEvent { >BaseEvent : Symbol(BaseEvent, Decl(genericPrototypeProperty3.ts, 0, 0)) target: {}; ->target : Symbol(target, Decl(genericPrototypeProperty3.ts, 0, 17)) +>target : Symbol(BaseEvent.target, Decl(genericPrototypeProperty3.ts, 0, 17)) } class MyEvent extends BaseEvent { // T is instantiated to any in the prototype, which is assignable to {} @@ -12,14 +12,14 @@ class MyEvent extends BaseEvent { // T is instantiated to any in the prototyp >BaseEvent : Symbol(BaseEvent, Decl(genericPrototypeProperty3.ts, 0, 0)) target: T; ->target : Symbol(target, Decl(genericPrototypeProperty3.ts, 4, 36)) +>target : Symbol(MyEvent.target, Decl(genericPrototypeProperty3.ts, 4, 36)) >T : Symbol(T, Decl(genericPrototypeProperty3.ts, 4, 14)) } class BaseEventWrapper { >BaseEventWrapper : Symbol(BaseEventWrapper, Decl(genericPrototypeProperty3.ts, 6, 1)) t: BaseEvent; ->t : Symbol(t, Decl(genericPrototypeProperty3.ts, 7, 24)) +>t : Symbol(BaseEventWrapper.t, Decl(genericPrototypeProperty3.ts, 7, 24)) >BaseEvent : Symbol(BaseEvent, Decl(genericPrototypeProperty3.ts, 0, 0)) } @@ -28,6 +28,6 @@ class MyEventWrapper extends BaseEventWrapper { >BaseEventWrapper : Symbol(BaseEventWrapper, Decl(genericPrototypeProperty3.ts, 6, 1)) t: MyEvent; ->t : Symbol(t, Decl(genericPrototypeProperty3.ts, 11, 47)) +>t : Symbol(MyEventWrapper.t, Decl(genericPrototypeProperty3.ts, 11, 47)) >MyEvent : Symbol(MyEvent, Decl(genericPrototypeProperty3.ts, 2, 1)) } diff --git a/tests/baselines/reference/genericRecursiveImplicitConstructorErrors2.symbols b/tests/baselines/reference/genericRecursiveImplicitConstructorErrors2.symbols index ff8d19ff6e6..16171917561 100644 --- a/tests/baselines/reference/genericRecursiveImplicitConstructorErrors2.symbols +++ b/tests/baselines/reference/genericRecursiveImplicitConstructorErrors2.symbols @@ -32,7 +32,7 @@ module TypeScript2 { } // link methods public addOutgoingLink(linkTo: PullSymbol, kind: SymbolLinkKind) { ->addOutgoingLink : Symbol(addOutgoingLink, Decl(genericRecursiveImplicitConstructorErrors2.ts, 12, 5)) +>addOutgoingLink : Symbol(PullSymbol.addOutgoingLink, Decl(genericRecursiveImplicitConstructorErrors2.ts, 12, 5)) >A : Symbol(A, Decl(genericRecursiveImplicitConstructorErrors2.ts, 14, 27)) >B : Symbol(B, Decl(genericRecursiveImplicitConstructorErrors2.ts, 14, 29)) >C : Symbol(C, Decl(genericRecursiveImplicitConstructorErrors2.ts, 14, 31)) @@ -44,7 +44,7 @@ module TypeScript2 { } public getType(): PullTypeSymbol { ->getType : Symbol(getType, Decl(genericRecursiveImplicitConstructorErrors2.ts, 16, 5)) +>getType : Symbol(PullSymbol.getType, Decl(genericRecursiveImplicitConstructorErrors2.ts, 16, 5)) >A : Symbol(A, Decl(genericRecursiveImplicitConstructorErrors2.ts, 18, 19)) >B : Symbol(B, Decl(genericRecursiveImplicitConstructorErrors2.ts, 18, 21)) >C : Symbol(C, Decl(genericRecursiveImplicitConstructorErrors2.ts, 18, 23)) diff --git a/tests/baselines/reference/genericReversingTypeParameters.symbols b/tests/baselines/reference/genericReversingTypeParameters.symbols index 05eb102f36b..2a77e5496be 100644 --- a/tests/baselines/reference/genericReversingTypeParameters.symbols +++ b/tests/baselines/reference/genericReversingTypeParameters.symbols @@ -5,19 +5,19 @@ class BiMap { >V : Symbol(V, Decl(genericReversingTypeParameters.ts, 0, 14)) private inverseBiMap: BiMap; ->inverseBiMap : Symbol(inverseBiMap, Decl(genericReversingTypeParameters.ts, 0, 19)) +>inverseBiMap : Symbol(BiMap.inverseBiMap, Decl(genericReversingTypeParameters.ts, 0, 19)) >BiMap : Symbol(BiMap, Decl(genericReversingTypeParameters.ts, 0, 0)) >V : Symbol(V, Decl(genericReversingTypeParameters.ts, 0, 14)) >K : Symbol(K, Decl(genericReversingTypeParameters.ts, 0, 12)) public get(key: K): V { return null; } ->get : Symbol(get, Decl(genericReversingTypeParameters.ts, 1, 38)) +>get : Symbol(BiMap.get, Decl(genericReversingTypeParameters.ts, 1, 38)) >key : Symbol(key, Decl(genericReversingTypeParameters.ts, 2, 15)) >K : Symbol(K, Decl(genericReversingTypeParameters.ts, 0, 12)) >V : Symbol(V, Decl(genericReversingTypeParameters.ts, 0, 14)) public inverse(): BiMap { return null; } ->inverse : Symbol(inverse, Decl(genericReversingTypeParameters.ts, 2, 42)) +>inverse : Symbol(BiMap.inverse, Decl(genericReversingTypeParameters.ts, 2, 42)) >BiMap : Symbol(BiMap, Decl(genericReversingTypeParameters.ts, 0, 0)) >V : Symbol(V, Decl(genericReversingTypeParameters.ts, 0, 14)) >K : Symbol(K, Decl(genericReversingTypeParameters.ts, 0, 12)) diff --git a/tests/baselines/reference/genericReversingTypeParameters2.symbols b/tests/baselines/reference/genericReversingTypeParameters2.symbols index d33dbd3a64b..43f6db8ecba 100644 --- a/tests/baselines/reference/genericReversingTypeParameters2.symbols +++ b/tests/baselines/reference/genericReversingTypeParameters2.symbols @@ -5,19 +5,19 @@ class BiMap { >V : Symbol(V, Decl(genericReversingTypeParameters2.ts, 0, 14)) private inverseBiMap: BiMap; ->inverseBiMap : Symbol(inverseBiMap, Decl(genericReversingTypeParameters2.ts, 0, 19)) +>inverseBiMap : Symbol(BiMap.inverseBiMap, Decl(genericReversingTypeParameters2.ts, 0, 19)) >BiMap : Symbol(BiMap, Decl(genericReversingTypeParameters2.ts, 0, 0)) >V : Symbol(V, Decl(genericReversingTypeParameters2.ts, 0, 14)) >K : Symbol(K, Decl(genericReversingTypeParameters2.ts, 0, 12)) public get(key: K): V { return null; } ->get : Symbol(get, Decl(genericReversingTypeParameters2.ts, 1, 38)) +>get : Symbol(BiMap.get, Decl(genericReversingTypeParameters2.ts, 1, 38)) >key : Symbol(key, Decl(genericReversingTypeParameters2.ts, 2, 15)) >K : Symbol(K, Decl(genericReversingTypeParameters2.ts, 0, 12)) >V : Symbol(V, Decl(genericReversingTypeParameters2.ts, 0, 14)) public inverse(): BiMap { return null; } ->inverse : Symbol(inverse, Decl(genericReversingTypeParameters2.ts, 2, 42)) +>inverse : Symbol(BiMap.inverse, Decl(genericReversingTypeParameters2.ts, 2, 42)) >BiMap : Symbol(BiMap, Decl(genericReversingTypeParameters2.ts, 0, 0)) >V : Symbol(V, Decl(genericReversingTypeParameters2.ts, 0, 14)) >K : Symbol(K, Decl(genericReversingTypeParameters2.ts, 0, 12)) diff --git a/tests/baselines/reference/genericSignatureIdentity.symbols b/tests/baselines/reference/genericSignatureIdentity.symbols index afd12ec266a..b5caa87b0a5 100644 --- a/tests/baselines/reference/genericSignatureIdentity.symbols +++ b/tests/baselines/reference/genericSignatureIdentity.symbols @@ -9,7 +9,7 @@ var x: { (x: T): T; >T : Symbol(T, Decl(genericSignatureIdentity.ts, 6, 5)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >x : Symbol(x, Decl(genericSignatureIdentity.ts, 6, 21)) >T : Symbol(T, Decl(genericSignatureIdentity.ts, 6, 5)) >T : Symbol(T, Decl(genericSignatureIdentity.ts, 6, 5)) diff --git a/tests/baselines/reference/genericSpecializationToTypeLiteral1.symbols b/tests/baselines/reference/genericSpecializationToTypeLiteral1.symbols index 78203ddacf6..057b6ec6548 100644 --- a/tests/baselines/reference/genericSpecializationToTypeLiteral1.symbols +++ b/tests/baselines/reference/genericSpecializationToTypeLiteral1.symbols @@ -4,7 +4,7 @@ interface IEnumerable { >T : Symbol(T, Decl(genericSpecializationToTypeLiteral1.ts, 0, 22)) zip(second: IEnumerable, resultSelector: (first: T, second: T, index: number) => TResult): IEnumerable; ->zip : Symbol(zip, Decl(genericSpecializationToTypeLiteral1.ts, 0, 26), Decl(genericSpecializationToTypeLiteral1.ts, 2, 128), Decl(genericSpecializationToTypeLiteral1.ts, 3, 117)) +>zip : Symbol(IEnumerable.zip, Decl(genericSpecializationToTypeLiteral1.ts, 0, 26), Decl(genericSpecializationToTypeLiteral1.ts, 2, 128), Decl(genericSpecializationToTypeLiteral1.ts, 3, 117)) >TResult : Symbol(TResult, Decl(genericSpecializationToTypeLiteral1.ts, 2, 8)) >second : Symbol(second, Decl(genericSpecializationToTypeLiteral1.ts, 2, 17)) >IEnumerable : Symbol(IEnumerable, Decl(genericSpecializationToTypeLiteral1.ts, 0, 0)) @@ -20,7 +20,7 @@ interface IEnumerable { >TResult : Symbol(TResult, Decl(genericSpecializationToTypeLiteral1.ts, 2, 8)) zip(second: T[], resultSelector: (first: T, second: T, index: number) => TResult): IEnumerable; ->zip : Symbol(zip, Decl(genericSpecializationToTypeLiteral1.ts, 0, 26), Decl(genericSpecializationToTypeLiteral1.ts, 2, 128), Decl(genericSpecializationToTypeLiteral1.ts, 3, 117)) +>zip : Symbol(IEnumerable.zip, Decl(genericSpecializationToTypeLiteral1.ts, 0, 26), Decl(genericSpecializationToTypeLiteral1.ts, 2, 128), Decl(genericSpecializationToTypeLiteral1.ts, 3, 117)) >TResult : Symbol(TResult, Decl(genericSpecializationToTypeLiteral1.ts, 3, 8)) >second : Symbol(second, Decl(genericSpecializationToTypeLiteral1.ts, 3, 17)) >T : Symbol(T, Decl(genericSpecializationToTypeLiteral1.ts, 0, 22)) @@ -35,14 +35,14 @@ interface IEnumerable { >TResult : Symbol(TResult, Decl(genericSpecializationToTypeLiteral1.ts, 3, 8)) zip(...params: any[]): IEnumerable; // last one is selector ->zip : Symbol(zip, Decl(genericSpecializationToTypeLiteral1.ts, 0, 26), Decl(genericSpecializationToTypeLiteral1.ts, 2, 128), Decl(genericSpecializationToTypeLiteral1.ts, 3, 117)) +>zip : Symbol(IEnumerable.zip, Decl(genericSpecializationToTypeLiteral1.ts, 0, 26), Decl(genericSpecializationToTypeLiteral1.ts, 2, 128), Decl(genericSpecializationToTypeLiteral1.ts, 3, 117)) >TResult : Symbol(TResult, Decl(genericSpecializationToTypeLiteral1.ts, 4, 8)) >params : Symbol(params, Decl(genericSpecializationToTypeLiteral1.ts, 4, 17)) >IEnumerable : Symbol(IEnumerable, Decl(genericSpecializationToTypeLiteral1.ts, 0, 0)) >TResult : Symbol(TResult, Decl(genericSpecializationToTypeLiteral1.ts, 4, 8)) merge(...params: IEnumerable[]): IEnumerable; ->merge : Symbol(merge, Decl(genericSpecializationToTypeLiteral1.ts, 4, 57), Decl(genericSpecializationToTypeLiteral1.ts, 6, 64)) +>merge : Symbol(IEnumerable.merge, Decl(genericSpecializationToTypeLiteral1.ts, 4, 57), Decl(genericSpecializationToTypeLiteral1.ts, 6, 64)) >TResult : Symbol(TResult, Decl(genericSpecializationToTypeLiteral1.ts, 6, 10)) >params : Symbol(params, Decl(genericSpecializationToTypeLiteral1.ts, 6, 19)) >IEnumerable : Symbol(IEnumerable, Decl(genericSpecializationToTypeLiteral1.ts, 0, 0)) @@ -51,7 +51,7 @@ interface IEnumerable { >T : Symbol(T, Decl(genericSpecializationToTypeLiteral1.ts, 0, 22)) merge(...params: T[][]): IEnumerable; ->merge : Symbol(merge, Decl(genericSpecializationToTypeLiteral1.ts, 4, 57), Decl(genericSpecializationToTypeLiteral1.ts, 6, 64)) +>merge : Symbol(IEnumerable.merge, Decl(genericSpecializationToTypeLiteral1.ts, 4, 57), Decl(genericSpecializationToTypeLiteral1.ts, 6, 64)) >TResult : Symbol(TResult, Decl(genericSpecializationToTypeLiteral1.ts, 7, 10)) >params : Symbol(params, Decl(genericSpecializationToTypeLiteral1.ts, 7, 19)) >T : Symbol(T, Decl(genericSpecializationToTypeLiteral1.ts, 0, 22)) @@ -60,7 +60,7 @@ interface IEnumerable { concat(...sequences: IEnumerable[]): IEnumerable; ->concat : Symbol(concat, Decl(genericSpecializationToTypeLiteral1.ts, 7, 53), Decl(genericSpecializationToTypeLiteral1.ts, 10, 59)) +>concat : Symbol(IEnumerable.concat, Decl(genericSpecializationToTypeLiteral1.ts, 7, 53), Decl(genericSpecializationToTypeLiteral1.ts, 10, 59)) >sequences : Symbol(sequences, Decl(genericSpecializationToTypeLiteral1.ts, 10, 11)) >IEnumerable : Symbol(IEnumerable, Decl(genericSpecializationToTypeLiteral1.ts, 0, 0)) >T : Symbol(T, Decl(genericSpecializationToTypeLiteral1.ts, 0, 22)) @@ -68,14 +68,14 @@ interface IEnumerable { >T : Symbol(T, Decl(genericSpecializationToTypeLiteral1.ts, 0, 22)) concat(...sequences: T[]): IEnumerable; ->concat : Symbol(concat, Decl(genericSpecializationToTypeLiteral1.ts, 7, 53), Decl(genericSpecializationToTypeLiteral1.ts, 10, 59)) +>concat : Symbol(IEnumerable.concat, Decl(genericSpecializationToTypeLiteral1.ts, 7, 53), Decl(genericSpecializationToTypeLiteral1.ts, 10, 59)) >sequences : Symbol(sequences, Decl(genericSpecializationToTypeLiteral1.ts, 11, 11)) >T : Symbol(T, Decl(genericSpecializationToTypeLiteral1.ts, 0, 22)) >IEnumerable : Symbol(IEnumerable, Decl(genericSpecializationToTypeLiteral1.ts, 0, 0)) >T : Symbol(T, Decl(genericSpecializationToTypeLiteral1.ts, 0, 22)) insert(index: number, second: IEnumerable): IEnumerable; ->insert : Symbol(insert, Decl(genericSpecializationToTypeLiteral1.ts, 11, 46)) +>insert : Symbol(IEnumerable.insert, Decl(genericSpecializationToTypeLiteral1.ts, 11, 46)) >index : Symbol(index, Decl(genericSpecializationToTypeLiteral1.ts, 13, 11)) >second : Symbol(second, Decl(genericSpecializationToTypeLiteral1.ts, 13, 25)) >IEnumerable : Symbol(IEnumerable, Decl(genericSpecializationToTypeLiteral1.ts, 0, 0)) @@ -84,13 +84,13 @@ interface IEnumerable { >T : Symbol(T, Decl(genericSpecializationToTypeLiteral1.ts, 0, 22)) sequenceEqual(second: IEnumerable): boolean; ->sequenceEqual : Symbol(sequenceEqual, Decl(genericSpecializationToTypeLiteral1.ts, 13, 66), Decl(genericSpecializationToTypeLiteral1.ts, 15, 51), Decl(genericSpecializationToTypeLiteral1.ts, 16, 104), Decl(genericSpecializationToTypeLiteral1.ts, 17, 40)) +>sequenceEqual : Symbol(IEnumerable.sequenceEqual, Decl(genericSpecializationToTypeLiteral1.ts, 13, 66), Decl(genericSpecializationToTypeLiteral1.ts, 15, 51), Decl(genericSpecializationToTypeLiteral1.ts, 16, 104), Decl(genericSpecializationToTypeLiteral1.ts, 17, 40)) >second : Symbol(second, Decl(genericSpecializationToTypeLiteral1.ts, 15, 18)) >IEnumerable : Symbol(IEnumerable, Decl(genericSpecializationToTypeLiteral1.ts, 0, 0)) >T : Symbol(T, Decl(genericSpecializationToTypeLiteral1.ts, 0, 22)) sequenceEqual(second: IEnumerable, compareSelector: (element: T) => TCompare): boolean; ->sequenceEqual : Symbol(sequenceEqual, Decl(genericSpecializationToTypeLiteral1.ts, 13, 66), Decl(genericSpecializationToTypeLiteral1.ts, 15, 51), Decl(genericSpecializationToTypeLiteral1.ts, 16, 104), Decl(genericSpecializationToTypeLiteral1.ts, 17, 40)) +>sequenceEqual : Symbol(IEnumerable.sequenceEqual, Decl(genericSpecializationToTypeLiteral1.ts, 13, 66), Decl(genericSpecializationToTypeLiteral1.ts, 15, 51), Decl(genericSpecializationToTypeLiteral1.ts, 16, 104), Decl(genericSpecializationToTypeLiteral1.ts, 17, 40)) >TCompare : Symbol(TCompare, Decl(genericSpecializationToTypeLiteral1.ts, 16, 18)) >second : Symbol(second, Decl(genericSpecializationToTypeLiteral1.ts, 16, 28)) >IEnumerable : Symbol(IEnumerable, Decl(genericSpecializationToTypeLiteral1.ts, 0, 0)) @@ -101,12 +101,12 @@ interface IEnumerable { >TCompare : Symbol(TCompare, Decl(genericSpecializationToTypeLiteral1.ts, 16, 18)) sequenceEqual(second: T[]): boolean; ->sequenceEqual : Symbol(sequenceEqual, Decl(genericSpecializationToTypeLiteral1.ts, 13, 66), Decl(genericSpecializationToTypeLiteral1.ts, 15, 51), Decl(genericSpecializationToTypeLiteral1.ts, 16, 104), Decl(genericSpecializationToTypeLiteral1.ts, 17, 40)) +>sequenceEqual : Symbol(IEnumerable.sequenceEqual, Decl(genericSpecializationToTypeLiteral1.ts, 13, 66), Decl(genericSpecializationToTypeLiteral1.ts, 15, 51), Decl(genericSpecializationToTypeLiteral1.ts, 16, 104), Decl(genericSpecializationToTypeLiteral1.ts, 17, 40)) >second : Symbol(second, Decl(genericSpecializationToTypeLiteral1.ts, 17, 18)) >T : Symbol(T, Decl(genericSpecializationToTypeLiteral1.ts, 0, 22)) sequenceEqual(second: T[], compareSelector: (element: T) => TCompare): boolean; ->sequenceEqual : Symbol(sequenceEqual, Decl(genericSpecializationToTypeLiteral1.ts, 13, 66), Decl(genericSpecializationToTypeLiteral1.ts, 15, 51), Decl(genericSpecializationToTypeLiteral1.ts, 16, 104), Decl(genericSpecializationToTypeLiteral1.ts, 17, 40)) +>sequenceEqual : Symbol(IEnumerable.sequenceEqual, Decl(genericSpecializationToTypeLiteral1.ts, 13, 66), Decl(genericSpecializationToTypeLiteral1.ts, 15, 51), Decl(genericSpecializationToTypeLiteral1.ts, 16, 104), Decl(genericSpecializationToTypeLiteral1.ts, 17, 40)) >TCompare : Symbol(TCompare, Decl(genericSpecializationToTypeLiteral1.ts, 18, 18)) >second : Symbol(second, Decl(genericSpecializationToTypeLiteral1.ts, 18, 28)) >T : Symbol(T, Decl(genericSpecializationToTypeLiteral1.ts, 0, 22)) @@ -116,7 +116,7 @@ interface IEnumerable { >TCompare : Symbol(TCompare, Decl(genericSpecializationToTypeLiteral1.ts, 18, 18)) toDictionary(keySelector: (element: T) => TKey): IDictionary; ->toDictionary : Symbol(toDictionary, Decl(genericSpecializationToTypeLiteral1.ts, 18, 93), Decl(genericSpecializationToTypeLiteral1.ts, 20, 82), Decl(genericSpecializationToTypeLiteral1.ts, 21, 134)) +>toDictionary : Symbol(IEnumerable.toDictionary, Decl(genericSpecializationToTypeLiteral1.ts, 18, 93), Decl(genericSpecializationToTypeLiteral1.ts, 20, 82), Decl(genericSpecializationToTypeLiteral1.ts, 21, 134)) >TKey : Symbol(TKey, Decl(genericSpecializationToTypeLiteral1.ts, 20, 17)) >keySelector : Symbol(keySelector, Decl(genericSpecializationToTypeLiteral1.ts, 20, 23)) >element : Symbol(element, Decl(genericSpecializationToTypeLiteral1.ts, 20, 37)) @@ -126,7 +126,7 @@ interface IEnumerable { >TKey : Symbol(TKey, Decl(genericSpecializationToTypeLiteral1.ts, 20, 17)) toDictionary(keySelector: (element: T) => TKey, elementSelector: (element: T) => TValue): IDictionary; ->toDictionary : Symbol(toDictionary, Decl(genericSpecializationToTypeLiteral1.ts, 18, 93), Decl(genericSpecializationToTypeLiteral1.ts, 20, 82), Decl(genericSpecializationToTypeLiteral1.ts, 21, 134)) +>toDictionary : Symbol(IEnumerable.toDictionary, Decl(genericSpecializationToTypeLiteral1.ts, 18, 93), Decl(genericSpecializationToTypeLiteral1.ts, 20, 82), Decl(genericSpecializationToTypeLiteral1.ts, 21, 134)) >TKey : Symbol(TKey, Decl(genericSpecializationToTypeLiteral1.ts, 21, 17)) >TValue : Symbol(TValue, Decl(genericSpecializationToTypeLiteral1.ts, 21, 22)) >keySelector : Symbol(keySelector, Decl(genericSpecializationToTypeLiteral1.ts, 21, 31)) @@ -142,7 +142,7 @@ interface IEnumerable { >TValue : Symbol(TValue, Decl(genericSpecializationToTypeLiteral1.ts, 21, 22)) toDictionary(keySelector: (element: T) => TKey, elementSelector: (element: T) => TValue, compareSelector: (key: TKey) => TCompare): IDictionary; ->toDictionary : Symbol(toDictionary, Decl(genericSpecializationToTypeLiteral1.ts, 18, 93), Decl(genericSpecializationToTypeLiteral1.ts, 20, 82), Decl(genericSpecializationToTypeLiteral1.ts, 21, 134)) +>toDictionary : Symbol(IEnumerable.toDictionary, Decl(genericSpecializationToTypeLiteral1.ts, 18, 93), Decl(genericSpecializationToTypeLiteral1.ts, 20, 82), Decl(genericSpecializationToTypeLiteral1.ts, 21, 134)) >TKey : Symbol(TKey, Decl(genericSpecializationToTypeLiteral1.ts, 22, 17)) >TValue : Symbol(TValue, Decl(genericSpecializationToTypeLiteral1.ts, 22, 22)) >TCompare : Symbol(TCompare, Decl(genericSpecializationToTypeLiteral1.ts, 22, 30)) @@ -169,7 +169,7 @@ interface IDictionary { >TValue : Symbol(TValue, Decl(genericSpecializationToTypeLiteral1.ts, 25, 27)) toEnumerable(): IEnumerable<{ key: TKey; value: TValue }>; ->toEnumerable : Symbol(toEnumerable, Decl(genericSpecializationToTypeLiteral1.ts, 25, 37)) +>toEnumerable : Symbol(IDictionary.toEnumerable, Decl(genericSpecializationToTypeLiteral1.ts, 25, 37)) >IEnumerable : Symbol(IEnumerable, Decl(genericSpecializationToTypeLiteral1.ts, 0, 0)) >key : Symbol(key, Decl(genericSpecializationToTypeLiteral1.ts, 26, 33)) >TKey : Symbol(TKey, Decl(genericSpecializationToTypeLiteral1.ts, 25, 22)) diff --git a/tests/baselines/reference/genericSpecializations1.symbols b/tests/baselines/reference/genericSpecializations1.symbols index 87f31276b3f..79e591d3186 100644 --- a/tests/baselines/reference/genericSpecializations1.symbols +++ b/tests/baselines/reference/genericSpecializations1.symbols @@ -4,7 +4,7 @@ interface IFoo { >T : Symbol(T, Decl(genericSpecializations1.ts, 0, 15)) foo(x: T): T; // no error on implementors because IFoo's T is different from foo's T ->foo : Symbol(foo, Decl(genericSpecializations1.ts, 0, 19)) +>foo : Symbol(IFoo.foo, Decl(genericSpecializations1.ts, 0, 19)) >T : Symbol(T, Decl(genericSpecializations1.ts, 1, 8)) >x : Symbol(x, Decl(genericSpecializations1.ts, 1, 11)) >T : Symbol(T, Decl(genericSpecializations1.ts, 1, 8)) @@ -16,7 +16,7 @@ class IntFooBad implements IFoo { >IFoo : Symbol(IFoo, Decl(genericSpecializations1.ts, 0, 0)) foo(x: string): string { return null; } ->foo : Symbol(foo, Decl(genericSpecializations1.ts, 4, 41)) +>foo : Symbol(IntFooBad.foo, Decl(genericSpecializations1.ts, 4, 41)) >x : Symbol(x, Decl(genericSpecializations1.ts, 5, 8)) } @@ -25,7 +25,7 @@ class StringFoo2 implements IFoo { >IFoo : Symbol(IFoo, Decl(genericSpecializations1.ts, 0, 0)) foo(x: string): string { return null; } ->foo : Symbol(foo, Decl(genericSpecializations1.ts, 8, 42)) +>foo : Symbol(StringFoo2.foo, Decl(genericSpecializations1.ts, 8, 42)) >x : Symbol(x, Decl(genericSpecializations1.ts, 9, 8)) } @@ -34,7 +34,7 @@ class StringFoo3 implements IFoo { >IFoo : Symbol(IFoo, Decl(genericSpecializations1.ts, 0, 0)) foo(x: T): T { return null; } ->foo : Symbol(foo, Decl(genericSpecializations1.ts, 12, 42)) +>foo : Symbol(StringFoo3.foo, Decl(genericSpecializations1.ts, 12, 42)) >T : Symbol(T, Decl(genericSpecializations1.ts, 13, 8)) >x : Symbol(x, Decl(genericSpecializations1.ts, 13, 11)) >T : Symbol(T, Decl(genericSpecializations1.ts, 13, 8)) diff --git a/tests/baselines/reference/genericSpecializations3.errors.txt b/tests/baselines/reference/genericSpecializations3.errors.txt index ccaa839f9d0..87a7d5bcce7 100644 --- a/tests/baselines/reference/genericSpecializations3.errors.txt +++ b/tests/baselines/reference/genericSpecializations3.errors.txt @@ -2,17 +2,17 @@ tests/cases/compiler/genericSpecializations3.ts(8,7): error TS2420: Class 'IntFo Types of property 'foo' are incompatible. Type '(x: string) => string' is not assignable to type '(x: number) => number'. Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Type 'number' is not assignable to type 'string'. tests/cases/compiler/genericSpecializations3.ts(28,1): error TS2322: Type 'StringFoo2' is not assignable to type 'IntFoo'. Types of property 'foo' are incompatible. Type '(x: string) => string' is not assignable to type '(x: number) => number'. Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Type 'number' is not assignable to type 'string'. tests/cases/compiler/genericSpecializations3.ts(29,1): error TS2322: Type 'IntFoo' is not assignable to type 'StringFoo2'. Types of property 'foo' are incompatible. Type '(x: number) => number' is not assignable to type '(x: string) => string'. Types of parameters 'x' and 'x' are incompatible. - Type 'number' is not assignable to type 'string'. + Type 'string' is not assignable to type 'number'. ==== tests/cases/compiler/genericSpecializations3.ts (3 errors) ==== @@ -29,7 +29,7 @@ tests/cases/compiler/genericSpecializations3.ts(29,1): error TS2322: Type 'IntFo !!! error TS2420: Types of property 'foo' are incompatible. !!! error TS2420: Type '(x: string) => string' is not assignable to type '(x: number) => number'. !!! error TS2420: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2420: Type 'string' is not assignable to type 'number'. +!!! error TS2420: Type 'number' is not assignable to type 'string'. foo(x: string): string { return null; } } @@ -55,14 +55,14 @@ tests/cases/compiler/genericSpecializations3.ts(29,1): error TS2322: Type 'IntFo !!! error TS2322: Types of property 'foo' are incompatible. !!! error TS2322: Type '(x: string) => string' is not assignable to type '(x: number) => number'. !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Type 'number' is not assignable to type 'string'. stringFoo2 = intFoo; // error ~~~~~~~~~~ !!! error TS2322: Type 'IntFoo' is not assignable to type 'StringFoo2'. !!! error TS2322: Types of property 'foo' are incompatible. !!! error TS2322: Type '(x: number) => number' is not assignable to type '(x: string) => string'. !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'number' is not assignable to type 'string'. +!!! error TS2322: Type 'string' is not assignable to type 'number'. class StringFoo3 implements IFoo { // error diff --git a/tests/baselines/reference/genericTypeAliases.symbols b/tests/baselines/reference/genericTypeAliases.symbols index 1a1d0e51487..d5f68ec0615 100644 --- a/tests/baselines/reference/genericTypeAliases.symbols +++ b/tests/baselines/reference/genericTypeAliases.symbols @@ -130,11 +130,11 @@ interface Tuple { >B : Symbol(B, Decl(genericTypeAliases.ts, 41, 18)) a: A; ->a : Symbol(a, Decl(genericTypeAliases.ts, 41, 23)) +>a : Symbol(Tuple.a, Decl(genericTypeAliases.ts, 41, 23)) >A : Symbol(A, Decl(genericTypeAliases.ts, 41, 16)) b: B; ->b : Symbol(b, Decl(genericTypeAliases.ts, 42, 9)) +>b : Symbol(Tuple.b, Decl(genericTypeAliases.ts, 42, 9)) >B : Symbol(B, Decl(genericTypeAliases.ts, 41, 18)) } @@ -152,7 +152,7 @@ interface TaggedPair extends Pair { >T : Symbol(T, Decl(genericTypeAliases.ts, 48, 21)) tag: string; ->tag : Symbol(tag, Decl(genericTypeAliases.ts, 48, 41)) +>tag : Symbol(TaggedPair.tag, Decl(genericTypeAliases.ts, 48, 41)) } var p: TaggedPair; diff --git a/tests/baselines/reference/genericTypeArgumentInference1.symbols b/tests/baselines/reference/genericTypeArgumentInference1.symbols index 7b88a84337e..da48fc7919d 100644 --- a/tests/baselines/reference/genericTypeArgumentInference1.symbols +++ b/tests/baselines/reference/genericTypeArgumentInference1.symbols @@ -18,7 +18,7 @@ module Underscore { >Static : Symbol(Static, Decl(genericTypeArgumentInference1.ts, 3, 5)) all(list: T[], iterator?: Iterator, context?: any): T; ->all : Symbol(all, Decl(genericTypeArgumentInference1.ts, 4, 29)) +>all : Symbol(Static.all, Decl(genericTypeArgumentInference1.ts, 4, 29)) >T : Symbol(T, Decl(genericTypeArgumentInference1.ts, 5, 12)) >list : Symbol(list, Decl(genericTypeArgumentInference1.ts, 5, 15)) >T : Symbol(T, Decl(genericTypeArgumentInference1.ts, 5, 12)) @@ -29,7 +29,7 @@ module Underscore { >T : Symbol(T, Decl(genericTypeArgumentInference1.ts, 5, 12)) identity(value: T): T; ->identity : Symbol(identity, Decl(genericTypeArgumentInference1.ts, 5, 77)) +>identity : Symbol(Static.identity, Decl(genericTypeArgumentInference1.ts, 5, 77)) >T : Symbol(T, Decl(genericTypeArgumentInference1.ts, 6, 17)) >value : Symbol(value, Decl(genericTypeArgumentInference1.ts, 6, 20)) >T : Symbol(T, Decl(genericTypeArgumentInference1.ts, 6, 17)) diff --git a/tests/baselines/reference/genericTypeAssertions1.errors.txt b/tests/baselines/reference/genericTypeAssertions1.errors.txt index 5479c5f948e..aa5f14f5da8 100644 --- a/tests/baselines/reference/genericTypeAssertions1.errors.txt +++ b/tests/baselines/reference/genericTypeAssertions1.errors.txt @@ -2,8 +2,8 @@ tests/cases/compiler/genericTypeAssertions1.ts(3,5): error TS2322: Type 'A>' is not assignable to type 'A'. Type 'A' is not assignable to type 'number'. -tests/cases/compiler/genericTypeAssertions1.ts(4,21): error TS2352: Neither type 'A' nor type 'A>' is assignable to the other. - Type 'number' is not assignable to type 'A'. +tests/cases/compiler/genericTypeAssertions1.ts(4,21): error TS2352: Type 'A' cannot be converted to type 'A>'. + Type 'number' is not comparable to type 'A'. ==== tests/cases/compiler/genericTypeAssertions1.ts (3 errors) ==== @@ -18,5 +18,5 @@ tests/cases/compiler/genericTypeAssertions1.ts(4,21): error TS2352: Neither type !!! error TS2322: Type 'A>' is not assignable to type 'A'. !!! error TS2322: Type 'A' is not assignable to type 'number'. ~~~~~~~~~~~~~~~~~ -!!! error TS2352: Neither type 'A' nor type 'A>' is assignable to the other. -!!! error TS2352: Type 'number' is not assignable to type 'A'. \ No newline at end of file +!!! error TS2352: Type 'A' cannot be converted to type 'A>'. +!!! error TS2352: Type 'number' is not comparable to type 'A'. \ No newline at end of file diff --git a/tests/baselines/reference/genericTypeAssertions2.errors.txt b/tests/baselines/reference/genericTypeAssertions2.errors.txt index eda4c83646c..756690f1783 100644 --- a/tests/baselines/reference/genericTypeAssertions2.errors.txt +++ b/tests/baselines/reference/genericTypeAssertions2.errors.txt @@ -2,10 +2,10 @@ tests/cases/compiler/genericTypeAssertions2.ts(10,5): error TS2322: Type 'B void' is not assignable to type '(x: number) => void'. Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Type 'number' is not assignable to type 'string'. tests/cases/compiler/genericTypeAssertions2.ts(11,5): error TS2322: Type 'A' is not assignable to type 'B'. Property 'bar' is missing in type 'A'. -tests/cases/compiler/genericTypeAssertions2.ts(13,21): error TS2352: Neither type 'undefined[]' nor type 'A' is assignable to the other. +tests/cases/compiler/genericTypeAssertions2.ts(13,21): error TS2352: Type 'undefined[]' cannot be converted to type 'A'. Property 'foo' is missing in type 'undefined[]'. @@ -25,7 +25,7 @@ tests/cases/compiler/genericTypeAssertions2.ts(13,21): error TS2352: Neither typ !!! error TS2322: Types of property 'foo' are incompatible. !!! error TS2322: Type '(x: string) => void' is not assignable to type '(x: number) => void'. !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Type 'number' is not assignable to type 'string'. var r3: B = >new B(); // error ~~ !!! error TS2322: Type 'A' is not assignable to type 'B'. @@ -33,5 +33,5 @@ tests/cases/compiler/genericTypeAssertions2.ts(13,21): error TS2352: Neither typ var r4: A = >new A(); var r5: A = >[]; // error ~~~~~~~~~~~~~ -!!! error TS2352: Neither type 'undefined[]' nor type 'A' is assignable to the other. +!!! error TS2352: Type 'undefined[]' cannot be converted to type 'A'. !!! error TS2352: Property 'foo' is missing in type 'undefined[]'. \ No newline at end of file diff --git a/tests/baselines/reference/genericTypeAssertions4.errors.txt b/tests/baselines/reference/genericTypeAssertions4.errors.txt index 055de774b39..401834930f3 100644 --- a/tests/baselines/reference/genericTypeAssertions4.errors.txt +++ b/tests/baselines/reference/genericTypeAssertions4.errors.txt @@ -1,8 +1,8 @@ tests/cases/compiler/genericTypeAssertions4.ts(19,5): error TS2322: Type 'A' is not assignable to type 'T'. tests/cases/compiler/genericTypeAssertions4.ts(20,5): error TS2322: Type 'B' is not assignable to type 'T'. tests/cases/compiler/genericTypeAssertions4.ts(21,5): error TS2322: Type 'C' is not assignable to type 'T'. -tests/cases/compiler/genericTypeAssertions4.ts(23,9): error TS2352: Neither type 'B' nor type 'T' is assignable to the other. -tests/cases/compiler/genericTypeAssertions4.ts(24,9): error TS2352: Neither type 'C' nor type 'T' is assignable to the other. +tests/cases/compiler/genericTypeAssertions4.ts(23,9): error TS2352: Type 'B' cannot be converted to type 'T'. +tests/cases/compiler/genericTypeAssertions4.ts(24,9): error TS2352: Type 'C' cannot be converted to type 'T'. ==== tests/cases/compiler/genericTypeAssertions4.ts (5 errors) ==== @@ -36,8 +36,8 @@ tests/cases/compiler/genericTypeAssertions4.ts(24,9): error TS2352: Neither type y = a; y = b; // error: cannot convert B to T ~~~~ -!!! error TS2352: Neither type 'B' nor type 'T' is assignable to the other. +!!! error TS2352: Type 'B' cannot be converted to type 'T'. y = c; // error: cannot convert C to T ~~~~ -!!! error TS2352: Neither type 'C' nor type 'T' is assignable to the other. +!!! error TS2352: Type 'C' cannot be converted to type 'T'. } \ No newline at end of file diff --git a/tests/baselines/reference/genericTypeAssertions5.errors.txt b/tests/baselines/reference/genericTypeAssertions5.errors.txt index e315a7f122a..45f76073363 100644 --- a/tests/baselines/reference/genericTypeAssertions5.errors.txt +++ b/tests/baselines/reference/genericTypeAssertions5.errors.txt @@ -1,8 +1,8 @@ tests/cases/compiler/genericTypeAssertions5.ts(19,5): error TS2322: Type 'A' is not assignable to type 'T'. tests/cases/compiler/genericTypeAssertions5.ts(20,5): error TS2322: Type 'B' is not assignable to type 'T'. tests/cases/compiler/genericTypeAssertions5.ts(21,5): error TS2322: Type 'C' is not assignable to type 'T'. -tests/cases/compiler/genericTypeAssertions5.ts(23,9): error TS2352: Neither type 'B' nor type 'T' is assignable to the other. -tests/cases/compiler/genericTypeAssertions5.ts(24,9): error TS2352: Neither type 'C' nor type 'T' is assignable to the other. +tests/cases/compiler/genericTypeAssertions5.ts(23,9): error TS2352: Type 'B' cannot be converted to type 'T'. +tests/cases/compiler/genericTypeAssertions5.ts(24,9): error TS2352: Type 'C' cannot be converted to type 'T'. ==== tests/cases/compiler/genericTypeAssertions5.ts (5 errors) ==== @@ -36,8 +36,8 @@ tests/cases/compiler/genericTypeAssertions5.ts(24,9): error TS2352: Neither type y = a; y = b; // error: cannot convert B to T ~~~~ -!!! error TS2352: Neither type 'B' nor type 'T' is assignable to the other. +!!! error TS2352: Type 'B' cannot be converted to type 'T'. y = c; // error: cannot convert C to T ~~~~ -!!! error TS2352: Neither type 'C' nor type 'T' is assignable to the other. +!!! error TS2352: Type 'C' cannot be converted to type 'T'. } \ No newline at end of file diff --git a/tests/baselines/reference/genericTypeAssertions6.errors.txt b/tests/baselines/reference/genericTypeAssertions6.errors.txt index 29ca99ecb1a..1bda683b88a 100644 --- a/tests/baselines/reference/genericTypeAssertions6.errors.txt +++ b/tests/baselines/reference/genericTypeAssertions6.errors.txt @@ -1,7 +1,7 @@ -tests/cases/compiler/genericTypeAssertions6.ts(8,13): error TS2352: Neither type 'U' nor type 'T' is assignable to the other. -tests/cases/compiler/genericTypeAssertions6.ts(9,13): error TS2352: Neither type 'T' nor type 'U' is assignable to the other. -tests/cases/compiler/genericTypeAssertions6.ts(19,17): error TS2352: Neither type 'U' nor type 'T' is assignable to the other. - Type 'Date' is not assignable to type 'T'. +tests/cases/compiler/genericTypeAssertions6.ts(8,13): error TS2352: Type 'U' cannot be converted to type 'T'. +tests/cases/compiler/genericTypeAssertions6.ts(9,13): error TS2352: Type 'T' cannot be converted to type 'U'. +tests/cases/compiler/genericTypeAssertions6.ts(19,17): error TS2352: Type 'U' cannot be converted to type 'T'. + Type 'Date' is not comparable to type 'T'. ==== tests/cases/compiler/genericTypeAssertions6.ts (3 errors) ==== @@ -14,10 +14,10 @@ tests/cases/compiler/genericTypeAssertions6.ts(19,17): error TS2352: Neither typ f(x: T, y: U) { x = y; ~~~~ -!!! error TS2352: Neither type 'U' nor type 'T' is assignable to the other. +!!! error TS2352: Type 'U' cannot be converted to type 'T'. y = x; ~~~~ -!!! error TS2352: Neither type 'T' nor type 'U' is assignable to the other. +!!! error TS2352: Type 'T' cannot be converted to type 'U'. } } @@ -29,8 +29,8 @@ tests/cases/compiler/genericTypeAssertions6.ts(19,17): error TS2352: Neither typ var d = new Date(); var e = new Date(); ~~~~~~~~~~~~~~~~ -!!! error TS2352: Neither type 'U' nor type 'T' is assignable to the other. -!!! error TS2352: Type 'Date' is not assignable to type 'T'. +!!! error TS2352: Type 'U' cannot be converted to type 'T'. +!!! error TS2352: Type 'Date' is not comparable to type 'T'. } } diff --git a/tests/baselines/reference/genericTypeParameterEquivalence2.types b/tests/baselines/reference/genericTypeParameterEquivalence2.types index 3b2c533543d..44e495088bc 100644 --- a/tests/baselines/reference/genericTypeParameterEquivalence2.types +++ b/tests/baselines/reference/genericTypeParameterEquivalence2.types @@ -27,9 +27,9 @@ function compose(f: (b: B) => C, g: (a:A) => B): (a:A) => C { >f(g.apply(null, a)) : C >f : (b: B) => C >g.apply(null, a) : any ->g.apply : (thisArg: any, argArray?: any) => any +>g.apply : (this: Function, thisArg: any, argArray?: any) => any >g : (a: A) => B ->apply : (thisArg: any, argArray?: any) => any +>apply : (this: Function, thisArg: any, argArray?: any) => any >null : null >a : A diff --git a/tests/baselines/reference/genericTypeWithCallableMembers.symbols b/tests/baselines/reference/genericTypeWithCallableMembers.symbols index f162ddf64cc..810f67316d4 100644 --- a/tests/baselines/reference/genericTypeWithCallableMembers.symbols +++ b/tests/baselines/reference/genericTypeWithCallableMembers.symbols @@ -12,25 +12,25 @@ class C { >Constructable : Symbol(Constructable, Decl(genericTypeWithCallableMembers.ts, 0, 0)) constructor(public data: T, public data2: Constructable) { } ->data : Symbol(data, Decl(genericTypeWithCallableMembers.ts, 5, 16)) +>data : Symbol(C.data, Decl(genericTypeWithCallableMembers.ts, 5, 16)) >T : Symbol(T, Decl(genericTypeWithCallableMembers.ts, 4, 8)) ->data2 : Symbol(data2, Decl(genericTypeWithCallableMembers.ts, 5, 31)) +>data2 : Symbol(C.data2, Decl(genericTypeWithCallableMembers.ts, 5, 31)) >Constructable : Symbol(Constructable, Decl(genericTypeWithCallableMembers.ts, 0, 0)) create() { ->create : Symbol(create, Decl(genericTypeWithCallableMembers.ts, 5, 64)) +>create : Symbol(C.create, Decl(genericTypeWithCallableMembers.ts, 5, 64)) var x = new this.data(); // no error >x : Symbol(x, Decl(genericTypeWithCallableMembers.ts, 7, 11)) ->this.data : Symbol(data, Decl(genericTypeWithCallableMembers.ts, 5, 16)) +>this.data : Symbol(C.data, Decl(genericTypeWithCallableMembers.ts, 5, 16)) >this : Symbol(C, Decl(genericTypeWithCallableMembers.ts, 2, 1)) ->data : Symbol(data, Decl(genericTypeWithCallableMembers.ts, 5, 16)) +>data : Symbol(C.data, Decl(genericTypeWithCallableMembers.ts, 5, 16)) var x2 = new this.data2(); // was error, shouldn't be >x2 : Symbol(x2, Decl(genericTypeWithCallableMembers.ts, 8, 11)) ->this.data2 : Symbol(data2, Decl(genericTypeWithCallableMembers.ts, 5, 31)) +>this.data2 : Symbol(C.data2, Decl(genericTypeWithCallableMembers.ts, 5, 31)) >this : Symbol(C, Decl(genericTypeWithCallableMembers.ts, 2, 1)) ->data2 : Symbol(data2, Decl(genericTypeWithCallableMembers.ts, 5, 31)) +>data2 : Symbol(C.data2, Decl(genericTypeWithCallableMembers.ts, 5, 31)) } } diff --git a/tests/baselines/reference/genericTypeWithMultipleBases1.symbols b/tests/baselines/reference/genericTypeWithMultipleBases1.symbols index f38f47e9038..87a6e9a75ca 100644 --- a/tests/baselines/reference/genericTypeWithMultipleBases1.symbols +++ b/tests/baselines/reference/genericTypeWithMultipleBases1.symbols @@ -3,14 +3,14 @@ export interface I1 { >I1 : Symbol(I1, Decl(genericTypeWithMultipleBases1.ts, 0, 0)) m1: () => void; ->m1 : Symbol(m1, Decl(genericTypeWithMultipleBases1.ts, 0, 21)) +>m1 : Symbol(I1.m1, Decl(genericTypeWithMultipleBases1.ts, 0, 21)) } export interface I2 { >I2 : Symbol(I2, Decl(genericTypeWithMultipleBases1.ts, 2, 1)) m2: () => void; ->m2 : Symbol(m2, Decl(genericTypeWithMultipleBases1.ts, 4, 21)) +>m2 : Symbol(I2.m2, Decl(genericTypeWithMultipleBases1.ts, 4, 21)) } export interface I3 extends I1, I2 { @@ -21,7 +21,7 @@ export interface I3 extends I1, I2 { //export interface I3 extends I2, I1 { p1: T; ->p1 : Symbol(p1, Decl(genericTypeWithMultipleBases1.ts, 8, 39)) +>p1 : Symbol(I3.p1, Decl(genericTypeWithMultipleBases1.ts, 8, 39)) >T : Symbol(T, Decl(genericTypeWithMultipleBases1.ts, 8, 20)) } diff --git a/tests/baselines/reference/genericTypeWithMultipleBases2.symbols b/tests/baselines/reference/genericTypeWithMultipleBases2.symbols index e5b97ce73fa..c15e1820f4b 100644 --- a/tests/baselines/reference/genericTypeWithMultipleBases2.symbols +++ b/tests/baselines/reference/genericTypeWithMultipleBases2.symbols @@ -3,14 +3,14 @@ export interface I1 { >I1 : Symbol(I1, Decl(genericTypeWithMultipleBases2.ts, 0, 0)) m1: () => void; ->m1 : Symbol(m1, Decl(genericTypeWithMultipleBases2.ts, 0, 21)) +>m1 : Symbol(I1.m1, Decl(genericTypeWithMultipleBases2.ts, 0, 21)) } export interface I2 { >I2 : Symbol(I2, Decl(genericTypeWithMultipleBases2.ts, 2, 1)) m2: () => void; ->m2 : Symbol(m2, Decl(genericTypeWithMultipleBases2.ts, 4, 21)) +>m2 : Symbol(I2.m2, Decl(genericTypeWithMultipleBases2.ts, 4, 21)) } export interface I3 extends I2, I1 { @@ -20,7 +20,7 @@ export interface I3 extends I2, I1 { >I1 : Symbol(I1, Decl(genericTypeWithMultipleBases2.ts, 0, 0)) p1: T; ->p1 : Symbol(p1, Decl(genericTypeWithMultipleBases2.ts, 8, 39)) +>p1 : Symbol(I3.p1, Decl(genericTypeWithMultipleBases2.ts, 8, 39)) >T : Symbol(T, Decl(genericTypeWithMultipleBases2.ts, 8, 20)) } diff --git a/tests/baselines/reference/genericTypeWithMultipleBases3.symbols b/tests/baselines/reference/genericTypeWithMultipleBases3.symbols index 024ddcdf374..d645c829a35 100644 --- a/tests/baselines/reference/genericTypeWithMultipleBases3.symbols +++ b/tests/baselines/reference/genericTypeWithMultipleBases3.symbols @@ -4,7 +4,7 @@ interface IA { >T : Symbol(T, Decl(genericTypeWithMultipleBases3.ts, 0, 13)) foo(x: T): T; ->foo : Symbol(foo, Decl(genericTypeWithMultipleBases3.ts, 0, 17)) +>foo : Symbol(IA.foo, Decl(genericTypeWithMultipleBases3.ts, 0, 17)) >x : Symbol(x, Decl(genericTypeWithMultipleBases3.ts, 2, 4)) >T : Symbol(T, Decl(genericTypeWithMultipleBases3.ts, 0, 13)) >T : Symbol(T, Decl(genericTypeWithMultipleBases3.ts, 0, 13)) @@ -16,7 +16,7 @@ interface IB { >T : Symbol(T, Decl(genericTypeWithMultipleBases3.ts, 6, 13)) bar(x: T): T; ->bar : Symbol(bar, Decl(genericTypeWithMultipleBases3.ts, 6, 17)) +>bar : Symbol(IB.bar, Decl(genericTypeWithMultipleBases3.ts, 6, 17)) >x : Symbol(x, Decl(genericTypeWithMultipleBases3.ts, 8, 4)) >T : Symbol(T, Decl(genericTypeWithMultipleBases3.ts, 6, 13)) >T : Symbol(T, Decl(genericTypeWithMultipleBases3.ts, 6, 13)) diff --git a/tests/baselines/reference/genericTypeWithNonGenericBaseMisMatch.errors.txt b/tests/baselines/reference/genericTypeWithNonGenericBaseMisMatch.errors.txt index 0fe15afcf33..3ec6fa5e9f6 100644 --- a/tests/baselines/reference/genericTypeWithNonGenericBaseMisMatch.errors.txt +++ b/tests/baselines/reference/genericTypeWithNonGenericBaseMisMatch.errors.txt @@ -2,17 +2,14 @@ tests/cases/compiler/genericTypeWithNonGenericBaseMisMatch.ts(4,7): error TS2420 Types of property 'f' are incompatible. Type '(a: T) => void' is not assignable to type '(a: { a: number; }) => void'. Types of parameters 'a' and 'a' are incompatible. - Type 'T' is not assignable to type '{ a: number; }'. - Type '{ a: string; }' is not assignable to type '{ a: number; }'. - Types of property 'a' are incompatible. - Type 'string' is not assignable to type 'number'. + Type '{ a: number; }' is not assignable to type 'T'. tests/cases/compiler/genericTypeWithNonGenericBaseMisMatch.ts(8,5): error TS2322: Type 'X<{ a: string; }>' is not assignable to type 'I'. Types of property 'f' are incompatible. Type '(a: { a: string; }) => void' is not assignable to type '(a: { a: number; }) => void'. Types of parameters 'a' and 'a' are incompatible. - Type '{ a: string; }' is not assignable to type '{ a: number; }'. + Type '{ a: number; }' is not assignable to type '{ a: string; }'. Types of property 'a' are incompatible. - Type 'string' is not assignable to type 'number'. + Type 'number' is not assignable to type 'string'. ==== tests/cases/compiler/genericTypeWithNonGenericBaseMisMatch.ts (2 errors) ==== @@ -25,10 +22,7 @@ tests/cases/compiler/genericTypeWithNonGenericBaseMisMatch.ts(8,5): error TS2322 !!! error TS2420: Types of property 'f' are incompatible. !!! error TS2420: Type '(a: T) => void' is not assignable to type '(a: { a: number; }) => void'. !!! error TS2420: Types of parameters 'a' and 'a' are incompatible. -!!! error TS2420: Type 'T' is not assignable to type '{ a: number; }'. -!!! error TS2420: Type '{ a: string; }' is not assignable to type '{ a: number; }'. -!!! error TS2420: Types of property 'a' are incompatible. -!!! error TS2420: Type 'string' is not assignable to type 'number'. +!!! error TS2420: Type '{ a: number; }' is not assignable to type 'T'. f(a: T): void { } } var x = new X<{ a: string }>(); @@ -38,7 +32,7 @@ tests/cases/compiler/genericTypeWithNonGenericBaseMisMatch.ts(8,5): error TS2322 !!! error TS2322: Types of property 'f' are incompatible. !!! error TS2322: Type '(a: { a: string; }) => void' is not assignable to type '(a: { a: number; }) => void'. !!! error TS2322: Types of parameters 'a' and 'a' are incompatible. -!!! error TS2322: Type '{ a: string; }' is not assignable to type '{ a: number; }'. +!!! error TS2322: Type '{ a: number; }' is not assignable to type '{ a: string; }'. !!! error TS2322: Types of property 'a' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Type 'number' is not assignable to type 'string'. \ No newline at end of file diff --git a/tests/baselines/reference/genericWithCallSignatureReturningSpecialization.symbols b/tests/baselines/reference/genericWithCallSignatureReturningSpecialization.symbols index 02e73f4819e..3de80ba3f1c 100644 --- a/tests/baselines/reference/genericWithCallSignatureReturningSpecialization.symbols +++ b/tests/baselines/reference/genericWithCallSignatureReturningSpecialization.symbols @@ -4,7 +4,7 @@ interface B { >T : Symbol(T, Decl(genericWithCallSignatureReturningSpecialization.ts, 0, 12)) f(): B; ->f : Symbol(f, Decl(genericWithCallSignatureReturningSpecialization.ts, 0, 16)) +>f : Symbol(B.f, Decl(genericWithCallSignatureReturningSpecialization.ts, 0, 16)) >B : Symbol(B, Decl(genericWithCallSignatureReturningSpecialization.ts, 0, 0)) (value: T): void; diff --git a/tests/baselines/reference/genericWithCallSignatures1.symbols b/tests/baselines/reference/genericWithCallSignatures1.symbols index d791308b46e..de20c7c14aa 100644 --- a/tests/baselines/reference/genericWithCallSignatures1.symbols +++ b/tests/baselines/reference/genericWithCallSignatures1.symbols @@ -4,17 +4,17 @@ class MyClass { >MyClass : Symbol(MyClass, Decl(genericWithCallSignatures_1.ts, 0, 0)) public callableThing: CallableExtention; ->callableThing : Symbol(callableThing, Decl(genericWithCallSignatures_1.ts, 1, 15)) +>callableThing : Symbol(MyClass.callableThing, Decl(genericWithCallSignatures_1.ts, 1, 15)) >CallableExtention : Symbol(CallableExtention, Decl(genericWithCallSignatures_0.ts, 3, 1)) public myMethod() { ->myMethod : Symbol(myMethod, Decl(genericWithCallSignatures_1.ts, 2, 52)) +>myMethod : Symbol(MyClass.myMethod, Decl(genericWithCallSignatures_1.ts, 2, 52)) var x = this.callableThing(); >x : Symbol(x, Decl(genericWithCallSignatures_1.ts, 5, 11)) ->this.callableThing : Symbol(callableThing, Decl(genericWithCallSignatures_1.ts, 1, 15)) +>this.callableThing : Symbol(MyClass.callableThing, Decl(genericWithCallSignatures_1.ts, 1, 15)) >this : Symbol(MyClass, Decl(genericWithCallSignatures_1.ts, 0, 0)) ->callableThing : Symbol(callableThing, Decl(genericWithCallSignatures_1.ts, 1, 15)) +>callableThing : Symbol(MyClass.callableThing, Decl(genericWithCallSignatures_1.ts, 1, 15)) } } === tests/cases/compiler/genericWithCallSignatures_0.ts === diff --git a/tests/baselines/reference/genericWithIndexerOfTypeParameterType1.symbols b/tests/baselines/reference/genericWithIndexerOfTypeParameterType1.symbols index 26918e9ebfb..ac7abff8d52 100644 --- a/tests/baselines/reference/genericWithIndexerOfTypeParameterType1.symbols +++ b/tests/baselines/reference/genericWithIndexerOfTypeParameterType1.symbols @@ -4,17 +4,17 @@ class LazyArray { >T : Symbol(T, Decl(genericWithIndexerOfTypeParameterType1.ts, 0, 16)) private objects = <{ [objectId: string]: T; }>{}; ->objects : Symbol(objects, Decl(genericWithIndexerOfTypeParameterType1.ts, 0, 20)) +>objects : Symbol(LazyArray.objects, Decl(genericWithIndexerOfTypeParameterType1.ts, 0, 20)) >objectId : Symbol(objectId, Decl(genericWithIndexerOfTypeParameterType1.ts, 1, 26)) >T : Symbol(T, Decl(genericWithIndexerOfTypeParameterType1.ts, 0, 16)) array() { ->array : Symbol(array, Decl(genericWithIndexerOfTypeParameterType1.ts, 1, 53)) +>array : Symbol(LazyArray.array, Decl(genericWithIndexerOfTypeParameterType1.ts, 1, 53)) return this.objects; ->this.objects : Symbol(objects, Decl(genericWithIndexerOfTypeParameterType1.ts, 0, 20)) +>this.objects : Symbol(LazyArray.objects, Decl(genericWithIndexerOfTypeParameterType1.ts, 0, 20)) >this : Symbol(LazyArray, Decl(genericWithIndexerOfTypeParameterType1.ts, 0, 0)) ->objects : Symbol(objects, Decl(genericWithIndexerOfTypeParameterType1.ts, 0, 20)) +>objects : Symbol(LazyArray.objects, Decl(genericWithIndexerOfTypeParameterType1.ts, 0, 20)) } } var lazyArray = new LazyArray(); diff --git a/tests/baselines/reference/genericWithIndexerOfTypeParameterType2.symbols b/tests/baselines/reference/genericWithIndexerOfTypeParameterType2.symbols index d09abef57be..d029796b2b1 100644 --- a/tests/baselines/reference/genericWithIndexerOfTypeParameterType2.symbols +++ b/tests/baselines/reference/genericWithIndexerOfTypeParameterType2.symbols @@ -5,7 +5,7 @@ export class Collection { >CollectionItem : Symbol(CollectionItem, Decl(genericWithIndexerOfTypeParameterType2.ts, 6, 1)) _itemsByKey: { [key: string]: TItem; }; ->_itemsByKey : Symbol(_itemsByKey, Decl(genericWithIndexerOfTypeParameterType2.ts, 0, 55)) +>_itemsByKey : Symbol(Collection._itemsByKey, Decl(genericWithIndexerOfTypeParameterType2.ts, 0, 55)) >key : Symbol(key, Decl(genericWithIndexerOfTypeParameterType2.ts, 1, 20)) >TItem : Symbol(TItem, Decl(genericWithIndexerOfTypeParameterType2.ts, 0, 24)) } @@ -16,7 +16,7 @@ export class List extends Collection{ >ListItem : Symbol(ListItem, Decl(genericWithIndexerOfTypeParameterType2.ts, 8, 30)) Bar() {} ->Bar : Symbol(Bar, Decl(genericWithIndexerOfTypeParameterType2.ts, 4, 47)) +>Bar : Symbol(List.Bar, Decl(genericWithIndexerOfTypeParameterType2.ts, 4, 47)) } export class CollectionItem {} @@ -27,6 +27,6 @@ export class ListItem extends CollectionItem { >CollectionItem : Symbol(CollectionItem, Decl(genericWithIndexerOfTypeParameterType2.ts, 6, 1)) __isNew: boolean; ->__isNew : Symbol(__isNew, Decl(genericWithIndexerOfTypeParameterType2.ts, 10, 46)) +>__isNew : Symbol(ListItem.__isNew, Decl(genericWithIndexerOfTypeParameterType2.ts, 10, 46)) } diff --git a/tests/baselines/reference/generics0.symbols b/tests/baselines/reference/generics0.symbols index 801b56fe718..9d23b667790 100644 --- a/tests/baselines/reference/generics0.symbols +++ b/tests/baselines/reference/generics0.symbols @@ -4,7 +4,7 @@ interface G { >T : Symbol(T, Decl(generics0.ts, 0, 12)) x: T; ->x : Symbol(x, Decl(generics0.ts, 0, 16)) +>x : Symbol(G.x, Decl(generics0.ts, 0, 16)) >T : Symbol(T, Decl(generics0.ts, 0, 12)) } diff --git a/tests/baselines/reference/generics1NoError.symbols b/tests/baselines/reference/generics1NoError.symbols index fcf820f79c4..12d6bac9459 100644 --- a/tests/baselines/reference/generics1NoError.symbols +++ b/tests/baselines/reference/generics1NoError.symbols @@ -1,17 +1,17 @@ === tests/cases/compiler/generics1NoError.ts === interface A { a: string; } >A : Symbol(A, Decl(generics1NoError.ts, 0, 0)) ->a : Symbol(a, Decl(generics1NoError.ts, 0, 13)) +>a : Symbol(A.a, Decl(generics1NoError.ts, 0, 13)) interface B extends A { b: string; } >B : Symbol(B, Decl(generics1NoError.ts, 0, 26)) >A : Symbol(A, Decl(generics1NoError.ts, 0, 0)) ->b : Symbol(b, Decl(generics1NoError.ts, 1, 23)) +>b : Symbol(B.b, Decl(generics1NoError.ts, 1, 23)) interface C extends B { c: string; } >C : Symbol(C, Decl(generics1NoError.ts, 1, 36)) >B : Symbol(B, Decl(generics1NoError.ts, 0, 26)) ->c : Symbol(c, Decl(generics1NoError.ts, 2, 23)) +>c : Symbol(C.c, Decl(generics1NoError.ts, 2, 23)) interface G { >G : Symbol(G, Decl(generics1NoError.ts, 2, 36)) @@ -20,11 +20,11 @@ interface G { >B : Symbol(B, Decl(generics1NoError.ts, 0, 26)) x: T; ->x : Symbol(x, Decl(generics1NoError.ts, 3, 29)) +>x : Symbol(G.x, Decl(generics1NoError.ts, 3, 29)) >T : Symbol(T, Decl(generics1NoError.ts, 3, 12)) y: U; ->y : Symbol(y, Decl(generics1NoError.ts, 4, 9)) +>y : Symbol(G.y, Decl(generics1NoError.ts, 4, 9)) >U : Symbol(U, Decl(generics1NoError.ts, 3, 14)) } var v1: G; // Ok diff --git a/tests/baselines/reference/generics2NoError.symbols b/tests/baselines/reference/generics2NoError.symbols index 165eb435a50..6c7f00bdcbe 100644 --- a/tests/baselines/reference/generics2NoError.symbols +++ b/tests/baselines/reference/generics2NoError.symbols @@ -1,17 +1,17 @@ === tests/cases/compiler/generics2NoError.ts === interface A { a: string; } >A : Symbol(A, Decl(generics2NoError.ts, 0, 0)) ->a : Symbol(a, Decl(generics2NoError.ts, 0, 13)) +>a : Symbol(A.a, Decl(generics2NoError.ts, 0, 13)) interface B extends A { b: string; } >B : Symbol(B, Decl(generics2NoError.ts, 0, 26)) >A : Symbol(A, Decl(generics2NoError.ts, 0, 0)) ->b : Symbol(b, Decl(generics2NoError.ts, 1, 23)) +>b : Symbol(B.b, Decl(generics2NoError.ts, 1, 23)) interface C extends B { c: string; } >C : Symbol(C, Decl(generics2NoError.ts, 1, 36)) >B : Symbol(B, Decl(generics2NoError.ts, 0, 26)) ->c : Symbol(c, Decl(generics2NoError.ts, 2, 23)) +>c : Symbol(C.c, Decl(generics2NoError.ts, 2, 23)) interface G { >G : Symbol(G, Decl(generics2NoError.ts, 2, 36)) @@ -20,11 +20,11 @@ interface G { >B : Symbol(B, Decl(generics2NoError.ts, 0, 26)) x: T; ->x : Symbol(x, Decl(generics2NoError.ts, 3, 29)) +>x : Symbol(G.x, Decl(generics2NoError.ts, 3, 29)) >T : Symbol(T, Decl(generics2NoError.ts, 3, 12)) y: U; ->y : Symbol(y, Decl(generics2NoError.ts, 4, 9)) +>y : Symbol(G.y, Decl(generics2NoError.ts, 4, 9)) >U : Symbol(U, Decl(generics2NoError.ts, 3, 14)) } diff --git a/tests/baselines/reference/generics3.symbols b/tests/baselines/reference/generics3.symbols index be9c583ff5f..c5e882b221a 100644 --- a/tests/baselines/reference/generics3.symbols +++ b/tests/baselines/reference/generics3.symbols @@ -2,16 +2,16 @@ class C { private x: T; } >C : Symbol(C, Decl(generics3.ts, 0, 0)) >T : Symbol(T, Decl(generics3.ts, 0, 8)) ->x : Symbol(x, Decl(generics3.ts, 0, 12)) +>x : Symbol(C.x, Decl(generics3.ts, 0, 12)) >T : Symbol(T, Decl(generics3.ts, 0, 8)) interface X { f(): string; } >X : Symbol(X, Decl(generics3.ts, 0, 28)) ->f : Symbol(f, Decl(generics3.ts, 1, 13)) +>f : Symbol(X.f, Decl(generics3.ts, 1, 13)) interface Y { f(): string; } >Y : Symbol(Y, Decl(generics3.ts, 1, 28)) ->f : Symbol(f, Decl(generics3.ts, 2, 13)) +>f : Symbol(Y.f, Decl(generics3.ts, 2, 13)) var a: C; >a : Symbol(a, Decl(generics3.ts, 3, 3)) diff --git a/tests/baselines/reference/generics4NoError.symbols b/tests/baselines/reference/generics4NoError.symbols index 9ea547d4db9..dd7eca8d2b4 100644 --- a/tests/baselines/reference/generics4NoError.symbols +++ b/tests/baselines/reference/generics4NoError.symbols @@ -2,16 +2,16 @@ class C { private x: T; } >C : Symbol(C, Decl(generics4NoError.ts, 0, 0)) >T : Symbol(T, Decl(generics4NoError.ts, 0, 8)) ->x : Symbol(x, Decl(generics4NoError.ts, 0, 12)) +>x : Symbol(C.x, Decl(generics4NoError.ts, 0, 12)) >T : Symbol(T, Decl(generics4NoError.ts, 0, 8)) interface X { f(): string; } >X : Symbol(X, Decl(generics4NoError.ts, 0, 28)) ->f : Symbol(f, Decl(generics4NoError.ts, 1, 13)) +>f : Symbol(X.f, Decl(generics4NoError.ts, 1, 13)) interface Y { f(): boolean; } >Y : Symbol(Y, Decl(generics4NoError.ts, 1, 28)) ->f : Symbol(f, Decl(generics4NoError.ts, 2, 13)) +>f : Symbol(Y.f, Decl(generics4NoError.ts, 2, 13)) var a: C; >a : Symbol(a, Decl(generics4NoError.ts, 3, 3)) diff --git a/tests/baselines/reference/heterogeneousArrayLiterals.symbols b/tests/baselines/reference/heterogeneousArrayLiterals.symbols index c1d98b5873a..e74a037703b 100644 --- a/tests/baselines/reference/heterogeneousArrayLiterals.symbols +++ b/tests/baselines/reference/heterogeneousArrayLiterals.symbols @@ -52,17 +52,17 @@ var n = [[() => 1], [() => '']]; // {}[] class Base { foo: string; } >Base : Symbol(Base, Decl(heterogeneousArrayLiterals.ts, 18, 32)) ->foo : Symbol(foo, Decl(heterogeneousArrayLiterals.ts, 20, 12)) +>foo : Symbol(Base.foo, Decl(heterogeneousArrayLiterals.ts, 20, 12)) class Derived extends Base { bar: string; } >Derived : Symbol(Derived, Decl(heterogeneousArrayLiterals.ts, 20, 27), Decl(heterogeneousArrayLiterals.ts, 25, 23)) >Base : Symbol(Base, Decl(heterogeneousArrayLiterals.ts, 18, 32)) ->bar : Symbol(bar, Decl(heterogeneousArrayLiterals.ts, 21, 28)) +>bar : Symbol(Derived.bar, Decl(heterogeneousArrayLiterals.ts, 21, 28)) class Derived2 extends Base { baz: string; } >Derived2 : Symbol(Derived2, Decl(heterogeneousArrayLiterals.ts, 21, 43)) >Base : Symbol(Base, Decl(heterogeneousArrayLiterals.ts, 18, 32)) ->baz : Symbol(baz, Decl(heterogeneousArrayLiterals.ts, 22, 29)) +>baz : Symbol(Derived2.baz, Decl(heterogeneousArrayLiterals.ts, 22, 29)) var base: Base; >base : Symbol(base, Decl(heterogeneousArrayLiterals.ts, 23, 3)) diff --git a/tests/baselines/reference/icomparable.symbols b/tests/baselines/reference/icomparable.symbols index 03eac6b5bec..5d3621ce178 100644 --- a/tests/baselines/reference/icomparable.symbols +++ b/tests/baselines/reference/icomparable.symbols @@ -4,7 +4,7 @@ >T : Symbol(T, Decl(icomparable.ts, 0, 26)) compareTo(other: T); ->compareTo : Symbol(compareTo, Decl(icomparable.ts, 0, 30)) +>compareTo : Symbol(IComparable.compareTo, Decl(icomparable.ts, 0, 30)) >other : Symbol(other, Decl(icomparable.ts, 1, 17)) >T : Symbol(T, Decl(icomparable.ts, 0, 26)) } diff --git a/tests/baselines/reference/ifDoWhileStatements.symbols b/tests/baselines/reference/ifDoWhileStatements.symbols index 80c8fc7f1d8..b0ec471aa48 100644 --- a/tests/baselines/reference/ifDoWhileStatements.symbols +++ b/tests/baselines/reference/ifDoWhileStatements.symbols @@ -4,7 +4,7 @@ interface I { >I : Symbol(I, Decl(ifDoWhileStatements.ts, 0, 0)) id: number; ->id : Symbol(id, Decl(ifDoWhileStatements.ts, 1, 13)) +>id : Symbol(I.id, Decl(ifDoWhileStatements.ts, 1, 13)) } class C implements I { @@ -12,10 +12,10 @@ class C implements I { >I : Symbol(I, Decl(ifDoWhileStatements.ts, 0, 0)) id: number; ->id : Symbol(id, Decl(ifDoWhileStatements.ts, 5, 22)) +>id : Symbol(C.id, Decl(ifDoWhileStatements.ts, 5, 22)) name: string; ->name : Symbol(name, Decl(ifDoWhileStatements.ts, 6, 15)) +>name : Symbol(C.name, Decl(ifDoWhileStatements.ts, 6, 15)) } class C2 extends C { @@ -23,7 +23,7 @@ class C2 extends C { >C : Symbol(C, Decl(ifDoWhileStatements.ts, 3, 1)) valid: boolean; ->valid : Symbol(valid, Decl(ifDoWhileStatements.ts, 10, 20)) +>valid : Symbol(C2.valid, Decl(ifDoWhileStatements.ts, 10, 20)) } class D{ @@ -31,16 +31,16 @@ class D{ >T : Symbol(T, Decl(ifDoWhileStatements.ts, 14, 8)) source: T; ->source : Symbol(source, Decl(ifDoWhileStatements.ts, 14, 11)) +>source : Symbol(D.source, Decl(ifDoWhileStatements.ts, 14, 11)) >T : Symbol(T, Decl(ifDoWhileStatements.ts, 14, 8)) recurse: D; ->recurse : Symbol(recurse, Decl(ifDoWhileStatements.ts, 15, 14)) +>recurse : Symbol(D.recurse, Decl(ifDoWhileStatements.ts, 15, 14)) >D : Symbol(D, Decl(ifDoWhileStatements.ts, 12, 1)) >T : Symbol(T, Decl(ifDoWhileStatements.ts, 14, 8)) wrapped: D> ->wrapped : Symbol(wrapped, Decl(ifDoWhileStatements.ts, 16, 18)) +>wrapped : Symbol(D.wrapped, Decl(ifDoWhileStatements.ts, 16, 18)) >D : Symbol(D, Decl(ifDoWhileStatements.ts, 12, 1)) >D : Symbol(D, Decl(ifDoWhileStatements.ts, 12, 1)) >T : Symbol(T, Decl(ifDoWhileStatements.ts, 14, 8)) @@ -62,7 +62,7 @@ module M { >A : Symbol(A, Decl(ifDoWhileStatements.ts, 23, 10)) name: string; ->name : Symbol(name, Decl(ifDoWhileStatements.ts, 24, 20)) +>name : Symbol(A.name, Decl(ifDoWhileStatements.ts, 24, 20)) } export function F2(x: number): string { return x.toString(); } @@ -80,7 +80,7 @@ module N { >A : Symbol(A, Decl(ifDoWhileStatements.ts, 31, 10)) id: number; ->id : Symbol(id, Decl(ifDoWhileStatements.ts, 32, 20)) +>id : Symbol(A.id, Decl(ifDoWhileStatements.ts, 32, 20)) } export function F2(x: number): string { return x.toString(); } diff --git a/tests/baselines/reference/illegalGenericWrapping1.symbols b/tests/baselines/reference/illegalGenericWrapping1.symbols index f4ab78ceb69..ca197cf341e 100644 --- a/tests/baselines/reference/illegalGenericWrapping1.symbols +++ b/tests/baselines/reference/illegalGenericWrapping1.symbols @@ -4,13 +4,13 @@ interface Sequence { >T : Symbol(T, Decl(illegalGenericWrapping1.ts, 0, 19)) each(iterator: (value: T) => void ): void; ->each : Symbol(each, Decl(illegalGenericWrapping1.ts, 0, 23)) +>each : Symbol(Sequence.each, Decl(illegalGenericWrapping1.ts, 0, 23)) >iterator : Symbol(iterator, Decl(illegalGenericWrapping1.ts, 1, 9)) >value : Symbol(value, Decl(illegalGenericWrapping1.ts, 1, 20)) >T : Symbol(T, Decl(illegalGenericWrapping1.ts, 0, 19)) map(iterator: (value: T) => U): Sequence; ->map : Symbol(map, Decl(illegalGenericWrapping1.ts, 1, 46)) +>map : Symbol(Sequence.map, Decl(illegalGenericWrapping1.ts, 1, 46)) >U : Symbol(U, Decl(illegalGenericWrapping1.ts, 2, 8)) >iterator : Symbol(iterator, Decl(illegalGenericWrapping1.ts, 2, 11)) >value : Symbol(value, Decl(illegalGenericWrapping1.ts, 2, 22)) @@ -20,7 +20,7 @@ interface Sequence { >U : Symbol(U, Decl(illegalGenericWrapping1.ts, 2, 8)) filter(iterator: (value: T) => boolean): Sequence; ->filter : Symbol(filter, Decl(illegalGenericWrapping1.ts, 2, 51)) +>filter : Symbol(Sequence.filter, Decl(illegalGenericWrapping1.ts, 2, 51)) >iterator : Symbol(iterator, Decl(illegalGenericWrapping1.ts, 3, 11)) >value : Symbol(value, Decl(illegalGenericWrapping1.ts, 3, 22)) >T : Symbol(T, Decl(illegalGenericWrapping1.ts, 0, 19)) @@ -28,7 +28,7 @@ interface Sequence { >T : Symbol(T, Decl(illegalGenericWrapping1.ts, 0, 19)) groupBy(keySelector: (value: T) => K): Sequence<{ key: K; items: Sequence; }>; ->groupBy : Symbol(groupBy, Decl(illegalGenericWrapping1.ts, 3, 57)) +>groupBy : Symbol(Sequence.groupBy, Decl(illegalGenericWrapping1.ts, 3, 57)) >K : Symbol(K, Decl(illegalGenericWrapping1.ts, 4, 12)) >keySelector : Symbol(keySelector, Decl(illegalGenericWrapping1.ts, 4, 15)) >value : Symbol(value, Decl(illegalGenericWrapping1.ts, 4, 29)) diff --git a/tests/baselines/reference/implementArrayInterface.symbols b/tests/baselines/reference/implementArrayInterface.symbols index 5a671d41de3..0491f282f75 100644 --- a/tests/baselines/reference/implementArrayInterface.symbols +++ b/tests/baselines/reference/implementArrayInterface.symbols @@ -6,13 +6,13 @@ declare class MyArray implements Array { >T : Symbol(T, Decl(implementArrayInterface.ts, 0, 22)) toString(): string; ->toString : Symbol(toString, Decl(implementArrayInterface.ts, 0, 46)) +>toString : Symbol(MyArray.toString, Decl(implementArrayInterface.ts, 0, 46)) toLocaleString(): string; ->toLocaleString : Symbol(toLocaleString, Decl(implementArrayInterface.ts, 1, 23)) +>toLocaleString : Symbol(MyArray.toLocaleString, Decl(implementArrayInterface.ts, 1, 23)) concat(...items: U[]): T[]; ->concat : Symbol(concat, Decl(implementArrayInterface.ts, 2, 29), Decl(implementArrayInterface.ts, 3, 46)) +>concat : Symbol(MyArray.concat, Decl(implementArrayInterface.ts, 2, 29), Decl(implementArrayInterface.ts, 3, 46)) >U : Symbol(U, Decl(implementArrayInterface.ts, 3, 11)) >T : Symbol(T, Decl(implementArrayInterface.ts, 0, 22)) >items : Symbol(items, Decl(implementArrayInterface.ts, 3, 26)) @@ -20,40 +20,40 @@ declare class MyArray implements Array { >T : Symbol(T, Decl(implementArrayInterface.ts, 0, 22)) concat(...items: T[]): T[]; ->concat : Symbol(concat, Decl(implementArrayInterface.ts, 2, 29), Decl(implementArrayInterface.ts, 3, 46)) +>concat : Symbol(MyArray.concat, Decl(implementArrayInterface.ts, 2, 29), Decl(implementArrayInterface.ts, 3, 46)) >items : Symbol(items, Decl(implementArrayInterface.ts, 4, 11)) >T : Symbol(T, Decl(implementArrayInterface.ts, 0, 22)) >T : Symbol(T, Decl(implementArrayInterface.ts, 0, 22)) join(separator?: string): string; ->join : Symbol(join, Decl(implementArrayInterface.ts, 4, 31)) +>join : Symbol(MyArray.join, Decl(implementArrayInterface.ts, 4, 31)) >separator : Symbol(separator, Decl(implementArrayInterface.ts, 5, 9)) pop(): T; ->pop : Symbol(pop, Decl(implementArrayInterface.ts, 5, 37)) +>pop : Symbol(MyArray.pop, Decl(implementArrayInterface.ts, 5, 37)) >T : Symbol(T, Decl(implementArrayInterface.ts, 0, 22)) push(...items: T[]): number; ->push : Symbol(push, Decl(implementArrayInterface.ts, 6, 13)) +>push : Symbol(MyArray.push, Decl(implementArrayInterface.ts, 6, 13)) >items : Symbol(items, Decl(implementArrayInterface.ts, 7, 9)) >T : Symbol(T, Decl(implementArrayInterface.ts, 0, 22)) reverse(): T[]; ->reverse : Symbol(reverse, Decl(implementArrayInterface.ts, 7, 32)) +>reverse : Symbol(MyArray.reverse, Decl(implementArrayInterface.ts, 7, 32)) >T : Symbol(T, Decl(implementArrayInterface.ts, 0, 22)) shift(): T; ->shift : Symbol(shift, Decl(implementArrayInterface.ts, 8, 19)) +>shift : Symbol(MyArray.shift, Decl(implementArrayInterface.ts, 8, 19)) >T : Symbol(T, Decl(implementArrayInterface.ts, 0, 22)) slice(start?: number, end?: number): T[]; ->slice : Symbol(slice, Decl(implementArrayInterface.ts, 9, 15)) +>slice : Symbol(MyArray.slice, Decl(implementArrayInterface.ts, 9, 15)) >start : Symbol(start, Decl(implementArrayInterface.ts, 10, 10)) >end : Symbol(end, Decl(implementArrayInterface.ts, 10, 25)) >T : Symbol(T, Decl(implementArrayInterface.ts, 0, 22)) sort(compareFn?: (a: T, b: T) => number): T[]; ->sort : Symbol(sort, Decl(implementArrayInterface.ts, 10, 45)) +>sort : Symbol(MyArray.sort, Decl(implementArrayInterface.ts, 10, 45)) >compareFn : Symbol(compareFn, Decl(implementArrayInterface.ts, 11, 9)) >a : Symbol(a, Decl(implementArrayInterface.ts, 11, 22)) >T : Symbol(T, Decl(implementArrayInterface.ts, 0, 22)) @@ -62,12 +62,12 @@ declare class MyArray implements Array { >T : Symbol(T, Decl(implementArrayInterface.ts, 0, 22)) splice(start: number): T[]; ->splice : Symbol(splice, Decl(implementArrayInterface.ts, 11, 50), Decl(implementArrayInterface.ts, 12, 31)) +>splice : Symbol(MyArray.splice, Decl(implementArrayInterface.ts, 11, 50), Decl(implementArrayInterface.ts, 12, 31)) >start : Symbol(start, Decl(implementArrayInterface.ts, 12, 11)) >T : Symbol(T, Decl(implementArrayInterface.ts, 0, 22)) splice(start: number, deleteCount: number, ...items: T[]): T[]; ->splice : Symbol(splice, Decl(implementArrayInterface.ts, 11, 50), Decl(implementArrayInterface.ts, 12, 31)) +>splice : Symbol(MyArray.splice, Decl(implementArrayInterface.ts, 11, 50), Decl(implementArrayInterface.ts, 12, 31)) >start : Symbol(start, Decl(implementArrayInterface.ts, 13, 11)) >deleteCount : Symbol(deleteCount, Decl(implementArrayInterface.ts, 13, 25)) >items : Symbol(items, Decl(implementArrayInterface.ts, 13, 46)) @@ -75,24 +75,24 @@ declare class MyArray implements Array { >T : Symbol(T, Decl(implementArrayInterface.ts, 0, 22)) unshift(...items: T[]): number; ->unshift : Symbol(unshift, Decl(implementArrayInterface.ts, 13, 67)) +>unshift : Symbol(MyArray.unshift, Decl(implementArrayInterface.ts, 13, 67)) >items : Symbol(items, Decl(implementArrayInterface.ts, 14, 12)) >T : Symbol(T, Decl(implementArrayInterface.ts, 0, 22)) indexOf(searchElement: T, fromIndex?: number): number; ->indexOf : Symbol(indexOf, Decl(implementArrayInterface.ts, 14, 35)) +>indexOf : Symbol(MyArray.indexOf, Decl(implementArrayInterface.ts, 14, 35)) >searchElement : Symbol(searchElement, Decl(implementArrayInterface.ts, 16, 12)) >T : Symbol(T, Decl(implementArrayInterface.ts, 0, 22)) >fromIndex : Symbol(fromIndex, Decl(implementArrayInterface.ts, 16, 29)) lastIndexOf(searchElement: T, fromIndex?: number): number; ->lastIndexOf : Symbol(lastIndexOf, Decl(implementArrayInterface.ts, 16, 58)) +>lastIndexOf : Symbol(MyArray.lastIndexOf, Decl(implementArrayInterface.ts, 16, 58)) >searchElement : Symbol(searchElement, Decl(implementArrayInterface.ts, 17, 16)) >T : Symbol(T, Decl(implementArrayInterface.ts, 0, 22)) >fromIndex : Symbol(fromIndex, Decl(implementArrayInterface.ts, 17, 33)) every(callbackfn: (value: T, index: number, array: T[]) => boolean, thisArg?: any): boolean; ->every : Symbol(every, Decl(implementArrayInterface.ts, 17, 62)) +>every : Symbol(MyArray.every, Decl(implementArrayInterface.ts, 17, 62)) >callbackfn : Symbol(callbackfn, Decl(implementArrayInterface.ts, 18, 10)) >value : Symbol(value, Decl(implementArrayInterface.ts, 18, 23)) >T : Symbol(T, Decl(implementArrayInterface.ts, 0, 22)) @@ -102,7 +102,7 @@ declare class MyArray implements Array { >thisArg : Symbol(thisArg, Decl(implementArrayInterface.ts, 18, 71)) some(callbackfn: (value: T, index: number, array: T[]) => boolean, thisArg?: any): boolean; ->some : Symbol(some, Decl(implementArrayInterface.ts, 18, 96)) +>some : Symbol(MyArray.some, Decl(implementArrayInterface.ts, 18, 96)) >callbackfn : Symbol(callbackfn, Decl(implementArrayInterface.ts, 19, 9)) >value : Symbol(value, Decl(implementArrayInterface.ts, 19, 22)) >T : Symbol(T, Decl(implementArrayInterface.ts, 0, 22)) @@ -112,7 +112,7 @@ declare class MyArray implements Array { >thisArg : Symbol(thisArg, Decl(implementArrayInterface.ts, 19, 70)) forEach(callbackfn: (value: T, index: number, array: T[]) => void, thisArg?: any): void; ->forEach : Symbol(forEach, Decl(implementArrayInterface.ts, 19, 95)) +>forEach : Symbol(MyArray.forEach, Decl(implementArrayInterface.ts, 19, 95)) >callbackfn : Symbol(callbackfn, Decl(implementArrayInterface.ts, 20, 12)) >value : Symbol(value, Decl(implementArrayInterface.ts, 20, 25)) >T : Symbol(T, Decl(implementArrayInterface.ts, 0, 22)) @@ -122,7 +122,7 @@ declare class MyArray implements Array { >thisArg : Symbol(thisArg, Decl(implementArrayInterface.ts, 20, 70)) map(callbackfn: (value: T, index: number, array: T[]) => U, thisArg?: any): U[]; ->map : Symbol(map, Decl(implementArrayInterface.ts, 20, 92)) +>map : Symbol(MyArray.map, Decl(implementArrayInterface.ts, 20, 92)) >U : Symbol(U, Decl(implementArrayInterface.ts, 21, 8)) >callbackfn : Symbol(callbackfn, Decl(implementArrayInterface.ts, 21, 11)) >value : Symbol(value, Decl(implementArrayInterface.ts, 21, 24)) @@ -135,7 +135,7 @@ declare class MyArray implements Array { >U : Symbol(U, Decl(implementArrayInterface.ts, 21, 8)) filter(callbackfn: (value: T, index: number, array: T[]) => boolean, thisArg?: any): T[]; ->filter : Symbol(filter, Decl(implementArrayInterface.ts, 21, 87)) +>filter : Symbol(MyArray.filter, Decl(implementArrayInterface.ts, 21, 87)) >callbackfn : Symbol(callbackfn, Decl(implementArrayInterface.ts, 22, 11)) >value : Symbol(value, Decl(implementArrayInterface.ts, 22, 24)) >T : Symbol(T, Decl(implementArrayInterface.ts, 0, 22)) @@ -146,7 +146,7 @@ declare class MyArray implements Array { >T : Symbol(T, Decl(implementArrayInterface.ts, 0, 22)) reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue?: T): T; ->reduce : Symbol(reduce, Decl(implementArrayInterface.ts, 22, 93), Decl(implementArrayInterface.ts, 23, 120)) +>reduce : Symbol(MyArray.reduce, Decl(implementArrayInterface.ts, 22, 93), Decl(implementArrayInterface.ts, 23, 120)) >callbackfn : Symbol(callbackfn, Decl(implementArrayInterface.ts, 23, 11)) >previousValue : Symbol(previousValue, Decl(implementArrayInterface.ts, 23, 24)) >T : Symbol(T, Decl(implementArrayInterface.ts, 0, 22)) @@ -161,7 +161,7 @@ declare class MyArray implements Array { >T : Symbol(T, Decl(implementArrayInterface.ts, 0, 22)) reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; ->reduce : Symbol(reduce, Decl(implementArrayInterface.ts, 22, 93), Decl(implementArrayInterface.ts, 23, 120)) +>reduce : Symbol(MyArray.reduce, Decl(implementArrayInterface.ts, 22, 93), Decl(implementArrayInterface.ts, 23, 120)) >U : Symbol(U, Decl(implementArrayInterface.ts, 24, 11)) >callbackfn : Symbol(callbackfn, Decl(implementArrayInterface.ts, 24, 14)) >previousValue : Symbol(previousValue, Decl(implementArrayInterface.ts, 24, 27)) @@ -177,7 +177,7 @@ declare class MyArray implements Array { >U : Symbol(U, Decl(implementArrayInterface.ts, 24, 11)) reduceRight(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue?: T): T; ->reduceRight : Symbol(reduceRight, Decl(implementArrayInterface.ts, 24, 122), Decl(implementArrayInterface.ts, 25, 125)) +>reduceRight : Symbol(MyArray.reduceRight, Decl(implementArrayInterface.ts, 24, 122), Decl(implementArrayInterface.ts, 25, 125)) >callbackfn : Symbol(callbackfn, Decl(implementArrayInterface.ts, 25, 16)) >previousValue : Symbol(previousValue, Decl(implementArrayInterface.ts, 25, 29)) >T : Symbol(T, Decl(implementArrayInterface.ts, 0, 22)) @@ -192,7 +192,7 @@ declare class MyArray implements Array { >T : Symbol(T, Decl(implementArrayInterface.ts, 0, 22)) reduceRight(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; ->reduceRight : Symbol(reduceRight, Decl(implementArrayInterface.ts, 24, 122), Decl(implementArrayInterface.ts, 25, 125)) +>reduceRight : Symbol(MyArray.reduceRight, Decl(implementArrayInterface.ts, 24, 122), Decl(implementArrayInterface.ts, 25, 125)) >U : Symbol(U, Decl(implementArrayInterface.ts, 26, 16)) >callbackfn : Symbol(callbackfn, Decl(implementArrayInterface.ts, 26, 19)) >previousValue : Symbol(previousValue, Decl(implementArrayInterface.ts, 26, 32)) @@ -208,7 +208,7 @@ declare class MyArray implements Array { >U : Symbol(U, Decl(implementArrayInterface.ts, 26, 16)) length: number; ->length : Symbol(length, Decl(implementArrayInterface.ts, 26, 127)) +>length : Symbol(MyArray.length, Decl(implementArrayInterface.ts, 26, 127)) [n: number]: T; >n : Symbol(n, Decl(implementArrayInterface.ts, 30, 5)) diff --git a/tests/baselines/reference/implementGenericWithMismatchedTypes.errors.txt b/tests/baselines/reference/implementGenericWithMismatchedTypes.errors.txt index 7a128b87764..4652acc8d10 100644 --- a/tests/baselines/reference/implementGenericWithMismatchedTypes.errors.txt +++ b/tests/baselines/reference/implementGenericWithMismatchedTypes.errors.txt @@ -2,7 +2,7 @@ tests/cases/compiler/implementGenericWithMismatchedTypes.ts(7,7): error TS2420: Types of property 'foo' are incompatible. Type '(x: string) => number' is not assignable to type '(x: T) => T'. Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'T'. + Type 'T' is not assignable to type 'string'. tests/cases/compiler/implementGenericWithMismatchedTypes.ts(16,7): error TS2420: Class 'C2' incorrectly implements interface 'IFoo2'. Types of property 'foo' are incompatible. Type '(x: Tstring) => number' is not assignable to type '(x: T) => T'. @@ -22,7 +22,7 @@ tests/cases/compiler/implementGenericWithMismatchedTypes.ts(16,7): error TS2420: !!! error TS2420: Types of property 'foo' are incompatible. !!! error TS2420: Type '(x: string) => number' is not assignable to type '(x: T) => T'. !!! error TS2420: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2420: Type 'string' is not assignable to type 'T'. +!!! error TS2420: Type 'T' is not assignable to type 'string'. foo(x: string): number { return null; } diff --git a/tests/baselines/reference/implementInterfaceAnyMemberWithVoid.symbols b/tests/baselines/reference/implementInterfaceAnyMemberWithVoid.symbols index bf53a92dcd3..7cc8e6f92ac 100644 --- a/tests/baselines/reference/implementInterfaceAnyMemberWithVoid.symbols +++ b/tests/baselines/reference/implementInterfaceAnyMemberWithVoid.symbols @@ -3,7 +3,7 @@ interface I { >I : Symbol(I, Decl(implementInterfaceAnyMemberWithVoid.ts, 0, 0)) foo(value: number); ->foo : Symbol(foo, Decl(implementInterfaceAnyMemberWithVoid.ts, 0, 13)) +>foo : Symbol(I.foo, Decl(implementInterfaceAnyMemberWithVoid.ts, 0, 13)) >value : Symbol(value, Decl(implementInterfaceAnyMemberWithVoid.ts, 1, 8)) } @@ -12,7 +12,7 @@ class Bug implements I { >I : Symbol(I, Decl(implementInterfaceAnyMemberWithVoid.ts, 0, 0)) public foo(value: number) { ->foo : Symbol(foo, Decl(implementInterfaceAnyMemberWithVoid.ts, 4, 24)) +>foo : Symbol(Bug.foo, Decl(implementInterfaceAnyMemberWithVoid.ts, 4, 24)) >value : Symbol(value, Decl(implementInterfaceAnyMemberWithVoid.ts, 5, 15)) } } diff --git a/tests/baselines/reference/implementsInClassExpression.symbols b/tests/baselines/reference/implementsInClassExpression.symbols index f65c3456320..48a44d91e9c 100644 --- a/tests/baselines/reference/implementsInClassExpression.symbols +++ b/tests/baselines/reference/implementsInClassExpression.symbols @@ -3,7 +3,7 @@ interface Foo { >Foo : Symbol(Foo, Decl(implementsInClassExpression.ts, 0, 0)) doThing(): void; ->doThing : Symbol(doThing, Decl(implementsInClassExpression.ts, 0, 15)) +>doThing : Symbol(Foo.doThing, Decl(implementsInClassExpression.ts, 0, 15)) } let cls = class implements Foo { diff --git a/tests/baselines/reference/implicitAnyAnyReturningFunction.symbols b/tests/baselines/reference/implicitAnyAnyReturningFunction.symbols index 73e91853255..4571820db7b 100644 --- a/tests/baselines/reference/implicitAnyAnyReturningFunction.symbols +++ b/tests/baselines/reference/implicitAnyAnyReturningFunction.symbols @@ -19,13 +19,13 @@ class C { >C : Symbol(C, Decl(implicitAnyAnyReturningFunction.ts, 7, 1)) public A() { ->A : Symbol(A, Decl(implicitAnyAnyReturningFunction.ts, 9, 9)) +>A : Symbol(C.A, Decl(implicitAnyAnyReturningFunction.ts, 9, 9)) return ""; } public B() { ->B : Symbol(B, Decl(implicitAnyAnyReturningFunction.ts, 12, 5)) +>B : Symbol(C.B, Decl(implicitAnyAnyReturningFunction.ts, 12, 5)) var someLocal: any = {}; >someLocal : Symbol(someLocal, Decl(implicitAnyAnyReturningFunction.ts, 15, 11)) diff --git a/tests/baselines/reference/implicitAnyGenerics.symbols b/tests/baselines/reference/implicitAnyGenerics.symbols index 865f48fdd59..22718f1b9d4 100644 --- a/tests/baselines/reference/implicitAnyGenerics.symbols +++ b/tests/baselines/reference/implicitAnyGenerics.symbols @@ -5,7 +5,7 @@ class C { >T : Symbol(T, Decl(implicitAnyGenerics.ts, 1, 8)) x: T; ->x : Symbol(x, Decl(implicitAnyGenerics.ts, 1, 12)) +>x : Symbol(C.x, Decl(implicitAnyGenerics.ts, 1, 12)) >T : Symbol(T, Decl(implicitAnyGenerics.ts, 1, 8)) } diff --git a/tests/baselines/reference/implicitAnyInCatch.symbols b/tests/baselines/reference/implicitAnyInCatch.symbols index e576593da82..7ce3ac40f36 100644 --- a/tests/baselines/reference/implicitAnyInCatch.symbols +++ b/tests/baselines/reference/implicitAnyInCatch.symbols @@ -13,7 +13,7 @@ class C { >C : Symbol(C, Decl(implicitAnyInCatch.ts, 4, 25)) public temp() { ->temp : Symbol(temp, Decl(implicitAnyInCatch.ts, 6, 9)) +>temp : Symbol(C.temp, Decl(implicitAnyInCatch.ts, 6, 9)) for (var x in this) { >x : Symbol(x, Decl(implicitAnyInCatch.ts, 8, 16)) diff --git a/tests/baselines/reference/importAliasIdentifiers.symbols b/tests/baselines/reference/importAliasIdentifiers.symbols index 3b2ba0ea46a..c299aef9142 100644 --- a/tests/baselines/reference/importAliasIdentifiers.symbols +++ b/tests/baselines/reference/importAliasIdentifiers.symbols @@ -6,8 +6,8 @@ module moduleA { >Point : Symbol(Point, Decl(importAliasIdentifiers.ts, 0, 16)) constructor(public x: number, public y: number) { } ->x : Symbol(x, Decl(importAliasIdentifiers.ts, 2, 20)) ->y : Symbol(y, Decl(importAliasIdentifiers.ts, 2, 37)) +>x : Symbol(Point.x, Decl(importAliasIdentifiers.ts, 2, 20)) +>y : Symbol(Point.y, Decl(importAliasIdentifiers.ts, 2, 37)) } } @@ -34,7 +34,7 @@ class clodule { >clodule : Symbol(clodule, Decl(importAliasIdentifiers.ts, 10, 33), Decl(importAliasIdentifiers.ts, 14, 1)) name: string; ->name : Symbol(name, Decl(importAliasIdentifiers.ts, 12, 15)) +>name : Symbol(clodule.name, Decl(importAliasIdentifiers.ts, 12, 15)) } module clodule { @@ -44,8 +44,8 @@ module clodule { >Point : Symbol(Point, Decl(importAliasIdentifiers.ts, 16, 16)) x: number; y: number; ->x : Symbol(x, Decl(importAliasIdentifiers.ts, 17, 28)) ->y : Symbol(y, Decl(importAliasIdentifiers.ts, 18, 18)) +>x : Symbol(Point.x, Decl(importAliasIdentifiers.ts, 17, 28)) +>y : Symbol(Point.y, Decl(importAliasIdentifiers.ts, 18, 18)) } var Point: Point = { x: 0, y: 0 }; >Point : Symbol(Point, Decl(importAliasIdentifiers.ts, 16, 16), Decl(importAliasIdentifiers.ts, 20, 7)) @@ -89,8 +89,8 @@ module fundule { >Point : Symbol(Point, Decl(importAliasIdentifiers.ts, 34, 16)) x: number; y: number; ->x : Symbol(x, Decl(importAliasIdentifiers.ts, 35, 28)) ->y : Symbol(y, Decl(importAliasIdentifiers.ts, 36, 18)) +>x : Symbol(Point.x, Decl(importAliasIdentifiers.ts, 35, 28)) +>y : Symbol(Point.y, Decl(importAliasIdentifiers.ts, 36, 18)) } var Point: Point = { x: 0, y: 0 }; >Point : Symbol(Point, Decl(importAliasIdentifiers.ts, 34, 16), Decl(importAliasIdentifiers.ts, 38, 7)) diff --git a/tests/baselines/reference/importAndVariableDeclarationConflict2.symbols b/tests/baselines/reference/importAndVariableDeclarationConflict2.symbols index 570bb5e2b98..d8d9b1d7f4c 100644 --- a/tests/baselines/reference/importAndVariableDeclarationConflict2.symbols +++ b/tests/baselines/reference/importAndVariableDeclarationConflict2.symbols @@ -15,7 +15,7 @@ class C { >C : Symbol(C, Decl(importAndVariableDeclarationConflict2.ts, 4, 15)) public foo() { ->foo : Symbol(foo, Decl(importAndVariableDeclarationConflict2.ts, 6, 9)) +>foo : Symbol(C.foo, Decl(importAndVariableDeclarationConflict2.ts, 6, 9)) var x = ''; >x : Symbol(x, Decl(importAndVariableDeclarationConflict2.ts, 8, 7)) diff --git a/tests/baselines/reference/importDecl.symbols b/tests/baselines/reference/importDecl.symbols index 32b9f3bb2a7..91df857ae98 100644 --- a/tests/baselines/reference/importDecl.symbols +++ b/tests/baselines/reference/importDecl.symbols @@ -154,7 +154,7 @@ export class d { >d : Symbol(d, Decl(importDecl_require.ts, 0, 0)) foo: string; ->foo : Symbol(foo, Decl(importDecl_require.ts, 0, 16)) +>foo : Symbol(d.foo, Decl(importDecl_require.ts, 0, 16)) } export var x: d; >x : Symbol(x, Decl(importDecl_require.ts, 3, 10)) @@ -169,7 +169,7 @@ export class d { >d : Symbol(d, Decl(importDecl_require1.ts, 0, 0)) bar: string; ->bar : Symbol(bar, Decl(importDecl_require1.ts, 0, 16)) +>bar : Symbol(d.bar, Decl(importDecl_require1.ts, 0, 16)) } var x: d; >x : Symbol(x, Decl(importDecl_require1.ts, 3, 3)) @@ -184,7 +184,7 @@ export class d { >d : Symbol(d, Decl(importDecl_require2.ts, 0, 0)) baz: string; ->baz : Symbol(baz, Decl(importDecl_require2.ts, 0, 16)) +>baz : Symbol(d.baz, Decl(importDecl_require2.ts, 0, 16)) } export var x: d; >x : Symbol(x, Decl(importDecl_require2.ts, 3, 10)) @@ -199,7 +199,7 @@ export class d { >d : Symbol(d, Decl(importDecl_require3.ts, 0, 0)) bing: string; ->bing : Symbol(bing, Decl(importDecl_require3.ts, 0, 16)) +>bing : Symbol(d.bing, Decl(importDecl_require3.ts, 0, 16)) } export var x: d; >x : Symbol(x, Decl(importDecl_require3.ts, 3, 10)) diff --git a/tests/baselines/reference/importDeclarationUsedAsTypeQuery.symbols b/tests/baselines/reference/importDeclarationUsedAsTypeQuery.symbols index 0cd2498e2af..b0eedcddc62 100644 --- a/tests/baselines/reference/importDeclarationUsedAsTypeQuery.symbols +++ b/tests/baselines/reference/importDeclarationUsedAsTypeQuery.symbols @@ -12,6 +12,6 @@ export class B { >B : Symbol(B, Decl(importDeclarationUsedAsTypeQuery_require.ts, 0, 0)) id: number; ->id : Symbol(id, Decl(importDeclarationUsedAsTypeQuery_require.ts, 0, 16)) +>id : Symbol(B.id, Decl(importDeclarationUsedAsTypeQuery_require.ts, 0, 16)) } diff --git a/tests/baselines/reference/importImportOnlyModule.symbols b/tests/baselines/reference/importImportOnlyModule.symbols index 902f1b45a68..a56fe3752e2 100644 --- a/tests/baselines/reference/importImportOnlyModule.symbols +++ b/tests/baselines/reference/importImportOnlyModule.symbols @@ -11,7 +11,7 @@ export class C1 { >C1 : Symbol(C1, Decl(foo_0.ts, 0, 0)) m1 = 42; ->m1 : Symbol(m1, Decl(foo_0.ts, 0, 17)) +>m1 : Symbol(C1.m1, Decl(foo_0.ts, 0, 17)) static s1 = true; >s1 : Symbol(C1.s1, Decl(foo_0.ts, 1, 9)) diff --git a/tests/baselines/reference/importInTypePosition.symbols b/tests/baselines/reference/importInTypePosition.symbols index 08f55093c50..93a4908b7a8 100644 --- a/tests/baselines/reference/importInTypePosition.symbols +++ b/tests/baselines/reference/importInTypePosition.symbols @@ -6,8 +6,8 @@ module A { >Point : Symbol(Point, Decl(importInTypePosition.ts, 0, 10)) constructor(public x: number, public y: number) { } ->x : Symbol(x, Decl(importInTypePosition.ts, 2, 20)) ->y : Symbol(y, Decl(importInTypePosition.ts, 2, 37)) +>x : Symbol(Point.x, Decl(importInTypePosition.ts, 2, 20)) +>y : Symbol(Point.y, Decl(importInTypePosition.ts, 2, 37)) } export var Origin = new Point(0, 0); >Origin : Symbol(Origin, Decl(importInTypePosition.ts, 4, 14)) diff --git a/tests/baselines/reference/importOnAliasedIdentifiers.symbols b/tests/baselines/reference/importOnAliasedIdentifiers.symbols index 7717799d4db..0ee0e83db80 100644 --- a/tests/baselines/reference/importOnAliasedIdentifiers.symbols +++ b/tests/baselines/reference/importOnAliasedIdentifiers.symbols @@ -4,7 +4,7 @@ module A { export interface X { s: string } >X : Symbol(X, Decl(importOnAliasedIdentifiers.ts, 0, 10), Decl(importOnAliasedIdentifiers.ts, 2, 14)) ->s : Symbol(s, Decl(importOnAliasedIdentifiers.ts, 1, 24)) +>s : Symbol(X.s, Decl(importOnAliasedIdentifiers.ts, 1, 24)) export var X: X; >X : Symbol(X, Decl(importOnAliasedIdentifiers.ts, 0, 10), Decl(importOnAliasedIdentifiers.ts, 2, 14)) @@ -15,7 +15,7 @@ module B { interface A { n: number } >A : Symbol(A, Decl(importOnAliasedIdentifiers.ts, 4, 10)) ->n : Symbol(n, Decl(importOnAliasedIdentifiers.ts, 5, 17)) +>n : Symbol(A.n, Decl(importOnAliasedIdentifiers.ts, 5, 17)) import Y = A; // Alias only for module A >Y : Symbol(Y, Decl(importOnAliasedIdentifiers.ts, 5, 29)) diff --git a/tests/baselines/reference/importStatements.symbols b/tests/baselines/reference/importStatements.symbols index b160dcf2888..3a5a4ff2a31 100644 --- a/tests/baselines/reference/importStatements.symbols +++ b/tests/baselines/reference/importStatements.symbols @@ -6,8 +6,8 @@ module A { >Point : Symbol(Point, Decl(importStatements.ts, 0, 10)) constructor(public x: number, public y: number) { } ->x : Symbol(x, Decl(importStatements.ts, 2, 20)) ->y : Symbol(y, Decl(importStatements.ts, 2, 37)) +>x : Symbol(Point.x, Decl(importStatements.ts, 2, 20)) +>y : Symbol(Point.y, Decl(importStatements.ts, 2, 37)) } export var Origin = new Point(0, 0); diff --git a/tests/baselines/reference/importUsedInExtendsList1.symbols b/tests/baselines/reference/importUsedInExtendsList1.symbols index 263b4f50ed8..4ee60e8d670 100644 --- a/tests/baselines/reference/importUsedInExtendsList1.symbols +++ b/tests/baselines/reference/importUsedInExtendsList1.symbols @@ -22,5 +22,5 @@ var r: string = s.foo; === tests/cases/compiler/importUsedInExtendsList1_require.ts === export class Super { foo: string; } >Super : Symbol(Super, Decl(importUsedInExtendsList1_require.ts, 0, 0)) ->foo : Symbol(foo, Decl(importUsedInExtendsList1_require.ts, 0, 20)) +>foo : Symbol(Super.foo, Decl(importUsedInExtendsList1_require.ts, 0, 20)) diff --git a/tests/baselines/reference/import_reference-exported-alias.symbols b/tests/baselines/reference/import_reference-exported-alias.symbols index 424bb4bc8b4..5a7e8b8c5c7 100644 --- a/tests/baselines/reference/import_reference-exported-alias.symbols +++ b/tests/baselines/reference/import_reference-exported-alias.symbols @@ -29,7 +29,7 @@ module App { >UserServices : Symbol(UserServices, Decl(file1.ts, 1, 28)) public getUserName(): string { ->getUserName : Symbol(getUserName, Decl(file1.ts, 2, 35)) +>getUserName : Symbol(UserServices.getUserName, Decl(file1.ts, 2, 35)) return "Bill Gates"; } diff --git a/tests/baselines/reference/import_reference-to-type-alias.symbols b/tests/baselines/reference/import_reference-to-type-alias.symbols index 2fef0714a3a..6d096c1cba3 100644 --- a/tests/baselines/reference/import_reference-to-type-alias.symbols +++ b/tests/baselines/reference/import_reference-to-type-alias.symbols @@ -27,7 +27,7 @@ export module App { >UserServices : Symbol(UserServices, Decl(file1.ts, 1, 28)) public getUserName(): string { ->getUserName : Symbol(getUserName, Decl(file1.ts, 2, 35)) +>getUserName : Symbol(UserServices.getUserName, Decl(file1.ts, 2, 35)) return "Bill Gates"; } diff --git a/tests/baselines/reference/import_unneeded-require-when-referenecing-aliased-type-throug-array.symbols b/tests/baselines/reference/import_unneeded-require-when-referenecing-aliased-type-throug-array.symbols index bfc29cd8032..c8de5db1707 100644 --- a/tests/baselines/reference/import_unneeded-require-when-referenecing-aliased-type-throug-array.symbols +++ b/tests/baselines/reference/import_unneeded-require-when-referenecing-aliased-type-throug-array.symbols @@ -19,7 +19,7 @@ declare module "ITest" { >Name : Symbol(Name, Decl(b.ts, 0, 24)) name: string; ->name : Symbol(name, Decl(b.ts, 1, 20)) +>name : Symbol(Name.name, Decl(b.ts, 1, 20)) } export = Name; >Name : Symbol(Name, Decl(b.ts, 0, 24)) diff --git a/tests/baselines/reference/importedAliasesInTypePositions.symbols b/tests/baselines/reference/importedAliasesInTypePositions.symbols index 50a6b582655..1d28900c22f 100644 --- a/tests/baselines/reference/importedAliasesInTypePositions.symbols +++ b/tests/baselines/reference/importedAliasesInTypePositions.symbols @@ -18,7 +18,7 @@ export module ImportingModule { >UsesReferredType : Symbol(UsesReferredType, Decl(file2.ts, 3, 31)) constructor(private referred: ReferredTo) { } ->referred : Symbol(referred, Decl(file2.ts, 5, 20)) +>referred : Symbol(UsesReferredType.referred, Decl(file2.ts, 5, 20)) >ReferredTo : Symbol(ReferredTo, Decl(file2.ts, 0, 35)) } } @@ -33,7 +33,7 @@ export module elaborate.nested.mod.name { >ReferredTo : Symbol(ReferredTo, Decl(file1.ts, 0, 41)) doSomething(): void { ->doSomething : Symbol(doSomething, Decl(file1.ts, 1, 29)) +>doSomething : Symbol(ReferredTo.doSomething, Decl(file1.ts, 1, 29)) } } } diff --git a/tests/baselines/reference/inOperatorWithGeneric.symbols b/tests/baselines/reference/inOperatorWithGeneric.symbols index 7a84d7dce6b..0088fef0fa3 100644 --- a/tests/baselines/reference/inOperatorWithGeneric.symbols +++ b/tests/baselines/reference/inOperatorWithGeneric.symbols @@ -4,7 +4,7 @@ class C { >T : Symbol(T, Decl(inOperatorWithGeneric.ts, 0, 8)) foo(x:T) { ->foo : Symbol(foo, Decl(inOperatorWithGeneric.ts, 0, 12)) +>foo : Symbol(C.foo, Decl(inOperatorWithGeneric.ts, 0, 12)) >x : Symbol(x, Decl(inOperatorWithGeneric.ts, 1, 8)) >T : Symbol(T, Decl(inOperatorWithGeneric.ts, 0, 8)) diff --git a/tests/baselines/reference/inOperatorWithValidOperands.symbols b/tests/baselines/reference/inOperatorWithValidOperands.symbols index 07e0bd4f6de..75e561989e7 100644 --- a/tests/baselines/reference/inOperatorWithValidOperands.symbols +++ b/tests/baselines/reference/inOperatorWithValidOperands.symbols @@ -61,11 +61,11 @@ function foo(t: T) { interface X { x: number } >X : Symbol(X, Decl(inOperatorWithValidOperands.ts, 22, 1)) ->x : Symbol(x, Decl(inOperatorWithValidOperands.ts, 24, 13)) +>x : Symbol(X.x, Decl(inOperatorWithValidOperands.ts, 24, 13)) interface Y { y: number } >Y : Symbol(Y, Decl(inOperatorWithValidOperands.ts, 24, 25)) ->y : Symbol(y, Decl(inOperatorWithValidOperands.ts, 25, 13)) +>y : Symbol(Y.y, Decl(inOperatorWithValidOperands.ts, 25, 13)) var c1: X | Y; >c1 : Symbol(c1, Decl(inOperatorWithValidOperands.ts, 27, 3)) diff --git a/tests/baselines/reference/incompatibleTypes.errors.txt b/tests/baselines/reference/incompatibleTypes.errors.txt index e612600a7f8..cb6de6576b2 100644 --- a/tests/baselines/reference/incompatibleTypes.errors.txt +++ b/tests/baselines/reference/incompatibleTypes.errors.txt @@ -6,7 +6,7 @@ tests/cases/compiler/incompatibleTypes.ts(15,7): error TS2420: Class 'C2' incorr Types of property 'p1' are incompatible. Type '(n: number) => number' is not assignable to type '(s: string) => number'. Types of parameters 'n' and 's' are incompatible. - Type 'number' is not assignable to type 'string'. + Type 'string' is not assignable to type 'number'. tests/cases/compiler/incompatibleTypes.ts(25,7): error TS2420: Class 'C3' incorrectly implements interface 'IFoo3'. Types of property 'p1' are incompatible. Type 'number' is not assignable to type 'string'. @@ -52,7 +52,7 @@ tests/cases/compiler/incompatibleTypes.ts(74,5): error TS2322: Type '(a: any) => !!! error TS2420: Types of property 'p1' are incompatible. !!! error TS2420: Type '(n: number) => number' is not assignable to type '(s: string) => number'. !!! error TS2420: Types of parameters 'n' and 's' are incompatible. -!!! error TS2420: Type 'number' is not assignable to type 'string'. +!!! error TS2420: Type 'string' is not assignable to type 'number'. public p1(n:number) { return 0; } diff --git a/tests/baselines/reference/incrementOperatorWithAnyOtherType.symbols b/tests/baselines/reference/incrementOperatorWithAnyOtherType.symbols index d0af700ea8e..338ab905064 100644 --- a/tests/baselines/reference/incrementOperatorWithAnyOtherType.symbols +++ b/tests/baselines/reference/incrementOperatorWithAnyOtherType.symbols @@ -19,7 +19,7 @@ class A { >A : Symbol(A, Decl(incrementOperatorWithAnyOtherType.ts, 5, 23)) public a: any; ->a : Symbol(a, Decl(incrementOperatorWithAnyOtherType.ts, 6, 9)) +>a : Symbol(A.a, Decl(incrementOperatorWithAnyOtherType.ts, 6, 9)) } module M { >M : Symbol(M, Decl(incrementOperatorWithAnyOtherType.ts, 8, 1)) diff --git a/tests/baselines/reference/incrementOperatorWithNumberType.symbols b/tests/baselines/reference/incrementOperatorWithNumberType.symbols index 3523e15135c..b7e67e5dfec 100644 --- a/tests/baselines/reference/incrementOperatorWithNumberType.symbols +++ b/tests/baselines/reference/incrementOperatorWithNumberType.symbols @@ -10,7 +10,7 @@ class A { >A : Symbol(A, Decl(incrementOperatorWithNumberType.ts, 2, 31)) public a: number; ->a : Symbol(a, Decl(incrementOperatorWithNumberType.ts, 4, 9)) +>a : Symbol(A.a, Decl(incrementOperatorWithNumberType.ts, 4, 9)) } module M { >M : Symbol(M, Decl(incrementOperatorWithNumberType.ts, 6, 1)) diff --git a/tests/baselines/reference/indexer.symbols b/tests/baselines/reference/indexer.symbols index 409bd8092d6..a713beadccd 100644 --- a/tests/baselines/reference/indexer.symbols +++ b/tests/baselines/reference/indexer.symbols @@ -3,7 +3,7 @@ interface JQueryElement { >JQueryElement : Symbol(JQueryElement, Decl(indexer.ts, 0, 0)) id:string; ->id : Symbol(id, Decl(indexer.ts, 0, 25)) +>id : Symbol(JQueryElement.id, Decl(indexer.ts, 0, 25)) } interface JQuery { diff --git a/tests/baselines/reference/indexer2.symbols b/tests/baselines/reference/indexer2.symbols index c23debb925c..77c024fc8cb 100644 --- a/tests/baselines/reference/indexer2.symbols +++ b/tests/baselines/reference/indexer2.symbols @@ -6,7 +6,7 @@ interface IDirectChildrenMap { >IDirectChildrenMap : Symbol(IDirectChildrenMap, Decl(indexer2.ts, 0, 32)) hasOwnProperty(objectId: number) : boolean; ->hasOwnProperty : Symbol(hasOwnProperty, Decl(indexer2.ts, 1, 30)) +>hasOwnProperty : Symbol(IDirectChildrenMap.hasOwnProperty, Decl(indexer2.ts, 1, 30)) >objectId : Symbol(objectId, Decl(indexer2.ts, 2, 23)) [objectId: number] : IHeapObjectProperty[]; diff --git a/tests/baselines/reference/indexer3.symbols b/tests/baselines/reference/indexer3.symbols index fa6f905def6..03b055b343f 100644 --- a/tests/baselines/reference/indexer3.symbols +++ b/tests/baselines/reference/indexer3.symbols @@ -2,10 +2,10 @@ var dateMap: { [x: string]: Date; } = {} >dateMap : Symbol(dateMap, Decl(indexer3.ts, 0, 3)) >x : Symbol(x, Decl(indexer3.ts, 0, 16)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) var r: Date = dateMap["hello"] // result type includes indexer using BCT >r : Symbol(r, Decl(indexer3.ts, 1, 3)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >dateMap : Symbol(dateMap, Decl(indexer3.ts, 0, 3)) diff --git a/tests/baselines/reference/indexerA.symbols b/tests/baselines/reference/indexerA.symbols index d549c3359d9..b254618673a 100644 --- a/tests/baselines/reference/indexerA.symbols +++ b/tests/baselines/reference/indexerA.symbols @@ -3,7 +3,7 @@ class JQueryElement { >JQueryElement : Symbol(JQueryElement, Decl(indexerA.ts, 0, 0)) id:string; ->id : Symbol(id, Decl(indexerA.ts, 0, 21)) +>id : Symbol(JQueryElement.id, Decl(indexerA.ts, 0, 21)) } class JQuery { diff --git a/tests/baselines/reference/indexerReturningTypeParameter1.symbols b/tests/baselines/reference/indexerReturningTypeParameter1.symbols index 0bb1e305c80..b9c2e7a4c16 100644 --- a/tests/baselines/reference/indexerReturningTypeParameter1.symbols +++ b/tests/baselines/reference/indexerReturningTypeParameter1.symbols @@ -3,7 +3,7 @@ interface f { >f : Symbol(f, Decl(indexerReturningTypeParameter1.ts, 0, 0)) groupBy(): { [key: string]: T[]; }; ->groupBy : Symbol(groupBy, Decl(indexerReturningTypeParameter1.ts, 0, 13)) +>groupBy : Symbol(f.groupBy, Decl(indexerReturningTypeParameter1.ts, 0, 13)) >T : Symbol(T, Decl(indexerReturningTypeParameter1.ts, 1, 12)) >key : Symbol(key, Decl(indexerReturningTypeParameter1.ts, 1, 21)) >T : Symbol(T, Decl(indexerReturningTypeParameter1.ts, 1, 12)) @@ -22,7 +22,7 @@ class c { >c : Symbol(c, Decl(indexerReturningTypeParameter1.ts, 4, 20)) groupBy(): { [key: string]: T[]; } { ->groupBy : Symbol(groupBy, Decl(indexerReturningTypeParameter1.ts, 6, 9)) +>groupBy : Symbol(c.groupBy, Decl(indexerReturningTypeParameter1.ts, 6, 9)) >T : Symbol(T, Decl(indexerReturningTypeParameter1.ts, 7, 12)) >key : Symbol(key, Decl(indexerReturningTypeParameter1.ts, 7, 21)) >T : Symbol(T, Decl(indexerReturningTypeParameter1.ts, 7, 12)) diff --git a/tests/baselines/reference/indexersInClassType.symbols b/tests/baselines/reference/indexersInClassType.symbols index 0852463c37d..c57c7cf7522 100644 --- a/tests/baselines/reference/indexersInClassType.symbols +++ b/tests/baselines/reference/indexersInClassType.symbols @@ -4,19 +4,19 @@ class C { [x: number]: Date; >x : Symbol(x, Decl(indexersInClassType.ts, 1, 5)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) [x: string]: Object; >x : Symbol(x, Decl(indexersInClassType.ts, 2, 5)) >Object : Symbol(Object, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) 1: Date; ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) 'a': {} fn() { ->fn : Symbol(fn, Decl(indexersInClassType.ts, 4, 11)) +>fn : Symbol(C.fn, Decl(indexersInClassType.ts, 4, 11)) return this; >this : Symbol(C, Decl(indexersInClassType.ts, 0, 0)) @@ -36,12 +36,12 @@ var r = c.fn(); var r2 = r[1]; >r2 : Symbol(r2, Decl(indexersInClassType.ts, 13, 3)) >r : Symbol(r, Decl(indexersInClassType.ts, 12, 3)) ->1 : Symbol(C.1, Decl(indexersInClassType.ts, 2, 24)) +>1 : Symbol(C[1], Decl(indexersInClassType.ts, 2, 24)) var r3 = r.a >r3 : Symbol(r3, Decl(indexersInClassType.ts, 14, 3)) ->r.a : Symbol(C.'a', Decl(indexersInClassType.ts, 3, 12)) +>r.a : Symbol(C['a'], Decl(indexersInClassType.ts, 3, 12)) >r : Symbol(r, Decl(indexersInClassType.ts, 12, 3)) ->a : Symbol(C.'a', Decl(indexersInClassType.ts, 3, 12)) +>a : Symbol(C['a'], Decl(indexersInClassType.ts, 3, 12)) diff --git a/tests/baselines/reference/inferSecondaryParameter.symbols b/tests/baselines/reference/inferSecondaryParameter.symbols index 5522770c02f..b6817d8fd52 100644 --- a/tests/baselines/reference/inferSecondaryParameter.symbols +++ b/tests/baselines/reference/inferSecondaryParameter.symbols @@ -3,7 +3,7 @@ interface Ib { m(test: string, fn: Function); } >Ib : Symbol(Ib, Decl(inferSecondaryParameter.ts, 0, 0)) ->m : Symbol(m, Decl(inferSecondaryParameter.ts, 2, 14)) +>m : Symbol(Ib.m, Decl(inferSecondaryParameter.ts, 2, 14)) >test : Symbol(test, Decl(inferSecondaryParameter.ts, 2, 17)) >fn : Symbol(fn, Decl(inferSecondaryParameter.ts, 2, 30)) >Function : Symbol(Function, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) diff --git a/tests/baselines/reference/inferenceLimit.js b/tests/baselines/reference/inferenceLimit.js new file mode 100644 index 00000000000..a74bf59df44 --- /dev/null +++ b/tests/baselines/reference/inferenceLimit.js @@ -0,0 +1,82 @@ +//// [tests/cases/compiler/inferenceLimit.ts] //// + +//// [file1.ts] +"use strict"; +import * as MyModule from "./mymodule"; + +export class BrokenClass { + + constructor() {} + + public brokenMethod(field: string, value: string) { + return new Promise>((resolve, reject) => { + + let result: Array = []; + + let populateItems = (order) => { + return new Promise((resolve, reject) => { + this.doStuff(order.id) + .then((items) => { + order.items = items; + resolve(order); + }); + }); + }; + + return Promise.all(result.map(populateItems)) + .then((orders: Array) => { + resolve(orders); + }); + }); + } + + public async doStuff(id: number) { + return; + } +} + +//// [mymodule.ts] +export interface MyModel { + id: number; +} + +//// [mymodule.js] +"use strict"; +//// [file1.js] +"use strict"; +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()); + }); +}; +class BrokenClass { + constructor() { + } + brokenMethod(field, value) { + return new Promise((resolve, reject) => { + let result = []; + let populateItems = (order) => { + return new Promise((resolve, reject) => { + this.doStuff(order.id) + .then((items) => { + order.items = items; + resolve(order); + }); + }); + }; + return Promise.all(result.map(populateItems)) + .then((orders) => { + resolve(orders); + }); + }); + } + doStuff(id) { + return __awaiter(this, void 0, void 0, function* () { + return; + }); + } +} +exports.BrokenClass = BrokenClass; diff --git a/tests/baselines/reference/inferenceLimit.symbols b/tests/baselines/reference/inferenceLimit.symbols new file mode 100644 index 00000000000..bedea9ce1f0 --- /dev/null +++ b/tests/baselines/reference/inferenceLimit.symbols @@ -0,0 +1,101 @@ +=== tests/cases/compiler/file1.ts === +"use strict"; +import * as MyModule from "./mymodule"; +>MyModule : Symbol(MyModule, Decl(file1.ts, 1, 6)) + +export class BrokenClass { +>BrokenClass : Symbol(BrokenClass, Decl(file1.ts, 1, 39)) + + constructor() {} + + public brokenMethod(field: string, value: string) { +>brokenMethod : Symbol(BrokenClass.brokenMethod, Decl(file1.ts, 5, 18)) +>field : Symbol(field, Decl(file1.ts, 7, 22)) +>value : Symbol(value, Decl(file1.ts, 7, 36)) + + return new Promise>((resolve, reject) => { +>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, --, --)) +>Array : Symbol(Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --)) +>MyModule : Symbol(MyModule, Decl(file1.ts, 1, 6)) +>MyModel : Symbol(MyModule.MyModel, Decl(mymodule.ts, 0, 0)) +>resolve : Symbol(resolve, Decl(file1.ts, 8, 47)) +>reject : Symbol(reject, Decl(file1.ts, 8, 55)) + + let result: Array = []; +>result : Symbol(result, Decl(file1.ts, 10, 7)) +>Array : Symbol(Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --)) +>MyModule : Symbol(MyModule, Decl(file1.ts, 1, 6)) +>MyModel : Symbol(MyModule.MyModel, Decl(mymodule.ts, 0, 0)) + + let populateItems = (order) => { +>populateItems : Symbol(populateItems, Decl(file1.ts, 12, 7)) +>order : Symbol(order, Decl(file1.ts, 12, 25)) + + return new Promise((resolve, reject) => { +>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(resolve, Decl(file1.ts, 13, 26)) +>reject : Symbol(reject, Decl(file1.ts, 13, 34)) + + this.doStuff(order.id) +>this.doStuff(order.id) .then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) +>this.doStuff : Symbol(BrokenClass.doStuff, Decl(file1.ts, 27, 3)) +>this : Symbol(BrokenClass, Decl(file1.ts, 1, 39)) +>doStuff : Symbol(BrokenClass.doStuff, Decl(file1.ts, 27, 3)) +>order : Symbol(order, Decl(file1.ts, 12, 25)) + + .then((items) => { +>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) +>items : Symbol(items, Decl(file1.ts, 15, 17)) + + order.items = items; +>order : Symbol(order, Decl(file1.ts, 12, 25)) +>items : Symbol(items, Decl(file1.ts, 15, 17)) + + resolve(order); +>resolve : Symbol(resolve, Decl(file1.ts, 13, 26)) +>order : Symbol(order, Decl(file1.ts, 12, 25)) + + }); + }); + }; + + return Promise.all(result.map(populateItems)) +>Promise.all(result.map(populateItems)) .then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) +>Promise.all : Symbol(PromiseConstructor.all, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.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, --, --)) +>all : Symbol(PromiseConstructor.all, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>result.map : Symbol(Array.map, Decl(lib.es5.d.ts, --, --)) +>result : Symbol(result, Decl(file1.ts, 10, 7)) +>map : Symbol(Array.map, Decl(lib.es5.d.ts, --, --)) +>populateItems : Symbol(populateItems, Decl(file1.ts, 12, 7)) + + .then((orders: Array) => { +>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) +>orders : Symbol(orders, Decl(file1.ts, 23, 13)) +>Array : Symbol(Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --)) +>MyModule : Symbol(MyModule, Decl(file1.ts, 1, 6)) +>MyModel : Symbol(MyModule.MyModel, Decl(mymodule.ts, 0, 0)) + + resolve(orders); +>resolve : Symbol(resolve, Decl(file1.ts, 8, 47)) +>orders : Symbol(orders, Decl(file1.ts, 23, 13)) + + }); + }); + } + + public async doStuff(id: number) { +>doStuff : Symbol(BrokenClass.doStuff, Decl(file1.ts, 27, 3)) +>id : Symbol(id, Decl(file1.ts, 29, 23)) + + return; + } +} + +=== tests/cases/compiler/mymodule.ts === +export interface MyModel { +>MyModel : Symbol(MyModel, Decl(mymodule.ts, 0, 0)) + + id: number; +>id : Symbol(MyModel.id, Decl(mymodule.ts, 0, 26)) +} diff --git a/tests/baselines/reference/inferenceLimit.types b/tests/baselines/reference/inferenceLimit.types new file mode 100644 index 00000000000..58f9b1e4ae0 --- /dev/null +++ b/tests/baselines/reference/inferenceLimit.types @@ -0,0 +1,123 @@ +=== tests/cases/compiler/file1.ts === +"use strict"; +>"use strict" : string + +import * as MyModule from "./mymodule"; +>MyModule : typeof MyModule + +export class BrokenClass { +>BrokenClass : BrokenClass + + constructor() {} + + public brokenMethod(field: string, value: string) { +>brokenMethod : (field: string, value: string) => Promise +>field : string +>value : string + + return new Promise>((resolve, reject) => { +>new Promise>((resolve, reject) => { let result: Array = []; let populateItems = (order) => { return new Promise((resolve, reject) => { this.doStuff(order.id) .then((items) => { order.items = items; resolve(order); }); }); }; return Promise.all(result.map(populateItems)) .then((orders: Array) => { resolve(orders); }); }) : Promise +>Promise : PromiseConstructor +>Array : T[] +>MyModule : any +>MyModel : MyModule.MyModel +>(resolve, reject) => { let result: Array = []; let populateItems = (order) => { return new Promise((resolve, reject) => { this.doStuff(order.id) .then((items) => { order.items = items; resolve(order); }); }); }; return Promise.all(result.map(populateItems)) .then((orders: Array) => { resolve(orders); }); } : (resolve: (value?: MyModule.MyModel[] | PromiseLike) => void, reject: (reason?: any) => void) => Promise +>resolve : (value?: MyModule.MyModel[] | PromiseLike) => void +>reject : (reason?: any) => void + + let result: Array = []; +>result : MyModule.MyModel[] +>Array : T[] +>MyModule : any +>MyModel : MyModule.MyModel +>[] : undefined[] + + let populateItems = (order) => { +>populateItems : (order: any) => Promise<{}> +>(order) => { return new Promise((resolve, reject) => { this.doStuff(order.id) .then((items) => { order.items = items; resolve(order); }); }); } : (order: any) => Promise<{}> +>order : any + + return new Promise((resolve, reject) => { +>new Promise((resolve, reject) => { this.doStuff(order.id) .then((items) => { order.items = items; resolve(order); }); }) : Promise<{}> +>Promise : PromiseConstructor +>(resolve, reject) => { this.doStuff(order.id) .then((items) => { order.items = items; resolve(order); }); } : (resolve: (value?: {} | PromiseLike<{}>) => void, reject: (reason?: any) => void) => void +>resolve : (value?: {} | PromiseLike<{}>) => void +>reject : (reason?: any) => void + + this.doStuff(order.id) +>this.doStuff(order.id) .then((items) => { order.items = items; resolve(order); }) : Promise +>this.doStuff(order.id) .then : { (onfulfilled?: (value: void) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled?: (value: void) => TResult | PromiseLike, onrejected?: (reason: any) => void): Promise; } +>this.doStuff(order.id) : Promise +>this.doStuff : (id: number) => Promise +>this : this +>doStuff : (id: number) => Promise +>order.id : any +>order : any +>id : any + + .then((items) => { +>then : { (onfulfilled?: (value: void) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled?: (value: void) => TResult | PromiseLike, onrejected?: (reason: any) => void): Promise; } +>(items) => { order.items = items; resolve(order); } : (items: void) => void +>items : void + + order.items = items; +>order.items = items : void +>order.items : any +>order : any +>items : any +>items : void + + resolve(order); +>resolve(order) : void +>resolve : (value?: {} | PromiseLike<{}>) => void +>order : any + + }); + }); + }; + + return Promise.all(result.map(populateItems)) +>Promise.all(result.map(populateItems)) .then((orders: Array) => { resolve(orders); }) : Promise +>Promise.all(result.map(populateItems)) .then : { (onfulfilled?: (value: {}[]) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled?: (value: {}[]) => TResult | PromiseLike, onrejected?: (reason: any) => void): Promise; } +>Promise.all(result.map(populateItems)) : Promise<{}[]> +>Promise.all : { (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike, T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike, T9 | PromiseLike, T10 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]>; (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike, T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike, T9 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9]>; (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike, T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8]>; (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike, T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7]>; (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike, T5 | PromiseLike, T6 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6]>; (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike, T5 | PromiseLike]): Promise<[T1, T2, T3, T4, T5]>; (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike]): Promise<[T1, T2, T3, T4]>; (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike]): Promise<[T1, T2, T3]>; (values: [T1 | PromiseLike, T2 | PromiseLike]): Promise<[T1, T2]>; (values: Iterable>): Promise; } +>Promise : PromiseConstructor +>all : { (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike, T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike, T9 | PromiseLike, T10 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]>; (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike, T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike, T9 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9]>; (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike, T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8]>; (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike, T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7]>; (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike, T5 | PromiseLike, T6 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6]>; (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike, T5 | PromiseLike]): Promise<[T1, T2, T3, T4, T5]>; (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike]): Promise<[T1, T2, T3, T4]>; (values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike]): Promise<[T1, T2, T3]>; (values: [T1 | PromiseLike, T2 | PromiseLike]): Promise<[T1, T2]>; (values: Iterable>): Promise; } +>result.map(populateItems) : Promise<{}>[] +>result.map : (callbackfn: (value: MyModule.MyModel, index: number, array: MyModule.MyModel[]) => U, thisArg?: any) => U[] +>result : MyModule.MyModel[] +>map : (callbackfn: (value: MyModule.MyModel, index: number, array: MyModule.MyModel[]) => U, thisArg?: any) => U[] +>populateItems : (order: any) => Promise<{}> + + .then((orders: Array) => { +>then : { (onfulfilled?: (value: {}[]) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled?: (value: {}[]) => TResult | PromiseLike, onrejected?: (reason: any) => void): Promise; } +>(orders: Array) => { resolve(orders); } : (orders: MyModule.MyModel[]) => void +>orders : MyModule.MyModel[] +>Array : T[] +>MyModule : any +>MyModel : MyModule.MyModel + + resolve(orders); +>resolve(orders) : void +>resolve : (value?: MyModule.MyModel[] | PromiseLike) => void +>orders : MyModule.MyModel[] + + }); + }); + } + + public async doStuff(id: number) { +>doStuff : (id: number) => Promise +>id : number + + return; + } +} + +=== tests/cases/compiler/mymodule.ts === +export interface MyModel { +>MyModel : MyModel + + id: number; +>id : number +} diff --git a/tests/baselines/reference/inferentialTypingObjectLiteralMethod1.symbols b/tests/baselines/reference/inferentialTypingObjectLiteralMethod1.symbols index 07812704840..37e58850d4f 100644 --- a/tests/baselines/reference/inferentialTypingObjectLiteralMethod1.symbols +++ b/tests/baselines/reference/inferentialTypingObjectLiteralMethod1.symbols @@ -5,7 +5,7 @@ interface Int { >U : Symbol(U, Decl(inferentialTypingObjectLiteralMethod1.ts, 0, 16)) method(x: T): U; ->method : Symbol(method, Decl(inferentialTypingObjectLiteralMethod1.ts, 0, 21)) +>method : Symbol(Int.method, Decl(inferentialTypingObjectLiteralMethod1.ts, 0, 21)) >x : Symbol(x, Decl(inferentialTypingObjectLiteralMethod1.ts, 1, 11)) >T : Symbol(T, Decl(inferentialTypingObjectLiteralMethod1.ts, 0, 14)) >U : Symbol(U, Decl(inferentialTypingObjectLiteralMethod1.ts, 0, 16)) diff --git a/tests/baselines/reference/inferentialTypingUsingApparentType3.symbols b/tests/baselines/reference/inferentialTypingUsingApparentType3.symbols index ac3058e8649..f5f73420fe3 100644 --- a/tests/baselines/reference/inferentialTypingUsingApparentType3.symbols +++ b/tests/baselines/reference/inferentialTypingUsingApparentType3.symbols @@ -4,7 +4,7 @@ interface Field { >T : Symbol(T, Decl(inferentialTypingUsingApparentType3.ts, 0, 16)) clean(input: T): T ->clean : Symbol(clean, Decl(inferentialTypingUsingApparentType3.ts, 0, 20)) +>clean : Symbol(Field.clean, Decl(inferentialTypingUsingApparentType3.ts, 0, 20)) >input : Symbol(input, Decl(inferentialTypingUsingApparentType3.ts, 1, 10)) >T : Symbol(T, Decl(inferentialTypingUsingApparentType3.ts, 0, 16)) >T : Symbol(T, Decl(inferentialTypingUsingApparentType3.ts, 0, 16)) @@ -15,7 +15,7 @@ class CharField implements Field { >Field : Symbol(Field, Decl(inferentialTypingUsingApparentType3.ts, 0, 0)) clean(input: string) { ->clean : Symbol(clean, Decl(inferentialTypingUsingApparentType3.ts, 4, 42)) +>clean : Symbol(CharField.clean, Decl(inferentialTypingUsingApparentType3.ts, 4, 42)) >input : Symbol(input, Decl(inferentialTypingUsingApparentType3.ts, 5, 10)) return "Yup"; @@ -27,7 +27,7 @@ class NumberField implements Field { >Field : Symbol(Field, Decl(inferentialTypingUsingApparentType3.ts, 0, 0)) clean(input: number) { ->clean : Symbol(clean, Decl(inferentialTypingUsingApparentType3.ts, 10, 44)) +>clean : Symbol(NumberField.clean, Decl(inferentialTypingUsingApparentType3.ts, 10, 44)) >input : Symbol(input, Decl(inferentialTypingUsingApparentType3.ts, 11, 10)) return 123; @@ -42,7 +42,7 @@ class ObjectField }> { >Field : Symbol(Field, Decl(inferentialTypingUsingApparentType3.ts, 0, 0)) constructor(public fields: T) { } ->fields : Symbol(fields, Decl(inferentialTypingUsingApparentType3.ts, 17, 16)) +>fields : Symbol(ObjectField.fields, Decl(inferentialTypingUsingApparentType3.ts, 17, 16)) >T : Symbol(T, Decl(inferentialTypingUsingApparentType3.ts, 16, 20)) } diff --git a/tests/baselines/reference/infiniteExpandingTypeThroughInheritanceInstantiation.symbols b/tests/baselines/reference/infiniteExpandingTypeThroughInheritanceInstantiation.symbols index 2640ec367dc..802d9c7af4f 100644 --- a/tests/baselines/reference/infiniteExpandingTypeThroughInheritanceInstantiation.symbols +++ b/tests/baselines/reference/infiniteExpandingTypeThroughInheritanceInstantiation.symbols @@ -4,7 +4,7 @@ interface A >T : Symbol(T, Decl(infiniteExpandingTypeThroughInheritanceInstantiation.ts, 0, 12)) { x: A> ->x : Symbol(x, Decl(infiniteExpandingTypeThroughInheritanceInstantiation.ts, 1, 1)) +>x : Symbol(A.x, Decl(infiniteExpandingTypeThroughInheritanceInstantiation.ts, 1, 1)) >A : Symbol(A, Decl(infiniteExpandingTypeThroughInheritanceInstantiation.ts, 0, 0)) >B : Symbol(B, Decl(infiniteExpandingTypeThroughInheritanceInstantiation.ts, 3, 1)) >T : Symbol(T, Decl(infiniteExpandingTypeThroughInheritanceInstantiation.ts, 0, 12)) @@ -17,7 +17,7 @@ interface B extends A // error >T : Symbol(T, Decl(infiniteExpandingTypeThroughInheritanceInstantiation.ts, 5, 12)) { x: B> ->x : Symbol(x, Decl(infiniteExpandingTypeThroughInheritanceInstantiation.ts, 6, 1)) +>x : Symbol(B.x, Decl(infiniteExpandingTypeThroughInheritanceInstantiation.ts, 6, 1)) >B : Symbol(B, Decl(infiniteExpandingTypeThroughInheritanceInstantiation.ts, 3, 1)) >A : Symbol(A, Decl(infiniteExpandingTypeThroughInheritanceInstantiation.ts, 0, 0)) >T : Symbol(T, Decl(infiniteExpandingTypeThroughInheritanceInstantiation.ts, 5, 12)) diff --git a/tests/baselines/reference/infiniteExpansionThroughInstantiation2.symbols b/tests/baselines/reference/infiniteExpansionThroughInstantiation2.symbols index 0c5b0cf5a65..37d2151feba 100644 --- a/tests/baselines/reference/infiniteExpansionThroughInstantiation2.symbols +++ b/tests/baselines/reference/infiniteExpansionThroughInstantiation2.symbols @@ -9,7 +9,7 @@ interface AA> // now an error due to referencing type parameter >T : Symbol(T, Decl(infiniteExpansionThroughInstantiation2.ts, 3, 13)) { x: T ->x : Symbol(x, Decl(infiniteExpansionThroughInstantiation2.ts, 4, 1)) +>x : Symbol(AA.x, Decl(infiniteExpansionThroughInstantiation2.ts, 4, 1)) >T : Symbol(T, Decl(infiniteExpansionThroughInstantiation2.ts, 3, 13)) } diff --git a/tests/baselines/reference/infiniteExpansionThroughTypeInference.symbols b/tests/baselines/reference/infiniteExpansionThroughTypeInference.symbols index ba90d5c74a8..db6ec796be3 100644 --- a/tests/baselines/reference/infiniteExpansionThroughTypeInference.symbols +++ b/tests/baselines/reference/infiniteExpansionThroughTypeInference.symbols @@ -4,13 +4,13 @@ interface G { >T : Symbol(T, Decl(infiniteExpansionThroughTypeInference.ts, 0, 12)) x: G> // infinitely expanding type reference ->x : Symbol(x, Decl(infiniteExpansionThroughTypeInference.ts, 0, 16)) +>x : Symbol(G.x, Decl(infiniteExpansionThroughTypeInference.ts, 0, 16)) >G : Symbol(G, Decl(infiniteExpansionThroughTypeInference.ts, 0, 0)) >G : Symbol(G, Decl(infiniteExpansionThroughTypeInference.ts, 0, 0)) >T : Symbol(T, Decl(infiniteExpansionThroughTypeInference.ts, 0, 12)) y: T ->y : Symbol(y, Decl(infiniteExpansionThroughTypeInference.ts, 1, 14)) +>y : Symbol(G.y, Decl(infiniteExpansionThroughTypeInference.ts, 1, 14)) >T : Symbol(T, Decl(infiniteExpansionThroughTypeInference.ts, 0, 12)) } diff --git a/tests/baselines/reference/infinitelyExpandingBaseTypes1.symbols b/tests/baselines/reference/infinitelyExpandingBaseTypes1.symbols index dc3456602bb..2491583471a 100644 --- a/tests/baselines/reference/infinitelyExpandingBaseTypes1.symbols +++ b/tests/baselines/reference/infinitelyExpandingBaseTypes1.symbols @@ -4,7 +4,7 @@ interface A >T : Symbol(T, Decl(infinitelyExpandingBaseTypes1.ts, 0, 12)) { x : A> ->x : Symbol(x, Decl(infinitelyExpandingBaseTypes1.ts, 1, 1)) +>x : Symbol(A.x, Decl(infinitelyExpandingBaseTypes1.ts, 1, 1)) >A : Symbol(A, Decl(infinitelyExpandingBaseTypes1.ts, 0, 0)) >A : Symbol(A, Decl(infinitelyExpandingBaseTypes1.ts, 0, 0)) >T : Symbol(T, Decl(infinitelyExpandingBaseTypes1.ts, 0, 12)) @@ -15,7 +15,7 @@ interface B >T : Symbol(T, Decl(infinitelyExpandingBaseTypes1.ts, 5, 12)) { x : B ->x : Symbol(x, Decl(infinitelyExpandingBaseTypes1.ts, 6, 1)) +>x : Symbol(B.x, Decl(infinitelyExpandingBaseTypes1.ts, 6, 1)) >B : Symbol(B, Decl(infinitelyExpandingBaseTypes1.ts, 3, 1)) >T : Symbol(T, Decl(infinitelyExpandingBaseTypes1.ts, 5, 12)) } diff --git a/tests/baselines/reference/infinitelyExpandingBaseTypes2.symbols b/tests/baselines/reference/infinitelyExpandingBaseTypes2.symbols index 8379ea16878..7a5d41201c8 100644 --- a/tests/baselines/reference/infinitelyExpandingBaseTypes2.symbols +++ b/tests/baselines/reference/infinitelyExpandingBaseTypes2.symbols @@ -4,7 +4,7 @@ interface A >T : Symbol(T, Decl(infinitelyExpandingBaseTypes2.ts, 0, 12)) { x : A<()=>T> ->x : Symbol(x, Decl(infinitelyExpandingBaseTypes2.ts, 1, 1)) +>x : Symbol(A.x, Decl(infinitelyExpandingBaseTypes2.ts, 1, 1)) >A : Symbol(A, Decl(infinitelyExpandingBaseTypes2.ts, 0, 0)) >T : Symbol(T, Decl(infinitelyExpandingBaseTypes2.ts, 0, 12)) } @@ -14,7 +14,7 @@ interface B >T : Symbol(T, Decl(infinitelyExpandingBaseTypes2.ts, 5, 12)) { x : B<()=>T> ->x : Symbol(x, Decl(infinitelyExpandingBaseTypes2.ts, 6, 1)) +>x : Symbol(B.x, Decl(infinitelyExpandingBaseTypes2.ts, 6, 1)) >B : Symbol(B, Decl(infinitelyExpandingBaseTypes2.ts, 3, 1)) >T : Symbol(T, Decl(infinitelyExpandingBaseTypes2.ts, 5, 12)) } diff --git a/tests/baselines/reference/infinitelyExpandingTypeAssignability.symbols b/tests/baselines/reference/infinitelyExpandingTypeAssignability.symbols index 1907ff33cf6..75274353304 100644 --- a/tests/baselines/reference/infinitelyExpandingTypeAssignability.symbols +++ b/tests/baselines/reference/infinitelyExpandingTypeAssignability.symbols @@ -4,7 +4,7 @@ interface A { >T : Symbol(T, Decl(infinitelyExpandingTypeAssignability.ts, 0, 12)) x : T ->x : Symbol(x, Decl(infinitelyExpandingTypeAssignability.ts, 0, 16)) +>x : Symbol(A.x, Decl(infinitelyExpandingTypeAssignability.ts, 0, 16)) >T : Symbol(T, Decl(infinitelyExpandingTypeAssignability.ts, 0, 12)) } diff --git a/tests/baselines/reference/infinitelyExpandingTypes3.symbols b/tests/baselines/reference/infinitelyExpandingTypes3.symbols index fbc14afc80f..18aed686442 100644 --- a/tests/baselines/reference/infinitelyExpandingTypes3.symbols +++ b/tests/baselines/reference/infinitelyExpandingTypes3.symbols @@ -4,16 +4,16 @@ interface List { >T : Symbol(T, Decl(infinitelyExpandingTypes3.ts, 0, 15)) data: T; ->data : Symbol(data, Decl(infinitelyExpandingTypes3.ts, 0, 19)) +>data : Symbol(List.data, Decl(infinitelyExpandingTypes3.ts, 0, 19)) >T : Symbol(T, Decl(infinitelyExpandingTypes3.ts, 0, 15)) next: List; // will be recursive reference when OwnerList is expanded ->next : Symbol(next, Decl(infinitelyExpandingTypes3.ts, 1, 12)) +>next : Symbol(List.next, Decl(infinitelyExpandingTypes3.ts, 1, 12)) >List : Symbol(List, Decl(infinitelyExpandingTypes3.ts, 0, 0)) >T : Symbol(T, Decl(infinitelyExpandingTypes3.ts, 0, 15)) owner: OwnerList; ->owner : Symbol(owner, Decl(infinitelyExpandingTypes3.ts, 2, 18)) +>owner : Symbol(List.owner, Decl(infinitelyExpandingTypes3.ts, 2, 18)) >OwnerList : Symbol(OwnerList, Decl(infinitelyExpandingTypes3.ts, 4, 1)) >T : Symbol(T, Decl(infinitelyExpandingTypes3.ts, 0, 15)) } @@ -26,7 +26,7 @@ interface OwnerList extends List> { >U : Symbol(U, Decl(infinitelyExpandingTypes3.ts, 6, 20)) name: string; ->name : Symbol(name, Decl(infinitelyExpandingTypes3.ts, 6, 46)) +>name : Symbol(OwnerList.name, Decl(infinitelyExpandingTypes3.ts, 6, 46)) } interface OwnerList2 extends List> { @@ -37,7 +37,7 @@ interface OwnerList2 extends List> { >U : Symbol(U, Decl(infinitelyExpandingTypes3.ts, 10, 21)) name: string; ->name : Symbol(name, Decl(infinitelyExpandingTypes3.ts, 10, 47)) +>name : Symbol(OwnerList2.name, Decl(infinitelyExpandingTypes3.ts, 10, 47)) } var o1: OwnerList; diff --git a/tests/baselines/reference/infinitelyExpandingTypes4.symbols b/tests/baselines/reference/infinitelyExpandingTypes4.symbols index af0aee01216..e394c612171 100644 --- a/tests/baselines/reference/infinitelyExpandingTypes4.symbols +++ b/tests/baselines/reference/infinitelyExpandingTypes4.symbols @@ -5,7 +5,7 @@ interface Query { // ... groupBy(keySelector: (item: T) => K): Query>; ->groupBy : Symbol(groupBy, Decl(infinitelyExpandingTypes4.ts, 0, 20)) +>groupBy : Symbol(Query.groupBy, Decl(infinitelyExpandingTypes4.ts, 0, 20)) >K : Symbol(K, Decl(infinitelyExpandingTypes4.ts, 2, 12)) >keySelector : Symbol(keySelector, Decl(infinitelyExpandingTypes4.ts, 2, 15)) >item : Symbol(item, Decl(infinitelyExpandingTypes4.ts, 2, 29)) @@ -25,7 +25,7 @@ interface QueryEnumerator { // ... groupBy(keySelector: (item: T) => K): QueryEnumerator>; ->groupBy : Symbol(groupBy, Decl(infinitelyExpandingTypes4.ts, 6, 30)) +>groupBy : Symbol(QueryEnumerator.groupBy, Decl(infinitelyExpandingTypes4.ts, 6, 30)) >K : Symbol(K, Decl(infinitelyExpandingTypes4.ts, 8, 12)) >keySelector : Symbol(keySelector, Decl(infinitelyExpandingTypes4.ts, 8, 15)) >item : Symbol(item, Decl(infinitelyExpandingTypes4.ts, 8, 29)) @@ -47,7 +47,7 @@ interface Grouping extends Query { >T : Symbol(T, Decl(infinitelyExpandingTypes4.ts, 12, 21)) key(): K; ->key : Symbol(key, Decl(infinitelyExpandingTypes4.ts, 12, 43)) +>key : Symbol(Grouping.key, Decl(infinitelyExpandingTypes4.ts, 12, 43)) >K : Symbol(K, Decl(infinitelyExpandingTypes4.ts, 12, 19)) } diff --git a/tests/baselines/reference/infinitelyExpandingTypes5.symbols b/tests/baselines/reference/infinitelyExpandingTypes5.symbols index d67d605559e..32283da9c5d 100644 --- a/tests/baselines/reference/infinitelyExpandingTypes5.symbols +++ b/tests/baselines/reference/infinitelyExpandingTypes5.symbols @@ -4,7 +4,7 @@ interface Query { >T : Symbol(T, Decl(infinitelyExpandingTypes5.ts, 0, 16)) foo(x: T): Query; ->foo : Symbol(foo, Decl(infinitelyExpandingTypes5.ts, 0, 20)) +>foo : Symbol(Query.foo, Decl(infinitelyExpandingTypes5.ts, 0, 20)) >x : Symbol(x, Decl(infinitelyExpandingTypes5.ts, 1, 8)) >T : Symbol(T, Decl(infinitelyExpandingTypes5.ts, 0, 16)) >Query : Symbol(Query, Decl(infinitelyExpandingTypes5.ts, 0, 0)) diff --git a/tests/baselines/reference/infinitelyExpandingTypesNonGenericBase.symbols b/tests/baselines/reference/infinitelyExpandingTypesNonGenericBase.symbols index dfa5d6e03ed..7c54dd7c12c 100644 --- a/tests/baselines/reference/infinitelyExpandingTypesNonGenericBase.symbols +++ b/tests/baselines/reference/infinitelyExpandingTypesNonGenericBase.symbols @@ -4,7 +4,7 @@ class Functionality { >V : Symbol(V, Decl(infinitelyExpandingTypesNonGenericBase.ts, 0, 20)) property: Options; ->property : Symbol(property, Decl(infinitelyExpandingTypesNonGenericBase.ts, 0, 24)) +>property : Symbol(Functionality.property, Decl(infinitelyExpandingTypesNonGenericBase.ts, 0, 24)) >Options : Symbol(Options, Decl(infinitelyExpandingTypesNonGenericBase.ts, 13, 1)) >V : Symbol(V, Decl(infinitelyExpandingTypesNonGenericBase.ts, 0, 20)) } @@ -19,7 +19,7 @@ class A extends Base { >Base : Symbol(Base, Decl(infinitelyExpandingTypesNonGenericBase.ts, 2, 1)) options: Options[]>; ->options : Symbol(options, Decl(infinitelyExpandingTypesNonGenericBase.ts, 7, 25)) +>options : Symbol(A.options, Decl(infinitelyExpandingTypesNonGenericBase.ts, 7, 25)) >Options : Symbol(Options, Decl(infinitelyExpandingTypesNonGenericBase.ts, 13, 1)) >Functionality : Symbol(Functionality, Decl(infinitelyExpandingTypesNonGenericBase.ts, 0, 0)) >T : Symbol(T, Decl(infinitelyExpandingTypesNonGenericBase.ts, 7, 8)) @@ -30,7 +30,7 @@ interface OptionsBase { >T : Symbol(T, Decl(infinitelyExpandingTypesNonGenericBase.ts, 11, 22)) Options: Options; ->Options : Symbol(Options, Decl(infinitelyExpandingTypesNonGenericBase.ts, 11, 26)) +>Options : Symbol(OptionsBase.Options, Decl(infinitelyExpandingTypesNonGenericBase.ts, 11, 26)) >Options : Symbol(Options, Decl(infinitelyExpandingTypesNonGenericBase.ts, 13, 1)) >T : Symbol(T, Decl(infinitelyExpandingTypesNonGenericBase.ts, 11, 22)) } diff --git a/tests/baselines/reference/infinitelyGenerativeInheritance1.symbols b/tests/baselines/reference/infinitelyGenerativeInheritance1.symbols index 54ecd9c965b..8b8e05c444a 100644 --- a/tests/baselines/reference/infinitelyGenerativeInheritance1.symbols +++ b/tests/baselines/reference/infinitelyGenerativeInheritance1.symbols @@ -4,11 +4,11 @@ interface Stack { >T : Symbol(T, Decl(infinitelyGenerativeInheritance1.ts, 0, 16)) pop(): T ->pop : Symbol(pop, Decl(infinitelyGenerativeInheritance1.ts, 0, 20)) +>pop : Symbol(Stack.pop, Decl(infinitelyGenerativeInheritance1.ts, 0, 20)) >T : Symbol(T, Decl(infinitelyGenerativeInheritance1.ts, 0, 16)) zip(a: Stack): Stack<{ x: T; y: S }> ->zip : Symbol(zip, Decl(infinitelyGenerativeInheritance1.ts, 1, 14)) +>zip : Symbol(Stack.zip, Decl(infinitelyGenerativeInheritance1.ts, 1, 14)) >S : Symbol(S, Decl(infinitelyGenerativeInheritance1.ts, 2, 10)) >a : Symbol(a, Decl(infinitelyGenerativeInheritance1.ts, 2, 13)) >Stack : Symbol(Stack, Decl(infinitelyGenerativeInheritance1.ts, 0, 0)) @@ -27,7 +27,7 @@ interface MyStack extends Stack { >T : Symbol(T, Decl(infinitelyGenerativeInheritance1.ts, 5, 18)) zip(a: Stack): Stack<{ x: T; y: S }> ->zip : Symbol(zip, Decl(infinitelyGenerativeInheritance1.ts, 5, 39)) +>zip : Symbol(MyStack.zip, Decl(infinitelyGenerativeInheritance1.ts, 5, 39)) >S : Symbol(S, Decl(infinitelyGenerativeInheritance1.ts, 6, 10)) >a : Symbol(a, Decl(infinitelyGenerativeInheritance1.ts, 6, 13)) >Stack : Symbol(Stack, Decl(infinitelyGenerativeInheritance1.ts, 0, 0)) diff --git a/tests/baselines/reference/inheritSameNamePrivatePropertiesFromSameOrigin.symbols b/tests/baselines/reference/inheritSameNamePrivatePropertiesFromSameOrigin.symbols index 55655889ca4..d7904335010 100644 --- a/tests/baselines/reference/inheritSameNamePrivatePropertiesFromSameOrigin.symbols +++ b/tests/baselines/reference/inheritSameNamePrivatePropertiesFromSameOrigin.symbols @@ -3,7 +3,7 @@ class B { >B : Symbol(B, Decl(inheritSameNamePrivatePropertiesFromSameOrigin.ts, 0, 0)) private x: number; ->x : Symbol(x, Decl(inheritSameNamePrivatePropertiesFromSameOrigin.ts, 0, 9)) +>x : Symbol(B.x, Decl(inheritSameNamePrivatePropertiesFromSameOrigin.ts, 0, 9)) } class C extends B { } >C : Symbol(C, Decl(inheritSameNamePrivatePropertiesFromSameOrigin.ts, 2, 1)) @@ -19,5 +19,5 @@ interface A extends C, C2 { // ok >C2 : Symbol(C2, Decl(inheritSameNamePrivatePropertiesFromSameOrigin.ts, 3, 21)) y: string; ->y : Symbol(y, Decl(inheritSameNamePrivatePropertiesFromSameOrigin.ts, 7, 27)) +>y : Symbol(A.y, Decl(inheritSameNamePrivatePropertiesFromSameOrigin.ts, 7, 27)) } diff --git a/tests/baselines/reference/inheritanceMemberFuncOverridingMethod.symbols b/tests/baselines/reference/inheritanceMemberFuncOverridingMethod.symbols index 4c496fcc240..696ac88cd78 100644 --- a/tests/baselines/reference/inheritanceMemberFuncOverridingMethod.symbols +++ b/tests/baselines/reference/inheritanceMemberFuncOverridingMethod.symbols @@ -3,7 +3,7 @@ class a { >a : Symbol(a, Decl(inheritanceMemberFuncOverridingMethod.ts, 0, 0)) x() { ->x : Symbol(x, Decl(inheritanceMemberFuncOverridingMethod.ts, 0, 9)) +>x : Symbol(a.x, Decl(inheritanceMemberFuncOverridingMethod.ts, 0, 9)) return "10"; } @@ -14,7 +14,7 @@ class b extends a { >a : Symbol(a, Decl(inheritanceMemberFuncOverridingMethod.ts, 0, 0)) x() { ->x : Symbol(x, Decl(inheritanceMemberFuncOverridingMethod.ts, 6, 19)) +>x : Symbol(b.x, Decl(inheritanceMemberFuncOverridingMethod.ts, 6, 19)) return "20"; } diff --git a/tests/baselines/reference/inheritanceMemberPropertyOverridingProperty.symbols b/tests/baselines/reference/inheritanceMemberPropertyOverridingProperty.symbols index bf755882165..6a3f8e50206 100644 --- a/tests/baselines/reference/inheritanceMemberPropertyOverridingProperty.symbols +++ b/tests/baselines/reference/inheritanceMemberPropertyOverridingProperty.symbols @@ -3,7 +3,7 @@ class a { >a : Symbol(a, Decl(inheritanceMemberPropertyOverridingProperty.ts, 0, 0)) x: () => string; ->x : Symbol(x, Decl(inheritanceMemberPropertyOverridingProperty.ts, 0, 9)) +>x : Symbol(a.x, Decl(inheritanceMemberPropertyOverridingProperty.ts, 0, 9)) } class b extends a { @@ -11,5 +11,5 @@ class b extends a { >a : Symbol(a, Decl(inheritanceMemberPropertyOverridingProperty.ts, 0, 0)) x: () => string; ->x : Symbol(x, Decl(inheritanceMemberPropertyOverridingProperty.ts, 4, 19)) +>x : Symbol(b.x, Decl(inheritanceMemberPropertyOverridingProperty.ts, 4, 19)) } diff --git a/tests/baselines/reference/inheritanceOfGenericConstructorMethod1.symbols b/tests/baselines/reference/inheritanceOfGenericConstructorMethod1.symbols index 108170e8895..dad2ac6f886 100644 --- a/tests/baselines/reference/inheritanceOfGenericConstructorMethod1.symbols +++ b/tests/baselines/reference/inheritanceOfGenericConstructorMethod1.symbols @@ -12,7 +12,7 @@ class B extends A {} var a = new A(); >a : Symbol(a, Decl(inheritanceOfGenericConstructorMethod1.ts, 2, 3)) >A : Symbol(A, Decl(inheritanceOfGenericConstructorMethod1.ts, 0, 0)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) var b1 = new B(); // no error >b1 : Symbol(b1, Decl(inheritanceOfGenericConstructorMethod1.ts, 3, 3)) @@ -21,12 +21,12 @@ var b1 = new B(); // no error var b2: B = new B(); // no error >b2 : Symbol(b2, Decl(inheritanceOfGenericConstructorMethod1.ts, 4, 3)) >B : Symbol(B, Decl(inheritanceOfGenericConstructorMethod1.ts, 0, 14)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >B : Symbol(B, Decl(inheritanceOfGenericConstructorMethod1.ts, 0, 14)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) var b3 = new B(); // error, could not select overload for 'new' expression >b3 : Symbol(b3, Decl(inheritanceOfGenericConstructorMethod1.ts, 5, 3)) >B : Symbol(B, Decl(inheritanceOfGenericConstructorMethod1.ts, 0, 14)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) diff --git a/tests/baselines/reference/inheritanceStaticFunctionOverridingInstanceProperty.symbols b/tests/baselines/reference/inheritanceStaticFunctionOverridingInstanceProperty.symbols index bf2f3d3aa15..8c0be543d99 100644 --- a/tests/baselines/reference/inheritanceStaticFunctionOverridingInstanceProperty.symbols +++ b/tests/baselines/reference/inheritanceStaticFunctionOverridingInstanceProperty.symbols @@ -3,7 +3,7 @@ class a { >a : Symbol(a, Decl(inheritanceStaticFunctionOverridingInstanceProperty.ts, 0, 0)) x: string; ->x : Symbol(x, Decl(inheritanceStaticFunctionOverridingInstanceProperty.ts, 0, 9)) +>x : Symbol(a.x, Decl(inheritanceStaticFunctionOverridingInstanceProperty.ts, 0, 9)) } class b extends a { diff --git a/tests/baselines/reference/inheritedGenericCallSignature.symbols b/tests/baselines/reference/inheritedGenericCallSignature.symbols index f70e4c7d75f..57469f4dad8 100644 --- a/tests/baselines/reference/inheritedGenericCallSignature.symbols +++ b/tests/baselines/reference/inheritedGenericCallSignature.symbols @@ -24,7 +24,7 @@ interface I2 extends I1 { >T : Symbol(T, Decl(inheritedGenericCallSignature.ts, 12, 13)) b: T; ->b : Symbol(b, Decl(inheritedGenericCallSignature.ts, 12, 33)) +>b : Symbol(I2.b, Decl(inheritedGenericCallSignature.ts, 12, 33)) >T : Symbol(T, Decl(inheritedGenericCallSignature.ts, 12, 13)) } @@ -34,7 +34,7 @@ interface I2 extends I1 { var x: I2; >x : Symbol(x, Decl(inheritedGenericCallSignature.ts, 20, 3)) >I2 : Symbol(I2, Decl(inheritedGenericCallSignature.ts, 8, 19)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) diff --git a/tests/baselines/reference/inheritedMembersAndIndexSignaturesFromDifferentBases2.symbols b/tests/baselines/reference/inheritedMembersAndIndexSignaturesFromDifferentBases2.symbols index 2cc31a14f7f..167cdaff838 100644 --- a/tests/baselines/reference/inheritedMembersAndIndexSignaturesFromDifferentBases2.symbols +++ b/tests/baselines/reference/inheritedMembersAndIndexSignaturesFromDifferentBases2.symbols @@ -12,7 +12,7 @@ interface B { >B : Symbol(B, Decl(inheritedMembersAndIndexSignaturesFromDifferentBases2.ts, 2, 1)) foo: number; ->foo : Symbol(foo, Decl(inheritedMembersAndIndexSignaturesFromDifferentBases2.ts, 4, 13)) +>foo : Symbol(B.foo, Decl(inheritedMembersAndIndexSignaturesFromDifferentBases2.ts, 4, 13)) } interface C extends B, A { } // Should succeed diff --git a/tests/baselines/reference/innerAliases2.symbols b/tests/baselines/reference/innerAliases2.symbols index 541fc03ffbd..31198f9276c 100644 --- a/tests/baselines/reference/innerAliases2.symbols +++ b/tests/baselines/reference/innerAliases2.symbols @@ -6,7 +6,7 @@ module _provider { >UsefulClass : Symbol(UsefulClass, Decl(innerAliases2.ts, 0, 18)) public foo() { ->foo : Symbol(foo, Decl(innerAliases2.ts, 1, 42)) +>foo : Symbol(UsefulClass.foo, Decl(innerAliases2.ts, 1, 42)) } } } diff --git a/tests/baselines/reference/innerBoundLambdaEmit.symbols b/tests/baselines/reference/innerBoundLambdaEmit.symbols index 48bbe1fad4b..8d886cc433a 100644 --- a/tests/baselines/reference/innerBoundLambdaEmit.symbols +++ b/tests/baselines/reference/innerBoundLambdaEmit.symbols @@ -13,7 +13,7 @@ interface Array { >T : Symbol(T, Decl(lib.d.ts, --, --), Decl(innerBoundLambdaEmit.ts, 5, 16)) toFoo(): M.Foo ->toFoo : Symbol(toFoo, Decl(innerBoundLambdaEmit.ts, 5, 20)) +>toFoo : Symbol(Array.toFoo, Decl(innerBoundLambdaEmit.ts, 5, 20)) >M : Symbol(M, Decl(innerBoundLambdaEmit.ts, 0, 0)) >Foo : Symbol(M.Foo, Decl(innerBoundLambdaEmit.ts, 0, 10)) } diff --git a/tests/baselines/reference/innerExtern.symbols b/tests/baselines/reference/innerExtern.symbols index 142af91a46f..9a56f4eed12 100644 --- a/tests/baselines/reference/innerExtern.symbols +++ b/tests/baselines/reference/innerExtern.symbols @@ -15,7 +15,7 @@ module A { >C : Symbol(C, Decl(innerExtern.ts, 4, 21)) x = BB.Elephant.X; ->x : Symbol(x, Decl(innerExtern.ts, 5, 24)) +>x : Symbol(C.x, Decl(innerExtern.ts, 5, 24)) >BB.Elephant : Symbol(BB.Elephant, Decl(innerExtern.ts, 2, 18)) >BB : Symbol(BB, Decl(innerExtern.ts, 0, 10)) >Elephant : Symbol(BB.Elephant, Decl(innerExtern.ts, 2, 18)) diff --git a/tests/baselines/reference/innerTypeParameterShadowingOuterOne.symbols b/tests/baselines/reference/innerTypeParameterShadowingOuterOne.symbols index 36502a9988d..d3488b4db72 100644 --- a/tests/baselines/reference/innerTypeParameterShadowingOuterOne.symbols +++ b/tests/baselines/reference/innerTypeParameterShadowingOuterOne.symbols @@ -5,12 +5,12 @@ function f() { >f : Symbol(f, Decl(innerTypeParameterShadowingOuterOne.ts, 0, 0)) >T : Symbol(T, Decl(innerTypeParameterShadowingOuterOne.ts, 3, 11)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function g() { >g : Symbol(g, Decl(innerTypeParameterShadowingOuterOne.ts, 3, 30)) >T : Symbol(T, Decl(innerTypeParameterShadowingOuterOne.ts, 4, 15)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) var x: T; >x : Symbol(x, Decl(innerTypeParameterShadowingOuterOne.ts, 5, 11)) @@ -34,16 +34,16 @@ function f() { function f2() { >f2 : Symbol(f2, Decl(innerTypeParameterShadowingOuterOne.ts, 10, 1)) >T : Symbol(T, Decl(innerTypeParameterShadowingOuterOne.ts, 12, 12)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >U : Symbol(U, Decl(innerTypeParameterShadowingOuterOne.ts, 12, 27)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function g() { >g : Symbol(g, Decl(innerTypeParameterShadowingOuterOne.ts, 12, 47)) >T : Symbol(T, Decl(innerTypeParameterShadowingOuterOne.ts, 13, 15)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >U : Symbol(U, Decl(innerTypeParameterShadowingOuterOne.ts, 13, 32)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) var x: U; >x : Symbol(x, Decl(innerTypeParameterShadowingOuterOne.ts, 14, 11)) diff --git a/tests/baselines/reference/innerTypeParameterShadowingOuterOne2.symbols b/tests/baselines/reference/innerTypeParameterShadowingOuterOne2.symbols index e19ab7aad28..1a54ab4024a 100644 --- a/tests/baselines/reference/innerTypeParameterShadowingOuterOne2.symbols +++ b/tests/baselines/reference/innerTypeParameterShadowingOuterOne2.symbols @@ -5,12 +5,12 @@ class C { >C : Symbol(C, Decl(innerTypeParameterShadowingOuterOne2.ts, 0, 0)) >T : Symbol(T, Decl(innerTypeParameterShadowingOuterOne2.ts, 3, 8)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) g() { ->g : Symbol(g, Decl(innerTypeParameterShadowingOuterOne2.ts, 3, 25)) +>g : Symbol(C.g, Decl(innerTypeParameterShadowingOuterOne2.ts, 3, 25)) >T : Symbol(T, Decl(innerTypeParameterShadowingOuterOne2.ts, 4, 6)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) var x: T; >x : Symbol(x, Decl(innerTypeParameterShadowingOuterOne2.ts, 5, 11)) @@ -23,7 +23,7 @@ class C { } h() { ->h : Symbol(h, Decl(innerTypeParameterShadowingOuterOne2.ts, 7, 5)) +>h : Symbol(C.h, Decl(innerTypeParameterShadowingOuterOne2.ts, 7, 5)) var x: T; >x : Symbol(x, Decl(innerTypeParameterShadowingOuterOne2.ts, 10, 11)) @@ -39,16 +39,16 @@ class C { class C2 { >C2 : Symbol(C2, Decl(innerTypeParameterShadowingOuterOne2.ts, 13, 1)) >T : Symbol(T, Decl(innerTypeParameterShadowingOuterOne2.ts, 15, 9)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >U : Symbol(U, Decl(innerTypeParameterShadowingOuterOne2.ts, 15, 24)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) g() { ->g : Symbol(g, Decl(innerTypeParameterShadowingOuterOne2.ts, 15, 42)) +>g : Symbol(C2.g, Decl(innerTypeParameterShadowingOuterOne2.ts, 15, 42)) >T : Symbol(T, Decl(innerTypeParameterShadowingOuterOne2.ts, 16, 6)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >U : Symbol(U, Decl(innerTypeParameterShadowingOuterOne2.ts, 16, 23)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) var x: U; >x : Symbol(x, Decl(innerTypeParameterShadowingOuterOne2.ts, 17, 11)) @@ -61,7 +61,7 @@ class C2 { } h() { ->h : Symbol(h, Decl(innerTypeParameterShadowingOuterOne2.ts, 19, 5)) +>h : Symbol(C2.h, Decl(innerTypeParameterShadowingOuterOne2.ts, 19, 5)) var x: U; >x : Symbol(x, Decl(innerTypeParameterShadowingOuterOne2.ts, 22, 11)) diff --git a/tests/baselines/reference/instanceAndStaticDeclarations1.symbols b/tests/baselines/reference/instanceAndStaticDeclarations1.symbols index 8e9d4a320a0..270f911e86c 100644 --- a/tests/baselines/reference/instanceAndStaticDeclarations1.symbols +++ b/tests/baselines/reference/instanceAndStaticDeclarations1.symbols @@ -5,28 +5,28 @@ class Point { >Point : Symbol(Point, Decl(instanceAndStaticDeclarations1.ts, 0, 0)) constructor(public x: number, public y: number) { } ->x : Symbol(x, Decl(instanceAndStaticDeclarations1.ts, 3, 16)) ->y : Symbol(y, Decl(instanceAndStaticDeclarations1.ts, 3, 33)) +>x : Symbol(Point.x, Decl(instanceAndStaticDeclarations1.ts, 3, 16)) +>y : Symbol(Point.y, Decl(instanceAndStaticDeclarations1.ts, 3, 33)) public distance(p: Point) { ->distance : Symbol(distance, Decl(instanceAndStaticDeclarations1.ts, 3, 55)) +>distance : Symbol(Point.distance, Decl(instanceAndStaticDeclarations1.ts, 3, 55)) >p : Symbol(p, Decl(instanceAndStaticDeclarations1.ts, 4, 20)) >Point : Symbol(Point, Decl(instanceAndStaticDeclarations1.ts, 0, 0)) var dx = this.x - p.x; >dx : Symbol(dx, Decl(instanceAndStaticDeclarations1.ts, 5, 11)) ->this.x : Symbol(x, Decl(instanceAndStaticDeclarations1.ts, 3, 16)) +>this.x : Symbol(Point.x, Decl(instanceAndStaticDeclarations1.ts, 3, 16)) >this : Symbol(Point, Decl(instanceAndStaticDeclarations1.ts, 0, 0)) ->x : Symbol(x, Decl(instanceAndStaticDeclarations1.ts, 3, 16)) +>x : Symbol(Point.x, Decl(instanceAndStaticDeclarations1.ts, 3, 16)) >p.x : Symbol(Point.x, Decl(instanceAndStaticDeclarations1.ts, 3, 16)) >p : Symbol(p, Decl(instanceAndStaticDeclarations1.ts, 4, 20)) >x : Symbol(Point.x, Decl(instanceAndStaticDeclarations1.ts, 3, 16)) var dy = this.y - p.y; >dy : Symbol(dy, Decl(instanceAndStaticDeclarations1.ts, 6, 11)) ->this.y : Symbol(y, Decl(instanceAndStaticDeclarations1.ts, 3, 33)) +>this.y : Symbol(Point.y, Decl(instanceAndStaticDeclarations1.ts, 3, 33)) >this : Symbol(Point, Decl(instanceAndStaticDeclarations1.ts, 0, 0)) ->y : Symbol(y, Decl(instanceAndStaticDeclarations1.ts, 3, 33)) +>y : Symbol(Point.y, Decl(instanceAndStaticDeclarations1.ts, 3, 33)) >p.y : Symbol(Point.y, Decl(instanceAndStaticDeclarations1.ts, 3, 33)) >p : Symbol(p, Decl(instanceAndStaticDeclarations1.ts, 4, 20)) >y : Symbol(Point.y, Decl(instanceAndStaticDeclarations1.ts, 3, 33)) diff --git a/tests/baselines/reference/instanceMemberInitialization.symbols b/tests/baselines/reference/instanceMemberInitialization.symbols index adc192208ca..42117133759 100644 --- a/tests/baselines/reference/instanceMemberInitialization.symbols +++ b/tests/baselines/reference/instanceMemberInitialization.symbols @@ -3,7 +3,7 @@ class C { >C : Symbol(C, Decl(instanceMemberInitialization.ts, 0, 0)) x = 1; ->x : Symbol(x, Decl(instanceMemberInitialization.ts, 0, 9)) +>x : Symbol(C.x, Decl(instanceMemberInitialization.ts, 0, 9)) } var c = new C(); diff --git a/tests/baselines/reference/instanceOfAssignability.symbols b/tests/baselines/reference/instanceOfAssignability.symbols index 1bf39df2dd2..382ee29e34a 100644 --- a/tests/baselines/reference/instanceOfAssignability.symbols +++ b/tests/baselines/reference/instanceOfAssignability.symbols @@ -3,10 +3,10 @@ interface Base { >Base : Symbol(Base, Decl(instanceOfAssignability.ts, 0, 0)) foo: string|number; ->foo : Symbol(foo, Decl(instanceOfAssignability.ts, 0, 16)) +>foo : Symbol(Base.foo, Decl(instanceOfAssignability.ts, 0, 16)) optional?: number; ->optional : Symbol(optional, Decl(instanceOfAssignability.ts, 1, 20)) +>optional : Symbol(Base.optional, Decl(instanceOfAssignability.ts, 1, 20)) } // Derived1 is assignable to, but not a subtype of, Base @@ -15,7 +15,7 @@ class Derived1 implements Base { >Base : Symbol(Base, Decl(instanceOfAssignability.ts, 0, 0)) foo: string; ->foo : Symbol(foo, Decl(instanceOfAssignability.ts, 6, 32)) +>foo : Symbol(Derived1.foo, Decl(instanceOfAssignability.ts, 6, 32)) } // Derived2 is a subtype of Base that is not assignable to Derived1 class Derived2 implements Base { @@ -23,27 +23,27 @@ class Derived2 implements Base { >Base : Symbol(Base, Decl(instanceOfAssignability.ts, 0, 0)) foo: number; ->foo : Symbol(foo, Decl(instanceOfAssignability.ts, 10, 32)) +>foo : Symbol(Derived2.foo, Decl(instanceOfAssignability.ts, 10, 32)) optional: number; ->optional : Symbol(optional, Decl(instanceOfAssignability.ts, 11, 13)) +>optional : Symbol(Derived2.optional, Decl(instanceOfAssignability.ts, 11, 13)) } class Animal { >Animal : Symbol(Animal, Decl(instanceOfAssignability.ts, 13, 1)) move; ->move : Symbol(move, Decl(instanceOfAssignability.ts, 15, 14)) +>move : Symbol(Animal.move, Decl(instanceOfAssignability.ts, 15, 14)) } class Mammal extends Animal { milk; } >Mammal : Symbol(Mammal, Decl(instanceOfAssignability.ts, 17, 1)) >Animal : Symbol(Animal, Decl(instanceOfAssignability.ts, 13, 1)) ->milk : Symbol(milk, Decl(instanceOfAssignability.ts, 18, 29)) +>milk : Symbol(Mammal.milk, Decl(instanceOfAssignability.ts, 18, 29)) class Giraffe extends Mammal { neck; } >Giraffe : Symbol(Giraffe, Decl(instanceOfAssignability.ts, 18, 37)) >Mammal : Symbol(Mammal, Decl(instanceOfAssignability.ts, 17, 1)) ->neck : Symbol(neck, Decl(instanceOfAssignability.ts, 19, 30)) +>neck : Symbol(Giraffe.neck, Decl(instanceOfAssignability.ts, 19, 30)) function fn1(x: Array|Array|boolean) { >fn1 : Symbol(fn1, Decl(instanceOfAssignability.ts, 19, 38)) @@ -171,21 +171,21 @@ function fn7(x: Array|Array) { interface Alpha { a } >Alpha : Symbol(Alpha, Decl(instanceOfAssignability.ts, 75, 1)) ->a : Symbol(a, Decl(instanceOfAssignability.ts, 77, 17)) +>a : Symbol(Alpha.a, Decl(instanceOfAssignability.ts, 77, 17)) interface Beta { b } >Beta : Symbol(Beta, Decl(instanceOfAssignability.ts, 77, 21)) ->b : Symbol(b, Decl(instanceOfAssignability.ts, 78, 16)) +>b : Symbol(Beta.b, Decl(instanceOfAssignability.ts, 78, 16)) interface Gamma { c } >Gamma : Symbol(Gamma, Decl(instanceOfAssignability.ts, 78, 20)) ->c : Symbol(c, Decl(instanceOfAssignability.ts, 79, 17)) +>c : Symbol(Gamma.c, Decl(instanceOfAssignability.ts, 79, 17)) class ABC { a; b; c; } >ABC : Symbol(ABC, Decl(instanceOfAssignability.ts, 79, 21)) ->a : Symbol(a, Decl(instanceOfAssignability.ts, 80, 11)) ->b : Symbol(b, Decl(instanceOfAssignability.ts, 80, 14)) ->c : Symbol(c, Decl(instanceOfAssignability.ts, 80, 17)) +>a : Symbol(ABC.a, Decl(instanceOfAssignability.ts, 80, 11)) +>b : Symbol(ABC.b, Decl(instanceOfAssignability.ts, 80, 14)) +>c : Symbol(ABC.c, Decl(instanceOfAssignability.ts, 80, 17)) function fn8(x: Alpha|Beta|Gamma) { >fn8 : Symbol(fn8, Decl(instanceOfAssignability.ts, 80, 22)) diff --git a/tests/baselines/reference/instanceOfAssignability.types b/tests/baselines/reference/instanceOfAssignability.types index 12b2d326062..0a9e1a3e996 100644 --- a/tests/baselines/reference/instanceOfAssignability.types +++ b/tests/baselines/reference/instanceOfAssignability.types @@ -133,8 +133,8 @@ function fn5(x: Derived1) { // 1.5: y: Derived1 // Want: ??? let y = x; ->y : Derived1 ->x : Derived1 +>y : nothing +>x : nothing } } diff --git a/tests/baselines/reference/instanceOfInExternalModules.symbols b/tests/baselines/reference/instanceOfInExternalModules.symbols index 45d158fc62e..0834916c1b2 100644 --- a/tests/baselines/reference/instanceOfInExternalModules.symbols +++ b/tests/baselines/reference/instanceOfInExternalModules.symbols @@ -17,5 +17,5 @@ function IsFoo(value: any): boolean { === tests/cases/compiler/instanceOfInExternalModules_require.ts === export class Foo { foo: string; } >Foo : Symbol(Foo, Decl(instanceOfInExternalModules_require.ts, 0, 0)) ->foo : Symbol(foo, Decl(instanceOfInExternalModules_require.ts, 0, 18)) +>foo : Symbol(Foo.foo, Decl(instanceOfInExternalModules_require.ts, 0, 18)) diff --git a/tests/baselines/reference/instanceSubtypeCheck1.symbols b/tests/baselines/reference/instanceSubtypeCheck1.symbols index c7f4bb4152d..c9b1a7f0cba 100644 --- a/tests/baselines/reference/instanceSubtypeCheck1.symbols +++ b/tests/baselines/reference/instanceSubtypeCheck1.symbols @@ -4,7 +4,7 @@ interface A >T : Symbol(T, Decl(instanceSubtypeCheck1.ts, 0, 12)) { x: A> ->x : Symbol(x, Decl(instanceSubtypeCheck1.ts, 1, 1)) +>x : Symbol(A.x, Decl(instanceSubtypeCheck1.ts, 1, 1)) >A : Symbol(A, Decl(instanceSubtypeCheck1.ts, 0, 0)) >B : Symbol(B, Decl(instanceSubtypeCheck1.ts, 3, 1)) >T : Symbol(T, Decl(instanceSubtypeCheck1.ts, 0, 12)) @@ -17,7 +17,7 @@ interface B extends A >T : Symbol(T, Decl(instanceSubtypeCheck1.ts, 5, 12)) { x: B> ->x : Symbol(x, Decl(instanceSubtypeCheck1.ts, 6, 1)) +>x : Symbol(B.x, Decl(instanceSubtypeCheck1.ts, 6, 1)) >B : Symbol(B, Decl(instanceSubtypeCheck1.ts, 3, 1)) >A : Symbol(A, Decl(instanceSubtypeCheck1.ts, 0, 0)) >T : Symbol(T, Decl(instanceSubtypeCheck1.ts, 5, 12)) diff --git a/tests/baselines/reference/instantiateGenericClassWithZeroTypeArguments.symbols b/tests/baselines/reference/instantiateGenericClassWithZeroTypeArguments.symbols index b20387d9b80..499cd94f3ff 100644 --- a/tests/baselines/reference/instantiateGenericClassWithZeroTypeArguments.symbols +++ b/tests/baselines/reference/instantiateGenericClassWithZeroTypeArguments.symbols @@ -6,7 +6,7 @@ class C { >T : Symbol(T, Decl(instantiateGenericClassWithZeroTypeArguments.ts, 2, 8)) x: T; ->x : Symbol(x, Decl(instantiateGenericClassWithZeroTypeArguments.ts, 2, 12)) +>x : Symbol(C.x, Decl(instantiateGenericClassWithZeroTypeArguments.ts, 2, 12)) >T : Symbol(T, Decl(instantiateGenericClassWithZeroTypeArguments.ts, 2, 8)) } @@ -20,11 +20,11 @@ class D { >U : Symbol(U, Decl(instantiateGenericClassWithZeroTypeArguments.ts, 8, 10)) x: T ->x : Symbol(x, Decl(instantiateGenericClassWithZeroTypeArguments.ts, 8, 15)) +>x : Symbol(D.x, Decl(instantiateGenericClassWithZeroTypeArguments.ts, 8, 15)) >T : Symbol(T, Decl(instantiateGenericClassWithZeroTypeArguments.ts, 8, 8)) y: U ->y : Symbol(y, Decl(instantiateGenericClassWithZeroTypeArguments.ts, 9, 8)) +>y : Symbol(D.y, Decl(instantiateGenericClassWithZeroTypeArguments.ts, 9, 8)) >U : Symbol(U, Decl(instantiateGenericClassWithZeroTypeArguments.ts, 8, 10)) } diff --git a/tests/baselines/reference/instantiatedBaseTypeConstraints.symbols b/tests/baselines/reference/instantiatedBaseTypeConstraints.symbols index e92097c309c..923465505ca 100644 --- a/tests/baselines/reference/instantiatedBaseTypeConstraints.symbols +++ b/tests/baselines/reference/instantiatedBaseTypeConstraints.symbols @@ -8,7 +8,7 @@ interface Foo, C> { >C : Symbol(C, Decl(instantiatedBaseTypeConstraints.ts, 0, 34)) foo(bar: C): void; ->foo : Symbol(foo, Decl(instantiatedBaseTypeConstraints.ts, 0, 39)) +>foo : Symbol(Foo.foo, Decl(instantiatedBaseTypeConstraints.ts, 0, 39)) >bar : Symbol(bar, Decl(instantiatedBaseTypeConstraints.ts, 1, 6)) >C : Symbol(C, Decl(instantiatedBaseTypeConstraints.ts, 0, 34)) } @@ -19,7 +19,7 @@ class Bar implements Foo { >Bar : Symbol(Bar, Decl(instantiatedBaseTypeConstraints.ts, 2, 1)) foo(bar: string): void { ->foo : Symbol(foo, Decl(instantiatedBaseTypeConstraints.ts, 4, 39)) +>foo : Symbol(Bar.foo, Decl(instantiatedBaseTypeConstraints.ts, 4, 39)) >bar : Symbol(bar, Decl(instantiatedBaseTypeConstraints.ts, 5, 6)) } } diff --git a/tests/baselines/reference/instantiatedModule.symbols b/tests/baselines/reference/instantiatedModule.symbols index 42e0edcd221..acad3db7ea4 100644 --- a/tests/baselines/reference/instantiatedModule.symbols +++ b/tests/baselines/reference/instantiatedModule.symbols @@ -6,8 +6,8 @@ module M { export interface Point { x: number; y: number } >Point : Symbol(Point, Decl(instantiatedModule.ts, 2, 10), Decl(instantiatedModule.ts, 4, 14)) ->x : Symbol(x, Decl(instantiatedModule.ts, 3, 28)) ->y : Symbol(y, Decl(instantiatedModule.ts, 3, 39)) +>x : Symbol(Point.x, Decl(instantiatedModule.ts, 3, 28)) +>y : Symbol(Point.y, Decl(instantiatedModule.ts, 3, 39)) export var Point = 1; >Point : Symbol(Point, Decl(instantiatedModule.ts, 2, 10), Decl(instantiatedModule.ts, 4, 14)) @@ -56,10 +56,10 @@ module M2 { >Point : Symbol(Point, Decl(instantiatedModule.ts, 20, 11)) x: number; ->x : Symbol(x, Decl(instantiatedModule.ts, 21, 24)) +>x : Symbol(Point.x, Decl(instantiatedModule.ts, 21, 24)) y: number; ->y : Symbol(y, Decl(instantiatedModule.ts, 22, 18)) +>y : Symbol(Point.y, Decl(instantiatedModule.ts, 22, 18)) static Origin(): Point { >Origin : Symbol(Point.Origin, Decl(instantiatedModule.ts, 23, 18)) diff --git a/tests/baselines/reference/instantiatedReturnTypeContravariance.symbols b/tests/baselines/reference/instantiatedReturnTypeContravariance.symbols index f64ebfdce21..c43082200bf 100644 --- a/tests/baselines/reference/instantiatedReturnTypeContravariance.symbols +++ b/tests/baselines/reference/instantiatedReturnTypeContravariance.symbols @@ -4,10 +4,10 @@ interface B { >T : Symbol(T, Decl(instantiatedReturnTypeContravariance.ts, 0, 12)) name: string; ->name : Symbol(name, Decl(instantiatedReturnTypeContravariance.ts, 0, 16)) +>name : Symbol(B.name, Decl(instantiatedReturnTypeContravariance.ts, 0, 16)) x(): T; ->x : Symbol(x, Decl(instantiatedReturnTypeContravariance.ts, 2, 13)) +>x : Symbol(B.x, Decl(instantiatedReturnTypeContravariance.ts, 2, 13)) >T : Symbol(T, Decl(instantiatedReturnTypeContravariance.ts, 0, 12)) } @@ -16,7 +16,7 @@ class c { >c : Symbol(c, Decl(instantiatedReturnTypeContravariance.ts, 6, 1)) foo(): B { ->foo : Symbol(foo, Decl(instantiatedReturnTypeContravariance.ts, 8, 9)) +>foo : Symbol(c.foo, Decl(instantiatedReturnTypeContravariance.ts, 8, 9)) >B : Symbol(B, Decl(instantiatedReturnTypeContravariance.ts, 0, 0)) return null; @@ -30,7 +30,7 @@ class d extends c { >c : Symbol(c, Decl(instantiatedReturnTypeContravariance.ts, 6, 1)) foo(): B { ->foo : Symbol(foo, Decl(instantiatedReturnTypeContravariance.ts, 18, 19)) +>foo : Symbol(d.foo, Decl(instantiatedReturnTypeContravariance.ts, 18, 19)) >B : Symbol(B, Decl(instantiatedReturnTypeContravariance.ts, 0, 0)) return null; diff --git a/tests/baselines/reference/intTypeCheck.errors.txt b/tests/baselines/reference/intTypeCheck.errors.txt index a860f5e3604..0d19c6b2b6e 100644 --- a/tests/baselines/reference/intTypeCheck.errors.txt +++ b/tests/baselines/reference/intTypeCheck.errors.txt @@ -70,7 +70,7 @@ tests/cases/compiler/intTypeCheck.ts(182,5): error TS2322: Type '{}' is not assi Type '{}' provides no match for the signature 'new (): any' tests/cases/compiler/intTypeCheck.ts(183,5): error TS2322: Type 'Object' is not assignable to type 'i7'. Type 'Object' provides no match for the signature 'new (): any' -tests/cases/compiler/intTypeCheck.ts(185,17): error TS2352: Neither type 'Base' nor type 'i7' is assignable to the other. +tests/cases/compiler/intTypeCheck.ts(185,17): error TS2352: Type 'Base' cannot be converted to type 'i7'. Type 'Base' provides no match for the signature 'new (): any' tests/cases/compiler/intTypeCheck.ts(187,5): error TS2322: Type '() => void' is not assignable to type 'i7'. Type '() => void' provides no match for the signature 'new (): any' @@ -396,7 +396,7 @@ tests/cases/compiler/intTypeCheck.ts(205,17): error TS2351: Cannot use 'new' wit var obj69: i7 = new obj66; var obj70: i7 = new Base; ~~~~~~~~~~~~ -!!! error TS2352: Neither type 'Base' nor type 'i7' is assignable to the other. +!!! error TS2352: Type 'Base' cannot be converted to type 'i7'. !!! error TS2352: Type 'Base' provides no match for the signature 'new (): any' var obj71: i7 = null; var obj72: i7 = function () { }; diff --git a/tests/baselines/reference/interMixingModulesInterfaces0.symbols b/tests/baselines/reference/interMixingModulesInterfaces0.symbols index 6b482053b2e..e16469da656 100644 --- a/tests/baselines/reference/interMixingModulesInterfaces0.symbols +++ b/tests/baselines/reference/interMixingModulesInterfaces0.symbols @@ -17,10 +17,10 @@ module A { >B : Symbol(B, Decl(interMixingModulesInterfaces0.ts, 0, 10), Decl(interMixingModulesInterfaces0.ts, 6, 5)) name: string; ->name : Symbol(name, Decl(interMixingModulesInterfaces0.ts, 8, 24)) +>name : Symbol(B.name, Decl(interMixingModulesInterfaces0.ts, 8, 24)) value: number; ->value : Symbol(value, Decl(interMixingModulesInterfaces0.ts, 9, 21)) +>value : Symbol(B.value, Decl(interMixingModulesInterfaces0.ts, 9, 21)) } } diff --git a/tests/baselines/reference/interMixingModulesInterfaces1.symbols b/tests/baselines/reference/interMixingModulesInterfaces1.symbols index 39162cf5a42..ffc583b1236 100644 --- a/tests/baselines/reference/interMixingModulesInterfaces1.symbols +++ b/tests/baselines/reference/interMixingModulesInterfaces1.symbols @@ -6,10 +6,10 @@ module A { >B : Symbol(B, Decl(interMixingModulesInterfaces1.ts, 0, 10), Decl(interMixingModulesInterfaces1.ts, 5, 5)) name: string; ->name : Symbol(name, Decl(interMixingModulesInterfaces1.ts, 2, 24)) +>name : Symbol(B.name, Decl(interMixingModulesInterfaces1.ts, 2, 24)) value: number; ->value : Symbol(value, Decl(interMixingModulesInterfaces1.ts, 3, 21)) +>value : Symbol(B.value, Decl(interMixingModulesInterfaces1.ts, 3, 21)) } export module B { diff --git a/tests/baselines/reference/interMixingModulesInterfaces2.symbols b/tests/baselines/reference/interMixingModulesInterfaces2.symbols index 0362909047a..10f0a0267af 100644 --- a/tests/baselines/reference/interMixingModulesInterfaces2.symbols +++ b/tests/baselines/reference/interMixingModulesInterfaces2.symbols @@ -6,10 +6,10 @@ module A { >B : Symbol(B, Decl(interMixingModulesInterfaces2.ts, 0, 10)) name: string; ->name : Symbol(name, Decl(interMixingModulesInterfaces2.ts, 2, 24)) +>name : Symbol(A.B.name, Decl(interMixingModulesInterfaces2.ts, 2, 24)) value: number; ->value : Symbol(value, Decl(interMixingModulesInterfaces2.ts, 3, 21)) +>value : Symbol(A.B.value, Decl(interMixingModulesInterfaces2.ts, 3, 21)) } module B { diff --git a/tests/baselines/reference/interMixingModulesInterfaces3.symbols b/tests/baselines/reference/interMixingModulesInterfaces3.symbols index 482cc883930..d66812c6f3d 100644 --- a/tests/baselines/reference/interMixingModulesInterfaces3.symbols +++ b/tests/baselines/reference/interMixingModulesInterfaces3.symbols @@ -17,10 +17,10 @@ module A { >B : Symbol(B, Decl(interMixingModulesInterfaces3.ts, 6, 5)) name: string; ->name : Symbol(name, Decl(interMixingModulesInterfaces3.ts, 8, 24)) +>name : Symbol(A.B.name, Decl(interMixingModulesInterfaces3.ts, 8, 24)) value: number; ->value : Symbol(value, Decl(interMixingModulesInterfaces3.ts, 9, 21)) +>value : Symbol(A.B.value, Decl(interMixingModulesInterfaces3.ts, 9, 21)) } } diff --git a/tests/baselines/reference/interMixingModulesInterfaces4.symbols b/tests/baselines/reference/interMixingModulesInterfaces4.symbols index 498b34c721f..d33db455162 100644 --- a/tests/baselines/reference/interMixingModulesInterfaces4.symbols +++ b/tests/baselines/reference/interMixingModulesInterfaces4.symbols @@ -16,10 +16,10 @@ module A { >B : Symbol(B, Decl(interMixingModulesInterfaces4.ts, 0, 10), Decl(interMixingModulesInterfaces4.ts, 6, 5)) name: string; ->name : Symbol(name, Decl(interMixingModulesInterfaces4.ts, 8, 17)) +>name : Symbol(B.name, Decl(interMixingModulesInterfaces4.ts, 8, 17)) value: number; ->value : Symbol(value, Decl(interMixingModulesInterfaces4.ts, 9, 21)) +>value : Symbol(B.value, Decl(interMixingModulesInterfaces4.ts, 9, 21)) } } diff --git a/tests/baselines/reference/interMixingModulesInterfaces5.symbols b/tests/baselines/reference/interMixingModulesInterfaces5.symbols index 7f45a62c858..17c3908961a 100644 --- a/tests/baselines/reference/interMixingModulesInterfaces5.symbols +++ b/tests/baselines/reference/interMixingModulesInterfaces5.symbols @@ -6,10 +6,10 @@ module A { >B : Symbol(B, Decl(interMixingModulesInterfaces5.ts, 0, 10), Decl(interMixingModulesInterfaces5.ts, 5, 5)) name: string; ->name : Symbol(name, Decl(interMixingModulesInterfaces5.ts, 2, 17)) +>name : Symbol(B.name, Decl(interMixingModulesInterfaces5.ts, 2, 17)) value: number; ->value : Symbol(value, Decl(interMixingModulesInterfaces5.ts, 3, 21)) +>value : Symbol(B.value, Decl(interMixingModulesInterfaces5.ts, 3, 21)) } export module B { diff --git a/tests/baselines/reference/interface0.symbols b/tests/baselines/reference/interface0.symbols index 25e12370916..d9020e16dc0 100644 --- a/tests/baselines/reference/interface0.symbols +++ b/tests/baselines/reference/interface0.symbols @@ -4,7 +4,7 @@ interface Generic { >T : Symbol(T, Decl(interface0.ts, 0, 18)) x: T; ->x : Symbol(x, Decl(interface0.ts, 0, 22)) +>x : Symbol(Generic.x, Decl(interface0.ts, 0, 22)) >T : Symbol(T, Decl(interface0.ts, 0, 18)) } diff --git a/tests/baselines/reference/interfaceAssignmentCompat.errors.txt b/tests/baselines/reference/interfaceAssignmentCompat.errors.txt index 237358b42de..df06eb1bd6c 100644 --- a/tests/baselines/reference/interfaceAssignmentCompat.errors.txt +++ b/tests/baselines/reference/interfaceAssignmentCompat.errors.txt @@ -1,10 +1,9 @@ tests/cases/compiler/interfaceAssignmentCompat.ts(32,18): error TS2345: Argument of type '(a: IFrenchEye, b: IFrenchEye) => number' is not assignable to parameter of type '(a: IEye, b: IEye) => number'. Types of parameters 'a' and 'a' are incompatible. - Type 'IFrenchEye' is not assignable to type 'IEye'. - Property 'color' is missing in type 'IFrenchEye'. + Type 'IEye' is not assignable to type 'IFrenchEye'. + Property 'coleur' is missing in type 'IEye'. tests/cases/compiler/interfaceAssignmentCompat.ts(37,29): error TS2339: Property '_map' does not exist on type 'typeof Color'. tests/cases/compiler/interfaceAssignmentCompat.ts(42,13): error TS2322: Type 'IEye' is not assignable to type 'IFrenchEye'. - Property 'coleur' is missing in type 'IEye'. tests/cases/compiler/interfaceAssignmentCompat.ts(44,9): error TS2322: Type 'IEye[]' is not assignable to type 'IFrenchEye[]'. Type 'IEye' is not assignable to type 'IFrenchEye'. @@ -45,8 +44,8 @@ tests/cases/compiler/interfaceAssignmentCompat.ts(44,9): error TS2322: Type 'IEy ~~~~~~~~~~~ !!! error TS2345: Argument of type '(a: IFrenchEye, b: IFrenchEye) => number' is not assignable to parameter of type '(a: IEye, b: IEye) => number'. !!! error TS2345: Types of parameters 'a' and 'a' are incompatible. -!!! error TS2345: Type 'IFrenchEye' is not assignable to type 'IEye'. -!!! error TS2345: Property 'color' is missing in type 'IFrenchEye'. +!!! error TS2345: Type 'IEye' is not assignable to type 'IFrenchEye'. +!!! error TS2345: Property 'coleur' is missing in type 'IEye'. // type of z inferred from specialized array type var z=x.sort(CompareEyes); // ok @@ -61,7 +60,6 @@ tests/cases/compiler/interfaceAssignmentCompat.ts(44,9): error TS2322: Type 'IEy eeks[j]=z[j]; // nope: element assignment ~~~~~~~ !!! error TS2322: Type 'IEye' is not assignable to type 'IFrenchEye'. -!!! error TS2322: Property 'coleur' is missing in type 'IEye'. } eeks=z; // nope: array assignment ~~~~ diff --git a/tests/baselines/reference/interfaceClassMerging.symbols b/tests/baselines/reference/interfaceClassMerging.symbols index eda94cedafd..566e341108f 100644 --- a/tests/baselines/reference/interfaceClassMerging.symbols +++ b/tests/baselines/reference/interfaceClassMerging.symbols @@ -3,34 +3,34 @@ interface Foo { >Foo : Symbol(Foo, Decl(interfaceClassMerging.ts, 0, 0), Decl(interfaceClassMerging.ts, 5, 1)) method(a: number): string; ->method : Symbol(method, Decl(interfaceClassMerging.ts, 0, 15)) +>method : Symbol(Foo.method, Decl(interfaceClassMerging.ts, 0, 15)) >a : Symbol(a, Decl(interfaceClassMerging.ts, 1, 11)) optionalMethod?(a: number): string; ->optionalMethod : Symbol(optionalMethod, Decl(interfaceClassMerging.ts, 1, 30)) +>optionalMethod : Symbol(Foo.optionalMethod, Decl(interfaceClassMerging.ts, 1, 30)) >a : Symbol(a, Decl(interfaceClassMerging.ts, 2, 20)) property: string; ->property : Symbol(property, Decl(interfaceClassMerging.ts, 2, 39)) +>property : Symbol(Foo.property, Decl(interfaceClassMerging.ts, 2, 39)) optionalProperty?: string; ->optionalProperty : Symbol(optionalProperty, Decl(interfaceClassMerging.ts, 3, 21)) +>optionalProperty : Symbol(Foo.optionalProperty, Decl(interfaceClassMerging.ts, 3, 21)) } class Foo { >Foo : Symbol(Foo, Decl(interfaceClassMerging.ts, 0, 0), Decl(interfaceClassMerging.ts, 5, 1)) additionalProperty: string; ->additionalProperty : Symbol(additionalProperty, Decl(interfaceClassMerging.ts, 7, 11)) +>additionalProperty : Symbol(Foo.additionalProperty, Decl(interfaceClassMerging.ts, 7, 11)) additionalMethod(a: number): string { ->additionalMethod : Symbol(additionalMethod, Decl(interfaceClassMerging.ts, 8, 31)) +>additionalMethod : Symbol(Foo.additionalMethod, Decl(interfaceClassMerging.ts, 8, 31)) >a : Symbol(a, Decl(interfaceClassMerging.ts, 10, 21)) return this.method(0); ->this.method : Symbol(method, Decl(interfaceClassMerging.ts, 0, 15)) +>this.method : Symbol(Foo.method, Decl(interfaceClassMerging.ts, 0, 15)) >this : Symbol(Foo, Decl(interfaceClassMerging.ts, 0, 0), Decl(interfaceClassMerging.ts, 5, 1)) ->method : Symbol(method, Decl(interfaceClassMerging.ts, 0, 15)) +>method : Symbol(Foo.method, Decl(interfaceClassMerging.ts, 0, 15)) } } @@ -39,7 +39,7 @@ class Bar extends Foo { >Foo : Symbol(Foo, Decl(interfaceClassMerging.ts, 0, 0), Decl(interfaceClassMerging.ts, 5, 1)) method(a: number) { ->method : Symbol(method, Decl(interfaceClassMerging.ts, 15, 23)) +>method : Symbol(Bar.method, Decl(interfaceClassMerging.ts, 15, 23)) >a : Symbol(a, Decl(interfaceClassMerging.ts, 16, 11)) return this.optionalProperty; diff --git a/tests/baselines/reference/interfaceClassMerging2.symbols b/tests/baselines/reference/interfaceClassMerging2.symbols index 290b49fdb3d..afd48131daf 100644 --- a/tests/baselines/reference/interfaceClassMerging2.symbols +++ b/tests/baselines/reference/interfaceClassMerging2.symbols @@ -3,20 +3,20 @@ interface Foo { >Foo : Symbol(Foo, Decl(interfaceClassMerging2.ts, 0, 0), Decl(interfaceClassMerging2.ts, 3, 1)) interfaceFooMethod(): this; ->interfaceFooMethod : Symbol(interfaceFooMethod, Decl(interfaceClassMerging2.ts, 0, 15)) +>interfaceFooMethod : Symbol(Foo.interfaceFooMethod, Decl(interfaceClassMerging2.ts, 0, 15)) interfaceFooProperty: this; ->interfaceFooProperty : Symbol(interfaceFooProperty, Decl(interfaceClassMerging2.ts, 1, 31)) +>interfaceFooProperty : Symbol(Foo.interfaceFooProperty, Decl(interfaceClassMerging2.ts, 1, 31)) } class Foo { >Foo : Symbol(Foo, Decl(interfaceClassMerging2.ts, 0, 0), Decl(interfaceClassMerging2.ts, 3, 1)) classFooProperty: this; ->classFooProperty : Symbol(classFooProperty, Decl(interfaceClassMerging2.ts, 5, 11)) +>classFooProperty : Symbol(Foo.classFooProperty, Decl(interfaceClassMerging2.ts, 5, 11)) classFooMethod(): this { ->classFooMethod : Symbol(classFooMethod, Decl(interfaceClassMerging2.ts, 6, 27)) +>classFooMethod : Symbol(Foo.classFooMethod, Decl(interfaceClassMerging2.ts, 6, 27)) return this; >this : Symbol(Foo, Decl(interfaceClassMerging2.ts, 0, 0), Decl(interfaceClassMerging2.ts, 3, 1)) @@ -28,10 +28,10 @@ interface Bar { >Bar : Symbol(Bar, Decl(interfaceClassMerging2.ts, 11, 1), Decl(interfaceClassMerging2.ts, 17, 1)) interfaceBarMethod(): this; ->interfaceBarMethod : Symbol(interfaceBarMethod, Decl(interfaceClassMerging2.ts, 14, 15)) +>interfaceBarMethod : Symbol(Bar.interfaceBarMethod, Decl(interfaceClassMerging2.ts, 14, 15)) interfaceBarProperty: this; ->interfaceBarProperty : Symbol(interfaceBarProperty, Decl(interfaceClassMerging2.ts, 15, 31)) +>interfaceBarProperty : Symbol(Bar.interfaceBarProperty, Decl(interfaceClassMerging2.ts, 15, 31)) } class Bar extends Foo { @@ -39,10 +39,10 @@ class Bar extends Foo { >Foo : Symbol(Foo, Decl(interfaceClassMerging2.ts, 0, 0), Decl(interfaceClassMerging2.ts, 3, 1)) classBarProperty: this; ->classBarProperty : Symbol(classBarProperty, Decl(interfaceClassMerging2.ts, 19, 23)) +>classBarProperty : Symbol(Bar.classBarProperty, Decl(interfaceClassMerging2.ts, 19, 23)) classBarMethod(): this { ->classBarMethod : Symbol(classBarMethod, Decl(interfaceClassMerging2.ts, 20, 27)) +>classBarMethod : Symbol(Bar.classBarMethod, Decl(interfaceClassMerging2.ts, 20, 27)) return this; >this : Symbol(Bar, Decl(interfaceClassMerging2.ts, 11, 1), Decl(interfaceClassMerging2.ts, 17, 1)) diff --git a/tests/baselines/reference/interfaceContextualType.symbols b/tests/baselines/reference/interfaceContextualType.symbols index 34831880431..9334740e133 100644 --- a/tests/baselines/reference/interfaceContextualType.symbols +++ b/tests/baselines/reference/interfaceContextualType.symbols @@ -3,10 +3,10 @@ export interface IOptions { >IOptions : Symbol(IOptions, Decl(interfaceContextualType.ts, 0, 0)) italic?: boolean; ->italic : Symbol(italic, Decl(interfaceContextualType.ts, 0, 27)) +>italic : Symbol(IOptions.italic, Decl(interfaceContextualType.ts, 0, 27)) bold?: boolean; ->bold : Symbol(bold, Decl(interfaceContextualType.ts, 1, 21)) +>bold : Symbol(IOptions.bold, Decl(interfaceContextualType.ts, 1, 21)) } export interface IMap { >IMap : Symbol(IMap, Decl(interfaceContextualType.ts, 3, 1)) @@ -20,30 +20,30 @@ class Bug { >Bug : Symbol(Bug, Decl(interfaceContextualType.ts, 6, 1)) public values: IMap; ->values : Symbol(values, Decl(interfaceContextualType.ts, 8, 11)) +>values : Symbol(Bug.values, Decl(interfaceContextualType.ts, 8, 11)) >IMap : Symbol(IMap, Decl(interfaceContextualType.ts, 3, 1)) ok() { ->ok : Symbol(ok, Decl(interfaceContextualType.ts, 9, 24)) +>ok : Symbol(Bug.ok, Decl(interfaceContextualType.ts, 9, 24)) this.values = {}; ->this.values : Symbol(values, Decl(interfaceContextualType.ts, 8, 11)) +>this.values : Symbol(Bug.values, Decl(interfaceContextualType.ts, 8, 11)) >this : Symbol(Bug, Decl(interfaceContextualType.ts, 6, 1)) ->values : Symbol(values, Decl(interfaceContextualType.ts, 8, 11)) +>values : Symbol(Bug.values, Decl(interfaceContextualType.ts, 8, 11)) this.values['comments'] = { italic: true }; ->this.values : Symbol(values, Decl(interfaceContextualType.ts, 8, 11)) +>this.values : Symbol(Bug.values, Decl(interfaceContextualType.ts, 8, 11)) >this : Symbol(Bug, Decl(interfaceContextualType.ts, 6, 1)) ->values : Symbol(values, Decl(interfaceContextualType.ts, 8, 11)) +>values : Symbol(Bug.values, Decl(interfaceContextualType.ts, 8, 11)) >italic : Symbol(italic, Decl(interfaceContextualType.ts, 12, 35)) } shouldBeOK() { ->shouldBeOK : Symbol(shouldBeOK, Decl(interfaceContextualType.ts, 13, 5)) +>shouldBeOK : Symbol(Bug.shouldBeOK, Decl(interfaceContextualType.ts, 13, 5)) this.values = { ->this.values : Symbol(values, Decl(interfaceContextualType.ts, 8, 11)) +>this.values : Symbol(Bug.values, Decl(interfaceContextualType.ts, 8, 11)) >this : Symbol(Bug, Decl(interfaceContextualType.ts, 6, 1)) ->values : Symbol(values, Decl(interfaceContextualType.ts, 8, 11)) +>values : Symbol(Bug.values, Decl(interfaceContextualType.ts, 8, 11)) comments: { italic: true } >comments : Symbol(comments, Decl(interfaceContextualType.ts, 15, 23)) diff --git a/tests/baselines/reference/interfaceDeclaration5.symbols b/tests/baselines/reference/interfaceDeclaration5.symbols index 3478a56693a..feccd58e0b5 100644 --- a/tests/baselines/reference/interfaceDeclaration5.symbols +++ b/tests/baselines/reference/interfaceDeclaration5.symbols @@ -1,7 +1,7 @@ === tests/cases/compiler/interfaceDeclaration5.ts === export interface I1 { item:string; } >I1 : Symbol(I1, Decl(interfaceDeclaration5.ts, 0, 0)) ->item : Symbol(item, Decl(interfaceDeclaration5.ts, 0, 21)) +>item : Symbol(I1.item, Decl(interfaceDeclaration5.ts, 0, 21)) export class C1 { } >C1 : Symbol(C1, Decl(interfaceDeclaration5.ts, 0, 36)) diff --git a/tests/baselines/reference/interfaceExtendsClass1.symbols b/tests/baselines/reference/interfaceExtendsClass1.symbols index 6caa2013a25..5873419cc0b 100644 --- a/tests/baselines/reference/interfaceExtendsClass1.symbols +++ b/tests/baselines/reference/interfaceExtendsClass1.symbols @@ -3,28 +3,28 @@ class Control { >Control : Symbol(Control, Decl(interfaceExtendsClass1.ts, 0, 0)) private state: any; ->state : Symbol(state, Decl(interfaceExtendsClass1.ts, 0, 15)) +>state : Symbol(Control.state, Decl(interfaceExtendsClass1.ts, 0, 15)) } interface SelectableControl extends Control { >SelectableControl : Symbol(SelectableControl, Decl(interfaceExtendsClass1.ts, 2, 1)) >Control : Symbol(Control, Decl(interfaceExtendsClass1.ts, 0, 0)) select(): void; ->select : Symbol(select, Decl(interfaceExtendsClass1.ts, 3, 45)) +>select : Symbol(SelectableControl.select, Decl(interfaceExtendsClass1.ts, 3, 45)) } class Button extends Control { >Button : Symbol(Button, Decl(interfaceExtendsClass1.ts, 5, 1)) >Control : Symbol(Control, Decl(interfaceExtendsClass1.ts, 0, 0)) select() { } ->select : Symbol(select, Decl(interfaceExtendsClass1.ts, 6, 30)) +>select : Symbol(Button.select, Decl(interfaceExtendsClass1.ts, 6, 30)) } class TextBox extends Control { >TextBox : Symbol(TextBox, Decl(interfaceExtendsClass1.ts, 8, 1)) >Control : Symbol(Control, Decl(interfaceExtendsClass1.ts, 0, 0)) select() { } ->select : Symbol(select, Decl(interfaceExtendsClass1.ts, 9, 31)) +>select : Symbol(TextBox.select, Decl(interfaceExtendsClass1.ts, 9, 31)) } class Image extends Control { >Image : Symbol(Image, Decl(interfaceExtendsClass1.ts, 11, 1)) @@ -34,6 +34,6 @@ class Location { >Location : Symbol(Location, Decl(interfaceExtendsClass1.ts, 13, 1)) select() { } ->select : Symbol(select, Decl(interfaceExtendsClass1.ts, 14, 16)) +>select : Symbol(Location.select, Decl(interfaceExtendsClass1.ts, 14, 16)) } diff --git a/tests/baselines/reference/interfaceInReopenedModule.symbols b/tests/baselines/reference/interfaceInReopenedModule.symbols index 3cde824b451..0e4d2918a4f 100644 --- a/tests/baselines/reference/interfaceInReopenedModule.symbols +++ b/tests/baselines/reference/interfaceInReopenedModule.symbols @@ -14,7 +14,7 @@ module m { >n : Symbol(n, Decl(interfaceInReopenedModule.ts, 5, 18)) private n: f; ->n : Symbol(n, Decl(interfaceInReopenedModule.ts, 6, 20)) +>n : Symbol(n.n, Decl(interfaceInReopenedModule.ts, 6, 20)) >f : Symbol(f, Decl(interfaceInReopenedModule.ts, 4, 10)) } } diff --git a/tests/baselines/reference/interfaceOnly.symbols b/tests/baselines/reference/interfaceOnly.symbols index 70473ff3139..2de5dca6dfb 100644 --- a/tests/baselines/reference/interfaceOnly.symbols +++ b/tests/baselines/reference/interfaceOnly.symbols @@ -3,9 +3,9 @@ interface foo { >foo : Symbol(foo, Decl(interfaceOnly.ts, 0, 0)) foo(); ->foo : Symbol(foo, Decl(interfaceOnly.ts, 0, 15)) +>foo : Symbol(foo.foo, Decl(interfaceOnly.ts, 0, 15)) f2 (f: ()=> void); ->f2 : Symbol(f2, Decl(interfaceOnly.ts, 1, 10)) +>f2 : Symbol(foo.f2, Decl(interfaceOnly.ts, 1, 10)) >f : Symbol(f, Decl(interfaceOnly.ts, 2, 8)) } diff --git a/tests/baselines/reference/interfacePropertiesWithSameName1.symbols b/tests/baselines/reference/interfacePropertiesWithSameName1.symbols index aa002fa4af2..1948b1f244e 100644 --- a/tests/baselines/reference/interfacePropertiesWithSameName1.symbols +++ b/tests/baselines/reference/interfacePropertiesWithSameName1.symbols @@ -3,20 +3,20 @@ interface Mover { >Mover : Symbol(Mover, Decl(interfacePropertiesWithSameName1.ts, 0, 0)) move(): void; ->move : Symbol(move, Decl(interfacePropertiesWithSameName1.ts, 0, 17)) +>move : Symbol(Mover.move, Decl(interfacePropertiesWithSameName1.ts, 0, 17)) getStatus(): { speed: number; }; ->getStatus : Symbol(getStatus, Decl(interfacePropertiesWithSameName1.ts, 1, 17)) +>getStatus : Symbol(Mover.getStatus, Decl(interfacePropertiesWithSameName1.ts, 1, 17)) >speed : Symbol(speed, Decl(interfacePropertiesWithSameName1.ts, 2, 18)) } interface Shaker { >Shaker : Symbol(Shaker, Decl(interfacePropertiesWithSameName1.ts, 3, 1)) shake(): void; ->shake : Symbol(shake, Decl(interfacePropertiesWithSameName1.ts, 4, 18)) +>shake : Symbol(Shaker.shake, Decl(interfacePropertiesWithSameName1.ts, 4, 18)) getStatus(): { frequency: number; }; ->getStatus : Symbol(getStatus, Decl(interfacePropertiesWithSameName1.ts, 5, 18)) +>getStatus : Symbol(Shaker.getStatus, Decl(interfacePropertiesWithSameName1.ts, 5, 18)) >frequency : Symbol(frequency, Decl(interfacePropertiesWithSameName1.ts, 6, 18)) } @@ -26,7 +26,7 @@ interface MoverShaker extends Mover, Shaker { >Shaker : Symbol(Shaker, Decl(interfacePropertiesWithSameName1.ts, 3, 1)) getStatus(): { speed: number; frequency: number; }; ->getStatus : Symbol(getStatus, Decl(interfacePropertiesWithSameName1.ts, 9, 45)) +>getStatus : Symbol(MoverShaker.getStatus, Decl(interfacePropertiesWithSameName1.ts, 9, 45)) >speed : Symbol(speed, Decl(interfacePropertiesWithSameName1.ts, 10, 18)) >frequency : Symbol(frequency, Decl(interfacePropertiesWithSameName1.ts, 10, 33)) } diff --git a/tests/baselines/reference/interfaceSubtyping.symbols b/tests/baselines/reference/interfaceSubtyping.symbols index 6f77110885f..887f8e3d6b6 100644 --- a/tests/baselines/reference/interfaceSubtyping.symbols +++ b/tests/baselines/reference/interfaceSubtyping.symbols @@ -3,16 +3,16 @@ interface iface { >iface : Symbol(iface, Decl(interfaceSubtyping.ts, 0, 0)) foo(): void; ->foo : Symbol(foo, Decl(interfaceSubtyping.ts, 0, 17)) +>foo : Symbol(iface.foo, Decl(interfaceSubtyping.ts, 0, 17)) } class Camera implements iface{ >Camera : Symbol(Camera, Decl(interfaceSubtyping.ts, 2, 1)) >iface : Symbol(iface, Decl(interfaceSubtyping.ts, 0, 0)) constructor (public str: string) { ->str : Symbol(str, Decl(interfaceSubtyping.ts, 4, 17)) +>str : Symbol(Camera.str, Decl(interfaceSubtyping.ts, 4, 17)) } foo() { return "s"; } ->foo : Symbol(foo, Decl(interfaceSubtyping.ts, 5, 5)) +>foo : Symbol(Camera.foo, Decl(interfaceSubtyping.ts, 5, 5)) } diff --git a/tests/baselines/reference/interfaceThatHidesBaseProperty.symbols b/tests/baselines/reference/interfaceThatHidesBaseProperty.symbols index 2705aef2b27..d168a881990 100644 --- a/tests/baselines/reference/interfaceThatHidesBaseProperty.symbols +++ b/tests/baselines/reference/interfaceThatHidesBaseProperty.symbols @@ -3,7 +3,7 @@ interface Base { >Base : Symbol(Base, Decl(interfaceThatHidesBaseProperty.ts, 0, 0)) x: { a: number }; ->x : Symbol(x, Decl(interfaceThatHidesBaseProperty.ts, 0, 16)) +>x : Symbol(Base.x, Decl(interfaceThatHidesBaseProperty.ts, 0, 16)) >a : Symbol(a, Decl(interfaceThatHidesBaseProperty.ts, 1, 8)) } @@ -12,7 +12,7 @@ interface Derived extends Base { >Base : Symbol(Base, Decl(interfaceThatHidesBaseProperty.ts, 0, 0)) x: { ->x : Symbol(x, Decl(interfaceThatHidesBaseProperty.ts, 4, 32)) +>x : Symbol(Derived.x, Decl(interfaceThatHidesBaseProperty.ts, 4, 32)) a: number; b: number; >a : Symbol(a, Decl(interfaceThatHidesBaseProperty.ts, 5, 8)) diff --git a/tests/baselines/reference/interfaceWithCommaSeparators.symbols b/tests/baselines/reference/interfaceWithCommaSeparators.symbols index e96a8852d56..a2f76d1791b 100644 --- a/tests/baselines/reference/interfaceWithCommaSeparators.symbols +++ b/tests/baselines/reference/interfaceWithCommaSeparators.symbols @@ -6,6 +6,6 @@ var v: { bar(): void, baz } interface Foo { bar(): void, baz } >Foo : Symbol(Foo, Decl(interfaceWithCommaSeparators.ts, 0, 27)) ->bar : Symbol(bar, Decl(interfaceWithCommaSeparators.ts, 1, 15)) ->baz : Symbol(baz, Decl(interfaceWithCommaSeparators.ts, 1, 28)) +>bar : Symbol(Foo.bar, Decl(interfaceWithCommaSeparators.ts, 1, 15)) +>baz : Symbol(Foo.baz, Decl(interfaceWithCommaSeparators.ts, 1, 28)) diff --git a/tests/baselines/reference/interfaceWithOptionalProperty.symbols b/tests/baselines/reference/interfaceWithOptionalProperty.symbols index 262b3f01ccc..90e5b666693 100644 --- a/tests/baselines/reference/interfaceWithOptionalProperty.symbols +++ b/tests/baselines/reference/interfaceWithOptionalProperty.symbols @@ -4,5 +4,5 @@ interface I { >I : Symbol(I, Decl(interfaceWithOptionalProperty.ts, 0, 0)) x?: number; ->x : Symbol(x, Decl(interfaceWithOptionalProperty.ts, 1, 13)) +>x : Symbol(I.x, Decl(interfaceWithOptionalProperty.ts, 1, 13)) } diff --git a/tests/baselines/reference/interfaceWithPropertyOfEveryType.symbols b/tests/baselines/reference/interfaceWithPropertyOfEveryType.symbols index f248bba02f0..46b0edd378b 100644 --- a/tests/baselines/reference/interfaceWithPropertyOfEveryType.symbols +++ b/tests/baselines/reference/interfaceWithPropertyOfEveryType.symbols @@ -1,7 +1,7 @@ === tests/cases/conformance/interfaces/interfaceDeclarations/interfaceWithPropertyOfEveryType.ts === class C { foo: string; } >C : Symbol(C, Decl(interfaceWithPropertyOfEveryType.ts, 0, 0)) ->foo : Symbol(foo, Decl(interfaceWithPropertyOfEveryType.ts, 0, 9)) +>foo : Symbol(C.foo, Decl(interfaceWithPropertyOfEveryType.ts, 0, 9)) function f1() { } >f1 : Symbol(f1, Decl(interfaceWithPropertyOfEveryType.ts, 0, 24)) @@ -20,59 +20,59 @@ interface Foo { >Foo : Symbol(Foo, Decl(interfaceWithPropertyOfEveryType.ts, 5, 12)) a: number; ->a : Symbol(a, Decl(interfaceWithPropertyOfEveryType.ts, 7, 15)) +>a : Symbol(Foo.a, Decl(interfaceWithPropertyOfEveryType.ts, 7, 15)) b: string; ->b : Symbol(b, Decl(interfaceWithPropertyOfEveryType.ts, 8, 14)) +>b : Symbol(Foo.b, Decl(interfaceWithPropertyOfEveryType.ts, 8, 14)) c: boolean; ->c : Symbol(c, Decl(interfaceWithPropertyOfEveryType.ts, 9, 14)) +>c : Symbol(Foo.c, Decl(interfaceWithPropertyOfEveryType.ts, 9, 14)) d: any; ->d : Symbol(d, Decl(interfaceWithPropertyOfEveryType.ts, 10, 15)) +>d : Symbol(Foo.d, Decl(interfaceWithPropertyOfEveryType.ts, 10, 15)) e: void; ->e : Symbol(e, Decl(interfaceWithPropertyOfEveryType.ts, 11, 11)) +>e : Symbol(Foo.e, Decl(interfaceWithPropertyOfEveryType.ts, 11, 11)) f: number[]; ->f : Symbol(f, Decl(interfaceWithPropertyOfEveryType.ts, 12, 12)) +>f : Symbol(Foo.f, Decl(interfaceWithPropertyOfEveryType.ts, 12, 12)) g: Object; ->g : Symbol(g, Decl(interfaceWithPropertyOfEveryType.ts, 13, 16)) +>g : Symbol(Foo.g, Decl(interfaceWithPropertyOfEveryType.ts, 13, 16)) >Object : Symbol(Object, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) h: (x: number) => number; ->h : Symbol(h, Decl(interfaceWithPropertyOfEveryType.ts, 14, 14)) +>h : Symbol(Foo.h, Decl(interfaceWithPropertyOfEveryType.ts, 14, 14)) >x : Symbol(x, Decl(interfaceWithPropertyOfEveryType.ts, 15, 8)) i: (x: T) => T; ->i : Symbol(i, Decl(interfaceWithPropertyOfEveryType.ts, 15, 29)) +>i : Symbol(Foo.i, Decl(interfaceWithPropertyOfEveryType.ts, 15, 29)) >T : Symbol(T, Decl(interfaceWithPropertyOfEveryType.ts, 16, 8)) >x : Symbol(x, Decl(interfaceWithPropertyOfEveryType.ts, 16, 11)) >T : Symbol(T, Decl(interfaceWithPropertyOfEveryType.ts, 16, 8)) >T : Symbol(T, Decl(interfaceWithPropertyOfEveryType.ts, 16, 8)) j: Foo; ->j : Symbol(j, Decl(interfaceWithPropertyOfEveryType.ts, 16, 22)) +>j : Symbol(Foo.j, Decl(interfaceWithPropertyOfEveryType.ts, 16, 22)) >Foo : Symbol(Foo, Decl(interfaceWithPropertyOfEveryType.ts, 5, 12)) k: C; ->k : Symbol(k, Decl(interfaceWithPropertyOfEveryType.ts, 17, 11)) +>k : Symbol(Foo.k, Decl(interfaceWithPropertyOfEveryType.ts, 17, 11)) >C : Symbol(C, Decl(interfaceWithPropertyOfEveryType.ts, 0, 0)) l: typeof f1; ->l : Symbol(l, Decl(interfaceWithPropertyOfEveryType.ts, 18, 9)) +>l : Symbol(Foo.l, Decl(interfaceWithPropertyOfEveryType.ts, 18, 9)) >f1 : Symbol(f1, Decl(interfaceWithPropertyOfEveryType.ts, 0, 24)) m: typeof M; ->m : Symbol(m, Decl(interfaceWithPropertyOfEveryType.ts, 19, 17)) +>m : Symbol(Foo.m, Decl(interfaceWithPropertyOfEveryType.ts, 19, 17)) >M : Symbol(M, Decl(interfaceWithPropertyOfEveryType.ts, 1, 17)) n: {}; ->n : Symbol(n, Decl(interfaceWithPropertyOfEveryType.ts, 20, 16)) +>n : Symbol(Foo.n, Decl(interfaceWithPropertyOfEveryType.ts, 20, 16)) o: E; ->o : Symbol(o, Decl(interfaceWithPropertyOfEveryType.ts, 21, 10)) +>o : Symbol(Foo.o, Decl(interfaceWithPropertyOfEveryType.ts, 21, 10)) >E : Symbol(E, Decl(interfaceWithPropertyOfEveryType.ts, 4, 1)) } diff --git a/tests/baselines/reference/interfacedecl.symbols b/tests/baselines/reference/interfacedecl.symbols index eb9cce5f1fd..48a89a94129 100644 --- a/tests/baselines/reference/interfacedecl.symbols +++ b/tests/baselines/reference/interfacedecl.symbols @@ -19,33 +19,33 @@ interface a0 { >s : Symbol(s, Decl(interfacedecl.ts, 8, 5)) p1; ->p1 : Symbol(p1, Decl(interfacedecl.ts, 8, 21)) +>p1 : Symbol(a0.p1, Decl(interfacedecl.ts, 8, 21)) p2: string; ->p2 : Symbol(p2, Decl(interfacedecl.ts, 10, 7)) +>p2 : Symbol(a0.p2, Decl(interfacedecl.ts, 10, 7)) p3?; ->p3 : Symbol(p3, Decl(interfacedecl.ts, 11, 15)) +>p3 : Symbol(a0.p3, Decl(interfacedecl.ts, 11, 15)) p4?: number; ->p4 : Symbol(p4, Decl(interfacedecl.ts, 12, 8)) +>p4 : Symbol(a0.p4, Decl(interfacedecl.ts, 12, 8)) p5: (s: number) =>string; ->p5 : Symbol(p5, Decl(interfacedecl.ts, 13, 16)) +>p5 : Symbol(a0.p5, Decl(interfacedecl.ts, 13, 16)) >s : Symbol(s, Decl(interfacedecl.ts, 14, 9)) f1(); ->f1 : Symbol(f1, Decl(interfacedecl.ts, 14, 29)) +>f1 : Symbol(a0.f1, Decl(interfacedecl.ts, 14, 29)) f2? (); ->f2 : Symbol(f2, Decl(interfacedecl.ts, 16, 9)) +>f2 : Symbol(a0.f2, Decl(interfacedecl.ts, 16, 9)) f3(a: string): number; ->f3 : Symbol(f3, Decl(interfacedecl.ts, 17, 11)) +>f3 : Symbol(a0.f3, Decl(interfacedecl.ts, 17, 11)) >a : Symbol(a, Decl(interfacedecl.ts, 18, 7)) f4? (s: number): string; ->f4 : Symbol(f4, Decl(interfacedecl.ts, 18, 26)) +>f4 : Symbol(a0.f4, Decl(interfacedecl.ts, 18, 26)) >s : Symbol(s, Decl(interfacedecl.ts, 19, 9)) } diff --git a/tests/baselines/reference/internalAliasClassInsideLocalModuleWithExport.symbols b/tests/baselines/reference/internalAliasClassInsideLocalModuleWithExport.symbols index f3a796cf66c..85c5c72cfe1 100644 --- a/tests/baselines/reference/internalAliasClassInsideLocalModuleWithExport.symbols +++ b/tests/baselines/reference/internalAliasClassInsideLocalModuleWithExport.symbols @@ -6,7 +6,7 @@ export module x { >c : Symbol(c, Decl(internalAliasClassInsideLocalModuleWithExport.ts, 0, 17)) foo(a: number) { ->foo : Symbol(foo, Decl(internalAliasClassInsideLocalModuleWithExport.ts, 1, 20)) +>foo : Symbol(c.foo, Decl(internalAliasClassInsideLocalModuleWithExport.ts, 1, 20)) >a : Symbol(a, Decl(internalAliasClassInsideLocalModuleWithExport.ts, 2, 12)) return a; diff --git a/tests/baselines/reference/internalAliasClassInsideLocalModuleWithoutExport.symbols b/tests/baselines/reference/internalAliasClassInsideLocalModuleWithoutExport.symbols index 5c1d8b16afc..1df4c67b78e 100644 --- a/tests/baselines/reference/internalAliasClassInsideLocalModuleWithoutExport.symbols +++ b/tests/baselines/reference/internalAliasClassInsideLocalModuleWithoutExport.symbols @@ -6,7 +6,7 @@ export module x { >c : Symbol(c, Decl(internalAliasClassInsideLocalModuleWithoutExport.ts, 0, 17)) foo(a: number) { ->foo : Symbol(foo, Decl(internalAliasClassInsideLocalModuleWithoutExport.ts, 1, 20)) +>foo : Symbol(c.foo, Decl(internalAliasClassInsideLocalModuleWithoutExport.ts, 1, 20)) >a : Symbol(a, Decl(internalAliasClassInsideLocalModuleWithoutExport.ts, 2, 12)) return a; diff --git a/tests/baselines/reference/internalAliasClassInsideTopLevelModuleWithExport.symbols b/tests/baselines/reference/internalAliasClassInsideTopLevelModuleWithExport.symbols index 1b4d44307e3..b3c0bc487c5 100644 --- a/tests/baselines/reference/internalAliasClassInsideTopLevelModuleWithExport.symbols +++ b/tests/baselines/reference/internalAliasClassInsideTopLevelModuleWithExport.symbols @@ -6,7 +6,7 @@ export module x { >c : Symbol(c, Decl(internalAliasClassInsideTopLevelModuleWithExport.ts, 0, 17)) foo(a: number) { ->foo : Symbol(foo, Decl(internalAliasClassInsideTopLevelModuleWithExport.ts, 1, 20)) +>foo : Symbol(c.foo, Decl(internalAliasClassInsideTopLevelModuleWithExport.ts, 1, 20)) >a : Symbol(a, Decl(internalAliasClassInsideTopLevelModuleWithExport.ts, 2, 12)) return a; diff --git a/tests/baselines/reference/internalAliasClassInsideTopLevelModuleWithoutExport.symbols b/tests/baselines/reference/internalAliasClassInsideTopLevelModuleWithoutExport.symbols index b4e720cec94..08112614a57 100644 --- a/tests/baselines/reference/internalAliasClassInsideTopLevelModuleWithoutExport.symbols +++ b/tests/baselines/reference/internalAliasClassInsideTopLevelModuleWithoutExport.symbols @@ -6,7 +6,7 @@ export module x { >c : Symbol(c, Decl(internalAliasClassInsideTopLevelModuleWithoutExport.ts, 0, 17)) foo(a: number) { ->foo : Symbol(foo, Decl(internalAliasClassInsideTopLevelModuleWithoutExport.ts, 1, 20)) +>foo : Symbol(c.foo, Decl(internalAliasClassInsideTopLevelModuleWithoutExport.ts, 1, 20)) >a : Symbol(a, Decl(internalAliasClassInsideTopLevelModuleWithoutExport.ts, 2, 12)) return a; diff --git a/tests/baselines/reference/internalAliasUninitializedModule.symbols b/tests/baselines/reference/internalAliasUninitializedModule.symbols index 95af5c5699d..bdb777461a6 100644 --- a/tests/baselines/reference/internalAliasUninitializedModule.symbols +++ b/tests/baselines/reference/internalAliasUninitializedModule.symbols @@ -9,7 +9,7 @@ module a { >I : Symbol(I, Decl(internalAliasUninitializedModule.ts, 1, 21)) foo(); ->foo : Symbol(foo, Decl(internalAliasUninitializedModule.ts, 2, 28)) +>foo : Symbol(I.foo, Decl(internalAliasUninitializedModule.ts, 2, 28)) } } } diff --git a/tests/baselines/reference/internalAliasUninitializedModuleInsideLocalModuleWithExport.symbols b/tests/baselines/reference/internalAliasUninitializedModuleInsideLocalModuleWithExport.symbols index 861859ce2ea..3050a92eaad 100644 --- a/tests/baselines/reference/internalAliasUninitializedModuleInsideLocalModuleWithExport.symbols +++ b/tests/baselines/reference/internalAliasUninitializedModuleInsideLocalModuleWithExport.symbols @@ -9,7 +9,7 @@ export module a { >I : Symbol(I, Decl(internalAliasUninitializedModuleInsideLocalModuleWithExport.ts, 1, 21)) foo(); ->foo : Symbol(foo, Decl(internalAliasUninitializedModuleInsideLocalModuleWithExport.ts, 2, 28)) +>foo : Symbol(I.foo, Decl(internalAliasUninitializedModuleInsideLocalModuleWithExport.ts, 2, 28)) } } } diff --git a/tests/baselines/reference/internalAliasUninitializedModuleInsideLocalModuleWithoutExport.symbols b/tests/baselines/reference/internalAliasUninitializedModuleInsideLocalModuleWithoutExport.symbols index 433426c9fd9..f1e7ecaa8b5 100644 --- a/tests/baselines/reference/internalAliasUninitializedModuleInsideLocalModuleWithoutExport.symbols +++ b/tests/baselines/reference/internalAliasUninitializedModuleInsideLocalModuleWithoutExport.symbols @@ -9,7 +9,7 @@ export module a { >I : Symbol(I, Decl(internalAliasUninitializedModuleInsideLocalModuleWithoutExport.ts, 1, 21)) foo(); ->foo : Symbol(foo, Decl(internalAliasUninitializedModuleInsideLocalModuleWithoutExport.ts, 2, 28)) +>foo : Symbol(I.foo, Decl(internalAliasUninitializedModuleInsideLocalModuleWithoutExport.ts, 2, 28)) } } } diff --git a/tests/baselines/reference/internalAliasUninitializedModuleInsideTopLevelModuleWithExport.symbols b/tests/baselines/reference/internalAliasUninitializedModuleInsideTopLevelModuleWithExport.symbols index 14428deac43..5ecf784fccc 100644 --- a/tests/baselines/reference/internalAliasUninitializedModuleInsideTopLevelModuleWithExport.symbols +++ b/tests/baselines/reference/internalAliasUninitializedModuleInsideTopLevelModuleWithExport.symbols @@ -9,7 +9,7 @@ export module a { >I : Symbol(I, Decl(internalAliasUninitializedModuleInsideTopLevelModuleWithExport.ts, 1, 21)) foo(); ->foo : Symbol(foo, Decl(internalAliasUninitializedModuleInsideTopLevelModuleWithExport.ts, 2, 28)) +>foo : Symbol(I.foo, Decl(internalAliasUninitializedModuleInsideTopLevelModuleWithExport.ts, 2, 28)) } } } diff --git a/tests/baselines/reference/internalAliasUninitializedModuleInsideTopLevelModuleWithoutExport.symbols b/tests/baselines/reference/internalAliasUninitializedModuleInsideTopLevelModuleWithoutExport.symbols index cd17daeb023..aed4d7e7374 100644 --- a/tests/baselines/reference/internalAliasUninitializedModuleInsideTopLevelModuleWithoutExport.symbols +++ b/tests/baselines/reference/internalAliasUninitializedModuleInsideTopLevelModuleWithoutExport.symbols @@ -9,7 +9,7 @@ export module a { >I : Symbol(I, Decl(internalAliasUninitializedModuleInsideTopLevelModuleWithoutExport.ts, 1, 21)) foo(); ->foo : Symbol(foo, Decl(internalAliasUninitializedModuleInsideTopLevelModuleWithoutExport.ts, 2, 28)) +>foo : Symbol(I.foo, Decl(internalAliasUninitializedModuleInsideTopLevelModuleWithoutExport.ts, 2, 28)) } } } diff --git a/tests/baselines/reference/internalImportInstantiatedModuleMergedWithClassNotReferencingInstanceNoConflict.symbols b/tests/baselines/reference/internalImportInstantiatedModuleMergedWithClassNotReferencingInstanceNoConflict.symbols index e1098948fd6..81e07de2dfd 100644 --- a/tests/baselines/reference/internalImportInstantiatedModuleMergedWithClassNotReferencingInstanceNoConflict.symbols +++ b/tests/baselines/reference/internalImportInstantiatedModuleMergedWithClassNotReferencingInstanceNoConflict.symbols @@ -3,14 +3,14 @@ class A { >A : Symbol(A, Decl(internalImportInstantiatedModuleMergedWithClassNotReferencingInstanceNoConflict.ts, 0, 0), Decl(internalImportInstantiatedModuleMergedWithClassNotReferencingInstanceNoConflict.ts, 2, 1)) aProp: string; ->aProp : Symbol(aProp, Decl(internalImportInstantiatedModuleMergedWithClassNotReferencingInstanceNoConflict.ts, 0, 9)) +>aProp : Symbol(A.aProp, Decl(internalImportInstantiatedModuleMergedWithClassNotReferencingInstanceNoConflict.ts, 0, 9)) } module A { >A : Symbol(A, Decl(internalImportInstantiatedModuleMergedWithClassNotReferencingInstanceNoConflict.ts, 0, 0), Decl(internalImportInstantiatedModuleMergedWithClassNotReferencingInstanceNoConflict.ts, 2, 1)) export interface X { s: string } >X : Symbol(X, Decl(internalImportInstantiatedModuleMergedWithClassNotReferencingInstanceNoConflict.ts, 3, 10)) ->s : Symbol(s, Decl(internalImportInstantiatedModuleMergedWithClassNotReferencingInstanceNoConflict.ts, 4, 24)) +>s : Symbol(X.s, Decl(internalImportInstantiatedModuleMergedWithClassNotReferencingInstanceNoConflict.ts, 4, 24)) export var a = 10; >a : Symbol(a, Decl(internalImportInstantiatedModuleMergedWithClassNotReferencingInstanceNoConflict.ts, 5, 14)) diff --git a/tests/baselines/reference/internalImportUnInstantiatedModuleMergedWithClassNotReferencingInstanceNoConflict.symbols b/tests/baselines/reference/internalImportUnInstantiatedModuleMergedWithClassNotReferencingInstanceNoConflict.symbols index 5852777fe1c..2cf6a029bc8 100644 --- a/tests/baselines/reference/internalImportUnInstantiatedModuleMergedWithClassNotReferencingInstanceNoConflict.symbols +++ b/tests/baselines/reference/internalImportUnInstantiatedModuleMergedWithClassNotReferencingInstanceNoConflict.symbols @@ -3,14 +3,14 @@ class A { >A : Symbol(A, Decl(internalImportUnInstantiatedModuleMergedWithClassNotReferencingInstanceNoConflict.ts, 0, 0), Decl(internalImportUnInstantiatedModuleMergedWithClassNotReferencingInstanceNoConflict.ts, 2, 1)) aProp: string; ->aProp : Symbol(aProp, Decl(internalImportUnInstantiatedModuleMergedWithClassNotReferencingInstanceNoConflict.ts, 0, 9)) +>aProp : Symbol(A.aProp, Decl(internalImportUnInstantiatedModuleMergedWithClassNotReferencingInstanceNoConflict.ts, 0, 9)) } module A { >A : Symbol(A, Decl(internalImportUnInstantiatedModuleMergedWithClassNotReferencingInstanceNoConflict.ts, 0, 0), Decl(internalImportUnInstantiatedModuleMergedWithClassNotReferencingInstanceNoConflict.ts, 2, 1)) export interface X { s: string } >X : Symbol(X, Decl(internalImportUnInstantiatedModuleMergedWithClassNotReferencingInstanceNoConflict.ts, 3, 10)) ->s : Symbol(s, Decl(internalImportUnInstantiatedModuleMergedWithClassNotReferencingInstanceNoConflict.ts, 4, 24)) +>s : Symbol(X.s, Decl(internalImportUnInstantiatedModuleMergedWithClassNotReferencingInstanceNoConflict.ts, 4, 24)) } module B { diff --git a/tests/baselines/reference/internalImportUnInstantiatedModuleNotReferencingInstanceNoConflict.symbols b/tests/baselines/reference/internalImportUnInstantiatedModuleNotReferencingInstanceNoConflict.symbols index 06df9fbfa3f..0281e502026 100644 --- a/tests/baselines/reference/internalImportUnInstantiatedModuleNotReferencingInstanceNoConflict.symbols +++ b/tests/baselines/reference/internalImportUnInstantiatedModuleNotReferencingInstanceNoConflict.symbols @@ -4,7 +4,7 @@ module A { export interface X { s: string } >X : Symbol(X, Decl(internalImportUnInstantiatedModuleNotReferencingInstanceNoConflict.ts, 0, 10)) ->s : Symbol(s, Decl(internalImportUnInstantiatedModuleNotReferencingInstanceNoConflict.ts, 1, 24)) +>s : Symbol(X.s, Decl(internalImportUnInstantiatedModuleNotReferencingInstanceNoConflict.ts, 1, 24)) } module B { diff --git a/tests/baselines/reference/intersectionTypeEquivalence.symbols b/tests/baselines/reference/intersectionTypeEquivalence.symbols index 2bec452c44e..effcd2759e5 100644 --- a/tests/baselines/reference/intersectionTypeEquivalence.symbols +++ b/tests/baselines/reference/intersectionTypeEquivalence.symbols @@ -1,15 +1,15 @@ === tests/cases/conformance/types/intersection/intersectionTypeEquivalence.ts === interface A { a: string } >A : Symbol(A, Decl(intersectionTypeEquivalence.ts, 0, 0)) ->a : Symbol(a, Decl(intersectionTypeEquivalence.ts, 0, 13)) +>a : Symbol(A.a, Decl(intersectionTypeEquivalence.ts, 0, 13)) interface B { b: string } >B : Symbol(B, Decl(intersectionTypeEquivalence.ts, 0, 25)) ->b : Symbol(b, Decl(intersectionTypeEquivalence.ts, 1, 13)) +>b : Symbol(B.b, Decl(intersectionTypeEquivalence.ts, 1, 13)) interface C { c: string } >C : Symbol(C, Decl(intersectionTypeEquivalence.ts, 1, 25)) ->c : Symbol(c, Decl(intersectionTypeEquivalence.ts, 2, 13)) +>c : Symbol(C.c, Decl(intersectionTypeEquivalence.ts, 2, 13)) // A & B is equivalent to B & A. var y: A & B; diff --git a/tests/baselines/reference/intersectionTypeMembers.symbols b/tests/baselines/reference/intersectionTypeMembers.symbols index ebec69b4ebe..9ec66ef64b9 100644 --- a/tests/baselines/reference/intersectionTypeMembers.symbols +++ b/tests/baselines/reference/intersectionTypeMembers.symbols @@ -4,15 +4,15 @@ interface A { a: string } >A : Symbol(A, Decl(intersectionTypeMembers.ts, 0, 0)) ->a : Symbol(a, Decl(intersectionTypeMembers.ts, 3, 13)) +>a : Symbol(A.a, Decl(intersectionTypeMembers.ts, 3, 13)) interface B { b: string } >B : Symbol(B, Decl(intersectionTypeMembers.ts, 3, 25)) ->b : Symbol(b, Decl(intersectionTypeMembers.ts, 4, 13)) +>b : Symbol(B.b, Decl(intersectionTypeMembers.ts, 4, 13)) interface C { c: string } >C : Symbol(C, Decl(intersectionTypeMembers.ts, 4, 25)) ->c : Symbol(c, Decl(intersectionTypeMembers.ts, 5, 13)) +>c : Symbol(C.c, Decl(intersectionTypeMembers.ts, 5, 13)) var abc: A & B & C; >abc : Symbol(abc, Decl(intersectionTypeMembers.ts, 7, 3)) @@ -37,17 +37,17 @@ abc.c = "hello"; interface X { x: A } >X : Symbol(X, Decl(intersectionTypeMembers.ts, 10, 16)) ->x : Symbol(x, Decl(intersectionTypeMembers.ts, 12, 13)) +>x : Symbol(X.x, Decl(intersectionTypeMembers.ts, 12, 13)) >A : Symbol(A, Decl(intersectionTypeMembers.ts, 0, 0)) interface Y { x: B } >Y : Symbol(Y, Decl(intersectionTypeMembers.ts, 12, 20)) ->x : Symbol(x, Decl(intersectionTypeMembers.ts, 13, 13)) +>x : Symbol(Y.x, Decl(intersectionTypeMembers.ts, 13, 13)) >B : Symbol(B, Decl(intersectionTypeMembers.ts, 3, 25)) interface Z { x: C } >Z : Symbol(Z, Decl(intersectionTypeMembers.ts, 13, 20)) ->x : Symbol(x, Decl(intersectionTypeMembers.ts, 14, 13)) +>x : Symbol(Z.x, Decl(intersectionTypeMembers.ts, 14, 13)) >C : Symbol(C, Decl(intersectionTypeMembers.ts, 4, 25)) var xyz: X & Y & Z; diff --git a/tests/baselines/reference/invalidThisEmitInContextualObjectLiteral.symbols b/tests/baselines/reference/invalidThisEmitInContextualObjectLiteral.symbols index e313d8e44d1..bb20fce76cd 100644 --- a/tests/baselines/reference/invalidThisEmitInContextualObjectLiteral.symbols +++ b/tests/baselines/reference/invalidThisEmitInContextualObjectLiteral.symbols @@ -3,11 +3,11 @@ interface IDef { >IDef : Symbol(IDef, Decl(invalidThisEmitInContextualObjectLiteral.ts, 0, 0)) p1: (e:string) => void; ->p1 : Symbol(p1, Decl(invalidThisEmitInContextualObjectLiteral.ts, 0, 16)) +>p1 : Symbol(IDef.p1, Decl(invalidThisEmitInContextualObjectLiteral.ts, 0, 16)) >e : Symbol(e, Decl(invalidThisEmitInContextualObjectLiteral.ts, 1, 6)) p2: () => (n: number) => any; ->p2 : Symbol(p2, Decl(invalidThisEmitInContextualObjectLiteral.ts, 1, 24)) +>p2 : Symbol(IDef.p2, Decl(invalidThisEmitInContextualObjectLiteral.ts, 1, 24)) >n : Symbol(n, Decl(invalidThisEmitInContextualObjectLiteral.ts, 2, 12)) } @@ -15,15 +15,15 @@ class TestController { >TestController : Symbol(TestController, Decl(invalidThisEmitInContextualObjectLiteral.ts, 3, 1)) public m(def: IDef) { } ->m : Symbol(m, Decl(invalidThisEmitInContextualObjectLiteral.ts, 5, 22)) +>m : Symbol(TestController.m, Decl(invalidThisEmitInContextualObjectLiteral.ts, 5, 22)) >def : Symbol(def, Decl(invalidThisEmitInContextualObjectLiteral.ts, 6, 10)) >IDef : Symbol(IDef, Decl(invalidThisEmitInContextualObjectLiteral.ts, 0, 0)) public p = this.m({ ->p : Symbol(p, Decl(invalidThisEmitInContextualObjectLiteral.ts, 6, 24)) ->this.m : Symbol(m, Decl(invalidThisEmitInContextualObjectLiteral.ts, 5, 22)) +>p : Symbol(TestController.p, Decl(invalidThisEmitInContextualObjectLiteral.ts, 6, 24)) +>this.m : Symbol(TestController.m, Decl(invalidThisEmitInContextualObjectLiteral.ts, 5, 22)) >this : Symbol(TestController, Decl(invalidThisEmitInContextualObjectLiteral.ts, 3, 1)) ->m : Symbol(m, Decl(invalidThisEmitInContextualObjectLiteral.ts, 5, 22)) +>m : Symbol(TestController.m, Decl(invalidThisEmitInContextualObjectLiteral.ts, 5, 22)) p1: e => { }, >p1 : Symbol(p1, Decl(invalidThisEmitInContextualObjectLiteral.ts, 7, 20)) diff --git a/tests/baselines/reference/invalidUndefinedValues.symbols b/tests/baselines/reference/invalidUndefinedValues.symbols index 5a9b81fde31..748adc75eec 100644 --- a/tests/baselines/reference/invalidUndefinedValues.symbols +++ b/tests/baselines/reference/invalidUndefinedValues.symbols @@ -24,7 +24,7 @@ x = null; class C { foo: string } >C : Symbol(C, Decl(invalidUndefinedValues.ts, 7, 9)) ->foo : Symbol(foo, Decl(invalidUndefinedValues.ts, 9, 9)) +>foo : Symbol(C.foo, Decl(invalidUndefinedValues.ts, 9, 9)) var b: C; >b : Symbol(b, Decl(invalidUndefinedValues.ts, 10, 3)) @@ -40,7 +40,7 @@ x = b; interface I { foo: string } >I : Symbol(I, Decl(invalidUndefinedValues.ts, 12, 6)) ->foo : Symbol(foo, Decl(invalidUndefinedValues.ts, 14, 13)) +>foo : Symbol(I.foo, Decl(invalidUndefinedValues.ts, 14, 13)) var c: I; >c : Symbol(c, Decl(invalidUndefinedValues.ts, 15, 3)) diff --git a/tests/baselines/reference/ipromise2.symbols b/tests/baselines/reference/ipromise2.symbols index be936f4512a..f4c4d2a0375 100644 --- a/tests/baselines/reference/ipromise2.symbols +++ b/tests/baselines/reference/ipromise2.symbols @@ -8,7 +8,7 @@ declare module Windows.Foundation { >T : Symbol(T, Decl(ipromise2.ts, 1, 30)) then(success?: (value: T) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void ): Windows.Foundation.IPromise; ->then : Symbol(then, Decl(ipromise2.ts, 1, 34), Decl(ipromise2.ts, 2, 159), Decl(ipromise2.ts, 3, 149), Decl(ipromise2.ts, 4, 149)) +>then : Symbol(IPromise.then, Decl(ipromise2.ts, 1, 34), Decl(ipromise2.ts, 2, 159), Decl(ipromise2.ts, 3, 149), Decl(ipromise2.ts, 4, 149)) >U : Symbol(U, Decl(ipromise2.ts, 2, 13)) >success : Symbol(success, Decl(ipromise2.ts, 2, 16)) >value : Symbol(value, Decl(ipromise2.ts, 2, 27)) @@ -27,7 +27,7 @@ declare module Windows.Foundation { >U : Symbol(U, Decl(ipromise2.ts, 2, 13)) then(success?: (value: T) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void ): Windows.Foundation.IPromise; ->then : Symbol(then, Decl(ipromise2.ts, 1, 34), Decl(ipromise2.ts, 2, 159), Decl(ipromise2.ts, 3, 149), Decl(ipromise2.ts, 4, 149)) +>then : Symbol(IPromise.then, Decl(ipromise2.ts, 1, 34), Decl(ipromise2.ts, 2, 159), Decl(ipromise2.ts, 3, 149), Decl(ipromise2.ts, 4, 149)) >U : Symbol(U, Decl(ipromise2.ts, 3, 13)) >success : Symbol(success, Decl(ipromise2.ts, 3, 16)) >value : Symbol(value, Decl(ipromise2.ts, 3, 27)) @@ -45,7 +45,7 @@ declare module Windows.Foundation { >U : Symbol(U, Decl(ipromise2.ts, 3, 13)) then(success?: (value: T) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void ): Windows.Foundation.IPromise; ->then : Symbol(then, Decl(ipromise2.ts, 1, 34), Decl(ipromise2.ts, 2, 159), Decl(ipromise2.ts, 3, 149), Decl(ipromise2.ts, 4, 149)) +>then : Symbol(IPromise.then, Decl(ipromise2.ts, 1, 34), Decl(ipromise2.ts, 2, 159), Decl(ipromise2.ts, 3, 149), Decl(ipromise2.ts, 4, 149)) >U : Symbol(U, Decl(ipromise2.ts, 4, 13)) >success : Symbol(success, Decl(ipromise2.ts, 4, 16)) >value : Symbol(value, Decl(ipromise2.ts, 4, 27)) @@ -63,7 +63,7 @@ declare module Windows.Foundation { >U : Symbol(U, Decl(ipromise2.ts, 4, 13)) then(success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void ): Windows.Foundation.IPromise; ->then : Symbol(then, Decl(ipromise2.ts, 1, 34), Decl(ipromise2.ts, 2, 159), Decl(ipromise2.ts, 3, 149), Decl(ipromise2.ts, 4, 149)) +>then : Symbol(IPromise.then, Decl(ipromise2.ts, 1, 34), Decl(ipromise2.ts, 2, 159), Decl(ipromise2.ts, 3, 149), Decl(ipromise2.ts, 4, 149)) >U : Symbol(U, Decl(ipromise2.ts, 5, 13)) >success : Symbol(success, Decl(ipromise2.ts, 5, 16)) >value : Symbol(value, Decl(ipromise2.ts, 5, 27)) @@ -80,7 +80,7 @@ declare module Windows.Foundation { >U : Symbol(U, Decl(ipromise2.ts, 5, 13)) done(success?: (value: T) => any, error?: (error: any) => any, progress?: (progress: any) => void ): void; ->done : Symbol(done, Decl(ipromise2.ts, 5, 139)) +>done : Symbol(IPromise.done, Decl(ipromise2.ts, 5, 139)) >U : Symbol(U, Decl(ipromise2.ts, 6, 13)) >success : Symbol(success, Decl(ipromise2.ts, 6, 16)) >value : Symbol(value, Decl(ipromise2.ts, 6, 27)) @@ -91,7 +91,7 @@ declare module Windows.Foundation { >progress : Symbol(progress, Decl(ipromise2.ts, 6, 86)) value: T; ->value : Symbol(value, Decl(ipromise2.ts, 6, 117)) +>value : Symbol(IPromise.value, Decl(ipromise2.ts, 6, 117)) >T : Symbol(T, Decl(ipromise2.ts, 1, 30)) } } diff --git a/tests/baselines/reference/ipromise3.symbols b/tests/baselines/reference/ipromise3.symbols index 3605a94fc88..c264f8e2280 100644 --- a/tests/baselines/reference/ipromise3.symbols +++ b/tests/baselines/reference/ipromise3.symbols @@ -4,7 +4,7 @@ interface IPromise3 { >T : Symbol(T, Decl(ipromise3.ts, 0, 20)) then(success?: (value: T) => IPromise3, error?: (error: any) => IPromise3, progress?: (progress: any) => void ): IPromise3; ->then : Symbol(then, Decl(ipromise3.ts, 0, 24), Decl(ipromise3.ts, 1, 139), Decl(ipromise3.ts, 2, 128), Decl(ipromise3.ts, 3, 128)) +>then : Symbol(IPromise3.then, Decl(ipromise3.ts, 0, 24), Decl(ipromise3.ts, 1, 139), Decl(ipromise3.ts, 2, 128), Decl(ipromise3.ts, 3, 128)) >U : Symbol(U, Decl(ipromise3.ts, 1, 9)) >success : Symbol(success, Decl(ipromise3.ts, 1, 12)) >value : Symbol(value, Decl(ipromise3.ts, 1, 23)) @@ -21,7 +21,7 @@ interface IPromise3 { >U : Symbol(U, Decl(ipromise3.ts, 1, 9)) then(success?: (value: T) => IPromise3, error?: (error: any) => U, progress?: (progress: any) => void ): IPromise3; ->then : Symbol(then, Decl(ipromise3.ts, 0, 24), Decl(ipromise3.ts, 1, 139), Decl(ipromise3.ts, 2, 128), Decl(ipromise3.ts, 3, 128)) +>then : Symbol(IPromise3.then, Decl(ipromise3.ts, 0, 24), Decl(ipromise3.ts, 1, 139), Decl(ipromise3.ts, 2, 128), Decl(ipromise3.ts, 3, 128)) >U : Symbol(U, Decl(ipromise3.ts, 2, 9)) >success : Symbol(success, Decl(ipromise3.ts, 2, 12)) >value : Symbol(value, Decl(ipromise3.ts, 2, 23)) @@ -37,7 +37,7 @@ interface IPromise3 { >U : Symbol(U, Decl(ipromise3.ts, 2, 9)) then(success?: (value: T) => U, error?: (error: any) => IPromise3, progress?: (progress: any) => void ): IPromise3; ->then : Symbol(then, Decl(ipromise3.ts, 0, 24), Decl(ipromise3.ts, 1, 139), Decl(ipromise3.ts, 2, 128), Decl(ipromise3.ts, 3, 128)) +>then : Symbol(IPromise3.then, Decl(ipromise3.ts, 0, 24), Decl(ipromise3.ts, 1, 139), Decl(ipromise3.ts, 2, 128), Decl(ipromise3.ts, 3, 128)) >U : Symbol(U, Decl(ipromise3.ts, 3, 9)) >success : Symbol(success, Decl(ipromise3.ts, 3, 12)) >value : Symbol(value, Decl(ipromise3.ts, 3, 23)) @@ -53,7 +53,7 @@ interface IPromise3 { >U : Symbol(U, Decl(ipromise3.ts, 3, 9)) then(success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void ): IPromise3; ->then : Symbol(then, Decl(ipromise3.ts, 0, 24), Decl(ipromise3.ts, 1, 139), Decl(ipromise3.ts, 2, 128), Decl(ipromise3.ts, 3, 128)) +>then : Symbol(IPromise3.then, Decl(ipromise3.ts, 0, 24), Decl(ipromise3.ts, 1, 139), Decl(ipromise3.ts, 2, 128), Decl(ipromise3.ts, 3, 128)) >U : Symbol(U, Decl(ipromise3.ts, 4, 9)) >success : Symbol(success, Decl(ipromise3.ts, 4, 12)) >value : Symbol(value, Decl(ipromise3.ts, 4, 23)) @@ -68,7 +68,7 @@ interface IPromise3 { >U : Symbol(U, Decl(ipromise3.ts, 4, 9)) done? (success?: (value: T) => any, error?: (error: any) => any, progress?: (progress: any) => void ): void; ->done : Symbol(done, Decl(ipromise3.ts, 4, 117)) +>done : Symbol(IPromise3.done, Decl(ipromise3.ts, 4, 117)) >U : Symbol(U, Decl(ipromise3.ts, 5, 11)) >success : Symbol(success, Decl(ipromise3.ts, 5, 14)) >value : Symbol(value, Decl(ipromise3.ts, 5, 25)) diff --git a/tests/baselines/reference/ipromise4.symbols b/tests/baselines/reference/ipromise4.symbols index 65ae5f90cfe..58055fdc59d 100644 --- a/tests/baselines/reference/ipromise4.symbols +++ b/tests/baselines/reference/ipromise4.symbols @@ -8,7 +8,7 @@ declare module Windows.Foundation { >T : Symbol(T, Decl(ipromise4.ts, 1, 30)) then(success?: (value: T) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void ): Windows.Foundation.IPromise; ->then : Symbol(then, Decl(ipromise4.ts, 1, 34), Decl(ipromise4.ts, 2, 159), Decl(ipromise4.ts, 3, 149), Decl(ipromise4.ts, 4, 149)) +>then : Symbol(IPromise.then, Decl(ipromise4.ts, 1, 34), Decl(ipromise4.ts, 2, 159), Decl(ipromise4.ts, 3, 149), Decl(ipromise4.ts, 4, 149)) >U : Symbol(U, Decl(ipromise4.ts, 2, 13)) >success : Symbol(success, Decl(ipromise4.ts, 2, 16)) >value : Symbol(value, Decl(ipromise4.ts, 2, 27)) @@ -27,7 +27,7 @@ declare module Windows.Foundation { >U : Symbol(U, Decl(ipromise4.ts, 2, 13)) then(success?: (value: T) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void ): Windows.Foundation.IPromise; ->then : Symbol(then, Decl(ipromise4.ts, 1, 34), Decl(ipromise4.ts, 2, 159), Decl(ipromise4.ts, 3, 149), Decl(ipromise4.ts, 4, 149)) +>then : Symbol(IPromise.then, Decl(ipromise4.ts, 1, 34), Decl(ipromise4.ts, 2, 159), Decl(ipromise4.ts, 3, 149), Decl(ipromise4.ts, 4, 149)) >U : Symbol(U, Decl(ipromise4.ts, 3, 13)) >success : Symbol(success, Decl(ipromise4.ts, 3, 16)) >value : Symbol(value, Decl(ipromise4.ts, 3, 27)) @@ -45,7 +45,7 @@ declare module Windows.Foundation { >U : Symbol(U, Decl(ipromise4.ts, 3, 13)) then(success?: (value: T) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void ): Windows.Foundation.IPromise; ->then : Symbol(then, Decl(ipromise4.ts, 1, 34), Decl(ipromise4.ts, 2, 159), Decl(ipromise4.ts, 3, 149), Decl(ipromise4.ts, 4, 149)) +>then : Symbol(IPromise.then, Decl(ipromise4.ts, 1, 34), Decl(ipromise4.ts, 2, 159), Decl(ipromise4.ts, 3, 149), Decl(ipromise4.ts, 4, 149)) >U : Symbol(U, Decl(ipromise4.ts, 4, 13)) >success : Symbol(success, Decl(ipromise4.ts, 4, 16)) >value : Symbol(value, Decl(ipromise4.ts, 4, 27)) @@ -63,7 +63,7 @@ declare module Windows.Foundation { >U : Symbol(U, Decl(ipromise4.ts, 4, 13)) then(success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void ): Windows.Foundation.IPromise; ->then : Symbol(then, Decl(ipromise4.ts, 1, 34), Decl(ipromise4.ts, 2, 159), Decl(ipromise4.ts, 3, 149), Decl(ipromise4.ts, 4, 149)) +>then : Symbol(IPromise.then, Decl(ipromise4.ts, 1, 34), Decl(ipromise4.ts, 2, 159), Decl(ipromise4.ts, 3, 149), Decl(ipromise4.ts, 4, 149)) >U : Symbol(U, Decl(ipromise4.ts, 5, 13)) >success : Symbol(success, Decl(ipromise4.ts, 5, 16)) >value : Symbol(value, Decl(ipromise4.ts, 5, 27)) @@ -80,7 +80,7 @@ declare module Windows.Foundation { >U : Symbol(U, Decl(ipromise4.ts, 5, 13)) done? (success?: (value: T) => any, error?: (error: any) => any, progress?: (progress: any) => void ): void; ->done : Symbol(done, Decl(ipromise4.ts, 5, 139)) +>done : Symbol(IPromise.done, Decl(ipromise4.ts, 5, 139)) >U : Symbol(U, Decl(ipromise4.ts, 6, 15)) >success : Symbol(success, Decl(ipromise4.ts, 6, 18)) >value : Symbol(value, Decl(ipromise4.ts, 6, 29)) diff --git a/tests/baselines/reference/isDeclarationVisibleNodeKinds.symbols b/tests/baselines/reference/isDeclarationVisibleNodeKinds.symbols index 2af21772cfb..ecc68121f37 100644 --- a/tests/baselines/reference/isDeclarationVisibleNodeKinds.symbols +++ b/tests/baselines/reference/isDeclarationVisibleNodeKinds.symbols @@ -146,7 +146,7 @@ module schema { >T : Symbol(T, Decl(isDeclarationVisibleNodeKinds.ts, 59, 15)) get createValidator9(): (data: T) => T { ->createValidator9 : Symbol(createValidator9, Decl(isDeclarationVisibleNodeKinds.ts, 60, 20)) +>createValidator9 : Symbol(T.createValidator9, Decl(isDeclarationVisibleNodeKinds.ts, 60, 20)) >T : Symbol(T, Decl(isDeclarationVisibleNodeKinds.ts, 61, 33)) >data : Symbol(data, Decl(isDeclarationVisibleNodeKinds.ts, 61, 36)) >T : Symbol(T, Decl(isDeclarationVisibleNodeKinds.ts, 61, 33)) @@ -157,7 +157,7 @@ module schema { } set createValidator10(v: (data: T) => T) { ->createValidator10 : Symbol(createValidator10, Decl(isDeclarationVisibleNodeKinds.ts, 63, 9)) +>createValidator10 : Symbol(T.createValidator10, Decl(isDeclarationVisibleNodeKinds.ts, 63, 9)) >v : Symbol(v, Decl(isDeclarationVisibleNodeKinds.ts, 65, 30)) >T : Symbol(T, Decl(isDeclarationVisibleNodeKinds.ts, 65, 34)) >data : Symbol(data, Decl(isDeclarationVisibleNodeKinds.ts, 65, 37)) diff --git a/tests/baselines/reference/iterableArrayPattern1.symbols b/tests/baselines/reference/iterableArrayPattern1.symbols index 2877a2233da..a7e8215dda9 100644 --- a/tests/baselines/reference/iterableArrayPattern1.symbols +++ b/tests/baselines/reference/iterableArrayPattern1.symbols @@ -8,12 +8,12 @@ class SymbolIterator { >SymbolIterator : Symbol(SymbolIterator, Decl(iterableArrayPattern1.ts, 0, 32)) next() { ->next : Symbol(next, Decl(iterableArrayPattern1.ts, 1, 22)) +>next : Symbol(SymbolIterator.next, Decl(iterableArrayPattern1.ts, 1, 22)) return { value: Symbol(), >value : Symbol(value, Decl(iterableArrayPattern1.ts, 3, 16)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) done: false >done : Symbol(done, Decl(iterableArrayPattern1.ts, 4, 28)) @@ -22,9 +22,9 @@ class SymbolIterator { } [Symbol.iterator]() { ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) return this; >this : Symbol(SymbolIterator, Decl(iterableArrayPattern1.ts, 0, 32)) diff --git a/tests/baselines/reference/iterableArrayPattern11.symbols b/tests/baselines/reference/iterableArrayPattern11.symbols index 6181edbf1fd..9a61280b634 100644 --- a/tests/baselines/reference/iterableArrayPattern11.symbols +++ b/tests/baselines/reference/iterableArrayPattern11.symbols @@ -11,18 +11,18 @@ fun(new FooIterator); class Bar { x } >Bar : Symbol(Bar, Decl(iterableArrayPattern11.ts, 1, 21)) ->x : Symbol(x, Decl(iterableArrayPattern11.ts, 2, 11)) +>x : Symbol(Bar.x, Decl(iterableArrayPattern11.ts, 2, 11)) class Foo extends Bar { y } >Foo : Symbol(Foo, Decl(iterableArrayPattern11.ts, 2, 15)) >Bar : Symbol(Bar, Decl(iterableArrayPattern11.ts, 1, 21)) ->y : Symbol(y, Decl(iterableArrayPattern11.ts, 3, 23)) +>y : Symbol(Foo.y, Decl(iterableArrayPattern11.ts, 3, 23)) class FooIterator { >FooIterator : Symbol(FooIterator, Decl(iterableArrayPattern11.ts, 3, 27)) next() { ->next : Symbol(next, Decl(iterableArrayPattern11.ts, 4, 19)) +>next : Symbol(FooIterator.next, Decl(iterableArrayPattern11.ts, 4, 19)) return { value: new Foo, @@ -36,9 +36,9 @@ class FooIterator { } [Symbol.iterator]() { ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) return this; >this : Symbol(FooIterator, Decl(iterableArrayPattern11.ts, 3, 27)) diff --git a/tests/baselines/reference/iterableArrayPattern12.symbols b/tests/baselines/reference/iterableArrayPattern12.symbols index e4b4baf3bd5..8046b32d120 100644 --- a/tests/baselines/reference/iterableArrayPattern12.symbols +++ b/tests/baselines/reference/iterableArrayPattern12.symbols @@ -11,18 +11,18 @@ fun(new FooIterator); class Bar { x } >Bar : Symbol(Bar, Decl(iterableArrayPattern12.ts, 1, 21)) ->x : Symbol(x, Decl(iterableArrayPattern12.ts, 2, 11)) +>x : Symbol(Bar.x, Decl(iterableArrayPattern12.ts, 2, 11)) class Foo extends Bar { y } >Foo : Symbol(Foo, Decl(iterableArrayPattern12.ts, 2, 15)) >Bar : Symbol(Bar, Decl(iterableArrayPattern12.ts, 1, 21)) ->y : Symbol(y, Decl(iterableArrayPattern12.ts, 3, 23)) +>y : Symbol(Foo.y, Decl(iterableArrayPattern12.ts, 3, 23)) class FooIterator { >FooIterator : Symbol(FooIterator, Decl(iterableArrayPattern12.ts, 3, 27)) next() { ->next : Symbol(next, Decl(iterableArrayPattern12.ts, 4, 19)) +>next : Symbol(FooIterator.next, Decl(iterableArrayPattern12.ts, 4, 19)) return { value: new Foo, @@ -36,9 +36,9 @@ class FooIterator { } [Symbol.iterator]() { ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) return this; >this : Symbol(FooIterator, Decl(iterableArrayPattern12.ts, 3, 27)) diff --git a/tests/baselines/reference/iterableArrayPattern13.symbols b/tests/baselines/reference/iterableArrayPattern13.symbols index 02f219e7092..3ebaac62fcc 100644 --- a/tests/baselines/reference/iterableArrayPattern13.symbols +++ b/tests/baselines/reference/iterableArrayPattern13.symbols @@ -10,18 +10,18 @@ fun(new FooIterator); class Bar { x } >Bar : Symbol(Bar, Decl(iterableArrayPattern13.ts, 1, 21)) ->x : Symbol(x, Decl(iterableArrayPattern13.ts, 2, 11)) +>x : Symbol(Bar.x, Decl(iterableArrayPattern13.ts, 2, 11)) class Foo extends Bar { y } >Foo : Symbol(Foo, Decl(iterableArrayPattern13.ts, 2, 15)) >Bar : Symbol(Bar, Decl(iterableArrayPattern13.ts, 1, 21)) ->y : Symbol(y, Decl(iterableArrayPattern13.ts, 3, 23)) +>y : Symbol(Foo.y, Decl(iterableArrayPattern13.ts, 3, 23)) class FooIterator { >FooIterator : Symbol(FooIterator, Decl(iterableArrayPattern13.ts, 3, 27)) next() { ->next : Symbol(next, Decl(iterableArrayPattern13.ts, 4, 19)) +>next : Symbol(FooIterator.next, Decl(iterableArrayPattern13.ts, 4, 19)) return { value: new Foo, @@ -35,9 +35,9 @@ class FooIterator { } [Symbol.iterator]() { ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) return this; >this : Symbol(FooIterator, Decl(iterableArrayPattern13.ts, 3, 27)) diff --git a/tests/baselines/reference/iterableArrayPattern2.symbols b/tests/baselines/reference/iterableArrayPattern2.symbols index dad1262cee9..6ab3040d570 100644 --- a/tests/baselines/reference/iterableArrayPattern2.symbols +++ b/tests/baselines/reference/iterableArrayPattern2.symbols @@ -8,12 +8,12 @@ class SymbolIterator { >SymbolIterator : Symbol(SymbolIterator, Decl(iterableArrayPattern2.ts, 0, 35)) next() { ->next : Symbol(next, Decl(iterableArrayPattern2.ts, 1, 22)) +>next : Symbol(SymbolIterator.next, Decl(iterableArrayPattern2.ts, 1, 22)) return { value: Symbol(), >value : Symbol(value, Decl(iterableArrayPattern2.ts, 3, 16)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) done: false >done : Symbol(done, Decl(iterableArrayPattern2.ts, 4, 28)) @@ -22,9 +22,9 @@ class SymbolIterator { } [Symbol.iterator]() { ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) return this; >this : Symbol(SymbolIterator, Decl(iterableArrayPattern2.ts, 0, 35)) diff --git a/tests/baselines/reference/iterableArrayPattern3.symbols b/tests/baselines/reference/iterableArrayPattern3.symbols index e0372862b9e..b9fe0a95cdd 100644 --- a/tests/baselines/reference/iterableArrayPattern3.symbols +++ b/tests/baselines/reference/iterableArrayPattern3.symbols @@ -12,18 +12,18 @@ var a: Bar, b: Bar; class Bar { x } >Bar : Symbol(Bar, Decl(iterableArrayPattern3.ts, 1, 25)) ->x : Symbol(x, Decl(iterableArrayPattern3.ts, 2, 11)) +>x : Symbol(Bar.x, Decl(iterableArrayPattern3.ts, 2, 11)) class Foo extends Bar { y } >Foo : Symbol(Foo, Decl(iterableArrayPattern3.ts, 2, 15)) >Bar : Symbol(Bar, Decl(iterableArrayPattern3.ts, 1, 25)) ->y : Symbol(y, Decl(iterableArrayPattern3.ts, 3, 23)) +>y : Symbol(Foo.y, Decl(iterableArrayPattern3.ts, 3, 23)) class FooIterator { >FooIterator : Symbol(FooIterator, Decl(iterableArrayPattern3.ts, 3, 27)) next() { ->next : Symbol(next, Decl(iterableArrayPattern3.ts, 4, 19)) +>next : Symbol(FooIterator.next, Decl(iterableArrayPattern3.ts, 4, 19)) return { value: new Foo, @@ -37,9 +37,9 @@ class FooIterator { } [Symbol.iterator]() { ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) return this; >this : Symbol(FooIterator, Decl(iterableArrayPattern3.ts, 3, 27)) diff --git a/tests/baselines/reference/iterableArrayPattern30.symbols b/tests/baselines/reference/iterableArrayPattern30.symbols index 393d9fbca51..b6597922490 100644 --- a/tests/baselines/reference/iterableArrayPattern30.symbols +++ b/tests/baselines/reference/iterableArrayPattern30.symbols @@ -4,5 +4,5 @@ const [[k1, v1], [k2, v2]] = new Map([["", true], ["hello", true]]) >v1 : Symbol(v1, Decl(iterableArrayPattern30.ts, 0, 11)) >k2 : Symbol(k2, Decl(iterableArrayPattern30.ts, 0, 18)) >v2 : Symbol(v2, Decl(iterableArrayPattern30.ts, 0, 21)) ->Map : Symbol(Map, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Map : Symbol(Map, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.collection.d.ts, --, --), Decl(lib.es2015.collection.d.ts, --, --)) diff --git a/tests/baselines/reference/iterableArrayPattern4.symbols b/tests/baselines/reference/iterableArrayPattern4.symbols index fb1cce1b8f9..b39834bec2e 100644 --- a/tests/baselines/reference/iterableArrayPattern4.symbols +++ b/tests/baselines/reference/iterableArrayPattern4.symbols @@ -12,18 +12,18 @@ var a: Bar, b: Bar[]; class Bar { x } >Bar : Symbol(Bar, Decl(iterableArrayPattern4.ts, 1, 28)) ->x : Symbol(x, Decl(iterableArrayPattern4.ts, 2, 11)) +>x : Symbol(Bar.x, Decl(iterableArrayPattern4.ts, 2, 11)) class Foo extends Bar { y } >Foo : Symbol(Foo, Decl(iterableArrayPattern4.ts, 2, 15)) >Bar : Symbol(Bar, Decl(iterableArrayPattern4.ts, 1, 28)) ->y : Symbol(y, Decl(iterableArrayPattern4.ts, 3, 23)) +>y : Symbol(Foo.y, Decl(iterableArrayPattern4.ts, 3, 23)) class FooIterator { >FooIterator : Symbol(FooIterator, Decl(iterableArrayPattern4.ts, 3, 27)) next() { ->next : Symbol(next, Decl(iterableArrayPattern4.ts, 4, 19)) +>next : Symbol(FooIterator.next, Decl(iterableArrayPattern4.ts, 4, 19)) return { value: new Foo, @@ -37,9 +37,9 @@ class FooIterator { } [Symbol.iterator]() { ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) return this; >this : Symbol(FooIterator, Decl(iterableArrayPattern4.ts, 3, 27)) diff --git a/tests/baselines/reference/iterableArrayPattern9.symbols b/tests/baselines/reference/iterableArrayPattern9.symbols index 07d580fcea1..f79e2d687b6 100644 --- a/tests/baselines/reference/iterableArrayPattern9.symbols +++ b/tests/baselines/reference/iterableArrayPattern9.symbols @@ -7,18 +7,18 @@ function fun([a, b] = new FooIterator) { } class Bar { x } >Bar : Symbol(Bar, Decl(iterableArrayPattern9.ts, 0, 42)) ->x : Symbol(x, Decl(iterableArrayPattern9.ts, 1, 11)) +>x : Symbol(Bar.x, Decl(iterableArrayPattern9.ts, 1, 11)) class Foo extends Bar { y } >Foo : Symbol(Foo, Decl(iterableArrayPattern9.ts, 1, 15)) >Bar : Symbol(Bar, Decl(iterableArrayPattern9.ts, 0, 42)) ->y : Symbol(y, Decl(iterableArrayPattern9.ts, 2, 23)) +>y : Symbol(Foo.y, Decl(iterableArrayPattern9.ts, 2, 23)) class FooIterator { >FooIterator : Symbol(FooIterator, Decl(iterableArrayPattern9.ts, 2, 27)) next() { ->next : Symbol(next, Decl(iterableArrayPattern9.ts, 3, 19)) +>next : Symbol(FooIterator.next, Decl(iterableArrayPattern9.ts, 3, 19)) return { value: new Foo, @@ -32,9 +32,9 @@ class FooIterator { } [Symbol.iterator]() { ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) return this; >this : Symbol(FooIterator, Decl(iterableArrayPattern9.ts, 2, 27)) diff --git a/tests/baselines/reference/iterableContextualTyping1.symbols b/tests/baselines/reference/iterableContextualTyping1.symbols index 5af4fdbcd78..8d9a47a8f3b 100644 --- a/tests/baselines/reference/iterableContextualTyping1.symbols +++ b/tests/baselines/reference/iterableContextualTyping1.symbols @@ -1,10 +1,10 @@ === tests/cases/conformance/expressions/contextualTyping/iterableContextualTyping1.ts === var iter: Iterable<(x: string) => number> = [s => s.length]; >iter : Symbol(iter, Decl(iterableContextualTyping1.ts, 0, 3)) ->Iterable : Symbol(Iterable, Decl(lib.d.ts, --, --)) +>Iterable : Symbol(Iterable, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >x : Symbol(x, Decl(iterableContextualTyping1.ts, 0, 20)) >s : Symbol(s, Decl(iterableContextualTyping1.ts, 0, 45)) ->s.length : Symbol(String.length, Decl(lib.d.ts, --, --)) +>s.length : Symbol(String.length, Decl(lib.es5.d.ts, --, --)) >s : Symbol(s, Decl(iterableContextualTyping1.ts, 0, 45)) ->length : Symbol(String.length, Decl(lib.d.ts, --, --)) +>length : Symbol(String.length, Decl(lib.es5.d.ts, --, --)) diff --git a/tests/baselines/reference/iteratorSpreadInArray.symbols b/tests/baselines/reference/iteratorSpreadInArray.symbols index d24abca314b..11e1de17444 100644 --- a/tests/baselines/reference/iteratorSpreadInArray.symbols +++ b/tests/baselines/reference/iteratorSpreadInArray.symbols @@ -7,12 +7,12 @@ class SymbolIterator { >SymbolIterator : Symbol(SymbolIterator, Decl(iteratorSpreadInArray.ts, 0, 36)) next() { ->next : Symbol(next, Decl(iteratorSpreadInArray.ts, 2, 22)) +>next : Symbol(SymbolIterator.next, Decl(iteratorSpreadInArray.ts, 2, 22)) return { value: Symbol(), >value : Symbol(value, Decl(iteratorSpreadInArray.ts, 4, 16)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) done: false >done : Symbol(done, Decl(iteratorSpreadInArray.ts, 5, 28)) @@ -21,9 +21,9 @@ class SymbolIterator { } [Symbol.iterator]() { ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) return this; >this : Symbol(SymbolIterator, Decl(iteratorSpreadInArray.ts, 0, 36)) diff --git a/tests/baselines/reference/iteratorSpreadInArray11.symbols b/tests/baselines/reference/iteratorSpreadInArray11.symbols index f982bf2deab..b2d8a522377 100644 --- a/tests/baselines/reference/iteratorSpreadInArray11.symbols +++ b/tests/baselines/reference/iteratorSpreadInArray11.symbols @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/spread/iteratorSpreadInArray11.ts === var iter: Iterable; >iter : Symbol(iter, Decl(iteratorSpreadInArray11.ts, 0, 3)) ->Iterable : Symbol(Iterable, Decl(lib.d.ts, --, --)) +>Iterable : Symbol(Iterable, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) var array = [...iter]; >array : Symbol(array, Decl(iteratorSpreadInArray11.ts, 1, 3)) diff --git a/tests/baselines/reference/iteratorSpreadInArray2.symbols b/tests/baselines/reference/iteratorSpreadInArray2.symbols index 029d83d2111..5f9354727e5 100644 --- a/tests/baselines/reference/iteratorSpreadInArray2.symbols +++ b/tests/baselines/reference/iteratorSpreadInArray2.symbols @@ -8,12 +8,12 @@ class SymbolIterator { >SymbolIterator : Symbol(SymbolIterator, Decl(iteratorSpreadInArray2.ts, 0, 59)) next() { ->next : Symbol(next, Decl(iteratorSpreadInArray2.ts, 2, 22)) +>next : Symbol(SymbolIterator.next, Decl(iteratorSpreadInArray2.ts, 2, 22)) return { value: Symbol(), >value : Symbol(value, Decl(iteratorSpreadInArray2.ts, 4, 16)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) done: false >done : Symbol(done, Decl(iteratorSpreadInArray2.ts, 5, 28)) @@ -22,9 +22,9 @@ class SymbolIterator { } [Symbol.iterator]() { ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) return this; >this : Symbol(SymbolIterator, Decl(iteratorSpreadInArray2.ts, 0, 59)) @@ -35,7 +35,7 @@ class NumberIterator { >NumberIterator : Symbol(NumberIterator, Decl(iteratorSpreadInArray2.ts, 13, 1)) next() { ->next : Symbol(next, Decl(iteratorSpreadInArray2.ts, 15, 22)) +>next : Symbol(NumberIterator.next, Decl(iteratorSpreadInArray2.ts, 15, 22)) return { value: 0, @@ -48,9 +48,9 @@ class NumberIterator { } [Symbol.iterator]() { ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) return this; >this : Symbol(NumberIterator, Decl(iteratorSpreadInArray2.ts, 13, 1)) diff --git a/tests/baselines/reference/iteratorSpreadInArray3.symbols b/tests/baselines/reference/iteratorSpreadInArray3.symbols index 05f90d44174..40d2c3aab43 100644 --- a/tests/baselines/reference/iteratorSpreadInArray3.symbols +++ b/tests/baselines/reference/iteratorSpreadInArray3.symbols @@ -7,12 +7,12 @@ class SymbolIterator { >SymbolIterator : Symbol(SymbolIterator, Decl(iteratorSpreadInArray3.ts, 0, 47)) next() { ->next : Symbol(next, Decl(iteratorSpreadInArray3.ts, 2, 22)) +>next : Symbol(SymbolIterator.next, Decl(iteratorSpreadInArray3.ts, 2, 22)) return { value: Symbol(), >value : Symbol(value, Decl(iteratorSpreadInArray3.ts, 4, 16)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) done: false >done : Symbol(done, Decl(iteratorSpreadInArray3.ts, 5, 28)) @@ -21,9 +21,9 @@ class SymbolIterator { } [Symbol.iterator]() { ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) return this; >this : Symbol(SymbolIterator, Decl(iteratorSpreadInArray3.ts, 0, 47)) diff --git a/tests/baselines/reference/iteratorSpreadInArray4.symbols b/tests/baselines/reference/iteratorSpreadInArray4.symbols index e7ace40c4de..65f3bbbea45 100644 --- a/tests/baselines/reference/iteratorSpreadInArray4.symbols +++ b/tests/baselines/reference/iteratorSpreadInArray4.symbols @@ -7,12 +7,12 @@ class SymbolIterator { >SymbolIterator : Symbol(SymbolIterator, Decl(iteratorSpreadInArray4.ts, 0, 42)) next() { ->next : Symbol(next, Decl(iteratorSpreadInArray4.ts, 2, 22)) +>next : Symbol(SymbolIterator.next, Decl(iteratorSpreadInArray4.ts, 2, 22)) return { value: Symbol(), >value : Symbol(value, Decl(iteratorSpreadInArray4.ts, 4, 16)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) done: false >done : Symbol(done, Decl(iteratorSpreadInArray4.ts, 5, 28)) @@ -21,9 +21,9 @@ class SymbolIterator { } [Symbol.iterator]() { ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) return this; >this : Symbol(SymbolIterator, Decl(iteratorSpreadInArray4.ts, 0, 42)) diff --git a/tests/baselines/reference/iteratorSpreadInArray7.symbols b/tests/baselines/reference/iteratorSpreadInArray7.symbols index 64521a9a33e..d5830a8146a 100644 --- a/tests/baselines/reference/iteratorSpreadInArray7.symbols +++ b/tests/baselines/reference/iteratorSpreadInArray7.symbols @@ -3,21 +3,21 @@ var array: symbol[]; >array : Symbol(array, Decl(iteratorSpreadInArray7.ts, 0, 3)) array.concat([...new SymbolIterator]); ->array.concat : Symbol(Array.concat, Decl(lib.d.ts, --, --)) +>array.concat : Symbol(Array.concat, Decl(lib.es5.d.ts, --, --)) >array : Symbol(array, Decl(iteratorSpreadInArray7.ts, 0, 3)) ->concat : Symbol(Array.concat, Decl(lib.d.ts, --, --)) +>concat : Symbol(Array.concat, Decl(lib.es5.d.ts, --, --)) >SymbolIterator : Symbol(SymbolIterator, Decl(iteratorSpreadInArray7.ts, 1, 38)) class SymbolIterator { >SymbolIterator : Symbol(SymbolIterator, Decl(iteratorSpreadInArray7.ts, 1, 38)) next() { ->next : Symbol(next, Decl(iteratorSpreadInArray7.ts, 3, 22)) +>next : Symbol(SymbolIterator.next, Decl(iteratorSpreadInArray7.ts, 3, 22)) return { value: Symbol(), >value : Symbol(value, Decl(iteratorSpreadInArray7.ts, 5, 16)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) done: false >done : Symbol(done, Decl(iteratorSpreadInArray7.ts, 6, 28)) @@ -26,9 +26,9 @@ class SymbolIterator { } [Symbol.iterator]() { ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) return this; >this : Symbol(SymbolIterator, Decl(iteratorSpreadInArray7.ts, 1, 38)) diff --git a/tests/baselines/reference/iteratorSpreadInCall11.symbols b/tests/baselines/reference/iteratorSpreadInCall11.symbols index e504283a3bd..335487813d9 100644 --- a/tests/baselines/reference/iteratorSpreadInCall11.symbols +++ b/tests/baselines/reference/iteratorSpreadInCall11.symbols @@ -14,12 +14,12 @@ class SymbolIterator { >SymbolIterator : Symbol(SymbolIterator, Decl(iteratorSpreadInCall11.ts, 2, 42)) next() { ->next : Symbol(next, Decl(iteratorSpreadInCall11.ts, 4, 22)) +>next : Symbol(SymbolIterator.next, Decl(iteratorSpreadInCall11.ts, 4, 22)) return { value: Symbol(), >value : Symbol(value, Decl(iteratorSpreadInCall11.ts, 6, 16)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) done: false >done : Symbol(done, Decl(iteratorSpreadInCall11.ts, 7, 28)) @@ -28,9 +28,9 @@ class SymbolIterator { } [Symbol.iterator]() { ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) return this; >this : Symbol(SymbolIterator, Decl(iteratorSpreadInCall11.ts, 2, 42)) diff --git a/tests/baselines/reference/iteratorSpreadInCall12.symbols b/tests/baselines/reference/iteratorSpreadInCall12.symbols index 4b7f553e969..b0d47deaba0 100644 --- a/tests/baselines/reference/iteratorSpreadInCall12.symbols +++ b/tests/baselines/reference/iteratorSpreadInCall12.symbols @@ -17,12 +17,12 @@ class SymbolIterator { >SymbolIterator : Symbol(SymbolIterator, Decl(iteratorSpreadInCall12.ts, 4, 1)) next() { ->next : Symbol(next, Decl(iteratorSpreadInCall12.ts, 6, 22)) +>next : Symbol(SymbolIterator.next, Decl(iteratorSpreadInCall12.ts, 6, 22)) return { value: Symbol(), >value : Symbol(value, Decl(iteratorSpreadInCall12.ts, 8, 16)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) done: false >done : Symbol(done, Decl(iteratorSpreadInCall12.ts, 9, 28)) @@ -31,9 +31,9 @@ class SymbolIterator { } [Symbol.iterator]() { ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) return this; >this : Symbol(SymbolIterator, Decl(iteratorSpreadInCall12.ts, 4, 1)) @@ -44,7 +44,7 @@ class StringIterator { >StringIterator : Symbol(StringIterator, Decl(iteratorSpreadInCall12.ts, 17, 1)) next() { ->next : Symbol(next, Decl(iteratorSpreadInCall12.ts, 19, 22)) +>next : Symbol(StringIterator.next, Decl(iteratorSpreadInCall12.ts, 19, 22)) return { value: "", @@ -57,9 +57,9 @@ class StringIterator { } [Symbol.iterator]() { ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) return this; >this : Symbol(StringIterator, Decl(iteratorSpreadInCall12.ts, 17, 1)) diff --git a/tests/baselines/reference/iteratorSpreadInCall3.symbols b/tests/baselines/reference/iteratorSpreadInCall3.symbols index 402b156002f..eef50a68d38 100644 --- a/tests/baselines/reference/iteratorSpreadInCall3.symbols +++ b/tests/baselines/reference/iteratorSpreadInCall3.symbols @@ -11,12 +11,12 @@ class SymbolIterator { >SymbolIterator : Symbol(SymbolIterator, Decl(iteratorSpreadInCall3.ts, 2, 32)) next() { ->next : Symbol(next, Decl(iteratorSpreadInCall3.ts, 3, 22)) +>next : Symbol(SymbolIterator.next, Decl(iteratorSpreadInCall3.ts, 3, 22)) return { value: Symbol(), >value : Symbol(value, Decl(iteratorSpreadInCall3.ts, 5, 16)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) done: false >done : Symbol(done, Decl(iteratorSpreadInCall3.ts, 6, 28)) @@ -25,9 +25,9 @@ class SymbolIterator { } [Symbol.iterator]() { ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) return this; >this : Symbol(SymbolIterator, Decl(iteratorSpreadInCall3.ts, 2, 32)) diff --git a/tests/baselines/reference/iteratorSpreadInCall5.symbols b/tests/baselines/reference/iteratorSpreadInCall5.symbols index 855b434f07c..02c44ec3bfa 100644 --- a/tests/baselines/reference/iteratorSpreadInCall5.symbols +++ b/tests/baselines/reference/iteratorSpreadInCall5.symbols @@ -12,12 +12,12 @@ class SymbolIterator { >SymbolIterator : Symbol(SymbolIterator, Decl(iteratorSpreadInCall5.ts, 2, 43)) next() { ->next : Symbol(next, Decl(iteratorSpreadInCall5.ts, 3, 22)) +>next : Symbol(SymbolIterator.next, Decl(iteratorSpreadInCall5.ts, 3, 22)) return { value: Symbol(), >value : Symbol(value, Decl(iteratorSpreadInCall5.ts, 5, 16)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) done: false >done : Symbol(done, Decl(iteratorSpreadInCall5.ts, 6, 28)) @@ -26,9 +26,9 @@ class SymbolIterator { } [Symbol.iterator]() { ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) return this; >this : Symbol(SymbolIterator, Decl(iteratorSpreadInCall5.ts, 2, 43)) @@ -39,7 +39,7 @@ class StringIterator { >StringIterator : Symbol(StringIterator, Decl(iteratorSpreadInCall5.ts, 14, 1)) next() { ->next : Symbol(next, Decl(iteratorSpreadInCall5.ts, 16, 22)) +>next : Symbol(StringIterator.next, Decl(iteratorSpreadInCall5.ts, 16, 22)) return { value: "", @@ -52,9 +52,9 @@ class StringIterator { } [Symbol.iterator]() { ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) return this; >this : Symbol(StringIterator, Decl(iteratorSpreadInCall5.ts, 14, 1)) diff --git a/tests/baselines/reference/iteratorSpreadInCall6.errors.txt b/tests/baselines/reference/iteratorSpreadInCall6.errors.txt index 0a0da985ace..ee9945f7af6 100644 --- a/tests/baselines/reference/iteratorSpreadInCall6.errors.txt +++ b/tests/baselines/reference/iteratorSpreadInCall6.errors.txt @@ -1,12 +1,10 @@ tests/cases/conformance/es6/spread/iteratorSpreadInCall6.ts(1,28): error TS2345: Argument of type 'string' is not assignable to parameter of type 'symbol | number'. - Type 'string' is not assignable to type 'number'. ==== tests/cases/conformance/es6/spread/iteratorSpreadInCall6.ts (1 errors) ==== foo(...new SymbolIterator, ...new StringIterator); ~~~~~~~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type 'string' is not assignable to parameter of type 'symbol | number'. -!!! error TS2345: Type 'string' is not assignable to type 'number'. function foo(...s: (symbol | number)[]) { } class SymbolIterator { diff --git a/tests/baselines/reference/jsFileCompilationClassMethodContainingArrowFunction.symbols b/tests/baselines/reference/jsFileCompilationClassMethodContainingArrowFunction.symbols index 8db5aa87a5b..0f6ba844290 100644 --- a/tests/baselines/reference/jsFileCompilationClassMethodContainingArrowFunction.symbols +++ b/tests/baselines/reference/jsFileCompilationClassMethodContainingArrowFunction.symbols @@ -4,15 +4,15 @@ class c { >c : Symbol(c, Decl(a.js, 0, 0)) method(a) { ->method : Symbol(method, Decl(a.js, 1, 9)) +>method : Symbol(c.method, Decl(a.js, 1, 9)) >a : Symbol(a, Decl(a.js, 2, 11)) let x = a => this.method(a); >x : Symbol(x, Decl(a.js, 3, 11)) >a : Symbol(a, Decl(a.js, 3, 15)) ->this.method : Symbol(method, Decl(a.js, 1, 9)) +>this.method : Symbol(c.method, Decl(a.js, 1, 9)) >this : Symbol(c, Decl(a.js, 0, 0)) ->method : Symbol(method, Decl(a.js, 1, 9)) +>method : Symbol(c.method, Decl(a.js, 1, 9)) >a : Symbol(a, Decl(a.js, 3, 15)) } } diff --git a/tests/baselines/reference/jsFileCompilationRestParamJsDocFunction.js b/tests/baselines/reference/jsFileCompilationRestParamJsDocFunction.js new file mode 100644 index 00000000000..e1675ff7131 --- /dev/null +++ b/tests/baselines/reference/jsFileCompilationRestParamJsDocFunction.js @@ -0,0 +1,51 @@ +//// [_apply.js] + +/** + * A faster alternative to `Function#apply`, this function invokes `func` + * with the `this` binding of `thisArg` and the arguments of `args`. + * + * @private + * @param {Function} func The function to invoke. + * @param {*} thisArg The `this` binding of `func`. + * @param {...*} args The arguments to invoke `func` with. + * @returns {*} Returns the result of `func`. + */ +function apply(func, thisArg, args) { + var length = args.length; + switch (length) { + case 0: return func.call(thisArg); + case 1: return func.call(thisArg, args[0]); + case 2: return func.call(thisArg, args[0], args[1]); + case 3: return func.call(thisArg, args[0], args[1], args[2]); + } + return func.apply(thisArg, args); +} + +export default apply; + +//// [apply.js] +define("_apply", ["require", "exports"], function (require, exports) { + "use strict"; + /** + * A faster alternative to `Function#apply`, this function invokes `func` + * with the `this` binding of `thisArg` and the arguments of `args`. + * + * @private + * @param {Function} func The function to invoke. + * @param {*} thisArg The `this` binding of `func`. + * @param {...*} args The arguments to invoke `func` with. + * @returns {*} Returns the result of `func`. + */ + function apply(func, thisArg, args) { + var length = args.length; + switch (length) { + case 0: return func.call(thisArg); + case 1: return func.call(thisArg, args[0]); + case 2: return func.call(thisArg, args[0], args[1]); + case 3: return func.call(thisArg, args[0], args[1], args[2]); + } + return func.apply(thisArg, args); + } + exports.__esModule = true; + exports["default"] = apply; +}); diff --git a/tests/baselines/reference/jsFileCompilationRestParamJsDocFunction.symbols b/tests/baselines/reference/jsFileCompilationRestParamJsDocFunction.symbols new file mode 100644 index 00000000000..f21653d475b --- /dev/null +++ b/tests/baselines/reference/jsFileCompilationRestParamJsDocFunction.symbols @@ -0,0 +1,68 @@ +=== tests/cases/compiler/_apply.js === + +/** + * A faster alternative to `Function#apply`, this function invokes `func` + * with the `this` binding of `thisArg` and the arguments of `args`. + * + * @private + * @param {Function} func The function to invoke. + * @param {*} thisArg The `this` binding of `func`. + * @param {...*} args The arguments to invoke `func` with. + * @returns {*} Returns the result of `func`. + */ +function apply(func, thisArg, args) { +>apply : Symbol(apply, Decl(_apply.js, 0, 0)) +>func : Symbol(func, Decl(_apply.js, 11, 15)) +>thisArg : Symbol(thisArg, Decl(_apply.js, 11, 20)) +>args : Symbol(args, Decl(_apply.js, 11, 29)) + + var length = args.length; +>length : Symbol(length, Decl(_apply.js, 12, 7)) +>args.length : Symbol(Array.length, Decl(lib.d.ts, --, --)) +>args : Symbol(args, Decl(_apply.js, 11, 29)) +>length : Symbol(Array.length, Decl(lib.d.ts, --, --)) + + switch (length) { +>length : Symbol(length, Decl(_apply.js, 12, 7)) + + case 0: return func.call(thisArg); +>func.call : Symbol(Function.call, Decl(lib.d.ts, --, --)) +>func : Symbol(func, Decl(_apply.js, 11, 15)) +>call : Symbol(Function.call, Decl(lib.d.ts, --, --)) +>thisArg : Symbol(thisArg, Decl(_apply.js, 11, 20)) + + case 1: return func.call(thisArg, args[0]); +>func.call : Symbol(Function.call, Decl(lib.d.ts, --, --)) +>func : Symbol(func, Decl(_apply.js, 11, 15)) +>call : Symbol(Function.call, Decl(lib.d.ts, --, --)) +>thisArg : Symbol(thisArg, Decl(_apply.js, 11, 20)) +>args : Symbol(args, Decl(_apply.js, 11, 29)) + + case 2: return func.call(thisArg, args[0], args[1]); +>func.call : Symbol(Function.call, Decl(lib.d.ts, --, --)) +>func : Symbol(func, Decl(_apply.js, 11, 15)) +>call : Symbol(Function.call, Decl(lib.d.ts, --, --)) +>thisArg : Symbol(thisArg, Decl(_apply.js, 11, 20)) +>args : Symbol(args, Decl(_apply.js, 11, 29)) +>args : Symbol(args, Decl(_apply.js, 11, 29)) + + case 3: return func.call(thisArg, args[0], args[1], args[2]); +>func.call : Symbol(Function.call, Decl(lib.d.ts, --, --)) +>func : Symbol(func, Decl(_apply.js, 11, 15)) +>call : Symbol(Function.call, Decl(lib.d.ts, --, --)) +>thisArg : Symbol(thisArg, Decl(_apply.js, 11, 20)) +>args : Symbol(args, Decl(_apply.js, 11, 29)) +>args : Symbol(args, Decl(_apply.js, 11, 29)) +>args : Symbol(args, Decl(_apply.js, 11, 29)) + } + return func.apply(thisArg, args); +>func.apply : Symbol(Function.apply, Decl(lib.d.ts, --, --)) +>func : Symbol(func, Decl(_apply.js, 11, 15)) +>apply : Symbol(Function.apply, Decl(lib.d.ts, --, --)) +>thisArg : Symbol(thisArg, Decl(_apply.js, 11, 20)) +>args : Symbol(args, Decl(_apply.js, 11, 29)) +} + +export default apply; +>apply : Symbol(apply, Decl(_apply.js, 0, 0)) + diff --git a/tests/baselines/reference/jsFileCompilationRestParamJsDocFunction.types b/tests/baselines/reference/jsFileCompilationRestParamJsDocFunction.types new file mode 100644 index 00000000000..fbfe9d3edae --- /dev/null +++ b/tests/baselines/reference/jsFileCompilationRestParamJsDocFunction.types @@ -0,0 +1,89 @@ +=== tests/cases/compiler/_apply.js === + +/** + * A faster alternative to `Function#apply`, this function invokes `func` + * with the `this` binding of `thisArg` and the arguments of `args`. + * + * @private + * @param {Function} func The function to invoke. + * @param {*} thisArg The `this` binding of `func`. + * @param {...*} args The arguments to invoke `func` with. + * @returns {*} Returns the result of `func`. + */ +function apply(func, thisArg, args) { +>apply : (func: Function, thisArg: any, ...args: any[]) => any +>func : Function +>thisArg : any +>args : any[] + + var length = args.length; +>length : number +>args.length : number +>args : any[] +>length : number + + switch (length) { +>length : number + + case 0: return func.call(thisArg); +>0 : number +>func.call(thisArg) : any +>func.call : (this: Function, thisArg: any, ...argArray: any[]) => any +>func : Function +>call : (this: Function, thisArg: any, ...argArray: any[]) => any +>thisArg : any + + case 1: return func.call(thisArg, args[0]); +>1 : number +>func.call(thisArg, args[0]) : any +>func.call : (this: Function, thisArg: any, ...argArray: any[]) => any +>func : Function +>call : (this: Function, thisArg: any, ...argArray: any[]) => any +>thisArg : any +>args[0] : any +>args : any[] +>0 : number + + case 2: return func.call(thisArg, args[0], args[1]); +>2 : number +>func.call(thisArg, args[0], args[1]) : any +>func.call : (this: Function, thisArg: any, ...argArray: any[]) => any +>func : Function +>call : (this: Function, thisArg: any, ...argArray: any[]) => any +>thisArg : any +>args[0] : any +>args : any[] +>0 : number +>args[1] : any +>args : any[] +>1 : number + + case 3: return func.call(thisArg, args[0], args[1], args[2]); +>3 : number +>func.call(thisArg, args[0], args[1], args[2]) : any +>func.call : (this: Function, thisArg: any, ...argArray: any[]) => any +>func : Function +>call : (this: Function, thisArg: any, ...argArray: any[]) => any +>thisArg : any +>args[0] : any +>args : any[] +>0 : number +>args[1] : any +>args : any[] +>1 : number +>args[2] : any +>args : any[] +>2 : number + } + return func.apply(thisArg, args); +>func.apply(thisArg, args) : any +>func.apply : (this: Function, thisArg: any, argArray?: any) => any +>func : Function +>apply : (this: Function, thisArg: any, argArray?: any) => any +>thisArg : any +>args : any[] +} + +export default apply; +>apply : (func: Function, thisArg: any, ...args: any[]) => any + diff --git a/tests/baselines/reference/jsxReactTestSuite.symbols b/tests/baselines/reference/jsxReactTestSuite.symbols index 1ee71370dbc..956b4cff6f7 100644 --- a/tests/baselines/reference/jsxReactTestSuite.symbols +++ b/tests/baselines/reference/jsxReactTestSuite.symbols @@ -56,9 +56,11 @@ declare var hasOwnProperty:any; >div : Symbol(unknown) {foo}
{bar}
+>Component : Symbol(Component, Decl(jsxReactTestSuite.tsx, 2, 11)) >foo : Symbol(foo, Decl(jsxReactTestSuite.tsx, 7, 11)) >br : Symbol(unknown) >bar : Symbol(bar, Decl(jsxReactTestSuite.tsx, 8, 11)) +>Component : Symbol(Component, Decl(jsxReactTestSuite.tsx, 2, 11))
>br : Symbol(unknown) @@ -68,12 +70,20 @@ declare var hasOwnProperty:any; +>Composite : Symbol(Composite, Decl(jsxReactTestSuite.tsx, 3, 11)) + {this.props.children} ; +>Composite : Symbol(Composite, Decl(jsxReactTestSuite.tsx, 3, 11)) +>Composite : Symbol(Composite, Decl(jsxReactTestSuite.tsx, 3, 11)) + +>Composite2 : Symbol(Composite2, Decl(jsxReactTestSuite.tsx, 4, 11)) + ; +>Composite : Symbol(Composite, Decl(jsxReactTestSuite.tsx, 3, 11)) var x = >x : Symbol(x, Decl(jsxReactTestSuite.tsx, 10, 11), Decl(jsxReactTestSuite.tsx, 35, 3)) @@ -164,13 +174,17 @@ var x = >hasOwnProperty : Symbol(unknown) ; +>Component : Symbol(Component, Decl(jsxReactTestSuite.tsx, 2, 11)) >constructor : Symbol(unknown) ; +>Namespace : Symbol(Namespace, Decl(jsxReactTestSuite.tsx, 6, 11)) ; +>Namespace : Symbol(Namespace, Decl(jsxReactTestSuite.tsx, 6, 11)) Component : Symbol(Component, Decl(jsxReactTestSuite.tsx, 2, 11)) >x : Symbol(x, Decl(jsxReactTestSuite.tsx, 10, 11), Decl(jsxReactTestSuite.tsx, 35, 3)) >y : Symbol(unknown) @@ -178,6 +192,8 @@ var x = >z : Symbol(unknown) Component : Symbol(Component, Decl(jsxReactTestSuite.tsx, 2, 11)) + {...this.props} sound="moo" />; >sound : Symbol(unknown) @@ -185,6 +201,7 @@ var x = >font-face : Symbol(unknown) ; +>Component : Symbol(Component, Decl(jsxReactTestSuite.tsx, 2, 11)) >x : Symbol(unknown) >y : Symbol(y, Decl(jsxReactTestSuite.tsx, 9, 11)) @@ -192,34 +209,43 @@ var x = >x-component : Symbol(unknown) ; +>Component : Symbol(Component, Decl(jsxReactTestSuite.tsx, 2, 11)) >x : Symbol(x, Decl(jsxReactTestSuite.tsx, 10, 11), Decl(jsxReactTestSuite.tsx, 35, 3)) ; +>Component : Symbol(Component, Decl(jsxReactTestSuite.tsx, 2, 11)) >x : Symbol(x, Decl(jsxReactTestSuite.tsx, 10, 11), Decl(jsxReactTestSuite.tsx, 35, 3)) >y : Symbol(unknown) ; +>Component : Symbol(Component, Decl(jsxReactTestSuite.tsx, 2, 11)) >x : Symbol(x, Decl(jsxReactTestSuite.tsx, 10, 11), Decl(jsxReactTestSuite.tsx, 35, 3)) >y : Symbol(unknown) >z : Symbol(unknown) ; +>Component : Symbol(Component, Decl(jsxReactTestSuite.tsx, 2, 11)) >x : Symbol(unknown) >y : Symbol(y, Decl(jsxReactTestSuite.tsx, 9, 11)) ; +>Component : Symbol(Component, Decl(jsxReactTestSuite.tsx, 2, 11)) >x : Symbol(unknown) >y : Symbol(unknown) >z : Symbol(z, Decl(jsxReactTestSuite.tsx, 11, 11)) >z : Symbol(z, Decl(jsxReactTestSuite.tsx, 11, 11)) +>Child : Symbol(Child, Decl(jsxReactTestSuite.tsx, 5, 11)) +>Component : Symbol(Component, Decl(jsxReactTestSuite.tsx, 2, 11)) Text; +>Component : Symbol(Component, Decl(jsxReactTestSuite.tsx, 2, 11)) >x : Symbol(unknown) >z : Symbol(z, Decl(jsxReactTestSuite.tsx, 11, 11)) >y : Symbol(y, Decl(jsxReactTestSuite.tsx, 113, 27)) >z : Symbol(z, Decl(jsxReactTestSuite.tsx, 11, 11)) >z : Symbol(unknown) +>Component : Symbol(Component, Decl(jsxReactTestSuite.tsx, 2, 11)) diff --git a/tests/baselines/reference/jsxReactTestSuite.types b/tests/baselines/reference/jsxReactTestSuite.types index 88c2c278e59..8bab7ce6e7d 100644 --- a/tests/baselines/reference/jsxReactTestSuite.types +++ b/tests/baselines/reference/jsxReactTestSuite.types @@ -235,11 +235,14 @@ var x = ; > : any +>Namespace.Component : any >Namespace : any >Component : any ; > : any +>Namespace.DeepNamespace.Component : any +>Namespace.DeepNamespace : any >Namespace : any >DeepNamespace : any >Component : any diff --git a/tests/baselines/reference/lastPropertyInLiteralWins.errors.txt b/tests/baselines/reference/lastPropertyInLiteralWins.errors.txt index ab784eae397..51fce2d29d4 100644 --- a/tests/baselines/reference/lastPropertyInLiteralWins.errors.txt +++ b/tests/baselines/reference/lastPropertyInLiteralWins.errors.txt @@ -2,7 +2,7 @@ tests/cases/compiler/lastPropertyInLiteralWins.ts(7,6): error TS2345: Argument o Types of property 'thunk' are incompatible. Type '(num: number) => void' is not assignable to type '(str: string) => void'. Types of parameters 'num' and 'str' are incompatible. - Type 'number' is not assignable to type 'string'. + Type 'string' is not assignable to type 'number'. tests/cases/compiler/lastPropertyInLiteralWins.ts(8,5): error TS2300: Duplicate identifier 'thunk'. tests/cases/compiler/lastPropertyInLiteralWins.ts(9,5): error TS2300: Duplicate identifier 'thunk'. tests/cases/compiler/lastPropertyInLiteralWins.ts(13,5): error TS2300: Duplicate identifier 'thunk'. @@ -32,7 +32,7 @@ tests/cases/compiler/lastPropertyInLiteralWins.ts(14,5): error TS2300: Duplicate !!! error TS2345: Types of property 'thunk' are incompatible. !!! error TS2345: Type '(num: number) => void' is not assignable to type '(str: string) => void'. !!! error TS2345: Types of parameters 'num' and 'str' are incompatible. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Type 'string' is not assignable to type 'number'. test({ // Should be OK. Last 'thunk' is of correct type thunk: (num: number) => {}, diff --git a/tests/baselines/reference/letDeclarations-access.symbols b/tests/baselines/reference/letDeclarations-access.symbols index 060ebc80b80..078ad740d20 100644 --- a/tests/baselines/reference/letDeclarations-access.symbols +++ b/tests/baselines/reference/letDeclarations-access.symbols @@ -81,7 +81,7 @@ x; >x : Symbol(x, Decl(letDeclarations-access.ts, 1, 3)) x.toString(); ->x.toString : Symbol(Number.toString, Decl(lib.d.ts, --, --)) +>x.toString : Symbol(Number.toString, Decl(lib.es5.d.ts, --, --)) >x : Symbol(x, Decl(letDeclarations-access.ts, 1, 3)) ->toString : Symbol(Number.toString, Decl(lib.d.ts, --, --)) +>toString : Symbol(Number.toString, Decl(lib.es5.d.ts, --, --)) diff --git a/tests/baselines/reference/libdtsFix.symbols b/tests/baselines/reference/libdtsFix.symbols index 158b0587ec6..5399b7150e4 100644 --- a/tests/baselines/reference/libdtsFix.symbols +++ b/tests/baselines/reference/libdtsFix.symbols @@ -3,6 +3,6 @@ interface HTMLElement { >HTMLElement : Symbol(HTMLElement, Decl(libdtsFix.ts, 0, 0)) type: string; ->type : Symbol(type, Decl(libdtsFix.ts, 0, 23)) +>type : Symbol(HTMLElement.type, Decl(libdtsFix.ts, 0, 23)) } diff --git a/tests/baselines/reference/library-reference-1.js b/tests/baselines/reference/library-reference-1.js new file mode 100644 index 00000000000..e709db72dea --- /dev/null +++ b/tests/baselines/reference/library-reference-1.js @@ -0,0 +1,17 @@ +//// [tests/cases/conformance/references/library-reference-1.ts] //// + +//// [index.d.ts] + +// We can find typings in the ./types folder + +declare var $: { foo(): void }; + + +//// [consumer.ts] +/// +$.foo(); + + +//// [consumer.js] +/// +$.foo(); diff --git a/tests/baselines/reference/library-reference-1.symbols b/tests/baselines/reference/library-reference-1.symbols new file mode 100644 index 00000000000..0e848c626c5 --- /dev/null +++ b/tests/baselines/reference/library-reference-1.symbols @@ -0,0 +1,16 @@ +=== /consumer.ts === +/// +$.foo(); +>$.foo : Symbol(foo, Decl(index.d.ts, 3, 16)) +>$ : Symbol($, Decl(index.d.ts, 3, 11)) +>foo : Symbol(foo, Decl(index.d.ts, 3, 16)) + +=== /types/jquery/index.d.ts === + +// We can find typings in the ./types folder + +declare var $: { foo(): void }; +>$ : Symbol($, Decl(index.d.ts, 3, 11)) +>foo : Symbol(foo, Decl(index.d.ts, 3, 16)) + + diff --git a/tests/baselines/reference/library-reference-1.trace.json b/tests/baselines/reference/library-reference-1.trace.json new file mode 100644 index 00000000000..1b8c237dff1 --- /dev/null +++ b/tests/baselines/reference/library-reference-1.trace.json @@ -0,0 +1,7 @@ +[ + "======== Resolving type reference directive 'jquery', containing file '/consumer.ts', root directory '/'. ========", + "Resolving with primary search path '/types/'", + "File '/types/jquery/package.json' does not exist.", + "File '/types/jquery/index.d.ts' exist - use it as a name resolution result.", + "======== Type reference directive 'jquery' was successfully resolved to '/types/jquery/index.d.ts', primary: true. ========" +] \ No newline at end of file diff --git a/tests/baselines/reference/library-reference-1.types b/tests/baselines/reference/library-reference-1.types new file mode 100644 index 00000000000..99133f2f8df --- /dev/null +++ b/tests/baselines/reference/library-reference-1.types @@ -0,0 +1,17 @@ +=== /consumer.ts === +/// +$.foo(); +>$.foo() : void +>$.foo : () => void +>$ : { foo(): void; } +>foo : () => void + +=== /types/jquery/index.d.ts === + +// We can find typings in the ./types folder + +declare var $: { foo(): void }; +>$ : { foo(): void; } +>foo : () => void + + diff --git a/tests/baselines/reference/library-reference-10.js b/tests/baselines/reference/library-reference-10.js new file mode 100644 index 00000000000..a6dbdfce610 --- /dev/null +++ b/tests/baselines/reference/library-reference-10.js @@ -0,0 +1,22 @@ +//// [tests/cases/conformance/references/library-reference-10.ts] //// + +//// [package.json] + +// package.json in a primary reference can refer to another file + +{ + "typings": "jquery.d.ts" +} + +//// [jquery.d.ts] +declare var $: { foo(): void }; + + +//// [consumer.ts] +/// +$.foo(); + + +//// [consumer.js] +/// +$.foo(); diff --git a/tests/baselines/reference/library-reference-10.symbols b/tests/baselines/reference/library-reference-10.symbols new file mode 100644 index 00000000000..9d0f7e4781e --- /dev/null +++ b/tests/baselines/reference/library-reference-10.symbols @@ -0,0 +1,13 @@ +=== /consumer.ts === +/// +$.foo(); +>$.foo : Symbol(foo, Decl(jquery.d.ts, 0, 16)) +>$ : Symbol($, Decl(jquery.d.ts, 0, 11)) +>foo : Symbol(foo, Decl(jquery.d.ts, 0, 16)) + +=== /types/jquery/jquery.d.ts === +declare var $: { foo(): void }; +>$ : Symbol($, Decl(jquery.d.ts, 0, 11)) +>foo : Symbol(foo, Decl(jquery.d.ts, 0, 16)) + + diff --git a/tests/baselines/reference/library-reference-10.trace.json b/tests/baselines/reference/library-reference-10.trace.json new file mode 100644 index 00000000000..e6a1918a446 --- /dev/null +++ b/tests/baselines/reference/library-reference-10.trace.json @@ -0,0 +1,8 @@ +[ + "======== Resolving type reference directive 'jquery', containing file '/consumer.ts', root directory '/'. ========", + "Resolving with primary search path '/types/'", + "Found 'package.json' at '/types/jquery/package.json'.", + "'package.json' has 'typings' field 'jquery.d.ts' that references '/types/jquery/jquery.d.ts'.", + "File '/types/jquery/jquery.d.ts' exist - use it as a name resolution result.", + "======== Type reference directive 'jquery' was successfully resolved to '/types/jquery/jquery.d.ts', primary: true. ========" +] \ No newline at end of file diff --git a/tests/baselines/reference/library-reference-10.types b/tests/baselines/reference/library-reference-10.types new file mode 100644 index 00000000000..42d78f72865 --- /dev/null +++ b/tests/baselines/reference/library-reference-10.types @@ -0,0 +1,14 @@ +=== /consumer.ts === +/// +$.foo(); +>$.foo() : void +>$.foo : () => void +>$ : { foo(): void; } +>foo : () => void + +=== /types/jquery/jquery.d.ts === +declare var $: { foo(): void }; +>$ : { foo(): void; } +>foo : () => void + + diff --git a/tests/baselines/reference/library-reference-11.js b/tests/baselines/reference/library-reference-11.js new file mode 100644 index 00000000000..773fe5a890a --- /dev/null +++ b/tests/baselines/reference/library-reference-11.js @@ -0,0 +1,22 @@ +//// [tests/cases/conformance/references/library-reference-11.ts] //// + +//// [package.json] + +// package.json in a secondary reference can refer to another file + +{ + "typings": "jquery.d.ts" +} + +//// [jquery.d.ts] +declare var $: { foo(): void }; + + +//// [consumer.ts] +/// +$.foo(); + + +//// [consumer.js] +/// +$.foo(); diff --git a/tests/baselines/reference/library-reference-11.symbols b/tests/baselines/reference/library-reference-11.symbols new file mode 100644 index 00000000000..22b8bdf1b44 --- /dev/null +++ b/tests/baselines/reference/library-reference-11.symbols @@ -0,0 +1,13 @@ +=== /a/b/consumer.ts === +/// +$.foo(); +>$.foo : Symbol(foo, Decl(jquery.d.ts, 0, 16)) +>$ : Symbol($, Decl(jquery.d.ts, 0, 11)) +>foo : Symbol(foo, Decl(jquery.d.ts, 0, 16)) + +=== /a/node_modules/jquery/jquery.d.ts === +declare var $: { foo(): void }; +>$ : Symbol($, Decl(jquery.d.ts, 0, 11)) +>foo : Symbol(foo, Decl(jquery.d.ts, 0, 16)) + + diff --git a/tests/baselines/reference/library-reference-11.trace.json b/tests/baselines/reference/library-reference-11.trace.json new file mode 100644 index 00000000000..e0af1e39c5a --- /dev/null +++ b/tests/baselines/reference/library-reference-11.trace.json @@ -0,0 +1,21 @@ +[ + "======== Resolving type reference directive 'jquery', containing file '/a/b/consumer.ts', root directory not set. ========", + "Root directory cannot be determined, skipping primary search paths.", + "Looking up in 'node_modules' folder, initial location '/a/b'", + "File '/a/b/node_modules/jquery.ts' does not exist.", + "File '/a/b/node_modules/jquery.d.ts' does not exist.", + "File '/a/b/node_modules/jquery/package.json' does not exist.", + "File '/a/b/node_modules/jquery/index.ts' does not exist.", + "File '/a/b/node_modules/jquery/index.d.ts' does not exist.", + "File '/a/b/node_modules/@types/jquery.ts' does not exist.", + "File '/a/b/node_modules/@types/jquery.d.ts' does not exist.", + "File '/a/b/node_modules/@types/jquery/package.json' does not exist.", + "File '/a/b/node_modules/@types/jquery/index.ts' does not exist.", + "File '/a/b/node_modules/@types/jquery/index.d.ts' does not exist.", + "File '/a/node_modules/jquery.ts' does not exist.", + "File '/a/node_modules/jquery.d.ts' does not exist.", + "Found 'package.json' at '/a/node_modules/jquery/package.json'.", + "'package.json' has 'typings' field 'jquery.d.ts' that references '/a/node_modules/jquery/jquery.d.ts'.", + "File '/a/node_modules/jquery/jquery.d.ts' exist - use it as a name resolution result.", + "======== Type reference directive 'jquery' was successfully resolved to '/a/node_modules/jquery/jquery.d.ts', primary: false. ========" +] \ No newline at end of file diff --git a/tests/baselines/reference/library-reference-11.types b/tests/baselines/reference/library-reference-11.types new file mode 100644 index 00000000000..267ee08e6d6 --- /dev/null +++ b/tests/baselines/reference/library-reference-11.types @@ -0,0 +1,14 @@ +=== /a/b/consumer.ts === +/// +$.foo(); +>$.foo() : void +>$.foo : () => void +>$ : { foo(): void; } +>foo : () => void + +=== /a/node_modules/jquery/jquery.d.ts === +declare var $: { foo(): void }; +>$ : { foo(): void; } +>foo : () => void + + diff --git a/tests/baselines/reference/library-reference-12.js b/tests/baselines/reference/library-reference-12.js new file mode 100644 index 00000000000..42d0f650b50 --- /dev/null +++ b/tests/baselines/reference/library-reference-12.js @@ -0,0 +1,22 @@ +//// [tests/cases/conformance/references/library-reference-12.ts] //// + +//// [package.json] + +// package.json in a secondary reference can refer to another file + +{ + "types": "dist/jquery.d.ts" +} + +//// [jquery.d.ts] +declare var $: { foo(): void }; + + +//// [consumer.ts] +/// +$.foo(); + + +//// [consumer.js] +/// +$.foo(); diff --git a/tests/baselines/reference/library-reference-12.symbols b/tests/baselines/reference/library-reference-12.symbols new file mode 100644 index 00000000000..2e25588bf77 --- /dev/null +++ b/tests/baselines/reference/library-reference-12.symbols @@ -0,0 +1,13 @@ +=== /a/b/consumer.ts === +/// +$.foo(); +>$.foo : Symbol(foo, Decl(jquery.d.ts, 0, 16)) +>$ : Symbol($, Decl(jquery.d.ts, 0, 11)) +>foo : Symbol(foo, Decl(jquery.d.ts, 0, 16)) + +=== /a/node_modules/jquery/dist/jquery.d.ts === +declare var $: { foo(): void }; +>$ : Symbol($, Decl(jquery.d.ts, 0, 11)) +>foo : Symbol(foo, Decl(jquery.d.ts, 0, 16)) + + diff --git a/tests/baselines/reference/library-reference-12.trace.json b/tests/baselines/reference/library-reference-12.trace.json new file mode 100644 index 00000000000..2cdf1f5f20a --- /dev/null +++ b/tests/baselines/reference/library-reference-12.trace.json @@ -0,0 +1,21 @@ +[ + "======== Resolving type reference directive 'jquery', containing file '/a/b/consumer.ts', root directory not set. ========", + "Root directory cannot be determined, skipping primary search paths.", + "Looking up in 'node_modules' folder, initial location '/a/b'", + "File '/a/b/node_modules/jquery.ts' does not exist.", + "File '/a/b/node_modules/jquery.d.ts' does not exist.", + "File '/a/b/node_modules/jquery/package.json' does not exist.", + "File '/a/b/node_modules/jquery/index.ts' does not exist.", + "File '/a/b/node_modules/jquery/index.d.ts' does not exist.", + "File '/a/b/node_modules/@types/jquery.ts' does not exist.", + "File '/a/b/node_modules/@types/jquery.d.ts' does not exist.", + "File '/a/b/node_modules/@types/jquery/package.json' does not exist.", + "File '/a/b/node_modules/@types/jquery/index.ts' does not exist.", + "File '/a/b/node_modules/@types/jquery/index.d.ts' does not exist.", + "File '/a/node_modules/jquery.ts' does not exist.", + "File '/a/node_modules/jquery.d.ts' does not exist.", + "Found 'package.json' at '/a/node_modules/jquery/package.json'.", + "'package.json' has 'types' field 'dist/jquery.d.ts' that references '/a/node_modules/jquery/dist/jquery.d.ts'.", + "File '/a/node_modules/jquery/dist/jquery.d.ts' exist - use it as a name resolution result.", + "======== Type reference directive 'jquery' was successfully resolved to '/a/node_modules/jquery/dist/jquery.d.ts', primary: false. ========" +] \ No newline at end of file diff --git a/tests/baselines/reference/library-reference-12.types b/tests/baselines/reference/library-reference-12.types new file mode 100644 index 00000000000..2ab9fb8ba95 --- /dev/null +++ b/tests/baselines/reference/library-reference-12.types @@ -0,0 +1,14 @@ +=== /a/b/consumer.ts === +/// +$.foo(); +>$.foo() : void +>$.foo : () => void +>$ : { foo(): void; } +>foo : () => void + +=== /a/node_modules/jquery/dist/jquery.d.ts === +declare var $: { foo(): void }; +>$ : { foo(): void; } +>foo : () => void + + diff --git a/tests/baselines/reference/library-reference-13.js b/tests/baselines/reference/library-reference-13.js new file mode 100644 index 00000000000..be52aba1a39 --- /dev/null +++ b/tests/baselines/reference/library-reference-13.js @@ -0,0 +1,12 @@ +//// [tests/cases/conformance/references/library-reference-13.ts] //// + +//// [index.d.ts] +declare var $: { foo(): void }; + + +//// [consumer.ts] +$.foo(); + + +//// [consumer.js] +$.foo(); diff --git a/tests/baselines/reference/library-reference-13.symbols b/tests/baselines/reference/library-reference-13.symbols new file mode 100644 index 00000000000..04d50373caa --- /dev/null +++ b/tests/baselines/reference/library-reference-13.symbols @@ -0,0 +1,12 @@ +=== /a/b/consumer.ts === +$.foo(); +>$.foo : Symbol(foo, Decl(index.d.ts, 0, 16)) +>$ : Symbol($, Decl(index.d.ts, 0, 11)) +>foo : Symbol(foo, Decl(index.d.ts, 0, 16)) + +=== /a/types/jquery/index.d.ts === +declare var $: { foo(): void }; +>$ : Symbol($, Decl(index.d.ts, 0, 11)) +>foo : Symbol(foo, Decl(index.d.ts, 0, 16)) + + diff --git a/tests/baselines/reference/library-reference-13.trace.json b/tests/baselines/reference/library-reference-13.trace.json new file mode 100644 index 00000000000..2133414f414 --- /dev/null +++ b/tests/baselines/reference/library-reference-13.trace.json @@ -0,0 +1,7 @@ +[ + "======== Resolving type reference directive 'jquery', containing file not set, root directory '/a'. ========", + "Resolving with primary search path '/a/types/'", + "File '/a/types/jquery/package.json' does not exist.", + "File '/a/types/jquery/index.d.ts' exist - use it as a name resolution result.", + "======== Type reference directive 'jquery' was successfully resolved to '/a/types/jquery/index.d.ts', primary: true. ========" +] \ No newline at end of file diff --git a/tests/baselines/reference/library-reference-13.types b/tests/baselines/reference/library-reference-13.types new file mode 100644 index 00000000000..b00d778c5b2 --- /dev/null +++ b/tests/baselines/reference/library-reference-13.types @@ -0,0 +1,13 @@ +=== /a/b/consumer.ts === +$.foo(); +>$.foo() : void +>$.foo : () => void +>$ : { foo(): void; } +>foo : () => void + +=== /a/types/jquery/index.d.ts === +declare var $: { foo(): void }; +>$ : { foo(): void; } +>foo : () => void + + diff --git a/tests/baselines/reference/library-reference-14.js b/tests/baselines/reference/library-reference-14.js new file mode 100644 index 00000000000..0fb5ff04fb9 --- /dev/null +++ b/tests/baselines/reference/library-reference-14.js @@ -0,0 +1,13 @@ +//// [tests/cases/conformance/references/library-reference-14.ts] //// + +//// [index.d.ts] + +declare var $: { foo(): void }; + + +//// [consumer.ts] +$.foo(); + + +//// [consumer.js] +$.foo(); diff --git a/tests/baselines/reference/library-reference-14.symbols b/tests/baselines/reference/library-reference-14.symbols new file mode 100644 index 00000000000..162afc50ca7 --- /dev/null +++ b/tests/baselines/reference/library-reference-14.symbols @@ -0,0 +1,13 @@ +=== /a/b/consumer.ts === +$.foo(); +>$.foo : Symbol(foo, Decl(index.d.ts, 1, 16)) +>$ : Symbol($, Decl(index.d.ts, 1, 11)) +>foo : Symbol(foo, Decl(index.d.ts, 1, 16)) + +=== /a/types/jquery/index.d.ts === + +declare var $: { foo(): void }; +>$ : Symbol($, Decl(index.d.ts, 1, 11)) +>foo : Symbol(foo, Decl(index.d.ts, 1, 16)) + + diff --git a/tests/baselines/reference/library-reference-14.trace.json b/tests/baselines/reference/library-reference-14.trace.json new file mode 100644 index 00000000000..2133414f414 --- /dev/null +++ b/tests/baselines/reference/library-reference-14.trace.json @@ -0,0 +1,7 @@ +[ + "======== Resolving type reference directive 'jquery', containing file not set, root directory '/a'. ========", + "Resolving with primary search path '/a/types/'", + "File '/a/types/jquery/package.json' does not exist.", + "File '/a/types/jquery/index.d.ts' exist - use it as a name resolution result.", + "======== Type reference directive 'jquery' was successfully resolved to '/a/types/jquery/index.d.ts', primary: true. ========" +] \ No newline at end of file diff --git a/tests/baselines/reference/library-reference-14.types b/tests/baselines/reference/library-reference-14.types new file mode 100644 index 00000000000..f4196e10744 --- /dev/null +++ b/tests/baselines/reference/library-reference-14.types @@ -0,0 +1,14 @@ +=== /a/b/consumer.ts === +$.foo(); +>$.foo() : void +>$.foo : () => void +>$ : { foo(): void; } +>foo : () => void + +=== /a/types/jquery/index.d.ts === + +declare var $: { foo(): void }; +>$ : { foo(): void; } +>foo : () => void + + diff --git a/tests/baselines/reference/library-reference-15.errors.txt b/tests/baselines/reference/library-reference-15.errors.txt new file mode 100644 index 00000000000..a311633ca76 --- /dev/null +++ b/tests/baselines/reference/library-reference-15.errors.txt @@ -0,0 +1,15 @@ +error TS2304: Cannot find name 'jquery'. +/a/b/consumer.ts(1,1): error TS2304: Cannot find name '$'. + + +!!! error TS2304: Cannot find name 'jquery'. +==== /a/b/consumer.ts (1 errors) ==== + $.foo(); + ~ +!!! error TS2304: Cannot find name '$'. + +==== /a/types/jquery/index.d.ts (0 errors) ==== + + declare var $: { foo(): void }; + + \ No newline at end of file diff --git a/tests/baselines/reference/library-reference-15.js b/tests/baselines/reference/library-reference-15.js new file mode 100644 index 00000000000..f9aa7038d53 --- /dev/null +++ b/tests/baselines/reference/library-reference-15.js @@ -0,0 +1,13 @@ +//// [tests/cases/conformance/references/library-reference-15.ts] //// + +//// [index.d.ts] + +declare var $: { foo(): void }; + + +//// [consumer.ts] +$.foo(); + + +//// [consumer.js] +$.foo(); diff --git a/tests/baselines/reference/library-reference-15.trace.json b/tests/baselines/reference/library-reference-15.trace.json new file mode 100644 index 00000000000..9a19d75ffac --- /dev/null +++ b/tests/baselines/reference/library-reference-15.trace.json @@ -0,0 +1,5 @@ +[ + "======== Resolving type reference directive 'jquery', containing file not set, root directory not set. ========", + "Root directory cannot be determined, skipping primary search paths.", + "Containing file is not specified and root directory cannot be determined, skipping lookup in 'node_modules' folder." +] \ No newline at end of file diff --git a/tests/baselines/reference/library-reference-2.js b/tests/baselines/reference/library-reference-2.js new file mode 100644 index 00000000000..20729db6c60 --- /dev/null +++ b/tests/baselines/reference/library-reference-2.js @@ -0,0 +1,22 @@ +//// [tests/cases/conformance/references/library-reference-2.ts] //// + +//// [package.json] + +// package.json in a primary reference can refer to another file + +{ + "types": "jquery.d.ts" +} + +//// [jquery.d.ts] +declare var $: { foo(): void }; + + +//// [consumer.ts] +/// +$.foo(); + + +//// [consumer.js] +/// +$.foo(); diff --git a/tests/baselines/reference/library-reference-2.symbols b/tests/baselines/reference/library-reference-2.symbols new file mode 100644 index 00000000000..9d0f7e4781e --- /dev/null +++ b/tests/baselines/reference/library-reference-2.symbols @@ -0,0 +1,13 @@ +=== /consumer.ts === +/// +$.foo(); +>$.foo : Symbol(foo, Decl(jquery.d.ts, 0, 16)) +>$ : Symbol($, Decl(jquery.d.ts, 0, 11)) +>foo : Symbol(foo, Decl(jquery.d.ts, 0, 16)) + +=== /types/jquery/jquery.d.ts === +declare var $: { foo(): void }; +>$ : Symbol($, Decl(jquery.d.ts, 0, 11)) +>foo : Symbol(foo, Decl(jquery.d.ts, 0, 16)) + + diff --git a/tests/baselines/reference/library-reference-2.trace.json b/tests/baselines/reference/library-reference-2.trace.json new file mode 100644 index 00000000000..b5ef5f3e208 --- /dev/null +++ b/tests/baselines/reference/library-reference-2.trace.json @@ -0,0 +1,8 @@ +[ + "======== Resolving type reference directive 'jquery', containing file '/consumer.ts', root directory '/'. ========", + "Resolving with primary search path '/types/'", + "Found 'package.json' at '/types/jquery/package.json'.", + "'package.json' has 'types' field 'jquery.d.ts' that references '/types/jquery/jquery.d.ts'.", + "File '/types/jquery/jquery.d.ts' exist - use it as a name resolution result.", + "======== Type reference directive 'jquery' was successfully resolved to '/types/jquery/jquery.d.ts', primary: true. ========" +] \ No newline at end of file diff --git a/tests/baselines/reference/library-reference-2.types b/tests/baselines/reference/library-reference-2.types new file mode 100644 index 00000000000..42d78f72865 --- /dev/null +++ b/tests/baselines/reference/library-reference-2.types @@ -0,0 +1,14 @@ +=== /consumer.ts === +/// +$.foo(); +>$.foo() : void +>$.foo : () => void +>$ : { foo(): void; } +>foo : () => void + +=== /types/jquery/jquery.d.ts === +declare var $: { foo(): void }; +>$ : { foo(): void; } +>foo : () => void + + diff --git a/tests/baselines/reference/library-reference-3.js b/tests/baselines/reference/library-reference-3.js new file mode 100644 index 00000000000..6f9ad2d43d2 --- /dev/null +++ b/tests/baselines/reference/library-reference-3.js @@ -0,0 +1,16 @@ +//// [tests/cases/conformance/references/library-reference-3.ts] //// + +//// [index.d.ts] + +// Secondary references are possible + +declare var $: { foo(): void }; + +//// [consumer.ts] +/// +$.foo(); + + +//// [consumer.js] +/// +$.foo(); diff --git a/tests/baselines/reference/library-reference-3.symbols b/tests/baselines/reference/library-reference-3.symbols new file mode 100644 index 00000000000..a1785fd77c9 --- /dev/null +++ b/tests/baselines/reference/library-reference-3.symbols @@ -0,0 +1,15 @@ +=== /src/consumer.ts === +/// +$.foo(); +>$.foo : Symbol(foo, Decl(index.d.ts, 3, 16)) +>$ : Symbol($, Decl(index.d.ts, 3, 11)) +>foo : Symbol(foo, Decl(index.d.ts, 3, 16)) + +=== /src/node_modules/jquery/index.d.ts === + +// Secondary references are possible + +declare var $: { foo(): void }; +>$ : Symbol($, Decl(index.d.ts, 3, 11)) +>foo : Symbol(foo, Decl(index.d.ts, 3, 16)) + diff --git a/tests/baselines/reference/library-reference-3.trace.json b/tests/baselines/reference/library-reference-3.trace.json new file mode 100644 index 00000000000..30dbbc3fca4 --- /dev/null +++ b/tests/baselines/reference/library-reference-3.trace.json @@ -0,0 +1,10 @@ +[ + "======== Resolving type reference directive 'jquery', containing file '/src/consumer.ts', root directory '/src'. ========", + "Resolving with primary search path '/src/types/'", + "File '/src/types/jquery/package.json' does not exist.", + "File '/src/types/jquery/index.d.ts' does not exist.", + "Resolving with primary search path '/src/node_modules/'", + "File '/src/node_modules/jquery/package.json' does not exist.", + "File '/src/node_modules/jquery/index.d.ts' exist - use it as a name resolution result.", + "======== Type reference directive 'jquery' was successfully resolved to '/src/node_modules/jquery/index.d.ts', primary: true. ========" +] \ No newline at end of file diff --git a/tests/baselines/reference/library-reference-3.types b/tests/baselines/reference/library-reference-3.types new file mode 100644 index 00000000000..ed7da59525f --- /dev/null +++ b/tests/baselines/reference/library-reference-3.types @@ -0,0 +1,16 @@ +=== /src/consumer.ts === +/// +$.foo(); +>$.foo() : void +>$.foo : () => void +>$ : { foo(): void; } +>foo : () => void + +=== /src/node_modules/jquery/index.d.ts === + +// Secondary references are possible + +declare var $: { foo(): void }; +>$ : { foo(): void; } +>foo : () => void + diff --git a/tests/baselines/reference/library-reference-4.js b/tests/baselines/reference/library-reference-4.js new file mode 100644 index 00000000000..39e4b1d73a5 --- /dev/null +++ b/tests/baselines/reference/library-reference-4.js @@ -0,0 +1,27 @@ +//// [tests/cases/conformance/references/library-reference-4.ts] //// + +//// [index.d.ts] + +// Secondary references may be duplicated if they agree in content + +/// +declare var foo: any; + +//// [index.d.ts] +declare var alpha: any; + +//// [index.d.ts] +/// +declare var bar: any; + +//// [index.d.ts] +declare var alpha: any; + +//// [root.ts] +/// +/// + + +//// [root.js] +/// +/// diff --git a/tests/baselines/reference/library-reference-4.symbols b/tests/baselines/reference/library-reference-4.symbols new file mode 100644 index 00000000000..f7c082a946d --- /dev/null +++ b/tests/baselines/reference/library-reference-4.symbols @@ -0,0 +1,21 @@ +=== /src/root.ts === +/// +No type information for this code./// +No type information for this code. +No type information for this code.=== /node_modules/foo/index.d.ts === + +// Secondary references may be duplicated if they agree in content + +/// +declare var foo: any; +>foo : Symbol(foo, Decl(index.d.ts, 4, 11)) + +=== /node_modules/foo/node_modules/alpha/index.d.ts === +declare var alpha: any; +>alpha : Symbol(alpha, Decl(index.d.ts, 0, 11)) + +=== /node_modules/bar/index.d.ts === +/// +declare var bar: any; +>bar : Symbol(bar, Decl(index.d.ts, 1, 11)) + diff --git a/tests/baselines/reference/library-reference-4.trace.json b/tests/baselines/reference/library-reference-4.trace.json new file mode 100644 index 00000000000..90b6eb7b01d --- /dev/null +++ b/tests/baselines/reference/library-reference-4.trace.json @@ -0,0 +1,90 @@ +[ + "======== Resolving type reference directive 'foo', containing file '/src/root.ts', root directory '/src'. ========", + "Resolving with primary search path '/src/types/'", + "File '/src/types/foo/package.json' does not exist.", + "File '/src/types/foo/index.d.ts' does not exist.", + "Resolving with primary search path '/src/node_modules/'", + "File '/src/node_modules/foo/package.json' does not exist.", + "File '/src/node_modules/foo/index.d.ts' does not exist.", + "Resolving with primary search path '/src/node_modules/@types/'", + "File '/src/node_modules/@types/foo/package.json' does not exist.", + "File '/src/node_modules/@types/foo/index.d.ts' does not exist.", + "Looking up in 'node_modules' folder, initial location '/src'", + "File '/src/node_modules/foo.ts' does not exist.", + "File '/src/node_modules/foo.d.ts' does not exist.", + "File '/src/node_modules/foo/package.json' does not exist.", + "File '/src/node_modules/foo/index.ts' does not exist.", + "File '/src/node_modules/foo/index.d.ts' does not exist.", + "File '/src/node_modules/@types/foo.ts' does not exist.", + "File '/src/node_modules/@types/foo.d.ts' does not exist.", + "File '/src/node_modules/@types/foo/package.json' does not exist.", + "File '/src/node_modules/@types/foo/index.ts' does not exist.", + "File '/src/node_modules/@types/foo/index.d.ts' does not exist.", + "File '/node_modules/foo.ts' does not exist.", + "File '/node_modules/foo.d.ts' does not exist.", + "File '/node_modules/foo/package.json' does not exist.", + "File '/node_modules/foo/index.ts' does not exist.", + "File '/node_modules/foo/index.d.ts' exist - use it as a name resolution result.", + "======== Type reference directive 'foo' was successfully resolved to '/node_modules/foo/index.d.ts', primary: false. ========", + "======== Resolving type reference directive 'bar', containing file '/src/root.ts', root directory '/src'. ========", + "Resolving with primary search path '/src/types/'", + "File '/src/types/bar/package.json' does not exist.", + "File '/src/types/bar/index.d.ts' does not exist.", + "Resolving with primary search path '/src/node_modules/'", + "File '/src/node_modules/bar/package.json' does not exist.", + "File '/src/node_modules/bar/index.d.ts' does not exist.", + "Resolving with primary search path '/src/node_modules/@types/'", + "File '/src/node_modules/@types/bar/package.json' does not exist.", + "File '/src/node_modules/@types/bar/index.d.ts' does not exist.", + "Looking up in 'node_modules' folder, initial location '/src'", + "File '/src/node_modules/bar.ts' does not exist.", + "File '/src/node_modules/bar.d.ts' does not exist.", + "File '/src/node_modules/bar/package.json' does not exist.", + "File '/src/node_modules/bar/index.ts' does not exist.", + "File '/src/node_modules/bar/index.d.ts' does not exist.", + "File '/src/node_modules/@types/bar.ts' does not exist.", + "File '/src/node_modules/@types/bar.d.ts' does not exist.", + "File '/src/node_modules/@types/bar/package.json' does not exist.", + "File '/src/node_modules/@types/bar/index.ts' does not exist.", + "File '/src/node_modules/@types/bar/index.d.ts' does not exist.", + "File '/node_modules/bar.ts' does not exist.", + "File '/node_modules/bar.d.ts' does not exist.", + "File '/node_modules/bar/package.json' does not exist.", + "File '/node_modules/bar/index.ts' does not exist.", + "File '/node_modules/bar/index.d.ts' exist - use it as a name resolution result.", + "======== Type reference directive 'bar' was successfully resolved to '/node_modules/bar/index.d.ts', primary: false. ========", + "======== Resolving type reference directive 'alpha', containing file '/node_modules/foo/index.d.ts', root directory '/src'. ========", + "Resolving with primary search path '/src/types/'", + "File '/src/types/alpha/package.json' does not exist.", + "File '/src/types/alpha/index.d.ts' does not exist.", + "Resolving with primary search path '/src/node_modules/'", + "File '/src/node_modules/alpha/package.json' does not exist.", + "File '/src/node_modules/alpha/index.d.ts' does not exist.", + "Resolving with primary search path '/src/node_modules/@types/'", + "File '/src/node_modules/@types/alpha/package.json' does not exist.", + "File '/src/node_modules/@types/alpha/index.d.ts' does not exist.", + "Looking up in 'node_modules' folder, initial location '/node_modules/foo'", + "File '/node_modules/foo/node_modules/alpha.ts' does not exist.", + "File '/node_modules/foo/node_modules/alpha.d.ts' does not exist.", + "File '/node_modules/foo/node_modules/alpha/package.json' does not exist.", + "File '/node_modules/foo/node_modules/alpha/index.ts' does not exist.", + "File '/node_modules/foo/node_modules/alpha/index.d.ts' exist - use it as a name resolution result.", + "======== Type reference directive 'alpha' was successfully resolved to '/node_modules/foo/node_modules/alpha/index.d.ts', primary: false. ========", + "======== Resolving type reference directive 'alpha', containing file '/node_modules/bar/index.d.ts', root directory '/src'. ========", + "Resolving with primary search path '/src/types/'", + "File '/src/types/alpha/package.json' does not exist.", + "File '/src/types/alpha/index.d.ts' does not exist.", + "Resolving with primary search path '/src/node_modules/'", + "File '/src/node_modules/alpha/package.json' does not exist.", + "File '/src/node_modules/alpha/index.d.ts' does not exist.", + "Resolving with primary search path '/src/node_modules/@types/'", + "File '/src/node_modules/@types/alpha/package.json' does not exist.", + "File '/src/node_modules/@types/alpha/index.d.ts' does not exist.", + "Looking up in 'node_modules' folder, initial location '/node_modules/bar'", + "File '/node_modules/bar/node_modules/alpha.ts' does not exist.", + "File '/node_modules/bar/node_modules/alpha.d.ts' does not exist.", + "File '/node_modules/bar/node_modules/alpha/package.json' does not exist.", + "File '/node_modules/bar/node_modules/alpha/index.ts' does not exist.", + "File '/node_modules/bar/node_modules/alpha/index.d.ts' exist - use it as a name resolution result.", + "======== Type reference directive 'alpha' was successfully resolved to '/node_modules/bar/node_modules/alpha/index.d.ts', primary: false. ========" +] \ No newline at end of file diff --git a/tests/baselines/reference/library-reference-4.types b/tests/baselines/reference/library-reference-4.types new file mode 100644 index 00000000000..a0a7d370b4c --- /dev/null +++ b/tests/baselines/reference/library-reference-4.types @@ -0,0 +1,21 @@ +=== /src/root.ts === +/// +No type information for this code./// +No type information for this code. +No type information for this code.=== /node_modules/foo/index.d.ts === + +// Secondary references may be duplicated if they agree in content + +/// +declare var foo: any; +>foo : any + +=== /node_modules/foo/node_modules/alpha/index.d.ts === +declare var alpha: any; +>alpha : any + +=== /node_modules/bar/index.d.ts === +/// +declare var bar: any; +>bar : any + diff --git a/tests/baselines/reference/library-reference-5.errors.txt b/tests/baselines/reference/library-reference-5.errors.txt new file mode 100644 index 00000000000..ea571cad1a3 --- /dev/null +++ b/tests/baselines/reference/library-reference-5.errors.txt @@ -0,0 +1,26 @@ +/node_modules/bar/index.d.ts(1,1): message TS4090: Conflicting library definitions for 'alpha' found at '/node_modules/bar/node_modules/alpha/index.d.ts' and '/node_modules/foo/node_modules/alpha/index.d.ts'. Copy the correct file to the 'typings' folder to resolve this conflict. + + +==== /src/root.ts (0 errors) ==== + /// + /// + +==== /node_modules/foo/index.d.ts (0 errors) ==== + + // Secondary references may not be duplicated if they disagree in content + + /// + declare var foo: any; + +==== /node_modules/foo/node_modules/alpha/index.d.ts (0 errors) ==== + declare var alpha: any; + +==== /node_modules/bar/index.d.ts (1 errors) ==== + /// + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! message TS4090: Conflicting library definitions for 'alpha' found at 'index.d.ts' and 'index.d.ts'. Copy the correct file to the 'typings' folder to resolve this conflict. + declare var bar: any; + +==== /node_modules/bar/node_modules/alpha/index.d.ts (0 errors) ==== + declare var alpha: {}; + \ No newline at end of file diff --git a/tests/baselines/reference/library-reference-5.js b/tests/baselines/reference/library-reference-5.js new file mode 100644 index 00000000000..40d2131920e --- /dev/null +++ b/tests/baselines/reference/library-reference-5.js @@ -0,0 +1,27 @@ +//// [tests/cases/conformance/references/library-reference-5.ts] //// + +//// [index.d.ts] + +// Secondary references may not be duplicated if they disagree in content + +/// +declare var foo: any; + +//// [index.d.ts] +declare var alpha: any; + +//// [index.d.ts] +/// +declare var bar: any; + +//// [index.d.ts] +declare var alpha: {}; + +//// [root.ts] +/// +/// + + +//// [root.js] +/// +/// diff --git a/tests/baselines/reference/library-reference-5.trace.json b/tests/baselines/reference/library-reference-5.trace.json new file mode 100644 index 00000000000..272009782b5 --- /dev/null +++ b/tests/baselines/reference/library-reference-5.trace.json @@ -0,0 +1,58 @@ +[ + "======== Resolving type reference directive 'foo', containing file '/src/root.ts', root directory not set. ========", + "Root directory cannot be determined, skipping primary search paths.", + "Looking up in 'node_modules' folder, initial location '/src'", + "File '/src/node_modules/foo.ts' does not exist.", + "File '/src/node_modules/foo.d.ts' does not exist.", + "File '/src/node_modules/foo/package.json' does not exist.", + "File '/src/node_modules/foo/index.ts' does not exist.", + "File '/src/node_modules/foo/index.d.ts' does not exist.", + "File '/src/node_modules/@types/foo.ts' does not exist.", + "File '/src/node_modules/@types/foo.d.ts' does not exist.", + "File '/src/node_modules/@types/foo/package.json' does not exist.", + "File '/src/node_modules/@types/foo/index.ts' does not exist.", + "File '/src/node_modules/@types/foo/index.d.ts' does not exist.", + "File '/node_modules/foo.ts' does not exist.", + "File '/node_modules/foo.d.ts' does not exist.", + "File '/node_modules/foo/package.json' does not exist.", + "File '/node_modules/foo/index.ts' does not exist.", + "File '/node_modules/foo/index.d.ts' exist - use it as a name resolution result.", + "======== Type reference directive 'foo' was successfully resolved to '/node_modules/foo/index.d.ts', primary: false. ========", + "======== Resolving type reference directive 'bar', containing file '/src/root.ts', root directory not set. ========", + "Root directory cannot be determined, skipping primary search paths.", + "Looking up in 'node_modules' folder, initial location '/src'", + "File '/src/node_modules/bar.ts' does not exist.", + "File '/src/node_modules/bar.d.ts' does not exist.", + "File '/src/node_modules/bar/package.json' does not exist.", + "File '/src/node_modules/bar/index.ts' does not exist.", + "File '/src/node_modules/bar/index.d.ts' does not exist.", + "File '/src/node_modules/@types/bar.ts' does not exist.", + "File '/src/node_modules/@types/bar.d.ts' does not exist.", + "File '/src/node_modules/@types/bar/package.json' does not exist.", + "File '/src/node_modules/@types/bar/index.ts' does not exist.", + "File '/src/node_modules/@types/bar/index.d.ts' does not exist.", + "File '/node_modules/bar.ts' does not exist.", + "File '/node_modules/bar.d.ts' does not exist.", + "File '/node_modules/bar/package.json' does not exist.", + "File '/node_modules/bar/index.ts' does not exist.", + "File '/node_modules/bar/index.d.ts' exist - use it as a name resolution result.", + "======== Type reference directive 'bar' was successfully resolved to '/node_modules/bar/index.d.ts', primary: false. ========", + "======== Resolving type reference directive 'alpha', containing file '/node_modules/foo/index.d.ts', root directory not set. ========", + "Root directory cannot be determined, skipping primary search paths.", + "Looking up in 'node_modules' folder, initial location '/node_modules/foo'", + "File '/node_modules/foo/node_modules/alpha.ts' does not exist.", + "File '/node_modules/foo/node_modules/alpha.d.ts' does not exist.", + "File '/node_modules/foo/node_modules/alpha/package.json' does not exist.", + "File '/node_modules/foo/node_modules/alpha/index.ts' does not exist.", + "File '/node_modules/foo/node_modules/alpha/index.d.ts' exist - use it as a name resolution result.", + "======== Type reference directive 'alpha' was successfully resolved to '/node_modules/foo/node_modules/alpha/index.d.ts', primary: false. ========", + "======== Resolving type reference directive 'alpha', containing file '/node_modules/bar/index.d.ts', root directory not set. ========", + "Root directory cannot be determined, skipping primary search paths.", + "Looking up in 'node_modules' folder, initial location '/node_modules/bar'", + "File '/node_modules/bar/node_modules/alpha.ts' does not exist.", + "File '/node_modules/bar/node_modules/alpha.d.ts' does not exist.", + "File '/node_modules/bar/node_modules/alpha/package.json' does not exist.", + "File '/node_modules/bar/node_modules/alpha/index.ts' does not exist.", + "File '/node_modules/bar/node_modules/alpha/index.d.ts' exist - use it as a name resolution result.", + "======== Type reference directive 'alpha' was successfully resolved to '/node_modules/bar/node_modules/alpha/index.d.ts', primary: false. ========" +] \ No newline at end of file diff --git a/tests/baselines/reference/library-reference-6.js b/tests/baselines/reference/library-reference-6.js new file mode 100644 index 00000000000..d78a3a131a1 --- /dev/null +++ b/tests/baselines/reference/library-reference-6.js @@ -0,0 +1,16 @@ +//// [tests/cases/conformance/references/library-reference-6.ts] //// + +//// [index.d.ts] + +// The primary lookup folder is relative to tsconfig.json, if present + +declare var alpha: { a: string }; + +//// [foo.ts] +/// +var x: string = alpha.a; + + +//// [foo.js] +/// +var x = alpha.a; diff --git a/tests/baselines/reference/library-reference-6.symbols b/tests/baselines/reference/library-reference-6.symbols new file mode 100644 index 00000000000..328842f804c --- /dev/null +++ b/tests/baselines/reference/library-reference-6.symbols @@ -0,0 +1,16 @@ +=== /src/foo.ts === +/// +var x: string = alpha.a; +>x : Symbol(x, Decl(foo.ts, 1, 3)) +>alpha.a : Symbol(a, Decl(index.d.ts, 3, 20)) +>alpha : Symbol(alpha, Decl(index.d.ts, 3, 11)) +>a : Symbol(a, Decl(index.d.ts, 3, 20)) + +=== /types/alpha/index.d.ts === + +// The primary lookup folder is relative to tsconfig.json, if present + +declare var alpha: { a: string }; +>alpha : Symbol(alpha, Decl(index.d.ts, 3, 11)) +>a : Symbol(a, Decl(index.d.ts, 3, 20)) + diff --git a/tests/baselines/reference/library-reference-6.trace.json b/tests/baselines/reference/library-reference-6.trace.json new file mode 100644 index 00000000000..426214fdcfc --- /dev/null +++ b/tests/baselines/reference/library-reference-6.trace.json @@ -0,0 +1,7 @@ +[ + "======== Resolving type reference directive 'alpha', containing file '/src/foo.ts', root directory '/'. ========", + "Resolving with primary search path '/types/'", + "File '/types/alpha/package.json' does not exist.", + "File '/types/alpha/index.d.ts' exist - use it as a name resolution result.", + "======== Type reference directive 'alpha' was successfully resolved to '/types/alpha/index.d.ts', primary: true. ========" +] \ No newline at end of file diff --git a/tests/baselines/reference/library-reference-6.types b/tests/baselines/reference/library-reference-6.types new file mode 100644 index 00000000000..2f6c1e49b89 --- /dev/null +++ b/tests/baselines/reference/library-reference-6.types @@ -0,0 +1,16 @@ +=== /src/foo.ts === +/// +var x: string = alpha.a; +>x : string +>alpha.a : string +>alpha : { a: string; } +>a : string + +=== /types/alpha/index.d.ts === + +// The primary lookup folder is relative to tsconfig.json, if present + +declare var alpha: { a: string }; +>alpha : { a: string; } +>a : string + diff --git a/tests/baselines/reference/library-reference-7.js b/tests/baselines/reference/library-reference-7.js new file mode 100644 index 00000000000..f1ef6ca4eab --- /dev/null +++ b/tests/baselines/reference/library-reference-7.js @@ -0,0 +1,16 @@ +//// [tests/cases/conformance/references/library-reference-7.ts] //// + +//// [index.d.ts] + +// Secondary references are possible + +declare var $: { foo(): void }; + +//// [consumer.ts] +/// +$.foo(); + + +//// [consumer.js] +/// +$.foo(); diff --git a/tests/baselines/reference/library-reference-7.symbols b/tests/baselines/reference/library-reference-7.symbols new file mode 100644 index 00000000000..a1785fd77c9 --- /dev/null +++ b/tests/baselines/reference/library-reference-7.symbols @@ -0,0 +1,15 @@ +=== /src/consumer.ts === +/// +$.foo(); +>$.foo : Symbol(foo, Decl(index.d.ts, 3, 16)) +>$ : Symbol($, Decl(index.d.ts, 3, 11)) +>foo : Symbol(foo, Decl(index.d.ts, 3, 16)) + +=== /src/node_modules/jquery/index.d.ts === + +// Secondary references are possible + +declare var $: { foo(): void }; +>$ : Symbol($, Decl(index.d.ts, 3, 11)) +>foo : Symbol(foo, Decl(index.d.ts, 3, 16)) + diff --git a/tests/baselines/reference/library-reference-7.trace.json b/tests/baselines/reference/library-reference-7.trace.json new file mode 100644 index 00000000000..419fe6d055d --- /dev/null +++ b/tests/baselines/reference/library-reference-7.trace.json @@ -0,0 +1,11 @@ +[ + "======== Resolving type reference directive 'jquery', containing file '/src/consumer.ts', root directory not set. ========", + "Root directory cannot be determined, skipping primary search paths.", + "Looking up in 'node_modules' folder, initial location '/src'", + "File '/src/node_modules/jquery.ts' does not exist.", + "File '/src/node_modules/jquery.d.ts' does not exist.", + "File '/src/node_modules/jquery/package.json' does not exist.", + "File '/src/node_modules/jquery/index.ts' does not exist.", + "File '/src/node_modules/jquery/index.d.ts' exist - use it as a name resolution result.", + "======== Type reference directive 'jquery' was successfully resolved to '/src/node_modules/jquery/index.d.ts', primary: false. ========" +] \ No newline at end of file diff --git a/tests/baselines/reference/library-reference-7.types b/tests/baselines/reference/library-reference-7.types new file mode 100644 index 00000000000..ed7da59525f --- /dev/null +++ b/tests/baselines/reference/library-reference-7.types @@ -0,0 +1,16 @@ +=== /src/consumer.ts === +/// +$.foo(); +>$.foo() : void +>$.foo : () => void +>$ : { foo(): void; } +>foo : () => void + +=== /src/node_modules/jquery/index.d.ts === + +// Secondary references are possible + +declare var $: { foo(): void }; +>$ : { foo(): void; } +>foo : () => void + diff --git a/tests/baselines/reference/library-reference-8.js b/tests/baselines/reference/library-reference-8.js new file mode 100644 index 00000000000..a48b226cb62 --- /dev/null +++ b/tests/baselines/reference/library-reference-8.js @@ -0,0 +1,24 @@ +//// [tests/cases/conformance/references/library-reference-8.ts] //// + +//// [index.d.ts] + +// Don't crash in circular library reference situations + +/// +declare var alpha: { a: string }; + +//// [index.d.ts] +/// +declare var beta: { b: string }; + +//// [foo.ts] +/// +/// +var x: string = alpha.a + beta.b; + + + +//// [foo.js] +/// +/// +var x = alpha.a + beta.b; diff --git a/tests/baselines/reference/library-reference-8.symbols b/tests/baselines/reference/library-reference-8.symbols new file mode 100644 index 00000000000..299a60f1b1d --- /dev/null +++ b/tests/baselines/reference/library-reference-8.symbols @@ -0,0 +1,28 @@ +=== /foo.ts === +/// +/// +var x: string = alpha.a + beta.b; +>x : Symbol(x, Decl(foo.ts, 2, 3)) +>alpha.a : Symbol(a, Decl(index.d.ts, 4, 20)) +>alpha : Symbol(alpha, Decl(index.d.ts, 4, 11)) +>a : Symbol(a, Decl(index.d.ts, 4, 20)) +>beta.b : Symbol(b, Decl(index.d.ts, 1, 19)) +>beta : Symbol(beta, Decl(index.d.ts, 1, 11)) +>b : Symbol(b, Decl(index.d.ts, 1, 19)) + + +=== /types/alpha/index.d.ts === + +// Don't crash in circular library reference situations + +/// +declare var alpha: { a: string }; +>alpha : Symbol(alpha, Decl(index.d.ts, 4, 11)) +>a : Symbol(a, Decl(index.d.ts, 4, 20)) + +=== /types/beta/index.d.ts === +/// +declare var beta: { b: string }; +>beta : Symbol(beta, Decl(index.d.ts, 1, 11)) +>b : Symbol(b, Decl(index.d.ts, 1, 19)) + diff --git a/tests/baselines/reference/library-reference-8.trace.json b/tests/baselines/reference/library-reference-8.trace.json new file mode 100644 index 00000000000..b1dc6478688 --- /dev/null +++ b/tests/baselines/reference/library-reference-8.trace.json @@ -0,0 +1,22 @@ +[ + "======== Resolving type reference directive 'alpha', containing file '/foo.ts', root directory '/'. ========", + "Resolving with primary search path '/types/'", + "File '/types/alpha/package.json' does not exist.", + "File '/types/alpha/index.d.ts' exist - use it as a name resolution result.", + "======== Type reference directive 'alpha' was successfully resolved to '/types/alpha/index.d.ts', primary: true. ========", + "======== Resolving type reference directive 'beta', containing file '/foo.ts', root directory '/'. ========", + "Resolving with primary search path '/types/'", + "File '/types/beta/package.json' does not exist.", + "File '/types/beta/index.d.ts' exist - use it as a name resolution result.", + "======== Type reference directive 'beta' was successfully resolved to '/types/beta/index.d.ts', primary: true. ========", + "======== Resolving type reference directive 'beta', containing file '/types/alpha/index.d.ts', root directory '/'. ========", + "Resolving with primary search path '/types/'", + "File '/types/beta/package.json' does not exist.", + "File '/types/beta/index.d.ts' exist - use it as a name resolution result.", + "======== Type reference directive 'beta' was successfully resolved to '/types/beta/index.d.ts', primary: true. ========", + "======== Resolving type reference directive 'alpha', containing file '/types/beta/index.d.ts', root directory '/'. ========", + "Resolving with primary search path '/types/'", + "File '/types/alpha/package.json' does not exist.", + "File '/types/alpha/index.d.ts' exist - use it as a name resolution result.", + "======== Type reference directive 'alpha' was successfully resolved to '/types/alpha/index.d.ts', primary: true. ========" +] \ No newline at end of file diff --git a/tests/baselines/reference/library-reference-8.types b/tests/baselines/reference/library-reference-8.types new file mode 100644 index 00000000000..b0780d90f63 --- /dev/null +++ b/tests/baselines/reference/library-reference-8.types @@ -0,0 +1,29 @@ +=== /foo.ts === +/// +/// +var x: string = alpha.a + beta.b; +>x : string +>alpha.a + beta.b : string +>alpha.a : string +>alpha : { a: string; } +>a : string +>beta.b : string +>beta : { b: string; } +>b : string + + +=== /types/alpha/index.d.ts === + +// Don't crash in circular library reference situations + +/// +declare var alpha: { a: string }; +>alpha : { a: string; } +>a : string + +=== /types/beta/index.d.ts === +/// +declare var beta: { b: string }; +>beta : { b: string; } +>b : string + diff --git a/tests/baselines/reference/library-reference-9.js b/tests/baselines/reference/library-reference-9.js new file mode 100644 index 00000000000..ccb3b3213a9 --- /dev/null +++ b/tests/baselines/reference/library-reference-9.js @@ -0,0 +1,16 @@ +//// [tests/cases/conformance/references/library-reference-9.ts] //// + +//// [index.d.ts] + +// Use types search path + +declare var alpha: { a: string }; + +//// [foo.ts] +/// +var x: string = alpha.a; + + +//// [foo.js] +/// +var x = alpha.a; diff --git a/tests/baselines/reference/library-reference-9.symbols b/tests/baselines/reference/library-reference-9.symbols new file mode 100644 index 00000000000..62cde2117df --- /dev/null +++ b/tests/baselines/reference/library-reference-9.symbols @@ -0,0 +1,16 @@ +=== /base/src/foo.ts === +/// +var x: string = alpha.a; +>x : Symbol(x, Decl(foo.ts, 1, 3)) +>alpha.a : Symbol(a, Decl(index.d.ts, 3, 20)) +>alpha : Symbol(alpha, Decl(index.d.ts, 3, 11)) +>a : Symbol(a, Decl(index.d.ts, 3, 20)) + +=== /share/typelib/alpha/index.d.ts === + +// Use types search path + +declare var alpha: { a: string }; +>alpha : Symbol(alpha, Decl(index.d.ts, 3, 11)) +>a : Symbol(a, Decl(index.d.ts, 3, 20)) + diff --git a/tests/baselines/reference/library-reference-9.trace.json b/tests/baselines/reference/library-reference-9.trace.json new file mode 100644 index 00000000000..e2fdfdc0550 --- /dev/null +++ b/tests/baselines/reference/library-reference-9.trace.json @@ -0,0 +1,7 @@ +[ + "======== Resolving type reference directive 'alpha', containing file '/base/src/foo.ts', root directory '/'. ========", + "Resolving with primary search path '/share/typelib'", + "File '/share/typelib/alpha/package.json' does not exist.", + "File '/share/typelib/alpha/index.d.ts' exist - use it as a name resolution result.", + "======== Type reference directive 'alpha' was successfully resolved to '/share/typelib/alpha/index.d.ts', primary: true. ========" +] \ No newline at end of file diff --git a/tests/baselines/reference/library-reference-9.types b/tests/baselines/reference/library-reference-9.types new file mode 100644 index 00000000000..8df2179e249 --- /dev/null +++ b/tests/baselines/reference/library-reference-9.types @@ -0,0 +1,16 @@ +=== /base/src/foo.ts === +/// +var x: string = alpha.a; +>x : string +>alpha.a : string +>alpha : { a: string; } +>a : string + +=== /share/typelib/alpha/index.d.ts === + +// Use types search path + +declare var alpha: { a: string }; +>alpha : { a: string; } +>a : string + diff --git a/tests/baselines/reference/library_DatePrototypeProperties.symbols b/tests/baselines/reference/library_DatePrototypeProperties.symbols index 8aa5f81f2f5..4601adcde18 100644 --- a/tests/baselines/reference/library_DatePrototypeProperties.symbols +++ b/tests/baselines/reference/library_DatePrototypeProperties.symbols @@ -4,308 +4,308 @@ Date.prototype.constructor; >Date.prototype.constructor : Symbol(Object.constructor, Decl(lib.d.ts, --, --)) >Date.prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) >constructor : Symbol(Object.constructor, Decl(lib.d.ts, --, --)) Date.prototype.toString(); >Date.prototype.toString : Symbol(Date.toString, Decl(lib.d.ts, --, --)) >Date.prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) >toString : Symbol(Date.toString, Decl(lib.d.ts, --, --)) Date.prototype.toDateString(); >Date.prototype.toDateString : Symbol(Date.toDateString, Decl(lib.d.ts, --, --)) >Date.prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) >toDateString : Symbol(Date.toDateString, Decl(lib.d.ts, --, --)) Date.prototype.toTimeString(); >Date.prototype.toTimeString : Symbol(Date.toTimeString, Decl(lib.d.ts, --, --)) >Date.prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) >toTimeString : Symbol(Date.toTimeString, Decl(lib.d.ts, --, --)) Date.prototype.toLocaleString(); ->Date.prototype.toLocaleString : Symbol(Date.toLocaleString, Decl(lib.d.ts, --, --)) +>Date.prototype.toLocaleString : Symbol(Date.toLocaleString, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >Date.prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) ->toLocaleString : Symbol(Date.toLocaleString, Decl(lib.d.ts, --, --)) +>toLocaleString : Symbol(Date.toLocaleString, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) Date.prototype.toLocaleDateString(); ->Date.prototype.toLocaleDateString : Symbol(Date.toLocaleDateString, Decl(lib.d.ts, --, --)) +>Date.prototype.toLocaleDateString : Symbol(Date.toLocaleDateString, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >Date.prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) ->toLocaleDateString : Symbol(Date.toLocaleDateString, Decl(lib.d.ts, --, --)) +>toLocaleDateString : Symbol(Date.toLocaleDateString, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) Date.prototype.toLocaleTimeString(); ->Date.prototype.toLocaleTimeString : Symbol(Date.toLocaleTimeString, Decl(lib.d.ts, --, --)) +>Date.prototype.toLocaleTimeString : Symbol(Date.toLocaleTimeString, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >Date.prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) ->toLocaleTimeString : Symbol(Date.toLocaleTimeString, Decl(lib.d.ts, --, --)) +>toLocaleTimeString : Symbol(Date.toLocaleTimeString, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) Date.prototype.valueOf(); >Date.prototype.valueOf : Symbol(Date.valueOf, Decl(lib.d.ts, --, --)) >Date.prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) >valueOf : Symbol(Date.valueOf, Decl(lib.d.ts, --, --)) Date.prototype.getTime(); >Date.prototype.getTime : Symbol(Date.getTime, Decl(lib.d.ts, --, --)) >Date.prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) >getTime : Symbol(Date.getTime, Decl(lib.d.ts, --, --)) Date.prototype.getFullYear(); >Date.prototype.getFullYear : Symbol(Date.getFullYear, Decl(lib.d.ts, --, --)) >Date.prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) >getFullYear : Symbol(Date.getFullYear, Decl(lib.d.ts, --, --)) Date.prototype.getUTCFullYear(); >Date.prototype.getUTCFullYear : Symbol(Date.getUTCFullYear, Decl(lib.d.ts, --, --)) >Date.prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) >getUTCFullYear : Symbol(Date.getUTCFullYear, Decl(lib.d.ts, --, --)) Date.prototype.getMonth(); >Date.prototype.getMonth : Symbol(Date.getMonth, Decl(lib.d.ts, --, --)) >Date.prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) >getMonth : Symbol(Date.getMonth, Decl(lib.d.ts, --, --)) Date.prototype.getUTCMonth(); >Date.prototype.getUTCMonth : Symbol(Date.getUTCMonth, Decl(lib.d.ts, --, --)) >Date.prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) >getUTCMonth : Symbol(Date.getUTCMonth, Decl(lib.d.ts, --, --)) Date.prototype.getDate(); >Date.prototype.getDate : Symbol(Date.getDate, Decl(lib.d.ts, --, --)) >Date.prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) >getDate : Symbol(Date.getDate, Decl(lib.d.ts, --, --)) Date.prototype.getUTCDate(); >Date.prototype.getUTCDate : Symbol(Date.getUTCDate, Decl(lib.d.ts, --, --)) >Date.prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) >getUTCDate : Symbol(Date.getUTCDate, Decl(lib.d.ts, --, --)) Date.prototype.getDay(); >Date.prototype.getDay : Symbol(Date.getDay, Decl(lib.d.ts, --, --)) >Date.prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) >getDay : Symbol(Date.getDay, Decl(lib.d.ts, --, --)) Date.prototype.getUTCDay(); >Date.prototype.getUTCDay : Symbol(Date.getUTCDay, Decl(lib.d.ts, --, --)) >Date.prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) >getUTCDay : Symbol(Date.getUTCDay, Decl(lib.d.ts, --, --)) Date.prototype.getHours(); >Date.prototype.getHours : Symbol(Date.getHours, Decl(lib.d.ts, --, --)) >Date.prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) >getHours : Symbol(Date.getHours, Decl(lib.d.ts, --, --)) Date.prototype.getUTCHours(); >Date.prototype.getUTCHours : Symbol(Date.getUTCHours, Decl(lib.d.ts, --, --)) >Date.prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) >getUTCHours : Symbol(Date.getUTCHours, Decl(lib.d.ts, --, --)) Date.prototype.getMinutes(); >Date.prototype.getMinutes : Symbol(Date.getMinutes, Decl(lib.d.ts, --, --)) >Date.prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) >getMinutes : Symbol(Date.getMinutes, Decl(lib.d.ts, --, --)) Date.prototype.getUTCMinutes(); >Date.prototype.getUTCMinutes : Symbol(Date.getUTCMinutes, Decl(lib.d.ts, --, --)) >Date.prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) >getUTCMinutes : Symbol(Date.getUTCMinutes, Decl(lib.d.ts, --, --)) Date.prototype.getSeconds(); >Date.prototype.getSeconds : Symbol(Date.getSeconds, Decl(lib.d.ts, --, --)) >Date.prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) >getSeconds : Symbol(Date.getSeconds, Decl(lib.d.ts, --, --)) Date.prototype.getUTCSeconds(); >Date.prototype.getUTCSeconds : Symbol(Date.getUTCSeconds, Decl(lib.d.ts, --, --)) >Date.prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) >getUTCSeconds : Symbol(Date.getUTCSeconds, Decl(lib.d.ts, --, --)) Date.prototype.getMilliseconds(); >Date.prototype.getMilliseconds : Symbol(Date.getMilliseconds, Decl(lib.d.ts, --, --)) >Date.prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) >getMilliseconds : Symbol(Date.getMilliseconds, Decl(lib.d.ts, --, --)) Date.prototype.getUTCMilliseconds(); >Date.prototype.getUTCMilliseconds : Symbol(Date.getUTCMilliseconds, Decl(lib.d.ts, --, --)) >Date.prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) >getUTCMilliseconds : Symbol(Date.getUTCMilliseconds, Decl(lib.d.ts, --, --)) Date.prototype.getTimezoneOffset(); >Date.prototype.getTimezoneOffset : Symbol(Date.getTimezoneOffset, Decl(lib.d.ts, --, --)) >Date.prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) >getTimezoneOffset : Symbol(Date.getTimezoneOffset, Decl(lib.d.ts, --, --)) Date.prototype.setTime(0); >Date.prototype.setTime : Symbol(Date.setTime, Decl(lib.d.ts, --, --)) >Date.prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) >setTime : Symbol(Date.setTime, Decl(lib.d.ts, --, --)) Date.prototype.setMilliseconds(0); >Date.prototype.setMilliseconds : Symbol(Date.setMilliseconds, Decl(lib.d.ts, --, --)) >Date.prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) >setMilliseconds : Symbol(Date.setMilliseconds, Decl(lib.d.ts, --, --)) Date.prototype.setUTCMilliseconds(0); >Date.prototype.setUTCMilliseconds : Symbol(Date.setUTCMilliseconds, Decl(lib.d.ts, --, --)) >Date.prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) >setUTCMilliseconds : Symbol(Date.setUTCMilliseconds, Decl(lib.d.ts, --, --)) Date.prototype.setSeconds(0); >Date.prototype.setSeconds : Symbol(Date.setSeconds, Decl(lib.d.ts, --, --)) >Date.prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) >setSeconds : Symbol(Date.setSeconds, Decl(lib.d.ts, --, --)) Date.prototype.setUTCSeconds(0); >Date.prototype.setUTCSeconds : Symbol(Date.setUTCSeconds, Decl(lib.d.ts, --, --)) >Date.prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) >setUTCSeconds : Symbol(Date.setUTCSeconds, Decl(lib.d.ts, --, --)) Date.prototype.setMinutes(0); >Date.prototype.setMinutes : Symbol(Date.setMinutes, Decl(lib.d.ts, --, --)) >Date.prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) >setMinutes : Symbol(Date.setMinutes, Decl(lib.d.ts, --, --)) Date.prototype.setUTCMinutes(0); >Date.prototype.setUTCMinutes : Symbol(Date.setUTCMinutes, Decl(lib.d.ts, --, --)) >Date.prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) >setUTCMinutes : Symbol(Date.setUTCMinutes, Decl(lib.d.ts, --, --)) Date.prototype.setHours(0); >Date.prototype.setHours : Symbol(Date.setHours, Decl(lib.d.ts, --, --)) >Date.prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) >setHours : Symbol(Date.setHours, Decl(lib.d.ts, --, --)) Date.prototype.setUTCHours(0); >Date.prototype.setUTCHours : Symbol(Date.setUTCHours, Decl(lib.d.ts, --, --)) >Date.prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) >setUTCHours : Symbol(Date.setUTCHours, Decl(lib.d.ts, --, --)) Date.prototype.setDate(0); >Date.prototype.setDate : Symbol(Date.setDate, Decl(lib.d.ts, --, --)) >Date.prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) >setDate : Symbol(Date.setDate, Decl(lib.d.ts, --, --)) Date.prototype.setUTCDate(0); >Date.prototype.setUTCDate : Symbol(Date.setUTCDate, Decl(lib.d.ts, --, --)) >Date.prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) >setUTCDate : Symbol(Date.setUTCDate, Decl(lib.d.ts, --, --)) Date.prototype.setMonth(0); >Date.prototype.setMonth : Symbol(Date.setMonth, Decl(lib.d.ts, --, --)) >Date.prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) >setMonth : Symbol(Date.setMonth, Decl(lib.d.ts, --, --)) Date.prototype.setUTCMonth(0); >Date.prototype.setUTCMonth : Symbol(Date.setUTCMonth, Decl(lib.d.ts, --, --)) >Date.prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) >setUTCMonth : Symbol(Date.setUTCMonth, Decl(lib.d.ts, --, --)) Date.prototype.setFullYear(0); >Date.prototype.setFullYear : Symbol(Date.setFullYear, Decl(lib.d.ts, --, --)) >Date.prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) >setFullYear : Symbol(Date.setFullYear, Decl(lib.d.ts, --, --)) Date.prototype.setUTCFullYear(0); >Date.prototype.setUTCFullYear : Symbol(Date.setUTCFullYear, Decl(lib.d.ts, --, --)) >Date.prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) >setUTCFullYear : Symbol(Date.setUTCFullYear, Decl(lib.d.ts, --, --)) Date.prototype.toUTCString(); >Date.prototype.toUTCString : Symbol(Date.toUTCString, Decl(lib.d.ts, --, --)) >Date.prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) >toUTCString : Symbol(Date.toUTCString, Decl(lib.d.ts, --, --)) Date.prototype.toISOString(); >Date.prototype.toISOString : Symbol(Date.toISOString, Decl(lib.d.ts, --, --)) >Date.prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) >toISOString : Symbol(Date.toISOString, Decl(lib.d.ts, --, --)) Date.prototype.toJSON(null); >Date.prototype.toJSON : Symbol(Date.toJSON, Decl(lib.d.ts, --, --)) >Date.prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >prototype : Symbol(DateConstructor.prototype, Decl(lib.d.ts, --, --)) >toJSON : Symbol(Date.toJSON, Decl(lib.d.ts, --, --)) diff --git a/tests/baselines/reference/library_DatePrototypeProperties.types b/tests/baselines/reference/library_DatePrototypeProperties.types index 79aad91245b..c048b9833d6 100644 --- a/tests/baselines/reference/library_DatePrototypeProperties.types +++ b/tests/baselines/reference/library_DatePrototypeProperties.types @@ -34,27 +34,27 @@ Date.prototype.toTimeString(); Date.prototype.toLocaleString(); >Date.prototype.toLocaleString() : string ->Date.prototype.toLocaleString : () => string +>Date.prototype.toLocaleString : { (): string; (locales?: string[], options?: Intl.DateTimeFormatOptions): string; (locale?: string, options?: Intl.DateTimeFormatOptions): string; } >Date.prototype : Date >Date : DateConstructor >prototype : Date ->toLocaleString : () => string +>toLocaleString : { (): string; (locales?: string[], options?: Intl.DateTimeFormatOptions): string; (locale?: string, options?: Intl.DateTimeFormatOptions): string; } Date.prototype.toLocaleDateString(); >Date.prototype.toLocaleDateString() : string ->Date.prototype.toLocaleDateString : () => string +>Date.prototype.toLocaleDateString : { (): string; (locales?: string[], options?: Intl.DateTimeFormatOptions): string; (locale?: string, options?: Intl.DateTimeFormatOptions): string; } >Date.prototype : Date >Date : DateConstructor >prototype : Date ->toLocaleDateString : () => string +>toLocaleDateString : { (): string; (locales?: string[], options?: Intl.DateTimeFormatOptions): string; (locale?: string, options?: Intl.DateTimeFormatOptions): string; } Date.prototype.toLocaleTimeString(); >Date.prototype.toLocaleTimeString() : string ->Date.prototype.toLocaleTimeString : () => string +>Date.prototype.toLocaleTimeString : { (): string; (locale?: string[], options?: Intl.DateTimeFormatOptions): string; (locale?: string, options?: Intl.DateTimeFormatOptions): string; } >Date.prototype : Date >Date : DateConstructor >prototype : Date ->toLocaleTimeString : () => string +>toLocaleTimeString : { (): string; (locale?: string[], options?: Intl.DateTimeFormatOptions): string; (locale?: string, options?: Intl.DateTimeFormatOptions): string; } Date.prototype.valueOf(); >Date.prototype.valueOf() : number diff --git a/tests/baselines/reference/library_StringSlice.symbols b/tests/baselines/reference/library_StringSlice.symbols index de79b8755ac..bdf661c5ab2 100644 --- a/tests/baselines/reference/library_StringSlice.symbols +++ b/tests/baselines/reference/library_StringSlice.symbols @@ -3,21 +3,21 @@ String.prototype.slice(); >String.prototype.slice : Symbol(String.slice, Decl(lib.d.ts, --, --)) >String.prototype : Symbol(StringConstructor.prototype, Decl(lib.d.ts, --, --)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >prototype : Symbol(StringConstructor.prototype, Decl(lib.d.ts, --, --)) >slice : Symbol(String.slice, Decl(lib.d.ts, --, --)) String.prototype.slice(0); >String.prototype.slice : Symbol(String.slice, Decl(lib.d.ts, --, --)) >String.prototype : Symbol(StringConstructor.prototype, Decl(lib.d.ts, --, --)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >prototype : Symbol(StringConstructor.prototype, Decl(lib.d.ts, --, --)) >slice : Symbol(String.slice, Decl(lib.d.ts, --, --)) String.prototype.slice(0,1); >String.prototype.slice : Symbol(String.slice, Decl(lib.d.ts, --, --)) >String.prototype : Symbol(StringConstructor.prototype, Decl(lib.d.ts, --, --)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >prototype : Symbol(StringConstructor.prototype, Decl(lib.d.ts, --, --)) >slice : Symbol(String.slice, Decl(lib.d.ts, --, --)) diff --git a/tests/baselines/reference/listFailure.symbols b/tests/baselines/reference/listFailure.symbols index 53b1acf09ee..d582c46633e 100644 --- a/tests/baselines/reference/listFailure.symbols +++ b/tests/baselines/reference/listFailure.symbols @@ -6,14 +6,14 @@ module Editor { >Buffer : Symbol(Buffer, Decl(listFailure.ts, 0, 15)) lines: List = ListMakeHead(); ->lines : Symbol(lines, Decl(listFailure.ts, 2, 25)) +>lines : Symbol(Buffer.lines, Decl(listFailure.ts, 2, 25)) >List : Symbol(List, Decl(listFailure.ts, 24, 5)) >Line : Symbol(Line, Decl(listFailure.ts, 37, 5)) >ListMakeHead : Symbol(ListMakeHead, Decl(listFailure.ts, 16, 5)) >Line : Symbol(Line, Decl(listFailure.ts, 37, 5)) addLine(lineText: string): List { ->addLine : Symbol(addLine, Decl(listFailure.ts, 3, 46)) +>addLine : Symbol(Buffer.addLine, Decl(listFailure.ts, 3, 46)) >lineText : Symbol(lineText, Decl(listFailure.ts, 5, 16)) >List : Symbol(List, Decl(listFailure.ts, 24, 5)) >Line : Symbol(Line, Decl(listFailure.ts, 37, 5)) @@ -26,9 +26,9 @@ module Editor { var lineEntry = this.lines.add(line); >lineEntry : Symbol(lineEntry, Decl(listFailure.ts, 8, 15)) >this.lines.add : Symbol(List.add, Decl(listFailure.ts, 27, 29)) ->this.lines : Symbol(lines, Decl(listFailure.ts, 2, 25)) +>this.lines : Symbol(Buffer.lines, Decl(listFailure.ts, 2, 25)) >this : Symbol(Buffer, Decl(listFailure.ts, 0, 15)) ->lines : Symbol(lines, Decl(listFailure.ts, 2, 25)) +>lines : Symbol(Buffer.lines, Decl(listFailure.ts, 2, 25)) >add : Symbol(List.add, Decl(listFailure.ts, 27, 29)) >line : Symbol(line, Decl(listFailure.ts, 7, 15)) @@ -75,32 +75,32 @@ module Editor { >T : Symbol(T, Decl(listFailure.ts, 26, 15)) public next: List; ->next : Symbol(next, Decl(listFailure.ts, 26, 19)) +>next : Symbol(List.next, Decl(listFailure.ts, 26, 19)) >List : Symbol(List, Decl(listFailure.ts, 24, 5)) >T : Symbol(T, Decl(listFailure.ts, 26, 15)) add(data: T): List { ->add : Symbol(add, Decl(listFailure.ts, 27, 29)) +>add : Symbol(List.add, Decl(listFailure.ts, 27, 29)) >data : Symbol(data, Decl(listFailure.ts, 29, 12)) >T : Symbol(T, Decl(listFailure.ts, 26, 15)) >List : Symbol(List, Decl(listFailure.ts, 24, 5)) >T : Symbol(T, Decl(listFailure.ts, 26, 15)) this.next = ListMakeEntry(data); ->this.next : Symbol(next, Decl(listFailure.ts, 26, 19)) +>this.next : Symbol(List.next, Decl(listFailure.ts, 26, 19)) >this : Symbol(List, Decl(listFailure.ts, 24, 5)) ->next : Symbol(next, Decl(listFailure.ts, 26, 19)) +>next : Symbol(List.next, Decl(listFailure.ts, 26, 19)) >ListMakeEntry : Symbol(ListMakeEntry, Decl(listFailure.ts, 20, 5)) >data : Symbol(data, Decl(listFailure.ts, 29, 12)) return this.next; ->this.next : Symbol(next, Decl(listFailure.ts, 26, 19)) +>this.next : Symbol(List.next, Decl(listFailure.ts, 26, 19)) >this : Symbol(List, Decl(listFailure.ts, 24, 5)) ->next : Symbol(next, Decl(listFailure.ts, 26, 19)) +>next : Symbol(List.next, Decl(listFailure.ts, 26, 19)) } popEntry(head: List): List { ->popEntry : Symbol(popEntry, Decl(listFailure.ts, 32, 9)) +>popEntry : Symbol(List.popEntry, Decl(listFailure.ts, 32, 9)) >head : Symbol(head, Decl(listFailure.ts, 34, 17)) >List : Symbol(List, Decl(listFailure.ts, 24, 5)) >T : Symbol(T, Decl(listFailure.ts, 26, 15)) @@ -109,9 +109,9 @@ module Editor { return (ListRemoveEntry(this.next)); >ListRemoveEntry : Symbol(ListRemoveEntry, Decl(listFailure.ts, 12, 5)) ->this.next : Symbol(next, Decl(listFailure.ts, 26, 19)) +>this.next : Symbol(List.next, Decl(listFailure.ts, 26, 19)) >this : Symbol(List, Decl(listFailure.ts, 24, 5)) ->next : Symbol(next, Decl(listFailure.ts, 26, 19)) +>next : Symbol(List.next, Decl(listFailure.ts, 26, 19)) } } diff --git a/tests/baselines/reference/literals-negative.errors.txt b/tests/baselines/reference/literals-negative.errors.txt index d783e5dfa02..2024066d9f2 100644 --- a/tests/baselines/reference/literals-negative.errors.txt +++ b/tests/baselines/reference/literals-negative.errors.txt @@ -1,4 +1,4 @@ -tests/cases/compiler/literals-negative.ts(5,9): error TS2352: Neither type 'number' nor type 'boolean' is assignable to the other. +tests/cases/compiler/literals-negative.ts(5,9): error TS2352: Type 'number' cannot be converted to type 'boolean'. ==== tests/cases/compiler/literals-negative.ts (1 errors) ==== @@ -8,7 +8,7 @@ tests/cases/compiler/literals-negative.ts(5,9): error TS2352: Neither type 'numb var s = (null); var b = (n); ~~~~~~~~~~~~ -!!! error TS2352: Neither type 'number' nor type 'boolean' is assignable to the other. +!!! error TS2352: Type 'number' cannot be converted to type 'boolean'. function isVoid() : void { } diff --git a/tests/baselines/reference/localClassesInLoop_ES6.symbols b/tests/baselines/reference/localClassesInLoop_ES6.symbols index 17e8102ad05..f70373a4d73 100644 --- a/tests/baselines/reference/localClassesInLoop_ES6.symbols +++ b/tests/baselines/reference/localClassesInLoop_ES6.symbols @@ -17,9 +17,9 @@ for (let x = 0; x < 2; ++x) { >C : Symbol(C, Decl(localClassesInLoop_ES6.ts, 5, 29)) data.push(() => C); ->data.push : Symbol(Array.push, Decl(lib.d.ts, --, --)) +>data.push : Symbol(Array.push, Decl(lib.es5.d.ts, --, --)) >data : Symbol(data, Decl(localClassesInLoop_ES6.ts, 4, 3)) ->push : Symbol(Array.push, Decl(lib.d.ts, --, --)) +>push : Symbol(Array.push, Decl(lib.es5.d.ts, --, --)) >C : Symbol(C, Decl(localClassesInLoop_ES6.ts, 5, 29)) } diff --git a/tests/baselines/reference/localTypes1.symbols b/tests/baselines/reference/localTypes1.symbols index 53d4191ae61..3ee47086b26 100644 --- a/tests/baselines/reference/localTypes1.symbols +++ b/tests/baselines/reference/localTypes1.symbols @@ -15,14 +15,14 @@ function f1() { >C : Symbol(C, Decl(localTypes1.ts, 4, 5)) x: E; ->x : Symbol(x, Decl(localTypes1.ts, 5, 13)) +>x : Symbol(C.x, Decl(localTypes1.ts, 5, 13)) >E : Symbol(E, Decl(localTypes1.ts, 1, 15)) } interface I { >I : Symbol(I, Decl(localTypes1.ts, 7, 5)) x: E; ->x : Symbol(x, Decl(localTypes1.ts, 8, 17)) +>x : Symbol(I.x, Decl(localTypes1.ts, 8, 17)) >E : Symbol(E, Decl(localTypes1.ts, 1, 15)) } type A = I[]; @@ -64,14 +64,14 @@ function f2() { >C : Symbol(C, Decl(localTypes1.ts, 21, 9)) x: E; ->x : Symbol(x, Decl(localTypes1.ts, 22, 17)) +>x : Symbol(C.x, Decl(localTypes1.ts, 22, 17)) >E : Symbol(E, Decl(localTypes1.ts, 18, 18)) } interface I { >I : Symbol(I, Decl(localTypes1.ts, 24, 9)) x: E; ->x : Symbol(x, Decl(localTypes1.ts, 25, 21)) +>x : Symbol(I.x, Decl(localTypes1.ts, 25, 21)) >E : Symbol(E, Decl(localTypes1.ts, 18, 18)) } type A = I[]; @@ -118,14 +118,14 @@ function f3(b: boolean) { >C : Symbol(C, Decl(localTypes1.ts, 41, 16)) x: E; ->x : Symbol(x, Decl(localTypes1.ts, 42, 21)) +>x : Symbol(C.x, Decl(localTypes1.ts, 42, 21)) >E : Symbol(E, Decl(localTypes1.ts, 37, 15)) } interface I { >I : Symbol(I, Decl(localTypes1.ts, 44, 13)) x: E; ->x : Symbol(x, Decl(localTypes1.ts, 45, 25)) +>x : Symbol(I.x, Decl(localTypes1.ts, 45, 25)) >E : Symbol(E, Decl(localTypes1.ts, 37, 15)) } type A = I[]; @@ -153,14 +153,14 @@ function f3(b: boolean) { >A : Symbol(A, Decl(localTypes1.ts, 53, 14)) x: E; ->x : Symbol(x, Decl(localTypes1.ts, 54, 21)) +>x : Symbol(A.x, Decl(localTypes1.ts, 54, 21)) >E : Symbol(E, Decl(localTypes1.ts, 37, 15)) } interface J { >J : Symbol(J, Decl(localTypes1.ts, 56, 13)) x: E; ->x : Symbol(x, Decl(localTypes1.ts, 57, 25)) +>x : Symbol(J.x, Decl(localTypes1.ts, 57, 25)) >E : Symbol(E, Decl(localTypes1.ts, 37, 15)) } type C = J[]; @@ -204,7 +204,7 @@ function f5() { >C : Symbol(C, Decl(localTypes1.ts, 72, 9)) x: E; ->x : Symbol(x, Decl(localTypes1.ts, 73, 17)) +>x : Symbol(C.x, Decl(localTypes1.ts, 73, 17)) >E : Symbol(E, Decl(localTypes1.ts, 69, 26)) } return new C(); @@ -225,7 +225,7 @@ function f5() { >C : Symbol(C, Decl(localTypes1.ts, 81, 9)) x: E; ->x : Symbol(x, Decl(localTypes1.ts, 82, 17)) +>x : Symbol(C.x, Decl(localTypes1.ts, 82, 17)) >E : Symbol(E, Decl(localTypes1.ts, 78, 20)) } return new C(); @@ -249,12 +249,12 @@ class A { >C : Symbol(C, Decl(localTypes1.ts, 93, 9)) x: E; ->x : Symbol(x, Decl(localTypes1.ts, 94, 17)) +>x : Symbol(C.x, Decl(localTypes1.ts, 94, 17)) >E : Symbol(E, Decl(localTypes1.ts, 90, 19)) } } m() { ->m : Symbol(m, Decl(localTypes1.ts, 97, 5)) +>m : Symbol(A.m, Decl(localTypes1.ts, 97, 5)) enum E { >E : Symbol(E, Decl(localTypes1.ts, 98, 9)) @@ -268,14 +268,14 @@ class A { >C : Symbol(C, Decl(localTypes1.ts, 101, 9)) x: E; ->x : Symbol(x, Decl(localTypes1.ts, 102, 17)) +>x : Symbol(C.x, Decl(localTypes1.ts, 102, 17)) >E : Symbol(E, Decl(localTypes1.ts, 98, 9)) } return new C(); >C : Symbol(C, Decl(localTypes1.ts, 101, 9)) } get p() { ->p : Symbol(p, Decl(localTypes1.ts, 106, 5)) +>p : Symbol(A.p, Decl(localTypes1.ts, 106, 5)) enum E { >E : Symbol(E, Decl(localTypes1.ts, 107, 13)) @@ -289,7 +289,7 @@ class A { >C : Symbol(C, Decl(localTypes1.ts, 110, 9)) x: E; ->x : Symbol(x, Decl(localTypes1.ts, 111, 17)) +>x : Symbol(C.x, Decl(localTypes1.ts, 111, 17)) >E : Symbol(E, Decl(localTypes1.ts, 107, 13)) } return new C(); @@ -304,7 +304,7 @@ function f6() { >A : Symbol(A, Decl(localTypes1.ts, 118, 15)) a: string; ->a : Symbol(a, Decl(localTypes1.ts, 119, 13)) +>a : Symbol(A.a, Decl(localTypes1.ts, 119, 13)) } function g() { >g : Symbol(g, Decl(localTypes1.ts, 121, 5)) @@ -314,7 +314,7 @@ function f6() { >A : Symbol(A, Decl(localTypes1.ts, 118, 15)) b: string; ->b : Symbol(b, Decl(localTypes1.ts, 123, 27)) +>b : Symbol(B.b, Decl(localTypes1.ts, 123, 27)) } function h() { >h : Symbol(h, Decl(localTypes1.ts, 125, 9)) @@ -324,7 +324,7 @@ function f6() { >B : Symbol(B, Decl(localTypes1.ts, 122, 18)) c: string; ->c : Symbol(c, Decl(localTypes1.ts, 127, 31)) +>c : Symbol(C.c, Decl(localTypes1.ts, 127, 31)) } var x = new C(); >x : Symbol(x, Decl(localTypes1.ts, 130, 15)) diff --git a/tests/baselines/reference/localTypes2.symbols b/tests/baselines/reference/localTypes2.symbols index 3054c6f552d..52ff438f049 100644 --- a/tests/baselines/reference/localTypes2.symbols +++ b/tests/baselines/reference/localTypes2.symbols @@ -9,8 +9,8 @@ function f1() { >C : Symbol(C, Decl(localTypes2.ts, 1, 18)) constructor(public x: number, public y: number) { } ->x : Symbol(x, Decl(localTypes2.ts, 3, 24)) ->y : Symbol(y, Decl(localTypes2.ts, 3, 41)) +>x : Symbol(C.x, Decl(localTypes2.ts, 3, 24)) +>y : Symbol(C.y, Decl(localTypes2.ts, 3, 41)) } return C; >C : Symbol(C, Decl(localTypes2.ts, 1, 18)) @@ -47,11 +47,11 @@ function f2() { >C : Symbol(C, Decl(localTypes2.ts, 14, 27)) public x = x; ->x : Symbol(x, Decl(localTypes2.ts, 15, 17)) +>x : Symbol(C.x, Decl(localTypes2.ts, 15, 17)) >x : Symbol(x, Decl(localTypes2.ts, 14, 15)) constructor(public y: number) { } ->y : Symbol(y, Decl(localTypes2.ts, 17, 24)) +>y : Symbol(C.y, Decl(localTypes2.ts, 17, 24)) } return C; >C : Symbol(C, Decl(localTypes2.ts, 14, 27)) @@ -89,11 +89,11 @@ function f3() { >C : Symbol(C, Decl(localTypes2.ts, 28, 38)) public x = x; ->x : Symbol(x, Decl(localTypes2.ts, 29, 17)) +>x : Symbol(C.x, Decl(localTypes2.ts, 29, 17)) >x : Symbol(x, Decl(localTypes2.ts, 28, 15)) public y = y; ->y : Symbol(y, Decl(localTypes2.ts, 30, 25)) +>y : Symbol(C.y, Decl(localTypes2.ts, 30, 25)) >y : Symbol(y, Decl(localTypes2.ts, 28, 25)) } return C; diff --git a/tests/baselines/reference/localTypes3.symbols b/tests/baselines/reference/localTypes3.symbols index fe7082e4577..c10b463d697 100644 --- a/tests/baselines/reference/localTypes3.symbols +++ b/tests/baselines/reference/localTypes3.symbols @@ -11,9 +11,9 @@ function f1() { >Y : Symbol(Y, Decl(localTypes3.ts, 2, 18)) constructor(public x: X, public y: Y) { } ->x : Symbol(x, Decl(localTypes3.ts, 3, 24)) +>x : Symbol(C.x, Decl(localTypes3.ts, 3, 24)) >X : Symbol(X, Decl(localTypes3.ts, 2, 16)) ->y : Symbol(y, Decl(localTypes3.ts, 3, 36)) +>y : Symbol(C.y, Decl(localTypes3.ts, 3, 36)) >Y : Symbol(Y, Decl(localTypes3.ts, 2, 18)) } return C; @@ -54,11 +54,11 @@ function f2() { >Y : Symbol(Y, Decl(localTypes3.ts, 15, 16)) public x = x; ->x : Symbol(x, Decl(localTypes3.ts, 15, 20)) +>x : Symbol(C.x, Decl(localTypes3.ts, 15, 20)) >x : Symbol(x, Decl(localTypes3.ts, 14, 18)) constructor(public y: Y) { } ->y : Symbol(y, Decl(localTypes3.ts, 17, 24)) +>y : Symbol(C.y, Decl(localTypes3.ts, 17, 24)) >Y : Symbol(Y, Decl(localTypes3.ts, 15, 16)) } return C; @@ -101,11 +101,11 @@ function f3() { >C : Symbol(C, Decl(localTypes3.ts, 28, 34)) public x = x; ->x : Symbol(x, Decl(localTypes3.ts, 29, 17)) +>x : Symbol(C.x, Decl(localTypes3.ts, 29, 17)) >x : Symbol(x, Decl(localTypes3.ts, 28, 21)) public y = y; ->y : Symbol(y, Decl(localTypes3.ts, 30, 25)) +>y : Symbol(C.y, Decl(localTypes3.ts, 30, 25)) >y : Symbol(y, Decl(localTypes3.ts, 28, 26)) } return C; diff --git a/tests/baselines/reference/localTypes5.symbols b/tests/baselines/reference/localTypes5.symbols index 41851a617de..175469e7a72 100644 --- a/tests/baselines/reference/localTypes5.symbols +++ b/tests/baselines/reference/localTypes5.symbols @@ -7,7 +7,7 @@ function foo
() { >X : Symbol(X, Decl(localTypes5.ts, 0, 19)) m() { ->m : Symbol(m, Decl(localTypes5.ts, 1, 13)) +>m : Symbol(X.m, Decl(localTypes5.ts, 1, 13)) >B : Symbol(B, Decl(localTypes5.ts, 2, 10)) >C : Symbol(C, Decl(localTypes5.ts, 2, 12)) @@ -22,7 +22,7 @@ function foo() { >Y : Symbol(Y, Decl(localTypes5.ts, 3, 36)) })(); ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) } } var x = new X(); diff --git a/tests/baselines/reference/logicalAndOperatorWithEveryType.types b/tests/baselines/reference/logicalAndOperatorWithEveryType.types index bd913e94da5..b2628eed921 100644 --- a/tests/baselines/reference/logicalAndOperatorWithEveryType.types +++ b/tests/baselines/reference/logicalAndOperatorWithEveryType.types @@ -623,7 +623,7 @@ var rj8 = a8 && undefined; var rj9 = null && undefined; >rj9 : any ->null && undefined : undefined +>null && undefined : null >null : null >undefined : undefined diff --git a/tests/baselines/reference/logicalNotOperatorInvalidOperations.errors.txt b/tests/baselines/reference/logicalNotOperatorInvalidOperations.errors.txt index 07262962b08..c7d66e17f9d 100644 --- a/tests/baselines/reference/logicalNotOperatorInvalidOperations.errors.txt +++ b/tests/baselines/reference/logicalNotOperatorInvalidOperations.errors.txt @@ -1,19 +1,13 @@ -tests/cases/conformance/expressions/unaryOperators/logicalNotOperator/logicalNotOperatorInvalidOperations.ts(5,17): error TS1005: ',' expected. -tests/cases/conformance/expressions/unaryOperators/logicalNotOperator/logicalNotOperatorInvalidOperations.ts(5,18): error TS1109: Expression expected. tests/cases/conformance/expressions/unaryOperators/logicalNotOperator/logicalNotOperatorInvalidOperations.ts(8,16): error TS2365: Operator '+' cannot be applied to types 'boolean' and 'number'. tests/cases/conformance/expressions/unaryOperators/logicalNotOperator/logicalNotOperatorInvalidOperations.ts(11,16): error TS1109: Expression expected. -==== tests/cases/conformance/expressions/unaryOperators/logicalNotOperator/logicalNotOperatorInvalidOperations.ts (4 errors) ==== +==== tests/cases/conformance/expressions/unaryOperators/logicalNotOperator/logicalNotOperatorInvalidOperations.ts (2 errors) ==== // Unary operator ! var b: number; // operand before ! var BOOLEAN1 = b!; //expect error - ~ -!!! error TS1005: ',' expected. - ~ -!!! error TS1109: Expression expected. // miss parentheses var BOOLEAN2 = !b + b; diff --git a/tests/baselines/reference/logicalNotOperatorInvalidOperations.js b/tests/baselines/reference/logicalNotOperatorInvalidOperations.js index 7b16f2ef36f..0cb941b0e41 100644 --- a/tests/baselines/reference/logicalNotOperatorInvalidOperations.js +++ b/tests/baselines/reference/logicalNotOperatorInvalidOperations.js @@ -15,8 +15,7 @@ var BOOLEAN3 =!; // Unary operator ! var b; // operand before ! -var BOOLEAN1 = b; -!; //expect error +var BOOLEAN1 = b; //expect error // miss parentheses var BOOLEAN2 = !b + b; // miss an operand diff --git a/tests/baselines/reference/logicalNotOperatorWithBooleanType.symbols b/tests/baselines/reference/logicalNotOperatorWithBooleanType.symbols index b42b9d7922e..d94e5d36074 100644 --- a/tests/baselines/reference/logicalNotOperatorWithBooleanType.symbols +++ b/tests/baselines/reference/logicalNotOperatorWithBooleanType.symbols @@ -10,7 +10,7 @@ class A { >A : Symbol(A, Decl(logicalNotOperatorWithBooleanType.ts, 3, 40)) public a: boolean; ->a : Symbol(a, Decl(logicalNotOperatorWithBooleanType.ts, 5, 9)) +>a : Symbol(A.a, Decl(logicalNotOperatorWithBooleanType.ts, 5, 9)) static foo() { return false; } >foo : Symbol(A.foo, Decl(logicalNotOperatorWithBooleanType.ts, 6, 22)) diff --git a/tests/baselines/reference/logicalNotOperatorWithNumberType.symbols b/tests/baselines/reference/logicalNotOperatorWithNumberType.symbols index 4f277a8db54..25fac1015d2 100644 --- a/tests/baselines/reference/logicalNotOperatorWithNumberType.symbols +++ b/tests/baselines/reference/logicalNotOperatorWithNumberType.symbols @@ -13,7 +13,7 @@ class A { >A : Symbol(A, Decl(logicalNotOperatorWithNumberType.ts, 4, 36)) public a: number; ->a : Symbol(a, Decl(logicalNotOperatorWithNumberType.ts, 6, 9)) +>a : Symbol(A.a, Decl(logicalNotOperatorWithNumberType.ts, 6, 9)) static foo() { return 1; } >foo : Symbol(A.foo, Decl(logicalNotOperatorWithNumberType.ts, 7, 21)) diff --git a/tests/baselines/reference/logicalNotOperatorWithStringType.symbols b/tests/baselines/reference/logicalNotOperatorWithStringType.symbols index e91c8b71572..50432fe2333 100644 --- a/tests/baselines/reference/logicalNotOperatorWithStringType.symbols +++ b/tests/baselines/reference/logicalNotOperatorWithStringType.symbols @@ -13,7 +13,7 @@ class A { >A : Symbol(A, Decl(logicalNotOperatorWithStringType.ts, 4, 40)) public a: string; ->a : Symbol(a, Decl(logicalNotOperatorWithStringType.ts, 6, 9)) +>a : Symbol(A.a, Decl(logicalNotOperatorWithStringType.ts, 6, 9)) static foo() { return ""; } >foo : Symbol(A.foo, Decl(logicalNotOperatorWithStringType.ts, 7, 21)) diff --git a/tests/baselines/reference/looseThisTypeInFunctions.errors.txt b/tests/baselines/reference/looseThisTypeInFunctions.errors.txt new file mode 100644 index 00000000000..bf76c9c9641 --- /dev/null +++ b/tests/baselines/reference/looseThisTypeInFunctions.errors.txt @@ -0,0 +1,67 @@ +tests/cases/conformance/types/thisType/looseThisTypeInFunctions.ts(21,1): error TS2322: Type '(this: C, m: number) => number' is not assignable to type '(this: void, m: number) => number'. + The 'this' types of each signature are incompatible. + Type 'void' is not assignable to type 'C'. +tests/cases/conformance/types/thisType/looseThisTypeInFunctions.ts(33,28): error TS2339: Property 'length' does not exist on type 'number'. +tests/cases/conformance/types/thisType/looseThisTypeInFunctions.ts(37,9): error TS2684: The 'this' context of type 'void' is not assignable to method's 'this' of type 'I'. +tests/cases/conformance/types/thisType/looseThisTypeInFunctions.ts(46,20): error TS2339: Property 'length' does not exist on type 'number'. + + +==== tests/cases/conformance/types/thisType/looseThisTypeInFunctions.ts (4 errors) ==== + interface I { + n: number; + explicitThis(this: this, m: number): number; + } + interface Unused { + implicitNoThis(m: number): number; + } + class C implements I { + n: number; + explicitThis(this: this, m: number): number { + return this.n + m; + } + implicitThis(m: number): number { + return this.n + m; + } + explicitVoid(this: void, m: number): number { + return m + 1; + } + } + let c = new C(); + c.explicitVoid = c.explicitThis; // error, 'void' is missing everything + ~~~~~~~~~~~~~~ +!!! error TS2322: Type '(this: C, m: number) => number' is not assignable to type '(this: void, m: number) => number'. +!!! error TS2322: The 'this' types of each signature are incompatible. +!!! error TS2322: Type 'void' is not assignable to type 'C'. + let o = { + n: 101, + explicitThis: function (m: number) { + return m + this.n.length; // error, 'length' does not exist on 'number' + }, + implicitThis(m: number): number { return m; } + }; + let i: I = o; + let o2: I = { + n: 1001, + explicitThis: function (m) { + return m + this.n.length; // error, this.n: number, no member 'length' + ~~~~~~ +!!! error TS2339: Property 'length' does not exist on type 'number'. + }, + } + let x = i.explicitThis; + let n = x(12); // callee:void doesn't match this:I + ~~~~~ +!!! error TS2684: The 'this' context of type 'void' is not assignable to method's 'this' of type 'I'. + let u: Unused; + let y = u.implicitNoThis; + n = y(12); // ok, callee:void matches this:any + c.explicitVoid = c.implicitThis // ok, implicitThis(this:any) + o.implicitThis = c.implicitThis; // ok, implicitThis(this:any) + o.implicitThis = c.explicitThis; // ok, implicitThis(this:any) is assignable to explicitThis(this: this) + o.implicitThis = i.explicitThis; + i.explicitThis = function(m) { + return this.n.length; // error, this.n: number + ~~~~~~ +!!! error TS2339: Property 'length' does not exist on type 'number'. + } + \ No newline at end of file diff --git a/tests/baselines/reference/looseThisTypeInFunctions.js b/tests/baselines/reference/looseThisTypeInFunctions.js new file mode 100644 index 00000000000..cb1fbcc8b95 --- /dev/null +++ b/tests/baselines/reference/looseThisTypeInFunctions.js @@ -0,0 +1,93 @@ +//// [looseThisTypeInFunctions.ts] +interface I { + n: number; + explicitThis(this: this, m: number): number; +} +interface Unused { + implicitNoThis(m: number): number; +} +class C implements I { + n: number; + explicitThis(this: this, m: number): number { + return this.n + m; + } + implicitThis(m: number): number { + return this.n + m; + } + explicitVoid(this: void, m: number): number { + return m + 1; + } +} +let c = new C(); +c.explicitVoid = c.explicitThis; // error, 'void' is missing everything +let o = { + n: 101, + explicitThis: function (m: number) { + return m + this.n.length; // error, 'length' does not exist on 'number' + }, + implicitThis(m: number): number { return m; } +}; +let i: I = o; +let o2: I = { + n: 1001, + explicitThis: function (m) { + return m + this.n.length; // error, this.n: number, no member 'length' + }, +} +let x = i.explicitThis; +let n = x(12); // callee:void doesn't match this:I +let u: Unused; +let y = u.implicitNoThis; +n = y(12); // ok, callee:void matches this:any +c.explicitVoid = c.implicitThis // ok, implicitThis(this:any) +o.implicitThis = c.implicitThis; // ok, implicitThis(this:any) +o.implicitThis = c.explicitThis; // ok, implicitThis(this:any) is assignable to explicitThis(this: this) +o.implicitThis = i.explicitThis; +i.explicitThis = function(m) { + return this.n.length; // error, this.n: number +} + + +//// [looseThisTypeInFunctions.js] +var C = (function () { + function C() { + } + C.prototype.explicitThis = function (m) { + return this.n + m; + }; + C.prototype.implicitThis = function (m) { + return this.n + m; + }; + C.prototype.explicitVoid = function (m) { + return m + 1; + }; + return C; +}()); +var c = new C(); +c.explicitVoid = c.explicitThis; // error, 'void' is missing everything +var o = { + n: 101, + explicitThis: function (m) { + return m + this.n.length; // error, 'length' does not exist on 'number' + }, + implicitThis: function (m) { return m; } +}; +var i = o; +var o2 = { + n: 1001, + explicitThis: function (m) { + return m + this.n.length; // error, this.n: number, no member 'length' + } +}; +var x = i.explicitThis; +var n = x(12); // callee:void doesn't match this:I +var u; +var y = u.implicitNoThis; +n = y(12); // ok, callee:void matches this:any +c.explicitVoid = c.implicitThis; // ok, implicitThis(this:any) +o.implicitThis = c.implicitThis; // ok, implicitThis(this:any) +o.implicitThis = c.explicitThis; // ok, implicitThis(this:any) is assignable to explicitThis(this: this) +o.implicitThis = i.explicitThis; +i.explicitThis = function (m) { + return this.n.length; // error, this.n: number +}; diff --git a/tests/baselines/reference/m7Bugs.symbols b/tests/baselines/reference/m7Bugs.symbols index be6d798a8a5..3dd3ab25102 100644 --- a/tests/baselines/reference/m7Bugs.symbols +++ b/tests/baselines/reference/m7Bugs.symbols @@ -4,7 +4,7 @@ interface ISomething { >ISomething : Symbol(ISomething, Decl(m7Bugs.ts, 0, 0)) something: number; ->something : Symbol(something, Decl(m7Bugs.ts, 1, 22)) +>something : Symbol(ISomething.something, Decl(m7Bugs.ts, 1, 22)) } var s: ISomething = ({ }); @@ -16,7 +16,7 @@ var s: ISomething = ({ }); // scenario 2 interface A { x: string; } >A : Symbol(A, Decl(m7Bugs.ts, 5, 38)) ->x : Symbol(x, Decl(m7Bugs.ts, 9, 13)) +>x : Symbol(A.x, Decl(m7Bugs.ts, 9, 13)) interface B extends A { } >B : Symbol(B, Decl(m7Bugs.ts, 9, 26)) @@ -31,7 +31,7 @@ class C1 { >C1 : Symbol(C1, Decl(m7Bugs.ts, 13, 18)) public x: string; ->x : Symbol(x, Decl(m7Bugs.ts, 15, 10)) +>x : Symbol(C1.x, Decl(m7Bugs.ts, 15, 10)) } class C2 extends C1 {} diff --git a/tests/baselines/reference/memberFunctionsWithPublicOverloads.symbols b/tests/baselines/reference/memberFunctionsWithPublicOverloads.symbols index 435af50a5f7..66161e3e514 100644 --- a/tests/baselines/reference/memberFunctionsWithPublicOverloads.symbols +++ b/tests/baselines/reference/memberFunctionsWithPublicOverloads.symbols @@ -3,34 +3,34 @@ class C { >C : Symbol(C, Decl(memberFunctionsWithPublicOverloads.ts, 0, 0)) public foo(x: number); ->foo : Symbol(foo, Decl(memberFunctionsWithPublicOverloads.ts, 0, 9), Decl(memberFunctionsWithPublicOverloads.ts, 1, 26), Decl(memberFunctionsWithPublicOverloads.ts, 2, 37)) +>foo : Symbol(C.foo, Decl(memberFunctionsWithPublicOverloads.ts, 0, 9), Decl(memberFunctionsWithPublicOverloads.ts, 1, 26), Decl(memberFunctionsWithPublicOverloads.ts, 2, 37)) >x : Symbol(x, Decl(memberFunctionsWithPublicOverloads.ts, 1, 15)) public foo(x: number, y: string); ->foo : Symbol(foo, Decl(memberFunctionsWithPublicOverloads.ts, 0, 9), Decl(memberFunctionsWithPublicOverloads.ts, 1, 26), Decl(memberFunctionsWithPublicOverloads.ts, 2, 37)) +>foo : Symbol(C.foo, Decl(memberFunctionsWithPublicOverloads.ts, 0, 9), Decl(memberFunctionsWithPublicOverloads.ts, 1, 26), Decl(memberFunctionsWithPublicOverloads.ts, 2, 37)) >x : Symbol(x, Decl(memberFunctionsWithPublicOverloads.ts, 2, 15)) >y : Symbol(y, Decl(memberFunctionsWithPublicOverloads.ts, 2, 25)) public foo(x: any, y?: any) { } ->foo : Symbol(foo, Decl(memberFunctionsWithPublicOverloads.ts, 0, 9), Decl(memberFunctionsWithPublicOverloads.ts, 1, 26), Decl(memberFunctionsWithPublicOverloads.ts, 2, 37)) +>foo : Symbol(C.foo, Decl(memberFunctionsWithPublicOverloads.ts, 0, 9), Decl(memberFunctionsWithPublicOverloads.ts, 1, 26), Decl(memberFunctionsWithPublicOverloads.ts, 2, 37)) >x : Symbol(x, Decl(memberFunctionsWithPublicOverloads.ts, 3, 15)) >y : Symbol(y, Decl(memberFunctionsWithPublicOverloads.ts, 3, 22)) public bar(x: 'hi'); ->bar : Symbol(bar, Decl(memberFunctionsWithPublicOverloads.ts, 3, 35), Decl(memberFunctionsWithPublicOverloads.ts, 5, 24), Decl(memberFunctionsWithPublicOverloads.ts, 6, 26), Decl(memberFunctionsWithPublicOverloads.ts, 7, 37)) +>bar : Symbol(C.bar, Decl(memberFunctionsWithPublicOverloads.ts, 3, 35), Decl(memberFunctionsWithPublicOverloads.ts, 5, 24), Decl(memberFunctionsWithPublicOverloads.ts, 6, 26), Decl(memberFunctionsWithPublicOverloads.ts, 7, 37)) >x : Symbol(x, Decl(memberFunctionsWithPublicOverloads.ts, 5, 15)) public bar(x: string); ->bar : Symbol(bar, Decl(memberFunctionsWithPublicOverloads.ts, 3, 35), Decl(memberFunctionsWithPublicOverloads.ts, 5, 24), Decl(memberFunctionsWithPublicOverloads.ts, 6, 26), Decl(memberFunctionsWithPublicOverloads.ts, 7, 37)) +>bar : Symbol(C.bar, Decl(memberFunctionsWithPublicOverloads.ts, 3, 35), Decl(memberFunctionsWithPublicOverloads.ts, 5, 24), Decl(memberFunctionsWithPublicOverloads.ts, 6, 26), Decl(memberFunctionsWithPublicOverloads.ts, 7, 37)) >x : Symbol(x, Decl(memberFunctionsWithPublicOverloads.ts, 6, 15)) public bar(x: number, y: string); ->bar : Symbol(bar, Decl(memberFunctionsWithPublicOverloads.ts, 3, 35), Decl(memberFunctionsWithPublicOverloads.ts, 5, 24), Decl(memberFunctionsWithPublicOverloads.ts, 6, 26), Decl(memberFunctionsWithPublicOverloads.ts, 7, 37)) +>bar : Symbol(C.bar, Decl(memberFunctionsWithPublicOverloads.ts, 3, 35), Decl(memberFunctionsWithPublicOverloads.ts, 5, 24), Decl(memberFunctionsWithPublicOverloads.ts, 6, 26), Decl(memberFunctionsWithPublicOverloads.ts, 7, 37)) >x : Symbol(x, Decl(memberFunctionsWithPublicOverloads.ts, 7, 15)) >y : Symbol(y, Decl(memberFunctionsWithPublicOverloads.ts, 7, 25)) public bar(x: any, y?: any) { } ->bar : Symbol(bar, Decl(memberFunctionsWithPublicOverloads.ts, 3, 35), Decl(memberFunctionsWithPublicOverloads.ts, 5, 24), Decl(memberFunctionsWithPublicOverloads.ts, 6, 26), Decl(memberFunctionsWithPublicOverloads.ts, 7, 37)) +>bar : Symbol(C.bar, Decl(memberFunctionsWithPublicOverloads.ts, 3, 35), Decl(memberFunctionsWithPublicOverloads.ts, 5, 24), Decl(memberFunctionsWithPublicOverloads.ts, 6, 26), Decl(memberFunctionsWithPublicOverloads.ts, 7, 37)) >x : Symbol(x, Decl(memberFunctionsWithPublicOverloads.ts, 8, 15)) >y : Symbol(y, Decl(memberFunctionsWithPublicOverloads.ts, 8, 22)) @@ -72,38 +72,38 @@ class D { >T : Symbol(T, Decl(memberFunctionsWithPublicOverloads.ts, 20, 8)) public foo(x: number); ->foo : Symbol(foo, Decl(memberFunctionsWithPublicOverloads.ts, 20, 12), Decl(memberFunctionsWithPublicOverloads.ts, 21, 26), Decl(memberFunctionsWithPublicOverloads.ts, 22, 27)) +>foo : Symbol(D.foo, Decl(memberFunctionsWithPublicOverloads.ts, 20, 12), Decl(memberFunctionsWithPublicOverloads.ts, 21, 26), Decl(memberFunctionsWithPublicOverloads.ts, 22, 27)) >x : Symbol(x, Decl(memberFunctionsWithPublicOverloads.ts, 21, 15)) public foo(x: T, y: T); ->foo : Symbol(foo, Decl(memberFunctionsWithPublicOverloads.ts, 20, 12), Decl(memberFunctionsWithPublicOverloads.ts, 21, 26), Decl(memberFunctionsWithPublicOverloads.ts, 22, 27)) +>foo : Symbol(D.foo, Decl(memberFunctionsWithPublicOverloads.ts, 20, 12), Decl(memberFunctionsWithPublicOverloads.ts, 21, 26), Decl(memberFunctionsWithPublicOverloads.ts, 22, 27)) >x : Symbol(x, Decl(memberFunctionsWithPublicOverloads.ts, 22, 15)) >T : Symbol(T, Decl(memberFunctionsWithPublicOverloads.ts, 20, 8)) >y : Symbol(y, Decl(memberFunctionsWithPublicOverloads.ts, 22, 20)) >T : Symbol(T, Decl(memberFunctionsWithPublicOverloads.ts, 20, 8)) public foo(x: any, y?: any) { } ->foo : Symbol(foo, Decl(memberFunctionsWithPublicOverloads.ts, 20, 12), Decl(memberFunctionsWithPublicOverloads.ts, 21, 26), Decl(memberFunctionsWithPublicOverloads.ts, 22, 27)) +>foo : Symbol(D.foo, Decl(memberFunctionsWithPublicOverloads.ts, 20, 12), Decl(memberFunctionsWithPublicOverloads.ts, 21, 26), Decl(memberFunctionsWithPublicOverloads.ts, 22, 27)) >x : Symbol(x, Decl(memberFunctionsWithPublicOverloads.ts, 23, 15)) >y : Symbol(y, Decl(memberFunctionsWithPublicOverloads.ts, 23, 22)) public bar(x: 'hi'); ->bar : Symbol(bar, Decl(memberFunctionsWithPublicOverloads.ts, 23, 35), Decl(memberFunctionsWithPublicOverloads.ts, 25, 24), Decl(memberFunctionsWithPublicOverloads.ts, 26, 26), Decl(memberFunctionsWithPublicOverloads.ts, 27, 27)) +>bar : Symbol(D.bar, Decl(memberFunctionsWithPublicOverloads.ts, 23, 35), Decl(memberFunctionsWithPublicOverloads.ts, 25, 24), Decl(memberFunctionsWithPublicOverloads.ts, 26, 26), Decl(memberFunctionsWithPublicOverloads.ts, 27, 27)) >x : Symbol(x, Decl(memberFunctionsWithPublicOverloads.ts, 25, 15)) public bar(x: string); ->bar : Symbol(bar, Decl(memberFunctionsWithPublicOverloads.ts, 23, 35), Decl(memberFunctionsWithPublicOverloads.ts, 25, 24), Decl(memberFunctionsWithPublicOverloads.ts, 26, 26), Decl(memberFunctionsWithPublicOverloads.ts, 27, 27)) +>bar : Symbol(D.bar, Decl(memberFunctionsWithPublicOverloads.ts, 23, 35), Decl(memberFunctionsWithPublicOverloads.ts, 25, 24), Decl(memberFunctionsWithPublicOverloads.ts, 26, 26), Decl(memberFunctionsWithPublicOverloads.ts, 27, 27)) >x : Symbol(x, Decl(memberFunctionsWithPublicOverloads.ts, 26, 15)) public bar(x: T, y: T); ->bar : Symbol(bar, Decl(memberFunctionsWithPublicOverloads.ts, 23, 35), Decl(memberFunctionsWithPublicOverloads.ts, 25, 24), Decl(memberFunctionsWithPublicOverloads.ts, 26, 26), Decl(memberFunctionsWithPublicOverloads.ts, 27, 27)) +>bar : Symbol(D.bar, Decl(memberFunctionsWithPublicOverloads.ts, 23, 35), Decl(memberFunctionsWithPublicOverloads.ts, 25, 24), Decl(memberFunctionsWithPublicOverloads.ts, 26, 26), Decl(memberFunctionsWithPublicOverloads.ts, 27, 27)) >x : Symbol(x, Decl(memberFunctionsWithPublicOverloads.ts, 27, 15)) >T : Symbol(T, Decl(memberFunctionsWithPublicOverloads.ts, 20, 8)) >y : Symbol(y, Decl(memberFunctionsWithPublicOverloads.ts, 27, 20)) >T : Symbol(T, Decl(memberFunctionsWithPublicOverloads.ts, 20, 8)) public bar(x: any, y?: any) { } ->bar : Symbol(bar, Decl(memberFunctionsWithPublicOverloads.ts, 23, 35), Decl(memberFunctionsWithPublicOverloads.ts, 25, 24), Decl(memberFunctionsWithPublicOverloads.ts, 26, 26), Decl(memberFunctionsWithPublicOverloads.ts, 27, 27)) +>bar : Symbol(D.bar, Decl(memberFunctionsWithPublicOverloads.ts, 23, 35), Decl(memberFunctionsWithPublicOverloads.ts, 25, 24), Decl(memberFunctionsWithPublicOverloads.ts, 26, 26), Decl(memberFunctionsWithPublicOverloads.ts, 27, 27)) >x : Symbol(x, Decl(memberFunctionsWithPublicOverloads.ts, 28, 15)) >y : Symbol(y, Decl(memberFunctionsWithPublicOverloads.ts, 28, 22)) diff --git a/tests/baselines/reference/memberVariableDeclarations1.symbols b/tests/baselines/reference/memberVariableDeclarations1.symbols index fbd3529262b..d2c76c705c8 100644 --- a/tests/baselines/reference/memberVariableDeclarations1.symbols +++ b/tests/baselines/reference/memberVariableDeclarations1.symbols @@ -5,20 +5,20 @@ class Employee { >Employee : Symbol(Employee, Decl(memberVariableDeclarations1.ts, 0, 0)) public name: string; ->name : Symbol(name, Decl(memberVariableDeclarations1.ts, 2, 16)) +>name : Symbol(Employee.name, Decl(memberVariableDeclarations1.ts, 2, 16)) public address: string; ->address : Symbol(address, Decl(memberVariableDeclarations1.ts, 3, 24)) +>address : Symbol(Employee.address, Decl(memberVariableDeclarations1.ts, 3, 24)) public retired = false; ->retired : Symbol(retired, Decl(memberVariableDeclarations1.ts, 4, 27)) +>retired : Symbol(Employee.retired, Decl(memberVariableDeclarations1.ts, 4, 27)) public manager: Employee = null; ->manager : Symbol(manager, Decl(memberVariableDeclarations1.ts, 5, 27)) +>manager : Symbol(Employee.manager, Decl(memberVariableDeclarations1.ts, 5, 27)) >Employee : Symbol(Employee, Decl(memberVariableDeclarations1.ts, 0, 0)) public reports: Employee[] = []; ->reports : Symbol(reports, Decl(memberVariableDeclarations1.ts, 6, 36)) +>reports : Symbol(Employee.reports, Decl(memberVariableDeclarations1.ts, 6, 36)) >Employee : Symbol(Employee, Decl(memberVariableDeclarations1.ts, 0, 0)) } @@ -26,37 +26,37 @@ class Employee2 { >Employee2 : Symbol(Employee2, Decl(memberVariableDeclarations1.ts, 8, 1)) public name: string; ->name : Symbol(name, Decl(memberVariableDeclarations1.ts, 10, 17)) +>name : Symbol(Employee2.name, Decl(memberVariableDeclarations1.ts, 10, 17)) public address: string; ->address : Symbol(address, Decl(memberVariableDeclarations1.ts, 11, 24)) +>address : Symbol(Employee2.address, Decl(memberVariableDeclarations1.ts, 11, 24)) public retired: boolean; ->retired : Symbol(retired, Decl(memberVariableDeclarations1.ts, 12, 27)) +>retired : Symbol(Employee2.retired, Decl(memberVariableDeclarations1.ts, 12, 27)) public manager: Employee; ->manager : Symbol(manager, Decl(memberVariableDeclarations1.ts, 13, 28)) +>manager : Symbol(Employee2.manager, Decl(memberVariableDeclarations1.ts, 13, 28)) >Employee : Symbol(Employee, Decl(memberVariableDeclarations1.ts, 0, 0)) public reports: Employee[]; ->reports : Symbol(reports, Decl(memberVariableDeclarations1.ts, 14, 29)) +>reports : Symbol(Employee2.reports, Decl(memberVariableDeclarations1.ts, 14, 29)) >Employee : Symbol(Employee, Decl(memberVariableDeclarations1.ts, 0, 0)) constructor() { this.retired = false; ->this.retired : Symbol(retired, Decl(memberVariableDeclarations1.ts, 12, 27)) +>this.retired : Symbol(Employee2.retired, Decl(memberVariableDeclarations1.ts, 12, 27)) >this : Symbol(Employee2, Decl(memberVariableDeclarations1.ts, 8, 1)) ->retired : Symbol(retired, Decl(memberVariableDeclarations1.ts, 12, 27)) +>retired : Symbol(Employee2.retired, Decl(memberVariableDeclarations1.ts, 12, 27)) this.manager = null; ->this.manager : Symbol(manager, Decl(memberVariableDeclarations1.ts, 13, 28)) +>this.manager : Symbol(Employee2.manager, Decl(memberVariableDeclarations1.ts, 13, 28)) >this : Symbol(Employee2, Decl(memberVariableDeclarations1.ts, 8, 1)) ->manager : Symbol(manager, Decl(memberVariableDeclarations1.ts, 13, 28)) +>manager : Symbol(Employee2.manager, Decl(memberVariableDeclarations1.ts, 13, 28)) this.reports = []; ->this.reports : Symbol(reports, Decl(memberVariableDeclarations1.ts, 14, 29)) +>this.reports : Symbol(Employee2.reports, Decl(memberVariableDeclarations1.ts, 14, 29)) >this : Symbol(Employee2, Decl(memberVariableDeclarations1.ts, 8, 1)) ->reports : Symbol(reports, Decl(memberVariableDeclarations1.ts, 14, 29)) +>reports : Symbol(Employee2.reports, Decl(memberVariableDeclarations1.ts, 14, 29)) } } diff --git a/tests/baselines/reference/mergeThreeInterfaces.symbols b/tests/baselines/reference/mergeThreeInterfaces.symbols index 24bebf49de6..3d73c41948b 100644 --- a/tests/baselines/reference/mergeThreeInterfaces.symbols +++ b/tests/baselines/reference/mergeThreeInterfaces.symbols @@ -6,21 +6,21 @@ interface A { >A : Symbol(A, Decl(mergeThreeInterfaces.ts, 0, 0), Decl(mergeThreeInterfaces.ts, 5, 1), Decl(mergeThreeInterfaces.ts, 9, 1)) foo: string; ->foo : Symbol(foo, Decl(mergeThreeInterfaces.ts, 3, 13)) +>foo : Symbol(A.foo, Decl(mergeThreeInterfaces.ts, 3, 13)) } interface A { >A : Symbol(A, Decl(mergeThreeInterfaces.ts, 0, 0), Decl(mergeThreeInterfaces.ts, 5, 1), Decl(mergeThreeInterfaces.ts, 9, 1)) bar: number; ->bar : Symbol(bar, Decl(mergeThreeInterfaces.ts, 7, 13)) +>bar : Symbol(A.bar, Decl(mergeThreeInterfaces.ts, 7, 13)) } interface A { >A : Symbol(A, Decl(mergeThreeInterfaces.ts, 0, 0), Decl(mergeThreeInterfaces.ts, 5, 1), Decl(mergeThreeInterfaces.ts, 9, 1)) baz: boolean; ->baz : Symbol(baz, Decl(mergeThreeInterfaces.ts, 11, 13)) +>baz : Symbol(A.baz, Decl(mergeThreeInterfaces.ts, 11, 13)) } var a: A; @@ -51,7 +51,7 @@ interface B { >T : Symbol(T, Decl(mergeThreeInterfaces.ts, 21, 12), Decl(mergeThreeInterfaces.ts, 25, 12), Decl(mergeThreeInterfaces.ts, 29, 12)) foo: T; ->foo : Symbol(foo, Decl(mergeThreeInterfaces.ts, 21, 16)) +>foo : Symbol(B.foo, Decl(mergeThreeInterfaces.ts, 21, 16)) >T : Symbol(T, Decl(mergeThreeInterfaces.ts, 21, 12), Decl(mergeThreeInterfaces.ts, 25, 12), Decl(mergeThreeInterfaces.ts, 29, 12)) } @@ -60,7 +60,7 @@ interface B { >T : Symbol(T, Decl(mergeThreeInterfaces.ts, 21, 12), Decl(mergeThreeInterfaces.ts, 25, 12), Decl(mergeThreeInterfaces.ts, 29, 12)) bar: T; ->bar : Symbol(bar, Decl(mergeThreeInterfaces.ts, 25, 16)) +>bar : Symbol(B.bar, Decl(mergeThreeInterfaces.ts, 25, 16)) >T : Symbol(T, Decl(mergeThreeInterfaces.ts, 21, 12), Decl(mergeThreeInterfaces.ts, 25, 12), Decl(mergeThreeInterfaces.ts, 29, 12)) } @@ -69,7 +69,7 @@ interface B { >T : Symbol(T, Decl(mergeThreeInterfaces.ts, 21, 12), Decl(mergeThreeInterfaces.ts, 25, 12), Decl(mergeThreeInterfaces.ts, 29, 12)) baz: T; ->baz : Symbol(baz, Decl(mergeThreeInterfaces.ts, 29, 16)) +>baz : Symbol(B.baz, Decl(mergeThreeInterfaces.ts, 29, 16)) >T : Symbol(T, Decl(mergeThreeInterfaces.ts, 21, 12), Decl(mergeThreeInterfaces.ts, 25, 12), Decl(mergeThreeInterfaces.ts, 29, 12)) } @@ -103,21 +103,21 @@ module M { >A : Symbol(A, Decl(mergeThreeInterfaces.ts, 39, 10), Decl(mergeThreeInterfaces.ts, 42, 5), Decl(mergeThreeInterfaces.ts, 46, 5)) foo: string; ->foo : Symbol(foo, Decl(mergeThreeInterfaces.ts, 40, 17)) +>foo : Symbol(A.foo, Decl(mergeThreeInterfaces.ts, 40, 17)) } interface A { >A : Symbol(A, Decl(mergeThreeInterfaces.ts, 39, 10), Decl(mergeThreeInterfaces.ts, 42, 5), Decl(mergeThreeInterfaces.ts, 46, 5)) bar: number; ->bar : Symbol(bar, Decl(mergeThreeInterfaces.ts, 44, 17)) +>bar : Symbol(A.bar, Decl(mergeThreeInterfaces.ts, 44, 17)) } interface A { >A : Symbol(A, Decl(mergeThreeInterfaces.ts, 39, 10), Decl(mergeThreeInterfaces.ts, 42, 5), Decl(mergeThreeInterfaces.ts, 46, 5)) baz: boolean; ->baz : Symbol(baz, Decl(mergeThreeInterfaces.ts, 48, 17)) +>baz : Symbol(A.baz, Decl(mergeThreeInterfaces.ts, 48, 17)) } var a: A; @@ -149,7 +149,7 @@ module M { >T : Symbol(T, Decl(mergeThreeInterfaces.ts, 59, 16), Decl(mergeThreeInterfaces.ts, 63, 16), Decl(mergeThreeInterfaces.ts, 67, 16)) foo: T; ->foo : Symbol(foo, Decl(mergeThreeInterfaces.ts, 59, 20)) +>foo : Symbol(B.foo, Decl(mergeThreeInterfaces.ts, 59, 20)) >T : Symbol(T, Decl(mergeThreeInterfaces.ts, 59, 16), Decl(mergeThreeInterfaces.ts, 63, 16), Decl(mergeThreeInterfaces.ts, 67, 16)) } @@ -158,7 +158,7 @@ module M { >T : Symbol(T, Decl(mergeThreeInterfaces.ts, 59, 16), Decl(mergeThreeInterfaces.ts, 63, 16), Decl(mergeThreeInterfaces.ts, 67, 16)) bar: T; ->bar : Symbol(bar, Decl(mergeThreeInterfaces.ts, 63, 20)) +>bar : Symbol(B.bar, Decl(mergeThreeInterfaces.ts, 63, 20)) >T : Symbol(T, Decl(mergeThreeInterfaces.ts, 59, 16), Decl(mergeThreeInterfaces.ts, 63, 16), Decl(mergeThreeInterfaces.ts, 67, 16)) } @@ -167,7 +167,7 @@ module M { >T : Symbol(T, Decl(mergeThreeInterfaces.ts, 59, 16), Decl(mergeThreeInterfaces.ts, 63, 16), Decl(mergeThreeInterfaces.ts, 67, 16)) baz: T; ->baz : Symbol(baz, Decl(mergeThreeInterfaces.ts, 67, 20)) +>baz : Symbol(B.baz, Decl(mergeThreeInterfaces.ts, 67, 20)) >T : Symbol(T, Decl(mergeThreeInterfaces.ts, 59, 16), Decl(mergeThreeInterfaces.ts, 63, 16), Decl(mergeThreeInterfaces.ts, 67, 16)) } diff --git a/tests/baselines/reference/mergeThreeInterfaces2.symbols b/tests/baselines/reference/mergeThreeInterfaces2.symbols index 66942fd660d..8499e605f45 100644 --- a/tests/baselines/reference/mergeThreeInterfaces2.symbols +++ b/tests/baselines/reference/mergeThreeInterfaces2.symbols @@ -9,7 +9,7 @@ module M2 { >A : Symbol(A, Decl(mergeThreeInterfaces2.ts, 3, 11), Decl(mergeThreeInterfaces2.ts, 13, 11), Decl(mergeThreeInterfaces2.ts, 16, 5)) foo: string; ->foo : Symbol(foo, Decl(mergeThreeInterfaces2.ts, 4, 24)) +>foo : Symbol(A.foo, Decl(mergeThreeInterfaces2.ts, 4, 24)) } var a: A; @@ -36,14 +36,14 @@ module M2 { >A : Symbol(A, Decl(mergeThreeInterfaces2.ts, 3, 11), Decl(mergeThreeInterfaces2.ts, 13, 11), Decl(mergeThreeInterfaces2.ts, 16, 5)) bar: number; ->bar : Symbol(bar, Decl(mergeThreeInterfaces2.ts, 14, 24)) +>bar : Symbol(A.bar, Decl(mergeThreeInterfaces2.ts, 14, 24)) } export interface A { >A : Symbol(A, Decl(mergeThreeInterfaces2.ts, 3, 11), Decl(mergeThreeInterfaces2.ts, 13, 11), Decl(mergeThreeInterfaces2.ts, 16, 5)) baz: boolean; ->baz : Symbol(baz, Decl(mergeThreeInterfaces2.ts, 18, 24)) +>baz : Symbol(A.baz, Decl(mergeThreeInterfaces2.ts, 18, 24)) } var a: A; @@ -80,7 +80,7 @@ module M2 { >A : Symbol(A, Decl(mergeThreeInterfaces2.ts, 30, 22), Decl(mergeThreeInterfaces2.ts, 42, 22), Decl(mergeThreeInterfaces2.ts, 56, 22)) foo: string; ->foo : Symbol(foo, Decl(mergeThreeInterfaces2.ts, 31, 28)) +>foo : Symbol(A.foo, Decl(mergeThreeInterfaces2.ts, 31, 28)) } var a: A; @@ -111,7 +111,7 @@ module M2 { >A : Symbol(A, Decl(mergeThreeInterfaces2.ts, 30, 22), Decl(mergeThreeInterfaces2.ts, 42, 22), Decl(mergeThreeInterfaces2.ts, 56, 22)) bar: number; ->bar : Symbol(bar, Decl(mergeThreeInterfaces2.ts, 43, 28)) +>bar : Symbol(A.bar, Decl(mergeThreeInterfaces2.ts, 43, 28)) } var a: A; @@ -148,7 +148,7 @@ module M2 { >A : Symbol(A, Decl(mergeThreeInterfaces2.ts, 30, 22), Decl(mergeThreeInterfaces2.ts, 42, 22), Decl(mergeThreeInterfaces2.ts, 56, 22)) baz: boolean; ->baz : Symbol(baz, Decl(mergeThreeInterfaces2.ts, 57, 28)) +>baz : Symbol(A.baz, Decl(mergeThreeInterfaces2.ts, 57, 28)) } var a: A; diff --git a/tests/baselines/reference/mergeTwoInterfaces.symbols b/tests/baselines/reference/mergeTwoInterfaces.symbols index d34ad6ec9a2..c2c78eb83e8 100644 --- a/tests/baselines/reference/mergeTwoInterfaces.symbols +++ b/tests/baselines/reference/mergeTwoInterfaces.symbols @@ -6,14 +6,14 @@ interface A { >A : Symbol(A, Decl(mergeTwoInterfaces.ts, 0, 0), Decl(mergeTwoInterfaces.ts, 5, 1)) foo: string; ->foo : Symbol(foo, Decl(mergeTwoInterfaces.ts, 3, 13)) +>foo : Symbol(A.foo, Decl(mergeTwoInterfaces.ts, 3, 13)) } interface A { >A : Symbol(A, Decl(mergeTwoInterfaces.ts, 0, 0), Decl(mergeTwoInterfaces.ts, 5, 1)) bar: number; ->bar : Symbol(bar, Decl(mergeTwoInterfaces.ts, 7, 13)) +>bar : Symbol(A.bar, Decl(mergeTwoInterfaces.ts, 7, 13)) } var a: A; @@ -38,10 +38,10 @@ interface B { >T : Symbol(T, Decl(mergeTwoInterfaces.ts, 16, 12), Decl(mergeTwoInterfaces.ts, 21, 12)) baz: string; ->baz : Symbol(baz, Decl(mergeTwoInterfaces.ts, 16, 16)) +>baz : Symbol(B.baz, Decl(mergeTwoInterfaces.ts, 16, 16)) foo: T; ->foo : Symbol(foo, Decl(mergeTwoInterfaces.ts, 17, 16)) +>foo : Symbol(B.foo, Decl(mergeTwoInterfaces.ts, 17, 16)) >T : Symbol(T, Decl(mergeTwoInterfaces.ts, 16, 12), Decl(mergeTwoInterfaces.ts, 21, 12)) } @@ -50,7 +50,7 @@ interface B { >T : Symbol(T, Decl(mergeTwoInterfaces.ts, 16, 12), Decl(mergeTwoInterfaces.ts, 21, 12)) bar: T; ->bar : Symbol(bar, Decl(mergeTwoInterfaces.ts, 21, 16)) +>bar : Symbol(B.bar, Decl(mergeTwoInterfaces.ts, 21, 16)) >T : Symbol(T, Decl(mergeTwoInterfaces.ts, 16, 12), Decl(mergeTwoInterfaces.ts, 21, 12)) } @@ -78,14 +78,14 @@ module M { >A : Symbol(A, Decl(mergeTwoInterfaces.ts, 30, 10), Decl(mergeTwoInterfaces.ts, 33, 5)) foo: string; ->foo : Symbol(foo, Decl(mergeTwoInterfaces.ts, 31, 17)) +>foo : Symbol(A.foo, Decl(mergeTwoInterfaces.ts, 31, 17)) } interface A { >A : Symbol(A, Decl(mergeTwoInterfaces.ts, 30, 10), Decl(mergeTwoInterfaces.ts, 33, 5)) bar: number; ->bar : Symbol(bar, Decl(mergeTwoInterfaces.ts, 35, 17)) +>bar : Symbol(A.bar, Decl(mergeTwoInterfaces.ts, 35, 17)) } var a: A; @@ -110,7 +110,7 @@ module M { >T : Symbol(T, Decl(mergeTwoInterfaces.ts, 44, 16), Decl(mergeTwoInterfaces.ts, 48, 16)) foo: T; ->foo : Symbol(foo, Decl(mergeTwoInterfaces.ts, 44, 20)) +>foo : Symbol(B.foo, Decl(mergeTwoInterfaces.ts, 44, 20)) >T : Symbol(T, Decl(mergeTwoInterfaces.ts, 44, 16), Decl(mergeTwoInterfaces.ts, 48, 16)) } @@ -119,7 +119,7 @@ module M { >T : Symbol(T, Decl(mergeTwoInterfaces.ts, 44, 16), Decl(mergeTwoInterfaces.ts, 48, 16)) bar: T; ->bar : Symbol(bar, Decl(mergeTwoInterfaces.ts, 48, 20)) +>bar : Symbol(B.bar, Decl(mergeTwoInterfaces.ts, 48, 20)) >T : Symbol(T, Decl(mergeTwoInterfaces.ts, 44, 16), Decl(mergeTwoInterfaces.ts, 48, 16)) } diff --git a/tests/baselines/reference/mergeTwoInterfaces2.symbols b/tests/baselines/reference/mergeTwoInterfaces2.symbols index 661fbdc14d4..ea438343ad9 100644 --- a/tests/baselines/reference/mergeTwoInterfaces2.symbols +++ b/tests/baselines/reference/mergeTwoInterfaces2.symbols @@ -9,7 +9,7 @@ module M2 { >A : Symbol(A, Decl(mergeTwoInterfaces2.ts, 3, 11), Decl(mergeTwoInterfaces2.ts, 13, 11)) foo: string; ->foo : Symbol(foo, Decl(mergeTwoInterfaces2.ts, 4, 24)) +>foo : Symbol(A.foo, Decl(mergeTwoInterfaces2.ts, 4, 24)) } var a: A; @@ -36,7 +36,7 @@ module M2 { >A : Symbol(A, Decl(mergeTwoInterfaces2.ts, 3, 11), Decl(mergeTwoInterfaces2.ts, 13, 11)) bar: number; ->bar : Symbol(bar, Decl(mergeTwoInterfaces2.ts, 14, 24)) +>bar : Symbol(A.bar, Decl(mergeTwoInterfaces2.ts, 14, 24)) } var a: A; @@ -67,7 +67,7 @@ module M2 { >A : Symbol(A, Decl(mergeTwoInterfaces2.ts, 25, 22), Decl(mergeTwoInterfaces2.ts, 37, 22)) foo: string; ->foo : Symbol(foo, Decl(mergeTwoInterfaces2.ts, 26, 28)) +>foo : Symbol(A.foo, Decl(mergeTwoInterfaces2.ts, 26, 28)) } var a: A; @@ -98,7 +98,7 @@ module M2 { >A : Symbol(A, Decl(mergeTwoInterfaces2.ts, 25, 22), Decl(mergeTwoInterfaces2.ts, 37, 22)) bar: number; ->bar : Symbol(bar, Decl(mergeTwoInterfaces2.ts, 38, 28)) +>bar : Symbol(A.bar, Decl(mergeTwoInterfaces2.ts, 38, 28)) } var a: A; diff --git a/tests/baselines/reference/mergeWithImportedNamespace.js b/tests/baselines/reference/mergeWithImportedNamespace.js new file mode 100644 index 00000000000..60f6fedd3f2 --- /dev/null +++ b/tests/baselines/reference/mergeWithImportedNamespace.js @@ -0,0 +1,20 @@ +//// [tests/cases/compiler/mergeWithImportedNamespace.ts] //// + +//// [f1.ts] +export namespace N { export var x = 1; } + +//// [f2.ts] +import {N} from "./f1"; +// partial revert of https://github.com/Microsoft/TypeScript/pull/7583 to prevent breaking changes +export namespace N { + export interface I {x: any} +} + +//// [f1.js] +"use strict"; +var N; +(function (N) { + N.x = 1; +})(N = exports.N || (exports.N = {})); +//// [f2.js] +"use strict"; diff --git a/tests/baselines/reference/mergeWithImportedNamespace.symbols b/tests/baselines/reference/mergeWithImportedNamespace.symbols new file mode 100644 index 00000000000..58b0f0a811f --- /dev/null +++ b/tests/baselines/reference/mergeWithImportedNamespace.symbols @@ -0,0 +1,17 @@ +=== tests/cases/compiler/f1.ts === +export namespace N { export var x = 1; } +>N : Symbol(N, Decl(f1.ts, 0, 0)) +>x : Symbol(x, Decl(f1.ts, 0, 31)) + +=== tests/cases/compiler/f2.ts === +import {N} from "./f1"; +>N : Symbol(N, Decl(f2.ts, 0, 8), Decl(f2.ts, 0, 23)) + +// partial revert of https://github.com/Microsoft/TypeScript/pull/7583 to prevent breaking changes +export namespace N { +>N : Symbol(N, Decl(f2.ts, 0, 23)) + + export interface I {x: any} +>I : Symbol(I, Decl(f2.ts, 2, 20)) +>x : Symbol(I.x, Decl(f2.ts, 3, 24)) +} diff --git a/tests/baselines/reference/mergeWithImportedNamespace.types b/tests/baselines/reference/mergeWithImportedNamespace.types new file mode 100644 index 00000000000..d6c1df3b609 --- /dev/null +++ b/tests/baselines/reference/mergeWithImportedNamespace.types @@ -0,0 +1,18 @@ +=== tests/cases/compiler/f1.ts === +export namespace N { export var x = 1; } +>N : typeof N +>x : number +>1 : number + +=== tests/cases/compiler/f2.ts === +import {N} from "./f1"; +>N : typeof N + +// partial revert of https://github.com/Microsoft/TypeScript/pull/7583 to prevent breaking changes +export namespace N { +>N : any + + export interface I {x: any} +>I : I +>x : any +} diff --git a/tests/baselines/reference/mergeWithImportedType.js b/tests/baselines/reference/mergeWithImportedType.js new file mode 100644 index 00000000000..89fc353d395 --- /dev/null +++ b/tests/baselines/reference/mergeWithImportedType.js @@ -0,0 +1,18 @@ +//// [tests/cases/compiler/mergeWithImportedType.ts] //// + +//// [f1.ts] +export enum E {X} + +//// [f2.ts] +import {E} from "./f1"; +// partial revert of https://github.com/Microsoft/TypeScript/pull/7583 to prevent breaking changes +export type E = E; + +//// [f1.js] +"use strict"; +(function (E) { + E[E["X"] = 0] = "X"; +})(exports.E || (exports.E = {})); +var E = exports.E; +//// [f2.js] +"use strict"; diff --git a/tests/baselines/reference/mergeWithImportedType.symbols b/tests/baselines/reference/mergeWithImportedType.symbols new file mode 100644 index 00000000000..d14d76f91e7 --- /dev/null +++ b/tests/baselines/reference/mergeWithImportedType.symbols @@ -0,0 +1,14 @@ +=== tests/cases/compiler/f1.ts === +export enum E {X} +>E : Symbol(E, Decl(f1.ts, 0, 0)) +>X : Symbol(E.X, Decl(f1.ts, 0, 15)) + +=== tests/cases/compiler/f2.ts === +import {E} from "./f1"; +>E : Symbol(E, Decl(f2.ts, 0, 8), Decl(f2.ts, 0, 23)) + +// partial revert of https://github.com/Microsoft/TypeScript/pull/7583 to prevent breaking changes +export type E = E; +>E : Symbol(E, Decl(f2.ts, 0, 23)) +>E : Symbol(E, Decl(f2.ts, 0, 8), Decl(f2.ts, 0, 23)) + diff --git a/tests/baselines/reference/mergeWithImportedType.types b/tests/baselines/reference/mergeWithImportedType.types new file mode 100644 index 00000000000..583492444c5 --- /dev/null +++ b/tests/baselines/reference/mergeWithImportedType.types @@ -0,0 +1,14 @@ +=== tests/cases/compiler/f1.ts === +export enum E {X} +>E : E +>X : E + +=== tests/cases/compiler/f2.ts === +import {E} from "./f1"; +>E : typeof E + +// partial revert of https://github.com/Microsoft/TypeScript/pull/7583 to prevent breaking changes +export type E = E; +>E : E +>E : E + diff --git a/tests/baselines/reference/mergedClassInterface.symbols b/tests/baselines/reference/mergedClassInterface.symbols index 1c452851780..8de9a9557c1 100644 --- a/tests/baselines/reference/mergedClassInterface.symbols +++ b/tests/baselines/reference/mergedClassInterface.symbols @@ -29,28 +29,28 @@ interface C5 { >C5 : Symbol(C5, Decl(file1.ts, 16, 12), Decl(file1.ts, 20, 1), Decl(file1.ts, 24, 1), Decl(file1.ts, 28, 1)) x1: number; ->x1 : Symbol(x1, Decl(file1.ts, 18, 14)) +>x1 : Symbol(C5.x1, Decl(file1.ts, 18, 14)) } declare class C5 { >C5 : Symbol(C5, Decl(file1.ts, 16, 12), Decl(file1.ts, 20, 1), Decl(file1.ts, 24, 1), Decl(file1.ts, 28, 1)) x2: number; ->x2 : Symbol(x2, Decl(file1.ts, 22, 18)) +>x2 : Symbol(C5.x2, Decl(file1.ts, 22, 18)) } interface C5 { >C5 : Symbol(C5, Decl(file1.ts, 16, 12), Decl(file1.ts, 20, 1), Decl(file1.ts, 24, 1), Decl(file1.ts, 28, 1)) x3: number; ->x3 : Symbol(x3, Decl(file1.ts, 26, 14)) +>x3 : Symbol(C5.x3, Decl(file1.ts, 26, 14)) } interface C5 { >C5 : Symbol(C5, Decl(file1.ts, 16, 12), Decl(file1.ts, 20, 1), Decl(file1.ts, 24, 1), Decl(file1.ts, 28, 1)) x4: number; ->x4 : Symbol(x4, Decl(file1.ts, 30, 14)) +>x4 : Symbol(C5.x4, Decl(file1.ts, 30, 14)) } // checks if properties actually were merged diff --git a/tests/baselines/reference/mergedDeclarations1.symbols b/tests/baselines/reference/mergedDeclarations1.symbols index 733b9c4ee32..1e84f89aacd 100644 --- a/tests/baselines/reference/mergedDeclarations1.symbols +++ b/tests/baselines/reference/mergedDeclarations1.symbols @@ -3,10 +3,10 @@ interface Point { >Point : Symbol(Point, Decl(mergedDeclarations1.ts, 0, 0)) x: number; ->x : Symbol(x, Decl(mergedDeclarations1.ts, 0, 17)) +>x : Symbol(Point.x, Decl(mergedDeclarations1.ts, 0, 17)) y: number; ->y : Symbol(y, Decl(mergedDeclarations1.ts, 1, 14)) +>y : Symbol(Point.y, Decl(mergedDeclarations1.ts, 1, 14)) } function point(x: number, y: number): Point { >point : Symbol(point, Decl(mergedDeclarations1.ts, 3, 1), Decl(mergedDeclarations1.ts, 6, 1)) diff --git a/tests/baselines/reference/mergedDeclarations5.symbols b/tests/baselines/reference/mergedDeclarations5.symbols index abe1743de1c..1cbb5c333ba 100644 --- a/tests/baselines/reference/mergedDeclarations5.symbols +++ b/tests/baselines/reference/mergedDeclarations5.symbols @@ -3,7 +3,7 @@ class A { >A : Symbol(A, Decl(a.ts, 0, 0), Decl(b.ts, 0, 0)) protected foo() {} ->foo : Symbol(foo, Decl(a.ts, 0, 9)) +>foo : Symbol(A.foo, Decl(a.ts, 0, 9)) } === tests/cases/compiler/b.ts === interface A { } @@ -14,5 +14,5 @@ class B extends A { >A : Symbol(A, Decl(a.ts, 0, 0), Decl(b.ts, 0, 0)) protected foo() {} ->foo : Symbol(foo, Decl(b.ts, 2, 19)) +>foo : Symbol(B.foo, Decl(b.ts, 2, 19)) } diff --git a/tests/baselines/reference/mergedDeclarations6.symbols b/tests/baselines/reference/mergedDeclarations6.symbols index b0d49532384..a51dcf75e9c 100644 --- a/tests/baselines/reference/mergedDeclarations6.symbols +++ b/tests/baselines/reference/mergedDeclarations6.symbols @@ -4,16 +4,16 @@ export class A { >A : Symbol(A, Decl(a.ts, 0, 0), Decl(b.ts, 2, 22)) protected protected: any; ->protected : Symbol(protected, Decl(a.ts, 1, 16)) +>protected : Symbol(A.protected, Decl(a.ts, 1, 16)) protected setProtected(val: any) { ->setProtected : Symbol(setProtected, Decl(a.ts, 2, 29)) +>setProtected : Symbol(A.setProtected, Decl(a.ts, 2, 29)) >val : Symbol(val, Decl(a.ts, 4, 27)) this.protected = val; ->this.protected : Symbol(protected, Decl(a.ts, 1, 16)) +>this.protected : Symbol(A.protected, Decl(a.ts, 1, 16)) >this : Symbol(A, Decl(a.ts, 0, 0), Decl(b.ts, 2, 22)) ->protected : Symbol(protected, Decl(a.ts, 1, 16)) +>protected : Symbol(A.protected, Decl(a.ts, 1, 16)) >val : Symbol(val, Decl(a.ts, 4, 27)) } } @@ -32,7 +32,7 @@ export class B extends A { >A : Symbol(A, Decl(b.ts, 0, 8)) protected setProtected() { ->setProtected : Symbol(setProtected, Decl(b.ts, 6, 26)) +>setProtected : Symbol(B.setProtected, Decl(b.ts, 6, 26)) } } diff --git a/tests/baselines/reference/mergedInheritedClassInterface.symbols b/tests/baselines/reference/mergedInheritedClassInterface.symbols index 5f4ae67df6f..b829ba073d8 100644 --- a/tests/baselines/reference/mergedInheritedClassInterface.symbols +++ b/tests/baselines/reference/mergedInheritedClassInterface.symbols @@ -3,20 +3,20 @@ interface BaseInterface { >BaseInterface : Symbol(BaseInterface, Decl(mergedInheritedClassInterface.ts, 0, 0)) required: number; ->required : Symbol(required, Decl(mergedInheritedClassInterface.ts, 0, 25)) +>required : Symbol(BaseInterface.required, Decl(mergedInheritedClassInterface.ts, 0, 25)) optional?: number; ->optional : Symbol(optional, Decl(mergedInheritedClassInterface.ts, 1, 21)) +>optional : Symbol(BaseInterface.optional, Decl(mergedInheritedClassInterface.ts, 1, 21)) } class BaseClass { >BaseClass : Symbol(BaseClass, Decl(mergedInheritedClassInterface.ts, 3, 1)) baseMethod() { } ->baseMethod : Symbol(baseMethod, Decl(mergedInheritedClassInterface.ts, 5, 17)) +>baseMethod : Symbol(BaseClass.baseMethod, Decl(mergedInheritedClassInterface.ts, 5, 17)) baseNumber: number; ->baseNumber : Symbol(baseNumber, Decl(mergedInheritedClassInterface.ts, 6, 20)) +>baseNumber : Symbol(BaseClass.baseNumber, Decl(mergedInheritedClassInterface.ts, 6, 20)) } interface Child extends BaseInterface { @@ -24,7 +24,7 @@ interface Child extends BaseInterface { >BaseInterface : Symbol(BaseInterface, Decl(mergedInheritedClassInterface.ts, 0, 0)) additional: number; ->additional : Symbol(additional, Decl(mergedInheritedClassInterface.ts, 10, 39)) +>additional : Symbol(Child.additional, Decl(mergedInheritedClassInterface.ts, 10, 39)) } class Child extends BaseClass { @@ -32,10 +32,10 @@ class Child extends BaseClass { >BaseClass : Symbol(BaseClass, Decl(mergedInheritedClassInterface.ts, 3, 1)) classNumber: number; ->classNumber : Symbol(classNumber, Decl(mergedInheritedClassInterface.ts, 14, 31)) +>classNumber : Symbol(Child.classNumber, Decl(mergedInheritedClassInterface.ts, 14, 31)) method() { } ->method : Symbol(method, Decl(mergedInheritedClassInterface.ts, 15, 24)) +>method : Symbol(Child.method, Decl(mergedInheritedClassInterface.ts, 15, 24)) } interface ChildNoBaseClass extends BaseInterface { @@ -43,16 +43,16 @@ interface ChildNoBaseClass extends BaseInterface { >BaseInterface : Symbol(BaseInterface, Decl(mergedInheritedClassInterface.ts, 0, 0)) additional2: string; ->additional2 : Symbol(additional2, Decl(mergedInheritedClassInterface.ts, 19, 50)) +>additional2 : Symbol(ChildNoBaseClass.additional2, Decl(mergedInheritedClassInterface.ts, 19, 50)) } class ChildNoBaseClass { >ChildNoBaseClass : Symbol(ChildNoBaseClass, Decl(mergedInheritedClassInterface.ts, 17, 1), Decl(mergedInheritedClassInterface.ts, 21, 1)) classString: string; ->classString : Symbol(classString, Decl(mergedInheritedClassInterface.ts, 22, 24)) +>classString : Symbol(ChildNoBaseClass.classString, Decl(mergedInheritedClassInterface.ts, 22, 24)) method2() { } ->method2 : Symbol(method2, Decl(mergedInheritedClassInterface.ts, 23, 24)) +>method2 : Symbol(ChildNoBaseClass.method2, Decl(mergedInheritedClassInterface.ts, 23, 24)) } class Grandchild extends ChildNoBaseClass { >Grandchild : Symbol(Grandchild, Decl(mergedInheritedClassInterface.ts, 25, 1)) diff --git a/tests/baselines/reference/mergedInterfaceFromMultipleFiles1.symbols b/tests/baselines/reference/mergedInterfaceFromMultipleFiles1.symbols index 78383c29377..4dffd06bcde 100644 --- a/tests/baselines/reference/mergedInterfaceFromMultipleFiles1.symbols +++ b/tests/baselines/reference/mergedInterfaceFromMultipleFiles1.symbols @@ -3,15 +3,15 @@ interface D { bar(): number; } >D : Symbol(D, Decl(mergedInterfaceFromMultipleFiles1_1.ts, 0, 0)) ->bar : Symbol(bar, Decl(mergedInterfaceFromMultipleFiles1_1.ts, 2, 13)) +>bar : Symbol(D.bar, Decl(mergedInterfaceFromMultipleFiles1_1.ts, 2, 13)) interface C extends D { >C : Symbol(C, Decl(mergedInterfaceFromMultipleFiles1_0.ts, 1, 30), Decl(mergedInterfaceFromMultipleFiles1_1.ts, 2, 30)) >D : Symbol(D, Decl(mergedInterfaceFromMultipleFiles1_1.ts, 0, 0)) b(): Date; ->b : Symbol(b, Decl(mergedInterfaceFromMultipleFiles1_1.ts, 4, 23)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>b : Symbol(C.b, Decl(mergedInterfaceFromMultipleFiles1_1.ts, 4, 23)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) } var c:C; @@ -38,7 +38,7 @@ var d: number = c.a(); var e: Date = c.b(); >e : Symbol(e, Decl(mergedInterfaceFromMultipleFiles1_1.ts, 12, 3)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >c.b : Symbol(C.b, Decl(mergedInterfaceFromMultipleFiles1_1.ts, 4, 23)) >c : Symbol(c, Decl(mergedInterfaceFromMultipleFiles1_1.ts, 8, 3)) >b : Symbol(C.b, Decl(mergedInterfaceFromMultipleFiles1_1.ts, 4, 23)) @@ -47,13 +47,13 @@ var e: Date = c.b(); interface I { foo(): string; } >I : Symbol(I, Decl(mergedInterfaceFromMultipleFiles1_0.ts, 0, 0)) ->foo : Symbol(foo, Decl(mergedInterfaceFromMultipleFiles1_0.ts, 1, 13)) +>foo : Symbol(I.foo, Decl(mergedInterfaceFromMultipleFiles1_0.ts, 1, 13)) interface C extends I { >C : Symbol(C, Decl(mergedInterfaceFromMultipleFiles1_0.ts, 1, 30), Decl(mergedInterfaceFromMultipleFiles1_1.ts, 2, 30)) >I : Symbol(I, Decl(mergedInterfaceFromMultipleFiles1_0.ts, 0, 0)) a(): number; ->a : Symbol(a, Decl(mergedInterfaceFromMultipleFiles1_0.ts, 3, 23)) +>a : Symbol(C.a, Decl(mergedInterfaceFromMultipleFiles1_0.ts, 3, 23)) } diff --git a/tests/baselines/reference/mergedInterfacesWithMultipleBases.symbols b/tests/baselines/reference/mergedInterfacesWithMultipleBases.symbols index b3fe87bca29..c4275b45908 100644 --- a/tests/baselines/reference/mergedInterfacesWithMultipleBases.symbols +++ b/tests/baselines/reference/mergedInterfacesWithMultipleBases.symbols @@ -6,14 +6,14 @@ class C { >C : Symbol(C, Decl(mergedInterfacesWithMultipleBases.ts, 0, 0)) a: number; ->a : Symbol(a, Decl(mergedInterfacesWithMultipleBases.ts, 3, 9)) +>a : Symbol(C.a, Decl(mergedInterfacesWithMultipleBases.ts, 3, 9)) } class C2 { >C2 : Symbol(C2, Decl(mergedInterfacesWithMultipleBases.ts, 5, 1)) b: number; ->b : Symbol(b, Decl(mergedInterfacesWithMultipleBases.ts, 7, 10)) +>b : Symbol(C2.b, Decl(mergedInterfacesWithMultipleBases.ts, 7, 10)) } interface A extends C { @@ -21,7 +21,7 @@ interface A extends C { >C : Symbol(C, Decl(mergedInterfacesWithMultipleBases.ts, 0, 0)) y: string; ->y : Symbol(y, Decl(mergedInterfacesWithMultipleBases.ts, 11, 23)) +>y : Symbol(A.y, Decl(mergedInterfacesWithMultipleBases.ts, 11, 23)) } interface A extends C2 { @@ -29,7 +29,7 @@ interface A extends C2 { >C2 : Symbol(C2, Decl(mergedInterfacesWithMultipleBases.ts, 5, 1)) z: string; ->z : Symbol(z, Decl(mergedInterfacesWithMultipleBases.ts, 15, 24)) +>z : Symbol(A.z, Decl(mergedInterfacesWithMultipleBases.ts, 15, 24)) } class D implements A { @@ -37,16 +37,16 @@ class D implements A { >A : Symbol(A, Decl(mergedInterfacesWithMultipleBases.ts, 9, 1), Decl(mergedInterfacesWithMultipleBases.ts, 13, 1)) a: number; ->a : Symbol(a, Decl(mergedInterfacesWithMultipleBases.ts, 19, 22)) +>a : Symbol(D.a, Decl(mergedInterfacesWithMultipleBases.ts, 19, 22)) b: number; ->b : Symbol(b, Decl(mergedInterfacesWithMultipleBases.ts, 20, 14)) +>b : Symbol(D.b, Decl(mergedInterfacesWithMultipleBases.ts, 20, 14)) y: string; ->y : Symbol(y, Decl(mergedInterfacesWithMultipleBases.ts, 21, 14)) +>y : Symbol(D.y, Decl(mergedInterfacesWithMultipleBases.ts, 21, 14)) z: string; ->z : Symbol(z, Decl(mergedInterfacesWithMultipleBases.ts, 22, 14)) +>z : Symbol(D.z, Decl(mergedInterfacesWithMultipleBases.ts, 22, 14)) } var a: A; @@ -68,7 +68,7 @@ module M { >T : Symbol(T, Decl(mergedInterfacesWithMultipleBases.ts, 31, 12)) a: T; ->a : Symbol(a, Decl(mergedInterfacesWithMultipleBases.ts, 31, 16)) +>a : Symbol(C.a, Decl(mergedInterfacesWithMultipleBases.ts, 31, 16)) >T : Symbol(T, Decl(mergedInterfacesWithMultipleBases.ts, 31, 12)) } @@ -77,7 +77,7 @@ module M { >T : Symbol(T, Decl(mergedInterfacesWithMultipleBases.ts, 35, 13)) b: T; ->b : Symbol(b, Decl(mergedInterfacesWithMultipleBases.ts, 35, 17)) +>b : Symbol(C2.b, Decl(mergedInterfacesWithMultipleBases.ts, 35, 17)) >T : Symbol(T, Decl(mergedInterfacesWithMultipleBases.ts, 35, 13)) } @@ -88,7 +88,7 @@ module M { >T : Symbol(T, Decl(mergedInterfacesWithMultipleBases.ts, 39, 16), Decl(mergedInterfacesWithMultipleBases.ts, 43, 16)) y: T; ->y : Symbol(y, Decl(mergedInterfacesWithMultipleBases.ts, 39, 33)) +>y : Symbol(A.y, Decl(mergedInterfacesWithMultipleBases.ts, 39, 33)) >T : Symbol(T, Decl(mergedInterfacesWithMultipleBases.ts, 39, 16), Decl(mergedInterfacesWithMultipleBases.ts, 43, 16)) } @@ -98,7 +98,7 @@ module M { >C2 : Symbol(C2, Decl(mergedInterfacesWithMultipleBases.ts, 33, 5)) z: T; ->z : Symbol(z, Decl(mergedInterfacesWithMultipleBases.ts, 43, 39)) +>z : Symbol(A.z, Decl(mergedInterfacesWithMultipleBases.ts, 43, 39)) >T : Symbol(T, Decl(mergedInterfacesWithMultipleBases.ts, 39, 16), Decl(mergedInterfacesWithMultipleBases.ts, 43, 16)) } @@ -107,15 +107,15 @@ module M { >A : Symbol(A, Decl(mergedInterfacesWithMultipleBases.ts, 37, 5), Decl(mergedInterfacesWithMultipleBases.ts, 41, 5)) a: boolean; ->a : Symbol(a, Decl(mergedInterfacesWithMultipleBases.ts, 47, 35)) +>a : Symbol(D.a, Decl(mergedInterfacesWithMultipleBases.ts, 47, 35)) b: string; ->b : Symbol(b, Decl(mergedInterfacesWithMultipleBases.ts, 48, 19)) +>b : Symbol(D.b, Decl(mergedInterfacesWithMultipleBases.ts, 48, 19)) y: boolean; ->y : Symbol(y, Decl(mergedInterfacesWithMultipleBases.ts, 49, 18)) +>y : Symbol(D.y, Decl(mergedInterfacesWithMultipleBases.ts, 49, 18)) z: boolean; ->z : Symbol(z, Decl(mergedInterfacesWithMultipleBases.ts, 50, 19)) +>z : Symbol(D.z, Decl(mergedInterfacesWithMultipleBases.ts, 50, 19)) } } diff --git a/tests/baselines/reference/mergedInterfacesWithMultipleBases2.symbols b/tests/baselines/reference/mergedInterfacesWithMultipleBases2.symbols index 7424e0d110b..a71f3838f7f 100644 --- a/tests/baselines/reference/mergedInterfacesWithMultipleBases2.symbols +++ b/tests/baselines/reference/mergedInterfacesWithMultipleBases2.symbols @@ -6,28 +6,28 @@ class C { >C : Symbol(C, Decl(mergedInterfacesWithMultipleBases2.ts, 0, 0)) a: number; ->a : Symbol(a, Decl(mergedInterfacesWithMultipleBases2.ts, 3, 9)) +>a : Symbol(C.a, Decl(mergedInterfacesWithMultipleBases2.ts, 3, 9)) } class C2 { >C2 : Symbol(C2, Decl(mergedInterfacesWithMultipleBases2.ts, 5, 1)) b: number; ->b : Symbol(b, Decl(mergedInterfacesWithMultipleBases2.ts, 7, 10)) +>b : Symbol(C2.b, Decl(mergedInterfacesWithMultipleBases2.ts, 7, 10)) } class C3 { >C3 : Symbol(C3, Decl(mergedInterfacesWithMultipleBases2.ts, 9, 1)) c: string; ->c : Symbol(c, Decl(mergedInterfacesWithMultipleBases2.ts, 11, 10)) +>c : Symbol(C3.c, Decl(mergedInterfacesWithMultipleBases2.ts, 11, 10)) } class C4 { >C4 : Symbol(C4, Decl(mergedInterfacesWithMultipleBases2.ts, 13, 1)) d: string; ->d : Symbol(d, Decl(mergedInterfacesWithMultipleBases2.ts, 15, 10)) +>d : Symbol(C4.d, Decl(mergedInterfacesWithMultipleBases2.ts, 15, 10)) } @@ -37,7 +37,7 @@ interface A extends C, C3 { >C3 : Symbol(C3, Decl(mergedInterfacesWithMultipleBases2.ts, 9, 1)) y: string; ->y : Symbol(y, Decl(mergedInterfacesWithMultipleBases2.ts, 20, 27)) +>y : Symbol(A.y, Decl(mergedInterfacesWithMultipleBases2.ts, 20, 27)) } interface A extends C2, C4 { @@ -46,7 +46,7 @@ interface A extends C2, C4 { >C4 : Symbol(C4, Decl(mergedInterfacesWithMultipleBases2.ts, 13, 1)) z: string; ->z : Symbol(z, Decl(mergedInterfacesWithMultipleBases2.ts, 24, 28)) +>z : Symbol(A.z, Decl(mergedInterfacesWithMultipleBases2.ts, 24, 28)) } class D implements A { @@ -54,22 +54,22 @@ class D implements A { >A : Symbol(A, Decl(mergedInterfacesWithMultipleBases2.ts, 17, 1), Decl(mergedInterfacesWithMultipleBases2.ts, 22, 1)) a: number; ->a : Symbol(a, Decl(mergedInterfacesWithMultipleBases2.ts, 28, 22)) +>a : Symbol(D.a, Decl(mergedInterfacesWithMultipleBases2.ts, 28, 22)) b: number; ->b : Symbol(b, Decl(mergedInterfacesWithMultipleBases2.ts, 29, 14)) +>b : Symbol(D.b, Decl(mergedInterfacesWithMultipleBases2.ts, 29, 14)) c: string; ->c : Symbol(c, Decl(mergedInterfacesWithMultipleBases2.ts, 30, 14)) +>c : Symbol(D.c, Decl(mergedInterfacesWithMultipleBases2.ts, 30, 14)) d: string; ->d : Symbol(d, Decl(mergedInterfacesWithMultipleBases2.ts, 31, 14)) +>d : Symbol(D.d, Decl(mergedInterfacesWithMultipleBases2.ts, 31, 14)) y: string; ->y : Symbol(y, Decl(mergedInterfacesWithMultipleBases2.ts, 32, 14)) +>y : Symbol(D.y, Decl(mergedInterfacesWithMultipleBases2.ts, 32, 14)) z: string; ->z : Symbol(z, Decl(mergedInterfacesWithMultipleBases2.ts, 33, 14)) +>z : Symbol(D.z, Decl(mergedInterfacesWithMultipleBases2.ts, 33, 14)) } var a: A; @@ -91,7 +91,7 @@ module M { >T : Symbol(T, Decl(mergedInterfacesWithMultipleBases2.ts, 42, 12)) a: T; ->a : Symbol(a, Decl(mergedInterfacesWithMultipleBases2.ts, 42, 16)) +>a : Symbol(C.a, Decl(mergedInterfacesWithMultipleBases2.ts, 42, 16)) >T : Symbol(T, Decl(mergedInterfacesWithMultipleBases2.ts, 42, 12)) } @@ -100,7 +100,7 @@ module M { >T : Symbol(T, Decl(mergedInterfacesWithMultipleBases2.ts, 46, 13)) b: T; ->b : Symbol(b, Decl(mergedInterfacesWithMultipleBases2.ts, 46, 17)) +>b : Symbol(C2.b, Decl(mergedInterfacesWithMultipleBases2.ts, 46, 17)) >T : Symbol(T, Decl(mergedInterfacesWithMultipleBases2.ts, 46, 13)) } @@ -109,7 +109,7 @@ module M { >T : Symbol(T, Decl(mergedInterfacesWithMultipleBases2.ts, 50, 13)) c: T; ->c : Symbol(c, Decl(mergedInterfacesWithMultipleBases2.ts, 50, 17)) +>c : Symbol(C3.c, Decl(mergedInterfacesWithMultipleBases2.ts, 50, 17)) >T : Symbol(T, Decl(mergedInterfacesWithMultipleBases2.ts, 50, 13)) } @@ -118,7 +118,7 @@ module M { >T : Symbol(T, Decl(mergedInterfacesWithMultipleBases2.ts, 54, 13)) d: T; ->d : Symbol(d, Decl(mergedInterfacesWithMultipleBases2.ts, 54, 17)) +>d : Symbol(C4.d, Decl(mergedInterfacesWithMultipleBases2.ts, 54, 17)) >T : Symbol(T, Decl(mergedInterfacesWithMultipleBases2.ts, 54, 13)) } @@ -131,7 +131,7 @@ module M { >T : Symbol(T, Decl(mergedInterfacesWithMultipleBases2.ts, 58, 16), Decl(mergedInterfacesWithMultipleBases2.ts, 62, 16)) y: T; ->y : Symbol(y, Decl(mergedInterfacesWithMultipleBases2.ts, 58, 40)) +>y : Symbol(A.y, Decl(mergedInterfacesWithMultipleBases2.ts, 58, 40)) >T : Symbol(T, Decl(mergedInterfacesWithMultipleBases2.ts, 58, 16), Decl(mergedInterfacesWithMultipleBases2.ts, 62, 16)) } @@ -142,7 +142,7 @@ module M { >C4 : Symbol(C4, Decl(mergedInterfacesWithMultipleBases2.ts, 52, 5)) z: T; ->z : Symbol(z, Decl(mergedInterfacesWithMultipleBases2.ts, 62, 51)) +>z : Symbol(A.z, Decl(mergedInterfacesWithMultipleBases2.ts, 62, 51)) >T : Symbol(T, Decl(mergedInterfacesWithMultipleBases2.ts, 58, 16), Decl(mergedInterfacesWithMultipleBases2.ts, 62, 16)) } @@ -151,21 +151,21 @@ module M { >A : Symbol(A, Decl(mergedInterfacesWithMultipleBases2.ts, 56, 5), Decl(mergedInterfacesWithMultipleBases2.ts, 60, 5)) a: boolean; ->a : Symbol(a, Decl(mergedInterfacesWithMultipleBases2.ts, 66, 35)) +>a : Symbol(D.a, Decl(mergedInterfacesWithMultipleBases2.ts, 66, 35)) b: string; ->b : Symbol(b, Decl(mergedInterfacesWithMultipleBases2.ts, 67, 19)) +>b : Symbol(D.b, Decl(mergedInterfacesWithMultipleBases2.ts, 67, 19)) c: boolean; ->c : Symbol(c, Decl(mergedInterfacesWithMultipleBases2.ts, 68, 18)) +>c : Symbol(D.c, Decl(mergedInterfacesWithMultipleBases2.ts, 68, 18)) d: string; ->d : Symbol(d, Decl(mergedInterfacesWithMultipleBases2.ts, 69, 19)) +>d : Symbol(D.d, Decl(mergedInterfacesWithMultipleBases2.ts, 69, 19)) y: boolean; ->y : Symbol(y, Decl(mergedInterfacesWithMultipleBases2.ts, 70, 18)) +>y : Symbol(D.y, Decl(mergedInterfacesWithMultipleBases2.ts, 70, 18)) z: boolean; ->z : Symbol(z, Decl(mergedInterfacesWithMultipleBases2.ts, 71, 19)) +>z : Symbol(D.z, Decl(mergedInterfacesWithMultipleBases2.ts, 71, 19)) } } diff --git a/tests/baselines/reference/mergedInterfacesWithMultipleBases3.symbols b/tests/baselines/reference/mergedInterfacesWithMultipleBases3.symbols index 1aa65e8825a..de2bff45743 100644 --- a/tests/baselines/reference/mergedInterfacesWithMultipleBases3.symbols +++ b/tests/baselines/reference/mergedInterfacesWithMultipleBases3.symbols @@ -7,7 +7,7 @@ class C { >T : Symbol(T, Decl(mergedInterfacesWithMultipleBases3.ts, 3, 8)) a: T; ->a : Symbol(a, Decl(mergedInterfacesWithMultipleBases3.ts, 3, 12)) +>a : Symbol(C.a, Decl(mergedInterfacesWithMultipleBases3.ts, 3, 12)) >T : Symbol(T, Decl(mergedInterfacesWithMultipleBases3.ts, 3, 8)) } @@ -16,7 +16,7 @@ class C2 { >T : Symbol(T, Decl(mergedInterfacesWithMultipleBases3.ts, 7, 9)) b: T; ->b : Symbol(b, Decl(mergedInterfacesWithMultipleBases3.ts, 7, 13)) +>b : Symbol(C2.b, Decl(mergedInterfacesWithMultipleBases3.ts, 7, 13)) >T : Symbol(T, Decl(mergedInterfacesWithMultipleBases3.ts, 7, 9)) } @@ -25,7 +25,7 @@ class C3 { >T : Symbol(T, Decl(mergedInterfacesWithMultipleBases3.ts, 11, 9)) c: T; ->c : Symbol(c, Decl(mergedInterfacesWithMultipleBases3.ts, 11, 13)) +>c : Symbol(C3.c, Decl(mergedInterfacesWithMultipleBases3.ts, 11, 13)) >T : Symbol(T, Decl(mergedInterfacesWithMultipleBases3.ts, 11, 9)) } @@ -34,7 +34,7 @@ class C4 { >T : Symbol(T, Decl(mergedInterfacesWithMultipleBases3.ts, 15, 9)) d: T; ->d : Symbol(d, Decl(mergedInterfacesWithMultipleBases3.ts, 15, 13)) +>d : Symbol(C4.d, Decl(mergedInterfacesWithMultipleBases3.ts, 15, 13)) >T : Symbol(T, Decl(mergedInterfacesWithMultipleBases3.ts, 15, 9)) } @@ -45,7 +45,7 @@ interface A extends C, C3 { >C3 : Symbol(C3, Decl(mergedInterfacesWithMultipleBases3.ts, 9, 1)) y: T; ->y : Symbol(y, Decl(mergedInterfacesWithMultipleBases3.ts, 19, 46)) +>y : Symbol(A.y, Decl(mergedInterfacesWithMultipleBases3.ts, 19, 46)) >T : Symbol(T, Decl(mergedInterfacesWithMultipleBases3.ts, 19, 12), Decl(mergedInterfacesWithMultipleBases3.ts, 23, 12)) } @@ -56,7 +56,7 @@ interface A extends C, C4 { >C4 : Symbol(C4, Decl(mergedInterfacesWithMultipleBases3.ts, 13, 1)) z: T; ->z : Symbol(z, Decl(mergedInterfacesWithMultipleBases3.ts, 23, 46)) +>z : Symbol(A.z, Decl(mergedInterfacesWithMultipleBases3.ts, 23, 46)) >T : Symbol(T, Decl(mergedInterfacesWithMultipleBases3.ts, 19, 12), Decl(mergedInterfacesWithMultipleBases3.ts, 23, 12)) } @@ -65,21 +65,21 @@ class D implements A { >A : Symbol(A, Decl(mergedInterfacesWithMultipleBases3.ts, 17, 1), Decl(mergedInterfacesWithMultipleBases3.ts, 21, 1)) a: string; ->a : Symbol(a, Decl(mergedInterfacesWithMultipleBases3.ts, 27, 31)) +>a : Symbol(D.a, Decl(mergedInterfacesWithMultipleBases3.ts, 27, 31)) b: Date; ->b : Symbol(b, Decl(mergedInterfacesWithMultipleBases3.ts, 28, 14)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>b : Symbol(D.b, Decl(mergedInterfacesWithMultipleBases3.ts, 28, 14)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) c: string; ->c : Symbol(c, Decl(mergedInterfacesWithMultipleBases3.ts, 29, 12)) +>c : Symbol(D.c, Decl(mergedInterfacesWithMultipleBases3.ts, 29, 12)) d: string; ->d : Symbol(d, Decl(mergedInterfacesWithMultipleBases3.ts, 30, 14)) +>d : Symbol(D.d, Decl(mergedInterfacesWithMultipleBases3.ts, 30, 14)) y: boolean; ->y : Symbol(y, Decl(mergedInterfacesWithMultipleBases3.ts, 31, 14)) +>y : Symbol(D.y, Decl(mergedInterfacesWithMultipleBases3.ts, 31, 14)) z: boolean; ->z : Symbol(z, Decl(mergedInterfacesWithMultipleBases3.ts, 32, 15)) +>z : Symbol(D.z, Decl(mergedInterfacesWithMultipleBases3.ts, 32, 15)) } diff --git a/tests/baselines/reference/methodContainingLocalFunction.symbols b/tests/baselines/reference/methodContainingLocalFunction.symbols index e449d68562f..0559ad5140b 100644 --- a/tests/baselines/reference/methodContainingLocalFunction.symbols +++ b/tests/baselines/reference/methodContainingLocalFunction.symbols @@ -5,7 +5,7 @@ class BugExhibition { >T : Symbol(T, Decl(methodContainingLocalFunction.ts, 1, 20)) public exhibitBug() { ->exhibitBug : Symbol(exhibitBug, Decl(methodContainingLocalFunction.ts, 1, 24)) +>exhibitBug : Symbol(BugExhibition.exhibitBug, Decl(methodContainingLocalFunction.ts, 1, 24)) function localFunction() { } >localFunction : Symbol(localFunction, Decl(methodContainingLocalFunction.ts, 2, 25)) @@ -45,7 +45,7 @@ class BugExhibition3 { >T : Symbol(T, Decl(methodContainingLocalFunction.ts, 18, 21)) public exhibitBug() { ->exhibitBug : Symbol(exhibitBug, Decl(methodContainingLocalFunction.ts, 18, 25)) +>exhibitBug : Symbol(BugExhibition3.exhibitBug, Decl(methodContainingLocalFunction.ts, 18, 25)) function localGenericFunction(u?: U) { } >localGenericFunction : Symbol(localGenericFunction, Decl(methodContainingLocalFunction.ts, 19, 25)) @@ -66,7 +66,7 @@ class C { >C : Symbol(C, Decl(methodContainingLocalFunction.ts, 24, 1)) exhibit() { ->exhibit : Symbol(exhibit, Decl(methodContainingLocalFunction.ts, 26, 9)) +>exhibit : Symbol(C.exhibit, Decl(methodContainingLocalFunction.ts, 26, 9)) var funcExpr = (u?: U) => { }; >funcExpr : Symbol(funcExpr, Decl(methodContainingLocalFunction.ts, 28, 11)) diff --git a/tests/baselines/reference/methodSignatureDeclarationEmit1.symbols b/tests/baselines/reference/methodSignatureDeclarationEmit1.symbols index 80e0d2e1e6c..d562b80d5dc 100644 --- a/tests/baselines/reference/methodSignatureDeclarationEmit1.symbols +++ b/tests/baselines/reference/methodSignatureDeclarationEmit1.symbols @@ -3,15 +3,15 @@ class C { >C : Symbol(C, Decl(methodSignatureDeclarationEmit1.ts, 0, 0)) public foo(n: number): void; ->foo : Symbol(foo, Decl(methodSignatureDeclarationEmit1.ts, 0, 9), Decl(methodSignatureDeclarationEmit1.ts, 1, 30), Decl(methodSignatureDeclarationEmit1.ts, 2, 30)) +>foo : Symbol(C.foo, Decl(methodSignatureDeclarationEmit1.ts, 0, 9), Decl(methodSignatureDeclarationEmit1.ts, 1, 30), Decl(methodSignatureDeclarationEmit1.ts, 2, 30)) >n : Symbol(n, Decl(methodSignatureDeclarationEmit1.ts, 1, 13)) public foo(s: string): void; ->foo : Symbol(foo, Decl(methodSignatureDeclarationEmit1.ts, 0, 9), Decl(methodSignatureDeclarationEmit1.ts, 1, 30), Decl(methodSignatureDeclarationEmit1.ts, 2, 30)) +>foo : Symbol(C.foo, Decl(methodSignatureDeclarationEmit1.ts, 0, 9), Decl(methodSignatureDeclarationEmit1.ts, 1, 30), Decl(methodSignatureDeclarationEmit1.ts, 2, 30)) >s : Symbol(s, Decl(methodSignatureDeclarationEmit1.ts, 2, 13)) public foo(a: any): void { ->foo : Symbol(foo, Decl(methodSignatureDeclarationEmit1.ts, 0, 9), Decl(methodSignatureDeclarationEmit1.ts, 1, 30), Decl(methodSignatureDeclarationEmit1.ts, 2, 30)) +>foo : Symbol(C.foo, Decl(methodSignatureDeclarationEmit1.ts, 0, 9), Decl(methodSignatureDeclarationEmit1.ts, 1, 30), Decl(methodSignatureDeclarationEmit1.ts, 2, 30)) >a : Symbol(a, Decl(methodSignatureDeclarationEmit1.ts, 3, 13)) } } diff --git a/tests/baselines/reference/mismatchedGenericArguments1.symbols b/tests/baselines/reference/mismatchedGenericArguments1.symbols index f540c3d7ccb..f0f7b99759e 100644 --- a/tests/baselines/reference/mismatchedGenericArguments1.symbols +++ b/tests/baselines/reference/mismatchedGenericArguments1.symbols @@ -4,7 +4,7 @@ interface IFoo { >T : Symbol(T, Decl(mismatchedGenericArguments1.ts, 0, 15)) foo(x: T): T; ->foo : Symbol(foo, Decl(mismatchedGenericArguments1.ts, 0, 19)) +>foo : Symbol(IFoo.foo, Decl(mismatchedGenericArguments1.ts, 0, 19)) >T : Symbol(T, Decl(mismatchedGenericArguments1.ts, 1, 7)) >x : Symbol(x, Decl(mismatchedGenericArguments1.ts, 1, 10)) >T : Symbol(T, Decl(mismatchedGenericArguments1.ts, 1, 7)) @@ -17,7 +17,7 @@ class C implements IFoo { >T : Symbol(T, Decl(mismatchedGenericArguments1.ts, 3, 8)) foo(x: string): number { ->foo : Symbol(foo, Decl(mismatchedGenericArguments1.ts, 3, 31)) +>foo : Symbol(C.foo, Decl(mismatchedGenericArguments1.ts, 3, 31)) >x : Symbol(x, Decl(mismatchedGenericArguments1.ts, 4, 7)) return null; @@ -31,7 +31,7 @@ class C2 implements IFoo { >T : Symbol(T, Decl(mismatchedGenericArguments1.ts, 9, 9)) foo(x: string): number { ->foo : Symbol(foo, Decl(mismatchedGenericArguments1.ts, 9, 32)) +>foo : Symbol(C2.foo, Decl(mismatchedGenericArguments1.ts, 9, 32)) >U : Symbol(U, Decl(mismatchedGenericArguments1.ts, 10, 7)) >x : Symbol(x, Decl(mismatchedGenericArguments1.ts, 10, 10)) diff --git a/tests/baselines/reference/missingImportAfterModuleImport.symbols b/tests/baselines/reference/missingImportAfterModuleImport.symbols index 3ed1d93431c..5493d58c528 100644 --- a/tests/baselines/reference/missingImportAfterModuleImport.symbols +++ b/tests/baselines/reference/missingImportAfterModuleImport.symbols @@ -8,7 +8,7 @@ class MainModule { // public static SubModule: SubModule; public SubModule: SubModule; ->SubModule : Symbol(SubModule, Decl(missingImportAfterModuleImport_1.ts, 2, 18)) +>SubModule : Symbol(MainModule.SubModule, Decl(missingImportAfterModuleImport_1.ts, 2, 18)) >SubModule : Symbol(SubModule, Decl(missingImportAfterModuleImport_1.ts, 0, 0)) constructor() { } @@ -27,7 +27,7 @@ declare module "SubModule" { >StaticVar : Symbol(SubModule.StaticVar, Decl(missingImportAfterModuleImport_0.ts, 2, 21)) public InstanceVar: number; ->InstanceVar : Symbol(InstanceVar, Decl(missingImportAfterModuleImport_0.ts, 3, 40)) +>InstanceVar : Symbol(SubModule.InstanceVar, Decl(missingImportAfterModuleImport_0.ts, 3, 40)) constructor(); } diff --git a/tests/baselines/reference/missingSelf.symbols b/tests/baselines/reference/missingSelf.symbols index b4b5bd0b905..8822ca416c0 100644 --- a/tests/baselines/reference/missingSelf.symbols +++ b/tests/baselines/reference/missingSelf.symbols @@ -3,26 +3,26 @@ class CalcButton >CalcButton : Symbol(CalcButton, Decl(missingSelf.ts, 0, 0)) { public a() { this.onClick(); } ->a : Symbol(a, Decl(missingSelf.ts, 1, 1)) ->this.onClick : Symbol(onClick, Decl(missingSelf.ts, 2, 34)) +>a : Symbol(CalcButton.a, Decl(missingSelf.ts, 1, 1)) +>this.onClick : Symbol(CalcButton.onClick, Decl(missingSelf.ts, 2, 34)) >this : Symbol(CalcButton, Decl(missingSelf.ts, 0, 0)) ->onClick : Symbol(onClick, Decl(missingSelf.ts, 2, 34)) +>onClick : Symbol(CalcButton.onClick, Decl(missingSelf.ts, 2, 34)) public onClick() { } ->onClick : Symbol(onClick, Decl(missingSelf.ts, 2, 34)) +>onClick : Symbol(CalcButton.onClick, Decl(missingSelf.ts, 2, 34)) } class CalcButton2 >CalcButton2 : Symbol(CalcButton2, Decl(missingSelf.ts, 4, 1)) { public b() { () => this.onClick(); } ->b : Symbol(b, Decl(missingSelf.ts, 7, 1)) ->this.onClick : Symbol(onClick, Decl(missingSelf.ts, 8, 40)) +>b : Symbol(CalcButton2.b, Decl(missingSelf.ts, 7, 1)) +>this.onClick : Symbol(CalcButton2.onClick, Decl(missingSelf.ts, 8, 40)) >this : Symbol(CalcButton2, Decl(missingSelf.ts, 4, 1)) ->onClick : Symbol(onClick, Decl(missingSelf.ts, 8, 40)) +>onClick : Symbol(CalcButton2.onClick, Decl(missingSelf.ts, 8, 40)) public onClick() { } ->onClick : Symbol(onClick, Decl(missingSelf.ts, 8, 40)) +>onClick : Symbol(CalcButton2.onClick, Decl(missingSelf.ts, 8, 40)) } var c = new CalcButton(); diff --git a/tests/baselines/reference/missingTypeArguments3.symbols b/tests/baselines/reference/missingTypeArguments3.symbols index 4bd7943eace..d23f8da313f 100644 --- a/tests/baselines/reference/missingTypeArguments3.symbols +++ b/tests/baselines/reference/missingTypeArguments3.symbols @@ -7,13 +7,13 @@ declare module linq { >T : Symbol(T, Decl(missingTypeArguments3.ts, 2, 25)) OrderByDescending(keySelector?: string): OrderedEnumerable; ->OrderByDescending : Symbol(OrderByDescending, Decl(missingTypeArguments3.ts, 2, 29)) +>OrderByDescending : Symbol(Enumerable.OrderByDescending, Decl(missingTypeArguments3.ts, 2, 29)) >keySelector : Symbol(keySelector, Decl(missingTypeArguments3.ts, 3, 26)) >OrderedEnumerable : Symbol(OrderedEnumerable, Decl(missingTypeArguments3.ts, 7, 5)) >T : Symbol(T, Decl(missingTypeArguments3.ts, 2, 25)) GroupBy(keySelector: (element: T) => TKey): Enumerable>; ->GroupBy : Symbol(GroupBy, Decl(missingTypeArguments3.ts, 3, 70), Decl(missingTypeArguments3.ts, 4, 88)) +>GroupBy : Symbol(Enumerable.GroupBy, Decl(missingTypeArguments3.ts, 3, 70), Decl(missingTypeArguments3.ts, 4, 88)) >TKey : Symbol(TKey, Decl(missingTypeArguments3.ts, 4, 16)) >keySelector : Symbol(keySelector, Decl(missingTypeArguments3.ts, 4, 22)) >element : Symbol(element, Decl(missingTypeArguments3.ts, 4, 36)) @@ -25,7 +25,7 @@ declare module linq { >T : Symbol(T, Decl(missingTypeArguments3.ts, 2, 25)) GroupBy(keySelector: (element: T) => TKey, elementSelector: (element: T) => TElement): Enumerable>; ->GroupBy : Symbol(GroupBy, Decl(missingTypeArguments3.ts, 3, 70), Decl(missingTypeArguments3.ts, 4, 88)) +>GroupBy : Symbol(Enumerable.GroupBy, Decl(missingTypeArguments3.ts, 3, 70), Decl(missingTypeArguments3.ts, 4, 88)) >TKey : Symbol(TKey, Decl(missingTypeArguments3.ts, 5, 16)) >TElement : Symbol(TElement, Decl(missingTypeArguments3.ts, 5, 21)) >keySelector : Symbol(keySelector, Decl(missingTypeArguments3.ts, 5, 32)) @@ -42,7 +42,7 @@ declare module linq { >TElement : Symbol(TElement, Decl(missingTypeArguments3.ts, 5, 21)) ToDictionary(keySelector: (element: T) => TKey): Dictionary; ->ToDictionary : Symbol(ToDictionary, Decl(missingTypeArguments3.ts, 5, 148)) +>ToDictionary : Symbol(Enumerable.ToDictionary, Decl(missingTypeArguments3.ts, 5, 148)) >TKey : Symbol(TKey, Decl(missingTypeArguments3.ts, 6, 21)) >keySelector : Symbol(keySelector, Decl(missingTypeArguments3.ts, 6, 27)) >element : Symbol(element, Decl(missingTypeArguments3.ts, 6, 41)) @@ -60,7 +60,7 @@ declare module linq { >T : Symbol(T, Decl(missingTypeArguments3.ts, 9, 32)) ThenBy(keySelector: (element: T) => TCompare): OrderedEnumerable; // used to incorrectly think this was missing a type argument ->ThenBy : Symbol(ThenBy, Decl(missingTypeArguments3.ts, 9, 58)) +>ThenBy : Symbol(OrderedEnumerable.ThenBy, Decl(missingTypeArguments3.ts, 9, 58)) >TCompare : Symbol(TCompare, Decl(missingTypeArguments3.ts, 10, 15)) >keySelector : Symbol(keySelector, Decl(missingTypeArguments3.ts, 10, 25)) >element : Symbol(element, Decl(missingTypeArguments3.ts, 10, 39)) @@ -78,7 +78,7 @@ declare module linq { >TElement : Symbol(TElement, Decl(missingTypeArguments3.ts, 13, 28)) Key(): TKey; ->Key : Symbol(Key, Decl(missingTypeArguments3.ts, 13, 69)) +>Key : Symbol(Grouping.Key, Decl(missingTypeArguments3.ts, 13, 69)) >TKey : Symbol(TKey, Decl(missingTypeArguments3.ts, 13, 23)) } @@ -88,19 +88,19 @@ declare module linq { >TElement : Symbol(TElement, Decl(missingTypeArguments3.ts, 17, 26)) Count(): number; ->Count : Symbol(Count, Decl(missingTypeArguments3.ts, 17, 38)) +>Count : Symbol(Lookup.Count, Decl(missingTypeArguments3.ts, 17, 38)) Get(key): Enumerable; ->Get : Symbol(Get, Decl(missingTypeArguments3.ts, 18, 24)) +>Get : Symbol(Lookup.Get, Decl(missingTypeArguments3.ts, 18, 24)) >key : Symbol(key, Decl(missingTypeArguments3.ts, 19, 12)) >Enumerable : Symbol(Enumerable, Decl(missingTypeArguments3.ts, 0, 21)) Contains(key): boolean; ->Contains : Symbol(Contains, Decl(missingTypeArguments3.ts, 19, 34)) +>Contains : Symbol(Lookup.Contains, Decl(missingTypeArguments3.ts, 19, 34)) >key : Symbol(key, Decl(missingTypeArguments3.ts, 20, 17)) ToEnumerable(): Enumerable>; ->ToEnumerable : Symbol(ToEnumerable, Decl(missingTypeArguments3.ts, 20, 31)) +>ToEnumerable : Symbol(Lookup.ToEnumerable, Decl(missingTypeArguments3.ts, 20, 31)) >Enumerable : Symbol(Enumerable, Decl(missingTypeArguments3.ts, 0, 21)) >Grouping : Symbol(Grouping, Decl(missingTypeArguments3.ts, 11, 5)) >TKey : Symbol(TKey, Decl(missingTypeArguments3.ts, 17, 21)) @@ -112,43 +112,43 @@ declare module linq { >TValue : Symbol(TValue, Decl(missingTypeArguments3.ts, 24, 30)) Add(key: TKey, value: TValue): void; ->Add : Symbol(Add, Decl(missingTypeArguments3.ts, 24, 40)) +>Add : Symbol(Dictionary.Add, Decl(missingTypeArguments3.ts, 24, 40)) >key : Symbol(key, Decl(missingTypeArguments3.ts, 25, 12)) >TKey : Symbol(TKey, Decl(missingTypeArguments3.ts, 24, 25)) >value : Symbol(value, Decl(missingTypeArguments3.ts, 25, 22)) >TValue : Symbol(TValue, Decl(missingTypeArguments3.ts, 24, 30)) Get(ke: TKey): TValue; ->Get : Symbol(Get, Decl(missingTypeArguments3.ts, 25, 44)) +>Get : Symbol(Dictionary.Get, Decl(missingTypeArguments3.ts, 25, 44)) >ke : Symbol(ke, Decl(missingTypeArguments3.ts, 26, 12)) >TKey : Symbol(TKey, Decl(missingTypeArguments3.ts, 24, 25)) >TValue : Symbol(TValue, Decl(missingTypeArguments3.ts, 24, 30)) Set(key: TKey, value: TValue): boolean; ->Set : Symbol(Set, Decl(missingTypeArguments3.ts, 26, 30)) +>Set : Symbol(Dictionary.Set, Decl(missingTypeArguments3.ts, 26, 30)) >key : Symbol(key, Decl(missingTypeArguments3.ts, 27, 12)) >TKey : Symbol(TKey, Decl(missingTypeArguments3.ts, 24, 25)) >value : Symbol(value, Decl(missingTypeArguments3.ts, 27, 22)) >TValue : Symbol(TValue, Decl(missingTypeArguments3.ts, 24, 30)) Contains(key: TKey): boolean; ->Contains : Symbol(Contains, Decl(missingTypeArguments3.ts, 27, 47)) +>Contains : Symbol(Dictionary.Contains, Decl(missingTypeArguments3.ts, 27, 47)) >key : Symbol(key, Decl(missingTypeArguments3.ts, 28, 17)) >TKey : Symbol(TKey, Decl(missingTypeArguments3.ts, 24, 25)) Clear(): void; ->Clear : Symbol(Clear, Decl(missingTypeArguments3.ts, 28, 37)) +>Clear : Symbol(Dictionary.Clear, Decl(missingTypeArguments3.ts, 28, 37)) Remove(key: TKey): void; ->Remove : Symbol(Remove, Decl(missingTypeArguments3.ts, 29, 22)) +>Remove : Symbol(Dictionary.Remove, Decl(missingTypeArguments3.ts, 29, 22)) >key : Symbol(key, Decl(missingTypeArguments3.ts, 30, 15)) >TKey : Symbol(TKey, Decl(missingTypeArguments3.ts, 24, 25)) Count(): number; ->Count : Symbol(Count, Decl(missingTypeArguments3.ts, 30, 32)) +>Count : Symbol(Dictionary.Count, Decl(missingTypeArguments3.ts, 30, 32)) ToEnumerable(): Enumerable>; ->ToEnumerable : Symbol(ToEnumerable, Decl(missingTypeArguments3.ts, 31, 24)) +>ToEnumerable : Symbol(Dictionary.ToEnumerable, Decl(missingTypeArguments3.ts, 31, 24)) >Enumerable : Symbol(Enumerable, Decl(missingTypeArguments3.ts, 0, 21)) >KeyValuePair : Symbol(KeyValuePair, Decl(missingTypeArguments3.ts, 33, 5)) >TKey : Symbol(TKey, Decl(missingTypeArguments3.ts, 24, 25)) @@ -161,11 +161,11 @@ declare module linq { >TValue : Symbol(TValue, Decl(missingTypeArguments3.ts, 35, 32)) Key: TKey; ->Key : Symbol(Key, Decl(missingTypeArguments3.ts, 35, 42)) +>Key : Symbol(KeyValuePair.Key, Decl(missingTypeArguments3.ts, 35, 42)) >TKey : Symbol(TKey, Decl(missingTypeArguments3.ts, 35, 27)) Value: TValue; ->Value : Symbol(Value, Decl(missingTypeArguments3.ts, 36, 18)) +>Value : Symbol(KeyValuePair.Value, Decl(missingTypeArguments3.ts, 36, 18)) >TValue : Symbol(TValue, Decl(missingTypeArguments3.ts, 35, 32)) } } diff --git a/tests/baselines/reference/mixedExports.symbols b/tests/baselines/reference/mixedExports.symbols index 317b60e0a8c..1ebcd5d080a 100644 --- a/tests/baselines/reference/mixedExports.symbols +++ b/tests/baselines/reference/mixedExports.symbols @@ -27,12 +27,12 @@ module A { interface X {x} >X : Symbol(X, Decl(mixedExports.ts, 11, 10), Decl(mixedExports.ts, 12, 20), Decl(mixedExports.ts, 13, 23)) ->x : Symbol(x, Decl(mixedExports.ts, 12, 18)) +>x : Symbol(X.x, Decl(mixedExports.ts, 12, 18)) export module X {} >X : Symbol(X, Decl(mixedExports.ts, 12, 20)) interface X {y} >X : Symbol(X, Decl(mixedExports.ts, 11, 10), Decl(mixedExports.ts, 12, 20), Decl(mixedExports.ts, 13, 23)) ->y : Symbol(y, Decl(mixedExports.ts, 14, 18)) +>y : Symbol(X.y, Decl(mixedExports.ts, 14, 18)) } diff --git a/tests/baselines/reference/modifierOnClassDeclarationMemberInFunction.symbols b/tests/baselines/reference/modifierOnClassDeclarationMemberInFunction.symbols index a411bee09cb..b41f51ffac7 100644 --- a/tests/baselines/reference/modifierOnClassDeclarationMemberInFunction.symbols +++ b/tests/baselines/reference/modifierOnClassDeclarationMemberInFunction.symbols @@ -7,12 +7,12 @@ function f() { >C : Symbol(C, Decl(modifierOnClassDeclarationMemberInFunction.ts, 1, 14)) public baz = 1; ->baz : Symbol(baz, Decl(modifierOnClassDeclarationMemberInFunction.ts, 2, 13)) +>baz : Symbol(C.baz, Decl(modifierOnClassDeclarationMemberInFunction.ts, 2, 13)) static foo() { } >foo : Symbol(C.foo, Decl(modifierOnClassDeclarationMemberInFunction.ts, 3, 23)) public bar() { } ->bar : Symbol(bar, Decl(modifierOnClassDeclarationMemberInFunction.ts, 4, 24)) +>bar : Symbol(C.bar, Decl(modifierOnClassDeclarationMemberInFunction.ts, 4, 24)) } } diff --git a/tests/baselines/reference/modularizeLibrary_ErrorFromUsingES6ArrayWithOnlyES6ArrayLib.errors.txt b/tests/baselines/reference/modularizeLibrary_ErrorFromUsingES6ArrayWithOnlyES6ArrayLib.errors.txt new file mode 100644 index 00000000000..f796092fb14 --- /dev/null +++ b/tests/baselines/reference/modularizeLibrary_ErrorFromUsingES6ArrayWithOnlyES6ArrayLib.errors.txt @@ -0,0 +1,20 @@ +error TS2318: Cannot find global type 'Boolean'. +error TS2318: Cannot find global type 'IArguments'. +error TS2318: Cannot find global type 'Number'. +tests/cases/compiler/modularizeLibrary_ErrorFromUsingES6ArrayWithOnlyES6ArrayLib.ts(4,12): error TS2304: Cannot find name 'Array'. + + +!!! error TS2318: Cannot find global type 'Boolean'. +!!! error TS2318: Cannot find global type 'IArguments'. +!!! error TS2318: Cannot find global type 'Number'. +==== tests/cases/compiler/modularizeLibrary_ErrorFromUsingES6ArrayWithOnlyES6ArrayLib.ts (1 errors) ==== + + // Error missing basic JavaScript objects + function f(x: number, y: number, z: number) { + return Array.from(arguments); + ~~~~~ +!!! error TS2304: Cannot find name 'Array'. + } + + f(1, 2, 3); + \ No newline at end of file diff --git a/tests/baselines/reference/modularizeLibrary_ErrorFromUsingES6ArrayWithOnlyES6ArrayLib.js b/tests/baselines/reference/modularizeLibrary_ErrorFromUsingES6ArrayWithOnlyES6ArrayLib.js new file mode 100644 index 00000000000..61591a5f7e1 --- /dev/null +++ b/tests/baselines/reference/modularizeLibrary_ErrorFromUsingES6ArrayWithOnlyES6ArrayLib.js @@ -0,0 +1,16 @@ +//// [modularizeLibrary_ErrorFromUsingES6ArrayWithOnlyES6ArrayLib.ts] + +// Error missing basic JavaScript objects +function f(x: number, y: number, z: number) { + return Array.from(arguments); +} + +f(1, 2, 3); + + +//// [modularizeLibrary_ErrorFromUsingES6ArrayWithOnlyES6ArrayLib.js] +// Error missing basic JavaScript objects +function f(x, y, z) { + return Array.from(arguments); +} +f(1, 2, 3); diff --git a/tests/baselines/reference/modularizeLibrary_ErrorFromUsingES6FeaturesWithOnlyES5Lib.errors.txt b/tests/baselines/reference/modularizeLibrary_ErrorFromUsingES6FeaturesWithOnlyES5Lib.errors.txt new file mode 100644 index 00000000000..c8a69546ee0 --- /dev/null +++ b/tests/baselines/reference/modularizeLibrary_ErrorFromUsingES6FeaturesWithOnlyES5Lib.errors.txt @@ -0,0 +1,94 @@ +tests/cases/compiler/modularizeLibrary_ErrorFromUsingES6FeaturesWithOnlyES5Lib.ts(5,18): error TS2339: Property 'from' does not exist on type 'ArrayConstructor'. +tests/cases/compiler/modularizeLibrary_ErrorFromUsingES6FeaturesWithOnlyES5Lib.ts(11,13): error TS2304: Cannot find name 'Map'. +tests/cases/compiler/modularizeLibrary_ErrorFromUsingES6FeaturesWithOnlyES5Lib.ts(18,5): error TS2339: Property 'name' does not exist on type '() => void'. +tests/cases/compiler/modularizeLibrary_ErrorFromUsingES6FeaturesWithOnlyES5Lib.ts(21,6): error TS2339: Property 'sign' does not exist on type 'Math'. +tests/cases/compiler/modularizeLibrary_ErrorFromUsingES6FeaturesWithOnlyES5Lib.ts(26,6): error TS2304: Cannot find name 'Symbol'. +tests/cases/compiler/modularizeLibrary_ErrorFromUsingES6FeaturesWithOnlyES5Lib.ts(30,18): error TS2304: Cannot find name 'Symbol'. +tests/cases/compiler/modularizeLibrary_ErrorFromUsingES6FeaturesWithOnlyES5Lib.ts(34,13): error TS2304: Cannot find name 'Proxy'. +tests/cases/compiler/modularizeLibrary_ErrorFromUsingES6FeaturesWithOnlyES5Lib.ts(37,1): error TS2304: Cannot find name 'Reflect'. +tests/cases/compiler/modularizeLibrary_ErrorFromUsingES6FeaturesWithOnlyES5Lib.ts(41,5): error TS2339: Property 'flags' does not exist on type 'RegExp'. +tests/cases/compiler/modularizeLibrary_ErrorFromUsingES6FeaturesWithOnlyES5Lib.ts(45,5): error TS2339: Property 'includes' does not exist on type 'string'. +tests/cases/compiler/modularizeLibrary_ErrorFromUsingES6FeaturesWithOnlyES5Lib.ts(48,9): error TS2304: Cannot find name 'Symbol'. +tests/cases/compiler/modularizeLibrary_ErrorFromUsingES6FeaturesWithOnlyES5Lib.ts(52,6): error TS2304: Cannot find name 'Symbol'. + + +==== tests/cases/compiler/modularizeLibrary_ErrorFromUsingES6FeaturesWithOnlyES5Lib.ts (12 errors) ==== + + // All will be error from using ES6 features but only include ES5 library + // Using Es6 array + function f(x: number, y: number, z: number) { + return Array.from(arguments); + ~~~~ +!!! error TS2339: Property 'from' does not exist on type 'ArrayConstructor'. + } + + f(1, 2, 3); // no error + + // Using ES6 collection + var m = new Map(); + ~~~ +!!! error TS2304: Cannot find name 'Map'. + m.clear(); + // Using ES6 iterable + m.keys(); + + // Using ES6 function + function Baz() { } + Baz.name; + ~~~~ +!!! error TS2339: Property 'name' does not exist on type '() => void'. + + // Using ES6 math + Math.sign(1); + ~~~~ +!!! error TS2339: Property 'sign' does not exist on type 'Math'. + + // Using ES6 object + var o = { + a: 2, + [Symbol.hasInstance](value: any) { + ~~~~~~ +!!! error TS2304: Cannot find name 'Symbol'. + return false; + } + }; + o.hasOwnProperty(Symbol.hasInstance); + ~~~~~~ +!!! error TS2304: Cannot find name 'Symbol'. + + // Using Es6 proxy + var t = {} + var p = new Proxy(t, {}); + ~~~~~ +!!! error TS2304: Cannot find name 'Proxy'. + + // Using ES6 reflect + Reflect.isExtensible({}); + ~~~~~~~ +!!! error TS2304: Cannot find name 'Reflect'. + + // Using Es6 regexp + var reg = new RegExp("/s"); + reg.flags; + ~~~~~ +!!! error TS2339: Property 'flags' does not exist on type 'RegExp'. + + // Using ES6 string + var str = "Hello world"; + str.includes("hello", 0); + ~~~~~~~~ +!!! error TS2339: Property 'includes' does not exist on type 'string'. + + // Using ES6 symbol + var s = Symbol(); + ~~~~~~ +!!! error TS2304: Cannot find name 'Symbol'. + + // Using ES6 wellknown-symbol + const o1 = { + [Symbol.hasInstance](value: any) { + ~~~~~~ +!!! error TS2304: Cannot find name 'Symbol'. + return false; + } + } \ No newline at end of file diff --git a/tests/baselines/reference/modularizeLibrary_ErrorFromUsingES6FeaturesWithOnlyES5Lib.js b/tests/baselines/reference/modularizeLibrary_ErrorFromUsingES6FeaturesWithOnlyES5Lib.js new file mode 100644 index 00000000000..257df4278fe --- /dev/null +++ b/tests/baselines/reference/modularizeLibrary_ErrorFromUsingES6FeaturesWithOnlyES5Lib.js @@ -0,0 +1,101 @@ +//// [modularizeLibrary_ErrorFromUsingES6FeaturesWithOnlyES5Lib.ts] + +// All will be error from using ES6 features but only include ES5 library +// Using Es6 array +function f(x: number, y: number, z: number) { + return Array.from(arguments); +} + +f(1, 2, 3); // no error + +// Using ES6 collection +var m = new Map(); +m.clear(); +// Using ES6 iterable +m.keys(); + +// Using ES6 function +function Baz() { } +Baz.name; + +// Using ES6 math +Math.sign(1); + +// Using ES6 object +var o = { + a: 2, + [Symbol.hasInstance](value: any) { + return false; + } +}; +o.hasOwnProperty(Symbol.hasInstance); + +// Using Es6 proxy +var t = {} +var p = new Proxy(t, {}); + +// Using ES6 reflect +Reflect.isExtensible({}); + +// Using Es6 regexp +var reg = new RegExp("/s"); +reg.flags; + +// Using ES6 string +var str = "Hello world"; +str.includes("hello", 0); + +// Using ES6 symbol +var s = Symbol(); + +// Using ES6 wellknown-symbol +const o1 = { + [Symbol.hasInstance](value: any) { + return false; + } +} + +//// [modularizeLibrary_ErrorFromUsingES6FeaturesWithOnlyES5Lib.js] +// All will be error from using ES6 features but only include ES5 library +// Using Es6 array +function f(x, y, z) { + return Array.from(arguments); +} +f(1, 2, 3); // no error +// Using ES6 collection +var m = new Map(); +m.clear(); +// Using ES6 iterable +m.keys(); +// Using ES6 function +function Baz() { } +Baz.name; +// Using ES6 math +Math.sign(1); +// Using ES6 object +var o = { + a: 2, + [Symbol.hasInstance](value) { + return false; + } +}; +o.hasOwnProperty(Symbol.hasInstance); +// Using Es6 proxy +var t = {}; +var p = new Proxy(t, {}); +// Using ES6 reflect +Reflect.isExtensible({}); +// Using Es6 regexp +var reg = new RegExp("/s"); +reg.flags; +// Using ES6 string +var str = "Hello world"; +str.includes("hello", 0); +// Using ES6 symbol +var s = Symbol(); +// Using ES6 wellknown-symbol +const o1 = { + [Symbol.hasInstance](value) { + return false; + } +}; diff --git a/tests/baselines/reference/modularizeLibrary_ErrorFromUsingWellknownSymbolWithOutES6WellknownSymbolLib.errors.txt b/tests/baselines/reference/modularizeLibrary_ErrorFromUsingWellknownSymbolWithOutES6WellknownSymbolLib.errors.txt new file mode 100644 index 00000000000..b5da9f97867 --- /dev/null +++ b/tests/baselines/reference/modularizeLibrary_ErrorFromUsingWellknownSymbolWithOutES6WellknownSymbolLib.errors.txt @@ -0,0 +1,17 @@ +tests/cases/compiler/modularizeLibrary_ErrorFromUsingWellknownSymbolWithOutES6WellknownSymbolLib.ts(8,1): error TS2322: Type 'boolean' is not assignable to type 'string'. +tests/cases/compiler/modularizeLibrary_ErrorFromUsingWellknownSymbolWithOutES6WellknownSymbolLib.ts(8,3): error TS2304: Cannot find name 'Symbol'. + + +==== tests/cases/compiler/modularizeLibrary_ErrorFromUsingWellknownSymbolWithOutES6WellknownSymbolLib.ts (2 errors) ==== + + function f(x: number, y: number, z: number) { + return Array.from(arguments); + } + + f(1, 2, 3); // no error + let a = ['c', 'd']; + a[Symbol.isConcatSpreadable] = false; + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS2322: Type 'boolean' is not assignable to type 'string'. + ~~~~~~ +!!! error TS2304: Cannot find name 'Symbol'. \ No newline at end of file diff --git a/tests/baselines/reference/modularizeLibrary_ErrorFromUsingWellknownSymbolWithOutES6WellknownSymbolLib.js b/tests/baselines/reference/modularizeLibrary_ErrorFromUsingWellknownSymbolWithOutES6WellknownSymbolLib.js new file mode 100644 index 00000000000..e150560cc6a --- /dev/null +++ b/tests/baselines/reference/modularizeLibrary_ErrorFromUsingWellknownSymbolWithOutES6WellknownSymbolLib.js @@ -0,0 +1,17 @@ +//// [modularizeLibrary_ErrorFromUsingWellknownSymbolWithOutES6WellknownSymbolLib.ts] + +function f(x: number, y: number, z: number) { + return Array.from(arguments); +} + +f(1, 2, 3); // no error +let a = ['c', 'd']; +a[Symbol.isConcatSpreadable] = false; + +//// [modularizeLibrary_ErrorFromUsingWellknownSymbolWithOutES6WellknownSymbolLib.js] +function f(x, y, z) { + return Array.from(arguments); +} +f(1, 2, 3); // no error +var a = ['c', 'd']; +a[Symbol.isConcatSpreadable] = false; diff --git a/tests/baselines/reference/modularizeLibrary_NoErrorDuplicateLibOptions1.js b/tests/baselines/reference/modularizeLibrary_NoErrorDuplicateLibOptions1.js new file mode 100644 index 00000000000..9a5ed619b2d --- /dev/null +++ b/tests/baselines/reference/modularizeLibrary_NoErrorDuplicateLibOptions1.js @@ -0,0 +1,158 @@ +//// [modularizeLibrary_NoErrorDuplicateLibOptions1.ts] + +// Using Es6 array +function f(x: number, y: number, z: number) { + return Array.from(arguments); +} + +f(1, 2, 3); // no error + +// Using ES6 collection +var m = new Map(); +m.clear(); +// Using ES6 iterable +m.keys(); + +// Using ES6 function +function Baz() { } +Baz.name; + +// Using ES6 generator +function* gen() { + let i = 0; + while (i < 10) { + yield i; + i++; + } +} + +function* gen2() { + let i = 0; + while (i < 10) { + yield i; + i++; + } +} + +// Using ES6 math +Math.sign(1); + +// Using ES6 object +var o = { + a: 2, + [Symbol.hasInstance](value: any) { + return false; + } +}; +o.hasOwnProperty(Symbol.hasInstance); + +// Using ES6 promise +async function out() { + return new Promise(function (resolve, reject) {}); +} + +declare var console: any; +out().then(() => { + console.log("Yea!"); +}); + +// Using Es6 proxy +var t = {} +var p = new Proxy(t, {}); + +// Using ES6 reflect +Reflect.isExtensible({}); + +// Using Es6 regexp +var reg = new RegExp("/s"); +reg.flags; + +// Using ES6 string +var str = "Hello world"; +str.includes("hello", 0); + +// Using ES6 symbol +var s = Symbol(); + +// Using ES6 wellknown-symbol +const o1 = { + [Symbol.hasInstance](value: any) { + return false; + } +} + +//// [modularizeLibrary_NoErrorDuplicateLibOptions1.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()); + }); +}; +// Using Es6 array +function f(x, y, z) { + return Array.from(arguments); +} +f(1, 2, 3); // no error +// Using ES6 collection +var m = new Map(); +m.clear(); +// Using ES6 iterable +m.keys(); +// Using ES6 function +function Baz() { } +Baz.name; +// Using ES6 generator +function* gen() { + let i = 0; + while (i < 10) { + yield i; + i++; + } +} +function* gen2() { + let i = 0; + while (i < 10) { + yield i; + i++; + } +} +// Using ES6 math +Math.sign(1); +// Using ES6 object +var o = { + a: 2, + [Symbol.hasInstance](value) { + return false; + } +}; +o.hasOwnProperty(Symbol.hasInstance); +// Using ES6 promise +function out() { + return __awaiter(this, void 0, void 0, function* () { + return new Promise(function (resolve, reject) { }); + }); +} +out().then(() => { + console.log("Yea!"); +}); +// Using Es6 proxy +var t = {}; +var p = new Proxy(t, {}); +// Using ES6 reflect +Reflect.isExtensible({}); +// Using Es6 regexp +var reg = new RegExp("/s"); +reg.flags; +// Using ES6 string +var str = "Hello world"; +str.includes("hello", 0); +// Using ES6 symbol +var s = Symbol(); +// Using ES6 wellknown-symbol +const o1 = { + [Symbol.hasInstance](value) { + return false; + } +}; diff --git a/tests/baselines/reference/modularizeLibrary_NoErrorDuplicateLibOptions1.symbols b/tests/baselines/reference/modularizeLibrary_NoErrorDuplicateLibOptions1.symbols new file mode 100644 index 00000000000..3bbe91bc9fa --- /dev/null +++ b/tests/baselines/reference/modularizeLibrary_NoErrorDuplicateLibOptions1.symbols @@ -0,0 +1,184 @@ +=== tests/cases/compiler/modularizeLibrary_NoErrorDuplicateLibOptions1.ts === + +// Using Es6 array +function f(x: number, y: number, z: number) { +>f : Symbol(f, Decl(modularizeLibrary_NoErrorDuplicateLibOptions1.ts, 0, 0)) +>x : Symbol(x, Decl(modularizeLibrary_NoErrorDuplicateLibOptions1.ts, 2, 11)) +>y : Symbol(y, Decl(modularizeLibrary_NoErrorDuplicateLibOptions1.ts, 2, 21)) +>z : Symbol(z, Decl(modularizeLibrary_NoErrorDuplicateLibOptions1.ts, 2, 32)) + + return Array.from(arguments); +>Array.from : Symbol(ArrayConstructor.from, Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --)) +>Array : Symbol(Array, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) +>from : Symbol(ArrayConstructor.from, Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --)) +>arguments : Symbol(arguments) +} + +f(1, 2, 3); // no error +>f : Symbol(f, Decl(modularizeLibrary_NoErrorDuplicateLibOptions1.ts, 0, 0)) + +// Using ES6 collection +var m = new Map(); +>m : Symbol(m, Decl(modularizeLibrary_NoErrorDuplicateLibOptions1.ts, 9, 3)) +>Map : Symbol(Map, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.collection.d.ts, --, --), Decl(lib.es2015.collection.d.ts, --, --)) + +m.clear(); +>m.clear : Symbol(Map.clear, Decl(lib.es2015.collection.d.ts, --, --)) +>m : Symbol(m, Decl(modularizeLibrary_NoErrorDuplicateLibOptions1.ts, 9, 3)) +>clear : Symbol(Map.clear, Decl(lib.es2015.collection.d.ts, --, --)) + +// Using ES6 iterable +m.keys(); +>m.keys : Symbol(Map.keys, Decl(lib.es2015.iterable.d.ts, --, --)) +>m : Symbol(m, Decl(modularizeLibrary_NoErrorDuplicateLibOptions1.ts, 9, 3)) +>keys : Symbol(Map.keys, Decl(lib.es2015.iterable.d.ts, --, --)) + +// Using ES6 function +function Baz() { } +>Baz : Symbol(Baz, Decl(modularizeLibrary_NoErrorDuplicateLibOptions1.ts, 12, 9)) + +Baz.name; +>Baz.name : Symbol(Function.name, Decl(lib.es2015.core.d.ts, --, --)) +>Baz : Symbol(Baz, Decl(modularizeLibrary_NoErrorDuplicateLibOptions1.ts, 12, 9)) +>name : Symbol(Function.name, Decl(lib.es2015.core.d.ts, --, --)) + +// Using ES6 generator +function* gen() { +>gen : Symbol(gen, Decl(modularizeLibrary_NoErrorDuplicateLibOptions1.ts, 16, 9)) + + let i = 0; +>i : Symbol(i, Decl(modularizeLibrary_NoErrorDuplicateLibOptions1.ts, 20, 7)) + + while (i < 10) { +>i : Symbol(i, Decl(modularizeLibrary_NoErrorDuplicateLibOptions1.ts, 20, 7)) + + yield i; +>i : Symbol(i, Decl(modularizeLibrary_NoErrorDuplicateLibOptions1.ts, 20, 7)) + + i++; +>i : Symbol(i, Decl(modularizeLibrary_NoErrorDuplicateLibOptions1.ts, 20, 7)) + } +} + +function* gen2() { +>gen2 : Symbol(gen2, Decl(modularizeLibrary_NoErrorDuplicateLibOptions1.ts, 25, 1)) + + let i = 0; +>i : Symbol(i, Decl(modularizeLibrary_NoErrorDuplicateLibOptions1.ts, 28, 7)) + + while (i < 10) { +>i : Symbol(i, Decl(modularizeLibrary_NoErrorDuplicateLibOptions1.ts, 28, 7)) + + yield i; +>i : Symbol(i, Decl(modularizeLibrary_NoErrorDuplicateLibOptions1.ts, 28, 7)) + + i++; +>i : Symbol(i, Decl(modularizeLibrary_NoErrorDuplicateLibOptions1.ts, 28, 7)) + } +} + +// Using ES6 math +Math.sign(1); +>Math.sign : Symbol(Math.sign, Decl(lib.es2015.core.d.ts, --, --)) +>Math : Symbol(Math, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) +>sign : Symbol(Math.sign, Decl(lib.es2015.core.d.ts, --, --)) + +// Using ES6 object +var o = { +>o : Symbol(o, Decl(modularizeLibrary_NoErrorDuplicateLibOptions1.ts, 39, 3)) + + a: 2, +>a : Symbol(a, Decl(modularizeLibrary_NoErrorDuplicateLibOptions1.ts, 39, 9)) + + [Symbol.hasInstance](value: any) { +>Symbol.hasInstance : Symbol(SymbolConstructor.hasInstance, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>hasInstance : Symbol(SymbolConstructor.hasInstance, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>value : Symbol(value, Decl(modularizeLibrary_NoErrorDuplicateLibOptions1.ts, 41, 25)) + + return false; + } +}; +o.hasOwnProperty(Symbol.hasInstance); +>o.hasOwnProperty : Symbol(Object.hasOwnProperty, Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) +>o : Symbol(o, Decl(modularizeLibrary_NoErrorDuplicateLibOptions1.ts, 39, 3)) +>hasOwnProperty : Symbol(Object.hasOwnProperty, Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) +>Symbol.hasInstance : Symbol(SymbolConstructor.hasInstance, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>hasInstance : Symbol(SymbolConstructor.hasInstance, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) + +// Using ES6 promise +async function out() { +>out : Symbol(out, Decl(modularizeLibrary_NoErrorDuplicateLibOptions1.ts, 45, 37)) + + return new Promise(function (resolve, reject) {}); +>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(resolve, Decl(modularizeLibrary_NoErrorDuplicateLibOptions1.ts, 49, 33)) +>reject : Symbol(reject, Decl(modularizeLibrary_NoErrorDuplicateLibOptions1.ts, 49, 41)) +} + +declare var console: any; +>console : Symbol(console, Decl(modularizeLibrary_NoErrorDuplicateLibOptions1.ts, 52, 11)) + +out().then(() => { +>out().then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) +>out : Symbol(out, Decl(modularizeLibrary_NoErrorDuplicateLibOptions1.ts, 45, 37)) +>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) + + console.log("Yea!"); +>console : Symbol(console, Decl(modularizeLibrary_NoErrorDuplicateLibOptions1.ts, 52, 11)) + +}); + +// Using Es6 proxy +var t = {} +>t : Symbol(t, Decl(modularizeLibrary_NoErrorDuplicateLibOptions1.ts, 58, 3)) + +var p = new Proxy(t, {}); +>p : Symbol(p, Decl(modularizeLibrary_NoErrorDuplicateLibOptions1.ts, 59, 3)) +>Proxy : Symbol(Proxy, Decl(lib.es2015.proxy.d.ts, --, --)) +>t : Symbol(t, Decl(modularizeLibrary_NoErrorDuplicateLibOptions1.ts, 58, 3)) + +// Using ES6 reflect +Reflect.isExtensible({}); +>Reflect.isExtensible : Symbol(Reflect.isExtensible, Decl(lib.es2015.reflect.d.ts, --, --)) +>Reflect : Symbol(Reflect, Decl(lib.es2015.reflect.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>isExtensible : Symbol(Reflect.isExtensible, Decl(lib.es2015.reflect.d.ts, --, --)) + +// Using Es6 regexp +var reg = new RegExp("/s"); +>reg : Symbol(reg, Decl(modularizeLibrary_NoErrorDuplicateLibOptions1.ts, 65, 3)) +>RegExp : Symbol(RegExp, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) + +reg.flags; +>reg.flags : Symbol(RegExp.flags, Decl(lib.es2015.core.d.ts, --, --)) +>reg : Symbol(reg, Decl(modularizeLibrary_NoErrorDuplicateLibOptions1.ts, 65, 3)) +>flags : Symbol(RegExp.flags, Decl(lib.es2015.core.d.ts, --, --)) + +// Using ES6 string +var str = "Hello world"; +>str : Symbol(str, Decl(modularizeLibrary_NoErrorDuplicateLibOptions1.ts, 69, 3)) + +str.includes("hello", 0); +>str.includes : Symbol(String.includes, Decl(lib.es2015.core.d.ts, --, --)) +>str : Symbol(str, Decl(modularizeLibrary_NoErrorDuplicateLibOptions1.ts, 69, 3)) +>includes : Symbol(String.includes, Decl(lib.es2015.core.d.ts, --, --)) + +// Using ES6 symbol +var s = Symbol(); +>s : Symbol(s, Decl(modularizeLibrary_NoErrorDuplicateLibOptions1.ts, 73, 3)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) + +// Using ES6 wellknown-symbol +const o1 = { +>o1 : Symbol(o1, Decl(modularizeLibrary_NoErrorDuplicateLibOptions1.ts, 76, 5)) + + [Symbol.hasInstance](value: any) { +>Symbol.hasInstance : Symbol(SymbolConstructor.hasInstance, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>hasInstance : Symbol(SymbolConstructor.hasInstance, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>value : Symbol(value, Decl(modularizeLibrary_NoErrorDuplicateLibOptions1.ts, 77, 25)) + + return false; + } +} diff --git a/tests/baselines/reference/modularizeLibrary_NoErrorDuplicateLibOptions1.types b/tests/baselines/reference/modularizeLibrary_NoErrorDuplicateLibOptions1.types new file mode 100644 index 00000000000..16051c14b7c --- /dev/null +++ b/tests/baselines/reference/modularizeLibrary_NoErrorDuplicateLibOptions1.types @@ -0,0 +1,231 @@ +=== tests/cases/compiler/modularizeLibrary_NoErrorDuplicateLibOptions1.ts === + +// Using Es6 array +function f(x: number, y: number, z: number) { +>f : (x: number, y: number, z: number) => any[] +>x : number +>y : number +>z : number + + return Array.from(arguments); +>Array.from(arguments) : any[] +>Array.from : { (iterable: Iterable, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; (iterable: Iterable): T[]; (arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; (arrayLike: ArrayLike): T[]; } +>Array : ArrayConstructor +>from : { (iterable: Iterable, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; (iterable: Iterable): T[]; (arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; (arrayLike: ArrayLike): T[]; } +>arguments : IArguments +} + +f(1, 2, 3); // no error +>f(1, 2, 3) : any[] +>f : (x: number, y: number, z: number) => any[] +>1 : number +>2 : number +>3 : number + +// Using ES6 collection +var m = new Map(); +>m : Map +>new Map() : Map +>Map : MapConstructor + +m.clear(); +>m.clear() : void +>m.clear : () => void +>m : Map +>clear : () => void + +// Using ES6 iterable +m.keys(); +>m.keys() : IterableIterator +>m.keys : () => IterableIterator +>m : Map +>keys : () => IterableIterator + +// Using ES6 function +function Baz() { } +>Baz : () => void + +Baz.name; +>Baz.name : string +>Baz : () => void +>name : string + +// Using ES6 generator +function* gen() { +>gen : () => IterableIterator + + let i = 0; +>i : number +>0 : number + + while (i < 10) { +>i < 10 : boolean +>i : number +>10 : number + + yield i; +>yield i : any +>i : number + + i++; +>i++ : number +>i : number + } +} + +function* gen2() { +>gen2 : () => IterableIterator + + let i = 0; +>i : number +>0 : number + + while (i < 10) { +>i < 10 : boolean +>i : number +>10 : number + + yield i; +>yield i : any +>i : number + + i++; +>i++ : number +>i : number + } +} + +// Using ES6 math +Math.sign(1); +>Math.sign(1) : number +>Math.sign : (x: number) => number +>Math : Math +>sign : (x: number) => number +>1 : number + +// Using ES6 object +var o = { +>o : { a: number; [Symbol.hasInstance](value: any): boolean; } +>{ a: 2, [Symbol.hasInstance](value: any) { return false; }} : { a: number; [Symbol.hasInstance](value: any): boolean; } + + a: 2, +>a : number +>2 : number + + [Symbol.hasInstance](value: any) { +>Symbol.hasInstance : symbol +>Symbol : SymbolConstructor +>hasInstance : symbol +>value : any + + return false; +>false : boolean + } +}; +o.hasOwnProperty(Symbol.hasInstance); +>o.hasOwnProperty(Symbol.hasInstance) : boolean +>o.hasOwnProperty : { (v: string | number | symbol): boolean; (v: string): boolean; } +>o : { a: number; [Symbol.hasInstance](value: any): boolean; } +>hasOwnProperty : { (v: string | number | symbol): boolean; (v: string): boolean; } +>Symbol.hasInstance : symbol +>Symbol : SymbolConstructor +>hasInstance : symbol + +// Using ES6 promise +async function out() { +>out : () => Promise<{}> + + return new Promise(function (resolve, reject) {}); +>new Promise(function (resolve, reject) {}) : Promise<{}> +>Promise : PromiseConstructor +>function (resolve, reject) {} : (resolve: (value?: {} | PromiseLike<{}>) => void, reject: (reason?: any) => void) => void +>resolve : (value?: {} | PromiseLike<{}>) => void +>reject : (reason?: any) => void +} + +declare var console: any; +>console : any + +out().then(() => { +>out().then(() => { console.log("Yea!");}) : Promise +>out().then : { (onfulfilled?: (value: {}) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled?: (value: {}) => TResult | PromiseLike, onrejected?: (reason: any) => void): Promise; } +>out() : Promise<{}> +>out : () => Promise<{}> +>then : { (onfulfilled?: (value: {}) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled?: (value: {}) => TResult | PromiseLike, onrejected?: (reason: any) => void): Promise; } +>() => { console.log("Yea!");} : () => void + + console.log("Yea!"); +>console.log("Yea!") : any +>console.log : any +>console : any +>log : any +>"Yea!" : string + +}); + +// Using Es6 proxy +var t = {} +>t : {} +>{} : {} + +var p = new Proxy(t, {}); +>p : {} +>new Proxy(t, {}) : {} +>Proxy : ProxyConstructor +>t : {} +>{} : {} + +// Using ES6 reflect +Reflect.isExtensible({}); +>Reflect.isExtensible({}) : boolean +>Reflect.isExtensible : (target: any) => boolean +>Reflect : typeof Reflect +>isExtensible : (target: any) => boolean +>{} : {} + +// Using Es6 regexp +var reg = new RegExp("/s"); +>reg : RegExp +>new RegExp("/s") : RegExp +>RegExp : RegExpConstructor +>"/s" : string + +reg.flags; +>reg.flags : string +>reg : RegExp +>flags : string + +// Using ES6 string +var str = "Hello world"; +>str : string +>"Hello world" : string + +str.includes("hello", 0); +>str.includes("hello", 0) : boolean +>str.includes : (searchString: string, position?: number) => boolean +>str : string +>includes : (searchString: string, position?: number) => boolean +>"hello" : string +>0 : number + +// Using ES6 symbol +var s = Symbol(); +>s : symbol +>Symbol() : symbol +>Symbol : SymbolConstructor + +// Using ES6 wellknown-symbol +const o1 = { +>o1 : { [Symbol.hasInstance](value: any): boolean; } +>{ [Symbol.hasInstance](value: any) { return false; }} : { [Symbol.hasInstance](value: any): boolean; } + + [Symbol.hasInstance](value: any) { +>Symbol.hasInstance : symbol +>Symbol : SymbolConstructor +>hasInstance : symbol +>value : any + + return false; +>false : boolean + } +} diff --git a/tests/baselines/reference/modularizeLibrary_NoErrorDuplicateLibOptions2.js b/tests/baselines/reference/modularizeLibrary_NoErrorDuplicateLibOptions2.js new file mode 100644 index 00000000000..c4c2d6853af --- /dev/null +++ b/tests/baselines/reference/modularizeLibrary_NoErrorDuplicateLibOptions2.js @@ -0,0 +1,158 @@ +//// [modularizeLibrary_NoErrorDuplicateLibOptions2.ts] + +// Using Es6 array +function f(x: number, y: number, z: number) { + return Array.from(arguments); +} + +f(1, 2, 3); // no error + +// Using ES6 collection +var m = new Map(); +m.clear(); +// Using ES6 iterable +m.keys(); + +// Using ES6 function +function Baz() { } +Baz.name; + +// Using ES6 generator +function* gen() { + let i = 0; + while (i < 10) { + yield i; + i++; + } +} + +function* gen2() { + let i = 0; + while (i < 10) { + yield i; + i++; + } +} + +// Using ES6 math +Math.sign(1); + +// Using ES6 object +var o = { + a: 2, + [Symbol.hasInstance](value: any) { + return false; + } +}; +o.hasOwnProperty(Symbol.hasInstance); + +// Using ES6 promise +async function out() { + return new Promise(function (resolve, reject) {}); +} + +declare var console: any; +out().then(() => { + console.log("Yea!"); +}); + +// Using Es6 proxy +var t = {} +var p = new Proxy(t, {}); + +// Using ES6 reflect +Reflect.isExtensible({}); + +// Using Es6 regexp +var reg = new RegExp("/s"); +reg.flags; + +// Using ES6 string +var str = "Hello world"; +str.includes("hello", 0); + +// Using ES6 symbol +var s = Symbol(); + +// Using ES6 wellknown-symbol +const o1 = { + [Symbol.hasInstance](value: any) { + return false; + } +} + +//// [modularizeLibrary_NoErrorDuplicateLibOptions2.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()); + }); +}; +// Using Es6 array +function f(x, y, z) { + return Array.from(arguments); +} +f(1, 2, 3); // no error +// Using ES6 collection +var m = new Map(); +m.clear(); +// Using ES6 iterable +m.keys(); +// Using ES6 function +function Baz() { } +Baz.name; +// Using ES6 generator +function* gen() { + let i = 0; + while (i < 10) { + yield i; + i++; + } +} +function* gen2() { + let i = 0; + while (i < 10) { + yield i; + i++; + } +} +// Using ES6 math +Math.sign(1); +// Using ES6 object +var o = { + a: 2, + [Symbol.hasInstance](value) { + return false; + } +}; +o.hasOwnProperty(Symbol.hasInstance); +// Using ES6 promise +function out() { + return __awaiter(this, void 0, void 0, function* () { + return new Promise(function (resolve, reject) { }); + }); +} +out().then(() => { + console.log("Yea!"); +}); +// Using Es6 proxy +var t = {}; +var p = new Proxy(t, {}); +// Using ES6 reflect +Reflect.isExtensible({}); +// Using Es6 regexp +var reg = new RegExp("/s"); +reg.flags; +// Using ES6 string +var str = "Hello world"; +str.includes("hello", 0); +// Using ES6 symbol +var s = Symbol(); +// Using ES6 wellknown-symbol +const o1 = { + [Symbol.hasInstance](value) { + return false; + } +}; diff --git a/tests/baselines/reference/modularizeLibrary_NoErrorDuplicateLibOptions2.symbols b/tests/baselines/reference/modularizeLibrary_NoErrorDuplicateLibOptions2.symbols new file mode 100644 index 00000000000..89cb8fe7179 --- /dev/null +++ b/tests/baselines/reference/modularizeLibrary_NoErrorDuplicateLibOptions2.symbols @@ -0,0 +1,184 @@ +=== tests/cases/compiler/modularizeLibrary_NoErrorDuplicateLibOptions2.ts === + +// Using Es6 array +function f(x: number, y: number, z: number) { +>f : Symbol(f, Decl(modularizeLibrary_NoErrorDuplicateLibOptions2.ts, 0, 0)) +>x : Symbol(x, Decl(modularizeLibrary_NoErrorDuplicateLibOptions2.ts, 2, 11)) +>y : Symbol(y, Decl(modularizeLibrary_NoErrorDuplicateLibOptions2.ts, 2, 21)) +>z : Symbol(z, Decl(modularizeLibrary_NoErrorDuplicateLibOptions2.ts, 2, 32)) + + return Array.from(arguments); +>Array.from : Symbol(ArrayConstructor.from, Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --)) +>Array : Symbol(Array, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) +>from : Symbol(ArrayConstructor.from, Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --)) +>arguments : Symbol(arguments) +} + +f(1, 2, 3); // no error +>f : Symbol(f, Decl(modularizeLibrary_NoErrorDuplicateLibOptions2.ts, 0, 0)) + +// Using ES6 collection +var m = new Map(); +>m : Symbol(m, Decl(modularizeLibrary_NoErrorDuplicateLibOptions2.ts, 9, 3)) +>Map : Symbol(Map, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.collection.d.ts, --, --), Decl(lib.es2015.collection.d.ts, --, --)) + +m.clear(); +>m.clear : Symbol(Map.clear, Decl(lib.es2015.collection.d.ts, --, --)) +>m : Symbol(m, Decl(modularizeLibrary_NoErrorDuplicateLibOptions2.ts, 9, 3)) +>clear : Symbol(Map.clear, Decl(lib.es2015.collection.d.ts, --, --)) + +// Using ES6 iterable +m.keys(); +>m.keys : Symbol(Map.keys, Decl(lib.es2015.iterable.d.ts, --, --)) +>m : Symbol(m, Decl(modularizeLibrary_NoErrorDuplicateLibOptions2.ts, 9, 3)) +>keys : Symbol(Map.keys, Decl(lib.es2015.iterable.d.ts, --, --)) + +// Using ES6 function +function Baz() { } +>Baz : Symbol(Baz, Decl(modularizeLibrary_NoErrorDuplicateLibOptions2.ts, 12, 9)) + +Baz.name; +>Baz.name : Symbol(Function.name, Decl(lib.es2015.core.d.ts, --, --)) +>Baz : Symbol(Baz, Decl(modularizeLibrary_NoErrorDuplicateLibOptions2.ts, 12, 9)) +>name : Symbol(Function.name, Decl(lib.es2015.core.d.ts, --, --)) + +// Using ES6 generator +function* gen() { +>gen : Symbol(gen, Decl(modularizeLibrary_NoErrorDuplicateLibOptions2.ts, 16, 9)) + + let i = 0; +>i : Symbol(i, Decl(modularizeLibrary_NoErrorDuplicateLibOptions2.ts, 20, 7)) + + while (i < 10) { +>i : Symbol(i, Decl(modularizeLibrary_NoErrorDuplicateLibOptions2.ts, 20, 7)) + + yield i; +>i : Symbol(i, Decl(modularizeLibrary_NoErrorDuplicateLibOptions2.ts, 20, 7)) + + i++; +>i : Symbol(i, Decl(modularizeLibrary_NoErrorDuplicateLibOptions2.ts, 20, 7)) + } +} + +function* gen2() { +>gen2 : Symbol(gen2, Decl(modularizeLibrary_NoErrorDuplicateLibOptions2.ts, 25, 1)) + + let i = 0; +>i : Symbol(i, Decl(modularizeLibrary_NoErrorDuplicateLibOptions2.ts, 28, 7)) + + while (i < 10) { +>i : Symbol(i, Decl(modularizeLibrary_NoErrorDuplicateLibOptions2.ts, 28, 7)) + + yield i; +>i : Symbol(i, Decl(modularizeLibrary_NoErrorDuplicateLibOptions2.ts, 28, 7)) + + i++; +>i : Symbol(i, Decl(modularizeLibrary_NoErrorDuplicateLibOptions2.ts, 28, 7)) + } +} + +// Using ES6 math +Math.sign(1); +>Math.sign : Symbol(Math.sign, Decl(lib.es2015.core.d.ts, --, --)) +>Math : Symbol(Math, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) +>sign : Symbol(Math.sign, Decl(lib.es2015.core.d.ts, --, --)) + +// Using ES6 object +var o = { +>o : Symbol(o, Decl(modularizeLibrary_NoErrorDuplicateLibOptions2.ts, 39, 3)) + + a: 2, +>a : Symbol(a, Decl(modularizeLibrary_NoErrorDuplicateLibOptions2.ts, 39, 9)) + + [Symbol.hasInstance](value: any) { +>Symbol.hasInstance : Symbol(SymbolConstructor.hasInstance, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>hasInstance : Symbol(SymbolConstructor.hasInstance, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>value : Symbol(value, Decl(modularizeLibrary_NoErrorDuplicateLibOptions2.ts, 41, 25)) + + return false; + } +}; +o.hasOwnProperty(Symbol.hasInstance); +>o.hasOwnProperty : Symbol(Object.hasOwnProperty, Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) +>o : Symbol(o, Decl(modularizeLibrary_NoErrorDuplicateLibOptions2.ts, 39, 3)) +>hasOwnProperty : Symbol(Object.hasOwnProperty, Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) +>Symbol.hasInstance : Symbol(SymbolConstructor.hasInstance, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>hasInstance : Symbol(SymbolConstructor.hasInstance, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) + +// Using ES6 promise +async function out() { +>out : Symbol(out, Decl(modularizeLibrary_NoErrorDuplicateLibOptions2.ts, 45, 37)) + + return new Promise(function (resolve, reject) {}); +>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(resolve, Decl(modularizeLibrary_NoErrorDuplicateLibOptions2.ts, 49, 33)) +>reject : Symbol(reject, Decl(modularizeLibrary_NoErrorDuplicateLibOptions2.ts, 49, 41)) +} + +declare var console: any; +>console : Symbol(console, Decl(modularizeLibrary_NoErrorDuplicateLibOptions2.ts, 52, 11)) + +out().then(() => { +>out().then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) +>out : Symbol(out, Decl(modularizeLibrary_NoErrorDuplicateLibOptions2.ts, 45, 37)) +>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) + + console.log("Yea!"); +>console : Symbol(console, Decl(modularizeLibrary_NoErrorDuplicateLibOptions2.ts, 52, 11)) + +}); + +// Using Es6 proxy +var t = {} +>t : Symbol(t, Decl(modularizeLibrary_NoErrorDuplicateLibOptions2.ts, 58, 3)) + +var p = new Proxy(t, {}); +>p : Symbol(p, Decl(modularizeLibrary_NoErrorDuplicateLibOptions2.ts, 59, 3)) +>Proxy : Symbol(Proxy, Decl(lib.es2015.proxy.d.ts, --, --)) +>t : Symbol(t, Decl(modularizeLibrary_NoErrorDuplicateLibOptions2.ts, 58, 3)) + +// Using ES6 reflect +Reflect.isExtensible({}); +>Reflect.isExtensible : Symbol(Reflect.isExtensible, Decl(lib.es2015.reflect.d.ts, --, --)) +>Reflect : Symbol(Reflect, Decl(lib.es2015.reflect.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>isExtensible : Symbol(Reflect.isExtensible, Decl(lib.es2015.reflect.d.ts, --, --)) + +// Using Es6 regexp +var reg = new RegExp("/s"); +>reg : Symbol(reg, Decl(modularizeLibrary_NoErrorDuplicateLibOptions2.ts, 65, 3)) +>RegExp : Symbol(RegExp, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) + +reg.flags; +>reg.flags : Symbol(RegExp.flags, Decl(lib.es2015.core.d.ts, --, --)) +>reg : Symbol(reg, Decl(modularizeLibrary_NoErrorDuplicateLibOptions2.ts, 65, 3)) +>flags : Symbol(RegExp.flags, Decl(lib.es2015.core.d.ts, --, --)) + +// Using ES6 string +var str = "Hello world"; +>str : Symbol(str, Decl(modularizeLibrary_NoErrorDuplicateLibOptions2.ts, 69, 3)) + +str.includes("hello", 0); +>str.includes : Symbol(String.includes, Decl(lib.es2015.core.d.ts, --, --)) +>str : Symbol(str, Decl(modularizeLibrary_NoErrorDuplicateLibOptions2.ts, 69, 3)) +>includes : Symbol(String.includes, Decl(lib.es2015.core.d.ts, --, --)) + +// Using ES6 symbol +var s = Symbol(); +>s : Symbol(s, Decl(modularizeLibrary_NoErrorDuplicateLibOptions2.ts, 73, 3)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) + +// Using ES6 wellknown-symbol +const o1 = { +>o1 : Symbol(o1, Decl(modularizeLibrary_NoErrorDuplicateLibOptions2.ts, 76, 5)) + + [Symbol.hasInstance](value: any) { +>Symbol.hasInstance : Symbol(SymbolConstructor.hasInstance, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>hasInstance : Symbol(SymbolConstructor.hasInstance, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>value : Symbol(value, Decl(modularizeLibrary_NoErrorDuplicateLibOptions2.ts, 77, 25)) + + return false; + } +} diff --git a/tests/baselines/reference/modularizeLibrary_NoErrorDuplicateLibOptions2.types b/tests/baselines/reference/modularizeLibrary_NoErrorDuplicateLibOptions2.types new file mode 100644 index 00000000000..a7d8e77e28c --- /dev/null +++ b/tests/baselines/reference/modularizeLibrary_NoErrorDuplicateLibOptions2.types @@ -0,0 +1,231 @@ +=== tests/cases/compiler/modularizeLibrary_NoErrorDuplicateLibOptions2.ts === + +// Using Es6 array +function f(x: number, y: number, z: number) { +>f : (x: number, y: number, z: number) => any[] +>x : number +>y : number +>z : number + + return Array.from(arguments); +>Array.from(arguments) : any[] +>Array.from : { (iterable: Iterable, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; (iterable: Iterable): T[]; (arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; (arrayLike: ArrayLike): T[]; } +>Array : ArrayConstructor +>from : { (iterable: Iterable, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; (iterable: Iterable): T[]; (arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; (arrayLike: ArrayLike): T[]; } +>arguments : IArguments +} + +f(1, 2, 3); // no error +>f(1, 2, 3) : any[] +>f : (x: number, y: number, z: number) => any[] +>1 : number +>2 : number +>3 : number + +// Using ES6 collection +var m = new Map(); +>m : Map +>new Map() : Map +>Map : MapConstructor + +m.clear(); +>m.clear() : void +>m.clear : () => void +>m : Map +>clear : () => void + +// Using ES6 iterable +m.keys(); +>m.keys() : IterableIterator +>m.keys : () => IterableIterator +>m : Map +>keys : () => IterableIterator + +// Using ES6 function +function Baz() { } +>Baz : () => void + +Baz.name; +>Baz.name : string +>Baz : () => void +>name : string + +// Using ES6 generator +function* gen() { +>gen : () => IterableIterator + + let i = 0; +>i : number +>0 : number + + while (i < 10) { +>i < 10 : boolean +>i : number +>10 : number + + yield i; +>yield i : any +>i : number + + i++; +>i++ : number +>i : number + } +} + +function* gen2() { +>gen2 : () => IterableIterator + + let i = 0; +>i : number +>0 : number + + while (i < 10) { +>i < 10 : boolean +>i : number +>10 : number + + yield i; +>yield i : any +>i : number + + i++; +>i++ : number +>i : number + } +} + +// Using ES6 math +Math.sign(1); +>Math.sign(1) : number +>Math.sign : (x: number) => number +>Math : Math +>sign : (x: number) => number +>1 : number + +// Using ES6 object +var o = { +>o : { a: number; [Symbol.hasInstance](value: any): boolean; } +>{ a: 2, [Symbol.hasInstance](value: any) { return false; }} : { a: number; [Symbol.hasInstance](value: any): boolean; } + + a: 2, +>a : number +>2 : number + + [Symbol.hasInstance](value: any) { +>Symbol.hasInstance : symbol +>Symbol : SymbolConstructor +>hasInstance : symbol +>value : any + + return false; +>false : boolean + } +}; +o.hasOwnProperty(Symbol.hasInstance); +>o.hasOwnProperty(Symbol.hasInstance) : boolean +>o.hasOwnProperty : { (v: string | number | symbol): boolean; (v: string): boolean; } +>o : { a: number; [Symbol.hasInstance](value: any): boolean; } +>hasOwnProperty : { (v: string | number | symbol): boolean; (v: string): boolean; } +>Symbol.hasInstance : symbol +>Symbol : SymbolConstructor +>hasInstance : symbol + +// Using ES6 promise +async function out() { +>out : () => Promise<{}> + + return new Promise(function (resolve, reject) {}); +>new Promise(function (resolve, reject) {}) : Promise<{}> +>Promise : PromiseConstructor +>function (resolve, reject) {} : (resolve: (value?: {} | PromiseLike<{}>) => void, reject: (reason?: any) => void) => void +>resolve : (value?: {} | PromiseLike<{}>) => void +>reject : (reason?: any) => void +} + +declare var console: any; +>console : any + +out().then(() => { +>out().then(() => { console.log("Yea!");}) : Promise +>out().then : { (onfulfilled?: (value: {}) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled?: (value: {}) => TResult | PromiseLike, onrejected?: (reason: any) => void): Promise; } +>out() : Promise<{}> +>out : () => Promise<{}> +>then : { (onfulfilled?: (value: {}) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled?: (value: {}) => TResult | PromiseLike, onrejected?: (reason: any) => void): Promise; } +>() => { console.log("Yea!");} : () => void + + console.log("Yea!"); +>console.log("Yea!") : any +>console.log : any +>console : any +>log : any +>"Yea!" : string + +}); + +// Using Es6 proxy +var t = {} +>t : {} +>{} : {} + +var p = new Proxy(t, {}); +>p : {} +>new Proxy(t, {}) : {} +>Proxy : ProxyConstructor +>t : {} +>{} : {} + +// Using ES6 reflect +Reflect.isExtensible({}); +>Reflect.isExtensible({}) : boolean +>Reflect.isExtensible : (target: any) => boolean +>Reflect : typeof Reflect +>isExtensible : (target: any) => boolean +>{} : {} + +// Using Es6 regexp +var reg = new RegExp("/s"); +>reg : RegExp +>new RegExp("/s") : RegExp +>RegExp : RegExpConstructor +>"/s" : string + +reg.flags; +>reg.flags : string +>reg : RegExp +>flags : string + +// Using ES6 string +var str = "Hello world"; +>str : string +>"Hello world" : string + +str.includes("hello", 0); +>str.includes("hello", 0) : boolean +>str.includes : (searchString: string, position?: number) => boolean +>str : string +>includes : (searchString: string, position?: number) => boolean +>"hello" : string +>0 : number + +// Using ES6 symbol +var s = Symbol(); +>s : symbol +>Symbol() : symbol +>Symbol : SymbolConstructor + +// Using ES6 wellknown-symbol +const o1 = { +>o1 : { [Symbol.hasInstance](value: any): boolean; } +>{ [Symbol.hasInstance](value: any) { return false; }} : { [Symbol.hasInstance](value: any): boolean; } + + [Symbol.hasInstance](value: any) { +>Symbol.hasInstance : symbol +>Symbol : SymbolConstructor +>hasInstance : symbol +>value : any + + return false; +>false : boolean + } +} diff --git a/tests/baselines/reference/modularizeLibrary_TargetES5UsingES6Lib.js b/tests/baselines/reference/modularizeLibrary_TargetES5UsingES6Lib.js new file mode 100644 index 00000000000..8736c51cd16 --- /dev/null +++ b/tests/baselines/reference/modularizeLibrary_TargetES5UsingES6Lib.js @@ -0,0 +1,158 @@ +//// [modularizeLibrary_TargetES5UsingES6Lib.ts] + +// Using Es6 array +function f(x: number, y: number, z: number) { + return Array.from(arguments); +} + +f(1, 2, 3); // no error + +// Using ES6 collection +var m = new Map(); +m.clear(); +// Using ES6 iterable +m.keys(); + +// Using ES6 function +function Baz() { } +Baz.name; + +// Using ES6 generator +function* gen() { + let i = 0; + while (i < 10) { + yield i; + i++; + } +} + +function* gen2() { + let i = 0; + while (i < 10) { + yield i; + i++; + } +} + +// Using ES6 math +Math.sign(1); + +// Using ES6 object +var o = { + a: 2, + [Symbol.hasInstance](value: any) { + return false; + } +}; +o.hasOwnProperty(Symbol.hasInstance); + +// Using ES6 promise +async function out() { + return new Promise(function (resolve, reject) {}); +} + +declare var console: any; +out().then(() => { + console.log("Yea!"); +}); + +// Using Es6 proxy +var t = {} +var p = new Proxy(t, {}); + +// Using ES6 reflect +Reflect.isExtensible({}); + +// Using Es6 regexp +var reg = new RegExp("/s"); +reg.flags; + +// Using ES6 string +var str = "Hello world"; +str.includes("hello", 0); + +// Using ES6 symbol +var s = Symbol(); + +// Using ES6 wellknown-symbol +const o1 = { + [Symbol.hasInstance](value: any) { + return false; + } +} + +//// [modularizeLibrary_TargetES5UsingES6Lib.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()); + }); +}; +// Using Es6 array +function f(x, y, z) { + return Array.from(arguments); +} +f(1, 2, 3); // no error +// Using ES6 collection +var m = new Map(); +m.clear(); +// Using ES6 iterable +m.keys(); +// Using ES6 function +function Baz() { } +Baz.name; +// Using ES6 generator +function* gen() { + let i = 0; + while (i < 10) { + yield i; + i++; + } +} +function* gen2() { + let i = 0; + while (i < 10) { + yield i; + i++; + } +} +// Using ES6 math +Math.sign(1); +// Using ES6 object +var o = { + a: 2, + [Symbol.hasInstance](value) { + return false; + } +}; +o.hasOwnProperty(Symbol.hasInstance); +// Using ES6 promise +function out() { + return __awaiter(this, void 0, void 0, function* () { + return new Promise(function (resolve, reject) { }); + }); +} +out().then(() => { + console.log("Yea!"); +}); +// Using Es6 proxy +var t = {}; +var p = new Proxy(t, {}); +// Using ES6 reflect +Reflect.isExtensible({}); +// Using Es6 regexp +var reg = new RegExp("/s"); +reg.flags; +// Using ES6 string +var str = "Hello world"; +str.includes("hello", 0); +// Using ES6 symbol +var s = Symbol(); +// Using ES6 wellknown-symbol +const o1 = { + [Symbol.hasInstance](value) { + return false; + } +}; diff --git a/tests/baselines/reference/modularizeLibrary_TargetES5UsingES6Lib.symbols b/tests/baselines/reference/modularizeLibrary_TargetES5UsingES6Lib.symbols new file mode 100644 index 00000000000..c8ccdd98653 --- /dev/null +++ b/tests/baselines/reference/modularizeLibrary_TargetES5UsingES6Lib.symbols @@ -0,0 +1,184 @@ +=== tests/cases/compiler/modularizeLibrary_TargetES5UsingES6Lib.ts === + +// Using Es6 array +function f(x: number, y: number, z: number) { +>f : Symbol(f, Decl(modularizeLibrary_TargetES5UsingES6Lib.ts, 0, 0)) +>x : Symbol(x, Decl(modularizeLibrary_TargetES5UsingES6Lib.ts, 2, 11)) +>y : Symbol(y, Decl(modularizeLibrary_TargetES5UsingES6Lib.ts, 2, 21)) +>z : Symbol(z, Decl(modularizeLibrary_TargetES5UsingES6Lib.ts, 2, 32)) + + return Array.from(arguments); +>Array.from : Symbol(ArrayConstructor.from, Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --)) +>Array : Symbol(Array, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) +>from : Symbol(ArrayConstructor.from, Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --)) +>arguments : Symbol(arguments) +} + +f(1, 2, 3); // no error +>f : Symbol(f, Decl(modularizeLibrary_TargetES5UsingES6Lib.ts, 0, 0)) + +// Using ES6 collection +var m = new Map(); +>m : Symbol(m, Decl(modularizeLibrary_TargetES5UsingES6Lib.ts, 9, 3)) +>Map : Symbol(Map, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.collection.d.ts, --, --), Decl(lib.es2015.collection.d.ts, --, --)) + +m.clear(); +>m.clear : Symbol(Map.clear, Decl(lib.es2015.collection.d.ts, --, --)) +>m : Symbol(m, Decl(modularizeLibrary_TargetES5UsingES6Lib.ts, 9, 3)) +>clear : Symbol(Map.clear, Decl(lib.es2015.collection.d.ts, --, --)) + +// Using ES6 iterable +m.keys(); +>m.keys : Symbol(Map.keys, Decl(lib.es2015.iterable.d.ts, --, --)) +>m : Symbol(m, Decl(modularizeLibrary_TargetES5UsingES6Lib.ts, 9, 3)) +>keys : Symbol(Map.keys, Decl(lib.es2015.iterable.d.ts, --, --)) + +// Using ES6 function +function Baz() { } +>Baz : Symbol(Baz, Decl(modularizeLibrary_TargetES5UsingES6Lib.ts, 12, 9)) + +Baz.name; +>Baz.name : Symbol(Function.name, Decl(lib.es2015.core.d.ts, --, --)) +>Baz : Symbol(Baz, Decl(modularizeLibrary_TargetES5UsingES6Lib.ts, 12, 9)) +>name : Symbol(Function.name, Decl(lib.es2015.core.d.ts, --, --)) + +// Using ES6 generator +function* gen() { +>gen : Symbol(gen, Decl(modularizeLibrary_TargetES5UsingES6Lib.ts, 16, 9)) + + let i = 0; +>i : Symbol(i, Decl(modularizeLibrary_TargetES5UsingES6Lib.ts, 20, 7)) + + while (i < 10) { +>i : Symbol(i, Decl(modularizeLibrary_TargetES5UsingES6Lib.ts, 20, 7)) + + yield i; +>i : Symbol(i, Decl(modularizeLibrary_TargetES5UsingES6Lib.ts, 20, 7)) + + i++; +>i : Symbol(i, Decl(modularizeLibrary_TargetES5UsingES6Lib.ts, 20, 7)) + } +} + +function* gen2() { +>gen2 : Symbol(gen2, Decl(modularizeLibrary_TargetES5UsingES6Lib.ts, 25, 1)) + + let i = 0; +>i : Symbol(i, Decl(modularizeLibrary_TargetES5UsingES6Lib.ts, 28, 7)) + + while (i < 10) { +>i : Symbol(i, Decl(modularizeLibrary_TargetES5UsingES6Lib.ts, 28, 7)) + + yield i; +>i : Symbol(i, Decl(modularizeLibrary_TargetES5UsingES6Lib.ts, 28, 7)) + + i++; +>i : Symbol(i, Decl(modularizeLibrary_TargetES5UsingES6Lib.ts, 28, 7)) + } +} + +// Using ES6 math +Math.sign(1); +>Math.sign : Symbol(Math.sign, Decl(lib.es2015.core.d.ts, --, --)) +>Math : Symbol(Math, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) +>sign : Symbol(Math.sign, Decl(lib.es2015.core.d.ts, --, --)) + +// Using ES6 object +var o = { +>o : Symbol(o, Decl(modularizeLibrary_TargetES5UsingES6Lib.ts, 39, 3)) + + a: 2, +>a : Symbol(a, Decl(modularizeLibrary_TargetES5UsingES6Lib.ts, 39, 9)) + + [Symbol.hasInstance](value: any) { +>Symbol.hasInstance : Symbol(SymbolConstructor.hasInstance, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>hasInstance : Symbol(SymbolConstructor.hasInstance, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>value : Symbol(value, Decl(modularizeLibrary_TargetES5UsingES6Lib.ts, 41, 25)) + + return false; + } +}; +o.hasOwnProperty(Symbol.hasInstance); +>o.hasOwnProperty : Symbol(Object.hasOwnProperty, Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) +>o : Symbol(o, Decl(modularizeLibrary_TargetES5UsingES6Lib.ts, 39, 3)) +>hasOwnProperty : Symbol(Object.hasOwnProperty, Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) +>Symbol.hasInstance : Symbol(SymbolConstructor.hasInstance, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>hasInstance : Symbol(SymbolConstructor.hasInstance, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) + +// Using ES6 promise +async function out() { +>out : Symbol(out, Decl(modularizeLibrary_TargetES5UsingES6Lib.ts, 45, 37)) + + return new Promise(function (resolve, reject) {}); +>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(resolve, Decl(modularizeLibrary_TargetES5UsingES6Lib.ts, 49, 33)) +>reject : Symbol(reject, Decl(modularizeLibrary_TargetES5UsingES6Lib.ts, 49, 41)) +} + +declare var console: any; +>console : Symbol(console, Decl(modularizeLibrary_TargetES5UsingES6Lib.ts, 52, 11)) + +out().then(() => { +>out().then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) +>out : Symbol(out, Decl(modularizeLibrary_TargetES5UsingES6Lib.ts, 45, 37)) +>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) + + console.log("Yea!"); +>console : Symbol(console, Decl(modularizeLibrary_TargetES5UsingES6Lib.ts, 52, 11)) + +}); + +// Using Es6 proxy +var t = {} +>t : Symbol(t, Decl(modularizeLibrary_TargetES5UsingES6Lib.ts, 58, 3)) + +var p = new Proxy(t, {}); +>p : Symbol(p, Decl(modularizeLibrary_TargetES5UsingES6Lib.ts, 59, 3)) +>Proxy : Symbol(Proxy, Decl(lib.es2015.proxy.d.ts, --, --)) +>t : Symbol(t, Decl(modularizeLibrary_TargetES5UsingES6Lib.ts, 58, 3)) + +// Using ES6 reflect +Reflect.isExtensible({}); +>Reflect.isExtensible : Symbol(Reflect.isExtensible, Decl(lib.es2015.reflect.d.ts, --, --)) +>Reflect : Symbol(Reflect, Decl(lib.es2015.reflect.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>isExtensible : Symbol(Reflect.isExtensible, Decl(lib.es2015.reflect.d.ts, --, --)) + +// Using Es6 regexp +var reg = new RegExp("/s"); +>reg : Symbol(reg, Decl(modularizeLibrary_TargetES5UsingES6Lib.ts, 65, 3)) +>RegExp : Symbol(RegExp, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) + +reg.flags; +>reg.flags : Symbol(RegExp.flags, Decl(lib.es2015.core.d.ts, --, --)) +>reg : Symbol(reg, Decl(modularizeLibrary_TargetES5UsingES6Lib.ts, 65, 3)) +>flags : Symbol(RegExp.flags, Decl(lib.es2015.core.d.ts, --, --)) + +// Using ES6 string +var str = "Hello world"; +>str : Symbol(str, Decl(modularizeLibrary_TargetES5UsingES6Lib.ts, 69, 3)) + +str.includes("hello", 0); +>str.includes : Symbol(String.includes, Decl(lib.es2015.core.d.ts, --, --)) +>str : Symbol(str, Decl(modularizeLibrary_TargetES5UsingES6Lib.ts, 69, 3)) +>includes : Symbol(String.includes, Decl(lib.es2015.core.d.ts, --, --)) + +// Using ES6 symbol +var s = Symbol(); +>s : Symbol(s, Decl(modularizeLibrary_TargetES5UsingES6Lib.ts, 73, 3)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) + +// Using ES6 wellknown-symbol +const o1 = { +>o1 : Symbol(o1, Decl(modularizeLibrary_TargetES5UsingES6Lib.ts, 76, 5)) + + [Symbol.hasInstance](value: any) { +>Symbol.hasInstance : Symbol(SymbolConstructor.hasInstance, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>hasInstance : Symbol(SymbolConstructor.hasInstance, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>value : Symbol(value, Decl(modularizeLibrary_TargetES5UsingES6Lib.ts, 77, 25)) + + return false; + } +} diff --git a/tests/baselines/reference/modularizeLibrary_TargetES5UsingES6Lib.types b/tests/baselines/reference/modularizeLibrary_TargetES5UsingES6Lib.types new file mode 100644 index 00000000000..8272465da5e --- /dev/null +++ b/tests/baselines/reference/modularizeLibrary_TargetES5UsingES6Lib.types @@ -0,0 +1,231 @@ +=== tests/cases/compiler/modularizeLibrary_TargetES5UsingES6Lib.ts === + +// Using Es6 array +function f(x: number, y: number, z: number) { +>f : (x: number, y: number, z: number) => any[] +>x : number +>y : number +>z : number + + return Array.from(arguments); +>Array.from(arguments) : any[] +>Array.from : { (iterable: Iterable, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; (iterable: Iterable): T[]; (arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; (arrayLike: ArrayLike): T[]; } +>Array : ArrayConstructor +>from : { (iterable: Iterable, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; (iterable: Iterable): T[]; (arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; (arrayLike: ArrayLike): T[]; } +>arguments : IArguments +} + +f(1, 2, 3); // no error +>f(1, 2, 3) : any[] +>f : (x: number, y: number, z: number) => any[] +>1 : number +>2 : number +>3 : number + +// Using ES6 collection +var m = new Map(); +>m : Map +>new Map() : Map +>Map : MapConstructor + +m.clear(); +>m.clear() : void +>m.clear : () => void +>m : Map +>clear : () => void + +// Using ES6 iterable +m.keys(); +>m.keys() : IterableIterator +>m.keys : () => IterableIterator +>m : Map +>keys : () => IterableIterator + +// Using ES6 function +function Baz() { } +>Baz : () => void + +Baz.name; +>Baz.name : string +>Baz : () => void +>name : string + +// Using ES6 generator +function* gen() { +>gen : () => IterableIterator + + let i = 0; +>i : number +>0 : number + + while (i < 10) { +>i < 10 : boolean +>i : number +>10 : number + + yield i; +>yield i : any +>i : number + + i++; +>i++ : number +>i : number + } +} + +function* gen2() { +>gen2 : () => IterableIterator + + let i = 0; +>i : number +>0 : number + + while (i < 10) { +>i < 10 : boolean +>i : number +>10 : number + + yield i; +>yield i : any +>i : number + + i++; +>i++ : number +>i : number + } +} + +// Using ES6 math +Math.sign(1); +>Math.sign(1) : number +>Math.sign : (x: number) => number +>Math : Math +>sign : (x: number) => number +>1 : number + +// Using ES6 object +var o = { +>o : { a: number; [Symbol.hasInstance](value: any): boolean; } +>{ a: 2, [Symbol.hasInstance](value: any) { return false; }} : { a: number; [Symbol.hasInstance](value: any): boolean; } + + a: 2, +>a : number +>2 : number + + [Symbol.hasInstance](value: any) { +>Symbol.hasInstance : symbol +>Symbol : SymbolConstructor +>hasInstance : symbol +>value : any + + return false; +>false : boolean + } +}; +o.hasOwnProperty(Symbol.hasInstance); +>o.hasOwnProperty(Symbol.hasInstance) : boolean +>o.hasOwnProperty : { (v: string | number | symbol): boolean; (v: string): boolean; } +>o : { a: number; [Symbol.hasInstance](value: any): boolean; } +>hasOwnProperty : { (v: string | number | symbol): boolean; (v: string): boolean; } +>Symbol.hasInstance : symbol +>Symbol : SymbolConstructor +>hasInstance : symbol + +// Using ES6 promise +async function out() { +>out : () => Promise<{}> + + return new Promise(function (resolve, reject) {}); +>new Promise(function (resolve, reject) {}) : Promise<{}> +>Promise : PromiseConstructor +>function (resolve, reject) {} : (resolve: (value?: {} | PromiseLike<{}>) => void, reject: (reason?: any) => void) => void +>resolve : (value?: {} | PromiseLike<{}>) => void +>reject : (reason?: any) => void +} + +declare var console: any; +>console : any + +out().then(() => { +>out().then(() => { console.log("Yea!");}) : Promise +>out().then : { (onfulfilled?: (value: {}) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled?: (value: {}) => TResult | PromiseLike, onrejected?: (reason: any) => void): Promise; } +>out() : Promise<{}> +>out : () => Promise<{}> +>then : { (onfulfilled?: (value: {}) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): Promise; (onfulfilled?: (value: {}) => TResult | PromiseLike, onrejected?: (reason: any) => void): Promise; } +>() => { console.log("Yea!");} : () => void + + console.log("Yea!"); +>console.log("Yea!") : any +>console.log : any +>console : any +>log : any +>"Yea!" : string + +}); + +// Using Es6 proxy +var t = {} +>t : {} +>{} : {} + +var p = new Proxy(t, {}); +>p : {} +>new Proxy(t, {}) : {} +>Proxy : ProxyConstructor +>t : {} +>{} : {} + +// Using ES6 reflect +Reflect.isExtensible({}); +>Reflect.isExtensible({}) : boolean +>Reflect.isExtensible : (target: any) => boolean +>Reflect : typeof Reflect +>isExtensible : (target: any) => boolean +>{} : {} + +// Using Es6 regexp +var reg = new RegExp("/s"); +>reg : RegExp +>new RegExp("/s") : RegExp +>RegExp : RegExpConstructor +>"/s" : string + +reg.flags; +>reg.flags : string +>reg : RegExp +>flags : string + +// Using ES6 string +var str = "Hello world"; +>str : string +>"Hello world" : string + +str.includes("hello", 0); +>str.includes("hello", 0) : boolean +>str.includes : (searchString: string, position?: number) => boolean +>str : string +>includes : (searchString: string, position?: number) => boolean +>"hello" : string +>0 : number + +// Using ES6 symbol +var s = Symbol(); +>s : symbol +>Symbol() : symbol +>Symbol : SymbolConstructor + +// Using ES6 wellknown-symbol +const o1 = { +>o1 : { [Symbol.hasInstance](value: any): boolean; } +>{ [Symbol.hasInstance](value: any) { return false; }} : { [Symbol.hasInstance](value: any): boolean; } + + [Symbol.hasInstance](value: any) { +>Symbol.hasInstance : symbol +>Symbol : SymbolConstructor +>hasInstance : symbol +>value : any + + return false; +>false : boolean + } +} diff --git a/tests/baselines/reference/modularizeLibrary_TargetES6UsingES6Lib.js b/tests/baselines/reference/modularizeLibrary_TargetES6UsingES6Lib.js new file mode 100644 index 00000000000..137bd1063b8 --- /dev/null +++ b/tests/baselines/reference/modularizeLibrary_TargetES6UsingES6Lib.js @@ -0,0 +1,99 @@ +//// [modularizeLibrary_TargetES6UsingES6Lib.ts] + +// Using Es6 array +function f(x: number, y: number, z: number) { + return Array.from(arguments); +} + +f(1, 2, 3); // no error + +// Using ES6 collection +var m = new Map(); +m.clear(); +// Using ES6 iterable +m.keys(); + +// Using ES6 function +function Baz() { } +Baz.name; + +// Using ES6 math +Math.sign(1); + +// Using ES6 object +var o = { + a: 2, + [Symbol.hasInstance](value: any) { + return false; + } +}; +o.hasOwnProperty(Symbol.hasInstance); + +// Using Es6 proxy +var t = {} +var p = new Proxy(t, {}); + +// Using ES6 reflect +Reflect.isExtensible({}); + +// Using Es6 regexp +var reg = new RegExp("/s"); +reg.flags; + +// Using ES6 string +var str = "Hello world"; +str.includes("hello", 0); + +// Using ES6 symbol +var s = Symbol(); + +// Using ES6 wellknown-symbol +const o1 = { + [Symbol.hasInstance](value: any) { + return false; + } +} + +//// [modularizeLibrary_TargetES6UsingES6Lib.js] +// Using Es6 array +function f(x, y, z) { + return Array.from(arguments); +} +f(1, 2, 3); // no error +// Using ES6 collection +var m = new Map(); +m.clear(); +// Using ES6 iterable +m.keys(); +// Using ES6 function +function Baz() { } +Baz.name; +// Using ES6 math +Math.sign(1); +// Using ES6 object +var o = { + a: 2, + [Symbol.hasInstance](value) { + return false; + } +}; +o.hasOwnProperty(Symbol.hasInstance); +// Using Es6 proxy +var t = {}; +var p = new Proxy(t, {}); +// Using ES6 reflect +Reflect.isExtensible({}); +// Using Es6 regexp +var reg = new RegExp("/s"); +reg.flags; +// Using ES6 string +var str = "Hello world"; +str.includes("hello", 0); +// Using ES6 symbol +var s = Symbol(); +// Using ES6 wellknown-symbol +const o1 = { + [Symbol.hasInstance](value) { + return false; + } +}; diff --git a/tests/baselines/reference/modularizeLibrary_TargetES6UsingES6Lib.symbols b/tests/baselines/reference/modularizeLibrary_TargetES6UsingES6Lib.symbols new file mode 100644 index 00000000000..d3d3e3d1ed6 --- /dev/null +++ b/tests/baselines/reference/modularizeLibrary_TargetES6UsingES6Lib.symbols @@ -0,0 +1,126 @@ +=== tests/cases/compiler/modularizeLibrary_TargetES6UsingES6Lib.ts === + +// Using Es6 array +function f(x: number, y: number, z: number) { +>f : Symbol(f, Decl(modularizeLibrary_TargetES6UsingES6Lib.ts, 0, 0)) +>x : Symbol(x, Decl(modularizeLibrary_TargetES6UsingES6Lib.ts, 2, 11)) +>y : Symbol(y, Decl(modularizeLibrary_TargetES6UsingES6Lib.ts, 2, 21)) +>z : Symbol(z, Decl(modularizeLibrary_TargetES6UsingES6Lib.ts, 2, 32)) + + return Array.from(arguments); +>Array.from : Symbol(ArrayConstructor.from, Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --)) +>Array : Symbol(Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --)) +>from : Symbol(ArrayConstructor.from, Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --)) +>arguments : Symbol(arguments) +} + +f(1, 2, 3); // no error +>f : Symbol(f, Decl(modularizeLibrary_TargetES6UsingES6Lib.ts, 0, 0)) + +// Using ES6 collection +var m = new Map(); +>m : Symbol(m, Decl(modularizeLibrary_TargetES6UsingES6Lib.ts, 9, 3)) +>Map : Symbol(Map, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.collection.d.ts, --, --), Decl(lib.es2015.collection.d.ts, --, --)) + +m.clear(); +>m.clear : Symbol(Map.clear, Decl(lib.es2015.collection.d.ts, --, --)) +>m : Symbol(m, Decl(modularizeLibrary_TargetES6UsingES6Lib.ts, 9, 3)) +>clear : Symbol(Map.clear, Decl(lib.es2015.collection.d.ts, --, --)) + +// Using ES6 iterable +m.keys(); +>m.keys : Symbol(Map.keys, Decl(lib.es2015.iterable.d.ts, --, --)) +>m : Symbol(m, Decl(modularizeLibrary_TargetES6UsingES6Lib.ts, 9, 3)) +>keys : Symbol(Map.keys, Decl(lib.es2015.iterable.d.ts, --, --)) + +// Using ES6 function +function Baz() { } +>Baz : Symbol(Baz, Decl(modularizeLibrary_TargetES6UsingES6Lib.ts, 12, 9)) + +Baz.name; +>Baz.name : Symbol(Function.name, Decl(lib.es2015.core.d.ts, --, --)) +>Baz : Symbol(Baz, Decl(modularizeLibrary_TargetES6UsingES6Lib.ts, 12, 9)) +>name : Symbol(Function.name, Decl(lib.es2015.core.d.ts, --, --)) + +// Using ES6 math +Math.sign(1); +>Math.sign : Symbol(Math.sign, Decl(lib.es2015.core.d.ts, --, --)) +>Math : Symbol(Math, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --)) +>sign : Symbol(Math.sign, Decl(lib.es2015.core.d.ts, --, --)) + +// Using ES6 object +var o = { +>o : Symbol(o, Decl(modularizeLibrary_TargetES6UsingES6Lib.ts, 22, 3)) + + a: 2, +>a : Symbol(a, Decl(modularizeLibrary_TargetES6UsingES6Lib.ts, 22, 9)) + + [Symbol.hasInstance](value: any) { +>Symbol.hasInstance : Symbol(SymbolConstructor.hasInstance, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>hasInstance : Symbol(SymbolConstructor.hasInstance, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>value : Symbol(value, Decl(modularizeLibrary_TargetES6UsingES6Lib.ts, 24, 25)) + + return false; + } +}; +o.hasOwnProperty(Symbol.hasInstance); +>o.hasOwnProperty : Symbol(Object.hasOwnProperty, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --)) +>o : Symbol(o, Decl(modularizeLibrary_TargetES6UsingES6Lib.ts, 22, 3)) +>hasOwnProperty : Symbol(Object.hasOwnProperty, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --)) +>Symbol.hasInstance : Symbol(SymbolConstructor.hasInstance, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>hasInstance : Symbol(SymbolConstructor.hasInstance, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) + +// Using Es6 proxy +var t = {} +>t : Symbol(t, Decl(modularizeLibrary_TargetES6UsingES6Lib.ts, 31, 3)) + +var p = new Proxy(t, {}); +>p : Symbol(p, Decl(modularizeLibrary_TargetES6UsingES6Lib.ts, 32, 3)) +>Proxy : Symbol(Proxy, Decl(lib.es2015.proxy.d.ts, --, --)) +>t : Symbol(t, Decl(modularizeLibrary_TargetES6UsingES6Lib.ts, 31, 3)) + +// Using ES6 reflect +Reflect.isExtensible({}); +>Reflect.isExtensible : Symbol(Reflect.isExtensible, Decl(lib.es2015.reflect.d.ts, --, --)) +>Reflect : Symbol(Reflect, Decl(lib.es2015.reflect.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>isExtensible : Symbol(Reflect.isExtensible, Decl(lib.es2015.reflect.d.ts, --, --)) + +// Using Es6 regexp +var reg = new RegExp("/s"); +>reg : Symbol(reg, Decl(modularizeLibrary_TargetES6UsingES6Lib.ts, 38, 3)) +>RegExp : Symbol(RegExp, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --)) + +reg.flags; +>reg.flags : Symbol(RegExp.flags, Decl(lib.es2015.core.d.ts, --, --)) +>reg : Symbol(reg, Decl(modularizeLibrary_TargetES6UsingES6Lib.ts, 38, 3)) +>flags : Symbol(RegExp.flags, Decl(lib.es2015.core.d.ts, --, --)) + +// Using ES6 string +var str = "Hello world"; +>str : Symbol(str, Decl(modularizeLibrary_TargetES6UsingES6Lib.ts, 42, 3)) + +str.includes("hello", 0); +>str.includes : Symbol(String.includes, Decl(lib.es2015.core.d.ts, --, --)) +>str : Symbol(str, Decl(modularizeLibrary_TargetES6UsingES6Lib.ts, 42, 3)) +>includes : Symbol(String.includes, Decl(lib.es2015.core.d.ts, --, --)) + +// Using ES6 symbol +var s = Symbol(); +>s : Symbol(s, Decl(modularizeLibrary_TargetES6UsingES6Lib.ts, 46, 3)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) + +// Using ES6 wellknown-symbol +const o1 = { +>o1 : Symbol(o1, Decl(modularizeLibrary_TargetES6UsingES6Lib.ts, 49, 5)) + + [Symbol.hasInstance](value: any) { +>Symbol.hasInstance : Symbol(SymbolConstructor.hasInstance, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>hasInstance : Symbol(SymbolConstructor.hasInstance, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>value : Symbol(value, Decl(modularizeLibrary_TargetES6UsingES6Lib.ts, 50, 25)) + + return false; + } +} diff --git a/tests/baselines/reference/modularizeLibrary_TargetES6UsingES6Lib.types b/tests/baselines/reference/modularizeLibrary_TargetES6UsingES6Lib.types new file mode 100644 index 00000000000..7af40d3684c --- /dev/null +++ b/tests/baselines/reference/modularizeLibrary_TargetES6UsingES6Lib.types @@ -0,0 +1,154 @@ +=== tests/cases/compiler/modularizeLibrary_TargetES6UsingES6Lib.ts === + +// Using Es6 array +function f(x: number, y: number, z: number) { +>f : (x: number, y: number, z: number) => any[] +>x : number +>y : number +>z : number + + return Array.from(arguments); +>Array.from(arguments) : any[] +>Array.from : { (iterable: Iterable, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; (iterable: Iterable): T[]; (arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; (arrayLike: ArrayLike): T[]; } +>Array : ArrayConstructor +>from : { (iterable: Iterable, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; (iterable: Iterable): T[]; (arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; (arrayLike: ArrayLike): T[]; } +>arguments : IArguments +} + +f(1, 2, 3); // no error +>f(1, 2, 3) : any[] +>f : (x: number, y: number, z: number) => any[] +>1 : number +>2 : number +>3 : number + +// Using ES6 collection +var m = new Map(); +>m : Map +>new Map() : Map +>Map : MapConstructor + +m.clear(); +>m.clear() : void +>m.clear : () => void +>m : Map +>clear : () => void + +// Using ES6 iterable +m.keys(); +>m.keys() : IterableIterator +>m.keys : () => IterableIterator +>m : Map +>keys : () => IterableIterator + +// Using ES6 function +function Baz() { } +>Baz : () => void + +Baz.name; +>Baz.name : string +>Baz : () => void +>name : string + +// Using ES6 math +Math.sign(1); +>Math.sign(1) : number +>Math.sign : (x: number) => number +>Math : Math +>sign : (x: number) => number +>1 : number + +// Using ES6 object +var o = { +>o : { a: number; [Symbol.hasInstance](value: any): boolean; } +>{ a: 2, [Symbol.hasInstance](value: any) { return false; }} : { a: number; [Symbol.hasInstance](value: any): boolean; } + + a: 2, +>a : number +>2 : number + + [Symbol.hasInstance](value: any) { +>Symbol.hasInstance : symbol +>Symbol : SymbolConstructor +>hasInstance : symbol +>value : any + + return false; +>false : boolean + } +}; +o.hasOwnProperty(Symbol.hasInstance); +>o.hasOwnProperty(Symbol.hasInstance) : boolean +>o.hasOwnProperty : { (v: string): boolean; (v: string | number | symbol): boolean; } +>o : { a: number; [Symbol.hasInstance](value: any): boolean; } +>hasOwnProperty : { (v: string): boolean; (v: string | number | symbol): boolean; } +>Symbol.hasInstance : symbol +>Symbol : SymbolConstructor +>hasInstance : symbol + +// Using Es6 proxy +var t = {} +>t : {} +>{} : {} + +var p = new Proxy(t, {}); +>p : {} +>new Proxy(t, {}) : {} +>Proxy : ProxyConstructor +>t : {} +>{} : {} + +// Using ES6 reflect +Reflect.isExtensible({}); +>Reflect.isExtensible({}) : boolean +>Reflect.isExtensible : (target: any) => boolean +>Reflect : typeof Reflect +>isExtensible : (target: any) => boolean +>{} : {} + +// Using Es6 regexp +var reg = new RegExp("/s"); +>reg : RegExp +>new RegExp("/s") : RegExp +>RegExp : RegExpConstructor +>"/s" : string + +reg.flags; +>reg.flags : string +>reg : RegExp +>flags : string + +// Using ES6 string +var str = "Hello world"; +>str : string +>"Hello world" : string + +str.includes("hello", 0); +>str.includes("hello", 0) : boolean +>str.includes : (searchString: string, position?: number) => boolean +>str : string +>includes : (searchString: string, position?: number) => boolean +>"hello" : string +>0 : number + +// Using ES6 symbol +var s = Symbol(); +>s : symbol +>Symbol() : symbol +>Symbol : SymbolConstructor + +// Using ES6 wellknown-symbol +const o1 = { +>o1 : { [Symbol.hasInstance](value: any): boolean; } +>{ [Symbol.hasInstance](value: any) { return false; }} : { [Symbol.hasInstance](value: any): boolean; } + + [Symbol.hasInstance](value: any) { +>Symbol.hasInstance : symbol +>Symbol : SymbolConstructor +>hasInstance : symbol +>value : any + + return false; +>false : boolean + } +} diff --git a/tests/baselines/reference/modularizeLibrary_UsingES5LibAndES6ArrayLib.js b/tests/baselines/reference/modularizeLibrary_UsingES5LibAndES6ArrayLib.js new file mode 100644 index 00000000000..29e0afc711c --- /dev/null +++ b/tests/baselines/reference/modularizeLibrary_UsingES5LibAndES6ArrayLib.js @@ -0,0 +1,15 @@ +//// [modularizeLibrary_UsingES5LibAndES6ArrayLib.ts] + +// No error +function f(x: number, y: number, z: number) { + return Array.from(arguments); +} + +f(1, 2, 3); + +//// [modularizeLibrary_UsingES5LibAndES6ArrayLib.js] +// No error +function f(x, y, z) { + return Array.from(arguments); +} +f(1, 2, 3); diff --git a/tests/baselines/reference/modularizeLibrary_UsingES5LibAndES6ArrayLib.symbols b/tests/baselines/reference/modularizeLibrary_UsingES5LibAndES6ArrayLib.symbols new file mode 100644 index 00000000000..ce03d4cfc59 --- /dev/null +++ b/tests/baselines/reference/modularizeLibrary_UsingES5LibAndES6ArrayLib.symbols @@ -0,0 +1,19 @@ +=== tests/cases/compiler/modularizeLibrary_UsingES5LibAndES6ArrayLib.ts === + +// No error +function f(x: number, y: number, z: number) { +>f : Symbol(f, Decl(modularizeLibrary_UsingES5LibAndES6ArrayLib.ts, 0, 0)) +>x : Symbol(x, Decl(modularizeLibrary_UsingES5LibAndES6ArrayLib.ts, 2, 11)) +>y : Symbol(y, Decl(modularizeLibrary_UsingES5LibAndES6ArrayLib.ts, 2, 21)) +>z : Symbol(z, Decl(modularizeLibrary_UsingES5LibAndES6ArrayLib.ts, 2, 32)) + + return Array.from(arguments); +>Array.from : Symbol(ArrayConstructor.from, Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --)) +>Array : Symbol(Array, Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) +>from : Symbol(ArrayConstructor.from, Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --)) +>arguments : Symbol(arguments) +} + +f(1, 2, 3); +>f : Symbol(f, Decl(modularizeLibrary_UsingES5LibAndES6ArrayLib.ts, 0, 0)) + diff --git a/tests/baselines/reference/modularizeLibrary_UsingES5LibAndES6ArrayLib.types b/tests/baselines/reference/modularizeLibrary_UsingES5LibAndES6ArrayLib.types new file mode 100644 index 00000000000..d17a6fcbcbb --- /dev/null +++ b/tests/baselines/reference/modularizeLibrary_UsingES5LibAndES6ArrayLib.types @@ -0,0 +1,24 @@ +=== tests/cases/compiler/modularizeLibrary_UsingES5LibAndES6ArrayLib.ts === + +// No error +function f(x: number, y: number, z: number) { +>f : (x: number, y: number, z: number) => any[] +>x : number +>y : number +>z : number + + return Array.from(arguments); +>Array.from(arguments) : any[] +>Array.from : { (arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; (arrayLike: ArrayLike): T[]; } +>Array : ArrayConstructor +>from : { (arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; (arrayLike: ArrayLike): T[]; } +>arguments : IArguments +} + +f(1, 2, 3); +>f(1, 2, 3) : any[] +>f : (x: number, y: number, z: number) => any[] +>1 : number +>2 : number +>3 : number + diff --git a/tests/baselines/reference/modularizeLibrary_UsingES5LibAndES6FeatureLibs.js b/tests/baselines/reference/modularizeLibrary_UsingES5LibAndES6FeatureLibs.js new file mode 100644 index 00000000000..892bc688524 --- /dev/null +++ b/tests/baselines/reference/modularizeLibrary_UsingES5LibAndES6FeatureLibs.js @@ -0,0 +1,27 @@ +//// [modularizeLibrary_UsingES5LibAndES6FeatureLibs.ts] + +var s = Symbol(); +var t = {}; +var p = new Proxy(t, {}); + +Reflect.ownKeys({}); + +function* idGen() { + let i = 10; + while (i < 20) { + yield i + 2; + } +} + + +//// [modularizeLibrary_UsingES5LibAndES6FeatureLibs.js] +var s = Symbol(); +var t = {}; +var p = new Proxy(t, {}); +Reflect.ownKeys({}); +function* idGen() { + let i = 10; + while (i < 20) { + yield i + 2; + } +} diff --git a/tests/baselines/reference/modularizeLibrary_UsingES5LibAndES6FeatureLibs.symbols b/tests/baselines/reference/modularizeLibrary_UsingES5LibAndES6FeatureLibs.symbols new file mode 100644 index 00000000000..e6f7584c471 --- /dev/null +++ b/tests/baselines/reference/modularizeLibrary_UsingES5LibAndES6FeatureLibs.symbols @@ -0,0 +1,33 @@ +=== tests/cases/compiler/modularizeLibrary_UsingES5LibAndES6FeatureLibs.ts === + +var s = Symbol(); +>s : Symbol(s, Decl(modularizeLibrary_UsingES5LibAndES6FeatureLibs.ts, 1, 3)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) + +var t = {}; +>t : Symbol(t, Decl(modularizeLibrary_UsingES5LibAndES6FeatureLibs.ts, 2, 3)) + +var p = new Proxy(t, {}); +>p : Symbol(p, Decl(modularizeLibrary_UsingES5LibAndES6FeatureLibs.ts, 3, 3)) +>Proxy : Symbol(Proxy, Decl(lib.es2015.proxy.d.ts, --, --)) +>t : Symbol(t, Decl(modularizeLibrary_UsingES5LibAndES6FeatureLibs.ts, 2, 3)) + +Reflect.ownKeys({}); +>Reflect.ownKeys : Symbol(Reflect.ownKeys, Decl(lib.es2015.reflect.d.ts, --, --)) +>Reflect : Symbol(Reflect, Decl(lib.es2015.reflect.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>ownKeys : Symbol(Reflect.ownKeys, Decl(lib.es2015.reflect.d.ts, --, --)) + +function* idGen() { +>idGen : Symbol(idGen, Decl(modularizeLibrary_UsingES5LibAndES6FeatureLibs.ts, 5, 20)) + + let i = 10; +>i : Symbol(i, Decl(modularizeLibrary_UsingES5LibAndES6FeatureLibs.ts, 8, 7)) + + while (i < 20) { +>i : Symbol(i, Decl(modularizeLibrary_UsingES5LibAndES6FeatureLibs.ts, 8, 7)) + + yield i + 2; +>i : Symbol(i, Decl(modularizeLibrary_UsingES5LibAndES6FeatureLibs.ts, 8, 7)) + } +} + diff --git a/tests/baselines/reference/modularizeLibrary_UsingES5LibAndES6FeatureLibs.types b/tests/baselines/reference/modularizeLibrary_UsingES5LibAndES6FeatureLibs.types new file mode 100644 index 00000000000..820c2f6dc8a --- /dev/null +++ b/tests/baselines/reference/modularizeLibrary_UsingES5LibAndES6FeatureLibs.types @@ -0,0 +1,45 @@ +=== tests/cases/compiler/modularizeLibrary_UsingES5LibAndES6FeatureLibs.ts === + +var s = Symbol(); +>s : symbol +>Symbol() : symbol +>Symbol : SymbolConstructor + +var t = {}; +>t : {} +>{} : {} + +var p = new Proxy(t, {}); +>p : {} +>new Proxy(t, {}) : {} +>Proxy : ProxyConstructor +>t : {} +>{} : {} + +Reflect.ownKeys({}); +>Reflect.ownKeys({}) : (string | number | symbol)[] +>Reflect.ownKeys : (target: any) => (string | number | symbol)[] +>Reflect : typeof Reflect +>ownKeys : (target: any) => (string | number | symbol)[] +>{} : {} + +function* idGen() { +>idGen : () => IterableIterator + + let i = 10; +>i : number +>10 : number + + while (i < 20) { +>i < 20 : boolean +>i : number +>20 : number + + yield i + 2; +>yield i + 2 : any +>i + 2 : number +>i : number +>2 : number + } +} + diff --git a/tests/baselines/reference/modularizeLibrary_UsingES5LibES6ArrayLibES6WellknownSymbolLib.js b/tests/baselines/reference/modularizeLibrary_UsingES5LibES6ArrayLibES6WellknownSymbolLib.js new file mode 100644 index 00000000000..7755fc72ce8 --- /dev/null +++ b/tests/baselines/reference/modularizeLibrary_UsingES5LibES6ArrayLibES6WellknownSymbolLib.js @@ -0,0 +1,17 @@ +//// [modularizeLibrary_UsingES5LibES6ArrayLibES6WellknownSymbolLib.ts] + +function f(x: number, y: number, z: number) { + return Array.from(arguments); +} + +f(1, 2, 3); // no error +let a = ['c', 'd']; +a[Symbol.isConcatSpreadable] = false; + +//// [modularizeLibrary_UsingES5LibES6ArrayLibES6WellknownSymbolLib.js] +function f(x, y, z) { + return Array.from(arguments); +} +f(1, 2, 3); // no error +var a = ['c', 'd']; +a[Symbol.isConcatSpreadable] = false; diff --git a/tests/baselines/reference/modularizeLibrary_UsingES5LibES6ArrayLibES6WellknownSymbolLib.symbols b/tests/baselines/reference/modularizeLibrary_UsingES5LibES6ArrayLibES6WellknownSymbolLib.symbols new file mode 100644 index 00000000000..0ed5ec38513 --- /dev/null +++ b/tests/baselines/reference/modularizeLibrary_UsingES5LibES6ArrayLibES6WellknownSymbolLib.symbols @@ -0,0 +1,27 @@ +=== tests/cases/compiler/modularizeLibrary_UsingES5LibES6ArrayLibES6WellknownSymbolLib.ts === + +function f(x: number, y: number, z: number) { +>f : Symbol(f, Decl(modularizeLibrary_UsingES5LibES6ArrayLibES6WellknownSymbolLib.ts, 0, 0)) +>x : Symbol(x, Decl(modularizeLibrary_UsingES5LibES6ArrayLibES6WellknownSymbolLib.ts, 1, 11)) +>y : Symbol(y, Decl(modularizeLibrary_UsingES5LibES6ArrayLibES6WellknownSymbolLib.ts, 1, 21)) +>z : Symbol(z, Decl(modularizeLibrary_UsingES5LibES6ArrayLibES6WellknownSymbolLib.ts, 1, 32)) + + return Array.from(arguments); +>Array.from : Symbol(ArrayConstructor.from, Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --)) +>Array : Symbol(Array, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) +>from : Symbol(ArrayConstructor.from, Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --)) +>arguments : Symbol(arguments) +} + +f(1, 2, 3); // no error +>f : Symbol(f, Decl(modularizeLibrary_UsingES5LibES6ArrayLibES6WellknownSymbolLib.ts, 0, 0)) + +let a = ['c', 'd']; +>a : Symbol(a, Decl(modularizeLibrary_UsingES5LibES6ArrayLibES6WellknownSymbolLib.ts, 6, 3)) + +a[Symbol.isConcatSpreadable] = false; +>a : Symbol(a, Decl(modularizeLibrary_UsingES5LibES6ArrayLibES6WellknownSymbolLib.ts, 6, 3)) +>Symbol.isConcatSpreadable : Symbol(SymbolConstructor.isConcatSpreadable, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>isConcatSpreadable : Symbol(SymbolConstructor.isConcatSpreadable, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) + diff --git a/tests/baselines/reference/modularizeLibrary_UsingES5LibES6ArrayLibES6WellknownSymbolLib.types b/tests/baselines/reference/modularizeLibrary_UsingES5LibES6ArrayLibES6WellknownSymbolLib.types new file mode 100644 index 00000000000..3ae08c79fd4 --- /dev/null +++ b/tests/baselines/reference/modularizeLibrary_UsingES5LibES6ArrayLibES6WellknownSymbolLib.types @@ -0,0 +1,38 @@ +=== tests/cases/compiler/modularizeLibrary_UsingES5LibES6ArrayLibES6WellknownSymbolLib.ts === + +function f(x: number, y: number, z: number) { +>f : (x: number, y: number, z: number) => any[] +>x : number +>y : number +>z : number + + return Array.from(arguments); +>Array.from(arguments) : any[] +>Array.from : { (arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; (arrayLike: ArrayLike): T[]; } +>Array : ArrayConstructor +>from : { (arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; (arrayLike: ArrayLike): T[]; } +>arguments : IArguments +} + +f(1, 2, 3); // no error +>f(1, 2, 3) : any[] +>f : (x: number, y: number, z: number) => any[] +>1 : number +>2 : number +>3 : number + +let a = ['c', 'd']; +>a : string[] +>['c', 'd'] : string[] +>'c' : string +>'d' : string + +a[Symbol.isConcatSpreadable] = false; +>a[Symbol.isConcatSpreadable] = false : boolean +>a[Symbol.isConcatSpreadable] : any +>a : string[] +>Symbol.isConcatSpreadable : symbol +>Symbol : SymbolConstructor +>isConcatSpreadable : symbol +>false : boolean + diff --git a/tests/baselines/reference/moduleAliasInterface.symbols b/tests/baselines/reference/moduleAliasInterface.symbols index 9c4cfdf9b14..c7c85213fa1 100644 --- a/tests/baselines/reference/moduleAliasInterface.symbols +++ b/tests/baselines/reference/moduleAliasInterface.symbols @@ -40,7 +40,7 @@ module editor { >Mode : Symbol(modes.Mode, Decl(moduleAliasInterface.ts, 3, 2)) public foo(p1:modes.IMode) { ->foo : Symbol(foo, Decl(moduleAliasInterface.ts, 19, 50)) +>foo : Symbol(Bug.foo, Decl(moduleAliasInterface.ts, 19, 50)) >p1 : Symbol(p1, Decl(moduleAliasInterface.ts, 20, 13)) >modes : Symbol(modes, Decl(moduleAliasInterface.ts, 12, 15)) >IMode : Symbol(modes.IMode, Decl(moduleAliasInterface.ts, 0, 15)) diff --git a/tests/baselines/reference/moduleAndInterfaceSharingName4.symbols b/tests/baselines/reference/moduleAndInterfaceSharingName4.symbols index 383b1801b2d..cb59e73e4ef 100644 --- a/tests/baselines/reference/moduleAndInterfaceSharingName4.symbols +++ b/tests/baselines/reference/moduleAndInterfaceSharingName4.symbols @@ -15,7 +15,7 @@ declare module D3 { >Color : Symbol(Color, Decl(moduleAndInterfaceSharingName4.ts, 3, 18)) darker: Color; ->darker : Symbol(darker, Decl(moduleAndInterfaceSharingName4.ts, 4, 32)) +>darker : Symbol(Color.darker, Decl(moduleAndInterfaceSharingName4.ts, 4, 32)) >Color : Symbol(Color, Decl(moduleAndInterfaceSharingName4.ts, 3, 18)) } } diff --git a/tests/baselines/reference/moduleAugmentationDeclarationEmit1.symbols b/tests/baselines/reference/moduleAugmentationDeclarationEmit1.symbols index eca44ec774d..17e31591be0 100644 --- a/tests/baselines/reference/moduleAugmentationDeclarationEmit1.symbols +++ b/tests/baselines/reference/moduleAugmentationDeclarationEmit1.symbols @@ -14,7 +14,7 @@ declare module "./observable" { >T : Symbol(T, Decl(observable.ts, 0, 32), Decl(map.ts, 6, 25)) map(proj: (e:T) => U): Observable ->map : Symbol(map, Decl(map.ts, 6, 29)) +>map : Symbol(Observable.map, Decl(map.ts, 6, 29)) >U : Symbol(U, Decl(map.ts, 7, 12)) >proj : Symbol(proj, Decl(map.ts, 7, 15)) >e : Symbol(e, Decl(map.ts, 7, 22)) @@ -37,7 +37,7 @@ export declare class Observable { >T : Symbol(T, Decl(observable.ts, 0, 32), Decl(map.ts, 6, 25)) filter(pred: (e:T) => boolean): Observable; ->filter : Symbol(filter, Decl(observable.ts, 0, 36)) +>filter : Symbol(Observable.filter, Decl(observable.ts, 0, 36)) >pred : Symbol(pred, Decl(observable.ts, 1, 11)) >e : Symbol(e, Decl(observable.ts, 1, 18)) >T : Symbol(T, Decl(observable.ts, 0, 32), Decl(map.ts, 6, 25)) diff --git a/tests/baselines/reference/moduleAugmentationDeclarationEmit2.symbols b/tests/baselines/reference/moduleAugmentationDeclarationEmit2.symbols index d0f25f693fe..38a0506d179 100644 --- a/tests/baselines/reference/moduleAugmentationDeclarationEmit2.symbols +++ b/tests/baselines/reference/moduleAugmentationDeclarationEmit2.symbols @@ -14,7 +14,7 @@ declare module "./observable" { >T : Symbol(T, Decl(observable.ts, 0, 32), Decl(map.ts, 6, 25)) map(proj: (e:T) => U): Observable ->map : Symbol(map, Decl(map.ts, 6, 29)) +>map : Symbol(Observable.map, Decl(map.ts, 6, 29)) >U : Symbol(U, Decl(map.ts, 7, 12)) >proj : Symbol(proj, Decl(map.ts, 7, 15)) >e : Symbol(e, Decl(map.ts, 7, 22)) @@ -37,7 +37,7 @@ export declare class Observable { >T : Symbol(T, Decl(observable.ts, 0, 32), Decl(map.ts, 6, 25)) filter(pred: (e:T) => boolean): Observable; ->filter : Symbol(filter, Decl(observable.ts, 0, 36)) +>filter : Symbol(Observable.filter, Decl(observable.ts, 0, 36)) >pred : Symbol(pred, Decl(observable.ts, 1, 11)) >e : Symbol(e, Decl(observable.ts, 1, 18)) >T : Symbol(T, Decl(observable.ts, 0, 32), Decl(map.ts, 6, 25)) diff --git a/tests/baselines/reference/moduleAugmentationExtendAmbientModule1.symbols b/tests/baselines/reference/moduleAugmentationExtendAmbientModule1.symbols index a471651da0b..62ac82b6953 100644 --- a/tests/baselines/reference/moduleAugmentationExtendAmbientModule1.symbols +++ b/tests/baselines/reference/moduleAugmentationExtendAmbientModule1.symbols @@ -34,7 +34,7 @@ declare module "observable" { >T : Symbol(T, Decl(observable.d.ts, 1, 21), Decl(map.ts, 6, 25)) map(proj: (e:T) => U): Observable ->map : Symbol(map, Decl(map.ts, 6, 29)) +>map : Symbol(Observable.map, Decl(map.ts, 6, 29)) >U : Symbol(U, Decl(map.ts, 7, 12)) >proj : Symbol(proj, Decl(map.ts, 7, 15)) >e : Symbol(e, Decl(map.ts, 7, 22)) @@ -58,7 +58,7 @@ declare module "observable" { >T : Symbol(T, Decl(observable.d.ts, 1, 21), Decl(map.ts, 6, 25)) filter(pred: (e:T) => boolean): Observable; ->filter : Symbol(filter, Decl(observable.d.ts, 1, 25)) +>filter : Symbol(Observable.filter, Decl(observable.d.ts, 1, 25)) >pred : Symbol(pred, Decl(observable.d.ts, 2, 15)) >e : Symbol(e, Decl(observable.d.ts, 2, 22)) >T : Symbol(T, Decl(observable.d.ts, 1, 21), Decl(map.ts, 6, 25)) diff --git a/tests/baselines/reference/moduleAugmentationExtendAmbientModule2.symbols b/tests/baselines/reference/moduleAugmentationExtendAmbientModule2.symbols index f907f4d6979..bbd3b6e5f79 100644 --- a/tests/baselines/reference/moduleAugmentationExtendAmbientModule2.symbols +++ b/tests/baselines/reference/moduleAugmentationExtendAmbientModule2.symbols @@ -50,7 +50,7 @@ declare module "observable" { >T : Symbol(T, Decl(observable.d.ts, 1, 21), Decl(map.ts, 6, 25)) map(proj: (e:T) => U): Observable ->map : Symbol(map, Decl(map.ts, 6, 29)) +>map : Symbol(Observable.map, Decl(map.ts, 6, 29)) >U : Symbol(U, Decl(map.ts, 7, 12)) >proj : Symbol(proj, Decl(map.ts, 7, 15)) >e : Symbol(e, Decl(map.ts, 7, 22)) @@ -74,7 +74,7 @@ declare module "observable" { >T : Symbol(T, Decl(observable.d.ts, 1, 21), Decl(map.ts, 6, 25)) filter(pred: (e:T) => boolean): Observable; ->filter : Symbol(filter, Decl(observable.d.ts, 1, 25)) +>filter : Symbol(Observable.filter, Decl(observable.d.ts, 1, 25)) >pred : Symbol(pred, Decl(observable.d.ts, 2, 15)) >e : Symbol(e, Decl(observable.d.ts, 2, 22)) >T : Symbol(T, Decl(observable.d.ts, 1, 21), Decl(map.ts, 6, 25)) diff --git a/tests/baselines/reference/moduleAugmentationExtendFileModule1.symbols b/tests/baselines/reference/moduleAugmentationExtendFileModule1.symbols index eca44ec774d..17e31591be0 100644 --- a/tests/baselines/reference/moduleAugmentationExtendFileModule1.symbols +++ b/tests/baselines/reference/moduleAugmentationExtendFileModule1.symbols @@ -14,7 +14,7 @@ declare module "./observable" { >T : Symbol(T, Decl(observable.ts, 0, 32), Decl(map.ts, 6, 25)) map(proj: (e:T) => U): Observable ->map : Symbol(map, Decl(map.ts, 6, 29)) +>map : Symbol(Observable.map, Decl(map.ts, 6, 29)) >U : Symbol(U, Decl(map.ts, 7, 12)) >proj : Symbol(proj, Decl(map.ts, 7, 15)) >e : Symbol(e, Decl(map.ts, 7, 22)) @@ -37,7 +37,7 @@ export declare class Observable { >T : Symbol(T, Decl(observable.ts, 0, 32), Decl(map.ts, 6, 25)) filter(pred: (e:T) => boolean): Observable; ->filter : Symbol(filter, Decl(observable.ts, 0, 36)) +>filter : Symbol(Observable.filter, Decl(observable.ts, 0, 36)) >pred : Symbol(pred, Decl(observable.ts, 1, 11)) >e : Symbol(e, Decl(observable.ts, 1, 18)) >T : Symbol(T, Decl(observable.ts, 0, 32), Decl(map.ts, 6, 25)) diff --git a/tests/baselines/reference/moduleAugmentationExtendFileModule2.symbols b/tests/baselines/reference/moduleAugmentationExtendFileModule2.symbols index d0f25f693fe..38a0506d179 100644 --- a/tests/baselines/reference/moduleAugmentationExtendFileModule2.symbols +++ b/tests/baselines/reference/moduleAugmentationExtendFileModule2.symbols @@ -14,7 +14,7 @@ declare module "./observable" { >T : Symbol(T, Decl(observable.ts, 0, 32), Decl(map.ts, 6, 25)) map(proj: (e:T) => U): Observable ->map : Symbol(map, Decl(map.ts, 6, 29)) +>map : Symbol(Observable.map, Decl(map.ts, 6, 29)) >U : Symbol(U, Decl(map.ts, 7, 12)) >proj : Symbol(proj, Decl(map.ts, 7, 15)) >e : Symbol(e, Decl(map.ts, 7, 22)) @@ -37,7 +37,7 @@ export declare class Observable { >T : Symbol(T, Decl(observable.ts, 0, 32), Decl(map.ts, 6, 25)) filter(pred: (e:T) => boolean): Observable; ->filter : Symbol(filter, Decl(observable.ts, 0, 36)) +>filter : Symbol(Observable.filter, Decl(observable.ts, 0, 36)) >pred : Symbol(pred, Decl(observable.ts, 1, 11)) >e : Symbol(e, Decl(observable.ts, 1, 18)) >T : Symbol(T, Decl(observable.ts, 0, 32), Decl(map.ts, 6, 25)) diff --git a/tests/baselines/reference/moduleAugmentationGlobal1.symbols b/tests/baselines/reference/moduleAugmentationGlobal1.symbols index 36139555c96..4115379b0f2 100644 --- a/tests/baselines/reference/moduleAugmentationGlobal1.symbols +++ b/tests/baselines/reference/moduleAugmentationGlobal1.symbols @@ -2,7 +2,7 @@ export class A {x: number;} >A : Symbol(A, Decl(f1.ts, 0, 0)) ->x : Symbol(x, Decl(f1.ts, 1, 16)) +>x : Symbol(A.x, Decl(f1.ts, 1, 16)) === tests/cases/compiler/f2.ts === import {A} from "./f1"; @@ -17,7 +17,7 @@ declare global { >T : Symbol(T, Decl(lib.d.ts, --, --), Decl(f2.ts, 4, 20)) getA(): A; ->getA : Symbol(getA, Decl(f2.ts, 4, 24)) +>getA : Symbol(Array.getA, Decl(f2.ts, 4, 24)) >A : Symbol(A, Decl(f2.ts, 0, 8)) } } diff --git a/tests/baselines/reference/moduleAugmentationGlobal1.types b/tests/baselines/reference/moduleAugmentationGlobal1.types index c1742edd7c0..9963cbe1162 100644 --- a/tests/baselines/reference/moduleAugmentationGlobal1.types +++ b/tests/baselines/reference/moduleAugmentationGlobal1.types @@ -10,7 +10,7 @@ import {A} from "./f1"; // change the shape of Array declare global { ->global : typeof +>global : any interface Array { >Array : T[] diff --git a/tests/baselines/reference/moduleAugmentationGlobal2.symbols b/tests/baselines/reference/moduleAugmentationGlobal2.symbols index 4ee2b9bace8..48fe93353fb 100644 --- a/tests/baselines/reference/moduleAugmentationGlobal2.symbols +++ b/tests/baselines/reference/moduleAugmentationGlobal2.symbols @@ -17,7 +17,7 @@ declare global { >T : Symbol(T, Decl(lib.d.ts, --, --), Decl(f2.ts, 5, 20)) getCountAsString(): string; ->getCountAsString : Symbol(getCountAsString, Decl(f2.ts, 5, 24)) +>getCountAsString : Symbol(Array.getCountAsString, Decl(f2.ts, 5, 24)) } } diff --git a/tests/baselines/reference/moduleAugmentationGlobal2.types b/tests/baselines/reference/moduleAugmentationGlobal2.types index 36ef480d8b2..96252569da6 100644 --- a/tests/baselines/reference/moduleAugmentationGlobal2.types +++ b/tests/baselines/reference/moduleAugmentationGlobal2.types @@ -10,7 +10,7 @@ import {A} from "./f1"; >A : typeof A declare global { ->global : typeof +>global : any interface Array { >Array : T[] diff --git a/tests/baselines/reference/moduleAugmentationGlobal3.symbols b/tests/baselines/reference/moduleAugmentationGlobal3.symbols index acb9a7b9e58..41c7f25b818 100644 --- a/tests/baselines/reference/moduleAugmentationGlobal3.symbols +++ b/tests/baselines/reference/moduleAugmentationGlobal3.symbols @@ -17,7 +17,7 @@ declare global { >T : Symbol(T, Decl(lib.d.ts, --, --), Decl(f2.ts, 5, 20)) getCountAsString(): string; ->getCountAsString : Symbol(getCountAsString, Decl(f2.ts, 5, 24)) +>getCountAsString : Symbol(Array.getCountAsString, Decl(f2.ts, 5, 24)) } } diff --git a/tests/baselines/reference/moduleAugmentationGlobal3.types b/tests/baselines/reference/moduleAugmentationGlobal3.types index 58d7f30faab..0e8e731aec1 100644 --- a/tests/baselines/reference/moduleAugmentationGlobal3.types +++ b/tests/baselines/reference/moduleAugmentationGlobal3.types @@ -10,7 +10,7 @@ import {A} from "./f1"; >A : typeof A declare global { ->global : typeof +>global : any interface Array { >Array : T[] diff --git a/tests/baselines/reference/moduleAugmentationGlobal4.errors.txt b/tests/baselines/reference/moduleAugmentationGlobal4.errors.txt deleted file mode 100644 index fd3444f56b1..00000000000 --- a/tests/baselines/reference/moduleAugmentationGlobal4.errors.txt +++ /dev/null @@ -1,25 +0,0 @@ -tests/cases/compiler/f1.ts(3,15): error TS2665: Module augmentation cannot introduce new names in the top level scope. -tests/cases/compiler/f2.ts(3,15): error TS2665: Module augmentation cannot introduce new names in the top level scope. - - -==== tests/cases/compiler/f1.ts (1 errors) ==== - - declare global { - interface Something {x} - ~~~~~~~~~ -!!! error TS2665: Module augmentation cannot introduce new names in the top level scope. - } - export {}; -==== tests/cases/compiler/f2.ts (1 errors) ==== - - declare global { - interface Something {y} - ~~~~~~~~~ -!!! error TS2665: Module augmentation cannot introduce new names in the top level scope. - } - export {}; -==== tests/cases/compiler/f3.ts (0 errors) ==== - import "./f1"; - import "./f2"; - - \ No newline at end of file diff --git a/tests/baselines/reference/moduleAugmentationGlobal4.symbols b/tests/baselines/reference/moduleAugmentationGlobal4.symbols new file mode 100644 index 00000000000..f9cdac3fc2e --- /dev/null +++ b/tests/baselines/reference/moduleAugmentationGlobal4.symbols @@ -0,0 +1,26 @@ +=== tests/cases/compiler/f1.ts === + +declare global { +>global : Symbol(, Decl(f1.ts, 0, 0)) + + interface Something {x} +>Something : Symbol(Something, Decl(f1.ts, 1, 16), Decl(f2.ts, 1, 16)) +>x : Symbol(Something.x, Decl(f1.ts, 2, 25)) +} +export {}; +=== tests/cases/compiler/f2.ts === + +declare global { +>global : Symbol(, Decl(f2.ts, 0, 0)) + + interface Something {y} +>Something : Symbol(Something, Decl(f1.ts, 1, 16), Decl(f2.ts, 1, 16)) +>y : Symbol(Something.y, Decl(f2.ts, 2, 25)) +} +export {}; +=== tests/cases/compiler/f3.ts === +import "./f1"; +No type information for this code.import "./f2"; +No type information for this code. +No type information for this code. +No type information for this code. \ No newline at end of file diff --git a/tests/baselines/reference/moduleAugmentationGlobal4.types b/tests/baselines/reference/moduleAugmentationGlobal4.types new file mode 100644 index 00000000000..e3e780d69ff --- /dev/null +++ b/tests/baselines/reference/moduleAugmentationGlobal4.types @@ -0,0 +1,26 @@ +=== tests/cases/compiler/f1.ts === + +declare global { +>global : any + + interface Something {x} +>Something : Something +>x : any +} +export {}; +=== tests/cases/compiler/f2.ts === + +declare global { +>global : any + + interface Something {y} +>Something : Something +>y : any +} +export {}; +=== tests/cases/compiler/f3.ts === +import "./f1"; +No type information for this code.import "./f2"; +No type information for this code. +No type information for this code. +No type information for this code. \ No newline at end of file diff --git a/tests/baselines/reference/moduleAugmentationGlobal5.errors.txt b/tests/baselines/reference/moduleAugmentationGlobal5.errors.txt deleted file mode 100644 index 4f1f9133760..00000000000 --- a/tests/baselines/reference/moduleAugmentationGlobal5.errors.txt +++ /dev/null @@ -1,28 +0,0 @@ -tests/cases/compiler/f1.d.ts(4,19): error TS2665: Module augmentation cannot introduce new names in the top level scope. -tests/cases/compiler/f2.d.ts(3,19): error TS2665: Module augmentation cannot introduce new names in the top level scope. - - -==== tests/cases/compiler/f3.ts (0 errors) ==== - /// - /// - import "A"; - import "B"; - - -==== tests/cases/compiler/f1.d.ts (1 errors) ==== - - declare module "A" { - global { - interface Something {x} - ~~~~~~~~~ -!!! error TS2665: Module augmentation cannot introduce new names in the top level scope. - } - } -==== tests/cases/compiler/f2.d.ts (1 errors) ==== - declare module "B" { - global { - interface Something {y} - ~~~~~~~~~ -!!! error TS2665: Module augmentation cannot introduce new names in the top level scope. - } - } \ No newline at end of file diff --git a/tests/baselines/reference/moduleAugmentationGlobal5.symbols b/tests/baselines/reference/moduleAugmentationGlobal5.symbols new file mode 100644 index 00000000000..27548b05ef2 --- /dev/null +++ b/tests/baselines/reference/moduleAugmentationGlobal5.symbols @@ -0,0 +1,28 @@ +=== tests/cases/compiler/f3.ts === +/// +No type information for this code./// +No type information for this code.import "A"; +No type information for this code.import "B"; +No type information for this code. +No type information for this code. +No type information for this code.=== tests/cases/compiler/f1.d.ts === + +declare module "A" { + global { +>global : Symbol(, Decl(f1.d.ts, 1, 20)) + + interface Something {x} +>Something : Symbol(Something, Decl(f1.d.ts, 2, 12), Decl(f2.d.ts, 1, 12)) +>x : Symbol(Something.x, Decl(f1.d.ts, 3, 29)) + } +} +=== tests/cases/compiler/f2.d.ts === +declare module "B" { + global { +>global : Symbol(, Decl(f2.d.ts, 0, 20)) + + interface Something {y} +>Something : Symbol(Something, Decl(f1.d.ts, 2, 12), Decl(f2.d.ts, 1, 12)) +>y : Symbol(Something.y, Decl(f2.d.ts, 2, 29)) + } +} diff --git a/tests/baselines/reference/moduleAugmentationGlobal5.types b/tests/baselines/reference/moduleAugmentationGlobal5.types new file mode 100644 index 00000000000..b2e6139eb26 --- /dev/null +++ b/tests/baselines/reference/moduleAugmentationGlobal5.types @@ -0,0 +1,28 @@ +=== tests/cases/compiler/f3.ts === +/// +No type information for this code./// +No type information for this code.import "A"; +No type information for this code.import "B"; +No type information for this code. +No type information for this code. +No type information for this code.=== tests/cases/compiler/f1.d.ts === + +declare module "A" { + global { +>global : any + + interface Something {x} +>Something : Something +>x : any + } +} +=== tests/cases/compiler/f2.d.ts === +declare module "B" { + global { +>global : any + + interface Something {y} +>Something : Something +>y : any + } +} diff --git a/tests/baselines/reference/moduleAugmentationImportsAndExports1.symbols b/tests/baselines/reference/moduleAugmentationImportsAndExports1.symbols index c641cad5228..84daab19bf5 100644 --- a/tests/baselines/reference/moduleAugmentationImportsAndExports1.symbols +++ b/tests/baselines/reference/moduleAugmentationImportsAndExports1.symbols @@ -8,7 +8,7 @@ export class B { >B : Symbol(B, Decl(f2.ts, 0, 0)) n: number; ->n : Symbol(n, Decl(f2.ts, 0, 16)) +>n : Symbol(B.n, Decl(f2.ts, 0, 16)) } === tests/cases/compiler/f3.ts === @@ -31,7 +31,7 @@ declare module "./f1" { >A : Symbol(A, Decl(f1.ts, 0, 0), Decl(f3.ts, 4, 23)) foo(): B; ->foo : Symbol(foo, Decl(f3.ts, 5, 17)) +>foo : Symbol(A.foo, Decl(f3.ts, 5, 17)) >B : Symbol(B, Decl(f3.ts, 1, 8)) } } diff --git a/tests/baselines/reference/moduleAugmentationImportsAndExports4.symbols b/tests/baselines/reference/moduleAugmentationImportsAndExports4.symbols index 94dc05519dd..fd1ec87b2a2 100644 --- a/tests/baselines/reference/moduleAugmentationImportsAndExports4.symbols +++ b/tests/baselines/reference/moduleAugmentationImportsAndExports4.symbols @@ -8,7 +8,7 @@ export class B { >B : Symbol(B, Decl(f2.ts, 0, 0)) n: number; ->n : Symbol(n, Decl(f2.ts, 0, 16)) +>n : Symbol(B.n, Decl(f2.ts, 0, 16)) } === tests/cases/compiler/f3.ts === @@ -31,11 +31,11 @@ namespace N { export interface Ifc { a: number; } >Ifc : Symbol(Ifc, Decl(f3.ts, 5, 13)) ->a : Symbol(a, Decl(f3.ts, 6, 26)) +>a : Symbol(Ifc.a, Decl(f3.ts, 6, 26)) export interface Cls { b: number; } >Cls : Symbol(Cls, Decl(f3.ts, 6, 39)) ->b : Symbol(b, Decl(f3.ts, 7, 26)) +>b : Symbol(Cls.b, Decl(f3.ts, 7, 26)) } import I = N.Ifc; >I : Symbol(I, Decl(f3.ts, 8, 1)) @@ -52,15 +52,15 @@ declare module "./f1" { >A : Symbol(A, Decl(f1.ts, 0, 0), Decl(f3.ts, 12, 23)) foo(): B; ->foo : Symbol(foo, Decl(f3.ts, 13, 17)) +>foo : Symbol(A.foo, Decl(f3.ts, 13, 17)) >B : Symbol(B, Decl(f3.ts, 1, 8)) bar(): I; ->bar : Symbol(bar, Decl(f3.ts, 14, 17)) +>bar : Symbol(A.bar, Decl(f3.ts, 14, 17)) >I : Symbol(I, Decl(f3.ts, 8, 1)) baz(): C; ->baz : Symbol(baz, Decl(f3.ts, 15, 17)) +>baz : Symbol(A.baz, Decl(f3.ts, 15, 17)) >C : Symbol(C, Decl(f3.ts, 9, 17)) } } diff --git a/tests/baselines/reference/moduleAugmentationImportsAndExports6.symbols b/tests/baselines/reference/moduleAugmentationImportsAndExports6.symbols index 92952ef94bc..5c9be6d9448 100644 --- a/tests/baselines/reference/moduleAugmentationImportsAndExports6.symbols +++ b/tests/baselines/reference/moduleAugmentationImportsAndExports6.symbols @@ -8,7 +8,7 @@ export class B { >B : Symbol(B, Decl(f2.ts, 0, 0)) n: number; ->n : Symbol(n, Decl(f2.ts, 0, 16)) +>n : Symbol(B.n, Decl(f2.ts, 0, 16)) } === tests/cases/compiler/f3.ts === @@ -31,11 +31,11 @@ export namespace N { export interface Ifc { a: number; } >Ifc : Symbol(Ifc, Decl(f3.ts, 5, 20)) ->a : Symbol(a, Decl(f3.ts, 6, 26)) +>a : Symbol(Ifc.a, Decl(f3.ts, 6, 26)) export interface Cls { b: number; } >Cls : Symbol(Cls, Decl(f3.ts, 6, 39)) ->b : Symbol(b, Decl(f3.ts, 7, 26)) +>b : Symbol(Cls.b, Decl(f3.ts, 7, 26)) } import I = N.Ifc; >I : Symbol(I, Decl(f3.ts, 8, 1)) @@ -52,15 +52,15 @@ declare module "./f1" { >A : Symbol(A, Decl(f1.ts, 0, 0), Decl(f3.ts, 12, 23)) foo(): B; ->foo : Symbol(foo, Decl(f3.ts, 13, 17)) +>foo : Symbol(A.foo, Decl(f3.ts, 13, 17)) >B : Symbol(B, Decl(f3.ts, 1, 8)) bar(): I; ->bar : Symbol(bar, Decl(f3.ts, 14, 17)) +>bar : Symbol(A.bar, Decl(f3.ts, 14, 17)) >I : Symbol(I, Decl(f3.ts, 8, 1)) baz(): C; ->baz : Symbol(baz, Decl(f3.ts, 15, 17)) +>baz : Symbol(A.baz, Decl(f3.ts, 15, 17)) >C : Symbol(C, Decl(f3.ts, 9, 17)) } } diff --git a/tests/baselines/reference/moduleAugmentationInAmbientModule1.symbols b/tests/baselines/reference/moduleAugmentationInAmbientModule1.symbols index b59f0766eea..6d9c185ca08 100644 --- a/tests/baselines/reference/moduleAugmentationInAmbientModule1.symbols +++ b/tests/baselines/reference/moduleAugmentationInAmbientModule1.symbols @@ -26,7 +26,7 @@ declare module "Observable" { declare module "M" { class Cls { x: number } >Cls : Symbol(Cls, Decl(O.d.ts, 6, 20)) ->x : Symbol(x, Decl(O.d.ts, 7, 15)) +>x : Symbol(Cls.x, Decl(O.d.ts, 7, 15)) } declare module "Map" { @@ -38,7 +38,7 @@ declare module "Map" { >Observable : Symbol(Observable, Decl(O.d.ts, 2, 29), Decl(O.d.ts, 12, 25)) foo(): Cls; ->foo : Symbol(foo, Decl(O.d.ts, 13, 30)) +>foo : Symbol(Observable.foo, Decl(O.d.ts, 13, 30)) >Cls : Symbol(Cls, Decl(O.d.ts, 11, 12)) } } diff --git a/tests/baselines/reference/moduleAugmentationInAmbientModule2.symbols b/tests/baselines/reference/moduleAugmentationInAmbientModule2.symbols index 6308e67b3b9..5bf797dcf08 100644 --- a/tests/baselines/reference/moduleAugmentationInAmbientModule2.symbols +++ b/tests/baselines/reference/moduleAugmentationInAmbientModule2.symbols @@ -26,7 +26,7 @@ declare module "Observable" { declare module "M" { class Cls { x: number } >Cls : Symbol(Cls, Decl(O.d.ts, 5, 20)) ->x : Symbol(x, Decl(O.d.ts, 6, 15)) +>x : Symbol(Cls.x, Decl(O.d.ts, 6, 15)) } declare module "Map" { @@ -38,7 +38,7 @@ declare module "Map" { >Observable : Symbol(Observable, Decl(O.d.ts, 1, 29), Decl(O.d.ts, 11, 25)) foo(): Cls; ->foo : Symbol(foo, Decl(O.d.ts, 12, 30)) +>foo : Symbol(Observable.foo, Decl(O.d.ts, 12, 30)) >Cls : Symbol(Cls, Decl(O.d.ts, 10, 12)) } } diff --git a/tests/baselines/reference/moduleAugmentationInAmbientModule3.symbols b/tests/baselines/reference/moduleAugmentationInAmbientModule3.symbols index 34eea56753f..2bde1316107 100644 --- a/tests/baselines/reference/moduleAugmentationInAmbientModule3.symbols +++ b/tests/baselines/reference/moduleAugmentationInAmbientModule3.symbols @@ -33,7 +33,7 @@ declare module "Observable" { declare module "M" { class Cls { x: number } >Cls : Symbol(Cls, Decl(O.d.ts, 5, 20)) ->x : Symbol(x, Decl(O.d.ts, 6, 15)) +>x : Symbol(Cls.x, Decl(O.d.ts, 6, 15)) } declare module "Map" { @@ -45,7 +45,7 @@ declare module "Map" { >Observable : Symbol(Observable, Decl(O.d.ts, 1, 29), Decl(O.d.ts, 11, 25), Decl(O.d.ts, 20, 25)) foo(): Cls; ->foo : Symbol(foo, Decl(O.d.ts, 12, 30)) +>foo : Symbol(Observable.foo, Decl(O.d.ts, 12, 30)) >Cls : Symbol(Cls, Decl(O.d.ts, 10, 12)) } } @@ -54,14 +54,14 @@ declare module "Map" { declare module "Map" { class Cls2 { x2: number } >Cls2 : Symbol(Cls2, Decl(O.d.ts, 18, 22)) ->x2 : Symbol(x2, Decl(O.d.ts, 19, 16)) +>x2 : Symbol(Cls2.x2, Decl(O.d.ts, 19, 16)) module "Observable" { interface Observable { >Observable : Symbol(Observable, Decl(O.d.ts, 1, 29), Decl(O.d.ts, 11, 25), Decl(O.d.ts, 20, 25)) foo2(): Cls2; ->foo2 : Symbol(foo2, Decl(O.d.ts, 21, 30)) +>foo2 : Symbol(Observable.foo2, Decl(O.d.ts, 21, 30)) >Cls2 : Symbol(Cls2, Decl(O.d.ts, 18, 22)) } } diff --git a/tests/baselines/reference/moduleAugmentationInAmbientModule4.symbols b/tests/baselines/reference/moduleAugmentationInAmbientModule4.symbols index 55658c2a52e..6e01ff8a204 100644 --- a/tests/baselines/reference/moduleAugmentationInAmbientModule4.symbols +++ b/tests/baselines/reference/moduleAugmentationInAmbientModule4.symbols @@ -34,7 +34,7 @@ declare module "Observable" { declare module "M" { class Cls { x: number } >Cls : Symbol(Cls, Decl(O.d.ts, 5, 20)) ->x : Symbol(x, Decl(O.d.ts, 6, 15)) +>x : Symbol(Cls.x, Decl(O.d.ts, 6, 15)) } declare module "Map" { @@ -46,7 +46,7 @@ declare module "Map" { >Observable : Symbol(Observable, Decl(O.d.ts, 1, 29), Decl(O.d.ts, 11, 25), Decl(O2.d.ts, 2, 25)) foo(): Cls; ->foo : Symbol(foo, Decl(O.d.ts, 12, 30)) +>foo : Symbol(Observable.foo, Decl(O.d.ts, 12, 30)) >Cls : Symbol(Cls, Decl(O.d.ts, 10, 12)) } } @@ -56,14 +56,14 @@ declare module "Map" { declare module "Map" { class Cls2 { x2: number } >Cls2 : Symbol(Cls2, Decl(O2.d.ts, 0, 22)) ->x2 : Symbol(x2, Decl(O2.d.ts, 1, 16)) +>x2 : Symbol(Cls2.x2, Decl(O2.d.ts, 1, 16)) module "Observable" { interface Observable { >Observable : Symbol(Observable, Decl(O.d.ts, 1, 29), Decl(O.d.ts, 11, 25), Decl(O2.d.ts, 2, 25)) foo2(): Cls2; ->foo2 : Symbol(foo2, Decl(O2.d.ts, 3, 30)) +>foo2 : Symbol(Observable.foo2, Decl(O2.d.ts, 3, 30)) >Cls2 : Symbol(Cls2, Decl(O2.d.ts, 0, 22)) } } diff --git a/tests/baselines/reference/moduleAugmentationInAmbientModule5.symbols b/tests/baselines/reference/moduleAugmentationInAmbientModule5.symbols index a663efca64d..76b135307dd 100644 --- a/tests/baselines/reference/moduleAugmentationInAmbientModule5.symbols +++ b/tests/baselines/reference/moduleAugmentationInAmbientModule5.symbols @@ -18,7 +18,7 @@ let y = x.getA().x; declare module "A" { class A { x: number; } >A : Symbol(A, Decl(array.d.ts, 1, 20)) ->x : Symbol(x, Decl(array.d.ts, 2, 13)) +>x : Symbol(A.x, Decl(array.d.ts, 2, 13)) } declare module "array" { @@ -33,7 +33,7 @@ declare module "array" { >T : Symbol(T, Decl(lib.d.ts, --, --), Decl(array.d.ts, 8, 24)) getA(): A; ->getA : Symbol(getA, Decl(array.d.ts, 8, 28)) +>getA : Symbol(Array.getA, Decl(array.d.ts, 8, 28)) >A : Symbol(A, Decl(array.d.ts, 6, 12)) } } diff --git a/tests/baselines/reference/moduleAugmentationInAmbientModule5.types b/tests/baselines/reference/moduleAugmentationInAmbientModule5.types index d04cdca4893..998452be450 100644 --- a/tests/baselines/reference/moduleAugmentationInAmbientModule5.types +++ b/tests/baselines/reference/moduleAugmentationInAmbientModule5.types @@ -29,7 +29,7 @@ declare module "array" { >A : typeof A global { ->global : typeof +>global : any interface Array { >Array : T[] diff --git a/tests/baselines/reference/moduleAugmentationInDependency.js b/tests/baselines/reference/moduleAugmentationInDependency.js new file mode 100644 index 00000000000..1c5995339c3 --- /dev/null +++ b/tests/baselines/reference/moduleAugmentationInDependency.js @@ -0,0 +1,13 @@ +//// [tests/cases/compiler/moduleAugmentationInDependency.ts] //// + +//// [index.d.ts] +declare module "ext" { +} +export {}; + +//// [app.ts] +import "A" + +//// [app.js] +"use strict"; +require("A"); diff --git a/tests/baselines/reference/moduleAugmentationInDependency.symbols b/tests/baselines/reference/moduleAugmentationInDependency.symbols new file mode 100644 index 00000000000..82f1faedbf5 --- /dev/null +++ b/tests/baselines/reference/moduleAugmentationInDependency.symbols @@ -0,0 +1,8 @@ +=== /node_modules/A/index.d.ts === +declare module "ext" { +No type information for this code.} +No type information for this code.export {}; +No type information for this code. +No type information for this code.=== /src/app.ts === +import "A" +No type information for this code. \ No newline at end of file diff --git a/tests/baselines/reference/moduleAugmentationInDependency.types b/tests/baselines/reference/moduleAugmentationInDependency.types new file mode 100644 index 00000000000..82f1faedbf5 --- /dev/null +++ b/tests/baselines/reference/moduleAugmentationInDependency.types @@ -0,0 +1,8 @@ +=== /node_modules/A/index.d.ts === +declare module "ext" { +No type information for this code.} +No type information for this code.export {}; +No type information for this code. +No type information for this code.=== /src/app.ts === +import "A" +No type information for this code. \ No newline at end of file diff --git a/tests/baselines/reference/moduleAugmentationInDependency2.errors.txt b/tests/baselines/reference/moduleAugmentationInDependency2.errors.txt new file mode 100644 index 00000000000..eb53c5265b6 --- /dev/null +++ b/tests/baselines/reference/moduleAugmentationInDependency2.errors.txt @@ -0,0 +1,12 @@ +/node_modules/A/index.ts(1,16): error TS2664: Invalid module name in augmentation, module 'ext' cannot be found. + + +==== /node_modules/A/index.ts (1 errors) ==== + declare module "ext" { + ~~~~~ +!!! error TS2664: Invalid module name in augmentation, module 'ext' cannot be found. + } + export {}; + +==== /src/app.ts (0 errors) ==== + import "A" \ No newline at end of file diff --git a/tests/baselines/reference/moduleAugmentationInDependency2.js b/tests/baselines/reference/moduleAugmentationInDependency2.js new file mode 100644 index 00000000000..381f1e72d8f --- /dev/null +++ b/tests/baselines/reference/moduleAugmentationInDependency2.js @@ -0,0 +1,15 @@ +//// [tests/cases/compiler/moduleAugmentationInDependency2.ts] //// + +//// [index.ts] +declare module "ext" { +} +export {}; + +//// [app.ts] +import "A" + +//// [index.js] +"use strict"; +//// [app.js] +"use strict"; +require("A"); diff --git a/tests/baselines/reference/moduleAugmentationsBundledOutput1.symbols b/tests/baselines/reference/moduleAugmentationsBundledOutput1.symbols index 47160cbc17f..5f98b39c228 100644 --- a/tests/baselines/reference/moduleAugmentationsBundledOutput1.symbols +++ b/tests/baselines/reference/moduleAugmentationsBundledOutput1.symbols @@ -23,7 +23,7 @@ declare module "./m1" { >Cls : Symbol(Cls, Decl(m1.ts, 0, 0), Decl(m2.ts, 4, 23), Decl(m2.ts, 10, 23), Decl(m4.ts, 5, 23), Decl(m4.ts, 11, 23)) foo(): number; ->foo : Symbol(foo, Decl(m2.ts, 5, 19)) +>foo : Symbol(Cls.foo, Decl(m2.ts, 5, 19)) } } @@ -32,18 +32,18 @@ declare module "./m1" { >Cls : Symbol(Cls, Decl(m1.ts, 0, 0), Decl(m2.ts, 4, 23), Decl(m2.ts, 10, 23), Decl(m4.ts, 5, 23), Decl(m4.ts, 11, 23)) bar(): string; ->bar : Symbol(bar, Decl(m2.ts, 11, 19)) +>bar : Symbol(Cls.bar, Decl(m2.ts, 11, 19)) } } === tests/cases/compiler/m3.ts === export class C1 { x: number } >C1 : Symbol(C1, Decl(m3.ts, 0, 0)) ->x : Symbol(x, Decl(m3.ts, 0, 17)) +>x : Symbol(C1.x, Decl(m3.ts, 0, 17)) export class C2 { x: string } >C2 : Symbol(C2, Decl(m3.ts, 0, 29)) ->x : Symbol(x, Decl(m3.ts, 1, 17)) +>x : Symbol(C2.x, Decl(m3.ts, 1, 17)) === tests/cases/compiler/m4.ts === import {Cls} from "./m1"; @@ -70,7 +70,7 @@ declare module "./m1" { >Cls : Symbol(Cls, Decl(m1.ts, 0, 0), Decl(m2.ts, 4, 23), Decl(m2.ts, 10, 23), Decl(m4.ts, 5, 23), Decl(m4.ts, 11, 23)) baz1(): C1; ->baz1 : Symbol(baz1, Decl(m4.ts, 6, 19)) +>baz1 : Symbol(Cls.baz1, Decl(m4.ts, 6, 19)) >C1 : Symbol(C1, Decl(m4.ts, 1, 8)) } } @@ -80,7 +80,7 @@ declare module "./m1" { >Cls : Symbol(Cls, Decl(m1.ts, 0, 0), Decl(m2.ts, 4, 23), Decl(m2.ts, 10, 23), Decl(m4.ts, 5, 23), Decl(m4.ts, 11, 23)) baz2(): C2; ->baz2 : Symbol(baz2, Decl(m4.ts, 12, 19)) +>baz2 : Symbol(Cls.baz2, Decl(m4.ts, 12, 19)) >C2 : Symbol(C2, Decl(m4.ts, 1, 11)) } } diff --git a/tests/baselines/reference/moduleAugmentationsImports1.symbols b/tests/baselines/reference/moduleAugmentationsImports1.symbols index 38ef8f55229..685ee9bb31c 100644 --- a/tests/baselines/reference/moduleAugmentationsImports1.symbols +++ b/tests/baselines/reference/moduleAugmentationsImports1.symbols @@ -6,13 +6,13 @@ export class A {} === tests/cases/compiler/b.ts === export class B {x: number;} >B : Symbol(B, Decl(b.ts, 0, 0)) ->x : Symbol(x, Decl(b.ts, 0, 16)) +>x : Symbol(B.x, Decl(b.ts, 0, 16)) === tests/cases/compiler/c.d.ts === declare module "C" { class Cls {y: string; } >Cls : Symbol(Cls, Decl(c.d.ts, 0, 20)) ->y : Symbol(y, Decl(c.d.ts, 1, 15)) +>y : Symbol(Cls.y, Decl(c.d.ts, 1, 15)) } === tests/cases/compiler/d.ts === @@ -48,7 +48,7 @@ declare module "./a" { >A : Symbol(A, Decl(a.ts, 0, 0), Decl(d.ts, 9, 22), Decl(d.ts, 15, 22)) getB(): B; ->getB : Symbol(getB, Decl(d.ts, 10, 17)) +>getB : Symbol(A.getB, Decl(d.ts, 10, 17)) >B : Symbol(B, Decl(d.ts, 3, 8)) } } @@ -58,7 +58,7 @@ declare module "./a" { >A : Symbol(A, Decl(a.ts, 0, 0), Decl(d.ts, 9, 22), Decl(d.ts, 15, 22)) getCls(): Cls; ->getCls : Symbol(getCls, Decl(d.ts, 16, 17)) +>getCls : Symbol(A.getCls, Decl(d.ts, 16, 17)) >Cls : Symbol(Cls, Decl(d.ts, 4, 8)) } } diff --git a/tests/baselines/reference/moduleAugmentationsImports2.symbols b/tests/baselines/reference/moduleAugmentationsImports2.symbols index 643ccf20eb2..126e407da8a 100644 --- a/tests/baselines/reference/moduleAugmentationsImports2.symbols +++ b/tests/baselines/reference/moduleAugmentationsImports2.symbols @@ -6,13 +6,13 @@ export class A {} === tests/cases/compiler/b.ts === export class B {x: number;} >B : Symbol(B, Decl(b.ts, 0, 0)) ->x : Symbol(x, Decl(b.ts, 0, 16)) +>x : Symbol(B.x, Decl(b.ts, 0, 16)) === tests/cases/compiler/c.d.ts === declare module "C" { class Cls {y: string; } >Cls : Symbol(Cls, Decl(c.d.ts, 0, 20)) ->y : Symbol(y, Decl(c.d.ts, 1, 15)) +>y : Symbol(Cls.y, Decl(c.d.ts, 1, 15)) } === tests/cases/compiler/d.ts === @@ -37,7 +37,7 @@ declare module "./a" { >A : Symbol(A, Decl(a.ts, 0, 0), Decl(d.ts, 7, 22), Decl(e.ts, 5, 22)) getB(): B; ->getB : Symbol(getB, Decl(d.ts, 8, 17)) +>getB : Symbol(A.getB, Decl(d.ts, 8, 17)) >B : Symbol(B, Decl(d.ts, 3, 8)) } } @@ -62,7 +62,7 @@ declare module "./a" { >A : Symbol(A, Decl(a.ts, 0, 0), Decl(d.ts, 7, 22), Decl(e.ts, 5, 22)) getCls(): Cls; ->getCls : Symbol(getCls, Decl(e.ts, 6, 17)) +>getCls : Symbol(A.getCls, Decl(e.ts, 6, 17)) >Cls : Symbol(Cls, Decl(e.ts, 1, 8)) } } diff --git a/tests/baselines/reference/moduleAugmentationsImports3.symbols b/tests/baselines/reference/moduleAugmentationsImports3.symbols index db8eee074c0..fba58ffad8a 100644 --- a/tests/baselines/reference/moduleAugmentationsImports3.symbols +++ b/tests/baselines/reference/moduleAugmentationsImports3.symbols @@ -38,13 +38,13 @@ export class A {} === tests/cases/compiler/b.ts === export class B {x: number;} >B : Symbol(B, Decl(b.ts, 0, 0)) ->x : Symbol(x, Decl(b.ts, 0, 16)) +>x : Symbol(B.x, Decl(b.ts, 0, 16)) === tests/cases/compiler/c.d.ts === declare module "C" { class Cls {y: string; } >Cls : Symbol(Cls, Decl(c.d.ts, 0, 20)) ->y : Symbol(y, Decl(c.d.ts, 1, 15)) +>y : Symbol(Cls.y, Decl(c.d.ts, 1, 15)) } === tests/cases/compiler/d.d.ts === @@ -60,7 +60,7 @@ declare module "D" { >A : Symbol(A, Decl(a.ts, 0, 0), Decl(d.d.ts, 3, 16), Decl(e.ts, 6, 22)) getB(): B; ->getB : Symbol(getB, Decl(d.d.ts, 4, 21)) +>getB : Symbol(A.getB, Decl(d.d.ts, 4, 21)) >B : Symbol(B, Decl(d.d.ts, 2, 12)) } } @@ -87,7 +87,7 @@ declare module "./a" { >A : Symbol(A, Decl(a.ts, 0, 0), Decl(d.d.ts, 3, 16), Decl(e.ts, 6, 22)) getCls(): Cls; ->getCls : Symbol(getCls, Decl(e.ts, 7, 17)) +>getCls : Symbol(A.getCls, Decl(e.ts, 7, 17)) >Cls : Symbol(Cls, Decl(e.ts, 2, 8)) } } diff --git a/tests/baselines/reference/moduleAugmentationsImports4.symbols b/tests/baselines/reference/moduleAugmentationsImports4.symbols index 8d203de8519..77b5431850e 100644 --- a/tests/baselines/reference/moduleAugmentationsImports4.symbols +++ b/tests/baselines/reference/moduleAugmentationsImports4.symbols @@ -39,13 +39,13 @@ export class A {} === tests/cases/compiler/b.ts === export class B {x: number;} >B : Symbol(B, Decl(b.ts, 0, 0)) ->x : Symbol(x, Decl(b.ts, 0, 16)) +>x : Symbol(B.x, Decl(b.ts, 0, 16)) === tests/cases/compiler/c.d.ts === declare module "C" { class Cls {y: string; } >Cls : Symbol(Cls, Decl(c.d.ts, 0, 20)) ->y : Symbol(y, Decl(c.d.ts, 1, 15)) +>y : Symbol(Cls.y, Decl(c.d.ts, 1, 15)) } === tests/cases/compiler/d.d.ts === @@ -61,7 +61,7 @@ declare module "D" { >A : Symbol(A, Decl(a.ts, 0, 0), Decl(d.d.ts, 3, 16), Decl(e.d.ts, 5, 16)) getB(): B; ->getB : Symbol(getB, Decl(d.d.ts, 4, 21)) +>getB : Symbol(A.getB, Decl(d.d.ts, 4, 21)) >B : Symbol(B, Decl(d.d.ts, 2, 12)) } } @@ -81,7 +81,7 @@ declare module "E" { >A : Symbol(A, Decl(a.ts, 0, 0), Decl(d.d.ts, 3, 16), Decl(e.d.ts, 5, 16)) getCls(): Cls; ->getCls : Symbol(getCls, Decl(e.d.ts, 6, 21)) +>getCls : Symbol(A.getCls, Decl(e.d.ts, 6, 21)) >Cls : Symbol(Cls, Decl(e.d.ts, 3, 12)) } } diff --git a/tests/baselines/reference/moduleCodeGenTest5.symbols b/tests/baselines/reference/moduleCodeGenTest5.symbols index 1e68d449665..f93e8ef6297 100644 --- a/tests/baselines/reference/moduleCodeGenTest5.symbols +++ b/tests/baselines/reference/moduleCodeGenTest5.symbols @@ -15,19 +15,19 @@ export class C1 { >C1 : Symbol(C1, Decl(moduleCodeGenTest5.ts, 4, 16)) public p1 = 0; ->p1 : Symbol(p1, Decl(moduleCodeGenTest5.ts, 6, 17)) +>p1 : Symbol(C1.p1, Decl(moduleCodeGenTest5.ts, 6, 17)) public p2() {} ->p2 : Symbol(p2, Decl(moduleCodeGenTest5.ts, 7, 15)) +>p2 : Symbol(C1.p2, Decl(moduleCodeGenTest5.ts, 7, 15)) } class C2{ >C2 : Symbol(C2, Decl(moduleCodeGenTest5.ts, 9, 1)) public p1 = 0; ->p1 : Symbol(p1, Decl(moduleCodeGenTest5.ts, 10, 9)) +>p1 : Symbol(C2.p1, Decl(moduleCodeGenTest5.ts, 10, 9)) public p2() {} ->p2 : Symbol(p2, Decl(moduleCodeGenTest5.ts, 11, 15)) +>p2 : Symbol(C2.p2, Decl(moduleCodeGenTest5.ts, 11, 15)) } export enum E1 {A=0} diff --git a/tests/baselines/reference/moduleIdentifiers.symbols b/tests/baselines/reference/moduleIdentifiers.symbols index ffb3ffa7335..1edbf333875 100644 --- a/tests/baselines/reference/moduleIdentifiers.symbols +++ b/tests/baselines/reference/moduleIdentifiers.symbols @@ -4,8 +4,8 @@ module M { interface P { x: number; y: number; } >P : Symbol(P, Decl(moduleIdentifiers.ts, 0, 10)) ->x : Symbol(x, Decl(moduleIdentifiers.ts, 1, 17)) ->y : Symbol(y, Decl(moduleIdentifiers.ts, 1, 28)) +>x : Symbol(P.x, Decl(moduleIdentifiers.ts, 1, 17)) +>y : Symbol(P.y, Decl(moduleIdentifiers.ts, 1, 28)) export var a = 1 >a : Symbol(a, Decl(moduleIdentifiers.ts, 2, 14)) diff --git a/tests/baselines/reference/moduleMemberWithoutTypeAnnotation1.symbols b/tests/baselines/reference/moduleMemberWithoutTypeAnnotation1.symbols index fb743ea4f57..de787349442 100644 --- a/tests/baselines/reference/moduleMemberWithoutTypeAnnotation1.symbols +++ b/tests/baselines/reference/moduleMemberWithoutTypeAnnotation1.symbols @@ -7,7 +7,7 @@ module TypeScript.Parser { >SyntaxCursor : Symbol(SyntaxCursor, Decl(moduleMemberWithoutTypeAnnotation1.ts, 0, 26)) public currentNode(): SyntaxNode { ->currentNode : Symbol(currentNode, Decl(moduleMemberWithoutTypeAnnotation1.ts, 1, 24)) +>currentNode : Symbol(SyntaxCursor.currentNode, Decl(moduleMemberWithoutTypeAnnotation1.ts, 1, 24)) >SyntaxNode : Symbol(SyntaxNode, Decl(moduleMemberWithoutTypeAnnotation1.ts, 24, 19)) return null; @@ -28,7 +28,7 @@ module TypeScript { >PositionedElement : Symbol(PositionedElement, Decl(moduleMemberWithoutTypeAnnotation1.ts, 10, 38)) public childIndex(child: ISyntaxElement) { ->childIndex : Symbol(childIndex, Decl(moduleMemberWithoutTypeAnnotation1.ts, 12, 36)) +>childIndex : Symbol(PositionedElement.childIndex, Decl(moduleMemberWithoutTypeAnnotation1.ts, 12, 36)) >child : Symbol(child, Decl(moduleMemberWithoutTypeAnnotation1.ts, 13, 26)) >ISyntaxElement : Symbol(ISyntaxElement, Decl(moduleMemberWithoutTypeAnnotation1.ts, 8, 19)) @@ -59,22 +59,22 @@ module TypeScript { >SyntaxNode : Symbol(SyntaxNode, Decl(moduleMemberWithoutTypeAnnotation1.ts, 24, 19)) public findToken(position: number, includeSkippedTokens: boolean = false): PositionedToken { ->findToken : Symbol(findToken, Decl(moduleMemberWithoutTypeAnnotation1.ts, 25, 29)) +>findToken : Symbol(SyntaxNode.findToken, Decl(moduleMemberWithoutTypeAnnotation1.ts, 25, 29)) >position : Symbol(position, Decl(moduleMemberWithoutTypeAnnotation1.ts, 26, 25)) >includeSkippedTokens : Symbol(includeSkippedTokens, Decl(moduleMemberWithoutTypeAnnotation1.ts, 26, 42)) >PositionedToken : Symbol(PositionedToken, Decl(moduleMemberWithoutTypeAnnotation1.ts, 16, 5)) var positionedToken = this.findTokenInternal(null, position, 0); >positionedToken : Symbol(positionedToken, Decl(moduleMemberWithoutTypeAnnotation1.ts, 27, 15)) ->this.findTokenInternal : Symbol(findTokenInternal, Decl(moduleMemberWithoutTypeAnnotation1.ts, 29, 9)) +>this.findTokenInternal : Symbol(SyntaxNode.findTokenInternal, Decl(moduleMemberWithoutTypeAnnotation1.ts, 29, 9)) >this : Symbol(SyntaxNode, Decl(moduleMemberWithoutTypeAnnotation1.ts, 24, 19)) ->findTokenInternal : Symbol(findTokenInternal, Decl(moduleMemberWithoutTypeAnnotation1.ts, 29, 9)) +>findTokenInternal : Symbol(SyntaxNode.findTokenInternal, Decl(moduleMemberWithoutTypeAnnotation1.ts, 29, 9)) >position : Symbol(position, Decl(moduleMemberWithoutTypeAnnotation1.ts, 26, 25)) return null; } findTokenInternal(x, y, z) { ->findTokenInternal : Symbol(findTokenInternal, Decl(moduleMemberWithoutTypeAnnotation1.ts, 29, 9)) +>findTokenInternal : Symbol(SyntaxNode.findTokenInternal, Decl(moduleMemberWithoutTypeAnnotation1.ts, 29, 9)) >x : Symbol(x, Decl(moduleMemberWithoutTypeAnnotation1.ts, 30, 26)) >y : Symbol(y, Decl(moduleMemberWithoutTypeAnnotation1.ts, 30, 28)) >z : Symbol(z, Decl(moduleMemberWithoutTypeAnnotation1.ts, 30, 31)) @@ -96,7 +96,7 @@ module TypeScript.Syntax { >ISyntaxToken : Symbol(ISyntaxToken, Decl(moduleMemberWithoutTypeAnnotation1.ts, 9, 40)) private findTokenInternal(parent: PositionedElement, position: number, fullStart: number) { ->findTokenInternal : Symbol(findTokenInternal, Decl(moduleMemberWithoutTypeAnnotation1.ts, 39, 79)) +>findTokenInternal : Symbol(VariableWidthTokenWithTrailingTrivia.findTokenInternal, Decl(moduleMemberWithoutTypeAnnotation1.ts, 39, 79)) >parent : Symbol(parent, Decl(moduleMemberWithoutTypeAnnotation1.ts, 40, 34)) >PositionedElement : Symbol(PositionedElement, Decl(moduleMemberWithoutTypeAnnotation1.ts, 10, 38)) >position : Symbol(position, Decl(moduleMemberWithoutTypeAnnotation1.ts, 40, 60)) diff --git a/tests/baselines/reference/moduleMemberWithoutTypeAnnotation2.symbols b/tests/baselines/reference/moduleMemberWithoutTypeAnnotation2.symbols index e69b8c37458..f771bbc3c79 100644 --- a/tests/baselines/reference/moduleMemberWithoutTypeAnnotation2.symbols +++ b/tests/baselines/reference/moduleMemberWithoutTypeAnnotation2.symbols @@ -9,7 +9,7 @@ module TypeScript { >IDiagnosticWriter : Symbol(IDiagnosticWriter, Decl(moduleMemberWithoutTypeAnnotation2.ts, 1, 39)) Alert(output: string): void; ->Alert : Symbol(Alert, Decl(moduleMemberWithoutTypeAnnotation2.ts, 3, 44)) +>Alert : Symbol(IDiagnosticWriter.Alert, Decl(moduleMemberWithoutTypeAnnotation2.ts, 3, 44)) >output : Symbol(output, Decl(moduleMemberWithoutTypeAnnotation2.ts, 4, 18)) } diff --git a/tests/baselines/reference/moduleMerge.symbols b/tests/baselines/reference/moduleMerge.symbols index 2c288be6ff6..738aedfc28e 100644 --- a/tests/baselines/reference/moduleMerge.symbols +++ b/tests/baselines/reference/moduleMerge.symbols @@ -8,7 +8,7 @@ module A >B : Symbol(B, Decl(moduleMerge.ts, 3, 1)) { public Hello(): string ->Hello : Symbol(Hello, Decl(moduleMerge.ts, 5, 5)) +>Hello : Symbol(B.Hello, Decl(moduleMerge.ts, 5, 5)) { return "from private B"; } @@ -22,7 +22,7 @@ module A >B : Symbol(B, Decl(moduleMerge.ts, 14, 1)) { public Hello(): string ->Hello : Symbol(Hello, Decl(moduleMerge.ts, 16, 5)) +>Hello : Symbol(B.Hello, Decl(moduleMerge.ts, 16, 5)) { return "from export B"; } diff --git a/tests/baselines/reference/moduleMergeConstructor.symbols b/tests/baselines/reference/moduleMergeConstructor.symbols index a960ad07e7e..8d9a773f144 100644 --- a/tests/baselines/reference/moduleMergeConstructor.symbols +++ b/tests/baselines/reference/moduleMergeConstructor.symbols @@ -6,7 +6,7 @@ declare module "foo" { constructor(); method1(): any; ->method1 : Symbol(method1, Decl(foo.d.ts, 3, 22)) +>method1 : Symbol(Foo.method1, Decl(foo.d.ts, 3, 22)) } } @@ -16,7 +16,7 @@ declare module "foo" { >Foo : Symbol(Foo, Decl(foo.d.ts, 1, 22), Decl(foo-ext.d.ts, 0, 22)) method2(): any; ->method2 : Symbol(method2, Decl(foo-ext.d.ts, 1, 26)) +>method2 : Symbol(Foo.method2, Decl(foo-ext.d.ts, 1, 26)) } } @@ -28,15 +28,15 @@ class Test { >Test : Symbol(Test, Decl(index.ts, 0, 27)) bar: foo.Foo; ->bar : Symbol(bar, Decl(index.ts, 2, 12)) +>bar : Symbol(Test.bar, Decl(index.ts, 2, 12)) >foo : Symbol(foo, Decl(index.ts, 0, 6)) >Foo : Symbol(foo.Foo, Decl(foo.d.ts, 1, 22), Decl(foo-ext.d.ts, 0, 22)) constructor() { this.bar = new foo.Foo(); ->this.bar : Symbol(bar, Decl(index.ts, 2, 12)) +>this.bar : Symbol(Test.bar, Decl(index.ts, 2, 12)) >this : Symbol(Test, Decl(index.ts, 0, 27)) ->bar : Symbol(bar, Decl(index.ts, 2, 12)) +>bar : Symbol(Test.bar, Decl(index.ts, 2, 12)) >foo.Foo : Symbol(foo.Foo, Decl(foo.d.ts, 1, 22), Decl(foo-ext.d.ts, 0, 22)) >foo : Symbol(foo, Decl(index.ts, 0, 6)) >Foo : Symbol(foo.Foo, Decl(foo.d.ts, 1, 22), Decl(foo-ext.d.ts, 0, 22)) diff --git a/tests/baselines/reference/moduleReopenedTypeOtherBlock.symbols b/tests/baselines/reference/moduleReopenedTypeOtherBlock.symbols index 1a5017b89c7..d4bb9defa38 100644 --- a/tests/baselines/reference/moduleReopenedTypeOtherBlock.symbols +++ b/tests/baselines/reference/moduleReopenedTypeOtherBlock.symbols @@ -7,14 +7,14 @@ module M { export interface I { n: number; } >I : Symbol(I, Decl(moduleReopenedTypeOtherBlock.ts, 1, 23)) ->n : Symbol(n, Decl(moduleReopenedTypeOtherBlock.ts, 2, 24)) +>n : Symbol(I.n, Decl(moduleReopenedTypeOtherBlock.ts, 2, 24)) } module M { >M : Symbol(M, Decl(moduleReopenedTypeOtherBlock.ts, 0, 0), Decl(moduleReopenedTypeOtherBlock.ts, 3, 1)) export class C2 { f(): I { return null; } } >C2 : Symbol(C2, Decl(moduleReopenedTypeOtherBlock.ts, 4, 10)) ->f : Symbol(f, Decl(moduleReopenedTypeOtherBlock.ts, 5, 21)) +>f : Symbol(C2.f, Decl(moduleReopenedTypeOtherBlock.ts, 5, 21)) >I : Symbol(I, Decl(moduleReopenedTypeOtherBlock.ts, 1, 23)) } diff --git a/tests/baselines/reference/moduleReopenedTypeSameBlock.symbols b/tests/baselines/reference/moduleReopenedTypeSameBlock.symbols index a593b63cd01..3ee83c80746 100644 --- a/tests/baselines/reference/moduleReopenedTypeSameBlock.symbols +++ b/tests/baselines/reference/moduleReopenedTypeSameBlock.symbols @@ -8,11 +8,11 @@ module M { export interface I { n: number; } >I : Symbol(I, Decl(moduleReopenedTypeSameBlock.ts, 1, 10)) ->n : Symbol(n, Decl(moduleReopenedTypeSameBlock.ts, 2, 24)) +>n : Symbol(I.n, Decl(moduleReopenedTypeSameBlock.ts, 2, 24)) export class C2 { f(): I { return null; } } >C2 : Symbol(C2, Decl(moduleReopenedTypeSameBlock.ts, 2, 37)) ->f : Symbol(f, Decl(moduleReopenedTypeSameBlock.ts, 3, 21)) +>f : Symbol(C2.f, Decl(moduleReopenedTypeSameBlock.ts, 3, 21)) >I : Symbol(I, Decl(moduleReopenedTypeSameBlock.ts, 1, 10)) } diff --git a/tests/baselines/reference/moduleVisibilityTest1.symbols b/tests/baselines/reference/moduleVisibilityTest1.symbols index 9879d8a0151..7c939fee5c3 100644 --- a/tests/baselines/reference/moduleVisibilityTest1.symbols +++ b/tests/baselines/reference/moduleVisibilityTest1.symbols @@ -59,40 +59,40 @@ module M { >I : Symbol(I, Decl(moduleVisibilityTest1.ts, 27, 15)) someMethod():number; ->someMethod : Symbol(someMethod, Decl(moduleVisibilityTest1.ts, 30, 21)) +>someMethod : Symbol(I.someMethod, Decl(moduleVisibilityTest1.ts, 30, 21)) } class B {public b = 0;} >B : Symbol(B, Decl(moduleVisibilityTest1.ts, 32, 2)) ->b : Symbol(b, Decl(moduleVisibilityTest1.ts, 34, 11)) +>b : Symbol(B.b, Decl(moduleVisibilityTest1.ts, 34, 11)) export class C implements I { >C : Symbol(C, Decl(moduleVisibilityTest1.ts, 34, 25)) >I : Symbol(I, Decl(moduleVisibilityTest1.ts, 27, 15)) public someMethodThatCallsAnOuterMethod() {return OuterInnerAlias.someExportedOuterInnerFunc();} ->someMethodThatCallsAnOuterMethod : Symbol(someMethodThatCallsAnOuterMethod, Decl(moduleVisibilityTest1.ts, 36, 31)) +>someMethodThatCallsAnOuterMethod : Symbol(C.someMethodThatCallsAnOuterMethod, Decl(moduleVisibilityTest1.ts, 36, 31)) >OuterInnerAlias.someExportedOuterInnerFunc : Symbol(OuterInnerAlias.someExportedOuterInnerFunc, Decl(moduleVisibilityTest1.ts, 5, 30)) >OuterInnerAlias : Symbol(OuterInnerAlias, Decl(moduleVisibilityTest1.ts, 8, 1)) >someExportedOuterInnerFunc : Symbol(OuterInnerAlias.someExportedOuterInnerFunc, Decl(moduleVisibilityTest1.ts, 5, 30)) public someMethodThatCallsAnInnerMethod() {return InnerMod.someExportedInnerFunc();} ->someMethodThatCallsAnInnerMethod : Symbol(someMethodThatCallsAnInnerMethod, Decl(moduleVisibilityTest1.ts, 37, 98)) +>someMethodThatCallsAnInnerMethod : Symbol(C.someMethodThatCallsAnInnerMethod, Decl(moduleVisibilityTest1.ts, 37, 98)) >InnerMod.someExportedInnerFunc : Symbol(InnerMod.someExportedInnerFunc, Decl(moduleVisibilityTest1.ts, 14, 25)) >InnerMod : Symbol(InnerMod, Decl(moduleVisibilityTest1.ts, 12, 10)) >someExportedInnerFunc : Symbol(InnerMod.someExportedInnerFunc, Decl(moduleVisibilityTest1.ts, 14, 25)) public someMethodThatCallsAnOuterInnerMethod() {return OuterMod.someExportedOuterFunc();} ->someMethodThatCallsAnOuterInnerMethod : Symbol(someMethodThatCallsAnOuterInnerMethod, Decl(moduleVisibilityTest1.ts, 38, 86)) +>someMethodThatCallsAnOuterInnerMethod : Symbol(C.someMethodThatCallsAnOuterInnerMethod, Decl(moduleVisibilityTest1.ts, 38, 86)) >OuterMod.someExportedOuterFunc : Symbol(OuterMod.someExportedOuterFunc, Decl(moduleVisibilityTest1.ts, 2, 17)) >OuterMod : Symbol(OuterMod, Decl(moduleVisibilityTest1.ts, 0, 0)) >someExportedOuterFunc : Symbol(OuterMod.someExportedOuterFunc, Decl(moduleVisibilityTest1.ts, 2, 17)) public someMethod() { return 0; } ->someMethod : Symbol(someMethod, Decl(moduleVisibilityTest1.ts, 39, 91)) +>someMethod : Symbol(C.someMethod, Decl(moduleVisibilityTest1.ts, 39, 91)) public someProp = 1; ->someProp : Symbol(someProp, Decl(moduleVisibilityTest1.ts, 40, 35)) +>someProp : Symbol(C.someProp, Decl(moduleVisibilityTest1.ts, 40, 35)) constructor() { function someInnerFunc() { return 2; } diff --git a/tests/baselines/reference/moduleWithStatementsOfEveryKind.symbols b/tests/baselines/reference/moduleWithStatementsOfEveryKind.symbols index d121e6b5367..48b5f8607be 100644 --- a/tests/baselines/reference/moduleWithStatementsOfEveryKind.symbols +++ b/tests/baselines/reference/moduleWithStatementsOfEveryKind.symbols @@ -4,23 +4,23 @@ module A { class A { s: string } >A : Symbol(A, Decl(moduleWithStatementsOfEveryKind.ts, 0, 10)) ->s : Symbol(s, Decl(moduleWithStatementsOfEveryKind.ts, 1, 13)) +>s : Symbol(A.s, Decl(moduleWithStatementsOfEveryKind.ts, 1, 13)) class AA { s: T } >AA : Symbol(AA, Decl(moduleWithStatementsOfEveryKind.ts, 1, 25)) >T : Symbol(T, Decl(moduleWithStatementsOfEveryKind.ts, 2, 13)) ->s : Symbol(s, Decl(moduleWithStatementsOfEveryKind.ts, 2, 17)) +>s : Symbol(AA.s, Decl(moduleWithStatementsOfEveryKind.ts, 2, 17)) >T : Symbol(T, Decl(moduleWithStatementsOfEveryKind.ts, 2, 13)) interface I { id: number } >I : Symbol(I, Decl(moduleWithStatementsOfEveryKind.ts, 2, 24)) ->id : Symbol(id, Decl(moduleWithStatementsOfEveryKind.ts, 3, 17)) +>id : Symbol(I.id, Decl(moduleWithStatementsOfEveryKind.ts, 3, 17)) class B extends AA implements I { id: number } >B : Symbol(B, Decl(moduleWithStatementsOfEveryKind.ts, 3, 30)) >AA : Symbol(AA, Decl(moduleWithStatementsOfEveryKind.ts, 1, 25)) >I : Symbol(I, Decl(moduleWithStatementsOfEveryKind.ts, 2, 24)) ->id : Symbol(id, Decl(moduleWithStatementsOfEveryKind.ts, 5, 45)) +>id : Symbol(B.id, Decl(moduleWithStatementsOfEveryKind.ts, 5, 45)) class BB extends A { >BB : Symbol(BB, Decl(moduleWithStatementsOfEveryKind.ts, 5, 58)) @@ -28,7 +28,7 @@ module A { >A : Symbol(A, Decl(moduleWithStatementsOfEveryKind.ts, 0, 10)) id: number; ->id : Symbol(id, Decl(moduleWithStatementsOfEveryKind.ts, 6, 27)) +>id : Symbol(BB.id, Decl(moduleWithStatementsOfEveryKind.ts, 6, 27)) } module Module { @@ -36,7 +36,7 @@ module A { class A { s: string } >A : Symbol(A, Decl(moduleWithStatementsOfEveryKind.ts, 10, 19)) ->s : Symbol(s, Decl(moduleWithStatementsOfEveryKind.ts, 11, 17)) +>s : Symbol(A.s, Decl(moduleWithStatementsOfEveryKind.ts, 11, 17)) } enum Color { Blue, Red } >Color : Symbol(Color, Decl(moduleWithStatementsOfEveryKind.ts, 12, 5)) @@ -82,23 +82,23 @@ module Y { export class A { s: string } >A : Symbol(A, Decl(moduleWithStatementsOfEveryKind.ts, 29, 10)) ->s : Symbol(s, Decl(moduleWithStatementsOfEveryKind.ts, 30, 20)) +>s : Symbol(A.s, Decl(moduleWithStatementsOfEveryKind.ts, 30, 20)) export class AA { s: T } >AA : Symbol(AA, Decl(moduleWithStatementsOfEveryKind.ts, 30, 32)) >T : Symbol(T, Decl(moduleWithStatementsOfEveryKind.ts, 31, 20)) ->s : Symbol(s, Decl(moduleWithStatementsOfEveryKind.ts, 31, 24)) +>s : Symbol(AA.s, Decl(moduleWithStatementsOfEveryKind.ts, 31, 24)) >T : Symbol(T, Decl(moduleWithStatementsOfEveryKind.ts, 31, 20)) export interface I { id: number } >I : Symbol(I, Decl(moduleWithStatementsOfEveryKind.ts, 31, 31)) ->id : Symbol(id, Decl(moduleWithStatementsOfEveryKind.ts, 32, 24)) +>id : Symbol(I.id, Decl(moduleWithStatementsOfEveryKind.ts, 32, 24)) export class B extends AA implements I { id: number } >B : Symbol(B, Decl(moduleWithStatementsOfEveryKind.ts, 32, 37)) >AA : Symbol(AA, Decl(moduleWithStatementsOfEveryKind.ts, 30, 32)) >I : Symbol(I, Decl(moduleWithStatementsOfEveryKind.ts, 31, 31)) ->id : Symbol(id, Decl(moduleWithStatementsOfEveryKind.ts, 34, 52)) +>id : Symbol(B.id, Decl(moduleWithStatementsOfEveryKind.ts, 34, 52)) export class BB extends A { >BB : Symbol(BB, Decl(moduleWithStatementsOfEveryKind.ts, 34, 65)) @@ -106,7 +106,7 @@ module Y { >A : Symbol(A, Decl(moduleWithStatementsOfEveryKind.ts, 29, 10)) id: number; ->id : Symbol(id, Decl(moduleWithStatementsOfEveryKind.ts, 35, 34)) +>id : Symbol(BB.id, Decl(moduleWithStatementsOfEveryKind.ts, 35, 34)) } export module Module { @@ -114,7 +114,7 @@ module Y { class A { s: string } >A : Symbol(A, Decl(moduleWithStatementsOfEveryKind.ts, 39, 26)) ->s : Symbol(s, Decl(moduleWithStatementsOfEveryKind.ts, 40, 17)) +>s : Symbol(A.s, Decl(moduleWithStatementsOfEveryKind.ts, 40, 17)) } export enum Color { Blue, Red } >Color : Symbol(Color, Decl(moduleWithStatementsOfEveryKind.ts, 41, 5)) diff --git a/tests/baselines/reference/module_augmentUninstantiatedModule.js b/tests/baselines/reference/module_augmentUninstantiatedModule.js new file mode 100644 index 00000000000..d3c231fda4e --- /dev/null +++ b/tests/baselines/reference/module_augmentUninstantiatedModule.js @@ -0,0 +1,12 @@ +//// [module_augmentUninstantiatedModule.ts] +declare module "foo" { + namespace M {} + var M; + export = M; +} + +declare module "bar" { + module "foo" {} +} + +//// [module_augmentUninstantiatedModule.js] diff --git a/tests/baselines/reference/module_augmentUninstantiatedModule.symbols b/tests/baselines/reference/module_augmentUninstantiatedModule.symbols new file mode 100644 index 00000000000..d405f9549ea --- /dev/null +++ b/tests/baselines/reference/module_augmentUninstantiatedModule.symbols @@ -0,0 +1,15 @@ +=== tests/cases/compiler/module_augmentUninstantiatedModule.ts === +declare module "foo" { + namespace M {} +>M : Symbol(, Decl(module_augmentUninstantiatedModule.ts, 0, 22), Decl(module_augmentUninstantiatedModule.ts, 2, 6), Decl(module_augmentUninstantiatedModule.ts, 6, 22)) + + var M; +>M : Symbol(, Decl(module_augmentUninstantiatedModule.ts, 0, 22), Decl(module_augmentUninstantiatedModule.ts, 2, 6), Decl(module_augmentUninstantiatedModule.ts, 6, 22)) + + export = M; +>M : Symbol(M, Decl(module_augmentUninstantiatedModule.ts, 0, 22), Decl(module_augmentUninstantiatedModule.ts, 2, 6)) +} + +declare module "bar" { + module "foo" {} +} diff --git a/tests/baselines/reference/module_augmentUninstantiatedModule.types b/tests/baselines/reference/module_augmentUninstantiatedModule.types new file mode 100644 index 00000000000..0c27cc3acf9 --- /dev/null +++ b/tests/baselines/reference/module_augmentUninstantiatedModule.types @@ -0,0 +1,15 @@ +=== tests/cases/compiler/module_augmentUninstantiatedModule.ts === +declare module "foo" { + namespace M {} +>M : any + + var M; +>M : any + + export = M; +>M : any +} + +declare module "bar" { + module "foo" {} +} diff --git a/tests/baselines/reference/module_augmentUninstantiatedModule2.js b/tests/baselines/reference/module_augmentUninstantiatedModule2.js new file mode 100644 index 00000000000..2e7b4d917db --- /dev/null +++ b/tests/baselines/reference/module_augmentUninstantiatedModule2.js @@ -0,0 +1,6 @@ +//// [module_augmentUninstantiatedModule2.ts] +declare var ng: ng.IAngularStatic; declare module ng { export interface IModule { name: string; } export interface IAngularStatic { module: (s: string) => IModule; } } export = ng; + +//// [module_augmentUninstantiatedModule2.js] +"use strict"; +module.exports = ng; diff --git a/tests/baselines/reference/module_augmentUninstantiatedModule2.symbols b/tests/baselines/reference/module_augmentUninstantiatedModule2.symbols new file mode 100644 index 00000000000..42e27aa9eae --- /dev/null +++ b/tests/baselines/reference/module_augmentUninstantiatedModule2.symbols @@ -0,0 +1,6 @@ +=== tests/cases/compiler/module_augmentUninstantiatedModule2.ts === +declare var ng: ng.IAngularStatic; declare module ng { export interface IModule { name: string; } export interface IAngularStatic { module: (s: string) => IModule; } } export = ng; +>ng : Symbol(ng, Decl(module_augmentUninstantiatedModule2.ts, 0, 11), Decl(module_augmentUninstantiatedModule2.ts, 0, 34)) +>ng : Symbol(ng, Decl(module_augmentUninstantiatedModule2.ts, 0, 11), Decl(module_augmentUninstantiatedModule2.ts, 0, 34)) +>IAngularStatic : Symbol(ng.IAngularStatic, Decl(module_augmentUninstantiatedModule2.ts, 5, 4)) + diff --git a/tests/baselines/reference/module_augmentUninstantiatedModule2.types b/tests/baselines/reference/module_augmentUninstantiatedModule2.types new file mode 100644 index 00000000000..2875ace3c1b --- /dev/null +++ b/tests/baselines/reference/module_augmentUninstantiatedModule2.types @@ -0,0 +1,6 @@ +=== tests/cases/compiler/module_augmentUninstantiatedModule2.ts === +declare var ng: ng.IAngularStatic; declare module ng { export interface IModule { name: string; } export interface IAngularStatic { module: (s: string) => IModule; } } export = ng; +>ng : ng.IAngularStatic +>ng : any +>IAngularStatic : ng.IAngularStatic + diff --git a/tests/baselines/reference/moduledecl.symbols b/tests/baselines/reference/moduledecl.symbols index 178c406f8cd..f0b2db9121c 100644 --- a/tests/baselines/reference/moduledecl.symbols +++ b/tests/baselines/reference/moduledecl.symbols @@ -65,10 +65,10 @@ module m0 { >c1 : Symbol(c1, Decl(moduledecl.ts, 25, 5)) public a : ()=>string; ->a : Symbol(a, Decl(moduledecl.ts, 27, 14)) +>a : Symbol(c1.a, Decl(moduledecl.ts, 27, 14)) private b: ()=>number; ->b : Symbol(b, Decl(moduledecl.ts, 28, 30)) +>b : Symbol(c1.b, Decl(moduledecl.ts, 28, 30)) private static s1; >s1 : Symbol(c1.s1, Decl(moduledecl.ts, 29, 30)) @@ -141,10 +141,10 @@ module m1 { >c1 : Symbol(c1, Decl(moduledecl.ts, 54, 5)) public a: () =>string; ->a : Symbol(a, Decl(moduledecl.ts, 56, 21)) +>a : Symbol(c1.a, Decl(moduledecl.ts, 56, 21)) private b: () =>number; ->b : Symbol(b, Decl(moduledecl.ts, 57, 30)) +>b : Symbol(c1.b, Decl(moduledecl.ts, 57, 30)) private static s1; >s1 : Symbol(c1.s1, Decl(moduledecl.ts, 58, 31)) @@ -153,21 +153,21 @@ module m1 { >s2 : Symbol(c1.s2, Decl(moduledecl.ts, 59, 26)) public d() { ->d : Symbol(d, Decl(moduledecl.ts, 60, 25)) +>d : Symbol(c1.d, Decl(moduledecl.ts, 60, 25)) return "Hello"; } public e: { x: number; y: string; }; ->e : Symbol(e, Decl(moduledecl.ts, 64, 9)) +>e : Symbol(c1.e, Decl(moduledecl.ts, 64, 9)) >x : Symbol(x, Decl(moduledecl.ts, 66, 19)) >y : Symbol(y, Decl(moduledecl.ts, 66, 30)) constructor (public n, public n2: number, private n3, private n4: string) { ->n : Symbol(n, Decl(moduledecl.ts, 67, 21)) ->n2 : Symbol(n2, Decl(moduledecl.ts, 67, 30)) ->n3 : Symbol(n3, Decl(moduledecl.ts, 67, 49)) ->n4 : Symbol(n4, Decl(moduledecl.ts, 67, 61)) +>n : Symbol(c1.n, Decl(moduledecl.ts, 67, 21)) +>n2 : Symbol(c1.n2, Decl(moduledecl.ts, 67, 30)) +>n3 : Symbol(c1.n3, Decl(moduledecl.ts, 67, 49)) +>n4 : Symbol(c1.n4, Decl(moduledecl.ts, 67, 61)) } } @@ -312,13 +312,13 @@ module exportTests { >C1_public : Symbol(C1_public, Decl(moduledecl.ts, 138, 20)) private f2() { ->f2 : Symbol(f2, Decl(moduledecl.ts, 139, 28)) +>f2 : Symbol(C1_public.f2, Decl(moduledecl.ts, 139, 28)) return 30; } public f3() { ->f3 : Symbol(f3, Decl(moduledecl.ts, 142, 9)) +>f3 : Symbol(C1_public.f3, Decl(moduledecl.ts, 142, 9)) return "string"; } @@ -327,13 +327,13 @@ module exportTests { >C2_private : Symbol(C2_private, Decl(moduledecl.ts, 147, 5)) private f2() { ->f2 : Symbol(f2, Decl(moduledecl.ts, 148, 22)) +>f2 : Symbol(C2_private.f2, Decl(moduledecl.ts, 148, 22)) return 30; } public f3() { ->f3 : Symbol(f3, Decl(moduledecl.ts, 151, 9)) +>f3 : Symbol(C2_private.f3, Decl(moduledecl.ts, 151, 9)) return "string"; } @@ -343,35 +343,35 @@ module exportTests { >C3_public : Symbol(C3_public, Decl(moduledecl.ts, 156, 5)) private getC2_private() { ->getC2_private : Symbol(getC2_private, Decl(moduledecl.ts, 158, 28)) +>getC2_private : Symbol(C3_public.getC2_private, Decl(moduledecl.ts, 158, 28)) return new C2_private(); >C2_private : Symbol(C2_private, Decl(moduledecl.ts, 147, 5)) } private setC2_private(arg: C2_private) { ->setC2_private : Symbol(setC2_private, Decl(moduledecl.ts, 161, 9)) +>setC2_private : Symbol(C3_public.setC2_private, Decl(moduledecl.ts, 161, 9)) >arg : Symbol(arg, Decl(moduledecl.ts, 162, 30)) >C2_private : Symbol(C2_private, Decl(moduledecl.ts, 147, 5)) } private get c2() { ->c2 : Symbol(c2, Decl(moduledecl.ts, 163, 9)) +>c2 : Symbol(C3_public.c2, Decl(moduledecl.ts, 163, 9)) return new C2_private(); >C2_private : Symbol(C2_private, Decl(moduledecl.ts, 147, 5)) } public getC1_public() { ->getC1_public : Symbol(getC1_public, Decl(moduledecl.ts, 166, 9)) +>getC1_public : Symbol(C3_public.getC1_public, Decl(moduledecl.ts, 166, 9)) return new C1_public(); >C1_public : Symbol(C1_public, Decl(moduledecl.ts, 138, 20)) } public setC1_public(arg: C1_public) { ->setC1_public : Symbol(setC1_public, Decl(moduledecl.ts, 169, 9)) +>setC1_public : Symbol(C3_public.setC1_public, Decl(moduledecl.ts, 169, 9)) >arg : Symbol(arg, Decl(moduledecl.ts, 170, 28)) >C1_public : Symbol(C1_public, Decl(moduledecl.ts, 138, 20)) } public get c1() { ->c1 : Symbol(c1, Decl(moduledecl.ts, 171, 9)) +>c1 : Symbol(C3_public.c1, Decl(moduledecl.ts, 171, 9)) return new C1_public(); >C1_public : Symbol(C1_public, Decl(moduledecl.ts, 138, 20)) @@ -386,7 +386,7 @@ declare module mAmbient { >C : Symbol(C, Decl(moduledecl.ts, 178, 25)) public myProp: number; ->myProp : Symbol(myProp, Decl(moduledecl.ts, 179, 13)) +>myProp : Symbol(C.myProp, Decl(moduledecl.ts, 179, 13)) } function foo() : C; @@ -401,10 +401,10 @@ declare module mAmbient { >B : Symbol(B, Decl(moduledecl.ts, 184, 16)) x: number; ->x : Symbol(x, Decl(moduledecl.ts, 185, 17)) +>x : Symbol(B.x, Decl(moduledecl.ts, 185, 17)) y: C; ->y : Symbol(y, Decl(moduledecl.ts, 186, 18)) +>y : Symbol(B.y, Decl(moduledecl.ts, 186, 18)) >C : Symbol(C, Decl(moduledecl.ts, 178, 25)) } enum e { @@ -427,7 +427,7 @@ declare module mAmbient { >C : Symbol(C, Decl(moduledecl.ts, 195, 15)) public myProp: number; ->myProp : Symbol(myProp, Decl(moduledecl.ts, 196, 17)) +>myProp : Symbol(C.myProp, Decl(moduledecl.ts, 196, 17)) } function foo(): C; @@ -442,10 +442,10 @@ declare module mAmbient { >B : Symbol(B, Decl(moduledecl.ts, 201, 20)) x: number; ->x : Symbol(x, Decl(moduledecl.ts, 202, 21)) +>x : Symbol(B.x, Decl(moduledecl.ts, 202, 21)) y: C; ->y : Symbol(y, Decl(moduledecl.ts, 203, 22)) +>y : Symbol(B.y, Decl(moduledecl.ts, 203, 22)) >C : Symbol(C, Decl(moduledecl.ts, 195, 15)) } enum e { diff --git a/tests/baselines/reference/multiExtendsSplitInterfaces2.symbols b/tests/baselines/reference/multiExtendsSplitInterfaces2.symbols index c9f390f1621..0572d2df333 100644 --- a/tests/baselines/reference/multiExtendsSplitInterfaces2.symbols +++ b/tests/baselines/reference/multiExtendsSplitInterfaces2.symbols @@ -3,7 +3,7 @@ interface A { >A : Symbol(A, Decl(multiExtendsSplitInterfaces2.ts, 0, 0)) a: number; ->a : Symbol(a, Decl(multiExtendsSplitInterfaces2.ts, 0, 13)) +>a : Symbol(A.a, Decl(multiExtendsSplitInterfaces2.ts, 0, 13)) } interface I extends A { @@ -11,14 +11,14 @@ interface I extends A { >A : Symbol(A, Decl(multiExtendsSplitInterfaces2.ts, 0, 0)) i1: number; ->i1 : Symbol(i1, Decl(multiExtendsSplitInterfaces2.ts, 4, 23)) +>i1 : Symbol(I.i1, Decl(multiExtendsSplitInterfaces2.ts, 4, 23)) } interface B { >B : Symbol(B, Decl(multiExtendsSplitInterfaces2.ts, 6, 1)) b: number; ->b : Symbol(b, Decl(multiExtendsSplitInterfaces2.ts, 8, 13)) +>b : Symbol(B.b, Decl(multiExtendsSplitInterfaces2.ts, 8, 13)) } interface I extends B { @@ -26,7 +26,7 @@ interface I extends B { >B : Symbol(B, Decl(multiExtendsSplitInterfaces2.ts, 6, 1)) i2: number; ->i2 : Symbol(i2, Decl(multiExtendsSplitInterfaces2.ts, 12, 23)) +>i2 : Symbol(I.i2, Decl(multiExtendsSplitInterfaces2.ts, 12, 23)) } var i: I; diff --git a/tests/baselines/reference/multiImportExport.symbols b/tests/baselines/reference/multiImportExport.symbols index 45b59752b2a..e4bac0d7662 100644 --- a/tests/baselines/reference/multiImportExport.symbols +++ b/tests/baselines/reference/multiImportExport.symbols @@ -35,7 +35,7 @@ class Adder { >Adder : Symbol(Adder, Decl(Adder.ts, 0, 0)) add(a: number, b: number) { ->add : Symbol(add, Decl(Adder.ts, 0, 13)) +>add : Symbol(Adder.add, Decl(Adder.ts, 0, 13)) >a : Symbol(a, Decl(Adder.ts, 1, 8)) >b : Symbol(b, Decl(Adder.ts, 1, 18)) diff --git a/tests/baselines/reference/multiModuleClodule1.symbols b/tests/baselines/reference/multiModuleClodule1.symbols index 8f83e58ed26..7fdbd064e3d 100644 --- a/tests/baselines/reference/multiModuleClodule1.symbols +++ b/tests/baselines/reference/multiModuleClodule1.symbols @@ -6,10 +6,10 @@ class C { >x : Symbol(x, Decl(multiModuleClodule1.ts, 1, 16)) foo() { } ->foo : Symbol(foo, Decl(multiModuleClodule1.ts, 1, 30)) +>foo : Symbol(C.foo, Decl(multiModuleClodule1.ts, 1, 30)) bar() { } ->bar : Symbol(bar, Decl(multiModuleClodule1.ts, 2, 13)) +>bar : Symbol(C.bar, Decl(multiModuleClodule1.ts, 2, 13)) static boo() { } >boo : Symbol(C.boo, Decl(multiModuleClodule1.ts, 3, 13)) diff --git a/tests/baselines/reference/mutrec.symbols b/tests/baselines/reference/mutrec.symbols index 2a24cc4c65e..c4bf8753373 100644 --- a/tests/baselines/reference/mutrec.symbols +++ b/tests/baselines/reference/mutrec.symbols @@ -3,7 +3,7 @@ interface A { >A : Symbol(A, Decl(mutrec.ts, 0, 0)) x:B[]; ->x : Symbol(x, Decl(mutrec.ts, 0, 13)) +>x : Symbol(A.x, Decl(mutrec.ts, 0, 13)) >B : Symbol(B, Decl(mutrec.ts, 2, 1)) } @@ -11,7 +11,7 @@ interface B { >B : Symbol(B, Decl(mutrec.ts, 2, 1)) x:A[]; ->x : Symbol(x, Decl(mutrec.ts, 4, 13)) +>x : Symbol(B.x, Decl(mutrec.ts, 4, 13)) >A : Symbol(A, Decl(mutrec.ts, 0, 0)) } @@ -33,7 +33,7 @@ interface I1 { >I1 : Symbol(I1, Decl(mutrec.ts, 10, 5)) y:I2; ->y : Symbol(y, Decl(mutrec.ts, 12, 14)) +>y : Symbol(I1.y, Decl(mutrec.ts, 12, 14)) >I2 : Symbol(I2, Decl(mutrec.ts, 14, 1)) } @@ -41,7 +41,7 @@ interface I2 { >I2 : Symbol(I2, Decl(mutrec.ts, 14, 1)) y:I3; ->y : Symbol(y, Decl(mutrec.ts, 16, 14)) +>y : Symbol(I2.y, Decl(mutrec.ts, 16, 14)) >I3 : Symbol(I3, Decl(mutrec.ts, 18, 1)) } @@ -49,7 +49,7 @@ interface I3 { >I3 : Symbol(I3, Decl(mutrec.ts, 18, 1)) y:I1; ->y : Symbol(y, Decl(mutrec.ts, 20, 14)) +>y : Symbol(I3.y, Decl(mutrec.ts, 20, 14)) >I1 : Symbol(I1, Decl(mutrec.ts, 10, 5)) } @@ -79,7 +79,7 @@ interface I4 { >I4 : Symbol(I4, Decl(mutrec.ts, 28, 6)) y:I5; ->y : Symbol(y, Decl(mutrec.ts, 30, 14)) +>y : Symbol(I4.y, Decl(mutrec.ts, 30, 14)) >I5 : Symbol(I5, Decl(mutrec.ts, 32, 1)) } @@ -87,7 +87,7 @@ interface I5 { >I5 : Symbol(I5, Decl(mutrec.ts, 32, 1)) y:I4; ->y : Symbol(y, Decl(mutrec.ts, 34, 14)) +>y : Symbol(I5.y, Decl(mutrec.ts, 34, 14)) >I4 : Symbol(I4, Decl(mutrec.ts, 28, 6)) } diff --git a/tests/baselines/reference/mutuallyRecursiveGenericBaseTypes1.symbols b/tests/baselines/reference/mutuallyRecursiveGenericBaseTypes1.symbols index 67871a590cb..6d42a8c83f9 100644 --- a/tests/baselines/reference/mutuallyRecursiveGenericBaseTypes1.symbols +++ b/tests/baselines/reference/mutuallyRecursiveGenericBaseTypes1.symbols @@ -4,15 +4,15 @@ interface A { >T : Symbol(T, Decl(mutuallyRecursiveGenericBaseTypes1.ts, 0, 12)) foo(): B; // instead of B does see this ->foo : Symbol(foo, Decl(mutuallyRecursiveGenericBaseTypes1.ts, 0, 16), Decl(mutuallyRecursiveGenericBaseTypes1.ts, 1, 16)) +>foo : Symbol(A.foo, Decl(mutuallyRecursiveGenericBaseTypes1.ts, 0, 16), Decl(mutuallyRecursiveGenericBaseTypes1.ts, 1, 16)) >B : Symbol(B, Decl(mutuallyRecursiveGenericBaseTypes1.ts, 5, 1)) >T : Symbol(T, Decl(mutuallyRecursiveGenericBaseTypes1.ts, 0, 12)) foo(): void; // instead of B does see this ->foo : Symbol(foo, Decl(mutuallyRecursiveGenericBaseTypes1.ts, 0, 16), Decl(mutuallyRecursiveGenericBaseTypes1.ts, 1, 16)) +>foo : Symbol(A.foo, Decl(mutuallyRecursiveGenericBaseTypes1.ts, 0, 16), Decl(mutuallyRecursiveGenericBaseTypes1.ts, 1, 16)) foo2(): B; ->foo2 : Symbol(foo2, Decl(mutuallyRecursiveGenericBaseTypes1.ts, 2, 16)) +>foo2 : Symbol(A.foo2, Decl(mutuallyRecursiveGenericBaseTypes1.ts, 2, 16)) >B : Symbol(B, Decl(mutuallyRecursiveGenericBaseTypes1.ts, 5, 1)) } @@ -23,7 +23,7 @@ interface B extends A { >T : Symbol(T, Decl(mutuallyRecursiveGenericBaseTypes1.ts, 7, 12)) bar(): void; ->bar : Symbol(bar, Decl(mutuallyRecursiveGenericBaseTypes1.ts, 7, 29)) +>bar : Symbol(B.bar, Decl(mutuallyRecursiveGenericBaseTypes1.ts, 7, 29)) } var b: B; diff --git a/tests/baselines/reference/mutuallyRecursiveGenericBaseTypes2.symbols b/tests/baselines/reference/mutuallyRecursiveGenericBaseTypes2.symbols index d66f6a0c66f..11d5535a6a7 100644 --- a/tests/baselines/reference/mutuallyRecursiveGenericBaseTypes2.symbols +++ b/tests/baselines/reference/mutuallyRecursiveGenericBaseTypes2.symbols @@ -4,7 +4,7 @@ class foo >T : Symbol(T, Decl(mutuallyRecursiveGenericBaseTypes2.ts, 0, 10)) { bar(): foo2 { return null; } ->bar : Symbol(bar, Decl(mutuallyRecursiveGenericBaseTypes2.ts, 1, 1)) +>bar : Symbol(foo.bar, Decl(mutuallyRecursiveGenericBaseTypes2.ts, 1, 1)) >foo2 : Symbol(foo2, Decl(mutuallyRecursiveGenericBaseTypes2.ts, 3, 1)) >T : Symbol(T, Decl(mutuallyRecursiveGenericBaseTypes2.ts, 0, 10)) } diff --git a/tests/baselines/reference/nameCollision.symbols b/tests/baselines/reference/nameCollision.symbols index 064726e21fa..bd14bc6a95f 100644 --- a/tests/baselines/reference/nameCollision.symbols +++ b/tests/baselines/reference/nameCollision.symbols @@ -27,7 +27,7 @@ module B { >B : Symbol(B, Decl(nameCollision.ts, 11, 10)) name: string; ->name : Symbol(name, Decl(nameCollision.ts, 14, 13)) +>name : Symbol(B.name, Decl(nameCollision.ts, 14, 13)) } } @@ -80,7 +80,7 @@ module D { >D : Symbol(D, Decl(nameCollision.ts, 39, 10)) id: number; ->id : Symbol(id, Decl(nameCollision.ts, 40, 24)) +>id : Symbol(D.id, Decl(nameCollision.ts, 40, 24)) } export var E = 'hello'; diff --git a/tests/baselines/reference/namedFunctionExpressionAssignedToClassProperty.symbols b/tests/baselines/reference/namedFunctionExpressionAssignedToClassProperty.symbols index 707bc64571f..d75eb3c5303 100644 --- a/tests/baselines/reference/namedFunctionExpressionAssignedToClassProperty.symbols +++ b/tests/baselines/reference/namedFunctionExpressionAssignedToClassProperty.symbols @@ -3,7 +3,7 @@ class Foo{ >Foo : Symbol(Foo, Decl(namedFunctionExpressionAssignedToClassProperty.ts, 0, 0)) a = function bar(){ ->a : Symbol(a, Decl(namedFunctionExpressionAssignedToClassProperty.ts, 0, 10)) +>a : Symbol(Foo.a, Decl(namedFunctionExpressionAssignedToClassProperty.ts, 0, 10)) >bar : Symbol(bar, Decl(namedFunctionExpressionAssignedToClassProperty.ts, 2, 10)) }; // this shouldn't crash the compiler... diff --git a/tests/baselines/reference/narrowTypeByInstanceof.symbols b/tests/baselines/reference/narrowTypeByInstanceof.symbols index 3e620fd105c..994327ab21c 100644 --- a/tests/baselines/reference/narrowTypeByInstanceof.symbols +++ b/tests/baselines/reference/narrowTypeByInstanceof.symbols @@ -3,7 +3,7 @@ >Match : Symbol(Match, Decl(narrowTypeByInstanceof.ts, 0, 0)) public range(): any { ->range : Symbol(range, Decl(narrowTypeByInstanceof.ts, 0, 17)) +>range : Symbol(Match.range, Decl(narrowTypeByInstanceof.ts, 0, 17)) return undefined; >undefined : Symbol(undefined) @@ -14,7 +14,7 @@ >FileMatch : Symbol(FileMatch, Decl(narrowTypeByInstanceof.ts, 4, 5)) public resource(): any { ->resource : Symbol(resource, Decl(narrowTypeByInstanceof.ts, 6, 21)) +>resource : Symbol(FileMatch.resource, Decl(narrowTypeByInstanceof.ts, 6, 21)) return undefined; >undefined : Symbol(undefined) diff --git a/tests/baselines/reference/narrowingOfDottedNames.js b/tests/baselines/reference/narrowingOfDottedNames.js new file mode 100644 index 00000000000..14cdcd55631 --- /dev/null +++ b/tests/baselines/reference/narrowingOfDottedNames.js @@ -0,0 +1,80 @@ +//// [narrowingOfDottedNames.ts] +// Repro from #8383 + +class A { + prop: { a: string; }; +} + +class B { + prop: { b: string; } +} + +function isA(x: any): x is A { + return x instanceof A; +} + +function isB(x: any): x is B { + return x instanceof B; +} + +function f1(x: A | B) { + while (true) { + if (x instanceof A) { + x.prop.a; + } + else if (x instanceof B) { + x.prop.b; + } + } +} + +function f2(x: A | B) { + while (true) { + if (isA(x)) { + x.prop.a; + } + else if (isB(x)) { + x.prop.b; + } + } +} + + +//// [narrowingOfDottedNames.js] +// Repro from #8383 +var A = (function () { + function A() { + } + return A; +}()); +var B = (function () { + function B() { + } + return B; +}()); +function isA(x) { + return x instanceof A; +} +function isB(x) { + return x instanceof B; +} +function f1(x) { + while (true) { + if (x instanceof A) { + x.prop.a; + } + else if (x instanceof B) { + x.prop.b; + } + } +} +function f2(x) { + while (true) { + if (isA(x)) { + x.prop.a; + } + else if (isB(x)) { + x.prop.b; + } + } +} diff --git a/tests/baselines/reference/narrowingOfDottedNames.symbols b/tests/baselines/reference/narrowingOfDottedNames.symbols new file mode 100644 index 00000000000..98f75372a4e --- /dev/null +++ b/tests/baselines/reference/narrowingOfDottedNames.symbols @@ -0,0 +1,105 @@ +=== tests/cases/compiler/narrowingOfDottedNames.ts === +// Repro from #8383 + +class A { +>A : Symbol(A, Decl(narrowingOfDottedNames.ts, 0, 0)) + + prop: { a: string; }; +>prop : Symbol(A.prop, Decl(narrowingOfDottedNames.ts, 2, 9)) +>a : Symbol(a, Decl(narrowingOfDottedNames.ts, 3, 11)) +} + +class B { +>B : Symbol(B, Decl(narrowingOfDottedNames.ts, 4, 1)) + + prop: { b: string; } +>prop : Symbol(B.prop, Decl(narrowingOfDottedNames.ts, 6, 9)) +>b : Symbol(b, Decl(narrowingOfDottedNames.ts, 7, 11)) +} + +function isA(x: any): x is A { +>isA : Symbol(isA, Decl(narrowingOfDottedNames.ts, 8, 1)) +>x : Symbol(x, Decl(narrowingOfDottedNames.ts, 10, 13)) +>x : Symbol(x, Decl(narrowingOfDottedNames.ts, 10, 13)) +>A : Symbol(A, Decl(narrowingOfDottedNames.ts, 0, 0)) + + return x instanceof A; +>x : Symbol(x, Decl(narrowingOfDottedNames.ts, 10, 13)) +>A : Symbol(A, Decl(narrowingOfDottedNames.ts, 0, 0)) +} + +function isB(x: any): x is B { +>isB : Symbol(isB, Decl(narrowingOfDottedNames.ts, 12, 1)) +>x : Symbol(x, Decl(narrowingOfDottedNames.ts, 14, 13)) +>x : Symbol(x, Decl(narrowingOfDottedNames.ts, 14, 13)) +>B : Symbol(B, Decl(narrowingOfDottedNames.ts, 4, 1)) + + return x instanceof B; +>x : Symbol(x, Decl(narrowingOfDottedNames.ts, 14, 13)) +>B : Symbol(B, Decl(narrowingOfDottedNames.ts, 4, 1)) +} + +function f1(x: A | B) { +>f1 : Symbol(f1, Decl(narrowingOfDottedNames.ts, 16, 1)) +>x : Symbol(x, Decl(narrowingOfDottedNames.ts, 18, 12)) +>A : Symbol(A, Decl(narrowingOfDottedNames.ts, 0, 0)) +>B : Symbol(B, Decl(narrowingOfDottedNames.ts, 4, 1)) + + while (true) { + if (x instanceof A) { +>x : Symbol(x, Decl(narrowingOfDottedNames.ts, 18, 12)) +>A : Symbol(A, Decl(narrowingOfDottedNames.ts, 0, 0)) + + x.prop.a; +>x.prop.a : Symbol(a, Decl(narrowingOfDottedNames.ts, 3, 11)) +>x.prop : Symbol(A.prop, Decl(narrowingOfDottedNames.ts, 2, 9)) +>x : Symbol(x, Decl(narrowingOfDottedNames.ts, 18, 12)) +>prop : Symbol(A.prop, Decl(narrowingOfDottedNames.ts, 2, 9)) +>a : Symbol(a, Decl(narrowingOfDottedNames.ts, 3, 11)) + } + else if (x instanceof B) { +>x : Symbol(x, Decl(narrowingOfDottedNames.ts, 18, 12)) +>B : Symbol(B, Decl(narrowingOfDottedNames.ts, 4, 1)) + + x.prop.b; +>x.prop.b : Symbol(b, Decl(narrowingOfDottedNames.ts, 7, 11)) +>x.prop : Symbol(B.prop, Decl(narrowingOfDottedNames.ts, 6, 9)) +>x : Symbol(x, Decl(narrowingOfDottedNames.ts, 18, 12)) +>prop : Symbol(B.prop, Decl(narrowingOfDottedNames.ts, 6, 9)) +>b : Symbol(b, Decl(narrowingOfDottedNames.ts, 7, 11)) + } + } +} + +function f2(x: A | B) { +>f2 : Symbol(f2, Decl(narrowingOfDottedNames.ts, 27, 1)) +>x : Symbol(x, Decl(narrowingOfDottedNames.ts, 29, 12)) +>A : Symbol(A, Decl(narrowingOfDottedNames.ts, 0, 0)) +>B : Symbol(B, Decl(narrowingOfDottedNames.ts, 4, 1)) + + while (true) { + if (isA(x)) { +>isA : Symbol(isA, Decl(narrowingOfDottedNames.ts, 8, 1)) +>x : Symbol(x, Decl(narrowingOfDottedNames.ts, 29, 12)) + + x.prop.a; +>x.prop.a : Symbol(a, Decl(narrowingOfDottedNames.ts, 3, 11)) +>x.prop : Symbol(A.prop, Decl(narrowingOfDottedNames.ts, 2, 9)) +>x : Symbol(x, Decl(narrowingOfDottedNames.ts, 29, 12)) +>prop : Symbol(A.prop, Decl(narrowingOfDottedNames.ts, 2, 9)) +>a : Symbol(a, Decl(narrowingOfDottedNames.ts, 3, 11)) + } + else if (isB(x)) { +>isB : Symbol(isB, Decl(narrowingOfDottedNames.ts, 12, 1)) +>x : Symbol(x, Decl(narrowingOfDottedNames.ts, 29, 12)) + + x.prop.b; +>x.prop.b : Symbol(b, Decl(narrowingOfDottedNames.ts, 7, 11)) +>x.prop : Symbol(B.prop, Decl(narrowingOfDottedNames.ts, 6, 9)) +>x : Symbol(x, Decl(narrowingOfDottedNames.ts, 29, 12)) +>prop : Symbol(B.prop, Decl(narrowingOfDottedNames.ts, 6, 9)) +>b : Symbol(b, Decl(narrowingOfDottedNames.ts, 7, 11)) + } + } +} + diff --git a/tests/baselines/reference/narrowingOfDottedNames.types b/tests/baselines/reference/narrowingOfDottedNames.types new file mode 100644 index 00000000000..697e080b661 --- /dev/null +++ b/tests/baselines/reference/narrowingOfDottedNames.types @@ -0,0 +1,115 @@ +=== tests/cases/compiler/narrowingOfDottedNames.ts === +// Repro from #8383 + +class A { +>A : A + + prop: { a: string; }; +>prop : { a: string; } +>a : string +} + +class B { +>B : B + + prop: { b: string; } +>prop : { b: string; } +>b : string +} + +function isA(x: any): x is A { +>isA : (x: any) => x is A +>x : any +>x : any +>A : A + + return x instanceof A; +>x instanceof A : boolean +>x : any +>A : typeof A +} + +function isB(x: any): x is B { +>isB : (x: any) => x is B +>x : any +>x : any +>B : B + + return x instanceof B; +>x instanceof B : boolean +>x : any +>B : typeof B +} + +function f1(x: A | B) { +>f1 : (x: A | B) => void +>x : A | B +>A : A +>B : B + + while (true) { +>true : boolean + + if (x instanceof A) { +>x instanceof A : boolean +>x : A | B +>A : typeof A + + x.prop.a; +>x.prop.a : string +>x.prop : { a: string; } +>x : A +>prop : { a: string; } +>a : string + } + else if (x instanceof B) { +>x instanceof B : boolean +>x : B +>B : typeof B + + x.prop.b; +>x.prop.b : string +>x.prop : { b: string; } +>x : B +>prop : { b: string; } +>b : string + } + } +} + +function f2(x: A | B) { +>f2 : (x: A | B) => void +>x : A | B +>A : A +>B : B + + while (true) { +>true : boolean + + if (isA(x)) { +>isA(x) : boolean +>isA : (x: any) => x is A +>x : A | B + + x.prop.a; +>x.prop.a : string +>x.prop : { a: string; } +>x : A +>prop : { a: string; } +>a : string + } + else if (isB(x)) { +>isB(x) : boolean +>isB : (x: any) => x is B +>x : B + + x.prop.b; +>x.prop.b : string +>x.prop : { b: string; } +>x : B +>prop : { b: string; } +>b : string + } + } +} + diff --git a/tests/baselines/reference/negateOperatorWithAnyOtherType.symbols b/tests/baselines/reference/negateOperatorWithAnyOtherType.symbols index 891fc363dbd..8c45ccfbc19 100644 --- a/tests/baselines/reference/negateOperatorWithAnyOtherType.symbols +++ b/tests/baselines/reference/negateOperatorWithAnyOtherType.symbols @@ -31,7 +31,7 @@ class A { >A : Symbol(A, Decl(negateOperatorWithAnyOtherType.ts, 11, 1)) public a: any; ->a : Symbol(a, Decl(negateOperatorWithAnyOtherType.ts, 12, 9)) +>a : Symbol(A.a, Decl(negateOperatorWithAnyOtherType.ts, 12, 9)) static foo() { >foo : Symbol(A.foo, Decl(negateOperatorWithAnyOtherType.ts, 13, 18)) diff --git a/tests/baselines/reference/negateOperatorWithBooleanType.symbols b/tests/baselines/reference/negateOperatorWithBooleanType.symbols index 55b35026b97..a7568eeafe7 100644 --- a/tests/baselines/reference/negateOperatorWithBooleanType.symbols +++ b/tests/baselines/reference/negateOperatorWithBooleanType.symbols @@ -10,7 +10,7 @@ class A { >A : Symbol(A, Decl(negateOperatorWithBooleanType.ts, 3, 40)) public a: boolean; ->a : Symbol(a, Decl(negateOperatorWithBooleanType.ts, 5, 9)) +>a : Symbol(A.a, Decl(negateOperatorWithBooleanType.ts, 5, 9)) static foo() { return false; } >foo : Symbol(A.foo, Decl(negateOperatorWithBooleanType.ts, 6, 22)) diff --git a/tests/baselines/reference/negateOperatorWithEnumType.symbols b/tests/baselines/reference/negateOperatorWithEnumType.symbols index 9d97cda0466..98af23bb121 100644 --- a/tests/baselines/reference/negateOperatorWithEnumType.symbols +++ b/tests/baselines/reference/negateOperatorWithEnumType.symbols @@ -26,7 +26,7 @@ var ResultIsNumber3 = -(ENUM1.B + ENUM1[""]); >ENUM1 : Symbol(ENUM1, Decl(negateOperatorWithEnumType.ts, 2, 14)) >B : Symbol(ENUM1.B, Decl(negateOperatorWithEnumType.ts, 3, 15)) >ENUM1 : Symbol(ENUM1, Decl(negateOperatorWithEnumType.ts, 2, 14)) ->"" : Symbol(ENUM1."", Decl(negateOperatorWithEnumType.ts, 3, 18)) +>"" : Symbol(ENUM1[""], Decl(negateOperatorWithEnumType.ts, 3, 18)) // miss assignment operators -ENUM; diff --git a/tests/baselines/reference/negateOperatorWithNumberType.symbols b/tests/baselines/reference/negateOperatorWithNumberType.symbols index 1f75d922b09..cf042284898 100644 --- a/tests/baselines/reference/negateOperatorWithNumberType.symbols +++ b/tests/baselines/reference/negateOperatorWithNumberType.symbols @@ -13,7 +13,7 @@ class A { >A : Symbol(A, Decl(negateOperatorWithNumberType.ts, 4, 36)) public a: number; ->a : Symbol(a, Decl(negateOperatorWithNumberType.ts, 6, 9)) +>a : Symbol(A.a, Decl(negateOperatorWithNumberType.ts, 6, 9)) static foo() { return 1; } >foo : Symbol(A.foo, Decl(negateOperatorWithNumberType.ts, 7, 21)) diff --git a/tests/baselines/reference/negateOperatorWithStringType.symbols b/tests/baselines/reference/negateOperatorWithStringType.symbols index 5ef0afc7e1c..497e3c7cb00 100644 --- a/tests/baselines/reference/negateOperatorWithStringType.symbols +++ b/tests/baselines/reference/negateOperatorWithStringType.symbols @@ -13,7 +13,7 @@ class A { >A : Symbol(A, Decl(negateOperatorWithStringType.ts, 4, 40)) public a: string; ->a : Symbol(a, Decl(negateOperatorWithStringType.ts, 6, 9)) +>a : Symbol(A.a, Decl(negateOperatorWithStringType.ts, 6, 9)) static foo() { return ""; } >foo : Symbol(A.foo, Decl(negateOperatorWithStringType.ts, 7, 21)) diff --git a/tests/baselines/reference/nestedBlockScopedBindings13.errors.txt b/tests/baselines/reference/nestedBlockScopedBindings13.errors.txt new file mode 100644 index 00000000000..0421583cff9 --- /dev/null +++ b/tests/baselines/reference/nestedBlockScopedBindings13.errors.txt @@ -0,0 +1,18 @@ +tests/cases/compiler/nestedBlockScopedBindings13.ts(2,5): error TS7027: Unreachable code detected. +tests/cases/compiler/nestedBlockScopedBindings13.ts(7,5): error TS7027: Unreachable code detected. + + +==== tests/cases/compiler/nestedBlockScopedBindings13.ts (2 errors) ==== + for (; false;) { + let x; + ~~~ +!!! error TS7027: Unreachable code detected. + () => x; + } + + for (; false;) { + let y; + ~~~ +!!! error TS7027: Unreachable code detected. + y = 1; + } \ No newline at end of file diff --git a/tests/baselines/reference/nestedBlockScopedBindings13.symbols b/tests/baselines/reference/nestedBlockScopedBindings13.symbols deleted file mode 100644 index a5bc7ed7866..00000000000 --- a/tests/baselines/reference/nestedBlockScopedBindings13.symbols +++ /dev/null @@ -1,16 +0,0 @@ -=== tests/cases/compiler/nestedBlockScopedBindings13.ts === -for (; false;) { - let x; ->x : Symbol(x, Decl(nestedBlockScopedBindings13.ts, 1, 7)) - - () => x; ->x : Symbol(x, Decl(nestedBlockScopedBindings13.ts, 1, 7)) -} - -for (; false;) { - let y; ->y : Symbol(y, Decl(nestedBlockScopedBindings13.ts, 6, 7)) - - y = 1; ->y : Symbol(y, Decl(nestedBlockScopedBindings13.ts, 6, 7)) -} diff --git a/tests/baselines/reference/nestedBlockScopedBindings13.types b/tests/baselines/reference/nestedBlockScopedBindings13.types deleted file mode 100644 index 2e7bc7de77e..00000000000 --- a/tests/baselines/reference/nestedBlockScopedBindings13.types +++ /dev/null @@ -1,23 +0,0 @@ -=== tests/cases/compiler/nestedBlockScopedBindings13.ts === -for (; false;) { ->false : boolean - - let x; ->x : any - - () => x; ->() => x : () => any ->x : any -} - -for (; false;) { ->false : boolean - - let y; ->y : any - - y = 1; ->y = 1 : number ->y : any ->1 : number -} diff --git a/tests/baselines/reference/nestedBlockScopedBindings14.errors.txt b/tests/baselines/reference/nestedBlockScopedBindings14.errors.txt new file mode 100644 index 00000000000..1b5babb4c25 --- /dev/null +++ b/tests/baselines/reference/nestedBlockScopedBindings14.errors.txt @@ -0,0 +1,20 @@ +tests/cases/compiler/nestedBlockScopedBindings14.ts(3,5): error TS7027: Unreachable code detected. +tests/cases/compiler/nestedBlockScopedBindings14.ts(9,5): error TS7027: Unreachable code detected. + + +==== tests/cases/compiler/nestedBlockScopedBindings14.ts (2 errors) ==== + var x; + for (; false;) { + let x; + ~~~ +!!! error TS7027: Unreachable code detected. + () => x; + } + + var y; + for (; false;) { + let y; + ~~~ +!!! error TS7027: Unreachable code detected. + y = 1; + } \ No newline at end of file diff --git a/tests/baselines/reference/nestedBlockScopedBindings14.symbols b/tests/baselines/reference/nestedBlockScopedBindings14.symbols deleted file mode 100644 index 4a13b296e88..00000000000 --- a/tests/baselines/reference/nestedBlockScopedBindings14.symbols +++ /dev/null @@ -1,22 +0,0 @@ -=== tests/cases/compiler/nestedBlockScopedBindings14.ts === -var x; ->x : Symbol(x, Decl(nestedBlockScopedBindings14.ts, 0, 3)) - -for (; false;) { - let x; ->x : Symbol(x, Decl(nestedBlockScopedBindings14.ts, 2, 7)) - - () => x; ->x : Symbol(x, Decl(nestedBlockScopedBindings14.ts, 2, 7)) -} - -var y; ->y : Symbol(y, Decl(nestedBlockScopedBindings14.ts, 6, 3)) - -for (; false;) { - let y; ->y : Symbol(y, Decl(nestedBlockScopedBindings14.ts, 8, 7)) - - y = 1; ->y : Symbol(y, Decl(nestedBlockScopedBindings14.ts, 8, 7)) -} diff --git a/tests/baselines/reference/nestedBlockScopedBindings14.types b/tests/baselines/reference/nestedBlockScopedBindings14.types deleted file mode 100644 index 966eaaaac7a..00000000000 --- a/tests/baselines/reference/nestedBlockScopedBindings14.types +++ /dev/null @@ -1,29 +0,0 @@ -=== tests/cases/compiler/nestedBlockScopedBindings14.ts === -var x; ->x : any - -for (; false;) { ->false : boolean - - let x; ->x : any - - () => x; ->() => x : () => any ->x : any -} - -var y; ->y : any - -for (; false;) { ->false : boolean - - let y; ->y : any - - y = 1; ->y = 1 : number ->y : any ->1 : number -} diff --git a/tests/baselines/reference/nestedBlockScopedBindings15.errors.txt b/tests/baselines/reference/nestedBlockScopedBindings15.errors.txt new file mode 100644 index 00000000000..b60a502b528 --- /dev/null +++ b/tests/baselines/reference/nestedBlockScopedBindings15.errors.txt @@ -0,0 +1,46 @@ +tests/cases/compiler/nestedBlockScopedBindings15.ts(3,9): error TS7027: Unreachable code detected. +tests/cases/compiler/nestedBlockScopedBindings15.ts(10,9): error TS7027: Unreachable code detected. +tests/cases/compiler/nestedBlockScopedBindings15.ts(16,5): error TS7027: Unreachable code detected. +tests/cases/compiler/nestedBlockScopedBindings15.ts(25,5): error TS7027: Unreachable code detected. + + +==== tests/cases/compiler/nestedBlockScopedBindings15.ts (4 errors) ==== + for (; false;) { + { + let x; + ~~~ +!!! error TS7027: Unreachable code detected. + () => x; + } + } + + for (; false;) { + { + let y; + ~~~ +!!! error TS7027: Unreachable code detected. + y = 1; + } + } + + for (; false;) { + switch (1){ + ~~~~~~ +!!! error TS7027: Unreachable code detected. + case 1: + let z0; + () => z0; + break; + } + } + + for (; false;) { + switch (1){ + ~~~~~~ +!!! error TS7027: Unreachable code detected. + case 1: + let z; + z = 1; + break; + } + } \ No newline at end of file diff --git a/tests/baselines/reference/nestedBlockScopedBindings15.symbols b/tests/baselines/reference/nestedBlockScopedBindings15.symbols deleted file mode 100644 index 26ef28f6050..00000000000 --- a/tests/baselines/reference/nestedBlockScopedBindings15.symbols +++ /dev/null @@ -1,46 +0,0 @@ -=== tests/cases/compiler/nestedBlockScopedBindings15.ts === -for (; false;) { - { - let x; ->x : Symbol(x, Decl(nestedBlockScopedBindings15.ts, 2, 11)) - - () => x; ->x : Symbol(x, Decl(nestedBlockScopedBindings15.ts, 2, 11)) - } -} - -for (; false;) { - { - let y; ->y : Symbol(y, Decl(nestedBlockScopedBindings15.ts, 9, 11)) - - y = 1; ->y : Symbol(y, Decl(nestedBlockScopedBindings15.ts, 9, 11)) - } -} - -for (; false;) { - switch (1){ - case 1: - let z0; ->z0 : Symbol(z0, Decl(nestedBlockScopedBindings15.ts, 17, 15)) - - () => z0; ->z0 : Symbol(z0, Decl(nestedBlockScopedBindings15.ts, 17, 15)) - - break; - } -} - -for (; false;) { - switch (1){ - case 1: - let z; ->z : Symbol(z, Decl(nestedBlockScopedBindings15.ts, 26, 15)) - - z = 1; ->z : Symbol(z, Decl(nestedBlockScopedBindings15.ts, 26, 15)) - - break; - } -} diff --git a/tests/baselines/reference/nestedBlockScopedBindings15.types b/tests/baselines/reference/nestedBlockScopedBindings15.types deleted file mode 100644 index 5173c0c5600..00000000000 --- a/tests/baselines/reference/nestedBlockScopedBindings15.types +++ /dev/null @@ -1,66 +0,0 @@ -=== tests/cases/compiler/nestedBlockScopedBindings15.ts === -for (; false;) { ->false : boolean - { - let x; ->x : any - - () => x; ->() => x : () => any ->x : any - } -} - -for (; false;) { ->false : boolean - { - let y; ->y : any - - y = 1; ->y = 1 : number ->y : any ->1 : number - } -} - -for (; false;) { ->false : boolean - - switch (1){ ->1 : number - - case 1: ->1 : number - - let z0; ->z0 : any - - () => z0; ->() => z0 : () => any ->z0 : any - - break; - } -} - -for (; false;) { ->false : boolean - - switch (1){ ->1 : number - - case 1: ->1 : number - - let z; ->z : any - - z = 1; ->z = 1 : number ->z : any ->1 : number - - break; - } -} diff --git a/tests/baselines/reference/nestedBlockScopedBindings16.errors.txt b/tests/baselines/reference/nestedBlockScopedBindings16.errors.txt new file mode 100644 index 00000000000..806f58231a0 --- /dev/null +++ b/tests/baselines/reference/nestedBlockScopedBindings16.errors.txt @@ -0,0 +1,50 @@ +tests/cases/compiler/nestedBlockScopedBindings16.ts(4,9): error TS7027: Unreachable code detected. +tests/cases/compiler/nestedBlockScopedBindings16.ts(12,9): error TS7027: Unreachable code detected. +tests/cases/compiler/nestedBlockScopedBindings16.ts(19,5): error TS7027: Unreachable code detected. +tests/cases/compiler/nestedBlockScopedBindings16.ts(29,5): error TS7027: Unreachable code detected. + + +==== tests/cases/compiler/nestedBlockScopedBindings16.ts (4 errors) ==== + var x; + for (; false;) { + { + let x; + ~~~ +!!! error TS7027: Unreachable code detected. + () => x; + } + } + + var y; + for (; false;) { + { + let y; + ~~~ +!!! error TS7027: Unreachable code detected. + y = 1; + } + } + + var z0; + for (; false;) { + switch (1){ + ~~~~~~ +!!! error TS7027: Unreachable code detected. + case 1: + let z0; + () => z0; + break; + } + } + + var z; + for (; false;) { + switch (1){ + ~~~~~~ +!!! error TS7027: Unreachable code detected. + case 1: + let z; + z = 1; + break; + } + } \ No newline at end of file diff --git a/tests/baselines/reference/nestedBlockScopedBindings16.symbols b/tests/baselines/reference/nestedBlockScopedBindings16.symbols deleted file mode 100644 index cbe8114cf14..00000000000 --- a/tests/baselines/reference/nestedBlockScopedBindings16.symbols +++ /dev/null @@ -1,58 +0,0 @@ -=== tests/cases/compiler/nestedBlockScopedBindings16.ts === -var x; ->x : Symbol(x, Decl(nestedBlockScopedBindings16.ts, 0, 3)) - -for (; false;) { - { - let x; ->x : Symbol(x, Decl(nestedBlockScopedBindings16.ts, 3, 11)) - - () => x; ->x : Symbol(x, Decl(nestedBlockScopedBindings16.ts, 3, 11)) - } -} - -var y; ->y : Symbol(y, Decl(nestedBlockScopedBindings16.ts, 8, 3)) - -for (; false;) { - { - let y; ->y : Symbol(y, Decl(nestedBlockScopedBindings16.ts, 11, 11)) - - y = 1; ->y : Symbol(y, Decl(nestedBlockScopedBindings16.ts, 11, 11)) - } -} - -var z0; ->z0 : Symbol(z0, Decl(nestedBlockScopedBindings16.ts, 16, 3)) - -for (; false;) { - switch (1){ - case 1: - let z0; ->z0 : Symbol(z0, Decl(nestedBlockScopedBindings16.ts, 20, 15)) - - () => z0; ->z0 : Symbol(z0, Decl(nestedBlockScopedBindings16.ts, 20, 15)) - - break; - } -} - -var z; ->z : Symbol(z, Decl(nestedBlockScopedBindings16.ts, 26, 3)) - -for (; false;) { - switch (1){ - case 1: - let z; ->z : Symbol(z, Decl(nestedBlockScopedBindings16.ts, 30, 15)) - - z = 1; ->z : Symbol(z, Decl(nestedBlockScopedBindings16.ts, 30, 15)) - - break; - } -} diff --git a/tests/baselines/reference/nestedBlockScopedBindings16.types b/tests/baselines/reference/nestedBlockScopedBindings16.types deleted file mode 100644 index 22698402a62..00000000000 --- a/tests/baselines/reference/nestedBlockScopedBindings16.types +++ /dev/null @@ -1,78 +0,0 @@ -=== tests/cases/compiler/nestedBlockScopedBindings16.ts === -var x; ->x : any - -for (; false;) { ->false : boolean - { - let x; ->x : any - - () => x; ->() => x : () => any ->x : any - } -} - -var y; ->y : any - -for (; false;) { ->false : boolean - { - let y; ->y : any - - y = 1; ->y = 1 : number ->y : any ->1 : number - } -} - -var z0; ->z0 : any - -for (; false;) { ->false : boolean - - switch (1){ ->1 : number - - case 1: ->1 : number - - let z0; ->z0 : any - - () => z0; ->() => z0 : () => any ->z0 : any - - break; - } -} - -var z; ->z : any - -for (; false;) { ->false : boolean - - switch (1){ ->1 : number - - case 1: ->1 : number - - let z; ->z : any - - z = 1; ->z = 1 : number ->z : any ->1 : number - - break; - } -} diff --git a/tests/baselines/reference/nestedBlockScopedBindings5.errors.txt b/tests/baselines/reference/nestedBlockScopedBindings5.errors.txt new file mode 100644 index 00000000000..a40f6a29aea --- /dev/null +++ b/tests/baselines/reference/nestedBlockScopedBindings5.errors.txt @@ -0,0 +1,92 @@ +tests/cases/compiler/nestedBlockScopedBindings5.ts(37,9): error TS7027: Unreachable code detected. +tests/cases/compiler/nestedBlockScopedBindings5.ts(54,9): error TS7027: Unreachable code detected. +tests/cases/compiler/nestedBlockScopedBindings5.ts(71,9): error TS7027: Unreachable code detected. + + +==== tests/cases/compiler/nestedBlockScopedBindings5.ts (3 errors) ==== + function a0() { + for (let x in []) { + x = x + 1; + } + for (let x;;) { + x = x + 2; + } + } + + function a1() { + for (let x in []) { + x = x + 1; + () => x; + } + for (let x;;) { + x = x + 2; + } + } + + function a2() { + for (let x in []) { + x = x + 1; + } + for (let x;;) { + x = x + 2; + () => x; + } + } + + + function a3() { + for (let x in []) { + x = x + 1; + () => x; + } + for (let x;false;) { + x = x + 2; + ~ +!!! error TS7027: Unreachable code detected. + () => x; + } + switch (1) { + case 1: + let x; + () => x; + break; + } + + } + + function a4() { + for (let x in []) { + x = x + 1; + } + for (let x;false;) { + x = x + 2; + ~ +!!! error TS7027: Unreachable code detected. + } + switch (1) { + case 1: + let x; + () => x; + break; + } + + } + + function a5() { + let y; + for (let x in []) { + x = x + 1; + } + for (let x;false;) { + x = x + 2; + ~ +!!! error TS7027: Unreachable code detected. + () => x; + } + switch (1) { + case 1: + let x; + break; + } + + } \ No newline at end of file diff --git a/tests/baselines/reference/nestedBlockScopedBindings5.symbols b/tests/baselines/reference/nestedBlockScopedBindings5.symbols deleted file mode 100644 index 202a1d2e83f..00000000000 --- a/tests/baselines/reference/nestedBlockScopedBindings5.symbols +++ /dev/null @@ -1,163 +0,0 @@ -=== tests/cases/compiler/nestedBlockScopedBindings5.ts === -function a0() { ->a0 : Symbol(a0, Decl(nestedBlockScopedBindings5.ts, 0, 0)) - - for (let x in []) { ->x : Symbol(x, Decl(nestedBlockScopedBindings5.ts, 1, 12)) - - x = x + 1; ->x : Symbol(x, Decl(nestedBlockScopedBindings5.ts, 1, 12)) ->x : Symbol(x, Decl(nestedBlockScopedBindings5.ts, 1, 12)) - } - for (let x;;) { ->x : Symbol(x, Decl(nestedBlockScopedBindings5.ts, 4, 12)) - - x = x + 2; ->x : Symbol(x, Decl(nestedBlockScopedBindings5.ts, 4, 12)) ->x : Symbol(x, Decl(nestedBlockScopedBindings5.ts, 4, 12)) - } -} - -function a1() { ->a1 : Symbol(a1, Decl(nestedBlockScopedBindings5.ts, 7, 1)) - - for (let x in []) { ->x : Symbol(x, Decl(nestedBlockScopedBindings5.ts, 10, 12)) - - x = x + 1; ->x : Symbol(x, Decl(nestedBlockScopedBindings5.ts, 10, 12)) ->x : Symbol(x, Decl(nestedBlockScopedBindings5.ts, 10, 12)) - - () => x; ->x : Symbol(x, Decl(nestedBlockScopedBindings5.ts, 10, 12)) - } - for (let x;;) { ->x : Symbol(x, Decl(nestedBlockScopedBindings5.ts, 14, 12)) - - x = x + 2; ->x : Symbol(x, Decl(nestedBlockScopedBindings5.ts, 14, 12)) ->x : Symbol(x, Decl(nestedBlockScopedBindings5.ts, 14, 12)) - } -} - -function a2() { ->a2 : Symbol(a2, Decl(nestedBlockScopedBindings5.ts, 17, 1)) - - for (let x in []) { ->x : Symbol(x, Decl(nestedBlockScopedBindings5.ts, 20, 12)) - - x = x + 1; ->x : Symbol(x, Decl(nestedBlockScopedBindings5.ts, 20, 12)) ->x : Symbol(x, Decl(nestedBlockScopedBindings5.ts, 20, 12)) - } - for (let x;;) { ->x : Symbol(x, Decl(nestedBlockScopedBindings5.ts, 23, 12)) - - x = x + 2; ->x : Symbol(x, Decl(nestedBlockScopedBindings5.ts, 23, 12)) ->x : Symbol(x, Decl(nestedBlockScopedBindings5.ts, 23, 12)) - - () => x; ->x : Symbol(x, Decl(nestedBlockScopedBindings5.ts, 23, 12)) - } -} - - -function a3() { ->a3 : Symbol(a3, Decl(nestedBlockScopedBindings5.ts, 27, 1)) - - for (let x in []) { ->x : Symbol(x, Decl(nestedBlockScopedBindings5.ts, 31, 12)) - - x = x + 1; ->x : Symbol(x, Decl(nestedBlockScopedBindings5.ts, 31, 12)) ->x : Symbol(x, Decl(nestedBlockScopedBindings5.ts, 31, 12)) - - () => x; ->x : Symbol(x, Decl(nestedBlockScopedBindings5.ts, 31, 12)) - } - for (let x;false;) { ->x : Symbol(x, Decl(nestedBlockScopedBindings5.ts, 35, 12)) - - x = x + 2; ->x : Symbol(x, Decl(nestedBlockScopedBindings5.ts, 35, 12)) ->x : Symbol(x, Decl(nestedBlockScopedBindings5.ts, 35, 12)) - - () => x; ->x : Symbol(x, Decl(nestedBlockScopedBindings5.ts, 35, 12)) - } - switch (1) { - case 1: - let x; ->x : Symbol(x, Decl(nestedBlockScopedBindings5.ts, 41, 15)) - - () => x; ->x : Symbol(x, Decl(nestedBlockScopedBindings5.ts, 41, 15)) - - break; - } - -} - -function a4() { ->a4 : Symbol(a4, Decl(nestedBlockScopedBindings5.ts, 46, 1)) - - for (let x in []) { ->x : Symbol(x, Decl(nestedBlockScopedBindings5.ts, 49, 12)) - - x = x + 1; ->x : Symbol(x, Decl(nestedBlockScopedBindings5.ts, 49, 12)) ->x : Symbol(x, Decl(nestedBlockScopedBindings5.ts, 49, 12)) - } - for (let x;false;) { ->x : Symbol(x, Decl(nestedBlockScopedBindings5.ts, 52, 12)) - - x = x + 2; ->x : Symbol(x, Decl(nestedBlockScopedBindings5.ts, 52, 12)) ->x : Symbol(x, Decl(nestedBlockScopedBindings5.ts, 52, 12)) - } - switch (1) { - case 1: - let x; ->x : Symbol(x, Decl(nestedBlockScopedBindings5.ts, 57, 15)) - - () => x; ->x : Symbol(x, Decl(nestedBlockScopedBindings5.ts, 57, 15)) - - break; - } - -} - -function a5() { ->a5 : Symbol(a5, Decl(nestedBlockScopedBindings5.ts, 62, 1)) - - let y; ->y : Symbol(y, Decl(nestedBlockScopedBindings5.ts, 65, 7)) - - for (let x in []) { ->x : Symbol(x, Decl(nestedBlockScopedBindings5.ts, 66, 12)) - - x = x + 1; ->x : Symbol(x, Decl(nestedBlockScopedBindings5.ts, 66, 12)) ->x : Symbol(x, Decl(nestedBlockScopedBindings5.ts, 66, 12)) - } - for (let x;false;) { ->x : Symbol(x, Decl(nestedBlockScopedBindings5.ts, 69, 12)) - - x = x + 2; ->x : Symbol(x, Decl(nestedBlockScopedBindings5.ts, 69, 12)) ->x : Symbol(x, Decl(nestedBlockScopedBindings5.ts, 69, 12)) - - () => x; ->x : Symbol(x, Decl(nestedBlockScopedBindings5.ts, 69, 12)) - } - switch (1) { - case 1: - let x; ->x : Symbol(x, Decl(nestedBlockScopedBindings5.ts, 75, 15)) - - break; - } - -} diff --git a/tests/baselines/reference/nestedBlockScopedBindings5.types b/tests/baselines/reference/nestedBlockScopedBindings5.types deleted file mode 100644 index 10ea0e5f902..00000000000 --- a/tests/baselines/reference/nestedBlockScopedBindings5.types +++ /dev/null @@ -1,227 +0,0 @@ -=== tests/cases/compiler/nestedBlockScopedBindings5.ts === -function a0() { ->a0 : () => void - - for (let x in []) { ->x : string ->[] : undefined[] - - x = x + 1; ->x = x + 1 : string ->x : string ->x + 1 : string ->x : string ->1 : number - } - for (let x;;) { ->x : any - - x = x + 2; ->x = x + 2 : any ->x : any ->x + 2 : any ->x : any ->2 : number - } -} - -function a1() { ->a1 : () => void - - for (let x in []) { ->x : string ->[] : undefined[] - - x = x + 1; ->x = x + 1 : string ->x : string ->x + 1 : string ->x : string ->1 : number - - () => x; ->() => x : () => string ->x : string - } - for (let x;;) { ->x : any - - x = x + 2; ->x = x + 2 : any ->x : any ->x + 2 : any ->x : any ->2 : number - } -} - -function a2() { ->a2 : () => void - - for (let x in []) { ->x : string ->[] : undefined[] - - x = x + 1; ->x = x + 1 : string ->x : string ->x + 1 : string ->x : string ->1 : number - } - for (let x;;) { ->x : any - - x = x + 2; ->x = x + 2 : any ->x : any ->x + 2 : any ->x : any ->2 : number - - () => x; ->() => x : () => any ->x : any - } -} - - -function a3() { ->a3 : () => void - - for (let x in []) { ->x : string ->[] : undefined[] - - x = x + 1; ->x = x + 1 : string ->x : string ->x + 1 : string ->x : string ->1 : number - - () => x; ->() => x : () => string ->x : string - } - for (let x;false;) { ->x : any ->false : boolean - - x = x + 2; ->x = x + 2 : any ->x : any ->x + 2 : any ->x : any ->2 : number - - () => x; ->() => x : () => any ->x : any - } - switch (1) { ->1 : number - - case 1: ->1 : number - - let x; ->x : any - - () => x; ->() => x : () => any ->x : any - - break; - } - -} - -function a4() { ->a4 : () => void - - for (let x in []) { ->x : string ->[] : undefined[] - - x = x + 1; ->x = x + 1 : string ->x : string ->x + 1 : string ->x : string ->1 : number - } - for (let x;false;) { ->x : any ->false : boolean - - x = x + 2; ->x = x + 2 : any ->x : any ->x + 2 : any ->x : any ->2 : number - } - switch (1) { ->1 : number - - case 1: ->1 : number - - let x; ->x : any - - () => x; ->() => x : () => any ->x : any - - break; - } - -} - -function a5() { ->a5 : () => void - - let y; ->y : any - - for (let x in []) { ->x : string ->[] : undefined[] - - x = x + 1; ->x = x + 1 : string ->x : string ->x + 1 : string ->x : string ->1 : number - } - for (let x;false;) { ->x : any ->false : boolean - - x = x + 2; ->x = x + 2 : any ->x : any ->x + 2 : any ->x : any ->2 : number - - () => x; ->() => x : () => any ->x : any - } - switch (1) { ->1 : number - - case 1: ->1 : number - - let x; ->x : any - - break; - } - -} diff --git a/tests/baselines/reference/nestedBlockScopedBindings7.errors.txt b/tests/baselines/reference/nestedBlockScopedBindings7.errors.txt new file mode 100644 index 00000000000..274ef8bf6c3 --- /dev/null +++ b/tests/baselines/reference/nestedBlockScopedBindings7.errors.txt @@ -0,0 +1,16 @@ +tests/cases/compiler/nestedBlockScopedBindings7.ts(2,5): error TS7027: Unreachable code detected. +tests/cases/compiler/nestedBlockScopedBindings7.ts(6,5): error TS7027: Unreachable code detected. + + +==== tests/cases/compiler/nestedBlockScopedBindings7.ts (2 errors) ==== + for (let x; false;) { + () => x; + ~ +!!! error TS7027: Unreachable code detected. + } + + for (let y; false;) { + y = 1; + ~ +!!! error TS7027: Unreachable code detected. + } \ No newline at end of file diff --git a/tests/baselines/reference/nestedBlockScopedBindings7.symbols b/tests/baselines/reference/nestedBlockScopedBindings7.symbols deleted file mode 100644 index 2d65af06a96..00000000000 --- a/tests/baselines/reference/nestedBlockScopedBindings7.symbols +++ /dev/null @@ -1,14 +0,0 @@ -=== tests/cases/compiler/nestedBlockScopedBindings7.ts === -for (let x; false;) { ->x : Symbol(x, Decl(nestedBlockScopedBindings7.ts, 0, 8)) - - () => x; ->x : Symbol(x, Decl(nestedBlockScopedBindings7.ts, 0, 8)) -} - -for (let y; false;) { ->y : Symbol(y, Decl(nestedBlockScopedBindings7.ts, 4, 8)) - - y = 1; ->y : Symbol(y, Decl(nestedBlockScopedBindings7.ts, 4, 8)) -} diff --git a/tests/baselines/reference/nestedBlockScopedBindings7.types b/tests/baselines/reference/nestedBlockScopedBindings7.types deleted file mode 100644 index 2fdb2d90e76..00000000000 --- a/tests/baselines/reference/nestedBlockScopedBindings7.types +++ /dev/null @@ -1,19 +0,0 @@ -=== tests/cases/compiler/nestedBlockScopedBindings7.ts === -for (let x; false;) { ->x : any ->false : boolean - - () => x; ->() => x : () => any ->x : any -} - -for (let y; false;) { ->y : any ->false : boolean - - y = 1; ->y = 1 : number ->y : any ->1 : number -} diff --git a/tests/baselines/reference/nestedBlockScopedBindings8.errors.txt b/tests/baselines/reference/nestedBlockScopedBindings8.errors.txt new file mode 100644 index 00000000000..73f580ae3cb --- /dev/null +++ b/tests/baselines/reference/nestedBlockScopedBindings8.errors.txt @@ -0,0 +1,18 @@ +tests/cases/compiler/nestedBlockScopedBindings8.ts(3,5): error TS7027: Unreachable code detected. +tests/cases/compiler/nestedBlockScopedBindings8.ts(8,5): error TS7027: Unreachable code detected. + + +==== tests/cases/compiler/nestedBlockScopedBindings8.ts (2 errors) ==== + var x; + for (let x; false; ) { + () => x; + ~ +!!! error TS7027: Unreachable code detected. + } + + var y; + for (let y; false; ) { + y = 1; + ~ +!!! error TS7027: Unreachable code detected. + } \ No newline at end of file diff --git a/tests/baselines/reference/nestedBlockScopedBindings8.symbols b/tests/baselines/reference/nestedBlockScopedBindings8.symbols deleted file mode 100644 index a61df0502ec..00000000000 --- a/tests/baselines/reference/nestedBlockScopedBindings8.symbols +++ /dev/null @@ -1,20 +0,0 @@ -=== tests/cases/compiler/nestedBlockScopedBindings8.ts === -var x; ->x : Symbol(x, Decl(nestedBlockScopedBindings8.ts, 0, 3)) - -for (let x; false; ) { ->x : Symbol(x, Decl(nestedBlockScopedBindings8.ts, 1, 8)) - - () => x; ->x : Symbol(x, Decl(nestedBlockScopedBindings8.ts, 1, 8)) -} - -var y; ->y : Symbol(y, Decl(nestedBlockScopedBindings8.ts, 5, 3)) - -for (let y; false; ) { ->y : Symbol(y, Decl(nestedBlockScopedBindings8.ts, 6, 8)) - - y = 1; ->y : Symbol(y, Decl(nestedBlockScopedBindings8.ts, 6, 8)) -} diff --git a/tests/baselines/reference/nestedBlockScopedBindings8.types b/tests/baselines/reference/nestedBlockScopedBindings8.types deleted file mode 100644 index 9e4b98ffbf2..00000000000 --- a/tests/baselines/reference/nestedBlockScopedBindings8.types +++ /dev/null @@ -1,25 +0,0 @@ -=== tests/cases/compiler/nestedBlockScopedBindings8.ts === -var x; ->x : any - -for (let x; false; ) { ->x : any ->false : boolean - - () => x; ->() => x : () => any ->x : any -} - -var y; ->y : any - -for (let y; false; ) { ->y : any ->false : boolean - - y = 1; ->y = 1 : number ->y : any ->1 : number -} diff --git a/tests/baselines/reference/nestedGenerics.symbols b/tests/baselines/reference/nestedGenerics.symbols index 24b3e1eb89d..87ba74a503a 100644 --- a/tests/baselines/reference/nestedGenerics.symbols +++ b/tests/baselines/reference/nestedGenerics.symbols @@ -4,7 +4,7 @@ interface Foo { >T : Symbol(T, Decl(nestedGenerics.ts, 0, 14)) t: T; ->t : Symbol(t, Decl(nestedGenerics.ts, 0, 18)) +>t : Symbol(Foo.t, Decl(nestedGenerics.ts, 0, 18)) >T : Symbol(T, Decl(nestedGenerics.ts, 0, 14)) } diff --git a/tests/baselines/reference/nestedInfinitelyExpandedRecursiveTypes.symbols b/tests/baselines/reference/nestedInfinitelyExpandedRecursiveTypes.symbols index 28206f8dec2..d9fec01208e 100644 --- a/tests/baselines/reference/nestedInfinitelyExpandedRecursiveTypes.symbols +++ b/tests/baselines/reference/nestedInfinitelyExpandedRecursiveTypes.symbols @@ -4,7 +4,7 @@ interface F { >T : Symbol(T, Decl(nestedInfinitelyExpandedRecursiveTypes.ts, 0, 12)) t: G T>>; ->t : Symbol(t, Decl(nestedInfinitelyExpandedRecursiveTypes.ts, 0, 16)) +>t : Symbol(F.t, Decl(nestedInfinitelyExpandedRecursiveTypes.ts, 0, 16)) >G : Symbol(G, Decl(nestedInfinitelyExpandedRecursiveTypes.ts, 2, 1)) >F : Symbol(F, Decl(nestedInfinitelyExpandedRecursiveTypes.ts, 0, 0)) >T : Symbol(T, Decl(nestedInfinitelyExpandedRecursiveTypes.ts, 0, 12)) @@ -14,7 +14,7 @@ interface G { >U : Symbol(U, Decl(nestedInfinitelyExpandedRecursiveTypes.ts, 3, 12)) t: G U>>; ->t : Symbol(t, Decl(nestedInfinitelyExpandedRecursiveTypes.ts, 3, 16)) +>t : Symbol(G.t, Decl(nestedInfinitelyExpandedRecursiveTypes.ts, 3, 16)) >G : Symbol(G, Decl(nestedInfinitelyExpandedRecursiveTypes.ts, 2, 1)) >G : Symbol(G, Decl(nestedInfinitelyExpandedRecursiveTypes.ts, 2, 1)) >U : Symbol(U, Decl(nestedInfinitelyExpandedRecursiveTypes.ts, 3, 12)) diff --git a/tests/baselines/reference/nestedModules.symbols b/tests/baselines/reference/nestedModules.symbols index 7ff4efd30f6..642d181f2c5 100644 --- a/tests/baselines/reference/nestedModules.symbols +++ b/tests/baselines/reference/nestedModules.symbols @@ -8,10 +8,10 @@ module A.B.C { >Point : Symbol(Point, Decl(nestedModules.ts, 0, 14)) x: number; ->x : Symbol(x, Decl(nestedModules.ts, 1, 28)) +>x : Symbol(Point.x, Decl(nestedModules.ts, 1, 28)) y: number; ->y : Symbol(y, Decl(nestedModules.ts, 2, 18)) +>y : Symbol(Point.y, Decl(nestedModules.ts, 2, 18)) } } @@ -38,8 +38,8 @@ module M2.X { >Point : Symbol(Point, Decl(nestedModules.ts, 13, 13), Decl(nestedModules.ts, 21, 18)) x: number; y: number; ->x : Symbol(x, Decl(nestedModules.ts, 14, 28)) ->y : Symbol(y, Decl(nestedModules.ts, 15, 18)) +>x : Symbol(Point.x, Decl(nestedModules.ts, 14, 28)) +>y : Symbol(Point.y, Decl(nestedModules.ts, 15, 18)) } } diff --git a/tests/baselines/reference/nestedSelf.symbols b/tests/baselines/reference/nestedSelf.symbols index a14a9b9d374..50bdd9981e2 100644 --- a/tests/baselines/reference/nestedSelf.symbols +++ b/tests/baselines/reference/nestedSelf.symbols @@ -6,16 +6,16 @@ module M { >C : Symbol(C, Decl(nestedSelf.ts, 0, 10)) public n = 42; ->n : Symbol(n, Decl(nestedSelf.ts, 1, 17)) +>n : Symbol(C.n, Decl(nestedSelf.ts, 1, 17)) public foo() { [1,2,3].map((x) => { return this.n * x; })} ->foo : Symbol(foo, Decl(nestedSelf.ts, 2, 17)) +>foo : Symbol(C.foo, Decl(nestedSelf.ts, 2, 17)) >[1,2,3].map : Symbol(Array.map, Decl(lib.d.ts, --, --)) >map : Symbol(Array.map, Decl(lib.d.ts, --, --)) >x : Symbol(x, Decl(nestedSelf.ts, 3, 31)) ->this.n : Symbol(n, Decl(nestedSelf.ts, 1, 17)) +>this.n : Symbol(C.n, Decl(nestedSelf.ts, 1, 17)) >this : Symbol(C, Decl(nestedSelf.ts, 0, 10)) ->n : Symbol(n, Decl(nestedSelf.ts, 1, 17)) +>n : Symbol(C.n, Decl(nestedSelf.ts, 1, 17)) >x : Symbol(x, Decl(nestedSelf.ts, 3, 31)) } } diff --git a/tests/baselines/reference/newArrays.symbols b/tests/baselines/reference/newArrays.symbols index 663b6380bc7..4a312365b3f 100644 --- a/tests/baselines/reference/newArrays.symbols +++ b/tests/baselines/reference/newArrays.symbols @@ -9,30 +9,30 @@ module M { >Gar : Symbol(Gar, Decl(newArrays.ts, 1, 13)) public fa: Foo[]; ->fa : Symbol(fa, Decl(newArrays.ts, 2, 12)) +>fa : Symbol(Gar.fa, Decl(newArrays.ts, 2, 12)) >Foo : Symbol(Foo, Decl(newArrays.ts, 0, 10)) public x = 10; ->x : Symbol(x, Decl(newArrays.ts, 3, 19)) +>x : Symbol(Gar.x, Decl(newArrays.ts, 3, 19)) public y = 10; ->y : Symbol(y, Decl(newArrays.ts, 4, 16)) +>y : Symbol(Gar.y, Decl(newArrays.ts, 4, 16)) public m () { ->m : Symbol(m, Decl(newArrays.ts, 5, 16)) +>m : Symbol(Gar.m, Decl(newArrays.ts, 5, 16)) this.fa = new Array(this.x * this.y); ->this.fa : Symbol(fa, Decl(newArrays.ts, 2, 12)) +>this.fa : Symbol(Gar.fa, Decl(newArrays.ts, 2, 12)) >this : Symbol(Gar, Decl(newArrays.ts, 1, 13)) ->fa : Symbol(fa, Decl(newArrays.ts, 2, 12)) +>fa : Symbol(Gar.fa, Decl(newArrays.ts, 2, 12)) >Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >Foo : Symbol(Foo, Decl(newArrays.ts, 0, 10)) ->this.x : Symbol(x, Decl(newArrays.ts, 3, 19)) +>this.x : Symbol(Gar.x, Decl(newArrays.ts, 3, 19)) >this : Symbol(Gar, Decl(newArrays.ts, 1, 13)) ->x : Symbol(x, Decl(newArrays.ts, 3, 19)) ->this.y : Symbol(y, Decl(newArrays.ts, 4, 16)) +>x : Symbol(Gar.x, Decl(newArrays.ts, 3, 19)) +>this.y : Symbol(Gar.y, Decl(newArrays.ts, 4, 16)) >this : Symbol(Gar, Decl(newArrays.ts, 1, 13)) ->y : Symbol(y, Decl(newArrays.ts, 4, 16)) +>y : Symbol(Gar.y, Decl(newArrays.ts, 4, 16)) } } } diff --git a/tests/baselines/reference/newNamesInGlobalAugmentations1.js b/tests/baselines/reference/newNamesInGlobalAugmentations1.js new file mode 100644 index 00000000000..0400f4c3751 --- /dev/null +++ b/tests/baselines/reference/newNamesInGlobalAugmentations1.js @@ -0,0 +1,28 @@ +//// [tests/cases/compiler/newNamesInGlobalAugmentations1.ts] //// + +//// [f1.d.ts] + +export {}; + +declare module M.M1 { + export let x: number; +} +declare global { + interface SymbolConstructor { + observable: symbol; + } + class Cls {x} + let [a, b]: number[]; + export import X = M.M1.x; +} + +//// [main.ts] + +Symbol.observable; +new Cls().x +let c = a + b + X; + +//// [main.js] +Symbol.observable; +new Cls().x; +let c = a + b + X; diff --git a/tests/baselines/reference/newNamesInGlobalAugmentations1.symbols b/tests/baselines/reference/newNamesInGlobalAugmentations1.symbols new file mode 100644 index 00000000000..6215132dd00 --- /dev/null +++ b/tests/baselines/reference/newNamesInGlobalAugmentations1.symbols @@ -0,0 +1,53 @@ +=== tests/cases/compiler/f1.d.ts === + +export {}; + +declare module M.M1 { +>M : Symbol(M, Decl(f1.d.ts, 1, 10)) +>M1 : Symbol(M1, Decl(f1.d.ts, 3, 17)) + + export let x: number; +>x : Symbol(x, Decl(f1.d.ts, 4, 14)) +} +declare global { +>global : Symbol(, Decl(f1.d.ts, 5, 1)) + + interface SymbolConstructor { +>SymbolConstructor : Symbol(SymbolConstructor, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(f1.d.ts, 6, 16)) + + observable: symbol; +>observable : Symbol(SymbolConstructor.observable, Decl(f1.d.ts, 7, 33)) + } + class Cls {x} +>Cls : Symbol(Cls, Decl(f1.d.ts, 9, 5)) +>x : Symbol(Cls.x, Decl(f1.d.ts, 10, 15)) + + let [a, b]: number[]; +>a : Symbol(a, Decl(f1.d.ts, 11, 9)) +>b : Symbol(b, Decl(f1.d.ts, 11, 11)) + + export import X = M.M1.x; +>X : Symbol(X, Decl(f1.d.ts, 11, 25)) +>M : Symbol(M, Decl(f1.d.ts, 1, 10)) +>M1 : Symbol(M.M1, Decl(f1.d.ts, 3, 17)) +>x : Symbol(X, Decl(f1.d.ts, 4, 14)) +} + +=== tests/cases/compiler/main.ts === + +Symbol.observable; +>Symbol.observable : Symbol(SymbolConstructor.observable, Decl(f1.d.ts, 7, 33)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>observable : Symbol(SymbolConstructor.observable, Decl(f1.d.ts, 7, 33)) + +new Cls().x +>new Cls().x : Symbol(Cls.x, Decl(f1.d.ts, 10, 15)) +>Cls : Symbol(Cls, Decl(f1.d.ts, 9, 5)) +>x : Symbol(Cls.x, Decl(f1.d.ts, 10, 15)) + +let c = a + b + X; +>c : Symbol(c, Decl(main.ts, 3, 3)) +>a : Symbol(a, Decl(f1.d.ts, 11, 9)) +>b : Symbol(b, Decl(f1.d.ts, 11, 11)) +>X : Symbol(X, Decl(f1.d.ts, 11, 25)) + diff --git a/tests/baselines/reference/newNamesInGlobalAugmentations1.types b/tests/baselines/reference/newNamesInGlobalAugmentations1.types new file mode 100644 index 00000000000..a9b879fb4c5 --- /dev/null +++ b/tests/baselines/reference/newNamesInGlobalAugmentations1.types @@ -0,0 +1,56 @@ +=== tests/cases/compiler/f1.d.ts === + +export {}; + +declare module M.M1 { +>M : typeof M +>M1 : typeof M1 + + export let x: number; +>x : number +} +declare global { +>global : any + + interface SymbolConstructor { +>SymbolConstructor : SymbolConstructor + + observable: symbol; +>observable : symbol + } + class Cls {x} +>Cls : Cls +>x : any + + let [a, b]: number[]; +>a : number +>b : number + + export import X = M.M1.x; +>X : number +>M : typeof M +>M1 : typeof M.M1 +>x : number +} + +=== tests/cases/compiler/main.ts === + +Symbol.observable; +>Symbol.observable : symbol +>Symbol : SymbolConstructor +>observable : symbol + +new Cls().x +>new Cls().x : any +>new Cls() : Cls +>Cls : typeof Cls +>x : any + +let c = a + b + X; +>c : number +>a + b + X : number +>a + b : number +>a : number +>b : number +>X : number + diff --git a/tests/baselines/reference/newWithSpreadES5.symbols b/tests/baselines/reference/newWithSpreadES5.symbols index 021674ef337..7db4e6f1063 100644 --- a/tests/baselines/reference/newWithSpreadES5.symbols +++ b/tests/baselines/reference/newWithSpreadES5.symbols @@ -15,7 +15,7 @@ interface A { >A : Symbol(A, Decl(newWithSpreadES5.ts, 4, 30)) f: { ->f : Symbol(f, Decl(newWithSpreadES5.ts, 6, 13)) +>f : Symbol(A.f, Decl(newWithSpreadES5.ts, 6, 13)) new (x: number, y: number, ...z: string[]); >x : Symbol(x, Decl(newWithSpreadES5.ts, 8, 13)) @@ -202,61 +202,61 @@ new B(1, 2, ...a, "string"); // Property access expression new c["a-b"](1, 2, "string"); >c : Symbol(c, Decl(newWithSpreadES5.ts, 26, 3)) ->"a-b" : Symbol(C."a-b", Decl(newWithSpreadES5.ts, 16, 13)) +>"a-b" : Symbol(C["a-b"], Decl(newWithSpreadES5.ts, 16, 13)) new c["a-b"](1, 2, ...a); >c : Symbol(c, Decl(newWithSpreadES5.ts, 26, 3)) ->"a-b" : Symbol(C."a-b", Decl(newWithSpreadES5.ts, 16, 13)) +>"a-b" : Symbol(C["a-b"], Decl(newWithSpreadES5.ts, 16, 13)) >a : Symbol(a, Decl(newWithSpreadES5.ts, 24, 3)) new c["a-b"](1, 2, ...a, "string"); >c : Symbol(c, Decl(newWithSpreadES5.ts, 26, 3)) ->"a-b" : Symbol(C."a-b", Decl(newWithSpreadES5.ts, 16, 13)) +>"a-b" : Symbol(C["a-b"], Decl(newWithSpreadES5.ts, 16, 13)) >a : Symbol(a, Decl(newWithSpreadES5.ts, 24, 3)) // Parenthesised expression new (c["a-b"])(1, 2, "string"); >c : Symbol(c, Decl(newWithSpreadES5.ts, 26, 3)) ->"a-b" : Symbol(C."a-b", Decl(newWithSpreadES5.ts, 16, 13)) +>"a-b" : Symbol(C["a-b"], Decl(newWithSpreadES5.ts, 16, 13)) new (c["a-b"])(1, 2, ...a); >c : Symbol(c, Decl(newWithSpreadES5.ts, 26, 3)) ->"a-b" : Symbol(C."a-b", Decl(newWithSpreadES5.ts, 16, 13)) +>"a-b" : Symbol(C["a-b"], Decl(newWithSpreadES5.ts, 16, 13)) >a : Symbol(a, Decl(newWithSpreadES5.ts, 24, 3)) new (c["a-b"])(1, 2, ...a, "string"); >c : Symbol(c, Decl(newWithSpreadES5.ts, 26, 3)) ->"a-b" : Symbol(C."a-b", Decl(newWithSpreadES5.ts, 16, 13)) +>"a-b" : Symbol(C["a-b"], Decl(newWithSpreadES5.ts, 16, 13)) >a : Symbol(a, Decl(newWithSpreadES5.ts, 24, 3)) // Element access expression new g[1]["a-b"](1, 2, "string"); >g : Symbol(g, Decl(newWithSpreadES5.ts, 29, 3)) ->"a-b" : Symbol(C."a-b", Decl(newWithSpreadES5.ts, 16, 13)) +>"a-b" : Symbol(C["a-b"], Decl(newWithSpreadES5.ts, 16, 13)) new g[1]["a-b"](1, 2, ...a); >g : Symbol(g, Decl(newWithSpreadES5.ts, 29, 3)) ->"a-b" : Symbol(C."a-b", Decl(newWithSpreadES5.ts, 16, 13)) +>"a-b" : Symbol(C["a-b"], Decl(newWithSpreadES5.ts, 16, 13)) >a : Symbol(a, Decl(newWithSpreadES5.ts, 24, 3)) new g[1]["a-b"](1, 2, ...a, "string"); >g : Symbol(g, Decl(newWithSpreadES5.ts, 29, 3)) ->"a-b" : Symbol(C."a-b", Decl(newWithSpreadES5.ts, 16, 13)) +>"a-b" : Symbol(C["a-b"], Decl(newWithSpreadES5.ts, 16, 13)) >a : Symbol(a, Decl(newWithSpreadES5.ts, 24, 3)) // Element access expression with a punctuated key new h["a-b"]["a-b"](1, 2, "string"); >h : Symbol(h, Decl(newWithSpreadES5.ts, 30, 3)) ->"a-b" : Symbol(C."a-b", Decl(newWithSpreadES5.ts, 16, 13)) +>"a-b" : Symbol(C["a-b"], Decl(newWithSpreadES5.ts, 16, 13)) new h["a-b"]["a-b"](1, 2, ...a); >h : Symbol(h, Decl(newWithSpreadES5.ts, 30, 3)) ->"a-b" : Symbol(C."a-b", Decl(newWithSpreadES5.ts, 16, 13)) +>"a-b" : Symbol(C["a-b"], Decl(newWithSpreadES5.ts, 16, 13)) >a : Symbol(a, Decl(newWithSpreadES5.ts, 24, 3)) new h["a-b"]["a-b"](1, 2, ...a, "string"); >h : Symbol(h, Decl(newWithSpreadES5.ts, 30, 3)) ->"a-b" : Symbol(C."a-b", Decl(newWithSpreadES5.ts, 16, 13)) +>"a-b" : Symbol(C["a-b"], Decl(newWithSpreadES5.ts, 16, 13)) >a : Symbol(a, Decl(newWithSpreadES5.ts, 24, 3)) // Element access expression with a number diff --git a/tests/baselines/reference/newWithSpreadES6.symbols b/tests/baselines/reference/newWithSpreadES6.symbols index 51a34ad73ef..946aeeb5c1a 100644 --- a/tests/baselines/reference/newWithSpreadES6.symbols +++ b/tests/baselines/reference/newWithSpreadES6.symbols @@ -16,7 +16,7 @@ interface A { >A : Symbol(A, Decl(newWithSpreadES6.ts, 5, 1)) f: { ->f : Symbol(f, Decl(newWithSpreadES6.ts, 7, 13)) +>f : Symbol(A.f, Decl(newWithSpreadES6.ts, 7, 13)) new (x: number, y: number, ...z: string[]); >x : Symbol(x, Decl(newWithSpreadES6.ts, 9, 13)) @@ -203,61 +203,61 @@ new B(1, 2, ...a, "string"); // Property access expression new c["a-b"](1, 2, "string"); >c : Symbol(c, Decl(newWithSpreadES6.ts, 27, 3)) ->"a-b" : Symbol(C."a-b", Decl(newWithSpreadES6.ts, 17, 13)) +>"a-b" : Symbol(C["a-b"], Decl(newWithSpreadES6.ts, 17, 13)) new c["a-b"](1, 2, ...a); >c : Symbol(c, Decl(newWithSpreadES6.ts, 27, 3)) ->"a-b" : Symbol(C."a-b", Decl(newWithSpreadES6.ts, 17, 13)) +>"a-b" : Symbol(C["a-b"], Decl(newWithSpreadES6.ts, 17, 13)) >a : Symbol(a, Decl(newWithSpreadES6.ts, 25, 3)) new c["a-b"](1, 2, ...a, "string"); >c : Symbol(c, Decl(newWithSpreadES6.ts, 27, 3)) ->"a-b" : Symbol(C."a-b", Decl(newWithSpreadES6.ts, 17, 13)) +>"a-b" : Symbol(C["a-b"], Decl(newWithSpreadES6.ts, 17, 13)) >a : Symbol(a, Decl(newWithSpreadES6.ts, 25, 3)) // Parenthesised expression new (c["a-b"])(1, 2, "string"); >c : Symbol(c, Decl(newWithSpreadES6.ts, 27, 3)) ->"a-b" : Symbol(C."a-b", Decl(newWithSpreadES6.ts, 17, 13)) +>"a-b" : Symbol(C["a-b"], Decl(newWithSpreadES6.ts, 17, 13)) new (c["a-b"])(1, 2, ...a); >c : Symbol(c, Decl(newWithSpreadES6.ts, 27, 3)) ->"a-b" : Symbol(C."a-b", Decl(newWithSpreadES6.ts, 17, 13)) +>"a-b" : Symbol(C["a-b"], Decl(newWithSpreadES6.ts, 17, 13)) >a : Symbol(a, Decl(newWithSpreadES6.ts, 25, 3)) new (c["a-b"])(1, 2, ...a, "string"); >c : Symbol(c, Decl(newWithSpreadES6.ts, 27, 3)) ->"a-b" : Symbol(C."a-b", Decl(newWithSpreadES6.ts, 17, 13)) +>"a-b" : Symbol(C["a-b"], Decl(newWithSpreadES6.ts, 17, 13)) >a : Symbol(a, Decl(newWithSpreadES6.ts, 25, 3)) // Element access expression new g[1]["a-b"](1, 2, "string"); >g : Symbol(g, Decl(newWithSpreadES6.ts, 30, 3)) ->"a-b" : Symbol(C."a-b", Decl(newWithSpreadES6.ts, 17, 13)) +>"a-b" : Symbol(C["a-b"], Decl(newWithSpreadES6.ts, 17, 13)) new g[1]["a-b"](1, 2, ...a); >g : Symbol(g, Decl(newWithSpreadES6.ts, 30, 3)) ->"a-b" : Symbol(C."a-b", Decl(newWithSpreadES6.ts, 17, 13)) +>"a-b" : Symbol(C["a-b"], Decl(newWithSpreadES6.ts, 17, 13)) >a : Symbol(a, Decl(newWithSpreadES6.ts, 25, 3)) new g[1]["a-b"](1, 2, ...a, "string"); >g : Symbol(g, Decl(newWithSpreadES6.ts, 30, 3)) ->"a-b" : Symbol(C."a-b", Decl(newWithSpreadES6.ts, 17, 13)) +>"a-b" : Symbol(C["a-b"], Decl(newWithSpreadES6.ts, 17, 13)) >a : Symbol(a, Decl(newWithSpreadES6.ts, 25, 3)) // Element access expression with a punctuated key new h["a-b"]["a-b"](1, 2, "string"); >h : Symbol(h, Decl(newWithSpreadES6.ts, 31, 3)) ->"a-b" : Symbol(C."a-b", Decl(newWithSpreadES6.ts, 17, 13)) +>"a-b" : Symbol(C["a-b"], Decl(newWithSpreadES6.ts, 17, 13)) new h["a-b"]["a-b"](1, 2, ...a); >h : Symbol(h, Decl(newWithSpreadES6.ts, 31, 3)) ->"a-b" : Symbol(C."a-b", Decl(newWithSpreadES6.ts, 17, 13)) +>"a-b" : Symbol(C["a-b"], Decl(newWithSpreadES6.ts, 17, 13)) >a : Symbol(a, Decl(newWithSpreadES6.ts, 25, 3)) new h["a-b"]["a-b"](1, 2, ...a, "string"); >h : Symbol(h, Decl(newWithSpreadES6.ts, 31, 3)) ->"a-b" : Symbol(C."a-b", Decl(newWithSpreadES6.ts, 17, 13)) +>"a-b" : Symbol(C["a-b"], Decl(newWithSpreadES6.ts, 17, 13)) >a : Symbol(a, Decl(newWithSpreadES6.ts, 25, 3)) // Element access expression with a number diff --git a/tests/baselines/reference/noCollisionThisExpressionAndLocalVarInMethod.symbols b/tests/baselines/reference/noCollisionThisExpressionAndLocalVarInMethod.symbols index 72e0d20a9b2..02b8d0d0985 100644 --- a/tests/baselines/reference/noCollisionThisExpressionAndLocalVarInMethod.symbols +++ b/tests/baselines/reference/noCollisionThisExpressionAndLocalVarInMethod.symbols @@ -6,7 +6,7 @@ class a { >a : Symbol(a, Decl(noCollisionThisExpressionAndLocalVarInMethod.ts, 0, 14)) method1() { ->method1 : Symbol(method1, Decl(noCollisionThisExpressionAndLocalVarInMethod.ts, 1, 9)) +>method1 : Symbol(a.method1, Decl(noCollisionThisExpressionAndLocalVarInMethod.ts, 1, 9)) return { doStuff: (callback) => () => { @@ -23,7 +23,7 @@ class a { } } method2() { ->method2 : Symbol(method2, Decl(noCollisionThisExpressionAndLocalVarInMethod.ts, 9, 5)) +>method2 : Symbol(a.method2, Decl(noCollisionThisExpressionAndLocalVarInMethod.ts, 9, 5)) var _this = 2; >_this : Symbol(_this, Decl(noCollisionThisExpressionAndLocalVarInMethod.ts, 11, 11)) diff --git a/tests/baselines/reference/noCollisionThisExpressionAndLocalVarInProperty.symbols b/tests/baselines/reference/noCollisionThisExpressionAndLocalVarInProperty.symbols index 0dc4cf1d84e..095a1e87b80 100644 --- a/tests/baselines/reference/noCollisionThisExpressionAndLocalVarInProperty.symbols +++ b/tests/baselines/reference/noCollisionThisExpressionAndLocalVarInProperty.symbols @@ -3,7 +3,7 @@ class class1 { >class1 : Symbol(class1, Decl(noCollisionThisExpressionAndLocalVarInProperty.ts, 0, 0)) public prop1 = { ->prop1 : Symbol(prop1, Decl(noCollisionThisExpressionAndLocalVarInProperty.ts, 0, 14)) +>prop1 : Symbol(class1.prop1, Decl(noCollisionThisExpressionAndLocalVarInProperty.ts, 0, 14)) doStuff: (callback) => () => { >doStuff : Symbol(doStuff, Decl(noCollisionThisExpressionAndLocalVarInProperty.ts, 1, 20)) @@ -27,7 +27,7 @@ class class2 { >_this : Symbol(_this, Decl(noCollisionThisExpressionAndLocalVarInProperty.ts, 11, 11)) } public prop1 = { ->prop1 : Symbol(prop1, Decl(noCollisionThisExpressionAndLocalVarInProperty.ts, 12, 5)) +>prop1 : Symbol(class2.prop1, Decl(noCollisionThisExpressionAndLocalVarInProperty.ts, 12, 5)) doStuff: (callback) => () => { >doStuff : Symbol(doStuff, Decl(noCollisionThisExpressionAndLocalVarInProperty.ts, 13, 20)) diff --git a/tests/baselines/reference/noImplicitAnyAndPrivateMembersWithoutTypeAnnotations.symbols b/tests/baselines/reference/noImplicitAnyAndPrivateMembersWithoutTypeAnnotations.symbols index 1673c50f69f..0cfd1cbff07 100644 --- a/tests/baselines/reference/noImplicitAnyAndPrivateMembersWithoutTypeAnnotations.symbols +++ b/tests/baselines/reference/noImplicitAnyAndPrivateMembersWithoutTypeAnnotations.symbols @@ -12,6 +12,6 @@ declare class Something >someStaticVar : Symbol(Something.someStaticVar, Decl(test.d.ts, 1, 1)) private someVar; ->someVar : Symbol(someVar, Decl(test.d.ts, 2, 33)) +>someVar : Symbol(Something.someVar, Decl(test.d.ts, 2, 33)) } diff --git a/tests/baselines/reference/noImplicitAnyDestructuringInPrivateMethod.js b/tests/baselines/reference/noImplicitAnyDestructuringInPrivateMethod.js new file mode 100644 index 00000000000..2d7d930703c --- /dev/null +++ b/tests/baselines/reference/noImplicitAnyDestructuringInPrivateMethod.js @@ -0,0 +1,34 @@ +//// [noImplicitAnyDestructuringInPrivateMethod.ts] +type Arg = { + a: number; +}; +export class Bar { + private bar({ a, }: Arg): number { + return a; + } +} +export declare class Bar2 { + private bar({ a, }); +} + +//// [noImplicitAnyDestructuringInPrivateMethod.js] +"use strict"; +var Bar = (function () { + function Bar() { + } + Bar.prototype.bar = function (_a) { + var a = _a.a; + return a; + }; + return Bar; +}()); +exports.Bar = Bar; + + +//// [noImplicitAnyDestructuringInPrivateMethod.d.ts] +export declare class Bar { + private bar({a}); +} +export declare class Bar2 { + private bar({a}); +} diff --git a/tests/baselines/reference/noImplicitAnyDestructuringInPrivateMethod.symbols b/tests/baselines/reference/noImplicitAnyDestructuringInPrivateMethod.symbols new file mode 100644 index 00000000000..0b1ce5cfe48 --- /dev/null +++ b/tests/baselines/reference/noImplicitAnyDestructuringInPrivateMethod.symbols @@ -0,0 +1,27 @@ +=== tests/cases/compiler/noImplicitAnyDestructuringInPrivateMethod.ts === +type Arg = { +>Arg : Symbol(Arg, Decl(noImplicitAnyDestructuringInPrivateMethod.ts, 0, 0)) + + a: number; +>a : Symbol(a, Decl(noImplicitAnyDestructuringInPrivateMethod.ts, 0, 12)) + +}; +export class Bar { +>Bar : Symbol(Bar, Decl(noImplicitAnyDestructuringInPrivateMethod.ts, 2, 2)) + + private bar({ a, }: Arg): number { +>bar : Symbol(Bar.bar, Decl(noImplicitAnyDestructuringInPrivateMethod.ts, 3, 18)) +>a : Symbol(a, Decl(noImplicitAnyDestructuringInPrivateMethod.ts, 4, 17)) +>Arg : Symbol(Arg, Decl(noImplicitAnyDestructuringInPrivateMethod.ts, 0, 0)) + + return a; +>a : Symbol(a, Decl(noImplicitAnyDestructuringInPrivateMethod.ts, 4, 17)) + } +} +export declare class Bar2 { +>Bar2 : Symbol(Bar2, Decl(noImplicitAnyDestructuringInPrivateMethod.ts, 7, 1)) + + private bar({ a, }); +>bar : Symbol(Bar2.bar, Decl(noImplicitAnyDestructuringInPrivateMethod.ts, 8, 27)) +>a : Symbol(a, Decl(noImplicitAnyDestructuringInPrivateMethod.ts, 9, 17)) +} diff --git a/tests/baselines/reference/noImplicitAnyDestructuringInPrivateMethod.types b/tests/baselines/reference/noImplicitAnyDestructuringInPrivateMethod.types new file mode 100644 index 00000000000..a399e59e3c3 --- /dev/null +++ b/tests/baselines/reference/noImplicitAnyDestructuringInPrivateMethod.types @@ -0,0 +1,27 @@ +=== tests/cases/compiler/noImplicitAnyDestructuringInPrivateMethod.ts === +type Arg = { +>Arg : { a: number; } + + a: number; +>a : number + +}; +export class Bar { +>Bar : Bar + + private bar({ a, }: Arg): number { +>bar : ({a}: { a: number; }) => number +>a : number +>Arg : { a: number; } + + return a; +>a : number + } +} +export declare class Bar2 { +>Bar2 : Bar2 + + private bar({ a, }); +>bar : ({a}: { a: any; }) => any +>a : any +} diff --git a/tests/baselines/reference/noImplicitAnyDestructuringParameterDeclaration.errors.txt b/tests/baselines/reference/noImplicitAnyDestructuringParameterDeclaration.errors.txt new file mode 100644 index 00000000000..a15f9c07cd3 --- /dev/null +++ b/tests/baselines/reference/noImplicitAnyDestructuringParameterDeclaration.errors.txt @@ -0,0 +1,55 @@ +tests/cases/compiler/noImplicitAnyDestructuringParameterDeclaration.ts(1,14): error TS7031: Binding element 'a' implicitly has an 'any' type. +tests/cases/compiler/noImplicitAnyDestructuringParameterDeclaration.ts(1,19): error TS7031: Binding element 'b' implicitly has an 'any' type. +tests/cases/compiler/noImplicitAnyDestructuringParameterDeclaration.ts(1,23): error TS7006: Parameter 'c' implicitly has an 'any' type. +tests/cases/compiler/noImplicitAnyDestructuringParameterDeclaration.ts(1,26): error TS7006: Parameter 'd' implicitly has an 'any' type. +tests/cases/compiler/noImplicitAnyDestructuringParameterDeclaration.ts(3,14): error TS7031: Binding element 'a' implicitly has an 'any' type. +tests/cases/compiler/noImplicitAnyDestructuringParameterDeclaration.ts(3,31): error TS7031: Binding element 'b' implicitly has an 'any' type. +tests/cases/compiler/noImplicitAnyDestructuringParameterDeclaration.ts(3,42): error TS7006: Parameter 'c' implicitly has an 'any' type. +tests/cases/compiler/noImplicitAnyDestructuringParameterDeclaration.ts(3,57): error TS7006: Parameter 'd' implicitly has an 'any' type. +tests/cases/compiler/noImplicitAnyDestructuringParameterDeclaration.ts(7,20): error TS7008: Member 'b' implicitly has an 'any' type. +tests/cases/compiler/noImplicitAnyDestructuringParameterDeclaration.ts(7,30): error TS7008: Member 'b' implicitly has an 'any' type. +tests/cases/compiler/noImplicitAnyDestructuringParameterDeclaration.ts(9,14): error TS7031: Binding element 'a1' implicitly has an 'any' type. +tests/cases/compiler/noImplicitAnyDestructuringParameterDeclaration.ts(9,34): error TS7031: Binding element 'b1' implicitly has an 'any' type. +tests/cases/compiler/noImplicitAnyDestructuringParameterDeclaration.ts(9,54): error TS7006: Parameter 'c1' implicitly has an 'any' type. +tests/cases/compiler/noImplicitAnyDestructuringParameterDeclaration.ts(9,70): error TS7006: Parameter 'd1' implicitly has an 'any' type. + + +==== tests/cases/compiler/noImplicitAnyDestructuringParameterDeclaration.ts (14 errors) ==== + function f1([a], {b}, c, d) { // error + ~ +!!! error TS7031: Binding element 'a' implicitly has an 'any' type. + ~ +!!! error TS7031: Binding element 'b' implicitly has an 'any' type. + ~ +!!! error TS7006: Parameter 'c' implicitly has an 'any' type. + ~ +!!! error TS7006: Parameter 'd' implicitly has an 'any' type. + } + function f2([a = undefined], {b = null}, c = undefined, d = null) { // error + ~ +!!! error TS7031: Binding element 'a' implicitly has an 'any' type. + ~ +!!! error TS7031: Binding element 'b' implicitly has an 'any' type. + ~~~~~~~~~~~~~ +!!! error TS7006: Parameter 'c' implicitly has an 'any' type. + ~~~~~~~~ +!!! error TS7006: Parameter 'd' implicitly has an 'any' type. + } + function f3([a]: [any], {b}: { b: any }, c: any, d: any) { + } + function f4({b}: { b }, x: { b }) { // error in type instead + ~ +!!! error TS7008: Member 'b' implicitly has an 'any' type. + ~ +!!! error TS7008: Member 'b' implicitly has an 'any' type. + } + function f5([a1] = [undefined], {b1} = { b1: null }, c1 = undefined, d1 = null) { // error + ~~ +!!! error TS7031: Binding element 'a1' implicitly has an 'any' type. + ~~ +!!! error TS7031: Binding element 'b1' implicitly has an 'any' type. + ~~~~~~~~~~~~~~ +!!! error TS7006: Parameter 'c1' implicitly has an 'any' type. + ~~~~~~~~~ +!!! error TS7006: Parameter 'd1' implicitly has an 'any' type. + } \ No newline at end of file diff --git a/tests/baselines/reference/noImplicitAnyDestructuringParameterDeclaration.js b/tests/baselines/reference/noImplicitAnyDestructuringParameterDeclaration.js new file mode 100644 index 00000000000..d587f8789a9 --- /dev/null +++ b/tests/baselines/reference/noImplicitAnyDestructuringParameterDeclaration.js @@ -0,0 +1,36 @@ +//// [noImplicitAnyDestructuringParameterDeclaration.ts] +function f1([a], {b}, c, d) { // error +} +function f2([a = undefined], {b = null}, c = undefined, d = null) { // error +} +function f3([a]: [any], {b}: { b: any }, c: any, d: any) { +} +function f4({b}: { b }, x: { b }) { // error in type instead +} +function f5([a1] = [undefined], {b1} = { b1: null }, c1 = undefined, d1 = null) { // error +} + +//// [noImplicitAnyDestructuringParameterDeclaration.js] +function f1(_a, _b, c, d) { + var a = _a[0]; + var b = _b.b; +} +function f2(_a, _b, c, d) { + var _c = _a[0], a = _c === void 0 ? undefined : _c; + var _d = _b.b, b = _d === void 0 ? null : _d; + if (c === void 0) { c = undefined; } + if (d === void 0) { d = null; } +} +function f3(_a, _b, c, d) { + var a = _a[0]; + var b = _b.b; +} +function f4(_a, x) { + var b = _a.b; +} +function f5(_a, _b, c1, d1) { + var a1 = (_a === void 0 ? [undefined] : _a)[0]; + var b1 = (_b === void 0 ? { b1: null } : _b).b1; + if (c1 === void 0) { c1 = undefined; } + if (d1 === void 0) { d1 = null; } +} diff --git a/tests/baselines/reference/noImplicitAnyDestructuringVarDeclaration.errors.txt b/tests/baselines/reference/noImplicitAnyDestructuringVarDeclaration.errors.txt new file mode 100644 index 00000000000..10d6b05c622 --- /dev/null +++ b/tests/baselines/reference/noImplicitAnyDestructuringVarDeclaration.errors.txt @@ -0,0 +1,69 @@ +tests/cases/compiler/noImplicitAnyDestructuringVarDeclaration.ts(1,5): error TS1182: A destructuring declaration must have an initializer. +tests/cases/compiler/noImplicitAnyDestructuringVarDeclaration.ts(1,6): error TS7031: Binding element 'a' implicitly has an 'any' type. +tests/cases/compiler/noImplicitAnyDestructuringVarDeclaration.ts(1,10): error TS1182: A destructuring declaration must have an initializer. +tests/cases/compiler/noImplicitAnyDestructuringVarDeclaration.ts(1,11): error TS7031: Binding element 'b' implicitly has an 'any' type. +tests/cases/compiler/noImplicitAnyDestructuringVarDeclaration.ts(1,15): error TS7005: Variable 'c' implicitly has an 'any' type. +tests/cases/compiler/noImplicitAnyDestructuringVarDeclaration.ts(1,18): error TS7005: Variable 'd' implicitly has an 'any' type. +tests/cases/compiler/noImplicitAnyDestructuringVarDeclaration.ts(3,5): error TS1182: A destructuring declaration must have an initializer. +tests/cases/compiler/noImplicitAnyDestructuringVarDeclaration.ts(3,6): error TS7031: Binding element 'a1' implicitly has an 'any' type. +tests/cases/compiler/noImplicitAnyDestructuringVarDeclaration.ts(3,23): error TS1182: A destructuring declaration must have an initializer. +tests/cases/compiler/noImplicitAnyDestructuringVarDeclaration.ts(3,24): error TS7031: Binding element 'b1' implicitly has an 'any' type. +tests/cases/compiler/noImplicitAnyDestructuringVarDeclaration.ts(3,36): error TS7005: Variable 'c1' implicitly has an 'any' type. +tests/cases/compiler/noImplicitAnyDestructuringVarDeclaration.ts(3,52): error TS7005: Variable 'd1' implicitly has an 'any' type. +tests/cases/compiler/noImplicitAnyDestructuringVarDeclaration.ts(5,5): error TS1182: A destructuring declaration must have an initializer. +tests/cases/compiler/noImplicitAnyDestructuringVarDeclaration.ts(5,18): error TS1182: A destructuring declaration must have an initializer. +tests/cases/compiler/noImplicitAnyDestructuringVarDeclaration.ts(7,5): error TS1182: A destructuring declaration must have an initializer. +tests/cases/compiler/noImplicitAnyDestructuringVarDeclaration.ts(7,13): error TS7008: Member 'b3' implicitly has an 'any' type. +tests/cases/compiler/noImplicitAnyDestructuringVarDeclaration.ts(7,25): error TS7008: Member 'b3' implicitly has an 'any' type. +tests/cases/compiler/noImplicitAnyDestructuringVarDeclaration.ts(9,6): error TS7031: Binding element 'a1' implicitly has an 'any' type. +tests/cases/compiler/noImplicitAnyDestructuringVarDeclaration.ts(9,26): error TS7031: Binding element 'b1' implicitly has an 'any' type. + + +==== tests/cases/compiler/noImplicitAnyDestructuringVarDeclaration.ts (19 errors) ==== + var [a], {b}, c, d; // error + ~~~ +!!! error TS1182: A destructuring declaration must have an initializer. + ~ +!!! error TS7031: Binding element 'a' implicitly has an 'any' type. + ~~~ +!!! error TS1182: A destructuring declaration must have an initializer. + ~ +!!! error TS7031: Binding element 'b' implicitly has an 'any' type. + ~ +!!! error TS7005: Variable 'c' implicitly has an 'any' type. + ~ +!!! error TS7005: Variable 'd' implicitly has an 'any' type. + + var [a1 = undefined], {b1 = null}, c1 = undefined, d1 = null; // error + ~~~~~~~~~~~~~~~~ +!!! error TS1182: A destructuring declaration must have an initializer. + ~~ +!!! error TS7031: Binding element 'a1' implicitly has an 'any' type. + ~~~~~~~~~~~ +!!! error TS1182: A destructuring declaration must have an initializer. + ~~ +!!! error TS7031: Binding element 'b1' implicitly has an 'any' type. + ~~ +!!! error TS7005: Variable 'c1' implicitly has an 'any' type. + ~~ +!!! error TS7005: Variable 'd1' implicitly has an 'any' type. + + var [a2]: [any], {b2}: { b2: any }, c2: any, d2: any; + ~~~~ +!!! error TS1182: A destructuring declaration must have an initializer. + ~~~~ +!!! error TS1182: A destructuring declaration must have an initializer. + + var {b3}: { b3 }, c3: { b3 }; // error in type instead + ~~~~ +!!! error TS1182: A destructuring declaration must have an initializer. + ~~ +!!! error TS7008: Member 'b3' implicitly has an 'any' type. + ~~ +!!! error TS7008: Member 'b3' implicitly has an 'any' type. + + var [a1] = [undefined], {b1} = { b1: null }, c1 = undefined, d1 = null; // error + ~~ +!!! error TS7031: Binding element 'a1' implicitly has an 'any' type. + ~~ +!!! error TS7031: Binding element 'b1' implicitly has an 'any' type. \ No newline at end of file diff --git a/tests/baselines/reference/noImplicitAnyDestructuringVarDeclaration.js b/tests/baselines/reference/noImplicitAnyDestructuringVarDeclaration.js new file mode 100644 index 00000000000..cbc15c01e9e --- /dev/null +++ b/tests/baselines/reference/noImplicitAnyDestructuringVarDeclaration.js @@ -0,0 +1,17 @@ +//// [noImplicitAnyDestructuringVarDeclaration.ts] +var [a], {b}, c, d; // error + +var [a1 = undefined], {b1 = null}, c1 = undefined, d1 = null; // error + +var [a2]: [any], {b2}: { b2: any }, c2: any, d2: any; + +var {b3}: { b3 }, c3: { b3 }; // error in type instead + +var [a1] = [undefined], {b1} = { b1: null }, c1 = undefined, d1 = null; // error + +//// [noImplicitAnyDestructuringVarDeclaration.js] +var a = (void 0)[0], b = (void 0).b, c, d; // error +var _a = (void 0)[0], a1 = _a === void 0 ? undefined : _a, _b = (void 0).b1, b1 = _b === void 0 ? null : _b, c1 = undefined, d1 = null; // error +var a2 = (void 0)[0], b2 = (void 0).b2, c2, d2; +var b3 = (void 0).b3, c3; // error in type instead +var a1 = [undefined][0], b1 = { b1: null }.b1, c1 = undefined, d1 = null; // error diff --git a/tests/baselines/reference/noImplicitAnyInCastExpression.errors.txt b/tests/baselines/reference/noImplicitAnyInCastExpression.errors.txt index 66a7773ab49..8243a9c68ce 100644 --- a/tests/baselines/reference/noImplicitAnyInCastExpression.errors.txt +++ b/tests/baselines/reference/noImplicitAnyInCastExpression.errors.txt @@ -1,4 +1,4 @@ -tests/cases/compiler/noImplicitAnyInCastExpression.ts(16,2): error TS2352: Neither type '{ c: null; }' nor type 'IFoo' is assignable to the other. +tests/cases/compiler/noImplicitAnyInCastExpression.ts(16,2): error TS2352: Type '{ c: null; }' cannot be converted to type 'IFoo'. Property 'a' is missing in type '{ c: null; }'. @@ -20,5 +20,5 @@ tests/cases/compiler/noImplicitAnyInCastExpression.ts(16,2): error TS2352: Neith // Neither types is assignable to each other ({ c: null }); ~~~~~~~~~~~~~~~~~ -!!! error TS2352: Neither type '{ c: null; }' nor type 'IFoo' is assignable to the other. +!!! error TS2352: Type '{ c: null; }' cannot be converted to type 'IFoo'. !!! error TS2352: Property 'a' is missing in type '{ c: null; }'. \ No newline at end of file diff --git a/tests/baselines/reference/noImplicitReturnInConstructors.js b/tests/baselines/reference/noImplicitReturnInConstructors.js new file mode 100644 index 00000000000..f1c4c8caa60 --- /dev/null +++ b/tests/baselines/reference/noImplicitReturnInConstructors.js @@ -0,0 +1,14 @@ +//// [noImplicitReturnInConstructors.ts] +class C { + constructor() { + return; + } +} + +//// [noImplicitReturnInConstructors.js] +var C = (function () { + function C() { + return; + } + return C; +}()); diff --git a/tests/baselines/reference/noImplicitReturnInConstructors.symbols b/tests/baselines/reference/noImplicitReturnInConstructors.symbols new file mode 100644 index 00000000000..326a390ead8 --- /dev/null +++ b/tests/baselines/reference/noImplicitReturnInConstructors.symbols @@ -0,0 +1,8 @@ +=== tests/cases/compiler/noImplicitReturnInConstructors.ts === +class C { +>C : Symbol(C, Decl(noImplicitReturnInConstructors.ts, 0, 0)) + + constructor() { + return; + } +} diff --git a/tests/baselines/reference/noImplicitReturnInConstructors.types b/tests/baselines/reference/noImplicitReturnInConstructors.types new file mode 100644 index 00000000000..304c7b5db50 --- /dev/null +++ b/tests/baselines/reference/noImplicitReturnInConstructors.types @@ -0,0 +1,8 @@ +=== tests/cases/compiler/noImplicitReturnInConstructors.ts === +class C { +>C : C + + constructor() { + return; + } +} diff --git a/tests/baselines/reference/noImplicitReturnsInAsync1.js b/tests/baselines/reference/noImplicitReturnsInAsync1.js new file mode 100644 index 00000000000..6192e9e7f24 --- /dev/null +++ b/tests/baselines/reference/noImplicitReturnsInAsync1.js @@ -0,0 +1,26 @@ +//// [noImplicitReturnsInAsync1.ts] + +async function test(isError: boolean = false) { + if (isError === true) { + return; + } + let x = await Promise.resolve("The test is passed without an error."); +} + +//// [noImplicitReturnsInAsync1.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()); + }); +}; +function test(isError = false) { + return __awaiter(this, void 0, void 0, function* () { + if (isError === true) { + return; + } + let x = yield Promise.resolve("The test is passed without an error."); + }); +} diff --git a/tests/baselines/reference/noImplicitReturnsInAsync1.symbols b/tests/baselines/reference/noImplicitReturnsInAsync1.symbols new file mode 100644 index 00000000000..7bf70fbf04e --- /dev/null +++ b/tests/baselines/reference/noImplicitReturnsInAsync1.symbols @@ -0,0 +1,17 @@ +=== tests/cases/compiler/noImplicitReturnsInAsync1.ts === + +async function test(isError: boolean = false) { +>test : Symbol(test, Decl(noImplicitReturnsInAsync1.ts, 0, 0)) +>isError : Symbol(isError, Decl(noImplicitReturnsInAsync1.ts, 1, 20)) + + if (isError === true) { +>isError : Symbol(isError, Decl(noImplicitReturnsInAsync1.ts, 1, 20)) + + return; + } + let x = await Promise.resolve("The test is passed without an error."); +>x : Symbol(x, Decl(noImplicitReturnsInAsync1.ts, 5, 7)) +>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, --, --)) +} diff --git a/tests/baselines/reference/noImplicitReturnsInAsync1.types b/tests/baselines/reference/noImplicitReturnsInAsync1.types new file mode 100644 index 00000000000..23f0892f30e --- /dev/null +++ b/tests/baselines/reference/noImplicitReturnsInAsync1.types @@ -0,0 +1,23 @@ +=== tests/cases/compiler/noImplicitReturnsInAsync1.ts === + +async function test(isError: boolean = false) { +>test : (isError?: boolean) => Promise +>isError : boolean +>false : boolean + + if (isError === true) { +>isError === true : boolean +>isError : boolean +>true : boolean + + return; + } + let x = await Promise.resolve("The test is passed without an error."); +>x : string +>await Promise.resolve("The test is passed without an error.") : string +>Promise.resolve("The test is passed without an error.") : Promise +>Promise.resolve : { (value: T | PromiseLike): Promise; (): Promise; } +>Promise : PromiseConstructor +>resolve : { (value: T | PromiseLike): Promise; (): Promise; } +>"The test is passed without an error." : string +} diff --git a/tests/baselines/reference/noImplicitReturnsInAsync2.errors.txt b/tests/baselines/reference/noImplicitReturnsInAsync2.errors.txt new file mode 100644 index 00000000000..83673ff518b --- /dev/null +++ b/tests/baselines/reference/noImplicitReturnsInAsync2.errors.txt @@ -0,0 +1,45 @@ +tests/cases/compiler/noImplicitReturnsInAsync2.ts(3,16): error TS7030: Not all code paths return a value. +tests/cases/compiler/noImplicitReturnsInAsync2.ts(25,48): error TS7030: Not all code paths return a value. + + +==== tests/cases/compiler/noImplicitReturnsInAsync2.ts (2 errors) ==== + + // Should be an error, Promise, currently retorted correctly + async function test3(isError: boolean = true) { + ~~~~~ +!!! error TS7030: Not all code paths return a value. + if (isError === true) { + return 6; + } + } + + // Should not be an error, Promise, currently **not** working + async function test4(isError: boolean = true) { + if (isError === true) { + return undefined; + } + } + + // should not be error, Promise currently working correctly + async function test5(isError: boolean = true): Promise { //should not be error + if (isError === true) { + return undefined; + } + } + + + // should be error, currently reported correctly + async function test6(isError: boolean = true): Promise { + ~~~~~~~~~~~~~~~ +!!! error TS7030: Not all code paths return a value. + if (isError === true) { + return undefined; + } + } + + // infered to be Promise, should not be an error, currently reported correctly + async function test7(isError: boolean = true) { + if (isError === true) { + return; + } + } \ No newline at end of file diff --git a/tests/baselines/reference/noImplicitReturnsInAsync2.js b/tests/baselines/reference/noImplicitReturnsInAsync2.js new file mode 100644 index 00000000000..5e034237fef --- /dev/null +++ b/tests/baselines/reference/noImplicitReturnsInAsync2.js @@ -0,0 +1,87 @@ +//// [noImplicitReturnsInAsync2.ts] + +// Should be an error, Promise, currently retorted correctly +async function test3(isError: boolean = true) { + if (isError === true) { + return 6; + } +} + +// Should not be an error, Promise, currently **not** working +async function test4(isError: boolean = true) { + if (isError === true) { + return undefined; + } +} + +// should not be error, Promise currently working correctly +async function test5(isError: boolean = true): Promise { //should not be error + if (isError === true) { + return undefined; + } +} + + +// should be error, currently reported correctly +async function test6(isError: boolean = true): Promise { + if (isError === true) { + return undefined; + } +} + +// infered to be Promise, should not be an error, currently reported correctly +async function test7(isError: boolean = true) { + if (isError === true) { + return; + } +} + +//// [noImplicitReturnsInAsync2.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()); + }); +}; +// Should be an error, Promise, currently retorted correctly +function test3(isError = true) { + return __awaiter(this, void 0, void 0, function* () { + if (isError === true) { + return 6; + } + }); +} +// Should not be an error, Promise, currently **not** working +function test4(isError = true) { + return __awaiter(this, void 0, void 0, function* () { + if (isError === true) { + return undefined; + } + }); +} +// should not be error, Promise currently working correctly +function test5(isError = true) { + return __awaiter(this, void 0, void 0, function* () { + if (isError === true) { + return undefined; + } + }); +} +// should be error, currently reported correctly +function test6(isError = true) { + return __awaiter(this, void 0, void 0, function* () { + if (isError === true) { + return undefined; + } + }); +} +// infered to be Promise, should not be an error, currently reported correctly +function test7(isError = true) { + return __awaiter(this, void 0, void 0, function* () { + if (isError === true) { + return; + } + }); +} diff --git a/tests/baselines/reference/noImplicitReturnsWithoutReturnExpression.errors.txt b/tests/baselines/reference/noImplicitReturnsWithoutReturnExpression.errors.txt new file mode 100644 index 00000000000..83d9a65e95d --- /dev/null +++ b/tests/baselines/reference/noImplicitReturnsWithoutReturnExpression.errors.txt @@ -0,0 +1,34 @@ +tests/cases/compiler/noImplicitReturnsWithoutReturnExpression.ts(2,5): error TS7030: Not all code paths return a value. +tests/cases/compiler/noImplicitReturnsWithoutReturnExpression.ts(22,9): error TS7030: Not all code paths return a value. + + +==== tests/cases/compiler/noImplicitReturnsWithoutReturnExpression.ts (2 errors) ==== + function isMissingReturnExpression(): number { + return; + ~~~~~~~ +!!! error TS7030: Not all code paths return a value. + } + + function isMissingReturnExpression2(): any { + return; + } + + function isMissingReturnExpression3(): number|void { + return; + } + + function isMissingReturnExpression4(): void { + return; + } + + function isMissingReturnExpression5(x) { + if (x) { + return 0; + } + else { + return; + ~~~~~~~ +!!! error TS7030: Not all code paths return a value. + } + } + \ No newline at end of file diff --git a/tests/baselines/reference/noImplicitReturnsWithoutReturnExpression.js b/tests/baselines/reference/noImplicitReturnsWithoutReturnExpression.js new file mode 100644 index 00000000000..8c9123f6e17 --- /dev/null +++ b/tests/baselines/reference/noImplicitReturnsWithoutReturnExpression.js @@ -0,0 +1,48 @@ +//// [noImplicitReturnsWithoutReturnExpression.ts] +function isMissingReturnExpression(): number { + return; +} + +function isMissingReturnExpression2(): any { + return; +} + +function isMissingReturnExpression3(): number|void { + return; +} + +function isMissingReturnExpression4(): void { + return; +} + +function isMissingReturnExpression5(x) { + if (x) { + return 0; + } + else { + return; + } +} + + +//// [noImplicitReturnsWithoutReturnExpression.js] +function isMissingReturnExpression() { + return; +} +function isMissingReturnExpression2() { + return; +} +function isMissingReturnExpression3() { + return; +} +function isMissingReturnExpression4() { + return; +} +function isMissingReturnExpression5(x) { + if (x) { + return 0; + } + else { + return; + } +} diff --git a/tests/baselines/reference/noImplicitThisFunctions.errors.txt b/tests/baselines/reference/noImplicitThisFunctions.errors.txt new file mode 100644 index 00000000000..5f66ac3553f --- /dev/null +++ b/tests/baselines/reference/noImplicitThisFunctions.errors.txt @@ -0,0 +1,28 @@ +tests/cases/compiler/noImplicitThisFunctions.ts(14,12): error TS2683: 'this' implicitly has type 'any' because it does not have a type annotation. +tests/cases/compiler/noImplicitThisFunctions.ts(18,38): error TS2683: 'this' implicitly has type 'any' because it does not have a type annotation. + + +==== tests/cases/compiler/noImplicitThisFunctions.ts (2 errors) ==== + + function f1(x) { + // implicit any is still allowed + return x + 1; + } + + function f2(y: number) { + // ok: no reference to this + return y + 1; + } + + function f3(z: number): number { + // error: this is implicitly any + return this.a + z; + ~~~~ +!!! error TS2683: 'this' implicitly has type 'any' because it does not have a type annotation. + } + + // error: `this` is `window`, but is still of type `any` + let f4: (b: number) => number = b => this.c + b; + ~~~~ +!!! error TS2683: 'this' implicitly has type 'any' because it does not have a type annotation. + \ No newline at end of file diff --git a/tests/baselines/reference/noImplicitThisFunctions.js b/tests/baselines/reference/noImplicitThisFunctions.js new file mode 100644 index 00000000000..80ceccbe751 --- /dev/null +++ b/tests/baselines/reference/noImplicitThisFunctions.js @@ -0,0 +1,37 @@ +//// [noImplicitThisFunctions.ts] + +function f1(x) { + // implicit any is still allowed + return x + 1; +} + +function f2(y: number) { + // ok: no reference to this + return y + 1; +} + +function f3(z: number): number { + // error: this is implicitly any + return this.a + z; +} + +// error: `this` is `window`, but is still of type `any` +let f4: (b: number) => number = b => this.c + b; + + +//// [noImplicitThisFunctions.js] +var _this = this; +function f1(x) { + // implicit any is still allowed + return x + 1; +} +function f2(y) { + // ok: no reference to this + return y + 1; +} +function f3(z) { + // error: this is implicitly any + return this.a + z; +} +// error: `this` is `window`, but is still of type `any` +var f4 = function (b) { return _this.c + b; }; diff --git a/tests/baselines/reference/noImplicitThisObjectLiterals.errors.txt b/tests/baselines/reference/noImplicitThisObjectLiterals.errors.txt new file mode 100644 index 00000000000..6f25f2d3a08 --- /dev/null +++ b/tests/baselines/reference/noImplicitThisObjectLiterals.errors.txt @@ -0,0 +1,22 @@ +tests/cases/compiler/noImplicitThisObjectLiterals.ts(2,8): error TS2683: 'this' implicitly has type 'any' because it does not have a type annotation. +tests/cases/compiler/noImplicitThisObjectLiterals.ts(4,16): error TS2683: 'this' implicitly has type 'any' because it does not have a type annotation. +tests/cases/compiler/noImplicitThisObjectLiterals.ts(7,16): error TS2683: 'this' implicitly has type 'any' because it does not have a type annotation. + + +==== tests/cases/compiler/noImplicitThisObjectLiterals.ts (3 errors) ==== + let o = { + d: this, // error, this: any + ~~~~ +!!! error TS2683: 'this' implicitly has type 'any' because it does not have a type annotation. + m() { + return this.d.length; // error, this: any + ~~~~ +!!! error TS2683: 'this' implicitly has type 'any' because it does not have a type annotation. + }, + f: function() { + return this.d.length; // error, this: any + ~~~~ +!!! error TS2683: 'this' implicitly has type 'any' because it does not have a type annotation. + } + } + \ No newline at end of file diff --git a/tests/baselines/reference/noImplicitThisObjectLiterals.js b/tests/baselines/reference/noImplicitThisObjectLiterals.js new file mode 100644 index 00000000000..3888708a8da --- /dev/null +++ b/tests/baselines/reference/noImplicitThisObjectLiterals.js @@ -0,0 +1,22 @@ +//// [noImplicitThisObjectLiterals.ts] +let o = { + d: this, // error, this: any + m() { + return this.d.length; // error, this: any + }, + f: function() { + return this.d.length; // error, this: any + } +} + + +//// [noImplicitThisObjectLiterals.js] +var o = { + d: this, + m: function () { + return this.d.length; // error, this: any + }, + f: function () { + return this.d.length; // error, this: any + } +}; diff --git a/tests/baselines/reference/nominalSubtypeCheckOfTypeParameter.symbols b/tests/baselines/reference/nominalSubtypeCheckOfTypeParameter.symbols index f25acc772a6..c7d9a1b50f4 100644 --- a/tests/baselines/reference/nominalSubtypeCheckOfTypeParameter.symbols +++ b/tests/baselines/reference/nominalSubtypeCheckOfTypeParameter.symbols @@ -5,11 +5,11 @@ interface Tuple { >S : Symbol(S, Decl(nominalSubtypeCheckOfTypeParameter.ts, 0, 18)) first: T ->first : Symbol(first, Decl(nominalSubtypeCheckOfTypeParameter.ts, 0, 23)) +>first : Symbol(Tuple.first, Decl(nominalSubtypeCheckOfTypeParameter.ts, 0, 23)) >T : Symbol(T, Decl(nominalSubtypeCheckOfTypeParameter.ts, 0, 16)) second: S ->second : Symbol(second, Decl(nominalSubtypeCheckOfTypeParameter.ts, 1, 12)) +>second : Symbol(Tuple.second, Decl(nominalSubtypeCheckOfTypeParameter.ts, 1, 12)) >S : Symbol(S, Decl(nominalSubtypeCheckOfTypeParameter.ts, 0, 18)) } @@ -18,14 +18,14 @@ interface Sequence { >T : Symbol(T, Decl(nominalSubtypeCheckOfTypeParameter.ts, 5, 19)) hasNext(): boolean ->hasNext : Symbol(hasNext, Decl(nominalSubtypeCheckOfTypeParameter.ts, 5, 23)) +>hasNext : Symbol(Sequence.hasNext, Decl(nominalSubtypeCheckOfTypeParameter.ts, 5, 23)) pop(): T ->pop : Symbol(pop, Decl(nominalSubtypeCheckOfTypeParameter.ts, 6, 22)) +>pop : Symbol(Sequence.pop, Decl(nominalSubtypeCheckOfTypeParameter.ts, 6, 22)) >T : Symbol(T, Decl(nominalSubtypeCheckOfTypeParameter.ts, 5, 19)) zip(seq: Sequence): Sequence> ->zip : Symbol(zip, Decl(nominalSubtypeCheckOfTypeParameter.ts, 7, 14)) +>zip : Symbol(Sequence.zip, Decl(nominalSubtypeCheckOfTypeParameter.ts, 7, 14)) >S : Symbol(S, Decl(nominalSubtypeCheckOfTypeParameter.ts, 8, 10)) >seq : Symbol(seq, Decl(nominalSubtypeCheckOfTypeParameter.ts, 8, 13)) >Sequence : Symbol(Sequence, Decl(nominalSubtypeCheckOfTypeParameter.ts, 3, 1)) @@ -45,10 +45,10 @@ interface List extends Sequence { >T : Symbol(T, Decl(nominalSubtypeCheckOfTypeParameter.ts, 13, 15)) getLength(): number ->getLength : Symbol(getLength, Decl(nominalSubtypeCheckOfTypeParameter.ts, 13, 39)) +>getLength : Symbol(List.getLength, Decl(nominalSubtypeCheckOfTypeParameter.ts, 13, 39)) zip(seq: Sequence): List> ->zip : Symbol(zip, Decl(nominalSubtypeCheckOfTypeParameter.ts, 14, 23)) +>zip : Symbol(List.zip, Decl(nominalSubtypeCheckOfTypeParameter.ts, 14, 23)) >S : Symbol(S, Decl(nominalSubtypeCheckOfTypeParameter.ts, 15, 10)) >seq : Symbol(seq, Decl(nominalSubtypeCheckOfTypeParameter.ts, 15, 13)) >Sequence : Symbol(Sequence, Decl(nominalSubtypeCheckOfTypeParameter.ts, 3, 1)) diff --git a/tests/baselines/reference/nominalSubtypeCheckOfTypeParameter2.symbols b/tests/baselines/reference/nominalSubtypeCheckOfTypeParameter2.symbols index 3249c465a98..53c740cccaa 100644 --- a/tests/baselines/reference/nominalSubtypeCheckOfTypeParameter2.symbols +++ b/tests/baselines/reference/nominalSubtypeCheckOfTypeParameter2.symbols @@ -4,7 +4,7 @@ interface B { >T : Symbol(T, Decl(nominalSubtypeCheckOfTypeParameter2.ts, 0, 12)) bar: T; ->bar : Symbol(bar, Decl(nominalSubtypeCheckOfTypeParameter2.ts, 0, 16)) +>bar : Symbol(B.bar, Decl(nominalSubtypeCheckOfTypeParameter2.ts, 0, 16)) >T : Symbol(T, Decl(nominalSubtypeCheckOfTypeParameter2.ts, 0, 12)) } @@ -16,7 +16,7 @@ interface A extends B { >T : Symbol(T, Decl(nominalSubtypeCheckOfTypeParameter2.ts, 5, 12)) foo: T; ->foo : Symbol(foo, Decl(nominalSubtypeCheckOfTypeParameter2.ts, 5, 29)) +>foo : Symbol(A.foo, Decl(nominalSubtypeCheckOfTypeParameter2.ts, 5, 29)) >T : Symbol(T, Decl(nominalSubtypeCheckOfTypeParameter2.ts, 5, 12)) } @@ -28,7 +28,7 @@ interface A2 extends B> { >B : Symbol(B, Decl(nominalSubtypeCheckOfTypeParameter2.ts, 0, 0)) baz: T; ->baz : Symbol(baz, Decl(nominalSubtypeCheckOfTypeParameter2.ts, 10, 38)) +>baz : Symbol(A2.baz, Decl(nominalSubtypeCheckOfTypeParameter2.ts, 10, 38)) >T : Symbol(T, Decl(nominalSubtypeCheckOfTypeParameter2.ts, 10, 13)) } @@ -37,7 +37,7 @@ interface C { >T : Symbol(T, Decl(nominalSubtypeCheckOfTypeParameter2.ts, 14, 12)) bam: T; ->bam : Symbol(bam, Decl(nominalSubtypeCheckOfTypeParameter2.ts, 14, 16)) +>bam : Symbol(C.bam, Decl(nominalSubtypeCheckOfTypeParameter2.ts, 14, 16)) >T : Symbol(T, Decl(nominalSubtypeCheckOfTypeParameter2.ts, 14, 12)) } @@ -50,6 +50,6 @@ interface A3 extends B> { >T : Symbol(T, Decl(nominalSubtypeCheckOfTypeParameter2.ts, 19, 13)) bing: T; ->bing : Symbol(bing, Decl(nominalSubtypeCheckOfTypeParameter2.ts, 19, 33)) +>bing : Symbol(A3.bing, Decl(nominalSubtypeCheckOfTypeParameter2.ts, 19, 33)) >T : Symbol(T, Decl(nominalSubtypeCheckOfTypeParameter2.ts, 19, 13)) } diff --git a/tests/baselines/reference/nonConflictingRecursiveBaseTypeMembers.symbols b/tests/baselines/reference/nonConflictingRecursiveBaseTypeMembers.symbols index f3ff334931c..4c92f8cb109 100644 --- a/tests/baselines/reference/nonConflictingRecursiveBaseTypeMembers.symbols +++ b/tests/baselines/reference/nonConflictingRecursiveBaseTypeMembers.symbols @@ -4,7 +4,7 @@ interface A { >T : Symbol(T, Decl(nonConflictingRecursiveBaseTypeMembers.ts, 0, 12)) x: C ->x : Symbol(x, Decl(nonConflictingRecursiveBaseTypeMembers.ts, 0, 16)) +>x : Symbol(A.x, Decl(nonConflictingRecursiveBaseTypeMembers.ts, 0, 16)) >C : Symbol(C, Decl(nonConflictingRecursiveBaseTypeMembers.ts, 6, 1)) >T : Symbol(T, Decl(nonConflictingRecursiveBaseTypeMembers.ts, 0, 12)) } @@ -14,7 +14,7 @@ interface B { >T : Symbol(T, Decl(nonConflictingRecursiveBaseTypeMembers.ts, 4, 12)) x: C ->x : Symbol(x, Decl(nonConflictingRecursiveBaseTypeMembers.ts, 4, 16)) +>x : Symbol(B.x, Decl(nonConflictingRecursiveBaseTypeMembers.ts, 4, 16)) >C : Symbol(C, Decl(nonConflictingRecursiveBaseTypeMembers.ts, 6, 1)) >T : Symbol(T, Decl(nonConflictingRecursiveBaseTypeMembers.ts, 4, 12)) } diff --git a/tests/baselines/reference/nonContextuallyTypedLogicalOr.symbols b/tests/baselines/reference/nonContextuallyTypedLogicalOr.symbols index 738f4fed916..2d921f6631c 100644 --- a/tests/baselines/reference/nonContextuallyTypedLogicalOr.symbols +++ b/tests/baselines/reference/nonContextuallyTypedLogicalOr.symbols @@ -3,20 +3,20 @@ interface Contextual { >Contextual : Symbol(Contextual, Decl(nonContextuallyTypedLogicalOr.ts, 0, 0)) dummy; ->dummy : Symbol(dummy, Decl(nonContextuallyTypedLogicalOr.ts, 0, 22)) +>dummy : Symbol(Contextual.dummy, Decl(nonContextuallyTypedLogicalOr.ts, 0, 22)) p?: number; ->p : Symbol(p, Decl(nonContextuallyTypedLogicalOr.ts, 1, 10)) +>p : Symbol(Contextual.p, Decl(nonContextuallyTypedLogicalOr.ts, 1, 10)) } interface Ellement { >Ellement : Symbol(Ellement, Decl(nonContextuallyTypedLogicalOr.ts, 3, 1)) dummy; ->dummy : Symbol(dummy, Decl(nonContextuallyTypedLogicalOr.ts, 5, 20)) +>dummy : Symbol(Ellement.dummy, Decl(nonContextuallyTypedLogicalOr.ts, 5, 20)) p: any; ->p : Symbol(p, Decl(nonContextuallyTypedLogicalOr.ts, 6, 10)) +>p : Symbol(Ellement.p, Decl(nonContextuallyTypedLogicalOr.ts, 6, 10)) } var c: Contextual; diff --git a/tests/baselines/reference/nonGenericClassExtendingGenericClassWithAny.symbols b/tests/baselines/reference/nonGenericClassExtendingGenericClassWithAny.symbols index 47daa69239a..54b1dc0c6f3 100644 --- a/tests/baselines/reference/nonGenericClassExtendingGenericClassWithAny.symbols +++ b/tests/baselines/reference/nonGenericClassExtendingGenericClassWithAny.symbols @@ -4,7 +4,7 @@ class Foo { >T : Symbol(T, Decl(nonGenericClassExtendingGenericClassWithAny.ts, 0, 10)) t: T; ->t : Symbol(t, Decl(nonGenericClassExtendingGenericClassWithAny.ts, 0, 14)) +>t : Symbol(Foo.t, Decl(nonGenericClassExtendingGenericClassWithAny.ts, 0, 14)) >T : Symbol(T, Decl(nonGenericClassExtendingGenericClassWithAny.ts, 0, 10)) } diff --git a/tests/baselines/reference/nonInstantiatedModule.symbols b/tests/baselines/reference/nonInstantiatedModule.symbols index 0d67b0318f8..aac81ee5565 100644 --- a/tests/baselines/reference/nonInstantiatedModule.symbols +++ b/tests/baselines/reference/nonInstantiatedModule.symbols @@ -4,8 +4,8 @@ module M { export interface Point { x: number; y: number } >Point : Symbol(Point, Decl(nonInstantiatedModule.ts, 0, 10)) ->x : Symbol(x, Decl(nonInstantiatedModule.ts, 1, 28)) ->y : Symbol(y, Decl(nonInstantiatedModule.ts, 1, 39)) +>x : Symbol(Point.x, Decl(nonInstantiatedModule.ts, 1, 28)) +>y : Symbol(Point.y, Decl(nonInstantiatedModule.ts, 1, 39)) export var a = 1; >a : Symbol(a, Decl(nonInstantiatedModule.ts, 2, 14)) @@ -58,10 +58,10 @@ module M2 { >Point : Symbol(Point, Decl(nonInstantiatedModule.ts, 15, 11), Decl(nonInstantiatedModule.ts, 20, 5)) x: number; ->x : Symbol(x, Decl(nonInstantiatedModule.ts, 22, 28)) +>x : Symbol(Point.x, Decl(nonInstantiatedModule.ts, 22, 28)) y: number; ->y : Symbol(y, Decl(nonInstantiatedModule.ts, 23, 18)) +>y : Symbol(Point.y, Decl(nonInstantiatedModule.ts, 23, 18)) } } @@ -97,8 +97,8 @@ module M3 { >Point : Symbol(Point, Decl(nonInstantiatedModule.ts, 35, 25)) x: number; y: number; ->x : Symbol(x, Decl(nonInstantiatedModule.ts, 36, 32)) ->y : Symbol(y, Decl(nonInstantiatedModule.ts, 37, 22)) +>x : Symbol(Point.x, Decl(nonInstantiatedModule.ts, 36, 32)) +>y : Symbol(Point.y, Decl(nonInstantiatedModule.ts, 37, 22)) } } @@ -106,6 +106,6 @@ module M3 { >Utils : Symbol(Utils, Decl(nonInstantiatedModule.ts, 34, 11), Decl(nonInstantiatedModule.ts, 39, 5)) name: string; ->name : Symbol(name, Decl(nonInstantiatedModule.ts, 41, 24)) +>name : Symbol(Utils.name, Decl(nonInstantiatedModule.ts, 41, 24)) } } diff --git a/tests/baselines/reference/null.symbols b/tests/baselines/reference/null.symbols index bd3d835995b..f1d888e6889 100644 --- a/tests/baselines/reference/null.symbols +++ b/tests/baselines/reference/null.symbols @@ -30,10 +30,10 @@ interface I { >I : Symbol(I, Decl(null.ts, 13, 1)) x:any; ->x : Symbol(x, Decl(null.ts, 14, 13)) +>x : Symbol(I.x, Decl(null.ts, 14, 13)) y:number; ->y : Symbol(y, Decl(null.ts, 15, 10)) +>y : Symbol(I.y, Decl(null.ts, 15, 10)) } var w:I={x:null,y:3}; >w : Symbol(w, Decl(null.ts, 18, 3)) diff --git a/tests/baselines/reference/nullAssignableToEveryType.symbols b/tests/baselines/reference/nullAssignableToEveryType.symbols index a01077c8eb4..969686563a3 100644 --- a/tests/baselines/reference/nullAssignableToEveryType.symbols +++ b/tests/baselines/reference/nullAssignableToEveryType.symbols @@ -3,7 +3,7 @@ class C { >C : Symbol(C, Decl(nullAssignableToEveryType.ts, 0, 0)) foo: string; ->foo : Symbol(foo, Decl(nullAssignableToEveryType.ts, 0, 9)) +>foo : Symbol(C.foo, Decl(nullAssignableToEveryType.ts, 0, 9)) } var ac: C; >ac : Symbol(ac, Decl(nullAssignableToEveryType.ts, 3, 3)) @@ -13,7 +13,7 @@ interface I { >I : Symbol(I, Decl(nullAssignableToEveryType.ts, 3, 10)) foo: string; ->foo : Symbol(foo, Decl(nullAssignableToEveryType.ts, 4, 13)) +>foo : Symbol(I.foo, Decl(nullAssignableToEveryType.ts, 4, 13)) } var ai: I; >ai : Symbol(ai, Decl(nullAssignableToEveryType.ts, 7, 3)) @@ -38,7 +38,7 @@ var d: boolean = null; var e: Date = null; >e : Symbol(e, Decl(nullAssignableToEveryType.ts, 15, 3)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) var f: any = null; >f : Symbol(f, Decl(nullAssignableToEveryType.ts, 16, 3)) @@ -89,18 +89,18 @@ var o: (x: T) => T = null; var p: Number = null; >p : Symbol(p, Decl(nullAssignableToEveryType.ts, 29, 3)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) var q: String = null; >q : Symbol(q, Decl(nullAssignableToEveryType.ts, 30, 3)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo(x: T, y: U, z: V) { >foo : Symbol(foo, Decl(nullAssignableToEveryType.ts, 30, 21)) >T : Symbol(T, Decl(nullAssignableToEveryType.ts, 32, 13)) >U : Symbol(U, Decl(nullAssignableToEveryType.ts, 32, 15)) >V : Symbol(V, Decl(nullAssignableToEveryType.ts, 32, 18)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >x : Symbol(x, Decl(nullAssignableToEveryType.ts, 32, 35)) >T : Symbol(T, Decl(nullAssignableToEveryType.ts, 32, 13)) >y : Symbol(y, Decl(nullAssignableToEveryType.ts, 32, 40)) diff --git a/tests/baselines/reference/nullIsSubtypeOfEverythingButUndefined.symbols b/tests/baselines/reference/nullIsSubtypeOfEverythingButUndefined.symbols index cb6fab17560..3d4fb84145e 100644 --- a/tests/baselines/reference/nullIsSubtypeOfEverythingButUndefined.symbols +++ b/tests/baselines/reference/nullIsSubtypeOfEverythingButUndefined.symbols @@ -39,11 +39,11 @@ var r3 = true ? null : true; var r4 = true ? new Date() : null; >r4 : Symbol(r4, Decl(nullIsSubtypeOfEverythingButUndefined.ts, 18, 3), Decl(nullIsSubtypeOfEverythingButUndefined.ts, 19, 3)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) var r4 = true ? null : new Date(); >r4 : Symbol(r4, Decl(nullIsSubtypeOfEverythingButUndefined.ts, 18, 3), Decl(nullIsSubtypeOfEverythingButUndefined.ts, 19, 3)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) var r5 = true ? /1/ : null; >r5 : Symbol(r5, Decl(nullIsSubtypeOfEverythingButUndefined.ts, 21, 3), Decl(nullIsSubtypeOfEverythingButUndefined.ts, 22, 3)) @@ -81,7 +81,7 @@ var r8b = true ? null : (x: T) => { return x }; // type parameters not identi interface I1 { foo: number; } >I1 : Symbol(I1, Decl(nullIsSubtypeOfEverythingButUndefined.ts, 31, 50)) ->foo : Symbol(foo, Decl(nullIsSubtypeOfEverythingButUndefined.ts, 33, 14)) +>foo : Symbol(I1.foo, Decl(nullIsSubtypeOfEverythingButUndefined.ts, 33, 14)) var i1: I1; >i1 : Symbol(i1, Decl(nullIsSubtypeOfEverythingButUndefined.ts, 34, 3)) @@ -97,7 +97,7 @@ var r9 = true ? null : i1; class C1 { foo: number; } >C1 : Symbol(C1, Decl(nullIsSubtypeOfEverythingButUndefined.ts, 36, 26)) ->foo : Symbol(foo, Decl(nullIsSubtypeOfEverythingButUndefined.ts, 38, 10)) +>foo : Symbol(C1.foo, Decl(nullIsSubtypeOfEverythingButUndefined.ts, 38, 10)) var c1: C1; >c1 : Symbol(c1, Decl(nullIsSubtypeOfEverythingButUndefined.ts, 39, 3)) @@ -114,7 +114,7 @@ var r10 = true ? null : c1; class C2 { foo: T; } >C2 : Symbol(C2, Decl(nullIsSubtypeOfEverythingButUndefined.ts, 41, 27)) >T : Symbol(T, Decl(nullIsSubtypeOfEverythingButUndefined.ts, 43, 9)) ->foo : Symbol(foo, Decl(nullIsSubtypeOfEverythingButUndefined.ts, 43, 13)) +>foo : Symbol(C2.foo, Decl(nullIsSubtypeOfEverythingButUndefined.ts, 43, 13)) >T : Symbol(T, Decl(nullIsSubtypeOfEverythingButUndefined.ts, 43, 9)) var c2: C2; @@ -176,7 +176,7 @@ var r15 = true ? null : af; class c { baz: string } >c : Symbol(c, Decl(nullIsSubtypeOfEverythingButUndefined.ts, 61, 27), Decl(nullIsSubtypeOfEverythingButUndefined.ts, 63, 23)) ->baz : Symbol(baz, Decl(nullIsSubtypeOfEverythingButUndefined.ts, 63, 9)) +>baz : Symbol(c.baz, Decl(nullIsSubtypeOfEverythingButUndefined.ts, 63, 9)) module c { >c : Symbol(c, Decl(nullIsSubtypeOfEverythingButUndefined.ts, 61, 27), Decl(nullIsSubtypeOfEverythingButUndefined.ts, 63, 23)) diff --git a/tests/baselines/reference/numericIndexerConstraint3.symbols b/tests/baselines/reference/numericIndexerConstraint3.symbols index bdf58cb1372..5b784742ad8 100644 --- a/tests/baselines/reference/numericIndexerConstraint3.symbols +++ b/tests/baselines/reference/numericIndexerConstraint3.symbols @@ -3,7 +3,7 @@ class A { >A : Symbol(A, Decl(numericIndexerConstraint3.ts, 0, 0)) foo: number; ->foo : Symbol(foo, Decl(numericIndexerConstraint3.ts, 0, 9)) +>foo : Symbol(A.foo, Decl(numericIndexerConstraint3.ts, 0, 9)) } class B extends A { @@ -11,7 +11,7 @@ class B extends A { >A : Symbol(A, Decl(numericIndexerConstraint3.ts, 0, 0)) bar: string; ->bar : Symbol(bar, Decl(numericIndexerConstraint3.ts, 4, 19)) +>bar : Symbol(B.bar, Decl(numericIndexerConstraint3.ts, 4, 19)) } class C { diff --git a/tests/baselines/reference/numericIndexerConstraint4.symbols b/tests/baselines/reference/numericIndexerConstraint4.symbols index 63d976ea1b1..46301a6787b 100644 --- a/tests/baselines/reference/numericIndexerConstraint4.symbols +++ b/tests/baselines/reference/numericIndexerConstraint4.symbols @@ -3,7 +3,7 @@ class A { >A : Symbol(A, Decl(numericIndexerConstraint4.ts, 0, 0)) foo: number; ->foo : Symbol(foo, Decl(numericIndexerConstraint4.ts, 0, 9)) +>foo : Symbol(A.foo, Decl(numericIndexerConstraint4.ts, 0, 9)) } class B extends A { @@ -11,7 +11,7 @@ class B extends A { >A : Symbol(A, Decl(numericIndexerConstraint4.ts, 0, 0)) bar: string; ->bar : Symbol(bar, Decl(numericIndexerConstraint4.ts, 4, 19)) +>bar : Symbol(B.bar, Decl(numericIndexerConstraint4.ts, 4, 19)) } var x: { diff --git a/tests/baselines/reference/numericIndexingResults.symbols b/tests/baselines/reference/numericIndexingResults.symbols index 16a6e9386da..49a38fef567 100644 --- a/tests/baselines/reference/numericIndexingResults.symbols +++ b/tests/baselines/reference/numericIndexingResults.symbols @@ -16,12 +16,12 @@ var c: C; var r1 = c['1']; >r1 : Symbol(r1, Decl(numericIndexingResults.ts, 7, 3), Decl(numericIndexingResults.ts, 21, 3), Decl(numericIndexingResults.ts, 34, 3)) >c : Symbol(c, Decl(numericIndexingResults.ts, 6, 3)) ->'1' : Symbol(C.1, Decl(numericIndexingResults.ts, 1, 24)) +>'1' : Symbol(C[1], Decl(numericIndexingResults.ts, 1, 24)) var r2 = c['2']; >r2 : Symbol(r2, Decl(numericIndexingResults.ts, 8, 3), Decl(numericIndexingResults.ts, 22, 3), Decl(numericIndexingResults.ts, 35, 3)) >c : Symbol(c, Decl(numericIndexingResults.ts, 6, 3)) ->'2' : Symbol(C."2", Decl(numericIndexingResults.ts, 2, 11)) +>'2' : Symbol(C["2"], Decl(numericIndexingResults.ts, 2, 11)) var r3 = c['3']; >r3 : Symbol(r3, Decl(numericIndexingResults.ts, 9, 3), Decl(numericIndexingResults.ts, 23, 3), Decl(numericIndexingResults.ts, 36, 3), Decl(numericIndexingResults.ts, 44, 3), Decl(numericIndexingResults.ts, 52, 3)) @@ -30,12 +30,12 @@ var r3 = c['3']; var r4 = c[1]; >r4 : Symbol(r4, Decl(numericIndexingResults.ts, 10, 3), Decl(numericIndexingResults.ts, 24, 3), Decl(numericIndexingResults.ts, 37, 3), Decl(numericIndexingResults.ts, 45, 3), Decl(numericIndexingResults.ts, 53, 3)) >c : Symbol(c, Decl(numericIndexingResults.ts, 6, 3)) ->1 : Symbol(C.1, Decl(numericIndexingResults.ts, 1, 24)) +>1 : Symbol(C[1], Decl(numericIndexingResults.ts, 1, 24)) var r5 = c[2]; >r5 : Symbol(r5, Decl(numericIndexingResults.ts, 11, 3), Decl(numericIndexingResults.ts, 25, 3), Decl(numericIndexingResults.ts, 38, 3), Decl(numericIndexingResults.ts, 46, 3), Decl(numericIndexingResults.ts, 54, 3)) >c : Symbol(c, Decl(numericIndexingResults.ts, 6, 3)) ->2 : Symbol(C."2", Decl(numericIndexingResults.ts, 2, 11)) +>2 : Symbol(C["2"], Decl(numericIndexingResults.ts, 2, 11)) var r6 = c[3]; >r6 : Symbol(r6, Decl(numericIndexingResults.ts, 12, 3), Decl(numericIndexingResults.ts, 26, 3), Decl(numericIndexingResults.ts, 39, 3), Decl(numericIndexingResults.ts, 47, 3), Decl(numericIndexingResults.ts, 55, 3)) @@ -58,12 +58,12 @@ var i: I var r1 = i['1']; >r1 : Symbol(r1, Decl(numericIndexingResults.ts, 7, 3), Decl(numericIndexingResults.ts, 21, 3), Decl(numericIndexingResults.ts, 34, 3)) >i : Symbol(i, Decl(numericIndexingResults.ts, 20, 3)) ->'1' : Symbol(I.1, Decl(numericIndexingResults.ts, 15, 24)) +>'1' : Symbol(I[1], Decl(numericIndexingResults.ts, 15, 24)) var r2 = i['2']; >r2 : Symbol(r2, Decl(numericIndexingResults.ts, 8, 3), Decl(numericIndexingResults.ts, 22, 3), Decl(numericIndexingResults.ts, 35, 3)) >i : Symbol(i, Decl(numericIndexingResults.ts, 20, 3)) ->'2' : Symbol(I."2", Decl(numericIndexingResults.ts, 16, 14)) +>'2' : Symbol(I["2"], Decl(numericIndexingResults.ts, 16, 14)) var r3 = i['3']; >r3 : Symbol(r3, Decl(numericIndexingResults.ts, 9, 3), Decl(numericIndexingResults.ts, 23, 3), Decl(numericIndexingResults.ts, 36, 3), Decl(numericIndexingResults.ts, 44, 3), Decl(numericIndexingResults.ts, 52, 3)) @@ -72,12 +72,12 @@ var r3 = i['3']; var r4 = i[1]; >r4 : Symbol(r4, Decl(numericIndexingResults.ts, 10, 3), Decl(numericIndexingResults.ts, 24, 3), Decl(numericIndexingResults.ts, 37, 3), Decl(numericIndexingResults.ts, 45, 3), Decl(numericIndexingResults.ts, 53, 3)) >i : Symbol(i, Decl(numericIndexingResults.ts, 20, 3)) ->1 : Symbol(I.1, Decl(numericIndexingResults.ts, 15, 24)) +>1 : Symbol(I[1], Decl(numericIndexingResults.ts, 15, 24)) var r5 = i[2]; >r5 : Symbol(r5, Decl(numericIndexingResults.ts, 11, 3), Decl(numericIndexingResults.ts, 25, 3), Decl(numericIndexingResults.ts, 38, 3), Decl(numericIndexingResults.ts, 46, 3), Decl(numericIndexingResults.ts, 54, 3)) >i : Symbol(i, Decl(numericIndexingResults.ts, 20, 3)) ->2 : Symbol(I."2", Decl(numericIndexingResults.ts, 16, 14)) +>2 : Symbol(I["2"], Decl(numericIndexingResults.ts, 16, 14)) var r6 = i[3]; >r6 : Symbol(r6, Decl(numericIndexingResults.ts, 12, 3), Decl(numericIndexingResults.ts, 26, 3), Decl(numericIndexingResults.ts, 39, 3), Decl(numericIndexingResults.ts, 47, 3), Decl(numericIndexingResults.ts, 55, 3)) diff --git a/tests/baselines/reference/objectIndexer.symbols b/tests/baselines/reference/objectIndexer.symbols index 33885a40e27..56d1d4242ca 100644 --- a/tests/baselines/reference/objectIndexer.symbols +++ b/tests/baselines/reference/objectIndexer.symbols @@ -18,14 +18,14 @@ class Emitter { >Emitter : Symbol(Emitter, Decl(objectIndexer.ts, 6, 1)) private listeners: IMap; ->listeners : Symbol(listeners, Decl(objectIndexer.ts, 8, 15)) +>listeners : Symbol(Emitter.listeners, Decl(objectIndexer.ts, 8, 15)) >IMap : Symbol(IMap, Decl(objectIndexer.ts, 2, 1)) constructor () { this.listeners = {}; ->this.listeners : Symbol(listeners, Decl(objectIndexer.ts, 8, 15)) +>this.listeners : Symbol(Emitter.listeners, Decl(objectIndexer.ts, 8, 15)) >this : Symbol(Emitter, Decl(objectIndexer.ts, 6, 1)) ->listeners : Symbol(listeners, Decl(objectIndexer.ts, 8, 15)) +>listeners : Symbol(Emitter.listeners, Decl(objectIndexer.ts, 8, 15)) } } diff --git a/tests/baselines/reference/objectLiteralArraySpecialization.symbols b/tests/baselines/reference/objectLiteralArraySpecialization.symbols index 4cc1188dcc4..0b91dd4a350 100644 --- a/tests/baselines/reference/objectLiteralArraySpecialization.symbols +++ b/tests/baselines/reference/objectLiteralArraySpecialization.symbols @@ -12,12 +12,12 @@ interface MyArrayWrapper { >T : Symbol(T, Decl(objectLiteralArraySpecialization.ts, 1, 25)) constructor(initialItems?: T[]); ->constructor : Symbol(constructor, Decl(objectLiteralArraySpecialization.ts, 1, 29)) +>constructor : Symbol(MyArrayWrapper.constructor, Decl(objectLiteralArraySpecialization.ts, 1, 29)) >initialItems : Symbol(initialItems, Decl(objectLiteralArraySpecialization.ts, 2, 13)) >T : Symbol(T, Decl(objectLiteralArraySpecialization.ts, 1, 25)) doSomething(predicate: (x: T, y: T) => boolean): void; ->doSomething : Symbol(doSomething, Decl(objectLiteralArraySpecialization.ts, 2, 33)) +>doSomething : Symbol(MyArrayWrapper.doSomething, Decl(objectLiteralArraySpecialization.ts, 2, 33)) >predicate : Symbol(predicate, Decl(objectLiteralArraySpecialization.ts, 3, 13)) >x : Symbol(x, Decl(objectLiteralArraySpecialization.ts, 3, 25)) >T : Symbol(T, Decl(objectLiteralArraySpecialization.ts, 1, 25)) diff --git a/tests/baselines/reference/objectLiteralContextualTyping.symbols b/tests/baselines/reference/objectLiteralContextualTyping.symbols index 23a468eac3f..171ae48776f 100644 --- a/tests/baselines/reference/objectLiteralContextualTyping.symbols +++ b/tests/baselines/reference/objectLiteralContextualTyping.symbols @@ -8,10 +8,10 @@ interface Item { >Item : Symbol(Item, Decl(objectLiteralContextualTyping.ts, 0, 0)) name: string; ->name : Symbol(name, Decl(objectLiteralContextualTyping.ts, 5, 16)) +>name : Symbol(Item.name, Decl(objectLiteralContextualTyping.ts, 5, 16)) description?: string; ->description : Symbol(description, Decl(objectLiteralContextualTyping.ts, 6, 17)) +>description : Symbol(Item.description, Decl(objectLiteralContextualTyping.ts, 6, 17)) } declare function foo(item: Item): string; diff --git a/tests/baselines/reference/objectLiteralIndexers.symbols b/tests/baselines/reference/objectLiteralIndexers.symbols index 424e95be0fa..53e1c82aca4 100644 --- a/tests/baselines/reference/objectLiteralIndexers.symbols +++ b/tests/baselines/reference/objectLiteralIndexers.symbols @@ -3,7 +3,7 @@ interface A { >A : Symbol(A, Decl(objectLiteralIndexers.ts, 0, 0)) x: number; ->x : Symbol(x, Decl(objectLiteralIndexers.ts, 0, 13)) +>x : Symbol(A.x, Decl(objectLiteralIndexers.ts, 0, 13)) } interface B extends A { @@ -11,7 +11,7 @@ interface B extends A { >A : Symbol(A, Decl(objectLiteralIndexers.ts, 0, 0)) y: string; ->y : Symbol(y, Decl(objectLiteralIndexers.ts, 4, 23)) +>y : Symbol(B.y, Decl(objectLiteralIndexers.ts, 4, 23)) } var a: A; diff --git a/tests/baselines/reference/objectTypeHidingMembersOfObject.symbols b/tests/baselines/reference/objectTypeHidingMembersOfObject.symbols index 5c88d538fdb..b3462d920be 100644 --- a/tests/baselines/reference/objectTypeHidingMembersOfObject.symbols +++ b/tests/baselines/reference/objectTypeHidingMembersOfObject.symbols @@ -5,7 +5,7 @@ class C { >C : Symbol(C, Decl(objectTypeHidingMembersOfObject.ts, 0, 0)) valueOf() { } ->valueOf : Symbol(valueOf, Decl(objectTypeHidingMembersOfObject.ts, 2, 9)) +>valueOf : Symbol(C.valueOf, Decl(objectTypeHidingMembersOfObject.ts, 2, 9)) } var c: C; @@ -22,7 +22,7 @@ interface I { >I : Symbol(I, Decl(objectTypeHidingMembersOfObject.ts, 7, 27)) valueOf(): void; ->valueOf : Symbol(valueOf, Decl(objectTypeHidingMembersOfObject.ts, 9, 13)) +>valueOf : Symbol(I.valueOf, Decl(objectTypeHidingMembersOfObject.ts, 9, 13)) } var i: I; diff --git a/tests/baselines/reference/objectTypePropertyAccess.symbols b/tests/baselines/reference/objectTypePropertyAccess.symbols index 2117b9ce35a..072ddf5f476 100644 --- a/tests/baselines/reference/objectTypePropertyAccess.symbols +++ b/tests/baselines/reference/objectTypePropertyAccess.symbols @@ -4,7 +4,7 @@ class C { >C : Symbol(C, Decl(objectTypePropertyAccess.ts, 0, 0)) foo: string; ->foo : Symbol(foo, Decl(objectTypePropertyAccess.ts, 1, 9)) +>foo : Symbol(C.foo, Decl(objectTypePropertyAccess.ts, 1, 9)) } var c: C; @@ -37,7 +37,7 @@ interface I { >I : Symbol(I, Decl(objectTypePropertyAccess.ts, 9, 18)) bar: string; ->bar : Symbol(bar, Decl(objectTypePropertyAccess.ts, 11, 13)) +>bar : Symbol(I.bar, Decl(objectTypePropertyAccess.ts, 11, 13)) } var i: I; >i : Symbol(i, Decl(objectTypePropertyAccess.ts, 14, 3)) diff --git a/tests/baselines/reference/objectTypeWithCallSignatureAppearsToBeFunctionType.types b/tests/baselines/reference/objectTypeWithCallSignatureAppearsToBeFunctionType.types index 74d8ef57d67..80408cff962 100644 --- a/tests/baselines/reference/objectTypeWithCallSignatureAppearsToBeFunctionType.types +++ b/tests/baselines/reference/objectTypeWithCallSignatureAppearsToBeFunctionType.types @@ -21,9 +21,9 @@ var r2b: (x: any, y?: any) => any = i.apply; >r2b : (x: any, y?: any) => any >x : any >y : any ->i.apply : (thisArg: any, argArray?: any) => any +>i.apply : (this: Function, thisArg: any, argArray?: any) => any >i : I ->apply : (thisArg: any, argArray?: any) => any +>apply : (this: Function, thisArg: any, argArray?: any) => any var b: { >b : () => void @@ -40,7 +40,7 @@ var rb4: (x: any, y?: any) => any = b.apply; >rb4 : (x: any, y?: any) => any >x : any >y : any ->b.apply : (thisArg: any, argArray?: any) => any +>b.apply : (this: Function, thisArg: any, argArray?: any) => any >b : () => void ->apply : (thisArg: any, argArray?: any) => any +>apply : (this: Function, thisArg: any, argArray?: any) => any diff --git a/tests/baselines/reference/objectTypeWithCallSignatureHidingMembersOfExtendedFunction.symbols b/tests/baselines/reference/objectTypeWithCallSignatureHidingMembersOfExtendedFunction.symbols index 2d80be5f4ea..8700c3a042f 100644 --- a/tests/baselines/reference/objectTypeWithCallSignatureHidingMembersOfExtendedFunction.symbols +++ b/tests/baselines/reference/objectTypeWithCallSignatureHidingMembersOfExtendedFunction.symbols @@ -6,7 +6,7 @@ interface Function { >Function : Symbol(Function, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(objectTypeWithCallSignatureHidingMembersOfExtendedFunction.ts, 0, 0)) data: number; ->data : Symbol(data, Decl(objectTypeWithCallSignatureHidingMembersOfExtendedFunction.ts, 3, 20)) +>data : Symbol(Function.data, Decl(objectTypeWithCallSignatureHidingMembersOfExtendedFunction.ts, 3, 20)) [x: string]: Object; >x : Symbol(x, Decl(objectTypeWithCallSignatureHidingMembersOfExtendedFunction.ts, 5, 5)) @@ -18,12 +18,12 @@ interface I { (): void; apply(a: any, b?: any): void; ->apply : Symbol(apply, Decl(objectTypeWithCallSignatureHidingMembersOfExtendedFunction.ts, 9, 13)) +>apply : Symbol(I.apply, Decl(objectTypeWithCallSignatureHidingMembersOfExtendedFunction.ts, 9, 13)) >a : Symbol(a, Decl(objectTypeWithCallSignatureHidingMembersOfExtendedFunction.ts, 10, 10)) >b : Symbol(b, Decl(objectTypeWithCallSignatureHidingMembersOfExtendedFunction.ts, 10, 17)) call(thisArg: number, ...argArray: number[]): any; ->call : Symbol(call, Decl(objectTypeWithCallSignatureHidingMembersOfExtendedFunction.ts, 10, 33)) +>call : Symbol(I.call, Decl(objectTypeWithCallSignatureHidingMembersOfExtendedFunction.ts, 10, 33)) >thisArg : Symbol(thisArg, Decl(objectTypeWithCallSignatureHidingMembersOfExtendedFunction.ts, 11, 9)) >argArray : Symbol(argArray, Decl(objectTypeWithCallSignatureHidingMembersOfExtendedFunction.ts, 11, 25)) } diff --git a/tests/baselines/reference/objectTypeWithCallSignatureHidingMembersOfFunction.symbols b/tests/baselines/reference/objectTypeWithCallSignatureHidingMembersOfFunction.symbols index 07b0ca1a9c1..96cb451f861 100644 --- a/tests/baselines/reference/objectTypeWithCallSignatureHidingMembersOfFunction.symbols +++ b/tests/baselines/reference/objectTypeWithCallSignatureHidingMembersOfFunction.symbols @@ -7,12 +7,12 @@ interface I { (): void; apply(a: any, b?: any): void; ->apply : Symbol(apply, Decl(objectTypeWithCallSignatureHidingMembersOfFunction.ts, 4, 13)) +>apply : Symbol(I.apply, Decl(objectTypeWithCallSignatureHidingMembersOfFunction.ts, 4, 13)) >a : Symbol(a, Decl(objectTypeWithCallSignatureHidingMembersOfFunction.ts, 5, 10)) >b : Symbol(b, Decl(objectTypeWithCallSignatureHidingMembersOfFunction.ts, 5, 17)) call(thisArg: number, ...argArray: number[]): any; ->call : Symbol(call, Decl(objectTypeWithCallSignatureHidingMembersOfFunction.ts, 5, 33)) +>call : Symbol(I.call, Decl(objectTypeWithCallSignatureHidingMembersOfFunction.ts, 5, 33)) >thisArg : Symbol(thisArg, Decl(objectTypeWithCallSignatureHidingMembersOfFunction.ts, 6, 9)) >argArray : Symbol(argArray, Decl(objectTypeWithCallSignatureHidingMembersOfFunction.ts, 6, 25)) } diff --git a/tests/baselines/reference/objectTypeWithConstructSignatureHidingMembersOfExtendedFunction.symbols b/tests/baselines/reference/objectTypeWithConstructSignatureHidingMembersOfExtendedFunction.symbols index 009291b0fb3..70175ae0d73 100644 --- a/tests/baselines/reference/objectTypeWithConstructSignatureHidingMembersOfExtendedFunction.symbols +++ b/tests/baselines/reference/objectTypeWithConstructSignatureHidingMembersOfExtendedFunction.symbols @@ -3,7 +3,7 @@ interface Function { >Function : Symbol(Function, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(objectTypeWithConstructSignatureHidingMembersOfExtendedFunction.ts, 0, 0)) data: number; ->data : Symbol(data, Decl(objectTypeWithConstructSignatureHidingMembersOfExtendedFunction.ts, 0, 20)) +>data : Symbol(Function.data, Decl(objectTypeWithConstructSignatureHidingMembersOfExtendedFunction.ts, 0, 20)) [x: string]: Object; >x : Symbol(x, Decl(objectTypeWithConstructSignatureHidingMembersOfExtendedFunction.ts, 2, 5)) @@ -15,12 +15,12 @@ interface I { new(): number; apply(a: any, b?: any): void; ->apply : Symbol(apply, Decl(objectTypeWithConstructSignatureHidingMembersOfExtendedFunction.ts, 6, 18)) +>apply : Symbol(I.apply, Decl(objectTypeWithConstructSignatureHidingMembersOfExtendedFunction.ts, 6, 18)) >a : Symbol(a, Decl(objectTypeWithConstructSignatureHidingMembersOfExtendedFunction.ts, 7, 10)) >b : Symbol(b, Decl(objectTypeWithConstructSignatureHidingMembersOfExtendedFunction.ts, 7, 17)) call(thisArg: number, ...argArray: number[]): any; ->call : Symbol(call, Decl(objectTypeWithConstructSignatureHidingMembersOfExtendedFunction.ts, 7, 33)) +>call : Symbol(I.call, Decl(objectTypeWithConstructSignatureHidingMembersOfExtendedFunction.ts, 7, 33)) >thisArg : Symbol(thisArg, Decl(objectTypeWithConstructSignatureHidingMembersOfExtendedFunction.ts, 8, 9)) >argArray : Symbol(argArray, Decl(objectTypeWithConstructSignatureHidingMembersOfExtendedFunction.ts, 8, 25)) } diff --git a/tests/baselines/reference/objectTypeWithConstructSignatureHidingMembersOfFunction.symbols b/tests/baselines/reference/objectTypeWithConstructSignatureHidingMembersOfFunction.symbols index c623bcb6f63..9d128975147 100644 --- a/tests/baselines/reference/objectTypeWithConstructSignatureHidingMembersOfFunction.symbols +++ b/tests/baselines/reference/objectTypeWithConstructSignatureHidingMembersOfFunction.symbols @@ -4,12 +4,12 @@ interface I { new(): number; apply(a: any, b?: any): void; ->apply : Symbol(apply, Decl(objectTypeWithConstructSignatureHidingMembersOfFunction.ts, 1, 18)) +>apply : Symbol(I.apply, Decl(objectTypeWithConstructSignatureHidingMembersOfFunction.ts, 1, 18)) >a : Symbol(a, Decl(objectTypeWithConstructSignatureHidingMembersOfFunction.ts, 2, 10)) >b : Symbol(b, Decl(objectTypeWithConstructSignatureHidingMembersOfFunction.ts, 2, 17)) call(thisArg: number, ...argArray: number[]): any; ->call : Symbol(call, Decl(objectTypeWithConstructSignatureHidingMembersOfFunction.ts, 2, 33)) +>call : Symbol(I.call, Decl(objectTypeWithConstructSignatureHidingMembersOfFunction.ts, 2, 33)) >thisArg : Symbol(thisArg, Decl(objectTypeWithConstructSignatureHidingMembersOfFunction.ts, 3, 9)) >argArray : Symbol(argArray, Decl(objectTypeWithConstructSignatureHidingMembersOfFunction.ts, 3, 25)) } diff --git a/tests/baselines/reference/objectTypeWithNumericProperty.symbols b/tests/baselines/reference/objectTypeWithNumericProperty.symbols index 20e54fe1c64..73ff7149d0f 100644 --- a/tests/baselines/reference/objectTypeWithNumericProperty.symbols +++ b/tests/baselines/reference/objectTypeWithNumericProperty.symbols @@ -15,22 +15,22 @@ var c: C; var r1 = c[1]; >r1 : Symbol(r1, Decl(objectTypeWithNumericProperty.ts, 8, 3), Decl(objectTypeWithNumericProperty.ts, 19, 3), Decl(objectTypeWithNumericProperty.ts, 29, 3), Decl(objectTypeWithNumericProperty.ts, 39, 3)) >c : Symbol(c, Decl(objectTypeWithNumericProperty.ts, 7, 3)) ->1 : Symbol(C.1, Decl(objectTypeWithNumericProperty.ts, 2, 9)) +>1 : Symbol(C[1], Decl(objectTypeWithNumericProperty.ts, 2, 9)) var r2 = c[1.1]; >r2 : Symbol(r2, Decl(objectTypeWithNumericProperty.ts, 9, 3), Decl(objectTypeWithNumericProperty.ts, 20, 3), Decl(objectTypeWithNumericProperty.ts, 30, 3), Decl(objectTypeWithNumericProperty.ts, 40, 3)) >c : Symbol(c, Decl(objectTypeWithNumericProperty.ts, 7, 3)) ->1.1 : Symbol(C.1.1, Decl(objectTypeWithNumericProperty.ts, 3, 14)) +>1.1 : Symbol(C[1.1], Decl(objectTypeWithNumericProperty.ts, 3, 14)) var r3 = c['1']; >r3 : Symbol(r3, Decl(objectTypeWithNumericProperty.ts, 10, 3), Decl(objectTypeWithNumericProperty.ts, 21, 3), Decl(objectTypeWithNumericProperty.ts, 31, 3), Decl(objectTypeWithNumericProperty.ts, 41, 3)) >c : Symbol(c, Decl(objectTypeWithNumericProperty.ts, 7, 3)) ->'1' : Symbol(C.1, Decl(objectTypeWithNumericProperty.ts, 2, 9)) +>'1' : Symbol(C[1], Decl(objectTypeWithNumericProperty.ts, 2, 9)) var r4 = c['1.1']; >r4 : Symbol(r4, Decl(objectTypeWithNumericProperty.ts, 11, 3), Decl(objectTypeWithNumericProperty.ts, 22, 3), Decl(objectTypeWithNumericProperty.ts, 32, 3), Decl(objectTypeWithNumericProperty.ts, 42, 3)) >c : Symbol(c, Decl(objectTypeWithNumericProperty.ts, 7, 3)) ->'1.1' : Symbol(C.1.1, Decl(objectTypeWithNumericProperty.ts, 3, 14)) +>'1.1' : Symbol(C[1.1], Decl(objectTypeWithNumericProperty.ts, 3, 14)) interface I { >I : Symbol(I, Decl(objectTypeWithNumericProperty.ts, 11, 18)) @@ -46,22 +46,22 @@ var i: I; var r1 = i[1]; >r1 : Symbol(r1, Decl(objectTypeWithNumericProperty.ts, 8, 3), Decl(objectTypeWithNumericProperty.ts, 19, 3), Decl(objectTypeWithNumericProperty.ts, 29, 3), Decl(objectTypeWithNumericProperty.ts, 39, 3)) >i : Symbol(i, Decl(objectTypeWithNumericProperty.ts, 18, 3)) ->1 : Symbol(I.1, Decl(objectTypeWithNumericProperty.ts, 13, 13)) +>1 : Symbol(I[1], Decl(objectTypeWithNumericProperty.ts, 13, 13)) var r2 = i[1.1]; >r2 : Symbol(r2, Decl(objectTypeWithNumericProperty.ts, 9, 3), Decl(objectTypeWithNumericProperty.ts, 20, 3), Decl(objectTypeWithNumericProperty.ts, 30, 3), Decl(objectTypeWithNumericProperty.ts, 40, 3)) >i : Symbol(i, Decl(objectTypeWithNumericProperty.ts, 18, 3)) ->1.1 : Symbol(I.1.1, Decl(objectTypeWithNumericProperty.ts, 14, 14)) +>1.1 : Symbol(I[1.1], Decl(objectTypeWithNumericProperty.ts, 14, 14)) var r3 = i['1']; >r3 : Symbol(r3, Decl(objectTypeWithNumericProperty.ts, 10, 3), Decl(objectTypeWithNumericProperty.ts, 21, 3), Decl(objectTypeWithNumericProperty.ts, 31, 3), Decl(objectTypeWithNumericProperty.ts, 41, 3)) >i : Symbol(i, Decl(objectTypeWithNumericProperty.ts, 18, 3)) ->'1' : Symbol(I.1, Decl(objectTypeWithNumericProperty.ts, 13, 13)) +>'1' : Symbol(I[1], Decl(objectTypeWithNumericProperty.ts, 13, 13)) var r4 = i['1.1']; >r4 : Symbol(r4, Decl(objectTypeWithNumericProperty.ts, 11, 3), Decl(objectTypeWithNumericProperty.ts, 22, 3), Decl(objectTypeWithNumericProperty.ts, 32, 3), Decl(objectTypeWithNumericProperty.ts, 42, 3)) >i : Symbol(i, Decl(objectTypeWithNumericProperty.ts, 18, 3)) ->'1.1' : Symbol(I.1.1, Decl(objectTypeWithNumericProperty.ts, 14, 14)) +>'1.1' : Symbol(I[1.1], Decl(objectTypeWithNumericProperty.ts, 14, 14)) var a: { >a : Symbol(a, Decl(objectTypeWithNumericProperty.ts, 24, 3)) diff --git a/tests/baselines/reference/objectTypeWithStringNamedNumericProperty.symbols b/tests/baselines/reference/objectTypeWithStringNamedNumericProperty.symbols index d3c463d9a15..480886711d5 100644 --- a/tests/baselines/reference/objectTypeWithStringNamedNumericProperty.symbols +++ b/tests/baselines/reference/objectTypeWithStringNamedNumericProperty.symbols @@ -15,13 +15,13 @@ class C { "1.": string; "1..": boolean; "1.0": Date; ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) "-1.0": RegExp; >RegExp : Symbol(RegExp, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) "-1": Date; ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) } var c: C; @@ -31,47 +31,47 @@ var c: C; var r1 = c['0.1']; >r1 : Symbol(r1, Decl(objectTypeWithStringNamedNumericProperty.ts, 17, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 48, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 78, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 108, 3)) >c : Symbol(c, Decl(objectTypeWithStringNamedNumericProperty.ts, 16, 3)) ->'0.1' : Symbol(C."0.1", Decl(objectTypeWithStringNamedNumericProperty.ts, 5, 9)) +>'0.1' : Symbol(C["0.1"], Decl(objectTypeWithStringNamedNumericProperty.ts, 5, 9)) var r2 = c['.1']; >r2 : Symbol(r2, Decl(objectTypeWithStringNamedNumericProperty.ts, 18, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 49, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 79, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 109, 3)) >c : Symbol(c, Decl(objectTypeWithStringNamedNumericProperty.ts, 16, 3)) ->'.1' : Symbol(C.".1", Decl(objectTypeWithStringNamedNumericProperty.ts, 6, 16)) +>'.1' : Symbol(C[".1"], Decl(objectTypeWithStringNamedNumericProperty.ts, 6, 16)) var r3 = c['1']; >r3 : Symbol(r3, Decl(objectTypeWithStringNamedNumericProperty.ts, 19, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 20, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 22, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 25, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 50, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 51, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 53, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 56, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 80, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 81, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 83, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 86, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 110, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 111, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 113, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 116, 3)) >c : Symbol(c, Decl(objectTypeWithStringNamedNumericProperty.ts, 16, 3)) ->'1' : Symbol(C."1", Decl(objectTypeWithStringNamedNumericProperty.ts, 7, 17)) +>'1' : Symbol(C["1"], Decl(objectTypeWithStringNamedNumericProperty.ts, 7, 17)) var r3 = c[1]; >r3 : Symbol(r3, Decl(objectTypeWithStringNamedNumericProperty.ts, 19, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 20, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 22, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 25, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 50, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 51, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 53, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 56, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 80, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 81, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 83, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 86, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 110, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 111, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 113, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 116, 3)) >c : Symbol(c, Decl(objectTypeWithStringNamedNumericProperty.ts, 16, 3)) ->1 : Symbol(C."1", Decl(objectTypeWithStringNamedNumericProperty.ts, 7, 17)) +>1 : Symbol(C["1"], Decl(objectTypeWithStringNamedNumericProperty.ts, 7, 17)) var r4 = c['1.']; >r4 : Symbol(r4, Decl(objectTypeWithStringNamedNumericProperty.ts, 21, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 52, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 82, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 112, 3)) >c : Symbol(c, Decl(objectTypeWithStringNamedNumericProperty.ts, 16, 3)) ->'1.' : Symbol(C."1.", Decl(objectTypeWithStringNamedNumericProperty.ts, 8, 16)) +>'1.' : Symbol(C["1."], Decl(objectTypeWithStringNamedNumericProperty.ts, 8, 16)) var r3 = c[1.]; // same as indexing by 1 when done numerically >r3 : Symbol(r3, Decl(objectTypeWithStringNamedNumericProperty.ts, 19, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 20, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 22, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 25, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 50, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 51, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 53, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 56, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 80, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 81, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 83, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 86, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 110, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 111, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 113, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 116, 3)) >c : Symbol(c, Decl(objectTypeWithStringNamedNumericProperty.ts, 16, 3)) ->1. : Symbol(C."1", Decl(objectTypeWithStringNamedNumericProperty.ts, 7, 17)) +>1. : Symbol(C["1"], Decl(objectTypeWithStringNamedNumericProperty.ts, 7, 17)) var r5 = c['1..']; >r5 : Symbol(r5, Decl(objectTypeWithStringNamedNumericProperty.ts, 23, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 54, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 84, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 114, 3)) >c : Symbol(c, Decl(objectTypeWithStringNamedNumericProperty.ts, 16, 3)) ->'1..' : Symbol(C."1..", Decl(objectTypeWithStringNamedNumericProperty.ts, 9, 17)) +>'1..' : Symbol(C["1.."], Decl(objectTypeWithStringNamedNumericProperty.ts, 9, 17)) var r6 = c['1.0']; >r6 : Symbol(r6, Decl(objectTypeWithStringNamedNumericProperty.ts, 24, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 55, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 85, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 115, 3)) >c : Symbol(c, Decl(objectTypeWithStringNamedNumericProperty.ts, 16, 3)) ->'1.0' : Symbol(C."1.0", Decl(objectTypeWithStringNamedNumericProperty.ts, 10, 19)) +>'1.0' : Symbol(C["1.0"], Decl(objectTypeWithStringNamedNumericProperty.ts, 10, 19)) var r3 = c[1.0]; // same as indexing by 1 when done numerically >r3 : Symbol(r3, Decl(objectTypeWithStringNamedNumericProperty.ts, 19, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 20, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 22, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 25, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 50, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 51, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 53, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 56, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 80, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 81, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 83, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 86, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 110, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 111, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 113, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 116, 3)) >c : Symbol(c, Decl(objectTypeWithStringNamedNumericProperty.ts, 16, 3)) ->1.0 : Symbol(C."1", Decl(objectTypeWithStringNamedNumericProperty.ts, 7, 17)) +>1.0 : Symbol(C["1"], Decl(objectTypeWithStringNamedNumericProperty.ts, 7, 17)) // BUG 823822 var r7 = i[-1]; @@ -85,17 +85,17 @@ var r7 = i[-1.0]; var r8 = i["-1.0"]; >r8 : Symbol(r8, Decl(objectTypeWithStringNamedNumericProperty.ts, 29, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 60, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 90, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 120, 3)) >i : Symbol(i, Decl(objectTypeWithStringNamedNumericProperty.ts, 47, 3)) ->"-1.0" : Symbol(I."-1.0", Decl(objectTypeWithStringNamedNumericProperty.ts, 42, 16)) +>"-1.0" : Symbol(I["-1.0"], Decl(objectTypeWithStringNamedNumericProperty.ts, 42, 16)) var r9 = i["-1"]; >r9 : Symbol(r9, Decl(objectTypeWithStringNamedNumericProperty.ts, 30, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 61, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 91, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 121, 3)) >i : Symbol(i, Decl(objectTypeWithStringNamedNumericProperty.ts, 47, 3)) ->"-1" : Symbol(I."-1", Decl(objectTypeWithStringNamedNumericProperty.ts, 43, 19)) +>"-1" : Symbol(I["-1"], Decl(objectTypeWithStringNamedNumericProperty.ts, 43, 19)) var r10 = i[0x1] >r10 : Symbol(r10, Decl(objectTypeWithStringNamedNumericProperty.ts, 31, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 62, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 92, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 122, 3)) >i : Symbol(i, Decl(objectTypeWithStringNamedNumericProperty.ts, 47, 3)) ->0x1 : Symbol(I."1", Decl(objectTypeWithStringNamedNumericProperty.ts, 38, 17)) +>0x1 : Symbol(I["1"], Decl(objectTypeWithStringNamedNumericProperty.ts, 38, 17)) var r11 = i[-0x1] >r11 : Symbol(r11, Decl(objectTypeWithStringNamedNumericProperty.ts, 32, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 63, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 93, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 123, 3)) @@ -104,7 +104,7 @@ var r11 = i[-0x1] var r12 = i[01] >r12 : Symbol(r12, Decl(objectTypeWithStringNamedNumericProperty.ts, 33, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 64, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 94, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 124, 3)) >i : Symbol(i, Decl(objectTypeWithStringNamedNumericProperty.ts, 47, 3)) ->01 : Symbol(I."1", Decl(objectTypeWithStringNamedNumericProperty.ts, 38, 17)) +>01 : Symbol(I["1"], Decl(objectTypeWithStringNamedNumericProperty.ts, 38, 17)) var r13 = i[-01] >r13 : Symbol(r13, Decl(objectTypeWithStringNamedNumericProperty.ts, 34, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 65, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 95, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 125, 3)) @@ -121,13 +121,13 @@ interface I { "1.": string; "1..": boolean; "1.0": Date; ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) "-1.0": RegExp; >RegExp : Symbol(RegExp, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) "-1": Date; ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) } var i: I; @@ -137,47 +137,47 @@ var i: I; var r1 = i['0.1']; >r1 : Symbol(r1, Decl(objectTypeWithStringNamedNumericProperty.ts, 17, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 48, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 78, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 108, 3)) >i : Symbol(i, Decl(objectTypeWithStringNamedNumericProperty.ts, 47, 3)) ->'0.1' : Symbol(I."0.1", Decl(objectTypeWithStringNamedNumericProperty.ts, 36, 13)) +>'0.1' : Symbol(I["0.1"], Decl(objectTypeWithStringNamedNumericProperty.ts, 36, 13)) var r2 = i['.1']; >r2 : Symbol(r2, Decl(objectTypeWithStringNamedNumericProperty.ts, 18, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 49, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 79, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 109, 3)) >i : Symbol(i, Decl(objectTypeWithStringNamedNumericProperty.ts, 47, 3)) ->'.1' : Symbol(I.".1", Decl(objectTypeWithStringNamedNumericProperty.ts, 37, 16)) +>'.1' : Symbol(I[".1"], Decl(objectTypeWithStringNamedNumericProperty.ts, 37, 16)) var r3 = i['1']; >r3 : Symbol(r3, Decl(objectTypeWithStringNamedNumericProperty.ts, 19, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 20, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 22, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 25, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 50, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 51, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 53, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 56, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 80, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 81, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 83, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 86, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 110, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 111, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 113, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 116, 3)) >i : Symbol(i, Decl(objectTypeWithStringNamedNumericProperty.ts, 47, 3)) ->'1' : Symbol(I."1", Decl(objectTypeWithStringNamedNumericProperty.ts, 38, 17)) +>'1' : Symbol(I["1"], Decl(objectTypeWithStringNamedNumericProperty.ts, 38, 17)) var r3 = c[1]; >r3 : Symbol(r3, Decl(objectTypeWithStringNamedNumericProperty.ts, 19, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 20, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 22, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 25, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 50, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 51, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 53, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 56, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 80, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 81, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 83, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 86, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 110, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 111, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 113, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 116, 3)) >c : Symbol(c, Decl(objectTypeWithStringNamedNumericProperty.ts, 16, 3)) ->1 : Symbol(C."1", Decl(objectTypeWithStringNamedNumericProperty.ts, 7, 17)) +>1 : Symbol(C["1"], Decl(objectTypeWithStringNamedNumericProperty.ts, 7, 17)) var r4 = i['1.']; >r4 : Symbol(r4, Decl(objectTypeWithStringNamedNumericProperty.ts, 21, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 52, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 82, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 112, 3)) >i : Symbol(i, Decl(objectTypeWithStringNamedNumericProperty.ts, 47, 3)) ->'1.' : Symbol(I."1.", Decl(objectTypeWithStringNamedNumericProperty.ts, 39, 16)) +>'1.' : Symbol(I["1."], Decl(objectTypeWithStringNamedNumericProperty.ts, 39, 16)) var r3 = c[1.]; // same as indexing by 1 when done numerically >r3 : Symbol(r3, Decl(objectTypeWithStringNamedNumericProperty.ts, 19, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 20, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 22, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 25, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 50, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 51, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 53, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 56, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 80, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 81, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 83, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 86, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 110, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 111, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 113, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 116, 3)) >c : Symbol(c, Decl(objectTypeWithStringNamedNumericProperty.ts, 16, 3)) ->1. : Symbol(C."1", Decl(objectTypeWithStringNamedNumericProperty.ts, 7, 17)) +>1. : Symbol(C["1"], Decl(objectTypeWithStringNamedNumericProperty.ts, 7, 17)) var r5 = i['1..']; >r5 : Symbol(r5, Decl(objectTypeWithStringNamedNumericProperty.ts, 23, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 54, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 84, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 114, 3)) >i : Symbol(i, Decl(objectTypeWithStringNamedNumericProperty.ts, 47, 3)) ->'1..' : Symbol(I."1..", Decl(objectTypeWithStringNamedNumericProperty.ts, 40, 17)) +>'1..' : Symbol(I["1.."], Decl(objectTypeWithStringNamedNumericProperty.ts, 40, 17)) var r6 = i['1.0']; >r6 : Symbol(r6, Decl(objectTypeWithStringNamedNumericProperty.ts, 24, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 55, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 85, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 115, 3)) >i : Symbol(i, Decl(objectTypeWithStringNamedNumericProperty.ts, 47, 3)) ->'1.0' : Symbol(I."1.0", Decl(objectTypeWithStringNamedNumericProperty.ts, 41, 19)) +>'1.0' : Symbol(I["1.0"], Decl(objectTypeWithStringNamedNumericProperty.ts, 41, 19)) var r3 = c[1.0]; // same as indexing by 1 when done numerically >r3 : Symbol(r3, Decl(objectTypeWithStringNamedNumericProperty.ts, 19, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 20, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 22, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 25, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 50, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 51, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 53, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 56, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 80, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 81, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 83, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 86, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 110, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 111, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 113, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 116, 3)) >c : Symbol(c, Decl(objectTypeWithStringNamedNumericProperty.ts, 16, 3)) ->1.0 : Symbol(C."1", Decl(objectTypeWithStringNamedNumericProperty.ts, 7, 17)) +>1.0 : Symbol(C["1"], Decl(objectTypeWithStringNamedNumericProperty.ts, 7, 17)) // BUG 823822 var r7 = i[-1]; @@ -191,17 +191,17 @@ var r7 = i[-1.0]; var r8 = i["-1.0"]; >r8 : Symbol(r8, Decl(objectTypeWithStringNamedNumericProperty.ts, 29, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 60, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 90, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 120, 3)) >i : Symbol(i, Decl(objectTypeWithStringNamedNumericProperty.ts, 47, 3)) ->"-1.0" : Symbol(I."-1.0", Decl(objectTypeWithStringNamedNumericProperty.ts, 42, 16)) +>"-1.0" : Symbol(I["-1.0"], Decl(objectTypeWithStringNamedNumericProperty.ts, 42, 16)) var r9 = i["-1"]; >r9 : Symbol(r9, Decl(objectTypeWithStringNamedNumericProperty.ts, 30, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 61, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 91, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 121, 3)) >i : Symbol(i, Decl(objectTypeWithStringNamedNumericProperty.ts, 47, 3)) ->"-1" : Symbol(I."-1", Decl(objectTypeWithStringNamedNumericProperty.ts, 43, 19)) +>"-1" : Symbol(I["-1"], Decl(objectTypeWithStringNamedNumericProperty.ts, 43, 19)) var r10 = i[0x1] >r10 : Symbol(r10, Decl(objectTypeWithStringNamedNumericProperty.ts, 31, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 62, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 92, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 122, 3)) >i : Symbol(i, Decl(objectTypeWithStringNamedNumericProperty.ts, 47, 3)) ->0x1 : Symbol(I."1", Decl(objectTypeWithStringNamedNumericProperty.ts, 38, 17)) +>0x1 : Symbol(I["1"], Decl(objectTypeWithStringNamedNumericProperty.ts, 38, 17)) var r11 = i[-0x1] >r11 : Symbol(r11, Decl(objectTypeWithStringNamedNumericProperty.ts, 32, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 63, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 93, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 123, 3)) @@ -210,7 +210,7 @@ var r11 = i[-0x1] var r12 = i[01] >r12 : Symbol(r12, Decl(objectTypeWithStringNamedNumericProperty.ts, 33, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 64, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 94, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 124, 3)) >i : Symbol(i, Decl(objectTypeWithStringNamedNumericProperty.ts, 47, 3)) ->01 : Symbol(I."1", Decl(objectTypeWithStringNamedNumericProperty.ts, 38, 17)) +>01 : Symbol(I["1"], Decl(objectTypeWithStringNamedNumericProperty.ts, 38, 17)) var r13 = i[-01] >r13 : Symbol(r13, Decl(objectTypeWithStringNamedNumericProperty.ts, 34, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 65, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 95, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 125, 3)) @@ -227,13 +227,13 @@ var a: { "1.": string; "1..": boolean; "1.0": Date; ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) "-1.0": RegExp; >RegExp : Symbol(RegExp, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) "-1": Date; ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) } var r1 = a['0.1']; @@ -254,7 +254,7 @@ var r3 = a['1']; var r3 = c[1]; >r3 : Symbol(r3, Decl(objectTypeWithStringNamedNumericProperty.ts, 19, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 20, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 22, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 25, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 50, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 51, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 53, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 56, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 80, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 81, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 83, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 86, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 110, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 111, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 113, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 116, 3)) >c : Symbol(c, Decl(objectTypeWithStringNamedNumericProperty.ts, 16, 3)) ->1 : Symbol(C."1", Decl(objectTypeWithStringNamedNumericProperty.ts, 7, 17)) +>1 : Symbol(C["1"], Decl(objectTypeWithStringNamedNumericProperty.ts, 7, 17)) var r4 = a['1.']; >r4 : Symbol(r4, Decl(objectTypeWithStringNamedNumericProperty.ts, 21, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 52, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 82, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 112, 3)) @@ -264,7 +264,7 @@ var r4 = a['1.']; var r3 = c[1.]; // same as indexing by 1 when done numerically >r3 : Symbol(r3, Decl(objectTypeWithStringNamedNumericProperty.ts, 19, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 20, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 22, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 25, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 50, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 51, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 53, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 56, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 80, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 81, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 83, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 86, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 110, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 111, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 113, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 116, 3)) >c : Symbol(c, Decl(objectTypeWithStringNamedNumericProperty.ts, 16, 3)) ->1. : Symbol(C."1", Decl(objectTypeWithStringNamedNumericProperty.ts, 7, 17)) +>1. : Symbol(C["1"], Decl(objectTypeWithStringNamedNumericProperty.ts, 7, 17)) var r5 = a['1..']; >r5 : Symbol(r5, Decl(objectTypeWithStringNamedNumericProperty.ts, 23, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 54, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 84, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 114, 3)) @@ -279,7 +279,7 @@ var r6 = a['1.0']; var r3 = c[1.0]; // same as indexing by 1 when done numerically >r3 : Symbol(r3, Decl(objectTypeWithStringNamedNumericProperty.ts, 19, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 20, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 22, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 25, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 50, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 51, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 53, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 56, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 80, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 81, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 83, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 86, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 110, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 111, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 113, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 116, 3)) >c : Symbol(c, Decl(objectTypeWithStringNamedNumericProperty.ts, 16, 3)) ->1.0 : Symbol(C."1", Decl(objectTypeWithStringNamedNumericProperty.ts, 7, 17)) +>1.0 : Symbol(C["1"], Decl(objectTypeWithStringNamedNumericProperty.ts, 7, 17)) // BUG 823822 var r7 = i[-1]; @@ -293,17 +293,17 @@ var r7 = i[-1.0]; var r8 = i["-1.0"]; >r8 : Symbol(r8, Decl(objectTypeWithStringNamedNumericProperty.ts, 29, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 60, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 90, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 120, 3)) >i : Symbol(i, Decl(objectTypeWithStringNamedNumericProperty.ts, 47, 3)) ->"-1.0" : Symbol(I."-1.0", Decl(objectTypeWithStringNamedNumericProperty.ts, 42, 16)) +>"-1.0" : Symbol(I["-1.0"], Decl(objectTypeWithStringNamedNumericProperty.ts, 42, 16)) var r9 = i["-1"]; >r9 : Symbol(r9, Decl(objectTypeWithStringNamedNumericProperty.ts, 30, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 61, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 91, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 121, 3)) >i : Symbol(i, Decl(objectTypeWithStringNamedNumericProperty.ts, 47, 3)) ->"-1" : Symbol(I."-1", Decl(objectTypeWithStringNamedNumericProperty.ts, 43, 19)) +>"-1" : Symbol(I["-1"], Decl(objectTypeWithStringNamedNumericProperty.ts, 43, 19)) var r10 = i[0x1] >r10 : Symbol(r10, Decl(objectTypeWithStringNamedNumericProperty.ts, 31, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 62, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 92, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 122, 3)) >i : Symbol(i, Decl(objectTypeWithStringNamedNumericProperty.ts, 47, 3)) ->0x1 : Symbol(I."1", Decl(objectTypeWithStringNamedNumericProperty.ts, 38, 17)) +>0x1 : Symbol(I["1"], Decl(objectTypeWithStringNamedNumericProperty.ts, 38, 17)) var r11 = i[-0x1] >r11 : Symbol(r11, Decl(objectTypeWithStringNamedNumericProperty.ts, 32, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 63, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 93, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 123, 3)) @@ -312,7 +312,7 @@ var r11 = i[-0x1] var r12 = i[01] >r12 : Symbol(r12, Decl(objectTypeWithStringNamedNumericProperty.ts, 33, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 64, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 94, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 124, 3)) >i : Symbol(i, Decl(objectTypeWithStringNamedNumericProperty.ts, 47, 3)) ->01 : Symbol(I."1", Decl(objectTypeWithStringNamedNumericProperty.ts, 38, 17)) +>01 : Symbol(I["1"], Decl(objectTypeWithStringNamedNumericProperty.ts, 38, 17)) var r13 = i[-01] >r13 : Symbol(r13, Decl(objectTypeWithStringNamedNumericProperty.ts, 34, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 65, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 95, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 125, 3)) @@ -329,11 +329,11 @@ var b = { "1.": "", "1..": true, "1.0": new Date(), ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) "-1.0": /123/, "-1": Date ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) }; @@ -355,7 +355,7 @@ var r3 = b['1']; var r3 = c[1]; >r3 : Symbol(r3, Decl(objectTypeWithStringNamedNumericProperty.ts, 19, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 20, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 22, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 25, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 50, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 51, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 53, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 56, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 80, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 81, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 83, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 86, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 110, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 111, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 113, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 116, 3)) >c : Symbol(c, Decl(objectTypeWithStringNamedNumericProperty.ts, 16, 3)) ->1 : Symbol(C."1", Decl(objectTypeWithStringNamedNumericProperty.ts, 7, 17)) +>1 : Symbol(C["1"], Decl(objectTypeWithStringNamedNumericProperty.ts, 7, 17)) var r4 = b['1.']; >r4 : Symbol(r4, Decl(objectTypeWithStringNamedNumericProperty.ts, 21, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 52, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 82, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 112, 3)) @@ -365,7 +365,7 @@ var r4 = b['1.']; var r3 = c[1.]; // same as indexing by 1 when done numerically >r3 : Symbol(r3, Decl(objectTypeWithStringNamedNumericProperty.ts, 19, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 20, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 22, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 25, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 50, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 51, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 53, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 56, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 80, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 81, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 83, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 86, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 110, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 111, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 113, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 116, 3)) >c : Symbol(c, Decl(objectTypeWithStringNamedNumericProperty.ts, 16, 3)) ->1. : Symbol(C."1", Decl(objectTypeWithStringNamedNumericProperty.ts, 7, 17)) +>1. : Symbol(C["1"], Decl(objectTypeWithStringNamedNumericProperty.ts, 7, 17)) var r5 = b['1..']; >r5 : Symbol(r5, Decl(objectTypeWithStringNamedNumericProperty.ts, 23, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 54, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 84, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 114, 3)) @@ -380,7 +380,7 @@ var r6 = b['1.0']; var r3 = c[1.0]; // same as indexing by 1 when done numerically >r3 : Symbol(r3, Decl(objectTypeWithStringNamedNumericProperty.ts, 19, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 20, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 22, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 25, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 50, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 51, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 53, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 56, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 80, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 81, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 83, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 86, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 110, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 111, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 113, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 116, 3)) >c : Symbol(c, Decl(objectTypeWithStringNamedNumericProperty.ts, 16, 3)) ->1.0 : Symbol(C."1", Decl(objectTypeWithStringNamedNumericProperty.ts, 7, 17)) +>1.0 : Symbol(C["1"], Decl(objectTypeWithStringNamedNumericProperty.ts, 7, 17)) // BUG 823822 var r7 = i[-1]; @@ -394,17 +394,17 @@ var r7 = i[-1.0]; var r8 = i["-1.0"]; >r8 : Symbol(r8, Decl(objectTypeWithStringNamedNumericProperty.ts, 29, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 60, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 90, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 120, 3)) >i : Symbol(i, Decl(objectTypeWithStringNamedNumericProperty.ts, 47, 3)) ->"-1.0" : Symbol(I."-1.0", Decl(objectTypeWithStringNamedNumericProperty.ts, 42, 16)) +>"-1.0" : Symbol(I["-1.0"], Decl(objectTypeWithStringNamedNumericProperty.ts, 42, 16)) var r9 = i["-1"]; >r9 : Symbol(r9, Decl(objectTypeWithStringNamedNumericProperty.ts, 30, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 61, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 91, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 121, 3)) >i : Symbol(i, Decl(objectTypeWithStringNamedNumericProperty.ts, 47, 3)) ->"-1" : Symbol(I."-1", Decl(objectTypeWithStringNamedNumericProperty.ts, 43, 19)) +>"-1" : Symbol(I["-1"], Decl(objectTypeWithStringNamedNumericProperty.ts, 43, 19)) var r10 = i[0x1] >r10 : Symbol(r10, Decl(objectTypeWithStringNamedNumericProperty.ts, 31, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 62, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 92, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 122, 3)) >i : Symbol(i, Decl(objectTypeWithStringNamedNumericProperty.ts, 47, 3)) ->0x1 : Symbol(I."1", Decl(objectTypeWithStringNamedNumericProperty.ts, 38, 17)) +>0x1 : Symbol(I["1"], Decl(objectTypeWithStringNamedNumericProperty.ts, 38, 17)) var r11 = i[-0x1] >r11 : Symbol(r11, Decl(objectTypeWithStringNamedNumericProperty.ts, 32, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 63, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 93, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 123, 3)) @@ -413,7 +413,7 @@ var r11 = i[-0x1] var r12 = i[01] >r12 : Symbol(r12, Decl(objectTypeWithStringNamedNumericProperty.ts, 33, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 64, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 94, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 124, 3)) >i : Symbol(i, Decl(objectTypeWithStringNamedNumericProperty.ts, 47, 3)) ->01 : Symbol(I."1", Decl(objectTypeWithStringNamedNumericProperty.ts, 38, 17)) +>01 : Symbol(I["1"], Decl(objectTypeWithStringNamedNumericProperty.ts, 38, 17)) var r13 = i[-01] >r13 : Symbol(r13, Decl(objectTypeWithStringNamedNumericProperty.ts, 34, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 65, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 95, 3), Decl(objectTypeWithStringNamedNumericProperty.ts, 125, 3)) diff --git a/tests/baselines/reference/objectTypeWithStringNamedPropertyOfIllegalCharacters.symbols b/tests/baselines/reference/objectTypeWithStringNamedPropertyOfIllegalCharacters.symbols index aa76e7e92c8..773fb3f5760 100644 --- a/tests/baselines/reference/objectTypeWithStringNamedPropertyOfIllegalCharacters.symbols +++ b/tests/baselines/reference/objectTypeWithStringNamedPropertyOfIllegalCharacters.symbols @@ -16,7 +16,7 @@ var c: C; var r = c[" "]; >r : Symbol(r, Decl(objectTypeWithStringNamedPropertyOfIllegalCharacters.ts, 9, 3), Decl(objectTypeWithStringNamedPropertyOfIllegalCharacters.ts, 22, 3), Decl(objectTypeWithStringNamedPropertyOfIllegalCharacters.ts, 35, 3), Decl(objectTypeWithStringNamedPropertyOfIllegalCharacters.ts, 47, 3)) >c : Symbol(c, Decl(objectTypeWithStringNamedPropertyOfIllegalCharacters.ts, 8, 3)) ->" " : Symbol(C." ", Decl(objectTypeWithStringNamedPropertyOfIllegalCharacters.ts, 0, 9)) +>" " : Symbol(C[" "], Decl(objectTypeWithStringNamedPropertyOfIllegalCharacters.ts, 0, 9)) var r2 = c[" "]; >r2 : Symbol(r2, Decl(objectTypeWithStringNamedPropertyOfIllegalCharacters.ts, 10, 3), Decl(objectTypeWithStringNamedPropertyOfIllegalCharacters.ts, 23, 3), Decl(objectTypeWithStringNamedPropertyOfIllegalCharacters.ts, 36, 3), Decl(objectTypeWithStringNamedPropertyOfIllegalCharacters.ts, 48, 3)) @@ -25,13 +25,13 @@ var r2 = c[" "]; var r3 = c["a b"]; >r3 : Symbol(r3, Decl(objectTypeWithStringNamedPropertyOfIllegalCharacters.ts, 11, 3), Decl(objectTypeWithStringNamedPropertyOfIllegalCharacters.ts, 24, 3), Decl(objectTypeWithStringNamedPropertyOfIllegalCharacters.ts, 37, 3), Decl(objectTypeWithStringNamedPropertyOfIllegalCharacters.ts, 49, 3)) >c : Symbol(c, Decl(objectTypeWithStringNamedPropertyOfIllegalCharacters.ts, 8, 3)) ->"a b" : Symbol(C."a b", Decl(objectTypeWithStringNamedPropertyOfIllegalCharacters.ts, 1, 18)) +>"a b" : Symbol(C["a b"], Decl(objectTypeWithStringNamedPropertyOfIllegalCharacters.ts, 1, 18)) // BUG 817263 var r4 = c["~!@#$%^&*()_+{}|:'<>?\/.,`"]; >r4 : Symbol(r4, Decl(objectTypeWithStringNamedPropertyOfIllegalCharacters.ts, 13, 3), Decl(objectTypeWithStringNamedPropertyOfIllegalCharacters.ts, 26, 3), Decl(objectTypeWithStringNamedPropertyOfIllegalCharacters.ts, 39, 3), Decl(objectTypeWithStringNamedPropertyOfIllegalCharacters.ts, 51, 3)) >c : Symbol(c, Decl(objectTypeWithStringNamedPropertyOfIllegalCharacters.ts, 8, 3)) ->"~!@#$%^&*()_+{}|:'<>?\/.,`" : Symbol(C."~!@#$%^&*()_+{}|:'<>?\/.,`", Decl(objectTypeWithStringNamedPropertyOfIllegalCharacters.ts, 2, 20)) +>"~!@#$%^&*()_+{}|:'<>?\/.,`" : Symbol(C["~!@#$%^&*()_+{}|:'<>?\/.,`"], Decl(objectTypeWithStringNamedPropertyOfIllegalCharacters.ts, 2, 20)) interface I { >I : Symbol(I, Decl(objectTypeWithStringNamedPropertyOfIllegalCharacters.ts, 13, 41)) @@ -48,7 +48,7 @@ var i: I; var r = i[" "]; >r : Symbol(r, Decl(objectTypeWithStringNamedPropertyOfIllegalCharacters.ts, 9, 3), Decl(objectTypeWithStringNamedPropertyOfIllegalCharacters.ts, 22, 3), Decl(objectTypeWithStringNamedPropertyOfIllegalCharacters.ts, 35, 3), Decl(objectTypeWithStringNamedPropertyOfIllegalCharacters.ts, 47, 3)) >i : Symbol(i, Decl(objectTypeWithStringNamedPropertyOfIllegalCharacters.ts, 21, 3)) ->" " : Symbol(I." ", Decl(objectTypeWithStringNamedPropertyOfIllegalCharacters.ts, 15, 13)) +>" " : Symbol(I[" "], Decl(objectTypeWithStringNamedPropertyOfIllegalCharacters.ts, 15, 13)) var r2 = i[" "]; >r2 : Symbol(r2, Decl(objectTypeWithStringNamedPropertyOfIllegalCharacters.ts, 10, 3), Decl(objectTypeWithStringNamedPropertyOfIllegalCharacters.ts, 23, 3), Decl(objectTypeWithStringNamedPropertyOfIllegalCharacters.ts, 36, 3), Decl(objectTypeWithStringNamedPropertyOfIllegalCharacters.ts, 48, 3)) @@ -57,13 +57,13 @@ var r2 = i[" "]; var r3 = i["a b"]; >r3 : Symbol(r3, Decl(objectTypeWithStringNamedPropertyOfIllegalCharacters.ts, 11, 3), Decl(objectTypeWithStringNamedPropertyOfIllegalCharacters.ts, 24, 3), Decl(objectTypeWithStringNamedPropertyOfIllegalCharacters.ts, 37, 3), Decl(objectTypeWithStringNamedPropertyOfIllegalCharacters.ts, 49, 3)) >i : Symbol(i, Decl(objectTypeWithStringNamedPropertyOfIllegalCharacters.ts, 21, 3)) ->"a b" : Symbol(I."a b", Decl(objectTypeWithStringNamedPropertyOfIllegalCharacters.ts, 16, 18)) +>"a b" : Symbol(I["a b"], Decl(objectTypeWithStringNamedPropertyOfIllegalCharacters.ts, 16, 18)) // BUG 817263 var r4 = i["~!@#$%^&*()_+{}|:'<>?\/.,`"]; >r4 : Symbol(r4, Decl(objectTypeWithStringNamedPropertyOfIllegalCharacters.ts, 13, 3), Decl(objectTypeWithStringNamedPropertyOfIllegalCharacters.ts, 26, 3), Decl(objectTypeWithStringNamedPropertyOfIllegalCharacters.ts, 39, 3), Decl(objectTypeWithStringNamedPropertyOfIllegalCharacters.ts, 51, 3)) >i : Symbol(i, Decl(objectTypeWithStringNamedPropertyOfIllegalCharacters.ts, 21, 3)) ->"~!@#$%^&*()_+{}|:'<>?\/.,`" : Symbol(I."~!@#$%^&*()_+{}|:'<>?\/.,`", Decl(objectTypeWithStringNamedPropertyOfIllegalCharacters.ts, 17, 20)) +>"~!@#$%^&*()_+{}|:'<>?\/.,`" : Symbol(I["~!@#$%^&*()_+{}|:'<>?\/.,`"], Decl(objectTypeWithStringNamedPropertyOfIllegalCharacters.ts, 17, 20)) var a: { diff --git a/tests/baselines/reference/objectTypesIdentity.symbols b/tests/baselines/reference/objectTypesIdentity.symbols index a39b47acf55..8691978a527 100644 --- a/tests/baselines/reference/objectTypesIdentity.symbols +++ b/tests/baselines/reference/objectTypesIdentity.symbols @@ -5,14 +5,14 @@ class A { >A : Symbol(A, Decl(objectTypesIdentity.ts, 0, 0)) foo: string; ->foo : Symbol(foo, Decl(objectTypesIdentity.ts, 2, 9)) +>foo : Symbol(A.foo, Decl(objectTypesIdentity.ts, 2, 9)) } class B { >B : Symbol(B, Decl(objectTypesIdentity.ts, 4, 1)) foo: string; ->foo : Symbol(foo, Decl(objectTypesIdentity.ts, 6, 9)) +>foo : Symbol(B.foo, Decl(objectTypesIdentity.ts, 6, 9)) } class C { @@ -20,7 +20,7 @@ class C { >T : Symbol(T, Decl(objectTypesIdentity.ts, 10, 8)) foo: T; ->foo : Symbol(foo, Decl(objectTypesIdentity.ts, 10, 12)) +>foo : Symbol(C.foo, Decl(objectTypesIdentity.ts, 10, 12)) >T : Symbol(T, Decl(objectTypesIdentity.ts, 10, 8)) } @@ -28,7 +28,7 @@ interface I { >I : Symbol(I, Decl(objectTypesIdentity.ts, 12, 1)) foo: string; ->foo : Symbol(foo, Decl(objectTypesIdentity.ts, 14, 13)) +>foo : Symbol(I.foo, Decl(objectTypesIdentity.ts, 14, 13)) } var a: { foo: string; } diff --git a/tests/baselines/reference/objectTypesIdentity2.symbols b/tests/baselines/reference/objectTypesIdentity2.symbols index 6db54e5b59a..eb04eaf03c7 100644 --- a/tests/baselines/reference/objectTypesIdentity2.symbols +++ b/tests/baselines/reference/objectTypesIdentity2.symbols @@ -5,14 +5,14 @@ class A { >A : Symbol(A, Decl(objectTypesIdentity2.ts, 0, 0)) foo: number; ->foo : Symbol(foo, Decl(objectTypesIdentity2.ts, 2, 9)) +>foo : Symbol(A.foo, Decl(objectTypesIdentity2.ts, 2, 9)) } class B { >B : Symbol(B, Decl(objectTypesIdentity2.ts, 4, 1)) foo: boolean; ->foo : Symbol(foo, Decl(objectTypesIdentity2.ts, 6, 9)) +>foo : Symbol(B.foo, Decl(objectTypesIdentity2.ts, 6, 9)) } class C { @@ -20,7 +20,7 @@ class C { >T : Symbol(T, Decl(objectTypesIdentity2.ts, 10, 8)) foo: T; ->foo : Symbol(foo, Decl(objectTypesIdentity2.ts, 10, 12)) +>foo : Symbol(C.foo, Decl(objectTypesIdentity2.ts, 10, 12)) >T : Symbol(T, Decl(objectTypesIdentity2.ts, 10, 8)) } @@ -28,8 +28,8 @@ interface I { >I : Symbol(I, Decl(objectTypesIdentity2.ts, 12, 1)) foo: Date; ->foo : Symbol(foo, Decl(objectTypesIdentity2.ts, 14, 13)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>foo : Symbol(I.foo, Decl(objectTypesIdentity2.ts, 14, 13)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) } var a: { foo: RegExp; } diff --git a/tests/baselines/reference/objectTypesIdentityWithCallSignatures.symbols b/tests/baselines/reference/objectTypesIdentityWithCallSignatures.symbols index e1131a019c0..72906bc9880 100644 --- a/tests/baselines/reference/objectTypesIdentityWithCallSignatures.symbols +++ b/tests/baselines/reference/objectTypesIdentityWithCallSignatures.symbols @@ -5,7 +5,7 @@ class A { >A : Symbol(A, Decl(objectTypesIdentityWithCallSignatures.ts, 0, 0)) foo(x: string): string { return null; } ->foo : Symbol(foo, Decl(objectTypesIdentityWithCallSignatures.ts, 2, 9)) +>foo : Symbol(A.foo, Decl(objectTypesIdentityWithCallSignatures.ts, 2, 9)) >x : Symbol(x, Decl(objectTypesIdentityWithCallSignatures.ts, 3, 8)) } @@ -13,7 +13,7 @@ class B { >B : Symbol(B, Decl(objectTypesIdentityWithCallSignatures.ts, 4, 1)) foo(x: string): string { return null; } ->foo : Symbol(foo, Decl(objectTypesIdentityWithCallSignatures.ts, 6, 9)) +>foo : Symbol(B.foo, Decl(objectTypesIdentityWithCallSignatures.ts, 6, 9)) >x : Symbol(x, Decl(objectTypesIdentityWithCallSignatures.ts, 7, 8)) } @@ -22,7 +22,7 @@ class C { >T : Symbol(T, Decl(objectTypesIdentityWithCallSignatures.ts, 10, 8)) foo(x: T): T { return null; } ->foo : Symbol(foo, Decl(objectTypesIdentityWithCallSignatures.ts, 10, 12)) +>foo : Symbol(C.foo, Decl(objectTypesIdentityWithCallSignatures.ts, 10, 12)) >x : Symbol(x, Decl(objectTypesIdentityWithCallSignatures.ts, 11, 8)) >T : Symbol(T, Decl(objectTypesIdentityWithCallSignatures.ts, 10, 8)) >T : Symbol(T, Decl(objectTypesIdentityWithCallSignatures.ts, 10, 8)) @@ -32,7 +32,7 @@ interface I { >I : Symbol(I, Decl(objectTypesIdentityWithCallSignatures.ts, 12, 1)) foo(x: string): string; ->foo : Symbol(foo, Decl(objectTypesIdentityWithCallSignatures.ts, 14, 13)) +>foo : Symbol(I.foo, Decl(objectTypesIdentityWithCallSignatures.ts, 14, 13)) >x : Symbol(x, Decl(objectTypesIdentityWithCallSignatures.ts, 15, 8)) } @@ -41,7 +41,7 @@ interface I2 { >T : Symbol(T, Decl(objectTypesIdentityWithCallSignatures.ts, 18, 13)) foo(x: T): T; ->foo : Symbol(foo, Decl(objectTypesIdentityWithCallSignatures.ts, 18, 17)) +>foo : Symbol(I2.foo, Decl(objectTypesIdentityWithCallSignatures.ts, 18, 17)) >x : Symbol(x, Decl(objectTypesIdentityWithCallSignatures.ts, 19, 8)) >T : Symbol(T, Decl(objectTypesIdentityWithCallSignatures.ts, 18, 13)) >T : Symbol(T, Decl(objectTypesIdentityWithCallSignatures.ts, 18, 13)) diff --git a/tests/baselines/reference/objectTypesIdentityWithCallSignatures2.symbols b/tests/baselines/reference/objectTypesIdentityWithCallSignatures2.symbols index 7e081608bc0..fb01ef775c4 100644 --- a/tests/baselines/reference/objectTypesIdentityWithCallSignatures2.symbols +++ b/tests/baselines/reference/objectTypesIdentityWithCallSignatures2.symbols @@ -5,7 +5,7 @@ class A { >A : Symbol(A, Decl(objectTypesIdentityWithCallSignatures2.ts, 0, 0)) foo(x: string): string { return null; } ->foo : Symbol(foo, Decl(objectTypesIdentityWithCallSignatures2.ts, 2, 9)) +>foo : Symbol(A.foo, Decl(objectTypesIdentityWithCallSignatures2.ts, 2, 9)) >x : Symbol(x, Decl(objectTypesIdentityWithCallSignatures2.ts, 3, 8)) } @@ -13,7 +13,7 @@ class B { >B : Symbol(B, Decl(objectTypesIdentityWithCallSignatures2.ts, 4, 1)) foo(x: number): string { return null; } ->foo : Symbol(foo, Decl(objectTypesIdentityWithCallSignatures2.ts, 6, 9)) +>foo : Symbol(B.foo, Decl(objectTypesIdentityWithCallSignatures2.ts, 6, 9)) >x : Symbol(x, Decl(objectTypesIdentityWithCallSignatures2.ts, 7, 8)) } @@ -22,7 +22,7 @@ class C { >T : Symbol(T, Decl(objectTypesIdentityWithCallSignatures2.ts, 10, 8)) foo(x: T): T { return null; } ->foo : Symbol(foo, Decl(objectTypesIdentityWithCallSignatures2.ts, 10, 12)) +>foo : Symbol(C.foo, Decl(objectTypesIdentityWithCallSignatures2.ts, 10, 12)) >x : Symbol(x, Decl(objectTypesIdentityWithCallSignatures2.ts, 11, 8)) >T : Symbol(T, Decl(objectTypesIdentityWithCallSignatures2.ts, 10, 8)) >T : Symbol(T, Decl(objectTypesIdentityWithCallSignatures2.ts, 10, 8)) @@ -32,7 +32,7 @@ interface I { >I : Symbol(I, Decl(objectTypesIdentityWithCallSignatures2.ts, 12, 1)) foo(x: boolean): string; ->foo : Symbol(foo, Decl(objectTypesIdentityWithCallSignatures2.ts, 14, 13)) +>foo : Symbol(I.foo, Decl(objectTypesIdentityWithCallSignatures2.ts, 14, 13)) >x : Symbol(x, Decl(objectTypesIdentityWithCallSignatures2.ts, 15, 8)) } @@ -41,7 +41,7 @@ interface I2 { >T : Symbol(T, Decl(objectTypesIdentityWithCallSignatures2.ts, 18, 13)) foo(x: T): T; ->foo : Symbol(foo, Decl(objectTypesIdentityWithCallSignatures2.ts, 18, 17)) +>foo : Symbol(I2.foo, Decl(objectTypesIdentityWithCallSignatures2.ts, 18, 17)) >x : Symbol(x, Decl(objectTypesIdentityWithCallSignatures2.ts, 19, 8)) >T : Symbol(T, Decl(objectTypesIdentityWithCallSignatures2.ts, 18, 13)) >T : Symbol(T, Decl(objectTypesIdentityWithCallSignatures2.ts, 18, 13)) @@ -51,7 +51,7 @@ var a: { foo(x: Date): string } >a : Symbol(a, Decl(objectTypesIdentityWithCallSignatures2.ts, 22, 3)) >foo : Symbol(foo, Decl(objectTypesIdentityWithCallSignatures2.ts, 22, 8)) >x : Symbol(x, Decl(objectTypesIdentityWithCallSignatures2.ts, 22, 13)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) var b = { foo(x: RegExp) { return ''; } }; >b : Symbol(b, Decl(objectTypesIdentityWithCallSignatures2.ts, 23, 3)) diff --git a/tests/baselines/reference/objectTypesIdentityWithCallSignaturesDifferingParamCounts.symbols b/tests/baselines/reference/objectTypesIdentityWithCallSignaturesDifferingParamCounts.symbols index 9341ba35c42..9bf5c16e351 100644 --- a/tests/baselines/reference/objectTypesIdentityWithCallSignaturesDifferingParamCounts.symbols +++ b/tests/baselines/reference/objectTypesIdentityWithCallSignaturesDifferingParamCounts.symbols @@ -5,7 +5,7 @@ class A { >A : Symbol(A, Decl(objectTypesIdentityWithCallSignaturesDifferingParamCounts.ts, 0, 0)) foo(x: string): string { return null; } ->foo : Symbol(foo, Decl(objectTypesIdentityWithCallSignaturesDifferingParamCounts.ts, 2, 9)) +>foo : Symbol(A.foo, Decl(objectTypesIdentityWithCallSignaturesDifferingParamCounts.ts, 2, 9)) >x : Symbol(x, Decl(objectTypesIdentityWithCallSignaturesDifferingParamCounts.ts, 3, 8)) } @@ -13,7 +13,7 @@ class B { >B : Symbol(B, Decl(objectTypesIdentityWithCallSignaturesDifferingParamCounts.ts, 4, 1)) foo(x: string, y: string): string { return null; } ->foo : Symbol(foo, Decl(objectTypesIdentityWithCallSignaturesDifferingParamCounts.ts, 6, 9)) +>foo : Symbol(B.foo, Decl(objectTypesIdentityWithCallSignaturesDifferingParamCounts.ts, 6, 9)) >x : Symbol(x, Decl(objectTypesIdentityWithCallSignaturesDifferingParamCounts.ts, 7, 8)) >y : Symbol(y, Decl(objectTypesIdentityWithCallSignaturesDifferingParamCounts.ts, 7, 18)) } @@ -23,7 +23,7 @@ class C { >T : Symbol(T, Decl(objectTypesIdentityWithCallSignaturesDifferingParamCounts.ts, 10, 8)) foo(x: T, y: T): T { return null; } ->foo : Symbol(foo, Decl(objectTypesIdentityWithCallSignaturesDifferingParamCounts.ts, 10, 12)) +>foo : Symbol(C.foo, Decl(objectTypesIdentityWithCallSignaturesDifferingParamCounts.ts, 10, 12)) >x : Symbol(x, Decl(objectTypesIdentityWithCallSignaturesDifferingParamCounts.ts, 11, 8)) >T : Symbol(T, Decl(objectTypesIdentityWithCallSignaturesDifferingParamCounts.ts, 10, 8)) >y : Symbol(y, Decl(objectTypesIdentityWithCallSignaturesDifferingParamCounts.ts, 11, 13)) @@ -35,7 +35,7 @@ interface I { >I : Symbol(I, Decl(objectTypesIdentityWithCallSignaturesDifferingParamCounts.ts, 12, 1)) foo(x: string): string; ->foo : Symbol(foo, Decl(objectTypesIdentityWithCallSignaturesDifferingParamCounts.ts, 14, 13)) +>foo : Symbol(I.foo, Decl(objectTypesIdentityWithCallSignaturesDifferingParamCounts.ts, 14, 13)) >x : Symbol(x, Decl(objectTypesIdentityWithCallSignaturesDifferingParamCounts.ts, 15, 8)) } @@ -44,7 +44,7 @@ interface I2 { >T : Symbol(T, Decl(objectTypesIdentityWithCallSignaturesDifferingParamCounts.ts, 18, 13)) foo(x: T): T; ->foo : Symbol(foo, Decl(objectTypesIdentityWithCallSignaturesDifferingParamCounts.ts, 18, 17)) +>foo : Symbol(I2.foo, Decl(objectTypesIdentityWithCallSignaturesDifferingParamCounts.ts, 18, 17)) >x : Symbol(x, Decl(objectTypesIdentityWithCallSignaturesDifferingParamCounts.ts, 19, 8)) >T : Symbol(T, Decl(objectTypesIdentityWithCallSignaturesDifferingParamCounts.ts, 18, 13)) >T : Symbol(T, Decl(objectTypesIdentityWithCallSignaturesDifferingParamCounts.ts, 18, 13)) diff --git a/tests/baselines/reference/objectTypesIdentityWithCallSignaturesWithOverloads.symbols b/tests/baselines/reference/objectTypesIdentityWithCallSignaturesWithOverloads.symbols index 6575c6787fd..81dcabbf47e 100644 --- a/tests/baselines/reference/objectTypesIdentityWithCallSignaturesWithOverloads.symbols +++ b/tests/baselines/reference/objectTypesIdentityWithCallSignaturesWithOverloads.symbols @@ -5,15 +5,15 @@ class A { >A : Symbol(A, Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 0, 0)) foo(x: number): number; ->foo : Symbol(foo, Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 2, 9), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 3, 27), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 4, 27)) +>foo : Symbol(A.foo, Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 2, 9), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 3, 27), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 4, 27)) >x : Symbol(x, Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 3, 8)) foo(x: string): string; ->foo : Symbol(foo, Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 2, 9), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 3, 27), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 4, 27)) +>foo : Symbol(A.foo, Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 2, 9), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 3, 27), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 4, 27)) >x : Symbol(x, Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 4, 8)) foo(x: any): any { return null; } ->foo : Symbol(foo, Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 2, 9), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 3, 27), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 4, 27)) +>foo : Symbol(A.foo, Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 2, 9), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 3, 27), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 4, 27)) >x : Symbol(x, Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 5, 8)) } @@ -21,15 +21,15 @@ class B { >B : Symbol(B, Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 6, 1)) foo(x: number): number; ->foo : Symbol(foo, Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 8, 9), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 9, 27), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 10, 27)) +>foo : Symbol(B.foo, Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 8, 9), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 9, 27), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 10, 27)) >x : Symbol(x, Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 9, 8)) foo(x: string): string; ->foo : Symbol(foo, Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 8, 9), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 9, 27), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 10, 27)) +>foo : Symbol(B.foo, Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 8, 9), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 9, 27), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 10, 27)) >x : Symbol(x, Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 10, 8)) foo(x: any): any { return null; } ->foo : Symbol(foo, Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 8, 9), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 9, 27), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 10, 27)) +>foo : Symbol(B.foo, Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 8, 9), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 9, 27), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 10, 27)) >x : Symbol(x, Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 11, 8)) } @@ -38,21 +38,21 @@ class C { >T : Symbol(T, Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 14, 8)) foo(x: number): number; ->foo : Symbol(foo, Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 14, 12), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 15, 27), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 16, 27), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 17, 17)) +>foo : Symbol(C.foo, Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 14, 12), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 15, 27), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 16, 27), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 17, 17)) >x : Symbol(x, Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 15, 8)) foo(x: string): string; ->foo : Symbol(foo, Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 14, 12), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 15, 27), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 16, 27), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 17, 17)) +>foo : Symbol(C.foo, Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 14, 12), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 15, 27), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 16, 27), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 17, 17)) >x : Symbol(x, Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 16, 8)) foo(x: T): T; ->foo : Symbol(foo, Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 14, 12), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 15, 27), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 16, 27), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 17, 17)) +>foo : Symbol(C.foo, Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 14, 12), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 15, 27), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 16, 27), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 17, 17)) >x : Symbol(x, Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 17, 8)) >T : Symbol(T, Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 14, 8)) >T : Symbol(T, Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 14, 8)) foo(x: any): any { return null; } ->foo : Symbol(foo, Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 14, 12), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 15, 27), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 16, 27), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 17, 17)) +>foo : Symbol(C.foo, Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 14, 12), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 15, 27), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 16, 27), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 17, 17)) >x : Symbol(x, Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 18, 8)) } @@ -60,11 +60,11 @@ interface I { >I : Symbol(I, Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 19, 1)) foo(x: number): number; ->foo : Symbol(foo, Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 21, 13), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 22, 27)) +>foo : Symbol(I.foo, Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 21, 13), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 22, 27)) >x : Symbol(x, Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 22, 8)) foo(x: string): string; ->foo : Symbol(foo, Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 21, 13), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 22, 27)) +>foo : Symbol(I.foo, Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 21, 13), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 22, 27)) >x : Symbol(x, Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 23, 8)) } @@ -73,15 +73,15 @@ interface I2 { >T : Symbol(T, Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 26, 13)) foo(x: number): number; ->foo : Symbol(foo, Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 26, 17), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 27, 27), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 28, 27)) +>foo : Symbol(I2.foo, Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 26, 17), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 27, 27), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 28, 27)) >x : Symbol(x, Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 27, 8)) foo(x: string): string; ->foo : Symbol(foo, Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 26, 17), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 27, 27), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 28, 27)) +>foo : Symbol(I2.foo, Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 26, 17), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 27, 27), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 28, 27)) >x : Symbol(x, Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 28, 8)) foo(x: T): T; ->foo : Symbol(foo, Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 26, 17), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 27, 27), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 28, 27)) +>foo : Symbol(I2.foo, Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 26, 17), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 27, 27), Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 28, 27)) >x : Symbol(x, Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 29, 8)) >T : Symbol(T, Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 26, 13)) >T : Symbol(T, Decl(objectTypesIdentityWithCallSignaturesWithOverloads.ts, 26, 13)) diff --git a/tests/baselines/reference/objectTypesIdentityWithConstructSignatures2.symbols b/tests/baselines/reference/objectTypesIdentityWithConstructSignatures2.symbols index 90ec832873c..64677b63c5f 100644 --- a/tests/baselines/reference/objectTypesIdentityWithConstructSignatures2.symbols +++ b/tests/baselines/reference/objectTypesIdentityWithConstructSignatures2.symbols @@ -37,7 +37,7 @@ interface I2 { var a: { new(x: Date): string } >a : Symbol(a, Decl(objectTypesIdentityWithConstructSignatures2.ts, 18, 3)) >x : Symbol(x, Decl(objectTypesIdentityWithConstructSignatures2.ts, 18, 13)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) var b = { new(x: RegExp) { return ''; } }; // not a construct signature, function called new >b : Symbol(b, Decl(objectTypesIdentityWithConstructSignatures2.ts, 19, 3)) diff --git a/tests/baselines/reference/objectTypesIdentityWithGenericCallSignatures.symbols b/tests/baselines/reference/objectTypesIdentityWithGenericCallSignatures.symbols index 8fdebdcccbe..42367d7ed38 100644 --- a/tests/baselines/reference/objectTypesIdentityWithGenericCallSignatures.symbols +++ b/tests/baselines/reference/objectTypesIdentityWithGenericCallSignatures.symbols @@ -5,7 +5,7 @@ class A { >A : Symbol(A, Decl(objectTypesIdentityWithGenericCallSignatures.ts, 0, 0)) foo(x: T): T { return null; } ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignatures.ts, 2, 9)) +>foo : Symbol(A.foo, Decl(objectTypesIdentityWithGenericCallSignatures.ts, 2, 9)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignatures.ts, 3, 8)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignatures.ts, 3, 11)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignatures.ts, 3, 8)) @@ -17,7 +17,7 @@ class B { >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignatures.ts, 6, 8)) foo(x: T): T { return null; } ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignatures.ts, 6, 12)) +>foo : Symbol(B.foo, Decl(objectTypesIdentityWithGenericCallSignatures.ts, 6, 12)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignatures.ts, 7, 8)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignatures.ts, 6, 8)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignatures.ts, 6, 8)) @@ -28,7 +28,7 @@ class C { >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignatures.ts, 10, 8)) foo(x: T): T { return null; } ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignatures.ts, 10, 12)) +>foo : Symbol(C.foo, Decl(objectTypesIdentityWithGenericCallSignatures.ts, 10, 12)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignatures.ts, 11, 8)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignatures.ts, 10, 8)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignatures.ts, 10, 8)) @@ -39,7 +39,7 @@ interface I { >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignatures.ts, 14, 12)) foo(x: T): T; ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignatures.ts, 14, 16)) +>foo : Symbol(I.foo, Decl(objectTypesIdentityWithGenericCallSignatures.ts, 14, 16)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignatures.ts, 15, 8)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignatures.ts, 14, 12)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignatures.ts, 14, 12)) @@ -49,7 +49,7 @@ interface I2 { >I2 : Symbol(I2, Decl(objectTypesIdentityWithGenericCallSignatures.ts, 16, 1)) foo(x: T): T; ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignatures.ts, 18, 14)) +>foo : Symbol(I2.foo, Decl(objectTypesIdentityWithGenericCallSignatures.ts, 18, 14)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignatures.ts, 19, 8)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignatures.ts, 19, 11)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignatures.ts, 19, 8)) diff --git a/tests/baselines/reference/objectTypesIdentityWithGenericCallSignatures2.symbols b/tests/baselines/reference/objectTypesIdentityWithGenericCallSignatures2.symbols index 2ca97948a99..a9925925c9e 100644 --- a/tests/baselines/reference/objectTypesIdentityWithGenericCallSignatures2.symbols +++ b/tests/baselines/reference/objectTypesIdentityWithGenericCallSignatures2.symbols @@ -5,7 +5,7 @@ class A { >A : Symbol(A, Decl(objectTypesIdentityWithGenericCallSignatures2.ts, 0, 0)) foo(x: T, y: U): T { return null; } ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignatures2.ts, 2, 9)) +>foo : Symbol(A.foo, Decl(objectTypesIdentityWithGenericCallSignatures2.ts, 2, 9)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignatures2.ts, 3, 8)) >U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignatures2.ts, 3, 10)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignatures2.ts, 3, 14)) @@ -21,7 +21,7 @@ class B { >U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignatures2.ts, 6, 10)) foo(x: T, y: U): T { return null; } ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignatures2.ts, 6, 15)) +>foo : Symbol(B.foo, Decl(objectTypesIdentityWithGenericCallSignatures2.ts, 6, 15)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignatures2.ts, 7, 8)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignatures2.ts, 6, 8)) >y : Symbol(y, Decl(objectTypesIdentityWithGenericCallSignatures2.ts, 7, 13)) @@ -35,7 +35,7 @@ class C { >U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignatures2.ts, 10, 10)) foo(x: T, y: U): T { return null; } ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignatures2.ts, 10, 15)) +>foo : Symbol(C.foo, Decl(objectTypesIdentityWithGenericCallSignatures2.ts, 10, 15)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignatures2.ts, 11, 8)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignatures2.ts, 10, 8)) >y : Symbol(y, Decl(objectTypesIdentityWithGenericCallSignatures2.ts, 11, 13)) @@ -49,7 +49,7 @@ interface I { >U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignatures2.ts, 14, 14)) foo(x: T, y: U): T; ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignatures2.ts, 14, 19)) +>foo : Symbol(I.foo, Decl(objectTypesIdentityWithGenericCallSignatures2.ts, 14, 19)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignatures2.ts, 15, 8)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignatures2.ts, 14, 12)) >y : Symbol(y, Decl(objectTypesIdentityWithGenericCallSignatures2.ts, 15, 13)) @@ -61,7 +61,7 @@ interface I2 { >I2 : Symbol(I2, Decl(objectTypesIdentityWithGenericCallSignatures2.ts, 16, 1)) foo(x: T, y: U): T; ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignatures2.ts, 18, 14)) +>foo : Symbol(I2.foo, Decl(objectTypesIdentityWithGenericCallSignatures2.ts, 18, 14)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignatures2.ts, 19, 8)) >U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignatures2.ts, 19, 10)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignatures2.ts, 19, 14)) diff --git a/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.symbols b/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.symbols index b8432af2425..7d017936a04 100644 --- a/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.symbols +++ b/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.symbols @@ -7,9 +7,9 @@ class A { >A : Symbol(A, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 0, 0)) foo(x: T): string { return null; } ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 4, 9)) +>foo : Symbol(A.foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 4, 9)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 5, 8)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 5, 24)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 5, 8)) } @@ -20,7 +20,7 @@ class B> { >Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) foo(x: T): string { return null; } ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 8, 34)) +>foo : Symbol(B.foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 8, 34)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 9, 8)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 8, 8)) } @@ -28,10 +28,10 @@ class B> { class C { >C : Symbol(C, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 10, 1)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 12, 8)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) foo(x: T): string { return null; } ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 12, 27)) +>foo : Symbol(C.foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 12, 27)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 13, 8)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 12, 8)) } @@ -39,10 +39,10 @@ class C { interface I { >I : Symbol(I, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 14, 1)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 16, 12)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) foo(x: T): string; ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 16, 31)) +>foo : Symbol(I.foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 16, 31)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 17, 8)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 16, 12)) } @@ -51,7 +51,7 @@ interface I2 { >I2 : Symbol(I2, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 18, 1)) foo(x: T): string; ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 20, 14)) +>foo : Symbol(I2.foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 20, 14)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 21, 8)) >Boolean : Symbol(Boolean, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 21, 27)) @@ -108,13 +108,13 @@ function foo1c(x: C); >foo1c : Symbol(foo1c, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 33, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 35, 29), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 36, 29)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 35, 15)) >C : Symbol(C, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 10, 1)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo1c(x: C); // error >foo1c : Symbol(foo1c, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 33, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 35, 29), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 36, 29)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 36, 15)) >C : Symbol(C, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 10, 1)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo1c(x: any) { } >foo1c : Symbol(foo1c, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 33, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 35, 29), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 36, 29)) @@ -124,13 +124,13 @@ function foo2(x: I); >foo2 : Symbol(foo2, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 37, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 39, 28), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 40, 28)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 39, 14)) >I : Symbol(I, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 14, 1)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo2(x: I); // error >foo2 : Symbol(foo2, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 37, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 39, 28), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 40, 28)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 40, 14)) >I : Symbol(I, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 14, 1)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo2(x: any) { } >foo2 : Symbol(foo2, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 37, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 39, 28), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 40, 28)) @@ -188,7 +188,7 @@ function foo5b(x: C); // ok >foo5b : Symbol(foo5b, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 53, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 55, 21), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 56, 29)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 56, 15)) >C : Symbol(C, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 10, 1)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo5b(x: any) { } >foo5b : Symbol(foo5b, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 53, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 55, 21), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 56, 29)) @@ -203,7 +203,7 @@ function foo6(x: I); // ok >foo6 : Symbol(foo6, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 57, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 59, 20), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 60, 28)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 60, 14)) >I : Symbol(I, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 14, 1)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo6(x: any) { } >foo6 : Symbol(foo6, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 57, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 59, 20), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 60, 28)) @@ -233,7 +233,7 @@ function foo8(x: I); // ok >foo8 : Symbol(foo8, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 65, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 67, 35), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 68, 28)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 68, 14)) >I : Symbol(I, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 14, 1)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo8(x: any) { } >foo8 : Symbol(foo8, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 65, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 67, 35), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 68, 28)) @@ -249,7 +249,7 @@ function foo9(x: C); // ok >foo9 : Symbol(foo9, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 69, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 71, 35), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 72, 28)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 72, 14)) >C : Symbol(C, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 10, 1)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo9(x: any) { } >foo9 : Symbol(foo9, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 69, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 71, 35), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 72, 28)) @@ -289,13 +289,13 @@ function foo12(x: I); >foo12 : Symbol(foo12, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 81, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 83, 29), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 84, 29)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 83, 15)) >I : Symbol(I, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 14, 1)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo12(x: C); // ok >foo12 : Symbol(foo12, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 81, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 83, 29), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 84, 29)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 84, 15)) >C : Symbol(C, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 10, 1)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo12(x: any) { } >foo12 : Symbol(foo12, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 81, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 83, 29), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 84, 29)) @@ -310,7 +310,7 @@ function foo12b(x: C); // ok >foo12b : Symbol(foo12b, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 85, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 87, 23), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 88, 30)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 88, 16)) >C : Symbol(C, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 10, 1)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo12b(x: any) { } >foo12b : Symbol(foo12b, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 85, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 87, 23), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 88, 30)) @@ -320,7 +320,7 @@ function foo13(x: I); >foo13 : Symbol(foo13, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 89, 27), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 91, 29), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 92, 28)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 91, 15)) >I : Symbol(I, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 14, 1)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo13(x: typeof a); // ok >foo13 : Symbol(foo13, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 89, 27), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 91, 29), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 92, 28)) @@ -335,7 +335,7 @@ function foo14(x: I); >foo14 : Symbol(foo14, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 93, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 95, 29), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 96, 28)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 95, 15)) >I : Symbol(I, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 14, 1)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo14(x: typeof b); // ok >foo14 : Symbol(foo14, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 93, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 95, 29), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 96, 28)) @@ -355,7 +355,7 @@ function foo15(x: C); // ok >foo15 : Symbol(foo15, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 97, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 99, 22), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 100, 29)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 100, 15)) >C : Symbol(C, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 10, 1)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo15(x: any) { } >foo15 : Symbol(foo15, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 97, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 99, 22), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts, 100, 29)) diff --git a/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.symbols b/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.symbols index e8c34a1bf99..e37b606be59 100644 --- a/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.symbols +++ b/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.symbols @@ -7,11 +7,11 @@ class A { >A : Symbol(A, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 0, 0)) foo(x: T, y: U): string { return null; } ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 4, 9)) +>foo : Symbol(A.foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 4, 9)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 5, 8)) >U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 5, 20)) >U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 5, 20)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 5, 37)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 5, 8)) >y : Symbol(y, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 5, 42)) @@ -26,7 +26,7 @@ class B> { >Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) foo(x: T, y: U): string { return null; } ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 8, 47)) +>foo : Symbol(B.foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 8, 47)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 9, 8)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 8, 8)) >y : Symbol(y, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 9, 13)) @@ -38,10 +38,10 @@ class C { >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 12, 8)) >U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 12, 20)) >U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 12, 20)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) foo(x: T, y: U): string { return null; } ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 12, 40)) +>foo : Symbol(C.foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 12, 40)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 13, 8)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 12, 8)) >y : Symbol(y, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 13, 13)) @@ -53,10 +53,10 @@ class D { >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 16, 8)) >U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 16, 20)) >U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 16, 20)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) foo(x: T, y: U): string { return null; } ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 16, 40)) +>foo : Symbol(D.foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 16, 40)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 17, 8)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 16, 8)) >y : Symbol(y, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 17, 13)) @@ -68,10 +68,10 @@ interface I { >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 20, 12)) >U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 20, 24)) >U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 20, 24)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) foo(x: T, y: U): string; ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 20, 44)) +>foo : Symbol(I.foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 20, 44)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 21, 8)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 20, 12)) >y : Symbol(y, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 21, 13)) @@ -82,7 +82,7 @@ interface I2 { >I2 : Symbol(I2, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 22, 1)) foo(x: T, y: U): string; ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 24, 14)) +>foo : Symbol(I2.foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 24, 14)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 25, 8)) >U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 25, 20)) >U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 25, 20)) @@ -153,15 +153,15 @@ function foo1c(x: C); >foo1c : Symbol(foo1c, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 37, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 39, 37), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 40, 37)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 39, 15)) >C : Symbol(C, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 10, 1)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo1c(x: C); // error >foo1c : Symbol(foo1c, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 37, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 39, 37), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 40, 37)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 40, 15)) >C : Symbol(C, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 10, 1)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo1c(x: any) { } >foo1c : Symbol(foo1c, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 37, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 39, 37), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 40, 37)) @@ -171,15 +171,15 @@ function foo2(x: I); >foo2 : Symbol(foo2, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 41, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 43, 36), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 44, 36)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 43, 14)) >I : Symbol(I, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 18, 1)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo2(x: I); // error >foo2 : Symbol(foo2, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 41, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 43, 36), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 44, 36)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 44, 14)) >I : Symbol(I, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 18, 1)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo2(x: any) { } >foo2 : Symbol(foo2, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 41, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 43, 36), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 44, 36)) @@ -238,8 +238,8 @@ function foo5b(x: C); // ok >foo5b : Symbol(foo5b, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 57, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 59, 21), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 60, 37)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 60, 15)) >C : Symbol(C, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 10, 1)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo5b(x: any) { } >foo5b : Symbol(foo5b, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 57, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 59, 21), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 60, 37)) @@ -249,15 +249,15 @@ function foo5c(x: C); >foo5c : Symbol(foo5c, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 61, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 63, 37), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 64, 37)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 63, 15)) >C : Symbol(C, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 10, 1)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo5c(x: D); // ok >foo5c : Symbol(foo5c, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 61, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 63, 37), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 64, 37)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 64, 15)) >D : Symbol(D, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 14, 1)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo5c(x: any) { } >foo5c : Symbol(foo5c, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 61, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 63, 37), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 64, 37)) @@ -267,14 +267,14 @@ function foo6c(x: C); >foo6c : Symbol(foo6c, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 65, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 67, 37), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 68, 34)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 67, 15)) >C : Symbol(C, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 10, 1)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo6c(x: D); // error, "any" does not satisfy the constraint >foo6c : Symbol(foo6c, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 65, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 67, 37), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 68, 34)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 68, 15)) >D : Symbol(D, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 14, 1)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo6c(x: any) { } >foo6c : Symbol(foo6c, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 65, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 67, 37), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 68, 34)) @@ -289,8 +289,8 @@ function foo6(x: I); // ok >foo6 : Symbol(foo6, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 69, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 71, 20), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 72, 36)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 72, 14)) >I : Symbol(I, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 18, 1)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo6(x: any) { } >foo6 : Symbol(foo6, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 69, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 71, 20), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 72, 36)) @@ -321,8 +321,8 @@ function foo8(x: I); // ok >foo8 : Symbol(foo8, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 77, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 79, 50), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 80, 36)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 80, 14)) >I : Symbol(I, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 18, 1)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo8(x: any) { } >foo8 : Symbol(foo8, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 77, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 79, 50), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 80, 36)) @@ -339,8 +339,8 @@ function foo9(x: C); // ok >foo9 : Symbol(foo9, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 81, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 83, 50), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 84, 36)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 84, 14)) >C : Symbol(C, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 10, 1)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo9(x: any) { } >foo9 : Symbol(foo9, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 81, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 83, 50), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 84, 36)) @@ -382,15 +382,15 @@ function foo12(x: I); >foo12 : Symbol(foo12, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 93, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 95, 37), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 96, 37)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 95, 15)) >I : Symbol(I, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 18, 1)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo12(x: C); // ok >foo12 : Symbol(foo12, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 93, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 95, 37), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 96, 37)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 96, 15)) >C : Symbol(C, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 10, 1)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo12(x: any) { } >foo12 : Symbol(foo12, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 93, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 95, 37), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 96, 37)) @@ -405,8 +405,8 @@ function foo12b(x: C); // ok >foo12b : Symbol(foo12b, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 97, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 99, 23), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 100, 38)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 100, 16)) >C : Symbol(C, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 10, 1)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo12b(x: any) { } >foo12b : Symbol(foo12b, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 97, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 99, 23), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 100, 38)) @@ -416,8 +416,8 @@ function foo13(x: I); >foo13 : Symbol(foo13, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 101, 27), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 103, 37), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 104, 28)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 103, 15)) >I : Symbol(I, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 18, 1)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo13(x: typeof a); // ok >foo13 : Symbol(foo13, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 101, 27), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 103, 37), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 104, 28)) @@ -432,8 +432,8 @@ function foo14(x: I); >foo14 : Symbol(foo14, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 105, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 107, 37), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 108, 28)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 107, 15)) >I : Symbol(I, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 18, 1)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo14(x: typeof b); // ok >foo14 : Symbol(foo14, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 105, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 107, 37), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 108, 28)) @@ -453,8 +453,8 @@ function foo15(x: C); // ok >foo15 : Symbol(foo15, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 109, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 111, 22), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 112, 37)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 112, 15)) >C : Symbol(C, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 10, 1)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo15(x: any) { } >foo15 : Symbol(foo15, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 109, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 111, 22), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 112, 37)) diff --git a/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.symbols b/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.symbols index 6bcbd98f225..c622452a8e1 100644 --- a/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.symbols +++ b/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.symbols @@ -5,20 +5,20 @@ class One { foo: string } >One : Symbol(One, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 0, 0)) ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 4, 11)) +>foo : Symbol(One.foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 4, 11)) class Two { foo: string } >Two : Symbol(Two, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 4, 25)) ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 5, 11)) +>foo : Symbol(Two.foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 5, 11)) interface Three { foo: string } >Three : Symbol(Three, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 5, 25)) ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 6, 17)) +>foo : Symbol(Three.foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 6, 17)) interface Four { foo: T } >Four : Symbol(Four, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 6, 31)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 7, 15)) ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 7, 19)) +>foo : Symbol(Four.foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 7, 19)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 7, 15)) interface Five extends Four { } @@ -33,7 +33,7 @@ interface Six { >U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 9, 16)) foo: T; ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 9, 21)) +>foo : Symbol(Six.foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 9, 21)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 9, 14)) } @@ -41,7 +41,7 @@ class A { >A : Symbol(A, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 11, 1)) foo(x: T, y: U): string { return null; } ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 13, 9)) +>foo : Symbol(A.foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 13, 9)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 14, 8)) >U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 14, 20)) >U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 14, 20)) @@ -60,7 +60,7 @@ class B { >Two : Symbol(Two, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 4, 25)) foo(x: T, y: U): string { return null; } ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 17, 37)) +>foo : Symbol(B.foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 17, 37)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 18, 8)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 17, 8)) >y : Symbol(y, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 18, 13)) @@ -75,7 +75,7 @@ class C { >Three : Symbol(Three, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 5, 25)) foo(x: T, y: U): string { return null; } ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 21, 39)) +>foo : Symbol(C.foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 21, 39)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 22, 8)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 21, 8)) >y : Symbol(y, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 22, 13)) @@ -90,7 +90,7 @@ class D> { >Four : Symbol(Four, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 6, 31)) foo(x: T, y: U): string { return null; } ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 25, 46)) +>foo : Symbol(D.foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 25, 46)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 26, 8)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 25, 8)) >y : Symbol(y, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 26, 13)) @@ -105,7 +105,7 @@ interface I> { >Five : Symbol(Five, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 7, 28)) foo(x: T, y: U): string; ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 29, 50)) +>foo : Symbol(I.foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 29, 50)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 30, 8)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 29, 12)) >y : Symbol(y, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 30, 13)) @@ -116,7 +116,7 @@ interface I2 { >I2 : Symbol(I2, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 31, 1)) foo>(x: T, y: U): string; ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 33, 14)) +>foo : Symbol(I2.foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 33, 14)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 34, 8)) >U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 34, 20)) >U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 34, 20)) diff --git a/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType.symbols b/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType.symbols index e199d538e4b..a3f4f8038a0 100644 --- a/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType.symbols +++ b/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType.symbols @@ -7,7 +7,7 @@ class A { >A : Symbol(A, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType.ts, 0, 0)) foo(x: T): string { return null; } ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType.ts, 4, 9)) +>foo : Symbol(A.foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType.ts, 4, 9)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType.ts, 5, 8)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType.ts, 5, 11)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType.ts, 5, 8)) @@ -18,7 +18,7 @@ class B { >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType.ts, 8, 8)) foo(x: T): number { return null; } ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType.ts, 8, 12)) +>foo : Symbol(B.foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType.ts, 8, 12)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType.ts, 9, 8)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType.ts, 8, 8)) } @@ -28,7 +28,7 @@ class C { >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType.ts, 12, 8)) foo(x: T): boolean { return null; } ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType.ts, 12, 12)) +>foo : Symbol(C.foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType.ts, 12, 12)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType.ts, 13, 8)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType.ts, 12, 8)) } @@ -38,17 +38,17 @@ interface I { >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType.ts, 16, 12)) foo(x: T): Date; ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType.ts, 16, 16)) +>foo : Symbol(I.foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType.ts, 16, 16)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType.ts, 17, 8)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType.ts, 16, 12)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) } interface I2 { >I2 : Symbol(I2, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType.ts, 18, 1)) foo(x: T): RegExp; ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType.ts, 20, 14)) +>foo : Symbol(I2.foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType.ts, 20, 14)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType.ts, 21, 8)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType.ts, 21, 11)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType.ts, 21, 8)) diff --git a/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.symbols b/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.symbols index a0c520ef3fa..d90a4b1d545 100644 --- a/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.symbols +++ b/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.symbols @@ -7,9 +7,9 @@ class A { >A : Symbol(A, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 0, 0)) foo(x: T): string { return null; } ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 4, 9)) +>foo : Symbol(A.foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 4, 9)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 5, 8)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 5, 24)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 5, 8)) } @@ -17,10 +17,10 @@ class A { class B { >B : Symbol(B, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 6, 1)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 8, 8)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) foo(x: T): number { return null; } ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 8, 25)) +>foo : Symbol(B.foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 8, 25)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 9, 8)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 8, 8)) } @@ -28,10 +28,10 @@ class B { class C { >C : Symbol(C, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 10, 1)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 12, 8)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) foo(x: T): boolean { return null; } ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 12, 25)) +>foo : Symbol(C.foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 12, 25)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 13, 8)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 12, 8)) } @@ -39,22 +39,22 @@ class C { interface I { >I : Symbol(I, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 14, 1)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 16, 12)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) foo(x: T): Date; ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 16, 29)) +>foo : Symbol(I.foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 16, 29)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 17, 8)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 16, 12)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) } interface I2 { >I2 : Symbol(I2, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 18, 1)) foo(x: T): RegExp; ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 20, 14)) +>foo : Symbol(I2.foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 20, 14)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 21, 8)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 21, 24)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 21, 8)) >RegExp : Symbol(RegExp, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) @@ -64,7 +64,7 @@ var a: { foo(x: T): T } >a : Symbol(a, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 24, 3)) >foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 24, 8)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 24, 13)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 24, 29)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 24, 13)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 24, 13)) @@ -73,7 +73,7 @@ var b = { foo(x: T) { return null; } }; >b : Symbol(b, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 25, 3)) >foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 25, 9)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 25, 14)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 25, 30)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 25, 14)) @@ -95,13 +95,13 @@ function foo1b(x: B); >foo1b : Symbol(foo1b, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 29, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 31, 27), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 32, 27)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 31, 15)) >B : Symbol(B, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 6, 1)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo1b(x: B); // error >foo1b : Symbol(foo1b, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 29, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 31, 27), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 32, 27)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 32, 15)) >B : Symbol(B, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 6, 1)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo1b(x: any) { } >foo1b : Symbol(foo1b, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 29, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 31, 27), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 32, 27)) @@ -111,13 +111,13 @@ function foo1c(x: C); >foo1c : Symbol(foo1c, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 33, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 35, 27), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 36, 27)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 35, 15)) >C : Symbol(C, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 10, 1)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo1c(x: C); // error >foo1c : Symbol(foo1c, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 33, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 35, 27), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 36, 27)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 36, 15)) >C : Symbol(C, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 10, 1)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo1c(x: any) { } >foo1c : Symbol(foo1c, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 33, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 35, 27), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 36, 27)) @@ -127,13 +127,13 @@ function foo2(x: I); >foo2 : Symbol(foo2, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 37, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 39, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 40, 26)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 39, 14)) >I : Symbol(I, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 14, 1)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo2(x: I); // error >foo2 : Symbol(foo2, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 37, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 39, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 40, 26)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 40, 14)) >I : Symbol(I, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 14, 1)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo2(x: any) { } >foo2 : Symbol(foo2, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 37, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 39, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 40, 26)) @@ -176,7 +176,7 @@ function foo5(x: B); // ok >foo5 : Symbol(foo5, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 49, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 51, 20), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 52, 26)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 52, 14)) >B : Symbol(B, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 6, 1)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo5(x: any) { } >foo5 : Symbol(foo5, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 49, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 51, 20), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 52, 26)) @@ -191,7 +191,7 @@ function foo5b(x: C); // ok >foo5b : Symbol(foo5b, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 53, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 55, 21), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 56, 27)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 56, 15)) >C : Symbol(C, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 10, 1)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo5b(x: any) { } >foo5b : Symbol(foo5b, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 53, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 55, 21), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 56, 27)) @@ -206,7 +206,7 @@ function foo6(x: I); // ok >foo6 : Symbol(foo6, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 57, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 59, 20), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 60, 26)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 60, 14)) >I : Symbol(I, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 14, 1)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo6(x: any) { } >foo6 : Symbol(foo6, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 57, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 59, 20), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 60, 26)) @@ -230,13 +230,13 @@ function foo8(x: B); >foo8 : Symbol(foo8, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 65, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 67, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 68, 26)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 67, 14)) >B : Symbol(B, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 6, 1)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo8(x: I); // ok >foo8 : Symbol(foo8, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 65, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 67, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 68, 26)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 68, 14)) >I : Symbol(I, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 14, 1)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo8(x: any) { } >foo8 : Symbol(foo8, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 65, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 67, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 68, 26)) @@ -246,13 +246,13 @@ function foo9(x: B); >foo9 : Symbol(foo9, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 69, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 71, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 72, 26)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 71, 14)) >B : Symbol(B, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 6, 1)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo9(x: C); // ok >foo9 : Symbol(foo9, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 69, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 71, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 72, 26)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 72, 14)) >C : Symbol(C, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 10, 1)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo9(x: any) { } >foo9 : Symbol(foo9, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 69, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 71, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 72, 26)) @@ -262,7 +262,7 @@ function foo10(x: B); >foo10 : Symbol(foo10, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 73, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 75, 27), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 76, 28)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 75, 15)) >B : Symbol(B, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 6, 1)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo10(x: typeof a); // ok >foo10 : Symbol(foo10, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 73, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 75, 27), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 76, 28)) @@ -277,7 +277,7 @@ function foo11(x: B); >foo11 : Symbol(foo11, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 77, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 79, 27), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 80, 28)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 79, 15)) >B : Symbol(B, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 6, 1)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo11(x: typeof b); // ok >foo11 : Symbol(foo11, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 77, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 79, 27), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 80, 28)) @@ -292,13 +292,13 @@ function foo12(x: I); >foo12 : Symbol(foo12, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 81, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 83, 27), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 84, 27)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 83, 15)) >I : Symbol(I, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 14, 1)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo12(x: C); // ok >foo12 : Symbol(foo12, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 81, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 83, 27), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 84, 27)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 84, 15)) >C : Symbol(C, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 10, 1)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo12(x: any) { } >foo12 : Symbol(foo12, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 81, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 83, 27), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 84, 27)) @@ -313,7 +313,7 @@ function foo12b(x: C); // ok >foo12b : Symbol(foo12b, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 85, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 87, 23), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 88, 28)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 88, 16)) >C : Symbol(C, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 10, 1)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo12b(x: any) { } >foo12b : Symbol(foo12b, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 85, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 87, 23), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 88, 28)) @@ -323,7 +323,7 @@ function foo13(x: I); >foo13 : Symbol(foo13, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 89, 27), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 91, 27), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 92, 28)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 91, 15)) >I : Symbol(I, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 14, 1)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo13(x: typeof a); // ok >foo13 : Symbol(foo13, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 89, 27), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 91, 27), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 92, 28)) @@ -338,7 +338,7 @@ function foo14(x: I); >foo14 : Symbol(foo14, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 93, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 95, 27), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 96, 28)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 95, 15)) >I : Symbol(I, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 14, 1)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo14(x: typeof b); // ok >foo14 : Symbol(foo14, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 93, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 95, 27), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 96, 28)) @@ -358,7 +358,7 @@ function foo15(x: C); // ok >foo15 : Symbol(foo15, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 97, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 99, 22), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 100, 27)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 100, 15)) >C : Symbol(C, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 10, 1)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo15(x: any) { } >foo15 : Symbol(foo15, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 97, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 99, 22), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts, 100, 27)) diff --git a/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.symbols b/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.symbols index a4760572e7d..748c945d8d0 100644 --- a/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.symbols +++ b/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.symbols @@ -5,7 +5,7 @@ class A { >A : Symbol(A, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 0, 0)) foo(x: T): T { return null; } ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 2, 9)) +>foo : Symbol(A.foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 2, 9)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 3, 8)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 3, 11)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 3, 8)) @@ -18,7 +18,7 @@ class B { >V : Symbol(V, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 6, 10)) foo(x: U): U { return null; } ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 6, 15)) +>foo : Symbol(B.foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 6, 15)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 7, 8)) >U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 6, 8)) >U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 6, 8)) @@ -31,7 +31,7 @@ class C { >X : Symbol(X, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 10, 13)) foo(x: V): V { return null; } ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 10, 18)) +>foo : Symbol(C.foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 10, 18)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 11, 8)) >V : Symbol(V, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 10, 8)) >V : Symbol(V, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 10, 8)) @@ -45,7 +45,7 @@ interface I { >A : Symbol(A, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 14, 20)) foo(x: X): X; ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 14, 25)) +>foo : Symbol(I.foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 14, 25)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 15, 8)) >X : Symbol(X, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 14, 12)) >X : Symbol(X, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 14, 12)) @@ -55,7 +55,7 @@ interface I2 { >I2 : Symbol(I2, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 16, 1)) foo(x: Y): Y; ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 18, 14)) +>foo : Symbol(I2.foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 18, 14)) >Y : Symbol(Y, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 19, 8)) >Z : Symbol(Z, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 19, 10)) >A : Symbol(A, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 19, 13)) @@ -211,7 +211,7 @@ function foo6(x: I); // ok >foo6 : Symbol(foo6, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 55, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 57, 20), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 58, 51)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 58, 14)) >I : Symbol(I, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 12, 1)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo6(x: any) { } >foo6 : Symbol(foo6, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 55, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 57, 20), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 58, 51)) @@ -240,7 +240,7 @@ function foo8(x: I); // error >foo8 : Symbol(foo8, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 63, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 65, 36), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 66, 51)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 66, 14)) >I : Symbol(I, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 12, 1)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo8(x: any) { } >foo8 : Symbol(foo8, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 63, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 65, 36), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 66, 51)) @@ -294,14 +294,14 @@ function foo12(x: I, number, Date, string>); >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 81, 15)) >I : Symbol(I, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 12, 1)) >B : Symbol(B, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 4, 1)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo12(x: C, number, Date>); // error >foo12 : Symbol(foo12, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 79, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 81, 62), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 82, 54)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 82, 15)) >C : Symbol(C, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 8, 1)) >B : Symbol(B, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 4, 1)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo12(x: any) { } >foo12 : Symbol(foo12, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 79, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 81, 62), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 82, 54)) @@ -325,9 +325,9 @@ function foo13(x: I); >foo13 : Symbol(foo13, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 87, 27), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 89, 49), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 90, 28)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 89, 15)) >I : Symbol(I, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 12, 1)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >RegExp : Symbol(RegExp, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo13(x: typeof a); // ok >foo13 : Symbol(foo13, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 87, 27), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 89, 49), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 90, 28)) @@ -342,7 +342,7 @@ function foo14(x: I); >foo14 : Symbol(foo14, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 91, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 93, 52), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 94, 28)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 93, 15)) >I : Symbol(I, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts, 12, 1)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >RegExp : Symbol(RegExp, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo14(x: typeof b); // ok diff --git a/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts2.symbols b/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts2.symbols index d1f87946de5..a69ddbe5647 100644 --- a/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts2.symbols +++ b/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts2.symbols @@ -85,7 +85,7 @@ function foo13(x: I); >foo13 : Symbol(foo13, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts2.ts, 23, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts2.ts, 25, 52), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts2.ts, 26, 28)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts2.ts, 25, 15)) >I : Symbol(I, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts2.ts, 0, 0)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo13(x: typeof a); // ok >foo13 : Symbol(foo13, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts2.ts, 23, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts2.ts, 25, 52), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts2.ts, 26, 28)) @@ -100,7 +100,7 @@ function foo14(x: I); >foo14 : Symbol(foo14, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts2.ts, 27, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts2.ts, 29, 52), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts2.ts, 30, 22)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts2.ts, 29, 15)) >I : Symbol(I, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts2.ts, 0, 0)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo14(x: I2); // error >foo14 : Symbol(foo14, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts2.ts, 27, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts2.ts, 29, 52), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts2.ts, 30, 22)) @@ -129,7 +129,7 @@ function foo15(x: I); >foo15 : Symbol(foo15, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts2.ts, 35, 27), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts2.ts, 37, 52), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts2.ts, 38, 22)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts2.ts, 37, 15)) >I : Symbol(I, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts2.ts, 0, 0)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo15(x: I2); // ok >foo15 : Symbol(foo15, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts2.ts, 35, 27), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts2.ts, 37, 52), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts2.ts, 38, 22)) diff --git a/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterNames.symbols b/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterNames.symbols index 94e6aaf0139..851388a4604 100644 --- a/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterNames.symbols +++ b/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterNames.symbols @@ -5,7 +5,7 @@ class A { >A : Symbol(A, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterNames.ts, 0, 0)) foo(x: T): T { return null; } ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterNames.ts, 2, 9)) +>foo : Symbol(A.foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterNames.ts, 2, 9)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterNames.ts, 3, 8)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterNames.ts, 3, 11)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterNames.ts, 3, 8)) @@ -17,7 +17,7 @@ class B { >U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterNames.ts, 6, 8)) foo(x: U): U { return null; } ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterNames.ts, 6, 12)) +>foo : Symbol(B.foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterNames.ts, 6, 12)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterNames.ts, 7, 8)) >U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterNames.ts, 6, 8)) >U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterNames.ts, 6, 8)) @@ -28,7 +28,7 @@ class C { >V : Symbol(V, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterNames.ts, 10, 8)) foo(x: V): V { return null; } ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterNames.ts, 10, 12)) +>foo : Symbol(C.foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterNames.ts, 10, 12)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterNames.ts, 11, 8)) >V : Symbol(V, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterNames.ts, 10, 8)) >V : Symbol(V, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterNames.ts, 10, 8)) @@ -39,7 +39,7 @@ interface I { >X : Symbol(X, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterNames.ts, 14, 12)) foo(x: X): X; ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterNames.ts, 14, 16)) +>foo : Symbol(I.foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterNames.ts, 14, 16)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterNames.ts, 15, 8)) >X : Symbol(X, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterNames.ts, 14, 12)) >X : Symbol(X, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterNames.ts, 14, 12)) @@ -49,7 +49,7 @@ interface I2 { >I2 : Symbol(I2, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterNames.ts, 16, 1)) foo(x: Y): Y; ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterNames.ts, 18, 14)) +>foo : Symbol(I2.foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterNames.ts, 18, 14)) >Y : Symbol(Y, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterNames.ts, 19, 8)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterNames.ts, 19, 11)) >Y : Symbol(Y, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterNames.ts, 19, 8)) diff --git a/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesOptionalParams.symbols b/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesOptionalParams.symbols index 0bb008d82be..9edbcf9e6ad 100644 --- a/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesOptionalParams.symbols +++ b/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesOptionalParams.symbols @@ -7,7 +7,7 @@ class A { >A : Symbol(A, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams.ts, 0, 0)) foo(x: T, y?: T): T { return null; } ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams.ts, 4, 9)) +>foo : Symbol(A.foo, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams.ts, 4, 9)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams.ts, 5, 8)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams.ts, 5, 11)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams.ts, 5, 8)) @@ -21,7 +21,7 @@ class B { >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams.ts, 8, 8)) foo(x: T, y?: T): T { return null; } ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams.ts, 8, 12)) +>foo : Symbol(B.foo, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams.ts, 8, 12)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams.ts, 9, 8)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams.ts, 8, 8)) >y : Symbol(y, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams.ts, 9, 13)) @@ -34,7 +34,7 @@ class C { >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams.ts, 12, 8)) foo(x: T, y?: T): T { return null; } ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams.ts, 12, 12)) +>foo : Symbol(C.foo, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams.ts, 12, 12)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams.ts, 13, 8)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams.ts, 12, 8)) >y : Symbol(y, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams.ts, 13, 13)) @@ -47,7 +47,7 @@ interface I { >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams.ts, 16, 12)) foo(x: T, y?: T): T; ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams.ts, 16, 16)) +>foo : Symbol(I.foo, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams.ts, 16, 16)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams.ts, 17, 8)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams.ts, 16, 12)) >y : Symbol(y, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams.ts, 17, 13)) @@ -59,7 +59,7 @@ interface I2 { >I2 : Symbol(I2, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams.ts, 18, 1)) foo(x: T, y?: T): T; ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams.ts, 20, 14)) +>foo : Symbol(I2.foo, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams.ts, 20, 14)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams.ts, 21, 8)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams.ts, 21, 11)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams.ts, 21, 8)) diff --git a/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesOptionalParams2.symbols b/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesOptionalParams2.symbols index 8878d73f576..9fcac2f65ed 100644 --- a/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesOptionalParams2.symbols +++ b/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesOptionalParams2.symbols @@ -7,7 +7,7 @@ class A { >A : Symbol(A, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams2.ts, 0, 0)) foo(x: T, y?: U): T { return null; } ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams2.ts, 4, 9)) +>foo : Symbol(A.foo, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams2.ts, 4, 9)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams2.ts, 5, 8)) >U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams2.ts, 5, 10)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams2.ts, 5, 14)) @@ -23,7 +23,7 @@ class B { >U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams2.ts, 8, 10)) foo(x: T, y?: U): T { return null; } ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams2.ts, 8, 15)) +>foo : Symbol(B.foo, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams2.ts, 8, 15)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams2.ts, 9, 8)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams2.ts, 8, 8)) >y : Symbol(y, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams2.ts, 9, 13)) @@ -37,7 +37,7 @@ class C { >U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams2.ts, 12, 10)) foo(x: T, y?: U): T { return null; } ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams2.ts, 12, 15)) +>foo : Symbol(C.foo, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams2.ts, 12, 15)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams2.ts, 13, 8)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams2.ts, 12, 8)) >y : Symbol(y, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams2.ts, 13, 13)) @@ -51,7 +51,7 @@ interface I { >U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams2.ts, 16, 14)) foo(x: T, y?: U): T; ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams2.ts, 16, 19)) +>foo : Symbol(I.foo, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams2.ts, 16, 19)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams2.ts, 17, 8)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams2.ts, 16, 12)) >y : Symbol(y, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams2.ts, 17, 13)) @@ -63,7 +63,7 @@ interface I2 { >I2 : Symbol(I2, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams2.ts, 18, 1)) foo(x: T, y?: U): T; ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams2.ts, 20, 14)) +>foo : Symbol(I2.foo, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams2.ts, 20, 14)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams2.ts, 21, 8)) >U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams2.ts, 21, 10)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams2.ts, 21, 14)) diff --git a/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesOptionalParams3.symbols b/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesOptionalParams3.symbols index b1cfab012bf..ff215bfbe58 100644 --- a/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesOptionalParams3.symbols +++ b/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesOptionalParams3.symbols @@ -7,7 +7,7 @@ class A { >A : Symbol(A, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams3.ts, 0, 0)) foo(x: T, y?: U): T { return null; } ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams3.ts, 4, 9)) +>foo : Symbol(A.foo, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams3.ts, 4, 9)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams3.ts, 5, 8)) >U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams3.ts, 5, 10)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams3.ts, 5, 14)) @@ -23,7 +23,7 @@ class B { >U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams3.ts, 8, 10)) foo(x: T, y: U): T { return null; } ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams3.ts, 8, 15)) +>foo : Symbol(B.foo, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams3.ts, 8, 15)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams3.ts, 9, 8)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams3.ts, 8, 8)) >y : Symbol(y, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams3.ts, 9, 13)) @@ -37,7 +37,7 @@ class C { >U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams3.ts, 12, 10)) foo(x: T, y?: U): T { return null; } ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams3.ts, 12, 15)) +>foo : Symbol(C.foo, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams3.ts, 12, 15)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams3.ts, 13, 8)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams3.ts, 12, 8)) >y : Symbol(y, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams3.ts, 13, 13)) @@ -51,7 +51,7 @@ interface I { >U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams3.ts, 16, 14)) foo(x: T, y?: U): T; ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams3.ts, 16, 19)) +>foo : Symbol(I.foo, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams3.ts, 16, 19)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams3.ts, 17, 8)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams3.ts, 16, 12)) >y : Symbol(y, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams3.ts, 17, 13)) @@ -63,7 +63,7 @@ interface I2 { >I2 : Symbol(I2, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams3.ts, 18, 1)) foo(x: T, y: U): T; ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams3.ts, 20, 14)) +>foo : Symbol(I2.foo, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams3.ts, 20, 14)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams3.ts, 21, 8)) >U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams3.ts, 21, 10)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesOptionalParams3.ts, 21, 14)) diff --git a/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.symbols b/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.symbols index fb3fba82cb2..c95d5234ac5 100644 --- a/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.symbols +++ b/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.symbols @@ -16,7 +16,7 @@ class B> { class C { >C : Symbol(C, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 6, 1)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 8, 8)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) constructor(x: T) { return null; } >x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 9, 16)) @@ -26,7 +26,7 @@ class C { interface I { >I : Symbol(I, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 10, 1)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 12, 12)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) new(x: T): string; >x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 13, 8)) @@ -78,13 +78,13 @@ function foo1c(x: C); >foo1c : Symbol(foo1c, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 25, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 27, 29), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 28, 29)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 27, 15)) >C : Symbol(C, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 6, 1)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo1c(x: C); // error >foo1c : Symbol(foo1c, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 25, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 27, 29), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 28, 29)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 28, 15)) >C : Symbol(C, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 6, 1)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo1c(x: any) { } >foo1c : Symbol(foo1c, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 25, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 27, 29), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 28, 29)) @@ -94,13 +94,13 @@ function foo2(x: I); >foo2 : Symbol(foo2, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 29, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 31, 28), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 32, 28)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 31, 14)) >I : Symbol(I, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 10, 1)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo2(x: I); // error >foo2 : Symbol(foo2, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 29, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 31, 28), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 32, 28)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 32, 14)) >I : Symbol(I, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 10, 1)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo2(x: any) { } >foo2 : Symbol(foo2, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 29, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 31, 28), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 32, 28)) @@ -144,7 +144,7 @@ function foo8(x: I); // ok >foo8 : Symbol(foo8, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 41, 25), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 43, 35), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 44, 28)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 44, 14)) >I : Symbol(I, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 10, 1)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo8(x: any) { } >foo8 : Symbol(foo8, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 41, 25), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 43, 35), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 44, 28)) @@ -160,7 +160,7 @@ function foo9(x: C); // error, types are structurally equal >foo9 : Symbol(foo9, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 45, 25), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 47, 35), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 48, 28)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 48, 14)) >C : Symbol(C, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 6, 1)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo9(x: any) { } >foo9 : Symbol(foo9, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 45, 25), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 47, 35), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 48, 28)) @@ -200,13 +200,13 @@ function foo12(x: I); >foo12 : Symbol(foo12, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 57, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 59, 29), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 60, 29)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 59, 15)) >I : Symbol(I, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 10, 1)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo12(x: C); // ok >foo12 : Symbol(foo12, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 57, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 59, 29), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 60, 29)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 60, 15)) >C : Symbol(C, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 6, 1)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo12(x: any) { } >foo12 : Symbol(foo12, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 57, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 59, 29), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 60, 29)) @@ -221,7 +221,7 @@ function foo12b(x: C); // ok >foo12b : Symbol(foo12b, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 61, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 63, 23), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 64, 30)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 64, 16)) >C : Symbol(C, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 6, 1)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo12b(x: any) { } >foo12b : Symbol(foo12b, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 61, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 63, 23), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 64, 30)) @@ -231,7 +231,7 @@ function foo13(x: I); >foo13 : Symbol(foo13, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 65, 27), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 67, 29), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 68, 28)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 67, 15)) >I : Symbol(I, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 10, 1)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo13(x: typeof a); // ok >foo13 : Symbol(foo13, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 65, 27), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 67, 29), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 68, 28)) @@ -246,7 +246,7 @@ function foo14(x: I); >foo14 : Symbol(foo14, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 69, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 71, 29), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 72, 28)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 71, 15)) >I : Symbol(I, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 10, 1)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo14(x: typeof b); // ok >foo14 : Symbol(foo14, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 69, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 71, 29), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts, 72, 28)) diff --git a/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.symbols b/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.symbols index ce55a114621..8d82f4ea140 100644 --- a/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.symbols +++ b/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.symbols @@ -22,7 +22,7 @@ class C { >T : Symbol(T, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 8, 8)) >U : Symbol(U, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 8, 20)) >U : Symbol(U, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 8, 20)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) constructor(x: T, y: U) { return null; } >x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 9, 16)) @@ -36,7 +36,7 @@ class D { >T : Symbol(T, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 12, 8)) >U : Symbol(U, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 12, 20)) >U : Symbol(U, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 12, 20)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) constructor(x: T, y: U) { return null; } >x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 13, 16)) @@ -50,7 +50,7 @@ interface I { >T : Symbol(T, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 16, 12)) >U : Symbol(U, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 16, 24)) >U : Symbol(U, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 16, 24)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) new(x: T, y: U): string; >x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 17, 8)) @@ -118,15 +118,15 @@ function foo1c(x: C); >foo1c : Symbol(foo1c, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 29, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 31, 37), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 32, 37)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 31, 15)) >C : Symbol(C, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 6, 1)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo1c(x: C); // error >foo1c : Symbol(foo1c, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 29, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 31, 37), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 32, 37)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 32, 15)) >C : Symbol(C, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 6, 1)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo1c(x: any) { } >foo1c : Symbol(foo1c, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 29, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 31, 37), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 32, 37)) @@ -136,15 +136,15 @@ function foo2(x: I); >foo2 : Symbol(foo2, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 33, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 35, 36), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 36, 36)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 35, 14)) >I : Symbol(I, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 14, 1)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo2(x: I); // error >foo2 : Symbol(foo2, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 33, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 35, 36), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 36, 36)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 36, 14)) >I : Symbol(I, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 14, 1)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo2(x: any) { } >foo2 : Symbol(foo2, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 33, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 35, 36), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 36, 36)) @@ -182,15 +182,15 @@ function foo5c(x: C); >foo5c : Symbol(foo5c, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 45, 25), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 47, 37), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 48, 37)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 47, 15)) >C : Symbol(C, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 6, 1)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo5c(x: D); // ok >foo5c : Symbol(foo5c, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 45, 25), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 47, 37), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 48, 37)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 48, 15)) >D : Symbol(D, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 10, 1)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo5c(x: any) { } >foo5c : Symbol(foo5c, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 45, 25), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 47, 37), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 48, 37)) @@ -200,14 +200,14 @@ function foo6c(x: C); >foo6c : Symbol(foo6c, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 49, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 51, 37), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 52, 34)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 51, 15)) >C : Symbol(C, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 6, 1)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo6c(x: D); // ok >foo6c : Symbol(foo6c, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 49, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 51, 37), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 52, 34)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 52, 15)) >D : Symbol(D, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 10, 1)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo6c(x: any) { } >foo6c : Symbol(foo6c, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 49, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 51, 37), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 52, 34)) @@ -224,8 +224,8 @@ function foo8(x: I); // ok >foo8 : Symbol(foo8, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 53, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 55, 50), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 56, 36)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 56, 14)) >I : Symbol(I, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 14, 1)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo8(x: any) { } >foo8 : Symbol(foo8, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 53, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 55, 50), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 56, 36)) @@ -242,8 +242,8 @@ function foo9(x: C); // error, types are structurally equal >foo9 : Symbol(foo9, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 57, 25), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 59, 50), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 60, 36)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 60, 14)) >C : Symbol(C, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 6, 1)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo9(x: any) { } >foo9 : Symbol(foo9, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 57, 25), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 59, 50), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 60, 36)) @@ -285,15 +285,15 @@ function foo12(x: I); >foo12 : Symbol(foo12, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 69, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 71, 37), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 72, 37)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 71, 15)) >I : Symbol(I, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 14, 1)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo12(x: C); // ok >foo12 : Symbol(foo12, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 69, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 71, 37), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 72, 37)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 72, 15)) >C : Symbol(C, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 6, 1)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo12(x: any) { } >foo12 : Symbol(foo12, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 69, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 71, 37), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 72, 37)) @@ -308,8 +308,8 @@ function foo12b(x: C); // ok >foo12b : Symbol(foo12b, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 73, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 75, 23), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 76, 38)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 76, 16)) >C : Symbol(C, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 6, 1)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo12b(x: any) { } >foo12b : Symbol(foo12b, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 73, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 75, 23), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 76, 38)) @@ -319,8 +319,8 @@ function foo13(x: I); >foo13 : Symbol(foo13, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 77, 27), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 79, 37), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 80, 28)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 79, 15)) >I : Symbol(I, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 14, 1)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo13(x: typeof a); // ok >foo13 : Symbol(foo13, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 77, 27), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 79, 37), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 80, 28)) @@ -335,8 +335,8 @@ function foo14(x: I); >foo14 : Symbol(foo14, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 81, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 83, 37), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 84, 28)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 83, 15)) >I : Symbol(I, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 14, 1)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo14(x: typeof b); // ok >foo14 : Symbol(foo14, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 81, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 83, 37), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 84, 28)) diff --git a/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.symbols b/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.symbols index 4d7adc798f9..ffd5363f030 100644 --- a/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.symbols +++ b/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.symbols @@ -5,20 +5,20 @@ class One { foo: string } >One : Symbol(One, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 0, 0)) ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 4, 11)) +>foo : Symbol(One.foo, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 4, 11)) class Two { foo: string } >Two : Symbol(Two, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 4, 25)) ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 5, 11)) +>foo : Symbol(Two.foo, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 5, 11)) interface Three { foo: string } >Three : Symbol(Three, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 5, 25)) ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 6, 17)) +>foo : Symbol(Three.foo, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 6, 17)) interface Four { foo: T } >Four : Symbol(Four, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 6, 31)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 7, 15)) ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 7, 19)) +>foo : Symbol(Four.foo, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 7, 19)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 7, 15)) interface Five extends Four { } @@ -33,7 +33,7 @@ interface Six { >U : Symbol(U, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 9, 16)) foo: T; ->foo : Symbol(foo, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 9, 21)) +>foo : Symbol(Six.foo, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 9, 21)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 9, 14)) } diff --git a/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType.symbols b/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType.symbols index 422b5820a8b..418ed27a99d 100644 --- a/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType.symbols +++ b/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType.symbols @@ -28,7 +28,7 @@ interface I { new(x: T): Date; >x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType.ts, 13, 8)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType.ts, 12, 12)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) } interface I2 { diff --git a/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.symbols b/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.symbols index e44493e933b..23702ebab68 100644 --- a/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.symbols +++ b/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.symbols @@ -6,7 +6,7 @@ class B { >B : Symbol(B, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 0, 0)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 4, 8)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) constructor(x: T) { return null; } >x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 5, 16)) @@ -16,7 +16,7 @@ class B { class C { >C : Symbol(C, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 6, 1)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 8, 8)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) constructor(x: T) { return null; } >x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 9, 16)) @@ -26,12 +26,12 @@ class C { interface I { >I : Symbol(I, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 10, 1)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 12, 12)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) new(x: T): Date; >x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 13, 8)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 12, 12)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) } interface I2 { @@ -39,7 +39,7 @@ interface I2 { new(x: T): RegExp; >T : Symbol(T, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 17, 8)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 17, 24)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 17, 8)) >RegExp : Symbol(RegExp, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) @@ -48,7 +48,7 @@ interface I2 { var a: { new(x: T): T } >a : Symbol(a, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 20, 3)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 20, 13)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 20, 29)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 20, 13)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 20, 13)) @@ -57,7 +57,7 @@ var b = { new(x: T) { return null; } }; // not a construct signa >b : Symbol(b, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 21, 3)) >new : Symbol(new, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 21, 9)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 21, 14)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 21, 30)) >T : Symbol(T, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 21, 14)) @@ -65,13 +65,13 @@ function foo1b(x: B); >foo1b : Symbol(foo1b, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 21, 55), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 23, 27), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 24, 27)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 23, 15)) >B : Symbol(B, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 0, 0)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo1b(x: B); // error >foo1b : Symbol(foo1b, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 21, 55), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 23, 27), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 24, 27)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 24, 15)) >B : Symbol(B, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 0, 0)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo1b(x: any) { } >foo1b : Symbol(foo1b, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 21, 55), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 23, 27), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 24, 27)) @@ -81,13 +81,13 @@ function foo1c(x: C); >foo1c : Symbol(foo1c, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 25, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 27, 27), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 28, 27)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 27, 15)) >C : Symbol(C, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 6, 1)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo1c(x: C); // error >foo1c : Symbol(foo1c, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 25, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 27, 27), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 28, 27)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 28, 15)) >C : Symbol(C, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 6, 1)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo1c(x: any) { } >foo1c : Symbol(foo1c, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 25, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 27, 27), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 28, 27)) @@ -97,13 +97,13 @@ function foo2(x: I); >foo2 : Symbol(foo2, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 29, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 31, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 32, 26)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 31, 14)) >I : Symbol(I, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 10, 1)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo2(x: I); // error >foo2 : Symbol(foo2, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 29, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 31, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 32, 26)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 32, 14)) >I : Symbol(I, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 10, 1)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo2(x: any) { } >foo2 : Symbol(foo2, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 29, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 31, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 32, 26)) @@ -141,13 +141,13 @@ function foo8(x: B); >foo8 : Symbol(foo8, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 41, 25), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 43, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 44, 26)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 43, 14)) >B : Symbol(B, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 0, 0)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo8(x: I); // ok >foo8 : Symbol(foo8, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 41, 25), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 43, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 44, 26)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 44, 14)) >I : Symbol(I, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 10, 1)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo8(x: any) { } >foo8 : Symbol(foo8, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 41, 25), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 43, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 44, 26)) @@ -157,13 +157,13 @@ function foo9(x: B); >foo9 : Symbol(foo9, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 45, 25), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 47, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 48, 26)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 47, 14)) >B : Symbol(B, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 0, 0)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo9(x: C); // error since types are structurally equal >foo9 : Symbol(foo9, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 45, 25), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 47, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 48, 26)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 48, 14)) >C : Symbol(C, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 6, 1)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo9(x: any) { } >foo9 : Symbol(foo9, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 45, 25), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 47, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 48, 26)) @@ -173,7 +173,7 @@ function foo10(x: B); >foo10 : Symbol(foo10, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 49, 25), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 51, 27), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 52, 28)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 51, 15)) >B : Symbol(B, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 0, 0)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo10(x: typeof a); // ok >foo10 : Symbol(foo10, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 49, 25), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 51, 27), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 52, 28)) @@ -188,7 +188,7 @@ function foo11(x: B); >foo11 : Symbol(foo11, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 53, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 55, 27), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 56, 28)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 55, 15)) >B : Symbol(B, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 0, 0)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo11(x: typeof b); // ok >foo11 : Symbol(foo11, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 53, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 55, 27), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 56, 28)) @@ -203,13 +203,13 @@ function foo12(x: I); >foo12 : Symbol(foo12, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 57, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 59, 27), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 60, 27)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 59, 15)) >I : Symbol(I, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 10, 1)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo12(x: C); // ok >foo12 : Symbol(foo12, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 57, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 59, 27), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 60, 27)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 60, 15)) >C : Symbol(C, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 6, 1)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo12(x: any) { } >foo12 : Symbol(foo12, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 57, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 59, 27), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 60, 27)) @@ -224,7 +224,7 @@ function foo12b(x: C); // ok >foo12b : Symbol(foo12b, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 61, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 63, 23), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 64, 28)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 64, 16)) >C : Symbol(C, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 6, 1)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo12b(x: any) { } >foo12b : Symbol(foo12b, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 61, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 63, 23), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 64, 28)) @@ -234,7 +234,7 @@ function foo13(x: I); >foo13 : Symbol(foo13, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 65, 27), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 67, 27), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 68, 28)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 67, 15)) >I : Symbol(I, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 10, 1)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo13(x: typeof a); // ok >foo13 : Symbol(foo13, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 65, 27), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 67, 27), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 68, 28)) @@ -249,7 +249,7 @@ function foo14(x: I); >foo14 : Symbol(foo14, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 69, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 71, 27), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 72, 28)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 71, 15)) >I : Symbol(I, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 10, 1)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo14(x: typeof b); // ok >foo14 : Symbol(foo14, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 69, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 71, 27), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 72, 28)) @@ -269,7 +269,7 @@ function foo15(x: C); // ok >foo15 : Symbol(foo15, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 73, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 75, 22), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 76, 27)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 76, 15)) >C : Symbol(C, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 6, 1)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo15(x: any) { } >foo15 : Symbol(foo15, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 73, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 75, 22), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts, 76, 27)) diff --git a/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterCounts.symbols b/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterCounts.symbols index 48f28e40b8a..e03c24b2ce5 100644 --- a/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterCounts.symbols +++ b/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterCounts.symbols @@ -159,7 +159,7 @@ function foo8(x: I); // BUG 832086 >foo8 : Symbol(foo8, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterCounts.ts, 39, 25), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterCounts.ts, 41, 36), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterCounts.ts, 42, 51)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterCounts.ts, 42, 14)) >I : Symbol(I, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterCounts.ts, 8, 1)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo8(x: any) { } >foo8 : Symbol(foo8, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterCounts.ts, 39, 25), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterCounts.ts, 41, 36), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterCounts.ts, 42, 51)) @@ -213,14 +213,14 @@ function foo12(x: I, number, Date, string>); >x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterCounts.ts, 57, 15)) >I : Symbol(I, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterCounts.ts, 8, 1)) >B : Symbol(B, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterCounts.ts, 0, 0)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo12(x: C, number, Date>); // ok >foo12 : Symbol(foo12, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterCounts.ts, 55, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterCounts.ts, 57, 62), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterCounts.ts, 58, 54)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterCounts.ts, 58, 15)) >C : Symbol(C, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterCounts.ts, 4, 1)) >B : Symbol(B, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterCounts.ts, 0, 0)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo12(x: any) { } >foo12 : Symbol(foo12, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterCounts.ts, 55, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterCounts.ts, 57, 62), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterCounts.ts, 58, 54)) @@ -244,9 +244,9 @@ function foo13(x: I); >foo13 : Symbol(foo13, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterCounts.ts, 63, 27), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterCounts.ts, 65, 49), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterCounts.ts, 66, 28)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterCounts.ts, 65, 15)) >I : Symbol(I, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterCounts.ts, 8, 1)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >RegExp : Symbol(RegExp, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo13(x: typeof a); // ok >foo13 : Symbol(foo13, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterCounts.ts, 63, 27), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterCounts.ts, 65, 49), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterCounts.ts, 66, 28)) @@ -261,7 +261,7 @@ function foo14(x: I); >foo14 : Symbol(foo14, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterCounts.ts, 67, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterCounts.ts, 69, 52), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterCounts.ts, 70, 28)) >x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterCounts.ts, 69, 15)) >I : Symbol(I, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterCounts.ts, 8, 1)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >RegExp : Symbol(RegExp, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function foo14(x: typeof b); // ok diff --git a/tests/baselines/reference/objectTypesIdentityWithNumericIndexers2.symbols b/tests/baselines/reference/objectTypesIdentityWithNumericIndexers2.symbols index 375fff858fb..5fde90941ef 100644 --- a/tests/baselines/reference/objectTypesIdentityWithNumericIndexers2.symbols +++ b/tests/baselines/reference/objectTypesIdentityWithNumericIndexers2.symbols @@ -3,12 +3,12 @@ class Base { foo: string; } >Base : Symbol(Base, Decl(objectTypesIdentityWithNumericIndexers2.ts, 0, 0)) ->foo : Symbol(foo, Decl(objectTypesIdentityWithNumericIndexers2.ts, 2, 12)) +>foo : Symbol(Base.foo, Decl(objectTypesIdentityWithNumericIndexers2.ts, 2, 12)) class Derived extends Base { bar: string; } >Derived : Symbol(Derived, Decl(objectTypesIdentityWithNumericIndexers2.ts, 2, 27)) >Base : Symbol(Base, Decl(objectTypesIdentityWithNumericIndexers2.ts, 0, 0)) ->bar : Symbol(bar, Decl(objectTypesIdentityWithNumericIndexers2.ts, 3, 28)) +>bar : Symbol(Derived.bar, Decl(objectTypesIdentityWithNumericIndexers2.ts, 3, 28)) class A { >A : Symbol(A, Decl(objectTypesIdentityWithNumericIndexers2.ts, 3, 43)) diff --git a/tests/baselines/reference/objectTypesIdentityWithOptionality.symbols b/tests/baselines/reference/objectTypesIdentityWithOptionality.symbols index 595295418f5..90a69d7bb7a 100644 --- a/tests/baselines/reference/objectTypesIdentityWithOptionality.symbols +++ b/tests/baselines/reference/objectTypesIdentityWithOptionality.symbols @@ -5,14 +5,14 @@ class A { >A : Symbol(A, Decl(objectTypesIdentityWithOptionality.ts, 0, 0)) foo: string; ->foo : Symbol(foo, Decl(objectTypesIdentityWithOptionality.ts, 2, 9)) +>foo : Symbol(A.foo, Decl(objectTypesIdentityWithOptionality.ts, 2, 9)) } class B { >B : Symbol(B, Decl(objectTypesIdentityWithOptionality.ts, 4, 1)) foo: string; ->foo : Symbol(foo, Decl(objectTypesIdentityWithOptionality.ts, 6, 9)) +>foo : Symbol(B.foo, Decl(objectTypesIdentityWithOptionality.ts, 6, 9)) } class C { @@ -20,7 +20,7 @@ class C { >T : Symbol(T, Decl(objectTypesIdentityWithOptionality.ts, 10, 8)) foo: T; ->foo : Symbol(foo, Decl(objectTypesIdentityWithOptionality.ts, 10, 12)) +>foo : Symbol(C.foo, Decl(objectTypesIdentityWithOptionality.ts, 10, 12)) >T : Symbol(T, Decl(objectTypesIdentityWithOptionality.ts, 10, 8)) } @@ -28,7 +28,7 @@ interface I { >I : Symbol(I, Decl(objectTypesIdentityWithOptionality.ts, 12, 1)) foo?: string; ->foo : Symbol(foo, Decl(objectTypesIdentityWithOptionality.ts, 14, 13)) +>foo : Symbol(I.foo, Decl(objectTypesIdentityWithOptionality.ts, 14, 13)) } var a: { foo?: string; } diff --git a/tests/baselines/reference/objectTypesIdentityWithPrivates.symbols b/tests/baselines/reference/objectTypesIdentityWithPrivates.symbols index d7680f7fb91..c6cd57f9930 100644 --- a/tests/baselines/reference/objectTypesIdentityWithPrivates.symbols +++ b/tests/baselines/reference/objectTypesIdentityWithPrivates.symbols @@ -5,14 +5,14 @@ class A { >A : Symbol(A, Decl(objectTypesIdentityWithPrivates.ts, 0, 0)) private foo: string; ->foo : Symbol(foo, Decl(objectTypesIdentityWithPrivates.ts, 2, 9)) +>foo : Symbol(A.foo, Decl(objectTypesIdentityWithPrivates.ts, 2, 9)) } class B { >B : Symbol(B, Decl(objectTypesIdentityWithPrivates.ts, 4, 1)) private foo: string; ->foo : Symbol(foo, Decl(objectTypesIdentityWithPrivates.ts, 6, 9)) +>foo : Symbol(B.foo, Decl(objectTypesIdentityWithPrivates.ts, 6, 9)) } class C { @@ -20,7 +20,7 @@ class C { >T : Symbol(T, Decl(objectTypesIdentityWithPrivates.ts, 10, 8)) private foo: T; ->foo : Symbol(foo, Decl(objectTypesIdentityWithPrivates.ts, 10, 12)) +>foo : Symbol(C.foo, Decl(objectTypesIdentityWithPrivates.ts, 10, 12)) >T : Symbol(T, Decl(objectTypesIdentityWithPrivates.ts, 10, 8)) } @@ -28,7 +28,7 @@ interface I { >I : Symbol(I, Decl(objectTypesIdentityWithPrivates.ts, 12, 1)) foo: string; ->foo : Symbol(foo, Decl(objectTypesIdentityWithPrivates.ts, 14, 13)) +>foo : Symbol(I.foo, Decl(objectTypesIdentityWithPrivates.ts, 14, 13)) } class PA extends A { diff --git a/tests/baselines/reference/objectTypesIdentityWithPrivates2.symbols b/tests/baselines/reference/objectTypesIdentityWithPrivates2.symbols index 1a33946229e..ddd75660ad8 100644 --- a/tests/baselines/reference/objectTypesIdentityWithPrivates2.symbols +++ b/tests/baselines/reference/objectTypesIdentityWithPrivates2.symbols @@ -6,7 +6,7 @@ class C { >T : Symbol(T, Decl(objectTypesIdentityWithPrivates2.ts, 2, 8)) private foo: T; ->foo : Symbol(foo, Decl(objectTypesIdentityWithPrivates2.ts, 2, 12)) +>foo : Symbol(C.foo, Decl(objectTypesIdentityWithPrivates2.ts, 2, 12)) >T : Symbol(T, Decl(objectTypesIdentityWithPrivates2.ts, 2, 8)) } diff --git a/tests/baselines/reference/objectTypesIdentityWithPrivates3.errors.txt b/tests/baselines/reference/objectTypesIdentityWithPrivates3.errors.txt index 9cbaa730022..2342065605b 100644 --- a/tests/baselines/reference/objectTypesIdentityWithPrivates3.errors.txt +++ b/tests/baselines/reference/objectTypesIdentityWithPrivates3.errors.txt @@ -1,4 +1,4 @@ -tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithPrivates3.ts(25,1): error TS2352: Neither type 'C3' nor type 'C4' is assignable to the other. +tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithPrivates3.ts(25,1): error TS2352: Type 'C3' cannot be converted to type 'C4'. Property 'y' is missing in type 'C3'. @@ -29,5 +29,5 @@ tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectType var c3: C3; c3; // Should fail (private x originates in the same declaration, but different types) ~~~~~~ -!!! error TS2352: Neither type 'C3' nor type 'C4' is assignable to the other. +!!! error TS2352: Type 'C3' cannot be converted to type 'C4'. !!! error TS2352: Property 'y' is missing in type 'C3'. \ No newline at end of file diff --git a/tests/baselines/reference/objectTypesIdentityWithPublics.symbols b/tests/baselines/reference/objectTypesIdentityWithPublics.symbols index ebfb52e3d2e..794301f6fc3 100644 --- a/tests/baselines/reference/objectTypesIdentityWithPublics.symbols +++ b/tests/baselines/reference/objectTypesIdentityWithPublics.symbols @@ -5,14 +5,14 @@ class A { >A : Symbol(A, Decl(objectTypesIdentityWithPublics.ts, 0, 0)) public foo: string; ->foo : Symbol(foo, Decl(objectTypesIdentityWithPublics.ts, 2, 9)) +>foo : Symbol(A.foo, Decl(objectTypesIdentityWithPublics.ts, 2, 9)) } class B { >B : Symbol(B, Decl(objectTypesIdentityWithPublics.ts, 4, 1)) public foo: string; ->foo : Symbol(foo, Decl(objectTypesIdentityWithPublics.ts, 6, 9)) +>foo : Symbol(B.foo, Decl(objectTypesIdentityWithPublics.ts, 6, 9)) } class C { @@ -20,7 +20,7 @@ class C { >T : Symbol(T, Decl(objectTypesIdentityWithPublics.ts, 10, 8)) public foo: T; ->foo : Symbol(foo, Decl(objectTypesIdentityWithPublics.ts, 10, 12)) +>foo : Symbol(C.foo, Decl(objectTypesIdentityWithPublics.ts, 10, 12)) >T : Symbol(T, Decl(objectTypesIdentityWithPublics.ts, 10, 8)) } @@ -28,7 +28,7 @@ interface I { >I : Symbol(I, Decl(objectTypesIdentityWithPublics.ts, 12, 1)) foo: string; ->foo : Symbol(foo, Decl(objectTypesIdentityWithPublics.ts, 14, 13)) +>foo : Symbol(I.foo, Decl(objectTypesIdentityWithPublics.ts, 14, 13)) } var a: { foo: string; } diff --git a/tests/baselines/reference/objectTypesIdentityWithStringIndexers2.symbols b/tests/baselines/reference/objectTypesIdentityWithStringIndexers2.symbols index 2df0bf01b1d..dd2e561e67d 100644 --- a/tests/baselines/reference/objectTypesIdentityWithStringIndexers2.symbols +++ b/tests/baselines/reference/objectTypesIdentityWithStringIndexers2.symbols @@ -3,12 +3,12 @@ class Base { foo: string; } >Base : Symbol(Base, Decl(objectTypesIdentityWithStringIndexers2.ts, 0, 0)) ->foo : Symbol(foo, Decl(objectTypesIdentityWithStringIndexers2.ts, 2, 12)) +>foo : Symbol(Base.foo, Decl(objectTypesIdentityWithStringIndexers2.ts, 2, 12)) class Derived extends Base { bar: string; } >Derived : Symbol(Derived, Decl(objectTypesIdentityWithStringIndexers2.ts, 2, 27)) >Base : Symbol(Base, Decl(objectTypesIdentityWithStringIndexers2.ts, 0, 0)) ->bar : Symbol(bar, Decl(objectTypesIdentityWithStringIndexers2.ts, 3, 28)) +>bar : Symbol(Derived.bar, Decl(objectTypesIdentityWithStringIndexers2.ts, 3, 28)) class A { >A : Symbol(A, Decl(objectTypesIdentityWithStringIndexers2.ts, 3, 43)) diff --git a/tests/baselines/reference/optionalAccessorsInInterface1.symbols b/tests/baselines/reference/optionalAccessorsInInterface1.symbols index 6c9c8ab1429..905aefa02ba 100644 --- a/tests/baselines/reference/optionalAccessorsInInterface1.symbols +++ b/tests/baselines/reference/optionalAccessorsInInterface1.symbols @@ -3,10 +3,10 @@ interface MyPropertyDescriptor { >MyPropertyDescriptor : Symbol(MyPropertyDescriptor, Decl(optionalAccessorsInInterface1.ts, 0, 0)) get? (): any; ->get : Symbol(get, Decl(optionalAccessorsInInterface1.ts, 0, 32)) +>get : Symbol(MyPropertyDescriptor.get, Decl(optionalAccessorsInInterface1.ts, 0, 32)) set? (v: any): void; ->set : Symbol(set, Decl(optionalAccessorsInInterface1.ts, 1, 17)) +>set : Symbol(MyPropertyDescriptor.set, Decl(optionalAccessorsInInterface1.ts, 1, 17)) >v : Symbol(v, Decl(optionalAccessorsInInterface1.ts, 2, 10)) } @@ -25,10 +25,10 @@ interface MyPropertyDescriptor2 { >MyPropertyDescriptor2 : Symbol(MyPropertyDescriptor2, Decl(optionalAccessorsInInterface1.ts, 6, 65)) get?: () => any; ->get : Symbol(get, Decl(optionalAccessorsInInterface1.ts, 8, 33)) +>get : Symbol(MyPropertyDescriptor2.get, Decl(optionalAccessorsInInterface1.ts, 8, 33)) set?: (v: any) => void; ->set : Symbol(set, Decl(optionalAccessorsInInterface1.ts, 9, 20)) +>set : Symbol(MyPropertyDescriptor2.set, Decl(optionalAccessorsInInterface1.ts, 9, 20)) >v : Symbol(v, Decl(optionalAccessorsInInterface1.ts, 10, 11)) } diff --git a/tests/baselines/reference/optionalConstructorArgInSuper.symbols b/tests/baselines/reference/optionalConstructorArgInSuper.symbols index a912d8f62e3..000032d1757 100644 --- a/tests/baselines/reference/optionalConstructorArgInSuper.symbols +++ b/tests/baselines/reference/optionalConstructorArgInSuper.symbols @@ -6,7 +6,7 @@ class Base { >opt : Symbol(opt, Decl(optionalConstructorArgInSuper.ts, 1, 16)) foo(other?) { } ->foo : Symbol(foo, Decl(optionalConstructorArgInSuper.ts, 1, 25)) +>foo : Symbol(Base.foo, Decl(optionalConstructorArgInSuper.ts, 1, 25)) >other : Symbol(other, Decl(optionalConstructorArgInSuper.ts, 2, 8)) } class Derived extends Base { diff --git a/tests/baselines/reference/optionalFunctionArgAssignability.errors.txt b/tests/baselines/reference/optionalFunctionArgAssignability.errors.txt index 52fb45e40d2..024c5c1ea2b 100644 --- a/tests/baselines/reference/optionalFunctionArgAssignability.errors.txt +++ b/tests/baselines/reference/optionalFunctionArgAssignability.errors.txt @@ -1,6 +1,6 @@ tests/cases/compiler/optionalFunctionArgAssignability.ts(7,1): error TS2322: Type '(onFulFill?: (value: number) => U, onReject?: (reason: any) => U) => Promise' is not assignable to type '(onFulfill?: (value: string) => U, onReject?: (reason: any) => U) => Promise'. Types of parameters 'onFulFill' and 'onFulfill' are incompatible. - Type '(value: number) => any' is not assignable to type '(value: string) => any'. + Type '(value: string) => any' is not assignable to type '(value: number) => any'. Types of parameters 'value' and 'value' are incompatible. Type 'number' is not assignable to type 'string'. @@ -16,7 +16,7 @@ tests/cases/compiler/optionalFunctionArgAssignability.ts(7,1): error TS2322: Typ ~ !!! error TS2322: Type '(onFulFill?: (value: number) => U, onReject?: (reason: any) => U) => Promise' is not assignable to type '(onFulfill?: (value: string) => U, onReject?: (reason: any) => U) => Promise'. !!! error TS2322: Types of parameters 'onFulFill' and 'onFulfill' are incompatible. -!!! error TS2322: Type '(value: number) => any' is not assignable to type '(value: string) => any'. +!!! error TS2322: Type '(value: string) => any' is not assignable to type '(value: number) => any'. !!! error TS2322: Types of parameters 'value' and 'value' are incompatible. !!! error TS2322: Type 'number' is not assignable to type 'string'. \ No newline at end of file diff --git a/tests/baselines/reference/optionalParamAssignmentCompat.errors.txt b/tests/baselines/reference/optionalParamAssignmentCompat.errors.txt index de02509d124..5ab492540ac 100644 --- a/tests/baselines/reference/optionalParamAssignmentCompat.errors.txt +++ b/tests/baselines/reference/optionalParamAssignmentCompat.errors.txt @@ -1,6 +1,6 @@ tests/cases/compiler/optionalParamAssignmentCompat.ts(10,5): error TS2322: Type '(p1?: string) => I1' is not assignable to type 'I1'. Types of parameters 'p1' and 'p1' are incompatible. - Type 'string' is not assignable to type 'number'. + Type 'number' is not assignable to type 'string'. ==== tests/cases/compiler/optionalParamAssignmentCompat.ts (1 errors) ==== @@ -17,5 +17,5 @@ tests/cases/compiler/optionalParamAssignmentCompat.ts(10,5): error TS2322: Type ~ !!! error TS2322: Type '(p1?: string) => I1' is not assignable to type 'I1'. !!! error TS2322: Types of parameters 'p1' and 'p1' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Type 'number' is not assignable to type 'string'. \ No newline at end of file diff --git a/tests/baselines/reference/optionalParamInOverride.symbols b/tests/baselines/reference/optionalParamInOverride.symbols index b15802b7294..0d33d6c8d06 100644 --- a/tests/baselines/reference/optionalParamInOverride.symbols +++ b/tests/baselines/reference/optionalParamInOverride.symbols @@ -3,14 +3,14 @@ class Z { >Z : Symbol(Z, Decl(optionalParamInOverride.ts, 0, 0)) public func(): void { } ->func : Symbol(func, Decl(optionalParamInOverride.ts, 0, 9)) +>func : Symbol(Z.func, Decl(optionalParamInOverride.ts, 0, 9)) } class Y extends Z { >Y : Symbol(Y, Decl(optionalParamInOverride.ts, 2, 1)) >Z : Symbol(Z, Decl(optionalParamInOverride.ts, 0, 0)) public func(value?: any): void { } ->func : Symbol(func, Decl(optionalParamInOverride.ts, 3, 19)) +>func : Symbol(Y.func, Decl(optionalParamInOverride.ts, 3, 19)) >value : Symbol(value, Decl(optionalParamInOverride.ts, 4, 16)) } diff --git a/tests/baselines/reference/optionalParamTypeComparison.errors.txt b/tests/baselines/reference/optionalParamTypeComparison.errors.txt index 98a07570c65..287c1123211 100644 --- a/tests/baselines/reference/optionalParamTypeComparison.errors.txt +++ b/tests/baselines/reference/optionalParamTypeComparison.errors.txt @@ -1,9 +1,9 @@ tests/cases/compiler/optionalParamTypeComparison.ts(4,1): error TS2322: Type '(s: string, b?: boolean) => void' is not assignable to type '(s: string, n?: number) => void'. Types of parameters 'b' and 'n' are incompatible. - Type 'boolean' is not assignable to type 'number'. + Type 'number' is not assignable to type 'boolean'. tests/cases/compiler/optionalParamTypeComparison.ts(5,1): error TS2322: Type '(s: string, n?: number) => void' is not assignable to type '(s: string, b?: boolean) => void'. Types of parameters 'n' and 'b' are incompatible. - Type 'number' is not assignable to type 'boolean'. + Type 'boolean' is not assignable to type 'number'. ==== tests/cases/compiler/optionalParamTypeComparison.ts (2 errors) ==== @@ -14,9 +14,9 @@ tests/cases/compiler/optionalParamTypeComparison.ts(5,1): error TS2322: Type '(s ~ !!! error TS2322: Type '(s: string, b?: boolean) => void' is not assignable to type '(s: string, n?: number) => void'. !!! error TS2322: Types of parameters 'b' and 'n' are incompatible. -!!! error TS2322: Type 'boolean' is not assignable to type 'number'. +!!! error TS2322: Type 'number' is not assignable to type 'boolean'. g = f; ~ !!! error TS2322: Type '(s: string, n?: number) => void' is not assignable to type '(s: string, b?: boolean) => void'. !!! error TS2322: Types of parameters 'n' and 'b' are incompatible. -!!! error TS2322: Type 'number' is not assignable to type 'boolean'. \ No newline at end of file +!!! error TS2322: Type 'boolean' is not assignable to type 'number'. \ No newline at end of file diff --git a/tests/baselines/reference/out-flag.symbols b/tests/baselines/reference/out-flag.symbols index 8f7e559b8fa..2a6a1775dd7 100644 --- a/tests/baselines/reference/out-flag.symbols +++ b/tests/baselines/reference/out-flag.symbols @@ -7,13 +7,13 @@ class MyClass { // my function comments public Count(): number ->Count : Symbol(Count, Decl(out-flag.ts, 4, 1)) +>Count : Symbol(MyClass.Count, Decl(out-flag.ts, 4, 1)) { return 42; } public SetCount(value: number) ->SetCount : Symbol(SetCount, Decl(out-flag.ts, 9, 5)) +>SetCount : Symbol(MyClass.SetCount, Decl(out-flag.ts, 9, 5)) >value : Symbol(value, Decl(out-flag.ts, 11, 20)) { // diff --git a/tests/baselines/reference/outFilerootDirModuleNamesSystem.js b/tests/baselines/reference/outFilerootDirModuleNamesSystem.js index eb1ef2a4a54..18ec6ecc19b 100644 --- a/tests/baselines/reference/outFilerootDirModuleNamesSystem.js +++ b/tests/baselines/reference/outFilerootDirModuleNamesSystem.js @@ -37,8 +37,8 @@ System.register("a", ["b"], function(exports_2, context_2) { b_1 = b_1_1; }], execute: function() { - class Foo { - } + Foo = class Foo { + }; exports_2("default", Foo); b_1.default(); } diff --git a/tests/baselines/reference/outModuleTripleSlashRefs.symbols b/tests/baselines/reference/outModuleTripleSlashRefs.symbols index f8d550aedb6..5f137a95361 100644 --- a/tests/baselines/reference/outModuleTripleSlashRefs.symbols +++ b/tests/baselines/reference/outModuleTripleSlashRefs.symbols @@ -5,7 +5,7 @@ export class A { >A : Symbol(A, Decl(a.ts, 0, 0)) member: typeof GlobalFoo; ->member : Symbol(member, Decl(a.ts, 2, 16)) +>member : Symbol(A.member, Decl(a.ts, 2, 16)) >GlobalFoo : Symbol(GlobalFoo, Decl(b.ts, 4, 11)) } @@ -15,7 +15,7 @@ class Foo { >Foo : Symbol(Foo, Decl(b.ts, 0, 0)) member: Bar; ->member : Symbol(member, Decl(b.ts, 1, 11)) +>member : Symbol(Foo.member, Decl(b.ts, 1, 11)) >Bar : Symbol(Bar, Decl(c.d.ts, 0, 0)) } declare var GlobalFoo: Foo; @@ -28,7 +28,7 @@ declare class Bar { >Bar : Symbol(Bar, Decl(c.d.ts, 0, 0)) member: Baz; ->member : Symbol(member, Decl(c.d.ts, 1, 19)) +>member : Symbol(Bar.member, Decl(c.d.ts, 1, 19)) >Baz : Symbol(Baz, Decl(d.d.ts, 0, 0)) } @@ -37,7 +37,7 @@ declare class Baz { >Baz : Symbol(Baz, Decl(d.d.ts, 0, 0)) member: number; ->member : Symbol(member, Decl(d.d.ts, 0, 19)) +>member : Symbol(Baz.member, Decl(d.d.ts, 0, 19)) } === tests/cases/compiler/b.ts === diff --git a/tests/baselines/reference/overloadBindingAcrossDeclarationBoundaries.symbols b/tests/baselines/reference/overloadBindingAcrossDeclarationBoundaries.symbols index 65f64fa8915..0791f7009d0 100644 --- a/tests/baselines/reference/overloadBindingAcrossDeclarationBoundaries.symbols +++ b/tests/baselines/reference/overloadBindingAcrossDeclarationBoundaries.symbols @@ -3,37 +3,37 @@ interface Opt1 { >Opt1 : Symbol(Opt1, Decl(overloadBindingAcrossDeclarationBoundaries.ts, 0, 0)) p?: any; ->p : Symbol(p, Decl(overloadBindingAcrossDeclarationBoundaries.ts, 0, 16)) +>p : Symbol(Opt1.p, Decl(overloadBindingAcrossDeclarationBoundaries.ts, 0, 16)) } interface Opt2 { >Opt2 : Symbol(Opt2, Decl(overloadBindingAcrossDeclarationBoundaries.ts, 2, 1)) q?: any; ->q : Symbol(q, Decl(overloadBindingAcrossDeclarationBoundaries.ts, 3, 16)) +>q : Symbol(Opt2.q, Decl(overloadBindingAcrossDeclarationBoundaries.ts, 3, 16)) } interface Opt3 { >Opt3 : Symbol(Opt3, Decl(overloadBindingAcrossDeclarationBoundaries.ts, 5, 1)) r?: any; ->r : Symbol(r, Decl(overloadBindingAcrossDeclarationBoundaries.ts, 6, 16)) +>r : Symbol(Opt3.r, Decl(overloadBindingAcrossDeclarationBoundaries.ts, 6, 16)) } interface Opt4 { >Opt4 : Symbol(Opt4, Decl(overloadBindingAcrossDeclarationBoundaries.ts, 8, 1)) s?: any; ->s : Symbol(s, Decl(overloadBindingAcrossDeclarationBoundaries.ts, 9, 16)) +>s : Symbol(Opt4.s, Decl(overloadBindingAcrossDeclarationBoundaries.ts, 9, 16)) } interface A { >A : Symbol(A, Decl(overloadBindingAcrossDeclarationBoundaries.ts, 11, 1), Decl(overloadBindingAcrossDeclarationBoundaries.ts, 19, 1)) a(o: Opt1): Opt1; ->a : Symbol(a, Decl(overloadBindingAcrossDeclarationBoundaries.ts, 12, 13), Decl(overloadBindingAcrossDeclarationBoundaries.ts, 13, 21), Decl(overloadBindingAcrossDeclarationBoundaries.ts, 20, 13), Decl(overloadBindingAcrossDeclarationBoundaries.ts, 21, 21)) +>a : Symbol(A.a, Decl(overloadBindingAcrossDeclarationBoundaries.ts, 12, 13), Decl(overloadBindingAcrossDeclarationBoundaries.ts, 13, 21), Decl(overloadBindingAcrossDeclarationBoundaries.ts, 20, 13), Decl(overloadBindingAcrossDeclarationBoundaries.ts, 21, 21)) >o : Symbol(o, Decl(overloadBindingAcrossDeclarationBoundaries.ts, 13, 6)) >Opt1 : Symbol(Opt1, Decl(overloadBindingAcrossDeclarationBoundaries.ts, 0, 0)) >Opt1 : Symbol(Opt1, Decl(overloadBindingAcrossDeclarationBoundaries.ts, 0, 0)) a(o: Opt2): Opt2; ->a : Symbol(a, Decl(overloadBindingAcrossDeclarationBoundaries.ts, 12, 13), Decl(overloadBindingAcrossDeclarationBoundaries.ts, 13, 21), Decl(overloadBindingAcrossDeclarationBoundaries.ts, 20, 13), Decl(overloadBindingAcrossDeclarationBoundaries.ts, 21, 21)) +>a : Symbol(A.a, Decl(overloadBindingAcrossDeclarationBoundaries.ts, 12, 13), Decl(overloadBindingAcrossDeclarationBoundaries.ts, 13, 21), Decl(overloadBindingAcrossDeclarationBoundaries.ts, 20, 13), Decl(overloadBindingAcrossDeclarationBoundaries.ts, 21, 21)) >o : Symbol(o, Decl(overloadBindingAcrossDeclarationBoundaries.ts, 14, 6)) >Opt2 : Symbol(Opt2, Decl(overloadBindingAcrossDeclarationBoundaries.ts, 2, 1)) >Opt2 : Symbol(Opt2, Decl(overloadBindingAcrossDeclarationBoundaries.ts, 2, 1)) @@ -62,13 +62,13 @@ interface A { >A : Symbol(A, Decl(overloadBindingAcrossDeclarationBoundaries.ts, 11, 1), Decl(overloadBindingAcrossDeclarationBoundaries.ts, 19, 1)) a(o: Opt3): Opt3; ->a : Symbol(a, Decl(overloadBindingAcrossDeclarationBoundaries.ts, 12, 13), Decl(overloadBindingAcrossDeclarationBoundaries.ts, 13, 21), Decl(overloadBindingAcrossDeclarationBoundaries.ts, 20, 13), Decl(overloadBindingAcrossDeclarationBoundaries.ts, 21, 21)) +>a : Symbol(A.a, Decl(overloadBindingAcrossDeclarationBoundaries.ts, 12, 13), Decl(overloadBindingAcrossDeclarationBoundaries.ts, 13, 21), Decl(overloadBindingAcrossDeclarationBoundaries.ts, 20, 13), Decl(overloadBindingAcrossDeclarationBoundaries.ts, 21, 21)) >o : Symbol(o, Decl(overloadBindingAcrossDeclarationBoundaries.ts, 21, 6)) >Opt3 : Symbol(Opt3, Decl(overloadBindingAcrossDeclarationBoundaries.ts, 5, 1)) >Opt3 : Symbol(Opt3, Decl(overloadBindingAcrossDeclarationBoundaries.ts, 5, 1)) a(o: Opt4): Opt4; ->a : Symbol(a, Decl(overloadBindingAcrossDeclarationBoundaries.ts, 12, 13), Decl(overloadBindingAcrossDeclarationBoundaries.ts, 13, 21), Decl(overloadBindingAcrossDeclarationBoundaries.ts, 20, 13), Decl(overloadBindingAcrossDeclarationBoundaries.ts, 21, 21)) +>a : Symbol(A.a, Decl(overloadBindingAcrossDeclarationBoundaries.ts, 12, 13), Decl(overloadBindingAcrossDeclarationBoundaries.ts, 13, 21), Decl(overloadBindingAcrossDeclarationBoundaries.ts, 20, 13), Decl(overloadBindingAcrossDeclarationBoundaries.ts, 21, 21)) >o : Symbol(o, Decl(overloadBindingAcrossDeclarationBoundaries.ts, 22, 6)) >Opt4 : Symbol(Opt4, Decl(overloadBindingAcrossDeclarationBoundaries.ts, 8, 1)) >Opt4 : Symbol(Opt4, Decl(overloadBindingAcrossDeclarationBoundaries.ts, 8, 1)) diff --git a/tests/baselines/reference/overloadBindingAcrossDeclarationBoundaries2.symbols b/tests/baselines/reference/overloadBindingAcrossDeclarationBoundaries2.symbols index 534475bcc30..7fd32af7cec 100644 --- a/tests/baselines/reference/overloadBindingAcrossDeclarationBoundaries2.symbols +++ b/tests/baselines/reference/overloadBindingAcrossDeclarationBoundaries2.symbols @@ -3,38 +3,38 @@ interface Opt1 { >Opt1 : Symbol(Opt1, Decl(overloadBindingAcrossDeclarationBoundaries_file0.ts, 0, 0)) p?: any; ->p : Symbol(p, Decl(overloadBindingAcrossDeclarationBoundaries_file0.ts, 0, 16)) +>p : Symbol(Opt1.p, Decl(overloadBindingAcrossDeclarationBoundaries_file0.ts, 0, 16)) } interface Opt2 { >Opt2 : Symbol(Opt2, Decl(overloadBindingAcrossDeclarationBoundaries_file0.ts, 2, 1)) q?: any; ->q : Symbol(q, Decl(overloadBindingAcrossDeclarationBoundaries_file0.ts, 3, 16)) +>q : Symbol(Opt2.q, Decl(overloadBindingAcrossDeclarationBoundaries_file0.ts, 3, 16)) } interface Opt3 { >Opt3 : Symbol(Opt3, Decl(overloadBindingAcrossDeclarationBoundaries_file0.ts, 5, 1)) r?: any; ->r : Symbol(r, Decl(overloadBindingAcrossDeclarationBoundaries_file0.ts, 6, 16)) +>r : Symbol(Opt3.r, Decl(overloadBindingAcrossDeclarationBoundaries_file0.ts, 6, 16)) } interface Opt4 { >Opt4 : Symbol(Opt4, Decl(overloadBindingAcrossDeclarationBoundaries_file0.ts, 8, 1)) s?: any; ->s : Symbol(s, Decl(overloadBindingAcrossDeclarationBoundaries_file0.ts, 9, 16)) +>s : Symbol(Opt4.s, Decl(overloadBindingAcrossDeclarationBoundaries_file0.ts, 9, 16)) } interface A { >A : Symbol(A, Decl(overloadBindingAcrossDeclarationBoundaries_file0.ts, 11, 1), Decl(overloadBindingAcrossDeclarationBoundaries_file1.ts, 0, 0)) a(o: Opt1): Opt1; ->a : Symbol(a, Decl(overloadBindingAcrossDeclarationBoundaries_file0.ts, 13, 13), Decl(overloadBindingAcrossDeclarationBoundaries_file0.ts, 14, 21), Decl(overloadBindingAcrossDeclarationBoundaries_file1.ts, 0, 13), Decl(overloadBindingAcrossDeclarationBoundaries_file1.ts, 1, 21)) +>a : Symbol(A.a, Decl(overloadBindingAcrossDeclarationBoundaries_file0.ts, 13, 13), Decl(overloadBindingAcrossDeclarationBoundaries_file0.ts, 14, 21), Decl(overloadBindingAcrossDeclarationBoundaries_file1.ts, 0, 13), Decl(overloadBindingAcrossDeclarationBoundaries_file1.ts, 1, 21)) >o : Symbol(o, Decl(overloadBindingAcrossDeclarationBoundaries_file0.ts, 14, 6)) >Opt1 : Symbol(Opt1, Decl(overloadBindingAcrossDeclarationBoundaries_file0.ts, 0, 0)) >Opt1 : Symbol(Opt1, Decl(overloadBindingAcrossDeclarationBoundaries_file0.ts, 0, 0)) a(o: Opt2): Opt2; ->a : Symbol(a, Decl(overloadBindingAcrossDeclarationBoundaries_file0.ts, 13, 13), Decl(overloadBindingAcrossDeclarationBoundaries_file0.ts, 14, 21), Decl(overloadBindingAcrossDeclarationBoundaries_file1.ts, 0, 13), Decl(overloadBindingAcrossDeclarationBoundaries_file1.ts, 1, 21)) +>a : Symbol(A.a, Decl(overloadBindingAcrossDeclarationBoundaries_file0.ts, 13, 13), Decl(overloadBindingAcrossDeclarationBoundaries_file0.ts, 14, 21), Decl(overloadBindingAcrossDeclarationBoundaries_file1.ts, 0, 13), Decl(overloadBindingAcrossDeclarationBoundaries_file1.ts, 1, 21)) >o : Symbol(o, Decl(overloadBindingAcrossDeclarationBoundaries_file0.ts, 15, 6)) >Opt2 : Symbol(Opt2, Decl(overloadBindingAcrossDeclarationBoundaries_file0.ts, 2, 1)) >Opt2 : Symbol(Opt2, Decl(overloadBindingAcrossDeclarationBoundaries_file0.ts, 2, 1)) @@ -65,13 +65,13 @@ interface A { >A : Symbol(A, Decl(overloadBindingAcrossDeclarationBoundaries_file0.ts, 11, 1), Decl(overloadBindingAcrossDeclarationBoundaries_file1.ts, 0, 0)) a(o: Opt3): Opt3; ->a : Symbol(a, Decl(overloadBindingAcrossDeclarationBoundaries_file0.ts, 13, 13), Decl(overloadBindingAcrossDeclarationBoundaries_file0.ts, 14, 21), Decl(overloadBindingAcrossDeclarationBoundaries_file1.ts, 0, 13), Decl(overloadBindingAcrossDeclarationBoundaries_file1.ts, 1, 21)) +>a : Symbol(A.a, Decl(overloadBindingAcrossDeclarationBoundaries_file0.ts, 13, 13), Decl(overloadBindingAcrossDeclarationBoundaries_file0.ts, 14, 21), Decl(overloadBindingAcrossDeclarationBoundaries_file1.ts, 0, 13), Decl(overloadBindingAcrossDeclarationBoundaries_file1.ts, 1, 21)) >o : Symbol(o, Decl(overloadBindingAcrossDeclarationBoundaries_file1.ts, 1, 6)) >Opt3 : Symbol(Opt3, Decl(overloadBindingAcrossDeclarationBoundaries_file0.ts, 5, 1)) >Opt3 : Symbol(Opt3, Decl(overloadBindingAcrossDeclarationBoundaries_file0.ts, 5, 1)) a(o: Opt4): Opt4; ->a : Symbol(a, Decl(overloadBindingAcrossDeclarationBoundaries_file0.ts, 13, 13), Decl(overloadBindingAcrossDeclarationBoundaries_file0.ts, 14, 21), Decl(overloadBindingAcrossDeclarationBoundaries_file1.ts, 0, 13), Decl(overloadBindingAcrossDeclarationBoundaries_file1.ts, 1, 21)) +>a : Symbol(A.a, Decl(overloadBindingAcrossDeclarationBoundaries_file0.ts, 13, 13), Decl(overloadBindingAcrossDeclarationBoundaries_file0.ts, 14, 21), Decl(overloadBindingAcrossDeclarationBoundaries_file1.ts, 0, 13), Decl(overloadBindingAcrossDeclarationBoundaries_file1.ts, 1, 21)) >o : Symbol(o, Decl(overloadBindingAcrossDeclarationBoundaries_file1.ts, 2, 6)) >Opt4 : Symbol(Opt4, Decl(overloadBindingAcrossDeclarationBoundaries_file0.ts, 8, 1)) >Opt4 : Symbol(Opt4, Decl(overloadBindingAcrossDeclarationBoundaries_file0.ts, 8, 1)) diff --git a/tests/baselines/reference/overloadCrash.symbols b/tests/baselines/reference/overloadCrash.symbols index 791411540b3..8345107dc45 100644 --- a/tests/baselines/reference/overloadCrash.symbols +++ b/tests/baselines/reference/overloadCrash.symbols @@ -1,20 +1,20 @@ === tests/cases/compiler/overloadCrash.ts === interface I1 {a:number; b:number;}; >I1 : Symbol(I1, Decl(overloadCrash.ts, 0, 0)) ->a : Symbol(a, Decl(overloadCrash.ts, 0, 14)) ->b : Symbol(b, Decl(overloadCrash.ts, 0, 23)) +>a : Symbol(I1.a, Decl(overloadCrash.ts, 0, 14)) +>b : Symbol(I1.b, Decl(overloadCrash.ts, 0, 23)) interface I2 {c:number; d:number;}; >I2 : Symbol(I2, Decl(overloadCrash.ts, 0, 35)) ->c : Symbol(c, Decl(overloadCrash.ts, 1, 14)) ->d : Symbol(d, Decl(overloadCrash.ts, 1, 23)) +>c : Symbol(I2.c, Decl(overloadCrash.ts, 1, 14)) +>d : Symbol(I2.d, Decl(overloadCrash.ts, 1, 23)) interface I3 {a:number; b:number; c:number; d:number;}; >I3 : Symbol(I3, Decl(overloadCrash.ts, 1, 35)) ->a : Symbol(a, Decl(overloadCrash.ts, 2, 14)) ->b : Symbol(b, Decl(overloadCrash.ts, 2, 23)) ->c : Symbol(c, Decl(overloadCrash.ts, 2, 33)) ->d : Symbol(d, Decl(overloadCrash.ts, 2, 43)) +>a : Symbol(I3.a, Decl(overloadCrash.ts, 2, 14)) +>b : Symbol(I3.b, Decl(overloadCrash.ts, 2, 23)) +>c : Symbol(I3.c, Decl(overloadCrash.ts, 2, 33)) +>d : Symbol(I3.d, Decl(overloadCrash.ts, 2, 43)) declare function foo(...n:I1[]); >foo : Symbol(foo, Decl(overloadCrash.ts, 2, 55), Decl(overloadCrash.ts, 4, 32)) diff --git a/tests/baselines/reference/overloadGenericFunctionWithRestArgs.symbols b/tests/baselines/reference/overloadGenericFunctionWithRestArgs.symbols index 52ee82e5d3c..c98e0c35d5a 100644 --- a/tests/baselines/reference/overloadGenericFunctionWithRestArgs.symbols +++ b/tests/baselines/reference/overloadGenericFunctionWithRestArgs.symbols @@ -4,7 +4,7 @@ class B{ >V : Symbol(V, Decl(overloadGenericFunctionWithRestArgs.ts, 0, 8)) private id: V; ->id : Symbol(id, Decl(overloadGenericFunctionWithRestArgs.ts, 0, 11)) +>id : Symbol(B.id, Decl(overloadGenericFunctionWithRestArgs.ts, 0, 11)) >V : Symbol(V, Decl(overloadGenericFunctionWithRestArgs.ts, 0, 8)) } class A{ @@ -12,7 +12,7 @@ class A{ >U : Symbol(U, Decl(overloadGenericFunctionWithRestArgs.ts, 3, 8)) GetEnumerator: () => B; ->GetEnumerator : Symbol(GetEnumerator, Decl(overloadGenericFunctionWithRestArgs.ts, 3, 11)) +>GetEnumerator : Symbol(A.GetEnumerator, Decl(overloadGenericFunctionWithRestArgs.ts, 3, 11)) >B : Symbol(B, Decl(overloadGenericFunctionWithRestArgs.ts, 0, 0)) >U : Symbol(U, Decl(overloadGenericFunctionWithRestArgs.ts, 3, 8)) } diff --git a/tests/baselines/reference/overloadOnConstConstraintChecks1.symbols b/tests/baselines/reference/overloadOnConstConstraintChecks1.symbols index 2eedf3254a2..6e86ccc2eb1 100644 --- a/tests/baselines/reference/overloadOnConstConstraintChecks1.symbols +++ b/tests/baselines/reference/overloadOnConstConstraintChecks1.symbols @@ -1,43 +1,43 @@ === tests/cases/compiler/overloadOnConstConstraintChecks1.ts === class Base { foo() { } } >Base : Symbol(Base, Decl(overloadOnConstConstraintChecks1.ts, 0, 0)) ->foo : Symbol(foo, Decl(overloadOnConstConstraintChecks1.ts, 0, 12)) +>foo : Symbol(Base.foo, Decl(overloadOnConstConstraintChecks1.ts, 0, 12)) class Derived1 extends Base { bar() { } } >Derived1 : Symbol(Derived1, Decl(overloadOnConstConstraintChecks1.ts, 0, 24)) >Base : Symbol(Base, Decl(overloadOnConstConstraintChecks1.ts, 0, 0)) ->bar : Symbol(bar, Decl(overloadOnConstConstraintChecks1.ts, 1, 29)) +>bar : Symbol(Derived1.bar, Decl(overloadOnConstConstraintChecks1.ts, 1, 29)) class Derived2 extends Base { baz() { } } >Derived2 : Symbol(Derived2, Decl(overloadOnConstConstraintChecks1.ts, 1, 41)) >Base : Symbol(Base, Decl(overloadOnConstConstraintChecks1.ts, 0, 0)) ->baz : Symbol(baz, Decl(overloadOnConstConstraintChecks1.ts, 2, 29)) +>baz : Symbol(Derived2.baz, Decl(overloadOnConstConstraintChecks1.ts, 2, 29)) class Derived3 extends Base { biz() { } } >Derived3 : Symbol(Derived3, Decl(overloadOnConstConstraintChecks1.ts, 2, 41)) >Base : Symbol(Base, Decl(overloadOnConstConstraintChecks1.ts, 0, 0)) ->biz : Symbol(biz, Decl(overloadOnConstConstraintChecks1.ts, 3, 29)) +>biz : Symbol(Derived3.biz, Decl(overloadOnConstConstraintChecks1.ts, 3, 29)) interface MyDoc { // Document >MyDoc : Symbol(MyDoc, Decl(overloadOnConstConstraintChecks1.ts, 3, 41)) createElement(tagName: string): Base; ->createElement : Symbol(createElement, Decl(overloadOnConstConstraintChecks1.ts, 5, 17), Decl(overloadOnConstConstraintChecks1.ts, 6, 41), Decl(overloadOnConstConstraintChecks1.ts, 7, 47), Decl(overloadOnConstConstraintChecks1.ts, 8, 44)) +>createElement : Symbol(MyDoc.createElement, Decl(overloadOnConstConstraintChecks1.ts, 5, 17), Decl(overloadOnConstConstraintChecks1.ts, 6, 41), Decl(overloadOnConstConstraintChecks1.ts, 7, 47), Decl(overloadOnConstConstraintChecks1.ts, 8, 44)) >tagName : Symbol(tagName, Decl(overloadOnConstConstraintChecks1.ts, 6, 18)) >Base : Symbol(Base, Decl(overloadOnConstConstraintChecks1.ts, 0, 0)) createElement(tagName: 'canvas'): Derived1; ->createElement : Symbol(createElement, Decl(overloadOnConstConstraintChecks1.ts, 5, 17), Decl(overloadOnConstConstraintChecks1.ts, 6, 41), Decl(overloadOnConstConstraintChecks1.ts, 7, 47), Decl(overloadOnConstConstraintChecks1.ts, 8, 44)) +>createElement : Symbol(MyDoc.createElement, Decl(overloadOnConstConstraintChecks1.ts, 5, 17), Decl(overloadOnConstConstraintChecks1.ts, 6, 41), Decl(overloadOnConstConstraintChecks1.ts, 7, 47), Decl(overloadOnConstConstraintChecks1.ts, 8, 44)) >tagName : Symbol(tagName, Decl(overloadOnConstConstraintChecks1.ts, 7, 18)) >Derived1 : Symbol(Derived1, Decl(overloadOnConstConstraintChecks1.ts, 0, 24)) createElement(tagName: 'div'): Derived2; ->createElement : Symbol(createElement, Decl(overloadOnConstConstraintChecks1.ts, 5, 17), Decl(overloadOnConstConstraintChecks1.ts, 6, 41), Decl(overloadOnConstConstraintChecks1.ts, 7, 47), Decl(overloadOnConstConstraintChecks1.ts, 8, 44)) +>createElement : Symbol(MyDoc.createElement, Decl(overloadOnConstConstraintChecks1.ts, 5, 17), Decl(overloadOnConstConstraintChecks1.ts, 6, 41), Decl(overloadOnConstConstraintChecks1.ts, 7, 47), Decl(overloadOnConstConstraintChecks1.ts, 8, 44)) >tagName : Symbol(tagName, Decl(overloadOnConstConstraintChecks1.ts, 8, 18)) >Derived2 : Symbol(Derived2, Decl(overloadOnConstConstraintChecks1.ts, 1, 41)) createElement(tagName: 'span'): Derived3; ->createElement : Symbol(createElement, Decl(overloadOnConstConstraintChecks1.ts, 5, 17), Decl(overloadOnConstConstraintChecks1.ts, 6, 41), Decl(overloadOnConstConstraintChecks1.ts, 7, 47), Decl(overloadOnConstConstraintChecks1.ts, 8, 44)) +>createElement : Symbol(MyDoc.createElement, Decl(overloadOnConstConstraintChecks1.ts, 5, 17), Decl(overloadOnConstConstraintChecks1.ts, 6, 41), Decl(overloadOnConstConstraintChecks1.ts, 7, 47), Decl(overloadOnConstConstraintChecks1.ts, 8, 44)) >tagName : Symbol(tagName, Decl(overloadOnConstConstraintChecks1.ts, 9, 18)) >Derived3 : Symbol(Derived3, Decl(overloadOnConstConstraintChecks1.ts, 2, 41)) @@ -49,27 +49,27 @@ class D implements MyDoc { >MyDoc : Symbol(MyDoc, Decl(overloadOnConstConstraintChecks1.ts, 3, 41)) createElement(tagName:string): Base; ->createElement : Symbol(createElement, Decl(overloadOnConstConstraintChecks1.ts, 13, 26), Decl(overloadOnConstConstraintChecks1.ts, 14, 40), Decl(overloadOnConstConstraintChecks1.ts, 15, 47), Decl(overloadOnConstConstraintChecks1.ts, 16, 44), Decl(overloadOnConstConstraintChecks1.ts, 17, 45)) +>createElement : Symbol(D.createElement, Decl(overloadOnConstConstraintChecks1.ts, 13, 26), Decl(overloadOnConstConstraintChecks1.ts, 14, 40), Decl(overloadOnConstConstraintChecks1.ts, 15, 47), Decl(overloadOnConstConstraintChecks1.ts, 16, 44), Decl(overloadOnConstConstraintChecks1.ts, 17, 45)) >tagName : Symbol(tagName, Decl(overloadOnConstConstraintChecks1.ts, 14, 18)) >Base : Symbol(Base, Decl(overloadOnConstConstraintChecks1.ts, 0, 0)) createElement(tagName: 'canvas'): Derived1; ->createElement : Symbol(createElement, Decl(overloadOnConstConstraintChecks1.ts, 13, 26), Decl(overloadOnConstConstraintChecks1.ts, 14, 40), Decl(overloadOnConstConstraintChecks1.ts, 15, 47), Decl(overloadOnConstConstraintChecks1.ts, 16, 44), Decl(overloadOnConstConstraintChecks1.ts, 17, 45)) +>createElement : Symbol(D.createElement, Decl(overloadOnConstConstraintChecks1.ts, 13, 26), Decl(overloadOnConstConstraintChecks1.ts, 14, 40), Decl(overloadOnConstConstraintChecks1.ts, 15, 47), Decl(overloadOnConstConstraintChecks1.ts, 16, 44), Decl(overloadOnConstConstraintChecks1.ts, 17, 45)) >tagName : Symbol(tagName, Decl(overloadOnConstConstraintChecks1.ts, 15, 18)) >Derived1 : Symbol(Derived1, Decl(overloadOnConstConstraintChecks1.ts, 0, 24)) createElement(tagName: 'div'): Derived2; ->createElement : Symbol(createElement, Decl(overloadOnConstConstraintChecks1.ts, 13, 26), Decl(overloadOnConstConstraintChecks1.ts, 14, 40), Decl(overloadOnConstConstraintChecks1.ts, 15, 47), Decl(overloadOnConstConstraintChecks1.ts, 16, 44), Decl(overloadOnConstConstraintChecks1.ts, 17, 45)) +>createElement : Symbol(D.createElement, Decl(overloadOnConstConstraintChecks1.ts, 13, 26), Decl(overloadOnConstConstraintChecks1.ts, 14, 40), Decl(overloadOnConstConstraintChecks1.ts, 15, 47), Decl(overloadOnConstConstraintChecks1.ts, 16, 44), Decl(overloadOnConstConstraintChecks1.ts, 17, 45)) >tagName : Symbol(tagName, Decl(overloadOnConstConstraintChecks1.ts, 16, 18)) >Derived2 : Symbol(Derived2, Decl(overloadOnConstConstraintChecks1.ts, 1, 41)) createElement(tagName: 'span'): Derived3; ->createElement : Symbol(createElement, Decl(overloadOnConstConstraintChecks1.ts, 13, 26), Decl(overloadOnConstConstraintChecks1.ts, 14, 40), Decl(overloadOnConstConstraintChecks1.ts, 15, 47), Decl(overloadOnConstConstraintChecks1.ts, 16, 44), Decl(overloadOnConstConstraintChecks1.ts, 17, 45)) +>createElement : Symbol(D.createElement, Decl(overloadOnConstConstraintChecks1.ts, 13, 26), Decl(overloadOnConstConstraintChecks1.ts, 14, 40), Decl(overloadOnConstConstraintChecks1.ts, 15, 47), Decl(overloadOnConstConstraintChecks1.ts, 16, 44), Decl(overloadOnConstConstraintChecks1.ts, 17, 45)) >tagName : Symbol(tagName, Decl(overloadOnConstConstraintChecks1.ts, 17, 18)) >Derived3 : Symbol(Derived3, Decl(overloadOnConstConstraintChecks1.ts, 2, 41)) createElement(tagName:any): Base { ->createElement : Symbol(createElement, Decl(overloadOnConstConstraintChecks1.ts, 13, 26), Decl(overloadOnConstConstraintChecks1.ts, 14, 40), Decl(overloadOnConstConstraintChecks1.ts, 15, 47), Decl(overloadOnConstConstraintChecks1.ts, 16, 44), Decl(overloadOnConstConstraintChecks1.ts, 17, 45)) +>createElement : Symbol(D.createElement, Decl(overloadOnConstConstraintChecks1.ts, 13, 26), Decl(overloadOnConstConstraintChecks1.ts, 14, 40), Decl(overloadOnConstConstraintChecks1.ts, 15, 47), Decl(overloadOnConstConstraintChecks1.ts, 16, 44), Decl(overloadOnConstConstraintChecks1.ts, 17, 45)) >tagName : Symbol(tagName, Decl(overloadOnConstConstraintChecks1.ts, 18, 18)) >Base : Symbol(Base, Decl(overloadOnConstConstraintChecks1.ts, 0, 0)) diff --git a/tests/baselines/reference/overloadOnConstConstraintChecks2.symbols b/tests/baselines/reference/overloadOnConstConstraintChecks2.symbols index 0c5bd49b4f3..1ef43f1f941 100644 --- a/tests/baselines/reference/overloadOnConstConstraintChecks2.symbols +++ b/tests/baselines/reference/overloadOnConstConstraintChecks2.symbols @@ -11,7 +11,7 @@ class C extends A { >A : Symbol(A, Decl(overloadOnConstConstraintChecks2.ts, 0, 0)) public foo() { } ->foo : Symbol(foo, Decl(overloadOnConstConstraintChecks2.ts, 2, 19)) +>foo : Symbol(C.foo, Decl(overloadOnConstConstraintChecks2.ts, 2, 19)) } function foo(name: 'hi'): B; >foo : Symbol(foo, Decl(overloadOnConstConstraintChecks2.ts, 4, 1), Decl(overloadOnConstConstraintChecks2.ts, 5, 28), Decl(overloadOnConstConstraintChecks2.ts, 6, 29), Decl(overloadOnConstConstraintChecks2.ts, 7, 30)) diff --git a/tests/baselines/reference/overloadOnConstConstraintChecks3.symbols b/tests/baselines/reference/overloadOnConstConstraintChecks3.symbols index 5748fd441a5..3232ca9a94b 100644 --- a/tests/baselines/reference/overloadOnConstConstraintChecks3.symbols +++ b/tests/baselines/reference/overloadOnConstConstraintChecks3.symbols @@ -1,7 +1,7 @@ === tests/cases/compiler/overloadOnConstConstraintChecks3.ts === class A { private x = 1} >A : Symbol(A, Decl(overloadOnConstConstraintChecks3.ts, 0, 0)) ->x : Symbol(x, Decl(overloadOnConstConstraintChecks3.ts, 0, 9)) +>x : Symbol(A.x, Decl(overloadOnConstConstraintChecks3.ts, 0, 9)) class B extends A {} >B : Symbol(B, Decl(overloadOnConstConstraintChecks3.ts, 0, 24)) @@ -12,7 +12,7 @@ class C extends A { >A : Symbol(A, Decl(overloadOnConstConstraintChecks3.ts, 0, 0)) public foo() { } ->foo : Symbol(foo, Decl(overloadOnConstConstraintChecks3.ts, 2, 19)) +>foo : Symbol(C.foo, Decl(overloadOnConstConstraintChecks3.ts, 2, 19)) } function foo(name: 'hi'): B; >foo : Symbol(foo, Decl(overloadOnConstConstraintChecks3.ts, 4, 1), Decl(overloadOnConstConstraintChecks3.ts, 5, 28), Decl(overloadOnConstConstraintChecks3.ts, 6, 29), Decl(overloadOnConstConstraintChecks3.ts, 7, 30)) diff --git a/tests/baselines/reference/overloadOnConstConstraintChecks4.symbols b/tests/baselines/reference/overloadOnConstConstraintChecks4.symbols index 6e2a34b55e9..d50030fde3d 100644 --- a/tests/baselines/reference/overloadOnConstConstraintChecks4.symbols +++ b/tests/baselines/reference/overloadOnConstConstraintChecks4.symbols @@ -5,7 +5,7 @@ class Z { } class A extends Z { private x = 1 } >A : Symbol(A, Decl(overloadOnConstConstraintChecks4.ts, 0, 11)) >Z : Symbol(Z, Decl(overloadOnConstConstraintChecks4.ts, 0, 0)) ->x : Symbol(x, Decl(overloadOnConstConstraintChecks4.ts, 1, 19)) +>x : Symbol(A.x, Decl(overloadOnConstConstraintChecks4.ts, 1, 19)) class B extends A {} >B : Symbol(B, Decl(overloadOnConstConstraintChecks4.ts, 1, 35)) @@ -16,7 +16,7 @@ class C extends A { >A : Symbol(A, Decl(overloadOnConstConstraintChecks4.ts, 0, 11)) public foo() { } ->foo : Symbol(foo, Decl(overloadOnConstConstraintChecks4.ts, 3, 19)) +>foo : Symbol(C.foo, Decl(overloadOnConstConstraintChecks4.ts, 3, 19)) } function foo(name: 'hi'): B; >foo : Symbol(foo, Decl(overloadOnConstConstraintChecks4.ts, 5, 1), Decl(overloadOnConstConstraintChecks4.ts, 6, 28), Decl(overloadOnConstConstraintChecks4.ts, 7, 29), Decl(overloadOnConstConstraintChecks4.ts, 8, 30)) diff --git a/tests/baselines/reference/overloadOnConstInBaseWithBadImplementationInDerived.symbols b/tests/baselines/reference/overloadOnConstInBaseWithBadImplementationInDerived.symbols index 6e4429759e2..de3aae746a2 100644 --- a/tests/baselines/reference/overloadOnConstInBaseWithBadImplementationInDerived.symbols +++ b/tests/baselines/reference/overloadOnConstInBaseWithBadImplementationInDerived.symbols @@ -3,7 +3,7 @@ interface I { >I : Symbol(I, Decl(overloadOnConstInBaseWithBadImplementationInDerived.ts, 0, 0)) x1(a: number, callback: (x: 'hi') => number); ->x1 : Symbol(x1, Decl(overloadOnConstInBaseWithBadImplementationInDerived.ts, 0, 13)) +>x1 : Symbol(I.x1, Decl(overloadOnConstInBaseWithBadImplementationInDerived.ts, 0, 13)) >a : Symbol(a, Decl(overloadOnConstInBaseWithBadImplementationInDerived.ts, 1, 7)) >callback : Symbol(callback, Decl(overloadOnConstInBaseWithBadImplementationInDerived.ts, 1, 17)) >x : Symbol(x, Decl(overloadOnConstInBaseWithBadImplementationInDerived.ts, 1, 29)) @@ -14,7 +14,7 @@ class C implements I { >I : Symbol(I, Decl(overloadOnConstInBaseWithBadImplementationInDerived.ts, 0, 0)) x1(a: number, callback: (x: 'hi') => number) { // error ->x1 : Symbol(x1, Decl(overloadOnConstInBaseWithBadImplementationInDerived.ts, 4, 22)) +>x1 : Symbol(C.x1, Decl(overloadOnConstInBaseWithBadImplementationInDerived.ts, 4, 22)) >a : Symbol(a, Decl(overloadOnConstInBaseWithBadImplementationInDerived.ts, 5, 7)) >callback : Symbol(callback, Decl(overloadOnConstInBaseWithBadImplementationInDerived.ts, 5, 17)) >x : Symbol(x, Decl(overloadOnConstInBaseWithBadImplementationInDerived.ts, 5, 29)) diff --git a/tests/baselines/reference/overloadOnConstInCallback1.symbols b/tests/baselines/reference/overloadOnConstInCallback1.symbols index 923c726714e..935d7f3b607 100644 --- a/tests/baselines/reference/overloadOnConstInCallback1.symbols +++ b/tests/baselines/reference/overloadOnConstInCallback1.symbols @@ -3,13 +3,13 @@ class C { >C : Symbol(C, Decl(overloadOnConstInCallback1.ts, 0, 0)) x1(a: number, callback: (x: 'hi') => number); // error ->x1 : Symbol(x1, Decl(overloadOnConstInCallback1.ts, 0, 9), Decl(overloadOnConstInCallback1.ts, 1, 49)) +>x1 : Symbol(C.x1, Decl(overloadOnConstInCallback1.ts, 0, 9), Decl(overloadOnConstInCallback1.ts, 1, 49)) >a : Symbol(a, Decl(overloadOnConstInCallback1.ts, 1, 7)) >callback : Symbol(callback, Decl(overloadOnConstInCallback1.ts, 1, 17)) >x : Symbol(x, Decl(overloadOnConstInCallback1.ts, 1, 29)) x1(a: number, callback: (x: any) => number) { ->x1 : Symbol(x1, Decl(overloadOnConstInCallback1.ts, 0, 9), Decl(overloadOnConstInCallback1.ts, 1, 49)) +>x1 : Symbol(C.x1, Decl(overloadOnConstInCallback1.ts, 0, 9), Decl(overloadOnConstInCallback1.ts, 1, 49)) >a : Symbol(a, Decl(overloadOnConstInCallback1.ts, 2, 7)) >callback : Symbol(callback, Decl(overloadOnConstInCallback1.ts, 2, 17)) >x : Symbol(x, Decl(overloadOnConstInCallback1.ts, 2, 29)) diff --git a/tests/baselines/reference/overloadOnConstInObjectLiteralImplementingAnInterface.symbols b/tests/baselines/reference/overloadOnConstInObjectLiteralImplementingAnInterface.symbols index 9ea93140085..98873216523 100644 --- a/tests/baselines/reference/overloadOnConstInObjectLiteralImplementingAnInterface.symbols +++ b/tests/baselines/reference/overloadOnConstInObjectLiteralImplementingAnInterface.symbols @@ -3,7 +3,7 @@ interface I { >I : Symbol(I, Decl(overloadOnConstInObjectLiteralImplementingAnInterface.ts, 0, 0)) x1(a: number, callback: (x: 'hi') => number); ->x1 : Symbol(x1, Decl(overloadOnConstInObjectLiteralImplementingAnInterface.ts, 0, 13)) +>x1 : Symbol(I.x1, Decl(overloadOnConstInObjectLiteralImplementingAnInterface.ts, 0, 13)) >a : Symbol(a, Decl(overloadOnConstInObjectLiteralImplementingAnInterface.ts, 1, 7)) >callback : Symbol(callback, Decl(overloadOnConstInObjectLiteralImplementingAnInterface.ts, 1, 17)) >x : Symbol(x, Decl(overloadOnConstInObjectLiteralImplementingAnInterface.ts, 1, 29)) diff --git a/tests/baselines/reference/overloadOnConstInheritance1.symbols b/tests/baselines/reference/overloadOnConstInheritance1.symbols index c5cc9b52abc..4cd7ef13209 100644 --- a/tests/baselines/reference/overloadOnConstInheritance1.symbols +++ b/tests/baselines/reference/overloadOnConstInheritance1.symbols @@ -3,11 +3,11 @@ interface Base { >Base : Symbol(Base, Decl(overloadOnConstInheritance1.ts, 0, 0)) addEventListener(x: string): any; ->addEventListener : Symbol(addEventListener, Decl(overloadOnConstInheritance1.ts, 0, 16), Decl(overloadOnConstInheritance1.ts, 1, 37)) +>addEventListener : Symbol(Base.addEventListener, Decl(overloadOnConstInheritance1.ts, 0, 16), Decl(overloadOnConstInheritance1.ts, 1, 37)) >x : Symbol(x, Decl(overloadOnConstInheritance1.ts, 1, 21)) addEventListener(x: 'foo'): string; ->addEventListener : Symbol(addEventListener, Decl(overloadOnConstInheritance1.ts, 0, 16), Decl(overloadOnConstInheritance1.ts, 1, 37)) +>addEventListener : Symbol(Base.addEventListener, Decl(overloadOnConstInheritance1.ts, 0, 16), Decl(overloadOnConstInheritance1.ts, 1, 37)) >x : Symbol(x, Decl(overloadOnConstInheritance1.ts, 2, 21)) } interface Deriver extends Base { @@ -15,11 +15,11 @@ interface Deriver extends Base { >Base : Symbol(Base, Decl(overloadOnConstInheritance1.ts, 0, 0)) addEventListener(x: string): any; ->addEventListener : Symbol(addEventListener, Decl(overloadOnConstInheritance1.ts, 4, 32), Decl(overloadOnConstInheritance1.ts, 5, 37)) +>addEventListener : Symbol(Deriver.addEventListener, Decl(overloadOnConstInheritance1.ts, 4, 32), Decl(overloadOnConstInheritance1.ts, 5, 37)) >x : Symbol(x, Decl(overloadOnConstInheritance1.ts, 5, 21)) addEventListener(x: 'bar'): string; ->addEventListener : Symbol(addEventListener, Decl(overloadOnConstInheritance1.ts, 4, 32), Decl(overloadOnConstInheritance1.ts, 5, 37)) +>addEventListener : Symbol(Deriver.addEventListener, Decl(overloadOnConstInheritance1.ts, 4, 32), Decl(overloadOnConstInheritance1.ts, 5, 37)) >x : Symbol(x, Decl(overloadOnConstInheritance1.ts, 6, 21)) } diff --git a/tests/baselines/reference/overloadOnConstInheritance2.errors.txt b/tests/baselines/reference/overloadOnConstInheritance2.errors.txt index 3e25a825d1a..8d104fc1ab0 100644 --- a/tests/baselines/reference/overloadOnConstInheritance2.errors.txt +++ b/tests/baselines/reference/overloadOnConstInheritance2.errors.txt @@ -2,7 +2,7 @@ tests/cases/compiler/overloadOnConstInheritance2.ts(5,11): error TS2430: Interfa Types of property 'addEventListener' are incompatible. Type '(x: "bar") => string' is not assignable to type '{ (x: string): any; (x: "foo"): string; }'. Types of parameters 'x' and 'x' are incompatible. - Type '"bar"' is not assignable to type '"foo"'. + Type '"foo"' is not assignable to type '"bar"'. ==== tests/cases/compiler/overloadOnConstInheritance2.ts (1 errors) ==== @@ -16,7 +16,7 @@ tests/cases/compiler/overloadOnConstInheritance2.ts(5,11): error TS2430: Interfa !!! error TS2430: Types of property 'addEventListener' are incompatible. !!! error TS2430: Type '(x: "bar") => string' is not assignable to type '{ (x: string): any; (x: "foo"): string; }'. !!! error TS2430: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2430: Type '"bar"' is not assignable to type '"foo"'. +!!! error TS2430: Type '"foo"' is not assignable to type '"bar"'. addEventListener(x: 'bar'): string; // shouldn't need to redeclare the string overload } \ No newline at end of file diff --git a/tests/baselines/reference/overloadOnConstInheritance3.symbols b/tests/baselines/reference/overloadOnConstInheritance3.symbols index 32d07b19285..e73c3e88084 100644 --- a/tests/baselines/reference/overloadOnConstInheritance3.symbols +++ b/tests/baselines/reference/overloadOnConstInheritance3.symbols @@ -3,7 +3,7 @@ interface Base { >Base : Symbol(Base, Decl(overloadOnConstInheritance3.ts, 0, 0)) addEventListener(x: string): any; ->addEventListener : Symbol(addEventListener, Decl(overloadOnConstInheritance3.ts, 0, 16)) +>addEventListener : Symbol(Base.addEventListener, Decl(overloadOnConstInheritance3.ts, 0, 16)) >x : Symbol(x, Decl(overloadOnConstInheritance3.ts, 1, 21)) } interface Deriver extends Base { @@ -12,11 +12,11 @@ interface Deriver extends Base { // shouldn't need to redeclare the string overload addEventListener(x: 'bar'): string; ->addEventListener : Symbol(addEventListener, Decl(overloadOnConstInheritance3.ts, 3, 32), Decl(overloadOnConstInheritance3.ts, 5, 39)) +>addEventListener : Symbol(Deriver.addEventListener, Decl(overloadOnConstInheritance3.ts, 3, 32), Decl(overloadOnConstInheritance3.ts, 5, 39)) >x : Symbol(x, Decl(overloadOnConstInheritance3.ts, 5, 21)) addEventListener(x: 'foo'): string; ->addEventListener : Symbol(addEventListener, Decl(overloadOnConstInheritance3.ts, 3, 32), Decl(overloadOnConstInheritance3.ts, 5, 39)) +>addEventListener : Symbol(Deriver.addEventListener, Decl(overloadOnConstInheritance3.ts, 3, 32), Decl(overloadOnConstInheritance3.ts, 5, 39)) >x : Symbol(x, Decl(overloadOnConstInheritance3.ts, 6, 21)) } diff --git a/tests/baselines/reference/overloadOnConstInheritance4.symbols b/tests/baselines/reference/overloadOnConstInheritance4.symbols index 9bfa61e6aa9..8902b0442fd 100644 --- a/tests/baselines/reference/overloadOnConstInheritance4.symbols +++ b/tests/baselines/reference/overloadOnConstInheritance4.symbols @@ -3,7 +3,7 @@ interface I { >I : Symbol(I, Decl(overloadOnConstInheritance4.ts, 0, 0)) x1(a: number, callback: (x: 'hi') => number); ->x1 : Symbol(x1, Decl(overloadOnConstInheritance4.ts, 0, 13)) +>x1 : Symbol(I.x1, Decl(overloadOnConstInheritance4.ts, 0, 13)) >a : Symbol(a, Decl(overloadOnConstInheritance4.ts, 1, 7)) >callback : Symbol(callback, Decl(overloadOnConstInheritance4.ts, 1, 17)) >x : Symbol(x, Decl(overloadOnConstInheritance4.ts, 1, 29)) @@ -13,13 +13,13 @@ class C implements I { >I : Symbol(I, Decl(overloadOnConstInheritance4.ts, 0, 0)) x1(a: number, callback: (x: 'hi') => number); ->x1 : Symbol(x1, Decl(overloadOnConstInheritance4.ts, 3, 22), Decl(overloadOnConstInheritance4.ts, 4, 49)) +>x1 : Symbol(C.x1, Decl(overloadOnConstInheritance4.ts, 3, 22), Decl(overloadOnConstInheritance4.ts, 4, 49)) >a : Symbol(a, Decl(overloadOnConstInheritance4.ts, 4, 7)) >callback : Symbol(callback, Decl(overloadOnConstInheritance4.ts, 4, 17)) >x : Symbol(x, Decl(overloadOnConstInheritance4.ts, 4, 29)) x1(a: number, callback: (x: 'hi') => number) { ->x1 : Symbol(x1, Decl(overloadOnConstInheritance4.ts, 3, 22), Decl(overloadOnConstInheritance4.ts, 4, 49)) +>x1 : Symbol(C.x1, Decl(overloadOnConstInheritance4.ts, 3, 22), Decl(overloadOnConstInheritance4.ts, 4, 49)) >a : Symbol(a, Decl(overloadOnConstInheritance4.ts, 5, 7)) >callback : Symbol(callback, Decl(overloadOnConstInheritance4.ts, 5, 17)) >x : Symbol(x, Decl(overloadOnConstInheritance4.ts, 5, 29)) diff --git a/tests/baselines/reference/overloadOnConstNoAnyImplementation2.errors.txt b/tests/baselines/reference/overloadOnConstNoAnyImplementation2.errors.txt index bfd888c9912..8723a79d474 100644 --- a/tests/baselines/reference/overloadOnConstNoAnyImplementation2.errors.txt +++ b/tests/baselines/reference/overloadOnConstNoAnyImplementation2.errors.txt @@ -1,10 +1,10 @@ tests/cases/compiler/overloadOnConstNoAnyImplementation2.ts(12,18): error TS2345: Argument of type 'number' is not assignable to parameter of type 'string'. tests/cases/compiler/overloadOnConstNoAnyImplementation2.ts(18,9): error TS2345: Argument of type '(x: "bye") => number' is not assignable to parameter of type '(x: "hi") => number'. Types of parameters 'x' and 'x' are incompatible. - Type '"bye"' is not assignable to type '"hi"'. + Type '"hi"' is not assignable to type '"bye"'. tests/cases/compiler/overloadOnConstNoAnyImplementation2.ts(21,9): error TS2345: Argument of type '(x: number) => number' is not assignable to parameter of type '(x: "hi") => number'. Types of parameters 'x' and 'x' are incompatible. - Type 'number' is not assignable to type '"hi"'. + Type '"hi"' is not assignable to type 'number'. ==== tests/cases/compiler/overloadOnConstNoAnyImplementation2.ts (3 errors) ==== @@ -31,11 +31,11 @@ tests/cases/compiler/overloadOnConstNoAnyImplementation2.ts(21,9): error TS2345: ~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: "bye") => number' is not assignable to parameter of type '(x: "hi") => number'. !!! error TS2345: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2345: Type '"bye"' is not assignable to type '"hi"'. +!!! error TS2345: Type '"hi"' is not assignable to type '"bye"'. c.x1(1, (x) => { return 1; } ); c.x1(1, (x: number) => { return 1; } ); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number) => number' is not assignable to parameter of type '(x: "hi") => number'. !!! error TS2345: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2345: Type 'number' is not assignable to type '"hi"'. \ No newline at end of file +!!! error TS2345: Type '"hi"' is not assignable to type 'number'. \ No newline at end of file diff --git a/tests/baselines/reference/overloadOnConstNoNonSpecializedSignature.symbols b/tests/baselines/reference/overloadOnConstNoNonSpecializedSignature.symbols index ff7f88f43c3..bb1633940ba 100644 --- a/tests/baselines/reference/overloadOnConstNoNonSpecializedSignature.symbols +++ b/tests/baselines/reference/overloadOnConstNoNonSpecializedSignature.symbols @@ -3,11 +3,11 @@ class C { >C : Symbol(C, Decl(overloadOnConstNoNonSpecializedSignature.ts, 0, 0)) x1(a: 'hi'); // error, no non-specialized signature in overload list ->x1 : Symbol(x1, Decl(overloadOnConstNoNonSpecializedSignature.ts, 0, 9), Decl(overloadOnConstNoNonSpecializedSignature.ts, 1, 15)) +>x1 : Symbol(C.x1, Decl(overloadOnConstNoNonSpecializedSignature.ts, 0, 9), Decl(overloadOnConstNoNonSpecializedSignature.ts, 1, 15)) >a : Symbol(a, Decl(overloadOnConstNoNonSpecializedSignature.ts, 1, 6)) x1(a: string) { } ->x1 : Symbol(x1, Decl(overloadOnConstNoNonSpecializedSignature.ts, 0, 9), Decl(overloadOnConstNoNonSpecializedSignature.ts, 1, 15)) +>x1 : Symbol(C.x1, Decl(overloadOnConstNoNonSpecializedSignature.ts, 0, 9), Decl(overloadOnConstNoNonSpecializedSignature.ts, 1, 15)) >a : Symbol(a, Decl(overloadOnConstNoNonSpecializedSignature.ts, 2, 6)) } diff --git a/tests/baselines/reference/overloadOnConstNoStringImplementation2.errors.txt b/tests/baselines/reference/overloadOnConstNoStringImplementation2.errors.txt index fddfa04eef7..e7ac72eb052 100644 --- a/tests/baselines/reference/overloadOnConstNoStringImplementation2.errors.txt +++ b/tests/baselines/reference/overloadOnConstNoStringImplementation2.errors.txt @@ -1,9 +1,9 @@ tests/cases/compiler/overloadOnConstNoStringImplementation2.ts(18,9): error TS2345: Argument of type '(x: "bye") => number' is not assignable to parameter of type '(x: "hi") => number'. Types of parameters 'x' and 'x' are incompatible. - Type '"bye"' is not assignable to type '"hi"'. + Type '"hi"' is not assignable to type '"bye"'. tests/cases/compiler/overloadOnConstNoStringImplementation2.ts(20,9): error TS2345: Argument of type '(x: number) => number' is not assignable to parameter of type '(x: "hi") => number'. Types of parameters 'x' and 'x' are incompatible. - Type 'number' is not assignable to type '"hi"'. + Type '"hi"' is not assignable to type 'number'. ==== tests/cases/compiler/overloadOnConstNoStringImplementation2.ts (2 errors) ==== @@ -28,10 +28,10 @@ tests/cases/compiler/overloadOnConstNoStringImplementation2.ts(20,9): error TS23 ~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: "bye") => number' is not assignable to parameter of type '(x: "hi") => number'. !!! error TS2345: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2345: Type '"bye"' is not assignable to type '"hi"'. +!!! error TS2345: Type '"hi"' is not assignable to type '"bye"'. c.x1(1, (x: string) => { return 1; } ); c.x1(1, (x: number) => { return 1; } ); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number) => number' is not assignable to parameter of type '(x: "hi") => number'. !!! error TS2345: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2345: Type 'number' is not assignable to type '"hi"'. \ No newline at end of file +!!! error TS2345: Type '"hi"' is not assignable to type 'number'. \ No newline at end of file diff --git a/tests/baselines/reference/overloadOnGenericArity.symbols b/tests/baselines/reference/overloadOnGenericArity.symbols index a9fddb65177..a50a788b4e8 100644 --- a/tests/baselines/reference/overloadOnGenericArity.symbols +++ b/tests/baselines/reference/overloadOnGenericArity.symbols @@ -3,14 +3,14 @@ interface Test { >Test : Symbol(Test, Decl(overloadOnGenericArity.ts, 0, 0)) then(p: string): string; ->then : Symbol(then, Decl(overloadOnGenericArity.ts, 0, 16), Decl(overloadOnGenericArity.ts, 1, 31)) +>then : Symbol(Test.then, Decl(overloadOnGenericArity.ts, 0, 16), Decl(overloadOnGenericArity.ts, 1, 31)) >U : Symbol(U, Decl(overloadOnGenericArity.ts, 1, 9)) >p : Symbol(p, Decl(overloadOnGenericArity.ts, 1, 12)) then(p: string): Date; // Error: Overloads cannot differ only by return type ->then : Symbol(then, Decl(overloadOnGenericArity.ts, 0, 16), Decl(overloadOnGenericArity.ts, 1, 31)) +>then : Symbol(Test.then, Decl(overloadOnGenericArity.ts, 0, 16), Decl(overloadOnGenericArity.ts, 1, 31)) >p : Symbol(p, Decl(overloadOnGenericArity.ts, 2, 9)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) } diff --git a/tests/baselines/reference/overloadOnGenericClassAndNonGenericClass.symbols b/tests/baselines/reference/overloadOnGenericClassAndNonGenericClass.symbols index 8c4b74f89a2..daf7c34cf00 100644 --- a/tests/baselines/reference/overloadOnGenericClassAndNonGenericClass.symbols +++ b/tests/baselines/reference/overloadOnGenericClassAndNonGenericClass.symbols @@ -1,29 +1,29 @@ === tests/cases/compiler/overloadOnGenericClassAndNonGenericClass.ts === class A { a; } >A : Symbol(A, Decl(overloadOnGenericClassAndNonGenericClass.ts, 0, 0)) ->a : Symbol(a, Decl(overloadOnGenericClassAndNonGenericClass.ts, 0, 9)) +>a : Symbol(A.a, Decl(overloadOnGenericClassAndNonGenericClass.ts, 0, 9)) class B { b; } >B : Symbol(B, Decl(overloadOnGenericClassAndNonGenericClass.ts, 0, 14)) ->b : Symbol(b, Decl(overloadOnGenericClassAndNonGenericClass.ts, 1, 9)) +>b : Symbol(B.b, Decl(overloadOnGenericClassAndNonGenericClass.ts, 1, 9)) class C { c; } >C : Symbol(C, Decl(overloadOnGenericClassAndNonGenericClass.ts, 1, 14)) ->c : Symbol(c, Decl(overloadOnGenericClassAndNonGenericClass.ts, 2, 9)) +>c : Symbol(C.c, Decl(overloadOnGenericClassAndNonGenericClass.ts, 2, 9)) class X { x: T; } >X : Symbol(X, Decl(overloadOnGenericClassAndNonGenericClass.ts, 2, 14)) >T : Symbol(T, Decl(overloadOnGenericClassAndNonGenericClass.ts, 3, 8)) ->x : Symbol(x, Decl(overloadOnGenericClassAndNonGenericClass.ts, 3, 12)) +>x : Symbol(X.x, Decl(overloadOnGenericClassAndNonGenericClass.ts, 3, 12)) >T : Symbol(T, Decl(overloadOnGenericClassAndNonGenericClass.ts, 3, 8)) class X1 { x: string; } >X1 : Symbol(X1, Decl(overloadOnGenericClassAndNonGenericClass.ts, 3, 20)) ->x : Symbol(x, Decl(overloadOnGenericClassAndNonGenericClass.ts, 4, 10)) +>x : Symbol(X1.x, Decl(overloadOnGenericClassAndNonGenericClass.ts, 4, 10)) class X2 { x: string; } >X2 : Symbol(X2, Decl(overloadOnGenericClassAndNonGenericClass.ts, 4, 23)) ->x : Symbol(x, Decl(overloadOnGenericClassAndNonGenericClass.ts, 5, 10)) +>x : Symbol(X2.x, Decl(overloadOnGenericClassAndNonGenericClass.ts, 5, 10)) function f(a: X1): A; >f : Symbol(f, Decl(overloadOnGenericClassAndNonGenericClass.ts, 5, 23), Decl(overloadOnGenericClassAndNonGenericClass.ts, 6, 21), Decl(overloadOnGenericClassAndNonGenericClass.ts, 7, 26)) diff --git a/tests/baselines/reference/overloadResolutionOverNonCTObjectLit.symbols b/tests/baselines/reference/overloadResolutionOverNonCTObjectLit.symbols index d352216b74e..7ca4614ebe7 100644 --- a/tests/baselines/reference/overloadResolutionOverNonCTObjectLit.symbols +++ b/tests/baselines/reference/overloadResolutionOverNonCTObjectLit.symbols @@ -6,13 +6,13 @@ module Bugs { >IToken : Symbol(IToken, Decl(overloadResolutionOverNonCTObjectLit.ts, 0, 13)) startIndex:number; ->startIndex : Symbol(startIndex, Decl(overloadResolutionOverNonCTObjectLit.ts, 1, 41)) +>startIndex : Symbol(IToken.startIndex, Decl(overloadResolutionOverNonCTObjectLit.ts, 1, 41)) type:string; ->type : Symbol(type, Decl(overloadResolutionOverNonCTObjectLit.ts, 2, 50)) +>type : Symbol(IToken.type, Decl(overloadResolutionOverNonCTObjectLit.ts, 2, 50)) bracket:number; ->bracket : Symbol(bracket, Decl(overloadResolutionOverNonCTObjectLit.ts, 3, 44)) +>bracket : Symbol(IToken.bracket, Decl(overloadResolutionOverNonCTObjectLit.ts, 3, 44)) } export interface IState { @@ -24,11 +24,11 @@ module Bugs { >IToken : Symbol(IToken, Decl(overloadResolutionOverNonCTObjectLit.ts, 0, 13)) state: IState; ->state : Symbol(state, Decl(overloadResolutionOverNonCTObjectLit.ts, 10, 61)) +>state : Symbol(IStateToken.state, Decl(overloadResolutionOverNonCTObjectLit.ts, 10, 61)) >IState : Symbol(IState, Decl(overloadResolutionOverNonCTObjectLit.ts, 5, 17)) length: number; ->length : Symbol(length, Decl(overloadResolutionOverNonCTObjectLit.ts, 11, 46)) +>length : Symbol(IStateToken.length, Decl(overloadResolutionOverNonCTObjectLit.ts, 11, 46)) } function bug3() { diff --git a/tests/baselines/reference/overloadRet.symbols b/tests/baselines/reference/overloadRet.symbols index 0c645b7c4b8..cfb33663b7f 100644 --- a/tests/baselines/reference/overloadRet.symbols +++ b/tests/baselines/reference/overloadRet.symbols @@ -3,36 +3,36 @@ interface I { >I : Symbol(I, Decl(overloadRet.ts, 0, 0)) f(s:string):number; ->f : Symbol(f, Decl(overloadRet.ts, 0, 13), Decl(overloadRet.ts, 1, 23)) +>f : Symbol(I.f, Decl(overloadRet.ts, 0, 13), Decl(overloadRet.ts, 1, 23)) >s : Symbol(s, Decl(overloadRet.ts, 1, 6)) f(n:number):string; ->f : Symbol(f, Decl(overloadRet.ts, 0, 13), Decl(overloadRet.ts, 1, 23)) +>f : Symbol(I.f, Decl(overloadRet.ts, 0, 13), Decl(overloadRet.ts, 1, 23)) >n : Symbol(n, Decl(overloadRet.ts, 2, 6)) g(n:number):any; ->g : Symbol(g, Decl(overloadRet.ts, 2, 23), Decl(overloadRet.ts, 3, 20)) +>g : Symbol(I.g, Decl(overloadRet.ts, 2, 23), Decl(overloadRet.ts, 3, 20)) >n : Symbol(n, Decl(overloadRet.ts, 3, 6)) g(n:number,m:number):string; ->g : Symbol(g, Decl(overloadRet.ts, 2, 23), Decl(overloadRet.ts, 3, 20)) +>g : Symbol(I.g, Decl(overloadRet.ts, 2, 23), Decl(overloadRet.ts, 3, 20)) >n : Symbol(n, Decl(overloadRet.ts, 4, 6)) >m : Symbol(m, Decl(overloadRet.ts, 4, 15)) h(n:number):I; ->h : Symbol(h, Decl(overloadRet.ts, 4, 32), Decl(overloadRet.ts, 5, 18)) +>h : Symbol(I.h, Decl(overloadRet.ts, 4, 32), Decl(overloadRet.ts, 5, 18)) >n : Symbol(n, Decl(overloadRet.ts, 5, 6)) >I : Symbol(I, Decl(overloadRet.ts, 0, 0)) h(b:boolean):number; ->h : Symbol(h, Decl(overloadRet.ts, 4, 32), Decl(overloadRet.ts, 5, 18)) +>h : Symbol(I.h, Decl(overloadRet.ts, 4, 32), Decl(overloadRet.ts, 5, 18)) >b : Symbol(b, Decl(overloadRet.ts, 6, 6)) i(b:boolean):number; ->i : Symbol(i, Decl(overloadRet.ts, 6, 24), Decl(overloadRet.ts, 7, 24)) +>i : Symbol(I.i, Decl(overloadRet.ts, 6, 24), Decl(overloadRet.ts, 7, 24)) >b : Symbol(b, Decl(overloadRet.ts, 7, 6)) i(b:boolean):any; ->i : Symbol(i, Decl(overloadRet.ts, 6, 24), Decl(overloadRet.ts, 7, 24)) +>i : Symbol(I.i, Decl(overloadRet.ts, 6, 24), Decl(overloadRet.ts, 7, 24)) >b : Symbol(b, Decl(overloadRet.ts, 8, 6)) } diff --git a/tests/baselines/reference/overloadReturnTypes.symbols b/tests/baselines/reference/overloadReturnTypes.symbols index b76efb4a0d6..88fda7bfdbb 100644 --- a/tests/baselines/reference/overloadReturnTypes.symbols +++ b/tests/baselines/reference/overloadReturnTypes.symbols @@ -41,17 +41,17 @@ interface IFace { >IFace : Symbol(IFace, Decl(overloadReturnTypes.ts, 14, 1)) attr(name:string):string; ->attr : Symbol(attr, Decl(overloadReturnTypes.ts, 17, 17), Decl(overloadReturnTypes.ts, 18, 26), Decl(overloadReturnTypes.ts, 19, 45)) +>attr : Symbol(IFace.attr, Decl(overloadReturnTypes.ts, 17, 17), Decl(overloadReturnTypes.ts, 18, 26), Decl(overloadReturnTypes.ts, 19, 45)) >name : Symbol(name, Decl(overloadReturnTypes.ts, 18, 6)) attr(name: string, value: string): Accessor; ->attr : Symbol(attr, Decl(overloadReturnTypes.ts, 17, 17), Decl(overloadReturnTypes.ts, 18, 26), Decl(overloadReturnTypes.ts, 19, 45)) +>attr : Symbol(IFace.attr, Decl(overloadReturnTypes.ts, 17, 17), Decl(overloadReturnTypes.ts, 18, 26), Decl(overloadReturnTypes.ts, 19, 45)) >name : Symbol(name, Decl(overloadReturnTypes.ts, 19, 6)) >value : Symbol(value, Decl(overloadReturnTypes.ts, 19, 19)) >Accessor : Symbol(Accessor, Decl(overloadReturnTypes.ts, 0, 0)) attr(map: any): Accessor; ->attr : Symbol(attr, Decl(overloadReturnTypes.ts, 17, 17), Decl(overloadReturnTypes.ts, 18, 26), Decl(overloadReturnTypes.ts, 19, 45)) +>attr : Symbol(IFace.attr, Decl(overloadReturnTypes.ts, 17, 17), Decl(overloadReturnTypes.ts, 18, 26), Decl(overloadReturnTypes.ts, 19, 45)) >map : Symbol(map, Decl(overloadReturnTypes.ts, 20, 6)) >Accessor : Symbol(Accessor, Decl(overloadReturnTypes.ts, 0, 0)) } diff --git a/tests/baselines/reference/overloadresolutionWithConstraintCheckingDeferred.errors.txt b/tests/baselines/reference/overloadresolutionWithConstraintCheckingDeferred.errors.txt index 45c9f99b691..3c06fd43275 100644 --- a/tests/baselines/reference/overloadresolutionWithConstraintCheckingDeferred.errors.txt +++ b/tests/baselines/reference/overloadresolutionWithConstraintCheckingDeferred.errors.txt @@ -5,8 +5,8 @@ tests/cases/compiler/overloadresolutionWithConstraintCheckingDeferred.ts(16,5): tests/cases/compiler/overloadresolutionWithConstraintCheckingDeferred.ts(16,38): error TS2344: Type 'D' does not satisfy the constraint 'A'. tests/cases/compiler/overloadresolutionWithConstraintCheckingDeferred.ts(18,27): error TS2345: Argument of type '(x: D) => G' is not assignable to parameter of type '(x: B) => any'. Types of parameters 'x' and 'x' are incompatible. - Type 'D' is not assignable to type 'B'. - Property 'x' is missing in type 'D'. + Type 'B' is not assignable to type 'D'. + Property 'q' is missing in type 'B'. tests/cases/compiler/overloadresolutionWithConstraintCheckingDeferred.ts(19,14): error TS2344: Type 'D' does not satisfy the constraint 'A'. @@ -39,16 +39,13 @@ tests/cases/compiler/overloadresolutionWithConstraintCheckingDeferred.ts(19,14): var result3: string = foo(x => { // x has type D ~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS2345: Argument of type '(x: D) => G' is not assignable to parameter of type '(x: B) => any'. +!!! error TS2345: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2345: Type 'B' is not assignable to type 'D'. +!!! error TS2345: Property 'q' is missing in type 'B'. var y: G; // error that D does not satisfy constraint, y is of type G, entire call to foo is an error - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~ !!! error TS2344: Type 'D' does not satisfy the constraint 'A'. return y; - ~~~~~~~~~~~~~ }); - ~ -!!! error TS2345: Argument of type '(x: D) => G' is not assignable to parameter of type '(x: B) => any'. -!!! error TS2345: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2345: Type 'D' is not assignable to type 'B'. -!!! error TS2345: Property 'x' is missing in type 'D'. \ No newline at end of file diff --git a/tests/baselines/reference/overloadsWithConstraints.symbols b/tests/baselines/reference/overloadsWithConstraints.symbols index 4b33826e6b8..d3a3574da6a 100644 --- a/tests/baselines/reference/overloadsWithConstraints.symbols +++ b/tests/baselines/reference/overloadsWithConstraints.symbols @@ -2,7 +2,7 @@ declare function f(x: T): T; >f : Symbol(f, Decl(overloadsWithConstraints.ts, 0, 0), Decl(overloadsWithConstraints.ts, 0, 46)) >T : Symbol(T, Decl(overloadsWithConstraints.ts, 0, 19)) ->Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >x : Symbol(x, Decl(overloadsWithConstraints.ts, 0, 37)) >T : Symbol(T, Decl(overloadsWithConstraints.ts, 0, 19)) >T : Symbol(T, Decl(overloadsWithConstraints.ts, 0, 19)) @@ -10,7 +10,7 @@ declare function f(x: T): T; declare function f(x: T): T >f : Symbol(f, Decl(overloadsWithConstraints.ts, 0, 0), Decl(overloadsWithConstraints.ts, 0, 46)) >T : Symbol(T, Decl(overloadsWithConstraints.ts, 1, 19)) ->String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >x : Symbol(x, Decl(overloadsWithConstraints.ts, 1, 37)) >T : Symbol(T, Decl(overloadsWithConstraints.ts, 1, 19)) >T : Symbol(T, Decl(overloadsWithConstraints.ts, 1, 19)) diff --git a/tests/baselines/reference/parameterPropertyInitializerInInitializers.symbols b/tests/baselines/reference/parameterPropertyInitializerInInitializers.symbols index c05adb9e8ca..e355a40d85e 100644 --- a/tests/baselines/reference/parameterPropertyInitializerInInitializers.symbols +++ b/tests/baselines/reference/parameterPropertyInitializerInInitializers.symbols @@ -3,7 +3,7 @@ class Foo { >Foo : Symbol(Foo, Decl(parameterPropertyInitializerInInitializers.ts, 0, 0)) constructor(public x: number, public y: number = x) { } ->x : Symbol(x, Decl(parameterPropertyInitializerInInitializers.ts, 1, 16)) ->y : Symbol(y, Decl(parameterPropertyInitializerInInitializers.ts, 1, 33)) +>x : Symbol(Foo.x, Decl(parameterPropertyInitializerInInitializers.ts, 1, 16)) +>y : Symbol(Foo.y, Decl(parameterPropertyInitializerInInitializers.ts, 1, 33)) >x : Symbol(x, Decl(parameterPropertyInitializerInInitializers.ts, 1, 16)) } diff --git a/tests/baselines/reference/parameterPropertyReferencingOtherParameter.symbols b/tests/baselines/reference/parameterPropertyReferencingOtherParameter.symbols index fb6d289f241..97c0c22bc8c 100644 --- a/tests/baselines/reference/parameterPropertyReferencingOtherParameter.symbols +++ b/tests/baselines/reference/parameterPropertyReferencingOtherParameter.symbols @@ -3,8 +3,8 @@ class Foo { >Foo : Symbol(Foo, Decl(parameterPropertyReferencingOtherParameter.ts, 0, 0)) constructor(public x: number, public y: number = x) { } ->x : Symbol(x, Decl(parameterPropertyReferencingOtherParameter.ts, 1, 16)) ->y : Symbol(y, Decl(parameterPropertyReferencingOtherParameter.ts, 1, 33)) +>x : Symbol(Foo.x, Decl(parameterPropertyReferencingOtherParameter.ts, 1, 16)) +>y : Symbol(Foo.y, Decl(parameterPropertyReferencingOtherParameter.ts, 1, 33)) >x : Symbol(x, Decl(parameterPropertyReferencingOtherParameter.ts, 1, 16)) } diff --git a/tests/baselines/reference/parameterReferencesOtherParameter1.symbols b/tests/baselines/reference/parameterReferencesOtherParameter1.symbols index 7e7eec1a3cb..02e5cce5c20 100644 --- a/tests/baselines/reference/parameterReferencesOtherParameter1.symbols +++ b/tests/baselines/reference/parameterReferencesOtherParameter1.symbols @@ -3,7 +3,7 @@ class Model { >Model : Symbol(Model, Decl(parameterReferencesOtherParameter1.ts, 0, 0)) public name: string; ->name : Symbol(name, Decl(parameterReferencesOtherParameter1.ts, 0, 13)) +>name : Symbol(Model.name, Decl(parameterReferencesOtherParameter1.ts, 0, 13)) } class UI { diff --git a/tests/baselines/reference/parameterReferencesOtherParameter2.symbols b/tests/baselines/reference/parameterReferencesOtherParameter2.symbols index 2d63c7a3334..94f9b43bb27 100644 --- a/tests/baselines/reference/parameterReferencesOtherParameter2.symbols +++ b/tests/baselines/reference/parameterReferencesOtherParameter2.symbols @@ -3,7 +3,7 @@ class Model { >Model : Symbol(Model, Decl(parameterReferencesOtherParameter2.ts, 0, 0)) public name: string; ->name : Symbol(name, Decl(parameterReferencesOtherParameter2.ts, 0, 13)) +>name : Symbol(Model.name, Decl(parameterReferencesOtherParameter2.ts, 0, 13)) } class UI { diff --git a/tests/baselines/reference/parametersWithNoAnnotationAreAny.symbols b/tests/baselines/reference/parametersWithNoAnnotationAreAny.symbols index 9771d7f05ca..257679f61b2 100644 --- a/tests/baselines/reference/parametersWithNoAnnotationAreAny.symbols +++ b/tests/baselines/reference/parametersWithNoAnnotationAreAny.symbols @@ -25,7 +25,7 @@ class C { >C : Symbol(C, Decl(parametersWithNoAnnotationAreAny.ts, 3, 21)) foo(x) { ->foo : Symbol(foo, Decl(parametersWithNoAnnotationAreAny.ts, 5, 9)) +>foo : Symbol(C.foo, Decl(parametersWithNoAnnotationAreAny.ts, 5, 9)) >x : Symbol(x, Decl(parametersWithNoAnnotationAreAny.ts, 6, 8)) return x; @@ -37,11 +37,11 @@ interface I { >I : Symbol(I, Decl(parametersWithNoAnnotationAreAny.ts, 9, 1)) foo(x); ->foo : Symbol(foo, Decl(parametersWithNoAnnotationAreAny.ts, 11, 13)) +>foo : Symbol(I.foo, Decl(parametersWithNoAnnotationAreAny.ts, 11, 13)) >x : Symbol(x, Decl(parametersWithNoAnnotationAreAny.ts, 12, 8)) foo2(x, y); ->foo2 : Symbol(foo2, Decl(parametersWithNoAnnotationAreAny.ts, 12, 11)) +>foo2 : Symbol(I.foo2, Decl(parametersWithNoAnnotationAreAny.ts, 12, 11)) >x : Symbol(x, Decl(parametersWithNoAnnotationAreAny.ts, 13, 9)) >y : Symbol(y, Decl(parametersWithNoAnnotationAreAny.ts, 13, 11)) } diff --git a/tests/baselines/reference/parenthesizedContexualTyping3.symbols b/tests/baselines/reference/parenthesizedContexualTyping3.symbols index 4db888efd61..1d4bce3f230 100644 --- a/tests/baselines/reference/parenthesizedContexualTyping3.symbols +++ b/tests/baselines/reference/parenthesizedContexualTyping3.symbols @@ -9,7 +9,7 @@ function tempFun(tempStrs: TemplateStringsArray, g: (x: T) => T, x: T): T; >tempFun : Symbol(tempFun, Decl(parenthesizedContexualTyping3.ts, 0, 0), Decl(parenthesizedContexualTyping3.ts, 6, 77), Decl(parenthesizedContexualTyping3.ts, 7, 93)) >T : Symbol(T, Decl(parenthesizedContexualTyping3.ts, 6, 17)) >tempStrs : Symbol(tempStrs, Decl(parenthesizedContexualTyping3.ts, 6, 20)) ->TemplateStringsArray : Symbol(TemplateStringsArray, Decl(lib.d.ts, --, --)) +>TemplateStringsArray : Symbol(TemplateStringsArray, Decl(lib.es5.d.ts, --, --)) >g : Symbol(g, Decl(parenthesizedContexualTyping3.ts, 6, 51)) >x : Symbol(x, Decl(parenthesizedContexualTyping3.ts, 6, 56)) >T : Symbol(T, Decl(parenthesizedContexualTyping3.ts, 6, 17)) @@ -22,7 +22,7 @@ function tempFun(tempStrs: TemplateStringsArray, g: (x: T) => T, h: (y: T) => >tempFun : Symbol(tempFun, Decl(parenthesizedContexualTyping3.ts, 0, 0), Decl(parenthesizedContexualTyping3.ts, 6, 77), Decl(parenthesizedContexualTyping3.ts, 7, 93)) >T : Symbol(T, Decl(parenthesizedContexualTyping3.ts, 7, 17)) >tempStrs : Symbol(tempStrs, Decl(parenthesizedContexualTyping3.ts, 7, 20)) ->TemplateStringsArray : Symbol(TemplateStringsArray, Decl(lib.d.ts, --, --)) +>TemplateStringsArray : Symbol(TemplateStringsArray, Decl(lib.es5.d.ts, --, --)) >g : Symbol(g, Decl(parenthesizedContexualTyping3.ts, 7, 51)) >x : Symbol(x, Decl(parenthesizedContexualTyping3.ts, 7, 56)) >T : Symbol(T, Decl(parenthesizedContexualTyping3.ts, 7, 17)) @@ -39,7 +39,7 @@ function tempFun(tempStrs: TemplateStringsArray, g: (x: T) => T, x: T): T { >tempFun : Symbol(tempFun, Decl(parenthesizedContexualTyping3.ts, 0, 0), Decl(parenthesizedContexualTyping3.ts, 6, 77), Decl(parenthesizedContexualTyping3.ts, 7, 93)) >T : Symbol(T, Decl(parenthesizedContexualTyping3.ts, 8, 17)) >tempStrs : Symbol(tempStrs, Decl(parenthesizedContexualTyping3.ts, 8, 20)) ->TemplateStringsArray : Symbol(TemplateStringsArray, Decl(lib.d.ts, --, --)) +>TemplateStringsArray : Symbol(TemplateStringsArray, Decl(lib.es5.d.ts, --, --)) >g : Symbol(g, Decl(parenthesizedContexualTyping3.ts, 8, 51)) >x : Symbol(x, Decl(parenthesizedContexualTyping3.ts, 8, 56)) >T : Symbol(T, Decl(parenthesizedContexualTyping3.ts, 8, 17)) diff --git a/tests/baselines/reference/parseShortform.symbols b/tests/baselines/reference/parseShortform.symbols index 31310e7bbb7..f0caf5f7d12 100644 --- a/tests/baselines/reference/parseShortform.symbols +++ b/tests/baselines/reference/parseShortform.symbols @@ -3,7 +3,7 @@ interface I { >I : Symbol(I, Decl(parseShortform.ts, 0, 0)) w: { ->w : Symbol(w, Decl(parseShortform.ts, 0, 13)) +>w : Symbol(I.w, Decl(parseShortform.ts, 0, 13)) z: I; >z : Symbol(z, Decl(parseShortform.ts, 1, 8)) @@ -22,13 +22,13 @@ interface I { }; x: boolean; ->x : Symbol(x, Decl(parseShortform.ts, 6, 6)) +>x : Symbol(I.x, Decl(parseShortform.ts, 6, 6)) y: (s: string) => boolean; ->y : Symbol(y, Decl(parseShortform.ts, 7, 15)) +>y : Symbol(I.y, Decl(parseShortform.ts, 7, 15)) >s : Symbol(s, Decl(parseShortform.ts, 8, 8)) z: I; ->z : Symbol(z, Decl(parseShortform.ts, 8, 30)) +>z : Symbol(I.z, Decl(parseShortform.ts, 8, 30)) >I : Symbol(I, Decl(parseShortform.ts, 0, 0)) } diff --git a/tests/baselines/reference/parser509546.symbols b/tests/baselines/reference/parser509546.symbols index 1b4e44312e5..a288b0c782e 100644 --- a/tests/baselines/reference/parser509546.symbols +++ b/tests/baselines/reference/parser509546.symbols @@ -3,6 +3,6 @@ export class Logger { >Logger : Symbol(Logger, Decl(parser509546.ts, 0, 0)) public ->public : Symbol(public, Decl(parser509546.ts, 0, 21)) +>public : Symbol(Logger.public, Decl(parser509546.ts, 0, 21)) } diff --git a/tests/baselines/reference/parser509546_1.symbols b/tests/baselines/reference/parser509546_1.symbols index 730b1813cdd..356345d31c4 100644 --- a/tests/baselines/reference/parser509546_1.symbols +++ b/tests/baselines/reference/parser509546_1.symbols @@ -3,6 +3,6 @@ export class Logger { >Logger : Symbol(Logger, Decl(parser509546_1.ts, 0, 0)) public ->public : Symbol(public, Decl(parser509546_1.ts, 0, 21)) +>public : Symbol(Logger.public, Decl(parser509546_1.ts, 0, 21)) } diff --git a/tests/baselines/reference/parser509546_2.symbols b/tests/baselines/reference/parser509546_2.symbols index 83872a7e82f..89f4980a002 100644 --- a/tests/baselines/reference/parser509546_2.symbols +++ b/tests/baselines/reference/parser509546_2.symbols @@ -5,6 +5,6 @@ export class Logger { >Logger : Symbol(Logger, Decl(parser509546_2.ts, 0, 13)) public ->public : Symbol(public, Decl(parser509546_2.ts, 2, 21)) +>public : Symbol(Logger.public, Decl(parser509546_2.ts, 2, 21)) } diff --git a/tests/baselines/reference/parser643728.symbols b/tests/baselines/reference/parser643728.symbols index 705e4b1ba9d..ffa2ed06746 100644 --- a/tests/baselines/reference/parser643728.symbols +++ b/tests/baselines/reference/parser643728.symbols @@ -3,9 +3,9 @@ interface C { >C : Symbol(C, Decl(parser643728.ts, 0, 0)) foo; ->foo : Symbol(foo, Decl(parser643728.ts, 0, 13)) +>foo : Symbol(C.foo, Decl(parser643728.ts, 0, 13)) new; ->new : Symbol(new, Decl(parser643728.ts, 1, 8)) +>new : Symbol(C.new, Decl(parser643728.ts, 1, 8)) } diff --git a/tests/baselines/reference/parserAccessors2.symbols b/tests/baselines/reference/parserAccessors2.symbols index d4371695610..1d83ee847d5 100644 --- a/tests/baselines/reference/parserAccessors2.symbols +++ b/tests/baselines/reference/parserAccessors2.symbols @@ -3,6 +3,6 @@ class C { >C : Symbol(C, Decl(parserAccessors2.ts, 0, 0)) set Foo(a) { } ->Foo : Symbol(Foo, Decl(parserAccessors2.ts, 0, 9)) +>Foo : Symbol(C.Foo, Decl(parserAccessors2.ts, 0, 9)) >a : Symbol(a, Decl(parserAccessors2.ts, 1, 12)) } diff --git a/tests/baselines/reference/parserClassDeclaration16.symbols b/tests/baselines/reference/parserClassDeclaration16.symbols index 770793b8ff9..f5afdd07a2e 100644 --- a/tests/baselines/reference/parserClassDeclaration16.symbols +++ b/tests/baselines/reference/parserClassDeclaration16.symbols @@ -3,8 +3,8 @@ class C { >C : Symbol(C, Decl(parserClassDeclaration16.ts, 0, 0)) foo(); ->foo : Symbol(foo, Decl(parserClassDeclaration16.ts, 0, 9), Decl(parserClassDeclaration16.ts, 1, 9)) +>foo : Symbol(C.foo, Decl(parserClassDeclaration16.ts, 0, 9), Decl(parserClassDeclaration16.ts, 1, 9)) foo() { } ->foo : Symbol(foo, Decl(parserClassDeclaration16.ts, 0, 9), Decl(parserClassDeclaration16.ts, 1, 9)) +>foo : Symbol(C.foo, Decl(parserClassDeclaration16.ts, 0, 9), Decl(parserClassDeclaration16.ts, 1, 9)) } diff --git a/tests/baselines/reference/parserClassDeclaration17.symbols b/tests/baselines/reference/parserClassDeclaration17.symbols index 7d230821d8a..fc8655b784f 100644 --- a/tests/baselines/reference/parserClassDeclaration17.symbols +++ b/tests/baselines/reference/parserClassDeclaration17.symbols @@ -3,13 +3,13 @@ declare class Enumerator { >Enumerator : Symbol(Enumerator, Decl(parserClassDeclaration17.ts, 0, 0)) public atEnd(): boolean; ->atEnd : Symbol(atEnd, Decl(parserClassDeclaration17.ts, 0, 26)) +>atEnd : Symbol(Enumerator.atEnd, Decl(parserClassDeclaration17.ts, 0, 26)) public moveNext(); ->moveNext : Symbol(moveNext, Decl(parserClassDeclaration17.ts, 1, 28)) +>moveNext : Symbol(Enumerator.moveNext, Decl(parserClassDeclaration17.ts, 1, 28)) public item(): any; ->item : Symbol(item, Decl(parserClassDeclaration17.ts, 2, 22)) +>item : Symbol(Enumerator.item, Decl(parserClassDeclaration17.ts, 2, 22)) constructor (o: any); >o : Symbol(o, Decl(parserClassDeclaration17.ts, 4, 17)) diff --git a/tests/baselines/reference/parserClassDeclaration19.symbols b/tests/baselines/reference/parserClassDeclaration19.symbols index e9ac1a666c7..9e9f64ca282 100644 --- a/tests/baselines/reference/parserClassDeclaration19.symbols +++ b/tests/baselines/reference/parserClassDeclaration19.symbols @@ -3,7 +3,7 @@ class C { >C : Symbol(C, Decl(parserClassDeclaration19.ts, 0, 0)) foo(); ->foo : Symbol(foo, Decl(parserClassDeclaration19.ts, 0, 9), Decl(parserClassDeclaration19.ts, 1, 10)) +>foo : Symbol(C.foo, Decl(parserClassDeclaration19.ts, 0, 9), Decl(parserClassDeclaration19.ts, 1, 10)) "foo"() { } } diff --git a/tests/baselines/reference/parserClassDeclaration26.symbols b/tests/baselines/reference/parserClassDeclaration26.symbols index 09b9cbfd3a4..7ad2b33c5f5 100644 --- a/tests/baselines/reference/parserClassDeclaration26.symbols +++ b/tests/baselines/reference/parserClassDeclaration26.symbols @@ -3,8 +3,8 @@ class C { >C : Symbol(C, Decl(parserClassDeclaration26.ts, 0, 0)) var ->var : Symbol(var, Decl(parserClassDeclaration26.ts, 0, 9)) +>var : Symbol(C.var, Decl(parserClassDeclaration26.ts, 0, 9)) public ->public : Symbol(public, Decl(parserClassDeclaration26.ts, 1, 6)) +>public : Symbol(C.public, Decl(parserClassDeclaration26.ts, 1, 6)) } diff --git a/tests/baselines/reference/parserErrorRecovery_IncompleteMemberVariable1.symbols b/tests/baselines/reference/parserErrorRecovery_IncompleteMemberVariable1.symbols index 7b8be05f923..e9209df72f2 100644 --- a/tests/baselines/reference/parserErrorRecovery_IncompleteMemberVariable1.symbols +++ b/tests/baselines/reference/parserErrorRecovery_IncompleteMemberVariable1.symbols @@ -4,7 +4,7 @@ interface IPoint { >IPoint : Symbol(IPoint, Decl(parserErrorRecovery_IncompleteMemberVariable1.ts, 0, 0)) getDist(): number; ->getDist : Symbol(getDist, Decl(parserErrorRecovery_IncompleteMemberVariable1.ts, 1, 18)) +>getDist : Symbol(IPoint.getDist, Decl(parserErrorRecovery_IncompleteMemberVariable1.ts, 1, 18)) } // Module @@ -17,31 +17,31 @@ module Shapes { >IPoint : Symbol(IPoint, Decl(parserErrorRecovery_IncompleteMemberVariable1.ts, 0, 0)) public con: "hello"; ->con : Symbol(con, Decl(parserErrorRecovery_IncompleteMemberVariable1.ts, 9, 42)) +>con : Symbol(Point.con, Decl(parserErrorRecovery_IncompleteMemberVariable1.ts, 9, 42)) // Constructor constructor (public x: number, public y: number) { } ->x : Symbol(x, Decl(parserErrorRecovery_IncompleteMemberVariable1.ts, 13, 21)) ->y : Symbol(y, Decl(parserErrorRecovery_IncompleteMemberVariable1.ts, 13, 38)) +>x : Symbol(Point.x, Decl(parserErrorRecovery_IncompleteMemberVariable1.ts, 13, 21)) +>y : Symbol(Point.y, Decl(parserErrorRecovery_IncompleteMemberVariable1.ts, 13, 38)) // Instance member getDist() { return Math.sqrt(this.x * this.x + this.y * this.y); } ->getDist : Symbol(getDist, Decl(parserErrorRecovery_IncompleteMemberVariable1.ts, 13, 60)) +>getDist : Symbol(Point.getDist, Decl(parserErrorRecovery_IncompleteMemberVariable1.ts, 13, 60)) >Math.sqrt : Symbol(Math.sqrt, Decl(lib.d.ts, --, --)) >Math : Symbol(Math, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >sqrt : Symbol(Math.sqrt, Decl(lib.d.ts, --, --)) ->this.x : Symbol(x, Decl(parserErrorRecovery_IncompleteMemberVariable1.ts, 13, 21)) +>this.x : Symbol(Point.x, Decl(parserErrorRecovery_IncompleteMemberVariable1.ts, 13, 21)) >this : Symbol(Point, Decl(parserErrorRecovery_IncompleteMemberVariable1.ts, 6, 15)) ->x : Symbol(x, Decl(parserErrorRecovery_IncompleteMemberVariable1.ts, 13, 21)) ->this.x : Symbol(x, Decl(parserErrorRecovery_IncompleteMemberVariable1.ts, 13, 21)) +>x : Symbol(Point.x, Decl(parserErrorRecovery_IncompleteMemberVariable1.ts, 13, 21)) +>this.x : Symbol(Point.x, Decl(parserErrorRecovery_IncompleteMemberVariable1.ts, 13, 21)) >this : Symbol(Point, Decl(parserErrorRecovery_IncompleteMemberVariable1.ts, 6, 15)) ->x : Symbol(x, Decl(parserErrorRecovery_IncompleteMemberVariable1.ts, 13, 21)) ->this.y : Symbol(y, Decl(parserErrorRecovery_IncompleteMemberVariable1.ts, 13, 38)) +>x : Symbol(Point.x, Decl(parserErrorRecovery_IncompleteMemberVariable1.ts, 13, 21)) +>this.y : Symbol(Point.y, Decl(parserErrorRecovery_IncompleteMemberVariable1.ts, 13, 38)) >this : Symbol(Point, Decl(parserErrorRecovery_IncompleteMemberVariable1.ts, 6, 15)) ->y : Symbol(y, Decl(parserErrorRecovery_IncompleteMemberVariable1.ts, 13, 38)) ->this.y : Symbol(y, Decl(parserErrorRecovery_IncompleteMemberVariable1.ts, 13, 38)) +>y : Symbol(Point.y, Decl(parserErrorRecovery_IncompleteMemberVariable1.ts, 13, 38)) +>this.y : Symbol(Point.y, Decl(parserErrorRecovery_IncompleteMemberVariable1.ts, 13, 38)) >this : Symbol(Point, Decl(parserErrorRecovery_IncompleteMemberVariable1.ts, 6, 15)) ->y : Symbol(y, Decl(parserErrorRecovery_IncompleteMemberVariable1.ts, 13, 38)) +>y : Symbol(Point.y, Decl(parserErrorRecovery_IncompleteMemberVariable1.ts, 13, 38)) // Static member static origin = new Point(0, 0); diff --git a/tests/baselines/reference/parserExportAsFunctionIdentifier.symbols b/tests/baselines/reference/parserExportAsFunctionIdentifier.symbols index 6d81e8fdae3..d60cf30c821 100644 --- a/tests/baselines/reference/parserExportAsFunctionIdentifier.symbols +++ b/tests/baselines/reference/parserExportAsFunctionIdentifier.symbols @@ -3,7 +3,7 @@ interface Foo { >Foo : Symbol(Foo, Decl(parserExportAsFunctionIdentifier.ts, 0, 0)) export(): string; ->export : Symbol(export, Decl(parserExportAsFunctionIdentifier.ts, 0, 15)) +>export : Symbol(Foo.export, Decl(parserExportAsFunctionIdentifier.ts, 0, 15)) } var f: Foo; diff --git a/tests/baselines/reference/parserIndexMemberDeclaration2.symbols b/tests/baselines/reference/parserIndexMemberDeclaration2.symbols index 1b42a8f8160..0031cde94be 100644 --- a/tests/baselines/reference/parserIndexMemberDeclaration2.symbols +++ b/tests/baselines/reference/parserIndexMemberDeclaration2.symbols @@ -6,5 +6,5 @@ class C { >a : Symbol(a, Decl(parserIndexMemberDeclaration2.ts, 1, 4)) public v: number ->v : Symbol(v, Decl(parserIndexMemberDeclaration2.ts, 1, 22)) +>v : Symbol(C.v, Decl(parserIndexMemberDeclaration2.ts, 1, 22)) } diff --git a/tests/baselines/reference/parserIndexMemberDeclaration3.symbols b/tests/baselines/reference/parserIndexMemberDeclaration3.symbols index 6961a37f497..7db6c7dd93e 100644 --- a/tests/baselines/reference/parserIndexMemberDeclaration3.symbols +++ b/tests/baselines/reference/parserIndexMemberDeclaration3.symbols @@ -6,5 +6,5 @@ class C { >a : Symbol(a, Decl(parserIndexMemberDeclaration3.ts, 1, 4)) public v: number ->v : Symbol(v, Decl(parserIndexMemberDeclaration3.ts, 1, 23)) +>v : Symbol(C.v, Decl(parserIndexMemberDeclaration3.ts, 1, 23)) } diff --git a/tests/baselines/reference/parserIndexMemberDeclaration4.symbols b/tests/baselines/reference/parserIndexMemberDeclaration4.symbols index 29b101d05d8..9b5f99d6ba8 100644 --- a/tests/baselines/reference/parserIndexMemberDeclaration4.symbols +++ b/tests/baselines/reference/parserIndexMemberDeclaration4.symbols @@ -4,5 +4,5 @@ class C { [a: string]: number; public v: number >a : Symbol(a, Decl(parserIndexMemberDeclaration4.ts, 1, 4)) ->v : Symbol(v, Decl(parserIndexMemberDeclaration4.ts, 1, 23)) +>v : Symbol(C.v, Decl(parserIndexMemberDeclaration4.ts, 1, 23)) } diff --git a/tests/baselines/reference/parserMemberAccessorDeclaration4.symbols b/tests/baselines/reference/parserMemberAccessorDeclaration4.symbols index 2750f28943e..f446aa992ca 100644 --- a/tests/baselines/reference/parserMemberAccessorDeclaration4.symbols +++ b/tests/baselines/reference/parserMemberAccessorDeclaration4.symbols @@ -3,6 +3,6 @@ class C { >C : Symbol(C, Decl(parserMemberAccessorDeclaration4.ts, 0, 0)) set a(i) { } ->a : Symbol(a, Decl(parserMemberAccessorDeclaration4.ts, 0, 9)) +>a : Symbol(C.a, Decl(parserMemberAccessorDeclaration4.ts, 0, 9)) >i : Symbol(i, Decl(parserMemberAccessorDeclaration4.ts, 1, 8)) } diff --git a/tests/baselines/reference/parserMethodSignature1.symbols b/tests/baselines/reference/parserMethodSignature1.symbols index 2c12a156ef0..a905dc1056c 100644 --- a/tests/baselines/reference/parserMethodSignature1.symbols +++ b/tests/baselines/reference/parserMethodSignature1.symbols @@ -3,5 +3,5 @@ interface I { >I : Symbol(I, Decl(parserMethodSignature1.ts, 0, 0)) A(); ->A : Symbol(A, Decl(parserMethodSignature1.ts, 0, 13)) +>A : Symbol(I.A, Decl(parserMethodSignature1.ts, 0, 13)) } diff --git a/tests/baselines/reference/parserMethodSignature2.symbols b/tests/baselines/reference/parserMethodSignature2.symbols index ba86c20293e..7c7013e1b13 100644 --- a/tests/baselines/reference/parserMethodSignature2.symbols +++ b/tests/baselines/reference/parserMethodSignature2.symbols @@ -3,5 +3,5 @@ interface I { >I : Symbol(I, Decl(parserMethodSignature2.ts, 0, 0)) B?(); ->B : Symbol(B, Decl(parserMethodSignature2.ts, 0, 13)) +>B : Symbol(I.B, Decl(parserMethodSignature2.ts, 0, 13)) } diff --git a/tests/baselines/reference/parserMethodSignature3.symbols b/tests/baselines/reference/parserMethodSignature3.symbols index ce4c0f05561..5f6efea534b 100644 --- a/tests/baselines/reference/parserMethodSignature3.symbols +++ b/tests/baselines/reference/parserMethodSignature3.symbols @@ -3,6 +3,6 @@ interface I { >I : Symbol(I, Decl(parserMethodSignature3.ts, 0, 0)) C(); ->C : Symbol(C, Decl(parserMethodSignature3.ts, 0, 13)) +>C : Symbol(I.C, Decl(parserMethodSignature3.ts, 0, 13)) >T : Symbol(T, Decl(parserMethodSignature3.ts, 1, 4)) } diff --git a/tests/baselines/reference/parserMethodSignature4.symbols b/tests/baselines/reference/parserMethodSignature4.symbols index d1612bf2f4f..7ebcbcbcf5a 100644 --- a/tests/baselines/reference/parserMethodSignature4.symbols +++ b/tests/baselines/reference/parserMethodSignature4.symbols @@ -3,6 +3,6 @@ interface I { >I : Symbol(I, Decl(parserMethodSignature4.ts, 0, 0)) D?(); ->D : Symbol(D, Decl(parserMethodSignature4.ts, 0, 13)) +>D : Symbol(I.D, Decl(parserMethodSignature4.ts, 0, 13)) >T : Symbol(T, Decl(parserMethodSignature4.ts, 1, 5)) } diff --git a/tests/baselines/reference/parserModifierOnPropertySignature2.symbols b/tests/baselines/reference/parserModifierOnPropertySignature2.symbols index ac17a3810bf..496f5736141 100644 --- a/tests/baselines/reference/parserModifierOnPropertySignature2.symbols +++ b/tests/baselines/reference/parserModifierOnPropertySignature2.symbols @@ -3,9 +3,9 @@ interface Foo{ >Foo : Symbol(Foo, Decl(parserModifierOnPropertySignature2.ts, 0, 0)) public ->public : Symbol(public, Decl(parserModifierOnPropertySignature2.ts, 0, 14)) +>public : Symbol(Foo.public, Decl(parserModifierOnPropertySignature2.ts, 0, 14)) biz; ->biz : Symbol(biz, Decl(parserModifierOnPropertySignature2.ts, 1, 10)) +>biz : Symbol(Foo.biz, Decl(parserModifierOnPropertySignature2.ts, 1, 10)) } diff --git a/tests/baselines/reference/parserModule1.symbols b/tests/baselines/reference/parserModule1.symbols index 18bae82da65..5215a2e656d 100644 --- a/tests/baselines/reference/parserModule1.symbols +++ b/tests/baselines/reference/parserModule1.symbols @@ -9,7 +9,7 @@ >IDiagnosticWriter : Symbol(IDiagnosticWriter, Decl(parserModule1.ts, 1, 33)) Alert(output: string): void; ->Alert : Symbol(Alert, Decl(parserModule1.ts, 2, 44)) +>Alert : Symbol(IDiagnosticWriter.Alert, Decl(parserModule1.ts, 2, 44)) >output : Symbol(output, Decl(parserModule1.ts, 3, 18)) } diff --git a/tests/baselines/reference/parserOptionalTypeMembers1.symbols b/tests/baselines/reference/parserOptionalTypeMembers1.symbols index ce12a4ec19b..fb4d93d7f9c 100644 --- a/tests/baselines/reference/parserOptionalTypeMembers1.symbols +++ b/tests/baselines/reference/parserOptionalTypeMembers1.symbols @@ -3,21 +3,21 @@ interface PropertyDescriptor2 { >PropertyDescriptor2 : Symbol(PropertyDescriptor2, Decl(parserOptionalTypeMembers1.ts, 0, 0)) configurable?: boolean; ->configurable : Symbol(configurable, Decl(parserOptionalTypeMembers1.ts, 0, 31)) +>configurable : Symbol(PropertyDescriptor2.configurable, Decl(parserOptionalTypeMembers1.ts, 0, 31)) enumerable?: boolean; ->enumerable : Symbol(enumerable, Decl(parserOptionalTypeMembers1.ts, 1, 27)) +>enumerable : Symbol(PropertyDescriptor2.enumerable, Decl(parserOptionalTypeMembers1.ts, 1, 27)) value?: any; ->value : Symbol(value, Decl(parserOptionalTypeMembers1.ts, 2, 25)) +>value : Symbol(PropertyDescriptor2.value, Decl(parserOptionalTypeMembers1.ts, 2, 25)) writable?: boolean; ->writable : Symbol(writable, Decl(parserOptionalTypeMembers1.ts, 3, 16)) +>writable : Symbol(PropertyDescriptor2.writable, Decl(parserOptionalTypeMembers1.ts, 3, 16)) get?(): any; ->get : Symbol(get, Decl(parserOptionalTypeMembers1.ts, 4, 23)) +>get : Symbol(PropertyDescriptor2.get, Decl(parserOptionalTypeMembers1.ts, 4, 23)) set?(v: any): void; ->set : Symbol(set, Decl(parserOptionalTypeMembers1.ts, 5, 16)) +>set : Symbol(PropertyDescriptor2.set, Decl(parserOptionalTypeMembers1.ts, 5, 16)) >v : Symbol(v, Decl(parserOptionalTypeMembers1.ts, 6, 9)) } diff --git a/tests/baselines/reference/parserPropertySignature1.symbols b/tests/baselines/reference/parserPropertySignature1.symbols index 6b8a26c4164..e32b1173d53 100644 --- a/tests/baselines/reference/parserPropertySignature1.symbols +++ b/tests/baselines/reference/parserPropertySignature1.symbols @@ -3,5 +3,5 @@ interface I { >I : Symbol(I, Decl(parserPropertySignature1.ts, 0, 0)) A; ->A : Symbol(A, Decl(parserPropertySignature1.ts, 0, 13)) +>A : Symbol(I.A, Decl(parserPropertySignature1.ts, 0, 13)) } diff --git a/tests/baselines/reference/parserPropertySignature2.symbols b/tests/baselines/reference/parserPropertySignature2.symbols index 334c0655908..6ec329e7b6d 100644 --- a/tests/baselines/reference/parserPropertySignature2.symbols +++ b/tests/baselines/reference/parserPropertySignature2.symbols @@ -3,5 +3,5 @@ interface I { >I : Symbol(I, Decl(parserPropertySignature2.ts, 0, 0)) B?; ->B : Symbol(B, Decl(parserPropertySignature2.ts, 0, 13)) +>B : Symbol(I.B, Decl(parserPropertySignature2.ts, 0, 13)) } diff --git a/tests/baselines/reference/parserPropertySignature3.symbols b/tests/baselines/reference/parserPropertySignature3.symbols index c2b70b58be8..84e39dab5ec 100644 --- a/tests/baselines/reference/parserPropertySignature3.symbols +++ b/tests/baselines/reference/parserPropertySignature3.symbols @@ -3,5 +3,5 @@ interface I { >I : Symbol(I, Decl(parserPropertySignature3.ts, 0, 0)) C:any; ->C : Symbol(C, Decl(parserPropertySignature3.ts, 0, 13)) +>C : Symbol(I.C, Decl(parserPropertySignature3.ts, 0, 13)) } diff --git a/tests/baselines/reference/parserPropertySignature4.symbols b/tests/baselines/reference/parserPropertySignature4.symbols index cd61b14d34c..071a826b7f9 100644 --- a/tests/baselines/reference/parserPropertySignature4.symbols +++ b/tests/baselines/reference/parserPropertySignature4.symbols @@ -3,5 +3,5 @@ interface I { >I : Symbol(I, Decl(parserPropertySignature4.ts, 0, 0)) D?:any; ->D : Symbol(D, Decl(parserPropertySignature4.ts, 0, 13)) +>D : Symbol(I.D, Decl(parserPropertySignature4.ts, 0, 13)) } diff --git a/tests/baselines/reference/parserSymbolProperty1.symbols b/tests/baselines/reference/parserSymbolProperty1.symbols index b337b6ae30b..f9e377e054e 100644 --- a/tests/baselines/reference/parserSymbolProperty1.symbols +++ b/tests/baselines/reference/parserSymbolProperty1.symbols @@ -3,7 +3,7 @@ interface I { >I : Symbol(I, Decl(parserSymbolProperty1.ts, 0, 0)) [Symbol.iterator]: string; ->Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->iterator : Symbol(SymbolConstructor.iterator, Decl(lib.d.ts, --, --)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) } diff --git a/tests/baselines/reference/parserSymbolProperty2.symbols b/tests/baselines/reference/parserSymbolProperty2.symbols index d4bfa388fa8..f5bb7fa0f53 100644 --- a/tests/baselines/reference/parserSymbolProperty2.symbols +++ b/tests/baselines/reference/parserSymbolProperty2.symbols @@ -3,7 +3,7 @@ interface I { >I : Symbol(I, Decl(parserSymbolProperty2.ts, 0, 0)) [Symbol.unscopables](): string; ->Symbol.unscopables : Symbol(SymbolConstructor.unscopables, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->unscopables : Symbol(SymbolConstructor.unscopables, Decl(lib.d.ts, --, --)) +>Symbol.unscopables : Symbol(SymbolConstructor.unscopables, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>unscopables : Symbol(SymbolConstructor.unscopables, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) } diff --git a/tests/baselines/reference/parserSymbolProperty3.symbols b/tests/baselines/reference/parserSymbolProperty3.symbols index b740d5be4ad..9d2266ad4b7 100644 --- a/tests/baselines/reference/parserSymbolProperty3.symbols +++ b/tests/baselines/reference/parserSymbolProperty3.symbols @@ -3,7 +3,7 @@ declare class C { >C : Symbol(C, Decl(parserSymbolProperty3.ts, 0, 0)) [Symbol.unscopables](): string; ->Symbol.unscopables : Symbol(SymbolConstructor.unscopables, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->unscopables : Symbol(SymbolConstructor.unscopables, Decl(lib.d.ts, --, --)) +>Symbol.unscopables : Symbol(SymbolConstructor.unscopables, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>unscopables : Symbol(SymbolConstructor.unscopables, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) } diff --git a/tests/baselines/reference/parserSymbolProperty4.symbols b/tests/baselines/reference/parserSymbolProperty4.symbols index 65250e977b7..e37cb6bc011 100644 --- a/tests/baselines/reference/parserSymbolProperty4.symbols +++ b/tests/baselines/reference/parserSymbolProperty4.symbols @@ -3,7 +3,7 @@ declare class C { >C : Symbol(C, Decl(parserSymbolProperty4.ts, 0, 0)) [Symbol.toPrimitive]: string; ->Symbol.toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.d.ts, --, --)) +>Symbol.toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) } diff --git a/tests/baselines/reference/parserSymbolProperty5.symbols b/tests/baselines/reference/parserSymbolProperty5.symbols index c883c0aa12f..f8fb7d93417 100644 --- a/tests/baselines/reference/parserSymbolProperty5.symbols +++ b/tests/baselines/reference/parserSymbolProperty5.symbols @@ -3,7 +3,7 @@ class C { >C : Symbol(C, Decl(parserSymbolProperty5.ts, 0, 0)) [Symbol.toPrimitive]: string; ->Symbol.toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.d.ts, --, --)) +>Symbol.toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) } diff --git a/tests/baselines/reference/parserSymbolProperty6.symbols b/tests/baselines/reference/parserSymbolProperty6.symbols index d8a2b9bf1cc..7fb83ea9ffa 100644 --- a/tests/baselines/reference/parserSymbolProperty6.symbols +++ b/tests/baselines/reference/parserSymbolProperty6.symbols @@ -3,7 +3,7 @@ class C { >C : Symbol(C, Decl(parserSymbolProperty6.ts, 0, 0)) [Symbol.toStringTag]: string = ""; ->Symbol.toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.d.ts, --, --)) +>Symbol.toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) } diff --git a/tests/baselines/reference/parserSymbolProperty7.symbols b/tests/baselines/reference/parserSymbolProperty7.symbols index 9319dfe87bb..8d71cbb1a0d 100644 --- a/tests/baselines/reference/parserSymbolProperty7.symbols +++ b/tests/baselines/reference/parserSymbolProperty7.symbols @@ -3,7 +3,7 @@ class C { >C : Symbol(C, Decl(parserSymbolProperty7.ts, 0, 0)) [Symbol.toStringTag](): void { } ->Symbol.toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.d.ts, --, --)) +>Symbol.toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) } diff --git a/tests/baselines/reference/parserSymbolProperty8.symbols b/tests/baselines/reference/parserSymbolProperty8.symbols index 2a58473973e..e20dd2dbba4 100644 --- a/tests/baselines/reference/parserSymbolProperty8.symbols +++ b/tests/baselines/reference/parserSymbolProperty8.symbols @@ -3,7 +3,7 @@ var x: { >x : Symbol(x, Decl(parserSymbolProperty8.ts, 0, 3)) [Symbol.toPrimitive](): string ->Symbol.toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.d.ts, --, --)) +>Symbol.toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) } diff --git a/tests/baselines/reference/parserSymbolProperty9.symbols b/tests/baselines/reference/parserSymbolProperty9.symbols index 85c66b21d5e..c70643c254a 100644 --- a/tests/baselines/reference/parserSymbolProperty9.symbols +++ b/tests/baselines/reference/parserSymbolProperty9.symbols @@ -3,7 +3,7 @@ var x: { >x : Symbol(x, Decl(parserSymbolProperty9.ts, 0, 3)) [Symbol.toPrimitive]: string ->Symbol.toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.d.ts, --, --)) ->Symbol : Symbol(Symbol, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.d.ts, --, --)) +>Symbol.toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --)) +>toPrimitive : Symbol(SymbolConstructor.toPrimitive, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) } diff --git a/tests/baselines/reference/parser_duplicateLabel1.errors.txt b/tests/baselines/reference/parser_duplicateLabel1.errors.txt index a4319aaa7b9..c98ede21ecf 100644 --- a/tests/baselines/reference/parser_duplicateLabel1.errors.txt +++ b/tests/baselines/reference/parser_duplicateLabel1.errors.txt @@ -1,13 +1,16 @@ tests/cases/conformance/parser/ecmascript5/Statements/LabeledStatements/parser_duplicateLabel1.ts(1,1): error TS7028: Unused label. tests/cases/conformance/parser/ecmascript5/Statements/LabeledStatements/parser_duplicateLabel1.ts(2,1): error TS1114: Duplicate label 'target' +tests/cases/conformance/parser/ecmascript5/Statements/LabeledStatements/parser_duplicateLabel1.ts(2,1): error TS7028: Unused label. -==== tests/cases/conformance/parser/ecmascript5/Statements/LabeledStatements/parser_duplicateLabel1.ts (2 errors) ==== +==== tests/cases/conformance/parser/ecmascript5/Statements/LabeledStatements/parser_duplicateLabel1.ts (3 errors) ==== target: ~~~~~~ !!! error TS7028: Unused label. target: ~~~~~~ !!! error TS1114: Duplicate label 'target' + ~~~~~~ +!!! error TS7028: Unused label. while (true) { } \ No newline at end of file diff --git a/tests/baselines/reference/parser_duplicateLabel2.errors.txt b/tests/baselines/reference/parser_duplicateLabel2.errors.txt index 123949fa5aa..cbad8b73a21 100644 --- a/tests/baselines/reference/parser_duplicateLabel2.errors.txt +++ b/tests/baselines/reference/parser_duplicateLabel2.errors.txt @@ -1,8 +1,9 @@ tests/cases/conformance/parser/ecmascript5/Statements/LabeledStatements/parser_duplicateLabel2.ts(1,1): error TS7028: Unused label. tests/cases/conformance/parser/ecmascript5/Statements/LabeledStatements/parser_duplicateLabel2.ts(3,3): error TS1114: Duplicate label 'target' +tests/cases/conformance/parser/ecmascript5/Statements/LabeledStatements/parser_duplicateLabel2.ts(3,3): error TS7028: Unused label. -==== tests/cases/conformance/parser/ecmascript5/Statements/LabeledStatements/parser_duplicateLabel2.ts (2 errors) ==== +==== tests/cases/conformance/parser/ecmascript5/Statements/LabeledStatements/parser_duplicateLabel2.ts (3 errors) ==== target: ~~~~~~ !!! error TS7028: Unused label. @@ -10,6 +11,8 @@ tests/cases/conformance/parser/ecmascript5/Statements/LabeledStatements/parser_d target: ~~~~~~ !!! error TS1114: Duplicate label 'target' + ~~~~~~ +!!! error TS7028: Unused label. while (true) { } } \ No newline at end of file diff --git a/tests/baselines/reference/parsingClassRecoversWhenHittingUnexpectedSemicolon.symbols b/tests/baselines/reference/parsingClassRecoversWhenHittingUnexpectedSemicolon.symbols index 36d09277a3e..2f0087416b9 100644 --- a/tests/baselines/reference/parsingClassRecoversWhenHittingUnexpectedSemicolon.symbols +++ b/tests/baselines/reference/parsingClassRecoversWhenHittingUnexpectedSemicolon.symbols @@ -3,9 +3,9 @@ class C { >C : Symbol(C, Decl(parsingClassRecoversWhenHittingUnexpectedSemicolon.ts, 0, 0)) public f() { }; ->f : Symbol(f, Decl(parsingClassRecoversWhenHittingUnexpectedSemicolon.ts, 0, 9)) +>f : Symbol(C.f, Decl(parsingClassRecoversWhenHittingUnexpectedSemicolon.ts, 0, 9)) private m; ->m : Symbol(m, Decl(parsingClassRecoversWhenHittingUnexpectedSemicolon.ts, 1, 19)) +>m : Symbol(C.m, Decl(parsingClassRecoversWhenHittingUnexpectedSemicolon.ts, 1, 19)) } diff --git a/tests/baselines/reference/pathMappingBasedModuleResolution3_classic.trace.json b/tests/baselines/reference/pathMappingBasedModuleResolution3_classic.trace.json index 513198c50b0..8b003e05e8f 100644 --- a/tests/baselines/reference/pathMappingBasedModuleResolution3_classic.trace.json +++ b/tests/baselines/reference/pathMappingBasedModuleResolution3_classic.trace.json @@ -3,11 +3,11 @@ "Explicitly specified module resolution kind: 'Classic'.", "'baseUrl' option is set to 'c:/root', using this value to resolve non-relative module name 'folder2/file2'", "Resolving module name 'folder2/file2' relative to base url 'c:/root' - 'c:/root/folder2/file2'.", - "File 'c:/root/folder2/file2.ts' exist - use it as a module resolution result.", + "File 'c:/root/folder2/file2.ts' exist - use it as a name resolution result.", "======== Module name 'folder2/file2' was successfully resolved to 'c:/root/folder2/file2.ts'. ========", "======== Resolving module './file3' from 'c:/root/folder2/file2.ts'. ========", "Explicitly specified module resolution kind: 'Classic'.", - "File 'c:/root/folder2/file3.ts' exist - use it as a module resolution result.", + "File 'c:/root/folder2/file3.ts' exist - use it as a name resolution result.", "======== Module name './file3' was successfully resolved to 'c:/root/folder2/file3.ts'. ========", "======== Resolving module 'file4' from 'c:/root/folder2/file2.ts'. ========", "Explicitly specified module resolution kind: 'Classic'.", @@ -19,6 +19,6 @@ "File 'c:/root/folder2/file4.d.ts' does not exist.", "File 'c:/root/file4.ts' does not exist.", "File 'c:/root/file4.d.ts' does not exist.", - "File 'c:/file4.ts' exist - use it as a module resolution result.", + "File 'c:/file4.ts' exist - use it as a name resolution result.", "======== Module name 'file4' was successfully resolved to 'c:/file4.ts'. ========" ] \ No newline at end of file diff --git a/tests/baselines/reference/pathMappingBasedModuleResolution3_node.trace.json b/tests/baselines/reference/pathMappingBasedModuleResolution3_node.trace.json index 6d0de807bc0..af5e20a3cc3 100644 --- a/tests/baselines/reference/pathMappingBasedModuleResolution3_node.trace.json +++ b/tests/baselines/reference/pathMappingBasedModuleResolution3_node.trace.json @@ -4,12 +4,12 @@ "'baseUrl' option is set to 'c:/root', using this value to resolve non-relative module name 'folder2/file2'", "Resolving module name 'folder2/file2' relative to base url 'c:/root' - 'c:/root/folder2/file2'.", "Loading module as file / folder, candidate module location 'c:/root/folder2/file2'.", - "File 'c:/root/folder2/file2.ts' exist - use it as a module resolution result.", + "File 'c:/root/folder2/file2.ts' exist - use it as a name resolution result.", "======== Module name 'folder2/file2' was successfully resolved to 'c:/root/folder2/file2.ts'. ========", "======== Resolving module './file3' from 'c:/root/folder2/file2.ts'. ========", "Explicitly specified module resolution kind: 'NodeJs'.", "Loading module as file / folder, candidate module location 'c:/root/folder2/file3'.", - "File 'c:/root/folder2/file3.ts' exist - use it as a module resolution result.", + "File 'c:/root/folder2/file3.ts' exist - use it as a name resolution result.", "======== Module name './file3' was successfully resolved to 'c:/root/folder2/file3.ts'. ========", "======== Resolving module 'file4' from 'c:/root/folder2/file2.ts'. ========", "Explicitly specified module resolution kind: 'NodeJs'.", @@ -31,6 +31,13 @@ "File 'c:/root/folder2/node_modules/file4/index.ts' does not exist.", "File 'c:/root/folder2/node_modules/file4/index.tsx' does not exist.", "File 'c:/root/folder2/node_modules/file4/index.d.ts' does not exist.", + "File 'c:/root/folder2/node_modules/@types/file4.ts' does not exist.", + "File 'c:/root/folder2/node_modules/@types/file4.tsx' does not exist.", + "File 'c:/root/folder2/node_modules/@types/file4.d.ts' does not exist.", + "File 'c:/root/folder2/node_modules/@types/file4/package.json' does not exist.", + "File 'c:/root/folder2/node_modules/@types/file4/index.ts' does not exist.", + "File 'c:/root/folder2/node_modules/@types/file4/index.tsx' does not exist.", + "File 'c:/root/folder2/node_modules/@types/file4/index.d.ts' does not exist.", "File 'c:/root/node_modules/file4.ts' does not exist.", "File 'c:/root/node_modules/file4.tsx' does not exist.", "File 'c:/root/node_modules/file4.d.ts' does not exist.", @@ -38,12 +45,19 @@ "File 'c:/root/node_modules/file4/index.ts' does not exist.", "File 'c:/root/node_modules/file4/index.tsx' does not exist.", "File 'c:/root/node_modules/file4/index.d.ts' does not exist.", + "File 'c:/root/node_modules/@types/file4.ts' does not exist.", + "File 'c:/root/node_modules/@types/file4.tsx' does not exist.", + "File 'c:/root/node_modules/@types/file4.d.ts' does not exist.", + "File 'c:/root/node_modules/@types/file4/package.json' does not exist.", + "File 'c:/root/node_modules/@types/file4/index.ts' does not exist.", + "File 'c:/root/node_modules/@types/file4/index.tsx' does not exist.", + "File 'c:/root/node_modules/@types/file4/index.d.ts' does not exist.", "File 'c:/node_modules/file4.ts' does not exist.", "File 'c:/node_modules/file4.tsx' does not exist.", "File 'c:/node_modules/file4.d.ts' does not exist.", "File 'c:/node_modules/file4/package.json' does not exist.", "File 'c:/node_modules/file4/index.ts' does not exist.", "File 'c:/node_modules/file4/index.tsx' does not exist.", - "File 'c:/node_modules/file4/index.d.ts' exist - use it as a module resolution result.", + "File 'c:/node_modules/file4/index.d.ts' exist - use it as a name resolution result.", "======== Module name 'file4' was successfully resolved to 'c:/node_modules/file4/index.d.ts'. ========" ] \ No newline at end of file diff --git a/tests/baselines/reference/pathMappingBasedModuleResolution4_classic.trace.json b/tests/baselines/reference/pathMappingBasedModuleResolution4_classic.trace.json index 513198c50b0..8b003e05e8f 100644 --- a/tests/baselines/reference/pathMappingBasedModuleResolution4_classic.trace.json +++ b/tests/baselines/reference/pathMappingBasedModuleResolution4_classic.trace.json @@ -3,11 +3,11 @@ "Explicitly specified module resolution kind: 'Classic'.", "'baseUrl' option is set to 'c:/root', using this value to resolve non-relative module name 'folder2/file2'", "Resolving module name 'folder2/file2' relative to base url 'c:/root' - 'c:/root/folder2/file2'.", - "File 'c:/root/folder2/file2.ts' exist - use it as a module resolution result.", + "File 'c:/root/folder2/file2.ts' exist - use it as a name resolution result.", "======== Module name 'folder2/file2' was successfully resolved to 'c:/root/folder2/file2.ts'. ========", "======== Resolving module './file3' from 'c:/root/folder2/file2.ts'. ========", "Explicitly specified module resolution kind: 'Classic'.", - "File 'c:/root/folder2/file3.ts' exist - use it as a module resolution result.", + "File 'c:/root/folder2/file3.ts' exist - use it as a name resolution result.", "======== Module name './file3' was successfully resolved to 'c:/root/folder2/file3.ts'. ========", "======== Resolving module 'file4' from 'c:/root/folder2/file2.ts'. ========", "Explicitly specified module resolution kind: 'Classic'.", @@ -19,6 +19,6 @@ "File 'c:/root/folder2/file4.d.ts' does not exist.", "File 'c:/root/file4.ts' does not exist.", "File 'c:/root/file4.d.ts' does not exist.", - "File 'c:/file4.ts' exist - use it as a module resolution result.", + "File 'c:/file4.ts' exist - use it as a name resolution result.", "======== Module name 'file4' was successfully resolved to 'c:/file4.ts'. ========" ] \ No newline at end of file diff --git a/tests/baselines/reference/pathMappingBasedModuleResolution4_node.trace.json b/tests/baselines/reference/pathMappingBasedModuleResolution4_node.trace.json index 6d0de807bc0..af5e20a3cc3 100644 --- a/tests/baselines/reference/pathMappingBasedModuleResolution4_node.trace.json +++ b/tests/baselines/reference/pathMappingBasedModuleResolution4_node.trace.json @@ -4,12 +4,12 @@ "'baseUrl' option is set to 'c:/root', using this value to resolve non-relative module name 'folder2/file2'", "Resolving module name 'folder2/file2' relative to base url 'c:/root' - 'c:/root/folder2/file2'.", "Loading module as file / folder, candidate module location 'c:/root/folder2/file2'.", - "File 'c:/root/folder2/file2.ts' exist - use it as a module resolution result.", + "File 'c:/root/folder2/file2.ts' exist - use it as a name resolution result.", "======== Module name 'folder2/file2' was successfully resolved to 'c:/root/folder2/file2.ts'. ========", "======== Resolving module './file3' from 'c:/root/folder2/file2.ts'. ========", "Explicitly specified module resolution kind: 'NodeJs'.", "Loading module as file / folder, candidate module location 'c:/root/folder2/file3'.", - "File 'c:/root/folder2/file3.ts' exist - use it as a module resolution result.", + "File 'c:/root/folder2/file3.ts' exist - use it as a name resolution result.", "======== Module name './file3' was successfully resolved to 'c:/root/folder2/file3.ts'. ========", "======== Resolving module 'file4' from 'c:/root/folder2/file2.ts'. ========", "Explicitly specified module resolution kind: 'NodeJs'.", @@ -31,6 +31,13 @@ "File 'c:/root/folder2/node_modules/file4/index.ts' does not exist.", "File 'c:/root/folder2/node_modules/file4/index.tsx' does not exist.", "File 'c:/root/folder2/node_modules/file4/index.d.ts' does not exist.", + "File 'c:/root/folder2/node_modules/@types/file4.ts' does not exist.", + "File 'c:/root/folder2/node_modules/@types/file4.tsx' does not exist.", + "File 'c:/root/folder2/node_modules/@types/file4.d.ts' does not exist.", + "File 'c:/root/folder2/node_modules/@types/file4/package.json' does not exist.", + "File 'c:/root/folder2/node_modules/@types/file4/index.ts' does not exist.", + "File 'c:/root/folder2/node_modules/@types/file4/index.tsx' does not exist.", + "File 'c:/root/folder2/node_modules/@types/file4/index.d.ts' does not exist.", "File 'c:/root/node_modules/file4.ts' does not exist.", "File 'c:/root/node_modules/file4.tsx' does not exist.", "File 'c:/root/node_modules/file4.d.ts' does not exist.", @@ -38,12 +45,19 @@ "File 'c:/root/node_modules/file4/index.ts' does not exist.", "File 'c:/root/node_modules/file4/index.tsx' does not exist.", "File 'c:/root/node_modules/file4/index.d.ts' does not exist.", + "File 'c:/root/node_modules/@types/file4.ts' does not exist.", + "File 'c:/root/node_modules/@types/file4.tsx' does not exist.", + "File 'c:/root/node_modules/@types/file4.d.ts' does not exist.", + "File 'c:/root/node_modules/@types/file4/package.json' does not exist.", + "File 'c:/root/node_modules/@types/file4/index.ts' does not exist.", + "File 'c:/root/node_modules/@types/file4/index.tsx' does not exist.", + "File 'c:/root/node_modules/@types/file4/index.d.ts' does not exist.", "File 'c:/node_modules/file4.ts' does not exist.", "File 'c:/node_modules/file4.tsx' does not exist.", "File 'c:/node_modules/file4.d.ts' does not exist.", "File 'c:/node_modules/file4/package.json' does not exist.", "File 'c:/node_modules/file4/index.ts' does not exist.", "File 'c:/node_modules/file4/index.tsx' does not exist.", - "File 'c:/node_modules/file4/index.d.ts' exist - use it as a module resolution result.", + "File 'c:/node_modules/file4/index.d.ts' exist - use it as a name resolution result.", "======== Module name 'file4' was successfully resolved to 'c:/node_modules/file4/index.d.ts'. ========" ] \ No newline at end of file diff --git a/tests/baselines/reference/pathMappingBasedModuleResolution5_classic.trace.json b/tests/baselines/reference/pathMappingBasedModuleResolution5_classic.trace.json index 099acae2aca..d1709c82dc6 100644 --- a/tests/baselines/reference/pathMappingBasedModuleResolution5_classic.trace.json +++ b/tests/baselines/reference/pathMappingBasedModuleResolution5_classic.trace.json @@ -5,7 +5,7 @@ "'paths' option is specified, looking for a pattern to match module name 'folder2/file1'.", "Module name 'folder2/file1', matched pattern '*'.", "Trying substitution '*', candidate module location: 'folder2/file1'.", - "File 'c:/root/folder2/file1.ts' exist - use it as a module resolution result.", + "File 'c:/root/folder2/file1.ts' exist - use it as a name resolution result.", "======== Module name 'folder2/file1' was successfully resolved to 'c:/root/folder2/file1.ts'. ========", "======== Resolving module 'folder3/file2' from 'c:/root/folder1/file1.ts'. ========", "Module resolution kind is not specified, using 'Classic'.", @@ -16,7 +16,7 @@ "File 'c:/root/folder3/file2.ts' does not exist.", "File 'c:/root/folder3/file2.d.ts' does not exist.", "Trying substitution 'generated/*', candidate module location: 'generated/folder3/file2'.", - "File 'c:/root/generated/folder3/file2.ts' exist - use it as a module resolution result.", + "File 'c:/root/generated/folder3/file2.ts' exist - use it as a name resolution result.", "======== Module name 'folder3/file2' was successfully resolved to 'c:/root/generated/folder3/file2.ts'. ========", "======== Resolving module 'components/file3' from 'c:/root/folder1/file1.ts'. ========", "Module resolution kind is not specified, using 'Classic'.", @@ -24,7 +24,7 @@ "'paths' option is specified, looking for a pattern to match module name 'components/file3'.", "Module name 'components/file3', matched pattern 'components/*'.", "Trying substitution 'shared/components/*', candidate module location: 'shared/components/file3'.", - "File 'c:/root/shared/components/file3.ts' exist - use it as a module resolution result.", + "File 'c:/root/shared/components/file3.ts' exist - use it as a name resolution result.", "======== Module name 'components/file3' was successfully resolved to 'c:/root/shared/components/file3.ts'. ========", "======== Resolving module 'file4' from 'c:/root/folder1/file1.ts'. ========", "Module resolution kind is not specified, using 'Classic'.", @@ -41,6 +41,6 @@ "File 'c:/root/folder1/file4.d.ts' does not exist.", "File 'c:/root/file4.ts' does not exist.", "File 'c:/root/file4.d.ts' does not exist.", - "File 'c:/file4.ts' exist - use it as a module resolution result.", + "File 'c:/file4.ts' exist - use it as a name resolution result.", "======== Module name 'file4' was successfully resolved to 'c:/file4.ts'. ========" ] \ No newline at end of file diff --git a/tests/baselines/reference/pathMappingBasedModuleResolution5_node.trace.json b/tests/baselines/reference/pathMappingBasedModuleResolution5_node.trace.json index 398d15839de..cebd59f01b4 100644 --- a/tests/baselines/reference/pathMappingBasedModuleResolution5_node.trace.json +++ b/tests/baselines/reference/pathMappingBasedModuleResolution5_node.trace.json @@ -6,7 +6,7 @@ "Module name 'folder2/file1', matched pattern '*'.", "Trying substitution '*', candidate module location: 'folder2/file1'.", "Loading module as file / folder, candidate module location 'c:/root/folder2/file1'.", - "File 'c:/root/folder2/file1.ts' exist - use it as a module resolution result.", + "File 'c:/root/folder2/file1.ts' exist - use it as a name resolution result.", "======== Module name 'folder2/file1' was successfully resolved to 'c:/root/folder2/file1.ts'. ========", "======== Resolving module 'folder3/file2' from 'c:/root/folder1/file1.ts'. ========", "Module resolution kind is not specified, using 'NodeJs'.", @@ -24,7 +24,7 @@ "File 'c:/root/folder3/file2/index.d.ts' does not exist.", "Trying substitution 'generated/*', candidate module location: 'generated/folder3/file2'.", "Loading module as file / folder, candidate module location 'c:/root/generated/folder3/file2'.", - "File 'c:/root/generated/folder3/file2.ts' exist - use it as a module resolution result.", + "File 'c:/root/generated/folder3/file2.ts' exist - use it as a name resolution result.", "======== Module name 'folder3/file2' was successfully resolved to 'c:/root/generated/folder3/file2.ts'. ========", "======== Resolving module 'components/file3' from 'c:/root/folder1/file1.ts'. ========", "Module resolution kind is not specified, using 'NodeJs'.", @@ -39,7 +39,7 @@ "File 'c:/root/shared/components/file3/package.json' does not exist.", "File 'c:/root/shared/components/file3/index.ts' does not exist.", "File 'c:/root/shared/components/file3/index.tsx' does not exist.", - "File 'c:/root/shared/components/file3/index.d.ts' exist - use it as a module resolution result.", + "File 'c:/root/shared/components/file3/index.d.ts' exist - use it as a name resolution result.", "======== Module name 'components/file3' was successfully resolved to 'c:/root/shared/components/file3/index.d.ts'. ========", "======== Resolving module 'file4' from 'c:/root/folder1/file1.ts'. ========", "Module resolution kind is not specified, using 'NodeJs'.", @@ -72,6 +72,13 @@ "File 'c:/root/folder1/node_modules/file4/index.ts' does not exist.", "File 'c:/root/folder1/node_modules/file4/index.tsx' does not exist.", "File 'c:/root/folder1/node_modules/file4/index.d.ts' does not exist.", + "File 'c:/root/folder1/node_modules/@types/file4.ts' does not exist.", + "File 'c:/root/folder1/node_modules/@types/file4.tsx' does not exist.", + "File 'c:/root/folder1/node_modules/@types/file4.d.ts' does not exist.", + "File 'c:/root/folder1/node_modules/@types/file4/package.json' does not exist.", + "File 'c:/root/folder1/node_modules/@types/file4/index.ts' does not exist.", + "File 'c:/root/folder1/node_modules/@types/file4/index.tsx' does not exist.", + "File 'c:/root/folder1/node_modules/@types/file4/index.d.ts' does not exist.", "File 'c:/root/node_modules/file4.ts' does not exist.", "File 'c:/root/node_modules/file4.tsx' does not exist.", "File 'c:/root/node_modules/file4.d.ts' does not exist.", @@ -79,6 +86,13 @@ "File 'c:/root/node_modules/file4/index.ts' does not exist.", "File 'c:/root/node_modules/file4/index.tsx' does not exist.", "File 'c:/root/node_modules/file4/index.d.ts' does not exist.", - "File 'c:/node_modules/file4.ts' exist - use it as a module resolution result.", + "File 'c:/root/node_modules/@types/file4.ts' does not exist.", + "File 'c:/root/node_modules/@types/file4.tsx' does not exist.", + "File 'c:/root/node_modules/@types/file4.d.ts' does not exist.", + "File 'c:/root/node_modules/@types/file4/package.json' does not exist.", + "File 'c:/root/node_modules/@types/file4/index.ts' does not exist.", + "File 'c:/root/node_modules/@types/file4/index.tsx' does not exist.", + "File 'c:/root/node_modules/@types/file4/index.d.ts' does not exist.", + "File 'c:/node_modules/file4.ts' exist - use it as a name resolution result.", "======== Module name 'file4' was successfully resolved to 'c:/node_modules/file4.ts'. ========" ] \ No newline at end of file diff --git a/tests/baselines/reference/pathMappingBasedModuleResolution6_classic.trace.json b/tests/baselines/reference/pathMappingBasedModuleResolution6_classic.trace.json index 0493e9c216b..20fc416ccd4 100644 --- a/tests/baselines/reference/pathMappingBasedModuleResolution6_classic.trace.json +++ b/tests/baselines/reference/pathMappingBasedModuleResolution6_classic.trace.json @@ -10,7 +10,7 @@ "File 'c:/root/src/project/file3.d.ts' does not exist.", "Trying other entries in 'rootDirs'", "Loading 'project/file3' from the root dir 'c:/root/generated/src', candidate location 'c:/root/generated/src/project/file3'", - "File 'c:/root/generated/src/project/file3.ts' exist - use it as a module resolution result.", + "File 'c:/root/generated/src/project/file3.ts' exist - use it as a name resolution result.", "======== Module name './project/file3' was successfully resolved to 'c:/root/generated/src/project/file3.ts'. ========", "======== Resolving module '../file2' from 'c:/root/generated/src/project/file3.ts'. ========", "Module resolution kind is not specified, using 'Classic'.", @@ -24,6 +24,6 @@ "Trying other entries in 'rootDirs'", "Loading 'file2' from the root dir 'c:/root/src', candidate location 'c:/root/src/file2'", "File 'c:/root/src/file2.ts' does not exist.", - "File 'c:/root/src/file2.d.ts' exist - use it as a module resolution result.", + "File 'c:/root/src/file2.d.ts' exist - use it as a name resolution result.", "======== Module name '../file2' was successfully resolved to 'c:/root/src/file2.d.ts'. ========" ] \ No newline at end of file diff --git a/tests/baselines/reference/pathMappingBasedModuleResolution6_node.trace.json b/tests/baselines/reference/pathMappingBasedModuleResolution6_node.trace.json index 4ea2f12a63c..7c5e76a2847 100644 --- a/tests/baselines/reference/pathMappingBasedModuleResolution6_node.trace.json +++ b/tests/baselines/reference/pathMappingBasedModuleResolution6_node.trace.json @@ -17,7 +17,7 @@ "Trying other entries in 'rootDirs'", "Loading 'project/file3' from the root dir 'c:/root/generated/src', candidate location 'c:/root/generated/src/project/file3'", "Loading module as file / folder, candidate module location 'c:/root/generated/src/project/file3'.", - "File 'c:/root/generated/src/project/file3.ts' exist - use it as a module resolution result.", + "File 'c:/root/generated/src/project/file3.ts' exist - use it as a name resolution result.", "======== Module name './project/file3' was successfully resolved to 'c:/root/generated/src/project/file3.ts'. ========", "======== Resolving module '../file2' from 'c:/root/generated/src/project/file3.ts'. ========", "Module resolution kind is not specified, using 'NodeJs'.", @@ -43,6 +43,6 @@ "File 'c:/root/src/file2/package.json' does not exist.", "File 'c:/root/src/file2/index.ts' does not exist.", "File 'c:/root/src/file2/index.tsx' does not exist.", - "File 'c:/root/src/file2/index.d.ts' exist - use it as a module resolution result.", + "File 'c:/root/src/file2/index.d.ts' exist - use it as a name resolution result.", "======== Module name '../file2' was successfully resolved to 'c:/root/src/file2/index.d.ts'. ========" ] \ No newline at end of file diff --git a/tests/baselines/reference/pathMappingBasedModuleResolution7_classic.trace.json b/tests/baselines/reference/pathMappingBasedModuleResolution7_classic.trace.json index b45cd4754c7..2d72108210e 100644 --- a/tests/baselines/reference/pathMappingBasedModuleResolution7_classic.trace.json +++ b/tests/baselines/reference/pathMappingBasedModuleResolution7_classic.trace.json @@ -10,7 +10,7 @@ "File 'c:/root/src/project/file2.d.ts' does not exist.", "Trying other entries in 'rootDirs'", "Loading 'project/file2' from the root dir 'c:/root/generated/src', candidate location 'c:/root/generated/src/project/file2'", - "File 'c:/root/generated/src/project/file2.ts' exist - use it as a module resolution result.", + "File 'c:/root/generated/src/project/file2.ts' exist - use it as a name resolution result.", "======== Module name './project/file2' was successfully resolved to 'c:/root/generated/src/project/file2.ts'. ========", "======== Resolving module 'module3' from 'c:/root/src/file1.ts'. ========", "Module resolution kind is not specified, using 'Classic'.", @@ -28,7 +28,7 @@ "File 'c:/root/module3.ts' does not exist.", "File 'c:/root/module3.d.ts' does not exist.", "File 'c:/module3.ts' does not exist.", - "File 'c:/module3.d.ts' exist - use it as a module resolution result.", + "File 'c:/module3.d.ts' exist - use it as a name resolution result.", "======== Module name 'module3' was successfully resolved to 'c:/module3.d.ts'. ========", "======== Resolving module 'module1' from 'c:/root/generated/src/project/file2.ts'. ========", "Module resolution kind is not specified, using 'Classic'.", @@ -40,7 +40,7 @@ "File 'c:/root/module1.d.ts' does not exist.", "Trying substitution 'c:/shared/*', candidate module location: 'c:/shared/module1'.", "File 'c:/shared/module1.ts' does not exist.", - "File 'c:/shared/module1.d.ts' exist - use it as a module resolution result.", + "File 'c:/shared/module1.d.ts' exist - use it as a name resolution result.", "======== Module name 'module1' was successfully resolved to 'c:/shared/module1.d.ts'. ========", "======== Resolving module 'templates/module2' from 'c:/root/generated/src/project/file2.ts'. ========", "Module resolution kind is not specified, using 'Classic'.", @@ -48,7 +48,7 @@ "'paths' option is specified, looking for a pattern to match module name 'templates/module2'.", "Module name 'templates/module2', matched pattern 'templates/*'.", "Trying substitution 'generated/src/templates/*', candidate module location: 'generated/src/templates/module2'.", - "File 'c:/root/generated/src/templates/module2.ts' exist - use it as a module resolution result.", + "File 'c:/root/generated/src/templates/module2.ts' exist - use it as a name resolution result.", "======== Module name 'templates/module2' was successfully resolved to 'c:/root/generated/src/templates/module2.ts'. ========", "======== Resolving module '../file3' from 'c:/root/generated/src/project/file2.ts'. ========", "Module resolution kind is not specified, using 'Classic'.", @@ -62,6 +62,6 @@ "Trying other entries in 'rootDirs'", "Loading 'file3' from the root dir 'c:/root/src', candidate location 'c:/root/src/file3'", "File 'c:/root/src/file3.ts' does not exist.", - "File 'c:/root/src/file3.d.ts' exist - use it as a module resolution result.", + "File 'c:/root/src/file3.d.ts' exist - use it as a name resolution result.", "======== Module name '../file3' was successfully resolved to 'c:/root/src/file3.d.ts'. ========" ] \ No newline at end of file diff --git a/tests/baselines/reference/pathMappingBasedModuleResolution7_node.trace.json b/tests/baselines/reference/pathMappingBasedModuleResolution7_node.trace.json index 39d5c25c92a..99d4bf244db 100644 --- a/tests/baselines/reference/pathMappingBasedModuleResolution7_node.trace.json +++ b/tests/baselines/reference/pathMappingBasedModuleResolution7_node.trace.json @@ -17,7 +17,7 @@ "Trying other entries in 'rootDirs'", "Loading 'project/file2' from the root dir 'c:/root/generated/src', candidate location 'c:/root/generated/src/project/file2'", "Loading module as file / folder, candidate module location 'c:/root/generated/src/project/file2'.", - "File 'c:/root/generated/src/project/file2.ts' exist - use it as a module resolution result.", + "File 'c:/root/generated/src/project/file2.ts' exist - use it as a name resolution result.", "======== Module name './project/file2' was successfully resolved to 'c:/root/generated/src/project/file2.ts'. ========", "======== Resolving module 'module3' from 'c:/root/src/file1.ts'. ========", "Module resolution kind is not specified, using 'NodeJs'.", @@ -50,6 +50,13 @@ "File 'c:/root/src/node_modules/module3/index.ts' does not exist.", "File 'c:/root/src/node_modules/module3/index.tsx' does not exist.", "File 'c:/root/src/node_modules/module3/index.d.ts' does not exist.", + "File 'c:/root/src/node_modules/@types/module3.ts' does not exist.", + "File 'c:/root/src/node_modules/@types/module3.tsx' does not exist.", + "File 'c:/root/src/node_modules/@types/module3.d.ts' does not exist.", + "File 'c:/root/src/node_modules/@types/module3/package.json' does not exist.", + "File 'c:/root/src/node_modules/@types/module3/index.ts' does not exist.", + "File 'c:/root/src/node_modules/@types/module3/index.tsx' does not exist.", + "File 'c:/root/src/node_modules/@types/module3/index.d.ts' does not exist.", "File 'c:/root/node_modules/module3.ts' does not exist.", "File 'c:/root/node_modules/module3.tsx' does not exist.", "File 'c:/root/node_modules/module3.d.ts' does not exist.", @@ -57,9 +64,16 @@ "File 'c:/root/node_modules/module3/index.ts' does not exist.", "File 'c:/root/node_modules/module3/index.tsx' does not exist.", "File 'c:/root/node_modules/module3/index.d.ts' does not exist.", + "File 'c:/root/node_modules/@types/module3.ts' does not exist.", + "File 'c:/root/node_modules/@types/module3.tsx' does not exist.", + "File 'c:/root/node_modules/@types/module3.d.ts' does not exist.", + "File 'c:/root/node_modules/@types/module3/package.json' does not exist.", + "File 'c:/root/node_modules/@types/module3/index.ts' does not exist.", + "File 'c:/root/node_modules/@types/module3/index.tsx' does not exist.", + "File 'c:/root/node_modules/@types/module3/index.d.ts' does not exist.", "File 'c:/node_modules/module3.ts' does not exist.", "File 'c:/node_modules/module3.tsx' does not exist.", - "File 'c:/node_modules/module3.d.ts' exist - use it as a module resolution result.", + "File 'c:/node_modules/module3.d.ts' exist - use it as a name resolution result.", "======== Module name 'module3' was successfully resolved to 'c:/node_modules/module3.d.ts'. ========", "======== Resolving module 'module1' from 'c:/root/generated/src/project/file2.ts'. ========", "Module resolution kind is not specified, using 'NodeJs'.", @@ -83,7 +97,7 @@ "File 'c:/shared/module1/package.json' does not exist.", "File 'c:/shared/module1/index.ts' does not exist.", "File 'c:/shared/module1/index.tsx' does not exist.", - "File 'c:/shared/module1/index.d.ts' exist - use it as a module resolution result.", + "File 'c:/shared/module1/index.d.ts' exist - use it as a name resolution result.", "======== Module name 'module1' was successfully resolved to 'c:/shared/module1/index.d.ts'. ========", "======== Resolving module 'templates/module2' from 'c:/root/generated/src/project/file2.ts'. ========", "Module resolution kind is not specified, using 'NodeJs'.", @@ -92,7 +106,7 @@ "Module name 'templates/module2', matched pattern 'templates/*'.", "Trying substitution 'generated/src/templates/*', candidate module location: 'generated/src/templates/module2'.", "Loading module as file / folder, candidate module location 'c:/root/generated/src/templates/module2'.", - "File 'c:/root/generated/src/templates/module2.ts' exist - use it as a module resolution result.", + "File 'c:/root/generated/src/templates/module2.ts' exist - use it as a name resolution result.", "======== Module name 'templates/module2' was successfully resolved to 'c:/root/generated/src/templates/module2.ts'. ========", "======== Resolving module '../file3' from 'c:/root/generated/src/project/file2.ts'. ========", "Module resolution kind is not specified, using 'NodeJs'.", @@ -118,6 +132,6 @@ "File 'c:/root/src/file3/package.json' does not exist.", "File 'c:/root/src/file3/index.ts' does not exist.", "File 'c:/root/src/file3/index.tsx' does not exist.", - "File 'c:/root/src/file3/index.d.ts' exist - use it as a module resolution result.", + "File 'c:/root/src/file3/index.d.ts' exist - use it as a name resolution result.", "======== Module name '../file3' was successfully resolved to 'c:/root/src/file3/index.d.ts'. ========" ] \ No newline at end of file diff --git a/tests/baselines/reference/pathsValidation1.errors.txt b/tests/baselines/reference/pathsValidation1.errors.txt new file mode 100644 index 00000000000..c6193be67ac --- /dev/null +++ b/tests/baselines/reference/pathsValidation1.errors.txt @@ -0,0 +1,6 @@ +error TS5063: Substututions for pattern '*' should be an array. + + +!!! error TS5063: Substututions for pattern '*' should be an array. +==== tests/cases/compiler/a.ts (0 errors) ==== + let x = 1; \ No newline at end of file diff --git a/tests/baselines/reference/pathsValidation1.js b/tests/baselines/reference/pathsValidation1.js new file mode 100644 index 00000000000..bfffc647f63 --- /dev/null +++ b/tests/baselines/reference/pathsValidation1.js @@ -0,0 +1,5 @@ +//// [a.ts] +let x = 1; + +//// [a.js] +var x = 1; diff --git a/tests/baselines/reference/pathsValidation2.errors.txt b/tests/baselines/reference/pathsValidation2.errors.txt new file mode 100644 index 00000000000..8956b2fc159 --- /dev/null +++ b/tests/baselines/reference/pathsValidation2.errors.txt @@ -0,0 +1,6 @@ +error TS5064: Substitution '1' for pattern '*' has incorrect type, expected 'string', got 'number'. + + +!!! error TS5064: Substitution '1' for pattern '*' has incorrect type, expected 'string', got 'number'. +==== tests/cases/compiler/a.ts (0 errors) ==== + let x = 1; \ No newline at end of file diff --git a/tests/baselines/reference/pathsValidation2.js b/tests/baselines/reference/pathsValidation2.js new file mode 100644 index 00000000000..bfffc647f63 --- /dev/null +++ b/tests/baselines/reference/pathsValidation2.js @@ -0,0 +1,5 @@ +//// [a.ts] +let x = 1; + +//// [a.js] +var x = 1; diff --git a/tests/baselines/reference/plusOperatorWithBooleanType.symbols b/tests/baselines/reference/plusOperatorWithBooleanType.symbols index d8c6beda3bc..29ee32c9f54 100644 --- a/tests/baselines/reference/plusOperatorWithBooleanType.symbols +++ b/tests/baselines/reference/plusOperatorWithBooleanType.symbols @@ -10,7 +10,7 @@ class A { >A : Symbol(A, Decl(plusOperatorWithBooleanType.ts, 3, 40)) public a: boolean; ->a : Symbol(a, Decl(plusOperatorWithBooleanType.ts, 5, 9)) +>a : Symbol(A.a, Decl(plusOperatorWithBooleanType.ts, 5, 9)) static foo() { return false; } >foo : Symbol(A.foo, Decl(plusOperatorWithBooleanType.ts, 6, 22)) diff --git a/tests/baselines/reference/plusOperatorWithNumberType.symbols b/tests/baselines/reference/plusOperatorWithNumberType.symbols index fd62582515e..c8f4b9652d0 100644 --- a/tests/baselines/reference/plusOperatorWithNumberType.symbols +++ b/tests/baselines/reference/plusOperatorWithNumberType.symbols @@ -13,7 +13,7 @@ class A { >A : Symbol(A, Decl(plusOperatorWithNumberType.ts, 4, 36)) public a: number; ->a : Symbol(a, Decl(plusOperatorWithNumberType.ts, 6, 9)) +>a : Symbol(A.a, Decl(plusOperatorWithNumberType.ts, 6, 9)) static foo() { return 1; } >foo : Symbol(A.foo, Decl(plusOperatorWithNumberType.ts, 7, 21)) diff --git a/tests/baselines/reference/plusOperatorWithStringType.symbols b/tests/baselines/reference/plusOperatorWithStringType.symbols index fd3e10c172f..eb2e2625a1c 100644 --- a/tests/baselines/reference/plusOperatorWithStringType.symbols +++ b/tests/baselines/reference/plusOperatorWithStringType.symbols @@ -13,7 +13,7 @@ class A { >A : Symbol(A, Decl(plusOperatorWithStringType.ts, 4, 40)) public a: string; ->a : Symbol(a, Decl(plusOperatorWithStringType.ts, 6, 9)) +>a : Symbol(A.a, Decl(plusOperatorWithStringType.ts, 6, 9)) static foo() { return ""; } >foo : Symbol(A.foo, Decl(plusOperatorWithStringType.ts, 7, 21)) diff --git a/tests/baselines/reference/privacyCheckAnonymousFunctionParameter2.symbols b/tests/baselines/reference/privacyCheckAnonymousFunctionParameter2.symbols index d0f8179dfea..14d223f2c01 100644 --- a/tests/baselines/reference/privacyCheckAnonymousFunctionParameter2.symbols +++ b/tests/baselines/reference/privacyCheckAnonymousFunctionParameter2.symbols @@ -5,7 +5,7 @@ export var x = 1; // Makes this an external module interface Iterator { x: T } >Iterator : Symbol(Iterator, Decl(privacyCheckAnonymousFunctionParameter2.ts, 0, 17)) >T : Symbol(T, Decl(privacyCheckAnonymousFunctionParameter2.ts, 1, 19)) ->x : Symbol(x, Decl(privacyCheckAnonymousFunctionParameter2.ts, 1, 23)) +>x : Symbol(Iterator.x, Decl(privacyCheckAnonymousFunctionParameter2.ts, 1, 23)) >T : Symbol(T, Decl(privacyCheckAnonymousFunctionParameter2.ts, 1, 19)) module Q { diff --git a/tests/baselines/reference/privacyCheckCallbackOfInterfaceMethodWithTypeParameter.symbols b/tests/baselines/reference/privacyCheckCallbackOfInterfaceMethodWithTypeParameter.symbols index 61e8d09798b..9234971375c 100644 --- a/tests/baselines/reference/privacyCheckCallbackOfInterfaceMethodWithTypeParameter.symbols +++ b/tests/baselines/reference/privacyCheckCallbackOfInterfaceMethodWithTypeParameter.symbols @@ -4,7 +4,7 @@ export interface A { >T : Symbol(T, Decl(privacyCheckCallbackOfInterfaceMethodWithTypeParameter.ts, 0, 19)) f1(callback: (p: T) => any); ->f1 : Symbol(f1, Decl(privacyCheckCallbackOfInterfaceMethodWithTypeParameter.ts, 0, 23)) +>f1 : Symbol(A.f1, Decl(privacyCheckCallbackOfInterfaceMethodWithTypeParameter.ts, 0, 23)) >callback : Symbol(callback, Decl(privacyCheckCallbackOfInterfaceMethodWithTypeParameter.ts, 1, 7)) >p : Symbol(p, Decl(privacyCheckCallbackOfInterfaceMethodWithTypeParameter.ts, 1, 18)) >T : Symbol(T, Decl(privacyCheckCallbackOfInterfaceMethodWithTypeParameter.ts, 0, 19)) diff --git a/tests/baselines/reference/privacyCheckExternalModuleExportAssignmentOfGenericClass.symbols b/tests/baselines/reference/privacyCheckExternalModuleExportAssignmentOfGenericClass.symbols index 75ebd0bff0a..50402be8633 100644 --- a/tests/baselines/reference/privacyCheckExternalModuleExportAssignmentOfGenericClass.symbols +++ b/tests/baselines/reference/privacyCheckExternalModuleExportAssignmentOfGenericClass.symbols @@ -9,7 +9,7 @@ interface Bar { >Bar : Symbol(Bar, Decl(privacyCheckExternalModuleExportAssignmentOfGenericClass_1.ts, 1, 13)) foo: Foo; ->foo : Symbol(foo, Decl(privacyCheckExternalModuleExportAssignmentOfGenericClass_1.ts, 2, 15)) +>foo : Symbol(Bar.foo, Decl(privacyCheckExternalModuleExportAssignmentOfGenericClass_1.ts, 2, 15)) >Foo : Symbol(Foo, Decl(privacyCheckExternalModuleExportAssignmentOfGenericClass_1.ts, 0, 0)) } === tests/cases/compiler/privacyCheckExternalModuleExportAssignmentOfGenericClass_0.ts === @@ -21,7 +21,7 @@ class Foo { >A : Symbol(A, Decl(privacyCheckExternalModuleExportAssignmentOfGenericClass_0.ts, 1, 10)) constructor(public a: A) { } ->a : Symbol(a, Decl(privacyCheckExternalModuleExportAssignmentOfGenericClass_0.ts, 2, 16)) +>a : Symbol(Foo.a, Decl(privacyCheckExternalModuleExportAssignmentOfGenericClass_0.ts, 2, 16)) >A : Symbol(A, Decl(privacyCheckExternalModuleExportAssignmentOfGenericClass_0.ts, 1, 10)) } diff --git a/tests/baselines/reference/privacyClass.symbols b/tests/baselines/reference/privacyClass.symbols index 791193a54ab..b0d949c0444 100644 --- a/tests/baselines/reference/privacyClass.symbols +++ b/tests/baselines/reference/privacyClass.symbols @@ -14,7 +14,7 @@ export module m1 { >m1_c_public : Symbol(m1_c_public, Decl(privacyClass.ts, 5, 5)) private f1() { ->f1 : Symbol(f1, Decl(privacyClass.ts, 7, 30)) +>f1 : Symbol(m1_c_public.f1, Decl(privacyClass.ts, 7, 30)) } } @@ -98,7 +98,7 @@ module m2 { >m2_c_public : Symbol(m2_c_public, Decl(privacyClass.ts, 49, 5)) private f1() { ->f1 : Symbol(f1, Decl(privacyClass.ts, 51, 30)) +>f1 : Symbol(m2_c_public.f1, Decl(privacyClass.ts, 51, 30)) } } @@ -178,7 +178,7 @@ export class glo_c_public { >glo_c_public : Symbol(glo_c_public, Decl(privacyClass.ts, 91, 1)) private f1() { ->f1 : Symbol(f1, Decl(privacyClass.ts, 93, 27)) +>f1 : Symbol(glo_c_public.f1, Decl(privacyClass.ts, 93, 27)) } } diff --git a/tests/baselines/reference/privacyFunc.symbols b/tests/baselines/reference/privacyFunc.symbols index 2d156da870d..0eb77cf8606 100644 --- a/tests/baselines/reference/privacyFunc.symbols +++ b/tests/baselines/reference/privacyFunc.symbols @@ -6,7 +6,7 @@ module m1 { >C1_public : Symbol(C1_public, Decl(privacyFunc.ts, 0, 11)) private f1() { ->f1 : Symbol(f1, Decl(privacyFunc.ts, 1, 28)) +>f1 : Symbol(C1_public.f1, Decl(privacyFunc.ts, 1, 28)) } } @@ -30,59 +30,59 @@ module m1 { } private f1_private(m1_c3_f1_arg: C1_public) { ->f1_private : Symbol(f1_private, Decl(privacyFunc.ts, 13, 9)) +>f1_private : Symbol(C3_public.f1_private, Decl(privacyFunc.ts, 13, 9)) >m1_c3_f1_arg : Symbol(m1_c3_f1_arg, Decl(privacyFunc.ts, 15, 27)) >C1_public : Symbol(C1_public, Decl(privacyFunc.ts, 0, 11)) } public f2_public(m1_c3_f2_arg: C1_public) { ->f2_public : Symbol(f2_public, Decl(privacyFunc.ts, 16, 9)) +>f2_public : Symbol(C3_public.f2_public, Decl(privacyFunc.ts, 16, 9)) >m1_c3_f2_arg : Symbol(m1_c3_f2_arg, Decl(privacyFunc.ts, 18, 25)) >C1_public : Symbol(C1_public, Decl(privacyFunc.ts, 0, 11)) } private f3_private(m1_c3_f3_arg: C2_private) { ->f3_private : Symbol(f3_private, Decl(privacyFunc.ts, 19, 9)) +>f3_private : Symbol(C3_public.f3_private, Decl(privacyFunc.ts, 19, 9)) >m1_c3_f3_arg : Symbol(m1_c3_f3_arg, Decl(privacyFunc.ts, 21, 27)) >C2_private : Symbol(C2_private, Decl(privacyFunc.ts, 4, 5)) } public f4_public(m1_c3_f4_arg: C2_private) { // error ->f4_public : Symbol(f4_public, Decl(privacyFunc.ts, 22, 9)) +>f4_public : Symbol(C3_public.f4_public, Decl(privacyFunc.ts, 22, 9)) >m1_c3_f4_arg : Symbol(m1_c3_f4_arg, Decl(privacyFunc.ts, 24, 25)) >C2_private : Symbol(C2_private, Decl(privacyFunc.ts, 4, 5)) } private f5_private() { ->f5_private : Symbol(f5_private, Decl(privacyFunc.ts, 25, 9)) +>f5_private : Symbol(C3_public.f5_private, Decl(privacyFunc.ts, 25, 9)) return new C1_public(); >C1_public : Symbol(C1_public, Decl(privacyFunc.ts, 0, 11)) } public f6_public() { ->f6_public : Symbol(f6_public, Decl(privacyFunc.ts, 29, 9)) +>f6_public : Symbol(C3_public.f6_public, Decl(privacyFunc.ts, 29, 9)) return new C1_public(); >C1_public : Symbol(C1_public, Decl(privacyFunc.ts, 0, 11)) } private f7_private() { ->f7_private : Symbol(f7_private, Decl(privacyFunc.ts, 33, 9)) +>f7_private : Symbol(C3_public.f7_private, Decl(privacyFunc.ts, 33, 9)) return new C2_private(); >C2_private : Symbol(C2_private, Decl(privacyFunc.ts, 4, 5)) } public f8_public() { ->f8_public : Symbol(f8_public, Decl(privacyFunc.ts, 37, 9)) +>f8_public : Symbol(C3_public.f8_public, Decl(privacyFunc.ts, 37, 9)) return new C2_private(); // error >C2_private : Symbol(C2_private, Decl(privacyFunc.ts, 4, 5)) } private f9_private(): C1_public { ->f9_private : Symbol(f9_private, Decl(privacyFunc.ts, 41, 9)) +>f9_private : Symbol(C3_public.f9_private, Decl(privacyFunc.ts, 41, 9)) >C1_public : Symbol(C1_public, Decl(privacyFunc.ts, 0, 11)) return new C1_public(); @@ -90,7 +90,7 @@ module m1 { } public f10_public(): C1_public { ->f10_public : Symbol(f10_public, Decl(privacyFunc.ts, 45, 9)) +>f10_public : Symbol(C3_public.f10_public, Decl(privacyFunc.ts, 45, 9)) >C1_public : Symbol(C1_public, Decl(privacyFunc.ts, 0, 11)) return new C1_public(); @@ -98,7 +98,7 @@ module m1 { } private f11_private(): C2_private { ->f11_private : Symbol(f11_private, Decl(privacyFunc.ts, 49, 9)) +>f11_private : Symbol(C3_public.f11_private, Decl(privacyFunc.ts, 49, 9)) >C2_private : Symbol(C2_private, Decl(privacyFunc.ts, 4, 5)) return new C2_private(); @@ -106,7 +106,7 @@ module m1 { } public f12_public(): C2_private { // error ->f12_public : Symbol(f12_public, Decl(privacyFunc.ts, 53, 9)) +>f12_public : Symbol(C3_public.f12_public, Decl(privacyFunc.ts, 53, 9)) >C2_private : Symbol(C2_private, Decl(privacyFunc.ts, 4, 5)) return new C2_private(); //error @@ -129,53 +129,53 @@ module m1 { >m1_c4_c1_2 : Symbol(m1_c4_c1_2, Decl(privacyFunc.ts, 63, 21)) } private f1_private(m1_c4_f1_arg: C1_public) { ->f1_private : Symbol(f1_private, Decl(privacyFunc.ts, 64, 9)) +>f1_private : Symbol(C4_private.f1_private, Decl(privacyFunc.ts, 64, 9)) >m1_c4_f1_arg : Symbol(m1_c4_f1_arg, Decl(privacyFunc.ts, 65, 27)) >C1_public : Symbol(C1_public, Decl(privacyFunc.ts, 0, 11)) } public f2_public(m1_c4_f2_arg: C1_public) { ->f2_public : Symbol(f2_public, Decl(privacyFunc.ts, 66, 9)) +>f2_public : Symbol(C4_private.f2_public, Decl(privacyFunc.ts, 66, 9)) >m1_c4_f2_arg : Symbol(m1_c4_f2_arg, Decl(privacyFunc.ts, 68, 25)) >C1_public : Symbol(C1_public, Decl(privacyFunc.ts, 0, 11)) } private f3_private(m1_c4_f3_arg: C2_private) { ->f3_private : Symbol(f3_private, Decl(privacyFunc.ts, 69, 9)) +>f3_private : Symbol(C4_private.f3_private, Decl(privacyFunc.ts, 69, 9)) >m1_c4_f3_arg : Symbol(m1_c4_f3_arg, Decl(privacyFunc.ts, 71, 27)) >C2_private : Symbol(C2_private, Decl(privacyFunc.ts, 4, 5)) } public f4_public(m1_c4_f4_arg: C2_private) { ->f4_public : Symbol(f4_public, Decl(privacyFunc.ts, 72, 9)) +>f4_public : Symbol(C4_private.f4_public, Decl(privacyFunc.ts, 72, 9)) >m1_c4_f4_arg : Symbol(m1_c4_f4_arg, Decl(privacyFunc.ts, 74, 25)) >C2_private : Symbol(C2_private, Decl(privacyFunc.ts, 4, 5)) } private f5_private() { ->f5_private : Symbol(f5_private, Decl(privacyFunc.ts, 75, 9)) +>f5_private : Symbol(C4_private.f5_private, Decl(privacyFunc.ts, 75, 9)) return new C1_public(); >C1_public : Symbol(C1_public, Decl(privacyFunc.ts, 0, 11)) } public f6_public() { ->f6_public : Symbol(f6_public, Decl(privacyFunc.ts, 80, 9)) +>f6_public : Symbol(C4_private.f6_public, Decl(privacyFunc.ts, 80, 9)) return new C1_public(); >C1_public : Symbol(C1_public, Decl(privacyFunc.ts, 0, 11)) } private f7_private() { ->f7_private : Symbol(f7_private, Decl(privacyFunc.ts, 84, 9)) +>f7_private : Symbol(C4_private.f7_private, Decl(privacyFunc.ts, 84, 9)) return new C2_private(); >C2_private : Symbol(C2_private, Decl(privacyFunc.ts, 4, 5)) } public f8_public() { ->f8_public : Symbol(f8_public, Decl(privacyFunc.ts, 88, 9)) +>f8_public : Symbol(C4_private.f8_public, Decl(privacyFunc.ts, 88, 9)) return new C2_private(); >C2_private : Symbol(C2_private, Decl(privacyFunc.ts, 4, 5)) @@ -183,7 +183,7 @@ module m1 { private f9_private(): C1_public { ->f9_private : Symbol(f9_private, Decl(privacyFunc.ts, 92, 9)) +>f9_private : Symbol(C4_private.f9_private, Decl(privacyFunc.ts, 92, 9)) >C1_public : Symbol(C1_public, Decl(privacyFunc.ts, 0, 11)) return new C1_public(); @@ -191,7 +191,7 @@ module m1 { } public f10_public(): C1_public { ->f10_public : Symbol(f10_public, Decl(privacyFunc.ts, 97, 9)) +>f10_public : Symbol(C4_private.f10_public, Decl(privacyFunc.ts, 97, 9)) >C1_public : Symbol(C1_public, Decl(privacyFunc.ts, 0, 11)) return new C1_public(); @@ -199,7 +199,7 @@ module m1 { } private f11_private(): C2_private { ->f11_private : Symbol(f11_private, Decl(privacyFunc.ts, 101, 9)) +>f11_private : Symbol(C4_private.f11_private, Decl(privacyFunc.ts, 101, 9)) >C2_private : Symbol(C2_private, Decl(privacyFunc.ts, 4, 5)) return new C2_private(); @@ -207,7 +207,7 @@ module m1 { } public f12_public(): C2_private { ->f12_public : Symbol(f12_public, Decl(privacyFunc.ts, 105, 9)) +>f12_public : Symbol(C4_private.f12_public, Decl(privacyFunc.ts, 105, 9)) >C2_private : Symbol(C2_private, Decl(privacyFunc.ts, 4, 5)) return new C2_private(); @@ -352,33 +352,33 @@ class C7_public { >c7_c1_2 : Symbol(c7_c1_2, Decl(privacyFunc.ts, 183, 17)) } private f1_private(c7_f1_arg: C6_public) { ->f1_private : Symbol(f1_private, Decl(privacyFunc.ts, 184, 5)) +>f1_private : Symbol(C7_public.f1_private, Decl(privacyFunc.ts, 184, 5)) >c7_f1_arg : Symbol(c7_f1_arg, Decl(privacyFunc.ts, 185, 23)) >C6_public : Symbol(C6_public, Decl(privacyFunc.ts, 176, 1)) } public f2_public(c7_f2_arg: C6_public) { ->f2_public : Symbol(f2_public, Decl(privacyFunc.ts, 186, 5)) +>f2_public : Symbol(C7_public.f2_public, Decl(privacyFunc.ts, 186, 5)) >c7_f2_arg : Symbol(c7_f2_arg, Decl(privacyFunc.ts, 188, 21)) >C6_public : Symbol(C6_public, Decl(privacyFunc.ts, 176, 1)) } private f5_private() { ->f5_private : Symbol(f5_private, Decl(privacyFunc.ts, 189, 5)) +>f5_private : Symbol(C7_public.f5_private, Decl(privacyFunc.ts, 189, 5)) return new C6_public(); >C6_public : Symbol(C6_public, Decl(privacyFunc.ts, 176, 1)) } public f6_public() { ->f6_public : Symbol(f6_public, Decl(privacyFunc.ts, 193, 5)) +>f6_public : Symbol(C7_public.f6_public, Decl(privacyFunc.ts, 193, 5)) return new C6_public(); >C6_public : Symbol(C6_public, Decl(privacyFunc.ts, 176, 1)) } private f9_private(): C6_public { ->f9_private : Symbol(f9_private, Decl(privacyFunc.ts, 197, 5)) +>f9_private : Symbol(C7_public.f9_private, Decl(privacyFunc.ts, 197, 5)) >C6_public : Symbol(C6_public, Decl(privacyFunc.ts, 176, 1)) return new C6_public(); @@ -386,7 +386,7 @@ class C7_public { } public f10_public(): C6_public { ->f10_public : Symbol(f10_public, Decl(privacyFunc.ts, 201, 5)) +>f10_public : Symbol(C7_public.f10_public, Decl(privacyFunc.ts, 201, 5)) >C6_public : Symbol(C6_public, Decl(privacyFunc.ts, 176, 1)) return new C6_public(); diff --git a/tests/baselines/reference/privacyGetter.symbols b/tests/baselines/reference/privacyGetter.symbols index eff33e0061b..19a78e7ce8a 100644 --- a/tests/baselines/reference/privacyGetter.symbols +++ b/tests/baselines/reference/privacyGetter.symbols @@ -6,7 +6,7 @@ export module m1 { >C1_public : Symbol(C1_public, Decl(privacyGetter.ts, 0, 18)) private f1() { ->f1 : Symbol(f1, Decl(privacyGetter.ts, 1, 28)) +>f1 : Symbol(C1_public.f1, Decl(privacyGetter.ts, 1, 28)) } } @@ -18,46 +18,46 @@ export module m1 { >C3_public : Symbol(C3_public, Decl(privacyGetter.ts, 7, 5)) private get p1_private() { ->p1_private : Symbol(p1_private, Decl(privacyGetter.ts, 9, 28), Decl(privacyGetter.ts, 12, 9)) +>p1_private : Symbol(C3_public.p1_private, Decl(privacyGetter.ts, 9, 28), Decl(privacyGetter.ts, 12, 9)) return new C1_public(); >C1_public : Symbol(C1_public, Decl(privacyGetter.ts, 0, 18)) } private set p1_private(m1_c3_p1_arg: C1_public) { ->p1_private : Symbol(p1_private, Decl(privacyGetter.ts, 9, 28), Decl(privacyGetter.ts, 12, 9)) +>p1_private : Symbol(C3_public.p1_private, Decl(privacyGetter.ts, 9, 28), Decl(privacyGetter.ts, 12, 9)) >m1_c3_p1_arg : Symbol(m1_c3_p1_arg, Decl(privacyGetter.ts, 14, 31)) >C1_public : Symbol(C1_public, Decl(privacyGetter.ts, 0, 18)) } private get p2_private() { ->p2_private : Symbol(p2_private, Decl(privacyGetter.ts, 15, 9), Decl(privacyGetter.ts, 19, 9)) +>p2_private : Symbol(C3_public.p2_private, Decl(privacyGetter.ts, 15, 9), Decl(privacyGetter.ts, 19, 9)) return new C1_public(); >C1_public : Symbol(C1_public, Decl(privacyGetter.ts, 0, 18)) } private set p2_private(m1_c3_p2_arg: C1_public) { ->p2_private : Symbol(p2_private, Decl(privacyGetter.ts, 15, 9), Decl(privacyGetter.ts, 19, 9)) +>p2_private : Symbol(C3_public.p2_private, Decl(privacyGetter.ts, 15, 9), Decl(privacyGetter.ts, 19, 9)) >m1_c3_p2_arg : Symbol(m1_c3_p2_arg, Decl(privacyGetter.ts, 21, 31)) >C1_public : Symbol(C1_public, Decl(privacyGetter.ts, 0, 18)) } private get p3_private() { ->p3_private : Symbol(p3_private, Decl(privacyGetter.ts, 22, 9), Decl(privacyGetter.ts, 26, 9)) +>p3_private : Symbol(C3_public.p3_private, Decl(privacyGetter.ts, 22, 9), Decl(privacyGetter.ts, 26, 9)) return new C2_private(); >C2_private : Symbol(C2_private, Decl(privacyGetter.ts, 4, 5)) } private set p3_private(m1_c3_p3_arg: C2_private) { ->p3_private : Symbol(p3_private, Decl(privacyGetter.ts, 22, 9), Decl(privacyGetter.ts, 26, 9)) +>p3_private : Symbol(C3_public.p3_private, Decl(privacyGetter.ts, 22, 9), Decl(privacyGetter.ts, 26, 9)) >m1_c3_p3_arg : Symbol(m1_c3_p3_arg, Decl(privacyGetter.ts, 28, 31)) >C2_private : Symbol(C2_private, Decl(privacyGetter.ts, 4, 5)) } public get p4_public(): C2_private { // error ->p4_public : Symbol(p4_public, Decl(privacyGetter.ts, 29, 9), Decl(privacyGetter.ts, 33, 9)) +>p4_public : Symbol(C3_public.p4_public, Decl(privacyGetter.ts, 29, 9), Decl(privacyGetter.ts, 33, 9)) >C2_private : Symbol(C2_private, Decl(privacyGetter.ts, 4, 5)) return new C2_private(); //error @@ -65,7 +65,7 @@ export module m1 { } public set p4_public(m1_c3_p4_arg: C2_private) { // error ->p4_public : Symbol(p4_public, Decl(privacyGetter.ts, 29, 9), Decl(privacyGetter.ts, 33, 9)) +>p4_public : Symbol(C3_public.p4_public, Decl(privacyGetter.ts, 29, 9), Decl(privacyGetter.ts, 33, 9)) >m1_c3_p4_arg : Symbol(m1_c3_p4_arg, Decl(privacyGetter.ts, 35, 29)) >C2_private : Symbol(C2_private, Decl(privacyGetter.ts, 4, 5)) } @@ -75,46 +75,46 @@ export module m1 { >C4_private : Symbol(C4_private, Decl(privacyGetter.ts, 37, 5)) private get p1_private() { ->p1_private : Symbol(p1_private, Decl(privacyGetter.ts, 39, 22), Decl(privacyGetter.ts, 42, 9)) +>p1_private : Symbol(C4_private.p1_private, Decl(privacyGetter.ts, 39, 22), Decl(privacyGetter.ts, 42, 9)) return new C1_public(); >C1_public : Symbol(C1_public, Decl(privacyGetter.ts, 0, 18)) } private set p1_private(m1_c3_p1_arg: C1_public) { ->p1_private : Symbol(p1_private, Decl(privacyGetter.ts, 39, 22), Decl(privacyGetter.ts, 42, 9)) +>p1_private : Symbol(C4_private.p1_private, Decl(privacyGetter.ts, 39, 22), Decl(privacyGetter.ts, 42, 9)) >m1_c3_p1_arg : Symbol(m1_c3_p1_arg, Decl(privacyGetter.ts, 44, 31)) >C1_public : Symbol(C1_public, Decl(privacyGetter.ts, 0, 18)) } private get p2_private() { ->p2_private : Symbol(p2_private, Decl(privacyGetter.ts, 45, 9), Decl(privacyGetter.ts, 49, 9)) +>p2_private : Symbol(C4_private.p2_private, Decl(privacyGetter.ts, 45, 9), Decl(privacyGetter.ts, 49, 9)) return new C1_public(); >C1_public : Symbol(C1_public, Decl(privacyGetter.ts, 0, 18)) } private set p2_private(m1_c3_p2_arg: C1_public) { ->p2_private : Symbol(p2_private, Decl(privacyGetter.ts, 45, 9), Decl(privacyGetter.ts, 49, 9)) +>p2_private : Symbol(C4_private.p2_private, Decl(privacyGetter.ts, 45, 9), Decl(privacyGetter.ts, 49, 9)) >m1_c3_p2_arg : Symbol(m1_c3_p2_arg, Decl(privacyGetter.ts, 51, 31)) >C1_public : Symbol(C1_public, Decl(privacyGetter.ts, 0, 18)) } private get p3_private() { ->p3_private : Symbol(p3_private, Decl(privacyGetter.ts, 52, 9), Decl(privacyGetter.ts, 56, 9)) +>p3_private : Symbol(C4_private.p3_private, Decl(privacyGetter.ts, 52, 9), Decl(privacyGetter.ts, 56, 9)) return new C2_private(); >C2_private : Symbol(C2_private, Decl(privacyGetter.ts, 4, 5)) } private set p3_private(m1_c3_p3_arg: C2_private) { ->p3_private : Symbol(p3_private, Decl(privacyGetter.ts, 52, 9), Decl(privacyGetter.ts, 56, 9)) +>p3_private : Symbol(C4_private.p3_private, Decl(privacyGetter.ts, 52, 9), Decl(privacyGetter.ts, 56, 9)) >m1_c3_p3_arg : Symbol(m1_c3_p3_arg, Decl(privacyGetter.ts, 58, 31)) >C2_private : Symbol(C2_private, Decl(privacyGetter.ts, 4, 5)) } public get p4_public(): C2_private { ->p4_public : Symbol(p4_public, Decl(privacyGetter.ts, 59, 9), Decl(privacyGetter.ts, 63, 9)) +>p4_public : Symbol(C4_private.p4_public, Decl(privacyGetter.ts, 59, 9), Decl(privacyGetter.ts, 63, 9)) >C2_private : Symbol(C2_private, Decl(privacyGetter.ts, 4, 5)) return new C2_private(); @@ -122,7 +122,7 @@ export module m1 { } public set p4_public(m1_c3_p4_arg: C2_private) { ->p4_public : Symbol(p4_public, Decl(privacyGetter.ts, 59, 9), Decl(privacyGetter.ts, 63, 9)) +>p4_public : Symbol(C4_private.p4_public, Decl(privacyGetter.ts, 59, 9), Decl(privacyGetter.ts, 63, 9)) >m1_c3_p4_arg : Symbol(m1_c3_p4_arg, Decl(privacyGetter.ts, 65, 29)) >C2_private : Symbol(C2_private, Decl(privacyGetter.ts, 4, 5)) } @@ -136,7 +136,7 @@ module m2 { >m2_C1_public : Symbol(m2_C1_public, Decl(privacyGetter.ts, 70, 11)) private f1() { ->f1 : Symbol(f1, Decl(privacyGetter.ts, 71, 31)) +>f1 : Symbol(m2_C1_public.f1, Decl(privacyGetter.ts, 71, 31)) } } @@ -148,46 +148,46 @@ module m2 { >m2_C3_public : Symbol(m2_C3_public, Decl(privacyGetter.ts, 77, 5)) private get p1_private() { ->p1_private : Symbol(p1_private, Decl(privacyGetter.ts, 79, 31), Decl(privacyGetter.ts, 82, 9)) +>p1_private : Symbol(m2_C3_public.p1_private, Decl(privacyGetter.ts, 79, 31), Decl(privacyGetter.ts, 82, 9)) return new m2_C1_public(); >m2_C1_public : Symbol(m2_C1_public, Decl(privacyGetter.ts, 70, 11)) } private set p1_private(m2_c3_p1_arg: m2_C1_public) { ->p1_private : Symbol(p1_private, Decl(privacyGetter.ts, 79, 31), Decl(privacyGetter.ts, 82, 9)) +>p1_private : Symbol(m2_C3_public.p1_private, Decl(privacyGetter.ts, 79, 31), Decl(privacyGetter.ts, 82, 9)) >m2_c3_p1_arg : Symbol(m2_c3_p1_arg, Decl(privacyGetter.ts, 84, 31)) >m2_C1_public : Symbol(m2_C1_public, Decl(privacyGetter.ts, 70, 11)) } private get p2_private() { ->p2_private : Symbol(p2_private, Decl(privacyGetter.ts, 85, 9), Decl(privacyGetter.ts, 89, 9)) +>p2_private : Symbol(m2_C3_public.p2_private, Decl(privacyGetter.ts, 85, 9), Decl(privacyGetter.ts, 89, 9)) return new m2_C1_public(); >m2_C1_public : Symbol(m2_C1_public, Decl(privacyGetter.ts, 70, 11)) } private set p2_private(m2_c3_p2_arg: m2_C1_public) { ->p2_private : Symbol(p2_private, Decl(privacyGetter.ts, 85, 9), Decl(privacyGetter.ts, 89, 9)) +>p2_private : Symbol(m2_C3_public.p2_private, Decl(privacyGetter.ts, 85, 9), Decl(privacyGetter.ts, 89, 9)) >m2_c3_p2_arg : Symbol(m2_c3_p2_arg, Decl(privacyGetter.ts, 91, 31)) >m2_C1_public : Symbol(m2_C1_public, Decl(privacyGetter.ts, 70, 11)) } private get p3_private() { ->p3_private : Symbol(p3_private, Decl(privacyGetter.ts, 92, 9), Decl(privacyGetter.ts, 96, 9)) +>p3_private : Symbol(m2_C3_public.p3_private, Decl(privacyGetter.ts, 92, 9), Decl(privacyGetter.ts, 96, 9)) return new m2_C2_private(); >m2_C2_private : Symbol(m2_C2_private, Decl(privacyGetter.ts, 74, 5)) } private set p3_private(m2_c3_p3_arg: m2_C2_private) { ->p3_private : Symbol(p3_private, Decl(privacyGetter.ts, 92, 9), Decl(privacyGetter.ts, 96, 9)) +>p3_private : Symbol(m2_C3_public.p3_private, Decl(privacyGetter.ts, 92, 9), Decl(privacyGetter.ts, 96, 9)) >m2_c3_p3_arg : Symbol(m2_c3_p3_arg, Decl(privacyGetter.ts, 98, 31)) >m2_C2_private : Symbol(m2_C2_private, Decl(privacyGetter.ts, 74, 5)) } public get p4_public(): m2_C2_private { ->p4_public : Symbol(p4_public, Decl(privacyGetter.ts, 99, 9), Decl(privacyGetter.ts, 103, 9)) +>p4_public : Symbol(m2_C3_public.p4_public, Decl(privacyGetter.ts, 99, 9), Decl(privacyGetter.ts, 103, 9)) >m2_C2_private : Symbol(m2_C2_private, Decl(privacyGetter.ts, 74, 5)) return new m2_C2_private(); @@ -195,7 +195,7 @@ module m2 { } public set p4_public(m2_c3_p4_arg: m2_C2_private) { ->p4_public : Symbol(p4_public, Decl(privacyGetter.ts, 99, 9), Decl(privacyGetter.ts, 103, 9)) +>p4_public : Symbol(m2_C3_public.p4_public, Decl(privacyGetter.ts, 99, 9), Decl(privacyGetter.ts, 103, 9)) >m2_c3_p4_arg : Symbol(m2_c3_p4_arg, Decl(privacyGetter.ts, 105, 29)) >m2_C2_private : Symbol(m2_C2_private, Decl(privacyGetter.ts, 74, 5)) } @@ -205,46 +205,46 @@ module m2 { >m2_C4_private : Symbol(m2_C4_private, Decl(privacyGetter.ts, 107, 5)) private get p1_private() { ->p1_private : Symbol(p1_private, Decl(privacyGetter.ts, 109, 25), Decl(privacyGetter.ts, 112, 9)) +>p1_private : Symbol(m2_C4_private.p1_private, Decl(privacyGetter.ts, 109, 25), Decl(privacyGetter.ts, 112, 9)) return new m2_C1_public(); >m2_C1_public : Symbol(m2_C1_public, Decl(privacyGetter.ts, 70, 11)) } private set p1_private(m2_c3_p1_arg: m2_C1_public) { ->p1_private : Symbol(p1_private, Decl(privacyGetter.ts, 109, 25), Decl(privacyGetter.ts, 112, 9)) +>p1_private : Symbol(m2_C4_private.p1_private, Decl(privacyGetter.ts, 109, 25), Decl(privacyGetter.ts, 112, 9)) >m2_c3_p1_arg : Symbol(m2_c3_p1_arg, Decl(privacyGetter.ts, 114, 31)) >m2_C1_public : Symbol(m2_C1_public, Decl(privacyGetter.ts, 70, 11)) } private get p2_private() { ->p2_private : Symbol(p2_private, Decl(privacyGetter.ts, 115, 9), Decl(privacyGetter.ts, 119, 9)) +>p2_private : Symbol(m2_C4_private.p2_private, Decl(privacyGetter.ts, 115, 9), Decl(privacyGetter.ts, 119, 9)) return new m2_C1_public(); >m2_C1_public : Symbol(m2_C1_public, Decl(privacyGetter.ts, 70, 11)) } private set p2_private(m2_c3_p2_arg: m2_C1_public) { ->p2_private : Symbol(p2_private, Decl(privacyGetter.ts, 115, 9), Decl(privacyGetter.ts, 119, 9)) +>p2_private : Symbol(m2_C4_private.p2_private, Decl(privacyGetter.ts, 115, 9), Decl(privacyGetter.ts, 119, 9)) >m2_c3_p2_arg : Symbol(m2_c3_p2_arg, Decl(privacyGetter.ts, 121, 31)) >m2_C1_public : Symbol(m2_C1_public, Decl(privacyGetter.ts, 70, 11)) } private get p3_private() { ->p3_private : Symbol(p3_private, Decl(privacyGetter.ts, 122, 9), Decl(privacyGetter.ts, 126, 9)) +>p3_private : Symbol(m2_C4_private.p3_private, Decl(privacyGetter.ts, 122, 9), Decl(privacyGetter.ts, 126, 9)) return new m2_C2_private(); >m2_C2_private : Symbol(m2_C2_private, Decl(privacyGetter.ts, 74, 5)) } private set p3_private(m2_c3_p3_arg: m2_C2_private) { ->p3_private : Symbol(p3_private, Decl(privacyGetter.ts, 122, 9), Decl(privacyGetter.ts, 126, 9)) +>p3_private : Symbol(m2_C4_private.p3_private, Decl(privacyGetter.ts, 122, 9), Decl(privacyGetter.ts, 126, 9)) >m2_c3_p3_arg : Symbol(m2_c3_p3_arg, Decl(privacyGetter.ts, 128, 31)) >m2_C2_private : Symbol(m2_C2_private, Decl(privacyGetter.ts, 74, 5)) } public get p4_public(): m2_C2_private { ->p4_public : Symbol(p4_public, Decl(privacyGetter.ts, 129, 9), Decl(privacyGetter.ts, 133, 9)) +>p4_public : Symbol(m2_C4_private.p4_public, Decl(privacyGetter.ts, 129, 9), Decl(privacyGetter.ts, 133, 9)) >m2_C2_private : Symbol(m2_C2_private, Decl(privacyGetter.ts, 74, 5)) return new m2_C2_private(); @@ -252,7 +252,7 @@ module m2 { } public set p4_public(m2_c3_p4_arg: m2_C2_private) { ->p4_public : Symbol(p4_public, Decl(privacyGetter.ts, 129, 9), Decl(privacyGetter.ts, 133, 9)) +>p4_public : Symbol(m2_C4_private.p4_public, Decl(privacyGetter.ts, 129, 9), Decl(privacyGetter.ts, 133, 9)) >m2_c3_p4_arg : Symbol(m2_c3_p4_arg, Decl(privacyGetter.ts, 135, 29)) >m2_C2_private : Symbol(m2_C2_private, Decl(privacyGetter.ts, 74, 5)) } @@ -263,7 +263,7 @@ class C5_private { >C5_private : Symbol(C5_private, Decl(privacyGetter.ts, 138, 1)) private f() { ->f : Symbol(f, Decl(privacyGetter.ts, 140, 18)) +>f : Symbol(C5_private.f, Decl(privacyGetter.ts, 140, 18)) } } @@ -275,46 +275,46 @@ export class C7_public { >C7_public : Symbol(C7_public, Decl(privacyGetter.ts, 146, 1)) private get p1_private() { ->p1_private : Symbol(p1_private, Decl(privacyGetter.ts, 148, 24), Decl(privacyGetter.ts, 151, 5)) +>p1_private : Symbol(C7_public.p1_private, Decl(privacyGetter.ts, 148, 24), Decl(privacyGetter.ts, 151, 5)) return new C6_public(); >C6_public : Symbol(C6_public, Decl(privacyGetter.ts, 143, 1)) } private set p1_private(m1_c3_p1_arg: C6_public) { ->p1_private : Symbol(p1_private, Decl(privacyGetter.ts, 148, 24), Decl(privacyGetter.ts, 151, 5)) +>p1_private : Symbol(C7_public.p1_private, Decl(privacyGetter.ts, 148, 24), Decl(privacyGetter.ts, 151, 5)) >m1_c3_p1_arg : Symbol(m1_c3_p1_arg, Decl(privacyGetter.ts, 153, 27)) >C6_public : Symbol(C6_public, Decl(privacyGetter.ts, 143, 1)) } private get p2_private() { ->p2_private : Symbol(p2_private, Decl(privacyGetter.ts, 154, 5), Decl(privacyGetter.ts, 158, 5)) +>p2_private : Symbol(C7_public.p2_private, Decl(privacyGetter.ts, 154, 5), Decl(privacyGetter.ts, 158, 5)) return new C6_public(); >C6_public : Symbol(C6_public, Decl(privacyGetter.ts, 143, 1)) } private set p2_private(m1_c3_p2_arg: C6_public) { ->p2_private : Symbol(p2_private, Decl(privacyGetter.ts, 154, 5), Decl(privacyGetter.ts, 158, 5)) +>p2_private : Symbol(C7_public.p2_private, Decl(privacyGetter.ts, 154, 5), Decl(privacyGetter.ts, 158, 5)) >m1_c3_p2_arg : Symbol(m1_c3_p2_arg, Decl(privacyGetter.ts, 160, 27)) >C6_public : Symbol(C6_public, Decl(privacyGetter.ts, 143, 1)) } private get p3_private() { ->p3_private : Symbol(p3_private, Decl(privacyGetter.ts, 161, 5), Decl(privacyGetter.ts, 165, 5)) +>p3_private : Symbol(C7_public.p3_private, Decl(privacyGetter.ts, 161, 5), Decl(privacyGetter.ts, 165, 5)) return new C5_private(); >C5_private : Symbol(C5_private, Decl(privacyGetter.ts, 138, 1)) } private set p3_private(m1_c3_p3_arg: C5_private) { ->p3_private : Symbol(p3_private, Decl(privacyGetter.ts, 161, 5), Decl(privacyGetter.ts, 165, 5)) +>p3_private : Symbol(C7_public.p3_private, Decl(privacyGetter.ts, 161, 5), Decl(privacyGetter.ts, 165, 5)) >m1_c3_p3_arg : Symbol(m1_c3_p3_arg, Decl(privacyGetter.ts, 167, 27)) >C5_private : Symbol(C5_private, Decl(privacyGetter.ts, 138, 1)) } public get p4_public(): C5_private { // error ->p4_public : Symbol(p4_public, Decl(privacyGetter.ts, 168, 5), Decl(privacyGetter.ts, 172, 5)) +>p4_public : Symbol(C7_public.p4_public, Decl(privacyGetter.ts, 168, 5), Decl(privacyGetter.ts, 172, 5)) >C5_private : Symbol(C5_private, Decl(privacyGetter.ts, 138, 1)) return new C5_private(); //error @@ -322,7 +322,7 @@ export class C7_public { } public set p4_public(m1_c3_p4_arg: C5_private) { // error ->p4_public : Symbol(p4_public, Decl(privacyGetter.ts, 168, 5), Decl(privacyGetter.ts, 172, 5)) +>p4_public : Symbol(C7_public.p4_public, Decl(privacyGetter.ts, 168, 5), Decl(privacyGetter.ts, 172, 5)) >m1_c3_p4_arg : Symbol(m1_c3_p4_arg, Decl(privacyGetter.ts, 174, 25)) >C5_private : Symbol(C5_private, Decl(privacyGetter.ts, 138, 1)) } @@ -332,46 +332,46 @@ class C8_private { >C8_private : Symbol(C8_private, Decl(privacyGetter.ts, 176, 1)) private get p1_private() { ->p1_private : Symbol(p1_private, Decl(privacyGetter.ts, 178, 18), Decl(privacyGetter.ts, 181, 5)) +>p1_private : Symbol(C8_private.p1_private, Decl(privacyGetter.ts, 178, 18), Decl(privacyGetter.ts, 181, 5)) return new C6_public(); >C6_public : Symbol(C6_public, Decl(privacyGetter.ts, 143, 1)) } private set p1_private(m1_c3_p1_arg: C6_public) { ->p1_private : Symbol(p1_private, Decl(privacyGetter.ts, 178, 18), Decl(privacyGetter.ts, 181, 5)) +>p1_private : Symbol(C8_private.p1_private, Decl(privacyGetter.ts, 178, 18), Decl(privacyGetter.ts, 181, 5)) >m1_c3_p1_arg : Symbol(m1_c3_p1_arg, Decl(privacyGetter.ts, 183, 27)) >C6_public : Symbol(C6_public, Decl(privacyGetter.ts, 143, 1)) } private get p2_private() { ->p2_private : Symbol(p2_private, Decl(privacyGetter.ts, 184, 5), Decl(privacyGetter.ts, 188, 5)) +>p2_private : Symbol(C8_private.p2_private, Decl(privacyGetter.ts, 184, 5), Decl(privacyGetter.ts, 188, 5)) return new C6_public(); >C6_public : Symbol(C6_public, Decl(privacyGetter.ts, 143, 1)) } private set p2_private(m1_c3_p2_arg: C6_public) { ->p2_private : Symbol(p2_private, Decl(privacyGetter.ts, 184, 5), Decl(privacyGetter.ts, 188, 5)) +>p2_private : Symbol(C8_private.p2_private, Decl(privacyGetter.ts, 184, 5), Decl(privacyGetter.ts, 188, 5)) >m1_c3_p2_arg : Symbol(m1_c3_p2_arg, Decl(privacyGetter.ts, 190, 27)) >C6_public : Symbol(C6_public, Decl(privacyGetter.ts, 143, 1)) } private get p3_private() { ->p3_private : Symbol(p3_private, Decl(privacyGetter.ts, 191, 5), Decl(privacyGetter.ts, 195, 5)) +>p3_private : Symbol(C8_private.p3_private, Decl(privacyGetter.ts, 191, 5), Decl(privacyGetter.ts, 195, 5)) return new C5_private(); >C5_private : Symbol(C5_private, Decl(privacyGetter.ts, 138, 1)) } private set p3_private(m1_c3_p3_arg: C5_private) { ->p3_private : Symbol(p3_private, Decl(privacyGetter.ts, 191, 5), Decl(privacyGetter.ts, 195, 5)) +>p3_private : Symbol(C8_private.p3_private, Decl(privacyGetter.ts, 191, 5), Decl(privacyGetter.ts, 195, 5)) >m1_c3_p3_arg : Symbol(m1_c3_p3_arg, Decl(privacyGetter.ts, 197, 27)) >C5_private : Symbol(C5_private, Decl(privacyGetter.ts, 138, 1)) } public get p4_public(): C5_private { ->p4_public : Symbol(p4_public, Decl(privacyGetter.ts, 198, 5), Decl(privacyGetter.ts, 202, 5)) +>p4_public : Symbol(C8_private.p4_public, Decl(privacyGetter.ts, 198, 5), Decl(privacyGetter.ts, 202, 5)) >C5_private : Symbol(C5_private, Decl(privacyGetter.ts, 138, 1)) return new C5_private(); @@ -379,7 +379,7 @@ class C8_private { } public set p4_public(m1_c3_p4_arg: C5_private) { ->p4_public : Symbol(p4_public, Decl(privacyGetter.ts, 198, 5), Decl(privacyGetter.ts, 202, 5)) +>p4_public : Symbol(C8_private.p4_public, Decl(privacyGetter.ts, 198, 5), Decl(privacyGetter.ts, 202, 5)) >m1_c3_p4_arg : Symbol(m1_c3_p4_arg, Decl(privacyGetter.ts, 204, 25)) >C5_private : Symbol(C5_private, Decl(privacyGetter.ts, 138, 1)) } diff --git a/tests/baselines/reference/privacyGloClass.symbols b/tests/baselines/reference/privacyGloClass.symbols index 76b160f81e9..af548294fed 100644 --- a/tests/baselines/reference/privacyGloClass.symbols +++ b/tests/baselines/reference/privacyGloClass.symbols @@ -14,7 +14,7 @@ module m1 { >m1_c_public : Symbol(m1_c_public, Decl(privacyGloClass.ts, 5, 5)) private f1() { ->f1 : Symbol(f1, Decl(privacyGloClass.ts, 7, 30)) +>f1 : Symbol(m1_c_public.f1, Decl(privacyGloClass.ts, 7, 30)) } } @@ -90,7 +90,7 @@ class glo_c_public { >glo_c_public : Symbol(glo_c_public, Decl(privacyGloClass.ts, 44, 1)) private f1() { ->f1 : Symbol(f1, Decl(privacyGloClass.ts, 46, 20)) +>f1 : Symbol(glo_c_public.f1, Decl(privacyGloClass.ts, 46, 20)) } } diff --git a/tests/baselines/reference/privacyGloFunc.symbols b/tests/baselines/reference/privacyGloFunc.symbols index dd76e2e627f..f3d753aacba 100644 --- a/tests/baselines/reference/privacyGloFunc.symbols +++ b/tests/baselines/reference/privacyGloFunc.symbols @@ -6,7 +6,7 @@ export module m1 { >C1_public : Symbol(C1_public, Decl(privacyGloFunc.ts, 0, 18)) private f1() { ->f1 : Symbol(f1, Decl(privacyGloFunc.ts, 1, 28)) +>f1 : Symbol(C1_public.f1, Decl(privacyGloFunc.ts, 1, 28)) } } @@ -30,59 +30,59 @@ export module m1 { } private f1_private(m1_c3_f1_arg: C1_public) { ->f1_private : Symbol(f1_private, Decl(privacyGloFunc.ts, 13, 9)) +>f1_private : Symbol(C3_public.f1_private, Decl(privacyGloFunc.ts, 13, 9)) >m1_c3_f1_arg : Symbol(m1_c3_f1_arg, Decl(privacyGloFunc.ts, 15, 27)) >C1_public : Symbol(C1_public, Decl(privacyGloFunc.ts, 0, 18)) } public f2_public(m1_c3_f2_arg: C1_public) { ->f2_public : Symbol(f2_public, Decl(privacyGloFunc.ts, 16, 9)) +>f2_public : Symbol(C3_public.f2_public, Decl(privacyGloFunc.ts, 16, 9)) >m1_c3_f2_arg : Symbol(m1_c3_f2_arg, Decl(privacyGloFunc.ts, 18, 25)) >C1_public : Symbol(C1_public, Decl(privacyGloFunc.ts, 0, 18)) } private f3_private(m1_c3_f3_arg: C2_private) { ->f3_private : Symbol(f3_private, Decl(privacyGloFunc.ts, 19, 9)) +>f3_private : Symbol(C3_public.f3_private, Decl(privacyGloFunc.ts, 19, 9)) >m1_c3_f3_arg : Symbol(m1_c3_f3_arg, Decl(privacyGloFunc.ts, 21, 27)) >C2_private : Symbol(C2_private, Decl(privacyGloFunc.ts, 4, 5)) } public f4_public(m1_c3_f4_arg: C2_private) { // error ->f4_public : Symbol(f4_public, Decl(privacyGloFunc.ts, 22, 9)) +>f4_public : Symbol(C3_public.f4_public, Decl(privacyGloFunc.ts, 22, 9)) >m1_c3_f4_arg : Symbol(m1_c3_f4_arg, Decl(privacyGloFunc.ts, 24, 25)) >C2_private : Symbol(C2_private, Decl(privacyGloFunc.ts, 4, 5)) } private f5_private() { ->f5_private : Symbol(f5_private, Decl(privacyGloFunc.ts, 25, 9)) +>f5_private : Symbol(C3_public.f5_private, Decl(privacyGloFunc.ts, 25, 9)) return new C1_public(); >C1_public : Symbol(C1_public, Decl(privacyGloFunc.ts, 0, 18)) } public f6_public() { ->f6_public : Symbol(f6_public, Decl(privacyGloFunc.ts, 29, 9)) +>f6_public : Symbol(C3_public.f6_public, Decl(privacyGloFunc.ts, 29, 9)) return new C1_public(); >C1_public : Symbol(C1_public, Decl(privacyGloFunc.ts, 0, 18)) } private f7_private() { ->f7_private : Symbol(f7_private, Decl(privacyGloFunc.ts, 33, 9)) +>f7_private : Symbol(C3_public.f7_private, Decl(privacyGloFunc.ts, 33, 9)) return new C2_private(); >C2_private : Symbol(C2_private, Decl(privacyGloFunc.ts, 4, 5)) } public f8_public() { ->f8_public : Symbol(f8_public, Decl(privacyGloFunc.ts, 37, 9)) +>f8_public : Symbol(C3_public.f8_public, Decl(privacyGloFunc.ts, 37, 9)) return new C2_private(); // error >C2_private : Symbol(C2_private, Decl(privacyGloFunc.ts, 4, 5)) } private f9_private(): C1_public { ->f9_private : Symbol(f9_private, Decl(privacyGloFunc.ts, 41, 9)) +>f9_private : Symbol(C3_public.f9_private, Decl(privacyGloFunc.ts, 41, 9)) >C1_public : Symbol(C1_public, Decl(privacyGloFunc.ts, 0, 18)) return new C1_public(); @@ -90,7 +90,7 @@ export module m1 { } public f10_public(): C1_public { ->f10_public : Symbol(f10_public, Decl(privacyGloFunc.ts, 45, 9)) +>f10_public : Symbol(C3_public.f10_public, Decl(privacyGloFunc.ts, 45, 9)) >C1_public : Symbol(C1_public, Decl(privacyGloFunc.ts, 0, 18)) return new C1_public(); @@ -98,7 +98,7 @@ export module m1 { } private f11_private(): C2_private { ->f11_private : Symbol(f11_private, Decl(privacyGloFunc.ts, 49, 9)) +>f11_private : Symbol(C3_public.f11_private, Decl(privacyGloFunc.ts, 49, 9)) >C2_private : Symbol(C2_private, Decl(privacyGloFunc.ts, 4, 5)) return new C2_private(); @@ -106,7 +106,7 @@ export module m1 { } public f12_public(): C2_private { // error ->f12_public : Symbol(f12_public, Decl(privacyGloFunc.ts, 53, 9)) +>f12_public : Symbol(C3_public.f12_public, Decl(privacyGloFunc.ts, 53, 9)) >C2_private : Symbol(C2_private, Decl(privacyGloFunc.ts, 4, 5)) return new C2_private(); //error @@ -129,53 +129,53 @@ export module m1 { >m1_c4_c1_2 : Symbol(m1_c4_c1_2, Decl(privacyGloFunc.ts, 63, 21)) } private f1_private(m1_c4_f1_arg: C1_public) { ->f1_private : Symbol(f1_private, Decl(privacyGloFunc.ts, 64, 9)) +>f1_private : Symbol(C4_private.f1_private, Decl(privacyGloFunc.ts, 64, 9)) >m1_c4_f1_arg : Symbol(m1_c4_f1_arg, Decl(privacyGloFunc.ts, 65, 27)) >C1_public : Symbol(C1_public, Decl(privacyGloFunc.ts, 0, 18)) } public f2_public(m1_c4_f2_arg: C1_public) { ->f2_public : Symbol(f2_public, Decl(privacyGloFunc.ts, 66, 9)) +>f2_public : Symbol(C4_private.f2_public, Decl(privacyGloFunc.ts, 66, 9)) >m1_c4_f2_arg : Symbol(m1_c4_f2_arg, Decl(privacyGloFunc.ts, 68, 25)) >C1_public : Symbol(C1_public, Decl(privacyGloFunc.ts, 0, 18)) } private f3_private(m1_c4_f3_arg: C2_private) { ->f3_private : Symbol(f3_private, Decl(privacyGloFunc.ts, 69, 9)) +>f3_private : Symbol(C4_private.f3_private, Decl(privacyGloFunc.ts, 69, 9)) >m1_c4_f3_arg : Symbol(m1_c4_f3_arg, Decl(privacyGloFunc.ts, 71, 27)) >C2_private : Symbol(C2_private, Decl(privacyGloFunc.ts, 4, 5)) } public f4_public(m1_c4_f4_arg: C2_private) { ->f4_public : Symbol(f4_public, Decl(privacyGloFunc.ts, 72, 9)) +>f4_public : Symbol(C4_private.f4_public, Decl(privacyGloFunc.ts, 72, 9)) >m1_c4_f4_arg : Symbol(m1_c4_f4_arg, Decl(privacyGloFunc.ts, 74, 25)) >C2_private : Symbol(C2_private, Decl(privacyGloFunc.ts, 4, 5)) } private f5_private() { ->f5_private : Symbol(f5_private, Decl(privacyGloFunc.ts, 75, 9)) +>f5_private : Symbol(C4_private.f5_private, Decl(privacyGloFunc.ts, 75, 9)) return new C1_public(); >C1_public : Symbol(C1_public, Decl(privacyGloFunc.ts, 0, 18)) } public f6_public() { ->f6_public : Symbol(f6_public, Decl(privacyGloFunc.ts, 80, 9)) +>f6_public : Symbol(C4_private.f6_public, Decl(privacyGloFunc.ts, 80, 9)) return new C1_public(); >C1_public : Symbol(C1_public, Decl(privacyGloFunc.ts, 0, 18)) } private f7_private() { ->f7_private : Symbol(f7_private, Decl(privacyGloFunc.ts, 84, 9)) +>f7_private : Symbol(C4_private.f7_private, Decl(privacyGloFunc.ts, 84, 9)) return new C2_private(); >C2_private : Symbol(C2_private, Decl(privacyGloFunc.ts, 4, 5)) } public f8_public() { ->f8_public : Symbol(f8_public, Decl(privacyGloFunc.ts, 88, 9)) +>f8_public : Symbol(C4_private.f8_public, Decl(privacyGloFunc.ts, 88, 9)) return new C2_private(); >C2_private : Symbol(C2_private, Decl(privacyGloFunc.ts, 4, 5)) @@ -183,7 +183,7 @@ export module m1 { private f9_private(): C1_public { ->f9_private : Symbol(f9_private, Decl(privacyGloFunc.ts, 92, 9)) +>f9_private : Symbol(C4_private.f9_private, Decl(privacyGloFunc.ts, 92, 9)) >C1_public : Symbol(C1_public, Decl(privacyGloFunc.ts, 0, 18)) return new C1_public(); @@ -191,7 +191,7 @@ export module m1 { } public f10_public(): C1_public { ->f10_public : Symbol(f10_public, Decl(privacyGloFunc.ts, 97, 9)) +>f10_public : Symbol(C4_private.f10_public, Decl(privacyGloFunc.ts, 97, 9)) >C1_public : Symbol(C1_public, Decl(privacyGloFunc.ts, 0, 18)) return new C1_public(); @@ -199,7 +199,7 @@ export module m1 { } private f11_private(): C2_private { ->f11_private : Symbol(f11_private, Decl(privacyGloFunc.ts, 101, 9)) +>f11_private : Symbol(C4_private.f11_private, Decl(privacyGloFunc.ts, 101, 9)) >C2_private : Symbol(C2_private, Decl(privacyGloFunc.ts, 4, 5)) return new C2_private(); @@ -207,7 +207,7 @@ export module m1 { } public f12_public(): C2_private { ->f12_public : Symbol(f12_public, Decl(privacyGloFunc.ts, 105, 9)) +>f12_public : Symbol(C4_private.f12_public, Decl(privacyGloFunc.ts, 105, 9)) >C2_private : Symbol(C2_private, Decl(privacyGloFunc.ts, 4, 5)) return new C2_private(); @@ -344,7 +344,7 @@ module m2 { >m2_C1_public : Symbol(m2_C1_public, Decl(privacyGloFunc.ts, 178, 11)) private f() { ->f : Symbol(f, Decl(privacyGloFunc.ts, 179, 31)) +>f : Symbol(m2_C1_public.f, Decl(privacyGloFunc.ts, 179, 31)) } } @@ -368,59 +368,59 @@ module m2 { } private f1_private(m2_c3_f1_arg: m2_C1_public) { ->f1_private : Symbol(f1_private, Decl(privacyGloFunc.ts, 191, 9)) +>f1_private : Symbol(m2_C3_public.f1_private, Decl(privacyGloFunc.ts, 191, 9)) >m2_c3_f1_arg : Symbol(m2_c3_f1_arg, Decl(privacyGloFunc.ts, 193, 27)) >m2_C1_public : Symbol(m2_C1_public, Decl(privacyGloFunc.ts, 178, 11)) } public f2_public(m2_c3_f2_arg: m2_C1_public) { ->f2_public : Symbol(f2_public, Decl(privacyGloFunc.ts, 194, 9)) +>f2_public : Symbol(m2_C3_public.f2_public, Decl(privacyGloFunc.ts, 194, 9)) >m2_c3_f2_arg : Symbol(m2_c3_f2_arg, Decl(privacyGloFunc.ts, 196, 25)) >m2_C1_public : Symbol(m2_C1_public, Decl(privacyGloFunc.ts, 178, 11)) } private f3_private(m2_c3_f3_arg: m2_C2_private) { ->f3_private : Symbol(f3_private, Decl(privacyGloFunc.ts, 197, 9)) +>f3_private : Symbol(m2_C3_public.f3_private, Decl(privacyGloFunc.ts, 197, 9)) >m2_c3_f3_arg : Symbol(m2_c3_f3_arg, Decl(privacyGloFunc.ts, 199, 27)) >m2_C2_private : Symbol(m2_C2_private, Decl(privacyGloFunc.ts, 182, 5)) } public f4_public(m2_c3_f4_arg: m2_C2_private) { ->f4_public : Symbol(f4_public, Decl(privacyGloFunc.ts, 200, 9)) +>f4_public : Symbol(m2_C3_public.f4_public, Decl(privacyGloFunc.ts, 200, 9)) >m2_c3_f4_arg : Symbol(m2_c3_f4_arg, Decl(privacyGloFunc.ts, 202, 25)) >m2_C2_private : Symbol(m2_C2_private, Decl(privacyGloFunc.ts, 182, 5)) } private f5_private() { ->f5_private : Symbol(f5_private, Decl(privacyGloFunc.ts, 203, 9)) +>f5_private : Symbol(m2_C3_public.f5_private, Decl(privacyGloFunc.ts, 203, 9)) return new m2_C1_public(); >m2_C1_public : Symbol(m2_C1_public, Decl(privacyGloFunc.ts, 178, 11)) } public f6_public() { ->f6_public : Symbol(f6_public, Decl(privacyGloFunc.ts, 207, 9)) +>f6_public : Symbol(m2_C3_public.f6_public, Decl(privacyGloFunc.ts, 207, 9)) return new m2_C1_public(); >m2_C1_public : Symbol(m2_C1_public, Decl(privacyGloFunc.ts, 178, 11)) } private f7_private() { ->f7_private : Symbol(f7_private, Decl(privacyGloFunc.ts, 211, 9)) +>f7_private : Symbol(m2_C3_public.f7_private, Decl(privacyGloFunc.ts, 211, 9)) return new m2_C2_private(); >m2_C2_private : Symbol(m2_C2_private, Decl(privacyGloFunc.ts, 182, 5)) } public f8_public() { ->f8_public : Symbol(f8_public, Decl(privacyGloFunc.ts, 215, 9)) +>f8_public : Symbol(m2_C3_public.f8_public, Decl(privacyGloFunc.ts, 215, 9)) return new m2_C2_private(); >m2_C2_private : Symbol(m2_C2_private, Decl(privacyGloFunc.ts, 182, 5)) } private f9_private(): m2_C1_public { ->f9_private : Symbol(f9_private, Decl(privacyGloFunc.ts, 219, 9)) +>f9_private : Symbol(m2_C3_public.f9_private, Decl(privacyGloFunc.ts, 219, 9)) >m2_C1_public : Symbol(m2_C1_public, Decl(privacyGloFunc.ts, 178, 11)) return new m2_C1_public(); @@ -428,7 +428,7 @@ module m2 { } public f10_public(): m2_C1_public { ->f10_public : Symbol(f10_public, Decl(privacyGloFunc.ts, 223, 9)) +>f10_public : Symbol(m2_C3_public.f10_public, Decl(privacyGloFunc.ts, 223, 9)) >m2_C1_public : Symbol(m2_C1_public, Decl(privacyGloFunc.ts, 178, 11)) return new m2_C1_public(); @@ -436,7 +436,7 @@ module m2 { } private f11_private(): m2_C2_private { ->f11_private : Symbol(f11_private, Decl(privacyGloFunc.ts, 227, 9)) +>f11_private : Symbol(m2_C3_public.f11_private, Decl(privacyGloFunc.ts, 227, 9)) >m2_C2_private : Symbol(m2_C2_private, Decl(privacyGloFunc.ts, 182, 5)) return new m2_C2_private(); @@ -444,7 +444,7 @@ module m2 { } public f12_public(): m2_C2_private { ->f12_public : Symbol(f12_public, Decl(privacyGloFunc.ts, 231, 9)) +>f12_public : Symbol(m2_C3_public.f12_public, Decl(privacyGloFunc.ts, 231, 9)) >m2_C2_private : Symbol(m2_C2_private, Decl(privacyGloFunc.ts, 182, 5)) return new m2_C2_private(); @@ -468,53 +468,53 @@ module m2 { } private f1_private(m2_c4_f1_arg: m2_C1_public) { ->f1_private : Symbol(f1_private, Decl(privacyGloFunc.ts, 242, 9)) +>f1_private : Symbol(m2_C4_private.f1_private, Decl(privacyGloFunc.ts, 242, 9)) >m2_c4_f1_arg : Symbol(m2_c4_f1_arg, Decl(privacyGloFunc.ts, 244, 27)) >m2_C1_public : Symbol(m2_C1_public, Decl(privacyGloFunc.ts, 178, 11)) } public f2_public(m2_c4_f2_arg: m2_C1_public) { ->f2_public : Symbol(f2_public, Decl(privacyGloFunc.ts, 245, 9)) +>f2_public : Symbol(m2_C4_private.f2_public, Decl(privacyGloFunc.ts, 245, 9)) >m2_c4_f2_arg : Symbol(m2_c4_f2_arg, Decl(privacyGloFunc.ts, 247, 25)) >m2_C1_public : Symbol(m2_C1_public, Decl(privacyGloFunc.ts, 178, 11)) } private f3_private(m2_c4_f3_arg: m2_C2_private) { ->f3_private : Symbol(f3_private, Decl(privacyGloFunc.ts, 248, 9)) +>f3_private : Symbol(m2_C4_private.f3_private, Decl(privacyGloFunc.ts, 248, 9)) >m2_c4_f3_arg : Symbol(m2_c4_f3_arg, Decl(privacyGloFunc.ts, 250, 27)) >m2_C2_private : Symbol(m2_C2_private, Decl(privacyGloFunc.ts, 182, 5)) } public f4_public(m2_c4_f4_arg: m2_C2_private) { ->f4_public : Symbol(f4_public, Decl(privacyGloFunc.ts, 251, 9)) +>f4_public : Symbol(m2_C4_private.f4_public, Decl(privacyGloFunc.ts, 251, 9)) >m2_c4_f4_arg : Symbol(m2_c4_f4_arg, Decl(privacyGloFunc.ts, 253, 25)) >m2_C2_private : Symbol(m2_C2_private, Decl(privacyGloFunc.ts, 182, 5)) } private f5_private() { ->f5_private : Symbol(f5_private, Decl(privacyGloFunc.ts, 254, 9)) +>f5_private : Symbol(m2_C4_private.f5_private, Decl(privacyGloFunc.ts, 254, 9)) return new m2_C1_public(); >m2_C1_public : Symbol(m2_C1_public, Decl(privacyGloFunc.ts, 178, 11)) } public f6_public() { ->f6_public : Symbol(f6_public, Decl(privacyGloFunc.ts, 259, 9)) +>f6_public : Symbol(m2_C4_private.f6_public, Decl(privacyGloFunc.ts, 259, 9)) return new m2_C1_public(); >m2_C1_public : Symbol(m2_C1_public, Decl(privacyGloFunc.ts, 178, 11)) } private f7_private() { ->f7_private : Symbol(f7_private, Decl(privacyGloFunc.ts, 263, 9)) +>f7_private : Symbol(m2_C4_private.f7_private, Decl(privacyGloFunc.ts, 263, 9)) return new m2_C2_private(); >m2_C2_private : Symbol(m2_C2_private, Decl(privacyGloFunc.ts, 182, 5)) } public f8_public() { ->f8_public : Symbol(f8_public, Decl(privacyGloFunc.ts, 267, 9)) +>f8_public : Symbol(m2_C4_private.f8_public, Decl(privacyGloFunc.ts, 267, 9)) return new m2_C2_private(); >m2_C2_private : Symbol(m2_C2_private, Decl(privacyGloFunc.ts, 182, 5)) @@ -522,7 +522,7 @@ module m2 { private f9_private(): m2_C1_public { ->f9_private : Symbol(f9_private, Decl(privacyGloFunc.ts, 271, 9)) +>f9_private : Symbol(m2_C4_private.f9_private, Decl(privacyGloFunc.ts, 271, 9)) >m2_C1_public : Symbol(m2_C1_public, Decl(privacyGloFunc.ts, 178, 11)) return new m2_C1_public(); @@ -530,7 +530,7 @@ module m2 { } public f10_public(): m2_C1_public { ->f10_public : Symbol(f10_public, Decl(privacyGloFunc.ts, 276, 9)) +>f10_public : Symbol(m2_C4_private.f10_public, Decl(privacyGloFunc.ts, 276, 9)) >m2_C1_public : Symbol(m2_C1_public, Decl(privacyGloFunc.ts, 178, 11)) return new m2_C1_public(); @@ -538,7 +538,7 @@ module m2 { } private f11_private(): m2_C2_private { ->f11_private : Symbol(f11_private, Decl(privacyGloFunc.ts, 280, 9)) +>f11_private : Symbol(m2_C4_private.f11_private, Decl(privacyGloFunc.ts, 280, 9)) >m2_C2_private : Symbol(m2_C2_private, Decl(privacyGloFunc.ts, 182, 5)) return new m2_C2_private(); @@ -546,7 +546,7 @@ module m2 { } public f12_public(): m2_C2_private { ->f12_public : Symbol(f12_public, Decl(privacyGloFunc.ts, 284, 9)) +>f12_public : Symbol(m2_C4_private.f12_public, Decl(privacyGloFunc.ts, 284, 9)) >m2_C2_private : Symbol(m2_C2_private, Decl(privacyGloFunc.ts, 182, 5)) return new m2_C2_private(); @@ -680,7 +680,7 @@ class C5_private { >C5_private : Symbol(C5_private, Decl(privacyGloFunc.ts, 355, 1)) private f() { ->f : Symbol(f, Decl(privacyGloFunc.ts, 357, 18)) +>f : Symbol(C5_private.f, Decl(privacyGloFunc.ts, 357, 18)) } } @@ -703,59 +703,59 @@ export class C7_public { >c7_c1_2 : Symbol(c7_c1_2, Decl(privacyGloFunc.ts, 368, 17)) } private f1_private(c7_f1_arg: C6_public) { ->f1_private : Symbol(f1_private, Decl(privacyGloFunc.ts, 369, 5)) +>f1_private : Symbol(C7_public.f1_private, Decl(privacyGloFunc.ts, 369, 5)) >c7_f1_arg : Symbol(c7_f1_arg, Decl(privacyGloFunc.ts, 370, 23)) >C6_public : Symbol(C6_public, Decl(privacyGloFunc.ts, 360, 1)) } public f2_public(c7_f2_arg: C6_public) { ->f2_public : Symbol(f2_public, Decl(privacyGloFunc.ts, 371, 5)) +>f2_public : Symbol(C7_public.f2_public, Decl(privacyGloFunc.ts, 371, 5)) >c7_f2_arg : Symbol(c7_f2_arg, Decl(privacyGloFunc.ts, 373, 21)) >C6_public : Symbol(C6_public, Decl(privacyGloFunc.ts, 360, 1)) } private f3_private(c7_f3_arg: C5_private) { ->f3_private : Symbol(f3_private, Decl(privacyGloFunc.ts, 374, 5)) +>f3_private : Symbol(C7_public.f3_private, Decl(privacyGloFunc.ts, 374, 5)) >c7_f3_arg : Symbol(c7_f3_arg, Decl(privacyGloFunc.ts, 376, 23)) >C5_private : Symbol(C5_private, Decl(privacyGloFunc.ts, 355, 1)) } public f4_public(c7_f4_arg: C5_private) { //error ->f4_public : Symbol(f4_public, Decl(privacyGloFunc.ts, 377, 5)) +>f4_public : Symbol(C7_public.f4_public, Decl(privacyGloFunc.ts, 377, 5)) >c7_f4_arg : Symbol(c7_f4_arg, Decl(privacyGloFunc.ts, 379, 21)) >C5_private : Symbol(C5_private, Decl(privacyGloFunc.ts, 355, 1)) } private f5_private() { ->f5_private : Symbol(f5_private, Decl(privacyGloFunc.ts, 380, 5)) +>f5_private : Symbol(C7_public.f5_private, Decl(privacyGloFunc.ts, 380, 5)) return new C6_public(); >C6_public : Symbol(C6_public, Decl(privacyGloFunc.ts, 360, 1)) } public f6_public() { ->f6_public : Symbol(f6_public, Decl(privacyGloFunc.ts, 384, 5)) +>f6_public : Symbol(C7_public.f6_public, Decl(privacyGloFunc.ts, 384, 5)) return new C6_public(); >C6_public : Symbol(C6_public, Decl(privacyGloFunc.ts, 360, 1)) } private f7_private() { ->f7_private : Symbol(f7_private, Decl(privacyGloFunc.ts, 388, 5)) +>f7_private : Symbol(C7_public.f7_private, Decl(privacyGloFunc.ts, 388, 5)) return new C5_private(); >C5_private : Symbol(C5_private, Decl(privacyGloFunc.ts, 355, 1)) } public f8_public() { ->f8_public : Symbol(f8_public, Decl(privacyGloFunc.ts, 392, 5)) +>f8_public : Symbol(C7_public.f8_public, Decl(privacyGloFunc.ts, 392, 5)) return new C5_private(); //error >C5_private : Symbol(C5_private, Decl(privacyGloFunc.ts, 355, 1)) } private f9_private(): C6_public { ->f9_private : Symbol(f9_private, Decl(privacyGloFunc.ts, 396, 5)) +>f9_private : Symbol(C7_public.f9_private, Decl(privacyGloFunc.ts, 396, 5)) >C6_public : Symbol(C6_public, Decl(privacyGloFunc.ts, 360, 1)) return new C6_public(); @@ -763,7 +763,7 @@ export class C7_public { } public f10_public(): C6_public { ->f10_public : Symbol(f10_public, Decl(privacyGloFunc.ts, 400, 5)) +>f10_public : Symbol(C7_public.f10_public, Decl(privacyGloFunc.ts, 400, 5)) >C6_public : Symbol(C6_public, Decl(privacyGloFunc.ts, 360, 1)) return new C6_public(); @@ -771,7 +771,7 @@ export class C7_public { } private f11_private(): C5_private { ->f11_private : Symbol(f11_private, Decl(privacyGloFunc.ts, 404, 5)) +>f11_private : Symbol(C7_public.f11_private, Decl(privacyGloFunc.ts, 404, 5)) >C5_private : Symbol(C5_private, Decl(privacyGloFunc.ts, 355, 1)) return new C5_private(); @@ -779,7 +779,7 @@ export class C7_public { } public f12_public(): C5_private { //error ->f12_public : Symbol(f12_public, Decl(privacyGloFunc.ts, 408, 5)) +>f12_public : Symbol(C7_public.f12_public, Decl(privacyGloFunc.ts, 408, 5)) >C5_private : Symbol(C5_private, Decl(privacyGloFunc.ts, 355, 1)) return new C5_private(); //error @@ -803,59 +803,59 @@ class C8_private { } private f1_private(c8_f1_arg: C6_public) { ->f1_private : Symbol(f1_private, Decl(privacyGloFunc.ts, 419, 5)) +>f1_private : Symbol(C8_private.f1_private, Decl(privacyGloFunc.ts, 419, 5)) >c8_f1_arg : Symbol(c8_f1_arg, Decl(privacyGloFunc.ts, 421, 23)) >C6_public : Symbol(C6_public, Decl(privacyGloFunc.ts, 360, 1)) } public f2_public(c8_f2_arg: C6_public) { ->f2_public : Symbol(f2_public, Decl(privacyGloFunc.ts, 422, 5)) +>f2_public : Symbol(C8_private.f2_public, Decl(privacyGloFunc.ts, 422, 5)) >c8_f2_arg : Symbol(c8_f2_arg, Decl(privacyGloFunc.ts, 424, 21)) >C6_public : Symbol(C6_public, Decl(privacyGloFunc.ts, 360, 1)) } private f3_private(c8_f3_arg: C5_private) { ->f3_private : Symbol(f3_private, Decl(privacyGloFunc.ts, 425, 5)) +>f3_private : Symbol(C8_private.f3_private, Decl(privacyGloFunc.ts, 425, 5)) >c8_f3_arg : Symbol(c8_f3_arg, Decl(privacyGloFunc.ts, 427, 23)) >C5_private : Symbol(C5_private, Decl(privacyGloFunc.ts, 355, 1)) } public f4_public(c8_f4_arg: C5_private) { ->f4_public : Symbol(f4_public, Decl(privacyGloFunc.ts, 428, 5)) +>f4_public : Symbol(C8_private.f4_public, Decl(privacyGloFunc.ts, 428, 5)) >c8_f4_arg : Symbol(c8_f4_arg, Decl(privacyGloFunc.ts, 430, 21)) >C5_private : Symbol(C5_private, Decl(privacyGloFunc.ts, 355, 1)) } private f5_private() { ->f5_private : Symbol(f5_private, Decl(privacyGloFunc.ts, 431, 5)) +>f5_private : Symbol(C8_private.f5_private, Decl(privacyGloFunc.ts, 431, 5)) return new C6_public(); >C6_public : Symbol(C6_public, Decl(privacyGloFunc.ts, 360, 1)) } public f6_public() { ->f6_public : Symbol(f6_public, Decl(privacyGloFunc.ts, 435, 5)) +>f6_public : Symbol(C8_private.f6_public, Decl(privacyGloFunc.ts, 435, 5)) return new C6_public(); >C6_public : Symbol(C6_public, Decl(privacyGloFunc.ts, 360, 1)) } private f7_private() { ->f7_private : Symbol(f7_private, Decl(privacyGloFunc.ts, 439, 5)) +>f7_private : Symbol(C8_private.f7_private, Decl(privacyGloFunc.ts, 439, 5)) return new C5_private(); >C5_private : Symbol(C5_private, Decl(privacyGloFunc.ts, 355, 1)) } public f8_public() { ->f8_public : Symbol(f8_public, Decl(privacyGloFunc.ts, 443, 5)) +>f8_public : Symbol(C8_private.f8_public, Decl(privacyGloFunc.ts, 443, 5)) return new C5_private(); >C5_private : Symbol(C5_private, Decl(privacyGloFunc.ts, 355, 1)) } private f9_private(): C6_public { ->f9_private : Symbol(f9_private, Decl(privacyGloFunc.ts, 447, 5)) +>f9_private : Symbol(C8_private.f9_private, Decl(privacyGloFunc.ts, 447, 5)) >C6_public : Symbol(C6_public, Decl(privacyGloFunc.ts, 360, 1)) return new C6_public(); @@ -863,7 +863,7 @@ class C8_private { } public f10_public(): C6_public { ->f10_public : Symbol(f10_public, Decl(privacyGloFunc.ts, 451, 5)) +>f10_public : Symbol(C8_private.f10_public, Decl(privacyGloFunc.ts, 451, 5)) >C6_public : Symbol(C6_public, Decl(privacyGloFunc.ts, 360, 1)) return new C6_public(); @@ -871,7 +871,7 @@ class C8_private { } private f11_private(): C5_private { ->f11_private : Symbol(f11_private, Decl(privacyGloFunc.ts, 455, 5)) +>f11_private : Symbol(C8_private.f11_private, Decl(privacyGloFunc.ts, 455, 5)) >C5_private : Symbol(C5_private, Decl(privacyGloFunc.ts, 355, 1)) return new C5_private(); @@ -879,7 +879,7 @@ class C8_private { } public f12_public(): C5_private { ->f12_public : Symbol(f12_public, Decl(privacyGloFunc.ts, 459, 5)) +>f12_public : Symbol(C8_private.f12_public, Decl(privacyGloFunc.ts, 459, 5)) >C5_private : Symbol(C5_private, Decl(privacyGloFunc.ts, 355, 1)) return new C5_private(); diff --git a/tests/baselines/reference/privacyGloGetter.symbols b/tests/baselines/reference/privacyGloGetter.symbols index ac6a2041f3c..5f67eec29a9 100644 --- a/tests/baselines/reference/privacyGloGetter.symbols +++ b/tests/baselines/reference/privacyGloGetter.symbols @@ -6,7 +6,7 @@ module m1 { >C1_public : Symbol(C1_public, Decl(privacyGloGetter.ts, 0, 11)) private f1() { ->f1 : Symbol(f1, Decl(privacyGloGetter.ts, 1, 28)) +>f1 : Symbol(C1_public.f1, Decl(privacyGloGetter.ts, 1, 28)) } } @@ -18,46 +18,46 @@ module m1 { >C3_public : Symbol(C3_public, Decl(privacyGloGetter.ts, 7, 5)) private get p1_private() { ->p1_private : Symbol(p1_private, Decl(privacyGloGetter.ts, 9, 28), Decl(privacyGloGetter.ts, 12, 9)) +>p1_private : Symbol(C3_public.p1_private, Decl(privacyGloGetter.ts, 9, 28), Decl(privacyGloGetter.ts, 12, 9)) return new C1_public(); >C1_public : Symbol(C1_public, Decl(privacyGloGetter.ts, 0, 11)) } private set p1_private(m1_c3_p1_arg: C1_public) { ->p1_private : Symbol(p1_private, Decl(privacyGloGetter.ts, 9, 28), Decl(privacyGloGetter.ts, 12, 9)) +>p1_private : Symbol(C3_public.p1_private, Decl(privacyGloGetter.ts, 9, 28), Decl(privacyGloGetter.ts, 12, 9)) >m1_c3_p1_arg : Symbol(m1_c3_p1_arg, Decl(privacyGloGetter.ts, 14, 31)) >C1_public : Symbol(C1_public, Decl(privacyGloGetter.ts, 0, 11)) } private get p2_private() { ->p2_private : Symbol(p2_private, Decl(privacyGloGetter.ts, 15, 9), Decl(privacyGloGetter.ts, 19, 9)) +>p2_private : Symbol(C3_public.p2_private, Decl(privacyGloGetter.ts, 15, 9), Decl(privacyGloGetter.ts, 19, 9)) return new C1_public(); >C1_public : Symbol(C1_public, Decl(privacyGloGetter.ts, 0, 11)) } private set p2_private(m1_c3_p2_arg: C1_public) { ->p2_private : Symbol(p2_private, Decl(privacyGloGetter.ts, 15, 9), Decl(privacyGloGetter.ts, 19, 9)) +>p2_private : Symbol(C3_public.p2_private, Decl(privacyGloGetter.ts, 15, 9), Decl(privacyGloGetter.ts, 19, 9)) >m1_c3_p2_arg : Symbol(m1_c3_p2_arg, Decl(privacyGloGetter.ts, 21, 31)) >C1_public : Symbol(C1_public, Decl(privacyGloGetter.ts, 0, 11)) } private get p3_private() { ->p3_private : Symbol(p3_private, Decl(privacyGloGetter.ts, 22, 9), Decl(privacyGloGetter.ts, 26, 9)) +>p3_private : Symbol(C3_public.p3_private, Decl(privacyGloGetter.ts, 22, 9), Decl(privacyGloGetter.ts, 26, 9)) return new C2_private(); >C2_private : Symbol(C2_private, Decl(privacyGloGetter.ts, 4, 5)) } private set p3_private(m1_c3_p3_arg: C2_private) { ->p3_private : Symbol(p3_private, Decl(privacyGloGetter.ts, 22, 9), Decl(privacyGloGetter.ts, 26, 9)) +>p3_private : Symbol(C3_public.p3_private, Decl(privacyGloGetter.ts, 22, 9), Decl(privacyGloGetter.ts, 26, 9)) >m1_c3_p3_arg : Symbol(m1_c3_p3_arg, Decl(privacyGloGetter.ts, 28, 31)) >C2_private : Symbol(C2_private, Decl(privacyGloGetter.ts, 4, 5)) } public get p4_public(): C2_private { // error ->p4_public : Symbol(p4_public, Decl(privacyGloGetter.ts, 29, 9), Decl(privacyGloGetter.ts, 33, 9)) +>p4_public : Symbol(C3_public.p4_public, Decl(privacyGloGetter.ts, 29, 9), Decl(privacyGloGetter.ts, 33, 9)) >C2_private : Symbol(C2_private, Decl(privacyGloGetter.ts, 4, 5)) return new C2_private(); //error @@ -65,7 +65,7 @@ module m1 { } public set p4_public(m1_c3_p4_arg: C2_private) { // error ->p4_public : Symbol(p4_public, Decl(privacyGloGetter.ts, 29, 9), Decl(privacyGloGetter.ts, 33, 9)) +>p4_public : Symbol(C3_public.p4_public, Decl(privacyGloGetter.ts, 29, 9), Decl(privacyGloGetter.ts, 33, 9)) >m1_c3_p4_arg : Symbol(m1_c3_p4_arg, Decl(privacyGloGetter.ts, 35, 29)) >C2_private : Symbol(C2_private, Decl(privacyGloGetter.ts, 4, 5)) } @@ -75,46 +75,46 @@ module m1 { >C4_private : Symbol(C4_private, Decl(privacyGloGetter.ts, 37, 5)) private get p1_private() { ->p1_private : Symbol(p1_private, Decl(privacyGloGetter.ts, 39, 22), Decl(privacyGloGetter.ts, 42, 9)) +>p1_private : Symbol(C4_private.p1_private, Decl(privacyGloGetter.ts, 39, 22), Decl(privacyGloGetter.ts, 42, 9)) return new C1_public(); >C1_public : Symbol(C1_public, Decl(privacyGloGetter.ts, 0, 11)) } private set p1_private(m1_c3_p1_arg: C1_public) { ->p1_private : Symbol(p1_private, Decl(privacyGloGetter.ts, 39, 22), Decl(privacyGloGetter.ts, 42, 9)) +>p1_private : Symbol(C4_private.p1_private, Decl(privacyGloGetter.ts, 39, 22), Decl(privacyGloGetter.ts, 42, 9)) >m1_c3_p1_arg : Symbol(m1_c3_p1_arg, Decl(privacyGloGetter.ts, 44, 31)) >C1_public : Symbol(C1_public, Decl(privacyGloGetter.ts, 0, 11)) } private get p2_private() { ->p2_private : Symbol(p2_private, Decl(privacyGloGetter.ts, 45, 9), Decl(privacyGloGetter.ts, 49, 9)) +>p2_private : Symbol(C4_private.p2_private, Decl(privacyGloGetter.ts, 45, 9), Decl(privacyGloGetter.ts, 49, 9)) return new C1_public(); >C1_public : Symbol(C1_public, Decl(privacyGloGetter.ts, 0, 11)) } private set p2_private(m1_c3_p2_arg: C1_public) { ->p2_private : Symbol(p2_private, Decl(privacyGloGetter.ts, 45, 9), Decl(privacyGloGetter.ts, 49, 9)) +>p2_private : Symbol(C4_private.p2_private, Decl(privacyGloGetter.ts, 45, 9), Decl(privacyGloGetter.ts, 49, 9)) >m1_c3_p2_arg : Symbol(m1_c3_p2_arg, Decl(privacyGloGetter.ts, 51, 31)) >C1_public : Symbol(C1_public, Decl(privacyGloGetter.ts, 0, 11)) } private get p3_private() { ->p3_private : Symbol(p3_private, Decl(privacyGloGetter.ts, 52, 9), Decl(privacyGloGetter.ts, 56, 9)) +>p3_private : Symbol(C4_private.p3_private, Decl(privacyGloGetter.ts, 52, 9), Decl(privacyGloGetter.ts, 56, 9)) return new C2_private(); >C2_private : Symbol(C2_private, Decl(privacyGloGetter.ts, 4, 5)) } private set p3_private(m1_c3_p3_arg: C2_private) { ->p3_private : Symbol(p3_private, Decl(privacyGloGetter.ts, 52, 9), Decl(privacyGloGetter.ts, 56, 9)) +>p3_private : Symbol(C4_private.p3_private, Decl(privacyGloGetter.ts, 52, 9), Decl(privacyGloGetter.ts, 56, 9)) >m1_c3_p3_arg : Symbol(m1_c3_p3_arg, Decl(privacyGloGetter.ts, 58, 31)) >C2_private : Symbol(C2_private, Decl(privacyGloGetter.ts, 4, 5)) } public get p4_public(): C2_private { ->p4_public : Symbol(p4_public, Decl(privacyGloGetter.ts, 59, 9), Decl(privacyGloGetter.ts, 63, 9)) +>p4_public : Symbol(C4_private.p4_public, Decl(privacyGloGetter.ts, 59, 9), Decl(privacyGloGetter.ts, 63, 9)) >C2_private : Symbol(C2_private, Decl(privacyGloGetter.ts, 4, 5)) return new C2_private(); @@ -122,7 +122,7 @@ module m1 { } public set p4_public(m1_c3_p4_arg: C2_private) { ->p4_public : Symbol(p4_public, Decl(privacyGloGetter.ts, 59, 9), Decl(privacyGloGetter.ts, 63, 9)) +>p4_public : Symbol(C4_private.p4_public, Decl(privacyGloGetter.ts, 59, 9), Decl(privacyGloGetter.ts, 63, 9)) >m1_c3_p4_arg : Symbol(m1_c3_p4_arg, Decl(privacyGloGetter.ts, 65, 29)) >C2_private : Symbol(C2_private, Decl(privacyGloGetter.ts, 4, 5)) } @@ -137,27 +137,27 @@ class C7_public { >C7_public : Symbol(C7_public, Decl(privacyGloGetter.ts, 71, 1)) private get p1_private() { ->p1_private : Symbol(p1_private, Decl(privacyGloGetter.ts, 73, 17), Decl(privacyGloGetter.ts, 76, 5)) +>p1_private : Symbol(C7_public.p1_private, Decl(privacyGloGetter.ts, 73, 17), Decl(privacyGloGetter.ts, 76, 5)) return new C6_public(); >C6_public : Symbol(C6_public, Decl(privacyGloGetter.ts, 68, 1)) } private set p1_private(m1_c3_p1_arg: C6_public) { ->p1_private : Symbol(p1_private, Decl(privacyGloGetter.ts, 73, 17), Decl(privacyGloGetter.ts, 76, 5)) +>p1_private : Symbol(C7_public.p1_private, Decl(privacyGloGetter.ts, 73, 17), Decl(privacyGloGetter.ts, 76, 5)) >m1_c3_p1_arg : Symbol(m1_c3_p1_arg, Decl(privacyGloGetter.ts, 78, 27)) >C6_public : Symbol(C6_public, Decl(privacyGloGetter.ts, 68, 1)) } private get p2_private() { ->p2_private : Symbol(p2_private, Decl(privacyGloGetter.ts, 79, 5), Decl(privacyGloGetter.ts, 83, 5)) +>p2_private : Symbol(C7_public.p2_private, Decl(privacyGloGetter.ts, 79, 5), Decl(privacyGloGetter.ts, 83, 5)) return new C6_public(); >C6_public : Symbol(C6_public, Decl(privacyGloGetter.ts, 68, 1)) } private set p2_private(m1_c3_p2_arg: C6_public) { ->p2_private : Symbol(p2_private, Decl(privacyGloGetter.ts, 79, 5), Decl(privacyGloGetter.ts, 83, 5)) +>p2_private : Symbol(C7_public.p2_private, Decl(privacyGloGetter.ts, 79, 5), Decl(privacyGloGetter.ts, 83, 5)) >m1_c3_p2_arg : Symbol(m1_c3_p2_arg, Decl(privacyGloGetter.ts, 85, 27)) >C6_public : Symbol(C6_public, Decl(privacyGloGetter.ts, 68, 1)) } diff --git a/tests/baselines/reference/privacyGloImportParseErrors.errors.txt b/tests/baselines/reference/privacyGloImportParseErrors.errors.txt index 05bb3559f1a..6f6c2e5f865 100644 --- a/tests/baselines/reference/privacyGloImportParseErrors.errors.txt +++ b/tests/baselines/reference/privacyGloImportParseErrors.errors.txt @@ -14,12 +14,11 @@ tests/cases/compiler/privacyGloImportParseErrors.ts(125,45): error TS1147: Impor tests/cases/compiler/privacyGloImportParseErrors.ts(133,9): error TS1038: A 'declare' modifier cannot be used in an already ambient context. tests/cases/compiler/privacyGloImportParseErrors.ts(133,24): error TS2435: Ambient modules cannot be nested in other modules or namespaces. tests/cases/compiler/privacyGloImportParseErrors.ts(138,16): error TS2435: Ambient modules cannot be nested in other modules or namespaces. -tests/cases/compiler/privacyGloImportParseErrors.ts(141,12): error TS2664: Invalid module name in augmentation, module 'abc3' cannot be found. tests/cases/compiler/privacyGloImportParseErrors.ts(146,25): error TS1147: Import declarations in a namespace cannot reference a module. tests/cases/compiler/privacyGloImportParseErrors.ts(149,29): error TS1147: Import declarations in a namespace cannot reference a module. -==== tests/cases/compiler/privacyGloImportParseErrors.ts (19 errors) ==== +==== tests/cases/compiler/privacyGloImportParseErrors.ts (18 errors) ==== module m1 { export module m1_M1_public { export class c1 { @@ -193,8 +192,6 @@ tests/cases/compiler/privacyGloImportParseErrors.ts(149,29): error TS1147: Impor } } module "abc3" { - ~~~~~~ -!!! error TS2664: Invalid module name in augmentation, module 'abc3' cannot be found. } } diff --git a/tests/baselines/reference/privacyGloInterface.symbols b/tests/baselines/reference/privacyGloInterface.symbols index 561025ee6dc..da8db47856a 100644 --- a/tests/baselines/reference/privacyGloInterface.symbols +++ b/tests/baselines/reference/privacyGloInterface.symbols @@ -6,7 +6,7 @@ module m1 { >C1_public : Symbol(C1_public, Decl(privacyGloInterface.ts, 0, 11)) private f1() { ->f1 : Symbol(f1, Decl(privacyGloInterface.ts, 1, 28)) +>f1 : Symbol(C1_public.f1, Decl(privacyGloInterface.ts, 1, 28)) } } @@ -57,37 +57,37 @@ module m1 { >C2_private : Symbol(C2_private, Decl(privacyGloInterface.ts, 4, 5)) x: C1_public; ->x : Symbol(x, Decl(privacyGloInterface.ts, 22, 32)) +>x : Symbol(C3_public.x, Decl(privacyGloInterface.ts, 22, 32)) >C1_public : Symbol(C1_public, Decl(privacyGloInterface.ts, 0, 11)) y: C2_private; ->y : Symbol(y, Decl(privacyGloInterface.ts, 24, 21)) +>y : Symbol(C3_public.y, Decl(privacyGloInterface.ts, 24, 21)) >C2_private : Symbol(C2_private, Decl(privacyGloInterface.ts, 4, 5)) a?: C1_public; ->a : Symbol(a, Decl(privacyGloInterface.ts, 25, 22)) +>a : Symbol(C3_public.a, Decl(privacyGloInterface.ts, 25, 22)) >C1_public : Symbol(C1_public, Decl(privacyGloInterface.ts, 0, 11)) b?: C2_private; ->b : Symbol(b, Decl(privacyGloInterface.ts, 27, 22)) +>b : Symbol(C3_public.b, Decl(privacyGloInterface.ts, 27, 22)) >C2_private : Symbol(C2_private, Decl(privacyGloInterface.ts, 4, 5)) f1(a1: C1_public); ->f1 : Symbol(f1, Decl(privacyGloInterface.ts, 28, 23)) +>f1 : Symbol(C3_public.f1, Decl(privacyGloInterface.ts, 28, 23)) >a1 : Symbol(a1, Decl(privacyGloInterface.ts, 30, 11)) >C1_public : Symbol(C1_public, Decl(privacyGloInterface.ts, 0, 11)) f2(a1: C2_private); ->f2 : Symbol(f2, Decl(privacyGloInterface.ts, 30, 26)) +>f2 : Symbol(C3_public.f2, Decl(privacyGloInterface.ts, 30, 26)) >a1 : Symbol(a1, Decl(privacyGloInterface.ts, 31, 11)) >C2_private : Symbol(C2_private, Decl(privacyGloInterface.ts, 4, 5)) f3(): C1_public; ->f3 : Symbol(f3, Decl(privacyGloInterface.ts, 31, 27)) +>f3 : Symbol(C3_public.f3, Decl(privacyGloInterface.ts, 31, 27)) >C1_public : Symbol(C1_public, Decl(privacyGloInterface.ts, 0, 11)) f4(): C2_private; ->f4 : Symbol(f4, Decl(privacyGloInterface.ts, 32, 24)) +>f4 : Symbol(C3_public.f4, Decl(privacyGloInterface.ts, 32, 24)) >C2_private : Symbol(C2_private, Decl(privacyGloInterface.ts, 4, 5)) } @@ -134,37 +134,37 @@ module m1 { >C2_private : Symbol(C2_private, Decl(privacyGloInterface.ts, 4, 5)) x: C1_public; ->x : Symbol(x, Decl(privacyGloInterface.ts, 49, 32)) +>x : Symbol(C4_private.x, Decl(privacyGloInterface.ts, 49, 32)) >C1_public : Symbol(C1_public, Decl(privacyGloInterface.ts, 0, 11)) y: C2_private; ->y : Symbol(y, Decl(privacyGloInterface.ts, 51, 21)) +>y : Symbol(C4_private.y, Decl(privacyGloInterface.ts, 51, 21)) >C2_private : Symbol(C2_private, Decl(privacyGloInterface.ts, 4, 5)) a?: C1_public; ->a : Symbol(a, Decl(privacyGloInterface.ts, 52, 22)) +>a : Symbol(C4_private.a, Decl(privacyGloInterface.ts, 52, 22)) >C1_public : Symbol(C1_public, Decl(privacyGloInterface.ts, 0, 11)) b?: C2_private; ->b : Symbol(b, Decl(privacyGloInterface.ts, 54, 22)) +>b : Symbol(C4_private.b, Decl(privacyGloInterface.ts, 54, 22)) >C2_private : Symbol(C2_private, Decl(privacyGloInterface.ts, 4, 5)) f1(a1: C1_public); ->f1 : Symbol(f1, Decl(privacyGloInterface.ts, 55, 23)) +>f1 : Symbol(C4_private.f1, Decl(privacyGloInterface.ts, 55, 23)) >a1 : Symbol(a1, Decl(privacyGloInterface.ts, 57, 11)) >C1_public : Symbol(C1_public, Decl(privacyGloInterface.ts, 0, 11)) f2(a1: C2_private); ->f2 : Symbol(f2, Decl(privacyGloInterface.ts, 57, 26)) +>f2 : Symbol(C4_private.f2, Decl(privacyGloInterface.ts, 57, 26)) >a1 : Symbol(a1, Decl(privacyGloInterface.ts, 58, 11)) >C2_private : Symbol(C2_private, Decl(privacyGloInterface.ts, 4, 5)) f3(): C1_public; ->f3 : Symbol(f3, Decl(privacyGloInterface.ts, 58, 27)) +>f3 : Symbol(C4_private.f3, Decl(privacyGloInterface.ts, 58, 27)) >C1_public : Symbol(C1_public, Decl(privacyGloInterface.ts, 0, 11)) f4(): C2_private; ->f4 : Symbol(f4, Decl(privacyGloInterface.ts, 59, 24)) +>f4 : Symbol(C4_private.f4, Decl(privacyGloInterface.ts, 59, 24)) >C2_private : Symbol(C2_private, Decl(privacyGloInterface.ts, 4, 5)) } @@ -174,7 +174,7 @@ class C5_public { >C5_public : Symbol(C5_public, Decl(privacyGloInterface.ts, 63, 1)) private f1() { ->f1 : Symbol(f1, Decl(privacyGloInterface.ts, 65, 17)) +>f1 : Symbol(C5_public.f1, Decl(privacyGloInterface.ts, 65, 17)) } } @@ -201,20 +201,20 @@ interface C7_public { >C5_public : Symbol(C5_public, Decl(privacyGloInterface.ts, 63, 1)) x: C5_public; ->x : Symbol(x, Decl(privacyGloInterface.ts, 78, 27)) +>x : Symbol(C7_public.x, Decl(privacyGloInterface.ts, 78, 27)) >C5_public : Symbol(C5_public, Decl(privacyGloInterface.ts, 63, 1)) a?: C5_public; ->a : Symbol(a, Decl(privacyGloInterface.ts, 80, 17)) +>a : Symbol(C7_public.a, Decl(privacyGloInterface.ts, 80, 17)) >C5_public : Symbol(C5_public, Decl(privacyGloInterface.ts, 63, 1)) f1(a1: C5_public); ->f1 : Symbol(f1, Decl(privacyGloInterface.ts, 82, 18)) +>f1 : Symbol(C7_public.f1, Decl(privacyGloInterface.ts, 82, 18)) >a1 : Symbol(a1, Decl(privacyGloInterface.ts, 84, 7)) >C5_public : Symbol(C5_public, Decl(privacyGloInterface.ts, 63, 1)) f3(): C5_public; ->f3 : Symbol(f3, Decl(privacyGloInterface.ts, 84, 22)) +>f3 : Symbol(C7_public.f3, Decl(privacyGloInterface.ts, 84, 22)) >C5_public : Symbol(C5_public, Decl(privacyGloInterface.ts, 63, 1)) } @@ -225,14 +225,14 @@ module m3 { >m3_i_public : Symbol(m3_i_public, Decl(privacyGloInterface.ts, 88, 11)) f1(): number; ->f1 : Symbol(f1, Decl(privacyGloInterface.ts, 89, 34)) +>f1 : Symbol(m3_i_public.f1, Decl(privacyGloInterface.ts, 89, 34)) } interface m3_i_private { >m3_i_private : Symbol(m3_i_private, Decl(privacyGloInterface.ts, 91, 5)) f2(): string; ->f2 : Symbol(f2, Decl(privacyGloInterface.ts, 93, 28)) +>f2 : Symbol(m3_i_private.f2, Decl(privacyGloInterface.ts, 93, 28)) } interface m3_C1_private extends m3_i_public { @@ -268,7 +268,7 @@ interface glo_i_public { >glo_i_public : Symbol(glo_i_public, Decl(privacyGloInterface.ts, 110, 1)) f1(): number; ->f1 : Symbol(f1, Decl(privacyGloInterface.ts, 112, 24)) +>f1 : Symbol(glo_i_public.f1, Decl(privacyGloInterface.ts, 112, 24)) } interface glo_C3_public extends glo_i_public { diff --git a/tests/baselines/reference/privacyGloVar.symbols b/tests/baselines/reference/privacyGloVar.symbols index 5f08438817e..9c8a01fc9a4 100644 --- a/tests/baselines/reference/privacyGloVar.symbols +++ b/tests/baselines/reference/privacyGloVar.symbols @@ -6,7 +6,7 @@ module m1 { >C1_public : Symbol(C1_public, Decl(privacyGloVar.ts, 0, 11)) private f1() { ->f1 : Symbol(f1, Decl(privacyGloVar.ts, 1, 28)) +>f1 : Symbol(C1_public.f1, Decl(privacyGloVar.ts, 1, 28)) } } @@ -18,54 +18,54 @@ module m1 { >C3_public : Symbol(C3_public, Decl(privacyGloVar.ts, 7, 5)) private C3_v1_private: C1_public; ->C3_v1_private : Symbol(C3_v1_private, Decl(privacyGloVar.ts, 9, 28)) +>C3_v1_private : Symbol(C3_public.C3_v1_private, Decl(privacyGloVar.ts, 9, 28)) >C1_public : Symbol(C1_public, Decl(privacyGloVar.ts, 0, 11)) public C3_v2_public: C1_public; ->C3_v2_public : Symbol(C3_v2_public, Decl(privacyGloVar.ts, 10, 41)) +>C3_v2_public : Symbol(C3_public.C3_v2_public, Decl(privacyGloVar.ts, 10, 41)) >C1_public : Symbol(C1_public, Decl(privacyGloVar.ts, 0, 11)) private C3_v3_private: C2_private; ->C3_v3_private : Symbol(C3_v3_private, Decl(privacyGloVar.ts, 11, 39)) +>C3_v3_private : Symbol(C3_public.C3_v3_private, Decl(privacyGloVar.ts, 11, 39)) >C2_private : Symbol(C2_private, Decl(privacyGloVar.ts, 4, 5)) public C3_v4_public: C2_private; // error ->C3_v4_public : Symbol(C3_v4_public, Decl(privacyGloVar.ts, 12, 42)) +>C3_v4_public : Symbol(C3_public.C3_v4_public, Decl(privacyGloVar.ts, 12, 42)) >C2_private : Symbol(C2_private, Decl(privacyGloVar.ts, 4, 5)) private C3_v11_private = new C1_public(); ->C3_v11_private : Symbol(C3_v11_private, Decl(privacyGloVar.ts, 13, 40)) +>C3_v11_private : Symbol(C3_public.C3_v11_private, Decl(privacyGloVar.ts, 13, 40)) >C1_public : Symbol(C1_public, Decl(privacyGloVar.ts, 0, 11)) public C3_v12_public = new C1_public(); ->C3_v12_public : Symbol(C3_v12_public, Decl(privacyGloVar.ts, 15, 49)) +>C3_v12_public : Symbol(C3_public.C3_v12_public, Decl(privacyGloVar.ts, 15, 49)) >C1_public : Symbol(C1_public, Decl(privacyGloVar.ts, 0, 11)) private C3_v13_private = new C2_private(); ->C3_v13_private : Symbol(C3_v13_private, Decl(privacyGloVar.ts, 16, 47)) +>C3_v13_private : Symbol(C3_public.C3_v13_private, Decl(privacyGloVar.ts, 16, 47)) >C2_private : Symbol(C2_private, Decl(privacyGloVar.ts, 4, 5)) public C3_v14_public = new C2_private(); // error ->C3_v14_public : Symbol(C3_v14_public, Decl(privacyGloVar.ts, 17, 50)) +>C3_v14_public : Symbol(C3_public.C3_v14_public, Decl(privacyGloVar.ts, 17, 50)) >C2_private : Symbol(C2_private, Decl(privacyGloVar.ts, 4, 5)) private C3_v21_private: C1_public = new C1_public(); ->C3_v21_private : Symbol(C3_v21_private, Decl(privacyGloVar.ts, 18, 48)) +>C3_v21_private : Symbol(C3_public.C3_v21_private, Decl(privacyGloVar.ts, 18, 48)) >C1_public : Symbol(C1_public, Decl(privacyGloVar.ts, 0, 11)) >C1_public : Symbol(C1_public, Decl(privacyGloVar.ts, 0, 11)) public C3_v22_public: C1_public = new C1_public(); ->C3_v22_public : Symbol(C3_v22_public, Decl(privacyGloVar.ts, 20, 60)) +>C3_v22_public : Symbol(C3_public.C3_v22_public, Decl(privacyGloVar.ts, 20, 60)) >C1_public : Symbol(C1_public, Decl(privacyGloVar.ts, 0, 11)) >C1_public : Symbol(C1_public, Decl(privacyGloVar.ts, 0, 11)) private C3_v23_private: C2_private = new C2_private(); ->C3_v23_private : Symbol(C3_v23_private, Decl(privacyGloVar.ts, 21, 58)) +>C3_v23_private : Symbol(C3_public.C3_v23_private, Decl(privacyGloVar.ts, 21, 58)) >C2_private : Symbol(C2_private, Decl(privacyGloVar.ts, 4, 5)) >C2_private : Symbol(C2_private, Decl(privacyGloVar.ts, 4, 5)) public C3_v24_public: C2_private = new C2_private(); // error ->C3_v24_public : Symbol(C3_v24_public, Decl(privacyGloVar.ts, 22, 62)) +>C3_v24_public : Symbol(C3_public.C3_v24_public, Decl(privacyGloVar.ts, 22, 62)) >C2_private : Symbol(C2_private, Decl(privacyGloVar.ts, 4, 5)) >C2_private : Symbol(C2_private, Decl(privacyGloVar.ts, 4, 5)) } @@ -74,54 +74,54 @@ module m1 { >C4_public : Symbol(C4_public, Decl(privacyGloVar.ts, 24, 5)) private C4_v1_private: C1_public; ->C4_v1_private : Symbol(C4_v1_private, Decl(privacyGloVar.ts, 26, 21)) +>C4_v1_private : Symbol(C4_public.C4_v1_private, Decl(privacyGloVar.ts, 26, 21)) >C1_public : Symbol(C1_public, Decl(privacyGloVar.ts, 0, 11)) public C4_v2_public: C1_public; ->C4_v2_public : Symbol(C4_v2_public, Decl(privacyGloVar.ts, 27, 41)) +>C4_v2_public : Symbol(C4_public.C4_v2_public, Decl(privacyGloVar.ts, 27, 41)) >C1_public : Symbol(C1_public, Decl(privacyGloVar.ts, 0, 11)) private C4_v3_private: C2_private; ->C4_v3_private : Symbol(C4_v3_private, Decl(privacyGloVar.ts, 28, 39)) +>C4_v3_private : Symbol(C4_public.C4_v3_private, Decl(privacyGloVar.ts, 28, 39)) >C2_private : Symbol(C2_private, Decl(privacyGloVar.ts, 4, 5)) public C4_v4_public: C2_private; ->C4_v4_public : Symbol(C4_v4_public, Decl(privacyGloVar.ts, 29, 42)) +>C4_v4_public : Symbol(C4_public.C4_v4_public, Decl(privacyGloVar.ts, 29, 42)) >C2_private : Symbol(C2_private, Decl(privacyGloVar.ts, 4, 5)) private C4_v11_private = new C1_public(); ->C4_v11_private : Symbol(C4_v11_private, Decl(privacyGloVar.ts, 30, 40)) +>C4_v11_private : Symbol(C4_public.C4_v11_private, Decl(privacyGloVar.ts, 30, 40)) >C1_public : Symbol(C1_public, Decl(privacyGloVar.ts, 0, 11)) public C4_v12_public = new C1_public(); ->C4_v12_public : Symbol(C4_v12_public, Decl(privacyGloVar.ts, 32, 49)) +>C4_v12_public : Symbol(C4_public.C4_v12_public, Decl(privacyGloVar.ts, 32, 49)) >C1_public : Symbol(C1_public, Decl(privacyGloVar.ts, 0, 11)) private C4_v13_private = new C2_private(); ->C4_v13_private : Symbol(C4_v13_private, Decl(privacyGloVar.ts, 33, 47)) +>C4_v13_private : Symbol(C4_public.C4_v13_private, Decl(privacyGloVar.ts, 33, 47)) >C2_private : Symbol(C2_private, Decl(privacyGloVar.ts, 4, 5)) public C4_v14_public = new C2_private(); ->C4_v14_public : Symbol(C4_v14_public, Decl(privacyGloVar.ts, 34, 50)) +>C4_v14_public : Symbol(C4_public.C4_v14_public, Decl(privacyGloVar.ts, 34, 50)) >C2_private : Symbol(C2_private, Decl(privacyGloVar.ts, 4, 5)) private C4_v21_private: C1_public = new C1_public(); ->C4_v21_private : Symbol(C4_v21_private, Decl(privacyGloVar.ts, 35, 48)) +>C4_v21_private : Symbol(C4_public.C4_v21_private, Decl(privacyGloVar.ts, 35, 48)) >C1_public : Symbol(C1_public, Decl(privacyGloVar.ts, 0, 11)) >C1_public : Symbol(C1_public, Decl(privacyGloVar.ts, 0, 11)) public C4_v22_public: C1_public = new C1_public(); ->C4_v22_public : Symbol(C4_v22_public, Decl(privacyGloVar.ts, 37, 60)) +>C4_v22_public : Symbol(C4_public.C4_v22_public, Decl(privacyGloVar.ts, 37, 60)) >C1_public : Symbol(C1_public, Decl(privacyGloVar.ts, 0, 11)) >C1_public : Symbol(C1_public, Decl(privacyGloVar.ts, 0, 11)) private C4_v23_private: C2_private = new C2_private(); ->C4_v23_private : Symbol(C4_v23_private, Decl(privacyGloVar.ts, 38, 58)) +>C4_v23_private : Symbol(C4_public.C4_v23_private, Decl(privacyGloVar.ts, 38, 58)) >C2_private : Symbol(C2_private, Decl(privacyGloVar.ts, 4, 5)) >C2_private : Symbol(C2_private, Decl(privacyGloVar.ts, 4, 5)) public C4_v24_public: C2_private = new C2_private(); ->C4_v24_public : Symbol(C4_v24_public, Decl(privacyGloVar.ts, 39, 62)) +>C4_v24_public : Symbol(C4_public.C4_v24_public, Decl(privacyGloVar.ts, 39, 62)) >C2_private : Symbol(C2_private, Decl(privacyGloVar.ts, 4, 5)) >C2_private : Symbol(C2_private, Decl(privacyGloVar.ts, 4, 5)) } @@ -183,7 +183,7 @@ class glo_C1_public { >glo_C1_public : Symbol(glo_C1_public, Decl(privacyGloVar.ts, 57, 1)) private f1() { ->f1 : Symbol(f1, Decl(privacyGloVar.ts, 59, 21)) +>f1 : Symbol(glo_C1_public.f1, Decl(privacyGloVar.ts, 59, 21)) } } @@ -191,28 +191,28 @@ class glo_C3_public { >glo_C3_public : Symbol(glo_C3_public, Decl(privacyGloVar.ts, 62, 1)) private glo_C3_v1_private: glo_C1_public; ->glo_C3_v1_private : Symbol(glo_C3_v1_private, Decl(privacyGloVar.ts, 64, 21)) +>glo_C3_v1_private : Symbol(glo_C3_public.glo_C3_v1_private, Decl(privacyGloVar.ts, 64, 21)) >glo_C1_public : Symbol(glo_C1_public, Decl(privacyGloVar.ts, 57, 1)) public glo_C3_v2_public: glo_C1_public; ->glo_C3_v2_public : Symbol(glo_C3_v2_public, Decl(privacyGloVar.ts, 65, 45)) +>glo_C3_v2_public : Symbol(glo_C3_public.glo_C3_v2_public, Decl(privacyGloVar.ts, 65, 45)) >glo_C1_public : Symbol(glo_C1_public, Decl(privacyGloVar.ts, 57, 1)) private glo_C3_v11_private = new glo_C1_public(); ->glo_C3_v11_private : Symbol(glo_C3_v11_private, Decl(privacyGloVar.ts, 66, 43)) +>glo_C3_v11_private : Symbol(glo_C3_public.glo_C3_v11_private, Decl(privacyGloVar.ts, 66, 43)) >glo_C1_public : Symbol(glo_C1_public, Decl(privacyGloVar.ts, 57, 1)) public glo_C3_v12_public = new glo_C1_public(); ->glo_C3_v12_public : Symbol(glo_C3_v12_public, Decl(privacyGloVar.ts, 68, 53)) +>glo_C3_v12_public : Symbol(glo_C3_public.glo_C3_v12_public, Decl(privacyGloVar.ts, 68, 53)) >glo_C1_public : Symbol(glo_C1_public, Decl(privacyGloVar.ts, 57, 1)) private glo_C3_v21_private: glo_C1_public = new glo_C1_public(); ->glo_C3_v21_private : Symbol(glo_C3_v21_private, Decl(privacyGloVar.ts, 69, 51)) +>glo_C3_v21_private : Symbol(glo_C3_public.glo_C3_v21_private, Decl(privacyGloVar.ts, 69, 51)) >glo_C1_public : Symbol(glo_C1_public, Decl(privacyGloVar.ts, 57, 1)) >glo_C1_public : Symbol(glo_C1_public, Decl(privacyGloVar.ts, 57, 1)) public glo_C3_v22_public: glo_C1_public = new glo_C1_public(); ->glo_C3_v22_public : Symbol(glo_C3_v22_public, Decl(privacyGloVar.ts, 71, 68)) +>glo_C3_v22_public : Symbol(glo_C3_public.glo_C3_v22_public, Decl(privacyGloVar.ts, 71, 68)) >glo_C1_public : Symbol(glo_C1_public, Decl(privacyGloVar.ts, 57, 1)) >glo_C1_public : Symbol(glo_C1_public, Decl(privacyGloVar.ts, 57, 1)) } diff --git a/tests/baselines/reference/privacyInterface.symbols b/tests/baselines/reference/privacyInterface.symbols index f7556aceae2..d5dbe3c1b62 100644 --- a/tests/baselines/reference/privacyInterface.symbols +++ b/tests/baselines/reference/privacyInterface.symbols @@ -6,7 +6,7 @@ export module m1 { >C1_public : Symbol(C1_public, Decl(privacyInterface.ts, 0, 18)) private f1() { ->f1 : Symbol(f1, Decl(privacyInterface.ts, 1, 28)) +>f1 : Symbol(C1_public.f1, Decl(privacyInterface.ts, 1, 28)) } } @@ -57,37 +57,37 @@ export module m1 { >C2_private : Symbol(C2_private, Decl(privacyInterface.ts, 4, 5)) x: C1_public; ->x : Symbol(x, Decl(privacyInterface.ts, 22, 32)) +>x : Symbol(C3_public.x, Decl(privacyInterface.ts, 22, 32)) >C1_public : Symbol(C1_public, Decl(privacyInterface.ts, 0, 18)) y: C2_private; ->y : Symbol(y, Decl(privacyInterface.ts, 24, 21)) +>y : Symbol(C3_public.y, Decl(privacyInterface.ts, 24, 21)) >C2_private : Symbol(C2_private, Decl(privacyInterface.ts, 4, 5)) a?: C1_public; ->a : Symbol(a, Decl(privacyInterface.ts, 25, 22)) +>a : Symbol(C3_public.a, Decl(privacyInterface.ts, 25, 22)) >C1_public : Symbol(C1_public, Decl(privacyInterface.ts, 0, 18)) b?: C2_private; ->b : Symbol(b, Decl(privacyInterface.ts, 27, 22)) +>b : Symbol(C3_public.b, Decl(privacyInterface.ts, 27, 22)) >C2_private : Symbol(C2_private, Decl(privacyInterface.ts, 4, 5)) f1(a1: C1_public); ->f1 : Symbol(f1, Decl(privacyInterface.ts, 28, 23)) +>f1 : Symbol(C3_public.f1, Decl(privacyInterface.ts, 28, 23)) >a1 : Symbol(a1, Decl(privacyInterface.ts, 30, 11)) >C1_public : Symbol(C1_public, Decl(privacyInterface.ts, 0, 18)) f2(a1: C2_private); ->f2 : Symbol(f2, Decl(privacyInterface.ts, 30, 26)) +>f2 : Symbol(C3_public.f2, Decl(privacyInterface.ts, 30, 26)) >a1 : Symbol(a1, Decl(privacyInterface.ts, 31, 11)) >C2_private : Symbol(C2_private, Decl(privacyInterface.ts, 4, 5)) f3(): C1_public; ->f3 : Symbol(f3, Decl(privacyInterface.ts, 31, 27)) +>f3 : Symbol(C3_public.f3, Decl(privacyInterface.ts, 31, 27)) >C1_public : Symbol(C1_public, Decl(privacyInterface.ts, 0, 18)) f4(): C2_private; ->f4 : Symbol(f4, Decl(privacyInterface.ts, 32, 24)) +>f4 : Symbol(C3_public.f4, Decl(privacyInterface.ts, 32, 24)) >C2_private : Symbol(C2_private, Decl(privacyInterface.ts, 4, 5)) } @@ -134,37 +134,37 @@ export module m1 { >C2_private : Symbol(C2_private, Decl(privacyInterface.ts, 4, 5)) x: C1_public; ->x : Symbol(x, Decl(privacyInterface.ts, 49, 32)) +>x : Symbol(C4_private.x, Decl(privacyInterface.ts, 49, 32)) >C1_public : Symbol(C1_public, Decl(privacyInterface.ts, 0, 18)) y: C2_private; ->y : Symbol(y, Decl(privacyInterface.ts, 51, 21)) +>y : Symbol(C4_private.y, Decl(privacyInterface.ts, 51, 21)) >C2_private : Symbol(C2_private, Decl(privacyInterface.ts, 4, 5)) a?: C1_public; ->a : Symbol(a, Decl(privacyInterface.ts, 52, 22)) +>a : Symbol(C4_private.a, Decl(privacyInterface.ts, 52, 22)) >C1_public : Symbol(C1_public, Decl(privacyInterface.ts, 0, 18)) b?: C2_private; ->b : Symbol(b, Decl(privacyInterface.ts, 54, 22)) +>b : Symbol(C4_private.b, Decl(privacyInterface.ts, 54, 22)) >C2_private : Symbol(C2_private, Decl(privacyInterface.ts, 4, 5)) f1(a1: C1_public); ->f1 : Symbol(f1, Decl(privacyInterface.ts, 55, 23)) +>f1 : Symbol(C4_private.f1, Decl(privacyInterface.ts, 55, 23)) >a1 : Symbol(a1, Decl(privacyInterface.ts, 57, 11)) >C1_public : Symbol(C1_public, Decl(privacyInterface.ts, 0, 18)) f2(a1: C2_private); ->f2 : Symbol(f2, Decl(privacyInterface.ts, 57, 26)) +>f2 : Symbol(C4_private.f2, Decl(privacyInterface.ts, 57, 26)) >a1 : Symbol(a1, Decl(privacyInterface.ts, 58, 11)) >C2_private : Symbol(C2_private, Decl(privacyInterface.ts, 4, 5)) f3(): C1_public; ->f3 : Symbol(f3, Decl(privacyInterface.ts, 58, 27)) +>f3 : Symbol(C4_private.f3, Decl(privacyInterface.ts, 58, 27)) >C1_public : Symbol(C1_public, Decl(privacyInterface.ts, 0, 18)) f4(): C2_private; ->f4 : Symbol(f4, Decl(privacyInterface.ts, 59, 24)) +>f4 : Symbol(C4_private.f4, Decl(privacyInterface.ts, 59, 24)) >C2_private : Symbol(C2_private, Decl(privacyInterface.ts, 4, 5)) } @@ -178,7 +178,7 @@ module m2 { >C1_public : Symbol(C1_public, Decl(privacyInterface.ts, 66, 11)) private f1() { ->f1 : Symbol(f1, Decl(privacyInterface.ts, 67, 28)) +>f1 : Symbol(C1_public.f1, Decl(privacyInterface.ts, 67, 28)) } } @@ -229,37 +229,37 @@ module m2 { >C2_private : Symbol(C2_private, Decl(privacyInterface.ts, 70, 5)) x: C1_public; ->x : Symbol(x, Decl(privacyInterface.ts, 88, 32)) +>x : Symbol(C3_public.x, Decl(privacyInterface.ts, 88, 32)) >C1_public : Symbol(C1_public, Decl(privacyInterface.ts, 66, 11)) y: C2_private; ->y : Symbol(y, Decl(privacyInterface.ts, 90, 21)) +>y : Symbol(C3_public.y, Decl(privacyInterface.ts, 90, 21)) >C2_private : Symbol(C2_private, Decl(privacyInterface.ts, 70, 5)) a?: C1_public; ->a : Symbol(a, Decl(privacyInterface.ts, 91, 22)) +>a : Symbol(C3_public.a, Decl(privacyInterface.ts, 91, 22)) >C1_public : Symbol(C1_public, Decl(privacyInterface.ts, 66, 11)) b?: C2_private; ->b : Symbol(b, Decl(privacyInterface.ts, 93, 22)) +>b : Symbol(C3_public.b, Decl(privacyInterface.ts, 93, 22)) >C2_private : Symbol(C2_private, Decl(privacyInterface.ts, 70, 5)) f1(a1: C1_public); ->f1 : Symbol(f1, Decl(privacyInterface.ts, 94, 23)) +>f1 : Symbol(C3_public.f1, Decl(privacyInterface.ts, 94, 23)) >a1 : Symbol(a1, Decl(privacyInterface.ts, 96, 11)) >C1_public : Symbol(C1_public, Decl(privacyInterface.ts, 66, 11)) f2(a1: C2_private); ->f2 : Symbol(f2, Decl(privacyInterface.ts, 96, 26)) +>f2 : Symbol(C3_public.f2, Decl(privacyInterface.ts, 96, 26)) >a1 : Symbol(a1, Decl(privacyInterface.ts, 97, 11)) >C2_private : Symbol(C2_private, Decl(privacyInterface.ts, 70, 5)) f3(): C1_public; ->f3 : Symbol(f3, Decl(privacyInterface.ts, 97, 27)) +>f3 : Symbol(C3_public.f3, Decl(privacyInterface.ts, 97, 27)) >C1_public : Symbol(C1_public, Decl(privacyInterface.ts, 66, 11)) f4(): C2_private; ->f4 : Symbol(f4, Decl(privacyInterface.ts, 98, 24)) +>f4 : Symbol(C3_public.f4, Decl(privacyInterface.ts, 98, 24)) >C2_private : Symbol(C2_private, Decl(privacyInterface.ts, 70, 5)) } @@ -306,37 +306,37 @@ module m2 { >C2_private : Symbol(C2_private, Decl(privacyInterface.ts, 70, 5)) x: C1_public; ->x : Symbol(x, Decl(privacyInterface.ts, 115, 32)) +>x : Symbol(C4_private.x, Decl(privacyInterface.ts, 115, 32)) >C1_public : Symbol(C1_public, Decl(privacyInterface.ts, 66, 11)) y: C2_private; ->y : Symbol(y, Decl(privacyInterface.ts, 117, 21)) +>y : Symbol(C4_private.y, Decl(privacyInterface.ts, 117, 21)) >C2_private : Symbol(C2_private, Decl(privacyInterface.ts, 70, 5)) a?: C1_public; ->a : Symbol(a, Decl(privacyInterface.ts, 118, 22)) +>a : Symbol(C4_private.a, Decl(privacyInterface.ts, 118, 22)) >C1_public : Symbol(C1_public, Decl(privacyInterface.ts, 66, 11)) b?: C2_private; ->b : Symbol(b, Decl(privacyInterface.ts, 120, 22)) +>b : Symbol(C4_private.b, Decl(privacyInterface.ts, 120, 22)) >C2_private : Symbol(C2_private, Decl(privacyInterface.ts, 70, 5)) f1(a1: C1_public); ->f1 : Symbol(f1, Decl(privacyInterface.ts, 121, 23)) +>f1 : Symbol(C4_private.f1, Decl(privacyInterface.ts, 121, 23)) >a1 : Symbol(a1, Decl(privacyInterface.ts, 123, 11)) >C1_public : Symbol(C1_public, Decl(privacyInterface.ts, 66, 11)) f2(a1: C2_private); ->f2 : Symbol(f2, Decl(privacyInterface.ts, 123, 26)) +>f2 : Symbol(C4_private.f2, Decl(privacyInterface.ts, 123, 26)) >a1 : Symbol(a1, Decl(privacyInterface.ts, 124, 11)) >C2_private : Symbol(C2_private, Decl(privacyInterface.ts, 70, 5)) f3(): C1_public; ->f3 : Symbol(f3, Decl(privacyInterface.ts, 124, 27)) +>f3 : Symbol(C4_private.f3, Decl(privacyInterface.ts, 124, 27)) >C1_public : Symbol(C1_public, Decl(privacyInterface.ts, 66, 11)) f4(): C2_private; ->f4 : Symbol(f4, Decl(privacyInterface.ts, 125, 24)) +>f4 : Symbol(C4_private.f4, Decl(privacyInterface.ts, 125, 24)) >C2_private : Symbol(C2_private, Decl(privacyInterface.ts, 70, 5)) } @@ -346,7 +346,7 @@ export class C5_public { >C5_public : Symbol(C5_public, Decl(privacyInterface.ts, 129, 1)) private f1() { ->f1 : Symbol(f1, Decl(privacyInterface.ts, 131, 24)) +>f1 : Symbol(C5_public.f1, Decl(privacyInterface.ts, 131, 24)) } } @@ -397,37 +397,37 @@ export interface C7_public { >C6_private : Symbol(C6_private, Decl(privacyInterface.ts, 134, 1)) x: C5_public; ->x : Symbol(x, Decl(privacyInterface.ts, 152, 28)) +>x : Symbol(C7_public.x, Decl(privacyInterface.ts, 152, 28)) >C5_public : Symbol(C5_public, Decl(privacyInterface.ts, 129, 1)) y: C6_private; ->y : Symbol(y, Decl(privacyInterface.ts, 154, 17)) +>y : Symbol(C7_public.y, Decl(privacyInterface.ts, 154, 17)) >C6_private : Symbol(C6_private, Decl(privacyInterface.ts, 134, 1)) a?: C5_public; ->a : Symbol(a, Decl(privacyInterface.ts, 155, 18)) +>a : Symbol(C7_public.a, Decl(privacyInterface.ts, 155, 18)) >C5_public : Symbol(C5_public, Decl(privacyInterface.ts, 129, 1)) b?: C6_private; ->b : Symbol(b, Decl(privacyInterface.ts, 157, 18)) +>b : Symbol(C7_public.b, Decl(privacyInterface.ts, 157, 18)) >C6_private : Symbol(C6_private, Decl(privacyInterface.ts, 134, 1)) f1(a1: C5_public); ->f1 : Symbol(f1, Decl(privacyInterface.ts, 158, 19)) +>f1 : Symbol(C7_public.f1, Decl(privacyInterface.ts, 158, 19)) >a1 : Symbol(a1, Decl(privacyInterface.ts, 160, 7)) >C5_public : Symbol(C5_public, Decl(privacyInterface.ts, 129, 1)) f2(a1: C6_private); ->f2 : Symbol(f2, Decl(privacyInterface.ts, 160, 22)) +>f2 : Symbol(C7_public.f2, Decl(privacyInterface.ts, 160, 22)) >a1 : Symbol(a1, Decl(privacyInterface.ts, 161, 7)) >C6_private : Symbol(C6_private, Decl(privacyInterface.ts, 134, 1)) f3(): C5_public; ->f3 : Symbol(f3, Decl(privacyInterface.ts, 161, 23)) +>f3 : Symbol(C7_public.f3, Decl(privacyInterface.ts, 161, 23)) >C5_public : Symbol(C5_public, Decl(privacyInterface.ts, 129, 1)) f4(): C6_private; ->f4 : Symbol(f4, Decl(privacyInterface.ts, 162, 20)) +>f4 : Symbol(C7_public.f4, Decl(privacyInterface.ts, 162, 20)) >C6_private : Symbol(C6_private, Decl(privacyInterface.ts, 134, 1)) } @@ -474,37 +474,37 @@ interface C8_private { >C6_private : Symbol(C6_private, Decl(privacyInterface.ts, 134, 1)) x: C5_public; ->x : Symbol(x, Decl(privacyInterface.ts, 179, 28)) +>x : Symbol(C8_private.x, Decl(privacyInterface.ts, 179, 28)) >C5_public : Symbol(C5_public, Decl(privacyInterface.ts, 129, 1)) y: C6_private; ->y : Symbol(y, Decl(privacyInterface.ts, 181, 17)) +>y : Symbol(C8_private.y, Decl(privacyInterface.ts, 181, 17)) >C6_private : Symbol(C6_private, Decl(privacyInterface.ts, 134, 1)) a?: C5_public; ->a : Symbol(a, Decl(privacyInterface.ts, 182, 18)) +>a : Symbol(C8_private.a, Decl(privacyInterface.ts, 182, 18)) >C5_public : Symbol(C5_public, Decl(privacyInterface.ts, 129, 1)) b?: C6_private; ->b : Symbol(b, Decl(privacyInterface.ts, 184, 18)) +>b : Symbol(C8_private.b, Decl(privacyInterface.ts, 184, 18)) >C6_private : Symbol(C6_private, Decl(privacyInterface.ts, 134, 1)) f1(a1: C5_public); ->f1 : Symbol(f1, Decl(privacyInterface.ts, 185, 19)) +>f1 : Symbol(C8_private.f1, Decl(privacyInterface.ts, 185, 19)) >a1 : Symbol(a1, Decl(privacyInterface.ts, 187, 7)) >C5_public : Symbol(C5_public, Decl(privacyInterface.ts, 129, 1)) f2(a1: C6_private); ->f2 : Symbol(f2, Decl(privacyInterface.ts, 187, 22)) +>f2 : Symbol(C8_private.f2, Decl(privacyInterface.ts, 187, 22)) >a1 : Symbol(a1, Decl(privacyInterface.ts, 188, 7)) >C6_private : Symbol(C6_private, Decl(privacyInterface.ts, 134, 1)) f3(): C5_public; ->f3 : Symbol(f3, Decl(privacyInterface.ts, 188, 23)) +>f3 : Symbol(C8_private.f3, Decl(privacyInterface.ts, 188, 23)) >C5_public : Symbol(C5_public, Decl(privacyInterface.ts, 129, 1)) f4(): C6_private; ->f4 : Symbol(f4, Decl(privacyInterface.ts, 189, 20)) +>f4 : Symbol(C8_private.f4, Decl(privacyInterface.ts, 189, 20)) >C6_private : Symbol(C6_private, Decl(privacyInterface.ts, 134, 1)) } @@ -516,14 +516,14 @@ export module m3 { >m3_i_public : Symbol(m3_i_public, Decl(privacyInterface.ts, 194, 18)) f1(): number; ->f1 : Symbol(f1, Decl(privacyInterface.ts, 195, 34)) +>f1 : Symbol(m3_i_public.f1, Decl(privacyInterface.ts, 195, 34)) } interface m3_i_private { >m3_i_private : Symbol(m3_i_private, Decl(privacyInterface.ts, 197, 5)) f2(): string; ->f2 : Symbol(f2, Decl(privacyInterface.ts, 199, 28)) +>f2 : Symbol(m3_i_private.f2, Decl(privacyInterface.ts, 199, 28)) } interface m3_C1_private extends m3_i_public { @@ -563,14 +563,14 @@ module m4 { >m4_i_public : Symbol(m4_i_public, Decl(privacyInterface.ts, 219, 11)) f1(): number; ->f1 : Symbol(f1, Decl(privacyInterface.ts, 220, 34)) +>f1 : Symbol(m4_i_public.f1, Decl(privacyInterface.ts, 220, 34)) } interface m4_i_private { >m4_i_private : Symbol(m4_i_private, Decl(privacyInterface.ts, 222, 5)) f2(): string; ->f2 : Symbol(f2, Decl(privacyInterface.ts, 224, 28)) +>f2 : Symbol(m4_i_private.f2, Decl(privacyInterface.ts, 224, 28)) } interface m4_C1_private extends m4_i_public { @@ -606,14 +606,14 @@ export interface glo_i_public { >glo_i_public : Symbol(glo_i_public, Decl(privacyInterface.ts, 241, 1)) f1(): number; ->f1 : Symbol(f1, Decl(privacyInterface.ts, 243, 31)) +>f1 : Symbol(glo_i_public.f1, Decl(privacyInterface.ts, 243, 31)) } interface glo_i_private { >glo_i_private : Symbol(glo_i_private, Decl(privacyInterface.ts, 245, 1)) f2(): string; ->f2 : Symbol(f2, Decl(privacyInterface.ts, 247, 25)) +>f2 : Symbol(glo_i_private.f2, Decl(privacyInterface.ts, 247, 25)) } interface glo_C1_private extends glo_i_public { diff --git a/tests/baselines/reference/privacyTypeParameterOfFunction.symbols b/tests/baselines/reference/privacyTypeParameterOfFunction.symbols index dbdb0617aab..db50f1e61a4 100644 --- a/tests/baselines/reference/privacyTypeParameterOfFunction.symbols +++ b/tests/baselines/reference/privacyTypeParameterOfFunction.symbols @@ -24,7 +24,7 @@ export interface publicInterfaceWithPrivateTypeParameters { // TypeParameter_0_of_method_from_exported_interface_has_or_is_using_private_type_1 myMethod(): privateClass; ->myMethod : Symbol(myMethod, Decl(privacyTypeParameterOfFunction.ts, 11, 45)) +>myMethod : Symbol(publicInterfaceWithPrivateTypeParameters.myMethod, Decl(privacyTypeParameterOfFunction.ts, 11, 45)) >T : Symbol(T, Decl(privacyTypeParameterOfFunction.ts, 14, 13)) >privateClass : Symbol(privateClass, Decl(privacyTypeParameterOfFunction.ts, 0, 0)) >privateClass : Symbol(privateClass, Decl(privacyTypeParameterOfFunction.ts, 0, 0)) @@ -44,7 +44,7 @@ export interface publicInterfaceWithPublicTypeParameters { >publicClass : Symbol(publicClass, Decl(privacyTypeParameterOfFunction.ts, 1, 1)) myMethod(): publicClass; ->myMethod : Symbol(myMethod, Decl(privacyTypeParameterOfFunction.ts, 19, 43)) +>myMethod : Symbol(publicInterfaceWithPublicTypeParameters.myMethod, Decl(privacyTypeParameterOfFunction.ts, 19, 43)) >T : Symbol(T, Decl(privacyTypeParameterOfFunction.ts, 20, 13)) >publicClass : Symbol(publicClass, Decl(privacyTypeParameterOfFunction.ts, 1, 1)) >publicClass : Symbol(publicClass, Decl(privacyTypeParameterOfFunction.ts, 1, 1)) @@ -64,7 +64,7 @@ interface privateInterfaceWithPrivateTypeParameters { >privateClass : Symbol(privateClass, Decl(privacyTypeParameterOfFunction.ts, 0, 0)) myMethod(): privateClass; ->myMethod : Symbol(myMethod, Decl(privacyTypeParameterOfFunction.ts, 25, 45)) +>myMethod : Symbol(privateInterfaceWithPrivateTypeParameters.myMethod, Decl(privacyTypeParameterOfFunction.ts, 25, 45)) >T : Symbol(T, Decl(privacyTypeParameterOfFunction.ts, 26, 13)) >privateClass : Symbol(privateClass, Decl(privacyTypeParameterOfFunction.ts, 0, 0)) >privateClass : Symbol(privateClass, Decl(privacyTypeParameterOfFunction.ts, 0, 0)) @@ -84,7 +84,7 @@ interface privateInterfaceWithPublicTypeParameters { >publicClass : Symbol(publicClass, Decl(privacyTypeParameterOfFunction.ts, 1, 1)) myMethod(): publicClass; ->myMethod : Symbol(myMethod, Decl(privacyTypeParameterOfFunction.ts, 31, 43)) +>myMethod : Symbol(privateInterfaceWithPublicTypeParameters.myMethod, Decl(privacyTypeParameterOfFunction.ts, 31, 43)) >T : Symbol(T, Decl(privacyTypeParameterOfFunction.ts, 32, 13)) >publicClass : Symbol(publicClass, Decl(privacyTypeParameterOfFunction.ts, 1, 1)) >publicClass : Symbol(publicClass, Decl(privacyTypeParameterOfFunction.ts, 1, 1)) @@ -106,12 +106,12 @@ export class publicClassWithWithPrivateTypeParameters { } // TypeParameter_0_of_public_method_from_exported_class_has_or_is_using_private_type_1 myPublicMethod() { ->myPublicMethod : Symbol(myPublicMethod, Decl(privacyTypeParameterOfFunction.ts, 40, 5)) +>myPublicMethod : Symbol(publicClassWithWithPrivateTypeParameters.myPublicMethod, Decl(privacyTypeParameterOfFunction.ts, 40, 5)) >T : Symbol(T, Decl(privacyTypeParameterOfFunction.ts, 42, 19)) >privateClass : Symbol(privateClass, Decl(privacyTypeParameterOfFunction.ts, 0, 0)) } private myPrivateMethod() { // No error ->myPrivateMethod : Symbol(myPrivateMethod, Decl(privacyTypeParameterOfFunction.ts, 43, 5)) +>myPrivateMethod : Symbol(publicClassWithWithPrivateTypeParameters.myPrivateMethod, Decl(privacyTypeParameterOfFunction.ts, 43, 5)) >T : Symbol(T, Decl(privacyTypeParameterOfFunction.ts, 44, 28)) >privateClass : Symbol(privateClass, Decl(privacyTypeParameterOfFunction.ts, 0, 0)) } @@ -131,12 +131,12 @@ export class publicClassWithWithPublicTypeParameters { >publicClass : Symbol(publicClass, Decl(privacyTypeParameterOfFunction.ts, 1, 1)) } myPublicMethod() { ->myPublicMethod : Symbol(myPublicMethod, Decl(privacyTypeParameterOfFunction.ts, 52, 5)) +>myPublicMethod : Symbol(publicClassWithWithPublicTypeParameters.myPublicMethod, Decl(privacyTypeParameterOfFunction.ts, 52, 5)) >T : Symbol(T, Decl(privacyTypeParameterOfFunction.ts, 53, 19)) >publicClass : Symbol(publicClass, Decl(privacyTypeParameterOfFunction.ts, 1, 1)) } private myPrivateMethod() { ->myPrivateMethod : Symbol(myPrivateMethod, Decl(privacyTypeParameterOfFunction.ts, 54, 5)) +>myPrivateMethod : Symbol(publicClassWithWithPublicTypeParameters.myPrivateMethod, Decl(privacyTypeParameterOfFunction.ts, 54, 5)) >T : Symbol(T, Decl(privacyTypeParameterOfFunction.ts, 55, 28)) >publicClass : Symbol(publicClass, Decl(privacyTypeParameterOfFunction.ts, 1, 1)) } @@ -156,12 +156,12 @@ class privateClassWithWithPrivateTypeParameters { >privateClass : Symbol(privateClass, Decl(privacyTypeParameterOfFunction.ts, 0, 0)) } myPublicMethod() { ->myPublicMethod : Symbol(myPublicMethod, Decl(privacyTypeParameterOfFunction.ts, 63, 5)) +>myPublicMethod : Symbol(privateClassWithWithPrivateTypeParameters.myPublicMethod, Decl(privacyTypeParameterOfFunction.ts, 63, 5)) >T : Symbol(T, Decl(privacyTypeParameterOfFunction.ts, 64, 19)) >privateClass : Symbol(privateClass, Decl(privacyTypeParameterOfFunction.ts, 0, 0)) } private myPrivateMethod() { // No error ->myPrivateMethod : Symbol(myPrivateMethod, Decl(privacyTypeParameterOfFunction.ts, 65, 5)) +>myPrivateMethod : Symbol(privateClassWithWithPrivateTypeParameters.myPrivateMethod, Decl(privacyTypeParameterOfFunction.ts, 65, 5)) >T : Symbol(T, Decl(privacyTypeParameterOfFunction.ts, 66, 28)) >privateClass : Symbol(privateClass, Decl(privacyTypeParameterOfFunction.ts, 0, 0)) } @@ -181,12 +181,12 @@ class privateClassWithWithPublicTypeParameters { >publicClass : Symbol(publicClass, Decl(privacyTypeParameterOfFunction.ts, 1, 1)) } myPublicMethod() { ->myPublicMethod : Symbol(myPublicMethod, Decl(privacyTypeParameterOfFunction.ts, 74, 5)) +>myPublicMethod : Symbol(privateClassWithWithPublicTypeParameters.myPublicMethod, Decl(privacyTypeParameterOfFunction.ts, 74, 5)) >T : Symbol(T, Decl(privacyTypeParameterOfFunction.ts, 75, 19)) >publicClass : Symbol(publicClass, Decl(privacyTypeParameterOfFunction.ts, 1, 1)) } private myPrivateMethod() { ->myPrivateMethod : Symbol(myPrivateMethod, Decl(privacyTypeParameterOfFunction.ts, 76, 5)) +>myPrivateMethod : Symbol(privateClassWithWithPublicTypeParameters.myPrivateMethod, Decl(privacyTypeParameterOfFunction.ts, 76, 5)) >T : Symbol(T, Decl(privacyTypeParameterOfFunction.ts, 77, 28)) >publicClass : Symbol(publicClass, Decl(privacyTypeParameterOfFunction.ts, 1, 1)) } @@ -229,7 +229,7 @@ export interface publicInterfaceWithPublicTypeParametersWithoutExtends { >publicClass : Symbol(publicClass, Decl(privacyTypeParameterOfFunction.ts, 1, 1)) myMethod(): publicClass; ->myMethod : Symbol(myMethod, Decl(privacyTypeParameterOfFunction.ts, 96, 23)) +>myMethod : Symbol(publicInterfaceWithPublicTypeParametersWithoutExtends.myMethod, Decl(privacyTypeParameterOfFunction.ts, 96, 23)) >T : Symbol(T, Decl(privacyTypeParameterOfFunction.ts, 97, 13)) >publicClass : Symbol(publicClass, Decl(privacyTypeParameterOfFunction.ts, 1, 1)) } @@ -246,7 +246,7 @@ interface privateInterfaceWithPublicTypeParametersWithoutExtends { >publicClass : Symbol(publicClass, Decl(privacyTypeParameterOfFunction.ts, 1, 1)) myMethod(): publicClass; ->myMethod : Symbol(myMethod, Decl(privacyTypeParameterOfFunction.ts, 102, 23)) +>myMethod : Symbol(privateInterfaceWithPublicTypeParametersWithoutExtends.myMethod, Decl(privacyTypeParameterOfFunction.ts, 102, 23)) >T : Symbol(T, Decl(privacyTypeParameterOfFunction.ts, 103, 13)) >publicClass : Symbol(publicClass, Decl(privacyTypeParameterOfFunction.ts, 1, 1)) } @@ -263,11 +263,11 @@ export class publicClassWithWithPublicTypeParametersWithoutExtends { >T : Symbol(T, Decl(privacyTypeParameterOfFunction.ts, 109, 41)) } myPublicMethod() { ->myPublicMethod : Symbol(myPublicMethod, Decl(privacyTypeParameterOfFunction.ts, 110, 5)) +>myPublicMethod : Symbol(publicClassWithWithPublicTypeParametersWithoutExtends.myPublicMethod, Decl(privacyTypeParameterOfFunction.ts, 110, 5)) >T : Symbol(T, Decl(privacyTypeParameterOfFunction.ts, 111, 19)) } private myPrivateMethod() { ->myPrivateMethod : Symbol(myPrivateMethod, Decl(privacyTypeParameterOfFunction.ts, 112, 5)) +>myPrivateMethod : Symbol(publicClassWithWithPublicTypeParametersWithoutExtends.myPrivateMethod, Decl(privacyTypeParameterOfFunction.ts, 112, 5)) >T : Symbol(T, Decl(privacyTypeParameterOfFunction.ts, 113, 28)) } } @@ -283,11 +283,11 @@ class privateClassWithWithPublicTypeParametersWithoutExtends { >T : Symbol(T, Decl(privacyTypeParameterOfFunction.ts, 119, 41)) } myPublicMethod() { ->myPublicMethod : Symbol(myPublicMethod, Decl(privacyTypeParameterOfFunction.ts, 120, 5)) +>myPublicMethod : Symbol(privateClassWithWithPublicTypeParametersWithoutExtends.myPublicMethod, Decl(privacyTypeParameterOfFunction.ts, 120, 5)) >T : Symbol(T, Decl(privacyTypeParameterOfFunction.ts, 121, 19)) } private myPrivateMethod() { ->myPrivateMethod : Symbol(myPrivateMethod, Decl(privacyTypeParameterOfFunction.ts, 122, 5)) +>myPrivateMethod : Symbol(privateClassWithWithPublicTypeParametersWithoutExtends.myPrivateMethod, Decl(privacyTypeParameterOfFunction.ts, 122, 5)) >T : Symbol(T, Decl(privacyTypeParameterOfFunction.ts, 123, 28)) } } diff --git a/tests/baselines/reference/privacyTypeParametersOfClass.symbols b/tests/baselines/reference/privacyTypeParametersOfClass.symbols index cdb0e6044cf..6f52f1bd391 100644 --- a/tests/baselines/reference/privacyTypeParametersOfClass.symbols +++ b/tests/baselines/reference/privacyTypeParametersOfClass.symbols @@ -14,7 +14,7 @@ export class publicClassWithPrivateTypeParameters { >privateClass : Symbol(privateClass, Decl(privacyTypeParametersOfClass.ts, 0, 0)) myMethod(val: T): T { // Error ->myMethod : Symbol(myMethod, Decl(privacyTypeParametersOfClass.ts, 7, 75)) +>myMethod : Symbol(publicClassWithPrivateTypeParameters.myMethod, Decl(privacyTypeParametersOfClass.ts, 7, 75)) >val : Symbol(val, Decl(privacyTypeParametersOfClass.ts, 8, 13)) >T : Symbol(T, Decl(privacyTypeParametersOfClass.ts, 7, 50)) >T : Symbol(T, Decl(privacyTypeParametersOfClass.ts, 7, 50)) @@ -30,7 +30,7 @@ export class publicClassWithPublicTypeParameters { >publicClass : Symbol(publicClass, Decl(privacyTypeParametersOfClass.ts, 1, 1)) myMethod(val: T): T { // No Error ->myMethod : Symbol(myMethod, Decl(privacyTypeParametersOfClass.ts, 13, 73)) +>myMethod : Symbol(publicClassWithPublicTypeParameters.myMethod, Decl(privacyTypeParametersOfClass.ts, 13, 73)) >val : Symbol(val, Decl(privacyTypeParametersOfClass.ts, 14, 13)) >T : Symbol(T, Decl(privacyTypeParametersOfClass.ts, 13, 49)) >T : Symbol(T, Decl(privacyTypeParametersOfClass.ts, 13, 49)) @@ -46,7 +46,7 @@ class privateClassWithPrivateTypeParameters { >privateClass : Symbol(privateClass, Decl(privacyTypeParametersOfClass.ts, 0, 0)) myMethod(val: T): T { // No Error ->myMethod : Symbol(myMethod, Decl(privacyTypeParametersOfClass.ts, 19, 69)) +>myMethod : Symbol(privateClassWithPrivateTypeParameters.myMethod, Decl(privacyTypeParametersOfClass.ts, 19, 69)) >val : Symbol(val, Decl(privacyTypeParametersOfClass.ts, 20, 13)) >T : Symbol(T, Decl(privacyTypeParametersOfClass.ts, 19, 44)) >T : Symbol(T, Decl(privacyTypeParametersOfClass.ts, 19, 44)) @@ -62,7 +62,7 @@ class privateClassWithPublicTypeParameters { >publicClass : Symbol(publicClass, Decl(privacyTypeParametersOfClass.ts, 1, 1)) myMethod(val: T): T { // No Error ->myMethod : Symbol(myMethod, Decl(privacyTypeParametersOfClass.ts, 25, 67)) +>myMethod : Symbol(privateClassWithPublicTypeParameters.myMethod, Decl(privacyTypeParametersOfClass.ts, 25, 67)) >val : Symbol(val, Decl(privacyTypeParametersOfClass.ts, 26, 13)) >T : Symbol(T, Decl(privacyTypeParametersOfClass.ts, 25, 43)) >T : Symbol(T, Decl(privacyTypeParametersOfClass.ts, 25, 43)) @@ -77,7 +77,7 @@ export class publicClassWithPublicTypeParametersWithoutExtends { >T : Symbol(T, Decl(privacyTypeParametersOfClass.ts, 31, 63)) myMethod(val: T): T { // No Error ->myMethod : Symbol(myMethod, Decl(privacyTypeParametersOfClass.ts, 31, 67)) +>myMethod : Symbol(publicClassWithPublicTypeParametersWithoutExtends.myMethod, Decl(privacyTypeParametersOfClass.ts, 31, 67)) >val : Symbol(val, Decl(privacyTypeParametersOfClass.ts, 32, 13)) >T : Symbol(T, Decl(privacyTypeParametersOfClass.ts, 31, 63)) >T : Symbol(T, Decl(privacyTypeParametersOfClass.ts, 31, 63)) @@ -92,7 +92,7 @@ class privateClassWithPublicTypeParametersWithoutExtends { >T : Symbol(T, Decl(privacyTypeParametersOfClass.ts, 37, 57)) myMethod(val: T): T { // No Error ->myMethod : Symbol(myMethod, Decl(privacyTypeParametersOfClass.ts, 37, 61)) +>myMethod : Symbol(privateClassWithPublicTypeParametersWithoutExtends.myMethod, Decl(privacyTypeParametersOfClass.ts, 37, 61)) >val : Symbol(val, Decl(privacyTypeParametersOfClass.ts, 38, 13)) >T : Symbol(T, Decl(privacyTypeParametersOfClass.ts, 37, 57)) >T : Symbol(T, Decl(privacyTypeParametersOfClass.ts, 37, 57)) diff --git a/tests/baselines/reference/privacyTypeParametersOfInterface.symbols b/tests/baselines/reference/privacyTypeParametersOfInterface.symbols index 8d6e2070444..2ee927a9eec 100644 --- a/tests/baselines/reference/privacyTypeParametersOfInterface.symbols +++ b/tests/baselines/reference/privacyTypeParametersOfInterface.symbols @@ -24,33 +24,33 @@ export interface publicInterfaceWithPrivateTypeParametersprivateClass : Symbol(privateClass, Decl(privacyTypeParametersOfInterface.ts, 0, 0)) myMethod(val: T): T; // Error ->myMethod : Symbol(myMethod, Decl(privacyTypeParametersOfInterface.ts, 13, 83)) +>myMethod : Symbol(publicInterfaceWithPrivateTypeParameters.myMethod, Decl(privacyTypeParametersOfInterface.ts, 13, 83)) >val : Symbol(val, Decl(privacyTypeParametersOfInterface.ts, 14, 13)) >T : Symbol(T, Decl(privacyTypeParametersOfInterface.ts, 13, 58)) >T : Symbol(T, Decl(privacyTypeParametersOfInterface.ts, 13, 58)) myMethod0(): publicClassT; // error ->myMethod0 : Symbol(myMethod0, Decl(privacyTypeParametersOfInterface.ts, 14, 24)) +>myMethod0 : Symbol(publicInterfaceWithPrivateTypeParameters.myMethod0, Decl(privacyTypeParametersOfInterface.ts, 14, 24)) >publicClassT : Symbol(publicClassT, Decl(privacyTypeParametersOfInterface.ts, 7, 1)) >T : Symbol(T, Decl(privacyTypeParametersOfInterface.ts, 13, 58)) myMethod1(): privateClassT; // error ->myMethod1 : Symbol(myMethod1, Decl(privacyTypeParametersOfInterface.ts, 15, 33)) +>myMethod1 : Symbol(publicInterfaceWithPrivateTypeParameters.myMethod1, Decl(privacyTypeParametersOfInterface.ts, 15, 33)) >privateClassT : Symbol(privateClassT, Decl(privacyTypeParametersOfInterface.ts, 4, 1)) >privateClass : Symbol(privateClass, Decl(privacyTypeParametersOfInterface.ts, 0, 0)) myMethod2(): privateClassT; // error ->myMethod2 : Symbol(myMethod2, Decl(privacyTypeParametersOfInterface.ts, 16, 45)) +>myMethod2 : Symbol(publicInterfaceWithPrivateTypeParameters.myMethod2, Decl(privacyTypeParametersOfInterface.ts, 16, 45)) >privateClassT : Symbol(privateClassT, Decl(privacyTypeParametersOfInterface.ts, 4, 1)) >publicClass : Symbol(publicClass, Decl(privacyTypeParametersOfInterface.ts, 1, 1)) myMethod3(): publicClassT; //error ->myMethod3 : Symbol(myMethod3, Decl(privacyTypeParametersOfInterface.ts, 17, 44)) +>myMethod3 : Symbol(publicInterfaceWithPrivateTypeParameters.myMethod3, Decl(privacyTypeParametersOfInterface.ts, 17, 44)) >publicClassT : Symbol(publicClassT, Decl(privacyTypeParametersOfInterface.ts, 7, 1)) >privateClass : Symbol(privateClass, Decl(privacyTypeParametersOfInterface.ts, 0, 0)) myMethod4(): publicClassT; // no error ->myMethod4 : Symbol(myMethod4, Decl(privacyTypeParametersOfInterface.ts, 18, 44)) +>myMethod4 : Symbol(publicInterfaceWithPrivateTypeParameters.myMethod4, Decl(privacyTypeParametersOfInterface.ts, 18, 44)) >publicClassT : Symbol(publicClassT, Decl(privacyTypeParametersOfInterface.ts, 7, 1)) >publicClass : Symbol(publicClass, Decl(privacyTypeParametersOfInterface.ts, 1, 1)) } @@ -61,33 +61,33 @@ export interface publicInterfaceWithPublicTypeParameters >publicClass : Symbol(publicClass, Decl(privacyTypeParametersOfInterface.ts, 1, 1)) myMethod(val: T): T; // No Error ->myMethod : Symbol(myMethod, Decl(privacyTypeParametersOfInterface.ts, 22, 81)) +>myMethod : Symbol(publicInterfaceWithPublicTypeParameters.myMethod, Decl(privacyTypeParametersOfInterface.ts, 22, 81)) >val : Symbol(val, Decl(privacyTypeParametersOfInterface.ts, 23, 13)) >T : Symbol(T, Decl(privacyTypeParametersOfInterface.ts, 22, 57)) >T : Symbol(T, Decl(privacyTypeParametersOfInterface.ts, 22, 57)) myMethod0(): publicClassT; // No error ->myMethod0 : Symbol(myMethod0, Decl(privacyTypeParametersOfInterface.ts, 23, 24)) +>myMethod0 : Symbol(publicInterfaceWithPublicTypeParameters.myMethod0, Decl(privacyTypeParametersOfInterface.ts, 23, 24)) >publicClassT : Symbol(publicClassT, Decl(privacyTypeParametersOfInterface.ts, 7, 1)) >T : Symbol(T, Decl(privacyTypeParametersOfInterface.ts, 22, 57)) myMethod1(): privateClassT; // error ->myMethod1 : Symbol(myMethod1, Decl(privacyTypeParametersOfInterface.ts, 24, 33)) +>myMethod1 : Symbol(publicInterfaceWithPublicTypeParameters.myMethod1, Decl(privacyTypeParametersOfInterface.ts, 24, 33)) >privateClassT : Symbol(privateClassT, Decl(privacyTypeParametersOfInterface.ts, 4, 1)) >privateClass : Symbol(privateClass, Decl(privacyTypeParametersOfInterface.ts, 0, 0)) myMethod2(): privateClassT; // error ->myMethod2 : Symbol(myMethod2, Decl(privacyTypeParametersOfInterface.ts, 25, 45)) +>myMethod2 : Symbol(publicInterfaceWithPublicTypeParameters.myMethod2, Decl(privacyTypeParametersOfInterface.ts, 25, 45)) >privateClassT : Symbol(privateClassT, Decl(privacyTypeParametersOfInterface.ts, 4, 1)) >publicClass : Symbol(publicClass, Decl(privacyTypeParametersOfInterface.ts, 1, 1)) myMethod3(): publicClassT; //error ->myMethod3 : Symbol(myMethod3, Decl(privacyTypeParametersOfInterface.ts, 26, 44)) +>myMethod3 : Symbol(publicInterfaceWithPublicTypeParameters.myMethod3, Decl(privacyTypeParametersOfInterface.ts, 26, 44)) >publicClassT : Symbol(publicClassT, Decl(privacyTypeParametersOfInterface.ts, 7, 1)) >privateClass : Symbol(privateClass, Decl(privacyTypeParametersOfInterface.ts, 0, 0)) myMethod4(): publicClassT; // no error ->myMethod4 : Symbol(myMethod4, Decl(privacyTypeParametersOfInterface.ts, 27, 44)) +>myMethod4 : Symbol(publicInterfaceWithPublicTypeParameters.myMethod4, Decl(privacyTypeParametersOfInterface.ts, 27, 44)) >publicClassT : Symbol(publicClassT, Decl(privacyTypeParametersOfInterface.ts, 7, 1)) >publicClass : Symbol(publicClass, Decl(privacyTypeParametersOfInterface.ts, 1, 1)) } @@ -98,33 +98,33 @@ interface privateInterfaceWithPrivateTypeParameters { >privateClass : Symbol(privateClass, Decl(privacyTypeParametersOfInterface.ts, 0, 0)) myMethod(val: T): T; // No Error ->myMethod : Symbol(myMethod, Decl(privacyTypeParametersOfInterface.ts, 31, 77)) +>myMethod : Symbol(privateInterfaceWithPrivateTypeParameters.myMethod, Decl(privacyTypeParametersOfInterface.ts, 31, 77)) >val : Symbol(val, Decl(privacyTypeParametersOfInterface.ts, 32, 13)) >T : Symbol(T, Decl(privacyTypeParametersOfInterface.ts, 31, 52)) >T : Symbol(T, Decl(privacyTypeParametersOfInterface.ts, 31, 52)) myMethod0(): publicClassT; // No error ->myMethod0 : Symbol(myMethod0, Decl(privacyTypeParametersOfInterface.ts, 32, 24)) +>myMethod0 : Symbol(privateInterfaceWithPrivateTypeParameters.myMethod0, Decl(privacyTypeParametersOfInterface.ts, 32, 24)) >publicClassT : Symbol(publicClassT, Decl(privacyTypeParametersOfInterface.ts, 7, 1)) >T : Symbol(T, Decl(privacyTypeParametersOfInterface.ts, 31, 52)) myMethod1(): privateClassT; // No error ->myMethod1 : Symbol(myMethod1, Decl(privacyTypeParametersOfInterface.ts, 33, 33)) +>myMethod1 : Symbol(privateInterfaceWithPrivateTypeParameters.myMethod1, Decl(privacyTypeParametersOfInterface.ts, 33, 33)) >privateClassT : Symbol(privateClassT, Decl(privacyTypeParametersOfInterface.ts, 4, 1)) >privateClass : Symbol(privateClass, Decl(privacyTypeParametersOfInterface.ts, 0, 0)) myMethod2(): privateClassT; // No error ->myMethod2 : Symbol(myMethod2, Decl(privacyTypeParametersOfInterface.ts, 34, 45)) +>myMethod2 : Symbol(privateInterfaceWithPrivateTypeParameters.myMethod2, Decl(privacyTypeParametersOfInterface.ts, 34, 45)) >privateClassT : Symbol(privateClassT, Decl(privacyTypeParametersOfInterface.ts, 4, 1)) >publicClass : Symbol(publicClass, Decl(privacyTypeParametersOfInterface.ts, 1, 1)) myMethod3(): publicClassT; //No error ->myMethod3 : Symbol(myMethod3, Decl(privacyTypeParametersOfInterface.ts, 35, 44)) +>myMethod3 : Symbol(privateInterfaceWithPrivateTypeParameters.myMethod3, Decl(privacyTypeParametersOfInterface.ts, 35, 44)) >publicClassT : Symbol(publicClassT, Decl(privacyTypeParametersOfInterface.ts, 7, 1)) >privateClass : Symbol(privateClass, Decl(privacyTypeParametersOfInterface.ts, 0, 0)) myMethod4(): publicClassT; // no error ->myMethod4 : Symbol(myMethod4, Decl(privacyTypeParametersOfInterface.ts, 36, 44)) +>myMethod4 : Symbol(privateInterfaceWithPrivateTypeParameters.myMethod4, Decl(privacyTypeParametersOfInterface.ts, 36, 44)) >publicClassT : Symbol(publicClassT, Decl(privacyTypeParametersOfInterface.ts, 7, 1)) >publicClass : Symbol(publicClass, Decl(privacyTypeParametersOfInterface.ts, 1, 1)) } @@ -135,33 +135,33 @@ interface privateInterfaceWithPublicTypeParameters { >publicClass : Symbol(publicClass, Decl(privacyTypeParametersOfInterface.ts, 1, 1)) myMethod(val: T): T; // No Error ->myMethod : Symbol(myMethod, Decl(privacyTypeParametersOfInterface.ts, 40, 75)) +>myMethod : Symbol(privateInterfaceWithPublicTypeParameters.myMethod, Decl(privacyTypeParametersOfInterface.ts, 40, 75)) >val : Symbol(val, Decl(privacyTypeParametersOfInterface.ts, 41, 13)) >T : Symbol(T, Decl(privacyTypeParametersOfInterface.ts, 40, 51)) >T : Symbol(T, Decl(privacyTypeParametersOfInterface.ts, 40, 51)) myMethod0(): publicClassT; // No error ->myMethod0 : Symbol(myMethod0, Decl(privacyTypeParametersOfInterface.ts, 41, 24)) +>myMethod0 : Symbol(privateInterfaceWithPublicTypeParameters.myMethod0, Decl(privacyTypeParametersOfInterface.ts, 41, 24)) >publicClassT : Symbol(publicClassT, Decl(privacyTypeParametersOfInterface.ts, 7, 1)) >T : Symbol(T, Decl(privacyTypeParametersOfInterface.ts, 40, 51)) myMethod1(): privateClassT; // No error ->myMethod1 : Symbol(myMethod1, Decl(privacyTypeParametersOfInterface.ts, 42, 33)) +>myMethod1 : Symbol(privateInterfaceWithPublicTypeParameters.myMethod1, Decl(privacyTypeParametersOfInterface.ts, 42, 33)) >privateClassT : Symbol(privateClassT, Decl(privacyTypeParametersOfInterface.ts, 4, 1)) >privateClass : Symbol(privateClass, Decl(privacyTypeParametersOfInterface.ts, 0, 0)) myMethod2(): privateClassT; // No error ->myMethod2 : Symbol(myMethod2, Decl(privacyTypeParametersOfInterface.ts, 43, 45)) +>myMethod2 : Symbol(privateInterfaceWithPublicTypeParameters.myMethod2, Decl(privacyTypeParametersOfInterface.ts, 43, 45)) >privateClassT : Symbol(privateClassT, Decl(privacyTypeParametersOfInterface.ts, 4, 1)) >publicClass : Symbol(publicClass, Decl(privacyTypeParametersOfInterface.ts, 1, 1)) myMethod3(): publicClassT; //No error ->myMethod3 : Symbol(myMethod3, Decl(privacyTypeParametersOfInterface.ts, 44, 44)) +>myMethod3 : Symbol(privateInterfaceWithPublicTypeParameters.myMethod3, Decl(privacyTypeParametersOfInterface.ts, 44, 44)) >publicClassT : Symbol(publicClassT, Decl(privacyTypeParametersOfInterface.ts, 7, 1)) >privateClass : Symbol(privateClass, Decl(privacyTypeParametersOfInterface.ts, 0, 0)) myMethod4(): publicClassT; // no error ->myMethod4 : Symbol(myMethod4, Decl(privacyTypeParametersOfInterface.ts, 45, 44)) +>myMethod4 : Symbol(privateInterfaceWithPublicTypeParameters.myMethod4, Decl(privacyTypeParametersOfInterface.ts, 45, 44)) >publicClassT : Symbol(publicClassT, Decl(privacyTypeParametersOfInterface.ts, 7, 1)) >publicClass : Symbol(publicClass, Decl(privacyTypeParametersOfInterface.ts, 1, 1)) } @@ -171,13 +171,13 @@ export interface publicInterfaceWithPublicTypeParametersWithoutExtends { >T : Symbol(T, Decl(privacyTypeParametersOfInterface.ts, 49, 71)) myMethod(val: T): T; // No Error ->myMethod : Symbol(myMethod, Decl(privacyTypeParametersOfInterface.ts, 49, 75)) +>myMethod : Symbol(publicInterfaceWithPublicTypeParametersWithoutExtends.myMethod, Decl(privacyTypeParametersOfInterface.ts, 49, 75)) >val : Symbol(val, Decl(privacyTypeParametersOfInterface.ts, 50, 13)) >T : Symbol(T, Decl(privacyTypeParametersOfInterface.ts, 49, 71)) >T : Symbol(T, Decl(privacyTypeParametersOfInterface.ts, 49, 71)) myMethod0(): publicClassT; // No error ->myMethod0 : Symbol(myMethod0, Decl(privacyTypeParametersOfInterface.ts, 50, 24)) +>myMethod0 : Symbol(publicInterfaceWithPublicTypeParametersWithoutExtends.myMethod0, Decl(privacyTypeParametersOfInterface.ts, 50, 24)) >publicClassT : Symbol(publicClassT, Decl(privacyTypeParametersOfInterface.ts, 7, 1)) >T : Symbol(T, Decl(privacyTypeParametersOfInterface.ts, 49, 71)) } @@ -187,13 +187,13 @@ interface privateInterfaceWithPublicTypeParametersWithoutExtends { >T : Symbol(T, Decl(privacyTypeParametersOfInterface.ts, 54, 65)) myMethod(val: T): T; // No Error ->myMethod : Symbol(myMethod, Decl(privacyTypeParametersOfInterface.ts, 54, 69)) +>myMethod : Symbol(privateInterfaceWithPublicTypeParametersWithoutExtends.myMethod, Decl(privacyTypeParametersOfInterface.ts, 54, 69)) >val : Symbol(val, Decl(privacyTypeParametersOfInterface.ts, 55, 13)) >T : Symbol(T, Decl(privacyTypeParametersOfInterface.ts, 54, 65)) >T : Symbol(T, Decl(privacyTypeParametersOfInterface.ts, 54, 65)) myMethod0(): publicClassT; // No error ->myMethod0 : Symbol(myMethod0, Decl(privacyTypeParametersOfInterface.ts, 55, 24)) +>myMethod0 : Symbol(privateInterfaceWithPublicTypeParametersWithoutExtends.myMethod0, Decl(privacyTypeParametersOfInterface.ts, 55, 24)) >publicClassT : Symbol(publicClassT, Decl(privacyTypeParametersOfInterface.ts, 7, 1)) >T : Symbol(T, Decl(privacyTypeParametersOfInterface.ts, 54, 65)) } diff --git a/tests/baselines/reference/privacyVar.symbols b/tests/baselines/reference/privacyVar.symbols index 098a48d6499..a08e2421080 100644 --- a/tests/baselines/reference/privacyVar.symbols +++ b/tests/baselines/reference/privacyVar.symbols @@ -6,7 +6,7 @@ export module m1 { >C1_public : Symbol(C1_public, Decl(privacyVar.ts, 0, 18)) private f1() { ->f1 : Symbol(f1, Decl(privacyVar.ts, 1, 28)) +>f1 : Symbol(C1_public.f1, Decl(privacyVar.ts, 1, 28)) } } @@ -18,54 +18,54 @@ export module m1 { >C3_public : Symbol(C3_public, Decl(privacyVar.ts, 7, 5)) private C3_v1_private: C1_public; ->C3_v1_private : Symbol(C3_v1_private, Decl(privacyVar.ts, 9, 28)) +>C3_v1_private : Symbol(C3_public.C3_v1_private, Decl(privacyVar.ts, 9, 28)) >C1_public : Symbol(C1_public, Decl(privacyVar.ts, 0, 18)) public C3_v2_public: C1_public; ->C3_v2_public : Symbol(C3_v2_public, Decl(privacyVar.ts, 10, 41)) +>C3_v2_public : Symbol(C3_public.C3_v2_public, Decl(privacyVar.ts, 10, 41)) >C1_public : Symbol(C1_public, Decl(privacyVar.ts, 0, 18)) private C3_v3_private: C2_private; ->C3_v3_private : Symbol(C3_v3_private, Decl(privacyVar.ts, 11, 39)) +>C3_v3_private : Symbol(C3_public.C3_v3_private, Decl(privacyVar.ts, 11, 39)) >C2_private : Symbol(C2_private, Decl(privacyVar.ts, 4, 5)) public C3_v4_public: C2_private; // error ->C3_v4_public : Symbol(C3_v4_public, Decl(privacyVar.ts, 12, 42)) +>C3_v4_public : Symbol(C3_public.C3_v4_public, Decl(privacyVar.ts, 12, 42)) >C2_private : Symbol(C2_private, Decl(privacyVar.ts, 4, 5)) private C3_v11_private = new C1_public(); ->C3_v11_private : Symbol(C3_v11_private, Decl(privacyVar.ts, 13, 40)) +>C3_v11_private : Symbol(C3_public.C3_v11_private, Decl(privacyVar.ts, 13, 40)) >C1_public : Symbol(C1_public, Decl(privacyVar.ts, 0, 18)) public C3_v12_public = new C1_public(); ->C3_v12_public : Symbol(C3_v12_public, Decl(privacyVar.ts, 15, 49)) +>C3_v12_public : Symbol(C3_public.C3_v12_public, Decl(privacyVar.ts, 15, 49)) >C1_public : Symbol(C1_public, Decl(privacyVar.ts, 0, 18)) private C3_v13_private = new C2_private(); ->C3_v13_private : Symbol(C3_v13_private, Decl(privacyVar.ts, 16, 47)) +>C3_v13_private : Symbol(C3_public.C3_v13_private, Decl(privacyVar.ts, 16, 47)) >C2_private : Symbol(C2_private, Decl(privacyVar.ts, 4, 5)) public C3_v14_public = new C2_private(); // error ->C3_v14_public : Symbol(C3_v14_public, Decl(privacyVar.ts, 17, 50)) +>C3_v14_public : Symbol(C3_public.C3_v14_public, Decl(privacyVar.ts, 17, 50)) >C2_private : Symbol(C2_private, Decl(privacyVar.ts, 4, 5)) private C3_v21_private: C1_public = new C1_public(); ->C3_v21_private : Symbol(C3_v21_private, Decl(privacyVar.ts, 18, 48)) +>C3_v21_private : Symbol(C3_public.C3_v21_private, Decl(privacyVar.ts, 18, 48)) >C1_public : Symbol(C1_public, Decl(privacyVar.ts, 0, 18)) >C1_public : Symbol(C1_public, Decl(privacyVar.ts, 0, 18)) public C3_v22_public: C1_public = new C1_public(); ->C3_v22_public : Symbol(C3_v22_public, Decl(privacyVar.ts, 20, 60)) +>C3_v22_public : Symbol(C3_public.C3_v22_public, Decl(privacyVar.ts, 20, 60)) >C1_public : Symbol(C1_public, Decl(privacyVar.ts, 0, 18)) >C1_public : Symbol(C1_public, Decl(privacyVar.ts, 0, 18)) private C3_v23_private: C2_private = new C2_private(); ->C3_v23_private : Symbol(C3_v23_private, Decl(privacyVar.ts, 21, 58)) +>C3_v23_private : Symbol(C3_public.C3_v23_private, Decl(privacyVar.ts, 21, 58)) >C2_private : Symbol(C2_private, Decl(privacyVar.ts, 4, 5)) >C2_private : Symbol(C2_private, Decl(privacyVar.ts, 4, 5)) public C3_v24_public: C2_private = new C2_private(); // error ->C3_v24_public : Symbol(C3_v24_public, Decl(privacyVar.ts, 22, 62)) +>C3_v24_public : Symbol(C3_public.C3_v24_public, Decl(privacyVar.ts, 22, 62)) >C2_private : Symbol(C2_private, Decl(privacyVar.ts, 4, 5)) >C2_private : Symbol(C2_private, Decl(privacyVar.ts, 4, 5)) } @@ -74,54 +74,54 @@ export module m1 { >C4_public : Symbol(C4_public, Decl(privacyVar.ts, 24, 5)) private C4_v1_private: C1_public; ->C4_v1_private : Symbol(C4_v1_private, Decl(privacyVar.ts, 26, 21)) +>C4_v1_private : Symbol(C4_public.C4_v1_private, Decl(privacyVar.ts, 26, 21)) >C1_public : Symbol(C1_public, Decl(privacyVar.ts, 0, 18)) public C4_v2_public: C1_public; ->C4_v2_public : Symbol(C4_v2_public, Decl(privacyVar.ts, 27, 41)) +>C4_v2_public : Symbol(C4_public.C4_v2_public, Decl(privacyVar.ts, 27, 41)) >C1_public : Symbol(C1_public, Decl(privacyVar.ts, 0, 18)) private C4_v3_private: C2_private; ->C4_v3_private : Symbol(C4_v3_private, Decl(privacyVar.ts, 28, 39)) +>C4_v3_private : Symbol(C4_public.C4_v3_private, Decl(privacyVar.ts, 28, 39)) >C2_private : Symbol(C2_private, Decl(privacyVar.ts, 4, 5)) public C4_v4_public: C2_private; ->C4_v4_public : Symbol(C4_v4_public, Decl(privacyVar.ts, 29, 42)) +>C4_v4_public : Symbol(C4_public.C4_v4_public, Decl(privacyVar.ts, 29, 42)) >C2_private : Symbol(C2_private, Decl(privacyVar.ts, 4, 5)) private C4_v11_private = new C1_public(); ->C4_v11_private : Symbol(C4_v11_private, Decl(privacyVar.ts, 30, 40)) +>C4_v11_private : Symbol(C4_public.C4_v11_private, Decl(privacyVar.ts, 30, 40)) >C1_public : Symbol(C1_public, Decl(privacyVar.ts, 0, 18)) public C4_v12_public = new C1_public(); ->C4_v12_public : Symbol(C4_v12_public, Decl(privacyVar.ts, 32, 49)) +>C4_v12_public : Symbol(C4_public.C4_v12_public, Decl(privacyVar.ts, 32, 49)) >C1_public : Symbol(C1_public, Decl(privacyVar.ts, 0, 18)) private C4_v13_private = new C2_private(); ->C4_v13_private : Symbol(C4_v13_private, Decl(privacyVar.ts, 33, 47)) +>C4_v13_private : Symbol(C4_public.C4_v13_private, Decl(privacyVar.ts, 33, 47)) >C2_private : Symbol(C2_private, Decl(privacyVar.ts, 4, 5)) public C4_v14_public = new C2_private(); ->C4_v14_public : Symbol(C4_v14_public, Decl(privacyVar.ts, 34, 50)) +>C4_v14_public : Symbol(C4_public.C4_v14_public, Decl(privacyVar.ts, 34, 50)) >C2_private : Symbol(C2_private, Decl(privacyVar.ts, 4, 5)) private C4_v21_private: C1_public = new C1_public(); ->C4_v21_private : Symbol(C4_v21_private, Decl(privacyVar.ts, 35, 48)) +>C4_v21_private : Symbol(C4_public.C4_v21_private, Decl(privacyVar.ts, 35, 48)) >C1_public : Symbol(C1_public, Decl(privacyVar.ts, 0, 18)) >C1_public : Symbol(C1_public, Decl(privacyVar.ts, 0, 18)) public C4_v22_public: C1_public = new C1_public(); ->C4_v22_public : Symbol(C4_v22_public, Decl(privacyVar.ts, 37, 60)) +>C4_v22_public : Symbol(C4_public.C4_v22_public, Decl(privacyVar.ts, 37, 60)) >C1_public : Symbol(C1_public, Decl(privacyVar.ts, 0, 18)) >C1_public : Symbol(C1_public, Decl(privacyVar.ts, 0, 18)) private C4_v23_private: C2_private = new C2_private(); ->C4_v23_private : Symbol(C4_v23_private, Decl(privacyVar.ts, 38, 58)) +>C4_v23_private : Symbol(C4_public.C4_v23_private, Decl(privacyVar.ts, 38, 58)) >C2_private : Symbol(C2_private, Decl(privacyVar.ts, 4, 5)) >C2_private : Symbol(C2_private, Decl(privacyVar.ts, 4, 5)) public C4_v24_public: C2_private = new C2_private(); ->C4_v24_public : Symbol(C4_v24_public, Decl(privacyVar.ts, 39, 62)) +>C4_v24_public : Symbol(C4_public.C4_v24_public, Decl(privacyVar.ts, 39, 62)) >C2_private : Symbol(C2_private, Decl(privacyVar.ts, 4, 5)) >C2_private : Symbol(C2_private, Decl(privacyVar.ts, 4, 5)) } @@ -186,7 +186,7 @@ module m2 { >m2_C1_public : Symbol(m2_C1_public, Decl(privacyVar.ts, 59, 11)) private f1() { ->f1 : Symbol(f1, Decl(privacyVar.ts, 60, 31)) +>f1 : Symbol(m2_C1_public.f1, Decl(privacyVar.ts, 60, 31)) } } @@ -198,54 +198,54 @@ module m2 { >m2_C3_public : Symbol(m2_C3_public, Decl(privacyVar.ts, 66, 5)) private m2_C3_v1_private: m2_C1_public; ->m2_C3_v1_private : Symbol(m2_C3_v1_private, Decl(privacyVar.ts, 68, 31)) +>m2_C3_v1_private : Symbol(m2_C3_public.m2_C3_v1_private, Decl(privacyVar.ts, 68, 31)) >m2_C1_public : Symbol(m2_C1_public, Decl(privacyVar.ts, 59, 11)) public m2_C3_v2_public: m2_C1_public; ->m2_C3_v2_public : Symbol(m2_C3_v2_public, Decl(privacyVar.ts, 69, 47)) +>m2_C3_v2_public : Symbol(m2_C3_public.m2_C3_v2_public, Decl(privacyVar.ts, 69, 47)) >m2_C1_public : Symbol(m2_C1_public, Decl(privacyVar.ts, 59, 11)) private m2_C3_v3_private: m2_C2_private; ->m2_C3_v3_private : Symbol(m2_C3_v3_private, Decl(privacyVar.ts, 70, 45)) +>m2_C3_v3_private : Symbol(m2_C3_public.m2_C3_v3_private, Decl(privacyVar.ts, 70, 45)) >m2_C2_private : Symbol(m2_C2_private, Decl(privacyVar.ts, 63, 5)) public m2_C3_v4_public: m2_C2_private; ->m2_C3_v4_public : Symbol(m2_C3_v4_public, Decl(privacyVar.ts, 71, 48)) +>m2_C3_v4_public : Symbol(m2_C3_public.m2_C3_v4_public, Decl(privacyVar.ts, 71, 48)) >m2_C2_private : Symbol(m2_C2_private, Decl(privacyVar.ts, 63, 5)) private m2_C3_v11_private = new m2_C1_public(); ->m2_C3_v11_private : Symbol(m2_C3_v11_private, Decl(privacyVar.ts, 72, 46)) +>m2_C3_v11_private : Symbol(m2_C3_public.m2_C3_v11_private, Decl(privacyVar.ts, 72, 46)) >m2_C1_public : Symbol(m2_C1_public, Decl(privacyVar.ts, 59, 11)) public m2_C3_v12_public = new m2_C1_public(); ->m2_C3_v12_public : Symbol(m2_C3_v12_public, Decl(privacyVar.ts, 74, 55)) +>m2_C3_v12_public : Symbol(m2_C3_public.m2_C3_v12_public, Decl(privacyVar.ts, 74, 55)) >m2_C1_public : Symbol(m2_C1_public, Decl(privacyVar.ts, 59, 11)) private m2_C3_v13_private = new m2_C2_private(); ->m2_C3_v13_private : Symbol(m2_C3_v13_private, Decl(privacyVar.ts, 75, 53)) +>m2_C3_v13_private : Symbol(m2_C3_public.m2_C3_v13_private, Decl(privacyVar.ts, 75, 53)) >m2_C2_private : Symbol(m2_C2_private, Decl(privacyVar.ts, 63, 5)) public m2_C3_v14_public = new m2_C2_private(); ->m2_C3_v14_public : Symbol(m2_C3_v14_public, Decl(privacyVar.ts, 76, 56)) +>m2_C3_v14_public : Symbol(m2_C3_public.m2_C3_v14_public, Decl(privacyVar.ts, 76, 56)) >m2_C2_private : Symbol(m2_C2_private, Decl(privacyVar.ts, 63, 5)) private m2_C3_v21_private: m2_C1_public = new m2_C1_public(); ->m2_C3_v21_private : Symbol(m2_C3_v21_private, Decl(privacyVar.ts, 77, 54)) +>m2_C3_v21_private : Symbol(m2_C3_public.m2_C3_v21_private, Decl(privacyVar.ts, 77, 54)) >m2_C1_public : Symbol(m2_C1_public, Decl(privacyVar.ts, 59, 11)) >m2_C1_public : Symbol(m2_C1_public, Decl(privacyVar.ts, 59, 11)) public m2_C3_v22_public: m2_C1_public = new m2_C1_public(); ->m2_C3_v22_public : Symbol(m2_C3_v22_public, Decl(privacyVar.ts, 79, 69)) +>m2_C3_v22_public : Symbol(m2_C3_public.m2_C3_v22_public, Decl(privacyVar.ts, 79, 69)) >m2_C1_public : Symbol(m2_C1_public, Decl(privacyVar.ts, 59, 11)) >m2_C1_public : Symbol(m2_C1_public, Decl(privacyVar.ts, 59, 11)) private m2_C3_v23_private: m2_C2_private = new m2_C2_private(); ->m2_C3_v23_private : Symbol(m2_C3_v23_private, Decl(privacyVar.ts, 80, 67)) +>m2_C3_v23_private : Symbol(m2_C3_public.m2_C3_v23_private, Decl(privacyVar.ts, 80, 67)) >m2_C2_private : Symbol(m2_C2_private, Decl(privacyVar.ts, 63, 5)) >m2_C2_private : Symbol(m2_C2_private, Decl(privacyVar.ts, 63, 5)) public m2_C3_v24_public: m2_C2_private = new m2_C2_private(); ->m2_C3_v24_public : Symbol(m2_C3_v24_public, Decl(privacyVar.ts, 81, 71)) +>m2_C3_v24_public : Symbol(m2_C3_public.m2_C3_v24_public, Decl(privacyVar.ts, 81, 71)) >m2_C2_private : Symbol(m2_C2_private, Decl(privacyVar.ts, 63, 5)) >m2_C2_private : Symbol(m2_C2_private, Decl(privacyVar.ts, 63, 5)) } @@ -254,54 +254,54 @@ module m2 { >m2_C4_public : Symbol(m2_C4_public, Decl(privacyVar.ts, 83, 5)) private m2_C4_v1_private: m2_C1_public; ->m2_C4_v1_private : Symbol(m2_C4_v1_private, Decl(privacyVar.ts, 85, 24)) +>m2_C4_v1_private : Symbol(m2_C4_public.m2_C4_v1_private, Decl(privacyVar.ts, 85, 24)) >m2_C1_public : Symbol(m2_C1_public, Decl(privacyVar.ts, 59, 11)) public m2_C4_v2_public: m2_C1_public; ->m2_C4_v2_public : Symbol(m2_C4_v2_public, Decl(privacyVar.ts, 86, 47)) +>m2_C4_v2_public : Symbol(m2_C4_public.m2_C4_v2_public, Decl(privacyVar.ts, 86, 47)) >m2_C1_public : Symbol(m2_C1_public, Decl(privacyVar.ts, 59, 11)) private m2_C4_v3_private: m2_C2_private; ->m2_C4_v3_private : Symbol(m2_C4_v3_private, Decl(privacyVar.ts, 87, 45)) +>m2_C4_v3_private : Symbol(m2_C4_public.m2_C4_v3_private, Decl(privacyVar.ts, 87, 45)) >m2_C2_private : Symbol(m2_C2_private, Decl(privacyVar.ts, 63, 5)) public m2_C4_v4_public: m2_C2_private; ->m2_C4_v4_public : Symbol(m2_C4_v4_public, Decl(privacyVar.ts, 88, 48)) +>m2_C4_v4_public : Symbol(m2_C4_public.m2_C4_v4_public, Decl(privacyVar.ts, 88, 48)) >m2_C2_private : Symbol(m2_C2_private, Decl(privacyVar.ts, 63, 5)) private m2_C4_v11_private = new m2_C1_public(); ->m2_C4_v11_private : Symbol(m2_C4_v11_private, Decl(privacyVar.ts, 89, 46)) +>m2_C4_v11_private : Symbol(m2_C4_public.m2_C4_v11_private, Decl(privacyVar.ts, 89, 46)) >m2_C1_public : Symbol(m2_C1_public, Decl(privacyVar.ts, 59, 11)) public m2_C4_v12_public = new m2_C1_public(); ->m2_C4_v12_public : Symbol(m2_C4_v12_public, Decl(privacyVar.ts, 91, 55)) +>m2_C4_v12_public : Symbol(m2_C4_public.m2_C4_v12_public, Decl(privacyVar.ts, 91, 55)) >m2_C1_public : Symbol(m2_C1_public, Decl(privacyVar.ts, 59, 11)) private m2_C4_v13_private = new m2_C2_private(); ->m2_C4_v13_private : Symbol(m2_C4_v13_private, Decl(privacyVar.ts, 92, 53)) +>m2_C4_v13_private : Symbol(m2_C4_public.m2_C4_v13_private, Decl(privacyVar.ts, 92, 53)) >m2_C2_private : Symbol(m2_C2_private, Decl(privacyVar.ts, 63, 5)) public m2_C4_v14_public = new m2_C2_private(); ->m2_C4_v14_public : Symbol(m2_C4_v14_public, Decl(privacyVar.ts, 93, 56)) +>m2_C4_v14_public : Symbol(m2_C4_public.m2_C4_v14_public, Decl(privacyVar.ts, 93, 56)) >m2_C2_private : Symbol(m2_C2_private, Decl(privacyVar.ts, 63, 5)) private m2_C4_v21_private: m2_C1_public = new m2_C1_public(); ->m2_C4_v21_private : Symbol(m2_C4_v21_private, Decl(privacyVar.ts, 94, 54)) +>m2_C4_v21_private : Symbol(m2_C4_public.m2_C4_v21_private, Decl(privacyVar.ts, 94, 54)) >m2_C1_public : Symbol(m2_C1_public, Decl(privacyVar.ts, 59, 11)) >m2_C1_public : Symbol(m2_C1_public, Decl(privacyVar.ts, 59, 11)) public m2_C4_v22_public: m2_C1_public = new m2_C1_public(); ->m2_C4_v22_public : Symbol(m2_C4_v22_public, Decl(privacyVar.ts, 96, 69)) +>m2_C4_v22_public : Symbol(m2_C4_public.m2_C4_v22_public, Decl(privacyVar.ts, 96, 69)) >m2_C1_public : Symbol(m2_C1_public, Decl(privacyVar.ts, 59, 11)) >m2_C1_public : Symbol(m2_C1_public, Decl(privacyVar.ts, 59, 11)) private m2_C4_v23_private: m2_C2_private = new m2_C2_private(); ->m2_C4_v23_private : Symbol(m2_C4_v23_private, Decl(privacyVar.ts, 97, 67)) +>m2_C4_v23_private : Symbol(m2_C4_public.m2_C4_v23_private, Decl(privacyVar.ts, 97, 67)) >m2_C2_private : Symbol(m2_C2_private, Decl(privacyVar.ts, 63, 5)) >m2_C2_private : Symbol(m2_C2_private, Decl(privacyVar.ts, 63, 5)) public m2_C4_v24_public: m2_C2_private = new m2_C2_private(); ->m2_C4_v24_public : Symbol(m2_C4_v24_public, Decl(privacyVar.ts, 98, 71)) +>m2_C4_v24_public : Symbol(m2_C4_public.m2_C4_v24_public, Decl(privacyVar.ts, 98, 71)) >m2_C2_private : Symbol(m2_C2_private, Decl(privacyVar.ts, 63, 5)) >m2_C2_private : Symbol(m2_C2_private, Decl(privacyVar.ts, 63, 5)) } @@ -363,7 +363,7 @@ export class glo_C1_public { >glo_C1_public : Symbol(glo_C1_public, Decl(privacyVar.ts, 116, 1)) private f1() { ->f1 : Symbol(f1, Decl(privacyVar.ts, 118, 28)) +>f1 : Symbol(glo_C1_public.f1, Decl(privacyVar.ts, 118, 28)) } } @@ -375,54 +375,54 @@ export class glo_C3_public { >glo_C3_public : Symbol(glo_C3_public, Decl(privacyVar.ts, 124, 1)) private glo_C3_v1_private: glo_C1_public; ->glo_C3_v1_private : Symbol(glo_C3_v1_private, Decl(privacyVar.ts, 126, 28)) +>glo_C3_v1_private : Symbol(glo_C3_public.glo_C3_v1_private, Decl(privacyVar.ts, 126, 28)) >glo_C1_public : Symbol(glo_C1_public, Decl(privacyVar.ts, 116, 1)) public glo_C3_v2_public: glo_C1_public; ->glo_C3_v2_public : Symbol(glo_C3_v2_public, Decl(privacyVar.ts, 127, 45)) +>glo_C3_v2_public : Symbol(glo_C3_public.glo_C3_v2_public, Decl(privacyVar.ts, 127, 45)) >glo_C1_public : Symbol(glo_C1_public, Decl(privacyVar.ts, 116, 1)) private glo_C3_v3_private: glo_C2_private; ->glo_C3_v3_private : Symbol(glo_C3_v3_private, Decl(privacyVar.ts, 128, 43)) +>glo_C3_v3_private : Symbol(glo_C3_public.glo_C3_v3_private, Decl(privacyVar.ts, 128, 43)) >glo_C2_private : Symbol(glo_C2_private, Decl(privacyVar.ts, 121, 1)) public glo_C3_v4_public: glo_C2_private; //error ->glo_C3_v4_public : Symbol(glo_C3_v4_public, Decl(privacyVar.ts, 129, 46)) +>glo_C3_v4_public : Symbol(glo_C3_public.glo_C3_v4_public, Decl(privacyVar.ts, 129, 46)) >glo_C2_private : Symbol(glo_C2_private, Decl(privacyVar.ts, 121, 1)) private glo_C3_v11_private = new glo_C1_public(); ->glo_C3_v11_private : Symbol(glo_C3_v11_private, Decl(privacyVar.ts, 130, 44)) +>glo_C3_v11_private : Symbol(glo_C3_public.glo_C3_v11_private, Decl(privacyVar.ts, 130, 44)) >glo_C1_public : Symbol(glo_C1_public, Decl(privacyVar.ts, 116, 1)) public glo_C3_v12_public = new glo_C1_public(); ->glo_C3_v12_public : Symbol(glo_C3_v12_public, Decl(privacyVar.ts, 132, 53)) +>glo_C3_v12_public : Symbol(glo_C3_public.glo_C3_v12_public, Decl(privacyVar.ts, 132, 53)) >glo_C1_public : Symbol(glo_C1_public, Decl(privacyVar.ts, 116, 1)) private glo_C3_v13_private = new glo_C2_private(); ->glo_C3_v13_private : Symbol(glo_C3_v13_private, Decl(privacyVar.ts, 133, 51)) +>glo_C3_v13_private : Symbol(glo_C3_public.glo_C3_v13_private, Decl(privacyVar.ts, 133, 51)) >glo_C2_private : Symbol(glo_C2_private, Decl(privacyVar.ts, 121, 1)) public glo_C3_v14_public = new glo_C2_private(); // error ->glo_C3_v14_public : Symbol(glo_C3_v14_public, Decl(privacyVar.ts, 134, 54)) +>glo_C3_v14_public : Symbol(glo_C3_public.glo_C3_v14_public, Decl(privacyVar.ts, 134, 54)) >glo_C2_private : Symbol(glo_C2_private, Decl(privacyVar.ts, 121, 1)) private glo_C3_v21_private: glo_C1_public = new glo_C1_public(); ->glo_C3_v21_private : Symbol(glo_C3_v21_private, Decl(privacyVar.ts, 135, 52)) +>glo_C3_v21_private : Symbol(glo_C3_public.glo_C3_v21_private, Decl(privacyVar.ts, 135, 52)) >glo_C1_public : Symbol(glo_C1_public, Decl(privacyVar.ts, 116, 1)) >glo_C1_public : Symbol(glo_C1_public, Decl(privacyVar.ts, 116, 1)) public glo_C3_v22_public: glo_C1_public = new glo_C1_public(); ->glo_C3_v22_public : Symbol(glo_C3_v22_public, Decl(privacyVar.ts, 137, 68)) +>glo_C3_v22_public : Symbol(glo_C3_public.glo_C3_v22_public, Decl(privacyVar.ts, 137, 68)) >glo_C1_public : Symbol(glo_C1_public, Decl(privacyVar.ts, 116, 1)) >glo_C1_public : Symbol(glo_C1_public, Decl(privacyVar.ts, 116, 1)) private glo_C3_v23_private: glo_C2_private = new glo_C2_private(); ->glo_C3_v23_private : Symbol(glo_C3_v23_private, Decl(privacyVar.ts, 138, 66)) +>glo_C3_v23_private : Symbol(glo_C3_public.glo_C3_v23_private, Decl(privacyVar.ts, 138, 66)) >glo_C2_private : Symbol(glo_C2_private, Decl(privacyVar.ts, 121, 1)) >glo_C2_private : Symbol(glo_C2_private, Decl(privacyVar.ts, 121, 1)) public glo_C3_v24_public: glo_C2_private = new glo_C2_private(); //error ->glo_C3_v24_public : Symbol(glo_C3_v24_public, Decl(privacyVar.ts, 139, 70)) +>glo_C3_v24_public : Symbol(glo_C3_public.glo_C3_v24_public, Decl(privacyVar.ts, 139, 70)) >glo_C2_private : Symbol(glo_C2_private, Decl(privacyVar.ts, 121, 1)) >glo_C2_private : Symbol(glo_C2_private, Decl(privacyVar.ts, 121, 1)) } @@ -431,54 +431,54 @@ class glo_C4_public { >glo_C4_public : Symbol(glo_C4_public, Decl(privacyVar.ts, 141, 1)) private glo_C4_v1_private: glo_C1_public; ->glo_C4_v1_private : Symbol(glo_C4_v1_private, Decl(privacyVar.ts, 143, 21)) +>glo_C4_v1_private : Symbol(glo_C4_public.glo_C4_v1_private, Decl(privacyVar.ts, 143, 21)) >glo_C1_public : Symbol(glo_C1_public, Decl(privacyVar.ts, 116, 1)) public glo_C4_v2_public: glo_C1_public; ->glo_C4_v2_public : Symbol(glo_C4_v2_public, Decl(privacyVar.ts, 144, 45)) +>glo_C4_v2_public : Symbol(glo_C4_public.glo_C4_v2_public, Decl(privacyVar.ts, 144, 45)) >glo_C1_public : Symbol(glo_C1_public, Decl(privacyVar.ts, 116, 1)) private glo_C4_v3_private: glo_C2_private; ->glo_C4_v3_private : Symbol(glo_C4_v3_private, Decl(privacyVar.ts, 145, 43)) +>glo_C4_v3_private : Symbol(glo_C4_public.glo_C4_v3_private, Decl(privacyVar.ts, 145, 43)) >glo_C2_private : Symbol(glo_C2_private, Decl(privacyVar.ts, 121, 1)) public glo_C4_v4_public: glo_C2_private; ->glo_C4_v4_public : Symbol(glo_C4_v4_public, Decl(privacyVar.ts, 146, 46)) +>glo_C4_v4_public : Symbol(glo_C4_public.glo_C4_v4_public, Decl(privacyVar.ts, 146, 46)) >glo_C2_private : Symbol(glo_C2_private, Decl(privacyVar.ts, 121, 1)) private glo_C4_v11_private = new glo_C1_public(); ->glo_C4_v11_private : Symbol(glo_C4_v11_private, Decl(privacyVar.ts, 147, 44)) +>glo_C4_v11_private : Symbol(glo_C4_public.glo_C4_v11_private, Decl(privacyVar.ts, 147, 44)) >glo_C1_public : Symbol(glo_C1_public, Decl(privacyVar.ts, 116, 1)) public glo_C4_v12_public = new glo_C1_public(); ->glo_C4_v12_public : Symbol(glo_C4_v12_public, Decl(privacyVar.ts, 149, 53)) +>glo_C4_v12_public : Symbol(glo_C4_public.glo_C4_v12_public, Decl(privacyVar.ts, 149, 53)) >glo_C1_public : Symbol(glo_C1_public, Decl(privacyVar.ts, 116, 1)) private glo_C4_v13_private = new glo_C2_private(); ->glo_C4_v13_private : Symbol(glo_C4_v13_private, Decl(privacyVar.ts, 150, 51)) +>glo_C4_v13_private : Symbol(glo_C4_public.glo_C4_v13_private, Decl(privacyVar.ts, 150, 51)) >glo_C2_private : Symbol(glo_C2_private, Decl(privacyVar.ts, 121, 1)) public glo_C4_v14_public = new glo_C2_private(); ->glo_C4_v14_public : Symbol(glo_C4_v14_public, Decl(privacyVar.ts, 151, 54)) +>glo_C4_v14_public : Symbol(glo_C4_public.glo_C4_v14_public, Decl(privacyVar.ts, 151, 54)) >glo_C2_private : Symbol(glo_C2_private, Decl(privacyVar.ts, 121, 1)) private glo_C4_v21_private: glo_C1_public = new glo_C1_public(); ->glo_C4_v21_private : Symbol(glo_C4_v21_private, Decl(privacyVar.ts, 152, 52)) +>glo_C4_v21_private : Symbol(glo_C4_public.glo_C4_v21_private, Decl(privacyVar.ts, 152, 52)) >glo_C1_public : Symbol(glo_C1_public, Decl(privacyVar.ts, 116, 1)) >glo_C1_public : Symbol(glo_C1_public, Decl(privacyVar.ts, 116, 1)) public glo_C4_v22_public: glo_C1_public = new glo_C1_public(); ->glo_C4_v22_public : Symbol(glo_C4_v22_public, Decl(privacyVar.ts, 154, 68)) +>glo_C4_v22_public : Symbol(glo_C4_public.glo_C4_v22_public, Decl(privacyVar.ts, 154, 68)) >glo_C1_public : Symbol(glo_C1_public, Decl(privacyVar.ts, 116, 1)) >glo_C1_public : Symbol(glo_C1_public, Decl(privacyVar.ts, 116, 1)) private glo_C4_v23_private: glo_C2_private = new glo_C2_private(); ->glo_C4_v23_private : Symbol(glo_C4_v23_private, Decl(privacyVar.ts, 155, 66)) +>glo_C4_v23_private : Symbol(glo_C4_public.glo_C4_v23_private, Decl(privacyVar.ts, 155, 66)) >glo_C2_private : Symbol(glo_C2_private, Decl(privacyVar.ts, 121, 1)) >glo_C2_private : Symbol(glo_C2_private, Decl(privacyVar.ts, 121, 1)) public glo_C4_v24_public: glo_C2_private = new glo_C2_private(); ->glo_C4_v24_public : Symbol(glo_C4_v24_public, Decl(privacyVar.ts, 156, 70)) +>glo_C4_v24_public : Symbol(glo_C4_public.glo_C4_v24_public, Decl(privacyVar.ts, 156, 70)) >glo_C2_private : Symbol(glo_C2_private, Decl(privacyVar.ts, 121, 1)) >glo_C2_private : Symbol(glo_C2_private, Decl(privacyVar.ts, 121, 1)) } diff --git a/tests/baselines/reference/privateClassPropertyAccessibleWithinNestedClass.js b/tests/baselines/reference/privateClassPropertyAccessibleWithinNestedClass.js new file mode 100644 index 00000000000..3bb0a7da3ea --- /dev/null +++ b/tests/baselines/reference/privateClassPropertyAccessibleWithinNestedClass.js @@ -0,0 +1,84 @@ +//// [privateClassPropertyAccessibleWithinNestedClass.ts] +// no errors + +class C { + private x: string; + private get y() { return this.x; } + private set y(x) { this.y = this.x; } + private foo() { return this.foo; } + + private static x: string; + private static get y() { return this.x; } + private static set y(x) { this.y = this.x; } + private static foo() { return this.foo; } + private static bar() { this.foo(); } + + private bar() { + class C2 { + private foo() { + let x: C; + var x1 = x.foo; + var x2 = x.bar; + var x3 = x.x; + var x4 = x.y; + + var sx1 = C.x; + var sx2 = C.y; + var sx3 = C.bar; + var sx4 = C.foo; + + let y = new C(); + var y1 = y.foo; + var y2 = y.bar; + var y3 = y.x; + var y4 = y.y; + } + } + } +} + +//// [privateClassPropertyAccessibleWithinNestedClass.js] +// no errors +var C = (function () { + function C() { + } + Object.defineProperty(C.prototype, "y", { + get: function () { return this.x; }, + set: function (x) { this.y = this.x; }, + enumerable: true, + configurable: true + }); + C.prototype.foo = function () { return this.foo; }; + Object.defineProperty(C, "y", { + get: function () { return this.x; }, + set: function (x) { this.y = this.x; }, + enumerable: true, + configurable: true + }); + C.foo = function () { return this.foo; }; + C.bar = function () { this.foo(); }; + C.prototype.bar = function () { + var C2 = (function () { + function C2() { + } + C2.prototype.foo = function () { + var x; + var x1 = x.foo; + var x2 = x.bar; + var x3 = x.x; + var x4 = x.y; + var sx1 = C.x; + var sx2 = C.y; + var sx3 = C.bar; + var sx4 = C.foo; + var y = new C(); + var y1 = y.foo; + var y2 = y.bar; + var y3 = y.x; + var y4 = y.y; + }; + return C2; + }()); + }; + return C; +}()); diff --git a/tests/baselines/reference/privateClassPropertyAccessibleWithinNestedClass.symbols b/tests/baselines/reference/privateClassPropertyAccessibleWithinNestedClass.symbols new file mode 100644 index 00000000000..4aa6e6df5d9 --- /dev/null +++ b/tests/baselines/reference/privateClassPropertyAccessibleWithinNestedClass.symbols @@ -0,0 +1,154 @@ +=== tests/cases/conformance/classes/members/accessibility/privateClassPropertyAccessibleWithinNestedClass.ts === +// no errors + +class C { +>C : Symbol(C, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 0, 0)) + + private x: string; +>x : Symbol(C.x, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 2, 9)) + + private get y() { return this.x; } +>y : Symbol(C.y, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 3, 22), Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 4, 38)) +>this.x : Symbol(C.x, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 2, 9)) +>this : Symbol(C, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 0, 0)) +>x : Symbol(C.x, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 2, 9)) + + private set y(x) { this.y = this.x; } +>y : Symbol(C.y, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 3, 22), Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 4, 38)) +>x : Symbol(x, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 5, 18)) +>this.y : Symbol(C.y, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 3, 22), Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 4, 38)) +>this : Symbol(C, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 0, 0)) +>y : Symbol(C.y, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 3, 22), Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 4, 38)) +>this.x : Symbol(C.x, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 2, 9)) +>this : Symbol(C, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 0, 0)) +>x : Symbol(C.x, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 2, 9)) + + private foo() { return this.foo; } +>foo : Symbol(C.foo, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 5, 41)) +>this.foo : Symbol(C.foo, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 5, 41)) +>this : Symbol(C, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 0, 0)) +>foo : Symbol(C.foo, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 5, 41)) + + private static x: string; +>x : Symbol(C.x, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 6, 38)) + + private static get y() { return this.x; } +>y : Symbol(C.y, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 8, 29), Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 9, 45)) +>this.x : Symbol(C.x, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 6, 38)) +>this : Symbol(C, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 0, 0)) +>x : Symbol(C.x, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 6, 38)) + + private static set y(x) { this.y = this.x; } +>y : Symbol(C.y, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 8, 29), Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 9, 45)) +>x : Symbol(x, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 10, 25)) +>this.y : Symbol(C.y, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 8, 29), Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 9, 45)) +>this : Symbol(C, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 0, 0)) +>y : Symbol(C.y, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 8, 29), Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 9, 45)) +>this.x : Symbol(C.x, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 6, 38)) +>this : Symbol(C, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 0, 0)) +>x : Symbol(C.x, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 6, 38)) + + private static foo() { return this.foo; } +>foo : Symbol(C.foo, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 10, 48)) +>this.foo : Symbol(C.foo, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 10, 48)) +>this : Symbol(C, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 0, 0)) +>foo : Symbol(C.foo, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 10, 48)) + + private static bar() { this.foo(); } +>bar : Symbol(C.bar, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 11, 45)) +>this.foo : Symbol(C.foo, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 10, 48)) +>this : Symbol(C, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 0, 0)) +>foo : Symbol(C.foo, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 10, 48)) + + private bar() { +>bar : Symbol(C.bar, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 12, 40)) + + class C2 { +>C2 : Symbol(C2, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 14, 19)) + + private foo() { +>foo : Symbol(C2.foo, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 15, 18)) + + let x: C; +>x : Symbol(x, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 17, 19)) +>C : Symbol(C, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 0, 0)) + + var x1 = x.foo; +>x1 : Symbol(x1, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 18, 19)) +>x.foo : Symbol(C.foo, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 5, 41)) +>x : Symbol(x, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 17, 19)) +>foo : Symbol(C.foo, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 5, 41)) + + var x2 = x.bar; +>x2 : Symbol(x2, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 19, 19)) +>x.bar : Symbol(C.bar, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 12, 40)) +>x : Symbol(x, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 17, 19)) +>bar : Symbol(C.bar, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 12, 40)) + + var x3 = x.x; +>x3 : Symbol(x3, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 20, 19)) +>x.x : Symbol(C.x, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 2, 9)) +>x : Symbol(x, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 17, 19)) +>x : Symbol(C.x, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 2, 9)) + + var x4 = x.y; +>x4 : Symbol(x4, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 21, 19)) +>x.y : Symbol(C.y, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 3, 22), Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 4, 38)) +>x : Symbol(x, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 17, 19)) +>y : Symbol(C.y, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 3, 22), Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 4, 38)) + + var sx1 = C.x; +>sx1 : Symbol(sx1, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 23, 19)) +>C.x : Symbol(C.x, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 6, 38)) +>C : Symbol(C, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 0, 0)) +>x : Symbol(C.x, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 6, 38)) + + var sx2 = C.y; +>sx2 : Symbol(sx2, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 24, 19)) +>C.y : Symbol(C.y, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 8, 29), Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 9, 45)) +>C : Symbol(C, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 0, 0)) +>y : Symbol(C.y, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 8, 29), Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 9, 45)) + + var sx3 = C.bar; +>sx3 : Symbol(sx3, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 25, 19)) +>C.bar : Symbol(C.bar, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 11, 45)) +>C : Symbol(C, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 0, 0)) +>bar : Symbol(C.bar, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 11, 45)) + + var sx4 = C.foo; +>sx4 : Symbol(sx4, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 26, 19)) +>C.foo : Symbol(C.foo, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 10, 48)) +>C : Symbol(C, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 0, 0)) +>foo : Symbol(C.foo, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 10, 48)) + + let y = new C(); +>y : Symbol(y, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 28, 19)) +>C : Symbol(C, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 0, 0)) + + var y1 = y.foo; +>y1 : Symbol(y1, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 29, 19)) +>y.foo : Symbol(C.foo, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 5, 41)) +>y : Symbol(y, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 28, 19)) +>foo : Symbol(C.foo, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 5, 41)) + + var y2 = y.bar; +>y2 : Symbol(y2, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 30, 19)) +>y.bar : Symbol(C.bar, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 12, 40)) +>y : Symbol(y, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 28, 19)) +>bar : Symbol(C.bar, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 12, 40)) + + var y3 = y.x; +>y3 : Symbol(y3, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 31, 19)) +>y.x : Symbol(C.x, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 2, 9)) +>y : Symbol(y, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 28, 19)) +>x : Symbol(C.x, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 2, 9)) + + var y4 = y.y; +>y4 : Symbol(y4, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 32, 19)) +>y.y : Symbol(C.y, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 3, 22), Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 4, 38)) +>y : Symbol(y, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 28, 19)) +>y : Symbol(C.y, Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 3, 22), Decl(privateClassPropertyAccessibleWithinNestedClass.ts, 4, 38)) + } + } + } +} diff --git a/tests/baselines/reference/privateClassPropertyAccessibleWithinNestedClass.types b/tests/baselines/reference/privateClassPropertyAccessibleWithinNestedClass.types new file mode 100644 index 00000000000..ee8eb82b940 --- /dev/null +++ b/tests/baselines/reference/privateClassPropertyAccessibleWithinNestedClass.types @@ -0,0 +1,158 @@ +=== tests/cases/conformance/classes/members/accessibility/privateClassPropertyAccessibleWithinNestedClass.ts === +// no errors + +class C { +>C : C + + private x: string; +>x : string + + private get y() { return this.x; } +>y : string +>this.x : string +>this : this +>x : string + + private set y(x) { this.y = this.x; } +>y : string +>x : string +>this.y = this.x : string +>this.y : string +>this : this +>y : string +>this.x : string +>this : this +>x : string + + private foo() { return this.foo; } +>foo : () => any +>this.foo : () => any +>this : this +>foo : () => any + + private static x: string; +>x : string + + private static get y() { return this.x; } +>y : string +>this.x : string +>this : typeof C +>x : string + + private static set y(x) { this.y = this.x; } +>y : string +>x : string +>this.y = this.x : string +>this.y : string +>this : typeof C +>y : string +>this.x : string +>this : typeof C +>x : string + + private static foo() { return this.foo; } +>foo : () => typeof C.foo +>this.foo : () => typeof C.foo +>this : typeof C +>foo : () => typeof C.foo + + private static bar() { this.foo(); } +>bar : () => void +>this.foo() : () => typeof C.foo +>this.foo : () => typeof C.foo +>this : typeof C +>foo : () => typeof C.foo + + private bar() { +>bar : () => void + + class C2 { +>C2 : C2 + + private foo() { +>foo : () => void + + let x: C; +>x : C +>C : C + + var x1 = x.foo; +>x1 : () => any +>x.foo : () => any +>x : C +>foo : () => any + + var x2 = x.bar; +>x2 : () => void +>x.bar : () => void +>x : C +>bar : () => void + + var x3 = x.x; +>x3 : string +>x.x : string +>x : C +>x : string + + var x4 = x.y; +>x4 : string +>x.y : string +>x : C +>y : string + + var sx1 = C.x; +>sx1 : string +>C.x : string +>C : typeof C +>x : string + + var sx2 = C.y; +>sx2 : string +>C.y : string +>C : typeof C +>y : string + + var sx3 = C.bar; +>sx3 : () => void +>C.bar : () => void +>C : typeof C +>bar : () => void + + var sx4 = C.foo; +>sx4 : () => typeof C.foo +>C.foo : () => typeof C.foo +>C : typeof C +>foo : () => typeof C.foo + + let y = new C(); +>y : C +>new C() : C +>C : typeof C + + var y1 = y.foo; +>y1 : () => any +>y.foo : () => any +>y : C +>foo : () => any + + var y2 = y.bar; +>y2 : () => void +>y.bar : () => void +>y : C +>bar : () => void + + var y3 = y.x; +>y3 : string +>y.x : string +>y : C +>x : string + + var y4 = y.y; +>y4 : string +>y.y : string +>y : C +>y : string + } + } + } +} diff --git a/tests/baselines/reference/privateInstanceVisibility.symbols b/tests/baselines/reference/privateInstanceVisibility.symbols index d537c05c798..3304e4b31f3 100644 --- a/tests/baselines/reference/privateInstanceVisibility.symbols +++ b/tests/baselines/reference/privateInstanceVisibility.symbols @@ -6,12 +6,12 @@ module Test { >Example : Symbol(Example, Decl(privateInstanceVisibility.ts, 0, 13)) private someNumber: number; ->someNumber : Symbol(someNumber, Decl(privateInstanceVisibility.ts, 2, 26)) +>someNumber : Symbol(Example.someNumber, Decl(privateInstanceVisibility.ts, 2, 26)) public doSomething() { ->doSomething : Symbol(doSomething, Decl(privateInstanceVisibility.ts, 4, 35)) +>doSomething : Symbol(Example.doSomething, Decl(privateInstanceVisibility.ts, 4, 35)) var that = this; >that : Symbol(that, Decl(privateInstanceVisibility.ts, 10, 15)) @@ -22,9 +22,9 @@ module Test { var num = that.someNumber; >num : Symbol(num, Decl(privateInstanceVisibility.ts, 14, 19)) ->that.someNumber : Symbol(someNumber, Decl(privateInstanceVisibility.ts, 2, 26)) +>that.someNumber : Symbol(Example.someNumber, Decl(privateInstanceVisibility.ts, 2, 26)) >that : Symbol(that, Decl(privateInstanceVisibility.ts, 10, 15)) ->someNumber : Symbol(someNumber, Decl(privateInstanceVisibility.ts, 2, 26)) +>someNumber : Symbol(Example.someNumber, Decl(privateInstanceVisibility.ts, 2, 26)) } @@ -40,26 +40,26 @@ class C { >C : Symbol(C, Decl(privateInstanceVisibility.ts, 22, 1)) private x: number; ->x : Symbol(x, Decl(privateInstanceVisibility.ts, 26, 9)) +>x : Symbol(C.x, Decl(privateInstanceVisibility.ts, 26, 9)) getX() { return this.x; } ->getX : Symbol(getX, Decl(privateInstanceVisibility.ts, 28, 22)) ->this.x : Symbol(x, Decl(privateInstanceVisibility.ts, 26, 9)) +>getX : Symbol(C.getX, Decl(privateInstanceVisibility.ts, 28, 22)) +>this.x : Symbol(C.x, Decl(privateInstanceVisibility.ts, 26, 9)) >this : Symbol(C, Decl(privateInstanceVisibility.ts, 22, 1)) ->x : Symbol(x, Decl(privateInstanceVisibility.ts, 26, 9)) +>x : Symbol(C.x, Decl(privateInstanceVisibility.ts, 26, 9)) clone(other: C) { ->clone : Symbol(clone, Decl(privateInstanceVisibility.ts, 30, 29)) +>clone : Symbol(C.clone, Decl(privateInstanceVisibility.ts, 30, 29)) >other : Symbol(other, Decl(privateInstanceVisibility.ts, 32, 10)) >C : Symbol(C, Decl(privateInstanceVisibility.ts, 22, 1)) this.x = other.x; ->this.x : Symbol(x, Decl(privateInstanceVisibility.ts, 26, 9)) +>this.x : Symbol(C.x, Decl(privateInstanceVisibility.ts, 26, 9)) >this : Symbol(C, Decl(privateInstanceVisibility.ts, 22, 1)) ->x : Symbol(x, Decl(privateInstanceVisibility.ts, 26, 9)) ->other.x : Symbol(x, Decl(privateInstanceVisibility.ts, 26, 9)) +>x : Symbol(C.x, Decl(privateInstanceVisibility.ts, 26, 9)) +>other.x : Symbol(C.x, Decl(privateInstanceVisibility.ts, 26, 9)) >other : Symbol(other, Decl(privateInstanceVisibility.ts, 32, 10)) ->x : Symbol(x, Decl(privateInstanceVisibility.ts, 26, 9)) +>x : Symbol(C.x, Decl(privateInstanceVisibility.ts, 26, 9)) } } diff --git a/tests/baselines/reference/privatePropertyUsingObjectType.symbols b/tests/baselines/reference/privatePropertyUsingObjectType.symbols index 094294b6dc0..ac968385afa 100644 --- a/tests/baselines/reference/privatePropertyUsingObjectType.symbols +++ b/tests/baselines/reference/privatePropertyUsingObjectType.symbols @@ -3,22 +3,22 @@ export class FilterManager { >FilterManager : Symbol(FilterManager, Decl(privatePropertyUsingObjectType.ts, 0, 0)) private _filterProviders: { index: IFilterProvider; }; ->_filterProviders : Symbol(_filterProviders, Decl(privatePropertyUsingObjectType.ts, 0, 28)) +>_filterProviders : Symbol(FilterManager._filterProviders, Decl(privatePropertyUsingObjectType.ts, 0, 28)) >index : Symbol(index, Decl(privatePropertyUsingObjectType.ts, 1, 31)) >IFilterProvider : Symbol(IFilterProvider, Decl(privatePropertyUsingObjectType.ts, 5, 1)) private _filterProviders2: { [index: number]: IFilterProvider; }; ->_filterProviders2 : Symbol(_filterProviders2, Decl(privatePropertyUsingObjectType.ts, 1, 58)) +>_filterProviders2 : Symbol(FilterManager._filterProviders2, Decl(privatePropertyUsingObjectType.ts, 1, 58)) >index : Symbol(index, Decl(privatePropertyUsingObjectType.ts, 2, 34)) >IFilterProvider : Symbol(IFilterProvider, Decl(privatePropertyUsingObjectType.ts, 5, 1)) private _filterProviders3: { (index: number): IFilterProvider; }; ->_filterProviders3 : Symbol(_filterProviders3, Decl(privatePropertyUsingObjectType.ts, 2, 69)) +>_filterProviders3 : Symbol(FilterManager._filterProviders3, Decl(privatePropertyUsingObjectType.ts, 2, 69)) >index : Symbol(index, Decl(privatePropertyUsingObjectType.ts, 3, 34)) >IFilterProvider : Symbol(IFilterProvider, Decl(privatePropertyUsingObjectType.ts, 5, 1)) private _filterProviders4: (index: number) => IFilterProvider; ->_filterProviders4 : Symbol(_filterProviders4, Decl(privatePropertyUsingObjectType.ts, 3, 69)) +>_filterProviders4 : Symbol(FilterManager._filterProviders4, Decl(privatePropertyUsingObjectType.ts, 3, 69)) >index : Symbol(index, Decl(privatePropertyUsingObjectType.ts, 4, 32)) >IFilterProvider : Symbol(IFilterProvider, Decl(privatePropertyUsingObjectType.ts, 5, 1)) } diff --git a/tests/baselines/reference/privateVisibles.symbols b/tests/baselines/reference/privateVisibles.symbols index 5dda2315add..0d5d0105737 100644 --- a/tests/baselines/reference/privateVisibles.symbols +++ b/tests/baselines/reference/privateVisibles.symbols @@ -3,21 +3,21 @@ class Foo { >Foo : Symbol(Foo, Decl(privateVisibles.ts, 0, 0)) private pvar = 0; ->pvar : Symbol(pvar, Decl(privateVisibles.ts, 0, 11)) +>pvar : Symbol(Foo.pvar, Decl(privateVisibles.ts, 0, 11)) constructor() { var n = this.pvar; >n : Symbol(n, Decl(privateVisibles.ts, 3, 8)) ->this.pvar : Symbol(pvar, Decl(privateVisibles.ts, 0, 11)) +>this.pvar : Symbol(Foo.pvar, Decl(privateVisibles.ts, 0, 11)) >this : Symbol(Foo, Decl(privateVisibles.ts, 0, 0)) ->pvar : Symbol(pvar, Decl(privateVisibles.ts, 0, 11)) +>pvar : Symbol(Foo.pvar, Decl(privateVisibles.ts, 0, 11)) } public meth() { var q = this.pvar;} ->meth : Symbol(meth, Decl(privateVisibles.ts, 4, 2)) +>meth : Symbol(Foo.meth, Decl(privateVisibles.ts, 4, 2)) >q : Symbol(q, Decl(privateVisibles.ts, 6, 20)) ->this.pvar : Symbol(pvar, Decl(privateVisibles.ts, 0, 11)) +>this.pvar : Symbol(Foo.pvar, Decl(privateVisibles.ts, 0, 11)) >this : Symbol(Foo, Decl(privateVisibles.ts, 0, 0)) ->pvar : Symbol(pvar, Decl(privateVisibles.ts, 0, 11)) +>pvar : Symbol(Foo.pvar, Decl(privateVisibles.ts, 0, 11)) } diff --git a/tests/baselines/reference/promiseChaining.symbols b/tests/baselines/reference/promiseChaining.symbols index f13323742ce..73f0eafd5b4 100644 --- a/tests/baselines/reference/promiseChaining.symbols +++ b/tests/baselines/reference/promiseChaining.symbols @@ -4,11 +4,11 @@ class Chain { >T : Symbol(T, Decl(promiseChaining.ts, 0, 12)) constructor(public value: T) { } ->value : Symbol(value, Decl(promiseChaining.ts, 1, 16)) +>value : Symbol(Chain.value, Decl(promiseChaining.ts, 1, 16)) >T : Symbol(T, Decl(promiseChaining.ts, 0, 12)) then(cb: (x: T) => S): Chain { ->then : Symbol(then, Decl(promiseChaining.ts, 1, 36)) +>then : Symbol(Chain.then, Decl(promiseChaining.ts, 1, 36)) >S : Symbol(S, Decl(promiseChaining.ts, 2, 9)) >cb : Symbol(cb, Decl(promiseChaining.ts, 2, 12)) >x : Symbol(x, Decl(promiseChaining.ts, 2, 17)) @@ -20,18 +20,18 @@ class Chain { var result = cb(this.value); >result : Symbol(result, Decl(promiseChaining.ts, 3, 11)) >cb : Symbol(cb, Decl(promiseChaining.ts, 2, 12)) ->this.value : Symbol(value, Decl(promiseChaining.ts, 1, 16)) +>this.value : Symbol(Chain.value, Decl(promiseChaining.ts, 1, 16)) >this : Symbol(Chain, Decl(promiseChaining.ts, 0, 0)) ->value : Symbol(value, Decl(promiseChaining.ts, 1, 16)) +>value : Symbol(Chain.value, Decl(promiseChaining.ts, 1, 16)) // should get a fresh type parameter which each then call var z = this.then(x => result)/*S*/.then(x => "abc")/*string*/.then(x => x.length)/*number*/; // No error >z : Symbol(z, Decl(promiseChaining.ts, 5, 11)) >this.then(x => result)/*S*/.then(x => "abc")/*string*/.then : Symbol(Chain.then, Decl(promiseChaining.ts, 1, 36)) >this.then(x => result)/*S*/.then : Symbol(Chain.then, Decl(promiseChaining.ts, 1, 36)) ->this.then : Symbol(then, Decl(promiseChaining.ts, 1, 36)) +>this.then : Symbol(Chain.then, Decl(promiseChaining.ts, 1, 36)) >this : Symbol(Chain, Decl(promiseChaining.ts, 0, 0)) ->then : Symbol(then, Decl(promiseChaining.ts, 1, 36)) +>then : Symbol(Chain.then, Decl(promiseChaining.ts, 1, 36)) >x : Symbol(x, Decl(promiseChaining.ts, 5, 26)) >result : Symbol(result, Decl(promiseChaining.ts, 3, 11)) >then : Symbol(Chain.then, Decl(promiseChaining.ts, 1, 36)) diff --git a/tests/baselines/reference/promiseIdentity.symbols b/tests/baselines/reference/promiseIdentity.symbols index 6987154b07f..f1404eaf7b1 100644 --- a/tests/baselines/reference/promiseIdentity.symbols +++ b/tests/baselines/reference/promiseIdentity.symbols @@ -4,7 +4,7 @@ interface IPromise { >T : Symbol(T, Decl(promiseIdentity.ts, 0, 19)) then(callback: (x: T) => IPromise): IPromise; ->then : Symbol(then, Decl(promiseIdentity.ts, 0, 23)) +>then : Symbol(IPromise.then, Decl(promiseIdentity.ts, 0, 23)) >U : Symbol(U, Decl(promiseIdentity.ts, 1, 9)) >callback : Symbol(callback, Decl(promiseIdentity.ts, 1, 12)) >x : Symbol(x, Decl(promiseIdentity.ts, 1, 23)) @@ -19,7 +19,7 @@ interface Promise { >T : Symbol(T, Decl(promiseIdentity.ts, 3, 18)) then(callback: (x: T) => Promise): Promise; ->then : Symbol(then, Decl(promiseIdentity.ts, 3, 22)) +>then : Symbol(Promise.then, Decl(promiseIdentity.ts, 3, 22)) >U : Symbol(U, Decl(promiseIdentity.ts, 4, 9)) >callback : Symbol(callback, Decl(promiseIdentity.ts, 4, 12)) >x : Symbol(x, Decl(promiseIdentity.ts, 4, 23)) @@ -44,7 +44,7 @@ interface IPromise2 { >V : Symbol(V, Decl(promiseIdentity.ts, 10, 22)) then(callback: (x: T) => IPromise2): IPromise2; ->then : Symbol(then, Decl(promiseIdentity.ts, 10, 27)) +>then : Symbol(IPromise2.then, Decl(promiseIdentity.ts, 10, 27)) >U : Symbol(U, Decl(promiseIdentity.ts, 11, 9)) >W : Symbol(W, Decl(promiseIdentity.ts, 11, 11)) >callback : Symbol(callback, Decl(promiseIdentity.ts, 11, 15)) @@ -63,7 +63,7 @@ interface Promise2 { >V : Symbol(V, Decl(promiseIdentity.ts, 13, 21)) then(callback: (x: V) => Promise2): Promise2; // Uses V instead of T in callback's parameter ->then : Symbol(then, Decl(promiseIdentity.ts, 13, 26)) +>then : Symbol(Promise2.then, Decl(promiseIdentity.ts, 13, 26)) >U : Symbol(U, Decl(promiseIdentity.ts, 14, 9)) >W : Symbol(W, Decl(promiseIdentity.ts, 14, 11)) >callback : Symbol(callback, Decl(promiseIdentity.ts, 14, 15)) diff --git a/tests/baselines/reference/promiseIdentityWithAny.symbols b/tests/baselines/reference/promiseIdentityWithAny.symbols index fedac33e280..8bcf096a0a3 100644 --- a/tests/baselines/reference/promiseIdentityWithAny.symbols +++ b/tests/baselines/reference/promiseIdentityWithAny.symbols @@ -5,7 +5,7 @@ interface IPromise { >V : Symbol(V, Decl(promiseIdentityWithAny.ts, 0, 21)) then(callback: (x: T) => IPromise): IPromise; ->then : Symbol(then, Decl(promiseIdentityWithAny.ts, 0, 26)) +>then : Symbol(IPromise.then, Decl(promiseIdentityWithAny.ts, 0, 26)) >U : Symbol(U, Decl(promiseIdentityWithAny.ts, 1, 9)) >W : Symbol(W, Decl(promiseIdentityWithAny.ts, 1, 11)) >callback : Symbol(callback, Decl(promiseIdentityWithAny.ts, 1, 15)) @@ -24,7 +24,7 @@ interface Promise { >V : Symbol(V, Decl(promiseIdentityWithAny.ts, 3, 20)) then(callback: (x: T) => Promise): Promise; ->then : Symbol(then, Decl(promiseIdentityWithAny.ts, 3, 25)) +>then : Symbol(Promise.then, Decl(promiseIdentityWithAny.ts, 3, 25)) >U : Symbol(U, Decl(promiseIdentityWithAny.ts, 4, 9)) >W : Symbol(W, Decl(promiseIdentityWithAny.ts, 4, 11)) >callback : Symbol(callback, Decl(promiseIdentityWithAny.ts, 4, 15)) diff --git a/tests/baselines/reference/promiseIdentityWithConstraints.symbols b/tests/baselines/reference/promiseIdentityWithConstraints.symbols index b3f481c9e7c..00308362b18 100644 --- a/tests/baselines/reference/promiseIdentityWithConstraints.symbols +++ b/tests/baselines/reference/promiseIdentityWithConstraints.symbols @@ -5,7 +5,7 @@ interface IPromise { >V : Symbol(V, Decl(promiseIdentityWithConstraints.ts, 0, 21)) then(callback: (x: T) => IPromise): IPromise; ->then : Symbol(then, Decl(promiseIdentityWithConstraints.ts, 0, 26)) +>then : Symbol(IPromise.then, Decl(promiseIdentityWithConstraints.ts, 0, 26)) >U : Symbol(U, Decl(promiseIdentityWithConstraints.ts, 1, 9)) >T : Symbol(T, Decl(promiseIdentityWithConstraints.ts, 0, 19)) >W : Symbol(W, Decl(promiseIdentityWithConstraints.ts, 1, 21)) @@ -26,7 +26,7 @@ interface Promise { >V : Symbol(V, Decl(promiseIdentityWithConstraints.ts, 3, 20)) then(callback: (x: T) => Promise): Promise; ->then : Symbol(then, Decl(promiseIdentityWithConstraints.ts, 3, 25)) +>then : Symbol(Promise.then, Decl(promiseIdentityWithConstraints.ts, 3, 25)) >U : Symbol(U, Decl(promiseIdentityWithConstraints.ts, 4, 9)) >T : Symbol(T, Decl(promiseIdentityWithConstraints.ts, 3, 18)) >W : Symbol(W, Decl(promiseIdentityWithConstraints.ts, 4, 21)) diff --git a/tests/baselines/reference/promisePermutations.errors.txt b/tests/baselines/reference/promisePermutations.errors.txt index 4edfff05a5a..65fa0981643 100644 --- a/tests/baselines/reference/promisePermutations.errors.txt +++ b/tests/baselines/reference/promisePermutations.errors.txt @@ -1,18 +1,18 @@ tests/cases/compiler/promisePermutations.ts(74,70): error TS2345: Argument of type '(x: number) => IPromise' is not assignable to parameter of type '(value: IPromise) => IPromise'. Types of parameters 'x' and 'value' are incompatible. - Type 'number' is not assignable to type 'IPromise'. + Type 'IPromise' is not assignable to type 'number'. tests/cases/compiler/promisePermutations.ts(79,19): error TS2345: Argument of type '(x: number, y?: string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. Types of parameters 'x' and 'value' are incompatible. - Type 'number' is not assignable to type 'string'. + Type 'string' is not assignable to type 'number'. tests/cases/compiler/promisePermutations.ts(82,19): error TS2345: Argument of type '(x: number, y?: string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. Types of parameters 'x' and 'value' are incompatible. - Type 'number' is not assignable to type 'string'. + Type 'string' is not assignable to type 'number'. tests/cases/compiler/promisePermutations.ts(83,19): error TS2345: Argument of type '(x: number, y?: string) => Promise' is not assignable to parameter of type '(value: string) => Promise'. Types of parameters 'x' and 'value' are incompatible. - Type 'number' is not assignable to type 'string'. + Type 'string' is not assignable to type 'number'. tests/cases/compiler/promisePermutations.ts(84,19): error TS2345: Argument of type '(x: number, y?: string) => Promise' is not assignable to parameter of type '(value: string) => IPromise'. Types of parameters 'x' and 'value' are incompatible. - Type 'number' is not assignable to type 'string'. + Type 'string' is not assignable to type 'number'. tests/cases/compiler/promisePermutations.ts(88,19): error TS2345: Argument of type '(x: number, cb: (a: string) => string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. tests/cases/compiler/promisePermutations.ts(91,19): error TS2345: Argument of type '(x: number, cb: (a: string) => string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. tests/cases/compiler/promisePermutations.ts(92,19): error TS2345: Argument of type '(x: number, cb: (a: string) => string) => Promise' is not assignable to parameter of type '(value: string) => Promise'. @@ -23,16 +23,16 @@ tests/cases/compiler/promisePermutations.ts(101,19): error TS2345: Argument of t tests/cases/compiler/promisePermutations.ts(102,19): error TS2345: Argument of type '(x: number, cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: string) => IPromise'. tests/cases/compiler/promisePermutations.ts(106,19): error TS2345: Argument of type '(cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. Types of parameters 'cb' and 'value' are incompatible. - Type '(a: T) => T' is not assignable to type 'string'. + Type 'string' is not assignable to type '(a: T) => T'. tests/cases/compiler/promisePermutations.ts(109,19): error TS2345: Argument of type '(cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. Types of parameters 'cb' and 'value' are incompatible. - Type '(a: T) => T' is not assignable to type 'string'. + Type 'string' is not assignable to type '(a: T) => T'. tests/cases/compiler/promisePermutations.ts(110,19): error TS2345: Argument of type '(cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: string) => Promise'. Types of parameters 'cb' and 'value' are incompatible. - Type '(a: T) => T' is not assignable to type 'string'. + Type 'string' is not assignable to type '(a: T) => T'. tests/cases/compiler/promisePermutations.ts(111,19): error TS2345: Argument of type '(cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: string) => IPromise'. Types of parameters 'cb' and 'value' are incompatible. - Type '(a: T) => T' is not assignable to type 'string'. + Type 'string' is not assignable to type '(a: T) => T'. tests/cases/compiler/promisePermutations.ts(117,19): error TS2345: Argument of type '(x: T, cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: number) => IPromise'. tests/cases/compiler/promisePermutations.ts(120,19): error TS2345: Argument of type '(x: T, cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: number) => IPromise'. tests/cases/compiler/promisePermutations.ts(121,19): error TS2345: Argument of type '(x: T, cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: number) => Promise'. @@ -55,7 +55,7 @@ tests/cases/compiler/promisePermutations.ts(152,12): error TS2453: The type argu Types of property 'then' are incompatible. Type '{ (success?: (value: string) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; }' is not assignable to type '{ (success?: (value: number) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; }'. Types of parameters 'success' and 'success' are incompatible. - Type '(value: string) => IPromise' is not assignable to type '(value: number) => Promise'. + Type '(value: number) => Promise' is not assignable to type '(value: string) => IPromise'. Types of parameters 'value' and 'value' are incompatible. Type 'string' is not assignable to type 'number'. tests/cases/compiler/promisePermutations.ts(156,21): error TS2345: Argument of type '{ (x: number): IPromise; (x: string): IPromise; }' is not assignable to parameter of type '(value: number) => IPromise'. @@ -72,7 +72,7 @@ tests/cases/compiler/promisePermutations.ts(160,21): error TS2345: Argument of t Types of property 'then' are incompatible. Type '{ (success?: (value: number) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; }' is not assignable to type '{ (success?: (value: string) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; }'. Types of parameters 'success' and 'success' are incompatible. - Type '(value: number) => Promise' is not assignable to type '(value: string) => IPromise'. + Type '(value: string) => IPromise' is not assignable to type '(value: number) => Promise'. Types of parameters 'value' and 'value' are incompatible. Type 'number' is not assignable to type 'string'. @@ -155,7 +155,7 @@ tests/cases/compiler/promisePermutations.ts(160,21): error TS2345: Argument of t ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number) => IPromise' is not assignable to parameter of type '(value: IPromise) => IPromise'. !!! error TS2345: Types of parameters 'x' and 'value' are incompatible. -!!! error TS2345: Type 'number' is not assignable to type 'IPromise'. +!!! error TS2345: Type 'IPromise' is not assignable to type 'number'. var r4: IPromise; var sIPromise: (x: any) => IPromise; @@ -164,24 +164,24 @@ tests/cases/compiler/promisePermutations.ts(160,21): error TS2345: Argument of t ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, y?: string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. !!! error TS2345: Types of parameters 'x' and 'value' are incompatible. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Type 'string' is not assignable to type 'number'. var r4b = r4.then(sIPromise, testFunction4, testFunction4).then(sIPromise, testFunction4, testFunction4); // ok var s4: Promise; var s4a = s4.then(testFunction4, testFunction4, testFunction4); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, y?: string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. !!! error TS2345: Types of parameters 'x' and 'value' are incompatible. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Type 'string' is not assignable to type 'number'. var s4b = s4.then(testFunction4P, testFunction4P, testFunction4P); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, y?: string) => Promise' is not assignable to parameter of type '(value: string) => Promise'. !!! error TS2345: Types of parameters 'x' and 'value' are incompatible. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Type 'string' is not assignable to type 'number'. var s4c = s4.then(testFunction4P, testFunction4, testFunction4); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, y?: string) => Promise' is not assignable to parameter of type '(value: string) => IPromise'. !!! error TS2345: Types of parameters 'x' and 'value' are incompatible. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Type 'string' is not assignable to type 'number'. var s4d = s4.then(sIPromise, testFunction4P, testFunction4).then(sIPromise, testFunction4P, testFunction4); var r5: IPromise; @@ -223,24 +223,24 @@ tests/cases/compiler/promisePermutations.ts(160,21): error TS2345: Argument of t ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. !!! error TS2345: Types of parameters 'cb' and 'value' are incompatible. -!!! error TS2345: Type '(a: T) => T' is not assignable to type 'string'. +!!! error TS2345: Type 'string' is not assignable to type '(a: T) => T'. var r7b = r7.then(sIPromise, sIPromise, sIPromise).then(sIPromise, sIPromise, sIPromise); // ok var s7: Promise; var s7a = r7.then(testFunction7, testFunction7, testFunction7); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. !!! error TS2345: Types of parameters 'cb' and 'value' are incompatible. -!!! error TS2345: Type '(a: T) => T' is not assignable to type 'string'. +!!! error TS2345: Type 'string' is not assignable to type '(a: T) => T'. var s7b = r7.then(testFunction7P, testFunction7P, testFunction7P); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: string) => Promise'. !!! error TS2345: Types of parameters 'cb' and 'value' are incompatible. -!!! error TS2345: Type '(a: T) => T' is not assignable to type 'string'. +!!! error TS2345: Type 'string' is not assignable to type '(a: T) => T'. var s7c = r7.then(testFunction7P, testFunction7, testFunction7); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: string) => IPromise'. !!! error TS2345: Types of parameters 'cb' and 'value' are incompatible. -!!! error TS2345: Type '(a: T) => T' is not assignable to type 'string'. +!!! error TS2345: Type 'string' is not assignable to type '(a: T) => T'. var s7d = r7.then(sPromise, sPromise, sPromise).then(sPromise, sPromise, sPromise); // ok? var r8: IPromise; @@ -316,7 +316,7 @@ tests/cases/compiler/promisePermutations.ts(160,21): error TS2345: Argument of t !!! error TS2453: Types of property 'then' are incompatible. !!! error TS2453: Type '{ (success?: (value: string) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; }' is not assignable to type '{ (success?: (value: number) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; }'. !!! error TS2453: Types of parameters 'success' and 'success' are incompatible. -!!! error TS2453: Type '(value: string) => IPromise' is not assignable to type '(value: number) => Promise'. +!!! error TS2453: Type '(value: number) => Promise' is not assignable to type '(value: string) => IPromise'. !!! error TS2453: Types of parameters 'value' and 'value' are incompatible. !!! error TS2453: Type 'string' is not assignable to type 'number'. var s10g = s10.then(testFunctionP, nIPromise, sIPromise).then(sPromise, sIPromise, sIPromise); // ok @@ -345,7 +345,7 @@ tests/cases/compiler/promisePermutations.ts(160,21): error TS2345: Argument of t !!! error TS2345: Types of property 'then' are incompatible. !!! error TS2345: Type '{ (success?: (value: number) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; }' is not assignable to type '{ (success?: (value: string) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; }'. !!! error TS2345: Types of parameters 'success' and 'success' are incompatible. -!!! error TS2345: Type '(value: number) => Promise' is not assignable to type '(value: string) => IPromise'. +!!! error TS2345: Type '(value: string) => IPromise' is not assignable to type '(value: number) => Promise'. !!! error TS2345: Types of parameters 'value' and 'value' are incompatible. !!! error TS2345: Type 'number' is not assignable to type 'string'. diff --git a/tests/baselines/reference/promisePermutations2.errors.txt b/tests/baselines/reference/promisePermutations2.errors.txt index dda9a08b38d..0fc6f04911a 100644 --- a/tests/baselines/reference/promisePermutations2.errors.txt +++ b/tests/baselines/reference/promisePermutations2.errors.txt @@ -1,18 +1,18 @@ tests/cases/compiler/promisePermutations2.ts(73,70): error TS2345: Argument of type '(x: number) => IPromise' is not assignable to parameter of type '(value: IPromise) => IPromise'. Types of parameters 'x' and 'value' are incompatible. - Type 'number' is not assignable to type 'IPromise'. + Type 'IPromise' is not assignable to type 'number'. tests/cases/compiler/promisePermutations2.ts(78,19): error TS2345: Argument of type '(x: number, y?: string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. Types of parameters 'x' and 'value' are incompatible. - Type 'number' is not assignable to type 'string'. + Type 'string' is not assignable to type 'number'. tests/cases/compiler/promisePermutations2.ts(81,19): error TS2345: Argument of type '(x: number, y?: string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. Types of parameters 'x' and 'value' are incompatible. - Type 'number' is not assignable to type 'string'. + Type 'string' is not assignable to type 'number'. tests/cases/compiler/promisePermutations2.ts(82,19): error TS2345: Argument of type '(x: number, y?: string) => Promise' is not assignable to parameter of type '(value: string) => Promise'. Types of parameters 'x' and 'value' are incompatible. - Type 'number' is not assignable to type 'string'. + Type 'string' is not assignable to type 'number'. tests/cases/compiler/promisePermutations2.ts(83,19): error TS2345: Argument of type '(x: number, y?: string) => Promise' is not assignable to parameter of type '(value: string) => IPromise'. Types of parameters 'x' and 'value' are incompatible. - Type 'number' is not assignable to type 'string'. + Type 'string' is not assignable to type 'number'. tests/cases/compiler/promisePermutations2.ts(87,19): error TS2345: Argument of type '(x: number, cb: (a: string) => string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. tests/cases/compiler/promisePermutations2.ts(90,19): error TS2345: Argument of type '(x: number, cb: (a: string) => string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. tests/cases/compiler/promisePermutations2.ts(91,19): error TS2345: Argument of type '(x: number, cb: (a: string) => string) => Promise' is not assignable to parameter of type '(value: string) => Promise'. @@ -23,16 +23,16 @@ tests/cases/compiler/promisePermutations2.ts(100,19): error TS2345: Argument of tests/cases/compiler/promisePermutations2.ts(101,19): error TS2345: Argument of type '(x: number, cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: string) => IPromise'. tests/cases/compiler/promisePermutations2.ts(105,19): error TS2345: Argument of type '(cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. Types of parameters 'cb' and 'value' are incompatible. - Type '(a: T) => T' is not assignable to type 'string'. + Type 'string' is not assignable to type '(a: T) => T'. tests/cases/compiler/promisePermutations2.ts(108,19): error TS2345: Argument of type '(cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. Types of parameters 'cb' and 'value' are incompatible. - Type '(a: T) => T' is not assignable to type 'string'. + Type 'string' is not assignable to type '(a: T) => T'. tests/cases/compiler/promisePermutations2.ts(109,19): error TS2345: Argument of type '(cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: string) => Promise'. Types of parameters 'cb' and 'value' are incompatible. - Type '(a: T) => T' is not assignable to type 'string'. + Type 'string' is not assignable to type '(a: T) => T'. tests/cases/compiler/promisePermutations2.ts(110,19): error TS2345: Argument of type '(cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: string) => IPromise'. Types of parameters 'cb' and 'value' are incompatible. - Type '(a: T) => T' is not assignable to type 'string'. + Type 'string' is not assignable to type '(a: T) => T'. tests/cases/compiler/promisePermutations2.ts(116,19): error TS2345: Argument of type '(x: T, cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: number) => IPromise'. tests/cases/compiler/promisePermutations2.ts(119,19): error TS2345: Argument of type '(x: T, cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: number) => IPromise'. tests/cases/compiler/promisePermutations2.ts(120,19): error TS2345: Argument of type '(x: T, cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: number) => Promise'. @@ -55,7 +55,7 @@ tests/cases/compiler/promisePermutations2.ts(151,12): error TS2453: The type arg Types of property 'then' are incompatible. Type '{ (success?: (value: string) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; }' is not assignable to type '(success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void) => Promise'. Types of parameters 'success' and 'success' are incompatible. - Type '(value: string) => IPromise' is not assignable to type '(value: number) => any'. + Type '(value: number) => any' is not assignable to type '(value: string) => IPromise'. Types of parameters 'value' and 'value' are incompatible. Type 'string' is not assignable to type 'number'. tests/cases/compiler/promisePermutations2.ts(155,21): error TS2345: Argument of type '{ (x: number): IPromise; (x: string): IPromise; }' is not assignable to parameter of type '(value: number) => IPromise'. @@ -72,7 +72,7 @@ tests/cases/compiler/promisePermutations2.ts(159,21): error TS2345: Argument of Types of property 'then' are incompatible. Type '(success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void) => Promise' is not assignable to type '{ (success?: (value: string) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; }'. Types of parameters 'success' and 'success' are incompatible. - Type '(value: number) => any' is not assignable to type '(value: string) => IPromise'. + Type '(value: string) => IPromise' is not assignable to type '(value: number) => any'. Types of parameters 'value' and 'value' are incompatible. Type 'number' is not assignable to type 'string'. @@ -154,7 +154,7 @@ tests/cases/compiler/promisePermutations2.ts(159,21): error TS2345: Argument of ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number) => IPromise' is not assignable to parameter of type '(value: IPromise) => IPromise'. !!! error TS2345: Types of parameters 'x' and 'value' are incompatible. -!!! error TS2345: Type 'number' is not assignable to type 'IPromise'. +!!! error TS2345: Type 'IPromise' is not assignable to type 'number'. var r4: IPromise; var sIPromise: (x: any) => IPromise; @@ -163,24 +163,24 @@ tests/cases/compiler/promisePermutations2.ts(159,21): error TS2345: Argument of ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, y?: string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. !!! error TS2345: Types of parameters 'x' and 'value' are incompatible. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Type 'string' is not assignable to type 'number'. var r4b = r4.then(sIPromise, testFunction4, testFunction4).then(sIPromise, testFunction4, testFunction4); // ok var s4: Promise; var s4a = s4.then(testFunction4, testFunction4, testFunction4); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, y?: string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. !!! error TS2345: Types of parameters 'x' and 'value' are incompatible. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Type 'string' is not assignable to type 'number'. var s4b = s4.then(testFunction4P, testFunction4P, testFunction4P); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, y?: string) => Promise' is not assignable to parameter of type '(value: string) => Promise'. !!! error TS2345: Types of parameters 'x' and 'value' are incompatible. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Type 'string' is not assignable to type 'number'. var s4c = s4.then(testFunction4P, testFunction4, testFunction4); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, y?: string) => Promise' is not assignable to parameter of type '(value: string) => IPromise'. !!! error TS2345: Types of parameters 'x' and 'value' are incompatible. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Type 'string' is not assignable to type 'number'. var s4d = s4.then(sIPromise, testFunction4P, testFunction4).then(sIPromise, testFunction4P, testFunction4); var r5: IPromise; @@ -222,24 +222,24 @@ tests/cases/compiler/promisePermutations2.ts(159,21): error TS2345: Argument of ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. !!! error TS2345: Types of parameters 'cb' and 'value' are incompatible. -!!! error TS2345: Type '(a: T) => T' is not assignable to type 'string'. +!!! error TS2345: Type 'string' is not assignable to type '(a: T) => T'. var r7b = r7.then(sIPromise, sIPromise, sIPromise).then(sIPromise, sIPromise, sIPromise); // ok var s7: Promise; var s7a = r7.then(testFunction7, testFunction7, testFunction7); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. !!! error TS2345: Types of parameters 'cb' and 'value' are incompatible. -!!! error TS2345: Type '(a: T) => T' is not assignable to type 'string'. +!!! error TS2345: Type 'string' is not assignable to type '(a: T) => T'. var s7b = r7.then(testFunction7P, testFunction7P, testFunction7P); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: string) => Promise'. !!! error TS2345: Types of parameters 'cb' and 'value' are incompatible. -!!! error TS2345: Type '(a: T) => T' is not assignable to type 'string'. +!!! error TS2345: Type 'string' is not assignable to type '(a: T) => T'. var s7c = r7.then(testFunction7P, testFunction7, testFunction7); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: string) => IPromise'. !!! error TS2345: Types of parameters 'cb' and 'value' are incompatible. -!!! error TS2345: Type '(a: T) => T' is not assignable to type 'string'. +!!! error TS2345: Type 'string' is not assignable to type '(a: T) => T'. var s7d = r7.then(sPromise, sPromise, sPromise).then(sPromise, sPromise, sPromise); // ok? var r8: IPromise; @@ -315,7 +315,7 @@ tests/cases/compiler/promisePermutations2.ts(159,21): error TS2345: Argument of !!! error TS2453: Types of property 'then' are incompatible. !!! error TS2453: Type '{ (success?: (value: string) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; }' is not assignable to type '(success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void) => Promise'. !!! error TS2453: Types of parameters 'success' and 'success' are incompatible. -!!! error TS2453: Type '(value: string) => IPromise' is not assignable to type '(value: number) => any'. +!!! error TS2453: Type '(value: number) => any' is not assignable to type '(value: string) => IPromise'. !!! error TS2453: Types of parameters 'value' and 'value' are incompatible. !!! error TS2453: Type 'string' is not assignable to type 'number'. var s10g = s10.then(testFunctionP, nIPromise, sIPromise).then(sPromise, sIPromise, sIPromise); // ok @@ -344,7 +344,7 @@ tests/cases/compiler/promisePermutations2.ts(159,21): error TS2345: Argument of !!! error TS2345: Types of property 'then' are incompatible. !!! error TS2345: Type '(success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void) => Promise' is not assignable to type '{ (success?: (value: string) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; }'. !!! error TS2345: Types of parameters 'success' and 'success' are incompatible. -!!! error TS2345: Type '(value: number) => any' is not assignable to type '(value: string) => IPromise'. +!!! error TS2345: Type '(value: string) => IPromise' is not assignable to type '(value: number) => any'. !!! error TS2345: Types of parameters 'value' and 'value' are incompatible. !!! error TS2345: Type 'number' is not assignable to type 'string'. diff --git a/tests/baselines/reference/promisePermutations3.errors.txt b/tests/baselines/reference/promisePermutations3.errors.txt index c6c2bca62a4..a1a1b3f493f 100644 --- a/tests/baselines/reference/promisePermutations3.errors.txt +++ b/tests/baselines/reference/promisePermutations3.errors.txt @@ -1,21 +1,21 @@ tests/cases/compiler/promisePermutations3.ts(68,69): error TS2345: Argument of type '(x: number) => IPromise' is not assignable to parameter of type '(value: IPromise) => IPromise'. Types of parameters 'x' and 'value' are incompatible. - Type 'number' is not assignable to type 'IPromise'. + Type 'IPromise' is not assignable to type 'number'. tests/cases/compiler/promisePermutations3.ts(73,70): error TS2345: Argument of type '(x: number) => IPromise' is not assignable to parameter of type '(value: IPromise) => IPromise'. Types of parameters 'x' and 'value' are incompatible. - Type 'number' is not assignable to type 'IPromise'. + Type 'IPromise' is not assignable to type 'number'. tests/cases/compiler/promisePermutations3.ts(78,19): error TS2345: Argument of type '(x: number, y?: string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. Types of parameters 'x' and 'value' are incompatible. - Type 'number' is not assignable to type 'string'. + Type 'string' is not assignable to type 'number'. tests/cases/compiler/promisePermutations3.ts(81,19): error TS2345: Argument of type '(x: number, y?: string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. Types of parameters 'x' and 'value' are incompatible. - Type 'number' is not assignable to type 'string'. + Type 'string' is not assignable to type 'number'. tests/cases/compiler/promisePermutations3.ts(82,19): error TS2345: Argument of type '(x: number, y?: string) => Promise' is not assignable to parameter of type '(value: string) => Promise'. Types of parameters 'x' and 'value' are incompatible. - Type 'number' is not assignable to type 'string'. + Type 'string' is not assignable to type 'number'. tests/cases/compiler/promisePermutations3.ts(83,19): error TS2345: Argument of type '(x: number, y?: string) => Promise' is not assignable to parameter of type '(value: string) => IPromise'. Types of parameters 'x' and 'value' are incompatible. - Type 'number' is not assignable to type 'string'. + Type 'string' is not assignable to type 'number'. tests/cases/compiler/promisePermutations3.ts(87,19): error TS2345: Argument of type '(x: number, cb: (a: string) => string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. tests/cases/compiler/promisePermutations3.ts(90,19): error TS2345: Argument of type '(x: number, cb: (a: string) => string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. tests/cases/compiler/promisePermutations3.ts(91,19): error TS2345: Argument of type '(x: number, cb: (a: string) => string) => Promise' is not assignable to parameter of type '(value: string) => Promise'. @@ -26,16 +26,16 @@ tests/cases/compiler/promisePermutations3.ts(100,19): error TS2345: Argument of tests/cases/compiler/promisePermutations3.ts(101,19): error TS2345: Argument of type '(x: number, cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: string) => IPromise'. tests/cases/compiler/promisePermutations3.ts(105,19): error TS2345: Argument of type '(cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. Types of parameters 'cb' and 'value' are incompatible. - Type '(a: T) => T' is not assignable to type 'string'. + Type 'string' is not assignable to type '(a: T) => T'. tests/cases/compiler/promisePermutations3.ts(108,19): error TS2345: Argument of type '(cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. Types of parameters 'cb' and 'value' are incompatible. - Type '(a: T) => T' is not assignable to type 'string'. + Type 'string' is not assignable to type '(a: T) => T'. tests/cases/compiler/promisePermutations3.ts(109,19): error TS2345: Argument of type '(cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: string) => Promise'. Types of parameters 'cb' and 'value' are incompatible. - Type '(a: T) => T' is not assignable to type 'string'. + Type 'string' is not assignable to type '(a: T) => T'. tests/cases/compiler/promisePermutations3.ts(110,19): error TS2345: Argument of type '(cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: string) => IPromise'. Types of parameters 'cb' and 'value' are incompatible. - Type '(a: T) => T' is not assignable to type 'string'. + Type 'string' is not assignable to type '(a: T) => T'. tests/cases/compiler/promisePermutations3.ts(116,19): error TS2345: Argument of type '(x: T, cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: number) => IPromise'. tests/cases/compiler/promisePermutations3.ts(119,19): error TS2345: Argument of type '(x: T, cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: number) => IPromise'. tests/cases/compiler/promisePermutations3.ts(120,19): error TS2345: Argument of type '(x: T, cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: number) => Promise'. @@ -58,7 +58,7 @@ tests/cases/compiler/promisePermutations3.ts(151,12): error TS2453: The type arg Types of property 'then' are incompatible. Type '(success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void) => IPromise' is not assignable to type '{ (success?: (value: number) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; }'. Types of parameters 'success' and 'success' are incompatible. - Type '(value: string) => any' is not assignable to type '(value: number) => Promise'. + Type '(value: number) => Promise' is not assignable to type '(value: string) => any'. Types of parameters 'value' and 'value' are incompatible. Type 'string' is not assignable to type 'number'. tests/cases/compiler/promisePermutations3.ts(155,21): error TS2345: Argument of type '{ (x: number): IPromise; (x: string): IPromise; }' is not assignable to parameter of type '(value: number) => IPromise'. @@ -75,7 +75,7 @@ tests/cases/compiler/promisePermutations3.ts(159,21): error TS2345: Argument of Types of property 'then' are incompatible. Type '{ (success?: (value: number) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; }' is not assignable to type '(success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void) => IPromise'. Types of parameters 'success' and 'success' are incompatible. - Type '(value: number) => Promise' is not assignable to type '(value: string) => any'. + Type '(value: string) => any' is not assignable to type '(value: number) => Promise'. Types of parameters 'value' and 'value' are incompatible. Type 'number' is not assignable to type 'string'. tests/cases/compiler/promisePermutations3.ts(165,21): error TS2345: Argument of type '{ (x: T): IPromise; (x: T, y: T): Promise; }' is not assignable to parameter of type '(value: (x: any) => any) => Promise'. @@ -157,7 +157,7 @@ tests/cases/compiler/promisePermutations3.ts(165,21): error TS2345: Argument of ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number) => IPromise' is not assignable to parameter of type '(value: IPromise) => IPromise'. !!! error TS2345: Types of parameters 'x' and 'value' are incompatible. -!!! error TS2345: Type 'number' is not assignable to type 'IPromise'. +!!! error TS2345: Type 'IPromise' is not assignable to type 'number'. var s3: Promise; var s3a = s3.then(testFunction3, testFunction3, testFunction3); var s3b = s3.then(testFunction3P, testFunction3P, testFunction3P); @@ -166,7 +166,7 @@ tests/cases/compiler/promisePermutations3.ts(165,21): error TS2345: Argument of ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number) => IPromise' is not assignable to parameter of type '(value: IPromise) => IPromise'. !!! error TS2345: Types of parameters 'x' and 'value' are incompatible. -!!! error TS2345: Type 'number' is not assignable to type 'IPromise'. +!!! error TS2345: Type 'IPromise' is not assignable to type 'number'. var r4: IPromise; var sIPromise: (x: any) => IPromise; @@ -175,24 +175,24 @@ tests/cases/compiler/promisePermutations3.ts(165,21): error TS2345: Argument of ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, y?: string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. !!! error TS2345: Types of parameters 'x' and 'value' are incompatible. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Type 'string' is not assignable to type 'number'. var r4b = r4.then(sIPromise, testFunction4, testFunction4).then(sIPromise, testFunction4, testFunction4); // ok var s4: Promise; var s4a = s4.then(testFunction4, testFunction4, testFunction4); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, y?: string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. !!! error TS2345: Types of parameters 'x' and 'value' are incompatible. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Type 'string' is not assignable to type 'number'. var s4b = s4.then(testFunction4P, testFunction4P, testFunction4P); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, y?: string) => Promise' is not assignable to parameter of type '(value: string) => Promise'. !!! error TS2345: Types of parameters 'x' and 'value' are incompatible. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Type 'string' is not assignable to type 'number'. var s4c = s4.then(testFunction4P, testFunction4, testFunction4); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, y?: string) => Promise' is not assignable to parameter of type '(value: string) => IPromise'. !!! error TS2345: Types of parameters 'x' and 'value' are incompatible. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Type 'string' is not assignable to type 'number'. var s4d = s4.then(sIPromise, testFunction4P, testFunction4).then(sIPromise, testFunction4P, testFunction4); var r5: IPromise; @@ -234,24 +234,24 @@ tests/cases/compiler/promisePermutations3.ts(165,21): error TS2345: Argument of ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. !!! error TS2345: Types of parameters 'cb' and 'value' are incompatible. -!!! error TS2345: Type '(a: T) => T' is not assignable to type 'string'. +!!! error TS2345: Type 'string' is not assignable to type '(a: T) => T'. var r7b = r7.then(sIPromise, sIPromise, sIPromise).then(sIPromise, sIPromise, sIPromise); // ok var s7: Promise; var s7a = r7.then(testFunction7, testFunction7, testFunction7); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. !!! error TS2345: Types of parameters 'cb' and 'value' are incompatible. -!!! error TS2345: Type '(a: T) => T' is not assignable to type 'string'. +!!! error TS2345: Type 'string' is not assignable to type '(a: T) => T'. var s7b = r7.then(testFunction7P, testFunction7P, testFunction7P); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: string) => Promise'. !!! error TS2345: Types of parameters 'cb' and 'value' are incompatible. -!!! error TS2345: Type '(a: T) => T' is not assignable to type 'string'. +!!! error TS2345: Type 'string' is not assignable to type '(a: T) => T'. var s7c = r7.then(testFunction7P, testFunction7, testFunction7); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: string) => IPromise'. !!! error TS2345: Types of parameters 'cb' and 'value' are incompatible. -!!! error TS2345: Type '(a: T) => T' is not assignable to type 'string'. +!!! error TS2345: Type 'string' is not assignable to type '(a: T) => T'. var s7d = r7.then(sPromise, sPromise, sPromise).then(sPromise, sPromise, sPromise); // ok? var r8: IPromise; @@ -327,7 +327,7 @@ tests/cases/compiler/promisePermutations3.ts(165,21): error TS2345: Argument of !!! error TS2453: Types of property 'then' are incompatible. !!! error TS2453: Type '(success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void) => IPromise' is not assignable to type '{ (success?: (value: number) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; }'. !!! error TS2453: Types of parameters 'success' and 'success' are incompatible. -!!! error TS2453: Type '(value: string) => any' is not assignable to type '(value: number) => Promise'. +!!! error TS2453: Type '(value: number) => Promise' is not assignable to type '(value: string) => any'. !!! error TS2453: Types of parameters 'value' and 'value' are incompatible. !!! error TS2453: Type 'string' is not assignable to type 'number'. var s10g = s10.then(testFunctionP, nIPromise, sIPromise).then(sPromise, sIPromise, sIPromise); // ok @@ -356,7 +356,7 @@ tests/cases/compiler/promisePermutations3.ts(165,21): error TS2345: Argument of !!! error TS2345: Types of property 'then' are incompatible. !!! error TS2345: Type '{ (success?: (value: number) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; }' is not assignable to type '(success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void) => IPromise'. !!! error TS2345: Types of parameters 'success' and 'success' are incompatible. -!!! error TS2345: Type '(value: number) => Promise' is not assignable to type '(value: string) => any'. +!!! error TS2345: Type '(value: string) => any' is not assignable to type '(value: number) => Promise'. !!! error TS2345: Types of parameters 'value' and 'value' are incompatible. !!! error TS2345: Type 'number' is not assignable to type 'string'. diff --git a/tests/baselines/reference/promiseTest.symbols b/tests/baselines/reference/promiseTest.symbols index 229d3e089d0..6cf4ff98d8f 100644 --- a/tests/baselines/reference/promiseTest.symbols +++ b/tests/baselines/reference/promiseTest.symbols @@ -5,7 +5,7 @@ interface Promise { >T : Symbol(T, Decl(promiseTest.ts, 1, 18)) then(success?: (value: T) => Promise): Promise; ->then : Symbol(then, Decl(promiseTest.ts, 1, 22), Decl(promiseTest.ts, 2, 60)) +>then : Symbol(Promise.then, Decl(promiseTest.ts, 1, 22), Decl(promiseTest.ts, 2, 60)) >A : Symbol(A, Decl(promiseTest.ts, 2, 9)) >success : Symbol(success, Decl(promiseTest.ts, 2, 12)) >value : Symbol(value, Decl(promiseTest.ts, 2, 23)) @@ -16,7 +16,7 @@ interface Promise { >A : Symbol(A, Decl(promiseTest.ts, 2, 9)) then(success?: (value: T) => B): Promise; ->then : Symbol(then, Decl(promiseTest.ts, 1, 22), Decl(promiseTest.ts, 2, 60)) +>then : Symbol(Promise.then, Decl(promiseTest.ts, 1, 22), Decl(promiseTest.ts, 2, 60)) >B : Symbol(B, Decl(promiseTest.ts, 3, 9)) >success : Symbol(success, Decl(promiseTest.ts, 3, 12)) >value : Symbol(value, Decl(promiseTest.ts, 3, 23)) @@ -26,7 +26,7 @@ interface Promise { >B : Symbol(B, Decl(promiseTest.ts, 3, 9)) data: T; ->data : Symbol(data, Decl(promiseTest.ts, 3, 51)) +>data : Symbol(Promise.data, Decl(promiseTest.ts, 3, 51)) >T : Symbol(T, Decl(promiseTest.ts, 1, 18)) } diff --git a/tests/baselines/reference/promiseTypeInference.symbols b/tests/baselines/reference/promiseTypeInference.symbols index 14a77b9cdf2..1dcf037b8b3 100644 --- a/tests/baselines/reference/promiseTypeInference.symbols +++ b/tests/baselines/reference/promiseTypeInference.symbols @@ -4,7 +4,7 @@ declare class Promise { >T : Symbol(T, Decl(promiseTypeInference.ts, 0, 22)) then(success?: (value: T) => Promise): Promise; ->then : Symbol(then, Decl(promiseTypeInference.ts, 0, 26)) +>then : Symbol(Promise.then, Decl(promiseTypeInference.ts, 0, 26)) >U : Symbol(U, Decl(promiseTypeInference.ts, 1, 9)) >success : Symbol(success, Decl(promiseTypeInference.ts, 1, 12)) >value : Symbol(value, Decl(promiseTypeInference.ts, 1, 23)) @@ -19,7 +19,7 @@ interface IPromise { >T : Symbol(T, Decl(promiseTypeInference.ts, 3, 19)) then(success?: (value: T) => IPromise): IPromise; ->then : Symbol(then, Decl(promiseTypeInference.ts, 3, 23)) +>then : Symbol(IPromise.then, Decl(promiseTypeInference.ts, 3, 23)) >U : Symbol(U, Decl(promiseTypeInference.ts, 4, 9)) >success : Symbol(success, Decl(promiseTypeInference.ts, 4, 12)) >value : Symbol(value, Decl(promiseTypeInference.ts, 4, 23)) diff --git a/tests/baselines/reference/promiseVoidErrorCallback.symbols b/tests/baselines/reference/promiseVoidErrorCallback.symbols index 93e86b9ec2e..b2959f139ea 100644 --- a/tests/baselines/reference/promiseVoidErrorCallback.symbols +++ b/tests/baselines/reference/promiseVoidErrorCallback.symbols @@ -3,32 +3,32 @@ interface T1 { >T1 : Symbol(T1, Decl(promiseVoidErrorCallback.ts, 0, 0)) __t1: string; ->__t1 : Symbol(__t1, Decl(promiseVoidErrorCallback.ts, 0, 14)) +>__t1 : Symbol(T1.__t1, Decl(promiseVoidErrorCallback.ts, 0, 14)) } interface T2 { >T2 : Symbol(T2, Decl(promiseVoidErrorCallback.ts, 2, 1)) __t2: string; ->__t2 : Symbol(__t2, Decl(promiseVoidErrorCallback.ts, 4, 14)) +>__t2 : Symbol(T2.__t2, Decl(promiseVoidErrorCallback.ts, 4, 14)) } interface T3 { >T3 : Symbol(T3, Decl(promiseVoidErrorCallback.ts, 6, 1)) __t3: string; ->__t3 : Symbol(__t3, Decl(promiseVoidErrorCallback.ts, 8, 14)) +>__t3 : Symbol(T3.__t3, Decl(promiseVoidErrorCallback.ts, 8, 14)) } function f1(): Promise { >f1 : Symbol(f1, Decl(promiseVoidErrorCallback.ts, 10, 1)) ->Promise : Symbol(Promise, Decl(lib.d.ts, --, --), Decl(lib.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, --, --)) >T1 : Symbol(T1, Decl(promiseVoidErrorCallback.ts, 0, 0)) return Promise.resolve({ __t1: "foo_t1" }); ->Promise.resolve : Symbol(PromiseConstructor.resolve, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Promise : Symbol(Promise, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->resolve : Symbol(PromiseConstructor.resolve, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>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, --, --)) >__t1 : Symbol(__t1, Decl(promiseVoidErrorCallback.ts, 13, 28)) } @@ -47,22 +47,22 @@ function f2(x: T1): T2 { var x3 = f1() >x3 : Symbol(x3, Decl(promiseVoidErrorCallback.ts, 20, 3)) ->f1() .then(f2, (e: Error) => { throw e;}) .then : Symbol(Promise.then, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->f1() .then : Symbol(Promise.then, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>f1() .then(f2, (e: Error) => { throw e;}) .then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) +>f1() .then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) >f1 : Symbol(f1, Decl(promiseVoidErrorCallback.ts, 10, 1)) .then(f2, (e: Error) => { ->then : Symbol(Promise.then, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) >f2 : Symbol(f2, Decl(promiseVoidErrorCallback.ts, 14, 1)) >e : Symbol(e, Decl(promiseVoidErrorCallback.ts, 21, 15)) ->Error : Symbol(Error, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Error : Symbol(Error, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) throw e; >e : Symbol(e, Decl(promiseVoidErrorCallback.ts, 21, 15)) }) .then((x: T2) => { ->then : Symbol(Promise.then, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>then : Symbol(Promise.then, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) >x : Symbol(x, Decl(promiseVoidErrorCallback.ts, 24, 11)) >T2 : Symbol(T2, Decl(promiseVoidErrorCallback.ts, 2, 1)) diff --git a/tests/baselines/reference/promises.symbols b/tests/baselines/reference/promises.symbols index 9c25dc8ad28..623a9cfb20a 100644 --- a/tests/baselines/reference/promises.symbols +++ b/tests/baselines/reference/promises.symbols @@ -4,7 +4,7 @@ interface Promise { >T : Symbol(T, Decl(promises.ts, 0, 18)) then(success?: (value: T) => U): Promise; ->then : Symbol(then, Decl(promises.ts, 0, 22), Decl(promises.ts, 1, 51)) +>then : Symbol(Promise.then, Decl(promises.ts, 0, 22), Decl(promises.ts, 1, 51)) >U : Symbol(U, Decl(promises.ts, 1, 9)) >success : Symbol(success, Decl(promises.ts, 1, 12)) >value : Symbol(value, Decl(promises.ts, 1, 23)) @@ -14,7 +14,7 @@ interface Promise { >U : Symbol(U, Decl(promises.ts, 1, 9)) then(success?: (value: T) => Promise): Promise; ->then : Symbol(then, Decl(promises.ts, 0, 22), Decl(promises.ts, 1, 51)) +>then : Symbol(Promise.then, Decl(promises.ts, 0, 22), Decl(promises.ts, 1, 51)) >U : Symbol(U, Decl(promises.ts, 2, 9)) >success : Symbol(success, Decl(promises.ts, 2, 12)) >value : Symbol(value, Decl(promises.ts, 2, 23)) @@ -25,7 +25,7 @@ interface Promise { >U : Symbol(U, Decl(promises.ts, 2, 9)) value: T; ->value : Symbol(value, Decl(promises.ts, 2, 60)) +>value : Symbol(Promise.value, Decl(promises.ts, 2, 60)) >T : Symbol(T, Decl(promises.ts, 0, 18)) } diff --git a/tests/baselines/reference/promisesWithConstraints.symbols b/tests/baselines/reference/promisesWithConstraints.symbols index 055f67cadc1..a180a26135c 100644 --- a/tests/baselines/reference/promisesWithConstraints.symbols +++ b/tests/baselines/reference/promisesWithConstraints.symbols @@ -4,7 +4,7 @@ interface Promise { >T : Symbol(T, Decl(promisesWithConstraints.ts, 0, 18)) then(cb: (x: T) => Promise): Promise; ->then : Symbol(then, Decl(promisesWithConstraints.ts, 0, 22)) +>then : Symbol(Promise.then, Decl(promisesWithConstraints.ts, 0, 22)) >U : Symbol(U, Decl(promisesWithConstraints.ts, 1, 9)) >cb : Symbol(cb, Decl(promisesWithConstraints.ts, 1, 12)) >x : Symbol(x, Decl(promisesWithConstraints.ts, 1, 17)) @@ -21,7 +21,7 @@ interface CPromise { >x : Symbol(x, Decl(promisesWithConstraints.ts, 4, 30)) then(cb: (x: T) => Promise): Promise; ->then : Symbol(then, Decl(promisesWithConstraints.ts, 4, 43)) +>then : Symbol(CPromise.then, Decl(promisesWithConstraints.ts, 4, 43)) >U : Symbol(U, Decl(promisesWithConstraints.ts, 5, 9)) >x : Symbol(x, Decl(promisesWithConstraints.ts, 5, 20)) >cb : Symbol(cb, Decl(promisesWithConstraints.ts, 5, 32)) @@ -35,12 +35,12 @@ interface CPromise { interface Foo { x; } >Foo : Symbol(Foo, Decl(promisesWithConstraints.ts, 6, 1)) ->x : Symbol(x, Decl(promisesWithConstraints.ts, 8, 15)) +>x : Symbol(Foo.x, Decl(promisesWithConstraints.ts, 8, 15)) interface Bar { x; y; } >Bar : Symbol(Bar, Decl(promisesWithConstraints.ts, 8, 20)) ->x : Symbol(x, Decl(promisesWithConstraints.ts, 9, 15)) ->y : Symbol(y, Decl(promisesWithConstraints.ts, 9, 18)) +>x : Symbol(Bar.x, Decl(promisesWithConstraints.ts, 9, 15)) +>y : Symbol(Bar.y, Decl(promisesWithConstraints.ts, 9, 18)) var a: Promise; >a : Symbol(a, Decl(promisesWithConstraints.ts, 11, 3)) diff --git a/tests/baselines/reference/propagationOfPromiseInitialization.symbols b/tests/baselines/reference/propagationOfPromiseInitialization.symbols index 25527f05809..ce60dd5818d 100644 --- a/tests/baselines/reference/propagationOfPromiseInitialization.symbols +++ b/tests/baselines/reference/propagationOfPromiseInitialization.symbols @@ -4,7 +4,7 @@ interface IPromise { >T : Symbol(T, Decl(propagationOfPromiseInitialization.ts, 0, 19)) then(successCallback: (promiseValue: T) => TResult, errorCallback?: (reason: any) => TResult): IPromise; ->then : Symbol(then, Decl(propagationOfPromiseInitialization.ts, 0, 23)) +>then : Symbol(IPromise.then, Decl(propagationOfPromiseInitialization.ts, 0, 23)) >TResult : Symbol(TResult, Decl(propagationOfPromiseInitialization.ts, 1, 9)) >successCallback : Symbol(successCallback, Decl(propagationOfPromiseInitialization.ts, 1, 18)) >promiseValue : Symbol(promiseValue, Decl(propagationOfPromiseInitialization.ts, 1, 36)) diff --git a/tests/baselines/reference/properties.symbols b/tests/baselines/reference/properties.symbols index 6e344f03934..c322e5ecfb2 100644 --- a/tests/baselines/reference/properties.symbols +++ b/tests/baselines/reference/properties.symbols @@ -4,13 +4,13 @@ class MyClass >MyClass : Symbol(MyClass, Decl(properties.ts, 0, 0)) { public get Count(): number ->Count : Symbol(Count, Decl(properties.ts, 2, 1), Decl(properties.ts, 6, 5)) +>Count : Symbol(MyClass.Count, Decl(properties.ts, 2, 1), Decl(properties.ts, 6, 5)) { return 42; } public set Count(value: number) ->Count : Symbol(Count, Decl(properties.ts, 2, 1), Decl(properties.ts, 6, 5)) +>Count : Symbol(MyClass.Count, Decl(properties.ts, 2, 1), Decl(properties.ts, 6, 5)) >value : Symbol(value, Decl(properties.ts, 8, 21)) { // diff --git a/tests/baselines/reference/propertyAccessOnTypeParameterWithConstraints.symbols b/tests/baselines/reference/propertyAccessOnTypeParameterWithConstraints.symbols index bf5cb72a708..6fbb89f00de 100644 --- a/tests/baselines/reference/propertyAccessOnTypeParameterWithConstraints.symbols +++ b/tests/baselines/reference/propertyAccessOnTypeParameterWithConstraints.symbols @@ -5,10 +5,10 @@ class C { >C : Symbol(C, Decl(propertyAccessOnTypeParameterWithConstraints.ts, 0, 0)) >T : Symbol(T, Decl(propertyAccessOnTypeParameterWithConstraints.ts, 3, 8)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) f() { ->f : Symbol(f, Decl(propertyAccessOnTypeParameterWithConstraints.ts, 3, 25)) +>f : Symbol(C.f, Decl(propertyAccessOnTypeParameterWithConstraints.ts, 3, 25)) var x: T; >x : Symbol(x, Decl(propertyAccessOnTypeParameterWithConstraints.ts, 5, 11)) @@ -31,22 +31,22 @@ var r = (new C()).f(); >r : Symbol(r, Decl(propertyAccessOnTypeParameterWithConstraints.ts, 11, 3)) >(new C()).f : Symbol(C.f, Decl(propertyAccessOnTypeParameterWithConstraints.ts, 3, 25)) >C : Symbol(C, Decl(propertyAccessOnTypeParameterWithConstraints.ts, 0, 0)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >f : Symbol(C.f, Decl(propertyAccessOnTypeParameterWithConstraints.ts, 3, 25)) interface I { >I : Symbol(I, Decl(propertyAccessOnTypeParameterWithConstraints.ts, 11, 28)) >T : Symbol(T, Decl(propertyAccessOnTypeParameterWithConstraints.ts, 13, 12)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) foo: T; ->foo : Symbol(foo, Decl(propertyAccessOnTypeParameterWithConstraints.ts, 13, 29)) +>foo : Symbol(I.foo, Decl(propertyAccessOnTypeParameterWithConstraints.ts, 13, 29)) >T : Symbol(T, Decl(propertyAccessOnTypeParameterWithConstraints.ts, 13, 12)) } var i: I; >i : Symbol(i, Decl(propertyAccessOnTypeParameterWithConstraints.ts, 16, 3)) >I : Symbol(I, Decl(propertyAccessOnTypeParameterWithConstraints.ts, 11, 28)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) var r2 = i.foo.getDate(); >r2 : Symbol(r2, Decl(propertyAccessOnTypeParameterWithConstraints.ts, 17, 3)) @@ -68,14 +68,14 @@ var a: { (): T; >T : Symbol(T, Decl(propertyAccessOnTypeParameterWithConstraints.ts, 21, 5)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >T : Symbol(T, Decl(propertyAccessOnTypeParameterWithConstraints.ts, 21, 5)) } var r3 = a().getDate(); >r3 : Symbol(r3, Decl(propertyAccessOnTypeParameterWithConstraints.ts, 23, 3)) >a().getDate : Symbol(Date.getDate, Decl(lib.d.ts, --, --)) >a : Symbol(a, Decl(propertyAccessOnTypeParameterWithConstraints.ts, 20, 3)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >getDate : Symbol(Date.getDate, Decl(lib.d.ts, --, --)) var r3b = a()['getDate'](); @@ -89,7 +89,7 @@ var b = { foo: (x: T) => { >foo : Symbol(foo, Decl(propertyAccessOnTypeParameterWithConstraints.ts, 26, 9)) >T : Symbol(T, Decl(propertyAccessOnTypeParameterWithConstraints.ts, 27, 10)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >x : Symbol(x, Decl(propertyAccessOnTypeParameterWithConstraints.ts, 27, 26)) >T : Symbol(T, Decl(propertyAccessOnTypeParameterWithConstraints.ts, 27, 10)) @@ -111,5 +111,5 @@ var r4 = b.foo(new Date()); >b.foo : Symbol(foo, Decl(propertyAccessOnTypeParameterWithConstraints.ts, 26, 9)) >b : Symbol(b, Decl(propertyAccessOnTypeParameterWithConstraints.ts, 26, 3)) >foo : Symbol(foo, Decl(propertyAccessOnTypeParameterWithConstraints.ts, 26, 9)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) diff --git a/tests/baselines/reference/propertyAccessOnTypeParameterWithConstraints2.symbols b/tests/baselines/reference/propertyAccessOnTypeParameterWithConstraints2.symbols index 29a3b30d450..e535e3e7e71 100644 --- a/tests/baselines/reference/propertyAccessOnTypeParameterWithConstraints2.symbols +++ b/tests/baselines/reference/propertyAccessOnTypeParameterWithConstraints2.symbols @@ -5,7 +5,7 @@ class A { >A : Symbol(A, Decl(propertyAccessOnTypeParameterWithConstraints2.ts, 0, 0)) foo(): string { return ''; } ->foo : Symbol(foo, Decl(propertyAccessOnTypeParameterWithConstraints2.ts, 2, 9)) +>foo : Symbol(A.foo, Decl(propertyAccessOnTypeParameterWithConstraints2.ts, 2, 9)) } class B extends A { @@ -13,7 +13,7 @@ class B extends A { >A : Symbol(A, Decl(propertyAccessOnTypeParameterWithConstraints2.ts, 0, 0)) bar(): string { ->bar : Symbol(bar, Decl(propertyAccessOnTypeParameterWithConstraints2.ts, 6, 19)) +>bar : Symbol(B.bar, Decl(propertyAccessOnTypeParameterWithConstraints2.ts, 6, 19)) return ''; } @@ -27,7 +27,7 @@ class C { >A : Symbol(A, Decl(propertyAccessOnTypeParameterWithConstraints2.ts, 0, 0)) f() { ->f : Symbol(f, Decl(propertyAccessOnTypeParameterWithConstraints2.ts, 12, 35)) +>f : Symbol(C.f, Decl(propertyAccessOnTypeParameterWithConstraints2.ts, 12, 35)) var x: U; >x : Symbol(x, Decl(propertyAccessOnTypeParameterWithConstraints2.ts, 14, 11)) @@ -46,7 +46,7 @@ class C { } g(x: U) { ->g : Symbol(g, Decl(propertyAccessOnTypeParameterWithConstraints2.ts, 17, 5)) +>g : Symbol(C.g, Decl(propertyAccessOnTypeParameterWithConstraints2.ts, 17, 5)) >x : Symbol(x, Decl(propertyAccessOnTypeParameterWithConstraints2.ts, 19, 6)) >U : Symbol(U, Decl(propertyAccessOnTypeParameterWithConstraints2.ts, 12, 8)) @@ -100,7 +100,7 @@ interface I { >A : Symbol(A, Decl(propertyAccessOnTypeParameterWithConstraints2.ts, 0, 0)) foo: U; ->foo : Symbol(foo, Decl(propertyAccessOnTypeParameterWithConstraints2.ts, 40, 39)) +>foo : Symbol(I.foo, Decl(propertyAccessOnTypeParameterWithConstraints2.ts, 40, 39)) >U : Symbol(U, Decl(propertyAccessOnTypeParameterWithConstraints2.ts, 40, 12)) } //interface I { diff --git a/tests/baselines/reference/propertyAccessOnTypeParameterWithConstraints3.symbols b/tests/baselines/reference/propertyAccessOnTypeParameterWithConstraints3.symbols index 6d1074b14f6..c651871a7e3 100644 --- a/tests/baselines/reference/propertyAccessOnTypeParameterWithConstraints3.symbols +++ b/tests/baselines/reference/propertyAccessOnTypeParameterWithConstraints3.symbols @@ -5,7 +5,7 @@ class A { >A : Symbol(A, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 0, 0)) foo(): string { return ''; } ->foo : Symbol(foo, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 2, 9)) +>foo : Symbol(A.foo, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 2, 9)) } class B extends A { @@ -13,7 +13,7 @@ class B extends A { >A : Symbol(A, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 0, 0)) bar(): string { ->bar : Symbol(bar, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 6, 19)) +>bar : Symbol(B.bar, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 6, 19)) return ''; } @@ -27,7 +27,7 @@ class C { >U : Symbol(U, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 12, 8)) f() { ->f : Symbol(f, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 12, 35)) +>f : Symbol(C.f, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 12, 35)) var x: T; >x : Symbol(x, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 14, 11)) @@ -47,7 +47,7 @@ class C { } g(x: U) { ->g : Symbol(g, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 18, 5)) +>g : Symbol(C.g, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 18, 5)) >x : Symbol(x, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 20, 6)) >U : Symbol(U, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 12, 8)) @@ -90,7 +90,7 @@ interface I { >U : Symbol(U, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 30, 12)) foo: T; ->foo : Symbol(foo, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 30, 39)) +>foo : Symbol(I.foo, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 30, 39)) >T : Symbol(T, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 30, 24)) } var i: I; diff --git a/tests/baselines/reference/propertyAccessOnTypeParameterWithoutConstraints.symbols b/tests/baselines/reference/propertyAccessOnTypeParameterWithoutConstraints.symbols index 7417346a791..4ae9957f41e 100644 --- a/tests/baselines/reference/propertyAccessOnTypeParameterWithoutConstraints.symbols +++ b/tests/baselines/reference/propertyAccessOnTypeParameterWithoutConstraints.symbols @@ -4,7 +4,7 @@ class C { >T : Symbol(T, Decl(propertyAccessOnTypeParameterWithoutConstraints.ts, 0, 8)) f() { ->f : Symbol(f, Decl(propertyAccessOnTypeParameterWithoutConstraints.ts, 0, 12)) +>f : Symbol(C.f, Decl(propertyAccessOnTypeParameterWithoutConstraints.ts, 0, 12)) var x: T; >x : Symbol(x, Decl(propertyAccessOnTypeParameterWithoutConstraints.ts, 2, 11)) @@ -34,7 +34,7 @@ interface I { >T : Symbol(T, Decl(propertyAccessOnTypeParameterWithoutConstraints.ts, 10, 12)) foo: T; ->foo : Symbol(foo, Decl(propertyAccessOnTypeParameterWithoutConstraints.ts, 10, 16)) +>foo : Symbol(I.foo, Decl(propertyAccessOnTypeParameterWithoutConstraints.ts, 10, 16)) >T : Symbol(T, Decl(propertyAccessOnTypeParameterWithoutConstraints.ts, 10, 12)) } var i: I; diff --git a/tests/baselines/reference/propertyNameWithoutTypeAnnotation.symbols b/tests/baselines/reference/propertyNameWithoutTypeAnnotation.symbols index 45840561fa7..3c430005fca 100644 --- a/tests/baselines/reference/propertyNameWithoutTypeAnnotation.symbols +++ b/tests/baselines/reference/propertyNameWithoutTypeAnnotation.symbols @@ -3,14 +3,14 @@ class C { >C : Symbol(C, Decl(propertyNameWithoutTypeAnnotation.ts, 0, 0)) foo; ->foo : Symbol(foo, Decl(propertyNameWithoutTypeAnnotation.ts, 0, 9)) +>foo : Symbol(C.foo, Decl(propertyNameWithoutTypeAnnotation.ts, 0, 9)) } interface I { >I : Symbol(I, Decl(propertyNameWithoutTypeAnnotation.ts, 2, 1)) foo; ->foo : Symbol(foo, Decl(propertyNameWithoutTypeAnnotation.ts, 4, 13)) +>foo : Symbol(I.foo, Decl(propertyNameWithoutTypeAnnotation.ts, 4, 13)) } var a: { diff --git a/tests/baselines/reference/propertyNamesOfReservedWords.symbols b/tests/baselines/reference/propertyNamesOfReservedWords.symbols index 591fae05bd5..1ee7ee58595 100644 --- a/tests/baselines/reference/propertyNamesOfReservedWords.symbols +++ b/tests/baselines/reference/propertyNamesOfReservedWords.symbols @@ -3,193 +3,193 @@ class C { >C : Symbol(C, Decl(propertyNamesOfReservedWords.ts, 0, 0)) abstract; ->abstract : Symbol(abstract, Decl(propertyNamesOfReservedWords.ts, 0, 9)) +>abstract : Symbol(C.abstract, Decl(propertyNamesOfReservedWords.ts, 0, 9)) as; ->as : Symbol(as, Decl(propertyNamesOfReservedWords.ts, 1, 13)) +>as : Symbol(C.as, Decl(propertyNamesOfReservedWords.ts, 1, 13)) boolean; ->boolean : Symbol(boolean, Decl(propertyNamesOfReservedWords.ts, 2, 7)) +>boolean : Symbol(C.boolean, Decl(propertyNamesOfReservedWords.ts, 2, 7)) break; ->break : Symbol(break, Decl(propertyNamesOfReservedWords.ts, 3, 12)) +>break : Symbol(C.break, Decl(propertyNamesOfReservedWords.ts, 3, 12)) byte; ->byte : Symbol(byte, Decl(propertyNamesOfReservedWords.ts, 4, 10)) +>byte : Symbol(C.byte, Decl(propertyNamesOfReservedWords.ts, 4, 10)) case; ->case : Symbol(case, Decl(propertyNamesOfReservedWords.ts, 5, 9)) +>case : Symbol(C.case, Decl(propertyNamesOfReservedWords.ts, 5, 9)) catch; ->catch : Symbol(catch, Decl(propertyNamesOfReservedWords.ts, 6, 9)) +>catch : Symbol(C.catch, Decl(propertyNamesOfReservedWords.ts, 6, 9)) char; ->char : Symbol(char, Decl(propertyNamesOfReservedWords.ts, 7, 10)) +>char : Symbol(C.char, Decl(propertyNamesOfReservedWords.ts, 7, 10)) class; ->class : Symbol(class, Decl(propertyNamesOfReservedWords.ts, 8, 9)) +>class : Symbol(C.class, Decl(propertyNamesOfReservedWords.ts, 8, 9)) continue; ->continue : Symbol(continue, Decl(propertyNamesOfReservedWords.ts, 9, 10)) +>continue : Symbol(C.continue, Decl(propertyNamesOfReservedWords.ts, 9, 10)) const; ->const : Symbol(const, Decl(propertyNamesOfReservedWords.ts, 10, 13)) +>const : Symbol(C.const, Decl(propertyNamesOfReservedWords.ts, 10, 13)) debugger; ->debugger : Symbol(debugger, Decl(propertyNamesOfReservedWords.ts, 11, 10)) +>debugger : Symbol(C.debugger, Decl(propertyNamesOfReservedWords.ts, 11, 10)) default; ->default : Symbol(default, Decl(propertyNamesOfReservedWords.ts, 12, 13)) +>default : Symbol(C.default, Decl(propertyNamesOfReservedWords.ts, 12, 13)) delete; ->delete : Symbol(delete, Decl(propertyNamesOfReservedWords.ts, 13, 12)) +>delete : Symbol(C.delete, Decl(propertyNamesOfReservedWords.ts, 13, 12)) do; ->do : Symbol(do, Decl(propertyNamesOfReservedWords.ts, 14, 11)) +>do : Symbol(C.do, Decl(propertyNamesOfReservedWords.ts, 14, 11)) double; ->double : Symbol(double, Decl(propertyNamesOfReservedWords.ts, 15, 7)) +>double : Symbol(C.double, Decl(propertyNamesOfReservedWords.ts, 15, 7)) else; ->else : Symbol(else, Decl(propertyNamesOfReservedWords.ts, 16, 11)) +>else : Symbol(C.else, Decl(propertyNamesOfReservedWords.ts, 16, 11)) enum; ->enum : Symbol(enum, Decl(propertyNamesOfReservedWords.ts, 17, 9)) +>enum : Symbol(C.enum, Decl(propertyNamesOfReservedWords.ts, 17, 9)) export; ->export : Symbol(export, Decl(propertyNamesOfReservedWords.ts, 18, 9)) +>export : Symbol(C.export, Decl(propertyNamesOfReservedWords.ts, 18, 9)) extends; ->extends : Symbol(extends, Decl(propertyNamesOfReservedWords.ts, 19, 11)) +>extends : Symbol(C.extends, Decl(propertyNamesOfReservedWords.ts, 19, 11)) false; ->false : Symbol(false, Decl(propertyNamesOfReservedWords.ts, 20, 12)) +>false : Symbol(C.false, Decl(propertyNamesOfReservedWords.ts, 20, 12)) final; ->final : Symbol(final, Decl(propertyNamesOfReservedWords.ts, 21, 10)) +>final : Symbol(C.final, Decl(propertyNamesOfReservedWords.ts, 21, 10)) finally; ->finally : Symbol(finally, Decl(propertyNamesOfReservedWords.ts, 22, 10)) +>finally : Symbol(C.finally, Decl(propertyNamesOfReservedWords.ts, 22, 10)) float; ->float : Symbol(float, Decl(propertyNamesOfReservedWords.ts, 23, 12)) +>float : Symbol(C.float, Decl(propertyNamesOfReservedWords.ts, 23, 12)) for; ->for : Symbol(for, Decl(propertyNamesOfReservedWords.ts, 24, 10)) +>for : Symbol(C.for, Decl(propertyNamesOfReservedWords.ts, 24, 10)) function; ->function : Symbol(function, Decl(propertyNamesOfReservedWords.ts, 25, 8)) +>function : Symbol(C.function, Decl(propertyNamesOfReservedWords.ts, 25, 8)) goto; ->goto : Symbol(goto, Decl(propertyNamesOfReservedWords.ts, 26, 13)) +>goto : Symbol(C.goto, Decl(propertyNamesOfReservedWords.ts, 26, 13)) if; ->if : Symbol(if, Decl(propertyNamesOfReservedWords.ts, 27, 9)) +>if : Symbol(C.if, Decl(propertyNamesOfReservedWords.ts, 27, 9)) implements; ->implements : Symbol(implements, Decl(propertyNamesOfReservedWords.ts, 28, 7)) +>implements : Symbol(C.implements, Decl(propertyNamesOfReservedWords.ts, 28, 7)) import; ->import : Symbol(import, Decl(propertyNamesOfReservedWords.ts, 29, 15)) +>import : Symbol(C.import, Decl(propertyNamesOfReservedWords.ts, 29, 15)) in; ->in : Symbol(in, Decl(propertyNamesOfReservedWords.ts, 30, 11)) +>in : Symbol(C.in, Decl(propertyNamesOfReservedWords.ts, 30, 11)) instanceof; ->instanceof : Symbol(instanceof, Decl(propertyNamesOfReservedWords.ts, 31, 7)) +>instanceof : Symbol(C.instanceof, Decl(propertyNamesOfReservedWords.ts, 31, 7)) int; ->int : Symbol(int, Decl(propertyNamesOfReservedWords.ts, 32, 15)) +>int : Symbol(C.int, Decl(propertyNamesOfReservedWords.ts, 32, 15)) interface; ->interface : Symbol(interface, Decl(propertyNamesOfReservedWords.ts, 33, 8)) +>interface : Symbol(C.interface, Decl(propertyNamesOfReservedWords.ts, 33, 8)) is; ->is : Symbol(is, Decl(propertyNamesOfReservedWords.ts, 34, 14)) +>is : Symbol(C.is, Decl(propertyNamesOfReservedWords.ts, 34, 14)) long; ->long : Symbol(long, Decl(propertyNamesOfReservedWords.ts, 35, 7)) +>long : Symbol(C.long, Decl(propertyNamesOfReservedWords.ts, 35, 7)) namespace; ->namespace : Symbol(namespace, Decl(propertyNamesOfReservedWords.ts, 36, 9)) +>namespace : Symbol(C.namespace, Decl(propertyNamesOfReservedWords.ts, 36, 9)) native; ->native : Symbol(native, Decl(propertyNamesOfReservedWords.ts, 37, 14)) +>native : Symbol(C.native, Decl(propertyNamesOfReservedWords.ts, 37, 14)) new; ->new : Symbol(new, Decl(propertyNamesOfReservedWords.ts, 38, 11)) +>new : Symbol(C.new, Decl(propertyNamesOfReservedWords.ts, 38, 11)) null; ->null : Symbol(null, Decl(propertyNamesOfReservedWords.ts, 39, 8)) +>null : Symbol(C.null, Decl(propertyNamesOfReservedWords.ts, 39, 8)) package; ->package : Symbol(package, Decl(propertyNamesOfReservedWords.ts, 40, 9)) +>package : Symbol(C.package, Decl(propertyNamesOfReservedWords.ts, 40, 9)) private; ->private : Symbol(private, Decl(propertyNamesOfReservedWords.ts, 41, 12)) +>private : Symbol(C.private, Decl(propertyNamesOfReservedWords.ts, 41, 12)) protected; ->protected : Symbol(protected, Decl(propertyNamesOfReservedWords.ts, 42, 12)) +>protected : Symbol(C.protected, Decl(propertyNamesOfReservedWords.ts, 42, 12)) public; ->public : Symbol(public, Decl(propertyNamesOfReservedWords.ts, 43, 14)) +>public : Symbol(C.public, Decl(propertyNamesOfReservedWords.ts, 43, 14)) return; ->return : Symbol(return, Decl(propertyNamesOfReservedWords.ts, 44, 11)) +>return : Symbol(C.return, Decl(propertyNamesOfReservedWords.ts, 44, 11)) short; ->short : Symbol(short, Decl(propertyNamesOfReservedWords.ts, 45, 11)) +>short : Symbol(C.short, Decl(propertyNamesOfReservedWords.ts, 45, 11)) static; ->static : Symbol(static, Decl(propertyNamesOfReservedWords.ts, 46, 10)) +>static : Symbol(C.static, Decl(propertyNamesOfReservedWords.ts, 46, 10)) super; ->super : Symbol(super, Decl(propertyNamesOfReservedWords.ts, 47, 11)) +>super : Symbol(C.super, Decl(propertyNamesOfReservedWords.ts, 47, 11)) switch; ->switch : Symbol(switch, Decl(propertyNamesOfReservedWords.ts, 48, 10)) +>switch : Symbol(C.switch, Decl(propertyNamesOfReservedWords.ts, 48, 10)) synchronized; ->synchronized : Symbol(synchronized, Decl(propertyNamesOfReservedWords.ts, 49, 11)) +>synchronized : Symbol(C.synchronized, Decl(propertyNamesOfReservedWords.ts, 49, 11)) this; ->this : Symbol(this, Decl(propertyNamesOfReservedWords.ts, 50, 17)) +>this : Symbol(C.this, Decl(propertyNamesOfReservedWords.ts, 50, 17)) throw; ->throw : Symbol(throw, Decl(propertyNamesOfReservedWords.ts, 51, 9)) +>throw : Symbol(C.throw, Decl(propertyNamesOfReservedWords.ts, 51, 9)) throws; ->throws : Symbol(throws, Decl(propertyNamesOfReservedWords.ts, 52, 10)) +>throws : Symbol(C.throws, Decl(propertyNamesOfReservedWords.ts, 52, 10)) transient; ->transient : Symbol(transient, Decl(propertyNamesOfReservedWords.ts, 53, 11)) +>transient : Symbol(C.transient, Decl(propertyNamesOfReservedWords.ts, 53, 11)) true; ->true : Symbol(true, Decl(propertyNamesOfReservedWords.ts, 54, 14)) +>true : Symbol(C.true, Decl(propertyNamesOfReservedWords.ts, 54, 14)) try; ->try : Symbol(try, Decl(propertyNamesOfReservedWords.ts, 55, 9)) +>try : Symbol(C.try, Decl(propertyNamesOfReservedWords.ts, 55, 9)) typeof; ->typeof : Symbol(typeof, Decl(propertyNamesOfReservedWords.ts, 56, 8)) +>typeof : Symbol(C.typeof, Decl(propertyNamesOfReservedWords.ts, 56, 8)) use; ->use : Symbol(use, Decl(propertyNamesOfReservedWords.ts, 57, 11)) +>use : Symbol(C.use, Decl(propertyNamesOfReservedWords.ts, 57, 11)) var; ->var : Symbol(var, Decl(propertyNamesOfReservedWords.ts, 58, 8)) +>var : Symbol(C.var, Decl(propertyNamesOfReservedWords.ts, 58, 8)) void; ->void : Symbol(void, Decl(propertyNamesOfReservedWords.ts, 59, 8)) +>void : Symbol(C.void, Decl(propertyNamesOfReservedWords.ts, 59, 8)) volatile; ->volatile : Symbol(volatile, Decl(propertyNamesOfReservedWords.ts, 60, 9)) +>volatile : Symbol(C.volatile, Decl(propertyNamesOfReservedWords.ts, 60, 9)) while; ->while : Symbol(while, Decl(propertyNamesOfReservedWords.ts, 61, 13)) +>while : Symbol(C.while, Decl(propertyNamesOfReservedWords.ts, 61, 13)) with; ->with : Symbol(with, Decl(propertyNamesOfReservedWords.ts, 62, 10)) +>with : Symbol(C.with, Decl(propertyNamesOfReservedWords.ts, 62, 10)) } var c: C; >c : Symbol(c, Decl(propertyNamesOfReservedWords.ts, 65, 3)) @@ -211,193 +211,193 @@ interface I { >I : Symbol(I, Decl(propertyNamesOfReservedWords.ts, 67, 14)) abstract; ->abstract : Symbol(abstract, Decl(propertyNamesOfReservedWords.ts, 69, 13)) +>abstract : Symbol(I.abstract, Decl(propertyNamesOfReservedWords.ts, 69, 13)) as; ->as : Symbol(as, Decl(propertyNamesOfReservedWords.ts, 70, 13)) +>as : Symbol(I.as, Decl(propertyNamesOfReservedWords.ts, 70, 13)) boolean; ->boolean : Symbol(boolean, Decl(propertyNamesOfReservedWords.ts, 71, 7)) +>boolean : Symbol(I.boolean, Decl(propertyNamesOfReservedWords.ts, 71, 7)) break; ->break : Symbol(break, Decl(propertyNamesOfReservedWords.ts, 72, 12)) +>break : Symbol(I.break, Decl(propertyNamesOfReservedWords.ts, 72, 12)) byte; ->byte : Symbol(byte, Decl(propertyNamesOfReservedWords.ts, 73, 10)) +>byte : Symbol(I.byte, Decl(propertyNamesOfReservedWords.ts, 73, 10)) case; ->case : Symbol(case, Decl(propertyNamesOfReservedWords.ts, 74, 9)) +>case : Symbol(I.case, Decl(propertyNamesOfReservedWords.ts, 74, 9)) catch; ->catch : Symbol(catch, Decl(propertyNamesOfReservedWords.ts, 75, 9)) +>catch : Symbol(I.catch, Decl(propertyNamesOfReservedWords.ts, 75, 9)) char; ->char : Symbol(char, Decl(propertyNamesOfReservedWords.ts, 76, 10)) +>char : Symbol(I.char, Decl(propertyNamesOfReservedWords.ts, 76, 10)) class; ->class : Symbol(class, Decl(propertyNamesOfReservedWords.ts, 77, 9)) +>class : Symbol(I.class, Decl(propertyNamesOfReservedWords.ts, 77, 9)) continue; ->continue : Symbol(continue, Decl(propertyNamesOfReservedWords.ts, 78, 10)) +>continue : Symbol(I.continue, Decl(propertyNamesOfReservedWords.ts, 78, 10)) const; ->const : Symbol(const, Decl(propertyNamesOfReservedWords.ts, 79, 13)) +>const : Symbol(I.const, Decl(propertyNamesOfReservedWords.ts, 79, 13)) debugger; ->debugger : Symbol(debugger, Decl(propertyNamesOfReservedWords.ts, 80, 10)) +>debugger : Symbol(I.debugger, Decl(propertyNamesOfReservedWords.ts, 80, 10)) default; ->default : Symbol(default, Decl(propertyNamesOfReservedWords.ts, 81, 13)) +>default : Symbol(I.default, Decl(propertyNamesOfReservedWords.ts, 81, 13)) delete; ->delete : Symbol(delete, Decl(propertyNamesOfReservedWords.ts, 82, 12)) +>delete : Symbol(I.delete, Decl(propertyNamesOfReservedWords.ts, 82, 12)) do; ->do : Symbol(do, Decl(propertyNamesOfReservedWords.ts, 83, 11)) +>do : Symbol(I.do, Decl(propertyNamesOfReservedWords.ts, 83, 11)) double; ->double : Symbol(double, Decl(propertyNamesOfReservedWords.ts, 84, 7)) +>double : Symbol(I.double, Decl(propertyNamesOfReservedWords.ts, 84, 7)) else; ->else : Symbol(else, Decl(propertyNamesOfReservedWords.ts, 85, 11)) +>else : Symbol(I.else, Decl(propertyNamesOfReservedWords.ts, 85, 11)) enum; ->enum : Symbol(enum, Decl(propertyNamesOfReservedWords.ts, 86, 9)) +>enum : Symbol(I.enum, Decl(propertyNamesOfReservedWords.ts, 86, 9)) export; ->export : Symbol(export, Decl(propertyNamesOfReservedWords.ts, 87, 9)) +>export : Symbol(I.export, Decl(propertyNamesOfReservedWords.ts, 87, 9)) extends; ->extends : Symbol(extends, Decl(propertyNamesOfReservedWords.ts, 88, 11)) +>extends : Symbol(I.extends, Decl(propertyNamesOfReservedWords.ts, 88, 11)) false; ->false : Symbol(false, Decl(propertyNamesOfReservedWords.ts, 89, 12)) +>false : Symbol(I.false, Decl(propertyNamesOfReservedWords.ts, 89, 12)) final; ->final : Symbol(final, Decl(propertyNamesOfReservedWords.ts, 90, 10)) +>final : Symbol(I.final, Decl(propertyNamesOfReservedWords.ts, 90, 10)) finally; ->finally : Symbol(finally, Decl(propertyNamesOfReservedWords.ts, 91, 10)) +>finally : Symbol(I.finally, Decl(propertyNamesOfReservedWords.ts, 91, 10)) float; ->float : Symbol(float, Decl(propertyNamesOfReservedWords.ts, 92, 12)) +>float : Symbol(I.float, Decl(propertyNamesOfReservedWords.ts, 92, 12)) for; ->for : Symbol(for, Decl(propertyNamesOfReservedWords.ts, 93, 10)) +>for : Symbol(I.for, Decl(propertyNamesOfReservedWords.ts, 93, 10)) function; ->function : Symbol(function, Decl(propertyNamesOfReservedWords.ts, 94, 8)) +>function : Symbol(I.function, Decl(propertyNamesOfReservedWords.ts, 94, 8)) goto; ->goto : Symbol(goto, Decl(propertyNamesOfReservedWords.ts, 95, 13)) +>goto : Symbol(I.goto, Decl(propertyNamesOfReservedWords.ts, 95, 13)) if; ->if : Symbol(if, Decl(propertyNamesOfReservedWords.ts, 96, 9)) +>if : Symbol(I.if, Decl(propertyNamesOfReservedWords.ts, 96, 9)) implements; ->implements : Symbol(implements, Decl(propertyNamesOfReservedWords.ts, 97, 7)) +>implements : Symbol(I.implements, Decl(propertyNamesOfReservedWords.ts, 97, 7)) import; ->import : Symbol(import, Decl(propertyNamesOfReservedWords.ts, 98, 15)) +>import : Symbol(I.import, Decl(propertyNamesOfReservedWords.ts, 98, 15)) in; ->in : Symbol(in, Decl(propertyNamesOfReservedWords.ts, 99, 11)) +>in : Symbol(I.in, Decl(propertyNamesOfReservedWords.ts, 99, 11)) instanceof; ->instanceof : Symbol(instanceof, Decl(propertyNamesOfReservedWords.ts, 100, 7)) +>instanceof : Symbol(I.instanceof, Decl(propertyNamesOfReservedWords.ts, 100, 7)) int; ->int : Symbol(int, Decl(propertyNamesOfReservedWords.ts, 101, 15)) +>int : Symbol(I.int, Decl(propertyNamesOfReservedWords.ts, 101, 15)) interface; ->interface : Symbol(interface, Decl(propertyNamesOfReservedWords.ts, 102, 8)) +>interface : Symbol(I.interface, Decl(propertyNamesOfReservedWords.ts, 102, 8)) is; ->is : Symbol(is, Decl(propertyNamesOfReservedWords.ts, 103, 14)) +>is : Symbol(I.is, Decl(propertyNamesOfReservedWords.ts, 103, 14)) long; ->long : Symbol(long, Decl(propertyNamesOfReservedWords.ts, 104, 7)) +>long : Symbol(I.long, Decl(propertyNamesOfReservedWords.ts, 104, 7)) namespace; ->namespace : Symbol(namespace, Decl(propertyNamesOfReservedWords.ts, 105, 9)) +>namespace : Symbol(I.namespace, Decl(propertyNamesOfReservedWords.ts, 105, 9)) native; ->native : Symbol(native, Decl(propertyNamesOfReservedWords.ts, 106, 14)) +>native : Symbol(I.native, Decl(propertyNamesOfReservedWords.ts, 106, 14)) new; ->new : Symbol(new, Decl(propertyNamesOfReservedWords.ts, 107, 11)) +>new : Symbol(I.new, Decl(propertyNamesOfReservedWords.ts, 107, 11)) null; ->null : Symbol(null, Decl(propertyNamesOfReservedWords.ts, 108, 8)) +>null : Symbol(I.null, Decl(propertyNamesOfReservedWords.ts, 108, 8)) package; ->package : Symbol(package, Decl(propertyNamesOfReservedWords.ts, 109, 9)) +>package : Symbol(I.package, Decl(propertyNamesOfReservedWords.ts, 109, 9)) private; ->private : Symbol(private, Decl(propertyNamesOfReservedWords.ts, 110, 12)) +>private : Symbol(I.private, Decl(propertyNamesOfReservedWords.ts, 110, 12)) protected; ->protected : Symbol(protected, Decl(propertyNamesOfReservedWords.ts, 111, 12)) +>protected : Symbol(I.protected, Decl(propertyNamesOfReservedWords.ts, 111, 12)) public; ->public : Symbol(public, Decl(propertyNamesOfReservedWords.ts, 112, 14)) +>public : Symbol(I.public, Decl(propertyNamesOfReservedWords.ts, 112, 14)) return; ->return : Symbol(return, Decl(propertyNamesOfReservedWords.ts, 113, 11)) +>return : Symbol(I.return, Decl(propertyNamesOfReservedWords.ts, 113, 11)) short; ->short : Symbol(short, Decl(propertyNamesOfReservedWords.ts, 114, 11)) +>short : Symbol(I.short, Decl(propertyNamesOfReservedWords.ts, 114, 11)) static; ->static : Symbol(static, Decl(propertyNamesOfReservedWords.ts, 115, 10)) +>static : Symbol(I.static, Decl(propertyNamesOfReservedWords.ts, 115, 10)) super; ->super : Symbol(super, Decl(propertyNamesOfReservedWords.ts, 116, 11)) +>super : Symbol(I.super, Decl(propertyNamesOfReservedWords.ts, 116, 11)) switch; ->switch : Symbol(switch, Decl(propertyNamesOfReservedWords.ts, 117, 10)) +>switch : Symbol(I.switch, Decl(propertyNamesOfReservedWords.ts, 117, 10)) synchronized; ->synchronized : Symbol(synchronized, Decl(propertyNamesOfReservedWords.ts, 118, 11)) +>synchronized : Symbol(I.synchronized, Decl(propertyNamesOfReservedWords.ts, 118, 11)) this; ->this : Symbol(this, Decl(propertyNamesOfReservedWords.ts, 119, 17)) +>this : Symbol(I.this, Decl(propertyNamesOfReservedWords.ts, 119, 17)) throw; ->throw : Symbol(throw, Decl(propertyNamesOfReservedWords.ts, 120, 9)) +>throw : Symbol(I.throw, Decl(propertyNamesOfReservedWords.ts, 120, 9)) throws; ->throws : Symbol(throws, Decl(propertyNamesOfReservedWords.ts, 121, 10)) +>throws : Symbol(I.throws, Decl(propertyNamesOfReservedWords.ts, 121, 10)) transient; ->transient : Symbol(transient, Decl(propertyNamesOfReservedWords.ts, 122, 11)) +>transient : Symbol(I.transient, Decl(propertyNamesOfReservedWords.ts, 122, 11)) true; ->true : Symbol(true, Decl(propertyNamesOfReservedWords.ts, 123, 14)) +>true : Symbol(I.true, Decl(propertyNamesOfReservedWords.ts, 123, 14)) try; ->try : Symbol(try, Decl(propertyNamesOfReservedWords.ts, 124, 9)) +>try : Symbol(I.try, Decl(propertyNamesOfReservedWords.ts, 124, 9)) typeof; ->typeof : Symbol(typeof, Decl(propertyNamesOfReservedWords.ts, 125, 8)) +>typeof : Symbol(I.typeof, Decl(propertyNamesOfReservedWords.ts, 125, 8)) use; ->use : Symbol(use, Decl(propertyNamesOfReservedWords.ts, 126, 11)) +>use : Symbol(I.use, Decl(propertyNamesOfReservedWords.ts, 126, 11)) var; ->var : Symbol(var, Decl(propertyNamesOfReservedWords.ts, 127, 8)) +>var : Symbol(I.var, Decl(propertyNamesOfReservedWords.ts, 127, 8)) void; ->void : Symbol(void, Decl(propertyNamesOfReservedWords.ts, 128, 8)) +>void : Symbol(I.void, Decl(propertyNamesOfReservedWords.ts, 128, 8)) volatile; ->volatile : Symbol(volatile, Decl(propertyNamesOfReservedWords.ts, 129, 9)) +>volatile : Symbol(I.volatile, Decl(propertyNamesOfReservedWords.ts, 129, 9)) while; ->while : Symbol(while, Decl(propertyNamesOfReservedWords.ts, 130, 13)) +>while : Symbol(I.while, Decl(propertyNamesOfReservedWords.ts, 130, 13)) with; ->with : Symbol(with, Decl(propertyNamesOfReservedWords.ts, 131, 10)) +>with : Symbol(I.with, Decl(propertyNamesOfReservedWords.ts, 131, 10)) } var i: I; diff --git a/tests/baselines/reference/propertyNamesWithStringLiteral.symbols b/tests/baselines/reference/propertyNamesWithStringLiteral.symbols index d81f39b5325..1851629c134 100644 --- a/tests/baselines/reference/propertyNamesWithStringLiteral.symbols +++ b/tests/baselines/reference/propertyNamesWithStringLiteral.symbols @@ -3,17 +3,17 @@ class _Color { >_Color : Symbol(_Color, Decl(propertyNamesWithStringLiteral.ts, 0, 0)) a: number; r: number; g: number; b: number; ->a : Symbol(a, Decl(propertyNamesWithStringLiteral.ts, 0, 14)) ->r : Symbol(r, Decl(propertyNamesWithStringLiteral.ts, 1, 14)) ->g : Symbol(g, Decl(propertyNamesWithStringLiteral.ts, 1, 25)) ->b : Symbol(b, Decl(propertyNamesWithStringLiteral.ts, 1, 36)) +>a : Symbol(_Color.a, Decl(propertyNamesWithStringLiteral.ts, 0, 14)) +>r : Symbol(_Color.r, Decl(propertyNamesWithStringLiteral.ts, 1, 14)) +>g : Symbol(_Color.g, Decl(propertyNamesWithStringLiteral.ts, 1, 25)) +>b : Symbol(_Color.b, Decl(propertyNamesWithStringLiteral.ts, 1, 36)) } interface NamedColors { >NamedColors : Symbol(NamedColors, Decl(propertyNamesWithStringLiteral.ts, 2, 1)) azure: _Color; ->azure : Symbol(azure, Decl(propertyNamesWithStringLiteral.ts, 4, 23)) +>azure : Symbol(NamedColors.azure, Decl(propertyNamesWithStringLiteral.ts, 4, 23)) >_Color : Symbol(_Color, Decl(propertyNamesWithStringLiteral.ts, 0, 0)) "blue": _Color; @@ -38,16 +38,16 @@ var a = Color.namedColors["azure"]; var a = Color.namedColors.blue; // Should not error >a : Symbol(a, Decl(propertyNamesWithStringLiteral.ts, 12, 3), Decl(propertyNamesWithStringLiteral.ts, 13, 3), Decl(propertyNamesWithStringLiteral.ts, 14, 3)) ->Color.namedColors.blue : Symbol(NamedColors."blue", Decl(propertyNamesWithStringLiteral.ts, 5, 18)) +>Color.namedColors.blue : Symbol(NamedColors["blue"], Decl(propertyNamesWithStringLiteral.ts, 5, 18)) >Color.namedColors : Symbol(Color.namedColors, Decl(propertyNamesWithStringLiteral.ts, 10, 14)) >Color : Symbol(Color, Decl(propertyNamesWithStringLiteral.ts, 8, 1)) >namedColors : Symbol(Color.namedColors, Decl(propertyNamesWithStringLiteral.ts, 10, 14)) ->blue : Symbol(NamedColors."blue", Decl(propertyNamesWithStringLiteral.ts, 5, 18)) +>blue : Symbol(NamedColors["blue"], Decl(propertyNamesWithStringLiteral.ts, 5, 18)) var a = Color.namedColors["pale blue"]; // should not error >a : Symbol(a, Decl(propertyNamesWithStringLiteral.ts, 12, 3), Decl(propertyNamesWithStringLiteral.ts, 13, 3), Decl(propertyNamesWithStringLiteral.ts, 14, 3)) >Color.namedColors : Symbol(Color.namedColors, Decl(propertyNamesWithStringLiteral.ts, 10, 14)) >Color : Symbol(Color, Decl(propertyNamesWithStringLiteral.ts, 8, 1)) >namedColors : Symbol(Color.namedColors, Decl(propertyNamesWithStringLiteral.ts, 10, 14)) ->"pale blue" : Symbol(NamedColors."pale blue", Decl(propertyNamesWithStringLiteral.ts, 6, 19)) +>"pale blue" : Symbol(NamedColors["pale blue"], Decl(propertyNamesWithStringLiteral.ts, 6, 19)) diff --git a/tests/baselines/reference/protectedClassPropertyAccessibleWithinClass.symbols b/tests/baselines/reference/protectedClassPropertyAccessibleWithinClass.symbols index ccca7ab7501..ec9464ef1ee 100644 --- a/tests/baselines/reference/protectedClassPropertyAccessibleWithinClass.symbols +++ b/tests/baselines/reference/protectedClassPropertyAccessibleWithinClass.symbols @@ -5,29 +5,29 @@ class C { >C : Symbol(C, Decl(protectedClassPropertyAccessibleWithinClass.ts, 0, 0)) protected x: string; ->x : Symbol(x, Decl(protectedClassPropertyAccessibleWithinClass.ts, 2, 9)) +>x : Symbol(C.x, Decl(protectedClassPropertyAccessibleWithinClass.ts, 2, 9)) protected get y() { return this.x; } ->y : Symbol(y, Decl(protectedClassPropertyAccessibleWithinClass.ts, 3, 24), Decl(protectedClassPropertyAccessibleWithinClass.ts, 4, 40)) ->this.x : Symbol(x, Decl(protectedClassPropertyAccessibleWithinClass.ts, 2, 9)) +>y : Symbol(C.y, Decl(protectedClassPropertyAccessibleWithinClass.ts, 3, 24), Decl(protectedClassPropertyAccessibleWithinClass.ts, 4, 40)) +>this.x : Symbol(C.x, Decl(protectedClassPropertyAccessibleWithinClass.ts, 2, 9)) >this : Symbol(C, Decl(protectedClassPropertyAccessibleWithinClass.ts, 0, 0)) ->x : Symbol(x, Decl(protectedClassPropertyAccessibleWithinClass.ts, 2, 9)) +>x : Symbol(C.x, Decl(protectedClassPropertyAccessibleWithinClass.ts, 2, 9)) protected set y(x) { this.y = this.x; } ->y : Symbol(y, Decl(protectedClassPropertyAccessibleWithinClass.ts, 3, 24), Decl(protectedClassPropertyAccessibleWithinClass.ts, 4, 40)) +>y : Symbol(C.y, Decl(protectedClassPropertyAccessibleWithinClass.ts, 3, 24), Decl(protectedClassPropertyAccessibleWithinClass.ts, 4, 40)) >x : Symbol(x, Decl(protectedClassPropertyAccessibleWithinClass.ts, 5, 20)) ->this.y : Symbol(y, Decl(protectedClassPropertyAccessibleWithinClass.ts, 3, 24), Decl(protectedClassPropertyAccessibleWithinClass.ts, 4, 40)) +>this.y : Symbol(C.y, Decl(protectedClassPropertyAccessibleWithinClass.ts, 3, 24), Decl(protectedClassPropertyAccessibleWithinClass.ts, 4, 40)) >this : Symbol(C, Decl(protectedClassPropertyAccessibleWithinClass.ts, 0, 0)) ->y : Symbol(y, Decl(protectedClassPropertyAccessibleWithinClass.ts, 3, 24), Decl(protectedClassPropertyAccessibleWithinClass.ts, 4, 40)) ->this.x : Symbol(x, Decl(protectedClassPropertyAccessibleWithinClass.ts, 2, 9)) +>y : Symbol(C.y, Decl(protectedClassPropertyAccessibleWithinClass.ts, 3, 24), Decl(protectedClassPropertyAccessibleWithinClass.ts, 4, 40)) +>this.x : Symbol(C.x, Decl(protectedClassPropertyAccessibleWithinClass.ts, 2, 9)) >this : Symbol(C, Decl(protectedClassPropertyAccessibleWithinClass.ts, 0, 0)) ->x : Symbol(x, Decl(protectedClassPropertyAccessibleWithinClass.ts, 2, 9)) +>x : Symbol(C.x, Decl(protectedClassPropertyAccessibleWithinClass.ts, 2, 9)) protected foo() { return this.foo; } ->foo : Symbol(foo, Decl(protectedClassPropertyAccessibleWithinClass.ts, 5, 43)) ->this.foo : Symbol(foo, Decl(protectedClassPropertyAccessibleWithinClass.ts, 5, 43)) +>foo : Symbol(C.foo, Decl(protectedClassPropertyAccessibleWithinClass.ts, 5, 43)) +>this.foo : Symbol(C.foo, Decl(protectedClassPropertyAccessibleWithinClass.ts, 5, 43)) >this : Symbol(C, Decl(protectedClassPropertyAccessibleWithinClass.ts, 0, 0)) ->foo : Symbol(foo, Decl(protectedClassPropertyAccessibleWithinClass.ts, 5, 43)) +>foo : Symbol(C.foo, Decl(protectedClassPropertyAccessibleWithinClass.ts, 5, 43)) protected static x: string; >x : Symbol(C.x, Decl(protectedClassPropertyAccessibleWithinClass.ts, 6, 40)) @@ -66,29 +66,29 @@ class C2 { >C2 : Symbol(C2, Decl(protectedClassPropertyAccessibleWithinClass.ts, 13, 1)) protected x: string; ->x : Symbol(x, Decl(protectedClassPropertyAccessibleWithinClass.ts, 16, 10)) +>x : Symbol(C2.x, Decl(protectedClassPropertyAccessibleWithinClass.ts, 16, 10)) protected get y() { () => this.x; return null; } ->y : Symbol(y, Decl(protectedClassPropertyAccessibleWithinClass.ts, 17, 24), Decl(protectedClassPropertyAccessibleWithinClass.ts, 18, 52)) ->this.x : Symbol(x, Decl(protectedClassPropertyAccessibleWithinClass.ts, 16, 10)) +>y : Symbol(C2.y, Decl(protectedClassPropertyAccessibleWithinClass.ts, 17, 24), Decl(protectedClassPropertyAccessibleWithinClass.ts, 18, 52)) +>this.x : Symbol(C2.x, Decl(protectedClassPropertyAccessibleWithinClass.ts, 16, 10)) >this : Symbol(C2, Decl(protectedClassPropertyAccessibleWithinClass.ts, 13, 1)) ->x : Symbol(x, Decl(protectedClassPropertyAccessibleWithinClass.ts, 16, 10)) +>x : Symbol(C2.x, Decl(protectedClassPropertyAccessibleWithinClass.ts, 16, 10)) protected set y(x) { () => { this.y = this.x; } } ->y : Symbol(y, Decl(protectedClassPropertyAccessibleWithinClass.ts, 17, 24), Decl(protectedClassPropertyAccessibleWithinClass.ts, 18, 52)) +>y : Symbol(C2.y, Decl(protectedClassPropertyAccessibleWithinClass.ts, 17, 24), Decl(protectedClassPropertyAccessibleWithinClass.ts, 18, 52)) >x : Symbol(x, Decl(protectedClassPropertyAccessibleWithinClass.ts, 19, 20)) ->this.y : Symbol(y, Decl(protectedClassPropertyAccessibleWithinClass.ts, 17, 24), Decl(protectedClassPropertyAccessibleWithinClass.ts, 18, 52)) +>this.y : Symbol(C2.y, Decl(protectedClassPropertyAccessibleWithinClass.ts, 17, 24), Decl(protectedClassPropertyAccessibleWithinClass.ts, 18, 52)) >this : Symbol(C2, Decl(protectedClassPropertyAccessibleWithinClass.ts, 13, 1)) ->y : Symbol(y, Decl(protectedClassPropertyAccessibleWithinClass.ts, 17, 24), Decl(protectedClassPropertyAccessibleWithinClass.ts, 18, 52)) ->this.x : Symbol(x, Decl(protectedClassPropertyAccessibleWithinClass.ts, 16, 10)) +>y : Symbol(C2.y, Decl(protectedClassPropertyAccessibleWithinClass.ts, 17, 24), Decl(protectedClassPropertyAccessibleWithinClass.ts, 18, 52)) +>this.x : Symbol(C2.x, Decl(protectedClassPropertyAccessibleWithinClass.ts, 16, 10)) >this : Symbol(C2, Decl(protectedClassPropertyAccessibleWithinClass.ts, 13, 1)) ->x : Symbol(x, Decl(protectedClassPropertyAccessibleWithinClass.ts, 16, 10)) +>x : Symbol(C2.x, Decl(protectedClassPropertyAccessibleWithinClass.ts, 16, 10)) protected foo() { () => this.foo; } ->foo : Symbol(foo, Decl(protectedClassPropertyAccessibleWithinClass.ts, 19, 53)) ->this.foo : Symbol(foo, Decl(protectedClassPropertyAccessibleWithinClass.ts, 19, 53)) +>foo : Symbol(C2.foo, Decl(protectedClassPropertyAccessibleWithinClass.ts, 19, 53)) +>this.foo : Symbol(C2.foo, Decl(protectedClassPropertyAccessibleWithinClass.ts, 19, 53)) >this : Symbol(C2, Decl(protectedClassPropertyAccessibleWithinClass.ts, 13, 1)) ->foo : Symbol(foo, Decl(protectedClassPropertyAccessibleWithinClass.ts, 19, 53)) +>foo : Symbol(C2.foo, Decl(protectedClassPropertyAccessibleWithinClass.ts, 19, 53)) protected static x: string; >x : Symbol(C2.x, Decl(protectedClassPropertyAccessibleWithinClass.ts, 20, 39)) diff --git a/tests/baselines/reference/protectedClassPropertyAccessibleWithinNestedClass.js b/tests/baselines/reference/protectedClassPropertyAccessibleWithinNestedClass.js new file mode 100644 index 00000000000..2bc544e046e --- /dev/null +++ b/tests/baselines/reference/protectedClassPropertyAccessibleWithinNestedClass.js @@ -0,0 +1,84 @@ +//// [protectedClassPropertyAccessibleWithinNestedClass.ts] +// no errors + +class C { + protected x: string; + protected get y() { return this.x; } + protected set y(x) { this.y = this.x; } + protected foo() { return this.foo; } + + protected static x: string; + protected static get y() { return this.x; } + protected static set y(x) { this.y = this.x; } + protected static foo() { return this.foo; } + protected static bar() { this.foo(); } + + protected bar() { + class C2 { + protected foo() { + let x: C; + var x1 = x.foo; + var x2 = x.bar; + var x3 = x.x; + var x4 = x.y; + + var sx1 = C.x; + var sx2 = C.y; + var sx3 = C.bar; + var sx4 = C.foo; + + let y = new C(); + var y1 = y.foo; + var y2 = y.bar; + var y3 = y.x; + var y4 = y.y; + } + } + } +} + +//// [protectedClassPropertyAccessibleWithinNestedClass.js] +// no errors +var C = (function () { + function C() { + } + Object.defineProperty(C.prototype, "y", { + get: function () { return this.x; }, + set: function (x) { this.y = this.x; }, + enumerable: true, + configurable: true + }); + C.prototype.foo = function () { return this.foo; }; + Object.defineProperty(C, "y", { + get: function () { return this.x; }, + set: function (x) { this.y = this.x; }, + enumerable: true, + configurable: true + }); + C.foo = function () { return this.foo; }; + C.bar = function () { this.foo(); }; + C.prototype.bar = function () { + var C2 = (function () { + function C2() { + } + C2.prototype.foo = function () { + var x; + var x1 = x.foo; + var x2 = x.bar; + var x3 = x.x; + var x4 = x.y; + var sx1 = C.x; + var sx2 = C.y; + var sx3 = C.bar; + var sx4 = C.foo; + var y = new C(); + var y1 = y.foo; + var y2 = y.bar; + var y3 = y.x; + var y4 = y.y; + }; + return C2; + }()); + }; + return C; +}()); diff --git a/tests/baselines/reference/protectedClassPropertyAccessibleWithinNestedClass.symbols b/tests/baselines/reference/protectedClassPropertyAccessibleWithinNestedClass.symbols new file mode 100644 index 00000000000..8b05cc017c8 --- /dev/null +++ b/tests/baselines/reference/protectedClassPropertyAccessibleWithinNestedClass.symbols @@ -0,0 +1,154 @@ +=== tests/cases/conformance/classes/members/accessibility/protectedClassPropertyAccessibleWithinNestedClass.ts === +// no errors + +class C { +>C : Symbol(C, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 0, 0)) + + protected x: string; +>x : Symbol(C.x, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 2, 9)) + + protected get y() { return this.x; } +>y : Symbol(C.y, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 3, 24), Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 4, 40)) +>this.x : Symbol(C.x, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 2, 9)) +>this : Symbol(C, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 0, 0)) +>x : Symbol(C.x, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 2, 9)) + + protected set y(x) { this.y = this.x; } +>y : Symbol(C.y, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 3, 24), Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 4, 40)) +>x : Symbol(x, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 5, 20)) +>this.y : Symbol(C.y, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 3, 24), Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 4, 40)) +>this : Symbol(C, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 0, 0)) +>y : Symbol(C.y, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 3, 24), Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 4, 40)) +>this.x : Symbol(C.x, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 2, 9)) +>this : Symbol(C, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 0, 0)) +>x : Symbol(C.x, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 2, 9)) + + protected foo() { return this.foo; } +>foo : Symbol(C.foo, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 5, 43)) +>this.foo : Symbol(C.foo, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 5, 43)) +>this : Symbol(C, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 0, 0)) +>foo : Symbol(C.foo, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 5, 43)) + + protected static x: string; +>x : Symbol(C.x, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 6, 40)) + + protected static get y() { return this.x; } +>y : Symbol(C.y, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 8, 31), Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 9, 47)) +>this.x : Symbol(C.x, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 6, 40)) +>this : Symbol(C, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 0, 0)) +>x : Symbol(C.x, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 6, 40)) + + protected static set y(x) { this.y = this.x; } +>y : Symbol(C.y, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 8, 31), Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 9, 47)) +>x : Symbol(x, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 10, 27)) +>this.y : Symbol(C.y, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 8, 31), Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 9, 47)) +>this : Symbol(C, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 0, 0)) +>y : Symbol(C.y, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 8, 31), Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 9, 47)) +>this.x : Symbol(C.x, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 6, 40)) +>this : Symbol(C, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 0, 0)) +>x : Symbol(C.x, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 6, 40)) + + protected static foo() { return this.foo; } +>foo : Symbol(C.foo, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 10, 50)) +>this.foo : Symbol(C.foo, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 10, 50)) +>this : Symbol(C, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 0, 0)) +>foo : Symbol(C.foo, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 10, 50)) + + protected static bar() { this.foo(); } +>bar : Symbol(C.bar, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 11, 47)) +>this.foo : Symbol(C.foo, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 10, 50)) +>this : Symbol(C, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 0, 0)) +>foo : Symbol(C.foo, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 10, 50)) + + protected bar() { +>bar : Symbol(C.bar, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 12, 42)) + + class C2 { +>C2 : Symbol(C2, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 14, 21)) + + protected foo() { +>foo : Symbol(C2.foo, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 15, 18)) + + let x: C; +>x : Symbol(x, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 17, 19)) +>C : Symbol(C, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 0, 0)) + + var x1 = x.foo; +>x1 : Symbol(x1, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 18, 19)) +>x.foo : Symbol(C.foo, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 5, 43)) +>x : Symbol(x, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 17, 19)) +>foo : Symbol(C.foo, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 5, 43)) + + var x2 = x.bar; +>x2 : Symbol(x2, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 19, 19)) +>x.bar : Symbol(C.bar, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 12, 42)) +>x : Symbol(x, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 17, 19)) +>bar : Symbol(C.bar, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 12, 42)) + + var x3 = x.x; +>x3 : Symbol(x3, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 20, 19)) +>x.x : Symbol(C.x, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 2, 9)) +>x : Symbol(x, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 17, 19)) +>x : Symbol(C.x, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 2, 9)) + + var x4 = x.y; +>x4 : Symbol(x4, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 21, 19)) +>x.y : Symbol(C.y, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 3, 24), Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 4, 40)) +>x : Symbol(x, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 17, 19)) +>y : Symbol(C.y, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 3, 24), Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 4, 40)) + + var sx1 = C.x; +>sx1 : Symbol(sx1, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 23, 19)) +>C.x : Symbol(C.x, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 6, 40)) +>C : Symbol(C, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 0, 0)) +>x : Symbol(C.x, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 6, 40)) + + var sx2 = C.y; +>sx2 : Symbol(sx2, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 24, 19)) +>C.y : Symbol(C.y, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 8, 31), Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 9, 47)) +>C : Symbol(C, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 0, 0)) +>y : Symbol(C.y, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 8, 31), Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 9, 47)) + + var sx3 = C.bar; +>sx3 : Symbol(sx3, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 25, 19)) +>C.bar : Symbol(C.bar, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 11, 47)) +>C : Symbol(C, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 0, 0)) +>bar : Symbol(C.bar, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 11, 47)) + + var sx4 = C.foo; +>sx4 : Symbol(sx4, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 26, 19)) +>C.foo : Symbol(C.foo, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 10, 50)) +>C : Symbol(C, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 0, 0)) +>foo : Symbol(C.foo, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 10, 50)) + + let y = new C(); +>y : Symbol(y, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 28, 19)) +>C : Symbol(C, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 0, 0)) + + var y1 = y.foo; +>y1 : Symbol(y1, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 29, 19)) +>y.foo : Symbol(C.foo, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 5, 43)) +>y : Symbol(y, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 28, 19)) +>foo : Symbol(C.foo, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 5, 43)) + + var y2 = y.bar; +>y2 : Symbol(y2, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 30, 19)) +>y.bar : Symbol(C.bar, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 12, 42)) +>y : Symbol(y, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 28, 19)) +>bar : Symbol(C.bar, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 12, 42)) + + var y3 = y.x; +>y3 : Symbol(y3, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 31, 19)) +>y.x : Symbol(C.x, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 2, 9)) +>y : Symbol(y, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 28, 19)) +>x : Symbol(C.x, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 2, 9)) + + var y4 = y.y; +>y4 : Symbol(y4, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 32, 19)) +>y.y : Symbol(C.y, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 3, 24), Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 4, 40)) +>y : Symbol(y, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 28, 19)) +>y : Symbol(C.y, Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 3, 24), Decl(protectedClassPropertyAccessibleWithinNestedClass.ts, 4, 40)) + } + } + } +} diff --git a/tests/baselines/reference/protectedClassPropertyAccessibleWithinNestedClass.types b/tests/baselines/reference/protectedClassPropertyAccessibleWithinNestedClass.types new file mode 100644 index 00000000000..f7cff2e6719 --- /dev/null +++ b/tests/baselines/reference/protectedClassPropertyAccessibleWithinNestedClass.types @@ -0,0 +1,158 @@ +=== tests/cases/conformance/classes/members/accessibility/protectedClassPropertyAccessibleWithinNestedClass.ts === +// no errors + +class C { +>C : C + + protected x: string; +>x : string + + protected get y() { return this.x; } +>y : string +>this.x : string +>this : this +>x : string + + protected set y(x) { this.y = this.x; } +>y : string +>x : string +>this.y = this.x : string +>this.y : string +>this : this +>y : string +>this.x : string +>this : this +>x : string + + protected foo() { return this.foo; } +>foo : () => any +>this.foo : () => any +>this : this +>foo : () => any + + protected static x: string; +>x : string + + protected static get y() { return this.x; } +>y : string +>this.x : string +>this : typeof C +>x : string + + protected static set y(x) { this.y = this.x; } +>y : string +>x : string +>this.y = this.x : string +>this.y : string +>this : typeof C +>y : string +>this.x : string +>this : typeof C +>x : string + + protected static foo() { return this.foo; } +>foo : () => typeof C.foo +>this.foo : () => typeof C.foo +>this : typeof C +>foo : () => typeof C.foo + + protected static bar() { this.foo(); } +>bar : () => void +>this.foo() : () => typeof C.foo +>this.foo : () => typeof C.foo +>this : typeof C +>foo : () => typeof C.foo + + protected bar() { +>bar : () => void + + class C2 { +>C2 : C2 + + protected foo() { +>foo : () => void + + let x: C; +>x : C +>C : C + + var x1 = x.foo; +>x1 : () => any +>x.foo : () => any +>x : C +>foo : () => any + + var x2 = x.bar; +>x2 : () => void +>x.bar : () => void +>x : C +>bar : () => void + + var x3 = x.x; +>x3 : string +>x.x : string +>x : C +>x : string + + var x4 = x.y; +>x4 : string +>x.y : string +>x : C +>y : string + + var sx1 = C.x; +>sx1 : string +>C.x : string +>C : typeof C +>x : string + + var sx2 = C.y; +>sx2 : string +>C.y : string +>C : typeof C +>y : string + + var sx3 = C.bar; +>sx3 : () => void +>C.bar : () => void +>C : typeof C +>bar : () => void + + var sx4 = C.foo; +>sx4 : () => typeof C.foo +>C.foo : () => typeof C.foo +>C : typeof C +>foo : () => typeof C.foo + + let y = new C(); +>y : C +>new C() : C +>C : typeof C + + var y1 = y.foo; +>y1 : () => any +>y.foo : () => any +>y : C +>foo : () => any + + var y2 = y.bar; +>y2 : () => void +>y.bar : () => void +>y : C +>bar : () => void + + var y3 = y.x; +>y3 : string +>y.x : string +>y : C +>x : string + + var y4 = y.y; +>y4 : string +>y.y : string +>y : C +>y : string + } + } + } +} diff --git a/tests/baselines/reference/protectedClassPropertyAccessibleWithinNestedSubclass.errors.txt b/tests/baselines/reference/protectedClassPropertyAccessibleWithinNestedSubclass.errors.txt new file mode 100644 index 00000000000..0bf38477f70 --- /dev/null +++ b/tests/baselines/reference/protectedClassPropertyAccessibleWithinNestedSubclass.errors.txt @@ -0,0 +1,44 @@ +tests/cases/conformance/classes/members/accessibility/protectedClassPropertyAccessibleWithinNestedSubclass.ts(25,28): error TS2339: Property 'z' does not exist on type 'C'. + + +==== tests/cases/conformance/classes/members/accessibility/protectedClassPropertyAccessibleWithinNestedSubclass.ts (1 errors) ==== + + class B { + protected x: string; + protected static x: string; + } + + class C extends B { + protected get y() { return this.x; } + protected set y(x) { this.y = this.x; } + protected foo() { return this.x; } + + protected static get y() { return this.x; } + protected static set y(x) { this.y = this.x; } + protected static foo() { return this.x; } + protected static bar() { this.foo(); } + + protected bar() { + class D { + protected foo() { + var c = new C(); + var c1 = c.y; + var c2 = c.x; + var c3 = c.foo; + var c4 = c.bar; + var c5 = c.z; // error + ~ +!!! error TS2339: Property 'z' does not exist on type 'C'. + + var sc1 = C.x; + var sc2 = C.y; + var sc3 = C.foo; + var sc4 = C.bar; + } + } + } + } + + class E extends C { + protected z: string; + } \ No newline at end of file diff --git a/tests/baselines/reference/protectedClassPropertyAccessibleWithinNestedSubclass.js b/tests/baselines/reference/protectedClassPropertyAccessibleWithinNestedSubclass.js new file mode 100644 index 00000000000..255c05ac3ac --- /dev/null +++ b/tests/baselines/reference/protectedClassPropertyAccessibleWithinNestedSubclass.js @@ -0,0 +1,99 @@ +//// [protectedClassPropertyAccessibleWithinNestedSubclass.ts] + +class B { + protected x: string; + protected static x: string; +} + +class C extends B { + protected get y() { return this.x; } + protected set y(x) { this.y = this.x; } + protected foo() { return this.x; } + + protected static get y() { return this.x; } + protected static set y(x) { this.y = this.x; } + protected static foo() { return this.x; } + protected static bar() { this.foo(); } + + protected bar() { + class D { + protected foo() { + var c = new C(); + var c1 = c.y; + var c2 = c.x; + var c3 = c.foo; + var c4 = c.bar; + var c5 = c.z; // error + + var sc1 = C.x; + var sc2 = C.y; + var sc3 = C.foo; + var sc4 = C.bar; + } + } + } +} + +class E extends C { + protected z: string; +} + +//// [protectedClassPropertyAccessibleWithinNestedSubclass.js] +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +var B = (function () { + function B() { + } + return B; +}()); +var C = (function (_super) { + __extends(C, _super); + function C() { + _super.apply(this, arguments); + } + Object.defineProperty(C.prototype, "y", { + get: function () { return this.x; }, + set: function (x) { this.y = this.x; }, + enumerable: true, + configurable: true + }); + C.prototype.foo = function () { return this.x; }; + Object.defineProperty(C, "y", { + get: function () { return this.x; }, + set: function (x) { this.y = this.x; }, + enumerable: true, + configurable: true + }); + C.foo = function () { return this.x; }; + C.bar = function () { this.foo(); }; + C.prototype.bar = function () { + var D = (function () { + function D() { + } + D.prototype.foo = function () { + var c = new C(); + var c1 = c.y; + var c2 = c.x; + var c3 = c.foo; + var c4 = c.bar; + var c5 = c.z; // error + var sc1 = C.x; + var sc2 = C.y; + var sc3 = C.foo; + var sc4 = C.bar; + }; + return D; + }()); + }; + return C; +}(B)); +var E = (function (_super) { + __extends(E, _super); + function E() { + _super.apply(this, arguments); + } + return E; +}(C)); diff --git a/tests/baselines/reference/protectedClassPropertyAccessibleWithinNestedSubclass1.errors.txt b/tests/baselines/reference/protectedClassPropertyAccessibleWithinNestedSubclass1.errors.txt new file mode 100644 index 00000000000..2d882681d72 --- /dev/null +++ b/tests/baselines/reference/protectedClassPropertyAccessibleWithinNestedSubclass1.errors.txt @@ -0,0 +1,180 @@ +tests/cases/conformance/classes/members/accessibility/protectedClassPropertyAccessibleWithinNestedSubclass1.ts(15,20): error TS2445: Property 'x' is protected and only accessible within class 'Derived3' and its subclasses. +tests/cases/conformance/classes/members/accessibility/protectedClassPropertyAccessibleWithinNestedSubclass1.ts(32,19): error TS2446: Property 'x' is protected and only accessible through an instance of class 'Derived1'. +tests/cases/conformance/classes/members/accessibility/protectedClassPropertyAccessibleWithinNestedSubclass1.ts(34,20): error TS2446: Property 'x' is protected and only accessible through an instance of class 'Derived1'. +tests/cases/conformance/classes/members/accessibility/protectedClassPropertyAccessibleWithinNestedSubclass1.ts(35,20): error TS2445: Property 'x' is protected and only accessible within class 'Derived3' and its subclasses. +tests/cases/conformance/classes/members/accessibility/protectedClassPropertyAccessibleWithinNestedSubclass1.ts(36,20): error TS2446: Property 'x' is protected and only accessible through an instance of class 'Derived1'. +tests/cases/conformance/classes/members/accessibility/protectedClassPropertyAccessibleWithinNestedSubclass1.ts(52,19): error TS2446: Property 'x' is protected and only accessible through an instance of class 'Derived2'. +tests/cases/conformance/classes/members/accessibility/protectedClassPropertyAccessibleWithinNestedSubclass1.ts(53,20): error TS2446: Property 'x' is protected and only accessible through an instance of class 'Derived2'. +tests/cases/conformance/classes/members/accessibility/protectedClassPropertyAccessibleWithinNestedSubclass1.ts(55,20): error TS2445: Property 'x' is protected and only accessible within class 'Derived3' and its subclasses. +tests/cases/conformance/classes/members/accessibility/protectedClassPropertyAccessibleWithinNestedSubclass1.ts(73,19): error TS2446: Property 'x' is protected and only accessible through an instance of class 'Derived3'. +tests/cases/conformance/classes/members/accessibility/protectedClassPropertyAccessibleWithinNestedSubclass1.ts(74,20): error TS2446: Property 'x' is protected and only accessible through an instance of class 'Derived3'. +tests/cases/conformance/classes/members/accessibility/protectedClassPropertyAccessibleWithinNestedSubclass1.ts(75,20): error TS2446: Property 'x' is protected and only accessible through an instance of class 'Derived3'. +tests/cases/conformance/classes/members/accessibility/protectedClassPropertyAccessibleWithinNestedSubclass1.ts(77,20): error TS2446: Property 'x' is protected and only accessible through an instance of class 'Derived3'. +tests/cases/conformance/classes/members/accessibility/protectedClassPropertyAccessibleWithinNestedSubclass1.ts(93,19): error TS2446: Property 'x' is protected and only accessible through an instance of class 'Derived4'. +tests/cases/conformance/classes/members/accessibility/protectedClassPropertyAccessibleWithinNestedSubclass1.ts(94,20): error TS2446: Property 'x' is protected and only accessible through an instance of class 'Derived4'. +tests/cases/conformance/classes/members/accessibility/protectedClassPropertyAccessibleWithinNestedSubclass1.ts(95,20): error TS2446: Property 'x' is protected and only accessible through an instance of class 'Derived4'. +tests/cases/conformance/classes/members/accessibility/protectedClassPropertyAccessibleWithinNestedSubclass1.ts(96,20): error TS2445: Property 'x' is protected and only accessible within class 'Derived3' and its subclasses. +tests/cases/conformance/classes/members/accessibility/protectedClassPropertyAccessibleWithinNestedSubclass1.ts(110,3): error TS2445: Property 'x' is protected and only accessible within class 'Base' and its subclasses. +tests/cases/conformance/classes/members/accessibility/protectedClassPropertyAccessibleWithinNestedSubclass1.ts(111,4): error TS2445: Property 'x' is protected and only accessible within class 'Base' and its subclasses. +tests/cases/conformance/classes/members/accessibility/protectedClassPropertyAccessibleWithinNestedSubclass1.ts(112,4): error TS2445: Property 'x' is protected and only accessible within class 'Base' and its subclasses. +tests/cases/conformance/classes/members/accessibility/protectedClassPropertyAccessibleWithinNestedSubclass1.ts(113,4): error TS2445: Property 'x' is protected and only accessible within class 'Derived3' and its subclasses. +tests/cases/conformance/classes/members/accessibility/protectedClassPropertyAccessibleWithinNestedSubclass1.ts(114,4): error TS2445: Property 'x' is protected and only accessible within class 'Base' and its subclasses. + + +==== tests/cases/conformance/classes/members/accessibility/protectedClassPropertyAccessibleWithinNestedSubclass1.ts (21 errors) ==== + class Base { + protected x: string; + method() { + class A { + methoda() { + var b: Base; + var d1: Derived1; + var d2: Derived2; + var d3: Derived3; + var d4: Derived4; + + b.x; // OK, accessed within their declaring class + d1.x; // OK, accessed within their declaring class + d2.x; // OK, accessed within their declaring class + d3.x; // Error, redefined in a subclass, can only be accessed in the declaring class or one of its subclasses + ~ +!!! error TS2445: Property 'x' is protected and only accessible within class 'Derived3' and its subclasses. + d4.x; // OK, accessed within their declaring class + } + } + } + } + + class Derived1 extends Base { + method1() { + class B { + method1b() { + var b: Base; + var d1: Derived1; + var d2: Derived2; + var d3: Derived3; + var d4: Derived4; + + b.x; // Error, isn't accessed through an instance of the enclosing class + ~ +!!! error TS2446: Property 'x' is protected and only accessible through an instance of class 'Derived1'. + d1.x; // OK, accessed within a class derived from their declaring class, and through an instance of the enclosing class + d2.x; // Error, isn't accessed through an instance of the enclosing class + ~ +!!! error TS2446: Property 'x' is protected and only accessible through an instance of class 'Derived1'. + d3.x; // Error, redefined in a subclass, can only be accessed in the declaring class or one of its subclasses + ~ +!!! error TS2445: Property 'x' is protected and only accessible within class 'Derived3' and its subclasses. + d4.x; // Error, isn't accessed through an instance of the enclosing class + ~ +!!! error TS2446: Property 'x' is protected and only accessible through an instance of class 'Derived1'. + } + } + } + } + + class Derived2 extends Base { + method2() { + class C { + method2c() { + var b: Base; + var d1: Derived1; + var d2: Derived2; + var d3: Derived3; + var d4: Derived4; + + b.x; // Error, isn't accessed through an instance of the enclosing class + ~ +!!! error TS2446: Property 'x' is protected and only accessible through an instance of class 'Derived2'. + d1.x; // Error, isn't accessed through an instance of the enclosing class + ~ +!!! error TS2446: Property 'x' is protected and only accessible through an instance of class 'Derived2'. + d2.x; // OK, accessed within a class derived from their declaring class, and through an instance of the enclosing class + d3.x; // Error, redefined in a subclass, can only be accessed in the declaring class or one of its subclasses + ~ +!!! error TS2445: Property 'x' is protected and only accessible within class 'Derived3' and its subclasses. + d4.x; // OK, accessed within a class derived from their declaring class, and through an instance of the enclosing class or one of its subclasses + } + } + } + } + + class Derived3 extends Derived1 { + protected x: string; + method3() { + class D { + method3d() { + var b: Base; + var d1: Derived1; + var d2: Derived2; + var d3: Derived3; + var d4: Derived4; + + b.x; // Error, isn't accessed through an instance of the enclosing class + ~ +!!! error TS2446: Property 'x' is protected and only accessible through an instance of class 'Derived3'. + d1.x; // Error, isn't accessed through an instance of the enclosing class + ~ +!!! error TS2446: Property 'x' is protected and only accessible through an instance of class 'Derived3'. + d2.x; // Error, isn't accessed through an instance of the enclosing class + ~ +!!! error TS2446: Property 'x' is protected and only accessible through an instance of class 'Derived3'. + d3.x; // OK, accessed within their declaring class + d4.x; // Error, isn't accessed through an instance of the enclosing class + ~ +!!! error TS2446: Property 'x' is protected and only accessible through an instance of class 'Derived3'. + } + } + } + } + + class Derived4 extends Derived2 { + method4() { + class E { + method4e() { + var b: Base; + var d1: Derived1; + var d2: Derived2; + var d3: Derived3; + var d4: Derived4; + + b.x; // Error, isn't accessed through an instance of the enclosing class + ~ +!!! error TS2446: Property 'x' is protected and only accessible through an instance of class 'Derived4'. + d1.x; // Error, isn't accessed through an instance of the enclosing class + ~ +!!! error TS2446: Property 'x' is protected and only accessible through an instance of class 'Derived4'. + d2.x; // Error, isn't accessed through an instance of the enclosing class + ~ +!!! error TS2446: Property 'x' is protected and only accessible through an instance of class 'Derived4'. + d3.x; // Error, redefined in a subclass, can only be accessed in the declaring class or one of its subclasses + ~ +!!! error TS2445: Property 'x' is protected and only accessible within class 'Derived3' and its subclasses. + d4.x; // OK, accessed within a class derived from their declaring class, and through an instance of the enclosing class + } + } + } + } + + + var b: Base; + var d1: Derived1; + var d2: Derived2; + var d3: Derived3; + var d4: Derived4; + + b.x; // Error, neither within their declaring class nor classes derived from their declaring class + ~ +!!! error TS2445: Property 'x' is protected and only accessible within class 'Base' and its subclasses. + d1.x; // Error, neither within their declaring class nor classes derived from their declaring class + ~ +!!! error TS2445: Property 'x' is protected and only accessible within class 'Base' and its subclasses. + d2.x; // Error, neither within their declaring class nor classes derived from their declaring class + ~ +!!! error TS2445: Property 'x' is protected and only accessible within class 'Base' and its subclasses. + d3.x; // Error, neither within their declaring class nor classes derived from their declaring class + ~ +!!! error TS2445: Property 'x' is protected and only accessible within class 'Derived3' and its subclasses. + d4.x; // Error, neither within their declaring class nor classes derived from their declaring class + ~ +!!! error TS2445: Property 'x' is protected and only accessible within class 'Base' and its subclasses. \ No newline at end of file diff --git a/tests/baselines/reference/protectedClassPropertyAccessibleWithinNestedSubclass1.js b/tests/baselines/reference/protectedClassPropertyAccessibleWithinNestedSubclass1.js new file mode 100644 index 00000000000..02ad29bd312 --- /dev/null +++ b/tests/baselines/reference/protectedClassPropertyAccessibleWithinNestedSubclass1.js @@ -0,0 +1,260 @@ +//// [protectedClassPropertyAccessibleWithinNestedSubclass1.ts] +class Base { + protected x: string; + method() { + class A { + methoda() { + var b: Base; + var d1: Derived1; + var d2: Derived2; + var d3: Derived3; + var d4: Derived4; + + b.x; // OK, accessed within their declaring class + d1.x; // OK, accessed within their declaring class + d2.x; // OK, accessed within their declaring class + d3.x; // Error, redefined in a subclass, can only be accessed in the declaring class or one of its subclasses + d4.x; // OK, accessed within their declaring class + } + } + } +} + +class Derived1 extends Base { + method1() { + class B { + method1b() { + var b: Base; + var d1: Derived1; + var d2: Derived2; + var d3: Derived3; + var d4: Derived4; + + b.x; // Error, isn't accessed through an instance of the enclosing class + d1.x; // OK, accessed within a class derived from their declaring class, and through an instance of the enclosing class + d2.x; // Error, isn't accessed through an instance of the enclosing class + d3.x; // Error, redefined in a subclass, can only be accessed in the declaring class or one of its subclasses + d4.x; // Error, isn't accessed through an instance of the enclosing class + } + } + } +} + +class Derived2 extends Base { + method2() { + class C { + method2c() { + var b: Base; + var d1: Derived1; + var d2: Derived2; + var d3: Derived3; + var d4: Derived4; + + b.x; // Error, isn't accessed through an instance of the enclosing class + d1.x; // Error, isn't accessed through an instance of the enclosing class + d2.x; // OK, accessed within a class derived from their declaring class, and through an instance of the enclosing class + d3.x; // Error, redefined in a subclass, can only be accessed in the declaring class or one of its subclasses + d4.x; // OK, accessed within a class derived from their declaring class, and through an instance of the enclosing class or one of its subclasses + } + } + } +} + +class Derived3 extends Derived1 { + protected x: string; + method3() { + class D { + method3d() { + var b: Base; + var d1: Derived1; + var d2: Derived2; + var d3: Derived3; + var d4: Derived4; + + b.x; // Error, isn't accessed through an instance of the enclosing class + d1.x; // Error, isn't accessed through an instance of the enclosing class + d2.x; // Error, isn't accessed through an instance of the enclosing class + d3.x; // OK, accessed within their declaring class + d4.x; // Error, isn't accessed through an instance of the enclosing class + } + } + } +} + +class Derived4 extends Derived2 { + method4() { + class E { + method4e() { + var b: Base; + var d1: Derived1; + var d2: Derived2; + var d3: Derived3; + var d4: Derived4; + + b.x; // Error, isn't accessed through an instance of the enclosing class + d1.x; // Error, isn't accessed through an instance of the enclosing class + d2.x; // Error, isn't accessed through an instance of the enclosing class + d3.x; // Error, redefined in a subclass, can only be accessed in the declaring class or one of its subclasses + d4.x; // OK, accessed within a class derived from their declaring class, and through an instance of the enclosing class + } + } + } +} + + +var b: Base; +var d1: Derived1; +var d2: Derived2; +var d3: Derived3; +var d4: Derived4; + +b.x; // Error, neither within their declaring class nor classes derived from their declaring class +d1.x; // Error, neither within their declaring class nor classes derived from their declaring class +d2.x; // Error, neither within their declaring class nor classes derived from their declaring class +d3.x; // Error, neither within their declaring class nor classes derived from their declaring class +d4.x; // Error, neither within their declaring class nor classes derived from their declaring class + +//// [protectedClassPropertyAccessibleWithinNestedSubclass1.js] +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +var Base = (function () { + function Base() { + } + Base.prototype.method = function () { + var A = (function () { + function A() { + } + A.prototype.methoda = function () { + var b; + var d1; + var d2; + var d3; + var d4; + b.x; // OK, accessed within their declaring class + d1.x; // OK, accessed within their declaring class + d2.x; // OK, accessed within their declaring class + d3.x; // Error, redefined in a subclass, can only be accessed in the declaring class or one of its subclasses + d4.x; // OK, accessed within their declaring class + }; + return A; + }()); + }; + return Base; +}()); +var Derived1 = (function (_super) { + __extends(Derived1, _super); + function Derived1() { + _super.apply(this, arguments); + } + Derived1.prototype.method1 = function () { + var B = (function () { + function B() { + } + B.prototype.method1b = function () { + var b; + var d1; + var d2; + var d3; + var d4; + b.x; // Error, isn't accessed through an instance of the enclosing class + d1.x; // OK, accessed within a class derived from their declaring class, and through an instance of the enclosing class + d2.x; // Error, isn't accessed through an instance of the enclosing class + d3.x; // Error, redefined in a subclass, can only be accessed in the declaring class or one of its subclasses + d4.x; // Error, isn't accessed through an instance of the enclosing class + }; + return B; + }()); + }; + return Derived1; +}(Base)); +var Derived2 = (function (_super) { + __extends(Derived2, _super); + function Derived2() { + _super.apply(this, arguments); + } + Derived2.prototype.method2 = function () { + var C = (function () { + function C() { + } + C.prototype.method2c = function () { + var b; + var d1; + var d2; + var d3; + var d4; + b.x; // Error, isn't accessed through an instance of the enclosing class + d1.x; // Error, isn't accessed through an instance of the enclosing class + d2.x; // OK, accessed within a class derived from their declaring class, and through an instance of the enclosing class + d3.x; // Error, redefined in a subclass, can only be accessed in the declaring class or one of its subclasses + d4.x; // OK, accessed within a class derived from their declaring class, and through an instance of the enclosing class or one of its subclasses + }; + return C; + }()); + }; + return Derived2; +}(Base)); +var Derived3 = (function (_super) { + __extends(Derived3, _super); + function Derived3() { + _super.apply(this, arguments); + } + Derived3.prototype.method3 = function () { + var D = (function () { + function D() { + } + D.prototype.method3d = function () { + var b; + var d1; + var d2; + var d3; + var d4; + b.x; // Error, isn't accessed through an instance of the enclosing class + d1.x; // Error, isn't accessed through an instance of the enclosing class + d2.x; // Error, isn't accessed through an instance of the enclosing class + d3.x; // OK, accessed within their declaring class + d4.x; // Error, isn't accessed through an instance of the enclosing class + }; + return D; + }()); + }; + return Derived3; +}(Derived1)); +var Derived4 = (function (_super) { + __extends(Derived4, _super); + function Derived4() { + _super.apply(this, arguments); + } + Derived4.prototype.method4 = function () { + var E = (function () { + function E() { + } + E.prototype.method4e = function () { + var b; + var d1; + var d2; + var d3; + var d4; + b.x; // Error, isn't accessed through an instance of the enclosing class + d1.x; // Error, isn't accessed through an instance of the enclosing class + d2.x; // Error, isn't accessed through an instance of the enclosing class + d3.x; // Error, redefined in a subclass, can only be accessed in the declaring class or one of its subclasses + d4.x; // OK, accessed within a class derived from their declaring class, and through an instance of the enclosing class + }; + return E; + }()); + }; + return Derived4; +}(Derived2)); +var b; +var d1; +var d2; +var d3; +var d4; +b.x; // Error, neither within their declaring class nor classes derived from their declaring class +d1.x; // Error, neither within their declaring class nor classes derived from their declaring class +d2.x; // Error, neither within their declaring class nor classes derived from their declaring class +d3.x; // Error, neither within their declaring class nor classes derived from their declaring class +d4.x; // Error, neither within their declaring class nor classes derived from their declaring class diff --git a/tests/baselines/reference/protectedClassPropertyAccessibleWithinSubclass.symbols b/tests/baselines/reference/protectedClassPropertyAccessibleWithinSubclass.symbols index 5bd7dfad392..17a91458085 100644 --- a/tests/baselines/reference/protectedClassPropertyAccessibleWithinSubclass.symbols +++ b/tests/baselines/reference/protectedClassPropertyAccessibleWithinSubclass.symbols @@ -5,7 +5,7 @@ class B { >B : Symbol(B, Decl(protectedClassPropertyAccessibleWithinSubclass.ts, 0, 0)) protected x: string; ->x : Symbol(x, Decl(protectedClassPropertyAccessibleWithinSubclass.ts, 2, 9)) +>x : Symbol(B.x, Decl(protectedClassPropertyAccessibleWithinSubclass.ts, 2, 9)) protected static x: string; >x : Symbol(B.x, Decl(protectedClassPropertyAccessibleWithinSubclass.ts, 3, 24)) @@ -16,32 +16,32 @@ class C extends B { >B : Symbol(B, Decl(protectedClassPropertyAccessibleWithinSubclass.ts, 0, 0)) protected get y() { return this.x; } ->y : Symbol(y, Decl(protectedClassPropertyAccessibleWithinSubclass.ts, 7, 19), Decl(protectedClassPropertyAccessibleWithinSubclass.ts, 8, 40)) +>y : Symbol(C.y, Decl(protectedClassPropertyAccessibleWithinSubclass.ts, 7, 19), Decl(protectedClassPropertyAccessibleWithinSubclass.ts, 8, 40)) >this.x : Symbol(B.x, Decl(protectedClassPropertyAccessibleWithinSubclass.ts, 2, 9)) >this : Symbol(C, Decl(protectedClassPropertyAccessibleWithinSubclass.ts, 5, 1)) >x : Symbol(B.x, Decl(protectedClassPropertyAccessibleWithinSubclass.ts, 2, 9)) protected set y(x) { this.y = this.x; } ->y : Symbol(y, Decl(protectedClassPropertyAccessibleWithinSubclass.ts, 7, 19), Decl(protectedClassPropertyAccessibleWithinSubclass.ts, 8, 40)) +>y : Symbol(C.y, Decl(protectedClassPropertyAccessibleWithinSubclass.ts, 7, 19), Decl(protectedClassPropertyAccessibleWithinSubclass.ts, 8, 40)) >x : Symbol(x, Decl(protectedClassPropertyAccessibleWithinSubclass.ts, 9, 20)) ->this.y : Symbol(y, Decl(protectedClassPropertyAccessibleWithinSubclass.ts, 7, 19), Decl(protectedClassPropertyAccessibleWithinSubclass.ts, 8, 40)) +>this.y : Symbol(C.y, Decl(protectedClassPropertyAccessibleWithinSubclass.ts, 7, 19), Decl(protectedClassPropertyAccessibleWithinSubclass.ts, 8, 40)) >this : Symbol(C, Decl(protectedClassPropertyAccessibleWithinSubclass.ts, 5, 1)) ->y : Symbol(y, Decl(protectedClassPropertyAccessibleWithinSubclass.ts, 7, 19), Decl(protectedClassPropertyAccessibleWithinSubclass.ts, 8, 40)) +>y : Symbol(C.y, Decl(protectedClassPropertyAccessibleWithinSubclass.ts, 7, 19), Decl(protectedClassPropertyAccessibleWithinSubclass.ts, 8, 40)) >this.x : Symbol(B.x, Decl(protectedClassPropertyAccessibleWithinSubclass.ts, 2, 9)) >this : Symbol(C, Decl(protectedClassPropertyAccessibleWithinSubclass.ts, 5, 1)) >x : Symbol(B.x, Decl(protectedClassPropertyAccessibleWithinSubclass.ts, 2, 9)) protected foo() { return this.x; } ->foo : Symbol(foo, Decl(protectedClassPropertyAccessibleWithinSubclass.ts, 9, 43)) +>foo : Symbol(C.foo, Decl(protectedClassPropertyAccessibleWithinSubclass.ts, 9, 43)) >this.x : Symbol(B.x, Decl(protectedClassPropertyAccessibleWithinSubclass.ts, 2, 9)) >this : Symbol(C, Decl(protectedClassPropertyAccessibleWithinSubclass.ts, 5, 1)) >x : Symbol(B.x, Decl(protectedClassPropertyAccessibleWithinSubclass.ts, 2, 9)) protected bar() { return this.foo(); } ->bar : Symbol(bar, Decl(protectedClassPropertyAccessibleWithinSubclass.ts, 10, 38)) ->this.foo : Symbol(foo, Decl(protectedClassPropertyAccessibleWithinSubclass.ts, 9, 43)) +>bar : Symbol(C.bar, Decl(protectedClassPropertyAccessibleWithinSubclass.ts, 10, 38)) +>this.foo : Symbol(C.foo, Decl(protectedClassPropertyAccessibleWithinSubclass.ts, 9, 43)) >this : Symbol(C, Decl(protectedClassPropertyAccessibleWithinSubclass.ts, 5, 1)) ->foo : Symbol(foo, Decl(protectedClassPropertyAccessibleWithinSubclass.ts, 9, 43)) +>foo : Symbol(C.foo, Decl(protectedClassPropertyAccessibleWithinSubclass.ts, 9, 43)) protected static get y() { return this.x; } >y : Symbol(C.y, Decl(protectedClassPropertyAccessibleWithinSubclass.ts, 11, 42), Decl(protectedClassPropertyAccessibleWithinSubclass.ts, 13, 47)) diff --git a/tests/baselines/reference/prototypeInstantiatedWithBaseConstraint.symbols b/tests/baselines/reference/prototypeInstantiatedWithBaseConstraint.symbols index bbb95de0910..2dc9a0b6704 100644 --- a/tests/baselines/reference/prototypeInstantiatedWithBaseConstraint.symbols +++ b/tests/baselines/reference/prototypeInstantiatedWithBaseConstraint.symbols @@ -4,7 +4,7 @@ class C { >T : Symbol(T, Decl(prototypeInstantiatedWithBaseConstraint.ts, 0, 8)) x: T; ->x : Symbol(x, Decl(prototypeInstantiatedWithBaseConstraint.ts, 0, 12)) +>x : Symbol(C.x, Decl(prototypeInstantiatedWithBaseConstraint.ts, 0, 12)) >T : Symbol(T, Decl(prototypeInstantiatedWithBaseConstraint.ts, 0, 8)) } diff --git a/tests/baselines/reference/prototypeOnConstructorFunctions.symbols b/tests/baselines/reference/prototypeOnConstructorFunctions.symbols index d3644ad89b2..56764468350 100644 --- a/tests/baselines/reference/prototypeOnConstructorFunctions.symbols +++ b/tests/baselines/reference/prototypeOnConstructorFunctions.symbols @@ -3,7 +3,7 @@ interface I1 { >I1 : Symbol(I1, Decl(prototypeOnConstructorFunctions.ts, 0, 0)) const: new (options?, element?) => any; ->const : Symbol(const, Decl(prototypeOnConstructorFunctions.ts, 0, 14)) +>const : Symbol(I1.const, Decl(prototypeOnConstructorFunctions.ts, 0, 14)) >options : Symbol(options, Decl(prototypeOnConstructorFunctions.ts, 1, 16)) >element : Symbol(element, Decl(prototypeOnConstructorFunctions.ts, 1, 25)) } diff --git a/tests/baselines/reference/quotedPropertyName3.symbols b/tests/baselines/reference/quotedPropertyName3.symbols index 1a843022425..813cf23e336 100644 --- a/tests/baselines/reference/quotedPropertyName3.symbols +++ b/tests/baselines/reference/quotedPropertyName3.symbols @@ -4,12 +4,12 @@ class Test { "prop1": number; foo() { ->foo : Symbol(foo, Decl(quotedPropertyName3.ts, 1, 20)) +>foo : Symbol(Test.foo, Decl(quotedPropertyName3.ts, 1, 20)) var x = () => this["prop1"]; >x : Symbol(x, Decl(quotedPropertyName3.ts, 3, 11)) >this : Symbol(Test, Decl(quotedPropertyName3.ts, 0, 0)) ->"prop1" : Symbol("prop1", Decl(quotedPropertyName3.ts, 0, 12)) +>"prop1" : Symbol(Test["prop1"], Decl(quotedPropertyName3.ts, 0, 12)) var y: number = x(); >y : Symbol(y, Decl(quotedPropertyName3.ts, 4, 11)) diff --git a/tests/baselines/reference/reExportGlobalDeclaration1.errors.txt b/tests/baselines/reference/reExportGlobalDeclaration1.errors.txt index 0ebeed05b28..0d83d8b94ee 100644 --- a/tests/baselines/reference/reExportGlobalDeclaration1.errors.txt +++ b/tests/baselines/reference/reExportGlobalDeclaration1.errors.txt @@ -1,15 +1,15 @@ -tests/cases/compiler/file2.ts(1,9): error TS2661: Cannot re-export name that is not defined in the module. -tests/cases/compiler/file2.ts(1,12): error TS2661: Cannot re-export name that is not defined in the module. -tests/cases/compiler/file2.ts(2,9): error TS2661: Cannot re-export name that is not defined in the module. -tests/cases/compiler/file2.ts(2,13): error TS2661: Cannot re-export name that is not defined in the module. -tests/cases/compiler/file2.ts(4,9): error TS2661: Cannot re-export name that is not defined in the module. -tests/cases/compiler/file2.ts(4,12): error TS2661: Cannot re-export name that is not defined in the module. -tests/cases/compiler/file2.ts(5,9): error TS2661: Cannot re-export name that is not defined in the module. -tests/cases/compiler/file2.ts(5,12): error TS2661: Cannot re-export name that is not defined in the module. -tests/cases/compiler/file2.ts(8,9): error TS2661: Cannot re-export name that is not defined in the module. -tests/cases/compiler/file2.ts(9,9): error TS2661: Cannot re-export name that is not defined in the module. -tests/cases/compiler/file2.ts(10,9): error TS2661: Cannot re-export name that is not defined in the module. -tests/cases/compiler/file2.ts(11,9): error TS2661: Cannot re-export name that is not defined in the module. +tests/cases/compiler/file2.ts(1,9): error TS2661: Cannot export 'x'. Only local declarations can be exported from a module. +tests/cases/compiler/file2.ts(1,12): error TS2661: Cannot export 'x'. Only local declarations can be exported from a module. +tests/cases/compiler/file2.ts(2,9): error TS2661: Cannot export 'x1'. Only local declarations can be exported from a module. +tests/cases/compiler/file2.ts(2,13): error TS2661: Cannot export 'x1'. Only local declarations can be exported from a module. +tests/cases/compiler/file2.ts(4,9): error TS2661: Cannot export 'a'. Only local declarations can be exported from a module. +tests/cases/compiler/file2.ts(4,12): error TS2661: Cannot export 'a'. Only local declarations can be exported from a module. +tests/cases/compiler/file2.ts(5,9): error TS2661: Cannot export 'b'. Only local declarations can be exported from a module. +tests/cases/compiler/file2.ts(5,12): error TS2661: Cannot export 'b'. Only local declarations can be exported from a module. +tests/cases/compiler/file2.ts(8,9): error TS2661: Cannot export 'x'. Only local declarations can be exported from a module. +tests/cases/compiler/file2.ts(9,9): error TS2661: Cannot export 'x1'. Only local declarations can be exported from a module. +tests/cases/compiler/file2.ts(10,9): error TS2661: Cannot export 'a'. Only local declarations can be exported from a module. +tests/cases/compiler/file2.ts(11,9): error TS2661: Cannot export 'b'. Only local declarations can be exported from a module. ==== tests/cases/compiler/file1.d.ts (0 errors) ==== @@ -21,37 +21,37 @@ tests/cases/compiler/file2.ts(11,9): error TS2661: Cannot re-export name that is ==== tests/cases/compiler/file2.ts (12 errors) ==== export {x, x as y}; ~ -!!! error TS2661: Cannot re-export name that is not defined in the module. +!!! error TS2661: Cannot export 'x'. Only local declarations can be exported from a module. ~ -!!! error TS2661: Cannot re-export name that is not defined in the module. +!!! error TS2661: Cannot export 'x'. Only local declarations can be exported from a module. export {x1, x1 as y1}; ~~ -!!! error TS2661: Cannot re-export name that is not defined in the module. +!!! error TS2661: Cannot export 'x1'. Only local declarations can be exported from a module. ~~ -!!! error TS2661: Cannot re-export name that is not defined in the module. +!!! error TS2661: Cannot export 'x1'. Only local declarations can be exported from a module. export {a, a as a1}; ~ -!!! error TS2661: Cannot re-export name that is not defined in the module. +!!! error TS2661: Cannot export 'a'. Only local declarations can be exported from a module. ~ -!!! error TS2661: Cannot re-export name that is not defined in the module. +!!! error TS2661: Cannot export 'a'. Only local declarations can be exported from a module. export {b, b as b1}; ~ -!!! error TS2661: Cannot re-export name that is not defined in the module. +!!! error TS2661: Cannot export 'b'. Only local declarations can be exported from a module. ~ -!!! error TS2661: Cannot re-export name that is not defined in the module. +!!! error TS2661: Cannot export 'b'. Only local declarations can be exported from a module. export {x as z}; ~ -!!! error TS2661: Cannot re-export name that is not defined in the module. +!!! error TS2661: Cannot export 'x'. Only local declarations can be exported from a module. export {x1 as z1}; ~~ -!!! error TS2661: Cannot re-export name that is not defined in the module. +!!! error TS2661: Cannot export 'x1'. Only local declarations can be exported from a module. export {a as a2}; ~ -!!! error TS2661: Cannot re-export name that is not defined in the module. +!!! error TS2661: Cannot export 'a'. Only local declarations can be exported from a module. export {b as b2}; ~ -!!! error TS2661: Cannot re-export name that is not defined in the module. +!!! error TS2661: Cannot export 'b'. Only local declarations can be exported from a module. \ No newline at end of file diff --git a/tests/baselines/reference/reExportGlobalDeclaration2.errors.txt b/tests/baselines/reference/reExportGlobalDeclaration2.errors.txt index 17a3e2ad565..b24a52aff49 100644 --- a/tests/baselines/reference/reExportGlobalDeclaration2.errors.txt +++ b/tests/baselines/reference/reExportGlobalDeclaration2.errors.txt @@ -1,9 +1,9 @@ -tests/cases/compiler/file2.ts(1,9): error TS2661: Cannot re-export name that is not defined in the module. -tests/cases/compiler/file2.ts(1,13): error TS2661: Cannot re-export name that is not defined in the module. -tests/cases/compiler/file2.ts(2,9): error TS2661: Cannot re-export name that is not defined in the module. -tests/cases/compiler/file2.ts(2,13): error TS2661: Cannot re-export name that is not defined in the module. -tests/cases/compiler/file2.ts(3,9): error TS2661: Cannot re-export name that is not defined in the module. -tests/cases/compiler/file2.ts(4,9): error TS2661: Cannot re-export name that is not defined in the module. +tests/cases/compiler/file2.ts(1,9): error TS2661: Cannot export 'I1'. Only local declarations can be exported from a module. +tests/cases/compiler/file2.ts(1,13): error TS2661: Cannot export 'I1'. Only local declarations can be exported from a module. +tests/cases/compiler/file2.ts(2,9): error TS2661: Cannot export 'I2'. Only local declarations can be exported from a module. +tests/cases/compiler/file2.ts(2,13): error TS2661: Cannot export 'I2'. Only local declarations can be exported from a module. +tests/cases/compiler/file2.ts(3,9): error TS2661: Cannot export 'I1'. Only local declarations can be exported from a module. +tests/cases/compiler/file2.ts(4,9): error TS2661: Cannot export 'I2'. Only local declarations can be exported from a module. ==== tests/cases/compiler/file1.d.ts (0 errors) ==== @@ -19,17 +19,17 @@ tests/cases/compiler/file2.ts(4,9): error TS2661: Cannot re-export name that is ==== tests/cases/compiler/file2.ts (6 errors) ==== export {I1, I1 as II1}; ~~ -!!! error TS2661: Cannot re-export name that is not defined in the module. +!!! error TS2661: Cannot export 'I1'. Only local declarations can be exported from a module. ~~ -!!! error TS2661: Cannot re-export name that is not defined in the module. +!!! error TS2661: Cannot export 'I1'. Only local declarations can be exported from a module. export {I2, I2 as II2}; ~~ -!!! error TS2661: Cannot re-export name that is not defined in the module. +!!! error TS2661: Cannot export 'I2'. Only local declarations can be exported from a module. ~~ -!!! error TS2661: Cannot re-export name that is not defined in the module. +!!! error TS2661: Cannot export 'I2'. Only local declarations can be exported from a module. export {I1 as III1}; ~~ -!!! error TS2661: Cannot re-export name that is not defined in the module. +!!! error TS2661: Cannot export 'I1'. Only local declarations can be exported from a module. export {I2 as III2}; ~~ -!!! error TS2661: Cannot re-export name that is not defined in the module. \ No newline at end of file +!!! error TS2661: Cannot export 'I2'. Only local declarations can be exported from a module. \ No newline at end of file diff --git a/tests/baselines/reference/reExportGlobalDeclaration3.errors.txt b/tests/baselines/reference/reExportGlobalDeclaration3.errors.txt index d99c184518c..2f469e80491 100644 --- a/tests/baselines/reference/reExportGlobalDeclaration3.errors.txt +++ b/tests/baselines/reference/reExportGlobalDeclaration3.errors.txt @@ -1,9 +1,9 @@ -tests/cases/compiler/file2.ts(1,9): error TS2661: Cannot re-export name that is not defined in the module. -tests/cases/compiler/file2.ts(1,14): error TS2661: Cannot re-export name that is not defined in the module. -tests/cases/compiler/file2.ts(2,9): error TS2661: Cannot re-export name that is not defined in the module. -tests/cases/compiler/file2.ts(2,14): error TS2661: Cannot re-export name that is not defined in the module. -tests/cases/compiler/file2.ts(3,9): error TS2661: Cannot re-export name that is not defined in the module. -tests/cases/compiler/file2.ts(4,9): error TS2661: Cannot re-export name that is not defined in the module. +tests/cases/compiler/file2.ts(1,9): error TS2661: Cannot export 'NS1'. Only local declarations can be exported from a module. +tests/cases/compiler/file2.ts(1,14): error TS2661: Cannot export 'NS1'. Only local declarations can be exported from a module. +tests/cases/compiler/file2.ts(2,9): error TS2661: Cannot export 'NS2'. Only local declarations can be exported from a module. +tests/cases/compiler/file2.ts(2,14): error TS2661: Cannot export 'NS2'. Only local declarations can be exported from a module. +tests/cases/compiler/file2.ts(3,9): error TS2661: Cannot export 'NS1'. Only local declarations can be exported from a module. +tests/cases/compiler/file2.ts(4,9): error TS2661: Cannot export 'NS2'. Only local declarations can be exported from a module. ==== tests/cases/compiler/file1.d.ts (0 errors) ==== @@ -19,17 +19,17 @@ tests/cases/compiler/file2.ts(4,9): error TS2661: Cannot re-export name that is ==== tests/cases/compiler/file2.ts (6 errors) ==== export {NS1, NS1 as NNS1}; ~~~ -!!! error TS2661: Cannot re-export name that is not defined in the module. +!!! error TS2661: Cannot export 'NS1'. Only local declarations can be exported from a module. ~~~ -!!! error TS2661: Cannot re-export name that is not defined in the module. +!!! error TS2661: Cannot export 'NS1'. Only local declarations can be exported from a module. export {NS2, NS2 as NNS2}; ~~~ -!!! error TS2661: Cannot re-export name that is not defined in the module. +!!! error TS2661: Cannot export 'NS2'. Only local declarations can be exported from a module. ~~~ -!!! error TS2661: Cannot re-export name that is not defined in the module. +!!! error TS2661: Cannot export 'NS2'. Only local declarations can be exported from a module. export {NS1 as NNNS1}; ~~~ -!!! error TS2661: Cannot re-export name that is not defined in the module. +!!! error TS2661: Cannot export 'NS1'. Only local declarations can be exported from a module. export {NS2 as NNNS2}; ~~~ -!!! error TS2661: Cannot re-export name that is not defined in the module. \ No newline at end of file +!!! error TS2661: Cannot export 'NS2'. Only local declarations can be exported from a module. \ No newline at end of file diff --git a/tests/baselines/reference/reExportGlobalDeclaration4.errors.txt b/tests/baselines/reference/reExportGlobalDeclaration4.errors.txt index 5e250a5fc57..a3b58a276ae 100644 --- a/tests/baselines/reference/reExportGlobalDeclaration4.errors.txt +++ b/tests/baselines/reference/reExportGlobalDeclaration4.errors.txt @@ -1,9 +1,9 @@ -tests/cases/compiler/file2.ts(1,9): error TS2661: Cannot re-export name that is not defined in the module. -tests/cases/compiler/file2.ts(1,15): error TS2661: Cannot re-export name that is not defined in the module. -tests/cases/compiler/file2.ts(2,9): error TS2661: Cannot re-export name that is not defined in the module. -tests/cases/compiler/file2.ts(2,15): error TS2661: Cannot re-export name that is not defined in the module. -tests/cases/compiler/file2.ts(3,9): error TS2661: Cannot re-export name that is not defined in the module. -tests/cases/compiler/file2.ts(4,9): error TS2661: Cannot re-export name that is not defined in the module. +tests/cases/compiler/file2.ts(1,9): error TS2661: Cannot export 'Cls1'. Only local declarations can be exported from a module. +tests/cases/compiler/file2.ts(1,15): error TS2661: Cannot export 'Cls1'. Only local declarations can be exported from a module. +tests/cases/compiler/file2.ts(2,9): error TS2661: Cannot export 'Cls2'. Only local declarations can be exported from a module. +tests/cases/compiler/file2.ts(2,15): error TS2661: Cannot export 'Cls2'. Only local declarations can be exported from a module. +tests/cases/compiler/file2.ts(3,9): error TS2661: Cannot export 'Cls1'. Only local declarations can be exported from a module. +tests/cases/compiler/file2.ts(4,9): error TS2661: Cannot export 'Cls2'. Only local declarations can be exported from a module. ==== tests/cases/compiler/file1.d.ts (0 errors) ==== @@ -19,17 +19,17 @@ tests/cases/compiler/file2.ts(4,9): error TS2661: Cannot re-export name that is ==== tests/cases/compiler/file2.ts (6 errors) ==== export {Cls1, Cls1 as CCls1}; ~~~~ -!!! error TS2661: Cannot re-export name that is not defined in the module. +!!! error TS2661: Cannot export 'Cls1'. Only local declarations can be exported from a module. ~~~~ -!!! error TS2661: Cannot re-export name that is not defined in the module. +!!! error TS2661: Cannot export 'Cls1'. Only local declarations can be exported from a module. export {Cls2, Cls2 as CCls2}; ~~~~ -!!! error TS2661: Cannot re-export name that is not defined in the module. +!!! error TS2661: Cannot export 'Cls2'. Only local declarations can be exported from a module. ~~~~ -!!! error TS2661: Cannot re-export name that is not defined in the module. +!!! error TS2661: Cannot export 'Cls2'. Only local declarations can be exported from a module. export {Cls1 as CCCls1}; ~~~~ -!!! error TS2661: Cannot re-export name that is not defined in the module. +!!! error TS2661: Cannot export 'Cls1'. Only local declarations can be exported from a module. export {Cls2 as CCCls2}; ~~~~ -!!! error TS2661: Cannot re-export name that is not defined in the module. \ No newline at end of file +!!! error TS2661: Cannot export 'Cls2'. Only local declarations can be exported from a module. \ No newline at end of file diff --git a/tests/baselines/reference/reExportUndefined1.errors.txt b/tests/baselines/reference/reExportUndefined1.errors.txt index ff3259ae37e..5042b4c4c0c 100644 --- a/tests/baselines/reference/reExportUndefined1.errors.txt +++ b/tests/baselines/reference/reExportUndefined1.errors.txt @@ -1,8 +1,8 @@ -tests/cases/compiler/a.ts(2,10): error TS2661: Cannot re-export name that is not defined in the module. +tests/cases/compiler/a.ts(2,10): error TS2661: Cannot export 'undefined'. Only local declarations can be exported from a module. ==== tests/cases/compiler/a.ts (1 errors) ==== export { undefined }; ~~~~~~~~~ -!!! error TS2661: Cannot re-export name that is not defined in the module. \ No newline at end of file +!!! error TS2661: Cannot export 'undefined'. Only local declarations can be exported from a module. \ No newline at end of file diff --git a/tests/baselines/reference/reachabilityChecks5.errors.txt b/tests/baselines/reference/reachabilityChecks5.errors.txt index 147dbe264a3..4a894261a3d 100644 --- a/tests/baselines/reference/reachabilityChecks5.errors.txt +++ b/tests/baselines/reference/reachabilityChecks5.errors.txt @@ -6,11 +6,12 @@ tests/cases/compiler/reachabilityChecks5.ts(52,17): error TS7030: Not all code p tests/cases/compiler/reachabilityChecks5.ts(80,17): error TS7030: Not all code paths return a value. tests/cases/compiler/reachabilityChecks5.ts(86,13): error TS7027: Unreachable code detected. tests/cases/compiler/reachabilityChecks5.ts(94,17): error TS7030: Not all code paths return a value. +tests/cases/compiler/reachabilityChecks5.ts(97,13): error TS7027: Unreachable code detected. tests/cases/compiler/reachabilityChecks5.ts(116,18): error TS7030: Not all code paths return a value. tests/cases/compiler/reachabilityChecks5.ts(123,13): error TS7027: Unreachable code detected. -==== tests/cases/compiler/reachabilityChecks5.ts (10 errors) ==== +==== tests/cases/compiler/reachabilityChecks5.ts (11 errors) ==== function f0(x): number { while (true); @@ -124,6 +125,8 @@ tests/cases/compiler/reachabilityChecks5.ts(123,13): error TS7027: Unreachable c try { while (false) { return 1; + ~~~~~~ +!!! error TS7027: Unreachable code detected. } } catch (e) { diff --git a/tests/baselines/reference/reachabilityChecks6.errors.txt b/tests/baselines/reference/reachabilityChecks6.errors.txt index 38e72def8c6..24832d9ab38 100644 --- a/tests/baselines/reference/reachabilityChecks6.errors.txt +++ b/tests/baselines/reference/reachabilityChecks6.errors.txt @@ -5,11 +5,12 @@ tests/cases/compiler/reachabilityChecks6.ts(52,10): error TS7030: Not all code p tests/cases/compiler/reachabilityChecks6.ts(80,10): error TS7030: Not all code paths return a value. tests/cases/compiler/reachabilityChecks6.ts(86,13): error TS7027: Unreachable code detected. tests/cases/compiler/reachabilityChecks6.ts(94,10): error TS7030: Not all code paths return a value. +tests/cases/compiler/reachabilityChecks6.ts(97,13): error TS7027: Unreachable code detected. tests/cases/compiler/reachabilityChecks6.ts(116,10): error TS7030: Not all code paths return a value. tests/cases/compiler/reachabilityChecks6.ts(123,13): error TS7027: Unreachable code detected. -==== tests/cases/compiler/reachabilityChecks6.ts (9 errors) ==== +==== tests/cases/compiler/reachabilityChecks6.ts (10 errors) ==== function f0(x) { while (true); @@ -121,6 +122,8 @@ tests/cases/compiler/reachabilityChecks6.ts(123,13): error TS7027: Unreachable c try { while (false) { return 1; + ~~~~~~ +!!! error TS7027: Unreachable code detected. } } catch (e) { diff --git a/tests/baselines/reference/reactNamespaceJSXEmit.js b/tests/baselines/reference/reactNamespaceJSXEmit.js index 26967d56b7b..ced18ebc031 100644 --- a/tests/baselines/reference/reactNamespaceJSXEmit.js +++ b/tests/baselines/reference/reactNamespaceJSXEmit.js @@ -13,8 +13,16 @@ declare var x: any; //// [reactNamespaceJSXEmit.js] +var __assign = (this && this.__assign) || Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; +}; myReactLib.createElement("foo", {data: true}); myReactLib.createElement(Bar, {x: x}); myReactLib.createElement("x-component", null); -myReactLib.createElement(Bar, myReactLib.__spread({}, x)); -myReactLib.createElement(Bar, myReactLib.__spread({}, x, {y: 2})); +myReactLib.createElement(Bar, __assign({}, x)); +myReactLib.createElement(Bar, __assign({}, x, {y: 2})); diff --git a/tests/baselines/reference/reactNamespaceJSXEmit.symbols b/tests/baselines/reference/reactNamespaceJSXEmit.symbols index a0012cfd07a..3ca5b91e538 100644 --- a/tests/baselines/reference/reactNamespaceJSXEmit.symbols +++ b/tests/baselines/reference/reactNamespaceJSXEmit.symbols @@ -17,6 +17,7 @@ declare var x: any; >data : Symbol(unknown) ; +>Bar : Symbol(Bar, Decl(reactNamespaceJSXEmit.tsx, 3, 11)) >x : Symbol(unknown) >x : Symbol(x, Decl(reactNamespaceJSXEmit.tsx, 4, 11)) @@ -24,9 +25,11 @@ declare var x: any; >x-component : Symbol(unknown) ; +>Bar : Symbol(Bar, Decl(reactNamespaceJSXEmit.tsx, 3, 11)) >x : Symbol(x, Decl(reactNamespaceJSXEmit.tsx, 4, 11)) ; +>Bar : Symbol(Bar, Decl(reactNamespaceJSXEmit.tsx, 3, 11)) >x : Symbol(x, Decl(reactNamespaceJSXEmit.tsx, 4, 11)) >y : Symbol(unknown) diff --git a/tests/baselines/reference/readonlyInDeclarationFile.symbols b/tests/baselines/reference/readonlyInDeclarationFile.symbols index af979e4dacd..c5f3b066a5d 100644 --- a/tests/baselines/reference/readonlyInDeclarationFile.symbols +++ b/tests/baselines/reference/readonlyInDeclarationFile.symbols @@ -4,7 +4,7 @@ interface Foo { >Foo : Symbol(Foo, Decl(readonlyInDeclarationFile.ts, 0, 0)) readonly x: number; ->x : Symbol(x, Decl(readonlyInDeclarationFile.ts, 1, 15)) +>x : Symbol(Foo.x, Decl(readonlyInDeclarationFile.ts, 1, 15)) readonly [x: string]: Object; >x : Symbol(x, Decl(readonlyInDeclarationFile.ts, 3, 14)) @@ -19,42 +19,42 @@ class C { >Object : Symbol(Object, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) private readonly a1: number; ->a1 : Symbol(a1, Decl(readonlyInDeclarationFile.ts, 7, 33)) +>a1 : Symbol(C.a1, Decl(readonlyInDeclarationFile.ts, 7, 33)) protected readonly a2: number; ->a2 : Symbol(a2, Decl(readonlyInDeclarationFile.ts, 8, 32)) +>a2 : Symbol(C.a2, Decl(readonlyInDeclarationFile.ts, 8, 32)) public readonly a3: number; ->a3 : Symbol(a3, Decl(readonlyInDeclarationFile.ts, 9, 34)) +>a3 : Symbol(C.a3, Decl(readonlyInDeclarationFile.ts, 9, 34)) private get b1() { return 1 } ->b1 : Symbol(b1, Decl(readonlyInDeclarationFile.ts, 10, 31)) +>b1 : Symbol(C.b1, Decl(readonlyInDeclarationFile.ts, 10, 31)) protected get b2() { return 1 } ->b2 : Symbol(b2, Decl(readonlyInDeclarationFile.ts, 11, 33)) +>b2 : Symbol(C.b2, Decl(readonlyInDeclarationFile.ts, 11, 33)) public get b3() { return 1 } ->b3 : Symbol(b3, Decl(readonlyInDeclarationFile.ts, 12, 35)) +>b3 : Symbol(C.b3, Decl(readonlyInDeclarationFile.ts, 12, 35)) private get c1() { return 1 } ->c1 : Symbol(c1, Decl(readonlyInDeclarationFile.ts, 13, 32), Decl(readonlyInDeclarationFile.ts, 14, 33)) +>c1 : Symbol(C.c1, Decl(readonlyInDeclarationFile.ts, 13, 32), Decl(readonlyInDeclarationFile.ts, 14, 33)) private set c1(value) { } ->c1 : Symbol(c1, Decl(readonlyInDeclarationFile.ts, 13, 32), Decl(readonlyInDeclarationFile.ts, 14, 33)) +>c1 : Symbol(C.c1, Decl(readonlyInDeclarationFile.ts, 13, 32), Decl(readonlyInDeclarationFile.ts, 14, 33)) >value : Symbol(value, Decl(readonlyInDeclarationFile.ts, 15, 19)) protected get c2() { return 1 } ->c2 : Symbol(c2, Decl(readonlyInDeclarationFile.ts, 15, 29), Decl(readonlyInDeclarationFile.ts, 16, 35)) +>c2 : Symbol(C.c2, Decl(readonlyInDeclarationFile.ts, 15, 29), Decl(readonlyInDeclarationFile.ts, 16, 35)) protected set c2(value) { } ->c2 : Symbol(c2, Decl(readonlyInDeclarationFile.ts, 15, 29), Decl(readonlyInDeclarationFile.ts, 16, 35)) +>c2 : Symbol(C.c2, Decl(readonlyInDeclarationFile.ts, 15, 29), Decl(readonlyInDeclarationFile.ts, 16, 35)) >value : Symbol(value, Decl(readonlyInDeclarationFile.ts, 17, 21)) public get c3() { return 1 } ->c3 : Symbol(c3, Decl(readonlyInDeclarationFile.ts, 17, 31), Decl(readonlyInDeclarationFile.ts, 18, 32)) +>c3 : Symbol(C.c3, Decl(readonlyInDeclarationFile.ts, 17, 31), Decl(readonlyInDeclarationFile.ts, 18, 32)) public set c3(value) { } ->c3 : Symbol(c3, Decl(readonlyInDeclarationFile.ts, 17, 31), Decl(readonlyInDeclarationFile.ts, 18, 32)) +>c3 : Symbol(C.c3, Decl(readonlyInDeclarationFile.ts, 17, 31), Decl(readonlyInDeclarationFile.ts, 18, 32)) >value : Symbol(value, Decl(readonlyInDeclarationFile.ts, 19, 18)) private static readonly s1: number; diff --git a/tests/baselines/reference/reboundBaseClassSymbol.symbols b/tests/baselines/reference/reboundBaseClassSymbol.symbols index 788d7d95c9e..79cc00a6459 100644 --- a/tests/baselines/reference/reboundBaseClassSymbol.symbols +++ b/tests/baselines/reference/reboundBaseClassSymbol.symbols @@ -1,7 +1,7 @@ === tests/cases/compiler/reboundBaseClassSymbol.ts === interface A { a: number; } >A : Symbol(A, Decl(reboundBaseClassSymbol.ts, 0, 0)) ->a : Symbol(a, Decl(reboundBaseClassSymbol.ts, 0, 13)) +>a : Symbol(A.a, Decl(reboundBaseClassSymbol.ts, 0, 13)) module Foo { >Foo : Symbol(Foo, Decl(reboundBaseClassSymbol.ts, 0, 26)) @@ -12,5 +12,5 @@ module Foo { interface B extends A { b: string; } >B : Symbol(B, Decl(reboundBaseClassSymbol.ts, 2, 14)) >A : Symbol(A, Decl(reboundBaseClassSymbol.ts, 0, 0)) ->b : Symbol(b, Decl(reboundBaseClassSymbol.ts, 3, 27)) +>b : Symbol(B.b, Decl(reboundBaseClassSymbol.ts, 3, 27)) } diff --git a/tests/baselines/reference/recursiveBaseConstructorCreation1.symbols b/tests/baselines/reference/recursiveBaseConstructorCreation1.symbols index 5cef41185e8..9185ecbfec0 100644 --- a/tests/baselines/reference/recursiveBaseConstructorCreation1.symbols +++ b/tests/baselines/reference/recursiveBaseConstructorCreation1.symbols @@ -3,7 +3,7 @@ class C1 { >C1 : Symbol(C1, Decl(recursiveBaseConstructorCreation1.ts, 0, 0)) public func(param: C2): any { } ->func : Symbol(func, Decl(recursiveBaseConstructorCreation1.ts, 0, 10)) +>func : Symbol(C1.func, Decl(recursiveBaseConstructorCreation1.ts, 0, 10)) >param : Symbol(param, Decl(recursiveBaseConstructorCreation1.ts, 1, 12)) >C2 : Symbol(C2, Decl(recursiveBaseConstructorCreation1.ts, 2, 1)) } diff --git a/tests/baselines/reference/recursiveBaseConstructorCreation2.symbols b/tests/baselines/reference/recursiveBaseConstructorCreation2.symbols index 794c8a38dc4..e2e0642f5aa 100644 --- a/tests/baselines/reference/recursiveBaseConstructorCreation2.symbols +++ b/tests/baselines/reference/recursiveBaseConstructorCreation2.symbols @@ -8,7 +8,7 @@ declare class abc extends base >base : Symbol(base, Decl(recursiveBaseConstructorCreation2.ts, 0, 0)) { foo: xyz; ->foo : Symbol(foo, Decl(recursiveBaseConstructorCreation2.ts, 4, 1)) +>foo : Symbol(abc.foo, Decl(recursiveBaseConstructorCreation2.ts, 4, 1)) >xyz : Symbol(xyz, Decl(recursiveBaseConstructorCreation2.ts, 6, 1)) } declare class xyz extends abc diff --git a/tests/baselines/reference/recursiveClassInstantiationsWithDefaultConstructors.symbols b/tests/baselines/reference/recursiveClassInstantiationsWithDefaultConstructors.symbols index 35fa0bf5ab0..c722d8ef8f7 100644 --- a/tests/baselines/reference/recursiveClassInstantiationsWithDefaultConstructors.symbols +++ b/tests/baselines/reference/recursiveClassInstantiationsWithDefaultConstructors.symbols @@ -12,7 +12,7 @@ export class MemberName { >MemberName : Symbol(MemberName, Decl(recursiveClassInstantiationsWithDefaultConstructors.ts, 1, 20)) public prefix: string = ""; ->prefix : Symbol(prefix, Decl(recursiveClassInstantiationsWithDefaultConstructors.ts, 2, 25)) +>prefix : Symbol(MemberName.prefix, Decl(recursiveClassInstantiationsWithDefaultConstructors.ts, 2, 25)) } export class MemberNameArray extends MemberName { >MemberNameArray : Symbol(MemberNameArray, Decl(recursiveClassInstantiationsWithDefaultConstructors.ts, 4, 1)) diff --git a/tests/baselines/reference/recursiveComplicatedClasses.symbols b/tests/baselines/reference/recursiveComplicatedClasses.symbols index 93d0378793d..4fb614ae798 100644 --- a/tests/baselines/reference/recursiveComplicatedClasses.symbols +++ b/tests/baselines/reference/recursiveComplicatedClasses.symbols @@ -3,7 +3,7 @@ class Signature { >Signature : Symbol(Signature, Decl(recursiveComplicatedClasses.ts, 0, 0)) public parameters: ParameterSymbol[] = null; ->parameters : Symbol(parameters, Decl(recursiveComplicatedClasses.ts, 0, 17)) +>parameters : Symbol(Signature.parameters, Decl(recursiveComplicatedClasses.ts, 0, 17)) >ParameterSymbol : Symbol(ParameterSymbol, Decl(recursiveComplicatedClasses.ts, 17, 1)) } @@ -19,10 +19,10 @@ class Symbol { >Symbol : Symbol(Symbol, Decl(recursiveComplicatedClasses.ts, 6, 1)) public bound: boolean; ->bound : Symbol(bound, Decl(recursiveComplicatedClasses.ts, 8, 14)) +>bound : Symbol(Symbol.bound, Decl(recursiveComplicatedClasses.ts, 8, 14)) public visible() { ->visible : Symbol(visible, Decl(recursiveComplicatedClasses.ts, 9, 26)) +>visible : Symbol(Symbol.visible, Decl(recursiveComplicatedClasses.ts, 9, 26)) var b: TypeSymbol; >b : Symbol(b, Decl(recursiveComplicatedClasses.ts, 11, 11)) diff --git a/tests/baselines/reference/recursiveIdenticalAssignment.symbols b/tests/baselines/reference/recursiveIdenticalAssignment.symbols index b82fe1d9d17..54a871c5141 100644 --- a/tests/baselines/reference/recursiveIdenticalAssignment.symbols +++ b/tests/baselines/reference/recursiveIdenticalAssignment.symbols @@ -4,7 +4,7 @@ interface A { >T : Symbol(T, Decl(recursiveIdenticalAssignment.ts, 0, 12)) x: A ->x : Symbol(x, Decl(recursiveIdenticalAssignment.ts, 0, 16)) +>x : Symbol(A.x, Decl(recursiveIdenticalAssignment.ts, 0, 16)) >A : Symbol(A, Decl(recursiveIdenticalAssignment.ts, 0, 0)) >T : Symbol(T, Decl(recursiveIdenticalAssignment.ts, 0, 12)) } @@ -17,7 +17,7 @@ interface B>> { // error, constraint referencing itself >T : Symbol(T, Decl(recursiveIdenticalAssignment.ts, 4, 12)) x: B ->x : Symbol(x, Decl(recursiveIdenticalAssignment.ts, 4, 32)) +>x : Symbol(B.x, Decl(recursiveIdenticalAssignment.ts, 4, 32)) >B : Symbol(B, Decl(recursiveIdenticalAssignment.ts, 2, 1)) >T : Symbol(T, Decl(recursiveIdenticalAssignment.ts, 4, 12)) } diff --git a/tests/baselines/reference/recursiveProperties.symbols b/tests/baselines/reference/recursiveProperties.symbols index 11ecc0a4f90..73df9163d2e 100644 --- a/tests/baselines/reference/recursiveProperties.symbols +++ b/tests/baselines/reference/recursiveProperties.symbols @@ -3,20 +3,20 @@ class A { >A : Symbol(A, Decl(recursiveProperties.ts, 0, 0)) get testProp() { return this.testProp; } ->testProp : Symbol(testProp, Decl(recursiveProperties.ts, 0, 9)) ->this.testProp : Symbol(testProp, Decl(recursiveProperties.ts, 0, 9)) +>testProp : Symbol(A.testProp, Decl(recursiveProperties.ts, 0, 9)) +>this.testProp : Symbol(A.testProp, Decl(recursiveProperties.ts, 0, 9)) >this : Symbol(A, Decl(recursiveProperties.ts, 0, 0)) ->testProp : Symbol(testProp, Decl(recursiveProperties.ts, 0, 9)) +>testProp : Symbol(A.testProp, Decl(recursiveProperties.ts, 0, 9)) } class B { >B : Symbol(B, Decl(recursiveProperties.ts, 2, 1)) set testProp(value:string) { this.testProp = value; } ->testProp : Symbol(testProp, Decl(recursiveProperties.ts, 4, 9)) +>testProp : Symbol(B.testProp, Decl(recursiveProperties.ts, 4, 9)) >value : Symbol(value, Decl(recursiveProperties.ts, 5, 17)) ->this.testProp : Symbol(testProp, Decl(recursiveProperties.ts, 4, 9)) +>this.testProp : Symbol(B.testProp, Decl(recursiveProperties.ts, 4, 9)) >this : Symbol(B, Decl(recursiveProperties.ts, 2, 1)) ->testProp : Symbol(testProp, Decl(recursiveProperties.ts, 4, 9)) +>testProp : Symbol(B.testProp, Decl(recursiveProperties.ts, 4, 9)) >value : Symbol(value, Decl(recursiveProperties.ts, 5, 17)) } diff --git a/tests/baselines/reference/recursiveSpecializationOfExtendedTypeWithError.symbols b/tests/baselines/reference/recursiveSpecializationOfExtendedTypeWithError.symbols index d7bb467ac94..88b0cad70f1 100644 --- a/tests/baselines/reference/recursiveSpecializationOfExtendedTypeWithError.symbols +++ b/tests/baselines/reference/recursiveSpecializationOfExtendedTypeWithError.symbols @@ -3,7 +3,7 @@ interface HTMLSelectElement { >HTMLSelectElement : Symbol(HTMLSelectElement, Decl(recursiveSpecializationOfExtendedTypeWithError.ts, 0, 0)) options: HTMLSelectElement; ->options : Symbol(options, Decl(recursiveSpecializationOfExtendedTypeWithError.ts, 0, 29)) +>options : Symbol(HTMLSelectElement.options, Decl(recursiveSpecializationOfExtendedTypeWithError.ts, 0, 29)) >HTMLSelectElement : Symbol(HTMLSelectElement, Decl(recursiveSpecializationOfExtendedTypeWithError.ts, 0, 0)) (name: A): any; diff --git a/tests/baselines/reference/recursiveTupleTypes1.symbols b/tests/baselines/reference/recursiveTupleTypes1.symbols index 8bd0797f3f6..94802dd5135 100644 --- a/tests/baselines/reference/recursiveTupleTypes1.symbols +++ b/tests/baselines/reference/recursiveTupleTypes1.symbols @@ -3,7 +3,7 @@ interface Tree1 { >Tree1 : Symbol(Tree1, Decl(recursiveTupleTypes1.ts, 0, 0)) children: [Tree1, Tree2]; ->children : Symbol(children, Decl(recursiveTupleTypes1.ts, 0, 17)) +>children : Symbol(Tree1.children, Decl(recursiveTupleTypes1.ts, 0, 17)) >Tree1 : Symbol(Tree1, Decl(recursiveTupleTypes1.ts, 0, 0)) >Tree2 : Symbol(Tree2, Decl(recursiveTupleTypes1.ts, 2, 1)) } @@ -12,7 +12,7 @@ interface Tree2 { >Tree2 : Symbol(Tree2, Decl(recursiveTupleTypes1.ts, 2, 1)) children: [Tree2, Tree1]; ->children : Symbol(children, Decl(recursiveTupleTypes1.ts, 4, 17)) +>children : Symbol(Tree2.children, Decl(recursiveTupleTypes1.ts, 4, 17)) >Tree2 : Symbol(Tree2, Decl(recursiveTupleTypes1.ts, 2, 1)) >Tree1 : Symbol(Tree1, Decl(recursiveTupleTypes1.ts, 0, 0)) } diff --git a/tests/baselines/reference/recursiveTupleTypes2.symbols b/tests/baselines/reference/recursiveTupleTypes2.symbols index 2895f1b5669..8212239f89e 100644 --- a/tests/baselines/reference/recursiveTupleTypes2.symbols +++ b/tests/baselines/reference/recursiveTupleTypes2.symbols @@ -3,7 +3,7 @@ interface Tree1 { >Tree1 : Symbol(Tree1, Decl(recursiveTupleTypes2.ts, 0, 0)) children: [Tree1, Tree2]; ->children : Symbol(children, Decl(recursiveTupleTypes2.ts, 0, 17)) +>children : Symbol(Tree1.children, Decl(recursiveTupleTypes2.ts, 0, 17)) >Tree1 : Symbol(Tree1, Decl(recursiveTupleTypes2.ts, 0, 0)) >Tree2 : Symbol(Tree2, Decl(recursiveTupleTypes2.ts, 2, 1)) } @@ -12,7 +12,7 @@ interface Tree2 { >Tree2 : Symbol(Tree2, Decl(recursiveTupleTypes2.ts, 2, 1)) children: [Tree2, Tree2]; ->children : Symbol(children, Decl(recursiveTupleTypes2.ts, 4, 17)) +>children : Symbol(Tree2.children, Decl(recursiveTupleTypes2.ts, 4, 17)) >Tree2 : Symbol(Tree2, Decl(recursiveTupleTypes2.ts, 2, 1)) >Tree2 : Symbol(Tree2, Decl(recursiveTupleTypes2.ts, 2, 1)) } diff --git a/tests/baselines/reference/recursiveTypeComparison.symbols b/tests/baselines/reference/recursiveTypeComparison.symbols index 7aa566971e8..baca46bce71 100644 --- a/tests/baselines/reference/recursiveTypeComparison.symbols +++ b/tests/baselines/reference/recursiveTypeComparison.symbols @@ -7,23 +7,23 @@ interface Observable { // This member can't be of type T, Property, or Observable needThisOne: Observable; ->needThisOne : Symbol(needThisOne, Decl(recursiveTypeComparison.ts, 2, 25)) +>needThisOne : Symbol(Observable.needThisOne, Decl(recursiveTypeComparison.ts, 2, 25)) >Observable : Symbol(Observable, Decl(recursiveTypeComparison.ts, 0, 0)) >T : Symbol(T, Decl(recursiveTypeComparison.ts, 2, 21)) // Add more to make it slower expo1: Property; // 0.31 seconds in check ->expo1 : Symbol(expo1, Decl(recursiveTypeComparison.ts, 4, 31)) +>expo1 : Symbol(Observable.expo1, Decl(recursiveTypeComparison.ts, 4, 31)) >Property : Symbol(Property, Decl(recursiveTypeComparison.ts, 9, 1)) >T : Symbol(T, Decl(recursiveTypeComparison.ts, 2, 21)) expo2: Property; // 3.11 seconds ->expo2 : Symbol(expo2, Decl(recursiveTypeComparison.ts, 6, 25)) +>expo2 : Symbol(Observable.expo2, Decl(recursiveTypeComparison.ts, 6, 25)) >Property : Symbol(Property, Decl(recursiveTypeComparison.ts, 9, 1)) >T : Symbol(T, Decl(recursiveTypeComparison.ts, 2, 21)) expo3: Property; // 82.28 seconds ->expo3 : Symbol(expo3, Decl(recursiveTypeComparison.ts, 7, 25)) +>expo3 : Symbol(Observable.expo3, Decl(recursiveTypeComparison.ts, 7, 25)) >Property : Symbol(Property, Decl(recursiveTypeComparison.ts, 9, 1)) >T : Symbol(T, Decl(recursiveTypeComparison.ts, 2, 21)) } diff --git a/tests/baselines/reference/recursiveTypeInGenericConstraint.symbols b/tests/baselines/reference/recursiveTypeInGenericConstraint.symbols index d23245e2187..aaace0cd0c4 100644 --- a/tests/baselines/reference/recursiveTypeInGenericConstraint.symbols +++ b/tests/baselines/reference/recursiveTypeInGenericConstraint.symbols @@ -4,7 +4,7 @@ class G { >T : Symbol(T, Decl(recursiveTypeInGenericConstraint.ts, 0, 8)) x: G>; // infinitely expanding type reference ->x : Symbol(x, Decl(recursiveTypeInGenericConstraint.ts, 0, 12)) +>x : Symbol(G.x, Decl(recursiveTypeInGenericConstraint.ts, 0, 12)) >G : Symbol(G, Decl(recursiveTypeInGenericConstraint.ts, 0, 0)) >G : Symbol(G, Decl(recursiveTypeInGenericConstraint.ts, 0, 0)) >T : Symbol(T, Decl(recursiveTypeInGenericConstraint.ts, 0, 8)) @@ -17,7 +17,7 @@ class Foo> { // error, constraint referencing itself >T : Symbol(T, Decl(recursiveTypeInGenericConstraint.ts, 4, 10)) bar: T; ->bar : Symbol(bar, Decl(recursiveTypeInGenericConstraint.ts, 4, 27)) +>bar : Symbol(Foo.bar, Decl(recursiveTypeInGenericConstraint.ts, 4, 27)) >T : Symbol(T, Decl(recursiveTypeInGenericConstraint.ts, 4, 10)) } @@ -26,7 +26,7 @@ class D { >T : Symbol(T, Decl(recursiveTypeInGenericConstraint.ts, 8, 8)) x: G>; ->x : Symbol(x, Decl(recursiveTypeInGenericConstraint.ts, 8, 12)) +>x : Symbol(D.x, Decl(recursiveTypeInGenericConstraint.ts, 8, 12)) >G : Symbol(G, Decl(recursiveTypeInGenericConstraint.ts, 0, 0)) >G : Symbol(G, Decl(recursiveTypeInGenericConstraint.ts, 0, 0)) >T : Symbol(T, Decl(recursiveTypeInGenericConstraint.ts, 8, 8)) diff --git a/tests/baselines/reference/recursiveTypeParameterReferenceError1.symbols b/tests/baselines/reference/recursiveTypeParameterReferenceError1.symbols index e9bb848c0e3..c1695bd2130 100644 --- a/tests/baselines/reference/recursiveTypeParameterReferenceError1.symbols +++ b/tests/baselines/reference/recursiveTypeParameterReferenceError1.symbols @@ -8,7 +8,7 @@ interface Foo { >T : Symbol(T, Decl(recursiveTypeParameterReferenceError1.ts, 1, 14)) z: Foo>; // error ->z : Symbol(z, Decl(recursiveTypeParameterReferenceError1.ts, 1, 18)) +>z : Symbol(Foo.z, Decl(recursiveTypeParameterReferenceError1.ts, 1, 18)) >Foo : Symbol(Foo, Decl(recursiveTypeParameterReferenceError1.ts, 0, 14)) >X : Symbol(X, Decl(recursiveTypeParameterReferenceError1.ts, 0, 0)) >T : Symbol(T, Decl(recursiveTypeParameterReferenceError1.ts, 1, 14)) @@ -29,7 +29,7 @@ class C2 { >T : Symbol(T, Decl(recursiveTypeParameterReferenceError1.ts, 8, 9)) x: T; ->x : Symbol(x, Decl(recursiveTypeParameterReferenceError1.ts, 8, 13)) +>x : Symbol(C2.x, Decl(recursiveTypeParameterReferenceError1.ts, 8, 13)) >T : Symbol(T, Decl(recursiveTypeParameterReferenceError1.ts, 8, 9)) } interface Foo2 { @@ -37,7 +37,7 @@ interface Foo2 { >T : Symbol(T, Decl(recursiveTypeParameterReferenceError1.ts, 11, 15)) ofC4: C2<{ x: T }> // ok ->ofC4 : Symbol(ofC4, Decl(recursiveTypeParameterReferenceError1.ts, 11, 19)) +>ofC4 : Symbol(Foo2.ofC4, Decl(recursiveTypeParameterReferenceError1.ts, 11, 19)) >C2 : Symbol(C2, Decl(recursiveTypeParameterReferenceError1.ts, 5, 12)) >x : Symbol(x, Decl(recursiveTypeParameterReferenceError1.ts, 12, 14)) >T : Symbol(T, Decl(recursiveTypeParameterReferenceError1.ts, 11, 15)) diff --git a/tests/baselines/reference/recursiveTypeParameterReferenceError2.symbols b/tests/baselines/reference/recursiveTypeParameterReferenceError2.symbols index 423c2ba71d8..61234f7de2e 100644 --- a/tests/baselines/reference/recursiveTypeParameterReferenceError2.symbols +++ b/tests/baselines/reference/recursiveTypeParameterReferenceError2.symbols @@ -4,16 +4,16 @@ interface List { >T : Symbol(T, Decl(recursiveTypeParameterReferenceError2.ts, 0, 15)) data: T; ->data : Symbol(data, Decl(recursiveTypeParameterReferenceError2.ts, 0, 19)) +>data : Symbol(List.data, Decl(recursiveTypeParameterReferenceError2.ts, 0, 19)) >T : Symbol(T, Decl(recursiveTypeParameterReferenceError2.ts, 0, 15)) next: List; ->next : Symbol(next, Decl(recursiveTypeParameterReferenceError2.ts, 1, 12)) +>next : Symbol(List.next, Decl(recursiveTypeParameterReferenceError2.ts, 1, 12)) >List : Symbol(List, Decl(recursiveTypeParameterReferenceError2.ts, 0, 0)) >T : Symbol(T, Decl(recursiveTypeParameterReferenceError2.ts, 0, 15)) owner: List>; // Error, recursive reference with wrapped T ->owner : Symbol(owner, Decl(recursiveTypeParameterReferenceError2.ts, 2, 18)) +>owner : Symbol(List.owner, Decl(recursiveTypeParameterReferenceError2.ts, 2, 18)) >List : Symbol(List, Decl(recursiveTypeParameterReferenceError2.ts, 0, 0)) >List : Symbol(List, Decl(recursiveTypeParameterReferenceError2.ts, 0, 0)) >T : Symbol(T, Decl(recursiveTypeParameterReferenceError2.ts, 0, 15)) @@ -24,16 +24,16 @@ interface List2 { >T : Symbol(T, Decl(recursiveTypeParameterReferenceError2.ts, 6, 16)) data: T; ->data : Symbol(data, Decl(recursiveTypeParameterReferenceError2.ts, 6, 20)) +>data : Symbol(List2.data, Decl(recursiveTypeParameterReferenceError2.ts, 6, 20)) >T : Symbol(T, Decl(recursiveTypeParameterReferenceError2.ts, 6, 16)) next: List2; ->next : Symbol(next, Decl(recursiveTypeParameterReferenceError2.ts, 7, 12)) +>next : Symbol(List2.next, Decl(recursiveTypeParameterReferenceError2.ts, 7, 12)) >List2 : Symbol(List2, Decl(recursiveTypeParameterReferenceError2.ts, 4, 1)) >T : Symbol(T, Decl(recursiveTypeParameterReferenceError2.ts, 6, 16)) owner: List2>; // Ok ->owner : Symbol(owner, Decl(recursiveTypeParameterReferenceError2.ts, 8, 19)) +>owner : Symbol(List2.owner, Decl(recursiveTypeParameterReferenceError2.ts, 8, 19)) >List2 : Symbol(List2, Decl(recursiveTypeParameterReferenceError2.ts, 4, 1)) >List2 : Symbol(List2, Decl(recursiveTypeParameterReferenceError2.ts, 4, 1)) } diff --git a/tests/baselines/reference/recursiveTypes1.symbols b/tests/baselines/reference/recursiveTypes1.symbols index 8ced51db0dc..7efaa78e109 100644 --- a/tests/baselines/reference/recursiveTypes1.symbols +++ b/tests/baselines/reference/recursiveTypes1.symbols @@ -6,11 +6,11 @@ interface Entity> { >T : Symbol(T, Decl(recursiveTypes1.ts, 0, 17)) X: T; ->X : Symbol(X, Decl(recursiveTypes1.ts, 0, 39)) +>X : Symbol(Entity.X, Decl(recursiveTypes1.ts, 0, 39)) >T : Symbol(T, Decl(recursiveTypes1.ts, 0, 17)) Y: T; ->Y : Symbol(Y, Decl(recursiveTypes1.ts, 1, 8)) +>Y : Symbol(Entity.Y, Decl(recursiveTypes1.ts, 1, 8)) >T : Symbol(T, Decl(recursiveTypes1.ts, 0, 17)) } @@ -23,7 +23,7 @@ interface Person> extends Entity { >U : Symbol(U, Decl(recursiveTypes1.ts, 5, 17)) n: number; ->n : Symbol(n, Decl(recursiveTypes1.ts, 5, 57)) +>n : Symbol(Person.n, Decl(recursiveTypes1.ts, 5, 57)) } interface Customer extends Person { @@ -32,6 +32,6 @@ interface Customer extends Person { >Customer : Symbol(Customer, Decl(recursiveTypes1.ts, 7, 1)) s: string; ->s : Symbol(s, Decl(recursiveTypes1.ts, 9, 45)) +>s : Symbol(Customer.s, Decl(recursiveTypes1.ts, 9, 45)) } diff --git a/tests/baselines/reference/recursiveTypesUsedAsFunctionParameters.symbols b/tests/baselines/reference/recursiveTypesUsedAsFunctionParameters.symbols index 9894c6acd45..af1119fe495 100644 --- a/tests/baselines/reference/recursiveTypesUsedAsFunctionParameters.symbols +++ b/tests/baselines/reference/recursiveTypesUsedAsFunctionParameters.symbols @@ -4,11 +4,11 @@ class List { >T : Symbol(T, Decl(recursiveTypesUsedAsFunctionParameters.ts, 0, 11)) data: T; ->data : Symbol(data, Decl(recursiveTypesUsedAsFunctionParameters.ts, 0, 15)) +>data : Symbol(List.data, Decl(recursiveTypesUsedAsFunctionParameters.ts, 0, 15)) >T : Symbol(T, Decl(recursiveTypesUsedAsFunctionParameters.ts, 0, 11)) next: List>; ->next : Symbol(next, Decl(recursiveTypesUsedAsFunctionParameters.ts, 1, 12)) +>next : Symbol(List.next, Decl(recursiveTypesUsedAsFunctionParameters.ts, 1, 12)) >List : Symbol(List, Decl(recursiveTypesUsedAsFunctionParameters.ts, 0, 0)) >List : Symbol(List, Decl(recursiveTypesUsedAsFunctionParameters.ts, 0, 0)) >T : Symbol(T, Decl(recursiveTypesUsedAsFunctionParameters.ts, 0, 11)) @@ -19,11 +19,11 @@ class MyList { >T : Symbol(T, Decl(recursiveTypesUsedAsFunctionParameters.ts, 5, 13)) data: T; ->data : Symbol(data, Decl(recursiveTypesUsedAsFunctionParameters.ts, 5, 17)) +>data : Symbol(MyList.data, Decl(recursiveTypesUsedAsFunctionParameters.ts, 5, 17)) >T : Symbol(T, Decl(recursiveTypesUsedAsFunctionParameters.ts, 5, 13)) next: MyList>; ->next : Symbol(next, Decl(recursiveTypesUsedAsFunctionParameters.ts, 6, 12)) +>next : Symbol(MyList.next, Decl(recursiveTypesUsedAsFunctionParameters.ts, 6, 12)) >MyList : Symbol(MyList, Decl(recursiveTypesUsedAsFunctionParameters.ts, 3, 1)) >MyList : Symbol(MyList, Decl(recursiveTypesUsedAsFunctionParameters.ts, 3, 1)) >T : Symbol(T, Decl(recursiveTypesUsedAsFunctionParameters.ts, 5, 13)) diff --git a/tests/baselines/reference/recursiveUnionTypeInference.symbols b/tests/baselines/reference/recursiveUnionTypeInference.symbols index 88233573941..7025e6af455 100644 --- a/tests/baselines/reference/recursiveUnionTypeInference.symbols +++ b/tests/baselines/reference/recursiveUnionTypeInference.symbols @@ -4,7 +4,7 @@ interface Foo { >T : Symbol(T, Decl(recursiveUnionTypeInference.ts, 0, 14)) x: T; ->x : Symbol(x, Decl(recursiveUnionTypeInference.ts, 0, 18)) +>x : Symbol(Foo.x, Decl(recursiveUnionTypeInference.ts, 0, 18)) >T : Symbol(T, Decl(recursiveUnionTypeInference.ts, 0, 14)) } diff --git a/tests/baselines/reference/recursivelySpecializedConstructorDeclaration.symbols b/tests/baselines/reference/recursivelySpecializedConstructorDeclaration.symbols index aa2a1bfc713..a14fc677b17 100644 --- a/tests/baselines/reference/recursivelySpecializedConstructorDeclaration.symbols +++ b/tests/baselines/reference/recursivelySpecializedConstructorDeclaration.symbols @@ -11,7 +11,7 @@ module MsPortal.Controls.Base.ItemList { // Removing this line fixes the constructor of ItemValue options: ViewModel; ->options : Symbol(options, Decl(recursivelySpecializedConstructorDeclaration.ts, 2, 40)) +>options : Symbol(Interface.options, Decl(recursivelySpecializedConstructorDeclaration.ts, 2, 40)) >ViewModel : Symbol(ViewModel, Decl(recursivelySpecializedConstructorDeclaration.ts, 10, 5)) >TValue : Symbol(TValue, Decl(recursivelySpecializedConstructorDeclaration.ts, 2, 31)) } diff --git a/tests/baselines/reference/reorderProperties.symbols b/tests/baselines/reference/reorderProperties.symbols index 6308131398c..7874e90456c 100644 --- a/tests/baselines/reference/reorderProperties.symbols +++ b/tests/baselines/reference/reorderProperties.symbols @@ -4,7 +4,7 @@ interface A { >T : Symbol(T, Decl(reorderProperties.ts, 0, 12)) x: T ->x : Symbol(x, Decl(reorderProperties.ts, 0, 16)) +>x : Symbol(A.x, Decl(reorderProperties.ts, 0, 16)) >T : Symbol(T, Decl(reorderProperties.ts, 0, 12)) } @@ -13,7 +13,7 @@ interface B { >T : Symbol(T, Decl(reorderProperties.ts, 4, 12)) x: T ->x : Symbol(x, Decl(reorderProperties.ts, 4, 16)) +>x : Symbol(B.x, Decl(reorderProperties.ts, 4, 16)) >T : Symbol(T, Decl(reorderProperties.ts, 4, 12)) } @@ -25,7 +25,7 @@ interface C extends A> { >S : Symbol(S, Decl(reorderProperties.ts, 8, 12)) y: S ->y : Symbol(y, Decl(reorderProperties.ts, 8, 32)) +>y : Symbol(C.y, Decl(reorderProperties.ts, 8, 32)) >S : Symbol(S, Decl(reorderProperties.ts, 8, 12)) } @@ -37,7 +37,7 @@ interface D extends B> { >S : Symbol(S, Decl(reorderProperties.ts, 12, 12)) y: S ->y : Symbol(y, Decl(reorderProperties.ts, 12, 32)) +>y : Symbol(D.y, Decl(reorderProperties.ts, 12, 32)) >S : Symbol(S, Decl(reorderProperties.ts, 12, 12)) } diff --git a/tests/baselines/reference/requireEmitSemicolon.symbols b/tests/baselines/reference/requireEmitSemicolon.symbols index 938dcdef8ca..a1a9ce51e4e 100644 --- a/tests/baselines/reference/requireEmitSemicolon.symbols +++ b/tests/baselines/reference/requireEmitSemicolon.symbols @@ -10,7 +10,7 @@ export module Database { >DB : Symbol(DB, Decl(requireEmitSemicolon_1.ts, 3, 24)) public findPerson(id: number): P.Models.Person { ->findPerson : Symbol(findPerson, Decl(requireEmitSemicolon_1.ts, 4, 18)) +>findPerson : Symbol(DB.findPerson, Decl(requireEmitSemicolon_1.ts, 4, 18)) >id : Symbol(id, Decl(requireEmitSemicolon_1.ts, 5, 23)) >P : Symbol(P, Decl(requireEmitSemicolon_1.ts, 0, 0)) >Models : Symbol(P.Models, Decl(requireEmitSemicolon_0.ts, 0, 0)) diff --git a/tests/baselines/reference/requiredInitializedParameter3.symbols b/tests/baselines/reference/requiredInitializedParameter3.symbols index e9f35b21bcf..8f7649b449d 100644 --- a/tests/baselines/reference/requiredInitializedParameter3.symbols +++ b/tests/baselines/reference/requiredInitializedParameter3.symbols @@ -3,7 +3,7 @@ interface I1 { >I1 : Symbol(I1, Decl(requiredInitializedParameter3.ts, 0, 0)) method(); ->method : Symbol(method, Decl(requiredInitializedParameter3.ts, 0, 14)) +>method : Symbol(I1.method, Decl(requiredInitializedParameter3.ts, 0, 14)) } class C1 implements I1 { @@ -11,7 +11,7 @@ class C1 implements I1 { >I1 : Symbol(I1, Decl(requiredInitializedParameter3.ts, 0, 0)) method(a = 0, b?) { } ->method : Symbol(method, Decl(requiredInitializedParameter3.ts, 4, 24)) +>method : Symbol(C1.method, Decl(requiredInitializedParameter3.ts, 4, 24)) >a : Symbol(a, Decl(requiredInitializedParameter3.ts, 5, 11)) >b : Symbol(b, Decl(requiredInitializedParameter3.ts, 5, 17)) } diff --git a/tests/baselines/reference/requiredInitializedParameter4.symbols b/tests/baselines/reference/requiredInitializedParameter4.symbols index 2790b33698c..5136bfc1bc0 100644 --- a/tests/baselines/reference/requiredInitializedParameter4.symbols +++ b/tests/baselines/reference/requiredInitializedParameter4.symbols @@ -3,7 +3,7 @@ class C1 { >C1 : Symbol(C1, Decl(requiredInitializedParameter4.ts, 0, 0)) method(a = 0, b) { } ->method : Symbol(method, Decl(requiredInitializedParameter4.ts, 0, 10)) +>method : Symbol(C1.method, Decl(requiredInitializedParameter4.ts, 0, 10)) >a : Symbol(a, Decl(requiredInitializedParameter4.ts, 1, 11)) >b : Symbol(b, Decl(requiredInitializedParameter4.ts, 1, 17)) } diff --git a/tests/baselines/reference/resolveModuleNameWithSameLetDeclarationName2.symbols b/tests/baselines/reference/resolveModuleNameWithSameLetDeclarationName2.symbols index e98437abb9a..7ddb3d5b9e1 100644 --- a/tests/baselines/reference/resolveModuleNameWithSameLetDeclarationName2.symbols +++ b/tests/baselines/reference/resolveModuleNameWithSameLetDeclarationName2.symbols @@ -4,11 +4,11 @@ declare module "punycode" { >ucs2 : Symbol(ucs2, Decl(resolveModuleNameWithSameLetDeclarationName2.ts, 0, 27), Decl(resolveModuleNameWithSameLetDeclarationName2.ts, 6, 14)) decode(string: string): string; ->decode : Symbol(decode, Decl(resolveModuleNameWithSameLetDeclarationName2.ts, 1, 20)) +>decode : Symbol(ucs2.decode, Decl(resolveModuleNameWithSameLetDeclarationName2.ts, 1, 20)) >string : Symbol(string, Decl(resolveModuleNameWithSameLetDeclarationName2.ts, 2, 15)) encode(codePoints: number[]): string; ->encode : Symbol(encode, Decl(resolveModuleNameWithSameLetDeclarationName2.ts, 2, 39)) +>encode : Symbol(ucs2.encode, Decl(resolveModuleNameWithSameLetDeclarationName2.ts, 2, 39)) >codePoints : Symbol(codePoints, Decl(resolveModuleNameWithSameLetDeclarationName2.ts, 3, 15)) } diff --git a/tests/baselines/reference/resolvingClassDeclarationWhenInBaseTypeResolution.symbols b/tests/baselines/reference/resolvingClassDeclarationWhenInBaseTypeResolution.symbols index 39ca7f38840..a4761973db1 100644 --- a/tests/baselines/reference/resolvingClassDeclarationWhenInBaseTypeResolution.symbols +++ b/tests/baselines/reference/resolvingClassDeclarationWhenInBaseTypeResolution.symbols @@ -13,7 +13,7 @@ module rionegrensis { >sumatrana : Symbol(julianae.sumatrana, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 58, 3)) salomonseni() : caniventer { var x : caniventer; () => { var y = this; }; return x; } ->salomonseni : Symbol(salomonseni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1, 96)) +>salomonseni : Symbol(caniventer.salomonseni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1, 96)) >caniventer : Symbol(caniventer, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 0, 21)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 2, 36)) >caniventer : Symbol(caniventer, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 0, 21)) @@ -22,7 +22,7 @@ module rionegrensis { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 2, 36)) uchidai() : lavali.xanthognathus { var x : lavali.xanthognathus; () => { var y = this; }; return x; } ->uchidai : Symbol(uchidai, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 2, 89)) +>uchidai : Symbol(caniventer.uchidai, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 2, 89)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) >xanthognathus : Symbol(lavali.xanthognathus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 285, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 3, 42)) @@ -33,7 +33,7 @@ module rionegrensis { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 3, 42)) raffrayana() : lavali.otion { var x : lavali.otion; () => { var y = this; }; return x; } ->raffrayana : Symbol(raffrayana, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 3, 105)) +>raffrayana : Symbol(caniventer.raffrayana, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 3, 105)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) >otion : Symbol(lavali.otion, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 270, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 4, 37)) @@ -44,7 +44,7 @@ module rionegrensis { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 4, 37)) Uranium() : minutus.inez, trivirgatus.falconeri> { var x : minutus.inez, trivirgatus.falconeri>; () => { var y = this; }; return x; } ->Uranium : Symbol(Uranium, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 4, 92)) +>Uranium : Symbol(caniventer.Uranium, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 4, 92)) >minutus : Symbol(minutus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 433, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 492, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 848, 1)) >inez : Symbol(minutus.inez, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 493, 16)) >minutus : Symbol(minutus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 433, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 492, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 848, 1)) @@ -71,7 +71,7 @@ module rionegrensis { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 5, 112)) nayaur() : gabriellae.amicus { var x : gabriellae.amicus; () => { var y = this; }; return x; } ->nayaur : Symbol(nayaur, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 5, 245)) +>nayaur : Symbol(caniventer.nayaur, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 5, 245)) >gabriellae : Symbol(gabriellae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 766, 1)) >amicus : Symbol(gabriellae.amicus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 769, 5)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 6, 38)) @@ -94,7 +94,7 @@ module rionegrensis { >punicus : Symbol(lutreolus.punicus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 720, 18)) naso() : panamensis.setulosus> { var x : panamensis.setulosus>; () => { var y = this; }; return x; } ->naso : Symbol(naso, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 8, 101)) +>naso : Symbol(veraecrucis.naso, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 8, 101)) >panamensis : Symbol(panamensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 501, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 986, 1)) >setulosus : Symbol(panamensis.setulosus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 987, 19)) >lutreolus : Symbol(lutreolus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 355, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 719, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 855, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 872, 1)) @@ -121,7 +121,7 @@ module rionegrensis { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 9, 115)) vancouverensis() : imperfecta.ciliolabrum { var x : imperfecta.ciliolabrum; () => { var y = this; }; return x; } ->vancouverensis : Symbol(vancouverensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 9, 254)) +>vancouverensis : Symbol(veraecrucis.vancouverensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 9, 254)) >imperfecta : Symbol(imperfecta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 785, 1)) >ciliolabrum : Symbol(imperfecta.ciliolabrum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 807, 5)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) @@ -140,7 +140,7 @@ module rionegrensis { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 10, 86)) africana() : argurus.gilbertii, sagitta.cinereus> { var x : argurus.gilbertii, sagitta.cinereus>; () => { var y = this; }; return x; } ->africana : Symbol(africana, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 10, 186)) +>africana : Symbol(veraecrucis.africana, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 10, 186)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) >gilbertii : Symbol(argurus.gilbertii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 700, 16)) >panamensis : Symbol(panamensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 501, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 986, 1)) @@ -175,7 +175,7 @@ module rionegrensis { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 11, 147)) palliolata() : Lanthanum.jugularis { var x : Lanthanum.jugularis; () => { var y = this; }; return x; } ->palliolata : Symbol(palliolata, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 11, 314)) +>palliolata : Symbol(veraecrucis.palliolata, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 11, 314)) >Lanthanum : Symbol(Lanthanum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 106, 1)) >jugularis : Symbol(Lanthanum.jugularis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 134, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 12, 44)) @@ -186,7 +186,7 @@ module rionegrensis { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 12, 44)) nivicola() : samarensis.pallidus { var x : samarensis.pallidus; () => { var y = this; }; return x; } ->nivicola : Symbol(nivicola, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 12, 106)) +>nivicola : Symbol(veraecrucis.nivicola, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 12, 106)) >samarensis : Symbol(samarensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 531, 1)) >pallidus : Symbol(samarensis.pallidus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 563, 5)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 13, 42)) @@ -207,7 +207,7 @@ module julianae { >nudicaudus : Symbol(nudicaudus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 18, 3)) brandtii() : argurus.germaini { var x : argurus.germaini; () => { var y = this; }; return x; } ->brandtii : Symbol(brandtii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 19, 27)) +>brandtii : Symbol(nudicaudus.brandtii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 19, 27)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) >germaini : Symbol(argurus.germaini, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 893, 16)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 20, 39)) @@ -218,7 +218,7 @@ module julianae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 20, 39)) maxwellii() : ruatanica.Praseodymium { var x : ruatanica.Praseodymium; () => { var y = this; }; return x; } ->maxwellii : Symbol(maxwellii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 20, 98)) +>maxwellii : Symbol(nudicaudus.maxwellii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 20, 98)) >ruatanica : Symbol(ruatanica, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 100, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 244, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 959, 1)) >Praseodymium : Symbol(ruatanica.Praseodymium, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 960, 18)) >Lanthanum : Symbol(Lanthanum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 106, 1)) @@ -237,7 +237,7 @@ module julianae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 21, 88)) endoi() : panglima.abidi { var x : panglima.abidi; () => { var y = this; }; return x; } ->endoi : Symbol(endoi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 21, 195)) +>endoi : Symbol(nudicaudus.endoi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 21, 195)) >panglima : Symbol(panglima, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 400, 1)) >abidi : Symbol(panglima.abidi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 414, 5)) >dogramacii : Symbol(dogramacii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 314, 1)) @@ -256,7 +256,7 @@ module julianae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 22, 70)) venezuelae() : howi.marcanoi { var x : howi.marcanoi; () => { var y = this; }; return x; } ->venezuelae : Symbol(venezuelae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 22, 163)) +>venezuelae : Symbol(nudicaudus.venezuelae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 22, 163)) >howi : Symbol(howi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 466, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 681, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 886, 1)) >marcanoi : Symbol(howi.marcanoi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 682, 13)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 23, 38)) @@ -267,7 +267,7 @@ module julianae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 23, 38)) zamicrus() : rionegrensis.caniventer { var x : rionegrensis.caniventer; () => { var y = this; }; return x; } ->zamicrus : Symbol(zamicrus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 23, 94)) +>zamicrus : Symbol(nudicaudus.zamicrus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 23, 94)) >rionegrensis : Symbol(rionegrensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 0, 0)) >caniventer : Symbol(rionegrensis.caniventer, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 0, 21)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 24, 46)) @@ -281,7 +281,7 @@ module julianae { >galapagoensis : Symbol(galapagoensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 25, 3)) isabellae() : panglima.amphibius { var x : panglima.amphibius; () => { var y = this; }; return x; } ->isabellae : Symbol(isabellae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 26, 30)) +>isabellae : Symbol(galapagoensis.isabellae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 26, 30)) >panglima : Symbol(panglima, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 400, 1)) >amphibius : Symbol(panglima.amphibius, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 401, 17)) >macrorhinos : Symbol(macrorhinos, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 461, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 497, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 736, 1)) @@ -300,7 +300,7 @@ module julianae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 27, 84)) rueppellii() : ruatanica.americanus { var x : ruatanica.americanus; () => { var y = this; }; return x; } ->rueppellii : Symbol(rueppellii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 27, 187)) +>rueppellii : Symbol(galapagoensis.rueppellii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 27, 187)) >ruatanica : Symbol(ruatanica, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 100, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 244, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 959, 1)) >americanus : Symbol(ruatanica.americanus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 245, 18)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 28, 45)) @@ -311,7 +311,7 @@ module julianae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 28, 45)) peregusna() : dogramacii.kaiseri { var x : dogramacii.kaiseri; () => { var y = this; }; return x; } ->peregusna : Symbol(peregusna, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 28, 108)) +>peregusna : Symbol(galapagoensis.peregusna, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 28, 108)) >dogramacii : Symbol(dogramacii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 314, 1)) >kaiseri : Symbol(dogramacii.kaiseri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 329, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 29, 42)) @@ -322,7 +322,7 @@ module julianae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 29, 42)) gliroides() : howi.coludo { var x : howi.coludo; () => { var y = this; }; return x; } ->gliroides : Symbol(gliroides, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 29, 103)) +>gliroides : Symbol(galapagoensis.gliroides, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 29, 103)) >howi : Symbol(howi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 466, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 681, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 886, 1)) >coludo : Symbol(howi.coludo, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 887, 13)) >howi : Symbol(howi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 466, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 681, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 886, 1)) @@ -341,7 +341,7 @@ module julianae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 30, 66)) banakrisi() : macrorhinos.daphaenodon { var x : macrorhinos.daphaenodon; () => { var y = this; }; return x; } ->banakrisi : Symbol(banakrisi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 30, 151)) +>banakrisi : Symbol(galapagoensis.banakrisi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 30, 151)) >macrorhinos : Symbol(macrorhinos, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 461, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 497, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 736, 1)) >daphaenodon : Symbol(macrorhinos.daphaenodon, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 737, 20)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 31, 47)) @@ -352,7 +352,7 @@ module julianae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 31, 47)) rozendaali() : lutreolus.foina { var x : lutreolus.foina; () => { var y = this; }; return x; } ->rozendaali : Symbol(rozendaali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 31, 113)) +>rozendaali : Symbol(galapagoensis.rozendaali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 31, 113)) >lutreolus : Symbol(lutreolus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 355, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 719, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 855, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 872, 1)) >foina : Symbol(lutreolus.foina, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 856, 18)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 32, 40)) @@ -363,7 +363,7 @@ module julianae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 32, 40)) stuhlmanni() : panamensis.linulus { var x : panamensis.linulus; () => { var y = this; }; return x; } ->stuhlmanni : Symbol(stuhlmanni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 32, 98)) +>stuhlmanni : Symbol(galapagoensis.stuhlmanni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 32, 98)) >panamensis : Symbol(panamensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 501, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 986, 1)) >linulus : Symbol(panamensis.linulus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 502, 19)) >caurinus : Symbol(caurinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 449, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 836, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 976, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1007, 1)) @@ -387,7 +387,7 @@ module julianae { >T1 : Symbol(T1, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 35, 27)) mattheyi() : samarensis.fuscus> { var x : samarensis.fuscus>; () => { var y = this; }; return x; } ->mattheyi : Symbol(mattheyi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 35, 33)) +>mattheyi : Symbol(albidens.mattheyi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 35, 33)) >samarensis : Symbol(samarensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 531, 1)) >fuscus : Symbol(samarensis.fuscus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 547, 5)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) @@ -414,7 +414,7 @@ module julianae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 36, 126)) Astatine() : steerii { var x : steerii; () => { var y = this; }; return x; } ->Astatine : Symbol(Astatine, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 36, 272)) +>Astatine : Symbol(albidens.Astatine, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 36, 272)) >steerii : Symbol(steerii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 16, 17)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 37, 30)) >steerii : Symbol(steerii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 16, 17)) @@ -423,7 +423,7 @@ module julianae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 37, 30)) vincenti() : argurus.dauricus { var x : argurus.dauricus; () => { var y = this; }; return x; } ->vincenti : Symbol(vincenti, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 37, 80)) +>vincenti : Symbol(albidens.vincenti, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 37, 80)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) >dauricus : Symbol(argurus.dauricus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 374, 16)) >macrorhinos : Symbol(macrorhinos, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 461, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 497, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 736, 1)) @@ -442,7 +442,7 @@ module julianae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 38, 81)) hirta() : Lanthanum.jugularis { var x : Lanthanum.jugularis; () => { var y = this; }; return x; } ->hirta : Symbol(hirta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 38, 182)) +>hirta : Symbol(albidens.hirta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 38, 182)) >Lanthanum : Symbol(Lanthanum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 106, 1)) >jugularis : Symbol(Lanthanum.jugularis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 134, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 39, 39)) @@ -453,7 +453,7 @@ module julianae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 39, 39)) virginianus() : durangae { var x : durangae; () => { var y = this; }; return x; } ->virginianus : Symbol(virginianus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 39, 101)) +>virginianus : Symbol(albidens.virginianus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 39, 101)) >durangae : Symbol(durangae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 94, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 40, 34)) >durangae : Symbol(durangae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 94, 3)) @@ -462,7 +462,7 @@ module julianae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 40, 34)) macrophyllum() : howi.marcanoi { var x : howi.marcanoi; () => { var y = this; }; return x; } ->macrophyllum : Symbol(macrophyllum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 40, 85)) +>macrophyllum : Symbol(albidens.macrophyllum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 40, 85)) >howi : Symbol(howi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 466, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 681, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 886, 1)) >marcanoi : Symbol(howi.marcanoi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 682, 13)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 41, 40)) @@ -473,7 +473,7 @@ module julianae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 41, 40)) porcellus() : ruatanica.americanus { var x : ruatanica.americanus; () => { var y = this; }; return x; } ->porcellus : Symbol(porcellus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 41, 96)) +>porcellus : Symbol(albidens.porcellus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 41, 96)) >ruatanica : Symbol(ruatanica, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 100, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 244, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 959, 1)) >americanus : Symbol(ruatanica.americanus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 245, 18)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 42, 44)) @@ -492,7 +492,7 @@ module julianae { >psilurus : Symbol(caurinus.psilurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1008, 17)) cepapi() : caurinus.psilurus { var x : caurinus.psilurus; () => { var y = this; }; return x; } ->cepapi : Symbol(cepapi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 44, 57)) +>cepapi : Symbol(oralis.cepapi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 44, 57)) >caurinus : Symbol(caurinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 449, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 836, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 976, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1007, 1)) >psilurus : Symbol(caurinus.psilurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1008, 17)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 45, 38)) @@ -503,7 +503,7 @@ module julianae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 45, 38)) porteri() : lavali.thaeleri { var x : lavali.thaeleri; () => { var y = this; }; return x; } ->porteri : Symbol(porteri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 45, 98)) +>porteri : Symbol(oralis.porteri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 45, 98)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) >thaeleri : Symbol(lavali.thaeleri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 299, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 46, 37)) @@ -514,7 +514,7 @@ module julianae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 46, 37)) bindi() : caurinus.mahaganus> { var x : caurinus.mahaganus>; () => { var y = this; }; return x; } ->bindi : Symbol(bindi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 46, 95)) +>bindi : Symbol(oralis.bindi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 46, 95)) >caurinus : Symbol(caurinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 449, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 836, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 976, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1007, 1)) >mahaganus : Symbol(caurinus.mahaganus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 450, 17)) >gabriellae : Symbol(gabriellae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 766, 1)) @@ -541,7 +541,7 @@ module julianae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 47, 119)) puda() : sagitta.stolzmanni { var x : sagitta.stolzmanni; () => { var y = this; }; return x; } ->puda : Symbol(puda, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 47, 261)) +>puda : Symbol(oralis.puda, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 47, 261)) >sagitta : Symbol(sagitta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 487, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 577, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 675, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 746, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 898, 1)) >stolzmanni : Symbol(sagitta.stolzmanni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 899, 16)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 48, 37)) @@ -552,7 +552,7 @@ module julianae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 48, 37)) mindorensis() : trivirgatus.falconeri { var x : trivirgatus.falconeri; () => { var y = this; }; return x; } ->mindorensis : Symbol(mindorensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 48, 98)) +>mindorensis : Symbol(oralis.mindorensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 48, 98)) >trivirgatus : Symbol(trivirgatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 186, 1)) >falconeri : Symbol(trivirgatus.falconeri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 210, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 49, 47)) @@ -563,7 +563,7 @@ module julianae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 49, 47)) ignitus() : petrophilus.rosalia, lavali.wilsoni> { var x : petrophilus.rosalia, lavali.wilsoni>; () => { var y = this; }; return x; } ->ignitus : Symbol(ignitus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 49, 111)) +>ignitus : Symbol(oralis.ignitus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 49, 111)) >petrophilus : Symbol(petrophilus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 715, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 823, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 998, 1)) >rosalia : Symbol(petrophilus.rosalia, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 999, 20)) >panamensis : Symbol(panamensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 501, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 986, 1)) @@ -588,7 +588,7 @@ module julianae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 50, 110)) rufus() : nudicaudus { var x : nudicaudus; () => { var y = this; }; return x; } ->rufus : Symbol(rufus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 50, 241)) +>rufus : Symbol(oralis.rufus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 50, 241)) >nudicaudus : Symbol(nudicaudus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 18, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 51, 30)) >nudicaudus : Symbol(nudicaudus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 18, 3)) @@ -597,7 +597,7 @@ module julianae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 51, 30)) monax() : imperfecta.subspinosus { var x : imperfecta.subspinosus; () => { var y = this; }; return x; } ->monax : Symbol(monax, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 51, 83)) +>monax : Symbol(oralis.monax, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 51, 83)) >imperfecta : Symbol(imperfecta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 785, 1)) >subspinosus : Symbol(imperfecta.subspinosus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 794, 5)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 52, 42)) @@ -608,7 +608,7 @@ module julianae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 52, 42)) unalascensis() : minutus.inez, gabriellae.echinatus>, dogramacii.aurata> { var x : minutus.inez, gabriellae.echinatus>, dogramacii.aurata>; () => { var y = this; }; return x; } ->unalascensis : Symbol(unalascensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 52, 107)) +>unalascensis : Symbol(oralis.unalascensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 52, 107)) >minutus : Symbol(minutus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 433, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 492, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 848, 1)) >inez : Symbol(minutus.inez, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 493, 16)) >rendalli : Symbol(rendalli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 151, 1)) @@ -643,7 +643,7 @@ module julianae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 53, 160)) wuchihensis() : howi.angulatus, petrophilus.minutilla> { var x : howi.angulatus, petrophilus.minutilla>; () => { var y = this; }; return x; } ->wuchihensis : Symbol(wuchihensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 53, 336)) +>wuchihensis : Symbol(oralis.wuchihensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 53, 336)) >howi : Symbol(howi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 466, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 681, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 886, 1)) >angulatus : Symbol(howi.angulatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 467, 13)) >howi : Symbol(howi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 466, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 681, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 886, 1)) @@ -670,7 +670,7 @@ module julianae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 54, 123)) leucippe() : lavali.otion { var x : lavali.otion; () => { var y = this; }; return x; } ->leucippe : Symbol(leucippe, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 54, 263)) +>leucippe : Symbol(oralis.leucippe, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 54, 263)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) >otion : Symbol(lavali.otion, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 270, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 55, 35)) @@ -681,7 +681,7 @@ module julianae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 55, 35)) ordii() : daubentonii.arboreus { var x : daubentonii.arboreus; () => { var y = this; }; return x; } ->ordii : Symbol(ordii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 55, 90)) +>ordii : Symbol(oralis.ordii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 55, 90)) >daubentonii : Symbol(daubentonii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 471, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 586, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 636, 1)) >arboreus : Symbol(daubentonii.arboreus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 637, 20)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) @@ -700,7 +700,7 @@ module julianae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 56, 78)) eisentrauti() : rendalli.zuluensis { var x : rendalli.zuluensis; () => { var y = this; }; return x; } ->eisentrauti : Symbol(eisentrauti, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 56, 179)) +>eisentrauti : Symbol(oralis.eisentrauti, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 56, 179)) >rendalli : Symbol(rendalli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 151, 1)) >zuluensis : Symbol(rendalli.zuluensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 152, 17)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 57, 44)) @@ -717,7 +717,7 @@ module julianae { >jugularis : Symbol(Lanthanum.jugularis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 134, 3)) wolffsohni() : Lanthanum.suillus { var x : Lanthanum.suillus; () => { var y = this; }; return x; } ->wolffsohni : Symbol(wolffsohni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 59, 54)) +>wolffsohni : Symbol(sumatrana.wolffsohni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 59, 54)) >Lanthanum : Symbol(Lanthanum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 106, 1)) >suillus : Symbol(Lanthanum.suillus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 107, 18)) >dammermani : Symbol(dammermani, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 591, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 913, 1)) @@ -736,7 +736,7 @@ module julianae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 60, 87)) geata() : ruatanica.hector { var x : ruatanica.hector; () => { var y = this; }; return x; } ->geata : Symbol(geata, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 60, 192)) +>geata : Symbol(sumatrana.geata, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 60, 192)) >ruatanica : Symbol(ruatanica, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 100, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 244, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 959, 1)) >hector : Symbol(ruatanica.hector, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 101, 18)) >sumatrana : Symbol(sumatrana, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 58, 3)) @@ -753,7 +753,7 @@ module julianae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 61, 69)) awashensis() : petrophilus.minutilla { var x : petrophilus.minutilla; () => { var y = this; }; return x; } ->awashensis : Symbol(awashensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 61, 161)) +>awashensis : Symbol(sumatrana.awashensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 61, 161)) >petrophilus : Symbol(petrophilus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 715, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 823, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 998, 1)) >minutilla : Symbol(petrophilus.minutilla, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 716, 20)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 62, 46)) @@ -764,7 +764,7 @@ module julianae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 62, 46)) sturdeei() : lutreolus.cor { var x : lutreolus.cor; () => { var y = this; }; return x; } ->sturdeei : Symbol(sturdeei, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 62, 110)) +>sturdeei : Symbol(sumatrana.sturdeei, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 62, 110)) >lutreolus : Symbol(lutreolus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 355, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 719, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 855, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 872, 1)) >cor : Symbol(lutreolus.cor, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 873, 18)) >Lanthanum : Symbol(Lanthanum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 106, 1)) @@ -781,7 +781,7 @@ module julianae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 63, 72)) pachyurus() : howi.angulatus> { var x : howi.angulatus>; () => { var y = this; }; return x; } ->pachyurus : Symbol(pachyurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 63, 164)) +>pachyurus : Symbol(sumatrana.pachyurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 63, 164)) >howi : Symbol(howi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 466, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 681, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 886, 1)) >angulatus : Symbol(howi.angulatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 467, 13)) >dogramacii : Symbol(dogramacii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 314, 1)) @@ -806,7 +806,7 @@ module julianae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 64, 109)) lyelli() : provocax.melanoleuca { var x : provocax.melanoleuca; () => { var y = this; }; return x; } ->lyelli : Symbol(lyelli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 64, 237)) +>lyelli : Symbol(sumatrana.lyelli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 64, 237)) >provocax : Symbol(provocax, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 669, 1)) >melanoleuca : Symbol(provocax.melanoleuca, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 670, 17)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 65, 41)) @@ -817,7 +817,7 @@ module julianae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 65, 41)) neohibernicus() : dammermani.siberu { var x : dammermani.siberu; () => { var y = this; }; return x; } ->neohibernicus : Symbol(neohibernicus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 65, 104)) +>neohibernicus : Symbol(sumatrana.neohibernicus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 65, 104)) >dammermani : Symbol(dammermani, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 591, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 913, 1)) >siberu : Symbol(dammermani.siberu, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 592, 19)) >lutreolus : Symbol(lutreolus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 355, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 719, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 855, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 872, 1)) @@ -841,7 +841,7 @@ module julianae { >T1 : Symbol(T1, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 68, 28)) pundti() : sagitta.sicarius { var x : sagitta.sicarius; () => { var y = this; }; return x; } ->pundti : Symbol(pundti, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 68, 34)) +>pundti : Symbol(gerbillus.pundti, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 68, 34)) >sagitta : Symbol(sagitta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 487, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 577, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 675, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 746, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 898, 1)) >sicarius : Symbol(sagitta.sicarius, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 676, 16)) >dogramacii : Symbol(dogramacii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 314, 1)) @@ -860,7 +860,7 @@ module julianae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 69, 78)) tristrami() : petrophilus.minutilla { var x : petrophilus.minutilla; () => { var y = this; }; return x; } ->tristrami : Symbol(tristrami, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 69, 178)) +>tristrami : Symbol(gerbillus.tristrami, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 69, 178)) >petrophilus : Symbol(petrophilus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 715, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 823, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 998, 1)) >minutilla : Symbol(petrophilus.minutilla, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 716, 20)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 70, 45)) @@ -871,7 +871,7 @@ module julianae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 70, 45)) swarthi() : lutreolus.foina { var x : lutreolus.foina; () => { var y = this; }; return x; } ->swarthi : Symbol(swarthi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 70, 109)) +>swarthi : Symbol(gerbillus.swarthi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 70, 109)) >lutreolus : Symbol(lutreolus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 355, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 719, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 855, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 872, 1)) >foina : Symbol(lutreolus.foina, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 856, 18)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 71, 37)) @@ -882,7 +882,7 @@ module julianae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 71, 37)) horsfieldii() : trivirgatus.falconeri { var x : trivirgatus.falconeri; () => { var y = this; }; return x; } ->horsfieldii : Symbol(horsfieldii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 71, 95)) +>horsfieldii : Symbol(gerbillus.horsfieldii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 71, 95)) >trivirgatus : Symbol(trivirgatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 186, 1)) >falconeri : Symbol(trivirgatus.falconeri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 210, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 72, 47)) @@ -893,7 +893,7 @@ module julianae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 72, 47)) diazi() : imperfecta.lasiurus { var x : imperfecta.lasiurus; () => { var y = this; }; return x; } ->diazi : Symbol(diazi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 72, 111)) +>diazi : Symbol(gerbillus.diazi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 72, 111)) >imperfecta : Symbol(imperfecta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 785, 1)) >lasiurus : Symbol(imperfecta.lasiurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 786, 19)) >lutreolus : Symbol(lutreolus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 355, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 719, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 855, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 872, 1)) @@ -912,7 +912,7 @@ module julianae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 73, 77)) rennelli() : argurus.luctuosa { var x : argurus.luctuosa; () => { var y = this; }; return x; } ->rennelli : Symbol(rennelli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 73, 177)) +>rennelli : Symbol(gerbillus.rennelli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 73, 177)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) >luctuosa : Symbol(argurus.luctuosa, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 982, 16)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 74, 39)) @@ -923,7 +923,7 @@ module julianae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 74, 39)) maulinus() : lavali.lepturus { var x : lavali.lepturus; () => { var y = this; }; return x; } ->maulinus : Symbol(maulinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 74, 98)) +>maulinus : Symbol(gerbillus.maulinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 74, 98)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) >lepturus : Symbol(lavali.lepturus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 309, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 75, 38)) @@ -934,7 +934,7 @@ module julianae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 75, 38)) muscina() : daubentonii.arboreus { var x : daubentonii.arboreus; () => { var y = this; }; return x; } ->muscina : Symbol(muscina, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 75, 96)) +>muscina : Symbol(gerbillus.muscina, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 75, 96)) >daubentonii : Symbol(daubentonii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 471, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 586, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 636, 1)) >arboreus : Symbol(daubentonii.arboreus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 637, 20)) >petrophilus : Symbol(petrophilus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 715, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 823, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 998, 1)) @@ -953,7 +953,7 @@ module julianae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 76, 85)) pelengensis() : sagitta.leptoceros { var x : sagitta.leptoceros; () => { var y = this; }; return x; } ->pelengensis : Symbol(pelengensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 76, 191)) +>pelengensis : Symbol(gerbillus.pelengensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 76, 191)) >sagitta : Symbol(sagitta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 487, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 577, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 675, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 746, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 898, 1)) >leptoceros : Symbol(sagitta.leptoceros, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 578, 16)) >caurinus : Symbol(caurinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 449, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 836, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 976, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1007, 1)) @@ -972,7 +972,7 @@ module julianae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 77, 85)) abramus() : lavali.thaeleri { var x : lavali.thaeleri; () => { var y = this; }; return x; } ->abramus : Symbol(abramus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 77, 187)) +>abramus : Symbol(gerbillus.abramus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 77, 187)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) >thaeleri : Symbol(lavali.thaeleri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 299, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 78, 37)) @@ -983,7 +983,7 @@ module julianae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 78, 37)) reevesi() : provocax.melanoleuca { var x : provocax.melanoleuca; () => { var y = this; }; return x; } ->reevesi : Symbol(reevesi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 78, 95)) +>reevesi : Symbol(gerbillus.reevesi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 78, 95)) >provocax : Symbol(provocax, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 669, 1)) >melanoleuca : Symbol(provocax.melanoleuca, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 670, 17)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 79, 42)) @@ -997,7 +997,7 @@ module julianae { >acariensis : Symbol(acariensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 80, 3)) levicula() : lavali.lepturus { var x : lavali.lepturus; () => { var y = this; }; return x; } ->levicula : Symbol(levicula, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 81, 27)) +>levicula : Symbol(acariensis.levicula, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 81, 27)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) >lepturus : Symbol(lavali.lepturus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 309, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 82, 38)) @@ -1008,7 +1008,7 @@ module julianae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 82, 38)) minous() : argurus.dauricus { var x : argurus.dauricus; () => { var y = this; }; return x; } ->minous : Symbol(minous, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 82, 96)) +>minous : Symbol(acariensis.minous, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 82, 96)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) >dauricus : Symbol(argurus.dauricus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 374, 16)) >quasiater : Symbol(quasiater, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 236, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 422, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 813, 1)) @@ -1027,7 +1027,7 @@ module julianae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 83, 75)) cinereiventer() : panamensis.setulosus { var x : panamensis.setulosus; () => { var y = this; }; return x; } ->cinereiventer : Symbol(cinereiventer, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 83, 172)) +>cinereiventer : Symbol(acariensis.cinereiventer, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 83, 172)) >panamensis : Symbol(panamensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 501, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 986, 1)) >setulosus : Symbol(panamensis.setulosus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 987, 19)) >sagitta : Symbol(sagitta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 487, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 577, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 675, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 746, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 898, 1)) @@ -1046,7 +1046,7 @@ module julianae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 84, 79)) longicaudatus() : macrorhinos.marmosurus> { var x : macrorhinos.marmosurus>; () => { var y = this; }; return x; } ->longicaudatus : Symbol(longicaudatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 84, 173)) +>longicaudatus : Symbol(acariensis.longicaudatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 84, 173)) >macrorhinos : Symbol(macrorhinos, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 461, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 497, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 736, 1)) >marmosurus : Symbol(macrorhinos.marmosurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 462, 20)) >dammermani : Symbol(dammermani, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 591, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 913, 1)) @@ -1071,7 +1071,7 @@ module julianae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 85, 117)) baeodon() : argurus.netscheri, argurus.luctuosa> { var x : argurus.netscheri, argurus.luctuosa>; () => { var y = this; }; return x; } ->baeodon : Symbol(baeodon, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 85, 249)) +>baeodon : Symbol(acariensis.baeodon, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 85, 249)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) >netscheri : Symbol(argurus.netscheri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 943, 16)) >dammermani : Symbol(dammermani, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 591, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 913, 1)) @@ -1098,7 +1098,7 @@ module julianae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 86, 114)) soricoides() : argurus.luctuosa { var x : argurus.luctuosa; () => { var y = this; }; return x; } ->soricoides : Symbol(soricoides, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 86, 249)) +>soricoides : Symbol(acariensis.soricoides, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 86, 249)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) >luctuosa : Symbol(argurus.luctuosa, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 982, 16)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 87, 41)) @@ -1109,7 +1109,7 @@ module julianae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 87, 41)) datae() : daubentonii.arboreus> { var x : daubentonii.arboreus>; () => { var y = this; }; return x; } ->datae : Symbol(datae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 87, 100)) +>datae : Symbol(acariensis.datae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 87, 100)) >daubentonii : Symbol(daubentonii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 471, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 586, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 636, 1)) >arboreus : Symbol(daubentonii.arboreus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 637, 20)) >provocax : Symbol(provocax, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 669, 1)) @@ -1136,7 +1136,7 @@ module julianae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 88, 124)) spixii() : imperfecta.subspinosus { var x : imperfecta.subspinosus; () => { var y = this; }; return x; } ->spixii : Symbol(spixii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 88, 271)) +>spixii : Symbol(acariensis.spixii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 88, 271)) >imperfecta : Symbol(imperfecta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 785, 1)) >subspinosus : Symbol(imperfecta.subspinosus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 794, 5)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 89, 43)) @@ -1147,7 +1147,7 @@ module julianae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 89, 43)) anakuma() : lavali.wilsoni { var x : lavali.wilsoni; () => { var y = this; }; return x; } ->anakuma : Symbol(anakuma, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 89, 108)) +>anakuma : Symbol(acariensis.anakuma, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 89, 108)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) >wilsoni : Symbol(lavali.wilsoni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 253, 15)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 90, 36)) @@ -1158,7 +1158,7 @@ module julianae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 90, 36)) kihaulei() : panglima.amphibius { var x : panglima.amphibius; () => { var y = this; }; return x; } ->kihaulei : Symbol(kihaulei, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 90, 93)) +>kihaulei : Symbol(acariensis.kihaulei, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 90, 93)) >panglima : Symbol(panglima, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 400, 1)) >amphibius : Symbol(panglima.amphibius, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 401, 17)) >trivirgatus : Symbol(trivirgatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 186, 1)) @@ -1177,7 +1177,7 @@ module julianae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 91, 89)) gymnura() : quasiater.carolinensis { var x : quasiater.carolinensis; () => { var y = this; }; return x; } ->gymnura : Symbol(gymnura, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 91, 198)) +>gymnura : Symbol(acariensis.gymnura, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 91, 198)) >quasiater : Symbol(quasiater, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 236, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 422, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 813, 1)) >carolinensis : Symbol(quasiater.carolinensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 423, 18)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 92, 44)) @@ -1188,7 +1188,7 @@ module julianae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 92, 44)) olchonensis() : rendalli.crenulata { var x : rendalli.crenulata; () => { var y = this; }; return x; } ->olchonensis : Symbol(olchonensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 92, 109)) +>olchonensis : Symbol(acariensis.olchonensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 92, 109)) >rendalli : Symbol(rendalli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 151, 1)) >crenulata : Symbol(rendalli.crenulata, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 180, 3)) >trivirgatus : Symbol(trivirgatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 186, 1)) @@ -1213,7 +1213,7 @@ module julianae { >aurata : Symbol(dogramacii.aurata, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 344, 3)) Californium() : panamensis.setulosus { var x : panamensis.setulosus; () => { var y = this; }; return x; } ->Californium : Symbol(Californium, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 95, 51)) +>Californium : Symbol(durangae.Californium, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 95, 51)) >panamensis : Symbol(panamensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 501, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 986, 1)) >setulosus : Symbol(panamensis.setulosus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 987, 19)) >lutreolus : Symbol(lutreolus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 355, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 719, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 855, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 872, 1)) @@ -1232,7 +1232,7 @@ module julianae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 96, 86)) Flerovium() : howi.angulatus { var x : howi.angulatus; () => { var y = this; }; return x; } ->Flerovium : Symbol(Flerovium, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 96, 189)) +>Flerovium : Symbol(durangae.Flerovium, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 96, 189)) >howi : Symbol(howi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 466, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 681, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 886, 1)) >angulatus : Symbol(howi.angulatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 467, 13)) >petrophilus : Symbol(petrophilus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 715, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 823, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 998, 1)) @@ -1251,7 +1251,7 @@ module julianae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 97, 83)) phrudus() : sagitta.stolzmanni { var x : sagitta.stolzmanni; () => { var y = this; }; return x; } ->phrudus : Symbol(phrudus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 97, 185)) +>phrudus : Symbol(durangae.phrudus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 97, 185)) >sagitta : Symbol(sagitta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 487, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 577, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 675, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 746, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 898, 1)) >stolzmanni : Symbol(sagitta.stolzmanni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 899, 16)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 98, 40)) @@ -1271,7 +1271,7 @@ module ruatanica { >T1 : Symbol(T1, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 102, 25)) humulis() : julianae.steerii { var x : julianae.steerii; () => { var y = this; }; return x; } ->humulis : Symbol(humulis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 102, 31)) +>humulis : Symbol(hector.humulis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 102, 31)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) >steerii : Symbol(julianae.steerii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 16, 17)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 103, 38)) @@ -1282,7 +1282,7 @@ module ruatanica { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 103, 38)) eurycerus() : panamensis.linulus, lavali.wilsoni> { var x : panamensis.linulus, lavali.wilsoni>; () => { var y = this; }; return x; } ->eurycerus : Symbol(eurycerus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 103, 97)) +>eurycerus : Symbol(hector.eurycerus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 103, 97)) >panamensis : Symbol(panamensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 501, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 986, 1)) >linulus : Symbol(panamensis.linulus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 502, 19)) >ruatanica : Symbol(ruatanica, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 100, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 244, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 959, 1)) @@ -1318,7 +1318,7 @@ module Lanthanum { >T1 : Symbol(T1, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 108, 26)) spilosoma() : quasiater.carolinensis { var x : quasiater.carolinensis; () => { var y = this; }; return x; } ->spilosoma : Symbol(spilosoma, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 108, 32)) +>spilosoma : Symbol(suillus.spilosoma, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 108, 32)) >quasiater : Symbol(quasiater, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 236, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 422, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 813, 1)) >carolinensis : Symbol(quasiater.carolinensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 423, 18)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 109, 46)) @@ -1329,7 +1329,7 @@ module Lanthanum { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 109, 46)) tumbalensis() : caurinus.megaphyllus { var x : caurinus.megaphyllus; () => { var y = this; }; return x; } ->tumbalensis : Symbol(tumbalensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 109, 111)) +>tumbalensis : Symbol(suillus.tumbalensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 109, 111)) >caurinus : Symbol(caurinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 449, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 836, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 976, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1007, 1)) >megaphyllus : Symbol(caurinus.megaphyllus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 837, 17)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 110, 46)) @@ -1340,7 +1340,7 @@ module Lanthanum { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 110, 46)) anatolicus() : julianae.steerii { var x : julianae.steerii; () => { var y = this; }; return x; } ->anatolicus : Symbol(anatolicus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 110, 109)) +>anatolicus : Symbol(suillus.anatolicus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 110, 109)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) >steerii : Symbol(julianae.steerii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 16, 17)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 111, 41)) @@ -1363,7 +1363,7 @@ module Lanthanum { >punicus : Symbol(lutreolus.punicus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 720, 18)) granatensis() : quasiater.bobrinskoi { var x : quasiater.bobrinskoi; () => { var y = this; }; return x; } ->granatensis : Symbol(granatensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 113, 94)) +>granatensis : Symbol(nitidus.granatensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 113, 94)) >quasiater : Symbol(quasiater, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 236, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 422, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 813, 1)) >bobrinskoi : Symbol(quasiater.bobrinskoi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 237, 18)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 114, 46)) @@ -1374,7 +1374,7 @@ module Lanthanum { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 114, 46)) negligens() : minutus.inez { var x : minutus.inez; () => { var y = this; }; return x; } ->negligens : Symbol(negligens, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 114, 109)) +>negligens : Symbol(nitidus.negligens, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 114, 109)) >minutus : Symbol(minutus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 433, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 492, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 848, 1)) >inez : Symbol(minutus.inez, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 493, 16)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) @@ -1393,7 +1393,7 @@ module Lanthanum { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 115, 68)) lewisi() : julianae.oralis { var x : julianae.oralis; () => { var y = this; }; return x; } ->lewisi : Symbol(lewisi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 115, 155)) +>lewisi : Symbol(nitidus.lewisi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 115, 155)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) >oralis : Symbol(julianae.oralis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 43, 3)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) @@ -1412,7 +1412,7 @@ module Lanthanum { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 116, 73)) arge() : chrysaeolus.sarasinorum { var x : chrysaeolus.sarasinorum; () => { var y = this; }; return x; } ->arge : Symbol(arge, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 116, 168)) +>arge : Symbol(nitidus.arge, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 116, 168)) >chrysaeolus : Symbol(chrysaeolus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 602, 1)) >sarasinorum : Symbol(chrysaeolus.sarasinorum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 603, 20)) >caurinus : Symbol(caurinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 449, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 836, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 976, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1007, 1)) @@ -1431,7 +1431,7 @@ module Lanthanum { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 117, 86)) dominicensis() : dammermani.melanops { var x : dammermani.melanops; () => { var y = this; }; return x; } ->dominicensis : Symbol(dominicensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 117, 196)) +>dominicensis : Symbol(nitidus.dominicensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 117, 196)) >dammermani : Symbol(dammermani, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 591, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 913, 1)) >melanops : Symbol(dammermani.melanops, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 914, 19)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 118, 46)) @@ -1442,7 +1442,7 @@ module Lanthanum { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 118, 46)) taurus() : macrorhinos.konganensis { var x : macrorhinos.konganensis; () => { var y = this; }; return x; } ->taurus : Symbol(taurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 118, 108)) +>taurus : Symbol(nitidus.taurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 118, 108)) >macrorhinos : Symbol(macrorhinos, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 461, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 497, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 736, 1)) >konganensis : Symbol(macrorhinos.konganensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 498, 20)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 119, 44)) @@ -1453,7 +1453,7 @@ module Lanthanum { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 119, 44)) tonganus() : argurus.netscheri { var x : argurus.netscheri; () => { var y = this; }; return x; } ->tonganus : Symbol(tonganus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 119, 110)) +>tonganus : Symbol(nitidus.tonganus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 119, 110)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) >netscheri : Symbol(argurus.netscheri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 943, 16)) >dogramacii : Symbol(dogramacii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 314, 1)) @@ -1472,7 +1472,7 @@ module Lanthanum { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 120, 78)) silvatica() : rendalli.moojeni { var x : rendalli.moojeni; () => { var y = this; }; return x; } ->silvatica : Symbol(silvatica, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 120, 176)) +>silvatica : Symbol(nitidus.silvatica, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 120, 176)) >rendalli : Symbol(rendalli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 151, 1)) >moojeni : Symbol(rendalli.moojeni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 168, 3)) >dogramacii : Symbol(dogramacii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 314, 1)) @@ -1491,7 +1491,7 @@ module Lanthanum { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 121, 73)) midas() : lavali.xanthognathus { var x : lavali.xanthognathus; () => { var y = this; }; return x; } ->midas : Symbol(midas, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 121, 165)) +>midas : Symbol(nitidus.midas, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 121, 165)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) >xanthognathus : Symbol(lavali.xanthognathus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 285, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 122, 40)) @@ -1502,7 +1502,7 @@ module Lanthanum { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 122, 40)) bicornis() : dogramacii.kaiseri { var x : dogramacii.kaiseri; () => { var y = this; }; return x; } ->bicornis : Symbol(bicornis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 122, 103)) +>bicornis : Symbol(nitidus.bicornis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 122, 103)) >dogramacii : Symbol(dogramacii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 314, 1)) >kaiseri : Symbol(dogramacii.kaiseri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 329, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 123, 41)) @@ -1523,7 +1523,7 @@ module Lanthanum { >steerii : Symbol(julianae.steerii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 16, 17)) phillipsii() : macrorhinos.konganensis { var x : macrorhinos.konganensis; () => { var y = this; }; return x; } ->phillipsii : Symbol(phillipsii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 125, 94)) +>phillipsii : Symbol(megalonyx.phillipsii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 125, 94)) >macrorhinos : Symbol(macrorhinos, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 461, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 497, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 736, 1)) >konganensis : Symbol(macrorhinos.konganensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 498, 20)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 126, 48)) @@ -1534,7 +1534,7 @@ module Lanthanum { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 126, 48)) melanogaster() : rionegrensis.veraecrucis { var x : rionegrensis.veraecrucis; () => { var y = this; }; return x; } ->melanogaster : Symbol(melanogaster, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 126, 114)) +>melanogaster : Symbol(megalonyx.melanogaster, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 126, 114)) >rionegrensis : Symbol(rionegrensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 0, 0)) >veraecrucis : Symbol(rionegrensis.veraecrucis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 7, 3)) >trivirgatus : Symbol(trivirgatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 186, 1)) @@ -1553,7 +1553,7 @@ module Lanthanum { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 127, 98)) elaphus() : nitidus { var x : nitidus; () => { var y = this; }; return x; } ->elaphus : Symbol(elaphus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 127, 212)) +>elaphus : Symbol(megalonyx.elaphus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 127, 212)) >nitidus : Symbol(nitidus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 112, 3)) >petrophilus : Symbol(petrophilus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 715, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 823, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 998, 1)) >minutilla : Symbol(petrophilus.minutilla, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 716, 20)) @@ -1570,7 +1570,7 @@ module Lanthanum { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 128, 72)) elater() : lavali.lepturus { var x : lavali.lepturus; () => { var y = this; }; return x; } ->elater : Symbol(elater, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 128, 165)) +>elater : Symbol(megalonyx.elater, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 128, 165)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) >lepturus : Symbol(lavali.lepturus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 309, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 129, 36)) @@ -1581,7 +1581,7 @@ module Lanthanum { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 129, 36)) ourebi() : provocax.melanoleuca { var x : provocax.melanoleuca; () => { var y = this; }; return x; } ->ourebi : Symbol(ourebi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 129, 94)) +>ourebi : Symbol(megalonyx.ourebi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 129, 94)) >provocax : Symbol(provocax, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 669, 1)) >melanoleuca : Symbol(provocax.melanoleuca, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 670, 17)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 130, 41)) @@ -1592,7 +1592,7 @@ module Lanthanum { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 130, 41)) caraccioli() : imperfecta.ciliolabrum> { var x : imperfecta.ciliolabrum>; () => { var y = this; }; return x; } ->caraccioli : Symbol(caraccioli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 130, 104)) +>caraccioli : Symbol(megalonyx.caraccioli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 130, 104)) >imperfecta : Symbol(imperfecta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 785, 1)) >ciliolabrum : Symbol(imperfecta.ciliolabrum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 807, 5)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) @@ -1619,7 +1619,7 @@ module Lanthanum { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 131, 130)) parva() : gabriellae.echinatus { var x : gabriellae.echinatus; () => { var y = this; }; return x; } ->parva : Symbol(parva, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 131, 278)) +>parva : Symbol(megalonyx.parva, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 131, 278)) >gabriellae : Symbol(gabriellae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 766, 1)) >echinatus : Symbol(gabriellae.echinatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 781, 5)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 132, 40)) @@ -1630,7 +1630,7 @@ module Lanthanum { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 132, 40)) albipes() : quasiater.wattsi { var x : quasiater.wattsi; () => { var y = this; }; return x; } ->albipes : Symbol(albipes, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 132, 103)) +>albipes : Symbol(megalonyx.albipes, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 132, 103)) >quasiater : Symbol(quasiater, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 236, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 422, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 813, 1)) >wattsi : Symbol(quasiater.wattsi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 814, 18)) >dammermani : Symbol(dammermani, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 591, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 913, 1)) @@ -1650,7 +1650,7 @@ module Lanthanum { >jugularis : Symbol(jugularis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 134, 3)) torrei() : petrophilus.sodyi { var x : petrophilus.sodyi; () => { var y = this; }; return x; } ->torrei : Symbol(torrei, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 135, 26)) +>torrei : Symbol(jugularis.torrei, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 135, 26)) >petrophilus : Symbol(petrophilus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 715, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 823, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 998, 1)) >sodyi : Symbol(petrophilus.sodyi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 824, 20)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) @@ -1669,7 +1669,7 @@ module Lanthanum { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 136, 78)) revoili() : lavali.wilsoni { var x : lavali.wilsoni; () => { var y = this; }; return x; } ->revoili : Symbol(revoili, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 136, 178)) +>revoili : Symbol(jugularis.revoili, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 136, 178)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) >wilsoni : Symbol(lavali.wilsoni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 253, 15)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 137, 36)) @@ -1680,7 +1680,7 @@ module Lanthanum { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 137, 36)) macrobullatus() : macrorhinos.daphaenodon { var x : macrorhinos.daphaenodon; () => { var y = this; }; return x; } ->macrobullatus : Symbol(macrobullatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 137, 93)) +>macrobullatus : Symbol(jugularis.macrobullatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 137, 93)) >macrorhinos : Symbol(macrorhinos, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 461, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 497, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 736, 1)) >daphaenodon : Symbol(macrorhinos.daphaenodon, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 737, 20)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 138, 51)) @@ -1691,7 +1691,7 @@ module Lanthanum { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 138, 51)) compactus() : sagitta.stolzmanni { var x : sagitta.stolzmanni; () => { var y = this; }; return x; } ->compactus : Symbol(compactus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 138, 117)) +>compactus : Symbol(jugularis.compactus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 138, 117)) >sagitta : Symbol(sagitta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 487, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 577, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 675, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 746, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 898, 1)) >stolzmanni : Symbol(sagitta.stolzmanni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 899, 16)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 139, 42)) @@ -1702,7 +1702,7 @@ module Lanthanum { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 139, 42)) talpinus() : nitidus { var x : nitidus; () => { var y = this; }; return x; } ->talpinus : Symbol(talpinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 139, 103)) +>talpinus : Symbol(jugularis.talpinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 139, 103)) >nitidus : Symbol(nitidus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 112, 3)) >ruatanica : Symbol(ruatanica, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 100, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 244, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 959, 1)) >americanus : Symbol(ruatanica.americanus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 245, 18)) @@ -1719,7 +1719,7 @@ module Lanthanum { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 140, 72)) stramineus() : gabriellae.amicus { var x : gabriellae.amicus; () => { var y = this; }; return x; } ->stramineus : Symbol(stramineus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 140, 164)) +>stramineus : Symbol(jugularis.stramineus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 140, 164)) >gabriellae : Symbol(gabriellae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 766, 1)) >amicus : Symbol(gabriellae.amicus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 769, 5)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 141, 42)) @@ -1730,7 +1730,7 @@ module Lanthanum { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 141, 42)) dartmouthi() : trivirgatus.mixtus { var x : trivirgatus.mixtus; () => { var y = this; }; return x; } ->dartmouthi : Symbol(dartmouthi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 141, 102)) +>dartmouthi : Symbol(jugularis.dartmouthi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 141, 102)) >trivirgatus : Symbol(trivirgatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 186, 1)) >mixtus : Symbol(trivirgatus.mixtus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 197, 3)) >macrorhinos : Symbol(macrorhinos, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 461, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 497, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 736, 1)) @@ -1749,7 +1749,7 @@ module Lanthanum { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 142, 86)) ogilbyi() : argurus.dauricus { var x : argurus.dauricus; () => { var y = this; }; return x; } ->ogilbyi : Symbol(ogilbyi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 142, 190)) +>ogilbyi : Symbol(jugularis.ogilbyi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 142, 190)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) >dauricus : Symbol(argurus.dauricus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 374, 16)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) @@ -1768,7 +1768,7 @@ module Lanthanum { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 143, 77)) incomtus() : daubentonii.nesiotes { var x : daubentonii.nesiotes; () => { var y = this; }; return x; } ->incomtus : Symbol(incomtus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 143, 175)) +>incomtus : Symbol(jugularis.incomtus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 143, 175)) >daubentonii : Symbol(daubentonii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 471, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 586, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 636, 1)) >nesiotes : Symbol(daubentonii.nesiotes, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 472, 20)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) @@ -1787,7 +1787,7 @@ module Lanthanum { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 144, 87)) surdaster() : ruatanica.Praseodymium { var x : ruatanica.Praseodymium; () => { var y = this; }; return x; } ->surdaster : Symbol(surdaster, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 144, 194)) +>surdaster : Symbol(jugularis.surdaster, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 144, 194)) >ruatanica : Symbol(ruatanica, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 100, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 244, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 959, 1)) >Praseodymium : Symbol(ruatanica.Praseodymium, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 960, 18)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) @@ -1806,7 +1806,7 @@ module Lanthanum { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 145, 86)) melanorhinus() : samarensis.pelurus { var x : samarensis.pelurus; () => { var y = this; }; return x; } ->melanorhinus : Symbol(melanorhinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 145, 191)) +>melanorhinus : Symbol(jugularis.melanorhinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 145, 191)) >samarensis : Symbol(samarensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 531, 1)) >pelurus : Symbol(samarensis.pelurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 532, 19)) >dammermani : Symbol(dammermani, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 591, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 913, 1)) @@ -1825,7 +1825,7 @@ module Lanthanum { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 146, 86)) picticaudata() : minutus.inez, dogramacii.kaiseri> { var x : minutus.inez, dogramacii.kaiseri>; () => { var y = this; }; return x; } ->picticaudata : Symbol(picticaudata, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 146, 188)) +>picticaudata : Symbol(jugularis.picticaudata, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 146, 188)) >minutus : Symbol(minutus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 433, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 492, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 848, 1)) >inez : Symbol(minutus.inez, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 493, 16)) >quasiater : Symbol(quasiater, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 236, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 422, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 813, 1)) @@ -1852,7 +1852,7 @@ module Lanthanum { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 147, 118)) pomona() : julianae.steerii { var x : julianae.steerii; () => { var y = this; }; return x; } ->pomona : Symbol(pomona, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 147, 252)) +>pomona : Symbol(jugularis.pomona, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 147, 252)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) >steerii : Symbol(julianae.steerii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 16, 17)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 148, 37)) @@ -1863,7 +1863,7 @@ module Lanthanum { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 148, 37)) ileile() : quasiater.carolinensis { var x : quasiater.carolinensis; () => { var y = this; }; return x; } ->ileile : Symbol(ileile, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 148, 96)) +>ileile : Symbol(jugularis.ileile, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 148, 96)) >quasiater : Symbol(quasiater, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 236, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 422, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 813, 1)) >carolinensis : Symbol(quasiater.carolinensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 423, 18)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 149, 43)) @@ -1884,7 +1884,7 @@ module rendalli { >steerii : Symbol(julianae.steerii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 16, 17)) telfairi() : argurus.wetmorei { var x : argurus.wetmorei; () => { var y = this; }; return x; } ->telfairi : Symbol(telfairi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 153, 51)) +>telfairi : Symbol(zuluensis.telfairi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 153, 51)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) >wetmorei : Symbol(argurus.wetmorei, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 614, 16)) >Lanthanum : Symbol(Lanthanum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 106, 1)) @@ -1903,7 +1903,7 @@ module rendalli { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 154, 82)) keyensis() : quasiater.wattsi { var x : quasiater.wattsi; () => { var y = this; }; return x; } ->keyensis : Symbol(keyensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 154, 184)) +>keyensis : Symbol(zuluensis.keyensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 154, 184)) >quasiater : Symbol(quasiater, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 236, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 422, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 813, 1)) >wattsi : Symbol(quasiater.wattsi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 814, 18)) >quasiater : Symbol(quasiater, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 236, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 422, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 813, 1)) @@ -1922,7 +1922,7 @@ module rendalli { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 155, 80)) occasius() : argurus.gilbertii { var x : argurus.gilbertii; () => { var y = this; }; return x; } ->occasius : Symbol(occasius, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 155, 180)) +>occasius : Symbol(zuluensis.occasius, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 155, 180)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) >gilbertii : Symbol(argurus.gilbertii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 700, 16)) >caurinus : Symbol(caurinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 449, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 836, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 976, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1007, 1)) @@ -1941,7 +1941,7 @@ module rendalli { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 156, 81)) damarensis() : julianae.galapagoensis { var x : julianae.galapagoensis; () => { var y = this; }; return x; } ->damarensis : Symbol(damarensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 156, 182)) +>damarensis : Symbol(zuluensis.damarensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 156, 182)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) >galapagoensis : Symbol(julianae.galapagoensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 25, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 157, 47)) @@ -1952,7 +1952,7 @@ module rendalli { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 157, 47)) Neptunium() : panglima.abidi { var x : panglima.abidi; () => { var y = this; }; return x; } ->Neptunium : Symbol(Neptunium, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 157, 112)) +>Neptunium : Symbol(zuluensis.Neptunium, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 157, 112)) >panglima : Symbol(panglima, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 400, 1)) >abidi : Symbol(panglima.abidi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 414, 5)) >dogramacii : Symbol(dogramacii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 314, 1)) @@ -1971,7 +1971,7 @@ module rendalli { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 158, 78)) griseoflavus() : ruatanica.americanus { var x : ruatanica.americanus; () => { var y = this; }; return x; } ->griseoflavus : Symbol(griseoflavus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 158, 175)) +>griseoflavus : Symbol(zuluensis.griseoflavus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 158, 175)) >ruatanica : Symbol(ruatanica, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 100, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 244, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 959, 1)) >americanus : Symbol(ruatanica.americanus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 245, 18)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 159, 47)) @@ -1982,7 +1982,7 @@ module rendalli { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 159, 47)) thar() : argurus.oreas { var x : argurus.oreas; () => { var y = this; }; return x; } ->thar : Symbol(thar, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 159, 110)) +>thar : Symbol(zuluensis.thar, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 159, 110)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) >oreas : Symbol(argurus.oreas, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 625, 16)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 160, 32)) @@ -1993,7 +1993,7 @@ module rendalli { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 160, 32)) alborufus() : panamensis.linulus { var x : panamensis.linulus; () => { var y = this; }; return x; } ->alborufus : Symbol(alborufus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 160, 88)) +>alborufus : Symbol(zuluensis.alborufus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 160, 88)) >panamensis : Symbol(panamensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 501, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 986, 1)) >linulus : Symbol(panamensis.linulus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 502, 19)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) @@ -2012,7 +2012,7 @@ module rendalli { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 161, 74)) fusicaudus() : sagitta.stolzmanni { var x : sagitta.stolzmanni; () => { var y = this; }; return x; } ->fusicaudus : Symbol(fusicaudus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 161, 167)) +>fusicaudus : Symbol(zuluensis.fusicaudus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 161, 167)) >sagitta : Symbol(sagitta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 487, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 577, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 675, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 746, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 898, 1)) >stolzmanni : Symbol(sagitta.stolzmanni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 899, 16)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 162, 43)) @@ -2023,7 +2023,7 @@ module rendalli { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 162, 43)) gordonorum() : howi.angulatus { var x : howi.angulatus; () => { var y = this; }; return x; } ->gordonorum : Symbol(gordonorum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 162, 104)) +>gordonorum : Symbol(zuluensis.gordonorum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 162, 104)) >howi : Symbol(howi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 466, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 681, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 886, 1)) >angulatus : Symbol(howi.angulatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 467, 13)) >ruatanica : Symbol(ruatanica, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 100, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 244, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 959, 1)) @@ -2042,7 +2042,7 @@ module rendalli { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 163, 79)) ruber() : dammermani.siberu { var x : dammermani.siberu; () => { var y = this; }; return x; } ->ruber : Symbol(ruber, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 163, 176)) +>ruber : Symbol(zuluensis.ruber, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 163, 176)) >dammermani : Symbol(dammermani, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 591, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 913, 1)) >siberu : Symbol(dammermani.siberu, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 592, 19)) >lutreolus : Symbol(lutreolus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 355, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 719, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 855, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 872, 1)) @@ -2061,7 +2061,7 @@ module rendalli { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 164, 77)) desmarestianus() : julianae.steerii { var x : julianae.steerii; () => { var y = this; }; return x; } ->desmarestianus : Symbol(desmarestianus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 164, 177)) +>desmarestianus : Symbol(zuluensis.desmarestianus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 164, 177)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) >steerii : Symbol(julianae.steerii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 16, 17)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 165, 45)) @@ -2072,7 +2072,7 @@ module rendalli { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 165, 45)) lutillus() : nigra.dolichurus { var x : nigra.dolichurus; () => { var y = this; }; return x; } ->lutillus : Symbol(lutillus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 165, 104)) +>lutillus : Symbol(zuluensis.lutillus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 165, 104)) >nigra : Symbol(nigra, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 388, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 475, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 514, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 762, 1)) >dolichurus : Symbol(nigra.dolichurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 389, 14)) >howi : Symbol(howi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 466, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 681, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 886, 1)) @@ -2091,7 +2091,7 @@ module rendalli { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 166, 70)) salocco() : argurus.peninsulae { var x : argurus.peninsulae; () => { var y = this; }; return x; } ->salocco : Symbol(salocco, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 166, 160)) +>salocco : Symbol(zuluensis.salocco, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 166, 160)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) >peninsulae : Symbol(argurus.peninsulae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 931, 16)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 167, 40)) @@ -2107,7 +2107,7 @@ module rendalli { >T1 : Symbol(T1, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 169, 26)) floweri() : lavali.otion { var x : lavali.otion; () => { var y = this; }; return x; } ->floweri : Symbol(floweri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 169, 32)) +>floweri : Symbol(moojeni.floweri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 169, 32)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) >otion : Symbol(lavali.otion, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 270, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 170, 34)) @@ -2118,7 +2118,7 @@ module rendalli { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 170, 34)) montosa() : imperfecta.ciliolabrum { var x : imperfecta.ciliolabrum; () => { var y = this; }; return x; } ->montosa : Symbol(montosa, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 170, 89)) +>montosa : Symbol(moojeni.montosa, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 170, 89)) >imperfecta : Symbol(imperfecta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 785, 1)) >ciliolabrum : Symbol(imperfecta.ciliolabrum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 807, 5)) >Lanthanum : Symbol(Lanthanum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 106, 1)) @@ -2137,7 +2137,7 @@ module rendalli { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 171, 88)) miletus() : julianae.sumatrana { var x : julianae.sumatrana; () => { var y = this; }; return x; } ->miletus : Symbol(miletus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 171, 197)) +>miletus : Symbol(moojeni.miletus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 171, 197)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) >sumatrana : Symbol(julianae.sumatrana, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 58, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 172, 40)) @@ -2148,7 +2148,7 @@ module rendalli { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 172, 40)) heaneyi() : zuluensis { var x : zuluensis; () => { var y = this; }; return x; } ->heaneyi : Symbol(heaneyi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 172, 101)) +>heaneyi : Symbol(moojeni.heaneyi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 172, 101)) >zuluensis : Symbol(zuluensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 152, 17)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 173, 31)) >zuluensis : Symbol(zuluensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 152, 17)) @@ -2157,7 +2157,7 @@ module rendalli { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 173, 31)) marchei() : panglima.amphibius> { var x : panglima.amphibius>; () => { var y = this; }; return x; } ->marchei : Symbol(marchei, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 173, 83)) +>marchei : Symbol(moojeni.marchei, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 173, 83)) >panglima : Symbol(panglima, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 400, 1)) >amphibius : Symbol(panglima.amphibius, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 401, 17)) >patas : Symbol(patas, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 652, 1)) @@ -2184,7 +2184,7 @@ module rendalli { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 174, 117)) budini() : julianae.durangae { var x : julianae.durangae; () => { var y = this; }; return x; } ->budini : Symbol(budini, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 174, 255)) +>budini : Symbol(moojeni.budini, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 174, 255)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) >durangae : Symbol(julianae.durangae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 94, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 175, 38)) @@ -2195,7 +2195,7 @@ module rendalli { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 175, 38)) maggietaylorae() : trivirgatus.mixtus, imperfecta.subspinosus>, sagitta.stolzmanni> { var x : trivirgatus.mixtus, imperfecta.subspinosus>, sagitta.stolzmanni>; () => { var y = this; }; return x; } ->maggietaylorae : Symbol(maggietaylorae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 175, 98)) +>maggietaylorae : Symbol(moojeni.maggietaylorae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 175, 98)) >trivirgatus : Symbol(trivirgatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 186, 1)) >mixtus : Symbol(trivirgatus.mixtus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 197, 3)) >panglima : Symbol(panglima, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 400, 1)) @@ -2230,7 +2230,7 @@ module rendalli { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 176, 173)) poliocephalus() : julianae.gerbillus { var x : julianae.gerbillus; () => { var y = this; }; return x; } ->poliocephalus : Symbol(poliocephalus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 176, 360)) +>poliocephalus : Symbol(moojeni.poliocephalus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 176, 360)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) >gerbillus : Symbol(julianae.gerbillus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 67, 3)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) @@ -2249,7 +2249,7 @@ module rendalli { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 177, 86)) zibethicus() : minutus.inez { var x : minutus.inez; () => { var y = this; }; return x; } ->zibethicus : Symbol(zibethicus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 177, 187)) +>zibethicus : Symbol(moojeni.zibethicus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 177, 187)) >minutus : Symbol(minutus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 433, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 492, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 848, 1)) >inez : Symbol(minutus.inez, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 493, 16)) >sagitta : Symbol(sagitta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 487, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 577, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 675, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 746, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 898, 1)) @@ -2268,7 +2268,7 @@ module rendalli { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 178, 78)) biacensis() : howi.coludo { var x : howi.coludo; () => { var y = this; }; return x; } ->biacensis : Symbol(biacensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 178, 174)) +>biacensis : Symbol(moojeni.biacensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 178, 174)) >howi : Symbol(howi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 466, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 681, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 886, 1)) >coludo : Symbol(howi.coludo, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 887, 13)) >quasiater : Symbol(quasiater, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 236, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 422, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 813, 1)) @@ -2295,7 +2295,7 @@ module rendalli { >falconeri : Symbol(trivirgatus.falconeri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 210, 3)) salvanius() : howi.coludo { var x : howi.coludo; () => { var y = this; }; return x; } ->salvanius : Symbol(salvanius, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 181, 64)) +>salvanius : Symbol(crenulata.salvanius, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 181, 64)) >howi : Symbol(howi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 466, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 681, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 886, 1)) >coludo : Symbol(howi.coludo, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 887, 13)) >howi : Symbol(howi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 466, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 681, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 886, 1)) @@ -2314,7 +2314,7 @@ module rendalli { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 182, 75)) maritimus() : ruatanica.americanus { var x : ruatanica.americanus; () => { var y = this; }; return x; } ->maritimus : Symbol(maritimus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 182, 169)) +>maritimus : Symbol(crenulata.maritimus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 182, 169)) >ruatanica : Symbol(ruatanica, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 100, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 244, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 959, 1)) >americanus : Symbol(ruatanica.americanus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 245, 18)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 183, 44)) @@ -2325,7 +2325,7 @@ module rendalli { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 183, 44)) edax() : lutreolus.cor>, rionegrensis.caniventer> { var x : lutreolus.cor>, rionegrensis.caniventer>; () => { var y = this; }; return x; } ->edax : Symbol(edax, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 183, 107)) +>edax : Symbol(crenulata.edax, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 183, 107)) >lutreolus : Symbol(lutreolus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 355, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 719, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 855, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 872, 1)) >cor : Symbol(lutreolus.cor, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 873, 18)) >imperfecta : Symbol(imperfecta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 785, 1)) @@ -2369,7 +2369,7 @@ module trivirgatus { >T1 : Symbol(T1, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 188, 30)) nivalis() : dogramacii.kaiseri { var x : dogramacii.kaiseri; () => { var y = this; }; return x; } ->nivalis : Symbol(nivalis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 188, 36)) +>nivalis : Symbol(tumidifrons.nivalis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 188, 36)) >dogramacii : Symbol(dogramacii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 314, 1)) >kaiseri : Symbol(dogramacii.kaiseri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 329, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 189, 40)) @@ -2380,7 +2380,7 @@ module trivirgatus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 189, 40)) vestitus() : lavali.xanthognathus { var x : lavali.xanthognathus; () => { var y = this; }; return x; } ->vestitus : Symbol(vestitus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 189, 101)) +>vestitus : Symbol(tumidifrons.vestitus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 189, 101)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) >xanthognathus : Symbol(lavali.xanthognathus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 285, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 190, 43)) @@ -2391,7 +2391,7 @@ module trivirgatus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 190, 43)) aequatorius() : rionegrensis.caniventer { var x : rionegrensis.caniventer; () => { var y = this; }; return x; } ->aequatorius : Symbol(aequatorius, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 190, 106)) +>aequatorius : Symbol(tumidifrons.aequatorius, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 190, 106)) >rionegrensis : Symbol(rionegrensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 0, 0)) >caniventer : Symbol(rionegrensis.caniventer, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 0, 21)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 191, 49)) @@ -2402,7 +2402,7 @@ module trivirgatus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 191, 49)) scherman() : oconnelli { var x : oconnelli; () => { var y = this; }; return x; } ->scherman : Symbol(scherman, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 191, 115)) +>scherman : Symbol(tumidifrons.scherman, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 191, 115)) >oconnelli : Symbol(oconnelli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 219, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 192, 32)) >oconnelli : Symbol(oconnelli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 219, 3)) @@ -2411,7 +2411,7 @@ module trivirgatus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 192, 32)) improvisum() : argurus.peninsulae { var x : argurus.peninsulae; () => { var y = this; }; return x; } ->improvisum : Symbol(improvisum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 192, 84)) +>improvisum : Symbol(tumidifrons.improvisum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 192, 84)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) >peninsulae : Symbol(argurus.peninsulae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 931, 16)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 193, 43)) @@ -2422,7 +2422,7 @@ module trivirgatus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 193, 43)) cervinipes() : panglima.abidi { var x : panglima.abidi; () => { var y = this; }; return x; } ->cervinipes : Symbol(cervinipes, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 193, 104)) +>cervinipes : Symbol(tumidifrons.cervinipes, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 193, 104)) >panglima : Symbol(panglima, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 400, 1)) >abidi : Symbol(panglima.abidi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 414, 5)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) @@ -2441,7 +2441,7 @@ module trivirgatus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 194, 75)) audax() : dogramacii.robustulus { var x : dogramacii.robustulus; () => { var y = this; }; return x; } ->audax : Symbol(audax, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 194, 168)) +>audax : Symbol(tumidifrons.audax, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 194, 168)) >dogramacii : Symbol(dogramacii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 314, 1)) >robustulus : Symbol(dogramacii.robustulus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 315, 19)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 195, 41)) @@ -2452,7 +2452,7 @@ module trivirgatus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 195, 41)) vallinus() : sagitta.sicarius { var x : sagitta.sicarius; () => { var y = this; }; return x; } ->vallinus : Symbol(vallinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 195, 105)) +>vallinus : Symbol(tumidifrons.vallinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 195, 105)) >sagitta : Symbol(sagitta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 487, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 577, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 675, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 746, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 898, 1)) >sicarius : Symbol(sagitta.sicarius, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 676, 16)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) @@ -2487,7 +2487,7 @@ module trivirgatus { >daphaenodon : Symbol(macrorhinos.daphaenodon, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 737, 20)) ochrogaster() : dogramacii.aurata { var x : dogramacii.aurata; () => { var y = this; }; return x; } ->ochrogaster : Symbol(ochrogaster, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 198, 138)) +>ochrogaster : Symbol(mixtus.ochrogaster, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 198, 138)) >dogramacii : Symbol(dogramacii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 314, 1)) >aurata : Symbol(dogramacii.aurata, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 344, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 199, 43)) @@ -2498,7 +2498,7 @@ module trivirgatus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 199, 43)) bryophilus() : macrorhinos.marmosurus>> { var x : macrorhinos.marmosurus>>; () => { var y = this; }; return x; } ->bryophilus : Symbol(bryophilus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 199, 103)) +>bryophilus : Symbol(mixtus.bryophilus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 199, 103)) >macrorhinos : Symbol(macrorhinos, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 461, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 497, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 736, 1)) >marmosurus : Symbol(macrorhinos.marmosurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 462, 20)) >dogramacii : Symbol(dogramacii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 314, 1)) @@ -2533,7 +2533,7 @@ module trivirgatus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 200, 173)) liechtensteini() : rendalli.zuluensis { var x : rendalli.zuluensis; () => { var y = this; }; return x; } ->liechtensteini : Symbol(liechtensteini, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 200, 364)) +>liechtensteini : Symbol(mixtus.liechtensteini, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 200, 364)) >rendalli : Symbol(rendalli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 151, 1)) >zuluensis : Symbol(rendalli.zuluensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 152, 17)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 201, 47)) @@ -2544,7 +2544,7 @@ module trivirgatus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 201, 47)) crawfordi() : howi.coludo> { var x : howi.coludo>; () => { var y = this; }; return x; } ->crawfordi : Symbol(crawfordi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 201, 108)) +>crawfordi : Symbol(mixtus.crawfordi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 201, 108)) >howi : Symbol(howi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 466, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 681, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 886, 1)) >coludo : Symbol(howi.coludo, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 887, 13)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) @@ -2571,7 +2571,7 @@ module trivirgatus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 202, 114)) hypsibia() : lavali.thaeleri { var x : lavali.thaeleri; () => { var y = this; }; return x; } ->hypsibia : Symbol(hypsibia, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 202, 247)) +>hypsibia : Symbol(mixtus.hypsibia, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 202, 247)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) >thaeleri : Symbol(lavali.thaeleri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 299, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 203, 38)) @@ -2582,7 +2582,7 @@ module trivirgatus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 203, 38)) matacus() : panglima.fundatus, lavali.beisa>, dammermani.melanops> { var x : panglima.fundatus, lavali.beisa>, dammermani.melanops>; () => { var y = this; }; return x; } ->matacus : Symbol(matacus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 203, 96)) +>matacus : Symbol(mixtus.matacus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 203, 96)) >panglima : Symbol(panglima, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 400, 1)) >fundatus : Symbol(panglima.fundatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 409, 5)) >panamensis : Symbol(panamensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 501, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 986, 1)) @@ -2615,7 +2615,7 @@ module trivirgatus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 204, 135)) demidoff() : caurinus.johorensis { var x : caurinus.johorensis; () => { var y = this; }; return x; } ->demidoff : Symbol(demidoff, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 204, 291)) +>demidoff : Symbol(mixtus.demidoff, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 204, 291)) >caurinus : Symbol(caurinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 449, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 836, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 976, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1007, 1)) >johorensis : Symbol(caurinus.johorensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 977, 17)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) @@ -2639,7 +2639,7 @@ module trivirgatus { >T1 : Symbol(T1, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 207, 24)) balensis() : samarensis.pallidus { var x : samarensis.pallidus; () => { var y = this; }; return x; } ->balensis : Symbol(balensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 207, 30)) +>balensis : Symbol(lotor.balensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 207, 30)) >samarensis : Symbol(samarensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 531, 1)) >pallidus : Symbol(samarensis.pallidus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 563, 5)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 208, 42)) @@ -2650,7 +2650,7 @@ module trivirgatus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 208, 42)) pullata() : rionegrensis.veraecrucis { var x : rionegrensis.veraecrucis; () => { var y = this; }; return x; } ->pullata : Symbol(pullata, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 208, 104)) +>pullata : Symbol(lotor.pullata, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 208, 104)) >rionegrensis : Symbol(rionegrensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 0, 0)) >veraecrucis : Symbol(rionegrensis.veraecrucis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 7, 3)) >quasiater : Symbol(quasiater, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 236, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 422, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 813, 1)) @@ -2672,7 +2672,7 @@ module trivirgatus { >falconeri : Symbol(falconeri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 210, 3)) cabrali() : rendalli.moojeni>, daubentonii.arboreus> { var x : rendalli.moojeni>, daubentonii.arboreus>; () => { var y = this; }; return x; } ->cabrali : Symbol(cabrali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 211, 26)) +>cabrali : Symbol(falconeri.cabrali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 211, 26)) >rendalli : Symbol(rendalli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 151, 1)) >moojeni : Symbol(rendalli.moojeni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 168, 3)) >imperfecta : Symbol(imperfecta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 785, 1)) @@ -2715,7 +2715,7 @@ module trivirgatus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 212, 203)) gouldi() : nigra.dolichurus>, patas.uralensis> { var x : nigra.dolichurus>, patas.uralensis>; () => { var y = this; }; return x; } ->gouldi : Symbol(gouldi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 212, 427)) +>gouldi : Symbol(falconeri.gouldi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 212, 427)) >nigra : Symbol(nigra, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 388, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 475, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 514, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 762, 1)) >dolichurus : Symbol(nigra.dolichurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 389, 14)) >imperfecta : Symbol(imperfecta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 785, 1)) @@ -2750,7 +2750,7 @@ module trivirgatus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 213, 139)) fuscicollis() : samarensis.pelurus> { var x : samarensis.pelurus>; () => { var y = this; }; return x; } ->fuscicollis : Symbol(fuscicollis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 213, 300)) +>fuscicollis : Symbol(falconeri.fuscicollis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 213, 300)) >samarensis : Symbol(samarensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 531, 1)) >pelurus : Symbol(samarensis.pelurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 532, 19)) >dammermani : Symbol(dammermani, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 591, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 913, 1)) @@ -2777,7 +2777,7 @@ module trivirgatus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 214, 126)) martiensseni() : sagitta.cinereus>, dogramacii.koepckeae> { var x : sagitta.cinereus>, dogramacii.koepckeae>; () => { var y = this; }; return x; } ->martiensseni : Symbol(martiensseni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 214, 269)) +>martiensseni : Symbol(falconeri.martiensseni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 214, 269)) >sagitta : Symbol(sagitta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 487, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 577, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 675, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 746, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 898, 1)) >cinereus : Symbol(sagitta.cinereus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 747, 16)) >imperfecta : Symbol(imperfecta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 785, 1)) @@ -2812,7 +2812,7 @@ module trivirgatus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 215, 166)) gaoligongensis() : dogramacii.koepckeae { var x : dogramacii.koepckeae; () => { var y = this; }; return x; } ->gaoligongensis : Symbol(gaoligongensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 215, 348)) +>gaoligongensis : Symbol(falconeri.gaoligongensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 215, 348)) >dogramacii : Symbol(dogramacii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 314, 1)) >koepckeae : Symbol(dogramacii.koepckeae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 326, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 216, 49)) @@ -2823,7 +2823,7 @@ module trivirgatus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 216, 49)) shawi() : minutus.inez> { var x : minutus.inez>; () => { var y = this; }; return x; } ->shawi : Symbol(shawi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 216, 112)) +>shawi : Symbol(falconeri.shawi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 216, 112)) >minutus : Symbol(minutus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 433, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 492, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 848, 1)) >inez : Symbol(minutus.inez, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 493, 16)) >sagitta : Symbol(sagitta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 487, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 577, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 675, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 746, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 898, 1)) @@ -2850,7 +2850,7 @@ module trivirgatus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 217, 122)) gmelini() : rionegrensis.caniventer { var x : rionegrensis.caniventer; () => { var y = this; }; return x; } ->gmelini : Symbol(gmelini, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 217, 267)) +>gmelini : Symbol(falconeri.gmelini, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 217, 267)) >rionegrensis : Symbol(rionegrensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 0, 0)) >caniventer : Symbol(rionegrensis.caniventer, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 0, 21)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 218, 45)) @@ -2864,7 +2864,7 @@ module trivirgatus { >oconnelli : Symbol(oconnelli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 219, 3)) youngsoni() : nigra.thalia { var x : nigra.thalia; () => { var y = this; }; return x; } ->youngsoni : Symbol(youngsoni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 220, 26)) +>youngsoni : Symbol(oconnelli.youngsoni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 220, 26)) >nigra : Symbol(nigra, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 388, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 475, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 514, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 762, 1)) >thalia : Symbol(nigra.thalia, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 476, 14)) >patas : Symbol(patas, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 652, 1)) @@ -2883,7 +2883,7 @@ module trivirgatus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 221, 77)) terrestris() : macrorhinos.konganensis { var x : macrorhinos.konganensis; () => { var y = this; }; return x; } ->terrestris : Symbol(terrestris, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 221, 173)) +>terrestris : Symbol(oconnelli.terrestris, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 221, 173)) >macrorhinos : Symbol(macrorhinos, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 461, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 497, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 736, 1)) >konganensis : Symbol(macrorhinos.konganensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 498, 20)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 222, 48)) @@ -2894,7 +2894,7 @@ module trivirgatus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 222, 48)) chrysopus() : sagitta.sicarius> { var x : sagitta.sicarius>; () => { var y = this; }; return x; } ->chrysopus : Symbol(chrysopus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 222, 114)) +>chrysopus : Symbol(oconnelli.chrysopus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 222, 114)) >sagitta : Symbol(sagitta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 487, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 577, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 675, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 746, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 898, 1)) >sicarius : Symbol(sagitta.sicarius, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 676, 16)) >dogramacii : Symbol(dogramacii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 314, 1)) @@ -2921,7 +2921,7 @@ module trivirgatus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 223, 121)) fuscomurina() : argurus.peninsulae { var x : argurus.peninsulae; () => { var y = this; }; return x; } ->fuscomurina : Symbol(fuscomurina, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 223, 261)) +>fuscomurina : Symbol(oconnelli.fuscomurina, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 223, 261)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) >peninsulae : Symbol(argurus.peninsulae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 931, 16)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 224, 44)) @@ -2932,7 +2932,7 @@ module trivirgatus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 224, 44)) hellwaldii() : nigra.gracilis, petrophilus.sodyi> { var x : nigra.gracilis, petrophilus.sodyi>; () => { var y = this; }; return x; } ->hellwaldii : Symbol(hellwaldii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 224, 105)) +>hellwaldii : Symbol(oconnelli.hellwaldii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 224, 105)) >nigra : Symbol(nigra, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 388, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 475, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 514, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 762, 1)) >gracilis : Symbol(nigra.gracilis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 515, 14)) >panamensis : Symbol(panamensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 501, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 986, 1)) @@ -2967,7 +2967,7 @@ module trivirgatus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 225, 160)) aenea() : argurus.luctuosa { var x : argurus.luctuosa; () => { var y = this; }; return x; } ->aenea : Symbol(aenea, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 225, 338)) +>aenea : Symbol(oconnelli.aenea, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 225, 338)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) >luctuosa : Symbol(argurus.luctuosa, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 982, 16)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 226, 36)) @@ -2978,7 +2978,7 @@ module trivirgatus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 226, 36)) perrini() : quasiater.bobrinskoi { var x : quasiater.bobrinskoi; () => { var y = this; }; return x; } ->perrini : Symbol(perrini, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 226, 95)) +>perrini : Symbol(oconnelli.perrini, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 226, 95)) >quasiater : Symbol(quasiater, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 236, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 422, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 813, 1)) >bobrinskoi : Symbol(quasiater.bobrinskoi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 237, 18)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 227, 42)) @@ -2989,7 +2989,7 @@ module trivirgatus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 227, 42)) entellus() : dammermani.melanops { var x : dammermani.melanops; () => { var y = this; }; return x; } ->entellus : Symbol(entellus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 227, 105)) +>entellus : Symbol(oconnelli.entellus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 227, 105)) >dammermani : Symbol(dammermani, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 591, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 913, 1)) >melanops : Symbol(dammermani.melanops, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 914, 19)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 228, 42)) @@ -3000,7 +3000,7 @@ module trivirgatus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 228, 42)) krebsii() : rionegrensis.veraecrucis { var x : rionegrensis.veraecrucis; () => { var y = this; }; return x; } ->krebsii : Symbol(krebsii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 228, 104)) +>krebsii : Symbol(oconnelli.krebsii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 228, 104)) >rionegrensis : Symbol(rionegrensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 0, 0)) >veraecrucis : Symbol(rionegrensis.veraecrucis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 7, 3)) >rionegrensis : Symbol(rionegrensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 0, 0)) @@ -3019,7 +3019,7 @@ module trivirgatus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 229, 90)) cephalotes() : lutreolus.schlegeli { var x : lutreolus.schlegeli; () => { var y = this; }; return x; } ->cephalotes : Symbol(cephalotes, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 229, 201)) +>cephalotes : Symbol(oconnelli.cephalotes, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 229, 201)) >lutreolus : Symbol(lutreolus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 355, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 719, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 855, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 872, 1)) >schlegeli : Symbol(lutreolus.schlegeli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 356, 18)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 230, 44)) @@ -3030,7 +3030,7 @@ module trivirgatus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 230, 44)) molossinus() : daubentonii.nigricans> { var x : daubentonii.nigricans>; () => { var y = this; }; return x; } ->molossinus : Symbol(molossinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 230, 106)) +>molossinus : Symbol(oconnelli.molossinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 230, 106)) >daubentonii : Symbol(daubentonii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 471, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 586, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 636, 1)) >nigricans : Symbol(daubentonii.nigricans, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 587, 20)) >quasiater : Symbol(quasiater, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 236, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 422, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 813, 1)) @@ -3057,7 +3057,7 @@ module trivirgatus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 231, 136)) luisi() : dogramacii.robustulus { var x : dogramacii.robustulus; () => { var y = this; }; return x; } ->luisi : Symbol(luisi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 231, 290)) +>luisi : Symbol(oconnelli.luisi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 231, 290)) >dogramacii : Symbol(dogramacii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 314, 1)) >robustulus : Symbol(dogramacii.robustulus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 315, 19)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 232, 41)) @@ -3068,7 +3068,7 @@ module trivirgatus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 232, 41)) ceylonicus() : rionegrensis.caniventer { var x : rionegrensis.caniventer; () => { var y = this; }; return x; } ->ceylonicus : Symbol(ceylonicus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 232, 105)) +>ceylonicus : Symbol(oconnelli.ceylonicus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 232, 105)) >rionegrensis : Symbol(rionegrensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 0, 0)) >caniventer : Symbol(rionegrensis.caniventer, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 0, 21)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 233, 48)) @@ -3079,7 +3079,7 @@ module trivirgatus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 233, 48)) ralli() : lavali.xanthognathus { var x : lavali.xanthognathus; () => { var y = this; }; return x; } ->ralli : Symbol(ralli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 233, 114)) +>ralli : Symbol(oconnelli.ralli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 233, 114)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) >xanthognathus : Symbol(lavali.xanthognathus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 285, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 234, 40)) @@ -3097,7 +3097,7 @@ module quasiater { >bobrinskoi : Symbol(bobrinskoi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 237, 18)) crassicaudatus() : samarensis.cahirinus { var x : samarensis.cahirinus; () => { var y = this; }; return x; } ->crassicaudatus : Symbol(crassicaudatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 238, 27)) +>crassicaudatus : Symbol(bobrinskoi.crassicaudatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 238, 27)) >samarensis : Symbol(samarensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 531, 1)) >cahirinus : Symbol(samarensis.cahirinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 569, 5)) >macrorhinos : Symbol(macrorhinos, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 461, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 497, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 736, 1)) @@ -3116,7 +3116,7 @@ module quasiater { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 239, 92)) mulatta() : argurus.oreas { var x : argurus.oreas; () => { var y = this; }; return x; } ->mulatta : Symbol(mulatta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 239, 198)) +>mulatta : Symbol(bobrinskoi.mulatta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 239, 198)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) >oreas : Symbol(argurus.oreas, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 625, 16)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 240, 35)) @@ -3127,7 +3127,7 @@ module quasiater { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 240, 35)) ansorgei() : rendalli.moojeni, gabriellae.echinatus> { var x : rendalli.moojeni, gabriellae.echinatus>; () => { var y = this; }; return x; } ->ansorgei : Symbol(ansorgei, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 240, 91)) +>ansorgei : Symbol(bobrinskoi.ansorgei, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 240, 91)) >rendalli : Symbol(rendalli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 151, 1)) >moojeni : Symbol(rendalli.moojeni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 168, 3)) >panglima : Symbol(panglima, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 400, 1)) @@ -3154,7 +3154,7 @@ module quasiater { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 241, 123)) Copper() : argurus.netscheri { var x : argurus.netscheri; () => { var y = this; }; return x; } ->Copper : Symbol(Copper, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 241, 266)) +>Copper : Symbol(bobrinskoi.Copper, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 241, 266)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) >netscheri : Symbol(argurus.netscheri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 943, 16)) >quasiater : Symbol(quasiater, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 236, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 422, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 813, 1)) @@ -3187,7 +3187,7 @@ module ruatanica { >foina : Symbol(lutreolus.foina, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 856, 18)) nasoloi() : macrorhinos.konganensis { var x : macrorhinos.konganensis; () => { var y = this; }; return x; } ->nasoloi : Symbol(nasoloi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 246, 93)) +>nasoloi : Symbol(americanus.nasoloi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 246, 93)) >macrorhinos : Symbol(macrorhinos, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 461, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 497, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 736, 1)) >konganensis : Symbol(macrorhinos.konganensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 498, 20)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 247, 45)) @@ -3198,7 +3198,7 @@ module ruatanica { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 247, 45)) mystacalis() : howi.angulatus { var x : howi.angulatus; () => { var y = this; }; return x; } ->mystacalis : Symbol(mystacalis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 247, 111)) +>mystacalis : Symbol(americanus.mystacalis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 247, 111)) >howi : Symbol(howi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 466, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 681, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 886, 1)) >angulatus : Symbol(howi.angulatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 467, 13)) >quasiater : Symbol(quasiater, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 236, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 422, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 813, 1)) @@ -3217,7 +3217,7 @@ module ruatanica { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 248, 83)) fardoulisi() : trivirgatus.oconnelli { var x : trivirgatus.oconnelli; () => { var y = this; }; return x; } ->fardoulisi : Symbol(fardoulisi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 248, 184)) +>fardoulisi : Symbol(americanus.fardoulisi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 248, 184)) >trivirgatus : Symbol(trivirgatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 186, 1)) >oconnelli : Symbol(trivirgatus.oconnelli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 219, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 249, 46)) @@ -3228,7 +3228,7 @@ module ruatanica { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 249, 46)) tumidus() : gabriellae.amicus { var x : gabriellae.amicus; () => { var y = this; }; return x; } ->tumidus : Symbol(tumidus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 249, 110)) +>tumidus : Symbol(americanus.tumidus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 249, 110)) >gabriellae : Symbol(gabriellae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 766, 1)) >amicus : Symbol(gabriellae.amicus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 769, 5)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 250, 39)) @@ -3253,7 +3253,7 @@ module lavali { >jugularis : Symbol(Lanthanum.jugularis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 134, 3)) setiger() : nigra.thalia { var x : nigra.thalia; () => { var y = this; }; return x; } ->setiger : Symbol(setiger, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 254, 96)) +>setiger : Symbol(wilsoni.setiger, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 254, 96)) >nigra : Symbol(nigra, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 388, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 475, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 514, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 762, 1)) >thalia : Symbol(nigra.thalia, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 476, 14)) >patas : Symbol(patas, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 652, 1)) @@ -3270,7 +3270,7 @@ module lavali { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 255, 60)) lorentzii() : imperfecta.subspinosus { var x : imperfecta.subspinosus; () => { var y = this; }; return x; } ->lorentzii : Symbol(lorentzii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 255, 141)) +>lorentzii : Symbol(wilsoni.lorentzii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 255, 141)) >imperfecta : Symbol(imperfecta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 785, 1)) >subspinosus : Symbol(imperfecta.subspinosus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 794, 5)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 256, 46)) @@ -3281,7 +3281,7 @@ module lavali { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 256, 46)) antisensis() : lutreolus.foina { var x : lutreolus.foina; () => { var y = this; }; return x; } ->antisensis : Symbol(antisensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 256, 111)) +>antisensis : Symbol(wilsoni.antisensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 256, 111)) >lutreolus : Symbol(lutreolus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 355, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 719, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 855, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 872, 1)) >foina : Symbol(lutreolus.foina, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 856, 18)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 257, 40)) @@ -3292,7 +3292,7 @@ module lavali { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 257, 40)) blossevillii() : dammermani.siberu { var x : dammermani.siberu; () => { var y = this; }; return x; } ->blossevillii : Symbol(blossevillii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 257, 98)) +>blossevillii : Symbol(wilsoni.blossevillii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 257, 98)) >dammermani : Symbol(dammermani, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 591, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 913, 1)) >siberu : Symbol(dammermani.siberu, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 592, 19)) >Lanthanum : Symbol(Lanthanum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 106, 1)) @@ -3311,7 +3311,7 @@ module lavali { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 258, 85)) bontanus() : rionegrensis.caniventer { var x : rionegrensis.caniventer; () => { var y = this; }; return x; } ->bontanus : Symbol(bontanus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 258, 186)) +>bontanus : Symbol(wilsoni.bontanus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 258, 186)) >rionegrensis : Symbol(rionegrensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 0, 0)) >caniventer : Symbol(rionegrensis.caniventer, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 0, 21)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 259, 46)) @@ -3322,7 +3322,7 @@ module lavali { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 259, 46)) caligata() : argurus.oreas { var x : argurus.oreas; () => { var y = this; }; return x; } ->caligata : Symbol(caligata, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 259, 112)) +>caligata : Symbol(wilsoni.caligata, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 259, 112)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) >oreas : Symbol(argurus.oreas, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 625, 16)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 260, 36)) @@ -3333,7 +3333,7 @@ module lavali { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 260, 36)) franqueti() : panglima.amphibius, imperfecta.subspinosus> { var x : panglima.amphibius, imperfecta.subspinosus>; () => { var y = this; }; return x; } ->franqueti : Symbol(franqueti, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 260, 92)) +>franqueti : Symbol(wilsoni.franqueti, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 260, 92)) >panglima : Symbol(panglima, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 400, 1)) >amphibius : Symbol(panglima.amphibius, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 401, 17)) >gabriellae : Symbol(gabriellae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 766, 1)) @@ -3360,7 +3360,7 @@ module lavali { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 261, 128)) roberti() : julianae.acariensis { var x : julianae.acariensis; () => { var y = this; }; return x; } ->roberti : Symbol(roberti, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 261, 275)) +>roberti : Symbol(wilsoni.roberti, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 261, 275)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) >acariensis : Symbol(julianae.acariensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 80, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 262, 41)) @@ -3371,7 +3371,7 @@ module lavali { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 262, 41)) degelidus() : chrysaeolus.sarasinorum { var x : chrysaeolus.sarasinorum; () => { var y = this; }; return x; } ->degelidus : Symbol(degelidus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 262, 103)) +>degelidus : Symbol(wilsoni.degelidus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 262, 103)) >chrysaeolus : Symbol(chrysaeolus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 602, 1)) >sarasinorum : Symbol(chrysaeolus.sarasinorum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 603, 20)) >Lanthanum : Symbol(Lanthanum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 106, 1)) @@ -3390,7 +3390,7 @@ module lavali { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 263, 92)) amoenus() : quasiater.carolinensis { var x : quasiater.carolinensis; () => { var y = this; }; return x; } ->amoenus : Symbol(amoenus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 263, 203)) +>amoenus : Symbol(wilsoni.amoenus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 263, 203)) >quasiater : Symbol(quasiater, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 236, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 422, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 813, 1)) >carolinensis : Symbol(quasiater.carolinensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 423, 18)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 264, 44)) @@ -3401,7 +3401,7 @@ module lavali { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 264, 44)) kob() : trivirgatus.lotor { var x : trivirgatus.lotor; () => { var y = this; }; return x; } ->kob : Symbol(kob, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 264, 109)) +>kob : Symbol(wilsoni.kob, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 264, 109)) >trivirgatus : Symbol(trivirgatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 186, 1)) >lotor : Symbol(trivirgatus.lotor, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 206, 3)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) @@ -3418,7 +3418,7 @@ module lavali { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 265, 57)) csorbai() : caurinus.johorensis { var x : caurinus.johorensis; () => { var y = this; }; return x; } ->csorbai : Symbol(csorbai, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 265, 139)) +>csorbai : Symbol(wilsoni.csorbai, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 265, 139)) >caurinus : Symbol(caurinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 449, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 836, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 976, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1007, 1)) >johorensis : Symbol(caurinus.johorensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 977, 17)) >caurinus : Symbol(caurinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 449, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 836, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 976, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1007, 1)) @@ -3437,7 +3437,7 @@ module lavali { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 266, 81)) dorsata() : gabriellae.echinatus { var x : gabriellae.echinatus; () => { var y = this; }; return x; } ->dorsata : Symbol(dorsata, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 266, 183)) +>dorsata : Symbol(wilsoni.dorsata, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 266, 183)) >gabriellae : Symbol(gabriellae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 766, 1)) >echinatus : Symbol(gabriellae.echinatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 781, 5)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 267, 42)) @@ -3461,7 +3461,7 @@ module lavali { >marcanoi : Symbol(howi.marcanoi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 682, 13)) bonaerensis() : provocax.melanoleuca { var x : provocax.melanoleuca; () => { var y = this; }; return x; } ->bonaerensis : Symbol(bonaerensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 271, 72)) +>bonaerensis : Symbol(otion.bonaerensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 271, 72)) >provocax : Symbol(provocax, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 669, 1)) >melanoleuca : Symbol(provocax.melanoleuca, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 670, 17)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 272, 46)) @@ -3472,7 +3472,7 @@ module lavali { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 272, 46)) dussumieri() : nigra.gracilis { var x : nigra.gracilis; () => { var y = this; }; return x; } ->dussumieri : Symbol(dussumieri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 272, 109)) +>dussumieri : Symbol(otion.dussumieri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 272, 109)) >nigra : Symbol(nigra, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 388, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 475, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 514, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 762, 1)) >gracilis : Symbol(nigra.gracilis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 515, 14)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) @@ -3491,7 +3491,7 @@ module lavali { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 273, 77)) osvaldoreigi() : julianae.albidens { var x : julianae.albidens; () => { var y = this; }; return x; } ->osvaldoreigi : Symbol(osvaldoreigi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 273, 172)) +>osvaldoreigi : Symbol(otion.osvaldoreigi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 273, 172)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) >albidens : Symbol(julianae.albidens, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 34, 3)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) @@ -3510,7 +3510,7 @@ module lavali { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 274, 86)) grevyi() : samarensis.pallidus { var x : samarensis.pallidus; () => { var y = this; }; return x; } ->grevyi : Symbol(grevyi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 274, 188)) +>grevyi : Symbol(otion.grevyi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 274, 188)) >samarensis : Symbol(samarensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 531, 1)) >pallidus : Symbol(samarensis.pallidus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 563, 5)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 275, 40)) @@ -3521,7 +3521,7 @@ module lavali { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 275, 40)) hirtula() : lepturus { var x : lepturus; () => { var y = this; }; return x; } ->hirtula : Symbol(hirtula, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 275, 102)) +>hirtula : Symbol(otion.hirtula, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 275, 102)) >lepturus : Symbol(lepturus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 309, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 276, 30)) >lepturus : Symbol(lepturus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 309, 3)) @@ -3530,7 +3530,7 @@ module lavali { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 276, 30)) cristatus() : argurus.luctuosa { var x : argurus.luctuosa; () => { var y = this; }; return x; } ->cristatus : Symbol(cristatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 276, 81)) +>cristatus : Symbol(otion.cristatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 276, 81)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) >luctuosa : Symbol(argurus.luctuosa, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 982, 16)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 277, 40)) @@ -3541,7 +3541,7 @@ module lavali { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 277, 40)) darlingtoni() : sagitta.leptoceros { var x : sagitta.leptoceros; () => { var y = this; }; return x; } ->darlingtoni : Symbol(darlingtoni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 277, 99)) +>darlingtoni : Symbol(otion.darlingtoni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 277, 99)) >sagitta : Symbol(sagitta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 487, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 577, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 675, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 746, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 898, 1)) >leptoceros : Symbol(sagitta.leptoceros, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 578, 16)) >wilsoni : Symbol(wilsoni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 253, 15)) @@ -3558,7 +3558,7 @@ module lavali { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 278, 76)) fontanierii() : panamensis.setulosus>, lutreolus.foina> { var x : panamensis.setulosus>, lutreolus.foina>; () => { var y = this; }; return x; } ->fontanierii : Symbol(fontanierii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 278, 169)) +>fontanierii : Symbol(otion.fontanierii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 278, 169)) >panamensis : Symbol(panamensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 501, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 986, 1)) >setulosus : Symbol(panamensis.setulosus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 987, 19)) >samarensis : Symbol(samarensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 531, 1)) @@ -3591,7 +3591,7 @@ module lavali { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 279, 161)) umbrosus() : howi.marcanoi { var x : howi.marcanoi; () => { var y = this; }; return x; } ->umbrosus : Symbol(umbrosus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 279, 339)) +>umbrosus : Symbol(otion.umbrosus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 279, 339)) >howi : Symbol(howi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 466, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 681, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 886, 1)) >marcanoi : Symbol(howi.marcanoi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 682, 13)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 280, 36)) @@ -3602,7 +3602,7 @@ module lavali { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 280, 36)) chiriquinus() : imperfecta.lasiurus { var x : imperfecta.lasiurus; () => { var y = this; }; return x; } ->chiriquinus : Symbol(chiriquinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 280, 92)) +>chiriquinus : Symbol(otion.chiriquinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 280, 92)) >imperfecta : Symbol(imperfecta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 785, 1)) >lasiurus : Symbol(imperfecta.lasiurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 786, 19)) >caurinus : Symbol(caurinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 449, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 836, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 976, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1007, 1)) @@ -3621,7 +3621,7 @@ module lavali { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 281, 83)) orarius() : lutreolus.schlegeli { var x : lutreolus.schlegeli; () => { var y = this; }; return x; } ->orarius : Symbol(orarius, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 281, 183)) +>orarius : Symbol(otion.orarius, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 281, 183)) >lutreolus : Symbol(lutreolus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 355, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 719, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 855, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 872, 1)) >schlegeli : Symbol(lutreolus.schlegeli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 356, 18)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 282, 41)) @@ -3632,7 +3632,7 @@ module lavali { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 282, 41)) ilaeus() : caurinus.mahaganus { var x : caurinus.mahaganus; () => { var y = this; }; return x; } ->ilaeus : Symbol(ilaeus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 282, 103)) +>ilaeus : Symbol(otion.ilaeus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 282, 103)) >caurinus : Symbol(caurinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 449, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 836, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 976, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1007, 1)) >mahaganus : Symbol(caurinus.mahaganus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 450, 17)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) @@ -3651,7 +3651,7 @@ module lavali { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 283, 80)) musschenbroekii() : trivirgatus.falconeri { var x : trivirgatus.falconeri; () => { var y = this; }; return x; } ->musschenbroekii : Symbol(musschenbroekii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 283, 182)) +>musschenbroekii : Symbol(otion.musschenbroekii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 283, 182)) >trivirgatus : Symbol(trivirgatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 186, 1)) >falconeri : Symbol(trivirgatus.falconeri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 210, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 284, 51)) @@ -3665,7 +3665,7 @@ module lavali { >xanthognathus : Symbol(xanthognathus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 285, 3)) nanulus() : daubentonii.nigricans { var x : daubentonii.nigricans; () => { var y = this; }; return x; } ->nanulus : Symbol(nanulus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 286, 30)) +>nanulus : Symbol(xanthognathus.nanulus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 286, 30)) >daubentonii : Symbol(daubentonii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 471, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 586, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 636, 1)) >nigricans : Symbol(daubentonii.nigricans, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 587, 20)) >imperfecta : Symbol(imperfecta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 785, 1)) @@ -3684,7 +3684,7 @@ module lavali { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 287, 88)) albigena() : chrysaeolus.sarasinorum { var x : chrysaeolus.sarasinorum; () => { var y = this; }; return x; } ->albigena : Symbol(albigena, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 287, 197)) +>albigena : Symbol(xanthognathus.albigena, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 287, 197)) >chrysaeolus : Symbol(chrysaeolus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 602, 1)) >sarasinorum : Symbol(chrysaeolus.sarasinorum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 603, 20)) >caurinus : Symbol(caurinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 449, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 836, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 976, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1007, 1)) @@ -3703,7 +3703,7 @@ module lavali { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 288, 87)) onca() : sagitta.stolzmanni { var x : sagitta.stolzmanni; () => { var y = this; }; return x; } ->onca : Symbol(onca, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 288, 194)) +>onca : Symbol(xanthognathus.onca, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 288, 194)) >sagitta : Symbol(sagitta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 487, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 577, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 675, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 746, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 898, 1)) >stolzmanni : Symbol(sagitta.stolzmanni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 899, 16)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 289, 37)) @@ -3714,7 +3714,7 @@ module lavali { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 289, 37)) gunnii() : minutus.himalayana, nigra.thalia> { var x : minutus.himalayana, nigra.thalia>; () => { var y = this; }; return x; } ->gunnii : Symbol(gunnii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 289, 98)) +>gunnii : Symbol(xanthognathus.gunnii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 289, 98)) >minutus : Symbol(minutus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 433, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 492, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 848, 1)) >himalayana : Symbol(minutus.himalayana, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 434, 16)) >howi : Symbol(howi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 466, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 681, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 886, 1)) @@ -3747,7 +3747,7 @@ module lavali { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 290, 135)) apeco() : lutreolus.foina { var x : lutreolus.foina; () => { var y = this; }; return x; } ->apeco : Symbol(apeco, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 290, 292)) +>apeco : Symbol(xanthognathus.apeco, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 290, 292)) >lutreolus : Symbol(lutreolus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 355, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 719, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 855, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 872, 1)) >foina : Symbol(lutreolus.foina, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 856, 18)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 291, 35)) @@ -3758,7 +3758,7 @@ module lavali { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 291, 35)) variegates() : gabriellae.klossii { var x : gabriellae.klossii; () => { var y = this; }; return x; } ->variegates : Symbol(variegates, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 291, 93)) +>variegates : Symbol(xanthognathus.variegates, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 291, 93)) >gabriellae : Symbol(gabriellae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 766, 1)) >klossii : Symbol(gabriellae.klossii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 767, 19)) >wilsoni : Symbol(wilsoni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 253, 15)) @@ -3775,7 +3775,7 @@ module lavali { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 292, 73)) goudotii() : trivirgatus.falconeri { var x : trivirgatus.falconeri; () => { var y = this; }; return x; } ->goudotii : Symbol(goudotii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 292, 164)) +>goudotii : Symbol(xanthognathus.goudotii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 292, 164)) >trivirgatus : Symbol(trivirgatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 186, 1)) >falconeri : Symbol(trivirgatus.falconeri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 210, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 293, 44)) @@ -3786,7 +3786,7 @@ module lavali { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 293, 44)) pohlei() : Lanthanum.megalonyx { var x : Lanthanum.megalonyx; () => { var y = this; }; return x; } ->pohlei : Symbol(pohlei, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 293, 108)) +>pohlei : Symbol(xanthognathus.pohlei, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 293, 108)) >Lanthanum : Symbol(Lanthanum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 106, 1)) >megalonyx : Symbol(Lanthanum.megalonyx, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 124, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 294, 40)) @@ -3797,7 +3797,7 @@ module lavali { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 294, 40)) ineptus() : panamensis.setulosus { var x : panamensis.setulosus; () => { var y = this; }; return x; } ->ineptus : Symbol(ineptus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 294, 102)) +>ineptus : Symbol(xanthognathus.ineptus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 294, 102)) >panamensis : Symbol(panamensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 501, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 986, 1)) >setulosus : Symbol(panamensis.setulosus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 987, 19)) >xanthognathus : Symbol(xanthognathus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 285, 3)) @@ -3812,7 +3812,7 @@ module lavali { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 295, 64)) euryotis() : rendalli.moojeni> { var x : rendalli.moojeni>; () => { var y = this; }; return x; } ->euryotis : Symbol(euryotis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 295, 149)) +>euryotis : Symbol(xanthognathus.euryotis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 295, 149)) >rendalli : Symbol(rendalli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 151, 1)) >moojeni : Symbol(rendalli.moojeni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 168, 3)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) @@ -3839,7 +3839,7 @@ module lavali { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 296, 120)) maurisca() : Lanthanum.suillus { var x : Lanthanum.suillus; () => { var y = this; }; return x; } ->maurisca : Symbol(maurisca, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 296, 260)) +>maurisca : Symbol(xanthognathus.maurisca, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 296, 260)) >Lanthanum : Symbol(Lanthanum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 106, 1)) >suillus : Symbol(Lanthanum.suillus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 107, 18)) >rionegrensis : Symbol(rionegrensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 0, 0)) @@ -3858,7 +3858,7 @@ module lavali { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 297, 89)) coyhaiquensis() : caurinus.mahaganus, panglima.abidi>, lutreolus.punicus> { var x : caurinus.mahaganus, panglima.abidi>, lutreolus.punicus>; () => { var y = this; }; return x; } ->coyhaiquensis : Symbol(coyhaiquensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 297, 198)) +>coyhaiquensis : Symbol(xanthognathus.coyhaiquensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 297, 198)) >caurinus : Symbol(caurinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 449, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 836, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 976, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1007, 1)) >mahaganus : Symbol(caurinus.mahaganus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 450, 17)) >dammermani : Symbol(dammermani, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 591, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 913, 1)) @@ -3907,7 +3907,7 @@ module lavali { >oreas : Symbol(argurus.oreas, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 625, 16)) coromandra() : julianae.galapagoensis { var x : julianae.galapagoensis; () => { var y = this; }; return x; } ->coromandra : Symbol(coromandra, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 300, 47)) +>coromandra : Symbol(thaeleri.coromandra, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 300, 47)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) >galapagoensis : Symbol(julianae.galapagoensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 25, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 301, 47)) @@ -3918,7 +3918,7 @@ module lavali { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 301, 47)) parvipes() : nigra.dolichurus { var x : nigra.dolichurus; () => { var y = this; }; return x; } ->parvipes : Symbol(parvipes, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 301, 112)) +>parvipes : Symbol(thaeleri.parvipes, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 301, 112)) >nigra : Symbol(nigra, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 388, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 475, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 514, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 762, 1)) >dolichurus : Symbol(nigra.dolichurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 389, 14)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) @@ -3937,7 +3937,7 @@ module lavali { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 302, 78)) sponsorius() : rionegrensis.veraecrucis, julianae.steerii> { var x : rionegrensis.veraecrucis, julianae.steerii>; () => { var y = this; }; return x; } ->sponsorius : Symbol(sponsorius, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 302, 176)) +>sponsorius : Symbol(thaeleri.sponsorius, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 302, 176)) >rionegrensis : Symbol(rionegrensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 0, 0)) >veraecrucis : Symbol(rionegrensis.veraecrucis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 7, 3)) >chrysaeolus : Symbol(chrysaeolus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 602, 1)) @@ -3964,7 +3964,7 @@ module lavali { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 303, 133)) vates() : dogramacii.robustulus { var x : dogramacii.robustulus; () => { var y = this; }; return x; } ->vates : Symbol(vates, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 303, 284)) +>vates : Symbol(thaeleri.vates, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 303, 284)) >dogramacii : Symbol(dogramacii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 314, 1)) >robustulus : Symbol(dogramacii.robustulus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 315, 19)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 304, 41)) @@ -3975,7 +3975,7 @@ module lavali { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 304, 41)) roosmalenorum() : dogramacii.koepckeae { var x : dogramacii.koepckeae; () => { var y = this; }; return x; } ->roosmalenorum : Symbol(roosmalenorum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 304, 105)) +>roosmalenorum : Symbol(thaeleri.roosmalenorum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 304, 105)) >dogramacii : Symbol(dogramacii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 314, 1)) >koepckeae : Symbol(dogramacii.koepckeae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 326, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 305, 48)) @@ -3986,7 +3986,7 @@ module lavali { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 305, 48)) rubicola() : rendalli.moojeni, gabriellae.echinatus>> { var x : rendalli.moojeni, gabriellae.echinatus>>; () => { var y = this; }; return x; } ->rubicola : Symbol(rubicola, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 305, 111)) +>rubicola : Symbol(thaeleri.rubicola, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 305, 111)) >rendalli : Symbol(rendalli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 151, 1)) >moojeni : Symbol(rendalli.moojeni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 168, 3)) >rionegrensis : Symbol(rionegrensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 0, 0)) @@ -4021,7 +4021,7 @@ module lavali { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 306, 166)) ikonnikovi() : argurus.luctuosa { var x : argurus.luctuosa; () => { var y = this; }; return x; } ->ikonnikovi : Symbol(ikonnikovi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 306, 352)) +>ikonnikovi : Symbol(thaeleri.ikonnikovi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 306, 352)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) >luctuosa : Symbol(argurus.luctuosa, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 982, 16)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 307, 41)) @@ -4032,7 +4032,7 @@ module lavali { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 307, 41)) paramicrus() : imperfecta.ciliolabrum> { var x : imperfecta.ciliolabrum>; () => { var y = this; }; return x; } ->paramicrus : Symbol(paramicrus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 307, 100)) +>paramicrus : Symbol(thaeleri.paramicrus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 307, 100)) >imperfecta : Symbol(imperfecta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 785, 1)) >ciliolabrum : Symbol(imperfecta.ciliolabrum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 807, 5)) >otion : Symbol(otion, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 270, 3)) @@ -4067,7 +4067,7 @@ module lavali { >carolinensis : Symbol(quasiater.carolinensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 423, 18)) ferrumequinum() : argurus.netscheri { var x : argurus.netscheri; () => { var y = this; }; return x; } ->ferrumequinum : Symbol(ferrumequinum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 310, 96)) +>ferrumequinum : Symbol(lepturus.ferrumequinum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 310, 96)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) >netscheri : Symbol(argurus.netscheri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 943, 16)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) @@ -4086,7 +4086,7 @@ module lavali { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 311, 84)) aequalis() : sagitta.cinereus>, petrophilus.minutilla>, Lanthanum.jugularis> { var x : sagitta.cinereus>, petrophilus.minutilla>, Lanthanum.jugularis>; () => { var y = this; }; return x; } ->aequalis : Symbol(aequalis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 311, 183)) +>aequalis : Symbol(lepturus.aequalis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 311, 183)) >sagitta : Symbol(sagitta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 487, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 577, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 675, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 746, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 898, 1)) >cinereus : Symbol(sagitta.cinereus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 747, 16)) >petrophilus : Symbol(petrophilus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 715, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 823, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 998, 1)) @@ -4137,7 +4137,7 @@ module dogramacii { >wilsoni : Symbol(lavali.wilsoni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 253, 15)) fossor() : minutus.inez { var x : minutus.inez; () => { var y = this; }; return x; } ->fossor : Symbol(fossor, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 316, 50)) +>fossor : Symbol(robustulus.fossor, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 316, 50)) >minutus : Symbol(minutus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 433, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 492, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 848, 1)) >inez : Symbol(minutus.inez, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 493, 16)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) @@ -4156,7 +4156,7 @@ module dogramacii { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 317, 74)) humboldti() : sagitta.cinereus { var x : sagitta.cinereus; () => { var y = this; }; return x; } ->humboldti : Symbol(humboldti, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 317, 170)) +>humboldti : Symbol(robustulus.humboldti, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 317, 170)) >sagitta : Symbol(sagitta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 487, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 577, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 675, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 746, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 898, 1)) >cinereus : Symbol(sagitta.cinereus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 747, 16)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) @@ -4175,7 +4175,7 @@ module dogramacii { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 318, 77)) mexicana() : macrorhinos.konganensis { var x : macrorhinos.konganensis; () => { var y = this; }; return x; } ->mexicana : Symbol(mexicana, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 318, 173)) +>mexicana : Symbol(robustulus.mexicana, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 318, 173)) >macrorhinos : Symbol(macrorhinos, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 461, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 497, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 736, 1)) >konganensis : Symbol(macrorhinos.konganensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 498, 20)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 319, 46)) @@ -4186,7 +4186,7 @@ module dogramacii { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 319, 46)) martini() : julianae.oralis { var x : julianae.oralis; () => { var y = this; }; return x; } ->martini : Symbol(martini, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 319, 112)) +>martini : Symbol(robustulus.martini, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 319, 112)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) >oralis : Symbol(julianae.oralis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 43, 3)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) @@ -4205,7 +4205,7 @@ module dogramacii { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 320, 72)) beatus() : Lanthanum.jugularis { var x : Lanthanum.jugularis; () => { var y = this; }; return x; } ->beatus : Symbol(beatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 320, 165)) +>beatus : Symbol(robustulus.beatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 320, 165)) >Lanthanum : Symbol(Lanthanum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 106, 1)) >jugularis : Symbol(Lanthanum.jugularis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 134, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 321, 40)) @@ -4216,7 +4216,7 @@ module dogramacii { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 321, 40)) leporina() : trivirgatus.falconeri { var x : trivirgatus.falconeri; () => { var y = this; }; return x; } ->leporina : Symbol(leporina, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 321, 102)) +>leporina : Symbol(robustulus.leporina, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 321, 102)) >trivirgatus : Symbol(trivirgatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 186, 1)) >falconeri : Symbol(trivirgatus.falconeri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 210, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 322, 44)) @@ -4227,7 +4227,7 @@ module dogramacii { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 322, 44)) pearsonii() : dammermani.melanops { var x : dammermani.melanops; () => { var y = this; }; return x; } ->pearsonii : Symbol(pearsonii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 322, 108)) +>pearsonii : Symbol(robustulus.pearsonii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 322, 108)) >dammermani : Symbol(dammermani, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 591, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 913, 1)) >melanops : Symbol(dammermani.melanops, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 914, 19)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 323, 43)) @@ -4238,7 +4238,7 @@ module dogramacii { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 323, 43)) keaysi() : howi.angulatus { var x : howi.angulatus; () => { var y = this; }; return x; } ->keaysi : Symbol(keaysi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 323, 105)) +>keaysi : Symbol(robustulus.keaysi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 323, 105)) >howi : Symbol(howi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 466, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 681, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 886, 1)) >angulatus : Symbol(howi.angulatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 467, 13)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) @@ -4257,7 +4257,7 @@ module dogramacii { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 324, 69)) hindei() : imperfecta.lasiurus { var x : imperfecta.lasiurus; () => { var y = this; }; return x; } ->hindei : Symbol(hindei, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 324, 160)) +>hindei : Symbol(robustulus.hindei, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 324, 160)) >imperfecta : Symbol(imperfecta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 785, 1)) >lasiurus : Symbol(imperfecta.lasiurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 786, 19)) >macrorhinos : Symbol(macrorhinos, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 461, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 497, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 736, 1)) @@ -4279,7 +4279,7 @@ module dogramacii { >koepckeae : Symbol(koepckeae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 326, 3)) culturatus() : samarensis.pelurus, julianae.sumatrana> { var x : samarensis.pelurus, julianae.sumatrana>; () => { var y = this; }; return x; } ->culturatus : Symbol(culturatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 327, 26)) +>culturatus : Symbol(koepckeae.culturatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 327, 26)) >samarensis : Symbol(samarensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 531, 1)) >pelurus : Symbol(samarensis.pelurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 532, 19)) >daubentonii : Symbol(daubentonii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 471, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 586, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 636, 1)) @@ -4307,7 +4307,7 @@ module dogramacii { >kaiseri : Symbol(kaiseri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 329, 3)) bedfordiae() : quasiater.carolinensis { var x : quasiater.carolinensis; () => { var y = this; }; return x; } ->bedfordiae : Symbol(bedfordiae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 330, 24)) +>bedfordiae : Symbol(kaiseri.bedfordiae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 330, 24)) >quasiater : Symbol(quasiater, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 236, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 422, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 813, 1)) >carolinensis : Symbol(quasiater.carolinensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 423, 18)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 331, 47)) @@ -4318,7 +4318,7 @@ module dogramacii { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 331, 47)) paramorum() : Lanthanum.megalonyx { var x : Lanthanum.megalonyx; () => { var y = this; }; return x; } ->paramorum : Symbol(paramorum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 331, 112)) +>paramorum : Symbol(kaiseri.paramorum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 331, 112)) >Lanthanum : Symbol(Lanthanum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 106, 1)) >megalonyx : Symbol(Lanthanum.megalonyx, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 124, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 332, 43)) @@ -4329,7 +4329,7 @@ module dogramacii { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 332, 43)) rubidus() : trivirgatus.lotor { var x : trivirgatus.lotor; () => { var y = this; }; return x; } ->rubidus : Symbol(rubidus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 332, 105)) +>rubidus : Symbol(kaiseri.rubidus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 332, 105)) >trivirgatus : Symbol(trivirgatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 186, 1)) >lotor : Symbol(trivirgatus.lotor, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 206, 3)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) @@ -4348,7 +4348,7 @@ module dogramacii { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 333, 78)) juninensis() : quasiater.bobrinskoi { var x : quasiater.bobrinskoi; () => { var y = this; }; return x; } ->juninensis : Symbol(juninensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 333, 177)) +>juninensis : Symbol(kaiseri.juninensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 333, 177)) >quasiater : Symbol(quasiater, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 236, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 422, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 813, 1)) >bobrinskoi : Symbol(quasiater.bobrinskoi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 237, 18)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 334, 45)) @@ -4359,7 +4359,7 @@ module dogramacii { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 334, 45)) marginata() : argurus.wetmorei>> { var x : argurus.wetmorei>>; () => { var y = this; }; return x; } ->marginata : Symbol(marginata, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 334, 108)) +>marginata : Symbol(kaiseri.marginata, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 334, 108)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) >wetmorei : Symbol(argurus.wetmorei, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 614, 16)) >rionegrensis : Symbol(rionegrensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 0, 0)) @@ -4394,7 +4394,7 @@ module dogramacii { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 335, 175)) Meitnerium() : ruatanica.Praseodymium> { var x : ruatanica.Praseodymium>; () => { var y = this; }; return x; } ->Meitnerium : Symbol(Meitnerium, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 335, 369)) +>Meitnerium : Symbol(kaiseri.Meitnerium, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 335, 369)) >ruatanica : Symbol(ruatanica, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 100, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 244, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 959, 1)) >Praseodymium : Symbol(ruatanica.Praseodymium, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 960, 18)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) @@ -4421,7 +4421,7 @@ module dogramacii { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 336, 127)) pinetorum() : rionegrensis.caniventer { var x : rionegrensis.caniventer; () => { var y = this; }; return x; } ->pinetorum : Symbol(pinetorum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 336, 272)) +>pinetorum : Symbol(kaiseri.pinetorum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 336, 272)) >rionegrensis : Symbol(rionegrensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 0, 0)) >caniventer : Symbol(rionegrensis.caniventer, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 0, 21)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 337, 47)) @@ -4432,7 +4432,7 @@ module dogramacii { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 337, 47)) hoolock() : samarensis.pelurus { var x : samarensis.pelurus; () => { var y = this; }; return x; } ->hoolock : Symbol(hoolock, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 337, 113)) +>hoolock : Symbol(kaiseri.hoolock, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 337, 113)) >samarensis : Symbol(samarensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 531, 1)) >pelurus : Symbol(samarensis.pelurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 532, 19)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) @@ -4451,7 +4451,7 @@ module dogramacii { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 338, 73)) poeyi() : gabriellae.echinatus { var x : gabriellae.echinatus; () => { var y = this; }; return x; } ->poeyi : Symbol(poeyi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 338, 167)) +>poeyi : Symbol(kaiseri.poeyi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 338, 167)) >gabriellae : Symbol(gabriellae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 766, 1)) >echinatus : Symbol(gabriellae.echinatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 781, 5)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 339, 40)) @@ -4462,7 +4462,7 @@ module dogramacii { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 339, 40)) Thulium() : julianae.durangae { var x : julianae.durangae; () => { var y = this; }; return x; } ->Thulium : Symbol(Thulium, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 339, 103)) +>Thulium : Symbol(kaiseri.Thulium, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 339, 103)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) >durangae : Symbol(julianae.durangae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 94, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 340, 39)) @@ -4473,7 +4473,7 @@ module dogramacii { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 340, 39)) patrius() : Lanthanum.jugularis { var x : Lanthanum.jugularis; () => { var y = this; }; return x; } ->patrius : Symbol(patrius, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 340, 99)) +>patrius : Symbol(kaiseri.patrius, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 340, 99)) >Lanthanum : Symbol(Lanthanum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 106, 1)) >jugularis : Symbol(Lanthanum.jugularis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 134, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 341, 41)) @@ -4484,7 +4484,7 @@ module dogramacii { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 341, 41)) quadraticauda() : julianae.nudicaudus { var x : julianae.nudicaudus; () => { var y = this; }; return x; } ->quadraticauda : Symbol(quadraticauda, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 341, 103)) +>quadraticauda : Symbol(kaiseri.quadraticauda, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 341, 103)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) >nudicaudus : Symbol(julianae.nudicaudus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 18, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 342, 47)) @@ -4495,7 +4495,7 @@ module dogramacii { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 342, 47)) ater() : ruatanica.americanus { var x : ruatanica.americanus; () => { var y = this; }; return x; } ->ater : Symbol(ater, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 342, 109)) +>ater : Symbol(kaiseri.ater, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 342, 109)) >ruatanica : Symbol(ruatanica, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 100, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 244, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 959, 1)) >americanus : Symbol(ruatanica.americanus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 245, 18)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 343, 39)) @@ -4509,7 +4509,7 @@ module dogramacii { >aurata : Symbol(aurata, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 344, 3)) grunniens() : nigra.gracilis, julianae.sumatrana>, ruatanica.americanus> { var x : nigra.gracilis, julianae.sumatrana>, ruatanica.americanus>; () => { var y = this; }; return x; } ->grunniens : Symbol(grunniens, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 345, 23)) +>grunniens : Symbol(aurata.grunniens, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 345, 23)) >nigra : Symbol(nigra, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 388, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 475, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 514, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 762, 1)) >gracilis : Symbol(nigra.gracilis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 515, 14)) >samarensis : Symbol(samarensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 531, 1)) @@ -4542,7 +4542,7 @@ module dogramacii { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 346, 150)) howensis() : ruatanica.americanus { var x : ruatanica.americanus; () => { var y = this; }; return x; } ->howensis : Symbol(howensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 346, 319)) +>howensis : Symbol(aurata.howensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 346, 319)) >ruatanica : Symbol(ruatanica, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 100, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 244, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 959, 1)) >americanus : Symbol(ruatanica.americanus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 245, 18)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 347, 43)) @@ -4553,7 +4553,7 @@ module dogramacii { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 347, 43)) karlkoopmani() : caurinus.psilurus { var x : caurinus.psilurus; () => { var y = this; }; return x; } ->karlkoopmani : Symbol(karlkoopmani, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 347, 106)) +>karlkoopmani : Symbol(aurata.karlkoopmani, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 347, 106)) >caurinus : Symbol(caurinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 449, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 836, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 976, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1007, 1)) >psilurus : Symbol(caurinus.psilurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1008, 17)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 348, 44)) @@ -4564,7 +4564,7 @@ module dogramacii { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 348, 44)) mirapitanga() : julianae.albidens { var x : julianae.albidens; () => { var y = this; }; return x; } ->mirapitanga : Symbol(mirapitanga, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 348, 104)) +>mirapitanga : Symbol(aurata.mirapitanga, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 348, 104)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) >albidens : Symbol(julianae.albidens, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 34, 3)) >gabriellae : Symbol(gabriellae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 766, 1)) @@ -4583,7 +4583,7 @@ module dogramacii { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 349, 87)) ophiodon() : aurata { var x : aurata; () => { var y = this; }; return x; } ->ophiodon : Symbol(ophiodon, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 349, 191)) +>ophiodon : Symbol(aurata.ophiodon, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 349, 191)) >aurata : Symbol(aurata, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 344, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 350, 29)) >aurata : Symbol(aurata, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 344, 3)) @@ -4592,7 +4592,7 @@ module dogramacii { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 350, 29)) landeri() : samarensis.pelurus { var x : samarensis.pelurus; () => { var y = this; }; return x; } ->landeri : Symbol(landeri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 350, 78)) +>landeri : Symbol(aurata.landeri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 350, 78)) >samarensis : Symbol(samarensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 531, 1)) >pelurus : Symbol(samarensis.pelurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 532, 19)) >Lanthanum : Symbol(Lanthanum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 106, 1)) @@ -4611,7 +4611,7 @@ module dogramacii { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 351, 83)) sonomae() : trivirgatus.lotor, koepckeae> { var x : trivirgatus.lotor, koepckeae>; () => { var y = this; }; return x; } ->sonomae : Symbol(sonomae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 351, 187)) +>sonomae : Symbol(aurata.sonomae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 351, 187)) >trivirgatus : Symbol(trivirgatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 186, 1)) >lotor : Symbol(trivirgatus.lotor, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 206, 3)) >panglima : Symbol(panglima, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 400, 1)) @@ -4636,7 +4636,7 @@ module dogramacii { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 352, 102)) erythromos() : caurinus.johorensis, nigra.dolichurus> { var x : caurinus.johorensis, nigra.dolichurus>; () => { var y = this; }; return x; } ->erythromos : Symbol(erythromos, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 352, 225)) +>erythromos : Symbol(aurata.erythromos, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 352, 225)) >caurinus : Symbol(caurinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 449, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 836, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 976, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1007, 1)) >johorensis : Symbol(caurinus.johorensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 977, 17)) >panglima : Symbol(panglima, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 400, 1)) @@ -4681,7 +4681,7 @@ module lutreolus { >beisa : Symbol(lavali.beisa, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 268, 3)) mittendorfi() : rionegrensis.caniventer { var x : rionegrensis.caniventer; () => { var y = this; }; return x; } ->mittendorfi : Symbol(mittendorfi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 357, 47)) +>mittendorfi : Symbol(schlegeli.mittendorfi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 357, 47)) >rionegrensis : Symbol(rionegrensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 0, 0)) >caniventer : Symbol(rionegrensis.caniventer, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 0, 21)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 358, 49)) @@ -4692,7 +4692,7 @@ module lutreolus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 358, 49)) blicki() : dogramacii.robustulus { var x : dogramacii.robustulus; () => { var y = this; }; return x; } ->blicki : Symbol(blicki, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 358, 115)) +>blicki : Symbol(schlegeli.blicki, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 358, 115)) >dogramacii : Symbol(dogramacii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 314, 1)) >robustulus : Symbol(dogramacii.robustulus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 315, 19)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 359, 42)) @@ -4703,7 +4703,7 @@ module lutreolus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 359, 42)) culionensis() : argurus.dauricus { var x : argurus.dauricus; () => { var y = this; }; return x; } ->culionensis : Symbol(culionensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 359, 106)) +>culionensis : Symbol(schlegeli.culionensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 359, 106)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) >dauricus : Symbol(argurus.dauricus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 374, 16)) >ruatanica : Symbol(ruatanica, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 100, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 244, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 959, 1)) @@ -4722,7 +4722,7 @@ module lutreolus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 360, 89)) scrofa() : petrophilus.sodyi { var x : petrophilus.sodyi; () => { var y = this; }; return x; } ->scrofa : Symbol(scrofa, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 360, 195)) +>scrofa : Symbol(schlegeli.scrofa, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 360, 195)) >petrophilus : Symbol(petrophilus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 715, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 823, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 998, 1)) >sodyi : Symbol(petrophilus.sodyi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 824, 20)) >gabriellae : Symbol(gabriellae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 766, 1)) @@ -4741,7 +4741,7 @@ module lutreolus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 361, 77)) fernandoni() : quasiater.carolinensis { var x : quasiater.carolinensis; () => { var y = this; }; return x; } ->fernandoni : Symbol(fernandoni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 361, 176)) +>fernandoni : Symbol(schlegeli.fernandoni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 361, 176)) >quasiater : Symbol(quasiater, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 236, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 422, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 813, 1)) >carolinensis : Symbol(quasiater.carolinensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 423, 18)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 362, 47)) @@ -4752,7 +4752,7 @@ module lutreolus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 362, 47)) Tin() : sagitta.leptoceros> { var x : sagitta.leptoceros>; () => { var y = this; }; return x; } ->Tin : Symbol(Tin, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 362, 112)) +>Tin : Symbol(schlegeli.Tin, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 362, 112)) >sagitta : Symbol(sagitta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 487, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 577, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 675, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 746, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 898, 1)) >leptoceros : Symbol(sagitta.leptoceros, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 578, 16)) >lutreolus : Symbol(lutreolus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 355, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 719, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 855, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 872, 1)) @@ -4779,7 +4779,7 @@ module lutreolus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 363, 126)) marmorata() : panamensis.setulosus> { var x : panamensis.setulosus>; () => { var y = this; }; return x; } ->marmorata : Symbol(marmorata, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 363, 277)) +>marmorata : Symbol(schlegeli.marmorata, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 363, 277)) >panamensis : Symbol(panamensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 501, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 986, 1)) >setulosus : Symbol(panamensis.setulosus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 987, 19)) >quasiater : Symbol(quasiater, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 236, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 422, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 813, 1)) @@ -4806,7 +4806,7 @@ module lutreolus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 364, 129)) tavaratra() : Lanthanum.nitidus { var x : Lanthanum.nitidus; () => { var y = this; }; return x; } ->tavaratra : Symbol(tavaratra, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 364, 277)) +>tavaratra : Symbol(schlegeli.tavaratra, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 364, 277)) >Lanthanum : Symbol(Lanthanum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 106, 1)) >nitidus : Symbol(Lanthanum.nitidus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 112, 3)) >howi : Symbol(howi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 466, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 681, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 886, 1)) @@ -4825,7 +4825,7 @@ module lutreolus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 365, 81)) peregrina() : daubentonii.nesiotes { var x : daubentonii.nesiotes; () => { var y = this; }; return x; } ->peregrina : Symbol(peregrina, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 365, 181)) +>peregrina : Symbol(schlegeli.peregrina, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 365, 181)) >daubentonii : Symbol(daubentonii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 471, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 586, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 636, 1)) >nesiotes : Symbol(daubentonii.nesiotes, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 472, 20)) >macrorhinos : Symbol(macrorhinos, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 461, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 497, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 736, 1)) @@ -4844,7 +4844,7 @@ module lutreolus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 366, 88)) frontalis() : macrorhinos.marmosurus>, samarensis.pallidus> { var x : macrorhinos.marmosurus>, samarensis.pallidus>; () => { var y = this; }; return x; } ->frontalis : Symbol(frontalis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 366, 195)) +>frontalis : Symbol(schlegeli.frontalis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 366, 195)) >macrorhinos : Symbol(macrorhinos, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 461, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 497, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 736, 1)) >marmosurus : Symbol(macrorhinos.marmosurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 462, 20)) >ruatanica : Symbol(ruatanica, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 100, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 244, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 959, 1)) @@ -4879,7 +4879,7 @@ module lutreolus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 367, 163)) cuniculus() : patas.uralensis { var x : patas.uralensis; () => { var y = this; }; return x; } ->cuniculus : Symbol(cuniculus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 367, 345)) +>cuniculus : Symbol(schlegeli.cuniculus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 367, 345)) >patas : Symbol(patas, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 652, 1)) >uralensis : Symbol(patas.uralensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 653, 14)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 368, 39)) @@ -4890,7 +4890,7 @@ module lutreolus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 368, 39)) magdalenae() : julianae.gerbillus> { var x : julianae.gerbillus>; () => { var y = this; }; return x; } ->magdalenae : Symbol(magdalenae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 368, 97)) +>magdalenae : Symbol(schlegeli.magdalenae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 368, 97)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) >gerbillus : Symbol(julianae.gerbillus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 67, 3)) >rionegrensis : Symbol(rionegrensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 0, 0)) @@ -4917,7 +4917,7 @@ module lutreolus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 369, 131)) andamanensis() : julianae.oralis { var x : julianae.oralis; () => { var y = this; }; return x; } ->andamanensis : Symbol(andamanensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 369, 280)) +>andamanensis : Symbol(schlegeli.andamanensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 369, 280)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) >oralis : Symbol(julianae.oralis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 43, 3)) >ruatanica : Symbol(ruatanica, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 100, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 244, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 959, 1)) @@ -4936,7 +4936,7 @@ module lutreolus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 370, 84)) dispar() : panamensis.linulus { var x : panamensis.linulus; () => { var y = this; }; return x; } ->dispar : Symbol(dispar, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 370, 184)) +>dispar : Symbol(schlegeli.dispar, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 370, 184)) >panamensis : Symbol(panamensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 501, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 986, 1)) >linulus : Symbol(panamensis.linulus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 502, 19)) >dogramacii : Symbol(dogramacii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 314, 1)) @@ -4964,7 +4964,7 @@ module argurus { >T1 : Symbol(T1, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 375, 27)) chinensis() : Lanthanum.jugularis { var x : Lanthanum.jugularis; () => { var y = this; }; return x; } ->chinensis : Symbol(chinensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 375, 33)) +>chinensis : Symbol(dauricus.chinensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 375, 33)) >Lanthanum : Symbol(Lanthanum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 106, 1)) >jugularis : Symbol(Lanthanum.jugularis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 134, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 376, 43)) @@ -4975,7 +4975,7 @@ module argurus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 376, 43)) duodecimcostatus() : lavali.xanthognathus { var x : lavali.xanthognathus; () => { var y = this; }; return x; } ->duodecimcostatus : Symbol(duodecimcostatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 376, 105)) +>duodecimcostatus : Symbol(dauricus.duodecimcostatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 376, 105)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) >xanthognathus : Symbol(lavali.xanthognathus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 285, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 377, 51)) @@ -4986,7 +4986,7 @@ module argurus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 377, 51)) foxi() : daubentonii.nesiotes { var x : daubentonii.nesiotes; () => { var y = this; }; return x; } ->foxi : Symbol(foxi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 377, 114)) +>foxi : Symbol(dauricus.foxi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 377, 114)) >daubentonii : Symbol(daubentonii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 471, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 586, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 636, 1)) >nesiotes : Symbol(daubentonii.nesiotes, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 472, 20)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) @@ -5005,7 +5005,7 @@ module argurus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 378, 70)) macleayii() : petrophilus.sodyi>, petrophilus.minutilla> { var x : petrophilus.sodyi>, petrophilus.minutilla>; () => { var y = this; }; return x; } ->macleayii : Symbol(macleayii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 378, 164)) +>macleayii : Symbol(dauricus.macleayii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 378, 164)) >petrophilus : Symbol(petrophilus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 715, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 823, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 998, 1)) >sodyi : Symbol(petrophilus.sodyi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 824, 20)) >quasiater : Symbol(quasiater, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 236, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 422, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 813, 1)) @@ -5040,7 +5040,7 @@ module argurus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 379, 173)) darienensis() : trivirgatus.oconnelli { var x : trivirgatus.oconnelli; () => { var y = this; }; return x; } ->darienensis : Symbol(darienensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 379, 365)) +>darienensis : Symbol(dauricus.darienensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 379, 365)) >trivirgatus : Symbol(trivirgatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 186, 1)) >oconnelli : Symbol(trivirgatus.oconnelli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 219, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 380, 47)) @@ -5051,7 +5051,7 @@ module argurus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 380, 47)) hardwickii() : macrorhinos.daphaenodon { var x : macrorhinos.daphaenodon; () => { var y = this; }; return x; } ->hardwickii : Symbol(hardwickii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 380, 111)) +>hardwickii : Symbol(dauricus.hardwickii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 380, 111)) >macrorhinos : Symbol(macrorhinos, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 461, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 497, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 736, 1)) >daphaenodon : Symbol(macrorhinos.daphaenodon, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 737, 20)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 381, 48)) @@ -5062,7 +5062,7 @@ module argurus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 381, 48)) albifrons() : rionegrensis.veraecrucis { var x : rionegrensis.veraecrucis; () => { var y = this; }; return x; } ->albifrons : Symbol(albifrons, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 381, 114)) +>albifrons : Symbol(dauricus.albifrons, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 381, 114)) >rionegrensis : Symbol(rionegrensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 0, 0)) >veraecrucis : Symbol(rionegrensis.veraecrucis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 7, 3)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) @@ -5081,7 +5081,7 @@ module argurus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 382, 84)) jacobitus() : caurinus.johorensis>> { var x : caurinus.johorensis>>; () => { var y = this; }; return x; } ->jacobitus : Symbol(jacobitus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 382, 187)) +>jacobitus : Symbol(dauricus.jacobitus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 382, 187)) >caurinus : Symbol(caurinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 449, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 836, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 976, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1007, 1)) >johorensis : Symbol(caurinus.johorensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 977, 17)) >macrorhinos : Symbol(macrorhinos, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 461, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 497, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 736, 1)) @@ -5116,7 +5116,7 @@ module argurus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 383, 169)) guentheri() : rendalli.moojeni { var x : rendalli.moojeni; () => { var y = this; }; return x; } ->guentheri : Symbol(guentheri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 383, 357)) +>guentheri : Symbol(dauricus.guentheri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 383, 357)) >rendalli : Symbol(rendalli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 151, 1)) >moojeni : Symbol(rendalli.moojeni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 168, 3)) >lutreolus : Symbol(lutreolus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 355, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 719, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 855, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 872, 1)) @@ -5135,7 +5135,7 @@ module argurus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 384, 72)) mahomet() : imperfecta.ciliolabrum { var x : imperfecta.ciliolabrum; () => { var y = this; }; return x; } ->mahomet : Symbol(mahomet, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 384, 163)) +>mahomet : Symbol(dauricus.mahomet, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 384, 163)) >imperfecta : Symbol(imperfecta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 785, 1)) >ciliolabrum : Symbol(imperfecta.ciliolabrum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 807, 5)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) @@ -5154,7 +5154,7 @@ module argurus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 385, 79)) misionensis() : macrorhinos.marmosurus, gabriellae.echinatus> { var x : macrorhinos.marmosurus, gabriellae.echinatus>; () => { var y = this; }; return x; } ->misionensis : Symbol(misionensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 385, 179)) +>misionensis : Symbol(dauricus.misionensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 385, 179)) >macrorhinos : Symbol(macrorhinos, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 461, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 497, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 736, 1)) >marmosurus : Symbol(macrorhinos.marmosurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 462, 20)) >daubentonii : Symbol(daubentonii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 471, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 586, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 636, 1)) @@ -5190,7 +5190,7 @@ module nigra { >T1 : Symbol(T1, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 390, 29)) solomonis() : panglima.abidi, argurus.netscheri, julianae.oralis>>> { var x : panglima.abidi, argurus.netscheri, julianae.oralis>>>; () => { var y = this; }; return x; } ->solomonis : Symbol(solomonis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 390, 35)) +>solomonis : Symbol(dolichurus.solomonis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 390, 35)) >panglima : Symbol(panglima, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 400, 1)) >abidi : Symbol(panglima.abidi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 414, 5)) >quasiater : Symbol(quasiater, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 236, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 422, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 813, 1)) @@ -5249,7 +5249,7 @@ module nigra { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 391, 270)) alfredi() : caurinus.psilurus { var x : caurinus.psilurus; () => { var y = this; }; return x; } ->alfredi : Symbol(alfredi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 391, 559)) +>alfredi : Symbol(dolichurus.alfredi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 391, 559)) >caurinus : Symbol(caurinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 449, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 836, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 976, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1007, 1)) >psilurus : Symbol(caurinus.psilurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1008, 17)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 392, 39)) @@ -5260,7 +5260,7 @@ module nigra { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 392, 39)) morrisi() : ruatanica.hector, quasiater.wattsi>>> { var x : ruatanica.hector, quasiater.wattsi>>>; () => { var y = this; }; return x; } ->morrisi : Symbol(morrisi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 392, 99)) +>morrisi : Symbol(dolichurus.morrisi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 392, 99)) >ruatanica : Symbol(ruatanica, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 100, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 244, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 959, 1)) >hector : Symbol(ruatanica.hector, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 101, 18)) >trivirgatus : Symbol(trivirgatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 186, 1)) @@ -5311,7 +5311,7 @@ module nigra { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 393, 248)) lekaguli() : Lanthanum.nitidus { var x : Lanthanum.nitidus; () => { var y = this; }; return x; } ->lekaguli : Symbol(lekaguli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 393, 517)) +>lekaguli : Symbol(dolichurus.lekaguli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 393, 517)) >Lanthanum : Symbol(Lanthanum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 106, 1)) >nitidus : Symbol(Lanthanum.nitidus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 112, 3)) >dammermani : Symbol(dammermani, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 591, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 913, 1)) @@ -5330,7 +5330,7 @@ module nigra { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 394, 78)) dimissus() : imperfecta.subspinosus { var x : imperfecta.subspinosus; () => { var y = this; }; return x; } ->dimissus : Symbol(dimissus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 394, 176)) +>dimissus : Symbol(dolichurus.dimissus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 394, 176)) >imperfecta : Symbol(imperfecta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 785, 1)) >subspinosus : Symbol(imperfecta.subspinosus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 794, 5)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 395, 45)) @@ -5341,7 +5341,7 @@ module nigra { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 395, 45)) phaeotis() : julianae.sumatrana { var x : julianae.sumatrana; () => { var y = this; }; return x; } ->phaeotis : Symbol(phaeotis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 395, 110)) +>phaeotis : Symbol(dolichurus.phaeotis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 395, 110)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) >sumatrana : Symbol(julianae.sumatrana, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 58, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 396, 41)) @@ -5352,7 +5352,7 @@ module nigra { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 396, 41)) ustus() : julianae.acariensis { var x : julianae.acariensis; () => { var y = this; }; return x; } ->ustus : Symbol(ustus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 396, 102)) +>ustus : Symbol(dolichurus.ustus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 396, 102)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) >acariensis : Symbol(julianae.acariensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 80, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 397, 39)) @@ -5363,7 +5363,7 @@ module nigra { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 397, 39)) sagei() : howi.marcanoi { var x : howi.marcanoi; () => { var y = this; }; return x; } ->sagei : Symbol(sagei, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 397, 101)) +>sagei : Symbol(dolichurus.sagei, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 397, 101)) >howi : Symbol(howi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 466, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 681, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 886, 1)) >marcanoi : Symbol(howi.marcanoi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 682, 13)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 398, 33)) @@ -5394,7 +5394,7 @@ module panglima { >jugularis : Symbol(Lanthanum.jugularis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 134, 3)) bottegi(): macrorhinos.marmosurus, gabriellae.echinatus>, sagitta.stolzmanni> { var x: macrorhinos.marmosurus, gabriellae.echinatus>, sagitta.stolzmanni>; () => { var y = this; }; return x; } ->bottegi : Symbol(bottegi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 402, 147)) +>bottegi : Symbol(amphibius.bottegi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 402, 147)) >macrorhinos : Symbol(macrorhinos, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 461, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 497, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 736, 1)) >marmosurus : Symbol(macrorhinos.marmosurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 462, 20)) >rendalli : Symbol(rendalli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 151, 1)) @@ -5427,7 +5427,7 @@ module panglima { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 403, 160)) jerdoni(): macrorhinos.daphaenodon { var x: macrorhinos.daphaenodon; () => { var y = this; }; return x; } ->jerdoni : Symbol(jerdoni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 403, 337)) +>jerdoni : Symbol(amphibius.jerdoni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 403, 337)) >macrorhinos : Symbol(macrorhinos, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 461, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 497, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 736, 1)) >daphaenodon : Symbol(macrorhinos.daphaenodon, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 737, 20)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 404, 48)) @@ -5438,7 +5438,7 @@ module panglima { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 404, 48)) camtschatica(): samarensis.pallidus { var x: samarensis.pallidus; () => { var y = this; }; return x; } ->camtschatica : Symbol(camtschatica, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 404, 113)) +>camtschatica : Symbol(amphibius.camtschatica, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 404, 113)) >samarensis : Symbol(samarensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 531, 1)) >pallidus : Symbol(samarensis.pallidus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 563, 5)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 405, 49)) @@ -5449,7 +5449,7 @@ module panglima { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 405, 49)) spadix(): petrophilus.sodyi { var x: petrophilus.sodyi; () => { var y = this; }; return x; } ->spadix : Symbol(spadix, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 405, 110)) +>spadix : Symbol(amphibius.spadix, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 405, 110)) >petrophilus : Symbol(petrophilus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 715, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 823, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 998, 1)) >sodyi : Symbol(petrophilus.sodyi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 824, 20)) >macrorhinos : Symbol(macrorhinos, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 461, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 497, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 736, 1)) @@ -5468,7 +5468,7 @@ module panglima { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 406, 85)) luismanueli(): rendalli.moojeni { var x: rendalli.moojeni; () => { var y = this; }; return x; } ->luismanueli : Symbol(luismanueli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 406, 188)) +>luismanueli : Symbol(amphibius.luismanueli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 406, 188)) >rendalli : Symbol(rendalli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 151, 1)) >moojeni : Symbol(rendalli.moojeni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 168, 3)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) @@ -5487,7 +5487,7 @@ module panglima { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 407, 88)) aceramarcae(): daubentonii.arboreus { var x: daubentonii.arboreus; () => { var y = this; }; return x; } ->aceramarcae : Symbol(aceramarcae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 407, 189)) +>aceramarcae : Symbol(amphibius.aceramarcae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 407, 189)) >daubentonii : Symbol(daubentonii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 471, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 586, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 636, 1)) >arboreus : Symbol(daubentonii.arboreus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 637, 20)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) @@ -5514,7 +5514,7 @@ module panglima { >schlegeli : Symbol(lutreolus.schlegeli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 356, 18)) crassulus(): nigra.gracilis { var x: nigra.gracilis; () => { var y = this; }; return x; } ->crassulus : Symbol(crassulus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 410, 63)) +>crassulus : Symbol(fundatus.crassulus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 410, 63)) >nigra : Symbol(nigra, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 388, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 475, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 514, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 762, 1)) >gracilis : Symbol(nigra.gracilis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 515, 14)) >provocax : Symbol(provocax, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 669, 1)) @@ -5533,7 +5533,7 @@ module panglima { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 411, 85)) flamarioni(): imperfecta.lasiurus>, sagitta.leptoceros>> { var x: imperfecta.lasiurus>, sagitta.leptoceros>>; () => { var y = this; }; return x; } ->flamarioni : Symbol(flamarioni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 411, 185)) +>flamarioni : Symbol(fundatus.flamarioni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 411, 185)) >imperfecta : Symbol(imperfecta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 785, 1)) >lasiurus : Symbol(imperfecta.lasiurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 786, 19)) >amphibius : Symbol(amphibius, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 401, 17)) @@ -5582,7 +5582,7 @@ module panglima { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 412, 245)) mirabilis(): macrorhinos.marmosurus, lavali.lepturus> { var x: macrorhinos.marmosurus, lavali.lepturus>; () => { var y = this; }; return x; } ->mirabilis : Symbol(mirabilis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 412, 504)) +>mirabilis : Symbol(fundatus.mirabilis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 412, 504)) >macrorhinos : Symbol(macrorhinos, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 461, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 497, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 736, 1)) >marmosurus : Symbol(macrorhinos.marmosurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 462, 20)) >petrophilus : Symbol(petrophilus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 715, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 823, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 998, 1)) @@ -5621,7 +5621,7 @@ module panglima { >durangae : Symbol(julianae.durangae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 94, 3)) greyii(): trivirgatus.oconnelli { var x: trivirgatus.oconnelli; () => { var y = this; }; return x; } ->greyii : Symbol(greyii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 415, 94)) +>greyii : Symbol(abidi.greyii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 415, 94)) >trivirgatus : Symbol(trivirgatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 186, 1)) >oconnelli : Symbol(trivirgatus.oconnelli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 219, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 416, 45)) @@ -5632,7 +5632,7 @@ module panglima { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 416, 45)) macedonicus(): petrophilus.minutilla { var x: petrophilus.minutilla; () => { var y = this; }; return x; } ->macedonicus : Symbol(macedonicus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 416, 108)) +>macedonicus : Symbol(abidi.macedonicus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 416, 108)) >petrophilus : Symbol(petrophilus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 715, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 823, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 998, 1)) >minutilla : Symbol(petrophilus.minutilla, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 716, 20)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 417, 50)) @@ -5643,7 +5643,7 @@ module panglima { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 417, 50)) galili(): samarensis.cahirinus { var x: samarensis.cahirinus; () => { var y = this; }; return x; } ->galili : Symbol(galili, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 417, 113)) +>galili : Symbol(abidi.galili, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 417, 113)) >samarensis : Symbol(samarensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 531, 1)) >cahirinus : Symbol(samarensis.cahirinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 569, 5)) >dammermani : Symbol(dammermani, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 591, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 913, 1)) @@ -5662,7 +5662,7 @@ module panglima { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 418, 86)) thierryi(): dogramacii.robustulus { var x: dogramacii.robustulus; () => { var y = this; }; return x; } ->thierryi : Symbol(thierryi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 418, 190)) +>thierryi : Symbol(abidi.thierryi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 418, 190)) >dogramacii : Symbol(dogramacii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 314, 1)) >robustulus : Symbol(dogramacii.robustulus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 315, 19)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 419, 47)) @@ -5673,7 +5673,7 @@ module panglima { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 419, 47)) ega(): imperfecta.lasiurus> { var x: imperfecta.lasiurus>; () => { var y = this; }; return x; } ->ega : Symbol(ega, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 419, 110)) +>ega : Symbol(abidi.ega, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 419, 110)) >imperfecta : Symbol(imperfecta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 785, 1)) >lasiurus : Symbol(imperfecta.lasiurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 786, 19)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) @@ -5707,7 +5707,7 @@ module quasiater { >carolinensis : Symbol(carolinensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 423, 18)) concinna(): rendalli.zuluensis { var x: rendalli.zuluensis; () => { var y = this; }; return x; } ->concinna : Symbol(concinna, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 424, 31)) +>concinna : Symbol(carolinensis.concinna, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 424, 31)) >rendalli : Symbol(rendalli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 151, 1)) >zuluensis : Symbol(rendalli.zuluensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 152, 17)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 425, 44)) @@ -5718,7 +5718,7 @@ module quasiater { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 425, 44)) aeneus(): howi.marcanoi { var x: howi.marcanoi; () => { var y = this; }; return x; } ->aeneus : Symbol(aeneus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 425, 104)) +>aeneus : Symbol(carolinensis.aeneus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 425, 104)) >howi : Symbol(howi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 466, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 681, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 886, 1)) >marcanoi : Symbol(howi.marcanoi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 682, 13)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 426, 37)) @@ -5729,7 +5729,7 @@ module quasiater { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 426, 37)) aloysiisabaudiae(): argurus.netscheri, lavali.lepturus> { var x: argurus.netscheri, lavali.lepturus>; () => { var y = this; }; return x; } ->aloysiisabaudiae : Symbol(aloysiisabaudiae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 426, 92)) +>aloysiisabaudiae : Symbol(carolinensis.aloysiisabaudiae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 426, 92)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) >netscheri : Symbol(argurus.netscheri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 943, 16)) >trivirgatus : Symbol(trivirgatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 186, 1)) @@ -5756,7 +5756,7 @@ module quasiater { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 427, 116)) tenellus(): julianae.nudicaudus { var x: julianae.nudicaudus; () => { var y = this; }; return x; } ->tenellus : Symbol(tenellus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 427, 240)) +>tenellus : Symbol(carolinensis.tenellus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 427, 240)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) >nudicaudus : Symbol(julianae.nudicaudus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 18, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 428, 45)) @@ -5767,7 +5767,7 @@ module quasiater { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 428, 45)) andium(): lavali.beisa { var x: lavali.beisa; () => { var y = this; }; return x; } ->andium : Symbol(andium, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 428, 106)) +>andium : Symbol(carolinensis.andium, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 428, 106)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) >beisa : Symbol(lavali.beisa, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 268, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 429, 36)) @@ -5778,7 +5778,7 @@ module quasiater { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 429, 36)) persephone(): panglima.fundatus { var x: panglima.fundatus; () => { var y = this; }; return x; } ->persephone : Symbol(persephone, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 429, 90)) +>persephone : Symbol(carolinensis.persephone, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 429, 90)) >panglima : Symbol(panglima, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 400, 1)) >fundatus : Symbol(panglima.fundatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 409, 5)) >samarensis : Symbol(samarensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 531, 1)) @@ -5797,7 +5797,7 @@ module quasiater { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 430, 86)) patrizii(): Lanthanum.megalonyx { var x: Lanthanum.megalonyx; () => { var y = this; }; return x; } ->patrizii : Symbol(patrizii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 430, 186)) +>patrizii : Symbol(carolinensis.patrizii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 430, 186)) >Lanthanum : Symbol(Lanthanum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 106, 1)) >megalonyx : Symbol(Lanthanum.megalonyx, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 124, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 431, 45)) @@ -5820,7 +5820,7 @@ module minutus { >punicus : Symbol(lutreolus.punicus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 720, 18)) simoni(): argurus.netscheri> { var x: argurus.netscheri>; () => { var y = this; }; return x; } ->simoni : Symbol(simoni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 435, 63)) +>simoni : Symbol(himalayana.simoni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 435, 63)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) >netscheri : Symbol(argurus.netscheri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 943, 16)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) @@ -5847,7 +5847,7 @@ module minutus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 436, 115)) lobata(): samarensis.pallidus { var x: samarensis.pallidus; () => { var y = this; }; return x; } ->lobata : Symbol(lobata, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 436, 248)) +>lobata : Symbol(himalayana.lobata, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 436, 248)) >samarensis : Symbol(samarensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 531, 1)) >pallidus : Symbol(samarensis.pallidus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 563, 5)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 437, 43)) @@ -5858,7 +5858,7 @@ module minutus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 437, 43)) rusticus(): dogramacii.aurata { var x: dogramacii.aurata; () => { var y = this; }; return x; } ->rusticus : Symbol(rusticus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 437, 104)) +>rusticus : Symbol(himalayana.rusticus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 437, 104)) >dogramacii : Symbol(dogramacii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 314, 1)) >aurata : Symbol(dogramacii.aurata, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 344, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 438, 43)) @@ -5869,7 +5869,7 @@ module minutus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 438, 43)) latona(): daubentonii.nesiotes { var x: daubentonii.nesiotes; () => { var y = this; }; return x; } ->latona : Symbol(latona, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 438, 102)) +>latona : Symbol(himalayana.latona, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 438, 102)) >daubentonii : Symbol(daubentonii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 471, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 586, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 636, 1)) >nesiotes : Symbol(daubentonii.nesiotes, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 472, 20)) >dammermani : Symbol(dammermani, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 591, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 913, 1)) @@ -5888,7 +5888,7 @@ module minutus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 439, 86)) famulus(): patas.uralensis { var x: patas.uralensis; () => { var y = this; }; return x; } ->famulus : Symbol(famulus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 439, 190)) +>famulus : Symbol(himalayana.famulus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 439, 190)) >patas : Symbol(patas, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 652, 1)) >uralensis : Symbol(patas.uralensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 653, 14)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 440, 40)) @@ -5899,7 +5899,7 @@ module minutus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 440, 40)) flaviceps(): minutus.inez> { var x: minutus.inez>; () => { var y = this; }; return x; } ->flaviceps : Symbol(flaviceps, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 440, 97)) +>flaviceps : Symbol(himalayana.flaviceps, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 440, 97)) >minutus : Symbol(minutus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 433, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 492, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 848, 1)) >inez : Symbol(inez, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 493, 16)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) @@ -5926,7 +5926,7 @@ module minutus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 441, 109)) paradoxolophus(): nigra.dolichurus> { var x: nigra.dolichurus>; () => { var y = this; }; return x; } ->paradoxolophus : Symbol(paradoxolophus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 441, 233)) +>paradoxolophus : Symbol(himalayana.paradoxolophus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 441, 233)) >nigra : Symbol(nigra, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 388, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 475, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 514, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 762, 1)) >dolichurus : Symbol(nigra.dolichurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 389, 14)) >lutreolus : Symbol(lutreolus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 355, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 719, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 855, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 872, 1)) @@ -5953,7 +5953,7 @@ module minutus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 442, 139)) Osmium(): lavali.wilsoni { var x: lavali.wilsoni; () => { var y = this; }; return x; } ->Osmium : Symbol(Osmium, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 442, 288)) +>Osmium : Symbol(himalayana.Osmium, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 442, 288)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) >wilsoni : Symbol(lavali.wilsoni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 253, 15)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 443, 38)) @@ -5964,7 +5964,7 @@ module minutus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 443, 38)) vulgaris(): Lanthanum.nitidus { var x: Lanthanum.nitidus; () => { var y = this; }; return x; } ->vulgaris : Symbol(vulgaris, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 443, 94)) +>vulgaris : Symbol(himalayana.vulgaris, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 443, 94)) >Lanthanum : Symbol(Lanthanum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 106, 1)) >nitidus : Symbol(Lanthanum.nitidus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 112, 3)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) @@ -5983,7 +5983,7 @@ module minutus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 444, 81)) betsileoensis(): panglima.amphibius { var x: panglima.amphibius; () => { var y = this; }; return x; } ->betsileoensis : Symbol(betsileoensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 444, 178)) +>betsileoensis : Symbol(himalayana.betsileoensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 444, 178)) >panglima : Symbol(panglima, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 400, 1)) >amphibius : Symbol(panglima.amphibius, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 401, 17)) >caurinus : Symbol(caurinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 449, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 836, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 976, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1007, 1)) @@ -6002,7 +6002,7 @@ module minutus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 445, 88)) vespuccii(): argurus.gilbertii, provocax.melanoleuca> { var x: argurus.gilbertii, provocax.melanoleuca>; () => { var y = this; }; return x; } ->vespuccii : Symbol(vespuccii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 445, 187)) +>vespuccii : Symbol(himalayana.vespuccii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 445, 187)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) >gilbertii : Symbol(argurus.gilbertii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 700, 16)) >gabriellae : Symbol(gabriellae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 766, 1)) @@ -6029,7 +6029,7 @@ module minutus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 446, 135)) olympus(): Lanthanum.megalonyx { var x: Lanthanum.megalonyx; () => { var y = this; }; return x; } ->olympus : Symbol(olympus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 446, 285)) +>olympus : Symbol(himalayana.olympus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 446, 285)) >Lanthanum : Symbol(Lanthanum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 106, 1)) >megalonyx : Symbol(Lanthanum.megalonyx, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 124, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 447, 44)) @@ -6056,7 +6056,7 @@ module caurinus { >daphaenodon : Symbol(macrorhinos.daphaenodon, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 737, 20)) martiniquensis(): ruatanica.hector>> { var x: ruatanica.hector>>; () => { var y = this; }; return x; } ->martiniquensis : Symbol(martiniquensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 451, 111)) +>martiniquensis : Symbol(mahaganus.martiniquensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 451, 111)) >ruatanica : Symbol(ruatanica, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 100, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 244, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 959, 1)) >hector : Symbol(ruatanica.hector, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 101, 18)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) @@ -6091,7 +6091,7 @@ module caurinus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 452, 168)) devius(): samarensis.pelurus, trivirgatus.falconeri>> { var x: samarensis.pelurus, trivirgatus.falconeri>>; () => { var y = this; }; return x; } ->devius : Symbol(devius, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 452, 346)) +>devius : Symbol(mahaganus.devius, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 452, 346)) >samarensis : Symbol(samarensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 531, 1)) >pelurus : Symbol(samarensis.pelurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 532, 19)) >dogramacii : Symbol(dogramacii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 314, 1)) @@ -6126,7 +6126,7 @@ module caurinus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 453, 153)) masalai(): argurus.oreas { var x: argurus.oreas; () => { var y = this; }; return x; } ->masalai : Symbol(masalai, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 453, 324)) +>masalai : Symbol(mahaganus.masalai, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 453, 324)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) >oreas : Symbol(argurus.oreas, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 625, 16)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 454, 38)) @@ -6137,7 +6137,7 @@ module caurinus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 454, 38)) kathleenae(): nigra.dolichurus { var x: nigra.dolichurus; () => { var y = this; }; return x; } ->kathleenae : Symbol(kathleenae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 454, 93)) +>kathleenae : Symbol(mahaganus.kathleenae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 454, 93)) >nigra : Symbol(nigra, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 388, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 475, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 514, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 762, 1)) >dolichurus : Symbol(nigra.dolichurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 389, 14)) >patas : Symbol(patas, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 652, 1)) @@ -6156,7 +6156,7 @@ module caurinus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 455, 80)) simulus(): gabriellae.echinatus { var x: gabriellae.echinatus; () => { var y = this; }; return x; } ->simulus : Symbol(simulus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 455, 174)) +>simulus : Symbol(mahaganus.simulus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 455, 174)) >gabriellae : Symbol(gabriellae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 766, 1)) >echinatus : Symbol(gabriellae.echinatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 781, 5)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 456, 45)) @@ -6167,7 +6167,7 @@ module caurinus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 456, 45)) nigrovittatus(): caurinus.mahaganus>> { var x: caurinus.mahaganus>>; () => { var y = this; }; return x; } ->nigrovittatus : Symbol(nigrovittatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 456, 107)) +>nigrovittatus : Symbol(mahaganus.nigrovittatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 456, 107)) >caurinus : Symbol(caurinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 449, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 836, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 976, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1007, 1)) >mahaganus : Symbol(mahaganus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 450, 17)) >gabriellae : Symbol(gabriellae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 766, 1)) @@ -6202,7 +6202,7 @@ module caurinus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 457, 165)) senegalensis(): gabriellae.klossii, dammermani.melanops> { var x: gabriellae.klossii, dammermani.melanops>; () => { var y = this; }; return x; } ->senegalensis : Symbol(senegalensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 457, 341)) +>senegalensis : Symbol(mahaganus.senegalensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 457, 341)) >gabriellae : Symbol(gabriellae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 766, 1)) >klossii : Symbol(gabriellae.klossii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 767, 19)) >howi : Symbol(howi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 466, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 681, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 886, 1)) @@ -6229,7 +6229,7 @@ module caurinus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 458, 118)) acticola(): argurus.luctuosa { var x: argurus.luctuosa; () => { var y = this; }; return x; } ->acticola : Symbol(acticola, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 458, 248)) +>acticola : Symbol(mahaganus.acticola, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 458, 248)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) >luctuosa : Symbol(argurus.luctuosa, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 982, 16)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 459, 42)) @@ -6249,7 +6249,7 @@ module macrorhinos { >T1 : Symbol(T1, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 463, 31)) tansaniana(): lutreolus.punicus { var x: lutreolus.punicus; () => { var y = this; }; return x; } ->tansaniana : Symbol(tansaniana, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 463, 37)) +>tansaniana : Symbol(marmosurus.tansaniana, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 463, 37)) >lutreolus : Symbol(lutreolus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 355, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 719, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 855, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 872, 1)) >punicus : Symbol(lutreolus.punicus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 720, 18)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 464, 45)) @@ -6272,7 +6272,7 @@ module howi { >stolzmanni : Symbol(sagitta.stolzmanni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 899, 16)) pennatus(): howi.marcanoi { var x: howi.marcanoi; () => { var y = this; }; return x; } ->pennatus : Symbol(pennatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 468, 63)) +>pennatus : Symbol(angulatus.pennatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 468, 63)) >howi : Symbol(howi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 466, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 681, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 886, 1)) >marcanoi : Symbol(marcanoi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 682, 13)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 469, 39)) @@ -6301,7 +6301,7 @@ module nigra { >T1 : Symbol(T1, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 477, 27)) dichotomus(): quasiater.carolinensis { var x: quasiater.carolinensis; () => { var y = this; }; return x; } ->dichotomus : Symbol(dichotomus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 477, 33)) +>dichotomus : Symbol(thalia.dichotomus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 477, 33)) >quasiater : Symbol(quasiater, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 236, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 422, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 813, 1)) >carolinensis : Symbol(quasiater.carolinensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 423, 18)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 478, 50)) @@ -6312,7 +6312,7 @@ module nigra { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 478, 50)) arnuxii(): panamensis.linulus, lavali.beisa> { var x: panamensis.linulus, lavali.beisa>; () => { var y = this; }; return x; } ->arnuxii : Symbol(arnuxii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 478, 114)) +>arnuxii : Symbol(thalia.arnuxii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 478, 114)) >panamensis : Symbol(panamensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 501, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 986, 1)) >linulus : Symbol(panamensis.linulus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 502, 19)) >trivirgatus : Symbol(trivirgatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 186, 1)) @@ -6339,7 +6339,7 @@ module nigra { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 479, 110)) verheyeni(): lavali.xanthognathus { var x: lavali.xanthognathus; () => { var y = this; }; return x; } ->verheyeni : Symbol(verheyeni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 479, 237)) +>verheyeni : Symbol(thalia.verheyeni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 479, 237)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) >xanthognathus : Symbol(lavali.xanthognathus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 285, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 480, 47)) @@ -6350,7 +6350,7 @@ module nigra { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 480, 47)) dauuricus(): gabriellae.amicus { var x: gabriellae.amicus; () => { var y = this; }; return x; } ->dauuricus : Symbol(dauuricus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 480, 109)) +>dauuricus : Symbol(thalia.dauuricus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 480, 109)) >gabriellae : Symbol(gabriellae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 766, 1)) >amicus : Symbol(gabriellae.amicus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 769, 5)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 481, 44)) @@ -6361,7 +6361,7 @@ module nigra { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 481, 44)) tristriatus(): rionegrensis.veraecrucis> { var x: rionegrensis.veraecrucis>; () => { var y = this; }; return x; } ->tristriatus : Symbol(tristriatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 481, 103)) +>tristriatus : Symbol(thalia.tristriatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 481, 103)) >rionegrensis : Symbol(rionegrensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 0, 0)) >veraecrucis : Symbol(rionegrensis.veraecrucis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 7, 3)) >howi : Symbol(howi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 466, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 681, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 886, 1)) @@ -6388,7 +6388,7 @@ module nigra { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 482, 124)) lasiura(): panglima.abidi>, Lanthanum.nitidus> { var x: panglima.abidi>, Lanthanum.nitidus>; () => { var y = this; }; return x; } ->lasiura : Symbol(lasiura, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 482, 261)) +>lasiura : Symbol(thalia.lasiura, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 482, 261)) >panglima : Symbol(panglima, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 400, 1)) >abidi : Symbol(panglima.abidi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 414, 5)) >samarensis : Symbol(samarensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 531, 1)) @@ -6431,7 +6431,7 @@ module nigra { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 483, 201)) gangetica(): argurus.luctuosa { var x: argurus.luctuosa; () => { var y = this; }; return x; } ->gangetica : Symbol(gangetica, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 483, 419)) +>gangetica : Symbol(thalia.gangetica, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 483, 419)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) >luctuosa : Symbol(argurus.luctuosa, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 982, 16)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 484, 43)) @@ -6442,7 +6442,7 @@ module nigra { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 484, 43)) brucei(): chrysaeolus.sarasinorum { var x: chrysaeolus.sarasinorum; () => { var y = this; }; return x; } ->brucei : Symbol(brucei, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 484, 101)) +>brucei : Symbol(thalia.brucei, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 484, 101)) >chrysaeolus : Symbol(chrysaeolus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 602, 1)) >sarasinorum : Symbol(chrysaeolus.sarasinorum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 603, 20)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) @@ -6471,7 +6471,7 @@ module sagitta { >portoricensis : Symbol(minutus.portoricensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 849, 16)) maracajuensis(): samarensis.cahirinus { var x: samarensis.cahirinus; () => { var y = this; }; return x; } ->maracajuensis : Symbol(maracajuensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 489, 56)) +>maracajuensis : Symbol(walkeri.maracajuensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 489, 56)) >samarensis : Symbol(samarensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 531, 1)) >cahirinus : Symbol(samarensis.cahirinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 569, 5)) >Lanthanum : Symbol(Lanthanum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 106, 1)) @@ -6506,7 +6506,7 @@ module minutus { >durangae : Symbol(julianae.durangae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 94, 3)) vexillaris(): samarensis.cahirinus { var x: samarensis.cahirinus; () => { var y = this; }; return x; } ->vexillaris : Symbol(vexillaris, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 494, 95)) +>vexillaris : Symbol(inez.vexillaris, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 494, 95)) >samarensis : Symbol(samarensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 531, 1)) >cahirinus : Symbol(samarensis.cahirinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 569, 5)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) @@ -6559,7 +6559,7 @@ module panamensis { >walkeri : Symbol(sagitta.walkeri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 488, 16)) goslingi(): daubentonii.arboreus { var x: daubentonii.arboreus; () => { var y = this; }; return x; } ->goslingi : Symbol(goslingi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 503, 137)) +>goslingi : Symbol(linulus.goslingi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 503, 137)) >daubentonii : Symbol(daubentonii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 471, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 586, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 636, 1)) >arboreus : Symbol(daubentonii.arboreus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 637, 20)) >gabriellae : Symbol(gabriellae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 766, 1)) @@ -6578,7 +6578,7 @@ module panamensis { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 504, 85)) taki(): patas.uralensis { var x: patas.uralensis; () => { var y = this; }; return x; } ->taki : Symbol(taki, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 504, 186)) +>taki : Symbol(linulus.taki, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 504, 186)) >patas : Symbol(patas, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 652, 1)) >uralensis : Symbol(patas.uralensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 653, 14)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 505, 37)) @@ -6589,7 +6589,7 @@ module panamensis { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 505, 37)) fumosus(): rendalli.moojeni, lavali.beisa> { var x: rendalli.moojeni, lavali.beisa>; () => { var y = this; }; return x; } ->fumosus : Symbol(fumosus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 505, 94)) +>fumosus : Symbol(linulus.fumosus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 505, 94)) >rendalli : Symbol(rendalli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 151, 1)) >moojeni : Symbol(rendalli.moojeni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 168, 3)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) @@ -6616,7 +6616,7 @@ module panamensis { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 506, 112)) rufinus(): macrorhinos.konganensis { var x: macrorhinos.konganensis; () => { var y = this; }; return x; } ->rufinus : Symbol(rufinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 506, 241)) +>rufinus : Symbol(linulus.rufinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 506, 241)) >macrorhinos : Symbol(macrorhinos, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 461, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 497, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 736, 1)) >konganensis : Symbol(macrorhinos.konganensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 498, 20)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 507, 48)) @@ -6627,7 +6627,7 @@ module panamensis { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 507, 48)) lami(): nigra.thalia { var x: nigra.thalia; () => { var y = this; }; return x; } ->lami : Symbol(lami, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 507, 113)) +>lami : Symbol(linulus.lami, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 507, 113)) >nigra : Symbol(nigra, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 388, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 475, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 514, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 762, 1)) >thalia : Symbol(nigra.thalia, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 476, 14)) >patas : Symbol(patas, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 652, 1)) @@ -6646,7 +6646,7 @@ module panamensis { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 508, 74)) regina(): trivirgatus.oconnelli { var x: trivirgatus.oconnelli; () => { var y = this; }; return x; } ->regina : Symbol(regina, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 508, 168)) +>regina : Symbol(linulus.regina, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 508, 168)) >trivirgatus : Symbol(trivirgatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 186, 1)) >oconnelli : Symbol(trivirgatus.oconnelli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 219, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 509, 45)) @@ -6657,7 +6657,7 @@ module panamensis { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 509, 45)) nanilla(): dammermani.siberu { var x: dammermani.siberu; () => { var y = this; }; return x; } ->nanilla : Symbol(nanilla, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 509, 108)) +>nanilla : Symbol(linulus.nanilla, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 509, 108)) >dammermani : Symbol(dammermani, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 591, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 913, 1)) >siberu : Symbol(dammermani.siberu, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 592, 19)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) @@ -6676,7 +6676,7 @@ module panamensis { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 510, 87)) enganus(): petrophilus.sodyi { var x: petrophilus.sodyi; () => { var y = this; }; return x; } ->enganus : Symbol(enganus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 510, 191)) +>enganus : Symbol(linulus.enganus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 510, 191)) >petrophilus : Symbol(petrophilus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 715, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 823, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 998, 1)) >sodyi : Symbol(petrophilus.sodyi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 824, 20)) >dogramacii : Symbol(dogramacii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 314, 1)) @@ -6695,7 +6695,7 @@ module panamensis { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 511, 76)) gomantongensis(): rionegrensis.veraecrucis> { var x: rionegrensis.veraecrucis>; () => { var y = this; }; return x; } ->gomantongensis : Symbol(gomantongensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 511, 169)) +>gomantongensis : Symbol(linulus.gomantongensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 511, 169)) >rionegrensis : Symbol(rionegrensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 0, 0)) >veraecrucis : Symbol(rionegrensis.veraecrucis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 7, 3)) >caurinus : Symbol(caurinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 449, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 836, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 976, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1007, 1)) @@ -6731,7 +6731,7 @@ module nigra { >T1 : Symbol(T1, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 516, 29)) weddellii(): nigra.dolichurus { var x: nigra.dolichurus; () => { var y = this; }; return x; } ->weddellii : Symbol(weddellii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 516, 35)) +>weddellii : Symbol(gracilis.weddellii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 516, 35)) >nigra : Symbol(nigra, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 388, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 475, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 514, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 762, 1)) >dolichurus : Symbol(dolichurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 389, 14)) >dogramacii : Symbol(dogramacii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 314, 1)) @@ -6750,7 +6750,7 @@ module nigra { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 517, 80)) echinothrix(): Lanthanum.nitidus, argurus.oreas> { var x: Lanthanum.nitidus, argurus.oreas>; () => { var y = this; }; return x; } ->echinothrix : Symbol(echinothrix, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 517, 175)) +>echinothrix : Symbol(gracilis.echinothrix, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 517, 175)) >Lanthanum : Symbol(Lanthanum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 106, 1)) >nitidus : Symbol(Lanthanum.nitidus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 112, 3)) >panglima : Symbol(panglima, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 400, 1)) @@ -6777,7 +6777,7 @@ module nigra { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 518, 120)) garridoi(): dogramacii.koepckeae { var x: dogramacii.koepckeae; () => { var y = this; }; return x; } ->garridoi : Symbol(garridoi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 518, 253)) +>garridoi : Symbol(gracilis.garridoi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 518, 253)) >dogramacii : Symbol(dogramacii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 314, 1)) >koepckeae : Symbol(dogramacii.koepckeae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 326, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 519, 46)) @@ -6788,7 +6788,7 @@ module nigra { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 519, 46)) rouxii(): nigra.gracilis, nigra.thalia> { var x: nigra.gracilis, nigra.thalia>; () => { var y = this; }; return x; } ->rouxii : Symbol(rouxii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 519, 108)) +>rouxii : Symbol(gracilis.rouxii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 519, 108)) >nigra : Symbol(nigra, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 388, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 475, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 514, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 762, 1)) >gracilis : Symbol(gracilis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 515, 14)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) @@ -6823,7 +6823,7 @@ module nigra { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 520, 153)) aurita(): sagitta.stolzmanni { var x: sagitta.stolzmanni; () => { var y = this; }; return x; } ->aurita : Symbol(aurita, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 520, 324)) +>aurita : Symbol(gracilis.aurita, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 520, 324)) >sagitta : Symbol(sagitta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 487, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 577, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 675, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 746, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 898, 1)) >stolzmanni : Symbol(sagitta.stolzmanni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 899, 16)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 521, 42)) @@ -6834,7 +6834,7 @@ module nigra { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 521, 42)) geoffrensis(): rionegrensis.caniventer { var x: rionegrensis.caniventer; () => { var y = this; }; return x; } ->geoffrensis : Symbol(geoffrensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 521, 102)) +>geoffrensis : Symbol(gracilis.geoffrensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 521, 102)) >rionegrensis : Symbol(rionegrensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 0, 0)) >caniventer : Symbol(rionegrensis.caniventer, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 0, 21)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 522, 52)) @@ -6845,7 +6845,7 @@ module nigra { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 522, 52)) theresa(): macrorhinos.marmosurus, argurus.luctuosa>, nigra.dolichurus> { var x: macrorhinos.marmosurus, argurus.luctuosa>, nigra.dolichurus>; () => { var y = this; }; return x; } ->theresa : Symbol(theresa, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 522, 117)) +>theresa : Symbol(gracilis.theresa, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 522, 117)) >macrorhinos : Symbol(macrorhinos, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 461, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 497, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 736, 1)) >marmosurus : Symbol(macrorhinos.marmosurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 462, 20)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) @@ -6888,7 +6888,7 @@ module nigra { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 523, 197)) melanocarpus(): julianae.albidens, julianae.sumatrana> { var x: julianae.albidens, julianae.sumatrana>; () => { var y = this; }; return x; } ->melanocarpus : Symbol(melanocarpus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 523, 411)) +>melanocarpus : Symbol(gracilis.melanocarpus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 523, 411)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) >albidens : Symbol(julianae.albidens, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 34, 3)) >dammermani : Symbol(dammermani, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 591, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 913, 1)) @@ -6915,7 +6915,7 @@ module nigra { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 524, 124)) dubiaquercus(): dogramacii.robustulus { var x: dogramacii.robustulus; () => { var y = this; }; return x; } ->dubiaquercus : Symbol(dubiaquercus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 524, 260)) +>dubiaquercus : Symbol(gracilis.dubiaquercus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 524, 260)) >dogramacii : Symbol(dogramacii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 314, 1)) >robustulus : Symbol(dogramacii.robustulus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 315, 19)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 525, 51)) @@ -6926,7 +6926,7 @@ module nigra { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 525, 51)) pectoralis(): julianae.sumatrana { var x: julianae.sumatrana; () => { var y = this; }; return x; } ->pectoralis : Symbol(pectoralis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 525, 114)) +>pectoralis : Symbol(gracilis.pectoralis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 525, 114)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) >sumatrana : Symbol(julianae.sumatrana, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 58, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 526, 46)) @@ -6937,7 +6937,7 @@ module nigra { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 526, 46)) apoensis(): caurinus.megaphyllus { var x: caurinus.megaphyllus; () => { var y = this; }; return x; } ->apoensis : Symbol(apoensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 526, 106)) +>apoensis : Symbol(gracilis.apoensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 526, 106)) >caurinus : Symbol(caurinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 449, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 836, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 976, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1007, 1)) >megaphyllus : Symbol(caurinus.megaphyllus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 837, 17)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 527, 46)) @@ -6948,7 +6948,7 @@ module nigra { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 527, 46)) grisescens(): Lanthanum.jugularis { var x: Lanthanum.jugularis; () => { var y = this; }; return x; } ->grisescens : Symbol(grisescens, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 527, 108)) +>grisescens : Symbol(gracilis.grisescens, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 527, 108)) >Lanthanum : Symbol(Lanthanum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 106, 1)) >jugularis : Symbol(Lanthanum.jugularis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 134, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 528, 47)) @@ -6959,7 +6959,7 @@ module nigra { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 528, 47)) ramirohitra(): panglima.amphibius { var x: panglima.amphibius; () => { var y = this; }; return x; } ->ramirohitra : Symbol(ramirohitra, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 528, 108)) +>ramirohitra : Symbol(gracilis.ramirohitra, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 528, 108)) >panglima : Symbol(panglima, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 400, 1)) >amphibius : Symbol(panglima.amphibius, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 401, 17)) >trivirgatus : Symbol(trivirgatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 186, 1)) @@ -6990,7 +6990,7 @@ module samarensis { >stolzmanni : Symbol(sagitta.stolzmanni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 899, 16)) Palladium(): panamensis.linulus { var x: panamensis.linulus; () => { var y = this; }; return x; } ->Palladium : Symbol(Palladium, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 533, 61)) +>Palladium : Symbol(pelurus.Palladium, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 533, 61)) >panamensis : Symbol(panamensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 501, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 986, 1)) >linulus : Symbol(panamensis.linulus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 502, 19)) >macrorhinos : Symbol(macrorhinos, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 461, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 497, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 736, 1)) @@ -7009,7 +7009,7 @@ module samarensis { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 534, 95)) castanea(): argurus.netscheri, julianae.oralis> { var x: argurus.netscheri, julianae.oralis>; () => { var y = this; }; return x; } ->castanea : Symbol(castanea, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 534, 205)) +>castanea : Symbol(pelurus.castanea, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 534, 205)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) >netscheri : Symbol(argurus.netscheri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 943, 16)) >minutus : Symbol(minutus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 433, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 492, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 848, 1)) @@ -7044,7 +7044,7 @@ module samarensis { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 535, 152)) chamek(): argurus.pygmaea { var x: argurus.pygmaea; () => { var y = this; }; return x; } ->chamek : Symbol(chamek, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 535, 320)) +>chamek : Symbol(pelurus.chamek, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 535, 320)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) >pygmaea : Symbol(argurus.pygmaea, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 596, 16)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) @@ -7063,7 +7063,7 @@ module samarensis { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 536, 85)) nigriceps(): lutreolus.punicus { var x: lutreolus.punicus; () => { var y = this; }; return x; } ->nigriceps : Symbol(nigriceps, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 536, 188)) +>nigriceps : Symbol(pelurus.nigriceps, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 536, 188)) >lutreolus : Symbol(lutreolus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 355, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 719, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 855, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 872, 1)) >punicus : Symbol(lutreolus.punicus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 720, 18)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 537, 44)) @@ -7074,7 +7074,7 @@ module samarensis { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 537, 44)) lunatus(): pelurus { var x: pelurus; () => { var y = this; }; return x; } ->lunatus : Symbol(lunatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 537, 103)) +>lunatus : Symbol(pelurus.lunatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 537, 103)) >pelurus : Symbol(pelurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 532, 19)) >Lanthanum : Symbol(Lanthanum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 106, 1)) >jugularis : Symbol(Lanthanum.jugularis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 134, 3)) @@ -7091,7 +7091,7 @@ module samarensis { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 538, 70)) madurae(): rionegrensis.caniventer { var x: rionegrensis.caniventer; () => { var y = this; }; return x; } ->madurae : Symbol(madurae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 538, 157)) +>madurae : Symbol(pelurus.madurae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 538, 157)) >rionegrensis : Symbol(rionegrensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 0, 0)) >caniventer : Symbol(rionegrensis.caniventer, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 0, 21)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 539, 48)) @@ -7102,7 +7102,7 @@ module samarensis { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 539, 48)) chinchilla(): macrorhinos.daphaenodon { var x: macrorhinos.daphaenodon; () => { var y = this; }; return x; } ->chinchilla : Symbol(chinchilla, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 539, 113)) +>chinchilla : Symbol(pelurus.chinchilla, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 539, 113)) >macrorhinos : Symbol(macrorhinos, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 461, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 497, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 736, 1)) >daphaenodon : Symbol(macrorhinos.daphaenodon, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 737, 20)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 540, 51)) @@ -7113,7 +7113,7 @@ module samarensis { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 540, 51)) eliasi(): petrophilus.rosalia { var x: petrophilus.rosalia; () => { var y = this; }; return x; } ->eliasi : Symbol(eliasi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 540, 116)) +>eliasi : Symbol(pelurus.eliasi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 540, 116)) >petrophilus : Symbol(petrophilus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 715, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 823, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 998, 1)) >rosalia : Symbol(petrophilus.rosalia, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 999, 20)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) @@ -7132,7 +7132,7 @@ module samarensis { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 541, 75)) proditor(): panamensis.setulosus { var x: panamensis.setulosus; () => { var y = this; }; return x; } ->proditor : Symbol(proditor, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 541, 168)) +>proditor : Symbol(pelurus.proditor, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 541, 168)) >panamensis : Symbol(panamensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 501, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 986, 1)) >setulosus : Symbol(panamensis.setulosus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 987, 19)) >gabriellae : Symbol(gabriellae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 766, 1)) @@ -7151,7 +7151,7 @@ module samarensis { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 542, 86)) gambianus(): quasiater.wattsi> { var x: quasiater.wattsi>; () => { var y = this; }; return x; } ->gambianus : Symbol(gambianus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 542, 188)) +>gambianus : Symbol(pelurus.gambianus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 542, 188)) >quasiater : Symbol(quasiater, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 236, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 422, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 813, 1)) >wattsi : Symbol(quasiater.wattsi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 814, 18)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) @@ -7178,7 +7178,7 @@ module samarensis { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 543, 134)) petteri(): dogramacii.kaiseri { var x: dogramacii.kaiseri; () => { var y = this; }; return x; } ->petteri : Symbol(petteri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 543, 283)) +>petteri : Symbol(pelurus.petteri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 543, 283)) >dogramacii : Symbol(dogramacii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 314, 1)) >kaiseri : Symbol(dogramacii.kaiseri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 329, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 544, 43)) @@ -7189,7 +7189,7 @@ module samarensis { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 544, 43)) nusatenggara(): panglima.amphibius { var x: panglima.amphibius; () => { var y = this; }; return x; } ->nusatenggara : Symbol(nusatenggara, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 544, 103)) +>nusatenggara : Symbol(pelurus.nusatenggara, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 544, 103)) >panglima : Symbol(panglima, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 400, 1)) >amphibius : Symbol(panglima.amphibius, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 401, 17)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) @@ -7208,7 +7208,7 @@ module samarensis { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 545, 89)) olitor(): rionegrensis.veraecrucis { var x: rionegrensis.veraecrucis; () => { var y = this; }; return x; } ->olitor : Symbol(olitor, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 545, 190)) +>olitor : Symbol(pelurus.olitor, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 545, 190)) >rionegrensis : Symbol(rionegrensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 0, 0)) >veraecrucis : Symbol(rionegrensis.veraecrucis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 7, 3)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) @@ -7235,7 +7235,7 @@ module samarensis { >daphaenodon : Symbol(macrorhinos.daphaenodon, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 737, 20)) planifrons(): nigra.gracilis { var x: nigra.gracilis; () => { var y = this; }; return x; } ->planifrons : Symbol(planifrons, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 548, 65)) +>planifrons : Symbol(fuscus.planifrons, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 548, 65)) >nigra : Symbol(nigra, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 388, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 475, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 514, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 762, 1)) >gracilis : Symbol(nigra.gracilis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 515, 14)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) @@ -7254,7 +7254,7 @@ module samarensis { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 549, 82)) badia(): julianae.sumatrana { var x: julianae.sumatrana; () => { var y = this; }; return x; } ->badia : Symbol(badia, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 549, 178)) +>badia : Symbol(fuscus.badia, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 549, 178)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) >sumatrana : Symbol(julianae.sumatrana, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 58, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 550, 41)) @@ -7265,7 +7265,7 @@ module samarensis { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 550, 41)) prymnolopha(): sagitta.walkeri { var x: sagitta.walkeri; () => { var y = this; }; return x; } ->prymnolopha : Symbol(prymnolopha, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 550, 101)) +>prymnolopha : Symbol(fuscus.prymnolopha, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 550, 101)) >sagitta : Symbol(sagitta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 487, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 577, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 675, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 746, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 898, 1)) >walkeri : Symbol(sagitta.walkeri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 488, 16)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 551, 44)) @@ -7276,7 +7276,7 @@ module samarensis { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 551, 44)) natalensis(): trivirgatus.falconeri { var x: trivirgatus.falconeri; () => { var y = this; }; return x; } ->natalensis : Symbol(natalensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 551, 101)) +>natalensis : Symbol(fuscus.natalensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 551, 101)) >trivirgatus : Symbol(trivirgatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 186, 1)) >falconeri : Symbol(trivirgatus.falconeri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 210, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 552, 49)) @@ -7287,7 +7287,7 @@ module samarensis { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 552, 49)) hunteri(): julianae.durangae { var x: julianae.durangae; () => { var y = this; }; return x; } ->hunteri : Symbol(hunteri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 552, 112)) +>hunteri : Symbol(fuscus.hunteri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 552, 112)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) >durangae : Symbol(julianae.durangae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 94, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 553, 42)) @@ -7298,7 +7298,7 @@ module samarensis { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 553, 42)) sapiens(): pallidus { var x: pallidus; () => { var y = this; }; return x; } ->sapiens : Symbol(sapiens, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 553, 101)) +>sapiens : Symbol(fuscus.sapiens, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 553, 101)) >pallidus : Symbol(pallidus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 563, 5)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 554, 33)) >pallidus : Symbol(pallidus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 563, 5)) @@ -7307,7 +7307,7 @@ module samarensis { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 554, 33)) macrocercus(): panamensis.setulosus { var x: panamensis.setulosus; () => { var y = this; }; return x; } ->macrocercus : Symbol(macrocercus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 554, 83)) +>macrocercus : Symbol(fuscus.macrocercus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 554, 83)) >panamensis : Symbol(panamensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 501, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 986, 1)) >setulosus : Symbol(panamensis.setulosus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 987, 19)) >dogramacii : Symbol(dogramacii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 314, 1)) @@ -7326,7 +7326,7 @@ module samarensis { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 555, 91)) nimbae(): lutreolus.punicus { var x: lutreolus.punicus; () => { var y = this; }; return x; } ->nimbae : Symbol(nimbae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 555, 195)) +>nimbae : Symbol(fuscus.nimbae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 555, 195)) >lutreolus : Symbol(lutreolus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 355, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 719, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 855, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 872, 1)) >punicus : Symbol(lutreolus.punicus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 720, 18)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 556, 41)) @@ -7337,7 +7337,7 @@ module samarensis { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 556, 41)) suricatta(): daubentonii.nigricans { var x: daubentonii.nigricans; () => { var y = this; }; return x; } ->suricatta : Symbol(suricatta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 556, 100)) +>suricatta : Symbol(fuscus.suricatta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 556, 100)) >daubentonii : Symbol(daubentonii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 471, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 586, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 636, 1)) >nigricans : Symbol(daubentonii.nigricans, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 587, 20)) >dammermani : Symbol(dammermani, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 591, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 913, 1)) @@ -7356,7 +7356,7 @@ module samarensis { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 557, 93)) jagorii(): julianae.galapagoensis { var x: julianae.galapagoensis; () => { var y = this; }; return x; } ->jagorii : Symbol(jagorii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 557, 201)) +>jagorii : Symbol(fuscus.jagorii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 557, 201)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) >galapagoensis : Symbol(julianae.galapagoensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 25, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 558, 47)) @@ -7367,7 +7367,7 @@ module samarensis { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 558, 47)) beecrofti(): sagitta.stolzmanni { var x: sagitta.stolzmanni; () => { var y = this; }; return x; } ->beecrofti : Symbol(beecrofti, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 558, 111)) +>beecrofti : Symbol(fuscus.beecrofti, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 558, 111)) >sagitta : Symbol(sagitta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 487, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 577, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 675, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 746, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 898, 1)) >stolzmanni : Symbol(sagitta.stolzmanni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 899, 16)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 559, 45)) @@ -7378,7 +7378,7 @@ module samarensis { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 559, 45)) imaizumii(): minutus.inez, gabriellae.echinatus>, dogramacii.aurata>, lavali.otion>, macrorhinos.konganensis> { var x: minutus.inez, gabriellae.echinatus>, dogramacii.aurata>, lavali.otion>, macrorhinos.konganensis>; () => { var y = this; }; return x; } ->imaizumii : Symbol(imaizumii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 559, 105)) +>imaizumii : Symbol(fuscus.imaizumii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 559, 105)) >minutus : Symbol(minutus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 433, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 492, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 848, 1)) >inez : Symbol(minutus.inez, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 493, 16)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) @@ -7429,7 +7429,7 @@ module samarensis { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 560, 233)) colocolo(): quasiater.bobrinskoi { var x: quasiater.bobrinskoi; () => { var y = this; }; return x; } ->colocolo : Symbol(colocolo, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 560, 481)) +>colocolo : Symbol(fuscus.colocolo, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 560, 481)) >quasiater : Symbol(quasiater, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 236, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 422, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 813, 1)) >bobrinskoi : Symbol(quasiater.bobrinskoi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 237, 18)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 561, 46)) @@ -7440,7 +7440,7 @@ module samarensis { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 561, 46)) wolfi(): petrophilus.rosalia> { var x: petrophilus.rosalia>; () => { var y = this; }; return x; } ->wolfi : Symbol(wolfi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 561, 108)) +>wolfi : Symbol(fuscus.wolfi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 561, 108)) >petrophilus : Symbol(petrophilus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 715, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 823, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 998, 1)) >rosalia : Symbol(petrophilus.rosalia, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 999, 20)) >Lanthanum : Symbol(Lanthanum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 106, 1)) @@ -7470,7 +7470,7 @@ module samarensis { >pallidus : Symbol(pallidus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 563, 5)) oblativa(): trivirgatus.falconeri { var x: trivirgatus.falconeri; () => { var y = this; }; return x; } ->oblativa : Symbol(oblativa, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 564, 27)) +>oblativa : Symbol(pallidus.oblativa, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 564, 27)) >trivirgatus : Symbol(trivirgatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 186, 1)) >falconeri : Symbol(trivirgatus.falconeri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 210, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 565, 47)) @@ -7481,7 +7481,7 @@ module samarensis { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 565, 47)) watersi(): lavali.wilsoni { var x: lavali.wilsoni; () => { var y = this; }; return x; } ->watersi : Symbol(watersi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 565, 110)) +>watersi : Symbol(pallidus.watersi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 565, 110)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) >wilsoni : Symbol(lavali.wilsoni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 253, 15)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 566, 39)) @@ -7492,7 +7492,7 @@ module samarensis { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 566, 39)) glacialis(): sagitta.cinereus, quasiater.wattsi>> { var x: sagitta.cinereus, quasiater.wattsi>>; () => { var y = this; }; return x; } ->glacialis : Symbol(glacialis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 566, 95)) +>glacialis : Symbol(pallidus.glacialis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 566, 95)) >sagitta : Symbol(sagitta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 487, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 577, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 675, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 746, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 898, 1)) >cinereus : Symbol(sagitta.cinereus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 747, 16)) >nigra : Symbol(nigra, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 388, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 475, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 514, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 762, 1)) @@ -7535,7 +7535,7 @@ module samarensis { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 567, 212)) viaria(): chrysaeolus.sarasinorum { var x: chrysaeolus.sarasinorum; () => { var y = this; }; return x; } ->viaria : Symbol(viaria, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 567, 439)) +>viaria : Symbol(pallidus.viaria, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 567, 439)) >chrysaeolus : Symbol(chrysaeolus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 602, 1)) >sarasinorum : Symbol(chrysaeolus.sarasinorum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 603, 20)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) @@ -7559,7 +7559,7 @@ module samarensis { >T1 : Symbol(T1, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 570, 30)) alashanicus(): nigra.caucasica { var x: nigra.caucasica; () => { var y = this; }; return x; } ->alashanicus : Symbol(alashanicus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 570, 36)) +>alashanicus : Symbol(cahirinus.alashanicus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 570, 36)) >nigra : Symbol(nigra, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 388, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 475, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 514, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 762, 1)) >caucasica : Symbol(nigra.caucasica, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 763, 14)) >ruatanica : Symbol(ruatanica, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 100, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 244, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 959, 1)) @@ -7578,7 +7578,7 @@ module samarensis { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 571, 86)) flaviventer(): trivirgatus.tumidifrons> { var x: trivirgatus.tumidifrons>; () => { var y = this; }; return x; } ->flaviventer : Symbol(flaviventer, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 571, 185)) +>flaviventer : Symbol(cahirinus.flaviventer, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 571, 185)) >trivirgatus : Symbol(trivirgatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 186, 1)) >tumidifrons : Symbol(trivirgatus.tumidifrons, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 187, 20)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) @@ -7605,7 +7605,7 @@ module samarensis { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 572, 134)) bottai(): lutreolus.schlegeli { var x: lutreolus.schlegeli; () => { var y = this; }; return x; } ->bottai : Symbol(bottai, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 572, 281)) +>bottai : Symbol(cahirinus.bottai, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 572, 281)) >lutreolus : Symbol(lutreolus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 355, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 719, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 855, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 872, 1)) >schlegeli : Symbol(lutreolus.schlegeli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 356, 18)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 573, 43)) @@ -7616,7 +7616,7 @@ module samarensis { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 573, 43)) pinetis(): argurus.oreas { var x: argurus.oreas; () => { var y = this; }; return x; } ->pinetis : Symbol(pinetis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 573, 104)) +>pinetis : Symbol(cahirinus.pinetis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 573, 104)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) >oreas : Symbol(argurus.oreas, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 625, 16)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 574, 38)) @@ -7627,7 +7627,7 @@ module samarensis { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 574, 38)) saussurei(): rendalli.crenulata, argurus.netscheri, julianae.oralis>> { var x: rendalli.crenulata, argurus.netscheri, julianae.oralis>>; () => { var y = this; }; return x; } ->saussurei : Symbol(saussurei, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 574, 93)) +>saussurei : Symbol(cahirinus.saussurei, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 574, 93)) >rendalli : Symbol(rendalli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 151, 1)) >crenulata : Symbol(rendalli.crenulata, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 180, 3)) >gabriellae : Symbol(gabriellae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 766, 1)) @@ -7698,7 +7698,7 @@ module sagitta { >stolzmanni : Symbol(stolzmanni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 899, 16)) victus(): rionegrensis.caniventer { var x: rionegrensis.caniventer; () => { var y = this; }; return x; } ->victus : Symbol(victus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 579, 145)) +>victus : Symbol(leptoceros.victus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 579, 145)) >rionegrensis : Symbol(rionegrensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 0, 0)) >caniventer : Symbol(rionegrensis.caniventer, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 0, 21)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 580, 47)) @@ -7709,7 +7709,7 @@ module sagitta { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 580, 47)) hoplomyoides(): panglima.fundatus, nigra.gracilis> { var x: panglima.fundatus, nigra.gracilis>; () => { var y = this; }; return x; } ->hoplomyoides : Symbol(hoplomyoides, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 580, 112)) +>hoplomyoides : Symbol(leptoceros.hoplomyoides, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 580, 112)) >panglima : Symbol(panglima, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 400, 1)) >fundatus : Symbol(panglima.fundatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 409, 5)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) @@ -7744,7 +7744,7 @@ module sagitta { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 581, 168)) gratiosus(): lavali.lepturus { var x: lavali.lepturus; () => { var y = this; }; return x; } ->gratiosus : Symbol(gratiosus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 581, 348)) +>gratiosus : Symbol(leptoceros.gratiosus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 581, 348)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) >lepturus : Symbol(lavali.lepturus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 309, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 582, 42)) @@ -7755,7 +7755,7 @@ module sagitta { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 582, 42)) rex(): lavali.wilsoni { var x: lavali.wilsoni; () => { var y = this; }; return x; } ->rex : Symbol(rex, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 582, 99)) +>rex : Symbol(leptoceros.rex, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 582, 99)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) >wilsoni : Symbol(lavali.wilsoni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 253, 15)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 583, 35)) @@ -7766,7 +7766,7 @@ module sagitta { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 583, 35)) bolami(): trivirgatus.tumidifrons { var x: trivirgatus.tumidifrons; () => { var y = this; }; return x; } ->bolami : Symbol(bolami, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 583, 91)) +>bolami : Symbol(leptoceros.bolami, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 583, 91)) >trivirgatus : Symbol(trivirgatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 186, 1)) >tumidifrons : Symbol(trivirgatus.tumidifrons, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 187, 20)) >lutreolus : Symbol(lutreolus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 355, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 719, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 855, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 872, 1)) @@ -7797,7 +7797,7 @@ module daubentonii { >stolzmanni : Symbol(sagitta.stolzmanni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 899, 16)) woosnami(): dogramacii.robustulus { var x: dogramacii.robustulus; () => { var y = this; }; return x; } ->woosnami : Symbol(woosnami, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 588, 63)) +>woosnami : Symbol(nigricans.woosnami, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 588, 63)) >dogramacii : Symbol(dogramacii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 314, 1)) >robustulus : Symbol(dogramacii.robustulus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 315, 19)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 589, 47)) @@ -7833,7 +7833,7 @@ module argurus { >echinatus : Symbol(gabriellae.echinatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 781, 5)) pajeros(): gabriellae.echinatus { var x: gabriellae.echinatus; () => { var y = this; }; return x; } ->pajeros : Symbol(pajeros, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 597, 106)) +>pajeros : Symbol(pygmaea.pajeros, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 597, 106)) >gabriellae : Symbol(gabriellae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 766, 1)) >echinatus : Symbol(gabriellae.echinatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 781, 5)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 598, 45)) @@ -7844,7 +7844,7 @@ module argurus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 598, 45)) capucinus(): rendalli.zuluensis { var x: rendalli.zuluensis; () => { var y = this; }; return x; } ->capucinus : Symbol(capucinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 598, 107)) +>capucinus : Symbol(pygmaea.capucinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 598, 107)) >rendalli : Symbol(rendalli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 151, 1)) >zuluensis : Symbol(rendalli.zuluensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 152, 17)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 599, 45)) @@ -7855,7 +7855,7 @@ module argurus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 599, 45)) cuvieri(): rionegrensis.caniventer { var x: rionegrensis.caniventer; () => { var y = this; }; return x; } ->cuvieri : Symbol(cuvieri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 599, 105)) +>cuvieri : Symbol(pygmaea.cuvieri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 599, 105)) >rionegrensis : Symbol(rionegrensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 0, 0)) >caniventer : Symbol(rionegrensis.caniventer, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 0, 21)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 600, 48)) @@ -7878,7 +7878,7 @@ module chrysaeolus { >psilurus : Symbol(caurinus.psilurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1008, 17)) belzebul(): samarensis.pallidus { var x: samarensis.pallidus; () => { var y = this; }; return x; } ->belzebul : Symbol(belzebul, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 604, 64)) +>belzebul : Symbol(sarasinorum.belzebul, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 604, 64)) >samarensis : Symbol(samarensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 531, 1)) >pallidus : Symbol(samarensis.pallidus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 563, 5)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 605, 45)) @@ -7889,7 +7889,7 @@ module chrysaeolus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 605, 45)) hinpoon(): nigra.caucasica { var x: nigra.caucasica; () => { var y = this; }; return x; } ->hinpoon : Symbol(hinpoon, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 605, 106)) +>hinpoon : Symbol(sarasinorum.hinpoon, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 605, 106)) >nigra : Symbol(nigra, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 388, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 475, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 514, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 762, 1)) >caucasica : Symbol(nigra.caucasica, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 763, 14)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) @@ -7908,7 +7908,7 @@ module chrysaeolus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 606, 83)) kandti(): quasiater.wattsi { var x: quasiater.wattsi; () => { var y = this; }; return x; } ->kandti : Symbol(kandti, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 606, 183)) +>kandti : Symbol(sarasinorum.kandti, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 606, 183)) >quasiater : Symbol(quasiater, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 236, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 422, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 813, 1)) >wattsi : Symbol(quasiater.wattsi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 814, 18)) >Lanthanum : Symbol(Lanthanum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 106, 1)) @@ -7927,7 +7927,7 @@ module chrysaeolus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 607, 81)) cynosuros(): dammermani.melanops { var x: dammermani.melanops; () => { var y = this; }; return x; } ->cynosuros : Symbol(cynosuros, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 607, 180)) +>cynosuros : Symbol(sarasinorum.cynosuros, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 607, 180)) >dammermani : Symbol(dammermani, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 591, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 913, 1)) >melanops : Symbol(dammermani.melanops, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 914, 19)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 608, 46)) @@ -7938,7 +7938,7 @@ module chrysaeolus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 608, 46)) Germanium(): lavali.beisa { var x: lavali.beisa; () => { var y = this; }; return x; } ->Germanium : Symbol(Germanium, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 608, 107)) +>Germanium : Symbol(sarasinorum.Germanium, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 608, 107)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) >beisa : Symbol(lavali.beisa, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 268, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 609, 39)) @@ -7949,7 +7949,7 @@ module chrysaeolus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 609, 39)) Ununoctium(): nigra.gracilis { var x: nigra.gracilis; () => { var y = this; }; return x; } ->Ununoctium : Symbol(Ununoctium, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 609, 93)) +>Ununoctium : Symbol(sarasinorum.Ununoctium, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 609, 93)) >nigra : Symbol(nigra, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 388, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 475, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 514, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 762, 1)) >gracilis : Symbol(nigra.gracilis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 515, 14)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) @@ -7968,7 +7968,7 @@ module chrysaeolus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 610, 86)) princeps(): minutus.portoricensis { var x: minutus.portoricensis; () => { var y = this; }; return x; } ->princeps : Symbol(princeps, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 610, 186)) +>princeps : Symbol(sarasinorum.princeps, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 610, 186)) >minutus : Symbol(minutus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 433, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 492, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 848, 1)) >portoricensis : Symbol(minutus.portoricensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 849, 16)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 611, 47)) @@ -7988,7 +7988,7 @@ module argurus { >T1 : Symbol(T1, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 615, 29)) leucoptera(): petrophilus.rosalia { var x: petrophilus.rosalia; () => { var y = this; }; return x; } ->leucoptera : Symbol(leucoptera, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 615, 35)) +>leucoptera : Symbol(wetmorei.leucoptera, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 615, 35)) >petrophilus : Symbol(petrophilus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 715, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 823, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 998, 1)) >rosalia : Symbol(petrophilus.rosalia, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 999, 20)) >dogramacii : Symbol(dogramacii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 314, 1)) @@ -8007,7 +8007,7 @@ module argurus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 616, 86)) ochraventer(): sagitta.walkeri { var x: sagitta.walkeri; () => { var y = this; }; return x; } ->ochraventer : Symbol(ochraventer, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 616, 186)) +>ochraventer : Symbol(wetmorei.ochraventer, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 616, 186)) >sagitta : Symbol(sagitta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 487, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 577, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 675, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 746, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 898, 1)) >walkeri : Symbol(sagitta.walkeri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 488, 16)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 617, 44)) @@ -8018,7 +8018,7 @@ module argurus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 617, 44)) tephromelas(): Lanthanum.jugularis { var x: Lanthanum.jugularis; () => { var y = this; }; return x; } ->tephromelas : Symbol(tephromelas, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 617, 101)) +>tephromelas : Symbol(wetmorei.tephromelas, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 617, 101)) >Lanthanum : Symbol(Lanthanum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 106, 1)) >jugularis : Symbol(Lanthanum.jugularis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 134, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 618, 48)) @@ -8029,7 +8029,7 @@ module argurus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 618, 48)) cracens(): argurus.gilbertii { var x: argurus.gilbertii; () => { var y = this; }; return x; } ->cracens : Symbol(cracens, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 618, 109)) +>cracens : Symbol(wetmorei.cracens, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 618, 109)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) >gilbertii : Symbol(gilbertii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 700, 16)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) @@ -8048,7 +8048,7 @@ module argurus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 619, 78)) jamaicensis(): nigra.thalia> { var x: nigra.thalia>; () => { var y = this; }; return x; } ->jamaicensis : Symbol(jamaicensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 619, 173)) +>jamaicensis : Symbol(wetmorei.jamaicensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 619, 173)) >nigra : Symbol(nigra, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 388, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 475, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 514, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 762, 1)) >thalia : Symbol(nigra.thalia, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 476, 14)) >howi : Symbol(howi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 466, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 681, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 886, 1)) @@ -8075,7 +8075,7 @@ module argurus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 620, 129)) gymnocaudus(): dogramacii.aurata { var x: dogramacii.aurata; () => { var y = this; }; return x; } ->gymnocaudus : Symbol(gymnocaudus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 620, 271)) +>gymnocaudus : Symbol(wetmorei.gymnocaudus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 620, 271)) >dogramacii : Symbol(dogramacii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 314, 1)) >aurata : Symbol(dogramacii.aurata, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 344, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 621, 46)) @@ -8086,7 +8086,7 @@ module argurus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 621, 46)) mayori(): sagitta.stolzmanni { var x: sagitta.stolzmanni; () => { var y = this; }; return x; } ->mayori : Symbol(mayori, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 621, 105)) +>mayori : Symbol(wetmorei.mayori, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 621, 105)) >sagitta : Symbol(sagitta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 487, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 577, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 675, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 746, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 898, 1)) >stolzmanni : Symbol(sagitta.stolzmanni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 899, 16)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 622, 42)) @@ -8107,7 +8107,7 @@ module argurus { >wilsoni : Symbol(lavali.wilsoni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 253, 15)) salamonis(): lavali.xanthognathus { var x: lavali.xanthognathus; () => { var y = this; }; return x; } ->salamonis : Symbol(salamonis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 626, 47)) +>salamonis : Symbol(oreas.salamonis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 626, 47)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) >xanthognathus : Symbol(lavali.xanthognathus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 285, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 627, 47)) @@ -8118,7 +8118,7 @@ module argurus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 627, 47)) paniscus(): ruatanica.Praseodymium { var x: ruatanica.Praseodymium; () => { var y = this; }; return x; } ->paniscus : Symbol(paniscus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 627, 109)) +>paniscus : Symbol(oreas.paniscus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 627, 109)) >ruatanica : Symbol(ruatanica, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 100, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 244, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 959, 1)) >Praseodymium : Symbol(ruatanica.Praseodymium, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 960, 18)) >caurinus : Symbol(caurinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 449, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 836, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 976, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1007, 1)) @@ -8137,7 +8137,7 @@ module argurus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 628, 89)) fagani(): trivirgatus.oconnelli { var x: trivirgatus.oconnelli; () => { var y = this; }; return x; } ->fagani : Symbol(fagani, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 628, 194)) +>fagani : Symbol(oreas.fagani, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 628, 194)) >trivirgatus : Symbol(trivirgatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 186, 1)) >oconnelli : Symbol(trivirgatus.oconnelli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 219, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 629, 45)) @@ -8148,7 +8148,7 @@ module argurus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 629, 45)) papuanus(): panglima.fundatus { var x: panglima.fundatus; () => { var y = this; }; return x; } ->papuanus : Symbol(papuanus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 629, 108)) +>papuanus : Symbol(oreas.papuanus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 629, 108)) >panglima : Symbol(panglima, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 400, 1)) >fundatus : Symbol(panglima.fundatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 409, 5)) >quasiater : Symbol(quasiater, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 236, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 422, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 813, 1)) @@ -8167,7 +8167,7 @@ module argurus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 630, 92)) timidus(): dammermani.melanops { var x: dammermani.melanops; () => { var y = this; }; return x; } ->timidus : Symbol(timidus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 630, 200)) +>timidus : Symbol(oreas.timidus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 630, 200)) >dammermani : Symbol(dammermani, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 591, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 913, 1)) >melanops : Symbol(dammermani.melanops, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 914, 19)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 631, 44)) @@ -8178,7 +8178,7 @@ module argurus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 631, 44)) nghetinhensis(): gabriellae.klossii { var x: gabriellae.klossii; () => { var y = this; }; return x; } ->nghetinhensis : Symbol(nghetinhensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 631, 105)) +>nghetinhensis : Symbol(oreas.nghetinhensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 631, 105)) >gabriellae : Symbol(gabriellae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 766, 1)) >klossii : Symbol(gabriellae.klossii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 767, 19)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) @@ -8197,7 +8197,7 @@ module argurus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 632, 85)) barbei(): samarensis.cahirinus { var x: samarensis.cahirinus; () => { var y = this; }; return x; } ->barbei : Symbol(barbei, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 632, 181)) +>barbei : Symbol(oreas.barbei, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 632, 181)) >samarensis : Symbol(samarensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 531, 1)) >cahirinus : Symbol(samarensis.cahirinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 569, 5)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) @@ -8216,7 +8216,7 @@ module argurus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 633, 85)) univittatus(): argurus.peninsulae { var x: argurus.peninsulae; () => { var y = this; }; return x; } ->univittatus : Symbol(univittatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 633, 188)) +>univittatus : Symbol(oreas.univittatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 633, 188)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) >peninsulae : Symbol(peninsulae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 931, 16)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 634, 47)) @@ -8236,7 +8236,7 @@ module daubentonii { >T1 : Symbol(T1, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 638, 29)) capreolus(): rendalli.crenulata, lavali.wilsoni> { var x: rendalli.crenulata, lavali.wilsoni>; () => { var y = this; }; return x; } ->capreolus : Symbol(capreolus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 638, 35)) +>capreolus : Symbol(arboreus.capreolus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 638, 35)) >rendalli : Symbol(rendalli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 151, 1)) >crenulata : Symbol(rendalli.crenulata, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 180, 3)) >samarensis : Symbol(samarensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 531, 1)) @@ -8263,7 +8263,7 @@ module daubentonii { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 639, 124)) moreni(): panglima.abidi { var x: panglima.abidi; () => { var y = this; }; return x; } ->moreni : Symbol(moreni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 639, 263)) +>moreni : Symbol(arboreus.moreni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 639, 263)) >panglima : Symbol(panglima, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 400, 1)) >abidi : Symbol(panglima.abidi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 414, 5)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) @@ -8282,7 +8282,7 @@ module daubentonii { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 640, 84)) hypoleucos(): nigra.gracilis { var x: nigra.gracilis; () => { var y = this; }; return x; } ->hypoleucos : Symbol(hypoleucos, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 640, 186)) +>hypoleucos : Symbol(arboreus.hypoleucos, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 640, 186)) >nigra : Symbol(nigra, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 388, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 475, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 514, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 762, 1)) >gracilis : Symbol(nigra.gracilis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 515, 14)) >trivirgatus : Symbol(trivirgatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 186, 1)) @@ -8301,7 +8301,7 @@ module daubentonii { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 641, 83)) paedulcus(): minutus.portoricensis { var x: minutus.portoricensis; () => { var y = this; }; return x; } ->paedulcus : Symbol(paedulcus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 641, 180)) +>paedulcus : Symbol(arboreus.paedulcus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 641, 180)) >minutus : Symbol(minutus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 433, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 492, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 848, 1)) >portoricensis : Symbol(minutus.portoricensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 849, 16)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 642, 48)) @@ -8312,7 +8312,7 @@ module daubentonii { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 642, 48)) pucheranii(): samarensis.fuscus { var x: samarensis.fuscus; () => { var y = this; }; return x; } ->pucheranii : Symbol(pucheranii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 642, 111)) +>pucheranii : Symbol(arboreus.pucheranii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 642, 111)) >samarensis : Symbol(samarensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 531, 1)) >fuscus : Symbol(samarensis.fuscus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 547, 5)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) @@ -8331,7 +8331,7 @@ module daubentonii { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 643, 86)) stella(): julianae.oralis { var x: julianae.oralis; () => { var y = this; }; return x; } ->stella : Symbol(stella, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 643, 186)) +>stella : Symbol(arboreus.stella, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 643, 186)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) >oralis : Symbol(julianae.oralis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 43, 3)) >lutreolus : Symbol(lutreolus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 355, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 719, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 855, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 872, 1)) @@ -8350,7 +8350,7 @@ module daubentonii { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 644, 80)) brasiliensis(): imperfecta.subspinosus { var x: imperfecta.subspinosus; () => { var y = this; }; return x; } ->brasiliensis : Symbol(brasiliensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 644, 178)) +>brasiliensis : Symbol(arboreus.brasiliensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 644, 178)) >imperfecta : Symbol(imperfecta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 785, 1)) >subspinosus : Symbol(imperfecta.subspinosus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 794, 5)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 645, 52)) @@ -8361,7 +8361,7 @@ module daubentonii { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 645, 52)) brevicaudata(): trivirgatus.oconnelli { var x: trivirgatus.oconnelli; () => { var y = this; }; return x; } ->brevicaudata : Symbol(brevicaudata, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 645, 116)) +>brevicaudata : Symbol(arboreus.brevicaudata, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 645, 116)) >trivirgatus : Symbol(trivirgatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 186, 1)) >oconnelli : Symbol(trivirgatus.oconnelli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 219, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 646, 51)) @@ -8372,7 +8372,7 @@ module daubentonii { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 646, 51)) vitticollis(): dogramacii.koepckeae { var x: dogramacii.koepckeae; () => { var y = this; }; return x; } ->vitticollis : Symbol(vitticollis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 646, 114)) +>vitticollis : Symbol(arboreus.vitticollis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 646, 114)) >dogramacii : Symbol(dogramacii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 314, 1)) >koepckeae : Symbol(dogramacii.koepckeae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 326, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 647, 49)) @@ -8383,7 +8383,7 @@ module daubentonii { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 647, 49)) huangensis(): caurinus.psilurus { var x: caurinus.psilurus; () => { var y = this; }; return x; } ->huangensis : Symbol(huangensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 647, 111)) +>huangensis : Symbol(arboreus.huangensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 647, 111)) >caurinus : Symbol(caurinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 449, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 836, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 976, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1007, 1)) >psilurus : Symbol(caurinus.psilurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1008, 17)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 648, 45)) @@ -8394,7 +8394,7 @@ module daubentonii { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 648, 45)) cameroni(): petrophilus.rosalia, imperfecta.ciliolabrum>, caurinus.psilurus> { var x: petrophilus.rosalia, imperfecta.ciliolabrum>, caurinus.psilurus>; () => { var y = this; }; return x; } ->cameroni : Symbol(cameroni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 648, 104)) +>cameroni : Symbol(arboreus.cameroni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 648, 104)) >petrophilus : Symbol(petrophilus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 715, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 823, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 998, 1)) >rosalia : Symbol(petrophilus.rosalia, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 999, 20)) >dammermani : Symbol(dammermani, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 591, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 913, 1)) @@ -8437,7 +8437,7 @@ module daubentonii { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 649, 210)) tianshanica(): howi.marcanoi { var x: howi.marcanoi; () => { var y = this; }; return x; } ->tianshanica : Symbol(tianshanica, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 649, 436)) +>tianshanica : Symbol(arboreus.tianshanica, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 649, 436)) >howi : Symbol(howi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 466, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 681, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 886, 1)) >marcanoi : Symbol(howi.marcanoi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 682, 13)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 650, 42)) @@ -8455,7 +8455,7 @@ module patas { >uralensis : Symbol(uralensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 653, 14)) cartilagonodus(): Lanthanum.nitidus { var x: Lanthanum.nitidus; () => { var y = this; }; return x; } ->cartilagonodus : Symbol(cartilagonodus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 654, 28)) +>cartilagonodus : Symbol(uralensis.cartilagonodus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 654, 28)) >Lanthanum : Symbol(Lanthanum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 106, 1)) >nitidus : Symbol(Lanthanum.nitidus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 112, 3)) >rionegrensis : Symbol(rionegrensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 0, 0)) @@ -8474,7 +8474,7 @@ module patas { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 655, 95)) pyrrhinus(): lavali.beisa { var x: lavali.beisa; () => { var y = this; }; return x; } ->pyrrhinus : Symbol(pyrrhinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 655, 200)) +>pyrrhinus : Symbol(uralensis.pyrrhinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 655, 200)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) >beisa : Symbol(lavali.beisa, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 268, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 656, 39)) @@ -8485,7 +8485,7 @@ module patas { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 656, 39)) insulans(): Lanthanum.jugularis { var x: Lanthanum.jugularis; () => { var y = this; }; return x; } ->insulans : Symbol(insulans, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 656, 93)) +>insulans : Symbol(uralensis.insulans, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 656, 93)) >Lanthanum : Symbol(Lanthanum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 106, 1)) >jugularis : Symbol(Lanthanum.jugularis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 134, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 657, 45)) @@ -8496,7 +8496,7 @@ module patas { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 657, 45)) nigricauda(): caurinus.johorensis, Lanthanum.jugularis> { var x: caurinus.johorensis, Lanthanum.jugularis>; () => { var y = this; }; return x; } ->nigricauda : Symbol(nigricauda, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 657, 106)) +>nigricauda : Symbol(uralensis.nigricauda, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 657, 106)) >caurinus : Symbol(caurinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 449, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 836, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 976, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1007, 1)) >johorensis : Symbol(caurinus.johorensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 977, 17)) >Lanthanum : Symbol(Lanthanum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 106, 1)) @@ -8523,7 +8523,7 @@ module patas { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 658, 130)) muricauda(): panglima.fundatus> { var x: panglima.fundatus>; () => { var y = this; }; return x; } ->muricauda : Symbol(muricauda, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 658, 274)) +>muricauda : Symbol(uralensis.muricauda, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 658, 274)) >panglima : Symbol(panglima, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 400, 1)) >fundatus : Symbol(panglima.fundatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 409, 5)) >lutreolus : Symbol(lutreolus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 355, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 719, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 855, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 872, 1)) @@ -8550,7 +8550,7 @@ module patas { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 659, 120)) albicaudus(): sagitta.stolzmanni { var x: sagitta.stolzmanni; () => { var y = this; }; return x; } ->albicaudus : Symbol(albicaudus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 659, 255)) +>albicaudus : Symbol(uralensis.albicaudus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 659, 255)) >sagitta : Symbol(sagitta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 487, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 577, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 675, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 746, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 898, 1)) >stolzmanni : Symbol(sagitta.stolzmanni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 899, 16)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 660, 46)) @@ -8561,7 +8561,7 @@ module patas { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 660, 46)) fallax(): ruatanica.hector { var x: ruatanica.hector; () => { var y = this; }; return x; } ->fallax : Symbol(fallax, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 660, 106)) +>fallax : Symbol(uralensis.fallax, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 660, 106)) >ruatanica : Symbol(ruatanica, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 100, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 244, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 959, 1)) >hector : Symbol(ruatanica.hector, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 101, 18)) >lutreolus : Symbol(lutreolus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 355, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 719, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 855, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 872, 1)) @@ -8580,7 +8580,7 @@ module patas { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 661, 78)) attenuata(): macrorhinos.marmosurus> { var x: macrorhinos.marmosurus>; () => { var y = this; }; return x; } ->attenuata : Symbol(attenuata, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 661, 174)) +>attenuata : Symbol(uralensis.attenuata, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 661, 174)) >macrorhinos : Symbol(macrorhinos, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 461, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 497, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 736, 1)) >marmosurus : Symbol(macrorhinos.marmosurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 462, 20)) >ruatanica : Symbol(ruatanica, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 100, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 244, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 959, 1)) @@ -8607,7 +8607,7 @@ module patas { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 662, 134)) megalura(): howi.marcanoi { var x: howi.marcanoi; () => { var y = this; }; return x; } ->megalura : Symbol(megalura, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 662, 283)) +>megalura : Symbol(uralensis.megalura, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 662, 283)) >howi : Symbol(howi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 466, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 681, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 886, 1)) >marcanoi : Symbol(howi.marcanoi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 682, 13)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 663, 39)) @@ -8618,7 +8618,7 @@ module patas { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 663, 39)) neblina(): samarensis.pelurus { var x: samarensis.pelurus; () => { var y = this; }; return x; } ->neblina : Symbol(neblina, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 663, 94)) +>neblina : Symbol(uralensis.neblina, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 663, 94)) >samarensis : Symbol(samarensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 531, 1)) >pelurus : Symbol(samarensis.pelurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 532, 19)) >macrorhinos : Symbol(macrorhinos, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 461, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 497, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 736, 1)) @@ -8637,7 +8637,7 @@ module patas { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 664, 93)) citellus(): daubentonii.arboreus { var x: daubentonii.arboreus; () => { var y = this; }; return x; } ->citellus : Symbol(citellus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 664, 203)) +>citellus : Symbol(uralensis.citellus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 664, 203)) >daubentonii : Symbol(daubentonii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 471, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 586, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 636, 1)) >arboreus : Symbol(daubentonii.arboreus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 637, 20)) >quasiater : Symbol(quasiater, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 236, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 422, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 813, 1)) @@ -8656,7 +8656,7 @@ module patas { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 665, 95)) tanezumi(): imperfecta.lasiurus { var x: imperfecta.lasiurus; () => { var y = this; }; return x; } ->tanezumi : Symbol(tanezumi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 665, 206)) +>tanezumi : Symbol(uralensis.tanezumi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 665, 206)) >imperfecta : Symbol(imperfecta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 785, 1)) >lasiurus : Symbol(imperfecta.lasiurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 786, 19)) >dogramacii : Symbol(dogramacii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 314, 1)) @@ -8675,7 +8675,7 @@ module patas { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 666, 87)) albiventer(): rendalli.crenulata { var x: rendalli.crenulata; () => { var y = this; }; return x; } ->albiventer : Symbol(albiventer, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 666, 190)) +>albiventer : Symbol(uralensis.albiventer, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 666, 190)) >rendalli : Symbol(rendalli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 151, 1)) >crenulata : Symbol(rendalli.crenulata, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 180, 3)) >rendalli : Symbol(rendalli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 151, 1)) @@ -8704,7 +8704,7 @@ module provocax { >wilsoni : Symbol(lavali.wilsoni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 253, 15)) Neodymium(): macrorhinos.marmosurus, lutreolus.foina> { var x: macrorhinos.marmosurus, lutreolus.foina>; () => { var y = this; }; return x; } ->Neodymium : Symbol(Neodymium, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 671, 53)) +>Neodymium : Symbol(melanoleuca.Neodymium, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 671, 53)) >macrorhinos : Symbol(macrorhinos, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 461, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 497, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 736, 1)) >marmosurus : Symbol(macrorhinos.marmosurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 462, 20)) >petrophilus : Symbol(petrophilus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 715, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 823, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 998, 1)) @@ -8731,7 +8731,7 @@ module provocax { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 672, 130)) baeri(): imperfecta.lasiurus { var x: imperfecta.lasiurus; () => { var y = this; }; return x; } ->baeri : Symbol(baeri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 672, 275)) +>baeri : Symbol(melanoleuca.baeri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 672, 275)) >imperfecta : Symbol(imperfecta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 785, 1)) >lasiurus : Symbol(imperfecta.lasiurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 786, 19)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) @@ -8759,7 +8759,7 @@ module sagitta { >T1 : Symbol(T1, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 677, 29)) Chlorine(): samarensis.cahirinus, dogramacii.robustulus> { var x: samarensis.cahirinus, dogramacii.robustulus>; () => { var y = this; }; return x; } ->Chlorine : Symbol(Chlorine, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 677, 35)) +>Chlorine : Symbol(sicarius.Chlorine, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 677, 35)) >samarensis : Symbol(samarensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 531, 1)) >cahirinus : Symbol(samarensis.cahirinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 569, 5)) >nigra : Symbol(nigra, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 388, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 475, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 514, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 762, 1)) @@ -8786,7 +8786,7 @@ module sagitta { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 678, 127)) simulator(): macrorhinos.marmosurus, macrorhinos.marmosurus, gabriellae.echinatus>, sagitta.stolzmanni>> { var x: macrorhinos.marmosurus, macrorhinos.marmosurus, gabriellae.echinatus>, sagitta.stolzmanni>>; () => { var y = this; }; return x; } ->simulator : Symbol(simulator, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 678, 270)) +>simulator : Symbol(sicarius.simulator, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 678, 270)) >macrorhinos : Symbol(macrorhinos, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 461, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 497, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 736, 1)) >marmosurus : Symbol(macrorhinos.marmosurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 462, 20)) >Lanthanum : Symbol(Lanthanum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 106, 1)) @@ -8847,7 +8847,7 @@ module howi { >megalonyx : Symbol(Lanthanum.megalonyx, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 124, 3)) formosae(): Lanthanum.megalonyx { var x: Lanthanum.megalonyx; () => { var y = this; }; return x; } ->formosae : Symbol(formosae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 683, 55)) +>formosae : Symbol(marcanoi.formosae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 683, 55)) >Lanthanum : Symbol(Lanthanum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 106, 1)) >megalonyx : Symbol(Lanthanum.megalonyx, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 124, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 684, 45)) @@ -8858,7 +8858,7 @@ module howi { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 684, 45)) dudui(): lutreolus.punicus { var x: lutreolus.punicus; () => { var y = this; }; return x; } ->dudui : Symbol(dudui, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 684, 106)) +>dudui : Symbol(marcanoi.dudui, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 684, 106)) >lutreolus : Symbol(lutreolus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 355, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 719, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 855, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 872, 1)) >punicus : Symbol(lutreolus.punicus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 720, 18)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 685, 40)) @@ -8869,7 +8869,7 @@ module howi { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 685, 40)) leander(): daubentonii.nesiotes { var x: daubentonii.nesiotes; () => { var y = this; }; return x; } ->leander : Symbol(leander, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 685, 99)) +>leander : Symbol(marcanoi.leander, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 685, 99)) >daubentonii : Symbol(daubentonii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 471, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 586, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 636, 1)) >nesiotes : Symbol(daubentonii.nesiotes, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 472, 20)) >Lanthanum : Symbol(Lanthanum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 106, 1)) @@ -8888,7 +8888,7 @@ module howi { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 686, 89)) martinsi(): dogramacii.aurata { var x: dogramacii.aurata; () => { var y = this; }; return x; } ->martinsi : Symbol(martinsi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 686, 195)) +>martinsi : Symbol(marcanoi.martinsi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 686, 195)) >dogramacii : Symbol(dogramacii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 314, 1)) >aurata : Symbol(dogramacii.aurata, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 344, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 687, 43)) @@ -8899,7 +8899,7 @@ module howi { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 687, 43)) beatrix(): imperfecta.ciliolabrum, gabriellae.echinatus>, dogramacii.aurata>, imperfecta.ciliolabrum>> { var x: imperfecta.ciliolabrum, gabriellae.echinatus>, dogramacii.aurata>, imperfecta.ciliolabrum>>; () => { var y = this; }; return x; } ->beatrix : Symbol(beatrix, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 687, 102)) +>beatrix : Symbol(marcanoi.beatrix, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 687, 102)) >imperfecta : Symbol(imperfecta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 785, 1)) >ciliolabrum : Symbol(imperfecta.ciliolabrum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 807, 5)) >provocax : Symbol(provocax, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 669, 1)) @@ -8958,7 +8958,7 @@ module howi { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 688, 286)) griseoventer(): argurus.oreas { var x: argurus.oreas; () => { var y = this; }; return x; } ->griseoventer : Symbol(griseoventer, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 688, 589)) +>griseoventer : Symbol(marcanoi.griseoventer, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 688, 589)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) >oreas : Symbol(argurus.oreas, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 625, 16)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 689, 43)) @@ -8969,7 +8969,7 @@ module howi { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 689, 43)) zerda(): quasiater.wattsi, howi.coludo>> { var x: quasiater.wattsi, howi.coludo>>; () => { var y = this; }; return x; } ->zerda : Symbol(zerda, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 689, 98)) +>zerda : Symbol(marcanoi.zerda, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 689, 98)) >quasiater : Symbol(quasiater, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 236, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 422, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 813, 1)) >wattsi : Symbol(quasiater.wattsi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 814, 18)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) @@ -9012,7 +9012,7 @@ module howi { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 690, 183)) yucatanicus(): julianae.nudicaudus { var x: julianae.nudicaudus; () => { var y = this; }; return x; } ->yucatanicus : Symbol(yucatanicus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 690, 385)) +>yucatanicus : Symbol(marcanoi.yucatanicus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 690, 385)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) >nudicaudus : Symbol(julianae.nudicaudus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 18, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 691, 48)) @@ -9023,7 +9023,7 @@ module howi { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 691, 48)) nigrita(): argurus.peninsulae { var x: argurus.peninsulae; () => { var y = this; }; return x; } ->nigrita : Symbol(nigrita, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 691, 109)) +>nigrita : Symbol(marcanoi.nigrita, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 691, 109)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) >peninsulae : Symbol(argurus.peninsulae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 931, 16)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 692, 43)) @@ -9034,7 +9034,7 @@ module howi { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 692, 43)) jouvenetae(): argurus.dauricus { var x: argurus.dauricus; () => { var y = this; }; return x; } ->jouvenetae : Symbol(jouvenetae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 692, 103)) +>jouvenetae : Symbol(marcanoi.jouvenetae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 692, 103)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) >dauricus : Symbol(argurus.dauricus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 374, 16)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) @@ -9053,7 +9053,7 @@ module howi { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 693, 81)) indefessus(): sagitta.walkeri { var x: sagitta.walkeri; () => { var y = this; }; return x; } ->indefessus : Symbol(indefessus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 693, 176)) +>indefessus : Symbol(marcanoi.indefessus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 693, 176)) >sagitta : Symbol(sagitta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 487, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 577, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 675, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 746, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 898, 1)) >walkeri : Symbol(sagitta.walkeri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 488, 16)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 694, 43)) @@ -9064,7 +9064,7 @@ module howi { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 694, 43)) vuquangensis(): macrorhinos.daphaenodon { var x: macrorhinos.daphaenodon; () => { var y = this; }; return x; } ->vuquangensis : Symbol(vuquangensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 694, 100)) +>vuquangensis : Symbol(marcanoi.vuquangensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 694, 100)) >macrorhinos : Symbol(macrorhinos, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 461, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 497, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 736, 1)) >daphaenodon : Symbol(macrorhinos.daphaenodon, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 737, 20)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 695, 53)) @@ -9075,7 +9075,7 @@ module howi { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 695, 53)) Zirconium(): lavali.thaeleri { var x: lavali.thaeleri; () => { var y = this; }; return x; } ->Zirconium : Symbol(Zirconium, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 695, 118)) +>Zirconium : Symbol(marcanoi.Zirconium, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 695, 118)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) >thaeleri : Symbol(lavali.thaeleri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 299, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 696, 42)) @@ -9086,7 +9086,7 @@ module howi { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 696, 42)) hyaena(): julianae.oralis { var x: julianae.oralis; () => { var y = this; }; return x; } ->hyaena : Symbol(hyaena, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 696, 99)) +>hyaena : Symbol(marcanoi.hyaena, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 696, 99)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) >oralis : Symbol(julianae.oralis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 43, 3)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) @@ -9114,7 +9114,7 @@ module argurus { >T1 : Symbol(T1, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 701, 30)) nasutus(): lavali.lepturus { var x: lavali.lepturus; () => { var y = this; }; return x; } ->nasutus : Symbol(nasutus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 701, 36)) +>nasutus : Symbol(gilbertii.nasutus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 701, 36)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) >lepturus : Symbol(lavali.lepturus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 309, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 702, 40)) @@ -9125,7 +9125,7 @@ module argurus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 702, 40)) poecilops(): julianae.steerii { var x: julianae.steerii; () => { var y = this; }; return x; } ->poecilops : Symbol(poecilops, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 702, 97)) +>poecilops : Symbol(gilbertii.poecilops, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 702, 97)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) >steerii : Symbol(julianae.steerii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 16, 17)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 703, 43)) @@ -9136,7 +9136,7 @@ module argurus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 703, 43)) sondaicus(): samarensis.fuscus { var x: samarensis.fuscus; () => { var y = this; }; return x; } ->sondaicus : Symbol(sondaicus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 703, 101)) +>sondaicus : Symbol(gilbertii.sondaicus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 703, 101)) >samarensis : Symbol(samarensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 531, 1)) >fuscus : Symbol(samarensis.fuscus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 547, 5)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) @@ -9155,7 +9155,7 @@ module argurus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 704, 81)) auriventer(): petrophilus.rosalia { var x: petrophilus.rosalia; () => { var y = this; }; return x; } ->auriventer : Symbol(auriventer, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 704, 177)) +>auriventer : Symbol(gilbertii.auriventer, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 704, 177)) >petrophilus : Symbol(petrophilus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 715, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 823, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 998, 1)) >rosalia : Symbol(petrophilus.rosalia, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 999, 20)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) @@ -9174,7 +9174,7 @@ module argurus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 705, 92)) cherriei(): ruatanica.Praseodymium { var x: ruatanica.Praseodymium; () => { var y = this; }; return x; } ->cherriei : Symbol(cherriei, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 705, 198)) +>cherriei : Symbol(gilbertii.cherriei, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 705, 198)) >ruatanica : Symbol(ruatanica, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 100, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 244, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 959, 1)) >Praseodymium : Symbol(ruatanica.Praseodymium, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 960, 18)) >Lanthanum : Symbol(Lanthanum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 106, 1)) @@ -9193,7 +9193,7 @@ module argurus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 706, 84)) lindberghi(): minutus.inez { var x: minutus.inez; () => { var y = this; }; return x; } ->lindberghi : Symbol(lindberghi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 706, 184)) +>lindberghi : Symbol(gilbertii.lindberghi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 706, 184)) >minutus : Symbol(minutus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 433, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 492, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 848, 1)) >inez : Symbol(minutus.inez, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 493, 16)) >rendalli : Symbol(rendalli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 151, 1)) @@ -9212,7 +9212,7 @@ module argurus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 707, 85)) pipistrellus(): quasiater.carolinensis { var x: quasiater.carolinensis; () => { var y = this; }; return x; } ->pipistrellus : Symbol(pipistrellus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 707, 184)) +>pipistrellus : Symbol(gilbertii.pipistrellus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 707, 184)) >quasiater : Symbol(quasiater, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 236, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 422, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 813, 1)) >carolinensis : Symbol(quasiater.carolinensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 423, 18)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 708, 52)) @@ -9223,7 +9223,7 @@ module argurus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 708, 52)) paranus(): lutreolus.punicus { var x: lutreolus.punicus; () => { var y = this; }; return x; } ->paranus : Symbol(paranus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 708, 116)) +>paranus : Symbol(gilbertii.paranus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 708, 116)) >lutreolus : Symbol(lutreolus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 355, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 719, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 855, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 872, 1)) >punicus : Symbol(lutreolus.punicus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 720, 18)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 709, 42)) @@ -9234,7 +9234,7 @@ module argurus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 709, 42)) dubosti(): nigra.thalia { var x: nigra.thalia; () => { var y = this; }; return x; } ->dubosti : Symbol(dubosti, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 709, 101)) +>dubosti : Symbol(gilbertii.dubosti, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 709, 101)) >nigra : Symbol(nigra, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 388, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 475, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 514, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 762, 1)) >thalia : Symbol(nigra.thalia, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 476, 14)) >lutreolus : Symbol(lutreolus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 355, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 719, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 855, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 872, 1)) @@ -9253,7 +9253,7 @@ module argurus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 710, 78)) opossum(): nigra.dolichurus { var x: nigra.dolichurus; () => { var y = this; }; return x; } ->opossum : Symbol(opossum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 710, 173)) +>opossum : Symbol(gilbertii.opossum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 710, 173)) >nigra : Symbol(nigra, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 388, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 475, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 514, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 762, 1)) >dolichurus : Symbol(nigra.dolichurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 389, 14)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) @@ -9272,7 +9272,7 @@ module argurus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 711, 79)) oreopolus(): minutus.portoricensis { var x: minutus.portoricensis; () => { var y = this; }; return x; } ->oreopolus : Symbol(oreopolus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 711, 175)) +>oreopolus : Symbol(gilbertii.oreopolus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 711, 175)) >minutus : Symbol(minutus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 433, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 492, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 848, 1)) >portoricensis : Symbol(minutus.portoricensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 849, 16)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 712, 48)) @@ -9283,7 +9283,7 @@ module argurus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 712, 48)) amurensis(): daubentonii.arboreus { var x: daubentonii.arboreus; () => { var y = this; }; return x; } ->amurensis : Symbol(amurensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 712, 111)) +>amurensis : Symbol(gilbertii.amurensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 712, 111)) >daubentonii : Symbol(daubentonii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 471, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 586, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 636, 1)) >arboreus : Symbol(daubentonii.arboreus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 637, 20)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) @@ -9316,7 +9316,7 @@ module lutreolus { >punicus : Symbol(punicus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 720, 18)) strandi(): gabriellae.klossii { var x: gabriellae.klossii; () => { var y = this; }; return x; } ->strandi : Symbol(strandi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 721, 26)) +>strandi : Symbol(punicus.strandi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 721, 26)) >gabriellae : Symbol(gabriellae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 766, 1)) >klossii : Symbol(gabriellae.klossii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 767, 19)) >Lanthanum : Symbol(Lanthanum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 106, 1)) @@ -9335,7 +9335,7 @@ module lutreolus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 722, 85)) lar(): caurinus.mahaganus { var x: caurinus.mahaganus; () => { var y = this; }; return x; } ->lar : Symbol(lar, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 722, 187)) +>lar : Symbol(punicus.lar, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 722, 187)) >caurinus : Symbol(caurinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 449, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 836, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 976, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1007, 1)) >mahaganus : Symbol(caurinus.mahaganus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 450, 17)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) @@ -9354,7 +9354,7 @@ module lutreolus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 723, 74)) erica(): dogramacii.koepckeae { var x: dogramacii.koepckeae; () => { var y = this; }; return x; } ->erica : Symbol(erica, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 723, 169)) +>erica : Symbol(punicus.erica, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 723, 169)) >dogramacii : Symbol(dogramacii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 314, 1)) >koepckeae : Symbol(dogramacii.koepckeae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 326, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 724, 43)) @@ -9365,7 +9365,7 @@ module lutreolus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 724, 43)) trichura(): macrorhinos.konganensis { var x: macrorhinos.konganensis; () => { var y = this; }; return x; } ->trichura : Symbol(trichura, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 724, 105)) +>trichura : Symbol(punicus.trichura, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 724, 105)) >macrorhinos : Symbol(macrorhinos, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 461, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 497, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 736, 1)) >konganensis : Symbol(macrorhinos.konganensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 498, 20)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 725, 49)) @@ -9376,7 +9376,7 @@ module lutreolus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 725, 49)) lemniscatus(): panglima.fundatus { var x: panglima.fundatus; () => { var y = this; }; return x; } ->lemniscatus : Symbol(lemniscatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 725, 114)) +>lemniscatus : Symbol(punicus.lemniscatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 725, 114)) >panglima : Symbol(panglima, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 400, 1)) >fundatus : Symbol(panglima.fundatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 409, 5)) >gabriellae : Symbol(gabriellae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 766, 1)) @@ -9395,7 +9395,7 @@ module lutreolus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 726, 82)) aspalax(): panamensis.linulus { var x: panamensis.linulus; () => { var y = this; }; return x; } ->aspalax : Symbol(aspalax, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 726, 177)) +>aspalax : Symbol(punicus.aspalax, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 726, 177)) >panamensis : Symbol(panamensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 501, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 986, 1)) >linulus : Symbol(panamensis.linulus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 502, 19)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) @@ -9414,7 +9414,7 @@ module lutreolus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 727, 90)) marshalli(): julianae.nudicaudus { var x: julianae.nudicaudus; () => { var y = this; }; return x; } ->marshalli : Symbol(marshalli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 727, 197)) +>marshalli : Symbol(punicus.marshalli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 727, 197)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) >nudicaudus : Symbol(julianae.nudicaudus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 18, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 728, 46)) @@ -9425,7 +9425,7 @@ module lutreolus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 728, 46)) Zinc(): julianae.galapagoensis { var x: julianae.galapagoensis; () => { var y = this; }; return x; } ->Zinc : Symbol(Zinc, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 728, 107)) +>Zinc : Symbol(punicus.Zinc, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 728, 107)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) >galapagoensis : Symbol(julianae.galapagoensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 25, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 729, 44)) @@ -9436,7 +9436,7 @@ module lutreolus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 729, 44)) monochromos(): howi.coludo { var x: howi.coludo; () => { var y = this; }; return x; } ->monochromos : Symbol(monochromos, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 729, 108)) +>monochromos : Symbol(punicus.monochromos, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 729, 108)) >howi : Symbol(howi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 466, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 681, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 886, 1)) >coludo : Symbol(howi.coludo, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 887, 13)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) @@ -9455,7 +9455,7 @@ module lutreolus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 730, 76)) purinus(): ruatanica.hector { var x: ruatanica.hector; () => { var y = this; }; return x; } ->purinus : Symbol(purinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 730, 165)) +>purinus : Symbol(punicus.purinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 730, 165)) >ruatanica : Symbol(ruatanica, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 100, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 244, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 959, 1)) >hector : Symbol(ruatanica.hector, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 101, 18)) >lutreolus : Symbol(lutreolus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 355, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 719, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 855, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 872, 1)) @@ -9474,7 +9474,7 @@ module lutreolus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 731, 84)) ischyrus(): lavali.lepturus { var x: lavali.lepturus; () => { var y = this; }; return x; } ->ischyrus : Symbol(ischyrus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 731, 185)) +>ischyrus : Symbol(punicus.ischyrus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 731, 185)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) >lepturus : Symbol(lavali.lepturus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 309, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 732, 41)) @@ -9485,7 +9485,7 @@ module lutreolus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 732, 41)) tenuis(): macrorhinos.daphaenodon { var x: macrorhinos.daphaenodon; () => { var y = this; }; return x; } ->tenuis : Symbol(tenuis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 732, 98)) +>tenuis : Symbol(punicus.tenuis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 732, 98)) >macrorhinos : Symbol(macrorhinos, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 461, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 497, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 736, 1)) >daphaenodon : Symbol(macrorhinos.daphaenodon, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 737, 20)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 733, 47)) @@ -9496,7 +9496,7 @@ module lutreolus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 733, 47)) Helium(): julianae.acariensis { var x: julianae.acariensis; () => { var y = this; }; return x; } ->Helium : Symbol(Helium, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 733, 112)) +>Helium : Symbol(punicus.Helium, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 733, 112)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) >acariensis : Symbol(julianae.acariensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 80, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 734, 43)) @@ -9514,7 +9514,7 @@ module macrorhinos { >daphaenodon : Symbol(daphaenodon, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 737, 20)) bredanensis(): julianae.sumatrana { var x: julianae.sumatrana; () => { var y = this; }; return x; } ->bredanensis : Symbol(bredanensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 738, 30)) +>bredanensis : Symbol(daphaenodon.bredanensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 738, 30)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) >sumatrana : Symbol(julianae.sumatrana, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 58, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 739, 47)) @@ -9525,7 +9525,7 @@ module macrorhinos { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 739, 47)) othus(): howi.coludo { var x: howi.coludo; () => { var y = this; }; return x; } ->othus : Symbol(othus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 739, 107)) +>othus : Symbol(daphaenodon.othus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 739, 107)) >howi : Symbol(howi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 466, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 681, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 886, 1)) >coludo : Symbol(howi.coludo, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 887, 13)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) @@ -9544,7 +9544,7 @@ module macrorhinos { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 740, 64)) hammondi(): julianae.gerbillus, gabriellae.echinatus>, dogramacii.aurata>, lavali.otion> { var x: julianae.gerbillus, gabriellae.echinatus>, dogramacii.aurata>, lavali.otion>; () => { var y = this; }; return x; } ->hammondi : Symbol(hammondi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 740, 147)) +>hammondi : Symbol(daphaenodon.hammondi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 740, 147)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) >gerbillus : Symbol(julianae.gerbillus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 67, 3)) >minutus : Symbol(minutus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 433, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 492, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 848, 1)) @@ -9587,7 +9587,7 @@ module macrorhinos { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 741, 193)) aureocollaris(): quasiater.carolinensis { var x: quasiater.carolinensis; () => { var y = this; }; return x; } ->aureocollaris : Symbol(aureocollaris, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 741, 402)) +>aureocollaris : Symbol(daphaenodon.aureocollaris, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 741, 402)) >quasiater : Symbol(quasiater, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 236, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 422, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 813, 1)) >carolinensis : Symbol(quasiater.carolinensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 423, 18)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 742, 53)) @@ -9598,7 +9598,7 @@ module macrorhinos { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 742, 53)) flavipes(): petrophilus.minutilla { var x: petrophilus.minutilla; () => { var y = this; }; return x; } ->flavipes : Symbol(flavipes, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 742, 117)) +>flavipes : Symbol(daphaenodon.flavipes, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 742, 117)) >petrophilus : Symbol(petrophilus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 715, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 823, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 998, 1)) >minutilla : Symbol(petrophilus.minutilla, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 716, 20)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 743, 47)) @@ -9609,7 +9609,7 @@ module macrorhinos { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 743, 47)) callosus(): trivirgatus.lotor { var x: trivirgatus.lotor; () => { var y = this; }; return x; } ->callosus : Symbol(callosus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 743, 110)) +>callosus : Symbol(daphaenodon.callosus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 743, 110)) >trivirgatus : Symbol(trivirgatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 186, 1)) >lotor : Symbol(trivirgatus.lotor, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 206, 3)) >lutreolus : Symbol(lutreolus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 355, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 719, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 855, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 872, 1)) @@ -9637,7 +9637,7 @@ module sagitta { >T1 : Symbol(T1, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 748, 29)) zunigae(): rendalli.crenulata> { var x: rendalli.crenulata>; () => { var y = this; }; return x; } ->zunigae : Symbol(zunigae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 748, 35)) +>zunigae : Symbol(cinereus.zunigae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 748, 35)) >rendalli : Symbol(rendalli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 151, 1)) >crenulata : Symbol(rendalli.crenulata, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 180, 3)) >macrorhinos : Symbol(macrorhinos, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 461, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 497, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 736, 1)) @@ -9664,7 +9664,7 @@ module sagitta { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 749, 124)) microps(): daubentonii.nigricans> { var x: daubentonii.nigricans>; () => { var y = this; }; return x; } ->microps : Symbol(microps, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 749, 265)) +>microps : Symbol(cinereus.microps, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 749, 265)) >daubentonii : Symbol(daubentonii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 471, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 586, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 636, 1)) >nigricans : Symbol(daubentonii.nigricans, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 587, 20)) >caurinus : Symbol(caurinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 449, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 836, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 976, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1007, 1)) @@ -9691,7 +9691,7 @@ module sagitta { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 750, 127)) guaporensis(): daubentonii.arboreus { var x: daubentonii.arboreus; () => { var y = this; }; return x; } ->guaporensis : Symbol(guaporensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 750, 271)) +>guaporensis : Symbol(cinereus.guaporensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 750, 271)) >daubentonii : Symbol(daubentonii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 471, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 586, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 636, 1)) >arboreus : Symbol(daubentonii.arboreus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 637, 20)) >gabriellae : Symbol(gabriellae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 766, 1)) @@ -9710,7 +9710,7 @@ module sagitta { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 751, 86)) tonkeana(): panglima.fundatus { var x: panglima.fundatus; () => { var y = this; }; return x; } ->tonkeana : Symbol(tonkeana, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 751, 185)) +>tonkeana : Symbol(cinereus.tonkeana, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 751, 185)) >panglima : Symbol(panglima, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 400, 1)) >fundatus : Symbol(panglima.fundatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 409, 5)) >petrophilus : Symbol(petrophilus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 715, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 823, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 998, 1)) @@ -9729,7 +9729,7 @@ module sagitta { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 752, 87)) montensis(): dammermani.siberu { var x: dammermani.siberu; () => { var y = this; }; return x; } ->montensis : Symbol(montensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 752, 190)) +>montensis : Symbol(cinereus.montensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 752, 190)) >dammermani : Symbol(dammermani, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 591, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 913, 1)) >siberu : Symbol(dammermani.siberu, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 592, 19)) >dogramacii : Symbol(dogramacii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 314, 1)) @@ -9748,7 +9748,7 @@ module sagitta { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 753, 86)) sphinx(): minutus.portoricensis { var x: minutus.portoricensis; () => { var y = this; }; return x; } ->sphinx : Symbol(sphinx, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 753, 187)) +>sphinx : Symbol(cinereus.sphinx, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 753, 187)) >minutus : Symbol(minutus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 433, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 492, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 848, 1)) >portoricensis : Symbol(minutus.portoricensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 849, 16)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 754, 45)) @@ -9759,7 +9759,7 @@ module sagitta { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 754, 45)) glis(): argurus.wetmorei { var x: argurus.wetmorei; () => { var y = this; }; return x; } ->glis : Symbol(glis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 754, 108)) +>glis : Symbol(cinereus.glis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 754, 108)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) >wetmorei : Symbol(argurus.wetmorei, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 614, 16)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) @@ -9778,7 +9778,7 @@ module sagitta { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 755, 68)) dorsalis(): petrophilus.sodyi { var x: petrophilus.sodyi; () => { var y = this; }; return x; } ->dorsalis : Symbol(dorsalis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 755, 156)) +>dorsalis : Symbol(cinereus.dorsalis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 755, 156)) >petrophilus : Symbol(petrophilus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 715, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 823, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 998, 1)) >sodyi : Symbol(petrophilus.sodyi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 824, 20)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) @@ -9797,7 +9797,7 @@ module sagitta { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 756, 81)) fimbriatus(): provocax.melanoleuca { var x: provocax.melanoleuca; () => { var y = this; }; return x; } ->fimbriatus : Symbol(fimbriatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 756, 178)) +>fimbriatus : Symbol(cinereus.fimbriatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 756, 178)) >provocax : Symbol(provocax, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 669, 1)) >melanoleuca : Symbol(provocax.melanoleuca, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 670, 17)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 757, 48)) @@ -9808,7 +9808,7 @@ module sagitta { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 757, 48)) sara(): nigra.gracilis { var x: nigra.gracilis; () => { var y = this; }; return x; } ->sara : Symbol(sara, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 757, 110)) +>sara : Symbol(cinereus.sara, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 757, 110)) >nigra : Symbol(nigra, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 388, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 475, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 514, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 762, 1)) >gracilis : Symbol(nigra.gracilis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 515, 14)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) @@ -9827,7 +9827,7 @@ module sagitta { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 758, 78)) epimelas(): sagitta.stolzmanni { var x: sagitta.stolzmanni; () => { var y = this; }; return x; } ->epimelas : Symbol(epimelas, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 758, 176)) +>epimelas : Symbol(cinereus.epimelas, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 758, 176)) >sagitta : Symbol(sagitta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 487, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 577, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 675, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 746, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 898, 1)) >stolzmanni : Symbol(stolzmanni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 899, 16)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 759, 44)) @@ -9838,7 +9838,7 @@ module sagitta { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 759, 44)) pittieri(): samarensis.fuscus { var x: samarensis.fuscus; () => { var y = this; }; return x; } ->pittieri : Symbol(pittieri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 759, 104)) +>pittieri : Symbol(cinereus.pittieri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 759, 104)) >samarensis : Symbol(samarensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 531, 1)) >fuscus : Symbol(samarensis.fuscus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 547, 5)) >quasiater : Symbol(quasiater, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 236, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 422, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 813, 1)) @@ -9885,7 +9885,7 @@ module gabriellae { >amicus : Symbol(amicus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 769, 5)) pirrensis(): argurus.luctuosa { var x: argurus.luctuosa; () => { var y = this; }; return x; } ->pirrensis : Symbol(pirrensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 770, 25)) +>pirrensis : Symbol(amicus.pirrensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 770, 25)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) >luctuosa : Symbol(argurus.luctuosa, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 982, 16)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 771, 43)) @@ -9896,7 +9896,7 @@ module gabriellae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 771, 43)) phaeura(): panglima.abidi { var x: panglima.abidi; () => { var y = this; }; return x; } ->phaeura : Symbol(phaeura, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 771, 101)) +>phaeura : Symbol(amicus.phaeura, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 771, 101)) >panglima : Symbol(panglima, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 400, 1)) >abidi : Symbol(panglima.abidi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 414, 5)) >lutreolus : Symbol(lutreolus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 355, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 719, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 855, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 872, 1)) @@ -9915,7 +9915,7 @@ module gabriellae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 772, 76)) voratus(): lavali.thaeleri { var x: lavali.thaeleri; () => { var y = this; }; return x; } ->voratus : Symbol(voratus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 772, 169)) +>voratus : Symbol(amicus.voratus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 772, 169)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) >thaeleri : Symbol(lavali.thaeleri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 299, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 773, 40)) @@ -9926,7 +9926,7 @@ module gabriellae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 773, 40)) satarae(): trivirgatus.lotor { var x: trivirgatus.lotor; () => { var y = this; }; return x; } ->satarae : Symbol(satarae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 773, 97)) +>satarae : Symbol(amicus.satarae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 773, 97)) >trivirgatus : Symbol(trivirgatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 186, 1)) >lotor : Symbol(trivirgatus.lotor, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 206, 3)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) @@ -9945,7 +9945,7 @@ module gabriellae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 774, 76)) hooperi(): caurinus.psilurus { var x: caurinus.psilurus; () => { var y = this; }; return x; } ->hooperi : Symbol(hooperi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 774, 169)) +>hooperi : Symbol(amicus.hooperi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 774, 169)) >caurinus : Symbol(caurinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 449, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 836, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 976, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1007, 1)) >psilurus : Symbol(caurinus.psilurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1008, 17)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 775, 42)) @@ -9956,7 +9956,7 @@ module gabriellae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 775, 42)) perrensi(): rendalli.crenulata { var x: rendalli.crenulata; () => { var y = this; }; return x; } ->perrensi : Symbol(perrensi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 775, 101)) +>perrensi : Symbol(amicus.perrensi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 775, 101)) >rendalli : Symbol(rendalli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 151, 1)) >crenulata : Symbol(rendalli.crenulata, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 180, 3)) >trivirgatus : Symbol(trivirgatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 186, 1)) @@ -9975,7 +9975,7 @@ module gabriellae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 776, 82)) ridei(): ruatanica.hector> { var x: ruatanica.hector>; () => { var y = this; }; return x; } ->ridei : Symbol(ridei, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 776, 180)) +>ridei : Symbol(amicus.ridei, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 776, 180)) >ruatanica : Symbol(ruatanica, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 100, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 244, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 959, 1)) >hector : Symbol(ruatanica.hector, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 101, 18)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) @@ -10002,7 +10002,7 @@ module gabriellae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 777, 117)) audeberti(): daubentonii.arboreus { var x: daubentonii.arboreus; () => { var y = this; }; return x; } ->audeberti : Symbol(audeberti, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 777, 253)) +>audeberti : Symbol(amicus.audeberti, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 777, 253)) >daubentonii : Symbol(daubentonii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 471, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 586, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 636, 1)) >arboreus : Symbol(daubentonii.arboreus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 637, 20)) >dogramacii : Symbol(dogramacii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 314, 1)) @@ -10021,7 +10021,7 @@ module gabriellae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 778, 86)) Lutetium(): macrorhinos.marmosurus { var x: macrorhinos.marmosurus; () => { var y = this; }; return x; } ->Lutetium : Symbol(Lutetium, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 778, 187)) +>Lutetium : Symbol(amicus.Lutetium, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 778, 187)) >macrorhinos : Symbol(macrorhinos, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 461, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 497, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 736, 1)) >marmosurus : Symbol(macrorhinos.marmosurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 462, 20)) >sagitta : Symbol(sagitta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 487, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 577, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 675, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 746, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 898, 1)) @@ -10040,7 +10040,7 @@ module gabriellae { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 779, 85)) atrox(): samarensis.fuscus, dogramacii.koepckeae> { var x: samarensis.fuscus, dogramacii.koepckeae>; () => { var y = this; }; return x; } ->atrox : Symbol(atrox, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 779, 186)) +>atrox : Symbol(amicus.atrox, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 779, 186)) >samarensis : Symbol(samarensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 531, 1)) >fuscus : Symbol(samarensis.fuscus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 547, 5)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) @@ -10070,7 +10070,7 @@ module gabriellae { >echinatus : Symbol(echinatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 781, 5)) tenuipes(): howi.coludo> { var x: howi.coludo>; () => { var y = this; }; return x; } ->tenuipes : Symbol(tenuipes, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 782, 28)) +>tenuipes : Symbol(echinatus.tenuipes, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 782, 28)) >howi : Symbol(howi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 466, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 681, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 886, 1)) >coludo : Symbol(howi.coludo, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 887, 13)) >macrorhinos : Symbol(macrorhinos, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 461, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 497, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 736, 1)) @@ -10106,7 +10106,7 @@ module imperfecta { >T1 : Symbol(T1, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 787, 29)) marisae(): lavali.thaeleri { var x: lavali.thaeleri; () => { var y = this; }; return x; } ->marisae : Symbol(marisae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 787, 35)) +>marisae : Symbol(lasiurus.marisae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 787, 35)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) >thaeleri : Symbol(lavali.thaeleri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 299, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 788, 40)) @@ -10117,7 +10117,7 @@ module imperfecta { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 788, 40)) fulvus(): argurus.germaini { var x: argurus.germaini; () => { var y = this; }; return x; } ->fulvus : Symbol(fulvus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 788, 97)) +>fulvus : Symbol(lasiurus.fulvus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 788, 97)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) >germaini : Symbol(argurus.germaini, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 893, 16)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 789, 40)) @@ -10128,7 +10128,7 @@ module imperfecta { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 789, 40)) paranaensis(): dogramacii.koepckeae { var x: dogramacii.koepckeae; () => { var y = this; }; return x; } ->paranaensis : Symbol(paranaensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 789, 98)) +>paranaensis : Symbol(lasiurus.paranaensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 789, 98)) >dogramacii : Symbol(dogramacii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 314, 1)) >koepckeae : Symbol(dogramacii.koepckeae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 326, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 790, 49)) @@ -10139,7 +10139,7 @@ module imperfecta { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 790, 49)) didactylus(): panglima.abidi> { var x: panglima.abidi>; () => { var y = this; }; return x; } ->didactylus : Symbol(didactylus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 790, 111)) +>didactylus : Symbol(lasiurus.didactylus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 790, 111)) >panglima : Symbol(panglima, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 400, 1)) >abidi : Symbol(panglima.abidi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 414, 5)) >dogramacii : Symbol(dogramacii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 314, 1)) @@ -10166,7 +10166,7 @@ module imperfecta { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 791, 130)) schreibersii(): nigra.gracilis { var x: nigra.gracilis; () => { var y = this; }; return x; } ->schreibersii : Symbol(schreibersii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 791, 274)) +>schreibersii : Symbol(lasiurus.schreibersii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 791, 274)) >nigra : Symbol(nigra, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 388, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 475, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 514, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 762, 1)) >gracilis : Symbol(nigra.gracilis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 515, 14)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) @@ -10185,7 +10185,7 @@ module imperfecta { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 792, 84)) orii(): dogramacii.kaiseri { var x: dogramacii.kaiseri; () => { var y = this; }; return x; } ->orii : Symbol(orii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 792, 180)) +>orii : Symbol(lasiurus.orii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 792, 180)) >dogramacii : Symbol(dogramacii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 314, 1)) >kaiseri : Symbol(dogramacii.kaiseri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 329, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 793, 40)) @@ -10199,7 +10199,7 @@ module imperfecta { >subspinosus : Symbol(subspinosus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 794, 5)) monticularis(): macrorhinos.konganensis { var x: macrorhinos.konganensis; () => { var y = this; }; return x; } ->monticularis : Symbol(monticularis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 795, 30)) +>monticularis : Symbol(subspinosus.monticularis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 795, 30)) >macrorhinos : Symbol(macrorhinos, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 461, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 497, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 736, 1)) >konganensis : Symbol(macrorhinos.konganensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 498, 20)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 796, 53)) @@ -10210,7 +10210,7 @@ module imperfecta { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 796, 53)) Gadolinium(): nigra.caucasica { var x: nigra.caucasica; () => { var y = this; }; return x; } ->Gadolinium : Symbol(Gadolinium, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 796, 118)) +>Gadolinium : Symbol(subspinosus.Gadolinium, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 796, 118)) >nigra : Symbol(nigra, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 388, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 475, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 514, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 762, 1)) >caucasica : Symbol(nigra.caucasica, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 763, 14)) >sagitta : Symbol(sagitta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 487, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 577, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 675, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 746, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 898, 1)) @@ -10229,7 +10229,7 @@ module imperfecta { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 797, 80)) oasicus(): caurinus.johorensis> { var x: caurinus.johorensis>; () => { var y = this; }; return x; } ->oasicus : Symbol(oasicus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 797, 174)) +>oasicus : Symbol(subspinosus.oasicus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 797, 174)) >caurinus : Symbol(caurinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 449, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 836, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 976, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1007, 1)) >johorensis : Symbol(caurinus.johorensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 977, 17)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) @@ -10256,7 +10256,7 @@ module imperfecta { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 798, 124)) paterculus(): lutreolus.punicus { var x: lutreolus.punicus; () => { var y = this; }; return x; } ->paterculus : Symbol(paterculus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 798, 265)) +>paterculus : Symbol(subspinosus.paterculus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 798, 265)) >lutreolus : Symbol(lutreolus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 355, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 719, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 855, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 872, 1)) >punicus : Symbol(lutreolus.punicus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 720, 18)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 799, 45)) @@ -10267,7 +10267,7 @@ module imperfecta { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 799, 45)) punctata(): lavali.thaeleri { var x: lavali.thaeleri; () => { var y = this; }; return x; } ->punctata : Symbol(punctata, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 799, 104)) +>punctata : Symbol(subspinosus.punctata, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 799, 104)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) >thaeleri : Symbol(lavali.thaeleri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 299, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 800, 41)) @@ -10278,7 +10278,7 @@ module imperfecta { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 800, 41)) invictus(): sagitta.stolzmanni { var x: sagitta.stolzmanni; () => { var y = this; }; return x; } ->invictus : Symbol(invictus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 800, 98)) +>invictus : Symbol(subspinosus.invictus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 800, 98)) >sagitta : Symbol(sagitta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 487, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 577, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 675, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 746, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 898, 1)) >stolzmanni : Symbol(sagitta.stolzmanni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 899, 16)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 801, 44)) @@ -10289,7 +10289,7 @@ module imperfecta { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 801, 44)) stangeri(): petrophilus.minutilla { var x: petrophilus.minutilla; () => { var y = this; }; return x; } ->stangeri : Symbol(stangeri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 801, 104)) +>stangeri : Symbol(subspinosus.stangeri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 801, 104)) >petrophilus : Symbol(petrophilus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 715, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 823, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 998, 1)) >minutilla : Symbol(petrophilus.minutilla, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 716, 20)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 802, 47)) @@ -10300,7 +10300,7 @@ module imperfecta { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 802, 47)) siskiyou(): minutus.inez { var x: minutus.inez; () => { var y = this; }; return x; } ->siskiyou : Symbol(siskiyou, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 802, 110)) +>siskiyou : Symbol(subspinosus.siskiyou, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 802, 110)) >minutus : Symbol(minutus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 433, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 492, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 848, 1)) >inez : Symbol(minutus.inez, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 493, 16)) >macrorhinos : Symbol(macrorhinos, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 461, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 497, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 736, 1)) @@ -10319,7 +10319,7 @@ module imperfecta { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 803, 84)) welwitschii(): rionegrensis.caniventer { var x: rionegrensis.caniventer; () => { var y = this; }; return x; } ->welwitschii : Symbol(welwitschii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 803, 184)) +>welwitschii : Symbol(subspinosus.welwitschii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 803, 184)) >rionegrensis : Symbol(rionegrensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 0, 0)) >caniventer : Symbol(rionegrensis.caniventer, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 0, 21)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 804, 52)) @@ -10330,7 +10330,7 @@ module imperfecta { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 804, 52)) Polonium(): lavali.wilsoni { var x: lavali.wilsoni; () => { var y = this; }; return x; } ->Polonium : Symbol(Polonium, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 804, 117)) +>Polonium : Symbol(subspinosus.Polonium, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 804, 117)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) >wilsoni : Symbol(lavali.wilsoni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 253, 15)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 805, 40)) @@ -10341,7 +10341,7 @@ module imperfecta { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 805, 40)) harpia(): argurus.luctuosa { var x: argurus.luctuosa; () => { var y = this; }; return x; } ->harpia : Symbol(harpia, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 805, 96)) +>harpia : Symbol(subspinosus.harpia, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 805, 96)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) >luctuosa : Symbol(argurus.luctuosa, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 982, 16)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 806, 40)) @@ -10360,7 +10360,7 @@ module imperfecta { >robustulus : Symbol(dogramacii.robustulus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 315, 19)) leschenaultii(): argurus.dauricus> { var x: argurus.dauricus>; () => { var y = this; }; return x; } ->leschenaultii : Symbol(leschenaultii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 808, 68)) +>leschenaultii : Symbol(ciliolabrum.leschenaultii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 808, 68)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) >dauricus : Symbol(argurus.dauricus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 374, 16)) >Lanthanum : Symbol(Lanthanum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 106, 1)) @@ -10387,7 +10387,7 @@ module imperfecta { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 809, 132)) ludia(): caurinus.johorensis { var x: caurinus.johorensis; () => { var y = this; }; return x; } ->ludia : Symbol(ludia, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 809, 275)) +>ludia : Symbol(ciliolabrum.ludia, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 809, 275)) >caurinus : Symbol(caurinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 449, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 836, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 976, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1007, 1)) >johorensis : Symbol(caurinus.johorensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 977, 17)) >rionegrensis : Symbol(rionegrensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 0, 0)) @@ -10406,7 +10406,7 @@ module imperfecta { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 810, 86)) sinicus(): macrorhinos.marmosurus { var x: macrorhinos.marmosurus; () => { var y = this; }; return x; } ->sinicus : Symbol(sinicus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 810, 191)) +>sinicus : Symbol(ciliolabrum.sinicus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 810, 191)) >macrorhinos : Symbol(macrorhinos, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 461, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 497, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 736, 1)) >marmosurus : Symbol(macrorhinos.marmosurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 462, 20)) >macrorhinos : Symbol(macrorhinos, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 461, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 497, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 736, 1)) @@ -10434,7 +10434,7 @@ module quasiater { >T1 : Symbol(T1, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 815, 27)) lagotis(): lavali.xanthognathus { var x: lavali.xanthognathus; () => { var y = this; }; return x; } ->lagotis : Symbol(lagotis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 815, 33)) +>lagotis : Symbol(wattsi.lagotis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 815, 33)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) >xanthognathus : Symbol(lavali.xanthognathus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 285, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 816, 45)) @@ -10445,7 +10445,7 @@ module quasiater { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 816, 45)) hussoni(): lavali.wilsoni { var x: lavali.wilsoni; () => { var y = this; }; return x; } ->hussoni : Symbol(hussoni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 816, 107)) +>hussoni : Symbol(wattsi.hussoni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 816, 107)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) >wilsoni : Symbol(lavali.wilsoni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 253, 15)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 817, 39)) @@ -10456,7 +10456,7 @@ module quasiater { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 817, 39)) bilarni(): samarensis.cahirinus>, dogramacii.koepckeae> { var x: samarensis.cahirinus>, dogramacii.koepckeae>; () => { var y = this; }; return x; } ->bilarni : Symbol(bilarni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 817, 95)) +>bilarni : Symbol(wattsi.bilarni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 817, 95)) >samarensis : Symbol(samarensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 531, 1)) >cahirinus : Symbol(samarensis.cahirinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 569, 5)) >rendalli : Symbol(rendalli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 151, 1)) @@ -10491,7 +10491,7 @@ module quasiater { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 818, 158)) cabrerae(): lavali.lepturus { var x: lavali.lepturus; () => { var y = this; }; return x; } ->cabrerae : Symbol(cabrerae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 818, 333)) +>cabrerae : Symbol(wattsi.cabrerae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 818, 333)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) >lepturus : Symbol(lavali.lepturus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 309, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 819, 41)) @@ -10517,7 +10517,7 @@ module petrophilus { >bobrinskoi : Symbol(quasiater.bobrinskoi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 237, 18)) saundersiae(): samarensis.pallidus { var x: samarensis.pallidus; () => { var y = this; }; return x; } ->saundersiae : Symbol(saundersiae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 825, 61)) +>saundersiae : Symbol(sodyi.saundersiae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 825, 61)) >samarensis : Symbol(samarensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 531, 1)) >pallidus : Symbol(samarensis.pallidus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 563, 5)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 826, 48)) @@ -10528,7 +10528,7 @@ module petrophilus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 826, 48)) imberbis(): quasiater.carolinensis { var x: quasiater.carolinensis; () => { var y = this; }; return x; } ->imberbis : Symbol(imberbis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 826, 109)) +>imberbis : Symbol(sodyi.imberbis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 826, 109)) >quasiater : Symbol(quasiater, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 236, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 422, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 813, 1)) >carolinensis : Symbol(quasiater.carolinensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 423, 18)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 827, 48)) @@ -10539,7 +10539,7 @@ module petrophilus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 827, 48)) cansdalei(): dammermani.melanops { var x: dammermani.melanops; () => { var y = this; }; return x; } ->cansdalei : Symbol(cansdalei, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 827, 112)) +>cansdalei : Symbol(sodyi.cansdalei, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 827, 112)) >dammermani : Symbol(dammermani, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 591, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 913, 1)) >melanops : Symbol(dammermani.melanops, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 914, 19)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 828, 46)) @@ -10550,7 +10550,7 @@ module petrophilus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 828, 46)) Lawrencium(): nigra.dolichurus { var x: nigra.dolichurus; () => { var y = this; }; return x; } ->Lawrencium : Symbol(Lawrencium, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 828, 107)) +>Lawrencium : Symbol(sodyi.Lawrencium, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 828, 107)) >nigra : Symbol(nigra, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 388, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 475, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 514, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 762, 1)) >dolichurus : Symbol(nigra.dolichurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 389, 14)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) @@ -10569,7 +10569,7 @@ module petrophilus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 829, 88)) catta(): argurus.oreas { var x: argurus.oreas; () => { var y = this; }; return x; } ->catta : Symbol(catta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 829, 190)) +>catta : Symbol(sodyi.catta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 829, 190)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) >oreas : Symbol(argurus.oreas, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 625, 16)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 830, 36)) @@ -10580,7 +10580,7 @@ module petrophilus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 830, 36)) breviceps(): argurus.dauricus { var x: argurus.dauricus; () => { var y = this; }; return x; } ->breviceps : Symbol(breviceps, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 830, 91)) +>breviceps : Symbol(sodyi.breviceps, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 830, 91)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) >dauricus : Symbol(argurus.dauricus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 374, 16)) >dogramacii : Symbol(dogramacii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 314, 1)) @@ -10599,7 +10599,7 @@ module petrophilus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 831, 83)) transitionalis(): rendalli.zuluensis { var x: rendalli.zuluensis; () => { var y = this; }; return x; } ->transitionalis : Symbol(transitionalis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 831, 181)) +>transitionalis : Symbol(sodyi.transitionalis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 831, 181)) >rendalli : Symbol(rendalli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 151, 1)) >zuluensis : Symbol(rendalli.zuluensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 152, 17)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 832, 50)) @@ -10610,7 +10610,7 @@ module petrophilus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 832, 50)) heptneri(): argurus.germaini { var x: argurus.germaini; () => { var y = this; }; return x; } ->heptneri : Symbol(heptneri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 832, 110)) +>heptneri : Symbol(sodyi.heptneri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 832, 110)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) >germaini : Symbol(argurus.germaini, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 893, 16)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 833, 42)) @@ -10621,7 +10621,7 @@ module petrophilus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 833, 42)) bairdii(): lavali.beisa { var x: lavali.beisa; () => { var y = this; }; return x; } ->bairdii : Symbol(bairdii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 833, 100)) +>bairdii : Symbol(sodyi.bairdii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 833, 100)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) >beisa : Symbol(lavali.beisa, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 268, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 834, 37)) @@ -10650,7 +10650,7 @@ module caurinus { >marcanoi : Symbol(howi.marcanoi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 682, 13)) montana(): argurus.oreas { var x: argurus.oreas; () => { var y = this; }; return x; } ->montana : Symbol(montana, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 838, 122)) +>montana : Symbol(megaphyllus.montana, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 838, 122)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) >oreas : Symbol(argurus.oreas, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 625, 16)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 839, 38)) @@ -10661,7 +10661,7 @@ module caurinus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 839, 38)) amatus(): lutreolus.schlegeli { var x: lutreolus.schlegeli; () => { var y = this; }; return x; } ->amatus : Symbol(amatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 839, 93)) +>amatus : Symbol(megaphyllus.amatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 839, 93)) >lutreolus : Symbol(lutreolus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 355, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 719, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 855, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 872, 1)) >schlegeli : Symbol(lutreolus.schlegeli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 356, 18)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 840, 43)) @@ -10672,7 +10672,7 @@ module caurinus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 840, 43)) bucculentus(): gabriellae.echinatus { var x: gabriellae.echinatus; () => { var y = this; }; return x; } ->bucculentus : Symbol(bucculentus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 840, 104)) +>bucculentus : Symbol(megaphyllus.bucculentus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 840, 104)) >gabriellae : Symbol(gabriellae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 766, 1)) >echinatus : Symbol(gabriellae.echinatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 781, 5)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 841, 49)) @@ -10683,7 +10683,7 @@ module caurinus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 841, 49)) lepida(): rendalli.crenulata> { var x: rendalli.crenulata>; () => { var y = this; }; return x; } ->lepida : Symbol(lepida, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 841, 111)) +>lepida : Symbol(megaphyllus.lepida, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 841, 111)) >rendalli : Symbol(rendalli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 151, 1)) >crenulata : Symbol(rendalli.crenulata, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 180, 3)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) @@ -10710,7 +10710,7 @@ module caurinus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 842, 113)) graecus(): dogramacii.kaiseri { var x: dogramacii.kaiseri; () => { var y = this; }; return x; } ->graecus : Symbol(graecus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 842, 244)) +>graecus : Symbol(megaphyllus.graecus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 842, 244)) >dogramacii : Symbol(dogramacii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 314, 1)) >kaiseri : Symbol(dogramacii.kaiseri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 329, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 843, 43)) @@ -10721,7 +10721,7 @@ module caurinus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 843, 43)) forsteri(): petrophilus.minutilla { var x: petrophilus.minutilla; () => { var y = this; }; return x; } ->forsteri : Symbol(forsteri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 843, 103)) +>forsteri : Symbol(megaphyllus.forsteri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 843, 103)) >petrophilus : Symbol(petrophilus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 715, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 823, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 998, 1)) >minutilla : Symbol(petrophilus.minutilla, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 716, 20)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 844, 47)) @@ -10732,7 +10732,7 @@ module caurinus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 844, 47)) perotensis(): samarensis.cahirinus { var x: samarensis.cahirinus; () => { var y = this; }; return x; } ->perotensis : Symbol(perotensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 844, 110)) +>perotensis : Symbol(megaphyllus.perotensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 844, 110)) >samarensis : Symbol(samarensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 531, 1)) >cahirinus : Symbol(samarensis.cahirinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 569, 5)) >minutus : Symbol(minutus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 433, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 492, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 848, 1)) @@ -10751,7 +10751,7 @@ module caurinus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 845, 88)) cirrhosus(): quasiater.carolinensis { var x: quasiater.carolinensis; () => { var y = this; }; return x; } ->cirrhosus : Symbol(cirrhosus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 845, 190)) +>cirrhosus : Symbol(megaphyllus.cirrhosus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 845, 190)) >quasiater : Symbol(quasiater, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 236, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 422, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 813, 1)) >carolinensis : Symbol(quasiater.carolinensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 423, 18)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 846, 49)) @@ -10769,7 +10769,7 @@ module minutus { >portoricensis : Symbol(portoricensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 849, 16)) relictus(): quasiater.carolinensis { var x: quasiater.carolinensis; () => { var y = this; }; return x; } ->relictus : Symbol(relictus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 850, 32)) +>relictus : Symbol(portoricensis.relictus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 850, 32)) >quasiater : Symbol(quasiater, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 236, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 422, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 813, 1)) >carolinensis : Symbol(quasiater.carolinensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 423, 18)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 851, 48)) @@ -10780,7 +10780,7 @@ module minutus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 851, 48)) aequatorianus(): gabriellae.klossii { var x: gabriellae.klossii; () => { var y = this; }; return x; } ->aequatorianus : Symbol(aequatorianus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 851, 112)) +>aequatorianus : Symbol(portoricensis.aequatorianus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 851, 112)) >gabriellae : Symbol(gabriellae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 766, 1)) >klossii : Symbol(gabriellae.klossii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 767, 19)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) @@ -10799,7 +10799,7 @@ module minutus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 852, 89)) rhinogradoides(): samarensis.cahirinus { var x: samarensis.cahirinus; () => { var y = this; }; return x; } ->rhinogradoides : Symbol(rhinogradoides, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 852, 189)) +>rhinogradoides : Symbol(portoricensis.rhinogradoides, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 852, 189)) >samarensis : Symbol(samarensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 531, 1)) >cahirinus : Symbol(samarensis.cahirinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 569, 5)) >quasiater : Symbol(quasiater, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 236, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 422, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 813, 1)) @@ -10825,7 +10825,7 @@ module lutreolus { >foina : Symbol(foina, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 856, 18)) tarfayensis(): lutreolus.punicus { var x: lutreolus.punicus; () => { var y = this; }; return x; } ->tarfayensis : Symbol(tarfayensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 857, 24)) +>tarfayensis : Symbol(foina.tarfayensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 857, 24)) >lutreolus : Symbol(lutreolus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 355, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 719, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 855, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 872, 1)) >punicus : Symbol(punicus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 720, 18)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 858, 46)) @@ -10836,7 +10836,7 @@ module lutreolus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 858, 46)) Promethium(): samarensis.pelurus { var x: samarensis.pelurus; () => { var y = this; }; return x; } ->Promethium : Symbol(Promethium, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 858, 105)) +>Promethium : Symbol(foina.Promethium, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 858, 105)) >samarensis : Symbol(samarensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 531, 1)) >pelurus : Symbol(samarensis.pelurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 532, 19)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) @@ -10855,7 +10855,7 @@ module lutreolus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 859, 83)) salinae(): gabriellae.klossii { var x: gabriellae.klossii; () => { var y = this; }; return x; } ->salinae : Symbol(salinae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 859, 180)) +>salinae : Symbol(foina.salinae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 859, 180)) >gabriellae : Symbol(gabriellae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 766, 1)) >klossii : Symbol(gabriellae.klossii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 767, 19)) >macrorhinos : Symbol(macrorhinos, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 461, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 497, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 736, 1)) @@ -10874,7 +10874,7 @@ module lutreolus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 860, 92)) kerri(): howi.coludo { var x: howi.coludo; () => { var y = this; }; return x; } ->kerri : Symbol(kerri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 860, 201)) +>kerri : Symbol(foina.kerri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 860, 201)) >howi : Symbol(howi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 466, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 681, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 886, 1)) >coludo : Symbol(howi.coludo, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 887, 13)) >quasiater : Symbol(quasiater, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 236, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 422, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 813, 1)) @@ -10893,7 +10893,7 @@ module lutreolus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 861, 81)) scotti(): quasiater.wattsi { var x: quasiater.wattsi; () => { var y = this; }; return x; } ->scotti : Symbol(scotti, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 861, 181)) +>scotti : Symbol(foina.scotti, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 861, 181)) >quasiater : Symbol(quasiater, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 236, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 422, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 813, 1)) >wattsi : Symbol(quasiater.wattsi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 814, 18)) >macrorhinos : Symbol(macrorhinos, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 461, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 497, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 736, 1)) @@ -10912,7 +10912,7 @@ module lutreolus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 862, 88)) camerunensis(): julianae.gerbillus { var x: julianae.gerbillus; () => { var y = this; }; return x; } ->camerunensis : Symbol(camerunensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 862, 194)) +>camerunensis : Symbol(foina.camerunensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 862, 194)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) >gerbillus : Symbol(julianae.gerbillus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 67, 3)) >imperfecta : Symbol(imperfecta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 785, 1)) @@ -10931,7 +10931,7 @@ module lutreolus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 863, 91)) affinis(): argurus.germaini { var x: argurus.germaini; () => { var y = this; }; return x; } ->affinis : Symbol(affinis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 863, 194)) +>affinis : Symbol(foina.affinis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 863, 194)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) >germaini : Symbol(argurus.germaini, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 893, 16)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 864, 41)) @@ -10942,7 +10942,7 @@ module lutreolus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 864, 41)) siebersi(): trivirgatus.lotor> { var x: trivirgatus.lotor>; () => { var y = this; }; return x; } ->siebersi : Symbol(siebersi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 864, 99)) +>siebersi : Symbol(foina.siebersi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 864, 99)) >trivirgatus : Symbol(trivirgatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 186, 1)) >lotor : Symbol(trivirgatus.lotor, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 206, 3)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) @@ -10969,7 +10969,7 @@ module lutreolus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 865, 105)) maquassiensis(): trivirgatus.oconnelli { var x: trivirgatus.oconnelli; () => { var y = this; }; return x; } ->maquassiensis : Symbol(maquassiensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 865, 226)) +>maquassiensis : Symbol(foina.maquassiensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 865, 226)) >trivirgatus : Symbol(trivirgatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 186, 1)) >oconnelli : Symbol(trivirgatus.oconnelli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 219, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 866, 52)) @@ -10980,7 +10980,7 @@ module lutreolus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 866, 52)) layardi(): julianae.albidens { var x: julianae.albidens; () => { var y = this; }; return x; } ->layardi : Symbol(layardi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 866, 115)) +>layardi : Symbol(foina.layardi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 866, 115)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) >albidens : Symbol(julianae.albidens, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 34, 3)) >howi : Symbol(howi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 466, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 681, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 886, 1)) @@ -10999,7 +10999,7 @@ module lutreolus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 867, 79)) bishopi(): dogramacii.aurata { var x: dogramacii.aurata; () => { var y = this; }; return x; } ->bishopi : Symbol(bishopi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 867, 175)) +>bishopi : Symbol(foina.bishopi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 867, 175)) >dogramacii : Symbol(dogramacii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 314, 1)) >aurata : Symbol(dogramacii.aurata, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 344, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 868, 42)) @@ -11010,7 +11010,7 @@ module lutreolus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 868, 42)) apodemoides(): caurinus.psilurus { var x: caurinus.psilurus; () => { var y = this; }; return x; } ->apodemoides : Symbol(apodemoides, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 868, 101)) +>apodemoides : Symbol(foina.apodemoides, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 868, 101)) >caurinus : Symbol(caurinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 449, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 836, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 976, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1007, 1)) >psilurus : Symbol(caurinus.psilurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1008, 17)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 869, 46)) @@ -11021,7 +11021,7 @@ module lutreolus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 869, 46)) argentiventer(): trivirgatus.mixtus { var x: trivirgatus.mixtus; () => { var y = this; }; return x; } ->argentiventer : Symbol(argentiventer, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 869, 105)) +>argentiventer : Symbol(foina.argentiventer, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 869, 105)) >trivirgatus : Symbol(trivirgatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 186, 1)) >mixtus : Symbol(trivirgatus.mixtus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 197, 3)) >gabriellae : Symbol(gabriellae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 766, 1)) @@ -11064,7 +11064,7 @@ module lutreolus { >melanops : Symbol(dammermani.melanops, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 914, 19)) antinorii(): petrophilus.sodyi { var x: petrophilus.sodyi; () => { var y = this; }; return x; } ->antinorii : Symbol(antinorii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 874, 164)) +>antinorii : Symbol(cor.antinorii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 874, 164)) >petrophilus : Symbol(petrophilus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 715, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 823, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 998, 1)) >sodyi : Symbol(petrophilus.sodyi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 824, 20)) >quasiater : Symbol(quasiater, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 236, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 422, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 813, 1)) @@ -11083,7 +11083,7 @@ module lutreolus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 875, 86)) voi(): caurinus.johorensis { var x: caurinus.johorensis; () => { var y = this; }; return x; } ->voi : Symbol(voi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 875, 187)) +>voi : Symbol(cor.voi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 875, 187)) >caurinus : Symbol(caurinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 449, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 836, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 976, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1007, 1)) >johorensis : Symbol(caurinus.johorensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 977, 17)) >dammermani : Symbol(dammermani, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 591, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 913, 1)) @@ -11102,7 +11102,7 @@ module lutreolus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 876, 86)) mussoi(): quasiater.carolinensis { var x: quasiater.carolinensis; () => { var y = this; }; return x; } ->mussoi : Symbol(mussoi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 876, 193)) +>mussoi : Symbol(cor.mussoi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 876, 193)) >quasiater : Symbol(quasiater, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 236, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 422, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 813, 1)) >carolinensis : Symbol(quasiater.carolinensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 423, 18)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 877, 46)) @@ -11113,7 +11113,7 @@ module lutreolus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 877, 46)) truncatus(): trivirgatus.lotor { var x: trivirgatus.lotor; () => { var y = this; }; return x; } ->truncatus : Symbol(truncatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 877, 110)) +>truncatus : Symbol(cor.truncatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 877, 110)) >trivirgatus : Symbol(trivirgatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 186, 1)) >lotor : Symbol(trivirgatus.lotor, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 206, 3)) >sagitta : Symbol(sagitta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 487, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 577, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 675, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 746, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 898, 1)) @@ -11132,7 +11132,7 @@ module lutreolus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 878, 81)) achates(): provocax.melanoleuca { var x: provocax.melanoleuca; () => { var y = this; }; return x; } ->achates : Symbol(achates, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 878, 177)) +>achates : Symbol(cor.achates, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 878, 177)) >provocax : Symbol(provocax, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 669, 1)) >melanoleuca : Symbol(provocax.melanoleuca, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 670, 17)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 879, 45)) @@ -11143,7 +11143,7 @@ module lutreolus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 879, 45)) praedatrix(): howi.angulatus { var x: howi.angulatus; () => { var y = this; }; return x; } ->praedatrix : Symbol(praedatrix, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 879, 107)) +>praedatrix : Symbol(cor.praedatrix, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 879, 107)) >howi : Symbol(howi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 466, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 681, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 886, 1)) >angulatus : Symbol(howi.angulatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 467, 13)) >dogramacii : Symbol(dogramacii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 314, 1)) @@ -11162,7 +11162,7 @@ module lutreolus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 880, 80)) mzabi(): quasiater.wattsi, minutus.inez> { var x: quasiater.wattsi, minutus.inez>; () => { var y = this; }; return x; } ->mzabi : Symbol(mzabi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 880, 174)) +>mzabi : Symbol(cor.mzabi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 880, 174)) >quasiater : Symbol(quasiater, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 236, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 422, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 813, 1)) >wattsi : Symbol(quasiater.wattsi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 814, 18)) >trivirgatus : Symbol(trivirgatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 186, 1)) @@ -11197,7 +11197,7 @@ module lutreolus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 881, 155)) xanthinus(): nigra.gracilis, howi.marcanoi> { var x: nigra.gracilis, howi.marcanoi>; () => { var y = this; }; return x; } ->xanthinus : Symbol(xanthinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 881, 329)) +>xanthinus : Symbol(cor.xanthinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 881, 329)) >nigra : Symbol(nigra, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 388, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 475, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 514, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 762, 1)) >gracilis : Symbol(nigra.gracilis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 515, 14)) >panamensis : Symbol(panamensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 501, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 986, 1)) @@ -11224,7 +11224,7 @@ module lutreolus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 882, 119)) tapoatafa(): caurinus.megaphyllus { var x: caurinus.megaphyllus; () => { var y = this; }; return x; } ->tapoatafa : Symbol(tapoatafa, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 882, 253)) +>tapoatafa : Symbol(cor.tapoatafa, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 882, 253)) >caurinus : Symbol(caurinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 449, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 836, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 976, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1007, 1)) >megaphyllus : Symbol(caurinus.megaphyllus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 837, 17)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 883, 47)) @@ -11235,7 +11235,7 @@ module lutreolus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 883, 47)) castroviejoi(): Lanthanum.jugularis { var x: Lanthanum.jugularis; () => { var y = this; }; return x; } ->castroviejoi : Symbol(castroviejoi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 883, 109)) +>castroviejoi : Symbol(cor.castroviejoi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 883, 109)) >Lanthanum : Symbol(Lanthanum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 106, 1)) >jugularis : Symbol(Lanthanum.jugularis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 134, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 884, 49)) @@ -11255,7 +11255,7 @@ module howi { >T1 : Symbol(T1, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 888, 27)) bernhardi(): lutreolus.punicus { var x: lutreolus.punicus; () => { var y = this; }; return x; } ->bernhardi : Symbol(bernhardi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 888, 33)) +>bernhardi : Symbol(coludo.bernhardi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 888, 33)) >lutreolus : Symbol(lutreolus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 355, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 719, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 855, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 872, 1)) >punicus : Symbol(lutreolus.punicus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 720, 18)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 889, 44)) @@ -11266,7 +11266,7 @@ module howi { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 889, 44)) isseli(): argurus.germaini { var x: argurus.germaini; () => { var y = this; }; return x; } ->isseli : Symbol(isseli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 889, 103)) +>isseli : Symbol(coludo.isseli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 889, 103)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) >germaini : Symbol(argurus.germaini, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 893, 16)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 890, 40)) @@ -11287,7 +11287,7 @@ module argurus { >amicus : Symbol(gabriellae.amicus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 769, 5)) sharpei(): lavali.wilsoni { var x: lavali.wilsoni; () => { var y = this; }; return x; } ->sharpei : Symbol(sharpei, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 894, 53)) +>sharpei : Symbol(germaini.sharpei, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 894, 53)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) >wilsoni : Symbol(lavali.wilsoni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 253, 15)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 895, 39)) @@ -11298,7 +11298,7 @@ module argurus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 895, 39)) palmarum(): macrorhinos.marmosurus { var x: macrorhinos.marmosurus; () => { var y = this; }; return x; } ->palmarum : Symbol(palmarum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 895, 95)) +>palmarum : Symbol(germaini.palmarum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 895, 95)) >macrorhinos : Symbol(macrorhinos, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 461, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 497, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 736, 1)) >marmosurus : Symbol(macrorhinos.marmosurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 462, 20)) >Lanthanum : Symbol(Lanthanum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 106, 1)) @@ -11324,7 +11324,7 @@ module sagitta { >stolzmanni : Symbol(stolzmanni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 899, 16)) riparius(): nigra.dolichurus { var x: nigra.dolichurus; () => { var y = this; }; return x; } ->riparius : Symbol(riparius, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 900, 29)) +>riparius : Symbol(stolzmanni.riparius, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 900, 29)) >nigra : Symbol(nigra, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 388, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 475, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 514, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 762, 1)) >dolichurus : Symbol(nigra.dolichurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 389, 14)) >dogramacii : Symbol(dogramacii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 314, 1)) @@ -11343,7 +11343,7 @@ module sagitta { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 901, 83)) dhofarensis(): lutreolus.foina { var x: lutreolus.foina; () => { var y = this; }; return x; } ->dhofarensis : Symbol(dhofarensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 901, 182)) +>dhofarensis : Symbol(stolzmanni.dhofarensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 901, 182)) >lutreolus : Symbol(lutreolus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 355, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 719, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 855, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 872, 1)) >foina : Symbol(lutreolus.foina, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 856, 18)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 902, 44)) @@ -11354,7 +11354,7 @@ module sagitta { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 902, 44)) tricolor(): argurus.germaini { var x: argurus.germaini; () => { var y = this; }; return x; } ->tricolor : Symbol(tricolor, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 902, 101)) +>tricolor : Symbol(stolzmanni.tricolor, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 902, 101)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) >germaini : Symbol(argurus.germaini, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 893, 16)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 903, 42)) @@ -11365,7 +11365,7 @@ module sagitta { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 903, 42)) gardneri(): lavali.xanthognathus { var x: lavali.xanthognathus; () => { var y = this; }; return x; } ->gardneri : Symbol(gardneri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 903, 100)) +>gardneri : Symbol(stolzmanni.gardneri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 903, 100)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) >xanthognathus : Symbol(lavali.xanthognathus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 285, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 904, 46)) @@ -11376,7 +11376,7 @@ module sagitta { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 904, 46)) walleri(): rendalli.moojeni, gabriellae.echinatus> { var x: rendalli.moojeni, gabriellae.echinatus>; () => { var y = this; }; return x; } ->walleri : Symbol(walleri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 904, 108)) +>walleri : Symbol(stolzmanni.walleri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 904, 108)) >rendalli : Symbol(rendalli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 151, 1)) >moojeni : Symbol(rendalli.moojeni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 168, 3)) >chrysaeolus : Symbol(chrysaeolus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 602, 1)) @@ -11403,7 +11403,7 @@ module sagitta { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 905, 132)) talpoides(): gabriellae.echinatus { var x: gabriellae.echinatus; () => { var y = this; }; return x; } ->talpoides : Symbol(talpoides, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 905, 281)) +>talpoides : Symbol(stolzmanni.talpoides, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 905, 281)) >gabriellae : Symbol(gabriellae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 766, 1)) >echinatus : Symbol(gabriellae.echinatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 781, 5)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 906, 47)) @@ -11414,7 +11414,7 @@ module sagitta { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 906, 47)) pallipes(): dammermani.melanops { var x: dammermani.melanops; () => { var y = this; }; return x; } ->pallipes : Symbol(pallipes, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 906, 109)) +>pallipes : Symbol(stolzmanni.pallipes, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 906, 109)) >dammermani : Symbol(dammermani, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 591, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 913, 1)) >melanops : Symbol(dammermani.melanops, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 914, 19)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 907, 45)) @@ -11425,7 +11425,7 @@ module sagitta { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 907, 45)) lagurus(): lavali.beisa { var x: lavali.beisa; () => { var y = this; }; return x; } ->lagurus : Symbol(lagurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 907, 106)) +>lagurus : Symbol(stolzmanni.lagurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 907, 106)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) >beisa : Symbol(lavali.beisa, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 268, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 908, 37)) @@ -11436,7 +11436,7 @@ module sagitta { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 908, 37)) hipposideros(): julianae.albidens { var x: julianae.albidens; () => { var y = this; }; return x; } ->hipposideros : Symbol(hipposideros, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 908, 91)) +>hipposideros : Symbol(stolzmanni.hipposideros, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 908, 91)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) >albidens : Symbol(julianae.albidens, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 34, 3)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) @@ -11455,7 +11455,7 @@ module sagitta { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 909, 87)) griselda(): caurinus.psilurus { var x: caurinus.psilurus; () => { var y = this; }; return x; } ->griselda : Symbol(griselda, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 909, 186)) +>griselda : Symbol(stolzmanni.griselda, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 909, 186)) >caurinus : Symbol(caurinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 449, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 836, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 976, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1007, 1)) >psilurus : Symbol(caurinus.psilurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1008, 17)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 910, 43)) @@ -11466,7 +11466,7 @@ module sagitta { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 910, 43)) florium(): rendalli.zuluensis { var x: rendalli.zuluensis; () => { var y = this; }; return x; } ->florium : Symbol(florium, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 910, 102)) +>florium : Symbol(stolzmanni.florium, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 910, 102)) >rendalli : Symbol(rendalli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 151, 1)) >zuluensis : Symbol(rendalli.zuluensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 152, 17)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 911, 43)) @@ -11491,7 +11491,7 @@ module dammermani { >melanops : Symbol(melanops, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 914, 19)) blarina(): dammermani.melanops { var x: dammermani.melanops; () => { var y = this; }; return x; } ->blarina : Symbol(blarina, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 915, 89)) +>blarina : Symbol(melanops.blarina, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 915, 89)) >dammermani : Symbol(dammermani, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 591, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 913, 1)) >melanops : Symbol(melanops, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 914, 19)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 916, 44)) @@ -11502,7 +11502,7 @@ module dammermani { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 916, 44)) harwoodi(): rionegrensis.veraecrucis, lavali.wilsoni> { var x: rionegrensis.veraecrucis, lavali.wilsoni>; () => { var y = this; }; return x; } ->harwoodi : Symbol(harwoodi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 916, 105)) +>harwoodi : Symbol(melanops.harwoodi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 916, 105)) >rionegrensis : Symbol(rionegrensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 0, 0)) >veraecrucis : Symbol(rionegrensis.veraecrucis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 7, 3)) >nigra : Symbol(nigra, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 388, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 475, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 514, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 762, 1)) @@ -11529,7 +11529,7 @@ module dammermani { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 917, 122)) ashaninka(): julianae.nudicaudus { var x: julianae.nudicaudus; () => { var y = this; }; return x; } ->ashaninka : Symbol(ashaninka, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 917, 260)) +>ashaninka : Symbol(melanops.ashaninka, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 917, 260)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) >nudicaudus : Symbol(julianae.nudicaudus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 18, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 918, 46)) @@ -11540,7 +11540,7 @@ module dammermani { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 918, 46)) wiedii(): julianae.steerii { var x: julianae.steerii; () => { var y = this; }; return x; } ->wiedii : Symbol(wiedii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 918, 107)) +>wiedii : Symbol(melanops.wiedii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 918, 107)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) >steerii : Symbol(julianae.steerii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 16, 17)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 919, 40)) @@ -11551,7 +11551,7 @@ module dammermani { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 919, 40)) godmani(): imperfecta.subspinosus { var x: imperfecta.subspinosus; () => { var y = this; }; return x; } ->godmani : Symbol(godmani, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 919, 98)) +>godmani : Symbol(melanops.godmani, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 919, 98)) >imperfecta : Symbol(imperfecta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 785, 1)) >subspinosus : Symbol(imperfecta.subspinosus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 794, 5)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 920, 47)) @@ -11562,7 +11562,7 @@ module dammermani { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 920, 47)) condorensis(): imperfecta.ciliolabrum { var x: imperfecta.ciliolabrum; () => { var y = this; }; return x; } ->condorensis : Symbol(condorensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 920, 111)) +>condorensis : Symbol(melanops.condorensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 920, 111)) >imperfecta : Symbol(imperfecta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 785, 1)) >ciliolabrum : Symbol(imperfecta.ciliolabrum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 807, 5)) >samarensis : Symbol(samarensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 531, 1)) @@ -11581,7 +11581,7 @@ module dammermani { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 921, 91)) xerophila(): panglima.abidi { var x: panglima.abidi; () => { var y = this; }; return x; } ->xerophila : Symbol(xerophila, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 921, 195)) +>xerophila : Symbol(melanops.xerophila, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 921, 195)) >panglima : Symbol(panglima, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 400, 1)) >abidi : Symbol(panglima.abidi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 414, 5)) >minutus : Symbol(minutus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 433, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 492, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 848, 1)) @@ -11600,7 +11600,7 @@ module dammermani { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 922, 81)) laminatus(): panglima.fundatus>> { var x: panglima.fundatus>>; () => { var y = this; }; return x; } ->laminatus : Symbol(laminatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 922, 177)) +>laminatus : Symbol(melanops.laminatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 922, 177)) >panglima : Symbol(panglima, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 400, 1)) >fundatus : Symbol(panglima.fundatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 409, 5)) >howi : Symbol(howi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 466, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 681, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 886, 1)) @@ -11635,7 +11635,7 @@ module dammermani { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 923, 164)) archeri(): howi.marcanoi { var x: howi.marcanoi; () => { var y = this; }; return x; } ->archeri : Symbol(archeri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 923, 343)) +>archeri : Symbol(melanops.archeri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 923, 343)) >howi : Symbol(howi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 466, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 681, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 886, 1)) >marcanoi : Symbol(howi.marcanoi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 682, 13)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 924, 38)) @@ -11646,7 +11646,7 @@ module dammermani { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 924, 38)) hidalgo(): minutus.inez { var x: minutus.inez; () => { var y = this; }; return x; } ->hidalgo : Symbol(hidalgo, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 924, 93)) +>hidalgo : Symbol(melanops.hidalgo, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 924, 93)) >minutus : Symbol(minutus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 433, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 492, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 848, 1)) >inez : Symbol(minutus.inez, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 493, 16)) >trivirgatus : Symbol(trivirgatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 186, 1)) @@ -11665,7 +11665,7 @@ module dammermani { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 925, 81)) unicolor(): lutreolus.schlegeli { var x: lutreolus.schlegeli; () => { var y = this; }; return x; } ->unicolor : Symbol(unicolor, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 925, 179)) +>unicolor : Symbol(melanops.unicolor, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 925, 179)) >lutreolus : Symbol(lutreolus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 355, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 719, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 855, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 872, 1)) >schlegeli : Symbol(lutreolus.schlegeli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 356, 18)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 926, 45)) @@ -11676,7 +11676,7 @@ module dammermani { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 926, 45)) philippii(): nigra.gracilis { var x: nigra.gracilis; () => { var y = this; }; return x; } ->philippii : Symbol(philippii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 926, 106)) +>philippii : Symbol(melanops.philippii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 926, 106)) >nigra : Symbol(nigra, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 388, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 475, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 514, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 762, 1)) >gracilis : Symbol(nigra.gracilis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 515, 14)) >sagitta : Symbol(sagitta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 487, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 577, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 675, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 746, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 898, 1)) @@ -11695,7 +11695,7 @@ module dammermani { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 927, 78)) bocagei(): julianae.albidens { var x: julianae.albidens; () => { var y = this; }; return x; } ->bocagei : Symbol(bocagei, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 927, 171)) +>bocagei : Symbol(melanops.bocagei, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 927, 171)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) >albidens : Symbol(julianae.albidens, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 34, 3)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) @@ -11724,7 +11724,7 @@ module argurus { >uralensis : Symbol(patas.uralensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 653, 14)) aitkeni(): trivirgatus.mixtus, panglima.amphibius> { var x: trivirgatus.mixtus, panglima.amphibius>; () => { var y = this; }; return x; } ->aitkeni : Symbol(aitkeni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 932, 53)) +>aitkeni : Symbol(peninsulae.aitkeni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 932, 53)) >trivirgatus : Symbol(trivirgatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 186, 1)) >mixtus : Symbol(trivirgatus.mixtus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 197, 3)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) @@ -11759,7 +11759,7 @@ module argurus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 933, 162)) novaeangliae(): lavali.xanthognathus { var x: lavali.xanthognathus; () => { var y = this; }; return x; } ->novaeangliae : Symbol(novaeangliae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 933, 341)) +>novaeangliae : Symbol(peninsulae.novaeangliae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 933, 341)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) >xanthognathus : Symbol(lavali.xanthognathus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 285, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 934, 50)) @@ -11770,7 +11770,7 @@ module argurus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 934, 50)) olallae(): julianae.sumatrana { var x: julianae.sumatrana; () => { var y = this; }; return x; } ->olallae : Symbol(olallae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 934, 112)) +>olallae : Symbol(peninsulae.olallae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 934, 112)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) >sumatrana : Symbol(julianae.sumatrana, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 58, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 935, 43)) @@ -11781,7 +11781,7 @@ module argurus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 935, 43)) anselli(): dogramacii.aurata { var x: dogramacii.aurata; () => { var y = this; }; return x; } ->anselli : Symbol(anselli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 935, 103)) +>anselli : Symbol(peninsulae.anselli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 935, 103)) >dogramacii : Symbol(dogramacii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 314, 1)) >aurata : Symbol(dogramacii.aurata, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 344, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 936, 42)) @@ -11792,7 +11792,7 @@ module argurus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 936, 42)) timminsi(): macrorhinos.konganensis { var x: macrorhinos.konganensis; () => { var y = this; }; return x; } ->timminsi : Symbol(timminsi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 936, 101)) +>timminsi : Symbol(peninsulae.timminsi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 936, 101)) >macrorhinos : Symbol(macrorhinos, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 461, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 497, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 736, 1)) >konganensis : Symbol(macrorhinos.konganensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 498, 20)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 937, 49)) @@ -11803,7 +11803,7 @@ module argurus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 937, 49)) sordidus(): rendalli.moojeni { var x: rendalli.moojeni; () => { var y = this; }; return x; } ->sordidus : Symbol(sordidus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 937, 114)) +>sordidus : Symbol(peninsulae.sordidus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 937, 114)) >rendalli : Symbol(rendalli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 151, 1)) >moojeni : Symbol(rendalli.moojeni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 168, 3)) >macrorhinos : Symbol(macrorhinos, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 461, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 497, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 736, 1)) @@ -11822,7 +11822,7 @@ module argurus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 938, 89)) telfordi(): trivirgatus.oconnelli { var x: trivirgatus.oconnelli; () => { var y = this; }; return x; } ->telfordi : Symbol(telfordi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 938, 194)) +>telfordi : Symbol(peninsulae.telfordi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 938, 194)) >trivirgatus : Symbol(trivirgatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 186, 1)) >oconnelli : Symbol(trivirgatus.oconnelli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 219, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 939, 47)) @@ -11833,7 +11833,7 @@ module argurus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 939, 47)) cavernarum(): minutus.inez { var x: minutus.inez; () => { var y = this; }; return x; } ->cavernarum : Symbol(cavernarum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 939, 110)) +>cavernarum : Symbol(peninsulae.cavernarum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 939, 110)) >minutus : Symbol(minutus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 433, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 492, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 848, 1)) >inez : Symbol(minutus.inez, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 493, 16)) >gabriellae : Symbol(gabriellae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 766, 1)) @@ -11861,7 +11861,7 @@ module argurus { >T1 : Symbol(T1, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 944, 30)) gravis(): nigra.caucasica, dogramacii.kaiseri> { var x: nigra.caucasica, dogramacii.kaiseri>; () => { var y = this; }; return x; } ->gravis : Symbol(gravis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 944, 36)) +>gravis : Symbol(netscheri.gravis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 944, 36)) >nigra : Symbol(nigra, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 388, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 475, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 514, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 762, 1)) >caucasica : Symbol(nigra.caucasica, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 763, 14)) >rendalli : Symbol(rendalli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 151, 1)) @@ -11888,7 +11888,7 @@ module argurus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 945, 117)) ruschii(): imperfecta.lasiurus> { var x: imperfecta.lasiurus>; () => { var y = this; }; return x; } ->ruschii : Symbol(ruschii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 945, 252)) +>ruschii : Symbol(netscheri.ruschii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 945, 252)) >imperfecta : Symbol(imperfecta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 785, 1)) >lasiurus : Symbol(imperfecta.lasiurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 786, 19)) >howi : Symbol(howi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 466, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 681, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 886, 1)) @@ -11915,7 +11915,7 @@ module argurus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 946, 127)) tricuspidatus(): lavali.wilsoni { var x: lavali.wilsoni; () => { var y = this; }; return x; } ->tricuspidatus : Symbol(tricuspidatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 946, 271)) +>tricuspidatus : Symbol(netscheri.tricuspidatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 946, 271)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) >wilsoni : Symbol(lavali.wilsoni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 253, 15)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 947, 45)) @@ -11926,7 +11926,7 @@ module argurus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 947, 45)) fernandezi(): dammermani.siberu, panglima.abidi> { var x: dammermani.siberu, panglima.abidi>; () => { var y = this; }; return x; } ->fernandezi : Symbol(fernandezi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 947, 101)) +>fernandezi : Symbol(netscheri.fernandezi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 947, 101)) >dammermani : Symbol(dammermani, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 591, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 913, 1)) >siberu : Symbol(dammermani.siberu, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 592, 19)) >nigra : Symbol(nigra, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 388, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 475, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 514, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 762, 1)) @@ -11961,7 +11961,7 @@ module argurus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 948, 153)) colletti(): samarensis.pallidus { var x: samarensis.pallidus; () => { var y = this; }; return x; } ->colletti : Symbol(colletti, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 948, 320)) +>colletti : Symbol(netscheri.colletti, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 948, 320)) >samarensis : Symbol(samarensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 531, 1)) >pallidus : Symbol(samarensis.pallidus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 563, 5)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 949, 45)) @@ -11972,7 +11972,7 @@ module argurus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 949, 45)) microbullatus(): lutreolus.schlegeli { var x: lutreolus.schlegeli; () => { var y = this; }; return x; } ->microbullatus : Symbol(microbullatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 949, 106)) +>microbullatus : Symbol(netscheri.microbullatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 949, 106)) >lutreolus : Symbol(lutreolus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 355, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 719, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 855, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 872, 1)) >schlegeli : Symbol(lutreolus.schlegeli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 356, 18)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 950, 50)) @@ -11983,7 +11983,7 @@ module argurus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 950, 50)) eburneae(): chrysaeolus.sarasinorum { var x: chrysaeolus.sarasinorum; () => { var y = this; }; return x; } ->eburneae : Symbol(eburneae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 950, 111)) +>eburneae : Symbol(netscheri.eburneae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 950, 111)) >chrysaeolus : Symbol(chrysaeolus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 602, 1)) >sarasinorum : Symbol(chrysaeolus.sarasinorum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 603, 20)) >macrorhinos : Symbol(macrorhinos, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 461, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 497, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 736, 1)) @@ -12002,7 +12002,7 @@ module argurus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 951, 95)) tatei(): argurus.pygmaea> { var x: argurus.pygmaea>; () => { var y = this; }; return x; } ->tatei : Symbol(tatei, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 951, 206)) +>tatei : Symbol(netscheri.tatei, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 951, 206)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) >pygmaea : Symbol(pygmaea, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 596, 16)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) @@ -12029,7 +12029,7 @@ module argurus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 952, 121)) millardi(): sagitta.walkeri { var x: sagitta.walkeri; () => { var y = this; }; return x; } ->millardi : Symbol(millardi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 952, 261)) +>millardi : Symbol(netscheri.millardi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 952, 261)) >sagitta : Symbol(sagitta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 487, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 577, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 675, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 746, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 898, 1)) >walkeri : Symbol(sagitta.walkeri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 488, 16)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 953, 41)) @@ -12040,7 +12040,7 @@ module argurus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 953, 41)) pruinosus(): trivirgatus.falconeri { var x: trivirgatus.falconeri; () => { var y = this; }; return x; } ->pruinosus : Symbol(pruinosus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 953, 98)) +>pruinosus : Symbol(netscheri.pruinosus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 953, 98)) >trivirgatus : Symbol(trivirgatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 186, 1)) >falconeri : Symbol(trivirgatus.falconeri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 210, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 954, 48)) @@ -12051,7 +12051,7 @@ module argurus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 954, 48)) delator(): argurus.netscheri { var x: argurus.netscheri; () => { var y = this; }; return x; } ->delator : Symbol(delator, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 954, 111)) +>delator : Symbol(netscheri.delator, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 954, 111)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) >netscheri : Symbol(netscheri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 943, 16)) >dogramacii : Symbol(dogramacii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 314, 1)) @@ -12070,7 +12070,7 @@ module argurus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 955, 79)) nyikae(): trivirgatus.tumidifrons, petrophilus.minutilla>, julianae.acariensis> { var x: trivirgatus.tumidifrons, petrophilus.minutilla>, julianae.acariensis>; () => { var y = this; }; return x; } ->nyikae : Symbol(nyikae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 955, 175)) +>nyikae : Symbol(netscheri.nyikae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 955, 175)) >trivirgatus : Symbol(trivirgatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 186, 1)) >tumidifrons : Symbol(trivirgatus.tumidifrons, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 187, 20)) >howi : Symbol(howi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 466, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 681, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 886, 1)) @@ -12105,7 +12105,7 @@ module argurus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 956, 167)) ruemmleri(): panglima.amphibius, gabriellae.echinatus>, dogramacii.aurata>, imperfecta.ciliolabrum> { var x: panglima.amphibius, gabriellae.echinatus>, dogramacii.aurata>, imperfecta.ciliolabrum>; () => { var y = this; }; return x; } ->ruemmleri : Symbol(ruemmleri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 956, 352)) +>ruemmleri : Symbol(netscheri.ruemmleri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 956, 352)) >panglima : Symbol(panglima, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 400, 1)) >amphibius : Symbol(panglima.amphibius, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 401, 17)) >minutus : Symbol(minutus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 433, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 492, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 848, 1)) @@ -12172,7 +12172,7 @@ module ruatanica { >amicus : Symbol(gabriellae.amicus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 769, 5)) clara(): panglima.amphibius, argurus.dauricus> { var x: panglima.amphibius, argurus.dauricus>; () => { var y = this; }; return x; } ->clara : Symbol(clara, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 961, 102)) +>clara : Symbol(Praseodymium.clara, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 961, 102)) >panglima : Symbol(panglima, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 400, 1)) >amphibius : Symbol(panglima.amphibius, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 401, 17)) >imperfecta : Symbol(imperfecta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 785, 1)) @@ -12207,7 +12207,7 @@ module ruatanica { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 962, 168)) spectabilis(): petrophilus.sodyi { var x: petrophilus.sodyi; () => { var y = this; }; return x; } ->spectabilis : Symbol(spectabilis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 962, 355)) +>spectabilis : Symbol(Praseodymium.spectabilis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 962, 355)) >petrophilus : Symbol(petrophilus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 715, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 823, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 998, 1)) >sodyi : Symbol(petrophilus.sodyi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 824, 20)) >rionegrensis : Symbol(rionegrensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 0, 0)) @@ -12226,7 +12226,7 @@ module ruatanica { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 963, 95)) kamensis(): trivirgatus.lotor, lavali.lepturus> { var x: trivirgatus.lotor, lavali.lepturus>; () => { var y = this; }; return x; } ->kamensis : Symbol(kamensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 963, 203)) +>kamensis : Symbol(Praseodymium.kamensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 963, 203)) >trivirgatus : Symbol(trivirgatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 186, 1)) >lotor : Symbol(trivirgatus.lotor, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 206, 3)) >panamensis : Symbol(panamensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 501, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 986, 1)) @@ -12253,7 +12253,7 @@ module ruatanica { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 964, 123)) ruddi(): lutreolus.foina { var x: lutreolus.foina; () => { var y = this; }; return x; } ->ruddi : Symbol(ruddi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 964, 262)) +>ruddi : Symbol(Praseodymium.ruddi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 964, 262)) >lutreolus : Symbol(lutreolus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 355, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 719, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 855, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 872, 1)) >foina : Symbol(lutreolus.foina, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 856, 18)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 965, 38)) @@ -12264,7 +12264,7 @@ module ruatanica { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 965, 38)) bartelsii(): julianae.sumatrana { var x: julianae.sumatrana; () => { var y = this; }; return x; } ->bartelsii : Symbol(bartelsii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 965, 95)) +>bartelsii : Symbol(Praseodymium.bartelsii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 965, 95)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) >sumatrana : Symbol(julianae.sumatrana, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 58, 3)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 966, 45)) @@ -12275,7 +12275,7 @@ module ruatanica { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 966, 45)) yerbabuenae(): dammermani.siberu, imperfecta.ciliolabrum> { var x: dammermani.siberu, imperfecta.ciliolabrum>; () => { var y = this; }; return x; } ->yerbabuenae : Symbol(yerbabuenae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 966, 105)) +>yerbabuenae : Symbol(Praseodymium.yerbabuenae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 966, 105)) >dammermani : Symbol(dammermani, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 591, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 913, 1)) >siberu : Symbol(dammermani.siberu, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 592, 19)) >imperfecta : Symbol(imperfecta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 785, 1)) @@ -12310,7 +12310,7 @@ module ruatanica { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 967, 173)) davidi(): trivirgatus.mixtus { var x: trivirgatus.mixtus; () => { var y = this; }; return x; } ->davidi : Symbol(davidi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 967, 359)) +>davidi : Symbol(Praseodymium.davidi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 967, 359)) >trivirgatus : Symbol(trivirgatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 186, 1)) >mixtus : Symbol(trivirgatus.mixtus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 197, 3)) >provocax : Symbol(provocax, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 669, 1)) @@ -12329,7 +12329,7 @@ module ruatanica { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 968, 84)) pilirostris(): argurus.wetmorei>, sagitta.leptoceros>>, macrorhinos.konganensis> { var x: argurus.wetmorei>, sagitta.leptoceros>>, macrorhinos.konganensis>; () => { var y = this; }; return x; } ->pilirostris : Symbol(pilirostris, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 968, 186)) +>pilirostris : Symbol(Praseodymium.pilirostris, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 968, 186)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) >wetmorei : Symbol(argurus.wetmorei, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 614, 16)) >imperfecta : Symbol(imperfecta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 785, 1)) @@ -12388,7 +12388,7 @@ module ruatanica { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 969, 298)) catherinae(): imperfecta.lasiurus, petrophilus.sodyi> { var x: imperfecta.lasiurus, petrophilus.sodyi>; () => { var y = this; }; return x; } ->catherinae : Symbol(catherinae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 969, 609)) +>catherinae : Symbol(Praseodymium.catherinae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 969, 609)) >imperfecta : Symbol(imperfecta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 785, 1)) >lasiurus : Symbol(imperfecta.lasiurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 786, 19)) >Lanthanum : Symbol(Lanthanum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 106, 1)) @@ -12423,7 +12423,7 @@ module ruatanica { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 970, 169)) frontata(): argurus.oreas { var x: argurus.oreas; () => { var y = this; }; return x; } ->frontata : Symbol(frontata, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 970, 352)) +>frontata : Symbol(Praseodymium.frontata, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 970, 352)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) >oreas : Symbol(argurus.oreas, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 625, 16)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 971, 39)) @@ -12434,7 +12434,7 @@ module ruatanica { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 971, 39)) Terbium(): caurinus.mahaganus { var x: caurinus.mahaganus; () => { var y = this; }; return x; } ->Terbium : Symbol(Terbium, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 971, 94)) +>Terbium : Symbol(Praseodymium.Terbium, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 971, 94)) >caurinus : Symbol(caurinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 449, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 836, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 976, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1007, 1)) >mahaganus : Symbol(caurinus.mahaganus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 450, 17)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) @@ -12453,7 +12453,7 @@ module ruatanica { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 972, 85)) thomensis(): minutus.inez> { var x: minutus.inez>; () => { var y = this; }; return x; } ->thomensis : Symbol(thomensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 972, 187)) +>thomensis : Symbol(Praseodymium.thomensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 972, 187)) >minutus : Symbol(minutus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 433, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 492, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 848, 1)) >inez : Symbol(minutus.inez, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 493, 16)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) @@ -12480,7 +12480,7 @@ module ruatanica { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 973, 113)) soricinus(): quasiater.carolinensis { var x: quasiater.carolinensis; () => { var y = this; }; return x; } ->soricinus : Symbol(soricinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 973, 241)) +>soricinus : Symbol(Praseodymium.soricinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 973, 241)) >quasiater : Symbol(quasiater, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 236, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 422, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 813, 1)) >carolinensis : Symbol(quasiater.carolinensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 423, 18)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 974, 49)) @@ -12503,7 +12503,7 @@ module caurinus { >punicus : Symbol(lutreolus.punicus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 720, 18)) maini(): ruatanica.Praseodymium { var x: ruatanica.Praseodymium; () => { var y = this; }; return x; } ->maini : Symbol(maini, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 978, 63)) +>maini : Symbol(johorensis.maini, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 978, 63)) >ruatanica : Symbol(ruatanica, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 100, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 244, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 959, 1)) >Praseodymium : Symbol(ruatanica.Praseodymium, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 960, 18)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) @@ -12529,7 +12529,7 @@ module argurus { >luctuosa : Symbol(luctuosa, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 982, 16)) loriae(): rendalli.moojeni, gabriellae.echinatus>, sagitta.stolzmanni>, lutreolus.punicus> { var x: rendalli.moojeni, gabriellae.echinatus>, sagitta.stolzmanni>, lutreolus.punicus>; () => { var y = this; }; return x; } ->loriae : Symbol(loriae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 983, 27)) +>loriae : Symbol(luctuosa.loriae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 983, 27)) >rendalli : Symbol(rendalli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 151, 1)) >moojeni : Symbol(rendalli.moojeni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 168, 3)) >macrorhinos : Symbol(macrorhinos, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 461, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 497, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 736, 1)) @@ -12581,7 +12581,7 @@ module panamensis { >T1 : Symbol(T1, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 988, 30)) duthieae(): caurinus.mahaganus, dogramacii.aurata> { var x: caurinus.mahaganus, dogramacii.aurata>; () => { var y = this; }; return x; } ->duthieae : Symbol(duthieae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 988, 36)) +>duthieae : Symbol(setulosus.duthieae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 988, 36)) >caurinus : Symbol(caurinus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 449, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 836, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 976, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1007, 1)) >mahaganus : Symbol(caurinus.mahaganus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 450, 17)) >howi : Symbol(howi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 466, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 681, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 886, 1)) @@ -12608,7 +12608,7 @@ module panamensis { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 989, 106)) guereza(): howi.coludo { var x: howi.coludo; () => { var y = this; }; return x; } ->guereza : Symbol(guereza, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 989, 228)) +>guereza : Symbol(setulosus.guereza, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 989, 228)) >howi : Symbol(howi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 466, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 681, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 886, 1)) >coludo : Symbol(howi.coludo, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 887, 13)) >sagitta : Symbol(sagitta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 487, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 577, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 675, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 746, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 898, 1)) @@ -12627,7 +12627,7 @@ module panamensis { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 990, 80)) buselaphus(): daubentonii.nesiotes, dogramacii.koepckeae>, trivirgatus.mixtus> { var x: daubentonii.nesiotes, dogramacii.koepckeae>, trivirgatus.mixtus>; () => { var y = this; }; return x; } ->buselaphus : Symbol(buselaphus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 990, 177)) +>buselaphus : Symbol(setulosus.buselaphus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 990, 177)) >daubentonii : Symbol(daubentonii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 471, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 586, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 636, 1)) >nesiotes : Symbol(daubentonii.nesiotes, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 472, 20)) >trivirgatus : Symbol(trivirgatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 186, 1)) @@ -12670,7 +12670,7 @@ module panamensis { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 991, 199)) nuttalli(): sagitta.cinereus, chrysaeolus.sarasinorum> { var x: sagitta.cinereus, chrysaeolus.sarasinorum>; () => { var y = this; }; return x; } ->nuttalli : Symbol(nuttalli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 991, 412)) +>nuttalli : Symbol(setulosus.nuttalli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 991, 412)) >sagitta : Symbol(sagitta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 487, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 577, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 675, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 746, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 898, 1)) >cinereus : Symbol(sagitta.cinereus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 747, 16)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) @@ -12705,7 +12705,7 @@ module panamensis { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 992, 169)) pelii(): rendalli.crenulata, julianae.steerii> { var x: rendalli.crenulata, julianae.steerii>; () => { var y = this; }; return x; } ->pelii : Symbol(pelii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 992, 354)) +>pelii : Symbol(setulosus.pelii, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 992, 354)) >rendalli : Symbol(rendalli, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 151, 1)) >crenulata : Symbol(rendalli.crenulata, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 180, 3)) >Lanthanum : Symbol(Lanthanum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 106, 1)) @@ -12732,7 +12732,7 @@ module panamensis { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 993, 124)) tunneyi(): sagitta.stolzmanni { var x: sagitta.stolzmanni; () => { var y = this; }; return x; } ->tunneyi : Symbol(tunneyi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 993, 267)) +>tunneyi : Symbol(setulosus.tunneyi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 993, 267)) >sagitta : Symbol(sagitta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 487, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 577, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 675, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 746, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 898, 1)) >stolzmanni : Symbol(sagitta.stolzmanni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 899, 16)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 994, 43)) @@ -12743,7 +12743,7 @@ module panamensis { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 994, 43)) lamula(): patas.uralensis { var x: patas.uralensis; () => { var y = this; }; return x; } ->lamula : Symbol(lamula, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 994, 103)) +>lamula : Symbol(setulosus.lamula, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 994, 103)) >patas : Symbol(patas, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 652, 1)) >uralensis : Symbol(patas.uralensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 653, 14)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 995, 39)) @@ -12754,7 +12754,7 @@ module panamensis { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 995, 39)) vampyrus(): julianae.oralis { var x: julianae.oralis; () => { var y = this; }; return x; } ->vampyrus : Symbol(vampyrus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 995, 96)) +>vampyrus : Symbol(setulosus.vampyrus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 995, 96)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) >oralis : Symbol(julianae.oralis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 43, 3)) >lutreolus : Symbol(lutreolus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 355, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 719, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 855, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 872, 1)) @@ -12782,7 +12782,7 @@ module petrophilus { >T1 : Symbol(T1, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1000, 28)) palmeri(): panglima.amphibius>, trivirgatus.mixtus, panglima.amphibius>> { var x: panglima.amphibius>, trivirgatus.mixtus, panglima.amphibius>>; () => { var y = this; }; return x; } ->palmeri : Symbol(palmeri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1000, 34)) +>palmeri : Symbol(rosalia.palmeri, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1000, 34)) >panglima : Symbol(panglima, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 400, 1)) >amphibius : Symbol(panglima.amphibius, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 401, 17)) >howi : Symbol(howi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 466, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 681, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 886, 1)) @@ -12841,7 +12841,7 @@ module petrophilus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1001, 282)) baeops(): Lanthanum.nitidus { var x: Lanthanum.nitidus; () => { var y = this; }; return x; } ->baeops : Symbol(baeops, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1001, 581)) +>baeops : Symbol(rosalia.baeops, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1001, 581)) >Lanthanum : Symbol(Lanthanum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 106, 1)) >nitidus : Symbol(Lanthanum.nitidus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 112, 3)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) @@ -12860,7 +12860,7 @@ module petrophilus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1002, 75)) ozensis(): imperfecta.lasiurus, lutreolus.foina> { var x: imperfecta.lasiurus, lutreolus.foina>; () => { var y = this; }; return x; } ->ozensis : Symbol(ozensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1002, 168)) +>ozensis : Symbol(rosalia.ozensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1002, 168)) >imperfecta : Symbol(imperfecta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 785, 1)) >lasiurus : Symbol(imperfecta.lasiurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 786, 19)) >panglima : Symbol(panglima, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 400, 1)) @@ -12887,7 +12887,7 @@ module petrophilus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1003, 116)) creaghi(): argurus.luctuosa { var x: argurus.luctuosa; () => { var y = this; }; return x; } ->creaghi : Symbol(creaghi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1003, 249)) +>creaghi : Symbol(rosalia.creaghi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1003, 249)) >argurus : Symbol(argurus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 373, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 595, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 613, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 624, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 699, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 892, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 930, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 942, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 981, 1)) >luctuosa : Symbol(argurus.luctuosa, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 982, 16)) >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1004, 41)) @@ -12898,7 +12898,7 @@ module petrophilus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1004, 41)) montivaga(): panamensis.setulosus> { var x: panamensis.setulosus>; () => { var y = this; }; return x; } ->montivaga : Symbol(montivaga, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1004, 99)) +>montivaga : Symbol(rosalia.montivaga, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1004, 99)) >panamensis : Symbol(panamensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 501, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 986, 1)) >setulosus : Symbol(panamensis.setulosus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 987, 19)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) @@ -12935,7 +12935,7 @@ module caurinus { >punicus : Symbol(lutreolus.punicus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 720, 18)) socialis(): panglima.amphibius { var x: panglima.amphibius; () => { var y = this; }; return x; } ->socialis : Symbol(socialis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1009, 53)) +>socialis : Symbol(psilurus.socialis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1009, 53)) >panglima : Symbol(panglima, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 400, 1)) >amphibius : Symbol(panglima.amphibius, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 401, 17)) >trivirgatus : Symbol(trivirgatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 186, 1)) @@ -12954,7 +12954,7 @@ module caurinus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1010, 86)) lundi(): petrophilus.sodyi { var x: petrophilus.sodyi; () => { var y = this; }; return x; } ->lundi : Symbol(lundi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1010, 188)) +>lundi : Symbol(psilurus.lundi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1010, 188)) >petrophilus : Symbol(petrophilus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 715, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 823, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 998, 1)) >sodyi : Symbol(petrophilus.sodyi, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 824, 20)) >trivirgatus : Symbol(trivirgatus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 186, 1)) @@ -12973,7 +12973,7 @@ module caurinus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1011, 85)) araeum(): imperfecta.ciliolabrum { var x: imperfecta.ciliolabrum; () => { var y = this; }; return x; } ->araeum : Symbol(araeum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1011, 189)) +>araeum : Symbol(psilurus.araeum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1011, 189)) >imperfecta : Symbol(imperfecta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 785, 1)) >ciliolabrum : Symbol(imperfecta.ciliolabrum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 807, 5)) >quasiater : Symbol(quasiater, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 236, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 422, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 813, 1)) @@ -12992,7 +12992,7 @@ module caurinus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1012, 84)) calamianensis(): julianae.gerbillus { var x: julianae.gerbillus; () => { var y = this; }; return x; } ->calamianensis : Symbol(calamianensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1012, 186)) +>calamianensis : Symbol(psilurus.calamianensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1012, 186)) >julianae : Symbol(julianae, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 15, 1)) >gerbillus : Symbol(julianae.gerbillus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 67, 3)) >lavali : Symbol(lavali, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 252, 1)) @@ -13011,7 +13011,7 @@ module caurinus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1013, 90)) petersoni(): panamensis.setulosus { var x: panamensis.setulosus; () => { var y = this; }; return x; } ->petersoni : Symbol(petersoni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1013, 191)) +>petersoni : Symbol(psilurus.petersoni, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1013, 191)) >panamensis : Symbol(panamensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 501, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 986, 1)) >setulosus : Symbol(panamensis.setulosus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 987, 19)) >sagitta : Symbol(sagitta, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 487, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 577, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 675, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 746, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 898, 1)) @@ -13030,7 +13030,7 @@ module caurinus { >x : Symbol(x, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1014, 87)) nitela(): panamensis.linulus { var x: panamensis.linulus; () => { var y = this; }; return x; } ->nitela : Symbol(nitela, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1014, 189)) +>nitela : Symbol(psilurus.nitela, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 1014, 189)) >panamensis : Symbol(panamensis, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 501, 1), Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 986, 1)) >linulus : Symbol(panamensis.linulus, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 502, 19)) >Lanthanum : Symbol(Lanthanum, Decl(resolvingClassDeclarationWhenInBaseTypeResolution.ts, 106, 1)) diff --git a/tests/baselines/reference/restArgAssignmentCompat.errors.txt b/tests/baselines/reference/restArgAssignmentCompat.errors.txt index c17d28cb28b..5be7e3f8d67 100644 --- a/tests/baselines/reference/restArgAssignmentCompat.errors.txt +++ b/tests/baselines/reference/restArgAssignmentCompat.errors.txt @@ -1,6 +1,6 @@ tests/cases/compiler/restArgAssignmentCompat.ts(7,1): error TS2322: Type '(...x: number[]) => void' is not assignable to type '(x: number[], y: string) => void'. Types of parameters 'x' and 'x' are incompatible. - Type 'number' is not assignable to type 'number[]'. + Type 'number[]' is not assignable to type 'number'. ==== tests/cases/compiler/restArgAssignmentCompat.ts (1 errors) ==== @@ -14,6 +14,6 @@ tests/cases/compiler/restArgAssignmentCompat.ts(7,1): error TS2322: Type '(...x: ~ !!! error TS2322: Type '(...x: number[]) => void' is not assignable to type '(x: number[], y: string) => void'. !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'number' is not assignable to type 'number[]'. +!!! error TS2322: Type 'number[]' is not assignable to type 'number'. n([4], 'foo'); \ No newline at end of file diff --git a/tests/baselines/reference/restElementWithAssignmentPattern5.types b/tests/baselines/reference/restElementWithAssignmentPattern5.types index e3934c31197..c5cbc9ad206 100644 --- a/tests/baselines/reference/restElementWithAssignmentPattern5.types +++ b/tests/baselines/reference/restElementWithAssignmentPattern5.types @@ -7,7 +7,7 @@ var s: string, s2: string; >[...[s, s2]] = ["", ""] : string[] >[...[s, s2]] : string[] >...[s, s2] : string ->[s, s2] : string[] +>[s, s2] : [string, string] >s : string >s2 : string >["", ""] : string[] diff --git a/tests/baselines/reference/restParameterAssignmentCompatibility.symbols b/tests/baselines/reference/restParameterAssignmentCompatibility.symbols index dd5e7a8fa81..03209d8b1a4 100644 --- a/tests/baselines/reference/restParameterAssignmentCompatibility.symbols +++ b/tests/baselines/reference/restParameterAssignmentCompatibility.symbols @@ -3,7 +3,7 @@ class T { >T : Symbol(T, Decl(restParameterAssignmentCompatibility.ts, 0, 0)) m(...p3) { ->m : Symbol(m, Decl(restParameterAssignmentCompatibility.ts, 0, 9)) +>m : Symbol(T.m, Decl(restParameterAssignmentCompatibility.ts, 0, 9)) >p3 : Symbol(p3, Decl(restParameterAssignmentCompatibility.ts, 1, 6)) } @@ -13,7 +13,7 @@ class S { >S : Symbol(S, Decl(restParameterAssignmentCompatibility.ts, 4, 1)) m(p1, p2) { ->m : Symbol(m, Decl(restParameterAssignmentCompatibility.ts, 6, 9)) +>m : Symbol(S.m, Decl(restParameterAssignmentCompatibility.ts, 6, 9)) >p1 : Symbol(p1, Decl(restParameterAssignmentCompatibility.ts, 7, 6)) >p2 : Symbol(p2, Decl(restParameterAssignmentCompatibility.ts, 7, 9)) @@ -38,7 +38,7 @@ class T1 { >T1 : Symbol(T1, Decl(restParameterAssignmentCompatibility.ts, 16, 6)) m(p1?, p2?) { ->m : Symbol(m, Decl(restParameterAssignmentCompatibility.ts, 18, 10)) +>m : Symbol(T1.m, Decl(restParameterAssignmentCompatibility.ts, 18, 10)) >p1 : Symbol(p1, Decl(restParameterAssignmentCompatibility.ts, 19, 6)) >p2 : Symbol(p2, Decl(restParameterAssignmentCompatibility.ts, 19, 10)) diff --git a/tests/baselines/reference/returnStatements.symbols b/tests/baselines/reference/returnStatements.symbols index 7d8b6d69d82..af8aa2af7df 100644 --- a/tests/baselines/reference/returnStatements.symbols +++ b/tests/baselines/reference/returnStatements.symbols @@ -18,8 +18,8 @@ function fn5(): boolean { return true; } function fn6(): Date { return new Date(12); } >fn6 : Symbol(fn6, Decl(returnStatements.ts, 5, 40)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) function fn7(): any { return null; } >fn7 : Symbol(fn7, Decl(returnStatements.ts, 6, 45)) @@ -29,24 +29,24 @@ function fn8(): any { return; } // OK, eq. to 'return undefined' interface I { id: number } >I : Symbol(I, Decl(returnStatements.ts, 8, 31)) ->id : Symbol(id, Decl(returnStatements.ts, 10, 13)) +>id : Symbol(I.id, Decl(returnStatements.ts, 10, 13)) class C implements I { >C : Symbol(C, Decl(returnStatements.ts, 10, 26)) >I : Symbol(I, Decl(returnStatements.ts, 8, 31)) id: number; ->id : Symbol(id, Decl(returnStatements.ts, 11, 22)) +>id : Symbol(C.id, Decl(returnStatements.ts, 11, 22)) dispose() {} ->dispose : Symbol(dispose, Decl(returnStatements.ts, 12, 15)) +>dispose : Symbol(C.dispose, Decl(returnStatements.ts, 12, 15)) } class D extends C { >D : Symbol(D, Decl(returnStatements.ts, 14, 1)) >C : Symbol(C, Decl(returnStatements.ts, 10, 26)) name: string; ->name : Symbol(name, Decl(returnStatements.ts, 15, 19)) +>name : Symbol(D.name, Decl(returnStatements.ts, 15, 19)) } function fn10(): I { return { id: 12 }; } >fn10 : Symbol(fn10, Decl(returnStatements.ts, 17, 1)) diff --git a/tests/baselines/reference/returnTypeParameterWithModules.types b/tests/baselines/reference/returnTypeParameterWithModules.types index be09b8f46b0..584c962a170 100644 --- a/tests/baselines/reference/returnTypeParameterWithModules.types +++ b/tests/baselines/reference/returnTypeParameterWithModules.types @@ -13,13 +13,13 @@ module M1 { return Array.prototype.reduce.apply(ar, e ? [f, e] : [f]); >Array.prototype.reduce.apply(ar, e ? [f, e] : [f]) : any ->Array.prototype.reduce.apply : (thisArg: any, argArray?: any) => any +>Array.prototype.reduce.apply : (this: Function, thisArg: any, argArray?: any) => any >Array.prototype.reduce : { (callbackfn: (previousValue: any, currentValue: any, currentIndex: number, array: any[]) => any, initialValue?: any): any; (callbackfn: (previousValue: U, currentValue: any, currentIndex: number, array: any[]) => U, initialValue: U): U; } >Array.prototype : any[] >Array : ArrayConstructor >prototype : any[] >reduce : { (callbackfn: (previousValue: any, currentValue: any, currentIndex: number, array: any[]) => any, initialValue?: any): any; (callbackfn: (previousValue: U, currentValue: any, currentIndex: number, array: any[]) => U, initialValue: U): U; } ->apply : (thisArg: any, argArray?: any) => any +>apply : (this: Function, thisArg: any, argArray?: any) => any >ar : any >e ? [f, e] : [f] : any[] >e : any diff --git a/tests/baselines/reference/reversedRecusiveTypeInstantiation.symbols b/tests/baselines/reference/reversedRecusiveTypeInstantiation.symbols index ccb8b01ee78..2078d6c963d 100644 --- a/tests/baselines/reference/reversedRecusiveTypeInstantiation.symbols +++ b/tests/baselines/reference/reversedRecusiveTypeInstantiation.symbols @@ -5,15 +5,15 @@ interface A { >NumberArgPos2 : Symbol(NumberArgPos2, Decl(reversedRecusiveTypeInstantiation.ts, 0, 26)) xPos1 : StringArgPos1 ->xPos1 : Symbol(xPos1, Decl(reversedRecusiveTypeInstantiation.ts, 0, 43)) +>xPos1 : Symbol(A.xPos1, Decl(reversedRecusiveTypeInstantiation.ts, 0, 43)) >StringArgPos1 : Symbol(StringArgPos1, Decl(reversedRecusiveTypeInstantiation.ts, 0, 12)) yPos2 : NumberArgPos2 ->yPos2 : Symbol(yPos2, Decl(reversedRecusiveTypeInstantiation.ts, 1, 24)) +>yPos2 : Symbol(A.yPos2, Decl(reversedRecusiveTypeInstantiation.ts, 1, 24)) >NumberArgPos2 : Symbol(NumberArgPos2, Decl(reversedRecusiveTypeInstantiation.ts, 0, 26)) zPos2Pos1 : A ->zPos2Pos1 : Symbol(zPos2Pos1, Decl(reversedRecusiveTypeInstantiation.ts, 2, 24)) +>zPos2Pos1 : Symbol(A.zPos2Pos1, Decl(reversedRecusiveTypeInstantiation.ts, 2, 24)) >A : Symbol(A, Decl(reversedRecusiveTypeInstantiation.ts, 0, 0)) >NumberArgPos2 : Symbol(NumberArgPos2, Decl(reversedRecusiveTypeInstantiation.ts, 0, 26)) >StringArgPos1 : Symbol(StringArgPos1, Decl(reversedRecusiveTypeInstantiation.ts, 0, 12)) diff --git a/tests/baselines/reference/scopeResolutionIdentifiers.symbols b/tests/baselines/reference/scopeResolutionIdentifiers.symbols index 3ba780b8290..ecabe30534e 100644 --- a/tests/baselines/reference/scopeResolutionIdentifiers.symbols +++ b/tests/baselines/reference/scopeResolutionIdentifiers.symbols @@ -50,27 +50,27 @@ class C { >C : Symbol(C, Decl(scopeResolutionIdentifiers.ts, 19, 1)) s: Date; ->s : Symbol(s, Decl(scopeResolutionIdentifiers.ts, 21, 9)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>s : Symbol(C.s, Decl(scopeResolutionIdentifiers.ts, 21, 9)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) n = this.s; ->n : Symbol(n, Decl(scopeResolutionIdentifiers.ts, 22, 12)) ->this.s : Symbol(s, Decl(scopeResolutionIdentifiers.ts, 21, 9)) +>n : Symbol(C.n, Decl(scopeResolutionIdentifiers.ts, 22, 12)) +>this.s : Symbol(C.s, Decl(scopeResolutionIdentifiers.ts, 21, 9)) >this : Symbol(C, Decl(scopeResolutionIdentifiers.ts, 19, 1)) ->s : Symbol(s, Decl(scopeResolutionIdentifiers.ts, 21, 9)) +>s : Symbol(C.s, Decl(scopeResolutionIdentifiers.ts, 21, 9)) x() { ->x : Symbol(x, Decl(scopeResolutionIdentifiers.ts, 23, 15)) +>x : Symbol(C.x, Decl(scopeResolutionIdentifiers.ts, 23, 15)) var p = this.n; >p : Symbol(p, Decl(scopeResolutionIdentifiers.ts, 25, 11), Decl(scopeResolutionIdentifiers.ts, 26, 11)) ->this.n : Symbol(n, Decl(scopeResolutionIdentifiers.ts, 22, 12)) +>this.n : Symbol(C.n, Decl(scopeResolutionIdentifiers.ts, 22, 12)) >this : Symbol(C, Decl(scopeResolutionIdentifiers.ts, 19, 1)) ->n : Symbol(n, Decl(scopeResolutionIdentifiers.ts, 22, 12)) +>n : Symbol(C.n, Decl(scopeResolutionIdentifiers.ts, 22, 12)) var p: Date; >p : Symbol(p, Decl(scopeResolutionIdentifiers.ts, 25, 11), Decl(scopeResolutionIdentifiers.ts, 26, 11)) ->Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) } } diff --git a/tests/baselines/reference/selfInCallback.symbols b/tests/baselines/reference/selfInCallback.symbols index 805b7714012..97aabd3165f 100644 --- a/tests/baselines/reference/selfInCallback.symbols +++ b/tests/baselines/reference/selfInCallback.symbols @@ -3,22 +3,22 @@ class C { >C : Symbol(C, Decl(selfInCallback.ts, 0, 0)) public p1 = 0; ->p1 : Symbol(p1, Decl(selfInCallback.ts, 0, 9)) +>p1 : Symbol(C.p1, Decl(selfInCallback.ts, 0, 9)) public callback(cb:()=>void) {cb();} ->callback : Symbol(callback, Decl(selfInCallback.ts, 1, 15)) +>callback : Symbol(C.callback, Decl(selfInCallback.ts, 1, 15)) >cb : Symbol(cb, Decl(selfInCallback.ts, 2, 17)) >cb : Symbol(cb, Decl(selfInCallback.ts, 2, 17)) public doit() { ->doit : Symbol(doit, Decl(selfInCallback.ts, 2, 37)) +>doit : Symbol(C.doit, Decl(selfInCallback.ts, 2, 37)) this.callback(()=>{this.p1+1}); ->this.callback : Symbol(callback, Decl(selfInCallback.ts, 1, 15)) +>this.callback : Symbol(C.callback, Decl(selfInCallback.ts, 1, 15)) >this : Symbol(C, Decl(selfInCallback.ts, 0, 0)) ->callback : Symbol(callback, Decl(selfInCallback.ts, 1, 15)) ->this.p1 : Symbol(p1, Decl(selfInCallback.ts, 0, 9)) +>callback : Symbol(C.callback, Decl(selfInCallback.ts, 1, 15)) +>this.p1 : Symbol(C.p1, Decl(selfInCallback.ts, 0, 9)) >this : Symbol(C, Decl(selfInCallback.ts, 0, 0)) ->p1 : Symbol(p1, Decl(selfInCallback.ts, 0, 9)) +>p1 : Symbol(C.p1, Decl(selfInCallback.ts, 0, 9)) } } diff --git a/tests/baselines/reference/selfInLambdas.symbols b/tests/baselines/reference/selfInLambdas.symbols index 032de5e7767..edcc03b6bf6 100644 --- a/tests/baselines/reference/selfInLambdas.symbols +++ b/tests/baselines/reference/selfInLambdas.symbols @@ -3,10 +3,10 @@ interface MouseEvent { >MouseEvent : Symbol(MouseEvent, Decl(selfInLambdas.ts, 0, 0)) x: number; ->x : Symbol(x, Decl(selfInLambdas.ts, 0, 22)) +>x : Symbol(MouseEvent.x, Decl(selfInLambdas.ts, 0, 22)) y: number; ->y : Symbol(y, Decl(selfInLambdas.ts, 1, 14)) +>y : Symbol(MouseEvent.y, Decl(selfInLambdas.ts, 1, 14)) } declare var window: Window; @@ -17,7 +17,7 @@ interface Window { >Window : Symbol(Window, Decl(selfInLambdas.ts, 5, 27)) onmousemove: (ev: MouseEvent) => any; ->onmousemove : Symbol(onmousemove, Decl(selfInLambdas.ts, 6, 18)) +>onmousemove : Symbol(Window.onmousemove, Decl(selfInLambdas.ts, 6, 18)) >ev : Symbol(ev, Decl(selfInLambdas.ts, 7, 18)) >MouseEvent : Symbol(MouseEvent, Decl(selfInLambdas.ts, 0, 0)) @@ -52,28 +52,28 @@ class X { >X : Symbol(X, Decl(selfInLambdas.ts, 24, 1)) private value = "value"; ->value : Symbol(value, Decl(selfInLambdas.ts, 28, 9)) +>value : Symbol(X.value, Decl(selfInLambdas.ts, 28, 9)) public foo() { ->foo : Symbol(foo, Decl(selfInLambdas.ts, 29, 25)) +>foo : Symbol(X.foo, Decl(selfInLambdas.ts, 29, 25)) var outer= () => { >outer : Symbol(outer, Decl(selfInLambdas.ts, 32, 5)) var x = this.value; >x : Symbol(x, Decl(selfInLambdas.ts, 33, 15)) ->this.value : Symbol(value, Decl(selfInLambdas.ts, 28, 9)) +>this.value : Symbol(X.value, Decl(selfInLambdas.ts, 28, 9)) >this : Symbol(X, Decl(selfInLambdas.ts, 24, 1)) ->value : Symbol(value, Decl(selfInLambdas.ts, 28, 9)) +>value : Symbol(X.value, Decl(selfInLambdas.ts, 28, 9)) var inner = () => { >inner : Symbol(inner, Decl(selfInLambdas.ts, 34, 15)) var y = this.value; >y : Symbol(y, Decl(selfInLambdas.ts, 35, 19)) ->this.value : Symbol(value, Decl(selfInLambdas.ts, 28, 9)) +>this.value : Symbol(X.value, Decl(selfInLambdas.ts, 28, 9)) >this : Symbol(X, Decl(selfInLambdas.ts, 24, 1)) ->value : Symbol(value, Decl(selfInLambdas.ts, 28, 9)) +>value : Symbol(X.value, Decl(selfInLambdas.ts, 28, 9)) } inner(); diff --git a/tests/baselines/reference/shorthand-property-es5-es6.errors.txt b/tests/baselines/reference/shorthand-property-es5-es6.errors.txt new file mode 100644 index 00000000000..f491dfbaabe --- /dev/null +++ b/tests/baselines/reference/shorthand-property-es5-es6.errors.txt @@ -0,0 +1,13 @@ +error TS1204: Cannot compile modules into 'es2015' when targeting 'ES5' or lower. +tests/cases/compiler/test.ts(2,19): error TS2307: Cannot find module './foo'. + + +!!! error TS1204: Cannot compile modules into 'es2015' when targeting 'ES5' or lower. +==== tests/cases/compiler/test.ts (1 errors) ==== + + import {foo} from './foo'; + ~~~~~~~ +!!! error TS2307: Cannot find module './foo'. + const baz = 42; + const bar = { foo, baz }; + \ No newline at end of file diff --git a/tests/baselines/reference/shorthand-property-es5-es6.js b/tests/baselines/reference/shorthand-property-es5-es6.js new file mode 100644 index 00000000000..cbca92adb0c --- /dev/null +++ b/tests/baselines/reference/shorthand-property-es5-es6.js @@ -0,0 +1,14 @@ +//// [test.ts] + +import {foo} from './foo'; +const baz = 42; +const bar = { foo, baz }; + + +//// [test.js] +import { foo } from './foo'; +var baz = 42; +var bar = { foo: foo, baz: baz }; + + +//// [test.d.ts] diff --git a/tests/baselines/reference/shorthand-property-es6-amd.errors.txt b/tests/baselines/reference/shorthand-property-es6-amd.errors.txt new file mode 100644 index 00000000000..e54f73a4e61 --- /dev/null +++ b/tests/baselines/reference/shorthand-property-es6-amd.errors.txt @@ -0,0 +1,11 @@ +tests/cases/compiler/test.ts(2,19): error TS2307: Cannot find module './foo'. + + +==== tests/cases/compiler/test.ts (1 errors) ==== + + import {foo} from './foo'; + ~~~~~~~ +!!! error TS2307: Cannot find module './foo'. + const baz = 42; + const bar = { foo, baz }; + \ No newline at end of file diff --git a/tests/baselines/reference/shorthand-property-es6-amd.js b/tests/baselines/reference/shorthand-property-es6-amd.js new file mode 100644 index 00000000000..3cecc18b661 --- /dev/null +++ b/tests/baselines/reference/shorthand-property-es6-amd.js @@ -0,0 +1,16 @@ +//// [test.ts] + +import {foo} from './foo'; +const baz = 42; +const bar = { foo, baz }; + + +//// [test.js] +define(["require", "exports", './foo'], function (require, exports, foo_1) { + "use strict"; + const baz = 42; + const bar = { foo: foo_1.foo, baz }; +}); + + +//// [test.d.ts] diff --git a/tests/baselines/reference/shorthand-property-es6-es6.errors.txt b/tests/baselines/reference/shorthand-property-es6-es6.errors.txt new file mode 100644 index 00000000000..e54f73a4e61 --- /dev/null +++ b/tests/baselines/reference/shorthand-property-es6-es6.errors.txt @@ -0,0 +1,11 @@ +tests/cases/compiler/test.ts(2,19): error TS2307: Cannot find module './foo'. + + +==== tests/cases/compiler/test.ts (1 errors) ==== + + import {foo} from './foo'; + ~~~~~~~ +!!! error TS2307: Cannot find module './foo'. + const baz = 42; + const bar = { foo, baz }; + \ No newline at end of file diff --git a/tests/baselines/reference/shorthand-property-es6-es6.js b/tests/baselines/reference/shorthand-property-es6-es6.js new file mode 100644 index 00000000000..eff67c879cc --- /dev/null +++ b/tests/baselines/reference/shorthand-property-es6-es6.js @@ -0,0 +1,14 @@ +//// [test.ts] + +import {foo} from './foo'; +const baz = 42; +const bar = { foo, baz }; + + +//// [test.js] +import { foo } from './foo'; +const baz = 42; +const bar = { foo, baz }; + + +//// [test.d.ts] diff --git a/tests/baselines/reference/sigantureIsSubTypeIfTheyAreIdentical.symbols b/tests/baselines/reference/sigantureIsSubTypeIfTheyAreIdentical.symbols index e99f0076d39..9f8d22c1f6f 100644 --- a/tests/baselines/reference/sigantureIsSubTypeIfTheyAreIdentical.symbols +++ b/tests/baselines/reference/sigantureIsSubTypeIfTheyAreIdentical.symbols @@ -3,7 +3,7 @@ interface ICache { >ICache : Symbol(ICache, Decl(sigantureIsSubTypeIfTheyAreIdentical.ts, 0, 0)) get(key: string): T; ->get : Symbol(get, Decl(sigantureIsSubTypeIfTheyAreIdentical.ts, 0, 18)) +>get : Symbol(ICache.get, Decl(sigantureIsSubTypeIfTheyAreIdentical.ts, 0, 18)) >T : Symbol(T, Decl(sigantureIsSubTypeIfTheyAreIdentical.ts, 1, 8)) >key : Symbol(key, Decl(sigantureIsSubTypeIfTheyAreIdentical.ts, 1, 11)) >T : Symbol(T, Decl(sigantureIsSubTypeIfTheyAreIdentical.ts, 1, 8)) @@ -13,7 +13,7 @@ class CacheService implements ICache { // Should not error that property type of >ICache : Symbol(ICache, Decl(sigantureIsSubTypeIfTheyAreIdentical.ts, 0, 0)) get(key: string): T { ->get : Symbol(get, Decl(sigantureIsSubTypeIfTheyAreIdentical.ts, 3, 38)) +>get : Symbol(CacheService.get, Decl(sigantureIsSubTypeIfTheyAreIdentical.ts, 3, 38)) >T : Symbol(T, Decl(sigantureIsSubTypeIfTheyAreIdentical.ts, 4, 8)) >key : Symbol(key, Decl(sigantureIsSubTypeIfTheyAreIdentical.ts, 4, 11)) >T : Symbol(T, Decl(sigantureIsSubTypeIfTheyAreIdentical.ts, 4, 8)) diff --git a/tests/baselines/reference/singleLineCommentInConciseArrowFunctionES3.js b/tests/baselines/reference/singleLineCommentInConciseArrowFunctionES3.js new file mode 100644 index 00000000000..db4ab7950eb --- /dev/null +++ b/tests/baselines/reference/singleLineCommentInConciseArrowFunctionES3.js @@ -0,0 +1,14 @@ +//// [singleLineCommentInConciseArrowFunctionES3.ts] +function test() { + return () => + // some comments here; + 123; +} + +//// [singleLineCommentInConciseArrowFunctionES3.js] +function test() { + return function () { + // some comments here; + return 123; + }; +} diff --git a/tests/baselines/reference/singleLineCommentInConciseArrowFunctionES3.symbols b/tests/baselines/reference/singleLineCommentInConciseArrowFunctionES3.symbols new file mode 100644 index 00000000000..cb53d292885 --- /dev/null +++ b/tests/baselines/reference/singleLineCommentInConciseArrowFunctionES3.symbols @@ -0,0 +1,8 @@ +=== tests/cases/compiler/singleLineCommentInConciseArrowFunctionES3.ts === +function test() { +>test : Symbol(test, Decl(singleLineCommentInConciseArrowFunctionES3.ts, 0, 0)) + + return () => + // some comments here; + 123; +} diff --git a/tests/baselines/reference/singleLineCommentInConciseArrowFunctionES3.types b/tests/baselines/reference/singleLineCommentInConciseArrowFunctionES3.types new file mode 100644 index 00000000000..e8c449e7bb8 --- /dev/null +++ b/tests/baselines/reference/singleLineCommentInConciseArrowFunctionES3.types @@ -0,0 +1,11 @@ +=== tests/cases/compiler/singleLineCommentInConciseArrowFunctionES3.ts === +function test() { +>test : () => () => number + + return () => +>() => // some comments here; 123 : () => number + + // some comments here; + 123; +>123 : number +} diff --git a/tests/baselines/reference/sourceMap-Comments.symbols b/tests/baselines/reference/sourceMap-Comments.symbols index d7c1adabbb0..490042b4c89 100644 --- a/tests/baselines/reference/sourceMap-Comments.symbols +++ b/tests/baselines/reference/sourceMap-Comments.symbols @@ -7,7 +7,7 @@ module sas.tools { >Test : Symbol(Test, Decl(sourceMap-Comments.ts, 0, 18)) public doX(): void { ->doX : Symbol(doX, Decl(sourceMap-Comments.ts, 1, 23)) +>doX : Symbol(Test.doX, Decl(sourceMap-Comments.ts, 1, 23)) let f: number = 2; >f : Symbol(f, Decl(sourceMap-Comments.ts, 3, 15)) diff --git a/tests/baselines/reference/sourceMap-FileWithComments.symbols b/tests/baselines/reference/sourceMap-FileWithComments.symbols index 50993547428..e7b8c1c4b7c 100644 --- a/tests/baselines/reference/sourceMap-FileWithComments.symbols +++ b/tests/baselines/reference/sourceMap-FileWithComments.symbols @@ -5,7 +5,7 @@ interface IPoint { >IPoint : Symbol(IPoint, Decl(sourceMap-FileWithComments.ts, 0, 0)) getDist(): number; ->getDist : Symbol(getDist, Decl(sourceMap-FileWithComments.ts, 2, 18)) +>getDist : Symbol(IPoint.getDist, Decl(sourceMap-FileWithComments.ts, 2, 18)) } // Module @@ -19,27 +19,27 @@ module Shapes { // Constructor constructor(public x: number, public y: number) { } ->x : Symbol(x, Decl(sourceMap-FileWithComments.ts, 12, 20)) ->y : Symbol(y, Decl(sourceMap-FileWithComments.ts, 12, 37)) +>x : Symbol(Point.x, Decl(sourceMap-FileWithComments.ts, 12, 20)) +>y : Symbol(Point.y, Decl(sourceMap-FileWithComments.ts, 12, 37)) // Instance member getDist() { return Math.sqrt(this.x * this.x + this.y * this.y); } ->getDist : Symbol(getDist, Decl(sourceMap-FileWithComments.ts, 12, 59)) +>getDist : Symbol(Point.getDist, Decl(sourceMap-FileWithComments.ts, 12, 59)) >Math.sqrt : Symbol(Math.sqrt, Decl(lib.d.ts, --, --)) >Math : Symbol(Math, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >sqrt : Symbol(Math.sqrt, Decl(lib.d.ts, --, --)) ->this.x : Symbol(x, Decl(sourceMap-FileWithComments.ts, 12, 20)) +>this.x : Symbol(Point.x, Decl(sourceMap-FileWithComments.ts, 12, 20)) >this : Symbol(Point, Decl(sourceMap-FileWithComments.ts, 7, 15)) ->x : Symbol(x, Decl(sourceMap-FileWithComments.ts, 12, 20)) ->this.x : Symbol(x, Decl(sourceMap-FileWithComments.ts, 12, 20)) +>x : Symbol(Point.x, Decl(sourceMap-FileWithComments.ts, 12, 20)) +>this.x : Symbol(Point.x, Decl(sourceMap-FileWithComments.ts, 12, 20)) >this : Symbol(Point, Decl(sourceMap-FileWithComments.ts, 7, 15)) ->x : Symbol(x, Decl(sourceMap-FileWithComments.ts, 12, 20)) ->this.y : Symbol(y, Decl(sourceMap-FileWithComments.ts, 12, 37)) +>x : Symbol(Point.x, Decl(sourceMap-FileWithComments.ts, 12, 20)) +>this.y : Symbol(Point.y, Decl(sourceMap-FileWithComments.ts, 12, 37)) >this : Symbol(Point, Decl(sourceMap-FileWithComments.ts, 7, 15)) ->y : Symbol(y, Decl(sourceMap-FileWithComments.ts, 12, 37)) ->this.y : Symbol(y, Decl(sourceMap-FileWithComments.ts, 12, 37)) +>y : Symbol(Point.y, Decl(sourceMap-FileWithComments.ts, 12, 37)) +>this.y : Symbol(Point.y, Decl(sourceMap-FileWithComments.ts, 12, 37)) >this : Symbol(Point, Decl(sourceMap-FileWithComments.ts, 7, 15)) ->y : Symbol(y, Decl(sourceMap-FileWithComments.ts, 12, 37)) +>y : Symbol(Point.y, Decl(sourceMap-FileWithComments.ts, 12, 37)) // Static member static origin = new Point(0, 0); diff --git a/tests/baselines/reference/sourceMap-StringLiteralWithNewLine.symbols b/tests/baselines/reference/sourceMap-StringLiteralWithNewLine.symbols index 96d39301090..3b1d95afc00 100644 --- a/tests/baselines/reference/sourceMap-StringLiteralWithNewLine.symbols +++ b/tests/baselines/reference/sourceMap-StringLiteralWithNewLine.symbols @@ -7,7 +7,7 @@ interface Window { >Window : Symbol(Window, Decl(sourceMap-StringLiteralWithNewLine.ts, 2, 1)) document: Document; ->document : Symbol(document, Decl(sourceMap-StringLiteralWithNewLine.ts, 3, 18)) +>document : Symbol(Window.document, Decl(sourceMap-StringLiteralWithNewLine.ts, 3, 18)) >Document : Symbol(Document, Decl(sourceMap-StringLiteralWithNewLine.ts, 0, 0)) } declare var window: Window; diff --git a/tests/baselines/reference/sourceMapValidationClass.symbols b/tests/baselines/reference/sourceMapValidationClass.symbols index 28c2e1efe1a..1a5e244586f 100644 --- a/tests/baselines/reference/sourceMapValidationClass.symbols +++ b/tests/baselines/reference/sourceMapValidationClass.symbols @@ -3,47 +3,47 @@ class Greeter { >Greeter : Symbol(Greeter, Decl(sourceMapValidationClass.ts, 0, 0)) constructor(public greeting: string, ...b: string[]) { ->greeting : Symbol(greeting, Decl(sourceMapValidationClass.ts, 1, 16)) +>greeting : Symbol(Greeter.greeting, Decl(sourceMapValidationClass.ts, 1, 16)) >b : Symbol(b, Decl(sourceMapValidationClass.ts, 1, 40)) } greet() { ->greet : Symbol(greet, Decl(sourceMapValidationClass.ts, 2, 5)) +>greet : Symbol(Greeter.greet, Decl(sourceMapValidationClass.ts, 2, 5)) return "